logo DERO HE BlockChain Explorer(v1) Mainnet

Tx hash: d9f34da2353a37cea83c1e59d12d47e60145fe7e3c537ef7f7d7ae00117bc198 Type SC

Block: 0fbcda77ab49b02b83ab7185a8200919ea3ceb4a2eaea5e69577d0a6dd46ccb3 (VALID)
SCID current reserves
SCID Amount(in atomic units)
0000000000000000000000000000000000000000000000000000000000000000 4858364392
f93b8d7fbbbf4e8f8a1e91b7ce21ac5d2b6aecc4de88cde8e929bce5f1746fbd 13819234612
SCID string variables
key value
C 0a2f2f202020205f5f5f5f5f20205f5f5f5f5f205f5f5f5f5f5f5f205f5f5f5f5f5f5f205f20205f20205f205f5f5f5f5f5f5f20205f5f5f5f5f200a2f2f2020207c5f5f5f5f5f5d2020207c2020207c5f5f5f5f5f5f207c5f5f5f5f5f5f207c20207c20207c207c5f5f5f5f5f7c207c5f5f5f5f5f5d0a2f2f2020207c202020202020205f5f7c5f5f207c5f5f5f5f5f5f205f5f5f5f5f5f7c207c5f5f7c5f5f7c207c20202020207c207c2020202020200a2f2f0a2f2f2020205377617020636f6e74726163740a0a46756e6374696f6e20496e697469616c697a652861737365743120537472696e672c2061737365743220537472696e672c2073796d626f6c20537472696e672c206e616d6520537472696e672c206665652055696e743634292055696e7436340a09313020494620455849535453282276657273696f6e2229205448454e20474f544f20313130300a0932302053657456657228290a0933302053544f524528226f3a22202b20484558285349474e45522829292c2030290a0934302053544f524528226f6c3a30222c20484558285349474e4552282929290a0935302053544f524528226e756d5472757374656573222c2031290a0936302053544f5245282271756f72756d222c2031290a0937302053544f52452822617373657431222c204845584445434f44452861737365743129290a0938302053544f52452822617373657432222c204845584445434f44452861737365743229290a0939302053544f5245282273796d626f6c222c2073796d626f6c290a093130302053544f52452822646563696d616c73222c2030290a093131302053544f524528226e616d65222c206e616d65290a093132302053544f52452822666565222c20666565290a093133302053544f5245282276616c31222c2030290a093134302053544f5245282276616c32222c2030290a093135302053544f524528227368617265734f75747374616e64696e67222c2030290a093136302053544f5245282261646473222c2030290a093137302053544f5245282272656d73222c2030290a093138302053544f524528227377617073222c2030290a0a09313030302052455455524e20300a09313130302052455455524e203130300a456e642046756e6374696f6e0a0a46756e6374696f6e20476574566572282920537472696e670a0931302072657475726e2022322e313030220a456e642046756e6374696f6e0a0a46756e6374696f6e2053657456657228292055696e7436340a0931302053544f5245282276657273696f6e222c204765745665722829290a0a09313030302052455455524e20300a456e642046756e6374696f6e0a0a2f2f206c6f73736c657373202861202a20622029202f20630a2f2f20282763617573652074686572652061696e2774206e6f2055696e74323536290a46756e6374696f6e206d756c7444697628612055696e7436342c20622055696e7436342c20632055696e743634292055696e7436340a0931302044494d20626173652c206d61786469762041532055696e7436340a093230204c45542062617365203d2034323934393637323936092f2f2028313c3c3332290a093330204c4554206d6178646976203d2028626173652d31292a62617365202b2028626173652d31290a0a0935302044494d207265732041532055696e7436340a093630204c455420726573203d2028612f6329202a2062202b202861256329202a2028622f63290a093730204c45542061203d2061202520630a093830204c45542062203d2062202520630a093930204946202861203d3d2030207c7c2062203d3d203029205448454e20474f544f20313030300a0a09313030204946202863203e3d206261736529205448454e20474f544f203230300a09313130204c455420726573203d20726573202b2028612a622f63290a0931323020474f544f20313030300a0a093230302044494d206e6f726d2041532055696e7436340a09323130204c4554206e6f726d203d206d61786469762f630a09323230204c45542063203d2063202a206e6f726d0a09323330204c45542061203d2061202a206e6f726d0a0a093330302044494d2061682c20616c2c2062682c20626c2c2063682c20636c2041532055696e7436340a09333130204c4554206168203d2061202f20626173650a09333230204c455420616c203d2061202520626173650a09333330204c4554206268203d2062202f20626173650a09333430204c455420626c203d2062202520626173650a09333530204c4554206368203d2063202f20626173650a09333630204c455420636c203d2063202520626173650a0a093430302044494d2070302c2070312c2070322041532055696e7436340a09343130204c4554207030203d20616c2a626c0a09343230204c4554207031203d207030202f2062617365202b20616c2a62680a09343330204c4554207030203d207030202520626173650a09343430204c4554207032203d207031202f2062617365202b2061682a62680a09343530204c4554207031203d202870312025206261736529202b2061682a626c0a09343630204c4554207032203d207032202b207031202f20626173650a09343730204c4554207031203d207031202520626173650a0a093530302044494d2071302c2071312c20726861742041532055696e7436340a09353130204c4554207032203d207032202520630a09353230204c4554207131203d207032202f2063680a09353330204c45542072686174203d20703220252063680a0a0936303020494620287131203c2062617365202626202872686174203e3d2062617365207c7c2071312a636c203c3d20726861742a626173652b70312929205448454e20474f544f203730300a09363130204c4554207131203d207131202d20310a09363230204c45542072686174203d2072686174202b2063680a0936333020474f544f203630300a0a09373030204c4554207031203d20282870322025206261736529202a2062617365202b20703129202d207131202a20636c0a09373130204c4554207032203d20287032202f2062617365202a2062617365202b207031202f206261736529202d207131202a2063680a09373230204c4554207031203d202870312025206261736529202b202870322025206261736529202a20626173650a09373330204c4554207130203d207031202f2063680a09373430204c45542072686174203d20703120252063680a0a0938303020494620287130203c2062617365202626202872686174203e3d2062617365207c7c2071302a636c203c3d20726861742a626173652b70302929205448454e20474f544f203930300a09383130204c4554207130203d207130202d20310a09383230204c45542072686174203d2072686174202b2063680a0938333020474f544f203830300a0a09393030204c455420726573203d20726573202b207130202b207131202a20626173650a0a09313030302052455455524e207265730a456e642046756e6374696f6e0a0a46756e6374696f6e204164644c697175696469747928292055696e743634200a0931302044494d20696e312c20696e322c2076616c312c2076616c322c207368617265734f75747374616e64696e672c2073686172652041532055696e7436340a0932302044494d206173736574312c2061737365743220415320537472696e670a0a093330204c455420617373657431203d204c4f4144282261737365743122290a093430204c455420617373657432203d204c4f4144282261737365743222290a093530204c45542076616c31203d204c4f4144282276616c3122290a093630204c45542076616c32203d204c4f4144282276616c3222290a093730204c4554207368617265734f75747374616e64696e67203d204c4f414428227368617265734f75747374616e64696e6722290a093830204c455420696e31203d20415353455456414c554528617373657431290a093930204c455420696e32203d20415353455456414c554528617373657432290a0a0931303020494620696e31203c2031207c7c20696e32203c2031205448454e20474f544f20313131300a09313130204946207368617265734f75747374616e64696e67203e2030205448454e20474f544f203135300a09313230204c4554207368617265203d204d415828696e312c20696e32290a0931333020474f544f203330300a0a0931353020494620696e32203d3d206d756c7444697628696e312c2076616c322c2076616c3129205448454e20474f544f203230300a0931363020494620696e31203d3d206d756c7444697628696e322c2076616c312c2076616c3229205448454e20474f544f203230300a0931373020474f544f20313132300a0a09323030204c4554207368617265203d206d756c74446976287368617265734f75747374616e64696e672c20696e312c2076616c31290a0a093330302053454e445f41535345545f544f5f41444452455353285349474e455228292c2073686172652c20534349442829290a093331302053544f5245282276616c31222c2076616c31202b20696e31290a093332302053544f5245282276616c32222c2076616c32202b20696e32290a093333302053544f524528227368617265734f75747374616e64696e67222c207368617265734f75747374616e64696e67202b207368617265290a093334302053544f5245282261646473222c204c4f41442822616464732229202b2031290a0a09313030302052455455524e20300a09313131302052455455524e203131300a09313132302052455455524e203132300a456e642046756e6374696f6e0a0a46756e6374696f6e2052656d6f76654c697175696469747928292055696e7436340a0931302044494d206f7574312c206f7574322c2076616c312c2076616c322c207368617265732c207368617265734f75747374616e64696e672041532055696e7436340a0932302044494d206173736574312c2061737365743220415320537472696e670a0a093330204c45542076616c31203d204c4f4144282276616c3122290a093430204c45542076616c32203d204c4f4144282276616c3222290a093530204c455420736861726573203d20415353455456414c554528534349442829290a093630204c4554207368617265734f75747374616e64696e67203d204c4f414428227368617265734f75747374616e64696e6722290a093730204c455420617373657431203d204c4f4144282261737365743122290a093830204c455420617373657432203d204c4f4144282261737365743222290a0a093930204946207368617265734f75747374616e64696e67203c2031207c7c20736861726573203c2031205448454e20474f544f20313133300a09313030204c4554206f757431203d206d756c744469762876616c312c207368617265732c207368617265734f75747374616e64696e67290a09313130204c4554206f757432203d206d756c744469762876616c322c207368617265732c207368617265734f75747374616e64696e67290a0a093132302053544f5245282276616c31222c2076616c31202d206f757431290a093133302053544f5245282276616c32222c2076616c32202d206f757432290a093134302053544f524528227368617265734f75747374616e64696e67222c207368617265734f75747374616e64696e67202d20736861726573290a093135302053544f5245282272656d73222c204c4f4144282272656d732229202b2031290a093136302053454e445f41535345545f544f5f41444452455353285349474e455228292c206f7574312c20617373657431290a093137302053454e445f41535345545f544f5f41444452455353285349474e455228292c206f7574322c20617373657432290a0a09313030302052455455524e20300a09313130302052455455524e203130300a09313133302052455455524e203133300a456e642046756e6374696f6e0a0a46756e6374696f6e205377617028292055696e7436340a0931302044494d20696e312c20696e322c206f7574312c206f7574322c2076616c312c2076616c322c206665652041532055696e7436340a0932302044494d206173736574312c2061737365743220415320537472696e670a0a093330204c455420617373657431203d204c4f4144282261737365743122290a093430204c455420617373657432203d204c4f4144282261737365743222290a093530204c455420696e31203d20415353455456414c554528617373657431290a093630204c455420696e32203d20415353455456414c554528617373657432290a093730204c45542076616c31203d204c4f4144282276616c3122290a093830204c45542076616c32203d204c4f4144282276616c3222290a093930204c455420666565203d204c4f4144282266656522290a0a0931303020494620696e31203e203020262620696e32203e2030205448454e20474f544f20313134300a0931313020494620696e31203c203120262620696e32203c2031205448454e20474f544f20313131300a0931323020494620696e32203e2030205448454e20474f544f203330300a0a09323030204c4554206f757432203d206d756c7444697628696e312c2076616c322c202876616c31202b20696e3129290a09323130204c4554206f757432203d206d756c74446976286f7574322c202831303030302d666565292c203130303030290a093232302053544f5245282276616c31222c2076616c31202b20696e31290a093233302053544f5245282276616c32222c2076616c32202d206f757432290a093235302053454e445f41535345545f544f5f41444452455353285349474e455228292c206f7574322c20617373657432290a0932363020474f544f203430300a0a09333030204c4554206f757431203d206d756c7444697628696e322c2076616c312c202876616c32202b20696e3229290a09333130204c4554206f757431203d206d756c74446976286f7574312c202831303030302d666565292c203130303030290a093332302053544f5245282276616c31222c2076616c31202d206f757431290a093333302053544f5245282276616c32222c2076616c32202b20696e32290a093335302053454e445f41535345545f544f5f41444452455353285349474e455228292c206f7574312c20617373657431290a0a093430302053544f524528227377617073222c204c4f4144282273776170732229202b2031290a0a09313030302052455455524e20300a09313130302052455455524e203130300a09313131302052455455524e203131300a09313134302052455455524e203134300a456e642046756e6374696f6e0a0a46756e6374696f6e20566f7465536574466565286665652055696e743634292055696e7436340a0931302044494d207472757374656520415320537472696e670a093230204c45542074727573746565203d20226f3a22202b20484558285349474e45522829290a0933302049462045584953545328747275737465652920213d2031205448454e20474f544f20313130300a093430204946204c4f414428226665652229203d3d20666565205448454e20474f544f20313236300a0a093130302049462063617374566f746528747275737465652c202230222c2049544f4128666565292920213d2031205448454e20474f544f203230300a093131302044454c4554452822693a3022290a093132302053544f52452822666565222c20666565290a0a09313030302052455455524e20300a09313130302052455455524e203130300a09313236302052455455524e203236300a456e642046756e6374696f6e0a0a46756e6374696f6e20566f746541646454727573746565286e65775f7472757374656520537472696e67292055696e7436340a0931302044494d207472757374656520415320537472696e670a093230204c45542074727573746565203d20226f3a22202b20484558285349474e45522829290a0933302049462045584953545328747275737465652920213d2031205448454e20474f544f20313130300a0934302049462045584953545328226f3a22202b206e65775f7472757374656529205448454e20474f544f20313236300a093530204946205354524c454e286e65775f747275737465652920213d203636205448454e20474f544f20313236300a0a093130302049462063617374566f746528747275737465652c202231222c206e65775f747275737465652920213d2031205448454e20474f544f203230300a093131302044454c4554452822693a3122290a093132302044494d206e756d54727573746565732041532055696e7436340a09313330204c4554206e756d5472757374656573203d204c4f414428226e756d547275737465657322290a093134302053544f524528226f6c3a22202b206e756d54727573746565732c206e65775f74727573746565290a093135302053544f524528226f3a222b206e65775f747275737465652c206e756d5472757374656573290a093136302053544f524528226e756d5472757374656573222c206e756d5472757374656573202b2031290a0a093230302052455455524e20300a0a09313130302052455455524e203130300a09313236302052455455524e203236300a456e642046756e6374696f6e0a0a46756e6374696f6e20566f746552656d6f766554727573746565286f6c645f7472757374656520537472696e67292055696e7436340a0931302044494d207472757374656520415320537472696e670a0932302044494d206e756d54727573746565732041532055696e7436340a093330204c45542074727573746565203d20226f3a22202b20484558285349474e45522829290a0934302049462045584953545328747275737465652920213d2031205448454e20474f544f20313130300a0935302049462045584953545328226f3a22202b206f6c645f747275737465652920213d2031205448454e20474f544f20313236300a093630204c4554206e756d5472757374656573203d204c4f414428226e756d54727573746565732229202d20310a093730204946206e756d5472757374656573203d3d2030205448454e20474f544f20313237300a093830204946206e756d5472757374656573203e204c4f4144282271756f72756d2229205448454e20474f544f20313238300a0a093130302049462063617374566f746528747275737465652c202232222c206f6c645f747275737465652920213d2031205448454e20474f544f203330300a093131302044454c4554452822693a3222290a0a093230302044494d206b6579546f4d6f766520415320537472696e670a093231302044494d20726f77546f5265706c6163652041532055696e7436340a09323230204c4554206b6579546f4d6f7665203d204c4f414428226f6c3a22202b206e756d5472757374656573290a09323330204c455420726f77546f5265706c616365203d204c4f414428226f3a22202b206f6c645f74727573746565290a093234302053544f524528226f3a22202b206b6579546f4d6f76652c20726f77546f5265706c616365290a093235302053544f524528226f6c3a22202b20726f77546f5265706c6163652c206b6579546f4d6f7665290a093236302044454c45544528226f3a22202b206f6c645f74727573746565290a093237302044454c45544528226f6c3a22202b206e756d5472757374656573290a093238302053544f524528226e756d5472757374656573222c206e756d5472757374656573290a0a093330302052455455524e20300a0a09313130302052455455524e203130300a09313236302052455455524e203236300a09313237302052455455524e203237300a09313239302052455455524e203239300a456e642046756e6374696f6e0a0a46756e6374696f6e20566f74654368616e676551756f72756d286e65775f71756f72756d2055696e743634292055696e7436340a0931302044494d207472757374656520415320537472696e670a093230204c45542074727573746565203d20226f3a22202b20484558285349474e45522829290a0933302049462045584953545328747275737465652920213d2031205448454e20474f544f20313130300a093430204946204c4f4144282271756f72756d2229203d3d206e65775f71756f72756d205448454e20474f544f20313236300a093530204946206e65775f71756f72756d203e204c4f414428226e756d54727573746565732229205448454e20474f544f20313330300a0a093130302049462063617374566f746528747275737465652c202233222c2049544f41286e65775f71756f72756d292920213d2031205448454e20474f544f203230300a093131302044454c4554452822693a3322290a093132302053544f5245282271756f72756d222c206e65775f71756f72756d290a0a093230302052455455524e20300a0a09313130302052455455524e203130300a09313236302052455455524e203236300a09313330302052455455524e203330300a456e642046756e6374696f6e0a0a46756e6374696f6e20566f7465557064617465436f646528636f646520537472696e67292055696e7436340a0931302044494d207472757374656520415320537472696e670a093230204c45542074727573746565203d20226f3a22202b20484558285349474e45522829290a0933302049462045584953545328747275737465652920213d2031205448454e20474f544f20313130300a0a093130302049462063617374566f746528747275737465652c202234222c2073686132353628636f6465292920213d2031205448454e20474f544f203230300a093131302044454c4554452822693a3422290a09313230205550444154455f53435f434f444528636f6465290a0a093230302052455455524e20300a0a09313130302052455455524e203130300a09313236302052455455524e203236300a456e642046756e6374696f6e0a0a46756e6374696f6e20636f756e74566f7465732874616c6c792055696e743634292055696e7436340a0931302044494d20766f7465732c20692041532055696e7436340a093230204c455420766f746573203d20300a093330204c45542069203d204c4f414428226e756d547275737465657322290a0a09313030204946202874616c6c7920262028313c3c692929203c2031205448454e20474f544f203132300a09313130204c455420766f746573203d20766f746573202b20310a09313230204c45542069203d2069202d20310a093133302049462069203c2031205448454e20474f544f20313030300a0931343020474f544f203130300a0a09313030302052455455524e20766f7465730a456e642046756e6374696f6e0a0a46756e6374696f6e2053484c28612055696e7436342c20622055696e743634292055696e7436340a0931302052455455524e2061203c3c20620a456e642046756e6374696f6e0a0a46756e6374696f6e2063617374566f7465287472757374656520537472696e672c206b657920537472696e672c2070726f706f73616c20537472696e67292055696e7436340a0931302044494d2076616c75652c20632c2074616c6c795f73747220415320537472696e670a0932302044494d20692c2074616c6c792041532055696e7436340a093330204c45542074616c6c795f737472203d202230220a093430204946204558495354532822693a22202b206b65792920213d2031205448454e20474f544f203233300a093530204c45542076616c7565203d204c4f41442822693a22202b206b6579290a093630204c45542069203d20300a0a09313030204c45542063203d205355425354522876616c75652c20692c2031290a09313130204946202863203d3d20223a2229205448454e20474f544f203230300a09313230204c45542074616c6c795f737472203d2074616c6c795f737472202b20630a09313330204c45542069203d2069202b20310a0931343020474f544f203130300a0a09323030204c45542074616c6c79203d2041544f492874616c6c795f737472290a0932313020494620282874616c6c792026203129203d3d203129205448454e20474f544f20313030300a09323230204946205355425354522876616c75652c20692b312c205354524c454e2870726f706f73616c2929203d3d2070726f706f73616c205448454e20474f544f203330300a09323330204c45542074616c6c79203d20300a0a09333030204c45542074616c6c79203d2074616c6c79207c2053484c28312c204c4f4144287472757374656529202b2031290a0933313020494620636f756e74566f7465732874616c6c7929203c204c4f4144282271756f72756d2229205448454e20474f544f203430300a09333230204c45542074616c6c79203d2074616c6c79207c20310a0a093430302053544f52452822693a22202b206b65792c2049544f412874616c6c7929202b20223a22202b2070726f706f73616c290a093431302052455455524e202874616c6c7920262031290a0a09313030302052455455524e20300a456e642046756e6374696f6e0a
adds 129
asset1 0000000000000000000000000000000000000000000000000000000000000000
asset2 f93b8d7fbbbf4e8f8a1e91b7ce21ac5d2b6aecc4de88cde8e929bce5f1746fbd
decimals 0
fee 50
name 4c697175696469747920666f7220737761702070616972204445524f3a4455534454
numTrustees 1
o:1098e6d8117e12ea0a291d49919b5d0e94bb9b20a693349544a366f6db1067e600 0
ol:0 313039386536643831313765313265613061323931643439393139623564306539346262396232306136393333343935343461333636663664623130363765363030
quorum 1
rems 62
sharesOutstanding 5.1682994696e+10
swaps 1754
symbol 4445524f3a4455534454
val1 4.858364392e+09
val2 1.3819234612e+10
version 322e303130
SCID uint64 variables
key value
built BLID : b6371bf5ed42dbc89f71921e2ade2c70cf30984c9c06429e33bf17811b7f79f0
Tx RootHash: 7996e7dd07a30b8e356681a54906c472aea671474c25263d616c19b6306d679c built height : 711825
Timestamp: 1659125023415 Timestamp [UTC]: 2022-07-29 21:03:43 Age [y:d:h:m:s]: 26291:34:6.527
Block: 711827 Fee: 0.10473 Tx size: 11.696 kB
Tx version: 1 No of confirmations: 5008708 Signature type: DERO_HOMOMORPHIC
Extra:
DERO : 2 inputs/outputs (RING size) Fees 0.10473 Deposited to SC 0.00000
Sender : dero1qygf3ekcz9lp96s29yw5nyvmt58ffwumyznfxdy4gj3kdakmzpn7vqq2v6r58
address
dero1qyvhqzy3qhkj9a286y0yy2g76ye82r9hqmavzyxe3dvaejgfxwp3uqgss5zpc
dero1qygf3ekcz9lp96s29yw5nyvmt58ffwumyznfxdy4gj3kdakmzpn7vqq2v6r58
SC Balance: 0.00000 DERO
SC CODE:
  
