tx · A96cvUwN2aspGnonUphTs3a5nLzxBR4srVyZh5P6h3vP

3N4zabLE5JbtJfVdNL7CP1STkCnmU15Uwyz:  -0.01000000 Waves

2021.08.30 09:02 [1680690] smart account 3N4zabLE5JbtJfVdNL7CP1STkCnmU15Uwyz > SELF 0.00000000 Waves

{ "type": 13, "id": "A96cvUwN2aspGnonUphTs3a5nLzxBR4srVyZh5P6h3vP", "fee": 1000000, "feeAssetId": null, "timestamp": 1630303374699, "version": 2, "chainId": 84, "sender": "3N4zabLE5JbtJfVdNL7CP1STkCnmU15Uwyz", "senderPublicKey": "H2xJWsT7HURFk1LcASPmFbNrxJ1AoYmbjiYy2qTiUDmg", "proofs": [ "2bqXZKZ42QFviHZaUVoW3hin2m2YtcpG4CGf4QFVCJnC6d9PTxtQDHizXwwfc7fcFvdnGuzm64h5HSwZsrLvJQ6H" ], "script": "base64:AAIDAAAAAAAAB8EIARIDCgEIEgQKAggIGhUKAmExEg9TZXJ2ZXJQdWJsaWNLZXkaDAoCYTISBlNFUlZFUhoZCgJhMxITUkFORE9SQUNMRVRJTUVGUkFNRRoNCgJhNBIHV0FWRUxFVBoUCgJhNRIOV0FWRUxFVDFmcm9tMTAaEAoCYTYSCkNPTU1JU1NJT04aCwoCYTcSBUJFVDAyGgsKAmE4EgVCRVQwNRoKCgJhORIEQkVUMRoKCgJiMRIEQkVUMhoKCgJiMhIEQkVUNBoOCgJiMxIIUkFURU1VTFQaCwoCYjQSBVJBVEUxGgsKAmI1EgVSQVRFMhoLCgJiNhIFUkFURTMaCwoCYjcSBVJBVEU0GgsKAmI4EgVSQVRFNRoSCgJiORIMSWR4R2FtZVN0YXRlGhUKAmMxEg9JZHhQbGF5ZXJDaG9pY2UaFwoCYzISEUlkeFBsYXllclB1YktleTU4GhYKAmMzEhBJZHhTdGFydGVkSGVpZ2h0Gg8KAmM0EglJZHhXaW5BbXQaFQoCYzUSD0dBTUVTQ09VTlRFUktFWRoUCgJjNhIOUkVTRVJWQVRJT05LRVkaFAoCYzcSDlNUQVRFU1VCTUlUVEVEGg4KAmM4EghTVEFURVdPThoPCgJjORIJU1RBVEVMT1NUGhUKAmQxEg9HZW5lcmF0ZVJhbmRJbnQaDAoCZDISBmdhbWVJZBoNCgJkMxIHcnNhU2lnbhoRCgJkNBILcnNhU2lnVmFsaWQaCgoCZDUSBHJhbmQaHwoCZDYSGVJlbW92ZVVuZGVyc2NvcmVJZlByZXNlbnQaDwoCZDcSCXJlbWFpbmluZxoYCgJkOBISUGFyc2VOZXh0QXR0cmlidXRlGgcKAmQ5EgFzGggKAmUxEgJubhoHCgJlMhIBdhoSCgJlMxIMdG1wUmVtYWluaW5nGhQKAmU0Eg5yZW1haW5pbmdTdGF0ZRoZCgJlNRITUGFyc2VHYW1lUmF3RGF0YVN0choRCgJlNhILcmF3U3RhdGVTdHIaDwoCZTcSCWdhbWVTdGF0ZRoSCgJlOBIMcGxheWVyQ2hvaWNlGhQKAmU5Eg5wbGF5ZXJQdWJLZXk1OBoTCgJmMRINc3RhcnRlZEhlaWdodBoMCgJmMhIGd2luQW10GhkKAmYzEhNFeHRyYWN0R2FtZURhdGFMaXN0GhAKAmY0EgpyYXdEYXRhU3RyGg0KAmY1EgckbWF0Y2gwGgkKAmY2EgNzdHIaGAoCZjcSEkV4dHJhY3RSZXNlcnZlZEFtdBoHCgJmOBIBYRokCgJmORIeVmFsaWRhdGVBbmRJbmNyZWFzZVJlc2VydmVkQW10GhcKAmcxEhFuZXdSZXNlcnZlZEFtb3VudBoNCgJnMhIHYmFsYW5jZRoWCgJnMxIQSW5jcmVtZW50R2FtZU51bRoNCgJnNBIHZ2FtZU51bRoJCgJnNRIDbnVtGhkKAmc2EhNEZWNyZWFzZVJlc2VydmVkQW10GhkKAmc3EhNGb3JtYXRHYW1lRGF0YVBhcmFtGgcKAmc4EgFwGhcKAmc5EhFGb3JtYXRHYW1lRGF0YVN0choRCgJoMRILcmFuZE9yRW1wdHkaEgoCaDISDGZ1bGxTdGF0ZVN0choPCgJoMxIJUmFuZFRvU3RyGgcKAmg0EgFyGiAKAmg1EhpWYWxpZGF0ZUJldEFuZERlZmluZVdpbkFtdBoMCgJoNhIGYmV0QW10GhEKAmg3EgtiZXRBbXRWYWxpZBoSCgJoOBIMYnVsbGV0c0NvdW50GgkKAmg5EgNiZXQaCAoCaTESAmIxGgsKAmkyEgVmb3JCMhoICgJpMxICYjIaCwoCaTQSBWZvckIzGggKAmk1EgJiMxoLCgJpNhIFZm9yQjQaCAoCaTcSAmI0GgsKAmk4EgVmb3JCNRoICgJpORICYjUaCwoCajESBWZvckI2GggKAmoyEgJiNhoTCgJqMxINYWN0aXZlQnVsbGV0cxoPCgJqNBIJZ2V0V2luU3RyGhEKAmo1EgtJc1BsYXllcldpbhoNCgJqNhIHcmFuZFN0choNCgJqNxIHcmFuZEludBoRCgJqOBILY2hvaWNlQXJyYXkaEgoCajkSDFdpblNjcmlwdFNldBoTCgJrMRINcGxheWVyQWRkcmVzcxoUCgJrMhIObmV3R2FtZURhdGFTdHIaEgoCazMSDHdpbkJ5VGltZW91dBoXCgJrNBIRZGVjcmVhc2VkUmVzZXJ2ZXMaFAoCazUSDndTZXRDb21tb25EYXRhGhQKAms2Eg50U2V0Q29tbW9uRGF0YRocCgJrNxIWbmV3R2FtZURhdGFTdHJBZGp1c3RlZBoOCgJrOBIIZ2FtZURhdGEaBwoCazkSAWkaEAoCbDESCm5ld0dh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", "height": 1680690, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: YNrxnAa6KAqkXarRzGbjvVERhLKKHN7vcosuUyxMbX3 Next: 9HsaoEDHRegTfjyVzrppe68z7byRZAhs1RsWzoYHM1pc Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let ServerPublicKey = fromBase58String("CGZFbzAaJCpy2bXmwSDeHG3BTNyZzTUrVpeFWj5nbwm5")
4+let ServerPublicKey = fromBase58String("4VAAsVuuSJAB5XammAXe6G98tYKJYvGheyvpKG8NJWn1")
55
66 let SERVER = addressFromStringValue("3NAPoUBwL7jaPW3ngVF3dT5b68q4eaHAiiC")
77
99
1010 let WAVELET = ((100 * 1000) * 1000)
1111
12+let WAVELET1from10 = ((100 * 1000) * 100)
13+
1214 let COMMISSION = ((9 * WAVELET) / 1000)
15+
16+let BET02 = (2 * WAVELET1from10)
17+
18+let BET05 = (5 * WAVELET1from10)
1319
1420 let BET1 = (1 * WAVELET)
1521
1622 let BET2 = (2 * WAVELET)
1723
1824 let BET4 = (4 * WAVELET)
19-
20-let BET8 = (8 * WAVELET)
21-
22-let BET14 = (14 * WAVELET)
2325
2426 let RATEMULT = 10000
2527
4345
4446 let IdxWinAmt = 4
4547
46-let IdxRandOrEmpty = 5
47-
4848 let GAMESCOUNTERKEY = "$GAME_NUM"
4949
5050 let RESERVATIONKEY = "$RESERVED_AMOUNT"
5454 let STATEWON = "WON"
5555
5656 let STATELOST = "LOST"
57-
58-func getAnswer (playerChoice) = BET14
59-
6057
6158 func GenerateRandInt (gameId,rsaSign) = {
6259 let rsaSigValid = sigVerify(toBytes(gameId), rsaSign, ServerPublicKey)
183180
184181
185182 func ValidateBetAndDefineWinAmt (betAmt,playerChoice) = {
186- let betAmtValid = if (if (if (if (if ((betAmt == (BET1 + COMMISSION)))
183+ let betAmtValid = if (if (if (if (if ((betAmt == (BET02 + COMMISSION)))
184+ then true
185+ else (betAmt == (BET05 + COMMISSION)))
186+ then true
187+ else (betAmt == (BET1 + COMMISSION)))
187188 then true
188189 else (betAmt == (BET2 + COMMISSION)))
189190 then true
190191 else (betAmt == (BET4 + COMMISSION)))
191- then true
192- else (betAmt == (BET8 + COMMISSION)))
193- then true
194- else (betAmt == (BET14 + COMMISSION)))
195192 then true
196193 else false
197194 if (betAmtValid)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let ServerPublicKey = fromBase58String("CGZFbzAaJCpy2bXmwSDeHG3BTNyZzTUrVpeFWj5nbwm5")
4+let ServerPublicKey = fromBase58String("4VAAsVuuSJAB5XammAXe6G98tYKJYvGheyvpKG8NJWn1")
55
66 let SERVER = addressFromStringValue("3NAPoUBwL7jaPW3ngVF3dT5b68q4eaHAiiC")
77
88 let RANDORACLETIMEFRAME = 4320
99
1010 let WAVELET = ((100 * 1000) * 1000)
1111
12+let WAVELET1from10 = ((100 * 1000) * 100)
13+
1214 let COMMISSION = ((9 * WAVELET) / 1000)
15+
16+let BET02 = (2 * WAVELET1from10)
17+
18+let BET05 = (5 * WAVELET1from10)
1319
1420 let BET1 = (1 * WAVELET)
1521
1622 let BET2 = (2 * WAVELET)
1723
1824 let BET4 = (4 * WAVELET)
19-
20-let BET8 = (8 * WAVELET)
21-
22-let BET14 = (14 * WAVELET)
2325
2426 let RATEMULT = 10000
2527
2628 let RATE1 = 39655
2729
2830 let RATE2 = 24600
2931
3032 let RATE3 = 19000
3133
3234 let RATE4 = 14200
3335
3436 let RATE5 = 11400
3537
3638 let IdxGameState = 0
3739
3840 let IdxPlayerChoice = 1
3941
4042 let IdxPlayerPubKey58 = 2
4143
4244 let IdxStartedHeight = 3
4345
4446 let IdxWinAmt = 4
4547
46-let IdxRandOrEmpty = 5
47-
4848 let GAMESCOUNTERKEY = "$GAME_NUM"
4949
5050 let RESERVATIONKEY = "$RESERVED_AMOUNT"
5151
5252 let STATESUBMITTED = "SUBMITTED"
5353
5454 let STATEWON = "WON"
5555
5656 let STATELOST = "LOST"
57-
58-func getAnswer (playerChoice) = BET14
59-
6057
6158 func GenerateRandInt (gameId,rsaSign) = {
6259 let rsaSigValid = sigVerify(toBytes(gameId), rsaSign, ServerPublicKey)
6360 if (rsaSigValid)
6461 then {
6562 let rand = (toInt(sha256(rsaSign)) % 6)
6663 if ((0 > rand))
6764 then ((-1 * rand) + 1)
6865 else (rand + 1)
6966 }
7067 else throw("Invalid RSA signature")
7168 }
7269
7370
7471 func RemoveUnderscoreIfPresent (remaining) = if ((size(remaining) > 0))
7572 then drop(remaining, 1)
7673 else remaining
7774
7875
7976 func ParseNextAttribute (remaining) = {
8077 let s = size(remaining)
8178 if ((s > 0))
8279 then {
8380 let nn = parseIntValue(take(remaining, 2))
8481 let v = take(drop(remaining, 2), nn)
8582 let tmpRemaining = drop(remaining, (nn + 2))
8683 let remainingState = RemoveUnderscoreIfPresent(tmpRemaining)
8784 [v, remainingState]
8885 }
8986 else throw("Empty string was passed into parseNextAttribute func")
9087 }
9188
9289
9390 func ParseGameRawDataStr (rawStateStr) = {
9491 let gameState = ParseNextAttribute(rawStateStr)
9592 let playerChoice = ParseNextAttribute(gameState[1])
9693 let playerPubKey58 = ParseNextAttribute(playerChoice[1])
9794 let startedHeight = ParseNextAttribute(playerPubKey58[1])
9895 let winAmt = ParseNextAttribute(startedHeight[1])
9996 [gameState[0], playerChoice[0], playerPubKey58[0], startedHeight[0], winAmt[0]]
10097 }
10198
10299
103100 func ExtractGameDataList (gameId) = {
104101 let rawDataStr = match getString(this, gameId) {
105102 case str: String =>
106103 str
107104 case _ =>
108105 throw(("Couldn't find game by " + gameId))
109106 }
110107 ParseGameRawDataStr(rawDataStr)
111108 }
112109
113110
114111 func ExtractReservedAmt () = match getInteger(this, RESERVATIONKEY) {
115112 case a: Int =>
116113 a
117114 case _ =>
118115 0
119116 }
120117
121118
122119 func ValidateAndIncreaseReservedAmt (winAmt) = {
123120 let newReservedAmount = (ExtractReservedAmt() + winAmt)
124121 let balance = wavesBalance(this)
125122 if ((newReservedAmount > balance))
126123 then throw("Insufficient funds on Russian Roulette account. Transaction was rejected for your safety.")
127124 else newReservedAmount
128125 }
129126
130127
131128 func IncrementGameNum () = {
132129 let gameNum = match getInteger(this, GAMESCOUNTERKEY) {
133130 case num: Int =>
134131 num
135132 case _ =>
136133 0
137134 }
138135 (gameNum + 1)
139136 }
140137
141138
142139 func DecreaseReservedAmt (gameId,winAmt) = {
143140 let newReservedAmount = (ExtractReservedAmt() - winAmt)
144141 if ((0 > newReservedAmount))
145142 then throw("Invalid Russian Roulette account state - reserved amount is less than 0")
146143 else DataEntry(RESERVATIONKEY, newReservedAmount)
147144 }
148145
149146
150147 func FormatGameDataParam (p) = {
151148 let s = size(p)
152149 if ((s == 0))
153150 then throw("Parameter size must be greater then 0")
154151 else if ((s > 99))
155152 then throw("Parameter size must be less then 100")
156153 else if ((10 > s))
157154 then (("0" + toString(s)) + p)
158155 else (toString(s) + p)
159156 }
160157
161158
162159 func FormatGameDataStr (gameState,playerChoice,playerPubKey58,startedHeight,winAmt,randOrEmpty) = {
163160 let fullStateStr = ((((((((FormatGameDataParam(gameState) + "_") + FormatGameDataParam(playerChoice)) + "_") + FormatGameDataParam(playerPubKey58)) + "_") + FormatGameDataParam(toString(startedHeight))) + "_") + FormatGameDataParam(toString(winAmt)))
164161 if ((randOrEmpty == ""))
165162 then fullStateStr
166163 else ((fullStateStr + "_") + FormatGameDataParam(randOrEmpty))
167164 }
168165
169166
170167 func RandToStr (r) = if ((r == 1))
171168 then "1"
172169 else if ((r == 2))
173170 then "2"
174171 else if ((r == 3))
175172 then "3"
176173 else if ((r == 4))
177174 then "4"
178175 else if ((r == 5))
179176 then "5"
180177 else if ((r == 6))
181178 then "6"
182179 else throw(("Unsupported r parameter passed: expected=[1,...,6] actual=" + toString(r)))
183180
184181
185182 func ValidateBetAndDefineWinAmt (betAmt,playerChoice) = {
186- let betAmtValid = if (if (if (if (if ((betAmt == (BET1 + COMMISSION)))
183+ let betAmtValid = if (if (if (if (if ((betAmt == (BET02 + COMMISSION)))
184+ then true
185+ else (betAmt == (BET05 + COMMISSION)))
186+ then true
187+ else (betAmt == (BET1 + COMMISSION)))
187188 then true
188189 else (betAmt == (BET2 + COMMISSION)))
189190 then true
190191 else (betAmt == (BET4 + COMMISSION)))
191- then true
192- else (betAmt == (BET8 + COMMISSION)))
193- then true
194- else (betAmt == (BET14 + COMMISSION)))
195192 then true
196193 else false
197194 if (betAmtValid)
198195 then {
199196 let bulletsCount = size(playerChoice)
200197 let bet = (betAmt - COMMISSION)
201198 let b1 = parseIntValue(take(playerChoice, 1))
202199 let forB2 = drop(playerChoice, 1)
203200 let b2 = parseIntValue(take(forB2, 1))
204201 let forB3 = drop(forB2, 1)
205202 let b3 = parseIntValue(take(forB3, 1))
206203 let forB4 = drop(forB3, 1)
207204 let b4 = parseIntValue(take(forB4, 1))
208205 let forB5 = drop(forB4, 1)
209206 let b5 = parseIntValue(take(forB5, 1))
210207 let forB6 = drop(forB5, 1)
211208 let b6 = parseIntValue(take(forB6, 1))
212209 let activeBullets = (((((b1 + b2) + b3) + b4) + b5) + b6)
213210 if ((activeBullets == 5))
214211 then ((bet * RATE1) / RATEMULT)
215212 else if ((activeBullets == 4))
216213 then ((bet * RATE2) / RATEMULT)
217214 else if ((activeBullets == 3))
218215 then ((bet * RATE3) / RATEMULT)
219216 else if ((activeBullets == 2))
220217 then ((bet * RATE4) / RATEMULT)
221218 else if ((activeBullets == 1))
222219 then ((bet * RATE5) / RATEMULT)
223220 else throw(("Invalid player's choice, active bullets = " + toString(activeBullets)))
224221 }
225222 else throw("Bet amount is not in range")
226223 }
227224
228225
229226 func getWinStr (playerChoice) = {
230227 let b1 = parseIntValue(take(playerChoice, 1))
231228 let forB2 = drop(playerChoice, 1)
232229 let b2 = parseIntValue(take(forB2, 1))
233230 let forB3 = drop(playerChoice, 1)
234231 let b3 = parseIntValue(take(forB3, 1))
235232 let forB4 = drop(playerChoice, 1)
236233 let b4 = parseIntValue(take(forB4, 1))
237234 let forB5 = drop(playerChoice, 1)
238235 let b5 = parseIntValue(take(forB5, 1))
239236 let forB6 = drop(playerChoice, 1)
240237 let b6 = parseIntValue(take(forB6, 1))
241238 if ((b1 == 0))
242239 then "1"
243240 else if ((b2 == 0))
244241 then "2"
245242 else if ((b3 == 0))
246243 then "3"
247244 else if ((b4 == 0))
248245 then "4"
249246 else if ((b5 == 0))
250247 then "5"
251248 else if ((b6 == 0))
252249 then "6"
253250 else throw("Bet amount is not in range")
254251 }
255252
256253
257254 func IsPlayerWin (playerChoice,randStr) = {
258255 let randInt = parseIntValue(randStr)
259256 let choiceArray = split(playerChoice, "")
260257 if ((choiceArray[(randInt - 1)] == "0"))
261258 then true
262259 else false
263260 }
264261
265262
266263 func WinScriptSet (gameId,playerAddress,winAmt,newGameDataStr,winByTimeout,decreasedReserves) = {
267264 let wSetCommonData = [decreasedReserves]
268265 let tSetCommonData = [ScriptTransfer(playerAddress, winAmt, unit)]
269266 if (winByTimeout)
270267 then {
271268 let newGameDataStrAdjusted = ((newGameDataStr + "_") + FormatGameDataParam("TIMEOUT"))
272269 let gameData = DataEntry(gameId, newGameDataStrAdjusted)
273270 ScriptResult(WriteSet(gameData :: wSetCommonData), TransferSet(tSetCommonData))
274271 }
275272 else {
276273 let gameData = DataEntry(gameId, newGameDataStr)
277274 ScriptResult(WriteSet(gameData :: wSetCommonData), TransferSet(tSetCommonData))
278275 }
279276 }
280277
281278
282279 @Callable(i)
283280 func bet (playerChoice) = {
284281 let newGameNum = IncrementGameNum()
285282 let gameId = toBase58String(i.transactionId)
286283 let pmt = extract(i.payment)
287284 let betNotInWaves = isDefined(pmt.assetId)
288285 let feeNotInWaves = isDefined(pmt.assetId)
289286 let winAmt = ValidateBetAndDefineWinAmt(pmt.amount, playerChoice)
290287 let txIdUsed = isDefined(getString(this, gameId))
291288 if (betNotInWaves)
292289 then throw("Bet amount must be in Waves")
293290 else if (feeNotInWaves)
294291 then throw("Transaction's fee must be in Waves")
295292 else if (txIdUsed)
296293 then throw("Passed txId had been used before. Game aborted.")
297294 else {
298295 let playerPubKey58 = toBase58String(i.callerPublicKey)
299296 let gameDataStr = FormatGameDataStr(STATESUBMITTED, playerChoice, playerPubKey58, height, winAmt, "")
300297 let readableGameData = ((((((((STATESUBMITTED + "_") + playerChoice) + "_") + playerPubKey58) + "_") + toString(height)) + "_") + toString(winAmt))
301298 let serverTransfer = [ScriptTransfer(SERVER, COMMISSION, unit)]
302299 let betData = [DataEntry(RESERVATIONKEY, ValidateAndIncreaseReservedAmt(winAmt)), DataEntry(GAMESCOUNTERKEY, newGameNum), DataEntry(gameId, gameDataStr)]
303300 ScriptResult(WriteSet(betData), TransferSet(serverTransfer))
304301 }
305302 }
306303
307304
308305
309306 @Callable(i)
310307 func withdraw (gameId,rsaSignCrypted) = {
311308 let rsaSign = fromBase58String(rsaSignCrypted)
312309 let gameDataList = ExtractGameDataList(gameId)
313310 let gameState = gameDataList[IdxGameState]
314311 let playerChoice = gameDataList[IdxPlayerChoice]
315312 let startedHeight = parseIntValue(gameDataList[IdxStartedHeight])
316313 let winAmt = parseIntValue(gameDataList[IdxWinAmt])
317314 let playerPubKey58 = gameDataList[IdxPlayerPubKey58]
318315 let playerAddress = addressFromPublicKey(fromBase58String(playerPubKey58))
319316 let winByTimeout = ((height - startedHeight) > RANDORACLETIMEFRAME)
320317 let decreasedReserves = DecreaseReservedAmt(gameId, winAmt)
321318 if ((gameState != STATESUBMITTED))
322319 then throw("Invalid game state for passed gameId")
323320 else if (winByTimeout)
324321 then {
325322 let randStr = getWinStr(playerChoice)
326323 let newGameDataStr = FormatGameDataStr(STATEWON, playerChoice, playerPubKey58, startedHeight, winAmt, randStr)
327324 WinScriptSet(gameId, playerAddress, winAmt, newGameDataStr, winByTimeout, decreasedReserves)
328325 }
329326 else {
330327 let randInt = GenerateRandInt(gameId, rsaSign)
331328 let randStr = RandToStr(randInt)
332329 if (IsPlayerWin(playerChoice, randStr))
333330 then {
334331 let newGameDataStr = FormatGameDataStr(STATEWON, playerChoice, playerPubKey58, startedHeight, winAmt, randStr)
335332 WinScriptSet(gameId, playerAddress, winAmt, newGameDataStr, winByTimeout, decreasedReserves)
336333 }
337334 else {
338335 let newGameDataStr = FormatGameDataStr(STATELOST, playerChoice, playerPubKey58, startedHeight, winAmt, randStr)
339336 WriteSet([DataEntry(gameId, newGameDataStr), decreasedReserves])
340337 }
341338 }
342339 }
343340
344341

github/deemru/w8io/169f3d6 
37.24 ms