tx · 8mE9Moh8r8tvc8KXAErLDCj5eDwbRtXNfEfGSgxj3CRA

3PAZv9tgK1PX7dKR7b4kchq5qdpUS3G5sYT:  -0.02400000 Waves

2022.10.20 14:10 [3346046] smart account 3PAZv9tgK1PX7dKR7b4kchq5qdpUS3G5sYT > SELF 0.00000000 Waves

{ "type": 13, "id": "8mE9Moh8r8tvc8KXAErLDCj5eDwbRtXNfEfGSgxj3CRA", "fee": 2400000, "feeAssetId": null, "timestamp": 1666264142631, "version": 1, "sender": "3PAZv9tgK1PX7dKR7b4kchq5qdpUS3G5sYT", "senderPublicKey": "2cFG5wZimjVSeCT8ZCRybx7Mzo5tJF879aw2b31uLRmR", "proofs": [ "2miSFA8qAmUEg5LNBgfaui7vfW3Uhn3D96mjSi8MBEuWqEXHbffdZCBHHMeHSuNznChpVCcxmVLsL7gfrj2P1zqX" ], "script": "base64:BgKRAQgCEgMKAQgSBAoCCAQSBQoDCAQIEgMKAQgSBAoCCAESABIAEgQKAggBEgQKAggBEgMKAQgSBAoCCAESAwoBCBIECgIIARIECgIIARIECgIIARIECgIBBBIFCgMIAQQSBAoCBAQSAwoBCBIECgIBBBIAEgQKAggEEgASBAoCCAESAwoBCBIAEgQKAggIEgMKAQg4AAtmYWN0b3JzQmFzZQDoBwEDZkNpAwV2YWx1ZQludW1lcmF0b3ILZGVub21pbmF0b3IEBGNhbmQJAGsDBQV2YWx1ZQUJbnVtZXJhdG9yBQtkZW5vbWluYXRvcgQBRACz5pOoCwQFZXhhY3QJAAACCQBqAgkAaAIJAGoCBQRjYW5kBQFECQBqAgULZGVub21pbmF0b3IFAUQFAUQJAGoCCQBoAgkAagIFBXZhbHVlBQFECQBqAgUJbnVtZXJhdG9yBQFEBQFEAwUFZXhhY3QFBGNhbmQJAGQCBQRjYW5kAAEBC3B1cmVBc3NldElkAQdhc3NldElkBAFpCQCRAwIJALUJAgUHYXNzZXRJZAIBXwAAAwkAAAIFAWkCBVdBVkVTBQR1bml0CQDZBAEFAWkBEHdyaXRlQ29uc3RTdHJpbmcCA2tleQV2YWx1ZQMJAQEhAQkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwUDa2V5CQELU3RyaW5nRW50cnkCBQNrZXkFBXZhbHVlCQACAQkArAICAhVhbHJlYWR5IGluaXRpYWxpemVkOiAFA2tleQEFYXNJbnQBBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAECBQckbWF0Y2gwAgNJbnQEA2ludAUHJG1hdGNoMAUDaW50CQACAQIDbToxAQZhc0ludDMBBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAECBQckbWF0Y2gwAg8oSW50LCBJbnQsIEludCkEAXgFByRtYXRjaDAFAXgEAXQFByRtYXRjaDAJAAIBAgEyARFhc1VzZXJCYWxhbmNlRGF0YQEFdmFsdWUEByRtYXRjaDAFBXZhbHVlAwkAAQIFByRtYXRjaDACIihJbnQsIEludCwgSW50LCBJbnQsIEludCwgQm9vbGVhbikEAXgFByRtYXRjaDAFAXgEAXQFByRtYXRjaDAJAAIBAgEzAAtjb25maWdTdG9yZQIGY29uZmlnAAVhVElkUwIIYVRva2VuSWQABGFJZFMCB2Fzc2V0SWQADWNvbmZpZ0FkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFC2NvbmZpZ1N0b3JlAAZsb2NrZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUNY29uZmlnQWRkcmVzcwIJbHBfbG9ja2VyAh5ubyBscF9sb2NrZXIgYWRkcmVzcyBpbiBjb25maWcCH2JhZCBscF9sb2NrZXIgYWRkcmVzcyBpbiBjb25maWcAC3Jlc2VydmVzU3RyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUNY29uZmlnQWRkcmVzcwIQcHJpbWFyeV9yZXNlcnZlcwIWbm8gcmVzZXJ2ZXMgcmVnaXN0ZXJlZAAIcmVzZXJ2ZXMJALwJAgULcmVzZXJ2ZXNTdHICAXwAA2ViUgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDWNvbmZpZ0FkZHJlc3MCCmViX3Jld2FyZHMCDW5vIGViX3Jld2FyZHMAC3ZpcmVzTWludGVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDWNvbmZpZ0FkZHJlc3MCDHZpcmVzX21pbnRlcgIUbWFpbjogbm8gdmlyZXNNaW50ZXICCmJhZCBtaW50ZXIAB21heWJldlMJAJ0IAgUNY29uZmlnQWRkcmVzcwIMdmlyZXNfc3Rha2VyAAJ2UwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBQdtYXliZXZTAg9ubyB2aXJlc19zdGFrZXIAAmRDCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDWNvbmZpZ0FkZHJlc3MCEmRpdmlkZW5kc19jb250cmFjdAIVbm8gZGl2aWRlbmRzX2NvbnRyYWN0AgdiYWQgZGl2AANtVkQEByRtYXRjaDAJAJ0IAgUNY29uZmlnQWRkcmVzcwIRdmlyZXNfZGlzdHJpYnV0b3IDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFkBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBBQFkBQR1bml0AAJWRAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBQNtVkQCCG5vIGRpc3RyAAdsaW1pdGVyBAckbWF0Y2gwCQCdCAIFDWNvbmZpZ0FkZHJlc3MCB2xpbWl0ZXIDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFkBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBBQFkBQR1bml0ABFtYXliZVZpcmVzQXNzZXRJZAkAnQgCBQt2aXJlc01pbnRlcgUEYUlkUwAMdmlyZXNBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBRFtYXliZVZpcmVzQXNzZXRJZAILbm8gdmlyZXMgaWQCEGludmFsaWQgdmlyZXMgaWQBDHZpcmVzUGF5bWVudAEBaQMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAAAAMJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUMdmlyZXNBc3NldElkCQACAQIJbm90IHZpcmVzCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAEQYXNzZXRJZE9mUmVzZXJ2ZQEDcnNyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUDcnNyBQRhSWRTAhFubyBhc3NldElkIGluIHJzcgEQY29sbGF0ZXJhbEZhY3RvcgEDcnNyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUNY29uZmlnQWRkcmVzcwkArAICCQEQYXNzZXRJZE9mUmVzZXJ2ZQEFA3JzcgIRX0NvbGxhdGVyYWxGYWN0b3ICBG5vIDEBFGxpcXVpZGF0aW9uVGhyZXNob2xkAQNyc3IJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQ1jb25maWdBZGRyZXNzCQCsAgIJARBhc3NldElkT2ZSZXNlcnZlAQUDcnNyAhVfTGlxdWlkYXRpb25UaHJlc2hvbGQCBG5vIDIAFmFjY291bnRIZWFsdGhUaHJlc2hvbGQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQ1jb25maWdBZGRyZXNzAhhhY2NvdW50X2hlYWx0aF90aHJlc2hvbGQCBG5vIDQAFGFjY291bnRIZWFsdGhPdmVybGFwCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUNY29uZmlnQWRkcmVzcwIWYWNjb3VudF9oZWFsdGhfb3ZlcmxhcAIEbm8gNQALbGlxdWlkYXRvcnMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUNY29uZmlnQWRkcmVzcwILbGlxdWlkYXRvcnMCAAEJcmVzZXJ2ZUJ5AgVzdG9yZQV2YWx1ZQoBBGZvbGQCAWEBcgQHJG1hdGNoMAUBYQMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAVmb3VuZAUHJG1hdGNoMAUFZm91bmQEA3JzcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFAXICD3JzciBiYWQgYWRkcmVzcwMJAAACCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUDcnNyBQVzdG9yZQkArAICAgtyc3IgaGFzIG5vIAUFc3RvcmUFBXZhbHVlBQNyc3IFBHVuaXQEByRtYXRjaDAKAAIkbAUIcmVzZXJ2ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQR1bml0CgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQRmb2xkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQFZm91bmQFByRtYXRjaDAFBWZvdW5kCQACAQkArAICAgh1bmtub3duIAUFc3RvcmUBA3ZsUgEBcgMJAQhjb250YWlucwIFC3Jlc2VydmVzU3RyBQFyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUBcgINbWFpbjogYmFkIHJzcgkAAgEJAKwCAgIMdW5rbm93biByc3I6BQFyAQt1c2VyQmFsYW5jZQIDcnNyBHVzZXIJARFhc1VzZXJCYWxhbmNlRGF0YQEJAPwHBAUDcnNyAgt1c2VyQmFsYW5jZQkAzAgCBQR1c2VyBQNuaWwFA25pbAAObWF5YmVQcm90ZWN0ZWQEByRtYXRjaDAJAJ0IAgUNY29uZmlnQWRkcmVzcwIRcHJvdGVjdGVkX3Jlc2VydmUDCQABAgUHJG1hdGNoMAIGU3RyaW5nBANwZHMFByRtYXRjaDAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQNwZHMCDWJhZCBwcm90ZWN0ZWQFBHVuaXQAEHByb3RlY3RlZFJlc2VydmUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUObWF5YmVQcm90ZWN0ZWQCEG5vIHByb3RlY3RlZCByc3IAHHByb2hpYml0ZWRDb2xsYXRlcmFsUmVzZXJ2ZXMEByRtYXRjaDAJAJ0IAgUNY29uZmlnQWRkcmVzcwIccHJvaGliaXRlZENvbGxhdGVyYWxSZXNlcnZlcwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJALUJAgUBcwIBfAUDbmlsAR1lbnN1cmVOb1Byb2hpYml0ZWRDb2xsYXRlcmFscwEEdXNlcgoBCGZvbGRGdW5jAgFhEXByb2hpYml0ZWRSZXNlcnZlBANhdGIJAQt2YWx1ZU9yRWxzZQIJAJoIAgkBEUBleHRyTmF0aXZlKDEwNjIpAQURcHJvaGliaXRlZFJlc2VydmUJAKwCAgUEdXNlcgIOX2FUb2tlbkJhbGFuY2UAAAMJAGYCBQNhdGIAAQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgImb3BlcmF0aW9uIGRlbmllZDogdXNlciBoYXMgZGVwb3NpdCBpbiAFEXByb2hpYml0ZWRSZXNlcnZlAgI6IAkApAMBBQNhdGICCyhscCB0b2tlbnMpBgoAAiRsBRxwcm9oaWJpdGVkQ29sbGF0ZXJhbFJlc2VydmVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAYKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGZvbGRGdW5jAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwESZW5zdXJlTm9Qcm9oaWJpdGVkAwR1c2VyA2JwdQdyZXNlcnZlAwMJAAACBQNicHUAAAYJAQlpc0RlZmluZWQBCQDPCAIFHHByb2hpYml0ZWRDb2xsYXRlcmFsUmVzZXJ2ZXMFB3Jlc2VydmUGCQEdZW5zdXJlTm9Qcm9oaWJpdGVkQ29sbGF0ZXJhbHMBBQR1c2VyARFlbnN1cmVOb1Byb3RlY3RlZAEEdXNlcgQDaGFzBAckbWF0Y2gwBQ5tYXliZVByb3RlY3RlZAMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAJwYQUHJG1hdGNoMAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJwYQkArAICAhVwcm90ZWN0ZWRfY29sbGF0ZXJhbF8FBHVzZXIHBwMFA2hhcwkAAgECCmRpc2FsbG93ZWQFBHVuaXQBC2Vuc3VyZUxpbWl0BAZhY3Rpb24DcnNyBHVzZXIGYW1vdW50BAckbWF0Y2gwBQdsaW1pdGVyAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAWwFByRtYXRjaDAJAQVhc0ludAEJAPwHBAUBbAINdmFsaWRhdGVMaW1pdAkAzAgCBQZhY3Rpb24JAMwIAgkApQgBBQNyc3IJAMwIAgUEdXNlcgkAzAgCBQZhbW91bnQFA25pbAUDbmlsBgEJdXNlclBvd2VyAQR1c2VyBBBwcm90ZWN0ZWREZXBvc2l0BAckbWF0Y2gwBQ5tYXliZVByb3RlY3RlZAMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAJwYQUHJG1hdGNoMAkBBWFzSW50AQkA/AcEBQJwYQILYm9ycm93UG93ZXIJAMwIAgUEdXNlcgUDbmlsBQNuaWwAAAoBBGZvbGQCBnRvdGFscwFyBAskdDA4Nzk4ODg0NAUGdG90YWxzBAZ0b3RhbEQIBQskdDA4Nzk4ODg0NAJfMQQGdG90YWxCCAULJHQwODc5ODg4NDQCXzIED251bWJlck9mQm9ycm93cwgFCyR0MDg3OTg4ODQ0Al8zBANyc3IJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQFyAg9yc3IgYmFkIGFkZHJlc3MEAmNmCQEQY29sbGF0ZXJhbEZhY3RvcgEFA3JzcgQCbHQJARRsaXF1aWRhdGlvblRocmVzaG9sZAEFA3JzcgQLJHQwODk5ODkwODIJAQt1c2VyQmFsYW5jZQIFA3JzcgUEdXNlcgQFdG9rZW4IBQskdDA4OTk4OTA4MgJfMQQFYXNzZXQIBQskdDA4OTk4OTA4MgJfMgQKZGVwb3NpdFVzZAgFCyR0MDg5OTg5MDgyAl8zBARkZWJ0CAULJHQwODk5ODkwODICXzQEB2RlYnRVc2QIBQskdDA4OTk4OTA4MgJfNQQMYXNDb2xsYXRlcmFsCAULJHQwODk5ODkwODICXzYEDHRvdGFsQm9ycm93cwkAZAIFD251bWJlck9mQm9ycm93cwMJAGYCBQRkZWJ0AAAAAQAABBNlZmZlY3RpdmVEZXBvc2l0VXNkAwUMYXNDb2xsYXRlcmFsBQpkZXBvc2l0VXNkAAAECm92ZXJsYXBVc2QJAJcDAQkAzAgCBQdkZWJ0VXNkCQDMCAIFE2VmZmVjdGl2ZURlcG9zaXRVc2QFA25pbAQNb3ZlcmxhcENoYXJnZQkBA2ZDaQMFCm92ZXJsYXBVc2QFFGFjY291bnRIZWFsdGhPdmVybGFwBQtmYWN0b3JzQmFzZQMJAGYCBQdkZWJ0VXNkBRNlZmZlY3RpdmVEZXBvc2l0VXNkCQCVCgMFBnRvdGFsRAkAZAIJAGQCBQZ0b3RhbEIJAGsDCQBlAgUHZGVidFVzZAUTZWZmZWN0aXZlRGVwb3NpdFVzZAULZmFjdG9yc0Jhc2UFAmx0BQ1vdmVybGFwQ2hhcmdlBQx0b3RhbEJvcnJvd3MJAJUKAwkAZAIFBnRvdGFsRAkAawMJAGUCBRNlZmZlY3RpdmVEZXBvc2l0VXNkBQdkZWJ0VXNkBQJjZgULZmFjdG9yc0Jhc2UJAGQCBQZ0b3RhbEIFDW92ZXJsYXBDaGFyZ2UFDHRvdGFsQm9ycm93cwQBcgoAAiRsBQhyZXNlcnZlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUQcHJvdGVjdGVkRGVwb3NpdAAAAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBGZvbGQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDIwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAMDCQBmAgUQcHJvdGVjdGVkRGVwb3NpdAAACQBmAggFAXICXzMABAcJAAIBAh5jYW4ndCBoYXZlIG1vcmUgdGhhbiA0IGJvcnJvd3MFAXIBDWdldFVzZXJIZWFsdGgBB2FjY291bnQECyR0MDk4Mzc5ODg4CQEGYXNJbnQzAQkBCXVzZXJQb3dlcgEFB2FjY291bnQEAmJwCAULJHQwOTgzNzk4ODgCXzEEA2JwdQgFCyR0MDk4Mzc5ODg4Al8yBAZpZ25vcmUIBQskdDA5ODM3OTg4OAJfMwkArAICCQCsAgIJAKwCAgIDYnA6CQCkAwEFAmJwAgYsIGJwdToJAKQDAQUDYnB1AQ12YWxpZGF0ZUFmdGVyAgR1c2VyAm9wBA0kdDAxMDAwMDEwMDMxCQEJdXNlclBvd2VyAQUEdXNlcgQCYnAIBQ0kdDAxMDAwMDEwMDMxAl8xBANicHUIBQ0kdDAxMDAwMDEwMDMxAl8yBAlhY2NIZWFsdGgJAGkCCQBoAgkAZQIFAmJwBQNicHUFC2ZhY3RvcnNCYXNlBQJicAMDCQAAAgUCYnAAAAkAAAIFA2JwdQAABwAAAwMJAAACBQJicAAACQBmAgUDYnB1AAAHCQACAQkArAICCQCsAgIFAm9wAiw6IGJyZWFjaGluZyBsaXF1aWRhdGlvbiB0aHJlc2hvbGQoYnA9MCwgYnB1PQkApAMBBQNicHUDCQBmAgUWYWNjb3VudEhlYWx0aFRocmVzaG9sZAUJYWNjSGVhbHRoCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQJvcAIlOiBicmVhY2hpbmcgbGlxdWlkYXRpb24gdGhyZXNob2xkKGJwPQkApAMBBQJicAIGLCBicHU9CQCkAwEFA2JwdQIJLCBoZWFsdGg9CQCkAwEFCWFjY0hlYWx0aAIBKQUDYnB1AQJ1UwUDcnNyBmFjdGlvbgR1c2VyCnVzZXJDaGFuZ2UMc3RyZWFtQ2hhbmdlBAckbWF0Y2gwBQNtVkQDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQBYQUHJG1hdGNoMAkA/AcEBQFhAghvbkFjdGlvbgkAzAgCBQNyc3IJAMwIAgUGYWN0aW9uCQDMCAIFBHVzZXIJAMwIAgUKdXNlckNoYW5nZQkAzAgCBQxzdHJlYW1DaGFuZ2UFA25pbAUDbmlsBQR1bml0AQptb3ZlU3RyZWFtBQNyc3IGYWN0aW9uBGZyb20Gc3RyaW5nA2FtdAQHJG1hdGNoMAUDbVZEAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAWEFByRtYXRjaDAJAPwHBAUBYQIEbW92ZQkAzAgCBQNyc3IJAMwIAgUGYWN0aW9uCQDMCAIFBGZyb20JAMwIAgUGc3RyaW5nCQDMCAIFA2FtdAUDbmlsBQNuaWwFBHVuaXQBAnNSAQNyc3IEByRtYXRjaDAFA21WRAMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAFhBQckbWF0Y2gwCQD8BwQFAWECCnN5bmNIZWlnaHQJAMwIAgUDcnNyBQNuaWwFA25pbAUEdW5pdAEMbG9ja09yUGF5b3V0AwlyZWNpcGllbnQDYW10BGxvY2sDCQEBIQEFBGxvY2sJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUJcmVjaXBpZW50BQNhbXQFDHZpcmVzQXNzZXRJZAUDbmlsBAZkb0xvY2sJAPwHBAUCZEMCB2xvY2tGb3IJAMwIAgkApQgBBQlyZWNpcGllbnQJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFDHZpcmVzQXNzZXRJZAUDYW10BQNuaWwDCQAAAgUGZG9Mb2NrBQZkb0xvY2sFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEJZG9EZXBvc2l0AwFpA3JzcgVhc0NvbAQEdXNlcgkApQgBCAUBaQZjYWxsZXIEBmNoZWNrcwkBEWVuc3VyZU5vUHJvdGVjdGVkAQUEdXNlcgMJAAACBQZjaGVja3MFBmNoZWNrcwQCc2gJAQJzUgEFA3JzcgMJAAACBQJzaAUCc2gEBmFjdGlvbgkA/AcECQEDdmxSAQUDcnNyAgpkZXBvc2l0Rm9yCQDMCAIFBHVzZXIJAMwIAgUFYXNDb2wFA25pbAgFAWkIcGF5bWVudHMDCQAAAgUGYWN0aW9uBQZhY3Rpb24EA2FtdAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEA3BSdwkBAnVTBQUDcnNyAgdkZXBvc2l0BQR1c2VyBQNhbXQFA2FtdAMJAAACBQNwUncFA3BSdwQCdmEDCQEBIQEFBWFzQ29sCQENdmFsaWRhdGVBZnRlcgIFBHVzZXICCmRlcG9zaXRpbmcAAAMJAAACBQJ2YQUCdmEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAOcmV3YXJkUmVzZXJ2ZXMJALwJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDWNvbmZpZ0FkZHJlc3MCE3Jld2FyZGFibGVfcmVzZXJ2ZXMCCW5vIHN0cmluZwIBfAEWY2xhaW1BbGxSZXdhcmRzRm9yVXNlcgEEdXNlcgQJY2xhaW1lZEViCQEFYXNJbnQBCQD8BwQFA2ViUgIQY2xhaW1FYlJld2FyZEZvcgkAzAgCBQR1c2VyCQDMCAIA////////////AQUDbmlsBQNuaWwDCQAAAgUJY2xhaW1lZEViBQljbGFpbWVkRWIKAQRmb2xkAgNhY2MDcnNyBAdjbGFpbWVkCQEFYXNJbnQBCQD8BwQFAlZEAg5jbGFpbVJld2FyZEZvcgkAzAgCBQNyc3IJAMwIAgUEdXNlcgkAzAgCAP///////////wEFA25pbAUDbmlsAwkAAAIFB2NsYWltZWQFB2NsYWltZWQJAGQCBQNhY2MFB2NsYWltZWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EDGNsYWltZWRUb3RhbAoAAiRsBQ5yZXdhcmRSZXNlcnZlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEEZm9sZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUCQBkAgUMY2xhaW1lZFRvdGFsBQljbGFpbWVkRWIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BGGNsYWltQWxsTHBSZXdhcmRzRm9yVXNlcgEEdXNlcgoBBGZvbGQCA2FjYwNyc3IECGFUb2tlbklkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgkBEUBleHRyTmF0aXZlKDEwNjIpAQUDcnNyBQVhVElkUwIWbm8gYVRva2VuSWQgaW4gcmVzZXJ2ZQQHY2xhaW1lZAkBBWFzSW50AQkA/AcEBQZsb2NrZXICEGNsYWltTHBSZXdhcmRGb3IJAMwIAgUEdXNlcgkAzAgCBQhhVG9rZW5JZAkAzAgCAP///////////wEFA25pbAUDbmlsAwkAAAIFB2NsYWltZWQFB2NsYWltZWQJAGQCBQNhY2MFB2NsYWltZWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EDGNsYWltZWRUb3RhbAoAAiRsBQ5yZXdhcmRSZXNlcnZlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEEZm9sZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUBQxjbGFpbWVkVG90YWwBDm1vdmVDb2xsYXRlcmFsBARhZGRyCGFzc2V0U3RyA3JzcgpyZXNlcnZlU3RyBANhbXQJAQVhc0ludAEJAPwHBAUQcHJvdGVjdGVkUmVzZXJ2ZQIOd2l0aGRyYXdUb01haW4JAMwIAgUEYWRkcgkAzAgCBQhhc3NldFN0cgUDbmlsBQNuaWwDCQAAAgUDYW10BQNhbXQEA2RlcAkA/AcEBQNyc3ICCmRlcG9zaXRGb3IJAMwIAgUEYWRkcgkAzAgCBgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQELcHVyZUFzc2V0SWQBBQhhc3NldFN0cgUDYW10BQNuaWwDCQAAAgUDZGVwBQNkZXAEBHByb3AJAQJ1UwUFCnJlc2VydmVTdHICB2RlcG9zaXQFBGFkZHIFA2FtdAUDYW10AwkAAAIFBHByb3AFBHByb3AFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BBHNwZnIACQD8BwQFAmRDAhdzaGFyZVByb2ZpdEZyb21SZXNlcnZlcwUDbmlsBQNuaWwBCndkSW50ZXJuYWwEBHVzZXIDcnNyA2FtdAJvcAQCc2gJAQJzUgEJAKUIAQUDcnNyAwkAAAIFAnNoBQJzaAQPd2l0aGRyYXduQW1vdW50CQEFYXNJbnQBCQD8BwQFA3JzcgUCb3AJAMwIAgUEdXNlcgkAzAgCBQNhbXQFA25pbAUDbmlsAwkAAAIFD3dpdGhkcmF3bkFtb3VudAUPd2l0aGRyYXduQW1vdW50BANwUncJAQJ1UwUJAKUIAQUDcnNyAgdkZXBvc2l0BQR1c2VyCQEBLQEFD3dpdGhkcmF3bkFtb3VudAkBAS0BBQ93aXRoZHJhd25BbW91bnQDCQAAAgUDcFJ3BQNwUncEAWUJAQtlbnN1cmVMaW1pdAQCCHdpdGhkcmF3BQNyc3IFBHVzZXIFD3dpdGhkcmF3bkFtb3VudAMJAAACBQFlBQFlBQ93aXRoZHJhd25BbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BF3JlcGF5V2l0aEF0b2tlbkludGVybmFsAgR1c2VyB3BheW1lbnQECGFUb2tlbklkCQDYBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAggFB3BheW1lbnQHYXNzZXRJZAIeYmFkIGFzc2V0SWQ6IHdhdmVzIG5vdCBhbGxvd2VkBAF0CQEJcmVzZXJ2ZUJ5AgUFYVRJZFMFCGFUb2tlbklkBAJzaAkBAnNSAQkApQgBBQF0AwkAAAIFAnNoBQJzaAQDYW10CQEFYXNJbnQBCQD8BwQFAXQCHnJlcGxlbmlzaEZvclJlcGF5V2l0aEF0b2tlbkZvcgkAzAgCBQR1c2VyBQNuaWwJAMwIAgUHcGF5bWVudAUDbmlsAwkAAAIFA2FtdAUDYW10BAFjCQEFYXNJbnQBCQD8BwQFAXQCEWNvbGxhcHNlRm9yQW1vdW50CQDMCAIFBHVzZXIJAMwIAgUDYW10BQNuaWwFA25pbAMJAAACBQFjBQFjAwkAZgIFA2FtdAUBYwkAAgECEXJlcGF5aW5nIHRvbyBtdWNoBANwUncJAQJ1UwUJAKUIAQUBdAIGYm9ycm93BQR1c2VyCQEBLQEFAWMJAQEtAQUBYwMJAAACBQNwUncFA3BSdwQEcFJ3MgkBAnVTBQkApQgBBQF0AgdkZXBvc2l0BQR1c2VyCQBlAgUDYW10BQFjCQEBLQEFAWMDCQAAAgUEcFJ3MgUEcFJ3MgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuHAFpAQppbml0aWFsaXplAQJjYQkAzAgCCQEQd3JpdGVDb25zdFN0cmluZwIFC2NvbmZpZ1N0b3JlBQJjYQUDbmlsAWkBB2RlcG9zaXQCA3JzcgVhc0NvbAkBCWRvRGVwb3NpdAMFAWkFA3JzcgUFYXNDb2wBaQEKZGVwb3NpdFJlZgMDcnNyBWFzQ29sA3JlZgkBCWRvRGVwb3NpdAMFAWkFA3JzcgUFYXNDb2wBaQEFcmVwYXkBA3JzcgQEdXNlcgkApQgBCAUBaQZjYWxsZXIEAnNoCQECc1IBBQNyc3IDCQAAAgUCc2gFAnNoBAZyZXBhaWQJAQVhc0ludAEJAPwHBAkBA3ZsUgEFA3JzcgIIcmVwYXlGb3IJAMwIAgUEdXNlcgUDbmlsCAUBaQhwYXltZW50cwMJAAACBQZyZXBhaWQFBnJlcGFpZAQDcFJ3CQECdVMFBQNyc3ICBmJvcnJvdwUEdXNlcgkBAS0BBQZyZXBhaWQJAQEtAQUGcmVwYWlkAwkAAAIFA3BSdwUDcFJ3BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKbWludEF0b2tlbgIIYVRva2VuSWQDYW10BAR1c2VyCQClCAEIBQFpBmNhbGxlcgQBdAkBCXJlc2VydmVCeQIFBWFUSWRTBQhhVG9rZW5JZAQCc2gJAQJzUgEJAKUIAQUBdAMJAAACBQJzaAUCc2gEBmFjdHVhbAkBBWFzSW50AQkA/AcEBQF0Ag1taW50QXRva2VuRm9yCQDMCAIFBHVzZXIJAMwIAgUDYW10BQNuaWwFA25pbAMJAAACBQZhY3R1YWwFBmFjdHVhbAQDcFJ3CQECdVMFCQClCAEFAXQCB2RlcG9zaXQFBHVzZXIJAQEtAQUGYWN0dWFsAAADCQAAAgUDcFJ3BQNwUncEA2JwdQkBBWFzSW50AQkBDXZhbGlkYXRlQWZ0ZXICBQR1c2VyAgdtaW50aW5nAwkAAAIFA2JwdQUDYnB1BAJwYwkBEmVuc3VyZU5vUHJvaGliaXRlZAMFBHVzZXIFA2JwdQkApQgBBQF0AwkAAAIFAnBjBQJwYwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBE3JlcGxlbmlzaFdpdGhBdG9rZW4ABAR1c2VyCQClCAEIBQFpBmNhbGxlcgQGY2hlY2tzCQERZW5zdXJlTm9Qcm90ZWN0ZWQBBQR1c2VyAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAhhVG9rZW5JZAkA2AQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAIOYmFkIGFzc2V0SWQodykEA3JzcgkBCXJlc2VydmVCeQIFBWFUSWRTBQhhVG9rZW5JZAQCc2gJAQJzUgEJAKUIAQUDcnNyAwkAAAIFAnNoBQJzaAQDYW10CQEFYXNJbnQBCQD8BwQFA3JzcgIWcmVwbGVuaXNoV2l0aEF0b2tlbkZvcgkAzAgCBQR1c2VyBQNuaWwIBQFpCHBheW1lbnRzAwkAAAIFA2FtdAUDYW10BANwUncJAQJ1UwUJAKUIAQUDcnNyAgdkZXBvc2l0BQR1c2VyBQNhbXQAAAMJAAACBQNwUncFA3BSdwQBZQkBC2Vuc3VyZUxpbWl0BAIGaW1wb3J0BQNyc3IFBHVzZXIFA2FtdAMJAAACBQFlBQFlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENcmVkZWVtQXRva2VucwAEBHVzZXIJAKUIAQgFAWkGY2FsbGVyBAhhVG9rZW5JZAkA2AQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAISYmFkIGFzc2V0SWQ6IFdBVkVTBANyc3IJAQlyZXNlcnZlQnkCBQVhVElkUwUIYVRva2VuSWQEAnNoCQECc1IBCQClCAEFA3JzcgMJAAACBQJzaAUCc2gEA2FtdAkBBWFzSW50AQkA/AcEBQNyc3ICEHJlZGVlbUF0b2tlbnNGb3IJAMwIAgUEdXNlcgUDbmlsCAUBaQhwYXltZW50cwMJAAACBQNhbXQFA2FtdAQDcFJ3CQECdVMFCQClCAEFA3JzcgIHZGVwb3NpdAUEdXNlcgAACQEBLQEFA2FtdAMJAAACBQNwUncFA3BSdwQBZQkBC2Vuc3VyZUxpbWl0BAIGcmVkZWVtBQNyc3IFBHVzZXIFA2FtdAMJAAACBQFlBQFlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEId2l0aGRyYXcCB2Fzc2V0SWQDYW10BAR1c2VyCQClCAEIBQFpBmNhbGxlcgQBcgkBCXJlc2VydmVCeQIFBGFJZFMFB2Fzc2V0SWQEBnJlc3VsdAkBBWFzSW50AQkBCndkSW50ZXJuYWwEBQR1c2VyBQFyBQNhbXQCC3dpdGhkcmF3Rm9yAwkAAAIFBnJlc3VsdAUGcmVzdWx0BANicHUJAQVhc0ludAEJAQ12YWxpZGF0ZUFmdGVyAgUEdXNlcgILd2l0aGRyYXdpbmcDCQAAAgUDYnB1BQNicHUEAnBjCQESZW5zdXJlTm9Qcm9oaWJpdGVkAwUEdXNlcgUDYnB1CQClCAEFAXIDCQAAAgUCcGMFAnBjCQCUCgIFA25pbAUGcmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCXdpdGhkcmF3MgIDcnNyA2FtdAQEdXNlcgkApQgBCAUBaQZjYWxsZXIEAnNoCQECc1IBBQNyc3IDCQAAAgUCc2gFAnNoBAdyc3JBZGRyCQEDdmxSAQUDcnNyBAZhY3R1YWwJAQVhc0ludAEJAPwHBAUHcnNyQWRkcgILd2l0aGRyYXdGb3IJAMwIAgUEdXNlcgkAzAgCBQNhbXQFA25pbAUDbmlsAwkAAAIFBmFjdHVhbAUGYWN0dWFsBANwUncJAQJ1UwUFA3JzcgIHZGVwb3NpdAUEdXNlcgkBAS0BBQZhY3R1YWwJAQEtAQUGYWN0dWFsAwkAAAIFA3BSdwUDcFJ3BANicHUDCQEIY29udGFpbnMCBQtsaXF1aWRhdG9ycwUEdXNlcgAABAFlCQELZW5zdXJlTGltaXQEAgh3aXRoZHJhdwUHcnNyQWRkcgUEdXNlcgUGYWN0dWFsAwkAAAIFAWUFAWUJAQVhc0ludAEJAQ12YWxpZGF0ZUFmdGVyAgUEdXNlcgIMd2l0aGRyYXdpbmcyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAJwYwkBEmVuc3VyZU5vUHJvaGliaXRlZAMFBHVzZXIFA2JwdQUDcnNyAwkAAAIFAnBjBQJwYwkAlAoCBQNuaWwFBmFjdHVhbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARFwcm90ZWN0Q29sbGF0ZXJhbAEDcnNyBAR1c2VyCQClCAEIBQFpBmNhbGxlcgQBcgkBA3ZsUgEFA3JzcgQDYW10CQEFYXNJbnQBCQEKd2RJbnRlcm5hbAQFBHVzZXIFAXIA////////////AQIOd2l0aGRyYXdUb01haW4DCQAAAgUDYW10BQNhbXQECmFzc2V0SWRTdHIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFAXIFBGFJZFMEAXAJAPwHBAUQcHJvdGVjdGVkUmVzZXJ2ZQIJc3VwcGx5Rm9yCQDMCAIFBHVzZXIFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBC3B1cmVBc3NldElkAQUKYXNzZXRJZFN0cgUDYW10BQNuaWwDCQAAAgUBcAUBcAQCcGMJARJlbnN1cmVOb1Byb2hpYml0ZWQDBQR1c2VyCAkBCXVzZXJQb3dlcgEFBHVzZXICXzIFA3JzcgMJAAACBQJwYwUCcGMJAJQKAgUDbmlsBQNhbXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEbd2l0aGRyYXdQcm90ZWN0ZWRDb2xsYXRlcmFsAgdhc3NldElkA2FtdAQEdXNlcgkApQgBCAUBaQZjYWxsZXIEAWEJAQVhc0ludAEJAPwHBAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBRBwcm90ZWN0ZWRSZXNlcnZlAhNubyBwcm90ZWN0ZWRSZXNlcnZlAgt3aXRoZHJhd0ZvcgkAzAgCBQR1c2VyCQDMCAIFB2Fzc2V0SWQJAMwIAgUDYW10BQNuaWwFA25pbAMJAAACBQFhBQFhBAJ2YQkBDXZhbGlkYXRlQWZ0ZXICBQR1c2VyAhV3aXRoZHJhd2luZyBwcm90ZWN0ZWQDCQAAAgUCdmEFAnZhBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQETbm9ybWFsaXplQ29sbGF0ZXJhbAEDcnNyBARhZGRyCQClCAEIBQFpBmNhbGxlcgQCckEJAQN2bFIBBQNyc3IDCQAAAgUCckEFAnJBBAJzaAkBAnNSAQUDcnNyAwkAAAIFAnNoBQJzaAQKYXNzZXRJZFN0cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAnJBBQRhSWRTCQCsAgICE25vIGFzc2V0SWQgaW4gcnN2OiAFA3JzcgQCbWMJAQ5tb3ZlQ29sbGF0ZXJhbAQFBGFkZHIFCmFzc2V0SWRTdHIFAnJBBQNyc3IDCQAAAgUCbWMFAm1jBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEGYm9ycm93Agdhc3NldElkA2FtdAQEdXNlcgkApQgBCAUBaQZjYWxsZXIEA3JzcgkBCXJlc2VydmVCeQIFBGFJZFMFB2Fzc2V0SWQEAnNoCQECc1IBCQClCAEFA3JzcgMJAAACBQJzaAUCc2gEAWEJAPwHBAUDcnNyAglib3Jyb3dGb3IJAMwIAgUEdXNlcgkAzAgCBQNhbXQFA25pbAUDbmlsAwkAAAIFAWEFAWEEA3BSdwkBAnVTBQkApQgBBQNyc3ICBmJvcnJvdwUEdXNlcgUDYW10BQNhbXQDCQAAAgUDcFJ3BQNwUncEAWUJAQtlbnN1cmVMaW1pdAQCBmJvcnJvdwUDcnNyBQR1c2VyBQNhbXQDCQAAAgUBZQUBZQQDYnB1CQEFYXNJbnQBCQENdmFsaWRhdGVBZnRlcgIFBHVzZXICCWJvcnJvd2luZwMJAAACBQNicHUFA2JwdQQCcGMJAR1lbnN1cmVOb1Byb2hpYml0ZWRDb2xsYXRlcmFscwEFBHVzZXIDCQAAAgUCcGMFAnBjBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHYm9ycm93MgIDcnNyA2FtdAQEdXNlcgkApQgBCAUBaQZjYWxsZXIEAXIJAQN2bFIBBQNyc3IEAnNoCQECc1IBBQNyc3IDCQAAAgUCc2gFAnNoBAFhCQD8BwQFAXICCWJvcnJvd0ZvcgkAzAgCBQR1c2VyCQDMCAIFA2FtdAUDbmlsBQNuaWwDCQAAAgUBYQUBYQQDcFJ3CQECdVMFBQNyc3ICBmJvcnJvdwUEdXNlcgUDYW10BQNhbXQDCQAAAgUDcFJ3BQNwUncEAWUJAQtlbnN1cmVMaW1pdAQCBmJvcnJvdwUBcgUEdXNlcgUDYW10AwkAAAIFAWUFAWUEA2JwdQkBBWFzSW50AQkBDXZhbGlkYXRlQWZ0ZXICBQR1c2VyAglib3Jyb3dpbmcDCQAAAgUDYnB1BQNicHUEAnBjCQEdZW5zdXJlTm9Qcm9oaWJpdGVkQ29sbGF0ZXJhbHMBBQR1c2VyAwkAAAIFAnBjBQJwYwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCGNvbGxhcHNlAgNyc3IDYW10BAR1c2VyCQClCAEIBQFpBmNhbGxlcgQCc2gJAQJzUgEFA3JzcgMJAAACBQJzaAUCc2gEAWMJAQVhc0ludAEJAPwHBAkBA3ZsUgEFA3JzcgIRY29sbGFwc2VGb3JBbW91bnQJAMwIAgUEdXNlcgkAzAgCBQNhbXQFA25pbAUDbmlsAwkAAAIFAWMFAWMEA3BSdwkBAnVTBQUDcnNyAgZib3Jyb3cFBHVzZXIJAQEtAQUBYwkBAS0BBQFjAwkAAAIFA3BSdwUDcFJ3BARwUncyCQECdVMFBQNyc3ICB2RlcG9zaXQFBHVzZXIJAQEtAQUBYwkBAS0BBQFjAwkAAAIFBHBSdzIFBHBSdzIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5jbGFpbUViUmV3YXJkMgIDYW10BGxvY2sEBHVzZXIJAKUIAQgFAWkGY2FsbGVyBAFjCQEFYXNJbnQBCQD8BwQFA2ViUgIQY2xhaW1FYlJld2FyZEZvcgkAzAgCBQR1c2VyCQDMCAIFA2FtdAUDbmlsBQNuaWwDCQAAAgUBYwUBYwkBDGxvY2tPclBheW91dAMIBQFpBmNhbGxlcgUBYwUEbG9jawkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQxjbGFpbVJld2FyZDIDA3JzcgNhbXQEbG9jawQBdgkBA3ZsUgEFA3JzcgMJAAACBQF2BQF2BAR1c2VyCQClCAEIBQFpBmNhbGxlcgQBYwkBBWFzSW50AQkA/AcEBQJWRAIOY2xhaW1SZXdhcmRGb3IJAMwIAgUDcnNyCQDMCAIFBHVzZXIJAMwIAgUDYW10BQNuaWwFA25pbAMJAAACBQFjBQFjCQEMbG9ja09yUGF5b3V0AwgFAWkGY2FsbGVyBQFjBQRsb2NrCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBIWNsYWltQWxsUmV3YXJkc0FuZEFsbEViQXZhaWxhYmxlMgIEbG9jaw11bnN0YWtlTGVnYWN5BAR1c2VyCQClCAEIBQFpBmNhbGxlcgQCY3IJARZjbGFpbUFsbFJld2FyZHNGb3JVc2VyAQUEdXNlcgMJAAACBQJjcgUCY3IEBGNyTHAJARhjbGFpbUFsbExwUmV3YXJkc0ZvclVzZXIBBQR1c2VyAwkAAAIFBGNyTHAFBGNyTHAEAmxBAwUNdW5zdGFrZUxlZ2FjeQkBBWFzSW50AQkA/AcEBQJ2UwITdW5zdGFrZUFsbFZpcmVzRnJvbQkAzAgCBQR1c2VyBQNuaWwFA25pbAAAAwkAAAIFAmxBBQJsQQkBDGxvY2tPclBheW91dAMIBQFpBmNhbGxlcgkAZAIJAGQCBQJjcgUEY3JMcAUCbEEFBGxvY2sJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEWZGlzYWJsZVVzZUFzQ29sbGF0ZXJhbAEDcnNyBAR1c2VyCQClCAEIBQFpBmNhbGxlcgQBZAkA/AcECQEDdmxSAQUDcnNyAhlkaXNhYmxlVXNlQXNDb2xsYXRlcmFsRm9yCQDMCAIFBHVzZXIFA25pbAUDbmlsAwkAAAIFAWQFAWQEAnZhCQENdmFsaWRhdGVBZnRlcgIFBHVzZXICGmNoYW5naW5nIGNvbGxhdGVyYWwgc3RhdHVzAwkAAAIFAnZhBQJ2YQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWxvY2tWaXJlcwIGZmFjdG9yB21pZ3JhdGUEBHVzZXIJAKUIAQgFAWkGY2FsbGVyBAFhCQEEc3BmcgADCQAAAgUBYQUBYQQNbWlncmF0ZUFtb3VudAMFB21pZ3JhdGUJAQVhc0ludAEJAPwHBAUCdlMCE3Vuc3Rha2VBbGxWaXJlc0Zyb20JAMwIAgUEdXNlcgUDbmlsBQNuaWwAAAQFdG90YWwJAGQCBQ1taWdyYXRlQW1vdW50CQEMdmlyZXNQYXltZW50AQUBaQQBbAkA/AcEBQJkQwIHbG9ja0ZvcgkAzAgCBQR1c2VyCQDMCAIFBmZhY3RvcgUDbmlsAwkAAAIFBXRvdGFsAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUMdmlyZXNBc3NldElkBQV0b3RhbAUDbmlsAwkAAAIFAWwFAWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARh3aXRoZHJhd0FsbFBvc3NpYmxlVmlyZXMABAR1c2VyCQClCAEIBQFpBmNhbGxlcgQBYQkBBHNwZnIAAwkAAAIFAWEFAWEEEXN0YWtlclZpcmVzQW1vdW50CQEFYXNJbnQBCQD8BwQFAnZTAhN1bnN0YWtlQWxsVmlyZXNGcm9tCQDMCAIFBHVzZXIFA25pbAUDbmlsAwkAAAIFEXN0YWtlclZpcmVzQW1vdW50BRFzdGFrZXJWaXJlc0Ftb3VudAQBdQkA/AcEBQJkQwITd2l0aGRyYXdVbmxvY2tlZEZvcgkAzAgCBQR1c2VyBQNuaWwFA25pbAMJAAACBQF1BQF1CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgURc3Rha2VyVmlyZXNBbW91bnQFDHZpcmVzQXNzZXRJZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBF2NsYWltUHJvdG9jb2xQcm9maXRGcm9tAgRmcm9tBnJlbG9jawQEdXNlcgkApQgBCAUBaQZjYWxsZXIEAWEJAQRzcGZyAAMJAAACBQFhBQFhBAF1CQD8BwQFAmRDAgtjbGFpbVByb2ZpdAkAzAgCBQRmcm9tCQDMCAIFBHVzZXIJAMwIAgUGcmVsb2NrBQNuaWwFA25pbAMJAAACBQF1BQF1BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEVd2l0aGRyYXdVbmxvY2tlZFZpcmVzAAQBYQkBBHNwZnIAAwkAAAIFAWEFAWEEAXUJAPwHBAUCZEMCE3dpdGhkcmF3VW5sb2NrZWRGb3IJAMwIAgkApQgBCAUBaQZjYWxsZXIFA25pbAUDbmlsAwkAAAIFAXUFAXUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpsb2NrU3VwcGx5AgdyZXNlcnZlBnBlcmlvZAQDcnNyCQEDdmxSAQUHcmVzZXJ2ZQQEdXNlcgkApQgBCAUBaQZjYWxsZXIEBmNoZWNrcwkBEWVuc3VyZU5vUHJvdGVjdGVkAQUEdXNlcgMJAAACBQZjaGVja3MFBmNoZWNrcwQIYVRva2VuSWQJAQV2YWx1ZQEJAQtwdXJlQXNzZXRJZAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQNyc3ICCGFUb2tlbklkAhZubyBhVG9rZW5JZCBpbiByZXNlcnZlBAltaWdyYXRpb24DCQAAAgkAkAMBCAUBaQhwYXltZW50cwAABQR1bml0AwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUIYVRva2VuSWQFBHVuaXQDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCQELcHVyZUFzc2V0SWQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUDcnNyBQRhSWRTAhVubyBhc3NldElkIGluIHJlc2VydmUEAnNoCQECc1IBBQdyZXNlcnZlAwkAAAIFAnNoBQJzaAQGYWN0aW9uCQD8BwQFA3JzcgIKZGVwb3NpdEZvcgkAzAgCBQR1c2VyCQDMCAIGBQNuaWwIBQFpCHBheW1lbnRzAwkAAAIFBmFjdGlvbgUGYWN0aW9uBANhbXQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BANwUncJAQJ1UwUFB3Jlc2VydmUCB2RlcG9zaXQFBHVzZXIFA2FtdAUDYW10AwkAAAIFA3BSdwUDcFJ3BQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQISYmFkIGFzc2V0IGF0dGFjaGVkAwkAAAIFCW1pZ3JhdGlvbgUJbWlncmF0aW9uBARtaW50BAJzaAkBAnNSAQUHcmVzZXJ2ZQMJAAACBQJzaAUCc2gEBmFjdHVhbAkBBWFzSW50AQkA/AcEBQNyc3ICD21pbnRBdG9rZW5Gb3JUbwkAzAgCBQR1c2VyCQDMCAIA////////////AQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAAIFBmFjdHVhbAUGYWN0dWFsBANwUncJAQJ1UwUJAKUIAQUDcnNyAgdkZXBvc2l0BQR1c2VyCQEBLQEFBmFjdHVhbAAAAwkAAAIFA3BSdwUDcFJ3BAJ2YQkBDXZhbGlkYXRlQWZ0ZXICBQR1c2VyAgxsb2NrLW1pbnRpbmcDCQAAAgUCdmEFAnZhBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUEbWludAUEbWludAQHYmFsYW5jZQkA8AcCBQR0aGlzBQhhVG9rZW5JZAQBcgkA/AcEBQZsb2NrZXICBmxvY2tMUAkAzAgCBQR1c2VyCQDMCAIFBnBlcmlvZAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQhhVG9rZW5JZAUHYmFsYW5jZQUDbmlsAwkAAAIFAXIFAXIJAJQKAgUDbmlsBQdiYWxhbmNlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEnJlcGF5V2l0aEF0b2tlbkZvcgEEdXNlcgQGY2hlY2tzAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBQR1c2VyCQACAQIIYmFkIHVzZXIGAwkAAAIFBmNoZWNrcwUGY2hlY2tzCQEXcmVwYXlXaXRoQXRva2VuSW50ZXJuYWwCBQR1c2VyCQCRAwIIBQFpCHBheW1lbnRzAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEPcmVwYXlXaXRoQXRva2VuAAkBF3JlcGF5V2l0aEF0b2tlbkludGVybmFsAgkApQgBCAUBaQZjYWxsZXIJAJEDAggFAWkIcGF5bWVudHMAAAFpAQhyZXBheUZvcgIDcnNyBHVzZXIEBmNoZWNrcwMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUEdXNlcgkAAgECCGJhZCB1c2VyBgMJAAACBQZjaGVja3MFBmNoZWNrcwQCc2gJAQJzUgEFA3JzcgMJAAACBQJzaAUCc2gEBnJlcGFpZAkBBWFzSW50AQkA/AcECQEDdmxSAQUDcnNyAghyZXBheUZvcgkAzAgCBQR1c2VyBQNuaWwIBQFpCHBheW1lbnRzAwkAAAIFBnJlcGFpZAUGcmVwYWlkBANwUncJAQJ1UwUFA3JzcgIGYm9ycm93BQR1c2VyCQEBLQEFBnJlcGFpZAkBAS0BBQZyZXBhaWQDCQAAAgUDcFJ3BQNwUncFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhoZWFsdGhPZgEHYWRkcmVzcwQNJHQwMjM2OTcyMzc0OAkBBmFzSW50MwEJAQl1c2VyUG93ZXIBBQdhZGRyZXNzBAJicAgFDSR0MDIzNjk3MjM3NDgCXzEEA2JwdQgFDSR0MDIzNjk3MjM3NDgCXzIEBmlnbm9yZQgFDSR0MDIzNjk3MjM3NDgCXzMJAJQKAgUDbmlsCQCUCgIFAmJwBQNicHUAPrNqPQ==", "chainId": 87, "height": 3346046, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BYjd8roFCLG4PvvpcPxAAAcEKrQz6wD49FxCfEFknPi9 Next: CxRfKXFLXxuujk4SB2D59HhyvCQeXy4WdMeKvNvpuwGo Diff:
OldNewDifferences
209209 func ap (aj) = {
210210 func aq (X,ar) = {
211211 let as = valueOrElse(getInteger(addressFromStringValue(ar), (aj + "_aTokenBalance")), 0)
212- if ((as > 0))
212+ if ((as > 1))
213213 then throw((((("operation denied: user has deposit in " + ar) + ": ") + toString(as)) + "(lp tokens)"))
214214 else true
215215 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 1000
55
66 func b (c,d,e) = {
77 let f = fraction(c, d, e)
88 let g = 3037000499
99 let h = ((((f % g) * (e % g)) % g) == (((c % g) * (d % g)) % g))
1010 if (h)
1111 then f
1212 else (f + 1)
1313 }
1414
1515
1616 func i (j) = {
1717 let k = split(j, "_")[0]
1818 if ((k == "WAVES"))
1919 then unit
2020 else fromBase58String(k)
2121 }
2222
2323
2424 func l (m,c) = if (!(isDefined(getString(this, m))))
2525 then StringEntry(m, c)
2626 else throw(("already initialized: " + m))
2727
2828
2929 func n (c) = {
3030 let o = c
3131 if ($isInstanceOf(o, "Int"))
3232 then {
3333 let p = o
3434 p
3535 }
3636 else throw("m:1")
3737 }
3838
3939
4040 func q (c) = {
4141 let o = c
4242 if ($isInstanceOf(o, "(Int, Int, Int)"))
4343 then {
4444 let r = o
4545 r
4646 }
4747 else {
4848 let s = o
4949 throw("2")
5050 }
5151 }
5252
5353
5454 func t (c) = {
5555 let o = c
5656 if ($isInstanceOf(o, "(Int, Int, Int, Int, Int, Boolean)"))
5757 then {
5858 let r = o
5959 r
6060 }
6161 else {
6262 let s = o
6363 throw("3")
6464 }
6565 }
6666
6767
6868 let u = "config"
6969
7070 let v = "aTokenId"
7171
7272 let w = "assetId"
7373
7474 let x = addressFromStringValue(getStringValue(this, u))
7575
7676 let y = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(x, "lp_locker"), "no lp_locker address in config")), "bad lp_locker address in config")
7777
7878 let z = valueOrErrorMessage(getString(x, "primary_reserves"), "no reserves registered")
7979
8080 let A = split_4C(z, "|")
8181
8282 let B = addressFromStringValue(valueOrErrorMessage(getString(x, "eb_rewards"), "no eb_rewards"))
8383
8484 let C = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(x, "vires_minter"), "main: no viresMinter")), "bad minter")
8585
8686 let D = getString(x, "vires_staker")
8787
8888 let E = addressFromStringValue(valueOrErrorMessage(D, "no vires_staker"))
8989
9090 let F = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(x, "dividends_contract"), "no dividends_contract")), "bad div")
9191
9292 let G = {
9393 let o = getString(x, "vires_distributor")
9494 if ($isInstanceOf(o, "String"))
9595 then {
9696 let H = o
9797 addressFromStringValue(H)
9898 }
9999 else unit
100100 }
101101
102102 let I = valueOrErrorMessage(G, "no distr")
103103
104104 let J = {
105105 let o = getString(x, "limiter")
106106 if ($isInstanceOf(o, "String"))
107107 then {
108108 let H = o
109109 addressFromStringValue(H)
110110 }
111111 else unit
112112 }
113113
114114 let K = getString(C, w)
115115
116116 let L = valueOrErrorMessage(fromBase58String(valueOrErrorMessage(K, "no vires id")), "invalid vires id")
117117
118118 func M (k) = if ((size(k.payments) == 0))
119119 then 0
120120 else if ((k.payments[0].assetId != L))
121121 then throw("not vires")
122122 else k.payments[0].amount
123123
124124
125125 func N (O) = valueOrErrorMessage(getString(O, w), "no assetId in rsr")
126126
127127
128128 func P (O) = valueOrErrorMessage(getInteger(x, (N(O) + "_CollateralFactor")), "no 1")
129129
130130
131131 func Q (O) = valueOrErrorMessage(getInteger(x, (N(O) + "_LiquidationThreshold")), "no 2")
132132
133133
134134 let R = valueOrErrorMessage(getInteger(x, "account_health_threshold"), "no 4")
135135
136136 let S = valueOrErrorMessage(getInteger(x, "account_health_overlap"), "no 5")
137137
138138 let T = valueOrElse(getString(x, "liquidators"), "")
139139
140140 func U (V,c) = {
141141 func W (X,Y) = {
142142 let o = X
143143 if ($isInstanceOf(o, "Address"))
144144 then {
145145 let Z = o
146146 Z
147147 }
148148 else {
149149 let O = valueOrErrorMessage(addressFromString(Y), "rsr bad address")
150150 if ((valueOrErrorMessage(getString(O, V), ("rsr has no " + V)) == c))
151151 then O
152152 else unit
153153 }
154154 }
155155
156156 let o = {
157157 let aa = A
158158 let ab = size(aa)
159159 let ac = unit
160160 func ad (ae,af) = if ((af >= ab))
161161 then ae
162162 else W(ae, aa[af])
163163
164164 func ag (ae,af) = if ((af >= ab))
165165 then ae
166166 else throw("List size exceeds 20")
167167
168168 ag(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ac, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
169169 }
170170 if ($isInstanceOf(o, "Address"))
171171 then {
172172 let Z = o
173173 Z
174174 }
175175 else throw(("unknown " + V))
176176 }
177177
178178
179179 func ah (Y) = if (contains(z, Y))
180180 then valueOrErrorMessage(addressFromString(Y), "main: bad rsr")
181181 else throw(("unknown rsr:" + Y))
182182
183183
184184 func ai (O,aj) = t(invoke(O, "userBalance", [aj], nil))
185185
186186
187187 let ak = {
188188 let o = getString(x, "protected_reserve")
189189 if ($isInstanceOf(o, "String"))
190190 then {
191191 let al = o
192192 valueOrErrorMessage(addressFromString(al), "bad protected")
193193 }
194194 else unit
195195 }
196196
197197 let am = valueOrErrorMessage(ak, "no protected rsr")
198198
199199 let an = {
200200 let o = getString(x, "prohibitedCollateralReserves")
201201 if ($isInstanceOf(o, "String"))
202202 then {
203203 let ao = o
204204 split(ao, "|")
205205 }
206206 else nil
207207 }
208208
209209 func ap (aj) = {
210210 func aq (X,ar) = {
211211 let as = valueOrElse(getInteger(addressFromStringValue(ar), (aj + "_aTokenBalance")), 0)
212- if ((as > 0))
212+ if ((as > 1))
213213 then throw((((("operation denied: user has deposit in " + ar) + ": ") + toString(as)) + "(lp tokens)"))
214214 else true
215215 }
216216
217217 let aa = an
218218 let ab = size(aa)
219219 let ac = true
220220 func ad (ae,af) = if ((af >= ab))
221221 then ae
222222 else aq(ae, aa[af])
223223
224224 func ag (ae,af) = if ((af >= ab))
225225 then ae
226226 else throw("List size exceeds 15")
227227
228228 ag(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ac, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
229229 }
230230
231231
232232 func at (aj,au,av) = if (if ((au == 0))
233233 then true
234234 else isDefined(indexOf(an, av)))
235235 then true
236236 else ap(aj)
237237
238238
239239 func aw (aj) = {
240240 let ax = {
241241 let o = ak
242242 if ($isInstanceOf(o, "Address"))
243243 then {
244244 let ay = o
245245 valueOrElse(getBoolean(ay, ("protected_collateral_" + aj)), false)
246246 }
247247 else false
248248 }
249249 if (ax)
250250 then throw("disallowed")
251251 else unit
252252 }
253253
254254
255255 func az (aA,O,aj,aB) = {
256256 let o = J
257257 if ($isInstanceOf(o, "Address"))
258258 then {
259259 let aC = o
260260 n(invoke(aC, "validateLimit", [aA, toString(O), aj, aB], nil))
261261 }
262262 else true
263263 }
264264
265265
266266 func aD (aj) = {
267267 let aE = {
268268 let o = ak
269269 if ($isInstanceOf(o, "Address"))
270270 then {
271271 let ay = o
272272 n(invoke(ay, "borrowPower", [aj], nil))
273273 }
274274 else 0
275275 }
276276 func W (aF,Y) = {
277277 let aG = aF
278278 let aH = aG._1
279279 let aI = aG._2
280280 let aJ = aG._3
281281 let O = valueOrErrorMessage(addressFromString(Y), "rsr bad address")
282282 let aK = P(O)
283283 let aL = Q(O)
284284 let aM = ai(O, aj)
285285 let aN = aM._1
286286 let aO = aM._2
287287 let aP = aM._3
288288 let aQ = aM._4
289289 let aR = aM._5
290290 let aS = aM._6
291291 let aT = (aJ + (if ((aQ > 0))
292292 then 1
293293 else 0))
294294 let aU = if (aS)
295295 then aP
296296 else 0
297297 let aV = min([aR, aU])
298298 let aW = b(aV, S, a)
299299 if ((aR > aU))
300300 then $Tuple3(aH, ((aI + fraction((aR - aU), a, aL)) + aW), aT)
301301 else $Tuple3((aH + fraction((aU - aR), aK, a)), (aI + aW), aT)
302302 }
303303
304304 let Y = {
305305 let aa = A
306306 let ab = size(aa)
307307 let ac = $Tuple3(aE, 0, 0)
308308 func ad (ae,af) = if ((af >= ab))
309309 then ae
310310 else W(ae, aa[af])
311311
312312 func ag (ae,af) = if ((af >= ab))
313313 then ae
314314 else throw("List size exceeds 20")
315315
316316 ag(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ac, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
317317 }
318318 if (if ((aE > 0))
319319 then (Y._3 > 4)
320320 else false)
321321 then throw("can't have more than 4 borrows")
322322 else Y
323323 }
324324
325325
326326 func aX (aY) = {
327327 let aZ = q(aD(aY))
328328 let ba = aZ._1
329329 let au = aZ._2
330330 let bb = aZ._3
331331 ((("bp:" + toString(ba)) + ", bpu:") + toString(au))
332332 }
333333
334334
335335 func bc (aj,bd) = {
336336 let be = aD(aj)
337337 let ba = be._1
338338 let au = be._2
339339 let bf = (((ba - au) * a) / ba)
340340 if (if ((ba == 0))
341341 then (au == 0)
342342 else false)
343343 then 0
344344 else if (if ((ba == 0))
345345 then (au > 0)
346346 else false)
347347 then throw(((bd + ": breaching liquidation threshold(bp=0, bpu=") + toString(au)))
348348 else if ((R > bf))
349349 then throw((((((((bd + ": breaching liquidation threshold(bp=") + toString(ba)) + ", bpu=") + toString(au)) + ", health=") + toString(bf)) + ")"))
350350 else au
351351 }
352352
353353
354354 func bg (O,aA,aj,bh,bi) = {
355355 let o = G
356356 if ($isInstanceOf(o, "Address"))
357357 then {
358358 let X = o
359359 invoke(X, "onAction", [O, aA, aj, bh, bi], nil)
360360 }
361361 else unit
362362 }
363363
364364
365365 func bj (O,aA,bk,bl,bm) = {
366366 let o = G
367367 if ($isInstanceOf(o, "Address"))
368368 then {
369369 let X = o
370370 invoke(X, "move", [O, aA, bk, bl, bm], nil)
371371 }
372372 else unit
373373 }
374374
375375
376376 func bn (O) = {
377377 let o = G
378378 if ($isInstanceOf(o, "Address"))
379379 then {
380380 let X = o
381381 invoke(X, "syncHeight", [O], nil)
382382 }
383383 else unit
384384 }
385385
386386
387387 func bo (bp,bm,bq) = if (!(bq))
388388 then [ScriptTransfer(bp, bm, L)]
389389 else {
390390 let br = invoke(F, "lockFor", [toString(bp), 1], [AttachedPayment(L, bm)])
391391 if ((br == br))
392392 then nil
393393 else throw("Strict value is not equal to itself.")
394394 }
395395
396396
397397 func bs (k,O,bt) = {
398398 let aj = toString(k.caller)
399399 let bu = aw(aj)
400400 if ((bu == bu))
401401 then {
402402 let bv = bn(O)
403403 if ((bv == bv))
404404 then {
405405 let aA = invoke(ah(O), "depositFor", [aj, bt], k.payments)
406406 if ((aA == aA))
407407 then {
408408 let bm = k.payments[0].amount
409409 let bw = bg(O, "deposit", aj, bm, bm)
410410 if ((bw == bw))
411411 then {
412412 let bx = if (!(bt))
413413 then bc(aj, "depositing")
414414 else 0
415415 if ((bx == bx))
416416 then nil
417417 else throw("Strict value is not equal to itself.")
418418 }
419419 else throw("Strict value is not equal to itself.")
420420 }
421421 else throw("Strict value is not equal to itself.")
422422 }
423423 else throw("Strict value is not equal to itself.")
424424 }
425425 else throw("Strict value is not equal to itself.")
426426 }
427427
428428
429429 let by = split_4C(valueOrErrorMessage(getString(x, "rewardable_reserves"), "no string"), "|")
430430
431431 func bz (aj) = {
432432 let bA = n(invoke(B, "claimEbRewardFor", [aj, -1], nil))
433433 if ((bA == bA))
434434 then {
435435 func W (bB,O) = {
436436 let bC = n(invoke(I, "claimRewardFor", [O, aj, -1], nil))
437437 if ((bC == bC))
438438 then (bB + bC)
439439 else throw("Strict value is not equal to itself.")
440440 }
441441
442442 let bD = {
443443 let aa = by
444444 let ab = size(aa)
445445 let ac = 0
446446 func ad (ae,af) = if ((af >= ab))
447447 then ae
448448 else W(ae, aa[af])
449449
450450 func ag (ae,af) = if ((af >= ab))
451451 then ae
452452 else throw("List size exceeds 20")
453453
454454 ag(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ac, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
455455 }
456456 (bD + bA)
457457 }
458458 else throw("Strict value is not equal to itself.")
459459 }
460460
461461
462462 func bE (aj) = {
463463 func W (bB,O) = {
464464 let bF = valueOrErrorMessage(getString(addressFromStringValue(O), v), "no aTokenId in reserve")
465465 let bC = n(invoke(y, "claimLpRewardFor", [aj, bF, -1], nil))
466466 if ((bC == bC))
467467 then (bB + bC)
468468 else throw("Strict value is not equal to itself.")
469469 }
470470
471471 let bD = {
472472 let aa = by
473473 let ab = size(aa)
474474 let ac = 0
475475 func ad (ae,af) = if ((af >= ab))
476476 then ae
477477 else W(ae, aa[af])
478478
479479 func ag (ae,af) = if ((af >= ab))
480480 then ae
481481 else throw("List size exceeds 20")
482482
483483 ag(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ad(ac, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
484484 }
485485 bD
486486 }
487487
488488
489489 func bG (bH,bI,O,bJ) = {
490490 let bm = n(invoke(am, "withdrawToMain", [bH, bI], nil))
491491 if ((bm == bm))
492492 then {
493493 let bK = invoke(O, "depositFor", [bH, true], [AttachedPayment(i(bI), bm)])
494494 if ((bK == bK))
495495 then {
496496 let bL = bg(bJ, "deposit", bH, bm, bm)
497497 if ((bL == bL))
498498 then unit
499499 else throw("Strict value is not equal to itself.")
500500 }
501501 else throw("Strict value is not equal to itself.")
502502 }
503503 else throw("Strict value is not equal to itself.")
504504 }
505505
506506
507507 func bM () = invoke(F, "shareProfitFromReserves", nil, nil)
508508
509509
510510 func bN (aj,O,bm,bd) = {
511511 let bv = bn(toString(O))
512512 if ((bv == bv))
513513 then {
514514 let bO = n(invoke(O, bd, [aj, bm], nil))
515515 if ((bO == bO))
516516 then {
517517 let bw = bg(toString(O), "deposit", aj, -(bO), -(bO))
518518 if ((bw == bw))
519519 then {
520520 let bP = az("withdraw", O, aj, bO)
521521 if ((bP == bP))
522522 then bO
523523 else throw("Strict value is not equal to itself.")
524524 }
525525 else throw("Strict value is not equal to itself.")
526526 }
527527 else throw("Strict value is not equal to itself.")
528528 }
529529 else throw("Strict value is not equal to itself.")
530530 }
531531
532532
533533 func bQ (aj,bR) = {
534534 let bF = toBase58String(valueOrErrorMessage(bR.assetId, "bad assetId: waves not allowed"))
535535 let s = U(v, bF)
536536 let bv = bn(toString(s))
537537 if ((bv == bv))
538538 then {
539539 let bm = n(invoke(s, "replenishForRepayWithAtokenFor", [aj], [bR]))
540540 if ((bm == bm))
541541 then {
542542 let bS = n(invoke(s, "collapseForAmount", [aj, bm], nil))
543543 if ((bS == bS))
544544 then if ((bm > bS))
545545 then throw("repaying too much")
546546 else {
547547 let bw = bg(toString(s), "borrow", aj, -(bS), -(bS))
548548 if ((bw == bw))
549549 then {
550550 let bT = bg(toString(s), "deposit", aj, (bm - bS), -(bS))
551551 if ((bT == bT))
552552 then nil
553553 else throw("Strict value is not equal to itself.")
554554 }
555555 else throw("Strict value is not equal to itself.")
556556 }
557557 else throw("Strict value is not equal to itself.")
558558 }
559559 else throw("Strict value is not equal to itself.")
560560 }
561561 else throw("Strict value is not equal to itself.")
562562 }
563563
564564
565565 @Callable(k)
566566 func initialize (bU) = [l(u, bU)]
567567
568568
569569
570570 @Callable(k)
571571 func deposit (O,bt) = bs(k, O, bt)
572572
573573
574574
575575 @Callable(k)
576576 func depositRef (O,bt,bV) = bs(k, O, bt)
577577
578578
579579
580580 @Callable(k)
581581 func repay (O) = {
582582 let aj = toString(k.caller)
583583 let bv = bn(O)
584584 if ((bv == bv))
585585 then {
586586 let bW = n(invoke(ah(O), "repayFor", [aj], k.payments))
587587 if ((bW == bW))
588588 then {
589589 let bw = bg(O, "borrow", aj, -(bW), -(bW))
590590 if ((bw == bw))
591591 then nil
592592 else throw("Strict value is not equal to itself.")
593593 }
594594 else throw("Strict value is not equal to itself.")
595595 }
596596 else throw("Strict value is not equal to itself.")
597597 }
598598
599599
600600
601601 @Callable(k)
602602 func mintAtoken (bF,bm) = {
603603 let aj = toString(k.caller)
604604 let s = U(v, bF)
605605 let bv = bn(toString(s))
606606 if ((bv == bv))
607607 then {
608608 let bX = n(invoke(s, "mintAtokenFor", [aj, bm], nil))
609609 if ((bX == bX))
610610 then {
611611 let bw = bg(toString(s), "deposit", aj, -(bX), 0)
612612 if ((bw == bw))
613613 then {
614614 let au = n(bc(aj, "minting"))
615615 if ((au == au))
616616 then {
617617 let bY = at(aj, au, toString(s))
618618 if ((bY == bY))
619619 then nil
620620 else throw("Strict value is not equal to itself.")
621621 }
622622 else throw("Strict value is not equal to itself.")
623623 }
624624 else throw("Strict value is not equal to itself.")
625625 }
626626 else throw("Strict value is not equal to itself.")
627627 }
628628 else throw("Strict value is not equal to itself.")
629629 }
630630
631631
632632
633633 @Callable(k)
634634 func replenishWithAtoken () = {
635635 let aj = toString(k.caller)
636636 let bu = aw(aj)
637637 if ((bu == bu))
638638 then {
639639 let bF = toBase58String(valueOrErrorMessage(k.payments[0].assetId, "bad assetId(w)"))
640640 let O = U(v, bF)
641641 let bv = bn(toString(O))
642642 if ((bv == bv))
643643 then {
644644 let bm = n(invoke(O, "replenishWithAtokenFor", [aj], k.payments))
645645 if ((bm == bm))
646646 then {
647647 let bw = bg(toString(O), "deposit", aj, bm, 0)
648648 if ((bw == bw))
649649 then {
650650 let bP = az("import", O, aj, bm)
651651 if ((bP == bP))
652652 then nil
653653 else throw("Strict value is not equal to itself.")
654654 }
655655 else throw("Strict value is not equal to itself.")
656656 }
657657 else throw("Strict value is not equal to itself.")
658658 }
659659 else throw("Strict value is not equal to itself.")
660660 }
661661 else throw("Strict value is not equal to itself.")
662662 }
663663
664664
665665
666666 @Callable(k)
667667 func redeemAtokens () = {
668668 let aj = toString(k.caller)
669669 let bF = toBase58String(valueOrErrorMessage(k.payments[0].assetId, "bad assetId: WAVES"))
670670 let O = U(v, bF)
671671 let bv = bn(toString(O))
672672 if ((bv == bv))
673673 then {
674674 let bm = n(invoke(O, "redeemAtokensFor", [aj], k.payments))
675675 if ((bm == bm))
676676 then {
677677 let bw = bg(toString(O), "deposit", aj, 0, -(bm))
678678 if ((bw == bw))
679679 then {
680680 let bP = az("redeem", O, aj, bm)
681681 if ((bP == bP))
682682 then nil
683683 else throw("Strict value is not equal to itself.")
684684 }
685685 else throw("Strict value is not equal to itself.")
686686 }
687687 else throw("Strict value is not equal to itself.")
688688 }
689689 else throw("Strict value is not equal to itself.")
690690 }
691691
692692
693693
694694 @Callable(k)
695695 func withdraw (j,bm) = {
696696 let aj = toString(k.caller)
697697 let Y = U(w, j)
698698 let bZ = n(bN(aj, Y, bm, "withdrawFor"))
699699 if ((bZ == bZ))
700700 then {
701701 let au = n(bc(aj, "withdrawing"))
702702 if ((au == au))
703703 then {
704704 let bY = at(aj, au, toString(Y))
705705 if ((bY == bY))
706706 then $Tuple2(nil, bZ)
707707 else throw("Strict value is not equal to itself.")
708708 }
709709 else throw("Strict value is not equal to itself.")
710710 }
711711 else throw("Strict value is not equal to itself.")
712712 }
713713
714714
715715
716716 @Callable(k)
717717 func withdraw2 (O,bm) = {
718718 let aj = toString(k.caller)
719719 let bv = bn(O)
720720 if ((bv == bv))
721721 then {
722722 let ca = ah(O)
723723 let bX = n(invoke(ca, "withdrawFor", [aj, bm], nil))
724724 if ((bX == bX))
725725 then {
726726 let bw = bg(O, "deposit", aj, -(bX), -(bX))
727727 if ((bw == bw))
728728 then {
729729 let au = if (contains(T, aj))
730730 then 0
731731 else {
732732 let bP = az("withdraw", ca, aj, bX)
733733 if ((bP == bP))
734734 then n(bc(aj, "withdrawing2"))
735735 else throw("Strict value is not equal to itself.")
736736 }
737737 let bY = at(aj, au, O)
738738 if ((bY == bY))
739739 then $Tuple2(nil, bX)
740740 else throw("Strict value is not equal to itself.")
741741 }
742742 else throw("Strict value is not equal to itself.")
743743 }
744744 else throw("Strict value is not equal to itself.")
745745 }
746746 else throw("Strict value is not equal to itself.")
747747 }
748748
749749
750750
751751 @Callable(k)
752752 func protectCollateral (O) = {
753753 let aj = toString(k.caller)
754754 let Y = ah(O)
755755 let bm = n(bN(aj, Y, -1, "withdrawToMain"))
756756 if ((bm == bm))
757757 then {
758758 let cb = getStringValue(Y, w)
759759 let cc = invoke(am, "supplyFor", [aj], [AttachedPayment(i(cb), bm)])
760760 if ((cc == cc))
761761 then {
762762 let bY = at(aj, aD(aj)._2, O)
763763 if ((bY == bY))
764764 then $Tuple2(nil, bm)
765765 else throw("Strict value is not equal to itself.")
766766 }
767767 else throw("Strict value is not equal to itself.")
768768 }
769769 else throw("Strict value is not equal to itself.")
770770 }
771771
772772
773773
774774 @Callable(k)
775775 func withdrawProtectedCollateral (j,bm) = {
776776 let aj = toString(k.caller)
777777 let X = n(invoke(valueOrErrorMessage(am, "no protectedReserve"), "withdrawFor", [aj, j, bm], nil))
778778 if ((X == X))
779779 then {
780780 let bx = bc(aj, "withdrawing protected")
781781 if ((bx == bx))
782782 then nil
783783 else throw("Strict value is not equal to itself.")
784784 }
785785 else throw("Strict value is not equal to itself.")
786786 }
787787
788788
789789
790790 @Callable(k)
791791 func normalizeCollateral (O) = {
792792 let bH = toString(k.caller)
793793 let cd = ah(O)
794794 if ((cd == cd))
795795 then {
796796 let bv = bn(O)
797797 if ((bv == bv))
798798 then {
799799 let cb = valueOrErrorMessage(getString(cd, w), ("no assetId in rsv: " + O))
800800 let ce = bG(bH, cb, cd, O)
801801 if ((ce == ce))
802802 then nil
803803 else throw("Strict value is not equal to itself.")
804804 }
805805 else throw("Strict value is not equal to itself.")
806806 }
807807 else throw("Strict value is not equal to itself.")
808808 }
809809
810810
811811
812812 @Callable(k)
813813 func borrow (j,bm) = {
814814 let aj = toString(k.caller)
815815 let O = U(w, j)
816816 let bv = bn(toString(O))
817817 if ((bv == bv))
818818 then {
819819 let X = invoke(O, "borrowFor", [aj, bm], nil)
820820 if ((X == X))
821821 then {
822822 let bw = bg(toString(O), "borrow", aj, bm, bm)
823823 if ((bw == bw))
824824 then {
825825 let bP = az("borrow", O, aj, bm)
826826 if ((bP == bP))
827827 then {
828828 let au = n(bc(aj, "borrowing"))
829829 if ((au == au))
830830 then {
831831 let bY = ap(aj)
832832 if ((bY == bY))
833833 then nil
834834 else throw("Strict value is not equal to itself.")
835835 }
836836 else throw("Strict value is not equal to itself.")
837837 }
838838 else throw("Strict value is not equal to itself.")
839839 }
840840 else throw("Strict value is not equal to itself.")
841841 }
842842 else throw("Strict value is not equal to itself.")
843843 }
844844 else throw("Strict value is not equal to itself.")
845845 }
846846
847847
848848
849849 @Callable(k)
850850 func borrow2 (O,bm) = {
851851 let aj = toString(k.caller)
852852 let Y = ah(O)
853853 let bv = bn(O)
854854 if ((bv == bv))
855855 then {
856856 let X = invoke(Y, "borrowFor", [aj, bm], nil)
857857 if ((X == X))
858858 then {
859859 let bw = bg(O, "borrow", aj, bm, bm)
860860 if ((bw == bw))
861861 then {
862862 let bP = az("borrow", Y, aj, bm)
863863 if ((bP == bP))
864864 then {
865865 let au = n(bc(aj, "borrowing"))
866866 if ((au == au))
867867 then {
868868 let bY = ap(aj)
869869 if ((bY == bY))
870870 then nil
871871 else throw("Strict value is not equal to itself.")
872872 }
873873 else throw("Strict value is not equal to itself.")
874874 }
875875 else throw("Strict value is not equal to itself.")
876876 }
877877 else throw("Strict value is not equal to itself.")
878878 }
879879 else throw("Strict value is not equal to itself.")
880880 }
881881 else throw("Strict value is not equal to itself.")
882882 }
883883
884884
885885
886886 @Callable(k)
887887 func collapse (O,bm) = {
888888 let aj = toString(k.caller)
889889 let bv = bn(O)
890890 if ((bv == bv))
891891 then {
892892 let bS = n(invoke(ah(O), "collapseForAmount", [aj, bm], nil))
893893 if ((bS == bS))
894894 then {
895895 let bw = bg(O, "borrow", aj, -(bS), -(bS))
896896 if ((bw == bw))
897897 then {
898898 let bT = bg(O, "deposit", aj, -(bS), -(bS))
899899 if ((bT == bT))
900900 then nil
901901 else throw("Strict value is not equal to itself.")
902902 }
903903 else throw("Strict value is not equal to itself.")
904904 }
905905 else throw("Strict value is not equal to itself.")
906906 }
907907 else throw("Strict value is not equal to itself.")
908908 }
909909
910910
911911
912912 @Callable(k)
913913 func claimEbReward2 (bm,bq) = {
914914 let aj = toString(k.caller)
915915 let bS = n(invoke(B, "claimEbRewardFor", [aj, bm], nil))
916916 if ((bS == bS))
917917 then bo(k.caller, bS, bq)
918918 else throw("Strict value is not equal to itself.")
919919 }
920920
921921
922922
923923 @Callable(k)
924924 func claimReward2 (O,bm,bq) = {
925925 let cf = ah(O)
926926 if ((cf == cf))
927927 then {
928928 let aj = toString(k.caller)
929929 let bS = n(invoke(I, "claimRewardFor", [O, aj, bm], nil))
930930 if ((bS == bS))
931931 then bo(k.caller, bS, bq)
932932 else throw("Strict value is not equal to itself.")
933933 }
934934 else throw("Strict value is not equal to itself.")
935935 }
936936
937937
938938
939939 @Callable(k)
940940 func claimAllRewardsAndAllEbAvailable2 (bq,cg) = {
941941 let aj = toString(k.caller)
942942 let ch = bz(aj)
943943 if ((ch == ch))
944944 then {
945945 let ci = bE(aj)
946946 if ((ci == ci))
947947 then {
948948 let cj = if (cg)
949949 then n(invoke(E, "unstakeAllViresFrom", [aj], nil))
950950 else 0
951951 if ((cj == cj))
952952 then bo(k.caller, ((ch + ci) + cj), bq)
953953 else throw("Strict value is not equal to itself.")
954954 }
955955 else throw("Strict value is not equal to itself.")
956956 }
957957 else throw("Strict value is not equal to itself.")
958958 }
959959
960960
961961
962962 @Callable(k)
963963 func disableUseAsCollateral (O) = {
964964 let aj = toString(k.caller)
965965 let H = invoke(ah(O), "disableUseAsCollateralFor", [aj], nil)
966966 if ((H == H))
967967 then {
968968 let bx = bc(aj, "changing collateral status")
969969 if ((bx == bx))
970970 then nil
971971 else throw("Strict value is not equal to itself.")
972972 }
973973 else throw("Strict value is not equal to itself.")
974974 }
975975
976976
977977
978978 @Callable(k)
979979 func lockVires (ck,cl) = {
980980 let aj = toString(k.caller)
981981 let X = bM()
982982 if ((X == X))
983983 then {
984984 let cm = if (cl)
985985 then n(invoke(E, "unstakeAllViresFrom", [aj], nil))
986986 else 0
987987 let cn = (cm + M(k))
988988 let aC = invoke(F, "lockFor", [aj, ck], if ((cn == 0))
989989 then nil
990990 else [AttachedPayment(L, cn)])
991991 if ((aC == aC))
992992 then nil
993993 else throw("Strict value is not equal to itself.")
994994 }
995995 else throw("Strict value is not equal to itself.")
996996 }
997997
998998
999999
10001000 @Callable(k)
10011001 func withdrawAllPossibleVires () = {
10021002 let aj = toString(k.caller)
10031003 let X = bM()
10041004 if ((X == X))
10051005 then {
10061006 let co = n(invoke(E, "unstakeAllViresFrom", [aj], nil))
10071007 if ((co == co))
10081008 then {
10091009 let cp = invoke(F, "withdrawUnlockedFor", [aj], nil)
10101010 if ((cp == cp))
10111011 then [ScriptTransfer(k.caller, co, L)]
10121012 else throw("Strict value is not equal to itself.")
10131013 }
10141014 else throw("Strict value is not equal to itself.")
10151015 }
10161016 else throw("Strict value is not equal to itself.")
10171017 }
10181018
10191019
10201020
10211021 @Callable(k)
10221022 func claimProtocolProfitFrom (bk,cq) = {
10231023 let aj = toString(k.caller)
10241024 let X = bM()
10251025 if ((X == X))
10261026 then {
10271027 let cp = invoke(F, "claimProfit", [bk, aj, cq], nil)
10281028 if ((cp == cp))
10291029 then nil
10301030 else throw("Strict value is not equal to itself.")
10311031 }
10321032 else throw("Strict value is not equal to itself.")
10331033 }
10341034
10351035
10361036
10371037 @Callable(k)
10381038 func withdrawUnlockedVires () = {
10391039 let X = bM()
10401040 if ((X == X))
10411041 then {
10421042 let cp = invoke(F, "withdrawUnlockedFor", [toString(k.caller)], nil)
10431043 if ((cp == cp))
10441044 then nil
10451045 else throw("Strict value is not equal to itself.")
10461046 }
10471047 else throw("Strict value is not equal to itself.")
10481048 }
10491049
10501050
10511051
10521052 @Callable(k)
10531053 func lockSupply (av,cr) = {
10541054 let O = ah(av)
10551055 let aj = toString(k.caller)
10561056 let bu = aw(aj)
10571057 if ((bu == bu))
10581058 then {
10591059 let bF = value(i(valueOrErrorMessage(getString(O, "aTokenId"), "no aTokenId in reserve")))
10601060 let cs = if ((size(k.payments) == 0))
10611061 then unit
10621062 else if ((k.payments[0].assetId == bF))
10631063 then unit
10641064 else if ((k.payments[0].assetId == i(valueOrErrorMessage(getString(O, w), "no assetId in reserve"))))
10651065 then {
10661066 let bv = bn(av)
10671067 if ((bv == bv))
10681068 then {
10691069 let aA = invoke(O, "depositFor", [aj, true], k.payments)
10701070 if ((aA == aA))
10711071 then {
10721072 let bm = k.payments[0].amount
10731073 let bw = bg(av, "deposit", aj, bm, bm)
10741074 if ((bw == bw))
10751075 then unit
10761076 else throw("Strict value is not equal to itself.")
10771077 }
10781078 else throw("Strict value is not equal to itself.")
10791079 }
10801080 else throw("Strict value is not equal to itself.")
10811081 }
10821082 else throw("bad asset attached")
10831083 if ((cs == cs))
10841084 then {
10851085 let ct = {
10861086 let bv = bn(av)
10871087 if ((bv == bv))
10881088 then {
10891089 let bX = n(invoke(O, "mintAtokenForTo", [aj, -1, toString(this)], nil))
10901090 if ((bX == bX))
10911091 then {
10921092 let bw = bg(toString(O), "deposit", aj, -(bX), 0)
10931093 if ((bw == bw))
10941094 then {
10951095 let bx = bc(aj, "lock-minting")
10961096 if ((bx == bx))
10971097 then nil
10981098 else throw("Strict value is not equal to itself.")
10991099 }
11001100 else throw("Strict value is not equal to itself.")
11011101 }
11021102 else throw("Strict value is not equal to itself.")
11031103 }
11041104 else throw("Strict value is not equal to itself.")
11051105 }
11061106 if ((ct == ct))
11071107 then {
11081108 let cu = assetBalance(this, bF)
11091109 let Y = invoke(y, "lockLP", [aj, cr], [AttachedPayment(bF, cu)])
11101110 if ((Y == Y))
11111111 then $Tuple2(nil, cu)
11121112 else throw("Strict value is not equal to itself.")
11131113 }
11141114 else throw("Strict value is not equal to itself.")
11151115 }
11161116 else throw("Strict value is not equal to itself.")
11171117 }
11181118 else throw("Strict value is not equal to itself.")
11191119 }
11201120
11211121
11221122
11231123 @Callable(k)
11241124 func repayWithAtokenFor (aj) = {
11251125 let bu = if (!(isDefined(addressFromString(aj))))
11261126 then throw("bad user")
11271127 else true
11281128 if ((bu == bu))
11291129 then bQ(aj, k.payments[0])
11301130 else throw("Strict value is not equal to itself.")
11311131 }
11321132
11331133
11341134
11351135 @Callable(k)
11361136 func repayWithAtoken () = bQ(toString(k.caller), k.payments[0])
11371137
11381138
11391139
11401140 @Callable(k)
11411141 func repayFor (O,aj) = {
11421142 let bu = if (!(isDefined(addressFromString(aj))))
11431143 then throw("bad user")
11441144 else true
11451145 if ((bu == bu))
11461146 then {
11471147 let bv = bn(O)
11481148 if ((bv == bv))
11491149 then {
11501150 let bW = n(invoke(ah(O), "repayFor", [aj], k.payments))
11511151 if ((bW == bW))
11521152 then {
11531153 let bw = bg(O, "borrow", aj, -(bW), -(bW))
11541154 if ((bw == bw))
11551155 then nil
11561156 else throw("Strict value is not equal to itself.")
11571157 }
11581158 else throw("Strict value is not equal to itself.")
11591159 }
11601160 else throw("Strict value is not equal to itself.")
11611161 }
11621162 else throw("Strict value is not equal to itself.")
11631163 }
11641164
11651165
11661166
11671167 @Callable(k)
11681168 func healthOf (cv) = {
11691169 let cw = q(aD(cv))
11701170 let ba = cw._1
11711171 let au = cw._2
11721172 let bb = cw._3
11731173 $Tuple2(nil, $Tuple2(ba, au))
11741174 }
11751175
11761176

github/deemru/w8io/3ef1775 
103.38 ms