//    _____  _____ _______ _______ _  _  _ _______  _____ 
//   |_____]   |   |______ |______ |  |  | |_____| |_____]
//   |       __|__ |______ ______| |__|__| |     | |      
//
//   Swap contract

Function Initialize(asset1 String, asset2 String, symbol String, name String, fee Uint64) Uint64
	10 IF EXISTS("version") THEN GOTO 1100
	20 STORE("version", GetVer())
        30 STORE("o:" + HEX(SIGNER()), 0)
        40 STORE("ol:0", HEX(SIGNER()))
        50 STORE("numTrustees", 1)
        60 STORE("quorum", 1)
	70 STORE("asset1", HEXDECODE(asset1))
	80 STORE("asset2", HEXDECODE(asset2))
	90 STORE("symbol", symbol)
	100 STORE("decimals", 0)
	110 STORE("name", name)
	120 STORE("fee", fee)
	130 STORE("val1", 0)
	140 STORE("val2", 0)
	150 STORE("sharesOutstanding", 0)
	160 STORE("adds", 0)
	170 STORE("rems", 0)
	180 STORE("swaps", 0)

	1000 RETURN 0
	1100 RETURN 100
End Function

Function GetVer() String
	10 return "2.010"
End Function

// lossless (a * b ) / c
// (cause there ain't no Uint256)
Function multDiv(a Uint64, b Uint64, c Uint64) Uint64
	10 DIM base, maxdiv AS Uint64
	20 LET base = 4294967296	// (1<<32)
	30 LET maxdiv = (base-1)*base + (base-1)

	50 DIM res AS Uint64
	60 LET res = (a/c) * b + (a%c) * (b/c)
	70 LET a = a % c
	80 LET b = b % c
	90 IF (a == 0 || b == 0) THEN GOTO 1000

	100 IF (c >= base) THEN GOTO 200
        110 LET res = res + (a*b/c)
	120 GOTO 1000

	200 DIM norm AS Uint64
	210 LET norm = maxdiv/c
    	220 LET c = c * norm
	230 LET a = a * norm

	300 DIM ah, al, bh, bl, ch, cl AS Uint64
	310 LET ah = a / base
	320 LET al = a % base
	330 LET bh = b / base
	340 LET bl = b % base
	350 LET ch = c / base
	360 LET cl = c % base

	400 DIM p0, p1, p2 AS Uint64
	410 LET p0 = al*bl
	420 LET p1 = p0 / base + al*bh
	430 LET p0 = p0 % base
	440 LET p2 = p1 / base + ah*bh
	450 LET p1 = (p1 % base) + ah*bl
	460 LET p2 = p2 + p1 / base
	470 LET p1 = p1 % base

	500 DIM q0, q1, rhat AS Uint64
	510 LET p2 = p2 % c
	520 LET q1 = p2 / ch
	530 LET rhat = p2 % ch

	600 IF (q1 < base && (rhat >= base || q1*cl <= rhat*base+p1)) THEN GOTO 700
        610 LET q1 = q1 - 1
        620 LET rhat = rhat + ch
	630 GOTO 600

	700 LET p1 = ((p2 % base) * base + p1) - q1 * cl
    	710 LET p2 = (p2 / base * base + p1 / base) - q1 * ch
    	720 LET p1 = (p1 % base) + (p2 % base) * base
	730 LET q0 = p1 / ch
	740 LET rhat = p1 % ch

	800 IF (q0 < base && (rhat >= base || q0*cl <= rhat*base+p0)) THEN GOTO 900
        810 LET q0 = q0 - 1
        820 LET rhat = rhat + ch
	830 GOTO 800

	900 LET res = res + q0 + q1 * base

	1000 RETURN res
