commit 37e1490b5744690457c7d5179e5ea856bc9f83a9 Author: longfellowJian <779035789@qq.com> Date: Thu Mar 27 13:52:42 2025 +0800 提交: 初始化github code diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3e759b7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,330 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ +**/Properties/launchSettings.json + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..3a7e768 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 月夜 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..a755169 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# MsAnalyzeDemo +安捷伦气相色谱质谱数据解析测试。 + +目前对于.MS文件解析已经实现,色谱、质谱点等数据的提取。 diff --git a/data/DATA110109.MS b/data/DATA110109.MS new file mode 100644 index 0000000..94aee2e Binary files /dev/null and b/data/DATA110109.MS differ diff --git a/data/tic_front110119.csv b/data/tic_front110119.csv new file mode 100644 index 0000000..6bfcc19 --- /dev/null +++ b/data/tic_front110119.csv @@ -0,0 +1,7215 @@ +D:\DATA\HB\201911\2019110109.D 1 Nov 19 10:03 pm, +Start of data points, +3.0868,127 +3.09048,127 +3.09417,127 +3.09785,125 +3.10152,127 +3.1052,127 +3.10888,128 +3.11257,127 +3.11625,126 +3.11993,125 +3.12362,123 +3.1273,125 +3.13098,123 +3.13465,123 +3.13833,123 +3.14202,126 +3.1457,125 +3.14938,124 +3.15307,124 +3.15675,122 +3.16043,121 +3.16412,124 +3.16778,123 +3.17147,123 +3.17515,124 +3.17883,122 +3.18252,121 +3.1862,123 +3.18988,123 +3.19357,121 +3.19725,124 +3.20092,121 +3.2046,119 +3.20828,121 +3.21197,122 +3.21565,120 +3.21933,120 +3.22302,120 +3.2267,120 +3.23038,120 + ,117 +3.23773,123 +3.24142,117 +3.2451,120 +3.24878,120 +3.25247,118 +3.25615,121 +3.25983,121 +3.26352,121 +3.26718,120 +3.27087,122 +3.27455,119 +3.27823,119 +3.28192,121 +3.2856,122 +3.28928,119 +3.29297,120 +3.29665,120 +3.30032,119 +3.304,119 +3.30768,119 +3.31137,119 +3.31505,120 +3.31873,119 +3.32242,120 +3.3261,120 +3.32978,118 +3.33345,120 +3.33713,119 +3.34082,119 +3.3445,119 +3.34818,119 +3.35187,121 +3.35555,120 +3.35923,120 +3.36292,119 +3.36658,121 +3.37027,119 +3.37395,116 +3.37763,121 +3.38132,117 +3.385,120 +3.38868,119 +3.39237,117 +3.39605,117 +3.39972,117 +3.4034,119 +3.40708,119 +3.41077,119 +3.41445,119 +3.41813,121 +3.42182,120 +3.4255,121 +3.42918,119 +3.43287,120 +3.43653,122 +3.44022,120 +3.4439,122 +3.44758,119 +3.45127,122 +3.45495,118 +3.45863,121 +3.46232,121 +3.466,120 +3.46967,119 +3.47335,122 +3.47703,121 +3.48072,120 +3.4844,118 +3.48808,118 +3.49177,120 +3.49545,120 +3.49913,119 +3.5028,118 +3.50648,120 +3.51017,119 +3.51385,122 +3.51753,117 +3.52122,120 +3.5249,122 +3.52858,118 +3.53227,119 +3.53593,118 +3.53962,119 +3.5433,118 +3.54698,119 +3.55067,118 +3.55435,118 +3.55803,120 +3.56172,119 +3.5654,118 +3.56907,119 +3.57275,120 +3.57643,120 +3.58012,118 +3.5838,117 +3.58748,117 +3.59117,119 +3.59485,118 +3.59853,117 +3.6022,118 +3.60588,119 +3.60957,117 +3.61325,120 +3.61693,121 +3.62062,119 +3.6243,119 +3.62798,119 +3.63167,117 +3.63533,118 +3.63902,120 +3.6427,117 +3.64638,118 +3.65007,117 +3.65375,117 +3.65743,121 +3.66112,118 +3.6648,118 +3.66847,119 +3.67215,118 +3.67583,118 +3.67952,120 +3.6832,122 +3.68688,125 +3.69057,128 +3.69425,131 +3.69793,130 +3.7016,127 +3.70528,127 +3.70897,125 +3.71265,124 +3.71633,124 +3.72002,124 +3.7237,124 +3.72738,124 +3.73107,125 +3.73473,122 +3.73842,124 +3.7421,125 +3.74578,124 +3.74947,126 +3.75315,123 +3.75683,125 +3.76052,124 +3.7642,125 +3.76788,122 +3.77155,123 +3.77523,121 +3.77892,124 +3.7826,123 +3.78628,123 +3.78997,122 +3.79365,124 +3.79733,122 +3.80102,122 +3.80468,120 +3.80837,121 +3.81205,119 +3.81573,121 +3.81942,122 +3.8231,119 +3.82678,119 +3.83047,119 +3.83415,122 +3.83782,120 +3.8415,120 +3.84518,118 +3.84887,117 +3.85255,119 +3.85623,116 +3.85992,119 +3.8636,119 +3.86728,119 +3.87095,119 +3.87463,121 +3.87832,118 +3.882,119 +3.88568,118 +3.88937,119 +3.89305,118 +3.89673,119 +3.90042,115 +3.90408,117 +3.90777,118 +3.91145,118 +3.91513,115 +3.91882,118 +3.9225,117 +3.92618,120 +3.92987,118 +3.93355,118 +3.93722,116 +3.9409,119 +3.94458,117 +3.94827,118 +3.95195,117 +3.95563,117 +3.95932,117 +3.963,118 +3.96668,118 +3.97035,117 +3.97403,116 +3.97772,118 +3.9814,119 +3.98508,116 +3.98877,117 +3.99245,117 +3.99613,120 +3.99982,119 +4.00348,118 +4.00717,120 +4.01085,115 +4.01453,117 +4.01822,117 +4.0219,119 +4.02558,118 +4.02927,119 +4.03295,119 +4.03662,122 +4.0403,120 +4.04398,119 +4.04767,120 +4.05135,118 +4.05503,118 +4.05872,117 +4.0624,117 +4.06608,119 +4.06975,118 +4.07343,118 +4.07712,118 +4.0808,118 +4.08448,117 +4.08817,118 +4.09185,118 +4.09553,119 +4.09922,120 +4.1029,116 +4.10657,119 +4.11025,115 +4.11393,119 +4.11762,118 +4.1213,116 +4.12498,117 +4.12867,117 +4.13235,119 +4.13603,116 +4.1397,117 +4.14338,120 +4.14707,116 +4.15075,117 +4.15443,119 +4.15812,116 +4.1618,117 +4.16548,120 +4.16917,117 +4.17283,117 +4.17652,117 +4.1802,118 +4.18388,117 +4.18757,119 +4.19125,117 +4.19493,119 +4.19862,117 +4.2023,117 +4.20597,117 +4.20965,118 +4.21333,119 +4.21702,118 +4.2207,118 +4.22438,117 +4.22807,118 +4.23175,118 +4.23543,118 +4.2391,117 +4.24278,118 +4.24647,118 +4.25015,117 +4.25383,117 +4.25752,116 +4.2612,117 +4.26488,119 +4.26857,118 +4.27223,117 +4.27592,118 +4.2796,118 +4.28328,119 +4.28697,120 +4.29065,119 +4.29433,119 +4.29802,120 +4.3017,117 +4.30537,119 +4.30905,120 +4.31273,120 +4.31642,119 +4.3201,118 +4.32378,118 +4.32747,118 +4.33115,118 +4.33483,119 +4.3385,117 +4.34218,117 +4.34587,118 +4.34955,119 +4.35323,118 +4.35692,118 +4.3606,117 +4.36428,118 +4.36797,119 +4.37163,118 +4.37532,118 +4.379,118 +4.38268,117 +4.38637,116 +4.39005,119 +4.39373,117 +4.39742,119 +4.4011,118 +4.40477,118 +4.40845,118 +4.41213,116 +4.41582,118 +4.4195,119 +4.42318,119 +4.42687,118 +4.43055,118 +4.43423,119 +4.4379,118 +4.44158,118 +4.44527,119 +4.44895,117 +4.45263,119 +4.45632,118 +4.46,118 +4.46368,116 +4.46737,120 +4.47105,125 +4.47472,147 +4.4784,217 +4.48208,377 +4.48577,656 +4.48945,1013 +4.49313,1335 +4.49682,1486 +4.5005,1463 +4.50418,1381 +4.50785,1215 +4.51153,1072 +4.51522,960 +4.5189,844 +4.52258,763 +4.52627,701 +4.52995,655 +4.53363,585 +4.53732,536 +4.54098,509 +4.54467,475 +4.54835,449 +4.55203,422 +4.55572,400 +4.5594,386 +4.56308,375 +4.56677,360 +4.57045,340 +4.57412,328 +4.5778,309 +4.58148,290 +4.58517,275 +4.58885,254 +4.59253,238 +4.59622,216 +4.5999,197 +4.60358,180 +4.60725,167 +4.61093,155 +4.61462,151 +4.6183,146 +4.62198,144 +4.62567,139 +4.62935,135 +4.63303,137 +4.63672,136 +4.64038,131 +4.64407,132 +4.64775,132 +4.65143,131 +4.65512,129 +4.6588,130 +4.66248,128 +4.66617,128 +4.66985,127 +4.67352,128 +4.6772,126 +4.68088,128 +4.68457,124 +4.68825,126 +4.69193,125 +4.69562,124 +4.6993,125 +4.70298,125 +4.70665,125 +4.71033,125 +4.71402,125 +4.7177,126 +4.72138,125 +4.72507,124 +4.72875,125 +4.73243,122 +4.73612,122 +4.73978,123 +4.74347,124 +4.74715,124 +4.75083,124 +4.75452,122 +4.7582,121 +4.76188,123 +4.76557,125 +4.76925,125 +4.77292,122 +4.7766,123 +4.78028,121 +4.78397,121 +4.78765,122 +4.79133,120 +4.79502,120 +4.7987,121 +4.80238,123 +4.80607,120 +4.80973,121 +4.81342,120 +4.8171,122 +4.82078,122 +4.82447,121 +4.82815,120 +4.83183,120 +4.83552,120 +4.8392,121 +4.84287,120 +4.84655,120 +4.85023,119 +4.85392,120 +4.8576,120 +4.86128,119 +4.86497,120 +4.86865,119 +4.87233,122 +4.876,120 +4.87968,120 +4.88337,119 +4.88705,117 +4.89073,119 +4.89442,116 +4.8981,118 +4.90178,120 +4.90547,120 +4.90913,118 +4.91282,119 +4.9165,120 +4.92018,118 +4.92387,120 +4.92755,118 +4.93123,121 +4.93492,117 +4.9386,118 +4.94227,119 +4.94595,120 +4.94963,120 +4.95332,121 +4.957,119 +4.96068,121 +4.96437,120 +4.96805,117 +4.97173,119 +4.9754,119 +4.97908,118 +4.98277,116 +4.98645,119 +4.99013,119 +4.99382,119 +4.9975,120 +5.00118,117 +5.00487,118 +5.00853,120 +5.01222,117 +5.0159,121 +5.01958,116 +5.02327,119 +5.02695,117 +5.03063,116 +5.03432,120 +5.038,118 +5.04167,117 +5.04535,118 +5.04903,118 +5.05272,116 +5.0564,119 +5.06008,117 +5.06377,117 +5.06745,119 +5.07113,118 +5.0748,119 +5.07848,119 +5.08217,116 +5.08585,119 +5.08953,118 +5.09322,120 +5.0969,122 +5.10058,126 +5.10427,131 +5.10793,127 +5.11162,126 +5.1153,126 +5.11898,123 +5.12267,120 +5.12635,120 +5.13003,122 +5.13372,122 +5.1374,122 +5.14107,122 +5.14475,120 +5.14843,123 +5.15212,121 +5.1558,120 +5.15948,119 +5.16317,120 +5.16685,118 +5.17053,120 +5.17422,117 +5.17788,119 +5.18157,121 +5.18525,118 +5.18893,121 +5.19262,120 +5.1963,121 +5.19998,119 +5.20367,119 +5.20735,119 +5.21102,117 +5.2147,118 +5.21838,119 +5.22207,119 +5.22575,119 +5.22943,119 +5.23312,119 +5.2368,118 +5.24048,119 +5.24415,118 +5.24783,119 +5.25152,118 +5.2552,118 +5.25888,119 +5.26257,118 +5.26625,119 +5.26993,118 +5.27362,119 +5.27728,117 +5.28097,118 +5.28465,116 +5.28833,119 +5.29202,121 +5.2957,118 +5.29938,119 +5.30307,117 +5.30675,120 +5.31042,120 +5.3141,118 +5.31778,119 +5.32147,119 +5.32515,118 +5.32883,116 +5.33252,119 +5.3362,117 +5.33988,117 +5.34355,118 +5.34723,117 +5.35092,118 +5.3546,117 +5.35828,117 +5.36197,116 +5.36565,117 +5.36933,117 +5.37302,117 +5.37668,116 +5.38037,120 +5.38405,118 +5.38773,118 +5.39142,120 +5.3951,116 +5.39878,117 +5.40247,116 +5.40615,118 +5.40982,119 +5.4135,117 +5.41718,120 +5.42087,123 +5.42455,129 +5.42823,137 +5.43192,141 +5.4356,137 +5.43928,132 +5.44295,128 +5.44663,121 +5.45032,121 +5.454,120 +5.45768,118 +5.46137,117 +5.46505,119 +5.46873,118 +5.47242,116 +5.47608,117 +5.47977,118 +5.48345,119 +5.48713,118 +5.49082,120 +5.4945,120 +5.49818,125 +5.50187,127 +5.50555,127 +5.50923,126 +5.5129,126 +5.51658,122 +5.52027,120 +5.52395,118 +5.52763,118 +5.53132,118 +5.535,117 +5.53868,119 +5.54237,119 +5.54603,116 +5.54972,118 +5.5534,118 +5.55708,118 +5.56077,116 +5.56445,116 +5.56813,116 +5.57182,117 +5.5755,119 +5.57917,120 +5.58285,117 +5.58653,119 +5.59022,120 +5.5939,119 +5.59758,120 +5.60127,121 +5.60495,121 +5.60863,117 +5.6123,117 +5.61598,118 +5.61967,118 +5.62335,118 +5.62703,117 +5.63072,118 +5.6344,118 +5.63808,119 +5.64177,117 +5.64543,117 +5.64912,118 +5.6528,118 +5.65648,117 +5.66017,118 +5.66385,118 +5.66753,119 +5.67122,118 +5.6749,121 +5.67857,119 +5.68225,117 +5.68593,119 +5.68962,117 +5.6933,119 +5.69698,118 +5.70067,117 +5.70435,118 +5.70803,117 +5.7117,117 +5.71538,117 +5.71907,117 +5.72275,119 +5.72643,117 +5.73012,118 +5.7338,116 +5.73748,118 +5.74117,117 +5.74483,118 +5.74852,118 +5.7522,115 +5.75588,119 +5.75957,119 +5.76325,119 +5.76693,118 +5.77062,115 +5.7743,115 +5.77797,118 +5.78165,117 +5.78533,118 +5.78902,115 +5.7927,117 +5.79638,116 +5.80007,120 +5.80375,119 +5.80743,118 +5.8111,118 +5.81478,119 +5.81847,115 +5.82215,120 +5.82583,117 +5.82952,118 +5.8332,117 +5.83688,117 +5.84057,115 +5.84423,115 +5.84792,116 +5.8516,116 +5.85528,116 +5.85897,115 +5.86265,116 +5.86633,116 +5.87002,115 +5.8737,117 +5.87738,118 +5.88105,115 +5.88473,113 +5.88842,116 +5.8921,117 +5.89578,116 +5.89947,114 +5.90315,115 +5.90683,115 +5.91052,116 +5.91418,116 +5.91787,115 +5.92155,116 +5.92523,118 +5.92892,116 +5.9326,117 +5.93628,117 +5.93997,116 +5.94365,115 +5.94732,118 +5.951,117 +5.95468,118 +5.95837,117 +5.96205,119 +5.96573,116 +5.96942,119 +5.9731,118 +5.97678,117 +5.98045,117 +5.98413,116 +5.98782,115 +5.9915,115 +5.99518,115 +5.99887,116 +6.00255,115 +6.00623,117 +6.00992,118 +6.01358,116 +6.01727,117 +6.02095,116 +6.02463,116 +6.02832,115 +6.032,117 +6.03568,117 +6.03937,117 +6.04305,115 +6.04672,117 +6.0504,117 +6.05408,117 +6.05777,118 +6.06145,118 +6.06513,116 +6.06882,114 +6.0725,115 +6.07618,116 +6.07985,116 +6.08353,115 +6.08722,117 +6.0909,115 +6.09458,115 +6.09827,118 +6.10195,112 +6.10563,118 +6.10932,117 +6.11298,116 +6.11667,117 +6.12035,116 +6.12403,117 +6.12772,115 +6.1314,116 +6.13508,118 +6.13877,119 +6.14245,118 +6.14612,118 +6.1498,115 +6.15348,116 +6.15717,116 +6.16085,117 +6.16453,116 +6.16822,117 +6.1719,115 +6.17558,118 +6.17925,117 +6.18293,121 +6.18662,118 +6.1903,119 +6.19398,117 +6.19767,116 +6.20135,117 +6.20503,116 +6.20872,117 +6.2124,114 +6.21607,116 +6.21975,117 +6.22343,115 +6.22712,116 +6.2308,115 +6.23448,113 +6.23817,114 +6.24185,115 +6.24553,117 +6.2492,114 +6.25288,116 +6.25657,116 +6.26025,114 +6.26393,116 +6.26762,117 +6.2713,117 +6.27498,119 +6.27867,115 +6.28233,115 +6.28602,114 +6.2897,117 +6.29338,117 +6.29707,117 +6.30075,116 +6.30443,113 +6.30812,115 +6.3118,116 +6.31547,116 +6.31915,116 +6.32283,114 +6.32652,116 +6.3302,114 +6.33388,115 +6.33757,114 +6.34125,115 +6.34493,117 +6.3486,114 +6.35228,116 +6.35597,117 +6.35965,119 +6.36333,114 +6.36702,118 +6.3707,116 +6.37438,116 +6.37807,117 +6.38173,116 +6.38542,117 +6.3891,118 +6.39278,113 +6.39647,116 +6.40015,116 +6.40383,115 +6.40752,116 +6.4112,115 +6.41487,117 +6.41855,117 +6.42223,114 +6.42592,117 +6.4296,115 +6.43328,117 +6.43697,116 +6.44065,115 +6.44433,116 +6.448,118 +6.45168,116 +6.45537,116 +6.45905,116 +6.46273,115 +6.46642,117 +6.4701,118 +6.47378,115 +6.47747,116 +6.48113,115 +6.48482,115 +6.4885,116 +6.49218,116 +6.49587,117 +6.49955,116 +6.50323,114 +6.50692,119 +6.5106,114 +6.51427,120 +6.51795,117 +6.52163,113 +6.52532,115 +6.529,116 +6.53268,115 +6.53637,116 +6.54005,116 +6.54373,114 +6.5474,114 +6.55108,114 +6.55477,113 +6.55845,117 +6.56213,116 +6.56582,115 +6.5695,115 +6.57318,116 +6.57687,117 +6.58055,115 +6.58422,115 +6.5879,115 +6.59158,117 +6.59527,114 +6.59895,116 +6.60263,117 +6.60632,117 +6.61,116 +6.61368,116 +6.61735,117 +6.62103,113 +6.62472,115 +6.6284,117 +6.63208,113 +6.63577,117 +6.63945,117 +6.64313,116 +6.64682,115 +6.65048,117 +6.65417,114 +6.65785,117 +6.66153,116 +6.66522,115 +6.6689,115 +6.67258,115 +6.67627,117 +6.67995,117 +6.68362,117 +6.6873,115 +6.69098,116 +6.69467,117 +6.69835,117 +6.70203,115 +6.70572,117 +6.7094,113 +6.71308,114 +6.71675,117 +6.72043,116 +6.72412,119 +6.7278,116 +6.73148,118 +6.73517,116 +6.73885,115 +6.74253,116 +6.74622,115 +6.74988,116 +6.75357,116 +6.75725,115 +6.76093,115 +6.76462,118 +6.7683,116 +6.77198,115 +6.77567,116 +6.77935,115 +6.78302,116 +6.7867,116 +6.79038,117 +6.79407,117 +6.79775,116 +6.80143,119 +6.80512,116 +6.8088,115 +6.81248,115 +6.81615,115 +6.81983,116 +6.82352,115 +6.8272,113 +6.83088,116 +6.83457,118 +6.83825,117 +6.84193,118 +6.84562,117 +6.84928,117 +6.85297,118 +6.85665,116 +6.86033,117 +6.86402,117 +6.8677,117 +6.87138,114 +6.87507,115 +6.87875,116 +6.88242,116 +6.8861,115 +6.88978,115 +6.89347,114 +6.89715,115 +6.90083,115 +6.90452,107 +6.9082,105 +6.91188,108 +6.91557,107 +6.91923,107 +6.92292,107 +6.9266,111 +6.93028,108 +6.93397,111 +6.93765,109 +6.94133,110 +6.94502,115 +6.9487,124 +6.95237,145 +6.95605,195 +6.95973,291 +6.96342,437 +6.9671,634 +6.97078,867 +6.97447,1051 +6.97815,1211 +6.98183,1258 +6.9855,1236 +6.98918,1143 +6.99287,1003 +6.99655,863 +7.00023,720 +7.00392,606 +7.0076,491 +7.01128,396 +7.01497,322 +7.01863,269 +7.02232,233 +7.026,208 +7.02968,187 +7.03337,174 +7.03705,168 +7.04073,156 +7.04442,148 +7.0481,148 +7.05177,142 +7.05545,138 +7.05913,135 +7.06282,134 +7.0665,130 +7.07018,131 +7.07387,131 +7.07755,131 +7.08123,127 +7.0849,123 +7.08858,127 +7.09227,126 +7.09595,126 +7.09963,122 +7.10332,124 +7.107,121 +7.11068,121 +7.11437,121 +7.11803,119 +7.12172,121 +7.1254,117 +7.12908,120 +7.13277,119 +7.13645,120 +7.14013,118 +7.14382,117 +7.1475,117 +7.15117,115 +7.15485,116 +7.15853,115 +7.16222,115 +7.1659,115 +7.16958,114 +7.17327,114 +7.17695,117 +7.18063,115 +7.1843,119 +7.18798,120 +7.19167,121 +7.19535,122 +7.19903,121 +7.20272,118 +7.2064,118 +7.21008,112 +7.21377,114 +7.21743,113 +7.22112,112 +7.2248,111 +7.22848,112 +7.23217,112 +7.23585,112 +7.23953,113 +7.24322,112 +7.2469,112 +7.25057,111 +7.25425,112 +7.25793,111 +7.26162,112 +7.2653,112 +7.26898,112 +7.27267,112 +7.27635,114 +7.28003,112 +7.28372,112 +7.28738,113 +7.29107,113 +7.29475,112 +7.29843,113 +7.30212,110 +7.3058,119 +7.30948,116 +7.31317,116 +7.31685,117 +7.32052,118 +7.3242,119 +7.32788,130 +7.33157,150 +7.33525,206 +7.33893,295 +7.34262,452 +7.3463,679 +7.34998,956 +7.35365,1245 +7.35733,1502 +7.36102,1633 +7.3647,1646 +7.36838,1549 +7.37207,1377 +7.37575,1153 +7.37943,918 +7.38312,724 +7.38678,563 +7.39047,429 +7.39415,328 +7.39783,269 +7.40152,230 +7.4052,198 +7.40888,182 +7.41257,169 +7.41625,162 +7.41992,154 +7.4236,153 +7.42728,148 +7.43097,143 +7.43465,141 +7.43833,139 +7.44202,136 +7.4457,137 +7.44938,134 +7.45305,131 +7.45673,130 +7.46042,128 +7.4641,130 +7.46778,129 +7.47147,127 +7.47515,129 +7.47883,127 +7.48252,124 +7.48618,125 +7.48987,123 +7.49355,124 +7.49723,122 +7.50092,121 +7.5046,123 +7.50828,120 +7.51197,121 +7.51565,122 +7.51932,121 +7.523,122 +7.52668,120 +7.53037,121 +7.53405,124 +7.53773,120 +7.54142,120 +7.5451,119 +7.54878,121 +7.55245,121 +7.55613,120 +7.55982,119 +7.5635,119 +7.56718,118 +7.57087,121 +7.57455,121 +7.57823,120 +7.58192,119 +7.58558,119 +7.58927,118 +7.59295,118 +7.59663,115 +7.60032,117 +7.604,117 +7.60768,118 +7.61137,115 +7.61505,114 +7.61873,115 +7.6224,118 +7.62608,114 +7.62977,116 +7.63345,117 +7.63713,118 +7.64082,114 +7.6445,117 +7.64818,115 +7.65187,116 +7.65553,117 +7.65922,116 +7.6629,115 +7.66658,118 +7.67027,116 +7.67395,115 +7.67763,118 +7.68132,115 +7.685,117 +7.68867,116 +7.69235,116 +7.69603,117 +7.69972,117 +7.7034,116 +7.70708,116 +7.71077,116 +7.71445,117 +7.71813,114 +7.7218,113 +7.72548,115 +7.72917,117 +7.73285,116 +7.73653,117 +7.74022,116 +7.7439,117 +7.74758,116 +7.75127,118 +7.75493,114 +7.75862,116 +7.7623,116 +7.76598,116 +7.76967,113 +7.77335,115 +7.77703,112 +7.78072,114 +7.7844,116 +7.78807,112 +7.79175,114 +7.79543,114 +7.79912,112 +7.8028,114 +7.80648,112 +7.81017,113 +7.81385,115 +7.81753,115 +7.8212,112 +7.82488,114 +7.82857,114 +7.83225,115 +7.83593,115 +7.83962,115 +7.8433,116 +7.84698,114 +7.85067,115 +7.85433,113 +7.85802,115 +7.8617,117 +7.86538,117 +7.86907,115 +7.87275,113 +7.87643,115 +7.88012,113 +7.8838,114 +7.88747,112 +7.89115,114 +7.89483,115 +7.89852,115 +7.9022,113 +7.90588,113 +7.90957,115 +7.91325,112 +7.91693,115 +7.9206,115 +7.92428,112 +7.92797,112 +7.93165,112 +7.93533,115 +7.93902,112 +7.9427,113 +7.94638,111 +7.95007,113 +7.95373,113 +7.95742,112 +7.9611,112 +7.96478,114 +7.96847,114 +7.97215,116 +7.97583,114 +7.97952,114 +7.9832,114 +7.98688,114 +7.99055,116 +7.99423,113 +7.99792,113 +8.0016,114 +8.00528,116 +8.00897,115 +8.01265,116 +8.01633,113 +8.02002,113 +8.02368,113 +8.02737,113 +8.03105,114 +8.03473,111 +8.03842,114 +8.0421,117 +8.04578,112 +8.04947,112 +8.05315,113 +8.05682,112 +8.0605,112 +8.06418,113 +8.06787,114 +8.07155,112 +8.07523,112 +8.07892,113 +8.0826,113 +8.08628,112 +8.08995,113 +8.09363,110 +8.09732,111 +8.101,111 +8.10468,113 +8.10837,113 +8.11205,112 +8.11573,113 +8.11942,112 +8.12308,113 +8.12677,113 +8.13045,112 +8.13413,115 +8.13782,113 +8.1415,111 +8.14518,112 +8.14887,114 +8.15255,112 +8.15622,113 +8.1599,115 +8.16358,111 +8.16727,111 +8.17095,114 +8.17463,110 +8.17832,112 +8.182,112 +8.18568,112 +8.18935,114 +8.19303,110 +8.19672,111 +8.2004,112 +8.20408,113 +8.20777,113 +8.21145,112 +8.21513,110 +8.21882,110 +8.22248,112 +8.22617,112 +8.22985,113 +8.23353,111 +8.23722,113 +8.2409,113 +8.24458,114 +8.24827,115 +8.25195,113 +8.25562,113 +8.2593,114 +8.26298,112 +8.26667,113 +8.27035,113 +8.27403,114 +8.27772,114 +8.2814,115 +8.28508,113 +8.28875,111 +8.29243,111 +8.29612,112 +8.2998,113 +8.30348,112 +8.30717,112 +8.31085,113 +8.31453,112 +8.31822,113 +8.3219,111 +8.32557,111 +8.32925,111 +8.33293,112 +8.33662,111 +8.3403,110 +8.34398,110 +8.34767,110 +8.35135,112 +8.35503,112 +8.3587,112 +8.36238,110 +8.36607,112 +8.36975,111 +8.37343,113 +8.37712,113 +8.3808,110 +8.38448,110 +8.38817,111 +8.39183,112 +8.39552,114 +8.3992,113 +8.40288,113 +8.40657,113 +8.41025,111 +8.41393,112 +8.41762,113 +8.4213,116 +8.42497,114 +8.42865,113 +8.43233,113 +8.43602,112 +8.4397,111 +8.44338,112 +8.44707,111 +8.45075,112 +8.45443,113 +8.4581,112 +8.46178,111 +8.46547,110 +8.46915,110 +8.47283,111 +8.47652,112 +8.4802,110 +8.48388,111 +8.48757,111 +8.49123,112 +8.49492,112 +8.4986,113 +8.50228,111 +8.50597,1101 +8.50965,1118 +8.51333,1062 +8.51702,946 +8.5207,845 +8.52437,703 +8.52805,589 +8.53173,498 +8.53542,425 +8.5391,375 +8.54278,322 +8.54647,289 +8.55015,267 +8.55383,245 +8.5575,231 +8.56118,214 +8.56487,207 +8.56855,197 +8.57223,189 +8.57592,184 +8.5796,181 +8.58328,176 +8.58697,174 +8.59063,167 +8.59432,166 +8.598,163 +8.60168,160 +8.60537,154 +8.60905,154 +8.61273,153 +8.61642,153 +8.6201,148 +8.62377,144 +8.62745,148 +8.63113,144 +8.63482,146 +8.6385,141 +8.64218,140 +8.64587,141 +8.64955,141 +8.65323,137 +8.6569,142 +8.66058,137 +8.66427,138 +8.66795,135 +8.67163,138 +8.67532,133 +8.679,131 +8.68268,136 +8.68637,131 +8.69005,132 +8.69372,132 +8.6974,130 +8.70108,130 +8.70477,130 +8.70845,131 +8.71213,128 +8.71582,127 +8.7195,128 +8.72318,127 +8.72685,128 +8.73053,130 +8.73422,126 +8.7379,125 +8.74158,126 +8.74527,127 +8.74895,125 +8.75263,124 +8.75632,126 +8.75998,123 +8.76367,125 +8.76735,124 +8.77103,125 +8.77472,123 +8.7784,125 +8.78208,125 +8.78577,124 +8.78945,124 +8.79312,122 +8.7968,124 +8.80048,124 +8.80417,122 +8.80785,125 +8.81153,122 +8.81522,123 +8.8189,122 +8.82258,124 +8.82625,122 +8.82993,124 +8.83362,122 +8.8373,121 +8.84098,119 +8.84467,122 +8.84835,120 +8.85203,121 +8.85572,119 +8.85938,121 +8.86307,119 +8.86675,121 +8.87043,120 +8.87412,118 +8.8778,118 +8.88148,118 +8.88517,120 +8.88885,118 +8.89252,118 +8.8962,119 +8.89988,119 +8.90357,120 +8.90725,121 +8.91093,121 +8.91462,118 +8.9183,118 +8.92198,121 +8.92565,119 +8.92933,119 +8.93302,118 +8.9367,118 +8.94038,118 +8.94407,119 +8.94775,119 +8.95143,119 +8.95512,117 +8.95878,117 +8.96247,116 +8.96615,117 +8.96983,117 +8.97352,118 +8.9772,117 +8.98088,116 +8.98457,116 +8.98825,115 +8.99192,117 +8.9956,116 +8.99928,116 +9.00297,116 +9.00665,115 +9.01033,116 +9.01402,116 +9.0177,115 +9.02138,114 +9.02507,116 +9.02873,116 +9.03242,116 +9.0361,117 +9.03978,115 +9.04347,115 +9.04715,116 +9.05083,115 +9.05452,116 +9.0582,114 +9.06187,115 +9.06555,116 +9.06923,114 +9.07292,115 +9.0766,117 +9.08028,114 +9.08397,114 +9.08765,115 +9.09133,115 +9.095,113 +9.09868,113 +9.10237,118 +9.10605,115 +9.10973,116 +9.11342,115 +9.1171,113 +9.12078,115 +9.12447,113 +9.12813,112 +9.13182,115 +9.1355,114 +9.13918,113 +9.14287,112 +9.14655,114 +9.15023,115 +9.15392,113 +9.1576,113 +9.16127,112 +9.16495,112 +9.16863,113 +9.17232,113 +9.176,113 +9.17968,113 +9.18337,115 +9.18705,114 +9.19073,114 +9.1944,114 +9.19808,113 +9.20177,113 +9.20545,114 +9.20913,114 +9.21282,113 +9.2165,113 +9.22018,114 +9.22387,112 +9.22753,112 +9.23122,113 +9.2349,113 +9.23858,115 +9.24227,114 +9.24595,115 +9.24963,113 +9.25332,115 +9.257,115 +9.26067,116 +9.26435,117 +9.26803,116 +9.27172,114 +9.2754,118 +9.27908,115 +9.28277,114 +9.28645,115 +9.29013,114 +9.2938,114 +9.29748,115 +9.30117,113 +9.30485,113 +9.30853,114 +9.31222,116 +9.3159,115 +9.31958,115 +9.32327,115 +9.32693,113 +9.33062,112 +9.3343,113 +9.33798,113 +9.34167,112 +9.34535,110 +9.34903,110 +9.35272,114 +9.3564,112 +9.36007,113 +9.36375,113 +9.36743,113 +9.37112,113 +9.3748,114 +9.37848,113 +9.38217,113 +9.38585,114 +9.38953,112 +9.39322,114 +9.39688,112 +9.40057,114 +9.40425,111 +9.40793,112 +9.41162,110 +9.4153,110 +9.41898,112 +9.42267,112 +9.42635,113 +9.43002,112 +9.4337,114 +9.43738,113 +9.44107,112 +9.44475,110 +9.44843,114 +9.45212,111 +9.4558,111 +9.45948,110 +9.46315,110 +9.46683,111 +9.47052,110 +9.4742,111 +9.47788,113 +9.48157,112 +9.48525,110 +9.48893,110 +9.49262,111 +9.49628,111 +9.49997,112 +9.50365,111 +9.50733,110 +9.51102,111 +9.5147,112 +9.51838,110 +9.52207,111 +9.52575,111 +9.52942,111 +9.5331,111 +9.53678,111 +9.54047,111 +9.54415,110 +9.54783,112 +9.55152,112 +9.5552,110 +9.55888,110 +9.56255,110 +9.56623,111 +9.56992,112 +9.5736,111 +9.57728,113 +9.58097,110 +9.58465,110 +9.58833,110 +9.59202,110 +9.59568,109 +9.59937,110 +9.60305,110 +9.60673,111 +9.61042,111 +9.6141,110 +9.61778,112 +9.62147,111 +9.62515,113 +9.62882,112 +9.6325,110 +9.63618,109 +9.63987,111 +9.64355,111 +9.64723,110 +9.65092,110 +9.6546,111 +9.65828,111 +9.66195,108 +9.66563,111 +9.66932,112 +9.673,112 +9.67668,109 +9.68037,110 +9.68405,109 +9.68773,110 +9.69142,111 +9.69508,110 +9.69877,110 +9.70245,112 +9.70613,111 +9.70982,111 +9.7135,109 +9.71718,109 +9.72087,108 +9.72455,110 +9.72823,109 +9.7319,112 +9.73558,109 +9.73927,111 +9.74295,109 +9.74663,111 +9.75032,109 +9.754,109 +9.75768,110 +9.76137,110 +9.76503,108 +9.76872,109 +9.7724,111 +9.77608,110 +9.77977,108 +9.78345,110 +9.78713,109 +9.79082,109 +9.7945,109 +9.79817,107 +9.80185,108 +9.80553,108 +9.80922,108 +9.8129,108 +9.81658,108 +9.82027,108 +9.82395,109 +9.82763,106 +9.8313,107 +9.83498,110 +9.83867,108 +9.84235,106 +9.84603,109 +9.84972,109 +9.8534,108 +9.85708,108 +9.86077,110 +9.86443,108 +9.86812,107 +9.8718,109 +9.87548,109 +9.87917,108 +9.88285,108 +9.88653,107 +9.89022,109 +9.8939,109 +9.89757,108 +9.90125,110 +9.90493,107 +9.90862,107 +9.9123,106 +9.91598,107 +9.91967,109 +9.92335,109 +9.92703,109 +9.9307,109 +9.93438,109 +9.93807,107 +9.94175,107 +9.94543,109 +9.94912,109 +9.9528,108 +9.95648,110 +9.96017,108 +9.96383,108 +9.96752,110 +9.9712,110 +9.97488,109 +9.97857,108 +9.98225,111 +9.98593,108 +9.98962,109 +9.9933,109 +9.99697,108 +10.0007,109 +10.0043,108 +10.008,108 +10.0117,108 +10.0154,108 +10.0191,107 +10.0228,109 +10.0264,108 +10.0301,109 +10.0338,107 +10.0375,108 +10.0412,107 +10.0448,107 +10.0485,106 +10.0522,109 +10.0559,108 +10.0596,108 +10.0632,107 +10.0669,109 +10.0706,108 +10.0743,106 +10.078,108 +10.0817,108 +10.0853,108 +10.089,107 +10.0927,109 +10.0964,108 +10.1001,108 +10.1037,106 +10.1074,108 +10.1111,108 +10.1148,107 +10.1185,108 +10.1222,110 +10.1258,107 +10.1295,108 +10.1332,109 +10.1369,110 +10.1406,108 +10.1442,109 +10.1479,109 +10.1516,105 +10.1553,109 +10.159,109 +10.1627,110 +10.1663,107 +10.17,108 +10.1737,107 +10.1774,109 +10.1811,108 +10.1847,109 +10.1884,110 +10.1921,108 +10.1958,107 +10.1995,107 +10.2031,107 +10.2068,107 +10.2105,107 +10.2142,107 +10.2179,109 +10.2216,107 +10.2252,107 +10.2289,109 +10.2326,108 +10.2363,108 +10.24,109 +10.2436,107 +10.2473,109 +10.251,107 +10.2547,108 +10.2584,107 +10.2621,109 +10.2657,104 +10.2694,109 +10.2731,107 +10.2768,107 +10.2805,108 +10.2841,106 +10.2878,107 +10.2915,106 +10.2952,108 +10.2989,107 +10.3025,107 +10.3062,107 +10.3099,107 +10.3136,108 +10.3173,107 +10.321,107 +10.3246,108 +10.3283,109 +10.332,107 +10.3357,108 +10.3394,106 +10.343,108 +10.3467,108 +10.3504,109 +10.3541,107 +10.3578,107 +10.3615,108 +10.3651,105 +10.3688,108 +10.3725,108 +10.3762,109 +10.3799,107 +10.3835,107 +10.3872,107 +10.3909,106 +10.3946,108 +10.3983,108 +10.4019,107 +10.4056,107 +10.4093,106 +10.413,109 +10.4167,108 +10.4204,107 +10.424,107 +10.4277,106 +10.4314,109 +10.4351,107 +10.4388,107 +10.4424,109 +10.4461,109 +10.4498,108 +10.4535,107 +10.4572,107 +10.4609,107 +10.4645,105 +10.4682,107 +10.4719,107 +10.4756,108 +10.4793,106 +10.4829,108 +10.4866,108 +10.4903,107 +10.494,107 +10.4977,108 +10.5013,105 +10.505,106 +10.5087,109 +10.5124,106 +10.5161,106 +10.5198,108 +10.5234,107 +10.5271,108 +10.5308,108 +10.5345,106 +10.5382,105 +10.5418,107 +10.5455,108 +10.5492,106 +10.5529,108 +10.5566,108 +10.5603,105 +10.5639,109 +10.5676,107 +10.5713,107 +10.575,105 +10.5787,107 +10.5823,107 +10.586,106 +10.5897,106 +10.5934,108 +10.5971,108 +10.6007,110 +10.6044,106 +10.6081,109 +10.6118,107 +10.6155,107 +10.6192,108 +10.6228,107 +10.6265,108 +10.6302,107 +10.6339,108 +10.6376,107 +10.6412,107 +10.6449,106 +10.6486,107 +10.6523,108 +10.656,106 +10.6597,107 +10.6633,105 +10.667,107 +10.6707,107 +10.6744,106 +10.6781,106 +10.6817,106 +10.6854,108 +10.6891,106 +10.6928,107 +10.6965,107 +10.7001,105 +10.7038,108 +10.7075,107 +10.7112,106 +10.7149,106 +10.7186,108 +10.7222,108 +10.7259,106 +10.7296,107 +10.7333,109 +10.737,109 +10.7406,108 +10.7443,105 +10.748,107 +10.7517,106 +10.7554,107 +10.7591,108 +10.7627,108 +10.7664,108 +10.7701,107 +10.7738,109 +10.7775,108 +10.7811,110 +10.7848,107 +10.7885,107 +10.7922,105 +10.7959,107 +10.7996,106 +10.8032,106 +10.8069,108 +10.8106,106 +10.8143,108 +10.818,108 +10.8216,110 +10.8253,112 +10.829,114 +10.8327,114 +10.8364,115 +10.84,114 +10.8437,113 +10.8474,111 +10.8511,111 +10.8548,110 +10.8585,110 +10.8621,109 +10.8658,106 +10.8695,107 +10.8732,108 +10.8769,107 +10.8805,108 +10.8842,107 +10.8879,106 +10.8916,109 +10.8953,106 +10.899,107 +10.9026,104 +10.9063,103 +10.91,103 +10.9137,103 +10.9174,104 +10.921,105 +10.9247,104 +10.9284,102 +10.9321,103 +10.9358,104 +10.9394,104 +10.9431,104 +10.9468,103 +10.9505,102 +10.9542,102 +10.9579,104 +10.9615,103 +10.9652,104 +10.9689,103 +10.9726,104 +10.9763,103 +10.9799,103 +10.9836,105 +10.9873,105 +10.991,111 +10.9947,120 +10.9984,139 +11.002,168 +11.0057,205 +11.0094,261 +11.0131,337 +11.0168,402 +11.0204,456 +11.0241,498 +11.0278,523 +11.0315,522 +11.0352,488 +11.0389,447 +11.0425,399 +11.0462,353 +11.0499,319 +11.0536,281 +11.0573,249 +11.0609,238 +11.0646,218 +11.0683,203 +11.072,192 +11.0757,182 +11.0794,172 +11.083,168 +11.0867,163 +11.0904,158 +11.0941,153 +11.0978,150 +11.1014,150 +11.1051,145 +11.1088,144 +11.1125,141 +11.1162,142 +11.1199,143 +11.1235,146 +11.1272,150 +11.1309,166 +11.1346,185 +11.1383,210 +11.1419,246 +11.1456,280 +11.1493,317 +11.153,340 +11.1567,351 +11.1604,355 +11.164,347 +11.1677,326 +11.1714,308 +11.1751,286 +11.1788,266 +11.1824,254 +11.1861,239 +11.1898,222 +11.1935,211 +11.1972,203 +11.2009,191 +11.2045,186 +11.2082,181 +11.2119,174 +11.2156,172 +11.2193,166 +11.2229,163 +11.2266,162 +11.2303,157 +11.234,159 +11.2377,151 +11.2414,150 +11.245,152 +11.2487,152 +11.2524,145 +11.2561,146 +11.2598,143 +11.2634,144 +11.2671,140 +11.2708,140 +11.2745,140 +11.2782,137 +11.2819,138 +11.2855,136 +11.2892,137 +11.2929,133 +11.2966,135 +11.3003,130 +11.3039,132 +11.3076,130 +11.3113,131 +11.315,130 +11.3187,129 +11.3224,129 +11.326,126 +11.3297,127 +11.3334,126 +11.3371,126 +11.3408,126 +11.3444,127 +11.3481,126 +11.3518,126 +11.3555,126 +11.3592,125 +11.3629,125 +11.3665,124 +11.3702,124 +11.3739,126 +11.3776,124 +11.3813,121 +11.3849,123 +11.3886,123 +11.3923,121 +11.396,121 +11.3997,121 +11.4034,120 +11.407,118 +11.4107,121 +11.4144,119 +11.4181,120 +11.4218,117 +11.4254,118 +11.4291,119 +11.4328,116 +11.4365,118 +11.4402,119 +11.4439,117 +11.4475,115 +11.4512,115 +11.4549,117 +11.4586,116 +11.4623,116 +11.4659,114 +11.4696,116 +11.4733,114 +11.477,115 +11.4807,116 +11.4844,116 +11.488,114 +11.4917,114 +11.4954,114 +11.4991,115 +11.5028,115 +11.5064,112 +11.5101,112 +11.5138,114 +11.5175,115 +11.5212,112 +11.5249,115 +11.5285,113 +11.5322,111 +11.5359,113 +11.5396,112 +11.5433,111 +11.5469,110 +11.5506,115 +11.5543,111 +11.558,111 +11.5617,109 +11.5654,114 +11.569,114 +11.5727,112 +11.5764,111 +11.5801,111 +11.5838,112 +11.5874,112 +11.5911,111 +11.5948,109 +11.5985,110 +11.6022,110 +11.6058,111 +11.6095,112 +11.6132,111 +11.6169,110 +11.6206,112 +11.6243,110 +11.6279,111 +11.6316,111 +11.6353,111 +11.639,110 +11.6427,109 +11.6463,111 +11.65,109 +11.6537,110 +11.6574,111 +11.6611,108 +11.6648,110 +11.6684,108 +11.6721,109 +11.6758,109 +11.6795,108 +11.6832,110 +11.6868,109 +11.6905,109 +11.6942,110 +11.6979,109 +11.7016,108 +11.7053,107 +11.7089,112 +11.7126,109 +11.7163,109 +11.72,110 +11.7237,109 +11.7273,108 +11.731,108 +11.7347,109 +11.7384,111 +11.7421,108 +11.7458,109 +11.7494,107 +11.7531,108 +11.7568,107 +11.7605,109 +11.7642,107 +11.7678,109 +11.7715,107 +11.7752,107 +11.7789,106 +11.7826,108 +11.7863,107 +11.7899,107 +11.7936,111 +11.7973,108 +11.801,107 +11.8047,107 +11.8083,110 +11.812,109 +11.8157,107 +11.8194,108 +11.8231,108 +11.8268,108 +11.8304,106 +11.8341,108 +11.8378,109 +11.8415,107 +11.8452,106 +11.8488,109 +11.8525,108 +11.8562,108 +11.8599,106 +11.8636,106 +11.8673,106 +11.8709,107 +11.8746,107 +11.8783,107 +11.882,107 +11.8857,107 +11.8893,108 +11.893,106 +11.8967,106 +11.9004,106 +11.9041,108 +11.9078,107 +11.9114,108 +11.9151,107 +11.9188,107 +11.9225,105 +11.9262,107 +11.9298,107 +11.9335,107 +11.9372,104 +11.9409,107 +11.9446,107 +11.9483,108 +11.9519,108 +11.9556,108 +11.9593,108 +11.963,107 +11.9667,108 +11.9703,107 +11.974,107 +11.9777,110 +11.9814,106 +11.9851,108 +11.9888,107 +11.9924,107 +11.9961,107 +11.9998,107 +12.0035,106 +12.0072,106 +12.0108,105 +12.0145,106 +12.0182,108 +12.0219,109 +12.0256,107 +12.0293,105 +12.0329,106 +12.0366,106 +12.0403,106 +12.044,109 +12.0477,108 +12.0513,108 +12.055,107 +12.0587,106 +12.0624,106 +12.0661,107 +12.0698,107 +12.0734,105 +12.0771,105 +12.0808,106 +12.0845,107 +12.0882,104 +12.0918,106 +12.0955,105 +12.0992,106 +12.1029,105 +12.1066,106 +12.1103,107 +12.1139,105 +12.1176,106 +12.1213,106 +12.125,106 +12.1287,106 +12.1323,107 +12.136,106 +12.1397,106 +12.1434,107 +12.1471,104 +12.1508,105 +12.1544,109 +12.1581,106 +12.1618,107 +12.1655,106 +12.1692,106 +12.1728,104 +12.1765,107 +12.1802,105 +12.1839,105 +12.1876,106 +12.1913,107 +12.1949,106 +12.1986,107 +12.2023,105 +12.206,106 +12.2097,107 +12.2133,107 +12.217,106 +12.2207,108 +12.2244,106 +12.2281,106 +12.2318,104 +12.2354,107 +12.2391,107 +12.2428,106 +12.2465,106 +12.2502,104 +12.2538,105 +12.2575,104 +12.2612,107 +12.2649,104 +12.2686,104 +12.2722,106 +12.2759,107 +12.2796,105 +12.2833,109 +12.287,106 +12.2907,105 +12.2943,105 +12.298,107 +12.3017,104 +12.3054,105 +12.3091,106 +12.3127,105 +12.3164,106 +12.3201,105 +12.3238,105 +12.3275,107 +12.3312,105 +12.3348,106 +12.3385,106 +12.3422,104 +12.3459,106 +12.3496,106 +12.3532,105 +12.3569,107 +12.3606,105 +12.3643,105 +12.368,104 +12.3717,106 +12.3753,105 +12.379,107 +12.3827,104 +12.3864,105 +12.3901,106 +12.3937,104 +12.3974,106 +12.4011,108 +12.4048,105 +12.4085,106 +12.4122,105 +12.4158,104 +12.4195,107 +12.4232,104 +12.4269,105 +12.4306,104 +12.4342,107 +12.4379,106 +12.4416,105 +12.4453,106 +12.449,107 +12.4527,106 +12.4563,103 +12.46,104 +12.4637,105 +12.4674,107 +12.4711,105 +12.4747,105 +12.4784,107 +12.4821,105 +12.4858,106 +12.4895,105 +12.4932,105 +12.4968,105 +12.5005,106 +12.5042,104 +12.5079,106 +12.5116,107 +12.5152,108 +12.5189,105 +12.5226,104 +12.5263,106 +12.53,104 +12.5337,106 +12.5373,106 +12.541,105 +12.5447,105 +12.5484,104 +12.5521,104 +12.5557,104 +12.5594,104 +12.5631,105 +12.5668,105 +12.5705,105 +12.5742,105 +12.5778,105 +12.5815,105 +12.5852,105 +12.5889,104 +12.5926,106 +12.5962,105 +12.5999,106 +12.6036,105 +12.6073,106 +12.611,104 +12.6147,104 +12.6183,106 +12.622,104 +12.6257,106 +12.6294,107 +12.6331,105 +12.6367,104 +12.6404,105 +12.6441,105 +12.6478,105 +12.6515,105 +12.6552,106 +12.6588,105 +12.6625,105 +12.6662,103 +12.6699,104 +12.6736,108 +12.6772,107 +12.6809,106 +12.6846,105 +12.6883,104 +12.692,105 +12.6957,104 +12.6993,104 +12.703,106 +12.7067,105 +12.7104,105 +12.7141,104 +12.7177,105 +12.7214,104 +12.7251,105 +12.7288,104 +12.7325,104 +12.7362,105 +12.7398,105 +12.7435,105 +12.7472,105 +12.7509,104 +12.7546,104 +12.7582,104 +12.7619,105 +12.7656,103 +12.7693,105 +12.773,105 +12.7767,105 +12.7803,103 +12.784,105 +12.7877,105 +12.7914,104 +12.7951,103 +12.7987,105 +12.8024,104 +12.8061,106 +12.8098,106 +12.8135,105 +12.8172,104 +12.8208,105 +12.8245,104 +12.8282,104 +12.8319,105 +12.8356,105 +12.8392,105 +12.8429,105 +12.8466,105 +12.8503,105 +12.854,102 +12.8577,103 +12.8613,106 +12.865,105 +12.8687,104 +12.8724,105 +12.8761,105 +12.8797,104 +12.8834,103 +12.8871,104 +12.8908,104 +12.8945,103 +12.8981,105 +12.9018,105 +12.9055,106 +12.9092,106 +12.9129,105 +12.9166,105 +12.9202,103 +12.9239,104 +12.9276,104 +12.9313,103 +12.935,103 +12.9386,104 +12.9423,106 +12.946,105 +12.9497,103 +12.9534,103 +12.9571,104 +12.9607,105 +12.9644,105 +12.9681,105 +12.9718,104 +12.9755,106 +12.9791,105 +12.9828,104 +12.9865,105 +12.9902,105 +12.9939,104 +12.9976,104 +13.0012,106 +13.0049,107 +13.0086,104 +13.0123,105 +13.016,103 +13.0196,103 +13.0233,104 +13.027,103 +13.0307,105 +13.0344,103 +13.0381,105 +13.0417,105 +13.0454,104 +13.0491,103 +13.0528,105 +13.0565,104 +13.0601,107 +13.0638,104 +13.0675,107 +13.0712,105 +13.0749,105 +13.0786,105 +13.0822,103 +13.0859,104 +13.0896,104 +13.0933,104 +13.097,104 +13.1006,104 +13.1043,104 +13.108,103 +13.1117,104 +13.1154,105 +13.1191,104 +13.1227,104 +13.1264,105 +13.1301,105 +13.1338,104 +13.1375,103 +13.1411,104 +13.1448,104 +13.1485,103 +13.1522,105 +13.1559,103 +13.1596,104 +13.1632,104 +13.1669,104 +13.1706,105 +13.1743,104 +13.178,104 +13.1816,105 +13.1853,104 +13.189,105 +13.1927,105 +13.1964,106 +13.2001,106 +13.2037,104 +13.2074,105 +13.2111,103 +13.2148,105 +13.2185,104 +13.2221,106 +13.2258,105 +13.2295,106 +13.2332,103 +13.2369,104 +13.2406,105 +13.2442,104 +13.2479,104 +13.2516,105 +13.2553,104 +13.259,104 +13.2626,106 +13.2663,105 +13.27,105 +13.2737,105 +13.2774,105 +13.2811,104 +13.2847,105 +13.2884,104 +13.2921,104 +13.2958,105 +13.2995,104 +13.3031,105 +13.3068,103 +13.3105,104 +13.3142,104 +13.3179,105 +13.3216,108 +13.3252,102 +13.3289,105 +13.3326,105 +13.3363,105 +13.34,104 +13.3436,105 +13.3473,104 +13.351,104 +13.3547,104 +13.3584,103 +13.3621,106 +13.3657,106 +13.3694,104 +13.3731,106 +13.3768,106 +13.3805,106 +13.3841,105 +13.3878,104 +13.3915,105 +13.3952,107 +13.3989,105 +13.4026,105 +13.4062,106 +13.4099,104 +13.4136,104 +13.4173,104 +13.421,105 +13.4246,105 +13.4283,104 +13.432,106 +13.4357,106 +13.4394,105 +13.4431,106 +13.4467,104 +13.4504,104 +13.4541,105 +13.4578,103 +13.4615,106 +13.4651,105 +13.4688,106 +13.4725,103 +13.4762,106 +13.4799,105 +13.4836,105 +13.4872,104 +13.4909,105 +13.4946,105 +13.4983,104 +13.502,105 +13.5056,104 +13.5093,105 +13.513,105 +13.5167,104 +13.5204,106 +13.5241,105 +13.5277,103 +13.5314,104 +13.5351,105 +13.5388,106 +13.5425,104 +13.5461,105 +13.5498,105 +13.5535,104 +13.5572,105 +13.5609,103 +13.5645,105 +13.5682,104 +13.5719,105 +13.5756,104 +13.5793,104 +13.583,104 +13.5866,106 +13.5903,106 +13.594,104 +13.5977,103 +13.6014,102 +13.605,106 +13.6087,105 +13.6124,105 +13.6161,103 +13.6198,104 +13.6235,105 +13.6271,106 +13.6308,105 +13.6345,104 +13.6382,105 +13.6419,105 +13.6455,104 +13.6492,103 +13.6529,104 +13.6566,104 +13.6603,104 +13.664,104 +13.6676,104 +13.6713,105 +13.675,103 +13.6787,104 +13.6824,105 +13.686,105 +13.6897,106 +13.6934,104 +13.6971,105 +13.7008,104 +13.7045,105 +13.7081,103 +13.7118,104 +13.7155,104 +13.7192,103 +13.7229,103 +13.7265,104 +13.7302,105 +13.7339,104 +13.7376,105 +13.7413,105 +13.745,103 +13.7486,104 +13.7523,104 +13.756,105 +13.7597,104 +13.7634,106 +13.767,105 +13.7707,105 +13.7744,105 +13.7781,105 +13.7818,104 +13.7855,105 +13.7891,103 +13.7928,103 +13.7965,104 +13.8002,103 +13.8039,105 +13.8075,104 +13.8112,106 +13.8149,105 +13.8186,104 +13.8223,104 +13.826,104 +13.8296,104 +13.8333,103 +13.837,105 +13.8407,104 +13.8444,105 +13.848,106 +13.8517,104 +13.8554,103 +13.8591,105 +13.8628,105 +13.8665,104 +13.8701,106 +13.8738,104 +13.8775,103 +13.8812,105 +13.8849,105 +13.8885,105 +13.8922,103 +13.8959,104 +13.8996,104 +13.9033,106 +13.907,104 +13.9106,105 +13.9143,105 +13.918,104 +13.9217,106 +13.9254,103 +13.929,105 +13.9327,106 +13.9364,105 +13.9401,104 +13.9438,105 +13.9475,104 +13.9511,105 +13.9548,104 +13.9585,106 +13.9622,105 +13.9659,105 +13.9695,105 +13.9732,106 +13.9769,105 +13.9806,104 +13.9843,104 +13.988,104 +13.9916,104 +13.9953,104 +13.999,105 +14.0027,105 +14.0064,107 +14.01,105 +14.0137,104 +14.0174,104 +14.0211,104 +14.0248,105 +14.0285,104 +14.0321,105 +14.0358,105 +14.0395,104 +14.0432,104 +14.0469,105 +14.0505,105 +14.0542,103 +14.0579,105 +14.0616,105 +14.0653,104 +14.069,105 +14.0726,104 +14.0763,103 +14.08,105 +14.0837,106 +14.0874,104 +14.091,105 +14.0947,104 +14.0984,105 +14.1021,106 +14.1058,106 +14.1095,106 +14.1131,105 +14.1168,104 +14.1205,106 +14.1242,103 +14.1279,103 +14.1315,104 +14.1352,105 +14.1389,105 +14.1426,104 +14.1463,105 +14.15,104 +14.1536,106 +14.1573,107 +14.161,104 +14.1647,105 +14.1684,105 +14.172,106 +14.1757,104 +14.1794,104 +14.1831,103 +14.1868,105 +14.1905,105 +14.1941,104 +14.1978,105 +14.2015,105 +14.2052,103 +14.2089,104 +14.2125,103 +14.2162,105 +14.2199,106 +14.2236,105 +14.2273,105 +14.2309,105 +14.2346,105 +14.2383,104 +14.242,105 +14.2457,104 +14.2494,105 +14.253,106 +14.2567,105 +14.2604,103 +14.2641,106 +14.2678,104 +14.2714,105 +14.2751,104 +14.2788,104 +14.2825,106 +14.2862,103 +14.2899,106 +14.2935,104 +14.2972,105 +14.3009,105 +14.3046,105 +14.3083,105 +14.3119,104 +14.3156,105 +14.3193,104 +14.323,104 +14.3267,105 +14.3304,106 +14.334,105 +14.3377,105 +14.3414,106 +14.3451,105 +14.3488,105 +14.3524,104 +14.3561,105 +14.3598,105 +14.3635,107 +14.3672,106 +14.3709,105 +14.3745,105 +14.3782,104 +14.3819,105 +14.3856,103 +14.3893,104 +14.3929,106 +14.3966,103 +14.4003,105 +14.404,105 +14.4077,105 +14.4114,105 +14.415,104 +14.4187,106 +14.4224,105 +14.4261,104 +14.4298,105 +14.4334,106 +14.4371,105 +14.4408,106 +14.4445,106 +14.4482,105 +14.4519,106 +14.4555,104 +14.4592,105 +14.4629,104 +14.4666,106 +14.4703,105 +14.4739,105 +14.4776,106 +14.4813,105 +14.485,105 +14.4887,106 +14.4924,105 +14.496,107 +14.4997,104 +14.5034,92 +14.5071,92 +14.5108,92 +14.5144,91 +14.5181,92 +14.5218,92 +14.5255,92 +14.5292,92 +14.5329,92 +14.5365,92 +14.5402,92 +14.5439,92 +14.5476,92 +14.5513,93 +14.5549,93 +14.5586,91 +14.5623,93 +14.566,92 +14.5697,93 +14.5734,93 +14.577,92 +14.5807,92 +14.5844,92 +14.5881,92 +14.5918,91 +14.5954,92 +14.5991,92 +14.6028,93 +14.6065,92 +14.6102,94 +14.6139,95 +14.6175,99 +14.6212,104 +14.6249,114 +14.6286,127 +14.6323,146 +14.6359,172 +14.6396,195 +14.6433,221 +14.647,249 +14.6507,258 +14.6544,274 +14.658,271 +14.6617,256 +14.6654,245 +14.6691,233 +14.6728,211 +14.6764,195 +14.6801,177 +14.6838,164 +14.6875,156 +14.6912,142 +14.6949,138 +14.6985,132 +14.7022,130 +14.7059,124 +14.7096,122 +14.7133,118 +14.7169,119 +14.7206,115 +14.7243,114 +14.728,112 +14.7317,109 +14.7354,109 +14.739,108 +14.7427,107 +14.7464,107 +14.7501,107 +14.7538,106 +14.7574,104 +14.7611,106 +14.7648,105 +14.7685,104 +14.7722,103 +14.7759,103 +14.7795,101 +14.7832,102 +14.7869,102 +14.7906,100 +14.7943,101 +14.7979,101 +14.8016,100 +14.8053,101 +14.809,101 +14.8127,100 +14.8164,99 +14.82,99 +14.8237,99 +14.8274,98 +14.8311,99 +14.8348,98 +14.8384,98 +14.8421,98 +14.8458,97 +14.8495,98 +14.8532,98 +14.8569,97 +14.8605,99 +14.8642,98 +14.8679,98 +14.8716,97 +14.8753,96 +14.8789,98 +14.8826,97 +14.8863,96 +14.89,97 +14.8937,97 +14.8973,97 +14.901,96 +14.9047,96 +14.9084,96 +14.9121,98 +14.9158,95 +14.9194,96 +14.9231,94 +14.9268,96 +14.9305,95 +14.9342,94 +14.9378,94 +14.9415,96 +14.9452,95 +14.9489,95 +14.9526,96 +14.9563,95 +14.9599,96 +14.9636,96 +14.9673,94 +14.971,96 +14.9747,96 +14.9783,96 +14.982,95 +14.9857,95 +14.9894,94 +14.9931,94 +14.9968,94 +15.0004,94 +15.0041,95 +15.0078,95 +15.0115,94 +15.0152,95 +15.0188,94 +15.0225,96 +15.0262,95 +15.0299,94 +15.0336,94 +15.0373,93 +15.0409,93 +15.0446,94 +15.0483,94 +15.052,96 +15.0557,95 +15.0593,94 +15.063,94 +15.0667,94 +15.0704,95 +15.0741,95 +15.0778,95 +15.0814,94 +15.0851,93 +15.0888,95 +15.0925,94 +15.0962,95 +15.0998,95 +15.1035,94 +15.1072,95 +15.1109,93 +15.1146,94 +15.1183,93 +15.1219,94 +15.1256,94 +15.1293,94 +15.133,94 +15.1367,94 +15.1403,94 +15.144,95 +15.1477,93 +15.1514,95 +15.1551,93 +15.1588,93 +15.1624,93 +15.1661,95 +15.1698,94 +15.1735,94 +15.1772,93 +15.1808,93 +15.1845,95 +15.1882,92 +15.1919,93 +15.1956,93 +15.1993,95 +15.2029,94 +15.2066,93 +15.2103,93 +15.214,93 +15.2177,94 +15.2213,93 +15.225,95 +15.2287,93 +15.2324,94 +15.2361,94 +15.2398,93 +15.2434,94 +15.2471,93 +15.2508,92 +15.2545,93 +15.2582,93 +15.2618,92 +15.2655,93 +15.2692,93 +15.2729,94 +15.2766,93 +15.2803,95 +15.2839,96 +15.2876,99 +15.2913,102 +15.295,114 +15.2987,126 +15.3023,144 +15.306,167 +15.3097,191 +15.3134,224 +15.3171,244 +15.3208,266 +15.3244,270 +15.3281,279 +15.3318,275 +15.3355,256 +15.3392,235 +15.3428,218 +15.3465,192 +15.3502,183 +15.3539,165 +15.3576,153 +15.3613,144 +15.3649,135 +15.3686,129 +15.3723,126 +15.376,123 +15.3797,118 +15.3833,115 +15.387,113 +15.3907,112 +15.3944,110 +15.3981,111 +15.4018,110 +15.4054,109 +15.4091,106 +15.4128,106 +15.4165,104 +15.4202,104 +15.4238,105 +15.4275,105 +15.4312,104 +15.4349,103 +15.4386,101 +15.4423,102 +15.4459,101 +15.4496,101 +15.4533,101 +15.457,100 +15.4607,100 +15.4643,100 +15.468,99 +15.4717,98 +15.4754,98 +15.4791,100 +15.4828,99 +15.4864,99 +15.4901,97 +15.4938,97 +15.4975,100 +15.5012,100 +15.5048,98 +15.5085,98 +15.5122,99 +15.5159,97 +15.5196,97 +15.5232,97 +15.5269,98 +15.5306,96 +15.5343,98 +15.538,97 +15.5417,97 +15.5453,96 +15.549,95 +15.5527,97 +15.5564,98 +15.5601,96 +15.5637,96 +15.5674,96 +15.5711,96 +15.5748,96 +15.5785,98 +15.5822,96 +15.5858,95 +15.5895,96 +15.5932,96 +15.5969,95 +15.6006,96 +15.6042,94 +15.6079,96 +15.6116,95 +15.6153,95 +15.619,94 +15.6227,96 +15.6263,96 +15.63,95 +15.6337,95 +15.6374,95 +15.6411,95 +15.6447,96 +15.6484,96 +15.6521,95 +15.6558,95 +15.6595,97 +15.6632,95 +15.6668,95 +15.6705,94 +15.6742,94 +15.6779,95 +15.6816,96 +15.6852,94 +15.6889,95 +15.6926,95 +15.6963,95 +15.7,95 +15.7037,94 +15.7073,95 +15.711,94 +15.7147,95 +15.7184,94 +15.7221,93 +15.7257,95 +15.7294,96 +15.7331,95 +15.7368,94 +15.7405,94 +15.7442,95 +15.7478,94 +15.7515,94 +15.7552,94 +15.7589,95 +15.7626,93 +15.7662,95 +15.7699,95 +15.7736,95 +15.7773,95 +15.781,93 +15.7847,95 +15.7883,94 +15.792,94 +15.7957,95 +15.7994,93 +15.8031,94 +15.8067,93 +15.8104,94 +15.8141,94 +15.8178,95 +15.8215,94 +15.8252,94 +15.8288,93 +15.8325,95 +15.8362,94 +15.8399,93 +15.8436,94 +15.8472,94 +15.8509,95 +15.8546,93 +15.8583,94 +15.862,93 +15.8657,93 +15.8693,94 +15.873,93 +15.8767,93 +15.8804,94 +15.8841,94 +15.8877,95 +15.8914,94 +15.8951,94 +15.8988,93 +15.9025,94 +15.9062,95 +15.9098,92 +15.9135,95 +15.9172,94 +15.9209,93 +15.9246,93 +15.9282,94 +15.9319,93 +15.9356,94 +15.9393,94 +15.943,94 +15.9467,94 +15.9503,93 +15.954,93 +15.9577,93 +15.9614,94 +15.9651,94 +15.9687,94 +15.9724,92 +15.9761,94 +15.9798,94 +15.9835,93 +15.9872,94 +15.9908,94 +15.9945,93 +15.9982,93 +16.0019,93 +16.0055,94 +16.0092,94 +16.0129,93 +16.0166,94 +16.0203,92 +16.024,93 +16.0277,93 +16.0313,93 +16.035,93 +16.0387,93 +16.0424,93 +16.0461,93 +16.0497,93 +16.0534,94 +16.0571,94 +16.0608,93 +16.0645,93 +16.0681,94 +16.0718,93 +16.0755,92 +16.0792,93 +16.0829,94 +16.0865,93 +16.0902,92 +16.0939,93 +16.0976,94 +16.1013,93 +16.105,94 +16.1087,95 +16.1123,93 +16.116,92 +16.1197,93 +16.1234,93 +16.1271,93 +16.1307,93 +16.1344,92 +16.1381,93 +16.1418,93 +16.1455,92 +16.1491,93 +16.1528,93 +16.1565,94 +16.1602,94 +16.1639,92 +16.1675,93 +16.1712,93 +16.1749,93 +16.1786,93 +16.1823,93 +16.186,93 +16.1896,92 +16.1933,92 +16.197,92 +16.2007,92 +16.2044,93 +16.2081,92 +16.2117,93 +16.2154,92 +16.2191,93 +16.2228,94 +16.2265,93 +16.2301,94 +16.2338,94 +16.2375,91 +16.2412,94 +16.2449,93 +16.2486,92 +16.2522,93 +16.2559,93 +16.2596,93 +16.2633,92 +16.267,92 +16.2706,92 +16.2743,93 +16.278,93 +16.2817,92 +16.2854,94 +16.2891,92 +16.2927,93 +16.2964,93 +16.3001,93 +16.3038,93 +16.3074,93 +16.3111,92 +16.3148,93 +16.3185,92 +16.3222,93 +16.3259,93 +16.3296,93 +16.3332,93 +16.3369,93 +16.3406,92 +16.3443,93 +16.348,92 +16.3516,92 +16.3553,93 +16.359,92 +16.3627,93 +16.3664,92 +16.37,93 +16.3737,93 +16.3774,93 +16.3811,92 +16.3848,94 +16.3884,92 +16.3921,93 +16.3958,94 +16.3995,92 +16.4032,93 +16.4069,94 +16.4106,93 +16.4142,92 +16.4179,92 +16.4216,92 +16.4253,92 +16.429,92 +16.4326,93 +16.4363,94 +16.44,93 +16.4437,93 +16.4474,92 +16.451,92 +16.4547,92 +16.4584,93 +16.4621,93 +16.4658,94 +16.4694,93 +16.4731,92 +16.4768,92 +16.4805,93 +16.4842,92 +16.4879,92 +16.4916,94 +16.4952,93 +16.4989,92 +16.5026,93 +16.5063,92 +16.51,92 +16.5136,92 +16.5173,92 +16.521,93 +16.5247,92 +16.5284,93 +16.5321,93 +16.5357,92 +16.5394,92 +16.5431,92 +16.5468,92 +16.5505,93 +16.5541,92 +16.5578,93 +16.5615,92 +16.5652,93 +16.5689,93 +16.5726,93 +16.5762,93 +16.5799,93 +16.5836,92 +16.5873,93 +16.5909,93 +16.5946,92 +16.5983,93 +16.602,91 +16.6057,93 +16.6094,93 +16.6131,92 +16.6167,92 +16.6204,92 +16.6241,92 +16.6278,92 +16.6315,93 +16.6351,94 +16.6388,93 +16.6425,93 +16.6462,92 +16.6499,91 +16.6535,92 +16.6572,93 +16.6609,93 +16.6646,93 +16.6683,93 +16.6719,92 +16.6756,93 +16.6793,92 +16.683,93 +16.6867,92 +16.6904,93 +16.6941,93 +16.6977,92 +16.7014,92 +16.7051,93 +16.7088,92 +16.7125,93 +16.7161,92 +16.7198,91 +16.7235,91 +16.7272,92 +16.7309,93 +16.7345,92 +16.7382,93 +16.7419,92 +16.7456,93 +16.7493,92 +16.7529,93 +16.7566,93 +16.7603,92 +16.764,93 +16.7677,92 +16.7714,93 +16.7751,93 +16.7787,92 +16.7824,93 +16.7861,92 +16.7898,92 +16.7935,93 +16.7971,93 +16.8008,93 +16.8045,92 +16.8082,92 +16.8119,93 +16.8156,92 +16.8192,92 +16.8229,94 +16.8266,93 +16.8303,92 +16.834,93 +16.8376,93 +16.8413,93 +16.845,93 +16.8487,92 +16.8524,93 +16.856,92 +16.8597,93 +16.8634,93 +16.8671,92 +16.8708,92 +16.8745,92 +16.8781,91 +16.8818,92 +16.8855,92 +16.8892,92 +16.8929,93 +16.8965,91 +16.9002,92 +16.9039,91 +16.9076,93 +16.9113,93 +16.915,93 +16.9186,92 +16.9223,92 +16.926,92 +16.9297,92 +16.9334,93 +16.937,93 +16.9407,94 +16.9444,93 +16.9481,92 +16.9518,93 +16.9554,93 +16.9591,92 +16.9628,92 +16.9665,93 +16.9702,92 +16.9738,93 +16.9775,92 +16.9812,92 +16.9849,93 +16.9886,93 +16.9923,92 +16.996,92 +16.9996,93 +17.0033,93 +17.007,92 +17.0107,93 +17.0144,93 +17.018,92 +17.0217,92 +17.0254,91 +17.0291,93 +17.0328,92 +17.0364,92 +17.0401,93 +17.0438,91 +17.0475,92 +17.0512,93 +17.0548,93 +17.0585,93 +17.0622,92 +17.0659,92 +17.0696,93 +17.0733,92 +17.077,92 +17.0806,92 +17.0843,92 +17.088,93 +17.0917,93 +17.0954,93 +17.099,92 +17.1027,92 +17.1064,92 +17.1101,92 +17.1138,92 +17.1175,92 +17.1211,92 +17.1248,92 +17.1285,92 +17.1322,93 +17.1359,92 +17.1395,91 +17.1432,92 +17.1469,92 +17.1506,91 +17.1543,92 +17.158,93 +17.1616,91 +17.1653,92 +17.169,92 +17.1727,92 +17.1763,92 +17.18,92 +17.1837,92 +17.1874,92 +17.1911,92 +17.1948,92 +17.1985,92 +17.2021,93 +17.2058,93 +17.2095,93 +17.2132,93 +17.2169,92 +17.2205,92 +17.2242,92 +17.2279,93 +17.2316,93 +17.2353,91 +17.2389,92 +17.2426,92 +17.2463,92 +17.25,93 +17.2537,92 +17.2573,93 +17.261,93 +17.2647,91 +17.2684,91 +17.2721,92 +17.2758,92 +17.2795,93 +17.2831,93 +17.2868,92 +17.2905,92 +17.2942,92 +17.2979,92 +17.3015,93 +17.3052,92 +17.3089,92 +17.3126,91 +17.3163,93 +17.3199,92 +17.3236,91 +17.3273,92 +17.331,92 +17.3347,92 +17.3383,91 +17.342,92 +17.3457,92 +17.3494,92 +17.3531,93 +17.3568,92 +17.3605,93 +17.3641,92 +17.3678,91 +17.3715,91 +17.3752,92 +17.3789,93 +17.3825,91 +17.3862,92 +17.3899,92 +17.3936,92 +17.3973,92 +17.401,92 +17.4046,92 +17.4083,92 +17.412,92 +17.4157,92 +17.4194,92 +17.423,93 +17.4267,92 +17.4304,92 +17.4341,90 +17.4378,92 +17.4415,93 +17.4451,91 +17.4488,92 +17.4525,92 +17.4562,93 +17.4598,92 +17.4635,92 +17.4672,93 +17.4709,92 +17.4746,93 +17.4783,93 +17.4819,92 +17.4856,92 +17.4893,92 +17.493,92 +17.4967,92 +17.5004,91 +17.504,92 +17.5077,92 +17.5114,92 +17.5151,91 +17.5188,92 +17.5224,93 +17.5261,92 +17.5298,93 +17.5335,92 +17.5372,92 +17.5409,92 +17.5445,92 +17.5482,92 +17.5519,92 +17.5556,92 +17.5593,92 +17.5629,93 +17.5666,92 +17.5703,92 +17.574,92 +17.5777,92 +17.5814,93 +17.585,93 +17.5887,92 +17.5924,92 +17.5961,92 +17.5998,92 +17.6034,91 +17.6071,93 +17.6108,92 +17.6145,91 +17.6182,92 +17.6219,92 +17.6255,93 +17.6292,92 +17.6329,93 +17.6366,92 +17.6403,92 +17.6439,92 +17.6476,92 +17.6513,92 +17.655,91 +17.6587,92 +17.6624,92 +17.666,92 +17.6697,92 +17.6734,93 +17.6771,92 +17.6808,92 +17.6844,92 +17.6881,93 +17.6918,92 +17.6955,92 +17.6992,93 +17.7029,92 +17.7065,92 +17.7102,92 +17.7139,91 +17.7176,91 +17.7213,93 +17.7249,92 +17.7286,91 +17.7323,92 +17.736,92 +17.7397,93 +17.7434,92 +17.747,93 +17.7507,92 +17.7544,92 +17.7581,93 +17.7617,92 +17.7654,92 +17.7691,92 +17.7728,92 +17.7765,92 +17.7802,92 +17.7839,93 +17.7875,91 +17.7912,92 +17.7949,91 +17.7986,93 +17.8023,92 +17.8059,92 +17.8096,92 +17.8133,91 +17.817,92 +17.8207,92 +17.8244,92 +17.828,92 +17.8317,91 +17.8354,92 +17.8391,93 +17.8428,92 +17.8464,91 +17.8501,92 +17.8538,92 +17.8575,92 +17.8612,92 +17.8649,92 +17.8685,91 +17.8722,92 +17.8759,92 +17.8796,92 +17.8833,93 +17.8869,92 +17.8906,93 +17.8943,92 +17.898,92 +17.9017,92 +17.9054,92 +17.909,92 +17.9127,92 +17.9164,92 +17.9201,92 +17.9238,92 +17.9274,93 +17.9311,92 +17.9348,92 +17.9385,92 +17.9422,93 +17.9459,92 +17.9495,92 +17.9532,92 +17.9569,92 +17.9606,92 +17.9643,91 +17.9679,93 +17.9716,92 +17.9753,92 +17.979,92 +17.9827,93 +17.9864,92 +17.99,93 +17.9937,92 +17.9974,92 +18.0011,92 +18.0048,92 +18.0084,93 +18.0121,93 +18.0158,93 +18.0195,92 +18.0232,92 +18.0269,92 +18.0305,92 +18.0342,92 +18.0379,92 +18.0416,93 +18.0452,93 +18.0489,91 +18.0526,92 +18.0563,92 +18.06,92 +18.0637,93 +18.0674,91 +18.071,92 +18.0747,92 +18.0784,93 +18.0821,93 +18.0858,92 +18.0894,92 +18.0931,92 +18.0968,92 +18.1005,93 +18.1042,92 +18.1078,92 +18.1115,93 +18.1152,92 +18.1189,92 +18.1226,94 +18.1263,93 +18.1299,92 +18.1336,93 +18.1373,92 +18.141,92 +18.1447,91 +18.1483,92 +18.152,93 +18.1557,92 +18.1594,92 +18.1631,93 +18.1668,92 +18.1704,92 +18.1741,92 +18.1778,92 +18.1815,91 +18.1852,92 +18.1888,92 +18.1925,93 +18.1962,92 +18.1999,93 +18.2036,92 +18.2073,93 +18.2109,91 +18.2146,93 +18.2183,92 +18.222,92 +18.2257,93 +18.2293,93 +18.233,91 +18.2367,92 +18.2404,92 +18.2441,92 +18.2478,92 +18.2514,92 +18.2551,92 +18.2588,92 +18.2625,91 +18.2662,93 +18.2698,92 +18.2735,92 +18.2772,92 +18.2809,92 +18.2846,92 +18.2883,92 +18.2919,93 +18.2956,92 +18.2993,92 +18.303,92 +18.3067,93 +18.3103,92 +18.314,93 +18.3177,93 +18.3214,92 +18.3251,92 +18.3287,93 +18.3324,92 +18.3361,92 +18.3398,92 +18.3435,92 +18.3471,92 +18.3508,91 +18.3545,93 +18.3582,92 +18.3619,92 +18.3656,92 +18.3693,92 +18.3729,92 +18.3766,93 +18.3803,94 +18.384,91 +18.3877,93 +18.3913,92 +18.395,93 +18.3987,92 +18.4024,92 +18.4061,92 +18.4098,91 +18.4134,93 +18.4171,91 +18.4208,92 +18.4245,92 +18.4282,93 +18.4318,93 +18.4355,91 +18.4392,92 +18.4429,91 +18.4466,91 +18.4503,93 +18.4539,92 +18.4576,92 +18.4613,92 +18.465,93 +18.4687,92 +18.4723,92 +18.476,92 +18.4797,92 +18.4834,93 +18.4871,93 +18.4908,92 +18.4944,92 +18.4981,93 +18.5018,93 +18.5055,92 +18.5092,92 +18.5128,93 +18.5165,93 +18.5202,92 +18.5239,92 +18.5276,93 +18.5313,92 +18.5349,93 +18.5386,92 +18.5423,93 +18.546,92 +18.5497,92 +18.5533,93 +18.557,93 +18.5607,93 +18.5644,92 +18.5681,92 +18.5718,92 +18.5754,92 +18.5791,92 +18.5828,93 +18.5865,92 +18.5902,93 +18.5938,93 +18.5975,92 +18.6012,93 +18.6049,92 +18.6086,92 +18.6123,92 +18.6159,92 +18.6196,93 +18.6233,92 +18.627,91 +18.6306,91 +18.6343,92 +18.638,92 +18.6417,92 +18.6454,93 +18.6491,92 +18.6528,92 +18.6564,91 +18.6601,93 +18.6638,94 +18.6675,93 +18.6712,92 +18.6748,92 +18.6785,91 +18.6822,92 +18.6859,92 +18.6896,93 +18.6933,92 +18.6969,92 +18.7006,91 +18.7043,92 +18.708,92 +18.7117,93 +18.7153,92 +18.719,92 +18.7227,92 +18.7264,93 +18.7301,92 +18.7338,93 +18.7374,92 +18.7411,91 +18.7448,92 +18.7485,93 +18.7522,92 +18.7558,92 +18.7595,92 +18.7632,91 +18.7669,93 +18.7706,92 +18.7743,93 +18.7779,91 +18.7816,91 +18.7853,93 +18.789,91 +18.7927,93 +18.7963,93 +18.8,92 +18.8037,92 +18.8074,93 +18.8111,92 +18.8147,92 +18.8184,92 +18.8221,92 +18.8258,93 +18.8295,93 +18.8332,92 +18.8368,93 +18.8405,92 +18.8442,92 +18.8479,93 +18.8516,93 +18.8552,92 +18.8589,93 +18.8626,93 +18.8663,92 +18.87,92 +18.8737,92 +18.8773,92 +18.881,93 +18.8847,93 +18.8884,93 +18.8921,93 +18.8957,92 +18.8994,92 +18.9031,93 +18.9068,93 +18.9105,92 +18.9141,92 +18.9178,92 +18.9215,93 +18.9252,92 +18.9289,92 +18.9326,91 +18.9362,92 +18.9399,92 +18.9436,92 +18.9473,92 +18.951,92 +18.9547,93 +18.9583,91 +18.962,93 +18.9657,93 +18.9694,92 +18.9731,93 +18.9767,92 +18.9804,93 +18.9841,92 +18.9878,93 +18.9915,92 +18.9952,92 +18.9988,92 +19.0025,93 +19.0062,92 +19.0099,92 +19.0136,92 +19.0172,93 +19.0209,93 +19.0246,93 +19.0283,92 +19.032,92 +19.0357,93 +19.0393,92 +19.043,91 +19.0467,93 +19.0504,92 +19.0541,93 +19.0577,92 +19.0614,92 +19.0651,93 +19.0688,93 +19.0725,93 +19.0762,92 +19.0798,92 +19.0835,91 +19.0872,93 +19.0909,92 +19.0946,93 +19.0982,93 +19.1019,92 +19.1056,93 +19.1093,92 +19.113,92 +19.1167,92 +19.1203,93 +19.124,93 +19.1277,92 +19.1314,91 +19.1351,93 +19.1387,94 +19.1424,92 +19.1461,92 +19.1498,93 +19.1535,93 +19.1572,93 +19.1608,92 +19.1645,93 +19.1682,93 +19.1719,92 +19.1756,92 +19.1792,92 +19.1829,92 +19.1866,92 +19.1903,91 +19.194,93 +19.1976,93 +19.2013,93 +19.205,93 +19.2087,92 +19.2124,91 +19.216,90 +19.2197,91 +19.2234,91 +19.2271,91 +19.2308,91 +19.2345,91 +19.2382,91 +19.2418,91 +19.2455,91 +19.2492,91 +19.2529,91 +19.2566,91 +19.2602,91 +19.2639,91 +19.2676,91 +19.2713,92 +19.275,91 +19.2787,91 +19.2823,91 +19.286,91 +19.2897,91 +19.2934,92 +19.2971,92 +19.3007,91 +19.3044,91 +19.3081,91 +19.3118,91 +19.3155,92 +19.3192,93 +19.3228,93 +19.3265,95 +19.3302,95 +19.3339,96 +19.3376,97 +19.3412,96 +19.3449,99 +19.3486,98 +19.3523,98 +19.356,98 +19.3597,98 +19.3633,97 +19.367,96 +19.3707,98 +19.3744,96 +19.3781,97 +19.3817,98 +19.3854,97 +19.3891,96 +19.3928,97 +19.3965,97 +19.4002,96 +19.4038,96 +19.4075,94 +19.4112,96 +19.4149,95 +19.4186,96 +19.4222,97 +19.4259,96 +19.4296,96 +19.4333,96 +19.437,96 +19.4406,98 +19.4443,99 +19.448,101 +19.4517,100 +19.4554,101 +19.4591,101 +19.4627,102 +19.4664,103 +19.4701,102 +19.4738,102 +19.4775,102 +19.4811,101 +19.4848,102 +19.4885,101 +19.4922,101 +19.4959,100 +19.4995,101 +19.5032,102 +19.5069,100 +19.5106,99 +19.5143,100 +19.518,97 +19.5216,98 +19.5253,99 +19.529,98 +19.5327,97 +19.5364,98 +19.5401,97 +19.5437,98 +19.5474,98 +19.5511,97 +19.5548,96 +19.5585,97 +19.5621,98 +19.5658,98 +19.5695,95 +19.5732,97 +19.5769,95 +19.5806,97 +19.5842,97 +19.5879,96 +19.5916,97 +19.5953,95 +19.599,96 +19.6026,96 +19.6063,97 +19.61,96 +19.6137,96 +19.6174,95 +19.6211,94 +19.6247,97 +19.6284,95 +19.6321,95 +19.6358,94 +19.6395,94 +19.6431,95 +19.6468,95 +19.6505,95 +19.6542,94 +19.6579,95 +19.6616,95 +19.6652,95 +19.6689,94 +19.6726,95 +19.6763,95 +19.68,96 +19.6836,94 +19.6873,95 +19.691,94 +19.6947,96 +19.6984,94 +19.7021,94 +19.7057,94 +19.7094,94 +19.7131,94 +19.7168,94 +19.7205,95 +19.7241,95 +19.7278,94 +19.7315,94 +19.7352,94 +19.7389,94 +19.7426,95 +19.7462,94 +19.7499,94 +19.7536,93 +19.7573,94 +19.761,95 +19.7646,94 +19.7683,94 +19.772,94 +19.7757,94 +19.7794,94 +19.783,93 +19.7867,92 +19.7904,93 +19.7941,94 +19.7978,93 +19.8015,93 +19.8051,94 +19.8088,93 +19.8125,93 +19.8162,93 +19.8199,94 +19.8236,95 +19.8272,93 +19.8309,93 +19.8346,93 +19.8383,93 +19.842,93 +19.8456,93 +19.8493,92 +19.853,93 +19.8567,93 +19.8604,93 +19.8641,93 +19.8677,93 +19.8714,92 +19.8751,93 +19.8788,93 +19.8825,93 +19.8861,93 +19.8898,92 +19.8935,92 +19.8972,93 +19.9009,92 +19.9046,93 +19.9082,93 +19.9119,93 +19.9156,93 +19.9193,92 +19.923,92 +19.9266,93 +19.9303,92 +19.934,91 +19.9377,94 +19.9414,93 +19.9451,92 +19.9487,93 +19.9524,92 +19.9561,93 +19.9598,93 +19.9635,92 +19.9671,94 +19.9708,93 +19.9745,93 +19.9782,93 +19.9819,93 +19.9856,92 +19.9892,93 +19.9929,93 +19.9966,92 +20.0003,93 +20.004,92 +20.0076,93 +20.0113,93 +20.015,92 +20.0187,92 +20.0224,93 +20.0261,92 +20.0297,94 +20.0334,92 +20.0371,92 +20.0408,93 +20.0445,92 +20.0481,92 +20.0518,92 +20.0555,93 +20.0592,92 +20.0629,94 +20.0665,92 +20.0702,92 +20.0739,93 +20.0776,93 +20.0813,93 +20.0849,93 +20.0886,92 +20.0923,92 +20.096,92 +20.0997,92 +20.1034,92 +20.107,92 +20.1107,92 +20.1144,94 +20.1181,92 +20.1218,92 +20.1255,92 +20.1291,92 +20.1328,92 +20.1365,91 +20.1402,92 +20.1439,93 +20.1475,92 +20.1512,93 +20.1549,92 +20.1586,93 +20.1623,93 +20.166,92 +20.1696,93 +20.1733,92 +20.177,93 +20.1807,92 +20.1844,93 +20.188,92 +20.1917,92 +20.1954,92 +20.1991,93 +20.2028,93 +20.2065,93 +20.2101,92 +20.2138,93 +20.2175,91 +20.2212,93 +20.2249,92 +20.2285,93 +20.2322,92 +20.2359,92 +20.2396,92 +20.2433,93 +20.247,91 +20.2506,92 +20.2543,92 +20.258,91 +20.2617,92 +20.2654,92 +20.269,93 +20.2727,92 +20.2764,92 +20.2801,92 +20.2838,92 +20.2875,93 +20.2911,92 +20.2948,94 +20.2985,92 +20.3022,92 +20.3059,93 +20.3095,92 +20.3132,93 +20.3169,92 +20.3206,91 +20.3243,93 +20.328,92 +20.3316,92 +20.3353,92 +20.339,92 +20.3427,92 +20.3464,92 +20.35,92 +20.3537,91 +20.3574,93 +20.3611,91 +20.3648,92 +20.3684,93 +20.3721,91 +20.3758,93 +20.3795,91 +20.3832,93 +20.3869,93 +20.3905,93 +20.3942,91 +20.3979,92 +20.4016,92 +20.4053,92 +20.409,92 +20.4126,92 +20.4163,92 +20.42,93 +20.4237,92 +20.4274,92 +20.431,92 +20.4347,92 +20.4384,92 +20.4421,93 +20.4458,92 +20.4495,93 +20.4531,91 +20.4568,92 +20.4605,92 +20.4642,93 +20.4679,93 +20.4715,91 +20.4752,93 +20.4789,91 +20.4826,92 +20.4863,92 +20.49,93 +20.4936,92 +20.4973,92 +20.501,92 +20.5047,93 +20.5084,92 +20.512,91 +20.5157,93 +20.5194,92 +20.5231,91 +20.5268,91 +20.5305,92 +20.5341,93 +20.5378,92 +20.5415,91 +20.5452,91 +20.5489,92 +20.5525,92 +20.5562,92 +20.5599,92 +20.5636,92 +20.5673,93 +20.571,92 +20.5746,91 +20.5783,93 +20.582,92 +20.5857,91 +20.5894,92 +20.593,92 +20.5967,93 +20.6004,92 +20.6041,91 +20.6078,92 +20.6115,94 +20.6151,93 +20.6188,92 +20.6225,92 +20.6262,92 +20.6299,93 +20.6335,93 +20.6372,92 +20.6409,92 +20.6446,91 +20.6483,91 +20.6519,92 +20.6556,92 +20.6593,93 +20.663,91 +20.6667,92 +20.6704,92 +20.674,91 +20.6777,92 +20.6814,92 +20.6851,93 +20.6888,92 +20.6925,92 +20.6961,93 +20.6998,92 +20.7035,92 +20.7072,92 +20.7109,93 +20.7145,92 +20.7182,93 +20.7219,92 +20.7256,92 +20.7293,93 +20.733,91 +20.7366,91 +20.7403,93 +20.744,92 +20.7477,92 +20.7514,91 +20.755,93 +20.7587,92 +20.7624,92 +20.7661,91 +20.7698,92 +20.7734,92 +20.7771,92 +20.7808,92 +20.7845,92 +20.7882,91 +20.7919,92 +20.7955,93 +20.7992,92 +20.8029,92 +20.8066,93 +20.8103,93 +20.8139,91 +20.8176,92 +20.8213,92 +20.825,91 +20.8287,91 +20.8324,92 +20.836,91 +20.8397,93 +20.8434,92 +20.8471,92 +20.8508,93 +20.8544,92 +20.8581,93 +20.8618,92 +20.8655,92 +20.8692,94 +20.8729,92 +20.8765,93 +20.8802,92 +20.8839,94 +20.8876,92 +20.8912,92 +20.8949,92 +20.8986,92 +20.9023,93 +20.906,92 +20.9097,92 +20.9134,93 +20.917,93 +20.9207,93 +20.9244,92 +20.9281,92 +20.9318,92 +20.9354,91 +20.9391,93 +20.9428,92 +20.9465,92 +20.9502,92 +20.9539,92 +20.9575,92 +20.9612,92 +20.9649,92 +20.9686,92 +20.9723,92 +20.9759,93 +20.9796,93 +20.9833,93 +20.987,93 +20.9907,92 +20.9944,92 +20.998,93 +21.0017,94 +21.0054,93 +21.0091,92 +21.0128,93 +21.0164,92 +21.0201,92 +21.0238,92 +21.0275,92 +21.0312,93 +21.0349,93 +21.0385,92 +21.0422,92 +21.0459,92 +21.0496,93 +21.0533,92 +21.0569,92 +21.0606,92 +21.0643,92 +21.068,92 +21.0717,92 +21.0754,93 +21.079,93 +21.0827,93 +21.0864,93 +21.0901,92 +21.0938,92 +21.0974,93 +21.1011,92 +21.1048,93 +21.1085,92 +21.1122,92 +21.1159,94 +21.1195,92 +21.1232,92 +21.1269,92 +21.1306,92 +21.1343,92 +21.1379,92 +21.1416,93 +21.1453,93 +21.149,92 +21.1527,91 +21.1564,92 +21.16,92 +21.1637,92 +21.1674,91 +21.1711,92 +21.1748,92 +21.1784,93 +21.1821,92 +21.1858,93 +21.1895,93 +21.1932,92 +21.1969,92 +21.2005,92 +21.2042,93 +21.2079,93 +21.2116,93 +21.2153,92 +21.2189,93 +21.2226,92 +21.2263,93 +21.23,92 +21.2337,92 +21.2373,93 +21.241,93 +21.2447,92 +21.2484,93 +21.2521,92 +21.2558,92 +21.2594,92 +21.2631,93 +21.2668,92 +21.2705,92 +21.2742,93 +21.2779,93 +21.2815,94 +21.2852,92 +21.2889,92 +21.2926,93 +21.2963,92 +21.2999,92 +21.3036,93 +21.3073,92 +21.311,93 +21.3147,92 +21.3184,93 +21.322,92 +21.3257,94 +21.3294,93 +21.3331,93 +21.3368,94 +21.3404,93 +21.3441,94 +21.3478,92 +21.3515,93 +21.3552,92 +21.3589,92 +21.3625,93 +21.3662,93 +21.3699,94 +21.3736,93 +21.3773,93 +21.3809,93 +21.3846,93 +21.3883,94 +21.392,93 +21.3957,93 +21.3994,93 +21.403,93 +21.4067,93 +21.4104,93 +21.4141,93 +21.4178,94 +21.4214,93 +21.4251,92 +21.4288,93 +21.4325,92 +21.4362,93 +21.4398,92 +21.4435,93 +21.4472,93 +21.4509,94 +21.4546,93 +21.4583,92 +21.4619,92 +21.4656,93 +21.4693,93 +21.473,94 +21.4767,93 +21.4803,94 +21.484,92 +21.4877,94 +21.4914,93 +21.4951,93 +21.4988,92 +21.5024,93 +21.5061,92 +21.5098,93 +21.5135,93 +21.5172,92 +21.5208,93 +21.5245,92 +21.5282,93 +21.5319,94 +21.5356,92 +21.5393,93 +21.5429,94 +21.5466,93 +21.5503,93 +21.554,93 +21.5577,94 +21.5613,93 +21.565,94 +21.5687,93 +21.5724,94 +21.5761,93 +21.5798,94 +21.5834,93 +21.5871,93 +21.5908,94 +21.5945,93 +21.5982,93 +21.6018,93 +21.6055,93 +21.6092,93 +21.6129,93 +21.6166,93 +21.6203,93 +21.6239,93 +21.6276,92 +21.6313,93 +21.635,93 +21.6387,93 +21.6423,94 +21.646,93 +21.6497,93 +21.6534,92 +21.6571,94 +21.6608,93 +21.6644,92 +21.6681,93 +21.6718,93 +21.6755,93 +21.6792,93 +21.6828,94 +21.6865,93 +21.6902,94 +21.6939,93 +21.6976,93 +21.7013,94 +21.7049,95 +21.7086,94 +21.7123,93 +21.716,93 +21.7197,93 +21.7233,93 +21.727,94 +21.7307,93 +21.7344,92 +21.7381,93 +21.7418,94 +21.7454,93 +21.7491,93 +21.7528,93 +21.7565,93 +21.7601,91 +21.7638,92 +21.7675,93 +21.7712,93 +21.7749,93 +21.7786,93 +21.7823,93 +21.7859,93 +21.7896,92 +21.7933,94 +21.797,93 +21.8007,93 +21.8043,93 +21.808,93 +21.8117,94 +21.8154,94 +21.8191,94 +21.8228,93 +21.8264,93 +21.8301,93 +21.8338,94 +21.8375,94 +21.8412,94 +21.8448,93 +21.8485,94 +21.8522,93 +21.8559,94 +21.8596,93 +21.8633,93 +21.8669,93 +21.8706,93 +21.8743,94 +21.878,93 +21.8817,94 +21.8853,93 +21.889,93 +21.8927,93 +21.8964,93 +21.9001,94 +21.9038,93 +21.9074,92 +21.9111,92 +21.9148,93 +21.9185,93 +21.9222,94 +21.9258,94 +21.9295,93 +21.9332,93 +21.9369,93 +21.9406,93 +21.9443,94 +21.9479,94 +21.9516,93 +21.9553,93 +21.959,92 +21.9627,94 +21.9663,93 +21.97,93 +21.9737,93 +21.9774,93 +21.9811,93 +21.9848,93 +21.9884,93 +21.9921,92 +21.9958,93 +21.9995,93 +22.0032,92 +22.0068,93 +22.0105,92 +22.0142,94 +22.0179,93 +22.0216,93 +22.0253,93 +22.0289,93 +22.0326,93 +22.0363,93 +22.04,93 +22.0437,94 +22.0473,93 +22.051,93 +22.0547,93 +22.0584,93 +22.0621,93 +22.0657,93 +22.0694,93 +22.0731,93 +22.0768,93 +22.0805,93 +22.0842,93 +22.0878,94 +22.0915,94 +22.0952,93 +22.0989,94 +22.1026,93 +22.1062,92 +22.1099,94 +22.1136,94 +22.1173,93 +22.121,93 +22.1247,94 +22.1283,94 +22.132,92 +22.1357,95 +22.1394,93 +22.1431,93 +22.1467,93 +22.1504,94 +22.1541,94 +22.1578,94 +22.1615,94 +22.1652,93 +22.1688,93 +22.1725,93 +22.1762,93 +22.1799,94 +22.1836,93 +22.1872,93 +22.1909,93 +22.1946,93 +22.1983,93 +22.202,94 +22.2057,93 +22.2093,94 +22.213,94 +22.2167,94 +22.2204,94 +22.2241,94 +22.2277,93 +22.2314,94 +22.2351,93 +22.2388,94 +22.2425,93 +22.2462,94 +22.2498,93 +22.2535,94 +22.2572,93 +22.2609,93 +22.2646,93 +22.2682,94 +22.2719,93 +22.2756,94 +22.2793,93 +22.283,93 +22.2867,93 +22.2903,94 +22.294,93 +22.2977,94 +22.3014,94 +22.3051,93 +22.3087,94 +22.3124,93 +22.3161,94 +22.3198,93 +22.3235,93 +22.3272,93 +22.3308,93 +22.3345,94 +22.3382,94 +22.3419,94 +22.3455,93 +22.3492,94 +22.3529,93 +22.3566,94 +22.3603,93 +22.364,94 +22.3677,95 +22.3713,93 +22.375,94 +22.3787,93 +22.3824,93 +22.3861,94 +22.3897,96 +22.3934,94 +22.3971,94 +22.4008,93 +22.4045,94 +22.4082,94 +22.4118,94 +22.4155,94 +22.4192,94 +22.4229,93 +22.4266,94 +22.4302,95 +22.4339,93 +22.4376,93 +22.4413,93 +22.445,94 +22.4487,94 +22.4523,93 +22.456,93 +22.4597,94 +22.4634,93 +22.4671,93 +22.4707,94 +22.4744,93 +22.4781,93 +22.4818,93 +22.4855,93 +22.4892,94 +22.4928,93 +22.4965,94 +22.5002,93 +22.5039,93 +22.5076,94 +22.5112,93 +22.5149,94 +22.5186,93 +22.5223,93 +22.526,94 +22.5297,95 +22.5333,94 +22.537,94 +22.5407,94 +22.5444,94 +22.5481,94 +22.5517,93 +22.5554,95 +22.5591,94 +22.5628,93 +22.5665,94 +22.5702,95 +22.5738,94 +22.5775,95 +22.5812,95 +22.5849,94 +22.5886,94 +22.5922,93 +22.5959,93 +22.5996,94 +22.6033,150 +22.607,150 +22.6107,151 +22.6143,154 +22.618,151 +22.6217,152 +22.6254,151 +22.629,154 +22.6327,158 +22.6364,153 +22.6401,152 +22.6438,153 +22.6475,153 +22.6512,152 +22.6548,153 +22.6585,154 +22.6622,151 +22.6659,154 +22.6696,155 +22.6732,155 +22.6769,156 +22.6806,156 +22.6843,155 +22.688,155 +22.6917,159 +22.6953,155 +22.699,157 +22.7027,154 +22.7064,156 +22.7101,158 +22.7137,157 +22.7174,159 +22.7211,160 +22.7248,158 +22.7285,158 +22.7321,155 +22.7358,159 +22.7395,159 +22.7432,159 +22.7469,162 +22.7506,155 +22.7542,155 +22.7579,160 +22.7616,160 +22.7653,160 +22.769,155 +22.7726,160 +22.7763,160 +22.78,161 +22.7837,160 +22.7874,161 +22.7911,159 +22.7947,161 +22.7984,159 +22.8021,159 +22.8058,158 +22.8095,161 +22.8131,163 +22.8168,162 +22.8205,160 +22.8242,161 +22.8279,161 +22.8316,160 +22.8352,161 +22.8389,162 +22.8426,162 +22.8463,163 +22.85,161 +22.8536,164 +22.8573,162 +22.861,159 +22.8647,162 +22.8684,166 +22.8721,166 +22.8757,162 +22.8794,164 +22.8831,162 +22.8868,159 +22.8905,163 +22.8941,164 +22.8978,163 +22.9015,164 +22.9052,162 +22.9089,161 +22.9126,163 +22.9162,165 +22.9199,160 +22.9236,164 +22.9273,163 +22.931,161 +22.9346,161 +22.9383,164 +22.942,165 +22.9457,168 +22.9494,165 +22.9531,166 +22.9567,166 +22.9604,163 +22.9641,165 +22.9678,165 +22.9715,165 +22.9751,161 +22.9788,169 +22.9825,165 +22.9862,165 +22.9899,164 +22.9936,163 +22.9972,162 +23.0009,162 +23.0046,166 +23.0083,167 +23.012,168 +23.0156,171 +23.0193,168 +23.023,169 +23.0267,168 +23.0304,170 +23.0341,168 +23.0377,166 +23.0414,167 +23.0451,165 +23.0488,163 +23.0525,166 +23.0561,168 +23.0598,167 +23.0635,169 +23.0672,167 +23.0709,168 +23.0746,168 +23.0782,168 +23.0819,169 +23.0856,171 +23.0893,167 +23.093,168 +23.0966,168 +23.1003,168 +23.104,169 +23.1077,173 +23.1114,169 +23.1151,169 +23.1187,173 +23.1224,170 +23.1261,169 +23.1298,169 +23.1335,170 +23.1371,171 +23.1408,169 +23.1445,172 +23.1482,168 +23.1519,172 +23.1556,170 +23.1592,171 +23.1629,169 +23.1666,173 +23.1703,172 +23.174,170 +23.1776,171 +23.1813,171 +23.185,171 +23.1887,175 +23.1924,166 +23.1961,173 +23.1997,171 +23.2034,172 +23.2071,170 +23.2108,176 +23.2144,175 +23.2181,173 +23.2218,174 +23.2255,173 +23.2292,172 +23.2329,171 +23.2366,172 +23.2402,172 +23.2439,177 +23.2476,175 +23.2513,173 +23.255,175 +23.2586,173 +23.2623,173 +23.266,173 +23.2697,175 +23.2734,173 +23.2771,175 +23.2807,172 +23.2844,172 +23.2881,176 +23.2918,174 +23.2955,170 +23.2991,172 +23.3028,177 +23.3065,178 +23.3102,177 +23.3139,174 +23.3176,174 +23.3212,175 +23.3249,175 +23.3286,175 +23.3323,176 +23.336,177 +23.3396,176 +23.3433,175 +23.347,177 +23.3507,175 +23.3544,178 +23.3581,179 +23.3617,175 +23.3654,178 +23.3691,173 +23.3728,176 +23.3765,177 +23.3801,176 +23.3838,179 +23.3875,178 +23.3912,179 +23.3949,177 +23.3985,173 +23.4022,179 +23.4059,174 +23.4096,179 +23.4133,174 +23.417,174 +23.4206,177 +23.4243,173 +23.428,180 +23.4317,174 +23.4354,179 +23.439,176 +23.4427,180 +23.4464,177 +23.4501,181 +23.4538,176 +23.4575,179 +23.4611,177 +23.4648,177 +23.4685,183 +23.4722,175 +23.4759,185 +23.4795,175 +23.4832,183 +23.4869,182 +23.4906,184 +23.4943,182 +23.4979,177 +23.5016,185 +23.5053,177 +23.509,179 +23.5127,183 +23.5164,185 +23.52,183 +23.5237,182 +23.5274,183 +23.5311,180 +23.5348,185 +23.5385,183 +23.5421,183 +23.5458,184 +23.5495,183 +23.5532,184 +23.5569,185 +23.5605,181 +23.5642,184 +23.5679,182 +23.5716,182 +23.5753,183 +23.579,184 +23.5826,185 +23.5863,183 +23.59,181 +23.5937,184 +23.5974,184 +23.601,183 +23.6047,183 +23.6084,184 +23.6121,183 +23.6158,182 +23.6195,183 +23.6231,186 +23.6268,189 +23.6305,185 +23.6342,183 +23.6379,185 +23.6415,187 +23.6452,184 +23.6489,186 +23.6526,189 +23.6563,192 +23.66,186 +23.6636,191 +23.6673,183 +23.671,184 +23.6747,185 +23.6784,190 +23.682,186 +23.6857,187 +23.6894,190 +23.6931,184 +23.6968,189 +23.7005,188 +23.7041,186 +23.7078,185 +23.7115,195 +23.7152,189 +23.7189,188 +23.7225,189 +23.7262,191 +23.7299,192 +23.7336,188 +23.7373,190 +23.741,191 +23.7446,192 +23.7483,188 +23.752,190 +23.7557,192 +23.7594,192 +23.763,189 +23.7667,191 +23.7704,186 +23.7741,192 +23.7778,193 +23.7815,188 +23.7851,191 +23.7888,189 +23.7925,187 +23.7962,193 +23.7999,191 +23.8035,193 +23.8072,194 +23.8109,194 +23.8146,190 +23.8183,186 +23.822,190 +23.8256,191 +23.8293,191 +23.833,195 +23.8367,191 +23.8404,189 +23.844,191 +23.8477,193 +23.8514,195 +23.8551,192 +23.8588,193 +23.8625,191 +23.8661,195 +23.8698,190 +23.8735,195 +23.8772,195 +23.8809,191 +23.8845,192 +23.8882,193 +23.8919,195 +23.8956,195 +23.8993,196 +23.903,193 +23.9066,195 +23.9103,192 +23.914,194 +23.9177,195 +23.9214,197 +23.925,194 +23.9287,198 +23.9324,195 +23.9361,194 +23.9398,193 +23.9435,199 +23.9471,193 +23.9508,193 +23.9545,194 +23.9582,198 +23.9619,198 +23.9655,198 +23.9692,196 +23.9729,197 +23.9766,197 +23.9803,197 +23.984,197 +23.9876,199 +23.9913,197 +23.995,202 +23.9987,202 +24.0024,199 +24.006,198 +24.0097,200 +24.0134,199 +24.0171,202 +24.0208,198 +24.0244,200 +24.0281,200 +24.0318,199 +24.0355,197 +24.0392,200 +24.0429,199 +24.0465,201 +24.0502,199 +24.0539,197 +24.0576,197 +24.0613,200 +24.0649,205 +24.0686,200 +24.0723,205 +24.076,199 +24.0797,198 +24.0834,205 +24.087,205 +24.0907,206 +24.0944,201 +24.0981,203 +24.1018,203 +24.1054,199 +24.1091,202 +24.1128,201 +24.1165,203 +24.1202,203 +24.1239,205 +24.1275,202 +24.1312,206 +24.1349,203 +24.1386,206 +24.1423,205 +24.1459,205 +24.1496,206 +24.1533,202 +24.157,205 +24.1607,200 +24.1644,205 +24.168,207 +24.1717,205 +24.1754,204 +24.1791,203 +24.1828,209 +24.1864,203 +24.1901,204 +24.1938,207 +24.1975,207 +24.2012,205 +24.2049,207 +24.2085,208 +24.2122,212 +24.2159,205 +24.2196,204 +24.2233,206 +24.2269,207 +24.2306,210 +24.2343,207 +24.238,207 +24.2417,210 +24.2454,208 +24.249,209 +24.2527,203 +24.2564,206 +24.2601,208 +24.2638,210 +24.2674,212 +24.2711,207 +24.2748,208 +24.2785,209 +24.2822,206 +24.2859,211 +24.2895,209 +24.2932,211 +24.2969,207 +24.3006,211 +24.3043,210 +24.3079,211 +24.3116,209 +24.3153,210 +24.319,210 +24.3227,210 +24.3264,210 +24.33,210 +24.3337,213 +24.3374,210 +24.3411,210 +24.3448,212 +24.3484,209 +24.3521,214 +24.3558,214 +24.3595,214 +24.3632,215 +24.3668,210 +24.3705,217 +24.3742,213 +24.3779,207 +24.3816,213 +24.3853,218 +24.3889,215 +24.3926,211 +24.3963,214 +24.4,210 +24.4037,213 +24.4074,215 +24.411,214 +24.4147,211 +24.4184,212 +24.4221,216 +24.4258,215 +24.4294,216 +24.4331,211 +24.4368,214 +24.4405,216 +24.4442,215 +24.4479,217 +24.4515,220 +24.4552,219 +24.4589,213 +24.4626,217 +24.4663,218 +24.4699,214 +24.4736,215 +24.4773,222 +24.481,218 +24.4847,218 +24.4884,219 +24.492,218 +24.4957,224 +24.4994,221 +24.5031,219 +24.5068,216 +24.5104,222 +24.5141,218 +24.5178,219 +24.5215,219 +24.5252,218 +24.5289,217 +24.5325,219 +24.5362,223 +24.5399,219 +24.5436,227 +24.5473,220 +24.5509,222 +24.5546,220 +24.5583,223 +24.562,221 +24.5657,226 +24.5694,221 +24.573,221 +24.5767,227 +24.5804,220 +24.5841,219 +24.5878,224 +24.5914,224 +24.5951,226 +24.5988,222 +24.6025,230 +24.6062,222 +24.6099,223 +24.6135,225 +24.6172,221 +24.6209,221 +24.6246,228 +24.6283,225 +24.6319,222 +24.6356,225 +24.6393,221 +24.643,227 +24.6467,225 +24.6504,226 +24.654,228 +24.6577,228 +24.6614,229 +24.6651,223 +24.6688,223 +24.6724,225 +24.6761,225 +24.6798,227 +24.6835,230 +24.6872,226 +24.6908,227 +24.6945,225 +24.6982,229 +24.7019,233 +24.7056,229 +24.7093,231 +24.7129,232 +24.7166,229 +24.7203,230 +24.724,221 +24.7277,225 +24.7313,231 +24.735,228 +24.7387,229 +24.7424,231 +24.7461,230 +24.7498,229 +24.7534,230 +24.7571,226 +24.7608,233 +24.7645,231 +24.7682,229 +24.7718,233 +24.7755,227 +24.7792,234 +24.7829,233 +24.7866,233 +24.7903,232 +24.7939,231 +24.7976,233 +24.8013,236 +24.805,231 +24.8087,236 +24.8123,233 +24.816,234 +24.8197,237 +24.8234,231 +24.8271,235 +24.8308,237 +24.8344,233 +24.8381,234 +24.8418,230 +24.8455,238 +24.8492,232 +24.8528,236 +24.8565,233 +24.8602,232 +24.8639,237 +24.8676,235 +24.8713,233 +24.8749,232 +24.8786,240 +24.8823,232 +24.886,236 +24.8897,237 +24.8933,236 +24.897,236 +24.9007,238 +24.9044,241 +24.9081,241 +24.9118,237 +24.9154,239 +24.9191,240 +24.9228,235 +24.9265,239 +24.9302,241 +24.9338,236 +24.9375,243 +24.9412,240 +24.9449,236 +24.9486,235 +24.9523,246 +24.9559,241 +24.9596,241 +24.9633,240 +24.967,241 +24.9707,238 +24.9743,243 +24.978,241 +24.9817,241 +24.9854,241 +24.9891,237 +24.9928,235 +24.9964,244 +25.0001,246 +25.0038,237 +25.0075,243 +25.0112,243 +25.0148,244 +25.0185,248 +25.0222,238 +25.0259,244 +25.0296,240 +25.0333,244 +25.0369,242 +25.0406,243 +25.0443,245 +25.048,245 +25.0517,250 +25.0553,246 +25.059,246 +25.0627,250 +25.0664,247 +25.0701,246 +25.0738,247 +25.0774,247 +25.0811,244 +25.0848,245 +25.0885,248 +25.0922,247 +25.0958,248 +25.0995,248 +25.1032,253 +25.1069,251 +25.1106,244 +25.1143,246 +25.1179,247 +25.1216,247 +25.1253,246 +25.129,250 +25.1327,247 +25.1363,251 +25.14,249 +25.1437,251 +25.1474,252 +25.1511,247 +25.1548,250 +25.1584,250 +25.1621,251 +25.1658,247 +25.1695,251 +25.1732,253 +25.1768,248 +25.1805,249 +25.1842,253 +25.1879,252 +25.1916,249 +25.1953,255 +25.1989,255 +25.2026,256 +25.2063,251 +25.21,255 +25.2137,253 +25.2173,252 +25.221,258 +25.2247,253 +25.2284,255 +25.2321,254 +25.2357,258 +25.2394,260 +25.2431,259 +25.2468,257 +25.2505,251 +25.2542,251 +25.2578,260 +25.2615,261 +25.2652,258 +25.2689,255 +25.2726,259 +25.2763,254 +25.2799,266 +25.2836,261 +25.2873,256 +25.291,256 +25.2947,257 +25.2983,257 +25.302,257 +25.3057,259 +25.3094,263 +25.3131,261 +25.3168,261 +25.3204,253 +25.3241,259 +25.3278,258 +25.3315,261 +25.3352,265 +25.3388,265 +25.3425,263 +25.3462,260 +25.3499,263 +25.3536,264 +25.3572,264 +25.3609,260 +25.3646,262 +25.3683,257 +25.372,261 +25.3757,260 +25.3793,261 +25.383,264 +25.3867,258 +25.3904,261 +25.3941,263 +25.3977,261 +25.4014,265 +25.4051,273 +25.4088,265 +25.4125,264 +25.4162,271 +25.4198,264 +25.4235,264 +25.4272,268 +25.4309,268 +25.4346,260 +25.4382,264 +25.4419,264 +25.4456,266 +25.4493,271 +25.453,267 +25.4567,274 +25.4603,266 +25.464,269 +25.4677,267 +25.4714,267 +25.4751,267 +25.4787,268 +25.4824,274 +25.4861,271 +25.4898,274 +25.4935,270 +25.4972,268 +25.5008,268 +25.5045,268 +25.5082,272 +25.5119,272 +25.5156,273 +25.5192,276 +25.5229,274 +25.5266,275 +25.5303,272 +25.534,268 +25.5377,272 +25.5413,273 +25.545,274 +25.5487,274 +25.5524,271 +25.5561,277 +25.5597,271 +25.5634,267 +25.5671,273 +25.5708,277 +25.5745,275 +25.5782,273 +25.5818,276 +25.5855,275 +25.5892,275 +25.5929,273 +25.5966,276 +25.6002,276 +25.6039,274 +25.6076,267 +25.6113,274 +25.615,274 +25.6187,275 +25.6223,276 +25.626,274 +25.6297,275 +25.6334,273 +25.6371,274 +25.6407,276 +25.6444,279 +25.6481,280 +25.6518,277 +25.6555,273 +25.6592,273 +25.6628,277 +25.6665,274 +25.6702,276 +25.6739,284 +25.6776,279 +25.6812,282 +25.6849,281 +25.6886,275 +25.6923,284 +25.696,276 +25.6997,286 +25.7033,278 +25.707,286 +25.7107,280 +25.7144,283 +25.7181,282 +25.7217,281 +25.7254,283 +25.7291,277 +25.7328,287 +25.7365,281 +25.7402,287 +25.7438,279 +25.7475,278 +25.7512,279 +25.7549,281 +25.7586,281 +25.7622,287 +25.7659,280 +25.7696,285 +25.7733,283 +25.777,291 +25.7807,283 +25.7843,283 +25.788,279 +25.7917,281 +25.7954,288 +25.7991,284 +25.8027,284 +25.8064,284 +25.8101,282 +25.8138,284 +25.8175,285 +25.8212,281 +25.8248,283 +25.8285,291 +25.8322,283 +25.8359,289 +25.8396,284 +25.8432,283 +25.8469,289 +25.8506,285 +25.8543,286 +25.858,283 +25.8617,284 +25.8653,287 +25.869,288 +25.8727,289 +25.8764,287 +25.8801,279 +25.8837,292 +25.8874,288 +25.8911,283 +25.8948,285 +25.8985,283 +25.9022,290 +25.9058,287 +25.9095,290 +25.9132,287 +25.9169,288 +25.9206,288 +25.9242,289 +25.9279,286 +25.9316,291 +25.9353,296 +25.939,289 +25.9427,283 +25.9463,286 +25.95,283 +25.9537,290 +25.9574,292 +25.9611,288 +25.9647,286 +25.9684,289 +25.9721,288 +25.9758,289 +25.9795,291 +25.9831,290 +25.9868,290 +25.9905,290 +25.9942,290 +25.9979,288 +26.0016,287 +26.0052,291 +26.0089,287 +26.0126,289 +26.0163,287 +26.02,292 +26.0236,288 +26.0273,292 +26.031,289 +26.0347,292 +26.0384,296 +26.0421,292 +26.0457,290 +26.0494,289 +26.0531,291 +26.0568,294 +26.0605,290 +26.0641,291 +26.0678,292 +26.0715,296 +26.0752,293 +26.0789,286 +26.0826,292 +26.0862,290 +26.0899,291 +26.0936,296 +26.0973,290 +26.101,293 +26.1046,297 +26.1083,295 +26.112,295 +26.1157,298 +26.1194,295 +26.1231,289 +26.1267,296 +26.1304,293 +26.1341,296 +26.1378,297 +26.1415,297 +26.1451,299 +26.1488,293 +26.1525,289 +26.1562,293 +26.1599,295 +26.1636,296 +26.1672,296 +26.1709,295 +26.1746,296 +26.1783,294 +26.182,292 +26.1856,295 +26.1893,291 +26.193,300 +26.1967,297 +26.2004,294 +26.2041,301 +26.2077,295 +26.2114,298 +26.2151,299 +26.2188,297 +26.2225,301 +26.2261,299 +26.2298,298 +26.2335,288 +26.2372,300 +26.2409,299 +26.2446,300 +26.2482,296 +26.2519,296 +26.2556,293 +26.2593,297 +26.263,291 +26.2666,298 +26.2703,300 +26.274,302 +26.2777,298 +26.2814,295 +26.2851,298 +26.2887,298 +26.2924,295 +26.2961,301 +26.2998,302 +26.3035,295 +26.3071,300 +26.3108,296 +26.3145,296 +26.3182,303 +26.3219,298 +26.3256,299 +26.3292,302 +26.3329,305 +26.3366,297 +26.3403,303 +26.344,300 +26.3476,304 +26.3513,301 +26.355,298 +26.3587,300 +26.3624,299 +26.3661,296 +26.3697,301 +26.3734,298 +26.3771,299 +26.3808,295 +26.3845,299 +26.3881,298 +26.3918,301 +26.3955,307 +26.3992,300 +26.4029,300 +26.4066,304 +26.4102,298 +26.4139,298 +26.4176,298 +26.4213,296 +26.425,302 +26.4286,297 +26.4323,306 +26.436,295 +26.4397,297 +26.4434,304 +26.4471,297 +26.4507,299 +26.4544,297 +26.4581,296 +26.4618,306 +26.4655,302 +26.4691,303 +26.4728,304 +26.4765,302 +26.4802,301 +26.4839,308 +26.4876,299 +26.4912,304 +26.4949,302 +26.4986,307 +26.5023,301 +26.506,302 +26.5096,303 +26.5133,307 +26.517,297 +26.5207,298 +26.5244,298 +26.5281,303 +26.5317,299 +26.5354,301 +26.5391,303 +26.5428,300 +26.5465,303 +26.5501,304 +26.5538,306 +26.5575,302 +26.5612,300 +26.5649,306 +26.5686,304 +26.5722,302 +26.5759,306 +26.5796,302 +26.5833,303 +26.587,298 +26.5906,310 +26.5943,308 +26.598,303 +26.6017,302 +26.6054,198 +26.6124,199 +26.6195,199 +26.6266,199 +26.6336,199 +26.6407,197 +26.6477,198 +26.6548,199 +26.6619,199 +26.6689,200 +26.676,202 +26.6831,197 +26.6901,199 +26.6972,198 +26.7043,200 +26.7113,199 +26.7184,200 +26.7254,200 +26.7325,198 +26.7396,198 +26.7466,197 +26.7537,199 +26.7608,198 +26.7678,199 +26.7749,197 +26.782,198 +26.789,199 +26.7961,199 +26.8031,198 +26.8102,198 +26.8173,199 +26.8243,198 +26.8314,199 +26.8385,199 +26.8455,198 +26.8526,196 +26.8597,198 +26.8667,199 +26.8738,200 +26.8808,197 +26.8879,198 +26.895,200 +26.902,200 +26.9091,198 +26.9162,197 +26.9232,197 +26.9303,198 +26.9374,200 +26.9444,197 +26.9515,197 +26.9585,200 +26.9656,197 +26.9727,197 +26.9797,199 +26.9868,199 +26.9939,199 +27.0009,199 +27.008,199 +27.0151,199 +27.0221,198 +27.0292,199 +27.0362,198 +27.0433,198 +27.0504,199 +27.0574,198 +27.0645,201 +27.0716,197 +27.0786,198 +27.0857,199 +27.0927,200 +27.0998,199 +27.1069,198 +27.1139,199 +27.121,200 +27.1281,198 +27.1351,199 +27.1422,199 +27.1493,201 +27.1563,199 +27.1634,198 +27.1704,201 +27.1775,197 +27.1846,201 +27.1916,197 +27.1987,198 +27.2058,200 +27.2128,199 +27.2199,198 +27.227,198 +27.234,201 +27.2411,202 +27.2481,199 +27.2552,198 +27.2623,199 +27.2693,199 +27.2764,199 +27.2835,200 +27.2905,198 +27.2976,198 +27.3047,200 +27.3117,197 +27.3188,201 +27.3258,202 +27.3329,200 +27.34,201 +27.347,198 +27.3541,198 +27.3612,200 +27.3682,199 +27.3753,199 +27.3824,199 +27.3894,200 +27.3965,197 +27.4035,199 +27.4106,199 +27.4177,199 +27.4247,200 +27.4318,198 +27.4389,198 +27.4459,199 +27.453,200 +27.4601,196 +27.4671,201 +27.4742,199 +27.4812,202 +27.4883,197 +27.4954,200 +27.5024,200 +27.5095,197 +27.5166,200 +27.5236,200 +27.5307,199 +27.5377,197 +27.5448,198 +27.5519,199 +27.5589,199 +27.566,200 +27.5731,200 +27.5801,198 +27.5872,199 +27.5943,199 +27.6013,200 +27.6084,199 +27.6154,199 +27.6225,198 +27.6296,196 +27.6366,198 +27.6437,199 +27.6508,198 +27.6578,199 +27.6649,198 +27.672,200 +27.679,199 +27.6861,200 +27.6931,198 +27.7002,199 +27.7073,199 +27.7143,200 +27.7214,201 +27.7285,198 +27.7355,199 +27.7426,199 +27.7497,199 +27.7567,200 +27.7638,199 +27.7708,198 +27.7779,198 +27.785,199 +27.792,199 +27.7991,199 +27.8062,199 +27.8132,199 +27.8203,198 +27.8274,200 +27.8344,198 +27.8415,197 +27.8485,199 +27.8556,199 +27.8627,198 +27.8697,201 +27.8768,198 +27.8839,199 +27.8909,201 +27.898,199 +27.9051,199 +27.9121,198 +27.9192,200 +27.9262,199 +27.9333,199 +27.9404,201 +27.9474,198 +27.9545,198 +27.9616,199 +27.9686,199 +27.9757,200 +27.9827,197 +27.9898,200 +27.9969,196 +28.0039,199 +28.011,201 +28.0181,200 +28.0251,199 +28.0322,200 +28.0393,199 +28.0463,200 +28.0534,199 +28.0604,201 +28.0675,200 +28.0746,201 +28.0816,199 +28.0887,198 +28.0958,201 +28.1028,199 +28.1099,200 +28.117,197 +28.124,198 +28.1311,200 +28.1381,198 +28.1452,198 +28.1523,199 +28.1593,199 +28.1664,200 +28.1735,201 +28.1805,198 +28.1876,197 +28.1947,198 +28.2017,199 +28.2088,197 +28.2158,200 +28.2229,200 +28.23,199 +28.237,201 +28.2441,199 +28.2512,199 +28.2582,199 +28.2653,198 +28.2724,199 +28.2794,200 +28.2865,198 +28.2935,200 +28.3006,200 +28.3077,199 +28.3147,201 +28.3218,199 +28.3289,199 +28.3359,201 +28.343,199 +28.3501,199 +28.3571,200 +28.3642,201 +28.3712,199 +28.3783,197 +28.3854,199 +28.3924,200 +28.3995,199 +28.4066,200 +28.4136,199 +28.4207,198 +28.4277,202 +28.4348,198 +28.4419,200 +28.4489,200 +28.456,199 +28.4631,199 +28.4701,198 +28.4772,200 +28.4843,200 +28.4913,198 +28.4984,200 +28.5054,199 +28.5125,198 +28.5196,199 +28.5266,199 +28.5337,201 +28.5408,200 +28.5478,200 +28.5549,198 +28.562,200 +28.569,199 +28.5761,200 +28.5831,200 +28.5902,201 +28.5973,198 +28.6043,198 +28.6114,199 +28.6185,203 +28.6255,198 +28.6326,201 +28.6397,198 +28.6467,198 +28.6538,199 +28.6608,200 +28.6679,199 +28.675,197 +28.682,200 +28.6891,200 +28.6962,200 +28.7032,200 +28.7103,200 +28.7174,199 +28.7244,198 +28.7315,200 +28.7385,198 +28.7456,201 +28.7527,199 +28.7597,198 +28.7668,199 +28.7739,199 +28.7809,200 +28.788,198 +28.7951,200 +28.8021,198 +28.8092,199 +28.8162,200 +28.8233,198 +28.8304,200 +28.8374,200 +28.8445,199 +28.8516,200 +28.8586,199 +28.8657,200 +28.8728,198 +28.8798,200 +28.8869,200 +28.8939,199 +28.901,199 +28.9081,199 +28.9151,201 +28.9222,201 +28.9293,201 +28.9363,198 +28.9434,199 +28.9504,199 +28.9575,199 +28.9646,200 +28.9716,201 +28.9787,202 +28.9858,199 +28.9928,200 +28.9999,200 +29.007,201 +29.014,201 +29.0211,202 +29.0281,200 +29.0352,200 +29.0423,200 +29.0493,200 +29.0564,199 +29.0635,199 +29.0705,199 +29.0776,199 +29.0847,198 +29.0917,201 +29.0988,198 +29.1058,199 +29.1129,200 +29.12,198 +29.127,200 +29.1341,200 +29.1412,200 +29.1482,199 +29.1553,201 +29.1624,200 +29.1694,202 +29.1765,198 +29.1835,198 +29.1906,199 +29.1977,200 +29.2047,200 +29.2118,200 +29.2189,200 +29.2259,198 +29.233,200 +29.2401,198 +29.2471,201 +29.2542,199 +29.2612,201 +29.2683,198 +29.2754,200 +29.2824,198 +29.2895,198 +29.2966,199 +29.3036,196 +29.3107,200 +29.3178,200 +29.3248,199 +29.3319,199 +29.3389,201 +29.346,201 +29.3531,200 +29.3601,199 +29.3672,199 +29.3743,199 +29.3813,200 +29.3884,201 +29.3954,201 +29.4025,201 +29.4096,198 +29.4166,199 +29.4237,200 +29.4308,201 +29.4378,197 +29.4449,200 +29.452,200 +29.459,200 +29.4661,200 +29.4731,200 +29.4802,201 +29.4873,200 +29.4943,201 +29.5014,200 +29.5085,199 +29.5155,200 +29.5226,198 +29.5297,201 +29.5367,201 +29.5438,198 +29.5508,199 +29.5579,200 +29.565,200 +29.572,197 +29.5791,199 +29.5862,200 +29.5932,200 +29.6003,198 +29.6074,201 +29.6144,198 +29.6215,199 +29.6285,199 +29.6356,197 +29.6427,200 +29.6497,200 +29.6568,200 +29.6639,199 +29.6709,201 +29.678,198 +29.6851,199 +29.6921,199 +29.6992,199 +29.7062,199 +29.7133,199 +29.7204,198 +29.7274,199 +29.7345,201 +29.7416,200 +29.7486,197 +29.7557,198 +29.7628,201 +29.7698,198 +29.7769,198 +29.7839,201 +29.791,200 +29.7981,199 +29.8051,200 +29.8122,199 +29.8193,199 +29.8263,198 +29.8334,197 +29.8404,200 +29.8475,200 +29.8546,199 +29.8616,199 +29.8687,200 +29.8758,200 +29.8828,201 +29.8899,198 +29.897,201 +29.904,200 +29.9111,201 +29.9181,201 +29.9252,201 +29.9323,201 +29.9393,200 +29.9464,200 +29.9535,199 +29.9605,199 +29.9676,199 +29.9747,198 +29.9817,197 +29.9888,197 +29.9958,200 +30.0029,201 +30.01,197 +30.017,199 +30.0241,201 +30.0312,200 +30.0382,198 +30.0453,197 +30.0524,200 +30.0594,198 +30.0665,199 +30.0735,199 +30.0806,200 +30.0877,199 +30.0947,200 +30.1018,200 +30.1089,199 +30.1159,201 +30.123,201 +30.1301,200 +30.1371,198 +30.1442,200 +30.1512,198 +30.1583,198 +30.1654,198 +30.1724,200 +30.1795,199 +30.1866,201 +30.1936,198 +30.2007,199 +30.2078,198 +30.2148,199 +30.2219,200 +30.2289,199 +30.236,199 +30.2431,201 +30.2501,200 +30.2572,199 +30.2643,200 +30.2713,198 +30.2784,199 +30.2854,200 +30.2925,200 +30.2996,201 +30.3066,199 +30.3137,200 +30.3208,201 +30.3278,198 +30.3349,199 +30.342,201 +30.349,200 +30.3561,198 +30.3631,199 +30.3702,198 +30.3773,201 +30.3843,200 +30.3914,200 +30.3985,199 +30.4055,199 +30.4126,199 +30.4197,200 +30.4267,202 +30.4338,200 +30.4408,201 +30.4479,198 +30.455,200 +30.462,202 +30.4691,198 +30.4762,199 +30.4832,197 +30.4903,198 +30.4974,198 +30.5044,200 +30.5115,200 +30.5185,199 +30.5256,199 +30.5327,199 +30.5397,202 +30.5468,199 +30.5539,201 +30.5609,199 +30.568,198 +30.5751,200 +30.5821,199 +30.5892,201 +30.5962,201 +30.6033,199 +30.6104,200 +30.6174,200 +30.6245,201 +30.6316,200 +30.6386,199 +30.6457,199 +30.6528,200 +30.6598,198 +30.6669,198 +30.6739,199 +30.681,200 +30.6881,199 +30.6951,198 +30.7022,199 +30.7093,199 +30.7163,199 +30.7234,200 +30.7304,199 +30.7375,199 +30.7446,200 +30.7516,198 +30.7587,199 +30.7658,201 +30.7728,199 +30.7799,199 +30.787,203 +30.794,202 +30.8011,201 +30.8081,202 +30.8152,198 +30.8223,199 +30.8293,201 +30.8364,200 +30.8435,201 +30.8505,202 +30.8576,196 +30.8647,198 +30.8717,199 +30.8788,201 +30.8858,199 +30.8929,199 +30.9,198 +30.907,200 +30.9141,199 +30.9212,199 +30.9282,200 +30.9353,201 +30.9424,200 +30.9494,197 +30.9565,198 +30.9635,199 +30.9706,201 +30.9777,200 +30.9847,202 +30.9918,201 +30.9989,198 +31.0059,198 +31.013,199 +31.0201,199 +31.0271,200 +31.0342,200 +31.0412,198 +31.0483,199 +31.0554,201 +31.0624,197 +31.0695,202 +31.0766,200 +31.0836,199 +31.0907,203 +31.0978,200 +31.1048,201 +31.1119,198 +31.1189,198 +31.126,200 +31.1331,199 +31.1401,199 +31.1472,201 +31.1543,201 +31.1613,202 +31.1684,202 +31.1754,199 +31.1825,199 +31.1896,201 +31.1966,196 +31.2037,198 +31.2108,201 +31.2178,199 +31.2249,198 +31.232,200 +31.239,201 +31.2461,200 +31.2531,200 +31.2602,200 +31.2673,201 +31.2743,199 +31.2814,198 +31.2885,198 +31.2955,199 +31.3026,201 +31.3097,201 +31.3167,201 +31.3238,199 +31.3308,201 +31.3379,199 +31.345,198 +31.352,200 +31.3591,200 +31.3662,201 +31.3732,201 +31.3803,200 +31.3874,198 +31.3944,199 +31.4015,199 +31.4085,201 +31.4156,201 +31.4227,200 +31.4297,200 +31.4368,196 +31.4439,201 +31.4509,204 +31.458,200 +31.4651,200 +31.4721,199 +31.4792,199 +31.4862,200 +31.4933,200 +31.5004,199 +31.5074,197 +31.5145,200 +31.5216,200 +31.5286,202 +31.5357,201 +31.5428,201 +31.5498,199 +31.5569,200 +31.5639,199 +31.571,200 +31.5781,200 +31.5851,199 +31.5922,200 +31.5993,198 +31.6063,201 +31.6134,202 +31.6204,201 +31.6275,201 +31.6346,198 +31.6416,198 +31.6487,200 +31.6558,201 +31.6628,202 +31.6699,201 +31.677,199 +31.684,200 +31.6911,200 +31.6981,200 +31.7052,198 +31.7123,199 +31.7193,200 +31.7264,200 +31.7335,200 +31.7405,201 +31.7476,202 +31.7547,200 +31.7617,201 +31.7688,200 +31.7758,200 +31.7829,200 +31.79,201 +31.797,200 +31.8041,198 +31.8112,199 +31.8182,201 +31.8253,200 +31.8324,200 +31.8394,201 +31.8465,199 +31.8535,201 +31.8606,201 +31.8677,201 +31.8747,200 +31.8818,199 +31.8889,201 +31.8959,200 +31.903,199 +31.9101,200 +31.9171,200 +31.9242,201 +31.9312,201 +31.9383,202 +31.9454,202 +31.9524,199 +31.9595,199 +31.9666,200 +31.9736,199 +31.9807,199 +31.9878,200 +31.9948,199 +32.0019,198 +32.0089,201 +32.016,200 +32.0231,199 +32.0301,199 +32.0372,200 +32.0442,201 +32.0513,200 +32.0584,198 +32.0654,201 +32.0725,199 +32.0796,200 +32.0866,199 +32.0937,201 +32.1007,202 +32.1078,199 +32.1149,199 +32.1219,202 +32.129,201 +32.1361,199 +32.1431,199 +32.1502,199 +32.1573,200 +32.1643,200 +32.1714,199 +32.1784,198 +32.1855,200 +32.1926,200 +32.1996,200 +32.2067,201 +32.2138,199 +32.2208,201 +32.2279,201 +32.235,200 +32.242,202 +32.2491,201 +32.2561,198 +32.2632,203 +32.2703,200 +32.2773,199 +32.2844,199 +32.2915,200 +32.2985,199 +32.3056,200 +32.3127,200 +32.3197,197 +32.3268,200 +32.3338,203 +32.3409,200 +32.348,200 +32.355,200 +32.3621,200 +32.3692,200 +32.3762,198 +32.3833,201 +32.3904,202 +32.3974,199 +32.4045,199 +32.4115,199 +32.4186,200 +32.4257,200 diff --git a/dataAnalize.sln b/dataAnalize.sln new file mode 100644 index 0000000..f32ec2f --- /dev/null +++ b/dataAnalize.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.21005.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "dataAnalize", "dataAnalize\dataAnalize.csproj", "{413C6A2F-A21C-472B-9669-50BDDCC65F51}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {413C6A2F-A21C-472B-9669-50BDDCC65F51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {413C6A2F-A21C-472B-9669-50BDDCC65F51}.Debug|Any CPU.Build.0 = Debug|Any CPU + {413C6A2F-A21C-472B-9669-50BDDCC65F51}.Release|Any CPU.ActiveCfg = Release|Any CPU + {413C6A2F-A21C-472B-9669-50BDDCC65F51}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/dataAnalize/FileHelper.cs b/dataAnalize/FileHelper.cs new file mode 100644 index 0000000..fda15a1 --- /dev/null +++ b/dataAnalize/FileHelper.cs @@ -0,0 +1,612 @@ +/** +* Title: 文件操作的方法工具 +* Author: other +* Date: long long ago +* Desp: +*/ + +using System; +using System.IO; +using System.Text; + +namespace dataAnalize +{ + public class FileHelper + { + #region 目录检测相关操作 + + /// + /// 检测指定目录是否存在 + /// + /// 目录的绝对路径 + /// + public static bool IsExistDirectory(string directoryPath) + { + return Directory.Exists(directoryPath); + } + + /// + /// 检测指定目录是否为空 + /// + /// 指定目录的绝对路径 + public static bool IsEmptyDirectory(string directoryPath) + { + try + { + string[] fileNames = GetDirectoryFileNames(directoryPath, "*", false); //判断是否存在文件 + if (fileNames.Length > 0) + { + return false; + } + string[] directoryNames = GetDirectories(directoryPath, "*", false); //判断是否存在文件夹 + if (directoryNames.Length > 0) + { + return false; + } + return true; + } + catch + { + return true; + } + } + + /// + /// 检测指定目录中是否存在指定的文件,若要搜索子目录请使用重载方法. + /// + /// 指定目录的绝对路径 + /// 模式字符串,"*"代表0或N个字符,"?"代表1个字符。 + /// 范例:"Log*.xml"表示搜索所有以Log开头的Xml文件。 + public static bool DirectoryContains(string directoryPath, string searchPattern) + { + try + { + string[] fileNames = GetDirectoryFileNames(directoryPath, searchPattern, false); //获取指定的文件列表 + + if (fileNames.Length == 0) //判断指定文件是否存在 + { + return false; + } + else + { + return true; + } + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + } + + /// + /// 检测指定目录中是否存在指定的文件 + /// + /// 指定目录的绝对路径 + /// 模式字符串,"*"代表0或N个字符,"?"代表1个字符。 + /// 范例:"Log*.xml"表示搜索所有以Log开头的Xml文件。 + /// 是否搜索子目录 + public static bool DirectoryContains(string directoryPath, string searchPattern, bool isSearchChild) + { + try + { + //获取指定的文件列表 + string[] fileNames = GetDirectoryFileNames(directoryPath, searchPattern, true); + + //判断指定文件是否存在 + if (fileNames.Length == 0) + { + return false; + } + else + { + return true; + } + } + catch (Exception ex) + { + throw new Exception(ex.Message); + //LogHelper.WriteTraceLog(TraceLogLevel.Error, ex.Message); + } + } + + /// + /// 获取指定目录及子目录中所有子目录列表 + /// + /// 指定目录的绝对路径 + /// 模式字符串,"*"代表0或N个字符,"?"代表1个字符。 + /// 范例:"Log*.xml"表示搜索所有以Log开头的Xml文件。 + /// 是否搜索子目录 + public static string[] GetDirectories(string directoryPath, string searchPattern, bool isSearchChild) + { + try + { + if (isSearchChild) + { + return Directory.GetDirectories(directoryPath, searchPattern, SearchOption.AllDirectories); + } + else + { + return Directory.GetDirectories(directoryPath, searchPattern, SearchOption.TopDirectoryOnly); + } + } + catch (IOException ex) + { + throw ex; + } + } + + /// + /// 获取指定目录及子目录中所有文件列表 + /// + /// 指定目录的绝对路径 + /// 模式字符串,"*"代表0或N个字符,"?"代表1个字符。 + /// 范例:"Log*.xml"表示搜索所有以Log开头的Xml文件。 + /// 是否搜索子目录 + public static string[] GetDirectoryFileNames(string directoryPath, string searchPattern, bool isSearchChild) + { + //如果目录不存在,则抛出异常 + if (!IsExistDirectory(directoryPath)) + { + throw new FileNotFoundException(); + } + + try + { + if (isSearchChild) + { + return Directory.GetFiles(directoryPath, searchPattern, SearchOption.AllDirectories); + } + else + { + return Directory.GetFiles(directoryPath, searchPattern, SearchOption.TopDirectoryOnly); + } + } + catch (IOException ex) + { + throw ex; + } + } + + #endregion + + #region 目录相关操作的内容 + + /// + /// 创建目录 + /// + /// 要创建的目录路径包括目录名 + public static void CreateDirectory(string dir) + { + if (dir.Length == 0) return; + if (!Directory.Exists(dir)) + Directory.CreateDirectory(dir); + } + + /// + /// 删除目录 + /// + /// 要删除的目录路径和名称 + public static void DeleteDirectory(string dir) + { + if (dir.Length == 0) return; + if (Directory.Exists(dir)) + Directory.Delete(dir, true); + } + + /// + /// 清空指定目录下所有文件及子目录,但该目录依然保存. + /// + /// 指定目录的绝对路径 + public static void ClearDirectory(string directoryPath) + { + if (IsExistDirectory(directoryPath)) + { + //删除目录中所有的文件 + string[] fileNames = GetDirectoryFileNames(directoryPath, "*", false); + for (int i = 0; i < fileNames.Length; i++) + { + DeleteFile(fileNames[i]); + } + //删除目录中所有的子目录 + string[] directoryNames = GetDirectories(directoryPath, "*", false); + for (int i = 0; i < directoryNames.Length; i++) + { + DeleteDirectory(directoryNames[i]); + } + } + } + + /// + /// 复制文件夹(递归) + /// + /// 源文件夹路径 + /// 目标文件夹路径 + public static void CopyDirectory(string varFromDirectory, string varToDirectory) + { + Directory.CreateDirectory(varToDirectory); + + if (!Directory.Exists(varFromDirectory)) return; + + string[] directories = Directory.GetDirectories(varFromDirectory); + + if (directories.Length > 0) + { + foreach (string d in directories) + { + CopyDirectory(d, varToDirectory + d.Substring(d.LastIndexOf("\\"))); + } + } + string[] files = Directory.GetFiles(varFromDirectory); + if (files.Length > 0) + { + foreach (string s in files) + { + File.Copy(s, varToDirectory + s.Substring(s.LastIndexOf("\\")), true); + } + } + } + + #endregion + + #region 文件本身操作 + + /// + /// 检测指定文件是否存在,如果存在则返回true。 + /// + /// 文件的绝对路径 + public static bool IsExistFile(string filePath) + { + return File.Exists(filePath); + } + + /// + /// 创建一个文件。 + /// + /// 文件的绝对路径 + public static void CreateFile(string filePath) + { + try + { + //如果文件不存在则创建该文件 + if (!IsExistFile(filePath)) + { + //创建一个FileInfo对象 + FileInfo file = new FileInfo(filePath); + + //创建文件 + FileStream fs = file.Create(); + + //关闭文件流 + fs.Close(); + } + } + catch (Exception ex) + { + //LogHelper.WriteTraceLog(TraceLogLevel.Error, ex.Message); + throw ex; + } + } + /// + /// 创建文件 + /// + /// 路径 + /// 内容 + public static void CreateFile(string path, string content) + { + FileInfo fi = new FileInfo(path); + var di = fi.Directory; + if (!di.Exists) + { + di.Create(); + } + StreamWriter sw = new StreamWriter(path, false, Encoding.GetEncoding("GB2312")); + sw.Write(content); + sw.Close(); + + //path = path.Replace("/", "\\"); + //if (path.IndexOf("\\") > -1) + // CreateDirectory(dir.Substring(0, path.LastIndexOf("\\"))); + //StreamWriter sw = new StreamWriter(path, false, Encoding.GetEncoding("GB2312")); + //sw.Write(pagestr); + //sw.Close(); + } + /// + /// 创建一个文件,并将字节流写入文件。 + /// + /// 文件的绝对路径 + /// 二进制流数据 + public static void CreateFile(string filePath, byte[] buffer) + { + try + { + //如果文件不存在则创建该文件 + if (!IsExistFile(filePath)) + { + //创建一个FileInfo对象 + FileInfo file = new FileInfo(filePath); + + //创建文件 + FileStream fs = file.Create(); + + //写入二进制流 + fs.Write(buffer, 0, buffer.Length); + + //关闭文件流 + fs.Close(); + } + } + catch (Exception ex) + { + //LogHelper.WriteTraceLog(TraceLogLevel.Error, ex.Message); + throw ex; + } + } + + /// + /// 删除文件 + /// + /// 要删除的文件路径和名称 + public static void DeleteFile(string file) + { + if (File.Exists(file)) + { + File.Delete(file); + } + } + + /// + /// 将文件移动到指定目录 + /// + /// 需要移动的源文件的绝对路径 + /// 移动到的目录的绝对路径 + public static void MoveFile(string sourceFilePath, string descDirectoryPath) + { + //获取源文件的名称 + string sourceFileName = GetFileName(sourceFilePath); + + if (IsExistDirectory(descDirectoryPath)) + { + //如果目标中存在同名文件,则删除 + if (IsExistFile(descDirectoryPath + "\\" + sourceFileName)) + { + DeleteFile(descDirectoryPath + "\\" + sourceFileName); + } + //将文件移动到指定目录 + File.Move(sourceFilePath, descDirectoryPath + "\\" + sourceFileName); + } + } + + /// + /// 复制文件 + /// + /// 要复制的文件的路径已经全名(包括后缀) + /// 目标位置,并指定新的文件名 + public static void CopyFile(string dir1, string dir2) + { + if (File.Exists(dir1)) + { + File.Copy(dir1, dir2, true); + } + } + + #endregion + + #region 文件内容检测 + /// + /// 获取文本文件的行数 + /// + /// 文件的绝对路径 + public static int GetLineCount(string filePath) + { + //将文本文件的各行读到一个字符串数组中 + string[] rows = File.ReadAllLines(filePath); + + //返回行数 + return rows.Length; + } + + /// + /// 获取一个文件的长度,单位为Byte + /// + /// 文件的绝对路径 + public static long GetFileSize(string filePath) + { + //创建一个文件对象 + FileInfo fi = new FileInfo(filePath); + + //获取文件的大小 + return fi.Length; + } + + /// + /// 计算文件大小函数(保留两位小数),Size为字节大小 + /// + /// 初始文件大小 + /// + public static string ToFileSize(long size) + { + string m_strSize = ""; + long FactSize = 0; + FactSize = size; + if (FactSize < 1024.00) + m_strSize = FactSize.ToString("F2") + " 字节"; + else if (FactSize >= 1024.00 && FactSize < 1048576) + m_strSize = (FactSize / 1024.00).ToString("F2") + " KB"; + else if (FactSize >= 1048576 && FactSize < 1073741824) + m_strSize = (FactSize / 1024.00 / 1024.00).ToString("F2") + " MB"; + else if (FactSize >= 1073741824) + m_strSize = (FactSize / 1024.00 / 1024.00 / 1024.00).ToString("F2") + " GB"; + return m_strSize; + } + #endregion + + #region 文件内容操作 + + /// + /// 向文本文件中写入内容 + /// + /// 文件的绝对路径 + /// 写入的内容 + /// 编码 + public static void WriteText(string filePath, string text, Encoding encoding) + { + //向文件写入内容 + File.WriteAllText(filePath, text, encoding); + } + + /// + /// 向文本文件的尾部追加内容 + /// + /// 文件的绝对路径 + /// 写入的内容 + public static void AppendText(string filePath, string content) + { + File.AppendAllText(filePath, content); + } + + /// + /// 获取文件的所有内容 + /// + /// + public static string ReadAllFileContent(string filePath) + { + StreamReader sr = new StreamReader(filePath); + string strRead = sr.ReadToEnd(); //从开始到末尾读取文件的所有内容 + sr.Close(); //读完文件记得关闭流 + + return strRead; + } + + /// + /// 将文件转换成byte[] 数组 + /// + /// 文件路径文件名称 + /// byte[] + public static byte[] ReadFileByteData(string filePath) + { + using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read)) + { + byte[] buffur = new byte[fs.Length]; + using (BinaryReader br = new BinaryReader(fs)) + { + br.Read(buffur, 0, (int)fs.Length); + br.Close(); + } + return buffur; + } + } + + /// + /// 将文件转换成byte[] 数组 + /// + /// 文件路径文件名称 + /// byte[] + public static byte[] ReadFileByteData2(string filePath) + { + FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read); + try + { + byte[] buffur = new byte[fs.Length]; + fs.Read(buffur, 0, (int)fs.Length); + + return buffur; + } + catch (Exception ex) + { + return null; + } + finally + { + fs.Close(); + } + } + + /// + /// 清空文件内容,文件流不会关闭 + /// + /// 文件的绝对路径 + public static void ClearFile(string filePath) + { + FileStream fs = new FileStream(filePath, FileMode.Truncate, FileAccess.ReadWrite); + fs.Close(); + } + + /// + /// 清空文件内容,文件流不会关闭 + /// + /// 文件的绝对路径 + public static FileStream ClearFileAndGet(string filePath) + { + FileStream fs = new FileStream(filePath, FileMode.Truncate, FileAccess.ReadWrite); + return fs; + } + + #endregion + + #region 文件路径处理 + + /// + /// 从文件的绝对路径中获取扩展名 + /// + /// 文件的绝对路径 + public static string GetExtension(string filePath) + { + filePath = filePath.Trim(); + //获取文件的名称 + FileInfo fi = new FileInfo(filePath); + string suffix = fi.Extension; + return suffix.ToLower(); + //string suffix = filePath.Substring(filePath.LastIndexOf(".") + 1); + //return suffix.ToLower(); + } + + /// + /// 从文件的绝对路径中获取最末层文件夹路径 + /// + /// 文件的绝对路径 + public static string GetDirectoryPath(string filePath) + { + FileInfo fi = new FileInfo(filePath); + return fi.DirectoryName; + } + + /// + /// 从文件的绝对路径中获取文件名( 包含扩展名 ) + /// + /// 文件的绝对路径 + public static string GetFileName(string filePath) + { + filePath = filePath.Trim(); + //获取文件的名称 + FileInfo fi = new FileInfo(filePath); + return fi.Name; + //string fileName = filePath.Substring(filePath.LastIndexOf('/') + 1); + //return fileName; + } + + /// + /// 从文件的绝对路径中获取文件名( 不包含扩展名 ) + /// + /// 文件的绝对路径 + public static string GetFileNameNoExtension(string filePath) + { + //获取文件的名称 + FileInfo fi = new FileInfo(filePath); + return fi.Name.Split('.')[0]; + } + + /// + /// 根据相对路径转化为绝对路径 + /// + /// 相对路径, 直接加文件夹名称即可 + /// + public static string GetFullPath(string relativePath) + { + string basePath = AppDomain.CurrentDomain.BaseDirectory; + + return basePath + relativePath; + } + + #endregion + } +} diff --git a/dataAnalize/MainForm.Designer.cs b/dataAnalize/MainForm.Designer.cs new file mode 100644 index 0000000..729bd57 --- /dev/null +++ b/dataAnalize/MainForm.Designer.cs @@ -0,0 +1,147 @@ +namespace dataAnalize +{ + partial class MainForm + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows 窗体设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.btnSelFilePath = new System.Windows.Forms.Button(); + this.TestStart = new System.Windows.Forms.Button(); + this.txtFilePath = new System.Windows.Forms.TextBox(); + this.listResult = new System.Windows.Forms.ListBox(); + this.label1 = new System.Windows.Forms.Label(); + this.AllStart = new System.Windows.Forms.Button(); + this.btnSelSavePath = new System.Windows.Forms.Button(); + this.txtSavePath = new System.Windows.Forms.TextBox(); + this.SuspendLayout(); + // + // btnSelFilePath + // + this.btnSelFilePath.Location = new System.Drawing.Point(52, 20); + this.btnSelFilePath.Name = "btnSelFilePath"; + this.btnSelFilePath.Size = new System.Drawing.Size(75, 23); + this.btnSelFilePath.TabIndex = 0; + this.btnSelFilePath.Text = "文件选择"; + this.btnSelFilePath.UseVisualStyleBackColor = true; + this.btnSelFilePath.Click += new System.EventHandler(this.btnSelFilePath_Click); + // + // TestStart + // + this.TestStart.Location = new System.Drawing.Point(249, 96); + this.TestStart.Name = "TestStart"; + this.TestStart.Size = new System.Drawing.Size(75, 23); + this.TestStart.TabIndex = 0; + this.TestStart.Text = "测试解析"; + this.TestStart.UseVisualStyleBackColor = true; + this.TestStart.Click += new System.EventHandler(this.TestStart_Click); + // + // txtFilePath + // + this.txtFilePath.Location = new System.Drawing.Point(134, 21); + this.txtFilePath.Name = "txtFilePath"; + this.txtFilePath.Size = new System.Drawing.Size(291, 21); + this.txtFilePath.TabIndex = 1; + // + // listResult + // + this.listResult.FormattingEnabled = true; + this.listResult.ItemHeight = 12; + this.listResult.Location = new System.Drawing.Point(52, 144); + this.listResult.Name = "listResult"; + this.listResult.Size = new System.Drawing.Size(373, 328); + this.listResult.TabIndex = 2; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(50, 128); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(59, 12); + this.label1.TabIndex = 3; + this.label1.Text = "结果展示:"; + // + // AllStart + // + this.AllStart.Location = new System.Drawing.Point(350, 96); + this.AllStart.Name = "AllStart"; + this.AllStart.Size = new System.Drawing.Size(75, 23); + this.AllStart.TabIndex = 0; + this.AllStart.Text = "全部解析"; + this.AllStart.UseVisualStyleBackColor = true; + this.AllStart.Click += new System.EventHandler(this.AllStart_Click); + // + // btnSelSavePath + // + this.btnSelSavePath.Location = new System.Drawing.Point(52, 56); + this.btnSelSavePath.Name = "btnSelSavePath"; + this.btnSelSavePath.Size = new System.Drawing.Size(75, 23); + this.btnSelSavePath.TabIndex = 0; + this.btnSelSavePath.Text = "保存文件"; + this.btnSelSavePath.UseVisualStyleBackColor = true; + this.btnSelSavePath.Click += new System.EventHandler(this.btnSelSavePath_Click); + // + // txtSavePath + // + this.txtSavePath.Location = new System.Drawing.Point(134, 57); + this.txtSavePath.Name = "txtSavePath"; + this.txtSavePath.Size = new System.Drawing.Size(291, 21); + this.txtSavePath.TabIndex = 1; + // + // MainForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(463, 497); + this.Controls.Add(this.label1); + this.Controls.Add(this.listResult); + this.Controls.Add(this.txtSavePath); + this.Controls.Add(this.txtFilePath); + this.Controls.Add(this.AllStart); + this.Controls.Add(this.btnSelSavePath); + this.Controls.Add(this.TestStart); + this.Controls.Add(this.btnSelFilePath); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Name = "MainForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "测试界面"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button btnSelFilePath; + private System.Windows.Forms.Button TestStart; + private System.Windows.Forms.TextBox txtFilePath; + private System.Windows.Forms.ListBox listResult; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Button AllStart; + private System.Windows.Forms.Button btnSelSavePath; + private System.Windows.Forms.TextBox txtSavePath; + } +} + diff --git a/dataAnalize/MainForm.cs b/dataAnalize/MainForm.cs new file mode 100644 index 0000000..55f8503 --- /dev/null +++ b/dataAnalize/MainForm.cs @@ -0,0 +1,175 @@ +using System; +using System.Diagnostics; +using System.Windows.Forms; + +namespace dataAnalize +{ + public partial class MainForm : Form + { + public MainForm() + { + InitializeComponent(); + } + + private void btnSelFilePath_Click(object sender, EventArgs e) + { + OpenFileDialog ofd = new OpenFileDialog(); + if (ofd.ShowDialog() == DialogResult.OK) + { + if (!string.IsNullOrEmpty(ofd.FileName)) + { + txtFilePath.Text = ofd.FileName; + } + } + } + + private void btnSelSavePath_Click(object sender, EventArgs e) + { + FolderBrowserDialog dialog = new FolderBrowserDialog(); + + if (dialog.ShowDialog() == DialogResult.OK) + { + string foldPath = dialog.SelectedPath; + txtSavePath.Text = foldPath; + } + } + + // 测试解析点击事件 + private void TestStart_Click(object sender, EventArgs e) + { + string filePath = txtFilePath.Text; + if (string.IsNullOrEmpty(filePath)) + { + MessageBox.Show("请选择数据文件", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + + ClearShow(); + + try + { + // 获取文件的所有字节信息 + byte[] allbytes = FileHelper.ReadFileByteData(filePath); + AddShow("总体", "总字节数:" + allbytes.Length); + AddLine(); + + // 获取头信息 + int sNumber = MsAnalyzeUtil.GetIntLitter(allbytes, 278, 281 - 278 + 1); + AddShow("头信息", "色谱数据数量:" + sNumber); + int startB = MsAnalyzeUtil.GetIntLitter(allbytes, 260, 263 - 260 + 1); + AddShow("头信息", "第一个色谱数据起点:" + startB); + AddLine(); + + // 第一个色谱数据 + int sStartA = 2 * (startB - 1); + int zStartB = MsAnalyzeUtil.GetIntLitter(allbytes, sStartA, 4); + AddShow("色谱数据", "第一个色谱的质谱地址:" + zStartB); + int sTime = MsAnalyzeUtil.GetIntLitter(allbytes, sStartA + 4, 4); + AddShow("色谱数据", "第一个色谱的保留时间(ms):" + sTime); + AddShow("色谱数据", "第一个色谱的保留时间(m):" + MsAnalyzeUtil.MsToMin(sTime)); + int sAbundance = MsAnalyzeUtil.GetIntLitter(allbytes, sStartA + 8, 4); + AddShow("色谱数据", "第一个色谱的信号值:" + sAbundance); + AddLine(); + + // 第一个质谱数据 + int zStartA = zStartB * 2; + int zTime = MsAnalyzeUtil.GetIntLitter(allbytes, zStartA, 4); + AddShow("质谱头", "第一个质谱的保留时间(ms):" + zTime); + AddShow("质谱头", "第一个质谱的保留时间(m):" + MsAnalyzeUtil.MsToMin(zTime)); + int zNumber = MsAnalyzeUtil.GetIntLitter(allbytes, zStartA + 10, 2); + AddShow("质谱头", "第一个质谱的峰个数:" + zNumber); + int zMaxMass = MsAnalyzeUtil.GetIntLitter(allbytes, zStartA + 12, 2); + AddShow("质谱头", "第一个质谱最高峰的质量数:" + zMaxMass); + int zMaxAbundance = MsAnalyzeUtil.GetIntLitter(allbytes, zStartA + 14, 2); + AddShow("质谱头", "第一个质谱最高峰的信号值:" + zMaxAbundance); + AddLine(); + + // 第一个色谱的所有质谱点 + zStartA = zStartA + 16; + int zMass = MsAnalyzeUtil.GetIntLitter(allbytes, zStartA, 2); + AddShow("质谱数据", "第一个质谱第一峰的质量数:" + zMass); + int zAbundance = MsAnalyzeUtil.GetIntLitter(allbytes, zStartA + 2, 2); + AddShow("质谱数据", "第一个质谱第一峰的信号值:" + zAbundance); + zStartA = zStartA + 4; + zMass = MsAnalyzeUtil.GetIntLitter(allbytes, zStartA, 2); + AddShow("质谱数据", "第一个质谱第二峰的质量数:" + zMass); + zAbundance = MsAnalyzeUtil.GetIntLitter(allbytes, zStartA + 2, 2); + AddShow("质谱数据", "第一个质谱第二峰的信号值:" + zAbundance); + AddLine(); + + // 第二个色谱数据 + sStartA = sStartA + 12; + zStartB = MsAnalyzeUtil.GetIntLitter(allbytes, sStartA, 4); + AddShow("色谱数据", "第二个色谱的质谱地址:" + zStartB); + sTime = MsAnalyzeUtil.GetIntLitter(allbytes, sStartA + 4, 4); + AddShow("色谱数据", "第二个色谱的保留时间(ms):" + sTime); + AddShow("色谱数据", "第二个色谱的保留时间(m):" + MsAnalyzeUtil.MsToMin(sTime)); + sAbundance = MsAnalyzeUtil.GetIntLitter(allbytes, sStartA + 8, 4); + AddShow("色谱数据", "第二个色谱的信号值:" + sAbundance); + } + catch (Exception ex) + { + AddShow("错误", "文件解析错误:" + ex.Message); + } + } + + // 全部解析点击事件 + private void AllStart_Click(object sender, EventArgs e) + { + // 所有的路径处理 + string filePath = txtFilePath.Text; + string savePath = txtSavePath.Text; + if (string.IsNullOrEmpty(filePath) || string.IsNullOrEmpty(savePath)) + { + MessageBox.Show("请选择数据文件与保存路径", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + string saveFilePath = savePath + "\\" + FileHelper.GetFileNameNoExtension(filePath) + ".txt"; + if (FileHelper.IsExistFile(saveFilePath)) + FileHelper.ClearFile(saveFilePath); + else + FileHelper.CreateFile(saveFilePath); + MsAnalyzeUtil.Init(saveFilePath); + + // 开始解析 + ClearShow(); + AddShow("说明", "开始进行文本解析"); + AddShow("说明", "保存文件路径:" + saveFilePath); + try + { + Stopwatch stopwatch = Stopwatch.StartNew(); + // 获取文件的所有字节信息 + byte[] allDatas = FileHelper.ReadFileByteData(filePath); + + // 进行全部文件的解析导出 + MsAnalyzeUtil.GetChrom(allDatas); + stopwatch.Stop(); + AddShow("说明", "文件解析完成。用时(ms):" + stopwatch.ElapsedMilliseconds); + } + catch (Exception ex) + { + AddShow("错误", "文件解析错误:" + ex.Message); + } + Process.Start("explorer.exe", savePath); + } + + /*--------------- 数据输出的方法 ----------------------*/ + + // 清理展示内容 + private void ClearShow() + { + listResult.Items.Clear(); + } + + // 本地输出 + private void AddShow(string type, string msg) + { + listResult.Items.Add("【" + type + "】 " + msg); + } + // 本地输出 + private void AddLine() + { + listResult.Items.Add("--------------------------------------"); + } + } +} diff --git a/dataAnalize/MainForm.resx b/dataAnalize/MainForm.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/dataAnalize/MainForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/dataAnalize/MsAnalyzeUtil.cs b/dataAnalize/MsAnalyzeUtil.cs new file mode 100644 index 0000000..9a9777f --- /dev/null +++ b/dataAnalize/MsAnalyzeUtil.cs @@ -0,0 +1,175 @@ +using System; +using System.Collections.Generic; + +namespace dataAnalize +{ + /// + /// 安捷伦数据MS文件,解析的实现类,具体协议信息,可以找对应的文献对应,这里不单独提供了。 + /// + /// 后续完善考虑: + /// 1、 对于解析的数据,可以存放到实体类,然后统一进行输出。 + /// 2、 转化效率上进行优化提升。 + /// 3、 单例结构改造 or 静态初始化方法优化,模块封装更集中。 + /// + public class MsAnalyzeUtil + { + private static string _logFilePath = ""; + + /// + /// 初始化分析方法 + /// 可以改造为using方式,将具体操作都私有化,资源释放管理起来。 + /// + /// + public static void Init(string logFilePath = "") + { + _logFilePath = logFilePath; + } + + /**------------------- 文件解析的主要方法 -----------------------**/ + + /// + /// 获取所有的色谱数据,包括其下质谱数据 + /// + /// 全部的数据 + public static void GetChrom(byte[] allData) + { + OutResult("总体", "总字节数:" + allData.Length); + + int number = GetIntLitter(allData, 278, 281 - 278 + 1); // 色谱总数量 + int startAddr = GetIntLitter(allData, 260, 263 - 260 + 1); //第一个色谱的地址 + OutResult("头信息", string.Format("色谱数据信息: 色谱点数-{0}", number)); + + int startBit = 2 * (startAddr - 1); //第一个色谱的位地址 + int startMass, time, abundance; + for (int i = 0; i < number; i++) + { + startMass = GetIntLitter(allData, startBit, 4); + time = GetIntLitter(allData, startBit + 4, 4); + abundance = GetIntLitter(allData, startBit + 8, 4); + + OutResult("色谱", String.Format("{0,4}:[{3},{1},{2}]", i + 1, MsToMin(time), abundance, time)); + + GetAllMass(allData, startMass, i + 1); + + startBit = startBit + 12; + } + } + + /// + /// 获取所有质谱数据 + /// + /// + /// + /// + private static void GetAllMass(byte[] allData, int startAddr, int sNo) + { + int startBit = startAddr * 2; + int time = GetIntLitter(allData, startBit, 4); + int number = GetIntLitter(allData, startBit + 10, 2); + int maxMass = GetIntLitter(allData, startBit + 12, 2); + int maxAbundance = GetIntLitter(allData, startBit + 14, 2); + OutResult("质谱数据", String.Format("{0,4}:保留时间-{1},质谱点数-{2},最高峰-[{3},{4}]", + sNo, MsToMin(time), number, maxMass, maxAbundance)); + + Dictionary massPoints = new Dictionary(); + string allPoints = ""; + + startBit = startBit + 16; + int mass, abundance; + for (int i = 0; i < number; i++) + { + mass = GetIntLitter(allData, startBit, 2); + abundance = GetIntLitter(allData, startBit + 2, 2); + abundance = abundance / 20; + + massPoints.Add(mass, abundance); + allPoints += string.Format("[{0},{1}] ", mass, abundance); + + startBit = startBit + 4; + } + + OutResult("质谱数据", String.Format("{0,4}:{1}", sNo, allPoints)); + } + + /// + /// 解析结果的输出 + /// + /// + /// + private static void OutResult(string type, string msg) + { + if (string.IsNullOrEmpty(_logFilePath)) + { + string str = string.Format("【{0}】 {1}", type, msg) + Environment.NewLine; + FileHelper.AppendText(_logFilePath, str); + } + } + + /*----------- 对外的公开方法 不测试时,可以私有化 -------------*/ + + /// + /// 在字节数组的指定位置获取数值 + /// + /// + /// + /// 可以为:2,4 + /// + public static int GetIntLitter(byte[] srcArr, int start, int count) + { + byte[] times = new byte[count]; + Buffer.BlockCopy(srcArr, start, times, 0, count); + Array.Reverse(times); + + if (count == 4) + { + int number = BitConverter.ToInt32(times, 0); + return number; + } + else + { + int number = BitConverter.ToInt16(times, 0); + return number; + } + } + + /// + /// 在字节数组的指定位置获取数值 + /// + /// + /// + /// 可以为:4,8 + /// + public static double GetFloatLitter(byte[] srcArr, int start, int count) + { + byte[] times = new byte[count]; + Buffer.BlockCopy(srcArr, start, times, 0, 4); + Array.Reverse(times); + + if (count == 4) + { + double number = BitConverter.ToSingle(times, 0); + return number; + } + else + { + double number = BitConverter.ToDouble(times, 0); + return number; + } + } + + /// + /// + /// + /// + /// + public static double MsToMin(int ms) + { + int sToMs = 60 * 1000; + int m = ms / sToMs; + double mx = (ms % sToMs) / (sToMs * 1.0); + double min = Math.Round(m + mx, 5, MidpointRounding.AwayFromZero); + + return min; + } + } +} diff --git a/dataAnalize/Program.cs b/dataAnalize/Program.cs new file mode 100644 index 0000000..22ca853 --- /dev/null +++ b/dataAnalize/Program.cs @@ -0,0 +1,20 @@ +using System; +using System.Windows.Forms; + +namespace dataAnalize +{ + static class Program + { + /// + /// 应用程序的主入口点。 + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new MainForm()); + } + + } +} diff --git a/dataAnalize/Properties/AssemblyInfo.cs b/dataAnalize/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..aba7e0f --- /dev/null +++ b/dataAnalize/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的常规信息通过以下 +// 特性集控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("dataAnalize")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("dataAnalize")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("c1b83702-cb37-4d03-baca-1efef01050ea")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/dataAnalize/Properties/Resources.Designer.cs b/dataAnalize/Properties/Resources.Designer.cs new file mode 100644 index 0000000..532801c --- /dev/null +++ b/dataAnalize/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.18408 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace dataAnalize.Properties { + using System; + + + /// + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("dataAnalize.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 使用此强类型资源类,为所有资源查找 + /// 重写当前线程的 CurrentUICulture 属性。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/dataAnalize/Properties/Resources.resx b/dataAnalize/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/dataAnalize/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/dataAnalize/Properties/Settings.Designer.cs b/dataAnalize/Properties/Settings.Designer.cs new file mode 100644 index 0000000..216dd68 --- /dev/null +++ b/dataAnalize/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.18408 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace dataAnalize.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/dataAnalize/Properties/Settings.settings b/dataAnalize/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/dataAnalize/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/dataAnalize/app.config b/dataAnalize/app.config new file mode 100644 index 0000000..2fa6e95 --- /dev/null +++ b/dataAnalize/app.config @@ -0,0 +1,3 @@ + + + diff --git a/dataAnalize/dataAnalize.csproj b/dataAnalize/dataAnalize.csproj new file mode 100644 index 0000000..7f510a9 --- /dev/null +++ b/dataAnalize/dataAnalize.csproj @@ -0,0 +1,89 @@ + + + + + Debug + AnyCPU + {413C6A2F-A21C-472B-9669-50BDDCC65F51} + WinExe + Properties + dataAnalize + dataAnalize + v3.5 + 512 + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + Form + + + MainForm.cs + + + + + + MainForm.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + \ No newline at end of file