tx · 3hHUTTcJbRMnH3YvGipvoZgsiKJW4T6gZW8vks7fbrpw

3MsXpzisJAwnzUr7XrEoW1BZo4U6rw4tsYK:  -0.04200000 Waves

2023.08.24 15:14 [2724706] smart account 3MsXpzisJAwnzUr7XrEoW1BZo4U6rw4tsYK > SELF 0.00000000 Waves

{ "type": 13, "id": "3hHUTTcJbRMnH3YvGipvoZgsiKJW4T6gZW8vks7fbrpw", "fee": 4200000, "feeAssetId": null, "timestamp": 1692879295582, "version": 2, "chainId": 84, "sender": "3MsXpzisJAwnzUr7XrEoW1BZo4U6rw4tsYK", "senderPublicKey": "FFdBua5rzzMkZebvsvmN7sAdU7XhFK8QNJ3hiwwxAYRA", "proofs": [ "2TqduMUwbV1rmaYrZcMx51zKXQwiXyrJEcDJYSJsx8tc6GwFVixJgvGtC3nTkWRDa2yPARKverqfSAEQoyuhued8", "64dpsQ5R2A7AsUw5bRQcgmYwYDjCV8aj3it8G3WCrjr6pVkkLTzxoxzM2Ekq3KqxLXJx9vjRoC9PwCnmWfCGCHhw" ], "script": "base64:BgJiCAISAwoBCBIDCgEIEgMKAQgSBAoCCAESBQoDAggBEgUKAwgBARIECgIICBIECgIICBIECgIIARIFCgMCCAESAwoBCBIECgIIAhIDCgEIEgMKARgSAwoBGBIECgIICBIAEgBpAAdrQWN0aXZlAgZhY3RpdmUAC2tBY3RpdmVHbG9iAhRhY3RpdmVfYWxsX2NvbnRyYWN0cwAPa0RlcHJlY2F0ZWRQb29sAgtkZXByZWNhdGVkXwAGa0NhdXNlAg5zaHV0ZG93bl9jYXVzZQAaa1Jld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQCHV9jdXJyZW50X3Bvb2xfZnJhY3Rpb25fcmV3YXJkABtrUmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMCHl9wcmV2aW91c19wb29sX2ZyYWN0aW9uX3Jld2FyZAATa0hlaWdodFBvb2xGcmFjdGlvbgIaX3Bvb2xfcmV3YXJkX3VwZGF0ZV9oZWlnaHQAE2tSZXdhcmRVcGRhdGVIZWlnaHQCFHJld2FyZF91cGRhdGVfaGVpZ2h0ABZrVXNlclNoYXJlVG9rZW5zU3Rha2VkAhRfc2hhcmVfdG9rZW5zX2xvY2tlZAAWa1VzZXJTaGFyZVRva2Vuc0xvY2tlZAIVX3NoYXJlX3Rva2Vuc19ibG9ja2VkABprVXNlclNoYXJlVG9rZW5zTG9ja2VkVHlwZQIaX3NoYXJlX3Rva2Vuc19ibG9ja2VkX3R5cGUAHGtVc2VyU2hhcmVUb2tlbnNMb2NrZWRIZWlnaHQCHF9zaGFyZV90b2tlbnNfYmxvY2tlZF9oZWlnaHQAF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsAhVfc2hhcmVfdG9rZW5zX3ZpcnR1YWwAFmtTaGFyZVRvdGFsU2hhcmVUb2tlbnMCGl90b3RhbF9zaGFyZV90b2tlbnNfbG9ja2VkABNrU2hhcmVUb2tlbnNWaXJ0dWFsAhtfdG90YWxfc2hhcmVfdG9rZW5zX3ZpcnR1YWwAC2tMb2NrUGFyYW1zAgxfbG9ja19wYXJhbXMADWtMb2NrV2F2ZXNGZWUCDmxvY2tfd2F2ZXNfZmVlAA5rUG9vbEJvb3N0Q29lZgILX2Jvb3N0X2NvZWYAEWtGYXJtTGFzdEludGVyZXN0Ag5fbGFzdF9pbnRlcmVzdAAVa0Zhcm1Vc2VyTGFzdEludGVyZXN0Ag5fbGFzdF9pbnRlcmVzdAASa0Jvb3N0TGFzdEludGVyZXN0AhBfbGFzdF9pbnRlcmVzdF9iABZrQm9vc3RVc2VyTGFzdEludGVyZXN0AhJfbGFzdF9pbnRlcmVzdF91X2IAE2tMYXN0SW50ZXJlc3RIZWlnaHQCFV9sYXN0X2ludGVyZXN0X2hlaWdodAAHa1NXT1BpZAIHU1dPUF9pZAAOa0F2YWlsYWJsZVNXT1ACD19hdmFpbGFibGVfU1dPUAAQa0hhcnZlc3RQb29sVm90ZQIYX2hhcnZlc3RfcG9vbF92b3RlX2dTV09QAAlrUG9vbFZvdGUCEF9wb29sX3ZvdGVfZ1NXT1AADWtVc2VyUG9vbFZvdGUCEF91c2VyX3ZvdGVfZ1NXT1AACmtQb29sU3RydWMCC19wb29sX3N0cnVjAA5rVXNlclBvb2xTdHJ1YwIQX3VzZXJfcG9vbF9zdHJ1YwAUa0hhcnZlc3RVc2VyUG9vbFZvdGUCHV9oYXJ2ZXN0X3VzZXJfcG9vbF92b3RlX2dTV09QABNrRmlyc3RIYXJ2ZXN0SGVpZ2h0AhRmaXJzdF9oYXJ2ZXN0X2hlaWdodAANa1NoYXJlTGltaXRGSAIcc2hhcmVfbGltaXRfb25fZmlyc3RfaGFydmVzdAATa1N0cmF0QkZhcm1JbnRlcmVzdAIWX3N0cmF0X2JfZmFybV9pbnRlcmVzdAANa1Bvb2xJbk9yYWNsZQIFcG9vbF8ADWtDcG1tQ29udHJhY3QCDWNwbW1fY29udHJhY3QADWtBZG1pblB1YktleTECC2FkbWluX3B1Yl8xAA1rQWRtaW5QdWJLZXkyAgthZG1pbl9wdWJfMgANa0FkbWluUHViS2V5MwILYWRtaW5fcHViXzMAEmtBZG1pbkludm9rZVB1YktleQIQYWRtaW5faW52b2tlX3B1YgAQa01vbmV5Qm94QWRkcmVzcwIRbW9uZXlfYm94X2FkZHJlc3MAD2tUZWFtQm94QWRkcmVzcwIQdGVhbV9ib3hfYWRkcmVzcwAOa1ZvdGluZ0FkZHJlc3MCDnZvdGluZ19hZGRyZXNzAAtrR292QWRkcmVzcwISZ292ZXJuYW5jZV9hZGRyZXNzABFrTFBGYXJtaW5nQWRkcmVzcwIKbHBfZmFybWluZwAUa0Zhcm1pbmdUcmVhc3VyZUFkZHICEGZhcm1pbmdfdHJlYXN1cmUADGtBeGx5RmFybWluZwIMYXhseV9mYXJtaW5nAAlrQXhseUxwSWQCCmF4bHlfbHBfaWQABm9yYWNsZQkBB0FkZHJlc3MBARoBVEgTlwzA0zPMJTKAtin3p2RogKvjzHtLmQAOdG90YWxWb3RlU2hhcmUAgMivoCUAC3NjYWxlVmFsdWU4AIDC1y8AC3NjYWxlVmFsdWU2AMCEPQASbG9ja0Jvb3N0Q29lZlNjYWxlAOgHABBkZWZQb29sQm9vc3RDb2VmAPQDAA5zdGFydEVtaXNzaW9uSADQ2LUBABBzd29wWWVhckVtaXNzaW9uAICA6YOx3hYADWJsb2Nrc1BlclllYXIA+o8gAAd0ZWFtRmVlABkBE2dldEJhc2U1OEZyb21PcmFjbGUBA2tleQQHJG1hdGNoMAkAnQgCBQZvcmFjbGUFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnN0cmluZwUHJG1hdGNoMAkA2QQBBQZzdHJpbmcEB25vdGhpbmcFByRtYXRjaDAJAAIBCQCsAgIFA2tleQIIaXMgZW1wdHkADGFkbWluUHViS2V5MQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkxAAxhZG1pblB1YktleTIJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MgAMYWRtaW5QdWJLZXkzCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTMAD21vbmV5Qm94QWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFEGtNb25leUJveEFkZHJlc3MADnRlYW1Cb3hBZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUPa1RlYW1Cb3hBZGRyZXNzAA12b3RpbmdBZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUOa1ZvdGluZ0FkZHJlc3MACmdvdkFkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQtrR292QWRkcmVzcwARYWRtaW5JbnZva2VQdWJLZXkJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUSa0FkbWluSW52b2tlUHViS2V5ABBscEZhcm1pbmdBZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQURa0xQRmFybWluZ0FkZHJlc3MAE2Zhcm1pbmdUcmVhc3VyZUFkZHIJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBRRrRmFybWluZ1RyZWFzdXJlQWRkcgAMY3BtbUNvbnRyYWN0CQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0NwbW1Db250cmFjdAAMYXhseUZhcm1BZGRyCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUMa0F4bHlGYXJtaW5nAAhheGx5THBJZAkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQlrQXhseUxwSWQABmFjdGl2ZQkBEUBleHRyTmF0aXZlKDEwNTEpAgUEdGhpcwUHa0FjdGl2ZQAKYWN0aXZlR2xvYgkBC3ZhbHVlT3JFbHNlAgkAmwgCBQZvcmFjbGUFC2tBY3RpdmVHbG9iBgAEU1dPUAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQdrU1dPUGlkARZnZXRSZXdhcmRzUGVyQmxvY2tJbmZvAAQPZW1pc3Npb25QZXJpb2RzCQBpAgkAZQIFBmhlaWdodAUOc3RhcnRFbWlzc2lvbkgFDWJsb2Nrc1BlclllYXIKAQxjYWxjRW1pc3Npb24CA2FjYwFpBAskdDA1MTI3NTE2NAUDYWNjBAtjdXJFbWlzc2lvbggFCyR0MDUxMjc1MTY0Al8xBAxwcmV2RW1pc3Npb24IBQskdDA1MTI3NTE2NAJfMgMJAGYCBQ9lbWlzc2lvblBlcmlvZHMFAWkJAJQKAgkAawMFC2N1ckVtaXNzaW9uAEsAZAULY3VyRW1pc3Npb24JAJQKAgULY3VyRW1pc3Npb24FDHByZXZFbWlzc2lvbgQLJHQwNTMyMjU0ODgKAAIkbAkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgkAzAgCAA8JAMwIAgAQCQDMCAIAEQkAzAgCABIJAMwIAgATBQNuaWwKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFEHN3b3BZZWFyRW1pc3Npb24FEHN3b3BZZWFyRW1pc3Npb24KAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDGNhbGNFbWlzc2lvbgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUBAtjdXJFbWlzc2lvbggFCyR0MDUzMjI1NDg4Al8xBAxwcmV2RW1pc3Npb24IBQskdDA1MzIyNTQ4OAJfMgkAlQoDCQBpAgULY3VyRW1pc3Npb24FDWJsb2Nrc1BlclllYXIJAGkCBQxwcmV2RW1pc3Npb24FDWJsb2Nrc1BlclllYXIJAGQCBQ5zdGFydEVtaXNzaW9uSAkAaAIFDWJsb2Nrc1BlclllYXIFD2VtaXNzaW9uUGVyaW9kcwEVZ2V0SGVpZ2h0Rmlyc3RIYXJ2ZXN0AQRwb29sCQELdmFsdWVPckVsc2UCCQCaCAIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBRNrRmlyc3RIYXJ2ZXN0SGVpZ2h0AAABFGdldEZIU2hhcmVMaW1pdFRva2VuAQRwb29sCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEcG9vbAUNa1NoYXJlTGltaXRGSAkArAICAhRObyBkYXRhIG9uIHRoZSBrZXk6IAUNa1NoYXJlTGltaXRGSAESZ2V0VG90YWxTaGFyZVRva2VuAQRwb29sCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRZrU2hhcmVUb3RhbFNoYXJlVG9rZW5zCQCsAgIJAKwCAgIUTm8gZGF0YSBvbiB0aGUga2V5OiAFBHBvb2wFFmtTaGFyZVRvdGFsU2hhcmVUb2tlbnMBDGdldFBvb2xWb3RlZAEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ12b3RpbmdBZGRyZXNzCQCsAgIFBHBvb2wFCWtQb29sVm90ZQkBC3ZhbHVlT3JFbHNlAgkAtgkBCQCRAwIJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ12b3RpbmdBZGRyZXNzCQCsAgIFBHBvb2wFCmtQb29sU3RydWMCAAIBXwAAAAABEGdldFVzZXJQb29sVm90ZWQCBHBvb2wEdXNlcgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ12b3RpbmdBZGRyZXNzCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfBQRwb29sBQ1rVXNlclBvb2xWb3RlCQELdmFsdWVPckVsc2UCCQC2CQEJAJEDAgkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFDXZvdGluZ0FkZHJlc3MJAKwCAgkArAICCQCsAgIFBHVzZXICAV8FBHBvb2wFDmtVc2VyUG9vbFN0cnVjAgACAV8AAAAAAQ9nZXRTaGFyZUFzc2V0SWQBBHBvb2wJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBBXZhbHVlAQkApggBBQRwb29sAg5zaGFyZV9hc3NldF9pZAEOYWNjb3VudEJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCaWQFByRtYXRjaDAJAPAHAgUEdGhpcwUCaWQDCQABAgUHJG1hdGNoMAIEVW5pdAQFd2F2ZXMFByRtYXRjaDAICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQACAQILTWF0Y2ggZXJyb3IBDmNhbGNTY2FsZVZhbHVlAghhc3NldElkMQhhc3NldElkMgQQYXNzZXRJZDFEZWNpbWFscwgJAQV2YWx1ZQEJAOwHAQUIYXNzZXRJZDEIZGVjaW1hbHMEEGFzc2V0SWQyRGVjaW1hbHMICQEFdmFsdWUBCQDsBwEFCGFzc2V0SWQyCGRlY2ltYWxzBAtzY2FsZURpZ2l0cwkAZAIJAGUCBRBhc3NldElkMkRlY2ltYWxzBRBhc3NldElkMURlY2ltYWxzAAgJAGwGAAoAAAULc2NhbGVEaWdpdHMAAAAABQRET1dOARF1c2VyQXZhaWxhYmxlU1dPUAIEcG9vbAR1c2VyCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFDmtBdmFpbGFibGVTV09QAAABCnJld2FyZEluZm8BBHBvb2wECyR0MDczMDM3NDE4CQEWZ2V0UmV3YXJkc1BlckJsb2NrSW5mbwAEGnRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50CAULJHQwNzMwMzc0MTgCXzEEG3RvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwgFCyR0MDczMDM3NDE4Al8yBBhsYXN0RW1pc3Npb25VcGRhdGVIZWlnaHQIBQskdDA3MzAzNzQxOAJfMwQZcmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCmdvdkFkZHJlc3MJAKwCAgUEcG9vbAUaa1Jld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQJAKwCAgkArAICCQCsAgIJAKwCAgIUTm8gZGF0YSBvbiB0aGUga2V5OiAFBHBvb2wFGmtSZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50AgwgYXQgYWRkcmVzcyAJAKUIAQUKZ292QWRkcmVzcwQScmV3YXJkVXBkYXRlSGVpZ2h0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUKZ292QWRkcmVzcwUTa1Jld2FyZFVwZGF0ZUhlaWdodAkArAICCQCsAgIJAKwCAgIUTm8gZGF0YSBvbiB0aGUga2V5OiAFE2tSZXdhcmRVcGRhdGVIZWlnaHQCDCBhdCBhZGRyZXNzIAkApQgBBQpnb3ZBZGRyZXNzBBZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0CQELdmFsdWVPckVsc2UCCQCaCAIFCmdvdkFkZHJlc3MJAKwCAgUEcG9vbAUTa0hlaWdodFBvb2xGcmFjdGlvbgUScmV3YXJkVXBkYXRlSGVpZ2h0BBpyZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCmdvdkFkZHJlc3MJAKwCAgUEcG9vbAUba1Jld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzCQCsAgIJAKwCAgkArAICCQCsAgICFE5vIGRhdGEgb24gdGhlIGtleTogBQRwb29sBRtrUmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMCDCBhdCBhZGRyZXNzIAkApQgBBQpnb3ZBZGRyZXNzBBFyZXdhcmRQb29sQ3VycmVudAkAawMFGnRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50BRlyZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50BQ50b3RhbFZvdGVTaGFyZQQScmV3YXJkUG9vbFByZXZpb3VzCQBrAwUadG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQFGnJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzBQ50b3RhbFZvdGVTaGFyZQQVcmV3YXJkUG9vbFByZXZDdXJyZW50CQBrAwUbdG90YWxSZXdhcmRQZXJCbG9ja1ByZXZpb3VzBRlyZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50BQ50b3RhbFZvdGVTaGFyZQQWcmV3YXJkUG9vbFByZXZQcmV2aW91cwkAawMFG3RvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwUacmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMFDnRvdGFsVm90ZVNoYXJlAwMJAGYCBRFyZXdhcmRQb29sQ3VycmVudAUadG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQGCQBmAgUScmV3YXJkUG9vbFByZXZpb3VzBRt0b3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMJAAIBAmJyZXdhcmRQb29sQ3VycmVudCA+IHRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50IG9yIHJld2FyZFBvb2xQcmV2aW91cyA+IHRvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwkAmQoHBRFyZXdhcmRQb29sQ3VycmVudAUScmV3YXJkVXBkYXRlSGVpZ2h0BRJyZXdhcmRQb29sUHJldmlvdXMFFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQFGGxhc3RFbWlzc2lvblVwZGF0ZUhlaWdodAUVcmV3YXJkUG9vbFByZXZDdXJyZW50BRZyZXdhcmRQb29sUHJldlByZXZpb3VzARNnZXRMYXN0SW50ZXJlc3RJbmZvAQRwb29sBAxmYXJtSW50ZXJlc3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFEWtGYXJtTGFzdEludGVyZXN0CQCsAgIJAKwCAgIUTm8gZGF0YSBvbiB0aGUga2V5OiAFBHBvb2wFEWtGYXJtTGFzdEludGVyZXN0BA1ib29zdEludGVyZXN0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUSa0Jvb3N0TGFzdEludGVyZXN0AAAEEmxhc3RJbnRlcmVzdEhlaWdodAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFE2tMYXN0SW50ZXJlc3RIZWlnaHQFBmhlaWdodAkAlQoDBRJsYXN0SW50ZXJlc3RIZWlnaHQFDGZhcm1JbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAELY2FsY0Zhcm1Sd2QCBHBvb2wOY3VyVG90YWxSZXdhcmQEDXBvb2xCb29zdENvZWYJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQ5rUG9vbEJvb3N0Q29lZgUQZGVmUG9vbEJvb3N0Q29lZgkAawMFDmN1clRvdGFsUmV3YXJkBRJsb2NrQm9vc3RDb2VmU2NhbGUJAGQCBQ1wb29sQm9vc3RDb2VmBRJsb2NrQm9vc3RDb2VmU2NhbGUBDGNhbGNCb29zdFJ3ZAIEcG9vbA5jdXJUb3RhbFJld2FyZAQNcG9vbEJvb3N0Q29lZgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFDmtQb29sQm9vc3RDb2VmBRBkZWZQb29sQm9vc3RDb2VmCQBrAwUOY3VyVG90YWxSZXdhcmQFDXBvb2xCb29zdENvZWYJAGQCBQ1wb29sQm9vc3RDb2VmBRJsb2NrQm9vc3RDb2VmU2NhbGUBDGNhbGNJbnRlcmVzdAwEcG9vbBJsYXN0SW50ZXJlc3RIZWlnaHQScmV3YXJkVXBkYXRlSGVpZ2h0FnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQMZmFybUludGVyZXN0DWJvb3N0SW50ZXJlc3QJcG9vbFZvdGVkFWN1cnJlbnRSZXdhcmRQZXJCbG9jaxBzaGFyZVRva2VuTG9ja2VkFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sKc2NhbGVWYWx1ZQh0b0hlaWdodAQNJHQwMTA0MzIxMTYxNwMDAwkAZgIFEnJld2FyZFVwZGF0ZUhlaWdodAUIdG9IZWlnaHQJAAACBRJyZXdhcmRVcGRhdGVIZWlnaHQFFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQHBgMJAGYCBQh0b0hlaWdodAUScmV3YXJkVXBkYXRlSGVpZ2h0CQECIT0CBRJyZXdhcmRVcGRhdGVIZWlnaHQFFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQHBAFyCQBoAgUWcHJldmlvdXNSZXdhcmRQZXJCbG9jawkAZQIFCHRvSGVpZ2h0BRJsYXN0SW50ZXJlc3RIZWlnaHQJAJUKAwUBcgUMZmFybUludGVyZXN0BQ1ib29zdEludGVyZXN0AwMDCQBmAgUIdG9IZWlnaHQFEnJld2FyZFVwZGF0ZUhlaWdodAkAAAIFEnJld2FyZFVwZGF0ZUhlaWdodAUWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAcJAGYCBRJsYXN0SW50ZXJlc3RIZWlnaHQFEnJld2FyZFVwZGF0ZUhlaWdodAcEAXIJAGgCBRVjdXJyZW50UmV3YXJkUGVyQmxvY2sJAGUCBQh0b0hlaWdodAUSbGFzdEludGVyZXN0SGVpZ2h0CQCVCgMFAXIFDGZhcm1JbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAQJcndkQmZyVXBkCQBoAgUWcHJldmlvdXNSZXdhcmRQZXJCbG9jawkAZQIFEnJld2FyZFVwZGF0ZUhlaWdodAUSbGFzdEludGVyZXN0SGVpZ2h0BAZmQmZyVXAJAGQCBQxmYXJtSW50ZXJlc3QJAGsDCQELY2FsY0Zhcm1Sd2QCBQRwb29sBQlyd2RCZnJVcGQFCnNjYWxlVmFsdWUFEHNoYXJlVG9rZW5Mb2NrZWQEBmJCZnJVcAkAZAIFDWJvb3N0SW50ZXJlc3QDCQBmAgUJcG9vbFZvdGVkAAAJAGsDCQEMY2FsY0Jvb3N0UndkAgUEcG9vbAUJcndkQmZyVXBkBQtzY2FsZVZhbHVlOAUJcG9vbFZvdGVkAAAEA3J3ZAkAaAIFFWN1cnJlbnRSZXdhcmRQZXJCbG9jawkAZQIFCHRvSGVpZ2h0BRJyZXdhcmRVcGRhdGVIZWlnaHQJAJUKAwUDcndkBQZmQmZyVXAFBmJCZnJVcAQGcmV3YXJkCAUNJHQwMTA0MzIxMTYxNwJfMQQOZmFybUludHJCZWZvcmUIBQ0kdDAxMDQzMjExNjE3Al8yBA9ib29zdEludHJCZWZvcmUIBQ0kdDAxMDQzMjExNjE3Al8zBA9uZXdGYXJtSW50ZXJlc3QJAGQCBQ5mYXJtSW50ckJlZm9yZQkAawMJAQtjYWxjRmFybVJ3ZAIFBHBvb2wFBnJld2FyZAUKc2NhbGVWYWx1ZQUQc2hhcmVUb2tlbkxvY2tlZAQQbmV3Qm9vc3RJbnRlcmVzdAkAZAIFD2Jvb3N0SW50ckJlZm9yZQMJAGYCBQlwb29sVm90ZWQAAAkAawMJAQxjYWxjQm9vc3RSd2QCBQRwb29sBQZyZXdhcmQFC3NjYWxlVmFsdWU4BQlwb29sVm90ZWQAAAkAlAoCBQ9uZXdGYXJtSW50ZXJlc3QFEG5ld0Jvb3N0SW50ZXJlc3QBCWNsYWltQ2FsYwIEcG9vbAR1c2VyBApzY2FsZVZhbHVlCQEOY2FsY1NjYWxlVmFsdWUCBQRTV09QCQEPZ2V0U2hhcmVBc3NldElkAQUEcG9vbAQJcG9vbFZvdGVkCQEMZ2V0UG9vbFZvdGVkAQUEcG9vbAQKdVBvb2xWb3RlZAkBEGdldFVzZXJQb29sVm90ZWQCBQRwb29sBQR1c2VyBApzaGFyZVRva2VuCQESZ2V0VG90YWxTaGFyZVRva2VuAQUEcG9vbAQRdG90YWxTaGFyZVZpcnR1YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRNrU2hhcmVUb2tlbnNWaXJ0dWFsBQpzaGFyZVRva2VuBBJzdHJhdEJGYXJtSW50ZXJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRNrU3RyYXRCRmFybUludGVyZXN0AAAEDSR0MDEyNDU1MTI1MzYJARNnZXRMYXN0SW50ZXJlc3RJbmZvAQUEcG9vbAQSbGFzdEludGVyZXN0SGVpZ2h0CAUNJHQwMTI0NTUxMjUzNgJfMQQMZmFybUludGVyZXN0CAUNJHQwMTI0NTUxMjUzNgJfMgQNYm9vc3RJbnRlcmVzdAgFDSR0MDEyNDU1MTI1MzYCXzMEDSR0MDEyNTQxMTI3OTgJAQpyZXdhcmRJbmZvAQUEcG9vbAQVY3VycmVudFJld2FyZFBlckJsb2NrCAUNJHQwMTI1NDExMjc5OAJfMQQScmV3YXJkVXBkYXRlSGVpZ2h0CAUNJHQwMTI1NDExMjc5OAJfMgQWcHJldmlvdXNSZXdhcmRQZXJCbG9jawgFDSR0MDEyNTQxMTI3OTgCXzMEFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQIBQ0kdDAxMjU0MTEyNzk4Al80BBRlbWlzc2lvblVwZGF0ZUhlaWdodAgFDSR0MDEyNTQxMTI3OTgCXzUEGXByZXZDdXJyZW50UmV3YXJkUGVyQmxvY2sIBQ0kdDAxMjU0MTEyNzk4Al82BBpwcmV2UHJldmlvdXNSZXdhcmRQZXJCbG9jawgFDSR0MDEyNTQxMTI3OTgCXzcEDXVGYXJtSW50ZXJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUVa0Zhcm1Vc2VyTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QEDnVCb29zdEludGVyZXN0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtCb29zdFVzZXJMYXN0SW50ZXJlc3QDAwkAZgIFEnN0cmF0QkZhcm1JbnRlcmVzdAUNdUZhcm1JbnRlcmVzdAkAZgIFCnVQb29sVm90ZWQAAAcAAAUNYm9vc3RJbnRlcmVzdAQSdVNoYXJlVG9rZW5zU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQAAAQQdVNoYXJlVG9rZW5zVmlydAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAUSdVNoYXJlVG9rZW5zU3Rha2VkAwkAAAIFEXRvdGFsU2hhcmVWaXJ0dWFsAAAECnRvVHJlYXN1cnkDCQBmAgUUZW1pc3Npb25VcGRhdGVIZWlnaHQFEmxhc3RJbnRlcmVzdEhlaWdodAkAZAIJAGgCBRlwcmV2Q3VycmVudFJld2FyZFBlckJsb2NrCQBlAgUUZW1pc3Npb25VcGRhdGVIZWlnaHQFEmxhc3RJbnRlcmVzdEhlaWdodAkAaAIFFWN1cnJlbnRSZXdhcmRQZXJCbG9jawkAZQIFBmhlaWdodAUUZW1pc3Npb25VcGRhdGVIZWlnaHQJAGgCBRVjdXJyZW50UmV3YXJkUGVyQmxvY2sJAGUCBQZoZWlnaHQFEmxhc3RJbnRlcmVzdEhlaWdodAQKdGVhbVJld2FyZAkAawMFCnRvVHJlYXN1cnkFB3RlYW1GZWUAZAkAlwoFBQxmYXJtSW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QAAAkAZQIFCnRvVHJlYXN1cnkFCnRlYW1SZXdhcmQFCnRlYW1SZXdhcmQEDSR0MDEzODQxMTQ5NzgDCQBmAgUUZW1pc3Npb25VcGRhdGVIZWlnaHQFEmxhc3RJbnRlcmVzdEhlaWdodAQNJHQwMTQyNTQxNDgxMwkBDGNhbGNJbnRlcmVzdAwFBHBvb2wFEmxhc3RJbnRlcmVzdEhlaWdodAUScmV3YXJkVXBkYXRlSGVpZ2h0BRZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0BQxmYXJtSW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QFCXBvb2xWb3RlZAUZcHJldkN1cnJlbnRSZXdhcmRQZXJCbG9jawURdG90YWxTaGFyZVZpcnR1YWwFGnByZXZQcmV2aW91c1Jld2FyZFBlckJsb2NrBQpzY2FsZVZhbHVlBRRlbWlzc2lvblVwZGF0ZUhlaWdodAQTcHJldk5ld0Zhcm1JbnRlcmVzdAgFDSR0MDE0MjU0MTQ4MTMCXzEEFHByZXZOZXdCb29zdEludGVyZXN0CAUNJHQwMTQyNTQxNDgxMwJfMgkAlQoDBRNwcmV2TmV3RmFybUludGVyZXN0BRRwcmV2TmV3Qm9vc3RJbnRlcmVzdAUUZW1pc3Npb25VcGRhdGVIZWlnaHQJAJUKAwUMZmFybUludGVyZXN0BQ1ib29zdEludGVyZXN0BRJsYXN0SW50ZXJlc3RIZWlnaHQEEHByZXZGYXJtSW50ZXJlc3QIBQ0kdDAxMzg0MTE0OTc4Al8xBBFwcmV2Qm9vc3RJbnRlcmVzdAgFDSR0MDEzODQxMTQ5NzgCXzIECExJSGVpZ2h0CAUNJHQwMTM4NDExNDk3OAJfMwQNJHQwMTQ5ODcxNTQxMAkBDGNhbGNJbnRlcmVzdAwFBHBvb2wFCExJSGVpZ2h0BRJyZXdhcmRVcGRhdGVIZWlnaHQFFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQFEHByZXZGYXJtSW50ZXJlc3QFEXByZXZCb29zdEludGVyZXN0BQlwb29sVm90ZWQFFWN1cnJlbnRSZXdhcmRQZXJCbG9jawURdG90YWxTaGFyZVZpcnR1YWwFFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sFCnNjYWxlVmFsdWUFBmhlaWdodAQPbmV3RmFybUludGVyZXN0CAUNJHQwMTQ5ODcxNTQxMAJfMQQQbmV3Qm9vc3RJbnRlcmVzdAgFDSR0MDE0OTg3MTU0MTACXzIEB2Zhcm1Sd2QJAGsDBRB1U2hhcmVUb2tlbnNWaXJ0CQBlAgUPbmV3RmFybUludGVyZXN0BQ11RmFybUludGVyZXN0BQpzY2FsZVZhbHVlBA1wb29sQm9vc3RDb2VmCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUOa1Bvb2xCb29zdENvZWYFEGRlZlBvb2xCb29zdENvZWYEC2Jvb3N0UndkTWF4CQBrAwkAawMFEHVTaGFyZVRva2Vuc1ZpcnQJAGUCBQ9uZXdGYXJtSW50ZXJlc3QJAJYDAQkAzAgCBQ11RmFybUludGVyZXN0CQDMCAIFEnN0cmF0QkZhcm1JbnRlcmVzdAUDbmlsBQpzY2FsZVZhbHVlBQ1wb29sQm9vc3RDb2VmBRJsb2NrQm9vc3RDb2VmU2NhbGUEC2N1ckJvb3N0UndkCQBrAwkAZQIFEG5ld0Jvb3N0SW50ZXJlc3QFDnVCb29zdEludGVyZXN0BQp1UG9vbFZvdGVkBQtzY2FsZVZhbHVlOAQIYm9vc3RSd2QJAJcDAQkAzAgCBQtib29zdFJ3ZE1heAkAzAgCBQtjdXJCb29zdFJ3ZAUDbmlsBAp0b1RyZWFzdXJ5CQBlAgULYm9vc3RSd2RNYXgFCGJvb3N0UndkBAp0ZWFtUmV3YXJkCQBrAwUKdG9UcmVhc3VyeQUHdGVhbUZlZQBkAwkAZgIAAAUKdG9UcmVhc3VyeQkAAgECDnRvVHJlYXN1cnkgPCAwCQCXCgUFD25ld0Zhcm1JbnRlcmVzdAUQbmV3Qm9vc3RJbnRlcmVzdAkAZAIFB2Zhcm1Sd2QFCGJvb3N0UndkCQBlAgUKdG9UcmVhc3VyeQUKdGVhbVJld2FyZAUKdGVhbVJld2FyZAEbYXZhaWxhYmxlQ2xhaW1DYWxjQWxsQnlVc2VyAgVwb29scwR1c2VyCgENY2FsY0F2YWlsYWJsZQIDYWNjBHBvb2wEDSR0MDE2MzY0MTYzOTMFA2FjYwQIbmV3UG9vbHMIBQ0kdDAxNjM2NDE2MzkzAl8xBAdhbW91bnRzCAUNJHQwMTYzNjQxNjM5MwJfMgQNJHQwMTY0MDIxNjQ1NQkBCWNsYWltQ2FsYwIFBHBvb2wFBHVzZXIEAmZpCAUNJHQwMTY0MDIxNjQ1NQJfMQQCYmkIBQ0kdDAxNjQwMjE2NDU1Al8yBAtjbGFpbUFtb3VudAgFDSR0MDE2NDAyMTY0NTUCXzMEAnR0CAUNJHQwMTY0MDIxNjQ1NQJfNAQNYXZhaWxhYmxlRnVuZAkAZAIJARF1c2VyQXZhaWxhYmxlU1dPUAIFBHBvb2wFBHVzZXIFC2NsYWltQW1vdW50CQCUCgIJAM0IAgUIbmV3UG9vbHMFBHBvb2wJAM0IAgUHYW1vdW50cwUNYXZhaWxhYmxlRnVuZAoAAiRsBQVwb29scwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDWNhbGNBdmFpbGFibGUCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDYwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8ARVjYW5Mb2NrSW5GaXJzdEhhcnZlc3QFBHBvb2wEdXNlchV1c2VyU2hhcmVUb2tlbnNTdGFrZWQJcG10QW1vdW50CGxvY2tUeXBlAwkAZgIJARVnZXRIZWlnaHRGaXJzdEhhcnZlc3QBBQRwb29sBQZoZWlnaHQED3RvdGFsVm90ZUFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ12b3RpbmdBZGRyZXNzCQCsAgIFBHBvb2wFEGtIYXJ2ZXN0UG9vbFZvdGUAAAQOdXNlclZvdGVBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUNdm90aW5nQWRkcmVzcwkArAICCQCsAgIJAKwCAgUEdXNlcgIBXwUEcG9vbAUUa0hhcnZlc3RVc2VyUG9vbFZvdGUAAAQRRkhTaGFyZVRva2VuTGltaXQJARRnZXRGSFNoYXJlTGltaXRUb2tlbgEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBHBvb2wEFUZIU2hhcmVUb2tlblVzZXJMaW1pdAkAZQIJAGsDBRFGSFNoYXJlVG9rZW5MaW1pdAUOdXNlclZvdGVBbW91bnQFD3RvdGFsVm90ZUFtb3VudAUVdXNlclNoYXJlVG9rZW5zU3Rha2VkAwkAZgIFCGxvY2tUeXBlAAAJAAIBAjJZb3UgY2FuJ3QgbG9jayBzaGFyZVRva2VucyB0aWxsIGZpcnN0IGhhcnZlc3QgZW5kLgMJAAACBQ51c2VyVm90ZUFtb3VudAAACQACAQJDWW91IGNhbid0IGxvY2sgc2hhcmVUb2tlbnMuIFlvdSBkaWRuJ3Qgdm90ZSBmb3IgcG9vbCBpbiBmaXJzdCB3ZWVrLgMJAGcCBQlwbXRBbW91bnQFFUZIU2hhcmVUb2tlblVzZXJMaW1pdAkAZQIFCXBtdEFtb3VudAUVRkhTaGFyZVRva2VuVXNlckxpbWl0AAAAAAENZ2V0TG9ja1BhcmFtcwEEdHlwZQQKbG9ja1BhcmFtcwkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICCQCkAwEFBHR5cGUFC2tMb2NrUGFyYW1zCQCsAgICHlRoZXJlIGFyZSBubyBrZXkgZm9yIGxvY2sgdHlwZQkApAMBBQR0eXBlAgFfCQCUCgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpsb2NrUGFyYW1zAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpsb2NrUGFyYW1zAAEBB3N1c3BlbmQBBWNhdXNlCQDMCAIJAQxCb29sZWFuRW50cnkCBQdrQWN0aXZlBwkAzAgCCQELU3RyaW5nRW50cnkCBQZrQ2F1c2UFBWNhdXNlBQNuaWwBCGlzQWN0aXZlAAMDBQZhY3RpdmUFCmFjdGl2ZUdsb2IHBQR1bml0CQACAQIfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAELaXNBZG1pbkNhbGwBAWkDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQxhZG1pblB1YktleTEJAMwIAgUMYWRtaW5QdWJLZXkyCQDMCAIFDGFkbWluUHViS2V5MwUDbmlsCAUBaQ9jYWxsZXJQdWJsaWNLZXkFBHVuaXQJAAIBAiFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BCmlzUG9vbENhbGwCAWkEcG9vbAMDCQAAAgkApQgBCAUBaQZjYWxsZXIFBHBvb2wGCQAAAggFAWkGY2FsbGVyBQxjcG1tQ29udHJhY3QFBHVuaXQJAAIBAiBPbmx5IHBvb2wgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgERZ2V0RGVwcmVjYXRlZFBvb2wBBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAJsIAgUGb3JhY2xlCQCsAgIFD2tEZXByZWNhdGVkUG9vbAUEcG9vbAcBEGlzRGVwcmVjYXRlZFBvb2wBBHBvb2wDCQEBIQEJARFnZXREZXByZWNhdGVkUG9vbAEFBHBvb2wFBHVuaXQJAAIBAi9Qb29sIGlzIGRlcHJlY2F0ZWQuIE9ubHkgdW5sb2NrIGFjdGlvbiBhbGxvd2VkLgEKaXNTZWxmQ2FsbAEBaQMJAAACCAUBaQZjYWxsZXIFBHRoaXMFBHVuaXQJAAIBAitPbmx5IGNvbnRyYWN0IGl0c2VsZiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uARNjYWxjTG9ja1NoYXJlVG9rZW5zBAFpBmNhbGxlcgRwb29sCGxvY2tUeXBlBANpbnYDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQhheGx5THBJZAkA/AcEBQxheGx5RmFybUFkZHICCGxwQWN0aW9uBQNuaWwFA25pbAUDbmlsAwkAAAIFA2ludgUDaW52BAxzaGFyZUFzc2V0SWQJAQ9nZXRTaGFyZUFzc2V0SWQBBQRwb29sBAR1c2VyCQClCAEFBmNhbGxlcgQKdG90YWxTaGFyZQkBEmdldFRvdGFsU2hhcmVUb2tlbgEFBHBvb2wEEXRvdGFsU2hhcmVWaXJ0dWFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUTa1NoYXJlVG9rZW5zVmlydHVhbAUKdG90YWxTaGFyZQQQdXNlclN0YWtlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zU3Rha2VkAAAED3VzZXJMb2NrZWRIZWlndAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRxrVXNlclNoYXJlVG9rZW5zTG9ja2VkSGVpZ2h0AAAEEHVzZXJMb2NrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc0xvY2tlZAAABBF1c2VyQW1vdW50VmlydHVhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAUQdXNlclN0YWtlZEFtb3VudAQUdG90YWxVc2VyU2hhcmVUb2tlbnMJAGQCCQBkAgUQdXNlclN0YWtlZEFtb3VudAUQdXNlckxvY2tlZEFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEDSR0MDE5Njg3MTk3MzkJAQ1nZXRMb2NrUGFyYW1zAQUIbG9ja1R5cGUECmxvY2tQZXJpb2QIBQ0kdDAxOTY4NzE5NzM5Al8xBAhsb2NrQ29lZggFDSR0MDE5Njg3MTk3MzkCXzIEDGxvY2tXYXZlc0ZlZQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa0xvY2tXYXZlc0ZlZQMJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUMc2hhcmVBc3NldElkCQACAQIbV3Jvbmcgc2hhcmV0b2tlbiBpbiBwYXltZW50AwkAZwIAAAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAAIBAiVQYXltZW50IGFtb3VudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwAwkAZgIAAAUIbG9ja1R5cGUJAAIBAhVsb2NrVHlwZSBtdXN0IGJlID49IDAEFXNoYXJlVG9rZW5zQ2hhbmdlT25GSAkBFWNhbkxvY2tJbkZpcnN0SGFydmVzdAUFBHBvb2wFBHVzZXIFEHVzZXJTdGFrZWRBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQhsb2NrVHlwZQMJAAACBRVzaGFyZVRva2Vuc0NoYW5nZU9uRkgFFXNoYXJlVG9rZW5zQ2hhbmdlT25GSAQNJHQwMjAxNjYyMjEwMAMJAAACBQhsb2NrVHlwZQAABBR1c2VyQW1vdW50VmlydHVhbE5ldwkAZQIJAGQCBRF1c2VyQW1vdW50VmlydHVhbAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFFXNoYXJlVG9rZW5zQ2hhbmdlT25GSAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zU3Rha2VkCQBlAgkAZAIFEHVzZXJTdGFrZWRBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BRVzaGFyZVRva2Vuc0NoYW5nZU9uRkgJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsBRR1c2VyQW1vdW50VmlydHVhbE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrU2hhcmVUb2tlbnNWaXJ0dWFsCQBlAgkAZAIFEXRvdGFsU2hhcmVWaXJ0dWFsCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUVc2hhcmVUb2tlbnNDaGFuZ2VPbkZICQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUVc2hhcmVUb2tlbnNDaGFuZ2VPbkZICAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFA25pbAkAZQIJAGQCBQp0b3RhbFNoYXJlCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUVc2hhcmVUb2tlbnNDaGFuZ2VPbkZIAwMJAAACBQ91c2VyTG9ja2VkSGVpZ3QAAAMDCQBmAgACCQCQAwEIBQFpCHBheW1lbnRzBgkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAQdhc3NldElkBQR1bml0BgkAZgIFDGxvY2tXYXZlc0ZlZQgJAJEDAggFAWkIcGF5bWVudHMAAQZhbW91bnQHCQACAQkArAICCQCsAgICK1lvdSBuZWVkIHRvIHBheSBhZGRpdGlvbmFsIHdhdmVzIGNvbWlzc2lvbiAJAKQDAQUMbG9ja1dhdmVzRmVlAgVXQVZFUwMJAGYCBQ91c2VyTG9ja2VkSGVpZ3QJAGQCBQZoZWlnaHQFCmxvY2tQZXJpb2QJAAIBAk9Zb3UgY2Fubm90IGxvY2sgc2hhcmV0b2tlbnMgZm9yIGEgcGVyaW9kIGxlc3MgdGhhbiB3aGF0IHlvdSBoYXZlIGFscmVhZHkgbG9ja2VkBBN1c2VyTG9ja2VkQW1vdW50TmV3CQBkAgUQdXNlckxvY2tlZEFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEEnVzZXJMb2NrZWRIZWlndE5ldwkAZAIFBmhlaWdodAUKbG9ja1BlcmlvZAQUdXNlckFtb3VudFZpcnR1YWxOZXcJAGQCCQBrAwUTdXNlckxvY2tlZEFtb3VudE5ldwUIbG9ja0NvZWYFEmxvY2tCb29zdENvZWZTY2FsZQUQdXNlclN0YWtlZEFtb3VudAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zTG9ja2VkBRN1c2VyTG9ja2VkQW1vdW50TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRxrVXNlclNoYXJlVG9rZW5zTG9ja2VkSGVpZ2h0BRJ1c2VyTG9ja2VkSGVpZ3ROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFGmtVc2VyU2hhcmVUb2tlbnNMb2NrZWRUeXBlBQhsb2NrVHlwZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUXa1VzZXJTaGFyZVRva2Vuc1ZpcnR1YWwFFHVzZXJBbW91bnRWaXJ0dWFsTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tTaGFyZVRva2Vuc1ZpcnR1YWwJAGQCCQBlAgURdG90YWxTaGFyZVZpcnR1YWwFEXVzZXJBbW91bnRWaXJ0dWFsBRR1c2VyQW1vdW50VmlydHVhbE5ldwUDbmlsCQBkAgUKdG90YWxTaGFyZQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEC2xvY2tFbnRyaWVzCAUNJHQwMjAxNjYyMjEwMAJfMQQNdG90YWxTaGFyZU5ldwgFDSR0MDIwMTY2MjIxMDACXzIDCQBmAgUNdG90YWxTaGFyZU5ldwkBDmFjY291bnRCYWxhbmNlAQUMc2hhcmVBc3NldElkCQACAQIwQmFsYW5jZSBvZiBzaGFyZS10b2tlbiBpcyBsb3dlciB0aGFuIHRvdGFsQW1vdW50BA0kdDAyMjIyNTIyMzE5CQEJY2xhaW1DYWxjAgUEcG9vbAUEdXNlcgQMZmFybUludGVyZXN0CAUNJHQwMjIyMjUyMjMxOQJfMQQNYm9vc3RJbnRlcmVzdAgFDSR0MDIyMjI1MjIzMTkCXzIEC2NsYWltQW1vdW50CAUNJHQwMjIyMjUyMjMxOQJfMwQKdG9UcmVhc3VyZQgFDSR0MDIyMjI1MjIzMTkCXzQECnRlYW1SZXdhcmQIBQ0kdDAyMjIyNTIyMzE5Al81BBFhdmFpbGFibGVGdW5kc05ldwkAZAIJARF1c2VyQXZhaWxhYmxlU1dPUAIFBHBvb2wFBHVzZXIFC2NsYWltQW1vdW50BAR1cGxwAwkAAAIJAJ0IAgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wCB3ZlcnNpb24CBTMuMC4wCQD8BwQFEGxwRmFybWluZ0FkZHJlc3MCEnVwZGF0ZVVzZXJJbnRlcmVzdAkAzAgCBQR1c2VyCQDMCAIFBHBvb2wJAMwIAgUUdG90YWxVc2VyU2hhcmVUb2tlbnMFA25pbAUDbmlsAAADCQAAAgUEdXBscAUEdXBscAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRVrRmFybVVzZXJMYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa0Jvb3N0VXNlckxhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRFrRmFybUxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEmtCb29zdExhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrTGFzdEludGVyZXN0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUWa1NoYXJlVG90YWxTaGFyZVRva2VucwUNdG90YWxTaGFyZU5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUOa0F2YWlsYWJsZVNXT1AFEWF2YWlsYWJsZUZ1bmRzTmV3CQDMCAIJAQdSZWlzc3VlAwUEU1dPUAkAZAIFCnRvVHJlYXN1cmUFCnRlYW1SZXdhcmQGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFE2Zhcm1pbmdUcmVhc3VyZUFkZHIFCnRvVHJlYXN1cmUFBFNXT1AJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUOdGVhbUJveEFkZHJlc3MFCnRlYW1SZXdhcmQFBFNXT1AFA25pbAULbG9ja0VudHJpZXMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BF2NhbGNXaXRoZHJhd1NoYXJlVG9rZW5zBAFpBmNhbGxlcgRwb29sGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQEA2ludgMJARFnZXREZXByZWNhdGVkUG9vbAEFBHBvb2wJAPwHBAUEdGhpcwIYdW5sb2NrVXNlckxvY2tEZXByZWNhdGVkCQDMCAIFBHBvb2wJAMwIAgkApQgBBQZjYWxsZXIFA25pbAUDbmlsAAADCQAAAgUDaW52BQNpbnYEDXNoYXJlVG9rZW5zSWQJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBBXZhbHVlAQkApggBBQRwb29sAg5zaGFyZV9hc3NldF9pZAQEaW52MQMJAAACBQ1zaGFyZVRva2Vuc0lkBQhheGx5THBJZAkA/AcEBQxheGx5RmFybUFkZHICCGxwQWN0aW9uBQNuaWwFA25pbAUDbmlsAwkAAAIFBGludjEFBGludjEEBHVzZXIJAKUIAQUGY2FsbGVyBA0kdDAyMzc4ODIzODgyCQEJY2xhaW1DYWxjAgUEcG9vbAUEdXNlcgQMZmFybUludGVyZXN0CAUNJHQwMjM3ODgyMzg4MgJfMQQNYm9vc3RJbnRlcmVzdAgFDSR0MDIzNzg4MjM4ODICXzIEC2NsYWltQW1vdW50CAUNJHQwMjM3ODgyMzg4MgJfMwQKdG9UcmVhc3VyZQgFDSR0MDIzNzg4MjM4ODICXzQECnRlYW1SZXdhcmQIBQ0kdDAyMzc4ODIzODgyAl81BBB1c2VyU3Rha2VkQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQAAAQQdXNlckxvY2tlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zTG9ja2VkAAAEEXVzZXJBbW91bnRWaXJ0dWFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsBRB1c2VyU3Rha2VkQW1vdW50BBN1c2VyU3Rha2VkQW1vdW50TmV3CQBlAgUQdXNlclN0YWtlZEFtb3VudAUZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAQRYXZhaWxhYmxlRnVuZHNOZXcJAGQCCQERdXNlckF2YWlsYWJsZVNXT1ACBQRwb29sBQR1c2VyBQtjbGFpbUFtb3VudAQQdG90YWxTaGFyZUFtb3VudAkBEmdldFRvdGFsU2hhcmVUb2tlbgEFBHBvb2wEEXRvdGFsU2hhcmVWaXJ0dWFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUTa1NoYXJlVG9rZW5zVmlydHVhbAUQdG90YWxTaGFyZUFtb3VudAQTdG90YWxTaGFyZUFtb3VudE5ldwkAZQIFEHRvdGFsU2hhcmVBbW91bnQFGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQEFHRvdGFsU2hhcmVWaXJ0dWFsTmV3CQBlAgURdG90YWxTaGFyZVZpcnR1YWwFGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQEFHVzZXJBbW91bnRWaXJ0dWFsTmV3CQBlAgURdXNlckFtb3VudFZpcnR1YWwFGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQDCQBmAgUZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAUQdXNlclN0YWtlZEFtb3VudAkAAgECLFdpdGhkcmF3IGFtb3VudCBtb3JlIHRoZW4gdXNlciBsb2NrZWQgYW1vdW50AwkAZgIJAQ5hY2NvdW50QmFsYW5jZQEFDXNoYXJlVG9rZW5zSWQFEHRvdGFsU2hhcmVBbW91bnQJAAIBAjBCYWxhbmNlIG9mIHNoYXJlLXRva2VuIGlzIGxvd2VyIHRoYW4gdG90YWxBbW91bnQEBHVwbHADCQAAAgkAnQgCCQEHQWRkcmVzcwEJANkEAQUEcG9vbAIHdmVyc2lvbgIFMy4wLjAJAPwHBAUQbHBGYXJtaW5nQWRkcmVzcwISdXBkYXRlVXNlckludGVyZXN0CQDMCAIFBHVzZXIJAMwIAgUEcG9vbAkAzAgCCQBkAgUQdXNlclN0YWtlZEFtb3VudAUQdXNlckxvY2tlZEFtb3VudAUDbmlsBQNuaWwAAAMJAAACBQR1cGxwBQR1cGxwCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRVrRmFybVVzZXJMYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa0Jvb3N0VXNlckxhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRFrRmFybUxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEmtCb29zdExhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrTGFzdEludGVyZXN0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQFE3VzZXJTdGFrZWRBbW91bnROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsBRR1c2VyQW1vdW50VmlydHVhbE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRZrU2hhcmVUb3RhbFNoYXJlVG9rZW5zBRN0b3RhbFNoYXJlQW1vdW50TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tTaGFyZVRva2Vuc1ZpcnR1YWwFFHRvdGFsU2hhcmVWaXJ0dWFsTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBQ5rQXZhaWxhYmxlU1dPUAURYXZhaWxhYmxlRnVuZHNOZXcJAMwIAgkBB1JlaXNzdWUDBQRTV09QBQp0b1RyZWFzdXJlBgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRNmYXJtaW5nVHJlYXN1cmVBZGRyBQp0b1RyZWFzdXJlBQRTV09QCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDnRlYW1Cb3hBZGRyZXNzBQp0ZWFtUmV3YXJkBQRTV09QCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAUNc2hhcmVUb2tlbnNJZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQljYWxjQ2xhaW0DAWkEcG9vbAZjYWxsZXIEDXNoYXJlVG9rZW5zSWQJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBBXZhbHVlAQkApggBBQRwb29sAg5zaGFyZV9hc3NldF9pZAQEdXNlcgkApQgBBQZjYWxsZXIEEHNoYXJlVG9rZW5Mb2NrZWQJARJnZXRUb3RhbFNoYXJlVG9rZW4BBQRwb29sBA0kdDAyNjQ1MjI2NTQ2CQEJY2xhaW1DYWxjAgUEcG9vbAUEdXNlcgQMZmFybUludGVyZXN0CAUNJHQwMjY0NTIyNjU0NgJfMQQNYm9vc3RJbnRlcmVzdAgFDSR0MDI2NDUyMjY1NDYCXzIEC2NsYWltQW1vdW50CAUNJHQwMjY0NTIyNjU0NgJfMwQKdG9UcmVhc3VyZQgFDSR0MDI2NDUyMjY1NDYCXzQECnRlYW1SZXdhcmQIBQ0kdDAyNjQ1MjI2NTQ2Al81BA1hdmFpbGFibGVGdW5kCQBkAgkBEXVzZXJBdmFpbGFibGVTV09QAgUEcG9vbAUEdXNlcgULY2xhaW1BbW91bnQDCQBmAgkBDmFjY291bnRCYWxhbmNlAQUNc2hhcmVUb2tlbnNJZAUQc2hhcmVUb2tlbkxvY2tlZAkAAgECMEJhbGFuY2Ugb2Ygc2hhcmUtdG9rZW4gaXMgbG93ZXIgdGhhbiB0b3RhbEFtb3VudAQGdVRyYW5zAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUNYXZhaWxhYmxlRnVuZAUEU1dPUAUDbmlsBQNuaWwJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRVrRmFybVVzZXJMYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa0Jvb3N0VXNlckxhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRFrRmFybUxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEmtCb29zdExhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrTGFzdEludGVyZXN0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFDmtBdmFpbGFibGVTV09QAAAJAMwIAgkBB1JlaXNzdWUDBQRTV09QCQBkAgkAZAIFCnRvVHJlYXN1cmUFDWF2YWlsYWJsZUZ1bmQFCnRlYW1SZXdhcmQGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFE2Zhcm1pbmdUcmVhc3VyZUFkZHIFCnRvVHJlYXN1cmUFBFNXT1AJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUOdGVhbUJveEFkZHJlc3MFCnRlYW1SZXdhcmQFBFNXT1AFA25pbAUGdVRyYW5zBQ1hdmFpbGFibGVGdW5kARJ1bmxvY2tVc2VyTG9ja0NhbGMDAWkEcG9vbAR1c2VyBBF0b3RhbFNoYXJlVmlydHVhbAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRNrU2hhcmVUb2tlbnNWaXJ0dWFsBBB1c2VyU3Rha2VkQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQAAAQQdXNlckxvY2tlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zTG9ja2VkAAAEEXVzZXJBbW91bnRWaXJ0dWFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsBRB1c2VyU3Rha2VkQW1vdW50BBN1c2VyU3Rha2VkQW1vdW50TmV3CQBkAgUQdXNlclN0YWtlZEFtb3VudAUQdXNlckxvY2tlZEFtb3VudAQNJHQwMjgwMjAyODExNAkBCWNsYWltQ2FsYwIFBHBvb2wFBHVzZXIEDGZhcm1JbnRlcmVzdAgFDSR0MDI4MDIwMjgxMTQCXzEEDWJvb3N0SW50ZXJlc3QIBQ0kdDAyODAyMDI4MTE0Al8yBAtjbGFpbUFtb3VudAgFDSR0MDI4MDIwMjgxMTQCXzMECnRvVHJlYXN1cmUIBQ0kdDAyODAyMDI4MTE0Al80BAp0ZWFtUmV3YXJkCAUNJHQwMjgwMjAyODExNAJfNQQRYXZhaWxhYmxlRnVuZHNOZXcJAGQCCQERdXNlckF2YWlsYWJsZVNXT1ACBQRwb29sBQR1c2VyBQtjbGFpbUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUVa0Zhcm1Vc2VyTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtCb29zdFVzZXJMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa0xhc3RJbnRlcmVzdEhlaWdodAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zU3Rha2VkBRN1c2VyU3Rha2VkQW1vdW50TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAUTdXNlclN0YWtlZEFtb3VudE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrU2hhcmVUb2tlbnNWaXJ0dWFsCQBkAgkAZQIFEXRvdGFsU2hhcmVWaXJ0dWFsBRF1c2VyQW1vdW50VmlydHVhbAUTdXNlclN0YWtlZEFtb3VudE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUOa0F2YWlsYWJsZVNXT1AFEWF2YWlsYWJsZUZ1bmRzTmV3CQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNMb2NrZWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUca1VzZXJTaGFyZVRva2Vuc0xvY2tlZEhlaWdodAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRprVXNlclNoYXJlVG9rZW5zTG9ja2VkVHlwZQkAzAgCCQEHUmVpc3N1ZQMFBFNXT1AJAGQCBQp0b1RyZWFzdXJlBQp0ZWFtUmV3YXJkBgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRNmYXJtaW5nVHJlYXN1cmVBZGRyBQp0b1RyZWFzdXJlBQRTV09QCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDnRlYW1Cb3hBZGRyZXNzBQp0ZWFtUmV3YXJkBQRTV09QBQNuaWwSAWkBBGluaXQBB2Vhcmx5TFADCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzBQdrU1dPUGlkCQACAQIYU1dPUCBhbHJlYWR5IGluaXRpYWxpemVkBAppbml0QW1vdW50AICA6YOx3hYECVNXT1Bpc3N1ZQkAwggFAgRTV09QAhNTV09QIHByb3RvY29sIHRva2VuBQppbml0QW1vdW50AAgGBAZTV09QaWQJALgIAQUJU1dPUGlzc3VlCQDMCAIJAQxCb29sZWFuRW50cnkCBQdrQWN0aXZlBgkAzAgCCQDCCAUCBFNXT1ACE1NXT1AgcHJvdG9jb2wgdG9rZW4FCmluaXRBbW91bnQACAYJAMwIAgkBC1N0cmluZ0VudHJ5AgUHa1NXT1BpZAkA2AQBBQZTV09QaWQFA25pbAFpARRpbml0UG9vbFNoYXJlRmFybWluZwEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMJAQEhAQkBCWlzRGVmaW5lZAEJAJ0IAgUGb3JhY2xlCQCsAgIFDWtQb29sSW5PcmFjbGUFBHBvb2wJAAIBAhVQb29sIGlzIG5vdCBpbiBvcmFjbGUDCQEJaXNEZWZpbmVkAQkAmggCBQR0aGlzCQCsAgIFBHBvb2wFFmtTaGFyZVRvdGFsU2hhcmVUb2tlbnMJAAIBAhNQb29sIGFscmVhZHkgaW5pdGVkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFFmtTaGFyZVRvdGFsU2hhcmVUb2tlbnMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRFrRmFybUxhc3RJbnRlcmVzdAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEmtCb29zdExhc3RJbnRlcmVzdAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tMYXN0SW50ZXJlc3RIZWlnaHQFBmhlaWdodAUDbmlsAWkBEnVwZGF0ZVBvb2xJbnRlcmVzdAEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAMJAQIhPQIIBQFpBmNhbGxlcgUKZ292QWRkcmVzcwkAAgECJk9ubHkgR292ZXJuYW5jZSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uBAR1c2VyCQClCAEJAKcIAQURYWRtaW5JbnZva2VQdWJLZXkEDSR0MDMwNTY0MzA2MzgJAQljbGFpbUNhbGMCBQRwb29sBQR1c2VyBAxmYXJtSW50ZXJlc3QIBQ0kdDAzMDU2NDMwNjM4Al8xBA1ib29zdEludGVyZXN0CAUNJHQwMzA1NjQzMDYzOAJfMgQPYm9vc3RMUGludGVyZXN0CAUNJHQwMzA1NjQzMDYzOAJfMwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRFrRmFybUxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEmtCb29zdExhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrTGFzdEludGVyZXN0SGVpZ2h0BQZoZWlnaHQFA25pbAFpAQ9sb2NrU2hhcmVUb2tlbnMCBHBvb2wIbG9ja1R5cGUJAQt2YWx1ZU9yRWxzZQIJARBpc0RlcHJlY2F0ZWRQb29sAQUEcG9vbAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBE2NhbGNMb2NrU2hhcmVUb2tlbnMEBQFpCAUBaQZjYWxsZXIFBHBvb2wFCGxvY2tUeXBlAWkBF2xvY2tTaGFyZVRva2Vuc0Zyb21Qb29sAwtjYWxsZXJCeXRlcwRwb29sCGxvY2tUeXBlCQELdmFsdWVPckVsc2UCCQEQaXNEZXByZWNhdGVkUG9vbAEFBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJAQt2YWx1ZU9yRWxzZQIJAQppc1Bvb2xDYWxsAgUBaQUEcG9vbAkBE2NhbGNMb2NrU2hhcmVUb2tlbnMEBQFpCQEHQWRkcmVzcwEFC2NhbGxlckJ5dGVzBQRwb29sBQhsb2NrVHlwZQFpARVsb2NrU3Rha2VkU2hhcmVUb2tlbnMDBHBvb2wIbG9ja1R5cGUKbG9ja0Ftb3VudAkBC3ZhbHVlT3JFbHNlAgkBEGlzRGVwcmVjYXRlZFBvb2wBBQRwb29sCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABAxzaGFyZUFzc2V0SWQJAQ9nZXRTaGFyZUFzc2V0SWQBBQRwb29sBAR1c2VyCQClCAEIBQFpBmNhbGxlcgQKdG90YWxTaGFyZQkBEmdldFRvdGFsU2hhcmVUb2tlbgEFBHBvb2wEEXRvdGFsU2hhcmVWaXJ0dWFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUTa1NoYXJlVG9rZW5zVmlydHVhbAUKdG90YWxTaGFyZQQQdXNlclN0YWtlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zU3Rha2VkAAAED3VzZXJMb2NrZWRIZWlndAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRxrVXNlclNoYXJlVG9rZW5zTG9ja2VkSGVpZ2h0AAAEEHVzZXJMb2NrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc0xvY2tlZAAABBF1c2VyQW1vdW50VmlydHVhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAUQdXNlclN0YWtlZEFtb3VudAQUdG90YWxVc2VyU2hhcmVUb2tlbnMJAGQCBRB1c2VyU3Rha2VkQW1vdW50BRB1c2VyTG9ja2VkQW1vdW50BA0kdDAzMjI2NzMyMzE5CQENZ2V0TG9ja1BhcmFtcwEFCGxvY2tUeXBlBApsb2NrUGVyaW9kCAUNJHQwMzIyNjczMjMxOQJfMQQIbG9ja0NvZWYIBQ0kdDAzMjI2NzMyMzE5Al8yBAxsb2NrV2F2ZXNGZWUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDWtMb2NrV2F2ZXNGZWUDCQBmAgkBFWdldEhlaWdodEZpcnN0SGFydmVzdAEFBHBvb2wFBmhlaWdodAkAAgECMllvdSBjYW4ndCBsb2NrIHNoYXJlVG9rZW5zIHRpbGwgZmlyc3QgaGFydmVzdCBlbmQuAwkAZwIAAAUIbG9ja1R5cGUJAAIBAhRsb2NrVHlwZSBtdXN0IGJlID4gMAMJAGYCBQpsb2NrQW1vdW50BRB1c2VyU3Rha2VkQW1vdW50CQACAQkArAICAhlZb3UgY2FuJ3QgbG9jayBtb3JlIHRoYW4gCQCkAwEFEHVzZXJTdGFrZWRBbW91bnQDCQBmAgkBDmFjY291bnRCYWxhbmNlAQUMc2hhcmVBc3NldElkBQp0b3RhbFNoYXJlCQACAQIwQmFsYW5jZSBvZiBzaGFyZS10b2tlbiBpcyBsb3dlciB0aGFuIHRvdGFsQW1vdW50AwMJAAACBQ91c2VyTG9ja2VkSGVpZ3QAAAMDCQBmAgABCQCQAwEIBQFpCHBheW1lbnRzBgkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQR1bml0BgkAZgIFDGxvY2tXYXZlc0ZlZQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQHCQACAQkArAICCQCsAgICK1lvdSBuZWVkIHRvIHBheSBhZGRpdGlvbmFsIHdhdmVzIGNvbWlzc2lvbiAJAKQDAQUMbG9ja1dhdmVzRmVlAgVXQVZFUwMDCQAAAgUPdXNlckxvY2tlZEhlaWd0AAAJAGcCAAAFCmxvY2tBbW91bnQHCQACAQIhbG9ja0Ftb3VudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwAwkAZgIAAAUKbG9ja0Ftb3VudAkAAgECG2xvY2tBbW91bnQgbXVzdCBiZSBwb3NpdGl2ZQMJAGYCBQ91c2VyTG9ja2VkSGVpZ3QJAGQCBQZoZWlnaHQFCmxvY2tQZXJpb2QJAAIBAk9Zb3UgY2Fubm90IGxvY2sgc2hhcmV0b2tlbnMgZm9yIGEgcGVyaW9kIGxlc3MgdGhhbiB3aGF0IHlvdSBoYXZlIGFscmVhZHkgbG9ja2VkBBN1c2VyTG9ja2VkQW1vdW50TmV3CQBkAgUQdXNlckxvY2tlZEFtb3VudAUKbG9ja0Ftb3VudAQTdXNlclN0YWtlZEFtb3VudE5ldwkAZQIFEHVzZXJTdGFrZWRBbW91bnQFCmxvY2tBbW91bnQEEnVzZXJMb2NrZWRIZWlndE5ldwkAZAIFBmhlaWdodAUKbG9ja1BlcmlvZAQUdXNlckFtb3VudFZpcnR1YWxOZXcJAGQCCQBrAwUTdXNlckxvY2tlZEFtb3VudE5ldwUIbG9ja0NvZWYFEmxvY2tCb29zdENvZWZTY2FsZQUTdXNlclN0YWtlZEFtb3VudE5ldwQNJHQwMzM2NjUzMzc1OQkBCWNsYWltQ2FsYwIFBHBvb2wFBHVzZXIEDGZhcm1JbnRlcmVzdAgFDSR0MDMzNjY1MzM3NTkCXzEEDWJvb3N0SW50ZXJlc3QIBQ0kdDAzMzY2NTMzNzU5Al8yBAtjbGFpbUFtb3VudAgFDSR0MDMzNjY1MzM3NTkCXzMECnRvVHJlYXN1cmUIBQ0kdDAzMzY2NTMzNzU5Al80BAp0ZWFtUmV3YXJkCAUNJHQwMzM2NjUzMzc1OQJfNQQRYXZhaWxhYmxlRnVuZHNOZXcJAGQCCQERdXNlckF2YWlsYWJsZVNXT1ACBQRwb29sBQR1c2VyBQtjbGFpbUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc1N0YWtlZAUTdXNlclN0YWtlZEFtb3VudE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc0xvY2tlZAUTdXNlckxvY2tlZEFtb3VudE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUca1VzZXJTaGFyZVRva2Vuc0xvY2tlZEhlaWdodAUSdXNlckxvY2tlZEhlaWd0TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRprVXNlclNoYXJlVG9rZW5zTG9ja2VkVHlwZQUIbG9ja1R5cGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsBRR1c2VyQW1vdW50VmlydHVhbE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrU2hhcmVUb2tlbnNWaXJ0dWFsCQBkAgkAZQIFEXRvdGFsU2hhcmVWaXJ0dWFsBRF1c2VyQW1vdW50VmlydHVhbAUUdXNlckFtb3VudFZpcnR1YWxOZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFWtGYXJtVXNlckxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrQm9vc3RVc2VyTGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEWtGYXJtTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUSa0Jvb3N0TGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tMYXN0SW50ZXJlc3RIZWlnaHQFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUOa0F2YWlsYWJsZVNXT1AFEWF2YWlsYWJsZUZ1bmRzTmV3CQDMCAIJAQdSZWlzc3VlAwUEU1dPUAkAZAIFCnRvVHJlYXN1cmUFCnRlYW1SZXdhcmQGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFE2Zhcm1pbmdUcmVhc3VyZUFkZHIFCnRvVHJlYXN1cmUFBFNXT1AJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUOdGVhbUJveEFkZHJlc3MFCnRlYW1SZXdhcmQFBFNXT1AFA25pbAFpAQ51bmxvY2tVc2VyTG9jawIEcG9vbAR1c2VyCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABA91c2VyTG9ja2VkSGVpZ3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRxrVXNlclNoYXJlVG9rZW5zTG9ja2VkSGVpZ2h0CQCsAgIJAKwCAgkArAICCQCsAgICEVRoZXJlIGlzIG5vIHBvb2wgBQRwb29sAgkgb3IgdXNlciAFBHVzZXICCXdpdGggbG9jawMJAGYCBQ91c2VyTG9ja2VkSGVpZ3QFBmhlaWdodAkAAgEJAKwCAgIiWW91IGNhbid0IHVubG9jayBzaGFyZXRva2VucyB0aWxsIAkApAMBBQ91c2VyTG9ja2VkSGVpZ3QJAM4IAgkBEnVubG9ja1VzZXJMb2NrQ2FsYwMFAWkFBHBvb2wFBHVzZXIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ1rTG9ja1dhdmVzRmVlBQR1bml0BQNuaWwBaQEYdW5sb2NrVXNlckxvY2tEZXByZWNhdGVkAgRwb29sBHVzZXIJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJAQt2YWx1ZU9yRWxzZQIJAQppc1NlbGZDYWxsAQUBaQMJAQEhAQkBEWdldERlcHJlY2F0ZWRQb29sAQUEcG9vbAkAAgECF1Bvb2wgbXVzdCBiZSBkZXByZWNhdGVkAwkBCWlzRGVmaW5lZAEJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUca1VzZXJTaGFyZVRva2Vuc0xvY2tlZEhlaWdodAkAzggCCQESdW5sb2NrVXNlckxvY2tDYWxjAwUBaQUEcG9vbAUEdXNlcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ9tb25leUJveEFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDWtMb2NrV2F2ZXNGZWUFBHVuaXQFA25pbAUDbmlsAWkBE3dpdGhkcmF3U2hhcmVUb2tlbnMCBHBvb2wZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBF2NhbGNXaXRoZHJhd1NoYXJlVG9rZW5zBAUBaQgFAWkGY2FsbGVyBQRwb29sBRlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50AWkBG3dpdGhkcmF3U2hhcmVUb2tlbnNGcm9tUG9vbAMLY2FsbGVyQnl0ZXMEcG9vbBlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50CQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQEKaXNQb29sQ2FsbAIFAWkFBHBvb2wJARdjYWxjV2l0aGRyYXdTaGFyZVRva2VucwQFAWkJAQdBZGRyZXNzAQULY2FsbGVyQnl0ZXMFBHBvb2wFGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQBaQEFY2xhaW0BBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEAXIJAQljYWxjQ2xhaW0DBQFpBQRwb29sCAUBaQZjYWxsZXIDCQAAAggFAXICXzIAAAkAAgECGVlvdSBoYXZlIDAgYXZhaWxhYmxlIFNXT1AFAXIBaQENY2xhaW1JbnRlcm5hbAIEcG9vbAZjYWxsZXIJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJAQt2YWx1ZU9yRWxzZQIJAQppc1NlbGZDYWxsAQUBaQkBCWNhbGNDbGFpbQMFAWkFBHBvb2wJAQdBZGRyZXNzAQUGY2FsbGVyAWkBDWNsYWltQW5kU3Rha2UBBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEC2NsYWltQW1vdW50CgABQAkA/AcEBQR0aGlzAg1jbGFpbUludGVybmFsCQDMCAIFBHBvb2wJAMwIAggIBQFpBmNhbGxlcgVieXRlcwUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AwkAAAIFC2NsYWltQW1vdW50BQtjbGFpbUFtb3VudAMJAAACBQtjbGFpbUFtb3VudAAACQACAQIZWW91IGhhdmUgMCBhdmFpbGFibGUgU1dPUAQKc3Rha2VUb0dvdgkA/AcEBQpnb3ZBZGRyZXNzAhNsb2NrU1dPUEZyb21GYXJtaW5nBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBFNXT1AFC2NsYWltQW1vdW50BQNuaWwDCQAAAgUKc3Rha2VUb0dvdgUKc3Rha2VUb0dvdgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCGNsYWltQWxsAQVwb29scwkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAoBCGNsYWltSW52AgpjbGFpbVRvdGFsBHBvb2wEC2NsYWltQW1vdW50CgABQAkA/AcEBQR0aGlzAg1jbGFpbUludGVybmFsCQDMCAIFBHBvb2wJAMwIAggIBQFpBmNhbGxlcgVieXRlcwUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AwkAAAIFC2NsYWltQW1vdW50BQtjbGFpbUFtb3VudAkAZAIFCmNsYWltVG90YWwFC2NsYWltQW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBApjbGFpbVRvdGFsCgACJGwFBXBvb2xzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhjbGFpbUludgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwDCQAAAgUKY2xhaW1Ub3RhbAAACQACAQIZWW91IGhhdmUgMCBhdmFpbGFibGUgU1dPUAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCmNsYWltVG90YWwFBFNXT1AFA25pbAFpARBjbGFpbUFsbEFuZFN0YWtlAQVwb29scwkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAoBCGNsYWltSW52AgpjbGFpbVRvdGFsBHBvb2wEC2NsYWltQW1vdW50CgABQAkA/AcEBQR0aGlzAg1jbGFpbUludGVybmFsCQDMCAIFBHBvb2wJAMwIAggIBQFpBmNhbGxlcgVieXRlcwUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AwkAAAIFC2NsYWltQW1vdW50BQtjbGFpbUFtb3VudAkAZAIFCmNsYWltVG90YWwFC2NsYWltQW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBApjbGFpbVRvdGFsCgACJGwFBXBvb2xzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhjbGFpbUludgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwDCQAAAgUKY2xhaW1Ub3RhbAAACQACAQIZWW91IGhhdmUgMCBhdmFpbGFibGUgU1dPUAQKc3Rha2VUb0dvdgkA/AcEBQpnb3ZBZGRyZXNzAhNsb2NrU1dPUEZyb21GYXJtaW5nBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBFNXT1AFCmNsYWltVG90YWwFA25pbAMJAAACBQpzdGFrZVRvR292BQpzdGFrZVRvR292BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEXdXBkYXRlVXNlckJvb3N0SW50ZXJlc3QCBHBvb2wEdXNlcgkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAMJAQIhPQIIBQFpBmNhbGxlcgUNdm90aW5nQWRkcmVzcwkAAgECI09ubHkgdm9pdGluZyBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uBA0kdDAzODU4MzM4Njc3CQEJY2xhaW1DYWxjAgUEcG9vbAUEdXNlcgQMZmFybUludGVyZXN0CAUNJHQwMzg1ODMzODY3NwJfMQQNYm9vc3RJbnRlcmVzdAgFDSR0MDM4NTgzMzg2NzcCXzIEC2NsYWltQW1vdW50CAUNJHQwMzg1ODMzODY3NwJfMwQKdG9UcmVhc3VyZQgFDSR0MDM4NTgzMzg2NzcCXzQECnRlYW1SZXdhcmQIBQ0kdDAzODU4MzM4Njc3Al81BBFhdmFpbGFibGVGdW5kc05ldwkAZAIJARF1c2VyQXZhaWxhYmxlU1dPUAIFBHBvb2wFBHVzZXIFC2NsYWltQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRVrRmFybVVzZXJMYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa0Jvb3N0VXNlckxhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRFrRmFybUxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEmtCb29zdExhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrTGFzdEludGVyZXN0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFDmtBdmFpbGFibGVTV09QBRFhdmFpbGFibGVGdW5kc05ldwkAzAgCCQEHUmVpc3N1ZQMFBFNXT1AJAGQCBQp0b1RyZWFzdXJlBQp0ZWFtUmV3YXJkBgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRNmYXJtaW5nVHJlYXN1cmVBZGRyBQp0b1RyZWFzdXJlBQRTV09QCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDnRlYW1Cb3hBZGRyZXNzBQp0ZWFtUmV3YXJkBQRTV09QBQNuaWwBaQEIc2h1dGRvd24ACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBASEBBQZhY3RpdmUJAAIBCQCsAgICIkRBcHAgaXMgYWxyZWFkeSBzdXNwZW5kZWQuIENhdXNlOiAJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUGa0NhdXNlAhp0aGUgY2F1c2Ugd2Fzbid0IHNwZWNpZmllZAkBB3N1c3BlbmQBAg9QYXVzZWQgYnkgYWRtaW4BaQEIYWN0aXZhdGUACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwUGYWN0aXZlCQACAQIWREFwcCBpcyBhbHJlYWR5IGFjdGl2ZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgUHa0FjdGl2ZQYJAMwIAgkBC0RlbGV0ZUVudHJ5AQUGa0NhdXNlBQNuaWwBAnR4AQZ2ZXJpZnkABAckbWF0Y2gwBQJ0eAQSYWRtaW5QdWJLZXkxU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkxAAEAAAQSYWRtaW5QdWJLZXkyU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAQUMYWRtaW5QdWJLZXkyAAEAAAQSYWRtaW5QdWJLZXkzU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgUMYWRtaW5QdWJLZXkzAAEAAAkAZwIJAGQCCQBkAgUSYWRtaW5QdWJLZXkxU2lnbmVkBRJhZG1pblB1YktleTJTaWduZWQFEmFkbWluUHViS2V5M1NpZ25lZAACM8v/iA==", "height": 2724706, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CJiJrXDdFYXgKdqoRYvnyCtSfbmXB6dBxURCHn1RUuFF Next: 8PS12FAgSzqEoPjVTP23ZTFrNWFJYyjcucKBHCEzWNrF Diff:
OldNewDifferences
476476 let dg = if ((aF.payments[0].assetId == ax))
477477 then invoke(aw, "lpAction", nil, nil)
478478 else nil
479- let dh = aY(aS)
480- let aX = toString(df)
481- let di = aU(aS)
482- let ca = valueOrElse(getInteger(this, (aS + o)), di)
483- let dj = valueOrElse(getInteger(this, (((aS + "_") + aX) + i)), 0)
484- let dk = valueOrElse(getInteger(this, (((aS + "_") + aX) + l)), 0)
485- let dl = valueOrElse(getInteger(this, (((aS + "_") + aX) + j)), 0)
486- let dm = valueOrElse(getInteger(this, (((aS + "_") + aX) + m)), dj)
487- let dn = ((dj + dl) + aF.payments[0].amount)
488- let do = cT(cO)
489- let dp = do._1
490- let dq = do._2
491- let dr = getIntegerValue(this, q)
492- if ((aF.payments[0].assetId != dh))
493- then throw("Wrong sharetoken in payment")
494- else if ((0 >= aF.payments[0].amount))
495- then throw("Payment amount must be greater than 0")
496- else if ((0 > cO))
497- then throw("lockType must be >= 0")
498- else {
499- let ds = cL(aS, aX, dj, aF.payments[0].amount, cO)
500- if ((ds == ds))
501- then {
502- let dt = if ((cO == 0))
479+ if ((dg == dg))
480+ then {
481+ let dh = aY(aS)
482+ let aX = toString(df)
483+ let di = aU(aS)
484+ let ca = valueOrElse(getInteger(this, (aS + o)), di)
485+ let dj = valueOrElse(getInteger(this, (((aS + "_") + aX) + i)), 0)
486+ let dk = valueOrElse(getInteger(this, (((aS + "_") + aX) + l)), 0)
487+ let dl = valueOrElse(getInteger(this, (((aS + "_") + aX) + j)), 0)
488+ let dm = valueOrElse(getInteger(this, (((aS + "_") + aX) + m)), dj)
489+ let dn = ((dj + dl) + aF.payments[0].amount)
490+ let do = cT(cO)
491+ let dp = do._1
492+ let dq = do._2
493+ let dr = getIntegerValue(this, q)
494+ if ((aF.payments[0].assetId != dh))
495+ then throw("Wrong sharetoken in payment")
496+ else if ((0 >= aF.payments[0].amount))
497+ then throw("Payment amount must be greater than 0")
498+ else if ((0 > cO))
499+ then throw("lockType must be >= 0")
500+ else {
501+ let ds = cL(aS, aX, dj, aF.payments[0].amount, cO)
502+ if ((ds == ds))
503503 then {
504- let du = ((dm + aF.payments[0].amount) - ds)
505- $Tuple2([IntegerEntry((((aS + "_") + aX) + i), ((dj + aF.payments[0].amount) - ds)), IntegerEntry((((aS + "_") + aX) + m), du), IntegerEntry((aS + o), ((ca + aF.payments[0].amount) - ds)), ScriptTransfer(df, ds, aF.payments[0].assetId)], ((di + aF.payments[0].amount) - ds))
504+ let dt = if ((cO == 0))
505+ then {
506+ let du = ((dm + aF.payments[0].amount) - ds)
507+ $Tuple2([IntegerEntry((((aS + "_") + aX) + i), ((dj + aF.payments[0].amount) - ds)), IntegerEntry((((aS + "_") + aX) + m), du), IntegerEntry((aS + o), ((ca + aF.payments[0].amount) - ds)), ScriptTransfer(df, ds, aF.payments[0].assetId)], ((di + aF.payments[0].amount) - ds))
508+ }
509+ else if (if ((dk == 0))
510+ then if (if ((2 > size(aF.payments)))
511+ then true
512+ else (aF.payments[1].assetId != unit))
513+ then true
514+ else (dr > aF.payments[1].amount)
515+ else false)
516+ then throw((("You need to pay additional waves comission " + toString(dr)) + "WAVES"))
517+ else if ((dk > (height + dp)))
518+ then throw("You cannot lock sharetokens for a period less than what you have already locked")
519+ else {
520+ let dv = (dl + aF.payments[0].amount)
521+ let dw = (height + dp)
522+ let du = (fraction(dv, dq, aa) + dj)
523+ $Tuple2([IntegerEntry((((aS + "_") + aX) + j), dv), IntegerEntry((((aS + "_") + aX) + l), dw), IntegerEntry((((aS + "_") + aX) + k), cO), IntegerEntry((((aS + "_") + aX) + m), du), IntegerEntry((aS + o), ((ca - dm) + du))], (di + aF.payments[0].amount))
524+ }
525+ let dx = dt._1
526+ let dy = dt._2
527+ if ((dy > aZ(dh)))
528+ then throw("Balance of share-token is lower than totalAmount")
529+ else {
530+ let dz = bX(aS, aX)
531+ let by = dz._1
532+ let bz = dz._2
533+ let cI = dz._3
534+ let dA = dz._4
535+ let cm = dz._5
536+ let dB = (bj(aS, aX) + cI)
537+ let dC = if ((getString(Address(fromBase58String(aS)), "version") == "3.0.0"))
538+ then invoke(at, "updateUserInterest", [aX, aS, dn], nil)
539+ else 0
540+ if ((dC == dC))
541+ then ([IntegerEntry((((aS + "_") + aX) + t), by), IntegerEntry((((aS + "_") + aX) + v), bz), IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height), IntegerEntry((aS + n), dy), IntegerEntry((((aS + "_") + aX) + y), dB), Reissue(aA, (dA + cm), true), ScriptTransfer(au, dA, aA), ScriptTransfer(ap, cm, aA)] ++ dx)
542+ else throw("Strict value is not equal to itself.")
543+ }
506544 }
507- else if (if ((dk == 0))
508- then if (if ((2 > size(aF.payments)))
509- then true
510- else (aF.payments[1].assetId != unit))
511- then true
512- else (dr > aF.payments[1].amount)
513- else false)
514- then throw((("You need to pay additional waves comission " + toString(dr)) + "WAVES"))
515- else if ((dk > (height + dp)))
516- then throw("You cannot lock sharetokens for a period less than what you have already locked")
517- else {
518- let dv = (dl + aF.payments[0].amount)
519- let dw = (height + dp)
520- let du = (fraction(dv, dq, aa) + dj)
521- $Tuple2([IntegerEntry((((aS + "_") + aX) + j), dv), IntegerEntry((((aS + "_") + aX) + l), dw), IntegerEntry((((aS + "_") + aX) + k), cO), IntegerEntry((((aS + "_") + aX) + m), du), IntegerEntry((aS + o), ((ca - dm) + du))], (di + aF.payments[0].amount))
522- }
523- let dx = dt._1
524- let dy = dt._2
525- if ((dy > aZ(dh)))
526- then throw("Balance of share-token is lower than totalAmount")
527- else {
528- let dz = bX(aS, aX)
529- let by = dz._1
530- let bz = dz._2
531- let cI = dz._3
532- let dA = dz._4
533- let cm = dz._5
534- let dB = (bj(aS, aX) + cI)
535- let dC = if ((getString(Address(fromBase58String(aS)), "version") == "3.0.0"))
536- then invoke(at, "updateUserInterest", [aX, aS, dn], nil)
537- else 0
538- if ((dC == dC))
539- then ([IntegerEntry((((aS + "_") + aX) + t), by), IntegerEntry((((aS + "_") + aX) + v), bz), IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height), IntegerEntry((aS + n), dy), IntegerEntry((((aS + "_") + aX) + y), dB), Reissue(aA, (dA + cm), true), ScriptTransfer(au, dA, aA), ScriptTransfer(ap, cm, aA)] ++ dx)
540- else throw("Strict value is not equal to itself.")
541- }
545+ else throw("Strict value is not equal to itself.")
542546 }
543- else throw("Strict value is not equal to itself.")
544- }
547+ }
548+ else throw("Strict value is not equal to itself.")
545549 }
546550
547551
555559 let dG = if ((dF == ax))
556560 then invoke(aw, "lpAction", nil, nil)
557561 else nil
558- let aX = toString(df)
559- let dH = bX(aS, aX)
560- let by = dH._1
561- let bz = dH._2
562- let cI = dH._3
563- let dA = dH._4
564- let cm = dH._5
565- let dj = valueOrElse(getInteger(this, (((aS + "_") + aX) + i)), 0)
566- let dl = valueOrElse(getInteger(this, (((aS + "_") + aX) + j)), 0)
567- let dm = valueOrElse(getInteger(this, (((aS + "_") + aX) + m)), dj)
568- let dI = (dj - dE)
569- let dB = (bj(aS, aX) + cI)
570- let dJ = aU(aS)
571- let ca = valueOrElse(getInteger(this, (aS + o)), dJ)
572- let dK = (dJ - dE)
573- let dL = (ca - dE)
574- let du = (dm - dE)
575- if ((dE > dj))
576- then throw("Withdraw amount more then user locked amount")
577- else if ((aZ(dF) > dJ))
578- then throw("Balance of share-token is lower than totalAmount")
579- else {
580- let dC = if ((getString(Address(fromBase58String(aS)), "version") == "3.0.0"))
581- then invoke(at, "updateUserInterest", [aX, aS, (dj + dl)], nil)
582- else 0
583- if ((dC == dC))
584- then [IntegerEntry((((aS + "_") + aX) + t), by), IntegerEntry((((aS + "_") + aX) + v), bz), IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height), IntegerEntry((((aS + "_") + aX) + i), dI), IntegerEntry((((aS + "_") + aX) + m), du), IntegerEntry((aS + n), dK), IntegerEntry((aS + o), dL), IntegerEntry((((aS + "_") + aX) + y), dB), Reissue(aA, dA, true), ScriptTransfer(au, dA, aA), ScriptTransfer(ap, cm, aA), ScriptTransfer(aF.caller, dE, dF)]
585- else throw("Strict value is not equal to itself.")
586- }
562+ if ((dG == dG))
563+ then {
564+ let aX = toString(df)
565+ let dH = bX(aS, aX)
566+ let by = dH._1
567+ let bz = dH._2
568+ let cI = dH._3
569+ let dA = dH._4
570+ let cm = dH._5
571+ let dj = valueOrElse(getInteger(this, (((aS + "_") + aX) + i)), 0)
572+ let dl = valueOrElse(getInteger(this, (((aS + "_") + aX) + j)), 0)
573+ let dm = valueOrElse(getInteger(this, (((aS + "_") + aX) + m)), dj)
574+ let dI = (dj - dE)
575+ let dB = (bj(aS, aX) + cI)
576+ let dJ = aU(aS)
577+ let ca = valueOrElse(getInteger(this, (aS + o)), dJ)
578+ let dK = (dJ - dE)
579+ let dL = (ca - dE)
580+ let du = (dm - dE)
581+ if ((dE > dj))
582+ then throw("Withdraw amount more then user locked amount")
583+ else if ((aZ(dF) > dJ))
584+ then throw("Balance of share-token is lower than totalAmount")
585+ else {
586+ let dC = if ((getString(Address(fromBase58String(aS)), "version") == "3.0.0"))
587+ then invoke(at, "updateUserInterest", [aX, aS, (dj + dl)], nil)
588+ else 0
589+ if ((dC == dC))
590+ then [IntegerEntry((((aS + "_") + aX) + t), by), IntegerEntry((((aS + "_") + aX) + v), bz), IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height), IntegerEntry((((aS + "_") + aX) + i), dI), IntegerEntry((((aS + "_") + aX) + m), du), IntegerEntry((aS + n), dK), IntegerEntry((aS + o), dL), IntegerEntry((((aS + "_") + aX) + y), dB), Reissue(aA, dA, true), ScriptTransfer(au, dA, aA), ScriptTransfer(ap, cm, aA), ScriptTransfer(aF.caller, dE, dF)]
591+ else throw("Strict value is not equal to itself.")
592+ }
593+ }
594+ else throw("Strict value is not equal to itself.")
587595 }
588596 else throw("Strict value is not equal to itself.")
589597 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "active"
55
66 let b = "active_all_contracts"
77
88 let c = "deprecated_"
99
1010 let d = "shutdown_cause"
1111
1212 let e = "_current_pool_fraction_reward"
1313
1414 let f = "_previous_pool_fraction_reward"
1515
1616 let g = "_pool_reward_update_height"
1717
1818 let h = "reward_update_height"
1919
2020 let i = "_share_tokens_locked"
2121
2222 let j = "_share_tokens_blocked"
2323
2424 let k = "_share_tokens_blocked_type"
2525
2626 let l = "_share_tokens_blocked_height"
2727
2828 let m = "_share_tokens_virtual"
2929
3030 let n = "_total_share_tokens_locked"
3131
3232 let o = "_total_share_tokens_virtual"
3333
3434 let p = "_lock_params"
3535
3636 let q = "lock_waves_fee"
3737
3838 let r = "_boost_coef"
3939
4040 let s = "_last_interest"
4141
4242 let t = "_last_interest"
4343
4444 let u = "_last_interest_b"
4545
4646 let v = "_last_interest_u_b"
4747
4848 let w = "_last_interest_height"
4949
5050 let x = "SWOP_id"
5151
5252 let y = "_available_SWOP"
5353
5454 let z = "_harvest_pool_vote_gSWOP"
5555
5656 let A = "_pool_vote_gSWOP"
5757
5858 let B = "_user_vote_gSWOP"
5959
6060 let C = "_pool_struc"
6161
6262 let D = "_user_pool_struc"
6363
6464 let E = "_harvest_user_pool_vote_gSWOP"
6565
6666 let F = "first_harvest_height"
6767
6868 let G = "share_limit_on_first_harvest"
6969
7070 let H = "_strat_b_farm_interest"
7171
7272 let I = "pool_"
7373
7474 let J = "cpmm_contract"
7575
7676 let K = "admin_pub_1"
7777
7878 let L = "admin_pub_2"
7979
8080 let M = "admin_pub_3"
8181
8282 let N = "admin_invoke_pub"
8383
8484 let O = "money_box_address"
8585
8686 let P = "team_box_address"
8787
8888 let Q = "voting_address"
8989
9090 let R = "governance_address"
9191
9292 let S = "lp_farming"
9393
9494 let T = "farming_treasure"
9595
9696 let U = "axly_farming"
9797
9898 let V = "axly_lp_id"
9999
100100 let W = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
101101
102102 let X = 10000000000
103103
104104 let Y = 100000000
105105
106106 let Z = 1000000
107107
108108 let aa = 1000
109109
110110 let ab = 500
111111
112112 let ac = 2976848
113113
114114 let ad = 100000000000000
115115
116116 let ae = 526330
117117
118118 let af = 25
119119
120120 func ag (ah) = {
121121 let ai = getString(W, ah)
122122 if ($isInstanceOf(ai, "String"))
123123 then {
124124 let aj = ai
125125 fromBase58String(aj)
126126 }
127127 else {
128128 let ak = ai
129129 throw((ah + "is empty"))
130130 }
131131 }
132132
133133
134134 let al = ag(K)
135135
136136 let am = ag(L)
137137
138138 let an = ag(M)
139139
140140 let ao = Address(ag(O))
141141
142142 let ap = Address(ag(P))
143143
144144 let aq = Address(ag(Q))
145145
146146 let ar = Address(ag(R))
147147
148148 let as = ag(N)
149149
150150 let at = Address(ag(S))
151151
152152 let au = Address(ag(T))
153153
154154 let av = Address(ag(J))
155155
156156 let aw = Address(ag(U))
157157
158158 let ax = ag(V)
159159
160160 let ay = getBooleanValue(this, a)
161161
162162 let az = valueOrElse(getBoolean(W, b), true)
163163
164164 let aA = fromBase58String(getStringValue(this, x))
165165
166166 func aB () = {
167167 let aC = ((height - ac) / ae)
168168 func aD (aE,aF) = {
169169 let aG = aE
170170 let aH = aG._1
171171 let aI = aG._2
172172 if ((aC > aF))
173173 then $Tuple2(fraction(aH, 75, 100), aH)
174174 else $Tuple2(aH, aI)
175175 }
176176
177177 let aJ = {
178178 let aK = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
179179 let aL = size(aK)
180180 let aM = $Tuple2(ad, ad)
181181 func aN (aO,aP) = if ((aP >= aL))
182182 then aO
183183 else aD(aO, aK[aP])
184184
185185 func aQ (aO,aP) = if ((aP >= aL))
186186 then aO
187187 else throw("List size exceeds 20")
188188
189189 aQ(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aM, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
190190 }
191191 let aH = aJ._1
192192 let aI = aJ._2
193193 $Tuple3((aH / ae), (aI / ae), (ac + (ae * aC)))
194194 }
195195
196196
197197 func aR (aS) = valueOrElse(getInteger(Address(fromBase58String(aS)), F), 0)
198198
199199
200200 func aT (aS) = valueOrErrorMessage(getInteger(aS, G), ("No data on the key: " + G))
201201
202202
203203 func aU (aS) = valueOrErrorMessage(getInteger(this, (aS + n)), (("No data on the key: " + aS) + n))
204204
205205
206206 func aV (aS) = valueOrElse(getInteger(aq, (aS + A)), valueOrElse(parseInt(split(valueOrElse(getString(aq, (aS + C)), ""), "_")[0]), 0))
207207
208208
209209 func aW (aS,aX) = valueOrElse(getInteger(aq, (((aX + "_") + aS) + B)), valueOrElse(parseInt(split(valueOrElse(getString(aq, (((aX + "_") + aS) + D)), ""), "_")[0]), 0))
210210
211211
212212 func aY (aS) = fromBase58String(getStringValue(value(addressFromString(aS)), "share_asset_id"))
213213
214214
215215 func aZ (ba) = {
216216 let ai = ba
217217 if ($isInstanceOf(ai, "ByteVector"))
218218 then {
219219 let bb = ai
220220 assetBalance(this, bb)
221221 }
222222 else if ($isInstanceOf(ai, "Unit"))
223223 then {
224224 let bc = ai
225225 wavesBalance(this).available
226226 }
227227 else throw("Match error")
228228 }
229229
230230
231231 func bd (be,bf) = {
232232 let bg = value(assetInfo(be)).decimals
233233 let bh = value(assetInfo(bf)).decimals
234234 let bi = ((bh - bg) + 8)
235235 pow(10, 0, bi, 0, 0, DOWN)
236236 }
237237
238238
239239 func bj (aS,aX) = valueOrElse(getInteger(this, (((aS + "_") + aX) + y)), 0)
240240
241241
242242 func bk (aS) = {
243243 let bl = aB()
244244 let bm = bl._1
245245 let bn = bl._2
246246 let bo = bl._3
247247 let bp = valueOrErrorMessage(getInteger(ar, (aS + e)), (((("No data on the key: " + aS) + e) + " at address ") + toString(ar)))
248248 let bq = valueOrErrorMessage(getInteger(ar, h), ((("No data on the key: " + h) + " at address ") + toString(ar)))
249249 let br = valueOrElse(getInteger(ar, (aS + g)), bq)
250250 let bs = valueOrErrorMessage(getInteger(ar, (aS + f)), (((("No data on the key: " + aS) + f) + " at address ") + toString(ar)))
251251 let bt = fraction(bm, bp, X)
252252 let bu = fraction(bm, bs, X)
253253 let bv = fraction(bn, bp, X)
254254 let bw = fraction(bn, bs, X)
255255 if (if ((bt > bm))
256256 then true
257257 else (bu > bn))
258258 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
259259 else $Tuple7(bt, bq, bu, br, bo, bv, bw)
260260 }
261261
262262
263263 func bx (aS) = {
264264 let by = valueOrErrorMessage(getInteger(this, (aS + s)), (("No data on the key: " + aS) + s))
265265 let bz = valueOrElse(getInteger(this, (aS + u)), 0)
266266 let bA = valueOrElse(getInteger(this, (aS + w)), height)
267267 $Tuple3(bA, by, bz)
268268 }
269269
270270
271271 func bB (aS,bC) = {
272272 let bD = valueOrElse(getInteger(this, (aS + r)), ab)
273273 fraction(bC, aa, (bD + aa))
274274 }
275275
276276
277277 func bE (aS,bC) = {
278278 let bD = valueOrElse(getInteger(this, (aS + r)), ab)
279279 fraction(bC, bD, (bD + aa))
280280 }
281281
282282
283283 func bF (aS,bA,bq,br,by,bz,bG,bH,bI,bJ,bK,bL) = {
284284 let bM = if (if (if ((bq > bL))
285285 then (bq == br)
286286 else false)
287287 then true
288288 else if ((bL > bq))
289289 then (bq != br)
290290 else false)
291291 then {
292292 let bN = (bJ * (bL - bA))
293293 $Tuple3(bN, by, bz)
294294 }
295295 else if (if (if ((bL > bq))
296296 then (bq == br)
297297 else false)
298298 then (bA > bq)
299299 else false)
300300 then {
301301 let bN = (bH * (bL - bA))
302302 $Tuple3(bN, by, bz)
303303 }
304304 else {
305305 let bO = (bJ * (bq - bA))
306306 let bP = (by + fraction(bB(aS, bO), bK, bI))
307307 let bQ = (bz + (if ((bG > 0))
308308 then fraction(bE(aS, bO), Y, bG)
309309 else 0))
310310 let bR = (bH * (bL - bq))
311311 $Tuple3(bR, bP, bQ)
312312 }
313313 let bS = bM._1
314314 let bT = bM._2
315315 let bU = bM._3
316316 let bV = (bT + fraction(bB(aS, bS), bK, bI))
317317 let bW = (bU + (if ((bG > 0))
318318 then fraction(bE(aS, bS), Y, bG)
319319 else 0))
320320 $Tuple2(bV, bW)
321321 }
322322
323323
324324 func bX (aS,aX) = {
325325 let bK = bd(aA, aY(aS))
326326 let bG = aV(aS)
327327 let bY = aW(aS, aX)
328328 let bZ = aU(aS)
329329 let ca = valueOrElse(getInteger(this, (aS + o)), bZ)
330330 let cb = valueOrElse(getInteger(this, (aS + H)), 0)
331331 let cc = bx(aS)
332332 let bA = cc._1
333333 let by = cc._2
334334 let bz = cc._3
335335 let cd = bk(aS)
336336 let bH = cd._1
337337 let bq = cd._2
338338 let bJ = cd._3
339339 let br = cd._4
340340 let ce = cd._5
341341 let cf = cd._6
342342 let cg = cd._7
343343 let ch = valueOrElse(getInteger(this, (((aS + "_") + aX) + t)), by)
344344 let ci = valueOrElse(getInteger(this, (((aS + "_") + aX) + v)), if (if ((cb > ch))
345345 then (bY > 0)
346346 else false)
347347 then 0
348348 else bz)
349349 let cj = valueOrElse(getInteger(this, (((aS + "_") + aX) + i)), 0)
350350 let ck = valueOrElse(getInteger(this, (((aS + "_") + aX) + m)), cj)
351351 if ((ca == 0))
352352 then {
353353 let cl = if ((ce > bA))
354354 then ((cf * (ce - bA)) + (bH * (height - ce)))
355355 else (bH * (height - bA))
356356 let cm = fraction(cl, af, 100)
357357 $Tuple5(by, bz, 0, (cl - cm), cm)
358358 }
359359 else {
360360 let cn = if ((ce > bA))
361361 then {
362362 let co = bF(aS, bA, bq, br, by, bz, bG, cf, ca, cg, bK, ce)
363363 let cp = co._1
364364 let cq = co._2
365365 $Tuple3(cp, cq, ce)
366366 }
367367 else $Tuple3(by, bz, bA)
368368 let cr = cn._1
369369 let cs = cn._2
370370 let ct = cn._3
371371 let cu = bF(aS, ct, bq, br, cr, cs, bG, bH, ca, bJ, bK, height)
372372 let bV = cu._1
373373 let bW = cu._2
374374 let cv = fraction(ck, (bV - ch), bK)
375375 let bD = valueOrElse(getInteger(this, (aS + r)), ab)
376376 let cw = fraction(fraction(ck, (bV - max([ch, cb])), bK), bD, aa)
377377 let cx = fraction((bW - ci), bY, Y)
378378 let cy = min([cw, cx])
379379 let cl = (cw - cy)
380380 let cm = fraction(cl, af, 100)
381381 if ((0 > cl))
382382 then throw("toTreasury < 0")
383383 else $Tuple5(bV, bW, (cv + cy), (cl - cm), cm)
384384 }
385385 }
386386
387387
388388 func cz (cA,aX) = {
389389 func cB (aE,aS) = {
390390 let cC = aE
391391 let cD = cC._1
392392 let cE = cC._2
393393 let cF = bX(aS, aX)
394394 let cG = cF._1
395395 let cH = cF._2
396396 let cI = cF._3
397397 let cJ = cF._4
398398 let cK = (bj(aS, aX) + cI)
399399 $Tuple2((cD :+ aS), (cE :+ cK))
400400 }
401401
402402 let aK = cA
403403 let aL = size(aK)
404404 let aM = $Tuple2(nil, nil)
405405 func aN (aO,aP) = if ((aP >= aL))
406406 then aO
407407 else cB(aO, aK[aP])
408408
409409 func aQ (aO,aP) = if ((aP >= aL))
410410 then aO
411411 else throw("List size exceeds 60")
412412
413413 aQ(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aM, 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)
414414 }
415415
416416
417417 func cL (aS,aX,cM,cN,cO) = if ((aR(aS) > height))
418418 then {
419419 let cP = valueOrElse(getInteger(aq, (aS + z)), 0)
420420 let cQ = valueOrElse(getInteger(aq, (((aX + "_") + aS) + E)), 0)
421421 let cR = aT(addressFromStringValue(aS))
422422 let cS = (fraction(cR, cQ, cP) - cM)
423423 if ((cO > 0))
424424 then throw("You can't lock shareTokens till first harvest end.")
425425 else if ((cQ == 0))
426426 then throw("You can't lock shareTokens. You didn't vote for pool in first week.")
427427 else if ((cN >= cS))
428428 then (cN - cS)
429429 else 0
430430 }
431431 else 0
432432
433433
434434 func cT (cU) = {
435435 let cV = split(valueOrErrorMessage(getString(this, (toString(cU) + p)), ("There are no key for lock type" + toString(cU))), "_")
436436 $Tuple2(parseIntValue(cV[0]), parseIntValue(cV[1]))
437437 }
438438
439439
440440 func cW (cX) = [BooleanEntry(a, false), StringEntry(d, cX)]
441441
442442
443443 func cY () = if (if (ay)
444444 then az
445445 else false)
446446 then unit
447447 else throw("DApp is inactive at this moment")
448448
449449
450450 func cZ (aF) = if (containsElement([al, am, an], aF.callerPublicKey))
451451 then unit
452452 else throw("Only admin can call this function")
453453
454454
455455 func da (aF,aS) = if (if ((toString(aF.caller) == aS))
456456 then true
457457 else (aF.caller == av))
458458 then unit
459459 else throw("Only pool can call this function")
460460
461461
462462 func db (aS) = valueOrElse(getBoolean(W, (c + aS)), false)
463463
464464
465465 func dc (aS) = if (!(db(aS)))
466466 then unit
467467 else throw("Pool is deprecated. Only unlock action allowed.")
468468
469469
470470 func dd (aF) = if ((aF.caller == this))
471471 then unit
472472 else throw("Only contract itself can call this function")
473473
474474
475475 func de (aF,df,aS,cO) = {
476476 let dg = if ((aF.payments[0].assetId == ax))
477477 then invoke(aw, "lpAction", nil, nil)
478478 else nil
479- let dh = aY(aS)
480- let aX = toString(df)
481- let di = aU(aS)
482- let ca = valueOrElse(getInteger(this, (aS + o)), di)
483- let dj = valueOrElse(getInteger(this, (((aS + "_") + aX) + i)), 0)
484- let dk = valueOrElse(getInteger(this, (((aS + "_") + aX) + l)), 0)
485- let dl = valueOrElse(getInteger(this, (((aS + "_") + aX) + j)), 0)
486- let dm = valueOrElse(getInteger(this, (((aS + "_") + aX) + m)), dj)
487- let dn = ((dj + dl) + aF.payments[0].amount)
488- let do = cT(cO)
489- let dp = do._1
490- let dq = do._2
491- let dr = getIntegerValue(this, q)
492- if ((aF.payments[0].assetId != dh))
493- then throw("Wrong sharetoken in payment")
494- else if ((0 >= aF.payments[0].amount))
495- then throw("Payment amount must be greater than 0")
496- else if ((0 > cO))
497- then throw("lockType must be >= 0")
498- else {
499- let ds = cL(aS, aX, dj, aF.payments[0].amount, cO)
500- if ((ds == ds))
501- then {
502- let dt = if ((cO == 0))
479+ if ((dg == dg))
480+ then {
481+ let dh = aY(aS)
482+ let aX = toString(df)
483+ let di = aU(aS)
484+ let ca = valueOrElse(getInteger(this, (aS + o)), di)
485+ let dj = valueOrElse(getInteger(this, (((aS + "_") + aX) + i)), 0)
486+ let dk = valueOrElse(getInteger(this, (((aS + "_") + aX) + l)), 0)
487+ let dl = valueOrElse(getInteger(this, (((aS + "_") + aX) + j)), 0)
488+ let dm = valueOrElse(getInteger(this, (((aS + "_") + aX) + m)), dj)
489+ let dn = ((dj + dl) + aF.payments[0].amount)
490+ let do = cT(cO)
491+ let dp = do._1
492+ let dq = do._2
493+ let dr = getIntegerValue(this, q)
494+ if ((aF.payments[0].assetId != dh))
495+ then throw("Wrong sharetoken in payment")
496+ else if ((0 >= aF.payments[0].amount))
497+ then throw("Payment amount must be greater than 0")
498+ else if ((0 > cO))
499+ then throw("lockType must be >= 0")
500+ else {
501+ let ds = cL(aS, aX, dj, aF.payments[0].amount, cO)
502+ if ((ds == ds))
503503 then {
504- let du = ((dm + aF.payments[0].amount) - ds)
505- $Tuple2([IntegerEntry((((aS + "_") + aX) + i), ((dj + aF.payments[0].amount) - ds)), IntegerEntry((((aS + "_") + aX) + m), du), IntegerEntry((aS + o), ((ca + aF.payments[0].amount) - ds)), ScriptTransfer(df, ds, aF.payments[0].assetId)], ((di + aF.payments[0].amount) - ds))
504+ let dt = if ((cO == 0))
505+ then {
506+ let du = ((dm + aF.payments[0].amount) - ds)
507+ $Tuple2([IntegerEntry((((aS + "_") + aX) + i), ((dj + aF.payments[0].amount) - ds)), IntegerEntry((((aS + "_") + aX) + m), du), IntegerEntry((aS + o), ((ca + aF.payments[0].amount) - ds)), ScriptTransfer(df, ds, aF.payments[0].assetId)], ((di + aF.payments[0].amount) - ds))
508+ }
509+ else if (if ((dk == 0))
510+ then if (if ((2 > size(aF.payments)))
511+ then true
512+ else (aF.payments[1].assetId != unit))
513+ then true
514+ else (dr > aF.payments[1].amount)
515+ else false)
516+ then throw((("You need to pay additional waves comission " + toString(dr)) + "WAVES"))
517+ else if ((dk > (height + dp)))
518+ then throw("You cannot lock sharetokens for a period less than what you have already locked")
519+ else {
520+ let dv = (dl + aF.payments[0].amount)
521+ let dw = (height + dp)
522+ let du = (fraction(dv, dq, aa) + dj)
523+ $Tuple2([IntegerEntry((((aS + "_") + aX) + j), dv), IntegerEntry((((aS + "_") + aX) + l), dw), IntegerEntry((((aS + "_") + aX) + k), cO), IntegerEntry((((aS + "_") + aX) + m), du), IntegerEntry((aS + o), ((ca - dm) + du))], (di + aF.payments[0].amount))
524+ }
525+ let dx = dt._1
526+ let dy = dt._2
527+ if ((dy > aZ(dh)))
528+ then throw("Balance of share-token is lower than totalAmount")
529+ else {
530+ let dz = bX(aS, aX)
531+ let by = dz._1
532+ let bz = dz._2
533+ let cI = dz._3
534+ let dA = dz._4
535+ let cm = dz._5
536+ let dB = (bj(aS, aX) + cI)
537+ let dC = if ((getString(Address(fromBase58String(aS)), "version") == "3.0.0"))
538+ then invoke(at, "updateUserInterest", [aX, aS, dn], nil)
539+ else 0
540+ if ((dC == dC))
541+ then ([IntegerEntry((((aS + "_") + aX) + t), by), IntegerEntry((((aS + "_") + aX) + v), bz), IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height), IntegerEntry((aS + n), dy), IntegerEntry((((aS + "_") + aX) + y), dB), Reissue(aA, (dA + cm), true), ScriptTransfer(au, dA, aA), ScriptTransfer(ap, cm, aA)] ++ dx)
542+ else throw("Strict value is not equal to itself.")
543+ }
506544 }
507- else if (if ((dk == 0))
508- then if (if ((2 > size(aF.payments)))
509- then true
510- else (aF.payments[1].assetId != unit))
511- then true
512- else (dr > aF.payments[1].amount)
513- else false)
514- then throw((("You need to pay additional waves comission " + toString(dr)) + "WAVES"))
515- else if ((dk > (height + dp)))
516- then throw("You cannot lock sharetokens for a period less than what you have already locked")
517- else {
518- let dv = (dl + aF.payments[0].amount)
519- let dw = (height + dp)
520- let du = (fraction(dv, dq, aa) + dj)
521- $Tuple2([IntegerEntry((((aS + "_") + aX) + j), dv), IntegerEntry((((aS + "_") + aX) + l), dw), IntegerEntry((((aS + "_") + aX) + k), cO), IntegerEntry((((aS + "_") + aX) + m), du), IntegerEntry((aS + o), ((ca - dm) + du))], (di + aF.payments[0].amount))
522- }
523- let dx = dt._1
524- let dy = dt._2
525- if ((dy > aZ(dh)))
526- then throw("Balance of share-token is lower than totalAmount")
527- else {
528- let dz = bX(aS, aX)
529- let by = dz._1
530- let bz = dz._2
531- let cI = dz._3
532- let dA = dz._4
533- let cm = dz._5
534- let dB = (bj(aS, aX) + cI)
535- let dC = if ((getString(Address(fromBase58String(aS)), "version") == "3.0.0"))
536- then invoke(at, "updateUserInterest", [aX, aS, dn], nil)
537- else 0
538- if ((dC == dC))
539- then ([IntegerEntry((((aS + "_") + aX) + t), by), IntegerEntry((((aS + "_") + aX) + v), bz), IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height), IntegerEntry((aS + n), dy), IntegerEntry((((aS + "_") + aX) + y), dB), Reissue(aA, (dA + cm), true), ScriptTransfer(au, dA, aA), ScriptTransfer(ap, cm, aA)] ++ dx)
540- else throw("Strict value is not equal to itself.")
541- }
545+ else throw("Strict value is not equal to itself.")
542546 }
543- else throw("Strict value is not equal to itself.")
544- }
547+ }
548+ else throw("Strict value is not equal to itself.")
545549 }
546550
547551
548552 func dD (aF,df,aS,dE) = {
549553 let dg = if (db(aS))
550554 then invoke(this, "unlockUserLockDeprecated", [aS, toString(df)], nil)
551555 else 0
552556 if ((dg == dg))
553557 then {
554558 let dF = fromBase58String(getStringValue(value(addressFromString(aS)), "share_asset_id"))
555559 let dG = if ((dF == ax))
556560 then invoke(aw, "lpAction", nil, nil)
557561 else nil
558- let aX = toString(df)
559- let dH = bX(aS, aX)
560- let by = dH._1
561- let bz = dH._2
562- let cI = dH._3
563- let dA = dH._4
564- let cm = dH._5
565- let dj = valueOrElse(getInteger(this, (((aS + "_") + aX) + i)), 0)
566- let dl = valueOrElse(getInteger(this, (((aS + "_") + aX) + j)), 0)
567- let dm = valueOrElse(getInteger(this, (((aS + "_") + aX) + m)), dj)
568- let dI = (dj - dE)
569- let dB = (bj(aS, aX) + cI)
570- let dJ = aU(aS)
571- let ca = valueOrElse(getInteger(this, (aS + o)), dJ)
572- let dK = (dJ - dE)
573- let dL = (ca - dE)
574- let du = (dm - dE)
575- if ((dE > dj))
576- then throw("Withdraw amount more then user locked amount")
577- else if ((aZ(dF) > dJ))
578- then throw("Balance of share-token is lower than totalAmount")
579- else {
580- let dC = if ((getString(Address(fromBase58String(aS)), "version") == "3.0.0"))
581- then invoke(at, "updateUserInterest", [aX, aS, (dj + dl)], nil)
582- else 0
583- if ((dC == dC))
584- then [IntegerEntry((((aS + "_") + aX) + t), by), IntegerEntry((((aS + "_") + aX) + v), bz), IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height), IntegerEntry((((aS + "_") + aX) + i), dI), IntegerEntry((((aS + "_") + aX) + m), du), IntegerEntry((aS + n), dK), IntegerEntry((aS + o), dL), IntegerEntry((((aS + "_") + aX) + y), dB), Reissue(aA, dA, true), ScriptTransfer(au, dA, aA), ScriptTransfer(ap, cm, aA), ScriptTransfer(aF.caller, dE, dF)]
585- else throw("Strict value is not equal to itself.")
586- }
562+ if ((dG == dG))
563+ then {
564+ let aX = toString(df)
565+ let dH = bX(aS, aX)
566+ let by = dH._1
567+ let bz = dH._2
568+ let cI = dH._3
569+ let dA = dH._4
570+ let cm = dH._5
571+ let dj = valueOrElse(getInteger(this, (((aS + "_") + aX) + i)), 0)
572+ let dl = valueOrElse(getInteger(this, (((aS + "_") + aX) + j)), 0)
573+ let dm = valueOrElse(getInteger(this, (((aS + "_") + aX) + m)), dj)
574+ let dI = (dj - dE)
575+ let dB = (bj(aS, aX) + cI)
576+ let dJ = aU(aS)
577+ let ca = valueOrElse(getInteger(this, (aS + o)), dJ)
578+ let dK = (dJ - dE)
579+ let dL = (ca - dE)
580+ let du = (dm - dE)
581+ if ((dE > dj))
582+ then throw("Withdraw amount more then user locked amount")
583+ else if ((aZ(dF) > dJ))
584+ then throw("Balance of share-token is lower than totalAmount")
585+ else {
586+ let dC = if ((getString(Address(fromBase58String(aS)), "version") == "3.0.0"))
587+ then invoke(at, "updateUserInterest", [aX, aS, (dj + dl)], nil)
588+ else 0
589+ if ((dC == dC))
590+ then [IntegerEntry((((aS + "_") + aX) + t), by), IntegerEntry((((aS + "_") + aX) + v), bz), IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height), IntegerEntry((((aS + "_") + aX) + i), dI), IntegerEntry((((aS + "_") + aX) + m), du), IntegerEntry((aS + n), dK), IntegerEntry((aS + o), dL), IntegerEntry((((aS + "_") + aX) + y), dB), Reissue(aA, dA, true), ScriptTransfer(au, dA, aA), ScriptTransfer(ap, cm, aA), ScriptTransfer(aF.caller, dE, dF)]
591+ else throw("Strict value is not equal to itself.")
592+ }
593+ }
594+ else throw("Strict value is not equal to itself.")
587595 }
588596 else throw("Strict value is not equal to itself.")
589597 }
590598
591599
592600 func dM (aF,aS,df) = {
593601 let dF = fromBase58String(getStringValue(value(addressFromString(aS)), "share_asset_id"))
594602 let aX = toString(df)
595603 let bI = aU(aS)
596604 let dN = bX(aS, aX)
597605 let by = dN._1
598606 let bz = dN._2
599607 let cI = dN._3
600608 let dA = dN._4
601609 let cm = dN._5
602610 let cK = (bj(aS, aX) + cI)
603611 if ((aZ(dF) > bI))
604612 then throw("Balance of share-token is lower than totalAmount")
605613 else {
606614 let dO = if ((aF.caller != this))
607615 then [ScriptTransfer(aF.caller, cK, aA)]
608616 else nil
609617 $Tuple2(([IntegerEntry((((aS + "_") + aX) + t), by), IntegerEntry((((aS + "_") + aX) + v), bz), IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height), IntegerEntry((((aS + "_") + aX) + y), 0), Reissue(aA, ((dA + cK) + cm), true), ScriptTransfer(au, dA, aA), ScriptTransfer(ap, cm, aA)] ++ dO), cK)
610618 }
611619 }
612620
613621
614622 func dP (aF,aS,aX) = {
615623 let ca = getIntegerValue(this, (aS + o))
616624 let dj = valueOrElse(getInteger(this, (((aS + "_") + aX) + i)), 0)
617625 let dl = valueOrElse(getInteger(this, (((aS + "_") + aX) + j)), 0)
618626 let dm = valueOrElse(getInteger(this, (((aS + "_") + aX) + m)), dj)
619627 let dI = (dj + dl)
620628 let dQ = bX(aS, aX)
621629 let by = dQ._1
622630 let bz = dQ._2
623631 let cI = dQ._3
624632 let dA = dQ._4
625633 let cm = dQ._5
626634 let dB = (bj(aS, aX) + cI)
627635 [IntegerEntry((((aS + "_") + aX) + t), by), IntegerEntry((((aS + "_") + aX) + v), bz), IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height), IntegerEntry((((aS + "_") + aX) + i), dI), IntegerEntry((((aS + "_") + aX) + m), dI), IntegerEntry((aS + o), ((ca - dm) + dI)), IntegerEntry((((aS + "_") + aX) + y), dB), DeleteEntry((((aS + "_") + aX) + j)), DeleteEntry((((aS + "_") + aX) + l)), DeleteEntry((((aS + "_") + aX) + k)), Reissue(aA, (dA + cm), true), ScriptTransfer(au, dA, aA), ScriptTransfer(ap, cm, aA)]
628636 }
629637
630638
631639 @Callable(aF)
632640 func init (dR) = if (isDefined(getString(this, x)))
633641 then throw("SWOP already initialized")
634642 else {
635643 let dS = 100000000000000
636644 let dT = Issue("SWOP", "SWOP protocol token", dS, 8, true)
637645 let dU = calculateAssetId(dT)
638646 [BooleanEntry(a, true), Issue("SWOP", "SWOP protocol token", dS, 8, true), StringEntry(x, toBase58String(dU))]
639647 }
640648
641649
642650
643651 @Callable(aF)
644652 func initPoolShareFarming (aS) = valueOrElse(cZ(aF), if (!(isDefined(getString(W, (I + aS)))))
645653 then throw("Pool is not in oracle")
646654 else if (isDefined(getInteger(this, (aS + n))))
647655 then throw("Pool already inited")
648656 else [IntegerEntry((aS + n), 0), IntegerEntry((aS + s), 0), IntegerEntry((aS + u), 0), IntegerEntry((aS + w), height)])
649657
650658
651659
652660 @Callable(aF)
653661 func updatePoolInterest (aS) = valueOrElse(cY(), if ((aF.caller != ar))
654662 then throw("Only Governance can call this function")
655663 else {
656664 let aX = toString(addressFromPublicKey(as))
657665 let dV = bX(aS, aX)
658666 let by = dV._1
659667 let bz = dV._2
660668 let dW = dV._3
661669 [IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height)]
662670 })
663671
664672
665673
666674 @Callable(aF)
667675 func lockShareTokens (aS,cO) = valueOrElse(dc(aS), valueOrElse(cY(), de(aF, aF.caller, aS, cO)))
668676
669677
670678
671679 @Callable(aF)
672680 func lockShareTokensFromPool (dX,aS,cO) = valueOrElse(dc(aS), valueOrElse(cY(), valueOrElse(da(aF, aS), de(aF, Address(dX), aS, cO))))
673681
674682
675683
676684 @Callable(aF)
677685 func lockStakedShareTokens (aS,cO,dY) = valueOrElse(dc(aS), valueOrElse(cY(), {
678686 let dh = aY(aS)
679687 let aX = toString(aF.caller)
680688 let di = aU(aS)
681689 let ca = valueOrElse(getInteger(this, (aS + o)), di)
682690 let dj = valueOrElse(getInteger(this, (((aS + "_") + aX) + i)), 0)
683691 let dk = valueOrElse(getInteger(this, (((aS + "_") + aX) + l)), 0)
684692 let dl = valueOrElse(getInteger(this, (((aS + "_") + aX) + j)), 0)
685693 let dm = valueOrElse(getInteger(this, (((aS + "_") + aX) + m)), dj)
686694 let dn = (dj + dl)
687695 let dZ = cT(cO)
688696 let dp = dZ._1
689697 let dq = dZ._2
690698 let dr = getIntegerValue(this, q)
691699 if ((aR(aS) > height))
692700 then throw("You can't lock shareTokens till first harvest end.")
693701 else if ((0 >= cO))
694702 then throw("lockType must be > 0")
695703 else if ((dY > dj))
696704 then throw(("You can't lock more than " + toString(dj)))
697705 else if ((aZ(dh) > di))
698706 then throw("Balance of share-token is lower than totalAmount")
699707 else if (if ((dk == 0))
700708 then if (if ((1 > size(aF.payments)))
701709 then true
702710 else (aF.payments[0].assetId != unit))
703711 then true
704712 else (dr > aF.payments[0].amount)
705713 else false)
706714 then throw((("You need to pay additional waves comission " + toString(dr)) + "WAVES"))
707715 else if (if ((dk == 0))
708716 then (0 >= dY)
709717 else false)
710718 then throw("lockAmount must be greater than 0")
711719 else if ((0 > dY))
712720 then throw("lockAmount must be positive")
713721 else if ((dk > (height + dp)))
714722 then throw("You cannot lock sharetokens for a period less than what you have already locked")
715723 else {
716724 let dv = (dl + dY)
717725 let dI = (dj - dY)
718726 let dw = (height + dp)
719727 let du = (fraction(dv, dq, aa) + dI)
720728 let ea = bX(aS, aX)
721729 let by = ea._1
722730 let bz = ea._2
723731 let cI = ea._3
724732 let dA = ea._4
725733 let cm = ea._5
726734 let dB = (bj(aS, aX) + cI)
727735 [IntegerEntry((((aS + "_") + aX) + i), dI), IntegerEntry((((aS + "_") + aX) + j), dv), IntegerEntry((((aS + "_") + aX) + l), dw), IntegerEntry((((aS + "_") + aX) + k), cO), IntegerEntry((((aS + "_") + aX) + m), du), IntegerEntry((aS + o), ((ca - dm) + du)), IntegerEntry((((aS + "_") + aX) + t), by), IntegerEntry((((aS + "_") + aX) + v), bz), IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height), IntegerEntry((((aS + "_") + aX) + y), dB), Reissue(aA, (dA + cm), true), ScriptTransfer(au, dA, aA), ScriptTransfer(ap, cm, aA)]
728736 }
729737 }))
730738
731739
732740
733741 @Callable(aF)
734742 func unlockUserLock (aS,aX) = valueOrElse(cY(), {
735743 let dk = valueOrErrorMessage(getInteger(this, (((aS + "_") + aX) + l)), (((("There is no pool " + aS) + " or user ") + aX) + "with lock"))
736744 if ((dk > height))
737745 then throw(("You can't unlock sharetokens till " + toString(dk)))
738746 else (dP(aF, aS, aX) ++ [ScriptTransfer(aF.caller, getIntegerValue(this, q), unit)])
739747 })
740748
741749
742750
743751 @Callable(aF)
744752 func unlockUserLockDeprecated (aS,aX) = valueOrElse(cY(), valueOrElse(dd(aF), if (!(db(aS)))
745753 then throw("Pool must be deprecated")
746754 else if (isDefined(getInteger(this, (((aS + "_") + aX) + l))))
747755 then (dP(aF, aS, aX) ++ [ScriptTransfer(ao, getIntegerValue(this, q), unit)])
748756 else nil))
749757
750758
751759
752760 @Callable(aF)
753761 func withdrawShareTokens (aS,dE) = valueOrElse(cY(), dD(aF, aF.caller, aS, dE))
754762
755763
756764
757765 @Callable(aF)
758766 func withdrawShareTokensFromPool (dX,aS,dE) = valueOrElse(cY(), valueOrElse(da(aF, aS), dD(aF, Address(dX), aS, dE)))
759767
760768
761769
762770 @Callable(aF)
763771 func claim (aS) = valueOrElse(cY(), {
764772 let bN = dM(aF, aS, aF.caller)
765773 if ((bN._2 == 0))
766774 then throw("You have 0 available SWOP")
767775 else bN
768776 })
769777
770778
771779
772780 @Callable(aF)
773781 func claimInternal (aS,df) = valueOrElse(cY(), valueOrElse(dd(aF), dM(aF, aS, Address(df))))
774782
775783
776784
777785 @Callable(aF)
778786 func claimAndStake (aS) = valueOrElse(cY(), {
779787 let cI = {
780788 let eb = invoke(this, "claimInternal", [aS, aF.caller.bytes], nil)
781789 if ($isInstanceOf(eb, "Int"))
782790 then eb
783791 else throw(($getType(eb) + " couldn't be cast to Int"))
784792 }
785793 if ((cI == cI))
786794 then if ((cI == 0))
787795 then throw("You have 0 available SWOP")
788796 else {
789797 let ec = invoke(ar, "lockSWOPFromFarming", nil, [AttachedPayment(aA, cI)])
790798 if ((ec == ec))
791799 then nil
792800 else throw("Strict value is not equal to itself.")
793801 }
794802 else throw("Strict value is not equal to itself.")
795803 })
796804
797805
798806
799807 @Callable(aF)
800808 func claimAll (cA) = valueOrElse(cY(), {
801809 func ed (ee,aS) = {
802810 let cI = {
803811 let eb = invoke(this, "claimInternal", [aS, aF.caller.bytes], nil)
804812 if ($isInstanceOf(eb, "Int"))
805813 then eb
806814 else throw(($getType(eb) + " couldn't be cast to Int"))
807815 }
808816 if ((cI == cI))
809817 then (ee + cI)
810818 else throw("Strict value is not equal to itself.")
811819 }
812820
813821 let ee = {
814822 let aK = cA
815823 let aL = size(aK)
816824 let aM = 0
817825 func aN (aO,aP) = if ((aP >= aL))
818826 then aO
819827 else ed(aO, aK[aP])
820828
821829 func aQ (aO,aP) = if ((aP >= aL))
822830 then aO
823831 else throw("List size exceeds 60")
824832
825833 aQ(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aM, 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)
826834 }
827835 if ((ee == 0))
828836 then throw("You have 0 available SWOP")
829837 else [ScriptTransfer(aF.caller, ee, aA)]
830838 })
831839
832840
833841
834842 @Callable(aF)
835843 func claimAllAndStake (cA) = valueOrElse(cY(), {
836844 func ed (ee,aS) = {
837845 let cI = {
838846 let eb = invoke(this, "claimInternal", [aS, aF.caller.bytes], nil)
839847 if ($isInstanceOf(eb, "Int"))
840848 then eb
841849 else throw(($getType(eb) + " couldn't be cast to Int"))
842850 }
843851 if ((cI == cI))
844852 then (ee + cI)
845853 else throw("Strict value is not equal to itself.")
846854 }
847855
848856 let ee = {
849857 let aK = cA
850858 let aL = size(aK)
851859 let aM = 0
852860 func aN (aO,aP) = if ((aP >= aL))
853861 then aO
854862 else ed(aO, aK[aP])
855863
856864 func aQ (aO,aP) = if ((aP >= aL))
857865 then aO
858866 else throw("List size exceeds 60")
859867
860868 aQ(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aM, 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)
861869 }
862870 if ((ee == 0))
863871 then throw("You have 0 available SWOP")
864872 else {
865873 let ec = invoke(ar, "lockSWOPFromFarming", nil, [AttachedPayment(aA, ee)])
866874 if ((ec == ec))
867875 then nil
868876 else throw("Strict value is not equal to itself.")
869877 }
870878 })
871879
872880
873881
874882 @Callable(aF)
875883 func updateUserBoostInterest (aS,aX) = valueOrElse(cY(), if ((aF.caller != aq))
876884 then throw("Only voiting can call this function")
877885 else {
878886 let ef = bX(aS, aX)
879887 let by = ef._1
880888 let bz = ef._2
881889 let cI = ef._3
882890 let dA = ef._4
883891 let cm = ef._5
884892 let dB = (bj(aS, aX) + cI)
885893 [IntegerEntry((((aS + "_") + aX) + t), by), IntegerEntry((((aS + "_") + aX) + v), bz), IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height), IntegerEntry((((aS + "_") + aX) + y), dB), Reissue(aA, (dA + cm), true), ScriptTransfer(au, dA, aA), ScriptTransfer(ap, cm, aA)]
886894 })
887895
888896
889897
890898 @Callable(aF)
891899 func shutdown () = valueOrElse(cZ(aF), if (!(ay))
892900 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, d), "the cause wasn't specified")))
893901 else cW("Paused by admin"))
894902
895903
896904
897905 @Callable(aF)
898906 func activate () = valueOrElse(cZ(aF), if (ay)
899907 then throw("DApp is already active")
900908 else [BooleanEntry(a, true), DeleteEntry(d)])
901909
902910
903911 @Verifier(eg)
904912 func eh () = {
905913 let ai = eg
906914 let ei = if (sigVerify(eg.bodyBytes, eg.proofs[0], al))
907915 then 1
908916 else 0
909917 let ej = if (sigVerify(eg.bodyBytes, eg.proofs[1], am))
910918 then 1
911919 else 0
912920 let ek = if (sigVerify(eg.bodyBytes, eg.proofs[2], an))
913921 then 1
914922 else 0
915923 (((ei + ej) + ek) >= 2)
916924 }
917925

github/deemru/w8io/169f3d6 
117.19 ms