tx · AUBeCBTJRZVGSKTRSYbX3Zn41p5xXKXKCpxbNABJ7V8P

3N6PvAL6whpaLE48xjeZbmU7vRWQmuz8AA5:  -0.02000000 Waves

2024.12.31 03:01 [3437939] smart account 3N6PvAL6whpaLE48xjeZbmU7vRWQmuz8AA5 > SELF 0.00000000 Waves

{ "type": 13, "id": "AUBeCBTJRZVGSKTRSYbX3Zn41p5xXKXKCpxbNABJ7V8P", "fee": 2000000, "feeAssetId": null, "timestamp": 1735603352481, "version": 2, "chainId": 84, "sender": "3N6PvAL6whpaLE48xjeZbmU7vRWQmuz8AA5", "senderPublicKey": "3ZB9kd3fTB7j5xvuxZe67A7aT4cNTs2gUk1tyFaCdWJ6", "proofs": [ "CEtizJPSA3uWCMbSzNi6ZWJusGu5Rx7MC4RG2Yga75C72mrWiiAi4ijpjUhBuDj7b1uadNgfUjK2x3gXcX2moWL" ], "script": "base64:BgIcCAISAwoBCBIDCgEIEgMKAQgSAwoBCBIECgIICDIBFHRyeUdldFN0cmluZ0V4dGVybmFsAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAnQgCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhAgABEXRyeUdldEludEV4dGVybmFsAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAmggCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhCQACAQIbUlRHSUU6IFNvbWV0aGluZyB3ZW50IHdyb25nAQlhc0Jvb2xlYW4BBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAdib29sZWFuBQckbWF0Y2gwBQdib29sZWFuCQACAQIiRkFCOiB3cm9uZyB0eXBlLCBleHBlY3RlZDogQm9vbGVhbgEMdHJ5R2V0U3RyaW5nAQNrZXkJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIFBHRoaXMFA2tleQAQZGVsYXlGb3JIYXRjaGluZwACARdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwACFHN0YXRpY19vcmFjbGVBZGRyZXNzARRzdGF0aWNLZXlfZWdnQXNzZXRJZAACEXN0YXRpY19lZ2dBc3NldElkARpzdGF0aWNLZXlfaW5jdWJhdG9yQWRkcmVzcwACF3N0YXRpY19pbmN1YmF0b3JBZGRyZXNzARhzdGF0aWNLZXlfYnJlZWRlckFkZHJlc3MAAhVzdGF0aWNfYnJlZWRlckFkZHJlc3MBGHN0YXRpY0tleV9mYXJtaW5nQWRkcmVzcwACGHN0YXRpY19mYXJtaW5nQWRkcmVzc05ldwEZc3RhdGljS2V5X2JhYnlEdWNrQWRkcmVzcwACFnN0YXRpY19iYWJ5RHVja0FkZHJlc3MBGXN0YXRpY0tleV9nYW1lRGFwcEFkZHJlc3MAAhZzdGF0aWNfZ2FtZURhcHBBZGRyZXNzARZzdGF0aWNLZXlfaXRlbXNBZGRyZXNzAAITc3RhdGljX2l0ZW1zQWRkcmVzcwEYc3RhdGljS2V5X2NvdXBvbnNBZGRyZXNzAAIVc3RhdGljX2NvdXBvbnNBZGRyZXNzARVzdGF0aWNLZXlfaHVudEFkZHJlc3MAAhJzdGF0aWNfaHVudEFkZHJlc3MBFXN0YXRpY0tleV9idXJuQWRkcmVzcwACEnN0YXRpY19idXJuQWRkcmVzcwEcc3RhdGljS2V5X3JlZkNvbnRyYWN0QWRkcmVzcwACGXN0YXRpY19yZWZDb250cmFjdEFkZHJlc3MBEnN0YXRpY0tleV9leHRyYUZlZQACD3N0YXRpY19leHRyYUZlZQEXc3RhdGljS2V5X2ZlZUFnZ3JlZ2F0b3IAAhRzdGF0aWNfZmVlQWdncmVnYXRvcgEJZ2V0T3JhY2xlAAkBB0FkZHJlc3MBCQDZBAEJAQx0cnlHZXRTdHJpbmcBCQEXc3RhdGljS2V5X29yYWNsZUFkZHJlc3MAAQ1nZXRFZ2dBc3NldElkAAkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBFHN0YXRpY0tleV9lZ2dBc3NldElkAAETZ2V0SW5jdWJhdG9yQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBGnN0YXRpY0tleV9pbmN1YmF0b3JBZGRyZXNzAAERZ2V0QnJlZWRlckFkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARhzdGF0aWNLZXlfYnJlZWRlckFkZHJlc3MAARFnZXRGYXJtaW5nQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBGHN0YXRpY0tleV9mYXJtaW5nQWRkcmVzcwABEmdldEJhYnlEdWNrQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBGXN0YXRpY0tleV9iYWJ5RHVja0FkZHJlc3MAARJnZXRHYW1lRGFwcEFkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARlzdGF0aWNLZXlfZ2FtZURhcHBBZGRyZXNzAAEPZ2V0SXRlbXNBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEWc3RhdGljS2V5X2l0ZW1zQWRkcmVzcwABEWdldENvdXBvbnNBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEYc3RhdGljS2V5X2NvdXBvbnNBZGRyZXNzAAEOZ2V0SHVudEFkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARVzdGF0aWNLZXlfaHVudEFkZHJlc3MAAQ5nZXRCdXJuQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBFXN0YXRpY0tleV9idXJuQWRkcmVzcwABFWdldFJlZkNvbnRyYWN0QWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBHHN0YXRpY0tleV9yZWZDb250cmFjdEFkZHJlc3MAARBnZXRGZWVBZ2dyZWdhdG9yAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEXc3RhdGljS2V5X2ZlZUFnZ3JlZ2F0b3IAAQljaGVja1JlYWwBB2Fzc2V0SWQDAwkAAAIICQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQGaXNzdWVyCQERZ2V0QnJlZWRlckFkZHJlc3MABgkAAAIICQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQGaXNzdWVyCQETZ2V0SW5jdWJhdG9yQWRkcmVzcwAICQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQGaXNzdWVyCQACAQINbm90IHZhbGlkIE5GVAEWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAEHcGF5bWVudAMJAQlpc0RlZmluZWQBCAUHcGF5bWVudAdhc3NldElkCQACAQIZUkNBUDogUGxlYXNlIGF0dGFjaCB3YXZlcwQJZmVlQW1vdW50CQERQGV4dHJOYXRpdmUoMTA1MCkCCQEJZ2V0T3JhY2xlAAkBEnN0YXRpY0tleV9leHRyYUZlZQADCQECIT0CCAUHcGF5bWVudAZhbW91bnQFCWZlZUFtb3VudAkAAgEJAKwCAgkArAICAhxSQ0FQOiBQbGVhc2UgYXR0YWNoIGV4YWN0bHkgCQCkAwEFCWZlZUFtb3VudAITIGFtb3VudCBvZiB3YXZlbGV0cwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEQZ2V0RmVlQWdncmVnYXRvcgAFCWZlZUFtb3VudAUEdW5pdAUDbmlsABJQSE9FTklYQkFTRU9QVElPTlMA6AcBDXRyeUdldEludGVnZXIBA2tleQQHJG1hdGNoMAkAmggCBQR0aGlzBQNrZXkDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwBQFiAAABCGFzU3RyaW5nAQV2YWx1ZQQHJG1hdGNoMAUFdmFsdWUDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzAwkAAQIFByRtYXRjaDACA0ludAQBcwUHJG1hdGNoMAkAAgECJndyb25nIHR5cGUsIGV4cGVjdGVkOiBTdHJpbmcsIGdvdDogSW50AwkAAQIFByRtYXRjaDACBFVuaXQEAXMFByRtYXRjaDAJAAIBAid3cm9uZyB0eXBlLCBleHBlY3RlZDogU3RyaW5nLCBnb3Q6IFVuaXQJAAIBAhx3cm9uZyB0eXBlLCBleHBlY3RlZDogU3RyaW5nAAlmZWVBbW91bnQJAQ10cnlHZXRJbnRlZ2VyAQIMY3VycmVudFByaWNlARBnZXRBbW91bnRPckNsZWFyAQZhbW91bnQDCQEIY29udGFpbnMCBQZhbW91bnQCATACAAUGYW1vdW50AQ5nZXRBc3NldE9yaWdpbgEKZ2VuZXJhdGlvbgMJAAACBQpnZW5lcmF0aW9uAgFHCQETZ2V0SW5jdWJhdG9yQWRkcmVzcwAJARFnZXRCcmVlZGVyQWRkcmVzcwABDmdldEFzc2V0UmFyaXR5AghnZW5vdHlwZQpnZW5lcmF0aW9uBAhxdWFudGl0eQkBEUBleHRyTmF0aXZlKDEwNTApAgkBDmdldEFzc2V0T3JpZ2luAQUKZ2VuZXJhdGlvbgkArAICCQCsAgICBnN0YXRzXwUIZ2Vub3R5cGUCCV9xdWFudGl0eQQFcG93ZXIJAGwGCQBpAgCQTgUIcXVhbnRpdHkABAAFAAEAAgUFRkxPT1IDCQBmAgUFcG93ZXIAAAUFcG93ZXIAAgEUZ2V0QXNzZXRGYXJtaW5nUG93ZXIBB2Fzc2V0SWQDAwkAAAIICQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQGaXNzdWVyCQERZ2V0QnJlZWRlckFkZHJlc3MABgkAAAIICQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQGaXNzdWVyCQETZ2V0SW5jdWJhdG9yQWRkcmVzcwAECWFzc2V0TmFtZQgJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZARuYW1lBApnZW5lcmF0aW9uCQCvAgIJALICAgUJYXNzZXROYW1lAAIAAQQHZmFybUdlbgkBCGFzU3RyaW5nAQkA/AcECQERZ2V0QnJlZWRlckFkZHJlc3MAAg5nZXRHZW5Gcm9tTmFtZQkAzAgCBQlhc3NldE5hbWUFA25pbAUDbmlsAwkAAAIFB2Zhcm1HZW4FB2Zhcm1HZW4JAJQKAgUHZmFybUdlbgkBDmdldEFzc2V0UmFyaXR5AgUHZmFybUdlbgUKZ2VuZXJhdGlvbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECDW5vdCB2YWxpZCBORlQBD2dldFJhbmRvbU51bWJlcgQHb3B0aW9ucwR0eElkFGhhdGNoaW5nRmluaXNoSGVpZ2h0Bm9mZnNldAQPcmFuZG9tU2VlZEJsb2NrCQEFdmFsdWUBCQDtBwEJAGUCBRRoYXRjaGluZ0ZpbmlzaEhlaWdodAABBApyYW5kb21IYXNoCQD3AwEJAMsBAgUEdHhJZAkBBXZhbHVlAQgFD3JhbmRvbVNlZWRCbG9jawN2cmYJAGoCCQCyCQIFCnJhbmRvbUhhc2gJAGgCBQZvZmZzZXQACAUHb3B0aW9ucwEMZ2V0UmFuZG9tV2luBAJ0eAxmaW5pc2hIZWlnaHQLYXNzZXRSYXJpdHkNYmxhY2tsaXN0Q29kZQQOcGhvZW5peE9wdGlvbnMJAGUCBRJQSE9FTklYQkFTRU9QVElPTlMJAGsDCQBpAgUSUEhPRU5JWEJBU0VPUFRJT05TAAIFC2Fzc2V0UmFyaXR5AGQEDWphY2twb3RSYW5kb20JAQ9nZXRSYW5kb21OdW1iZXIEBQ5waG9lbml4T3B0aW9ucwUCdHgFDGZpbmlzaEhlaWdodAABAwkAAAIFDWphY2twb3RSYW5kb20AAQIHcGhvZW5peAQBbgkBD2dldFJhbmRvbU51bWJlcgQA6AcFAnR4BQxmaW5pc2hIZWlnaHQAAAIJaW5jdWJhdG9yAQ9nZXRSYW5kb21SZXR1cm4CAnR4DGZpbmlzaEhlaWdodAQBbgkBD2dldFJhbmRvbU51bWJlcgQAAgUCdHgFDGZpbmlzaEhlaWdodAABAwkAAAIFAW4AAAYHAQlnZXRPcmlnaW4BB2Fzc2V0SWQECWFzc2V0TmFtZQgJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZARuYW1lBApnZW5lcmF0aW9uCQCvAgIJALICAgUJYXNzZXROYW1lAAIAAQMDCQAAAgUKZ2VuZXJhdGlvbgIBRwYJAAACBQpnZW5lcmF0aW9uAgFKCQETZ2V0SW5jdWJhdG9yQWRkcmVzcwAJARFnZXRCcmVlZGVyQWRkcmVzcwABBWFzSW50AQV2YWx1ZQQHJG1hdGNoMAUFdmFsdWUDCQABAgUHJG1hdGNoMAIDSW50BANpbnQFByRtYXRjaDAFA2ludAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnN0cmluZwUHJG1hdGNoMAkAAgEJAKwCAgIpUkFJOiB3cm9uZyB0eXBlLCBleHBlY3RlZDogSW50LCBidXQgZ290OiAFBnN0cmluZwkAAgECHlJBSTogd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IEludAEHZ2V0Qm9vbAEDa2V5BAckbWF0Y2gwCQCbCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAFiBQckbWF0Y2gwBQFiBwEJaXNUZXN0RW52AAkBB2dldEJvb2wBAgdURVNURU5WARVmaW5pc2hSZWJpcnRoSW50ZXJuYWwGBmluaXRUeAdhZGRyZXNzEWFkZGl0aW9uYWxQYXltZW50BmRvdWJsZQ1ibGFja2xpc3RDb2RlBnJlc2N1ZQQLZmluaXNoQmxvY2sJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIMX2ZpbmlzaEJsb2NrBAthc3NldFJhcml0eQkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AgxfYXNzZXRSYXJpdHkEBnN0YXR1cwkBDHRyeUdldFN0cmluZwEJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCB19zdGF0dXMEDHZhbGlkUGF5bWVudAkBFmNoZWNrQWRkaXRpb25hbFBheW1lbnQBBRFhZGRpdGlvbmFsUGF5bWVudAMJAAACBQx2YWxpZFBheW1lbnQFDHZhbGlkUGF5bWVudAQMcmVjb3JkQWN0aW9uCQD8BwQJARFnZXRDb3Vwb25zQWRkcmVzcwACDHJlY29yZEFjdGlvbgkAzAgCAgdSRUJJUlRIBQNuaWwFA25pbAMJAAACBQxyZWNvcmRBY3Rpb24FDHJlY29yZEFjdGlvbgoBFGdldEFjY2Vzc0l0ZW1Bc3NldElkAQdhZGRyZXNzCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIFB2FkZHJlc3MCGHN0YXRpY19hY2Nlc3NJdGVtQXNzZXRJZAoBEmdldEFjY2Vzc0l0ZW1QcmljZQEHYWRkcmVzcwkBEXRyeUdldEludEV4dGVybmFsAgUHYWRkcmVzcwIWc3RhdGljX2FjY2Vzc0l0ZW1QcmljZQMJAQIhPQIFBnN0YXR1cwIEb3BlbgkAAgECH3JlYmlydGggaXMgZmluaXNoZWQgb3Igbm90IG9wZW4DCQBmAgULZmluaXNoQmxvY2sFBmhlaWdodAkAAgECHnlvdSBjYW5ub3QgZmluaXNoIHJlYmlydGgsIHlldAQDd2luCQEMZ2V0UmFuZG9tV2luBAkA2QQBBQZpbml0VHgFC2ZpbmlzaEJsb2NrBQthc3NldFJhcml0eQUNYmxhY2tsaXN0Q29kZQQEdHhJZAUGaW5pdFR4BAZyZXN1bHQDCQECIT0CCQCzCQIFA3dpbgIFcGVyY2gFBHVuaXQEBWNvbG9yCQCyAgIFA3dpbgABBAZyZXN1bHQDCQEBIQEFBmRvdWJsZQQFZmlyc3QJAPwHBAkBEWdldEZhcm1pbmdBZGRyZXNzAAIMYWRkRnJlZVBlcmNoCQDMCAIFB2FkZHJlc3MJAMwIAgUFY29sb3IJAMwIAgABBQNuaWwFA25pbAMJAAACBQVmaXJzdAUFZmlyc3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIHX3Jlc3VsdAkBCGFzU3RyaW5nAQUFZmlyc3QFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQFZmlyc3QJAPwHBAkBEWdldEZhcm1pbmdBZGRyZXNzAAIMYWRkRnJlZVBlcmNoCQDMCAIFB2FkZHJlc3MJAMwIAgUFY29sb3IJAMwIAgACBQNuaWwFA25pbAMJAAACBQVmaXJzdAUFZmlyc3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIHX3Jlc3VsdAkBCGFzU3RyaW5nAQUFZmlyc3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIIX3Jlc3VsdDEJAQhhc1N0cmluZwEFBWZpcnN0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCBV93aW4xBQN3aW4FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQZyZXN1bHQFBnJlc3VsdAUGcmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFA3dpbgIJaW5jdWJhdG9yBAZyZXN1bHQDCQEBIQEFBmRvdWJsZQQFZmlyc3QJAPwHBAkBE2dldEluY3ViYXRvckFkZHJlc3MAAg1pc3N1ZUZyZWVEdWNrCQDMCAIFB2FkZHJlc3MJAMwIAgUEdHhJZAUDbmlsBQNuaWwDCQAAAgUFZmlyc3QFBWZpcnN0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCB19yZXN1bHQJAQhhc1N0cmluZwEFBWZpcnN0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EBWZpcnN0CQD8BwQJARNnZXRJbmN1YmF0b3JBZGRyZXNzAAINaXNzdWVGcmVlRHVjawkAzAgCBQdhZGRyZXNzCQDMCAIFBHR4SWQFA25pbAUDbmlsAwkAAAIFBWZpcnN0BQVmaXJzdAQGc2Vjb25kCQD8BwQJARJnZXRCYWJ5RHVja0FkZHJlc3MAAhFpc3N1ZUZyZWVEdWNrbGluZwkAzAgCBQdhZGRyZXNzCQDMCAIFBHR4SWQJAMwIAgBkBQNuaWwFA25pbAMJAAACBQZzZWNvbmQFBnNlY29uZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AgdfcmVzdWx0CQEIYXNTdHJpbmcBBQVmaXJzdAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AghfcmVzdWx0MQkBCGFzU3RyaW5nAQUGc2Vjb25kCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCBV93aW4xAgxkdWNrbGluZ18xMDAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQZyZXN1bHQFBnJlc3VsdAUGcmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFA3dpbgICYXIEB2Fzc2V0SWQJARRnZXRBY2Nlc3NJdGVtQXNzZXRJZAEJAQ5nZXRIdW50QWRkcmVzcwAEBXByaWNlCQESZ2V0QWNjZXNzSXRlbVByaWNlAQkBDmdldEh1bnRBZGRyZXNzAAQEY2FsbAkA/AcECQEOZ2V0SHVudEFkZHJlc3MAAhJidXlBY2Nlc3NJdGVtT3RoZXIJAMwIAgUHYWRkcmVzcwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQdhc3NldElkBQVwcmljZQUDbmlsAwkAAAIFBGNhbGwFBGNhbGwJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIHX3Jlc3VsdAkBCGFzU3RyaW5nAQUEY2FsbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFA3dpbgIHcGhvZW5peAQEY2FsbAkA/AcECQETZ2V0SW5jdWJhdG9yQWRkcmVzcwACDGlzc3VlSmFja3BvdAkAzAgCBQdhZGRyZXNzCQDMCAIFBHR4SWQJAMwIAgIIV1dXV1dXV1AFA25pbAUDbmlsAwkAAAIFBGNhbGwFBGNhbGwJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIHX3Jlc3VsdAkBCGFzU3RyaW5nAQUEY2FsbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkBAiE9AgkAswkCBQN3aW4CCGR1Y2tsaW5nBQR1bml0BAVsZXZlbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgUDd2luAgFfAAEECmxldmVsRmluYWwDBQZkb3VibGUJAGgCAAIFBWxldmVsBQVsZXZlbAQEY2FsbAkA/AcECQESZ2V0QmFieUR1Y2tBZGRyZXNzAAIRaXNzdWVGcmVlRHVja2xpbmcJAMwIAgUHYWRkcmVzcwkAzAgCBQR0eElkCQDMCAIFCmxldmVsRmluYWwFA25pbAUDbmlsAwkAAAIFBGNhbGwFBGNhbGwJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIHX3Jlc3VsdAkBCGFzU3RyaW5nAQUEY2FsbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkBAiE9AgkAswkCBQN3aW4CBGl0ZW0FBHVuaXQECGl0ZW1OYW1lCQCRAwIJALUJAgUDd2luAgEhAAEEBnJlc3VsdAMJAQEhAQUGZG91YmxlBAVmaXJzdAkA/AcECQEPZ2V0SXRlbXNBZGRyZXNzAAISaXNzdWVBcnRlZmFjdEluZGV4CQDMCAIFCGl0ZW1OYW1lCQDMCAIFB2FkZHJlc3MJAMwIAgAABQNuaWwFA25pbAMJAAACBQVmaXJzdAUFZmlyc3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIHX3Jlc3VsdAkBCGFzU3RyaW5nAQUFZmlyc3QFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQFZmlyc3QJAPwHBAkBD2dldEl0ZW1zQWRkcmVzcwACEmlzc3VlQXJ0ZWZhY3RJbmRleAkAzAgCBQhpdGVtTmFtZQkAzAgCBQdhZGRyZXNzCQDMCAIAAAUDbmlsBQNuaWwDCQAAAgUFZmlyc3QFBWZpcnN0BAZzZWNvbmQJAPwHBAkBD2dldEl0ZW1zQWRkcmVzcwACEmlzc3VlQXJ0ZWZhY3RJbmRleAkAzAgCBQhpdGVtTmFtZQkAzAgCBQdhZGRyZXNzCQDMCAIAAQUDbmlsBQNuaWwDCQAAAgUGc2Vjb25kBQZzZWNvbmQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIHX3Jlc3VsdAkBCGFzU3RyaW5nAQUFZmlyc3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIHX3Jlc3VsdAkBCGFzU3RyaW5nAQUGc2Vjb25kCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCBV93aW4xBQN3aW4FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQZyZXN1bHQFBnJlc3VsdAUGcmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIzUkZCOiBTb21lIGVycm9yIG9jY3VyZWQsIHBsZWFzZSBjb250YWN0IHRoZSBhZG1pbnMhBA5yZXR1cm5Ub1NlbmRlcgMFBnJlc2N1ZQkBD2dldFJhbmRvbVJldHVybgIJANkEAQUGaW5pdFR4BQtmaW5pc2hCbG9jawcEDXJldHVyblBheWxvYWQDBQ5yZXR1cm5Ub1NlbmRlcgQHYXNzZXRJZAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AghfYXNzZXRJZAQGaXNzdWVyCQEJY2hlY2tSZWFsAQUHYXNzZXRJZAQDZ2VuCQEIYXNTdHJpbmcBCQD8BwQJARFnZXRCcmVlZGVyQWRkcmVzcwACDmdldEdlbkZyb21OYW1lCQDMCAIICQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQEbmFtZQUDbmlsBQNuaWwDCQAAAgUDZ2VuBQNnZW4EBGNhbGwJAPwHBAUGaXNzdWVyAg5pbmNyZWFzZVJhcml0eQkAzAgCCQDYBAEFB2Fzc2V0SWQJAMwIAgUDZ2VuBQNuaWwFA25pbAMJAAACBQRjYWxsBQRjYWxsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB2FkZHJlc3MAAQUHYXNzZXRJZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwJAM4IAgkAzggCBQZyZXN1bHQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIIX2luaXRUeF8FBmluaXRUeAIEX3dpbgUDd2luCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCB19zdGF0dXMCBmZpbmlzaAUDbmlsBQx2YWxpZFBheW1lbnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FAWkBD2NvbmZpZ3VyZU9yYWNsZQEGb3JhY2xlAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIPUkNVOiBhZG1pbiBvbmx5CQDMCAIJAQtTdHJpbmdFbnRyeQICFHN0YXRpY19vcmFjbGVBZGRyZXNzBQZvcmFjbGUFA25pbAFpAQtpbml0UmViaXJ0aAEOcmVmZXJlckFkZHJlc3MEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAdhc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEBmluaXRUeAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIIBQNwbXQGYW1vdW50AAEJAAIBAhNORlQgaXMgbm90IGF0dGFjaGVkBBNhbW91bnRQYWlkQnlDb3Vwb25zCQEFYXNJbnQBCQD8BwQJARFnZXRDb3Vwb25zQWRkcmVzcwACCnVzZUNvdXBvbnMJAMwIAgUJZmVlQW1vdW50BQNuaWwFA25pbAMJAAACBRNhbW91bnRQYWlkQnlDb3Vwb25zBRNhbW91bnRQYWlkQnlDb3Vwb25zBAlsZWZ0VG9QYXkJAGUCBQlmZWVBbW91bnQFE2Ftb3VudFBhaWRCeUNvdXBvbnMEDHZhbGlkUGF5bWVudAkBFmNoZWNrQWRkaXRpb25hbFBheW1lbnQBCQCRAwIIBQFpCHBheW1lbnRzAAEDCQAAAgUMdmFsaWRQYXltZW50BQx2YWxpZFBheW1lbnQEB3BheW1lbnQDCQECIT0CBQlsZWZ0VG9QYXkAAAQKZmVlUGF5bWVudAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwACAwkBAiE9AggFCmZlZVBheW1lbnQHYXNzZXRJZAkBDWdldEVnZ0Fzc2V0SWQACQACAQIkWW91IG5lZWQgdG8gYXR0YWNoIEVHRyB0b2tlbnMgYXMgZmVlAwkAZgIFCWxlZnRUb1BheQgFCmZlZVBheW1lbnQGYW1vdW50CQACAQkArAICAkBZb3UgbmVlZCB0byBhdHRhY2ggdGhlIGZvbGxvd2luZyBhbW91bnQgb2YgRUdHIHRva2VucyBhcyBmZWU6IDAuCQCkAwEFCWxlZnRUb1BheQQVcmVmZXJlclJld2FyZEZvclBlcmNoCQBrAwUJbGVmdFRvUGF5AAUAZAQHcmVmQ2FsbAkBCWFzQm9vbGVhbgEJAPwHBAkBFWdldFJlZkNvbnRyYWN0QWRkcmVzcwACCnJlZlBheW1lbnQJAMwIAgUOcmVmZXJlckFkZHJlc3MFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEVnZ0Fzc2V0SWQABRVyZWZlcmVyUmV3YXJkRm9yUGVyY2gFA25pbAMJAAACBQdyZWZDYWxsBQdyZWZDYWxsBAZ0b0J1cm4DBQdyZWZDYWxsCQBlAgUJbGVmdFRvUGF5BRVyZWZlcmVyUmV3YXJkRm9yUGVyY2gFCWxlZnRUb1BheQQIYnVybkNhbGwJAPwHBAkBDmdldEJ1cm5BZGRyZXNzAAIUYnVybkF0dGFjaGVkUGF5bWVudHMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEVnZ0Fzc2V0SWQABQZ0b0J1cm4FA25pbAMJAAACBQhidXJuQ2FsbAUIYnVybkNhbGwFCWxlZnRUb1BheQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAwkAAAIFB3BheW1lbnQFB3BheW1lbnQEDSR0MDEzODA3MTM4NTYJARRnZXRBc3NldEZhcm1pbmdQb3dlcgEFB2Fzc2V0SWQEA2dlbggFDSR0MDEzODA3MTM4NTYCXzEEBnJhcml0eQgFDSR0MDEzODA3MTM4NTYCXzIEBGNhbGwJAPwHBAkBCWdldE9yaWdpbgEFB2Fzc2V0SWQCDHJlZHVjZVJhcml0eQkAzAgCCQDYBAEFB2Fzc2V0SWQJAMwIAgUDZ2VuBQNuaWwFA25pbAMJAAACBQRjYWxsBQRjYWxsCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCCF9pbml0VHhfBQZpbml0VHgCDF9maW5pc2hCbG9jawkAZAIFBmhlaWdodAUQZGVsYXlGb3JIYXRjaGluZwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4Agdfc3RhdHVzAgRvcGVuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AgxfYXNzZXRSYXJpdHkFBnJhcml0eQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAghfaW5pdFR4XwUGaW5pdFR4AghfYXNzZXRJZAkA2AQBBQdhc3NldElkBQNuaWwFDHZhbGlkUGF5bWVudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1maW5pc2hSZWJpcnRoAQZpbml0VHgJARVmaW5pc2hSZWJpcnRoSW50ZXJuYWwGBQZpbml0VHgJAKUIAQgFAWkGY2FsbGVyCQCRAwIIBQFpCHBheW1lbnRzAAAHAgAHAWkBE2ZpbmlzaFJlYmlydGhEb3VibGUBBmluaXRUeAMJAQEhAQMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAIJAAACCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAABBwkAAgECD0ludmFsaWQgcGF5bWVudAQHYXNzZXRJZAkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAtib29zdGVyVHlwZQkBCGFzU3RyaW5nAQkA/AcECQEPZ2V0SXRlbXNBZGRyZXNzAAIUY2hlY2tBcnRlZmFjdERldGFpbHMJAMwIAgkA2AQBBQdhc3NldElkBQNuaWwFA25pbAMJAAACBQtib29zdGVyVHlwZQULYm9vc3RlclR5cGUDCQAAAgULYm9vc3RlclR5cGUCDkFSVC1HSUZUX0RPVUJMCQDOCAIJAMwIAgkBBEJ1cm4CBQdhc3NldElkAAEFA25pbAkBFWZpbmlzaFJlYmlydGhJbnRlcm5hbAYFBmluaXRUeAkApQgBCAUBaQZjYWxsZXIJAJEDAggFAWkIcGF5bWVudHMAAQYCAAcJAAIBAi1FcnJvciEgV3JvbmcgaXRlbSBhdHRhY2hlZCB0byBkb3VibGUgcmV3YXJkcyEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQERZmluaXNoUmViaXJ0aEl0ZW0CBmluaXRUeAhpdGVtQ29kZQMDCQAAAgkAkAMBCAUBaQhwYXltZW50cwACCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQAAQcEB2Fzc2V0SWQJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQLYm9vc3RlclR5cGUJAQhhc1N0cmluZwEJAPwHBAkBD2dldEl0ZW1zQWRkcmVzcwACFGNoZWNrQXJ0ZWZhY3REZXRhaWxzCQDMCAIJANgEAQUHYXNzZXRJZAUDbmlsBQNuaWwDCQAAAgULYm9vc3RlclR5cGUFC2Jvb3N0ZXJUeXBlAwkAAAIFC2Jvb3N0ZXJUeXBlAgtBUlQtSFdFUkFTRQkAzggCCQDMCAIJAQRCdXJuAgUHYXNzZXRJZAABBQNuaWwJARVmaW5pc2hSZWJpcnRoSW50ZXJuYWwGBQZpbml0VHgJAKUIAQgFAWkGY2FsbGVyCQCRAwIIBQFpCHBheW1lbnRzAAEHBQhpdGVtQ29kZQcDCQAAAgULYm9vc3RlclR5cGUCDEFSVC1IV1JFU0NVRQkAzggCCQDMCAIJAQRCdXJuAgUHYXNzZXRJZAABBQNuaWwJARVmaW5pc2hSZWJpcnRoSW50ZXJuYWwGBQZpbml0VHgJAKUIAQgFAWkGY2FsbGVyCQCRAwIIBQFpCHBheW1lbnRzAAEHAgAGAwkAAAIFC2Jvb3N0ZXJUeXBlAg5BUlQtR0lGVF9ET1VCTAkAzggCCQDMCAIJAQRCdXJuAgUHYXNzZXRJZAABBQNuaWwJARVmaW5pc2hSZWJpcnRoSW50ZXJuYWwGBQZpbml0VHgJAKUIAQgFAWkGY2FsbGVyCQCRAwIIBQFpCHBheW1lbnRzAAEGAgAHCQACAQIbRXJyb3IhIFdyb25nIGl0ZW0gYXR0YWNoZWQgCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkBFWZpbmlzaFJlYmlydGhJbnRlcm5hbAYFBmluaXRUeAkApQgBCAUBaQZjYWxsZXIJAJEDAggFAWkIcGF5bWVudHMAAAcCAAcJAAIBAhBJbnZhbGlkIHBheW1lbnRzAQJ0eAEGdmVyaWZ5AAMJAQlpc1Rlc3RFbnYACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5BAlmaXJzdFVzZXIBIFEc5P1m/xJp0vFaFJ87suL0O3/By2gnojRebDjXV91tBApzZWNvbmRVc2VyASBccg5LrvEhT2bmGUX6aqKx7bE2KVlfGczMsOFNQYhqfQQJdGhpcmRVc2VyASCgr5HlLXlDYWEyEq2OufoYWVGdLVNJNsPQo/eoYBk7TgQPZmlyc3RVc2VyU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUJZmlyc3RVc2VyAAEDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwABBQlmaXJzdFVzZXIAAQMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIFCWZpcnN0VXNlcgABAAAEEHNlY29uZFVzZXJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQpzZWNvbmRVc2VyAAEDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwABBQpzZWNvbmRVc2VyAAEDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwACBQpzZWNvbmRVc2VyAAEAAAQPdGhpcmRVc2VyU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUJdGhpcmRVc2VyAAEDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwABBQl0aGlyZFVzZXIAAQMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIFCXRoaXJkVXNlcgABAAAED3NpZ25hdHVyZXNDb3VudAkAZAIJAGQCBQ9maXJzdFVzZXJTaWduZWQFEHNlY29uZFVzZXJTaWduZWQFD3RoaXJkVXNlclNpZ25lZAQHJG1hdGNoMAUCdHgJAGcCBQ9zaWduYXR1cmVzQ291bnQAAaDUVag=", "height": 3437939, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2hqLBjMjQiUBMheEZRrqugtQLKxhucdDV9Tp6eQ4dhna Next: none Diff:
OldNewDifferences
199199 then "phoenix"
200200 else {
201201 let n = getRandomNumber(1000, tx, finishHeight, 0)
202- if (if ((10 > n))
203- then (blacklistCode != "item!ART-FREEGENE")
204- else false)
205- then "item!ART-FREEGENE"
206- else if (if ((126 > n))
207- then (blacklistCode != "ar")
208- else false)
209- then "ar"
210- else if (if ((186 > n))
211- then (blacklistCode != "item!ART-FIRE_ARMOUR")
212- else false)
213- then "item!ART-FIRE_ARMOUR"
214- else if (if ((206 > n))
215- then (blacklistCode != "item!ART-FEED5")
216- else false)
217- then "item!ART-FEED5"
218- else if (if ((226 > n))
219- then (blacklistCode != "item!ART-FEED10")
220- else false)
221- then "item!ART-FEED10"
222- else if (if ((246 > n))
223- then (blacklistCode != "item!ART-FEED15")
224- else false)
225- then "item!ART-FEED15"
226- else if (if ((266 > n))
227- then (blacklistCode != "item!ART-FEED20")
228- else false)
229- then "item!ART-FEED20"
230- else if (if ((286 > n))
231- then (blacklistCode != "item!ART-FEED25")
232- else false)
233- then "item!ART-FEED25"
234- else if (if ((296 > n))
235- then (blacklistCode != "item!ART-FEED50")
236- else false)
237- then "item!ART-FEED50"
238- else if (if ((300 > n))
239- then (blacklistCode != "item!ART-FEED100")
240- else false)
241- then "item!ART-FEED100"
242- else if (if ((310 > n))
243- then (blacklistCode != "item!ART-CROWN")
244- else false)
245- then "item!ART-CROWN"
246- else if (if ((350 > n))
247- then (blacklistCode != "incubator")
248- else false)
249- then "incubator"
250- else if (if ((460 > n))
251- then (blacklistCode != "item!ART-BUILTBODY")
252- else false)
253- then if ((50 > assetRarity))
254- then "item!ART-BUILTBODY"
255- else "item!ART-MUTARIUM-D"
256- else if (if ((480 > n))
257- then (blacklistCode != "item!ART-SNAKE")
258- else false)
259- then "item!ART-SNAKE"
260- else if (if ((510 > n))
261- then (blacklistCode != "item!ART-ROBODUCK")
262- else false)
263- then "item!ART-ROBODUCK"
264- else if (if ((600 > n))
265- then (blacklistCode != "item!ART-KATANA")
266- else false)
267- then "item!ART-KATANA"
268- else if (if ((650 > n))
269- then (blacklistCode != "item!ART-SCEPTER")
270- else false)
271- then if ((50 > assetRarity))
272- then "item!ART-SCEPTER"
273- else "item!ART-MUTARIUM-D"
274- else if (if ((710 > n))
275- then (blacklistCode != "item!ART-MUTARIUM-D")
276- else false)
277- then "item!ART-MUTARIUM-D"
278- else if (if ((720 > n))
279- then (blacklistCode != "item!ART-MUTARIUM-G")
280- else false)
281- then "item!ART-MUTARIUM-G"
282- else if (if ((890 > n))
283- then (blacklistCode != "duckling_10")
284- else false)
285- then "duckling_10"
286- else if (if ((960 > n))
287- then (blacklistCode != "duckling_20")
288- else false)
289- then "duckling_20"
290- else "duckling_40"
202+ "incubator"
291203 }
292204 }
293205
526438 else 0
527439 if ((payment == payment))
528440 then {
529- let $t01575315802 = getAssetFarmingPower(assetId)
530- let gen = $t01575315802._1
531- let rarity = $t01575315802._2
441+ let $t01380713856 = getAssetFarmingPower(assetId)
442+ let gen = $t01380713856._1
443+ let rarity = $t01380713856._2
532444 let call = invoke(getOrigin(assetId), "reduceRarity", [toBase58String(assetId), gen], nil)
533445 if ((call == call))
534446 then ([IntegerEntry((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"), (height + delayForHatching)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "open"), IntegerEntry((((("address_" + address) + "_initTx_") + initTx) + "_assetRarity"), rarity), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_assetId"), toBase58String(assetId))] ++ validPayment)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func tryGetStringExternal (address,key) = match getString(address, key) {
55 case a: String =>
66 a
77 case _ =>
88 ""
99 }
1010
1111
1212 func tryGetIntExternal (address,key) = match getInteger(address, key) {
1313 case a: Int =>
1414 a
1515 case _ =>
1616 throw("RTGIE: Something went wrong")
1717 }
1818
1919
2020 func asBoolean (value) = match value {
2121 case boolean: Boolean =>
2222 boolean
2323 case _ =>
2424 throw("FAB: wrong type, expected: Boolean")
2525 }
2626
2727
2828 func tryGetString (key) = tryGetStringExternal(this, key)
2929
3030
3131 let delayForHatching = 2
3232
3333 func staticKey_oracleAddress () = "static_oracleAddress"
3434
3535
3636 func staticKey_eggAssetId () = "static_eggAssetId"
3737
3838
3939 func staticKey_incubatorAddress () = "static_incubatorAddress"
4040
4141
4242 func staticKey_breederAddress () = "static_breederAddress"
4343
4444
4545 func staticKey_farmingAddress () = "static_farmingAddressNew"
4646
4747
4848 func staticKey_babyDuckAddress () = "static_babyDuckAddress"
4949
5050
5151 func staticKey_gameDappAddress () = "static_gameDappAddress"
5252
5353
5454 func staticKey_itemsAddress () = "static_itemsAddress"
5555
5656
5757 func staticKey_couponsAddress () = "static_couponsAddress"
5858
5959
6060 func staticKey_huntAddress () = "static_huntAddress"
6161
6262
6363 func staticKey_burnAddress () = "static_burnAddress"
6464
6565
6666 func staticKey_refContractAddress () = "static_refContractAddress"
6767
6868
6969 func staticKey_extraFee () = "static_extraFee"
7070
7171
7272 func staticKey_feeAggregator () = "static_feeAggregator"
7373
7474
7575 func getOracle () = Address(fromBase58String(tryGetString(staticKey_oracleAddress())))
7676
7777
7878 func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), staticKey_eggAssetId()))
7979
8080
8181 func getIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_incubatorAddress())))
8282
8383
8484 func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_breederAddress())))
8585
8686
8787 func getFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_farmingAddress())))
8888
8989
9090 func getBabyDuckAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_babyDuckAddress())))
9191
9292
9393 func getGameDappAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_gameDappAddress())))
9494
9595
9696 func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_itemsAddress())))
9797
9898
9999 func getCouponsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_couponsAddress())))
100100
101101
102102 func getHuntAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_huntAddress())))
103103
104104
105105 func getBurnAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_burnAddress())))
106106
107107
108108 func getRefContractAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_refContractAddress())))
109109
110110
111111 func getFeeAggregator () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_feeAggregator())))
112112
113113
114114 func checkReal (assetId) = if (if ((value(assetInfo(assetId)).issuer == getBreederAddress()))
115115 then true
116116 else (value(assetInfo(assetId)).issuer == getIncubatorAddress()))
117117 then value(assetInfo(assetId)).issuer
118118 else throw("not valid NFT")
119119
120120
121121 func checkAdditionalPayment (payment) = if (isDefined(payment.assetId))
122122 then throw("RCAP: Please attach waves")
123123 else {
124124 let feeAmount = getIntegerValue(getOracle(), staticKey_extraFee())
125125 if ((payment.amount != feeAmount))
126126 then throw((("RCAP: Please attach exactly " + toString(feeAmount)) + " amount of wavelets"))
127127 else [ScriptTransfer(getFeeAggregator(), feeAmount, unit)]
128128 }
129129
130130
131131 let PHOENIXBASEOPTIONS = 1000
132132
133133 func tryGetInteger (key) = match getInteger(this, key) {
134134 case b: Int =>
135135 b
136136 case _ =>
137137 0
138138 }
139139
140140
141141 func asString (value) = match value {
142142 case s: String =>
143143 s
144144 case s: Int =>
145145 throw("wrong type, expected: String, got: Int")
146146 case s: Unit =>
147147 throw("wrong type, expected: String, got: Unit")
148148 case _ =>
149149 throw("wrong type, expected: String")
150150 }
151151
152152
153153 let feeAmount = tryGetInteger("currentPrice")
154154
155155 func getAmountOrClear (amount) = if (contains(amount, "0"))
156156 then ""
157157 else amount
158158
159159
160160 func getAssetOrigin (generation) = if ((generation == "G"))
161161 then getIncubatorAddress()
162162 else getBreederAddress()
163163
164164
165165 func getAssetRarity (genotype,generation) = {
166166 let quantity = getIntegerValue(getAssetOrigin(generation), (("stats_" + genotype) + "_quantity"))
167167 let power = pow((10000 / quantity), 4, 5, 1, 2, FLOOR)
168168 if ((power > 0))
169169 then power
170170 else 2
171171 }
172172
173173
174174 func getAssetFarmingPower (assetId) = if (if ((value(assetInfo(assetId)).issuer == getBreederAddress()))
175175 then true
176176 else (value(assetInfo(assetId)).issuer == getIncubatorAddress()))
177177 then {
178178 let assetName = value(assetInfo(assetId)).name
179179 let generation = take(takeRight(assetName, 2), 1)
180180 let farmGen = asString(invoke(getBreederAddress(), "getGenFromName", [assetName], nil))
181181 if ((farmGen == farmGen))
182182 then $Tuple2(farmGen, getAssetRarity(farmGen, generation))
183183 else throw("Strict value is not equal to itself.")
184184 }
185185 else throw("not valid NFT")
186186
187187
188188 func getRandomNumber (options,txId,hatchingFinishHeight,offset) = {
189189 let randomSeedBlock = value(blockInfoByHeight((hatchingFinishHeight - 1)))
190190 let randomHash = sha256((txId + value(randomSeedBlock.vrf)))
191191 (toInt(randomHash, (offset * 8)) % options)
192192 }
193193
194194
195195 func getRandomWin (tx,finishHeight,assetRarity,blacklistCode) = {
196196 let phoenixOptions = (PHOENIXBASEOPTIONS - fraction((PHOENIXBASEOPTIONS / 2), assetRarity, 100))
197197 let jackpotRandom = getRandomNumber(phoenixOptions, tx, finishHeight, 1)
198198 if ((jackpotRandom == 1))
199199 then "phoenix"
200200 else {
201201 let n = getRandomNumber(1000, tx, finishHeight, 0)
202- if (if ((10 > n))
203- then (blacklistCode != "item!ART-FREEGENE")
204- else false)
205- then "item!ART-FREEGENE"
206- else if (if ((126 > n))
207- then (blacklistCode != "ar")
208- else false)
209- then "ar"
210- else if (if ((186 > n))
211- then (blacklistCode != "item!ART-FIRE_ARMOUR")
212- else false)
213- then "item!ART-FIRE_ARMOUR"
214- else if (if ((206 > n))
215- then (blacklistCode != "item!ART-FEED5")
216- else false)
217- then "item!ART-FEED5"
218- else if (if ((226 > n))
219- then (blacklistCode != "item!ART-FEED10")
220- else false)
221- then "item!ART-FEED10"
222- else if (if ((246 > n))
223- then (blacklistCode != "item!ART-FEED15")
224- else false)
225- then "item!ART-FEED15"
226- else if (if ((266 > n))
227- then (blacklistCode != "item!ART-FEED20")
228- else false)
229- then "item!ART-FEED20"
230- else if (if ((286 > n))
231- then (blacklistCode != "item!ART-FEED25")
232- else false)
233- then "item!ART-FEED25"
234- else if (if ((296 > n))
235- then (blacklistCode != "item!ART-FEED50")
236- else false)
237- then "item!ART-FEED50"
238- else if (if ((300 > n))
239- then (blacklistCode != "item!ART-FEED100")
240- else false)
241- then "item!ART-FEED100"
242- else if (if ((310 > n))
243- then (blacklistCode != "item!ART-CROWN")
244- else false)
245- then "item!ART-CROWN"
246- else if (if ((350 > n))
247- then (blacklistCode != "incubator")
248- else false)
249- then "incubator"
250- else if (if ((460 > n))
251- then (blacklistCode != "item!ART-BUILTBODY")
252- else false)
253- then if ((50 > assetRarity))
254- then "item!ART-BUILTBODY"
255- else "item!ART-MUTARIUM-D"
256- else if (if ((480 > n))
257- then (blacklistCode != "item!ART-SNAKE")
258- else false)
259- then "item!ART-SNAKE"
260- else if (if ((510 > n))
261- then (blacklistCode != "item!ART-ROBODUCK")
262- else false)
263- then "item!ART-ROBODUCK"
264- else if (if ((600 > n))
265- then (blacklistCode != "item!ART-KATANA")
266- else false)
267- then "item!ART-KATANA"
268- else if (if ((650 > n))
269- then (blacklistCode != "item!ART-SCEPTER")
270- else false)
271- then if ((50 > assetRarity))
272- then "item!ART-SCEPTER"
273- else "item!ART-MUTARIUM-D"
274- else if (if ((710 > n))
275- then (blacklistCode != "item!ART-MUTARIUM-D")
276- else false)
277- then "item!ART-MUTARIUM-D"
278- else if (if ((720 > n))
279- then (blacklistCode != "item!ART-MUTARIUM-G")
280- else false)
281- then "item!ART-MUTARIUM-G"
282- else if (if ((890 > n))
283- then (blacklistCode != "duckling_10")
284- else false)
285- then "duckling_10"
286- else if (if ((960 > n))
287- then (blacklistCode != "duckling_20")
288- else false)
289- then "duckling_20"
290- else "duckling_40"
202+ "incubator"
291203 }
292204 }
293205
294206
295207 func getRandomReturn (tx,finishHeight) = {
296208 let n = getRandomNumber(2, tx, finishHeight, 1)
297209 if ((n == 0))
298210 then true
299211 else false
300212 }
301213
302214
303215 func getOrigin (assetId) = {
304216 let assetName = value(assetInfo(assetId)).name
305217 let generation = take(takeRight(assetName, 2), 1)
306218 if (if ((generation == "G"))
307219 then true
308220 else (generation == "J"))
309221 then getIncubatorAddress()
310222 else getBreederAddress()
311223 }
312224
313225
314226 func asInt (value) = match value {
315227 case int: Int =>
316228 int
317229 case string: String =>
318230 throw(("RAI: wrong type, expected: Int, but got: " + string))
319231 case _ =>
320232 throw("RAI: wrong type, expected: Int")
321233 }
322234
323235
324236 func getBool (key) = match getBoolean(this, key) {
325237 case b: Boolean =>
326238 b
327239 case _ =>
328240 false
329241 }
330242
331243
332244 func isTestEnv () = getBool("TESTENV")
333245
334246
335247 func finishRebirthInternal (initTx,address,additionalPayment,double,blacklistCode,rescue) = {
336248 let finishBlock = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"))
337249 let assetRarity = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_assetRarity"))
338250 let status = tryGetString((((("address_" + address) + "_initTx_") + initTx) + "_status"))
339251 let validPayment = checkAdditionalPayment(additionalPayment)
340252 if ((validPayment == validPayment))
341253 then {
342254 let recordAction = invoke(getCouponsAddress(), "recordAction", ["REBIRTH"], nil)
343255 if ((recordAction == recordAction))
344256 then {
345257 func getAccessItemAssetId (address) = fromBase58String(tryGetStringExternal(address, "static_accessItemAssetId"))
346258
347259 func getAccessItemPrice (address) = tryGetIntExternal(address, "static_accessItemPrice")
348260
349261 if ((status != "open"))
350262 then throw("rebirth is finished or not open")
351263 else if ((finishBlock > height))
352264 then throw("you cannot finish rebirth, yet")
353265 else {
354266 let win = getRandomWin(fromBase58String(initTx), finishBlock, assetRarity, blacklistCode)
355267 let txId = initTx
356268 let result = if ((indexOf(win, "perch") != unit))
357269 then {
358270 let color = takeRight(win, 1)
359271 let result = if (!(double))
360272 then {
361273 let first = invoke(getFarmingAddress(), "addFreePerch", [address, color, 1], nil)
362274 if ((first == first))
363275 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first))]
364276 else throw("Strict value is not equal to itself.")
365277 }
366278 else {
367279 let first = invoke(getFarmingAddress(), "addFreePerch", [address, color, 2], nil)
368280 if ((first == first))
369281 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result1"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win1"), win)]
370282 else throw("Strict value is not equal to itself.")
371283 }
372284 if ((result == result))
373285 then result
374286 else throw("Strict value is not equal to itself.")
375287 }
376288 else if ((win == "incubator"))
377289 then {
378290 let result = if (!(double))
379291 then {
380292 let first = invoke(getIncubatorAddress(), "issueFreeDuck", [address, txId], nil)
381293 if ((first == first))
382294 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first))]
383295 else throw("Strict value is not equal to itself.")
384296 }
385297 else {
386298 let first = invoke(getIncubatorAddress(), "issueFreeDuck", [address, txId], nil)
387299 if ((first == first))
388300 then {
389301 let second = invoke(getBabyDuckAddress(), "issueFreeDuckling", [address, txId, 100], nil)
390302 if ((second == second))
391303 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result1"), asString(second)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win1"), "duckling_100")]
392304 else throw("Strict value is not equal to itself.")
393305 }
394306 else throw("Strict value is not equal to itself.")
395307 }
396308 if ((result == result))
397309 then result
398310 else throw("Strict value is not equal to itself.")
399311 }
400312 else if ((win == "ar"))
401313 then {
402314 let assetId = getAccessItemAssetId(getHuntAddress())
403315 let price = getAccessItemPrice(getHuntAddress())
404316 let call = invoke(getHuntAddress(), "buyAccessItemOther", [address], [AttachedPayment(assetId, price)])
405317 if ((call == call))
406318 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
407319 else throw("Strict value is not equal to itself.")
408320 }
409321 else if ((win == "phoenix"))
410322 then {
411323 let call = invoke(getIncubatorAddress(), "issueJackpot", [address, txId, "WWWWWWWP"], nil)
412324 if ((call == call))
413325 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
414326 else throw("Strict value is not equal to itself.")
415327 }
416328 else if ((indexOf(win, "duckling") != unit))
417329 then {
418330 let level = parseIntValue(split(win, "_")[1])
419331 let levelFinal = if (double)
420332 then (2 * level)
421333 else level
422334 let call = invoke(getBabyDuckAddress(), "issueFreeDuckling", [address, txId, levelFinal], nil)
423335 if ((call == call))
424336 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
425337 else throw("Strict value is not equal to itself.")
426338 }
427339 else if ((indexOf(win, "item") != unit))
428340 then {
429341 let itemName = split(win, "!")[1]
430342 let result = if (!(double))
431343 then {
432344 let first = invoke(getItemsAddress(), "issueArtefactIndex", [itemName, address, 0], nil)
433345 if ((first == first))
434346 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first))]
435347 else throw("Strict value is not equal to itself.")
436348 }
437349 else {
438350 let first = invoke(getItemsAddress(), "issueArtefactIndex", [itemName, address, 0], nil)
439351 if ((first == first))
440352 then {
441353 let second = invoke(getItemsAddress(), "issueArtefactIndex", [itemName, address, 1], nil)
442354 if ((second == second))
443355 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(first)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(second)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win1"), win)]
444356 else throw("Strict value is not equal to itself.")
445357 }
446358 else throw("Strict value is not equal to itself.")
447359 }
448360 if ((result == result))
449361 then result
450362 else throw("Strict value is not equal to itself.")
451363 }
452364 else throw("RFB: Some error occured, please contact the admins!")
453365 let returnToSender = if (rescue)
454366 then getRandomReturn(fromBase58String(initTx), finishBlock)
455367 else false
456368 let returnPayload = if (returnToSender)
457369 then {
458370 let assetId = fromBase58String(getStringValue((((("address_" + address) + "_initTx_") + initTx) + "_assetId")))
459371 let issuer = checkReal(assetId)
460372 let gen = asString(invoke(getBreederAddress(), "getGenFromName", [value(assetInfo(assetId)).name], nil))
461373 if ((gen == gen))
462374 then {
463375 let call = invoke(issuer, "increaseRarity", [toBase58String(assetId), gen], nil)
464376 if ((call == call))
465377 then [ScriptTransfer(addressFromStringValue(address), 1, assetId)]
466378 else throw("Strict value is not equal to itself.")
467379 }
468380 else throw("Strict value is not equal to itself.")
469381 }
470382 else nil
471383 ((result ++ [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win"), win), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "finish")]) ++ validPayment)
472384 }
473385 }
474386 else throw("Strict value is not equal to itself.")
475387 }
476388 else throw("Strict value is not equal to itself.")
477389 }
478390
479391
480392 @Callable(i)
481393 func configureOracle (oracle) = if ((i.caller != this))
482394 then throw("RCU: admin only")
483395 else [StringEntry("static_oracleAddress", oracle)]
484396
485397
486398
487399 @Callable(i)
488400 func initRebirth (refererAddress) = {
489401 let pmt = i.payments[0]
490402 let assetId = value(pmt.assetId)
491403 let initTx = toBase58String(i.transactionId)
492404 let address = toString(i.caller)
493405 if ((pmt.amount != 1))
494406 then throw("NFT is not attached")
495407 else {
496408 let amountPaidByCoupons = asInt(invoke(getCouponsAddress(), "useCoupons", [feeAmount], nil))
497409 if ((amountPaidByCoupons == amountPaidByCoupons))
498410 then {
499411 let leftToPay = (feeAmount - amountPaidByCoupons)
500412 let validPayment = checkAdditionalPayment(i.payments[1])
501413 if ((validPayment == validPayment))
502414 then {
503415 let payment = if ((leftToPay != 0))
504416 then {
505417 let feePayment = value(i.payments[2])
506418 if ((feePayment.assetId != getEggAssetId()))
507419 then throw("You need to attach EGG tokens as fee")
508420 else if ((leftToPay > feePayment.amount))
509421 then throw(("You need to attach the following amount of EGG tokens as fee: 0." + toString(leftToPay)))
510422 else {
511423 let refererRewardForPerch = fraction(leftToPay, 5, 100)
512424 let refCall = asBoolean(invoke(getRefContractAddress(), "refPayment", [refererAddress], [AttachedPayment(getEggAssetId(), refererRewardForPerch)]))
513425 if ((refCall == refCall))
514426 then {
515427 let toBurn = if (refCall)
516428 then (leftToPay - refererRewardForPerch)
517429 else leftToPay
518430 let burnCall = invoke(getBurnAddress(), "burnAttachedPayments", nil, [AttachedPayment(getEggAssetId(), toBurn)])
519431 if ((burnCall == burnCall))
520432 then leftToPay
521433 else throw("Strict value is not equal to itself.")
522434 }
523435 else throw("Strict value is not equal to itself.")
524436 }
525437 }
526438 else 0
527439 if ((payment == payment))
528440 then {
529- let $t01575315802 = getAssetFarmingPower(assetId)
530- let gen = $t01575315802._1
531- let rarity = $t01575315802._2
441+ let $t01380713856 = getAssetFarmingPower(assetId)
442+ let gen = $t01380713856._1
443+ let rarity = $t01380713856._2
532444 let call = invoke(getOrigin(assetId), "reduceRarity", [toBase58String(assetId), gen], nil)
533445 if ((call == call))
534446 then ([IntegerEntry((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"), (height + delayForHatching)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "open"), IntegerEntry((((("address_" + address) + "_initTx_") + initTx) + "_assetRarity"), rarity), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_assetId"), toBase58String(assetId))] ++ validPayment)
535447 else throw("Strict value is not equal to itself.")
536448 }
537449 else throw("Strict value is not equal to itself.")
538450 }
539451 else throw("Strict value is not equal to itself.")
540452 }
541453 else throw("Strict value is not equal to itself.")
542454 }
543455 }
544456
545457
546458
547459 @Callable(i)
548460 func finishRebirth (initTx) = finishRebirthInternal(initTx, toString(i.caller), i.payments[0], false, "", false)
549461
550462
551463
552464 @Callable(i)
553465 func finishRebirthDouble (initTx) = if (!(if ((size(i.payments) == 2))
554466 then (i.payments[0].amount == 1)
555467 else false))
556468 then throw("Invalid payment")
557469 else {
558470 let assetId = value(i.payments[0].assetId)
559471 let boosterType = asString(invoke(getItemsAddress(), "checkArtefactDetails", [toBase58String(assetId)], nil))
560472 if ((boosterType == boosterType))
561473 then if ((boosterType == "ART-GIFT_DOUBL"))
562474 then ([Burn(assetId, 1)] ++ finishRebirthInternal(initTx, toString(i.caller), i.payments[1], true, "", false))
563475 else throw("Error! Wrong item attached to double rewards!")
564476 else throw("Strict value is not equal to itself.")
565477 }
566478
567479
568480
569481 @Callable(i)
570482 func finishRebirthItem (initTx,itemCode) = if (if ((size(i.payments) == 2))
571483 then (i.payments[0].amount == 1)
572484 else false)
573485 then {
574486 let assetId = value(i.payments[0].assetId)
575487 let boosterType = asString(invoke(getItemsAddress(), "checkArtefactDetails", [toBase58String(assetId)], nil))
576488 if ((boosterType == boosterType))
577489 then if ((boosterType == "ART-HWERASE"))
578490 then ([Burn(assetId, 1)] ++ finishRebirthInternal(initTx, toString(i.caller), i.payments[1], false, itemCode, false))
579491 else if ((boosterType == "ART-HWRESCUE"))
580492 then ([Burn(assetId, 1)] ++ finishRebirthInternal(initTx, toString(i.caller), i.payments[1], false, "", true))
581493 else if ((boosterType == "ART-GIFT_DOUBL"))
582494 then ([Burn(assetId, 1)] ++ finishRebirthInternal(initTx, toString(i.caller), i.payments[1], true, "", false))
583495 else throw("Error! Wrong item attached ")
584496 else throw("Strict value is not equal to itself.")
585497 }
586498 else if ((size(i.payments) == 1))
587499 then finishRebirthInternal(initTx, toString(i.caller), i.payments[0], false, "", false)
588500 else throw("Invalid payments")
589501
590502
591503 @Verifier(tx)
592504 func verify () = if (isTestEnv())
593505 then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
594506 else {
595507 let firstUser = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4'
596508 let secondUser = base58'7DsP2WaMLocbHuUxux7pbXRjTrrZ1TFQPsi5QumS3gr8'
597509 let thirdUser = base58'BpFWP3p3JgYrrP45xfrKzeMcWMEXoinj4FVPPkUiA8D3'
598510 let firstUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], firstUser))
599511 then 1
600512 else if (sigVerify(tx.bodyBytes, tx.proofs[1], firstUser))
601513 then 1
602514 else if (sigVerify(tx.bodyBytes, tx.proofs[2], firstUser))
603515 then 1
604516 else 0
605517 let secondUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], secondUser))
606518 then 1
607519 else if (sigVerify(tx.bodyBytes, tx.proofs[1], secondUser))
608520 then 1
609521 else if (sigVerify(tx.bodyBytes, tx.proofs[2], secondUser))
610522 then 1
611523 else 0
612524 let thirdUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], thirdUser))
613525 then 1
614526 else if (sigVerify(tx.bodyBytes, tx.proofs[1], thirdUser))
615527 then 1
616528 else if (sigVerify(tx.bodyBytes, tx.proofs[2], thirdUser))
617529 then 1
618530 else 0
619531 let signaturesCount = ((firstUserSigned + secondUserSigned) + thirdUserSigned)
620532 match tx {
621533 case _ =>
622534 (signaturesCount >= 1)
623535 }
624536 }
625537

github/deemru/w8io/169f3d6 
58.86 ms