End Function

Function AddLiquidity() Uint64 
	10 DIM in1, in2, val1, val2, inRatio, valRatio, sharesOutstanding, share AS Uint64
	20 DIM asset1, asset2 AS String

	30 LET asset1 = LOAD("asset1")
	40 LET asset2 = LOAD("asset2")
	50 LET val1 = LOAD("val1")
	60 LET val2 = LOAD("val2")
	70 LET sharesOutstanding = LOAD("sharesOutstanding")
	80 LET in1 = ASSETVALUE(asset1)
	90 LET in2 = ASSETVALUE(asset2)

	100 IF in1 < 1 || in2 < 1 THEN GOTO 1110
	110 IF sharesOutstanding > 0 THEN GOTO 130
	115 LET share = MAX(in1, in2)
	120 GOTO 300

	130 IF val2 > val1 THEN GOTO 170
	140 LET valRatio = val1 / val2
	150 LET inRatio = in1 / in2
	160 GOTO 190

	170 LET valRatio = val2 / val1
	180 LET inRatio = in2 / in1
	190 IF valRatio != inRatio THEN GOTO 1120

	200 LET share = multDiv(sharesOutstanding, in1, val1)

	300 SEND_ASSET_TO_ADDRESS(SIGNER(), share, SCID())
	310 STORE("val1", val1 + in1)
	320 STORE("val2", val2 + in2)
	330 STORE("sharesOutstanding", sharesOutstanding + share)
	340 STORE("adds", LOAD("adds") + 1)

	1000 RETURN 0
	1110 RETURN 110
	1120 RETURN 120
End Function

Function RemoveLiquidity() Uint64
	10 DIM out1, out2, val1, val2, shares, sharesOutstanding AS Uint64
	20 DIM asset1, asset2 AS String

	30 LET val1 = LOAD("val1")
	40 LET val2 = LOAD("val2")
	50 LET shares = ASSETVALUE(SCID())
	60 LET sharesOutstanding = LOAD("sharesOutstanding")
	70 LET asset1 = LOAD("asset1")
	80 LET asset2 = LOAD("asset2")

	90 IF sharesOutstanding < 1 || shares < 1 THEN GOTO 1130
	100 LET out1 = multDiv(val1, shares, sharesOutstanding)
	110 LET out2 = multDiv(val2, shares, sharesOutstanding)

	120 STORE("val1", val1 - out1)
	130 STORE("val2", val2 - out2)
	140 STORE("sharesOutstanding", sharesOutstanding - shares)
	150 STORE("rems", LOAD("rems") + 1)
	160 SEND_ASSET_TO_ADDRESS(SIGNER(), out1, asset1)
	170 SEND_ASSET_TO_ADDRESS(SIGNER(), out2, asset2)

	1000 RETURN 0
	1100 RETURN 100
	1130 RETURN 130
