tx · F4ZRZKEp5Tdpuwvtz9A7MmyUEwa7FJwExVLEHZD3TyBT 3NAg2HDvKz7gwrNc2wnUxdK74NydBFUXTYP: -0.03300000 Waves 2024.12.09 16:58 [3407157] smart account 3NAg2HDvKz7gwrNc2wnUxdK74NydBFUXTYP > SELF 0.00000000 Waves
{ "type": 13, "id": "F4ZRZKEp5Tdpuwvtz9A7MmyUEwa7FJwExVLEHZD3TyBT", "fee": 3300000, "feeAssetId": null, "timestamp": 1733752673809, "version": 2, "chainId": 84, "sender": "3NAg2HDvKz7gwrNc2wnUxdK74NydBFUXTYP", "senderPublicKey": "BEbZF8zo7WjaQFZFFuPs7hqSLEgGwjwQFGg4tSidf9C3", "proofs": [ "5LvhauEw6qzaYyW7rRZQvQivmRydM9VcooxrxEXZeMnsjfjhmftRYRo3rR98tpiThLipMmMVZZfAvVwcCFAWqzYB" ], "script": "base64:BwJuCAISCAoGCAgICAgIEggKBggICAgICBIJCgcICAgICAgIEgUKAwgICBIDCgEIEgwKCggICAgICAgICAgSBgoECAgICBIFCgMBCAgSBQoDAQgIEgMKAQESAwoBCBIDCgEIEgASABIDCgEIEgMKAQhxAAlTRVBBUkFUT1ICAl9fAAxLRVlfTVVMVElTSUcCCE1VTFRJU0lHAApLRVlfU1RBVFVTAgZTVEFUVVMACEtFWV9JTklUAgRJTklUAApLRVlfUEFVU0VEAgZQQVVTRUQACktFWV9QQVVTRVICBlBBVVNFUgAMS0VZX0VYRUNVVE9SAghFWEVDVVRPUgATS0VZX0NBTExFUl9DT05UUkFDVAIPQ0FMTEVSX0NPTlRSQUNUAA9LRVlfV0FWRVNfVkFVTFQCC1dBVkVTX1ZBVUxUABNLRVlfQUNDT1VOVF9TVE9SQUdFAg9BQ0NPVU5UX1NUT1JBR0UACUtFWV9DSEFJTgIFQ0hBSU4AEktFWV9BU1NFVF9DVVJSRU5DWQIOQVNTRVRfQ1VSUkVOQ1kAEktFWV9BU1NFVF9SRVNFUlZFUwIOQVNTRVRfUkVTRVJWRVMAGUtFWV9BU1NFVF9SRVNFUlZFU19MT0NLRUQCFUFTU0VUX1JFU0VSVkVTX0xPQ0tFRAAYS0VZX1VTRVJfTE9DS0VEX0NVUlJFTkNZAhRVU0VSX0xPQ0tFRF9DVVJSRU5DWQAVS0VZX0NVUlJFTkNZX1JFU0VSVkVTAhFDVVJSRU5DWV9SRVNFUlZFUwAbS0VZX1JFUVVFU1RfV0lUSERSQVdBTF9TSVpFAhdSRVFVRVNUX1dJVEhEUkFXQUxfU0laRQAWS0VZX1JFUVVFU1RfV0lUSERSQVdBTAISUkVRVUVTVF9XSVRIRFJBV0FMACJLRVlfUkVRVUVTVF9XSVRIRFJBV0FMX0JMT0NLX0RFTEFZAh5SRVFVRVNUX1dJVEhEUkFXQUxfQkxPQ0tfREVMQVkADUtFWV9TRVFVRU5DRVICCVNFUVVFTkNFUgATS0VZX1dJVEhEUkFXQUxfSEFTSAIPV0lUSERSQVdBTF9IQVNIABFLRVlfVkFVTFRfQURBUFRFUgINVkFVTFRfQURBUFRFUgAWS0VZX1JFV0FSRF9ESVNUUklCVVRPUgISUkVXQVJEX0RJU1RSSUJVVE9SABlLRVlfUkVMQVlFUl9GRUVfUkVDSVBJRU5UAhVSRUxBWUVSX0ZFRV9SRUNJUElFTlQADEZVTkNfREVQT1NJVAIHZGVwb3NpdAAVRlVOQ19HRVRfVVNFUl9CQUxBTkNFAg5nZXRVc2VyQmFsYW5jZQAWRlVOQ19JTlRFUk5BTF9UUkFOU0ZFUgIQaW50ZXJuYWxUcmFuc2ZlcgANRlVOQ19XSVRIRFJBVwIId2l0aGRyYXcAG0ZVTkNfREVQT1NJVF9TVEFLSU5HX1JFV0FSRAIUZGVwb3NpdFN0YWtpbmdSZXdhcmQAFlJFUVVFU1RfU1RBVFVTX0NSRUFURUQAAAATUkVRVUVTVF9TVEFUVVNfRE9ORQABABdSRVFVRVNUX1NUQVRVU19SRUpFQ1RFRAACAAVXQVZFUwIFV0FWRVMAC1NQT1RfV0FMTEVUAgRTUE9UAAdNQVhfSU5UAP//////////fwALWkVST19CSUdJTlQJALYCAQAAAApPTkVfQklHSU5UCQC2AgEAAQAHT05FX0RBWQCAuJkpAA5BTEdfVFlQRV9XQVZFUwABAAxBTEdfVFlQRV9FVk0AAgAMV0FWRVNfUFJFRklYAQT///8BABRFVk1fU0lHTkFUVVJFX1BSRUZJWAEcGUV0aGVyZXVtIFNpZ25lZCBNZXNzYWdlOgozMgEQX3ZhbGlkYXRlQWRkcmVzcwIIYWRkcmVzc18EZXJyXwQHJG1hdGNoMAkApggBBQhhZGRyZXNzXwMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAFhBQckbWF0Y2gwBgkAAgEFBGVycl8BDF92YWxpZGF0ZUludAQEdmFsXw5sb3dlckJvdW5kYXJ5Xw51cHBlckJvdW5kYXJ5XwRlcnJfAwMJAGYCBQ5sb3dlckJvdW5kYXJ5XwUEdmFsXwYJAGYCBQR2YWxfBQ51cHBlckJvdW5kYXJ5XwkAAgEFBGVycl8GAQ9fdmFsaWRhdGVCaWdJbnQDBHZhbF8ObG93ZXJCb3VuZGFyeV8EZXJyXwMJAL8CAgUObG93ZXJCb3VuZGFyeV8FBHZhbF8JAAIBBQRlcnJfBgERX3ZhbGlkYXRlQmlnSW50XzIEBHZhbF8ObG93ZXJCb3VuZGFyeV8OdXBwZXJCb3VuZGFyeV8EZXJyXwMDCQC/AgIFDmxvd2VyQm91bmRhcnlfBQR2YWxfBgkAvwICBQR2YWxfBQ51cHBlckJvdW5kYXJ5XwkAAgEFBGVycl8GAQ9fdmFsaWRhdGVTdHJpbmcCBHZhbF8EZXJyXwMDCQBnAgAACQCxAgEFBHZhbF8GCQEIY29udGFpbnMCBQR2YWxfBQlTRVBBUkFUT1IJAAIBBQRlcnJfBgEUX3ZhbGlkYXRlU3RyaW5nRXF1YWwDBXZhbDFfBXZhbDJfBGVycl8DCQECIT0CBQV2YWwxXwUFdmFsMl8JAAIBBQRlcnJfBgEJX2xvYWRJbml0AAQHJG1hdGNoMAkAoAgBBQhLRVlfSU5JVAMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAFhBQckbWF0Y2gwBQFhBwEJX3NhdmVJbml0AQdpc0luaXRfCQDMCAIJAQxCb29sZWFuRW50cnkCBQhLRVlfSU5JVAUHaXNJbml0XwUDbmlsAQpfbG9hZFBhdXNlAAQHJG1hdGNoMAkAoAgBBQpLRVlfUEFVU0VEAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAWEFByRtYXRjaDAFAWEHAQpfc2F2ZVBhdXNlAQlpc1BhdXNlZF8JAMwIAgkBDEJvb2xlYW5FbnRyeQIFCktFWV9QQVVTRUQFCWlzUGF1c2VkXwUDbmlsAQtfbG9hZFBhdXNlcgAEByRtYXRjaDAJAKIIAQUKS0VZX1BBVVNFUgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAWEJAQdBZGRyZXNzAQEAAQtfc2F2ZVBhdXNlcgEHcGF1c2VyXwkAzAgCCQELU3RyaW5nRW50cnkCBQpLRVlfUEFVU0VSCQClCAEFB3BhdXNlcl8FA25pbAENX2xvYWRNdWx0aXNpZwAEByRtYXRjaDAJAKIIAQUMS0VZX01VTFRJU0lHAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQUBYQkBB0FkZHJlc3MBAQABDV9zYXZlTXVsdGlzaWcBCW11bHRpc2lnXwkAzAgCCQELU3RyaW5nRW50cnkCBQxLRVlfTVVMVElTSUcJAKUIAQUJbXVsdGlzaWdfBQNuaWwBE19sb2FkQ2FsbGVyQ29udHJhY3QBCGNoYWluSWRfBAckbWF0Y2gwCQCiCAEJALkJAgkAzAgCBRNLRVlfQ0FMTEVSX0NPTlRSQUNUCQDMCAIJAKQDAQUIY2hhaW5JZF8FA25pbAUJU0VQQVJBVE9SAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAUBYQIAARNfc2F2ZUNhbGxlckNvbnRyYWN0AghjaGFpbklkXw9jYWxsZXJDb250cmFjdF8JAMwIAgkBC1N0cmluZ0VudHJ5AgkAuQkCCQDMCAIFE0tFWV9DQUxMRVJfQ09OVFJBQ1QJAMwIAgkApAMBBQhjaGFpbklkXwUDbmlsBQlTRVBBUkFUT1IFD2NhbGxlckNvbnRyYWN0XwUDbmlsAQ1fbG9hZEV4ZWN1dG9yAAQHJG1hdGNoMAkAoggBBQxLRVlfRVhFQ1VUT1IDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBBQFhCQEHQWRkcmVzcwEBAAENX3NhdmVFeGVjdXRvcgEJZXhlY3V0b3JfCQDMCAIJAQtTdHJpbmdFbnRyeQIFDEtFWV9FWEVDVVRPUgkApQgBBQlleGVjdXRvcl8FA25pbAETX2xvYWRBY2NvdW50U3RvcmFnZQAEByRtYXRjaDAJAKIIAQUTS0VZX0FDQ09VTlRfU1RPUkFHRQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAWEJAQdBZGRyZXNzAQEAARNfc2F2ZUFjY291bnRTdG9yYWdlAQ9hY2NvdW50U3RvcmFnZV8JAMwIAgkBC1N0cmluZ0VudHJ5AgUTS0VZX0FDQ09VTlRfU1RPUkFHRQkApQgBBQ9hY2NvdW50U3RvcmFnZV8FA25pbAEPX2xvYWRXYXZlc1ZhdWx0AAQHJG1hdGNoMAkAoggBBQ9LRVlfV0FWRVNfVkFVTFQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBBQFhCQEHQWRkcmVzcwEBAAEPX3NhdmVXYXZlc1ZhdWx0AQt3YXZlc1ZhdWx0XwkAzAgCCQELU3RyaW5nRW50cnkCBQ9LRVlfV0FWRVNfVkFVTFQJAKUIAQULd2F2ZXNWYXVsdF8FA25pbAEKX2xvYWRDaGFpbgEIY2hhaW5JZF8EByRtYXRjaDAJAKIIAQkAuQkCCQDMCAIFCUtFWV9DSEFJTgkAzAgCCQCkAwEFCGNoYWluSWRfBQNuaWwFCVNFUEFSQVRPUgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAEKX3NhdmVDaGFpbgIIY2hhaW5JZF8FbmFtZV8JAMwIAgkBC1N0cmluZ0VudHJ5AgkAuQkCCQDMCAIFCUtFWV9DSEFJTgkAzAgCCQCkAwEFCGNoYWluSWRfBQNuaWwFCVNFUEFSQVRPUgUFbmFtZV8FA25pbAESX2xvYWRBc3NldEN1cnJlbmN5AghjaGFpbklkXwZhc3NldF8EByRtYXRjaDAJAKIIAQkAuQkCCQDMCAIFEktFWV9BU1NFVF9DVVJSRU5DWQkAzAgCCQCkAwEFCGNoYWluSWRfCQDMCAIFBmFzc2V0XwUDbmlsBQlTRVBBUkFUT1IDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhAgABEl9zYXZlQXNzZXRDdXJyZW5jeQMIY2hhaW5JZF8GYXNzZXRfCWN1cnJlbmN5XwkAzAgCCQELU3RyaW5nRW50cnkCCQC5CQIJAMwIAgUSS0VZX0FTU0VUX0NVUlJFTkNZCQDMCAIJAKQDAQUIY2hhaW5JZF8JAMwIAgUGYXNzZXRfBQNuaWwFCVNFUEFSQVRPUgUJY3VycmVuY3lfBQNuaWwBEl9sb2FkQXNzZXRSZXNlcnZlcwIIY2hhaW5JZF8GYXNzZXRfBAckbWF0Y2gwCQCiCAEJALkJAgkAzAgCBRJLRVlfQVNTRVRfUkVTRVJWRVMJAMwIAgkApAMBBQhjaGFpbklkXwkAzAgCBQZhc3NldF8FA25pbAUJU0VQQVJBVE9SAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkApwMBBQFhBQtaRVJPX0JJR0lOVAESX3NhdmVBc3NldFJlc2VydmVzAwhjaGFpbklkXwZhc3NldF8JcmVzZXJ2ZXNfCQDMCAIJAQtTdHJpbmdFbnRyeQIJALkJAgkAzAgCBRJLRVlfQVNTRVRfUkVTRVJWRVMJAMwIAgkApAMBBQhjaGFpbklkXwkAzAgCBQZhc3NldF8FA25pbAUJU0VQQVJBVE9SCQCmAwEFCXJlc2VydmVzXwUDbmlsARhfbG9hZEFzc2V0UmVzZXJ2ZXNMb2NrZWQCCGNoYWluSWRfBmFzc2V0XwQHJG1hdGNoMAkAoggBCQC5CQIJAMwIAgUZS0VZX0FTU0VUX1JFU0VSVkVTX0xPQ0tFRAkAzAgCCQCkAwEFCGNoYWluSWRfCQDMCAIFBmFzc2V0XwUDbmlsBQlTRVBBUkFUT1IDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQCnAwEFAWEFC1pFUk9fQklHSU5UARhfc2F2ZUFzc2V0UmVzZXJ2ZXNMb2NrZWQDCGNoYWluSWRfBmFzc2V0XwlyZXNlcnZlc18JAMwIAgkBC1N0cmluZ0VudHJ5AgkAuQkCCQDMCAIFGUtFWV9BU1NFVF9SRVNFUlZFU19MT0NLRUQJAMwIAgkApAMBBQhjaGFpbklkXwkAzAgCBQZhc3NldF8FA25pbAUJU0VQQVJBVE9SCQCmAwEFCXJlc2VydmVzXwUDbmlsARdfbG9hZFVzZXJMb2NrZWRDdXJyZW5jeQIJY3VycmVuY3lfBXVzZXJfBAckbWF0Y2gwCQCiCAEJALkJAgkAzAgCBRhLRVlfVVNFUl9MT0NLRURfQ1VSUkVOQ1kJAMwIAgUJY3VycmVuY3lfCQDMCAIFBXVzZXJfBQNuaWwFCVNFUEFSQVRPUgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJAKcDAQUBYQULWkVST19CSUdJTlQBF19zYXZlVXNlckxvY2tlZEN1cnJlbmN5AwljdXJyZW5jeV8FdXNlcl8HYW1vdW50XwkAzAgCCQELU3RyaW5nRW50cnkCCQC5CQIJAMwIAgUYS0VZX1VTRVJfTE9DS0VEX0NVUlJFTkNZCQDMCAIFCWN1cnJlbmN5XwkAzAgCBQV1c2VyXwUDbmlsBQlTRVBBUkFUT1IJAKYDAQUHYW1vdW50XwUDbmlsARVfbG9hZEN1cnJlbmN5UmVzZXJ2ZXMBCWN1cnJlbmN5XwQHJG1hdGNoMAkAoggBCQC5CQIJAMwIAgUVS0VZX0NVUlJFTkNZX1JFU0VSVkVTCQDMCAIFCWN1cnJlbmN5XwUDbmlsBQlTRVBBUkFUT1IDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQCnAwEFAWEFC1pFUk9fQklHSU5UARVfc2F2ZUN1cnJlbmN5UmVzZXJ2ZXMCCWN1cnJlbmN5XwlyZXNlcnZlc18JAMwIAgkBC1N0cmluZ0VudHJ5AgkAuQkCCQDMCAIFFUtFWV9DVVJSRU5DWV9SRVNFUlZFUwkAzAgCBQljdXJyZW5jeV8FA25pbAUJU0VQQVJBVE9SCQCmAwEFCXJlc2VydmVzXwUDbmlsARpfbG9hZFJlcXVlc3RXaXRoZHJhd2FsU2l6ZQAEByRtYXRjaDAJAJ8IAQUbS0VZX1JFUVVFU1RfV0lUSERSQVdBTF9TSVpFAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAAARpfc2F2ZVJlcXVlc3RXaXRoZHJhd2FsU2l6ZQEEdmFsXwkAzAgCCQEMSW50ZWdlckVudHJ5AgUbS0VZX1JFUVVFU1RfV0lUSERSQVdBTF9TSVpFBQR2YWxfBQNuaWwBFl9sb2FkUmVxdWVzdFdpdGhkcmF3YWwBBmluZGV4XwQHJG1hdGNoMAkAoggBCQC5CQIJAMwIAgUWS0VZX1JFUVVFU1RfV0lUSERSQVdBTAkAzAgCCQCkAwEFBmluZGV4XwUDbmlsBQlTRVBBUkFUT1IDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBAZzdHJ1Y3QJALUJAgUBYQUJU0VQQVJBVE9SCQCaCggJAJEDAgUGc3RydWN0AAAJAJEDAgUGc3RydWN0AAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdHJ1Y3QAAgkAkQMCBQZzdHJ1Y3QAAwkApwMBCQCRAwIFBnN0cnVjdAAECQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RydWN0AAUJAJEDAgUGc3RydWN0AAYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdHJ1Y3QABwkAmgoIAgACAAAAAgAFC1pFUk9fQklHSU5UAAACAAUWUkVRVUVTVF9TVEFUVVNfQ1JFQVRFRAEWX3NhdmVSZXF1ZXN0V2l0aGRyYXdhbAIGaW5kZXhfCHJlcXVlc3RfCQDMCAIJAQtTdHJpbmdFbnRyeQIJALkJAgkAzAgCBRZLRVlfUkVRVUVTVF9XSVRIRFJBV0FMCQDMCAIJAKQDAQUGaW5kZXhfBQNuaWwFCVNFUEFSQVRPUgkAuQkCCQDMCAIIBQhyZXF1ZXN0XwJfMQkAzAgCCAUIcmVxdWVzdF8CXzIJAMwIAgkApAMBCAUIcmVxdWVzdF8CXzMJAMwIAggFCHJlcXVlc3RfAl80CQDMCAIJAKYDAQgFCHJlcXVlc3RfAl81CQDMCAIJAKQDAQgFCHJlcXVlc3RfAl82CQDMCAIIBQhyZXF1ZXN0XwJfNwkAzAgCCQCkAwEIBQhyZXF1ZXN0XwJfOAUDbmlsBQlTRVBBUkFUT1IFA25pbAEgX2xvYWRSZXF1ZXN0V2l0aGRyYXdhbEJsb2NrRGVsYXkABAckbWF0Y2gwCQCfCAEFIktFWV9SRVFVRVNUX1dJVEhEUkFXQUxfQkxPQ0tfREVMQVkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAABIF9zYXZlUmVxdWVzdFdpdGhkcmF3YWxCbG9ja0RlbGF5AQZkZWxheV8JAMwIAgkBDEludGVnZXJFbnRyeQIFIktFWV9SRVFVRVNUX1dJVEhEUkFXQUxfQkxPQ0tfREVMQVkFBmRlbGF5XwUDbmlsAQ5fbG9hZFNlcXVlbmNlcgAEByRtYXRjaDAJAKIIAQUNS0VZX1NFUVVFTkNFUgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAWEJAQdBZGRyZXNzAQEAAQ5fc2F2ZVNlcXVlbmNlcgEKc2VxdWVuY2VyXwkAzAgCCQELU3RyaW5nRW50cnkCBQ1LRVlfU0VRVUVOQ0VSCQClCAEFCnNlcXVlbmNlcl8FA25pbAETX2xvYWRXaXRoZHJhd2FsSGFzaAEPd2l0aGRyYXdhbEhhc2hfBAckbWF0Y2gwCQCiCAEJALkJAgkAzAgCBRNLRVlfV0lUSERSQVdBTF9IQVNICQDMCAIJANgEAQUPd2l0aGRyYXdhbEhhc2hfBQNuaWwFCVNFUEFSQVRPUgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAETX3NhdmVXaXRoZHJhd2FsSGFzaAIPd2l0aGRyYXdhbEhhc2hfBXR4SWRfCQDMCAIJAQtTdHJpbmdFbnRyeQIJALkJAgkAzAgCBRNLRVlfV0lUSERSQVdBTF9IQVNICQDMCAIJANgEAQUPd2l0aGRyYXdhbEhhc2hfBQNuaWwFCVNFUEFSQVRPUgUFdHhJZF8FA25pbAERX2xvYWRWYXVsdEFkYXB0ZXIABAckbWF0Y2gwCQCiCAEFEUtFWV9WQVVMVF9BREFQVEVSAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQUBYQkBB0FkZHJlc3MBAQABEV9zYXZlVmF1bHRBZGFwdGVyAQ12YXVsdEFkYXB0ZXJfCQDMCAIJAQtTdHJpbmdFbnRyeQIFEUtFWV9WQVVMVF9BREFQVEVSCQClCAEFDXZhdWx0QWRhcHRlcl8FA25pbAEWX2xvYWRSZXdhcmREaXN0cmlidXRvcgAEByRtYXRjaDAJAKIIAQUWS0VZX1JFV0FSRF9ESVNUUklCVVRPUgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAEWX3NhdmVSZXdhcmREaXN0cmlidXRvcgEMZGlzdHJpYnV0b3JfCQDMCAIJAQtTdHJpbmdFbnRyeQIFFktFWV9SRVdBUkRfRElTVFJJQlVUT1IFDGRpc3RyaWJ1dG9yXwUDbmlsARhfbG9hZFJlbGF5ZXJGZWVSZWNpcGllbnQABAckbWF0Y2gwCQCiCAEFGUtFWV9SRUxBWUVSX0ZFRV9SRUNJUElFTlQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhAgABGF9zYXZlUmVsYXllckZlZVJlY2lwaWVudAEUcmVsYXllckZlZVJlY2lwaWVudF8JAMwIAgkBC1N0cmluZ0VudHJ5AgUZS0VZX1JFTEFZRVJfRkVFX1JFQ0lQSUVOVAUUcmVsYXllckZlZVJlY2lwaWVudF8FA25pbAERX29ubHlUaGlzQ29udHJhY3QBB2NhbGxlcl8DCQECIT0CBQdjYWxsZXJfBQR0aGlzCQACAQIZX29ubHlUaGlzQ29udHJhY3Q6IHJldmVydAYBEF93aGVuTXVsdGlzaWdTZXQAAwkAAAIJAQ1fbG9hZE11bHRpc2lnAAkBB0FkZHJlc3MBAQAJAAIBAhhfd2hlbk11bHRpc2lnU2V0OiByZXZlcnQGARNfd2hlbk5vdEluaXRpYWxpemVkAAMJAQlfbG9hZEluaXQACQACAQIbX3doZW5Ob3RJbml0aWFsaXplZDogcmV2ZXJ0BgEQX3doZW5Jbml0aWFsaXplZAADCQEBIQEJAQlfbG9hZEluaXQACQACAQIYX3doZW5Jbml0aWFsaXplZDogcmV2ZXJ0BgEOX3doZW5Ob3RQYXVzZWQAAwkBCl9sb2FkUGF1c2UACQACAQIWX3doZW5Ob3RQYXVzZWQ6IHJldmVydAYBC193aGVuUGF1c2VkAAMJAQEhAQkBCl9sb2FkUGF1c2UACQACAQITX3doZW5QYXVzZWQ6IHJldmVydAYBC19vbmx5UGF1c2VyAQdjYWxsZXJfAwkBAiE9AgUHY2FsbGVyXwkBC19sb2FkUGF1c2VyAAkAAgECE19vbmx5UGF1c2VyOiByZXZlcnQGARFfdmFsaWRhdGVFeGVjdXRvcgIEdmFsXwRlcnJfAwkBAiE9AgUEdmFsXwkBDV9sb2FkRXhlY3V0b3IACQACAQUEZXJyXwYBF192YWxpZGF0ZUNhbGxlckNvbnRyYWN0AwhjaGFpbklkXw9jYWxsZXJDb250cmFjdF8EZXJyXwMJAQIhPQIJARNfbG9hZENhbGxlckNvbnRyYWN0AQUIY2hhaW5JZF8FD2NhbGxlckNvbnRyYWN0XwkAAgEFBGVycl8GAQxfY2hhaW5FeGlzdHMCCGNoYWluSWRfBGVycl8DCQBnAgAACQCxAgEJAQpfbG9hZENoYWluAQUIY2hhaW5JZF8JAAIBBQRlcnJfBgEOX2NoYWluTm90RXhpc3QCCGNoYWluSWRfBGVycl8DCQBmAgkAsQIBCQEKX2xvYWRDaGFpbgEFCGNoYWluSWRfAAAJAAIBBQRlcnJfBgEUX2Fzc2V0Q3VycmVuY3lFeGlzdHMDCGNoYWluSWRfBmFzc2V0XwRlcnJfAwkAZwIAAAkAsQIBCQESX2xvYWRBc3NldEN1cnJlbmN5AgUIY2hhaW5JZF8FBmFzc2V0XwkAAgEFBGVycl8GARZfYXNzZXRDdXJyZW5jeU5vdEV4aXN0AwhjaGFpbklkXwZhc3NldF8EZXJyXwMJAGYCCQCxAgEJARJfbG9hZEFzc2V0Q3VycmVuY3kCBQhjaGFpbklkXwUGYXNzZXRfAAAJAAIBBQRlcnJfBgETX3ZhbGlkYXRlV2F2ZXNWYXVsdAIGY2FsbGVyBGVycl8DCQECIT0CCQEPX2xvYWRXYXZlc1ZhdWx0AAUGY2FsbGVyCQACAQUEZXJyXwYBEV9yZXF1ZXN0SXNDcmVhdGVkAgdzdGF0dXNfBGVycl8DCQECIT0CBQdzdGF0dXNfBRZSRVFVRVNUX1NUQVRVU19DUkVBVEVECQACAQUEZXJyXwYBEl92YWxpZGF0ZVNlcXVlbmNlcgIGY2FsbGVyBGVycl8DCQECIT0CCQEOX2xvYWRTZXF1ZW5jZXIABQZjYWxsZXIJAAIBBQRlcnJfBgEcX2NoZWNrV2l0aGRyYXdhbEhhc2hOb3RFeGlzdAIPd2l0aGRyYXdhbEhhc2hfBGVycl8DCQBmAgkAsQIBCQETX2xvYWRXaXRoZHJhd2FsSGFzaAEFD3dpdGhkcmF3YWxIYXNoXwAACQACAQUEZXJyXwYBGF92YWxpZGF0ZVNpZ25hdHVyZUZvcm1hdAMKc2lnbmF0dXJlXwRhbGdfBGVycl8DCQAAAgUEYWxnXwUOQUxHX1RZUEVfV0FWRVMDCQECIT0CCQDIAQEFCnNpZ25hdHVyZV8AQAkAAgEFBGVycl8GAwkAAAIFBGFsZ18FDEFMR19UWVBFX0VWTQMJAQIhPQIJAMgBAQUKc2lnbmF0dXJlXwBBCQACAQUEZXJyXwYJAAIBCQCsAgIFBGVycl8CCTogaW52IGFsZwEPX3ZhbGlkYXRlV2ViM0lkAwd3ZWIzSWRfBGFsZ18EZXJyXwMJAAACBQRhbGdfBQ5BTEdfVFlQRV9XQVZFUwMJAQIhPQIJAMgBAQUHd2ViM0lkXwAgCQACAQUEZXJyXwYDCQAAAgUEYWxnXwUMQUxHX1RZUEVfRVZNAwkBAiE9AgkAyAEBBQd3ZWIzSWRfABQJAAIBBQRlcnJfBgkAAgEJAKwCAgUEZXJyXwIJOiBpbnYgYWxnARxfdmFsaWRhdGVXaXRoZHJhd2FsU2lnbmF0dXJlBQ93aXRoZHJhd2FsSGFzaF8Kc2lnbmF0dXJlXwd3ZWIzSWRfBGFsZ18EZXJyXwQGcmVzdWx0AwkAAAIFBGFsZ18FDkFMR19UWVBFX1dBVkVTBA5oYXNoV2l0aFByZWZpeAkAjBUBCQDLAQIFDFdBVkVTX1BSRUZJWAkAmwMBCQDYBAEFD3dpdGhkcmF3YWxIYXNoXwkA9AMDBQ5oYXNoV2l0aFByZWZpeAUKc2lnbmF0dXJlXwUHd2ViM0lkXwMJAAACBQRhbGdfBQxBTEdfVFlQRV9FVk0EDmhhc2hXaXRoUHJlZml4CQCMFQEJAMsBAgUURVZNX1NJR05BVFVSRV9QUkVGSVgFD3dpdGhkcmF3YWxIYXNoXwkAAAIJAMwBAgkAjBUBCQCEBwIFDmhhc2hXaXRoUHJlZml4BQpzaWduYXR1cmVfABQFB3dlYjNJZF8JAAIBCQCsAgIFBGVycl8CCTogaW52IGFsZwMJAQEhAQUGcmVzdWx0CQACAQUEZXJyXwYBHV92YWxpZGF0ZVdlYjNJZE1hdGNoZXNBZGRyZXNzBAd3ZWIzSWRfBWZyb21fBGFsZ18EZXJyXwQHYWRkcmVzcwMJAAACBQRhbGdfBQ5BTEdfVFlQRV9XQVZFUwkApQgBCQCnCAEFB3dlYjNJZF8DCQAAAgUEYWxnXwUMQUxHX1RZUEVfRVZNCQCsAgICAjB4CQDcBAEFB3dlYjNJZF8JAAIBCQCsAgIFBGVycl8CCTogaW52IGFsZwMJAQIhPQIFB2FkZHJlc3MFBWZyb21fCQACAQUEZXJyXwYQAWkBBGluaXQGCWV4ZWN1dG9yXwdwYXVzZXJfD2FjY291bnRTdG9yYWdlXwt3YXZlc1ZhdWx0XwpzZXF1ZW5jZXJfDXZhdWx0QWRhcHRlcl8EA2VycgMDAwMDAwMDCQERX29ubHlUaGlzQ29udHJhY3QBCAUBaQZjYWxsZXIJARNfd2hlbk5vdEluaXRpYWxpemVkAAcJARBfd2hlbk11bHRpc2lnU2V0AAcJARBfdmFsaWRhdGVBZGRyZXNzAgUJZXhlY3V0b3JfAhZpbml0OiBpbnZhbGlkIGV4ZWN1dG9yBwkBEF92YWxpZGF0ZUFkZHJlc3MCBQdwYXVzZXJfAhRpbml0OiBpbnZhbGlkIHBhdXNlcgcJARBfdmFsaWRhdGVBZGRyZXNzAgUPYWNjb3VudFN0b3JhZ2VfAhxpbml0OiBpbnZhbGlkIGFjY291bnRTdG9yYWdlBwkBEF92YWxpZGF0ZUFkZHJlc3MCBQt3YXZlc1ZhdWx0XwIYaW5pdDogaW52YWxpZCB3YXZlc1ZhdWx0BwkBEF92YWxpZGF0ZUFkZHJlc3MCBQpzZXF1ZW5jZXJfAhdpbml0OiBpbnZhbGlkIHNlcXVlbmNlcgcJARBfdmFsaWRhdGVBZGRyZXNzAgUNdmF1bHRBZGFwdGVyXwIaaW5pdDogaW52YWxpZCB2YXVsdEFkYXB0ZXIHAwkAAAIFA2VycgUDZXJyCQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAQlfc2F2ZUluaXQBBgkBDV9zYXZlRXhlY3V0b3IBCQERQGV4dHJOYXRpdmUoMTA2MikBBQlleGVjdXRvcl8JAQtfc2F2ZVBhdXNlcgEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB3BhdXNlcl8JARNfc2F2ZUFjY291bnRTdG9yYWdlAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUPYWNjb3VudFN0b3JhZ2VfCQEPX3NhdmVXYXZlc1ZhdWx0AQkBEUBleHRyTmF0aXZlKDEwNjIpAQULd2F2ZXNWYXVsdF8JAQ5fc2F2ZVNlcXVlbmNlcgEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCnNlcXVlbmNlcl8JARFfc2F2ZVZhdWx0QWRhcHRlcgEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDXZhdWx0QWRhcHRlcl8FBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHZGVwb3NpdAYPY2FsbGVyQ29udHJhY3RfBWZyb21fA3RvXwhjaGFpbklkXwZhc3NldF8HYW1vdW50XwQHY2hhaW5JZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEFCGNoYWluSWRfAhhkZXBvc2l0OiBjaGFpbklkIG5vdCBpbnQEBmFtb3VudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEFB2Ftb3VudF8CF2RlcG9zaXQ6IGFtb3VudCBub3QgaW50BANlcnIDAwMDAwMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcJAQxfY2hhaW5FeGlzdHMCBQdjaGFpbklkAhhkZXBvc2l0OiBpbnZhbGlkIGNoYWluSWQHCQEPX3ZhbGlkYXRlU3RyaW5nAgUFZnJvbV8CFWRlcG9zaXQ6IGludmFsaWQgZnJvbQcJAQ9fdmFsaWRhdGVTdHJpbmcCBQN0b18CE2RlcG9zaXQ6IGludmFsaWQgdG8HCQEUX2Fzc2V0Q3VycmVuY3lFeGlzdHMDBQdjaGFpbklkBQZhc3NldF8CFmRlcG9zaXQ6IGludmFsaWQgYXNzZXQHCQEPX3ZhbGlkYXRlQmlnSW50AwUGYW1vdW50BQtaRVJPX0JJR0lOVAIXZGVwb3NpdDogaW52YWxpZCBhbW91bnQHAwkAAAIFA2VycgUDZXJyBARlcnIxAwkAAAIJAQpfbG9hZENoYWluAQUHY2hhaW5JZAUFV0FWRVMJARNfdmFsaWRhdGVXYXZlc1ZhdWx0AggFAWkGY2FsbGVyAhxkZXBvc2l0OiBpbnZhbGlkIHdhdmVzIHZhdWx0AwkBEV92YWxpZGF0ZUV4ZWN1dG9yAggFAWkGY2FsbGVyAhlkZXBvc2l0OiBpbnZhbGlkIGV4ZWN1dG9yCQEXX3ZhbGlkYXRlQ2FsbGVyQ29udHJhY3QDBQdjaGFpbklkBQ9jYWxsZXJDb250cmFjdF8CIGRlcG9zaXQ6IGludmFsaWQgY2FsbGVyIGNvbnRyYWN0BwMJAAACBQRlcnIxBQRlcnIxBBBuZXdBc3NldFJlc2VydmVzCQC3AgIJARJfbG9hZEFzc2V0UmVzZXJ2ZXMCBQdjaGFpbklkBQZhc3NldF8FBmFtb3VudAQIY3VycmVuY3kJARJfbG9hZEFzc2V0Q3VycmVuY3kCBQdjaGFpbklkBQZhc3NldF8EE25ld0N1cnJlbmN5UmVzZXJ2ZXMJALcCAgkBFV9sb2FkQ3VycmVuY3lSZXNlcnZlcwEFCGN1cnJlbmN5BQZhbW91bnQECmludm9jYXRpb24JAPwHBAkBE19sb2FkQWNjb3VudFN0b3JhZ2UABQxGVU5DX0RFUE9TSVQJAMwIAgUDdG9fCQDMCAIFCGN1cnJlbmN5CQDMCAIFB2Ftb3VudF8FA25pbAUDbmlsAwkAAAIFCmludm9jYXRpb24FCmludm9jYXRpb24JAJQKAgkAzggCCQESX3NhdmVBc3NldFJlc2VydmVzAwUHY2hhaW5JZAUGYXNzZXRfBRBuZXdBc3NldFJlc2VydmVzCQEVX3NhdmVDdXJyZW5jeVJlc2VydmVzAgUIY3VycmVuY3kFE25ld0N1cnJlbmN5UmVzZXJ2ZXMFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQERcmVxdWVzdFdpdGhkcmF3YWwHD2NhbGxlckNvbnRyYWN0XwVmcm9tXwN0b18MZnJvbUNoYWluSWRfCnRvQ2hhaW5JZF8GYXNzZXRfB2Ftb3VudF8EC2Zyb21DaGFpbklkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQUMZnJvbUNoYWluSWRfAiZyZXF1ZXN0V2l0aGRyYXdhbDogZnJvbUNoYWluSWQgbm90IGludAQJdG9DaGFpbklkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQUKdG9DaGFpbklkXwIkcmVxdWVzdFdpdGhkcmF3YWw6IHRvQ2hhaW5JZCBub3QgaW50BAZhbW91bnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBBQdhbW91bnRfAiFyZXF1ZXN0V2l0aGRyYXdhbDogYW1vdW50IG5vdCBpbnQEA2VycgMDAwMDAwkBEF93aGVuSW5pdGlhbGl6ZWQACQEMX2NoYWluRXhpc3RzAgULZnJvbUNoYWluSWQCJnJlcXVlc3RXaXRoZHJhd2FsOiBpbnZhbGlkIGZyb21DaGFpbklkBwkBDF9jaGFpbkV4aXN0cwIFCXRvQ2hhaW5JZAIkcmVxdWVzdFdpdGhkcmF3YWw6IGludmFsaWQgdG9DaGFpbklkBwkBD192YWxpZGF0ZVN0cmluZwIFBWZyb21fAh9yZXF1ZXN0V2l0aGRyYXdhbDogaW52YWxpZCBmcm9tBwkBD192YWxpZGF0ZVN0cmluZwIFA3RvXwIdcmVxdWVzdFdpdGhkcmF3YWw6IGludmFsaWQgdG8HCQEUX2Fzc2V0Q3VycmVuY3lFeGlzdHMDBQl0b0NoYWluSWQFBmFzc2V0XwIgcmVxdWVzdFdpdGhkcmF3YWw6IGludmFsaWQgYXNzZXQHCQEPX3ZhbGlkYXRlQmlnSW50AwUGYW1vdW50BQtaRVJPX0JJR0lOVAIhcmVxdWVzdFdpdGhkcmF3YWw6IGludmFsaWQgYW1vdW50BwMJAAACBQNlcnIFA2VycgQEZXJyMQMJAAACCQEKX2xvYWRDaGFpbgEFC2Zyb21DaGFpbklkBQVXQVZFUwkBE192YWxpZGF0ZVdhdmVzVmF1bHQCCAUBaQZjYWxsZXICJnJlcXVlc3RXaXRoZHJhd2FsOiBpbnZhbGlkIHdhdmVzIHZhdWx0AwkBEV92YWxpZGF0ZUV4ZWN1dG9yAggFAWkGY2FsbGVyAiNyZXF1ZXN0V2l0aGRyYXdhbDogaW52YWxpZCBleGVjdXRvcgkBF192YWxpZGF0ZUNhbGxlckNvbnRyYWN0AwULZnJvbUNoYWluSWQFD2NhbGxlckNvbnRyYWN0XwIqcmVxdWVzdFdpdGhkcmF3YWw6IGludmFsaWQgY2FsbGVyIGNvbnRyYWN0BwMJAAACBQRlcnIxBQRlcnIxBAhjdXJyZW5jeQkBEl9sb2FkQXNzZXRDdXJyZW5jeQIFCXRvQ2hhaW5JZAUGYXNzZXRfBBBhdmFpbGFibGVCYWxhbmNlBAckbWF0Y2gwCQD8BwQJARNfbG9hZEFjY291bnRTdG9yYWdlAAUVRlVOQ19HRVRfVVNFUl9CQUxBTkNFCQDMCAIFBWZyb21fCQDMCAIFC1NQT1RfV0FMTEVUCQDMCAIFCGN1cnJlbmN5BQNuaWwFA25pbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJAKcDAQUBYQkAAgECPHJlcXVlc3RXaXRoZHJhd2FsOiBjYW4ndCB0YWtlIGF2YWlsYWJsZSBiYWxhbmNlIGZyb20gc3RvcmFnZQMJAAACBRBhdmFpbGFibGVCYWxhbmNlBRBhdmFpbGFibGVCYWxhbmNlBA5sb2NrZWRSZXNlcnZlcwkBGF9sb2FkQXNzZXRSZXNlcnZlc0xvY2tlZAIFCXRvQ2hhaW5JZAUGYXNzZXRfBBJ1c2VyTG9ja2VkQ3VycmVuY3kJARdfbG9hZFVzZXJMb2NrZWRDdXJyZW5jeQIFCGN1cnJlbmN5BQVmcm9tXwQNJHQwMTk0MzcxOTg5MgMDCQDAAgIJALgCAgUQYXZhaWxhYmxlQmFsYW5jZQUSdXNlckxvY2tlZEN1cnJlbmN5BQZhbW91bnQJAMACAgkAuAICCQESX2xvYWRBc3NldFJlc2VydmVzAgUJdG9DaGFpbklkBQZhc3NldF8FDmxvY2tlZFJlc2VydmVzBQZhbW91bnQHCQCUCgIFFlJFUVVFU1RfU1RBVFVTX0NSRUFURUQJAM4IAgkBGF9zYXZlQXNzZXRSZXNlcnZlc0xvY2tlZAMFCXRvQ2hhaW5JZAUGYXNzZXRfCQC3AgIFDmxvY2tlZFJlc2VydmVzBQZhbW91bnQJARdfc2F2ZVVzZXJMb2NrZWRDdXJyZW5jeQMFCGN1cnJlbmN5BQVmcm9tXwkAtwICBQZhbW91bnQFEnVzZXJMb2NrZWRDdXJyZW5jeQkAlAoCBRdSRVFVRVNUX1NUQVRVU19SRUpFQ1RFRAUDbmlsBA1yZXF1ZXN0U3RhdHVzCAUNJHQwMTk0MzcxOTg5MgJfMQQPcmVzZXJ2ZXNBY3Rpb25zCAUNJHQwMTk0MzcxOTg5MgJfMgQVcmVxdWVzdFdpdGhkcmF3YWxTaXplCQEaX2xvYWRSZXF1ZXN0V2l0aGRyYXdhbFNpemUABBFyZXF1ZXN0V2l0aGRyYXdhbAkAmgoIBQVmcm9tXwUDdG9fBQl0b0NoYWluSWQFBmFzc2V0XwUGYW1vdW50BQZoZWlnaHQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAUNcmVxdWVzdFN0YXR1cwkAlAoCCQDOCAIJAM4IAgkBFl9zYXZlUmVxdWVzdFdpdGhkcmF3YWwCBRVyZXF1ZXN0V2l0aGRyYXdhbFNpemUFEXJlcXVlc3RXaXRoZHJhd2FsCQEaX3NhdmVSZXF1ZXN0V2l0aGRyYXdhbFNpemUBCQBkAgUVcmVxdWVzdFdpdGhkcmF3YWxTaXplAAEFD3Jlc2VydmVzQWN0aW9ucwUVcmVxdWVzdFdpdGhkcmF3YWxTaXplCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEWV4ZWN1dGVXaXRoZHJhd2FsAw9jYWxsZXJDb250cmFjdF8IY2hhaW5JZF8UcmVxdWVzdFdpdGhkcmF3YWxJZF8EB2NoYWluSWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAtgkBBQhjaGFpbklkXwIiZXhlY3V0ZVdpdGhkcmF3YWw6IGNoYWluSWQgbm90IGludAQTcmVxdWVzdFdpdGhkcmF3YWxJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEFFHJlcXVlc3RXaXRoZHJhd2FsSWRfAi5leGVjdXRlV2l0aGRyYXdhbDogcmVxdWVzdFdpdGhkcmF3YWxJZCBub3QgaW50BBVyZXF1ZXN0V2l0aGRyYXdhbFNpemUJARpfbG9hZFJlcXVlc3RXaXRoZHJhd2FsU2l6ZQAEA2VycgMDCQEQX3doZW5Jbml0aWFsaXplZAAJAQxfY2hhaW5FeGlzdHMCBQdjaGFpbklkAiJleGVjdXRlV2l0aGRyYXdhbDogaW52YWxpZCBjaGFpbklkBwkBDF92YWxpZGF0ZUludAQFE3JlcXVlc3RXaXRoZHJhd2FsSWQAAAkAZQIFFXJlcXVlc3RXaXRoZHJhd2FsU2l6ZQABAi5leGVjdXRlV2l0aGRyYXdhbDogaW52YWxpZCByZXF1ZXN0V2l0aGRyYXdhbElkBwMJAAACBQNlcnIFA2VycgQEZXJyMQMJAAACCQEKX2xvYWRDaGFpbgEFB2NoYWluSWQFBVdBVkVTCQETX3ZhbGlkYXRlV2F2ZXNWYXVsdAIIBQFpBmNhbGxlcgImZXhlY3V0ZVdpdGhkcmF3YWw6IGludmFsaWQgd2F2ZXMgdmF1bHQDCQERX3ZhbGlkYXRlRXhlY3V0b3ICCAUBaQZjYWxsZXICI2V4ZWN1dGVXaXRoZHJhd2FsOiBpbnZhbGlkIGV4ZWN1dG9yCQEXX3ZhbGlkYXRlQ2FsbGVyQ29udHJhY3QDBQdjaGFpbklkBQ9jYWxsZXJDb250cmFjdF8CKmV4ZWN1dGVXaXRoZHJhd2FsOiBpbnZhbGlkIGNhbGxlciBjb250cmFjdAcDCQAAAgUEZXJyMQUEZXJyMQQHcmVxdWVzdAkBFl9sb2FkUmVxdWVzdFdpdGhkcmF3YWwBBRNyZXF1ZXN0V2l0aGRyYXdhbElkBAtyZXF1ZXN0RnJvbQgFB3JlcXVlc3QCXzEECXJlcXVlc3RUbwgFB3JlcXVlc3QCXzIEEHJlcXVlc3RUb0NoYWluSWQIBQdyZXF1ZXN0Al8zBAxyZXF1ZXN0QXNzZXQIBQdyZXF1ZXN0Al80BA1yZXF1ZXN0QW1vdW50CAUHcmVxdWVzdAJfNQQNcmVxdWVzdEhlaWdodAgFB3JlcXVlc3QCXzYEDXJlcXVlc3RTdGF0dXMIBQdyZXF1ZXN0Al84BBBuZXdBc3NldFJlc2VydmVzCQC4AgIJARJfbG9hZEFzc2V0UmVzZXJ2ZXMCBRByZXF1ZXN0VG9DaGFpbklkBQxyZXF1ZXN0QXNzZXQFDXJlcXVlc3RBbW91bnQEFm5ld0Fzc2V0UmVzZXJ2ZXNMb2NrZWQJALgCAgkBGF9sb2FkQXNzZXRSZXNlcnZlc0xvY2tlZAIFEHJlcXVlc3RUb0NoYWluSWQFDHJlcXVlc3RBc3NldAUNcmVxdWVzdEFtb3VudAQIY3VycmVuY3kJARJfbG9hZEFzc2V0Q3VycmVuY3kCBRByZXF1ZXN0VG9DaGFpbklkBQxyZXF1ZXN0QXNzZXQEE25ld0N1cnJlbmN5UmVzZXJ2ZXMJALgCAgkBFV9sb2FkQ3VycmVuY3lSZXNlcnZlcwEFCGN1cnJlbmN5BQ1yZXF1ZXN0QW1vdW50BBVuZXdVc2VyTG9ja2VkQ3VycmVuY3kJALgCAgkBF19sb2FkVXNlckxvY2tlZEN1cnJlbmN5AgUIY3VycmVuY3kFC3JlcXVlc3RGcm9tBQ1yZXF1ZXN0QW1vdW50BARlcnIyAwMDAwMJAQ9fdmFsaWRhdGVCaWdJbnQDBRBuZXdBc3NldFJlc2VydmVzBQtaRVJPX0JJR0lOVAIsZXhlY3V0ZVdpdGhkcmF3YWw6IG5lZ2F0aXZlIG5ld0Fzc2V0UmVzZXJ2ZXMJAQ9fdmFsaWRhdGVCaWdJbnQDBRZuZXdBc3NldFJlc2VydmVzTG9ja2VkBQtaRVJPX0JJR0lOVAIyZXhlY3V0ZVdpdGhkcmF3YWw6IG5lZ2F0aXZlIG5ld0Fzc2V0UmVzZXJ2ZXNMb2NrZWQHCQEPX3ZhbGlkYXRlQmlnSW50AwUTbmV3Q3VycmVuY3lSZXNlcnZlcwULWkVST19CSUdJTlQCL2V4ZWN1dGVXaXRoZHJhd2FsOiBuZWdhdGl2ZSBuZXdDdXJyZW5jeVJlc2VydmVzBwkBD192YWxpZGF0ZUJpZ0ludAMFFW5ld1VzZXJMb2NrZWRDdXJyZW5jeQULWkVST19CSUdJTlQCMWV4ZWN1dGVXaXRoZHJhd2FsOiBuZWdhdGl2ZSBuZXdVc2VyTG9ja2VkQ3VycmVuY3kHCQEMX3ZhbGlkYXRlSW50BAkAZQIFBmhlaWdodAUNcmVxdWVzdEhlaWdodAkBIF9sb2FkUmVxdWVzdFdpdGhkcmF3YWxCbG9ja0RlbGF5AAUHTUFYX0lOVAInZXhlY3V0ZVdpdGhkcmF3YWw6IHRvbyBlYXJseSB0byBleGVjdXRlBwkBEV9yZXF1ZXN0SXNDcmVhdGVkAgUNcmVxdWVzdFN0YXR1cwImZXhlY3V0ZVdpdGhkcmF3YWw6IHJlcXVlc3QgaXMgcmVzb2x2ZWQHAwkAAAIFBGVycjIFBGVycjIEEXN0b3JhZ2VJbnZvY2F0aW9uCQD8BwQJARNfbG9hZEFjY291bnRTdG9yYWdlAAUNRlVOQ19XSVRIRFJBVwkAzAgCBQtyZXF1ZXN0RnJvbQkAzAgCBQhjdXJyZW5jeQkAzAgCCQCmAwEFDXJlcXVlc3RBbW91bnQFA25pbAUDbmlsAwkAAAIFEXN0b3JhZ2VJbnZvY2F0aW9uBRFzdG9yYWdlSW52b2NhdGlvbgQSd2l0aGRyYXdJbnZvY2F0aW9uAwkAAAIJAQpfbG9hZENoYWluAQUQcmVxdWVzdFRvQ2hhaW5JZAUFV0FWRVMJAPwHBAkBD19sb2FkV2F2ZXNWYXVsdAAFDUZVTkNfV0lUSERSQVcJAMwIAgUJcmVxdWVzdFRvCQDMCAIFDHJlcXVlc3RBc3NldAkAzAgCCQCmAwEFDXJlcXVlc3RBbW91bnQFA25pbAUDbmlsCQD8BwQJARFfbG9hZFZhdWx0QWRhcHRlcgAFDUZVTkNfV0lUSERSQVcJAMwIAgUQcmVxdWVzdFRvQ2hhaW5JZAkAzAgCBQxyZXF1ZXN0QXNzZXQJAMwIAgkApgMBBQ1yZXF1ZXN0QW1vdW50CQDMCAIFCXJlcXVlc3RUbwUDbmlsBQNuaWwDCQAAAgUSd2l0aGRyYXdJbnZvY2F0aW9uBRJ3aXRoZHJhd0ludm9jYXRpb24EDnJlcXVlc3RVcGRhdGVkCQCaCggIBQdyZXF1ZXN0Al8xCAUHcmVxdWVzdAJfMggFB3JlcXVlc3QCXzMIBQdyZXF1ZXN0Al80CAUHcmVxdWVzdAJfNQgFB3JlcXVlc3QCXzYIBQdyZXF1ZXN0Al83BRNSRVFVRVNUX1NUQVRVU19ET05FCQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgkBEl9zYXZlQXNzZXRSZXNlcnZlcwMFEHJlcXVlc3RUb0NoYWluSWQFDHJlcXVlc3RBc3NldAUQbmV3QXNzZXRSZXNlcnZlcwkBGF9zYXZlQXNzZXRSZXNlcnZlc0xvY2tlZAMFEHJlcXVlc3RUb0NoYWluSWQFDHJlcXVlc3RBc3NldAUWbmV3QXNzZXRSZXNlcnZlc0xvY2tlZAkBFV9zYXZlQ3VycmVuY3lSZXNlcnZlcwIFCGN1cnJlbmN5BRNuZXdDdXJyZW5jeVJlc2VydmVzCQEXX3NhdmVVc2VyTG9ja2VkQ3VycmVuY3kDBQhjdXJyZW5jeQULcmVxdWVzdEZyb20FFW5ld1VzZXJMb2NrZWRDdXJyZW5jeQkBFl9zYXZlUmVxdWVzdFdpdGhkcmF3YWwCBRNyZXF1ZXN0V2l0aGRyYXdhbElkBQ5yZXF1ZXN0VXBkYXRlZAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARByZWplY3RXaXRoZHJhd2FsARRyZXF1ZXN0V2l0aGRyYXdhbElkXwQTcmVxdWVzdFdpdGhkcmF3YWxJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEFFHJlcXVlc3RXaXRoZHJhd2FsSWRfAi1yZWplY3RXaXRoZHJhd2FsOiByZXF1ZXN0V2l0aGRyYXdhbElkIG5vdCBpbnQEFXJlcXVlc3RXaXRoZHJhd2FsU2l6ZQkBGl9sb2FkUmVxdWVzdFdpdGhkcmF3YWxTaXplAAQDZXJyAwMJARBfd2hlbkluaXRpYWxpemVkAAkBEl92YWxpZGF0ZVNlcXVlbmNlcgIIBQFpBmNhbGxlcgIjcmVqZWN0V2l0aGRyYXdhbDogaW52YWxpZCBzZXF1ZW5jZXIHCQEMX3ZhbGlkYXRlSW50BAUTcmVxdWVzdFdpdGhkcmF3YWxJZAAACQBlAgUVcmVxdWVzdFdpdGhkcmF3YWxTaXplAAECLXJlamVjdFdpdGhkcmF3YWw6IGludmFsaWQgcmVxdWVzdFdpdGhkcmF3YWxJZAcDCQAAAgUDZXJyBQNlcnIEB3JlcXVlc3QJARZfbG9hZFJlcXVlc3RXaXRoZHJhd2FsAQUTcmVxdWVzdFdpdGhkcmF3YWxJZAQLcmVxdWVzdEZyb20IBQdyZXF1ZXN0Al8xBAlyZXF1ZXN0VG8IBQdyZXF1ZXN0Al8yBBByZXF1ZXN0VG9DaGFpbklkCAUHcmVxdWVzdAJfMwQMcmVxdWVzdEFzc2V0CAUHcmVxdWVzdAJfNAQNcmVxdWVzdEFtb3VudAgFB3JlcXVlc3QCXzUEDXJlcXVlc3RIZWlnaHQIBQdyZXF1ZXN0Al82BA1yZXF1ZXN0U3RhdHVzCAUHcmVxdWVzdAJfOAQIY3VycmVuY3kJARJfbG9hZEFzc2V0Q3VycmVuY3kCBRByZXF1ZXN0VG9DaGFpbklkBQxyZXF1ZXN0QXNzZXQEFm5ld0Fzc2V0UmVzZXJ2ZXNMb2NrZWQJALgCAgkBGF9sb2FkQXNzZXRSZXNlcnZlc0xvY2tlZAIFEHJlcXVlc3RUb0NoYWluSWQFDHJlcXVlc3RBc3NldAUNcmVxdWVzdEFtb3VudAQVbmV3VXNlckxvY2tlZEN1cnJlbmN5CQC4AgIJARdfbG9hZFVzZXJMb2NrZWRDdXJyZW5jeQIFCGN1cnJlbmN5BQtyZXF1ZXN0RnJvbQUNcmVxdWVzdEFtb3VudAQEZXJyMQMDCQEPX3ZhbGlkYXRlQmlnSW50AwUWbmV3QXNzZXRSZXNlcnZlc0xvY2tlZAULWkVST19CSUdJTlQCMXJlamVjdFdpdGhkcmF3YWw6IG5lZ2F0aXZlIG5ld0Fzc2V0UmVzZXJ2ZXNMb2NrZWQJAQ9fdmFsaWRhdGVCaWdJbnQDBRVuZXdVc2VyTG9ja2VkQ3VycmVuY3kFC1pFUk9fQklHSU5UAjByZWplY3RXaXRoZHJhd2FsOiBuZWdhdGl2ZSBuZXdVc2VyTG9ja2VkQ3VycmVuY3kHCQERX3JlcXVlc3RJc0NyZWF0ZWQCBQ1yZXF1ZXN0U3RhdHVzAiVyZWplY3RXaXRoZHJhd2FsOiByZXF1ZXN0IGlzIHJlc29sdmVkBwMJAAACBQRlcnIxBQRlcnIxBBBhdmFpbGFibGVCYWxhbmNlBAckbWF0Y2gwCQD8BwQJARNfbG9hZEFjY291bnRTdG9yYWdlAAUVRlVOQ19HRVRfVVNFUl9CQUxBTkNFCQDMCAIFC3JlcXVlc3RGcm9tCQDMCAIFC1NQT1RfV0FMTEVUCQDMCAIFCGN1cnJlbmN5BQNuaWwFA25pbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJAKcDAQUBYQkAAgECO3JlamVjdFdpdGhkcmF3YWw6IGNhbid0IHRha2UgYXZhaWxhYmxlIGJhbGFuY2UgZnJvbSBzdG9yYWdlAwkAAAIFEGF2YWlsYWJsZUJhbGFuY2UFEGF2YWlsYWJsZUJhbGFuY2UDCQC/AgIFDXJlcXVlc3RBbW91bnQFEGF2YWlsYWJsZUJhbGFuY2UEDnJlcXVlc3RVcGRhdGVkCQCaCggIBQdyZXF1ZXN0Al8xCAUHcmVxdWVzdAJfMggFB3JlcXVlc3QCXzMIBQdyZXF1ZXN0Al80CAUHcmVxdWVzdAJfNQgFB3JlcXVlc3QCXzYIBQdyZXF1ZXN0Al83BRdSRVFVRVNUX1NUQVRVU19SRUpFQ1RFRAkAlAoCCQDOCAIJAM4IAgkBGF9zYXZlQXNzZXRSZXNlcnZlc0xvY2tlZAMFEHJlcXVlc3RUb0NoYWluSWQFDHJlcXVlc3RBc3NldAUWbmV3QXNzZXRSZXNlcnZlc0xvY2tlZAkBF19zYXZlVXNlckxvY2tlZEN1cnJlbmN5AwUIY3VycmVuY3kFC3JlcXVlc3RGcm9tBRVuZXdVc2VyTG9ja2VkQ3VycmVuY3kJARZfc2F2ZVJlcXVlc3RXaXRoZHJhd2FsAgUTcmVxdWVzdFdpdGhkcmF3YWxJZAUOcmVxdWVzdFVwZGF0ZWQGCQCUCgIFA25pbAcJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEId2l0aGRyYXcKBWZyb21fA3RvXwp0b0NoYWluSWRfBmFzc2V0XwdhbW91bnRfC3JlbGF5ZXJGZWVfCnRpbWVzdGFtcF8Hd2ViM0lkXwRhbGdfCnNpZ25hdHVyZV8ECXRvQ2hhaW5JZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEFCnRvQ2hhaW5JZF8CG3dpdGhkcmF3OiB0b0NoYWluSWQgbm90IGludAQGYW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQUHYW1vdW50XwIYd2l0aGRyYXc6IGFtb3VudCBub3QgaW50BApyZWxheWVyRmVlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQULcmVsYXllckZlZV8CHHdpdGhkcmF3OiByZWxheWVyRmVlIG5vdCBpbnQECXRpbWVzdGFtcAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEFCnRpbWVzdGFtcF8CG3dpdGhkcmF3OiB0aW1lc3RhbXAgbm90IGludAQDYWxnCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQUEYWxnXwIVd2l0aGRyYXc6IGFsZyBub3QgaW50BAZ3ZWIzSWQJANkEAQUHd2ViM0lkXwQJc2lnbmF0dXJlCQDZBAEFCnNpZ25hdHVyZV8EA2VycgMDAwMDAwMDAwMDCQEQX3doZW5Jbml0aWFsaXplZAAJARJfdmFsaWRhdGVTZXF1ZW5jZXICCAUBaQZjYWxsZXICG3dpdGhkcmF3OiBpbnZhbGlkIHNlcXVlbmNlcgcJAQ9fdmFsaWRhdGVTdHJpbmcCBQVmcm9tXwIWd2l0aGRyYXc6IGludmFsaWQgZnJvbQcJAQ9fdmFsaWRhdGVTdHJpbmcCBQN0b18CFHdpdGhkcmF3OiBpbnZhbGlkIHRvBwkBDF9jaGFpbkV4aXN0cwIFCXRvQ2hhaW5JZAIbd2l0aGRyYXc6IGludmFsaWQgdG9DaGFpbklkBwkBFF9hc3NldEN1cnJlbmN5RXhpc3RzAwUJdG9DaGFpbklkBQZhc3NldF8CF3dpdGhkcmF3OiBpbnZhbGlkIGFzc2V0BwkBD192YWxpZGF0ZUJpZ0ludAMFBmFtb3VudAULWkVST19CSUdJTlQCGHdpdGhkcmF3OiBpbnZhbGlkIGFtb3VudAcJARFfdmFsaWRhdGVCaWdJbnRfMgQFCnJlbGF5ZXJGZWUFC1pFUk9fQklHSU5UBQZhbW91bnQCHHdpdGhkcmF3OiBpbnZhbGlkIHJlbGF5ZXJGZWUHCQEMX3ZhbGlkYXRlSW50BAkAZAIFCXRpbWVzdGFtcAUHT05FX0RBWQgFCWxhc3RCbG9jawl0aW1lc3RhbXAFB01BWF9JTlQCG3dpdGhkcmF3OiBpbnZhbGlkIHRpbWVzdGFtcAcJAQ9fdmFsaWRhdGVXZWIzSWQDBQZ3ZWIzSWQFA2FsZwIUd2l0aGRyYXc6IGludiB3ZWIzSWQHCQEYX3ZhbGlkYXRlU2lnbmF0dXJlRm9ybWF0AwUJc2lnbmF0dXJlBQNhbGcCGHdpdGhkcmF3OiBpbnYgc2lnIGZvcm1hdAcJAR1fdmFsaWRhdGVXZWIzSWRNYXRjaGVzQWRkcmVzcwQFBndlYjNJZAUFZnJvbV8FA2FsZwIZd2l0aGRyYXc6IHdlYjNJZCBtaXNtYXRjaAcDCQAAAgUDZXJyBQNlcnIED3dpdGhkcmF3YWxCeXRlcwkAywECCQDLAQIJAMsBAgkAywECCQDLAQIJAMsBAgkAywECCQDLAQIJAMsBAgkAywECCQDLAQIJAJoDAQkAsQIBBQVmcm9tXwkAmwMBBQVmcm9tXwkAmgMBCQCxAgEFA3RvXwkAmwMBBQN0b18JAJoDAQUJdG9DaGFpbklkCQCaAwEJALECAQUGYXNzZXRfCQCbAwEFBmFzc2V0XwkAnQMBBQZhbW91bnQJAJ0DAQUKcmVsYXllckZlZQkAmgMBBQl0aW1lc3RhbXAFBndlYjNJZAkAmgMBBQNhbGcEDndpdGhkcmF3YWxIYXNoCQCMFQEFD3dpdGhkcmF3YWxCeXRlcwQIY3VycmVuY3kJARJfbG9hZEFzc2V0Q3VycmVuY3kCBQl0b0NoYWluSWQFBmFzc2V0XwQQYXZhaWxhYmxlQmFsYW5jZQQHJG1hdGNoMAkA/AcECQETX2xvYWRBY2NvdW50U3RvcmFnZQAFFUZVTkNfR0VUX1VTRVJfQkFMQU5DRQkAzAgCBQVmcm9tXwkAzAgCBQtTUE9UX1dBTExFVAkAzAgCBQhjdXJyZW5jeQUDbmlsBQNuaWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQCnAwEFAWEJAAIBAjN3aXRoZHJhdzogY2FuJ3QgdGFrZSBhdmFpbGFibGUgYmFsYW5jZSBmcm9tIHN0b3JhZ2UDCQAAAgUQYXZhaWxhYmxlQmFsYW5jZQUQYXZhaWxhYmxlQmFsYW5jZQQNYXNzZXRSZXNlcnZlcwkBEl9sb2FkQXNzZXRSZXNlcnZlcwIFCXRvQ2hhaW5JZAUGYXNzZXRfBA5sb2NrZWRSZXNlcnZlcwkBGF9sb2FkQXNzZXRSZXNlcnZlc0xvY2tlZAIFCXRvQ2hhaW5JZAUGYXNzZXRfBAxhbW91bnRUb1NlbmQJALgCAgUGYW1vdW50BQpyZWxheWVyRmVlBA9hbW91bnRUb1NlbmRTdHIJAKYDAQUMYW1vdW50VG9TZW5kBARlcnIxAwMDCQEcX3ZhbGlkYXRlV2l0aGRyYXdhbFNpZ25hdHVyZQUFDndpdGhkcmF3YWxIYXNoBQlzaWduYXR1cmUFBndlYjNJZAUDYWxnAhV3aXRoZHJhdzogaW52YWxpZCBzaWcJARxfY2hlY2tXaXRoZHJhd2FsSGFzaE5vdEV4aXN0AgUOd2l0aGRyYXdhbEhhc2gCGndpdGhkcmF3OiBhbHJlYWR5IGV4ZWN1dGVkBwkBD192YWxpZGF0ZUJpZ0ludAMFEGF2YWlsYWJsZUJhbGFuY2UFDGFtb3VudFRvU2VuZAIed2l0aGRyYXc6IGluc3VmZmljaWVudCBiYWxhbmNlBwkBD192YWxpZGF0ZUJpZ0ludAMJALgCAgUNYXNzZXRSZXNlcnZlcwUObG9ja2VkUmVzZXJ2ZXMFDGFtb3VudFRvU2VuZAIfd2l0aGRyYXc6IGluc3VmZmljaWVudCByZXNlcnZlcwcDCQAAAgUEZXJyMQUEZXJyMQQQbmV3QXNzZXRSZXNlcnZlcwkAuAICBQ1hc3NldFJlc2VydmVzBQxhbW91bnRUb1NlbmQEE25ld0N1cnJlbmN5UmVzZXJ2ZXMJALgCAgkBFV9sb2FkQ3VycmVuY3lSZXNlcnZlcwEFCGN1cnJlbmN5BQxhbW91bnRUb1NlbmQEBGVycjIDCQEPX3ZhbGlkYXRlQmlnSW50AwUQbmV3QXNzZXRSZXNlcnZlcwULWkVST19CSUdJTlQCI3dpdGhkcmF3OiBuZWdhdGl2ZSBuZXdBc3NldFJlc2VydmVzCQEPX3ZhbGlkYXRlQmlnSW50AwUTbmV3Q3VycmVuY3lSZXNlcnZlcwULWkVST19CSUdJTlQCJndpdGhkcmF3OiBuZWdhdGl2ZSBuZXdDdXJyZW5jeVJlc2VydmVzBwMJAAACBQRlcnIyBQRlcnIyBBJzdG9yYWdlSW52b2NhdGlvbjEJAPwHBAkBE19sb2FkQWNjb3VudFN0b3JhZ2UABQ1GVU5DX1dJVEhEUkFXCQDMCAIFBWZyb21fCQDMCAIFCGN1cnJlbmN5CQDMCAIFB2Ftb3VudF8FA25pbAUDbmlsAwkAAAIFEnN0b3JhZ2VJbnZvY2F0aW9uMQUSc3RvcmFnZUludm9jYXRpb24xBBJzdG9yYWdlSW52b2NhdGlvbjIJAPwHBAkBE19sb2FkQWNjb3VudFN0b3JhZ2UABQxGVU5DX0RFUE9TSVQJAMwIAgkBGF9sb2FkUmVsYXllckZlZVJlY2lwaWVudAAJAMwIAgUIY3VycmVuY3kJAMwIAgULcmVsYXllckZlZV8FA25pbAUDbmlsAwkAAAIFEnN0b3JhZ2VJbnZvY2F0aW9uMgUSc3RvcmFnZUludm9jYXRpb24yBBJ3aXRoZHJhd0ludm9jYXRpb24DCQAAAgkBCl9sb2FkQ2hhaW4BBQl0b0NoYWluSWQFBVdBVkVTCQD8BwQJAQ9fbG9hZFdhdmVzVmF1bHQABQ1GVU5DX1dJVEhEUkFXCQDMCAIFA3RvXwkAzAgCBQZhc3NldF8JAMwIAgUPYW1vdW50VG9TZW5kU3RyBQNuaWwFA25pbAkA/AcECQERX2xvYWRWYXVsdEFkYXB0ZXIABQ1GVU5DX1dJVEhEUkFXCQDMCAIFCXRvQ2hhaW5JZAkAzAgCBQZhc3NldF8JAMwIAgUPYW1vdW50VG9TZW5kU3RyCQDMCAIFA3RvXwkAzAgCBQtyZWxheWVyRmVlXwUDbmlsBQNuaWwDCQAAAgUSd2l0aGRyYXdJbnZvY2F0aW9uBRJ3aXRoZHJhd0ludm9jYXRpb24JAJQKAgkAzggCCQDOCAIJARJfc2F2ZUFzc2V0UmVzZXJ2ZXMDBQl0b0NoYWluSWQFBmFzc2V0XwUQbmV3QXNzZXRSZXNlcnZlcwkBFV9zYXZlQ3VycmVuY3lSZXNlcnZlcwIFCGN1cnJlbmN5BRNuZXdDdXJyZW5jeVJlc2VydmVzCQETX3NhdmVXaXRoZHJhd2FsSGFzaAIFDndpdGhkcmF3YWxIYXNoCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEUZGVwb3NpdFN0YWtpbmdSZXdhcmQED2NhbGxlckNvbnRyYWN0XwhjaGFpbklkXwZhc3NldF8HYW1vdW50XwQHY2hhaW5JZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEFCGNoYWluSWRfAiVkZXBvc2l0U3Rha2luZ1Jld2FyZDogY2hhaW5JZCBub3QgaW50BAZhbW91bnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBBQdhbW91bnRfAiRkZXBvc2l0U3Rha2luZ1Jld2FyZDogYW1vdW50IG5vdCBpbnQEA2VycgMDAwMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcJAQxfY2hhaW5FeGlzdHMCBQdjaGFpbklkAiVkZXBvc2l0U3Rha2luZ1Jld2FyZDogaW52YWxpZCBjaGFpbklkBwkBFF9hc3NldEN1cnJlbmN5RXhpc3RzAwUHY2hhaW5JZAUGYXNzZXRfAiNkZXBvc2l0U3Rha2luZ1Jld2FyZDogaW52YWxpZCBhc3NldAcJAQ9fdmFsaWRhdGVCaWdJbnQDBQZhbW91bnQFC1pFUk9fQklHSU5UAiRkZXBvc2l0U3Rha2luZ1Jld2FyZDogaW52YWxpZCBhbW91bnQHAwkAAAIFA2VycgUDZXJyBARlcnIxAwkAAAIJAQpfbG9hZENoYWluAQUHY2hhaW5JZAUFV0FWRVMJARNfdmFsaWRhdGVXYXZlc1ZhdWx0AggFAWkGY2FsbGVyAilkZXBvc2l0U3Rha2luZ1Jld2FyZDogaW52YWxpZCB3YXZlcyB2YXVsdAMJARFfdmFsaWRhdGVFeGVjdXRvcgIIBQFpBmNhbGxlcgImZGVwb3NpdFN0YWtpbmdSZXdhcmQ6IGludmFsaWQgZXhlY3V0b3IJARdfdmFsaWRhdGVDYWxsZXJDb250cmFjdAMFB2NoYWluSWQFD2NhbGxlckNvbnRyYWN0XwItZGVwb3NpdFN0YWtpbmdSZXdhcmQ6IGludmFsaWQgY2FsbGVyIGNvbnRyYWN0BwMJAAACBQRlcnIxBQRlcnIxBBBuZXdBc3NldFJlc2VydmVzCQC3AgIJARJfbG9hZEFzc2V0UmVzZXJ2ZXMCBQdjaGFpbklkBQZhc3NldF8FBmFtb3VudAQIY3VycmVuY3kJARJfbG9hZEFzc2V0Q3VycmVuY3kCBQdjaGFpbklkBQZhc3NldF8EE25ld0N1cnJlbmN5UmVzZXJ2ZXMJALcCAgkBFV9sb2FkQ3VycmVuY3lSZXNlcnZlcwEFCGN1cnJlbmN5BQZhbW91bnQECmludm9jYXRpb24JAPwHBAkBE19sb2FkQWNjb3VudFN0b3JhZ2UABRtGVU5DX0RFUE9TSVRfU1RBS0lOR19SRVdBUkQJAMwIAgkBFl9sb2FkUmV3YXJkRGlzdHJpYnV0b3IACQDMCAIFCGN1cnJlbmN5CQDMCAIFB2Ftb3VudF8FA25pbAUDbmlsAwkAAAIFCmludm9jYXRpb24FCmludm9jYXRpb24JAJQKAgkAzggCCQESX3NhdmVBc3NldFJlc2VydmVzAwUHY2hhaW5JZAUGYXNzZXRfBRBuZXdBc3NldFJlc2VydmVzCQEVX3NhdmVDdXJyZW5jeVJlc2VydmVzAgUIY3VycmVuY3kFE25ld0N1cnJlbmN5UmVzZXJ2ZXMFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEIYWRkQ2hhaW4DCGNoYWluSWRfBW5hbWVfD2NhbGxlckNvbnRyYWN0XwQDZXJyAwMDAwMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwkBDF92YWxpZGF0ZUludAQFCGNoYWluSWRfAAAFB01BWF9JTlQCGWFkZENoYWluOiBpbnZhbGlkIGNoYWluSWQHCQEPX3ZhbGlkYXRlU3RyaW5nAgUFbmFtZV8CFmFkZENoYWluOiBpbnZhbGlkIG5hbWUHCQEPX3ZhbGlkYXRlU3RyaW5nAgUPY2FsbGVyQ29udHJhY3RfAiBhZGRDaGFpbjogaW52YWxpZCBjYWxsZXJDb250cmFjdAcJAQ5fY2hhaW5Ob3RFeGlzdAIFCGNoYWluSWRfAhhhZGRDaGFpbjogYWxyZWFkeSBleGlzdHMHAwkAAAIFA2VycgUDZXJyCQCUCgIJAM4IAgkBCl9zYXZlQ2hhaW4CBQhjaGFpbklkXwUFbmFtZV8JARNfc2F2ZUNhbGxlckNvbnRyYWN0AgUIY2hhaW5JZF8FD2NhbGxlckNvbnRyYWN0XwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhhZGRBc3NldAMIY2hhaW5JZF8GYXNzZXRfCWN1cnJlbmN5XwQDZXJyAwMDAwMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwkBDF9jaGFpbkV4aXN0cwIFCGNoYWluSWRfAhlhZGRBc3NldDogaW52YWxpZCBjaGFpbklkBwkBD192YWxpZGF0ZVN0cmluZwIFBmFzc2V0XwIXYWRkQXNzZXQ6IGludmFsaWQgYXNzZXQHCQEPX3ZhbGlkYXRlU3RyaW5nAgUJY3VycmVuY3lfAhphZGRBc3NldDogaW52YWxpZCBjdXJyZW5jeQcJARZfYXNzZXRDdXJyZW5jeU5vdEV4aXN0AwUIY2hhaW5JZF8FBmFzc2V0XwIYYWRkQXNzZXQ6IGFscmVhZHkgZXhpc3RzBwMJAAACBQNlcnIFA2VycgkAlAoCCQESX3NhdmVBc3NldEN1cnJlbmN5AwUIY2hhaW5JZF8FBmFzc2V0XwUJY3VycmVuY3lfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBHnNldFJlcXVlc3RXaXRoZHJhd2FsQmxvY2tEZWxheQEGZGVsYXlfBANlcnIDAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQEQX3doZW5Jbml0aWFsaXplZAAHCQEMX3ZhbGlkYXRlSW50BAUGZGVsYXlfAAAFB01BWF9JTlQCLXNldFJlcXVlc3RXaXRoZHJhd2FsQmxvY2tEZWxheTogaW52YWxpZCBkZWxheQcDCQAAAgUDZXJyBQNlcnIJAJQKAgkBIF9zYXZlUmVxdWVzdFdpdGhkcmF3YWxCbG9ja0RlbGF5AQUGZGVsYXlfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBF3VwZGF0ZVJld2FyZERpc3RyaWJ1dG9yARJyZXdhcmREaXN0cmlidXRvcl8EA2VycgMDCQERX29ubHlUaGlzQ29udHJhY3QBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcJAQ9fdmFsaWRhdGVTdHJpbmcCBRJyZXdhcmREaXN0cmlidXRvcl8CMnVwZGF0ZVJld2FyZERpc3RyaWJ1dG9yOiBpbnZhbGlkIHJld2FyZERpc3RyaWJ1dG9yBwMJAAACBQNlcnIFA2VycgkAlAoCCQEWX3NhdmVSZXdhcmREaXN0cmlidXRvcgEFEnJld2FyZERpc3RyaWJ1dG9yXwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARl1cGRhdGVSZWxheWVyRmVlUmVjaXBpZW50ARRyZWxheWVyRmVlUmVjaXBpZW50XwQDZXJyAwMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwkBD192YWxpZGF0ZVN0cmluZwIFFHJlbGF5ZXJGZWVSZWNpcGllbnRfAjZ1cGRhdGVSZWxheWVyRmVlUmVjaXBpZW50OiBpbnZhbGlkIHJlbGF5ZXJGZWVSZWNpcGllbnQHAwkAAAIFA2VycgUDZXJyCQCUCgIJARhfc2F2ZVJlbGF5ZXJGZWVSZWNpcGllbnQBBRRyZWxheWVyRmVlUmVjaXBpZW50XwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQVwYXVzZQAEA2VycgMDCQELX29ubHlQYXVzZXIBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcJAQ5fd2hlbk5vdFBhdXNlZAAHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQpfc2F2ZVBhdXNlAQYFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHdW5wYXVzZQAEA2VycgMDCQELX29ubHlQYXVzZXIBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcJAQtfd2hlblBhdXNlZAAHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQpfc2F2ZVBhdXNlAQcFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMdXBkYXRlUGF1c2VyAQdwYXVzZXJfBANlcnIDAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQEQX3doZW5Jbml0aWFsaXplZAAHCQEQX3ZhbGlkYXRlQWRkcmVzcwIFB3BhdXNlcl8CHHVwZGF0ZVBhdXNlcjogaW52YWxpZCBwYXVzZXIHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQtfc2F2ZVBhdXNlcgEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB3BhdXNlcl8FBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQELc2V0TXVsdGlzaWcBCW11bHRpc2lnXwQDZXJyAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQEQX3ZhbGlkYXRlQWRkcmVzcwIFCW11bHRpc2lnXwIdc2V0TXVsdGlzaWc6IGludmFsaWQgbXVsdGlzaWcHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQ1fc2F2ZU11bHRpc2lnAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUJbXVsdGlzaWdfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQHJG1hdGNoMAkAoggBBQxLRVlfTVVMVElTSUcDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAhtdWx0aXNpZwUHJG1hdGNoMAkBC3ZhbHVlT3JFbHNlAgkAmwgCCQERQGV4dHJOYXRpdmUoMTA2MikBBQhtdWx0aXNpZwkAuQkCCQDMCAIFCktFWV9TVEFUVVMJAMwIAgkApQgBBQR0aGlzCQDMCAIJANgEAQgFAnR4AmlkBQNuaWwFCVNFUEFSQVRPUgcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXl0QOf/", "height": 3407157, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HfrtsyoqcdEVaFxU5r5WYqxKStbNaMKKcXtUkx3P5Yxf Next: 74rf9Vdqi9f8SHdP9ipAKhpd68m8VwbfeMKCcNExBi45 Diff:
Old | New | Differences | |
---|---|---|---|
81 | 81 | ||
82 | 82 | let N = 2 | |
83 | 83 | ||
84 | - | let O = base58' | |
84 | + | let O = base58'7YXq4t' | |
85 | 85 | ||
86 | - | func P (Q,R) = { | |
87 | - | let S = addressFromString(Q) | |
88 | - | if ($isInstanceOf(S, "Address")) | |
86 | + | let P = base58'G5Nu92G2p7moXW9qjjN3na7gtq4dWCeVdaSjry' | |
87 | + | ||
88 | + | func Q (R,S) = { | |
89 | + | let T = addressFromString(R) | |
90 | + | if ($isInstanceOf(T, "Address")) | |
89 | 91 | then { | |
90 | - | let | |
92 | + | let U = T | |
91 | 93 | true | |
92 | 94 | } | |
93 | - | else throw( | |
95 | + | else throw(S) | |
94 | 96 | } | |
95 | 97 | ||
96 | 98 | ||
97 | - | func | |
99 | + | func V (W,X,Y,S) = if (if ((X > W)) | |
98 | 100 | then true | |
99 | - | else ( | |
100 | - | then throw( | |
101 | + | else (W > Y)) | |
102 | + | then throw(S) | |
101 | 103 | else true | |
102 | 104 | ||
103 | 105 | ||
104 | - | func | |
105 | - | then throw( | |
106 | + | func Z (W,X,S) = if ((X > W)) | |
107 | + | then throw(S) | |
106 | 108 | else true | |
107 | 109 | ||
108 | 110 | ||
109 | - | func | |
111 | + | func aa (W,X,Y,S) = if (if ((X > W)) | |
110 | 112 | then true | |
111 | - | else ( | |
112 | - | then throw( | |
113 | + | else (W > Y)) | |
114 | + | then throw(S) | |
113 | 115 | else true | |
114 | 116 | ||
115 | 117 | ||
116 | - | func | |
118 | + | func ab (W,S) = if (if ((0 >= size(W))) | |
117 | 119 | then true | |
118 | - | else contains( | |
119 | - | then throw( | |
120 | + | else contains(W, a)) | |
121 | + | then throw(S) | |
120 | 122 | else true | |
121 | 123 | ||
122 | 124 | ||
123 | - | func | |
124 | - | then throw( | |
125 | + | func ac (ad,ae,S) = if ((ad != ae)) | |
126 | + | then throw(S) | |
125 | 127 | else true | |
126 | 128 | ||
127 | 129 | ||
128 | - | func | |
129 | - | let | |
130 | - | if ($isInstanceOf( | |
130 | + | func af () = { | |
131 | + | let T = getBoolean(d) | |
132 | + | if ($isInstanceOf(T, "Boolean")) | |
131 | 133 | then { | |
132 | - | let | |
133 | - | | |
134 | + | let U = T | |
135 | + | U | |
134 | 136 | } | |
135 | 137 | else false | |
136 | 138 | } | |
137 | 139 | ||
138 | 140 | ||
139 | - | func | |
141 | + | func ag (ah) = [BooleanEntry(d, ah)] | |
140 | 142 | ||
141 | 143 | ||
142 | - | func | |
143 | - | let | |
144 | - | if ($isInstanceOf( | |
144 | + | func ai () = { | |
145 | + | let T = getBoolean(e) | |
146 | + | if ($isInstanceOf(T, "Boolean")) | |
145 | 147 | then { | |
146 | - | let | |
147 | - | | |
148 | + | let U = T | |
149 | + | U | |
148 | 150 | } | |
149 | 151 | else false | |
150 | 152 | } | |
151 | 153 | ||
152 | 154 | ||
153 | - | func | |
155 | + | func aj (ak) = [BooleanEntry(e, ak)] | |
154 | 156 | ||
155 | 157 | ||
156 | - | func | |
157 | - | let | |
158 | - | if ($isInstanceOf( | |
158 | + | func al () = { | |
159 | + | let T = getString(f) | |
160 | + | if ($isInstanceOf(T, "String")) | |
159 | 161 | then { | |
160 | - | let | |
161 | - | addressFromStringValue( | |
162 | + | let U = T | |
163 | + | addressFromStringValue(U) | |
162 | 164 | } | |
163 | 165 | else Address(base58'') | |
164 | 166 | } | |
165 | 167 | ||
166 | 168 | ||
167 | - | func | |
169 | + | func am (an) = [StringEntry(f, toString(an))] | |
168 | 170 | ||
169 | 171 | ||
170 | - | func | |
171 | - | let | |
172 | - | if ($isInstanceOf( | |
172 | + | func ao () = { | |
173 | + | let T = getString(b) | |
174 | + | if ($isInstanceOf(T, "String")) | |
173 | 175 | then { | |
174 | - | let | |
175 | - | addressFromStringValue( | |
176 | + | let U = T | |
177 | + | addressFromStringValue(U) | |
176 | 178 | } | |
177 | 179 | else Address(base58'') | |
178 | 180 | } | |
179 | 181 | ||
180 | 182 | ||
181 | - | func | |
183 | + | func ap (aq) = [StringEntry(b, toString(aq))] | |
182 | 184 | ||
183 | 185 | ||
184 | - | func | |
185 | - | let | |
186 | - | if ($isInstanceOf( | |
186 | + | func ar (as) = { | |
187 | + | let T = getString(makeString([h, toString(as)], a)) | |
188 | + | if ($isInstanceOf(T, "String")) | |
187 | 189 | then { | |
188 | - | let | |
189 | - | | |
190 | + | let U = T | |
191 | + | U | |
190 | 192 | } | |
191 | 193 | else "" | |
192 | 194 | } | |
193 | 195 | ||
194 | 196 | ||
195 | - | func | |
197 | + | func at (as,au) = [StringEntry(makeString([h, toString(as)], a), au)] | |
196 | 198 | ||
197 | 199 | ||
198 | - | func | |
199 | - | let | |
200 | - | if ($isInstanceOf( | |
200 | + | func av () = { | |
201 | + | let T = getString(g) | |
202 | + | if ($isInstanceOf(T, "String")) | |
201 | 203 | then { | |
202 | - | let | |
203 | - | addressFromStringValue( | |
204 | + | let U = T | |
205 | + | addressFromStringValue(U) | |
204 | 206 | } | |
205 | 207 | else Address(base58'') | |
206 | 208 | } | |
207 | 209 | ||
208 | 210 | ||
209 | - | func | |
211 | + | func aw (ax) = [StringEntry(g, toString(ax))] | |
210 | 212 | ||
211 | 213 | ||
212 | - | func | |
213 | - | let | |
214 | - | if ($isInstanceOf( | |
214 | + | func ay () = { | |
215 | + | let T = getString(j) | |
216 | + | if ($isInstanceOf(T, "String")) | |
215 | 217 | then { | |
216 | - | let | |
217 | - | addressFromStringValue( | |
218 | + | let U = T | |
219 | + | addressFromStringValue(U) | |
218 | 220 | } | |
219 | 221 | else Address(base58'') | |
220 | 222 | } | |
221 | 223 | ||
222 | 224 | ||
223 | - | func | |
225 | + | func az (aA) = [StringEntry(j, toString(aA))] | |
224 | 226 | ||
225 | 227 | ||
226 | - | func | |
227 | - | let | |
228 | - | if ($isInstanceOf( | |
228 | + | func aB () = { | |
229 | + | let T = getString(i) | |
230 | + | if ($isInstanceOf(T, "String")) | |
229 | 231 | then { | |
230 | - | let | |
231 | - | addressFromStringValue( | |
232 | + | let U = T | |
233 | + | addressFromStringValue(U) | |
232 | 234 | } | |
233 | 235 | else Address(base58'') | |
234 | 236 | } | |
235 | 237 | ||
236 | 238 | ||
237 | - | func | |
239 | + | func aC (aD) = [StringEntry(i, toString(aD))] | |
238 | 240 | ||
239 | 241 | ||
240 | - | func | |
241 | - | let | |
242 | - | if ($isInstanceOf( | |
242 | + | func aE (as) = { | |
243 | + | let T = getString(makeString([k, toString(as)], a)) | |
244 | + | if ($isInstanceOf(T, "String")) | |
243 | 245 | then { | |
244 | - | let | |
245 | - | | |
246 | + | let U = T | |
247 | + | U | |
246 | 248 | } | |
247 | 249 | else "" | |
248 | 250 | } | |
249 | 251 | ||
250 | 252 | ||
251 | - | func | |
253 | + | func aF (as,aG) = [StringEntry(makeString([k, toString(as)], a), aG)] | |
252 | 254 | ||
253 | 255 | ||
254 | - | func | |
255 | - | let | |
256 | - | if ($isInstanceOf( | |
256 | + | func aH (as,aI) = { | |
257 | + | let T = getString(makeString([l, toString(as), aI], a)) | |
258 | + | if ($isInstanceOf(T, "String")) | |
257 | 259 | then { | |
258 | - | let | |
259 | - | | |
260 | + | let U = T | |
261 | + | U | |
260 | 262 | } | |
261 | 263 | else "" | |
262 | 264 | } | |
263 | 265 | ||
264 | 266 | ||
265 | - | func | |
267 | + | func aJ (as,aI,aK) = [StringEntry(makeString([l, toString(as), aI], a), aK)] | |
266 | 268 | ||
267 | 269 | ||
268 | - | func | |
269 | - | let | |
270 | - | if ($isInstanceOf( | |
270 | + | func aL (as,aI) = { | |
271 | + | let T = getString(makeString([m, toString(as), aI], a)) | |
272 | + | if ($isInstanceOf(T, "String")) | |
271 | 273 | then { | |
272 | - | let | |
273 | - | parseBigIntValue( | |
274 | + | let U = T | |
275 | + | parseBigIntValue(U) | |
274 | 276 | } | |
275 | 277 | else J | |
276 | 278 | } | |
277 | 279 | ||
278 | 280 | ||
279 | - | func | |
281 | + | func aM (as,aI,aN) = [StringEntry(makeString([m, toString(as), aI], a), toString(aN))] | |
280 | 282 | ||
281 | 283 | ||
282 | - | func | |
283 | - | let | |
284 | - | if ($isInstanceOf( | |
284 | + | func aO (as,aI) = { | |
285 | + | let T = getString(makeString([n, toString(as), aI], a)) | |
286 | + | if ($isInstanceOf(T, "String")) | |
285 | 287 | then { | |
286 | - | let | |
287 | - | parseBigIntValue( | |
288 | + | let U = T | |
289 | + | parseBigIntValue(U) | |
288 | 290 | } | |
289 | 291 | else J | |
290 | 292 | } | |
291 | 293 | ||
292 | 294 | ||
293 | - | func | |
295 | + | func aP (as,aI,aN) = [StringEntry(makeString([n, toString(as), aI], a), toString(aN))] | |
294 | 296 | ||
295 | 297 | ||
296 | - | func | |
297 | - | let | |
298 | - | if ($isInstanceOf( | |
298 | + | func aQ (aK,aR) = { | |
299 | + | let T = getString(makeString([o, aK, aR], a)) | |
300 | + | if ($isInstanceOf(T, "String")) | |
299 | 301 | then { | |
300 | - | let | |
301 | - | parseBigIntValue( | |
302 | + | let U = T | |
303 | + | parseBigIntValue(U) | |
302 | 304 | } | |
303 | 305 | else J | |
304 | 306 | } | |
305 | 307 | ||
306 | 308 | ||
307 | - | func | |
309 | + | func aS (aK,aR,aT) = [StringEntry(makeString([o, aK, aR], a), toString(aT))] | |
308 | 310 | ||
309 | 311 | ||
310 | - | func | |
311 | - | let | |
312 | - | if ($isInstanceOf( | |
312 | + | func aU (aK) = { | |
313 | + | let T = getString(makeString([p, aK], a)) | |
314 | + | if ($isInstanceOf(T, "String")) | |
313 | 315 | then { | |
314 | - | let | |
315 | - | parseBigIntValue( | |
316 | + | let U = T | |
317 | + | parseBigIntValue(U) | |
316 | 318 | } | |
317 | 319 | else J | |
318 | 320 | } | |
319 | 321 | ||
320 | 322 | ||
321 | - | func | |
323 | + | func aV (aK,aN) = [StringEntry(makeString([p, aK], a), toString(aN))] | |
322 | 324 | ||
323 | 325 | ||
324 | - | func | |
325 | - | let | |
326 | - | if ($isInstanceOf( | |
326 | + | func aW () = { | |
327 | + | let T = getInteger(q) | |
328 | + | if ($isInstanceOf(T, "Int")) | |
327 | 329 | then { | |
328 | - | let | |
329 | - | | |
330 | + | let U = T | |
331 | + | U | |
330 | 332 | } | |
331 | 333 | else 0 | |
332 | 334 | } | |
333 | 335 | ||
334 | 336 | ||
335 | - | func | |
337 | + | func aX (W) = [IntegerEntry(q, W)] | |
336 | 338 | ||
337 | 339 | ||
338 | - | func | |
339 | - | let | |
340 | - | if ($isInstanceOf( | |
340 | + | func aY (aZ) = { | |
341 | + | let T = getString(makeString([r, toString(aZ)], a)) | |
342 | + | if ($isInstanceOf(T, "String")) | |
341 | 343 | then { | |
342 | - | let | |
343 | - | let | |
344 | - | $Tuple8( | |
344 | + | let U = T | |
345 | + | let ba = split(U, a) | |
346 | + | $Tuple8(ba[0], ba[1], parseIntValue(ba[2]), ba[3], parseBigIntValue(ba[4]), parseIntValue(ba[5]), ba[6], parseIntValue(ba[7])) | |
345 | 347 | } | |
346 | 348 | else $Tuple8("", "", 0, "", J, 0, "", D) | |
347 | 349 | } | |
348 | 350 | ||
349 | 351 | ||
350 | - | func | |
352 | + | func bb (aZ,bc) = [StringEntry(makeString([r, toString(aZ)], a), makeString([bc._1, bc._2, toString(bc._3), bc._4, toString(bc._5), toString(bc._6), bc._7, toString(bc._8)], a))] | |
351 | 353 | ||
352 | 354 | ||
353 | - | func | |
354 | - | let | |
355 | - | if ($isInstanceOf( | |
355 | + | func bd () = { | |
356 | + | let T = getInteger(s) | |
357 | + | if ($isInstanceOf(T, "Int")) | |
356 | 358 | then { | |
357 | - | let | |
358 | - | | |
359 | + | let U = T | |
360 | + | U | |
359 | 361 | } | |
360 | 362 | else 0 | |
361 | 363 | } | |
362 | 364 | ||
363 | 365 | ||
364 | - | func | |
366 | + | func be (bf) = [IntegerEntry(s, bf)] | |
365 | 367 | ||
366 | 368 | ||
367 | - | func | |
368 | - | let | |
369 | - | if ($isInstanceOf( | |
369 | + | func bg () = { | |
370 | + | let T = getString(t) | |
371 | + | if ($isInstanceOf(T, "String")) | |
370 | 372 | then { | |
371 | - | let | |
372 | - | addressFromStringValue( | |
373 | + | let U = T | |
374 | + | addressFromStringValue(U) | |
373 | 375 | } | |
374 | 376 | else Address(base58'') | |
375 | 377 | } | |
376 | 378 | ||
377 | 379 | ||
378 | - | func | |
380 | + | func bh (bi) = [StringEntry(t, toString(bi))] | |
379 | 381 | ||
380 | 382 | ||
381 | - | func | |
382 | - | let | |
383 | - | if ($isInstanceOf( | |
383 | + | func bj (bk) = { | |
384 | + | let T = getString(makeString([u, toBase58String(bk)], a)) | |
385 | + | if ($isInstanceOf(T, "String")) | |
384 | 386 | then { | |
385 | - | let | |
386 | - | | |
387 | + | let U = T | |
388 | + | U | |
387 | 389 | } | |
388 | 390 | else "" | |
389 | 391 | } | |
390 | 392 | ||
391 | 393 | ||
392 | - | func | |
394 | + | func bl (bk,bm) = [StringEntry(makeString([u, toBase58String(bk)], a), bm)] | |
393 | 395 | ||
394 | 396 | ||
395 | - | func | |
396 | - | let | |
397 | - | if ($isInstanceOf( | |
397 | + | func bn () = { | |
398 | + | let T = getString(v) | |
399 | + | if ($isInstanceOf(T, "String")) | |
398 | 400 | then { | |
399 | - | let | |
400 | - | addressFromStringValue( | |
401 | + | let U = T | |
402 | + | addressFromStringValue(U) | |
401 | 403 | } | |
402 | 404 | else Address(base58'') | |
403 | 405 | } | |
404 | 406 | ||
405 | 407 | ||
406 | - | func | |
408 | + | func bo (bp) = [StringEntry(v, toString(bp))] | |
407 | 409 | ||
408 | 410 | ||
409 | - | func | |
410 | - | let | |
411 | - | if ($isInstanceOf( | |
411 | + | func bq () = { | |
412 | + | let T = getString(w) | |
413 | + | if ($isInstanceOf(T, "String")) | |
412 | 414 | then { | |
413 | - | let | |
414 | - | | |
415 | + | let U = T | |
416 | + | U | |
415 | 417 | } | |
416 | 418 | else "" | |
417 | 419 | } | |
418 | 420 | ||
419 | 421 | ||
420 | - | func | |
422 | + | func br (bs) = [StringEntry(w, bs)] | |
421 | 423 | ||
422 | 424 | ||
423 | - | func | |
424 | - | let | |
425 | - | if ($isInstanceOf( | |
425 | + | func bt () = { | |
426 | + | let T = getString(x) | |
427 | + | if ($isInstanceOf(T, "String")) | |
426 | 428 | then { | |
427 | - | let | |
428 | - | | |
429 | + | let U = T | |
430 | + | U | |
429 | 431 | } | |
430 | 432 | else "" | |
431 | 433 | } | |
432 | 434 | ||
433 | 435 | ||
434 | - | func | |
436 | + | func bu (bv) = [StringEntry(x, bv)] | |
435 | 437 | ||
436 | 438 | ||
437 | - | func | |
439 | + | func bw (bx) = if ((bx != this)) | |
438 | 440 | then throw("_onlyThisContract: revert") | |
439 | 441 | else true | |
440 | 442 | ||
441 | 443 | ||
442 | - | func | |
444 | + | func by () = if ((ao() == Address(base58''))) | |
443 | 445 | then throw("_whenMultisigSet: revert") | |
444 | 446 | else true | |
445 | 447 | ||
446 | 448 | ||
447 | - | func | |
449 | + | func bz () = if (af()) | |
448 | 450 | then throw("_whenNotInitialized: revert") | |
449 | 451 | else true | |
450 | 452 | ||
451 | 453 | ||
452 | - | func | |
454 | + | func bA () = if (!(af())) | |
453 | 455 | then throw("_whenInitialized: revert") | |
454 | 456 | else true | |
455 | 457 | ||
456 | 458 | ||
457 | - | func | |
459 | + | func bB () = if (ai()) | |
458 | 460 | then throw("_whenNotPaused: revert") | |
459 | 461 | else true | |
460 | 462 | ||
461 | 463 | ||
462 | - | func | |
464 | + | func bC () = if (!(ai())) | |
463 | 465 | then throw("_whenPaused: revert") | |
464 | 466 | else true | |
465 | 467 | ||
466 | 468 | ||
467 | - | func | |
469 | + | func bD (bx) = if ((bx != al())) | |
468 | 470 | then throw("_onlyPauser: revert") | |
469 | 471 | else true | |
470 | 472 | ||
471 | 473 | ||
472 | - | func | |
473 | - | then throw( | |
474 | + | func bE (W,S) = if ((W != av())) | |
475 | + | then throw(S) | |
474 | 476 | else true | |
475 | 477 | ||
476 | 478 | ||
477 | - | func | |
478 | - | then throw( | |
479 | + | func bF (as,au,S) = if ((ar(as) != au)) | |
480 | + | then throw(S) | |
479 | 481 | else true | |
480 | 482 | ||
481 | 483 | ||
482 | - | func | |
483 | - | then throw( | |
484 | + | func bG (as,S) = if ((0 >= size(aE(as)))) | |
485 | + | then throw(S) | |
484 | 486 | else true | |
485 | 487 | ||
486 | 488 | ||
487 | - | func | |
488 | - | then throw( | |
489 | + | func bH (as,S) = if ((size(aE(as)) > 0)) | |
490 | + | then throw(S) | |
489 | 491 | else true | |
490 | 492 | ||
491 | 493 | ||
492 | - | func | |
493 | - | then throw( | |
494 | + | func bI (as,aI,S) = if ((0 >= size(aH(as, aI)))) | |
495 | + | then throw(S) | |
494 | 496 | else true | |
495 | 497 | ||
496 | 498 | ||
497 | - | func | |
498 | - | then throw( | |
499 | + | func bJ (as,aI,S) = if ((size(aH(as, aI)) > 0)) | |
500 | + | then throw(S) | |
499 | 501 | else true | |
500 | 502 | ||
501 | 503 | ||
502 | - | func | |
503 | - | then throw( | |
504 | + | func bK (bL,S) = if ((aB() != bL)) | |
505 | + | then throw(S) | |
504 | 506 | else true | |
505 | 507 | ||
506 | 508 | ||
507 | - | func | |
508 | - | then throw( | |
509 | + | func bM (bN,S) = if ((bN != D)) | |
510 | + | then throw(S) | |
509 | 511 | else true | |
510 | 512 | ||
511 | 513 | ||
512 | - | func | |
513 | - | then throw( | |
514 | + | func bO (bL,S) = if ((bg() != bL)) | |
515 | + | then throw(S) | |
514 | 516 | else true | |
515 | 517 | ||
516 | 518 | ||
517 | - | func | |
518 | - | then throw( | |
519 | + | func bP (bk,S) = if ((size(bj(bk)) > 0)) | |
520 | + | then throw(S) | |
519 | 521 | else true | |
520 | 522 | ||
521 | 523 | ||
522 | - | func | |
523 | - | then if ((size( | |
524 | - | then throw( | |
524 | + | func bQ (bR,bS,S) = if ((bS == M)) | |
525 | + | then if ((size(bR) != 64)) | |
526 | + | then throw(S) | |
525 | 527 | else true | |
526 | - | else if (( | |
527 | - | then if ((size( | |
528 | - | then throw( | |
528 | + | else if ((bS == N)) | |
529 | + | then if ((size(bR) != 65)) | |
530 | + | then throw(S) | |
529 | 531 | else true | |
530 | - | else throw(( | |
532 | + | else throw((S + ": inv alg")) | |
531 | 533 | ||
532 | 534 | ||
533 | - | func | |
534 | - | then if ((size( | |
535 | - | then throw( | |
535 | + | func bT (bU,bS,S) = if ((bS == M)) | |
536 | + | then if ((size(bU) != 32)) | |
537 | + | then throw(S) | |
536 | 538 | else true | |
537 | - | else if (( | |
538 | - | then if ((size( | |
539 | - | then throw( | |
539 | + | else if ((bS == N)) | |
540 | + | then if ((size(bU) != 20)) | |
541 | + | then throw(S) | |
540 | 542 | else true | |
541 | - | else throw(( | |
543 | + | else throw((S + ": inv alg")) | |
542 | 544 | ||
543 | 545 | ||
544 | - | func bU (bj,bQ,bT,bR,R) = { | |
545 | - | let bV = if ((bR == M)) | |
546 | - | then sigVerify(bj, bQ, bT) | |
547 | - | else if ((bR == N)) | |
546 | + | func bV (bk,bR,bU,bS,S) = { | |
547 | + | let bW = if ((bS == M)) | |
548 | + | then { | |
549 | + | let bX = keccak256_16Kb((O + toBytes(toBase58String(bk)))) | |
550 | + | sigVerify(bX, bR, bU) | |
551 | + | } | |
552 | + | else if ((bS == N)) | |
548 | 553 | then { | |
549 | - | let | |
550 | - | (takeRight(keccak256_16Kb(ecrecover( | |
554 | + | let bX = keccak256_16Kb((P + bk)) | |
555 | + | (takeRight(keccak256_16Kb(ecrecover(bX, bR)), 20) == bU) | |
551 | 556 | } | |
552 | - | else throw(( | |
553 | - | if (!( | |
554 | - | then throw( | |
557 | + | else throw((S + ": inv alg")) | |
558 | + | if (!(bW)) | |
559 | + | then throw(S) | |
555 | 560 | else true | |
556 | 561 | } | |
557 | 562 | ||
558 | 563 | ||
559 | - | func | |
560 | - | let | |
561 | - | then toString(addressFromPublicKey( | |
562 | - | else if (( | |
563 | - | then ("0x" + toBase16String( | |
564 | - | else throw(( | |
565 | - | if (( | |
566 | - | then throw( | |
564 | + | func bY (bU,bZ,bS,S) = { | |
565 | + | let ca = if ((bS == M)) | |
566 | + | then toString(addressFromPublicKey(bU)) | |
567 | + | else if ((bS == N)) | |
568 | + | then ("0x" + toBase16String(bU)) | |
569 | + | else throw((S + ": inv alg")) | |
570 | + | if ((ca != bZ)) | |
571 | + | then throw(S) | |
567 | 572 | else true | |
568 | 573 | } | |
569 | 574 | ||
570 | 575 | ||
571 | - | @Callable(ca) | |
572 | - | func init (aw,am,az,aC,bh,bo) = { | |
573 | - | let cb = if (if (if (if (if (if (if (if (bv(ca.caller)) | |
576 | + | @Callable(cb) | |
577 | + | func init (ax,an,aA,aD,bi,bp) = { | |
578 | + | let cc = if (if (if (if (if (if (if (if (bw(cb.caller)) | |
579 | + | then bz() | |
580 | + | else false) | |
574 | 581 | then by() | |
575 | 582 | else false) | |
576 | - | then | |
583 | + | then Q(ax, "init: invalid executor") | |
577 | 584 | else false) | |
578 | - | then | |
585 | + | then Q(an, "init: invalid pauser") | |
579 | 586 | else false) | |
580 | - | then | |
587 | + | then Q(aA, "init: invalid accountStorage") | |
581 | 588 | else false) | |
582 | - | then | |
589 | + | then Q(aD, "init: invalid wavesVault") | |
583 | 590 | else false) | |
584 | - | then | |
591 | + | then Q(bi, "init: invalid sequencer") | |
585 | 592 | else false) | |
586 | - | then P(bh, "init: invalid sequencer") | |
587 | - | else false) | |
588 | - | then P(bo, "init: invalid vaultAdapter") | |
593 | + | then Q(bp, "init: invalid vaultAdapter") | |
589 | 594 | else false | |
590 | - | if (( | |
591 | - | then $Tuple2((((((( | |
595 | + | if ((cc == cc)) | |
596 | + | then $Tuple2(((((((ag(true) ++ aw(addressFromStringValue(ax))) ++ am(addressFromStringValue(an))) ++ az(addressFromStringValue(aA))) ++ aC(addressFromStringValue(aD))) ++ bh(addressFromStringValue(bi))) ++ bo(addressFromStringValue(bp))), unit) | |
592 | 597 | else throw("Strict value is not equal to itself.") | |
593 | 598 | } | |
594 | 599 | ||
595 | 600 | ||
596 | 601 | ||
597 | - | @Callable( | |
598 | - | func deposit ( | |
599 | - | let | |
600 | - | let | |
601 | - | let | |
602 | - | then | |
602 | + | @Callable(cb) | |
603 | + | func deposit (au,bZ,cd,as,aI,aT) = { | |
604 | + | let ce = valueOrErrorMessage(parseInt(as), "deposit: chainId not int") | |
605 | + | let cf = valueOrErrorMessage(parseBigInt(aT), "deposit: amount not int") | |
606 | + | let cc = if (if (if (if (if (if (bA()) | |
607 | + | then bB() | |
603 | 608 | else false) | |
604 | - | then | |
609 | + | then bG(ce, "deposit: invalid chainId") | |
605 | 610 | else false) | |
606 | - | then | |
611 | + | then ab(bZ, "deposit: invalid from") | |
607 | 612 | else false) | |
608 | - | then | |
613 | + | then ab(cd, "deposit: invalid to") | |
609 | 614 | else false) | |
610 | - | then | |
615 | + | then bI(ce, aI, "deposit: invalid asset") | |
611 | 616 | else false) | |
612 | - | then | |
617 | + | then Z(cf, J, "deposit: invalid amount") | |
613 | 618 | else false | |
614 | - | if (( | |
619 | + | if ((cc == cc)) | |
615 | 620 | then { | |
616 | - | let | |
617 | - | then | |
618 | - | else if ( | |
619 | - | then | |
621 | + | let cg = if ((aE(ce) == G)) | |
622 | + | then bK(cb.caller, "deposit: invalid waves vault") | |
623 | + | else if (bE(cb.caller, "deposit: invalid executor")) | |
624 | + | then bF(ce, au, "deposit: invalid caller contract") | |
620 | 625 | else false | |
621 | - | if (( | |
626 | + | if ((cg == cg)) | |
622 | 627 | then { | |
623 | - | let | |
624 | - | let | |
625 | - | let | |
626 | - | let | |
627 | - | if (( | |
628 | - | then $Tuple2(( | |
628 | + | let ch = (aL(ce, aI) + cf) | |
629 | + | let ci = aH(ce, aI) | |
630 | + | let cj = (aU(ci) + cf) | |
631 | + | let ck = invoke(ay(), y, [cd, ci, aT], nil) | |
632 | + | if ((ck == ck)) | |
633 | + | then $Tuple2((aM(ce, aI, ch) ++ aV(ci, cj)), unit) | |
629 | 634 | else throw("Strict value is not equal to itself.") | |
630 | 635 | } | |
631 | 636 | else throw("Strict value is not equal to itself.") | |
635 | 640 | ||
636 | 641 | ||
637 | 642 | ||
638 | - | @Callable( | |
639 | - | func requestWithdrawal ( | |
640 | - | let | |
641 | - | let | |
642 | - | let | |
643 | - | let | |
644 | - | then | |
643 | + | @Callable(cb) | |
644 | + | func requestWithdrawal (au,bZ,cd,cl,cm,aI,aT) = { | |
645 | + | let cn = valueOrErrorMessage(parseInt(cl), "requestWithdrawal: fromChainId not int") | |
646 | + | let co = valueOrErrorMessage(parseInt(cm), "requestWithdrawal: toChainId not int") | |
647 | + | let cf = valueOrErrorMessage(parseBigInt(aT), "requestWithdrawal: amount not int") | |
648 | + | let cc = if (if (if (if (if (if (bA()) | |
649 | + | then bG(cn, "requestWithdrawal: invalid fromChainId") | |
645 | 650 | else false) | |
646 | - | then | |
651 | + | then bG(co, "requestWithdrawal: invalid toChainId") | |
647 | 652 | else false) | |
648 | - | then | |
653 | + | then ab(bZ, "requestWithdrawal: invalid from") | |
649 | 654 | else false) | |
650 | - | then | |
655 | + | then ab(cd, "requestWithdrawal: invalid to") | |
651 | 656 | else false) | |
652 | - | then | |
657 | + | then bI(co, aI, "requestWithdrawal: invalid asset") | |
653 | 658 | else false) | |
654 | - | then | |
659 | + | then Z(cf, J, "requestWithdrawal: invalid amount") | |
655 | 660 | else false | |
656 | - | if (( | |
661 | + | if ((cc == cc)) | |
657 | 662 | then { | |
658 | - | let | |
659 | - | then | |
660 | - | else if ( | |
661 | - | then | |
663 | + | let cg = if ((aE(cn) == G)) | |
664 | + | then bK(cb.caller, "requestWithdrawal: invalid waves vault") | |
665 | + | else if (bE(cb.caller, "requestWithdrawal: invalid executor")) | |
666 | + | then bF(cn, au, "requestWithdrawal: invalid caller contract") | |
662 | 667 | else false | |
663 | - | if (( | |
668 | + | if ((cg == cg)) | |
664 | 669 | then { | |
665 | - | let | |
666 | - | let | |
667 | - | let | |
668 | - | if ($isInstanceOf( | |
670 | + | let ci = aH(co, aI) | |
671 | + | let cp = { | |
672 | + | let T = invoke(ay(), z, [bZ, H, ci], nil) | |
673 | + | if ($isInstanceOf(T, "String")) | |
669 | 674 | then { | |
670 | - | let | |
671 | - | parseBigIntValue( | |
675 | + | let U = T | |
676 | + | parseBigIntValue(U) | |
672 | 677 | } | |
673 | 678 | else throw("requestWithdrawal: can't take available balance from storage") | |
674 | 679 | } | |
675 | - | if (( | |
680 | + | if ((cp == cp)) | |
676 | 681 | then { | |
677 | - | let | |
678 | - | let | |
679 | - | let | |
680 | - | then (( | |
682 | + | let cq = aO(co, aI) | |
683 | + | let cr = aQ(ci, bZ) | |
684 | + | let cs = if (if (((cp - cr) >= cf)) | |
685 | + | then ((aL(co, aI) - cq) >= cf) | |
681 | 686 | else false) | |
682 | - | then $Tuple2(D, ( | |
687 | + | then $Tuple2(D, (aP(co, aI, (cq + cf)) ++ aS(ci, bZ, (cf + cr)))) | |
683 | 688 | else $Tuple2(F, nil) | |
684 | - | let | |
685 | - | let | |
686 | - | let | |
687 | - | let | |
688 | - | $Tuple2((( | |
689 | + | let ct = cs._1 | |
690 | + | let cu = cs._2 | |
691 | + | let cv = aW() | |
692 | + | let cw = $Tuple8(bZ, cd, co, aI, cf, height, toBase58String(cb.transactionId), ct) | |
693 | + | $Tuple2(((bb(cv, cw) ++ aX((cv + 1))) ++ cu), cv) | |
689 | 694 | } | |
690 | 695 | else throw("Strict value is not equal to itself.") | |
691 | 696 | } | |
696 | 701 | ||
697 | 702 | ||
698 | 703 | ||
699 | - | @Callable( | |
700 | - | func executeWithdrawal ( | |
701 | - | let | |
702 | - | let | |
703 | - | let | |
704 | - | let | |
705 | - | then | |
704 | + | @Callable(cb) | |
705 | + | func executeWithdrawal (au,as,cx) = { | |
706 | + | let ce = valueOrErrorMessage(parseInt(as), "executeWithdrawal: chainId not int") | |
707 | + | let cy = valueOrErrorMessage(parseInt(cx), "executeWithdrawal: requestWithdrawalId not int") | |
708 | + | let cv = aW() | |
709 | + | let cc = if (if (bA()) | |
710 | + | then bG(ce, "executeWithdrawal: invalid chainId") | |
706 | 711 | else false) | |
707 | - | then | |
712 | + | then V(cy, 0, (cv - 1), "executeWithdrawal: invalid requestWithdrawalId") | |
708 | 713 | else false | |
709 | - | if (( | |
714 | + | if ((cc == cc)) | |
710 | 715 | then { | |
711 | - | let | |
712 | - | then | |
713 | - | else if ( | |
714 | - | then | |
716 | + | let cg = if ((aE(ce) == G)) | |
717 | + | then bK(cb.caller, "executeWithdrawal: invalid waves vault") | |
718 | + | else if (bE(cb.caller, "executeWithdrawal: invalid executor")) | |
719 | + | then bF(ce, au, "executeWithdrawal: invalid caller contract") | |
715 | 720 | else false | |
716 | - | if (( | |
721 | + | if ((cg == cg)) | |
717 | 722 | then { | |
718 | - | let | |
719 | - | let | |
720 | - | let | |
721 | - | let | |
722 | - | let | |
723 | - | let | |
724 | - | let | |
725 | - | let | |
726 | - | let | |
727 | - | let | |
728 | - | let | |
729 | - | let | |
730 | - | let | |
731 | - | let | |
732 | - | then | |
723 | + | let cz = aY(cy) | |
724 | + | let cA = cz._1 | |
725 | + | let cB = cz._2 | |
726 | + | let cC = cz._3 | |
727 | + | let cD = cz._4 | |
728 | + | let cE = cz._5 | |
729 | + | let cF = cz._6 | |
730 | + | let ct = cz._8 | |
731 | + | let ch = (aL(cC, cD) - cE) | |
732 | + | let cG = (aO(cC, cD) - cE) | |
733 | + | let ci = aH(cC, cD) | |
734 | + | let cj = (aU(ci) - cE) | |
735 | + | let cH = (aQ(ci, cA) - cE) | |
736 | + | let cI = if (if (if (if (if (Z(ch, J, "executeWithdrawal: negative newAssetReserves")) | |
737 | + | then Z(cG, J, "executeWithdrawal: negative newAssetReservesLocked") | |
733 | 738 | else false) | |
734 | - | then | |
739 | + | then Z(cj, J, "executeWithdrawal: negative newCurrencyReserves") | |
735 | 740 | else false) | |
736 | - | then | |
741 | + | then Z(cH, J, "executeWithdrawal: negative newUserLockedCurrency") | |
737 | 742 | else false) | |
738 | - | then | |
743 | + | then V((height - cF), bd(), I, "executeWithdrawal: too early to execute") | |
739 | 744 | else false) | |
740 | - | then | |
745 | + | then bM(ct, "executeWithdrawal: request is resolved") | |
741 | 746 | else false | |
742 | - | if (( | |
747 | + | if ((cI == cI)) | |
743 | 748 | then { | |
744 | - | let | |
745 | - | if (( | |
749 | + | let cJ = invoke(ay(), B, [cA, ci, toString(cE)], nil) | |
750 | + | if ((cJ == cJ)) | |
746 | 751 | then { | |
747 | - | let | |
748 | - | then invoke( | |
749 | - | else invoke( | |
750 | - | if (( | |
752 | + | let cK = if ((aE(cC) == G)) | |
753 | + | then invoke(aB(), B, [cB, cD, toString(cE)], nil) | |
754 | + | else invoke(bn(), B, [cC, cD, toString(cE), cB], nil) | |
755 | + | if ((cK == cK)) | |
751 | 756 | then { | |
752 | - | let | |
753 | - | $Tuple2((((( | |
757 | + | let cL = $Tuple8(cz._1, cz._2, cz._3, cz._4, cz._5, cz._6, cz._7, E) | |
758 | + | $Tuple2(((((aM(cC, cD, ch) ++ aP(cC, cD, cG)) ++ aV(ci, cj)) ++ aS(ci, cA, cH)) ++ bb(cy, cL)), unit) | |
754 | 759 | } | |
755 | 760 | else throw("Strict value is not equal to itself.") | |
756 | 761 | } | |
765 | 770 | ||
766 | 771 | ||
767 | 772 | ||
768 | - | @Callable( | |
769 | - | func rejectWithdrawal ( | |
770 | - | let | |
771 | - | let | |
772 | - | let | |
773 | - | then | |
773 | + | @Callable(cb) | |
774 | + | func rejectWithdrawal (cx) = { | |
775 | + | let cy = valueOrErrorMessage(parseInt(cx), "rejectWithdrawal: requestWithdrawalId not int") | |
776 | + | let cv = aW() | |
777 | + | let cc = if (if (bA()) | |
778 | + | then bO(cb.caller, "rejectWithdrawal: invalid sequencer") | |
774 | 779 | else false) | |
775 | - | then | |
780 | + | then V(cy, 0, (cv - 1), "rejectWithdrawal: invalid requestWithdrawalId") | |
776 | 781 | else false | |
777 | - | if (( | |
782 | + | if ((cc == cc)) | |
778 | 783 | then { | |
779 | - | let | |
780 | - | let | |
781 | - | let | |
782 | - | let | |
783 | - | let | |
784 | - | let | |
785 | - | let | |
786 | - | let | |
787 | - | let | |
788 | - | let | |
789 | - | let | |
790 | - | let | |
791 | - | then | |
784 | + | let cz = aY(cy) | |
785 | + | let cA = cz._1 | |
786 | + | let cB = cz._2 | |
787 | + | let cC = cz._3 | |
788 | + | let cD = cz._4 | |
789 | + | let cE = cz._5 | |
790 | + | let cF = cz._6 | |
791 | + | let ct = cz._8 | |
792 | + | let ci = aH(cC, cD) | |
793 | + | let cG = (aO(cC, cD) - cE) | |
794 | + | let cH = (aQ(ci, cA) - cE) | |
795 | + | let cg = if (if (Z(cG, J, "rejectWithdrawal: negative newAssetReservesLocked")) | |
796 | + | then Z(cH, J, "rejectWithdrawal: negative newUserLockedCurrency") | |
792 | 797 | else false) | |
793 | - | then | |
798 | + | then bM(ct, "rejectWithdrawal: request is resolved") | |
794 | 799 | else false | |
795 | - | if (( | |
800 | + | if ((cg == cg)) | |
796 | 801 | then { | |
797 | - | let | |
798 | - | let | |
799 | - | if ($isInstanceOf( | |
802 | + | let cp = { | |
803 | + | let T = invoke(ay(), z, [cA, H, ci], nil) | |
804 | + | if ($isInstanceOf(T, "String")) | |
800 | 805 | then { | |
801 | - | let | |
802 | - | parseBigIntValue( | |
806 | + | let U = T | |
807 | + | parseBigIntValue(U) | |
803 | 808 | } | |
804 | 809 | else throw("rejectWithdrawal: can't take available balance from storage") | |
805 | 810 | } | |
806 | - | if (( | |
807 | - | then if (( | |
811 | + | if ((cp == cp)) | |
812 | + | then if ((cE > cp)) | |
808 | 813 | then { | |
809 | - | let | |
810 | - | $Tuple2((( | |
814 | + | let cL = $Tuple8(cz._1, cz._2, cz._3, cz._4, cz._5, cz._6, cz._7, F) | |
815 | + | $Tuple2(((aP(cC, cD, cG) ++ aS(ci, cA, cH)) ++ bb(cy, cL)), true) | |
811 | 816 | } | |
812 | 817 | else $Tuple2(nil, false) | |
813 | 818 | else throw("Strict value is not equal to itself.") | |
819 | 824 | ||
820 | 825 | ||
821 | 826 | ||
822 | - | @Callable( | |
823 | - | func withdraw ( | |
824 | - | let | |
825 | - | let | |
826 | - | let | |
827 | - | let | |
828 | - | let | |
829 | - | let | |
830 | - | let | |
831 | - | let | |
832 | - | then | |
827 | + | @Callable(cb) | |
828 | + | func withdraw (bZ,cd,cm,aI,aT,cM,cN,bU,bS,bR) = { | |
829 | + | let co = valueOrErrorMessage(parseInt(cm), "withdraw: toChainId not int") | |
830 | + | let cf = valueOrErrorMessage(parseBigInt(aT), "withdraw: amount not int") | |
831 | + | let cO = valueOrErrorMessage(parseBigInt(cM), "withdraw: relayerFee not int") | |
832 | + | let cP = valueOrErrorMessage(parseInt(cN), "withdraw: timestamp not int") | |
833 | + | let cQ = valueOrErrorMessage(parseInt(bS), "withdraw: alg not int") | |
834 | + | let cR = fromBase58String(bU) | |
835 | + | let cS = fromBase58String(bR) | |
836 | + | let cc = if (if (if (if (if (if (if (if (if (if (if (bA()) | |
837 | + | then bO(cb.caller, "withdraw: invalid sequencer") | |
833 | 838 | else false) | |
834 | - | then | |
839 | + | then ab(bZ, "withdraw: invalid from") | |
835 | 840 | else false) | |
836 | - | then | |
841 | + | then ab(cd, "withdraw: invalid to") | |
837 | 842 | else false) | |
838 | - | then | |
843 | + | then bG(co, "withdraw: invalid toChainId") | |
839 | 844 | else false) | |
840 | - | then | |
845 | + | then bI(co, aI, "withdraw: invalid asset") | |
841 | 846 | else false) | |
842 | - | then | |
847 | + | then Z(cf, J, "withdraw: invalid amount") | |
843 | 848 | else false) | |
844 | - | then | |
849 | + | then aa(cO, J, cf, "withdraw: invalid relayerFee") | |
845 | 850 | else false) | |
846 | - | then | |
851 | + | then V((cP + L), lastBlock.timestamp, I, "withdraw: invalid timestamp") | |
847 | 852 | else false) | |
848 | - | then | |
853 | + | then bT(cR, cQ, "withdraw: inv web3Id") | |
849 | 854 | else false) | |
850 | - | then | |
855 | + | then bQ(cS, cQ, "withdraw: inv sig format") | |
851 | 856 | else false) | |
852 | - | then | |
857 | + | then bY(cR, bZ, cQ, "withdraw: web3Id mismatch") | |
853 | 858 | else false | |
854 | - | if (( | |
859 | + | if ((cc == cc)) | |
855 | 860 | then { | |
856 | - | let | |
857 | - | let | |
858 | - | let | |
859 | - | let | |
860 | - | let | |
861 | - | if ($isInstanceOf( | |
861 | + | let cT = (((((((((((toBytes(size(bZ)) + toBytes(bZ)) + toBytes(size(cd))) + toBytes(cd)) + toBytes(co)) + toBytes(size(aI))) + toBytes(aI)) + toBytes(cf)) + toBytes(cO)) + toBytes(cP)) + cR) + toBytes(cQ)) | |
862 | + | let cU = keccak256_16Kb(cT) | |
863 | + | let ci = aH(co, aI) | |
864 | + | let cp = { | |
865 | + | let T = invoke(ay(), z, [bZ, H, ci], nil) | |
866 | + | if ($isInstanceOf(T, "String")) | |
862 | 867 | then { | |
863 | - | let | |
864 | - | parseBigIntValue( | |
868 | + | let U = T | |
869 | + | parseBigIntValue(U) | |
865 | 870 | } | |
866 | 871 | else throw("withdraw: can't take available balance from storage") | |
867 | 872 | } | |
868 | - | if (( | |
873 | + | if ((cp == cp)) | |
869 | 874 | then { | |
870 | - | let | |
871 | - | let | |
872 | - | let | |
873 | - | let | |
874 | - | let | |
875 | - | then | |
875 | + | let cV = aL(co, aI) | |
876 | + | let cq = aO(co, aI) | |
877 | + | let cW = (cf - cO) | |
878 | + | let cX = toString(cW) | |
879 | + | let cg = if (if (if (bV(cU, cS, cR, cQ, "withdraw: invalid sig")) | |
880 | + | then bP(cU, "withdraw: already executed") | |
876 | 881 | else false) | |
877 | - | then | |
882 | + | then Z(cp, cW, "withdraw: insufficient balance") | |
878 | 883 | else false) | |
879 | - | then | |
884 | + | then Z((cV - cq), cW, "withdraw: insufficient reserves") | |
880 | 885 | else false | |
881 | - | if (( | |
886 | + | if ((cg == cg)) | |
882 | 887 | then { | |
883 | - | let | |
884 | - | let | |
885 | - | let | |
886 | - | then | |
888 | + | let ch = (cV - cW) | |
889 | + | let cj = (aU(ci) - cW) | |
890 | + | let cI = if (Z(ch, J, "withdraw: negative newAssetReserves")) | |
891 | + | then Z(cj, J, "withdraw: negative newCurrencyReserves") | |
887 | 892 | else false | |
888 | - | if (( | |
893 | + | if ((cI == cI)) | |
889 | 894 | then { | |
890 | - | let | |
891 | - | if (( | |
895 | + | let cY = invoke(ay(), B, [bZ, ci, aT], nil) | |
896 | + | if ((cY == cY)) | |
892 | 897 | then { | |
893 | - | let | |
894 | - | if (( | |
898 | + | let cZ = invoke(ay(), y, [bt(), ci, cM], nil) | |
899 | + | if ((cZ == cZ)) | |
895 | 900 | then { | |
896 | - | let | |
897 | - | then invoke( | |
898 | - | else invoke( | |
899 | - | if (( | |
900 | - | then $Tuple2((( | |
901 | + | let cK = if ((aE(co) == G)) | |
902 | + | then invoke(aB(), B, [cd, aI, cX], nil) | |
903 | + | else invoke(bn(), B, [co, aI, cX, cd, cM], nil) | |
904 | + | if ((cK == cK)) | |
905 | + | then $Tuple2(((aM(co, aI, ch) ++ aV(ci, cj)) ++ bl(cU, toBase58String(cb.transactionId))), unit) | |
901 | 906 | else throw("Strict value is not equal to itself.") | |
902 | 907 | } | |
903 | 908 | else throw("Strict value is not equal to itself.") | |
915 | 920 | ||
916 | 921 | ||
917 | 922 | ||
918 | - | @Callable( | |
919 | - | func depositStakingReward ( | |
920 | - | let | |
921 | - | let | |
922 | - | let | |
923 | - | then | |
923 | + | @Callable(cb) | |
924 | + | func depositStakingReward (au,as,aI,aT) = { | |
925 | + | let ce = valueOrErrorMessage(parseInt(as), "depositStakingReward: chainId not int") | |
926 | + | let cf = valueOrErrorMessage(parseBigInt(aT), "depositStakingReward: amount not int") | |
927 | + | let cc = if (if (if (if (bA()) | |
928 | + | then bB() | |
924 | 929 | else false) | |
925 | - | then | |
930 | + | then bG(ce, "depositStakingReward: invalid chainId") | |
926 | 931 | else false) | |
927 | - | then | |
932 | + | then bI(ce, aI, "depositStakingReward: invalid asset") | |
928 | 933 | else false) | |
929 | - | then | |
934 | + | then Z(cf, J, "depositStakingReward: invalid amount") | |
930 | 935 | else false | |
931 | - | if (( | |
936 | + | if ((cc == cc)) | |
932 | 937 | then { | |
933 | - | let | |
934 | - | then | |
935 | - | else if ( | |
936 | - | then | |
938 | + | let cg = if ((aE(ce) == G)) | |
939 | + | then bK(cb.caller, "depositStakingReward: invalid waves vault") | |
940 | + | else if (bE(cb.caller, "depositStakingReward: invalid executor")) | |
941 | + | then bF(ce, au, "depositStakingReward: invalid caller contract") | |
937 | 942 | else false | |
938 | - | if (( | |
943 | + | if ((cg == cg)) | |
939 | 944 | then { | |
940 | - | let | |
941 | - | let | |
942 | - | let | |
943 | - | let | |
944 | - | if (( | |
945 | - | then $Tuple2(( | |
945 | + | let ch = (aL(ce, aI) + cf) | |
946 | + | let ci = aH(ce, aI) | |
947 | + | let cj = (aU(ci) + cf) | |
948 | + | let ck = invoke(ay(), C, [bq(), ci, aT], nil) | |
949 | + | if ((ck == ck)) | |
950 | + | then $Tuple2((aM(ce, aI, ch) ++ aV(ci, cj)), unit) | |
946 | 951 | else throw("Strict value is not equal to itself.") | |
947 | 952 | } | |
948 | 953 | else throw("Strict value is not equal to itself.") | |
952 | 957 | ||
953 | 958 | ||
954 | 959 | ||
955 | - | @Callable( | |
956 | - | func addChain ( | |
957 | - | let | |
958 | - | then | |
960 | + | @Callable(cb) | |
961 | + | func addChain (as,aG,au) = { | |
962 | + | let cc = if (if (if (if (if (bw(cb.caller)) | |
963 | + | then bA() | |
959 | 964 | else false) | |
960 | - | then | |
965 | + | then V(as, 0, I, "addChain: invalid chainId") | |
961 | 966 | else false) | |
962 | - | then | |
967 | + | then ab(aG, "addChain: invalid name") | |
963 | 968 | else false) | |
964 | - | then | |
969 | + | then ab(au, "addChain: invalid callerContract") | |
965 | 970 | else false) | |
966 | - | then | |
971 | + | then bH(as, "addChain: already exists") | |
967 | 972 | else false | |
968 | - | if (( | |
969 | - | then $Tuple2(( | |
973 | + | if ((cc == cc)) | |
974 | + | then $Tuple2((aF(as, aG) ++ at(as, au)), unit) | |
970 | 975 | else throw("Strict value is not equal to itself.") | |
971 | 976 | } | |
972 | 977 | ||
973 | 978 | ||
974 | 979 | ||
975 | - | @Callable( | |
976 | - | func addAsset ( | |
977 | - | let | |
978 | - | then | |
980 | + | @Callable(cb) | |
981 | + | func addAsset (as,aI,aK) = { | |
982 | + | let cc = if (if (if (if (if (bw(cb.caller)) | |
983 | + | then bA() | |
979 | 984 | else false) | |
980 | - | then | |
985 | + | then bG(as, "addAsset: invalid chainId") | |
981 | 986 | else false) | |
982 | - | then | |
987 | + | then ab(aI, "addAsset: invalid asset") | |
983 | 988 | else false) | |
984 | - | then | |
989 | + | then ab(aK, "addAsset: invalid currency") | |
985 | 990 | else false) | |
986 | - | then | |
991 | + | then bJ(as, aI, "addAsset: already exists") | |
987 | 992 | else false | |
988 | - | if (( | |
989 | - | then $Tuple2( | |
993 | + | if ((cc == cc)) | |
994 | + | then $Tuple2(aJ(as, aI, aK), unit) | |
990 | 995 | else throw("Strict value is not equal to itself.") | |
991 | 996 | } | |
992 | 997 | ||
993 | 998 | ||
994 | 999 | ||
995 | - | @Callable( | |
996 | - | func setRequestWithdrawalBlockDelay ( | |
997 | - | let | |
998 | - | then | |
1000 | + | @Callable(cb) | |
1001 | + | func setRequestWithdrawalBlockDelay (bf) = { | |
1002 | + | let cc = if (if (bw(cb.caller)) | |
1003 | + | then bA() | |
999 | 1004 | else false) | |
1000 | - | then | |
1005 | + | then V(bf, 0, I, "setRequestWithdrawalBlockDelay: invalid delay") | |
1001 | 1006 | else false | |
1002 | - | if (( | |
1003 | - | then $Tuple2( | |
1007 | + | if ((cc == cc)) | |
1008 | + | then $Tuple2(be(bf), unit) | |
1004 | 1009 | else throw("Strict value is not equal to itself.") | |
1005 | 1010 | } | |
1006 | 1011 | ||
1007 | 1012 | ||
1008 | 1013 | ||
1009 | - | @Callable( | |
1010 | - | func updateRewardDistributor ( | |
1011 | - | let | |
1012 | - | then | |
1014 | + | @Callable(cb) | |
1015 | + | func updateRewardDistributor (da) = { | |
1016 | + | let cc = if (if (bw(cb.caller)) | |
1017 | + | then bA() | |
1013 | 1018 | else false) | |
1014 | - | then | |
1019 | + | then ab(da, "updateRewardDistributor: invalid rewardDistributor") | |
1015 | 1020 | else false | |
1016 | - | if (( | |
1017 | - | then $Tuple2( | |
1021 | + | if ((cc == cc)) | |
1022 | + | then $Tuple2(br(da), unit) | |
1018 | 1023 | else throw("Strict value is not equal to itself.") | |
1019 | 1024 | } | |
1020 | 1025 | ||
1021 | 1026 | ||
1022 | 1027 | ||
1023 | - | @Callable( | |
1024 | - | func updateRelayerFeeRecipient ( | |
1025 | - | let | |
1026 | - | then | |
1028 | + | @Callable(cb) | |
1029 | + | func updateRelayerFeeRecipient (bv) = { | |
1030 | + | let cc = if (if (bw(cb.caller)) | |
1031 | + | then bA() | |
1027 | 1032 | else false) | |
1028 | - | then | |
1033 | + | then ab(bv, "updateRelayerFeeRecipient: invalid relayerFeeRecipient") | |
1029 | 1034 | else false | |
1030 | - | if (( | |
1031 | - | then $Tuple2( | |
1035 | + | if ((cc == cc)) | |
1036 | + | then $Tuple2(bu(bv), unit) | |
1032 | 1037 | else throw("Strict value is not equal to itself.") | |
1033 | 1038 | } | |
1034 | 1039 | ||
1035 | 1040 | ||
1036 | 1041 | ||
1037 | - | @Callable( | |
1042 | + | @Callable(cb) | |
1038 | 1043 | func pause () = { | |
1039 | - | let | |
1040 | - | then | |
1044 | + | let cc = if (if (bD(cb.caller)) | |
1045 | + | then bA() | |
1041 | 1046 | else false) | |
1042 | - | then | |
1047 | + | then bB() | |
1043 | 1048 | else false | |
1044 | - | if (( | |
1045 | - | then $Tuple2( | |
1049 | + | if ((cc == cc)) | |
1050 | + | then $Tuple2(aj(true), unit) | |
1046 | 1051 | else throw("Strict value is not equal to itself.") | |
1047 | 1052 | } | |
1048 | 1053 | ||
1049 | 1054 | ||
1050 | 1055 | ||
1051 | - | @Callable( | |
1056 | + | @Callable(cb) | |
1052 | 1057 | func unpause () = { | |
1053 | - | let | |
1054 | - | then | |
1058 | + | let cc = if (if (bD(cb.caller)) | |
1059 | + | then bA() | |
1055 | 1060 | else false) | |
1056 | - | then | |
1061 | + | then bC() | |
1057 | 1062 | else false | |
1058 | - | if (( | |
1059 | - | then $Tuple2( | |
1063 | + | if ((cc == cc)) | |
1064 | + | then $Tuple2(aj(false), unit) | |
1060 | 1065 | else throw("Strict value is not equal to itself.") | |
1061 | 1066 | } | |
1062 | 1067 | ||
1063 | 1068 | ||
1064 | 1069 | ||
1065 | - | @Callable( | |
1066 | - | func updatePauser ( | |
1067 | - | let | |
1068 | - | then | |
1070 | + | @Callable(cb) | |
1071 | + | func updatePauser (an) = { | |
1072 | + | let cc = if (if (bw(cb.caller)) | |
1073 | + | then bA() | |
1069 | 1074 | else false) | |
1070 | - | then | |
1075 | + | then Q(an, "updatePauser: invalid pauser") | |
1071 | 1076 | else false | |
1072 | - | if (( | |
1073 | - | then $Tuple2( | |
1077 | + | if ((cc == cc)) | |
1078 | + | then $Tuple2(am(addressFromStringValue(an)), unit) | |
1074 | 1079 | else throw("Strict value is not equal to itself.") | |
1075 | 1080 | } | |
1076 | 1081 | ||
1077 | 1082 | ||
1078 | 1083 | ||
1079 | - | @Callable( | |
1080 | - | func setMultisig ( | |
1081 | - | let | |
1082 | - | then | |
1084 | + | @Callable(cb) | |
1085 | + | func setMultisig (aq) = { | |
1086 | + | let cc = if (bw(cb.caller)) | |
1087 | + | then Q(aq, "setMultisig: invalid multisig") | |
1083 | 1088 | else false | |
1084 | - | if (( | |
1085 | - | then $Tuple2( | |
1089 | + | if ((cc == cc)) | |
1090 | + | then $Tuple2(ap(addressFromStringValue(aq)), unit) | |
1086 | 1091 | else throw("Strict value is not equal to itself.") | |
1087 | 1092 | } | |
1088 | 1093 | ||
1089 | 1094 | ||
1090 | - | @Verifier( | |
1091 | - | func | |
1092 | - | let | |
1093 | - | if ($isInstanceOf( | |
1095 | + | @Verifier(db) | |
1096 | + | func dc () = { | |
1097 | + | let T = getString(b) | |
1098 | + | if ($isInstanceOf(T, "String")) | |
1094 | 1099 | then { | |
1095 | - | let | |
1096 | - | valueOrElse(getBoolean(addressFromStringValue( | |
1100 | + | let dd = T | |
1101 | + | valueOrElse(getBoolean(addressFromStringValue(dd), makeString([c, toString(this), toBase58String(db.id)], a)), false) | |
1097 | 1102 | } | |
1098 | - | else sigVerify( | |
1103 | + | else sigVerify(db.bodyBytes, db.proofs[0], db.senderPublicKey) | |
1099 | 1104 | } | |
1100 | 1105 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 7 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "__" | |
5 | 5 | ||
6 | 6 | let b = "MULTISIG" | |
7 | 7 | ||
8 | 8 | let c = "STATUS" | |
9 | 9 | ||
10 | 10 | let d = "INIT" | |
11 | 11 | ||
12 | 12 | let e = "PAUSED" | |
13 | 13 | ||
14 | 14 | let f = "PAUSER" | |
15 | 15 | ||
16 | 16 | let g = "EXECUTOR" | |
17 | 17 | ||
18 | 18 | let h = "CALLER_CONTRACT" | |
19 | 19 | ||
20 | 20 | let i = "WAVES_VAULT" | |
21 | 21 | ||
22 | 22 | let j = "ACCOUNT_STORAGE" | |
23 | 23 | ||
24 | 24 | let k = "CHAIN" | |
25 | 25 | ||
26 | 26 | let l = "ASSET_CURRENCY" | |
27 | 27 | ||
28 | 28 | let m = "ASSET_RESERVES" | |
29 | 29 | ||
30 | 30 | let n = "ASSET_RESERVES_LOCKED" | |
31 | 31 | ||
32 | 32 | let o = "USER_LOCKED_CURRENCY" | |
33 | 33 | ||
34 | 34 | let p = "CURRENCY_RESERVES" | |
35 | 35 | ||
36 | 36 | let q = "REQUEST_WITHDRAWAL_SIZE" | |
37 | 37 | ||
38 | 38 | let r = "REQUEST_WITHDRAWAL" | |
39 | 39 | ||
40 | 40 | let s = "REQUEST_WITHDRAWAL_BLOCK_DELAY" | |
41 | 41 | ||
42 | 42 | let t = "SEQUENCER" | |
43 | 43 | ||
44 | 44 | let u = "WITHDRAWAL_HASH" | |
45 | 45 | ||
46 | 46 | let v = "VAULT_ADAPTER" | |
47 | 47 | ||
48 | 48 | let w = "REWARD_DISTRIBUTOR" | |
49 | 49 | ||
50 | 50 | let x = "RELAYER_FEE_RECIPIENT" | |
51 | 51 | ||
52 | 52 | let y = "deposit" | |
53 | 53 | ||
54 | 54 | let z = "getUserBalance" | |
55 | 55 | ||
56 | 56 | let A = "internalTransfer" | |
57 | 57 | ||
58 | 58 | let B = "withdraw" | |
59 | 59 | ||
60 | 60 | let C = "depositStakingReward" | |
61 | 61 | ||
62 | 62 | let D = 0 | |
63 | 63 | ||
64 | 64 | let E = 1 | |
65 | 65 | ||
66 | 66 | let F = 2 | |
67 | 67 | ||
68 | 68 | let G = "WAVES" | |
69 | 69 | ||
70 | 70 | let H = "SPOT" | |
71 | 71 | ||
72 | 72 | let I = 9223372036854775807 | |
73 | 73 | ||
74 | 74 | let J = toBigInt(0) | |
75 | 75 | ||
76 | 76 | let K = toBigInt(1) | |
77 | 77 | ||
78 | 78 | let L = 86400000 | |
79 | 79 | ||
80 | 80 | let M = 1 | |
81 | 81 | ||
82 | 82 | let N = 2 | |
83 | 83 | ||
84 | - | let O = base58' | |
84 | + | let O = base58'7YXq4t' | |
85 | 85 | ||
86 | - | func P (Q,R) = { | |
87 | - | let S = addressFromString(Q) | |
88 | - | if ($isInstanceOf(S, "Address")) | |
86 | + | let P = base58'G5Nu92G2p7moXW9qjjN3na7gtq4dWCeVdaSjry' | |
87 | + | ||
88 | + | func Q (R,S) = { | |
89 | + | let T = addressFromString(R) | |
90 | + | if ($isInstanceOf(T, "Address")) | |
89 | 91 | then { | |
90 | - | let | |
92 | + | let U = T | |
91 | 93 | true | |
92 | 94 | } | |
93 | - | else throw( | |
95 | + | else throw(S) | |
94 | 96 | } | |
95 | 97 | ||
96 | 98 | ||
97 | - | func | |
99 | + | func V (W,X,Y,S) = if (if ((X > W)) | |
98 | 100 | then true | |
99 | - | else ( | |
100 | - | then throw( | |
101 | + | else (W > Y)) | |
102 | + | then throw(S) | |
101 | 103 | else true | |
102 | 104 | ||
103 | 105 | ||
104 | - | func | |
105 | - | then throw( | |
106 | + | func Z (W,X,S) = if ((X > W)) | |
107 | + | then throw(S) | |
106 | 108 | else true | |
107 | 109 | ||
108 | 110 | ||
109 | - | func | |
111 | + | func aa (W,X,Y,S) = if (if ((X > W)) | |
110 | 112 | then true | |
111 | - | else ( | |
112 | - | then throw( | |
113 | + | else (W > Y)) | |
114 | + | then throw(S) | |
113 | 115 | else true | |
114 | 116 | ||
115 | 117 | ||
116 | - | func | |
118 | + | func ab (W,S) = if (if ((0 >= size(W))) | |
117 | 119 | then true | |
118 | - | else contains( | |
119 | - | then throw( | |
120 | + | else contains(W, a)) | |
121 | + | then throw(S) | |
120 | 122 | else true | |
121 | 123 | ||
122 | 124 | ||
123 | - | func | |
124 | - | then throw( | |
125 | + | func ac (ad,ae,S) = if ((ad != ae)) | |
126 | + | then throw(S) | |
125 | 127 | else true | |
126 | 128 | ||
127 | 129 | ||
128 | - | func | |
129 | - | let | |
130 | - | if ($isInstanceOf( | |
130 | + | func af () = { | |
131 | + | let T = getBoolean(d) | |
132 | + | if ($isInstanceOf(T, "Boolean")) | |
131 | 133 | then { | |
132 | - | let | |
133 | - | | |
134 | + | let U = T | |
135 | + | U | |
134 | 136 | } | |
135 | 137 | else false | |
136 | 138 | } | |
137 | 139 | ||
138 | 140 | ||
139 | - | func | |
141 | + | func ag (ah) = [BooleanEntry(d, ah)] | |
140 | 142 | ||
141 | 143 | ||
142 | - | func | |
143 | - | let | |
144 | - | if ($isInstanceOf( | |
144 | + | func ai () = { | |
145 | + | let T = getBoolean(e) | |
146 | + | if ($isInstanceOf(T, "Boolean")) | |
145 | 147 | then { | |
146 | - | let | |
147 | - | | |
148 | + | let U = T | |
149 | + | U | |
148 | 150 | } | |
149 | 151 | else false | |
150 | 152 | } | |
151 | 153 | ||
152 | 154 | ||
153 | - | func | |
155 | + | func aj (ak) = [BooleanEntry(e, ak)] | |
154 | 156 | ||
155 | 157 | ||
156 | - | func | |
157 | - | let | |
158 | - | if ($isInstanceOf( | |
158 | + | func al () = { | |
159 | + | let T = getString(f) | |
160 | + | if ($isInstanceOf(T, "String")) | |
159 | 161 | then { | |
160 | - | let | |
161 | - | addressFromStringValue( | |
162 | + | let U = T | |
163 | + | addressFromStringValue(U) | |
162 | 164 | } | |
163 | 165 | else Address(base58'') | |
164 | 166 | } | |
165 | 167 | ||
166 | 168 | ||
167 | - | func | |
169 | + | func am (an) = [StringEntry(f, toString(an))] | |
168 | 170 | ||
169 | 171 | ||
170 | - | func | |
171 | - | let | |
172 | - | if ($isInstanceOf( | |
172 | + | func ao () = { | |
173 | + | let T = getString(b) | |
174 | + | if ($isInstanceOf(T, "String")) | |
173 | 175 | then { | |
174 | - | let | |
175 | - | addressFromStringValue( | |
176 | + | let U = T | |
177 | + | addressFromStringValue(U) | |
176 | 178 | } | |
177 | 179 | else Address(base58'') | |
178 | 180 | } | |
179 | 181 | ||
180 | 182 | ||
181 | - | func | |
183 | + | func ap (aq) = [StringEntry(b, toString(aq))] | |
182 | 184 | ||
183 | 185 | ||
184 | - | func | |
185 | - | let | |
186 | - | if ($isInstanceOf( | |
186 | + | func ar (as) = { | |
187 | + | let T = getString(makeString([h, toString(as)], a)) | |
188 | + | if ($isInstanceOf(T, "String")) | |
187 | 189 | then { | |
188 | - | let | |
189 | - | | |
190 | + | let U = T | |
191 | + | U | |
190 | 192 | } | |
191 | 193 | else "" | |
192 | 194 | } | |
193 | 195 | ||
194 | 196 | ||
195 | - | func | |
197 | + | func at (as,au) = [StringEntry(makeString([h, toString(as)], a), au)] | |
196 | 198 | ||
197 | 199 | ||
198 | - | func | |
199 | - | let | |
200 | - | if ($isInstanceOf( | |
200 | + | func av () = { | |
201 | + | let T = getString(g) | |
202 | + | if ($isInstanceOf(T, "String")) | |
201 | 203 | then { | |
202 | - | let | |
203 | - | addressFromStringValue( | |
204 | + | let U = T | |
205 | + | addressFromStringValue(U) | |
204 | 206 | } | |
205 | 207 | else Address(base58'') | |
206 | 208 | } | |
207 | 209 | ||
208 | 210 | ||
209 | - | func | |
211 | + | func aw (ax) = [StringEntry(g, toString(ax))] | |
210 | 212 | ||
211 | 213 | ||
212 | - | func | |
213 | - | let | |
214 | - | if ($isInstanceOf( | |
214 | + | func ay () = { | |
215 | + | let T = getString(j) | |
216 | + | if ($isInstanceOf(T, "String")) | |
215 | 217 | then { | |
216 | - | let | |
217 | - | addressFromStringValue( | |
218 | + | let U = T | |
219 | + | addressFromStringValue(U) | |
218 | 220 | } | |
219 | 221 | else Address(base58'') | |
220 | 222 | } | |
221 | 223 | ||
222 | 224 | ||
223 | - | func | |
225 | + | func az (aA) = [StringEntry(j, toString(aA))] | |
224 | 226 | ||
225 | 227 | ||
226 | - | func | |
227 | - | let | |
228 | - | if ($isInstanceOf( | |
228 | + | func aB () = { | |
229 | + | let T = getString(i) | |
230 | + | if ($isInstanceOf(T, "String")) | |
229 | 231 | then { | |
230 | - | let | |
231 | - | addressFromStringValue( | |
232 | + | let U = T | |
233 | + | addressFromStringValue(U) | |
232 | 234 | } | |
233 | 235 | else Address(base58'') | |
234 | 236 | } | |
235 | 237 | ||
236 | 238 | ||
237 | - | func | |
239 | + | func aC (aD) = [StringEntry(i, toString(aD))] | |
238 | 240 | ||
239 | 241 | ||
240 | - | func | |
241 | - | let | |
242 | - | if ($isInstanceOf( | |
242 | + | func aE (as) = { | |
243 | + | let T = getString(makeString([k, toString(as)], a)) | |
244 | + | if ($isInstanceOf(T, "String")) | |
243 | 245 | then { | |
244 | - | let | |
245 | - | | |
246 | + | let U = T | |
247 | + | U | |
246 | 248 | } | |
247 | 249 | else "" | |
248 | 250 | } | |
249 | 251 | ||
250 | 252 | ||
251 | - | func | |
253 | + | func aF (as,aG) = [StringEntry(makeString([k, toString(as)], a), aG)] | |
252 | 254 | ||
253 | 255 | ||
254 | - | func | |
255 | - | let | |
256 | - | if ($isInstanceOf( | |
256 | + | func aH (as,aI) = { | |
257 | + | let T = getString(makeString([l, toString(as), aI], a)) | |
258 | + | if ($isInstanceOf(T, "String")) | |
257 | 259 | then { | |
258 | - | let | |
259 | - | | |
260 | + | let U = T | |
261 | + | U | |
260 | 262 | } | |
261 | 263 | else "" | |
262 | 264 | } | |
263 | 265 | ||
264 | 266 | ||
265 | - | func | |
267 | + | func aJ (as,aI,aK) = [StringEntry(makeString([l, toString(as), aI], a), aK)] | |
266 | 268 | ||
267 | 269 | ||
268 | - | func | |
269 | - | let | |
270 | - | if ($isInstanceOf( | |
270 | + | func aL (as,aI) = { | |
271 | + | let T = getString(makeString([m, toString(as), aI], a)) | |
272 | + | if ($isInstanceOf(T, "String")) | |
271 | 273 | then { | |
272 | - | let | |
273 | - | parseBigIntValue( | |
274 | + | let U = T | |
275 | + | parseBigIntValue(U) | |
274 | 276 | } | |
275 | 277 | else J | |
276 | 278 | } | |
277 | 279 | ||
278 | 280 | ||
279 | - | func | |
281 | + | func aM (as,aI,aN) = [StringEntry(makeString([m, toString(as), aI], a), toString(aN))] | |
280 | 282 | ||
281 | 283 | ||
282 | - | func | |
283 | - | let | |
284 | - | if ($isInstanceOf( | |
284 | + | func aO (as,aI) = { | |
285 | + | let T = getString(makeString([n, toString(as), aI], a)) | |
286 | + | if ($isInstanceOf(T, "String")) | |
285 | 287 | then { | |
286 | - | let | |
287 | - | parseBigIntValue( | |
288 | + | let U = T | |
289 | + | parseBigIntValue(U) | |
288 | 290 | } | |
289 | 291 | else J | |
290 | 292 | } | |
291 | 293 | ||
292 | 294 | ||
293 | - | func | |
295 | + | func aP (as,aI,aN) = [StringEntry(makeString([n, toString(as), aI], a), toString(aN))] | |
294 | 296 | ||
295 | 297 | ||
296 | - | func | |
297 | - | let | |
298 | - | if ($isInstanceOf( | |
298 | + | func aQ (aK,aR) = { | |
299 | + | let T = getString(makeString([o, aK, aR], a)) | |
300 | + | if ($isInstanceOf(T, "String")) | |
299 | 301 | then { | |
300 | - | let | |
301 | - | parseBigIntValue( | |
302 | + | let U = T | |
303 | + | parseBigIntValue(U) | |
302 | 304 | } | |
303 | 305 | else J | |
304 | 306 | } | |
305 | 307 | ||
306 | 308 | ||
307 | - | func | |
309 | + | func aS (aK,aR,aT) = [StringEntry(makeString([o, aK, aR], a), toString(aT))] | |
308 | 310 | ||
309 | 311 | ||
310 | - | func | |
311 | - | let | |
312 | - | if ($isInstanceOf( | |
312 | + | func aU (aK) = { | |
313 | + | let T = getString(makeString([p, aK], a)) | |
314 | + | if ($isInstanceOf(T, "String")) | |
313 | 315 | then { | |
314 | - | let | |
315 | - | parseBigIntValue( | |
316 | + | let U = T | |
317 | + | parseBigIntValue(U) | |
316 | 318 | } | |
317 | 319 | else J | |
318 | 320 | } | |
319 | 321 | ||
320 | 322 | ||
321 | - | func | |
323 | + | func aV (aK,aN) = [StringEntry(makeString([p, aK], a), toString(aN))] | |
322 | 324 | ||
323 | 325 | ||
324 | - | func | |
325 | - | let | |
326 | - | if ($isInstanceOf( | |
326 | + | func aW () = { | |
327 | + | let T = getInteger(q) | |
328 | + | if ($isInstanceOf(T, "Int")) | |
327 | 329 | then { | |
328 | - | let | |
329 | - | | |
330 | + | let U = T | |
331 | + | U | |
330 | 332 | } | |
331 | 333 | else 0 | |
332 | 334 | } | |
333 | 335 | ||
334 | 336 | ||
335 | - | func | |
337 | + | func aX (W) = [IntegerEntry(q, W)] | |
336 | 338 | ||
337 | 339 | ||
338 | - | func | |
339 | - | let | |
340 | - | if ($isInstanceOf( | |
340 | + | func aY (aZ) = { | |
341 | + | let T = getString(makeString([r, toString(aZ)], a)) | |
342 | + | if ($isInstanceOf(T, "String")) | |
341 | 343 | then { | |
342 | - | let | |
343 | - | let | |
344 | - | $Tuple8( | |
344 | + | let U = T | |
345 | + | let ba = split(U, a) | |
346 | + | $Tuple8(ba[0], ba[1], parseIntValue(ba[2]), ba[3], parseBigIntValue(ba[4]), parseIntValue(ba[5]), ba[6], parseIntValue(ba[7])) | |
345 | 347 | } | |
346 | 348 | else $Tuple8("", "", 0, "", J, 0, "", D) | |
347 | 349 | } | |
348 | 350 | ||
349 | 351 | ||
350 | - | func | |
352 | + | func bb (aZ,bc) = [StringEntry(makeString([r, toString(aZ)], a), makeString([bc._1, bc._2, toString(bc._3), bc._4, toString(bc._5), toString(bc._6), bc._7, toString(bc._8)], a))] | |
351 | 353 | ||
352 | 354 | ||
353 | - | func | |
354 | - | let | |
355 | - | if ($isInstanceOf( | |
355 | + | func bd () = { | |
356 | + | let T = getInteger(s) | |
357 | + | if ($isInstanceOf(T, "Int")) | |
356 | 358 | then { | |
357 | - | let | |
358 | - | | |
359 | + | let U = T | |
360 | + | U | |
359 | 361 | } | |
360 | 362 | else 0 | |
361 | 363 | } | |
362 | 364 | ||
363 | 365 | ||
364 | - | func | |
366 | + | func be (bf) = [IntegerEntry(s, bf)] | |
365 | 367 | ||
366 | 368 | ||
367 | - | func | |
368 | - | let | |
369 | - | if ($isInstanceOf( | |
369 | + | func bg () = { | |
370 | + | let T = getString(t) | |
371 | + | if ($isInstanceOf(T, "String")) | |
370 | 372 | then { | |
371 | - | let | |
372 | - | addressFromStringValue( | |
373 | + | let U = T | |
374 | + | addressFromStringValue(U) | |
373 | 375 | } | |
374 | 376 | else Address(base58'') | |
375 | 377 | } | |
376 | 378 | ||
377 | 379 | ||
378 | - | func | |
380 | + | func bh (bi) = [StringEntry(t, toString(bi))] | |
379 | 381 | ||
380 | 382 | ||
381 | - | func | |
382 | - | let | |
383 | - | if ($isInstanceOf( | |
383 | + | func bj (bk) = { | |
384 | + | let T = getString(makeString([u, toBase58String(bk)], a)) | |
385 | + | if ($isInstanceOf(T, "String")) | |
384 | 386 | then { | |
385 | - | let | |
386 | - | | |
387 | + | let U = T | |
388 | + | U | |
387 | 389 | } | |
388 | 390 | else "" | |
389 | 391 | } | |
390 | 392 | ||
391 | 393 | ||
392 | - | func | |
394 | + | func bl (bk,bm) = [StringEntry(makeString([u, toBase58String(bk)], a), bm)] | |
393 | 395 | ||
394 | 396 | ||
395 | - | func | |
396 | - | let | |
397 | - | if ($isInstanceOf( | |
397 | + | func bn () = { | |
398 | + | let T = getString(v) | |
399 | + | if ($isInstanceOf(T, "String")) | |
398 | 400 | then { | |
399 | - | let | |
400 | - | addressFromStringValue( | |
401 | + | let U = T | |
402 | + | addressFromStringValue(U) | |
401 | 403 | } | |
402 | 404 | else Address(base58'') | |
403 | 405 | } | |
404 | 406 | ||
405 | 407 | ||
406 | - | func | |
408 | + | func bo (bp) = [StringEntry(v, toString(bp))] | |
407 | 409 | ||
408 | 410 | ||
409 | - | func | |
410 | - | let | |
411 | - | if ($isInstanceOf( | |
411 | + | func bq () = { | |
412 | + | let T = getString(w) | |
413 | + | if ($isInstanceOf(T, "String")) | |
412 | 414 | then { | |
413 | - | let | |
414 | - | | |
415 | + | let U = T | |
416 | + | U | |
415 | 417 | } | |
416 | 418 | else "" | |
417 | 419 | } | |
418 | 420 | ||
419 | 421 | ||
420 | - | func | |
422 | + | func br (bs) = [StringEntry(w, bs)] | |
421 | 423 | ||
422 | 424 | ||
423 | - | func | |
424 | - | let | |
425 | - | if ($isInstanceOf( | |
425 | + | func bt () = { | |
426 | + | let T = getString(x) | |
427 | + | if ($isInstanceOf(T, "String")) | |
426 | 428 | then { | |
427 | - | let | |
428 | - | | |
429 | + | let U = T | |
430 | + | U | |
429 | 431 | } | |
430 | 432 | else "" | |
431 | 433 | } | |
432 | 434 | ||
433 | 435 | ||
434 | - | func | |
436 | + | func bu (bv) = [StringEntry(x, bv)] | |
435 | 437 | ||
436 | 438 | ||
437 | - | func | |
439 | + | func bw (bx) = if ((bx != this)) | |
438 | 440 | then throw("_onlyThisContract: revert") | |
439 | 441 | else true | |
440 | 442 | ||
441 | 443 | ||
442 | - | func | |
444 | + | func by () = if ((ao() == Address(base58''))) | |
443 | 445 | then throw("_whenMultisigSet: revert") | |
444 | 446 | else true | |
445 | 447 | ||
446 | 448 | ||
447 | - | func | |
449 | + | func bz () = if (af()) | |
448 | 450 | then throw("_whenNotInitialized: revert") | |
449 | 451 | else true | |
450 | 452 | ||
451 | 453 | ||
452 | - | func | |
454 | + | func bA () = if (!(af())) | |
453 | 455 | then throw("_whenInitialized: revert") | |
454 | 456 | else true | |
455 | 457 | ||
456 | 458 | ||
457 | - | func | |
459 | + | func bB () = if (ai()) | |
458 | 460 | then throw("_whenNotPaused: revert") | |
459 | 461 | else true | |
460 | 462 | ||
461 | 463 | ||
462 | - | func | |
464 | + | func bC () = if (!(ai())) | |
463 | 465 | then throw("_whenPaused: revert") | |
464 | 466 | else true | |
465 | 467 | ||
466 | 468 | ||
467 | - | func | |
469 | + | func bD (bx) = if ((bx != al())) | |
468 | 470 | then throw("_onlyPauser: revert") | |
469 | 471 | else true | |
470 | 472 | ||
471 | 473 | ||
472 | - | func | |
473 | - | then throw( | |
474 | + | func bE (W,S) = if ((W != av())) | |
475 | + | then throw(S) | |
474 | 476 | else true | |
475 | 477 | ||
476 | 478 | ||
477 | - | func | |
478 | - | then throw( | |
479 | + | func bF (as,au,S) = if ((ar(as) != au)) | |
480 | + | then throw(S) | |
479 | 481 | else true | |
480 | 482 | ||
481 | 483 | ||
482 | - | func | |
483 | - | then throw( | |
484 | + | func bG (as,S) = if ((0 >= size(aE(as)))) | |
485 | + | then throw(S) | |
484 | 486 | else true | |
485 | 487 | ||
486 | 488 | ||
487 | - | func | |
488 | - | then throw( | |
489 | + | func bH (as,S) = if ((size(aE(as)) > 0)) | |
490 | + | then throw(S) | |
489 | 491 | else true | |
490 | 492 | ||
491 | 493 | ||
492 | - | func | |
493 | - | then throw( | |
494 | + | func bI (as,aI,S) = if ((0 >= size(aH(as, aI)))) | |
495 | + | then throw(S) | |
494 | 496 | else true | |
495 | 497 | ||
496 | 498 | ||
497 | - | func | |
498 | - | then throw( | |
499 | + | func bJ (as,aI,S) = if ((size(aH(as, aI)) > 0)) | |
500 | + | then throw(S) | |
499 | 501 | else true | |
500 | 502 | ||
501 | 503 | ||
502 | - | func | |
503 | - | then throw( | |
504 | + | func bK (bL,S) = if ((aB() != bL)) | |
505 | + | then throw(S) | |
504 | 506 | else true | |
505 | 507 | ||
506 | 508 | ||
507 | - | func | |
508 | - | then throw( | |
509 | + | func bM (bN,S) = if ((bN != D)) | |
510 | + | then throw(S) | |
509 | 511 | else true | |
510 | 512 | ||
511 | 513 | ||
512 | - | func | |
513 | - | then throw( | |
514 | + | func bO (bL,S) = if ((bg() != bL)) | |
515 | + | then throw(S) | |
514 | 516 | else true | |
515 | 517 | ||
516 | 518 | ||
517 | - | func | |
518 | - | then throw( | |
519 | + | func bP (bk,S) = if ((size(bj(bk)) > 0)) | |
520 | + | then throw(S) | |
519 | 521 | else true | |
520 | 522 | ||
521 | 523 | ||
522 | - | func | |
523 | - | then if ((size( | |
524 | - | then throw( | |
524 | + | func bQ (bR,bS,S) = if ((bS == M)) | |
525 | + | then if ((size(bR) != 64)) | |
526 | + | then throw(S) | |
525 | 527 | else true | |
526 | - | else if (( | |
527 | - | then if ((size( | |
528 | - | then throw( | |
528 | + | else if ((bS == N)) | |
529 | + | then if ((size(bR) != 65)) | |
530 | + | then throw(S) | |
529 | 531 | else true | |
530 | - | else throw(( | |
532 | + | else throw((S + ": inv alg")) | |
531 | 533 | ||
532 | 534 | ||
533 | - | func | |
534 | - | then if ((size( | |
535 | - | then throw( | |
535 | + | func bT (bU,bS,S) = if ((bS == M)) | |
536 | + | then if ((size(bU) != 32)) | |
537 | + | then throw(S) | |
536 | 538 | else true | |
537 | - | else if (( | |
538 | - | then if ((size( | |
539 | - | then throw( | |
539 | + | else if ((bS == N)) | |
540 | + | then if ((size(bU) != 20)) | |
541 | + | then throw(S) | |
540 | 542 | else true | |
541 | - | else throw(( | |
543 | + | else throw((S + ": inv alg")) | |
542 | 544 | ||
543 | 545 | ||
544 | - | func bU (bj,bQ,bT,bR,R) = { | |
545 | - | let bV = if ((bR == M)) | |
546 | - | then sigVerify(bj, bQ, bT) | |
547 | - | else if ((bR == N)) | |
546 | + | func bV (bk,bR,bU,bS,S) = { | |
547 | + | let bW = if ((bS == M)) | |
548 | + | then { | |
549 | + | let bX = keccak256_16Kb((O + toBytes(toBase58String(bk)))) | |
550 | + | sigVerify(bX, bR, bU) | |
551 | + | } | |
552 | + | else if ((bS == N)) | |
548 | 553 | then { | |
549 | - | let | |
550 | - | (takeRight(keccak256_16Kb(ecrecover( | |
554 | + | let bX = keccak256_16Kb((P + bk)) | |
555 | + | (takeRight(keccak256_16Kb(ecrecover(bX, bR)), 20) == bU) | |
551 | 556 | } | |
552 | - | else throw(( | |
553 | - | if (!( | |
554 | - | then throw( | |
557 | + | else throw((S + ": inv alg")) | |
558 | + | if (!(bW)) | |
559 | + | then throw(S) | |
555 | 560 | else true | |
556 | 561 | } | |
557 | 562 | ||
558 | 563 | ||
559 | - | func | |
560 | - | let | |
561 | - | then toString(addressFromPublicKey( | |
562 | - | else if (( | |
563 | - | then ("0x" + toBase16String( | |
564 | - | else throw(( | |
565 | - | if (( | |
566 | - | then throw( | |
564 | + | func bY (bU,bZ,bS,S) = { | |
565 | + | let ca = if ((bS == M)) | |
566 | + | then toString(addressFromPublicKey(bU)) | |
567 | + | else if ((bS == N)) | |
568 | + | then ("0x" + toBase16String(bU)) | |
569 | + | else throw((S + ": inv alg")) | |
570 | + | if ((ca != bZ)) | |
571 | + | then throw(S) | |
567 | 572 | else true | |
568 | 573 | } | |
569 | 574 | ||
570 | 575 | ||
571 | - | @Callable(ca) | |
572 | - | func init (aw,am,az,aC,bh,bo) = { | |
573 | - | let cb = if (if (if (if (if (if (if (if (bv(ca.caller)) | |
576 | + | @Callable(cb) | |
577 | + | func init (ax,an,aA,aD,bi,bp) = { | |
578 | + | let cc = if (if (if (if (if (if (if (if (bw(cb.caller)) | |
579 | + | then bz() | |
580 | + | else false) | |
574 | 581 | then by() | |
575 | 582 | else false) | |
576 | - | then | |
583 | + | then Q(ax, "init: invalid executor") | |
577 | 584 | else false) | |
578 | - | then | |
585 | + | then Q(an, "init: invalid pauser") | |
579 | 586 | else false) | |
580 | - | then | |
587 | + | then Q(aA, "init: invalid accountStorage") | |
581 | 588 | else false) | |
582 | - | then | |
589 | + | then Q(aD, "init: invalid wavesVault") | |
583 | 590 | else false) | |
584 | - | then | |
591 | + | then Q(bi, "init: invalid sequencer") | |
585 | 592 | else false) | |
586 | - | then P(bh, "init: invalid sequencer") | |
587 | - | else false) | |
588 | - | then P(bo, "init: invalid vaultAdapter") | |
593 | + | then Q(bp, "init: invalid vaultAdapter") | |
589 | 594 | else false | |
590 | - | if (( | |
591 | - | then $Tuple2((((((( | |
595 | + | if ((cc == cc)) | |
596 | + | then $Tuple2(((((((ag(true) ++ aw(addressFromStringValue(ax))) ++ am(addressFromStringValue(an))) ++ az(addressFromStringValue(aA))) ++ aC(addressFromStringValue(aD))) ++ bh(addressFromStringValue(bi))) ++ bo(addressFromStringValue(bp))), unit) | |
592 | 597 | else throw("Strict value is not equal to itself.") | |
593 | 598 | } | |
594 | 599 | ||
595 | 600 | ||
596 | 601 | ||
597 | - | @Callable( | |
598 | - | func deposit ( | |
599 | - | let | |
600 | - | let | |
601 | - | let | |
602 | - | then | |
602 | + | @Callable(cb) | |
603 | + | func deposit (au,bZ,cd,as,aI,aT) = { | |
604 | + | let ce = valueOrErrorMessage(parseInt(as), "deposit: chainId not int") | |
605 | + | let cf = valueOrErrorMessage(parseBigInt(aT), "deposit: amount not int") | |
606 | + | let cc = if (if (if (if (if (if (bA()) | |
607 | + | then bB() | |
603 | 608 | else false) | |
604 | - | then | |
609 | + | then bG(ce, "deposit: invalid chainId") | |
605 | 610 | else false) | |
606 | - | then | |
611 | + | then ab(bZ, "deposit: invalid from") | |
607 | 612 | else false) | |
608 | - | then | |
613 | + | then ab(cd, "deposit: invalid to") | |
609 | 614 | else false) | |
610 | - | then | |
615 | + | then bI(ce, aI, "deposit: invalid asset") | |
611 | 616 | else false) | |
612 | - | then | |
617 | + | then Z(cf, J, "deposit: invalid amount") | |
613 | 618 | else false | |
614 | - | if (( | |
619 | + | if ((cc == cc)) | |
615 | 620 | then { | |
616 | - | let | |
617 | - | then | |
618 | - | else if ( | |
619 | - | then | |
621 | + | let cg = if ((aE(ce) == G)) | |
622 | + | then bK(cb.caller, "deposit: invalid waves vault") | |
623 | + | else if (bE(cb.caller, "deposit: invalid executor")) | |
624 | + | then bF(ce, au, "deposit: invalid caller contract") | |
620 | 625 | else false | |
621 | - | if (( | |
626 | + | if ((cg == cg)) | |
622 | 627 | then { | |
623 | - | let | |
624 | - | let | |
625 | - | let | |
626 | - | let | |
627 | - | if (( | |
628 | - | then $Tuple2(( | |
628 | + | let ch = (aL(ce, aI) + cf) | |
629 | + | let ci = aH(ce, aI) | |
630 | + | let cj = (aU(ci) + cf) | |
631 | + | let ck = invoke(ay(), y, [cd, ci, aT], nil) | |
632 | + | if ((ck == ck)) | |
633 | + | then $Tuple2((aM(ce, aI, ch) ++ aV(ci, cj)), unit) | |
629 | 634 | else throw("Strict value is not equal to itself.") | |
630 | 635 | } | |
631 | 636 | else throw("Strict value is not equal to itself.") | |
632 | 637 | } | |
633 | 638 | else throw("Strict value is not equal to itself.") | |
634 | 639 | } | |
635 | 640 | ||
636 | 641 | ||
637 | 642 | ||
638 | - | @Callable( | |
639 | - | func requestWithdrawal ( | |
640 | - | let | |
641 | - | let | |
642 | - | let | |
643 | - | let | |
644 | - | then | |
643 | + | @Callable(cb) | |
644 | + | func requestWithdrawal (au,bZ,cd,cl,cm,aI,aT) = { | |
645 | + | let cn = valueOrErrorMessage(parseInt(cl), "requestWithdrawal: fromChainId not int") | |
646 | + | let co = valueOrErrorMessage(parseInt(cm), "requestWithdrawal: toChainId not int") | |
647 | + | let cf = valueOrErrorMessage(parseBigInt(aT), "requestWithdrawal: amount not int") | |
648 | + | let cc = if (if (if (if (if (if (bA()) | |
649 | + | then bG(cn, "requestWithdrawal: invalid fromChainId") | |
645 | 650 | else false) | |
646 | - | then | |
651 | + | then bG(co, "requestWithdrawal: invalid toChainId") | |
647 | 652 | else false) | |
648 | - | then | |
653 | + | then ab(bZ, "requestWithdrawal: invalid from") | |
649 | 654 | else false) | |
650 | - | then | |
655 | + | then ab(cd, "requestWithdrawal: invalid to") | |
651 | 656 | else false) | |
652 | - | then | |
657 | + | then bI(co, aI, "requestWithdrawal: invalid asset") | |
653 | 658 | else false) | |
654 | - | then | |
659 | + | then Z(cf, J, "requestWithdrawal: invalid amount") | |
655 | 660 | else false | |
656 | - | if (( | |
661 | + | if ((cc == cc)) | |
657 | 662 | then { | |
658 | - | let | |
659 | - | then | |
660 | - | else if ( | |
661 | - | then | |
663 | + | let cg = if ((aE(cn) == G)) | |
664 | + | then bK(cb.caller, "requestWithdrawal: invalid waves vault") | |
665 | + | else if (bE(cb.caller, "requestWithdrawal: invalid executor")) | |
666 | + | then bF(cn, au, "requestWithdrawal: invalid caller contract") | |
662 | 667 | else false | |
663 | - | if (( | |
668 | + | if ((cg == cg)) | |
664 | 669 | then { | |
665 | - | let | |
666 | - | let | |
667 | - | let | |
668 | - | if ($isInstanceOf( | |
670 | + | let ci = aH(co, aI) | |
671 | + | let cp = { | |
672 | + | let T = invoke(ay(), z, [bZ, H, ci], nil) | |
673 | + | if ($isInstanceOf(T, "String")) | |
669 | 674 | then { | |
670 | - | let | |
671 | - | parseBigIntValue( | |
675 | + | let U = T | |
676 | + | parseBigIntValue(U) | |
672 | 677 | } | |
673 | 678 | else throw("requestWithdrawal: can't take available balance from storage") | |
674 | 679 | } | |
675 | - | if (( | |
680 | + | if ((cp == cp)) | |
676 | 681 | then { | |
677 | - | let | |
678 | - | let | |
679 | - | let | |
680 | - | then (( | |
682 | + | let cq = aO(co, aI) | |
683 | + | let cr = aQ(ci, bZ) | |
684 | + | let cs = if (if (((cp - cr) >= cf)) | |
685 | + | then ((aL(co, aI) - cq) >= cf) | |
681 | 686 | else false) | |
682 | - | then $Tuple2(D, ( | |
687 | + | then $Tuple2(D, (aP(co, aI, (cq + cf)) ++ aS(ci, bZ, (cf + cr)))) | |
683 | 688 | else $Tuple2(F, nil) | |
684 | - | let | |
685 | - | let | |
686 | - | let | |
687 | - | let | |
688 | - | $Tuple2((( | |
689 | + | let ct = cs._1 | |
690 | + | let cu = cs._2 | |
691 | + | let cv = aW() | |
692 | + | let cw = $Tuple8(bZ, cd, co, aI, cf, height, toBase58String(cb.transactionId), ct) | |
693 | + | $Tuple2(((bb(cv, cw) ++ aX((cv + 1))) ++ cu), cv) | |
689 | 694 | } | |
690 | 695 | else throw("Strict value is not equal to itself.") | |
691 | 696 | } | |
692 | 697 | else throw("Strict value is not equal to itself.") | |
693 | 698 | } | |
694 | 699 | else throw("Strict value is not equal to itself.") | |
695 | 700 | } | |
696 | 701 | ||
697 | 702 | ||
698 | 703 | ||
699 | - | @Callable( | |
700 | - | func executeWithdrawal ( | |
701 | - | let | |
702 | - | let | |
703 | - | let | |
704 | - | let | |
705 | - | then | |
704 | + | @Callable(cb) | |
705 | + | func executeWithdrawal (au,as,cx) = { | |
706 | + | let ce = valueOrErrorMessage(parseInt(as), "executeWithdrawal: chainId not int") | |
707 | + | let cy = valueOrErrorMessage(parseInt(cx), "executeWithdrawal: requestWithdrawalId not int") | |
708 | + | let cv = aW() | |
709 | + | let cc = if (if (bA()) | |
710 | + | then bG(ce, "executeWithdrawal: invalid chainId") | |
706 | 711 | else false) | |
707 | - | then | |
712 | + | then V(cy, 0, (cv - 1), "executeWithdrawal: invalid requestWithdrawalId") | |
708 | 713 | else false | |
709 | - | if (( | |
714 | + | if ((cc == cc)) | |
710 | 715 | then { | |
711 | - | let | |
712 | - | then | |
713 | - | else if ( | |
714 | - | then | |
716 | + | let cg = if ((aE(ce) == G)) | |
717 | + | then bK(cb.caller, "executeWithdrawal: invalid waves vault") | |
718 | + | else if (bE(cb.caller, "executeWithdrawal: invalid executor")) | |
719 | + | then bF(ce, au, "executeWithdrawal: invalid caller contract") | |
715 | 720 | else false | |
716 | - | if (( | |
721 | + | if ((cg == cg)) | |
717 | 722 | then { | |
718 | - | let | |
719 | - | let | |
720 | - | let | |
721 | - | let | |
722 | - | let | |
723 | - | let | |
724 | - | let | |
725 | - | let | |
726 | - | let | |
727 | - | let | |
728 | - | let | |
729 | - | let | |
730 | - | let | |
731 | - | let | |
732 | - | then | |
723 | + | let cz = aY(cy) | |
724 | + | let cA = cz._1 | |
725 | + | let cB = cz._2 | |
726 | + | let cC = cz._3 | |
727 | + | let cD = cz._4 | |
728 | + | let cE = cz._5 | |
729 | + | let cF = cz._6 | |
730 | + | let ct = cz._8 | |
731 | + | let ch = (aL(cC, cD) - cE) | |
732 | + | let cG = (aO(cC, cD) - cE) | |
733 | + | let ci = aH(cC, cD) | |
734 | + | let cj = (aU(ci) - cE) | |
735 | + | let cH = (aQ(ci, cA) - cE) | |
736 | + | let cI = if (if (if (if (if (Z(ch, J, "executeWithdrawal: negative newAssetReserves")) | |
737 | + | then Z(cG, J, "executeWithdrawal: negative newAssetReservesLocked") | |
733 | 738 | else false) | |
734 | - | then | |
739 | + | then Z(cj, J, "executeWithdrawal: negative newCurrencyReserves") | |
735 | 740 | else false) | |
736 | - | then | |
741 | + | then Z(cH, J, "executeWithdrawal: negative newUserLockedCurrency") | |
737 | 742 | else false) | |
738 | - | then | |
743 | + | then V((height - cF), bd(), I, "executeWithdrawal: too early to execute") | |
739 | 744 | else false) | |
740 | - | then | |
745 | + | then bM(ct, "executeWithdrawal: request is resolved") | |
741 | 746 | else false | |
742 | - | if (( | |
747 | + | if ((cI == cI)) | |
743 | 748 | then { | |
744 | - | let | |
745 | - | if (( | |
749 | + | let cJ = invoke(ay(), B, [cA, ci, toString(cE)], nil) | |
750 | + | if ((cJ == cJ)) | |
746 | 751 | then { | |
747 | - | let | |
748 | - | then invoke( | |
749 | - | else invoke( | |
750 | - | if (( | |
752 | + | let cK = if ((aE(cC) == G)) | |
753 | + | then invoke(aB(), B, [cB, cD, toString(cE)], nil) | |
754 | + | else invoke(bn(), B, [cC, cD, toString(cE), cB], nil) | |
755 | + | if ((cK == cK)) | |
751 | 756 | then { | |
752 | - | let | |
753 | - | $Tuple2((((( | |
757 | + | let cL = $Tuple8(cz._1, cz._2, cz._3, cz._4, cz._5, cz._6, cz._7, E) | |
758 | + | $Tuple2(((((aM(cC, cD, ch) ++ aP(cC, cD, cG)) ++ aV(ci, cj)) ++ aS(ci, cA, cH)) ++ bb(cy, cL)), unit) | |
754 | 759 | } | |
755 | 760 | else throw("Strict value is not equal to itself.") | |
756 | 761 | } | |
757 | 762 | else throw("Strict value is not equal to itself.") | |
758 | 763 | } | |
759 | 764 | else throw("Strict value is not equal to itself.") | |
760 | 765 | } | |
761 | 766 | else throw("Strict value is not equal to itself.") | |
762 | 767 | } | |
763 | 768 | else throw("Strict value is not equal to itself.") | |
764 | 769 | } | |
765 | 770 | ||
766 | 771 | ||
767 | 772 | ||
768 | - | @Callable( | |
769 | - | func rejectWithdrawal ( | |
770 | - | let | |
771 | - | let | |
772 | - | let | |
773 | - | then | |
773 | + | @Callable(cb) | |
774 | + | func rejectWithdrawal (cx) = { | |
775 | + | let cy = valueOrErrorMessage(parseInt(cx), "rejectWithdrawal: requestWithdrawalId not int") | |
776 | + | let cv = aW() | |
777 | + | let cc = if (if (bA()) | |
778 | + | then bO(cb.caller, "rejectWithdrawal: invalid sequencer") | |
774 | 779 | else false) | |
775 | - | then | |
780 | + | then V(cy, 0, (cv - 1), "rejectWithdrawal: invalid requestWithdrawalId") | |
776 | 781 | else false | |
777 | - | if (( | |
782 | + | if ((cc == cc)) | |
778 | 783 | then { | |
779 | - | let | |
780 | - | let | |
781 | - | let | |
782 | - | let | |
783 | - | let | |
784 | - | let | |
785 | - | let | |
786 | - | let | |
787 | - | let | |
788 | - | let | |
789 | - | let | |
790 | - | let | |
791 | - | then | |
784 | + | let cz = aY(cy) | |
785 | + | let cA = cz._1 | |
786 | + | let cB = cz._2 | |
787 | + | let cC = cz._3 | |
788 | + | let cD = cz._4 | |
789 | + | let cE = cz._5 | |
790 | + | let cF = cz._6 | |
791 | + | let ct = cz._8 | |
792 | + | let ci = aH(cC, cD) | |
793 | + | let cG = (aO(cC, cD) - cE) | |
794 | + | let cH = (aQ(ci, cA) - cE) | |
795 | + | let cg = if (if (Z(cG, J, "rejectWithdrawal: negative newAssetReservesLocked")) | |
796 | + | then Z(cH, J, "rejectWithdrawal: negative newUserLockedCurrency") | |
792 | 797 | else false) | |
793 | - | then | |
798 | + | then bM(ct, "rejectWithdrawal: request is resolved") | |
794 | 799 | else false | |
795 | - | if (( | |
800 | + | if ((cg == cg)) | |
796 | 801 | then { | |
797 | - | let | |
798 | - | let | |
799 | - | if ($isInstanceOf( | |
802 | + | let cp = { | |
803 | + | let T = invoke(ay(), z, [cA, H, ci], nil) | |
804 | + | if ($isInstanceOf(T, "String")) | |
800 | 805 | then { | |
801 | - | let | |
802 | - | parseBigIntValue( | |
806 | + | let U = T | |
807 | + | parseBigIntValue(U) | |
803 | 808 | } | |
804 | 809 | else throw("rejectWithdrawal: can't take available balance from storage") | |
805 | 810 | } | |
806 | - | if (( | |
807 | - | then if (( | |
811 | + | if ((cp == cp)) | |
812 | + | then if ((cE > cp)) | |
808 | 813 | then { | |
809 | - | let | |
810 | - | $Tuple2((( | |
814 | + | let cL = $Tuple8(cz._1, cz._2, cz._3, cz._4, cz._5, cz._6, cz._7, F) | |
815 | + | $Tuple2(((aP(cC, cD, cG) ++ aS(ci, cA, cH)) ++ bb(cy, cL)), true) | |
811 | 816 | } | |
812 | 817 | else $Tuple2(nil, false) | |
813 | 818 | else throw("Strict value is not equal to itself.") | |
814 | 819 | } | |
815 | 820 | else throw("Strict value is not equal to itself.") | |
816 | 821 | } | |
817 | 822 | else throw("Strict value is not equal to itself.") | |
818 | 823 | } | |
819 | 824 | ||
820 | 825 | ||
821 | 826 | ||
822 | - | @Callable( | |
823 | - | func withdraw ( | |
824 | - | let | |
825 | - | let | |
826 | - | let | |
827 | - | let | |
828 | - | let | |
829 | - | let | |
830 | - | let | |
831 | - | let | |
832 | - | then | |
827 | + | @Callable(cb) | |
828 | + | func withdraw (bZ,cd,cm,aI,aT,cM,cN,bU,bS,bR) = { | |
829 | + | let co = valueOrErrorMessage(parseInt(cm), "withdraw: toChainId not int") | |
830 | + | let cf = valueOrErrorMessage(parseBigInt(aT), "withdraw: amount not int") | |
831 | + | let cO = valueOrErrorMessage(parseBigInt(cM), "withdraw: relayerFee not int") | |
832 | + | let cP = valueOrErrorMessage(parseInt(cN), "withdraw: timestamp not int") | |
833 | + | let cQ = valueOrErrorMessage(parseInt(bS), "withdraw: alg not int") | |
834 | + | let cR = fromBase58String(bU) | |
835 | + | let cS = fromBase58String(bR) | |
836 | + | let cc = if (if (if (if (if (if (if (if (if (if (if (bA()) | |
837 | + | then bO(cb.caller, "withdraw: invalid sequencer") | |
833 | 838 | else false) | |
834 | - | then | |
839 | + | then ab(bZ, "withdraw: invalid from") | |
835 | 840 | else false) | |
836 | - | then | |
841 | + | then ab(cd, "withdraw: invalid to") | |
837 | 842 | else false) | |
838 | - | then | |
843 | + | then bG(co, "withdraw: invalid toChainId") | |
839 | 844 | else false) | |
840 | - | then | |
845 | + | then bI(co, aI, "withdraw: invalid asset") | |
841 | 846 | else false) | |
842 | - | then | |
847 | + | then Z(cf, J, "withdraw: invalid amount") | |
843 | 848 | else false) | |
844 | - | then | |
849 | + | then aa(cO, J, cf, "withdraw: invalid relayerFee") | |
845 | 850 | else false) | |
846 | - | then | |
851 | + | then V((cP + L), lastBlock.timestamp, I, "withdraw: invalid timestamp") | |
847 | 852 | else false) | |
848 | - | then | |
853 | + | then bT(cR, cQ, "withdraw: inv web3Id") | |
849 | 854 | else false) | |
850 | - | then | |
855 | + | then bQ(cS, cQ, "withdraw: inv sig format") | |
851 | 856 | else false) | |
852 | - | then | |
857 | + | then bY(cR, bZ, cQ, "withdraw: web3Id mismatch") | |
853 | 858 | else false | |
854 | - | if (( | |
859 | + | if ((cc == cc)) | |
855 | 860 | then { | |
856 | - | let | |
857 | - | let | |
858 | - | let | |
859 | - | let | |
860 | - | let | |
861 | - | if ($isInstanceOf( | |
861 | + | let cT = (((((((((((toBytes(size(bZ)) + toBytes(bZ)) + toBytes(size(cd))) + toBytes(cd)) + toBytes(co)) + toBytes(size(aI))) + toBytes(aI)) + toBytes(cf)) + toBytes(cO)) + toBytes(cP)) + cR) + toBytes(cQ)) | |
862 | + | let cU = keccak256_16Kb(cT) | |
863 | + | let ci = aH(co, aI) | |
864 | + | let cp = { | |
865 | + | let T = invoke(ay(), z, [bZ, H, ci], nil) | |
866 | + | if ($isInstanceOf(T, "String")) | |
862 | 867 | then { | |
863 | - | let | |
864 | - | parseBigIntValue( | |
868 | + | let U = T | |
869 | + | parseBigIntValue(U) | |
865 | 870 | } | |
866 | 871 | else throw("withdraw: can't take available balance from storage") | |
867 | 872 | } | |
868 | - | if (( | |
873 | + | if ((cp == cp)) | |
869 | 874 | then { | |
870 | - | let | |
871 | - | let | |
872 | - | let | |
873 | - | let | |
874 | - | let | |
875 | - | then | |
875 | + | let cV = aL(co, aI) | |
876 | + | let cq = aO(co, aI) | |
877 | + | let cW = (cf - cO) | |
878 | + | let cX = toString(cW) | |
879 | + | let cg = if (if (if (bV(cU, cS, cR, cQ, "withdraw: invalid sig")) | |
880 | + | then bP(cU, "withdraw: already executed") | |
876 | 881 | else false) | |
877 | - | then | |
882 | + | then Z(cp, cW, "withdraw: insufficient balance") | |
878 | 883 | else false) | |
879 | - | then | |
884 | + | then Z((cV - cq), cW, "withdraw: insufficient reserves") | |
880 | 885 | else false | |
881 | - | if (( | |
886 | + | if ((cg == cg)) | |
882 | 887 | then { | |
883 | - | let | |
884 | - | let | |
885 | - | let | |
886 | - | then | |
888 | + | let ch = (cV - cW) | |
889 | + | let cj = (aU(ci) - cW) | |
890 | + | let cI = if (Z(ch, J, "withdraw: negative newAssetReserves")) | |
891 | + | then Z(cj, J, "withdraw: negative newCurrencyReserves") | |
887 | 892 | else false | |
888 | - | if (( | |
893 | + | if ((cI == cI)) | |
889 | 894 | then { | |
890 | - | let | |
891 | - | if (( | |
895 | + | let cY = invoke(ay(), B, [bZ, ci, aT], nil) | |
896 | + | if ((cY == cY)) | |
892 | 897 | then { | |
893 | - | let | |
894 | - | if (( | |
898 | + | let cZ = invoke(ay(), y, [bt(), ci, cM], nil) | |
899 | + | if ((cZ == cZ)) | |
895 | 900 | then { | |
896 | - | let | |
897 | - | then invoke( | |
898 | - | else invoke( | |
899 | - | if (( | |
900 | - | then $Tuple2((( | |
901 | + | let cK = if ((aE(co) == G)) | |
902 | + | then invoke(aB(), B, [cd, aI, cX], nil) | |
903 | + | else invoke(bn(), B, [co, aI, cX, cd, cM], nil) | |
904 | + | if ((cK == cK)) | |
905 | + | then $Tuple2(((aM(co, aI, ch) ++ aV(ci, cj)) ++ bl(cU, toBase58String(cb.transactionId))), unit) | |
901 | 906 | else throw("Strict value is not equal to itself.") | |
902 | 907 | } | |
903 | 908 | else throw("Strict value is not equal to itself.") | |
904 | 909 | } | |
905 | 910 | else throw("Strict value is not equal to itself.") | |
906 | 911 | } | |
907 | 912 | else throw("Strict value is not equal to itself.") | |
908 | 913 | } | |
909 | 914 | else throw("Strict value is not equal to itself.") | |
910 | 915 | } | |
911 | 916 | else throw("Strict value is not equal to itself.") | |
912 | 917 | } | |
913 | 918 | else throw("Strict value is not equal to itself.") | |
914 | 919 | } | |
915 | 920 | ||
916 | 921 | ||
917 | 922 | ||
918 | - | @Callable( | |
919 | - | func depositStakingReward ( | |
920 | - | let | |
921 | - | let | |
922 | - | let | |
923 | - | then | |
923 | + | @Callable(cb) | |
924 | + | func depositStakingReward (au,as,aI,aT) = { | |
925 | + | let ce = valueOrErrorMessage(parseInt(as), "depositStakingReward: chainId not int") | |
926 | + | let cf = valueOrErrorMessage(parseBigInt(aT), "depositStakingReward: amount not int") | |
927 | + | let cc = if (if (if (if (bA()) | |
928 | + | then bB() | |
924 | 929 | else false) | |
925 | - | then | |
930 | + | then bG(ce, "depositStakingReward: invalid chainId") | |
926 | 931 | else false) | |
927 | - | then | |
932 | + | then bI(ce, aI, "depositStakingReward: invalid asset") | |
928 | 933 | else false) | |
929 | - | then | |
934 | + | then Z(cf, J, "depositStakingReward: invalid amount") | |
930 | 935 | else false | |
931 | - | if (( | |
936 | + | if ((cc == cc)) | |
932 | 937 | then { | |
933 | - | let | |
934 | - | then | |
935 | - | else if ( | |
936 | - | then | |
938 | + | let cg = if ((aE(ce) == G)) | |
939 | + | then bK(cb.caller, "depositStakingReward: invalid waves vault") | |
940 | + | else if (bE(cb.caller, "depositStakingReward: invalid executor")) | |
941 | + | then bF(ce, au, "depositStakingReward: invalid caller contract") | |
937 | 942 | else false | |
938 | - | if (( | |
943 | + | if ((cg == cg)) | |
939 | 944 | then { | |
940 | - | let | |
941 | - | let | |
942 | - | let | |
943 | - | let | |
944 | - | if (( | |
945 | - | then $Tuple2(( | |
945 | + | let ch = (aL(ce, aI) + cf) | |
946 | + | let ci = aH(ce, aI) | |
947 | + | let cj = (aU(ci) + cf) | |
948 | + | let ck = invoke(ay(), C, [bq(), ci, aT], nil) | |
949 | + | if ((ck == ck)) | |
950 | + | then $Tuple2((aM(ce, aI, ch) ++ aV(ci, cj)), unit) | |
946 | 951 | else throw("Strict value is not equal to itself.") | |
947 | 952 | } | |
948 | 953 | else throw("Strict value is not equal to itself.") | |
949 | 954 | } | |
950 | 955 | else throw("Strict value is not equal to itself.") | |
951 | 956 | } | |
952 | 957 | ||
953 | 958 | ||
954 | 959 | ||
955 | - | @Callable( | |
956 | - | func addChain ( | |
957 | - | let | |
958 | - | then | |
960 | + | @Callable(cb) | |
961 | + | func addChain (as,aG,au) = { | |
962 | + | let cc = if (if (if (if (if (bw(cb.caller)) | |
963 | + | then bA() | |
959 | 964 | else false) | |
960 | - | then | |
965 | + | then V(as, 0, I, "addChain: invalid chainId") | |
961 | 966 | else false) | |
962 | - | then | |
967 | + | then ab(aG, "addChain: invalid name") | |
963 | 968 | else false) | |
964 | - | then | |
969 | + | then ab(au, "addChain: invalid callerContract") | |
965 | 970 | else false) | |
966 | - | then | |
971 | + | then bH(as, "addChain: already exists") | |
967 | 972 | else false | |
968 | - | if (( | |
969 | - | then $Tuple2(( | |
973 | + | if ((cc == cc)) | |
974 | + | then $Tuple2((aF(as, aG) ++ at(as, au)), unit) | |
970 | 975 | else throw("Strict value is not equal to itself.") | |
971 | 976 | } | |
972 | 977 | ||
973 | 978 | ||
974 | 979 | ||
975 | - | @Callable( | |
976 | - | func addAsset ( | |
977 | - | let | |
978 | - | then | |
980 | + | @Callable(cb) | |
981 | + | func addAsset (as,aI,aK) = { | |
982 | + | let cc = if (if (if (if (if (bw(cb.caller)) | |
983 | + | then bA() | |
979 | 984 | else false) | |
980 | - | then | |
985 | + | then bG(as, "addAsset: invalid chainId") | |
981 | 986 | else false) | |
982 | - | then | |
987 | + | then ab(aI, "addAsset: invalid asset") | |
983 | 988 | else false) | |
984 | - | then | |
989 | + | then ab(aK, "addAsset: invalid currency") | |
985 | 990 | else false) | |
986 | - | then | |
991 | + | then bJ(as, aI, "addAsset: already exists") | |
987 | 992 | else false | |
988 | - | if (( | |
989 | - | then $Tuple2( | |
993 | + | if ((cc == cc)) | |
994 | + | then $Tuple2(aJ(as, aI, aK), unit) | |
990 | 995 | else throw("Strict value is not equal to itself.") | |
991 | 996 | } | |
992 | 997 | ||
993 | 998 | ||
994 | 999 | ||
995 | - | @Callable( | |
996 | - | func setRequestWithdrawalBlockDelay ( | |
997 | - | let | |
998 | - | then | |
1000 | + | @Callable(cb) | |
1001 | + | func setRequestWithdrawalBlockDelay (bf) = { | |
1002 | + | let cc = if (if (bw(cb.caller)) | |
1003 | + | then bA() | |
999 | 1004 | else false) | |
1000 | - | then | |
1005 | + | then V(bf, 0, I, "setRequestWithdrawalBlockDelay: invalid delay") | |
1001 | 1006 | else false | |
1002 | - | if (( | |
1003 | - | then $Tuple2( | |
1007 | + | if ((cc == cc)) | |
1008 | + | then $Tuple2(be(bf), unit) | |
1004 | 1009 | else throw("Strict value is not equal to itself.") | |
1005 | 1010 | } | |
1006 | 1011 | ||
1007 | 1012 | ||
1008 | 1013 | ||
1009 | - | @Callable( | |
1010 | - | func updateRewardDistributor ( | |
1011 | - | let | |
1012 | - | then | |
1014 | + | @Callable(cb) | |
1015 | + | func updateRewardDistributor (da) = { | |
1016 | + | let cc = if (if (bw(cb.caller)) | |
1017 | + | then bA() | |
1013 | 1018 | else false) | |
1014 | - | then | |
1019 | + | then ab(da, "updateRewardDistributor: invalid rewardDistributor") | |
1015 | 1020 | else false | |
1016 | - | if (( | |
1017 | - | then $Tuple2( | |
1021 | + | if ((cc == cc)) | |
1022 | + | then $Tuple2(br(da), unit) | |
1018 | 1023 | else throw("Strict value is not equal to itself.") | |
1019 | 1024 | } | |
1020 | 1025 | ||
1021 | 1026 | ||
1022 | 1027 | ||
1023 | - | @Callable( | |
1024 | - | func updateRelayerFeeRecipient ( | |
1025 | - | let | |
1026 | - | then | |
1028 | + | @Callable(cb) | |
1029 | + | func updateRelayerFeeRecipient (bv) = { | |
1030 | + | let cc = if (if (bw(cb.caller)) | |
1031 | + | then bA() | |
1027 | 1032 | else false) | |
1028 | - | then | |
1033 | + | then ab(bv, "updateRelayerFeeRecipient: invalid relayerFeeRecipient") | |
1029 | 1034 | else false | |
1030 | - | if (( | |
1031 | - | then $Tuple2( | |
1035 | + | if ((cc == cc)) | |
1036 | + | then $Tuple2(bu(bv), unit) | |
1032 | 1037 | else throw("Strict value is not equal to itself.") | |
1033 | 1038 | } | |
1034 | 1039 | ||
1035 | 1040 | ||
1036 | 1041 | ||
1037 | - | @Callable( | |
1042 | + | @Callable(cb) | |
1038 | 1043 | func pause () = { | |
1039 | - | let | |
1040 | - | then | |
1044 | + | let cc = if (if (bD(cb.caller)) | |
1045 | + | then bA() | |
1041 | 1046 | else false) | |
1042 | - | then | |
1047 | + | then bB() | |
1043 | 1048 | else false | |
1044 | - | if (( | |
1045 | - | then $Tuple2( | |
1049 | + | if ((cc == cc)) | |
1050 | + | then $Tuple2(aj(true), unit) | |
1046 | 1051 | else throw("Strict value is not equal to itself.") | |
1047 | 1052 | } | |
1048 | 1053 | ||
1049 | 1054 | ||
1050 | 1055 | ||
1051 | - | @Callable( | |
1056 | + | @Callable(cb) | |
1052 | 1057 | func unpause () = { | |
1053 | - | let | |
1054 | - | then | |
1058 | + | let cc = if (if (bD(cb.caller)) | |
1059 | + | then bA() | |
1055 | 1060 | else false) | |
1056 | - | then | |
1061 | + | then bC() | |
1057 | 1062 | else false | |
1058 | - | if (( | |
1059 | - | then $Tuple2( | |
1063 | + | if ((cc == cc)) | |
1064 | + | then $Tuple2(aj(false), unit) | |
1060 | 1065 | else throw("Strict value is not equal to itself.") | |
1061 | 1066 | } | |
1062 | 1067 | ||
1063 | 1068 | ||
1064 | 1069 | ||
1065 | - | @Callable( | |
1066 | - | func updatePauser ( | |
1067 | - | let | |
1068 | - | then | |
1070 | + | @Callable(cb) | |
1071 | + | func updatePauser (an) = { | |
1072 | + | let cc = if (if (bw(cb.caller)) | |
1073 | + | then bA() | |
1069 | 1074 | else false) | |
1070 | - | then | |
1075 | + | then Q(an, "updatePauser: invalid pauser") | |
1071 | 1076 | else false | |
1072 | - | if (( | |
1073 | - | then $Tuple2( | |
1077 | + | if ((cc == cc)) | |
1078 | + | then $Tuple2(am(addressFromStringValue(an)), unit) | |
1074 | 1079 | else throw("Strict value is not equal to itself.") | |
1075 | 1080 | } | |
1076 | 1081 | ||
1077 | 1082 | ||
1078 | 1083 | ||
1079 | - | @Callable( | |
1080 | - | func setMultisig ( | |
1081 | - | let | |
1082 | - | then | |
1084 | + | @Callable(cb) | |
1085 | + | func setMultisig (aq) = { | |
1086 | + | let cc = if (bw(cb.caller)) | |
1087 | + | then Q(aq, "setMultisig: invalid multisig") | |
1083 | 1088 | else false | |
1084 | - | if (( | |
1085 | - | then $Tuple2( | |
1089 | + | if ((cc == cc)) | |
1090 | + | then $Tuple2(ap(addressFromStringValue(aq)), unit) | |
1086 | 1091 | else throw("Strict value is not equal to itself.") | |
1087 | 1092 | } | |
1088 | 1093 | ||
1089 | 1094 | ||
1090 | - | @Verifier( | |
1091 | - | func | |
1092 | - | let | |
1093 | - | if ($isInstanceOf( | |
1095 | + | @Verifier(db) | |
1096 | + | func dc () = { | |
1097 | + | let T = getString(b) | |
1098 | + | if ($isInstanceOf(T, "String")) | |
1094 | 1099 | then { | |
1095 | - | let | |
1096 | - | valueOrElse(getBoolean(addressFromStringValue( | |
1100 | + | let dd = T | |
1101 | + | valueOrElse(getBoolean(addressFromStringValue(dd), makeString([c, toString(this), toBase58String(db.id)], a)), false) | |
1097 | 1102 | } | |
1098 | - | else sigVerify( | |
1103 | + | else sigVerify(db.bodyBytes, db.proofs[0], db.senderPublicKey) | |
1099 | 1104 | } | |
1100 | 1105 |
github/deemru/w8io/169f3d6 390.19 ms ◑