tx · 3jh6dkt1R7KUXxJZ2Dbg82p4DraHUKknmgByigfFUiUR

3N9LkJahTMx41wGhSxLS42prCZtRCp4dhTs:  -0.04000000 Waves

2022.10.19 14:22 [2279208] smart account 3N9LkJahTMx41wGhSxLS42prCZtRCp4dhTs > SELF 0.00000000 Waves

{ "type": 13, "id": "3jh6dkt1R7KUXxJZ2Dbg82p4DraHUKknmgByigfFUiUR", "fee": 4000000, "feeAssetId": null, "timestamp": 1666178557528, "version": 1, "sender": "3N9LkJahTMx41wGhSxLS42prCZtRCp4dhTs", "senderPublicKey": "8hm3x3tdBbKUu4XpjDGwNdaPA2qEdrdchHue4k49BsYJ", "proofs": [ "3nwHi97ZCYiTm2Wo2MEANW8FksMTzVrhrAss6c5u5BaW7TAqJqX1eyJpHAyz1N4EQMz7ghXULcGQCnGbuegW13Uk", "ZtZKoHfgnTTiDYf38w8E71b6HDJWanB4cV6a1AWvbxpW5AshB7UmQtZcvbu4bPzb6nNRQxx7eBoAYY3GNXiaDrB", "4qixREuxZvzFzvsm54va69HwKvQ3ZcHUJbp3P2dX2c2WZPo5x91UaXhSXYvyxcMXzbjjawctMhwn8uydUSRvpdTh" ], "script": "base64:BgI5CAISBQoDAQgIEgASABIDCgEBEgASABIAEgMKAQgSBAoCCAESABIECgIIARIAEgQKAgEIEgQKAgEIZQADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAAZNVUxUWDYJALYCAQUFTVVMVDYABk1VTFRYOAkAtgIBBQVNVUxUOAAHTVVMVFgxOAkAtgIBAICAkLu61q3wDQAKV0FWRVNJRFNUUgIFV0FWRVMAB1dBVkVTSUQJANkEAQUKV0FWRVNJRFNUUgAJREFZTUlMTElTAIC4mSkAGUlkeENvbnRyb2xDZmdOZXV0cmlub0RhcHAAAQAYSWR4Q29udHJvbENmZ0F1Y3Rpb25EYXBwAAIAFElkeENvbnRyb2xDZmdScGREYXBwAAMAFUlkeENvbnRyb2xDZmdNYXRoRGFwcAAEABxJZHhDb250cm9sQ2ZnTGlxdWlkYXRpb25EYXBwAAUAFUlkeENvbnRyb2xDZmdSZXN0RGFwcAAGAB1JZHhDb250cm9sQ2ZnTm9kZVJlZ2lzdHJ5RGFwcAAHABxJZHhDb250cm9sQ2ZnTnNidFN0YWtpbmdEYXBwAAgAGUlkeENvbnRyb2xDZmdNZWRpYXRvckRhcHAACQAcSWR4Q29udHJvbENmZ1N1cmZTdGFraW5nRGFwcAAKACBJZHhDb250cm9sQ2ZnR25zYnRDb250cm9sbGVyRGFwcAALAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQCsAgIJAKwCAgkArAICCQCsAgICCm1hbmRhdG9yeSAJAKUIAQUHYWRkcmVzcwIBLgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBDGdldEludE9yRmFpbAEDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwUDa2V5CQCsAgIJAKwCAgIPTWFuZGF0b3J5IHRoaXMuBQNrZXkCDyBpcyBub3QgZGVmaW5lZAEMZ2V0U3RyT3JFbHNlAgNrZXkKZGVmYXVsdFZhbAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQNrZXkFCmRlZmF1bHRWYWwBEGtleU1pbkxvY2tBbW91bnQAAhElc19fbWluTG9ja0Ftb3VudAEQa2V5U3Rha2VkQXNzZXRJZAACESVzX19zdGFrZWRBc3NldElkARFrZXlDb250cm9sQWRkcmVzcwACHCVzJXNfX2NvbmZpZ19fY29udHJvbEFkZHJlc3MBDWtleUNvbnRyb2xDZmcAAhElc19fY29udHJvbENvbmZpZwEYa2V5U3VwcG9ydGVkUmV3YXJkQXNzZXRzAAIVc3VwcG9ydGVkUmV3YXJkQXNzZXRzARRyZWFkQ29udHJvbENmZ09yRmFpbAEHY29udHJvbAkAvAkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUHY29udHJvbAkBDWtleUNvbnRyb2xDZmcABQNTRVABGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIKY29udHJvbENmZwNpZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFCmNvbnRyb2xDZmcFA2lkeAkArAICAi1Db250cm9sIGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAKQDAQUDaWR4AA9jb250cm9sQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBEWtleUNvbnRyb2xBZGRyZXNzAAIjM040TlM3ZDRKbzlhNkYxNExpRlVLS1lWZFVra2YyZVA0WngACmNvbnRyb2xDZmcJARRyZWFkQ29udHJvbENmZ09yRmFpbAEFD2NvbnRyb2xDb250cmFjdAAMbWF0aENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUVSWR4Q29udHJvbENmZ01hdGhEYXBwABBuZXV0cmlub0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUZSWR4Q29udHJvbENmZ05ldXRyaW5vRGFwcAAPYXVjdGlvbkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUYSWR4Q29udHJvbENmZ0F1Y3Rpb25EYXBwABBzdGFrZWRBc3NldElkU3RyCQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBEGtleVN0YWtlZEFzc2V0SWQAAA1zdGFrZWRBc3NldElkCQDZBAEFEHN0YWtlZEFzc2V0SWRTdHIADW1pbkxvY2tBbW91bnQJAQxnZXRJbnRPckZhaWwBCQEQa2V5TWluTG9ja0Ftb3VudAAAEnN1cHBvcnRlZEFzc2V0c1N0cgkBDGdldFN0ck9yRWxzZQIJARhrZXlTdXBwb3J0ZWRSZXdhcmRBc3NldHMAAgAAE3N1cHBvcnRlZEFzc2V0c0xpc3QJALUJAgUSc3VwcG9ydGVkQXNzZXRzU3RyAgFfARZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgtwYXJhbUJ5VXNlcgkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCAgZhbW91bnQFA25pbAUDU0VQARZrZXlMb2NrUGFyYW1TdGFydEJsb2NrAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgtwYXJhbUJ5VXNlcgkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCAgVzdGFydAUDbmlsBQNTRVABEGtleUhpc3RvcnlSZWNvcmQDBHR5cGULdXNlckFkZHJlc3MEdHhJZAkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAICB2hpc3RvcnkJAMwIAgUEdHlwZQkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCCQDYBAEFBHR4SWQFA25pbAUDU0VQARdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudAAJALkJAgkAzAgCAgQlcyVzCQDMCAICBXN0YXRzCQDMCAICEWFjdGl2ZVRvdGFsTG9ja2VkBQNuaWwFA1NFUAESa2V5U3RhdHNMb2Nrc0NvdW50AAkAuQkCCQDMCAICBCVzJXMJAMwIAgIFc3RhdHMJAMwIAgIKbG9ja3NDb3VudAUDbmlsBQNTRVABEmtleVN0YXRzVXNlcnNDb3VudAAJALkJAgkAzAgCAgQlcyVzCQDMCAICBXN0YXRzCQDMCAICEGFjdGl2ZVVzZXJzQ291bnQFA25pbAUDU0VQARdrZXlTdGF0c0RlcG9zaXRBbXRCeURheQEJdGltZXN0YW1wCQC5CQIJAMwIAgIGJXMlcyVkCQDMCAICBXN0YXRzCQDMCAICD2RlcG9zaXRBbXRCeURheQkAzAgCCQCkAwEFCXRpbWVzdGFtcAUDbmlsBQNTRVABGGtleVN0YXRzRGVwb3NpdEFtdFRvdGFscwAJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgIFc3RhdHMJAMwIAgIQZGVwb3NpdEFtdFRvdGFscwUDbmlsBQNTRVABDWtleU5leHRQZXJpb2QAAg4lc19fbmV4dFBlcmlvZAERa2V5RGVwb3NpdE51bUxhc3QACQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICA2RlcAkAzAgCAgdsYXN0TnVtBQNuaWwFA1NFUAEba2V5VXNlclJld2FyZEZyb21EZXBvc2l0TnVtAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAhF1c2VyUndkRnJvbURlcE51bQkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABFWtleVJld2FyZFBlck5zYnRTdW1BdAIKZGVwb3NpdE51bQN0a24JALkJAgkAzAgCAgQlcyVkCQDMCAICFXJ3ZFBlck5zYnRTdW1CeURlcE51bQkAzAgCCQCkAwEFCmRlcG9zaXROdW0JAMwIAgUDdGtuBQNuaWwFA1NFUAEJa2V5UmV3YXJkAgt1c2VyQWRkcmVzcwN0a24JALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIDcndkCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIFA3RrbgUDbmlsBQNTRVABCmtleUNsYWltZWQCC3VzZXJBZGRyZXNzA3RrbgkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgNjbG0JAMwIAgULdXNlckFkZHJlc3MJAMwIAgUDdGtuBQNuaWwFA1NFUAEXa2V5Tm90RGlzdHJpYnV0ZWRSZXdhcmQBA3RrbgkAuQkCCQDMCAICBCVzJXMJAMwIAgIObm90RGlzdHJpYnV0ZWQJAMwIAgUDdGtuBQNuaWwFA1NFUAEUa2V5TGVnYWN5VXNlckJhbGFuY2UCCHVzZXJBZGRyA3RrbgkAuQkCCQDMCAICC3JwZF9iYWxhbmNlCQDMCAIFA3RrbgkAzAgCBQh1c2VyQWRkcgUDbmlsBQNTRVABFWtleUxlZ2FjeVRvdGFsQmFsYW5jZQEDdGtuCQC5CQIJAMwIAgILcnBkX2JhbGFuY2UJAMwIAgUDdGtuBQNuaWwFA1NFUAEFdG9YMTgCB29yaWdWYWwIb3JpZ011bHQJALwCAwkAtgIBBQdvcmlnVmFsBQdNVUxUWDE4BQhvcmlnTXVsdAEMZ2V0SW50T3JaZXJvAQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5AAABDGdldEludE9yRWxzZQIDa2V5CmRlZmF1bHRWYWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5BQpkZWZhdWx0VmFsAQ90b0FkZHJlc3NPckZhaWwBCmFkZHJlc3NTdHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQphZGRyZXNzU3RyCQCsAgICIWNvdWxkbid0IHBhcnNlIHBhc3NlZCBhZGRyZXNzU3RyPQUKYWRkcmVzc1N0cgELdG9Bc3NldFZlY3QBCGFzc2V0U3RyAwkAAAIFCGFzc2V0U3RyBQpXQVZFU0lEU1RSBQR1bml0CQDZBAEFCGFzc2V0U3RyAQVhc0ludAEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIDSW50BAZ2YWxJbnQFByRtYXRjaDAFBnZhbEludAkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAESYXNTd2FwUGFyYW1zU1RSVUNUAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACIyhJbnQsIEludCwgSW50LCBJbnQsIEludCwgSW50LCBJbnQpBAZzdHJ1Y3QFByRtYXRjaDAFBnN0cnVjdAkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAETZm9ybWF0SGlzdG9yeVJlY29yZAMLdXNlckFkZHJlc3MJb2xkQW1vdW50CW5ld0Ftb3VudAkAuQkCCQDMCAICCiVzJWQlZCVkJWQJAMwIAgULdXNlckFkZHJlc3MJAMwIAgkApAMBCAUJbGFzdEJsb2NrBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQUJb2xkQW1vdW50CQDMCAIJAKQDAQUJbmV3QW1vdW50BQNuaWwFA1NFUAEYZm9ybWF0Q2xhaW1IaXN0b3J5UmVjb3JkAgt1c2VyQWRkcmVzcw5jbGFpbWVkUmV3YXJkcwkAuQkCCQDMCAICCCVzJWQlZCVzCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIJAKQDAQgFCWxhc3RCbG9jawZoZWlnaHQJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCBQ5jbGFpbWVkUmV3YXJkcwUDbmlsBQNTRVABEkhpc3RvcnlSZWNvcmRFbnRyeQUEdHlwZQt1c2VyQWRkcmVzcwR0eElkCW9sZEFtb3VudAluZXdBbW91bnQJAQtTdHJpbmdFbnRyeQIJARBrZXlIaXN0b3J5UmVjb3JkAwUEdHlwZQULdXNlckFkZHJlc3MFBHR4SWQJARNmb3JtYXRIaXN0b3J5UmVjb3JkAwULdXNlckFkZHJlc3MFCW9sZEFtb3VudAUJbmV3QW1vdW50ARFDbGFpbUhpc3RvcnlFbnRyeQMLdXNlckFkZHJlc3MEdHhJZA5jbGFpbWVkUmV3YXJkcwkBC1N0cmluZ0VudHJ5AgkBEGtleUhpc3RvcnlSZWNvcmQDAgVjbGFpbQULdXNlckFkZHJlc3MFBHR4SWQJARhmb3JtYXRDbGFpbUhpc3RvcnlSZWNvcmQCBQt1c2VyQWRkcmVzcwUOY2xhaW1lZFJld2FyZHMBC1N0YXRzUmVzdWx0Aw50b3RhbExvY2tlZEluYwxsb2NrQ291bnRJbmMNdXNlcnNDb3VudEluYwQKbG9ja3NDb3VudAkBDGdldEludE9yWmVybwEJARJrZXlTdGF0c0xvY2tzQ291bnQABAp1c2Vyc0NvdW50CQEMZ2V0SW50T3JaZXJvAQkBEmtleVN0YXRzVXNlcnNDb3VudAAEC3RvdGFsQW1vdW50CQEMZ2V0SW50T3JaZXJvAQkBF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50AAQOdG90YWxBbW91bnROZXcJAGQCBQt0b3RhbEFtb3VudAUOdG90YWxMb2NrZWRJbmMJAJUKAwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleVN0YXRzTG9ja3NDb3VudAAJAGQCBQpsb2Nrc0NvdW50BQxsb2NrQ291bnRJbmMJAMwIAgkBDEludGVnZXJFbnRyeQIJARJrZXlTdGF0c1VzZXJzQ291bnQACQBkAgUKdXNlcnNDb3VudAUNdXNlcnNDb3VudEluYwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50AAUOdG90YWxBbW91bnROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJARVrZXlMZWdhY3lUb3RhbEJhbGFuY2UBBRBzdGFrZWRBc3NldElkU3RyBQ50b3RhbEFtb3VudE5ldwUDbmlsBQt0b3RhbEFtb3VudAUOdG90YWxBbW91bnROZXcBD0xvY2tQYXJhbXNFbnRyeQMLdXNlckFkZHJlc3MGYW1vdW50EnN0YWtpbmdTdGFydEhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFGtleUxlZ2FjeVVzZXJCYWxhbmNlAgULdXNlckFkZHJlc3MFEHN0YWtlZEFzc2V0SWRTdHIFBmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleUxvY2tQYXJhbVVzZXJBbW91bnQBBQt1c2VyQWRkcmVzcwUGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5TG9ja1BhcmFtU3RhcnRCbG9jawEFC3VzZXJBZGRyZXNzBRJzdGFraW5nU3RhcnRIZWlnaHQFA25pbAEPZ2V0UGFyYW1zT3JGYWlsAAkAlAoCCQDZBAEJAQ9nZXRTdHJpbmdPckZhaWwCBQR0aGlzCQEQa2V5U3Rha2VkQXNzZXRJZAAJAQxnZXRJbnRPckZhaWwBCQEQa2V5TWluTG9ja0Ftb3VudAABDGlzQWN0aXZlVXNlcgELdXNlckFkZHJlc3MJAGYCCQEMZ2V0SW50T3JFbHNlAgkBFmtleUxvY2tQYXJhbVVzZXJBbW91bnQBBQt1c2VyQWRkcmVzcwAAAAABE2dldFVzZXJQYXJhbXNPclVuaXQBC3VzZXJBZGRyZXNzAwkBDGlzQWN0aXZlVXNlcgEFC3VzZXJBZGRyZXNzCQCVCgMHCQEMZ2V0SW50T3JGYWlsAQkBFmtleUxvY2tQYXJhbVVzZXJBbW91bnQBBQt1c2VyQWRkcmVzcwkBDGdldEludE9yRmFpbAEJARZrZXlMb2NrUGFyYW1TdGFydEJsb2NrAQULdXNlckFkZHJlc3MFBHVuaXQBE2dldFVzZXJQYXJhbXNPckZhaWwBC3VzZXJBZGRyZXNzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJARNnZXRVc2VyUGFyYW1zT3JVbml0AQULdXNlckFkZHJlc3MJAKwCAgkArAICAgVVc2VyIAULdXNlckFkZHJlc3MCDyBpcyBub3QgZGVmaW5lZAEKY2FsY1Jld2FyZAULdXNlckFkZHJlc3MHYXNzZXRJZA1zdGFrZWRBbW91bnRYDmRlcG9zaXROdW1Vc2VyDmRlcG9zaXROdW1MYXN0BBdyZXdhcmRQZXJOc2J0U3VtTGFzdEtFWQkBFWtleVJld2FyZFBlck5zYnRTdW1BdAIFDmRlcG9zaXROdW1MYXN0BQdhc3NldElkBApzdW1MYXN0WDE4CQCnAwEJAQxnZXRTdHJPckVsc2UCCQEVa2V5UmV3YXJkUGVyTnNidFN1bUF0AgUOZGVwb3NpdE51bUxhc3QFB2Fzc2V0SWQCATAECnN1bVVzZXJYMTgJAKcDAQkBDGdldFN0ck9yRWxzZQIJARVrZXlSZXdhcmRQZXJOc2J0U3VtQXQCBQ5kZXBvc2l0TnVtVXNlcgUHYXNzZXRJZAIBMAQRcmV3YXJkRHluYW1pY1BhcnQJAKADAQkAvAIDCQC4AgIFCnN1bUxhc3RYMTgFCnN1bVVzZXJYMTgFDXN0YWtlZEFtb3VudFgFB01VTFRYMTgEE3Jld2FyZENhY2hlZFBhcnRLRVkJAQlrZXlSZXdhcmQCBQt1c2VyQWRkcmVzcwUHYXNzZXRJZAQQcmV3YXJkQ2FjaGVkUGFydAkBDGdldEludE9yRWxzZQIFE3Jld2FyZENhY2hlZFBhcnRLRVkAAAkAlgoECQBkAgUQcmV3YXJkQ2FjaGVkUGFydAURcmV3YXJkRHluYW1pY1BhcnQFEHJld2FyZENhY2hlZFBhcnQFEXJld2FyZER5bmFtaWNQYXJ0BRNyZXdhcmRDYWNoZWRQYXJ0S0VZAQx0b1N0YXJ0T2ZEYXkBCXRpbWVzdGFtcAkAaAIJAGkCBQl0aW1lc3RhbXAFCURBWU1JTExJUwUJREFZTUlMTElTARNmaW5kRWxlbWVudFBvc2l0aW9uAwNzcmMHZWxlbWVudANzZXAEDGVsZW1lbnRTdGFydAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCzCQIFA3NyYwUHZWxlbWVudAkArAICCQCsAgIJAKwCAgIWdGhlcmUgaXMgbm8gc3Vic3RyaW5nIAUHZWxlbWVudAIEIGluIAUDc3JjAwkAAAIFDGVsZW1lbnRTdGFydAAAAAAEBGxlZnQJAK8CAgUDc3JjBQxlbGVtZW50U3RhcnQJAGUCCQCQAwEJALUJAgUEbGVmdAUDc2VwAAEAE0RlcG9zaXRUb3RhbHNQUkVGSVgCBCVkJWQBE3VwZGF0ZURlcG9zaXRUb3RhbHMDB2N1cnJWYWwLaWR4VG9VcGRhdGUIZGVsdGFBbXQEB2N1cnJBcnIJALUJAgUHY3VyclZhbAUDU0VQCgEOdXBkRGVwVG90QnlJZHgBA2lkeAMJAQIhPQIFA2lkeAULaWR4VG9VcGRhdGUJAJEDAgUHY3VyckFycgUDaWR4CQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHY3VyckFycgUDaWR4BQhkZWx0YUFtdAkAuQkCCQDMCAIFE0RlcG9zaXRUb3RhbHNQUkVGSVgJAMwIAgkBDnVwZERlcFRvdEJ5SWR4AQABCQDMCAIJAQ51cGREZXBUb3RCeUlkeAEAAgUDbmlsBQNTRVABFURlcG9zaXRzVG90YWxzRW50cmllcwINZGVwb3NpdEFtb3VudAphc3NldElkU3RyBApzdGFydE9mRGF5CQEMdG9TdGFydE9mRGF5AQgFCWxhc3RCbG9jawl0aW1lc3RhbXAECGJ5RGF5S0VZCQEXa2V5U3RhdHNEZXBvc2l0QW10QnlEYXkBBQpzdGFydE9mRGF5BAl0b3RhbHNLRVkJARhrZXlTdGF0c0RlcG9zaXRBbXRUb3RhbHMABAhwb3NpdGlvbgkBE2ZpbmRFbGVtZW50UG9zaXRpb24DBRJzdXBwb3J0ZWRBc3NldHNTdHIFCmFzc2V0SWRTdHICAV8EC2RlZmF1bHREQVRBCQCsAgIFE0RlcG9zaXRUb3RhbHNQUkVGSVgCBl9fMF9fMAQOY3VyclRvdGFsc0RBVEEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUJdG90YWxzS0VZBQtkZWZhdWx0REFUQQQNbmV3VG90YWxzREFUQQkBE3VwZGF0ZURlcG9zaXRUb3RhbHMDBQ5jdXJyVG90YWxzREFUQQkAZAIFCHBvc2l0aW9uAAEFDWRlcG9zaXRBbW91bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgUJdG90YWxzS0VZBQ1uZXdUb3RhbHNEQVRBCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGJ5RGF5S0VZBQ1uZXdUb3RhbHNEQVRBBQNuaWwBDVJld2FyZEVudHJpZXMDCWlzTmV3VXNlcgt1c2VyQWRkcmVzcwxzdGFrZWRBbW91bnQEDXN0YWtlZEFtb3VudFgJALYCAQUMc3Rha2VkQW1vdW50BBt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkJARtrZXlVc2VyUmV3YXJkRnJvbURlcG9zaXROdW0BBQt1c2VyQWRkcmVzcwQOZGVwb3NpdE51bVVzZXIJAQxnZXRJbnRPckVsc2UCBRt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkA////////////AQQOZGVwb3NpdE51bUxhc3QJAQxnZXRJbnRPckVsc2UCCQERa2V5RGVwb3NpdE51bUxhc3QAAP///////////wEKARtmb3JFYWNoQXNzZXRDYWNoZVVzZXJSZXdhcmQCBWFjY3VtBWFzc2V0BA0kdDAxMDYxNzEwNzUyCQEKY2FsY1Jld2FyZAUFC3VzZXJBZGRyZXNzBQVhc3NldAUNc3Rha2VkQW1vdW50WAUOZGVwb3NpdE51bVVzZXIFDmRlcG9zaXROdW1MYXN0BAtyZXdhcmRUb3RhbAgFDSR0MDEwNjE3MTA3NTICXzEEBmNhY2hlZAgFDSR0MDEwNjE3MTA3NTICXzIEB2R5bmFtaWMIBQ0kdDAxMDYxNzEwNzUyAl8zBBNyZXdhcmRDYWNoZWRQYXJ0S0VZCAUNJHQwMTA2MTcxMDc1MgJfNAkAzQgCBQVhY2N1bQkBDEludGVnZXJFbnRyeQIFE3Jld2FyZENhY2hlZFBhcnRLRVkFC3Jld2FyZFRvdGFsAwMJAAACBQ5kZXBvc2l0TnVtTGFzdAD///////////8BCQAAAgUOZGVwb3NpdE51bVVzZXIA////////////AQcFA25pbAMDCQAAAgUOZGVwb3NpdE51bUxhc3QA////////////AQkAZgIFDmRlcG9zaXROdW1Vc2VyAP///////////wEHCQACAQIvaW52YWxpZCBkZXBvc2l0TnVtTGFzdCBhbmQgZGVwb3NpdE51bVVzZXIgc3RhdGUDAwkAZgIFDmRlcG9zaXROdW1MYXN0AP///////////wEJAGcCBQ5kZXBvc2l0TnVtVXNlcgD///////////8BBwMFCWlzTmV3VXNlcgkAzAgCCQEMSW50ZWdlckVudHJ5AgUbdXNlclJld2FyZEZyb21EZXBvc2l0TnVtS0VZBQ5kZXBvc2l0TnVtTGFzdAUDbmlsCQDNCAIKAAIkbAUTc3VwcG9ydGVkQXNzZXRzTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEbZm9yRWFjaEFzc2V0Q2FjaGVVc2VyUmV3YXJkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAyCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgkBDEludGVnZXJFbnRyeQIFG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQUOZGVwb3NpdE51bUxhc3QJAAIBCQCsAgIJAKwCAgkArAICAiR1bmNvdmVyZWQgY29uZGl0aW9uOiBkZXBvc2l0TnVtTGFzdD0JAKQDAQUOZGVwb3NpdE51bUxhc3QCECBkZXBvc2l0TnVtVXNlcj0JAKQDAQUOZGVwb3NpdE51bVVzZXIBIkluY3JlbWVudE5vdERpc3RyaWJ1dGVkUmV3YXJkRW50cnkCA3RrbglhbW91bnRJbmMEF25vdERpc3RyaWJ1dGVkUmV3YXJkS0VZCQEXa2V5Tm90RGlzdHJpYnV0ZWRSZXdhcmQBBQN0a24EFG5vdERpc3RyaWJ1dGVkUmV3YXJkCQEMZ2V0SW50T3JFbHNlAgUXbm90RGlzdHJpYnV0ZWRSZXdhcmRLRVkAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUXbm90RGlzdHJpYnV0ZWRSZXdhcmRLRVkJAGQCBRRub3REaXN0cmlidXRlZFJld2FyZAUJYW1vdW50SW5jBQNuaWwBCm1lcmdlU3Rha2UCC3VzZXJBZGRyZXNzC2Ftb3VudFRvQWRkBA0kdDAxMzU3NjEzNjkyCQELdmFsdWVPckVsc2UCCQETZ2V0VXNlclBhcmFtc09yVW5pdAEFC3VzZXJBZGRyZXNzCQCVCgMGAAAFBmhlaWdodAQJaXNOZXdVc2VyCAUNJHQwMTM1NzYxMzY5MgJfMQQMc3Rha2VkQW1vdW50CAUNJHQwMTM1NzYxMzY5MgJfMgQSc3Rha2luZ1N0YXJ0SGVpZ2h0CAUNJHQwMTM1NzYxMzY5MgJfMwQPc3Rha2VkQW1vdW50TkVXAwUJaXNOZXdVc2VyBQthbW91bnRUb0FkZAkAZAIFC2Ftb3VudFRvQWRkBQxzdGFrZWRBbW91bnQJAJYKBAUJaXNOZXdVc2VyBQxzdGFrZWRBbW91bnQFEnN0YWtpbmdTdGFydEhlaWdodAUPc3Rha2VkQW1vdW50TkVXAQtjb21tb25TdGFrZQILdXNlckFkZHJlc3MBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECFUludmFsaWQgcGF5bWVudHMgc2l6ZQQHcGF5bWVudAkAkQMCCAUBaQhwYXltZW50cwAABAZhbW91bnQIBQdwYXltZW50BmFtb3VudAQTaW52YWxpZEFzc2V0TWVzc2FnZQkArAICCQCsAgICD0ludmFsaWQgYXNzZXQuIAkA2AQBBQ1zdGFrZWRBc3NldElkAgwgaXMgZXhwZWN0ZWQEB2Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAggFB3BheW1lbnQHYXNzZXRJZAUTaW52YWxpZEFzc2V0TWVzc2FnZQMJAQIhPQIFB2Fzc2V0SWQFDXN0YWtlZEFzc2V0SWQJAAIBBRNpbnZhbGlkQXNzZXRNZXNzYWdlBA51c2VyQWRkcmVzc1N0cgkApQgBBQt1c2VyQWRkcmVzcwQKbWVyZ2VkRGF0YQkBCm1lcmdlU3Rha2UCBQ51c2VyQWRkcmVzc1N0cgUGYW1vdW50BAlpc05ld1VzZXIIBQptZXJnZWREYXRhAl8xBAxzdGFrZWRBbW91bnQIBQptZXJnZWREYXRhAl8yBBJzdGFraW5nU3RhcnRIZWlnaHQIBQptZXJnZWREYXRhAl8zBA9zdGFrZWRBbW91bnRORVcIBQptZXJnZWREYXRhAl80AwkAZgIFDW1pbkxvY2tBbW91bnQFD3N0YWtlZEFtb3VudE5FVwkAAgEJAKwCAgITTWluIGxvY2sgYW1vdW50IGlzIAkApAMBBQ1taW5Mb2NrQW1vdW50BA0kdDAxNDY2NTE0NzY3CQELU3RhdHNSZXN1bHQDBQZhbW91bnQAAQMFCWlzTmV3VXNlcgABAAAEDHN0YXRzRW50cmllcwgFDSR0MDE0NjY1MTQ3NjcCXzEEC3RvdGFsU3Rha2VkCAUNJHQwMTQ2NjUxNDc2NwJfMgQOdG90YWxTdGFrZWROZXcIBQ0kdDAxNDY2NTE0NzY3Al8zCQDOCAIJAM4IAgkAzggCCQDMCAIJARJIaXN0b3J5UmVjb3JkRW50cnkFAgVzdGFrZQUOdXNlckFkZHJlc3NTdHIIBQFpDXRyYW5zYWN0aW9uSWQFDHN0YWtlZEFtb3VudAUPc3Rha2VkQW1vdW50TkVXBQNuaWwJAQ1SZXdhcmRFbnRyaWVzAwUJaXNOZXdVc2VyBQ51c2VyQWRkcmVzc1N0cgUMc3Rha2VkQW1vdW50CQEPTG9ja1BhcmFtc0VudHJ5AwUOdXNlckFkZHJlc3NTdHIFD3N0YWtlZEFtb3VudE5FVwUSc3Rha2luZ1N0YXJ0SGVpZ2h0BQxzdGF0c0VudHJpZXMBDWNvbW1vblVuc3Rha2UCBmFtb3VudAFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIjdW5zdGFrZSBkb2Vzbid0IHJlcXVpcmUgYW55IHBheW1lbnQEC3VzZXJBZGRyZXNzCAUBaQZjYWxsZXIEDnVzZXJBZGRyZXNzU3RyCQClCAEFC3VzZXJBZGRyZXNzBA0kdDAxNTI0MjE1MzMwCQETZ2V0VXNlclBhcmFtc09yRmFpbAEFDnVzZXJBZGRyZXNzU3RyBAlpc05ld1VzZXIIBQ0kdDAxNTI0MjE1MzMwAl8xBAxzdGFrZWRBbW91bnQIBQ0kdDAxNTI0MjE1MzMwAl8yBBJzdGFraW5nU3RhcnRIZWlnaHQIBQ0kdDAxNTI0MjE1MzMwAl8zBBBzd2FwUGFyYW1zU1RSVUNUCQESYXNTd2FwUGFyYW1zU1RSVUNUAQkA/QcEBRBuZXV0cmlub0NvbnRyYWN0Ahtzd2FwUGFyYW1zQnlVc2VyU1lTUkVBRE9OTFkJAMwIAgUOdXNlckFkZHJlc3NTdHIJAMwIAgAABQNuaWwFA25pbAQUc3dhcExpbWl0U3BlbnRJblVzZG4IBRBzd2FwUGFyYW1zU1RSVUNUAl8yBA5ibGNrczJMbXRSZXNldAgFEHN3YXBQYXJhbXNTVFJVQ1QCXzMDCQBmAgUUc3dhcExpbWl0U3BlbnRJblVzZG4AAAkAAgEJAKwCAgkArAICAi1Zb3UgaGF2ZSBhbHJlYWR5IG1hZGUgYSBzd2FwIG9wZXJhdGlvbi4gV2FpdCAJAKQDAQkAZAIFBmhlaWdodAUOYmxja3MyTG10UmVzZXQCEiBoZWlnaHQgdG8gdW5zdGFrZQMJAGcCAAAFDHN0YWtlZEFtb3VudAkAAgECEk5vdGhpbmcgdG8gdW5zdGFrZQMJAGYCBQZhbW91bnQFDHN0YWtlZEFtb3VudAkAAgEJAKwCAgkArAICCQCsAgICClJlcXVlc3RlZCAJAKQDAQUGYW1vdW50AhIsIGJ1dCBzdGFrZWQgb25seSAJAKQDAQUMc3Rha2VkQW1vdW50BA9zdGFrZWRBbW91bnRORVcJAGUCBQxzdGFrZWRBbW91bnQFBmFtb3VudAQNJHQwMTU5NjgxNjEyNgkBC1N0YXRzUmVzdWx0AwkBAS0BBQZhbW91bnQDCQAAAgUGYW1vdW50BQxzdGFrZWRBbW91bnQA////////////AQAAAwkAAAIFBmFtb3VudAUMc3Rha2VkQW1vdW50AP///////////wEAAAQMc3RhdHNFbnRyaWVzCAUNJHQwMTU5NjgxNjEyNgJfMQQLdG90YWxTdGFrZWQIBQ0kdDAxNTk2ODE2MTI2Al8yBA50b3RhbFN0YWtlZE5ldwgFDSR0MDE1OTY4MTYxMjYCXzMJAM4IAgkAzggCCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFBmFtb3VudAUNc3Rha2VkQXNzZXRJZAkAzAgCCQESSGlzdG9yeVJlY29yZEVudHJ5BQIHdW5zdGFrZQUOdXNlckFkZHJlc3NTdHIIBQFpDXRyYW5zYWN0aW9uSWQFDHN0YWtlZEFtb3VudAUPc3Rha2VkQW1vdW50TkVXBQNuaWwJAQ1SZXdhcmRFbnRyaWVzAwcFDnVzZXJBZGRyZXNzU3RyBQxzdGFrZWRBbW91bnQJAQ9Mb2NrUGFyYW1zRW50cnkDBQ51c2VyQWRkcmVzc1N0cgUPc3Rha2VkQW1vdW50TkVXBRJzdGFraW5nU3RhcnRIZWlnaHQFDHN0YXRzRW50cmllcwELY29tbW9uQ2xhaW0CC3VzZXJBZGRyZXNzAWkEDnVzZXJBZGRyZXNzU3RyCQClCAEFC3VzZXJBZGRyZXNzAwkAZgIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECGXBheW1lbnRzIGFyZSBub3QgYWNjZXB0ZWQEDSR0MDE2NjIyMTY3MzAJAQt2YWx1ZU9yRWxzZQIJARNnZXRVc2VyUGFyYW1zT3JVbml0AQUOdXNlckFkZHJlc3NTdHIJAJUKAwYAAAAABAlpc05ld1VzZXIIBQ0kdDAxNjYyMjE2NzMwAl8xBAxzdGFrZWRBbW91bnQIBQ0kdDAxNjYyMjE2NzMwAl8yBAxzdGFraW5nU3RhcnQIBQ0kdDAxNjYyMjE2NzMwAl8zBA1zdGFrZWRBbW91bnRYCQC2AgEFDHN0YWtlZEFtb3VudAQbdXNlclJld2FyZEZyb21EZXBvc2l0TnVtS0VZCQEba2V5VXNlclJld2FyZEZyb21EZXBvc2l0TnVtAQUOdXNlckFkZHJlc3NTdHIEDmRlcG9zaXROdW1Vc2VyCQEMZ2V0SW50T3JFbHNlAgUbdXNlclJld2FyZEZyb21EZXBvc2l0TnVtS0VZAP///////////wEEDmRlcG9zaXROdW1MYXN0CQEMZ2V0SW50T3JFbHNlAgkBEWtleURlcG9zaXROdW1MYXN0AAD///////////8BCgEfZm9yRWFjaEFzc2V0Q2FsY1VuY2xhaW1lZFJld2FyZAIFYWNjdW0FYXNzZXQEDSR0MDE3MTAxMTcyMzkJAQpjYWxjUmV3YXJkBQUOdXNlckFkZHJlc3NTdHIFBWFzc2V0BQ1zdGFrZWRBbW91bnRYBQ5kZXBvc2l0TnVtVXNlcgUOZGVwb3NpdE51bUxhc3QEC3Jld2FyZFRvdGFsCAUNJHQwMTcxMDExNzIzOQJfMQQGY2FjaGVkCAUNJHQwMTcxMDExNzIzOQJfMgQHZHluYW1pYwgFDSR0MDE3MTAxMTcyMzkCXzMEE3Jld2FyZENhY2hlZFBhcnRLRVkIBQ0kdDAxNzEwMTE3MjM5Al80BApjbGFpbWVkS0VZCQEKa2V5Q2xhaW1lZAIFDnVzZXJBZGRyZXNzU3RyBQVhc3NldAQNJHQwMTcyOTkxNzMzNgUFYWNjdW0EBGRhdGEIBQ0kdDAxNzI5OTE3MzM2Al8xBBFjbGFpbWVkQW10QnlBc3NldAgFDSR0MDE3Mjk5MTczMzYCXzIEB25ld1BhcnQJALkJAgkAzAgCBQVhc3NldAkAzAgCCQCkAwEFC3Jld2FyZFRvdGFsBQNuaWwCAToEFGNsYWltZWRBbXRCeUFzc2V0TmV3CQC5CQIJAMwIAgURY2xhaW1lZEFtdEJ5QXNzZXQJAMwIAgUHbmV3UGFydAUDbmlsAgFfAwkAZwIAAAULcmV3YXJkVG90YWwJAJQKAgUEZGF0YQUUY2xhaW1lZEFtdEJ5QXNzZXROZXcJAJQKAgkAzQgCCQDNCAIJAM0IAgUEZGF0YQkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFC3Jld2FyZFRvdGFsCQELdG9Bc3NldFZlY3QBBQVhc3NldAkBDEludGVnZXJFbnRyeQIFCmNsYWltZWRLRVkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCmNsYWltZWRLRVkAAAULcmV3YXJkVG90YWwJAQxJbnRlZ2VyRW50cnkCBRNyZXdhcmRDYWNoZWRQYXJ0S0VZAAAFFGNsYWltZWRBbXRCeUFzc2V0TmV3BA0kdDAxNzc5NjE3OTA5CgACJGwFE3N1cHBvcnRlZEFzc2V0c0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAIACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAR9mb3JFYWNoQXNzZXRDYWxjVW5jbGFpbWVkUmV3YXJkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAyCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgQJdHJhbnNmZXJzCAUNJHQwMTc3OTYxNzkwOQJfMQQXY2xhaW1lZEFtdEJ5QXNzZXRSZXN1bHQIBQ0kdDAxNzc5NjE3OTA5Al8yAwkAZwIAAAkAkAMBBQl0cmFuc2ZlcnMJAJQKAgUDbmlsAAAJAJQKAgkAzQgCCQDNCAIFCXRyYW5zZmVycwkBDEludGVnZXJFbnRyeQIFG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQUOZGVwb3NpdE51bUxhc3QJARFDbGFpbUhpc3RvcnlFbnRyeQMFDnVzZXJBZGRyZXNzU3RyCAUBaQ10cmFuc2FjdGlvbklkCQCwAgIFF2NsYWltZWRBbXRCeUFzc2V0UmVzdWx0AAEJAJADAQUJdHJhbnNmZXJzAAhVU0ROVFlQRQIEVVNETgAITlNCVFRZUEUCBE5TQlQAEk5ldXRyaW5vQXNzZXRJZEtleQIRbmV1dHJpbm9fYXNzZXRfaWQAE05ldXRyaW5vQ29udHJhY3RLZXkCEW5ldXRyaW5vX2NvbnRyYWN0AA5Oc2J0QXNzZXRJZEtleQINYm9uZF9hc3NldF9pZAAKQmFsYW5jZUtleQILcnBkX2JhbGFuY2UAD25ldXRyaW5vQXNzZXRJZAkA2QQBCQEPZ2V0U3RyaW5nT3JGYWlsAgUQbmV1dHJpbm9Db250cmFjdAUSTmV1dHJpbm9Bc3NldElkS2V5AA5uc2J0QXNzZXRJZFN0cgkBD2dldFN0cmluZ09yRmFpbAIFEG5ldXRyaW5vQ29udHJhY3QFDk5zYnRBc3NldElkS2V5AAtuc2J0QXNzZXRJZAkA2QQBBQ5uc2J0QXNzZXRJZFN0cgERZ2V0VXNlckJhbGFuY2VLZXkCBW93bmVyB2Fzc2V0SWQJALkJAgkAzAgCBQpCYWxhbmNlS2V5CQDMCAIFB2Fzc2V0SWQJAMwIAgUFb3duZXIFA25pbAIBXwEVZ2V0Q29udHJhY3RCYWxhbmNlS2V5AQdhc3NldElkCQCsAgIJAKwCAgUKQmFsYW5jZUtleQIBXwUHYXNzZXRJZAESZ2V0Q29udHJhY3RCYWxhbmNlAQdhc3NldElkCQEMZ2V0SW50T3JFbHNlAgkBFWdldENvbnRyYWN0QmFsYW5jZUtleQEFB2Fzc2V0SWQAAAEOZ2V0VXNlckJhbGFuY2UCBW93bmVyB2Fzc2V0SWQJAQxnZXRJbnRPckVsc2UCCQERZ2V0VXNlckJhbGFuY2VLZXkCBQVvd25lcgUHYXNzZXRJZAAAARpnZXRWYWxpZFN0YWtpbmdBc3NldE9yRmFpbAILc3Rha2luZ1R5cGUHYXNzZXRJZAMDCQAAAgULc3Rha2luZ1R5cGUFCFVTRE5UWVBFCQECIT0CBQdhc3NldElkBQ9uZXV0cmlub0Fzc2V0SWQHCQACAQIRY2FuIHVzZSBVU0ROIG9ubHkDAwkAAAIFC3N0YWtpbmdUeXBlBQhOU0JUVFlQRQkBAiE9AgUHYXNzZXRJZAULbnNidEFzc2V0SWQHCQACAQIRY2FuIHVzZSBOU0JUIG9ubHkDAwkBAiE9AgULc3Rha2luZ1R5cGUFCFVTRE5UWVBFCQECIT0CBQtzdGFraW5nVHlwZQUITlNCVFRZUEUHCQACAQkArAICAhl1bnN1cHBvcnRlZCBzdGFraW5nIHR5cGUgBQtzdGFraW5nVHlwZQUHYXNzZXRJZAEOaW50ZXJuYWxVbmxvY2sEC3N0YWtpbmdUeXBlAWkMdW5sb2NrQW1vdW50DGFzc2V0SWRQYXJhbQQHYWNjb3VudAkApQgBCAUBaQZjYWxsZXIEB2Fzc2V0SWQJARpnZXRWYWxpZFN0YWtpbmdBc3NldE9yRmFpbAIFC3N0YWtpbmdUeXBlCQDZBAEFDGFzc2V0SWRQYXJhbQQNYXNzZXRJZFN0cmluZwkA2AQBBQdhc3NldElkBAdiYWxhbmNlCQBlAgkBDmdldFVzZXJCYWxhbmNlAgUHYWNjb3VudAUNYXNzZXRJZFN0cmluZwUMdW5sb2NrQW1vdW50AwkAZgIAAAUHYmFsYW5jZQkAAgECDmludmFsaWQgYW1vdW50CQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARVnZXRDb250cmFjdEJhbGFuY2VLZXkBBQ1hc3NldElkU3RyaW5nCQBlAgkBEmdldENvbnRyYWN0QmFsYW5jZQEFDWFzc2V0SWRTdHJpbmcFDHVubG9ja0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEWdldFVzZXJCYWxhbmNlS2V5AgUHYWNjb3VudAUNYXNzZXRJZFN0cmluZwUHYmFsYW5jZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQdhY2NvdW50BQx1bmxvY2tBbW91bnQFB2Fzc2V0SWQFA25pbAUEdW5pdA4BaQELY29uc3RydWN0b3IDDW1pbkxvY2tBbW91bnQVc3VwcG9ydGVkUmV3YXJkQXNzZXRzDnBTdGFrZWRBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARBrZXlNaW5Mb2NrQW1vdW50AAUNbWluTG9ja0Ftb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQEYa2V5U3VwcG9ydGVkUmV3YXJkQXNzZXRzAAUVc3VwcG9ydGVkUmV3YXJkQXNzZXRzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTdGFrZWRBc3NldElkAAUOcFN0YWtlZEFzc2V0SWQFA25pbAFpAQVzdGFrZQAJAQtjb21tb25TdGFrZQIIBQFpBmNhbGxlcgUBaQFpARNzdGFrZUJ5T3JpZ2luQ2FsbGVyAAkBC2NvbW1vblN0YWtlAggFAWkMb3JpZ2luQ2FsbGVyBQFpAWkBB3Vuc3Rha2UBBmFtb3VudAkBDWNvbW1vblVuc3Rha2UCBQZhbW91bnQFAWkBaQEHZGVwb3NpdAADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAh9leGFjdCAxIHBheW1lbnQgaXMgYWxsb3dlZCBvbmx5BANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQGYW1vdW50CAUDcG10BmFtb3VudAQKcG10QXNzZXRJZAkBC3ZhbHVlT3JFbHNlAggFA3BtdAdhc3NldElkBQdXQVZFU0lEBA1wbXRBc3NldElkU3RyCQDYBAEFCnBtdEFzc2V0SWQECHBtdE11bHRYAwkAAAIFCnBtdEFzc2V0SWQFB1dBVkVTSUQFBk1VTFRYOAUGTVVMVFg2BAdhbW91bnRYCQC2AgEFBmFtb3VudAQLdG90YWxTdGFrZWQJAQxnZXRJbnRPckVsc2UCCQEXa2V5TG9ja1BhcmFtVG90YWxBbW91bnQAAAAEDHRvdGFsU3Rha2VkWAkAtgIBBQt0b3RhbFN0YWtlZAMJAGYCAAAFC3RvdGFsU3Rha2VkCQACAQIbVE9ETzogY2FzZSBpcyBub3Qgc3VwcG9ydGVkAwkAAAIFC3RvdGFsU3Rha2VkAAAJASJJbmNyZW1lbnROb3REaXN0cmlidXRlZFJld2FyZEVudHJ5AgUNcG10QXNzZXRJZFN0cgUGYW1vdW50BBByZXdhcmRQZXJOc2J0WDE4CQC8AgMFB2Ftb3VudFgFB01VTFRYMTgFDHRvdGFsU3Rha2VkWAQRZGVwb3NpdE51bUxhc3RLRVkJARFrZXlEZXBvc2l0TnVtTGFzdAAEDmRlcG9zaXROdW1MYXN0CQEMZ2V0SW50T3JFbHNlAgURZGVwb3NpdE51bUxhc3RLRVkA////////////AQQNZGVwb3NpdE51bU5ldwkAZAIFDmRlcG9zaXROdW1MYXN0AAEDCQEBIQEJAQhjb250YWlucwIFEnN1cHBvcnRlZEFzc2V0c1N0cgUNcG10QXNzZXRJZFN0cgkAAgEJAKwCAgkArAICBRJzdXBwb3J0ZWRBc3NldHNTdHICESBkb2Vzbid0IGNvbnRhaW4gBQ1wbXRBc3NldElkU3RyCgEXcmVmcmVzaFJld2FyZFBlck5zYnRTVU0CBWFjY3VtCW5leHRBc3NldAQWcmV3YXJkUGVyTnNidFN1bU5ld0tFWQkBFWtleVJld2FyZFBlck5zYnRTdW1BdAIFDWRlcG9zaXROdW1OZXcFCW5leHRBc3NldAQKc3VtTGFzdFN0cgkBDGdldFN0ck9yRWxzZQIJARVrZXlSZXdhcmRQZXJOc2J0U3VtQXQCBQ5kZXBvc2l0TnVtTGFzdAUJbmV4dEFzc2V0AgEwCQDNCAIFBWFjY3VtAwkAAAIFCW5leHRBc3NldAUNcG10QXNzZXRJZFN0cgkBC1N0cmluZ0VudHJ5AgUWcmV3YXJkUGVyTnNidFN1bU5ld0tFWQkApgMBCQC3AgIJAKcDAQUKc3VtTGFzdFN0cgUQcmV3YXJkUGVyTnNidFgxOAkBC1N0cmluZ0VudHJ5AgUWcmV3YXJkUGVyTnNidFN1bU5ld0tFWQUKc3VtTGFzdFN0cgkAzggCCQDNCAIKAAIkbAUTc3VwcG9ydGVkQXNzZXRzTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEXcmVmcmVzaFJld2FyZFBlck5zYnRTVU0CBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDIJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACCQEMSW50ZWdlckVudHJ5AgURZGVwb3NpdE51bUxhc3RLRVkFDWRlcG9zaXROdW1OZXcJARVEZXBvc2l0c1RvdGFsc0VudHJpZXMCBQZhbW91bnQFDXBtdEFzc2V0SWRTdHIBaQEMY2xhaW1SZXdhcmRzAAkBC2NvbW1vbkNsYWltAggFAWkGY2FsbGVyBQFpAWkBGmNsYWltUmV3YXJkc0J5T3JpZ2luQ2FsbGVyAAkBC2NvbW1vbkNsYWltAggFAWkMb3JpZ2luQ2FsbGVyBQFpAWkBGHVuY2xhaW1lZFJld2FyZHNSRUFET05MWQEOdXNlckFkZHJlc3NTdHIKARZmb3JFYWNoQXNzZXRaZXJvUmV3YXJkAgVhY2N1bQVhc3NldAkArAICCQCsAgIFBWFjY3VtCQC5CQIJAMwIAgUFYXNzZXQJAMwIAgIBMAkAzAgCAgEwBQNuaWwCAToCAV8EEnVuY2xhaW1lZFJld2FyZFN0cgMJAAACBQ51c2VyQWRkcmVzc1N0cgIACgACJGwFE3N1cHBvcnRlZEFzc2V0c0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwAgAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBFmZvckVhY2hBc3NldFplcm9SZXdhcmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDIJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACBAt1c2VyQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUOdXNlckFkZHJlc3NTdHIEDSR0MDIyOTY0MjMwNzgJAQt2YWx1ZU9yRWxzZQIJARNnZXRVc2VyUGFyYW1zT3JVbml0AQUOdXNlckFkZHJlc3NTdHIJAJUKAwYAAAAABAlpc05ld1VzZXIIBQ0kdDAyMjk2NDIzMDc4Al8xBAxzdGFrZWRBbW91bnQIBQ0kdDAyMjk2NDIzMDc4Al8yBBJzdGFraW5nU3RhcnRIZWlnaHQIBQ0kdDAyMjk2NDIzMDc4Al8zBA1zdGFrZWRBbW91bnRYCQC2AgEFDHN0YWtlZEFtb3VudAQbdXNlclJld2FyZEZyb21EZXBvc2l0TnVtS0VZCQEba2V5VXNlclJld2FyZEZyb21EZXBvc2l0TnVtAQUOdXNlckFkZHJlc3NTdHIEDmRlcG9zaXROdW1Vc2VyCQEMZ2V0SW50T3JFbHNlAgUbdXNlclJld2FyZEZyb21EZXBvc2l0TnVtS0VZAP///////////wEEDmRlcG9zaXROdW1MYXN0CQEMZ2V0SW50T3JFbHNlAgkBEWtleURlcG9zaXROdW1MYXN0AAD///////////8BCgEfZm9yRWFjaEFzc2V0Q2FsY1VuY2xhaW1lZFJld2FyZAIFYWNjdW0FYXNzZXQEDSR0MDIzNDI0MjM1NjIJAQpjYWxjUmV3YXJkBQUOdXNlckFkZHJlc3NTdHIFBWFzc2V0BQ1zdGFrZWRBbW91bnRYBQ5kZXBvc2l0TnVtVXNlcgUOZGVwb3NpdE51bUxhc3QEC3Jld2FyZFRvdGFsCAUNJHQwMjM0MjQyMzU2MgJfMQQGY2FjaGVkCAUNJHQwMjM0MjQyMzU2MgJfMgQHZHluYW1pYwgFDSR0MDIzNDI0MjM1NjICXzMEE3Jld2FyZENhY2hlZFBhcnRLRVkIBQ0kdDAyMzQyNDIzNTYyAl80BAdjbGFpbWVkCQELdmFsdWVPckVsc2UCCQCfCAEJAQprZXlDbGFpbWVkAgUOdXNlckFkZHJlc3NTdHIFBWFzc2V0AAAJAKwCAgkArAICBQVhY2N1bQkAuQkCCQDMCAIFBWFzc2V0CQDMCAIJAKQDAQULcmV3YXJkVG90YWwJAMwIAgkApAMBBQdjbGFpbWVkBQNuaWwCAToCAV8KAAIkbAUTc3VwcG9ydGVkQXNzZXRzTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzACAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEfZm9yRWFjaEFzc2V0Q2FsY1VuY2xhaW1lZFJld2FyZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgMgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIJAJQKAgUDbmlsCQCzAgIFEnVuY2xhaW1lZFJld2FyZFN0cgABAWkBFnVzZG5TdGFraW5nU1lTUkVBRE9OTFkCFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQh1c2RuRGlmZgQSdXNkblRvdGFsQW10U3Rha2VkCQEMZ2V0SW50T3JFbHNlAgkBF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50AAAAAwkAAAIFFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQIACQCUCgIFA25pbAkAzAgCAAAJAMwIAgUSdXNkblRvdGFsQW10U3Rha2VkCQDMCAIAAAUDbmlsBAt1c2VyQWRkcmVzcwkBD3RvQWRkcmVzc09yRmFpbAEFFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQQKbWVyZ2VkRGF0YQkBCm1lcmdlU3Rha2UCBRV1c2VyQWRkcmVzc1N0ck9yRW1wdHkFCHVzZG5EaWZmBAlpc05ld1VzZXIIBQptZXJnZWREYXRhAl8xBBB1c2RuU3Rha2VkQnlVc2VyCAUKbWVyZ2VkRGF0YQJfMgQSc3Rha2luZ1N0YXJ0SGVpZ2h0CAUKbWVyZ2VkRGF0YQJfMwQPc3Rha2VkQW1vdW50TkVXCAUKbWVyZ2VkRGF0YQJfNAkAlAoCBQNuaWwJAMwIAgUQdXNkblN0YWtlZEJ5VXNlcgkAzAgCBRJ1c2RuVG90YWxBbXRTdGFrZWQFA25pbAFpARFjb25maWdTWVNSRUFET05MWQAECm1pbkxvY2tBbXQJARFAZXh0ck5hdGl2ZSgxMDU1KQEJARBrZXlNaW5Mb2NrQW1vdW50AAkAlAoCBQNuaWwJAMwIAgUKbWluTG9ja0FtdAUDbmlsAWkBDmxvY2tOZXV0cmlub1NQAghyZWNlaXZlcgVzaGFyZQkBC2NvbW1vblN0YWtlAggFAWkGY2FsbGVyBQFpAWkBDGxvY2tOZXV0cmlubwAJAQtjb21tb25TdGFrZQIIBQFpBmNhbGxlcgUBaQFpAQ51bmxvY2tOZXV0cmlubwIMdW5sb2NrQW1vdW50DWFzc2V0SWRTdHJpbmcJAQ1jb21tb25VbnN0YWtlAgUMdW5sb2NrQW1vdW50BQFpAWkBCnVubG9ja05zYnQCDHVubG9ja0Ftb3VudA1hc3NldElkU3RyaW5nCQEOaW50ZXJuYWxVbmxvY2sEBQhOU0JUVFlQRQUBaQUMdW5sb2NrQW1vdW50BQ1hc3NldElkU3RyaW5nAQJ0eAEGdmVyaWZ5AAQTcHViS2V5QWRtaW5zTGlzdFN0cgkAuQkCCQDMCAICLEV4dEVFSzE5bm1LajltQ3BuV3l2RUVKRllBVExNY1ZFTXZvaGhVSGt5SE5tCQDMCAICLEV2NXB5NUZmQlFYOWNacFlLbmZRclRCNDlCeWY4UW1wWldlRFZSaW00eVY3CQDMCAICLERVdXVMalh1OThuQndaYzdmcXdDVGp0QTNublJ3Z1Ria01TcjVTVTJObURSCQDMCAICLERVdXVMalh1OThuQndaYzdmcXdDVGp0QTNublJ3Z1Ria01TcjVTVTJObURSBQNuaWwFA1NFUAQQcHViS2V5QWRtaW5zTGlzdAkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD2NvbnRyb2xDb250cmFjdAIMJXNfX211bHRpc2lnBRNwdWJLZXlBZG1pbnNMaXN0U3RyBQNTRVAEBWNvdW50CQBkAgkAZAIJAGQCAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAkA2QQBCQCRAwIFEHB1YktleUFkbWluc0xpc3QAAAABAAADCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwABCQDZBAEJAJEDAgUQcHViS2V5QWRtaW5zTGlzdAABAAEAAAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIJANkEAQkAkQMCBRBwdWJLZXlBZG1pbnNMaXN0AAIAAQAAAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAwkA2QQBCQCRAwIFEHB1YktleUFkbWluc0xpc3QAAwACAAAJAGcCBQVjb3VudAADMc5tbQ==", "chainId": 84, "height": 2279208, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BAk3WBRB9ftqvAH6Qc357RPUTfCsoc2U7DRSgtvLWXb9 Next: 3i4Kd15QJzxL6YABmmnBDfiTnp1dsrickaUysfZBDjAg Diff:
OldNewDifferences
9191
9292 let S = split(R, "_")
9393
94-func T (U) = makeString(["%s%s%s", "paramByUser", toString(U), "amount"], a)
94+func T (U) = makeString(["%s%s%s", "paramByUser", U, "amount"], a)
9595
9696
97-func V (U) = makeString(["%s%s%s", "paramByUser", toString(U), "start"], a)
97+func V (U) = makeString(["%s%s%s", "paramByUser", U, "start"], a)
9898
9999
100100 func W (X,U,Y) = makeString(["%s%s%s%s", "history", X, U, toBase58String(Y)], a)
202202 }
203203
204204
205-func aW (U,aX,aY) = [IntegerEntry(T(U), aX), IntegerEntry(V(U), aY)]
205+func aW (U,aX,aY) = [IntegerEntry(ao(U, O), aX), IntegerEntry(T(U), aX), IntegerEntry(V(U), aY)]
206206
207207
208208 func aZ () = $Tuple2(fromBase58String(u(this, B())), x(A()))
216216 else unit
217217
218218
219-func bc (U) = valueOrErrorMessage(bb(U), (("User " + toString(U)) + " is not defined"))
219+func bc (U) = valueOrErrorMessage(bb(U), (("User " + U) + " is not defined"))
220220
221221
222222 func bd (U,be,bf,bg,bh) = {
343343 then throw(cp)
344344 else {
345345 let cq = toString(U)
346- let cr = ci(U, aX)
346+ let cr = ci(cq, aX)
347347 let bN = cr._1
348348 let bO = cr._2
349349 let aY = cr._3
357357 let ct = cs._1
358358 let cu = cs._2
359359 let cv = cs._3
360- ((([aM("stake", cq, cn.transactionId, bO, cl)] ++ bM(bN, cq, bO)) ++ aW(U, cl, aY)) ++ ct)
360+ ((([aM("stake", cq, cn.transactionId, bO, cl)] ++ bM(bN, cq, bO)) ++ aW(cq, cl, aY)) ++ ct)
361361 }
362362 }
363363 }
368368 else {
369369 let U = cn.caller
370370 let cq = toString(U)
371- let cx = bc(U)
371+ let cx = bc(cq)
372372 let bN = cx._1
373373 let bO = cx._2
374374 let aY = cx._3
391391 let ct = cB._1
392392 let cu = cB._2
393393 let cv = cB._3
394- ((([ScriptTransfer(U, aX, P), aM("unstake", cq, cn.transactionId, bO, cl)] ++ bM(false, cq, bO)) ++ aW(U, cl, aY)) ++ ct)
394+ ((([ScriptTransfer(U, aX, P), aM("unstake", cq, cn.transactionId, bO, cl)] ++ bM(false, cq, bO)) ++ aW(cq, cl, aY)) ++ ct)
395395 }
396396 }
397397
401401 if ((size(cn.payments) > 0))
402402 then throw("payments are not accepted")
403403 else {
404- let cD = valueOrElse(bb(U), $Tuple3(true, 0, 0))
404+ let cD = valueOrElse(bb(cq), $Tuple3(true, 0, 0))
405405 let bN = cD._1
406406 let bO = cD._2
407407 let cE = cD._3
612612 }
613613 else {
614614 let U = addressFromStringValue(cq)
615- let dD = valueOrElse(bb(U), $Tuple3(true, 0, 0))
615+ let dD = valueOrElse(bb(cq), $Tuple3(true, 0, 0))
616616 let bN = dD._1
617617 let bO = dD._2
618618 let aY = dD._3
655655 then $Tuple2(nil, [0, dI, 0])
656656 else {
657657 let U = aw(dG)
658- let cr = ci(U, dH)
658+ let cr = ci(dG, dH)
659659 let bN = cr._1
660660 let dJ = cr._2
661661 let aY = cr._3
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 1000000
77
88 let c = 100000000
99
1010 let d = toBigInt(b)
1111
1212 let e = toBigInt(c)
1313
1414 let f = toBigInt(1000000000000000000)
1515
1616 let g = "WAVES"
1717
1818 let h = fromBase58String(g)
1919
2020 let i = 86400000
2121
2222 let j = 1
2323
2424 let k = 2
2525
2626 let l = 3
2727
2828 let m = 4
2929
3030 let n = 5
3131
3232 let o = 6
3333
3434 let p = 7
3535
3636 let q = 8
3737
3838 let r = 9
3939
4040 let s = 10
4141
4242 let t = 11
4343
4444 func u (v,w) = valueOrErrorMessage(getString(v, w), (((("mandatory " + toString(v)) + ".") + w) + " is not defined"))
4545
4646
4747 func x (w) = valueOrErrorMessage(getInteger(this, w), (("Mandatory this." + w) + " is not defined"))
4848
4949
5050 func y (w,z) = valueOrElse(getString(this, w), z)
5151
5252
5353 func A () = "%s__minLockAmount"
5454
5555
5656 func B () = "%s__stakedAssetId"
5757
5858
5959 func C () = "%s%s__config__controlAddress"
6060
6161
6262 func D () = "%s__controlConfig"
6363
6464
6565 func E () = "supportedRewardAssets"
6666
6767
6868 func F (G) = split_4C(u(G, D()), a)
6969
7070
7171 func H (I,J) = valueOrErrorMessage(addressFromString(I[J]), ("Control cfg doesn't contain address at index " + toString(J)))
7272
7373
7474 let K = addressFromStringValue(valueOrElse(getString(this, C()), "3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx"))
7575
7676 let I = F(K)
7777
7878 let L = H(I, m)
7979
8080 let M = H(I, j)
8181
8282 let N = H(I, k)
8383
8484 let O = u(this, B())
8585
8686 let P = fromBase58String(O)
8787
8888 let Q = x(A())
8989
9090 let R = y(E(), "")
9191
9292 let S = split(R, "_")
9393
94-func T (U) = makeString(["%s%s%s", "paramByUser", toString(U), "amount"], a)
94+func T (U) = makeString(["%s%s%s", "paramByUser", U, "amount"], a)
9595
9696
97-func V (U) = makeString(["%s%s%s", "paramByUser", toString(U), "start"], a)
97+func V (U) = makeString(["%s%s%s", "paramByUser", U, "start"], a)
9898
9999
100100 func W (X,U,Y) = makeString(["%s%s%s%s", "history", X, U, toBase58String(Y)], a)
101101
102102
103103 func Z () = makeString(["%s%s", "stats", "activeTotalLocked"], a)
104104
105105
106106 func aa () = makeString(["%s%s", "stats", "locksCount"], a)
107107
108108
109109 func ab () = makeString(["%s%s", "stats", "activeUsersCount"], a)
110110
111111
112112 func ac (ad) = makeString(["%s%s%d", "stats", "depositAmtByDay", toString(ad)], a)
113113
114114
115115 func ae () = makeString(["%s%s%d", "stats", "depositAmtTotals"], a)
116116
117117
118118 func af () = "%s__nextPeriod"
119119
120120
121121 func ag () = makeString(["%s%s%s", "dep", "lastNum"], a)
122122
123123
124124 func ah (U) = makeString(["%s%s%s", "userRwdFromDepNum", U], a)
125125
126126
127127 func ai (aj,ak) = makeString(["%s%d", "rwdPerNsbtSumByDepNum", toString(aj), ak], a)
128128
129129
130130 func al (U,ak) = makeString(["%s%s%s", "rwd", U, ak], a)
131131
132132
133133 func am (U,ak) = makeString(["%s%s%s", "clm", U, ak], a)
134134
135135
136136 func an (ak) = makeString(["%s%s", "notDistributed", ak], a)
137137
138138
139139 func ao (ap,ak) = makeString(["rpd_balance", ak, ap], a)
140140
141141
142142 func aq (ak) = makeString(["rpd_balance", ak], a)
143143
144144
145145 func ar (as,at) = fraction(toBigInt(as), f, at)
146146
147147
148148 func au (w) = valueOrElse(getInteger(this, w), 0)
149149
150150
151151 func av (w,z) = valueOrElse(getInteger(this, w), z)
152152
153153
154154 func aw (ax) = valueOrErrorMessage(addressFromString(ax), ("couldn't parse passed addressStr=" + ax))
155155
156156
157157 func ay (az) = if ((az == g))
158158 then unit
159159 else fromBase58String(az)
160160
161161
162162 func aA (aB) = {
163163 let aC = aB
164164 if ($isInstanceOf(aC, "Int"))
165165 then {
166166 let aD = aC
167167 aD
168168 }
169169 else throw("fail to cast into Int")
170170 }
171171
172172
173173 func aE (aF) = {
174174 let aC = aF
175175 if ($isInstanceOf(aC, "(Int, Int, Int, Int, Int, Int, Int)"))
176176 then {
177177 let aG = aC
178178 aG
179179 }
180180 else throw("fail to cast into Int")
181181 }
182182
183183
184184 func aH (U,aI,aJ) = makeString(["%s%d%d%d%d", U, toString(lastBlock.height), toString(lastBlock.timestamp), toString(aI), toString(aJ)], a)
185185
186186
187187 func aK (U,aL) = makeString(["%s%d%d%s", U, toString(lastBlock.height), toString(lastBlock.timestamp), aL], a)
188188
189189
190190 func aM (X,U,Y,aI,aJ) = StringEntry(W(X, U, Y), aH(U, aI, aJ))
191191
192192
193193 func aN (U,Y,aL) = StringEntry(W("claim", U, Y), aK(U, aL))
194194
195195
196196 func aO (aP,aQ,aR) = {
197197 let aS = au(aa())
198198 let aT = au(ab())
199199 let aU = au(Z())
200200 let aV = (aU + aP)
201201 $Tuple3([IntegerEntry(aa(), (aS + aQ)), IntegerEntry(ab(), (aT + aR)), IntegerEntry(Z(), aV), IntegerEntry(aq(O), aV)], aU, aV)
202202 }
203203
204204
205-func aW (U,aX,aY) = [IntegerEntry(T(U), aX), IntegerEntry(V(U), aY)]
205+func aW (U,aX,aY) = [IntegerEntry(ao(U, O), aX), IntegerEntry(T(U), aX), IntegerEntry(V(U), aY)]
206206
207207
208208 func aZ () = $Tuple2(fromBase58String(u(this, B())), x(A()))
209209
210210
211211 func ba (U) = (av(T(U), 0) > 0)
212212
213213
214214 func bb (U) = if (ba(U))
215215 then $Tuple3(false, x(T(U)), x(V(U)))
216216 else unit
217217
218218
219-func bc (U) = valueOrErrorMessage(bb(U), (("User " + toString(U)) + " is not defined"))
219+func bc (U) = valueOrErrorMessage(bb(U), (("User " + U) + " is not defined"))
220220
221221
222222 func bd (U,be,bf,bg,bh) = {
223223 let bi = ai(bh, be)
224224 let bj = parseBigIntValue(y(ai(bh, be), "0"))
225225 let bk = parseBigIntValue(y(ai(bg, be), "0"))
226226 let bl = toInt(fraction((bj - bk), bf, f))
227227 let bm = al(U, be)
228228 let bn = av(bm, 0)
229229 $Tuple4((bn + bl), bn, bl, bm)
230230 }
231231
232232
233233 func bo (ad) = ((ad / i) * i)
234234
235235
236236 func bp (bq,br,bs) = {
237237 let bt = valueOrErrorMessage(indexOf(bq, br), ((("there is no substring " + br) + " in ") + bq))
238238 if ((bt == 0))
239239 then 0
240240 else {
241241 let bu = take(bq, bt)
242242 (size(split(bu, bs)) - 1)
243243 }
244244 }
245245
246246
247247 let bv = "%d%d"
248248
249249 func bw (bx,by,bz) = {
250250 let bA = split(bx, a)
251251 func bB (J) = if ((J != by))
252252 then bA[J]
253253 else toString((parseIntValue(bA[J]) + bz))
254254
255255 makeString([bv, bB(1), bB(2)], a)
256256 }
257257
258258
259259 func bC (bD,bE) = {
260260 let bF = bo(lastBlock.timestamp)
261261 let bG = ac(bF)
262262 let bH = ae()
263263 let bI = bp(R, bE, "_")
264264 let bJ = (bv + "__0__0")
265265 let bK = valueOrElse(getString(this, bH), bJ)
266266 let bL = bw(bK, (bI + 1), bD)
267267 [StringEntry(bH, bL), StringEntry(bG, bL)]
268268 }
269269
270270
271271 func bM (bN,U,bO) = {
272272 let bf = toBigInt(bO)
273273 let bP = ah(U)
274274 let bg = av(bP, -1)
275275 let bh = av(ag(), -1)
276276 func bQ (bR,bS) = {
277277 let bT = bd(U, bS, bf, bg, bh)
278278 let bU = bT._1
279279 let bV = bT._2
280280 let bW = bT._3
281281 let bm = bT._4
282282 (bR :+ IntegerEntry(bm, bU))
283283 }
284284
285285 if (if ((bh == -1))
286286 then (bg == -1)
287287 else false)
288288 then nil
289289 else if (if ((bh == -1))
290290 then (bg > -1)
291291 else false)
292292 then throw("invalid depositNumLast and depositNumUser state")
293293 else if (if ((bh > -1))
294294 then (bg >= -1)
295295 else false)
296296 then if (bN)
297297 then [IntegerEntry(bP, bh)]
298298 else ({
299299 let bX = S
300300 let bY = size(bX)
301301 let bZ = nil
302302 func ca (cb,cc) = if ((cc >= bY))
303303 then cb
304304 else bQ(cb, bX[cc])
305305
306306 func cd (cb,cc) = if ((cc >= bY))
307307 then cb
308308 else throw("List size exceeds 2")
309309
310310 cd(ca(ca(bZ, 0), 1), 2)
311311 } :+ IntegerEntry(bP, bh))
312312 else throw(((("uncovered condition: depositNumLast=" + toString(bh)) + " depositNumUser=") + toString(bg)))
313313 }
314314
315315
316316 func ce (ak,cf) = {
317317 let cg = an(ak)
318318 let ch = av(cg, 0)
319319 [IntegerEntry(cg, (ch + cf))]
320320 }
321321
322322
323323 func ci (U,cj) = {
324324 let ck = valueOrElse(bb(U), $Tuple3(true, 0, height))
325325 let bN = ck._1
326326 let bO = ck._2
327327 let aY = ck._3
328328 let cl = if (bN)
329329 then cj
330330 else (cj + bO)
331331 $Tuple4(bN, bO, aY, cl)
332332 }
333333
334334
335335 func cm (U,cn) = if ((size(cn.payments) != 1))
336336 then throw("Invalid payments size")
337337 else {
338338 let co = cn.payments[0]
339339 let aX = co.amount
340340 let cp = (("Invalid asset. " + toBase58String(P)) + " is expected")
341341 let be = valueOrErrorMessage(co.assetId, cp)
342342 if ((be != P))
343343 then throw(cp)
344344 else {
345345 let cq = toString(U)
346- let cr = ci(U, aX)
346+ let cr = ci(cq, aX)
347347 let bN = cr._1
348348 let bO = cr._2
349349 let aY = cr._3
350350 let cl = cr._4
351351 if ((Q > cl))
352352 then throw(("Min lock amount is " + toString(Q)))
353353 else {
354354 let cs = aO(aX, 1, if (bN)
355355 then 1
356356 else 0)
357357 let ct = cs._1
358358 let cu = cs._2
359359 let cv = cs._3
360- ((([aM("stake", cq, cn.transactionId, bO, cl)] ++ bM(bN, cq, bO)) ++ aW(U, cl, aY)) ++ ct)
360+ ((([aM("stake", cq, cn.transactionId, bO, cl)] ++ bM(bN, cq, bO)) ++ aW(cq, cl, aY)) ++ ct)
361361 }
362362 }
363363 }
364364
365365
366366 func cw (aX,cn) = if ((size(cn.payments) != 0))
367367 then throw("unstake doesn't require any payment")
368368 else {
369369 let U = cn.caller
370370 let cq = toString(U)
371- let cx = bc(U)
371+ let cx = bc(cq)
372372 let bN = cx._1
373373 let bO = cx._2
374374 let aY = cx._3
375375 let cy = aE(reentrantInvoke(M, "swapParamsByUserSYSREADONLY", [cq, 0], nil))
376376 let cz = cy._2
377377 let cA = cy._3
378378 if ((cz > 0))
379379 then throw((("You have already made a swap operation. Wait " + toString((height + cA))) + " height to unstake"))
380380 else if ((0 >= bO))
381381 then throw("Nothing to unstake")
382382 else if ((aX > bO))
383383 then throw(((("Requested " + toString(aX)) + ", but staked only ") + toString(bO)))
384384 else {
385385 let cl = (bO - aX)
386386 let cB = aO(-(aX), if ((aX == bO))
387387 then -1
388388 else 0, if ((aX == bO))
389389 then -1
390390 else 0)
391391 let ct = cB._1
392392 let cu = cB._2
393393 let cv = cB._3
394- ((([ScriptTransfer(U, aX, P), aM("unstake", cq, cn.transactionId, bO, cl)] ++ bM(false, cq, bO)) ++ aW(U, cl, aY)) ++ ct)
394+ ((([ScriptTransfer(U, aX, P), aM("unstake", cq, cn.transactionId, bO, cl)] ++ bM(false, cq, bO)) ++ aW(cq, cl, aY)) ++ ct)
395395 }
396396 }
397397
398398
399399 func cC (U,cn) = {
400400 let cq = toString(U)
401401 if ((size(cn.payments) > 0))
402402 then throw("payments are not accepted")
403403 else {
404- let cD = valueOrElse(bb(U), $Tuple3(true, 0, 0))
404+ let cD = valueOrElse(bb(cq), $Tuple3(true, 0, 0))
405405 let bN = cD._1
406406 let bO = cD._2
407407 let cE = cD._3
408408 let bf = toBigInt(bO)
409409 let bP = ah(cq)
410410 let bg = av(bP, -1)
411411 let bh = av(ag(), -1)
412412 func cF (bR,bS) = {
413413 let cG = bd(cq, bS, bf, bg, bh)
414414 let bU = cG._1
415415 let bV = cG._2
416416 let bW = cG._3
417417 let bm = cG._4
418418 let cH = am(cq, bS)
419419 let cI = bR
420420 let cJ = cI._1
421421 let cK = cI._2
422422 let cL = makeString([bS, toString(bU)], ":")
423423 let cM = makeString([cK, cL], "_")
424424 if ((0 >= bU))
425425 then $Tuple2(cJ, cM)
426426 else $Tuple2((((cJ :+ ScriptTransfer(U, bU, ay(bS))) :+ IntegerEntry(cH, (valueOrElse(getInteger(cH), 0) + bU))) :+ IntegerEntry(bm, 0)), cM)
427427 }
428428
429429 let cN = {
430430 let bX = S
431431 let bY = size(bX)
432432 let bZ = $Tuple2(nil, "")
433433 func ca (cb,cc) = if ((cc >= bY))
434434 then cb
435435 else cF(cb, bX[cc])
436436
437437 func cd (cb,cc) = if ((cc >= bY))
438438 then cb
439439 else throw("List size exceeds 2")
440440
441441 cd(ca(ca(bZ, 0), 1), 2)
442442 }
443443 let cO = cN._1
444444 let cP = cN._2
445445 if ((0 >= size(cO)))
446446 then $Tuple2(nil, 0)
447447 else $Tuple2(((cO :+ IntegerEntry(bP, bh)) :+ aN(cq, cn.transactionId, drop(cP, 1))), size(cO))
448448 }
449449 }
450450
451451
452452 let cQ = "USDN"
453453
454454 let cR = "NSBT"
455455
456456 let cS = "neutrino_asset_id"
457457
458458 let cT = "neutrino_contract"
459459
460460 let cU = "bond_asset_id"
461461
462462 let cV = "rpd_balance"
463463
464464 let cW = fromBase58String(u(M, cS))
465465
466466 let cX = u(M, cU)
467467
468468 let cY = fromBase58String(cX)
469469
470470 func cZ (da,be) = makeString([cV, be, da], "_")
471471
472472
473473 func db (be) = ((cV + "_") + be)
474474
475475
476476 func dc (be) = av(db(be), 0)
477477
478478
479479 func dd (da,be) = av(cZ(da, be), 0)
480480
481481
482482 func de (df,be) = if (if ((df == cQ))
483483 then (be != cW)
484484 else false)
485485 then throw("can use USDN only")
486486 else if (if ((df == cR))
487487 then (be != cY)
488488 else false)
489489 then throw("can use NSBT only")
490490 else if (if ((df != cQ))
491491 then (df != cR)
492492 else false)
493493 then throw(("unsupported staking type " + df))
494494 else be
495495
496496
497497 func dg (df,cn,dh,di) = {
498498 let dj = toString(cn.caller)
499499 let be = de(df, fromBase58String(di))
500500 let dk = toBase58String(be)
501501 let dl = (dd(dj, dk) - dh)
502502 if ((0 > dl))
503503 then throw("invalid amount")
504504 else $Tuple2([IntegerEntry(db(dk), (dc(dk) - dh)), IntegerEntry(cZ(dj, dk), dl), ScriptTransfer(addressFromStringValue(dj), dh, be)], unit)
505505 }
506506
507507
508508 @Callable(cn)
509509 func constructor (Q,dm,dn) = if ((cn.caller != this))
510510 then throw("Permission denied")
511511 else [IntegerEntry(A(), Q), StringEntry(E(), dm), StringEntry(B(), dn)]
512512
513513
514514
515515 @Callable(cn)
516516 func stake () = cm(cn.caller, cn)
517517
518518
519519
520520 @Callable(cn)
521521 func stakeByOriginCaller () = cm(cn.originCaller, cn)
522522
523523
524524
525525 @Callable(cn)
526526 func unstake (aX) = cw(aX, cn)
527527
528528
529529
530530 @Callable(cn)
531531 func deposit () = if ((size(cn.payments) != 1))
532532 then throw("exact 1 payment is allowed only")
533533 else {
534534 let do = cn.payments[0]
535535 let aX = do.amount
536536 let dp = valueOrElse(do.assetId, h)
537537 let dq = toBase58String(dp)
538538 let dr = if ((dp == h))
539539 then e
540540 else d
541541 let ds = toBigInt(aX)
542542 let cu = av(Z(), 0)
543543 let dt = toBigInt(cu)
544544 if ((0 > cu))
545545 then throw("TODO: case is not supported")
546546 else if ((cu == 0))
547547 then ce(dq, aX)
548548 else {
549549 let du = fraction(ds, f, dt)
550550 let dv = ag()
551551 let bh = av(dv, -1)
552552 let dw = (bh + 1)
553553 if (!(contains(R, dq)))
554554 then throw(((R + " doesn't contain ") + dq))
555555 else {
556556 func dx (bR,dy) = {
557557 let dz = ai(dw, dy)
558558 let dA = y(ai(bh, dy), "0")
559559 (bR :+ (if ((dy == dq))
560560 then StringEntry(dz, toString((parseBigIntValue(dA) + du)))
561561 else StringEntry(dz, dA)))
562562 }
563563
564564 (({
565565 let bX = S
566566 let bY = size(bX)
567567 let bZ = nil
568568 func ca (cb,cc) = if ((cc >= bY))
569569 then cb
570570 else dx(cb, bX[cc])
571571
572572 func cd (cb,cc) = if ((cc >= bY))
573573 then cb
574574 else throw("List size exceeds 2")
575575
576576 cd(ca(ca(bZ, 0), 1), 2)
577577 } :+ IntegerEntry(dv, dw)) ++ bC(aX, dq))
578578 }
579579 }
580580 }
581581
582582
583583
584584 @Callable(cn)
585585 func claimRewards () = cC(cn.caller, cn)
586586
587587
588588
589589 @Callable(cn)
590590 func claimRewardsByOriginCaller () = cC(cn.originCaller, cn)
591591
592592
593593
594594 @Callable(cn)
595595 func unclaimedRewardsREADONLY (cq) = {
596596 func dB (bR,bS) = ((bR + makeString([bS, "0", "0"], ":")) + "_")
597597
598598 let dC = if ((cq == ""))
599599 then {
600600 let bX = S
601601 let bY = size(bX)
602602 let bZ = ""
603603 func ca (cb,cc) = if ((cc >= bY))
604604 then cb
605605 else dB(cb, bX[cc])
606606
607607 func cd (cb,cc) = if ((cc >= bY))
608608 then cb
609609 else throw("List size exceeds 2")
610610
611611 cd(ca(ca(bZ, 0), 1), 2)
612612 }
613613 else {
614614 let U = addressFromStringValue(cq)
615- let dD = valueOrElse(bb(U), $Tuple3(true, 0, 0))
615+ let dD = valueOrElse(bb(cq), $Tuple3(true, 0, 0))
616616 let bN = dD._1
617617 let bO = dD._2
618618 let aY = dD._3
619619 let bf = toBigInt(bO)
620620 let bP = ah(cq)
621621 let bg = av(bP, -1)
622622 let bh = av(ag(), -1)
623623 func cF (bR,bS) = {
624624 let dE = bd(cq, bS, bf, bg, bh)
625625 let bU = dE._1
626626 let bV = dE._2
627627 let bW = dE._3
628628 let bm = dE._4
629629 let dF = valueOrElse(getInteger(am(cq, bS)), 0)
630630 ((bR + makeString([bS, toString(bU), toString(dF)], ":")) + "_")
631631 }
632632
633633 let bX = S
634634 let bY = size(bX)
635635 let bZ = ""
636636 func ca (cb,cc) = if ((cc >= bY))
637637 then cb
638638 else cF(cb, bX[cc])
639639
640640 func cd (cb,cc) = if ((cc >= bY))
641641 then cb
642642 else throw("List size exceeds 2")
643643
644644 cd(ca(ca(bZ, 0), 1), 2)
645645 }
646646 $Tuple2(nil, dropRight(dC, 1))
647647 }
648648
649649
650650
651651 @Callable(cn)
652652 func usdnStakingSYSREADONLY (dG,dH) = {
653653 let dI = av(Z(), 0)
654654 if ((dG == ""))
655655 then $Tuple2(nil, [0, dI, 0])
656656 else {
657657 let U = aw(dG)
658- let cr = ci(U, dH)
658+ let cr = ci(dG, dH)
659659 let bN = cr._1
660660 let dJ = cr._2
661661 let aY = cr._3
662662 let cl = cr._4
663663 $Tuple2(nil, [dJ, dI])
664664 }
665665 }
666666
667667
668668
669669 @Callable(cn)
670670 func configSYSREADONLY () = {
671671 let dK = getIntegerValue(A())
672672 $Tuple2(nil, [dK])
673673 }
674674
675675
676676
677677 @Callable(cn)
678678 func lockNeutrinoSP (dL,dM) = cm(cn.caller, cn)
679679
680680
681681
682682 @Callable(cn)
683683 func lockNeutrino () = cm(cn.caller, cn)
684684
685685
686686
687687 @Callable(cn)
688688 func unlockNeutrino (dh,dk) = cw(dh, cn)
689689
690690
691691
692692 @Callable(cn)
693693 func unlockNsbt (dh,dk) = dg(cR, cn, dh, dk)
694694
695695
696696 @Verifier(dN)
697697 func dO () = {
698698 let dP = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], a)
699699 let dQ = split(valueOrElse(getString(K, "%s__multisig"), dP), a)
700700 let dR = ((((if (sigVerify(dN.bodyBytes, dN.proofs[0], fromBase58String(dQ[0])))
701701 then 1
702702 else 0) + (if (sigVerify(dN.bodyBytes, dN.proofs[1], fromBase58String(dQ[1])))
703703 then 1
704704 else 0)) + (if (sigVerify(dN.bodyBytes, dN.proofs[2], fromBase58String(dQ[2])))
705705 then 1
706706 else 0)) + (if (sigVerify(dN.bodyBytes, dN.proofs[3], fromBase58String(dQ[3])))
707707 then 2
708708 else 0))
709709 (dR >= 3)
710710 }
711711

github/deemru/w8io/873ac7e 
148.66 ms