End Function

Function Swap() Uint64
	10 DIM in1, in2, out1, out2, val1, val2, fee AS Uint64
	20 DIM asset1, asset2 AS String

	30 LET asset1 = LOAD("asset1")
	40 LET asset2 = LOAD("asset2")
	50 LET in1 = ASSETVALUE(asset1)
	60 LET in2 = ASSETVALUE(asset2)
	70 LET val1 = LOAD("val1")
	80 LET val2 = LOAD("val2")
	90 LET fee = LOAD("fee")

	100 IF in1 > 0 && in2 > 0 THEN GOTO 1140
	110 IF in1 < 1 && in2 < 1 THEN GOTO 1110
	120 IF in2 > 0 THEN GOTO 300

	200 LET out2 = multDiv(in1, val2, (val1 + in1))
	210 LET out2 = multDiv(out2, (10000-fee), 10000)
	220 STORE("val1", val1 + in1)
	230 STORE("val2", val2 - out2)
	250 SEND_ASSET_TO_ADDRESS(SIGNER(), out2, asset2)
	260 GOTO 400

	300 LET out1 = multDiv(in2, val1, (val2 + in2))
	310 LET out1 = multDiv(out1, (10000-fee), 10000)
	320 STORE("val1", val1 - out1)
	330 STORE("val2", val2 + in2)
	350 SEND_ASSET_TO_ADDRESS(SIGNER(), out1, asset1)
	
	400 STORE("swaps", LOAD("swaps") + 1)
	
	1000 RETURN 0
	1100 RETURN 100
	1110 RETURN 110
	1140 RETURN 140
End Function

Function VoteSetFee(fee Uint64) Uint64
        10 DIM trustee AS String
        20 LET trustee = "o:" + HEX(SIGNER())
        30 IF EXISTS(trustee) != 1 THEN GOTO 1100
        40 IF LOAD("fee") == fee THEN GOTO 1260

        100 IF castVote(trustee, "0", ITOA(fee)) != 1 THEN GOTO 200
        110 DELETE("i:0")
        120 STORE("fee", fee)

        1000 RETURN 0
        1100 RETURN 100
        1260 RETURN 260
End Function

Function VoteAddTrustee(new_trustee String) Uint64
        10 DIM trustee AS String
        20 LET trustee = "o:" + HEX(SIGNER())
        30 IF EXISTS(trustee) != 1 THEN GOTO 1100
        40 IF EXISTS("o:" + new_trustee) THEN GOTO 1260
	50 IF STRLEN(new_trustee) != 64 THEN GOTO 1260

        100 IF castVote(trustee, "1", new_trustee) != 1 THEN GOTO 200
        110 DELETE("i:1")
        120 DIM numTrustees AS Uint64
        130 LET numTrustees = LOAD("numTrustees")
        140 STORE("ol:" + numTrustees, new_trustee)
        150 STORE("o:"+ new_trustee, numTrustees)
        160 STORE("numTrustees", numTrustees + 1)

        200 RETURN 0

        1100 RETURN 100
        1260 RETURN 260
End Function

Function VoteRemoveTrustee(old_trustee String) Uint64
        10 DIM trustee AS String
        20 DIM numTrustees AS Uint64
        30 LET trustee = "o:" + HEX(SIGNER())
        40 IF EXISTS(trustee) != 1 THEN GOTO 1100
        50 IF EXISTS("o:" + old_trustee) != 1 THEN GOTO 1260
        60 LET numTrustees = LOAD("numTrustees") - 1
        70 IF numTrustees == 0 THEN GOTO 1270
        80 IF numTrustees > LOAD("quorum") THEN GOTO 1280

        100 IF castVote(trustee, "2", old_trustee) != 1 THEN GOTO 300
        110 DELETE("i:2")

        200 DIM keyToMove AS String
        210 DIM rowToReplace AS Uint64
        220 LET keyToMove = LOAD("ol:" + numTrustees)
        230 LET rowToReplace = LOAD("o:" + old_trustee)
        240 STORE("o:" + keyToMove, rowToReplace)
        250 STORE("ol:" + rowToReplace, keyToMove)
        260 DELETE("o:" + old_trustee)
        270 DELETE("ol:" + numTrustees)
        280 STORE("numTrustees", numTrustees)

        300 RETURN 0

        1100 RETURN 100
        1260 RETURN 260
        1270 RETURN 270
        1290 RETURN 290
End Function

Function VoteChangeQuorum(new_quorum Uint64) Uint64
        10 DIM trustee AS String
        20 LET trustee = "o:" + HEX(SIGNER())
        30 IF EXISTS(trustee) != 1 THEN GOTO 1100
        40 IF LOAD("quorum") == new_quorum THEN GOTO 1260
        50 IF new_quorum > LOAD("numTrustees") THEN GOTO 1300

        100 IF castVote(trustee, "3", ITOA(new_quorum)) != 1 THEN GOTO 200
        110 DELETE("i:3")
        120 STORE("quorum", new_quorum)

        200 RETURN 0

        1100 RETURN 100
        1260 RETURN 260
        1300 RETURN 300
End Function

Function VoteUpdateCode(code String) Uint64
        10 DIM trustee AS String
        20 LET trustee = "o:" + HEX(SIGNER())
        30 IF EXISTS(trustee) != 1 THEN GOTO 1100

        100 IF castVote(trustee, "4", sha256(code)) != 1 THEN GOTO 200
        110 DELETE("i:4")
        120 UPDATE_SC_CODE(code)

        200 RETURN 0

        1100 RETURN 100
        1260 RETURN 260
End Function

Function countVotes(tally Uint64) Uint64
        10 DIM votes, i AS Uint64
        20 LET votes = 0
        30 LET i = LOAD("numTrustees")

        100 IF (tally & (1<<i)) < 1 THEN GOTO 120
        110 LET votes = votes + 1
        120 LET i = i - 1
        130 IF i < 1 THEN GOTO 1000
        140 GOTO 100

        1000 RETURN votes
End Function

Function SHL(a Uint64, b Uint64) Uint64
        10 RETURN a << b
End Function

Function castVote(trustee String, key String, proposal String) Uint64
        10 DIM value, c, tally_str AS String
        20 DIM i, tally AS Uint64
        30 LET tally_str = "0"
        40 IF EXISTS("i:" + key) != 1 THEN GOTO 200
        50 LET value = LOAD("i:" + key)
        60 LET i = 0

        100 LET c = SUBSTR(value, i, 1)
        110 IF (c == ":") THEN GOTO 200
        120 LET tally_str = tally_str + c
        130 LET i = i + 1
        140 GOTO 100

        200 LET tally = ATOI(tally_str)
        210 IF ((tally & 1) == 1) THEN GOTO 1000
        220 IF SUBSTR(value, i+1, STRLEN(proposal)) == proposal THEN GOTO 300
        230 LET tally = 0

        300 LET tally = tally | SHL(1, LOAD(trustee) + 1)
        310 IF countVotes(tally) < LOAD("quorum") THEN GOTO 400
        320 LET tally = tally | 1

        400 STORE("i:" + key, ITOA(tally) + ":" + proposal)
        410 RETURN (tally & 1)

        1000 RETURN 0
End Function

