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