tx · mt9yjf1u8QQ9PePg6KSn1CtyjntwDtTWKKFyTu49e4K

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.01400000 Waves

2021.10.29 11:29 [1767368] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "mt9yjf1u8QQ9PePg6KSn1CtyjntwDtTWKKFyTu49e4K", "fee": 1400000, "feeAssetId": null, "timestamp": 1635496236166, "version": 1, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "4TeoUzbbbbQoMrNtPdNpzD6Er4RaanWMAXufNrhpip9giQPbAcJZfCZwLAoQZLNAKEzvoA1QExh66LZs5CyuranH" ], "script": "base64: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X19wcmljZUFzc2V0AQAAAAxrZXlLSGlzdG9yaWMAAAACAAAAAWgAAAAJdGltZXN0YW1wCQAEuQAAAAIJAARMAAAAAgIAAAATJXMlcyVkJWRfX0tfaGlzdG9yeQkABEwAAAACCQABpAAAAAEFAAAAAWgJAARMAAAAAgkAAaQAAAABBQAAAAl0aW1lc3RhbXAFAAAAA25pbAUAAAADU0VQAQAAABBrZXlGYWN0b3J5Q29uZmlnAAAAAAIAAAARJXNfX2ZhY3RvcnlDb25maWcBAAAADWtleU1hdGNoZXJQdWIAAAAAAgAAABglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAAAAKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzAAAAAQAAABNwb29sQ29udHJhY3RBZGRyZXNzCQABLAAAAAIJAAEsAAAAAgIAAAAIJXMlcyVzX18FAAAAE3Bvb2xDb250cmFjdEFkZHJlc3MCAAAAIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0AQAAAA1rZXlQb29sQ29uZmlnAAAAAgAAAAlpQW10QXNzZXQAAAALaVByaWNlQXNzZXQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIJWQlZCVzX18FAAAACWlBbXRBc3NldAIAAAACX18FAAAAC2lQcmljZUFzc2V0AgAAAAhfX2NvbmZpZwEAAAAfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAAAAAEAAAAMYmFzZUFzc2V0U3RyCQABLAAAAAICAAAAKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAAAADGJhc2VBc3NldFN0cgEAAAATa2V5QWxsUG9vbHNTaHV0ZG93bgAAAAACAAAADCVzX19zaHV0ZG93bgEAAAANa2V5UG9vbFdlaWdodAAAAAEAAAAPY29udHJhY3RBZGRyZXNzCQABLAAAAAICAAAAEiVzJXNfX3Bvb2xXZWlnaHRfXwUAAAAPY29udHJhY3RBZGRyZXNzAQAAAA90aHJvd09yZGVyRXJyb3IAAAADAAAACm9yZGVyVmFsaWQAAAALc2VuZGVyVmFsaWQAAAAMbWF0Y2hlclZhbGlkCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAACRvcmRlciB2YWxpZGF0aW9uIGZhaWxlZDogb3JkZXJWYWxpZD0JAAGlAAAAAQUAAAAKb3JkZXJWYWxpZAIAAAANIHNlbmRlclZhbGlkPQkAAaUAAAABBQAAAAtzZW5kZXJWYWxpZAIAAAAOIG1hdGNoZXJWYWxpZD0JAAGlAAAAAQUAAAAMbWF0Y2hlclZhbGlkAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACAAAAB2FkZHJlc3MAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5CQAEuQAAAAIJAARMAAAAAgIAAAAKbWFuZGF0b3J5IAkABEwAAAACCQAEJQAAAAEFAAAAB2FkZHJlc3MJAARMAAAAAgIAAAABLgkABEwAAAACBQAAAANrZXkJAARMAAAAAgIAAAAPIGlzIG5vdCBkZWZpbmVkBQAAAANuaWwCAAAAAAEAAAAMZ2V0SW50T3JGYWlsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQkABLkAAAACCQAETAAAAAICAAAACm1hbmRhdG9yeSAJAARMAAAAAgkABCUAAAABBQAAAAdhZGRyZXNzCQAETAAAAAICAAAAAS4JAARMAAAAAgUAAAADa2V5CQAETAAAAAICAAAADyBpcyBub3QgZGVmaW5lZAUAAAADbmlsAgAAAAAAAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAABHRoaXMJAQAAABJrZXlGYWN0b3J5Q29udHJhY3QAAAAAAQAAABBpc0dsb2JhbFNodXRkb3duAAAAAAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBsAAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAABNrZXlBbGxQb29sc1NodXRkb3duAAAAAAcBAAAAE2dldE1hdGNoZXJQdWJPckZhaWwAAAAACQACWQAAAAEJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAAA1rZXlNYXRjaGVyUHViAAAAAAEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAACGFtdEFzc2V0CQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAEdGhpcwkBAAAAC2tleUFtdEFzc2V0AAAAAAQAAAAKcHJpY2VBc3NldAkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAABHRoaXMJAQAAAA1rZXlQcmljZUFzc2V0AAAAAAQAAAALaVByaWNlQXNzZXQJAQAAAAxnZXRJbnRPckZhaWwAAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAAB9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAAAAAQUAAAAKcHJpY2VBc3NldAQAAAAJaUFtdEFzc2V0CQEAAAAMZ2V0SW50T3JGYWlsAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAAfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAAAAAEFAAAACGFtdEFzc2V0CQAEtQAAAAIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAAA1rZXlQb29sQ29uZmlnAAAAAgkAAaQAAAABBQAAAAlpQW10QXNzZXQJAAGkAAAAAQUAAAALaVByaWNlQXNzZXQFAAAAA1NFUAEAAAAQZ2V0RmFjdG9yeUNvbmZpZwAAAAAJAAS1AAAAAgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAEGtleUZhY3RvcnlDb25maWcAAAAABQAAAANTRVABAAAAEWRhdGFQdXRBY3Rpb25JbmZvAAAACgAAAA1pbkFtdEFzc2V0QW10AAAAD2luUHJpY2VBc3NldEFtdAAAAAhvdXRMcEFtdAAAAAVwcmljZQAAAB1zbGlwcGFnZVRvbGVyYW5jZVBhc3NlZEJ5VXNlcgAAABVzbGlwcGFnZVRvbGVyYW5jZVJlYWwAAAAIdHhIZWlnaHQAAAALdHhUaW1lc3RhbXAAAAASc2xpcGFnZUFtdEFzc2V0QW10AAAAFHNsaXBhZ2VQcmljZUFzc2V0QW10CQAEuQAAAAIJAARMAAAAAgIAAAAUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAARMAAAAAgkAAaQAAAABBQAAAA1pbkFtdEFzc2V0QW10CQAETAAAAAIJAAGkAAAAAQUAAAAPaW5QcmljZUFzc2V0QW10CQAETAAAAAIJAAGkAAAAAQUAAAAIb3V0THBBbXQJAARMAAAAAgkAAaQAAAABBQAAAAVwcmljZQkABEwAAAACCQABpAAAAAEFAAAAHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyCQAETAAAAAIJAAGkAAAAAQUAAAAVc2xpcHBhZ2VUb2xlcmFuY2VSZWFsCQAETAAAAAIJAAGkAAAAAQUAAAAIdHhIZWlnaHQJAARMAAAAAgkAAaQAAAABBQAAAAt0eFRpbWVzdGFtcAkABEwAAAACCQABpAAAAAEFAAAAEnNsaXBhZ2VBbXRBc3NldEFtdAkABEwAAAACCQABpAAAAAEFAAAAFHNsaXBhZ2VQcmljZUFzc2V0QW10BQAAAANuaWwFAAAAA1NFUAEAAAARZGF0YUdldEFjdGlvbkluZm8AAAAGAAAADm91dEFtdEFzc2V0QW10AAAAEG91dFByaWNlQXNzZXRBbXQAAAAHaW5McEFtdAAAAAVwcmljZQAAAAh0eEhlaWdodAAAAAt0eFRpbWVzdGFtcAkABLkAAAACCQAETAAAAAICAAAADCVkJWQlZCVkJWQlZAkABEwAAAACCQABpAAAAAEFAAAADm91dEFtdEFzc2V0QW10CQAETAAAAAIJAAGkAAAAAQUAAAAQb3V0UHJpY2VBc3NldEFtdAkABEwAAAACCQABpAAAAAEFAAAAB2luTHBBbXQJAARMAAAAAgkAAaQAAAABBQAAAAVwcmljZQkABEwAAAACCQABpAAAAAEFAAAACHR4SGVpZ2h0CQAETAAAAAIJAAGkAAAAAQUAAAALdHhUaW1lc3RhbXAFAAAAA25pbAUAAAADU0VQAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQAAAAdhc3NldElkAwkAAAAAAAACBQAAAAdhc3NldElkAgAAAAVXQVZFUwgJAAPvAAAAAQUAAAAEdGhpcwAAAAlhdmFpbGFibGUJAAPwAAAAAgUAAAAEdGhpcwkAAlkAAAABBQAAAAdhc3NldElkAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACAAAACHByQW10WDE4AAAACGFtQW10WDE4CQABPAAAAAMFAAAACHByQW10WDE4BQAAAAdzY2FsZTE4BQAAAAhhbUFtdFgxOAEAAAAQcHJpdmF0ZUNhbGNQcmljZQAAAAQAAAAKYW1Bc3NldERjbQAAAApwckFzc2V0RGNtAAAABWFtQW10AAAABXByQW10BAAAAA5hbXRBc3NldEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAFYW1BbXQFAAAACmFtQXNzZXREY20EAAAAEHByaWNlQXNzZXRBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAABXByQW10BQAAAApwckFzc2V0RGNtCQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgUAAAAQcHJpY2VBc3NldEFtdFgxOAUAAAAOYW10QXNzZXRBbXRYMTgBAAAACmNhbGNQcmljZXMAAAADAAAABWFtQW10AAAABXByQW10AAAABWxwQW10BAAAAANjZmcJAQAAAA1nZXRQb29sQ29uZmlnAAAAAAQAAAALYW10QXNzZXREY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAADmlkeEFtdEFzc2V0RGNtBAAAAA1wcmljZUFzc2V0RGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAABBpZHhQcmljZUFzc2V0RGNtBAAAAAhwcmljZVgxOAkBAAAAEHByaXZhdGVDYWxjUHJpY2UAAAAEBQAAAAthbXRBc3NldERjbQUAAAANcHJpY2VBc3NldERjbQUAAAAFYW1BbXQFAAAABXByQW10BAAAAAhhbUFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAFYW1BbXQFAAAAC2FtdEFzc2V0RGNtBAAAAAhwckFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAFcHJBbXQFAAAADXByaWNlQXNzZXREY20EAAAACGxwQW10WDE4CQEAAAAFdG9YMTgAAAACBQAAAAVscEFtdAUAAAAGc2NhbGU4BAAAABNscFByaWNlSW5BbUFzc2V0WDE4CQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgUAAAAIYW1BbXRYMTgFAAAACGxwQW10WDE4BAAAABNscFByaWNlSW5QckFzc2V0WDE4CQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgUAAAAIcHJBbXRYMTgFAAAACGxwQW10WDE4CQAETAAAAAIFAAAACHByaWNlWDE4CQAETAAAAAIFAAAAE2xwUHJpY2VJbkFtQXNzZXRYMTgJAARMAAAAAgUAAAATbHBQcmljZUluUHJBc3NldFgxOAUAAAADbmlsAQAAAA9jYWxjdWxhdGVQcmljZXMAAAADAAAABWFtQW10AAAABXByQW10AAAABWxwQW10BAAAAAZwcmljZXMJAQAAAApjYWxjUHJpY2VzAAAAAwUAAAAFYW1BbXQFAAAABXByQW10BQAAAAVscEFtdAkABEwAAAACCQEAAAAHZnJvbVgxOAAAAAIJAAGRAAAAAgUAAAAGcHJpY2VzAAAAAAAAAAAABQAAAAZzY2FsZTgJAARMAAAAAgkBAAAAB2Zyb21YMTgAAAACCQABkQAAAAIFAAAABnByaWNlcwAAAAAAAAAAAQUAAAAGc2NhbGU4CQAETAAAAAIJAQAAAAdmcm9tWDE4AAAAAgkAAZEAAAACBQAAAAZwcmljZXMAAAAAAAAAAAIFAAAABnNjYWxlOAUAAAADbmlsAQAAABRlc3RpbWF0ZUdldE9wZXJhdGlvbgAAAAQAAAAGdHhJZDU4AAAACnBtdEFzc2V0SWQAAAAIcG10THBBbXQAAAALdXNlckFkZHJlc3MEAAAAA2NmZwkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAAlscEFzc2V0SWQJAAGRAAAAAgUAAAADY2ZnBQAAABBpZHhQb29sTFBBc3NldElkBAAAAAlhbUFzc2V0SWQJAAGRAAAAAgUAAAADY2ZnBQAAAA1pZHhBbXRBc3NldElkBAAAAAlwckFzc2V0SWQJAAGRAAAAAgUAAAADY2ZnBQAAAA9pZHhQcmljZUFzc2V0SWQEAAAACmFtQXNzZXREY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAADmlkeEFtdEFzc2V0RGNtBAAAAApwckFzc2V0RGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAABBpZHhQcmljZUFzc2V0RGNtBAAAAApwb29sU3RhdHVzCQABkQAAAAIFAAAAA2NmZwUAAAANaWR4UG9vbFN0YXR1cwQAAAAKbHBFbWlzc2lvbggJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAA+wAAAABCQACWQAAAAEFAAAACWxwQXNzZXRJZAkAASwAAAACCQABLAAAAAICAAAABkFzc2V0IAUAAAAJbHBBc3NldElkAgAAAA4gZG9lc24ndCBleGlzdAAAAAhxdWFudGl0eQMJAQAAAAIhPQAAAAIFAAAACWxwQXNzZXRJZAUAAAAKcG10QXNzZXRJZAkAAAIAAAABAgAAABVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAAAACWFtQmFsYW5jZQkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAlhbUFzc2V0SWQEAAAADGFtQmFsYW5jZVgxOAkBAAAABXRvWDE4AAAAAgUAAAAJYW1CYWxhbmNlBQAAAAphbUFzc2V0RGNtBAAAAAlwckJhbGFuY2UJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAJcHJBc3NldElkBAAAAAxwckJhbGFuY2VYMTgJAQAAAAV0b1gxOAAAAAIFAAAACXByQmFsYW5jZQUAAAAKcHJBc3NldERjbQQAAAALY3VyUHJpY2VYMTgJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAAAxwckJhbGFuY2VYMTgFAAAADGFtQmFsYW5jZVgxOAQAAAAIY3VyUHJpY2UJAQAAAAdmcm9tWDE4AAAAAgUAAAALY3VyUHJpY2VYMTgFAAAABnNjYWxlOAQAAAALcG10THBBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAACHBtdExwQW10BQAAAAZzY2FsZTgEAAAADWxwRW1pc3Npb25YMTgJAQAAAAV0b1gxOAAAAAIFAAAACmxwRW1pc3Npb24FAAAABnNjYWxlOAQAAAALb3V0QW1BbXRYMTgJAAE8AAAAAwUAAAAMYW1CYWxhbmNlWDE4BQAAAAtwbXRMcEFtdFgxOAUAAAANbHBFbWlzc2lvblgxOAQAAAALb3V0UHJBbXRYMTgJAAE8AAAAAwUAAAAMcHJCYWxhbmNlWDE4BQAAAAtwbXRMcEFtdFgxOAUAAAANbHBFbWlzc2lvblgxOAQAAAAIb3V0QW1BbXQJAQAAAAdmcm9tWDE4AAAAAgUAAAALb3V0QW1BbXRYMTgFAAAACmFtQXNzZXREY20EAAAACG91dFByQW10CQEAAAAHZnJvbVgxOAAAAAIFAAAAC291dFByQW10WDE4BQAAAApwckFzc2V0RGNtBAAAAAVzdGF0ZQMJAAAAAAAAAgUAAAAGdHhJZDU4AgAAAAAFAAAAA25pbAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAt1c2VyQWRkcmVzcwUAAAAIb3V0QW1BbXQDCQAAAAAAAAIFAAAACWFtQXNzZXRJZAIAAAAFV0FWRVMFAAAABHVuaXQJAAJZAAAAAQUAAAAJYW1Bc3NldElkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAC3VzZXJBZGRyZXNzBQAAAAhvdXRQckFtdAMJAAAAAAAAAgUAAAAJcHJBc3NldElkAgAAAAVXQVZFUwUAAAAEdW5pdAkAAlkAAAABBQAAAAlwckFzc2V0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEmtleUdldEFjdGlvbkJ5VXNlcgAAAAIJAAQlAAAAAQUAAAALdXNlckFkZHJlc3MFAAAABnR4SWQ1OAkBAAAAEWRhdGFHZXRBY3Rpb25JbmZvAAAABgUAAAAIb3V0QW1BbXQFAAAACG91dFByQW10BQAAAAhwbXRMcEFtdAUAAAAIY3VyUHJpY2UFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAxrZXlQcmljZUxhc3QAAAAABQAAAAhjdXJQcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAD2tleVByaWNlSGlzdG9yeQAAAAIFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAACGN1clByaWNlBQAAAANuaWwJAAUcAAAACgUAAAAIb3V0QW1BbXQFAAAACG91dFByQW10BQAAAAlhbUFzc2V0SWQFAAAACXByQXNzZXRJZAUAAAAJYW1CYWxhbmNlBQAAAAlwckJhbGFuY2UFAAAACmxwRW1pc3Npb24FAAAAC2N1clByaWNlWDE4BQAAAApwb29sU3RhdHVzBQAAAAVzdGF0ZQEAAAAUZXN0aW1hdGVQdXRPcGVyYXRpb24AAAAJAAAABnR4SWQ1OAAAABFzbGlwcGFnZVRvbGVyYW5jZQAAAAxpbkFtQXNzZXRBbXQAAAALaW5BbUFzc2V0SWQAAAAMaW5QckFzc2V0QW10AAAAC2luUHJBc3NldElkAAAAC3VzZXJBZGRyZXNzAAAACmlzRXZhbHVhdGUAAAAGZW1pdExwBAAAAANjZmcJAQAAAA1nZXRQb29sQ29uZmlnAAAAAAQAAAAJbHBBc3NldElkCQACWQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAABBpZHhQb29sTFBBc3NldElkBAAAAAxhbUFzc2V0SWRTdHIJAAGRAAAAAgUAAAADY2ZnBQAAAA1pZHhBbXRBc3NldElkBAAAAAxwckFzc2V0SWRTdHIJAAGRAAAAAgUAAAADY2ZnBQAAAA9pZHhQcmljZUFzc2V0SWQEAAAAC2lBbXRBc3NldElkCQABkQAAAAIFAAAAA2NmZwUAAAAOaWR4SUFtdEFzc2V0SWQEAAAADWlQcmljZUFzc2V0SWQJAAGRAAAAAgUAAAADY2ZnBQAAABBpZHhJUHJpY2VBc3NldElkBAAAAAthbXRBc3NldERjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAOaWR4QW10QXNzZXREY20EAAAADXByaWNlQXNzZXREY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAEGlkeFByaWNlQXNzZXREY20EAAAACnBvb2xTdGF0dXMJAAGRAAAAAgUAAAADY2ZnBQAAAA1pZHhQb29sU3RhdHVzBAAAAApscEVtaXNzaW9uCAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAD7AAAAAEFAAAACWxwQXNzZXRJZAkAASwAAAACCQABLAAAAAICAAAABkFzc2V0IAkAAlgAAAABBQAAAAlscEFzc2V0SWQCAAAADiBkb2Vzbid0IGV4aXN0AAAACHF1YW50aXR5BAAAAA5pbkFtQXNzZXRJZFN0cgkAAlgAAAABCQEAAAALdmFsdWVPckVsc2UAAAACBQAAAAtpbkFtQXNzZXRJZAkAAlkAAAABAgAAAAVXQVZFUwQAAAAOaW5QckFzc2V0SWRTdHIJAAJYAAAAAQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgUAAAALaW5QckFzc2V0SWQJAAJZAAAAAQIAAAAFV0FWRVMDAwkBAAAAAiE9AAAAAgUAAAAMYW1Bc3NldElkU3RyBQAAAA5pbkFtQXNzZXRJZFN0cgYJAQAAAAIhPQAAAAIFAAAADHByQXNzZXRJZFN0cgUAAAAOaW5QckFzc2V0SWRTdHIJAAACAAAAAQIAAAAiSW52YWxpZCBhbXQgb3IgcHJpY2UgYXNzZXQgcGFzc2VkLgQAAAAJYW1CYWxhbmNlAwUAAAAKaXNFdmFsdWF0ZQkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAxhbUFzc2V0SWRTdHIJAABlAAAAAgkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAxhbUFzc2V0SWRTdHIFAAAADGluQW1Bc3NldEFtdAQAAAAJcHJCYWxhbmNlAwUAAAAKaXNFdmFsdWF0ZQkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAxwckFzc2V0SWRTdHIJAABlAAAAAgkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAxwckFzc2V0SWRTdHIFAAAADGluUHJBc3NldEFtdAQAAAAPaW5BbUFzc2V0QW10WDE4CQEAAAAFdG9YMTgAAAACBQAAAAxpbkFtQXNzZXRBbXQFAAAAC2FtdEFzc2V0RGNtBAAAAA9pblByQXNzZXRBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAADGluUHJBc3NldEFtdAUAAAANcHJpY2VBc3NldERjbQQAAAAMdXNlclByaWNlWDE4CQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgUAAAAPaW5QckFzc2V0QW10WDE4BQAAAA9pbkFtQXNzZXRBbXRYMTgEAAAADGFtQmFsYW5jZVgxOAkBAAAABXRvWDE4AAAAAgUAAAAJYW1CYWxhbmNlBQAAAAthbXRBc3NldERjbQQAAAAMcHJCYWxhbmNlWDE4CQEAAAAFdG9YMTgAAAACBQAAAAlwckJhbGFuY2UFAAAADXByaWNlQXNzZXREY20EAAAAA3JlcwMJAAAAAAAAAgUAAAAKbHBFbWlzc2lvbgAAAAAAAAAAAAQAAAALY3VyUHJpY2VYMTgFAAAACnplcm9CaWdJbnQEAAAAC3NsaXBwYWdlWDE4BQAAAAp6ZXJvQmlnSW50BAAAAAhscEFtdFgxOAkAAHYAAAAGCQABOQAAAAIFAAAAD2luQW1Bc3NldEFtdFgxOAUAAAAPaW5QckFzc2V0QW10WDE4AAAAAAAAAAAACQABNgAAAAEAAAAAAAAAAAUAAAAAAAAAAAEAAAAAAAAAAAAFAAAABERPV04JAAUXAAAABQkBAAAAB2Zyb21YMTgAAAACBQAAAAhscEFtdFgxOAUAAAAGc2NhbGU4CQEAAAAHZnJvbVgxOAAAAAIFAAAAD2luQW1Bc3NldEFtdFgxOAUAAAALYW10QXNzZXREY20JAQAAAAdmcm9tWDE4AAAAAgUAAAAPaW5QckFzc2V0QW10WDE4BQAAAA1wcmljZUFzc2V0RGNtCQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgkAATcAAAACBQAAAAxwckJhbGFuY2VYMTgFAAAAD2luUHJBc3NldEFtdFgxOAkAATcAAAACBQAAAAxhbUJhbGFuY2VYMTgFAAAAD2luQW1Bc3NldEFtdFgxOAUAAAALc2xpcHBhZ2VYMTgEAAAAC2N1clByaWNlWDE4CQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgUAAAAMcHJCYWxhbmNlWDE4BQAAAAxhbUJhbGFuY2VYMTgEAAAAC3NsaXBwYWdlWDE4CQABPAAAAAMJAQAAAANhYnMAAAABCQABOAAAAAIFAAAAC2N1clByaWNlWDE4BQAAAAx1c2VyUHJpY2VYMTgFAAAAB3NjYWxlMTgFAAAAC2N1clByaWNlWDE4BAAAABRzbGlwcGFnZVRvbGVyYW5jZVgxOAkBAAAABXRvWDE4AAAAAgUAAAARc2xpcHBhZ2VUb2xlcmFuY2UFAAAABnNjYWxlOAMDCQEAAAACIT0AAAACBQAAAAtjdXJQcmljZVgxOAUAAAAKemVyb0JpZ0ludAkAAT8AAAACBQAAAAtzbGlwcGFnZVgxOAUAAAAUc2xpcHBhZ2VUb2xlcmFuY2VYMTgHCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAD1ByaWNlIHNsaXBwYWdlIAkAAaYAAAABBQAAAAtzbGlwcGFnZVgxOAIAAAAeIGV4Y2VlZGVkIHRoZSBwYXNzZWQgbGltaXQgb2YgCQABpgAAAAEFAAAAFHNsaXBwYWdlVG9sZXJhbmNlWDE4BAAAAA1scEVtaXNzaW9uWDE4CQEAAAAFdG9YMTgAAAACBQAAAApscEVtaXNzaW9uBQAAAAZzY2FsZTgEAAAACnByVmlhQW1YMTgJAAE8AAAAAwUAAAAPaW5BbUFzc2V0QW10WDE4BQAAAAtjdXJQcmljZVgxOAUAAAAHc2NhbGUxOAQAAAAKYW1WaWFQclgxOAkAATwAAAADBQAAAA9pblByQXNzZXRBbXRYMTgFAAAAB3NjYWxlMTgFAAAAC2N1clByaWNlWDE4BAAAAAxleHBlY3RlZEFtdHMDCQABPwAAAAIFAAAACnByVmlhQW1YMTgFAAAAD2luUHJBc3NldEFtdFgxOAkABRQAAAACBQAAAAphbVZpYVByWDE4BQAAAA9pblByQXNzZXRBbXRYMTgJAAUUAAAAAgUAAAAPaW5BbUFzc2V0QW10WDE4BQAAAApwclZpYUFtWDE4BAAAABFleHBBbXRBc3NldEFtdFgxOAgFAAAADGV4cGVjdGVkQW10cwAAAAJfMQQAAAATZXhwUHJpY2VBc3NldEFtdFgxOAgFAAAADGV4cGVjdGVkQW10cwAAAAJfMgQAAAAIbHBBbXRYMTgJAAE8AAAAAwUAAAANbHBFbWlzc2lvblgxOAUAAAATZXhwUHJpY2VBc3NldEFtdFgxOAUAAAAMcHJCYWxhbmNlWDE4CQAFFwAAAAUJAQAAAAdmcm9tWDE4AAAAAgUAAAAIbHBBbXRYMTgFAAAABnNjYWxlOAkBAAAAB2Zyb21YMTgAAAACBQAAABFleHBBbXRBc3NldEFtdFgxOAUAAAALYW10QXNzZXREY20JAQAAAAdmcm9tWDE4AAAAAgUAAAATZXhwUHJpY2VBc3NldEFtdFgxOAUAAAANcHJpY2VBc3NldERjbQUAAAALY3VyUHJpY2VYMTgFAAAAC3NsaXBwYWdlWDE4BAAAAAljYWxjTHBBbXQIBQAAAANyZXMAAAACXzEEAAAADmNhbGNBbUFzc2V0UG10CAUAAAADcmVzAAAAAl8yBAAAAA5jYWxjUHJBc3NldFBtdAgFAAAAA3JlcwAAAAJfMwQAAAAIY3VyUHJpY2UJAQAAAAdmcm9tWDE4AAAAAggFAAAAA3JlcwAAAAJfNAUAAAAGc2NhbGU4BAAAAAxzbGlwcGFnZUNhbGMJAQAAAAdmcm9tWDE4AAAAAggFAAAAA3JlcwAAAAJfNQUAAAAGc2NhbGU4AwkAAGcAAAACAAAAAAAAAAAABQAAAAljYWxjTHBBbXQJAAACAAAAAQIAAAA2SW52YWxpZCBjYWxjdWxhdGlvbnMuIExQIGNhbGN1bGF0ZWQgaXMgbGVzcyB0aGFuIHplcm8uBAAAAAllbWl0THBBbXQDCQEAAAABIQAAAAEFAAAABmVtaXRMcAAAAAAAAAAAAAUAAAAJY2FsY0xwQW10BAAAAAZhbURpZmYJAABlAAAAAgUAAAAMaW5BbUFzc2V0QW10BQAAAA5jYWxjQW1Bc3NldFBtdAQAAAAGcHJEaWZmCQAAZQAAAAIFAAAADGluUHJBc3NldEFtdAUAAAAOY2FsY1ByQXNzZXRQbXQEAAAAC2NvbW1vblN0YXRlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAMa2V5UHJpY2VMYXN0AAAAAAUAAAAIY3VyUHJpY2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA9rZXlQcmljZUhpc3RvcnkAAAACBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAAhjdXJQcmljZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAASa2V5UHV0QWN0aW9uQnlVc2VyAAAAAgUAAAALdXNlckFkZHJlc3MFAAAABnR4SWQ1OAkBAAAAEWRhdGFQdXRBY3Rpb25JbmZvAAAACgUAAAAOY2FsY0FtQXNzZXRQbXQFAAAADmNhbGNQckFzc2V0UG10BQAAAAllbWl0THBBbXQFAAAACGN1clByaWNlBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAMc2xpcHBhZ2VDYWxjBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAAZhbURpZmYFAAAABnByRGlmZgUAAAADbmlsCQAFHwAAAA0FAAAACWNhbGNMcEFtdAUAAAAJZW1pdExwQW10BQAAAAhjdXJQcmljZQUAAAAJYW1CYWxhbmNlBQAAAAlwckJhbGFuY2UFAAAACmxwRW1pc3Npb24FAAAACWxwQXNzZXRJZAUAAAAKcG9vbFN0YXR1cwUAAAALY29tbW9uU3RhdGUFAAAABmFtRGlmZgUAAAAGcHJEaWZmBQAAAAtpbkFtQXNzZXRJZAUAAAALaW5QckFzc2V0SWQBAAAAG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZAAAAAEAAAAFb3JkZXIEAAAAA2NmZwkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAAphbXRBc3NldElkCQABkQAAAAIFAAAAA2NmZwUAAAANaWR4QW10QXNzZXRJZAQAAAAMcHJpY2VBc3NldElkCQABkQAAAAIFAAAAA2NmZwUAAAAPaWR4UHJpY2VBc3NldElkBAAAAApwb29sU3RhdHVzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAA1pZHhQb29sU3RhdHVzBAAAAAthbXRBc3NldERjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAOaWR4QW10QXNzZXREY20EAAAADXByaWNlQXNzZXREY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAEGlkeFByaWNlQXNzZXREY20EAAAAEmFjY0FtdEFzc2V0QmFsYW5jZQkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAphbXRBc3NldElkBAAAABRhY2NQcmljZUFzc2V0QmFsYW5jZQkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAxwcmljZUFzc2V0SWQEAAAAC2N1clByaWNlWDE4AwkAAAAAAAACCAUAAAAFb3JkZXIAAAAJb3JkZXJUeXBlBQAAAANCdXkJAQAAABBwcml2YXRlQ2FsY1ByaWNlAAAABAUAAAALYW10QXNzZXREY20FAAAADXByaWNlQXNzZXREY20JAABkAAAAAgUAAAASYWNjQW10QXNzZXRCYWxhbmNlCAUAAAAFb3JkZXIAAAAGYW1vdW50BQAAABRhY2NQcmljZUFzc2V0QmFsYW5jZQkBAAAAEHByaXZhdGVDYWxjUHJpY2UAAAAEBQAAAAthbXRBc3NldERjbQUAAAANcHJpY2VBc3NldERjbQkAAGUAAAACBQAAABJhY2NBbXRBc3NldEJhbGFuY2UIBQAAAAVvcmRlcgAAAAZhbW91bnQFAAAAFGFjY1ByaWNlQXNzZXRCYWxhbmNlBAAAAAhjdXJQcmljZQkBAAAAB2Zyb21YMTgAAAACBQAAAAtjdXJQcmljZVgxOAUAAAAGc2NhbGU4AwMDCQEAAAAQaXNHbG9iYWxTaHV0ZG93bgAAAAAGCQAAAAAAAAIFAAAACnBvb2xTdGF0dXMFAAAAE1Bvb2xNYXRjaGVyRGlzYWJsZWQGCQAAAAAAAAIFAAAACnBvb2xTdGF0dXMFAAAADFBvb2xTaHV0ZG93bgkAAAIAAAABAgAAABxFeGNoYW5nZSBvcGVyYXRpb25zIGRpc2FibGVkBAAAAA1vcmRlckFtdEFzc2V0CAgFAAAABW9yZGVyAAAACWFzc2V0UGFpcgAAAAthbW91bnRBc3NldAQAAAAQb3JkZXJBbXRBc3NldFN0cgMJAAAAAAAAAgUAAAANb3JkZXJBbXRBc3NldAUAAAAEdW5pdAIAAAAFV0FWRVMJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQUAAAANb3JkZXJBbXRBc3NldAQAAAAPb3JkZXJQcmljZUFzc2V0CAgFAAAABW9yZGVyAAAACWFzc2V0UGFpcgAAAApwcmljZUFzc2V0BAAAABJvcmRlclByaWNlQXNzZXRTdHIDCQAAAAAAAAIFAAAAD29yZGVyUHJpY2VBc3NldAUAAAAEdW5pdAIAAAAFV0FWRVMJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQUAAAAPb3JkZXJQcmljZUFzc2V0AwMJAQAAAAIhPQAAAAIFAAAAEG9yZGVyQW10QXNzZXRTdHIFAAAACmFtdEFzc2V0SWQGCQEAAAACIT0AAAACBQAAABJvcmRlclByaWNlQXNzZXRTdHIFAAAADHByaWNlQXNzZXRJZAkAAAIAAAABAgAAABNXcm9uZyBvcmRlciBhc3NldHMuBAAAAApvcmRlclByaWNlCAUAAAAFb3JkZXIAAAAFcHJpY2UEAAAACHByaWNlRGNtCQAAawAAAAMFAAAABnNjYWxlOAUAAAANcHJpY2VBc3NldERjbQUAAAALYW10QXNzZXREY20EAAAAEGNh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dWJsaWNLZXkDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAAScGVybWlzc2lvbnMgZGVuaWVkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlGYWN0b3J5Q29udHJhY3QAAAAABQAAAA9mYWN0b3J5Q29udHJhY3QJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAE2tleU1hbmFnZXJQdWJsaWNLZXkAAAAABQAAABBtYW5hZ2VyUHVibGljS2V5BQAAAANuaWwAAAABaQEAAAADcHV0AAAAAgAAABFzbGlwcGFnZVRvbGVyYW5jZQAAAA9zaG91bGRBdXRvU3Rha2UEAAAACmZhY3RvcnlDZmcJAQAAABBnZXRGYWN0b3J5Q29uZmlnAAAAAAQAAAAPc3Rha2luZ0NvbnRyYWN0CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkAAZEAAAACBQAAAApmYWN0b3J5Q2ZnBQAAABlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0AgAAACFFcnJvci4gSW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcy4EAAAAEHNsaXBwYWdlQ29udHJhY3QJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABCQABkQAAAAIFAAAACmZhY3RvcnlDZmcFAAAAGmlkeEZhY3RvcnlTbGlwcGFnZUNvbnRyYWN0AgAAACtFcnJvci4gSW5jb3JyZWN0IHNsaXBwYWdlIGNvbnRyYWN0IGFkZHJlc3MuAwkAAGYAAAACAAAAAAAAAAAABQAAABFzbGlwcGFnZVRvbGVyYW5jZQkAAAIAAAABAgAAACBJbnZhbGlkIHNsaXBwYWdlVG9sZXJhbmNlIHBhc3NlZAQAAAAGZXN0UHV0CQEAAAAJY29tbW9uUHV0AAAAAwUAAAABaQUAAAARc2xpcHBhZ2VUb2xlcmFuY2UGBAAAAAllbWl0THBBbXQIBQAAAAZlc3RQdXQAAAACXzIEAAAACWxwQXNzZXRJZAgFAAAABmVzdFB1dAAAAAJfNwQAAAAFc3RhdGUIBQAAAAZlc3RQdXQAAAACXzkEAAAABmFtRGlmZggFAAAA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b2xDb25maWcAAAAABAAAAAlscEFzc2V0SWQJAAJZAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAEGlkeFBvb2xMUEFzc2V0SWQEAAAADGFtQXNzZXRJZFN0cgkAAZEAAAACBQAAAANjZmcFAAAADWlkeEFtdEFzc2V0SWQEAAAACWFtQXNzZXRJZAkAAlkAAAABBQAAAAxhbUFzc2V0SWRTdHIEAAAADHByQXNzZXRJZFN0cgkAAZEAAAACBQAAAANjZmcFAAAAD2lkeFByaWNlQXNzZXRJZAQAAAAJcHJBc3NldElkCQACWQAAAAEFAAAADHByQXNzZXRJZFN0cgQAAAALYW10QXNzZXREY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAADmlkeEFtdEFzc2V0RGNtBAAAAA1wcmljZUFzc2V0RGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAABBpZHhQcmljZUFzc2V0RGNtBAAAAApwb29sU3RhdHVzCQABkQAAAAIFAAAAA2NmZwUAAAANaWR4UG9vbFN0YXR1cwQAAAANcG9vbExQQmFsYW5jZQgJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAA+wAAAABBQAAAAlscEFzc2V0SWQJAAEsAAAAAgkAASwAAAACAgAAAAZBc3NldCAJAAJYAAAAAQUAAAAJbHBBc3NldElkAgAAAA4gZG9lc24ndCBleGlzdAAAAAhxdWFudGl0eQQAAAASYWNjQW10QXNzZXRCYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAADGFtQXNzZXRJZFN0cgQAAAAUYWNjUHJpY2VBc3NldEJhbGFuY2UJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAMcHJBc3NldElkU3RyBAAAAA5hbXRBc3NldEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAASYWNjQW10QXNzZXRCYWxhbmNlBQAAAAthbXRBc3NldERjbQQAAAAQcHJpY2VBc3NldEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAUYWNjUHJpY2VBc3NldEJhbGFuY2UFAAAADXByaWNlQXNzZXREY20EAAAAC2N1clByaWNlWDE4AwkAAAAAAAACBQAAAA1wb29sTFBCYWxhbmNlAAAAAAAAAAAABQAAAAp6ZXJvQmlnSW50CQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgUAAAAQcHJpY2VBc3NldEFtdFgxOAUAAAAOYW10QXNzZXRBbXRYMTgEAAAAD2luQW1Bc3NldEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAMaW5BbUFzc2V0QW10BQAAAAthbXRBc3NldERjbQQAAAAPaW5QckFzc2V0QW10WDE4CQABPAAAAAMFAAAAD2luQW1Bc3NldEFtdFgxOAUAAAALY3VyUHJpY2VYMTgFAAAAB3NjYWxlMTgEAAAADGluUHJBc3NldEFtdAkBAAAAB2Zyb21YMTgAAAACBQAAAA9pblByQXNzZXRBbXRYMTgFAAAADXByaWNlQXNzZXREY20EAAAABmVzdFB1dAkBAAAAFGVzdGltYXRlUHV0T3BlcmF0aW9uAAAACQIAAAAAAAAAAAAAB6EgBQAAAAxpbkFtQXNzZXRBbXQFAAAACWFtQXNzZXRJZAUAAAAMaW5QckFzc2V0QW10BQAAAAlwckFzc2V0SWQCAAAAAAYHBAAAAAljYWxjTHBBbXQIBQAAAAZlc3RQdXQAAAACXzEEAAAADGN1clByaWNlQ2FsYwgFAAAABmVzdFB1dAAAAAJfMwQAAAAJYW1CYWxhbmNlCAUAAAAGZXN0UHV0AAAAAl80BAAAAAlwckJhbGFuY2UIBQAAAAZlc3RQdXQAAAACXzUEAAAACmxwRW1pc3Npb24IBQAAAAZlc3RQdXQAAAACXzYJAAUUAAAAAgUAAAADbmlsCQAEuQAAAAIJAARMAAAAAgIAAAAQJWQlZCVkJWQlZCVkJWQlZAkABEwAAAACCQABpAAAAAEFAAAACWNhbGNMcEFtdAkABEwAAAACCQABpAAAAAEJAQAAAAdmcm9tWDE4AAAAAgUAAAALY3VyUHJpY2VYMTgFAAAABnNjYWxlOAkABEwAAAACCQABpAAAAAEFAAAACWFtQmFsYW5jZQkABEwAAAACCQABpAAAAAEFAAAACXByQmFsYW5jZQkABEwAAAACCQABpAAAAAEFAAAACmxwRW1pc3Npb24JAARMAAAAAgUAAAAKcG9vbFN0YXR1cwkABEwAAAACCQABpAAAAAEFAAAADGluQW1Bc3NldEFtdAkABEwAAAACCQABpAAAAAEFAAAADGluUHJBc3NldEFtdAUAAAADbmlsBQAAAANTRVAAAAABaQEAAAAfZXZhbHVhdGVQdXRCeVByaWNlQXNzZXRSRUFET05MWQAAAAEAAAAMaW5QckFzc2V0QW10BAAAAANjZmcJAQAAAA1nZXRQb29sQ29uZmlnAAAAAAQAAAAJbHBBc3NldElkCQACWQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAABBpZHhQb29sTFBBc3NldElkBAAAAAxhbUFzc2V0SWRTdHIJAAGRAAAAAgUAAAADY2ZnBQAAAA1pZHhBbXRBc3NldElkBAAAAAlhbUFzc2V0SWQJAAJZAAAAAQUAAAAMYW1Bc3NldElkU3RyBAAAAAxwckFzc2V0SWRTdHIJAAGRAAAAAgUAAAADY2ZnBQAAAA9pZHhQcmljZUFzc2V0SWQEAAAACXByQXNzZXRJZAkAAlkAAAABBQAAAAxwckFzc2V0SWRTdHIEAAAAC2FtdEFzc2V0RGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAA5pZHhBbXRBc3NldERjbQQAAAANcHJpY2VBc3NldERjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAQaWR4UHJpY2VBc3NldERjbQQAAAAKcG9vbFN0YXR1cwkAAZEAAAACBQAAAANjZmcFAAAADWlkeFBvb2xTdGF0dXMEAAAADXBvb2xMUEJhbGFuY2UICQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQUAAAAJbHBBc3NldElkCQABLAAAAAIJAAEsAAAAAgIAAAAGQXNzZXQgCQACWAAAAAEFAAAACWxwQXNzZXRJZAIAAAAOIGRvZXNuJ3QgZXhpc3QAAAAIcXVhbnRpdHkEAAAADGFtQmFsYW5jZVJhdwkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAxhbUFzc2V0SWRTdHIEAAAADHByQmFsYW5jZVJhdwkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAxwckFzc2V0SWRTdHIEAAAAD2FtQmFsYW5jZVJhd1gxOAkBAAAABXRvWDE4AAAAAgUAAAAMYW1CYWxhbmNlUmF3BQAAAAthbXRBc3NldERjbQQAAAAPcHJCYWxhbmNlUmF3WDE4CQEAAAAFdG9YMTgAAAACBQAAAAxwckJhbGFuY2VSYXcFAAAADXByaWNlQXNzZXREY20EAAAAC2N1clByaWNlWDE4AwkAAAAAAAACBQAAAA1wb29sTFBCYWxhbmNlAAAAAAAAAAAABQAAAAp6ZXJvQmlnSW50CQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgUAAAAPcHJCYWxhbmNlUmF3WDE4BQAAAA9hbUJhbGFuY2VSYXdYMTgEAAAAD2luUHJBc3NldEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAMaW5QckFzc2V0QW10BQAAAA1wcmljZUFzc2V0RGNtBAAAAA9pbkFtQXNzZXRBbXRYMTgJAAE8AAAAAwUAAAAPaW5QckFzc2V0QW10WDE4BQAAAAdzY2FsZTE4BQAAAAtjdXJQcmljZVgxOAQAAAAMaW5BbUFzc2V0QW10CQEAAAAHZnJvbVgxOAAAAAIFAAAAD2luQW1Bc3NldEFtdFgxOAUAAAALYW10QXNzZXREY20EAAAABmVzdFB1dAkBAAAAFGVzdGltYXRlUHV0T3BlcmF0aW9uAAAACQIAAAAAAAAAAAAAB6EgBQAAAAxpbkFtQXNzZXRBbXQFAAAACWFtQXNzZXRJZAUAAAAMaW5QckFzc2V0QW10BQAAAAlwckFzc2V0SWQCAAAAAAYHBAAAAAljYWxjTHBBbXQIBQAAAAZlc3RQdXQAAAACXzEEAAAADGN1clByaWNlQ2FsYwgFAAAABmVzdFB1dAAAAAJfMwQAAAAJYW1CYWxhbmNlCAUAAAAGZXN0UHV0AAAAAl80BAAAAAlwckJhbGFuY2UIBQAAAAZlc3RQdXQAAAACXzUEAAAACmxwRW1pc3Npb24IBQAAAAZlc3RQdXQAAAACXzYJAAUUAAAAAgUAAAADbmlsCQAEuQAAAAIJAARMAAAAAgIAAAAQJWQlZCVkJWQlZCVkJWQlZAkABEwAAAACCQABpAAAAAEFAAAACWNhbGNMcEFtdAkABEwAAAACCQABpAAAAAEJAQAAAAdmcm9tWDE4AAAAAgUAAAALY3VyUHJpY2VYMTgFAAAABnNjYWxlOAkABEwAAAACCQABpAAAAAEFAAAACWFtQmFsYW5jZQkABEwAAAACCQABpAAAAAEFAAAACXByQmFsYW5jZQkABEwAAAACCQABpAAAAAEFAAAACmxwRW1pc3Npb24JAARMAAAAAgUAAAAKcG9vbFN0YXR1cwkABEwAAAACCQABpAAAAAEFAAAADGluQW1Bc3NldEFtdAkABEwAAAACCQABpAAAAAEFAAAADGluUHJBc3NldEFtdAUAAAADbmlsBQAAAANTRVAAAAABaQEAAAATZXZhbHVhdGVHZXRSRUFET05MWQAAAAIAAAAQcGF5bWVudExwQXNzZXRJZAAAAAxwYXltZW50THBBbXQEAAAAA3JlcwkBAAAAFGVzdGltYXRlR2V0T3BlcmF0aW9uAAAABAIAAAAABQAAABBwYXltZW50THBBc3NldElkBQAAAAxwYXltZW50THBBbXQFAAAABHRoaXMEAAAACG91dEFtQW10CAUAAAADcmVzAAAAAl8xBAAAAAhvdXRQckFtdAgFAAAAA3JlcwAAAAJfMgQAAAAJYW1CYWxhbmNlCAUAAAADcmVzAAAAAl81BAAAAAlwckJhbGFuY2UIBQAAAANyZXMAAAACXzYEAAAACmxwRW1pc3Npb24IBQAAAANyZXMAAAACXzcEAAAACGN1clByaWNlCAUAAAADcmVzAAAAAl84BAAAAApwb29sU3RhdHVzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEIBQAAAANyZXMAAAACXzkJAAUUAAAAAgUAAAADbmlsCQAEuQAAAAIJAARMAAAAAgIAAAAOJWQlZCVkJWQlZCVkJWQJAARMAAAAAgkAAaQAAAABBQAAAAhvdXRBbUFtdAkABEwAAAACCQABpAAAAAEFAAAACG91dFByQW10CQAETAAAAAIJAAGkAAAAAQUAAAAJYW1CYWxhbmNlCQAETAAAAAIJAAGkAAAAAQUAAAAJcHJCYWxhbmNlCQAETAAAAAIJAAGkAAAAAQUAAAAKbHBFbWlzc2lvbgkABEwAAAACCQABpgAAAAEFAAAACGN1clByaWNlCQAETAAAAAIJAAGkAAAAAQUAAAAKcG9vbFN0YXR1cwUAAAADbmlsBQAAAANTRVAAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAFT3JkZXIEAAAABW9yZGVyBQAAAAckbWF0Y2gwBAAAAAptYXRjaGVyUHViCQEAAAATZ2V0TWF0Y2hlclB1Yk9yRmFpbAAAAAAEAAAACm9yZGVyVmFsaWQJAQAAABt2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQAAAABBQAAAAVvcmRlcgQAAAALc2VuZGVyVmFsaWQJAAH0AAAAAwgFAAAABW9yZGVyAAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAAFb3JkZXIAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAAFb3JkZXIAAAAPc2VuZGVyUHVibGljS2V5BAAAAAxtYXRjaGVyVmFsaWQJAAH0AAAAAwgFAAAABW9yZGVyAAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAAFb3JkZXIAAAAGcHJvb2ZzAAAAAAAAAAABBQAAAAptYXRjaGVyUHViAwMDBQAAAApvcmRlclZhbGlkBQAAAAtzZW5kZXJWYWxpZAcFAAAADG1hdGNoZXJWYWxpZAcGCQEAAAAPdGhyb3dPcmRlckVycm9yAAAAAwUAAAAKb3JkZXJWYWxpZAUAAAALc2VuZGVyVmFsaWQFAAAADG1hdGNoZXJWYWxpZAQAAAANbWFuYWdlclB1YmxpYwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAR0aGlzCQEAAAATa2V5TWFuYWdlclB1YmxpY0tleQAAAAAFAAAABUVNUFRZAwkAAAAAAAACBQAAAA1tYW5hZ2VyUHVibGljBQAAAAVFTVBUWQkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACQACWQAAAAEFAAAADW1hbmFnZXJQdWJsaWNFIpGR", "chainId": 84, "height": 1767368, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HwMZfHfFD6b5TxojgFv4XUMRnYoi79TYhSs5ChZznbFs Next: 5bnYChNkkyrNNQ8Xif5fwjWDz7zipKkJebdmG5fcsLo3 Diff:
OldNewDifferences
9797 func Y () = "%s__factoryConfig"
9898
9999
100-func Z (aa) = (("%s%s%s__" + aa) + "__mappings__poolContract2LpAsset")
100+func Z () = "%s%s__matcher__publicKey"
101101
102102
103-func ab (ac,ad) = (((("%d%d%s__" + ac) + "__") + ad) + "__config")
103+func aa (ab) = (("%s%s%s__" + ab) + "__mappings__poolContract2LpAsset")
104104
105105
106-func ae (af) = ("%s%s%s__mappings__baseAsset2internalId__" + af)
106+func ac (ad,ae) = (((("%d%d%s__" + ad) + "__") + ae) + "__config")
107107
108108
109-func ag () = "%s__shutdown"
109+func af (ag) = ("%s%s%s__mappings__baseAsset2internalId__" + ag)
110110
111111
112-func ah (ai) = ("%s%s__poolWeight__" + ai)
112+func ah () = "%s__shutdown"
113113
114114
115-func aj (ak,al) = valueOrErrorMessage(getString(ak, al), makeString(["mandatory ", toString(ak), ".", al, " is not defined"], ""))
115+func ai (aj) = ("%s%s__poolWeight__" + aj)
116116
117117
118-func am (ak,al) = valueOrErrorMessage(getInteger(ak, al), makeString(["mandatory ", toString(ak), ".", al, " is not defined"], ""))
118+func ak (al,am,an) = throw(((((("order validation failed: orderValid=" + toString(al)) + " senderValid=") + toString(am)) + " matcherValid=") + toString(an)))
119119
120120
121-let an = addressFromStringValue(aj(this, L()))
122-
123-func ao () = valueOrElse(getBoolean(an, ag()), false)
121+func ao (ap,aq) = valueOrErrorMessage(getString(ap, aq), makeString(["mandatory ", toString(ap), ".", aq, " is not defined"], ""))
124122
125123
126-func ap () = {
127- let aq = aj(this, V())
128- let ar = aj(this, W())
129- let ad = am(an, ae(ar))
130- let ac = am(an, ae(aq))
131- split(aj(an, ab(toString(ac), toString(ad))), f)
124+func ar (ap,aq) = valueOrErrorMessage(getInteger(ap, aq), makeString(["mandatory ", toString(ap), ".", aq, " is not defined"], ""))
125+
126+
127+let as = addressFromStringValue(ao(this, L()))
128+
129+func at () = valueOrElse(getBoolean(as, ah()), false)
130+
131+
132+func au () = fromBase58String(ao(as, Z()))
133+
134+
135+func av () = {
136+ let aw = ao(this, V())
137+ let ax = ao(this, W())
138+ let ae = ar(as, af(ax))
139+ let ad = ar(as, af(aw))
140+ split(ao(as, ac(toString(ad), toString(ae))), f)
132141 }
133142
134143
135-func as () = split(aj(an, Y()), f)
144+func ay () = split(ao(as, Y()), f)
136145
137146
138-func at (au,av,aw,ax,ay,az,aA,aB,aC,aD) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(au), toString(av), toString(aw), toString(ax), toString(ay), toString(az), toString(aA), toString(aB), toString(aC), toString(aD)], f)
147+func az (aA,aB,aC,aD,aE,aF,aG,aH,aI,aJ) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aA), toString(aB), toString(aC), toString(aD), toString(aE), toString(aF), toString(aG), toString(aH), toString(aI), toString(aJ)], f)
139148
140149
141-func aE (aF,aG,aH,ax,aA,aB) = makeString(["%d%d%d%d%d%d", toString(aF), toString(aG), toString(aH), toString(ax), toString(aA), toString(aB)], f)
150+func aK (aL,aM,aN,aD,aG,aH) = makeString(["%d%d%d%d%d%d", toString(aL), toString(aM), toString(aN), toString(aD), toString(aG), toString(aH)], f)
142151
143152
144-func aI (aJ) = if ((aJ == "WAVES"))
153+func aO (aP) = if ((aP == "WAVES"))
145154 then wavesBalance(this).available
146- else assetBalance(this, fromBase58String(aJ))
155+ else assetBalance(this, fromBase58String(aP))
147156
148157
149-func aK (aL,aM) = fraction(aL, d, aM)
158+func aQ (aR,aS) = fraction(aR, d, aS)
150159
151160
152-func aN (aO,aP,aQ,aR) = {
153- let aS = A(aQ, aO)
154- let aT = A(aR, aP)
155- aK(aT, aS)
161+func aT (aU,aV,aW,aX) = {
162+ let aY = A(aW, aU)
163+ let aZ = A(aX, aV)
164+ aQ(aZ, aY)
156165 }
157166
158167
159-func aU (aQ,aR,aV) = {
160- let aW = ap()
161- let aX = parseIntValue(aW[q])
162- let aY = parseIntValue(aW[r])
163- let aZ = aN(aX, aY, aQ, aR)
164- let aM = A(aQ, aX)
165- let aL = A(aR, aY)
166- let ba = A(aV, b)
167- let bb = aK(aM, ba)
168- let bc = aK(aL, ba)
169-[aZ, bb, bc]
168+func ba (aW,aX,bb) = {
169+ let bc = av()
170+ let bd = parseIntValue(bc[q])
171+ let be = parseIntValue(bc[r])
172+ let bf = aT(bd, be, aW, aX)
173+ let aS = A(aW, bd)
174+ let aR = A(aX, be)
175+ let bg = A(bb, b)
176+ let bh = aQ(aS, bg)
177+ let bi = aQ(aR, bg)
178+[bf, bh, bi]
170179 }
171180
172181
173-func bd (aQ,aR,aV) = {
174- let be = aU(aQ, aR, aV)
175-[D(be[0], b), D(be[1], b), D(be[2], b)]
182+func bj (aW,aX,bb) = {
183+ let bk = ba(aW, aX, bb)
184+[D(bk[0], b), D(bk[1], b), D(bk[2], b)]
176185 }
177186
178187
179-func bf (bg,bh,bi,S) = {
180- let aW = ap()
181- let bj = aW[n]
182- let bk = aW[o]
183- let bl = aW[p]
184- let aO = parseIntValue(aW[q])
185- let aP = parseIntValue(aW[r])
186- let bm = aW[m]
187- let bn = valueOrErrorMessage(assetInfo(fromBase58String(bj)), (("Asset " + bj) + " doesn't exist")).quantity
188- if ((bj != bh))
188+func bl (bm,bn,bo,S) = {
189+ let bc = av()
190+ let bp = bc[n]
191+ let bq = bc[o]
192+ let br = bc[p]
193+ let aU = parseIntValue(bc[q])
194+ let aV = parseIntValue(bc[r])
195+ let bs = bc[m]
196+ let bt = valueOrErrorMessage(assetInfo(fromBase58String(bp)), (("Asset " + bp) + " doesn't exist")).quantity
197+ if ((bp != bn))
189198 then throw("Invalid asset passed.")
190199 else {
191- let bo = aI(bk)
192- let bp = A(bo, aO)
193- let bq = aI(bl)
194- let br = A(bq, aP)
195- let bs = aK(br, bp)
196- let bt = D(bs, b)
197- let bu = A(bi, b)
198- let bv = A(bn, b)
199- let bw = fraction(bp, bu, bv)
200- let bx = fraction(br, bu, bv)
201- let by = D(bw, aO)
202- let bz = D(bx, aP)
203- let bA = if ((bg == ""))
200+ let bu = aO(bq)
201+ let bv = A(bu, aU)
202+ let bw = aO(br)
203+ let bx = A(bw, aV)
204+ let by = aQ(bx, bv)
205+ let bz = D(by, b)
206+ let bA = A(bo, b)
207+ let bB = A(bt, b)
208+ let bC = fraction(bv, bA, bB)
209+ let bD = fraction(bx, bA, bB)
210+ let bE = D(bC, aU)
211+ let bF = D(bD, aV)
212+ let bG = if ((bm == ""))
204213 then nil
205- else [ScriptTransfer(S, by, if ((bk == "WAVES"))
214+ else [ScriptTransfer(S, bE, if ((bq == "WAVES"))
206215 then unit
207- else fromBase58String(bk)), ScriptTransfer(S, bz, if ((bl == "WAVES"))
216+ else fromBase58String(bq)), ScriptTransfer(S, bF, if ((br == "WAVES"))
208217 then unit
209- else fromBase58String(bl)), StringEntry(U(toString(S), bg), aE(by, bz, bi, bt, height, lastBlock.timestamp)), IntegerEntry(N(), bt), IntegerEntry(O(height, lastBlock.timestamp), bt)]
210- $Tuple10(by, bz, bk, bl, bo, bq, bn, bs, bm, bA)
218+ else fromBase58String(br)), StringEntry(U(toString(S), bm), aK(bE, bF, bo, bz, height, lastBlock.timestamp)), IntegerEntry(N(), bz), IntegerEntry(O(height, lastBlock.timestamp), bz)]
219+ $Tuple10(bE, bF, bq, br, bu, bw, bt, by, bs, bG)
211220 }
212221 }
213222
214223
215-func bB (bg,bC,bD,bE,bF,bG,S,bH,bI) = {
216- let aW = ap()
217- let bj = fromBase58String(aW[n])
218- let bJ = aW[o]
219- let bK = aW[p]
220- let bL = aW[s]
221- let bM = aW[t]
222- let aX = parseIntValue(aW[q])
223- let aY = parseIntValue(aW[r])
224- let bm = aW[m]
225- let bn = valueOrErrorMessage(assetInfo(bj), (("Asset " + toBase58String(bj)) + " doesn't exist")).quantity
226- let bN = toBase58String(valueOrElse(bE, fromBase58String("WAVES")))
227- let bO = toBase58String(valueOrElse(bG, fromBase58String("WAVES")))
228- if (if ((bJ != bN))
224+func bH (bm,bI,bJ,bK,bL,bM,S,bN,bO) = {
225+ let bc = av()
226+ let bp = fromBase58String(bc[n])
227+ let bP = bc[o]
228+ let bQ = bc[p]
229+ let bR = bc[s]
230+ let bS = bc[t]
231+ let bd = parseIntValue(bc[q])
232+ let be = parseIntValue(bc[r])
233+ let bs = bc[m]
234+ let bt = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
235+ let bT = toBase58String(valueOrElse(bK, fromBase58String("WAVES")))
236+ let bU = toBase58String(valueOrElse(bM, fromBase58String("WAVES")))
237+ if (if ((bP != bT))
229238 then true
230- else (bK != bO))
239+ else (bQ != bU))
231240 then throw("Invalid amt or price asset passed.")
232241 else {
233- let bo = if (bH)
234- then aI(bJ)
235- else (aI(bJ) - bD)
236- let bq = if (bH)
237- then aI(bK)
238- else (aI(bK) - bF)
239- let bP = A(bD, aX)
240- let bQ = A(bF, aY)
241- let bR = aK(bQ, bP)
242- let bp = A(bo, aX)
243- let br = A(bq, aY)
244- let bS = if ((bn == 0))
242+ let bu = if (bN)
243+ then aO(bP)
244+ else (aO(bP) - bJ)
245+ let bw = if (bN)
246+ then aO(bQ)
247+ else (aO(bQ) - bL)
248+ let bV = A(bJ, bd)
249+ let bW = A(bL, be)
250+ let bX = aQ(bW, bV)
251+ let bv = A(bu, bd)
252+ let bx = A(bw, be)
253+ let bY = if ((bt == 0))
245254 then {
246- let bs = e
247- let bT = e
248- let ba = pow((bP * bQ), 0, toBigInt(5), 1, 0, DOWN)
249- $Tuple5(D(ba, b), D(bP, aX), D(bQ, aY), aK((br + bQ), (bp + bP)), bT)
255+ let by = e
256+ let bZ = e
257+ let bg = pow((bV * bW), 0, toBigInt(5), 1, 0, DOWN)
258+ $Tuple5(D(bg, b), D(bV, bd), D(bW, be), aQ((bx + bW), (bv + bV)), bZ)
250259 }
251260 else {
252- let bs = aK(br, bp)
253- let bT = fraction(K((bs - bR)), d, bs)
254- let bU = A(bC, b)
255- if (if ((bs != e))
256- then (bT > bU)
261+ let by = aQ(bx, bv)
262+ let bZ = fraction(K((by - bX)), d, by)
263+ let ca = A(bI, b)
264+ if (if ((by != e))
265+ then (bZ > ca)
257266 else false)
258- then throw(((("Price slippage " + toString(bT)) + " exceeded the passed limit of ") + toString(bU)))
267+ then throw(((("Price slippage " + toString(bZ)) + " exceeded the passed limit of ") + toString(ca)))
259268 else {
260- let bv = A(bn, b)
261- let bV = fraction(bP, bs, d)
262- let bW = fraction(bQ, d, bs)
263- let bX = if ((bV > bQ))
264- then $Tuple2(bW, bQ)
265- else $Tuple2(bP, bV)
266- let bY = bX._1
267- let bZ = bX._2
268- let ba = fraction(bv, bZ, br)
269- $Tuple5(D(ba, b), D(bY, aX), D(bZ, aY), bs, bT)
269+ let bB = A(bt, b)
270+ let cb = fraction(bV, by, d)
271+ let cc = fraction(bW, d, by)
272+ let cd = if ((cb > bW))
273+ then $Tuple2(cc, bW)
274+ else $Tuple2(bV, cb)
275+ let ce = cd._1
276+ let cf = cd._2
277+ let bg = fraction(bB, cf, bx)
278+ $Tuple5(D(bg, b), D(ce, bd), D(cf, be), by, bZ)
270279 }
271280 }
272- let ca = bS._1
273- let cb = bS._2
274- let cc = bS._3
275- let bt = D(bS._4, b)
276- let cd = D(bS._5, b)
277- if ((0 >= ca))
281+ let cg = bY._1
282+ let ch = bY._2
283+ let ci = bY._3
284+ let bz = D(bY._4, b)
285+ let cj = D(bY._5, b)
286+ if ((0 >= cg))
278287 then throw("Invalid calculations. LP calculated is less than zero.")
279288 else {
280- let ce = if (!(bI))
289+ let ck = if (!(bO))
281290 then 0
282- else ca
283- let cf = (bD - cb)
284- let cg = (bF - cc)
285- let ch = [IntegerEntry(N(), bt), IntegerEntry(O(height, lastBlock.timestamp), bt), StringEntry(R(S, bg), at(cb, cc, ce, bt, bC, cd, height, lastBlock.timestamp, cf, cg))]
286- $Tuple13(ca, ce, bt, bo, bq, bn, bj, bm, ch, cf, cg, bE, bG)
291+ else cg
292+ let cl = (bJ - ch)
293+ let cm = (bL - ci)
294+ let cn = [IntegerEntry(N(), bz), IntegerEntry(O(height, lastBlock.timestamp), bz), StringEntry(R(S, bm), az(ch, ci, ck, bz, bI, cj, height, lastBlock.timestamp, cl, cm))]
295+ $Tuple13(cg, ck, bz, bu, bw, bt, bp, bs, cn, cl, cm, bK, bM)
287296 }
288297 }
289298 }
290299
291300
292-func ci (cj) = {
293- let aW = ap()
294- let ck = aW[o]
295- let cl = aW[p]
296- let bm = parseIntValue(aW[m])
297- let aX = parseIntValue(aW[q])
298- let aY = parseIntValue(aW[r])
299- let cm = aI(ck)
300- let cn = aI(cl)
301- let bs = if ((cj.orderType == Buy))
302- then aN(aX, aY, (cm + cj.amount), cn)
303- else aN(aX, aY, (cm - cj.amount), cn)
304- let bt = D(bs, b)
305- if (if (if (ao())
301+func co (cp) = {
302+ let bc = av()
303+ let cq = bc[o]
304+ let cr = bc[p]
305+ let bs = parseIntValue(bc[m])
306+ let bd = parseIntValue(bc[q])
307+ let be = parseIntValue(bc[r])
308+ let cs = aO(cq)
309+ let ct = aO(cr)
310+ let by = if ((cp.orderType == Buy))
311+ then aT(bd, be, (cs + cp.amount), ct)
312+ else aT(bd, be, (cs - cp.amount), ct)
313+ let bz = D(by, b)
314+ if (if (if (at())
306315 then true
307- else (bm == j))
316+ else (bs == j))
308317 then true
309- else (bm == k))
318+ else (bs == k))
310319 then throw("Exchange operations disabled")
311320 else {
312- let co = cj.assetPair.amountAsset
313- let cp = if ((co == unit))
321+ let cu = cp.assetPair.amountAsset
322+ let cv = if ((cu == unit))
314323 then "WAVES"
315- else toBase58String(value(co))
316- let cq = cj.assetPair.priceAsset
317- let cr = if ((cq == unit))
324+ else toBase58String(value(cu))
325+ let cw = cp.assetPair.priceAsset
326+ let cx = if ((cw == unit))
318327 then "WAVES"
319- else toBase58String(value(cq))
320- if (if ((cp != ck))
328+ else toBase58String(value(cw))
329+ if (if ((cv != cq))
321330 then true
322- else (cr != cl))
331+ else (cx != cr))
323332 then throw("Wrong order assets.")
324333 else {
325- let cs = cj.price
326- let ct = fraction(b, aY, aX)
327- let cu = G(cs, b, ct)
328- let cv = if ((cj.orderType == Buy))
329- then (bt >= cu)
330- else (cu >= bt)
334+ let cy = cp.price
335+ let cz = fraction(b, be, bd)
336+ let cA = G(cy, b, cz)
337+ let cB = if ((cp.orderType == Buy))
338+ then (bz >= cA)
339+ else (cA >= bz)
331340 true
332341 }
333342 }
334343 }
335344
336345
337-func cw (cx) = if ((size(cx.payments) != 1))
346+func cC (cD) = if ((size(cD.payments) != 1))
338347 then throw("exactly 1 payment is expected")
339348 else {
340- let cy = value(cx.payments[0])
341- let bh = value(cy.assetId)
342- let cz = cy.amount
343- let bS = bf(toBase58String(cx.transactionId), toBase58String(bh), cz, cx.caller)
344- let by = bS._1
345- let bz = bS._2
346- let bm = parseIntValue(bS._9)
347- let bA = bS._10
348- if (if (ao())
349+ let cE = value(cD.payments[0])
350+ let bn = value(cE.assetId)
351+ let cF = cE.amount
352+ let bY = bl(toBase58String(cD.transactionId), toBase58String(bn), cF, cD.caller)
353+ let bE = bY._1
354+ let bF = bY._2
355+ let bs = parseIntValue(bY._9)
356+ let bG = bY._10
357+ if (if (at())
349358 then true
350- else (bm == k))
351- then throw(("Get operation is blocked by admin. Status = " + toString(bm)))
352- else $Tuple5(by, bz, cz, bh, bA)
359+ else (bs == k))
360+ then throw(("Get operation is blocked by admin. Status = " + toString(bs)))
361+ else $Tuple5(bE, bF, cF, bn, bG)
353362 }
354363
355364
356-func cA (cx,bC,bI) = if ((size(cx.payments) != 2))
365+func cG (cD,bI,bO) = if ((size(cD.payments) != 2))
357366 then throw("exactly 2 payments are expected")
358367 else {
359- let cB = value(cx.payments[0])
360- let cC = value(cx.payments[1])
361- let cD = bB(toBase58String(cx.transactionId), bC, cB.amount, cB.assetId, cC.amount, cC.assetId, toString(cx.caller), false, bI)
362- let bm = parseIntValue(cD._8)
363- if (if (if (ao())
368+ let cH = value(cD.payments[0])
369+ let cI = value(cD.payments[1])
370+ let cJ = bH(toBase58String(cD.transactionId), bI, cH.amount, cH.assetId, cI.amount, cI.assetId, toString(cD.caller), false, bO)
371+ let bs = parseIntValue(cJ._8)
372+ if (if (if (at())
364373 then true
365- else (bm == i))
374+ else (bs == i))
366375 then true
367- else (bm == k))
368- then throw(("Put operation is blocked by admin. Status = " + toString(bm)))
369- else cD
376+ else (bs == k))
377+ then throw(("Put operation is blocked by admin. Status = " + toString(bs)))
378+ else cJ
370379 }
371380
372381
373-@Callable(cx)
374-func constructor (an,cE) = if ((cx.caller != this))
382+@Callable(cD)
383+func constructor (as,cK) = if ((cD.caller != this))
375384 then throw("permissions denied")
376- else [StringEntry(L(), an), StringEntry(M(), cE)]
385+ else [StringEntry(L(), as), StringEntry(M(), cK)]
377386
378387
379388
380-@Callable(cx)
381-func put (bC,cF) = {
382- let cG = as()
383- let cH = valueOrErrorMessage(addressFromString(cG[y]), "Error. Incorrect staking address.")
384- let cI = valueOrErrorMessage(addressFromString(cG[z]), "Error. Incorrect slippage contract address.")
385- if ((0 > bC))
389+@Callable(cD)
390+func put (bI,cL) = {
391+ let cM = ay()
392+ let cN = valueOrErrorMessage(addressFromString(cM[y]), "Error. Incorrect staking address.")
393+ let cO = valueOrErrorMessage(addressFromString(cM[z]), "Error. Incorrect slippage contract address.")
394+ if ((0 > bI))
386395 then throw("Invalid slippageTolerance passed")
387396 else {
388- let cD = cA(cx, bC, true)
389- let ce = cD._2
390- let bj = cD._7
391- let bA = cD._9
392- let cf = cD._10
393- let cg = cD._11
394- let cJ = cD._12
395- let cK = cD._13
396- let cL = invoke(an, "emit", [ce], nil)
397- if ((cL == cL))
397+ let cJ = cG(cD, bI, true)
398+ let ck = cJ._2
399+ let bp = cJ._7
400+ let bG = cJ._9
401+ let cl = cJ._10
402+ let cm = cJ._11
403+ let cP = cJ._12
404+ let cQ = cJ._13
405+ let cR = invoke(as, "emit", [ck], nil)
406+ if ((cR == cR))
398407 then {
399- let cM = if ((cf > 0))
400- then invoke(cI, "put", nil, [AttachedPayment(cJ, cf)])
408+ let cS = if ((cl > 0))
409+ then invoke(cO, "put", nil, [AttachedPayment(cP, cl)])
401410 else nil
402- if ((cM == cM))
411+ if ((cS == cS))
403412 then {
404- let cN = if ((cg > 0))
405- then invoke(cI, "put", nil, [AttachedPayment(cK, cg)])
413+ let cT = if ((cm > 0))
414+ then invoke(cO, "put", nil, [AttachedPayment(cQ, cm)])
406415 else nil
407- if ((cN == cN))
416+ if ((cT == cT))
408417 then {
409- let cO = if (cF)
418+ let cU = if (cL)
410419 then {
411- let cP = invoke(cH, "stake", nil, [AttachedPayment(bj, ce)])
412- if ((cP == cP))
420+ let cV = invoke(cN, "stake", nil, [AttachedPayment(bp, ck)])
421+ if ((cV == cV))
413422 then nil
414423 else throw("Strict value is not equal to itself.")
415424 }
416- else [ScriptTransfer(cx.caller, ce, bj)]
417- (bA ++ cO)
425+ else [ScriptTransfer(cD.caller, ck, bp)]
426+ (bG ++ cU)
418427 }
419428 else throw("Strict value is not equal to itself.")
420429 }
426435
427436
428437
429-@Callable(cx)
430-func putForFree (cQ) = if ((0 > cQ))
438+@Callable(cD)
439+func putForFree (cW) = if ((0 > cW))
431440 then throw("Invalid value passed")
432441 else {
433- let cD = cA(cx, cQ, false)
434- cD._9
442+ let cJ = cG(cD, cW, false)
443+ cJ._9
435444 }
436445
437446
438447
439-@Callable(cx)
448+@Callable(cD)
440449 func get () = {
441- let bS = cw(cx)
442- let cR = bS._1
443- let bz = bS._2
444- let cz = bS._3
445- let bh = bS._4
446- let bA = bS._5
447- let cS = invoke(an, "burn", [cz], [AttachedPayment(bh, cz)])
448- if ((cS == cS))
449- then bA
450+ let bY = cC(cD)
451+ let cX = bY._1
452+ let bF = bY._2
453+ let cF = bY._3
454+ let bn = bY._4
455+ let bG = bY._5
456+ let cY = invoke(as, "burn", [cF], [AttachedPayment(bn, cF)])
457+ if ((cY == cY))
458+ then bG
450459 else throw("Strict value is not equal to itself.")
451460 }
452461
453462
454463
455-@Callable(cx)
456-func getNoLess (cT,cU) = {
457- let bS = cw(cx)
458- let by = bS._1
459- let bz = bS._2
460- let cz = bS._3
461- let bh = bS._4
462- let bA = bS._5
463- if ((cT > by))
464- then throw(((("noLessThenAmtAsset failed: " + toString(by)) + " < ") + toString(cT)))
465- else if ((cU > bz))
466- then throw(((("noLessThenPriceAsset failed: " + toString(bz)) + " < ") + toString(cU)))
464+@Callable(cD)
465+func getNoLess (cZ,da) = {
466+ let bY = cC(cD)
467+ let bE = bY._1
468+ let bF = bY._2
469+ let cF = bY._3
470+ let bn = bY._4
471+ let bG = bY._5
472+ if ((cZ > bE))
473+ then throw(((("noLessThenAmtAsset failed: " + toString(bE)) + " < ") + toString(cZ)))
474+ else if ((da > bF))
475+ then throw(((("noLessThenPriceAsset failed: " + toString(bF)) + " < ") + toString(da)))
467476 else {
468- let cS = invoke(an, "burn", [cz], [AttachedPayment(bh, cz)])
469- if ((cS == cS))
470- then bA
477+ let cY = invoke(as, "burn", [cF], [AttachedPayment(bn, cF)])
478+ if ((cY == cY))
479+ then bG
471480 else throw("Strict value is not equal to itself.")
472481 }
473482 }
474483
475484
476485
477-@Callable(cx)
478-func activate (cV,cW) = if ((toString(cx.caller) != toString(an)))
486+@Callable(cD)
487+func activate (db,dc) = if ((toString(cD.caller) != toString(as)))
479488 then throw("permissions denied")
480- else $Tuple2([StringEntry(V(), cV), StringEntry(W(), cW)], "success")
489+ else $Tuple2([StringEntry(V(), db), StringEntry(W(), dc)], "success")
481490
482491
483492
484-@Callable(cx)
493+@Callable(cD)
485494 func statsREADONLY () = {
486- let aW = ap()
487- let bj = fromBase58String(aW[n])
488- let ck = aW[o]
489- let cl = aW[p]
490- let bL = aW[s]
491- let bM = aW[t]
492- let aX = parseIntValue(aW[q])
493- let aY = parseIntValue(aW[r])
494- let cX = valueOrErrorMessage(assetInfo(bj), (("Asset " + toBase58String(bj)) + " doesn't exist")).quantity
495- let cm = aI(ck)
496- let cn = aI(cl)
497- let cY = aU(cm, cn, cX)
498- let bt = 0
499- let cZ = D(cY[1], b)
500- let da = D(cY[2], b)
501- let db = value(getInteger(an, ah(toString(this))))
502- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cm), toString(cn), toString(cX), toString(bt), toString(cZ), toString(da), toString(db)], f))
495+ let bc = av()
496+ let bp = fromBase58String(bc[n])
497+ let cq = bc[o]
498+ let cr = bc[p]
499+ let bR = bc[s]
500+ let bS = bc[t]
501+ let bd = parseIntValue(bc[q])
502+ let be = parseIntValue(bc[r])
503+ let dd = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
504+ let cs = aO(cq)
505+ let ct = aO(cr)
506+ let de = ba(cs, ct, dd)
507+ let bz = 0
508+ let df = D(de[1], b)
509+ let dg = D(de[2], b)
510+ let dh = value(getInteger(as, ai(toString(this))))
511+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cs), toString(ct), toString(dd), toString(bz), toString(df), toString(dg), toString(dh)], f))
503512 }
504513
505514
506515
507-@Callable(cx)
508-func evaluatePutByAmountAssetREADONLY (bD) = {
509- let aW = ap()
510- let bj = fromBase58String(aW[n])
511- let bJ = aW[o]
512- let bk = fromBase58String(bJ)
513- let bK = aW[p]
514- let bl = fromBase58String(bK)
515- let aX = parseIntValue(aW[q])
516- let aY = parseIntValue(aW[r])
517- let bm = aW[m]
518- let cX = valueOrErrorMessage(assetInfo(bj), (("Asset " + toBase58String(bj)) + " doesn't exist")).quantity
519- let cm = aI(bJ)
520- let cn = aI(bK)
521- let aS = A(cm, aX)
522- let aT = A(cn, aY)
523- let bs = if ((cX == 0))
516+@Callable(cD)
517+func evaluatePutByAmountAssetREADONLY (bJ) = {
518+ let bc = av()
519+ let bp = fromBase58String(bc[n])
520+ let bP = bc[o]
521+ let bq = fromBase58String(bP)
522+ let bQ = bc[p]
523+ let br = fromBase58String(bQ)
524+ let bd = parseIntValue(bc[q])
525+ let be = parseIntValue(bc[r])
526+ let bs = bc[m]
527+ let dd = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
528+ let cs = aO(bP)
529+ let ct = aO(bQ)
530+ let aY = A(cs, bd)
531+ let aZ = A(ct, be)
532+ let by = if ((dd == 0))
524533 then e
525- else aK(aT, aS)
526- let bP = A(bD, aX)
527- let bQ = fraction(bP, bs, d)
528- let bF = D(bQ, aY)
529- let cD = bB("", 500000, bD, bk, bF, bl, "", true, false)
530- let ca = cD._1
531- let dc = cD._3
532- let bo = cD._4
533- let bq = cD._5
534- let bn = cD._6
535- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ca), toString(D(bs, b)), toString(bo), toString(bq), toString(bn), bm, toString(bD), toString(bF)], f))
534+ else aQ(aZ, aY)
535+ let bV = A(bJ, bd)
536+ let bW = fraction(bV, by, d)
537+ let bL = D(bW, be)
538+ let cJ = bH("", 500000, bJ, bq, bL, br, "", true, false)
539+ let cg = cJ._1
540+ let di = cJ._3
541+ let bu = cJ._4
542+ let bw = cJ._5
543+ let bt = cJ._6
544+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cg), toString(D(by, b)), toString(bu), toString(bw), toString(bt), bs, toString(bJ), toString(bL)], f))
536545 }
537546
538547
539548
540-@Callable(cx)
541-func evaluatePutByPriceAssetREADONLY (bF) = {
542- let aW = ap()
543- let bj = fromBase58String(aW[n])
544- let bJ = aW[o]
545- let bk = fromBase58String(bJ)
546- let bK = aW[p]
547- let bl = fromBase58String(bK)
548- let aX = parseIntValue(aW[q])
549- let aY = parseIntValue(aW[r])
550- let bm = aW[m]
551- let cX = valueOrErrorMessage(assetInfo(bj), (("Asset " + toBase58String(bj)) + " doesn't exist")).quantity
552- let dd = aI(bJ)
553- let de = aI(bK)
554- let df = A(dd, aX)
555- let dg = A(de, aY)
556- let bs = if ((cX == 0))
549+@Callable(cD)
550+func evaluatePutByPriceAssetREADONLY (bL) = {
551+ let bc = av()
552+ let bp = fromBase58String(bc[n])
553+ let bP = bc[o]
554+ let bq = fromBase58String(bP)
555+ let bQ = bc[p]
556+ let br = fromBase58String(bQ)
557+ let bd = parseIntValue(bc[q])
558+ let be = parseIntValue(bc[r])
559+ let bs = bc[m]
560+ let dd = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
561+ let dj = aO(bP)
562+ let dk = aO(bQ)
563+ let dl = A(dj, bd)
564+ let dm = A(dk, be)
565+ let by = if ((dd == 0))
557566 then e
558- else aK(dg, df)
559- let bQ = A(bF, aY)
560- let bP = fraction(bQ, d, bs)
561- let bD = D(bP, aX)
562- let cD = bB("", 500000, bD, bk, bF, bl, "", true, false)
563- let ca = cD._1
564- let dc = cD._3
565- let bo = cD._4
566- let bq = cD._5
567- let bn = cD._6
568- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ca), toString(D(bs, b)), toString(bo), toString(bq), toString(bn), bm, toString(bD), toString(bF)], f))
567+ else aQ(dm, dl)
568+ let bW = A(bL, be)
569+ let bV = fraction(bW, d, by)
570+ let bJ = D(bV, bd)
571+ let cJ = bH("", 500000, bJ, bq, bL, br, "", true, false)
572+ let cg = cJ._1
573+ let di = cJ._3
574+ let bu = cJ._4
575+ let bw = cJ._5
576+ let bt = cJ._6
577+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cg), toString(D(by, b)), toString(bu), toString(bw), toString(bt), bs, toString(bJ), toString(bL)], f))
569578 }
570579
571580
572581
573-@Callable(cx)
574-func evaluateGetREADONLY (dh,di) = {
575- let bS = bf("", dh, di, this)
576- let by = bS._1
577- let bz = bS._2
578- let bo = bS._5
579- let bq = bS._6
580- let bn = bS._7
581- let bt = bS._8
582- let bm = parseIntValue(bS._9)
583- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(by), toString(bz), toString(bo), toString(bq), toString(bn), toString(bt), toString(bm)], f))
582+@Callable(cD)
583+func evaluateGetREADONLY (dn,do) = {
584+ let bY = bl("", dn, do, this)
585+ let bE = bY._1
586+ let bF = bY._2
587+ let bu = bY._5
588+ let bw = bY._6
589+ let bt = bY._7
590+ let bz = bY._8
591+ let bs = parseIntValue(bY._9)
592+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(bE), toString(bF), toString(bu), toString(bw), toString(bt), toString(bz), toString(bs)], f))
584593 }
585594
586595
587-@Verifier(dj)
588-func dk () = {
589- let dl = dj
590- if ($isInstanceOf(dl, "Order"))
596+@Verifier(dp)
597+func dq () = {
598+ let dr = dp
599+ if ($isInstanceOf(dr, "Order"))
591600 then {
592- let cj = dl
593- if (ci(cj))
594- then sigVerify(cj.bodyBytes, cj.proofs[0], cj.senderPublicKey)
595- else false
601+ let cp = dr
602+ let ds = au()
603+ let al = co(cp)
604+ let am = sigVerify(cp.bodyBytes, cp.proofs[0], cp.senderPublicKey)
605+ let an = sigVerify(cp.bodyBytes, cp.proofs[1], ds)
606+ if (if (if (al)
607+ then am
608+ else false)
609+ then an
610+ else false)
611+ then true
612+ else ak(al, am, an)
596613 }
597614 else {
598- let dm = valueOrElse(getString(this, M()), g)
599- if ((dm == g))
600- then sigVerify(dj.bodyBytes, dj.proofs[0], dj.senderPublicKey)
601- else sigVerify(dj.bodyBytes, dj.proofs[0], fromBase58String(dm))
615+ let dt = valueOrElse(getString(this, M()), g)
616+ if ((dt == g))
617+ then sigVerify(dp.bodyBytes, dp.proofs[0], dp.senderPublicKey)
618+ else sigVerify(dp.bodyBytes, dp.proofs[0], fromBase58String(dt))
602619 }
603620 }
604621
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = "__"
1515
1616 let g = ""
1717
1818 let h = 1
1919
2020 let i = 2
2121
2222 let j = 3
2323
2424 let k = 4
2525
2626 let l = 1
2727
2828 let m = 2
2929
3030 let n = 3
3131
3232 let o = 4
3333
3434 let p = 5
3535
3636 let q = 6
3737
3838 let r = 7
3939
4040 let s = 8
4141
4242 let t = 9
4343
4444 let u = 10
4545
4646 let v = 1
4747
4848 let w = 2
4949
5050 let x = 3
5151
5252 let y = 1
5353
5454 let z = 7
5555
5656 func A (B,C) = fraction(toBigInt(B), d, toBigInt(C))
5757
5858
5959 func D (E,F) = toInt(fraction(E, toBigInt(F), d))
6060
6161
6262 func G (H,I,J) = fraction(H, I, J)
6363
6464
6565 func K (E) = if ((e > E))
6666 then -(E)
6767 else E
6868
6969
7070 func L () = "%s__factoryContract"
7171
7272
7373 func M () = "%s__managerPublicKey"
7474
7575
7676 func N () = "%s%s__price__last"
7777
7878
7979 func O (P,Q) = makeString(["%s%s%d%d__price__history", toString(P), toString(Q)], f)
8080
8181
8282 func R (S,T) = ((("%s%s%s__P__" + S) + "__") + T)
8383
8484
8585 func U (S,T) = ((("%s%s%s__G__" + S) + "__") + T)
8686
8787
8888 func V () = "%s__amountAsset"
8989
9090
9191 func W () = "%s__priceAsset"
9292
9393
9494 func X (P,Q) = makeString(["%s%s%d%d__K_history", toString(P), toString(Q)], f)
9595
9696
9797 func Y () = "%s__factoryConfig"
9898
9999
100-func Z (aa) = (("%s%s%s__" + aa) + "__mappings__poolContract2LpAsset")
100+func Z () = "%s%s__matcher__publicKey"
101101
102102
103-func ab (ac,ad) = (((("%d%d%s__" + ac) + "__") + ad) + "__config")
103+func aa (ab) = (("%s%s%s__" + ab) + "__mappings__poolContract2LpAsset")
104104
105105
106-func ae (af) = ("%s%s%s__mappings__baseAsset2internalId__" + af)
106+func ac (ad,ae) = (((("%d%d%s__" + ad) + "__") + ae) + "__config")
107107
108108
109-func ag () = "%s__shutdown"
109+func af (ag) = ("%s%s%s__mappings__baseAsset2internalId__" + ag)
110110
111111
112-func ah (ai) = ("%s%s__poolWeight__" + ai)
112+func ah () = "%s__shutdown"
113113
114114
115-func aj (ak,al) = valueOrErrorMessage(getString(ak, al), makeString(["mandatory ", toString(ak), ".", al, " is not defined"], ""))
115+func ai (aj) = ("%s%s__poolWeight__" + aj)
116116
117117
118-func am (ak,al) = valueOrErrorMessage(getInteger(ak, al), makeString(["mandatory ", toString(ak), ".", al, " is not defined"], ""))
118+func ak (al,am,an) = throw(((((("order validation failed: orderValid=" + toString(al)) + " senderValid=") + toString(am)) + " matcherValid=") + toString(an)))
119119
120120
121-let an = addressFromStringValue(aj(this, L()))
122-
123-func ao () = valueOrElse(getBoolean(an, ag()), false)
121+func ao (ap,aq) = valueOrErrorMessage(getString(ap, aq), makeString(["mandatory ", toString(ap), ".", aq, " is not defined"], ""))
124122
125123
126-func ap () = {
127- let aq = aj(this, V())
128- let ar = aj(this, W())
129- let ad = am(an, ae(ar))
130- let ac = am(an, ae(aq))
131- split(aj(an, ab(toString(ac), toString(ad))), f)
124+func ar (ap,aq) = valueOrErrorMessage(getInteger(ap, aq), makeString(["mandatory ", toString(ap), ".", aq, " is not defined"], ""))
125+
126+
127+let as = addressFromStringValue(ao(this, L()))
128+
129+func at () = valueOrElse(getBoolean(as, ah()), false)
130+
131+
132+func au () = fromBase58String(ao(as, Z()))
133+
134+
135+func av () = {
136+ let aw = ao(this, V())
137+ let ax = ao(this, W())
138+ let ae = ar(as, af(ax))
139+ let ad = ar(as, af(aw))
140+ split(ao(as, ac(toString(ad), toString(ae))), f)
132141 }
133142
134143
135-func as () = split(aj(an, Y()), f)
144+func ay () = split(ao(as, Y()), f)
136145
137146
138-func at (au,av,aw,ax,ay,az,aA,aB,aC,aD) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(au), toString(av), toString(aw), toString(ax), toString(ay), toString(az), toString(aA), toString(aB), toString(aC), toString(aD)], f)
147+func az (aA,aB,aC,aD,aE,aF,aG,aH,aI,aJ) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aA), toString(aB), toString(aC), toString(aD), toString(aE), toString(aF), toString(aG), toString(aH), toString(aI), toString(aJ)], f)
139148
140149
141-func aE (aF,aG,aH,ax,aA,aB) = makeString(["%d%d%d%d%d%d", toString(aF), toString(aG), toString(aH), toString(ax), toString(aA), toString(aB)], f)
150+func aK (aL,aM,aN,aD,aG,aH) = makeString(["%d%d%d%d%d%d", toString(aL), toString(aM), toString(aN), toString(aD), toString(aG), toString(aH)], f)
142151
143152
144-func aI (aJ) = if ((aJ == "WAVES"))
153+func aO (aP) = if ((aP == "WAVES"))
145154 then wavesBalance(this).available
146- else assetBalance(this, fromBase58String(aJ))
155+ else assetBalance(this, fromBase58String(aP))
147156
148157
149-func aK (aL,aM) = fraction(aL, d, aM)
158+func aQ (aR,aS) = fraction(aR, d, aS)
150159
151160
152-func aN (aO,aP,aQ,aR) = {
153- let aS = A(aQ, aO)
154- let aT = A(aR, aP)
155- aK(aT, aS)
161+func aT (aU,aV,aW,aX) = {
162+ let aY = A(aW, aU)
163+ let aZ = A(aX, aV)
164+ aQ(aZ, aY)
156165 }
157166
158167
159-func aU (aQ,aR,aV) = {
160- let aW = ap()
161- let aX = parseIntValue(aW[q])
162- let aY = parseIntValue(aW[r])
163- let aZ = aN(aX, aY, aQ, aR)
164- let aM = A(aQ, aX)
165- let aL = A(aR, aY)
166- let ba = A(aV, b)
167- let bb = aK(aM, ba)
168- let bc = aK(aL, ba)
169-[aZ, bb, bc]
168+func ba (aW,aX,bb) = {
169+ let bc = av()
170+ let bd = parseIntValue(bc[q])
171+ let be = parseIntValue(bc[r])
172+ let bf = aT(bd, be, aW, aX)
173+ let aS = A(aW, bd)
174+ let aR = A(aX, be)
175+ let bg = A(bb, b)
176+ let bh = aQ(aS, bg)
177+ let bi = aQ(aR, bg)
178+[bf, bh, bi]
170179 }
171180
172181
173-func bd (aQ,aR,aV) = {
174- let be = aU(aQ, aR, aV)
175-[D(be[0], b), D(be[1], b), D(be[2], b)]
182+func bj (aW,aX,bb) = {
183+ let bk = ba(aW, aX, bb)
184+[D(bk[0], b), D(bk[1], b), D(bk[2], b)]
176185 }
177186
178187
179-func bf (bg,bh,bi,S) = {
180- let aW = ap()
181- let bj = aW[n]
182- let bk = aW[o]
183- let bl = aW[p]
184- let aO = parseIntValue(aW[q])
185- let aP = parseIntValue(aW[r])
186- let bm = aW[m]
187- let bn = valueOrErrorMessage(assetInfo(fromBase58String(bj)), (("Asset " + bj) + " doesn't exist")).quantity
188- if ((bj != bh))
188+func bl (bm,bn,bo,S) = {
189+ let bc = av()
190+ let bp = bc[n]
191+ let bq = bc[o]
192+ let br = bc[p]
193+ let aU = parseIntValue(bc[q])
194+ let aV = parseIntValue(bc[r])
195+ let bs = bc[m]
196+ let bt = valueOrErrorMessage(assetInfo(fromBase58String(bp)), (("Asset " + bp) + " doesn't exist")).quantity
197+ if ((bp != bn))
189198 then throw("Invalid asset passed.")
190199 else {
191- let bo = aI(bk)
192- let bp = A(bo, aO)
193- let bq = aI(bl)
194- let br = A(bq, aP)
195- let bs = aK(br, bp)
196- let bt = D(bs, b)
197- let bu = A(bi, b)
198- let bv = A(bn, b)
199- let bw = fraction(bp, bu, bv)
200- let bx = fraction(br, bu, bv)
201- let by = D(bw, aO)
202- let bz = D(bx, aP)
203- let bA = if ((bg == ""))
200+ let bu = aO(bq)
201+ let bv = A(bu, aU)
202+ let bw = aO(br)
203+ let bx = A(bw, aV)
204+ let by = aQ(bx, bv)
205+ let bz = D(by, b)
206+ let bA = A(bo, b)
207+ let bB = A(bt, b)
208+ let bC = fraction(bv, bA, bB)
209+ let bD = fraction(bx, bA, bB)
210+ let bE = D(bC, aU)
211+ let bF = D(bD, aV)
212+ let bG = if ((bm == ""))
204213 then nil
205- else [ScriptTransfer(S, by, if ((bk == "WAVES"))
214+ else [ScriptTransfer(S, bE, if ((bq == "WAVES"))
206215 then unit
207- else fromBase58String(bk)), ScriptTransfer(S, bz, if ((bl == "WAVES"))
216+ else fromBase58String(bq)), ScriptTransfer(S, bF, if ((br == "WAVES"))
208217 then unit
209- else fromBase58String(bl)), StringEntry(U(toString(S), bg), aE(by, bz, bi, bt, height, lastBlock.timestamp)), IntegerEntry(N(), bt), IntegerEntry(O(height, lastBlock.timestamp), bt)]
210- $Tuple10(by, bz, bk, bl, bo, bq, bn, bs, bm, bA)
218+ else fromBase58String(br)), StringEntry(U(toString(S), bm), aK(bE, bF, bo, bz, height, lastBlock.timestamp)), IntegerEntry(N(), bz), IntegerEntry(O(height, lastBlock.timestamp), bz)]
219+ $Tuple10(bE, bF, bq, br, bu, bw, bt, by, bs, bG)
211220 }
212221 }
213222
214223
215-func bB (bg,bC,bD,bE,bF,bG,S,bH,bI) = {
216- let aW = ap()
217- let bj = fromBase58String(aW[n])
218- let bJ = aW[o]
219- let bK = aW[p]
220- let bL = aW[s]
221- let bM = aW[t]
222- let aX = parseIntValue(aW[q])
223- let aY = parseIntValue(aW[r])
224- let bm = aW[m]
225- let bn = valueOrErrorMessage(assetInfo(bj), (("Asset " + toBase58String(bj)) + " doesn't exist")).quantity
226- let bN = toBase58String(valueOrElse(bE, fromBase58String("WAVES")))
227- let bO = toBase58String(valueOrElse(bG, fromBase58String("WAVES")))
228- if (if ((bJ != bN))
224+func bH (bm,bI,bJ,bK,bL,bM,S,bN,bO) = {
225+ let bc = av()
226+ let bp = fromBase58String(bc[n])
227+ let bP = bc[o]
228+ let bQ = bc[p]
229+ let bR = bc[s]
230+ let bS = bc[t]
231+ let bd = parseIntValue(bc[q])
232+ let be = parseIntValue(bc[r])
233+ let bs = bc[m]
234+ let bt = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
235+ let bT = toBase58String(valueOrElse(bK, fromBase58String("WAVES")))
236+ let bU = toBase58String(valueOrElse(bM, fromBase58String("WAVES")))
237+ if (if ((bP != bT))
229238 then true
230- else (bK != bO))
239+ else (bQ != bU))
231240 then throw("Invalid amt or price asset passed.")
232241 else {
233- let bo = if (bH)
234- then aI(bJ)
235- else (aI(bJ) - bD)
236- let bq = if (bH)
237- then aI(bK)
238- else (aI(bK) - bF)
239- let bP = A(bD, aX)
240- let bQ = A(bF, aY)
241- let bR = aK(bQ, bP)
242- let bp = A(bo, aX)
243- let br = A(bq, aY)
244- let bS = if ((bn == 0))
242+ let bu = if (bN)
243+ then aO(bP)
244+ else (aO(bP) - bJ)
245+ let bw = if (bN)
246+ then aO(bQ)
247+ else (aO(bQ) - bL)
248+ let bV = A(bJ, bd)
249+ let bW = A(bL, be)
250+ let bX = aQ(bW, bV)
251+ let bv = A(bu, bd)
252+ let bx = A(bw, be)
253+ let bY = if ((bt == 0))
245254 then {
246- let bs = e
247- let bT = e
248- let ba = pow((bP * bQ), 0, toBigInt(5), 1, 0, DOWN)
249- $Tuple5(D(ba, b), D(bP, aX), D(bQ, aY), aK((br + bQ), (bp + bP)), bT)
255+ let by = e
256+ let bZ = e
257+ let bg = pow((bV * bW), 0, toBigInt(5), 1, 0, DOWN)
258+ $Tuple5(D(bg, b), D(bV, bd), D(bW, be), aQ((bx + bW), (bv + bV)), bZ)
250259 }
251260 else {
252- let bs = aK(br, bp)
253- let bT = fraction(K((bs - bR)), d, bs)
254- let bU = A(bC, b)
255- if (if ((bs != e))
256- then (bT > bU)
261+ let by = aQ(bx, bv)
262+ let bZ = fraction(K((by - bX)), d, by)
263+ let ca = A(bI, b)
264+ if (if ((by != e))
265+ then (bZ > ca)
257266 else false)
258- then throw(((("Price slippage " + toString(bT)) + " exceeded the passed limit of ") + toString(bU)))
267+ then throw(((("Price slippage " + toString(bZ)) + " exceeded the passed limit of ") + toString(ca)))
259268 else {
260- let bv = A(bn, b)
261- let bV = fraction(bP, bs, d)
262- let bW = fraction(bQ, d, bs)
263- let bX = if ((bV > bQ))
264- then $Tuple2(bW, bQ)
265- else $Tuple2(bP, bV)
266- let bY = bX._1
267- let bZ = bX._2
268- let ba = fraction(bv, bZ, br)
269- $Tuple5(D(ba, b), D(bY, aX), D(bZ, aY), bs, bT)
269+ let bB = A(bt, b)
270+ let cb = fraction(bV, by, d)
271+ let cc = fraction(bW, d, by)
272+ let cd = if ((cb > bW))
273+ then $Tuple2(cc, bW)
274+ else $Tuple2(bV, cb)
275+ let ce = cd._1
276+ let cf = cd._2
277+ let bg = fraction(bB, cf, bx)
278+ $Tuple5(D(bg, b), D(ce, bd), D(cf, be), by, bZ)
270279 }
271280 }
272- let ca = bS._1
273- let cb = bS._2
274- let cc = bS._3
275- let bt = D(bS._4, b)
276- let cd = D(bS._5, b)
277- if ((0 >= ca))
281+ let cg = bY._1
282+ let ch = bY._2
283+ let ci = bY._3
284+ let bz = D(bY._4, b)
285+ let cj = D(bY._5, b)
286+ if ((0 >= cg))
278287 then throw("Invalid calculations. LP calculated is less than zero.")
279288 else {
280- let ce = if (!(bI))
289+ let ck = if (!(bO))
281290 then 0
282- else ca
283- let cf = (bD - cb)
284- let cg = (bF - cc)
285- let ch = [IntegerEntry(N(), bt), IntegerEntry(O(height, lastBlock.timestamp), bt), StringEntry(R(S, bg), at(cb, cc, ce, bt, bC, cd, height, lastBlock.timestamp, cf, cg))]
286- $Tuple13(ca, ce, bt, bo, bq, bn, bj, bm, ch, cf, cg, bE, bG)
291+ else cg
292+ let cl = (bJ - ch)
293+ let cm = (bL - ci)
294+ let cn = [IntegerEntry(N(), bz), IntegerEntry(O(height, lastBlock.timestamp), bz), StringEntry(R(S, bm), az(ch, ci, ck, bz, bI, cj, height, lastBlock.timestamp, cl, cm))]
295+ $Tuple13(cg, ck, bz, bu, bw, bt, bp, bs, cn, cl, cm, bK, bM)
287296 }
288297 }
289298 }
290299
291300
292-func ci (cj) = {
293- let aW = ap()
294- let ck = aW[o]
295- let cl = aW[p]
296- let bm = parseIntValue(aW[m])
297- let aX = parseIntValue(aW[q])
298- let aY = parseIntValue(aW[r])
299- let cm = aI(ck)
300- let cn = aI(cl)
301- let bs = if ((cj.orderType == Buy))
302- then aN(aX, aY, (cm + cj.amount), cn)
303- else aN(aX, aY, (cm - cj.amount), cn)
304- let bt = D(bs, b)
305- if (if (if (ao())
301+func co (cp) = {
302+ let bc = av()
303+ let cq = bc[o]
304+ let cr = bc[p]
305+ let bs = parseIntValue(bc[m])
306+ let bd = parseIntValue(bc[q])
307+ let be = parseIntValue(bc[r])
308+ let cs = aO(cq)
309+ let ct = aO(cr)
310+ let by = if ((cp.orderType == Buy))
311+ then aT(bd, be, (cs + cp.amount), ct)
312+ else aT(bd, be, (cs - cp.amount), ct)
313+ let bz = D(by, b)
314+ if (if (if (at())
306315 then true
307- else (bm == j))
316+ else (bs == j))
308317 then true
309- else (bm == k))
318+ else (bs == k))
310319 then throw("Exchange operations disabled")
311320 else {
312- let co = cj.assetPair.amountAsset
313- let cp = if ((co == unit))
321+ let cu = cp.assetPair.amountAsset
322+ let cv = if ((cu == unit))
314323 then "WAVES"
315- else toBase58String(value(co))
316- let cq = cj.assetPair.priceAsset
317- let cr = if ((cq == unit))
324+ else toBase58String(value(cu))
325+ let cw = cp.assetPair.priceAsset
326+ let cx = if ((cw == unit))
318327 then "WAVES"
319- else toBase58String(value(cq))
320- if (if ((cp != ck))
328+ else toBase58String(value(cw))
329+ if (if ((cv != cq))
321330 then true
322- else (cr != cl))
331+ else (cx != cr))
323332 then throw("Wrong order assets.")
324333 else {
325- let cs = cj.price
326- let ct = fraction(b, aY, aX)
327- let cu = G(cs, b, ct)
328- let cv = if ((cj.orderType == Buy))
329- then (bt >= cu)
330- else (cu >= bt)
334+ let cy = cp.price
335+ let cz = fraction(b, be, bd)
336+ let cA = G(cy, b, cz)
337+ let cB = if ((cp.orderType == Buy))
338+ then (bz >= cA)
339+ else (cA >= bz)
331340 true
332341 }
333342 }
334343 }
335344
336345
337-func cw (cx) = if ((size(cx.payments) != 1))
346+func cC (cD) = if ((size(cD.payments) != 1))
338347 then throw("exactly 1 payment is expected")
339348 else {
340- let cy = value(cx.payments[0])
341- let bh = value(cy.assetId)
342- let cz = cy.amount
343- let bS = bf(toBase58String(cx.transactionId), toBase58String(bh), cz, cx.caller)
344- let by = bS._1
345- let bz = bS._2
346- let bm = parseIntValue(bS._9)
347- let bA = bS._10
348- if (if (ao())
349+ let cE = value(cD.payments[0])
350+ let bn = value(cE.assetId)
351+ let cF = cE.amount
352+ let bY = bl(toBase58String(cD.transactionId), toBase58String(bn), cF, cD.caller)
353+ let bE = bY._1
354+ let bF = bY._2
355+ let bs = parseIntValue(bY._9)
356+ let bG = bY._10
357+ if (if (at())
349358 then true
350- else (bm == k))
351- then throw(("Get operation is blocked by admin. Status = " + toString(bm)))
352- else $Tuple5(by, bz, cz, bh, bA)
359+ else (bs == k))
360+ then throw(("Get operation is blocked by admin. Status = " + toString(bs)))
361+ else $Tuple5(bE, bF, cF, bn, bG)
353362 }
354363
355364
356-func cA (cx,bC,bI) = if ((size(cx.payments) != 2))
365+func cG (cD,bI,bO) = if ((size(cD.payments) != 2))
357366 then throw("exactly 2 payments are expected")
358367 else {
359- let cB = value(cx.payments[0])
360- let cC = value(cx.payments[1])
361- let cD = bB(toBase58String(cx.transactionId), bC, cB.amount, cB.assetId, cC.amount, cC.assetId, toString(cx.caller), false, bI)
362- let bm = parseIntValue(cD._8)
363- if (if (if (ao())
368+ let cH = value(cD.payments[0])
369+ let cI = value(cD.payments[1])
370+ let cJ = bH(toBase58String(cD.transactionId), bI, cH.amount, cH.assetId, cI.amount, cI.assetId, toString(cD.caller), false, bO)
371+ let bs = parseIntValue(cJ._8)
372+ if (if (if (at())
364373 then true
365- else (bm == i))
374+ else (bs == i))
366375 then true
367- else (bm == k))
368- then throw(("Put operation is blocked by admin. Status = " + toString(bm)))
369- else cD
376+ else (bs == k))
377+ then throw(("Put operation is blocked by admin. Status = " + toString(bs)))
378+ else cJ
370379 }
371380
372381
373-@Callable(cx)
374-func constructor (an,cE) = if ((cx.caller != this))
382+@Callable(cD)
383+func constructor (as,cK) = if ((cD.caller != this))
375384 then throw("permissions denied")
376- else [StringEntry(L(), an), StringEntry(M(), cE)]
385+ else [StringEntry(L(), as), StringEntry(M(), cK)]
377386
378387
379388
380-@Callable(cx)
381-func put (bC,cF) = {
382- let cG = as()
383- let cH = valueOrErrorMessage(addressFromString(cG[y]), "Error. Incorrect staking address.")
384- let cI = valueOrErrorMessage(addressFromString(cG[z]), "Error. Incorrect slippage contract address.")
385- if ((0 > bC))
389+@Callable(cD)
390+func put (bI,cL) = {
391+ let cM = ay()
392+ let cN = valueOrErrorMessage(addressFromString(cM[y]), "Error. Incorrect staking address.")
393+ let cO = valueOrErrorMessage(addressFromString(cM[z]), "Error. Incorrect slippage contract address.")
394+ if ((0 > bI))
386395 then throw("Invalid slippageTolerance passed")
387396 else {
388- let cD = cA(cx, bC, true)
389- let ce = cD._2
390- let bj = cD._7
391- let bA = cD._9
392- let cf = cD._10
393- let cg = cD._11
394- let cJ = cD._12
395- let cK = cD._13
396- let cL = invoke(an, "emit", [ce], nil)
397- if ((cL == cL))
397+ let cJ = cG(cD, bI, true)
398+ let ck = cJ._2
399+ let bp = cJ._7
400+ let bG = cJ._9
401+ let cl = cJ._10
402+ let cm = cJ._11
403+ let cP = cJ._12
404+ let cQ = cJ._13
405+ let cR = invoke(as, "emit", [ck], nil)
406+ if ((cR == cR))
398407 then {
399- let cM = if ((cf > 0))
400- then invoke(cI, "put", nil, [AttachedPayment(cJ, cf)])
408+ let cS = if ((cl > 0))
409+ then invoke(cO, "put", nil, [AttachedPayment(cP, cl)])
401410 else nil
402- if ((cM == cM))
411+ if ((cS == cS))
403412 then {
404- let cN = if ((cg > 0))
405- then invoke(cI, "put", nil, [AttachedPayment(cK, cg)])
413+ let cT = if ((cm > 0))
414+ then invoke(cO, "put", nil, [AttachedPayment(cQ, cm)])
406415 else nil
407- if ((cN == cN))
416+ if ((cT == cT))
408417 then {
409- let cO = if (cF)
418+ let cU = if (cL)
410419 then {
411- let cP = invoke(cH, "stake", nil, [AttachedPayment(bj, ce)])
412- if ((cP == cP))
420+ let cV = invoke(cN, "stake", nil, [AttachedPayment(bp, ck)])
421+ if ((cV == cV))
413422 then nil
414423 else throw("Strict value is not equal to itself.")
415424 }
416- else [ScriptTransfer(cx.caller, ce, bj)]
417- (bA ++ cO)
425+ else [ScriptTransfer(cD.caller, ck, bp)]
426+ (bG ++ cU)
418427 }
419428 else throw("Strict value is not equal to itself.")
420429 }
421430 else throw("Strict value is not equal to itself.")
422431 }
423432 else throw("Strict value is not equal to itself.")
424433 }
425434 }
426435
427436
428437
429-@Callable(cx)
430-func putForFree (cQ) = if ((0 > cQ))
438+@Callable(cD)
439+func putForFree (cW) = if ((0 > cW))
431440 then throw("Invalid value passed")
432441 else {
433- let cD = cA(cx, cQ, false)
434- cD._9
442+ let cJ = cG(cD, cW, false)
443+ cJ._9
435444 }
436445
437446
438447
439-@Callable(cx)
448+@Callable(cD)
440449 func get () = {
441- let bS = cw(cx)
442- let cR = bS._1
443- let bz = bS._2
444- let cz = bS._3
445- let bh = bS._4
446- let bA = bS._5
447- let cS = invoke(an, "burn", [cz], [AttachedPayment(bh, cz)])
448- if ((cS == cS))
449- then bA
450+ let bY = cC(cD)
451+ let cX = bY._1
452+ let bF = bY._2
453+ let cF = bY._3
454+ let bn = bY._4
455+ let bG = bY._5
456+ let cY = invoke(as, "burn", [cF], [AttachedPayment(bn, cF)])
457+ if ((cY == cY))
458+ then bG
450459 else throw("Strict value is not equal to itself.")
451460 }
452461
453462
454463
455-@Callable(cx)
456-func getNoLess (cT,cU) = {
457- let bS = cw(cx)
458- let by = bS._1
459- let bz = bS._2
460- let cz = bS._3
461- let bh = bS._4
462- let bA = bS._5
463- if ((cT > by))
464- then throw(((("noLessThenAmtAsset failed: " + toString(by)) + " < ") + toString(cT)))
465- else if ((cU > bz))
466- then throw(((("noLessThenPriceAsset failed: " + toString(bz)) + " < ") + toString(cU)))
464+@Callable(cD)
465+func getNoLess (cZ,da) = {
466+ let bY = cC(cD)
467+ let bE = bY._1
468+ let bF = bY._2
469+ let cF = bY._3
470+ let bn = bY._4
471+ let bG = bY._5
472+ if ((cZ > bE))
473+ then throw(((("noLessThenAmtAsset failed: " + toString(bE)) + " < ") + toString(cZ)))
474+ else if ((da > bF))
475+ then throw(((("noLessThenPriceAsset failed: " + toString(bF)) + " < ") + toString(da)))
467476 else {
468- let cS = invoke(an, "burn", [cz], [AttachedPayment(bh, cz)])
469- if ((cS == cS))
470- then bA
477+ let cY = invoke(as, "burn", [cF], [AttachedPayment(bn, cF)])
478+ if ((cY == cY))
479+ then bG
471480 else throw("Strict value is not equal to itself.")
472481 }
473482 }
474483
475484
476485
477-@Callable(cx)
478-func activate (cV,cW) = if ((toString(cx.caller) != toString(an)))
486+@Callable(cD)
487+func activate (db,dc) = if ((toString(cD.caller) != toString(as)))
479488 then throw("permissions denied")
480- else $Tuple2([StringEntry(V(), cV), StringEntry(W(), cW)], "success")
489+ else $Tuple2([StringEntry(V(), db), StringEntry(W(), dc)], "success")
481490
482491
483492
484-@Callable(cx)
493+@Callable(cD)
485494 func statsREADONLY () = {
486- let aW = ap()
487- let bj = fromBase58String(aW[n])
488- let ck = aW[o]
489- let cl = aW[p]
490- let bL = aW[s]
491- let bM = aW[t]
492- let aX = parseIntValue(aW[q])
493- let aY = parseIntValue(aW[r])
494- let cX = valueOrErrorMessage(assetInfo(bj), (("Asset " + toBase58String(bj)) + " doesn't exist")).quantity
495- let cm = aI(ck)
496- let cn = aI(cl)
497- let cY = aU(cm, cn, cX)
498- let bt = 0
499- let cZ = D(cY[1], b)
500- let da = D(cY[2], b)
501- let db = value(getInteger(an, ah(toString(this))))
502- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cm), toString(cn), toString(cX), toString(bt), toString(cZ), toString(da), toString(db)], f))
495+ let bc = av()
496+ let bp = fromBase58String(bc[n])
497+ let cq = bc[o]
498+ let cr = bc[p]
499+ let bR = bc[s]
500+ let bS = bc[t]
501+ let bd = parseIntValue(bc[q])
502+ let be = parseIntValue(bc[r])
503+ let dd = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
504+ let cs = aO(cq)
505+ let ct = aO(cr)
506+ let de = ba(cs, ct, dd)
507+ let bz = 0
508+ let df = D(de[1], b)
509+ let dg = D(de[2], b)
510+ let dh = value(getInteger(as, ai(toString(this))))
511+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cs), toString(ct), toString(dd), toString(bz), toString(df), toString(dg), toString(dh)], f))
503512 }
504513
505514
506515
507-@Callable(cx)
508-func evaluatePutByAmountAssetREADONLY (bD) = {
509- let aW = ap()
510- let bj = fromBase58String(aW[n])
511- let bJ = aW[o]
512- let bk = fromBase58String(bJ)
513- let bK = aW[p]
514- let bl = fromBase58String(bK)
515- let aX = parseIntValue(aW[q])
516- let aY = parseIntValue(aW[r])
517- let bm = aW[m]
518- let cX = valueOrErrorMessage(assetInfo(bj), (("Asset " + toBase58String(bj)) + " doesn't exist")).quantity
519- let cm = aI(bJ)
520- let cn = aI(bK)
521- let aS = A(cm, aX)
522- let aT = A(cn, aY)
523- let bs = if ((cX == 0))
516+@Callable(cD)
517+func evaluatePutByAmountAssetREADONLY (bJ) = {
518+ let bc = av()
519+ let bp = fromBase58String(bc[n])
520+ let bP = bc[o]
521+ let bq = fromBase58String(bP)
522+ let bQ = bc[p]
523+ let br = fromBase58String(bQ)
524+ let bd = parseIntValue(bc[q])
525+ let be = parseIntValue(bc[r])
526+ let bs = bc[m]
527+ let dd = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
528+ let cs = aO(bP)
529+ let ct = aO(bQ)
530+ let aY = A(cs, bd)
531+ let aZ = A(ct, be)
532+ let by = if ((dd == 0))
524533 then e
525- else aK(aT, aS)
526- let bP = A(bD, aX)
527- let bQ = fraction(bP, bs, d)
528- let bF = D(bQ, aY)
529- let cD = bB("", 500000, bD, bk, bF, bl, "", true, false)
530- let ca = cD._1
531- let dc = cD._3
532- let bo = cD._4
533- let bq = cD._5
534- let bn = cD._6
535- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ca), toString(D(bs, b)), toString(bo), toString(bq), toString(bn), bm, toString(bD), toString(bF)], f))
534+ else aQ(aZ, aY)
535+ let bV = A(bJ, bd)
536+ let bW = fraction(bV, by, d)
537+ let bL = D(bW, be)
538+ let cJ = bH("", 500000, bJ, bq, bL, br, "", true, false)
539+ let cg = cJ._1
540+ let di = cJ._3
541+ let bu = cJ._4
542+ let bw = cJ._5
543+ let bt = cJ._6
544+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cg), toString(D(by, b)), toString(bu), toString(bw), toString(bt), bs, toString(bJ), toString(bL)], f))
536545 }
537546
538547
539548
540-@Callable(cx)
541-func evaluatePutByPriceAssetREADONLY (bF) = {
542- let aW = ap()
543- let bj = fromBase58String(aW[n])
544- let bJ = aW[o]
545- let bk = fromBase58String(bJ)
546- let bK = aW[p]
547- let bl = fromBase58String(bK)
548- let aX = parseIntValue(aW[q])
549- let aY = parseIntValue(aW[r])
550- let bm = aW[m]
551- let cX = valueOrErrorMessage(assetInfo(bj), (("Asset " + toBase58String(bj)) + " doesn't exist")).quantity
552- let dd = aI(bJ)
553- let de = aI(bK)
554- let df = A(dd, aX)
555- let dg = A(de, aY)
556- let bs = if ((cX == 0))
549+@Callable(cD)
550+func evaluatePutByPriceAssetREADONLY (bL) = {
551+ let bc = av()
552+ let bp = fromBase58String(bc[n])
553+ let bP = bc[o]
554+ let bq = fromBase58String(bP)
555+ let bQ = bc[p]
556+ let br = fromBase58String(bQ)
557+ let bd = parseIntValue(bc[q])
558+ let be = parseIntValue(bc[r])
559+ let bs = bc[m]
560+ let dd = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
561+ let dj = aO(bP)
562+ let dk = aO(bQ)
563+ let dl = A(dj, bd)
564+ let dm = A(dk, be)
565+ let by = if ((dd == 0))
557566 then e
558- else aK(dg, df)
559- let bQ = A(bF, aY)
560- let bP = fraction(bQ, d, bs)
561- let bD = D(bP, aX)
562- let cD = bB("", 500000, bD, bk, bF, bl, "", true, false)
563- let ca = cD._1
564- let dc = cD._3
565- let bo = cD._4
566- let bq = cD._5
567- let bn = cD._6
568- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ca), toString(D(bs, b)), toString(bo), toString(bq), toString(bn), bm, toString(bD), toString(bF)], f))
567+ else aQ(dm, dl)
568+ let bW = A(bL, be)
569+ let bV = fraction(bW, d, by)
570+ let bJ = D(bV, bd)
571+ let cJ = bH("", 500000, bJ, bq, bL, br, "", true, false)
572+ let cg = cJ._1
573+ let di = cJ._3
574+ let bu = cJ._4
575+ let bw = cJ._5
576+ let bt = cJ._6
577+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cg), toString(D(by, b)), toString(bu), toString(bw), toString(bt), bs, toString(bJ), toString(bL)], f))
569578 }
570579
571580
572581
573-@Callable(cx)
574-func evaluateGetREADONLY (dh,di) = {
575- let bS = bf("", dh, di, this)
576- let by = bS._1
577- let bz = bS._2
578- let bo = bS._5
579- let bq = bS._6
580- let bn = bS._7
581- let bt = bS._8
582- let bm = parseIntValue(bS._9)
583- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(by), toString(bz), toString(bo), toString(bq), toString(bn), toString(bt), toString(bm)], f))
582+@Callable(cD)
583+func evaluateGetREADONLY (dn,do) = {
584+ let bY = bl("", dn, do, this)
585+ let bE = bY._1
586+ let bF = bY._2
587+ let bu = bY._5
588+ let bw = bY._6
589+ let bt = bY._7
590+ let bz = bY._8
591+ let bs = parseIntValue(bY._9)
592+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(bE), toString(bF), toString(bu), toString(bw), toString(bt), toString(bz), toString(bs)], f))
584593 }
585594
586595
587-@Verifier(dj)
588-func dk () = {
589- let dl = dj
590- if ($isInstanceOf(dl, "Order"))
596+@Verifier(dp)
597+func dq () = {
598+ let dr = dp
599+ if ($isInstanceOf(dr, "Order"))
591600 then {
592- let cj = dl
593- if (ci(cj))
594- then sigVerify(cj.bodyBytes, cj.proofs[0], cj.senderPublicKey)
595- else false
601+ let cp = dr
602+ let ds = au()
603+ let al = co(cp)
604+ let am = sigVerify(cp.bodyBytes, cp.proofs[0], cp.senderPublicKey)
605+ let an = sigVerify(cp.bodyBytes, cp.proofs[1], ds)
606+ if (if (if (al)
607+ then am
608+ else false)
609+ then an
610+ else false)
611+ then true
612+ else ak(al, am, an)
596613 }
597614 else {
598- let dm = valueOrElse(getString(this, M()), g)
599- if ((dm == g))
600- then sigVerify(dj.bodyBytes, dj.proofs[0], dj.senderPublicKey)
601- else sigVerify(dj.bodyBytes, dj.proofs[0], fromBase58String(dm))
615+ let dt = valueOrElse(getString(this, M()), g)
616+ if ((dt == g))
617+ then sigVerify(dp.bodyBytes, dp.proofs[0], dp.senderPublicKey)
618+ else sigVerify(dp.bodyBytes, dp.proofs[0], fromBase58String(dt))
602619 }
603620 }
604621

github/deemru/w8io/169f3d6 
201.86 ms