Считается, что функция sha256( sha256( BlockHeader ) ), которая используется в алгоритме хэширования bitcoin весьма надежна. Надежна настолько, что существует только один единственный способ подобрать голден нонсе для очередного блока в блокчейне — путем перебора в процессе майнинга.
В настоящее время в блокчейне биткоина уже более 530 тысяч блоков. Этого вполне достаточно, чтобы провести статистический анализ и ответить на вопрос: «действительно ли значения битов в ранее найденных нонсе равновероятно?».
Самый простой статистический анализ можно сделать не на всем блокчейне, а только на последних нескольких тысячах блоков. Для этого потребуется взять эту информацию, например, с сайта btc.com. Этот блокчейн эксплорер имеет достаточно развитое апи, которым и воспользуемся. Напишем вот такой простой скрипт, который с помощью библиотеки requests скачает информацию о последних 2000 блоков. Меня интересует только одно значение — nonce, его я и буду записывать в текстовый файл вместе с номером блока.
import requests
target_blk_num=538800
num_block_for_study=2000
txt=open("bitcoin/nonces.txt","w")
blk_num=target_blk_num-num_block_for_study
print("Fetching blocks from "+str(blk_num) +" to "+str(target_blk_num) )
while blk_num<target_blk_num:
blk_num_=format(blk_num,'d')
url_hash="https://chain.api.btc.com/v3/block/"+blk_num_
block=requests.get(url_hash)
j=block.json()
data=j['data']
nonce=data['nonce']
print(blk_num,format(nonce,'x'))
txt.write("%d " % blk_num)
txt.write("0x%08X " % nonce)
txt.write("%d" % nonce)
txt.write("n")
blk_num=blk_num+1
txt.close()
Нужно запустить скрипт и подождать окончания его работы. Получим вот такой файл с 2-мя тысячами строк:
536800 0x0A75F108 175501576
536801 0x64046EE3 1678012131
536802 0x43842181 1132732801
536803 0x69D1FE65 1775369829
536804 0x5F3A5706 1597658886
536805 0x77E7FC5A 2011692122
536806 0x29FC3572 704394610
536807 0x6FA83F41 1873297217
536808 0xB498D106 3029913862
536809 0xCFCADF12 3486179090
536810 0x3217C81D 840419357
536811 0x0A4DD1A5 172872101
536812 0xC422E8B4 3290622132
536813 0x9512DA88 2501040776
536814 0x5606B5C9 1443280329
536815 0x4EAD3CC6 1319976134
536816 0x421482FF 1108640511
536817 0x15311B34 355539764
536818 0xE2879E05 3800538629
536819 0x41EB3E73 1105935987
536820 0x29ED08CD 703400141
536821 0x8B4FB3F7 2337256439
536822 0x0FF2B634 267564596
536823 0x32E51D55 853876053
536824 0xE09DBAE1 3768433377
536825 0xD97F44E5 3648996581
536826 0x90A4EC5E 2426727518
536827 0xCBF74735 3421980469
536828 0x6D2F10F0 1831801072
536829 0xE595A073 3851788403
536830 0xC8765E94 3363200660
536831 0x09DC9851 165451857
536832 0xC2EFEA16 3270502934
536833 0x7897622F 2023186991
536834 0x706949F8 1885948408
536835 0x1B619051 459378769
536836 0xE707A346 3876037446
536837 0xB3B0D216 3014709782
536838 0x51B8F9E8 1371077096
536839 0xE2207F9D 3793780637
536840 0xD0D15245 3503379013
536841 0x904FE5C5 2421155269
536842 0xFF326B4B 4281494347
536843 0x312BAA45 824945221
536844 0x88702768 2289051496
536845 0xD8924803 3633465347
536846 0xEFAB5E6B 4020985451
536847 0x76779ACB 1987549899
536848 0x81436738 2168678200
536849 0x02896E6A 42561130
536850 0x76D3ED09 1993600265
536851 0x8F2052C7 2401260231
536852 0x6A9984CA 1788445898
536853 0xD541C515 3577857301
536854 0x6AC2384F 1791113295
536855 0x214031F1 557855217
536856 0xF028BB76 4029201270
536857 0xF821479C 4162930588
536858 0xEF9C2E42 4019990082
536859 0x9E02734E 2650960718
536860 0x20C786E9 549947113
536861 0xEB84DD18 3951353112
536862 0x422720B2 1109860530
536863 0xA59EC71A 2778646298
536864 0x2FFF3B42 805256002
536865 0x5D606431 1566598193
536866 0xF4FB4B01 4110109441
536867 0x68AC0CD5 1756105941
536868 0x6C35C2A6 1815462566
536869 0xF38F0409 4086236169
536870 0xABE37AC2 2883812034
536871 0xF60096CA 4127233738
536872 0x8E3B0BA3 2386234275
536873 0x2904FF1A 688193306
536874 0xCE6A1E32 3463061042
536875 0xB110BD24 2970664228
536876 0xF28289CC 4068641228
536877 0x2719E083 656007299
536878 0xD14BF4E7 3511416039
536879 0x046C418A 74203530
536880 0xF239BEC6 4063870662
536881 0x619CDB26 1637669670
536882 0x0FAB9F09 262905609
536883 0xC8A14FC1 3366014913
536884 0x2BDC9BF0 735878128
536885 0x551D0A18 1427966488
536886 0x43BDC8E5 1136511205
536887 0x93236DB3 2468572595
536888 0xA6DF3DD6 2799648214
536889 0xD956E81A 3646351386
536890 0xA292405D 2727493725
536891 0x4ECF97EA 1322227690
536892 0x6C289307 1814598407
536893 0x0FE7B408 266843144
536894 0xD7A54779 3617933177
536895 0x49A575B6 1235580342
536896 0x660B7018 1712025624
536897 0x5A90DE66 1519443558
536898 0x24602343 610280259
536899 0xEA91EE92 3935432338
536900 0x2A7DEBC9 712895433
536901 0x7F8919BF 2139691455
536902 0x85DD793B 2245884219
536903 0x508B343F 1351300159
536904 0xA7541C57 2807307351
536905 0x902EAF9E 2418978718
536906 0x2932BE12 691191314
536907 0x304C8808 810321928
536908 0xB0DC682A 2967234602
536909 0x4F53EFD7 1330900951
536910 0xF042D46A 4030911594
536911 0x84726E0D 2222091789
536912 0xC8667200 3362157056
536913 0x4CCEAD50 1288613200
536914 0x60D8E12E 1624826158
536915 0x40BC2101 1086071041
536916 0x5758F201 1465446913
536917 0x45BD335F 1170027359
536918 0x56E151A9 1457607081
536919 0x11DE7F25 299794213
536920 0x361D50CE 907890894
536921 0xFBC73CE0 4224138464
536922 0x57232881 1461921921
536923 0x83AB7ACF 2209053391
536924 0x8F7E47AF 2407417775
536925 0x6425150A 1680151818
536926 0x596C4C78 1500269688
536927 0xA2B5D934 2729826612
536928 0xBC673E6A 3160882794
536929 0xE8116AB6 3893455542
536930 0x92661734 2456164148
536931 0x65904416 1703953430
536932 0xD2DC8C64 3537669220
536933 0xAC14A926 2887035174
536934 0x98B9F2D6 2562323158
536935 0xB85796F5 3092748021
536936 0x08D3AC55 148089941
536937 0x08532D08 139668744
536938 0x58022FF2 1476538354
536939 0x2C1D0FA9 740102057
536940 0x83668A2B 2204535339
536941 0x938CBC67 2475474023
536942 0x49A14B37 1235307319
536943 0x8FA2492A 2409777450
536944 0x822227E8 2183276520
536945 0xB6AE2123 3064865059
536946 0xE83D8756 3896346454
536947 0xD6437316 3594744598
536948 0x731E7A99 1931377305
536949 0x9F63EDE8 2674126312
536950 0xA9B67DCD 2847309261
536951 0x2B77E7F6 729278454
536952 0x6F3E3B5F 1866349407
536953 0xF1FF973E 4060059454
536954 0x28AC9397 682398615
536955 0x5920CE0A 1495322122
536956 0x916C0AA2 2439776930
536957 0x5CDF71F2 1558147570
536958 0x9A41B702 2587997954
536959 0xB16D4B56 2976729942
536960 0x0C88EE3E 210300478
536961 0x6A6D7474 1785558132
536962 0x7544CFAE 1967443886
536963 0xD14824C2 3511166146
536964 0xA1FF9FFA 2717884410
536965 0xA1CABEE0 2714418912
536966 0xED5BD1E0 3982217696
536967 0x3095185B 815077467
536968 0x87A71339 2275873593
536969 0x877DB48E 2273162382
536970 0x4ABD04F2 1253901554
536971 0xC29C3B16 3265018646
536972 0xF0C21FF7 4039254007
536973 0x4B60F69E 1264645790
536974 0x1297C086 311935110
536975 0xB2DF972E 3000997678
536976 0xA3746A7F 2742315647
536977 0x5690FA49 1452341833
536978 0xDD69D9F1 3714701809
536979 0x16C9F432 382334002
536980 0x776F7186 2003792262
536981 0xE5DC34D6 3856413910
536982 0x07B9F683 129627779
536983 0x37ADFF70 934150000
536984 0x020655F6 33969654
536985 0x828F3054 2190422100
536986 0x6830DB63 1748032355
536987 0xC8BDAD1D 3367873821
536988 0x456172DD 1164014301
536989 0x4EEF786C 1324316780
536990 0x047313AB 74650539
536991 0x4A9C6F2E 1251766062
536992 0x16AE3E21 380517921
536993 0x75E6BBE9 1978055657
536994 0x4DB86F32 1303932722
536995 0x537A470F 1400522511
536996 0x09D57784 164984708
536997 0x225542F8 576013048
536998 0x9285CB22 2458241826
536999 0x8A5D251C 2321360156
537000 0x4EF17C51 1324448849
537001 0xF2EE1FD0 4075691984
537002 0x21F69ED9 569810649
537003 0xA3D38623 2748548643
537004 0x437747C6 1131890630
537005 0x2DAE22B4 766386868
537006 0xA564238C 2774803340
537007 0x9B0DA8F5 2601363701
537008 0x9BF14D85 2616282501
537009 0xEF7EFDCD 4018077133
537010 0x1D3654BE 490099902
537011 0x284DA6AE 676177582
537012 0xCCACDD6D 3433880941
537013 0x85DC2096 2245795990
537014 0x23720223 594674211
537015 0xBD5A6697 3176818327
537016 0x02ABD9F2 44816882
537017 0xCD810703 3447785219
537018 0x2594C210 630506000
537019 0x04D87CA6 81296550
537020 0x21BF189D 566171805
537021 0x0B3E23E2 188621794
537022 0x7852C9A1 2018691489
537023 0xE55F03D2 3848209362
537024 0xE0DE42DC 3772662492
537025 0xDDE9DF00 3723091712
537026 0x9A857C48 2592439368
537027 0x6506143F 1694897215
537028 0x8A1E2D28 2317233448
537029 0x9D56D3A8 2639713192
537030 0xE65D60AE 3864879278
537031 0xCC66C1EE 3429286382
537032 0x21A20619 564266521
537033 0x007C5EA1 8150689
537034 0x726CE93C 1919740220
537035 0x707D5E32 1887264306
537036 0x7AE9C992 2062141842
537037 0x161EA8C2 371108034
537038 0x5DD540CB 1574256843
537039 0x42DA383D 1121597501
537040 0x6A852D47 1787112775
537041 0xE003B830 3758340144
537042 0xA9CE3085 2848862341
537043 0xEFBD3268 4022153832
537044 0xF54E55A9 4115551657
537045 0x7149A940 1900652864
537046 0x701E3E47 1881030215
537047 0x758F5F80 1972330368
537048 0xFA3F88E0 4198467808
537049 0xA0C77A3A 2697427514
537050 0x97D20967 2547124583
537051 0x44CDB6A6 1154332326
537052 0x53281BD2 1395137490
537053 0x49305D48 1227906376
537054 0x843D2581 2218599809
537055 0x9440B117 2487267607
537056 0xC38E9622 3280901666
537057 0x82869D41 2189860161
537058 0x2DD924D9 769205465
537059 0xCE8C480A 3465299978
537060 0xECD53611 3973395985
537061 0xAD78CFBC 2910375868
537062 0xFFE73547 4293342535
537063 0x833FDB8A 2202000266
537064 0x60BB4400 1622885376
537065 0xDE2D780E 3727521806
537066 0x7373797F 1936947583
537067 0xAE525433 2924631091
537068 0x8A91E5AA 2324817322
537069 0x8CC62047 2361794631
537070 0x6092E498 1620239512
537071 0x83370EB6 2201423542
537072 0x19C2F477 432206967
537073 0x3536E714 892790548
537074 0x68FC8978 1761380728
537075 0xB146C1B2 2974204338
537076 0x86A5FF39 2259025721
537077 0xC7006B6A 3338693482
537078 0xA9B14363 2846966627
537079 0x43DA311B 1138372891
537080 0xEEC44C12 4005841938
537081 0x3CB1A0AC 1018273964
537082 0x9E875D82 2659671426
537083 0x5734A4B3 1463067827
537084 0x50449436 1346671670
537085 0x74A2CF44 1956826948
537086 0x161DDBE8 371055592
537087 0x85D01F7A 2245009274
537088 0x6DA2C81C 1839384604
537089 0x6A4E9C84 1783536772
537090 0x898D87F9 2307753977
537091 0xBE49168C 3192460940
537092 0x77CCF6DF 2009921247
537093 0x8BAB207C 2343247996
537094 0xD1C8CDCB 3519598027
537095 0xF85BEAEE 4166773486
537096 0xD3B6A308 3551961864
537097 0x1F830312 528679698
537098 0x6230DB94 1647369108
537099 0x5F9BC800 1604044800
537100 0x77AF542B 2007979051
537101 0x599B39D0 1503345104
537102 0x97121813 2534545427
537103 0x2FE9C1B5 803848629
537104 0xA58C9DC2 2777456066
537105 0xA650952E 2790298926
537106 0xA6DE4F97 2799587223
537107 0xDFF1F9B9 3757177273
537108 0x5980E9F1 1501620721
537109 0x94B2003D 2494693437
537110 0xB6FA8716 3069871894
537111 0x7532A699 1966253721
537112 0x717D6C2E 1904045102
537113 0x10B523B8 280306616
537114 0x25E93A02 636041730
537115 0x78600DE3 2019560931
537116 0xD0A4DFB9 3500466105
537117 0x1965022E 426050094
537118 0x8C2B3EFA 2351644410
537119 0xAF7FD1E9 2944389609
537120 0x420A3B31 1107966769
537121 0xABE37683 2883810947
537122 0x7832BBEB 2016590827
537123 0xC83E2CEB 3359517931
537124 0x8EA76ED7 2393337559
537125 0xE4655C3C 3831847996
537126 0x91DA6CBB 2447011003
537127 0x69A5ABC4 1772465092
537128 0x9879C300 2558116608
537129 0x02A7C845 44550213
537130 0x4622E285 1176691333
537131 0x352397C3 891525059
537132 0x9E2D2803 2653759491
537133 0xACB24867 2897365095
537134 0xCC4D68A9 3427625129
537135 0x005CD031 6082609
537136 0x228665C3 579233219
537137 0xB8C5D596 3099973014
537138 0x1B1599A4 454400420
537139 0xC33197EC 3274807276
537140 0x028C60A4 42754212
537141 0x0ADF69A2 182413730
537142 0xEE31513C 3996209468
537143 0x711A3D10 1897544976
537144 0x190F447D 420430973
537145 0x4A34F6CE 1244985038
537146 0xB8CF8EC1 3100610241
537147 0x096E8D7B 158240123
537148 0x4A41FA12 1245837842
537149 0x6F94338A 1871983498
537150 0x49582F6E 1230516078
537151 0x181CCB1C 404540188
537152 0x69991C6B 1771641963
537153 0x44C5E9AA 1153821098
537154 0x264DB929 642627881
537155 0xDF328C43 3744631875
537156 0xE62FF280 3861901952
537157 0x90FFD450 2432685136
537158 0xDF8FAC57 3750734935
537159 0xA1D156DF 2714851039
537160 0x71894209 1904820745
537161 0x9E8C4A0E 2659994126
537162 0x4EEAE41E 1324016670
537163 0xB39E40D2 3013492946
537164 0x83A1CB40 2208418624
537165 0xC5990BB2 3315141554
537166 0x62C16D29 1656843561
537167 0xDFBA4DD4 3753528788
537168 0xF27FF0AC 4068470956
537169 0x4D297BEF 1294564335
537170 0xD3CDC811 3553478673
537171 0xEB5BB554 3948655956
537172 0x1F035838 520312888
537173 0x0F8008F0 260049136
537174 0x1D0D54EB 487412971
537175 0x0AD7DAA8 181918376
537176 0xDB4243B5 3678553013
537177 0xEB87623B 3951518267
537178 0xA6E29A9D 2799868573
537179 0x657DEC41 1702751297
537180 0xDEBF78A9 3737090217
537181 0x9A0E3E42 2584624706
537182 0x4D81B479 1300345977
537183 0xEE237F29 3995303721
537184 0x64483418 1682453528
537185 0x70CE3A54 1892563540
537186 0x0407E621 67626529
537187 0xE87F58A8 3900659880
537188 0x8A572922 2320967970
537189 0xA1DA472C 2715436844
537190 0x1DB85112 498618642
537191 0xA5B332E0 2779984608
537192 0x8C6EB381 2356065153
537193 0x011D856C 18711916
537194 0x4FFB15C5 1341855173
537195 0x8BB55113 2343915795
537196 0x1F88FDBC 529071548
537197 0x71E8295D 1911040349
537198 0xDD326D1C 3711069468
537199 0x4997E7A1 1234692001
537200 0x0C25B238 203797048
537201 0xDC02F821 3691182113
537202 0x7E0272FA 2114089722
537203 0x7428DA05 1948834309
537204 0x5375694E 1400203598
537205 0xE4895B26 3834207014
537206 0xF2E27798 4074928024
537207 0x2750C3E9 659604457
537208 0xC491CE90 3297889936
537209 0xB27D5F42 2994560834
537210 0x48DEEAE7 1222568679
537211 0xD52B16F8 3576370936
537212 0x109162BA 277963450
537213 0x06F78C0D 116886541
537214 0xC3364C98 3275115672
537215 0x6BC8BF8E 1808318350
537216 0xDFB8B924 3753425188
537217 0x74FCDF85 1962729349
537218 0x89B3E526 2310268198
537219 0xB2B2756B 2998039915
537220 0x0BF45620 200562208
537221 0xF73D1ACF 4147976911
537222 0xC0C860CC 3234357452
537223 0xDE29DC19 3727285273
537224 0xB20C3EDC 2987146972
537225 0xE676C194 3866542484
537226 0x845B30F8 2220568824
537227 0x8B71E0B3 2339496115
537228 0xE8DB2A11 3906677265
537229 0x229AB7E1 580564961
537230 0x51D93418 1373189144
537231 0x74E81286 1961366150
537232 0x683E8338 1748927288
537233 0x94CAB9B2 2496313778
537234 0xA8A33C31 2829270065
537235 0x43B4A14E 1135911246
537236 0xA93CD929 2839337257
537237 0x5350FBDC 1397816284
537238 0xD261E675 3529631349
537239 0xC9E11D00 3386973440
537240 0x62D26A99 1657957017
537241 0x92A069C1 2459986369
537242 0x2517A475 622306421
537243 0xCE77FA34 3463969332
537244 0x0CCCB54F 214742351
537245 0x4CDF0B6B 1289685867
537246 0x23481E45 591928901
537247 0x9F02003A 2667708474
537248 0xD3BDA440 3552420928
537249 0x2DED0928 770509096
537250 0x2EA05107 782258439
537251 0x9A2B9830 2586548272
537252 0x098813F0 159912944
537253 0x245C53F8 610030584
537254 0xD29B8F24 3533410084
537255 0x890D4C28 2299350056
537256 0x685F61BA 1751081402
537257 0x12B43DA1 313802145
537258 0xD6882535 3599246645
537259 0x251D0329 622658345
537260 0x0E98327A 244855418
537261 0x5A2DA66F 1512941167
537262 0x00E45870 14964848
537263 0x91E53ADF 2447719135
537264 0xE501A114 3842089236
537265 0xB3119D1A 3004275994
537266 0x1FF020F0 535830768
537267 0xC748BF35 3343433525
537268 0xC876BF7D 3363225469
537269 0x450606F9 1158022905
537270 0x013786E5 20416229
537271 0xA964BC95 2841951381
537272 0x2CECAD8B 753708427
537273 0xB39E4070 3013492848
537274 0x421E0126 1109262630
537275 0x1261BDBD 308395453
537276 0xE17D1F46 3783073606
537277 0x8CAD3133 2360160563
537278 0xD8AE2C86 3635293318
537279 0x22E2EB8E 585296782
537280 0x7018748D 1880650893
537281 0x02DDDD7A 48094586
537282 0x2AFFB5E8 721401320
537283 0xD57FA399 3581911961
537284 0x6EBFE3CC 1858069452
537285 0xE904210B 3909361931
537286 0xAF9BB2FA 2946216698
537287 0x288BFA14 680262164
537288 0x198960CD 428433613
537289 0xB52FCD0C 3039808780
537290 0xE1DDEC5A 3789417562
537291 0xF77C1B79 4152105849
537292 0x26357FE8 641040360
537293 0x63CA013D 1674182973
537294 0x1F1CB1DD 521974237
537295 0x1CFC7888 486307976
537296 0xE4AF4949 3836692809
537297 0x61710110 1634795792
537298 0x2522A199 623026585
537299 0x59796058 1501126744
537300 0x66B2E409 1722999817
537301 0x5AA6FC89 1520893065
537302 0xE70C260C 3876333068
537303 0x6980A1E6 1770037734
537304 0x80EF0C40 2163149888
537305 0xEB17683E 3944179774
537306 0x59F6ED00 1509354752
537307 0x8E7B6317 2390450967
537308 0x2C342577 741614967
537309 0x8A4822E4 2319983332
537310 0xB514D895 3038042261
537311 0x16316609 372336137
537312 0xC6C5CB48 3334851400
537313 0xF606AC0D 4127632397
537314 0xC7A79DB2 3349650866
537315 0xED15680C 3977603084
537316 0x68DA694A 1759144266
537317 0xAE2B5567 2922075495
537318 0x99A13507 2577478919
537319 0x4F68D961 1332271457
537320 0xA7DF0912 2816411922
537321 0x73D25942 1943165250
537322 0x4693E970 1184098672
537323 0x8EEE9172 2397999474
537324 0x5C5175DD 1548842461
537325 0xF7233610 4146279952
537326 0x40904115 1083195669
537327 0x4696DBE2 1184291810
537328 0xD2D71E97 3537313431
537329 0xD1E9CEC6 3521760966
537330 0x08F6D070 150392944
537331 0x954C231E 2504794910
537332 0x1B6FB595 460305813
537333 0x1AAC7101 447508737
537334 0xF3935CEB 4086521067
537335 0x631B5036 1662734390
537336 0x8C584907 2354596103
537337 0x50F4E6B6 1358227126
537338 0xF14F428D 4048503437
537339 0x5432977E 1412601726
537340 0x80F72536 2163680566
537341 0x63610C16 1667304470
537342 0xFF190210 4279829008
537343 0xD5FD1332 3590132530
537344 0x917EAC51 2440997969
537345 0x7FE33964 2145597796
537346 0x2EB699AD 783718829
537347 0x998A4D0B 2575977739
537348 0x2AEFE836 720365622
537349 0x1AB19BAF 447847343
537350 0xD584663B 3582223931
537351 0xC2212570 3256952176
537352 0x12A51041 312807489
537353 0xE51C118B 3843821963
537354 0xA9D9B7B5 2849617845
537355 0x2C112415 739320853
537356 0xD8CAB9CA 3637164490
537357 0x574F7CDB 1464827099
537358 0x0498AB3C 77114172
537359 0x78280912 2015889682
537360 0x8C080B65 2349337445
537361 0xE9B7C959 3921135961
537362 0x88FAC0D2 2298134738
537363 0x1B84FBB2 461700018
537364 0x88DED6DC 2296305372
537365 0x74509A42 1951439426
537366 0x5DB67A25 1572239909
537367 0x9982443C 2575451196
537368 0xF4A14C04 4104211460
537369 0x2C00C85F 738248799
537370 0x6E2DAD30 1848487216
537371 0x0096BD01 9878785
537372 0x72817C37 1921088567
537373 0x2B8B15B5 730535349
537374 0x1A4C337F 441201535
537375 0xA30C9626 2735511078
537376 0x244EACB4 609135796
537377 0x15F711C3 368513475
537378 0xCD9D1179 3449622905
537379 0x8A1FA63D 2317329981
537380 0xDB65EF71 3680890737
537381 0xC9A7D7C2 3383220162
537382 0x50FDEE8E 1358818958
537383 0x55F03E7D 1441807997
537384 0xAA60A31D 2858459933
537385 0x1818F718 404289304
537386 0x2FEE289C 804137116
537387 0xAE3E25B9 2923308473
537388 0x68285A72 1747475058
537389 0xAC8C1AFA 2894863098
537390 0xEAD43E1C 3939778076
537391 0xB5454FDD 3041218525
537392 0x53688628 1399359016
537393 0x3A5FFCC6 979369158
537394 0x76C885C5 1992852933
537395 0xAC178BDB 2887224283
537396 0x89AF2341 2309956417
537397 0x48F05571 1223710065
537398 0x2FA3CE69 799264361
537399 0x90FF32DA 2432643802
537400 0x6084B39C 1619309468
537401 0x527E7477 1384019063
537402 0x45AC408F 1168916623
537403 0x84120018 2215772184
537404 0xA85D9BD3 2824707027
537405 0x98A6BEDE 2561064670
537406 0x300D1E34 806166068
537407 0x9F4F1FA0 2672762784
537408 0x99FAAA87 2583341703
537409 0x24FE9D34 620666164
537410 0x006DAE68 7188072
537411 0x2A7C18D9 712775897
537412 0x2DA11303 765530883
537413 0x161ABA65 370850405
537414 0x9F2C6A11 2670488081
537415 0xDD66CA50 3714501200
537416 0x340F675D 873424733
537417 0x70824C18 1887587352
537418 0x6895473D 1754613565
537419 0x44E3C012 1155776530
537420 0xF40FD641 4094678593
537421 0xAD495417 2907264023
537422 0x77E30777 2011367287
537423 0x0D00D251 218157649
537424 0x20D094CD 550540493
537425 0x5B908668 1536198248
537426 0x0F231E63 253959779
537427 0x8E2AF912 2385180946
537428 0x8F82CAC9 2407713481
537429 0x62D97FAC 1658421164
537430 0xC3BB7D4F 3283844431
537431 0x04287CDA 69762266
537432 0xC8A3B241 3366171201
537433 0xBAAEE71D 3132024605
537434 0xCBB9465B 3417917019
537435 0xF04D6B08 4031605512
537436 0x729AF77C 1922758524
537437 0x71AA0878 1906968696
537438 0x504996B9 1346999993
537439 0x6EB91373 1857622899
537440 0x345DC414 878560276
537441 0x85534F77 2236829559
537442 0xAAD8A6EC 2866325228
537443 0x784EC2E4 2018427620
537444 0x7961F78C 2036463500
537445 0xDFA8C73D 3752380221
537446 0x5B5DB436 1532867638
537447 0x91130C60 2433944672
537448 0xB28965D5 2995348949
537449 0x1C5BBDE6 475774438
537450 0x7912489E 2031241374
537451 0x722535C6 1915041222
537452 0x43EBFD62 1139539298
537453 0xB2FA9B18 3002768152
537454 0xA14A5B57 2706004823
537455 0x5E630B16 1583549206
537456 0x544531E8 1413820904
537457 0x9E17463A 2652325434
537458 0x823F1643 2185172547
537459 0x433B0C7E 1127943294
537460 0x0CA97011 212430865
537461 0xD2188E39 3524824633
537462 0x5188C481 1367917697
537463 0x6DA7CB9B 1839713179
537464 0x2485EB12 612756242
537465 0x56D5BE7C 1456848508
537466 0xE260F794 3798005652
537467 0x317A31C7 830091719
537468 0xEEEC1D41 4008451393
537469 0x24DDDC36 618519606
537470 0x16586219 374891033
537471 0x72CFAA01 1926212097
537472 0x5A663B0B 1516649227
537473 0xC8DD4753 3369944915
537474 0xAAF475BC 2868147644
537475 0x9E94661B 2660525595
537476 0x23193323 588854051
537477 0xAD2E0966 2905475430
537478 0xD32288AC 3542255788
537479 0x74D5141D 1960121373
537480 0xEC74794C 3967056204
537481 0xA0707D0C 2691726604
537482 0x3CA6B844 1017559108
537483 0x90C64299 2428912281
537484 0x7FE03E1B 2145402395
537485 0x8C066C1D 2349231133
537486 0x5EDDF33D 1591604029
537487 0x2C2C6D48 741109064
537488 0x2C786179 746086777
537489 0xACE45A1E 2900646430
537490 0x9A6F5375 2590987125
537491 0xB65D20E2 3059556578
537492 0xAEC9FDAE 2932473262
537493 0xA7E516BF 2816808639
537494 0x538E31C1 1401827777
537495 0x2112E4F6 554886390
537496 0x104BEDF7 273411575
537497 0x6996F547 1771500871
537498 0xA10C000A 2701918218
537499 0x417FD5D6 1098896854
537500 0xEE97837A 4002907002
537501 0x0A84F1A2 176484770
537502 0xE9392F29 3912838953
537503 0x6137EEAE 1631055534
537504 0x38D2F60C 953349644
537505 0x41340FF5 1093930997
537506 0x5AED2547 1525491015
537507 0xB68EB80E 3062806542
537508 0x8CE6ADFD 2363928061
537509 0xA992A81A 2844960794
537510 0xAF0DB4E2 2936911074
537511 0xA0DC7749 2698803017
537512 0x80C01571 2160072049
537513 0x35FA90B8 905613496
537514 0xCAD13267 3402707559
537515 0x1069865F 275351135
537516 0xF3E9A33C 4092175164
537517 0xECFD3AD9 3976018649
537518 0x20AA73FA 548041722
537519 0xD9AE787F 3652089983
537520 0x8B29102D 2334724141
537521 0x7B064A04 2064009732
537522 0x1834092B 406063403
537523 0x88A2D924 2292373796
537524 0xC0D73885 3235330181
537525 0x67B5920F 1739952655
537526 0x60AE3F33 1622032179
537527 0x68667815 1751545877
537528 0xFB660D47 4217769287
537529 0x86274A67 2250721895
537530 0x8B00D858 2332088408
537531 0x90CAD4CE 2429211854
537532 0xA8BF88D1 2831124689
537533 0x8237E24D 2184700493
537534 0xB37C815F 3011281247
537535 0x281B3059 672870489
537536 0x141F238C 337585036
537537 0x24654CC8 610618568
537538 0x60C529D5 1623534037
537539 0x8F611B7B 2405505915
537540 0x07C46238 130310712
537541 0x72405D1E 1916820766
537542 0x88ED2F21 2297245473
537543 0x61B15F9B 1639014299
537544 0xDF455896 3745863830
537545 0x4A84D515 1250219285
537546 0x5C1FCCFA 1545587962
537547 0x36DE4DB2 920538546
537548 0x4E0B817E 1309376894
537549 0xCA4703DC 3393651676
537550 0xDBC60454 3687187540
537551 0x1CBE239E 482223006
537552 0x5532B8F9 1429387513
537553 0xA1A62416 2712019990
537554 0x7331E619 1932650009
537555 0x81E9F308 2179592968
537556 0xA3D95E25 2748931621
537557 0x29A720EA 698818794
537558 0xCD88E274 3448300148
537559 0xD5FFC110 3590308112
537560 0x6684D849 1719982153
537561 0x9C8942F1 2626241265
537562 0x64985CBC 1687706812
537563 0x584054BA 1480611002
537564 0x5EC78DAD 1590136237
537565 0x3D503339 1028666169
537566 0xA4D6376F 2765502319
537567 0x73EA1DA4 1944722852
537568 0xE25B1715 3797620501
537569 0xC7843F10 3347332880
537570 0x14DF0921 350161185
537571 0x18EAFE10 418053648
537572 0xAFE60417 2951087127
537573 0xAD772A7F 2910268031
537574 0xA07C558A 2692502922
537575 0x2F9845FA 798508538
537576 0x070CCB49 118278985
537577 0xADA80541 2913469761
537578 0xF1873458 4052169816
537579 0xB89AF85C 3097163868
537580 0xE4C1E746 3837912902
537581 0x978DAAC0 2542643904
537582 0xA2AE4311 2729329425
537583 0x84D22483 2228364419
537584 0x75BD1BBF 1975327679
537585 0xB81E3357 3088986967
537586 0xBFF0CB3A 3220228922
537587 0x465E9530 1180603696
537588 0x10F13079 284242041
537589 0x721497F2 1913952242
537590 0x6880AD65 1753263461
537591 0x939A1AAE 2476350126
537592 0x6389452C 1669940524
537593 0x05B774B4 95909044
537594 0x51255433 1361400883
537595 0x7D7164AD 2104583341
537596 0x45A19F0D 1168219917
537597 0x15D2294B 366094667
537598 0x171E0934 387844404
537599 0x1B83C07C 461619324
537600 0x25DD982B 635279403
537601 0xCEED1B6F 3471645551
537602 0xB8475809 3091683337
537603 0x41324033 1093812275
537604 0x486F8B1A 1215269658
537605 0x37A787F5 933726197
537606 0x1E15530E 504713998
537607 0x01E6A1F1 31891953
537608 0x3758AB65 928557925
537609 0x194803A6 424149926
537610 0x433B50CA 1127960778
537611 0x29FA465C 704267868
537612 0x1B106AB2 454060722
537613 0x0C9A502B 211439659
537614 0x72CDEB5A 1926097754
537615 0x0783E6EC 126084844
537616 0xC1915326 3247526694
537617 0x0A335671 171136625
537618 0xBAF88D35 3136851253
537619 0xC95274DF 3377624287
537620 0x6AAE3048 1789800520
537621 0xF0205FF1 4028653553
537622 0xC1CDCBE0 3251489760
537623 0x115202AF 290587311
537624 0xB538BD12 3040394514
537625 0x65538B47 1699973959
537626 0xDFF753CA 3757528010
537627 0x1A4F8171 441418097
537628 0xA8E539E1 2833594849
537629 0xEC785B3B 3967310651
537630 0x60092C0B 1611213835
537631 0xF68138D3 4135663827
537632 0xF27A2833 4068091955
537633 0x3408B381 872985473
537634 0x3613E2DA 907272922
537635 0xACD580B2 2899673266
537636 0xF0018917 4026632471
537637 0x348CD99C 881645980
537638 0x043A4F7F 70930303
537639 0xE00A1113 3758756115
537640 0x9A5330C1 2589143233
537641 0xB480A4A9 3028329641
537642 0x28A9B8B1 682211505
537643 0x0C5EBBAE 207535022
537644 0x82F73AE1 2197240545
537645 0x918312EB 2441286379
537646 0xA5F5E818 2784356376
537647 0xCDE272BB 3454169787
537648 0x257049A7 628115879
537649 0x8061FF12 2153905938
537650 0xC4DE6E40 3302911552
537651 0x247B6C9B 612068507
537652 0xF70C45F3 4144776691
537653 0x617BAE95 1635495573
537654 0xDBE70E32 3689352754
537655 0xD1ECB9A2 3521952162
537656 0x014984AD 21595309
537657 0xF6CEB109 4140740873
537658 0x400E82E8 1074692840
537659 0x097DFA66 159251046
537660 0x5A93A688 1519625864
537661 0xC1BC49D9 3250342361
537662 0x09235E1C 153312796
537663 0xE54AA6E1 3846874849
537664 0x907F7F45 2424274757
537665 0x34D9D8F1 886692081
537666 0x932C4EE2 2469154530
537667 0xE0138DA3 3759377827
537668 0xED250F86 3978628998
537669 0xCDAE4B5E 3450751838
537670 0x5CDE3E7F 1558068863
537671 0x170527CC 386213836
537672 0xA9989280 2845348480
537673 0x8DB5FD3C 2377514300
537674 0x8CC53818 2361735192
537675 0x1898D8BC 412670140
537676 0xA828C00A 2821242890
537677 0x617F6FF7 1635741687
537678 0x56813F60 1451310944
537679 0xC6C5D965 3334855013
537680 0x17FE5CC2 402545858
537681 0x9B576678 2606196344
537682 0x6B89FCA6 1804205222
537683 0xA39EB50C 2745087244
537684 0x80D4C028 2161426472
537685 0x2BEEF85A 737081434
537686 0xCB3B6754 3409667924
537687 0xB7AF9112 3081736466
537688 0x3F81CEFD 1065471741
537689 0xAF65B8B8 2942679224
537690 0x63990716 1670973206
537691 0xF2AC6119 4071383321
537692 0xAE7D649C 2927453340
537693 0x5DB6B551 1572255057
537694 0x41D21A16 1104288278
537695 0x88B842D9 2293777113
537696 0xF6B70079 4139188345
537697 0x42973866 1117206630
537698 0x870EE7CC 2265901004
537699 0x04FA0DF4 83496436
537700 0xCE6B6DF2 3463146994
537701 0x681355B8 1746097592
537702 0x2FDDE377 803070839
537703 0x5DA95A5F 1571379807
537704 0x6F4182FB 1866564347
537705 0x71EE93B1 1911460785
537706 0x9C37EC7F 2620910719
537707 0x07C15A05 130112005
537708 0xC515051F 3306489119
537709 0x04DAE94A 81455434
537710 0xC2BC1F34 3267108660
537711 0xA0D400E0 2698248416
537712 0x4FB7A21F 1337434655
537713 0x8B0DCB50 2332937040
537714 0x34315C3A 875650106
537715 0x22D16F0E 584150798
537716 0x47594B80 1197034368
537717 0xA50FD538 2769278264
537718 0x2D37598A 758602122
537719 0xDC9F8A8A 3701443210
537720 0xEC4E29F5 3964545525
537721 0x9D56908C 2639696012
537722 0x2F139C10 789814288
537723 0xA9B02137 2846892343
537724 0x4551430F 1162953487
537725 0xA082238E 2692883342
537726 0x844E0F9E 2219708318
537727 0xA5C2BF4C 2781003596
537728 0x1BB25368 464671592
537729 0xC30AF9F6 3272276470
537730 0x85D3B380 2245243776
537731 0xDF662346 3748012870
537732 0x87082DDF 2265460191
537733 0xDB00DAD2 3674266322
537734 0xEF099DE4 4010384868
537735 0x80143C67 2148809831
537736 0x1BA1B8DC 463583452
537737 0x2DF90E33 771296819
537738 0x0626432C 103170860
537739 0x86C83186 2261266822
537740 0x04BAF589 79361417
537741 0x8A158301 2316665601
537742 0xB873EBD0 3094604752
537743 0xF56A5FC8 4117389256
537744 0xEDEEC64E 3991848526
537745 0xA53DC6E9 2772289257
537746 0xAA11023B 2853241403
537747 0x40C2A2B8 1086497464
537748 0xD6B13E2F 3601940015
537749 0xA3ABB5B4 2745939380
537750 0x59239B59 1495505753
537751 0xF7219E7D 4146175613
537752 0x8FDA493D 2413447485
537753 0xF194CFC0 4053061568
537754 0xCBD952D4 3420017364
537755 0xC984A0DE 3380912350
537756 0x19B6AFA7 431402919
537757 0xA80FA67A 2819597946
537758 0x8D64F1E8 2372202984
537759 0xCCFAA318 3438977816
537760 0x7371574F 1936807759
537761 0x2C880F65 747114341
537762 0x2156FBBE 559348670
537763 0x14A382FA 346260218
537764 0x195FD58D 425710989
537765 0xA604B5E8 2785326568
537766 0xC47D9127 3296563495
537767 0x453CC35E 1161610078
537768 0xF009C402 4027171842
537769 0x53B34E41 1404259905
537770 0xCC063625 3422959141
537771 0x6EF0B18C 1861267852
537772 0x147B48C9 343623881
537773 0xD41046CB 3557836491
537774 0xAC145BD8 2887015384
537775 0xD2C86E83 3536350851
537776 0xA13BAA01 2705041921
537777 0xAC549D9E 2891226526
537778 0x4F1764D8 1326933208
537779 0x315429D3 827599315
537780 0x27170202 655819266
537781 0x538F3C01 1401895937
537782 0x162B0859 371918937
537783 0xF73AE189 4147831177
537784 0xEFDA29B2 4024052146
537785 0x53F0977E 1408276350
537786 0xE27FF144 3800035652
537787 0x31C6FD8B 835124619
537788 0xAA1BB2C5 2853941957
537789 0x14DE57CB 350115787
537790 0x507C8359 1350337369
537791 0x00B259F1 11688433
537792 0xD58B11F4 3582661108
537793 0x70771A9B 1886853787
537794 0xB82B50D1 3089846481
537795 0x756007DF 1969227743
537796 0x961FDC70 2518670448
537797 0x9389526C 2475250284
537798 0x0428B43D 69776445
537799 0xE41919FB 3826850299
537800 0x82D87863 2195224675
537801 0x3822EA18 941812248
537802 0xEB01C7C9 3942762441
537803 0xD57E5073 3581825139
537804 0x644E96FC 1682872060
537805 0xF0F7ED62 4042780002
537806 0x9499C241 2493104705
537807 0x33E2569B 870471323
537808 0x98FA6672 2566547058
537809 0x5B9B97D0 1536923600
537810 0xB4B74AB5 3031911093
537811 0xD2467962 3527833954
537812 0x437D7715 1132295957
537813 0xB6206B6B 3055577963
537814 0xF720F39B 4146131867
537815 0xD8E34492 3638772882
537816 0x0EB868F2 246966514
537817 0xDE5A3443 3730453571
537818 0x81D23F12 2178039570
537819 0x2FE4D007 803524615
537820 0xA622F025 2787307557
537821 0xA829D0AF 2821312687
537822 0xDED93D8D 3738779021
537823 0x5799C4A8 1469695144
537824 0x758DBA29 1972222505
537825 0x709155E1 1888572897
537826 0xED672736 3982960438
537827 0xA2479D66 2722602342
537828 0x281E6685 673080965
537829 0x1E2E25F5 506340853
537830 0xBF1D5EFE 3206373118
537831 0x74D9CA17 1960430103
537832 0x169D1872 379394162
537833 0xB6953E0C 3063234060
537834 0xD6609A86 3596655238
537835 0xBF622105 3210879237
537836 0xE106BA1C 3775314460
537837 0x370A04C6 923403462
537838 0x0EB2D532 246601010
537839 0xC78754EB 3347535083
537840 0xBB12EBC1 3138579393
537841 0xFE2D83BC 4264395708
537842 0xC9196E37 3373887031
537843 0x5474450C 1416905996
537844 0x776294E9 2002949353
537845 0xA6DD7F3C 2799533884
537846 0x8C394E7C 2352565884
537847 0x43FEDBC4 1140775876
537848 0x781C8F30 2015137584
537849 0x92B54189 2461352329
537850 0xD0B1D306 3501314822
537851 0x14436A6B 339962475
537852 0x20ACEFA0 548204448
537853 0x56E7CDA3 1458032035
537854 0xB3E9FF40 3018456896
537855 0x11B4D6F0 297064176
537856 0x20F23827 552744999
537857 0x8F9A7B61 2409266017
537858 0xAABD1EAF 2864520879
537859 0x0FFBBFE0 268156896
537860 0x819F6D32 2174709042
537861 0xF36A49E2 4083829218
537862 0xD1082B87 3506973575
537863 0x4983DE3C 1233378876
537864 0x4A94F798 1251276696
537865 0x1CB43637 481572407
537866 0x9FDBE2F3 2681987827
537867 0x192FB4DD 422556893
537868 0x94A7C1A9 2494022057
537869 0xA7D0B111 2815471889
537870 0x543F79AE 1413446062
537871 0xC2FF1917 3271498007
537872 0xD1C7DF94 3519537044
537873 0x23E21DCB 602021323
537874 0x30B9D721 817485601
537875 0xE1786615 3782764053
537876 0xD4D45F32 3570687794
537877 0xC072FC95 3228761237
537878 0x6C952839 1821714489
537879 0xD73AD161 3610956129
537880 0x5C9B5234 1553682996
537881 0x522E81D1 1378779601
537882 0x1BA35ECD 463691469
537883 0xA4DE4A8E 2766031502
537884 0xD58CC441 3582772289
537885 0x4515C2CE 1159054030
537886 0x356FFBAA 896531370
537887 0x73620F48 1935806280
537888 0x1231651B 305227035
537889 0x6CE42E06 1826893318
537890 0xA7E8C834 2817050676
537891 0x72033223 1912812067
537892 0x7B392353 2067342163
537893 0x027FDD98 41934232
537894 0x37FFC098 939507864
537895 0x60D1CBA4 1624361892
537896 0x481B7B99 1209760665
537897 0x508C4E92 1351372434
537898 0x1A6F4B14 443501332
537899 0x1A5FD807 442488839
537900 0xE91E3D57 3911073111
537901 0x3D1F2CA6 1025453222
537902 0x81AD649D 2175624349
537903 0x5C214FD0 1545686992
537904 0x448367ED 1149462509
537905 0x76E41D99 1994661273
537906 0x0DA88AAF 229149359
537907 0x4D3B7091 1295741073
537908 0x99232210 2569216528
537909 0xDB8D5123 3683471651
537910 0x6E851FF5 1854218229
537911 0xA17D3165 2709336421
537912 0x870F2B93 2265918355
537913 0x3EC395A4 1053005220
537914 0x8A77AD6C 2323098988
537915 0x1FF8EB4A 536406858
537916 0x6ECC13A2 1858868130
537917 0x44979136 1150783798
537918 0x6CE685AA 1827046826
537919 0xA1DB8A50 2715519568
537920 0xD8FFE63C 3640649276
537921 0x12750E31 309661233
537922 0x751747C3 1964459971
537923 0x682695B5 1747359157
537924 0x1ED43C28 517225512
537925 0x94C849C0 2496154048
537926 0x208A8DE1 545951201
537927 0xF73C61EF 4147929583
537928 0xEF73339D 4017304477
537929 0x2E8210E1 780275937
537930 0xE87755A6 3900134822
537931 0xF0A6C5FC 4037461500
537932 0xA45CF030 2757554224
537933 0x1A8B9D46 445357382
537934 0xE3ECCC5C 3823946844
537935 0x4AF9EF01 1257893633
537936 0x94C60433 2496005171
537937 0xCF898432 3481895986
537938 0x1F2310DA 522391770
537939 0x6D1223A5 1829905317
537940 0x2953126F 693310063
537941 0x1B6FDA20 460315168
537942 0x648484D0 1686406352
537943 0x42260C80 1109789824
537944 0xF374FF1A 4084530970
537945 0x50BF0D57 1354698071
537946 0xED64FB06 3982818054
537947 0xE03A6151 3761922385
537948 0x5972A3E8 1500685288
537949 0x4AE74289 1256669833
537950 0x8A2AC2BF 2318058175
537951 0x139834BF 328742079
537952 0x5FD3A9F1 1607707121
537953 0xAD9D920E 2912784910
537954 0xD798800B 3617095691
537955 0x2B2CF604 724366852
537956 0xF390B148 4086346056
537957 0x2AB48E9A 716476058
537958 0x2F257480 790983808
537959 0x939CFDAD 2476539309
537960 0xA513911C 2769522972
537961 0xF0897469 4035540073
537962 0xA524C5EA 2770650602
537963 0xCF9D021B 3483173403
537964 0x6A9DC536 1788724534
537965 0xE08655B3 3766900147
537966 0xF7764717 4151723799
537967 0xC85711BA 3361149370
537968 0x9640E96C 2520836460
537969 0xC3B5FDF6 3283484150
537970 0xD3F12C87 3555798151
537971 0x2AB2B3E2 716354530
537972 0xC88ECBF9 3364801529
537973 0x2FE6D7C5 803657669
537974 0x5C8D5F8C 1552768908
537975 0x60635379 1617122169
537976 0xC53917BE 3308853182
537977 0x5649D0B2 1447678130
537978 0xA34BFE97 2739666583
537979 0x3943AC99 960736409
537980 0xFB586724 4216874788
537981 0xA24E8B28 2723056424
537982 0x384D23D8 944579544
537983 0x5304FBBE 1392835518
537984 0xDEA1010F 3735093519
537985 0xCF17C086 3474440326
537986 0x9F548B04 2673117956
537987 0x127EF1A2 310309282
537988 0x5910BEC9 1494269641
537989 0x461A744B 1176138827
537990 0xCE39B461 3459888225
537991 0xD6DFF244 3605000772
537992 0x4ACC9D1E 1254923550
537993 0xEEDCC95E 4007446878
537994 0xA138BE04 2704850436
537995 0x43C56352 1137009490
537996 0x51AE9AFC 1370397436
537997 0xED6BD961 3983268193
537998 0x7E0BAF22 2114694946
537999 0x304BA889 810264713
538000 0x4F7AA322 1333437218
538001 0x8C123383 2350003075
538002 0xB5F2A332 3052577586
538003 0xB7AB0878 3081439352
538004 0x29808EBC 696291004
538005 0xE8690AF6 3899198198
538006 0x11888100 294158592
538007 0x56D5F709 1456862985
538008 0x978C2A2D 2542545453
538009 0x250B750E 621507854
538010 0xECEB1E38 3974831672
538011 0x40E28981 1088588161
538012 0xA02B0A4A 2687175242
538013 0x71FBE529 1912333609
538014 0x88A0D045 2292240453
538015 0x37796890 930703504
538016 0x6D103E33 1829781043
538017 0x2E6DC2B4 778945204
538018 0xC3E9E00C 3286884364
538019 0x6EC8264A 1858610762
538020 0x131533D1 320156625
538021 0x0DB17275 229732981
538022 0x5682198A 1451366794
538023 0xE3B27EA7 3820125863
538024 0x06EF590C 116349196
538025 0x889A77D3 2291824595
538026 0x6D34B4CC 1832170700
538027 0x0B073F31 185024305
538028 0x1A28A849 438872137
538029 0x79432D6D 2034445677
538030 0x15F6B679 368490105
538031 0x0C04367C 201602684
538032 0x10D959BA 282679738
538033 0x0ED30B44 248712004
538034 0xE8A7616E 3903283566
538035 0x259F25A0 631186848
538036 0x5EDFF112 1591734546
538037 0xAFFBA16E 2952503662
538038 0x63BB768C 1673229964
538039 0x23CFCF0E 600821518
538040 0x187E9BEA 410950634
538041 0xCDAB6DA9 3450564009
538042 0x62926AE6 1653762790
538043 0xEF2252CB 4012004043
538044 0x909B53AD 2426098605
538045 0xE3EB2AD5 3823839957
538046 0x2E3CC9BE 775735742
538047 0x5622D624 1445123620
538048 0xCE7CF2E1 3464295137
538049 0x4DD9FEDA 1306132186
538050 0x1771E1FB 393339387
538051 0x6CAD2172 1823285618
538052 0x528E6F53 1385066323
538053 0x017B4A66 24857190
538054 0xC13F7DB6 3242163638
538055 0x88545F85 2287230853
538056 0xE8CE7B72 3905846130
538057 0x6AB9064A 1790510666
538058 0x2CE84571 753419633
538059 0x82A2AC20 2191698976
538060 0x1E6FE20E 510648846
538061 0x622D40BC 1647132860
538062 0x9491D32D 2492584749
538063 0x6A481316 1783108374
538064 0x0C4559E7 205871591
538065 0xD98681F0 3649470960
538066 0xA72C66E6 2804704998
538067 0x924EC521 2454635809
538068 0x89CB6A04 2311809540
538069 0xD158C5C7 3512255943
538070 0x933BF94C 2470181196
538071 0xC3EB7B16 3286989590
538072 0xB0642377 2959352695
538073 0xDA9048F4 3666888948
538074 0x18BAE6D0 414901968
538075 0x617FB6E1 1635759841
538076 0x1D311A80 489757312
538077 0x2EE2F77A 786626426
538078 0x3580F7B5 897644469
538079 0xF4BCEB67 4106021735
538080 0x59974B84 1503087492
538081 0xD1367914 3510008084
538082 0x5F59C905 1599719685
538083 0x1C2E8928 472811816
538084 0xE502D304 3842167556
538085 0x129C84A6 312247462
538086 0x1D3B50DF 490426591
538087 0xD6765CC7 3598081223
538088 0xDE14E2F2 3725910770
538089 0x9E0BA738 2651563832
538090 0xECA8D2AC 3970486956
538091 0x191ED03A 421449786
538092 0xE097A846 3768035398
538093 0x5AF30AD5 1525877461
538094 0x1EE3F68C 518256268
538095 0x3AEA604B 988438603
538096 0xE412E5C2 3826443714
538097 0x5F873185 1602695557
538098 0x0C025A71 201480817
538099 0x8479D87E 2222577790
538100 0x15408C76 356551798
538101 0x707B561F 1887131167
538102 0x7FCF7693 2144302739
538103 0x60C5A8C7 1623566535
538104 0x30DFBC4C 819969100
538105 0x0B642F3C 191115068
538106 0x1B0CA095 453812373
538107 0x5954A2F8 1498718968
538108 0xCB76E411 3413566481
538109 0x1A6CEFD3 443346899
538110 0x9E3B0CA1 2654669985
538111 0xE1939E09 3784547849
538112 0x75D5DACE 1976949454
538113 0xAB129A91 2870123153
538114 0x31F3A743 838051651
538115 0x517A3FA3 1366966179
538116 0x8CCDC092 2362294418
538117 0x22D73D01 584531201
538118 0x399DFD60 966655328
538119 0x22D4D071 584372337
538120 0x03814777 58804087
538121 0x508FA982 1351592322
538122 0x1B0DA597 453879191
538123 0x627C55D1 1652315601
538124 0x894061A0 2302697888
538125 0x19F5A8FB 435529979
538126 0x47EE3C1C 1206795292
538127 0x5B68B0E6 1533587686
538128 0x9AA4EC5A 2594499674
538129 0x1052D495 273863829
538130 0x8AA1D82E 2325862446
538131 0xEFCE487E 4023273598
538132 0xF5CF47A6 4124002214
538133 0x219DFE4D 564002381
538134 0x72E1ABA2 1927392162
538135 0xCF0B0FD9 3473608665
538136 0xAF32F01A 2939351066
538137 0x3D72EBDB 1030941659
538138 0x2F67B681 795326081
538139 0x380B3D5E 940260702
538140 0xF5D4862E 4124345902
538141 0xE1E19048 3789656136
538142 0x6BBECB2F 1807665967
538143 0xEF64509C 4016328860
538144 0x961F7206 2518643206
538145 0x43ABF730 1135343408
538146 0xAF11CD1A 2937179418
538147 0xC62E2E5D 3324915293
538148 0x24A3BB61 614710113
538149 0x05C830A2 97005730
538150 0xE31BB251 3810243153
538151 0x54C7BB09 1422375689
538152 0xB1F0E404 2985354244
538153 0x59E0C239 1507902009
538154 0x84573368 2220307304
538155 0x4B13EAA4 1259596452
538156 0x2C247A25 740588069
538157 0x48EDB641 1223538241
538158 0x77A992C3 2007601859
538159 0x7CE0A1FD 2095096317
538160 0xB37D5CDA 3011337434
538161 0xA216D679 2719405689
538162 0x8496A983 2224466307
538163 0xEC4BB89B 3964385435
538164 0xE7BF68BD 3888081085
538165 0x108C0114 277610772
538166 0x7799036C 2006516588
538167 0xD88D369B 3633133211
538168 0xCF772CE4 3480693988
538169 0x9A55522A 2589282858
538170 0x42F9310A 1123627274
538171 0xDA87A79C 3666323356
538172 0xAFC9FCE6 2949250278
538173 0x49EEBEB8 1240383160
538174 0xAFF96C04 2952358916
538175 0x03FA7B1E 66747166
538176 0xF5247F56 4112809814
538177 0x984F3419 2555327513
538178 0x7357651E 1935107358
538179 0x701E96EC 1881052908
538180 0x80700378 2154824568
538181 0xB81136D4 3088135892
538182 0x66864306 1720075014
538183 0xC3572F3A 3277270842
538184 0x92E94EC1 2464763585
538185 0x930679BD 2466675133
538186 0xD8DB3165 3638243685
538187 0x56E217A4 1457657764
538188 0x09F37B46 166951750
538189 0xC6FD076F 3338471279
538190 0x12743396 309605270
538191 0xB4E60E94 3034975892
538192 0x25198985 622430597
538193 0xA27E35B3 2726180275
538194 0x96698E72 2523500146
538195 0x24864205 612778501
538196 0xEE5C0D4A 3999010122
538197 0x8356DC11 2203507729
538198 0x9EA1A0B1 2661392561
538199 0xAC7F3C65 2894019685
538200 0xD617F1D8 3591893464
538201 0xA4607BA7 2757786535
538202 0xDC77CE8F 3698839183
538203 0xFB88AEAB 4220038827
538204 0xD8361519 3627423001
538205 0xE5B9F001 3854168065
538206 0x5A9390BF 1519620287
538207 0x06B01781 112203649
538208 0x6A3F799E 1782544798
538209 0xB1DC7085 2984013957
538210 0xC4FB3B7D 3304799101
538211 0xC4E82C38 3303550008
538212 0x22B4B206 582267398
538213 0x083A6C95 138046613
538214 0x7AA2131D 2057442077
538215 0xBB6F331F 3144626975
538216 0x934341B0 2470658480
538217 0x0C289AB3 203987635
538218 0x64CB0E8B 1691029131
538219 0x4AD48949 1255442761
538220 0xB6A7B6A2 3064444578
538221 0x2356CA0D 592890381
538222 0x69894E57 1770606167
538223 0xC63F76A8 3326047912
538224 0x66BEB1AA 1723773354
538225 0x16509587 374379911
538226 0xAD93359E 2912105886
538227 0x96DC1769 2531006313
538228 0x12BA9D50 314219856
538229 0x55E1103E 1440813118
538230 0xC8A65C06 3366345734
538231 0x5FCACB86 1607125894
538232 0xA01D019B 2686255515
538233 0xAAA5D322 2862994210
538234 0x462EC0BD 1177469117
538235 0x950EA02C 2500763692
538236 0x3B9A82A1 999981729
538237 0x8400BA11 2214640145
538238 0x4DFE8B83 1308527491
538239 0x6AA1624E 1788961358
538240 0xDBB52C0F 3686083599
538241 0x2E35A7E0 775268320
538242 0xD304CD52 3540307282
538243 0x2A8CFDF5 713883125
538244 0x00A31BB6 10689462
538245 0x9D2CE08C 2636963980
538246 0x4A4EB5C8 1246672328
538247 0x614E3D1C 1632517404
538248 0x78E87C45 2028502085
538249 0x3AC2E3B1 985850801
538250 0xA66816DD 2791839453
538251 0xDA5A3210 3663344144
538252 0x782C7DCF 2016181711
538253 0xE3DBBC5B 3822828635
538254 0x31D163B4 835806132
538255 0x140840DB 336085211
538256 0xB0309B46 2955975494
538257 0x25750583 628426115
538258 0x120C9831 302815281
538259 0x30ED5290 820859536
538260 0xCE6DC246 3463299654
538261 0xBC2689A8 3156642216
538262 0x85922CEB 2240949483
538263 0x8A72F9B0 2322790832
538264 0x0E71BDF6 242335222
538265 0x0B9426DC 194258652
538266 0xD0E83681 3504879233
538267 0x2EF577A0 787838880
538268 0x56151207 1444221447
538269 0x88D7260F 2295801359
538270 0xCABBA987 3401296263
538271 0x038D4AF9 59591417
538272 0x8D241F97 2367954839
538273 0xE63050A2 3861926050
538274 0x80BA0403 2159674371
538275 0x2FA52E2D 799354413
538276 0x5530FD1D 1429273885
538277 0x5A1A7BE4 1511685092
538278 0x86687E69 2254995049
538279 0xD0ED5643 3505215043
538280 0xA7C1C8CB 2814494923
538281 0x96A931CD 2527670733
538282 0xE5E1A6B4 3856770740
538283 0x11BF4348 297747272
538284 0xE997830E 3919020814
538285 0x4684B469 1183102057
538286 0xD4E8BA0E 3572021774
538287 0xE37DB1D0 3816665552
538288 0x98170780 2551646080
538289 0xC13FDDE5 3242188261
538290 0xCE8382E0 3464725216
538291 0xE2E96539 3806946617
538292 0x5E8893B9 1586009017
538293 0xE5A30D24 3852668196
538294 0x43A65805 1134974981
538295 0x73BC9D96 1941740950
538296 0x194E8346 424575814
538297 0x66DB4BA3 1725647779
538298 0xF199C1D4 4053385684
538299 0x07DB018B 131793291
538300 0x4D765AA2 1299602082
538301 0x5442B512 1413657874
538302 0x40768401 1081508865
538303 0x487D5C36 1216175158
538304 0x1E06E3C8 503768008
538305 0x14A6D99C 346479004
538306 0x778F59DF 2005883359
538307 0xCCE3D794 3437483924
538308 0x16F30115 385024277
538309 0x28CDD9E6 684579302
538310 0x55AD4517 1437418775
538311 0xF373898A 4084435338
538312 0x429704DE 1117193438
538313 0x6E90DAD2 1854986962
538314 0x831F074B 2199848779
538315 0x2EAD39D0 783104464
538316 0x2C3E4FED 742281197
538317 0xA833C4B2 2821964978
538318 0xB1A173BB 2980148155
538319 0x75F13F85 1978744709
538320 0x83CDB776 2211297142
538321 0x818041AA 2172666282
538322 0x5C48301D 1548234781
538323 0x6D112501 1829840129
538324 0xE783CCA4 3884174500
538325 0x075175EB 122779115
538326 0x1F16ED66 521596262
538327 0x08BFC0E4 146784484
538328 0xE9B5966E 3920991854
538329 0x48D26E2A 1221750314
538330 0x3502F523 889386275
538331 0x90B10E55 2427522645
538332 0x30DA2AA8 819604136
538333 0x4520190A 1159731466
538334 0xB88AD006 3096104966
538335 0xADB52593 2914330003
538336 0xC197F22C 3247960620
538337 0x62BDA668 1656596072
538338 0x01FA3F3D 33177405
538339 0xE59F0284 3852403332
538340 0x6D94114F 1838420303
538341 0x42D992A1 1121555105
538342 0x2F92831F 798130975
538343 0x89A73E36 2309439030
538344 0x4087675E 1082615646
538345 0x0410412C 68174124
538346 0x8C4EB755 2353968981
538347 0xF15B9DD0 4049313232
538348 0x5203F035 1375989813
538349 0x2F814AAE 797002414
538350 0x27F043D1 670057425
538351 0xB0F3A282 2968756866
538352 0x28E0A40E 685810702
538353 0x1784D9C4 394582468
538354 0x5D68EC4C 1567157324
538355 0x61F4829D 1643414173
538356 0x73C7D9CC 1942477260
538357 0xCB3826E0 3409454816
538358 0x9F05F298 2667967128
538359 0x01C464D1 29648081
538360 0xA8F42823 2834573347
538361 0x9BA22CFF 2611096831
538362 0xE92508B1 3911518385
538363 0xA628FB2A 2787703594
538364 0x30AE2A46 816720454
538365 0xE3955C70 3818216560
538366 0x65C45A2D 1707366957
538367 0x1B686FA8 459829160
538368 0x58980B43 1486359363
538369 0x5871C363 1483850595
538370 0x9B405CF4 2604686580
538371 0x2E39B65E 775534174
538372 0xB32F5DAE 3006225838
538373 0x9D500B7E 2639268734
538374 0x25DFCEC5 635424453
538375 0x52EB94C3 1391170755
538376 0x803070DD 2150658269
538377 0x3148D92E 826857774
538378 0x417D02EC 1098711788
538379 0x78C40241 2026111553
538380 0xB61C8302 3055321858
538381 0x51EFF088 1374679176
538382 0xE5F964B7 3858326711
538383 0x69F9AE05 1777970693
538384 0xB0B04A3A 2964343354
538385 0x9EFCA524 2667357476
538386 0xD0723031 3497144369
538387 0x9C8EF62C 2626614828
538388 0x9E4D98B8 2655885496
538389 0x4E1762BA 1310155450
538390 0x8FAB5617 2410370583
538391 0x702B7E3D 1881898557
538392 0x04F7C684 83347076
538393 0xC4515E26 3293666854
538394 0xC8AE6994 3366873492
538395 0x1CB10092 481362066
538396 0x2DD59379 768971641
538397 0x8A5DD376 2321404790
538398 0x5CE0AFE0 1558228960
538399 0x460AF466 1175123046
538400 0xB2E6F225 3001479717
538401 0xA1FB610F 2717606159
538402 0xA6DD551C 2799523100
538403 0x2AB003BC 716178364
538404 0x8F8F7B11 2408545041
538405 0xF4A3ACF0 4104367344
538406 0xE2969947 3801520455
538407 0x077D19BD 125639101
538408 0x94BDDC89 2495470729
538409 0x76C3F6B2 1992554162
538410 0x205A1515 542774549
538411 0xE66F4F4B 3866054475
538412 0x0E0C001C 235667484
538413 0xC010B7F6 3222321142
538414 0x1DFD2484 503129220
538415 0x783DD400 2017317888
538416 0xD9546D6E 3646188910
538417 0x25002E49 620768841
538418 0x82E08EAE 2195754670
538419 0xD9B7049F 3652650143
538420 0x3FF2FA1C 1072888348
538421 0xAF6E46B3 2943239859
538422 0x75440849 1967392841
538423 0x11561456 290853974
538424 0x497968D9 1232693465
538425 0xF3B33D65 4088610149
538426 0x10061DB0 268836272
538427 0x55F2DB76 1441979254
538428 0x709BD39A 1889260442
538429 0x6E48C578 1850262904
538430 0xB267A1D5 2993136085
538431 0x1E3FD591 507499921
538432 0xF47C6F7D 4101795709
538433 0xA058904A 2690158666
538434 0xB435D102 3023425794
538435 0x1381E645 327280197
538436 0x3097C575 815252853
538437 0xAB17F8B8 2870474936
538438 0x1A14E45A 437576794
538439 0xE649A8FA 3863587066
538440 0x40CA4FD5 1087000533
538441 0x586E7F72 1483636594
538442 0x33718AC1 863079105
538443 0x136CC99C 325896604
538444 0xE44D3C15 3830266901
538445 0x1F1C81D1 521961937
538446 0x8753BB5A 2270411610
538447 0x22854DF0 579161584
538448 0xCB8F83E8 3415180264
538449 0x8B378106 2335670534
538450 0xD66EEAFA 3597593338
538451 0xA8E81799 2833782681
538452 0xD99541B6 3650437558
538453 0x9395A608 2476058120
538454 0x8E570624 2388067876
538455 0x63A84714 1671972628
538456 0x638CABA0 1670163360
538457 0x363DFC74 910031988
538458 0x4FC41B83 1338252163
538459 0x79A447B4 2040809396
538460 0x94BB5C58 2495306840
538461 0x9BE68725 2615576357
538462 0x84445C05 2219072517
538463 0x6A867A49 1787198025
538464 0xCFB56396 3484771222
538465 0x29CC5E15 701259285
538466 0xAB776859 2876729433
538467 0x686C6059 1751933017
538468 0x79F09216 2045809174
538469 0x0B5D830C 190677772
538470 0x0DB1C235 229753397
538471 0xDDAF1CD2 3719240914
538472 0x531267A6 1393715110
538473 0x2B168F9E 722898846
538474 0x9972432D 2574402349
538475 0x88DBFC5E 2296118366
538476 0xEC077F54 3959914324
538477 0x0BCE3304 198062852
538478 0xDCFD8BCD 3707603917
538479 0x69097656 1762227798
538480 0x6AE9545E 1793676382
538481 0x8178FC65 2172189797
538482 0x6F232471 1864574065
538483 0xED8F0580 3985573248
538484 0xD31EF44E 3542021198
538485 0xF95A27D4 4183435220
538486 0xD6DC92E2 3604779746
538487 0x89D4852C 2312406316
538488 0xD58A0152 3582591314
538489 0x92C839B1 2462595505
538490 0xA959A7F5 2841225205
538491 0xF0112197 4027654551
538492 0x634010BC 1665142972
538493 0xC36C12EA 3278639850
538494 0x565FA66E 1449109102
538495 0x5E7B9425 1585157157
538496 0x54595AAB 1415142059
538497 0xD2475BD9 3527891929
538498 0x57938630 1469285936
538499 0x04E0EDDE 81849822
538500 0x7278E330 1920525104
538501 0xCBB669BF 3417729471
538502 0x4705CE19 1191562777
538503 0xA6E62859 2800101465
538504 0x263F978C 641701772
538505 0xCAC848D1 3402123473
538506 0xE5A64E21 3852881441
538507 0xA4BD7CEA 2763881706
538508 0xD0365F29 3493224233
538509 0x0214956F 34903407
538510 0x693F8981 1765771649
538511 0xA526071C 2770732828
538512 0x6534F939 1697970489
538513 0xC4563E30 3293986352
538514 0x8E0D2952 2383227218
538515 0x77A81FBC 2007506876
538516 0x325FF260 845148768
538517 0x2A53B03C 710127676
538518 0x153FAE4D 356494925
538519 0x90D34748 2429765448
538520 0x97D0F292 2547053202
538521 0x488DC5AD 1217250733
538522 0x5FB4DE45 1605688901
538523 0x904E315E 2421043550
538524 0x09638813 157517843
538525 0x5CBC7A44 1555855940
538526 0xACE27790 2900522896
538527 0x29D87A83 702052995
538528 0xEE00E772 3993036658
538529 0xF0236255 4028850773
538530 0x81204A71 2166377073
538531 0xF65E0145 4133355845
538532 0xB225F558 2988832088
538533 0x522B406F 1378566255
538534 0x49C7690C 1237805324
538535 0xBB5C1959 3143375193
538536 0x3112232F 823272239
538537 0x1E22BA9A 505592474
538538 0x70FE33A7 1895707559
538539 0x5EE9587B 1592350843
538540 0xB5DE05B5 3051226549
538541 0xFED8C197 4275618199
538542 0x494828ED 1229465837
538543 0x62ADB076 1655550070
538544 0x56498A4A 1447660106
538545 0x34CBD790 885774224
538546 0xA7BC470F 2814134031
538547 0x319F2F1B 832515867
538548 0x74C75047 1959219271
538549 0xA4DD1C26 2765954086
538550 0xD459DA95 3562658453
538551 0xA5EB1964 2783648100
538552 0xE61A1A3E 3860470334
538553 0x6FF92EB7 1878601399
538554 0xE9850DA1 3917811105
538555 0xEC0D4E00 3960294912
538556 0xCECF7576 3469702518
538557 0x5435748D 1412789389
538558 0xA5DB8D1B 2782629147
538559 0xC3661513 3278247187
538560 0xC6DD80EA 3336405226
538561 0xB2ADB34E 2997728078
538562 0xAA7F696D 2860476781
538563 0x323BC5E0 842778080
538564 0x44222D2A 1143090474
538565 0x99A5C3CA 2577777610
538566 0xE42324BB 3827508411
538567 0xA324A7BB 2737088443
538568 0x7C0C5BEF 2081184751
538569 0xF6036407 4127417351
538570 0x51A04427 1369457703
538571 0x73008983 1929415043
538572 0x8582851A 2239923482
538573 0x1B183A6B 454572651
538574 0x4AEA6070 1256874096
538575 0xC522B97A 3307387258
538576 0x35830EB8 897781432
538577 0x8EDD03BE 2396849086
538578 0x5EE2A61D 1591911965
538579 0x286E3E54 678313556
538580 0xDC4B1CB5 3695910069
538581 0x8A1E422C 2317238828
538582 0x1E549937 508860727
538583 0x48C29568 1220711784
538584 0xF1FA8C88 4059729032
538585 0x4015A5C3 1075160515
538586 0x6D05725C 1829073500
538587 0x085AC6CA 140166858
538588 0xA2982514 2727879956
538589 0x0745EFE2 122023906
538590 0xB09DD71C 2963134236
538591 0x0881A64A 142714442
538592 0x36430C1E 910363678
538593 0xA60718BE 2785482942
538594 0x62C14E9D 1656835741
538595 0x4CCCAB6B 1288481643
538596 0x222578DC 572881116
538597 0x6363FC39 1667497017
538598 0x85A2890A 2242021642
538599 0xC337B2C4 3275207364
538600 0x2D15D83D 756406333
538601 0x86B36A10 2259905040
538602 0x537B28B9 1400580281
538603 0x544477CD 1413773261
538604 0x718ECF58 1905184600
538605 0x49D2A585 1238541701
538606 0x33A2BB90 866302864
538607 0x17A26262 396517986
538608 0xEABD201E 3938263070
538609 0xAC81481F 2894153759
538610 0x0FF54012 267730962
538611 0x473A964A 1195021898
538612 0xDC0690EF 3691417839
538613 0x417BB508 1098626312
538614 0x5EF7FCFA 1593310458
538615 0x80ED84AC 2163049644
538616 0x6A897CD7 1787395287
538617 0x253C2515 624698645
538618 0x8AC88177 2328396151
538619 0x757D117C 1971130748
538620 0x9F9FE1F2 2678055410
538621 0xB3E39402 3018036226
538622 0x276D7009 661483529
538623 0x6C38A410 1815651344
538624 0x24717272 611414642
538625 0xC7FCAB00 3355224832
538626 0x50BB09F2 1354435058
538627 0xA1CB2F6D 2714447725
538628 0xD290D449 3532706889
538629 0xC6CFA492 3335496850
538630 0xCD570D03 3445034243
538631 0xB8588D69 3092811113
538632 0x185264B3 408052915
538633 0xD86464DC 3630458076
538634 0xD9D0361C 3654301212
538635 0x46A1DD51 1185013073
538636 0x8BF82CC7 2348297415
538637 0x2BA91030 732500016
538638 0xE2FACD36 3808087350
538639 0x459CF017 1167912983
538640 0xB0DC4AD5 2967227093
538641 0x547ED29E 1417597598
538642 0x4722623A 1193435706
538643 0x33C830E7 868757735
538644 0x27A1FF85 664928133
538645 0xF47FE2E0 4102021856
538646 0x677C1648 1736185416
538647 0x808CEB56 2156718934
538648 0x8A6B5BCE 2322291662
538649 0xCD7F3911 3447666961
538650 0x29485F64 692608868
538651 0xD0A22937 3500288311
538652 0x01C8507A 29905018
538653 0xCA826CB3 3397545139
538654 0xDB341C03 3677625347
538655 0x6E2A4B18 1848265496
538656 0x01B7CB4D 28822349
538657 0xEBB1E9ED 3954305517
538658 0xF31E60A4 4078854308
538659 0x16A2430C 379732748
538660 0x9CC86C0C 2630380556
538661 0x19BB8061 431718497
538662 0xCD1932DF 3440980703
538663 0x54EB7420 1424716832
538664 0x958FB719 2509223705
538665 0x9AA13365 2594255717
538666 0xCDAE1367 3450737511
538667 0x9C29AB39 2619976505
538668 0x058593E8 92640232
538669 0x32567EF9 844529401
538670 0x5C94EAEB 1553263339
538671 0x1DF2B2FA 502444794
538672 0x47DD2ED2 1205677778
538673 0xB56853F0 3043513328
538674 0xA42D2B8A 2754423690
538675 0x83C1F3E6 2210526182
538676 0x8C821C4B 2357337163
538677 0xE3715EA3 3815857827
538678 0x98A6100A 2561019914
538679 0x82D1D5D8 2194789848
538680 0xE4447C38 3829693496
538681 0xA9A1F334 2845963060
538682 0x1A9B3B39 446380857
538683 0x761FF139 1981804857
538684 0x86031DE3 2248351203
538685 0xB097501A 2962706458
538686 0xCAEF11DC 3404665308
538687 0x9AC9952C 2596902188
538688 0x5574B1F9 1433711097
538689 0xE104A8C0 3775178944
538690 0xF71D53C9 4145894345
538691 0x42953B35 1117076277
538692 0x6A19498B 1780042123
538693 0xA39B8DB5 2744880565
538694 0x03AADB55 61528917
538695 0x27A1B52D 664909101
538696 0xFEF8001E 4277665822
538697 0x3424079C 874776476
538698 0x655F2BE0 1700735968
538699 0xB5285225 3039318565
538700 0xD4BB1D06 3569032454
538701 0x5F717081 1601269889
538702 0xBDA099A6 3181418918
538703 0x764DBAC5 1984805573
538704 0x5D77A070 1568120944
538705 0xF8C5D039 4173713465
538706 0xC4BA0C80 3300527232
538707 0xAA7EAE14 2860428820
538708 0x4F226E98 1327656600
538709 0x495E5CA5 1230920869
538710 0xE3ECCE49 3823947337
538711 0x15700867 359663719
538712 0x29D12C8A 701574282
538713 0xC7134F2A 3339931434
538714 0xEEB66B9F 4004932511
538715 0x4455B1D6 1146466774
538716 0xF27C58AA 4068235434
538717 0x80C2A8B2 2160240818
538718 0xAD76D91A 2910247194
538719 0x292ECBBC 690932668
538720 0xEB0CEB7A 3943492474
538721 0x0B39C986 188336518
538722 0xCBEAC47A 3421160570
538723 0xF520CF94 4112568212
538724 0x0E22DE71 237166193
538725 0xAACA82AD 2865398445
538726 0xC08E3613 3230545427
538727 0xE1AEB71C 3786323740
538728 0xF6A86355 4138230613
538729 0xE6409A01 3862993409
538730 0xF1470A28 4047964712
538731 0xDF9E739C 3751703452
538732 0x9F242F10 2669948688
538733 0xCA7A9E3E 3397033534
538734 0x9A762790 2591434640
538735 0xD3091FC1 3540590529
538736 0xF5D96F23 4124667683
538737 0x5B5F8BF8 1532988408
538738 0xCE69BC19 3463035929
538739 0xFA1B9BA8 4196113320
538740 0x9C8CB970 2626468208
538741 0xDC71095C 3698395484
538742 0x071F7BEC 119503852
538743 0x7400ED3A 1946217786
538744 0x1F0D3CAE 520961198
538745 0x6BC607AF 1808140207
538746 0x6B8D31AF 1804415407
538747 0x8629F8AE 2250897582
538748 0x14FF7400 352285696
538749 0xC3B5BC9D 3283467421
538750 0x29CB2575 701179253
538751 0x861AED3D 2249911613
538752 0x42AAA3CD 1118479309
538753 0x44C0B0B6 1153478838
538754 0x87AD78C1 2276292801
538755 0x5CE6831E 1558610718
538756 0xAD4B0CF7 2907376887
538757 0x958065C0 2508219840
538758 0x4179B5A0 1098495392
538759 0xA6766FBE 2792779710
538760 0xA945A40D 2839913485
538761 0x5F8801E3 1602748899
538762 0x5C18DED4 1545133780
538763 0x8D3B4284 2369471108
538764 0x60BA61CA 1622827466
538765 0x5C5DDEBC 1549655740
538766 0x4A307A20 1244690976
538767 0x4399D940 1134156096
538768 0x97E2F94F 2548234575
538769 0x1F48A827 524855335
538770 0x88C31D10 2294488336
538771 0xF44D4700 4098705152
538772 0xE464DA81 3831814785
538773 0x6E7A6187 1853514119
538774 0x448F6E9A 1150250650
538775 0xED003AA2 3976215202
538776 0x1AF65C81 452353153
538777 0x36DA69E0 920283616
538778 0x417C436A 1098662762
538779 0x8B5DEA00 2338187776
538780 0x97ECE049 2548883529
538781 0x52F85F9B 1392009115
538782 0x80370F89 2151092105
538783 0x2796E165 664199525
538784 0x8D019EE9 2365693673
538785 0xE1E18CCD 3789655245
538786 0x86B198AB 2259785899
538787 0x6BEBF3F0 1810625520
538788 0x3D4B8620 1028359712
538789 0x6F8F030C 1871643404
538790 0xC6798969 3329853801
538791 0xEB9FFD16 3953130774
538792 0xDD760436 3715499062
538793 0x2030335F 540029791
538794 0xC7E80160 3353870688
538795 0x0894B200 143962624
538796 0x326EE03C 846127164
538797 0x43C4DD73 1136975219
538798 0xE58D6273 3851248243
538799 0x1B71803F 460423231
Теперь разобьем эту выборку на группы по сто значений и произведем статистический анализ по каждой группе. Нонсе — это 32х битное число. По здравому рассуждению каждый бит нонсе равновероятно принимает значение единица или ноль. Как раз это я и собираюсь проверить. напишу вот такой скрипт, который считает количество единиц в каждой позиции бита по группе из 100 нонсе.
import sys
import os
folder=""
stat_N=0
stat=[]
def init_stat():
global stat
global stat_N
stat_N=0
i=0
while i<64:
stat.append(0.0)
i=i+1
def clear_stat():
global stat
global stat_N
stat_N=0
i=0
while i<64:
stat[i]=0.0
i=i+1
def add_stat(nonce):
global stat
global stat_N
stat_N=stat_N+1
i=0
while i<64:
if nonce & (1<<i):
stat[i]=stat[i]+1
i=i+1
def nonce_num_bits():
i=32
while i<64:
if stat[i]:
return 64
i=i+1
return 32
def print_stat():
global stat
global stat_N
i=0
sz = nonce_num_bits()
while i<sz:
print(i," ",stat[i]/stat_N)
i=i+1
def init_stat_file():
global folder
txt=open(folder+"/stat.txt","w")
txt.close()
def write_stat():
global folder
global stat
global stat_N
txt=open(folder+"/stat.txt","a")
i=0
sz = nonce_num_bits()
while i<sz:
s=stat[i]/stat_N
txt.write("%.2f " % s )
i=i+1
txt.write("n")
txt.close()
#--------------------------------
args = sys.argv
if len(args)<2:
print("Error: need argument name of folder with list of nonces")
exit()
folder=args[1]
print( "Working on "" + folder +""" )
if os.path.isdir(folder)==False:
print("Error: folder ""+folder+"" does not exist")
exit()
init_stat()
init_stat_file()
f = open(folder+"/nonces.txt","r")
content = f.read().split("n")
for line in content:
word = line.split(" ")
if len(word)<2:
break
nonce=int(word[1],16)
add_stat(nonce)
if stat_N==100:
write_stat()
clear_stat()
f.close
Этот скрипт читает файл bitcoin/nonces.txt и создает новый файл bitcoin/stst.txt примерно вот такого вида:
0.49 0.50 0.45 0.39 0.44 0.40 0.54 0.43 0.47 0.55 0.50 0.54 0.53 0.50 0.54 0.51 0.56 0.47 0.48 0.44 0.44 0.51 0.41 0.52 0.50 0.54 0.42 0.47 0.39 0.52 0.61 0.48
0.40 0.61 0.52 0.48 0.49 0.55 0.45 0.43 0.55 0.56 0.54 0.55 0.56 0.60 0.52 0.42 0.52 0.46 0.61 0.54 0.52 0.52 0.55 0.49 0.46 0.48 0.41 0.42 0.45 0.42 0.47 0.47
0.39 0.50 0.43 0.45 0.46 0.47 0.40 0.51 0.48 0.44 0.52 0.51 0.46 0.45 0.51 0.45 0.45 0.53 0.59 0.51 0.53 0.44 0.52 0.55 0.53 0.47 0.49 0.47 0.41 0.51 0.52 0.52
0.51 0.43 0.39 0.49 0.46 0.53 0.40 0.50 0.49 0.42 0.47 0.56 0.49 0.51 0.57 0.44 0.58 0.52 0.50 0.54 0.48 0.50 0.43 0.53 0.52 0.49 0.48 0.56 0.43 0.42 0.49 0.49
0.44 0.33 0.43 0.57 0.52 0.52 0.44 0.45 0.53 0.45 0.43 0.50 0.52 0.59 0.44 0.47 0.49 0.40 0.50 0.58 0.55 0.55 0.47 0.51 0.45 0.48 0.44 0.42 0.41 0.47 0.50 0.48
0.49 0.46 0.51 0.42 0.57 0.45 0.45 0.35 0.53 0.42 0.51 0.52 0.47 0.51 0.47 0.45 0.48 0.49 0.54 0.48 0.50 0.49 0.46 0.56 0.44 0.48 0.47 0.55 0.46 0.45 0.51 0.50
0.51 0.45 0.52 0.50 0.59 0.41 0.50 0.34 0.47 0.54 0.56 0.48 0.54 0.49 0.54 0.44 0.49 0.48 0.50 0.58 0.44 0.48 0.51 0.47 0.37 0.45 0.47 0.47 0.50 0.52 0.46 0.43
0.51 0.43 0.52 0.57 0.58 0.51 0.47 0.36 0.51 0.44 0.47 0.47 0.49 0.47 0.43 0.39 0.47 0.50 0.56 0.46 0.47 0.47 0.46 0.63 0.48 0.43 0.44 0.46 0.43 0.51 0.45 0.49
0.49 0.49 0.40 0.49 0.53 0.53 0.49 0.50 0.47 0.50 0.41 0.55 0.48 0.48 0.49 0.46 0.54 0.51 0.49 0.55 0.53 0.48 0.50 0.53 0.50 0.41 0.45 0.42 0.41 0.47 0.44 0.51
0.47 0.47 0.47 0.58 0.52 0.42 0.53 0.53 0.59 0.55 0.43 0.48 0.50 0.42 0.46 0.50 0.52 0.53 0.43 0.48 0.58 0.44 0.43 0.42 0.54 0.42 0.58 0.42 0.39 0.45 0.46 0.56
0.51 0.47 0.45 0.38 0.48 0.51 0.39 0.48 0.50 0.57 0.52 0.54 0.54 0.46 0.67 0.47 0.53 0.54 0.48 0.53 0.57 0.55 0.46 0.54 0.43 0.53 0.49 0.37 0.60 0.46 0.50 0.49
0.45 0.46 0.47 0.46 0.47 0.51 0.41 0.53 0.59 0.45 0.51 0.43 0.49 0.46 0.46 0.55 0.52 0.51 0.56 0.51 0.49 0.46 0.45 0.49 0.50 0.55 0.48 0.54 0.44 0.49 0.59 0.49
0.39 0.46 0.53 0.43 0.42 0.54 0.49 0.46 0.52 0.56 0.38 0.46 0.47 0.56 0.60 0.46 0.50 0.59 0.39 0.57 0.50 0.55 0.44 0.54 0.45 0.47 0.52 0.53 0.45 0.41 0.47 0.42
0.48 0.46 0.49 0.45 0.52 0.43 0.43 0.46 0.43 0.52 0.53 0.50 0.52 0.61 0.43 0.51 0.56 0.51 0.57 0.48 0.51 0.48 0.61 0.52 0.52 0.54 0.42 0.45 0.48 0.49 0.46 0.48
0.55 0.46 0.50 0.47 0.42 0.40 0.34 0.58 0.52 0.50 0.45 0.45 0.55 0.48 0.41 0.47 0.47 0.46 0.49 0.53 0.50 0.57 0.41 0.58 0.38 0.55 0.47 0.43 0.43 0.43 0.51 0.51
0.39 0.49 0.56 0.45 0.45 0.51 0.42 0.49 0.45 0.51 0.48 0.44 0.48 0.45 0.53 0.47 0.53 0.45 0.48 0.42 0.54 0.51 0.47 0.59 0.49 0.37 0.48 0.47 0.43 0.44 0.47 0.40
0.42 0.38 0.56 0.45 0.61 0.42 0.49 0.45 0.52 0.49 0.55 0.44 0.46 0.43 0.50 0.47 0.51 0.47 0.58 0.51 0.55 0.45 0.56 0.47 0.52 0.53 0.42 0.47 0.49 0.47 0.50 0.51
0.49 0.49 0.49 0.57 0.52 0.48 0.44 0.38 0.50 0.48 0.50 0.52 0.44 0.48 0.46 0.43 0.51 0.52 0.53 0.50 0.44 0.46 0.46 0.46 0.39 0.49 0.52 0.38 0.42 0.53 0.52 0.49
0.48 0.42 0.44 0.51 0.54 0.49 0.48 0.43 0.50 0.44 0.41 0.45 0.54 0.54 0.49 0.42 0.52 0.45 0.44 0.55 0.51 0.54 0.46 0.59 0.51 0.49 0.51 0.41 0.44 0.42 0.49 0.52
0.42 0.41 0.45 0.48 0.45 0.50 0.36 0.50 0.51 0.48 0.45 0.61 0.45 0.52 0.49 0.52 0.45 0.47 0.47 0.57 0.48 0.52 0.54 0.46 0.54 0.54 0.56 0.51 0.39 0.41 0.59 0.55
Здесь каждая колонка — это вероятность появления единицы в соответствующей позиции бита нонсе.
Теперь остается как-то отобразить получившуюся статистику в виде графиков. Для этого у меня есть другой скрипт plot.py
import sys
import os
import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
folder=""
#--------------------------------
args = sys.argv
if len(args)<2:
print("Error: need argument name of folder with list of nonces")
exit()
folder=args[1]
print( "Working on "" + folder +""" )
if os.path.isdir(folder)==False:
print("Error: folder ""+folder+"" does not exist")
exit()
stat_N=0
stat=[]
def init_stat():
global stat
global stat_N
stat_N=0
i=0
while i<64:
stat.append([])
i=i+1
def draw_stat(start_bit,ax=None):
print("draw_stat ",start_bit)
save_single=0
if ax is None:
fig = plt.figure( figsize=(16,9))
ax = fig.gca()
save_single=1
ax.set_yticks( np.arange( 0.0, 1.0, 0.1 ) )
plt.title("Probability of specific bit in nonce")
plt.ylabel("Probability")
plt.xlabel("Every X-point presents group nonces averaged")
plt.ylim(0.0,1.0)
plt.grid()
i=0
while i<8:
color="#"
if i&1:
color=color+"FF"
else:
color=color+"00"
if i&2:
color=color+"FF"
else:
color=color+"00"
if i&4:
color=color+"FF"
else:
color=color+"00"
if i==7:
color="#A0A0A0"
ax.plot(stat[start_bit+i],color,label="bit"+str(start_bit+i) )
i=i+1
ax.legend(loc="upper left",ncol=2)
#plt.show()
if save_single :
plt.savefig(folder+"/bit"+str(start_bit)+"-"+str(start_bit+7)+".png",dpi=300)
def draw_hist(start_bit,ax=None):
print("draw_hist ",start_bit)
save_single=0
if ax is None:
fig = plt.figure( figsize=(16,9))
ax = fig.gca()
save_single=1
ax.set_xticks( np.arange( 0.0, 1.0, 0.1 ) )
x=np.arange( 0.0, 1.0, 0.05 )
plt.title("Probability Density of specific bit in nonce")
plt.ylabel("Density")
plt.xlabel("Probability")
plt.grid()
i=0
max_val=0
while i<8:
histogram=[0]*20
k=0
stat_column=stat[start_bit+i]
n=len(stat_column)
while k<n:
val=stat_column[k]
idx=int(round(val*20))
histogram[idx]=histogram[idx]+1
if max_val<histogram[idx]:
max_val=histogram[idx];
k=k+1
color="#"
if i&1:
color=color+"FF"
else:
color=color+"00"
if i&2:
color=color+"FF"
else:
color=color+"00"
if i&4:
color=color+"FF"
else:
color=color+"00"
if i==7:
color="#A0A0A0"
ax.plot(x,histogram,color,label="bit"+str(start_bit+i) )
i=i+1
plt.ylim(0.0,max_val*1.2)
ax.set_yticks( np.arange( 0.0, max_val*1.2, 1.0 ) )
ax.legend(loc="upper right")
#plt.show()
if save_single :
plt.savefig(folder+"/density"+str(start_bit)+"-"+str(start_bit+7)+".png",dpi=300)
num_bits=32
init_stat()
f = open(folder+"/stat.txt","r")
content = f.read().split("n")
for line in content:
word = line.split(" ")
nb=len(word)-1
if nb==32 or nb==64:
num_bits=nb
else:
break
i=0
while i<num_bits:
stat[i].append( float(word[i]) )
i=i+1
f.close
print("Num Bits in Nonce:",num_bits)
draw_hist(0)
draw_hist(8)
draw_hist(16)
draw_hist(24)
add_subplots = 0
fig = plt.figure( figsize=(16,9*num_bits/32))
ax1 = plt.subplot(221+add_subplots)
draw_hist(0,ax1)
ax2 = plt.subplot(222+add_subplots)
draw_hist(8,ax2)
ax3 = plt.subplot(223+add_subplots)
draw_hist(16,ax3)
ax4 = plt.subplot(224+add_subplots)
draw_hist(24,ax4)
plt.savefig(folder+"/density_all.png",dpi=300)
draw_stat(0)
draw_stat(8)
draw_stat(16)
draw_stat(24)
fig = plt.figure( figsize=(16,9*num_bits/32))
ax1 = plt.subplot(221+add_subplots)
draw_stat(0,ax1)
ax2 = plt.subplot(222+add_subplots)
draw_stat(8,ax2)
ax3 = plt.subplot(223+add_subplots)
draw_stat(16,ax3)
ax4 = plt.subplot(224+add_subplots)
draw_stat(24,ax4)
plt.savefig(folder+"/bits_all.png",dpi=300)
Теперь настало время рассмотреть эти графики. Если отобразить их все 32 на одной странице получится малопонятная каша. Поэтому скрипт строит 4 графика и каждый отображает статистику 8 бит. Так будет удобнее рассмотреть.
Приведу здесь всё:
Видно, что некоторые биты в нонсе биткоина не равновероятны в своем значении и графики смещены вниз. Значит значение бита все же немного более вероятно ноль, чем единица. Ниже графики распределения вероятности.
Здесь видно все то же — в среднем вероятность значения некоторых битов в найденых голден нонсе биткоина не равно 0.5, как я ожидал, но скорее смещено в сторону нуля. Особенно выделяются биты 1, 15, 22. С чем это связано, к сожалению не могу сказать. Тем не менее этот факт позволяет задуматься о перераспределении мощности майнеров по диапазонам значений более вероятных. Например, вот так: есть сто аппаратных майнеров (видеокарт или асиков), 65 майнеров отправляем на поиск нонсе со значениями бита 22 равному нулю и 35 майнеров майнят в диапазонах со значением бита 22 равным единице. Далее каждый выделенный диапазон можно разбить на более мелкие поддиапазоны согласно вероятности бита 15… и так далее. Идея в том, чтобы искать голден нонсе в более вероятных диапазонах сообразно последней накопленной статистике.
Далее возникла идея посмотреть статистику глубже, не только по 2000 последним блокам, но по всей истории блокчейна биткоина. Весь блокчейн уже почти 200Гигабайт, так что тут уже присутствуют все набившие оскомину термины «биткоин, блокчейн, бигдата».
Установил кошелек биткоина и выкачал весь блокчейн.
Далее использовал такой проект.
Этот проект позволяет скрипту на питоне пройтись по всему блокчейну и извлечь интересующие нас данные.
Немного изменил скрипт из примера, чтобы он писал статистику в текстовый файл. Теперь весь диапазон блоков около 530 тысяч разбит на группы по 1000 блоков. В каждом блоке смотрю среднюю вероятность значения бита нонсе.
import sys
sys.path.append('..')
from blockchain_parser.blockchain import Blockchain
stat_N=0
stat=[]
def init_stat():
global stat
global stat_N
stat_N=0
i=0
while i<32:
stat.append(0)
i=i+1
def clear_stat():
global stat
global stat_N
stat_N=0
i=0
while i<32:
stat[i]=0
i=i+1
def add_stat(nonce):
global stat
global stat_N
stat_N=stat_N+1
i=0
while i<32:
if nonce & (1<<i):
stat[i]=stat[i]+1
i=i+1
def print_stat():
global stat
global stat_N
i=0
while i<32:
print(i," ",stat[i]/stat_N)
i=i+1
def init_stat_file():
txt=open("stat.txt","w")
txt.close()
def write_stat():
global stat
global stat_N
txt=open("stat.txt","a")
i=0
while i<32:
s=stat[i]/stat_N
txt.write("%.4f " % s )
i=i+1
txt.write("n")
txt.close()
init_stat()
init_stat_file()
# Instantiate the Blockchain by giving the path to the directory
# containing the .blk files created by bitcoind
blockchain = Blockchain(sys.argv[1])
height=0
# To get the blocks ordered by height, you need to provide the path of the
# `index` directory (LevelDB index) being maintained by bitcoind. It contains
# .ldb files and is present inside the `blocks` directory
for block in blockchain.get_ordered_blocks(sys.argv[1] + '/index', end=538000):
print("")
height=block.height
print("height=%d" % (block.height) )
print("header=",end='')
arr=block.hex[:80]
for a in arr:
print(format(a,'02X'),end='')
print("")
print("hash =%s" % (block.hash) )
hdr=block.header
nonce=hdr.nonce
print("nonce =", format(nonce,'08X'))
add_stat(nonce)
if stat_N==1000:
write_stat()
clear_stat()
print("")
Этот скрипт так же генерирует файл статистики вероятности бита нонсе по всей истории блокчейна биткоин. Получается довольно интересная картина.
Вот как менялась со временем вероятность битов нонсе с нулевого по пятнадцатый:
А вот с шестнадцатого по тридцать первый бит нонсе:
Здесь каждая точка по горизонтали — это одна тысяча блоков в блокчейне и по этой тысяче считается средняя вероятность появления единицы в битовой позиции нонсе.
Честно говоря даже не знаю, как это можно прокомментировать. Временами биты в нонсе ой как не равновероятны. А если это так, то почему майнеры до сих пор просто перебирают нонсе? Возможно ли распределять мощности майнеров согласно найденой закономерности?
Если Вам интересны подобные изыскания, то можно еще почитать другие мои статьи:
- Вероятностный метод майнинга Bitcoin
- Можно ли вычислять биткоины быстрее, проще или легче?
- Майнер Bitcoin на плате Марсоход3
Автор: nckma