tx · 3CTrUqFetAemXcyj5wiCmYAPumxYspnX2EKzrgdu36G5

3PH75p2rmMKCV2nyW4TsAdFgFtmc61mJaqA:  -0.02300000 Waves

2023.01.17 21:20 [3474775] smart account 3PH75p2rmMKCV2nyW4TsAdFgFtmc61mJaqA > SELF 0.00000000 Waves

{ "type": 13, "id": "3CTrUqFetAemXcyj5wiCmYAPumxYspnX2EKzrgdu36G5", "fee": 2300000, "feeAssetId": null, "timestamp": 1673979655370, "version": 2, "chainId": 87, "sender": "3PH75p2rmMKCV2nyW4TsAdFgFtmc61mJaqA", "senderPublicKey": "3GtkwhnMmG1yeozW51o4dJ1x3BDToPaLBXyBWKGdAc2e", "proofs": [ "513rWEuHs3rt6a5rMY948ZTEzSj6t9f1T3EKj9Yh672RnXoTSfVBuU1evx2g4q5TjRv38EjF6uqbzLsVd5LKST2x" ], "script": "base64:AAIFAAAAAAAAADwIAhIDCgEIEgASBAoCCAgSBAoCCAgSABIAEgMKAQgSAwoBCBIDCgEIEgMKAQgSAwoBCBIDCgEIEgMKAQgAAAAvAAAAAApwZXJjaFByaWNlCQAAaAAAAAIAAAAAAAAAAGQAAAAAAAAPQkAAAAAABXNjYWxlAAAAAAAAACcQAAAAAAZzY2FsZTIAAAAAAAAPQkABAAAACmlzU2lja0R1Y2sAAAABAAAABmR1Y2tJZAkAASwAAAACBQAAAAZkdWNrSWQCAAAABV9zaWNrAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAAMdHJ5R2V0U3RyaW5nAAAAAQAAAANrZXkJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIFAAAABHRoaXMFAAAAA2tleQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAAAx0cnlHZXRTdHJpbmcAAAABAgAAABRzdGF0aWNfb3JhY2xlQWRkcmVzcwEAAAANZ2V0RWdnQXNzZXRJZAAAAAAJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAEXN0YXRpY19lZ2dBc3NldElkAQAAABNnZXRJbmN1YmF0b3JBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABdzdGF0aWNfaW5jdWJhdG9yQWRkcmVzcwEAAAARZ2V0UmViaXJ0aEFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAFXN0YXRpY19yZWJpcnRoQWRkcmVzcwEAAAATZ2V0U3dvcFByb21vQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAAXc3RhdGljX3N3b3BQcm9tb0FkZHJlc3MBAAAAEWdldEJyZWVkZXJBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABVzdGF0aWNfYnJlZWRlckFkZHJlc3MBAAAAFWdldFJlZkNvbnRyYWN0QWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAAZc3RhdGljX3JlZkNvbnRyYWN0QWRkcmVzcwEAAAAPZ2V0SXRlbXNBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABNzdGF0aWNfaXRlbXNBZGRyZXNzAQAAABJnZXRNZXRhcmFjZUFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAFnN0YXRpY19tZXRhUmFjZUFkZHJlc3MBAAAAFGdldEFjY0Jvb3N0ZXJBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABhzdGF0aWNfYWNjQm9vc3RlckFkZHJlc3MBAAAAD2dldFByb3h5U3Rha2luZwAAAAAJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABxzdGF0aWNfcHJveHlTdGFraW5nQ29udHJhY3RzAQAAAA5nZXRNYWludGVuYW5jZQAAAAAJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABJzdGF0aWNfbWFpbnRlbmFuY2UBAAAAEmdldENmTWFzdGVyQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAAWc3RhdGljX2NmTWFzdGVyQWRkcmVzcwEAAAAQZ2V0RHVja1dyYXBwZXJTYwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAASc3RhdGljX2R1Y2tXcmFwcGVyAQAAABFnZXRDb3Vwb25zQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAAVc3RhdGljX2NvdXBvbnNBZGRyZXNzAQAAAA5nZXRCdXJuQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAASc3RhdGljX2J1cm5BZGRyZXNzAQAAABJnZXRTaWNrbmVzc0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAFnN0YXRpY19zaWNrbmVzc0FkZHJlc3MAAAAADVJlZmVyZXJSZXdhcmQAAAAAAAAAAAUBAAAAEWdldFJld2FyZFBlckJsb2NrAAAAAAAAAAAAAAACJAEAAAAIaXNMb2NrZWQAAAAAAwkBAAAAAiE9AAAAAgkBAAAADmdldE1haW50ZW5hbmNlAAAAAAIAAAAACQAAAgAAAAEJAQAAAA5nZXRNYWludGVuYW5jZQAAAAAAAAAAAAAAAAABAAAADXRyeUdldEludGVnZXIAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlz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dHJpbmcAAAABCQABLAAAAAICAAAAB2Fzc2V0c18FAAAAA2dlbgMJAAAAAAAAAgUAAAABcwIAAAAABQAAAANuaWwJAAS1AAAAAgUAAAABcwIAAAABLAEAAAAMY2FsY0ludGVyZXN0AAAAAwAAABBwcmV2aW91c0ludGVyZXN0AAAAFnByZXZpb3VzSW50ZXJlc3RIZWlnaHQAAAARdG90YWxGYXJtaW5nUG93ZXIJAABkAAAAAgUAAAAQcHJldmlvdXNJbnRlcmVzdAkAAGkAAAACCQAAaAAAAAIJAABoAAAAAgUAAAAFc2NhbGUJAQAAABFnZXRSZXdhcmRQZXJCbG9jawAAAAAJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABZwcmV2aW91c0ludGVyZXN0SGVpZ2h0BQAAABF0b3RhbEZhcm1pbmdQb3dlcgEAAAASZ2V0Q3VycmVudEludGVyZXN0AAAAAAMJAABmAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABJ0b3RhbF9mYXJtaW5nUG93ZXIAAAAAAAAAAAAEAAAAEHByZXZpb3VzSW50ZXJlc3QJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAAXdG90YWxfbGFzdENoZWNrSW50ZXJlc3QEAAAAFnByZXZpb3VzSW50ZXJlc3RIZWlnaHQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAAddG90YWxfbGFzdENoZWNrSW50ZXJlc3RIZWlnaHQEAAAAEXRvdGFsRmFybWluZ1Bvd2VyCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAEnRvdGFsX2Zhcm1pbmdQb3dlcgkBAAAADGNhbGNJbnRlcmVzdAAAAAMFAAAAEHByZXZpb3VzSW50ZXJlc3QFAAAAFnByZXZpb3VzSW50ZXJlc3RIZWlnaHQFAAAAEXRvdGFsRmFybWluZ1Bvd2VyAwkBAAAAAiE9AAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABF0b3RhbF9zdGFydEhlaWdodAAAAAAAAAAAAAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABd0b3RhbF9sYXN0Q2hlY2tJbnRlcmVzdAkAAAIAAAABAgAAABxmYXJtaW5nIGlzIG5vdCBsYXVuY2hlZCwgeWV0AQAAABRjYWxjQXNzZXRSZXdhcmREZWx0YQAAAAMAAAAHYWRkcmVzcwAAAAdhc3NldElkAAAAEWFzc2V0RmFybWluZ1Bvd2VyBAAAABZsYXN0Q2hlY2tBc3NldEludGVyZXN0CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAAB2Fzc2V0SWQCAAAAEl9sYXN0Q2hlY2tJbnRlcmVzdAQAAAAPY3VycmVudEludGVyZXN0CQEAAAASZ2V0Q3VycmVudEludGVyZXN0AAAAAAkAAGgAAAACBQAAABFhc3NldEZhcm1pbmdQb3dlcgkAAGUAAAACBQAAAA9jdXJyZW50SW50ZXJlc3QFAAAAFmxhc3RDaGVja0Fzc2V0SW50ZXJlc3QBAAAAFGFkZEFzc2V0SWRUb0dlbkVudHJ5AAAAAgAAAAdhc3NldElkAAAACGFzc2V0R2VuBAAAAAxjdXJyZW50VmFsdWUJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAHYXNzZXRzXwUAAAAIYXNzZXRHZW4CAAAAB19sb2NrZWQDCQAAAAAAAAIFAAAADGN1cnJlbnRWYWx1ZQIAAAAABQAAAAdhc3NldElkCQABLAAAAAIJAAEsAAAAAgUAAAAMY3VycmVudFZhbHVlAgAAAAEsBQAAAAdhc3NldElkAQAAAA5nZXRTdGFrZVJlc3VsdAAAAAQAAAAHYWRkcmVzcwAAAAdhc3NldElkAAAAEWFzc2V0RmFybWluZ1Bvd2VyAAAACHVuc3Rha2VyBAAAAAVhc3NldAkAAlgAAAABBQAAAAdhc3NldElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABJ0b3RhbF9mYXJtaW5nUG93ZXIJAABkAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABJ0b3RhbF9mYXJtaW5nUG93ZXIFAAAAEWFzc2V0RmFybWluZ1Bvd2VyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABd0b3RhbF9sYXN0Q2hlY2tJbnRlcmVzdAkBAAAAEmdldEN1cnJlbnRJbnRlcmVzdAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAHXRvdGFsX2xhc3RDaGVja0ludGVyZXN0SGVpZ2h0BQAAAAZoZWlnaHQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAABmFzc2V0XwUAAAAFYXNzZXQCAAAABl9vd25lcgUAAAAHYWRkcmVzcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAADV9mYXJtaW5nUG93ZXIFAAAAEWFzc2V0RmFybWluZ1Bvd2VyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAASX2xhc3RDaGVja0ludGVyZXN0CQEAAAASZ2V0Q3VycmVudEludGVyZXN0AAAAAAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAAJX3Vuc3Rha2VyBQAAAAh1bnN0YWtlcgUAAAADbmlsAQAAABBnZXRVbnN0YWtlUmVzdWx0AAAABgAAAAdhZGRyZXNzAAAAB2Fzc2V0SWQAAAAFY29sb3IAAAAGY2FsbGVyAAAACnJlYWxDYWxsZXIAAAAJY2xhaW1FZ2dzBAAAAAZsb2NrZWQJAQAAAAhpc0xvY2tlZAAAAAADCQAAAAAAAAIFAAAABmxvY2tlZAUAAAAGbG9ja2VkBAAAAAVhc3NldAkAAlgAAAABBQAAAAdhc3NldElkBAAAAAh1bnN0YWtlcgkBAAAADHRyeUdldFN0cmluZwAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAAAlfdW5zdGFrZXIDAwkBAAAAAiE9AAAAAgUAAAAIdW5zdGFrZXICAAAAAAkBAAAAAiE9AAAAAgUAAAAIdW5zdGFrZXIFAAAACnJlYWxDYWxsZXIHCQAAAgAAAAECAAAAV0ZVTjogSXQgc2VlbXMgZHVjayB3YXMgc3Rha2VkIHRocm91aCBhIGRhcHAsIG5vdCBkaXJlY3RseSwgcGxlYXNlIHVuc3Rha2UgdGhyb3VnaCBkYXBwIQQAAAARYXNzZXRGYXJtaW5nUG93ZXIJAQAAAB1nZXRMYXN0S25vd25Bc3NldEZhcm1pbmdQb3dlcgAAAAIFAAAAB2FkZHJlc3MFAAAABWFzc2V0AwkBAAAAASEAAAABCQAAZgAAAAIFAAAAEWFzc2V0RmFybWluZ1Bvd2VyAAAAAAAAAAAACQAAAgAAAAECAAAAKkZHVTogQXNzZXQgZmFybWluZyBwb3dlciBub3QgYmlnZ2VyIHRoZW4gMAQAAAAQYXNzZXRSZXdhcmREZWx0YQkBAAAAFGNhbGNBc3NldFJld2FyZERlbHRhAAAAAwUAAAAHYWRkcmVzcwUAAAAFYXNzZXQFAAAAEWFzc2V0RmFybWluZ1Bvd2VyBAAAAAxmYXJtZWRBbW91bnQJAABkAAAAAgUAAAAQYXNzZXRSZXdhcmREZWx0YQkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAAWX2xhc3RDaGVja0Zhcm1lZEFtb3VudAQAAAAPd2l0aGRyYXduQW1vdW50CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAABBfd2l0aGRyYXduQW1vdW50BAAAAAZyZXdhcmQJAABpAAAAAgkAAGUAAAACBQAAAAxmYXJtZWRBbW91bnQFAAAAD3dpdGhkcmF3bkFtb3VudAkAAGgAAAACBQAAAAVzY2FsZQAAAAAAAAAAZAQAAAAOaXNXaXRob3V0UGVyY2gJAQAAAA10cnlHZXRCb29sZWFuAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAADl93aXRob3V0X3BlcmNoBAAAAA1zaWNrbmVzc0NoZWNrCQEAAAAJYXNCb29sZWFuAAAAAQkAA/wAAAAECQEAAAASZ2V0U2lja25lc3NBZGRyZXNzAAAAAAIAAAASY2hlY2tJZkR1Y2tHZXRTaWNrCQAETAAAAAIFAAAABWFzc2V0BQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAANc2lja25lc3NDaGVjawUAAAANc2lja25lc3NDaGVjawQAAAATcmV3YXJkQWZ0ZXJTaWNrTmVzcwMFAAAADXNpY2tuZXNzQ2hlY2sAAAAAAAAAAAAFAAAABnJld2FyZAQAAAANYXBwZW5kUGVyY2hlcwMFAAAADmlzV2l0aG91dFBlcmNoCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAAA5fd2l0aG91dF9wZXJjaAUAAAADbmlsCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAASX3BlcmNoZXNBdmFpbGFibGVfBQAAAAVjb2xvcgkAAGQAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAABJfcGVyY2hlc0F2YWlsYWJsZV8FAAAABWNvbG9yAAAAAAAAAAABBQAAAANuaWwEAAAABnNlbmRUeAMFAAAACWNsYWltRWdncwkABRQAAAACCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAABmNhbGxlcgkAAGgAAAACBQAAABNyZXdhcmRBZnRlclNpY2tOZXNzAAAAAAAAD0JACQEAAAANZ2V0RWdnQXNzZXRJZAAAAAAFAAAAA25pbAkAAGgAAAACBQAAABNyZXdhcmRBZnRlclNpY2tOZXNzAAAAAAAAD0JACQAFFAAAAAIFAAAAA25pbAAAAAAAAAAAAAkABRQAAAACCQAETgAAAAIJAAROAAAAAgkABE4AAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABJ0b3RhbF9mYXJtaW5nUG93ZXIJAABlAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABJ0b3RhbF9mYXJtaW5nUG93ZXIFAAAAEWFzc2V0RmFybWluZ1Bvd2VyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABd0b3RhbF9sYXN0Q2hlY2tJbnRlcmVzdAkBAAAAEmdldEN1cnJlbnRJbnRlcmVzdAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAHXRvdGFsX2xhc3RDaGVja0ludGVyZXN0SGVpZ2h0BQAAAAZoZWlnaHQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACCQABLAAAAAICAAAABmFzc2V0XwUAAAAFYXNzZXQCAAAABl9vd25lcgkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAAJX3Vuc3Rha2VyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAANX2Zhcm1pbmdQb3dlcgAAAAAAAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAAEl9sYXN0Q2hlY2tJbnRlcmVzdAkBAAAAEmdldEN1cnJlbnRJbnRlcmVzdAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAABBfd2l0aGRyYXduQW1vdW50CQAAZAAAAAIFAAAAD3dpdGhkcmF3bkFtb3VudAkAAGgAAAACBQAAABNyZXdhcmRBZnRlclNpY2tOZXNzBQAAAAZzY2FsZTIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAABZfbGFzdENoZWNrRmFybWVkQW1vdW50CQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAAFl9sYXN0Q2hlY2tGYXJtZWRBbW91bnQFAAAAEGFzc2V0UmV3YXJkRGVsdGEFAAAAA25pbAUAAAANYXBwZW5kUGVyY2hlcwkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAZjYWxsZXIAAAAAAAAAAAEFAAAAB2Fzc2V0SWQFAAAAA25pbAgFAAAABnNlbmRUeAAAAAJfMQgFAAAABnNlbmRUeAAAAAJfMgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQAAABNjYWxjdWxhdGVQZXJjaFByaWNlAAAAAQAAAAdhZGRyZXNzBAAAABFoYXNBcnRlZmFjdFN0YWtlZAkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAAFGdldEFjY0Jvb3N0ZXJBZGRyZXNzAAAAAAkAASwAAAACCQABLAAAAAICAAAAC0FSVC1YTUlTVExfBQAAAAdhZGRyZXNzAgAAAAZfb3duZXIDCQAAAAAAAAIFAAAAEWhhc0FydGVmYWN0U3Rha2VkAgAAAAAFAAAACnBlcmNoUHJpY2UJAABoAAAAAgkAAGkAAAACBQAAAApwZXJjaFByaWNlAAAAAAAAAAAKAAAAAAAAAAAJAQAAABBpc1Byb3h5U3Rha2luZ1NjAAAAAQAAAAdhZGRyZXNzBAAAABBhbGxvd2VkQ29udHJhY3RzCQEAAAAPZ2V0UHJveHlTdGFraW5nAAAAAAQAAAAUYWxsb3dlZENvbnRyYWN0c0xpc3QJAAS1AAAAAgUAAAAQYWxsb3dlZENvbnRyYWN0cwIAAAABOwkBAAAAAiE9AAAAAgkABE8AAAACBQAAABRhbGxvd2VkQ29udHJhY3RzTGlzdAUAAAAHYWRkcmVzcwUAAAAEdW5pdAEAAAASdW5zdGFrZU5GVEludGVybmFsAAAAAwAAAAVhc3NldAAAAAFpAAAACGNsYWltRWdnBAAAAAdhc3NldElkCQACWQAAAAEFAAAABWFzc2V0BAAAAApyZWFsQ2FsbGVyCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAHYWRkcmVzcwMJAQAAABBpc1Byb3h5U3Rha2luZ1NjAAAAAQkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyBQAAAApyZWFsQ2FsbGVyBAAAAAVjb2xvcgkBAAAACXRha2VSaWdodAAAAAIICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAB2Fzc2V0SWQAAAAEbmFtZQAAAAAAAAAAAQMJAAAAAAAAAgUAAAAFY29sb3ICAAAAAVUJAAACAAAAAQIAAAAwRlVOOiB1c2UgYW5vdGhlciBmdW5jdGlvbiB0byB1bnN0YWtlIEphY2twb3QgTkZUBAAAAAZyZXN1bHQJAQAAABBnZXRVbnN0YWtlUmVzdWx0AAAABgUAAAAHYWRkcmVzcwUAAAAHYXNzZXRJZAUAAAAFY29sb3IIBQAAAAFpAAAABmNhbGxlcgUAAAAKcmVhbENhbGxlcgUAAAAIY2xhaW1FZ2cFAAAABnJlc3VsdAEAAAAWdW5zdGFrZUphY2twb3RJbnRlcm5hbAAAAAMAAAAFYXNzZXQAAAABaQAAAAhjbGFpbUVnZwQAAAAHYXNzZXRJZAkAAlkAAAABBQAAAAVhc3NldAQAAAAKcmVhbENhbGxlcgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAB2FkZHJlc3MDCQEAAAAQaXNQcm94eVN0YWtpbmdTYwAAAAEJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgUAAAAKcmVhbENhbGxlcgQAAAAFY29sb3IJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAALX3BlcmNoQ29sb3IDCQEAAAACIT0AAAACCQEAAAAJdGFrZVJpZ2h0AAAAAgkBAAAABXZhbHVlAAAAAQgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAAHYXNzZXRJZAAAAARuYW1lAAAAAAAAAAABAgAAAAFVCQAAAgAAAAECAAAADGphY2twb3Qgb25seQQAAAAGcmVzdWx0CQEAAAAQZ2V0VW5zdGFrZVJlc3VsdAAAAAYFAAAAB2FkZHJlc3MFAAAAB2Fzc2V0SWQFAAAABWNvbG9yCAUAAAABaQAAAAZjYWxsZXIFAAAACnJlYWxDYWxsZXIFAAAACGNsYWltRWdnBQAAAAZyZXN1bHQAAAANAAAAAWkBAAAAD2NvbmZpZ3VyZU9yYWNsZQAAAAEAAAAGb3JhY2xlAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAAD0ZDTzogYWRtaW4gb25seQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAABRzdGF0aWNfb3JhY2xlQWRkcmVzcwUAAAAGb3JhY2xlBQAAAANuaWwAAAABaQEAAAAEaW5pdAAAAAADCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAAORkk6IGFkbWluIG9ubHkJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAEXRvdGFsX3N0YXJ0SGVpZ2h0BQAAAAZoZWlnaHQFAAAAA25pbAAAAAFpAQAAAAhidXlQZXJjaAAAAAIAAAAFY29sb3IAAAAOcmVmZXJlckFkZHJlc3MEAAAABmxvY2tlZAkBAAAACGlzTG9ja2VkAAAAAAMJAAAAAAAAAgUAAAAGbG9ja2VkBQAAAAZsb2NrZWQDCQAAZgAAAAIAAAAAAAAAAAAJAQAAAAV2YWx1ZQAAAAEJAARPAAAAAgkABEwAAAACAgAAAAFCCQAETAAAAAICAAAAAVIJAARMAAAAAgIAAAABRwkABEwAAAACAgAAAAFZBQAAAANuaWwFAAAABWNvbG9yCQAAAgAAAAECAAAAHnlvdSBuZWVkIHRvIHNldCBjb2xvciBwcm9wZXJseQQAAAAKZXhhY3RQcmljZQkBAAAAE2NhbGN1bGF0ZVBlcmNoUHJpY2UAAAABCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAJbGVmdFRvUGF5AwkAAAAAAAACCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIIBQAAAAFpAAAABmNhbGxlcgQAAAATYW1vdW50UGFpZEJ5Q291cG9ucwkBAAAABWFzSW50AAAAAQkAA/wAAAAECQEAAAARZ2V0Q291cG9uc0FkZHJlc3MAAAAAAgAAAAp1c2VDb3Vwb25zCQAETAAAAAIFAAAACmV4YWN0UHJpY2UFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAABNhbW91bnRQYWlkQnlDb3Vwb25zBQAAABNhbW91bnRQYWlkQnlDb3Vwb25zCQAAZQAAAAIFAAAACmV4YWN0UHJpY2UFAAAAE2Ftb3VudFBhaWRCeUNvdXBvbnMJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQAAAApleGFjdFByaWNlBAAAAAdwYXltZW50AwkBAAAAAiE9AAAAAgUAAAAJbGVmdFRvUGF5AAAAAAAAAAAABAAAAAxmaXJzdFBheW1lbnQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAADCQEAAAACIT0AAAACCAUAAAAMZmlyc3RQYXltZW50AAAAB2Fzc2V0SWQJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAkAAAIAAAABCQABLAAAAAICAAAAQUZCUDogWW91IGNhbiBhdHRhY2ggb25seSBFR0cgdG9rZW5zIHdpdGggdGhlIGZvbGxvd2luZyBhc3NldCBpZDogCQACWAAAAAEJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAMJAQAAAAIhPQAAAAIIBQAAAAxmaXJzdFBheW1lbnQAAAAGYW1vdW50BQAAAAlsZWZ0VG9QYXkJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAABIRkJQOiBUbyBidXkgYSBwZXJjaCB5b3UgY3VycmVudGx5IG5lZWQgdGhlIGZvbGxvd2luZyBhbW91bnQgb2YgRUdHbGV0czogCQABpAAAAAEFAAAACWxlZnRUb1BheQIAAAABIAkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAFXJlZmVyZXJSZXdhcmRGb3JQZXJjaAkAAGsAAAADBQAAAAlsZWZ0VG9QYXkFAAAADVJlZmVyZXJSZXdhcmQAAAAAAAAAAGQEAAAAB3JlZkNhbGwJAAP8AAAABAkBAAAAFWdldFJlZkNvbnRyYWN0QWRkcmVzcwAAAAACAAAACnJlZlBheW1lbnQJAARMAAAAAgUAAAAOcmVmZXJlckFkZHJlc3MFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgkBAAAADWdldEVnZ0Fzc2V0SWQAAAAABQAAABVyZWZlcmVyUmV3YXJkRm9yUGVyY2gFAAAAA25pbAMJAAAAAAAAAgUAAAAHcmVmQ2FsbAUAAAAHcmVmQ2FsbAQAAAAIYnVybkNhbGwJAAP8AAAABAkBAAAADmdldEJ1cm5BZGRyZXNzAAAAAAIAAAAUYnVybkF0dGFjaGVkUGF5bWVudHMFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgkBAAAADWdldEVnZ0Fzc2V0SWQAAAAACQAAZQAAAAIFAAAACWxlZnRUb1BheQUAAAAVcmVmZXJlclJld2FyZEZvclBlcmNoBQAAAANuaWwDCQAAAAAAAAIFAAAACGJ1cm5DYWxsBQAAAAhidXJuQ2FsbAUAAAAJbGVmdFRvUGF5CQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAAAAAAAAAADCQAAAAAAAAIFAAAAB3BheW1lbnQFAAAAB3BheW1lbnQEAAAADnBlcmNoQW1vdW50S2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXICAAAAEl9wZXJjaGVzQXZhaWxhYmxlXwUAAAAFY29sb3IEAAAAC3BlcmNoQW1vdW50CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEFAAAADnBlcmNoQW1vdW50S2V5CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA5wZXJjaEFtb3VudEtleQkAAGQAAAACBQAAAAtwZXJjaEFtb3VudAAAAAAAAAAAAQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAMYWRkRnJlZVBlcmNoAAAAAgAAAAdhZGRyZXNzAAAABWNvbG9yBAAAAAZsb2NrZWQJAQAAAAhpc0xvY2tlZAAAAAADCQAAAAAAAAIFAAAABmxvY2tlZAUAAAAGbG9ja2VkAwkAAGYAAAACAAAAAAAAAAAACQEAAAAFdmFsdWUAAAABCQAETwAAAAIJAARMAAAAAgIAAAABQgkABEwAAAACAgAAAAFSCQAETAAAAAICAAAAAUcJAARMAAAAAgIAAAABWQUAAAADbmlsBQAAAAVjb2xvcgkAAAIAAAABAgAAAB55b3UgbmVlZCB0byBzZXQgY29sb3IgcHJvcGVybHkDAwMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgkBAAAAEWdldFJlYmlydGhBZGRyZXNzAAAAAAkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzBwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyCQEAAAATZ2V0U3dvcFByb21vQWRkcmVzcwAAAAAHCQAAAgAAAAECAAAAG3JlYmlydGggYW5kIHN3b3AgcHJvbW8gb25seQQAAAAOcGVyY2hBbW91bnRLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAABJfcGVyY2hlc0F2YWlsYWJsZV8FAAAABWNvbG9yBAAAAAtwZXJjaEFtb3VudAkBAAAADXRyeUdldEludGVnZXIAAAABBQAAAA5wZXJjaEFtb3VudEtleQkABRQAAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA5wZXJjaEFtb3VudEtleQkAAGQAAAACBQAAAAtwZXJjaEFtb3VudAAAAAAAAAAAAQUAAAADbmlsAgAAAAAJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAACHN0YWtlTkZUAAAAAAQAAAAGbG9ja2VkCQEAAAAIaXNMb2NrZWQAAAAAAwkAAAAAAAACBQAAAAZsb2NrZWQFAAAABmxvY2tlZAQAAAADcG10CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAdhc3NldElkCQEAAAAFdmFsdWUAAAABCAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAApyZWFsQ2FsbGVyCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAHYWRkcmVzcwMJAQAAABBpc1Byb3h5U3Rha2luZ1NjAAAAAQkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyBQAAAApyZWFsQ2FsbGVyBAAAAAVjb2xvcgkBAAAACXRha2VSaWdodAAAAAIICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAB2Fzc2V0SWQAAAAEbmFtZQAAAAAAAAAAAQQAAAAQYXZhaWxhYmxlUGVyY2hlcwkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAASX3BlcmNoZXNBdmFpbGFibGVfBQAAAAVjb2xvcgMJAQAAAAIhPQAAAAIIBQAAAANwbXQAAAAGYW1vdW50AAAAAAAAAAABCQAAAgAAAAECAAAAE05GVCBpcyBub3QgYXR0YWNoZWQDCQAAZwAAAAIAAAAAAAAAAAAFAAAAEGF2YWlsYWJsZVBlcmNoZXMJAAACAAAAAQkAASwAAAACAgAAACNubyBwZXJjaGVzIGF2YWlsYWJsZSBmb3IgdGhlIGNvbG9yIAUAAAAFY29sb3IEAAAADSR0MDE0NjY2MTQ3MzkJAQAAABRnZXRBc3NldEZhcm1pbmdQb3dlcgAAAAIFAAAAB2Fzc2V0SWQFAAAAB2FkZHJlc3MEAAAACGFzc2V0R2VuCAUAAAANJHQwMTQ2NjYxNDczOQAAAAJfMQQAAAARYXNzZXRGYXJtaW5nUG93ZXIIBQAAAA0kdDAxNDY2NjE0NzM5AAAAAl8yCQAETgAAAAIJAQAAAA5nZXRTdGFrZVJlc3VsdAAAAAQFAAAAB2FkZHJlc3MFAAAAB2Fzc2V0SWQFAAAAEWFzc2V0RmFybWluZ1Bvd2VyBQAAAApyZWFsQ2FsbGVyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAASX3BlcmNoZXNBdmFpbGFibGVfBQAAAAVjb2xvcgkAAGUAAAACBQAAABBhdmFpbGFibGVQZXJjaGVzAAAAAAAAAAABBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAFHN0YWtlTkZUV2l0aG91dFBlcmNoAAAAAAQAAAAGbG9ja2VkCQEAAAAIaXNMb2NrZWQAAAAAAwkAAAAAAAACBQAAAAZsb2NrZWQFAAAABmxvY2tlZAQAAAAKZGFwcFRvQ2FsbAkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIDCQEAAAABIQAAAAEJAQAAABBpc1Byb3h5U3Rha2luZ1NjAAAAAQUAAAAKZGFwcFRvQ2FsbAkAAAIAAAABAgAAAD5GU05XUDogT25seSB0cnVzdGVkIHNtYXJ0IGNvbnRyYWN0cyBjYW4gc3Rha2Ugd2l0aG91dCBhIHBlcmNoIQQAAAADcG10CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAdhc3NldElkCQEAAAAFdmFsdWUAAAABCAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAdhZGRyZXNzCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgMJAQAAAAIhPQAAAAIIBQAAAANwbXQAAAAGYW1vdW50AAAAAAAAAAABCQAAAgAAAAECAAAAE05GVCBpcyBub3QgYXR0YWNoZWQEAAAADSR0MDE1MzYzMTU0MzYJAQAAABRnZXRBc3NldEZhcm1pbmdQb3dlcgAAAAIFAAAAB2Fzc2V0SWQFAAAAB2FkZHJlc3MEAAAACGFzc2V0R2VuCAUAAAANJHQwMTUzNjMxNTQzNgAAAAJfMQQAAAARYXNzZXRGYXJtaW5nUG93ZXIIBQAAAA0kdDAxNTM2MzE1NDM2AAAAAl8yBAAAAAVhc3NldAkAAlgAAAABBQAAAAdhc3NldElkBAAAAApyZWFsQ2FsbGVyCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgkABE4AAAACCQEAAAAOZ2V0U3Rha2VSZXN1bHQAAAAEBQAAAAdhZGRyZXNzBQAAAAdhc3NldElkBQAAABFhc3NldEZhcm1pbmdQb3dlcgUAAAAKcmVhbENhbGxlcgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAADl93aXRob3V0X3BlcmNoBgUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAp1bnN0YWtlTkZUAAAAAQAAAAVhc3NldAkBAAAAEnVuc3Rha2VORlRJbnRlcm5hbAAAAAMFAAAABWFzc2V0BQAAAAFpBgAAAAFpAQAAABZ1bnN0YWtlTkZUV2l0aG91dENsYWltAAAAAQAAAAVhc3NldAkBAAAAEnVuc3Rha2VORlRJbnRlcm5hbAAAAAMFAAAABWFzc2V0BQAAAAFpBwAAAAFpAQAAAAxzdGFrZUphY2twb3QAAAABAAAABWNvbG9yBAAAAAZsb2NrZWQJAQAAAAhpc0xvY2tlZAAAAAADCQAAAAAAAAIFAAAABmxvY2tlZAUAAAAGbG9ja2VkBAAAAANwbXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAAB2Fzc2V0SWQJAQAAAAV2YWx1ZQAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAQAAAAKcmVhbENhbGxlcgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAB2FkZHJlc3MDCQEAAAAQaXNQcm94eVN0YWtpbmdTYwAAAAEJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgUAAAAKcmVhbENhbGxlcgQAAAAQYXZhaWxhYmxlUGVyY2hlcwkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAASX3BlcmNoZXNBdmFpbGFibGVfBQAAAAVjb2xvcgQAAAALYXNzZXRJc3N1ZXIICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAB2Fzc2V0SWQAAAAGaXNzdWVyAwkBAAAAAiE9AAAAAggFAAAAA3BtdAAAAAZhbW91bnQAAAAAAAAAAAEJAAACAAAAAQIAAAATTkZUIGlzIG5vdCBhdHRhY2hlZAMDCQAAAAAAAAIFAAAAC2Fzc2V0SXNzdWVyCQEAAAATZ2V0SW5jdWJhdG9yQWRkcmVzcwAAAAAGCQAAAAAAAAIFAAAAC2Fzc2V0SXNzdWVyCQEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAAAwkBAAAAAiE9AAAAAgkBAAAACXRha2VSaWdodAAAAAIJAQAAAAV2YWx1ZQAAAAEICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAB2Fzc2V0SWQAAAAEbmFtZQAAAAAAAAAAAQIAAAABVQkAAAIAAAABAgAAAAxqYWNrcG90IG9ubHkDCQAAZwAAAAIAAAAAAAAAAAAFAAAAEGF2YWlsYWJsZVBlcmNoZXMJAAACAAAAAQkAASwAAAACAgAAAChGU0o6IG5vIHBlcmNoZXMgYXZhaWxhYmxlIGZvciB0aGUgY29sb3IgBQAAAAVjb2xvcgQAAAAMZmFybWluZ1Bvd2VyCQEAAAAUZ2V0QXNzZXRGYXJtaW5nUG93ZXIAAAACBQAAAAdhc3NldElkBQAAAAdhZGRyZXNzCQAETgAAAAIJAQAAAA5nZXRTdGFrZVJlc3VsdAAAAAQFAAAAB2FkZHJlc3MFAAAAB2Fzc2V0SWQIBQAAAAxmYXJtaW5nUG93ZXIAAAACXzIFAAAACnJlYWxDYWxsZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAABJfcGVyY2hlc0F2YWlsYWJsZV8FAAAABWNvbG9yCQAAZQAAAAIFAAAAEGF2YWlsYWJsZVBlcmNoZXMAAAAAAAAAAAEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwkAAlgAAAABBQAAAAdhc3NldElkAgAAAAtfcGVyY2hDb2xvcgUAAAAFY29sb3IFAAAAA25pbAkAAAIAAAABAgAAABJhc3NldCBpcyBub3QgdmFsaWQJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAADnVuc3Rha2VKYWNrcG90AAAAAQAAAAVhc3NldAkBAAAAFnVuc3Rha2VKYWNrcG90SW50ZXJuYWwAAAADBQAAAAVhc3NldAUAAAABaQYAAAABaQEAAAAddW5zdGFrZUphY2twb3RXaXRob3V0Q2xhaW1FZ2cAAAABAAAABWFzc2V0CQEAAAAWdW5zdGFrZUphY2twb3RJbnRlcm5hbAAAAAMFAAAABWFzc2V0BQAAAAFpBwAAAAFpAQAAAAtjbGFpbVJld2FyZAAAAAEAAAAFYXNzZXQEAAAABmxvY2tlZAkBAAAACGlzTG9ja2VkAAAAAAMJAAAAAAAAAgUAAAAGbG9ja2VkBQAAAAZsb2NrZWQEAAAAB2FkZHJlc3MDCQAAAAAAAAIIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgkBAAAAEmdldENmTWFzdGVyQWRkcmVzcwAAAAAJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgQAAAAHYXNzZXRJZAkAAlkAAAABBQAAAAVhc3NldAQAAAANc2lja25lc3NDaGVjawkBAAAACWFzQm9vbGVhbgAAAAEJAAP8AAAABAkBAAAAEmdldFNpY2tuZXNzQWRkcmVzcwAAAAACAAAAEmNoZWNrSWZEdWNrR2V0U2ljawkABEwAAAACBQAAAAVhc3NldAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAADXNpY2tuZXNzQ2hlY2sFAAAADXNpY2tuZXNzQ2hlY2sDBQAAAA1zaWNrbmVzc0NoZWNrBAAAABFhc3NldEZhcm1pbmdQb3dlcgkBAAAAHWdldExhc3RLbm93bkFzc2V0RmFybWluZ1Bvd2VyAAAAAgUAAAAHYWRkcmVzcwUAAAAFYXNzZXQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAEnRvdGFsX2Zhcm1pbmdQb3dlcgkAAGUAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAEnRvdGFsX2Zhcm1pbmdQb3dlcgUAAAARYXNzZXRGYXJtaW5nUG93ZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAAA1fZmFybWluZ1Bvd2VyAAAAAAAAAAAABQAAAANuaWwEAAAAEWFzc2V0RmFybWluZ1Bvd2VyCQEAAAAdZ2V0TGFzdEtub3duQXNzZXRGYXJtaW5nUG93ZXIAAAACBQAAAAdhZGRyZXNzBQAAAAVhc3NldAQAAAAQYXNzZXRSZXdhcmREZWx0YQkBAAAAFGNhbGNBc3NldFJld2Fy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", "height": 3474775, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GvUgWHes5VNq7BRp7SR6anDxHc7iScv1MqFiMv2AeCSg Next: BYbomZ8figSv7VyqSjeS9Tidu8n5nSm5efzTaY495PQd Diff:
OldNewDifferences
6969 func getBurnAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_burnAddress")))
7070
7171
72+func getSicknessAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_sicknessAddress")))
73+
74+
7275 let RefererReward = 5
7376
74-func getRewardPerBlock () = 684
77+func getRewardPerBlock () = 548
7578
7679
7780 func isLocked () = if ((getMaintenance() != ""))
235238 else {
236239 let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower)
237240 let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")))
238- let oldWithdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
239- let reward = ((farmedAmount - oldWithdrawnAmount) / (scale * 100))
241+ let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
242+ let reward = ((farmedAmount - withdrawnAmount) / (scale * 100))
240243 let isWithoutPerch = tryGetBoolean((((("address_" + address) + "_asset_") + asset) + "_without_perch"))
241- let sicknessCheck = false
242- let rewardAfterSickNess = if (sicknessCheck)
243- then 0
244- else reward
245- let appendPerches = if (isWithoutPerch)
246- then [DeleteEntry((((("address_" + address) + "_asset_") + asset) + "_without_perch"))]
247- else [IntegerEntry(((("address_" + address) + "_perchesAvailable_") + color), (tryGetInteger(((("address_" + address) + "_perchesAvailable_") + color)) + 1))]
248- let sendTx = if (claimEggs)
249- then $Tuple2([ScriptTransfer(caller, (rewardAfterSickNess * 1000000), getEggAssetId())], (rewardAfterSickNess * 1000000))
250- else $Tuple2(nil, 0)
251- $Tuple2(((([IntegerEntry("total_farmingPower", (tryGetInteger("total_farmingPower") - assetFarmingPower)), IntegerEntry("total_lastCheckInterest", getCurrentInterest()), IntegerEntry("total_lastCheckInterestHeight", height), DeleteEntry((("asset_" + asset) + "_owner")), DeleteEntry((((("address_" + address) + "_asset_") + asset) + "_unstaker")), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_farmingPower"), 0), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_lastCheckInterest"), getCurrentInterest()), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount")) + (rewardAfterSickNess * scale2))), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")) + assetRewardDelta))] ++ appendPerches) ++ [ScriptTransfer(caller, 1, assetId)]) ++ sendTx._1), sendTx._2)
244+ let sicknessCheck = asBoolean(invoke(getSicknessAddress(), "checkIfDuckGetSick", [asset], nil))
245+ if ((sicknessCheck == sicknessCheck))
246+ then {
247+ let rewardAfterSickNess = if (sicknessCheck)
248+ then 0
249+ else reward
250+ let appendPerches = if (isWithoutPerch)
251+ then [DeleteEntry((((("address_" + address) + "_asset_") + asset) + "_without_perch"))]
252+ else [IntegerEntry(((("address_" + address) + "_perchesAvailable_") + color), (tryGetInteger(((("address_" + address) + "_perchesAvailable_") + color)) + 1))]
253+ let sendTx = if (claimEggs)
254+ then $Tuple2([ScriptTransfer(caller, (rewardAfterSickNess * 1000000), getEggAssetId())], (rewardAfterSickNess * 1000000))
255+ else $Tuple2(nil, 0)
256+ $Tuple2(((([IntegerEntry("total_farmingPower", (tryGetInteger("total_farmingPower") - assetFarmingPower)), IntegerEntry("total_lastCheckInterest", getCurrentInterest()), IntegerEntry("total_lastCheckInterestHeight", height), DeleteEntry((("asset_" + asset) + "_owner")), DeleteEntry((((("address_" + address) + "_asset_") + asset) + "_unstaker")), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_farmingPower"), 0), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_lastCheckInterest"), getCurrentInterest()), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"), (withdrawnAmount + (rewardAfterSickNess * scale2))), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")) + assetRewardDelta))] ++ appendPerches) ++ [ScriptTransfer(caller, 1, assetId)]) ++ sendTx._1), sendTx._2)
257+ }
258+ else throw("Strict value is not equal to itself.")
252259 }
253260 }
254261 }
407414 else if ((0 >= availablePerches))
408415 then throw(("no perches available for the color " + color))
409416 else {
410- let $t01475514828 = getAssetFarmingPower(assetId, address)
411- let assetGen = $t01475514828._1
412- let assetFarmingPower = $t01475514828._2
417+ let $t01466614739 = getAssetFarmingPower(assetId, address)
418+ let assetGen = $t01466614739._1
419+ let assetFarmingPower = $t01466614739._2
413420 (getStakeResult(address, assetId, assetFarmingPower, realCaller) ++ [IntegerEntry(((("address_" + address) + "_perchesAvailable_") + color), (availablePerches - 1))])
414421 }
415422 }
433440 if ((pmt.amount != 1))
434441 then throw("NFT is not attached")
435442 else {
436- let $t01545215525 = getAssetFarmingPower(assetId, address)
437- let assetGen = $t01545215525._1
438- let assetFarmingPower = $t01545215525._2
443+ let $t01536315436 = getAssetFarmingPower(assetId, address)
444+ let assetGen = $t01536315436._1
445+ let assetFarmingPower = $t01536315436._2
439446 let asset = toBase58String(assetId)
440447 let realCaller = toString(i.caller)
441448 (getStakeResult(address, assetId, assetFarmingPower, realCaller) ++ [BooleanEntry((((("address_" + address) + "_asset_") + asset) + "_without_perch"), true)])
509516 then toString(i.caller)
510517 else toString(i.originCaller)
511518 let assetId = fromBase58String(asset)
512- let sicknessCheck = false
513- if (sicknessCheck)
514- then {
515- let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
519+ let sicknessCheck = asBoolean(invoke(getSicknessAddress(), "checkIfDuckGetSick", [asset], nil))
520+ if ((sicknessCheck == sicknessCheck))
521+ then if (sicknessCheck)
522+ then {
523+ let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
516524 [IntegerEntry("total_farmingPower", (tryGetInteger("total_farmingPower") - assetFarmingPower)), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_farmingPower"), 0)]
517- }
518- else {
519- let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
520- let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower)
521- let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")))
522- let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
523- let reward = ((farmedAmount - withdrawnAmount) / (scale * 100))
524- if ((0 >= reward))
525- then throw("FCR: you have no EGGs to withdraw")
526- else $Tuple2([IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount")) + (reward * scale2))), ScriptTransfer(Address(fromBase58String(address)), (reward * 1000000), getEggAssetId())], (reward * 1000000))
527- }
525+ }
526+ else {
527+ let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
528+ let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower)
529+ let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")))
530+ let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
531+ let reward = ((farmedAmount - withdrawnAmount) / (scale * 100))
532+ if ((0 >= reward))
533+ then throw("FCR: you have no EGGs to withdraw")
534+ else $Tuple2([IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount")) + (reward * scale2))), ScriptTransfer(Address(fromBase58String(address)), (reward * 1000000), getEggAssetId())], (reward * 1000000))
535+ }
536+ else throw("Strict value is not equal to itself.")
528537 }
529538 else throw("Strict value is not equal to itself.")
530539 }
533542
534543 @Callable(i)
535544 func healDuck (duckId) = {
536- let address = if (isProxyStakingSc(toString(i.caller)))
537- then toString(i.originCaller)
538- else toString(i.caller)
539- let farmingPower = getAssetFarmingPower(toBytes(duckId), address)._2
545+ let sicknessCheck = asBoolean(invoke(getSicknessAddress(), "healDuck", [duckId], i.payments))
546+ if ((sicknessCheck == sicknessCheck))
547+ then {
548+ let address = if (isProxyStakingSc(toString(i.caller)))
549+ then toString(i.originCaller)
550+ else toString(i.caller)
551+ let farmingPower = getAssetFarmingPower(toBytes(duckId), address)._2
540552 [IntegerEntry("total_farmingPower", (tryGetInteger("total_farmingPower") + farmingPower)), IntegerEntry((((("address_" + address) + "_asset_") + duckId) + "_farmingPower"), farmingPower)]
553+ }
554+ else throw("Strict value is not equal to itself.")
541555 }
542556
543557
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let perchPrice = (100 * 1000000)
55
66 let scale = 10000
77
88 let scale2 = 1000000
99
1010 func isSickDuck (duckId) = (duckId + "_sick")
1111
1212
1313 func tryGetStringExternal (address,key) = match getString(address, key) {
1414 case a: String =>
1515 a
1616 case _ =>
1717 ""
1818 }
1919
2020
2121 func tryGetString (key) = tryGetStringExternal(this, key)
2222
2323
2424 func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
2525
2626
2727 func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), "static_eggAssetId"))
2828
2929
3030 func getIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_incubatorAddress")))
3131
3232
3333 func getRebirthAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_rebirthAddress")))
3434
3535
3636 func getSwopPromoAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_swopPromoAddress")))
3737
3838
3939 func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_breederAddress")))
4040
4141
4242 func getRefContractAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_refContractAddress")))
4343
4444
4545 func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_itemsAddress")))
4646
4747
4848 func getMetaraceAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_metaRaceAddress")))
4949
5050
5151 func getAccBoosterAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_accBoosterAddress")))
5252
5353
5454 func getProxyStaking () = tryGetStringExternal(getOracle(), "static_proxyStakingContracts")
5555
5656
5757 func getMaintenance () = tryGetStringExternal(getOracle(), "static_maintenance")
5858
5959
6060 func getCfMasterAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_cfMasterAddress")))
6161
6262
6363 func getDuckWrapperSc () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_duckWrapper")))
6464
6565
6666 func getCouponsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_couponsAddress")))
6767
6868
6969 func getBurnAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_burnAddress")))
7070
7171
72+func getSicknessAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_sicknessAddress")))
73+
74+
7275 let RefererReward = 5
7376
74-func getRewardPerBlock () = 684
77+func getRewardPerBlock () = 548
7578
7679
7780 func isLocked () = if ((getMaintenance() != ""))
7881 then throw(getMaintenance())
7982 else 0
8083
8184
8285 func tryGetInteger (key) = match getInteger(this, key) {
8386 case b: Int =>
8487 b
8588 case _ =>
8689 0
8790 }
8891
8992
9093 func tryGetBoolean (key) = match getBoolean(this, key) {
9194 case b: Boolean =>
9295 b
9396 case _ =>
9497 false
9598 }
9699
97100
98101 func tryGetBooleanExternal (address,key) = match getBoolean(address, key) {
99102 case b: Boolean =>
100103 b
101104 case _ =>
102105 false
103106 }
104107
105108
106109 func getAssetOrigin (generation) = if ((generation == "G"))
107110 then getIncubatorAddress()
108111 else getBreederAddress()
109112
110113
111114 func getAssetRarity (genotype,generation) = {
112115 let quantity = valueOrErrorMessage(getInteger(getAssetOrigin(generation), (("stats_" + genotype) + "_quantity")), (("stats_" + genotype) + "_quantity not found"))
113116 let power = pow((10000 / quantity), 4, 5, 1, 2, FLOOR)
114117 if ((power > 0))
115118 then power
116119 else 2
117120 }
118121
119122
120123 func asString (value) = match value {
121124 case string: String =>
122125 string
123126 case _ =>
124127 throw("FAS: wrong type, expected: String")
125128 }
126129
127130
128131 func asInt (value) = match value {
129132 case int: Int =>
130133 int
131134 case _ =>
132135 throw("FAI: wrong type, expected: Int")
133136 }
134137
135138
136139 func asBoolean (value) = match value {
137140 case boolean: Boolean =>
138141 boolean
139142 case _ =>
140143 throw("FAB: wrong type, expected: Boolean")
141144 }
142145
143146
144147 func getAssetFarmingPower (assetId,address) = if (if ((value(assetInfo(assetId)).issuer == getBreederAddress()))
145148 then true
146149 else (value(assetInfo(assetId)).issuer == getIncubatorAddress()))
147150 then {
148151 let farmBoost = asInt(invoke(getItemsAddress(), "calculateFarmingPowerBoost", [toBase58String(assetId), address], nil))
149152 if ((farmBoost == farmBoost))
150153 then {
151154 let assetName = value(assetInfo(assetId)).name
152155 let isJackpot = (takeRight(value(assetName), 1) == "U")
153156 let farmGen = if (isJackpot)
154157 then ""
155158 else asString(invoke(getBreederAddress(), "getGenFromName", [assetName], nil))
156159 if ((farmGen == farmGen))
157160 then {
158161 let rarity = if (isJackpot)
159162 then 100
160163 else {
161164 let generation = take(takeRight(assetName, 2), 1)
162165 getAssetRarity(farmGen, generation)
163166 }
164167 let totalFarmingPower = (rarity + fraction(rarity, farmBoost, 100))
165168 $Tuple2(farmGen, totalFarmingPower)
166169 }
167170 else throw("Strict value is not equal to itself.")
168171 }
169172 else throw("Strict value is not equal to itself.")
170173 }
171174 else throw("not valid NFT")
172175
173176
174177 func getLastKnownAssetFarmingPower (address,assetId) = tryGetInteger((((("address_" + address) + "_asset_") + assetId) + "_farmingPower"))
175178
176179
177180 func getAssetsByGen (gen) = {
178181 let s = tryGetString(("assets_" + gen))
179182 if ((s == ""))
180183 then nil
181184 else split(s, ",")
182185 }
183186
184187
185188 func calcInterest (previousInterest,previousInterestHeight,totalFarmingPower) = (previousInterest + (((scale * getRewardPerBlock()) * (height - previousInterestHeight)) / totalFarmingPower))
186189
187190
188191 func getCurrentInterest () = if ((tryGetInteger("total_farmingPower") > 0))
189192 then {
190193 let previousInterest = tryGetInteger("total_lastCheckInterest")
191194 let previousInterestHeight = tryGetInteger("total_lastCheckInterestHeight")
192195 let totalFarmingPower = tryGetInteger("total_farmingPower")
193196 calcInterest(previousInterest, previousInterestHeight, totalFarmingPower)
194197 }
195198 else if ((tryGetInteger("total_startHeight") != 0))
196199 then tryGetInteger("total_lastCheckInterest")
197200 else throw("farming is not launched, yet")
198201
199202
200203 func calcAssetRewardDelta (address,assetId,assetFarmingPower) = {
201204 let lastCheckAssetInterest = tryGetInteger((((("address_" + address) + "_asset_") + assetId) + "_lastCheckInterest"))
202205 let currentInterest = getCurrentInterest()
203206 (assetFarmingPower * (currentInterest - lastCheckAssetInterest))
204207 }
205208
206209
207210 func addAssetIdToGenEntry (assetId,assetGen) = {
208211 let currentValue = tryGetString((("assets_" + assetGen) + "_locked"))
209212 if ((currentValue == ""))
210213 then assetId
211214 else ((currentValue + ",") + assetId)
212215 }
213216
214217
215218 func getStakeResult (address,assetId,assetFarmingPower,unstaker) = {
216219 let asset = toBase58String(assetId)
217220 [IntegerEntry("total_farmingPower", (tryGetInteger("total_farmingPower") + assetFarmingPower)), IntegerEntry("total_lastCheckInterest", getCurrentInterest()), IntegerEntry("total_lastCheckInterestHeight", height), StringEntry((("asset_" + asset) + "_owner"), address), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_farmingPower"), assetFarmingPower), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_lastCheckInterest"), getCurrentInterest()), StringEntry((((("address_" + address) + "_asset_") + asset) + "_unstaker"), unstaker)]
218221 }
219222
220223
221224 func getUnstakeResult (address,assetId,color,caller,realCaller,claimEggs) = {
222225 let locked = isLocked()
223226 if ((locked == locked))
224227 then {
225228 let asset = toBase58String(assetId)
226229 let unstaker = tryGetString((((("address_" + address) + "_asset_") + asset) + "_unstaker"))
227230 if (if ((unstaker != ""))
228231 then (unstaker != realCaller)
229232 else false)
230233 then throw("FUN: It seems duck was staked throuh a dapp, not directly, please unstake through dapp!")
231234 else {
232235 let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
233236 if (!((assetFarmingPower > 0)))
234237 then throw("FGU: Asset farming power not bigger then 0")
235238 else {
236239 let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower)
237240 let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")))
238- let oldWithdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
239- let reward = ((farmedAmount - oldWithdrawnAmount) / (scale * 100))
241+ let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
242+ let reward = ((farmedAmount - withdrawnAmount) / (scale * 100))
240243 let isWithoutPerch = tryGetBoolean((((("address_" + address) + "_asset_") + asset) + "_without_perch"))
241- let sicknessCheck = false
242- let rewardAfterSickNess = if (sicknessCheck)
243- then 0
244- else reward
245- let appendPerches = if (isWithoutPerch)
246- then [DeleteEntry((((("address_" + address) + "_asset_") + asset) + "_without_perch"))]
247- else [IntegerEntry(((("address_" + address) + "_perchesAvailable_") + color), (tryGetInteger(((("address_" + address) + "_perchesAvailable_") + color)) + 1))]
248- let sendTx = if (claimEggs)
249- then $Tuple2([ScriptTransfer(caller, (rewardAfterSickNess * 1000000), getEggAssetId())], (rewardAfterSickNess * 1000000))
250- else $Tuple2(nil, 0)
251- $Tuple2(((([IntegerEntry("total_farmingPower", (tryGetInteger("total_farmingPower") - assetFarmingPower)), IntegerEntry("total_lastCheckInterest", getCurrentInterest()), IntegerEntry("total_lastCheckInterestHeight", height), DeleteEntry((("asset_" + asset) + "_owner")), DeleteEntry((((("address_" + address) + "_asset_") + asset) + "_unstaker")), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_farmingPower"), 0), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_lastCheckInterest"), getCurrentInterest()), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount")) + (rewardAfterSickNess * scale2))), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")) + assetRewardDelta))] ++ appendPerches) ++ [ScriptTransfer(caller, 1, assetId)]) ++ sendTx._1), sendTx._2)
244+ let sicknessCheck = asBoolean(invoke(getSicknessAddress(), "checkIfDuckGetSick", [asset], nil))
245+ if ((sicknessCheck == sicknessCheck))
246+ then {
247+ let rewardAfterSickNess = if (sicknessCheck)
248+ then 0
249+ else reward
250+ let appendPerches = if (isWithoutPerch)
251+ then [DeleteEntry((((("address_" + address) + "_asset_") + asset) + "_without_perch"))]
252+ else [IntegerEntry(((("address_" + address) + "_perchesAvailable_") + color), (tryGetInteger(((("address_" + address) + "_perchesAvailable_") + color)) + 1))]
253+ let sendTx = if (claimEggs)
254+ then $Tuple2([ScriptTransfer(caller, (rewardAfterSickNess * 1000000), getEggAssetId())], (rewardAfterSickNess * 1000000))
255+ else $Tuple2(nil, 0)
256+ $Tuple2(((([IntegerEntry("total_farmingPower", (tryGetInteger("total_farmingPower") - assetFarmingPower)), IntegerEntry("total_lastCheckInterest", getCurrentInterest()), IntegerEntry("total_lastCheckInterestHeight", height), DeleteEntry((("asset_" + asset) + "_owner")), DeleteEntry((((("address_" + address) + "_asset_") + asset) + "_unstaker")), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_farmingPower"), 0), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_lastCheckInterest"), getCurrentInterest()), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"), (withdrawnAmount + (rewardAfterSickNess * scale2))), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")) + assetRewardDelta))] ++ appendPerches) ++ [ScriptTransfer(caller, 1, assetId)]) ++ sendTx._1), sendTx._2)
257+ }
258+ else throw("Strict value is not equal to itself.")
252259 }
253260 }
254261 }
255262 else throw("Strict value is not equal to itself.")
256263 }
257264
258265
259266 func calculatePerchPrice (address) = {
260267 let hasArtefactStaked = tryGetStringExternal(getAccBoosterAddress(), (("ART-XMISTL_" + address) + "_owner"))
261268 if ((hasArtefactStaked == ""))
262269 then perchPrice
263270 else ((perchPrice / 10) * 9)
264271 }
265272
266273
267274 func isProxyStakingSc (address) = {
268275 let allowedContracts = getProxyStaking()
269276 let allowedContractsList = split(allowedContracts, ";")
270277 (indexOf(allowedContractsList, address) != unit)
271278 }
272279
273280
274281 func unstakeNFTInternal (asset,i,claimEgg) = {
275282 let assetId = fromBase58String(asset)
276283 let realCaller = toString(i.caller)
277284 let address = if (isProxyStakingSc(toString(i.caller)))
278285 then toString(i.originCaller)
279286 else realCaller
280287 let color = takeRight(value(assetInfo(assetId)).name, 1)
281288 if ((color == "U"))
282289 then throw("FUN: use another function to unstake Jackpot NFT")
283290 else {
284291 let result = getUnstakeResult(address, assetId, color, i.caller, realCaller, claimEgg)
285292 result
286293 }
287294 }
288295
289296
290297 func unstakeJackpotInternal (asset,i,claimEgg) = {
291298 let assetId = fromBase58String(asset)
292299 let realCaller = toString(i.caller)
293300 let address = if (isProxyStakingSc(toString(i.caller)))
294301 then toString(i.originCaller)
295302 else realCaller
296303 let color = tryGetString((((("address_" + address) + "_asset_") + asset) + "_perchColor"))
297304 if ((takeRight(value(value(assetInfo(assetId)).name), 1) != "U"))
298305 then throw("jackpot only")
299306 else {
300307 let result = getUnstakeResult(address, assetId, color, i.caller, realCaller, claimEgg)
301308 result
302309 }
303310 }
304311
305312
306313 @Callable(i)
307314 func configureOracle (oracle) = if ((i.caller != this))
308315 then throw("FCO: admin only")
309316 else [StringEntry("static_oracleAddress", oracle)]
310317
311318
312319
313320 @Callable(i)
314321 func init () = if ((i.caller != this))
315322 then throw("FI: admin only")
316323 else [IntegerEntry("total_startHeight", height)]
317324
318325
319326
320327 @Callable(i)
321328 func buyPerch (color,refererAddress) = {
322329 let locked = isLocked()
323330 if ((locked == locked))
324331 then if ((0 > value(indexOf(["B", "R", "G", "Y"], color))))
325332 then throw("you need to set color properly")
326333 else {
327334 let exactPrice = calculatePerchPrice(toString(i.caller))
328335 let leftToPay = if ((i.originCaller == i.caller))
329336 then {
330337 let amountPaidByCoupons = asInt(invoke(getCouponsAddress(), "useCoupons", [exactPrice], nil))
331338 if ((amountPaidByCoupons == amountPaidByCoupons))
332339 then (exactPrice - amountPaidByCoupons)
333340 else throw("Strict value is not equal to itself.")
334341 }
335342 else exactPrice
336343 let payment = if ((leftToPay != 0))
337344 then {
338345 let firstPayment = value(i.payments[0])
339346 if ((firstPayment.assetId != getEggAssetId()))
340347 then throw(("FBP: You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId())))
341348 else if ((firstPayment.amount != leftToPay))
342349 then throw(((("FBP: To buy a perch you currently need the following amount of EGGlets: " + toString(leftToPay)) + " ") + toString(i.caller)))
343350 else {
344351 let refererRewardForPerch = fraction(leftToPay, RefererReward, 100)
345352 let refCall = invoke(getRefContractAddress(), "refPayment", [refererAddress], [AttachedPayment(getEggAssetId(), refererRewardForPerch)])
346353 if ((refCall == refCall))
347354 then {
348355 let burnCall = invoke(getBurnAddress(), "burnAttachedPayments", nil, [AttachedPayment(getEggAssetId(), (leftToPay - refererRewardForPerch))])
349356 if ((burnCall == burnCall))
350357 then leftToPay
351358 else throw("Strict value is not equal to itself.")
352359 }
353360 else throw("Strict value is not equal to itself.")
354361 }
355362 }
356363 else 0
357364 if ((payment == payment))
358365 then {
359366 let perchAmountKey = ((("address_" + toString(i.caller)) + "_perchesAvailable_") + color)
360367 let perchAmount = tryGetInteger(perchAmountKey)
361368 [IntegerEntry(perchAmountKey, (perchAmount + 1))]
362369 }
363370 else throw("Strict value is not equal to itself.")
364371 }
365372 else throw("Strict value is not equal to itself.")
366373 }
367374
368375
369376
370377 @Callable(i)
371378 func addFreePerch (address,color) = {
372379 let locked = isLocked()
373380 if ((locked == locked))
374381 then if ((0 > value(indexOf(["B", "R", "G", "Y"], color))))
375382 then throw("you need to set color properly")
376383 else if (if (if ((i.caller != getRebirthAddress()))
377384 then (i.caller != this)
378385 else false)
379386 then (i.caller != getSwopPromoAddress())
380387 else false)
381388 then throw("rebirth and swop promo only")
382389 else {
383390 let perchAmountKey = ((("address_" + address) + "_perchesAvailable_") + color)
384391 let perchAmount = tryGetInteger(perchAmountKey)
385392 $Tuple2([IntegerEntry(perchAmountKey, (perchAmount + 1))], "")
386393 }
387394 else throw("Strict value is not equal to itself.")
388395 }
389396
390397
391398
392399 @Callable(i)
393400 func stakeNFT () = {
394401 let locked = isLocked()
395402 if ((locked == locked))
396403 then {
397404 let pmt = value(i.payments[0])
398405 let assetId = value(value(i.payments[0]).assetId)
399406 let realCaller = toString(i.caller)
400407 let address = if (isProxyStakingSc(toString(i.caller)))
401408 then toString(i.originCaller)
402409 else realCaller
403410 let color = takeRight(value(assetInfo(assetId)).name, 1)
404411 let availablePerches = tryGetInteger(((("address_" + address) + "_perchesAvailable_") + color))
405412 if ((pmt.amount != 1))
406413 then throw("NFT is not attached")
407414 else if ((0 >= availablePerches))
408415 then throw(("no perches available for the color " + color))
409416 else {
410- let $t01475514828 = getAssetFarmingPower(assetId, address)
411- let assetGen = $t01475514828._1
412- let assetFarmingPower = $t01475514828._2
417+ let $t01466614739 = getAssetFarmingPower(assetId, address)
418+ let assetGen = $t01466614739._1
419+ let assetFarmingPower = $t01466614739._2
413420 (getStakeResult(address, assetId, assetFarmingPower, realCaller) ++ [IntegerEntry(((("address_" + address) + "_perchesAvailable_") + color), (availablePerches - 1))])
414421 }
415422 }
416423 else throw("Strict value is not equal to itself.")
417424 }
418425
419426
420427
421428 @Callable(i)
422429 func stakeNFTWithoutPerch () = {
423430 let locked = isLocked()
424431 if ((locked == locked))
425432 then {
426433 let dappToCall = toString(i.caller)
427434 if (!(isProxyStakingSc(dappToCall)))
428435 then throw("FSNWP: Only trusted smart contracts can stake without a perch!")
429436 else {
430437 let pmt = value(i.payments[0])
431438 let assetId = value(value(i.payments[0]).assetId)
432439 let address = toString(i.originCaller)
433440 if ((pmt.amount != 1))
434441 then throw("NFT is not attached")
435442 else {
436- let $t01545215525 = getAssetFarmingPower(assetId, address)
437- let assetGen = $t01545215525._1
438- let assetFarmingPower = $t01545215525._2
443+ let $t01536315436 = getAssetFarmingPower(assetId, address)
444+ let assetGen = $t01536315436._1
445+ let assetFarmingPower = $t01536315436._2
439446 let asset = toBase58String(assetId)
440447 let realCaller = toString(i.caller)
441448 (getStakeResult(address, assetId, assetFarmingPower, realCaller) ++ [BooleanEntry((((("address_" + address) + "_asset_") + asset) + "_without_perch"), true)])
442449 }
443450 }
444451 }
445452 else throw("Strict value is not equal to itself.")
446453 }
447454
448455
449456
450457 @Callable(i)
451458 func unstakeNFT (asset) = unstakeNFTInternal(asset, i, true)
452459
453460
454461
455462 @Callable(i)
456463 func unstakeNFTWithoutClaim (asset) = unstakeNFTInternal(asset, i, false)
457464
458465
459466
460467 @Callable(i)
461468 func stakeJackpot (color) = {
462469 let locked = isLocked()
463470 if ((locked == locked))
464471 then {
465472 let pmt = value(i.payments[0])
466473 let assetId = value(pmt.assetId)
467474 let realCaller = toString(i.caller)
468475 let address = if (isProxyStakingSc(toString(i.caller)))
469476 then toString(i.originCaller)
470477 else realCaller
471478 let availablePerches = tryGetInteger(((("address_" + address) + "_perchesAvailable_") + color))
472479 let assetIssuer = value(assetInfo(assetId)).issuer
473480 if ((pmt.amount != 1))
474481 then throw("NFT is not attached")
475482 else if (if ((assetIssuer == getIncubatorAddress()))
476483 then true
477484 else (assetIssuer == getBreederAddress()))
478485 then if ((takeRight(value(value(assetInfo(assetId)).name), 1) != "U"))
479486 then throw("jackpot only")
480487 else if ((0 >= availablePerches))
481488 then throw(("FSJ: no perches available for the color " + color))
482489 else {
483490 let farmingPower = getAssetFarmingPower(assetId, address)
484491 (getStakeResult(address, assetId, farmingPower._2, realCaller) ++ [IntegerEntry(((("address_" + address) + "_perchesAvailable_") + color), (availablePerches - 1)), StringEntry((((("address_" + address) + "_asset_") + toBase58String(assetId)) + "_perchColor"), color)])
485492 }
486493 else throw("asset is not valid")
487494 }
488495 else throw("Strict value is not equal to itself.")
489496 }
490497
491498
492499
493500 @Callable(i)
494501 func unstakeJackpot (asset) = unstakeJackpotInternal(asset, i, true)
495502
496503
497504
498505 @Callable(i)
499506 func unstakeJackpotWithoutClaimEgg (asset) = unstakeJackpotInternal(asset, i, false)
500507
501508
502509
503510 @Callable(i)
504511 func claimReward (asset) = {
505512 let locked = isLocked()
506513 if ((locked == locked))
507514 then {
508515 let address = if ((i.originCaller == getCfMasterAddress()))
509516 then toString(i.caller)
510517 else toString(i.originCaller)
511518 let assetId = fromBase58String(asset)
512- let sicknessCheck = false
513- if (sicknessCheck)
514- then {
515- let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
519+ let sicknessCheck = asBoolean(invoke(getSicknessAddress(), "checkIfDuckGetSick", [asset], nil))
520+ if ((sicknessCheck == sicknessCheck))
521+ then if (sicknessCheck)
522+ then {
523+ let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
516524 [IntegerEntry("total_farmingPower", (tryGetInteger("total_farmingPower") - assetFarmingPower)), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_farmingPower"), 0)]
517- }
518- else {
519- let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
520- let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower)
521- let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")))
522- let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
523- let reward = ((farmedAmount - withdrawnAmount) / (scale * 100))
524- if ((0 >= reward))
525- then throw("FCR: you have no EGGs to withdraw")
526- else $Tuple2([IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount")) + (reward * scale2))), ScriptTransfer(Address(fromBase58String(address)), (reward * 1000000), getEggAssetId())], (reward * 1000000))
527- }
525+ }
526+ else {
527+ let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
528+ let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower)
529+ let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")))
530+ let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
531+ let reward = ((farmedAmount - withdrawnAmount) / (scale * 100))
532+ if ((0 >= reward))
533+ then throw("FCR: you have no EGGs to withdraw")
534+ else $Tuple2([IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount")) + (reward * scale2))), ScriptTransfer(Address(fromBase58String(address)), (reward * 1000000), getEggAssetId())], (reward * 1000000))
535+ }
536+ else throw("Strict value is not equal to itself.")
528537 }
529538 else throw("Strict value is not equal to itself.")
530539 }
531540
532541
533542
534543 @Callable(i)
535544 func healDuck (duckId) = {
536- let address = if (isProxyStakingSc(toString(i.caller)))
537- then toString(i.originCaller)
538- else toString(i.caller)
539- let farmingPower = getAssetFarmingPower(toBytes(duckId), address)._2
545+ let sicknessCheck = asBoolean(invoke(getSicknessAddress(), "healDuck", [duckId], i.payments))
546+ if ((sicknessCheck == sicknessCheck))
547+ then {
548+ let address = if (isProxyStakingSc(toString(i.caller)))
549+ then toString(i.originCaller)
550+ else toString(i.caller)
551+ let farmingPower = getAssetFarmingPower(toBytes(duckId), address)._2
540552 [IntegerEntry("total_farmingPower", (tryGetInteger("total_farmingPower") + farmingPower)), IntegerEntry((((("address_" + address) + "_asset_") + duckId) + "_farmingPower"), farmingPower)]
553+ }
554+ else throw("Strict value is not equal to itself.")
541555 }
542556
543557

github/deemru/w8io/873ac7e 
96.06 ms