tx · 42DmXwKtw7jDJaxKPyvRhQ77FhKbMSayuCzeLkjiz2uR

3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph:  -0.01400000 Waves

2022.02.09 18:12 [1916260] smart account 3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph > SELF 0.00000000 Waves

{ "type": 13, "id": "42DmXwKtw7jDJaxKPyvRhQ77FhKbMSayuCzeLkjiz2uR", "fee": 1400000, "feeAssetId": null, "timestamp": 1644419554986, "version": 2, "chainId": 84, "sender": "3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph", "senderPublicKey": "G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD", "proofs": [ "3ie478tdnvC1zZdMQGQchnPRt1QQprAEv3uXPSqVE9dRkBScDSmV8Ne1vnzNrN75ZDWFskJnyCV9XmSYXdcejMzA", "3MyE7bVwS2TipvgWccgacoJYWeBcemgC8dPdv2nZyv7HorzN9F7PUhbRFyaMsiauZgyCvqH5nhLot53AVoch9xS3", "3pZfymnZzQu27Tbgsd2CnXZpuzPwtv4VVk1cxZh9T2t14vM7ZPuLX5qS9VEkARTCM2oNN2EtbtWRACZ58MU1yskW" ], "script": "base64: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BmFtb3VudAUAAAAPYXNzZXRJZFF1YW50aXR5BQAAABBkQXBwU3Rha2VkVG9rZW5zBQAAABR0cmFuc2ZlclRvVXNlckFtb3VudAQAAAAUdHJhbnNmZXJUb1VzZXJBbW91bnQJAABrAAAAAwUAAAAGYW1vdW50BQAAABBkQXBwU3Rha2VkVG9rZW5zBQAAAA9hc3NldElkUXVhbnRpdHkFAAAAFHRyYW5zZmVyVG9Vc2VyQW1vdW50AQAAAA91c2VyV2l0aGRyYXdLZXkAAAADAAAABHBvb2wAAAALdXNlckFkZHJlc3MAAAANdHJhbnNhY3Rpb25JZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8FAAAAC3VzZXJBZGRyZXNzAgAAAAFfBQAAAA10cmFuc2FjdGlvbklkAgAAAAlfd2l0aGRyYXcBAAAAGXVzZXJXaXRoZHJhd0J1cm5Ub2tlbnNLZXkAAAADAAAABHBvb2wAAAALdXNlckFkZHJlc3MAAAANdHJhbnNhY3Rpb25JZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8FAAAAC3VzZXJBZGRyZXNzAgAAAAFfBQAAAA10cmFuc2FjdGlvbklkAgAAABRfd2l0aGRyYXdfYnVybl90b2tlbgEAAAAVZ2V0VXNlclRvdGFsTG9ja2VkS2V5AAAAAgAAAARwb29sAAAAC3VzZXJBZGRyZXNzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfBQAAAAt1c2VyQWRkcmVzcwIAAAAbX3NlcnZpY2VfdG9rZW5fdG90YWxfbG9ja2VkAQAAABJnZXRVc2VyVG90YWxMb2NrZWQAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABB8AAAABBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAADaW50BQAAAAckbWF0Y2gwBQAAAANpbnQEAAAAB25vdGhpbmcFAAAAByRtYXRjaDAAAAAAAAAAAAAAAAAIAAAAAWkBAAAACGFkZFBvb2xzAAAABAAAAAVwb29scwAAAA9saXF1aWRpdHlUb2tlbnMAAAANc2VydmljZVRva2VucwAAABZsaXF1aWRpdHlUb2tlbkRlY2ltYWxzAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkxCQAETAAAAAIFAAAADGFkbWluUHViS2V5MgkABEwAAAACBQAAAAxhZG1pblB1YktleTMFAAAAA25pbAgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5CgEAAAAQZ2VuZXJhdGVQb29sS2V5cwAAAAIAAAALYWNjdW11bGF0ZWQAAAAEcG9vbAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAARwb29sAgAAAA5fYXNzZXRfYmFsYW5jZQAAAAAAAAAAAAUAAAALYWNjdW11bGF0ZWQKAQAAAB5nZW5lcmF0ZVBvb2xMaXF1aWRpdHlUb2tlbktleXMAAAACAAAAC2FjY3VtdWxhdGVkAAAABHBvb2wEAAAACXBvb2xJbmRleAkBAAAABXZhbHVlAAAAAQkABE8AAAACBQAAAAVwb29scwUAAAAEcG9vbAQAAAAObGlxdWlkaXR5VG9rZW4JAAGRAAAAAgUAAAAPbGlxdWlkaXR5VG9rZW5zBQAAAAlwb29sSW5kZXgJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACBQAAAARwb29sAgAAABBfbGlxdWlkaXR5X3Rva2VuBQAAAA5saXF1aWRpdHlUb2tlbgUAAAALYWNjdW11bGF0ZWQKAQAAABxnZW5lcmF0ZVBvb2xTZXJ2aWNlVG9rZW5LZXlzAAAAAgAAAAthY2N1bXVsYXRlZAAAAARwb29sBAAAAAlwb29sSW5kZXgJAQAAAAV2YWx1ZQAAAAEJAARPAAAAAgUAAAAFcG9vbHMFAAAABHBvb2wEAAAADmxpcXVpZGl0eVRva2VuCQABkQAAAAIFAAAADXNlcnZpY2VUb2tlbnMFAAAACXBvb2xJbmRleAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wCAAAADl9zZXJ2aWNlX3Rva2VuBQAAAA5saXF1aWRpdHlUb2tlbgUAAAALYWNjdW11bGF0ZWQKAQAAACVnZW5lcmF0ZVBvb2xMaXF1aWRpdHlUb2tlbkRlY2ltYWxLZXlzAAAAAgAAAAthY2N1bXVsYXRlZAAAAARwb29sBAAAAAlwb29sSW5kZXgJAQAAAAV2YWx1ZQAAAAEJAARPAAAAAgUAAAAFcG9vbHMFAAAABHBvb2wEAAAADmxpcXVpZGl0eVRva2VuCQABkQAAAAIFAAAAFmxpcXVpZGl0eVRva2VuRGVjaW1hbHMFAAAACXBvb2xJbmRleAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAARwb29sAgAAABZfc2VydmljZV90b2tlbl9kZWNpbWFsBQAAAA5saXF1aWRpdHlUb2tlbgUAAAALYWNjdW11bGF0ZWQKAQAAABZnZW5lcmF0ZVBvb2xBY3RpdmVLZXlzAAAAAgAAAAthY2N1bXVsYXRlZAAAAARwb29sCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAB19hY3RpdmUGBQAAAAthY2N1bXVsYXRlZAQAAAAPcG9vbEJhbGFuY2VLZXlzCgAAAAACJGwFAAAABXBvb2xzCgAAAAACJHMJAAGQAAAAAQUAAAACJGwKAAAAAAUkYWNjMAUAAAADbmlsCgEAAAAFJGYwXzEAAAACAAAAAiRhAAAAAiRpAwkAAGcAAAACBQAAAAIkaQUAAAACJHMFAAAAAiRhCQEAAAAQZ2VuZXJhdGVQb29sS2V5cwAAAAIFAAAAAiRhCQABkQAAAAIFAAAAAiRsBQAAAAIkaQoBAAAABSRmMF8yAAAAAgAAAAIkYQAAAAIkaQMJAABnAAAAAgUAAAACJGkFAAAAAiRzBQAAAAIkYQkAAAIAAAABAgAAABRMaXN0IHNpemUgZXhjZWVkcyAyMAkBAAAABSRmMF8yAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgUAAAAFJGFjYzAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAIAAAAAAAAAAAMAAAAAAAAAAAQAAAAAAAAAAAUAAAAAAAAAAAYAAAAAAAAAAAcAAAAAAAAAAAgAAAAAAAAAAAkAAAAAAAAAAAoAAAAAAAAAAAsAAAAAAAAAAAwAAAAAAAAAAA0AAAAAAAAAAA4AAAAAAAAAAA8AAAAAAAAAABAAAAAAAAAAABEAAAAAAAAAABIAAAAAAAAAABMAAAAAAAAAABQEAAAAFnBvb2xMaXF1aWRpdHlUb2tlbktleXMKAAAAAAIkbAUAAAAFcG9vbHMKAAAAAAIkcwkAAZAAAAABBQAAAAIkbAoAAAAABSRhY2MwBQAAAANuaWwKAQAAAAUkZjFfMQAAAAIAAAACJGEAAAACJGkDCQAAZwAAAAIFAAAAAiRpBQAAAAIkcwUAAAACJGEJAQAAAB5nZW5lcmF0ZVBvb2xMaXF1aWRpdHlUb2tlbktleXMAAAACBQAAAAIkYQkAAZEAAAACBQAAAAIkbAUAAAACJGkKAQAAAAUkZjFfMgAAAAIAAAACJGEAAAACJGkDCQAAZwAAAAIFAAAAAiRpBQAAAAIkcwUAAAACJGEJAAACAAAAAQIAAAAUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQAAAAUkZjFfMgAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIFAAAABSRhY2MwAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAACAAAAAAAAAAADAAAAAAAAAAAEAAAAAAAAAAAFAAAAAAAAAAAGAAAAAAAAAAAHAAAAAAAAAAAIAAAAAAAAAAAJAAAAAAAAAAAKAAAAAAAAAAALAAAAAAAAAAAMAAAAAAAAAAANAAAAAAAAAAAOAAAAAAAAAAAPAAAAAAAAAAAQAAAAAAAAAAARAAAAAAAAAAASAAAAAAAAAAATAAAAAAAAAAAUBAAAABRwb29sU2VydmljZVRva2VuS2V5cwoAAAAAAiRsBQAAAAVwb29scwoAAAAAAiRzCQABkAAAAAEFAAAAAiRsCgAAAAAFJGFjYzAFAAAAA25pbAoBAAAABSRmMl8xAAAAAgAAAAIkYQAAAAIkaQMJAABnAAAAAgUAAAACJGkFAAAAAiRzBQAAAAIkYQkBAAAAHGdlbmVyYXRlUG9vbFNlcnZpY2VUb2tlbktleXMAAAACBQAAAAIkYQkAAZEAAAACBQAAAAIkbAUAAAACJGkKAQAAAAUkZjJfMgAAAAIAAAACJGEAAAACJGkDCQAAZwAAAAIFAAAAAiRpBQAAAAIkcwUAAAACJGEJAAACAAAAAQIAAAAUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQAAAAUkZjJfMgAAAAIJAQAAAAUkZjJfMQAAAAIJAQAAAAUkZjJfMQAAAAIJAQAAAAUkZjJfMQAAAAIJAQAAAAUkZjJfMQAAAAIJAQAAAAUkZjJfMQAAAAIJAQAAAAUkZjJfMQAAAAIJAQAAAAUkZjJfMQAAAAIJAQAAAAUkZjJfMQAAAAIJAQAAAAUkZjJfMQAAAAIJAQAAAAUkZjJfMQAAAAIJAQAAAAUkZjJfMQAAAAIJAQAAAAUkZjJfMQAAAAIJAQAAAAUkZjJfMQAAAAIJAQAAAAUkZjJfMQAAAAIJAQAAAAUkZjJfMQAAAAIJAQAAAAUkZjJfMQAAAAIJAQAAAAUkZjJfMQAAAAIJAQAAAAUkZjJfMQAAAAIJAQAAAAUkZjJfMQAAAAIJAQAAAAUkZjJfMQAAAAIFAAAABSRhY2MwAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAACAAAAAAAAAAADAAAAAAAAAAAEAAAAAAAAAAAFAAAAAAAAAAAGAAAAAAAAAAAHAAAAAAAAAAAIAAAAAAAAAAAJAAAAAAAAAAAKAAAAAAAAAAALAAAAAAAAAAAMAAAAAAAAAAANAAAAAAAAAAAOAAAAAAAAAAAPAAAAAAAAAAAQAAAAAAAAAAARAAAAAAAAAAASAAAAAAAAAAATAAAAAAAAAAAUBAAAAB1wb29sTGlxdWlkaXR5VG9rZW5EZWNpbWFsS2V5cwoAAAAAAiRsBQAAAAVwb29scwoAAAAAAiRzCQABkAAAAAEFAAAAAiRsCgAAAAAFJGFjYzAFAAAAA25pbAoBAAAABSRmM18xAAAAAgAAAAIkYQAAAAIkaQMJAABnAAAAAgUAAAACJGkFAAAAAiRzBQAAAAIkYQkBAAAAJWdlbmVyYXRlUG9vbExpcXVpZGl0eVRva2VuRGVjaW1hbEtleXMAAAACBQAAAAIkYQkAAZEAAAACBQAAAAIkbAUAAAACJGkKAQAAAAUkZjNfMgAAAAIAAAACJGEAAAACJGkDCQAAZwAAAAIFAAAAAiRpBQAAAAIkcwUAAAACJGEJAAACAAAAAQIAAAAUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQAAAAUkZjNfMgAAAAIJAQAAAAUkZjNfMQAAAAIJAQAAAAUkZjNfMQAAAAIJAQAAAAUkZjNfMQAAAAIJAQAAAAUkZjNfMQAAAAIJAQAAAAUkZjNfMQAAAAIJAQAAAAUkZjNfMQAAAAIJAQAAAAUkZjNfMQAAAAIJAQAAAAUkZjNfMQAAAAIJAQAAAAUkZjNfMQAAAAIJAQAAAAUkZjNfMQAAAAIJAQAAAAUkZjNfMQAAAAIJAQAAAAUkZjNfMQAAAAIJAQAAAAUkZjNfMQAAAAIJAQAAAAUkZjNfMQAAAAIJAQAAAAUkZjNfMQAAAAIJAQAAAAUkZjNfMQAAAAIJAQAAAAUkZjNfMQAAAAIJAQAAAAUkZjNfMQAAAAIJAQAAAAUkZjNfMQAAAAIJAQAAAAUkZjNfMQAAAAIFAAAABSRhY2MwAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAACAAAAAAAAAAADAAAAAAAAAAAEAAAAAAAAAAAFAAAAAAAAAAAGAAAAAAAAAAAHAAAAAAAAAAAIAAAAAAAAAAAJAAAAAAAAAAAKAAAAAAAAAAALAAAAAAAAAAAMAAAAAAAAAAANAAAAAAAAAAAOAAAAAAAAAAAPAAAAAAAAAAAQAAAAAAAAAAARAAAAAAAAAAASAAAAAAAAAAATAAAAAAAAAAAUBAAAAA5wb29sQWN0aXZlS2V5cwoAAAAAAiRsBQAAAAVwb29scwoAAAAAAiRzCQABkAAAAAEFAAAAAiRsCgAAAAAFJGFjYzAFAAAAA25pbAoBAAAABSRmNF8xAAAAAgAAAAIkYQAAAAIkaQMJAABnAAAAAgUAAAACJGkFAAAAAiRzBQAAAAIkYQkBAAAAFmdlbmVyYXRlUG9vbEFjdGl2ZUtleXMAAAACBQAAAAIkYQkAAZEAAAACBQAAAAIkbAUAAAACJGkKAQAAAAUkZjRfMgAAAAIAAAACJGEAAAACJGkDCQAAZwAAAAIFAAAAAiRpBQAAAAIkcwUAAAACJGEJAAACAAAAAQIAAAAUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQAAAAUkZjRfMgAAAAIJAQAAAAUkZjRfMQAAAAIJAQAAAAUkZjRfMQAAAAIJAQAAAAUkZjRfMQAAAAIJAQAAAAUkZjRfMQAAAAIJAQAAAAUkZjRfMQAAAAIJAQAAAAUkZjRfMQAAAAIJAQAAAAUkZjRfMQAAAAIJAQAAAAUkZjRfMQAAAAIJAQAAAAUkZjRfMQAAAAIJAQAAAAUkZjRfMQAAAAIJAQAAAAUkZjRfMQAAAAIJAQAAAAUkZjRfMQAAAAIJAQAAAAUkZjRfMQAAAAIJAQAAAAUkZjRfMQAAAAIJAQAAAAUkZjRfMQAAAAIJAQAAAAUkZjRfMQAAAAIJAQAAAAUkZjRfMQAAAAIJAQAAAAUkZjRfMQAAAAIJAQAAAAUkZjRfMQAAAAIJAQAAAAUkZjRfMQAAAAIFAAAABSRhY2MwAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAACAAAAAAAAAAADAAAAAAAAAAAEAAAAAAAAAAAFAAAAAAAAAAAGAAAAAAAAAAAHAAAAAAAAAAAIAAAAAAAAAAAJAAAAAAAAAAAKAAAAAAAAAAALAAAAAAAAAAAMAAAAAAAAAAANAAAAAAAAAAAOAAAAAAAAAAAPAAAAAAAAAAAQAAAAAAAAAAARAAAAAAAAAAASAAAAAAAAAAATAAAAAAAAAAAUCQAETgAAAAIJAAROAAAAAgkABE4AAAACCQAETgAAAAIFAAAAD3Bvb2xCYWxhbmNlS2V5cwUAAAAWcG9vbExpcXVpZGl0eVRva2VuS2V5cwUAAAAUcG9vbFNlcnZpY2VUb2tlbktleXMFAAAAHXBvb2xMaXF1aWRpdHlUb2tlbkRlY2ltYWxLZXlzBQAAAA5wb29sQWN0aXZlS2V5cwkAAAIAAAABAgAAACFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24AAAABaQEAAAAYZGVsZXRlRGVwb3NpdExvY2tSZWNvcmRzAAAAAQAAAAdyZWNvcmRzAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkxCQAETAAAAAIFAAAADGFkbWluUHViS2V5MgkABEwAAAACBQAAAAxhZG1pblB1YktleTMFAAAAA25pbAgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5CgEAAAAUZ2VuZXJhdGVEZWxldGluZ0tleXMAAAACAAAAC2FjY3VtdWxhdGVkAAAABnJlY29yZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIFAAAABnJlY29yZAIAAAAHX2xvY2tlZAUAAAALYWNjdW11bGF0ZWQEAAAACmRlbGV0ZUtleXMKAAAAAAIkbAUAAAAHcmVjb3JkcwoAAAAAAiRzCQABkAAAAAEFAAAAAiRsCgAAAAAFJGFjYzAFAAAAA25pbAoBAAAABSRmMF8xAAAAAgAAAAIkYQAAAAIkaQMJAABnAAAAAgUAAAACJGkFAAAAAiRzBQAAAAIkYQkBAAAAFGdlbmVyYXRlRGVsZXRpbmdLZXlzAAAAAgUAAAACJGEJAAGRAAAAAgUAAAACJGwFAAAAAiRpCgEAAAAFJGYwXzIAAAACAAAAAiRhAAAAAiRpAwkAAGcAAAACBQAAAAIkaQUAAAACJHMFAAAAAiRhCQAAAgAAAAECAAAAFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBAAAABSRmMF8yAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgUAAAAFJGFjYzAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAIAAAAAAAAAAAMAAAAAAAAAAAQAAAAAAAAAAAUAAAAAAAAAAAYAAAAAAAAAAAcAAAAAAAAAAAgAAAAAAAAAAAkAAAAAAAAAAAoAAAAAAAAAAAsAAAAAAAAAAAwAAAAAAAAAAA0AAAAAAAAAAA4AAAAAAAAAAA8AAAAAAAAAABAAAAAAAAAAABEAAAAAAAAAABIAAAAAAAAAABMAAAAAAAAAABQAAAAAAAAAABUAAAAAAAAAABYAAAAAAAAAABcAAAAAAAAAABgAAAAAAAAAABkAAAAAAAAAABoAAAAAAAAAABsAAAAAAAAAABwAAAAAAAAAAB0AAAAAAAAAAB4AAAAAAAAAAB8AAAAAAAAAACAAAAAAAAAAACEAAAAAAAAAACIAAAAAAAAAACMAAAAAAAAAACQAAAAAAAAAACUAAAAAAAAAACYAAAAAAAAAACcAAAAAAAAAACgAAAAAAAAAACkAAAAAAAAAACoAAAAAAAAAACsAAAAAAAAAACwAAAAA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dHlBc3NldEFkZHJlc3MEAAAAByRtYXRjaDAJAAQiAAAAAQkAASwAAAACBQAAAARwb29sAgAAABBfbGlxdWlkaXR5X3Rva2VuAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAABnN0cmluZwUAAAAHJG1hdGNoMAUAAAAGc3RyaW5nBAAAAAdub3RoaW5nBQAAAAckbWF0Y2gwCQAAAgAAAAECAAAAJllvdSB0cnkgdG8gZGVwb3NpdCBvbiB1bnN1cHBvcnRlZCBwb29sAwkBAAAADGlzUG9vbEFjdGl2ZQAAAAEFAAAABHBvb2wEAAAAFWxpcXVpZGl0eVRva2VuRGVjaW1hbAQAAAAHJG1hdGNoMAkAA+wAAAABCQACWQAAAAEFAAAAFWxpcXVpZHV0eUFzc2V0QWRkcmVzcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAFQXNzZXQEAAAABWFzc2V0BQAAAAckbWF0Y2gwCAUAAAAFYXNzZXQAAAAIZGVjaW1hbHMJAAACAAAAAQIAAAAQQ2FuJ3QgZmluZCBhc3NldAMJAQAAAAIhPQAAAAIFAAAAFWxpcXVpZHV0eUFzc2V0QWRkcmVzcwUAAAANYXNzZXRJZFN0cmluZwkAAAIAAAABAgAAAC9Zb3UgYXR0YWNoZWQgd3JvbmcgbGlxdWlkaXR5IHRva2VuIGZyb20gU3dvcC5maQQAAAAKcG9vbEFtb3VudAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAANcG9vbEFtb3VudEtleQQAAAAKdXNlckFtb3VudAQAAAAHJG1hdGNoMAkABB8AAAABBQAAABF1c2VyUG9vbEFtb3VudEtleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAANpbnQFAAAAByRtYXRjaDAFAAAAA2ludAQAAAAHbm90aGluZwUAAAAHJG1hdGNoMAAAAAAAAAAAAAQAAAASdXNlclRvdGFsTG9ja2VkS2V5CQEAAAAVZ2V0VXNlclRvdGFsTG9ja2VkS2V5AAAAAgUAAAAEcG9vbAUAAAALdXNlckFkZHJlc3MEAAAAD3VzZXJUb3RhbExvY2tlZAkBAAAAEmdldFVzZXJUb3RhbExvY2tlZAAAAAEFAAAAEnVzZXJUb3RhbExvY2tlZEtleQQAAAAUdXNlckFtb3VudFdpdGhvdXRGZWUJAABlAAAAAgkAAGUAAAACBQAAAAZhbW91bnQJAQAAAAhmcmFjdGlvbgAAAAQFAAAABmFtb3VudAAAAAAAAAAAAQUAAAAKZGVwb3NpdEZlZQUAAAAGSEFMRlVQCQEAAAAIZnJhY3Rpb24AAAAEBQAAAAZhbW91bnQAAAAAAAAAAAEFAAAADWNvbnRyb2xsZXJGZWUFAAAABkhBTEZVUAQAAAAUdHJhbnNmZXJUb1VzZXJBbW91bnQJAQAAAA50cmFuc2ZlclRvVXNlcgAAAAQFAAAAFHVzZXJBbW91bnRXaXRob3V0RmVlCQACWQAAAAEFAAAAEGRBcHBBc3NldEFkZHJlc3MFAAAABHBvb2wFAAAAC2RlcG9zaXRUeXBlBAAAAANmZWUJAABlAAAAAgUAAAAGYW1vdW50BQAAABR1c2VyQW1vdW50V2l0aG91dEZlZQQAAAANbmV3UG9vbEFtb3VudAkAAGUAAAACCQAAZAAAAAIFAAAACnBvb2xBbW91bnQFAAAABmFtb3VudAUAAAADZmVlBAAAABFuZXdVc2VyUG9vbEFtb3VudAkAAGQAAAACBQAAAAp1c2VyQW1vdW50BQAAABR0cmFuc2ZlclRvVXNlckFtb3VudAQAAAASbmV3VXNlclRvdGFsTG9ja2VkCQAAZAAAAAIFAAAAD3VzZXJUb3RhbExvY2tlZAUAAAAUdHJhbnNmZXJUb1VzZXJBbW91bnQEAAAADWxvY2tUb2tlbnNLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfBQAAAAt1c2VyQWRkcmVzcwIAAAABXwkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkAgAAAAdfbG9ja2VkCQAETAAAAAIJAQAAAAdSZWlzc3VlAAAAAwkAAlkAAAABBQAAABBkQXBwQXNzZXRBZGRyZXNzBQAAABR0cmFuc2ZlclRvVXNlckFtb3VudAYJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABR0cmFuc2ZlclRvVXNlckFtb3VudAkAAlkAAAABBQAAABBkQXBwQXNzZXRBZGRyZXNzCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAEWdvdmVybWFuY2VBZGRyZXNzBQAAAANmZWUJAAJZAAAAAQUAAAAVbGlxdWlkdXR5QXNzZXRBZGRyZXNzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA1sb2NrVG9rZW5zS2V5BQAAABR1c2VyQW1vdW50V2l0aG91dEZlZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANcG9vbEFtb3VudEtleQUAAAANbmV3UG9vbEFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAARdXNlclBvb2xBbW91bnRLZXkFAAAAEW5ld1VzZXJQb29sQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJ1c2VyVG90YWxMb2NrZWRLZXkFAAAAEm5ld1VzZXJUb3RhbExvY2tlZAUAAAADbmlsCQAAAgAAAAECAAAAE1Bvb2wgaXMgbm90IGFjdGl2ZSEAAAABaQEAAAAMaW5pdFdpdGhkcmF3AAAAAQAAAARwb29sAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAAB1PbmUgYXR0YWNoZWQgcGF5bWVudCBleHBlY3RlZAQAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQEAAAAB2Fzc2V0SWQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAADWFzc2V0SWRTdHJpbmcEAAAAByRtYXRjaDAFAAAAB2Fzc2V0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAmlkBQAAAAckbWF0Y2gwCQACWAAAAAEFAAAAAmlkCQAAAgAAAAECAAAAC01hdGNoIGVycm9yBAAAABFhc3NldElkQnl0ZVZlY3RvcgQAAAAHJG1hdGNoMAUAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACaWQFAAAAByRtYXRjaDAFAAAAAmlkCQAAAgAAAAECAAAAC01hdGNoIGVycm9yAwkAAGcAAAACAAAAAAAAAAAABQAAAAZhbW91bnQJAAACAAAAAQkAASwAAAACAgAAAClXaXRocmF3IGFtb3VudCBtdXN0IGJlIHBvc2l0aXZlLiBBY3R1YWw6IAkAAaQAAAABBQAAAAZhbW91bnQDCQEAAAAMaXNQb29sQWN0aXZlAAAAAQUAAAAEcG9vbAQAAAALdXNlckFkZHJlc3MJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAABJ1c2VyVG90YWxMb2NrZWRLZXkJAQAAABVnZXRVc2VyVG90YWxMb2NrZWRLZXkAAAACBQAAAARwb29sBQAAAAt1c2VyQWRkcmVzcwQAAAAPdXNlclRvdGFsTG9ja2VkCQEAAAASZ2V0VXNlclRvdGFsTG9ja2VkAAAAAQUAAAASdXNlclRvdGFsTG9ja2VkS2V5BAAAABB1c2VyVG90YWxCYWxhbmNlCQAD8AAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAARYXNzZXRJZEJ5dGVWZWN0b3IEAAAAEG5vbkxvY2tlZEJhbGFuY2UJAABlAAAAAgUAAAAQdXNlclRvdGFsQmFsYW5jZQUAAAAPdXNlclRvdGFsTG9ja2VkAwkAAGYAAAACBQAAAAZhbW91bnQFAAAAEG5vbkxvY2tlZEJhbGFuY2UJAAACAAAAAQIAAABJWW91IGhhdmUgYSBsb2NrZWQgdG9rZW5zLiBXYWl0IGEgdGltZSBmb3IgdW5sb2NrIG9yIHRyeSB0byB3aXRoZHJyYXcgbGVzcwQAAAAUdHJhbnNmZXJUb1VzZXJBbW91bnQJAQAAAA50cmFuc2ZlclRvVXNlcgAAAAQFAAAABmFtb3VudAkAAlkAAAABBQAAAA1hc3NldElkU3RyaW5nBQAAAARwb29sBQAAAAx3aXRoZHJhd1R5cGUEAAAADXVzZXJSZWNvcmRLZXkJAQAAAA91c2VyV2l0aGRyYXdLZXkAAAADBQAAAARwb29sBQAAAAt1c2VyQWRkcmVzcwkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBAAAABh1c2VyV2l0aGRyYXdCdXJuVG9rZW5LZXkJAQAAABl1c2VyV2l0aGRyYXdCdXJuVG9rZW5zS2V5AAAAAwUAAAAEcG9vbAUAAAALdXNlckFkZHJlc3MJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANdXNlclJlY29yZEtleQUAAAAUdHJhbnNmZXJUb1VzZXJBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAGHVzZXJXaXRoZHJhd0J1cm5Ub2tlbktleQUAAAAGYW1vdW50BQAAAANuaWwJAAACAAAAAQIAAAATUG9vbCBpcyBub3QgYWN0aXZlIQAAAAFpAQAAAAh3aXRoZHJhdwAAAAMAAAAEcG9vbAAAAAt1c2VyQWRkcmVzcwAAAA10cmFuc2FjdGlvbklkAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkxCQAETAAAAAIFAAAADGFkbWluUHViS2V5MgkABEwAAAACBQAAAAxhZG1pblB1YktleTMFAAAAA25pbAgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAAA11c2VyUmVjb3JkS2V5CQEAAAAPdXNlcldpdGhkcmF3S2V5AAAAAwUAAAAEcG9vbAUAAAALdXNlckFkZHJlc3MFAAAADXRyYW5zYWN0aW9uSWQEAAAAGHVzZXJXaXRoZHJhd0J1cm5Ub2tlbktleQkBAAAAGXVzZXJXaXRoZHJhd0J1cm5Ub2tlbnNLZXkAAAADBQAAAARwb29sBQAAAAt1c2VyQWRkcmVzcwUAAAANdHJhbnNhY3Rpb25JZAQAAAAOc2VuZFVzZXJBbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMFAAAADXVzZXJSZWNvcmRLZXkEAAAAD2J1cm5Ub2tlbkFtb3VudAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAAYdXNlcldpdGhkcmF3QnVyblRva2VuS2V5BAAAAA1wb29sQW1vdW50S2V5CQABLAAAAAIFAAAABHBvb2wCAAAADl9hc3NldF9iYWxhbmNlBAAAABF1c2VyUG9vbEFtb3VudEtleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwUAAAALdXNlckFkZHJlc3MCAAAADl9hc3NldF9iYWxhbmNlBAAAAAp1c2VyQW1vdW50BAAAAAckbWF0Y2gwCQAEHwAAAAEFAAAAEXVzZXJQb29sQW1vdW50S2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAA2ludAUAAAAHJG1hdGNoMAUAAAADaW50BAAAAAdub3RoaW5nBQAAAAckbWF0Y2gwAAAAAAAAAAAABAAAABBkQXBwQXNzZXRBZGRyZXNzCQEAAAATZ2V0REFwcEFzc2V0QWRkcmVzcwAAAAEFAAAABHBvb2wEAAAAFWxpcXVpZHV0eUFzc2V0QWRkcmVzcwkBAAAAGGdldExpcXVpZHV0eUFzc2V0QWRkcmVzcwAAAAEFAAAABHBvb2wEAAAACnBvb2xBbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMFAAAADXBvb2xBbW91bnRLZXkEAAAADW5ld1Bvb2xBbW91bnQJAABlAAAAAgUAAAAKcG9vbEFtb3VudAUAAAAOc2VuZFVzZXJBbW91bnQEAAAAEW5ld1VzZXJQb29sQW1vdW50CQAAZQAAAAIFAAAACnVzZXJBbW91bnQFAAAADnNlbmRVc2VyQW1vdW50CQAETAAAAAIJAQAAAARCdXJuAAAAAgkAAlkAAAABBQAAABBkQXBwQXNzZXRBZGRyZXNzBQAAAA9idXJuVG9rZW5BbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAA5zZW5kVXNlckFtb3VudAkAAlkAAAABBQAAABVsaXF1aWR1dHlBc3NldEFkZHJlc3MJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADXBvb2xBbW91bnRLZXkFAAAADW5ld1Bvb2xBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEXVzZXJQb29sQW1vdW50S2V5BQAAABFuZXdVc2VyUG9vbEFtb3VudAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABBQAAAA11c2VyUmVjb3JkS2V5CQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAAGHVzZXJXaXRoZHJhd0J1cm5Ub2tlbktleQUAAAADbmlsCQAAAgAAAAECAAAAIU9ubHkgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgAAAAFpAQAAAA5wb29sQWN0aXZhdGluZwAAAAIAAAAFcG9vbHMAAAAIc3RhdHVzZXMDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkKAQAAABZnZW5lcmF0ZVBvb2xBY3RpdmVLZXlzAAAAAgAAAAthY2N1bXVsYXRlZAAAAARwb29sBAAAAAlwb29sSW5kZXgJAQAAAAV2YWx1ZQAAAAEJAARPAAAAAgUAAAAFcG9vbHMFAAAABHBvb2wEAAAABnN0YXR1cwkAAZEAAAACBQAAAAhzdGF0dXNlcwUAAAAJcG9vbEluZGV4CQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAB19hY3RpdmUFAAAABnN0YXR1cwUAAAALYWNjdW11bGF0ZWQEAAAADnBvb2xBY3RpdmVLZXlzCgAAAAACJGwFAAAABXBvb2xzCgAAAAACJHMJAAGQAAAAAQUAAAACJGwKAAAAAAUkYWNjMAUAAAADbmlsCgEAAAAFJGYwXzEAAAACAAAAAiRhAAAAAiRpAwkAAGcAAAACBQAAAAIkaQUAAAACJHMFAAAAAiRhCQEAAAAWZ2VuZXJhdGVQb29sQWN0aXZlS2V5cwAAAAIFAAAAAiRhCQABkQAAAAIFAAAAAiRsBQAAAAIkaQoBAAAABSRmMF8yAAAAAgAAAAIkYQAAAAIkaQMJAABnAAAAAgUAAAACJGkFAAAAAiRzBQAAAAIkYQkAAAIAAAABAgAAABVMaXN0IHNpemUgZXhjZWVkcyAxMDAJAQAAAAUkZjBfMgAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBf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", "height": 1916260, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5E7vePqtFBgT3TE3MGPkqUKyDdDpJT6UKxdQf5imCrdq Next: Ggpv3t9Htx8aKByWxe3Uv8TDqbFu75cmmZRTB7bVv88J Diff:
OldNewDifferences
138138 func O (r,M,N) = (((((r + "_") + M) + "_") + N) + "_withdraw_burn_token")
139139
140140
141-@Callable(P)
142-func addPools (Q,R,S,T) = if (containsElement([d, e, f], P.callerPublicKey))
141+func P (r,M) = (((r + "_") + M) + "_service_token_total_locked")
142+
143+
144+func Q (R) = {
145+ let u = getInteger(R)
146+ if ($isInstanceOf(u, "Int"))
147+ then {
148+ let S = u
149+ S
150+ }
151+ else {
152+ let y = u
153+ 0
154+ }
155+ }
156+
157+
158+@Callable(T)
159+func addPools (U,V,W,X) = if (containsElement([d, e, f], T.callerPublicKey))
143160 then {
144- func U (V,r) = IntegerEntry((r + "_asset_balance"), 0) :: V
161+ func Y (Z,r) = IntegerEntry((r + "_asset_balance"), 0) :: Z
145162
146- func W (V,r) = {
147- let X = value(indexOf(Q, r))
148- let Y = R[X]
149-StringEntry((r + "_liquidity_token"), Y) :: V
163+ func aa (Z,r) = {
164+ let ab = value(indexOf(U, r))
165+ let ac = V[ab]
166+StringEntry((r + "_liquidity_token"), ac) :: Z
150167 }
151168
152- func Z (V,r) = {
153- let X = value(indexOf(Q, r))
154- let Y = S[X]
155-StringEntry((r + "_service_token"), Y) :: V
169+ func ad (Z,r) = {
170+ let ab = value(indexOf(U, r))
171+ let ac = W[ab]
172+StringEntry((r + "_service_token"), ac) :: Z
156173 }
157174
158- func aa (V,r) = {
159- let X = value(indexOf(Q, r))
160- let Y = T[X]
161-IntegerEntry((r + "_service_token_decimal"), Y) :: V
175+ func ae (Z,r) = {
176+ let ab = value(indexOf(U, r))
177+ let ac = X[ab]
178+IntegerEntry((r + "_service_token_decimal"), ac) :: Z
162179 }
163180
164- func ab (V,r) = BooleanEntry((r + "_active"), true) :: V
181+ func af (Z,r) = BooleanEntry((r + "_active"), true) :: Z
165182
166- let ac = {
167- let ad = Q
168- let ae = size(ad)
169- let af = nil
170- func ag (ah,ai) = if ((ai >= ae))
171- then ah
172- else U(ah, ad[ai])
183+ let ag = {
184+ let ah = U
185+ let ai = size(ah)
186+ let aj = nil
187+ func ak (al,am) = if ((am >= ai))
188+ then al
189+ else Y(al, ah[am])
173190
174- func aj (ah,ai) = if ((ai >= ae))
175- then ah
191+ func an (al,am) = if ((am >= ai))
192+ then al
176193 else throw("List size exceeds 20")
177194
178- aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
195+ an(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(aj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
179196 }
180- let ak = {
181- let ad = Q
182- let ae = size(ad)
183- let af = nil
184- func al (ah,ai) = if ((ai >= ae))
185- then ah
186- else W(ah, ad[ai])
197+ let ao = {
198+ let ah = U
199+ let ai = size(ah)
200+ let aj = nil
201+ func ap (al,am) = if ((am >= ai))
202+ then al
203+ else aa(al, ah[am])
187204
188- func am (ah,ai) = if ((ai >= ae))
189- then ah
205+ func aq (al,am) = if ((am >= ai))
206+ then al
190207 else throw("List size exceeds 20")
191208
192- am(al(al(al(al(al(al(al(al(al(al(al(al(al(al(al(al(al(al(al(al(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
209+ aq(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(aj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
193210 }
194- let an = {
195- let ad = Q
196- let ae = size(ad)
197- let af = nil
198- func ao (ah,ai) = if ((ai >= ae))
199- then ah
200- else Z(ah, ad[ai])
211+ let ar = {
212+ let ah = U
213+ let ai = size(ah)
214+ let aj = nil
215+ func as (al,am) = if ((am >= ai))
216+ then al
217+ else ad(al, ah[am])
201218
202- func ap (ah,ai) = if ((ai >= ae))
203- then ah
219+ func at (al,am) = if ((am >= ai))
220+ then al
204221 else throw("List size exceeds 20")
205222
206- ap(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
223+ at(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(aj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
207224 }
208- let aq = {
209- let ad = Q
210- let ae = size(ad)
211- let af = nil
212- func ar (ah,ai) = if ((ai >= ae))
213- then ah
214- else aa(ah, ad[ai])
225+ let au = {
226+ let ah = U
227+ let ai = size(ah)
228+ let aj = nil
229+ func av (al,am) = if ((am >= ai))
230+ then al
231+ else ae(al, ah[am])
215232
216- func as (ah,ai) = if ((ai >= ae))
217- then ah
233+ func aw (al,am) = if ((am >= ai))
234+ then al
218235 else throw("List size exceeds 20")
219236
220- as(ar(ar(ar(ar(ar(ar(ar(ar(ar(ar(ar(ar(ar(ar(ar(ar(ar(ar(ar(ar(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
237+ aw(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(aj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
221238 }
222- let at = {
223- let ad = Q
224- let ae = size(ad)
225- let af = nil
226- func au (ah,ai) = if ((ai >= ae))
227- then ah
228- else ab(ah, ad[ai])
239+ let ax = {
240+ let ah = U
241+ let ai = size(ah)
242+ let aj = nil
243+ func ay (al,am) = if ((am >= ai))
244+ then al
245+ else af(al, ah[am])
229246
230- func av (ah,ai) = if ((ai >= ae))
231- then ah
247+ func az (al,am) = if ((am >= ai))
248+ then al
232249 else throw("List size exceeds 20")
233250
234- av(au(au(au(au(au(au(au(au(au(au(au(au(au(au(au(au(au(au(au(au(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
251+ az(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(aj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
235252 }
236- ((((ac ++ ak) ++ an) ++ aq) ++ at)
253+ ((((ag ++ ao) ++ ar) ++ au) ++ ax)
237254 }
238255 else throw("Only admin can call this function")
239256
240257
241258
242-@Callable(P)
243-func deleteDepositLockRecords (aw) = if (containsElement([d, e, f], P.callerPublicKey))
259+@Callable(T)
260+func deleteDepositLockRecords (aA) = if (containsElement([d, e, f], T.callerPublicKey))
244261 then {
245- func ax (V,ay) = DeleteEntry((ay + "_locked")) :: V
262+ func aB (Z,aC) = DeleteEntry((aC + "_locked")) :: Z
246263
247- let az = {
248- let ad = aw
249- let ae = size(ad)
250- let af = nil
251- func ag (ah,ai) = if ((ai >= ae))
252- then ah
253- else ax(ah, ad[ai])
264+ let aD = {
265+ let ah = aA
266+ let ai = size(ah)
267+ let aj = nil
268+ func ak (al,am) = if ((am >= ai))
269+ then al
270+ else aB(al, ah[am])
254271
255- func aj (ah,ai) = if ((ai >= ae))
256- then ah
272+ func an (al,am) = if ((am >= ai))
273+ then al
257274 else throw("List size exceeds 100")
258275
259- aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
276+ an(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(aj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
260277 }
261- az
278+ aD
262279 }
263280 else throw("Only admin can call this function")
264281
265282
266283
267-@Callable(P)
268-func issueToken (aA,aB,aC,aD) = if (containsElement([d, e, f], P.callerPublicKey))
269- then [Issue(aA, aB, aC, aD, true, unit, 0)]
284+@Callable(T)
285+func issueToken (aE,aF,aG,aH) = if (containsElement([d, e, f], T.callerPublicKey))
286+ then [Issue(aE, aF, aG, aH, true, unit, 0)]
270287 else throw("Only admin can call this function")
271288
272289
273290
274-@Callable(aE)
291+@Callable(aI)
275292 func call () = [DeleteEntry("3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1_3N5viYFhnu1ew4FRZ9nujme9edr918FkT1a_current_reward")]
276293
277294
278295
279-@Callable(P)
280-func deposit (r) = if ((size(P.payments) != 1))
296+@Callable(T)
297+func deposit (r) = if ((size(T.payments) != 1))
281298 then throw("One attached payment expected")
282299 else {
283- let E = P.payments[0].amount
284- let F = P.payments[0].assetId
285- let aF = {
300+ let E = T.payments[0].amount
301+ let F = T.payments[0].assetId
302+ let aJ = {
286303 let u = F
287304 if ($isInstanceOf(u, "ByteVector"))
288305 then {
289- let aG = u
290- toBase58String(aG)
306+ let aK = u
307+ toBase58String(aK)
291308 }
292309 else throw("Match error")
293310 }
294311 if ((0 >= E))
295312 then throw(("Deposit amount must be positive. Actual: " + toString(E)))
296313 else {
297- let aH = (r + "_asset_balance")
298- let M = toString(P.caller)
299- let aI = (((r + "_") + M) + "_asset_balance")
300- let aJ = w(r)
301- let aK = {
314+ let aL = (r + "_asset_balance")
315+ let M = toString(T.caller)
316+ let aM = (((r + "_") + M) + "_asset_balance")
317+ let aN = w(r)
318+ let aO = {
302319 let u = getString((r + "_liquidity_token"))
303320 if ($isInstanceOf(u, "String"))
304321 then {
312329 }
313330 if (q(r))
314331 then {
315- let aL = {
316- let u = assetInfo(fromBase58String(aK))
332+ let aP = {
333+ let u = assetInfo(fromBase58String(aO))
317334 if ($isInstanceOf(u, "Asset"))
318335 then {
319336 let J = u
321338 }
322339 else throw("Can't find asset")
323340 }
324- if ((aK != aF))
341+ if ((aO != aJ))
325342 then throw("You attached wrong liquidity token from Swop.fi")
326343 else {
327- let aM = getIntegerValue(this, aH)
328- let aN = {
329- let u = getInteger(aI)
344+ let aQ = getIntegerValue(this, aL)
345+ let aR = {
346+ let u = getInteger(aM)
330347 if ($isInstanceOf(u, "Int"))
331348 then {
332- let aO = u
333- aO
349+ let S = u
350+ S
334351 }
335352 else {
336353 let y = u
337354 0
338355 }
339356 }
340- let aP = ((E - fraction(E, 1, a, HALFUP)) - fraction(E, 1, b, HALFUP))
341- let K = D(aP, fromBase58String(aJ), r, m)
342- let aQ = (E - aP)
343- let aR = ((aM + E) - aQ)
344- let aS = (aN + K)
345- let aT = (((((r + "_") + M) + "_") + toBase58String(P.transactionId)) + "_locked")
346-[Reissue(fromBase58String(aJ), K, true), ScriptTransfer(P.caller, K, fromBase58String(aJ)), ScriptTransfer(h, aQ, fromBase58String(aK)), IntegerEntry(aT, aP), IntegerEntry(aH, aR), IntegerEntry(aI, aS)]
357+ let aS = P(r, M)
358+ let aT = Q(aS)
359+ let aU = ((E - fraction(E, 1, a, HALFUP)) - fraction(E, 1, b, HALFUP))
360+ let K = D(aU, fromBase58String(aN), r, m)
361+ let aV = (E - aU)
362+ let aW = ((aQ + E) - aV)
363+ let aX = (aR + K)
364+ let aY = (aT + K)
365+ let aZ = (((((r + "_") + M) + "_") + toBase58String(T.transactionId)) + "_locked")
366+[Reissue(fromBase58String(aN), K, true), ScriptTransfer(T.caller, K, fromBase58String(aN)), ScriptTransfer(h, aV, fromBase58String(aO)), IntegerEntry(aZ, aU), IntegerEntry(aL, aW), IntegerEntry(aM, aX), IntegerEntry(aS, aY)]
347367 }
348368 }
349369 else throw("Pool is not active!")
352372
353373
354374
355-@Callable(P)
356-func initWithdraw (r) = if ((size(P.payments) != 1))
375+@Callable(T)
376+func initWithdraw (r) = if ((size(T.payments) != 1))
357377 then throw("One attached payment expected")
358378 else {
359- let E = P.payments[0].amount
360- let F = P.payments[0].assetId
361- let aF = {
379+ let E = T.payments[0].amount
380+ let F = T.payments[0].assetId
381+ let aJ = {
362382 let u = F
363383 if ($isInstanceOf(u, "ByteVector"))
364384 then {
365- let aG = u
366- toBase58String(aG)
385+ let aK = u
386+ toBase58String(aK)
387+ }
388+ else throw("Match error")
389+ }
390+ let ba = {
391+ let u = F
392+ if ($isInstanceOf(u, "ByteVector"))
393+ then {
394+ let aK = u
395+ aK
367396 }
368397 else throw("Match error")
369398 }
371400 then throw(("Withraw amount must be positive. Actual: " + toString(E)))
372401 else if (q(r))
373402 then {
374- let M = toString(P.caller)
375- let K = D(E, fromBase58String(aF), r, n)
376- let aU = L(r, M, toBase58String(P.transactionId))
377- let aV = O(r, M, toBase58String(P.transactionId))
378-[IntegerEntry(aU, K), IntegerEntry(aV, E)]
403+ let M = toString(T.caller)
404+ let aS = P(r, M)
405+ let aT = Q(aS)
406+ let bb = assetBalance(T.caller, ba)
407+ let bc = (bb - aT)
408+ if ((E > bc))
409+ then throw("You have a locked tokens. Wait a time for unlock or try to withdrraw less")
410+ else {
411+ let K = D(E, fromBase58String(aJ), r, n)
412+ let bd = L(r, M, toBase58String(T.transactionId))
413+ let be = O(r, M, toBase58String(T.transactionId))
414+[IntegerEntry(bd, K), IntegerEntry(be, E)]
415+ }
379416 }
380417 else throw("Pool is not active!")
381418 }
382419
383420
384421
385-@Callable(P)
386-func withdraw (r,M,N) = if (containsElement([d, e, f], P.callerPublicKey))
422+@Callable(T)
423+func withdraw (r,M,N) = if (containsElement([d, e, f], T.callerPublicKey))
387424 then {
388- let aU = L(r, M, N)
389- let aV = O(r, M, N)
390- let aW = getIntegerValue(this, aU)
391- let aX = getIntegerValue(this, aV)
392- let aH = (r + "_asset_balance")
393- let aI = (((r + "_") + M) + "_asset_balance")
394- let aN = {
395- let u = getInteger(aI)
425+ let bd = L(r, M, N)
426+ let be = O(r, M, N)
427+ let bf = getIntegerValue(this, bd)
428+ let bg = getIntegerValue(this, be)
429+ let aL = (r + "_asset_balance")
430+ let aM = (((r + "_") + M) + "_asset_balance")
431+ let aR = {
432+ let u = getInteger(aM)
396433 if ($isInstanceOf(u, "Int"))
397434 then {
398- let aO = u
399- aO
435+ let S = u
436+ S
400437 }
401438 else {
402439 let y = u
403440 0
404441 }
405442 }
406- let aJ = w(r)
407- let aK = z(r)
408- let aM = getIntegerValue(this, aH)
409- let aR = (aM - aW)
410- let aS = (aN - aW)
411-[Burn(fromBase58String(aJ), aX), ScriptTransfer(P.caller, aW, fromBase58String(aK)), IntegerEntry(aH, aR), IntegerEntry(aI, aS), DeleteEntry(aU), DeleteEntry(aV)]
443+ let aN = w(r)
444+ let aO = z(r)
445+ let aQ = getIntegerValue(this, aL)
446+ let aW = (aQ - bf)
447+ let aX = (aR - bf)
448+[Burn(fromBase58String(aN), bg), ScriptTransfer(T.caller, bf, fromBase58String(aO)), IntegerEntry(aL, aW), IntegerEntry(aM, aX), DeleteEntry(bd), DeleteEntry(be)]
412449 }
413450 else throw("Only admin can call this function")
414451
415452
416453
417-@Callable(P)
418-func poolActivating (Q,aY) = if (containsElement([d, e, f], P.callerPublicKey))
454+@Callable(T)
455+func poolActivating (U,bh) = if (containsElement([d, e, f], T.callerPublicKey))
419456 then {
420- func ab (V,r) = {
421- let X = value(indexOf(Q, r))
422- let aZ = aY[X]
423-BooleanEntry((r + "_active"), aZ) :: V
457+ func af (Z,r) = {
458+ let ab = value(indexOf(U, r))
459+ let bi = bh[ab]
460+BooleanEntry((r + "_active"), bi) :: Z
424461 }
425462
426- let at = {
427- let ad = Q
428- let ae = size(ad)
429- let af = nil
430- func ag (ah,ai) = if ((ai >= ae))
431- then ah
432- else ab(ah, ad[ai])
463+ let ax = {
464+ let ah = U
465+ let ai = size(ah)
466+ let aj = nil
467+ func ak (al,am) = if ((am >= ai))
468+ then al
469+ else af(al, ah[am])
433470
434- func aj (ah,ai) = if ((ai >= ae))
435- then ah
471+ func an (al,am) = if ((am >= ai))
472+ then al
436473 else throw("List size exceeds 100")
437474
438- aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
475+ an(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(aj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
439476 }
440- at
477+ ax
441478 }
442479 else throw("Only admin can call this function")
443480
444481
445-@Verifier(ba)
446-func bb () = {
447- let u = ba
482+@Verifier(bj)
483+func bk () = {
484+ let u = bj
448485 if ($isInstanceOf(u, "InvokeScriptTransaction"))
449486 then {
450- let bc = u
451- let bd = if ((bc.dApp == j))
452- then if (if ((bc.function == "lockShareTokens"))
487+ let bl = u
488+ let bm = if ((bl.dApp == j))
489+ then if (if ((bl.function == "lockShareTokens"))
453490 then true
454- else (bc.function == "claim"))
491+ else (bl.function == "claim"))
455492 then true
456- else (bc.function == "withdrawShareTokens")
493+ else (bl.function == "withdrawShareTokens")
457494 else false
458- let be = if ((bc.dApp == i))
459- then if ((bc.function == "lockSWOP"))
495+ let bn = if ((bl.dApp == i))
496+ then if ((bl.function == "lockSWOP"))
460497 then true
461- else (bc.function == "withdrawSWOP")
498+ else (bl.function == "withdrawSWOP")
462499 else false
463- let bf = {
464- let bg = bc.dApp
465- if ($isInstanceOf(bg, "Address"))
500+ let bo = {
501+ let bp = bl.dApp
502+ if ($isInstanceOf(bp, "Address"))
466503 then {
467- let bh = bg
468- toString(bh)
504+ let bq = bp
505+ toString(bq)
469506 }
470507 else throw("Transaction must have only address")
471508 }
472- let bi = if (containsElement(o, bf))
473- then containsElement(p, bc.function)
509+ let br = if (containsElement(o, bo))
510+ then containsElement(p, bl.function)
474511 else false
475- let bj = if (if (if (sigVerify(ba.bodyBytes, ba.proofs[0], d))
512+ let bs = if (if (if (sigVerify(bj.bodyBytes, bj.proofs[0], d))
476513 then true
477- else sigVerify(ba.bodyBytes, ba.proofs[0], e))
514+ else sigVerify(bj.bodyBytes, bj.proofs[0], e))
478515 then true
479- else sigVerify(ba.bodyBytes, ba.proofs[0], g))
516+ else sigVerify(bj.bodyBytes, bj.proofs[0], g))
480517 then true
481- else sigVerify(ba.bodyBytes, ba.proofs[0], ba.senderPublicKey)
482- if (if (if (bd)
518+ else sigVerify(bj.bodyBytes, bj.proofs[0], bj.senderPublicKey)
519+ if (if (if (bm)
483520 then true
484- else bi)
521+ else br)
485522 then true
486- else be)
487- then bj
523+ else bn)
524+ then bs
488525 else false
489526 }
490527 else {
491- let bk = if (sigVerify(ba.bodyBytes, ba.proofs[0], d))
528+ let bt = if (sigVerify(bj.bodyBytes, bj.proofs[0], d))
492529 then 1
493530 else 0
494- let bl = if (sigVerify(ba.bodyBytes, ba.proofs[1], e))
531+ let bu = if (sigVerify(bj.bodyBytes, bj.proofs[1], e))
495532 then 1
496533 else 0
497- let bm = if (sigVerify(ba.bodyBytes, ba.proofs[2], f))
534+ let bv = if (sigVerify(bj.bodyBytes, bj.proofs[2], f))
498535 then 1
499536 else 0
500- (((bk + bl) + bm) >= 2)
537+ (((bt + bu) + bv) >= 2)
501538 }
502539 }
503540
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 1000
55
66 let b = 10000
77
88 let c = 10000
99
1010 let d = base58'68Po1k24uP6goKr7RDmXPg4QkMiKuyTMEirao14rif8s'
1111
1212 let e = base58'Bze4aurT9WmLgBT6swA9CajaZFtUwhtwCri6XGAjnAkt'
1313
1414 let f = base58'ALsqwPqiUP3bVbM7grozc1Y5oHVBAGKqACRJ5J8RXceC'
1515
1616 let g = base58'ALsqwPqiUP3bVbM7grozc1Y5oHVBAGKqACRJ5J8RXceC'
1717
1818 let h = Address(base58'3N7ExjwfofPYTvNBv2zqtAtLcMxqjTxS7iL')
1919
2020 let i = Address(base58'3PLHVWCqA9DJPDbadUofTohnCULLauiDWhS')
2121
2222 let j = Address(base58'3NBTuZhn2CwAgWGL99qpGDjZQ4Wtbg56iDL')
2323
2424 let k = "SWOP_id"
2525
2626 let l = fromBase58String(getStringValue(j, k))
2727
2828 let m = "deposit"
2929
3030 let n = "withdraw"
3131
3232 let o = ["3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1", "3PKy2mZqnvT2EtpwDim9Mgs6YvCRe4s85nX", "3P27S9V36kw2McjWRZ37AxTx8iwkd7HXw6W"]
3333
3434 let p = ["replenishWithTwoTokens", "exchange"]
3535
3636 func q (r) = {
3737 let s = (r + "_active")
3838 let t = {
3939 let u = getBoolean(this, s)
4040 if ($isInstanceOf(u, "Boolean"))
4141 then {
4242 let v = u
4343 v
4444 }
4545 else throw("Pool is not active!")
4646 }
4747 t
4848 }
4949
5050
5151 func w (r) = {
5252 let u = getString((r + "_service_token"))
5353 if ($isInstanceOf(u, "String"))
5454 then {
5555 let x = u
5656 x
5757 }
5858 else {
5959 let y = u
6060 throw("You try to deposit on unsupported pool")
6161 }
6262 }
6363
6464
6565 func z (r) = {
6666 let u = getString((r + "_liquidity_token"))
6767 if ($isInstanceOf(u, "String"))
6868 then {
6969 let x = u
7070 x
7171 }
7272 else {
7373 let y = u
7474 throw("You try to withdraw from unsupported pool")
7575 }
7676 }
7777
7878
7979 func A (B) = if ((B == toBase58String(l)))
8080 then {
8181 let u = getInteger(i, (toString(this) + "_SWOP_amount"))
8282 if ($isInstanceOf(u, "Int"))
8383 then {
8484 let C = u
8585 C
8686 }
8787 else if ($isInstanceOf(u, "Unit"))
8888 then {
8989 let y = u
9090 0
9191 }
9292 else throw("Match error")
9393 }
9494 else {
9595 let u = getInteger(j, (((B + "_") + toString(this)) + "_share_tokens_locked"))
9696 if ($isInstanceOf(u, "Int"))
9797 then {
9898 let C = u
9999 C
100100 }
101101 else if ($isInstanceOf(u, "Unit"))
102102 then {
103103 let y = u
104104 0
105105 }
106106 else throw("Match error")
107107 }
108108
109109
110110 func D (E,F,B,G) = {
111111 let H = A(B)
112112 let I = {
113113 let u = assetInfo(F)
114114 if ($isInstanceOf(u, "Asset"))
115115 then {
116116 let J = u
117117 J.quantity
118118 }
119119 else throw("Can't find asset")
120120 }
121121 if ((H == 0))
122122 then E
123123 else if ((G == m))
124124 then {
125125 let K = fraction(E, I, H)
126126 K
127127 }
128128 else {
129129 let K = fraction(E, H, I)
130130 K
131131 }
132132 }
133133
134134
135135 func L (r,M,N) = (((((r + "_") + M) + "_") + N) + "_withdraw")
136136
137137
138138 func O (r,M,N) = (((((r + "_") + M) + "_") + N) + "_withdraw_burn_token")
139139
140140
141-@Callable(P)
142-func addPools (Q,R,S,T) = if (containsElement([d, e, f], P.callerPublicKey))
141+func P (r,M) = (((r + "_") + M) + "_service_token_total_locked")
142+
143+
144+func Q (R) = {
145+ let u = getInteger(R)
146+ if ($isInstanceOf(u, "Int"))
147+ then {
148+ let S = u
149+ S
150+ }
151+ else {
152+ let y = u
153+ 0
154+ }
155+ }
156+
157+
158+@Callable(T)
159+func addPools (U,V,W,X) = if (containsElement([d, e, f], T.callerPublicKey))
143160 then {
144- func U (V,r) = IntegerEntry((r + "_asset_balance"), 0) :: V
161+ func Y (Z,r) = IntegerEntry((r + "_asset_balance"), 0) :: Z
145162
146- func W (V,r) = {
147- let X = value(indexOf(Q, r))
148- let Y = R[X]
149-StringEntry((r + "_liquidity_token"), Y) :: V
163+ func aa (Z,r) = {
164+ let ab = value(indexOf(U, r))
165+ let ac = V[ab]
166+StringEntry((r + "_liquidity_token"), ac) :: Z
150167 }
151168
152- func Z (V,r) = {
153- let X = value(indexOf(Q, r))
154- let Y = S[X]
155-StringEntry((r + "_service_token"), Y) :: V
169+ func ad (Z,r) = {
170+ let ab = value(indexOf(U, r))
171+ let ac = W[ab]
172+StringEntry((r + "_service_token"), ac) :: Z
156173 }
157174
158- func aa (V,r) = {
159- let X = value(indexOf(Q, r))
160- let Y = T[X]
161-IntegerEntry((r + "_service_token_decimal"), Y) :: V
175+ func ae (Z,r) = {
176+ let ab = value(indexOf(U, r))
177+ let ac = X[ab]
178+IntegerEntry((r + "_service_token_decimal"), ac) :: Z
162179 }
163180
164- func ab (V,r) = BooleanEntry((r + "_active"), true) :: V
181+ func af (Z,r) = BooleanEntry((r + "_active"), true) :: Z
165182
166- let ac = {
167- let ad = Q
168- let ae = size(ad)
169- let af = nil
170- func ag (ah,ai) = if ((ai >= ae))
171- then ah
172- else U(ah, ad[ai])
183+ let ag = {
184+ let ah = U
185+ let ai = size(ah)
186+ let aj = nil
187+ func ak (al,am) = if ((am >= ai))
188+ then al
189+ else Y(al, ah[am])
173190
174- func aj (ah,ai) = if ((ai >= ae))
175- then ah
191+ func an (al,am) = if ((am >= ai))
192+ then al
176193 else throw("List size exceeds 20")
177194
178- aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
195+ an(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(aj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
179196 }
180- let ak = {
181- let ad = Q
182- let ae = size(ad)
183- let af = nil
184- func al (ah,ai) = if ((ai >= ae))
185- then ah
186- else W(ah, ad[ai])
197+ let ao = {
198+ let ah = U
199+ let ai = size(ah)
200+ let aj = nil
201+ func ap (al,am) = if ((am >= ai))
202+ then al
203+ else aa(al, ah[am])
187204
188- func am (ah,ai) = if ((ai >= ae))
189- then ah
205+ func aq (al,am) = if ((am >= ai))
206+ then al
190207 else throw("List size exceeds 20")
191208
192- am(al(al(al(al(al(al(al(al(al(al(al(al(al(al(al(al(al(al(al(al(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
209+ aq(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(aj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
193210 }
194- let an = {
195- let ad = Q
196- let ae = size(ad)
197- let af = nil
198- func ao (ah,ai) = if ((ai >= ae))
199- then ah
200- else Z(ah, ad[ai])
211+ let ar = {
212+ let ah = U
213+ let ai = size(ah)
214+ let aj = nil
215+ func as (al,am) = if ((am >= ai))
216+ then al
217+ else ad(al, ah[am])
201218
202- func ap (ah,ai) = if ((ai >= ae))
203- then ah
219+ func at (al,am) = if ((am >= ai))
220+ then al
204221 else throw("List size exceeds 20")
205222
206- ap(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
223+ at(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(aj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
207224 }
208- let aq = {
209- let ad = Q
210- let ae = size(ad)
211- let af = nil
212- func ar (ah,ai) = if ((ai >= ae))
213- then ah
214- else aa(ah, ad[ai])
225+ let au = {
226+ let ah = U
227+ let ai = size(ah)
228+ let aj = nil
229+ func av (al,am) = if ((am >= ai))
230+ then al
231+ else ae(al, ah[am])
215232
216- func as (ah,ai) = if ((ai >= ae))
217- then ah
233+ func aw (al,am) = if ((am >= ai))
234+ then al
218235 else throw("List size exceeds 20")
219236
220- as(ar(ar(ar(ar(ar(ar(ar(ar(ar(ar(ar(ar(ar(ar(ar(ar(ar(ar(ar(ar(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
237+ aw(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(aj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
221238 }
222- let at = {
223- let ad = Q
224- let ae = size(ad)
225- let af = nil
226- func au (ah,ai) = if ((ai >= ae))
227- then ah
228- else ab(ah, ad[ai])
239+ let ax = {
240+ let ah = U
241+ let ai = size(ah)
242+ let aj = nil
243+ func ay (al,am) = if ((am >= ai))
244+ then al
245+ else af(al, ah[am])
229246
230- func av (ah,ai) = if ((ai >= ae))
231- then ah
247+ func az (al,am) = if ((am >= ai))
248+ then al
232249 else throw("List size exceeds 20")
233250
234- av(au(au(au(au(au(au(au(au(au(au(au(au(au(au(au(au(au(au(au(au(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
251+ az(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(ay(aj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
235252 }
236- ((((ac ++ ak) ++ an) ++ aq) ++ at)
253+ ((((ag ++ ao) ++ ar) ++ au) ++ ax)
237254 }
238255 else throw("Only admin can call this function")
239256
240257
241258
242-@Callable(P)
243-func deleteDepositLockRecords (aw) = if (containsElement([d, e, f], P.callerPublicKey))
259+@Callable(T)
260+func deleteDepositLockRecords (aA) = if (containsElement([d, e, f], T.callerPublicKey))
244261 then {
245- func ax (V,ay) = DeleteEntry((ay + "_locked")) :: V
262+ func aB (Z,aC) = DeleteEntry((aC + "_locked")) :: Z
246263
247- let az = {
248- let ad = aw
249- let ae = size(ad)
250- let af = nil
251- func ag (ah,ai) = if ((ai >= ae))
252- then ah
253- else ax(ah, ad[ai])
264+ let aD = {
265+ let ah = aA
266+ let ai = size(ah)
267+ let aj = nil
268+ func ak (al,am) = if ((am >= ai))
269+ then al
270+ else aB(al, ah[am])
254271
255- func aj (ah,ai) = if ((ai >= ae))
256- then ah
272+ func an (al,am) = if ((am >= ai))
273+ then al
257274 else throw("List size exceeds 100")
258275
259- aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
276+ an(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(aj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
260277 }
261- az
278+ aD
262279 }
263280 else throw("Only admin can call this function")
264281
265282
266283
267-@Callable(P)
268-func issueToken (aA,aB,aC,aD) = if (containsElement([d, e, f], P.callerPublicKey))
269- then [Issue(aA, aB, aC, aD, true, unit, 0)]
284+@Callable(T)
285+func issueToken (aE,aF,aG,aH) = if (containsElement([d, e, f], T.callerPublicKey))
286+ then [Issue(aE, aF, aG, aH, true, unit, 0)]
270287 else throw("Only admin can call this function")
271288
272289
273290
274-@Callable(aE)
291+@Callable(aI)
275292 func call () = [DeleteEntry("3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1_3N5viYFhnu1ew4FRZ9nujme9edr918FkT1a_current_reward")]
276293
277294
278295
279-@Callable(P)
280-func deposit (r) = if ((size(P.payments) != 1))
296+@Callable(T)
297+func deposit (r) = if ((size(T.payments) != 1))
281298 then throw("One attached payment expected")
282299 else {
283- let E = P.payments[0].amount
284- let F = P.payments[0].assetId
285- let aF = {
300+ let E = T.payments[0].amount
301+ let F = T.payments[0].assetId
302+ let aJ = {
286303 let u = F
287304 if ($isInstanceOf(u, "ByteVector"))
288305 then {
289- let aG = u
290- toBase58String(aG)
306+ let aK = u
307+ toBase58String(aK)
291308 }
292309 else throw("Match error")
293310 }
294311 if ((0 >= E))
295312 then throw(("Deposit amount must be positive. Actual: " + toString(E)))
296313 else {
297- let aH = (r + "_asset_balance")
298- let M = toString(P.caller)
299- let aI = (((r + "_") + M) + "_asset_balance")
300- let aJ = w(r)
301- let aK = {
314+ let aL = (r + "_asset_balance")
315+ let M = toString(T.caller)
316+ let aM = (((r + "_") + M) + "_asset_balance")
317+ let aN = w(r)
318+ let aO = {
302319 let u = getString((r + "_liquidity_token"))
303320 if ($isInstanceOf(u, "String"))
304321 then {
305322 let x = u
306323 x
307324 }
308325 else {
309326 let y = u
310327 throw("You try to deposit on unsupported pool")
311328 }
312329 }
313330 if (q(r))
314331 then {
315- let aL = {
316- let u = assetInfo(fromBase58String(aK))
332+ let aP = {
333+ let u = assetInfo(fromBase58String(aO))
317334 if ($isInstanceOf(u, "Asset"))
318335 then {
319336 let J = u
320337 J.decimals
321338 }
322339 else throw("Can't find asset")
323340 }
324- if ((aK != aF))
341+ if ((aO != aJ))
325342 then throw("You attached wrong liquidity token from Swop.fi")
326343 else {
327- let aM = getIntegerValue(this, aH)
328- let aN = {
329- let u = getInteger(aI)
344+ let aQ = getIntegerValue(this, aL)
345+ let aR = {
346+ let u = getInteger(aM)
330347 if ($isInstanceOf(u, "Int"))
331348 then {
332- let aO = u
333- aO
349+ let S = u
350+ S
334351 }
335352 else {
336353 let y = u
337354 0
338355 }
339356 }
340- let aP = ((E - fraction(E, 1, a, HALFUP)) - fraction(E, 1, b, HALFUP))
341- let K = D(aP, fromBase58String(aJ), r, m)
342- let aQ = (E - aP)
343- let aR = ((aM + E) - aQ)
344- let aS = (aN + K)
345- let aT = (((((r + "_") + M) + "_") + toBase58String(P.transactionId)) + "_locked")
346-[Reissue(fromBase58String(aJ), K, true), ScriptTransfer(P.caller, K, fromBase58String(aJ)), ScriptTransfer(h, aQ, fromBase58String(aK)), IntegerEntry(aT, aP), IntegerEntry(aH, aR), IntegerEntry(aI, aS)]
357+ let aS = P(r, M)
358+ let aT = Q(aS)
359+ let aU = ((E - fraction(E, 1, a, HALFUP)) - fraction(E, 1, b, HALFUP))
360+ let K = D(aU, fromBase58String(aN), r, m)
361+ let aV = (E - aU)
362+ let aW = ((aQ + E) - aV)
363+ let aX = (aR + K)
364+ let aY = (aT + K)
365+ let aZ = (((((r + "_") + M) + "_") + toBase58String(T.transactionId)) + "_locked")
366+[Reissue(fromBase58String(aN), K, true), ScriptTransfer(T.caller, K, fromBase58String(aN)), ScriptTransfer(h, aV, fromBase58String(aO)), IntegerEntry(aZ, aU), IntegerEntry(aL, aW), IntegerEntry(aM, aX), IntegerEntry(aS, aY)]
347367 }
348368 }
349369 else throw("Pool is not active!")
350370 }
351371 }
352372
353373
354374
355-@Callable(P)
356-func initWithdraw (r) = if ((size(P.payments) != 1))
375+@Callable(T)
376+func initWithdraw (r) = if ((size(T.payments) != 1))
357377 then throw("One attached payment expected")
358378 else {
359- let E = P.payments[0].amount
360- let F = P.payments[0].assetId
361- let aF = {
379+ let E = T.payments[0].amount
380+ let F = T.payments[0].assetId
381+ let aJ = {
362382 let u = F
363383 if ($isInstanceOf(u, "ByteVector"))
364384 then {
365- let aG = u
366- toBase58String(aG)
385+ let aK = u
386+ toBase58String(aK)
387+ }
388+ else throw("Match error")
389+ }
390+ let ba = {
391+ let u = F
392+ if ($isInstanceOf(u, "ByteVector"))
393+ then {
394+ let aK = u
395+ aK
367396 }
368397 else throw("Match error")
369398 }
370399 if ((0 >= E))
371400 then throw(("Withraw amount must be positive. Actual: " + toString(E)))
372401 else if (q(r))
373402 then {
374- let M = toString(P.caller)
375- let K = D(E, fromBase58String(aF), r, n)
376- let aU = L(r, M, toBase58String(P.transactionId))
377- let aV = O(r, M, toBase58String(P.transactionId))
378-[IntegerEntry(aU, K), IntegerEntry(aV, E)]
403+ let M = toString(T.caller)
404+ let aS = P(r, M)
405+ let aT = Q(aS)
406+ let bb = assetBalance(T.caller, ba)
407+ let bc = (bb - aT)
408+ if ((E > bc))
409+ then throw("You have a locked tokens. Wait a time for unlock or try to withdrraw less")
410+ else {
411+ let K = D(E, fromBase58String(aJ), r, n)
412+ let bd = L(r, M, toBase58String(T.transactionId))
413+ let be = O(r, M, toBase58String(T.transactionId))
414+[IntegerEntry(bd, K), IntegerEntry(be, E)]
415+ }
379416 }
380417 else throw("Pool is not active!")
381418 }
382419
383420
384421
385-@Callable(P)
386-func withdraw (r,M,N) = if (containsElement([d, e, f], P.callerPublicKey))
422+@Callable(T)
423+func withdraw (r,M,N) = if (containsElement([d, e, f], T.callerPublicKey))
387424 then {
388- let aU = L(r, M, N)
389- let aV = O(r, M, N)
390- let aW = getIntegerValue(this, aU)
391- let aX = getIntegerValue(this, aV)
392- let aH = (r + "_asset_balance")
393- let aI = (((r + "_") + M) + "_asset_balance")
394- let aN = {
395- let u = getInteger(aI)
425+ let bd = L(r, M, N)
426+ let be = O(r, M, N)
427+ let bf = getIntegerValue(this, bd)
428+ let bg = getIntegerValue(this, be)
429+ let aL = (r + "_asset_balance")
430+ let aM = (((r + "_") + M) + "_asset_balance")
431+ let aR = {
432+ let u = getInteger(aM)
396433 if ($isInstanceOf(u, "Int"))
397434 then {
398- let aO = u
399- aO
435+ let S = u
436+ S
400437 }
401438 else {
402439 let y = u
403440 0
404441 }
405442 }
406- let aJ = w(r)
407- let aK = z(r)
408- let aM = getIntegerValue(this, aH)
409- let aR = (aM - aW)
410- let aS = (aN - aW)
411-[Burn(fromBase58String(aJ), aX), ScriptTransfer(P.caller, aW, fromBase58String(aK)), IntegerEntry(aH, aR), IntegerEntry(aI, aS), DeleteEntry(aU), DeleteEntry(aV)]
443+ let aN = w(r)
444+ let aO = z(r)
445+ let aQ = getIntegerValue(this, aL)
446+ let aW = (aQ - bf)
447+ let aX = (aR - bf)
448+[Burn(fromBase58String(aN), bg), ScriptTransfer(T.caller, bf, fromBase58String(aO)), IntegerEntry(aL, aW), IntegerEntry(aM, aX), DeleteEntry(bd), DeleteEntry(be)]
412449 }
413450 else throw("Only admin can call this function")
414451
415452
416453
417-@Callable(P)
418-func poolActivating (Q,aY) = if (containsElement([d, e, f], P.callerPublicKey))
454+@Callable(T)
455+func poolActivating (U,bh) = if (containsElement([d, e, f], T.callerPublicKey))
419456 then {
420- func ab (V,r) = {
421- let X = value(indexOf(Q, r))
422- let aZ = aY[X]
423-BooleanEntry((r + "_active"), aZ) :: V
457+ func af (Z,r) = {
458+ let ab = value(indexOf(U, r))
459+ let bi = bh[ab]
460+BooleanEntry((r + "_active"), bi) :: Z
424461 }
425462
426- let at = {
427- let ad = Q
428- let ae = size(ad)
429- let af = nil
430- func ag (ah,ai) = if ((ai >= ae))
431- then ah
432- else ab(ah, ad[ai])
463+ let ax = {
464+ let ah = U
465+ let ai = size(ah)
466+ let aj = nil
467+ func ak (al,am) = if ((am >= ai))
468+ then al
469+ else af(al, ah[am])
433470
434- func aj (ah,ai) = if ((ai >= ae))
435- then ah
471+ func an (al,am) = if ((am >= ai))
472+ then al
436473 else throw("List size exceeds 100")
437474
438- aj(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(ag(af, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
475+ an(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(ak(aj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
439476 }
440- at
477+ ax
441478 }
442479 else throw("Only admin can call this function")
443480
444481
445-@Verifier(ba)
446-func bb () = {
447- let u = ba
482+@Verifier(bj)
483+func bk () = {
484+ let u = bj
448485 if ($isInstanceOf(u, "InvokeScriptTransaction"))
449486 then {
450- let bc = u
451- let bd = if ((bc.dApp == j))
452- then if (if ((bc.function == "lockShareTokens"))
487+ let bl = u
488+ let bm = if ((bl.dApp == j))
489+ then if (if ((bl.function == "lockShareTokens"))
453490 then true
454- else (bc.function == "claim"))
491+ else (bl.function == "claim"))
455492 then true
456- else (bc.function == "withdrawShareTokens")
493+ else (bl.function == "withdrawShareTokens")
457494 else false
458- let be = if ((bc.dApp == i))
459- then if ((bc.function == "lockSWOP"))
495+ let bn = if ((bl.dApp == i))
496+ then if ((bl.function == "lockSWOP"))
460497 then true
461- else (bc.function == "withdrawSWOP")
498+ else (bl.function == "withdrawSWOP")
462499 else false
463- let bf = {
464- let bg = bc.dApp
465- if ($isInstanceOf(bg, "Address"))
500+ let bo = {
501+ let bp = bl.dApp
502+ if ($isInstanceOf(bp, "Address"))
466503 then {
467- let bh = bg
468- toString(bh)
504+ let bq = bp
505+ toString(bq)
469506 }
470507 else throw("Transaction must have only address")
471508 }
472- let bi = if (containsElement(o, bf))
473- then containsElement(p, bc.function)
509+ let br = if (containsElement(o, bo))
510+ then containsElement(p, bl.function)
474511 else false
475- let bj = if (if (if (sigVerify(ba.bodyBytes, ba.proofs[0], d))
512+ let bs = if (if (if (sigVerify(bj.bodyBytes, bj.proofs[0], d))
476513 then true
477- else sigVerify(ba.bodyBytes, ba.proofs[0], e))
514+ else sigVerify(bj.bodyBytes, bj.proofs[0], e))
478515 then true
479- else sigVerify(ba.bodyBytes, ba.proofs[0], g))
516+ else sigVerify(bj.bodyBytes, bj.proofs[0], g))
480517 then true
481- else sigVerify(ba.bodyBytes, ba.proofs[0], ba.senderPublicKey)
482- if (if (if (bd)
518+ else sigVerify(bj.bodyBytes, bj.proofs[0], bj.senderPublicKey)
519+ if (if (if (bm)
483520 then true
484- else bi)
521+ else br)
485522 then true
486- else be)
487- then bj
523+ else bn)
524+ then bs
488525 else false
489526 }
490527 else {
491- let bk = if (sigVerify(ba.bodyBytes, ba.proofs[0], d))
528+ let bt = if (sigVerify(bj.bodyBytes, bj.proofs[0], d))
492529 then 1
493530 else 0
494- let bl = if (sigVerify(ba.bodyBytes, ba.proofs[1], e))
531+ let bu = if (sigVerify(bj.bodyBytes, bj.proofs[1], e))
495532 then 1
496533 else 0
497- let bm = if (sigVerify(ba.bodyBytes, ba.proofs[2], f))
534+ let bv = if (sigVerify(bj.bodyBytes, bj.proofs[2], f))
498535 then 1
499536 else 0
500- (((bk + bl) + bm) >= 2)
537+ (((bt + bu) + bv) >= 2)
501538 }
502539 }
503540

github/deemru/w8io/03bedc9 
171.98 ms