SC Arguments: [Name:SC_ACTION Type:uint64 Value:'1' Name:SC_CODE Type:string Value:' // _____ _____ _______ _______ _ _ _ _______ _____ // |_____] | |______ |______ | | | |_____| |_____] // | __|__ |______ ______| |__|__| | | | // // Swap contract Function Initialize(asset1 String, asset2 String, symbol String, name String, fee Uint64) Uint64 10 IF EXISTS("version") THEN GOTO 1100 20 STORE("version", GetVer()) 30 STORE("o:" + HEX(SIGNER()), 0) 40 STORE("ol:0", HEX(SIGNER())) 50 STORE("numTrustees", 1) 60 STORE("quorum", 1) 70 STORE("asset1", HEXDECODE(asset1)) 80 STORE("asset2", HEXDECODE(asset2)) 90 STORE("symbol", symbol) 100 STORE("decimals", 0) 110 STORE("name", name) 120 STORE("fee", fee) 130 STORE("val1", 0) 140 STORE("val2", 0) 150 STORE("sharesOutstanding", 0) 160 STORE("adds", 0) 170 STORE("rems", 0) 180 STORE("swaps", 0) 1000 RETURN 0 1100 RETURN 100 End Function Function GetVer() String 10 return "2.010" End Function // lossless (a * b ) / c // (cause there ain't no Uint256) Function multDiv(a Uint64, b Uint64, c Uint64) Uint64 10 DIM base, maxdiv AS Uint64 20 LET base = 4294967296 // (1<<32) 30 LET maxdiv = (base-1)*base + (base-1) 50 DIM res AS Uint64 60 LET res = (a/c) * b + (a%c) * (b/c) 70 LET a = a % c 80 LET b = b % c 90 IF (a == 0 || b == 0) THEN GOTO 1000 100 IF (c >= base) THEN GOTO 200 110 LET res = res + (a*b/c) 120 GOTO 1000 200 DIM norm AS Uint64 210 LET norm = maxdiv/c 220 LET c = c * norm 230 LET a = a * norm 300 DIM ah, al, bh, bl, ch, cl AS Uint64 310 LET ah = a / base 320 LET al = a % base 330 LET bh = b / base 340 LET bl = b % base 350 LET ch = c / base 360 LET cl = c % base 400 DIM p0, p1, p2 AS Uint64 410 LET p0 = al*bl 420 LET p1 = p0 / base + al*bh 430 LET p0 = p0 % base 440 LET p2 = p1 / base + ah*bh 450 LET p1 = (p1 % base) + ah*bl 460 LET p2 = p2 + p1 / base 470 LET p1 = p1 % base 500 DIM q0, q1, rhat AS Uint64 510 LET p2 = p2 % c 520 LET q1 = p2 / ch 530 LET rhat = p2 % ch 600 IF (q1 < base && (rhat >= base || q1*cl <= rhat*base+p1)) THEN GOTO 700 610 LET q1 = q1 - 1 620 LET rhat = rhat + ch 630 GOTO 600 700 LET p1 = ((p2 % base) * base + p1) - q1 * cl 710 LET p2 = (p2 / base * base + p1 / base) - q1 * ch 720 LET p1 = (p1 % base) + (p2 % base) * base 730 LET q0 = p1 / ch 740 LET rhat = p1 % ch 800 IF (q0 < base && (rhat >= base || q0*cl <= rhat*base+p0)) THEN GOTO 900 810 LET q0 = q0 - 1 820 LET rhat = rhat + ch 830 GOTO 800 900 LET res = res + q0 + q1 * base 1000 RETURN res End Function Function AddLiquidity() Uint64 10 DIM in1, in2, val1, val2, inRatio, valRatio, sharesOutstanding, share AS Uint64 20 DIM asset1, asset2 AS String 30 LET asset1 = LOAD("asset1") 40 LET asset2 = LOAD("asset2") 50 LET val1 = LOAD("val1") 60 LET val2 = LOAD("val2") 70 LET sharesOutstanding = LOAD("sharesOutstanding") 80 LET in1 = ASSETVALUE(asset1) 90 LET in2 = ASSETVALUE(asset2) 100 IF in1 < 1 || in2 < 1 THEN GOTO 1110 110 IF sharesOutstanding > 0 THEN GOTO 130 115 LET share = MAX(in1, in2) 120 GOTO 300 130 IF val2 > val1 THEN GOTO 170 140 LET valRatio = val1 / val2 150 LET inRatio = in1 / in2 160 GOTO 190 170 LET valRatio = val2 / val1 180 LET inRatio = in2 / in1 190 IF valRatio != inRatio THEN GOTO 1120 200 LET share = multDiv(sharesOutstanding, in1, val1) 300 SEND_ASSET_TO_ADDRESS(SIGNER(), share, SCID()) 310 STORE("val1", val1 + in1) 320 STORE("val2", val2 + in2) 330 STORE("sharesOutstanding", sharesOutstanding + share) 340 STORE("adds", LOAD("adds") + 1) 1000 RETURN 0 1110 RETURN 110 1120 RETURN 120 End Function Function RemoveLiquidity() Uint64 10 DIM out1, out2, val1, val2, shares, sharesOutstanding AS Uint64 20 DIM asset1, asset2 AS String 30 LET val1 = LOAD("val1") 40 LET val2 = LOAD("val2") 50 LET shares = ASSETVALUE(SCID()) 60 LET sharesOutstanding = LOAD("sharesOutstanding") 70 LET asset1 = LOAD("asset1") 80 LET asset2 = LOAD("asset2") 90 IF sharesOutstanding < 1 || shares < 1 THEN GOTO 1130 100 LET out1 = multDiv(val1, shares, sharesOutstanding) 110 LET out2 = multDiv(val2, shares, sharesOutstanding) 120 STORE("val1", val1 - out1) 130 STORE("val2", val2 - out2) 140 STORE("sharesOutstanding", sharesOutstanding - shares) 150 STORE("rems", LOAD("rems") + 1) 160 SEND_ASSET_TO_ADDRESS(SIGNER(), out1, asset1) 170 SEND_ASSET_TO_ADDRESS(SIGNER(), out2, asset2) 1000 RETURN 0 1100 RETURN 100 1130 RETURN 130 End Function Function Swap() Uint64 10 DIM in1, in2, out1, out2, val1, val2, fee AS Uint64 20 DIM asset1, asset2 AS String 30 LET asset1 = LOAD("asset1") 40 LET asset2 = LOAD("asset2") 50 LET in1 = ASSETVALUE(asset1) 60 LET in2 = ASSETVALUE(asset2) 70 LET val1 = LOAD("val1") 80 LET val2 = LOAD("val2") 90 LET fee = LOAD("fee") 100 IF in1 > 0 && in2 > 0 THEN GOTO 1140 110 IF in1 < 1 && in2 < 1 THEN GOTO 1110 120 IF in2 > 0 THEN GOTO 300 200 LET out2 = multDiv(in1, val2, (val1 + in1)) 210 LET out2 = multDiv(out2, (10000-fee), 10000) 220 STORE("val1", val1 + in1) 230 STORE("val2", val2 - out2) 250 SEND_ASSET_TO_ADDRESS(SIGNER(), out2, asset2) 260 GOTO 400 300 LET out1 = multDiv(in2, val1, (val2 + in2)) 310 LET out1 = multDiv(out1, (10000-fee), 10000) 320 STORE("val1", val1 - out1) 330 STORE("val2", val2 + in2) 350 SEND_ASSET_TO_ADDRESS(SIGNER(), out1, asset1) 400 STORE("swaps", LOAD("swaps") + 1) 1000 RETURN 0 1100 RETURN 100 1110 RETURN 110 1140 RETURN 140 End Function Function VoteSetFee(fee Uint64) Uint64 10 DIM trustee AS String 20 LET trustee = "o:" + HEX(SIGNER()) 30 IF EXISTS(trustee) != 1 THEN GOTO 1100 40 IF LOAD("fee") == fee THEN GOTO 1260 100 IF castVote(trustee, "0", ITOA(fee)) != 1 THEN GOTO 200 110 DELETE("i:0") 120 STORE("fee", fee) 1000 RETURN 0 1100 RETURN 100 1260 RETURN 260 End Function Function VoteAddTrustee(new_trustee String) Uint64 10 DIM trustee AS String 20 LET trustee = "o:" + HEX(SIGNER()) 30 IF EXISTS(trustee) != 1 THEN GOTO 1100 40 IF EXISTS("o:" + new_trustee) THEN GOTO 1260 50 IF STRLEN(new_trustee) != 64 THEN GOTO 1260 100 IF castVote(trustee, "1", new_trustee) != 1 THEN GOTO 200 110 DELETE("i:1") 120 DIM numTrustees AS Uint64 130 LET numTrustees = LOAD("numTrustees") 140 STORE("ol:" + numTrustees, new_trustee) 150 STORE("o:"+ new_trustee, numTrustees) 160 STORE("numTrustees", numTrustees + 1) 200 RETURN 0 1100 RETURN 100 1260 RETURN 260 End Function Function VoteRemoveTrustee(old_trustee String) Uint64 10 DIM trustee AS String 20 DIM numTrustees AS Uint64 30 LET trustee = "o:" + HEX(SIGNER()) 40 IF EXISTS(trustee) != 1 THEN GOTO 1100 50 IF EXISTS("o:" + old_trustee) != 1 THEN GOTO 1260 60 LET numTrustees = LOAD("numTrustees") - 1 70 IF numTrustees == 0 THEN GOTO 1270 80 IF numTrustees > LOAD("quorum") THEN GOTO 1280 100 IF castVote(trustee, "2", old_trustee) != 1 THEN GOTO 300 110 DELETE("i:2") 200 DIM keyToMove AS String 210 DIM rowToReplace AS Uint64 220 LET keyToMove = LOAD("ol:" + numTrustees) 230 LET rowToReplace = LOAD("o:" + old_trustee) 240 STORE("o:" + keyToMove, rowToReplace) 250 STORE("ol:" + rowToReplace, keyToMove) 260 DELETE("o:" + old_trustee) 270 DELETE("ol:" + numTrustees) 280 STORE("numTrustees", numTrustees) 300 RETURN 0 1100 RETURN 100 1260 RETURN 260 1270 RETURN 270 1290 RETURN 290 End Function Function VoteChangeQuorum(new_quorum Uint64) Uint64 10 DIM trustee AS String 20 LET trustee = "o:" + HEX(SIGNER()) 30 IF EXISTS(trustee) != 1 THEN GOTO 1100 40 IF LOAD("quorum") == new_quorum THEN GOTO 1260 50 IF new_quorum > LOAD("numTrustees") THEN GOTO 1300 100 IF castVote(trustee, "3", ITOA(new_quorum)) != 1 THEN GOTO 200 110 DELETE("i:3") 120 STORE("quorum", new_quorum) 200 RETURN 0 1100 RETURN 100 1260 RETURN 260 1300 RETURN 300 End Function Function VoteUpdateCode(code String) Uint64 10 DIM trustee AS String 20 LET trustee = "o:" + HEX(SIGNER()) 30 IF EXISTS(trustee) != 1 THEN GOTO 1100 100 IF castVote(trustee, "4", sha256(code)) != 1 THEN GOTO 200 110 DELETE("i:4") 120 UPDATE_SC_CODE(code) 200 RETURN 0 1100 RETURN 100 1260 RETURN 260 End Function Function countVotes(tally Uint64) Uint64 10 DIM votes, i AS Uint64 20 LET votes = 0 30 LET i = LOAD("numTrustees") 100 IF (tally & (1<<i)) < 1 THEN GOTO 120 110 LET votes = votes + 1 120 LET i = i - 1 130 IF i < 1 THEN GOTO 1000 140 GOTO 100 1000 RETURN votes End Function Function SHL(a Uint64, b Uint64) Uint64 10 RETURN a << b End Function Function castVote(trustee String, key String, proposal String) Uint64 10 DIM value, c, tally_str AS String 20 DIM i, tally AS Uint64 30 LET tally_str = "0" 40 IF EXISTS("i:" + key) != 1 THEN GOTO 200 50 LET value = LOAD("i:" + key) 60 LET i = 0 100 LET c = SUBSTR(value, i, 1) 110 IF (c == ":") THEN GOTO 200 120 LET tally_str = tally_str + c 130 LET i = i + 1 140 GOTO 100 200 LET tally = ATOI(tally_str) 210 IF ((tally & 1) == 1) THEN GOTO 1000 220 IF SUBSTR(value, i+1, STRLEN(proposal)) == proposal THEN GOTO 300 230 LET tally = 0 300 LET tally = tally | SHL(1, LOAD(trustee) + 1) 310 IF countVotes(tally) < LOAD("quorum") THEN GOTO 400 320 LET tally = tally | 1 400 STORE("i:" + key, ITOA(tally) + ":" + proposal) 410 RETURN (tally & 1) 1000 RETURN 0 End Function ' Name:asset1 Type:string Value:'0000000000000000000000000000000000000000000000000000000000000000' Name:asset2 Type:string Value:'f93b8d7fbbbf4e8f8a1e91b7ce21ac5d2b6aecc4de88cde8e929bce5f1746fbd' Name:fee Type:uint64 Value:'0' Name:name Type:string Value:'Liquidity for swap pair DERO:DUSDT' Name:symbol Type:string Value:'DERO:DUSDT']


