tx · 9qm4DpLXYN7Rnnj4YDQCBYrbx2Meb75M9ikWuhPu4VDJ

3P5VC7EqCZ3BsTuz3QrZFpxZ9VEm5N6WHTb:  -0.03700000 Waves

2022.11.04 11:54 [3367530] smart account 3P5VC7EqCZ3BsTuz3QrZFpxZ9VEm5N6WHTb > SELF 0.00000000 Waves

{ "type": 13, "id": "9qm4DpLXYN7Rnnj4YDQCBYrbx2Meb75M9ikWuhPu4VDJ", "fee": 3700000, "feeAssetId": null, "timestamp": 1667552122465, "version": 1, "sender": "3P5VC7EqCZ3BsTuz3QrZFpxZ9VEm5N6WHTb", "senderPublicKey": "ADu1XuzisH2u8YwfLFVkHDbzwtKpT376inMjiSxYeq83", "proofs": [ "628G9mtknF5jJeCaGdiw64bVz3pfMjhvrFyQmp7p8Qz65yPSAH6yXqqY1zJMPyRRtt3SWJRcyGTV4sq2K8HXR4pK" ], "script": "base64:BgKaAQgCEgMKAQgSAwoBCBIAEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEIARIECgIBCBIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgBsAAZzY2FsZTgAgMLXLwAMc2NhbGU4QmlnSW50CQC2AgEAgMLXLwAHc2NhbGUxOAkAtgIBAICAkLu61q3wDQAKemVyb0JpZ0ludAkAtgIBAAAABGJpZzAJALYCAQAAAARiaWcxCQC2AgEAAQAEYmlnMgkAtgIBAAIACnNsaXBwYWdlNEQJALYCAQkAZQIFBnNjYWxlOAkAaQIJAGgCBQZzY2FsZTgAAQUGc2NhbGU4AAt3YXZlc1N0cmluZwIFV0FWRVMABUFtdWx0AgMxMDAABURjb252AgExAANTRVACAl9fAAVFTVBUWQIAAApQb29sQWN0aXZlAAEAClBvb2xQdXREaXMAAgAOUG9vbE1hdGNoZXJEaXMAAwAMUG9vbFNodXRkb3duAAQADmlkeFBvb2xBZGRyZXNzAAEACWlkeFBvb2xTdAACAAlpZHhMUEFzSWQAAwAJaWR4QW1Bc0lkAAQACWlkeFByQXNJZAAFAAtpZHhBbXRBc0RjbQAGAA1pZHhQcmljZUFzRGNtAAcAC2lkeElBbXRBc0lkAAgADWlkeElQcmljZUFzSWQACQAPaWR4RmFjdFN0YWtDbnRyAAEAEmlkeEZhY3RvcnlSZXN0Q250cgAGABBpZHhGYWN0U2xpcHBDbnRyAAcAEWlkeEZhY3RHd3hSZXdDbnRyAAoACmZlZURlZmF1bHQJAGsDAAUFBnNjYWxlOACQTgECdDECB29yaWdWYWwNb3JpZ1NjYWxlTXVsdAkAvAIDCQC2AgEFB29yaWdWYWwFB3NjYWxlMTgJALYCAQUNb3JpZ1NjYWxlTXVsdAECZjECA3ZhbA9yZXN1bHRTY2FsZU11bHQJAKADAQkAvAIDBQN2YWwJALYCAQUPcmVzdWx0U2NhbGVNdWx0BQdzY2FsZTE4AQJ0cwMDYW10CHJlc1NjYWxlCGN1clNjYWxlCQBrAwUDYW10BQhyZXNTY2FsZQUIY3VyU2NhbGUBA2FicwEDdmFsAwkAvwICBQp6ZXJvQmlnSW50BQN2YWwJAL4CAQUDdmFsBQN2YWwBCWFic0JpZ0ludAEDdmFsAwkAvwICBQp6ZXJvQmlnSW50BQN2YWwJAL4CAQUDdmFsBQN2YWwBAmZjAAITJXNfX2ZhY3RvcnlDb250cmFjdAEDbXBrAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBBHBtcGsAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAnBsAAIRJXMlc19fcHJpY2VfX2xhc3QBAnBoAgFoAXQJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFoCQDMCAIJAKQDAQUBdAUDbmlsBQNTRVABA3BhdQICdWEEdHhJZAkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAnVhAgJfXwUEdHhJZAEDZ2F1AgJ1YQR0eElkCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUCdWECAl9fBQR0eElkAQJhYQACDyVzX19hbW91bnRBc3NldAECcGEAAg4lc19fcHJpY2VBc3NldAEDYW1wAAIHJXNfX2FtcAEDYWRhAAINJXNfX2FkZG9uQWRkcgAGa2V5RmVlAgclc19fZmVlAANmZWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUGa2V5RmVlBQpmZWVEZWZhdWx0AQRmY2ZnAAIRJXNfX2ZhY3RvcnlDb25maWcBBG10cGsAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAnBjAgZpQW10QXMFaVByQXMJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FBmlBbXRBcwICX18FBWlQckFzAghfX2NvbmZpZwEDbWJhAQViQVN0cgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQViQVN0cgEDYXBzAAIMJXNfX3NodXRkb3duARxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBFmtleUZlZUNvbGxlY3RvckFkZHJlc3MAAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwEDdG9lAwNvclYGc2VuZHJWBm1hdGNoVgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhFGYWlsZWQ6IG9yZFZhbGlkPQkApQMBBQNvclYCCyBzbmRyVmFsaWQ9CQClAwEFBnNlbmRyVgIMIG10Y2hyVmFsaWQ9CQClAwEFBm1hdGNoVgEDc3RyAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnZhbFN0cgUHJG1hdGNoMAUGdmFsU3RyCQACAQITZmFpbCBjYXN0IHRvIFN0cmluZwEEc3RyZgIEYWRkcgNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQRhZGRyBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUEYWRkcgkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQRpbnRmAgRhZGRyA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBGFkZHIFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQRhZGRyCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABCHRocm93RXJyAQNtc2cJAAIBCQC5CQIJAMwIAgIPbHBfc3RhYmxlLnJpZGU6CQDMCAIFA21zZwUDbmlsAgEgAANmY2EJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQRzdHJmAgUEdGhpcwkBAmZjAAABQQkBBHN0cmYCBQR0aGlzCQEDYW1wAAEDaWdzAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQNmY2EJAQNhcHMABwECbXAACQDZBAEJAQRzdHJmAgUDZmNhCQEEbXRwawAAE2ZlZUNvbGxlY3RvckFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQRzdHJmAgUDZmNhCQEWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcwABA2dwYwAEBWFtdEFzCQEEc3RyZgIFBHRoaXMJAQJhYQAEB3ByaWNlQXMJAQRzdHJmAgUEdGhpcwkBAnBhAAQIaVByaWNlQXMJAQRpbnRmAgUDZmNhCQEDbWJhAQUHcHJpY2VBcwQGaUFtdEFzCQEEaW50ZgIFA2ZjYQkBA21iYQEFBWFtdEFzCQC1CQIJAQRzdHJmAgUDZmNhCQECcGMCCQCkAwEFBmlBbXRBcwkApAMBBQhpUHJpY2VBcwUDU0VQAQxwYXJzZUFzc2V0SWQBBWlucHV0AwkAAAIFBWlucHV0BQt3YXZlc1N0cmluZwUEdW5pdAkA2QQBBQVpbnB1dAEPYXNzZXRJZFRvU3RyaW5nAQVpbnB1dAMJAAACBQVpbnB1dAUEdW5pdAULd2F2ZXNTdHJpbmcJANgEAQkBBXZhbHVlAQUFaW5wdXQBD3BhcnNlUG9vbENvbmZpZwEKcG9vbENvbmZpZwkAmQoHCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFCnBvb2xDb25maWcFDmlkeFBvb2xBZGRyZXNzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwUJaWR4UG9vbFN0CQDZBAEJAJEDAgUKcG9vbENvbmZpZwUJaWR4TFBBc0lkCQEMcGFyc2VBc3NldElkAQkAkQMCBQpwb29sQ29uZmlnBQlpZHhBbUFzSWQJAQxwYXJzZUFzc2V0SWQBCQCRAwIFCnBvb2xDb25maWcFCWlkeFByQXNJZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFC2lkeEFtdEFzRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwUNaWR4UHJpY2VBc0RjbQAQcG9vbENvbmZpZ1BhcnNlZAkBD3BhcnNlUG9vbENvbmZpZwEJAQNncGMAAAskdDA2ODI5NzAxNQUQcG9vbENvbmZpZ1BhcnNlZAAOY2ZnUG9vbEFkZHJlc3MIBQskdDA2ODI5NzAxNQJfMQANY2ZnUG9vbFN0YXR1cwgFCyR0MDY4Mjk3MDE1Al8yAAxjZmdMcEFzc2V0SWQIBQskdDA2ODI5NzAxNQJfMwAQY2ZnQW1vdW50QXNzZXRJZAgFCyR0MDY4Mjk3MDE1Al80AA9jZmdQcmljZUFzc2V0SWQIBQskdDA2ODI5NzAxNQJfNQAWY2ZnQW1vdW50QXNzZXREZWNpbWFscwgFCyR0MDY4Mjk3MDE1Al82ABVjZmdQcmljZUFzc2V0RGVjaW1hbHMIBQskdDA2ODI5NzAxNQJfNwEDZ2ZjAAkAtQkCCQEEc3RyZgIFA2ZjYQkBBGZjZmcABQNTRVAADWZhY3RvcnlDb25maWcJAQNnZmMAAA9zdGFraW5nQ29udHJhY3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFDWZhY3RvcnlDb25maWcFD2lkeEZhY3RTdGFrQ250cgIgSW52YWxpZCBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MAD3NsaXBhZ2VDb250cmFjdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUNZmFjdG9yeUNvbmZpZwUQaWR4RmFjdFNsaXBwQ250cgIgSW52YWxpZCBzbGlwYWdlIGNvbnRyYWN0IGFkZHJlc3MAC2d3eENvbnRyYWN0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQ1mYWN0b3J5Q29uZmlnBRFpZHhGYWN0R3d4UmV3Q250cgIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwAMcmVzdENvbnRyYWN0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQ1mYWN0b3J5Q29uZmlnBRJpZHhGYWN0b3J5UmVzdENudHICHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MBEWRhdGFQdXRBY3Rpb25JbmZvCg1pbkFtdEFzc2V0QW10D2luUHJpY2VBc3NldEFtdAhvdXRMcEFtdAVwcmljZQpzbGlwQnlVc2VyDHNsaXBwYWdlUmVhbAh0eEhlaWdodAt0eFRpbWVzdGFtcAxzbGlwYWdlQW1BbXQMc2xpcGFnZVByQW10CQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQ1pbkFtdEFzc2V0QW10CQDMCAIJAKQDAQUPaW5QcmljZUFzc2V0QW10CQDMCAIJAKQDAQUIb3V0THBBbXQJAMwIAgkApAMBBQVwcmljZQkAzAgCCQCkAwEFCnNsaXBCeVVzZXIJAMwIAgkApAMBBQxzbGlwcGFnZVJlYWwJAMwIAgkApAMBBQh0eEhlaWdodAkAzAgCCQCkAwEFC3R4VGltZXN0YW1wCQDMCAIJAKQDAQUMc2xpcGFnZUFtQW10CQDMCAIJAKQDAQUMc2xpcGFnZVByQW10BQNuaWwFA1NFUAERZGF0YUdldEFjdGlvbkluZm8GDm91dEFtdEFzc2V0QW10EG91dFByaWNlQXNzZXRBbXQHaW5McEFtdAVwcmljZQh0eEhlaWdodAt0eFRpbWVzdGFtcAkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFDm91dEFtdEFzc2V0QW10CQDMCAIJAKQDAQUQb3V0UHJpY2VBc3NldEFtdAkAzAgCCQCkAwEFB2luTHBBbXQJAMwIAgkApAMBBQVwcmljZQkAzAgCCQCkAwEFCHR4SGVpZ2h0CQDMCAIJAKQDAQULdHhUaW1lc3RhbXAFA25pbAUDU0VQAQ1nZXRBY2NCYWxhbmNlAQdhc3NldElkAwkAAAIFB2Fzc2V0SWQCBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFB2Fzc2V0SWQBBGNwYmkCCHByQW10WDE4CGFtQW10WDE4CQC8AgMFCHByQW10WDE4BQdzY2FsZTE4BQhhbUFtdFgxOAEDdmFkAwJBMQJBMghzbGlwcGFnZQQEZGlmZgkAvAIDCQC4AgIFAkExBQJBMgUMc2NhbGU4QmlnSW50BQJBMgQEcGFzcwkAvwICCQC4AgIFCHNsaXBwYWdlCQEDYWJzAQUEZGlmZgUKemVyb0JpZ0ludAMJAQEhAQUEcGFzcwkAAgEJAKwCAgIKQmlnIHNscGc6IAkApgMBBQRkaWZmCQCUCgIFBHBhc3MJAJkDAQkAzAgCBQJBMQkAzAgCBQJBMgUDbmlsAQJ2ZAMCRDECRDAEc2xwZwQEZGlmZgkAvAIDBQJEMAUMc2NhbGU4QmlnSW50BQJEMQQEZmFpbAkAvwICBQRzbHBnBQRkaWZmAwMFBGZhaWwGCQC/AgIFAkQwBQJEMQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKYDAQUCRDACASAJAKYDAQUCRDECASAJAKYDAQUEZGlmZgIBIAkApgMBBQRzbHBnBQRmYWlsAQNwY3AECmFtQXNzZXREY20KcHJBc3NldERjbQVhbUFtdAVwckFtdAQLYW10QXNBbXRYMTgJAQJ0MQIFBWFtQW10BQphbUFzc2V0RGNtBApwckFzQW10WDE4CQECdDECBQVwckFtdAUKcHJBc3NldERjbQkBBGNwYmkCBQpwckFzQW10WDE4BQthbXRBc0FtdFgxOAEKY2FsY1ByaWNlcwMFYW1BbXQFcHJBbXQFbHBBbXQEA2NmZwkBA2dwYwAECGFtdEFzRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQHcHJBc0RjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQIcHJpY2VYMTgJAQNwY3AEBQhhbXRBc0RjbQUHcHJBc0RjbQUFYW1BbXQFBXByQW10BAhhbUFtdFgxOAkBAnQxAgUFYW1BbXQFCGFtdEFzRGNtBAhwckFtdFgxOAkBAnQxAgUFcHJBbXQFB3ByQXNEY20ECGxwQW10WDE4CQECdDECBQVscEFtdAUGc2NhbGU4BA1scFBySW5BbUFzWDE4CQEEY3BiaQIFCGFtQW10WDE4BQhscEFtdFgxOAQNbHBQckluUHJBc1gxOAkBBGNwYmkCBQhwckFtdFgxOAUIbHBBbXRYMTgJAMwIAgUIcHJpY2VYMTgJAMwIAgUNbHBQckluQW1Bc1gxOAkAzAgCBQ1scFBySW5QckFzWDE4BQNuaWwBD2NhbGN1bGF0ZVByaWNlcwMFYW1BbXQFcHJBbXQFbHBBbXQEAXAJAQpjYWxjUHJpY2VzAwUFYW1BbXQFBXByQW10BQVscEFtdAkAzAgCCQECZjECCQCRAwIFAXAAAAUGc2NhbGU4CQDMCAIJAQJmMQIJAJEDAgUBcAABBQZzY2FsZTgJAMwIAgkBAmYxAgkAkQMCBQFwAAIFBnNjYWxlOAUDbmlsAQd0YWtlRmVlAQZhbW91bnQECWZlZUFtb3VudAkAawMFBmFtb3VudAUDZmVlBQZzY2FsZTgJAJQKAgkAZQIFBmFtb3VudAUJZmVlQW1vdW50BQlmZWVBbW91bnQBA2VnbwQGdHhJZDU4CnBtdEFzc2V0SWQIcG10THBBbXQLdXNlckFkZHJlc3MEA2NmZwkBA2dwYwAEBGxwSWQJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEBGFtSWQJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEBWFtRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQFcHJEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20EA3N0cwkAkQMCBQNjZmcFCWlkeFBvb2xTdAQHbHBFbWlzcwgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFBGxwSWQCC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgUEbHBJZAUKcG10QXNzZXRJZAkAAgECD1dyb25nIHBtdCBhc3NldAQJYW1CYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBGFtSWQEDGFtQmFsYW5jZVgxOAkBAnQxAgUJYW1CYWxhbmNlBQVhbURjbQQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDHByQmFsYW5jZVgxOAkBAnQxAgUJcHJCYWxhbmNlBQVwckRjbQQLY3VyUHJpY2VYMTgJAQRjcGJpAgUMcHJCYWxhbmNlWDE4BQxhbUJhbGFuY2VYMTgECGN1clByaWNlCQECZjECBQtjdXJQcmljZVgxOAUGc2NhbGU4BAtwbXRMcEFtdFgxOAkBAnQxAgUIcG10THBBbXQFBnNjYWxlOAQKbHBFbWlzc1gxOAkBAnQxAgUHbHBFbWlzcwUGc2NhbGU4BAtvdXRBbUFtdFgxOAkAvAIDBQxhbUJhbGFuY2VYMTgFC3BtdExwQW10WDE4BQpscEVtaXNzWDE4BAtvdXRQckFtdFgxOAkAvAIDBQxwckJhbGFuY2VYMTgFC3BtdExwQW10WDE4BQpscEVtaXNzWDE4BAhvdXRBbUFtdAkBAmYxAgULb3V0QW1BbXRYMTgFBWFtRGNtBAhvdXRQckFtdAkBAmYxAgULb3V0UHJBbXRYMTgFBXByRGNtBAVzdGF0ZQMJAAACBQZ0eElkNTgCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQhvdXRBbUFtdAMJAAACBQRhbUlkAgVXQVZFUwUEdW5pdAkA2QQBBQRhbUlkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQhvdXRQckFtdAMJAAACBQRwcklkAgVXQVZFUwUEdW5pdAkA2QQBBQRwcklkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNnYXUCCQClCAEFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhR2V0QWN0aW9uSW5mbwYFCG91dEFtQW10BQhvdXRQckFtdAUIcG10THBBbXQFCGN1clByaWNlBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQhjdXJQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIY3VyUHJpY2UFA25pbAkAnAoKBQhvdXRBbUFtdAUIb3V0UHJBbXQFBGFtSWQFBHBySWQFCWFtQmFsYW5jZQUJcHJCYWxhbmNlBQdscEVtaXNzBQtjdXJQcmljZVgxOAUDc3RzBQVzdGF0ZQEDZXBvDQZ0eElkNTgIc2xpcHBhZ2UHaW5BbUFtdAZpbkFtSWQHaW5QckFtdAZpblBySWQLdXNlckFkZHJlc3MGaXNFdmFsBmVtaXRMcAppc09uZUFzc2V0EHZhbGlkYXRlU2xpcHBhZ2UGcG10QW10BXBtdElkBANjZmcJAQNncGMABARscElkCQDZBAEJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEB2FtSWRTdHIJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEB3BySWRTdHIJAJEDAgUDY2ZnBQlpZHhQckFzSWQECWluQW1JZFN0cgkAkQMCBQNjZmcFC2lkeElBbXRBc0lkBAlpblBySWRTdHIJAJEDAgUDY2ZnBQ1pZHhJUHJpY2VBc0lkBAZhbXREY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAhwcmljZURjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQDc3RzCQCRAwIFA2NmZwUJaWR4UG9vbFN0BARscEVtCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFBGxwSWQCCFdyIGxwIGFzCHF1YW50aXR5BAlhbUJhbGFuY2UDBQZpc0V2YWwJAQ1nZXRBY2NCYWxhbmNlAQUHYW1JZFN0cgMDBQppc09uZUFzc2V0CQAAAgUFcG10SWQFB2FtSWRTdHIHCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdhbUlkU3RyBQZwbXRBbXQDBQppc09uZUFzc2V0CQENZ2V0QWNjQmFsYW5jZQEFB2FtSWRTdHIJAGUCCQENZ2V0QWNjQmFsYW5jZQEFB2FtSWRTdHIFB2luQW1BbXQECXByQmFsYW5jZQMFBmlzRXZhbAkBDWdldEFjY0JhbGFuY2UBBQdwcklkU3RyAwMFCmlzT25lQXNzZXQJAAACBQVwbXRJZAUHcHJJZFN0cgcJAGUCCQENZ2V0QWNjQmFsYW5jZQEFB3BySWRTdHIFBnBtdEFtdAMFCmlzT25lQXNzZXQJAQ1nZXRBY2NCYWxhbmNlAQUHcHJJZFN0cgkAZQIJAQ1nZXRBY2NCYWxhbmNlAQUHcHJJZFN0cgUHaW5QckFtdAQPaW5BbUFzc2V0QW10WDE4CQECdDECBQdpbkFtQW10BQZhbXREY20ED2luUHJBc3NldEFtdFgxOAkBAnQxAgUHaW5QckFtdAUIcHJpY2VEY20EDHVzZXJQcmljZVgxOAkBBGNwYmkCBQ9pblByQXNzZXRBbXRYMTgFD2luQW1Bc3NldEFtdFgxOAQMYW1CYWxhbmNlWDE4CQECdDECBQlhbUJhbGFuY2UFBmFtdERjbQQMcHJCYWxhbmNlWDE4CQECdDECBQlwckJhbGFuY2UFCHByaWNlRGNtBAFyAwkAAAIFBGxwRW0AAAQLY3VyUHJpY2VYMTgFCnplcm9CaWdJbnQEC3NsaXBwYWdlWDE4BQp6ZXJvQmlnSW50BAhscEFtdFgxOAkAdgYJALkCAgUPaW5BbUFzc2V0QW10WDE4BQ9pblByQXNzZXRBbXRYMTgAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQJmMQIFCGxwQW10WDE4BQZzY2FsZTgJAQJmMQIFD2luQW1Bc3NldEFtdFgxOAUGYW10RGNtCQECZjECBQ9pblByQXNzZXRBbXRYMTgFCHByaWNlRGNtCQEEY3BiaQIJALcCAgUMcHJCYWxhbmNlWDE4BQ9pblByQXNzZXRBbXRYMTgJALcCAgUMYW1CYWxhbmNlWDE4BQ9pbkFtQXNzZXRBbXRYMTgFC3NsaXBwYWdlWDE4BAtjdXJQcmljZVgxOAkBBGNwYmkCBQxwckJhbGFuY2VYMTgFDGFtQmFsYW5jZVgxOAQPc2xpcHBhZ2VSZWFsWDE4CQC8AgMJAQNhYnMBCQC4AgIFC2N1clByaWNlWDE4BQx1c2VyUHJpY2VYMTgFB3NjYWxlMTgFC2N1clByaWNlWDE4BAtzbGlwcGFnZVgxOAkBAnQxAgUIc2xpcHBhZ2UFBnNjYWxlOAMDAwUQdmFsaWRhdGVTbGlwcGFnZQkBAiE9AgULY3VyUHJpY2VYMTgFCnplcm9CaWdJbnQHCQC/AgIFD3NsaXBwYWdlUmVhbFgxOAULc2xpcHBhZ2VYMTgHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFD3NsaXBwYWdlUmVhbFgxOAIDID4gCQCmAwEFC3NsaXBwYWdlWDE4BA1scEVtaXNzaW9uWDE4CQECdDECBQRscEVtBQZzY2FsZTgECnByVmlhQW1YMTgJALwCAwUPaW5BbUFzc2V0QW10WDE4BQtjdXJQcmljZVgxOAUHc2NhbGUxOAQKYW1WaWFQclgxOAkAvAIDBQ9pblByQXNzZXRBbXRYMTgFB3NjYWxlMTgFC2N1clByaWNlWDE4BAxleHBlY3RlZEFtdHMDCQC/AgIFCnByVmlhQW1YMTgFD2luUHJBc3NldEFtdFgxOAkAlAoCBQphbVZpYVByWDE4BQ9pblByQXNzZXRBbXRYMTgJAJQKAgUPaW5BbUFzc2V0QW10WDE4BQpwclZpYUFtWDE4BBFleHBBbXRBc3NldEFtdFgxOAgFDGV4cGVjdGVkQW10cwJfMQQTZXhwUHJpY2VBc3NldEFtdFgxOAgFDGV4cGVjdGVkQW10cwJfMgQIbHBBbXRYMTgJALwCAwUNbHBFbWlzc2lvblgxOAUTZXhwUHJpY2VBc3NldEFtdFgxOAUMcHJCYWxhbmNlWDE4CQCXCgUJAQJmMQIFCGxwQW10WDE4BQZzY2FsZTgJAQJmMQIFEWV4cEFtdEFzc2V0QW10WDE4BQZhbXREY20JAQJmMQIFE2V4cFByaWNlQXNzZXRBbXRYMTgFCHByaWNlRGNtBQtjdXJQcmljZVgxOAULc2xpcHBhZ2VYMTgECWNhbGNMcEFtdAgFAXICXzEEDmNhbGNBbUFzc2V0UG10CAUBcgJfMgQOY2FsY1ByQXNzZXRQbXQIBQFyAl8zBAhjdXJQcmljZQkBAmYxAggFAXICXzQFBnNjYWxlOAQMc2xpcHBhZ2VDYWxjCQECZjECCAUBcgJfNQUGc2NhbGU4AwkAZwIAAAUJY2FsY0xwQW10CQACAQIHTFAgPD0gMAQJZW1pdExwQW10AwkBASEBBQZlbWl0THAAAAUJY2FsY0xwQW10BAZhbURpZmYJAGUCBQdpbkFtQW10BQ5jYWxjQW1Bc3NldFBtdAQGcHJEaWZmCQBlAgUHaW5QckFtdAUOY2FsY1ByQXNzZXRQbXQEDSR0MDE3NDQ2MTc3OTEDAwUKaXNPbmVBc3NldAkAAAIFBXBtdElkBQdhbUlkU3RyBwkAlAoCBQZwbXRBbXQAAAMDBQppc09uZUFzc2V0CQAAAgUFcG10SWQFB3BySWRTdHIHCQCUCgIAAAUGcG10QW10CQCUCgIFDmNhbGNBbUFzc2V0UG10BQ5jYWxjUHJBc3NldFBtdAQKd3JpdGVBbUFtdAgFDSR0MDE3NDQ2MTc3OTECXzEECndyaXRlUHJBbXQIBQ0kdDAxNzQ0NjE3NzkxAl8yBAtjb21tb25TdGF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBsAAUIY3VyUHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwaAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFCGN1clByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNwYXUCBQt1c2VyQWRkcmVzcwUGdHhJZDU4CQERZGF0YVB1dEFjdGlvbkluZm8KBQp3cml0ZUFtQW10BQp3cml0ZVByQW10BQllbWl0THBBbXQFCGN1clByaWNlBQhzbGlwcGFnZQUMc2xpcHBhZ2VDYWxjBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQZhbURpZmYFBnByRGlmZgUDbmlsCQCfCg0FCWNhbGNMcEFtdAUJZW1pdExwQW10BQhjdXJQcmljZQUJYW1CYWxhbmNlBQlwckJhbGFuY2UFBGxwRW0FBGxwSWQFA3N0cwULY29tbW9uU3RhdGUFBmFtRGlmZgUGcHJEaWZmBQZpbkFtSWQFBmluUHJJZAEDbW9hAQVvcmRlcgQDY2ZnCQEDZ3BjAAQHYW10QXNJZAkAkQMCBQNjZmcFCWlkeEFtQXNJZAQGcHJBc0lkCQCRAwIFA2NmZwUJaWR4UHJBc0lkBANzdHMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFCWlkeFBvb2xTdAQIYW10QXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAdwckFzRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ1pZHhQcmljZUFzRGNtBA9hY2NBbXRBc0JhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUHYW10QXNJZAQOYWNjUHJBc0JhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUGcHJBc0lkBAtjdXJQcmljZVgxOAMJAAACCAUFb3JkZXIJb3JkZXJUeXBlBQNCdXkJAQNwY3AEBQhhbXRBc0RjbQUHcHJBc0RjbQkAZAIFD2FjY0FtdEFzQmFsYW5jZQgFBW9yZGVyBmFtb3VudAUOYWNjUHJBc0JhbGFuY2UJAQNwY3AEBQhhbXRBc0RjbQUHcHJBc0RjbQkAZQIFD2FjY0FtdEFzQmFsYW5jZQgFBW9yZGVyBmFtb3VudAUOYWNjUHJBc0JhbGFuY2UECGN1clByaWNlCQECZjECBQtjdXJQcmljZVgxOAUGc2NhbGU4AwMDCQEDaWdzAAYJAAACBQNzdHMFDlBvb2xNYXRjaGVyRGlzBgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQACAQINQWRtaW4gYmxvY2tlZAQKb3JBbXRBc3NldAgIBQVvcmRlcglhc3NldFBhaXILYW1vdW50QXNzZXQECm9yQW10QXNTdHIDCQAAAgUKb3JBbXRBc3NldAUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUKb3JBbXRBc3NldAQJb3JQckFzc2V0CAgFBW9yZGVyCWFzc2V0UGFpcgpwcmljZUFzc2V0BAlvclByQXNTdHIDCQAAAgUJb3JQckFzc2V0BQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQlvclByQXNzZXQDAwkBAiE9AgUKb3JBbXRBc1N0cgUHYW10QXNJZAYJAQIhPQIFCW9yUHJBc1N0cgUGcHJBc0lkCQACAQIJV3IgYXNzZXRzBApvcmRlclByaWNlCAUFb3JkZXIFcHJpY2UECHByaWNlRGNtCQBrAwUGc2NhbGU4BQdwckFzRGNtBQhhbXRBc0RjbQQOY2FzdE9yZGVyUHJpY2UJAQJ0cwMFCm9yZGVyUHJpY2UFBnNjYWxlOAUIcHJpY2VEY20EEWlzT3JkZXJQcmljZVZhbGlkAwkAAAIIBQVvcmRlcglvcmRlclR5cGUFA0J1eQkAZwIFCGN1clByaWNlBQ5jYXN0T3JkZXJQcmljZQkAZwIFDmNhc3RPcmRlclByaWNlBQhjdXJQcmljZQYBAmNnAQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIKMSBwbW50IGV4cAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECnBtdEFzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQGcG10QW10CAUDcG10BmFtb3VudAQBcgkBA2VnbwQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkA2AQBBQpwbXRBc3NldElkBQZwbXRBbXQIBQFpBmNhbGxlcgQIb3V0QW1BbXQIBQFyAl8xBAhvdXRQckFtdAgFAXICXzIEA3N0cwkBDXBhcnNlSW50VmFsdWUBCAUBcgJfOQQFc3RhdGUIBQFyA18xMAMDCQEDaWdzAAYJAAACBQNzdHMFDFBvb2xTaHV0ZG93bgkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFA3N0cwkAlwoFBQhvdXRBbUFtdAUIb3V0UHJBbXQFBnBtdEFtdAUKcG10QXNzZXRJZAUFc3RhdGUBAmNwCgZjYWxsZXIEdHhJZAdhbUFzUG10B3ByQXNQbXQIc2xpcHBhZ2UGZW1pdExwCmlzT25lQXNzZXQQdmFsaWRhdGVTbGlwcGFnZQZwbXRBbXQFcG10SWQEAXIJAQNlcG8NBQR0eElkBQhzbGlwcGFnZQgJAQV2YWx1ZQEFB2FtQXNQbXQGYW1vdW50CAkBBXZhbHVlAQUHYW1Bc1BtdAdhc3NldElkCAkBBXZhbHVlAQUHcHJBc1BtdAZhbW91bnQICQEFdmFsdWUBBQdwckFzUG10B2Fzc2V0SWQFBmNhbGxlcgkAAAIFBHR4SWQCAAUGZW1pdExwBQppc09uZUFzc2V0BRB2YWxpZGF0ZVNsaXBwYWdlBQZwbXRBbXQFBXBtdElkBANzdHMJAQ1wYXJzZUludFZhbHVlAQgFAXICXzgDAwMJAQNpZ3MABgkAAAIFA3N0cwUKUG9vbFB1dERpcwYJAAACBQNzdHMFDFBvb2xTaHV0ZG93bgkAAgEJAKwCAgIIQmxvY2tlZDoJAKQDAQUDc3RzBQFyAQRnZXREAQJ4cAQBbgUEYmlnMgQDeHAwCQCRAwIFAnhwAAAEA3hwMQkAkQMCBQJ4cAABBAphUHJlY2lzaW9uCQCnAwEFBUFtdWx0BAFhCQC5AgIJAKcDAQUBQQUKYVByZWNpc2lvbgQBcwkAtwICBQN4cDAFA3hwMQMJAAACBQFzBQRiaWcwBQRiaWcwBANhbm4JALkCAgUBYQUBbgQLeHAwX3hwMV9uX24JALkCAgkAuQICCQC5AgIFA3hwMAUDeHAxBQFuBQFuBBBhbm5fc19hUHJlY2lzaW9uCQC6AgIJALkCAgUDYW5uBQFzBQphUHJlY2lzaW9uBA5hbm5fYVByZWNpc2lvbgkAuAICBQNhbm4FCmFQcmVjaXNpb24EAm4xCQC3AgIFAW4FBGJpZzEKAQRjYWxjAgNhY2MDY3VyBA0kdDAyMjM0MzIyMzYzBQNhY2MEAWQIBQ0kdDAyMjM0MzIyMzYzAl8xBAVmb3VuZAgFDSR0MDIyMzQzMjIzNjMCXzIDCQECIT0CBQVmb3VuZAUEdW5pdAUDYWNjBAJkcAkAugICCQC5AgIJALkCAgUBZAUBZAUBZAULeHAwX3hwMV9uX24EBWROZXh0CQC6AgIJALkCAgkAtwICBRBhbm5fc19hUHJlY2lzaW9uCQC5AgIFAmRwBQFuBQFkCQC3AgIJALoCAgkAuQICBQ5hbm5fYVByZWNpc2lvbgUBZAUKYVByZWNpc2lvbgkAuQICBQJuMQUCZHAEBWREaWZmCQEJYWJzQmlnSW50AQkAuAICBQVkTmV4dAkBBXZhbHVlAQUBZAMJAMACAgUEYmlnMQUFZERpZmYJAJQKAgUFZE5leHQFA2N1cgkAlAoCBQVkTmV4dAUEdW5pdAQDYXJyCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEDSR0MDIyNzg0MjI4MzEKAAIkbAUDYXJyCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQFzBQR1bml0CgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQRjYWxjAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQBZAgFDSR0MDIyNzg0MjI4MzECXzEEBWZvdW5kCAUNJHQwMjI3ODQyMjgzMQJfMgMJAQIhPQIFBWZvdW5kBQR1bml0BQFkCQACAQkArAICAhlEIGNhbGN1bGF0aW9uIGVycm9yLCBEID0gCQCmAwEFAWQBBWdldFlEAwJ4cAFpAUQEAW4FBGJpZzIEAXgJAJEDAgUCeHADCQAAAgUBaQAAAAEAAAQKYVByZWNpc2lvbgkApwMBBQVBbXVsdAQBYQkAuQICCQCnAwEFAUEFCmFQcmVjaXNpb24EAXMFAXgEA2FubgkAuQICBQFhBQFuBAFjCQC6AgIJALkCAgkAuQICCQC6AgIJALkCAgUBRAUBRAkAuQICBQF4BQFuBQFEBQphUHJlY2lzaW9uCQC5AgIFA2FubgUBbgQBYgkAuAICCQC3AgIFAXMJALoCAgkAuQICBQFEBQphUHJlY2lzaW9uBQNhbm4FAUQKAQRjYWxjAgNhY2MDY3VyBA0kdDAyMzMzMTIzMzUxBQNhY2MEAXkIBQ0kdDAyMzMzMTIzMzUxAl8xBAVmb3VuZAgFDSR0MDIzMzMxMjMzNTECXzIDCQECIT0CBQVmb3VuZAUEdW5pdAUDYWNjBAV5TmV4dAkAugICCQC3AgIJALkCAgUBeQUBeQUBYwkAtwICCQC5AgIFBGJpZzIFAXkFAWIEBXlEaWZmCQEJYWJzQmlnSW50AQkAuAICBQV5TmV4dAkBBXZhbHVlAQUBeQMJAMACAgUEYmlnMQUFeURpZmYJAJQKAgUFeU5leHQFA2N1cgkAlAoCBQV5TmV4dAUEdW5pdAQDYXJyCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEDSR0MDIzNjU4MjM3MDUKAAIkbAUDYXJyCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQFEBQR1bml0CgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQRjYWxjAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQBeQgFDSR0MDIzNjU4MjM3MDUCXzEEBWZvdW5kCAUNJHQwMjM2NTgyMzcwNQJfMgMJAQIhPQIFBWZvdW5kBQR1bml0BQF5CQACAQkArAICAhlZIGNhbGN1bGF0aW9uIGVycm9yLCBZID0gCQCmAwEFAXkBDWNhbGNQdXRPbmVUa24FCXBtdEFtdFJhdwpwbXRBc3NldElkC3VzZXJBZGRyZXNzBHR4SWQLd2l0aFRha2VGZWUECnBvb2xDb25maWcJAQNncGMABARhbUlkCQCRAwIFCnBvb2xDb25maWcFCWlkeEFtQXNJZAQEcHJJZAkAkQMCBQpwb29sQ29uZmlnBQlpZHhQckFzSWQEBGxwSWQJAJEDAgUKcG9vbENvbmZpZwUJaWR4TFBBc0lkBAZhbXREY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBQtpZHhBbXRBc0RjbQQIcHJpY2VEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBQ1pZHhQcmljZUFzRGNtBA9scEFzc2V0RW1pc3Npb24JALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFBGxwSWQCEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEDWNoZWNoRW1pc3Npb24DCQC/AgIFD2xwQXNzZXRFbWlzc2lvbgUEYmlnMAYJAAIBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFDWNoZWNoRW1pc3Npb24FDWNoZWNoRW1pc3Npb24ECWFtQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRhbUlkBAlwckJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAQNJHQwMjQ0ODgyNDk1MAMJAAACBQR0eElkAgAJAJQKAgUJYW1CYWxhbmNlBQlwckJhbGFuY2UDCQAAAgUKcG10QXNzZXRJZAUEYW1JZAMJAGYCBQlwbXRBbXRSYXcFCWFtQmFsYW5jZQkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgkAZQIFCWFtQmFsYW5jZQUJcG10QW10UmF3BQlwckJhbGFuY2UDCQAAAgUKcG10QXNzZXRJZAUEcHJJZAMJAGYCBQlwbXRBbXRSYXcFCXByQmFsYW5jZQkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgUJYW1CYWxhbmNlCQBlAgUJcHJCYWxhbmNlBQlwbXRBbXRSYXcJAAIBAhB3cm9uZyBwbXRBc3NldElkBAxhbUJhbGFuY2VPbGQIBQ0kdDAyNDQ4ODI0OTUwAl8xBAxwckJhbGFuY2VPbGQIBQ0kdDAyNDQ4ODI0OTUwAl8yBA0kdDAyNDk1NjI1MTMyAwkAAAIFCnBtdEFzc2V0SWQFBGFtSWQJAJQKAgUJcG10QW10UmF3AAADCQAAAgUKcG10QXNzZXRJZAUEcHJJZAkAlAoCAAAFCXBtdEFtdFJhdwkAAgECD2ludmFsaWQgcGF5bWVudAQLYW1BbW91bnRSYXcIBQ0kdDAyNDk1NjI1MTMyAl8xBAtwckFtb3VudFJhdwgFDSR0MDI0OTU2MjUxMzICXzIEDSR0MDI1MTM2MjUzNzUDBQt3aXRoVGFrZUZlZQkAlQoDCAkBB3Rha2VGZWUBBQthbUFtb3VudFJhdwJfMQgJAQd0YWtlRmVlAQULcHJBbW91bnRSYXcCXzEICQEHdGFrZUZlZQEFCXBtdEFtdFJhdwJfMgkAlQoDBQthbUFtb3VudFJhdwULcHJBbW91bnRSYXcAAAQIYW1BbW91bnQIBQ0kdDAyNTEzNjI1Mzc1Al8xBAhwckFtb3VudAgFDSR0MDI1MTM2MjUzNzUCXzIECWZlZUFtb3VudAgFDSR0MDI1MTM2MjUzNzUCXzMEDGFtQmFsYW5jZU5ldwkAZAIFDGFtQmFsYW5jZU9sZAUIYW1BbW91bnQEDHByQmFsYW5jZU5ldwkAZAIFDHByQmFsYW5jZU9sZAUIcHJBbW91bnQEAkQwCQEEZ2V0RAEJAMwIAgkAtgIBBQxhbUJhbGFuY2VPbGQJAMwIAgkAtgIBBQxwckJhbGFuY2VPbGQFA25pbAQCRDEJAQRnZXREAQkAzAgCCQC2AgEFDGFtQmFsYW5jZU5ldwkAzAgCCQC2AgEFDHByQmFsYW5jZU5ldwUDbmlsBAZjaGVja0QDCQC/AgIFAkQxBQJEMAYJAQV0aHJvdwADCQAAAgUGY2hlY2tEBQZjaGVja0QECGxwQW1vdW50CQC8AgMFD2xwQXNzZXRFbWlzc2lvbgkAuAICBQJEMQUCRDAFAkQwBAhjdXJQcmljZQkBAmYxAgkBBGNwYmkCCQECdDECBQxwckJhbGFuY2VOZXcFCHByaWNlRGNtCQECdDECBQxhbUJhbGFuY2VOZXcFBmFtdERjbQUGc2NhbGU4BAtjb21tb25TdGF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBsAAUIY3VyUHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwaAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFCGN1clByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNwYXUCBQt1c2VyQWRkcmVzcwUEdHhJZAkBEWRhdGFQdXRBY3Rpb25JbmZvCgULYW1BbW91bnRSYXcFC3ByQW1vdW50UmF3CQCgAwEFCGxwQW1vdW50BQhjdXJQcmljZQAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEDnBvb2xQcm9wb3J0aW9uCQBrAwUMcHJCYWxhbmNlT2xkBQZzY2FsZTgFDGFtQmFsYW5jZU9sZAQPYW1vdW50QXNzZXRQYXJ0CQBrAwUJcG10QW10UmF3BQZzY2FsZTgJAGQCBQ5wb29sUHJvcG9ydGlvbgUGc2NhbGU4BA5wcmljZUFzc2V0UGFydAkAZQIFCXBtdEFtdFJhdwUPYW1vdW50QXNzZXRQYXJ0BAlscEFtdEJvdGgJALwCAwUPbHBBc3NldEVtaXNzaW9uCQC2AgEFDnByaWNlQXNzZXRQYXJ0CQC2AgEFDHByQmFsYW5jZU9sZAQFYm9udXMJAKADAQkAvAIDCQC4AgIFCGxwQW1vdW50BQlscEFtdEJvdGgFDHNjYWxlOEJpZ0ludAUJbHBBbXRCb3RoCQCWCgQJAKADAQUIbHBBbW91bnQFC2NvbW1vblN0YXRlBQlmZWVBbW91bnQFBWJvbnVzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARNnZXRPbmVUa25WMkludGVybmFsBgpvdXRBc3NldElkDG1pbk91dEFtb3VudAhwYXltZW50cwZjYWxsZXIMb3JpZ2luQ2FsbGVyDXRyYW5zYWN0aW9uSWQECnBvb2xDb25maWcJAQNncGMABARscElkCQCRAwIFCnBvb2xDb25maWcFCWlkeExQQXNJZAQEYW1JZAkAkQMCBQpwb29sQ29uZmlnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUKcG9vbENvbmZpZwUJaWR4UHJBc0lkBAphbURlY2ltYWxzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwULaWR4QW10QXNEY20ECnByRGVjaW1hbHMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBQ1pZHhQcmljZUFzRGNtBApwb29sU3RhdHVzCQCRAwIFCnBvb2xDb25maWcFCWlkeFBvb2xTdAQLdXNlckFkZHJlc3MDCQAAAgUGY2FsbGVyBQxyZXN0Q29udHJhY3QFDG9yaWdpbkNhbGxlcgUGY2FsbGVyBANwbXQJAQV2YWx1ZQEJAJEDAgUIcGF5bWVudHMAAAQKcG10QXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAZwbXRBbXQIBQNwbXQGYW1vdW50BAZ0eElkNTgJANgEAQUNdHJhbnNhY3Rpb25JZAMJAQIhPQIFBGxwSWQJANgEAQUKcG10QXNzZXRJZAkAAgECCFdyb25nIExQBAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDSR0MDI3Mzc3Mjc0ODUKAAFACQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUKb3V0QXNzZXRJZAkAzAgCBQZwbXRBbXQFA25pbAUDbmlsAwkAAQIFAUACCihJbnQsIEludCkFAUAJAAIBCQCsAgIJAAMBBQFAAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAh0b3RhbEdldAgFDSR0MDI3Mzc3Mjc0ODUCXzEECWZlZUFtb3VudAgFDSR0MDI3Mzc3Mjc0ODUCXzIEC3RvdGFsQW1vdW50AwMJAGYCBQxtaW5PdXRBbW91bnQAAAkAZgIFDG1pbk91dEFtb3VudAUIdG90YWxHZXQHCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFDG1pbk91dEFtb3VudAUDbmlsAgAFCHRvdGFsR2V0BA0kdDAyNzY3NTI3OTgyAwkAAAIFCm91dEFzc2V0SWQFBGFtSWQJAJYKBAULdG90YWxBbW91bnQAAAkAZQIJAGUCBQlhbUJhbGFuY2UFC3RvdGFsQW1vdW50BQlmZWVBbW91bnQFCXByQmFsYW5jZQMJAAACBQpvdXRBc3NldElkBQRwcklkCQCWCgQAAAULdG90YWxBbW91bnQFCWFtQmFsYW5jZQkAZQIJAGUCBQlwckJhbGFuY2UFC3RvdGFsQW1vdW50BQlmZWVBbW91bnQJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQFb3V0QW0IBQ0kdDAyNzY3NTI3OTgyAl8xBAVvdXRQcggFDSR0MDI3Njc1Mjc5ODICXzIEDGFtQmFsYW5jZU5ldwgFDSR0MDI3Njc1Mjc5ODICXzMEDHByQmFsYW5jZU5ldwgFDSR0MDI3Njc1Mjc5ODICXzQECGN1clByWDE4CQEEY3BiaQIJAQJ0MQIFDHByQmFsYW5jZU5ldwUKcHJEZWNpbWFscwkBAnQxAgUMYW1CYWxhbmNlTmV3BQphbURlY2ltYWxzBAVjdXJQcgkBAmYxAgUIY3VyUHJYMTgFBnNjYWxlOAQRb3V0QXNzZXRJZE9yV2F2ZXMDCQAAAgUKb3V0QXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUKb3V0QXNzZXRJZAQQc2VuZEZlZVRvTWF0Y2hlcgMJAGYCBQlmZWVBbW91bnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRNmZWVDb2xsZWN0b3JBZGRyZXNzBQlmZWVBbW91bnQFEW91dEFzc2V0SWRPcldhdmVzBQNuaWwFA25pbAQFc3RhdGUJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQt1c2VyQWRkcmVzcwULdG90YWxBbW91bnQFEW91dEFzc2V0SWRPcldhdmVzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNnYXUCCQClCAEFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhR2V0QWN0aW9uSW5mbwYFBW91dEFtBQVvdXRQcgUGcG10QW10BQVjdXJQcgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBsAAUFY3VyUHIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwaAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFBWN1clByBQNuaWwFEHNlbmRGZWVUb01hdGNoZXIDCQAAAgUFc3RhdGUFBXN0YXRlBARidXJuCQD8BwQFA2ZjYQIEYnVybgkAzAgCBQZwbXRBbXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUKcG10QXNzZXRJZAUGcG10QW10BQNuaWwDCQAAAgUEYnVybgUEYnVybgkAlAoCBQVzdGF0ZQULdG90YWxBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAW0ABAckbWF0Y2gwCQCiCAEJAQNtcGsAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECcG0ABAckbWF0Y2gwCQCiCAEJAQRwbXBrAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAAnBkCQACAQIRUGVybWlzc2lvbiBkZW5pZWQBAm1tAQFpBAckbWF0Y2gwCQEBbQADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDADCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQJwawYFAnBkAwkAAQIFByRtYXRjaDACBFVuaXQDCQAAAggFAWkGY2FsbGVyBQR0aGlzBgUCcGQJAAIBAgtNYXRjaCBlcnJvchsBaQELY29uc3RydWN0b3IBAmZjBAFjCQECbW0BBQFpAwkAAAIFAWMFAWMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmZjAAUCZmMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpzZXRNYW5hZ2VyARdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQQBYwkBAm1tAQUBaQMJAAACBQFjBQFjBAJjbQkA2QQBBRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQMJAAACBQJjbQUCY20JAMwIAgkBC1N0cmluZ0VudHJ5AgkBBHBtcGsABRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmNvbmZpcm1NYW5hZ2VyAAQBcAkBAnBtAAQDaHBtAwkBCWlzRGVmaW5lZAEFAXAGCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFA2hwbQUDaHBtBANjcG0DCQAAAggFAWkPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQFwBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQNjcG0FA2NwbQkAzAgCCQELU3RyaW5nRW50cnkCCQEDbXBrAAkA2AQBCQEFdmFsdWUBBQFwCQDMCAIJAQtEZWxldGVFbnRyeQEJAQRwbXBrAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBA3B1dAIEc2xpcAlhdXRvU3Rha2UEB2ZhY3RDZmcJAQNnZmMABAtzdGFraW5nQ250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHZmFjdENmZwUPaWR4RmFjdFN0YWtDbnRyAgpXciBzdCBhZGRyBAhzbGlwQ250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHZmFjdENmZwUQaWR4RmFjdFNsaXBwQ250cgIKV3Igc2wgYWRkcgMJAGYCAAAFBHNsaXAJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQBZQkBAmNwCgkApQgBCAUBaQZjYWxsZXIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAWkIcGF5bWVudHMAAQUEc2xpcAYHBgAAAgAECWVtaXRMcEFtdAgFAWUCXzIECWxwQXNzZXRJZAgFAWUCXzcEBXN0YXRlCAUBZQJfOQQGYW1EaWZmCAUBZQNfMTAEBnByRGlmZggFAWUDXzExBARhbUlkCAUBZQNfMTIEBHBySWQIBQFlA18xMwQBcgkA/AcEBQNmY2ECBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAMJAAACBQFyBQFyBAJlbAQHJG1hdGNoMAUBcgMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAZsZWdhY3kFByRtYXRjaDAJAPwHBAUGbGVnYWN5AgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZWwFAmVsBAJzYQMJAGYCBQZhbURpZmYAAAkA/AcEBQhzbGlwQ250cgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBGFtSWQFBmFtRGlmZgUDbmlsBQNuaWwDCQAAAgUCc2EFAnNhBAJzcAMJAGYCBQZwckRpZmYAAAkA/AcEBQhzbGlwQ250cgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHBySWQFBnByRGlmZgUDbmlsBQNuaWwDCQAAAgUCc3AFAnNwBAhscFRybnNmcgMFCWF1dG9TdGFrZQQCc3MJAPwHBAULc3Rha2luZ0NudHICBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCWxwQXNzZXRJZAUJZW1pdExwQW10BQNuaWwDCQAAAgUCc3MFAnNzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQllbWl0THBBbXQFCWxwQXNzZXRJZAUDbmlsCQDOCAIFBXN0YXRlBQhscFRybnNmcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQtwdXRPbmVUa25WMgIMbWluT3V0QW1vdW50CWF1dG9TdGFrZQQgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQKAAFACQD8BwQFA2ZjYQIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAUACB0Jvb2xlYW4FAUAJAAIBCQCsAgIJAAMBBQFAAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBA1pc1B1dERpc2FibGVkAwMDCQEDaWdzAAYJAAACBQ1jZmdQb29sU3RhdHVzBQpQb29sUHV0RGlzBgkAAAIFDWNmZ1Bvb2xTdGF0dXMFDFBvb2xTaHV0ZG93bgYFIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkBAZjaGVja3MJAMwIAgMJAQEhAQUNaXNQdXREaXNhYmxlZAYJAQh0aHJvd0VycgECIXB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQYJAQh0aHJvd0VycgECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBApwb29sQ29uZmlnCQEDZ3BjAAQEYW1JZAkAkQMCBQpwb29sQ29uZmlnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUKcG9vbENvbmZpZwUJaWR4UHJBc0lkBARscElkCQDZBAEJAJEDAgUKcG9vbENvbmZpZwUJaWR4TFBBc0lkBAphbURlY2ltYWxzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwULaWR4QW10QXNEY20ECnByRGVjaW1hbHMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBQ1pZHhQcmljZUFzRGNtBAt1c2VyQWRkcmVzcwMJAAACCAUBaQZjYWxsZXIFBHRoaXMIBQFpDG9yaWdpbkNhbGxlcggFAWkGY2FsbGVyBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQKcG10QXNzZXRJZAkA2AQBCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEBnBtdEFtdAgFA3BtdAZhbW91bnQEDSR0MDMzMTY4MzMzMjMJAQ1jYWxjUHV0T25lVGtuBQUGcG10QW10BQpwbXRBc3NldElkCQClCAEFC3VzZXJBZGRyZXNzCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQGBAdlc3RpbUxQCAUNJHQwMzMxNjgzMzMyMwJfMQQFc3RhdGUIBQ0kdDAzMzE2ODMzMzIzAl8yBAlmZWVBbW91bnQIBQ0kdDAzMzE2ODMzMzIzAl8zBAllbWl0THBBbXQDAwkAZgIFDG1pbk91dEFtb3VudAAACQBmAgUMbWluT3V0QW1vdW50BQdlc3RpbUxQBwkBCHRocm93RXJyAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQxtaW5PdXRBbW91bnQFA25pbAIABQdlc3RpbUxQBAFlCQD8BwQFA2ZjYQIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsAwkAAAIFAWUFAWUEAmVsBAckbWF0Y2gwBQFlAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEBmxlZ2FjeQUHJG1hdGNoMAkA/AcEBQZsZWdhY3kCBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAUEdW5pdAMJAAACBQJlbAUCZWwECGxwVHJuc2ZyAwUJYXV0b1N0YWtlBAJzcwkA/AcEBQ9zdGFraW5nQ29udHJhY3QCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBGxwSWQFCWVtaXRMcEFtdAUDbmlsAwkAAAIFAnNzBQJzcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUJZW1pdExwQW10BQRscElkBQNuaWwEEHNlbmRGZWVUb01hdGNoZXIDCQBmAgUJZmVlQW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUTZmVlQ29sbGVjdG9yQWRkcmVzcwUJZmVlQW1vdW50CQDZBAEFCnBtdEFzc2V0SWQFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCBQVzdGF0ZQUIbHBUcm5zZnIFEHNlbmRGZWVUb01hdGNoZXIFCWVtaXRMcEFtdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpwdXRGb3JGcmVlAQdtYXhTbHBnAwkAZgIAAAUHbWF4U2xwZwkAAgECCldyb25nIHNscGcDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEBmVzdFB1dAkBAmNwCgkApQgBCAUBaQZjYWxsZXIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAWkIcGF5bWVudHMAAQUHbWF4U2xwZwcHBgAAAgAIBQZlc3RQdXQCXzkBaQEDZ2V0AAQBcgkBAmNnAQUBaQQJb3V0QW10QW10CAUBcgJfMQQIb3V0UHJBbXQIBQFyAl8yBAZwbXRBbXQIBQFyAl8zBApwbXRBc3NldElkCAUBcgJfNAQFc3RhdGUIBQFyAl81BAFiCQD8BwQFA2ZjYQIEYnVybgkAzAgCBQZwbXRBbXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUKcG10QXNzZXRJZAUGcG10QW10BQNuaWwDCQAAAgUBYgUBYgUFc3RhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQELZ2V0T25lVGtuVjICCm91dEFzc2V0SWQMbWluT3V0QW1vdW50BCBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAoAAUAJAPwHBAUDZmNhAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUBQAIHQm9vbGVhbgUBQAkAAgEJAKwCAgkAAwEFAUACHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EDWlzR2V0RGlzYWJsZWQDAwkBA2lncwAGCQAAAgUNY2ZnUG9vbFN0YXR1cwUMUG9vbFNodXRkb3duBgUgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQEBmNoZWNrcwkAzAgCAwkBASEBBQ1pc0dldERpc2FibGVkBgkBCHRocm93RXJyAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABBgkBCHRocm93RXJyAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEDSR0MDM1OTEyMzYwNjcJARNnZXRPbmVUa25WMkludGVybmFsBgUKb3V0QXNzZXRJZAUMbWluT3V0QW1vdW50CAUBaQhwYXltZW50cwgFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQEBXN0YXRlCAUNJHQwMzU5MTIzNjA2NwJfMQQLdG90YWxBbW91bnQIBQ0kdDAzNTkxMjM2MDY3Al8yCQCUCgIFBXN0YXRlBQt0b3RhbEFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARNnZXRPbmVUa25WMlJFQURPTkxZAgpvdXRBc3NldElkDWxwQXNzZXRBbW91bnQECnBvb2xDb25maWcJAQNncGMABARhbUlkCQCRAwIFCnBvb2xDb25maWcFCWlkeEFtQXNJZAQEcHJJZAkAkQMCBQpwb29sQ29uZmlnBQlpZHhQckFzSWQEBGxwSWQJAJEDAgUKcG9vbENvbmZpZwUJaWR4TFBBc0lkBAJ4cAkAzAgCCQC2AgEJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAkAzAgCCQC2AgEJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAUDbmlsBApscEVtaXNzaW9uCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQRscElkAhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJEMAkBBGdldEQBBQJ4cAQCRDEJALgCAgUCRDAJALwCAwkAtgIBBQ1scEFzc2V0QW1vdW50BQJEMAUKbHBFbWlzc2lvbgQFaW5kZXgDCQAAAgUKb3V0QXNzZXRJZAUEYW1JZAAAAwkAAAIFCm91dEFzc2V0SWQFBHBySWQAAQkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBARuZXdZCQEFZ2V0WUQDBQJ4cAUFaW5kZXgFAkQxBAJkeQkAuAICCQCRAwIFAnhwBQVpbmRleAUEbmV3WQQLdG90YWxHZXRSYXcJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC4AgIFAmR5BQRiaWcxBQNuaWwEDSR0MDM2ODU3MzY5MDYJAQd0YWtlRmVlAQULdG90YWxHZXRSYXcECHRvdGFsR2V0CAUNJHQwMzY4NTczNjkwNgJfMQQJZmVlQW1vdW50CAUNJHQwMzY4NTczNjkwNgJfMgkAlAoCBQNuaWwJAJQKAgUIdG90YWxHZXQFCWZlZUFtb3VudAFpARxnZXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgpvdXRBc3NldElkDWxwQXNzZXRBbW91bnQECnBvb2xDb25maWcJAQNncGMABARhbUlkCQCRAwIFCnBvb2xDb25maWcFCWlkeEFtQXNJZAQEcHJJZAkAkQMCBQpwb29sQ29uZmlnBQlpZHhQckFzSWQEBGxwSWQJAJEDAgUKcG9vbENvbmZpZwUJaWR4TFBBc0lkBAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDSR0MDM3MjUxMzczNjYKAAFACQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUKb3V0QXNzZXRJZAkAzAgCBQ1scEFzc2V0QW1vdW50BQNuaWwFA25pbAMJAAECBQFAAgooSW50LCBJbnQpBQFACQACAQkArAICCQADAQUBQAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQIdG90YWxHZXQIBQ0kdDAzNzI1MTM3MzY2Al8xBAlmZWVBbW91bnQIBQ0kdDAzNzI1MTM3MzY2Al8yBAFyCQEDZWdvBAIABQRscElkBQ1scEFzc2V0QW1vdW50BQR0aGlzBAhvdXRBbUFtdAgFAXICXzEECG91dFByQW10CAUBcgJfMgQOc3VtT2ZHZXRBc3NldHMJAGQCBQhvdXRBbUFtdAUIb3V0UHJBbXQEBWJvbnVzAwkAAAIFDnN1bU9mR2V0QXNzZXRzAAADCQAAAgUIdG90YWxHZXQAAAAACQACAQIXYm9udXMgY2FsY3VsYXRpb24gZXJyb3IJAGsDCQBlAgUIdG90YWxHZXQFDnN1bU9mR2V0QXNzZXRzBQZzY2FsZTgFDnN1bU9mR2V0QXNzZXRzCQCUCgIFA25pbAkAlQoDBQh0b3RhbEdldAUJZmVlQW1vdW50BQVib251cwFpAQlnZXROb0xlc3MCEm5vTGVzc1RoZW5BbXRBc3NldBRub0xlc3NUaGVuUHJpY2VBc3NldAQBcgkBAmNnAQUBaQQIb3V0QW1BbXQIBQFyAl8xBAhvdXRQckFtdAgFAXICXzIEBnBtdEFtdAgFAXICXzMECnBtdEFzc2V0SWQIBQFyAl80BAVzdGF0ZQgFAXICXzUDCQBmAgUSbm9MZXNzVGhlbkFtdEFzc2V0BQhvdXRBbUFtdAkAAgEJAKwCAgkArAICCQCsAgICCUZhaWxlZDogIAkApAMBBQhvdXRBbUFtdAIDIDwgCQCkAwEFEm5vTGVzc1RoZW5BbXRBc3NldAMJAGYCBRRub0xlc3NUaGVuUHJpY2VBc3NldAUIb3V0UHJBbXQJAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQhvdXRQckFtdAIDIDwgCQCkAwEFFG5vTGVzc1RoZW5QcmljZUFzc2V0BBRidXJuTFBBc3NldE9uRmFjdG9yeQkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGcG10QW10BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnBtdEFzc2V0SWQFBnBtdEFtdAUDbmlsAwkAAAIFFGJ1cm5MUEFzc2V0T25GYWN0b3J5BRRidXJuTFBBc3NldE9uRmFjdG9yeQUFc3RhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENdW5zdGFrZUFuZEdldAEGYW1vdW50BA1jaGVja1BheW1lbnRzAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUNY2hlY2tQYXltZW50cwUNY2hlY2tQYXltZW50cwQDY2ZnCQEDZ3BjAAQKZmFjdG9yeUNmZwkBA2dmYwAECWxwQXNzZXRJZAkA2QQBCQCRAwIFA2NmZwUJaWR4TFBBc0lkBAdzdGFraW5nCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQpmYWN0b3J5Q2ZnBQ9pZHhGYWN0U3Rha0NudHICCldyIHN0IGFkZHIECnVuc3Rha2VJbnYJAPwHBAUHc3Rha2luZwIHdW5zdGFrZQkAzAgCCQDYBAEFCWxwQXNzZXRJZAkAzAgCBQZhbW91bnQFA25pbAUDbmlsAwkAAAIFCnVuc3Rha2VJbnYFCnVuc3Rha2VJbnYEAXIJAQNlZ28ECQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQUJbHBBc3NldElkBQZhbW91bnQIBQFpBmNhbGxlcgQDc3RzCQENcGFyc2VJbnRWYWx1ZQEIBQFyAl85BAVzdGF0ZQgFAXIDXzEwBAF2AwMJAQNpZ3MABgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQACAQkArAICAglCbG9ja2VkOiAJAKQDAQUDc3RzBgMJAAACBQF2BQF2BAVidXJuQQkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGYW1vdW50BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCWxwQXNzZXRJZAUGYW1vdW50BQNuaWwDCQAAAgUFYnVybkEFBWJ1cm5BBQVzdGF0ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARV1bnN0YWtlQW5kR2V0T25lVGtuVjIDDXVuc3Rha2VBbW91bnQKb3V0QXNzZXRJZAxtaW5PdXRBbW91bnQEIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkCgABQAkA/AcEBQNmY2ECKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQFAAgdCb29sZWFuBQFACQACAQkArAICCQADAQUBQAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQNaXNHZXREaXNhYmxlZAMDCQEDaWdzAAYJAAACBQ1jZmdQb29sU3RhdHVzBQxQb29sU2h1dGRvd24GBSBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAQGY2hlY2tzCQDMCAIDCQEBIQEFDWlzR2V0RGlzYWJsZWQGCQEIdGhyb3dFcnIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAGCQEIdGhyb3dFcnIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQDY2ZnCQEDZ3BjAAQKZmFjdG9yeUNmZwkBA2dmYwAECWxwQXNzZXRJZAkA2QQBCQCRAwIFA2NmZwUJaWR4TFBBc0lkBAdzdGFraW5nCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQpmYWN0b3J5Q2ZnBQ9pZHhGYWN0U3Rha0NudHICCldyIHN0IGFkZHIECnVuc3Rha2VJbnYJAPwHBAUHc3Rha2luZwIHdW5zdGFrZQkAzAgCCQDYBAEFCWxwQXNzZXRJZAkAzAgCBQ11bnN0YWtlQW1vdW50BQNuaWwFA25pbAMJAAACBQp1bnN0YWtlSW52BQp1bnN0YWtlSW52BA0kdDA0MDA5ODQwMjg2CQETZ2V0T25lVGtuVjJJbnRlcm5hbAYFCm91dEFzc2V0SWQFDG1pbk91dEFtb3VudAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUJbHBBc3NldElkBQ11bnN0YWtlQW1vdW50BQNuaWwIBQFpBmNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAVzdGF0ZQgFDSR0MDQwMDk4NDAyODYCXzEEC3RvdGFsQW1vdW50CAUNJHQwNDAwOTg0MDI4NgJfMgkAlAoCBQVzdGF0ZQULdG90YWxBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEccHV0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQIQcGF5bWVudEFtb3VudFJhdw5wYXltZW50QXNzZXRJZAQKcG9vbENvbmZpZwkBA2dwYwAEBGFtSWQJAJEDAgUKcG9vbENvbmZpZwUJaWR4QW1Bc0lkBARwcklkCQCRAwIFCnBvb2xDb25maWcFCWlkeFByQXNJZAQEbHBJZAkAkQMCBQpwb29sQ29uZmlnBQlpZHhMUEFzSWQEDSR0MDQwNTQ1NDA2NDgJAQ1jYWxjUHV0T25lVGtuBQUQcGF5bWVudEFtb3VudFJhdwUOcGF5bWVudEFzc2V0SWQCAAIABgQIbHBBbW91bnQIBQ0kdDA0MDU0NTQwNjQ4Al8xBAVzdGF0ZQgFDSR0MDQwNTQ1NDA2NDgCXzIECWZlZUFtb3VudAgFDSR0MDQwNTQ1NDA2NDgCXzMEBWJvbnVzCAUNJHQwNDA1NDU0MDY0OAJfNAkAlAoCBQNuaWwJAJUKAwUIbHBBbW91bnQFCWZlZUFtb3VudAUFYm9udXMBaQEhcHV0T25lVGtuVjJXaXRob3V0VGFrZUZlZVJFQURPTkxZAhBwYXltZW50QW1vdW50UmF3DnBheW1lbnRBc3NldElkBApwb29sQ29uZmlnCQEDZ3BjAAQEYW1JZAkAkQMCBQpwb29sQ29uZmlnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUKcG9vbENvbmZpZwUJaWR4UHJBc0lkBARscElkCQCRAwIFCnBvb2xDb25maWcFCWlkeExQQXNJZAQNJHQwNDA5Mjc0MTAzMQkBDWNhbGNQdXRPbmVUa24FBRBwYXltZW50QW1vdW50UmF3BQ5wYXltZW50QXNzZXRJZAIAAgAHBAhscEFtb3VudAgFDSR0MDQwOTI3NDEwMzECXzEEBXN0YXRlCAUNJHQwNDA5Mjc0MTAzMQJfMgQJZmVlQW1vdW50CAUNJHQwNDA5Mjc0MTAzMQJfMwQFYm9udXMIBQ0kdDA0MDkyNzQxMDMxAl80CQCUCgIFA25pbAkAlQoDBQhscEFtb3VudAUJZmVlQW1vdW50BQVib251cwFpAQhhY3RpdmF0ZQIIYW10QXNTdHIHcHJBc1N0cgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyCQClCAEFA2ZjYQkAAgECBmRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQAFCGFtdEFzU3RyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJwYQAFB3ByQXNTdHIFA25pbAIHc3VjY2VzcwFpAQRzZXRTAgFrAXYDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBBHN0cmYCBQR0aGlzCQEDYWRhAAUCcGQJAMwIAgkBC1N0cmluZ0VudHJ5AgUBawUBdgUDbmlsAWkBBHNldEkCAWsBdgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyCQEEc3RyZgIFBHRoaXMJAQNhZGEABQJwZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBawUBdgUDbmlsAWkBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBA2dwYwABaQEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQEHYXNzZXRJZAkAlAoCBQNuaWwJAQ1nZXRBY2NCYWxhbmNlAQUHYXNzZXRJZAFpARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwVhbUFtdAVwckFtdAVscEFtdAQCcHIJAQpjYWxjUHJpY2VzAwUFYW1BbXQFBXByQW10BQVscEFtdAkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAnByAAAJAMwIAgkApgMBCQCRAwIFAnByAAEJAMwIAgkApgMBCQCRAwIFAnByAAIFA25pbAFpARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgN2YWwMcmVzU2NhbGVNdWx0CQCUCgIFA25pbAkBAmYxAgkApwMBBQN2YWwFDHJlc1NjYWxlTXVsdAFpARR0b1gxOFdyYXBwZXJSRUFET05MWQIHb3JpZ1ZhbA1vcmlnU2NhbGVNdWx0CQCUCgIFA25pbAkApgMBCQECdDECBQdvcmlnVmFsBQ1vcmlnU2NhbGVNdWx0AWkBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQIIcHJBbXRYMTgIYW1BbXRYMTgJAJQKAgUDbmlsCQCmAwEJAQRjcGJpAgkApwMBBQhwckFtdFgxOAkApwMBBQhhbUFtdFgxOAFpASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkGdHhJZDU4CHNsaXBwYWdlB2luQW1BbXQGaW5BbUlkB2luUHJBbXQGaW5QcklkB3VzckFkZHIGaXNFdmFsBmVtaXRMcAkAlAoCBQNuaWwJAQNlcG8NBQZ0eElkNTgFCHNsaXBwYWdlBQdpbkFtQW10BQZpbkFtSWQFB2luUHJBbXQFBmluUHJJZAUHdXNyQWRkcgUGaXNFdmFsBQZlbWl0THAGBwAAAgABaQEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEBnR4SWQ1OAdwbXRBc0lkCHBtdExwQW10B3VzckFkZHIEAXIJAQNlZ28EBQZ0eElkNTgFB3BtdEFzSWQFCHBtdExwQW10CQERQGV4dHJOYXRpdmUoMTA2MikBBQd1c3JBZGRyCQCUCgIFA25pbAkAnAoKCAUBcgJfMQgFAXICXzIIBQFyAl8zCAUBcgJfNAgFAXICXzUIBQFyAl82CAUBcgJfNwkApgMBCAUBcgJfOAgFAXICXzkIBQFyA18xMAFpAQ5nZXRGZWVSRUFET05MWQAJAJQKAgUDbmlsBQNmZWUBAnR4AQZ2ZXJpZnkABA90YXJnZXRQdWJsaWNLZXkEByRtYXRjaDAJAQFtAAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAUCcGsDCQABAgUHJG1hdGNoMAIEVW5pdAgFAnR4D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAgVPcmRlcgQFb3JkZXIFByRtYXRjaDAECm1hdGNoZXJQdWIJAQJtcAAECm9yZGVyVmFsaWQJAQNtb2EBBQVvcmRlcgQLc2VuZGVyVmFsaWQJAPQDAwgFBW9yZGVyCWJvZHlCeXRlcwkAkQMCCAUFb3JkZXIGcHJvb2ZzAAAIBQVvcmRlcg9zZW5kZXJQdWJsaWNLZXkEDG1hdGNoZXJWYWxpZAkA9AMDCAUFb3JkZXIJYm9keUJ5dGVzCQCRAwIIBQVvcmRlcgZwcm9vZnMAAQUKbWF0Y2hlclB1YgMDAwUKb3JkZXJWYWxpZAULc2VuZGVyVmFsaWQHBQxtYXRjaGVyVmFsaWQHBgkBA3RvZQMFCm9yZGVyVmFsaWQFC3NlbmRlclZhbGlkBQxtYXRjaGVyVmFsaWQDCQABAgUHJG1hdGNoMAIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAXMFByRtYXRjaDAEB25ld0hhc2gJAPYDAQkBBXZhbHVlAQgFAXMGc2NyaXB0BAthbGxvd2VkSGFzaAkA2wQBCQEFdmFsdWUBCQCdCAIFA2ZjYQkBHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gABAtjdXJyZW50SGFzaAkA8QcBBQR0aGlzAwMJAAACBQthbGxvd2VkSGFzaAUHbmV3SGFzaAkBAiE9AgULY3VycmVudEhhc2gFB25ld0hhc2gHBgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUPdGFyZ2V0UHVibGljS2V5CQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXnI0s19", "chainId": 87, "height": 3367530, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4tN3JRNNsESULRhGEaGi6ysyUqTAk81Z1N43H9eVqFGi Next: 5RUR2uRnWwgmSUvmhbVQm9jFPWQTzGhE7dpZhHf6j2nT Diff:
OldNewDifferences
606606 }
607607
608608
609-func eF (eG,ck,cm,aa) = {
609+func eF (eG,ck,cm,aa,eH) = {
610610 let aS = aK()
611611 let co = aS[u]
612612 let cp = aS[v]
613613 let cn = aS[t]
614614 let cW = parseIntValue(aS[w])
615615 let cX = parseIntValue(aS[x])
616- let eH = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cn)), "invalid lp asset").quantity)
617- let eI = if ((eH > e))
616+ let eI = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cn)), "invalid lp asset").quantity)
617+ let eJ = if ((eI > e))
618618 then true
619619 else throw("initial deposit requires all coins")
620- if ((eI == eI))
620+ if ((eJ == eJ))
621621 then {
622622 let cu = bx(co)
623623 let cw = bx(cp)
624- let eJ = if ((aa == ""))
624+ let eK = if ((aa == ""))
625625 then $Tuple2(cu, cw)
626626 else if ((ck == co))
627627 then if ((eG > cu))
632632 then throw("invalid payment amount")
633633 else $Tuple2(cu, (cw - eG))
634634 else throw("wrong pmtAssetId")
635- let eK = eJ._1
636- let eL = eJ._2
637- let eM = if ((ck == co))
635+ let eL = eK._1
636+ let eM = eK._2
637+ let eN = if ((ck == co))
638638 then $Tuple2(eG, 0)
639639 else if ((ck == cp))
640640 then $Tuple2(0, eG)
641641 else throw("invalid payment")
642- let eN = eM._1
643- let eO = eM._2
644- let eP = cf(eN)._1
645- let eQ = cf(eO)._1
646- let ch = cf(eG)._2
647- let eR = (eK + eP)
648- let eS = (eL + eQ)
649- let bK = dQ([toBigInt(eK), toBigInt(eL)])
650- let bJ = dQ([toBigInt(eR), toBigInt(eS)])
651- let eT = if ((bJ > bK))
642+ let eO = eN._1
643+ let eP = eN._2
644+ let eQ = if (eH)
645+ then $Tuple3(cf(eO)._1, cf(eP)._1, cf(eG)._2)
646+ else $Tuple3(eO, eP, 0)
647+ let eR = eQ._1
648+ let eS = eQ._2
649+ let ch = eQ._3
650+ let eT = (eL + eR)
651+ let eU = (eM + eS)
652+ let bK = dQ([toBigInt(eL), toBigInt(eM)])
653+ let bJ = dQ([toBigInt(eT), toBigInt(eU)])
654+ let eV = if ((bJ > bK))
652655 then true
653656 else throw()
654- if ((eT == eT))
657+ if ((eV == eV))
655658 then {
656- let eU = fraction(eH, (bJ - bK), bK)
657- let cz = I(bz(F(eS, cX), F(eR, cW)), a)
658- let dv = [IntegerEntry(U(), cz), IntegerEntry(V(height, lastBlock.timestamp), cz), StringEntry(Y(cm, aa), bi(eN, eO, toInt(eU), cz, 0, 0, height, lastBlock.timestamp, 0, 0))]
659- let eV = fraction(eL, a, eK)
660- let eW = fraction(eG, a, (eV + a))
661- let eX = (eG - eW)
662- let eY = fraction(eH, toBigInt(eX), toBigInt(eL))
663- let eZ = toInt(fraction((eU - eY), b, eY))
664- $Tuple4(toInt(eU), dv, ch, eZ)
659+ let eW = fraction(eI, (bJ - bK), bK)
660+ let cz = I(bz(F(eU, cX), F(eT, cW)), a)
661+ let dv = [IntegerEntry(U(), cz), IntegerEntry(V(height, lastBlock.timestamp), cz), StringEntry(Y(cm, aa), bi(eO, eP, toInt(eW), cz, 0, 0, height, lastBlock.timestamp, 0, 0))]
662+ let eX = fraction(eM, a, eL)
663+ let eY = fraction(eG, a, (eX + a))
664+ let eZ = (eG - eY)
665+ let fa = fraction(eI, toBigInt(eZ), toBigInt(eM))
666+ let fb = toInt(fraction((eW - fa), b, fa))
667+ $Tuple4(toInt(eW), dv, ch, fb)
665668 }
666669 else throw("Strict value is not equal to itself.")
667670 }
669672 }
670673
671674
672-func fa (fb,fc,fd,dN,fe,ff) = {
675+func fc (fd,fe,ff,dN,fg,fh) = {
673676 let aS = aK()
674677 let cn = aS[t]
675678 let co = aS[u]
676679 let cp = aS[v]
677- let fg = parseIntValue(aS[w])
678- let fh = parseIntValue(aS[x])
679- let fi = aS[s]
680+ let fi = parseIntValue(aS[w])
681+ let fj = parseIntValue(aS[x])
682+ let fk = aS[s]
680683 let cm = if ((dN == bh))
681- then fe
684+ then fg
682685 else dN
683- let dL = value(fd[0])
686+ let dL = value(ff[0])
684687 let ck = value(dL.assetId)
685688 let cQ = dL.amount
686- if ((1000000000 > cQ))
687- then throw("Min pmt 10 LP")
689+ let cj = toBase58String(fh)
690+ if ((cn != toBase58String(ck)))
691+ then throw("Wrong LP")
688692 else {
689- let cj = toBase58String(ff)
690- if ((cn != toBase58String(ck)))
691- then throw("Wrong LP")
692- else {
693- let cu = bx(co)
694- let cw = bx(cp)
695- let fj = {
696- let fk = invoke(this, "getOneTknV2READONLY", [fb, cQ], nil)
697- if ($isInstanceOf(fk, "(Int, Int)"))
698- then fk
699- else throw(($getType(fk) + " couldn't be cast to (Int, Int)"))
700- }
701- let fl = fj._1
702- let ch = fj._2
703- let fm = if (if ((fc > 0))
704- then (fc > fl)
705- else false)
706- then throw(makeString(["amount to receive is less than ", toString(fc)], ""))
707- else fl
708- let fn = if ((fb == co))
709- then $Tuple4(fm, 0, ((cu - fm) - ch), cw)
710- else if ((fb == cp))
711- then $Tuple4(0, fm, cu, ((cw - fm) - ch))
712- else throw("invalid out asset id")
713- let fo = fn._1
714- let fp = fn._2
715- let eR = fn._3
716- let eS = fn._4
717- let fq = bz(F(eS, fh), F(eR, fg))
718- let fr = I(fq, a)
719- let fs = if ((fb == "WAVES"))
720- then unit
721- else fromBase58String(fb)
722- let ft = if ((ch > 0))
723- then [ScriptTransfer(aJ, ch, fs)]
724- else nil
725- let cG = ([ScriptTransfer(cm, fm, fs), StringEntry(ab(toString(cm), cj), bt(fo, fp, cQ, fr, height, lastBlock.timestamp)), IntegerEntry(U(), fr), IntegerEntry(V(height, lastBlock.timestamp), fr)] ++ ft)
726- if ((cG == cG))
727- then {
728- let fu = invoke(aF, "burn", [cQ], [AttachedPayment(ck, cQ)])
729- if ((fu == fu))
730- then $Tuple2(cG, fm)
731- else throw("Strict value is not equal to itself.")
732- }
693+ let cu = bx(co)
694+ let cw = bx(cp)
695+ let fl = {
696+ let fm = invoke(this, "getOneTknV2READONLY", [fd, cQ], nil)
697+ if ($isInstanceOf(fm, "(Int, Int)"))
698+ then fm
699+ else throw(($getType(fm) + " couldn't be cast to (Int, Int)"))
700+ }
701+ let fn = fl._1
702+ let ch = fl._2
703+ let fo = if (if ((fe > 0))
704+ then (fe > fn)
705+ else false)
706+ then aD(makeString(["amount to receive is less than ", toString(fe)], ""))
707+ else fn
708+ let fp = if ((fd == co))
709+ then $Tuple4(fo, 0, ((cu - fo) - ch), cw)
710+ else if ((fd == cp))
711+ then $Tuple4(0, fo, cu, ((cw - fo) - ch))
712+ else throw("invalid out asset id")
713+ let fq = fp._1
714+ let fr = fp._2
715+ let eT = fp._3
716+ let eU = fp._4
717+ let fs = bz(F(eU, fj), F(eT, fi))
718+ let ft = I(fs, a)
719+ let fu = if ((fd == "WAVES"))
720+ then unit
721+ else fromBase58String(fd)
722+ let fv = if ((ch > 0))
723+ then [ScriptTransfer(aJ, ch, fu)]
724+ else nil
725+ let cG = ([ScriptTransfer(cm, fo, fu), StringEntry(ab(toString(cm), cj), bt(fq, fr, cQ, ft, height, lastBlock.timestamp)), IntegerEntry(U(), ft), IntegerEntry(V(height, lastBlock.timestamp), ft)] ++ fv)
726+ if ((cG == cG))
727+ then {
728+ let fw = invoke(aF, "burn", [cQ], [AttachedPayment(ck, cQ)])
729+ if ((fw == fw))
730+ then $Tuple2(cG, fo)
733731 else throw("Strict value is not equal to itself.")
734732 }
733+ else throw("Strict value is not equal to itself.")
735734 }
736735 }
737736
738737
739-func fv () = {
738+func fx () = {
740739 let ax = getString(S())
741740 if ($isInstanceOf(ax, "String"))
742741 then {
749748 }
750749
751750
752-func fw () = {
751+func fy () = {
753752 let ax = getString(T())
754753 if ($isInstanceOf(ax, "String"))
755754 then {
762761 }
763762
764763
765-let fx = throw("Permission denied")
764+let fz = throw("Permission denied")
766765
767-func fy (dK) = {
768- let ax = fv()
766+func fA (dK) = {
767+ let ax = fx()
769768 if ($isInstanceOf(ax, "ByteVector"))
770769 then {
771- let fz = ax
772- if ((dK.callerPublicKey == fz))
770+ let fB = ax
771+ if ((dK.callerPublicKey == fB))
773772 then true
774- else fx
773+ else fz
775774 }
776775 else if ($isInstanceOf(ax, "Unit"))
777776 then if ((dK.caller == this))
778777 then true
779- else fx
778+ else fz
780779 else throw("Match error")
781780 }
782781
783782
784783 @Callable(dK)
785784 func constructor (R) = {
786- let ey = fy(dK)
785+ let ey = fA(dK)
787786 if ((ey == ey))
788787 then [StringEntry(R(), R)]
789788 else throw("Strict value is not equal to itself.")
792791
793792
794793 @Callable(dK)
795-func setManager (fA) = {
796- let ey = fy(dK)
794+func setManager (fC) = {
795+ let ey = fA(dK)
797796 if ((ey == ey))
798797 then {
799- let fB = fromBase58String(fA)
800- if ((fB == fB))
801- then [StringEntry(T(), fA)]
798+ let fD = fromBase58String(fC)
799+ if ((fD == fD))
800+ then [StringEntry(T(), fC)]
802801 else throw("Strict value is not equal to itself.")
803802 }
804803 else throw("Strict value is not equal to itself.")
808807
809808 @Callable(dK)
810809 func confirmManager () = {
811- let ce = fw()
812- let fC = if (isDefined(ce))
810+ let ce = fy()
811+ let fE = if (isDefined(ce))
813812 then true
814813 else throw("No pending manager")
815- if ((fC == fC))
814+ if ((fE == fE))
816815 then {
817- let fD = if ((dK.callerPublicKey == value(ce)))
816+ let fF = if ((dK.callerPublicKey == value(ce)))
818817 then true
819818 else throw("You are not pending manager")
820- if ((fD == fD))
819+ if ((fF == fF))
821820 then [StringEntry(S(), toBase58String(value(ce))), DeleteEntry(T())]
822821 else throw("Strict value is not equal to itself.")
823822 }
827826
828827
829828 @Callable(dK)
830-func put (fE,fF) = {
831- let fG = bc()
832- let fH = valueOrErrorMessage(addressFromString(fG[A]), "Wr st addr")
833- let fI = valueOrErrorMessage(addressFromString(fG[C]), "Wr sl addr")
834- if ((0 > fE))
829+func put (fG,fH) = {
830+ let fI = bc()
831+ let fJ = valueOrErrorMessage(addressFromString(fI[A]), "Wr st addr")
832+ let fK = valueOrErrorMessage(addressFromString(fI[C]), "Wr sl addr")
833+ if ((0 > fG))
835834 then throw("Wrong slippage")
836835 else if ((size(dK.payments) != 2))
837836 then throw("2 pmnts expd")
838837 else {
839- let fJ = dM(toString(dK.caller), toBase58String(dK.transactionId), AttachedPayment(value(dK.payments[0]).assetId, value(dK.payments[0]).amount), dK.payments[1], fE, true, false, true, 0, "")
840- let dp = fJ._2
841- let fK = fJ._7
842- let cG = fJ._9
843- let dq = fJ._10
844- let dr = fJ._11
845- let co = fJ._12
846- let cp = fJ._13
838+ let fL = dM(toString(dK.caller), toBase58String(dK.transactionId), AttachedPayment(value(dK.payments[0]).assetId, value(dK.payments[0]).amount), dK.payments[1], fG, true, false, true, 0, "")
839+ let dp = fL._2
840+ let fM = fL._7
841+ let cG = fL._9
842+ let dq = fL._10
843+ let dr = fL._11
844+ let co = fL._12
845+ let cp = fL._13
847846 let dc = invoke(aF, "emit", [dp], nil)
848847 if ((dc == dc))
849848 then {
850- let fL = {
849+ let fN = {
851850 let ax = dc
852851 if ($isInstanceOf(ax, "Address"))
853852 then {
854- let fM = ax
855- invoke(fM, "emit", [dp], nil)
853+ let fO = ax
854+ invoke(fO, "emit", [dp], nil)
856855 }
857856 else unit
858857 }
859- if ((fL == fL))
858+ if ((fN == fN))
860859 then {
861- let fN = if ((dq > 0))
862- then invoke(fI, "put", nil, [AttachedPayment(co, dq)])
860+ let fP = if ((dq > 0))
861+ then invoke(fK, "put", nil, [AttachedPayment(co, dq)])
863862 else nil
864- if ((fN == fN))
863+ if ((fP == fP))
865864 then {
866- let fO = if ((dr > 0))
867- then invoke(fI, "put", nil, [AttachedPayment(cp, dr)])
865+ let fQ = if ((dr > 0))
866+ then invoke(fK, "put", nil, [AttachedPayment(cp, dr)])
868867 else nil
869- if ((fO == fO))
868+ if ((fQ == fQ))
870869 then {
871- let fP = if (fF)
870+ let fR = if (fH)
872871 then {
873- let fQ = invoke(fH, "stake", nil, [AttachedPayment(fK, dp)])
874- if ((fQ == fQ))
872+ let fS = invoke(fJ, "stake", nil, [AttachedPayment(fM, dp)])
873+ if ((fS == fS))
875874 then nil
876875 else throw("Strict value is not equal to itself.")
877876 }
878- else [ScriptTransfer(dK.caller, dp, fK)]
879- (cG ++ fP)
877+ else [ScriptTransfer(dK.caller, dp, fM)]
878+ (cG ++ fR)
880879 }
881880 else throw("Strict value is not equal to itself.")
882881 }
891890
892891
893892 @Callable(dK)
894-func putOneTknV2 (fc,fF) = {
895- let fR = {
896- let fk = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
897- if ($isInstanceOf(fk, "Boolean"))
898- then fk
899- else throw(($getType(fk) + " couldn't be cast to Boolean"))
893+func putOneTknV2 (fe,fH) = {
894+ let fT = {
895+ let fm = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
896+ if ($isInstanceOf(fm, "Boolean"))
897+ then fm
898+ else throw(($getType(fm) + " couldn't be cast to Boolean"))
900899 }
901- let fS = if (if (if (aH())
900+ let fU = if (if (if (aH())
902901 then true
903902 else (aW == o))
904903 then true
905904 else (aW == q))
906905 then true
907- else fR
908- let fT = [if (!(fS))
906+ else fT
907+ let fV = [if (!(fU))
909908 then true
910909 else aD("put operation is blocked by admin"), if ((size(dK.payments) == 1))
911910 then true
912911 else aD("exactly 1 payment are expected")]
913- if ((fT == fT))
912+ if ((fV == fV))
914913 then {
915914 let aS = aK()
916915 let co = aS[u]
917916 let cp = aS[v]
918917 let cn = fromBase58String(aS[t])
919- let fg = parseIntValue(aS[w])
920- let fh = parseIntValue(aS[x])
918+ let fi = parseIntValue(aS[w])
919+ let fj = parseIntValue(aS[x])
921920 let cm = if ((dK.caller == this))
922921 then dK.originCaller
923922 else dK.caller
924923 let dL = value(dK.payments[0])
925924 let ck = toBase58String(value(dL.assetId))
926925 let cQ = dL.amount
927- if ((10000000 > cQ))
928- then throw("Wrong pmt amt")
929- else {
930- let fU = eF(cQ, ck, toString(cm), toBase58String(dK.transactionId))
931- let fV = fU._1
932- let cG = fU._2
933- let ch = fU._3
934- let dp = if (if ((fc > 0))
935- then (fc > fV)
936- else false)
937- then throw(makeString(["amount to receive is less than ", toString(fc)], ""))
938- else fV
939- let fJ = invoke(aF, "emit", [dp], nil)
940- if ((fJ == fJ))
926+ let fW = eF(cQ, ck, toString(cm), toBase58String(dK.transactionId), true)
927+ let fX = fW._1
928+ let cG = fW._2
929+ let ch = fW._3
930+ let dp = if (if ((fe > 0))
931+ then (fe > fX)
932+ else false)
933+ then aD(makeString(["amount to receive is less than ", toString(fe)], ""))
934+ else fX
935+ let fL = invoke(aF, "emit", [dp], nil)
936+ if ((fL == fL))
937+ then {
938+ let fN = {
939+ let ax = fL
940+ if ($isInstanceOf(ax, "Address"))
941+ then {
942+ let fO = ax
943+ invoke(fO, "emit", [dp], nil)
944+ }
945+ else unit
946+ }
947+ if ((fN == fN))
941948 then {
942- let fL = {
943- let ax = fJ
944- if ($isInstanceOf(ax, "Address"))
945- then {
946- let fM = ax
947- invoke(fM, "emit", [dp], nil)
948- }
949- else unit
950- }
951- if ((fL == fL))
949+ let fR = if (fH)
952950 then {
953- let fP = if (fF)
954- then {
955- let fQ = invoke(be, "stake", nil, [AttachedPayment(cn, dp)])
956- if ((fQ == fQ))
957- then nil
958- else throw("Strict value is not equal to itself.")
959- }
960- else [ScriptTransfer(dK.caller, dp, cn)]
961- let ft = if ((ch > 0))
962- then [ScriptTransfer(aJ, ch, fromBase58String(ck))]
963- else nil
964- $Tuple2(((cG ++ fP) ++ ft), dp)
951+ let fS = invoke(be, "stake", nil, [AttachedPayment(cn, dp)])
952+ if ((fS == fS))
953+ then nil
954+ else throw("Strict value is not equal to itself.")
965955 }
966- else throw("Strict value is not equal to itself.")
956+ else [ScriptTransfer(dK.caller, dp, cn)]
957+ let fv = if ((ch > 0))
958+ then [ScriptTransfer(aJ, ch, fromBase58String(ck))]
959+ else nil
960+ $Tuple2(((cG ++ fR) ++ fv), dp)
967961 }
968962 else throw("Strict value is not equal to itself.")
969963 }
964+ else throw("Strict value is not equal to itself.")
970965 }
971966 else throw("Strict value is not equal to itself.")
972967 }
974969
975970
976971 @Callable(dK)
977-func putForFree (fW) = if ((0 > fW))
972+func putForFree (fY) = if ((0 > fY))
978973 then throw("Wrong slpg")
979974 else if ((size(dK.payments) != 2))
980975 then throw("2 pmnts expd")
981976 else {
982- let fX = dM(toString(dK.caller), toBase58String(dK.transactionId), AttachedPayment(value(dK.payments[0]).assetId, value(dK.payments[0]).amount), dK.payments[1], fW, false, false, true, 0, "")
983- fX._9
977+ let fZ = dM(toString(dK.caller), toBase58String(dK.transactionId), AttachedPayment(value(dK.payments[0]).assetId, value(dK.payments[0]).amount), dK.payments[1], fY, false, false, true, 0, "")
978+ fZ._9
984979 }
985980
986981
988983 @Callable(dK)
989984 func get () = {
990985 let dc = dJ(dK)
991- let fY = dc._1
986+ let ga = dc._1
992987 let cF = dc._2
993988 let cQ = dc._3
994989 let ck = dc._4
1002997
1003998
1004999 @Callable(dK)
1005-func getOneTknV2 (fb,fc) = {
1006- let fR = {
1007- let fk = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1008- if ($isInstanceOf(fk, "Boolean"))
1009- then fk
1010- else throw(($getType(fk) + " couldn't be cast to Boolean"))
1000+func getOneTknV2 (fd,fe) = {
1001+ let fT = {
1002+ let fm = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1003+ if ($isInstanceOf(fm, "Boolean"))
1004+ then fm
1005+ else throw(($getType(fm) + " couldn't be cast to Boolean"))
10111006 }
1012- let fZ = if (if (aH())
1007+ let gb = if (if (aH())
10131008 then true
10141009 else (aW == q))
10151010 then true
1016- else fR
1017- let fT = [if (!(fZ))
1011+ else fT
1012+ let fV = [if (!(gb))
10181013 then true
10191014 else aD("get operation is blocked by admin"), if ((size(dK.payments) == 1))
10201015 then true
10211016 else aD("exactly 1 payment are expected")]
1022- if ((fT == fT))
1017+ if ((fV == fV))
10231018 then {
1024- let ga = fa(fb, fc, dK.payments, dK.caller, dK.originCaller, dK.transactionId)
1025- let cG = ga._1
1026- let fm = ga._2
1027- $Tuple2(cG, fm)
1019+ let gc = fc(fd, fe, dK.payments, dK.caller, dK.originCaller, dK.transactionId)
1020+ let cG = gc._1
1021+ let fo = gc._2
1022+ $Tuple2(cG, fo)
10281023 }
10291024 else throw("Strict value is not equal to itself.")
10301025 }
10321027
10331028
10341029 @Callable(dK)
1035-func getOneTknV2READONLY (fb,gb) = {
1030+func getOneTknV2READONLY (fd,gd) = {
10361031 let aS = aK()
10371032 let co = aS[u]
10381033 let cp = aS[v]
10391034 let cn = aS[t]
10401035 let dR = [toBigInt(bx(co)), toBigInt(bx(cp))]
1041- let gc = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cn)), "invalid lp asset").quantity)
1036+ let ge = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cn)), "invalid lp asset").quantity)
10421037 let bK = dQ(dR)
1043- let bJ = (bK - fraction(toBigInt(gb), bK, gc))
1044- let gd = if ((fb == co))
1038+ let bJ = (bK - fraction(toBigInt(gd), bK, ge))
1039+ let gf = if ((fd == co))
10451040 then 0
1046- else if ((fb == cp))
1041+ else if ((fd == cp))
10471042 then 1
10481043 else throw("invalid out asset id")
1049- let ge = ev(dR, gd, bJ)
1050- let gf = (dR[gd] - ge)
1051- let gg = toInt((gf - f))
1052- let gh = cf(gg)
1053- let fl = gh._1
1054- let ch = gh._2
1055- $Tuple2(nil, $Tuple2(fl, ch))
1044+ let gg = ev(dR, gf, bJ)
1045+ let gh = (dR[gf] - gg)
1046+ let gi = max([0, toInt((gh - f))])
1047+ let gj = cf(gi)
1048+ let fn = gj._1
1049+ let ch = gj._2
1050+ $Tuple2(nil, $Tuple2(fn, ch))
10561051 }
10571052
10581053
10591054
10601055 @Callable(dK)
1061-func getOneTknV2WithBonusREADONLY (fb,gb) = {
1056+func getOneTknV2WithBonusREADONLY (fd,gd) = {
10621057 let aS = aK()
10631058 let co = aS[u]
10641059 let cp = aS[v]
10651060 let cn = aS[t]
10661061 let cu = bx(co)
10671062 let cw = bx(cp)
1068- let gi = {
1069- let fk = invoke(this, "getOneTknV2READONLY", [fb, gb], nil)
1070- if ($isInstanceOf(fk, "(Int, Int)"))
1071- then fk
1072- else throw(($getType(fk) + " couldn't be cast to (Int, Int)"))
1063+ let gk = {
1064+ let fm = invoke(this, "getOneTknV2READONLY", [fd, gd], nil)
1065+ if ($isInstanceOf(fm, "(Int, Int)"))
1066+ then fm
1067+ else throw(($getType(fm) + " couldn't be cast to (Int, Int)"))
10731068 }
1074- let fl = gi._1
1075- let ch = gi._2
1076- let dc = ci("", cn, gb, this)
1069+ let fn = gk._1
1070+ let ch = gk._2
1071+ let dc = ci("", cn, gd, this)
10771072 let cE = dc._1
10781073 let cF = dc._2
1079- let gj = (cE + cF)
1080- let eZ = fraction((fl - gj), a, gj)
1081- $Tuple2(nil, $Tuple3(fl, ch, eZ))
1074+ let gl = (cE + cF)
1075+ let fb = if ((gl == 0))
1076+ then if ((fn == 0))
1077+ then 0
1078+ else throw("bonus calculation error")
1079+ else fraction((fn - gl), a, gl)
1080+ $Tuple2(nil, $Tuple3(fn, ch, fb))
10821081 }
10831082
10841083
10851084
10861085 @Callable(dK)
1087-func getNoLess (gk,gl) = {
1086+func getNoLess (gm,gn) = {
10881087 let dc = dJ(dK)
10891088 let cE = dc._1
10901089 let cF = dc._2
10911090 let cQ = dc._3
10921091 let ck = dc._4
10931092 let cG = dc._5
1094- if ((gk > cE))
1095- then throw(((("Failed: " + toString(cE)) + " < ") + toString(gk)))
1096- else if ((gl > cF))
1097- then throw(((("Failed: " + toString(cF)) + " < ") + toString(gl)))
1093+ if ((gm > cE))
1094+ then throw(((("Failed: " + toString(cE)) + " < ") + toString(gm)))
1095+ else if ((gn > cF))
1096+ then throw(((("Failed: " + toString(cF)) + " < ") + toString(gn)))
10981097 else {
1099- let gm = invoke(aF, "burn", [cQ], [AttachedPayment(ck, cQ)])
1100- if ((gm == gm))
1098+ let go = invoke(aF, "burn", [cQ], [AttachedPayment(ck, cQ)])
1099+ if ((go == go))
11011100 then cG
11021101 else throw("Strict value is not equal to itself.")
11031102 }
11071106
11081107 @Callable(dK)
11091108 func unstakeAndGet (cg) = {
1110- let gn = if ((size(dK.payments) != 0))
1109+ let gp = if ((size(dK.payments) != 0))
11111110 then throw("No pmnts expd")
11121111 else true
1113- if ((gn == gn))
1112+ if ((gp == gp))
11141113 then {
11151114 let bW = aK()
1116- let go = bc()
1117- let fK = fromBase58String(bW[t])
1118- let gp = valueOrErrorMessage(addressFromString(go[A]), "Wr st addr")
1119- let gq = invoke(gp, "unstake", [toBase58String(fK), cg], nil)
1120- if ((gq == gq))
1115+ let gq = bc()
1116+ let fM = fromBase58String(bW[t])
1117+ let gr = valueOrErrorMessage(addressFromString(gq[A]), "Wr st addr")
1118+ let gs = invoke(gr, "unstake", [toBase58String(fM), cg], nil)
1119+ if ((gs == gs))
11211120 then {
1122- let dc = ci(toBase58String(dK.transactionId), toBase58String(fK), cg, dK.caller)
1121+ let dc = ci(toBase58String(dK.transactionId), toBase58String(fM), cg, dK.caller)
11231122 let cs = parseIntValue(dc._9)
11241123 let cG = dc._10
1125- let gr = if (if (aH())
1124+ let gt = if (if (aH())
11261125 then true
11271126 else (cs == q))
11281127 then throw(("Blocked: " + toString(cs)))
11291128 else true
1130- if ((gr == gr))
1129+ if ((gt == gt))
11311130 then {
1132- let gs = invoke(aF, "burn", [cg], [AttachedPayment(fK, cg)])
1133- if ((gs == gs))
1131+ let gu = invoke(aF, "burn", [cg], [AttachedPayment(fM, cg)])
1132+ if ((gu == gu))
11341133 then cG
11351134 else throw("Strict value is not equal to itself.")
11361135 }
11441143
11451144
11461145 @Callable(dK)
1147-func unstakeAndGetOneTknV2 (gt,fb,fc) = {
1148- let fR = {
1149- let fk = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1150- if ($isInstanceOf(fk, "Boolean"))
1151- then fk
1152- else throw(($getType(fk) + " couldn't be cast to Boolean"))
1146+func unstakeAndGetOneTknV2 (gv,fd,fe) = {
1147+ let fT = {
1148+ let fm = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1149+ if ($isInstanceOf(fm, "Boolean"))
1150+ then fm
1151+ else throw(($getType(fm) + " couldn't be cast to Boolean"))
11531152 }
1154- let fZ = if (if (aH())
1153+ let gb = if (if (aH())
11551154 then true
11561155 else (aW == q))
11571156 then true
1158- else fR
1159- let fT = [if (!(fZ))
1157+ else fT
1158+ let fV = [if (!(gb))
11601159 then true
11611160 else aD("get operation is blocked by admin"), if ((size(dK.payments) == 0))
11621161 then true
11631162 else aD("no payments are expected")]
1164- if ((fT == fT))
1163+ if ((fV == fV))
11651164 then {
11661165 let bW = aK()
1167- let go = bc()
1168- let fK = fromBase58String(bW[t])
1169- let gp = valueOrErrorMessage(addressFromString(go[A]), "Wr st addr")
1170- let gq = invoke(gp, "unstake", [toBase58String(fK), gt], nil)
1171- if ((gq == gq))
1166+ let gq = bc()
1167+ let fM = fromBase58String(bW[t])
1168+ let gr = valueOrErrorMessage(addressFromString(gq[A]), "Wr st addr")
1169+ let gs = invoke(gr, "unstake", [toBase58String(fM), gv], nil)
1170+ if ((gs == gs))
11721171 then {
1173- let gu = fa(fb, fc, [AttachedPayment(fK, gt)], dK.caller, dK.originCaller, dK.transactionId)
1174- let cG = gu._1
1175- let fm = gu._2
1176- $Tuple2(cG, fm)
1172+ let gw = fc(fd, fe, [AttachedPayment(fM, gv)], dK.caller, dK.originCaller, dK.transactionId)
1173+ let cG = gw._1
1174+ let fo = gw._2
1175+ $Tuple2(cG, fo)
11771176 }
11781177 else throw("Strict value is not equal to itself.")
11791178 }
11831182
11841183
11851184 @Callable(dK)
1186-func putOneTknV2WithBonusREADONLY (gv,gw) = {
1185+func putOneTknV2WithBonusREADONLY (gx,gy) = {
11871186 let aS = aK()
11881187 let co = aS[u]
11891188 let cp = aS[v]
11901189 let cn = aS[t]
1191- let gx = eF(gv, gw, "", "")
1192- let eU = gx._1
1193- let cG = gx._2
1194- let ch = gx._3
1195- let eZ = gx._4
1196- $Tuple2(nil, $Tuple3(eU, ch, eZ))
1190+ let gz = eF(gx, gy, "", "", true)
1191+ let eW = gz._1
1192+ let cG = gz._2
1193+ let ch = gz._3
1194+ let fb = gz._4
1195+ $Tuple2(nil, $Tuple3(eW, ch, fb))
11971196 }
11981197
11991198
12001199
12011200 @Callable(dK)
1202-func activate (gy,gz) = if ((toString(dK.caller) != toString(aF)))
1203- then throw("denied")
1204- else $Tuple2([StringEntry(ac(), gy), StringEntry(ad(), gz)], "success")
1201+func putOneTknV2WithoutTakeFeeREADONLY (gx,gy) = {
1202+ let aS = aK()
1203+ let co = aS[u]
1204+ let cp = aS[v]
1205+ let cn = aS[t]
1206+ let gA = eF(gx, gy, "", "", false)
1207+ let eW = gA._1
1208+ let cG = gA._2
1209+ let ch = gA._3
1210+ let fb = gA._4
1211+ $Tuple2(nil, $Tuple3(eW, ch, fb))
1212+ }
12051213
12061214
12071215
12081216 @Callable(dK)
1209-func setS (gA,gr) = if ((toString(dK.caller) != az(this, af())))
1210- then fx
1211- else [StringEntry(gA, gr)]
1217+func activate (gB,gC) = if ((toString(dK.caller) != toString(aF)))
1218+ then throw("denied")
1219+ else $Tuple2([StringEntry(ac(), gB), StringEntry(ad(), gC)], "success")
12121220
12131221
12141222
12151223 @Callable(dK)
1216-func setI (gA,gr) = if ((toString(dK.caller) != az(this, af())))
1217- then fx
1218- else [IntegerEntry(gA, gr)]
1224+func setS (gD,gt) = if ((toString(dK.caller) != az(this, af())))
1225+ then fz
1226+ else [StringEntry(gD, gt)]
1227+
1228+
1229+
1230+@Callable(dK)
1231+func setI (gD,gt) = if ((toString(dK.caller) != az(this, af())))
1232+ then fz
1233+ else [IntegerEntry(gD, gt)]
12191234
12201235
12211236
12311246
12321247 @Callable(dK)
12331248 func calcPricesWrapperREADONLY (bQ,bR,bV) = {
1234- let gB = bU(bQ, bR, bV)
1235- $Tuple2(nil, [toString(gB[0]), toString(gB[1]), toString(gB[2])])
1249+ let gE = bU(bQ, bR, bV)
1250+ $Tuple2(nil, [toString(gE[0]), toString(gE[1]), toString(gE[2])])
12361251 }
12371252
12381253
12391254
12401255 @Callable(dK)
1241-func fromX18WrapperREADONLY (J,gC) = $Tuple2(nil, I(parseBigIntValue(J), gC))
1256+func fromX18WrapperREADONLY (J,gF) = $Tuple2(nil, I(parseBigIntValue(J), gF))
12421257
12431258
12441259
12531268
12541269
12551270 @Callable(dK)
1256-func estimatePutOperationWrapperREADONLY (cj,bF,cI,cJ,cK,cL,gD,cM,cN) = $Tuple2(nil, cH(cj, bF, cI, cJ, cK, cL, gD, cM, cN, true, false, 0, ""))
1271+func estimatePutOperationWrapperREADONLY (cj,bF,cI,cJ,cK,cL,gG,cM,cN) = $Tuple2(nil, cH(cj, bF, cI, cJ, cK, cL, gG, cM, cN, true, false, 0, ""))
12571272
12581273
12591274
12601275 @Callable(dK)
1261-func estimateGetOperationWrapperREADONLY (cj,gE,cl,gD) = {
1262- let dc = ci(cj, gE, cl, addressFromStringValue(gD))
1276+func estimateGetOperationWrapperREADONLY (cj,gH,cl,gG) = {
1277+ let dc = ci(cj, gH, cl, addressFromStringValue(gG))
12631278 $Tuple2(nil, $Tuple10(dc._1, dc._2, dc._3, dc._4, dc._5, dc._6, dc._7, toString(dc._8), dc._9, dc._10))
12641279 }
12651280
12691284 func getFeeREADONLY () = $Tuple2(nil, ah)
12701285
12711286
1272-@Verifier(gF)
1273-func gG () = {
1274- let gH = {
1275- let ax = fv()
1287+@Verifier(gI)
1288+func gJ () = {
1289+ let gK = {
1290+ let ax = fx()
12761291 if ($isInstanceOf(ax, "ByteVector"))
12771292 then {
1278- let fz = ax
1279- fz
1293+ let fB = ax
1294+ fB
12801295 }
12811296 else if ($isInstanceOf(ax, "Unit"))
1282- then gF.senderPublicKey
1297+ then gI.senderPublicKey
12831298 else throw("Match error")
12841299 }
1285- let ax = gF
1300+ let ax = gI
12861301 if ($isInstanceOf(ax, "Order"))
12871302 then {
12881303 let dx = ax
1289- let gI = aI()
1290- let gJ = dw(dx)
1291- let gK = sigVerify(dx.bodyBytes, dx.proofs[0], dx.senderPublicKey)
1292- let gL = sigVerify(dx.bodyBytes, dx.proofs[1], gI)
1293- if (if (if (gJ)
1294- then gK
1304+ let gL = aI()
1305+ let gM = dw(dx)
1306+ let gN = sigVerify(dx.bodyBytes, dx.proofs[0], dx.senderPublicKey)
1307+ let gO = sigVerify(dx.bodyBytes, dx.proofs[1], gL)
1308+ if (if (if (gM)
1309+ then gN
12951310 else false)
1296- then gL
1311+ then gO
12971312 else false)
12981313 then true
1299- else as(gJ, gK, gL)
1314+ else as(gM, gN, gO)
13001315 }
13011316 else if ($isInstanceOf(ax, "SetScriptTransaction"))
13021317 then {
13031318 let dX = ax
1304- let gM = blake2b256(value(dX.script))
1305- let gN = fromBase64String(value(getString(aF, aq())))
1306- let gO = scriptHash(this)
1307- if (if ((gN == gM))
1308- then (gO != gM)
1319+ let gP = blake2b256(value(dX.script))
1320+ let gQ = fromBase64String(value(getString(aF, aq())))
1321+ let gR = scriptHash(this)
1322+ if (if ((gQ == gP))
1323+ then (gR != gP)
13091324 else false)
13101325 then true
1311- else sigVerify(gF.bodyBytes, gF.proofs[0], gH)
1326+ else sigVerify(gI.bodyBytes, gI.proofs[0], gK)
13121327 }
1313- else sigVerify(gF.bodyBytes, gF.proofs[0], gH)
1328+ else sigVerify(gI.bodyBytes, gI.proofs[0], gK)
13141329 }
13151330
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt(2)
1717
1818 let h = toBigInt((a - ((a * 1) / a)))
1919
2020 let i = "WAVES"
2121
2222 let j = "100"
2323
2424 let k = "1"
2525
2626 let l = "__"
2727
2828 let m = ""
2929
3030 let n = 1
3131
3232 let o = 2
3333
3434 let p = 3
3535
3636 let q = 4
3737
3838 let r = 1
3939
4040 let s = 2
4141
4242 let t = 3
4343
4444 let u = 4
4545
4646 let v = 5
4747
4848 let w = 6
4949
5050 let x = 7
5151
5252 let y = 8
5353
5454 let z = 9
5555
5656 let A = 1
5757
5858 let B = 6
5959
6060 let C = 7
6161
6262 let D = 10
6363
6464 let E = fraction(5, a, 10000)
6565
6666 func F (G,H) = fraction(toBigInt(G), c, toBigInt(H))
6767
6868
6969 func I (J,K) = toInt(fraction(J, toBigInt(K), c))
7070
7171
7272 func L (M,N,O) = fraction(M, N, O)
7373
7474
7575 func P (J) = if ((d > J))
7676 then -(J)
7777 else J
7878
7979
8080 func Q (J) = if ((d > J))
8181 then -(J)
8282 else J
8383
8484
8585 func R () = "%s__factoryContract"
8686
8787
8888 func S () = "%s__managerPublicKey"
8989
9090
9191 func T () = "%s__pendingManagerPublicKey"
9292
9393
9494 func U () = "%s%s__price__last"
9595
9696
9797 func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], l)
9898
9999
100100 func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
101101
102102
103103 func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
104104
105105
106106 func ac () = "%s__amountAsset"
107107
108108
109109 func ad () = "%s__priceAsset"
110110
111111
112112 func ae () = "%s__amp"
113113
114114
115115 func af () = "%s__addonAddr"
116116
117117
118118 let ag = "%s__fee"
119119
120120 let ah = valueOrElse(getInteger(this, ag), E)
121121
122122 func ai () = "%s__factoryConfig"
123123
124124
125125 func aj () = "%s%s__matcher__publicKey"
126126
127127
128128 func ak (al,am) = (((("%d%d%s__" + al) + "__") + am) + "__config")
129129
130130
131131 func an (ao) = ("%s%s%s__mappings__baseAsset2internalId__" + ao)
132132
133133
134134 func ap () = "%s__shutdown"
135135
136136
137137 func aq () = "%s__allowedLpStableScriptHash"
138138
139139
140140 func ar () = "%s__feeCollectorAddress"
141141
142142
143143 func as (at,au,av) = throw(((((("Failed: ordValid=" + toString(at)) + " sndrValid=") + toString(au)) + " mtchrValid=") + toString(av)))
144144
145145
146146 func aw (J) = {
147147 let ax = J
148148 if ($isInstanceOf(ax, "String"))
149149 then {
150150 let ay = ax
151151 ay
152152 }
153153 else throw("fail cast to String")
154154 }
155155
156156
157157 func az (aA,aB) = valueOrErrorMessage(getString(aA, aB), makeString(["mandatory ", toString(aA), ".", aB, " not defined"], ""))
158158
159159
160160 func aC (aA,aB) = valueOrErrorMessage(getInteger(aA, aB), makeString(["mandatory ", toString(aA), ".", aB, " not defined"], ""))
161161
162162
163163 func aD (aE) = throw(makeString(["lp_stable.ride:", aE], " "))
164164
165165
166166 let aF = addressFromStringValue(az(this, R()))
167167
168168 let aG = az(this, ae())
169169
170170 func aH () = valueOrElse(getBoolean(aF, ap()), false)
171171
172172
173173 func aI () = fromBase58String(az(aF, aj()))
174174
175175
176176 let aJ = addressFromStringValue(az(aF, ar()))
177177
178178 func aK () = {
179179 let aL = az(this, ac())
180180 let aM = az(this, ad())
181181 let aN = aC(aF, an(aM))
182182 let al = aC(aF, an(aL))
183183 split(az(aF, ak(toString(al), toString(aN))), l)
184184 }
185185
186186
187187 func aO (aP) = if ((aP == i))
188188 then unit
189189 else fromBase58String(aP)
190190
191191
192192 func aQ (aP) = if ((aP == unit))
193193 then i
194194 else toBase58String(value(aP))
195195
196196
197197 func aR (aS) = $Tuple7(addressFromStringValue(aS[r]), parseIntValue(aS[s]), fromBase58String(aS[t]), aO(aS[u]), aO(aS[v]), parseIntValue(aS[w]), parseIntValue(aS[x]))
198198
199199
200200 let aT = aR(aK())
201201
202202 let aU = aT
203203
204204 let aV = aU._1
205205
206206 let aW = aU._2
207207
208208 let aX = aU._3
209209
210210 let aY = aU._4
211211
212212 let aZ = aU._5
213213
214214 let ba = aU._6
215215
216216 let bb = aU._7
217217
218218 func bc () = split(az(aF, ai()), l)
219219
220220
221221 let bd = bc()
222222
223223 let be = valueOrErrorMessage(addressFromString(bd[A]), "Invalid staking contract address")
224224
225225 let bf = valueOrErrorMessage(addressFromString(bd[C]), "Invalid slipage contract address")
226226
227227 let bg = valueOrErrorMessage(addressFromString(bd[D]), "Invalid gwx contract address")
228228
229229 let bh = valueOrErrorMessage(addressFromString(bd[B]), "Invalid gwx contract address")
230230
231231 func bi (bj,bk,bl,bm,bn,bo,bp,bq,br,bs) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bj), toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs)], l)
232232
233233
234234 func bt (bu,bv,bw,bm,bp,bq) = makeString(["%d%d%d%d%d%d", toString(bu), toString(bv), toString(bw), toString(bm), toString(bp), toString(bq)], l)
235235
236236
237237 func bx (by) = if ((by == "WAVES"))
238238 then wavesBalance(this).available
239239 else assetBalance(this, fromBase58String(by))
240240
241241
242242 func bz (bA,bB) = fraction(bA, c, bB)
243243
244244
245245 func bC (bD,bE,bF) = {
246246 let bG = fraction((bD - bE), b, bE)
247247 let bH = ((bF - P(bG)) > d)
248248 if (!(bH))
249249 then throw(("Big slpg: " + toString(bG)))
250250 else $Tuple2(bH, min([bD, bE]))
251251 }
252252
253253
254254 func bI (bJ,bK,bL) = {
255255 let bG = fraction(bK, b, bJ)
256256 let bM = (bL > bG)
257257 if (if (bM)
258258 then true
259259 else (bK > bJ))
260260 then throw(((((((toString(bK) + " ") + toString(bJ)) + " ") + toString(bG)) + " ") + toString(bL)))
261261 else bM
262262 }
263263
264264
265265 func bN (bO,bP,bQ,bR) = {
266266 let bS = F(bQ, bO)
267267 let bT = F(bR, bP)
268268 bz(bT, bS)
269269 }
270270
271271
272272 func bU (bQ,bR,bV) = {
273273 let bW = aK()
274274 let bX = parseIntValue(bW[w])
275275 let bY = parseIntValue(bW[x])
276276 let bZ = bN(bX, bY, bQ, bR)
277277 let bB = F(bQ, bX)
278278 let bA = F(bR, bY)
279279 let ca = F(bV, a)
280280 let cb = bz(bB, ca)
281281 let cc = bz(bA, ca)
282282 [bZ, cb, cc]
283283 }
284284
285285
286286 func cd (bQ,bR,bV) = {
287287 let ce = bU(bQ, bR, bV)
288288 [I(ce[0], a), I(ce[1], a), I(ce[2], a)]
289289 }
290290
291291
292292 func cf (cg) = {
293293 let ch = fraction(cg, ah, a)
294294 $Tuple2((cg - ch), ch)
295295 }
296296
297297
298298 func ci (cj,ck,cl,cm) = {
299299 let bW = aK()
300300 let cn = bW[t]
301301 let co = bW[u]
302302 let cp = bW[v]
303303 let cq = parseIntValue(bW[w])
304304 let cr = parseIntValue(bW[x])
305305 let cs = bW[s]
306306 let ct = valueOrErrorMessage(assetInfo(fromBase58String(cn)), "Wrong LP id").quantity
307307 if ((cn != ck))
308308 then throw("Wrong pmt asset")
309309 else {
310310 let cu = bx(co)
311311 let cv = F(cu, cq)
312312 let cw = bx(cp)
313313 let cx = F(cw, cr)
314314 let cy = bz(cx, cv)
315315 let cz = I(cy, a)
316316 let cA = F(cl, a)
317317 let cB = F(ct, a)
318318 let cC = fraction(cv, cA, cB)
319319 let cD = fraction(cx, cA, cB)
320320 let cE = I(cC, cq)
321321 let cF = I(cD, cr)
322322 let cG = if ((cj == ""))
323323 then nil
324324 else [ScriptTransfer(cm, cE, if ((co == "WAVES"))
325325 then unit
326326 else fromBase58String(co)), ScriptTransfer(cm, cF, if ((cp == "WAVES"))
327327 then unit
328328 else fromBase58String(cp)), StringEntry(ab(toString(cm), cj), bt(cE, cF, cl, cz, height, lastBlock.timestamp)), IntegerEntry(U(), cz), IntegerEntry(V(height, lastBlock.timestamp), cz)]
329329 $Tuple10(cE, cF, co, cp, cu, cw, ct, cy, cs, cG)
330330 }
331331 }
332332
333333
334334 func cH (cj,bF,cI,cJ,cK,cL,cm,cM,cN,cO,cP,cQ,cR) = {
335335 let bW = aK()
336336 let cn = fromBase58String(bW[t])
337337 let cS = bW[u]
338338 let cT = bW[v]
339339 let cU = bW[y]
340340 let cV = bW[z]
341341 let cW = parseIntValue(bW[w])
342342 let cX = parseIntValue(bW[x])
343343 let cs = bW[s]
344344 let cY = valueOrErrorMessage(assetInfo(cn), "Wr lp as").quantity
345345 let cu = if (cM)
346346 then bx(cS)
347347 else if (if (cO)
348348 then (cR == cS)
349349 else false)
350350 then (bx(cS) - cQ)
351351 else if (cO)
352352 then bx(cS)
353353 else (bx(cS) - cI)
354354 let cw = if (cM)
355355 then bx(cT)
356356 else if (if (cO)
357357 then (cR == cT)
358358 else false)
359359 then (bx(cT) - cQ)
360360 else if (cO)
361361 then bx(cT)
362362 else (bx(cT) - cK)
363363 let cZ = F(cI, cW)
364364 let da = F(cK, cX)
365365 let db = bz(da, cZ)
366366 let cv = F(cu, cW)
367367 let cx = F(cw, cX)
368368 let dc = if ((cY == 0))
369369 then {
370370 let cy = d
371371 let dd = d
372372 let ca = pow((cZ * da), 0, toBigInt(5), 1, 0, DOWN)
373373 $Tuple5(I(ca, a), I(cZ, cW), I(da, cX), bz((cx + da), (cv + cZ)), dd)
374374 }
375375 else {
376376 let cy = bz(cx, cv)
377377 let de = fraction(P((cy - db)), c, cy)
378378 let dd = F(bF, a)
379379 if (if (if (cP)
380380 then (cy != d)
381381 else false)
382382 then (de > dd)
383383 else false)
384384 then throw(((("Price slippage " + toString(de)) + " > ") + toString(dd)))
385385 else {
386386 let df = F(cY, a)
387387 let dg = fraction(cZ, cy, c)
388388 let dh = fraction(da, c, cy)
389389 let di = if ((dg > da))
390390 then $Tuple2(dh, da)
391391 else $Tuple2(cZ, dg)
392392 let dj = di._1
393393 let dk = di._2
394394 let ca = fraction(df, dk, cx)
395395 $Tuple5(I(ca, a), I(dj, cW), I(dk, cX), cy, dd)
396396 }
397397 }
398398 let dl = dc._1
399399 let dm = dc._2
400400 let dn = dc._3
401401 let cz = I(dc._4, a)
402402 let do = I(dc._5, a)
403403 if ((0 >= dl))
404404 then throw("LP <= 0")
405405 else {
406406 let dp = if (!(cN))
407407 then 0
408408 else dl
409409 let dq = (cI - dm)
410410 let dr = (cK - dn)
411411 let ds = if (if (cO)
412412 then (cR == cS)
413413 else false)
414414 then $Tuple2(cQ, 0)
415415 else if (if (cO)
416416 then (cR == cT)
417417 else false)
418418 then $Tuple2(0, cQ)
419419 else $Tuple2(dm, dn)
420420 let dt = ds._1
421421 let du = ds._2
422422 let dv = [IntegerEntry(U(), cz), IntegerEntry(V(height, lastBlock.timestamp), cz), StringEntry(Y(cm, cj), bi(dt, du, dp, cz, bF, do, height, lastBlock.timestamp, dq, dr))]
423423 $Tuple13(dl, dp, cz, cu, cw, cY, cn, cs, dv, dq, dr, cJ, cL)
424424 }
425425 }
426426
427427
428428 func dw (dx) = {
429429 let bW = aK()
430430 let dy = bW[u]
431431 let dz = bW[v]
432432 let cs = parseIntValue(bW[s])
433433 let bX = parseIntValue(bW[w])
434434 let bY = parseIntValue(bW[x])
435435 let dA = bx(dy)
436436 let dB = bx(dz)
437437 let cy = if ((dx.orderType == Buy))
438438 then bN(bX, bY, (dA + dx.amount), dB)
439439 else bN(bX, bY, (dA - dx.amount), dB)
440440 let cz = I(cy, a)
441441 if (if (if (aH())
442442 then true
443443 else (cs == p))
444444 then true
445445 else (cs == q))
446446 then throw("Admin blocked")
447447 else {
448448 let dC = dx.assetPair.amountAsset
449449 let dD = if ((dC == unit))
450450 then "WAVES"
451451 else toBase58String(value(dC))
452452 let dE = dx.assetPair.priceAsset
453453 let dF = if ((dE == unit))
454454 then "WAVES"
455455 else toBase58String(value(dE))
456456 if (if ((dD != dy))
457457 then true
458458 else (dF != dz))
459459 then throw("Wr assets")
460460 else {
461461 let dG = dx.price
462462 let cX = fraction(a, bY, bX)
463463 let dH = L(dG, a, cX)
464464 let dI = if ((dx.orderType == Buy))
465465 then (cz >= dH)
466466 else (dH >= cz)
467467 true
468468 }
469469 }
470470 }
471471
472472
473473 func dJ (dK) = if ((size(dK.payments) != 1))
474474 then throw("1 pmnt exp")
475475 else {
476476 let dL = value(dK.payments[0])
477477 let ck = value(dL.assetId)
478478 let cQ = dL.amount
479479 let dc = ci(toBase58String(dK.transactionId), toBase58String(ck), cQ, dK.caller)
480480 let cE = dc._1
481481 let cF = dc._2
482482 let cs = parseIntValue(dc._9)
483483 let cG = dc._10
484484 if (if (aH())
485485 then true
486486 else (cs == q))
487487 then throw(("Admin blocked: " + toString(cs)))
488488 else $Tuple5(cE, cF, cQ, ck, cG)
489489 }
490490
491491
492492 func dM (dN,aa,dO,dP,bF,cN,cO,cP,cQ,cR) = {
493493 let dc = cH(aa, bF, value(dO).amount, value(dO).assetId, value(dP).amount, value(dP).assetId, dN, (aa == ""), cN, cO, cP, cQ, cR)
494494 let cs = parseIntValue(dc._8)
495495 if (if (if (aH())
496496 then true
497497 else (cs == o))
498498 then true
499499 else (cs == q))
500500 then throw(("Blocked:" + toString(cs)))
501501 else dc
502502 }
503503
504504
505505 func dQ (dR) = {
506506 let dS = g
507507 let dT = dR[0]
508508 let dU = dR[1]
509509 let dV = parseBigIntValue(j)
510510 let dW = (parseBigIntValue(aG) * dV)
511511 let dX = (dT + dU)
512512 if ((dX == e))
513513 then e
514514 else {
515515 let dY = (dW * dS)
516516 let dZ = (((dT * dU) * dS) * dS)
517517 let ea = ((dY * dX) / dV)
518518 let eb = (dY - dV)
519519 let ec = (dS + f)
520520 func ed (ee,ef) = {
521521 let eg = ee
522522 let eh = eg._1
523523 let ei = eg._2
524524 if ((ei != unit))
525525 then ee
526526 else {
527527 let ej = (((eh * eh) * eh) / dZ)
528528 let ek = (((ea + (ej * dS)) * eh) / (((eb * eh) / dV) + (ec * ej)))
529529 let el = Q((ek - value(eh)))
530530 if ((f >= el))
531531 then $Tuple2(ek, ef)
532532 else $Tuple2(ek, unit)
533533 }
534534 }
535535
536536 let em = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
537537 let en = {
538538 let eo = em
539539 let ep = size(eo)
540540 let eq = $Tuple2(dX, unit)
541541 func er (es,et) = if ((et >= ep))
542542 then es
543543 else ed(es, eo[et])
544544
545545 func eu (es,et) = if ((et >= ep))
546546 then es
547547 else throw("List size exceeds 15")
548548
549549 eu(er(er(er(er(er(er(er(er(er(er(er(er(er(er(er(eq, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
550550 }
551551 let eh = en._1
552552 let ei = en._2
553553 if ((ei != unit))
554554 then eh
555555 else throw(("D calculation error, D = " + toString(eh)))
556556 }
557557 }
558558
559559
560560 func ev (dR,dK,ew) = {
561561 let dS = g
562562 let ex = dR[if ((dK == 0))
563563 then 1
564564 else 0]
565565 let dV = parseBigIntValue(j)
566566 let dW = (parseBigIntValue(aG) * dV)
567567 let dX = ex
568568 let dY = (dW * dS)
569569 let ey = (((((ew * ew) / (ex * dS)) * ew) * dV) / (dY * dS))
570570 let ez = ((dX + ((ew * dV) / dY)) - ew)
571571 func ed (ee,ef) = {
572572 let eA = ee
573573 let eB = eA._1
574574 let ei = eA._2
575575 if ((ei != unit))
576576 then ee
577577 else {
578578 let eC = (((eB * eB) + ey) / ((g * eB) + ez))
579579 let eD = Q((eC - value(eB)))
580580 if ((f >= eD))
581581 then $Tuple2(eC, ef)
582582 else $Tuple2(eC, unit)
583583 }
584584 }
585585
586586 let em = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
587587 let eE = {
588588 let eo = em
589589 let ep = size(eo)
590590 let eq = $Tuple2(ew, unit)
591591 func er (es,et) = if ((et >= ep))
592592 then es
593593 else ed(es, eo[et])
594594
595595 func eu (es,et) = if ((et >= ep))
596596 then es
597597 else throw("List size exceeds 15")
598598
599599 eu(er(er(er(er(er(er(er(er(er(er(er(er(er(er(er(eq, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
600600 }
601601 let eB = eE._1
602602 let ei = eE._2
603603 if ((ei != unit))
604604 then eB
605605 else throw(("Y calculation error, Y = " + toString(eB)))
606606 }
607607
608608
609-func eF (eG,ck,cm,aa) = {
609+func eF (eG,ck,cm,aa,eH) = {
610610 let aS = aK()
611611 let co = aS[u]
612612 let cp = aS[v]
613613 let cn = aS[t]
614614 let cW = parseIntValue(aS[w])
615615 let cX = parseIntValue(aS[x])
616- let eH = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cn)), "invalid lp asset").quantity)
617- let eI = if ((eH > e))
616+ let eI = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cn)), "invalid lp asset").quantity)
617+ let eJ = if ((eI > e))
618618 then true
619619 else throw("initial deposit requires all coins")
620- if ((eI == eI))
620+ if ((eJ == eJ))
621621 then {
622622 let cu = bx(co)
623623 let cw = bx(cp)
624- let eJ = if ((aa == ""))
624+ let eK = if ((aa == ""))
625625 then $Tuple2(cu, cw)
626626 else if ((ck == co))
627627 then if ((eG > cu))
628628 then throw("invalid payment amount")
629629 else $Tuple2((cu - eG), cw)
630630 else if ((ck == cp))
631631 then if ((eG > cw))
632632 then throw("invalid payment amount")
633633 else $Tuple2(cu, (cw - eG))
634634 else throw("wrong pmtAssetId")
635- let eK = eJ._1
636- let eL = eJ._2
637- let eM = if ((ck == co))
635+ let eL = eK._1
636+ let eM = eK._2
637+ let eN = if ((ck == co))
638638 then $Tuple2(eG, 0)
639639 else if ((ck == cp))
640640 then $Tuple2(0, eG)
641641 else throw("invalid payment")
642- let eN = eM._1
643- let eO = eM._2
644- let eP = cf(eN)._1
645- let eQ = cf(eO)._1
646- let ch = cf(eG)._2
647- let eR = (eK + eP)
648- let eS = (eL + eQ)
649- let bK = dQ([toBigInt(eK), toBigInt(eL)])
650- let bJ = dQ([toBigInt(eR), toBigInt(eS)])
651- let eT = if ((bJ > bK))
642+ let eO = eN._1
643+ let eP = eN._2
644+ let eQ = if (eH)
645+ then $Tuple3(cf(eO)._1, cf(eP)._1, cf(eG)._2)
646+ else $Tuple3(eO, eP, 0)
647+ let eR = eQ._1
648+ let eS = eQ._2
649+ let ch = eQ._3
650+ let eT = (eL + eR)
651+ let eU = (eM + eS)
652+ let bK = dQ([toBigInt(eL), toBigInt(eM)])
653+ let bJ = dQ([toBigInt(eT), toBigInt(eU)])
654+ let eV = if ((bJ > bK))
652655 then true
653656 else throw()
654- if ((eT == eT))
657+ if ((eV == eV))
655658 then {
656- let eU = fraction(eH, (bJ - bK), bK)
657- let cz = I(bz(F(eS, cX), F(eR, cW)), a)
658- let dv = [IntegerEntry(U(), cz), IntegerEntry(V(height, lastBlock.timestamp), cz), StringEntry(Y(cm, aa), bi(eN, eO, toInt(eU), cz, 0, 0, height, lastBlock.timestamp, 0, 0))]
659- let eV = fraction(eL, a, eK)
660- let eW = fraction(eG, a, (eV + a))
661- let eX = (eG - eW)
662- let eY = fraction(eH, toBigInt(eX), toBigInt(eL))
663- let eZ = toInt(fraction((eU - eY), b, eY))
664- $Tuple4(toInt(eU), dv, ch, eZ)
659+ let eW = fraction(eI, (bJ - bK), bK)
660+ let cz = I(bz(F(eU, cX), F(eT, cW)), a)
661+ let dv = [IntegerEntry(U(), cz), IntegerEntry(V(height, lastBlock.timestamp), cz), StringEntry(Y(cm, aa), bi(eO, eP, toInt(eW), cz, 0, 0, height, lastBlock.timestamp, 0, 0))]
662+ let eX = fraction(eM, a, eL)
663+ let eY = fraction(eG, a, (eX + a))
664+ let eZ = (eG - eY)
665+ let fa = fraction(eI, toBigInt(eZ), toBigInt(eM))
666+ let fb = toInt(fraction((eW - fa), b, fa))
667+ $Tuple4(toInt(eW), dv, ch, fb)
665668 }
666669 else throw("Strict value is not equal to itself.")
667670 }
668671 else throw("Strict value is not equal to itself.")
669672 }
670673
671674
672-func fa (fb,fc,fd,dN,fe,ff) = {
675+func fc (fd,fe,ff,dN,fg,fh) = {
673676 let aS = aK()
674677 let cn = aS[t]
675678 let co = aS[u]
676679 let cp = aS[v]
677- let fg = parseIntValue(aS[w])
678- let fh = parseIntValue(aS[x])
679- let fi = aS[s]
680+ let fi = parseIntValue(aS[w])
681+ let fj = parseIntValue(aS[x])
682+ let fk = aS[s]
680683 let cm = if ((dN == bh))
681- then fe
684+ then fg
682685 else dN
683- let dL = value(fd[0])
686+ let dL = value(ff[0])
684687 let ck = value(dL.assetId)
685688 let cQ = dL.amount
686- if ((1000000000 > cQ))
687- then throw("Min pmt 10 LP")
689+ let cj = toBase58String(fh)
690+ if ((cn != toBase58String(ck)))
691+ then throw("Wrong LP")
688692 else {
689- let cj = toBase58String(ff)
690- if ((cn != toBase58String(ck)))
691- then throw("Wrong LP")
692- else {
693- let cu = bx(co)
694- let cw = bx(cp)
695- let fj = {
696- let fk = invoke(this, "getOneTknV2READONLY", [fb, cQ], nil)
697- if ($isInstanceOf(fk, "(Int, Int)"))
698- then fk
699- else throw(($getType(fk) + " couldn't be cast to (Int, Int)"))
700- }
701- let fl = fj._1
702- let ch = fj._2
703- let fm = if (if ((fc > 0))
704- then (fc > fl)
705- else false)
706- then throw(makeString(["amount to receive is less than ", toString(fc)], ""))
707- else fl
708- let fn = if ((fb == co))
709- then $Tuple4(fm, 0, ((cu - fm) - ch), cw)
710- else if ((fb == cp))
711- then $Tuple4(0, fm, cu, ((cw - fm) - ch))
712- else throw("invalid out asset id")
713- let fo = fn._1
714- let fp = fn._2
715- let eR = fn._3
716- let eS = fn._4
717- let fq = bz(F(eS, fh), F(eR, fg))
718- let fr = I(fq, a)
719- let fs = if ((fb == "WAVES"))
720- then unit
721- else fromBase58String(fb)
722- let ft = if ((ch > 0))
723- then [ScriptTransfer(aJ, ch, fs)]
724- else nil
725- let cG = ([ScriptTransfer(cm, fm, fs), StringEntry(ab(toString(cm), cj), bt(fo, fp, cQ, fr, height, lastBlock.timestamp)), IntegerEntry(U(), fr), IntegerEntry(V(height, lastBlock.timestamp), fr)] ++ ft)
726- if ((cG == cG))
727- then {
728- let fu = invoke(aF, "burn", [cQ], [AttachedPayment(ck, cQ)])
729- if ((fu == fu))
730- then $Tuple2(cG, fm)
731- else throw("Strict value is not equal to itself.")
732- }
693+ let cu = bx(co)
694+ let cw = bx(cp)
695+ let fl = {
696+ let fm = invoke(this, "getOneTknV2READONLY", [fd, cQ], nil)
697+ if ($isInstanceOf(fm, "(Int, Int)"))
698+ then fm
699+ else throw(($getType(fm) + " couldn't be cast to (Int, Int)"))
700+ }
701+ let fn = fl._1
702+ let ch = fl._2
703+ let fo = if (if ((fe > 0))
704+ then (fe > fn)
705+ else false)
706+ then aD(makeString(["amount to receive is less than ", toString(fe)], ""))
707+ else fn
708+ let fp = if ((fd == co))
709+ then $Tuple4(fo, 0, ((cu - fo) - ch), cw)
710+ else if ((fd == cp))
711+ then $Tuple4(0, fo, cu, ((cw - fo) - ch))
712+ else throw("invalid out asset id")
713+ let fq = fp._1
714+ let fr = fp._2
715+ let eT = fp._3
716+ let eU = fp._4
717+ let fs = bz(F(eU, fj), F(eT, fi))
718+ let ft = I(fs, a)
719+ let fu = if ((fd == "WAVES"))
720+ then unit
721+ else fromBase58String(fd)
722+ let fv = if ((ch > 0))
723+ then [ScriptTransfer(aJ, ch, fu)]
724+ else nil
725+ let cG = ([ScriptTransfer(cm, fo, fu), StringEntry(ab(toString(cm), cj), bt(fq, fr, cQ, ft, height, lastBlock.timestamp)), IntegerEntry(U(), ft), IntegerEntry(V(height, lastBlock.timestamp), ft)] ++ fv)
726+ if ((cG == cG))
727+ then {
728+ let fw = invoke(aF, "burn", [cQ], [AttachedPayment(ck, cQ)])
729+ if ((fw == fw))
730+ then $Tuple2(cG, fo)
733731 else throw("Strict value is not equal to itself.")
734732 }
733+ else throw("Strict value is not equal to itself.")
735734 }
736735 }
737736
738737
739-func fv () = {
738+func fx () = {
740739 let ax = getString(S())
741740 if ($isInstanceOf(ax, "String"))
742741 then {
743742 let dX = ax
744743 fromBase58String(dX)
745744 }
746745 else if ($isInstanceOf(ax, "Unit"))
747746 then unit
748747 else throw("Match error")
749748 }
750749
751750
752-func fw () = {
751+func fy () = {
753752 let ax = getString(T())
754753 if ($isInstanceOf(ax, "String"))
755754 then {
756755 let dX = ax
757756 fromBase58String(dX)
758757 }
759758 else if ($isInstanceOf(ax, "Unit"))
760759 then unit
761760 else throw("Match error")
762761 }
763762
764763
765-let fx = throw("Permission denied")
764+let fz = throw("Permission denied")
766765
767-func fy (dK) = {
768- let ax = fv()
766+func fA (dK) = {
767+ let ax = fx()
769768 if ($isInstanceOf(ax, "ByteVector"))
770769 then {
771- let fz = ax
772- if ((dK.callerPublicKey == fz))
770+ let fB = ax
771+ if ((dK.callerPublicKey == fB))
773772 then true
774- else fx
773+ else fz
775774 }
776775 else if ($isInstanceOf(ax, "Unit"))
777776 then if ((dK.caller == this))
778777 then true
779- else fx
778+ else fz
780779 else throw("Match error")
781780 }
782781
783782
784783 @Callable(dK)
785784 func constructor (R) = {
786- let ey = fy(dK)
785+ let ey = fA(dK)
787786 if ((ey == ey))
788787 then [StringEntry(R(), R)]
789788 else throw("Strict value is not equal to itself.")
790789 }
791790
792791
793792
794793 @Callable(dK)
795-func setManager (fA) = {
796- let ey = fy(dK)
794+func setManager (fC) = {
795+ let ey = fA(dK)
797796 if ((ey == ey))
798797 then {
799- let fB = fromBase58String(fA)
800- if ((fB == fB))
801- then [StringEntry(T(), fA)]
798+ let fD = fromBase58String(fC)
799+ if ((fD == fD))
800+ then [StringEntry(T(), fC)]
802801 else throw("Strict value is not equal to itself.")
803802 }
804803 else throw("Strict value is not equal to itself.")
805804 }
806805
807806
808807
809808 @Callable(dK)
810809 func confirmManager () = {
811- let ce = fw()
812- let fC = if (isDefined(ce))
810+ let ce = fy()
811+ let fE = if (isDefined(ce))
813812 then true
814813 else throw("No pending manager")
815- if ((fC == fC))
814+ if ((fE == fE))
816815 then {
817- let fD = if ((dK.callerPublicKey == value(ce)))
816+ let fF = if ((dK.callerPublicKey == value(ce)))
818817 then true
819818 else throw("You are not pending manager")
820- if ((fD == fD))
819+ if ((fF == fF))
821820 then [StringEntry(S(), toBase58String(value(ce))), DeleteEntry(T())]
822821 else throw("Strict value is not equal to itself.")
823822 }
824823 else throw("Strict value is not equal to itself.")
825824 }
826825
827826
828827
829828 @Callable(dK)
830-func put (fE,fF) = {
831- let fG = bc()
832- let fH = valueOrErrorMessage(addressFromString(fG[A]), "Wr st addr")
833- let fI = valueOrErrorMessage(addressFromString(fG[C]), "Wr sl addr")
834- if ((0 > fE))
829+func put (fG,fH) = {
830+ let fI = bc()
831+ let fJ = valueOrErrorMessage(addressFromString(fI[A]), "Wr st addr")
832+ let fK = valueOrErrorMessage(addressFromString(fI[C]), "Wr sl addr")
833+ if ((0 > fG))
835834 then throw("Wrong slippage")
836835 else if ((size(dK.payments) != 2))
837836 then throw("2 pmnts expd")
838837 else {
839- let fJ = dM(toString(dK.caller), toBase58String(dK.transactionId), AttachedPayment(value(dK.payments[0]).assetId, value(dK.payments[0]).amount), dK.payments[1], fE, true, false, true, 0, "")
840- let dp = fJ._2
841- let fK = fJ._7
842- let cG = fJ._9
843- let dq = fJ._10
844- let dr = fJ._11
845- let co = fJ._12
846- let cp = fJ._13
838+ let fL = dM(toString(dK.caller), toBase58String(dK.transactionId), AttachedPayment(value(dK.payments[0]).assetId, value(dK.payments[0]).amount), dK.payments[1], fG, true, false, true, 0, "")
839+ let dp = fL._2
840+ let fM = fL._7
841+ let cG = fL._9
842+ let dq = fL._10
843+ let dr = fL._11
844+ let co = fL._12
845+ let cp = fL._13
847846 let dc = invoke(aF, "emit", [dp], nil)
848847 if ((dc == dc))
849848 then {
850- let fL = {
849+ let fN = {
851850 let ax = dc
852851 if ($isInstanceOf(ax, "Address"))
853852 then {
854- let fM = ax
855- invoke(fM, "emit", [dp], nil)
853+ let fO = ax
854+ invoke(fO, "emit", [dp], nil)
856855 }
857856 else unit
858857 }
859- if ((fL == fL))
858+ if ((fN == fN))
860859 then {
861- let fN = if ((dq > 0))
862- then invoke(fI, "put", nil, [AttachedPayment(co, dq)])
860+ let fP = if ((dq > 0))
861+ then invoke(fK, "put", nil, [AttachedPayment(co, dq)])
863862 else nil
864- if ((fN == fN))
863+ if ((fP == fP))
865864 then {
866- let fO = if ((dr > 0))
867- then invoke(fI, "put", nil, [AttachedPayment(cp, dr)])
865+ let fQ = if ((dr > 0))
866+ then invoke(fK, "put", nil, [AttachedPayment(cp, dr)])
868867 else nil
869- if ((fO == fO))
868+ if ((fQ == fQ))
870869 then {
871- let fP = if (fF)
870+ let fR = if (fH)
872871 then {
873- let fQ = invoke(fH, "stake", nil, [AttachedPayment(fK, dp)])
874- if ((fQ == fQ))
872+ let fS = invoke(fJ, "stake", nil, [AttachedPayment(fM, dp)])
873+ if ((fS == fS))
875874 then nil
876875 else throw("Strict value is not equal to itself.")
877876 }
878- else [ScriptTransfer(dK.caller, dp, fK)]
879- (cG ++ fP)
877+ else [ScriptTransfer(dK.caller, dp, fM)]
878+ (cG ++ fR)
880879 }
881880 else throw("Strict value is not equal to itself.")
882881 }
883882 else throw("Strict value is not equal to itself.")
884883 }
885884 else throw("Strict value is not equal to itself.")
886885 }
887886 else throw("Strict value is not equal to itself.")
888887 }
889888 }
890889
891890
892891
893892 @Callable(dK)
894-func putOneTknV2 (fc,fF) = {
895- let fR = {
896- let fk = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
897- if ($isInstanceOf(fk, "Boolean"))
898- then fk
899- else throw(($getType(fk) + " couldn't be cast to Boolean"))
893+func putOneTknV2 (fe,fH) = {
894+ let fT = {
895+ let fm = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
896+ if ($isInstanceOf(fm, "Boolean"))
897+ then fm
898+ else throw(($getType(fm) + " couldn't be cast to Boolean"))
900899 }
901- let fS = if (if (if (aH())
900+ let fU = if (if (if (aH())
902901 then true
903902 else (aW == o))
904903 then true
905904 else (aW == q))
906905 then true
907- else fR
908- let fT = [if (!(fS))
906+ else fT
907+ let fV = [if (!(fU))
909908 then true
910909 else aD("put operation is blocked by admin"), if ((size(dK.payments) == 1))
911910 then true
912911 else aD("exactly 1 payment are expected")]
913- if ((fT == fT))
912+ if ((fV == fV))
914913 then {
915914 let aS = aK()
916915 let co = aS[u]
917916 let cp = aS[v]
918917 let cn = fromBase58String(aS[t])
919- let fg = parseIntValue(aS[w])
920- let fh = parseIntValue(aS[x])
918+ let fi = parseIntValue(aS[w])
919+ let fj = parseIntValue(aS[x])
921920 let cm = if ((dK.caller == this))
922921 then dK.originCaller
923922 else dK.caller
924923 let dL = value(dK.payments[0])
925924 let ck = toBase58String(value(dL.assetId))
926925 let cQ = dL.amount
927- if ((10000000 > cQ))
928- then throw("Wrong pmt amt")
929- else {
930- let fU = eF(cQ, ck, toString(cm), toBase58String(dK.transactionId))
931- let fV = fU._1
932- let cG = fU._2
933- let ch = fU._3
934- let dp = if (if ((fc > 0))
935- then (fc > fV)
936- else false)
937- then throw(makeString(["amount to receive is less than ", toString(fc)], ""))
938- else fV
939- let fJ = invoke(aF, "emit", [dp], nil)
940- if ((fJ == fJ))
926+ let fW = eF(cQ, ck, toString(cm), toBase58String(dK.transactionId), true)
927+ let fX = fW._1
928+ let cG = fW._2
929+ let ch = fW._3
930+ let dp = if (if ((fe > 0))
931+ then (fe > fX)
932+ else false)
933+ then aD(makeString(["amount to receive is less than ", toString(fe)], ""))
934+ else fX
935+ let fL = invoke(aF, "emit", [dp], nil)
936+ if ((fL == fL))
937+ then {
938+ let fN = {
939+ let ax = fL
940+ if ($isInstanceOf(ax, "Address"))
941+ then {
942+ let fO = ax
943+ invoke(fO, "emit", [dp], nil)
944+ }
945+ else unit
946+ }
947+ if ((fN == fN))
941948 then {
942- let fL = {
943- let ax = fJ
944- if ($isInstanceOf(ax, "Address"))
945- then {
946- let fM = ax
947- invoke(fM, "emit", [dp], nil)
948- }
949- else unit
950- }
951- if ((fL == fL))
949+ let fR = if (fH)
952950 then {
953- let fP = if (fF)
954- then {
955- let fQ = invoke(be, "stake", nil, [AttachedPayment(cn, dp)])
956- if ((fQ == fQ))
957- then nil
958- else throw("Strict value is not equal to itself.")
959- }
960- else [ScriptTransfer(dK.caller, dp, cn)]
961- let ft = if ((ch > 0))
962- then [ScriptTransfer(aJ, ch, fromBase58String(ck))]
963- else nil
964- $Tuple2(((cG ++ fP) ++ ft), dp)
951+ let fS = invoke(be, "stake", nil, [AttachedPayment(cn, dp)])
952+ if ((fS == fS))
953+ then nil
954+ else throw("Strict value is not equal to itself.")
965955 }
966- else throw("Strict value is not equal to itself.")
956+ else [ScriptTransfer(dK.caller, dp, cn)]
957+ let fv = if ((ch > 0))
958+ then [ScriptTransfer(aJ, ch, fromBase58String(ck))]
959+ else nil
960+ $Tuple2(((cG ++ fR) ++ fv), dp)
967961 }
968962 else throw("Strict value is not equal to itself.")
969963 }
964+ else throw("Strict value is not equal to itself.")
970965 }
971966 else throw("Strict value is not equal to itself.")
972967 }
973968
974969
975970
976971 @Callable(dK)
977-func putForFree (fW) = if ((0 > fW))
972+func putForFree (fY) = if ((0 > fY))
978973 then throw("Wrong slpg")
979974 else if ((size(dK.payments) != 2))
980975 then throw("2 pmnts expd")
981976 else {
982- let fX = dM(toString(dK.caller), toBase58String(dK.transactionId), AttachedPayment(value(dK.payments[0]).assetId, value(dK.payments[0]).amount), dK.payments[1], fW, false, false, true, 0, "")
983- fX._9
977+ let fZ = dM(toString(dK.caller), toBase58String(dK.transactionId), AttachedPayment(value(dK.payments[0]).assetId, value(dK.payments[0]).amount), dK.payments[1], fY, false, false, true, 0, "")
978+ fZ._9
984979 }
985980
986981
987982
988983 @Callable(dK)
989984 func get () = {
990985 let dc = dJ(dK)
991- let fY = dc._1
986+ let ga = dc._1
992987 let cF = dc._2
993988 let cQ = dc._3
994989 let ck = dc._4
995990 let cG = dc._5
996991 let ez = invoke(aF, "burn", [cQ], [AttachedPayment(ck, cQ)])
997992 if ((ez == ez))
998993 then cG
999994 else throw("Strict value is not equal to itself.")
1000995 }
1001996
1002997
1003998
1004999 @Callable(dK)
1005-func getOneTknV2 (fb,fc) = {
1006- let fR = {
1007- let fk = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1008- if ($isInstanceOf(fk, "Boolean"))
1009- then fk
1010- else throw(($getType(fk) + " couldn't be cast to Boolean"))
1000+func getOneTknV2 (fd,fe) = {
1001+ let fT = {
1002+ let fm = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1003+ if ($isInstanceOf(fm, "Boolean"))
1004+ then fm
1005+ else throw(($getType(fm) + " couldn't be cast to Boolean"))
10111006 }
1012- let fZ = if (if (aH())
1007+ let gb = if (if (aH())
10131008 then true
10141009 else (aW == q))
10151010 then true
1016- else fR
1017- let fT = [if (!(fZ))
1011+ else fT
1012+ let fV = [if (!(gb))
10181013 then true
10191014 else aD("get operation is blocked by admin"), if ((size(dK.payments) == 1))
10201015 then true
10211016 else aD("exactly 1 payment are expected")]
1022- if ((fT == fT))
1017+ if ((fV == fV))
10231018 then {
1024- let ga = fa(fb, fc, dK.payments, dK.caller, dK.originCaller, dK.transactionId)
1025- let cG = ga._1
1026- let fm = ga._2
1027- $Tuple2(cG, fm)
1019+ let gc = fc(fd, fe, dK.payments, dK.caller, dK.originCaller, dK.transactionId)
1020+ let cG = gc._1
1021+ let fo = gc._2
1022+ $Tuple2(cG, fo)
10281023 }
10291024 else throw("Strict value is not equal to itself.")
10301025 }
10311026
10321027
10331028
10341029 @Callable(dK)
1035-func getOneTknV2READONLY (fb,gb) = {
1030+func getOneTknV2READONLY (fd,gd) = {
10361031 let aS = aK()
10371032 let co = aS[u]
10381033 let cp = aS[v]
10391034 let cn = aS[t]
10401035 let dR = [toBigInt(bx(co)), toBigInt(bx(cp))]
1041- let gc = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cn)), "invalid lp asset").quantity)
1036+ let ge = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cn)), "invalid lp asset").quantity)
10421037 let bK = dQ(dR)
1043- let bJ = (bK - fraction(toBigInt(gb), bK, gc))
1044- let gd = if ((fb == co))
1038+ let bJ = (bK - fraction(toBigInt(gd), bK, ge))
1039+ let gf = if ((fd == co))
10451040 then 0
1046- else if ((fb == cp))
1041+ else if ((fd == cp))
10471042 then 1
10481043 else throw("invalid out asset id")
1049- let ge = ev(dR, gd, bJ)
1050- let gf = (dR[gd] - ge)
1051- let gg = toInt((gf - f))
1052- let gh = cf(gg)
1053- let fl = gh._1
1054- let ch = gh._2
1055- $Tuple2(nil, $Tuple2(fl, ch))
1044+ let gg = ev(dR, gf, bJ)
1045+ let gh = (dR[gf] - gg)
1046+ let gi = max([0, toInt((gh - f))])
1047+ let gj = cf(gi)
1048+ let fn = gj._1
1049+ let ch = gj._2
1050+ $Tuple2(nil, $Tuple2(fn, ch))
10561051 }
10571052
10581053
10591054
10601055 @Callable(dK)
1061-func getOneTknV2WithBonusREADONLY (fb,gb) = {
1056+func getOneTknV2WithBonusREADONLY (fd,gd) = {
10621057 let aS = aK()
10631058 let co = aS[u]
10641059 let cp = aS[v]
10651060 let cn = aS[t]
10661061 let cu = bx(co)
10671062 let cw = bx(cp)
1068- let gi = {
1069- let fk = invoke(this, "getOneTknV2READONLY", [fb, gb], nil)
1070- if ($isInstanceOf(fk, "(Int, Int)"))
1071- then fk
1072- else throw(($getType(fk) + " couldn't be cast to (Int, Int)"))
1063+ let gk = {
1064+ let fm = invoke(this, "getOneTknV2READONLY", [fd, gd], nil)
1065+ if ($isInstanceOf(fm, "(Int, Int)"))
1066+ then fm
1067+ else throw(($getType(fm) + " couldn't be cast to (Int, Int)"))
10731068 }
1074- let fl = gi._1
1075- let ch = gi._2
1076- let dc = ci("", cn, gb, this)
1069+ let fn = gk._1
1070+ let ch = gk._2
1071+ let dc = ci("", cn, gd, this)
10771072 let cE = dc._1
10781073 let cF = dc._2
1079- let gj = (cE + cF)
1080- let eZ = fraction((fl - gj), a, gj)
1081- $Tuple2(nil, $Tuple3(fl, ch, eZ))
1074+ let gl = (cE + cF)
1075+ let fb = if ((gl == 0))
1076+ then if ((fn == 0))
1077+ then 0
1078+ else throw("bonus calculation error")
1079+ else fraction((fn - gl), a, gl)
1080+ $Tuple2(nil, $Tuple3(fn, ch, fb))
10821081 }
10831082
10841083
10851084
10861085 @Callable(dK)
1087-func getNoLess (gk,gl) = {
1086+func getNoLess (gm,gn) = {
10881087 let dc = dJ(dK)
10891088 let cE = dc._1
10901089 let cF = dc._2
10911090 let cQ = dc._3
10921091 let ck = dc._4
10931092 let cG = dc._5
1094- if ((gk > cE))
1095- then throw(((("Failed: " + toString(cE)) + " < ") + toString(gk)))
1096- else if ((gl > cF))
1097- then throw(((("Failed: " + toString(cF)) + " < ") + toString(gl)))
1093+ if ((gm > cE))
1094+ then throw(((("Failed: " + toString(cE)) + " < ") + toString(gm)))
1095+ else if ((gn > cF))
1096+ then throw(((("Failed: " + toString(cF)) + " < ") + toString(gn)))
10981097 else {
1099- let gm = invoke(aF, "burn", [cQ], [AttachedPayment(ck, cQ)])
1100- if ((gm == gm))
1098+ let go = invoke(aF, "burn", [cQ], [AttachedPayment(ck, cQ)])
1099+ if ((go == go))
11011100 then cG
11021101 else throw("Strict value is not equal to itself.")
11031102 }
11041103 }
11051104
11061105
11071106
11081107 @Callable(dK)
11091108 func unstakeAndGet (cg) = {
1110- let gn = if ((size(dK.payments) != 0))
1109+ let gp = if ((size(dK.payments) != 0))
11111110 then throw("No pmnts expd")
11121111 else true
1113- if ((gn == gn))
1112+ if ((gp == gp))
11141113 then {
11151114 let bW = aK()
1116- let go = bc()
1117- let fK = fromBase58String(bW[t])
1118- let gp = valueOrErrorMessage(addressFromString(go[A]), "Wr st addr")
1119- let gq = invoke(gp, "unstake", [toBase58String(fK), cg], nil)
1120- if ((gq == gq))
1115+ let gq = bc()
1116+ let fM = fromBase58String(bW[t])
1117+ let gr = valueOrErrorMessage(addressFromString(gq[A]), "Wr st addr")
1118+ let gs = invoke(gr, "unstake", [toBase58String(fM), cg], nil)
1119+ if ((gs == gs))
11211120 then {
1122- let dc = ci(toBase58String(dK.transactionId), toBase58String(fK), cg, dK.caller)
1121+ let dc = ci(toBase58String(dK.transactionId), toBase58String(fM), cg, dK.caller)
11231122 let cs = parseIntValue(dc._9)
11241123 let cG = dc._10
1125- let gr = if (if (aH())
1124+ let gt = if (if (aH())
11261125 then true
11271126 else (cs == q))
11281127 then throw(("Blocked: " + toString(cs)))
11291128 else true
1130- if ((gr == gr))
1129+ if ((gt == gt))
11311130 then {
1132- let gs = invoke(aF, "burn", [cg], [AttachedPayment(fK, cg)])
1133- if ((gs == gs))
1131+ let gu = invoke(aF, "burn", [cg], [AttachedPayment(fM, cg)])
1132+ if ((gu == gu))
11341133 then cG
11351134 else throw("Strict value is not equal to itself.")
11361135 }
11371136 else throw("Strict value is not equal to itself.")
11381137 }
11391138 else throw("Strict value is not equal to itself.")
11401139 }
11411140 else throw("Strict value is not equal to itself.")
11421141 }
11431142
11441143
11451144
11461145 @Callable(dK)
1147-func unstakeAndGetOneTknV2 (gt,fb,fc) = {
1148- let fR = {
1149- let fk = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1150- if ($isInstanceOf(fk, "Boolean"))
1151- then fk
1152- else throw(($getType(fk) + " couldn't be cast to Boolean"))
1146+func unstakeAndGetOneTknV2 (gv,fd,fe) = {
1147+ let fT = {
1148+ let fm = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1149+ if ($isInstanceOf(fm, "Boolean"))
1150+ then fm
1151+ else throw(($getType(fm) + " couldn't be cast to Boolean"))
11531152 }
1154- let fZ = if (if (aH())
1153+ let gb = if (if (aH())
11551154 then true
11561155 else (aW == q))
11571156 then true
1158- else fR
1159- let fT = [if (!(fZ))
1157+ else fT
1158+ let fV = [if (!(gb))
11601159 then true
11611160 else aD("get operation is blocked by admin"), if ((size(dK.payments) == 0))
11621161 then true
11631162 else aD("no payments are expected")]
1164- if ((fT == fT))
1163+ if ((fV == fV))
11651164 then {
11661165 let bW = aK()
1167- let go = bc()
1168- let fK = fromBase58String(bW[t])
1169- let gp = valueOrErrorMessage(addressFromString(go[A]), "Wr st addr")
1170- let gq = invoke(gp, "unstake", [toBase58String(fK), gt], nil)
1171- if ((gq == gq))
1166+ let gq = bc()
1167+ let fM = fromBase58String(bW[t])
1168+ let gr = valueOrErrorMessage(addressFromString(gq[A]), "Wr st addr")
1169+ let gs = invoke(gr, "unstake", [toBase58String(fM), gv], nil)
1170+ if ((gs == gs))
11721171 then {
1173- let gu = fa(fb, fc, [AttachedPayment(fK, gt)], dK.caller, dK.originCaller, dK.transactionId)
1174- let cG = gu._1
1175- let fm = gu._2
1176- $Tuple2(cG, fm)
1172+ let gw = fc(fd, fe, [AttachedPayment(fM, gv)], dK.caller, dK.originCaller, dK.transactionId)
1173+ let cG = gw._1
1174+ let fo = gw._2
1175+ $Tuple2(cG, fo)
11771176 }
11781177 else throw("Strict value is not equal to itself.")
11791178 }
11801179 else throw("Strict value is not equal to itself.")
11811180 }
11821181
11831182
11841183
11851184 @Callable(dK)
1186-func putOneTknV2WithBonusREADONLY (gv,gw) = {
1185+func putOneTknV2WithBonusREADONLY (gx,gy) = {
11871186 let aS = aK()
11881187 let co = aS[u]
11891188 let cp = aS[v]
11901189 let cn = aS[t]
1191- let gx = eF(gv, gw, "", "")
1192- let eU = gx._1
1193- let cG = gx._2
1194- let ch = gx._3
1195- let eZ = gx._4
1196- $Tuple2(nil, $Tuple3(eU, ch, eZ))
1190+ let gz = eF(gx, gy, "", "", true)
1191+ let eW = gz._1
1192+ let cG = gz._2
1193+ let ch = gz._3
1194+ let fb = gz._4
1195+ $Tuple2(nil, $Tuple3(eW, ch, fb))
11971196 }
11981197
11991198
12001199
12011200 @Callable(dK)
1202-func activate (gy,gz) = if ((toString(dK.caller) != toString(aF)))
1203- then throw("denied")
1204- else $Tuple2([StringEntry(ac(), gy), StringEntry(ad(), gz)], "success")
1201+func putOneTknV2WithoutTakeFeeREADONLY (gx,gy) = {
1202+ let aS = aK()
1203+ let co = aS[u]
1204+ let cp = aS[v]
1205+ let cn = aS[t]
1206+ let gA = eF(gx, gy, "", "", false)
1207+ let eW = gA._1
1208+ let cG = gA._2
1209+ let ch = gA._3
1210+ let fb = gA._4
1211+ $Tuple2(nil, $Tuple3(eW, ch, fb))
1212+ }
12051213
12061214
12071215
12081216 @Callable(dK)
1209-func setS (gA,gr) = if ((toString(dK.caller) != az(this, af())))
1210- then fx
1211- else [StringEntry(gA, gr)]
1217+func activate (gB,gC) = if ((toString(dK.caller) != toString(aF)))
1218+ then throw("denied")
1219+ else $Tuple2([StringEntry(ac(), gB), StringEntry(ad(), gC)], "success")
12121220
12131221
12141222
12151223 @Callable(dK)
1216-func setI (gA,gr) = if ((toString(dK.caller) != az(this, af())))
1217- then fx
1218- else [IntegerEntry(gA, gr)]
1224+func setS (gD,gt) = if ((toString(dK.caller) != az(this, af())))
1225+ then fz
1226+ else [StringEntry(gD, gt)]
1227+
1228+
1229+
1230+@Callable(dK)
1231+func setI (gD,gt) = if ((toString(dK.caller) != az(this, af())))
1232+ then fz
1233+ else [IntegerEntry(gD, gt)]
12191234
12201235
12211236
12221237 @Callable(dK)
12231238 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aK())
12241239
12251240
12261241
12271242 @Callable(dK)
12281243 func getAccBalanceWrapperREADONLY (by) = $Tuple2(nil, bx(by))
12291244
12301245
12311246
12321247 @Callable(dK)
12331248 func calcPricesWrapperREADONLY (bQ,bR,bV) = {
1234- let gB = bU(bQ, bR, bV)
1235- $Tuple2(nil, [toString(gB[0]), toString(gB[1]), toString(gB[2])])
1249+ let gE = bU(bQ, bR, bV)
1250+ $Tuple2(nil, [toString(gE[0]), toString(gE[1]), toString(gE[2])])
12361251 }
12371252
12381253
12391254
12401255 @Callable(dK)
1241-func fromX18WrapperREADONLY (J,gC) = $Tuple2(nil, I(parseBigIntValue(J), gC))
1256+func fromX18WrapperREADONLY (J,gF) = $Tuple2(nil, I(parseBigIntValue(J), gF))
12421257
12431258
12441259
12451260 @Callable(dK)
12461261 func toX18WrapperREADONLY (G,H) = $Tuple2(nil, toString(F(G, H)))
12471262
12481263
12491264
12501265 @Callable(dK)
12511266 func calcPriceBigIntWrapperREADONLY (bA,bB) = $Tuple2(nil, toString(bz(parseBigIntValue(bA), parseBigIntValue(bB))))
12521267
12531268
12541269
12551270 @Callable(dK)
1256-func estimatePutOperationWrapperREADONLY (cj,bF,cI,cJ,cK,cL,gD,cM,cN) = $Tuple2(nil, cH(cj, bF, cI, cJ, cK, cL, gD, cM, cN, true, false, 0, ""))
1271+func estimatePutOperationWrapperREADONLY (cj,bF,cI,cJ,cK,cL,gG,cM,cN) = $Tuple2(nil, cH(cj, bF, cI, cJ, cK, cL, gG, cM, cN, true, false, 0, ""))
12571272
12581273
12591274
12601275 @Callable(dK)
1261-func estimateGetOperationWrapperREADONLY (cj,gE,cl,gD) = {
1262- let dc = ci(cj, gE, cl, addressFromStringValue(gD))
1276+func estimateGetOperationWrapperREADONLY (cj,gH,cl,gG) = {
1277+ let dc = ci(cj, gH, cl, addressFromStringValue(gG))
12631278 $Tuple2(nil, $Tuple10(dc._1, dc._2, dc._3, dc._4, dc._5, dc._6, dc._7, toString(dc._8), dc._9, dc._10))
12641279 }
12651280
12661281
12671282
12681283 @Callable(dK)
12691284 func getFeeREADONLY () = $Tuple2(nil, ah)
12701285
12711286
1272-@Verifier(gF)
1273-func gG () = {
1274- let gH = {
1275- let ax = fv()
1287+@Verifier(gI)
1288+func gJ () = {
1289+ let gK = {
1290+ let ax = fx()
12761291 if ($isInstanceOf(ax, "ByteVector"))
12771292 then {
1278- let fz = ax
1279- fz
1293+ let fB = ax
1294+ fB
12801295 }
12811296 else if ($isInstanceOf(ax, "Unit"))
1282- then gF.senderPublicKey
1297+ then gI.senderPublicKey
12831298 else throw("Match error")
12841299 }
1285- let ax = gF
1300+ let ax = gI
12861301 if ($isInstanceOf(ax, "Order"))
12871302 then {
12881303 let dx = ax
1289- let gI = aI()
1290- let gJ = dw(dx)
1291- let gK = sigVerify(dx.bodyBytes, dx.proofs[0], dx.senderPublicKey)
1292- let gL = sigVerify(dx.bodyBytes, dx.proofs[1], gI)
1293- if (if (if (gJ)
1294- then gK
1304+ let gL = aI()
1305+ let gM = dw(dx)
1306+ let gN = sigVerify(dx.bodyBytes, dx.proofs[0], dx.senderPublicKey)
1307+ let gO = sigVerify(dx.bodyBytes, dx.proofs[1], gL)
1308+ if (if (if (gM)
1309+ then gN
12951310 else false)
1296- then gL
1311+ then gO
12971312 else false)
12981313 then true
1299- else as(gJ, gK, gL)
1314+ else as(gM, gN, gO)
13001315 }
13011316 else if ($isInstanceOf(ax, "SetScriptTransaction"))
13021317 then {
13031318 let dX = ax
1304- let gM = blake2b256(value(dX.script))
1305- let gN = fromBase64String(value(getString(aF, aq())))
1306- let gO = scriptHash(this)
1307- if (if ((gN == gM))
1308- then (gO != gM)
1319+ let gP = blake2b256(value(dX.script))
1320+ let gQ = fromBase64String(value(getString(aF, aq())))
1321+ let gR = scriptHash(this)
1322+ if (if ((gQ == gP))
1323+ then (gR != gP)
13091324 else false)
13101325 then true
1311- else sigVerify(gF.bodyBytes, gF.proofs[0], gH)
1326+ else sigVerify(gI.bodyBytes, gI.proofs[0], gK)
13121327 }
1313- else sigVerify(gF.bodyBytes, gF.proofs[0], gH)
1328+ else sigVerify(gI.bodyBytes, gI.proofs[0], gK)
13141329 }
13151330

github/deemru/w8io/6500d08 
213.75 ms