tx · 97kHeeMZRJKL9B56kwhMBxvdh87ycc4CazKJX4QJrVHK

3MwLW8P5yh5T2xML9QqFuVxkVkm9RXqnzXh:  -0.01000000 Waves

2022.12.07 03:36 [2349220] smart account 3MwLW8P5yh5T2xML9QqFuVxkVkm9RXqnzXh > SELF 0.00000000 Waves

{ "type": 13, "id": "97kHeeMZRJKL9B56kwhMBxvdh87ycc4CazKJX4QJrVHK", "fee": 1000000, "feeAssetId": null, "timestamp": 1670373371000, "version": 2, "chainId": 84, "sender": "3MwLW8P5yh5T2xML9QqFuVxkVkm9RXqnzXh", "senderPublicKey": "HscGVyJG5M3NMHWKfQbucCBsFLGPi8VmTxTAmcBbaWTa", "proofs": [ "2YJW2MixRkcqKnauKH52krn1SChdoRmR59AEhxtRHsYPcj9qHXQ8DbMdu5oy2exKSo1gioR7fS74veEyASaw8jKn" ], "script": "base64:BgITCAISAwoBCBIDCgEIEgASAwoBARcABlNjYWxlNgDAhD0ABlNjYWxlOACAwtcvAAdTY2FsZTE2CQBoAgUGU2NhbGU4BQZTY2FsZTgACnZhbGlkYXRvcnMJAMwIAgIjM05BbXFHanhSQlJQb1JIWlVVcXZoaU5TNmF4bkdwaW5MSEMFA25pbAAPbW9uZXlCb3hBZGRyZXNzCQEHQWRkcmVzcwEBGgFUZKnP467xWXotJQOt2k8QiNBvrQpHH8SpAAdhc3NldElkAixISG1hRlFwVW9id0t4emp6NEVDYUJQdG9GNjlrdWpLd1UyY296YVV6VHNndgALcHV6emxlUG9vbHMJAMwIAgIjM042U3RKZGdtVGZBUnNSTm45WHQ1ckRZRXMzcHI0S0d5MXYJAMwIAgIjM014RFREUXRuUjd6cEx1SHlneGdGenJxS1oyQlN3emNqeWEFA25pbAEKZ2V0QmFsYW5jZQEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgRVbml0BAF4BQckbWF0Y2gwCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQEFdmFsdWUBBQdhc3NldElkAQl0cnlHZXRJbnQCB2FkZHJlc3MDa2V5BAckbWF0Y2gwCQCaCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWIFByRtYXRjaDAFAWIAAAEJdHJ5R2V0U3RyAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAnQgCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFiBQckbWF0Y2gwBQFiAgABDmdldEFzc2V0U3RyaW5nAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAJANgEAQUBYgIFV0FWRVMBG2dldFB1enpsZVBvb2xTdXBwbGllZEFtb3VudAEGcG9vbElkBAdiYWxhbmNlCQDwBwIJAQdBZGRyZXNzAQkA2QQBBQZwb29sSWQJANkEAQUHYXNzZXRJZAUHYmFsYW5jZQEWZ2V0VG90YWxTdXBwbGllZEFtb3VudAAEC2N1cnJlbnRQb29sCQEJdHJ5R2V0U3RyAgUEdGhpcwILY3VycmVudFBvb2wDCQAAAgULY3VycmVudFBvb2wCAAkAAgEJAKwCAgIZQ2Fubm90IGZpbmQgcG9vbCB3aXRoIGlkIAULY3VycmVudFBvb2wJARtnZXRQdXp6bGVQb29sU3VwcGxpZWRBbW91bnQBBQtjdXJyZW50UG9vbAEWd2l0aGRyYXdGcm9tUHV6emxlUG9vbAIGcG9vbElkBmFtb3VudAQLcG9vbEFkZHJlc3MJAQdBZGRyZXNzAQkA2QQBBQZwb29sSWQECndpdGhkcmF3VHgDCQBmAgUGYW1vdW50AAAJAPwHBAULcG9vbEFkZHJlc3MCCHdpdGhkcmF3CQDMCAIFB2Fzc2V0SWQJAMwIAgUGYW1vdW50BQNuaWwFA25pbAIAAwkAAAIFCndpdGhkcmF3VHgFCndpdGhkcmF3VHgFCndpdGhkcmF3VHgJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDGNhbGN1bGF0ZUZlZQAEDHN0YWtlZEFtb3VudAkBCXRyeUdldEludAIFBHRoaXMCDWdsb2JhbF9zdGFrZWQECWxhc3RTUmF0ZQkBCXRyeUdldEludAIFBHRoaXMCFWdsb2JhbF9sYXN0Q2hlY2tTUmF0ZQQHc0Ftb3VudAkAawMFDHN0YWtlZEFtb3VudAUJbGFzdFNSYXRlBQZTY2FsZTgEDXRvdGFsU3VwcGxpZWQJARZnZXRUb3RhbFN1cHBsaWVkQW1vdW50AAQEZGlmZgkAZQIFDXRvdGFsU3VwcGxpZWQFB3NBbW91bnQEA2ZlZQkAawMFBGRpZmYAwJaxAgUGU2NhbGU4AwkAZgIFA2ZlZQAABQNmZWUAAAEOY2FsY3VsYXRlU1JhdGUABA5sYXN0Q2hlY2tTUmF0ZQkBCXRyeUdldEludAIFBHRoaXMCFWdsb2JhbF9sYXN0Q2hlY2tTUmF0ZQQMc3Rha2VkQW1vdW50CQEJdHJ5R2V0SW50AgUEdGhpcwINZ2xvYmFsX3N0YWtlZAQRbGFzdENoZWNrU0Ftb3VudXQJAGsDBQxzdGFrZWRBbW91bnQFDmxhc3RDaGVja1NSYXRlBQZTY2FsZTgDCQAAAgUObGFzdENoZWNrU1JhdGUAAAUGU2NhbGU4AwkAAAIFEWxhc3RDaGVja1NBbW91bnV0AAAFDmxhc3RDaGVja1NSYXRlBAVzUmF0ZQkAawMFDmxhc3RDaGVja1NSYXRlCQBkAgkAawMJAGUCCQBrAwkBFmdldFRvdGFsU3VwcGxpZWRBbW91bnQABQZTY2FsZTYFEWxhc3RDaGVja1NBbW91bnV0BQZTY2FsZTYJAGUCBQZTY2FsZTgAwJaxAgUGU2NhbGU4BQZTY2FsZTYFBlNjYWxlNgMJAGYCBQZTY2FsZTgFBXNSYXRlBQ5sYXN0Q2hlY2tTUmF0ZQUFc1JhdGUBDHJlY2FsY1Jlc3VsdAEMc3Rha2VkQ2hhbmdlBAxzdGFrZWRBbW91bnQJAQl0cnlHZXRJbnQCBQR0aGlzAg1nbG9iYWxfc3Rha2VkBAVzUmF0ZQkBDmNhbGN1bGF0ZVNSYXRlAAkAzAgCCQEMSW50ZWdlckVudHJ5AgINZ2xvYmFsX3N0YWtlZAkAZAIFDHN0YWtlZEFtb3VudAUMc3Rha2VkQ2hhbmdlCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhVnbG9iYWxfbGFzdENoZWNrU1JhdGUFBXNSYXRlBQNuaWwBDHN1cHBseVJlc3VsdAEGcG9vbElkAwkAAAIJAM8IAgULcHV6emxlUG9vbHMFBnBvb2xJZAUEdW5pdAkAAgEJAKwCAgIPVW5rbm93biBwb29sSWQgBQZwb29sSWQECmFzc2V0Qnl0ZXMJANkEAQUHYXNzZXRJZAQHYmFsYW5jZQkBCmdldEJhbGFuY2UBBQphc3NldEJ5dGVzBANpbnYJAPwHBAkBB0FkZHJlc3MBCQDZBAEFBnBvb2xJZAIGc3VwcGx5BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCmFzc2V0Qnl0ZXMFB2JhbGFuY2UFA25pbAMJAAACBQNpbnYFA2ludgkAzAgCCQELU3RyaW5nRW50cnkCAgtjdXJyZW50UG9vbAUGcG9vbElkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BD2NoYXJnZUZlZVJlc3VsdAIGcG9vbElkA2ZlZQQNd2l0aGRyYXdGZWVUeAkBFndpdGhkcmF3RnJvbVB1enpsZVBvb2wCBQZwb29sSWQFA2ZlZQMJAAACBQ13aXRoZHJhd0ZlZVR4BQ13aXRoZHJhd0ZlZVR4CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFD21vbmV5Qm94QWRkcmVzcwUDZmVlCQDZBAEFB2Fzc2V0SWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEOd2l0aGRyYXdSZXN1bHQABAtjdXJyZW50UG9vbAkBCXRyeUdldFN0cgIFBHRoaXMCC2N1cnJlbnRQb29sAwkAAAIFC2N1cnJlbnRQb29sAgAJAAIBCQCsAgICGUNhbm5vdCBmaW5kIHBvb2wgd2l0aCBpZCAFC2N1cnJlbnRQb29sBAZhbW91bnQJARtnZXRQdXp6bGVQb29sU3VwcGxpZWRBbW91bnQBBQtjdXJyZW50UG9vbAQCdHgJARZ3aXRoZHJhd0Zyb21QdXp6bGVQb29sAgULY3VycmVudFBvb2wFBmFtb3VudAMJAAACBQJ0eAUCdHgFAnR4CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQtzdGFrZVJlc3VsdAIEdXNlcgZhbW91bnQEB3NBbW91bnQJAGsDBQZhbW91bnQFBlNjYWxlOAkBDmNhbGN1bGF0ZVNSYXRlAAkAzggCCQEMcmVjYWxjUmVzdWx0AQUHc0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyAgdfc3Rha2VkCQBkAgkBCXRyeUdldEludAIFBHRoaXMJAKwCAgUEdXNlcgIHX3N0YWtlZAUHc0Ftb3VudAUDbmlsAQ11bnN0YWtlUmVzdWx0AgR1c2VyBmFtb3VudAQHc0Ftb3VudAkAawMFBmFtb3VudAUGU2NhbGU4CQEOY2FsY3VsYXRlU1JhdGUABAp1c2VyU3Rha2VkCQEJdHJ5R2V0SW50AgUEdGhpcwkArAICBQR1c2VyAgdfc3Rha2VkBA11bnN0YWtlQW1vdW50AwkAZgIFB3NBbW91bnQFCnVzZXJTdGFrZWQFCnVzZXJTdGFrZWQFB3NBbW91bnQJAM4IAgkBDHJlY2FsY1Jlc3VsdAEJAQEtAQUNdW5zdGFrZUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyAgdfc3Rha2VkCQBlAgUKdXNlclN0YWtlZAUNdW5zdGFrZUFtb3VudAUDbmlsARl3aXRoZHJhd0FuZFRyYW5zZmVyUmVzdWx0AwtjdXJyZW50UG9vbAZjYWxsZXIGYW1vdW50BAJ0eAkBFndpdGhkcmF3RnJvbVB1enpsZVBvb2wCBQtjdXJyZW50UG9vbAUGYW1vdW50AwkAAAIFAnR4BQJ0eAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFBmFtb3VudAkA2QQBBQdhc3NldElkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAWkBBGluaXQBBnBvb2xJZAQLY3VycmVudFBvb2wJAQl0cnlHZXRTdHICBQR0aGlzAgtjdXJyZW50UG9vbAMJAAACCQDPCAIFCnZhbGlkYXRvcnMJAKUIAQgFAWkGY2FsbGVyBQR1bml0CQACAQINQWNjZXNzIGRlbmllZAMJAAACBQtjdXJyZW50UG9vbAIACQDMCAIJAQtTdHJpbmdFbnRyeQICC2N1cnJlbnRQb29sBQZwb29sSWQFA25pbAUDbmlsAWkBCXJlYmFsYW5jZQEGcG9vbElkBAtjdXJyZW50UG9vbAkBCXRyeUdldFN0cgIFBHRoaXMCC2N1cnJlbnRQb29sAwkAAAIJAM8IAgUKdmFsaWRhdG9ycwkApQgBCAUBaQZjYWxsZXIFBHVuaXQJAAIBAg1BY2Nlc3MgZGVuaWVkAwkAAAIFC2N1cnJlbnRQb29sBQZwb29sSWQJAAIBCQCsAgICE0FscmVhZHkgc3VwcGxpZWQgdG8FC2N1cnJlbnRQb29sBAp3aXRoZHJhd1R4CQEOd2l0aGRyYXdSZXN1bHQAAwkAAAIFCndpdGhkcmF3VHgFCndpdGhkcmF3VHgJAQxzdXBwbHlSZXN1bHQBBQZwb29sSWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFc3Rha2UABAR1c2VyCQClCAEIBQFpBmNhbGxlcgQGYW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQLY3VycmVudFBvb2wJAQl0cnlHZXRTdHICBQR0aGlzAgtjdXJyZW50UG9vbAMDCQBnAgAABQZhbW91bnQGCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQJANkEAQUHYXNzZXRJZAkAAgECFmludmFsaWQgdG9rZW4gYXR0YWNoZWQDCQAAAgULY3VycmVudFBvb2wCAAkAAgECFFBvb2wgbm90IGluaXRpYWxpemVkBANmZWUJAQxjYWxjdWxhdGVGZWUAAwkAAAIFA2ZlZQUDZmVlCQDOCAIJAM4IAgkBC3N0YWtlUmVzdWx0AgUEdXNlcgUGYW1vdW50CQEMc3VwcGx5UmVzdWx0AQULY3VycmVudFBvb2wJAQ9jaGFyZ2VGZWVSZXN1bHQCBQtjdXJyZW50UG9vbAUDZmVlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBB3Vuc3Rha2UBBmFtb3VudAQEdXNlcgkApQgBCAUBaQZjYWxsZXIEC2N1cnJlbnRQb29sCQEJdHJ5R2V0U3RyAgUEdGhpcwILY3VycmVudFBvb2wEBWFzc2V0CQDZBAEFB2Fzc2V0SWQEA2ZlZQkBDGNhbGN1bGF0ZUZlZQADCQAAAgUDZmVlBQNmZWUJAM4IAgkAzggCCQENdW5zdGFrZVJlc3VsdAIFBHVzZXIFBmFtb3VudAkBGXdpdGhkcmF3QW5kVHJhbnNmZXJSZXN1bHQDBQtjdXJyZW50UG9vbAgFAWkGY2FsbGVyBQZhbW91bnQJAQ9jaGFyZ2VGZWVSZXN1bHQCBQtjdXJyZW50UG9vbAUDZmVlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tlea1AR/E=", "height": 2349220, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: D122vmEdqLmEQaJcHC6PD8NFyvaLVFECSTjr5sA6FNL2 Next: AEcMiCB7dKNKF8t3LCw7WUpJzP72t2Vdv26fT8Qq5zDT Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 1000000
55
66 let b = 100000000
77
88 let c = (b * b)
99
1010 let d = ["3NAmqGjxRBRPoRHZUUqvhiNS6axnGpinLHC"]
1111
1212 let e = Address(base58'3My6LmrRSRvJ73T14oT5k53SGPavGFoacWc')
1313
1414 let f = "HHmaFQpUobwKxzjz4ECaBPtoF69kujKwU2cozaUzTsgv"
1515
1616 let g = ["3N6StJdgmTfARsRNn9Xt5rDYEs3pr4KGy1v", "3MxDTDQtnR7zpLuHygxgFzrqKZ2BSwzcjya"]
1717
1818 func h (f) = {
1919 let i = f
2020 if ($isInstanceOf(i, "Unit"))
2121 then {
2222 let j = i
2323 wavesBalance(this).available
2424 }
2525 else assetBalance(this, value(f))
2626 }
2727
2828
2929 func k (l,m) = {
3030 let i = getInteger(l, m)
3131 if ($isInstanceOf(i, "Int"))
3232 then {
3333 let n = i
3434 n
3535 }
3636 else 0
3737 }
3838
3939
4040 func o (l,m) = {
4141 let i = getString(l, m)
4242 if ($isInstanceOf(i, "String"))
4343 then {
4444 let n = i
4545 n
4646 }
4747 else ""
4848 }
4949
5050
5151 func p (f) = {
5252 let i = f
5353 if ($isInstanceOf(i, "ByteVector"))
5454 then {
5555 let n = i
5656 toBase58String(n)
5757 }
5858 else "WAVES"
5959 }
6060
6161
6262 func q (r) = {
6363 let s = assetBalance(Address(fromBase58String(r)), fromBase58String(f))
6464 s
6565 }
6666
6767
6868 func t () = {
6969 let u = o(this, "currentPool")
7070 if ((u == ""))
7171 then throw(("Cannot find pool with id " + u))
7272 else q(u)
7373 }
7474
7575
7676 func v (r,w) = {
7777 let x = Address(fromBase58String(r))
7878 let y = if ((w > 0))
7979 then invoke(x, "withdraw", [f, w], nil)
8080 else ""
8181 if ((y == y))
8282 then y
8383 else throw("Strict value is not equal to itself.")
8484 }
8585
8686
8787 func z () = {
8888 let A = k(this, "global_staked")
8989 let B = k(this, "global_lastCheckSRate")
9090 let C = fraction(A, B, b)
9191 let D = t()
9292 let E = (D - C)
9393 let F = fraction(E, 5000000, b)
9494 if ((F > 0))
9595 then F
9696 else 0
9797 }
9898
9999
100100 func G () = {
101101 let H = k(this, "global_lastCheckSRate")
102102 let A = k(this, "global_staked")
103103 let I = fraction(A, H, b)
104104 if ((H == 0))
105105 then b
106106 else if ((I == 0))
107107 then H
108108 else {
109109 let J = fraction(H, (fraction((fraction(t(), a, I) - a), (b - 5000000), b) + a), a)
110110 if ((b > J))
111111 then H
112112 else J
113113 }
114114 }
115115
116116
117117 func K (L) = {
118118 let A = k(this, "global_staked")
119119 let J = G()
120120 [IntegerEntry("global_staked", (A + L)), IntegerEntry("global_lastCheckSRate", J)]
121121 }
122122
123123
124124 func M (r) = if ((indexOf(g, r) == unit))
125125 then throw(("Unknown poolId " + r))
126126 else {
127127 let N = fromBase58String(f)
128128 let s = h(N)
129129 let O = invoke(Address(fromBase58String(r)), "supply", nil, [AttachedPayment(N, s)])
130130 if ((O == O))
131131 then [StringEntry("currentPool", r)]
132132 else throw("Strict value is not equal to itself.")
133133 }
134134
135135
136136 func P (r,F) = {
137137 let Q = v(r, F)
138138 if ((Q == Q))
139139 then [ScriptTransfer(e, F, fromBase58String(f))]
140140 else throw("Strict value is not equal to itself.")
141141 }
142142
143143
144144 func R () = {
145145 let u = o(this, "currentPool")
146146 if ((u == ""))
147147 then throw(("Cannot find pool with id " + u))
148148 else {
149149 let w = q(u)
150150 let S = v(u, w)
151151 if ((S == S))
152152 then S
153153 else throw("Strict value is not equal to itself.")
154154 }
155155 }
156156
157157
158158 func T (U,w) = {
159159 let C = fraction(w, b, G())
160160 (K(C) ++ [IntegerEntry((U + "_staked"), (k(this, (U + "_staked")) + C))])
161161 }
162162
163163
164164 func V (U,w) = {
165165 let C = fraction(w, b, G())
166166 let W = k(this, (U + "_staked"))
167167 let X = if ((C > W))
168168 then W
169169 else C
170170 (K(-(X)) ++ [IntegerEntry((U + "_staked"), (W - X))])
171171 }
172172
173173
174174 func Y (u,Z,w) = {
175175 let S = v(u, w)
176176 if ((S == S))
177177 then [ScriptTransfer(Z, w, fromBase58String(f))]
178178 else throw("Strict value is not equal to itself.")
179179 }
180180
181181
182182 @Callable(aa)
183183 func init (r) = {
184184 let u = o(this, "currentPool")
185185 if ((indexOf(d, toString(aa.caller)) == unit))
186186 then throw("Access denied")
187187 else if ((u == ""))
188188 then [StringEntry("currentPool", r)]
189189 else nil
190190 }
191191
192192
193193
194194 @Callable(aa)
195195 func rebalance (r) = {
196196 let u = o(this, "currentPool")
197197 if ((indexOf(d, toString(aa.caller)) == unit))
198198 then throw("Access denied")
199199 else if ((u == r))
200200 then throw(("Already supplied to" + u))
201201 else {
202202 let y = R()
203203 if ((y == y))
204204 then M(r)
205205 else throw("Strict value is not equal to itself.")
206206 }
207207 }
208208
209209
210210
211211 @Callable(aa)
212212 func stake () = {
213213 let U = toString(aa.caller)
214214 let w = aa.payments[0].amount
215215 let u = o(this, "currentPool")
216216 if (if ((0 >= w))
217217 then true
218218 else (aa.payments[0].assetId != fromBase58String(f)))
219219 then throw("invalid token attached")
220220 else if ((u == ""))
221221 then throw("Pool not initialized")
222222 else {
223223 let F = z()
224224 if ((F == F))
225225 then ((T(U, w) ++ M(u)) ++ P(u, F))
226226 else throw("Strict value is not equal to itself.")
227227 }
228228 }
229229
230230
231231
232232 @Callable(aa)
233233 func unstake (w) = {
234234 let U = toString(aa.caller)
235235 let u = o(this, "currentPool")
236236 let ab = fromBase58String(f)
237237 let F = z()
238238 if ((F == F))
239239 then ((V(U, w) ++ Y(u, aa.caller, w)) ++ P(u, F))
240240 else throw("Strict value is not equal to itself.")
241241 }
242242
243243
244244 @Verifier(S)
245245 func ac () = sigVerify(S.bodyBytes, S.proofs[0], S.senderPublicKey)
246246

github/deemru/w8io/026f985 
45.66 ms