Prove to someone that you have sent them DERO in this transaction

proof can be obtained using wallet command in dero-wallet-cli or from the statement
Note: proof is sent to the server, as the calculations are done on the server side


TX hex bytes
010000050091b92bb6371bf5ed42dbc89f71921e2ade2c70cf30984c9c06429e33bf17811b7f79f00100000000000000000000000000000000000000000000000000000000000000000000fbb8a1c7389b83a101b8a943afc00b43388a8a8b2b8a030659ac8a9b4ac7909f5d37a7f6920eaeed50ebd2154d5afbae93c5d47afd2dfa24dae92364e84db0e709669ba6dacd265139ca74afbe546246fe2f01b196f5925a310190f0c7f8a04fd64c0bd2422d190c743623a3b8250a9820702df71f38aa2d826fd48660d3239936b72577664f417a8c4b91d9a0d499a2500107e9511f2b7631cd7d991f980b3d3b44155b27650b9fbd22c81ae895f0caac0fdbaee6005536c1afa18cc214e52040998bd116985096ae50a518cde613a6fed25c9dc34c2c1f75a76a2d57e72aa4525f14e50114d70ed4023bd2835d11f617539c2f2fff6b040e7f1c19f14b99738353debe61007996e7dd07a30b8e356681a54906c472aea671474c25263d616c19b6306d679c9950a7646665655500656e616d655378224c697175696469747920666f7220737761702070616972204445524f3a4455534454676173736574315378403030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303067617373657432537840663933623864376662626266346538663861316539316237636532316163356432623661656363346465383863646538653932396263653566313734366662646773796d626f6c536a4445524f3a44555344546853435f434f4445537927290a2f2f202020205f5f5f5f5f20205f5f5f5f5f205f5f5f5f5f5f5f205f5f5f5f5f5f5f205f20205f20205f205f5f5f5f5f5f5f20205f5f5f5f5f200a2f2f2020207c5f5f5f5f5f5d2020207c2020207c5f5f5f5f5f5f207c5f5f5f5f5f5f207c20207c20207c207c5f5f5f5f5f7c207c5f5f5f5f5f5d0a2f2f2020207c202020202020205f5f7c5f5f207c5f5f5f5f5f5f205f5f5f5f5f5f7c207c5f5f7c5f5f7c207c20202020207c207c2020202020200a2f2f0a2f2f2020205377617020636f6e74726163740a0a46756e6374696f6e20496e697469616c697a652861737365743120537472696e672c2061737365743220537472696e672c2073796d626f6c20537472696e672c206e616d6520537472696e672c206665652055696e743634292055696e7436340a09313020494620455849535453282276657273696f6e2229205448454e20474f544f20313130300a0932302053544f5245282276657273696f6e222c204765745665722829290a202020202020202033302053544f524528226f3a22202b20484558285349474e45522829292c2030290a202020202020202034302053544f524528226f6c3a30222c20484558285349474e4552282929290a202020202020202035302053544f524528226e756d5472757374656573222c2031290a202020202020202036302053544f5245282271756f72756d222c2031290a0937302053544f52452822617373657431222c204845584445434f44452861737365743129290a0938302053544f52452822617373657432222c204845584445434f44452861737365743229290a0939302053544f5245282273796d626f6c222c2073796d626f6c290a093130302053544f52452822646563696d616c73222c2030290a093131302053544f524528226e616d65222c206e616d65290a093132302053544f52452822666565222c20666565290a093133302053544f5245282276616c31222c2030290a093134302053544f5245282276616c32222c2030290a093135302053544f524528227368617265734f75747374616e64696e67222c2030290a093136302053544f5245282261646473222c2030290a093137302053544f5245282272656d73222c2030290a093138302053544f524528227377617073222c2030290a0a09313030302052455455524e20300a09313130302052455455524e203130300a456e642046756e6374696f6e0a0a46756e6374696f6e20476574566572282920537472696e670a0931302072657475726e2022322e303130220a456e642046756e6374696f6e0a0a2f2f206c6f73736c657373202861202a20622029202f20630a2f2f202863617573652074686572652061696e2774206e6f2055696e74323536290a46756e6374696f6e206d756c7444697628612055696e7436342c20622055696e7436342c20632055696e743634292055696e7436340a0931302044494d20626173652c206d61786469762041532055696e7436340a093230204c45542062617365203d2034323934393637323936092f2f2028313c3c3332290a093330204c4554206d6178646976203d2028626173652d31292a62617365202b2028626173652d31290a0a0935302044494d207265732041532055696e7436340a093630204c455420726573203d2028612f6329202a2062202b202861256329202a2028622f63290a093730204c45542061203d2061202520630a093830204c45542062203d2062202520630a093930204946202861203d3d2030207c7c2062203d3d203029205448454e20474f544f20313030300a0a09313030204946202863203e3d206261736529205448454e20474f544f203230300a2020202020202020313130204c455420726573203d20726573202b2028612a622f63290a0931323020474f544f20313030300a0a093230302044494d206e6f726d2041532055696e7436340a09323130204c4554206e6f726d203d206d61786469762f630a2020202009323230204c45542063203d2063202a206e6f726d0a09323330204c45542061203d2061202a206e6f726d0a0a093330302044494d2061682c20616c2c2062682c20626c2c2063682c20636c2041532055696e7436340a09333130204c4554206168203d2061202f20626173650a09333230204c455420616c203d2061202520626173650a09333330204c4554206268203d2062202f20626173650a09333430204c455420626c203d2062202520626173650a09333530204c4554206368203d2063202f20626173650a09333630204c455420636c203d2063202520626173650a0a093430302044494d2070302c2070312c2070322041532055696e7436340a09343130204c4554207030203d20616c2a626c0a09343230204c4554207031203d207030202f2062617365202b20616c2a62680a09343330204c4554207030203d207030202520626173650a09343430204c4554207032203d207031202f2062617365202b2061682a62680a09343530204c4554207031203d202870312025206261736529202b2061682a626c0a09343630204c4554207032203d207032202b207031202f20626173650a09343730204c4554207031203d207031202520626173650a0a093530302044494d2071302c2071312c20726861742041532055696e7436340a09353130204c4554207032203d207032202520630a09353230204c4554207131203d207032202f2063680a09353330204c45542072686174203d20703220252063680a0a0936303020494620287131203c2062617365202626202872686174203e3d2062617365207c7c2071312a636c203c3d20726861742a626173652b70312929205448454e20474f544f203730300a2020202020202020363130204c4554207131203d207131202d20310a2020202020202020363230204c45542072686174203d2072686174202b2063680a0936333020474f544f203630300a0a09373030204c4554207031203d20282870322025206261736529202a2062617365202b20703129202d207131202a20636c0a2020202009373130204c4554207032203d20287032202f2062617365202a2062617365202b207031202f206261736529202d207131202a2063680a2020202009373230204c4554207031203d202870312025206261736529202b202870322025206261736529202a20626173650a09373330204c4554207130203d207031202f2063680a09373430204c45542072686174203d20703120252063680a0a0938303020494620287130203c2062617365202626202872686174203e3d2062617365207c7c2071302a636c203c3d20726861742a626173652b70302929205448454e20474f544f203930300a2020202020202020383130204c4554207130203d207130202d20310a2020202020202020383230204c45542072686174203d2072686174202b2063680a0938333020474f544f203830300a0a09393030204c455420726573203d20726573202b207130202b207131202a20626173650a0a09313030302052455455524e207265730a456e642046756e6374696f6e0a0a46756e6374696f6e204164644c697175696469747928292055696e743634200a0931302044494d20696e312c20696e322c2076616c312c2076616c322c20696e526174696f2c2076616c526174696f2c207368617265734f75747374616e64696e672c2073686172652041532055696e7436340a0932302044494d206173736574312c2061737365743220415320537472696e670a0a093330204c455420617373657431203d204c4f4144282261737365743122290a093430204c455420617373657432203d204c4f4144282261737365743222290a093530204c45542076616c31203d204c4f4144282276616c3122290a093630204c45542076616c32203d204c4f4144282276616c3222290a093730204c4554207368617265734f75747374616e64696e67203d204c4f414428227368617265734f75747374616e64696e6722290a093830204c455420696e31203d20415353455456414c554528617373657431290a093930204c455420696e32203d20415353455456414c554528617373657432290a0a0931303020494620696e31203c2031207c7c20696e32203c2031205448454e20474f544f20313131300a09313130204946207368617265734f75747374616e64696e67203e2030205448454e20474f544f203133300a09313135204c4554207368617265203d204d415828696e312c20696e32290a0931323020474f544f203330300a0a093133302049462076616c32203e2076616c31205448454e20474f544f203137300a09313430204c45542076616c526174696f203d2076616c31202f2076616c320a09313530204c455420696e526174696f203d20696e31202f20696e320a0931363020474f544f203139300a0a09313730204c45542076616c526174696f203d2076616c32202f2076616c310a09313830204c455420696e526174696f203d20696e32202f20696e310a093139302049462076616c526174696f20213d20696e526174696f205448454e20474f544f20313132300a0a09323030204c4554207368617265203d206d756c74446976287368617265734f75747374616e64696e672c20696e312c2076616c31290a0a093330302053454e445f41535345545f544f5f41444452455353285349474e455228292c2073686172652c20534349442829290a093331302053544f5245282276616c31222c2076616c31202b20696e31290a093332302053544f5245282276616c32222c2076616c32202b20696e32290a093333302053544f524528227368617265734f75747374616e64696e67222c207368617265734f75747374616e64696e67202b207368617265290a093334302053544f5245282261646473222c204c4f41442822616464732229202b2031290a0a09313030302052455455524e20300a09313131302052455455524e203131300a09313132302052455455524e203132300a456e642046756e6374696f6e0a0a46756e6374696f6e2052656d6f76654c697175696469747928292055696e7436340a0931302044494d206f7574312c206f7574322c2076616c312c2076616c322c207368617265732c207368617265734f75747374616e64696e672041532055696e7436340a0932302044494d206173736574312c2061737365743220415320537472696e670a0a093330204c45542076616c31203d204c4f4144282276616c3122290a093430204c45542076616c32203d204c4f4144282276616c3222290a093530204c455420736861726573203d20415353455456414c554528534349442829290a093630204c4554207368617265734f75747374616e64696e67203d204c4f414428227368617265734f75747374616e64696e6722290a093730204c455420617373657431203d204c4f4144282261737365743122290a093830204c455420617373657432203d204c4f4144282261737365743222290a0a093930204946207368617265734f75747374616e64696e67203c2031207c7c20736861726573203c2031205448454e20474f544f20313133300a09313030204c4554206f757431203d206d756c744469762876616c312c207368617265732c207368617265734f75747374616e64696e67290a09313130204c4554206f757432203d206d756c744469762876616c322c207368617265732c207368617265734f75747374616e64696e67290a0a093132302053544f5245282276616c31222c2076616c31202d206f757431290a093133302053544f5245282276616c32222c2076616c32202d206f757432290a093134302053544f524528227368617265734f75747374616e64696e67222c207368617265734f75747374616e64696e67202d20736861726573290a093135302053544f5245282272656d73222c204c4f4144282272656d732229202b2031290a093136302053454e445f41535345545f544f5f41444452455353285349474e455228292c206f7574312c20617373657431290a093137302053454e445f41535345545f544f5f41444452455353285349474e455228292c206f7574322c20617373657432290a0a09313030302052455455524e20300a09313130302052455455524e203130300a09313133302052455455524e203133300a456e642046756e6374696f6e0a0a46756e6374696f6e205377617028292055696e7436340a0931302044494d20696e312c20696e322c206f7574312c206f7574322c2076616c312c2076616c322c206665652041532055696e7436340a0932302044494d206173736574312c2061737365743220415320537472696e670a0a093330204c455420617373657431203d204c4f4144282261737365743122290a093430204c455420617373657432203d204c4f4144282261737365743222290a093530204c455420696e31203d20415353455456414c554528617373657431290a093630204c455420696e32203d20415353455456414c554528617373657432290a093730204c45542076616c31203d204c4f4144282276616c3122290a093830204c45542076616c32203d204c4f4144282276616c3222290a093930204c455420666565203d204c4f4144282266656522290a0a0931303020494620696e31203e203020262620696e32203e2030205448454e20474f544f20313134300a0931313020494620696e31203c203120262620696e32203c2031205448454e20474f544f20313131300a0931323020494620696e32203e2030205448454e20474f544f203330300a0a09323030204c4554206f757432203d206d756c7444697628696e312c2076616c322c202876616c31202b20696e3129290a09323130204c4554206f757432203d206d756c74446976286f7574322c202831303030302d666565292c203130303030290a093232302053544f5245282276616c31222c2076616c31202b20696e31290a093233302053544f5245282276616c32222c2076616c32202d206f757432290a093235302053454e445f41535345545f544f5f41444452455353285349474e455228292c206f7574322c20617373657432290a0932363020474f544f203430300a0a09333030204c4554206f757431203d206d756c7444697628696e322c2076616c312c202876616c32202b20696e3229290a09333130204c4554206f757431203d206d756c74446976286f7574312c202831303030302d666565292c203130303030290a093332302053544f5245282276616c31222c2076616c31202d206f757431290a093333302053544f5245282276616c32222c2076616c32202b20696e32290a093335302053454e445f41535345545f544f5f41444452455353285349474e455228292c206f7574312c20617373657431290a090a093430302053544f524528227377617073222c204c4f4144282273776170732229202b2031290a090a09313030302052455455524e20300a09313130302052455455524e203130300a09313131302052455455524e203131300a09313134302052455455524e203134300a456e642046756e6374696f6e0a0a46756e6374696f6e20566f7465536574466565286665652055696e743634292055696e7436340a202020202020202031302044494d207472757374656520415320537472696e670a20202020202020203230204c45542074727573746565203d20226f3a22202b20484558285349474e45522829290a202020202020202033302049462045584953545328747275737465652920213d2031205448454e20474f544f20313130300a20202020202020203430204946204c4f414428226665652229203d3d20666565205448454e20474f544f20313236300a0a20202020202020203130302049462063617374566f746528747275737465652c202230222c2049544f4128666565292920213d2031205448454e20474f544f203230300a20202020202020203131302044454c4554452822693a3022290a20202020202020203132302053544f52452822666565222c20666565290a0a2020202020202020313030302052455455524e20300a2020202020202020313130302052455455524e203130300a2020202020202020313236302052455455524e203236300a456e642046756e6374696f6e0a0a46756e6374696f6e20566f746541646454727573746565286e65775f7472757374656520537472696e67292055696e7436340a202020202020202031302044494d207472757374656520415320537472696e670a20202020202020203230204c45542074727573746565203d20226f3a22202b20484558285349474e45522829290a202020202020202033302049462045584953545328747275737465652920213d2031205448454e20474f544f20313130300a202020202020202034302049462045584953545328226f3a22202b206e65775f7472757374656529205448454e20474f544f20313236300a093530204946205354524c454e286e65775f747275737465652920213d203634205448454e20474f544f20313236300a0a20202020202020203130302049462063617374566f746528747275737465652c202231222c206e65775f747275737465652920213d2031205448454e20474f544f203230300a20202020202020203131302044454c4554452822693a3122290a20202020202020203132302044494d206e756d54727573746565732041532055696e7436340a2020202020202020313330204c4554206e756d5472757374656573203d204c4f414428226e756d547275737465657322290a20202020202020203134302053544f524528226f6c3a22202b206e756d54727573746565732c206e65775f74727573746565290a20202020202020203135302053544f524528226f3a222b206e65775f747275737465652c206e756d5472757374656573290a20202020202020203136302053544f524528226e756d5472757374656573222c206e756d5472757374656573202b2031290a0a20202020202020203230302052455455524e20300a0a2020202020202020313130302052455455524e203130300a2020202020202020313236302052455455524e203236300a456e642046756e6374696f6e0a0a46756e6374696f6e20566f746552656d6f766554727573746565286f6c645f7472757374656520537472696e67292055696e7436340a202020202020202031302044494d207472757374656520415320537472696e670a202020202020202032302044494d206e756d54727573746565732041532055696e7436340a20202020202020203330204c45542074727573746565203d20226f3a22202b20484558285349474e45522829290a202020202020202034302049462045584953545328747275737465652920213d2031205448454e20474f544f20313130300a202020202020202035302049462045584953545328226f3a22202b206f6c645f747275737465652920213d2031205448454e20474f544f20313236300a20202020202020203630204c4554206e756d5472757374656573203d204c4f414428226e756d54727573746565732229202d20310a20202020202020203730204946206e756d5472757374656573203d3d2030205448454e20474f544f20313237300a20202020202020203830204946206e756d5472757374656573203e204c4f4144282271756f72756d2229205448454e20474f544f20313238300a0a20202020202020203130302049462063617374566f746528747275737465652c202232222c206f6c645f747275737465652920213d2031205448454e20474f544f203330300a20202020202020203131302044454c4554452822693a3222290a0a20202020202020203230302044494d206b6579546f4d6f766520415320537472696e670a20202020202020203231302044494d20726f77546f5265706c6163652041532055696e7436340a2020202020202020323230204c4554206b6579546f4d6f7665203d204c4f414428226f6c3a22202b206e756d5472757374656573290a2020202020202020323330204c455420726f77546f5265706c616365203d204c4f414428226f3a22202b206f6c645f74727573746565290a20202020202020203234302053544f524528226f3a22202b206b6579546f4d6f76652c20726f77546f5265706c616365290a20202020202020203235302053544f524528226f6c3a22202b20726f77546f5265706c6163652c206b6579546f4d6f7665290a20202020202020203236302044454c45544528226f3a22202b206f6c645f74727573746565290a20202020202020203237302044454c45544528226f6c3a22202b206e756d5472757374656573290a20202020202020203238302053544f524528226e756d5472757374656573222c206e756d5472757374656573290a0a20202020202020203330302052455455524e20300a0a2020202020202020313130302052455455524e203130300a2020202020202020313236302052455455524e203236300a2020202020202020313237302052455455524e203237300a2020202020202020313239302052455455524e203239300a456e642046756e6374696f6e0a0a46756e6374696f6e20566f74654368616e676551756f72756d286e65775f71756f72756d2055696e743634292055696e7436340a202020202020202031302044494d207472757374656520415320537472696e670a20202020202020203230204c45542074727573746565203d20226f3a22202b20484558285349474e45522829290a202020202020202033302049462045584953545328747275737465652920213d2031205448454e20474f544f20313130300a20202020202020203430204946204c4f4144282271756f72756d2229203d3d206e65775f71756f72756d205448454e20474f544f20313236300a20202020202020203530204946206e65775f71756f72756d203e204c4f414428226e756d54727573746565732229205448454e20474f544f20313330300a0a20202020202020203130302049462063617374566f746528747275737465652c202233222c2049544f41286e65775f71756f72756d292920213d2031205448454e20474f544f203230300a20202020202020203131302044454c4554452822693a3322290a20202020202020203132302053544f5245282271756f72756d222c206e65775f71756f72756d290a0a20202020202020203230302052455455524e20300a0a2020202020202020313130302052455455524e203130300a2020202020202020313236302052455455524e203236300a2020202020202020313330302052455455524e203330300a456e642046756e6374696f6e0a0a46756e6374696f6e20566f7465557064617465436f646528636f646520537472696e67292055696e7436340a202020202020202031302044494d207472757374656520415320537472696e670a20202020202020203230204c45542074727573746565203d20226f3a22202b20484558285349474e45522829290a202020202020202033302049462045584953545328747275737465652920213d2031205448454e20474f544f20313130300a0a20202020202020203130302049462063617374566f746528747275737465652c202234222c2073686132353628636f6465292920213d2031205448454e20474f544f203230300a20202020202020203131302044454c4554452822693a3422290a2020202020202020313230205550444154455f53435f434f444528636f6465290a0a20202020202020203230302052455455524e20300a0a2020202020202020313130302052455455524e203130300a2020202020202020313236302052455455524e203236300a456e642046756e6374696f6e0a0a46756e6374696f6e20636f756e74566f7465732874616c6c792055696e743634292055696e7436340a202020202020202031302044494d20766f7465732c20692041532055696e7436340a20202020202020203230204c455420766f746573203d20300a20202020202020203330204c45542069203d204c4f414428226e756d547275737465657322290a0a2020202020202020313030204946202874616c6c7920262028313c3c692929203c2031205448454e20474f544f203132300a2020202020202020313130204c455420766f746573203d20766f746573202b20310a2020202020202020313230204c45542069203d2069202d20310a20202020202020203133302049462069203c2031205448454e20474f544f20313030300a202020202020202031343020474f544f203130300a0a2020202020202020313030302052455455524e20766f7465730a456e642046756e6374696f6e0a0a46756e6374696f6e2053484c28612055696e7436342c20622055696e743634292055696e7436340a202020202020202031302052455455524e2061203c3c20620a456e642046756e6374696f6e0a0a46756e6374696f6e2063617374566f7465287472757374656520537472696e672c206b657920537472696e672c2070726f706f73616c20537472696e67292055696e7436340a202020202020202031302044494d2076616c75652c20632c2074616c6c795f73747220415320537472696e670a202020202020202032302044494d20692c2074616c6c792041532055696e7436340a20202020202020203330204c45542074616c6c795f737472203d202230220a20202020202020203430204946204558495354532822693a22202b206b65792920213d2031205448454e20474f544f203230300a20202020202020203530204c45542076616c7565203d204c4f41442822693a22202b206b6579290a20202020202020203630204c45542069203d20300a0a2020202020202020313030204c45542063203d205355425354522876616c75652c20692c2031290a2020202020202020313130204946202863203d3d20223a2229205448454e20474f544f203230300a2020202020202020313230204c45542074616c6c795f737472203d2074616c6c795f737472202b20630a2020202020202020313330204c45542069203d2069202b20310a202020202020202031343020474f544f203130300a0a2020202020202020323030204c45542074616c6c79203d2041544f492874616c6c795f737472290a202020202020202032313020494620282874616c6c792026203129203d3d203129205448454e20474f544f20313030300a2020202020202020323230204946205355425354522876616c75652c20692b312c205354524c454e2870726f706f73616c2929203d3d2070726f706f73616c205448454e20474f544f203330300a2020202020202020323330204c45542074616c6c79203d20300a0a2020202020202020333030204c45542074616c6c79203d2074616c6c79207c2053484c28312c204c4f4144287472757374656529202b2031290a202020202020202033313020494620636f756e74566f7465732874616c6c7929203c204c4f4144282271756f72756d2229205448454e20474f544f203430300a2020202020202020333230204c45542074616c6c79203d2074616c6c79207c20310a0a20202020202020203430302053544f52452822693a22202b206b65792c2049544f412874616c6c7929202b20223a22202b2070726f706f73616c290a20202020202020203431302052455455524e202874616c6c7920262031290a0a2020202020202020313030302052455455524e20300a456e642046756e6374696f6e0a6a53435f414354494f4e550123bd99d8305f13179f208254ed193b4342ac7b708457022bc816c4ddd09c372b00205bc8ea3e7703121ef0906e8c91706eb70749316550f56ce86f28f18ae0fcd300244049e694f1596729a998f58229d737389a7f964e059cf106457beda4302fa5010f9d426ba5e2ed2a9a62be7b4f43f5b2af8f045beae08cfdfdb0b9b5a42bf051010bd4ee1765e35e03bfa2402bc7ea42a8a058eb44552e70a2b878b64a76cfef340107b730915ad607ca099194a3ba44889a98cb820baf094cde87d25d7d7acd664b011e071a30f0d4fb7bac5dec78d4ec94e9ec3f6f56fc65e865fedd879c3a6202e201158fe67080aa1b5f47424b04857b3e91e8a8d8712536b7b5e069ff375e843159012037dff1ea8452bb9768718a1a358f82383146cd947c8ad322320d683736a898010e165fa69c91190a29bd9a7f24ceeed484217ae5881cf3f955ffccf4d72d6d59000e1529956aaddf6e12b24f9b52c1467f3de25b2104c9b1e05bca36b712667cee00229a78d59b4f3f7cdbb111a98288e84aafaa874b77f95400f634f3a8663e4ded0003289f5d287b9352ec89a924e08ade8177746c4c8d07cd43f887753accb46fe9002087e785c4ddb29ba2fe7455d9a890ffe1f4ade2480e594fe9d30285c0616f280000000000000000000000000000000000000000000000000000000000000000029dd1b49a3f123364a5982bc6782870468300b2e44b52c6292694921a17abdd1c82a7996a6512ec100c6aefb3535f2a66d5ada3c53311a197b7e698fc2c8973012799081b6baca56f0a7d2a28f31e031de4c60026edd5a69950f3ffc40c366f67000939ccb382e1020bcd06a9c9f56e14f006870da174cf3464ce13b7b031803d4e0021dcbb529cde32db6bf0ad808f5f18e0d59c0e592c4b8e48bed31ab8f7291f127c16d0eb853c08ea304b2b2c7bf04fd9941d8dd616f07634ee8908cb0f55b12bf6d1342edd1a27eb420988679560b161ed1f690b5d53dd6c3b135d164aa093030f1d871c60e5fcd5d0036d46f016e86abd6b1fa5ad644bf2ac12136f06354d0c1cd6b62215a08ee71b76742a80a92cb9fbff1426bff1842614907954d6d3d61dad3be1d8e6d713e67ec18675b059287c14de0b7c86348a667ce5fb9924b53e0cda6c2432d466824c9c014da46f0a2d9cbf912e7d86c7db9c69889b1a2aed85077c16260135032df488560cbb0074dfff3229626bacff4a9051fcbde374b9f72d00504cd835ac9098aa716311950702f42d085dd60ae9a97578372dcc2ebc80000df38f8d4b10befdc197bb57e187b4b8b167a3c449530e6aad4ea6e4c9c3770c001103b7f91b63a6315e186b0704ee9bd796bb930a32350b9c7021f936284ebaff000acd72bf54bcedef75d28aed45c5a4c5e17691546d8f0cb0cc57417eb407e9300000a56dac31a4414a17b5a8e2a64db9b56ed3d24b42bce6ce124c08d01ddb7a0b000446fb38f752ef4fa5e45d48f60b3da15ce1186ad74b783cd754ac162e9e8cc60020e5d4f21c99bcd2dacf1061a55ced95e41a1bc216ec9a30e618b5cb4c5a96e1002e0901e1b7dd2781928e9e8bdaad23921892df3c5252380d8ab82b07748420d5011f07e8c267327b4bb00bab8b8111288f35f37676486746ce91efca5dbd00cdc1012754f9aa652336fcdce677ec764897827195f52c144d2a67f584f18bf8f44e050128bc806dbb21bf02dd59430581ae6827ef7ac9e0ffda4821be7089b3bef7b9c7001ef348c0e72afa3287f96bfcc97feedb02934962f5d27c095384f70c170054e4012a6381f59212f4bed6cbc81fd9281567c1aa54238d4e6d179a3a9831c15e0131011ff24d11270060e348b70df430780040e87374a7839e80b5a91254df3e56262301
DERO explorer source code | explorer version (api): under development (1.0) | dero version: golang pre-alpha | Copyright 2017-2022 Dero Project