tx · 4homFNZJEVav37BawJrV3MJEQnjyd25cTmTcZYvAUqcr

3N7b3kPunHUXhZp1vMG9NhPMARNEprCMWxT:  -0.03500000 Waves

2023.01.20 12:06 [2413083] smart account 3N7b3kPunHUXhZp1vMG9NhPMARNEprCMWxT > SELF 0.00000000 Waves

{ "type": 13, "id": "4homFNZJEVav37BawJrV3MJEQnjyd25cTmTcZYvAUqcr", "fee": 3500000, "feeAssetId": null, "timestamp": 1674205660421, "version": 2, "chainId": 84, "sender": "3N7b3kPunHUXhZp1vMG9NhPMARNEprCMWxT", "senderPublicKey": "AYbpHveq7zviKTDV7SGTB1pZGFbkumgfq3jSwVv6BznT", "proofs": [ "4F9rUCAQkeCcuLwUcuDWF6bWMXhAKxiosgDJqLGFRRuqkCU2VVxJaCQtzenyFPbpZG6BjqbvLtiVBdF8VcA7kwuj" ], "script": "base64:BgK7LAgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIGc2NhbGU4IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgt3YXZlc1N0cmluZyIDU0VQIg9Qb29sUHV0RGlzYWJsZWQiE1Bvb2xNYXRjaGVyRGlzYWJsZWQiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiDWlkeFBvb2xTdGF0dXMiEGlkeFBvb2xMUEFzc2V0SWQiDWlkeEFtdEFzc2V0SWQiD2lkeFByaWNlQXNzZXRJZCIOaWR4QW10QXNzZXREY20iEGlkeFByaWNlQXNzZXREY20iDmlkeElBbXRBc3NldElkIhBpZHhJUHJpY2VBc3NldElkIhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiC3RvWDE4QmlnSW50Igdmcm9tWDE4IgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCIMZnJvbVgxOFJvdW5kIgVyb3VuZCIJYWJzQmlnSW50IgJmYyIDbXBrIgRwbXBrIgJwbCICcGgiAWgiCXRpbWVzdGFtcCIDcGF1Igt1c2VyQWRkcmVzcyIEdHhJZCIDZ2F1IgJhYSICcGEiBmtleUZlZSIKZmVlRGVmYXVsdCIDZmVlIgZrZXlLTHAiFWtleUtMcFJlZnJlc2hlZEhlaWdodCISa2V5S0xwUmVmcmVzaERlbGF5IhZrTHBSZWZyZXNoRGVsYXlEZWZhdWx0Ig9rTHBSZWZyZXNoRGVsYXkiEGtleUZhY3RvcnlDb25maWciDWtleU1hdGNoZXJQdWIiDWtleVBvb2xDb25maWciCWlBbXRBc3NldCILaVByaWNlQXNzZXQiH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQiDGJhc2VBc3NldFN0ciITa2V5QWxsUG9vbHNTaHV0ZG93biINa2V5UG9vbFdlaWdodCIPY29udHJhY3RBZGRyZXNzIhZrZXlBbGxvd2VkTHBTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiDm9yZGVyVmFsaWRJbmZvIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIg9nZXRTdHJpbmdPckZhaWwiB2FkZHJlc3MiA2tleSIMZ2V0SW50T3JGYWlsIgh0aHJvd0VyciIDbXNnIgZmbXRFcnIiD2ZhY3RvcnlDb250cmFjdCITZmVlQ29sbGVjdG9yQWRkcmVzcyIFaW5GZWUiAUAiBm91dEZlZSIQaXNHbG9iYWxTaHV0ZG93biITZ2V0TWF0Y2hlclB1Yk9yRmFpbCINZ2V0UG9vbENvbmZpZyIIYW10QXNzZXQiCnByaWNlQXNzZXQiDHBhcnNlQXNzZXRJZCIFaW5wdXQiD2Fzc2V0SWRUb1N0cmluZyIPcGFyc2VQb29sQ29uZmlnIgpwb29sQ29uZmlnIhBwb29sQ29uZmlnUGFyc2VkIgskdDA4NDA4ODU3NCINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIUY2FsY1ByaWNlQmlnSW50Um91bmQiEHByaXZhdGVDYWxjUHJpY2UiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCIOYW10QXNzZXRBbXRYMTgiEHByaWNlQXNzZXRBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciC2FtdEFzc2V0RGNtIg1wcmljZUFzc2V0RGNtIghwcmljZVgxOCIIbHBBbXRYMTgiE2xwUHJpY2VJbkFtQXNzZXRYMTgiE2xwUHJpY2VJblByQXNzZXRYMTgiFGVzdGltYXRlR2V0T3BlcmF0aW9uIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10IglscEFzc2V0SWQiCWFtQXNzZXRJZCIJcHJBc3NldElkIgpwb29sU3RhdHVzIgpscEVtaXNzaW9uIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiDWxwRW1pc3Npb25YMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIUZXN0aW1hdGVQdXRPcGVyYXRpb24iEXNsaXBwYWdlVG9sZXJhbmNlIgxpbkFtQXNzZXRBbXQiC2luQW1Bc3NldElkIgxpblByQXNzZXRBbXQiC2luUHJBc3NldElkIgppc0V2YWx1YXRlIgZlbWl0THAiDGFtQXNzZXRJZFN0ciIMcHJBc3NldElkU3RyIgtpQW10QXNzZXRJZCINaVByaWNlQXNzZXRJZCIOaW5BbUFzc2V0SWRTdHIiDmluUHJBc3NldElkU3RyIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgNyZXMiC3NsaXBwYWdlWDE4IhRzbGlwcGFnZVRvbGVyYW5jZVgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiILY29tbW9uU3RhdGUiB2NhbGNLTHAiDWFtb3VudEJhbGFuY2UiDHByaWNlQmFsYW5jZSIQYW1vdW50QmFsYW5jZVgxOCIPcHJpY2VCYWxhbmNlWDE4Igp1cGRhdGVkS0xwIg5jYWxjQ3VycmVudEtMcCIQYW1vdW50QXNzZXREZWx0YSIPcHJpY2VBc3NldERlbHRhIhRscEFzc2V0RW1pc3Npb25EZWx0YSISYW1vdW50QXNzZXRCYWxhbmNlIhFwcmljZUFzc2V0QmFsYW5jZSIPbHBBc3NldEVtaXNzaW9uIgpjdXJyZW50S0xwIhJyZWZyZXNoS0xwSW50ZXJuYWwiF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhIhZwcmljZUFzc2V0QmFsYW5jZURlbHRhIgdhY3Rpb25zIhJ2YWxpZGF0ZVVwZGF0ZWRLTHAiBm9sZEtMcCIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDIxMzI2MjE1MzgiA2tMcCINJHQwMjIwMDkyMjEwOSINdW51c2VkQWN0aW9ucyIGa0xwTmV3Ig0kdDAyMjExMjIyMTc0Ig51bnVzZWRBY3Rpb25zMCIKa0xwQ3VycmVudCIMaXNPcmRlclZhbGlkIhBhbW91bnRCYWxhbmNlTmV3Ig9wcmljZUJhbGFuY2VOZXciAWsiBGtOZXciBGluZm8iCWNvbW1vbkdldCIBaSIDcG10IgZwbXRBbXQiCWNvbW1vblB1dCIKYW1Bc3NldFBtdCIKcHJBc3NldFBtdCIGZXN0UHV0IgRlbWl0IgZhbW91bnQiB2VtaXRJbnYiDWVtaXRJbnZMZWdhY3kiByRtYXRjaDAiFWxlZ2FjeUZhY3RvcnlDb250cmFjdCIHdGFrZUZlZSIJZmVlQW1vdW50Ig9jYWxjUHV0T25lVG9rZW4iEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIgZpc0V2YWwiEGFtb3VudEJhbGFuY2VSYXciD3ByaWNlQmFsYW5jZVJhdyIUcGF5bWVudEluQW1vdW50QXNzZXQiDSR0MDI1NjU3MjU5NTAiEGFtb3VudEJhbGFuY2VPbGQiD3ByaWNlQmFsYW5jZU9sZCINJHQwMjU5NTQyNjEwMyIUYW1vdW50QXNzZXRBbW91bnRSYXciE3ByaWNlQXNzZXRBbW91bnRSYXciDSR0MDI2MjM1MjYyOTkiDXBheW1lbnRBbW91bnQiC3ByaWNlTmV3WDE4IghwcmljZU5ldyIOcGF5bWVudEJhbGFuY2UiFHBheW1lbnRCYWxhbmNlQmlnSW50IgxzdXBwbHlCaWdJbnQiC2NoZWNoU3VwcGx5Ig1kZXBvc2l0QmlnSW50Igtpc3N1ZUFtb3VudCILcHJpY2VPbGRYMTgiCHByaWNlT2xkIgRsb3NzIg0kdDAyNzk4MDI4MTQ3IgdiYWxhbmNlIg9pc3N1ZUFtb3VudEJvdGgiD2NhbGNHZXRPbmVUb2tlbiIKb3V0QXNzZXRJZCIGY2hlY2tzIhBvdXRJbkFtb3VudEFzc2V0Ig1iYWxhbmNlQmlnSW50IhhvdXRJbkFtb3VudEFzc2V0RGVjaW1hbHMiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIgpvdXRCYWxhbmNlIhBvdXRCYWxhbmNlQmlnSW50Ig5yZWRlZW1lZEJpZ0ludCIJYW1vdW50UmF3Ig0kdDAzMDIyNTMwMjgxIgt0b3RhbEFtb3VudCINJHQwMzAyODUzMDUxMSILb3V0QW1BbW91bnQiC291dFByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIYYW1vdW50Qm90aEluUGF5bWVudEFzc2V0IhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IgFzIh1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdCIJaXNNYW5hZ2VyIgJwayILbXVzdE1hbmFnZXIiAnBkIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSILY2hlY2tDYWxsZXIiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIg9zaG91bGRBdXRvU3Rha2UiBGFtSWQiBHBySWQiDHNsaXBwYWdlQUludiIMc2xpcHBhZ2VQSW52IgpscFRyYW5zZmVyIgtzbHBTdGFrZUludiINJHQwMzUwMzkzNTUwMSIRcmVmcmVzaEtMcEFjdGlvbnMiEWlzVXBkYXRlZEtMcFZhbGlkIgttYXhTbGlwcGFnZSINJHQwMzYwNjMzNjEyOCIMbWluT3V0QW1vdW50IglhdXRvU3Rha2UiIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkIg1pc1B1dERpc2FibGVkIgdwYXltZW50Ig0kdDAzNzMxNjM3NDY4IgVib251cyITZW1pdEFtb3VudEVzdGltYXRlZCIKZW1pdEFtb3VudCIIc3Rha2VJbnYiB3NlbmRGZWUiDSR0MDM4MDU0MzgyNTEiDSR0MDM4MjU0MzgzNjIiDSR0MDM4NjY4Mzg4MjUiDW91dEFzc2V0SWRTdHIiDWlzR2V0RGlzYWJsZWQiDSR0MDM5NzEwMzk4NjMiD2Ftb3VudEVzdGltYXRlZCIHYnVybkludiINYXNzZXRUcmFuc2ZlciINJHQwNDAzNjM0MDYxMCIQZmVlQW1vdW50Rm9yQ2FsYyINJHQwNDA2MTM0MDcyMSINJHQwNDA5Nzg0MTEzNCINdW5zdGFrZUFtb3VudCIKdW5zdGFrZUludiINJHQwNDIwMzk0MjE5MCINJHQwNDI2ODU0MjkzMiINJHQwNDI5MzU0MzA0MyIJb3V0QW10QW10IhRidXJuTFBBc3NldE9uRmFjdG9yeSINJHQwNDM5ODk0NDA3MSISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCINJHQwNDUwMjA0NTEwMSINY2hlY2tQYXltZW50cyIPY2hlY2tQb29sU3RhdHVzIg0kdDA0NjIyNzQ2MzA4IhVub0xlc3NUaGVuQW1vdW50QXNzZXQiDGNoZWNrQW1vdW50cyINJHQwNDc2MDM0NzY4NCILYW10QXNzZXRTdHIiDXByaWNlQXNzZXRTdHIiGGxhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCIdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiDSR0MDQ4ODcxNDg5MzUiEGtMcFVwZGF0ZUFjdGlvbnMiBnByaWNlcyIKYW10QXNzZXRJZCIMcHJpY2VBc3NldElkIg1wb29sTFBCYWxhbmNlIhJhY2NBbXRBc3NldEJhbGFuY2UiFGFjY1ByaWNlQXNzZXRCYWxhbmNlIgpwcmljZXNMaXN0Ig9scEFtdEFzc2V0U2hhcmUiEWxwUHJpY2VBc3NldFNoYXJlIgpwb29sV2VpZ2h0IgxjdXJQcmljZUNhbGMiDGFtQmFsYW5jZVJhdyIMcHJCYWxhbmNlUmF3Ig9hbUJhbGFuY2VSYXdYMTgiD3ByQmFsYW5jZVJhd1gxOCIQcGF5bWVudExwQXNzZXRJZCIMcGF5bWVudExwQW10IgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiDSR0MDU3NTk3NTc2NjYiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaGYAAWEAgMLXLwABYgkAtgIBAICAkLu61q3wDQABYwkAtgIBAAAAAWQJALYCAQAAAAFlCQC2AgEAAQABZgkAtgIBAAIAAWcCBVdBVkVTAAFoAgJfXwABaQACAAFqAAMAAWsABAABbAABAAFtAAIAAW4AAwABbwAEAAFwAAUAAXEABgABcgAHAAFzAAgAAXQACQABdQABAAF2AAcBAXcCAXgBeQkAvAIDCQC2AgEFAXgFAWIJALYCAQUBeQEBegIBeAF5CQC8AgMFAXgFAWIFAXkBAUECAUIBQwkAoAMBCQC8AgMFAUIJALYCAQUBQwUBYgEBRAMBQgFDAUUJAKADAQkAvQIEBQFCCQC2AgEFAUMFAWIFAUUBAUYBAUIDCQC/AgIFAWMFAUIJAL4CAQUBQgUBQgEBRwACEyVzX19mYWN0b3J5Q29udHJhY3QBAUgAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBSQACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEBSgACESVzJXNfX3ByaWNlX19sYXN0AQFLAgFMAU0JALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFMCQDMCAIJAKQDAQUBTQUDbmlsBQFoAQFOAgFPAVAJAKwCAgkArAICCQCsAgICCyVzJXMlc19fUF9fBQFPAgJfXwUBUAEBUQIBTwFQCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUBTwICX18FAVABAVIAAg8lc19fYW1vdW50QXNzZXQBAVMAAg4lc19fcHJpY2VBc3NldAABVAIHJXNfX2ZlZQABVQkAawMACgUBYQCQTgABVgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFUBQFVAAFXCQC5CQIJAMwIAgICJXMJAMwIAgIDa0xwBQNuaWwFAWgAAVgJALkJAgkAzAgCAgIlcwkAzAgCAhJrTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBaAABWQkAuQkCCQDMCAICAiVzCQDMCAICD3JlZnJlc2hLTHBEZWxheQUDbmlsBQFoAAFaAB4AAmFhCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAVkFAVoBAmFiAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFjAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhZAICYWUCYWYJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFlAgJfXwUCYWYCCF9fY29uZmlnAQJhZwECYWgJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYWgBAmFpAAIMJXNfX3NodXRkb3duAQJhagECYWsJAKwCAgISJXMlc19fcG9vbFdlaWdodF9fBQJhawECYWwAAhclc19fYWxsb3dlZExwU2NyaXB0SGFzaAACYW0CFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhbgQCYW8CYXACYXECYXIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIkb3JkZXIgdmFsaWRhdGlvbiBmYWlsZWQ6IG9yZGVyVmFsaWQ9CQClAwEFAmFvAgIgKAUCYXACASkCDSBzZW5kZXJWYWxpZD0JAKUDAQUCYXECDiBtYXRjaGVyVmFsaWQ9CQClAwEFAmFyAQJhcwICYXQCYXUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhdAUCYXUJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYXQJAMwIAgIBLgkAzAgCBQJhdQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQJhdgICYXQCYXUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJhdAUCYXUJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYXQJAMwIAgIBLgkAzAgCBQJhdQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQJhdwECYXgJAAIBCQC5CQIJAMwIAgIIbHAucmlkZToJAMwIAgUCYXgFA25pbAIBIAECYXkBAmF4CQC5CQIJAMwIAgIIbHAucmlkZToJAMwIAgUCYXgFA25pbAIBIAACYXoJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhcwIFBHRoaXMJAQFHAAACYUEJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhcwIFAmF6BQJhbQACYUIKAAJhQwkA/AcEBQJhegIQZ2V0SW5GZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFDAgNJbnQFAmFDCQACAQkArAICCQADAQUCYUMCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAACYUQKAAJhQwkA/AcEBQJhegIRZ2V0T3V0RmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhQwIDSW50BQJhQwkAAgEJAKwCAgkAAwEFAmFDAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQBAmFFAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhegkBAmFpAAcBAmFGAAkA2QQBCQECYXMCBQJhegkBAmFjAAECYUcABAJhSAkBAmFzAgUEdGhpcwkBAVIABAJhSQkBAmFzAgUEdGhpcwkBAVMABAJhZgkBAmF2AgUCYXoJAQJhZwEFAmFJBAJhZQkBAmF2AgUCYXoJAQJhZwEFAmFICQC1CQIJAQJhcwIFAmF6CQECYWQCCQCkAwEFAmFlCQCkAwEFAmFmBQFoAQJhSgECYUsDCQAAAgUCYUsFAWcFBHVuaXQJANkEAQUCYUsBAmFMAQJhSwMJAAACBQJhSwUEdW5pdAUBZwkA2AQBCQEFdmFsdWUBBQJhSwECYU0BAmFOCQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYU4FAWwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhTgUBbQkA2QQBCQCRAwIFAmFOBQFuCQECYUoBCQCRAwIFAmFOBQFvCQECYUoBCQCRAwIFAmFOBQFwCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYU4FAXEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhTgUBcgACYU8JAQJhTQEJAQJhRwAAAmFQBQJhTwACYVEIBQJhUAJfMgACYVIIBQJhUAJfMwACYVMIBQJhUAJfNAACYVQIBQJhUAJfNQACYVUIBQJhUAJfNgACYVYIBQJhUAJfNwECYVcACQC1CQIJAQJhcwIFAmF6CQECYWIABQFoAAJhWAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmFXAAUBdQIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwACYVkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJhVwAFAXYCGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MBAmFaCgJiYQJiYgJiYwJiZAJiZQJiZgJiZwJiaAJiaQJiagkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYmEJAMwIAgkApAMBBQJiYgkAzAgCCQCkAwEFAmJjCQDMCAIJAKQDAQUCYmQJAMwIAgkApAMBBQJiZQkAzAgCCQCkAwEFAmJmCQDMCAIJAKQDAQUCYmcJAMwIAgkApAMBBQJiaAkAzAgCCQCkAwEFAmJpCQDMCAIJAKQDAQUCYmoFA25pbAUBaAECYmsGAmJsAmJtAmJuAmJkAmJnAmJoCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYmwJAMwIAgkApAMBBQJibQkAzAgCCQCkAwEFAmJuCQDMCAIJAKQDAQUCYmQJAMwIAgkApAMBBQJiZwkAzAgCCQCkAwEFAmJoBQNuaWwFAWgBAmJvAQJicAMJAAACBQJicAIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYnABAmJxAgJicgJicwkAvAIDBQJicgUBYgUCYnMBAmJ0AwJicgJicwFFCQC9AgQFAmJyBQFiBQJicwUBRQECYnUEAmJ2AmJ3AmJ4AmJ5BAJiegkBAXcCBQJieAUCYnYEAmJBCQEBdwIFAmJ5BQJidwkBAmJxAgUCYkEFAmJ6AQJiQgMCYngCYnkCYkMEAmJECQECYUcABAJiRQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQFxBAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQFyBAJiRwkBAmJ1BAUCYkUFAmJGBQJieAUCYnkEAmJzCQEBdwIFAmJ4BQJiRQQCYnIJAQF3AgUCYnkFAmJGBAJiSAkBAXcCBQJiQwUBYQQCYkkJAQJicQIFAmJzBQJiSAQCYkoJAQJicQIFAmJyBQJiSAkAzAgCBQJiRwkAzAgCBQJiSQkAzAgCBQJiSgUDbmlsAQJiSwQCYkwCYk0CYk4BTwQCYkQJAQJhRwAEAmJPCQCRAwIFAmJEBQFuBAJiUAkAkQMCBQJiRAUBbwQCYlEJAJEDAgUCYkQFAXAEAmJ2CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkQFAXEEAmJ3CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkQFAXIEAmJSCQCRAwIFAmJEBQFtBAJiUwgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmJPCQCsAgIJAKwCAgIGQXNzZXQgBQJiTwIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJiTwUCYk0JAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmJUCQECYm8BBQJiUAQCYlUJAQF3AgUCYlQFAmJ2BAJiVgkBAmJvAQUCYlEEAmJXCQEBdwIFAmJWBQJidwQCYlgJAQJicQIFAmJXBQJiVQQCYlkJAQFBAgUCYlgFAWEEAmJaCQEBdwIFAmJOBQFhBAJjYQkBAXcCBQJiUwUBYQQCY2IJALwCAwUCYlUFAmJaBQJjYQQCY2MJALwCAwUCYlcFAmJaBQJjYQQCY2QJAQFEAwUCY2IFAmJ2BQVGTE9PUgQCY2UJAQFEAwUCY2MFAmJ3BQVGTE9PUgQCY2YDCQAAAgUCYkwCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAU8FAmNkAwkAAAIFAmJQAgVXQVZFUwUEdW5pdAkA2QQBBQJiUAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFPBQJjZQMJAAACBQJiUQIFV0FWRVMFBHVuaXQJANkEAQUCYlEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVECCQClCAEFAU8FAmJMCQECYmsGBQJjZAUCY2UFAmJOBQJiWQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAUoABQJiWQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAUsCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJiWQUDbmlsCQCcCgoFAmNkBQJjZQUCYlAFAmJRBQJiVAUCYlYFAmJTBQJiWAUCYlIFAmNmAQJjZwkCYkwCY2gCY2kCY2oCY2sCY2wBTwJjbQJjbgQCYkQJAQJhRwAEAmJPCQDZBAEJAJEDAgUCYkQFAW4EAmNvCQCRAwIFAmJEBQFvBAJjcAkAkQMCBQJiRAUBcAQCY3EJAJEDAgUCYkQFAXMEAmNyCQCRAwIFAmJEBQF0BAJiRQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQFxBAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQFyBAJiUgkAkQMCBQJiRAUBbQQCYlMICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYk8JAKwCAgkArAICAgZBc3NldCAJANgEAQUCYk8CDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJjcwkA2AQBCQELdmFsdWVPckVsc2UCBQJjagkA2QQBAgVXQVZFUwQCY3QJANgEAQkBC3ZhbHVlT3JFbHNlAgUCY2wJANkEAQIFV0FWRVMDAwkBAiE9AgUCY28FAmNzBgkBAiE9AgUCY3AFAmN0CQACAQIiSW52YWxpZCBhbXQgb3IgcHJpY2UgYXNzZXQgcGFzc2VkLgQCYlQDBQJjbQkBAmJvAQUCY28JAGUCCQECYm8BBQJjbwUCY2kEAmJWAwUCY20JAQJibwEFAmNwCQBlAgkBAmJvAQUCY3AFAmNrBAJjdQkBAXcCBQJjaQUCYkUEAmN2CQEBdwIFAmNrBQJiRgQCY3cJAQJicQIFAmN2BQJjdQQCYlUJAQF3AgUCYlQFAmJFBAJiVwkBAXcCBQJiVgUCYkYEAmN4AwkAAAIFAmJTAAAEAmJYBQFjBAJjeQUBYwQCYkgJAHYGCQC5AgIFAmN1BQJjdgAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUECBQJiSAUBYQkBAUECBQJjdQUCYkUJAQFBAgUCY3YFAmJGCQECYnECCQC3AgIFAmJXBQJjdgkAtwICBQJiVQUCY3UFAmN5BAJiWAkBAmJxAgUCYlcFAmJVBAJjeQkAvAIDCQEBRgEJALgCAgUCYlgFAmN3BQFiBQJiWAQCY3oJAQF3AgUCY2gFAWEDAwkBAiE9AgUCYlgFAWMJAL8CAgUCY3kFAmN6BwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJjeQIeIGV4Y2VlZGVkIHRoZSBwYXNzZWQgbGltaXQgb2YgCQCmAwEFAmN6BAJjYQkBAXcCBQJiUwUBYQQCY0EJAL0CBAUCY3UJAQJidAMFAmJXBQJiVQUHQ0VJTElORwUBYgUHQ0VJTElORwQCY0IJAL0CBAUCY3YFAWIJAQJidAMFAmJXBQJiVQUFRkxPT1IFB0NFSUxJTkcEAmNDAwkAvwICBQJjQQUCY3YJAJQKAgUCY0IFAmN2CQCUCgIFAmN1BQJjQQQCY0QIBQJjQwJfMQQCY0UIBQJjQwJfMgQCYkgJAL0CBAUCY2EFAmNFBQJiVwUFRkxPT1IJAJcKBQkBAUQDBQJiSAUBYQUFRkxPT1IJAQFEAwUCY0QFAmJFBQdDRUlMSU5HCQEBRAMFAmNFBQJiRgUHQ0VJTElORwUCYlgFAmN5BAJjRggFAmN4Al8xBAJjRwgFAmN4Al8yBAJjSAgFAmN4Al8zBAJiWQkBAUECCAUCY3gCXzQFAWEEAmNJCQEBQQIIBQJjeAJfNQUBYQMJAGcCAAAFAmNGCQACAQI2SW52YWxpZCBjYWxjdWxhdGlvbnMuIExQIGNhbGN1bGF0ZWQgaXMgbGVzcyB0aGFuIHplcm8uBAJjSgMJAQEhAQUCY24AAAUCY0YEAmNLCQBlAgUCY2kFAmNHBAJjTAkAZQIFAmNrBQJjSAQCY00JAMwIAgkBDEludGVnZXJFbnRyeQIJAQFKAAUCYlkJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFLAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCYlkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAU4CBQFPBQJiTAkBAmFaCgUCY0cFAmNIBQJjSgUCYlkFAmNoBQJjSQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0sFAmNMBQNuaWwJAJ8KDQUCY0YFAmNKBQJiWQUCYlQFAmJWBQJiUwUCYk8FAmJSBQJjTQUCY0sFAmNMBQJjagUCY2wBAmNOAwJjTwJjUAJiUwQCY1EJAQF6AgUCY08JALYCAQUCYVUEAmNSCQEBegIFAmNQCQC2AgEFAmFWBAJjUwkAvAIDCQB2BgkAuQICBQJjUQUCY1IAAAkAtgIBAAUAAQASBQRET1dOBQFlBQJiUwMJAAACBQJiUwUBZAUBZAUCY1MBAmNUAwJjVQJjVgJjVwQCY1gJALgCAgkAtgIBCQECYm8BCQECYUwBBQJhUwUCY1UEAmNZCQC4AgIJALYCAQkBAmJvAQkBAmFMAQUCYVQFAmNWBAJjWgkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmFSCHF1YW50aXR5BQJjVwQCZGEJAQJjTgMFAmNYBQJjWQUCY1oFAmRhAQJkYgMCZGMCZGQCY1cEAmNYCQBkAgkBAmJvAQkBAmFMAQUCYVMFAmRjBAJjWQkAZAIJAQJibwEJAQJhTAEFAmFUBQJkZAQCY1oJAGQCCAkBBXZhbHVlAQkA7AcBBQJhUghxdWFudGl0eQUCY1cEAmNTCQECY04DCQC2AgEFAmNYCQC2AgEFAmNZCQC2AgEFAmNaBAJkZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUBWAUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIFAVcJAKYDAQUCY1MFA25pbAkAlAoCBQJkZQUCY1MBAmRmAgJkZwJjUwMJAMACAgUCY1MFAmRnBgkBAmF3AQkAuQkCCQDMCAICInVwZGF0ZWQgS0xwIGxvd2VyIHRoYW4gY3VycmVudCBLTHAJAMwIAgkApgMBBQJkZwkAzAgCCQCmAwEFAmNTBQNuaWwCASABAmRoAQJkaQQCZGoIBQJkaQZhbW91bnQEAmRrCQBuBAgFAmRpBmFtb3VudAgFAmRpBXByaWNlBQFhBQVGTE9PUgQCZGwDCQAAAggFAmRpCW9yZGVyVHlwZQUDQnV5CQCUCgIFAmRqCQEBLQEFAmRrCQCUCgIJAQEtAQUCZGoFAmRrBAJkYwgFAmRsAl8xBAJkZAgFAmRsAl8yAwMDCQECYUUABgkAAAIFAmFRBQFqBgkAAAIFAmFRBQFrCQACAQIcRXhjaGFuZ2Ugb3BlcmF0aW9ucyBkaXNhYmxlZAMDCQECIT0CCAgFAmRpCWFzc2V0UGFpcgthbW91bnRBc3NldAUCYVMGCQECIT0CCAgFAmRpCWFzc2V0UGFpcgpwcmljZUFzc2V0BQJhVAkAAgECE1dyb25nIG9yZGVyIGFzc2V0cy4EAmRtCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFAVcJAQJheQECD2tMcCBpcyByZXF1aXJlZAkBAmF5AQILaW52YWxpZCBrTHAEAmRuCQECZGIDBQJkYwUCZGQAAAQCZG8IBQJkbgJfMQQCZHAIBQJkbgJfMgQCZHEJAQJkYgMAAAAAAAAEAmRyCAUCZHECXzEEAmRzCAUCZHECXzIEAmR0CQDAAgIFAmRwBQJkbQQCY08JAQJibwEJAQJhTAEFAmFTBAJjUAkBAmJvAQkBAmFMAQUCYVQEAmNRCQEBdwIFAmNPBQJhVQQCZHUJAGQCBQJjTwUCZGMEAmNSCQEBdwIFAmNQBQJhVgQCZHYJAGQCBQJjUAUCZGQEAmR3CQB2BgkAuQICCQC2AgEFAmNPCQC2AgEFAmNQAAAJALYCAQAFAAEAEgUERE9XTgQCZHgJAHYGCQC5AgIJALYCAQUCZHUJALYCAQUCZHYAAAkAtgIBAAUAAQASBQRET1dOBAJkeQkAuQkCCQDMCAIJAKYDAQUCZG0JAMwIAgkApgMBBQJkcAkAzAgCCQCmAwEFAmR3CQDMCAIJAKYDAQUCZHgFA25pbAIBIAkAlAoCBQJkdAUCZHkBAmR6AQJkQQMJAQIhPQIJAJADAQgFAmRBCHBheW1lbnRzAAEJAAIBAh1leGFjdGx5IDEgcGF5bWVudCBpcyBleHBlY3RlZAQCZEIJAQV2YWx1ZQEJAJEDAggFAmRBCHBheW1lbnRzAAAEAmJNCQEFdmFsdWUBCAUCZEIHYXNzZXRJZAQCZEMIBQJkQgZhbW91bnQEAmN4CQECYksECQDYBAEIBQJkQQ10cmFuc2FjdGlvbklkCQDYBAEFAmJNBQJkQwgFAmRBBmNhbGxlcgQCY2QIBQJjeAJfMQQCY2UIBQJjeAJfMgQCYlIJAQ1wYXJzZUludFZhbHVlAQgFAmN4Al85BAJjZggFAmN4A18xMAMDCQECYUUABgkAAAIFAmJSBQFrCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJiUgkAlwoFBQJjZAUCY2UFAmRDBQJiTQUCY2YBAmREAwJkQQJjaAJjbgMJAQIhPQIJAJADAQgFAmRBCHBheW1lbnRzAAIJAAIBAh9leGFjdGx5IDIgcGF5bWVudHMgYXJlIGV4cGVjdGVkBAJkRQkBBXZhbHVlAQkAkQMCCAUCZEEIcGF5bWVudHMAAAQCZEYJAQV2YWx1ZQEJAJEDAggFAmRBCHBheW1lbnRzAAEEAmRHCQECY2cJCQDYBAEIBQJkQQ10cmFuc2FjdGlvbklkBQJjaAgFAmRFBmFtb3VudAgFAmRFB2Fzc2V0SWQIBQJkRgZhbW91bnQIBQJkRgdhc3NldElkCQClCAEIBQJkQQZjYWxsZXIHBQJjbgQCYlIJAQ1wYXJzZUludFZhbHVlAQgFAmRHAl84AwMDCQECYUUABgkAAAIFAmJSBQFpBgkAAAIFAmJSBQFrCQACAQkArAICAixQdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJiUgUCZEcBAmRIAQJkSQQCZEoJAPwHBAUCYXoCBGVtaXQJAMwIAgUCZEkFA25pbAUDbmlsAwkAAAIFAmRKBQJkSgQCZEsEAmRMBQJkSgMJAAECBQJkTAIHQWRkcmVzcwQCZE0FAmRMCQD8BwQFAmRNAgRlbWl0CQDMCAIFAmRJBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkSwUCZEsFAmRJCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJkTgICZEkBVgQCZE8DCQAAAgUBVgAAAAAJAGsDBQJkSQUBVgUBYQkAlAoCCQBlAgUCZEkFAmRPBQJkTwECZFAEAmRRAmRSAU8BUAQCZFMJAAACBQFQBQR1bml0BAJkVAkBAmJvAQkBAmFMAQUCYVMEAmRVCQECYm8BCQECYUwBBQJhVAQCZFYDCQAAAgUCZFIFAmFTBgMJAAACBQJkUgUCYVQHCQECYXcBAg1pbnZhbGlkIGFzc2V0BAJkVwMFAmRTCQCUCgIFAmRUBQJkVQMFAmRWCQCUCgIJAGUCBQJkVAUCZFEFAmRVCQCUCgIFAmRUCQBlAgUCZFUFAmRRBAJkWAgFAmRXAl8xBAJkWQgFAmRXAl8yBAJkWgMFAmRWCQCUCgIFAmRRAAAJAJQKAgAABQJkUQQCZWEIBQJkWgJfMQQCZWIIBQJkWgJfMgQCZGoICQECZE4CBQJlYQUCYUICXzEEAmRrCAkBAmROAgUCZWIFAmFCAl8xBAJlYwkBAmROAgUCZFEFAmFCBAJlZAgFAmVjAl8xBAJkTwgFAmVjAl8yBAJkdQkAZAIFAmRYBQJkagQCZHYJAGQCBQJkWQUCZGsEAmVlCQECYnECCQEBdwIFAmR2BQJhVgkBAXcCBQJkdQUCYVUEAmVmCQEBQQIFAmVlBQFhBAJlZwMFAmRWBQJkWAUCZFkEAmVoCQC2AgEFAmVnBAJlaQkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmFSCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmFSAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZWoDCQC/AgIFAmVpBQFkBgkBAmF3AQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwMJAAACBQJlagUCZWoEAmVrCQC2AgEFAmVkBAJlbAkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJlaQkAuAICCQEKc3FydEJpZ0ludAQJALcCAgUBYgkAugICCQC5AgIFAmVrBQFiBQJlaAASABIFBERPV04FAWIFAWIFA25pbAQCY00DBQJkUwUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBSgAFAmVmCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBSwIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVmCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFOAgkApQgBCQEFdmFsdWUBBQFPCQDYBAEJAQV2YWx1ZQEFAVAJAQJhWgoFAmVhBQJlYgUCZWwFAmVmAAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZW0JAQJicQIJAQF3AgUCZFkFAmFWCQEBdwIFAmRYBQJhVQQCZW4JAQFBAgUCZW0FAWEEAmVvBAJlcAMFAmRWCQCUCgIFAmVhBQJkWAkAlAoCBQJlYgUCZFkEAmRJCAUCZXACXzEEAmVxCAUCZXACXzIEAmVyCQCgAwEJALwCAwUCZWkJALYCAQkAaQIFAmRJAAIJALYCAQUCZXEJAGsDCQBlAgUCZWwFAmVyBQFhBQJlcgkAlwoFBQJlbAUCY00FAmRPBQJlbwUCZFYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmVzBQJldAJlZAJkUgFPAVAEAmRTCQAAAgUBUAUEdW5pdAQCYkQJAQJhRwAEAmJFCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkQFAXEEAmJGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkQFAXIEAmV1CQDMCAIDCQAAAgUCZFIFAmFSBgkBAmF3AQIQaW52YWxpZCBscCBhc3NldAUDbmlsAwkAAAIFAmV1BQJldQQCZXYDCQAAAgUCZXQFAmFTBgMJAAACBQJldAUCYVQHCQECYXcBAg1pbnZhbGlkIGFzc2V0BAJldwMFAmV2CQC2AgEJAQJibwEJAQJhTAEFAmFTCQC2AgEJAQJibwEJAQJhTAEFAmFUBAJleAMFAmV2BQJiRQUCYkYEAmV5CQECYm8BCQECYUwBBQJhUwQCZXoJAQJibwEJAQJhTAEFAmFUBAJlQQMFAmV2BQJleQUCZXoEAmVCCQC2AgEFAmVBBAJlaQkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmFSCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmFSAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZUMJALYCAQUCZWQEAmVECQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmV3CQC4AgIFAWIJAHYGCQC4AgIFAWIJALoCAgkAuQICBQJlQwUBYgUCZWkAEgUBZgAAABIFBERPV04FAWIFA25pbAQCZUUJAQJkTgIFAmVEBQJhRAQCZUYIBQJlRQJfMQQCZE8IBQJlRQJfMgQCZUcDBQJldgkAlgoEBQJlRgAACQBlAgUCZXkFAmVEBQJlegkAlgoEAAAFAmVGBQJleQkAZQIFAmV6BQJlRAQCZUgIBQJlRwJfMQQCZUkIBQJlRwJfMgQCZUoIBQJlRwJfMwQCZUsIBQJlRwJfNAQCZWUJAQJicQIJAQF3AgUCZUsFAmFWCQEBdwIFAmVKBQJhVQQCZWYJAQFBAgUCZWUFAWEEAmNNAwUCZFMFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQEBUQIJAKUIAQkBBXZhbHVlAQUBTwkA2AQBCQEFdmFsdWUBBQFQCQECYmsGBQJlSAUCZUkFAmVkBQJlZgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAUoABQJlZgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAUsCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJlZgUDbmlsBAJlbQkBAmJxAgkBAXcCBQJlegUCYVYJAQF3AgUCZXkFAmFVBAJlbgkBAUECBQJlbQUBYQQCZW8EAmVMCQBoAgkAoAMBCQC8AgMFAmV3BQJlQwUCZWkAAgkAawMJAGUCBQJlRgUCZUwFAWEFAmVMCQCXCgUFAmVGBQJjTQUCZE8FAmVvBQJldgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZU0ABAJkTAkAoggBCQEBSAADCQABAgUCZEwCBlN0cmluZwQCZU4FAmRMCQDZBAEFAmVOAwkAAQIFAmRMAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmVPAAQCZEwJAKIIAQkBAUkAAwkAAQIFAmRMAgZTdHJpbmcEAmVOBQJkTAkA2QQBBQJlTgMJAAECBQJkTAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJlUAECZEEEAmRMCQECZU0AAwkAAQIFAmRMAgpCeXRlVmVjdG9yBAJlUQUCZEwJAAACCAUCZEEPY2FsbGVyUHVibGljS2V5BQJlUQMJAAECBQJkTAIEVW5pdAkAAAIIBQJkQQZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECZVIBAmRBBAJlUwkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAJkTAkBAmVNAAMJAAECBQJkTAIKQnl0ZVZlY3RvcgQCZVEFAmRMAwkAAAIIBQJkQQ9jYWxsZXJQdWJsaWNLZXkFAmVRBgUCZVMDCQABAgUCZEwCBFVuaXQDCQAAAggFAmRBBmNhbGxlcgUEdGhpcwYFAmVTCQACAQILTWF0Y2ggZXJyb3IbAmRBAQpzZXRNYW5hZ2VyAQJlVAQCZVUJAQJlUgEFAmRBAwkAAAIFAmVVBQJlVQQCZVYJANkEAQUCZVQDCQAAAgUCZVYFAmVWCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFJAAUCZVQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQQEOY29uZmlybU1hbmFnZXIABAJlVwkBAmVPAAQCZVgDCQEJaXNEZWZpbmVkAQUCZVcGCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmVYBQJlWAQCZVkDCQAAAggFAmRBD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCZVcGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmVZBQJlWQkAzAgCCQELU3RyaW5nRW50cnkCCQEBSAAJANgEAQkBBXZhbHVlAQUCZVcJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAUkABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEEBA3B1dAICY2gCZVoDCQBmAgAABQJjaAkAAgECIEludmFsaWQgc2xpcHBhZ2VUb2xlcmFuY2UgcGFzc2VkBAJkRwkBAmREAwUCZEEFAmNoBgQCY0oIBQJkRwJfMgQCYk8IBQJkRwJfNwQCY2YIBQJkRwJfOQQCY0sIBQJkRwNfMTAEAmNMCAUCZEcDXzExBAJmYQgFAmRHA18xMgQCZmIIBQJkRwNfMTMEAmRFCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkQQhwYXltZW50cwAABmFtb3VudAQCZEYJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRBCHBheW1lbnRzAAEGYW1vdW50BAJkYQkBAmNUAwUCZEUFAmRGCQC2AgEAAAMJAAACBQJkYQUCZGEEAmRKCQD8BwQFAmF6AgRlbWl0CQDMCAIFAmNKBQNuaWwFA25pbAMJAAACBQJkSgUCZEoEAmRLBAJkTAUCZEoDCQABAgUCZEwCB0FkZHJlc3MEAmRNBQJkTAkA/AcEBQJkTQIEZW1pdAkAzAgCBQJjSgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZEsFAmRLBAJmYwMJAGYCBQJjSwAACQD8BwQFAmFZAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZmEFAmNLBQNuaWwFA25pbAMJAAACBQJmYwUCZmMEAmZkAwkAZgIFAmNMAAAJAPwHBAUCYVkCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmYgUCY0wFA25pbAUDbmlsAwkAAAIFAmZkBQJmZAQCZmUDBQJlWgQCZmYJAPwHBAUCYVgCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJPBQJjSgUDbmlsAwkAAAIFAmZmBQJmZgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkQQZjYWxsZXIFAmNKBQJiTwUDbmlsBAJmZwkBAmRiAwAAAAAAAAMJAAACBQJmZwUCZmcEAmNTCAUCZmcCXzIEAmZoCAUCZmcCXzEEAmZpCQECZGYCBQJkYQUCY1MDCQAAAgUCZmkFAmZpCQDOCAIJAM4IAgUCY2YFAmZlBQJmaAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQQEKcHV0Rm9yRnJlZQECZmoDCQBmAgAABQJmagkAAgECFEludmFsaWQgdmFsdWUgcGFzc2VkBAJkRwkBAmREAwUCZEEFAmZqBwQCY2YIBQJkRwJfOQQCZEUJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRBCHBheW1lbnRzAAAGYW1vdW50BAJkRgkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEEIcGF5bWVudHMAAQZhbW91bnQEAmRhCQECY1QDBQJkRQUCZEYJALYCAQAAAwkAAAIFAmRhBQJkYQQCZmsJAQJkYgMAAAAAAAAEAmZoCAUCZmsCXzEEAmNTCAUCZmsCXzIEAmZpCQECZGYCBQJkYQUCY1MDCQAAAgUCZmkFAmZpCQDOCAIFAmNmBQJmaAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQQEJcHV0T25lVGtuAgJmbAJmbQQCZm4KAAJhQwkA/AcEBQJhegIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFDAgdCb29sZWFuBQJhQwkAAgEJAKwCAgkAAwEFAmFDAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJmbwMDAwkBAmFFAAYJAAACBQJhUQUBaQYJAAACBQJhUQUBawYFAmZuBAJldQkAzAgCAwMJAQEhAQUCZm8GCQECZVABBQJkQQYJAQJhdwECIXB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRBCHBheW1lbnRzAAEGCQECYXcBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJldQUCZXUEAmZwCQCRAwIIBQJkQQhwYXltZW50cwAABAJkUggFAmZwB2Fzc2V0SWQEAmRRCAUCZnAGYW1vdW50BAJkYQMJAAACBQJkUgUCYVMJAQJjVAMJALYCAQUCZFEJALYCAQAACQC2AgEAAAMJAAACBQJkUgUCYVQJAQJjVAMJALYCAQAACQC2AgEFAmRRCQC2AgEAAAkBAmF3AQIecGF5bWVudCBhc3NldCBpcyBub3Qgc3VwcG9ydGVkAwkAAAIFAmRhBQJkYQQBTwgFAmRBBmNhbGxlcgQBUAgFAmRBDXRyYW5zYWN0aW9uSWQEAmZxCQECZFAEBQJkUQUCZFIFAU8FAVADCQAAAgUCZnEFAmZxBAJkVggFAmZxAl81BAJmcggFAmZxAl80BAJkTwgFAmZxAl8zBAJjTQgFAmZxAl8yBAJmcwgFAmZxAl8xBAJmdAMDCQBmAgUCZmwAAAkAZgIFAmZsBQJmcwcJAQJhdwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZmwFA25pbAIABQJmcwQCZEoJAQJkSAEFAmZ0AwkAAAIFAmRKBQJkSgQCZmUDBQJmbQQCZnUJAPwHBAUCYVgCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmFSBQJmdAUDbmlsAwkAAAIFAmZ1BQJmdQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkQQZjYWxsZXIFAmZ0BQJhUgUDbmlsBAJmdgMJAGYCBQJkTwAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFBBQJkTwUCZFIFA25pbAUDbmlsBAJmdwMJAAACBQR0aGlzBQJhQQkAlAoCAAAAAAMFAmRWCQCUCgIJAQEtAQUCZE8AAAkAlAoCAAAJAQEtAQUCZE8EAmRjCAUCZncCXzEEAmRkCAUCZncCXzIEAmZ4CQECZGIDBQJkYwUCZGQAAAQCZmgIBQJmeAJfMQQCY1MIBQJmeAJfMgQCZG0JAQV2YWx1ZQEJAKIIAQUBVwQCZmkJAQJkZgIFAmRhBQJjUwMJAAACBQJmaQUCZmkJAJQKAgkAzggCCQDOCAIJAM4IAgUCY00FAmZlBQJmdgUCZmgFAmZ0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRBARFwdXRPbmVUa25SRUFET05MWQICZFICZFEEAmZ5CQECZFAEBQJkUQkBAmFKAQUCZFIFBHVuaXQFBHVuaXQEAmZzCAUCZnkCXzEEAmNNCAUCZnkCXzIEAmRPCAUCZnkCXzMEAmZyCAUCZnkCXzQEAmRWCAUCZnkCXzUJAJQKAgUDbmlsCQCVCgMFAmZzBQJkTwUCZnICZEEBCWdldE9uZVRrbgICZnoCZmwEAmZuCgACYUMJAPwHBAUCYXoCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhQwIHQm9vbGVhbgUCYUMJAAIBCQCsAgIJAAMBBQJhQwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZkEDAwkBAmFFAAYJAAACBQJhUQUBawYFAmZuBAJldQkAzAgCAwMJAQEhAQUCZkEGCQECZVABBQJkQQYJAQJhdwECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRBCHBheW1lbnRzAAEGCQECYXcBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJldQUCZXUEAmV0CQECYUoBBQJmegQCZnAJAJEDAggFAmRBCHBheW1lbnRzAAAEAmRSCAUCZnAHYXNzZXRJZAQCZWQIBQJmcAZhbW91bnQEAmRhCQECY1QDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmRhBQJkYQQBTwgFAmRBBmNhbGxlcgQBUAgFAmRBDXRyYW5zYWN0aW9uSWQEAmZCCQECZXMFBQJldAUCZWQFAmRSBQFPBQFQAwkAAAIFAmZCBQJmQgQCZXYIBQJmQgJfNQQCZnIIBQJmQgJfNAQCZE8IBQJmQgJfMwQCY00IBQJmQgJfMgQCZkMIBQJmQgJfMQQCZEkDAwkAZgIFAmZsAAAJAGYCBQJmbAUCZkMHCQECYXcBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZsBQNuaWwCAAUCZkMEAmZECQD8BwQFAmF6AgRidXJuCQDMCAIFAmVkBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRSBQJlZAUDbmlsAwkAAAIFAmZEBQJmRAQCZkUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBTwUCZEkFAmV0BQNuaWwEAmZ2AwkAZgIFAmRPAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUEFAmRPBQJldAUDbmlsBQNuaWwEAmZGBAJmRwMJAAACBQR0aGlzBQJhQQAABQJkTwMFAmV2CQCUCgIJAQEtAQkAZAIFAmRJBQJmRwAACQCUCgIAAAkBAS0BCQBkAgUCZEkFAmZHBAJkYwgFAmZGAl8xBAJkZAgFAmZGAl8yBAJmSAkBAmRiAwUCZGMFAmRkAAAEAmZoCAUCZkgCXzEEAmNTCAUCZkgCXzIEAmZpCQECZGYCBQJkYQUCY1MDCQAAAgUCZmkFAmZpCQCUCgIJAM4IAgkAzggCCQDOCAIFAmNNBQJmRQUCZnYFAmZoBQJkSQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQQERZ2V0T25lVGtuUkVBRE9OTFkCAmV0AmVkBAJmSQkBAmVzBQkBAmFKAQUCZXQFAmVkBQJhUgUEdW5pdAUEdW5pdAQCZkMIBQJmSQJfMQQCY00IBQJmSQJfMgQCZE8IBQJmSQJfMwQCZnIIBQJmSQJfNAQCZXYIBQJmSQJfNQkAlAoCBQNuaWwJAJUKAwUCZkMFAmRPBQJmcgJkQQETdW5zdGFrZUFuZEdldE9uZVRrbgMCZkoCZnoCZmwEAmZuCgACYUMJAPwHBAUCYXoCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhQwIHQm9vbGVhbgUCYUMJAAIBCQCsAgIJAAMBBQJhQwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZkEDAwkBAmFFAAYJAAACBQJhUQUBawYFAmZuBAJldQkAzAgCAwMJAQEhAQUCZkEGCQECZVABBQJkQQYJAQJhdwECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRBCHBheW1lbnRzAAAGCQECYXcBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJldQUCZXUEAmV0CQECYUoBBQJmegQBTwgFAmRBBmNhbGxlcgQBUAgFAmRBDXRyYW5zYWN0aW9uSWQEAmRhCQECY1QDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmRhBQJkYQQCZksJAPwHBAUCYVgCB3Vuc3Rha2UJAMwIAgkA2AQBBQJhUgkAzAgCBQJmSgUDbmlsBQNuaWwDCQAAAgUCZksFAmZLBAJmTAkBAmVzBQUCZXQFAmZKBQJhUgUBTwUBUAMJAAACBQJmTAUCZkwEAmV2CAUCZkwCXzUEAmZyCAUCZkwCXzQEAmRPCAUCZkwCXzMEAmNNCAUCZkwCXzIEAmZDCAUCZkwCXzEEAmRJAwMJAGYCBQJmbAAACQBmAgUCZmwFAmZDBwkBAmF3AQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmbAUDbmlsAgAFAmZDBAJmRAkA/AcEBQJhegIEYnVybgkAzAgCBQJmSgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJhUgUCZkoFA25pbAMJAAACBQJmRAUCZkQEAmZFCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkQQZjYWxsZXIFAmRJBQJldAUDbmlsBAJmdgMJAGYCBQJkTwAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFBBQJkTwUCZXQFA25pbAUDbmlsBAJmTQQCZkcDCQAAAgUEdGhpcwUCYUEAAAUCZE8DBQJldgkAlAoCCQEBLQEJAGQCBQJkSQUCZkcAAAkAlAoCAAAJAQEtAQkAZAIFAmRJBQJmRwQCZGMIBQJmTQJfMQQCZGQIBQJmTQJfMgQCZk4JAQJkYgMFAmRjBQJkZAAABAJmaAgFAmZOAl8xBAJjUwgFAmZOAl8yBAJmaQkBAmRmAgUCZGEFAmNTAwkAAAIFAmZpBQJmaQkAlAoCCQDOCAIJAM4IAgkAzggCBQJjTQUCZkUFAmZ2BQJmaAUCZEkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEEBA2dldAAEAmN4CQECZHoBBQJkQQQCZk8IBQJjeAJfMQQCY2UIBQJjeAJfMgQCZEMIBQJjeAJfMwQCYk0IBQJjeAJfNAQCY2YIBQJjeAJfNQQCZGEJAQJjVAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZGEFAmRhBAJmUAkA/AcEBQJhegIEYnVybgkAzAgCBQJkQwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiTQUCZEMFA25pbAMJAAACBQJmUAUCZlAEAmZRCQECZGIDCQEBLQEFAmZPCQEBLQEFAmNlAAAEAmZoCAUCZlECXzEEAmNTCAUCZlECXzIEAmZpCQECZGYCBQJkYQUCY1MDCQAAAgUCZmkFAmZpCQDOCAIFAmNmBQJmaAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQQEJZ2V0Tm9MZXNzAgJmUgJmUwQCY3gJAQJkegEFAmRBBAJjZAgFAmN4Al8xBAJjZQgFAmN4Al8yBAJkQwgFAmN4Al8zBAJiTQgFAmN4Al80BAJjZggFAmN4Al81AwkAZgIFAmZSBQJjZAkAAgEJAKwCAgkArAICCQCsAgICHG5vTGVzc1RoZW5BbXRBc3NldCBmYWlsZWQ6ICAJAKQDAQUCY2QCAyA8IAkApAMBBQJmUgMJAGYCBQJmUwUCY2UJAAIBCQCsAgIJAKwCAgkArAICAh1ub0xlc3NUaGVuUHJpY2VBc3NldCBmYWlsZWQ6IAkApAMBBQJjZQIDIDwgCQCkAwEFAmZTBAJkYQkBAmNUAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkYQUCZGEEAmZQCQD8BwQFAmF6AgRidXJuCQDMCAIFAmRDBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJNBQJkQwUDbmlsAwkAAAIFAmZQBQJmUAQCZlQJAQJkYgMJAQEtAQUCY2QJAQEtAQUCY2UAAAQCZmgIBQJmVAJfMQQCY1MIBQJmVAJfMgQCZmkJAQJkZgIFAmRhBQJjUwMJAAACBQJmaQUCZmkJAM4IAgUCY2YFAmZoCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRBAQ11bnN0YWtlQW5kR2V0AQJkSQQCZlUDCQECIT0CCQCQAwEIBQJkQQhwYXltZW50cwAACQACAQIYTm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBgMJAAACBQJmVQUCZlUEAmJECQECYUcABAJiTwkA2QQBCQCRAwIFAmJEBQFuBAJkYQkBAmNUAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkYQUCZGEEAmZLCQD8BwQFAmFYAgd1bnN0YWtlCQDMCAIJANgEAQUCYk8JAMwIAgUCZEkFA25pbAUDbmlsAwkAAAIFAmZLBQJmSwQCY3gJAQJiSwQJANgEAQgFAmRBDXRyYW5zYWN0aW9uSWQJANgEAQUCYk8FAmRJCAUCZEEGY2FsbGVyBAJjZAgFAmN4Al8xBAJjZQgFAmN4Al8yBAJiUgkBDXBhcnNlSW50VmFsdWUBCAUCY3gCXzkEAmNmCAUCY3gDXzEwBAJmVgMDCQECYUUABgkAAAIFAmJSBQFrCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJiUgYDCQAAAgUCZlYFAmZWBAJmUAkA/AcEBQJhegIEYnVybgkAzAgCBQJkSQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiTwUCZEkFA25pbAMJAAACBQJmUAUCZlAEAmZXCQECZGIDCQEBLQEFAmNkCQEBLQEFAmNlAAAEAmZoCAUCZlcCXzEEAmNTCAUCZlcCXzIEAmZpCQECZGYCBQJkYQUCY1MDCQAAAgUCZmkFAmZpCQDOCAIFAmNmBQJmaAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQQETdW5zdGFrZUFuZEdldE5vTGVzcwMCZkoCZlgCZlMEAmZBAwkBAmFFAAYJAAACBQJhUQUBawQCZXUJAMwIAgMJAQEhAQUCZkEGCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZEEIcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJldQUCZXUEAmRhCQECY1QDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmRhBQJkYQQCZksJAPwHBAUCYVgCB3Vuc3Rha2UJAMwIAgkA2AQBBQJhUgkAzAgCBQJmSgUDbmlsBQNuaWwDCQAAAgUCZksFAmZLBAJjeAkBAmJLBAkA2AQBCAUCZEENdHJhbnNhY3Rpb25JZAkA2AQBBQJhUgUCZkoIBQJkQQZjYWxsZXIEAmNkCAUCY3gCXzEEAmNlCAUCY3gCXzIEAmNmCAUCY3gDXzEwBAJmWQkAzAgCAwkAZwIFAmNkBQJmWAYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmWAUDbmlsAgAJAMwIAgMJAGcCBQJjZQUCZlMGCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmUwUDbmlsAgAFA25pbAMJAAACBQJmWQUCZlkEAmZQCQD8BwQFAmF6AgRidXJuCQDMCAIFAmZKBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmFSBQJmSgUDbmlsAwkAAAIFAmZQBQJmUAQCZloJAQJkYgMJAQEtAQUCY2QJAQEtAQUCY2UAAAQCZmgIBQJmWgJfMQQCY1MIBQJmWgJfMgQCZmkJAQJkZgIFAmRhBQJjUwMJAAACBQJmaQUCZmkJAM4IAgUCY2YFAmZoCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRBAQhhY3RpdmF0ZQICZ2ECZ2IDCQECIT0CCQClCAEIBQJkQQZjYWxsZXIJAKUIAQUCYXoJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQEBUgAFAmdhCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFTAAUCZ2IFA25pbAIHc3VjY2VzcwJkQQEKcmVmcmVzaEtMcAAEAmdjCQELdmFsdWVPckVsc2UCCQCfCAEFAVgAAAQCZ2QDCQBnAgkAZQIFBmhlaWdodAUCZ2MFAmFhBQR1bml0CQECYXcBCQC5CQIJAMwIAgkApAMBBQJhYQkAzAgCAi8gYmxvY2tzIGhhdmUgbm90IHBhc3NlZCBzaW5jZSB0aGUgcHJldmlvdXMgY2FsbAUDbmlsAgADCQAAAgUCZ2QFAmdkBAJkbQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUBVwIBMAkBAmF5AQILaW52YWxpZCBrTHAEAmdlCQECZGIDAAAAAAAABAJnZggFAmdlAl8xBAJjUwgFAmdlAl8yBAJkZQMJAQIhPQIFAmRtBQJjUwUCZ2YJAQJhdwECEm5vdGhpbmcgdG8gcmVmcmVzaAkAlAoCBQJkZQkApgMBBQJjUwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQQEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYUcAAmRBARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJicAkAlAoCBQNuaWwJAQJibwEFAmJwAmRBARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJieAJieQJiQwQCZ2cJAQJiQgMFAmJ4BQJieQUCYkMJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJnZwAACQDMCAIJAKYDAQkAkQMCBQJnZwABCQDMCAIJAKYDAQkAkQMCBQJnZwACBQNuaWwCZEEBFHRvWDE4V3JhcHBlclJFQURPTkxZAgF4AXkJAJQKAgUDbmlsCQCmAwEJAQF3AgUBeAUBeQJkQQEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBQgFDCQCUCgIFA25pbAkBAUECCQCnAwEFAUIFAUMCZEEBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYnICYnMJAJQKAgUDbmlsCQCmAwEJAQJicQIJAKcDAQUCYnIJAKcDAQUCYnMCZEEBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJiTAJjaAJjaQJjagJjawJjbAFPAmNtAmNuCQCUCgIFA25pbAkBAmNnCQUCYkwFAmNoBQJjaQUCY2oFAmNrBQJjbAUBTwUCY20FAmNuAmRBASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCYkwCYk0CYk4BTwQCY3gJAQJiSwQFAmJMBQJiTQUCYk4JARFAZXh0ck5hdGl2ZSgxMDYyKQEFAU8JAJQKAgUDbmlsCQCcCgoIBQJjeAJfMQgFAmN4Al8yCAUCY3gCXzMIBQJjeAJfNAgFAmN4Al81CAUCY3gCXzYIBQJjeAJfNwkApgMBCAUCY3gCXzgIBQJjeAJfOQgFAmN4A18xMAJkQQENc3RhdHNSRUFET05MWQAEAmJECQECYUcABAJiTwkA2QQBCQCRAwIFAmJEBQFuBAJnaAkAkQMCBQJiRAUBbwQCZ2kJAJEDAgUCYkQFAXAEAmNxCQCRAwIFAmJEBQFzBAJjcgkAkQMCBQJiRAUBdAQCYkUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBcQQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBcgQCZ2oICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYk8JAKwCAgkArAICAgZBc3NldCAJANgEAQUCYk8CDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJnawkBAmJvAQUCZ2gEAmdsCQECYm8BBQJnaQQCZ20DCQAAAgUCZ2oAAAkAzAgCBQFjCQDMCAIFAWMJAMwIAgUBYwUDbmlsCQECYkIDBQJnawUCZ2wFAmdqBAJiWQAABAJnbgkBAUECCQCRAwIFAmdtAAEFAWEEAmdvCQEBQQIJAJEDAgUCZ20AAgUBYQQCZ3AJAQV2YWx1ZQEJAJoIAgUCYXoJAQJhagEJAKUIAQUEdGhpcwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmdrCQDMCAIJAKQDAQUCZ2wJAMwIAgkApAMBBQJnagkAzAgCCQCkAwEFAmJZCQDMCAIJAKQDAQUCZ24JAMwIAgkApAMBBQJnbwkAzAgCCQCkAwEFAmdwBQNuaWwFAWgCZEEBIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZAQJjaQQCYkQJAQJhRwAEAmJPCQDZBAEJAJEDAgUCYkQFAW4EAmNvCQCRAwIFAmJEBQFvBAJiUAkA2QQBBQJjbwQCY3AJAJEDAgUCYkQFAXAEAmJRCQDZBAEFAmNwBAJiRQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQFxBAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQFyBAJiUgkAkQMCBQJiRAUBbQQCZ2oICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYk8JAKwCAgkArAICAgZBc3NldCAJANgEAQUCYk8CDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJnawkBAmJvAQUCY28EAmdsCQECYm8BBQJjcAQCYnoJAQF3AgUCZ2sFAmJFBAJiQQkBAXcCBQJnbAUCYkYEAmJYAwkAAAIFAmdqAAAFAWMJAQJicQIFAmJBBQJiegQCY3UJAQF3AgUCY2kFAmJFBAJjdgkAvAIDBQJjdQUCYlgFAWIEAmNrCQEBQQIFAmN2BQJiRgQCZEcJAQJjZwkCAACgwh4FAmNpBQJiUAUCY2sFAmJRAgAGBwQCY0YIBQJkRwJfMQQCZ3EIBQJkRwJfMwQCYlQIBQJkRwJfNAQCYlYIBQJkRwJfNQQCYlMIBQJkRwJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY0YJAMwIAgkApAMBCQEBQQIFAmJYBQFhCQDMCAIJAKQDAQUCYlQJAMwIAgkApAMBBQJiVgkAzAgCCQCkAwEFAmJTCQDMCAIFAmJSCQDMCAIJAKQDAQUCY2kJAMwIAgkApAMBBQJjawUDbmlsBQFoAmRBAR9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAQJjawQCYkQJAQJhRwAEAmJPCQDZBAEJAJEDAgUCYkQFAW4EAmNvCQCRAwIFAmJEBQFvBAJiUAkA2QQBBQJjbwQCY3AJAJEDAgUCYkQFAXAEAmJRCQDZBAEFAmNwBAJiRQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQFxBAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQFyBAJiUgkAkQMCBQJiRAUBbQQCZ2oICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYk8JAKwCAgkArAICAgZBc3NldCAJANgEAQUCYk8CDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJncgkBAmJvAQUCY28EAmdzCQECYm8BBQJjcAQCZ3QJAQF3AgUCZ3IFAmJFBAJndQkBAXcCBQJncwUCYkYEAmJYAwkAAAIFAmdqAAAFAWMJAQJicQIFAmd1BQJndAQCY3YJAQF3AgUCY2sFAmJGBAJjdQkAvAIDBQJjdgUBYgUCYlgEAmNpCQEBQQIFAmN1BQJiRQQCZEcJAQJjZwkCAACgwh4FAmNpBQJiUAUCY2sFAmJRAgAGBwQCY0YIBQJkRwJfMQQCZ3EIBQJkRwJfMwQCYlQIBQJkRwJfNAQCYlYIBQJkRwJfNQQCYlMIBQJkRwJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY0YJAMwIAgkApAMBCQEBQQIFAmJYBQFhCQDMCAIJAKQDAQUCYlQJAMwIAgkApAMBBQJiVgkAzAgCCQCkAwEFAmJTCQDMCAIFAmJSCQDMCAIJAKQDAQUCY2kJAMwIAgkApAMBBQJjawUDbmlsBQFoAmRBARNldmFsdWF0ZUdldFJFQURPTkxZAgJndgJndwQCY3gJAQJiSwQCAAUCZ3YFAmd3BQR0aGlzBAJjZAgFAmN4Al8xBAJjZQgFAmN4Al8yBAJiVAgFAmN4Al81BAJiVggFAmN4Al82BAJiUwgFAmN4Al83BAJiWQgFAmN4Al84BAJiUgkBDXBhcnNlSW50VmFsdWUBCAUCY3gCXzkJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjZAkAzAgCCQCkAwEFAmNlCQDMCAIJAKQDAQUCYlQJAMwIAgkApAMBBQJiVgkAzAgCCQCkAwEFAmJTCQDMCAIJAKYDAQUCYlkJAMwIAgkApAMBBQJiUgUDbmlsBQFoAQJneAECZ3kABAJnegQCZEwJAQJlTQADCQABAgUCZEwCCkJ5dGVWZWN0b3IEAmVRBQJkTAUCZVEDCQABAgUCZEwCBFVuaXQIBQJneA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCZEwFAmd4AwkAAQIFAmRMAgVPcmRlcgQCZGkFAmRMBAJnQQkBAmFGAAQCZ0IJAQJkaAEFAmRpBAJhbwgFAmdCAl8xBAJhcAgFAmdCAl8yBAJhcQkA9AMDCAUCZGkJYm9keUJ5dGVzCQCRAwIIBQJkaQZwcm9vZnMAAAgFAmRpD3NlbmRlclB1YmxpY0tleQQCYXIJAPQDAwgFAmRpCWJvZHlCeXRlcwkAkQMCCAUCZGkGcHJvb2ZzAAEFAmdBAwMDBQJhbwUCYXEHBQJhcgcGCQECYW4EBQJhbwUCYXAFAmFxBQJhcgMJAAECBQJkTAIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmVOBQJkTAQCZ0MJAPYDAQkBBXZhbHVlAQgFAmVOBnNjcmlwdAQCZ0QJANsEAQkBBXZhbHVlAQkAnQgCBQJhegkBAmFsAAQCZ0UJAPEHAQUEdGhpcwMDCQAAAgUCZ0QFAmdDCQECIT0CBQJnRQUCZ0MHBgkA9AMDCAUCZ3gJYm9keUJ5dGVzCQCRAwIIBQJneAZwcm9vZnMAAAUCZ3oJAPQDAwgFAmd4CWJvZHlCeXRlcwkAkQMCCAUCZ3gGcHJvb2ZzAAAFAmd6QsYb6g==", "height": 2413083, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BfbNtXP83QcrBGqDv5fASJi9gA7Y2jaNkQfweEzRNDpG Next: 6ybzmt66DPDiEwu2CChng5bbe46KEdSnzYPa5bicC63G Diff:
OldNewDifferences
430430 let du = (cO + dc)
431431 let cR = w(cP, aV)
432432 let dv = (cP + dd)
433- let dw = pow((cO * cP), 0, 5, 1, 18, DOWN)
434- let dx = pow((du * dv), 0, 5, 1, 18, DOWN)
433+ let dw = pow((toBigInt(cO) * toBigInt(cP)), 0, toBigInt(5), 1, 18, DOWN)
434+ let dx = pow((toBigInt(du) * toBigInt(dv)), 0, toBigInt(5), 1, 18, DOWN)
435435 let dy = makeString([toString(dm), toString(dp), toString(dw), toString(dx)], " ")
436436 $Tuple2(dt, dy)
437437 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(1000000000000000000)
77
88 let c = toBigInt(0)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(1)
1313
1414 let f = toBigInt(2)
1515
1616 let g = "WAVES"
1717
1818 let h = "__"
1919
2020 let i = 2
2121
2222 let j = 3
2323
2424 let k = 4
2525
2626 let l = 1
2727
2828 let m = 2
2929
3030 let n = 3
3131
3232 let o = 4
3333
3434 let p = 5
3535
3636 let q = 6
3737
3838 let r = 7
3939
4040 let s = 8
4141
4242 let t = 9
4343
4444 let u = 1
4545
4646 let v = 7
4747
4848 func w (x,y) = fraction(toBigInt(x), b, toBigInt(y))
4949
5050
5151 func z (x,y) = fraction(x, b, y)
5252
5353
5454 func A (B,C) = toInt(fraction(B, toBigInt(C), b))
5555
5656
5757 func D (B,C,E) = toInt(fraction(B, toBigInt(C), b, E))
5858
5959
6060 func F (B) = if ((c > B))
6161 then -(B)
6262 else B
6363
6464
6565 func G () = "%s__factoryContract"
6666
6767
6868 func H () = "%s__managerPublicKey"
6969
7070
7171 func I () = "%s__pendingManagerPublicKey"
7272
7373
7474 func J () = "%s%s__price__last"
7575
7676
7777 func K (L,M) = makeString(["%s%s%d%d__price__history", toString(L), toString(M)], h)
7878
7979
8080 func N (O,P) = ((("%s%s%s__P__" + O) + "__") + P)
8181
8282
8383 func Q (O,P) = ((("%s%s%s__G__" + O) + "__") + P)
8484
8585
8686 func R () = "%s__amountAsset"
8787
8888
8989 func S () = "%s__priceAsset"
9090
9191
9292 let T = "%s__fee"
9393
9494 let U = fraction(10, a, 10000)
9595
9696 let V = valueOrElse(getInteger(this, T), U)
9797
9898 let W = makeString(["%s", "kLp"], h)
9999
100100 let X = makeString(["%s", "kLpRefreshedHeight"], h)
101101
102102 let Y = makeString(["%s", "refreshKLpDelay"], h)
103103
104104 let Z = 30
105105
106106 let aa = valueOrElse(getInteger(this, Y), Z)
107107
108108 func ab () = "%s__factoryConfig"
109109
110110
111111 func ac () = "%s%s__matcher__publicKey"
112112
113113
114114 func ad (ae,af) = (((("%d%d%s__" + ae) + "__") + af) + "__config")
115115
116116
117117 func ag (ah) = ("%s%s%s__mappings__baseAsset2internalId__" + ah)
118118
119119
120120 func ai () = "%s__shutdown"
121121
122122
123123 func aj (ak) = ("%s%s__poolWeight__" + ak)
124124
125125
126126 func al () = "%s__allowedLpScriptHash"
127127
128128
129129 let am = "%s__feeCollectorAddress"
130130
131131 func an (ao,ap,aq,ar) = throw((((((((("order validation failed: orderValid=" + toString(ao)) + " (") + ap) + ")") + " senderValid=") + toString(aq)) + " matcherValid=") + toString(ar)))
132132
133133
134134 func as (at,au) = valueOrErrorMessage(getString(at, au), makeString(["mandatory ", toString(at), ".", au, " is not defined"], ""))
135135
136136
137137 func av (at,au) = valueOrErrorMessage(getInteger(at, au), makeString(["mandatory ", toString(at), ".", au, " is not defined"], ""))
138138
139139
140140 func aw (ax) = throw(makeString(["lp.ride:", ax], " "))
141141
142142
143143 func ay (ax) = makeString(["lp.ride:", ax], " ")
144144
145145
146146 let az = addressFromStringValue(as(this, G()))
147147
148148 let aA = addressFromStringValue(as(az, am))
149149
150150 let aB = {
151151 let aC = invoke(az, "getInFeeREADONLY", [toString(this)], nil)
152152 if ($isInstanceOf(aC, "Int"))
153153 then aC
154154 else throw(($getType(aC) + " couldn't be cast to Int"))
155155 }
156156
157157 let aD = {
158158 let aC = invoke(az, "getOutFeeREADONLY", [toString(this)], nil)
159159 if ($isInstanceOf(aC, "Int"))
160160 then aC
161161 else throw(($getType(aC) + " couldn't be cast to Int"))
162162 }
163163
164164 func aE () = valueOrElse(getBoolean(az, ai()), false)
165165
166166
167167 func aF () = fromBase58String(as(az, ac()))
168168
169169
170170 func aG () = {
171171 let aH = as(this, R())
172172 let aI = as(this, S())
173173 let af = av(az, ag(aI))
174174 let ae = av(az, ag(aH))
175175 split(as(az, ad(toString(ae), toString(af))), h)
176176 }
177177
178178
179179 func aJ (aK) = if ((aK == g))
180180 then unit
181181 else fromBase58String(aK)
182182
183183
184184 func aL (aK) = if ((aK == unit))
185185 then g
186186 else toBase58String(value(aK))
187187
188188
189189 func aM (aN) = $Tuple7(addressFromStringValue(aN[l]), parseIntValue(aN[m]), fromBase58String(aN[n]), aJ(aN[o]), aJ(aN[p]), parseIntValue(aN[q]), parseIntValue(aN[r]))
190190
191191
192192 let aO = aM(aG())
193193
194194 let aP = aO
195195
196196 let aQ = aP._2
197197
198198 let aR = aP._3
199199
200200 let aS = aP._4
201201
202202 let aT = aP._5
203203
204204 let aU = aP._6
205205
206206 let aV = aP._7
207207
208208 func aW () = split(as(az, ab()), h)
209209
210210
211211 let aX = valueOrErrorMessage(addressFromString(aW()[u]), "incorrect staking address")
212212
213213 let aY = valueOrErrorMessage(addressFromString(aW()[v]), "incorrect staking address")
214214
215215 func aZ (ba,bb,bc,bd,be,bf,bg,bh,bi,bj) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(ba), toString(bb), toString(bc), toString(bd), toString(be), toString(bf), toString(bg), toString(bh), toString(bi), toString(bj)], h)
216216
217217
218218 func bk (bl,bm,bn,bd,bg,bh) = makeString(["%d%d%d%d%d%d", toString(bl), toString(bm), toString(bn), toString(bd), toString(bg), toString(bh)], h)
219219
220220
221221 func bo (bp) = if ((bp == "WAVES"))
222222 then wavesBalance(this).available
223223 else assetBalance(this, fromBase58String(bp))
224224
225225
226226 func bq (br,bs) = fraction(br, b, bs)
227227
228228
229229 func bt (br,bs,E) = fraction(br, b, bs, E)
230230
231231
232232 func bu (bv,bw,bx,by) = {
233233 let bz = w(bx, bv)
234234 let bA = w(by, bw)
235235 bq(bA, bz)
236236 }
237237
238238
239239 func bB (bx,by,bC) = {
240240 let bD = aG()
241241 let bE = parseIntValue(bD[q])
242242 let bF = parseIntValue(bD[r])
243243 let bG = bu(bE, bF, bx, by)
244244 let bs = w(bx, bE)
245245 let br = w(by, bF)
246246 let bH = w(bC, a)
247247 let bI = bq(bs, bH)
248248 let bJ = bq(br, bH)
249249 [bG, bI, bJ]
250250 }
251251
252252
253253 func bK (bL,bM,bN,O) = {
254254 let bD = aG()
255255 let bO = bD[n]
256256 let bP = bD[o]
257257 let bQ = bD[p]
258258 let bv = parseIntValue(bD[q])
259259 let bw = parseIntValue(bD[r])
260260 let bR = bD[m]
261261 let bS = valueOrErrorMessage(assetInfo(fromBase58String(bO)), (("Asset " + bO) + " doesn't exist")).quantity
262262 if ((bO != bM))
263263 then throw("Invalid asset passed.")
264264 else {
265265 let bT = bo(bP)
266266 let bU = w(bT, bv)
267267 let bV = bo(bQ)
268268 let bW = w(bV, bw)
269269 let bX = bq(bW, bU)
270270 let bY = A(bX, a)
271271 let bZ = w(bN, a)
272272 let ca = w(bS, a)
273273 let cb = fraction(bU, bZ, ca)
274274 let cc = fraction(bW, bZ, ca)
275275 let cd = D(cb, bv, FLOOR)
276276 let ce = D(cc, bw, FLOOR)
277277 let cf = if ((bL == ""))
278278 then nil
279279 else [ScriptTransfer(O, cd, if ((bP == "WAVES"))
280280 then unit
281281 else fromBase58String(bP)), ScriptTransfer(O, ce, if ((bQ == "WAVES"))
282282 then unit
283283 else fromBase58String(bQ)), StringEntry(Q(toString(O), bL), bk(cd, ce, bN, bY, height, lastBlock.timestamp)), IntegerEntry(J(), bY), IntegerEntry(K(height, lastBlock.timestamp), bY)]
284284 $Tuple10(cd, ce, bP, bQ, bT, bV, bS, bX, bR, cf)
285285 }
286286 }
287287
288288
289289 func cg (bL,ch,ci,cj,ck,cl,O,cm,cn) = {
290290 let bD = aG()
291291 let bO = fromBase58String(bD[n])
292292 let co = bD[o]
293293 let cp = bD[p]
294294 let cq = bD[s]
295295 let cr = bD[t]
296296 let bE = parseIntValue(bD[q])
297297 let bF = parseIntValue(bD[r])
298298 let bR = bD[m]
299299 let bS = valueOrErrorMessage(assetInfo(bO), (("Asset " + toBase58String(bO)) + " doesn't exist")).quantity
300300 let cs = toBase58String(valueOrElse(cj, fromBase58String("WAVES")))
301301 let ct = toBase58String(valueOrElse(cl, fromBase58String("WAVES")))
302302 if (if ((co != cs))
303303 then true
304304 else (cp != ct))
305305 then throw("Invalid amt or price asset passed.")
306306 else {
307307 let bT = if (cm)
308308 then bo(co)
309309 else (bo(co) - ci)
310310 let bV = if (cm)
311311 then bo(cp)
312312 else (bo(cp) - ck)
313313 let cu = w(ci, bE)
314314 let cv = w(ck, bF)
315315 let cw = bq(cv, cu)
316316 let bU = w(bT, bE)
317317 let bW = w(bV, bF)
318318 let cx = if ((bS == 0))
319319 then {
320320 let bX = c
321321 let cy = c
322322 let bH = pow((cu * cv), 0, toBigInt(5), 1, 0, DOWN)
323323 $Tuple5(A(bH, a), A(cu, bE), A(cv, bF), bq((bW + cv), (bU + cu)), cy)
324324 }
325325 else {
326326 let bX = bq(bW, bU)
327327 let cy = fraction(F((bX - cw)), b, bX)
328328 let cz = w(ch, a)
329329 if (if ((bX != c))
330330 then (cy > cz)
331331 else false)
332332 then throw(((("Price slippage " + toString(cy)) + " exceeded the passed limit of ") + toString(cz)))
333333 else {
334334 let ca = w(bS, a)
335335 let cA = fraction(cu, bt(bW, bU, CEILING), b, CEILING)
336336 let cB = fraction(cv, b, bt(bW, bU, FLOOR), CEILING)
337337 let cC = if ((cA > cv))
338338 then $Tuple2(cB, cv)
339339 else $Tuple2(cu, cA)
340340 let cD = cC._1
341341 let cE = cC._2
342342 let bH = fraction(ca, cE, bW, FLOOR)
343343 $Tuple5(D(bH, a, FLOOR), D(cD, bE, CEILING), D(cE, bF, CEILING), bX, cy)
344344 }
345345 }
346346 let cF = cx._1
347347 let cG = cx._2
348348 let cH = cx._3
349349 let bY = A(cx._4, a)
350350 let cI = A(cx._5, a)
351351 if ((0 >= cF))
352352 then throw("Invalid calculations. LP calculated is less than zero.")
353353 else {
354354 let cJ = if (!(cn))
355355 then 0
356356 else cF
357357 let cK = (ci - cG)
358358 let cL = (ck - cH)
359359 let cM = [IntegerEntry(J(), bY), IntegerEntry(K(height, lastBlock.timestamp), bY), StringEntry(N(O, bL), aZ(cG, cH, cJ, bY, ch, cI, height, lastBlock.timestamp, cK, cL))]
360360 $Tuple13(cF, cJ, bY, bT, bV, bS, bO, bR, cM, cK, cL, cj, cl)
361361 }
362362 }
363363 }
364364
365365
366366 func cN (cO,cP,bS) = {
367367 let cQ = z(cO, toBigInt(aU))
368368 let cR = z(cP, toBigInt(aV))
369369 let cS = fraction(pow((cQ * cR), 0, toBigInt(5), 1, 18, DOWN), e, bS)
370370 if ((bS == d))
371371 then d
372372 else cS
373373 }
374374
375375
376376 func cT (cU,cV,cW) = {
377377 let cX = (toBigInt(bo(aL(aS))) - cU)
378378 let cY = (toBigInt(bo(aL(aT))) - cV)
379379 let cZ = (toBigInt(value(assetInfo(aR)).quantity) - cW)
380380 let da = cN(cX, cY, cZ)
381381 da
382382 }
383383
384384
385385 func db (dc,dd,cW) = {
386386 let cX = (bo(aL(aS)) + dc)
387387 let cY = (bo(aL(aT)) + dd)
388388 let cZ = (value(assetInfo(aR)).quantity + cW)
389389 let cS = cN(toBigInt(cX), toBigInt(cY), toBigInt(cZ))
390390 let de = [IntegerEntry(X, height), StringEntry(W, toString(cS))]
391391 $Tuple2(de, cS)
392392 }
393393
394394
395395 func df (dg,cS) = if ((cS >= dg))
396396 then true
397397 else aw(makeString(["updated KLp lower than current KLp", toString(dg), toString(cS)], " "))
398398
399399
400400 func dh (di) = {
401401 let dj = di.amount
402402 let dk = fraction(di.amount, di.price, a, FLOOR)
403403 let dl = if ((di.orderType == Buy))
404404 then $Tuple2(dj, -(dk))
405405 else $Tuple2(-(dj), dk)
406406 let dc = dl._1
407407 let dd = dl._2
408408 if (if (if (aE())
409409 then true
410410 else (aQ == j))
411411 then true
412412 else (aQ == k))
413413 then throw("Exchange operations disabled")
414414 else if (if ((di.assetPair.amountAsset != aS))
415415 then true
416416 else (di.assetPair.priceAsset != aT))
417417 then throw("Wrong order assets.")
418418 else {
419419 let dm = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, W), ay("kLp is required"))), ay("invalid kLp"))
420420 let dn = db(dc, dd, 0)
421421 let do = dn._1
422422 let dp = dn._2
423423 let dq = db(0, 0, 0)
424424 let dr = dq._1
425425 let ds = dq._2
426426 let dt = (dp >= dm)
427427 let cO = bo(aL(aS))
428428 let cP = bo(aL(aT))
429429 let cQ = w(cO, aU)
430430 let du = (cO + dc)
431431 let cR = w(cP, aV)
432432 let dv = (cP + dd)
433- let dw = pow((cO * cP), 0, 5, 1, 18, DOWN)
434- let dx = pow((du * dv), 0, 5, 1, 18, DOWN)
433+ let dw = pow((toBigInt(cO) * toBigInt(cP)), 0, toBigInt(5), 1, 18, DOWN)
434+ let dx = pow((toBigInt(du) * toBigInt(dv)), 0, toBigInt(5), 1, 18, DOWN)
435435 let dy = makeString([toString(dm), toString(dp), toString(dw), toString(dx)], " ")
436436 $Tuple2(dt, dy)
437437 }
438438 }
439439
440440
441441 func dz (dA) = if ((size(dA.payments) != 1))
442442 then throw("exactly 1 payment is expected")
443443 else {
444444 let dB = value(dA.payments[0])
445445 let bM = value(dB.assetId)
446446 let dC = dB.amount
447447 let cx = bK(toBase58String(dA.transactionId), toBase58String(bM), dC, dA.caller)
448448 let cd = cx._1
449449 let ce = cx._2
450450 let bR = parseIntValue(cx._9)
451451 let cf = cx._10
452452 if (if (aE())
453453 then true
454454 else (bR == k))
455455 then throw(("Get operation is blocked by admin. Status = " + toString(bR)))
456456 else $Tuple5(cd, ce, dC, bM, cf)
457457 }
458458
459459
460460 func dD (dA,ch,cn) = if ((size(dA.payments) != 2))
461461 then throw("exactly 2 payments are expected")
462462 else {
463463 let dE = value(dA.payments[0])
464464 let dF = value(dA.payments[1])
465465 let dG = cg(toBase58String(dA.transactionId), ch, dE.amount, dE.assetId, dF.amount, dF.assetId, toString(dA.caller), false, cn)
466466 let bR = parseIntValue(dG._8)
467467 if (if (if (aE())
468468 then true
469469 else (bR == i))
470470 then true
471471 else (bR == k))
472472 then throw(("Put operation is blocked by admin. Status = " + toString(bR)))
473473 else dG
474474 }
475475
476476
477477 func dH (dI) = {
478478 let dJ = invoke(az, "emit", [dI], nil)
479479 if ((dJ == dJ))
480480 then {
481481 let dK = {
482482 let dL = dJ
483483 if ($isInstanceOf(dL, "Address"))
484484 then {
485485 let dM = dL
486486 invoke(dM, "emit", [dI], nil)
487487 }
488488 else unit
489489 }
490490 if ((dK == dK))
491491 then dI
492492 else throw("Strict value is not equal to itself.")
493493 }
494494 else throw("Strict value is not equal to itself.")
495495 }
496496
497497
498498 func dN (dI,V) = {
499499 let dO = if ((V == 0))
500500 then 0
501501 else fraction(dI, V, a)
502502 $Tuple2((dI - dO), dO)
503503 }
504504
505505
506506 func dP (dQ,dR,O,P) = {
507507 let dS = (P == unit)
508508 let dT = bo(aL(aS))
509509 let dU = bo(aL(aT))
510510 let dV = if ((dR == aS))
511511 then true
512512 else if ((dR == aT))
513513 then false
514514 else aw("invalid asset")
515515 let dW = if (dS)
516516 then $Tuple2(dT, dU)
517517 else if (dV)
518518 then $Tuple2((dT - dQ), dU)
519519 else $Tuple2(dT, (dU - dQ))
520520 let dX = dW._1
521521 let dY = dW._2
522522 let dZ = if (dV)
523523 then $Tuple2(dQ, 0)
524524 else $Tuple2(0, dQ)
525525 let ea = dZ._1
526526 let eb = dZ._2
527527 let dj = dN(ea, aB)._1
528528 let dk = dN(eb, aB)._1
529529 let ec = dN(dQ, aB)
530530 let ed = ec._1
531531 let dO = ec._2
532532 let du = (dX + dj)
533533 let dv = (dY + dk)
534534 let ee = bq(w(dv, aV), w(du, aU))
535535 let ef = A(ee, a)
536536 let eg = if (dV)
537537 then dX
538538 else dY
539539 let eh = toBigInt(eg)
540540 let ei = toBigInt(valueOrErrorMessage(assetInfo(aR), (("asset " + toBase58String(aR)) + " doesn't exist")).quantity)
541541 let ej = if ((ei > d))
542542 then true
543543 else aw("initial deposit requires all coins")
544544 if ((ej == ej))
545545 then {
546546 let ek = toBigInt(ed)
547547 let el = max([0, toInt(((ei * (sqrtBigInt((b + ((ek * b) / eh)), 18, 18, DOWN) - b)) / b))])
548548 let cM = if (dS)
549549 then nil
550550 else [IntegerEntry(J(), ef), IntegerEntry(K(height, lastBlock.timestamp), ef), StringEntry(N(toString(value(O)), toBase58String(value(P))), aZ(ea, eb, el, ef, 0, 0, height, lastBlock.timestamp, 0, 0))]
551551 let em = bq(w(dY, aV), w(dX, aU))
552552 let en = A(em, a)
553553 let eo = {
554554 let ep = if (dV)
555555 then $Tuple2(ea, dX)
556556 else $Tuple2(eb, dY)
557557 let dI = ep._1
558558 let eq = ep._2
559559 let er = toInt(fraction(ei, toBigInt((dI / 2)), toBigInt(eq)))
560560 fraction((el - er), a, er)
561561 }
562562 $Tuple5(el, cM, dO, eo, dV)
563563 }
564564 else throw("Strict value is not equal to itself.")
565565 }
566566
567567
568568 func es (et,ed,dR,O,P) = {
569569 let dS = (P == unit)
570570 let bD = aG()
571571 let bE = parseIntValue(bD[q])
572572 let bF = parseIntValue(bD[r])
573573 let eu = [if ((dR == aR))
574574 then true
575575 else aw("invalid lp asset")]
576576 if ((eu == eu))
577577 then {
578578 let ev = if ((et == aS))
579579 then true
580580 else if ((et == aT))
581581 then false
582582 else aw("invalid asset")
583583 let ew = if (ev)
584584 then toBigInt(bo(aL(aS)))
585585 else toBigInt(bo(aL(aT)))
586586 let ex = if (ev)
587587 then bE
588588 else bF
589589 let ey = bo(aL(aS))
590590 let ez = bo(aL(aT))
591591 let eA = if (ev)
592592 then ey
593593 else ez
594594 let eB = toBigInt(eA)
595595 let ei = toBigInt(valueOrErrorMessage(assetInfo(aR), (("asset " + toBase58String(aR)) + " doesn't exist")).quantity)
596596 let eC = toBigInt(ed)
597597 let eD = max([0, toInt(((ew * (b - pow((b - ((eC * b) / ei)), 18, f, 0, 18, DOWN))) / b))])
598598 let eE = dN(eD, aD)
599599 let eF = eE._1
600600 let dO = eE._2
601601 let eG = if (ev)
602602 then $Tuple4(eF, 0, (ey - eD), ez)
603603 else $Tuple4(0, eF, ey, (ez - eD))
604604 let eH = eG._1
605605 let eI = eG._2
606606 let eJ = eG._3
607607 let eK = eG._4
608608 let ee = bq(w(eK, aV), w(eJ, aU))
609609 let ef = A(ee, a)
610610 let cM = if (dS)
611611 then nil
612612 else [StringEntry(Q(toString(value(O)), toBase58String(value(P))), bk(eH, eI, ed, ef, height, lastBlock.timestamp)), IntegerEntry(J(), ef), IntegerEntry(K(height, lastBlock.timestamp), ef)]
613613 let em = bq(w(ez, aV), w(ey, aU))
614614 let en = A(em, a)
615615 let eo = {
616616 let eL = (toInt(fraction(ew, eC, ei)) * 2)
617617 fraction((eF - eL), a, eL)
618618 }
619619 $Tuple5(eF, cM, dO, eo, ev)
620620 }
621621 else throw("Strict value is not equal to itself.")
622622 }
623623
624624
625625 func eM () = {
626626 let dL = getString(H())
627627 if ($isInstanceOf(dL, "String"))
628628 then {
629629 let eN = dL
630630 fromBase58String(eN)
631631 }
632632 else if ($isInstanceOf(dL, "Unit"))
633633 then unit
634634 else throw("Match error")
635635 }
636636
637637
638638 func eO () = {
639639 let dL = getString(I())
640640 if ($isInstanceOf(dL, "String"))
641641 then {
642642 let eN = dL
643643 fromBase58String(eN)
644644 }
645645 else if ($isInstanceOf(dL, "Unit"))
646646 then unit
647647 else throw("Match error")
648648 }
649649
650650
651651 func eP (dA) = {
652652 let dL = eM()
653653 if ($isInstanceOf(dL, "ByteVector"))
654654 then {
655655 let eQ = dL
656656 (dA.callerPublicKey == eQ)
657657 }
658658 else if ($isInstanceOf(dL, "Unit"))
659659 then (dA.caller == this)
660660 else throw("Match error")
661661 }
662662
663663
664664 func eR (dA) = {
665665 let eS = throw("Permission denied")
666666 let dL = eM()
667667 if ($isInstanceOf(dL, "ByteVector"))
668668 then {
669669 let eQ = dL
670670 if ((dA.callerPublicKey == eQ))
671671 then true
672672 else eS
673673 }
674674 else if ($isInstanceOf(dL, "Unit"))
675675 then if ((dA.caller == this))
676676 then true
677677 else eS
678678 else throw("Match error")
679679 }
680680
681681
682682 @Callable(dA)
683683 func setManager (eT) = {
684684 let eU = eR(dA)
685685 if ((eU == eU))
686686 then {
687687 let eV = fromBase58String(eT)
688688 if ((eV == eV))
689689 then [StringEntry(I(), eT)]
690690 else throw("Strict value is not equal to itself.")
691691 }
692692 else throw("Strict value is not equal to itself.")
693693 }
694694
695695
696696
697697 @Callable(dA)
698698 func confirmManager () = {
699699 let eW = eO()
700700 let eX = if (isDefined(eW))
701701 then true
702702 else throw("No pending manager")
703703 if ((eX == eX))
704704 then {
705705 let eY = if ((dA.callerPublicKey == value(eW)))
706706 then true
707707 else throw("You are not pending manager")
708708 if ((eY == eY))
709709 then [StringEntry(H(), toBase58String(value(eW))), DeleteEntry(I())]
710710 else throw("Strict value is not equal to itself.")
711711 }
712712 else throw("Strict value is not equal to itself.")
713713 }
714714
715715
716716
717717 @Callable(dA)
718718 func put (ch,eZ) = if ((0 > ch))
719719 then throw("Invalid slippageTolerance passed")
720720 else {
721721 let dG = dD(dA, ch, true)
722722 let cJ = dG._2
723723 let bO = dG._7
724724 let cf = dG._9
725725 let cK = dG._10
726726 let cL = dG._11
727727 let fa = dG._12
728728 let fb = dG._13
729729 let dE = toBigInt(value(dA.payments[0]).amount)
730730 let dF = toBigInt(value(dA.payments[1]).amount)
731731 let da = cT(dE, dF, toBigInt(0))
732732 if ((da == da))
733733 then {
734734 let dJ = invoke(az, "emit", [cJ], nil)
735735 if ((dJ == dJ))
736736 then {
737737 let dK = {
738738 let dL = dJ
739739 if ($isInstanceOf(dL, "Address"))
740740 then {
741741 let dM = dL
742742 invoke(dM, "emit", [cJ], nil)
743743 }
744744 else unit
745745 }
746746 if ((dK == dK))
747747 then {
748748 let fc = if ((cK > 0))
749749 then invoke(aY, "put", nil, [AttachedPayment(fa, cK)])
750750 else nil
751751 if ((fc == fc))
752752 then {
753753 let fd = if ((cL > 0))
754754 then invoke(aY, "put", nil, [AttachedPayment(fb, cL)])
755755 else nil
756756 if ((fd == fd))
757757 then {
758758 let fe = if (eZ)
759759 then {
760760 let ff = invoke(aX, "stake", nil, [AttachedPayment(bO, cJ)])
761761 if ((ff == ff))
762762 then nil
763763 else throw("Strict value is not equal to itself.")
764764 }
765765 else [ScriptTransfer(dA.caller, cJ, bO)]
766766 let fg = db(0, 0, 0)
767767 if ((fg == fg))
768768 then {
769769 let cS = fg._2
770770 let fh = fg._1
771771 let fi = df(da, cS)
772772 if ((fi == fi))
773773 then ((cf ++ fe) ++ fh)
774774 else throw("Strict value is not equal to itself.")
775775 }
776776 else throw("Strict value is not equal to itself.")
777777 }
778778 else throw("Strict value is not equal to itself.")
779779 }
780780 else throw("Strict value is not equal to itself.")
781781 }
782782 else throw("Strict value is not equal to itself.")
783783 }
784784 else throw("Strict value is not equal to itself.")
785785 }
786786 else throw("Strict value is not equal to itself.")
787787 }
788788
789789
790790
791791 @Callable(dA)
792792 func putForFree (fj) = if ((0 > fj))
793793 then throw("Invalid value passed")
794794 else {
795795 let dG = dD(dA, fj, false)
796796 let cf = dG._9
797797 let dE = toBigInt(value(dA.payments[0]).amount)
798798 let dF = toBigInt(value(dA.payments[1]).amount)
799799 let da = cT(dE, dF, toBigInt(0))
800800 if ((da == da))
801801 then {
802802 let fk = db(0, 0, 0)
803803 let fh = fk._1
804804 let cS = fk._2
805805 let fi = df(da, cS)
806806 if ((fi == fi))
807807 then (cf ++ fh)
808808 else throw("Strict value is not equal to itself.")
809809 }
810810 else throw("Strict value is not equal to itself.")
811811 }
812812
813813
814814
815815 @Callable(dA)
816816 func putOneTkn (fl,fm) = {
817817 let fn = {
818818 let aC = invoke(az, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
819819 if ($isInstanceOf(aC, "Boolean"))
820820 then aC
821821 else throw(($getType(aC) + " couldn't be cast to Boolean"))
822822 }
823823 let fo = if (if (if (aE())
824824 then true
825825 else (aQ == i))
826826 then true
827827 else (aQ == k))
828828 then true
829829 else fn
830830 let eu = [if (if (!(fo))
831831 then true
832832 else eP(dA))
833833 then true
834834 else aw("put operation is blocked by admin"), if ((size(dA.payments) == 1))
835835 then true
836836 else aw("exactly 1 payment are expected")]
837837 if ((eu == eu))
838838 then {
839839 let fp = dA.payments[0]
840840 let dR = fp.assetId
841841 let dQ = fp.amount
842842 let da = if ((dR == aS))
843843 then cT(toBigInt(dQ), toBigInt(0), toBigInt(0))
844844 else if ((dR == aT))
845845 then cT(toBigInt(0), toBigInt(dQ), toBigInt(0))
846846 else aw("payment asset is not supported")
847847 if ((da == da))
848848 then {
849849 let O = dA.caller
850850 let P = dA.transactionId
851851 let fq = dP(dQ, dR, O, P)
852852 if ((fq == fq))
853853 then {
854854 let dV = fq._5
855855 let fr = fq._4
856856 let dO = fq._3
857857 let cM = fq._2
858858 let fs = fq._1
859859 let ft = if (if ((fl > 0))
860860 then (fl > fs)
861861 else false)
862862 then aw(makeString(["amount to receive is less than ", toString(fl)], ""))
863863 else fs
864864 let dJ = dH(ft)
865865 if ((dJ == dJ))
866866 then {
867867 let fe = if (fm)
868868 then {
869869 let fu = invoke(aX, "stake", nil, [AttachedPayment(aR, ft)])
870870 if ((fu == fu))
871871 then nil
872872 else throw("Strict value is not equal to itself.")
873873 }
874874 else [ScriptTransfer(dA.caller, ft, aR)]
875875 let fv = if ((dO > 0))
876876 then [ScriptTransfer(aA, dO, dR)]
877877 else nil
878878 let fw = if ((this == aA))
879879 then $Tuple2(0, 0)
880880 else if (dV)
881881 then $Tuple2(-(dO), 0)
882882 else $Tuple2(0, -(dO))
883883 let dc = fw._1
884884 let dd = fw._2
885885 let fx = db(dc, dd, 0)
886886 let fh = fx._1
887887 let cS = fx._2
888888 let dm = value(getString(W))
889889 let fi = df(da, cS)
890890 if ((fi == fi))
891891 then $Tuple2((((cM ++ fe) ++ fv) ++ fh), ft)
892892 else throw("Strict value is not equal to itself.")
893893 }
894894 else throw("Strict value is not equal to itself.")
895895 }
896896 else throw("Strict value is not equal to itself.")
897897 }
898898 else throw("Strict value is not equal to itself.")
899899 }
900900 else throw("Strict value is not equal to itself.")
901901 }
902902
903903
904904
905905 @Callable(dA)
906906 func putOneTknREADONLY (dR,dQ) = {
907907 let fy = dP(dQ, aJ(dR), unit, unit)
908908 let fs = fy._1
909909 let cM = fy._2
910910 let dO = fy._3
911911 let fr = fy._4
912912 let dV = fy._5
913913 $Tuple2(nil, $Tuple3(fs, dO, fr))
914914 }
915915
916916
917917
918918 @Callable(dA)
919919 func getOneTkn (fz,fl) = {
920920 let fn = {
921921 let aC = invoke(az, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
922922 if ($isInstanceOf(aC, "Boolean"))
923923 then aC
924924 else throw(($getType(aC) + " couldn't be cast to Boolean"))
925925 }
926926 let fA = if (if (aE())
927927 then true
928928 else (aQ == k))
929929 then true
930930 else fn
931931 let eu = [if (if (!(fA))
932932 then true
933933 else eP(dA))
934934 then true
935935 else aw("get operation is blocked by admin"), if ((size(dA.payments) == 1))
936936 then true
937937 else aw("exactly 1 payment are expected")]
938938 if ((eu == eu))
939939 then {
940940 let et = aJ(fz)
941941 let fp = dA.payments[0]
942942 let dR = fp.assetId
943943 let ed = fp.amount
944944 let da = cT(toBigInt(0), toBigInt(0), toBigInt(0))
945945 if ((da == da))
946946 then {
947947 let O = dA.caller
948948 let P = dA.transactionId
949949 let fB = es(et, ed, dR, O, P)
950950 if ((fB == fB))
951951 then {
952952 let ev = fB._5
953953 let fr = fB._4
954954 let dO = fB._3
955955 let cM = fB._2
956956 let fC = fB._1
957957 let dI = if (if ((fl > 0))
958958 then (fl > fC)
959959 else false)
960960 then aw(makeString(["amount to receive is less than ", toString(fl)], ""))
961961 else fC
962962 let fD = invoke(az, "burn", [ed], [AttachedPayment(dR, ed)])
963963 if ((fD == fD))
964964 then {
965965 let fE = [ScriptTransfer(O, dI, et)]
966966 let fv = if ((dO > 0))
967967 then [ScriptTransfer(aA, dO, et)]
968968 else nil
969969 let fF = {
970970 let fG = if ((this == aA))
971971 then 0
972972 else dO
973973 if (ev)
974974 then $Tuple2(-((dI + fG)), 0)
975975 else $Tuple2(0, -((dI + fG)))
976976 }
977977 let dc = fF._1
978978 let dd = fF._2
979979 let fH = db(dc, dd, 0)
980980 let fh = fH._1
981981 let cS = fH._2
982982 let fi = df(da, cS)
983983 if ((fi == fi))
984984 then $Tuple2((((cM ++ fE) ++ fv) ++ fh), dI)
985985 else throw("Strict value is not equal to itself.")
986986 }
987987 else throw("Strict value is not equal to itself.")
988988 }
989989 else throw("Strict value is not equal to itself.")
990990 }
991991 else throw("Strict value is not equal to itself.")
992992 }
993993 else throw("Strict value is not equal to itself.")
994994 }
995995
996996
997997
998998 @Callable(dA)
999999 func getOneTknREADONLY (et,ed) = {
10001000 let fI = es(aJ(et), ed, aR, unit, unit)
10011001 let fC = fI._1
10021002 let cM = fI._2
10031003 let dO = fI._3
10041004 let fr = fI._4
10051005 let ev = fI._5
10061006 $Tuple2(nil, $Tuple3(fC, dO, fr))
10071007 }
10081008
10091009
10101010
10111011 @Callable(dA)
10121012 func unstakeAndGetOneTkn (fJ,fz,fl) = {
10131013 let fn = {
10141014 let aC = invoke(az, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10151015 if ($isInstanceOf(aC, "Boolean"))
10161016 then aC
10171017 else throw(($getType(aC) + " couldn't be cast to Boolean"))
10181018 }
10191019 let fA = if (if (aE())
10201020 then true
10211021 else (aQ == k))
10221022 then true
10231023 else fn
10241024 let eu = [if (if (!(fA))
10251025 then true
10261026 else eP(dA))
10271027 then true
10281028 else aw("get operation is blocked by admin"), if ((size(dA.payments) == 0))
10291029 then true
10301030 else aw("no payments are expected")]
10311031 if ((eu == eu))
10321032 then {
10331033 let et = aJ(fz)
10341034 let O = dA.caller
10351035 let P = dA.transactionId
10361036 let da = cT(toBigInt(0), toBigInt(0), toBigInt(0))
10371037 if ((da == da))
10381038 then {
10391039 let fK = invoke(aX, "unstake", [toBase58String(aR), fJ], nil)
10401040 if ((fK == fK))
10411041 then {
10421042 let fL = es(et, fJ, aR, O, P)
10431043 if ((fL == fL))
10441044 then {
10451045 let ev = fL._5
10461046 let fr = fL._4
10471047 let dO = fL._3
10481048 let cM = fL._2
10491049 let fC = fL._1
10501050 let dI = if (if ((fl > 0))
10511051 then (fl > fC)
10521052 else false)
10531053 then aw(makeString(["amount to receive is less than ", toString(fl)], ""))
10541054 else fC
10551055 let fD = invoke(az, "burn", [fJ], [AttachedPayment(aR, fJ)])
10561056 if ((fD == fD))
10571057 then {
10581058 let fE = [ScriptTransfer(dA.caller, dI, et)]
10591059 let fv = if ((dO > 0))
10601060 then [ScriptTransfer(aA, dO, et)]
10611061 else nil
10621062 let fM = {
10631063 let fG = if ((this == aA))
10641064 then 0
10651065 else dO
10661066 if (ev)
10671067 then $Tuple2(-((dI + fG)), 0)
10681068 else $Tuple2(0, -((dI + fG)))
10691069 }
10701070 let dc = fM._1
10711071 let dd = fM._2
10721072 let fN = db(dc, dd, 0)
10731073 let fh = fN._1
10741074 let cS = fN._2
10751075 let fi = df(da, cS)
10761076 if ((fi == fi))
10771077 then $Tuple2((((cM ++ fE) ++ fv) ++ fh), dI)
10781078 else throw("Strict value is not equal to itself.")
10791079 }
10801080 else throw("Strict value is not equal to itself.")
10811081 }
10821082 else throw("Strict value is not equal to itself.")
10831083 }
10841084 else throw("Strict value is not equal to itself.")
10851085 }
10861086 else throw("Strict value is not equal to itself.")
10871087 }
10881088 else throw("Strict value is not equal to itself.")
10891089 }
10901090
10911091
10921092
10931093 @Callable(dA)
10941094 func get () = {
10951095 let cx = dz(dA)
10961096 let fO = cx._1
10971097 let ce = cx._2
10981098 let dC = cx._3
10991099 let bM = cx._4
11001100 let cf = cx._5
11011101 let da = cT(toBigInt(0), toBigInt(0), toBigInt(0))
11021102 if ((da == da))
11031103 then {
11041104 let fP = invoke(az, "burn", [dC], [AttachedPayment(bM, dC)])
11051105 if ((fP == fP))
11061106 then {
11071107 let fQ = db(-(fO), -(ce), 0)
11081108 let fh = fQ._1
11091109 let cS = fQ._2
11101110 let fi = df(da, cS)
11111111 if ((fi == fi))
11121112 then (cf ++ fh)
11131113 else throw("Strict value is not equal to itself.")
11141114 }
11151115 else throw("Strict value is not equal to itself.")
11161116 }
11171117 else throw("Strict value is not equal to itself.")
11181118 }
11191119
11201120
11211121
11221122 @Callable(dA)
11231123 func getNoLess (fR,fS) = {
11241124 let cx = dz(dA)
11251125 let cd = cx._1
11261126 let ce = cx._2
11271127 let dC = cx._3
11281128 let bM = cx._4
11291129 let cf = cx._5
11301130 if ((fR > cd))
11311131 then throw(((("noLessThenAmtAsset failed: " + toString(cd)) + " < ") + toString(fR)))
11321132 else if ((fS > ce))
11331133 then throw(((("noLessThenPriceAsset failed: " + toString(ce)) + " < ") + toString(fS)))
11341134 else {
11351135 let da = cT(toBigInt(0), toBigInt(0), toBigInt(0))
11361136 if ((da == da))
11371137 then {
11381138 let fP = invoke(az, "burn", [dC], [AttachedPayment(bM, dC)])
11391139 if ((fP == fP))
11401140 then {
11411141 let fT = db(-(cd), -(ce), 0)
11421142 let fh = fT._1
11431143 let cS = fT._2
11441144 let fi = df(da, cS)
11451145 if ((fi == fi))
11461146 then (cf ++ fh)
11471147 else throw("Strict value is not equal to itself.")
11481148 }
11491149 else throw("Strict value is not equal to itself.")
11501150 }
11511151 else throw("Strict value is not equal to itself.")
11521152 }
11531153 }
11541154
11551155
11561156
11571157 @Callable(dA)
11581158 func unstakeAndGet (dI) = {
11591159 let fU = if ((size(dA.payments) != 0))
11601160 then throw("No payments are expected")
11611161 else true
11621162 if ((fU == fU))
11631163 then {
11641164 let bD = aG()
11651165 let bO = fromBase58String(bD[n])
11661166 let da = cT(toBigInt(0), toBigInt(0), toBigInt(0))
11671167 if ((da == da))
11681168 then {
11691169 let fK = invoke(aX, "unstake", [toBase58String(bO), dI], nil)
11701170 if ((fK == fK))
11711171 then {
11721172 let cx = bK(toBase58String(dA.transactionId), toBase58String(bO), dI, dA.caller)
11731173 let cd = cx._1
11741174 let ce = cx._2
11751175 let bR = parseIntValue(cx._9)
11761176 let cf = cx._10
11771177 let fV = if (if (aE())
11781178 then true
11791179 else (bR == k))
11801180 then throw(("Get operation is blocked by admin. Status = " + toString(bR)))
11811181 else true
11821182 if ((fV == fV))
11831183 then {
11841184 let fP = invoke(az, "burn", [dI], [AttachedPayment(bO, dI)])
11851185 if ((fP == fP))
11861186 then {
11871187 let fW = db(-(cd), -(ce), 0)
11881188 let fh = fW._1
11891189 let cS = fW._2
11901190 let fi = df(da, cS)
11911191 if ((fi == fi))
11921192 then (cf ++ fh)
11931193 else throw("Strict value is not equal to itself.")
11941194 }
11951195 else throw("Strict value is not equal to itself.")
11961196 }
11971197 else throw("Strict value is not equal to itself.")
11981198 }
11991199 else throw("Strict value is not equal to itself.")
12001200 }
12011201 else throw("Strict value is not equal to itself.")
12021202 }
12031203 else throw("Strict value is not equal to itself.")
12041204 }
12051205
12061206
12071207
12081208 @Callable(dA)
12091209 func unstakeAndGetNoLess (fJ,fX,fS) = {
12101210 let fA = if (aE())
12111211 then true
12121212 else (aQ == k)
12131213 let eu = [if (!(fA))
12141214 then true
12151215 else throw("get operation is blocked by admin"), if ((size(dA.payments) == 0))
12161216 then true
12171217 else throw("no payments are expected")]
12181218 if ((eu == eu))
12191219 then {
12201220 let da = cT(toBigInt(0), toBigInt(0), toBigInt(0))
12211221 if ((da == da))
12221222 then {
12231223 let fK = invoke(aX, "unstake", [toBase58String(aR), fJ], nil)
12241224 if ((fK == fK))
12251225 then {
12261226 let cx = bK(toBase58String(dA.transactionId), toBase58String(aR), fJ, dA.caller)
12271227 let cd = cx._1
12281228 let ce = cx._2
12291229 let cf = cx._10
12301230 let fY = [if ((cd >= fX))
12311231 then true
12321232 else throw(makeString(["amount asset amount to receive is less than ", toString(fX)], "")), if ((ce >= fS))
12331233 then true
12341234 else throw(makeString(["price asset amount to receive is less than ", toString(fS)], ""))]
12351235 if ((fY == fY))
12361236 then {
12371237 let fP = invoke(az, "burn", [fJ], [AttachedPayment(aR, fJ)])
12381238 if ((fP == fP))
12391239 then {
12401240 let fZ = db(-(cd), -(ce), 0)
12411241 let fh = fZ._1
12421242 let cS = fZ._2
12431243 let fi = df(da, cS)
12441244 if ((fi == fi))
12451245 then (cf ++ fh)
12461246 else throw("Strict value is not equal to itself.")
12471247 }
12481248 else throw("Strict value is not equal to itself.")
12491249 }
12501250 else throw("Strict value is not equal to itself.")
12511251 }
12521252 else throw("Strict value is not equal to itself.")
12531253 }
12541254 else throw("Strict value is not equal to itself.")
12551255 }
12561256 else throw("Strict value is not equal to itself.")
12571257 }
12581258
12591259
12601260
12611261 @Callable(dA)
12621262 func activate (ga,gb) = if ((toString(dA.caller) != toString(az)))
12631263 then throw("permissions denied")
12641264 else $Tuple2([StringEntry(R(), ga), StringEntry(S(), gb)], "success")
12651265
12661266
12671267
12681268 @Callable(dA)
12691269 func refreshKLp () = {
12701270 let gc = valueOrElse(getInteger(X), 0)
12711271 let gd = if (((height - gc) >= aa))
12721272 then unit
12731273 else aw(makeString([toString(aa), " blocks have not passed since the previous call"], ""))
12741274 if ((gd == gd))
12751275 then {
12761276 let dm = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, W), "0")), ay("invalid kLp"))
12771277 let ge = db(0, 0, 0)
12781278 let gf = ge._1
12791279 let cS = ge._2
12801280 let de = if ((dm != cS))
12811281 then gf
12821282 else aw("nothing to refresh")
12831283 $Tuple2(de, toString(cS))
12841284 }
12851285 else throw("Strict value is not equal to itself.")
12861286 }
12871287
12881288
12891289
12901290 @Callable(dA)
12911291 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aG())
12921292
12931293
12941294
12951295 @Callable(dA)
12961296 func getAccBalanceWrapperREADONLY (bp) = $Tuple2(nil, bo(bp))
12971297
12981298
12991299
13001300 @Callable(dA)
13011301 func calcPricesWrapperREADONLY (bx,by,bC) = {
13021302 let gg = bB(bx, by, bC)
13031303 $Tuple2(nil, [toString(gg[0]), toString(gg[1]), toString(gg[2])])
13041304 }
13051305
13061306
13071307
13081308 @Callable(dA)
13091309 func toX18WrapperREADONLY (x,y) = $Tuple2(nil, toString(w(x, y)))
13101310
13111311
13121312
13131313 @Callable(dA)
13141314 func fromX18WrapperREADONLY (B,C) = $Tuple2(nil, A(parseBigIntValue(B), C))
13151315
13161316
13171317
13181318 @Callable(dA)
13191319 func calcPriceBigIntWrapperREADONLY (br,bs) = $Tuple2(nil, toString(bq(parseBigIntValue(br), parseBigIntValue(bs))))
13201320
13211321
13221322
13231323 @Callable(dA)
13241324 func estimatePutOperationWrapperREADONLY (bL,ch,ci,cj,ck,cl,O,cm,cn) = $Tuple2(nil, cg(bL, ch, ci, cj, ck, cl, O, cm, cn))
13251325
13261326
13271327
13281328 @Callable(dA)
13291329 func estimateGetOperationWrapperREADONLY (bL,bM,bN,O) = {
13301330 let cx = bK(bL, bM, bN, addressFromStringValue(O))
13311331 $Tuple2(nil, $Tuple10(cx._1, cx._2, cx._3, cx._4, cx._5, cx._6, cx._7, toString(cx._8), cx._9, cx._10))
13321332 }
13331333
13341334
13351335
13361336 @Callable(dA)
13371337 func statsREADONLY () = {
13381338 let bD = aG()
13391339 let bO = fromBase58String(bD[n])
13401340 let gh = bD[o]
13411341 let gi = bD[p]
13421342 let cq = bD[s]
13431343 let cr = bD[t]
13441344 let bE = parseIntValue(bD[q])
13451345 let bF = parseIntValue(bD[r])
13461346 let gj = valueOrErrorMessage(assetInfo(bO), (("Asset " + toBase58String(bO)) + " doesn't exist")).quantity
13471347 let gk = bo(gh)
13481348 let gl = bo(gi)
13491349 let gm = if ((gj == 0))
13501350 then [c, c, c]
13511351 else bB(gk, gl, gj)
13521352 let bY = 0
13531353 let gn = A(gm[1], a)
13541354 let go = A(gm[2], a)
13551355 let gp = value(getInteger(az, aj(toString(this))))
13561356 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gk), toString(gl), toString(gj), toString(bY), toString(gn), toString(go), toString(gp)], h))
13571357 }
13581358
13591359
13601360
13611361 @Callable(dA)
13621362 func evaluatePutByAmountAssetREADONLY (ci) = {
13631363 let bD = aG()
13641364 let bO = fromBase58String(bD[n])
13651365 let co = bD[o]
13661366 let bP = fromBase58String(co)
13671367 let cp = bD[p]
13681368 let bQ = fromBase58String(cp)
13691369 let bE = parseIntValue(bD[q])
13701370 let bF = parseIntValue(bD[r])
13711371 let bR = bD[m]
13721372 let gj = valueOrErrorMessage(assetInfo(bO), (("Asset " + toBase58String(bO)) + " doesn't exist")).quantity
13731373 let gk = bo(co)
13741374 let gl = bo(cp)
13751375 let bz = w(gk, bE)
13761376 let bA = w(gl, bF)
13771377 let bX = if ((gj == 0))
13781378 then c
13791379 else bq(bA, bz)
13801380 let cu = w(ci, bE)
13811381 let cv = fraction(cu, bX, b)
13821382 let ck = A(cv, bF)
13831383 let dG = cg("", 500000, ci, bP, ck, bQ, "", true, false)
13841384 let cF = dG._1
13851385 let gq = dG._3
13861386 let bT = dG._4
13871387 let bV = dG._5
13881388 let bS = dG._6
13891389 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cF), toString(A(bX, a)), toString(bT), toString(bV), toString(bS), bR, toString(ci), toString(ck)], h))
13901390 }
13911391
13921392
13931393
13941394 @Callable(dA)
13951395 func evaluatePutByPriceAssetREADONLY (ck) = {
13961396 let bD = aG()
13971397 let bO = fromBase58String(bD[n])
13981398 let co = bD[o]
13991399 let bP = fromBase58String(co)
14001400 let cp = bD[p]
14011401 let bQ = fromBase58String(cp)
14021402 let bE = parseIntValue(bD[q])
14031403 let bF = parseIntValue(bD[r])
14041404 let bR = bD[m]
14051405 let gj = valueOrErrorMessage(assetInfo(bO), (("Asset " + toBase58String(bO)) + " doesn't exist")).quantity
14061406 let gr = bo(co)
14071407 let gs = bo(cp)
14081408 let gt = w(gr, bE)
14091409 let gu = w(gs, bF)
14101410 let bX = if ((gj == 0))
14111411 then c
14121412 else bq(gu, gt)
14131413 let cv = w(ck, bF)
14141414 let cu = fraction(cv, b, bX)
14151415 let ci = A(cu, bE)
14161416 let dG = cg("", 500000, ci, bP, ck, bQ, "", true, false)
14171417 let cF = dG._1
14181418 let gq = dG._3
14191419 let bT = dG._4
14201420 let bV = dG._5
14211421 let bS = dG._6
14221422 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cF), toString(A(bX, a)), toString(bT), toString(bV), toString(bS), bR, toString(ci), toString(ck)], h))
14231423 }
14241424
14251425
14261426
14271427 @Callable(dA)
14281428 func evaluateGetREADONLY (gv,gw) = {
14291429 let cx = bK("", gv, gw, this)
14301430 let cd = cx._1
14311431 let ce = cx._2
14321432 let bT = cx._5
14331433 let bV = cx._6
14341434 let bS = cx._7
14351435 let bY = cx._8
14361436 let bR = parseIntValue(cx._9)
14371437 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cd), toString(ce), toString(bT), toString(bV), toString(bS), toString(bY), toString(bR)], h))
14381438 }
14391439
14401440
14411441 @Verifier(gx)
14421442 func gy () = {
14431443 let gz = {
14441444 let dL = eM()
14451445 if ($isInstanceOf(dL, "ByteVector"))
14461446 then {
14471447 let eQ = dL
14481448 eQ
14491449 }
14501450 else if ($isInstanceOf(dL, "Unit"))
14511451 then gx.senderPublicKey
14521452 else throw("Match error")
14531453 }
14541454 let dL = gx
14551455 if ($isInstanceOf(dL, "Order"))
14561456 then {
14571457 let di = dL
14581458 let gA = aF()
14591459 let gB = dh(di)
14601460 let ao = gB._1
14611461 let ap = gB._2
14621462 let aq = sigVerify(di.bodyBytes, di.proofs[0], di.senderPublicKey)
14631463 let ar = sigVerify(di.bodyBytes, di.proofs[1], gA)
14641464 if (if (if (ao)
14651465 then aq
14661466 else false)
14671467 then ar
14681468 else false)
14691469 then true
14701470 else an(ao, ap, aq, ar)
14711471 }
14721472 else if ($isInstanceOf(dL, "SetScriptTransaction"))
14731473 then {
14741474 let eN = dL
14751475 let gC = blake2b256(value(eN.script))
14761476 let gD = fromBase64String(value(getString(az, al())))
14771477 let gE = scriptHash(this)
14781478 if (if ((gD == gC))
14791479 then (gE != gC)
14801480 else false)
14811481 then true
14821482 else sigVerify(gx.bodyBytes, gx.proofs[0], gz)
14831483 }
14841484 else sigVerify(gx.bodyBytes, gx.proofs[0], gz)
14851485 }
14861486

github/deemru/w8io/873ac7e 
142.69 ms