tx · HD72t3xgpSkMgXpcCMTnkF2JHPpQN3rPRgYYatgnBTMq

3MuGfNhF98CNBCfthhoJEo6SYUv7zTgkK4J:  -0.03000000 Waves

2023.10.11 18:53 [2794155] smart account 3MuGfNhF98CNBCfthhoJEo6SYUv7zTgkK4J > SELF 0.00000000 Waves

{ "type": 13, "id": "HD72t3xgpSkMgXpcCMTnkF2JHPpQN3rPRgYYatgnBTMq", "fee": 3000000, "feeAssetId": null, "timestamp": 1697039632560, "version": 2, "chainId": 84, "sender": "3MuGfNhF98CNBCfthhoJEo6SYUv7zTgkK4J", "senderPublicKey": "4DthuG3xjZV9WtZ34Y66AummdAr67wRzwWsVQL4y2bob", "proofs": [ "RNxmiQDAvxAN39ppQt7kXXBdyCnsbPTjCGugj1GY8KWTauENnPSJWHVAZqzFQuWraGUCSzfj4953w5nyrDg359n", "33ctVqMPTJAXHMMc5tzkWSWapLU8Bh1W2QDdQpnUYvfR1Cp8fHR8eHgk43uLJCqhE9wJ2EVGwKeVqY6M85fcyrus", "5YnVHkw8S9HmUN4tyPf63eF6TNYgkwyyM4uVqgS6kkVaW8SusS3XxXsQCzU5YzsUzLRN4PiPcimNahsDr5yhdmMo" ], "script": "base64:BgIzCAISBwoFCAgBAQgSBAoCAQESABIDCgEBEgASABIAEgASABIDCgEIEgQKAggBEgQKAggBXgAJc2VwYXJhdG9yAgJfXwADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAAZNVUxUWDYJALYCAQUFTVVMVDYABk1VTFRYOAkAtgIBBQVNVUxUOAAHTVVMVFgxOAkAtgIBAICAkLu61q3wDQAKV0FWRVNJRFNUUgIFV0FWRVMAB1dBVkVTSUQJANkEAQUKV0FWRVNJRFNUUgAJREFZTUlMTElTAIC4mSkACU1BWEJBU0tFVAAJABlJZHhDb250cm9sQ2ZnTmV1dHJpbm9EYXBwAAEAGElkeENvbnRyb2xDZmdBdWN0aW9uRGFwcAACABRJZHhDb250cm9sQ2ZnUnBkRGFwcAADABVJZHhDb250cm9sQ2ZnTWF0aERhcHAABAAcSWR4Q29udHJvbENmZ0xpcXVpZGF0aW9uRGFwcAAFABVJZHhDb250cm9sQ2ZnUmVzdERhcHAABgAdSWR4Q29udHJvbENmZ05vZGVSZWdpc3RyeURhcHAABwAcSWR4Q29udHJvbENmZ05zYnRTdGFraW5nRGFwcAAIABlJZHhDb250cm9sQ2ZnTWVkaWF0b3JEYXBwAAkAG0lkeENvbnRyb2xDZmdHb3Zlcm5hbmNlRGFwcAANAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQCsAgIJAKwCAgkArAICCQCsAgICCm1hbmRhdG9yeSAJAKUIAQUHYWRkcmVzcwIBLgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBHWtleUNmZ1gyR25zYnRPZmZlckhlaWdodFN0YXJ0AAIlJXMlc19fY29uZmlnX194Mkduc2J0T2ZmZXJIZWlnaHRTdGFydAEba2V5Q2ZnWDJHbnNidE9mZmVySGVpZ2h0RW5kAAIjJXMlc19fY29uZmlnX194Mkduc2J0T2ZmZXJIZWlnaHRFbmQBEWtleUNvbnRyb2xBZGRyZXNzAAIcJXMlc19fY29uZmlnX19jb250cm9sQWRkcmVzcwENa2V5Q29udHJvbENmZwACESVzX19jb250cm9sQ29uZmlnARRyZWFkQ29udHJvbENmZ09yRmFpbAEHY29udHJvbAkAvAkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUHY29udHJvbAkBDWtleUNvbnRyb2xDZmcABQNTRVABGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIKY29udHJvbENmZwNpZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFCmNvbnRyb2xDZmcFA2lkeAkArAICAi1Db250cm9sIGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAKQDAQUDaWR4AA9jb250cm9sQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBEWtleUNvbnRyb2xBZGRyZXNzAAIjM040TlM3ZDRKbzlhNkYxNExpRlVLS1lWZFVra2YyZVA0WngACmNvbnRyb2xDZmcJARRyZWFkQ29udHJvbENmZ09yRmFpbAEFD2NvbnRyb2xDb250cmFjdAAMbWF0aENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUVSWR4Q29udHJvbENmZ01hdGhEYXBwABBuZXV0cmlub0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUZSWR4Q29udHJvbENmZ05ldXRyaW5vRGFwcAAPYXVjdGlvbkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUYSWR4Q29udHJvbENmZ0F1Y3Rpb25EYXBwAAtnb3ZDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCmNvbnRyb2xDZmcFG0lkeENvbnRyb2xDZmdHb3Zlcm5hbmNlRGFwcAASUkVORVdfU1RBUlRfSEVJR0hUCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAR1rZXlDZmdYMkduc2J0T2ZmZXJIZWlnaHRTdGFydAAAAAAQUkVORVdfRU5EX0hFSUdIVAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEba2V5Q2ZnWDJHbnNidE9mZmVySGVpZ2h0RW5kAAAAAQxrZXlCb25kQXNzZXQAAg1ib25kX2Fzc2V0X2lkARdrZXlVc2VyR25zYnRSZWxlYXNlVGltZQEIdXNlckFkZHIJAKwCAgIbJXMlc191c2VyR25zYnRSZWxlYXNlVGltZV9fBQh1c2VyQWRkcgEaa2V5TmV1dHJpbm9Db250cmFjdEFkZHJlc3MAAhslc19fbmV1dHJpbm9Db250cmFjdEFkZHJlc3MBFmtleU1hdGhDb250cmFjdEFkZHJlc3MAAhAlc19fbWF0aENvbnRyYWN0ARBrZXlNaW5Mb2NrQW1vdW50AAIRJXNfX21pbkxvY2tBbW91bnQBC2tleUhhbGZMaWZlAAIMJXNfX2hhbGZMaWZlARZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgtwYXJhbUJ5VXNlcgkAzAgCCQClCAEFC3VzZXJBZGRyZXNzCQDMCAICBmFtb3VudAUDbmlsBQlzZXBhcmF0b3IBFmtleUxvY2tQYXJhbVN0YXJ0QmxvY2sBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICC3BhcmFtQnlVc2VyCQDMCAIJAKUIAQULdXNlckFkZHJlc3MJAMwIAgIFc3RhcnQFA25pbAUJc2VwYXJhdG9yARVrZXlMb2NrUGFyYW1Vc2VyR25zYnQBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICC3BhcmFtQnlVc2VyCQDMCAIJAKUIAQULdXNlckFkZHJlc3MJAMwIAgIFZ05zYnQFA25pbAUJc2VwYXJhdG9yARlrZXlVc2VyQ29uc2VudGVkVG9YMkduc2J0AQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgtwYXJhbUJ5VXNlcgkAzAgCCQClCAEFC3VzZXJBZGRyZXNzCQDMCAICEmNvbnNlbnRlZFRvWDJHbnNidAUDbmlsBQlzZXBhcmF0b3IBEGtleUhpc3RvcnlSZWNvcmQDBHR5cGULdXNlckFkZHJlc3MEdHhJZAkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAICB2hpc3RvcnkJAMwIAgUEdHlwZQkAzAgCCQClCAEFC3VzZXJBZGRyZXNzCQDMCAIJANgEAQUEdHhJZAUDbmlsBQlzZXBhcmF0b3IBF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50AAkAuQkCCQDMCAICBCVzJXMJAMwIAgIFc3RhdHMJAMwIAgIRYWN0aXZlVG90YWxMb2NrZWQFA25pbAUJc2VwYXJhdG9yARZrZXlMb2NrUGFyYW1Ub3RhbEduc2J0AAkAuQkCCQDMCAICBCVzJXMJAMwIAgIFc3RhdHMJAMwIAgIQYWN0aXZlVG90YWxHbnNidAUDbmlsBQlzZXBhcmF0b3IBEmtleVN0YXRzTG9ja3NDb3VudAAJALkJAgkAzAgCAgQlcyVzCQDMCAICBXN0YXRzCQDMCAICCmxvY2tzQ291bnQFA25pbAUJc2VwYXJhdG9yARJrZXlTdGF0c1VzZXJzQ291bnQACQC5CQIJAMwIAgIEJXMlcwkAzAgCAgVzdGF0cwkAzAgCAhBhY3RpdmVVc2Vyc0NvdW50BQNuaWwFCXNlcGFyYXRvcgEXa2V5U3RhdHNEZXBvc2l0QW10QnlEYXkBCXRpbWVzdGFtcAkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAgVzdGF0cwkAzAgCAg9kZXBvc2l0QW10QnlEYXkJAMwIAgkApAMBBQl0aW1lc3RhbXAFA25pbAUJc2VwYXJhdG9yARhrZXlTdGF0c0RlcG9zaXRBbXRUb3RhbHMACQC5CQIJAMwIAgIGJXMlcyVkCQDMCAICBXN0YXRzCQDMCAICEGRlcG9zaXRBbXRUb3RhbHMFA25pbAUJc2VwYXJhdG9yAQ1rZXlOZXh0UGVyaW9kAAIOJXNfX25leHRQZXJpb2QBGGtleVN1cHBvcnRlZFJld2FyZEFzc2V0cwACFXN1cHBvcnRlZFJld2FyZEFzc2V0cwERa2V5RGVwb3NpdE51bUxhc3QACQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICA2RlcAkAzAgCAgdsYXN0TnVtBQNuaWwFCXNlcGFyYXRvcgEba2V5VXNlclJld2FyZEZyb21EZXBvc2l0TnVtAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAhF1c2VyUndkRnJvbURlcE51bQkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQlzZXBhcmF0b3IBFWtleVJld2FyZFBlck5zYnRTdW1BdAIKZGVwb3NpdE51bQN0a24JALkJAgkAzAgCAgQlcyVkCQDMCAICFXJ3ZFBlck5zYnRTdW1CeURlcE51bQkAzAgCCQCkAwEFCmRlcG9zaXROdW0JAMwIAgUDdGtuBQNuaWwFCXNlcGFyYXRvcgEJa2V5UmV3YXJkAgt1c2VyQWRkcmVzcwN0a24JALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIDcndkCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIFA3RrbgUDbmlsBQlzZXBhcmF0b3IBCmtleUNsYWltZWQCC3VzZXJBZGRyZXNzA3RrbgkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgNjbG0JAMwIAgULdXNlckFkZHJlc3MJAMwIAgUDdGtuBQNuaWwFCXNlcGFyYXRvcgEXa2V5Tm90RGlzdHJpYnV0ZWRSZXdhcmQBA3RrbgkAuQkCCQDMCAICBCVzJXMJAMwIAgIObm90RGlzdHJpYnV0ZWQJAMwIAgUDdGtuBQNuaWwFCXNlcGFyYXRvcgEFdG9YMTgCB29yaWdWYWwIb3JpZ011bHQJALwCAwkAtgIBBQdvcmlnVmFsBQdNVUxUWDE4BQhvcmlnTXVsdAEMZ2V0SW50T3JaZXJvAQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5AAABDGdldEludE9yRWxzZQIDa2V5CmRlZmF1bHRWYWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5BQpkZWZhdWx0VmFsAQxnZXRJbnRPckZhaWwBA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMFA2tleQkArAICCQCsAgICD01hbmRhdG9yeSB0aGlzLgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBDGdldFN0ck9yRWxzZQIDa2V5CmRlZmF1bHRWYWwJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUDa2V5BQpkZWZhdWx0VmFsAQ90b0FkZHJlc3NPckZhaWwBCmFkZHJlc3NTdHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQphZGRyZXNzU3RyCQCsAgICIWNvdWxkbid0IHBhcnNlIHBhc3NlZCBhZGRyZXNzU3RyPQUKYWRkcmVzc1N0cgELdG9Bc3NldFZlY3QBCGFzc2V0U3RyAwkAAAIFCGFzc2V0U3RyBQpXQVZFU0lEU1RSBQR1bml0CQDZBAEFCGFzc2V0U3RyAQVhc0ludAEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIDSW50BAZ2YWxJbnQFByRtYXRjaDAFBnZhbEludAkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAETZm9ybWF0SGlzdG9yeVJlY29yZAQJb2xkQW1vdW50CG9sZFN0YXJ0CW5ld0Ftb3VudAhuZXdTdGFydAkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sGaGVpZ2h0CQDMCAIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkApAMBBQlvbGRBbW91bnQJAMwIAgkApAMBBQhvbGRTdGFydAkAzAgCCQCkAwEFCW5ld0Ftb3VudAkAzAgCCQCkAwEFCG5ld1N0YXJ0BQNuaWwFCXNlcGFyYXRvcgEYZm9ybWF0Q2xhaW1IaXN0b3J5UmVjb3JkAgR1c2VyDmNsYWltZWRSZXdhcmRzCQC5CQIJAMwIAgIIJXMlZCVkJXMJAMwIAgUEdXNlcgkAzAgCCQCkAwEIBQlsYXN0QmxvY2sGaGVpZ2h0CQDMCAIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgUOY2xhaW1lZFJld2FyZHMFA25pbAUJc2VwYXJhdG9yARJIaXN0b3J5UmVjb3JkRW50cnkHBHR5cGULdXNlckFkZHJlc3MEdHhJZAlvbGRBbW91bnQIb2xkU3RhcnQJbmV3QW1vdW50CG5ld1N0YXJ0CQELU3RyaW5nRW50cnkCCQEQa2V5SGlzdG9yeVJlY29yZAMFBHR5cGUFC3VzZXJBZGRyZXNzBQR0eElkCQETZm9ybWF0SGlzdG9yeVJlY29yZAQFCW9sZEFtb3VudAUIb2xkU3RhcnQFCW5ld0Ftb3VudAUIbmV3U3RhcnQBEUNsYWltSGlzdG9yeUVudHJ5Awt1c2VyQWRkcmVzcwR0eElkDmNsYWltZWRSZXdhcmRzCQELU3RyaW5nRW50cnkCCQEQa2V5SGlzdG9yeVJlY29yZAMCBWNsYWltBQt1c2VyQWRkcmVzcwUEdHhJZAkBGGZvcm1hdENsYWltSGlzdG9yeVJlY29yZAIJAKUIAQULdXNlckFkZHJlc3MFDmNsYWltZWRSZXdhcmRzAQtTdGF0c1Jlc3VsdAQOdG90YWxMb2NrZWRJbmMMbG9ja0NvdW50SW5jDXVzZXJzQ291bnRJbmMNdG90YWxHbnNidEluYwQKbG9ja3NDb3VudAkBDGdldEludE9yWmVybwEJARJrZXlTdGF0c0xvY2tzQ291bnQABAp1c2Vyc0NvdW50CQEMZ2V0SW50T3JaZXJvAQkBEmtleVN0YXRzVXNlcnNDb3VudAAEC3RvdGFsQW1vdW50CQEMZ2V0SW50T3JaZXJvAQkBF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50AAQOdG90YWxBbW91bnROZXcJAGQCBQt0b3RhbEFtb3VudAUOdG90YWxMb2NrZWRJbmMECnRvdGFsR25zYnQJAQxnZXRJbnRPckVsc2UCCQEWa2V5TG9ja1BhcmFtVG90YWxHbnNidAAFC3RvdGFsQW1vdW50CQCVCgMJAMwIAgkBDEludGVnZXJFbnRyeQIJARJrZXlTdGF0c0xvY2tzQ291bnQACQBkAgUKbG9ja3NDb3VudAUMbG9ja0NvdW50SW5jCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5U3RhdHNVc2Vyc0NvdW50AAkAZAIFCnVzZXJzQ291bnQFDXVzZXJzQ291bnRJbmMJAMwIAgkBDEludGVnZXJFbnRyeQIJARdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudAAFDnRvdGFsQW1vdW50TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5TG9ja1BhcmFtVG90YWxHbnNidAAJAGQCBQp0b3RhbEduc2J0BQ10b3RhbEduc2J0SW5jBQNuaWwFC3RvdGFsQW1vdW50BQ50b3RhbEFtb3VudE5ldwEPTG9ja1BhcmFtc0VudHJ5BAt1c2VyQWRkcmVzcwpuc2J0QW1vdW50BXN0YXJ0C2dOc2J0QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5TG9ja1BhcmFtVXNlckFtb3VudAEFC3VzZXJBZGRyZXNzBQpuc2J0QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEVa2V5TG9ja1BhcmFtVXNlckduc2J0AQULdXNlckFkZHJlc3MFC2dOc2J0QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5TG9ja1BhcmFtU3RhcnRCbG9jawEFC3VzZXJBZGRyZXNzBQVzdGFydAUDbmlsAQ9nZXRQYXJhbXNPckZhaWwACQCVCgMJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUQbmV1dHJpbm9Db250cmFjdAkBDGtleUJvbmRBc3NldAAJAQxnZXRJbnRPckZhaWwBCQEQa2V5TWluTG9ja0Ftb3VudAAJAQxnZXRJbnRPckZhaWwBCQELa2V5SGFsZkxpZmUAAQxpc0FjdGl2ZVVzZXIBC3VzZXJBZGRyZXNzCQBmAgkBDGdldEludE9yRWxzZQIJARZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AQULdXNlckFkZHJlc3MAAAAAAQ1pc0JvbnVzUGVyaW9kAQFoAwkAZwIFAWgFElJFTkVXX1NUQVJUX0hFSUdIVAkAZwIFEFJFTkVXX0VORF9IRUlHSFQFAWgHARNnZXRVc2VyUGFyYW1zT3JVbml0AQt1c2VyQWRkcmVzcwMJAQxpc0FjdGl2ZVVzZXIBBQt1c2VyQWRkcmVzcwQGYW1vdW50CQEMZ2V0SW50T3JGYWlsAQkBFmtleUxvY2tQYXJhbVVzZXJBbW91bnQBBQt1c2VyQWRkcmVzcwkAlgoEBwUGYW1vdW50CQEMZ2V0SW50T3JGYWlsAQkBFmtleUxvY2tQYXJhbVN0YXJ0QmxvY2sBBQt1c2VyQWRkcmVzcwkBDGdldEludE9yRWxzZQIJARVrZXlMb2NrUGFyYW1Vc2VyR25zYnQBBQt1c2VyQWRkcmVzcwUGYW1vdW50BQR1bml0ARNnZXRVc2VyUGFyYW1zT3JGYWlsAQt1c2VyQWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQETZ2V0VXNlclBhcmFtc09yVW5pdAEFC3VzZXJBZGRyZXNzCQCsAgIJAKwCAgIFVXNlciAJAKUIAQULdXNlckFkZHJlc3MCDyBpcyBub3QgZGVmaW5lZAASc3VwcG9ydGVkQXNzZXRzU3RyCQEMZ2V0U3RyT3JFbHNlAgkBGGtleVN1cHBvcnRlZFJld2FyZEFzc2V0cwACAAATc3VwcG9ydGVkQXNzZXRzTGlzdAkAtQkCBRJzdXBwb3J0ZWRBc3NldHNTdHICAV8BCmNhbGNSZXdhcmQFC3VzZXJBZGRyZXNzB2Fzc2V0SWQNc3Rha2VkQW1vdW50WA5kZXBvc2l0TnVtVXNlcg5kZXBvc2l0TnVtTGFzdAQXcmV3YXJkUGVyTnNidFN1bUxhc3RLRVkJARVrZXlSZXdhcmRQZXJOc2J0U3VtQXQCBQ5kZXBvc2l0TnVtTGFzdAUHYXNzZXRJZAQKc3VtTGFzdFgxOAkApwMBCQEMZ2V0U3RyT3JFbHNlAgkBFWtleVJld2FyZFBlck5zYnRTdW1BdAIFDmRlcG9zaXROdW1MYXN0BQdhc3NldElkAgEwBApzdW1Vc2VyWDE4CQCnAwEJAQxnZXRTdHJPckVsc2UCCQEVa2V5UmV3YXJkUGVyTnNidFN1bUF0AgUOZGVwb3NpdE51bVVzZXIFB2Fzc2V0SWQCATAEEXJld2FyZER5bmFtaWNQYXJ0CQCgAwEJALwCAwkAuAICBQpzdW1MYXN0WDE4BQpzdW1Vc2VyWDE4BQ1zdGFrZWRBbW91bnRYBQdNVUxUWDE4BBNyZXdhcmRDYWNoZWRQYXJ0S0VZCQEJa2V5UmV3YXJkAgULdXNlckFkZHJlc3MFB2Fzc2V0SWQEEHJld2FyZENhY2hlZFBhcnQJAQxnZXRJbnRPckVsc2UCBRNyZXdhcmRDYWNoZWRQYXJ0S0VZAAAJAJYKBAkAZAIFEHJld2FyZENhY2hlZFBhcnQFEXJld2FyZER5bmFtaWNQYXJ0BRByZXdhcmRDYWNoZWRQYXJ0BRFyZXdhcmREeW5hbWljUGFydAUTcmV3YXJkQ2FjaGVkUGFydEtFWQEMdG9TdGFydE9mRGF5AQl0aW1lc3RhbXAJAGgCCQBpAgUJdGltZXN0YW1wBQlEQVlNSUxMSVMFCURBWU1JTExJUwETZmluZEVsZW1lbnRQb3NpdGlvbgMDc3JjB2VsZW1lbnQDc2VwBAxlbGVtZW50U3RhcnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAswkCBQNzcmMFB2VsZW1lbnQJAKwCAgkArAICCQCsAgICFnRoZXJlIGlzIG5vIHN1YnN0cmluZyAFB2VsZW1lbnQCBCBpbiAFA3NyYwMJAAACBQxlbGVtZW50U3RhcnQAAAAABARsZWZ0CQCvAgIFA3NyYwUMZWxlbWVudFN0YXJ0CQBlAgkAkAMBCQC1CQIFBGxlZnQFA3NlcAABABNEZXBvc2l0VG90YWxzUFJFRklYAiQlZCVkJWQlZCVkJWQlZCVkJWQlZCVkJWQlZCVkJWQlZCVkJWQAEWRlZmF1bHRUb3RhbHNEQVRBCQCsAgIFE0RlcG9zaXRUb3RhbHNQUkVGSVgCNl9fMF9fMF9fMF9fMF9fMF9fMF9fMF9fMF9fMF9fMF9fMF9fMF9fMF9fMF9fMF9fMF9fMF9fMAEHcGFkTGlzdAECaW4ECGN1cnJTaXplCQBlAgkAkAMBBQJpbgABCgEKbGlzdFBhZGRlcgIDYWNjA2lkeAMJAGYCBQhjdXJyU2l6ZQUDaWR4BQNhY2MJAM0IAgUDYWNjAgEwCgACJGwJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4JAMwIAgAPCQDMCAIAEAkAzAgCABEFA25pbAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFAmluCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpsaXN0UGFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxOAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgEJcGFkU3RyaW5nAQJpbgQIY3VyclNpemUJAGUCCQCQAwEJALwJAgUCaW4FA1NFUAABCgEJc3RyUGFkZGVyAgNhY2MDaWR4AwkAZgIFCGN1cnJTaXplBQNpZHgFA2FjYwkArAICBQNhY2MCA19fMAoAAiRsCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOCQDMCAIADwkAzAgCABAJAMwIAgARBQNuaWwKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQJpbgoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJc3RyUGFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxOAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgENUmV3YXJkRW50cmllcwMJaXNOZXdVc2VyC3VzZXJBZGRyZXNzDHN0YWtlZEFtb3VudAQNc3Rha2VkQW1vdW50WAkAtgIBBQxzdGFrZWRBbW91bnQEG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQkBG2tleVVzZXJSZXdhcmRGcm9tRGVwb3NpdE51bQEFC3VzZXJBZGRyZXNzBA5kZXBvc2l0TnVtVXNlcgkBDGdldEludE9yRWxzZQIFG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQD///////////8BBA5kZXBvc2l0TnVtTGFzdAkBDGdldEludE9yRWxzZQIJARFrZXlEZXBvc2l0TnVtTGFzdAAA////////////AQoBG2ZvckVhY2hBc3NldENhY2hlVXNlclJld2FyZAIFYWNjdW0FYXNzZXQEDSR0MDExMzkzMTE1MjgJAQpjYWxjUmV3YXJkBQULdXNlckFkZHJlc3MFBWFzc2V0BQ1zdGFrZWRBbW91bnRYBQ5kZXBvc2l0TnVtVXNlcgUOZGVwb3NpdE51bUxhc3QEC3Jld2FyZFRvdGFsCAUNJHQwMTEzOTMxMTUyOAJfMQQGY2FjaGVkCAUNJHQwMTEzOTMxMTUyOAJfMgQHZHluYW1pYwgFDSR0MDExMzkzMTE1MjgCXzMEE3Jld2FyZENhY2hlZFBhcnRLRVkIBQ0kdDAxMTM5MzExNTI4Al80CQDNCAIFBWFjY3VtCQEMSW50ZWdlckVudHJ5AgUTcmV3YXJkQ2FjaGVkUGFydEtFWQULcmV3YXJkVG90YWwDAwkAAAIFDmRlcG9zaXROdW1MYXN0AP///////////wEJAAACBQ5kZXBvc2l0TnVtVXNlcgD///////////8BBwUDbmlsAwMJAAACBQ5kZXBvc2l0TnVtTGFzdAD///////////8BCQBmAgUOZGVwb3NpdE51bVVzZXIA////////////AQcJAAIBAi9pbnZhbGlkIGRlcG9zaXROdW1MYXN0IGFuZCBkZXBvc2l0TnVtVXNlciBzdGF0ZQMDCQBmAgUOZGVwb3NpdE51bUxhc3QA////////////AQkAZwIFDmRlcG9zaXROdW1Vc2VyAP///////////wEHAwUJaXNOZXdVc2VyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkFDmRlcG9zaXROdW1MYXN0BQNuaWwJAM0IAgoAAiRsBRNzdXBwb3J0ZWRBc3NldHNMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARtmb3JFYWNoQXNzZXRDYWNoZVVzZXJSZXdhcmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDkJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkJAQxJbnRlZ2VyRW50cnkCBRt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkFDmRlcG9zaXROdW1MYXN0CQACAQkArAICCQCsAgIJAKwCAgIkdW5jb3ZlcmVkIGNvbmRpdGlvbjogZGVwb3NpdE51bUxhc3Q9CQCkAwEFDmRlcG9zaXROdW1MYXN0AhAgZGVwb3NpdE51bVVzZXI9CQCkAwEFDmRlcG9zaXROdW1Vc2VyASJJbmNyZW1lbnROb3REaXN0cmlidXRlZFJld2FyZEVudHJ5AgN0a24JYW1vdW50SW5jBBdub3REaXN0cmlidXRlZFJld2FyZEtFWQkBF2tleU5vdERpc3RyaWJ1dGVkUmV3YXJkAQUDdGtuBBRub3REaXN0cmlidXRlZFJld2FyZAkBDGdldEludE9yRWxzZQIFF25vdERpc3RyaWJ1dGVkUmV3YXJkS0VZAAAJAQxJbnRlZ2VyRW50cnkCBRdub3REaXN0cmlidXRlZFJld2FyZEtFWQkAZAIFFG5vdERpc3RyaWJ1dGVkUmV3YXJkBQlhbW91bnRJbmMBC2NvbW1vbkNsYWltAgt1c2VyQWRkcmVzcwFpBA51c2VyQWRkcmVzc1N0cgkApQgBBQt1c2VyQWRkcmVzcwMJAGYCCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhlwYXltZW50cyBhcmUgbm90IGFjY2VwdGVkBA0kdDAxNDQ2OTE0NTkwCQELdmFsdWVPckVsc2UCCQETZ2V0VXNlclBhcmFtc09yVW5pdAEFC3VzZXJBZGRyZXNzCQCWCgQGAAAAAAAABAlpc05ld1VzZXIIBQ0kdDAxNDQ2OTE0NTkwAl8xBAxzdGFrZWRBbW91bnQIBQ0kdDAxNDQ2OTE0NTkwAl8yBAxzdGFraW5nU3RhcnQIBQ0kdDAxNDQ2OTE0NTkwAl8zBAtnTnNidEFtb3VudAgFDSR0MDE0NDY5MTQ1OTACXzQEDXN0YWtlZEFtb3VudFgJALYCAQULZ05zYnRBbW91bnQEG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQkBG2tleVVzZXJSZXdhcmRGcm9tRGVwb3NpdE51bQEFDnVzZXJBZGRyZXNzU3RyBA5kZXBvc2l0TnVtVXNlcgkBDGdldEludE9yRWxzZQIFG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQD///////////8BBA5kZXBvc2l0TnVtTGFzdAkBDGdldEludE9yRWxzZQIJARFrZXlEZXBvc2l0TnVtTGFzdAAA////////////AQoBH2ZvckVhY2hBc3NldENhbGNVbmNsYWltZWRSZXdhcmQCBWFjY3VtBWFzc2V0BA0kdDAxNDk2MDE1MDk4CQEKY2FsY1Jld2FyZAUFDnVzZXJBZGRyZXNzU3RyBQVhc3NldAUNc3Rha2VkQW1vdW50WAUOZGVwb3NpdE51bVVzZXIFDmRlcG9zaXROdW1MYXN0BAtyZXdhcmRUb3RhbAgFDSR0MDE0OTYwMTUwOTgCXzEEBmNhY2hlZAgFDSR0MDE0OTYwMTUwOTgCXzIEB2R5bmFtaWMIBQ0kdDAxNDk2MDE1MDk4Al8zBBNyZXdhcmRDYWNoZWRQYXJ0S0VZCAUNJHQwMTQ5NjAxNTA5OAJfNAQKY2xhaW1lZEtFWQkBCmtleUNsYWltZWQCBQ51c2VyQWRkcmVzc1N0cgUFYXNzZXQEDSR0MDE1MTU4MTUxOTUFBWFjY3VtBARkYXRhCAUNJHQwMTUxNTgxNTE5NQJfMQQRY2xhaW1lZEFtdEJ5QXNzZXQIBQ0kdDAxNTE1ODE1MTk1Al8yBAduZXdQYXJ0CQC5CQIJAMwIAgUFYXNzZXQJAMwIAgkApAMBBQtyZXdhcmRUb3RhbAUDbmlsAgE6BBRjbGFpbWVkQW10QnlBc3NldE5ldwkAuQkCCQDMCAIFEWNsYWltZWRBbXRCeUFzc2V0CQDMCAIFB25ld1BhcnQFA25pbAIBXwMJAGcCAAAFC3Jld2FyZFRvdGFsCQCUCgIFBGRhdGEFFGNsYWltZWRBbXRCeUFzc2V0TmV3CQCUCgIJAM0IAgkAzQgCCQDNCAIFBGRhdGEJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQtyZXdhcmRUb3RhbAkBC3RvQXNzZXRWZWN0AQUFYXNzZXQJAQxJbnRlZ2VyRW50cnkCBQpjbGFpbWVkS0VZCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQpjbGFpbWVkS0VZAAAFC3Jld2FyZFRvdGFsCQEMSW50ZWdlckVudHJ5AgUTcmV3YXJkQ2FjaGVkUGFydEtFWQAABRRjbGFpbWVkQW10QnlBc3NldE5ldwQNJHQwMTU2NTUxNTc2OAoAAiRsBRNzdXBwb3J0ZWRBc3NldHNMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwCAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEfZm9yRWFjaEFzc2V0Q2FsY1VuY2xhaW1lZFJld2FyZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgOQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQQJdHJhbnNmZXJzCAUNJHQwMTU2NTUxNTc2OAJfMQQXY2xhaW1lZEFtdEJ5QXNzZXRSZXN1bHQIBQ0kdDAxNTY1NTE1NzY4Al8yAwkAZwIAAAkAkAMBBQl0cmFuc2ZlcnMJAJQKAgUDbmlsAAAJAJQKAgkAzQgCCQDNCAIFCXRyYW5zZmVycwkBDEludGVnZXJFbnRyeQIFG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQUOZGVwb3NpdE51bUxhc3QJARFDbGFpbUhpc3RvcnlFbnRyeQMFC3VzZXJBZGRyZXNzCAUBaQ10cmFuc2FjdGlvbklkCQCwAgIFF2NsYWltZWRBbXRCeUFzc2V0UmVzdWx0AAEJAJADAQUJdHJhbnNmZXJzARhyZWFkVXNlckNvbnNlbnRUb1gyR25zYnQBC3VzZXJBZGRyZXNzBANrZXkJARlrZXlVc2VyQ29uc2VudGVkVG9YMkduc2J0AQULdXNlckFkZHJlc3MEA3ZhbAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQNrZXkHCQCUCgIFA2tleQUDdmFsAQ1jb21tb25YMkduc2J0Agt1c2VyQWRkcmVzcwFpAwkBASEBCQENaXNCb251c1BlcmlvZAEFBmhlaWdodAkAAgECJk5vICdEb3VibGUgZ05TQlQgYWN0aW9uJyBhdmFpbGFibGUgbm93BA0kdDAxNjMzMDE2MzkxCQELY29tbW9uQ2xhaW0CBQt1c2VyQWRkcmVzcwUBaQQMY2xhaW1BY3Rpb25zCAUNJHQwMTYzMzAxNjM5MQJfMQQLY2xhaW1SZXN1bHQIBQ0kdDAxNjMzMDE2MzkxAl8yBA0kdDAxNjM5NDE2NTE5CQELdmFsdWVPckVsc2UCCQETZ2V0VXNlclBhcmFtc09yVW5pdAEFC3VzZXJBZGRyZXNzCQCWCgQGAAAA////////////AQAABAlpc05ld1VzZXIIBQ0kdDAxNjM5NDE2NTE5Al8xBApsb2NrQW1vdW50CAUNJHQwMTYzOTQxNjUxOQJfMgQPbG9ja1N0YXJ0SGVpZ2h0CAUNJHQwMTYzOTQxNjUxOQJfMwQNY3VyclVzZXJHbnNidAgFDSR0MDE2Mzk0MTY1MTkCXzQDBQlpc05ld1VzZXIJAAIBAhtZb3UgaGF2ZSBub3RoaW5nIHRvIHJlc3Rha2UEDmRlbHRhVXNlckduc2J0BQ1jdXJyVXNlckduc2J0BAxuZXdVc2VyR25zYnQJAGQCBQ1jdXJyVXNlckduc2J0BQ5kZWx0YVVzZXJHbnNidAQQdXNlckNvbnNlbnRUdXBsZQkBGHJlYWRVc2VyQ29uc2VudFRvWDJHbnNidAEFC3VzZXJBZGRyZXNzBBl1c2VyQ29uc2VudGVkVG9YMkduc2J0S0VZCAUQdXNlckNvbnNlbnRUdXBsZQJfMQQWdXNlckNvbnNlbnRlZFRvWDJHbnNidAgFEHVzZXJDb25zZW50VHVwbGUCXzIDBRZ1c2VyQ29uc2VudGVkVG9YMkduc2J0CQACAQIoVXNlciBoYXMgYWxyZWFkeSBkb3VibGVkIGl0cyBnTlNCVCB2YWx1ZQQNJHQwMTY5MzYxNzAyMgkBC1N0YXRzUmVzdWx0BAAAAAAAAAUOZGVsdGFVc2VyR25zYnQEDHN0YXRzRW50cmllcwgFDSR0MDE2OTM2MTcwMjICXzEEC3RvdGFsU3Rha2VkCAUNJHQwMTY5MzYxNzAyMgJfMgQOdG90YWxTdGFrZWROZXcIBQ0kdDAxNjkzNjE3MDIyAl8zCQCUCgIJAM0IAgkAzggCCQDOCAIFDGNsYWltQWN0aW9ucwkBD0xvY2tQYXJhbXNFbnRyeQQFC3VzZXJBZGRyZXNzBQpsb2NrQW1vdW50BQZoZWlnaHQFDG5ld1VzZXJHbnNidAUMc3RhdHNFbnRyaWVzCQEMQm9vbGVhbkVudHJ5AgUZdXNlckNvbnNlbnRlZFRvWDJHbnNidEtFWQYFC2NsYWltUmVzdWx0DAFpAQ1jb25zdHJ1Y3RvclYxBRduZXV0cmlub0NvbnRyYWN0QWRkcmVzcxNtYXRoQ29udHJhY3RBZGRyZXNzDW1pbkxvY2tBbW91bnQIaGFsZkxpZmUVc3VwcG9ydGVkUmV3YXJkQXNzZXRzAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGmtleU5ldXRyaW5vQ29udHJhY3RBZGRyZXNzAAUXbmV1dHJpbm9Db250cmFjdEFkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleU1hdGhDb250cmFjdEFkZHJlc3MABRNtYXRoQ29udHJhY3RBZGRyZXNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEQa2V5TWluTG9ja0Ftb3VudAAFDW1pbkxvY2tBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQtrZXlIYWxmTGlmZQAFCGhhbGZMaWZlCQDMCAIJAQtTdHJpbmdFbnRyeQIJARhrZXlTdXBwb3J0ZWRSZXdhcmRBc3NldHMABRVzdXBwb3J0ZWRSZXdhcmRBc3NldHMFA25pbAFpAQ1jb25zdHJ1Y3RvclYyAhd4Mkduc2J0T2ZmZXJIZWlnaHRTdGFydBV4Mkduc2J0T2ZmZXJIZWlnaHRFbmQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHWtleUNmZ1gyR25zYnRPZmZlckhlaWdodFN0YXJ0AAUXeDJHbnNidE9mZmVySGVpZ2h0U3RhcnQJAMwIAgkBDEludGVnZXJFbnRyeQIJARtrZXlDZmdYMkduc2J0T2ZmZXJIZWlnaHRFbmQABRV4Mkduc2J0T2ZmZXJIZWlnaHRFbmQFA25pbAFpAQVzdGFrZQAEDSR0MDE4MTI4MTgxOTAJAQ9nZXRQYXJhbXNPckZhaWwABAtib25kQXNzZXRJZAgFDSR0MDE4MTI4MTgxOTACXzEEDW1pbkxvY2tBbW91bnQIBQ0kdDAxODEyODE4MTkwAl8yBAhoYWxmTGlmZQgFDSR0MDE4MTI4MTgxOTACXzMDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhVJbnZhbGlkIHBheW1lbnRzIHNpemUEB3BheW1lbnQJAJEDAggFAWkIcGF5bWVudHMAAAQGYW1vdW50CAUHcGF5bWVudAZhbW91bnQEE2ludmFsaWRBc3NldE1lc3NhZ2UJAKwCAgkArAICAg9JbnZhbGlkIGFzc2V0LiAJANgEAQULYm9uZEFzc2V0SWQCDCBpcyBleHBlY3RlZAQHYXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCAUHcGF5bWVudAdhc3NldElkBRNpbnZhbGlkQXNzZXRNZXNzYWdlAwkBAiE9AgUHYXNzZXRJZAULYm9uZEFzc2V0SWQJAAIBBRNpbnZhbGlkQXNzZXRNZXNzYWdlBAt1c2VyQWRkcmVzcwgFAWkGY2FsbGVyBA51c2VyQWRkcmVzc1N0cgkApQgBCAUBaQZjYWxsZXIEDSR0MDE4NzMyMTg4NTcJAQt2YWx1ZU9yRWxzZQIJARNnZXRVc2VyUGFyYW1zT3JVbml0AQULdXNlckFkZHJlc3MJAJYKBAYAAAD///////////8BAAAECWlzTmV3VXNlcggFDSR0MDE4NzMyMTg4NTcCXzEECmxvY2tBbW91bnQIBQ0kdDAxODczMjE4ODU3Al8yBA9sb2NrU3RhcnRIZWlnaHQIBQ0kdDAxODczMjE4ODU3Al8zBA1jdXJyVXNlckduc2J0CAUNJHQwMTg3MzIxODg1NwJfNAQMbWVyZ2VkQW1vdW50AwUJaXNOZXdVc2VyBQZhbW91bnQJAGQCBQZhbW91bnQFCmxvY2tBbW91bnQEEW1lcmdlZFN0YXJ0SGVpZ2h0AwUJaXNOZXdVc2VyBQZoZWlnaHQJAQVhc0ludAEJAPwHBAUMbWF0aENvbnRyYWN0AhNtZXJnZVN0YWtlc1JFQURPTkxZCQDMCAIFBmFtb3VudAkAzAgCBQZoZWlnaHQJAMwIAgUKbG9ja0Ftb3VudAkAzAgCBQ9sb2NrU3RhcnRIZWlnaHQJAMwIAgUIaGFsZkxpZmUFA25pbAUDbmlsAwkAZgIFDW1pbkxvY2tBbW91bnQFDG1lcmdlZEFtb3VudAkAAgEJAKwCAgITTWluIGxvY2sgYW1vdW50IGlzIAkApAMBBQ1taW5Mb2NrQW1vdW50BBB1c2VyQ29uc2VudFR1cGxlCQEYcmVhZFVzZXJDb25zZW50VG9YMkduc2J0AQULdXNlckFkZHJlc3MEGXVzZXJDb25zZW50ZWRUb1gyR25zYnRLRVkIBRB1c2VyQ29uc2VudFR1cGxlAl8xBBZ1c2VyQ29uc2VudGVkVG9YMkduc2J0CAUQdXNlckNvbnNlbnRUdXBsZQJfMgQOZGVsdGFVc2VyR25zYnQDAwkBDWlzQm9udXNQZXJpb2QBBQZoZWlnaHQDBQlpc05ld1VzZXIGBRZ1c2VyQ29uc2VudGVkVG9YMkduc2J0BwkAaAIAAgUGYW1vdW50BQZhbW91bnQEE3gyR25zYnRDb25zZW50RW50cnkDBQlpc05ld1VzZXIJAMwIAgkBDEJvb2xlYW5FbnRyeQIFGXVzZXJDb25zZW50ZWRUb1gyR25zYnRLRVkGBQNuaWwFA25pbAQNJHQwMTk4NjExOTk3OQkBC1N0YXRzUmVzdWx0BAUGYW1vdW50AAEDBQlpc05ld1VzZXIAAQAABQ5kZWx0YVVzZXJHbnNidAQMc3RhdHNFbnRyaWVzCAUNJHQwMTk4NjExOTk3OQJfMQQLdG90YWxTdGFrZWQIBQ0kdDAxOTg2MTE5OTc5Al8yBA50b3RhbFN0YWtlZE5ldwgFDSR0MDE5ODYxMTk5NzkCXzMJAM4IAgkAzggCCQDOCAIJAM4IAgkAzAgCCQESSGlzdG9yeVJlY29yZEVudHJ5BwIFc3Rha2UFC3VzZXJBZGRyZXNzCAUBaQ10cmFuc2FjdGlvbklkBQpsb2NrQW1vdW50BQ9sb2NrU3RhcnRIZWlnaHQFDG1lcmdlZEFtb3VudAURbWVyZ2VkU3RhcnRIZWlnaHQFA25pbAkBDVJld2FyZEVudHJpZXMDBQlpc05ld1VzZXIFDnVzZXJBZGRyZXNzU3RyBQ1jdXJyVXNlckduc2J0CQEPTG9ja1BhcmFtc0VudHJ5BAULdXNlckFkZHJlc3MFDG1lcmdlZEFtb3VudAURbWVyZ2VkU3RhcnRIZWlnaHQJAGQCBQ1jdXJyVXNlckduc2J0BQ5kZWx0YVVzZXJHbnNidAUMc3RhdHNFbnRyaWVzBRN4Mkduc2J0Q29uc2VudEVudHJ5AWkBB3Vuc3Rha2UBBmFtb3VudAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECI3Vuc3Rha2UgZG9lc24ndCByZXF1aXJlIGFueSBwYXltZW50BAt1c2VyQWRkcmVzcwgFAWkGY2FsbGVyBA51c2VyQWRkcmVzc1N0cgkApQgBBQt1c2VyQWRkcmVzcwQNJHQwMjA1MjUyMDU4NwkBD2dldFBhcmFtc09yRmFpbAAEC2JvbmRBc3NldElkCAUNJHQwMjA1MjUyMDU4NwJfMQQNbWluTG9ja0Ftb3VudAgFDSR0MDIwNTI1MjA1ODcCXzIECGhhbGZMaWZlCAUNJHQwMjA1MjUyMDU4NwJfMwQNJHQwMjA1OTAyMDY3OQkBE2dldFVzZXJQYXJhbXNPckZhaWwBBQt1c2VyQWRkcmVzcwQJaXNOZXdVc2VyCAUNJHQwMjA1OTAyMDY3OQJfMQQKbG9ja0Ftb3VudAgFDSR0MDIwNTkwMjA2NzkCXzIECWxvY2tTdGFydAgFDSR0MDIwNTkwMjA2NzkCXzMEDWN1cnJVc2VyR25zYnQIBQ0kdDAyMDU5MDIwNjc5Al80AwkAZwIAAAUKbG9ja0Ftb3VudAkAAgECEk5vdGhpbmcgdG8gdW5zdGFrZQMJAGYCBQZhbW91bnQFCmxvY2tBbW91bnQJAAIBCQCsAgIJAKwCAgkArAICAgpSZXF1ZXN0ZWQgCQCkAwEFBmFtb3VudAISLCBidXQgc3Rha2VkIG9ubHkgCQCkAwEFCmxvY2tBbW91bnQEAXQICQEFdmFsdWUBCQDtBwEFBmhlaWdodAl0aW1lc3RhbXAEC3JlbGVhc2VUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFC2dvdkNvbnRyYWN0CQEXa2V5VXNlckduc2J0UmVsZWFzZVRpbWUBBQ51c2VyQWRkcmVzc1N0cgAAAwkAZwIFC3JlbGVhc2VUaW1lBQF0CQACAQkArAICAjtZb3VyIGdOc2J0IGFyZSB0YWtpbmcgcGFydCBpbiB2b3RpbmcsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQtyZWxlYXNlVGltZQQPY29taXNzaW9uQW1vdW50CQEFYXNJbnQBCQD8BwQFDG1hdGhDb250cmFjdAIhZ2V0VW5zdGFrZUNvbWlzc2lvbkFtb3VudFJFQURPTkxZCQDMCAIFBmFtb3VudAkAzAgCBQlsb2NrU3RhcnQJAMwIAgUIaGFsZkxpZmUFA25pbAUDbmlsBA5ib251c0duc2J0UGFydAkAZQIFDWN1cnJVc2VyR25zYnQFCmxvY2tBbW91bnQED2JvbnVzTnNidEFtb3VudAkAlwMBCQDMCAIFBmFtb3VudAkAzAgCBQ5ib251c0duc2J0UGFydAUDbmlsBApkZWx0YUduc2J0CQBkAgUPYm9udXNOc2J0QW1vdW50BQZhbW91bnQEDSR0MDIxNTE3MjE2ODgJAQtTdGF0c1Jlc3VsdAQJAQEtAQUGYW1vdW50AwkAAAIFBmFtb3VudAUKbG9ja0Ftb3VudAD///////////8BAAADCQAAAgUGYW1vdW50BQpsb2NrQW1vdW50AP///////////wEAAAkBAS0BBQpkZWx0YUduc2J0BAxzdGF0c0VudHJpZXMIBQ0kdDAyMTUxNzIxNjg4Al8xBAt0b3RhbFN0YWtlZAgFDSR0MDIxNTE3MjE2ODgCXzIEDnRvdGFsU3Rha2VkTmV3CAUNJHQwMjE1MTcyMTY4OAJfMwkAzggCCQDOCAIJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQt1c2VyQWRkcmVzcwkAZQIFBmFtb3VudAUPY29taXNzaW9uQW1vdW50BQtib25kQXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ9hdWN0aW9uQ29udHJhY3QFD2NvbWlzc2lvbkFtb3VudAULYm9uZEFzc2V0SWQJAMwIAgkBEkhpc3RvcnlSZWNvcmRFbnRyeQcCB3Vuc3Rha2UFC3VzZXJBZGRyZXNzCAUBaQ10cmFuc2FjdGlvbklkBQpsb2NrQW1vdW50BQlsb2NrU3RhcnQJAGUCBQpsb2NrQW1vdW50BQZhbW91bnQFCWxvY2tTdGFydAUDbmlsCQENUmV3YXJkRW50cmllcwMHBQ51c2VyQWRkcmVzc1N0cgUNY3VyclVzZXJHbnNidAkBD0xvY2tQYXJhbXNFbnRyeQQFC3VzZXJBZGRyZXNzCQBlAgUKbG9ja0Ftb3VudAUGYW1vdW50BQlsb2NrU3RhcnQJAGUCBQ1jdXJyVXNlckduc2J0BQpkZWx0YUduc2J0BQxzdGF0c0VudHJpZXMBaQEHZGVwb3NpdAAEC3RvdGFsU3Rha2VkCQEMZ2V0SW50T3JFbHNlAgkBFmtleUxvY2tQYXJhbVRvdGFsR25zYnQACQEMZ2V0SW50T3JFbHNlAgkBF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50AAAAAwkAZgIAAAULdG90YWxTdGFrZWQJAAIBAhtUT0RPOiBjYXNlIGlzIG5vdCBzdXBwb3J0ZWQEEWRlcG9zaXROdW1MYXN0S0VZCQERa2V5RGVwb3NpdE51bUxhc3QABA5kZXBvc2l0TnVtTGFzdAkBDGdldEludE9yRWxzZQIFEWRlcG9zaXROdW1MYXN0S0VZAP///////////wEEDWRlcG9zaXROdW1OZXcJAGQCBQ5kZXBvc2l0TnVtTGFzdAABBAl0b3RhbHNLRVkJARhrZXlTdGF0c0RlcG9zaXRBbXRUb3RhbHMABAhieURheUtFWQkBF2tleVN0YXRzRGVwb3NpdEFtdEJ5RGF5AQkBDHRvU3RhcnRPZkRheQEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBApjdXJyVG90YWxzCQEHcGFkTGlzdAEJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQl0b3RhbHNLRVkFEWRlZmF1bHRUb3RhbHNEQVRBBQNTRVAKAQNkZXACA2FjYwNwbXQEBmFtb3VudAgFA3BtdAZhbW91bnQEDXBtdEFzc2V0SWRTdHIJANgEAQkBC3ZhbHVlT3JFbHNlAggFA3BtdAdhc3NldElkBQdXQVZFU0lEAwkBASEBCQEIY29udGFpbnMCBRJzdXBwb3J0ZWRBc3NldHNTdHIFDXBtdEFzc2V0SWRTdHIJAAIBCQCsAgIJAKwCAgUSc3VwcG9ydGVkQXNzZXRzU3RyAhEgZG9lc24ndCBjb250YWluIAUNcG10QXNzZXRJZFN0cgMJAAACBQt0b3RhbFN0YWtlZAAACQCWCgQJAM0IAggFA2FjYwJfMQkBIkluY3JlbWVudE5vdERpc3RyaWJ1dGVkUmV3YXJkRW50cnkCBQ1wbXRBc3NldElkU3RyBQZhbW91bnQJAM0IAggFA2FjYwJfMgUNcG10QXNzZXRJZFN0cgkAzQgCCAUDYWNjAl8zCQC2AgEAAAkAzQgCCAUDYWNjAl80BQZhbW91bnQEEHJld2FyZFBlck5zYnRYMTgJALwCAwkAtgIBBQZhbW91bnQFB01VTFRYMTgJALYCAQULdG90YWxTdGFrZWQJAJYKBAgFA2FjYwJfMQkAzQgCCAUDYWNjAl8yBQ1wbXRBc3NldElkU3RyCQDNCAIIBQNhY2MCXzMFEHJld2FyZFBlck5zYnRYMTgJAM0IAggFA2FjYwJfNAUGYW1vdW50BApwbXRzUmVzdWx0CgACJGwIBQFpCHBheW1lbnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEBQNuaWwFA25pbAUDbmlsBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBA2RlcAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgoBGXJlZnJlc2hSZXdhcmRVcGRhdGVUb3RhbHMCBWFjY3VtCW5leHRBc3NldAQBawgFBWFjY3VtAl8zBApzdW1MYXN0U3RyCQEMZ2V0U3RyT3JFbHNlAgkBFWtleVJld2FyZFBlck5zYnRTdW1BdAIFDmRlcG9zaXROdW1MYXN0BQluZXh0QXNzZXQCATAEA2lkeAkAzwgCCAUKcG10c1Jlc3VsdAJfMgUJbmV4dEFzc2V0BANzdW0DCQEJaXNEZWZpbmVkAQUDaWR4BAFqCQEFdmFsdWUBBQNpZHgECnN0YXRzRGVsdGEJAJEDAggFCnBtdHNSZXN1bHQCXzQFAWoJAJQKAgkApgMBCQC3AgIJAKcDAQUKc3VtTGFzdFN0cgkAkQMCCAUKcG10c1Jlc3VsdAJfMwUBagkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmN1cnJUb3RhbHMJAGQCBQFrAAEFCnN0YXRzRGVsdGEJAJQKAgUKc3VtTGFzdFN0cgkAkQMCBQpjdXJyVG90YWxzCQBkAgUBawABCQCVCgMJAM0IAggFBWFjY3VtAl8xCQELU3RyaW5nRW50cnkCCQEVa2V5UmV3YXJkUGVyTnNidFN1bUF0AgUNZGVwb3NpdE51bU5ldwUJbmV4dEFzc2V0CAUDc3VtAl8xCQCsAgIJAKwCAggFBWFjY3VtAl8yBQNTRVAIBQNzdW0CXzIJAGQCBQFrAAEEDGFzc2V0c1Jlc3VsdAoAAiRsBRNzdXBwb3J0ZWRBc3NldHNMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQNuaWwFE0RlcG9zaXRUb3RhbHNQUkVGSVgAAAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEZcmVmcmVzaFJld2FyZFVwZGF0ZVRvdGFscwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgOQkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQQGdG90YWxzCQEJcGFkU3RyaW5nAQgFDGFzc2V0c1Jlc3VsdAJfMgkAlAoCCQDNCAIJAM0IAgkAzQgCCQDOCAIIBQpwbXRzUmVzdWx0Al8xCAUMYXNzZXRzUmVzdWx0Al8xCQEMSW50ZWdlckVudHJ5AgURZGVwb3NpdE51bUxhc3RLRVkFDWRlcG9zaXROdW1OZXcJAQtTdHJpbmdFbnRyeQIFCXRvdGFsc0tFWQUGdG90YWxzCQELU3RyaW5nRW50cnkCBQhieURheUtFWQUGdG90YWxzBQ1kZXBvc2l0TnVtTmV3AWkBDGNsYWltUmV3YXJkcwAJAQtjb21tb25DbGFpbQIIBQFpBmNhbGxlcgUBaQFpARpjbGFpbVJld2FyZHNCeU9yaWdpbkNhbGxlcgAJAQtjb21tb25DbGFpbQIIBQFpDG9yaWdpbkNhbGxlcgUBaQFpAQd4Mkduc2J0AAkBDWNvbW1vblgyR25zYnQCCAUBaQZjYWxsZXIFAWkBaQEVeDJHbnNidEJ5T3JpZ2luQ2FsbGVyAAkBDWNvbW1vblgyR25zYnQCCAUBaQxvcmlnaW5DYWxsZXIFAWkBaQEYdW5jbGFpbWVkUmV3YXJkc1JFQURPTkxZAQ51c2VyQWRkcmVzc1N0cgoBFmZvckVhY2hBc3NldFplcm9SZXdhcmQCBWFjY3VtBWFzc2V0CQCsAgIJAKwCAgUFYWNjdW0JALkJAgkAzAgCBQVhc3NldAkAzAgCAgEwCQDMCAICATAFA25pbAIBOgIBXwQSdW5jbGFpbWVkUmV3YXJkU3RyAwkAAAIFDnVzZXJBZGRyZXNzU3RyAgAKAAIkbAUTc3VwcG9ydGVkQXNzZXRzTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzACAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEWZm9yRWFjaEFzc2V0WmVyb1Jld2FyZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgOQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQQLdXNlckFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDnVzZXJBZGRyZXNzU3RyBA0kdDAyNTc1NTI1ODc0CQELdmFsdWVPckVsc2UCCQETZ2V0VXNlclBhcmFtc09yVW5pdAEFC3VzZXJBZGRyZXNzCQCWCgQGAAAAAAAABAlpc05ld1VzZXIIBQ0kdDAyNTc1NTI1ODc0Al8xBAxzdGFrZWRBbW91bnQIBQ0kdDAyNTc1NTI1ODc0Al8yBAxzdGFraW5nU3RhcnQIBQ0kdDAyNTc1NTI1ODc0Al8zBAl1c2VyR25zYnQIBQ0kdDAyNTc1NTI1ODc0Al80BA1zdGFrZWRBbW91bnRYCQC2AgEFCXVzZXJHbnNidAQbdXNlclJld2FyZEZyb21EZXBvc2l0TnVtS0VZCQEba2V5VXNlclJld2FyZEZyb21EZXBvc2l0TnVtAQUOdXNlckFkZHJlc3NTdHIEDmRlcG9zaXROdW1Vc2VyCQEMZ2V0SW50T3JFbHNlAgUbdXNlclJld2FyZEZyb21EZXBvc2l0TnVtS0VZAP///////////wEEDmRlcG9zaXROdW1MYXN0CQEMZ2V0SW50T3JFbHNlAgkBEWtleURlcG9zaXROdW1MYXN0AAD///////////8BCgEfZm9yRWFjaEFzc2V0Q2FsY1VuY2xhaW1lZFJld2FyZAIFYWNjdW0FYXNzZXQEDSR0MDI2MjE3MjYzNTUJAQpjYWxjUmV3YXJkBQUOdXNlckFkZHJlc3NTdHIFBWFzc2V0BQ1zdGFrZWRBbW91bnRYBQ5kZXBvc2l0TnVtVXNlcgUOZGVwb3NpdE51bUxhc3QEC3Jld2FyZFRvdGFsCAUNJHQwMjYyMTcyNjM1NQJfMQQGY2FjaGVkCAUNJHQwMjYyMTcyNjM1NQJfMgQHZHluYW1pYwgFDSR0MDI2MjE3MjYzNTUCXzMEE3Jld2FyZENhY2hlZFBhcnRLRVkIBQ0kdDAyNjIxNzI2MzU1Al80BAdjbGFpbWVkCQELdmFsdWVPckVsc2UCCQCfCAEJAQprZXlDbGFpbWVkAgUOdXNlckFkZHJlc3NTdHIFBWFzc2V0AAAJAKwCAgkArAICBQVhY2N1bQkAuQkCCQDMCAIFBWFzc2V0CQDMCAIJAKQDAQULcmV3YXJkVG90YWwJAMwIAgkApAMBBQdjbGFpbWVkBQNuaWwCAToCAV8KAAIkbAUTc3VwcG9ydGVkQXNzZXRzTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzACAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEfZm9yRWFjaEFzc2V0Q2FsY1VuY2xhaW1lZFJld2FyZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgOQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQkAlAoCBQNuaWwJALMCAgUSdW5jbGFpbWVkUmV3YXJkU3RyAAEBaQEYbnNidFVuc3Rha2luZ1NZU1JFQURPTkxZAhV1c2VyQWRkcmVzc1N0ck9yRW1wdHkLdW5zdGFrZUFtdFAEC3Jlc3VsdEFycmF5AwkAAAIFFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQIACQDMCAIAAAkAzAgCAAAJAMwIAgAACQDMCAIAAAUDbmlsBAt1c2VyQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUVdXNlckFkZHJlc3NTdHJPckVtcHR5BAdjZmdEQVRBCQEPZ2V0UGFyYW1zT3JGYWlsAAQLbnNidEFzc2V0SWQIBQdjZmdEQVRBAl8xBA1taW5Mb2NrQW1vdW50CAUHY2ZnREFUQQJfMgQIaGFsZkxpZmUIBQdjZmdEQVRBAl8zBAh1c2VyREFUQQkBC3ZhbHVlT3JFbHNlAgkBE2dldFVzZXJQYXJhbXNPclVuaXQBBQt1c2VyQWRkcmVzcwkAlgoEBgAAAAAAAAQJaXNOZXdVc2VyCAUIdXNlckRBVEECXzEEDHN0YWtlZEFtb3VudAgFCHVzZXJEQVRBAl8yBAlsb2NrU3RhcnQIBQh1c2VyREFUQQJfMwQKdW5zdGFrZUFtdAMJAGYCBQt1bnN0YWtlQW10UAUMc3Rha2VkQW1vdW50BQxzdGFrZWRBbW91bnQFC3Vuc3Rha2VBbXRQBA9zdGFrZWRBbW91bnRORVcJAGUCBQxzdGFrZWRBbW91bnQFCnVuc3Rha2VBbXQED2NvbWlzc2lvbkFtb3VudAMJAAACBQp1bnN0YWtlQW10AAAAAAkBBWFzSW50AQkA/AcEBQxtYXRoQ29udHJhY3QCIWdldFVuc3Rha2VDb21pc3Npb25BbW91bnRSRUFET05MWQkAzAgCBQp1bnN0YWtlQW10CQDMCAIFCWxvY2tTdGFydAkAzAgCBQhoYWxmTGlmZQUDbmlsBQNuaWwEDXJlY2VpdmVBbW91bnQJAGUCBQp1bnN0YWtlQW10BQ9jb21pc3Npb25BbW91bnQJAMwIAgUMc3Rha2VkQW1vdW50CQDMCAIFD3N0YWtlZEFtb3VudE5FVwkAzAgCBQ1yZWNlaXZlQW1vdW50CQDMCAIFD2NvbWlzc2lvbkFtb3VudAUDbmlsCQCUCgIFA25pbAULcmVzdWx0QXJyYXkBaQEWbnNidFN0YWtpbmdTWVNSRUFET05MWQIOdXNlckFkZHJlc3NTdHIIbnNidERpZmYEDHRvdGFsTnNidEFtdAkBDGdldEludE9yRWxzZQIJARdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudAAAAAQKdG90YWxHbnNidAkBDGdldEludE9yRWxzZQIJARZrZXlMb2NrUGFyYW1Ub3RhbEduc2J0AAUMdG90YWxOc2J0QW10AwkAAAIFDnVzZXJBZGRyZXNzU3RyAgAJAJQKAgUDbmlsCQDMCAIAAAkAzAgCBQx0b3RhbE5zYnRBbXQJAMwIAgAACQDMCAIAAAkAzAgCBQp0b3RhbEduc2J0BQNuaWwEC3VzZXJBZGRyZXNzCQEPdG9BZGRyZXNzT3JGYWlsAQUOdXNlckFkZHJlc3NTdHIEDSR0MDI4MTQ1MjgyNzAJAQt2YWx1ZU9yRWxzZQIJARNnZXRVc2VyUGFyYW1zT3JVbml0AQULdXNlckFkZHJlc3MJAJYKBAYAAAAAAAAECWlzTmV3VXNlcggFDSR0MDI4MTQ1MjgyNzACXzEEC3VzZXJOc2J0QW10CAUNJHQwMjgxNDUyODI3MAJfMgQMc3Rha2luZ1N0YXJ0CAUNJHQwMjgxNDUyODI3MAJfMwQQY3VycmVudFVzZXJHbnNidAgFDSR0MDI4MTQ1MjgyNzACXzQEEHVzZXJDb25zZW50VHVwbGUJARhyZWFkVXNlckNvbnNlbnRUb1gyR25zYnQBCQERQGV4dHJOYXRpdmUoMTA2MikBBQ51c2VyQWRkcmVzc1N0cgQZdXNlckNvbnNlbnRlZFRvWDJHbnNidEtFWQgFEHVzZXJDb25zZW50VHVwbGUCXzEEFnVzZXJDb25zZW50ZWRUb1gyR25zYnQIBRB1c2VyQ29uc2VudFR1cGxlAl8yBA5kZWx0YVVzZXJHbnNidAMDCQENaXNCb251c1BlcmlvZAEFBmhlaWdodAMFCWlzTmV3VXNlcgYFFnVzZXJDb25zZW50ZWRUb1gyR25zYnQHCQBoAgACBQhuc2J0RGlmZgUIbnNidERpZmYJAJQKAgUDbmlsCQDMCAIFC3VzZXJOc2J0QW10CQDMCAIFDHRvdGFsTnNidEFtdAkAzAgCBQxzdGFraW5nU3RhcnQJAMwIAgUQY3VycmVudFVzZXJHbnNidAkAzAgCBQp0b3RhbEduc2J0CQDMCAIFDmRlbHRhVXNlckduc2J0BQNuaWwBAnR4AQZ2ZXJpZnkABBNwdWJLZXlBZG1pbnNMaXN0U3RyCQC5CQIJAMwIAgIsRXh0RUVLMTlubUtqOW1DcG5XeXZFRUpGWUFUTE1jVkVNdm9oaFVIa3lITm0JAMwIAgIsRXY1cHk1RmZCUVg5Y1pwWUtuZlFyVEI0OUJ5ZjhRbXBaV2VEVlJpbTR5VjcJAMwIAgIsRFV1dUxqWHU5OG5Cd1pjN2Zxd0NUanRBM25uUndnVGJrTVNyNVNVMk5tRFIJAMwIAgIsRFV1dUxqWHU5OG5Cd1pjN2Zxd0NUanRBM25uUndnVGJrTVNyNVNVMk5tRFIFA25pbAUDU0VQBBBwdWJLZXlBZG1pbnNMaXN0CQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPY29udHJvbENvbnRyYWN0Agwlc19fbXVsdGlzaWcFE3B1YktleUFkbWluc0xpc3RTdHIFA1NFUAQFY291bnQJAGQCCQBkAgkAZAIDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQDZBAEJAJEDAgUQcHViS2V5QWRtaW5zTGlzdAAAAAEAAAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEJANkEAQkAkQMCBRBwdWJLZXlBZG1pbnNMaXN0AAEAAQAAAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgkA2QQBCQCRAwIFEHB1YktleUFkbWluc0xpc3QAAgABAAADCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwADCQDZBAEJAJEDAgUQcHViS2V5QWRtaW5zTGlzdAADAAIAAAkAZwIFBWNvdW50AAPQ9Yvm", "height": 2794155, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Gsn8hUuJ3TctkoqY5qkGHEW3qdZnVrpKeHRo2JfzMB9R Next: 9jhVTEgXfRXWDH2D1zrFnskFRYyh8hVuUgxsi9VPGi3h Diff:
OldNewDifferences
766766 let ca = ei._1
767767 let ej = ei._2
768768 let cs = ei._3
769- let dU = ei._4
770- $Tuple2(nil, [ej, eh, cs, dU, bd])
769+ let ek = ei._4
770+ let cP = cE(addressFromStringValue(cq))
771+ let cQ = cP._1
772+ let cR = cP._2
773+ let cN = if (if (bk(height))
774+ then if (ca)
775+ then true
776+ else cR
777+ else false)
778+ then (2 * eg)
779+ else eg
780+ $Tuple2(nil, [ej, eh, cs, ek, bd, cN])
771781 }
772782 }
773783
774784
775-@Verifier(ek)
776-func el () = {
777- let em = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], b)
778- let en = split(valueOrElse(getString(H, "%s__multisig"), em), b)
779- let eo = ((((if (sigVerify(ek.bodyBytes, ek.proofs[0], fromBase58String(en[0])))
785+@Verifier(el)
786+func em () = {
787+ let en = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], b)
788+ let eo = split(valueOrElse(getString(H, "%s__multisig"), en), b)
789+ let ep = ((((if (sigVerify(el.bodyBytes, el.proofs[0], fromBase58String(eo[0])))
780790 then 1
781- else 0) + (if (sigVerify(ek.bodyBytes, ek.proofs[1], fromBase58String(en[1])))
791+ else 0) + (if (sigVerify(el.bodyBytes, el.proofs[1], fromBase58String(eo[1])))
782792 then 1
783- else 0)) + (if (sigVerify(ek.bodyBytes, ek.proofs[2], fromBase58String(en[2])))
793+ else 0)) + (if (sigVerify(el.bodyBytes, el.proofs[2], fromBase58String(eo[2])))
784794 then 1
785- else 0)) + (if (sigVerify(ek.bodyBytes, ek.proofs[3], fromBase58String(en[3])))
795+ else 0)) + (if (sigVerify(el.bodyBytes, el.proofs[3], fromBase58String(eo[3])))
786796 then 2
787797 else 0))
788- (eo >= 3)
798+ (ep >= 3)
789799 }
790800
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = "__"
77
88 let c = 1000000
99
1010 let d = 100000000
1111
1212 let e = toBigInt(c)
1313
1414 let f = toBigInt(d)
1515
1616 let g = toBigInt(1000000000000000000)
1717
1818 let h = "WAVES"
1919
2020 let i = fromBase58String(h)
2121
2222 let j = 86400000
2323
2424 let k = 9
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 = 13
4545
4646 func v (w,x) = valueOrErrorMessage(getString(w, x), (((("mandatory " + toString(w)) + ".") + x) + " is not defined"))
4747
4848
4949 func y () = "%s%s__config__x2GnsbtOfferHeightStart"
5050
5151
5252 func z () = "%s%s__config__x2GnsbtOfferHeightEnd"
5353
5454
5555 func A () = "%s%s__config__controlAddress"
5656
5757
5858 func B () = "%s__controlConfig"
5959
6060
6161 func C (D) = split_4C(v(D, B()), b)
6262
6363
6464 func E (F,G) = valueOrErrorMessage(addressFromString(F[G]), ("Control cfg doesn't contain address at index " + toString(G)))
6565
6666
6767 let H = addressFromStringValue(valueOrElse(getString(this, A()), "3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx"))
6868
6969 let F = C(H)
7070
7171 let I = E(F, o)
7272
7373 let J = E(F, l)
7474
7575 let K = E(F, m)
7676
7777 let L = E(F, u)
7878
7979 let M = valueOrElse(getInteger(this, y()), 0)
8080
8181 let N = valueOrElse(getInteger(this, z()), 0)
8282
8383 func O () = "bond_asset_id"
8484
8585
8686 func P (Q) = ("%s%s_userGnsbtReleaseTime__" + Q)
8787
8888
8989 func R () = "%s__neutrinoContractAddress"
9090
9191
9292 func S () = "%s__mathContract"
9393
9494
9595 func T () = "%s__minLockAmount"
9696
9797
9898 func U () = "%s__halfLife"
9999
100100
101101 func V (W) = makeString(["%s%s%s", "paramByUser", toString(W), "amount"], a)
102102
103103
104104 func X (W) = makeString(["%s%s%s", "paramByUser", toString(W), "start"], a)
105105
106106
107107 func Y (W) = makeString(["%s%s%s", "paramByUser", toString(W), "gNsbt"], a)
108108
109109
110110 func Z (W) = makeString(["%s%s%s", "paramByUser", toString(W), "consentedToX2Gnsbt"], a)
111111
112112
113113 func aa (ab,W,ac) = makeString(["%s%s%s%s", "history", ab, toString(W), toBase58String(ac)], a)
114114
115115
116116 func ad () = makeString(["%s%s", "stats", "activeTotalLocked"], a)
117117
118118
119119 func ae () = makeString(["%s%s", "stats", "activeTotalGnsbt"], a)
120120
121121
122122 func af () = makeString(["%s%s", "stats", "locksCount"], a)
123123
124124
125125 func ag () = makeString(["%s%s", "stats", "activeUsersCount"], a)
126126
127127
128128 func ah (ai) = makeString(["%s%s%d", "stats", "depositAmtByDay", toString(ai)], a)
129129
130130
131131 func aj () = makeString(["%s%s%d", "stats", "depositAmtTotals"], a)
132132
133133
134134 func ak () = "%s__nextPeriod"
135135
136136
137137 func al () = "supportedRewardAssets"
138138
139139
140140 func am () = makeString(["%s%s%s", "dep", "lastNum"], a)
141141
142142
143143 func an (W) = makeString(["%s%s%s", "userRwdFromDepNum", W], a)
144144
145145
146146 func ao (ap,aq) = makeString(["%s%d", "rwdPerNsbtSumByDepNum", toString(ap), aq], a)
147147
148148
149149 func ar (W,aq) = makeString(["%s%s%s", "rwd", W, aq], a)
150150
151151
152152 func as (W,aq) = makeString(["%s%s%s", "clm", W, aq], a)
153153
154154
155155 func at (aq) = makeString(["%s%s", "notDistributed", aq], a)
156156
157157
158158 func au (av,aw) = fraction(toBigInt(av), g, aw)
159159
160160
161161 func ax (x) = valueOrElse(getInteger(this, x), 0)
162162
163163
164164 func ay (x,az) = valueOrElse(getInteger(this, x), az)
165165
166166
167167 func aA (x) = valueOrErrorMessage(getInteger(this, x), (("Mandatory this." + x) + " is not defined"))
168168
169169
170170 func aB (x,az) = valueOrElse(getString(this, x), az)
171171
172172
173173 func aC (aD) = valueOrErrorMessage(addressFromString(aD), ("couldn't parse passed addressStr=" + aD))
174174
175175
176176 func aE (aF) = if ((aF == h))
177177 then unit
178178 else fromBase58String(aF)
179179
180180
181181 func aG (aH) = {
182182 let aI = aH
183183 if ($isInstanceOf(aI, "Int"))
184184 then {
185185 let aJ = aI
186186 aJ
187187 }
188188 else throw("fail to cast into Int")
189189 }
190190
191191
192192 func aK (aL,aM,aN,aO) = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aL), toString(aM), toString(aN), toString(aO)], a)
193193
194194
195195 func aP (aQ,aR) = makeString(["%s%d%d%s", aQ, toString(lastBlock.height), toString(lastBlock.timestamp), aR], a)
196196
197197
198198 func aS (ab,W,ac,aL,aM,aN,aO) = StringEntry(aa(ab, W, ac), aK(aL, aM, aN, aO))
199199
200200
201201 func aT (W,ac,aR) = StringEntry(aa("claim", W, ac), aP(toString(W), aR))
202202
203203
204204 func aU (aV,aW,aX,aY) = {
205205 let aZ = ax(af())
206206 let ba = ax(ag())
207207 let bb = ax(ad())
208208 let bc = (bb + aV)
209209 let bd = ay(ae(), bb)
210210 $Tuple3([IntegerEntry(af(), (aZ + aW)), IntegerEntry(ag(), (ba + aX)), IntegerEntry(ad(), bc), IntegerEntry(ae(), (bd + aY))], bb, bc)
211211 }
212212
213213
214214 func be (W,bf,bg,bh) = [IntegerEntry(V(W), bf), IntegerEntry(Y(W), bh), IntegerEntry(X(W), bg)]
215215
216216
217217 func bi () = $Tuple3(fromBase58String(getStringValue(J, O())), aA(T()), aA(U()))
218218
219219
220220 func bj (W) = (ay(V(W), 0) > 0)
221221
222222
223223 func bk (bl) = if ((bl >= M))
224224 then (N >= bl)
225225 else false
226226
227227
228228 func bm (W) = if (bj(W))
229229 then {
230230 let bn = aA(V(W))
231231 $Tuple4(false, bn, aA(X(W)), ay(Y(W), bn))
232232 }
233233 else unit
234234
235235
236236 func bo (W) = valueOrErrorMessage(bm(W), (("User " + toString(W)) + " is not defined"))
237237
238238
239239 let bp = aB(al(), "")
240240
241241 let bq = split(bp, "_")
242242
243243 func br (W,bs,bt,bu,bv) = {
244244 let bw = ao(bv, bs)
245245 let bx = parseBigIntValue(aB(ao(bv, bs), "0"))
246246 let by = parseBigIntValue(aB(ao(bu, bs), "0"))
247247 let bz = toInt(fraction((bx - by), bt, g))
248248 let bA = ar(W, bs)
249249 let bB = ay(bA, 0)
250250 $Tuple4((bB + bz), bB, bz, bA)
251251 }
252252
253253
254254 func bC (ai) = ((ai / j) * j)
255255
256256
257257 func bD (bE,bF,bG) = {
258258 let bH = valueOrErrorMessage(indexOf(bE, bF), ((("there is no substring " + bF) + " in ") + bE))
259259 if ((bH == 0))
260260 then 0
261261 else {
262262 let bI = take(bE, bH)
263263 (size(split(bI, bG)) - 1)
264264 }
265265 }
266266
267267
268268 let bJ = "%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d"
269269
270270 let bK = (bJ + "__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0")
271271
272272 func bL (bM) = {
273273 let bN = (size(bM) - 1)
274274 func bO (bP,G) = if ((bN > G))
275275 then bP
276276 else (bP :+ "0")
277277
278278 let bQ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
279279 let bR = size(bQ)
280280 let bS = bM
281281 func bT (bU,bV) = if ((bV >= bR))
282282 then bU
283283 else bO(bU, bQ[bV])
284284
285285 func bW (bU,bV) = if ((bV >= bR))
286286 then bU
287287 else throw("List size exceeds 18")
288288
289289 bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18)
290290 }
291291
292292
293293 func bX (bM) = {
294294 let bN = (size(split_4C(bM, b)) - 1)
295295 func bY (bP,G) = if ((bN > G))
296296 then bP
297297 else (bP + "__0")
298298
299299 let bQ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
300300 let bR = size(bQ)
301301 let bS = bM
302302 func bT (bU,bV) = if ((bV >= bR))
303303 then bU
304304 else bY(bU, bQ[bV])
305305
306306 func bW (bU,bV) = if ((bV >= bR))
307307 then bU
308308 else throw("List size exceeds 18")
309309
310310 bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18)
311311 }
312312
313313
314314 func bZ (ca,W,cb) = {
315315 let bt = toBigInt(cb)
316316 let cc = an(W)
317317 let bu = ay(cc, -1)
318318 let bv = ay(am(), -1)
319319 func cd (ce,cf) = {
320320 let cg = br(W, cf, bt, bu, bv)
321321 let ch = cg._1
322322 let ci = cg._2
323323 let cj = cg._3
324324 let bA = cg._4
325325 (ce :+ IntegerEntry(bA, ch))
326326 }
327327
328328 if (if ((bv == -1))
329329 then (bu == -1)
330330 else false)
331331 then nil
332332 else if (if ((bv == -1))
333333 then (bu > -1)
334334 else false)
335335 then throw("invalid depositNumLast and depositNumUser state")
336336 else if (if ((bv > -1))
337337 then (bu >= -1)
338338 else false)
339339 then if (ca)
340340 then [IntegerEntry(cc, bv)]
341341 else ({
342342 let bQ = bq
343343 let bR = size(bQ)
344344 let bS = nil
345345 func bT (bU,bV) = if ((bV >= bR))
346346 then bU
347347 else cd(bU, bQ[bV])
348348
349349 func bW (bU,bV) = if ((bV >= bR))
350350 then bU
351351 else throw("List size exceeds 9")
352352
353353 bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
354354 } :+ IntegerEntry(cc, bv))
355355 else throw(((("uncovered condition: depositNumLast=" + toString(bv)) + " depositNumUser=") + toString(bu)))
356356 }
357357
358358
359359 func ck (aq,cl) = {
360360 let cm = at(aq)
361361 let cn = ay(cm, 0)
362362 IntegerEntry(cm, (cn + cl))
363363 }
364364
365365
366366 func co (W,cp) = {
367367 let cq = toString(W)
368368 if ((size(cp.payments) > 0))
369369 then throw("payments are not accepted")
370370 else {
371371 let cr = valueOrElse(bm(W), $Tuple4(true, 0, 0, 0))
372372 let ca = cr._1
373373 let cb = cr._2
374374 let cs = cr._3
375375 let bh = cr._4
376376 let bt = toBigInt(bh)
377377 let cc = an(cq)
378378 let bu = ay(cc, -1)
379379 let bv = ay(am(), -1)
380380 func ct (ce,cf) = {
381381 let cu = br(cq, cf, bt, bu, bv)
382382 let ch = cu._1
383383 let ci = cu._2
384384 let cj = cu._3
385385 let bA = cu._4
386386 let cv = as(cq, cf)
387387 let cw = ce
388388 let cx = cw._1
389389 let cy = cw._2
390390 let cz = makeString([cf, toString(ch)], ":")
391391 let cA = makeString([cy, cz], "_")
392392 if ((0 >= ch))
393393 then $Tuple2(cx, cA)
394394 else $Tuple2((((cx :+ ScriptTransfer(W, ch, aE(cf))) :+ IntegerEntry(cv, (valueOrElse(getInteger(cv), 0) + ch))) :+ IntegerEntry(bA, 0)), cA)
395395 }
396396
397397 let cB = {
398398 let bQ = bq
399399 let bR = size(bQ)
400400 let bS = $Tuple2(nil, "")
401401 func bT (bU,bV) = if ((bV >= bR))
402402 then bU
403403 else ct(bU, bQ[bV])
404404
405405 func bW (bU,bV) = if ((bV >= bR))
406406 then bU
407407 else throw("List size exceeds 9")
408408
409409 bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
410410 }
411411 let cC = cB._1
412412 let cD = cB._2
413413 if ((0 >= size(cC)))
414414 then $Tuple2(nil, 0)
415415 else $Tuple2(((cC :+ IntegerEntry(cc, bv)) :+ aT(W, cp.transactionId, drop(cD, 1))), size(cC))
416416 }
417417 }
418418
419419
420420 func cE (W) = {
421421 let x = Z(W)
422422 let aH = valueOrElse(getBoolean(this, x), false)
423423 $Tuple2(x, aH)
424424 }
425425
426426
427427 func cF (W,cp) = if (!(bk(height)))
428428 then throw("No 'Double gNSBT action' available now")
429429 else {
430430 let cG = co(W, cp)
431431 let cH = cG._1
432432 let cI = cG._2
433433 let cJ = valueOrElse(bm(W), $Tuple4(true, 0, -1, 0))
434434 let ca = cJ._1
435435 let cK = cJ._2
436436 let cL = cJ._3
437437 let cM = cJ._4
438438 if (ca)
439439 then throw("You have nothing to restake")
440440 else {
441441 let cN = cM
442442 let cO = (cM + cN)
443443 let cP = cE(W)
444444 let cQ = cP._1
445445 let cR = cP._2
446446 if (cR)
447447 then throw("User has already doubled its gNSBT value")
448448 else {
449449 let cS = aU(0, 0, 0, cN)
450450 let cT = cS._1
451451 let cU = cS._2
452452 let cV = cS._3
453453 $Tuple2((((cH ++ be(W, cK, height, cO)) ++ cT) :+ BooleanEntry(cQ, true)), cI)
454454 }
455455 }
456456 }
457457
458458
459459 @Callable(cp)
460460 func constructorV1 (cW,cX,cY,cZ,da) = if ((cp.caller != this))
461461 then throw("Permission denied")
462462 else [StringEntry(R(), cW), StringEntry(S(), cX), IntegerEntry(T(), cY), IntegerEntry(U(), cZ), StringEntry(al(), da)]
463463
464464
465465
466466 @Callable(cp)
467467 func constructorV2 (db,dc) = if ((cp.caller != this))
468468 then throw("Permission denied")
469469 else [IntegerEntry(y(), db), IntegerEntry(z(), dc)]
470470
471471
472472
473473 @Callable(cp)
474474 func stake () = {
475475 let dd = bi()
476476 let de = dd._1
477477 let cY = dd._2
478478 let cZ = dd._3
479479 if ((size(cp.payments) != 1))
480480 then throw("Invalid payments size")
481481 else {
482482 let df = cp.payments[0]
483483 let bn = df.amount
484484 let dg = (("Invalid asset. " + toBase58String(de)) + " is expected")
485485 let bs = valueOrErrorMessage(df.assetId, dg)
486486 if ((bs != de))
487487 then throw(dg)
488488 else {
489489 let W = cp.caller
490490 let cq = toString(cp.caller)
491491 let dh = valueOrElse(bm(W), $Tuple4(true, 0, -1, 0))
492492 let ca = dh._1
493493 let cK = dh._2
494494 let cL = dh._3
495495 let cM = dh._4
496496 let di = if (ca)
497497 then bn
498498 else (bn + cK)
499499 let dj = if (ca)
500500 then height
501501 else aG(invoke(I, "mergeStakesREADONLY", [bn, height, cK, cL, cZ], nil))
502502 if ((cY > di))
503503 then throw(("Min lock amount is " + toString(cY)))
504504 else {
505505 let cP = cE(W)
506506 let cQ = cP._1
507507 let cR = cP._2
508508 let cN = if (if (bk(height))
509509 then if (ca)
510510 then true
511511 else cR
512512 else false)
513513 then (2 * bn)
514514 else bn
515515 let dk = if (ca)
516516 then [BooleanEntry(cQ, true)]
517517 else nil
518518 let dl = aU(bn, 1, if (ca)
519519 then 1
520520 else 0, cN)
521521 let cT = dl._1
522522 let cU = dl._2
523523 let cV = dl._3
524524 (((([aS("stake", W, cp.transactionId, cK, cL, di, dj)] ++ bZ(ca, cq, cM)) ++ be(W, di, dj, (cM + cN))) ++ cT) ++ dk)
525525 }
526526 }
527527 }
528528 }
529529
530530
531531
532532 @Callable(cp)
533533 func unstake (bn) = if ((size(cp.payments) != 0))
534534 then throw("unstake doesn't require any payment")
535535 else {
536536 let W = cp.caller
537537 let cq = toString(W)
538538 let dm = bi()
539539 let de = dm._1
540540 let cY = dm._2
541541 let cZ = dm._3
542542 let dn = bo(W)
543543 let ca = dn._1
544544 let cK = dn._2
545545 let do = dn._3
546546 let cM = dn._4
547547 if ((0 >= cK))
548548 then throw("Nothing to unstake")
549549 else if ((bn > cK))
550550 then throw(((("Requested " + toString(bn)) + ", but staked only ") + toString(cK)))
551551 else {
552552 let dp = value(blockInfoByHeight(height)).timestamp
553553 let dq = valueOrElse(getInteger(L, P(cq)), 0)
554554 if ((dq >= dp))
555555 then throw(("Your gNsbt are taking part in voting, cannot unstake until " + toString(dq)))
556556 else {
557557 let dr = aG(invoke(I, "getUnstakeComissionAmountREADONLY", [bn, do, cZ], nil))
558558 let ds = (cM - cK)
559559 let dt = min([bn, ds])
560560 let du = (dt + bn)
561561 let dv = aU(-(bn), if ((bn == cK))
562562 then -1
563563 else 0, if ((bn == cK))
564564 then -1
565565 else 0, -(du))
566566 let cT = dv._1
567567 let cU = dv._2
568568 let cV = dv._3
569569 ((([ScriptTransfer(W, (bn - dr), de), ScriptTransfer(K, dr, de), aS("unstake", W, cp.transactionId, cK, do, (cK - bn), do)] ++ bZ(false, cq, cM)) ++ be(W, (cK - bn), do, (cM - du))) ++ cT)
570570 }
571571 }
572572 }
573573
574574
575575
576576 @Callable(cp)
577577 func deposit () = {
578578 let cU = ay(ae(), ay(ad(), 0))
579579 if ((0 > cU))
580580 then throw("TODO: case is not supported")
581581 else {
582582 let dw = am()
583583 let bv = ay(dw, -1)
584584 let dx = (bv + 1)
585585 let dy = aj()
586586 let dz = ah(bC(lastBlock.timestamp))
587587 let dA = bL(split(valueOrElse(getString(dy), bK), b))
588588 func dB (bP,dC) = {
589589 let bn = dC.amount
590590 let dD = toBase58String(valueOrElse(dC.assetId, i))
591591 if (!(contains(bp, dD)))
592592 then throw(((bp + " doesn't contain ") + dD))
593593 else if ((cU == 0))
594594 then $Tuple4((bP._1 :+ ck(dD, bn)), (bP._2 :+ dD), (bP._3 :+ toBigInt(0)), (bP._4 :+ bn))
595595 else {
596596 let dE = fraction(toBigInt(bn), g, toBigInt(cU))
597597 $Tuple4(bP._1, (bP._2 :+ dD), (bP._3 :+ dE), (bP._4 :+ bn))
598598 }
599599 }
600600
601601 let dF = {
602602 let bQ = cp.payments
603603 let bR = size(bQ)
604604 let bS = $Tuple4(nil, nil, nil, nil)
605605 func bT (bU,bV) = if ((bV >= bR))
606606 then bU
607607 else dB(bU, bQ[bV])
608608
609609 func bW (bU,bV) = if ((bV >= bR))
610610 then bU
611611 else throw("List size exceeds 10")
612612
613613 bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
614614 }
615615 func dG (ce,dH) = {
616616 let dI = ce._3
617617 let dJ = aB(ao(bv, dH), "0")
618618 let G = indexOf(dF._2, dH)
619619 let dK = if (isDefined(G))
620620 then {
621621 let dL = value(G)
622622 let dM = dF._4[dL]
623623 $Tuple2(toString((parseBigIntValue(dJ) + dF._3[dL])), toString((parseIntValue(dA[(dI + 1)]) + dM)))
624624 }
625625 else $Tuple2(dJ, dA[(dI + 1)])
626626 $Tuple3((ce._1 :+ StringEntry(ao(dx, dH), dK._1)), ((ce._2 + b) + dK._2), (dI + 1))
627627 }
628628
629629 let dN = {
630630 let bQ = bq
631631 let bR = size(bQ)
632632 let bS = $Tuple3(nil, bJ, 0)
633633 func dO (bU,bV) = if ((bV >= bR))
634634 then bU
635635 else dG(bU, bQ[bV])
636636
637637 func dP (bU,bV) = if ((bV >= bR))
638638 then bU
639639 else throw("List size exceeds 9")
640640
641641 dP(dO(dO(dO(dO(dO(dO(dO(dO(dO(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
642642 }
643643 let dQ = bX(dN._2)
644644 $Tuple2(((((dF._1 ++ dN._1) :+ IntegerEntry(dw, dx)) :+ StringEntry(dy, dQ)) :+ StringEntry(dz, dQ)), dx)
645645 }
646646 }
647647
648648
649649
650650 @Callable(cp)
651651 func claimRewards () = co(cp.caller, cp)
652652
653653
654654
655655 @Callable(cp)
656656 func claimRewardsByOriginCaller () = co(cp.originCaller, cp)
657657
658658
659659
660660 @Callable(cp)
661661 func x2Gnsbt () = cF(cp.caller, cp)
662662
663663
664664
665665 @Callable(cp)
666666 func x2GnsbtByOriginCaller () = cF(cp.originCaller, cp)
667667
668668
669669
670670 @Callable(cp)
671671 func unclaimedRewardsREADONLY (cq) = {
672672 func dR (ce,cf) = ((ce + makeString([cf, "0", "0"], ":")) + "_")
673673
674674 let dS = if ((cq == ""))
675675 then {
676676 let bQ = bq
677677 let bR = size(bQ)
678678 let bS = ""
679679 func bT (bU,bV) = if ((bV >= bR))
680680 then bU
681681 else dR(bU, bQ[bV])
682682
683683 func bW (bU,bV) = if ((bV >= bR))
684684 then bU
685685 else throw("List size exceeds 9")
686686
687687 bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
688688 }
689689 else {
690690 let W = addressFromStringValue(cq)
691691 let dT = valueOrElse(bm(W), $Tuple4(true, 0, 0, 0))
692692 let ca = dT._1
693693 let cb = dT._2
694694 let cs = dT._3
695695 let dU = dT._4
696696 let bt = toBigInt(dU)
697697 let cc = an(cq)
698698 let bu = ay(cc, -1)
699699 let bv = ay(am(), -1)
700700 func ct (ce,cf) = {
701701 let dV = br(cq, cf, bt, bu, bv)
702702 let ch = dV._1
703703 let ci = dV._2
704704 let cj = dV._3
705705 let bA = dV._4
706706 let dW = valueOrElse(getInteger(as(cq, cf)), 0)
707707 ((ce + makeString([cf, toString(ch), toString(dW)], ":")) + "_")
708708 }
709709
710710 let bQ = bq
711711 let bR = size(bQ)
712712 let bS = ""
713713 func bT (bU,bV) = if ((bV >= bR))
714714 then bU
715715 else ct(bU, bQ[bV])
716716
717717 func bW (bU,bV) = if ((bV >= bR))
718718 then bU
719719 else throw("List size exceeds 9")
720720
721721 bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
722722 }
723723 $Tuple2(nil, dropRight(dS, 1))
724724 }
725725
726726
727727
728728 @Callable(cp)
729729 func nsbtUnstakingSYSREADONLY (dX,dY) = {
730730 let dZ = if ((dX == ""))
731731 then [0, 0, 0, 0]
732732 else {
733733 let W = addressFromStringValue(dX)
734734 let ea = bi()
735735 let eb = ea._1
736736 let cY = ea._2
737737 let cZ = ea._3
738738 let ec = valueOrElse(bm(W), $Tuple4(true, 0, 0, 0))
739739 let ca = ec._1
740740 let cb = ec._2
741741 let do = ec._3
742742 let ed = if ((dY > cb))
743743 then cb
744744 else dY
745745 let ee = (cb - ed)
746746 let dr = if ((ed == 0))
747747 then 0
748748 else aG(invoke(I, "getUnstakeComissionAmountREADONLY", [ed, do, cZ], nil))
749749 let ef = (ed - dr)
750750 [cb, ee, ef, dr]
751751 }
752752 $Tuple2(nil, dZ)
753753 }
754754
755755
756756
757757 @Callable(cp)
758758 func nsbtStakingSYSREADONLY (cq,eg) = {
759759 let eh = ay(ad(), 0)
760760 let bd = ay(ae(), eh)
761761 if ((cq == ""))
762762 then $Tuple2(nil, [0, eh, 0, 0, bd])
763763 else {
764764 let W = aC(cq)
765765 let ei = valueOrElse(bm(W), $Tuple4(true, 0, 0, 0))
766766 let ca = ei._1
767767 let ej = ei._2
768768 let cs = ei._3
769- let dU = ei._4
770- $Tuple2(nil, [ej, eh, cs, dU, bd])
769+ let ek = ei._4
770+ let cP = cE(addressFromStringValue(cq))
771+ let cQ = cP._1
772+ let cR = cP._2
773+ let cN = if (if (bk(height))
774+ then if (ca)
775+ then true
776+ else cR
777+ else false)
778+ then (2 * eg)
779+ else eg
780+ $Tuple2(nil, [ej, eh, cs, ek, bd, cN])
771781 }
772782 }
773783
774784
775-@Verifier(ek)
776-func el () = {
777- let em = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], b)
778- let en = split(valueOrElse(getString(H, "%s__multisig"), em), b)
779- let eo = ((((if (sigVerify(ek.bodyBytes, ek.proofs[0], fromBase58String(en[0])))
785+@Verifier(el)
786+func em () = {
787+ let en = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], b)
788+ let eo = split(valueOrElse(getString(H, "%s__multisig"), en), b)
789+ let ep = ((((if (sigVerify(el.bodyBytes, el.proofs[0], fromBase58String(eo[0])))
780790 then 1
781- else 0) + (if (sigVerify(ek.bodyBytes, ek.proofs[1], fromBase58String(en[1])))
791+ else 0) + (if (sigVerify(el.bodyBytes, el.proofs[1], fromBase58String(eo[1])))
782792 then 1
783- else 0)) + (if (sigVerify(ek.bodyBytes, ek.proofs[2], fromBase58String(en[2])))
793+ else 0)) + (if (sigVerify(el.bodyBytes, el.proofs[2], fromBase58String(eo[2])))
784794 then 1
785- else 0)) + (if (sigVerify(ek.bodyBytes, ek.proofs[3], fromBase58String(en[3])))
795+ else 0)) + (if (sigVerify(el.bodyBytes, el.proofs[3], fromBase58String(eo[3])))
786796 then 2
787797 else 0))
788- (eo >= 3)
798+ (ep >= 3)
789799 }
790800

github/deemru/w8io/873ac7e 
98.50 ms