From e25467da569560460f051506ef8fb05c306e283f Mon Sep 17 00:00:00 2001 From: Vitalik Buterin Date: Thu, 4 Dec 2014 12:09:55 -0500 Subject: [PATCH] Added diff adjustment tests --- diffadjust/blkdiff.py | 47 + diffadjust/hashpower.csv | 2156 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 2203 insertions(+) create mode 100644 diffadjust/blkdiff.py create mode 100644 diffadjust/hashpower.csv diff --git a/diffadjust/blkdiff.py b/diffadjust/blkdiff.py new file mode 100644 index 0000000..f512bf5 --- /dev/null +++ b/diffadjust/blkdiff.py @@ -0,0 +1,47 @@ +import math +import random + +hashpower = [float(x) for x in open('hashpower.csv').readlines()] + +target = 12 +seconds_in_day = 8640 +ema_factor = 0.005 +f = 30 +threshold = 1.5 +maxadjust = 0.1 + + +def expdiff(t): + return -math.log(random.random()) * t + + +def adjust(timestamps, diffs): + if len(timestamps) < 7: + return diffs[-1] + blks_back = 5 + delta = timestamps[-2] - timestamps[-2-blks_back] + expected = target * 0.693 * blks_back + if delta < expected / threshold: + fac = max(1 + 1. * delta / expected / f, 1 + maxadjust) ** 2 + elif delta > expected * threshold: + fac = max(1 - 1. * delta / expected / f, 1 - maxadjust) ** 2 + else: + fac = 1 + return diffs[-1] * fac + + +def test(source, adjust): + ema = target + chain = [0] + d = [source[0]] + emachain = [target] + sourcechain = [0] + while chain[-1] < len(source) * seconds_in_day: + hashpower = source[int(chain[-1] // seconds_in_day)] + d.append(adjust(chain, d)) + chain.append(chain[-1] + expdiff(d[-1] / hashpower)) + ema = ema * (1 - ema_factor) + (chain[-1] - chain[-2]) * ema_factor + emachain.append(ema) + sourcechain.append(hashpower) + print 'min', min(emachain[500:]), 'max', max(emachain[500:]), 'avg', sum(emachain) / len(emachain) + return zip(emachain[500:], sourcechain[500:], chain[500:]) diff --git a/diffadjust/hashpower.csv b/diffadjust/hashpower.csv new file mode 100644 index 0000000..e5dab8b --- /dev/null +++ b/diffadjust/hashpower.csv @@ -0,0 +1,2156 @@ +0.00004971026962962963 +0.0006959437748148148 +0.0015410183585185184 +0.005269288580740741 +0.004424213997037036 +0.0057166810074074075 +0.006263493973333333 +0.006313204242962963 +0.005766391277037038 +0.0053687091200000005 +0.005020737232592593 +0.005915522085925926 +0.005766391277037038 +0.005617260468148148 +0.003728270222222222 +0.0033305880651851843 +0.009892343656296296 +0.009643792308148148 +0.005766391277037038 +0.005120157771851853 +0.005120157771851853 +0.006064652894814814 +0.006014942625185187 +0.0064126247822222215 +0.005766391277037038 +0.006313204242962963 +0.006760596669629629 +0.0061143631644444444 +0.006014942625185187 +0.0064126247822222215 +0.006263493973333333 +0.006661176130370369 +0.006362914512592592 +0.006313204242962963 +0.006512045321481483 +0.005865811816296297 +0.0061640734340740735 +0.007009148017777777 +0.006064652894814814 +0.0061143631644444444 +0.005865811816296297 +0.0061640734340740735 +0.0058161015466666665 +0.006362914512592592 +0.005468129659259259 +0.006014942625185187 +0.0053189988503703715 +0.005517839928888888 +0.0053189988503703715 +0.004772185884444444 +0.0061143631644444444 +0.005070447502222223 +0.005269288580740741 +0.005169868041481481 +0.005269288580740741 +0.005269288580740741 +0.005269288580740741 +0.005865811816296297 +0.005517839928888888 +0.005567550198518519 +0.005617260468148148 +0.005219578311111112 +0.0053687091200000005 +0.005865811816296297 +0.005666970737777777 +0.005766391277037038 +0.005517839928888888 +0.006462335051851852 +0.0057166810074074075 +0.005468129659259259 +0.006064652894814814 +0.005865811816296297 +0.003827690761481482 +0.004722475614814816 +0.006561755591111111 +0.005219578311111112 +0.005766391277037038 +0.005617260468148148 +0.005468129659259259 +0.005915522085925926 +0.005567550198518519 +0.006213783703703704 +0.005617260468148148 +0.0053189988503703715 +0.005965232355555556 +0.005617260468148148 +0.005617260468148148 +0.0064126247822222215 +0.0057166810074074075 +0.004921316693333333 +0.005169868041481481 +0.004921316693333333 +0.005120157771851853 +0.006064652894814814 +0.0057166810074074075 +0.0057166810074074075 +0.006313204242962963 +0.005567550198518519 +0.0061143631644444444 +0.0057166810074074075 +0.006064652894814814 +0.005915522085925926 +0.0058161015466666665 +0.0061143631644444444 +0.006014942625185187 +0.00397682157037037 +0.005617260468148148 +0.006064652894814814 +0.005418419389629629 +0.005219578311111112 +0.0058161015466666665 +0.0061143631644444444 +0.006561755591111111 +0.0061143631644444444 +0.0061143631644444444 +0.005666970737777777 +0.006064652894814814 +0.006561755591111111 +0.006810306939259259 +0.006014942625185187 +0.006064652894814814 +0.004523634536296296 +0.0030820367170370368 +0.005915522085925926 +0.006313204242962963 +0.0057166810074074075 +0.006611465860740741 +0.007108568557037038 +0.005666970737777777 +0.006213783703703704 +0.0061640734340740735 +0.004971026962962963 +0.005169868041481481 +0.004424213997037036 +0.004125952379259259 +0.0003479718874074074 +0.004772185884444444 +0.005567550198518519 +0.005617260468148148 +0.006213783703703704 +0.005120157771851853 +0.0053189988503703715 +0.005120157771851853 +0.005865811816296297 +0.003628849682962963 +0.004424213997037036 +0.004871606423703704 +0.0019387005155555557 +0.0028334853688888884 +0.001193046471111111 +0.0001988410785185185 +0.003579139413333334 +0.004672765345185185 +0.004125952379259259 +0.004623055075555557 +0.004523634536296296 +0.0036785599525925926 +0.0034797188740740737 +0.00407624210962963 +0.003628849682962963 +0.003827690761481482 +0.00402653184 +0.004324793457777778 +0.004175662648888889 +0.003728270222222222 +0.00397682157037037 +0.0037779804918518516 +0.004225372918518518 +0.0036785599525925926 +0.004424213997037036 +0.004225372918518518 +0.0025352237511111113 +0.0037779804918518516 +0.004324793457777778 +0.004125952379259259 +0.003579139413333334 +0.004125952379259259 +0.004424213997037036 +0.00397682157037037 +0.004523634536296296 +0.0031317469866666667 +0.00392711130074074 +0.00402653184 +0.00407624210962963 +0.004175662648888889 +0.0037779804918518516 +0.0037779804918518516 +0.003579139413333334 +0.002286672402962963 +0.0034300086044444446 +0.003231167525925926 +0.00014913080888888887 +0.0025849340207407404 +0.003728270222222222 +0.0036785599525925926 +0.0034300086044444446 +0.0032808777955555556 +0.003728270222222222 +0.0026346442903703703 +0.0006462335051851851 +0.003181457256296296 +0.002187251863703704 +0.001590728628148148 +0.0006959437748148148 +0.0005965232355555555 +0.0011433362014814815 +0.001491308088888889 +0.0007456540444444445 +0.002883195638518519 +0.004523634536296296 +0.004772185884444444 +0.0036785599525925926 +0.00407624210962963 +0.004871606423703704 +0.00407624210962963 +0.0033305880651851843 +0.0033802983348148147 +0.00402653184 +0.003231167525925926 +0.0016901491674074073 +0.0012427567407407407 +0.0008450745837037037 +0.00044739242666666675 +0.0007456540444444445 +0.001193046471111111 +0.000795364314074074 +0.000397682157037037 +0.0005965232355555555 +0.000397682157037037 +0.0027340648296296293 +0.0020878313244444445 +0.001491308088888889 +0.003181457256296296 +0.004125952379259259 +0.004473924266666667 +0.004672765345185185 +0.00392711130074074 +0.0033802983348148147 +0.002982616177777778 +0.0031317469866666667 +0.003529429143703703 +0.003579139413333334 +0.0038774010311111115 +0.0032808777955555556 +0.002883195638518519 +0.003032326447407407 +0.0033802983348148147 +0.003529429143703703 +0.0034797188740740737 +0.00402653184 +0.0027837750992592593 +0.002883195638518519 +0.004125952379259259 +0.00402653184 +0.003529429143703703 +0.00392711130074074 +0.0036785599525925926 +0.0016901491674074073 +0.0013421772800000001 +0.00407624210962963 +0.004971026962962963 +0.004672765345185185 +0.004424213997037036 +0.004374503727407408 +0.004125952379259259 +0.004324793457777778 +0.004225372918518518 +0.003728270222222222 +0.002883195638518519 +0.003032326447407407 +0.002883195638518519 +0.002038121054814815 +0.0025352237511111113 +0.0034797188740740737 +0.0038774010311111115 +0.003827690761481482 +0.00392711130074074 +0.0030820367170370368 +0.0025352237511111113 +0.0027837750992592593 +0.004225372918518518 +0.003231167525925926 +0.0027340648296296293 +0.003181457256296296 +0.004921316693333333 +0.005517839928888888 +0.004125952379259259 +0.004275083188148147 +0.004324793457777778 +0.003728270222222222 +0.003628849682962963 +0.003231167525925926 +0.0032808777955555556 +0.003181457256296296 +0.0024855134814814814 +0.003032326447407407 +0.0022369621333333334 +0.001491308088888889 +0.0016404388977777778 +0.0028334853688888884 +0.0030820367170370368 +0.003181457256296296 +0.002435803211851852 +0.0037779804918518516 +0.0034797188740740737 +0.003231167525925926 +0.003529429143703703 +0.0034300086044444446 +0.0034797188740740737 +0.0034797188740740737 +0.004125952379259259 +0.004772185884444444 +0.004971026962962963 +0.004523634536296296 +0.00392711130074074 +0.003628849682962963 +0.00407624210962963 +0.003827690761481482 +0.004971026962962963 +0.004772185884444444 +0.005070447502222223 +0.004225372918518518 +0.0038774010311111115 +0.003728270222222222 +0.0038774010311111115 +0.002883195638518519 +0.0036785599525925926 +0.0032808777955555556 +0.004871606423703704 +0.004225372918518518 +0.002435803211851852 +0.0025849340207407404 +0.005219578311111112 +0.004672765345185185 +0.005915522085925926 +0.004672765345185185 +0.005120157771851853 +0.006213783703703704 +0.005020737232592593 +0.005169868041481481 +0.0053687091200000005 +0.005766391277037038 +0.005915522085925926 +0.008003353410370371 +0.009942053925925926 +0.011135100397037037 +0.008699297185185188 +0.00929582042074074 +0.007555960983703703 +0.008401035567407407 +0.007158278826666668 +0.007804512331851852 +0.007903932871111111 +0.008401035567407407 +0.006860017208888889 +0.00815248421925926 +0.009173151748090925 +0.008820338219318198 +0.006997468320659102 +0.007644293123409104 +0.009584767531659107 +0.011172428411136383 +0.012230868997454562 +0.009290756257681831 +0.009349558512477287 +0.008820338219318198 +0.008702733709727286 +0.011231230665931837 +0.009055547238500015 +0.010769248413842422 +0.01025024849028375 +0.01025024849028375 +0.008822998700497405 +0.008693248719607735 +0.007979623824714566 +0.008433748757828404 +0.007720123862935231 +0.00908249866227674 +0.011547748299180429 +0.009731248566725078 +0.009796123557169915 +0.009406873614500912 +0.0135648225052015 +0.013498000719461596 +0.011827456075963872 +0.011560168933004236 +0.012896604647802415 +0.012027921433183599 +0.013765287862421233 +0.011961099647443688 +0.00948869357506706 +0.016237693934797858 +0.01543583250591895 +0.02214934972786334 +0.017267452236824077 +0.018713940382317194 +0.01907556241869047 +0.01889475140050383 +0.014374475945837841 +0.016092180618610914 +0.0169058302004508 +0.020250834036903625 +0.018623534873223876 +0.023246091421507655 +0.021989545939264003 +0.02915185518805284 +0.02877489154337974 +0.02249216413216146 +0.02789530970580918 +0.02689007332001426 +0.03204190979721324 +0.03153929160431578 +0.035713053625946366 +0.027818589140210855 +0.03195378482321516 +0.032517675143624844 +0.030450077302122687 +0.03496119986540012 +0.03684083426676572 +0.027818589140210855 +0.03420934610485388 +0.03289360202389797 +0.03439730954499045 +0.032517675143624844 +0.03063281618934752 +0.03333571173546643 +0.03356095303097633 +0.0328852291444466 +0.02657847287016918 +0.0355881246905655 +0.028155161938738533 +0.02792992064322862 +0.03063281618934752 +0.027704679347718718 +0.03513764209954569 +0.029957092302817796 +0.0434715700334123 +0.0407686744872934 +0.040167579814159166 +0.04652177323108828 +0.039486773376631035 +0.04220999912674352 +0.044252418439327874 +0.039486773376631035 +0.04402548296015184 +0.04357161200179976 +0.04788338610614454 +0.04697564418944038 +0.05717452188839274 +0.0447715832776832 +0.050216775838482504 +0.050216775838482504 +0.050216775838482504 +0.04386405118421664 +0.058384564679681464 +0.05898958607532583 +0.05354439351452653 +0.07260256747732412 +0.07230005677950191 +0.08435315508652319 +0.0641394958031167 +0.07774484339771721 +0.08007718869964876 +0.0785222918316944 +0.08163208556760307 +0.10301191750197533 +0.08435315508652319 +0.07968846448266013 +0.08590805195447752 +0.10087127867660567 +0.08548413447169972 +0.0837744517822657 +0.096312124838115 +0.09688201906792633 +0.09688201906792633 +0.09973149021698302 +0.0906131825400017 +0.08719381716113371 +0.09289275945924703 +0.09688201906792633 +0.09118307676981305 +0.08303572664384576 +0.09325550838462676 +0.09644919017862084 +0.08367446300264457 +0.0945329811022244 +0.0907005629494315 +0.08750688115543745 +0.07345468126186354 +0.07728709941465645 +0.08303572664384576 +0.07664836305585762 +0.06770605403267421 +0.06131869044468609 +0.09197803566702913 +0.10730770827820067 +0.10347529012540778 +0.10776489276111513 +0.10894265115194697 +0.11306480551985848 +0.12660902701442486 +0.11188704712902664 +0.12660902701442486 +0.12484238942817708 +0.11483144310610627 +0.12896454379608857 +0.16274936049292293 +0.12474697174838255 +0.1255731106341334 +0.10987647180486673 +0.10987647180486673 +0.1297038050628878 +0.10987647180486673 +0.11483330511937201 +0.12474697174838255 +0.12887766617713695 +0.13052994394863868 +0.1338344994916422 +0.13796519392039655 +0.1387913328061475 +0.11837326941803425 +0.13911019252776288 +0.1313338463616146 +0.16935153872945044 +0.12701365404708784 +0.12355750019546642 +0.1278776925099932 +0.1365180771390468 +0.14947865408262717 +0.13997423099066825 +0.1365180771390468 +0.1477505771568165 +0.17556041368173025 +0.14662188395397255 +0.15723267818748368 +0.153374207557116 +0.15723267818748368 +0.15530344287229988 +0.17748964899691413 +0.2006404727791203 +0.16880809007858688 +0.19292353151838493 +0.17941888431209801 +0.16977270773617878 +0.19626664397521398 +0.1799110903106128 +0.18458410564335598 +0.22079997447211572 +0.2278094974712305 +0.20678092847388616 +0.5993142164243142 +1.6785692506550491 +1.2950252014462342 +1.4078322747429448 +5.396690386514621 +1.651495553063839 +1.6153972896088917 +1.480028801652839 +1.6063727237451544 +1.8229623044748384 +1.6875938165187863 +1.750765777564944 +1.6695446847913127 +1.9312570948396806 +2.3463871245715744 +2.1244834042325027 +1.9666646370609449 +2.1244834042325027 +2.209462740401802 +2.294442076571103 +2.6829190419164743 +3.0835359124288897 +2.767898378085774 +2.767898378085774 +2.96213686075846 +2.8184706135946116 +2.4858560691331353 +3.361157501926493 +3.308639415958892 +3.6237479317645005 +3.7988082183231717 +3.8163142469790388 +3.7988082183231717 +4.569073479181326 +6.996110103731181 +2.9510864437556985 +3.3326924494137624 +3.383573250168171 +3.5616560528086008 +4.248546862993116 +4.681033669405589 +5.062639675063654 +5.520566881853332 +5.21528207732688 +5.7749708856253745 +5.291603278458492 +5.515994626844949 +5.54698336070363 +4.89621994967136 +4.617321344943244 +5.423028425268913 +5.454017159127591 +4.679298812660604 +4.958197417388719 +5.54698336070363 +5.020174885106078 +5.237096022116833 +4.679298812660604 +5.386530222428546 +5.35109252359678 +6.059846500232116 +5.740907210746213 +6.485098886213315 +5.8117826084097475 +6.910351272194516 +6.66228738037215 +6.733162778035684 +7.65454294766162 +8.39873462312872 +9.581378861136807 +9.627004474761266 +8.075733611529595 +7.8932311570317495 +9.672630088385727 +11.2239009516174 +9.216373952141119 +8.988245884018813 +10.858896042621712 +9.855132542883572 +11.602605542980458 +9.242753568136976 +10.22602522432176 +7.1451073682761015 +7.93172469322393 +10.094922336830455 +8.062827580715233 +9.963819449339152 +11.340399767997848 +10.160473780576107 +10.029370893084803 +11.274848324252195 +10.81598821803263 +10.96034426259668 +11.576863627367741 +13.152413115116016 +12.67289805362741 +16.372014242253787 +19.317606762826642 +17.879061578360833 +16.646022848818706 +16.029503484047645 +24.891029749603163 +16.34475344072654 +18.58815097180665 +20.190577779721025 +22.43397531080113 +25.85248583435179 +22.64763221852305 +22.96811758010592 +25.10468665732508 +25.638828926629866 +27.971775549216243 +28.893921995893702 +25.820100506968842 +30.891905963694864 +29.354995219232432 +33.658345303727245 +31.04559703814111 +38.11538646266829 +40.11337043046945 +54.12080801265033 +43.52214977683963 +52.31678107889531 +38.56107570901336 +49.38523731154342 +53.66980127921158 +49.83624404498218 +40.81610937620711 +56.37584167984409 +59.307385447195976 +56.66499363772254 +39.25586908637404 +46.08297675356953 +54.61686133756389 +49.15517520380751 +63.150745921558254 +51.886018270685696 +69.29514282203418 +62.4680351548387 +56.66499363772254 +72.36734127227216 +84.32954552237283 +71.07775979742854 +77.50286802770457 +77.1012987633123 +87.94366890190311 +95.5734849253559 +96.3766234541404 +93.56563860339465 +92.76250007461013 +100.39231609806292 +91.35753173855609 +104.75663639354433 +105.97473681672506 +92.57563216173685 +99.27518448923097 +109.01998787467694 +113.28333935580956 +105.36568660513471 +96.22993343127908 +112.0652389326288 +96.83898364286945 +119.98289168330368 +113.76183538106389 +102.96166113602622 +108.00174245037712 +116.64188184640732 +105.84170760136959 +115.92187023007146 +121.68196316075823 +123.84199800976575 +115.20185861373562 +118.08190507907898 +128.16206770778084 +129.60209094045257 +132.94599185813476 +115.11177343814109 +121.59694377268424 +119.16500489723056 +116.7330660217769 +155.64408802903586 +123.21823635632005 +135.37793073358847 +131.324699274499 +135.37793073358847 +149.96956398631056 +141.05245477631374 +157.64492714000815 +158.561467414078 +158.561467414078 +142.98028275489114 +162.22762851035725 +153.97876604372894 +163.14416878442705 +150.31260494744967 +155.81184659186852 +164.9772493325667 +142.98028275489114 +178.72535344361393 +175.07862584030454 +178.36135007481022 +164.13621172528548 +179.4555914863121 +164.13621172528548 +195.86921265884067 +177.2671086633083 +163.04197031378357 +207.9058681853616 +200.24617830484829 +191.49224701283308 +225.4137307693921 +222.28619882233735 +236.50217665399856 +244.25634638035916 +246.84106962247935 +245.54870800141924 +263.64177069626066 +240.37926151717883 +273.9806636647414 +298.53553446488337 +310.1667890544243 +391.4850548976392 +318.98782250918754 +340.73699222572304 +337.1121306063004 +384.23533165879394 +440.42068675984416 +387.8601932782166 +402.3596397559069 +454.9201332375344 +748.8732522949807 +461.48277908952673 +359.2380915068173 +467.00951895886243 +505.69669804421204 +549.9106169988971 +732.2930326869738 +746.1098823603129 +649.3919346469389 +533.3303973908903 +598.4337929453174 +450.7191225347644 +511.3200129596067 +518.895124262712 +450.7191225347644 +443.1440112316591 +367.3928982006062 +552.9831251266856 +496.1697903533961 +522.6826799142646 +412.8435660192379 +473.44445644408023 +587.0711259906594 +477.2320120956328 +560.558236429791 +575.7084590360016 +613.584015551528 +483.475502411536 +524.6223536806028 +558.9113964048253 +528.0512579530251 +534.9090664978695 +692.6386630292927 +600.0582476738924 +648.0629074878036 +572.6270134945141 +617.2027690360035 +692.6386630292927 +568.9859598636722 +663.1347158123373 +638.5741707822508 +650.8544432972939 +687.6952608424239 +630.3873224388886 +683.6018366707426 +822.7782585078999 +667.2281399840183 +552.6122631769477 +683.6018366707426 +728.6295025592348 +716.137288756555 +647.2779340684247 +661.0498050060507 +757.4529015694329 +794.1778907364358 +780.4060197988097 +725.3185360483053 +863.037245424566 +885.9903636539428 +872.218492716317 +729.909159694181 +927.305976466821 +1008.5704008129975 +1068.5394516721487 +970.408277538992 +1128.5085025313 +1014.0221327092839 +1242.9948723533155 +1084.8946473610083 +1193.9292852867377 +1123.0567706350132 +1357.4812421753318 +1565.042355954783 +1463.3146028177223 +1283.334731882922 +1572.867567734557 +1940.652521383931 +1784.1482857884525 +1752.8474386693567 +2034.5550627412179 +2214.5349336760178 +2196.4164632871693 +2718.2170595377124 +2584.7331860782715 +3082.2639871543706 +3361.366631660475 +3579.7947882304693 +3543.390095468804 +3858.8974327365736 +4280.335327405187 +3350.767554281838 +3739.88894768231 +3307.5318439040084 +3242.678278337263 +3847.978223626885 +4107.392485893866 +4388.424603349762 +4669.456720805659 +4496.513879294339 +7049.780324261829 +4765.651499200996 +5160.4391973596585 +5978.213714974031 +6373.0014131326925 +6542.196140914977 +6711.390868697262 +6908.784717776592 +6344.8022918356455 +12293.407699783447 +8762.322509420115 +7846.855978585179 +8805.916153745591 +9547.008107278638 +10113.725483509788 +10070.131839184314 +11770.283967877771 +10375.287349462631 +16454.404924541668 +10352.563098357465 +10626.80318043316 +10969.603283027778 +10489.683139395313 +12135.12363184948 +12409.363713925175 +12340.803693406251 +11998.003590811635 +10969.603283027778 +11243.84336510347 +10352.563098357465 +10695.363200952082 +10567.001865081213 +11421.685839462782 +12276.369813844349 +11188.590210085991 +11577.082925713976 +11188.590210085991 +14218.83339198428 +11965.57564134196 +12509.465443221143 +12354.068356969947 +13131.053788225918 +11887.877098216364 +12742.56107259793 +12019.848738804129 +13028.507374228251 +12019.848738804129 +12187.958511374816 +14793.659986220466 +13196.617146798937 +14205.275782223061 +15129.87953136184 +14037.16600965237 +13532.836691940314 +12776.342715372222 +14121.220895937719 +16431.11686929297 +13802.13817020609 +14928.843326957609 +12487.648820662656 +12957.109302642453 +11642.619953099018 +12112.080435078813 +12112.080435078813 +12487.648820662656 +15586.08800172933 +12675.433013454576 +12863.217206246498 +12018.188338682856 +11548.727856703057 +13426.569784622256 +12675.433013454576 +11579.281931454938 +14182.376319146357 +12117.85318408075 +13015.471938457102 +13015.471938457102 +15798.090077023795 +15259.51882439798 +11758.805682330212 +11489.520056017303 +13823.328817395819 +11758.805682330212 +10232.85379989041 +11220.2344297044 +13913.09069283345 +13344.420974986162 +11223.453402802934 +14316.53111223681 +12549.05813541745 +11135.079753961963 +13609.541921509064 +13256.047326145193 +12990.92637962229 +11046.706105120997 +12372.310837735513 +12637.43178425842 +12195.56354005358 +11488.574349325836 +12018.816242371642 +13263.925230209254 +12914.874566256378 +10995.095914515565 +10733.30791655091 +14572.865220032534 +10646.045250562689 +12129.51057236241 +12914.874566256378 +13089.399898232814 +11693.197242421315 +10820.570582539129 +12391.298570327064 +11954.985240385973 +11867.722574397754 +11605.934576433097 +11252.954012115648 +10329.204055897202 +11420.908549609912 +11001.022205874257 +10917.044937127122 +10917.044937127122 +11504.885818357045 +11168.976743368517 +10749.09039963286 +10833.06766837999 +10329.204055897202 +9909.317712161543 +8901.590487195961 +9993.294980908675 +7641.931455988985 +11168.976743368517 +10290.799068415286 +8977.080038404823 +8247.236132843456 +9269.017600629375 +9633.939553410057 +7517.39222728209 +10071.845896746878 +6860.532712276858 +7663.361008394362 +8977.080038404823 +9487.97077229778 +7955.298570618909 +8393.20491395573 +7444.407836725952 +8685.14247618028 +7079.485883945267 +9998.861506190742 +8734.364860003867 +9033.486944250575 +7597.700939866378 +8554.891609455843 +8973.662527401231 +8854.013693702549 +7836.998607263745 +8076.296274661109 +10110.32644753872 +8674.540443154525 +7298.578855619669 +8076.296274661109 +8794.189276853207 +8136.120691510451 +10255.333551313717 +7884.15816372673 +8595.510780002827 +7765.599394347381 +7647.040624968031 +7587.761240278357 +8002.7169331060795 +8002.7169331060795 +7765.599394347381 +6639.2910852435625 +7706.320009657707 +7528.481855588683 +6757.849854622912 +7350.643701519658 +8239.834471864779 +7916.086499513548 +10030.657550753469 +8512.503975504296 +8132.965581692002 +7428.108564612029 +8675.163287138135 +8620.943516593521 +7970.30627005816 +8349.844663870455 +8187.1853522366155 +8512.503975504296 +7861.866728968936 +7265.449252978187 +7406.8274447919275 +8268.086450000294 +7062.3238427085835 +7119.741109722475 +8382.920984028075 +8440.338251041965 +8670.00731909753 +7751.331046875276 +8899.676387153091 +7923.582847916949 +8727.424586111421 +7579.079245833603 +9990.60446041702 +9875.769926389237 +9168.0048812832 +8649.061208757736 +8072.4571281738845 +7380.532231473268 +9283.32569739997 +8591.40080069935 +8764.382024874507 +9340.986105458354 +8879.702840991275 +8476.07998458258 +9802.269369925434 +10436.533858567667 +9283.32569739997 +10010.25621817098 +9077.623651260641 +9450.676678024774 +10321.133740474428 +7709.762553125475 +9948.080713710291 +9201.974660182019 +9823.72970478891 +9823.72970478891 +8828.921633417882 +8455.868606653747 +8580.219615575126 +11129.41529846339 +8450.978823032423 +11116.287528758035 +8776.016470072133 +10076.167058230967 +8450.978823032423 +9036.0465877039 +10076.167058230967 +10596.227293494498 +10791.249881718326 +10271.18964645479 +8776.016470072133 +10596.227293494498 +10401.204705270677 +11247.553976335974 +9327.2398828152 +10150.231637181249 +9807.318406195394 +9052.909298026518 +9875.901052392566 +10081.648990984075 +9464.405175209542 +10973.223391547293 +10081.648990984075 +9327.2398828152 +9738.735759998222 +8847.161359435006 +9738.735759998222 +12001.963084504856 +10741.368022074928 +9988.788096961398 +8757.293674048347 +10741.368022074928 +11493.947947188457 +9920.371740132894 +11425.531590359953 +10399.286237932416 +10809.784378903427 +10262.453524275406 +12725.442370101506 +10672.951665246424 +9897.222875271189 +8855.409941032118 +9673.977246505674 +9822.807665682687 +11013.451019098768 +11087.866228687271 +11608.77269580681 +12352.924791691861 +12873.831258811395 +9897.222875271189 +12576.170420457374 +11311.111857452788 +10269.298923213717 +9599.562036917167 +10650.728196703265 +12810.666082747979 +11618.976214585378 +11767.937448105702 +11023.131280504076 +12065.859915146353 +11618.976214585378 +9682.480178821148 +12810.666082747979 +12438.262998947166 +11321.053747544729 +11023.131280504076 +11842.418064865864 +11239.041285218553 +12128.46181858117 +13179.59517619154 +12128.46181858117 +10268.764339732063 +10349.620751855935 +11400.754109466301 +9621.913042741064 +9945.33869123656 +10673.046400351432 +11805.036170085674 +12209.318230705047 +11562.466933714051 +11562.466933714051 +11158.18487309468 +9883.251607977565 +10432.321141754099 +9177.305064550601 +10432.321141754099 +11138.267685181068 +9569.497588676693 +12236.406752734132 +12157.968247908913 +11530.460209307163 +11687.337218957598 +11608.898714132383 +9647.93609350191 +10824.513665880197 +12079.529743083694 +9883.251607977565 +11698.814299940319 +12448.738293526236 +12673.71549160201 +13423.639485187929 +11548.829501223136 +12448.738293526236 +11623.821900581725 +11698.814299940319 +12898.692689677786 +12823.700290319195 +13948.586280698071 +14129.94690535053 +12406.78264860047 +10597.460179012902 +11803.675158737948 +11372.88409455043 +12320.624435762966 +11286.725881712926 +9649.719837800363 +10166.669114825385 +12406.78264860047 +12579.099074275475 +12234.466222925459 +11372.88409455043 +10080.51090198788 +10425.143753337894 +11631.358733062938 +9174.760781108336 +10677.523322841602 +12971.213518118684 +10914.801618904748 +10756.616088195982 +9491.131842525867 +11547.543741739806 +11943.007568511717 +12338.471395283626 +12496.656925992389 +11943.007568511717 +10756.616088195982 +13366.677344890595 +9965.688434652158 +11705.729272448567 +13142.93301057242 +13379.033603576716 +12119.830440887145 +11018.027673533765 +12749.43202223193 +11490.228859542354 +12513.331429227635 +12592.031626895736 +12828.13221990003 +12355.93103389144 +14323.435975593897 +11672.62012997733 +10471.026881303194 +12101.760575932378 +13904.150448943585 +12015.932486741367 +13131.697646224497 +12702.557200269448 +13904.150448943585 +11586.79204078632 +12015.932486741367 +12187.588665123387 +11844.27630835935 +13818.322359752578 +12445.07293269642 +13843.37907413583 +11927.94297582773 +13320.987410960892 +14801.097123289881 +13408.052688156717 +14365.77073731077 +13146.856856569248 +11927.94297582773 +13146.856856569248 +14017.50962852748 +12972.7263021776 +12972.7263021776 +12885.66102498178 +16421.85025608073 +14009.601065921976 +13267.370545873131 +12896.255285848707 +13916.822250915868 +12896.255285848707 +13916.822250915868 +14937.389215983038 +14287.937510940294 +16514.62907108683 +15586.840921025776 +15772.398551037984 +13452.928175885341 +18730.04175867601 +13465.38137245356 +14275.329124180089 +15591.494220735703 +17515.120131086212 +15186.520344872439 +14680.30300004336 +14275.329124180089 +15085.276875906622 +17211.389724188764 +16097.711565564783 +16603.928910393864 +15996.468096598965 +18405.542938256647 +16663.006328717558 +17752.091709679487 +18623.360014449037 +16771.91486681375 +15573.920947755629 +16118.463638236593 +17207.549019198526 +20583.713700180517 +19712.44539541097 +16227.372176332785 +17969.908785871874 +16989.73194300614 +15893.575269775467 +21353.20036244643 +18077.425306843856 +18198.750308903203 +20139.95034185288 +19169.35032537804 +17349.475294487725 +19775.975335674815 +18562.72531508127 +21838.500370683843 +15529.6002635974 +21838.500370683843 +24909.46412539746 +23034.558223485816 +18749.059019116365 +20490.04307089145 +19284.746419662548 +21159.65232157418 +18882.980869252908 +19418.668269799095 +21695.339722120367 +19150.824569526005 +20088.277520481814 +23570.245624032006 +22364.94897280309 +19150.824569526005 +20929.447944362895 +23207.483094769734 +24488.87786687358 +21214.202338163745 +22210.842716466745 +21214.202338163745 +20359.939156761182 +20359.939156761182 +23349.86029167016 +23919.369079271877 +21641.333928865028 +21071.82514126332 +19363.298778458182 +20954.797401613356 +20347.411969682526 +20651.10468564794 +21562.182833544168 +20802.951043630652 +25206.49542512911 +22017.721907492294 +22625.107339423117 +20954.797401613356 +22928.800055388525 +22169.568265474994 +20954.797401613356 +23839.87820328476 +23080.646413371232 +21534.35777796887 +23672.520961596983 +24283.424728347876 +21076.179952905706 +24130.698786660152 +25352.506320161938 +20923.454011217982 +23825.24690328471 +21076.179952905706 +24588.87661172332 +27185.217620414598 +25810.6841452251 +24130.698786660152 +24474.80663994312 +22832.202167463714 +22175.160378471955 +23817.76485095136 +23489.24395645548 +26281.671559670463 +25131.848428934878 +22339.42082571989 +25788.890217926644 +26610.192454166347 +23817.76485095136 +26281.671559670463 +21682.379036728133 +23612.18752542136 +22774.875911044717 +24114.57449404735 +22774.875911044717 +23612.18752542136 +23612.18752542136 +26626.50933717728 +20597.86571366544 +26626.50933717728 +25789.197722800636 +24616.96146267333 +24282.036816922675 +27128.896305803264 +23612.18752542136 +27180.90557096034 +25984.261929471522 +28890.39648737294 +28206.600120807903 +22052.432821722537 +27351.854662601607 +25813.312837830264 +25642.363746189003 +18975.34917217986 +20513.890996951202 +24445.72010470019 +21197.68736351624 +23078.127371570106 +22223.381913363803 +24274.771013058922 +24292.233661730887 +21611.711326643333 +22784.43984824414 +17423.395178069048 +19768.852221270656 +19266.254283441733 +21109.113388814418 +21109.113388814418 +23957.168369844938 +18093.525761840934 +20271.450159099568 +24124.701015787912 +23119.50514013008 +21276.646034757396 +20606.515450985506 +24124.701015787912 +23847.084879835766 +26068.862974230407 +19847.884309925415 +23698.96634020946 +24883.914657219928 +24291.440498714688 +23106.492181704223 +23698.96634020946 +20884.71408730958 +22069.662404320054 +21032.83262693589 +24735.796117593618 +23261.18198683824 +21645.822126641135 +23584.25395887766 +19545.854308384914 +19222.782336345495 +19707.390294404617 +24876.54184703534 +20515.07022450317 +19868.92628042433 +19868.92628042433 +20191.99825246375 +22776.574028779112 +21322.750154601723 +23584.25395887766 +20676.606210522878 +21645.822126641135 +23907.325930917083 +20513.428489587084 +22136.793334086775 +22431.950578541273 +21841.63608963229 +23907.736800813716 +21398.900222950553 +28039.93822317659 +22579.529200768513 +23760.158178586476 +24350.47266749545 +25973.837511995156 +28005.767174802582 +25074.931075113946 +24097.985708551067 +24749.282619592985 +22144.094975425298 +26703.17335271874 +25889.052213916344 +23283.864569748665 +25563.403758395383 +26703.17335271874 +28657.06408584451 +30773.779046730753 +30285.30636344931 +29220.336385810424 +30127.80024872379 +31398.249656802505 +35754.07619878667 +29220.336385810424 +29401.82915839309 +29764.814703558437 +35391.090653621315 +28131.37975031438 +36843.0328342827 +31035.26411163716 +34306.27040628332 +32569.24405659809 +33003.5006440194 +37997.45139936445 +32569.24405659809 +35174.783581125936 +33003.5006440194 +31700.730881755477 +36911.80993081116 +40168.734336470974 +40385.86263018163 +25621.138657857166 +33437.75723144071 +44580.90169472018 +40966.23398974286 +42412.10107173379 +48918.502940692946 +43135.03461272926 +47472.63585870204 +45062.85738871716 +53738.0598806627 +54220.01557465967 +50605.347869682366 +72228.7385885214 +45267.78086653876 +51924.80746455917 +41939.26756752854 +59580.38805228263 +60578.94204198569 +55253.32076356937 +52257.65879446019 +72561.58991842243 +58248.98273267855 +59247.5367223816 +53256.212784163254 +54925.472865525975 +64079.71834311364 +61791.15697371672 +64461.145238013116 +64079.71834311364 +70182.5486615054 +62554.01076351569 +65986.85281761106 +60646.876289018255 +62172.5838686162 +61028.30318391775 +69801.12176660592 +74501.15066424302 +72716.69196569828 +55764.33432952322 +64686.62782224694 +77623.95338669632 +72270.57729106209 +70932.23326715353 +78070.06806133252 +70932.23326715353 +76731.72403742393 +70932.23326715353 +74501.15066424302 +80746.7561091496 +74633.39017917754 +70626.22829036263 +72128.91399866821 +73631.59970697381 +77137.86635968684 +77137.86635968684 +81645.9234846036 +88157.56155392782 +81645.9234846036 +83148.60919290919 +83649.50442901105 +87656.66631782598 +89159.35202613153 +100101.88526765954 +81749.87296858862 +81749.87296858862 +80637.62979894796 +89535.57515607329 +81749.87296858862 +85642.72406233095 +76744.77870520567 +82862.11613822929 +92316.18308017492 +89535.57515607329 +90091.6967408936 +103913.69215821098 +97268.04905506961 +103913.69215821098 +97872.19842808245 +101497.09466615958 +102101.24403917242 +112371.78338039096 +119621.57585654521 +123246.47209462234 +126267.21895968661 +126871.36833269947 +156703.56208219207 +138085.31708232765 +124897.39354075704 +130327.71499905082 +129551.95479072313 +139636.837498983 +136533.7966656723 +155152.04166553667 +149721.7202072429 +133430.75583236152 +136533.7966656723 +145067.1589572768 +148049.40044623762 +140358.52250097855 +120169.96789467342 +140358.52250097855 +166315.235566228 +165353.87582307056 +169199.3147957002 +137474.44327150637 +142281.2419872933 +181696.99145674618 +159585.7173641263 +161508.43685044107 +170754.1790257701 +173935.93391444904 +162269.49932262627 +166511.8391741982 +185602.36850627186 +180299.44369180696 +187723.53843205783 +199389.97302388056 +198329.38806098772 +197268.80309809468 +213177.5775414894 +181360.02865469994 +249708.21205766973 +214592.99473705995 +196385.10427452155 +211991.86752812588 +222396.37636386216 +213292.4311325929 +219795.24915492805 +223696.93996832913 +219795.24915492805 +243205.39403533464 +253609.9028710708 +279682.5502044249 +225299.83210911998 +239283.95961934124 +212869.49654447896 +276574.96631326457 +256375.67102072274 +275021.1743676844 +257929.46296630293 +287451.50993232545 +309204.59717044747 +287451.50993232545 +295220.4696602263 +332726.00314468844 +317855.56724995375 +356890.4614736323 +351314.0480131068 +327149.589684163 +375478.5063420507 +386631.33326310164 +369902.09288152517 +397784.1601841527 +425666.2274867802 +484952.76558004273 +388972.53072565934 +421807.8742284746 +434436.8524987882 +472323.78730972914 +497581.7438503564 +449591.62642316456 +457169.01338535274 +520313.90473692096 +525365.4960450463 +543046.0656234854 +607932.2985806193 +467388.8101990783 +532757.8745625856 +562173.9535261639 +545831.6874352872 +647153.7371987238 +634079.9243260222 +702717.4419077049 +725596.6144349325 +768086.5062712126 +604663.8453624438 +751934.6930434817 +704398.5917591237 +821078.1130934571 +704398.5917591237 +643898.0992153952 +834042.5043528276 +803792.2580809633 +868614.2143778151 +898864.4606496792 +907507.3881559263 +933436.170674667 +1024579.5805622297 +946196.4432514579 +990986.8074290418 +845418.1238518945 +1091765.126828605 +1080567.5357842091 +1046974.7626510217 +1153351.8775727833 +1237333.8104057526 +1125357.899961793 +1583138.3053526524 +1265031.0757724466 +1302020.2885143312 +1265031.0757724466 +1242837.548127316 +1213246.1779338084 +1449977.1394818686 +1279826.7608692003 +1538751.250062391 +1316815.9736110845 +1560944.7777075216 +1900662.831393844 +1439610.9564517727 +1467838.6222645529 +1721887.6145795714 +1834798.2778306904 +1665432.2829540116 +1853616.7217058775 +2154711.823708863 +2427579.259899067 +2333487.0405231346 +2914669.3794106855 +2382309.6754087335 +2302455.7198084407 +2914669.3794106855 +2874742.401610539 +2675107.512609807 +3313939.157412149 +2808197.438610295 +2781579.4534101966 +3194158.2240117104 +3867201.9124552207 +3439672.0527868047 +3478538.4036657508 +3051008.543997335 +3808902.3861368005 +4061533.6668499545 +3692303.3334999597 +4216999.070365743 +3808902.3861368005 +3886635.0878946935 +3303639.8247104893 +4114549.7162497872 +3911362.075941156 +3377994.520130998 +3606580.6154782083 +4266940.446481261 +4952698.732522892 +4800308.002291419 +4774909.547252839 +4292338.90151984 +4139948.1712883664 +4978097.187561471 +5847426.831904994 +4968797.929701653 +4696119.994535098 +4938500.381349813 +4484037.156072224 +5029393.026405332 +4908202.832997973 +5211178.316516367 +5453558.703331083 +4968797.929701653 +5029393.026405332 +5514153.8000347605 +6505609.450413802 +5626473.038195721 +6857264.015301034 +5731969.40766189 +6681436.732857419 +6224285.798504016 +6013293.059571677 +7419911.319120606 +6751767.645834866 +6294616.711481461 +6857264.015301034 +9076027.624300245 +7134389.873828053 +7495624.804148463 +7495624.804148463 +9030873.258010194 +8037477.199629072 +8714792.693979837 +8895410.159140043 +9482416.920910703 +9753343.11865101 +9121181.9905903 +9568753.703050118 +9744865.7343946 +9333937.66125748 +9744865.7343946 +10097089.79708356 +10508017.870220682 +10273201.828428045 +9627457.713498278 +8805601.567224035 +11388578.026943086 +9920977.76573908 +11740802.089632047 +10294911.522975352 +11493634.09756837 +10435937.70822159 +12692356.672161393 +12480817.394292038 +13185948.320523228 +13891079.246754413 +12762869.764784511 +14243644.709870009 +14596210.172985604 +13397487.598392582 +18058648.87470285 +13699664.663567685 +15211965.308247235 +17791772.29034764 +13610705.802115943 +14500294.416633325 +16368430.507119827 +16279471.645668093 +15300924.169698969 +16902183.67583026 +15834677.3384094 +21375126.753939416 +16903799.21867658 +17449083.06444034 +17558139.833593093 +18103423.67935685 +17230969.52613483 +17449083.06444034 +20066445.524106387 +21484183.523092166 +19412104.909189876 +21157013.215633906 +18430593.98681511 +22283133.491096307 +21761890.602415685 +21501269.158075377 +22804376.37977692 +19676919.047693226 +19937540.49203353 +21761890.602415685 +21761890.602415685 +23455929.99062769 +24889347.93449938 +23455929.99062769 +25149969.378839683 +25824939.77097237 +25980511.697303522 +29714237.92925134 +26602799.40262816 +26136083.62363469 +25513795.918310046 +28314090.592270903 +28314090.592270903 +26447227.476297002 +28158518.665939756 +28314090.592270903 +35659963.867798746 +28072737.512947947 +28262418.171819214 +26934653.559720326 +26365611.583106514 +30538586.078274455 +30728266.737145722 +31676670.03150207 +33194115.302472237 +31107628.05488826 +31297308.713759534 +31866350.69037335 +31866350.69037335 +35706231.914056286 +29367847.55061435 +36973908.78674469 +33382157.647460908 +37607747.223088875 +30635524.423302736 +32748319.211116716 +35283672.95649349 +38241585.65943307 +37185188.265526086 +43312293.15018662 +42044616.277498245 +37582750.87299238 +39324997.602203935 +41565029.11119024 +45547307.349388115 +42560598.67073971 +37084966.09321764 +41813921.501077615 +44551737.78983865 +46045092.12916285 +51769617.09657227 +50027370.36736071 +54454168.87705699 +43198279.22090554 +44415132.15670569 +47457264.49620609 +44110918.92275566 +53237315.94125684 +45327771.85855581 +48674117.43200625 +60538433.55605776 +55366808.5789071 +59321580.62025761 +45327771.85855581 +60364106.06763534 +54119543.370983414 +58976425.46837935 +61404866.51707734 +53425703.071355425 +60711026.21744935 +50997262.02265744 +56894904.56949538 +61751786.66689132 +57935665.01893737 +57588744.86912338 +54813383.6706114 +58067924.62807055 +66817885.873396255 +67613336.89569858 +57272473.60576822 +60454277.69497756 +49715688.89389603 +73976945.07411727 +64829258.317640394 +62045179.73958224 +66022434.85109392 +70397415.47375676 +66022434.85109392 +69096596.76360624 +74817971.01791754 +66015856.78051549 +73057548.17043714 +80099239.56035879 +80539345.27222891 +67776279.62799591 +77898711.00100829 +78778922.42474851 +78338816.71287839 +73497653.88230725 +69536702.47547632 +87319120.09901299 +78483256.75566049 +87838876.76626901 +67048610.07602782 +91996930.10431726 +68088123.4105399 +84720336.76273283 +79003013.42291652 +93036443.43882932 +93036443.43882932 +97714253.44413356 +95115470.10785344 +75364716.7521243 +86494362.12419711 +89416468.95271729 +87663204.85560519 +79481305.7357487 +103442581.72961411 +85325519.39278905 +90585311.68412535 +98182789.43827781 +102858160.36391008 +108702374.02095042 +118637537.23791899 +104027003.09531812 +113768842.8586026 +101053501.59793527 +123807270.16965577 +126484184.11926997 +129161098.06888412 +105738101.00976005 +132507240.50590186 +124476498.65705933 +114438071.34600616 +125145727.14446287 +125145727.14446287 +145472743.41577172 +104506281.18949117 +115374934.43319826 +116210984.68271418 +111194683.1856186 +133768039.9225487 +127079637.92642125 +124571487.17787348 +116210984.68271418 +135440140.42158055 +132931989.67303275 +128751738.42545313 +125407537.42738938 +137948291.17012835 +132716120.67349797 +124959983.7510208 +118927432.81131636 +142195843.5787478 +147366601.52706593 +137025085.63042971 +148228394.5184522 +146504808.53567958 +128407155.7165662 +123236397.76824811 +125821776.74240714 +128407155.7165662 +135301499.647657 +130395098.64687596 +149954363.4439074 +126669524.39982238 +138777640.70274657 +162993873.308595 +143434608.5115636 +142503214.9498002 +157405511.93801457 +141571821.3880368 +125738130.838059 +122943950.15276879 +142503214.9498002 +146228789.1968538 +157903329.12391794 +169672521.35675654 +175557117.47317585 +178499415.53138548 +177518649.51198226 +153980265.04630506 +166730223.29854688 +159864861.16272435 +167710989.31795013 +161826393.20153078 +171634053.39556298 +202037799.9970627 +187281346.34363714 +199134596.1122218 +190837321.2742126 +186096021.36677873 +194393296.20478794 +158833546.89903405 +196763946.1585049 +190837321.2742126 +214543820.81138182 +196763946.1585049 +203875896.01965567 +231138370.48740026 +204522695.65842453 +194978303.1943648 +216794057.39793003 +227701934.49971262 +203159211.0207017 +229065419.13743553 +223611480.58654416 +208613149.57159302 +179979972.17941362 +212703603.48476154 +220884511.31109852 +219521026.67337573 +241336780.876941 +252083493.01791033 +219460923.33323961 +250600648.94133443 +280257530.4728533 +274326154.1665495 +240220740.40530282 +256532025.24763823 +259497713.40079013 +232806520.0224231 +223909455.56296748 +241703584.48187876 +241703584.48187876 +260177353.0926775 +220547690.03882593 +239501007.15153757 +237777978.32310924 +261900381.9211058 +249839180.12210757 +255008266.6073925 +242947064.80839422 +246393122.4652509 +306699131.46024233 +275684612.5485324 +260177353.0926775 +225716776.52411097 +247077560.3299994 +276657268.2568303 +248817543.1492248 +257517457.2453515 +266217371.3414782 +243597594.69154862 +255777474.42612612 +260997422.88380215 +233157697.77619657 +294057096.44908375 +233157697.77619657 +240117629.05309802 +243597594.69154862 +297537062.0875345 +255806390.89316687 +291583508.5006027 +271906093.816513 +232551264.4483335 +266539526.1753976 +268328382.0557694 +257595246.77353868 +309472067.30432075 +336304905.5098977 +286216940.85948735 +293372364.3809745 +277272661.45762837 +293372364.3809745 +314993428.4367333 +285462794.5207895 +283494085.59305996 +307118592.725815 +273650540.95441204 +311056010.58127403 +277587958.80987114 +265775705.24349368 +287431503.4485191 +287431503.4485191 +295306339.1594374 +285462794.5207895 +299243757.0148966 +295306339.1594374 +274455576.19439745 +274455576.19439745 +248412346.3365349 +316525409.04171383 +282468877.6891244 +310515432.92066866 +256425647.8312618 +286475528.4364878 +262435623.95230705 +310515432.92066866 +302502131.4259417 +312518758.2943504 +286475528.4364878 +284472203.06280607 +242402370.21548972 +292350973.7544901