tx · 9LBrmhYdCmCZZmsgoFwdRTEBxDpVFyneH56bfUs3B1q9

3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy:  -0.03400000 Waves

2023.08.05 20:11 [2697582] smart account 3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy > SELF 0.00000000 Waves

{ "type": 13, "id": "9LBrmhYdCmCZZmsgoFwdRTEBxDpVFyneH56bfUs3B1q9", "fee": 3400000, "feeAssetId": null, "timestamp": 1691255512554, "version": 2, "chainId": 84, "sender": "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy", "senderPublicKey": "C3PaRKeL8AUKbwUqdniMQtThgcTh5DYHV1777Hkxy7rp", "proofs": [ "2pgFcKbXb5Lr8EgaB1mCNYBX1vPjXrosqbhLTk3gGU1eCnJxyM5SVKsew5A82uEEbmK9NX49rhpRBAbnHnnfa8Ce" ], "script": "base64:BgJPCAISAwoBGBIDCgEIEgMKAQgSAwoBCBIDCgEIEgMKAQgSAwoBGBIDCgEIEgMKARgSAwoBGBIDCgEYEgMKARgSAwoBCBIAEgMKAQgSAwoBAbABAAJNNgDAhD0AAk04AIDC1y8ACE1JTExJT042AICA6YOx3hYADk1BUktFVElOR1NIQVJFAKCNBgAJVEVBTVNIQVJFAMCaDAANQUNUSVZJVFlTSEFSRQCgjQYAC1BMQVlFUlNIQVJFAIC1GAAKWUVBUk1JTExJUwCAhuvHdQADREFZAIC4mSkAEG1hcmtldGluZ0FkZHJLZXkCDW1hcmtldGluZ0FkZHIAC3RlYW1BZGRyS2V5Agh0ZWFtQWRkcgAUbGFzdE1hcmtldGluZ1RpbWVLZXkCGWxhc3RDbGFpbWVkVGltZV9tYXJrZXRpbmcAFm1hcmtldGluZ0Ftb3VudExlZnRLZXkCE21hcmtldGluZ0Ftb3VudExlZnQAD2xhc3RUZWFtVGltZUtleQIUbGFzdENsYWltZWRUaW1lX3RlYW0AEXRlYW1BbW91bnRMZWZ0S2V5Ag50ZWFtQW1vdW50TGVmdAAVbGFzdEFjdGl2aXRpZXNUaW1lS2V5AhpsYXN0Q2xhaW1lZFRpbWVfYWN0aXZpdGllcwAQYWN0QW1vdW50TGVmdEtleQIUYWN0aXZpdGllc0Ftb3VudExlZnQAFHN0YWtlcnNBbW91bnRMZWZ0S2V5AhFzdGFrZXJzQW1vdW50TGVmdAEYa2V5TGFzdENsYWltZWRUaW1lQnlVc2VyAQRhZGRyCQCsAgICFGxhc3RDbGFpbWVkVGltZVVzZXJfBQRhZGRyARRkaXN0cmlidXRpb25CeVBlcmlvZAEGcGVyaW9kCQBrAwUITUlMTElPTjYJAGgCBQtQTEFZRVJTSEFSRQkAZAIFBnBlcmlvZAABCQBoAgAGBQJNNgAPd2xnSXNzdWVUaW1lS2V5Ag13bGdfaXNzdWVUaW1lABJ3bGdJc3N1ZWRBbW91bnRLZXkCEHdsZ19pc3N1ZWRBbW91bnQAEXpiSXNzdWVkQW1vdW50S2V5AhJ6YmlsbF9pc3N1ZWRBbW91bnQADGlkeFdsZ0Ftb3VudAAAAAtpZHhXbGdQcmljZQABAAtpZHhXbGdGdW5kcwACAA1pZHhXbGdFY29ub215AAMADmlkeFdsZ0FjdGl2aXR5AAQAD2lkeFdsZ0FyYml0cmFnZQAFAAppZHhXbGdQb29sAAYAD2lkeFdsZ0lzc3VlVGltZQAHABFpZHhXbGdMYXN0TVRBVGltZQAIABRpZHhXbGdNYXJrZXRpbmdUb3RhbAAJABVpZHhXbGdNYXJrZXRpbmdBbUxlZnQACgAZaWR4V2xnTWFya2V0aW5nQW1BdmFpbE5vdwALABVpZHhXbGdNYXJrZXRpbmdXbGdvbGQADAAPaWR4V2xnVGVhbVRvdGFsAA0AEGlkeFdsZ1RlYW1BbUxlZnQADgAUaWR4V2xnVGVhbUFtQXZhaWxOb3cADwAQaWR4V2xnVGVhbVdsZ29sZAAQAA5pZHhXbGdBY3RUb3RhbAARAA9pZHhXbGdBY3RBbUxlZnQAEgATaWR4V2xnQWN0QW1BdmFpbE5vdwATAA9pZHhXbGdBY3RXbGdvbGQAFAAPaWR4V2xnQ3VyUGVyaW9kABUAEWlkeFdsZ0FtTGVmdFRvdGFsABYAG2lkeFdsZ0N1clBlcmlvZERpc3RyaWJ1dGlvbgAXABJpZHhXbGdMYXN0VXNlclRpbWUAGAAUaWR4V2xnVXNlckFtQXZhaWxOb3cAGQAWaWR4V2xnU0xhbmREYWlseUFtb3VudAAaABZpZHhXbGdJbnZlc3RGdW5kQW1vdW50ABsACGRhcHBSZXN0AAAAC2RhcHBTdGFraW5nAAEAC2RhcHBFY29ub215AAIAB2RhcHBXbGcABAAKZGFwcFB1enpsZQAFAA5kYXBwSW52ZXN0RnVuZAAGAQlnZXRQaWVjZXMCEnVzZXJBZGRyU3RyT3JFbXB0eQ9zdGFraW5nQ29udHJhY3QEBXByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0AhNyZXNUeXBlc1Byb3BvcnRpb25zAgswXzBfMF8wXzBfMAIBXwoBBWFkZGVyAgNhY2MEaXRlbQkAZAIFA2FjYwkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAp0b3RhbFBvd2VyCgACJGwFBXByb3BzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQVhZGRlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQKdXNlcnNQb3dlcgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAKwCAgIUc3Rha2VkUGllY2VzQnlPd25lcl8FEnVzZXJBZGRyU3RyT3JFbXB0eQAACQDMCAIFCnRvdGFsUG93ZXIJAMwIAgUKdXNlcnNQb3dlcgUDbmlsAQtnZXRXbGdTdGF0cwQLdXNlckFkZHJPcHQJY29udHJhY3RzBnVzZHRJZBV1c2R0QmFsYW5jZUNvcnJlY3Rpb24EDGlzc3VlZEFtb3VudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQdkYXBwV2xnBRJ3bGdJc3N1ZWRBbW91bnRLZXkCGFdMR09MRCBpcyBub3QgaXNzdWVkIHlldAQKZWNvbm9teVVzZAkA8AcCCQCRAwIFCWNvbnRyYWN0cwULZGFwcEVjb25vbXkFBnVzZHRJZAQHcmVzdFVzZAkA8AcCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcFJlc3QFBnVzZHRJZAQGd2xnVXNkCQBlAgkA8AcCCQCRAwIFCWNvbnRyYWN0cwUHZGFwcFdsZwUGdXNkdElkBRV1c2R0QmFsYW5jZUNvcnJlY3Rpb24ECXB1enpsZVVzZAkA8AcCCQCRAwIFCWNvbnRyYWN0cwUKZGFwcFB1enpsZQUGdXNkdElkBBJpbnZlc3RGdW5kQ29udHJhY3QJAJEDAgUJY29udHJhY3RzBQ5kYXBwSW52ZXN0RnVuZAQPaW52ZXN0RnVuZFRvdGFsCQBkAgkA8AcCBRJpbnZlc3RGdW5kQ29udHJhY3QFBnVzZHRJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJpbnZlc3RGdW5kQ29udHJhY3QFEXpiSXNzdWVkQW1vdW50S2V5AAAEDXRvdGFsRnVuZHNVc2QJAGQCCQBkAgUKZWNvbm9teVVzZAUGd2xnVXNkBQ9pbnZlc3RGdW5kVG90YWwEBXdsZ0lkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgkAkQMCBQljb250cmFjdHMFB2RhcHBXbGcCC3dsZ19hc3NldElkAhNOb3QgaW5pdGlhbGl6ZWQgeWV0BANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlpc3N1ZVRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUHZGFwcFdsZwUPd2xnSXNzdWVUaW1lS2V5Ag9Ob3QgaW5pdGlhbGl6ZWQEDm1hcmtldGluZ1RvdGFsCQBrAwUITUlMTElPTjYFDk1BUktFVElOR1NIQVJFBQJNNgQTbWFya2V0aW5nQW1vdW50TGVmdAkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUHZGFwcFdsZwUWbWFya2V0aW5nQW1vdW50TGVmdEtleQUObWFya2V0aW5nVG90YWwEEWxhc3RNYXJrZXRpbmdUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQdkYXBwV2xnBRRsYXN0TWFya2V0aW5nVGltZUtleQUJaXNzdWVUaW1lBA1tYXJrZXRpbmdBZGRyCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBCQCdCAIJAJEDAgUJY29udHJhY3RzBQdkYXBwV2xnBRBtYXJrZXRpbmdBZGRyS2V5BBttYXJrZXRpbmdBbW91bnRBdmFpbGFibGVOb3cJAJcDAQkAzAgCCQBrAwUObWFya2V0aW5nVG90YWwJAGUCBQNub3cFEWxhc3RNYXJrZXRpbmdUaW1lBQpZRUFSTUlMTElTCQDMCAIFE21hcmtldGluZ0Ftb3VudExlZnQFA25pbAQPbWFya2V0aW5nV2xnb2xkCQDwBwIFDW1hcmtldGluZ0FkZHIFBXdsZ0lkBAl0ZWFtVG90YWwJAGsDBQhNSUxMSU9ONgUJVEVBTVNIQVJFBQJNNgQOdGVhbUFtb3VudExlZnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFB2RhcHBXbGcFEXRlYW1BbW91bnRMZWZ0S2V5BQl0ZWFtVG90YWwEDGxhc3RUZWFtVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUHZGFwcFdsZwUPbGFzdFRlYW1UaW1lS2V5BQlpc3N1ZVRpbWUECHRlYW1BZGRyCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBCQCdCAIJAJEDAgUJY29udHJhY3RzBQdkYXBwV2xnBQt0ZWFtQWRkcktleQQWdGVhbUFtb3VudEF2YWlsYWJsZU5vdwkAlwMBCQDMCAIJAGsDBQl0ZWFtVG90YWwJAGUCBQNub3cFDGxhc3RUZWFtVGltZQkAaAIAAwUKWUVBUk1JTExJUwkAzAgCBQ50ZWFtQW1vdW50TGVmdAUDbmlsBAp0ZWFtV2xnb2xkCQDwBwIFCHRlYW1BZGRyBQV3bGdJZAQIYWN0VG90YWwJAGsDBQhNSUxMSU9ONgUNQUNUSVZJVFlTSEFSRQUCTTYEDWFjdEFtb3VudExlZnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFB2RhcHBXbGcFEGFjdEFtb3VudExlZnRLZXkFCGFjdFRvdGFsBBJsYXN0QWN0aXZpdGllc1RpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFB2RhcHBXbGcFFWxhc3RBY3Rpdml0aWVzVGltZUtleQUJaXNzdWVUaW1lBBVhY3RBbW91bnRBdmFpbGFibGVOb3cJAJcDAQkAzAgCCQBrAwUIYWN0VG90YWwJAGUCBQNub3cFEmxhc3RBY3Rpdml0aWVzVGltZQkAaAIAAwUKWUVBUk1JTExJUwkAzAgCBQ1hY3RBbW91bnRMZWZ0BQNuaWwECWFjdFdsZ29sZAkA8AcCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcFJlc3QFBXdsZ0lkBAxsYXN0VXNlclRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFB2RhcHBXbGcJARhrZXlMYXN0Q2xhaW1lZFRpbWVCeVVzZXIBBQt1c2VyQWRkck9wdAUJaXNzdWVUaW1lBA5sYXN0VXNlclBlcmlvZAkAaQIJAGUCBQxsYXN0VXNlclRpbWUFCWlzc3VlVGltZQUKWUVBUk1JTExJUwQKbm93TGltaXRlZAkAlwMBCQDMCAIFA25vdwkAzAgCCQBkAgUJaXNzdWVUaW1lCQBoAgADBQpZRUFSTUlMTElTBQNuaWwECWN1clBlcmlvZAkAlwMBCQDMCAIJAGkCCQBlAgUDbm93BQlpc3N1ZVRpbWUFCllFQVJNSUxMSVMJAMwIAgACBQNuaWwEA2VmZgkBCWdldFBpZWNlcwIFC3VzZXJBZGRyT3B0CQCRAwIFCWNvbnRyYWN0cwULZGFwcFN0YWtpbmcEFWN1clBlcmlvZERpc3RyaWJ1dGlvbgkBFGRpc3RyaWJ1dGlvbkJ5UGVyaW9kAQUJY3VyUGVyaW9kBAp1c2VyQW1vdW50CQBrAwMJAAACBQ5sYXN0VXNlclBlcmlvZAUJY3VyUGVyaW9kCQBrAwUVY3VyUGVyaW9kRGlzdHJpYnV0aW9uCQBlAgUKbm93TGltaXRlZAUMbGFzdFVzZXJUaW1lBQpZRUFSTUlMTElTAwkAAAIFDmxhc3RVc2VyUGVyaW9kCQBlAgUJY3VyUGVyaW9kAAEJAGQCCQBrAwkBFGRpc3RyaWJ1dGlvbkJ5UGVyaW9kAQkAZQIFCWN1clBlcmlvZAABCQBlAgkAZAIFCWlzc3VlVGltZQkAaAIFCllFQVJNSUxMSVMFCWN1clBlcmlvZAUMbGFzdFVzZXJUaW1lBQpZRUFSTUlMTElTCQBrAwUVY3VyUGVyaW9kRGlzdHJpYnV0aW9uCQBlAgUKbm93TGltaXRlZAkAZAIFCWlzc3VlVGltZQkAaAIFCllFQVJNSUxMSVMFCWN1clBlcmlvZAUKWUVBUk1JTExJUwkAZAIJAGQCCQBrAwkBFGRpc3RyaWJ1dGlvbkJ5UGVyaW9kAQkAZQIFCWN1clBlcmlvZAACCQBlAgkAZAIFCWlzc3VlVGltZQkAaAIFCllFQVJNSUxMSVMJAGUCBQljdXJQZXJpb2QAAQUMbGFzdFVzZXJUaW1lBQpZRUFSTUlMTElTCQEUZGlzdHJpYnV0aW9uQnlQZXJpb2QBCQBlAgUJY3VyUGVyaW9kAAEJAGsDBRVjdXJQZXJpb2REaXN0cmlidXRpb24JAGUCBQpub3dMaW1pdGVkCQBkAgUJaXNzdWVUaW1lCQBoAgUKWUVBUk1JTExJUwUJY3VyUGVyaW9kBQpZRUFSTUlMTElTCQCRAwIFA2VmZgABCQCRAwIFA2VmZgAABBBzTGFuZERhaWx5QW1vdW50CQBrAwkAawMFFWN1clBlcmlvZERpc3RyaWJ1dGlvbgUDREFZBQpZRUFSTUlMTElTABkJAJEDAgUDZWZmAAAED2Ftb3VudExlZnRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUHZGFwcFdsZwUUc3Rha2Vyc0Ftb3VudExlZnRLZXkAAAkAzAgCBQxpc3N1ZWRBbW91bnQJAMwIAgkAawMFDXRvdGFsRnVuZHNVc2QFAk04BQxpc3N1ZWRBbW91bnQJAMwIAgUNdG90YWxGdW5kc1VzZAkAzAgCBQplY29ub215VXNkCQDMCAIFB3Jlc3RVc2QJAMwIAgUGd2xnVXNkCQDMCAIFCXB1enpsZVVzZAkAzAgCBQlpc3N1ZVRpbWUJAMwIAgURbGFzdE1hcmtldGluZ1RpbWUJAMwIAgUObWFya2V0aW5nVG90YWwJAMwIAgUTbWFya2V0aW5nQW1vdW50TGVmdAkAzAgCBRttYXJrZXRpbmdBbW91bnRBdmFpbGFibGVOb3cJAMwIAgUPbWFya2V0aW5nV2xnb2xkCQDMCAIFCXRlYW1Ub3RhbAkAzAgCBQ50ZWFtQW1vdW50TGVmdAkAzAgCBRZ0ZWFtQW1vdW50QXZhaWxhYmxlTm93CQDMCAIFCnRlYW1XbGdvbGQJAMwIAgUIYWN0VG90YWwJAMwIAgUNYWN0QW1vdW50TGVmdAkAzAgCBRVhY3RBbW91bnRBdmFpbGFibGVOb3cJAMwIAgUJYWN0V2xnb2xkCQDMCAIFCWN1clBlcmlvZAkAzAgCBQ9hbW91bnRMZWZ0VG90YWwJAMwIAgUVY3VyUGVyaW9kRGlzdHJpYnV0aW9uCQDMCAIFDGxhc3RVc2VyVGltZQkAzAgCBQp1c2VyQW1vdW50CQDMCAIFEHNMYW5kRGFpbHlBbW91bnQJAMwIAgUPaW52ZXN0RnVuZFRvdGFsBQNuaWwBDWtleUR1Y2tIZWFsdGgBC2R1Y2tBc3NldElkCQCsAgICC2R1Y2tIZWFsdGhfBQtkdWNrQXNzZXRJZAEMa2V5RHVja0NoYXJzAQtkdWNrQXNzZXRJZAkArAICAgpkdWNrQ2hhcnNfBQtkdWNrQXNzZXRJZAEJa2V5RHVja1hQAQtkdWNrQXNzZXRJZAkArAICAgdkdWNrWFBfBQtkdWNrQXNzZXRJZAEMa2V5RHVja0xldmVsAQtkdWNrQXNzZXRJZAkArAICAgpkdWNrTGV2ZWxfBQtkdWNrQXNzZXRJZAERa2V5RHVja0ZyZWVQb2ludHMBC2R1Y2tBc3NldElkCQCsAgICD2R1Y2tGcmVlUG9pbnRzXwULZHVja0Fzc2V0SWQBEGtleUR1Y2tFcXVpcG1lbnQBC2R1Y2tBc3NldElkCQCsAgICDmR1Y2tFcXVpcG1lbnRfBQtkdWNrQXNzZXRJZAEJa2V5VXNlclhQAQRhZGRyCQCsAgICB3VzZXJYUF8FBGFkZHIBDGtleVVzZXJMZXZlbAEEYWRkcgkArAICAgp1c2VyTGV2ZWxfBQRhZGRyARFrZXlVc2VyRnJlZVBvaW50cwEEYWRkcgkArAICAg91c2VyRnJlZVBvaW50c18FBGFkZHIBCW1heEhlYWx0aAEFbGV2ZWwJAGQCAGQFBWxldmVsAApBUlRQUkVTQUxFAgdQUkVTQUxFAApBUlRPTkJPQVJEAgdPTkJPQVJEAAZOVU1SRVMABgAPREFJTFlSRVNCWVBJRUNFAID40gEACURBWU1JTExJUwCAuJkpAAxXSE1VTFRJUExJRVIAgMivoCUAEFJFU09VUkNFUFJJQ0VNSU4A1bUCAA1FU01BWFBBQ0tBR0VTAAMACUVTQlVZQ09FRgAEAApFU1NFTExDT0VGAAoACUNPRUZGMk1BVACAreIEABBwcm9kdWN0aW9uTWF0cml4CQDMCAICJThfOF84XzE3XzE3XzQyXzEyXzBfMzBfMCwwLDAsMCwwLDAsMF8JAMwIAgIlOF84XzhfMTdfMTdfNDJfMjRfMF82MF8wLDAsNSwyLDAsMCwwXwkAzAgCAic4XzhfOF8xN18xN180Ml8zNl8wXzEyMF8wLDAsMTAsNCwwLDAsMF8JAMwIAgIpOF8xOV8xOV84XzI3XzE5XzI2XzFfMjBfMCwwLDAsMCwwLDAsMF8wMDEJAMwIAgIpOF8xOV8xOV84XzI3XzE5XzUyXzFfNDBfMCwwLDAsMCwwLDAsMF8wMDEJAMwIAgIpOF8xOV8xOV84XzI3XzE5Xzc4XzFfODBfMCwwLDAsMCwwLDAsMF8wMDEJAMwIAgIiOF84XzhfOF84XzYwXzEzXzJfMl8wLDAsMCwwLDAsMCwwXwkAzAgCAiI4XzhfOF84XzhfNjBfMjZfMl80XzAsMCwwLDAsMCwwLDBfCQDMCAICIjhfOF84XzhfOF82MF8zOV8yXzhfMCwwLDAsMCwwLDAsMF8JAMwIAgIpMzBfMzBfM18xN18xN18zXzMwXzNfMzBfMCwwLDAsMCwwLDAsMF8xMTEJAMwIAgIpMzBfMzBfM18xN18xN18zXzYwXzNfNTBfMCwwLDAsMCwwLDAsMF8xMTEJAMwIAgIpMzBfMzBfM18xN18xN18zXzkwXzNfNzBfMCwwLDAsMCwwLDAsMF8xMTEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMTFfNF8zMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8yMl80XzUwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzMzXzRfNzBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIqNF8xM18yMl80XzM1XzIyXzIzXzBfNTAsMSwwXzAsMCwwLDAsMCwwLDBfCQDMCAICKjRfMTNfMjJfNF8zNV8yMl80Nl8wXzUwLDEsMV8wLDIsNSwwLDAsMCwwXwkAzAgCAis0XzEzXzIyXzRfMzVfMjJfNjlfMF81MCwyLDFfMCw1LDEwLDAsMCwwLDBfCQDMCAICLDVfMjVfNDBfNV8xMF8xNV8yMF8xXzMwLDEsMV8wXzAsMCwwLDAsMCwwLDBfCQDMCAICLDVfMjVfNDBfNV8xMF8xNV80MF8xXzMwLDEsMl8wXzAsMCwwLDAsMCwwLDBfCQDMCAICLDVfMjVfNDBfNV8xMF8xNV82MF8xXzMwLDEsM18wXzAsMCwwLDAsMCwwLDBfBQNuaWwACXJJZHhDb2VmZgAGAA5QUk9EVUNUUEtHU0laRQAKARFrZXlMYXN0VHhJZEJ5VXNlcgEEYWRkcgkArAICAg9sYXN0VHhJZEJ5VXNlcl8FBGFkZHIBFWtleUxhbmRBc3NldElkVG9Pd25lcgEHYXNzZXRJZAkArAICAgluZnRPd25lcl8FB2Fzc2V0SWQBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQdhc3NldElkCQCsAgICGGxhbmRDdXN0b21OYW1lQnlBc3NldElkXwUHYXNzZXRJZAEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgtzdGFrZWRUaW1lXwUHYXNzZXRJZAEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgtpbmZyYUxldmVsXwUHYXNzZXRJZAEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBHR5cGUHYXNzZXRJZAkAuQkCCQDMCAICDWxhbmRBcnRTdGF0dXMJAMwIAgUEdHlwZQkAzAgCBQdhc3NldElkBQNuaWwCAV8BEmtleVdhcmVob3VzZUJ5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIKd2FyZUhvdXNlXwULbGFuZEFzc2V0SWQBGmtleUR1Y2tBc3NldElkVG9DdXN0b21OYW1lAQdhc3NldElkCQCsAgICGGR1Y2tDdXN0b21OYW1lQnlBc3NldElkXwUHYXNzZXRJZAEWa2V5QWRkcmVzc1RvQ3VzdG9tTmFtZQEEYWRkcgkArAICAhhhY2NvdW50Q3VzdG9tTmFtZUJ5QWRkcl8FBGFkZHIBD2tleUFkZHJlc3NSZWZCeQEEYWRkcgkArAICAglhY2NSZWZCeV8FBGFkZHIBHGtleU9uYm9hcmRBcnREdWNrQWN0aXZhdGVkQnkBBGFkZHIJAKwCAgIab25ib2FyZEFydEFjdGl2YXRlZER1Y2tCeV8FBGFkZHIBE2tleUFkZHJlc3NSZWZlcnJhbHMBBGFkZHIJAKwCAgINYWNjUmVmZXJyYWxzXwUEYWRkcgEQa2V5RHVja0lkVG9Pd25lcgEHYXNzZXRJZAkArAICAgpkdWNrT3duZXJfBQdhc3NldElkARRrZXlTdGFrZWREdWNrQnlPd25lcgEJb3duZXJBZGRyCQCsAgICEnN0YWtlZER1Y2tCeU93bmVyXwUJb3duZXJBZGRyAQ9rZXlEdWNrTG9jYXRpb24BC2R1Y2tBc3NldElkCQCsAgICDWR1Y2tMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQprZXlCbG9ja2VkAAIQY29udHJhY3RzQmxvY2tlZAEOa2V5T3JkZXJCeUxhbmQBC2xhbmRBc3NldElkCQCsAgICCmxhbmRPcmRlcl8FC2xhbmRBc3NldElkAQ5rZXlFc1dhcmVob3VzZQACGmVtZXJnZW5jeVdhcmVob3VzZVByb2R1Y3RzARVrZXlUb3VyU3RhdGljRGF0YUJ5SWQBA3RJZAkArAICAhYlcyVkX190b3VyU3RhdGljRGF0YV9fCQCkAwEFA3RJZAEWa2V5VG91ckR5bmFtaWNEYXRhQnlJZAEDdElkCQCsAgICFyVzJWRfX3RvdXJEeW5hbWljRGF0YV9fCQCkAwEFA3RJZAEXa2V5QWxsUmVnaXN0cmFuZHNCeVRvdXIBA3RJZAkArAICAhYlcyVkX19hbGxSZWdpc3RyYW5kc19fCQCkAwEFA3RJZAAJaWR4U3RhdGljAAAACmlkeER5bmFtaWMAAQELZ2V0VG91ckRhdGECDHRvdXJDb250cmFjdAN0SWQEBnN0YXRpYwkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUMdG91ckNvbnRyYWN0CQEVa2V5VG91clN0YXRpY0RhdGFCeUlkAQUDdElkCQCsAgIJAKwCAgIZRXJyb3IgcmVhZGluZyB0b3VybmFtZW50IAkApAMBBQN0SWQCBSBkYXRhAgJfXwQHZHluYW1pYwkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUMdG91ckNvbnRyYWN0CQEWa2V5VG91ckR5bmFtaWNEYXRhQnlJZAEFA3RJZAkArAICCQCsAgICGUVycm9yIHJlYWRpbmcgdG91cm5hbWVudCAJAKQDAQUDdElkAgUgZGF0YQICX18JAMwIAgUGc3RhdGljCQDMCAIFB2R5bmFtaWMFA25pbAATdFN0YXRpY1JlZ2lzdGVyQ29zdAACABJ0U3RhdGljQXR0ZW1wdENvc3QAAwAMdFN0YXRpY1N0YXJ0AAUACnRTdGF0aWNFbmQABgAOdER5bmFtaWNTdGF0dXMAAQAPdER5bmFtaWNXaW5EdWNrAAIAEXREeW5hbWljV2luUmVzdWx0AAMAFXREeW5hbWljVG90YWxSZWdDb3VudAAEABV0RHluYW1pY1RvdGFsQXR0ZW1wdHMABQESZ2V0UmVjaXBlTWF0ZXJpYWxzAQZyZWNpcGUJAGgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGcmVjaXBlBQlySWR4Q29lZmYFCUNPRUZGMk1BVAAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEAC3VzZHRBc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQMJAAACAQFUBQckbWF0Y2gwASBVsdifcoeC7+XjW42sBatl3ppDoS8WuwXzGreHpfHFGAkAAgECDVVua25vd24gY2hhaW4AFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAIjM1BRQ3V2RmJ2aDRMa1BVbnJuVTF6M2puYkExcDltM1dOaHYDCQAAAgEBVAUHJG1hdGNoMAIjM011bWtHR3p0Q0tBWHBXRHF4a2Rkb2ZxWFNVYnFRa3ZTSnkJAAIBAg1Vbmtub3duIGNoYWluABFJbmZyYVVwZ3JhZGVDb3N0UwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAyK+gJQMJAAACAQFUBQckbWF0Y2gwAIDC1y8JAAIBAg1Vbmtub3duIGNoYWluAANTRVACAl9fAAVNVUxUNgDAhD0ABU1VTFQ4AIDC1y8ABVNTSVpFABkABU1TSVpFAGQABUxTSVpFAOEBAAZYTFNJWkUAkAMAB1hYTFNJWkUA8QQBD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAABFJZHhDZmdTdGFraW5nRGFwcAABABFJZHhDZmdFY29ub215RGFwcAACABRJZHhDZmdHb3Zlcm5hbmNlRGFwcAADAA1JZHhDZmdXbGdEYXBwAAQAFElkeENmZ1B1enpsZVBvb2xEYXBwAAUAFElkeENmZ0ludmVzdEZ1bmREYXBwAAYAFElkeENmZ1RvdXJuYW1lbnREYXBwAAcBCmtleVJlc3RDZmcAAg4lc19fcmVzdENvbmZpZwEOa2V5UmVzdEFkZHJlc3MAAgwlc19fcmVzdEFkZHIBEXJlYWRSZXN0Q2ZnT3JGYWlsAQRyZXN0CQC8CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQRyZXN0CQEKa2V5UmVzdENmZwAFA1NFUAEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgdyZXN0Q2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHcmVzdENmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgADHJlc3RDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5UmVzdEFkZHJlc3MABRVkZWZhdWx0UmVzdEFkZHJlc3NTdHIAB3Jlc3RDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDHJlc3RDb250cmFjdAAPc3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnU3Rha2luZ0RhcHAAD2Vjb25vbXlDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ0Vjb25vbXlEYXBwAAtnb3ZDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ0dvdmVybmFuY2VEYXBwAAt3bGdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFDUlkeENmZ1dsZ0RhcHAAEnB1enpsZVBvb2xDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ1B1enpsZVBvb2xEYXBwABJpbnZlc3RGdW5kQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRRJZHhDZmdJbnZlc3RGdW5kRGFwcAASdG91cm5hbWVudENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnVG91cm5hbWVudERhcHAACnJlY0xhbmROdW0AAAALcmVjTGFuZFNpemUAAQALcmVjVGVycmFpbnMAAgAMcmVjQ29udGluZW50AAMADXdsZ0Fzc2V0SWRLZXkCC3dsZ19hc3NldElkAAp3bGdBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgULd2xnQ29udHJhY3QFDXdsZ0Fzc2V0SWRLZXkCE05vdCBpbml0aWFsaXplZCB5ZXQACklkeEVmZlVzZXIAAQERa2V5UmVzUHJvcG9ydGlvbnMAAhNyZXNUeXBlc1Byb3BvcnRpb25zARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBCW93bmVyQWRkcgkArAICAhNzdGFrZWRMYW5kc0J5T3duZXJfBQlvd25lckFkZHIBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBCW93bmVyQWRkcgkArAICAhRzdGFrZWRQaWVjZXNCeU93bmVyXwUJb3duZXJBZGRyAQhhc1N0cmluZwEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBbgUHJG1hdGNoMAUBbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEJYXNCb29sZWFuAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAXMFByRtYXRjaDAFAXMJAAIBAhlmYWlsIHRvIGNhc3QgaW50byBCb29sZWFuAQ9udW1QaWVjZXNCeVNpemUBCGxhbmRTaXplBAckbWF0Y2gwBQhsYW5kU2l6ZQMJAAACAgFTBQckbWF0Y2gwBQVTU0laRQMJAAACAgFNBQckbWF0Y2gwBQVNU0laRQMJAAACAgFMBQckbWF0Y2gwBQVMU0laRQMJAAACAgJYTAUHJG1hdGNoMAUGWExTSVpFAwkAAAICA1hYTAUHJG1hdGNoMAUHWFhMU0laRQkAAgECEVVua25vd24gbGFuZCBzaXplAQ5nZXRWb3RpbmdQb3dlcgESdXNlckFkZHJTdHJPckVtcHR5BAVwcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBEWtleVJlc1Byb3BvcnRpb25zAAILMF8wXzBfMF8wXzACAV8KAQVhZGRlcgIDYWNjBGl0ZW0JAGQCBQNhY2MJAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQKdG90YWxQb3dlcgoAAiRsBQVwcm9wcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFYWRkZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYECnVzZXJzUG93ZXIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFEnVzZXJBZGRyU3RyT3JFbXB0eQAACQDMCAIFCnRvdGFsUG93ZXIJAMwIAgUKdXNlcnNQb3dlcgUDbmlsAA1VU0RUUFJJWkVQQVJUAKDCHgESYXNMaXN0SW50Q29tcGFjdGVkAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAglMaXN0W0FueV0ECnZhbEFueUxpc3QFByRtYXRjaDADCQECIT0CCQCQAwEFCnZhbEFueUxpc3QFBk5VTVJFUwkAAgEJAKwCAgIOQXJyYXkgc2l6ZSBpcyAJAKQDAQkAkAMBBQp2YWxBbnlMaXN0CgEEY29udgIDYWNjBGl0ZW0EByRtYXRjaDEFBGl0ZW0DCQABAgUHJG1hdGNoMQIDSW50BAJpdAUHJG1hdGNoMQkAzQgCBQNhY2MJAKQDAQUCaXQJAAIBAhRMaXN0IHR5cGUgaXMgbm90IEludAQBcgoAAiRsBQp2YWxBbnlMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQRjb252AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCQC5CQIFAXICAV8JAAIBAhZmYWlsIHRvIGNhc3QgaW50byBMaXN0AQ1hc1NwbGl0UmVzdWx0AQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAhYoTGlzdFtBbnldLCBMaXN0W0FueV0pBAJ0MgUHJG1hdGNoMAkAlAoCCQESYXNMaXN0SW50Q29tcGFjdGVkAQgFAnQyAl8xCQESYXNMaXN0SW50Q29tcGFjdGVkAQgFAnQyAl8yCQACAQIeZmFpbCB0byBjYXN0IGludG8gKExpc3QsIExpc3QpAQ53YWxsZXRJbnRlcm5hbAEOdXNlckFkZHJlc3NPcHQEBGFkZHIJAKYIAQUOdXNlckFkZHJlc3NPcHQEB2JhbGFuY2UDCQEJaXNEZWZpbmVkAQUEYWRkcgkA7wcBCQEFdmFsdWUBBQRhZGRyCQEOQmFsYW5jZURldGFpbHMEAAAAAAAAAAAEC3VzZHRCYWxhbmNlAwkBCWlzRGVmaW5lZAEFBGFkZHIJAPAHAgkBBXZhbHVlAQUEYWRkcgULdXNkdEFzc2V0SWQAAAQNd2xnb2xkQmFsYW5jZQMJAQlpc0RlZmluZWQBBQRhZGRyCQDwBwIJAQV2YWx1ZQEFBGFkZHIFCndsZ0Fzc2V0SWQAAAQKY3VzdG9tTmFtZQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQUOdXNlckFkZHJlc3NPcHQFDnVzZXJBZGRyZXNzT3B0BAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFDnVzZXJBZGRyZXNzT3B0BAVyZWZCeQkAnQgCBQ9zdGFraW5nQ29udHJhY3QFCHJlZkJ5S2V5BARyZWZzCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBE2tleUFkZHJlc3NSZWZlcnJhbHMBBQ51c2VyQWRkcmVzc09wdAIABAhsYXN0VHhJZAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARFrZXlMYXN0VHhJZEJ5VXNlcgEFDnVzZXJBZGRyZXNzT3B0AgAEBnBpZWNlcwkAkQMCCQEOZ2V0Vm90aW5nUG93ZXIBBQ51c2VyQWRkcmVzc09wdAUKSWR4RWZmVXNlcgQCeHAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEJa2V5VXNlclhQAQUOdXNlckFkZHJlc3NPcHQAAAQDbHZsCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleVVzZXJMZXZlbAEFDnVzZXJBZGRyZXNzT3B0AAAECmZyZWVQb2ludHMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQERa2V5VXNlckZyZWVQb2ludHMBBQ51c2VyQWRkcmVzc09wdAAABAdvbmJvYXJkAwkBCWlzRGVmaW5lZAEFBXJlZkJ5CQCsAgIFCkFSVE9OQk9BUkQDAwkBCWlzRGVmaW5lZAEFBGFkZHIJAQlpc0RlZmluZWQBCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBHGtleU9uYm9hcmRBcnREdWNrQWN0aXZhdGVkQnkBBQ51c2VyQWRkcmVzc09wdAcCAjoxAgI6MAIACQDMCAIJAKwCAgISJXMlc19fY3VzdG9tTmFtZV9fBQpjdXN0b21OYW1lCQDMCAIJAKwCAgISJXMlc19fcmVmZXJyZWRCeV9fCQELdmFsdWVPckVsc2UCBQVyZWZCeQIACQDMCAIJAKwCAgIRJXMlc19fcmVmZXJyYWxzX18FBHJlZnMJAMwIAgkArAICAhAlcyVzX19sYXN0VHhJZF9fBQhsYXN0VHhJZAkAzAgCCQCsAgICFCVzJWRfX3dhdmVzQmFsYW5jZV9fCQCkAwEIBQdiYWxhbmNlCWF2YWlsYWJsZQkAzAgCCQCsAgICFSVzJWRfX3dsZ29sZEJhbGFuY2VfXwkApAMBBQ13bGdvbGRCYWxhbmNlCQDMCAIJAKwCAgITJXMlZF9fdXNkdEJhbGFuY2VfXwkApAMBBQt1c2R0QmFsYW5jZQkAzAgCCQCsAgICFCVzJWRfX3N0YWtlZFBpZWNlc19fCQCkAwEFBnBpZWNlcwkAzAgCCQCsAgICESVzJWRfX2N1cnJlbnRYcF9fCQCkAwEFAnhwCQDMCAIJAKwCAgISJXMlZF9fY3VycmVudEx2bF9fCQCkAwEFA2x2bAkAzAgCCQCsAgICGiVzJWRfX3BvaW50c1RvRGlzdHJpYnV0ZV9fCQCkAwEFCmZyZWVQb2ludHMJAMwIAgkArAICAhclcyVzX193YWxsZXRBcnRlZmFjdHNfXwUHb25ib2FyZAUDbmlsAQxhcHBseUJvbnVzZXMCC2xhbmRBc3NldElkBnBpZWNlcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQJYXJ0UGllY2VzCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQAAAQEYWRkNgkAaQIFCmluZnJhTGV2ZWwABgQEYWRkNwkAaQIFCmluZnJhTGV2ZWwABwkAlQoDBQppbmZyYUxldmVsBQlhcnRQaWVjZXMJAGQCCQBkAgUPREFJTFlSRVNCWVBJRUNFCQBrAwUPREFJTFlSRVNCWVBJRUNFCQBkAgkAZAIFCmluZnJhTGV2ZWwFBGFkZDYJAGgCAAIFBGFkZDcABQkAawMFD0RBSUxZUkVTQllQSUVDRQUJYXJ0UGllY2VzCQBoAgUGcGllY2VzAAUBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQl2b2xQcmVmaXgEBXBhcnRzCQC1CQIFCXZvbFByZWZpeAIBXwkAaAIJAGgCBQxXSE1VTFRJUExJRVIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAAEMZ2V0V2FyZWhvdXNlAwV3aEtleQlsYW5kSW5kZXgKaW5mcmFMZXZlbAQJdm9sUHJlZml4CQCsAgIJAKwCAgkApAMBBQlsYW5kSW5kZXgCAV8JAKQDAQUKaW5mcmFMZXZlbAQEdG90UwkApAMBCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBBQl2b2xQcmVmaXgEBXdoU3RyCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAUFd2hLZXkJAKwCAgkArAICCQCsAgIJAKwCAgUJdm9sUHJlZml4Ah46MF8wXzBfMF8wXzA6MF8wXzBfMF8wXzA6OjBfMF8FBHRvdFMCAV8FBHRvdFMJALUJAgUFd2hTdHICAToBDWR1Y2tJbmZvVHVwbGUBC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAkAlwoFCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtkdWNrQXNzZXRJZAD///////////8BCAkBBXZhbHVlAQkA7AcBCQDZBAEFC2R1Y2tBc3NldElkBG5hbWUJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQCAAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFBW1heEhQCQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAITZ2V0QmFja3BhY2tSRUFET05MWQkAzAgCBQtkdWNrQXNzZXRJZAUDbmlsBQNuaWwBDWR1Y2tJbmZvQXJyYXkDC2R1Y2tBc3NldElkBW93bmVyB2R1Y2tJbmYECmN1c3RvbU5hbWUJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBBQtkdWNrQXNzZXRJZAgFB2R1Y2tJbmYCXzIEBWNoYXJzCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tDaGFycwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzAEAnhwCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBCWtleUR1Y2tYUAEFC2R1Y2tBc3NldElkAAAEA2x2bAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABApmcmVlUG9pbnRzCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBEWtleUR1Y2tGcmVlUG9pbnRzAQULZHVja0Fzc2V0SWQAAAQGZXF1aXBtCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAILO187XztfO187XzsJAMwIAgkArAICAg8lcyVzX19hc3NldElkX18FC2R1Y2tBc3NldElkCQDMCAIJAKwCAgINJXMlc19fb3duZXJfXwUFb3duZXIJAMwIAgkArAICAhIlcyVzX19jdXN0b21OYW1lX18FCmN1c3RvbU5hbWUJAMwIAgkArAICAhIlcyVkX19zdGFrZWRUaW1lX18JAKQDAQgFB2R1Y2tJbmYCXzEJAMwIAgkArAICAgwlcyVzX19uYW1lX18IBQdkdWNrSW5mAl8yCQDMCAIJAKwCAgIQJXMlc19fbG9jYXRpb25fXwgFB2R1Y2tJbmYCXzMJAMwIAgkArAICAg4lcyVkX19oZWFsdGhfXwkApAMBCAUHZHVja0luZgJfNAkAzAgCCQCsAgICESVzJWRfX21heEhlYWx0aF9fCQCkAwEJAQltYXhIZWFsdGgBBQNsdmwJAMwIAgkArAICAhclcyVzX19jaGFyYWN0ZXJpc3RpY3NfXwUFY2hhcnMJAMwIAgkArAICAhElcyVkX19jdXJyZW50WHBfXwkApAMBBQJ4cAkAzAgCCQCsAgICEiVzJWRfX2N1cnJlbnRMdmxfXwkApAMBBQNsdmwJAMwIAgkArAICAholcyVkX19wb2ludHNUb0Rpc3RyaWJ1dGVfXwkApAMBBQpmcmVlUG9pbnRzCQDMCAIJAKwCAgIQJXMlc19fYmFja1BhY2tfXwgFB2R1Y2tJbmYCXzUJAMwIAgkArAICAhElcyVzX19lcXVpcG1lbnRfXwUGZXF1aXBtBQNuaWwBDWxhbmRJbmZvQXJyYXkDC2xhbmRBc3NldElkBW93bmVyCnN0YWtlZFRpbWUDCQAAAgULbGFuZEFzc2V0SWQCAAkAAgECF2xhbmRBc3NldElkIGlzIHJlcXVpcmVkBAFhCQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEAWQJALUJAggFAWELZGVzY3JpcHRpb24CAV8EB2xhbmROdW0DCQBmAggFAWEIcXVhbnRpdHkAAAkAkQMCBQFkBQpyZWNMYW5kTnVtCQCsAgICAS0JAJEDAgUBZAUKcmVjTGFuZE51bQQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQMcHJvZHVjdGl2aXR5CQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCnN0YWtlZFRpbWUECGF2YWlsUmVzAwkAZgIFCnN0YWtlZFRpbWUAAAkAawMFCWRlbHRhVGltZQkAaAIIBQxwcm9kdWN0aXZpdHkCXzMFBnBpZWNlcwUJREFZTUlMTElTAAAEB25lZWRNYXQJAGsDBRFJbmZyYVVwZ3JhZGVDb3N0UwkAaAIFBnBpZWNlcwkAZAIIBQxwcm9kdWN0aXZpdHkCXzEAAQUFU1NJWkUEDmdsb2JhbEFuZExvY2FsAwkAZgIFCnN0YWtlZFRpbWUAAAkBDWFzU3BsaXRSZXN1bHQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIkc3BsaXRCeUdsb2JhbEFuZExvY2FsV2VpZ2h0c1JFQURPTkxZCQDMCAIFB25lZWRNYXQJAMwIAgUIYXZhaWxSZXMJAMwIAgkAkQMCBQFkBQtyZWNUZXJyYWlucwUDbmlsBQNuaWwJAJQKAgkBEmFzTGlzdEludENvbXBhY3RlZAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AhxzcGxpdEJ5R2xvYmFsV2VpZ2h0c1JFQURPTkxZCQDMCAIFB25lZWRNYXQFA25pbAUDbmlsAgAECmN1c3RvbU5hbWUJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBBQtsYW5kQXNzZXRJZAkArAICCQCsAgIJAJEDAgUBZAUMcmVjQ29udGluZW50AgEtCQCRAwIFAWQFCnJlY0xhbmROdW0JAMwIAgkArAICAg8lcyVzX19hc3NldElkX18FC2xhbmRBc3NldElkCQDMCAIJAKwCAgINJXMlc19fb3duZXJfXwUFb3duZXIJAMwIAgkArAICAhIlcyVzX19jdXN0b21OYW1lX18FCmN1c3RvbU5hbWUJAMwIAgkArAICAhIlcyVkX19zdGFrZWRUaW1lX18JAKQDAQUKc3Rha2VkVGltZQkAzAgCCQCsAgICEyVzJXNfX2Rlc2NyaXB0aW9uX18JALkJAgkAzAgCBQdsYW5kTnVtCQDMCAIJAJEDAgUBZAULcmVjTGFuZFNpemUJAMwIAgkAkQMCBQFkBQtyZWNUZXJyYWlucwkAzAgCCQCRAwIFAWQFDHJlY0NvbnRpbmVudAUDbmlsAgFfCQDMCAIJAKwCAgISJXMlZF9faW5mcmFMZXZlbF9fCQCkAwEIBQxwcm9kdWN0aXZpdHkCXzEJAMwIAgkArAICAhYlcyVzX19hdmFpbFJlc0J5VHlwZV9fCAUOZ2xvYmFsQW5kTG9jYWwCXzIJAMwIAgkArAICAhUlcyVkX19hdmFpbFJlc1RvdGFsX18JAKQDAQUIYXZhaWxSZXMJAMwIAgkArAICAhQlcyVzX19uZWVkTWF0ZXJpYWxfXwgFDmdsb2JhbEFuZExvY2FsAl8xCQDMCAIJAKwCAgIdJXMlc19fbGFuZEFydGVmYWN0c19fUFJFU0FMRToJAKQDAQgFDHByb2R1Y3Rpdml0eQJfMgkAzAgCCQCsAgICESVzJXNfX3dhcmVob3VzZV9fCQC5CQIJAQxnZXRXYXJlaG91c2UDCQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQJAGkCBQZwaWVjZXMFBVNTSVpFCAUMcHJvZHVjdGl2aXR5Al8xAgE6CQDMCAIJAKwCAgIRJXMlc19fbGFuZE9yZGVyX18JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPZWNvbm9teUNvbnRyYWN0CQEOa2V5T3JkZXJCeUxhbmQBBQtsYW5kQXNzZXRJZAIwMEAwXzBAMF8wQDBfMEAwXzBAMF8wQDA6MEAwXzBAMF8wQDBfMEAwXzBAMF8wQDA6BQNuaWwBEmxhbmRPcmRlckluZm9BcnJheQILbGFuZEFzc2V0SWQFb3duZXIDCQAAAgULbGFuZEFzc2V0SWQCAAkAAgECF2xhbmRBc3NldElkIGlzIHJlcXVpcmVkBAFhCQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEAWQJALUJAggFAWELZGVzY3JpcHRpb24CAV8EBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUEDHByb2R1Y3Rpdml0eQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMJAMwIAgkArAICAg8lcyVzX19hc3NldElkX18FC2xhbmRBc3NldElkCQDMCAIJAKwCAgINJXMlc19fb3duZXJfXwUFb3duZXIJAMwIAgkArAICAhElcyVzX193YXJlaG91c2VfXwkAuQkCCQEMZ2V0V2FyZWhvdXNlAwkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkCQBpAgUGcGllY2VzBQVTU0laRQgFDHByb2R1Y3Rpdml0eQJfMQIBOgkAzAgCCQCsAgICESVzJXNfX2xhbmRPcmRlcl9fCQELdmFsdWVPckVsc2UCCQCdCAIFD2Vjb25vbXlDb250cmFjdAkBDmtleU9yZGVyQnlMYW5kAQULbGFuZEFzc2V0SWQCMDBAMF8wQDBfMEAwXzBAMF8wQDBfMEAwOjBAMF8wQDBfMEAwXzBAMF8wQDBfMEAwOgUDbmlsEAFpAQ1jb25zdHJ1Y3RvclYxAQljb250cmFjdHMDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQKAQpkZXNjcmlwdG9yAgNhY2MLaWdub3JlZEl0ZW0JAKwCAgUDYWNjAgIlcwQFZGVzY3IKAAIkbAUJY29udHJhY3RzCgACJHMJAJADAQUCJGwKAAUkYWNjMAIACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpkZXNjcmlwdG9yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQprZXlSZXN0Q2ZnAAkAuQkCCQDMCAIFBWRlc2NyBQljb250cmFjdHMFA1NFUAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5UmVzdEFkZHJlc3MACQClCAEFBHRoaXMFA25pbAFpARJ3YWxsZXRJbmZvUkVBRE9OTFkBDnVzZXJBZGRyZXNzT3B0CQCUCgIFA25pbAkBDndhbGxldEludGVybmFsAQUOdXNlckFkZHJlc3NPcHQBaQEXZHVja0J5T3duZXJJbmZvUkVBRE9OTFkBC3VzZXJBZGRyZXNzBApzdGFrZWREdWNrCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQULdXNlckFkZHJlc3MJAJQKAgUDbmlsAwMJAQlpc0RlZmluZWQBCQCmCAEFC3VzZXJBZGRyZXNzCQEJaXNEZWZpbmVkAQUKc3Rha2VkRHVjawcEC2R1Y2tBc3NldElkCQEFdmFsdWUBBQpzdGFrZWREdWNrCQENZHVja0luZm9BcnJheQMFC2R1Y2tBc3NldElkBQt1c2VyQWRkcmVzcwkBDWR1Y2tJbmZvVHVwbGUBBQtkdWNrQXNzZXRJZAkBDWR1Y2tJbmZvQXJyYXkDAgAFC3VzZXJBZGRyZXNzCQCXCgUA////////////AQIAAgAA////////////AQIAAWkBGWR1Y2tCeUFzc2V0SWRJbmZvUkVBRE9OTFkBC2R1Y2tBc3NldElkBAVvd25lcgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARBrZXlEdWNrSWRUb093bmVyAQULZHVja0Fzc2V0SWQJAJQKAgUDbmlsCQENZHVja0luZm9BcnJheQMFC2R1Y2tBc3NldElkAwkBCWlzRGVmaW5lZAEFBW93bmVyCQEFdmFsdWUBBQVvd25lcgIACQENZHVja0luZm9UdXBsZQEFC2R1Y2tBc3NldElkAWkBGWxhbmRCeUFzc2V0SWRJbmZvUkVBRE9OTFkBC2xhbmRBc3NldElkAwkAAAIFC2xhbmRBc3NldElkAgAJAAIBAhdsYW5kQXNzZXRJZCBpcyByZXF1aXJlZAQKc3Rha2VkVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQA////////////AQQFb3duZXIDCQBmAgUKc3Rha2VkVGltZQAACQEFdmFsdWUBCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkAgAJAJQKAgUDbmlsCQENbGFuZEluZm9BcnJheQMFC2xhbmRBc3NldElkBQVvd25lcgUKc3Rha2VkVGltZQFpAR5zdGFrZWRMYW5kc0J5T3duZXJJbmZvUkVBRE9OTFkBEGxhbmRPd25lckFkZHJlc3MDCQAAAgUQbGFuZE93bmVyQWRkcmVzcwIACQACAQIcbGFuZE93bmVyQWRkcmVzcyBpcyByZXF1aXJlZAQIbGFuZHNTdHIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUQbGFuZE93bmVyQWRkcmVzcwQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAoBB29uZUxhbmQCA2FjYwtsYW5kQXNzZXRJZAMJAAACBQtsYW5kQXNzZXRJZAIACQACAQIXbGFuZEFzc2V0SWQgaXMgcmVxdWlyZWQECnN0YWtlZFRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAP///////////wEJAM0IAgUDYWNjCQENbGFuZEluZm9BcnJheQMFC2xhbmRBc3NldElkBRBsYW5kT3duZXJBZGRyZXNzBQpzdGFrZWRUaW1lBAFyCgACJGwFBWxhbmRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdvbmVMYW5kAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhVMaXN0IHNpemUgZXhjZWVkcyAxMDAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZAkAlAoCBQNuaWwFAXIBaQEWbGFuZHNCeUlkc0luZm9SRUFET05MWQEMbGFuZEFzc2V0SWRzCgEHb25lTGFuZAIDYWNjC2xhbmRBc3NldElkAwkAAAIFC2xhbmRBc3NldElkAgAJAAIBAhdsYW5kQXNzZXRJZCBpcyByZXF1aXJlZAQKc3Rha2VkVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQA////////////AQQFb3duZXIDCQBmAgUKc3Rha2VkVGltZQAACQEFdmFsdWUBCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkAgAJAM0IAgUDYWNjCQENbGFuZEluZm9BcnJheQMFC2xhbmRBc3NldElkBQVvd25lcgUKc3Rha2VkVGltZQQBcgoAAiRsBQxsYW5kQXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB29uZUxhbmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkCQCUCgIFA25pbAUBcgFpASN3YXJlaG91c2VPcmRlckJ5QXNzZXRJZEluZm9SRUFET05MWQELbGFuZEFzc2V0SWQDCQAAAgULbGFuZEFzc2V0SWQCAAkAAgECF2xhbmRBc3NldElkIGlzIHJlcXVpcmVkBApzdGFrZWRUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAD///////////8BBAVvd25lcgMJAGYCBQpzdGFrZWRUaW1lAAAJAQV2YWx1ZQEJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQCAAkAlAoCBQNuaWwJARJsYW5kT3JkZXJJbmZvQXJyYXkCBQtsYW5kQXNzZXRJZAUFb3duZXIBaQEbb3JkZXJzQnlMYW5kSWRzSW5mb1JFQURPTkxZAQxsYW5kQXNzZXRJZHMKAQdvbmVMYW5kAgNhY2MLbGFuZEFzc2V0SWQDCQAAAgULbGFuZEFzc2V0SWQCAAkAAgECF2xhbmRBc3NldElkIGlzIHJlcXVpcmVkBApzdGFrZWRUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAD///////////8BBAVvd25lcgMJAGYCBQpzdGFrZWRUaW1lAAAJAQV2YWx1ZQEJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQCAAkAzQgCBQNhY2MJARJsYW5kT3JkZXJJbmZvQXJyYXkCBQtsYW5kQXNzZXRJZAUFb3duZXIEAXIKAAIkbAUMbGFuZEFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdvbmVMYW5kAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA0MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoCQCUCgIFA25pbAUBcgFpARVjYW5jZWxXYXJlaG91c2VPcmRlcnMBDGxhbmRBc3NldElkcwMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEXBlcm1pc3Npb24gZGVuaWVkBAdibG9ja2VkCQCbCAIFD3N0YWtpbmdDb250cmFjdAkBCmtleUJsb2NrZWQAAwMJAQEhAQkBCWlzRGVmaW5lZAEFB2Jsb2NrZWQGCQAAAgkBBXZhbHVlAQUHYmxvY2tlZAcJAAIBAjNDb250cmFjdHMgc2hvdWxkIGJlIGJsb2NrZWQgYmVmb3JlIGNhbmNlbGluZyBvcmRlcnMKAQdvbmVMYW5kAgFhC2xhbmRBc3NldElkAwkAAAIFC2xhbmRBc3NldElkAgAJAAIBAhdsYW5kQXNzZXRJZCBpcyByZXF1aXJlZAQBYwkBCWFzQm9vbGVhbgEJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhFzZXRXYXJlaG91c2VPcmRlcgkAzAgCAjAwQDBfMEAwXzBAMF8wQDBfMEAwXzBAMDowQDBfMEAwXzBAMF8wQDBfMEAwXzBAMDoJAMwIAgULbGFuZEFzc2V0SWQFA25pbAUDbmlsAwMFAWEGBQFjCQEBIQEDBQFhBQFjBwcEAXIKAAIkbAUMbGFuZEFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAcKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB29uZUxhbmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDMwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeCQCUCgIFA25pbAUBcgFpARNmaXhXYXJlaG91c2VGb3JtYXRzAQxsYW5kQXNzZXRJZHMDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAoBB29uZUxhbmQCA2FjYwtsYW5kQXNzZXRJZAMJAAACBQtsYW5kQXNzZXRJZAIACQACAQIXbGFuZEFzc2V0SWQgaXMgcmVxdWlyZWQJAGQCBQNhY2MJALECAQkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCEmZpeFdhcmVob3VzZUZvcm1hdAkAzAgCBQtsYW5kQXNzZXRJZAUDbmlsBQNuaWwEAXIKAAIkbAUMbGFuZEFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdvbmVMYW5kAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZCQCUCgIFA25pbAUBcgFpAQ9maXhTdGFrZWRQaWVjZXMBBXVzZXJzAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRcGVybWlzc2lvbiBkZW5pZWQKAQdvbmVVc2VyAgNhY2MEYWRkcgMJAAACBQRhZGRyAgAJAAIBAhNhZGRyZXNzIGlzIHJlcXVpcmVkCQBkAgUDYWNjCQEFYXNJbnQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIPZml4U3Rha2VkUGllY2VzCQDMCAIFBGFkZHIFA25pbAUDbmlsBAFyCgACJGwFBXVzZXJzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdvbmVVc2VyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQCQCUCgIFA25pbAUBcgFpAQ1zZW5kVXNkdFByaXplAQt1c2VyQWRkcmVzcwMJAQIhPQIIBQFpBmNhbGxlcgUPc3Rha2luZ0NvbnRyYWN0CQACAQIRcGVybWlzc2lvbiBkZW5pZWQEA2FtdAkAawMJAPAHAgUEdGhpcwULdXNkdEFzc2V0SWQFDVVTRFRQUklaRVBBUlQFBU1VTFQ2CQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQULdXNlckFkZHJlc3MFA2FtdAULdXNkdEFzc2V0SWQFA25pbAUDYW10AWkBH2dldEVtZXJnZW5jeVNlcnZpY2VEYXRhUkVBRE9OTFkABAhleGlzdFN0cgkAnQgCBQ9lY29ub215Q29udHJhY3QJAQ5rZXlFc1dhcmVob3VzZQAEDGV4aXN0QW1vdW50cwMJAQlpc0RlZmluZWQBBQhleGlzdFN0cgkAtQkCCQEFdmFsdWUBBQhleGlzdFN0cgIBXwUDbmlsCgEKc2luZ2xlUHJvZAIDYWNjCXJlY2lwZVN0cgQBbggFA2FjYwJfMgQGcmVjaXBlCQC1CQIFCXJlY2lwZVN0cgIBXwQJbWF4QW1vdW50AwkAAAIFAW4AAAkAaAIFDUVTTUFYUEFDS0FHRVMFDlBST0RVQ1RQS0dTSVpFAAAEC2V4aXN0QW1vdW50AwkAZgIJAJADAQUMZXhpc3RBbW91bnRzBQFuCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUMZXhpc3RBbW91bnRzBQFuAAAECHRvdGFsTWF0CQESZ2V0UmVjaXBlTWF0ZXJpYWxzAQUGcmVjaXBlBAhidXlQcmljZQkAawMJAGgCBQh0b3RhbE1hdAUJRVNCVVlDT0VGBRBSRVNPVVJDRVBSSUNFTUlOCQBoAgUFTVVMVDgFDlBST0RVQ1RQS0dTSVpFBAlzZWxsUHJpY2UJAGsDCQBoAgUIdG90YWxNYXQFCkVTU0VMTENPRUYFEFJFU09VUkNFUFJJQ0VNSU4JAGgCBQVNVUxUOAUOUFJPRFVDVFBLR1NJWkUEAXkJALkJAgkAzAgCCQCkAwEFCW1heEFtb3VudAkAzAgCCQCkAwEFC2V4aXN0QW1vdW50CQDMCAIJAKQDAQUIYnV5UHJpY2UJAMwIAgkApAMBBQlzZWxsUHJpY2UFA25pbAIBXwkAlAoCCQDNCAIIBQNhY2MCXzEFAXkJAGQCBQFuAAEEAXMJALoJAggKAAIkbAUQcHJvZHVjdGlvbk1hdHJpeAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCnNpbmdsZVByb2QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDUwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgJfMQIBOgQGcmVzdWx0CQCsAgICHCVzJXNfX2VtZXJnZW5jeVNlcnZpY2VEYXRhX18FAXMJAJQKAgUDbmlsBQZyZXN1bHQBaQEQd2xnU3RhdHNSRUFET05MWQELdXNlckFkZHJPcHQECGN1clN0YXRzCQELZ2V0V2xnU3RhdHMEBQt1c2VyQWRkck9wdAkAzAgCBQxyZXN0Q29udHJhY3QJAMwIAgUPc3Rha2luZ0NvbnRyYWN0CQDMCAIFD2Vjb25vbXlDb250cmFjdAkAzAgCBQtnb3ZDb250cmFjdAkAzAgCBQt3bGdDb250cmFjdAkAzAgCBRJwdXp6bGVQb29sQ29udHJhY3QJAMwIAgUSaW52ZXN0RnVuZENvbnRyYWN0BQNuaWwFC3VzZHRBc3NldElkAAAJAJQKAgUDbmlsCQDMCAIJAKwCAgITJXMlcyVkX193bGdBbW91bnRfXwkApAMBCQCRAwIFCGN1clN0YXRzBQxpZHhXbGdBbW91bnQJAMwIAgkArAICAhIlcyVzJWRfX3dsZ1ByaWNlX18JAKQDAQkAkQMCBQhjdXJTdGF0cwULaWR4V2xnUHJpY2UJAMwIAgkArAICAhMlcyVzJWRfX3VzZHRGdW5kc19fCQCkAwEJAJEDAgUIY3VyU3RhdHMFC2lkeFdsZ0Z1bmRzCQDMCAIJAKwCAgIVJXMlcyVkX191c2R0RWNvbm9teV9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFDWlkeFdsZ0Vjb25vbXkJAMwIAgkArAICAhYlcyVzJWRfX3VzZHRBY3Rpdml0eV9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFDmlkeFdsZ0FjdGl2aXR5CQDMCAIJAKwCAgIXJXMlcyVkX191c2R0QXJiaXRyYWdlX18JAKQDAQkAkQMCBQhjdXJTdGF0cwUPaWR4V2xnQXJiaXRyYWdlCQDMCAIJAKwCAgISJXMlcyVkX191c2R0UG9vbF9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFCmlkeFdsZ1Bvb2wJAMwIAgkArAICAhYlcyVzJWRfX3dsZ0lzc3VlVGltZV9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFD2lkeFdsZ0lzc3VlVGltZQkAzAgCCQCsAgICJSVzJXMlZF9fd2xnTGFzdE1hcmtldGluZ1RlYW1BY3RUaW1lX18JAKQDAQkAkQMCBQhjdXJTdGF0cwURaWR4V2xnTGFzdE1UQVRpbWUJAMwIAgkArAICAhslcyVzJWRfX3dsZ01hcmtldGluZ1RvdGFsX18JAKQDAQkAkQMCBQhjdXJTdGF0cwUUaWR4V2xnTWFya2V0aW5nVG90YWwJAMwIAgkArAICAhwlcyVzJWRfX3dsZ01hcmtldGluZ0FtTGVmdF9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFFWlkeFdsZ01hcmtldGluZ0FtTGVmdAkAzAgCCQCsAgICICVzJXMlZF9fd2xnTWFya2V0aW5nQW1BdmFpbE5vd19fCQCkAwEJAJEDAgUIY3VyU3RhdHMFGWlkeFdsZ01hcmtldGluZ0FtQXZhaWxOb3cJAMwIAgkArAICAhwlcyVzJWRfX3dsZ01hcmtldGluZ1dsZ29sZF9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFFWlkeFdsZ01hcmtldGluZ1dsZ29sZAkAzAgCCQCsAgICFiVzJXMlZF9fd2xnVGVhbVRvdGFsX18JAKQDAQkAkQMCBQhjdXJTdGF0cwUPaWR4V2xnVGVhbVRvdGFsCQDMCAIJAKwCAgIXJXMlcyVkX193bGdUZWFtQW1MZWZ0X18JAKQDAQkAkQMCBQhjdXJTdGF0cwUQaWR4V2xnVGVhbUFtTGVmdAkAzAgCCQCsAgICGyVzJXMlZF9fd2xnVGVhbUFtQXZhaWxOb3dfXwkApAMBCQCRAwIFCGN1clN0YXRzBRRpZHhXbGdUZWFtQW1BdmFpbE5vdwkAzAgCCQCsAgICFyVzJXMlZF9fd2xnVGVhbVdsZ29sZF9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFEGlkeFdsZ1RlYW1XbGdvbGQJAMwIAgkArAICAhUlcyVzJWRfX3dsZ0FjdFRvdGFsX18JAKQDAQkAkQMCBQhjdXJTdGF0cwUOaWR4V2xnQWN0VG90YWwJAMwIAgkArAICAhYlcyVzJWRfX3dsZ0FjdEFtTGVmdF9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFD2lkeFdsZ0FjdEFtTGVmdAkAzAgCCQCsAgICGiVzJXMlZF9fd2xnQWN0QW1BdmFpbE5vd19fCQCkAwEJAJEDAgUIY3VyU3RhdHMFE2lkeFdsZ0FjdEFtQXZhaWxOb3cJAMwIAgkArAICAhYlcyVzJWRfX3dsZ0FjdFdsZ29sZF9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFD2lkeFdsZ0FjdFdsZ29sZAkAzAgCCQCsAgICFiVzJXMlZF9fd2xnQ3VyUGVyaW9kX18JAKQDAQkAkQMCBQhjdXJTdGF0cwUPaWR4V2xnQ3VyUGVyaW9kCQDMCAIJAKwCAgIYJXMlcyVkX193bGdBbUxlZnRUb3RhbF9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFEWlkeFdsZ0FtTGVmdFRvdGFsCQDMCAIJAKwCAgIiJXMlcyVkX193bGdDdXJQZXJpb2REaXN0cmlidXRpb25fXwkApAMBCQCRAwIFCGN1clN0YXRzBRtpZHhXbGdDdXJQZXJpb2REaXN0cmlidXRpb24JAMwIAgkArAICAhklcyVzJWRfX3dsZ0xhc3RVc2VyVGltZV9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFEmlkeFdsZ0xhc3RVc2VyVGltZQkAzAgCCQCsAgICGyVzJXMlZF9fd2xnVXNlckFtQXZhaWxOb3dfXwkApAMBCQCRAwIFCGN1clN0YXRzBRRpZHhXbGdVc2VyQW1BdmFpbE5vdwkAzAgCCQCsAgICHCVzJXMlZF9fd2xnR3Vlc3RTTGFuZERhaWx5X18JAKQDAQkAkQMCBQhjdXJTdGF0cwUWaWR4V2xnU0xhbmREYWlseUFtb3VudAkAzAgCCQCsAgICHCVzJXMlZF9fd2xnSW52ZXN0RnVuZFRvdGFsX18JAKQDAQkAkQMCBQhjdXJTdGF0cwUWaWR4V2xnSW52ZXN0RnVuZEFtb3VudAUDbmlsAWkBF3RvdXJuYW1lbnRTdGF0c1JFQURPTkxZAQx0b3VybmFtZW50SWQEBXREYXRhCQELZ2V0VG91ckRhdGECBRJ0b3VybmFtZW50Q29udHJhY3QFDHRvdXJuYW1lbnRJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMEC3JlZ2lzdHJhbmRzCQELdmFsdWVPckVsc2UCCQCdCAIFEnRvdXJuYW1lbnRDb250cmFjdAkBF2tleUFsbFJlZ2lzdHJhbmRzQnlUb3VyAQUMdG91cm5hbWVudElkAgAJAJQKAgUDbmlsCQDMCAIJAKwCAgIcJXMlc19fdG91cm5hbWVudFN0YXRpY0RhdGFfXwkAuQkCCQDMCAIJAJEDAgUGc3RhdGljBRN0U3RhdGljUmVnaXN0ZXJDb3N0CQDMCAIJAJEDAgUGc3RhdGljBRJ0U3RhdGljQXR0ZW1wdENvc3QJAMwIAgkAkQMCBQZzdGF0aWMFDHRTdGF0aWNTdGFydAkAzAgCCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbmlsAgFfCQDMCAIJAKwCAgIdJXMlc19fdG91cm5hbWVudER5bmFtaXNEYXRhX18JALkJAgkAzAgCCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzCQDMCAIJAJEDAgUHZHluYW1pYwUPdER5bmFtaWNXaW5EdWNrCQDMCAIJAJEDAgUHZHluYW1pYwURdER5bmFtaWNXaW5SZXN1bHQJAMwIAgkAkQMCBQdkeW5hbWljBRV0RHluYW1pY1RvdGFsUmVnQ291bnQJAMwIAgkAkQMCBQdkeW5hbWljBRV0RHluYW1pY1RvdGFsQXR0ZW1wdHMFA25pbAIBXwkAzAgCCQCsAgICHSVzJXNfX3RvdXJuYW1lbnRSZWdpc3RyYW5kc19fBQtyZWdpc3RyYW5kcwUDbmlsAEzq3gg=", "height": 2697582, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Czu39FVcNUsNKLSbSbztdCvWEdKpcQsqzJor8xsrDun3 Next: BDXXU9KXokniySytXYRUSwdWMtk1pBsR83yu619fKXEd Diff:
OldNewDifferences
238238
239239 let bJ = 10000000
240240
241-let bK = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_30_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_50_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_70_0,0,0,0,0,0,0_201"]
241+let bK = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_30_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_50_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_70_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_0_0,0,0,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_0_0,0,0,0,0,0,0_"]
242242
243243 let bL = 6
244244
307307 func cm (ck) = ("%s%d__allRegistrands__" + toString(ck))
308308
309309
310-let cn = 2
310+let cn = 0
311311
312-let co = 3
312+let co = 1
313313
314-let cp = 5
314+func cp (cq,ck) = {
315+ let cr = split(valueOrErrorMessage(getString(cq, cj(ck)), (("Error reading tournament " + toString(ck)) + " data")), "__")
316+ let cs = split(valueOrErrorMessage(getString(cq, cl(ck)), (("Error reading tournament " + toString(ck)) + " data")), "__")
317+[cr, cs]
318+ }
315319
316-let cq = 6
317320
318-let cr = 1
321+let ct = 2
319322
320-let cs = 2
321-
322-let ct = 3
323-
324-let cu = 4
323+let cu = 3
325324
326325 let cv = 5
327326
328-func cw (cx) = (parseIntValue(cx[bL]) * bJ)
327+let cw = 6
328+
329+let cx = 1
330+
331+let cy = 2
332+
333+let cz = 3
334+
335+let cA = 4
336+
337+let cB = 5
338+
339+func cC (cD) = (parseIntValue(cD[bL]) * bJ)
329340
330341
331-let cy = take(drop(this.bytes, 1), 1)
342+let cE = take(drop(this.bytes, 1), 1)
332343
333-let cz = {
334- let cA = cy
335- if ((base58'2W' == cA))
344+let cF = {
345+ let cG = cE
346+ if ((base58'2W' == cG))
336347 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
337- else if ((base58'2T' == cA))
348+ else if ((base58'2T' == cG))
338349 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
339350 else throw("Unknown chain")
340351 }
341352
342-let cB = {
343- let cA = cy
344- if ((base58'2W' == cA))
353+let cH = {
354+ let cG = cE
355+ if ((base58'2W' == cG))
345356 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
346- else if ((base58'2T' == cA))
357+ else if ((base58'2T' == cG))
347358 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
348359 else throw("Unknown chain")
349360 }
350361
351-let cC = {
352- let cA = cy
353- if ((base58'2W' == cA))
362+let cI = {
363+ let cG = cE
364+ if ((base58'2W' == cG))
354365 then 10000000000
355- else if ((base58'2T' == cA))
366+ else if ((base58'2T' == cG))
356367 then 100000000
357368 else throw("Unknown chain")
358369 }
359370
360-let cD = "__"
371+let cJ = "__"
361372
362-let cE = 1000000
373+let cK = 1000000
363374
364-let cF = 100000000
375+let cL = 100000000
365376
366-let cG = 25
377+let cM = 25
367378
368-let cH = 100
379+let cN = 100
369380
370-let cI = 225
381+let cO = 225
371382
372-let cJ = 400
383+let cP = 400
373384
374-let cK = 625
385+let cQ = 625
375386
376-func cL (cM,cN) = valueOrErrorMessage(getString(cM, cN), makeString(["mandatory ", toString(cM), ".", cN, " is not defined"], ""))
387+func cR (cS,cT) = valueOrErrorMessage(getString(cS, cT), makeString(["mandatory ", toString(cS), ".", cT, " is not defined"], ""))
377388
378389
379-let cO = 1
390+let cU = 1
380391
381-let cP = 2
392+let cV = 2
382393
383-let cQ = 3
394+let cW = 3
384395
385-let cR = 4
396+let cX = 4
386397
387-let cS = 5
398+let cY = 5
388399
389-let cT = 6
400+let cZ = 6
390401
391-let cU = 7
402+let da = 7
392403
393-func cV () = "%s__restConfig"
404+func db () = "%s__restConfig"
394405
395406
396-func cW () = "%s__restAddr"
407+func dc () = "%s__restAddr"
397408
398409
399-func cX (cY) = split_4C(cL(cY, cV()), cD)
410+func dd (de) = split_4C(cR(de, db()), cJ)
400411
401412
402-func cZ (da,db) = valueOrErrorMessage(addressFromString(da[db]), ("Rest cfg doesn't contain address at index " + toString(db)))
413+func df (dg,dh) = valueOrErrorMessage(addressFromString(dg[dh]), ("Rest cfg doesn't contain address at index " + toString(dh)))
403414
404415
405-let dc = addressFromStringValue(valueOrElse(getString(this, cW()), cB))
416+let di = addressFromStringValue(valueOrElse(getString(this, dc()), cH))
406417
407-let da = cX(dc)
418+let dg = dd(di)
408419
409-let aj = cZ(da, cO)
420+let aj = df(dg, cU)
410421
411-let dd = cZ(da, cP)
422+let dj = df(dg, cV)
412423
413-let de = cZ(da, cQ)
424+let dk = df(dg, cW)
414425
415-let df = cZ(da, cR)
426+let dl = df(dg, cX)
416427
417-let dg = cZ(da, cS)
428+let dm = df(dg, cY)
418429
419-let aH = cZ(da, cT)
430+let aH = df(dg, cZ)
420431
421-let dh = cZ(da, cU)
432+let dn = df(dg, da)
422433
423-let di = 0
434+let do = 0
424435
425-let dj = 1
436+let dp = 1
426437
427-let dk = 2
438+let dq = 2
428439
429-let dl = 3
440+let dr = 3
430441
431-let dm = "wlg_assetId"
442+let ds = "wlg_assetId"
432443
433-let dn = valueOrErrorMessage(getBinary(df, dm), "Not initialized yet")
444+let dt = valueOrErrorMessage(getBinary(dl, ds), "Not initialized yet")
434445
435-let do = 1
446+let du = 1
436447
437-func dp () = "resTypesProportions"
448+func dv () = "resTypesProportions"
438449
439450
440-func dq (ce) = ("stakedLandsByOwner_" + ce)
451+func dw (ce) = ("stakedLandsByOwner_" + ce)
441452
442453
443-func dr (ce) = ("stakedPiecesByOwner_" + ce)
454+func dx (ce) = ("stakedPiecesByOwner_" + ce)
444455
445456
446-func ds (dt) = {
447- let cA = dt
448- if ($isInstanceOf(cA, "String"))
457+func dy (dz) = {
458+ let cG = dz
459+ if ($isInstanceOf(cG, "String"))
449460 then {
450- let du = cA
451- du
461+ let dA = cG
462+ dA
452463 }
453464 else throw("fail to cast into String")
454465 }
455466
456467
457-func dv (dt) = {
458- let cA = dt
459- if ($isInstanceOf(cA, "Int"))
468+func dB (dz) = {
469+ let cG = dz
470+ if ($isInstanceOf(cG, "Int"))
460471 then {
461- let dw = cA
462- dw
472+ let dC = cG
473+ dC
463474 }
464475 else throw("fail to cast into Int")
465476 }
466477
467478
468-func dx (dt) = {
469- let cA = dt
470- if ($isInstanceOf(cA, "Boolean"))
479+func dD (dz) = {
480+ let cG = dz
481+ if ($isInstanceOf(cG, "Boolean"))
471482 then {
472- let du = cA
473- du
483+ let dA = cG
484+ dA
474485 }
475486 else throw("fail to cast into Boolean")
476487 }
477488
478489
479-func dy (dz) = {
480- let cA = dz
481- if (("S" == cA))
482- then cG
483- else if (("M" == cA))
484- then cH
485- else if (("L" == cA))
486- then cI
487- else if (("XL" == cA))
488- then cJ
489- else if (("XXL" == cA))
490- then cK
490+func dE (dF) = {
491+ let cG = dF
492+ if (("S" == cG))
493+ then cM
494+ else if (("M" == cG))
495+ then cN
496+ else if (("L" == cG))
497+ then cO
498+ else if (("XL" == cG))
499+ then cP
500+ else if (("XXL" == cG))
501+ then cQ
491502 else throw("Unknown land size")
492503 }
493504
494505
495-func dA (ai) = {
496- let ak = split(valueOrElse(getString(aj, dp()), "0_0_0_0_0_0"), "_")
506+func dG (ai) = {
507+ let ak = split(valueOrElse(getString(aj, dv()), "0_0_0_0_0_0"), "_")
497508 func al (am,an) = (am + parseIntValue(an))
498509
499510 let ao = {
510521
511522 av(as(as(as(as(as(as(ar, 0), 1), 2), 3), 4), 5), 6)
512523 }
513- let aw = valueOrElse(getInteger(aj, dr(ai)), 0)
524+ let aw = valueOrElse(getInteger(aj, dx(ai)), 0)
514525 [ao, aw]
515526 }
516527
517528
518-let dB = 500000
529+let dH = 500000
519530
520-func dC (dD) = {
521- let cA = dD
522- if ($isInstanceOf(cA, "List[Any]"))
531+func dI (dJ) = {
532+ let cG = dJ
533+ if ($isInstanceOf(cG, "List[Any]"))
523534 then {
524- let dE = cA
525- if ((size(dE) != bB))
526- then throw(("Array size is " + toString(size(dE))))
535+ let dK = cG
536+ if ((size(dK) != bB))
537+ then throw(("Array size is " + toString(size(dK))))
527538 else {
528- func dF (am,an) = {
529- let dG = an
530- if ($isInstanceOf(dG, "Int"))
539+ func dL (am,an) = {
540+ let dM = an
541+ if ($isInstanceOf(dM, "Int"))
531542 then {
532- let dH = dG
533- (am :+ toString(dH))
543+ let dN = dM
544+ (am :+ toString(dN))
534545 }
535546 else throw("List type is not Int")
536547 }
537548
538- let dI = {
539- let ap = dE
549+ let dO = {
550+ let ap = dK
540551 let aq = size(ap)
541552 let ar = nil
542553 func as (at,au) = if ((au >= aq))
543554 then at
544- else dF(at, ap[au])
555+ else dL(at, ap[au])
545556
546557 func av (at,au) = if ((au >= aq))
547558 then at
549560
550561 av(as(as(as(as(as(as(ar, 0), 1), 2), 3), 4), 5), 6)
551562 }
552- makeString(dI, "_")
563+ makeString(dO, "_")
553564 }
554565 }
555566 else throw("fail to cast into List")
556567 }
557568
558569
559-func dJ (dD) = {
560- let cA = dD
561- if ($isInstanceOf(cA, "(List[Any], List[Any])"))
570+func dP (dJ) = {
571+ let cG = dJ
572+ if ($isInstanceOf(cG, "(List[Any], List[Any])"))
562573 then {
563- let dK = cA
564- $Tuple2(dC(dK._1), dC(dK._2))
574+ let dQ = cG
575+ $Tuple2(dI(dQ._1), dI(dQ._2))
565576 }
566577 else throw("fail to cast into (List, List)")
567578 }
568579
569580
570-func dL (dM) = {
571- let t = addressFromString(dM)
572- let dN = if (isDefined(t))
581+func dR (dS) = {
582+ let t = addressFromString(dS)
583+ let dT = if (isDefined(t))
573584 then wavesBalance(value(t))
574585 else BalanceDetails(0, 0, 0, 0)
575- let dO = if (isDefined(t))
576- then assetBalance(value(t), cz)
586+ let dU = if (isDefined(t))
587+ then assetBalance(value(t), cF)
577588 else 0
578- let dP = if (isDefined(t))
579- then assetBalance(value(t), dn)
589+ let dV = if (isDefined(t))
590+ then assetBalance(value(t), dt)
580591 else 0
581- let dQ = valueOrElse(getString(aj, bY(dM)), dM)
582- let dR = bZ(dM)
583- let dS = getString(aj, dR)
584- let dT = valueOrElse(getString(aj, cb(dM)), "")
585- let dU = valueOrElse(getString(aj, bN(dM)), "")
586- let dV = dA(dM)[do]
587- let dW = valueOrElse(getInteger(aj, bu(dM)), 0)
588- let dX = valueOrElse(getInteger(aj, bv(dM)), 0)
589- let dY = valueOrElse(getInteger(aj, bw(dM)), 0)
590- let dZ = if (isDefined(dS))
592+ let dW = valueOrElse(getString(aj, bY(dS)), dS)
593+ let dX = bZ(dS)
594+ let dY = getString(aj, dX)
595+ let dZ = valueOrElse(getString(aj, cb(dS)), "")
596+ let ea = valueOrElse(getString(aj, bN(dS)), "")
597+ let eb = dG(dS)[du]
598+ let ec = valueOrElse(getInteger(aj, bu(dS)), 0)
599+ let ed = valueOrElse(getInteger(aj, bv(dS)), 0)
600+ let ee = valueOrElse(getInteger(aj, bw(dS)), 0)
601+ let ef = if (isDefined(dY))
591602 then (bA + (if (if (isDefined(t))
592- then isDefined(getString(aj, ca(dM)))
603+ then isDefined(getString(aj, ca(dS)))
593604 else false)
594605 then ":1"
595606 else ":0"))
596607 else ""
597-[("%s%s__customName__" + dQ), ("%s%s__referredBy__" + valueOrElse(dS, "")), ("%s%s__referrals__" + dT), ("%s%s__lastTxId__" + dU), ("%s%d__wavesBalance__" + toString(dN.available)), ("%s%d__wlgoldBalance__" + toString(dP)), ("%s%d__usdtBalance__" + toString(dO)), ("%s%d__stakedPieces__" + toString(dV)), ("%s%d__currentXp__" + toString(dW)), ("%s%d__currentLvl__" + toString(dX)), ("%s%d__pointsToDistribute__" + toString(dY)), ("%s%s__walletArtefacts__" + dZ)]
608+[("%s%s__customName__" + dW), ("%s%s__referredBy__" + valueOrElse(dY, "")), ("%s%s__referrals__" + dZ), ("%s%s__lastTxId__" + ea), ("%s%d__wavesBalance__" + toString(dT.available)), ("%s%d__wlgoldBalance__" + toString(dV)), ("%s%d__usdtBalance__" + toString(dU)), ("%s%d__stakedPieces__" + toString(eb)), ("%s%d__currentXp__" + toString(ec)), ("%s%d__currentLvl__" + toString(ed)), ("%s%d__pointsToDistribute__" + toString(ee)), ("%s%s__walletArtefacts__" + ef)]
598609 }
599610
600611
601-func ea (bW,dV) = {
602- let eb = valueOrElse(getInteger(aj, bS(bW)), 0)
603- let ec = valueOrElse(getInteger(aj, bT(bz, bW)), 0)
604- let ed = (eb / 6)
605- let ee = (eb / 7)
606- $Tuple3(eb, ec, ((bC + fraction(bC, ((eb + ed) + (2 * ee)), 5)) + fraction(bC, ec, (dV * 5))))
612+func eg (bW,eb) = {
613+ let eh = valueOrElse(getInteger(aj, bS(bW)), 0)
614+ let ei = valueOrElse(getInteger(aj, bT(bz, bW)), 0)
615+ let ej = (eh / 6)
616+ let ek = (eh / 7)
617+ $Tuple3(eh, ei, ((bC + fraction(bC, ((eh + ej) + (2 * ek)), 5)) + fraction(bC, ei, (eb * 5))))
607618 }
608619
609620
610-func ef (eg) = {
611- let eh = split(eg, "_")
612- ((bE * (parseIntValue(eh[1]) + 1)) * parseIntValue(eh[0]))
621+func el (em) = {
622+ let en = split(em, "_")
623+ ((bE * (parseIntValue(en[1]) + 1)) * parseIntValue(en[0]))
613624 }
614625
615626
616-func ei (ej,ek,eb) = {
617- let eg = ((toString(ek) + "_") + toString(eb))
618- let el = toString(ef(eg))
619- let em = valueOrElse(getString(aj, ej), ((((eg + ":0_0_0_0_0_0:0_0_0_0_0_0::0_0_") + el) + "_") + el))
620- split(em, ":")
627+func eo (ep,eq,eh) = {
628+ let em = ((toString(eq) + "_") + toString(eh))
629+ let er = toString(el(em))
630+ let es = valueOrElse(getString(aj, ep), ((((em + ":0_0_0_0_0_0:0_0_0_0_0_0::0_0_") + er) + "_") + er))
631+ split(es, ":")
621632 }
622633
623634
624-func en (bo) = {
625- let eo = bx(valueOrElse(getInteger(aj, br(bo)), 0))
626- $Tuple5(valueOrElse(getInteger(aj, bR(bo)), -1), value(assetInfo(fromBase58String(bo))).name, valueOrElse(getString(aj, cf(bo)), ""), valueOrElse(getInteger(aj, bn(bo)), eo), ds(invoke(aj, "getBackpackREADONLY", [bo], nil)))
635+func et (bo) = {
636+ let eu = bx(valueOrElse(getInteger(aj, br(bo)), 0))
637+ $Tuple5(valueOrElse(getInteger(aj, bR(bo)), -1), value(assetInfo(fromBase58String(bo))).name, valueOrElse(getString(aj, cf(bo)), ""), valueOrElse(getInteger(aj, bn(bo)), eu), dy(invoke(aj, "getBackpackREADONLY", [bo], nil)))
627638 }
628639
629640
630-func ep (bo,eq,er) = {
631- let dQ = valueOrElse(getString(aj, bX(bo)), er._2)
632- let es = valueOrElse(getString(aj, bp(bo)), "0_0_0_0_0")
633- let dW = valueOrElse(getInteger(aj, bq(bo)), 0)
634- let dX = valueOrElse(getInteger(aj, br(bo)), 0)
635- let dY = valueOrElse(getInteger(aj, bs(bo)), 0)
636- let et = valueOrElse(getString(aj, bt(bo)), ";_;_;_;_;_;")
637-[("%s%s__assetId__" + bo), ("%s%s__owner__" + eq), ("%s%s__customName__" + dQ), ("%s%d__stakedTime__" + toString(er._1)), ("%s%s__name__" + er._2), ("%s%s__location__" + er._3), ("%s%d__health__" + toString(er._4)), ("%s%d__maxHealth__" + toString(bx(dX))), ("%s%s__characteristics__" + es), ("%s%d__currentXp__" + toString(dW)), ("%s%d__currentLvl__" + toString(dX)), ("%s%d__pointsToDistribute__" + toString(dY)), ("%s%s__backPack__" + er._5), ("%s%s__equipment__" + et)]
641+func ev (bo,ew,ex) = {
642+ let dW = valueOrElse(getString(aj, bX(bo)), ex._2)
643+ let ey = valueOrElse(getString(aj, bp(bo)), "0_0_0_0_0")
644+ let ec = valueOrElse(getInteger(aj, bq(bo)), 0)
645+ let ed = valueOrElse(getInteger(aj, br(bo)), 0)
646+ let ee = valueOrElse(getInteger(aj, bs(bo)), 0)
647+ let ez = valueOrElse(getString(aj, bt(bo)), ";_;_;_;_;_;")
648+[("%s%s__assetId__" + bo), ("%s%s__owner__" + ew), ("%s%s__customName__" + dW), ("%s%d__stakedTime__" + toString(ex._1)), ("%s%s__name__" + ex._2), ("%s%s__location__" + ex._3), ("%s%d__health__" + toString(ex._4)), ("%s%d__maxHealth__" + toString(bx(ed))), ("%s%s__characteristics__" + ey), ("%s%d__currentXp__" + toString(ec)), ("%s%d__currentLvl__" + toString(ed)), ("%s%d__pointsToDistribute__" + toString(ee)), ("%s%s__backPack__" + ex._5), ("%s%s__equipment__" + ez)]
638649 }
639650
640651
641-func eu (bW,eq,ev) = if ((bW == ""))
652+func eA (bW,ew,eB) = if ((bW == ""))
642653 then throw("landAssetId is required")
643654 else {
644- let ew = value(assetInfo(fromBase58String(bW)))
645- let ex = split(ew.description, "_")
646- let ey = if ((ew.quantity > 0))
647- then ex[di]
648- else ("-" + ex[di])
649- let dV = dy(ex[dj])
650- let ez = ea(bW, dV)
651- let eA = (lastBlock.timestamp - ev)
652- let eB = if ((ev > 0))
653- then fraction(eA, (ez._3 * dV), bD)
655+ let eC = value(assetInfo(fromBase58String(bW)))
656+ let eD = split(eC.description, "_")
657+ let eE = if ((eC.quantity > 0))
658+ then eD[do]
659+ else ("-" + eD[do])
660+ let eb = dE(eD[dp])
661+ let eF = eg(bW, eb)
662+ let eG = (lastBlock.timestamp - eB)
663+ let eH = if ((eB > 0))
664+ then fraction(eG, (eF._3 * eb), bD)
654665 else 0
655- let eC = fraction(cC, (dV * (ez._1 + 1)), cG)
656- let eD = if ((ev > 0))
657- then dJ(invoke(aj, "splitByGlobalAndLocalWeightsREADONLY", [eC, eB, ex[dk]], nil))
658- else $Tuple2(dC(invoke(aj, "splitByGlobalWeightsREADONLY", [eC], nil)), "")
659- let dQ = valueOrElse(getString(aj, bQ(bW)), ((ex[dl] + "-") + ex[di]))
660-[("%s%s__assetId__" + bW), ("%s%s__owner__" + eq), ("%s%s__customName__" + dQ), ("%s%d__stakedTime__" + toString(ev)), ("%s%s__description__" + makeString([ey, ex[dj], ex[dk], ex[dl]], "_")), ("%s%d__infraLevel__" + toString(ez._1)), ("%s%s__availResByType__" + eD._2), ("%s%d__availResTotal__" + toString(eB)), ("%s%s__needMaterial__" + eD._1), ("%s%s__landArtefacts__PRESALE:" + toString(ez._2)), ("%s%s__warehouse__" + makeString(ei(bV(bW), (dV / cG), ez._1), ":")), ("%s%s__landOrder__" + valueOrElse(getString(dd, ch(bW)), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"))]
666+ let eI = fraction(cI, (eb * (eF._1 + 1)), cM)
667+ let eJ = if ((eB > 0))
668+ then dP(invoke(aj, "splitByGlobalAndLocalWeightsREADONLY", [eI, eH, eD[dq]], nil))
669+ else $Tuple2(dI(invoke(aj, "splitByGlobalWeightsREADONLY", [eI], nil)), "")
670+ let dW = valueOrElse(getString(aj, bQ(bW)), ((eD[dr] + "-") + eD[do]))
671+[("%s%s__assetId__" + bW), ("%s%s__owner__" + ew), ("%s%s__customName__" + dW), ("%s%d__stakedTime__" + toString(eB)), ("%s%s__description__" + makeString([eE, eD[dp], eD[dq], eD[dr]], "_")), ("%s%d__infraLevel__" + toString(eF._1)), ("%s%s__availResByType__" + eJ._2), ("%s%d__availResTotal__" + toString(eH)), ("%s%s__needMaterial__" + eJ._1), ("%s%s__landArtefacts__PRESALE:" + toString(eF._2)), ("%s%s__warehouse__" + makeString(eo(bV(bW), (eb / cM), eF._1), ":")), ("%s%s__landOrder__" + valueOrElse(getString(dj, ch(bW)), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"))]
661672 }
662673
663674
664-func eE (bW,eq) = if ((bW == ""))
675+func eK (bW,ew) = if ((bW == ""))
665676 then throw("landAssetId is required")
666677 else {
667- let ew = value(assetInfo(fromBase58String(bW)))
668- let ex = split(ew.description, "_")
669- let dV = dy(ex[dj])
670- let ez = ea(bW, dV)
671-[("%s%s__assetId__" + bW), ("%s%s__owner__" + eq), ("%s%s__warehouse__" + makeString(ei(bV(bW), (dV / cG), ez._1), ":")), ("%s%s__landOrder__" + valueOrElse(getString(dd, ch(bW)), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"))]
678+ let eC = value(assetInfo(fromBase58String(bW)))
679+ let eD = split(eC.description, "_")
680+ let eb = dE(eD[dp])
681+ let eF = eg(bW, eb)
682+[("%s%s__assetId__" + bW), ("%s%s__owner__" + ew), ("%s%s__warehouse__" + makeString(eo(bV(bW), (eb / cM), eF._1), ":")), ("%s%s__landOrder__" + valueOrElse(getString(dj, ch(bW)), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"))]
672683 }
673684
674685
675-@Callable(eF)
676-func constructorV1 (az) = if ((eF.caller != this))
686+@Callable(eL)
687+func constructorV1 (az) = if ((eL.caller != this))
677688 then throw("permissions denied")
678689 else {
679- func eG (am,eH) = (am + "%s")
690+ func eM (am,eN) = (am + "%s")
680691
681- let eI = {
692+ let eO = {
682693 let ap = az
683694 let aq = size(ap)
684695 let ar = ""
685696 func as (at,au) = if ((au >= aq))
686697 then at
687- else eG(at, ap[au])
698+ else eM(at, ap[au])
688699
689700 func av (at,au) = if ((au >= aq))
690701 then at
692703
693704 av(as(as(as(as(as(as(as(as(as(as(ar, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
694705 }
695-[StringEntry(cV(), makeString(eI :: az, cD)), StringEntry(cW(), toString(this))]
706+[StringEntry(db(), makeString(eO :: az, cJ)), StringEntry(dc(), toString(this))]
696707 }
697708
698709
699710
700-@Callable(eF)
701-func walletInfoREADONLY (dM) = $Tuple2(nil, dL(dM))
711+@Callable(eL)
712+func walletInfoREADONLY (dS) = $Tuple2(nil, dR(dS))
702713
703714
704715
705-@Callable(eF)
706-func duckByOwnerInfoREADONLY (eJ) = {
707- let eK = getString(aj, cd(eJ))
708- $Tuple2(nil, if (if (isDefined(addressFromString(eJ)))
709- then isDefined(eK)
716+@Callable(eL)
717+func duckByOwnerInfoREADONLY (eP) = {
718+ let eQ = getString(aj, cd(eP))
719+ $Tuple2(nil, if (if (isDefined(addressFromString(eP)))
720+ then isDefined(eQ)
710721 else false)
711722 then {
712- let bo = value(eK)
713- ep(bo, eJ, en(bo))
723+ let bo = value(eQ)
724+ ev(bo, eP, et(bo))
714725 }
715- else ep("", eJ, $Tuple5(-1, "", "", -1, "")))
726+ else ev("", eP, $Tuple5(-1, "", "", -1, "")))
716727 }
717728
718729
719730
720-@Callable(eF)
731+@Callable(eL)
721732 func duckByAssetIdInfoREADONLY (bo) = {
722- let eq = getString(aj, cc(bo))
723- $Tuple2(nil, ep(bo, if (isDefined(eq))
724- then value(eq)
725- else "", en(bo)))
733+ let ew = getString(aj, cc(bo))
734+ $Tuple2(nil, ev(bo, if (isDefined(ew))
735+ then value(ew)
736+ else "", et(bo)))
726737 }
727738
728739
729740
730-@Callable(eF)
741+@Callable(eL)
731742 func landByAssetIdInfoREADONLY (bW) = if ((bW == ""))
732743 then throw("landAssetId is required")
733744 else {
734- let ev = valueOrElse(getInteger(aj, bR(bW)), -1)
735- let eq = if ((ev > 0))
745+ let eB = valueOrElse(getInteger(aj, bR(bW)), -1)
746+ let ew = if ((eB > 0))
736747 then value(getString(aj, bO(bW)))
737748 else ""
738- $Tuple2(nil, eu(bW, eq, ev))
749+ $Tuple2(nil, eA(bW, ew, eB))
739750 }
740751
741752
742753
743-@Callable(eF)
744-func stakedLandsByOwnerInfoREADONLY (eL) = if ((eL == ""))
754+@Callable(eL)
755+func stakedLandsByOwnerInfoREADONLY (eR) = if ((eR == ""))
745756 then throw("landOwnerAddress is required")
746757 else {
747- let eM = getString(aj, dq(eL))
748- let eN = if (isDefined(eM))
749- then split_51C(value(eM), "_")
758+ let eS = getString(aj, dw(eR))
759+ let eT = if (isDefined(eS))
760+ then split_51C(value(eS), "_")
750761 else nil
751- func eO (am,bW) = if ((bW == ""))
762+ func eU (am,bW) = if ((bW == ""))
752763 then throw("landAssetId is required")
753764 else {
754- let ev = valueOrElse(getInteger(aj, bR(bW)), -1)
755- (am :+ eu(bW, eL, ev))
765+ let eB = valueOrElse(getInteger(aj, bR(bW)), -1)
766+ (am :+ eA(bW, eR, eB))
756767 }
757768
758- let dI = {
759- let ap = eN
769+ let dO = {
770+ let ap = eT
760771 let aq = size(ap)
761772 let ar = nil
762773 func as (at,au) = if ((au >= aq))
763774 then at
764- else eO(at, ap[au])
775+ else eU(at, ap[au])
765776
766777 func av (at,au) = if ((au >= aq))
767778 then at
769780
770781 av(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(ar, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
771782 }
772- $Tuple2(nil, dI)
783+ $Tuple2(nil, dO)
773784 }
774785
775786
776787
777-@Callable(eF)
778-func landsByIdsInfoREADONLY (eP) = {
779- func eO (am,bW) = if ((bW == ""))
788+@Callable(eL)
789+func landsByIdsInfoREADONLY (eV) = {
790+ func eU (am,bW) = if ((bW == ""))
780791 then throw("landAssetId is required")
781792 else {
782- let ev = valueOrElse(getInteger(aj, bR(bW)), -1)
783- let eq = if ((ev > 0))
793+ let eB = valueOrElse(getInteger(aj, bR(bW)), -1)
794+ let ew = if ((eB > 0))
784795 then value(getString(aj, bO(bW)))
785796 else ""
786- (am :+ eu(bW, eq, ev))
797+ (am :+ eA(bW, ew, eB))
787798 }
788799
789- let dI = {
790- let ap = eP
800+ let dO = {
801+ let ap = eV
791802 let aq = size(ap)
792803 let ar = nil
793804 func as (at,au) = if ((au >= aq))
794805 then at
795- else eO(at, ap[au])
806+ else eU(at, ap[au])
796807
797808 func av (at,au) = if ((au >= aq))
798809 then at
800811
801812 av(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(ar, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
802813 }
803- $Tuple2(nil, dI)
814+ $Tuple2(nil, dO)
804815 }
805816
806817
807818
808-@Callable(eF)
819+@Callable(eL)
809820 func warehouseOrderByAssetIdInfoREADONLY (bW) = if ((bW == ""))
810821 then throw("landAssetId is required")
811822 else {
812- let ev = valueOrElse(getInteger(aj, bR(bW)), -1)
813- let eq = if ((ev > 0))
823+ let eB = valueOrElse(getInteger(aj, bR(bW)), -1)
824+ let ew = if ((eB > 0))
814825 then value(getString(aj, bO(bW)))
815826 else ""
816- $Tuple2(nil, eE(bW, eq))
827+ $Tuple2(nil, eK(bW, ew))
817828 }
818829
819830
820831
821-@Callable(eF)
822-func ordersByLandIdsInfoREADONLY (eP) = {
823- func eO (am,bW) = if ((bW == ""))
832+@Callable(eL)
833+func ordersByLandIdsInfoREADONLY (eV) = {
834+ func eU (am,bW) = if ((bW == ""))
824835 then throw("landAssetId is required")
825836 else {
826- let ev = valueOrElse(getInteger(aj, bR(bW)), -1)
827- let eq = if ((ev > 0))
837+ let eB = valueOrElse(getInteger(aj, bR(bW)), -1)
838+ let ew = if ((eB > 0))
828839 then value(getString(aj, bO(bW)))
829840 else ""
830- (am :+ eE(bW, eq))
841+ (am :+ eK(bW, ew))
831842 }
832843
833- let dI = {
834- let ap = eP
844+ let dO = {
845+ let ap = eV
835846 let aq = size(ap)
836847 let ar = nil
837848 func as (at,au) = if ((au >= aq))
838849 then at
839- else eO(at, ap[au])
850+ else eU(at, ap[au])
840851
841852 func av (at,au) = if ((au >= aq))
842853 then at
844855
845856 av(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(ar, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40)
846857 }
847- $Tuple2(nil, dI)
858+ $Tuple2(nil, dO)
848859 }
849860
850861
851862
852-@Callable(eF)
853-func cancelWarehouseOrders (eP) = if ((eF.caller != this))
863+@Callable(eL)
864+func cancelWarehouseOrders (eV) = if ((eL.caller != this))
854865 then throw("permission denied")
855866 else {
856- let eQ = getBoolean(aj, cg())
857- if (if (!(isDefined(eQ)))
867+ let eW = getBoolean(aj, cg())
868+ if (if (!(isDefined(eW)))
858869 then true
859- else (value(eQ) == false))
870+ else (value(eW) == false))
860871 then throw("Contracts should be blocked before canceling orders")
861872 else {
862- func eO (ew,bW) = if ((bW == ""))
873+ func eU (eC,bW) = if ((bW == ""))
863874 then throw("landAssetId is required")
864875 else {
865- let eR = dx(invoke(dd, "setWarehouseOrder", ["0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:", bW], nil))
866- if (if (ew)
876+ let eX = dD(invoke(dj, "setWarehouseOrder", ["0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:", bW], nil))
877+ if (if (eC)
867878 then true
868- else eR)
869- then !(if (ew)
870- then eR
879+ else eX)
880+ then !(if (eC)
881+ then eX
871882 else false)
872883 else false
873884 }
874885
875- let dI = {
876- let ap = eP
886+ let dO = {
887+ let ap = eV
877888 let aq = size(ap)
878889 let ar = false
879890 func as (at,au) = if ((au >= aq))
880891 then at
881- else eO(at, ap[au])
892+ else eU(at, ap[au])
882893
883894 func av (at,au) = if ((au >= aq))
884895 then at
886897
887898 av(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(ar, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
888899 }
889- $Tuple2(nil, dI)
900+ $Tuple2(nil, dO)
890901 }
891902 }
892903
893904
894905
895-@Callable(eF)
896-func fixWarehouseFormats (eP) = if ((eF.caller != this))
906+@Callable(eL)
907+func fixWarehouseFormats (eV) = if ((eL.caller != this))
897908 then throw("permission denied")
898909 else {
899- func eO (am,bW) = if ((bW == ""))
910+ func eU (am,bW) = if ((bW == ""))
900911 then throw("landAssetId is required")
901- else (am + size(ds(invoke(aj, "fixWarehouseFormat", [bW], nil))))
912+ else (am + size(dy(invoke(aj, "fixWarehouseFormat", [bW], nil))))
902913
903- let dI = {
904- let ap = eP
914+ let dO = {
915+ let ap = eV
905916 let aq = size(ap)
906917 let ar = 0
907918 func as (at,au) = if ((au >= aq))
908919 then at
909- else eO(at, ap[au])
920+ else eU(at, ap[au])
910921
911922 func av (at,au) = if ((au >= aq))
912923 then at
914925
915926 av(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(ar, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25)
916927 }
917- $Tuple2(nil, dI)
928+ $Tuple2(nil, dO)
918929 }
919930
920931
921932
922-@Callable(eF)
923-func fixStakedPieces (eS) = if ((eF.caller != this))
933+@Callable(eL)
934+func fixStakedPieces (eY) = if ((eL.caller != this))
924935 then throw("permission denied")
925936 else {
926- func eT (am,t) = if ((t == ""))
937+ func eZ (am,t) = if ((t == ""))
927938 then throw("address is required")
928- else (am + dv(invoke(aj, "fixStakedPieces", [t], nil)))
939+ else (am + dB(invoke(aj, "fixStakedPieces", [t], nil)))
929940
930- let dI = {
931- let ap = eS
941+ let dO = {
942+ let ap = eY
932943 let aq = size(ap)
933944 let ar = 0
934945 func as (at,au) = if ((au >= aq))
935946 then at
936- else eT(at, ap[au])
947+ else eZ(at, ap[au])
937948
938949 func av (at,au) = if ((au >= aq))
939950 then at
941952
942953 av(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(ar, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16)
943954 }
944- $Tuple2(nil, dI)
955+ $Tuple2(nil, dO)
945956 }
946957
947958
948959
949-@Callable(eF)
950-func sendUsdtPrize (eJ) = if ((eF.caller != aj))
960+@Callable(eL)
961+func sendUsdtPrize (eP) = if ((eL.caller != aj))
951962 then throw("permission denied")
952963 else {
953- let eU = fraction(assetBalance(this, cz), dB, cE)
954- $Tuple2([ScriptTransfer(addressFromStringValue(eJ), eU, cz)], eU)
964+ let fa = fraction(assetBalance(this, cF), dH, cK)
965+ $Tuple2([ScriptTransfer(addressFromStringValue(eP), fa, cF)], fa)
955966 }
956967
957968
958969
959-@Callable(eF)
970+@Callable(eL)
960971 func getEmergencyServiceDataREADONLY () = {
961- let eV = getString(dd, ci())
962- let eW = if (isDefined(eV))
963- then split(value(eV), "_")
972+ let fb = getString(dj, ci())
973+ let fc = if (isDefined(fb))
974+ then split(value(fb), "_")
964975 else nil
965- func eX (am,eY) = {
966- let dw = am._2
967- let cx = split(eY, "_")
968- let eZ = if ((dw == 0))
976+ func fd (am,fe) = {
977+ let dC = am._2
978+ let cD = split(fe, "_")
979+ let ff = if ((dC == 0))
969980 then (bG * bM)
970981 else 0
971- let fa = if ((size(eW) > dw))
972- then parseIntValue(eW[dw])
982+ let fg = if ((size(fc) > dC))
983+ then parseIntValue(fc[dC])
973984 else 0
974- let fb = cw(cx)
975- let fc = fraction((fb * bH), bF, (cF * bM))
976- let fd = fraction((fb * bI), bF, (cF * bM))
977- let fe = makeString([toString(eZ), toString(fa), toString(fc), toString(fd)], "_")
978- $Tuple2((am._1 :+ fe), (dw + 1))
985+ let fh = cC(cD)
986+ let fi = fraction((fh * bH), bF, (cL * bM))
987+ let fj = fraction((fh * bI), bF, (cL * bM))
988+ let fk = makeString([toString(ff), toString(fg), toString(fi), toString(fj)], "_")
989+ $Tuple2((am._1 :+ fk), (dC + 1))
979990 }
980991
981- let du = makeString_2C(( let ap = bK
992+ let dA = makeString_2C(( let ap = bK
982993 let aq = size(ap)
983994 let ar = $Tuple2(nil, 0)
984995 func as (at,au) = if ((au >= aq))
985996 then at
986- else eX(at, ap[au])
997+ else fd(at, ap[au])
987998
988999 func av (at,au) = if ((au >= aq))
9891000 then at
9901001 else throw("List size exceeds 50")
9911002
9921003 av(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(ar, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50))._1, ":")
993- let ff = ("%s%s__emergencyServiceData__" + du)
994- $Tuple2(nil, ff)
1004+ let fl = ("%s%s__emergencyServiceData__" + dA)
1005+ $Tuple2(nil, fl)
9951006 }
9961007
9971008
9981009
999-@Callable(eF)
1010+@Callable(eL)
10001011 func wlgStatsREADONLY (ay) = {
1001- let fg = ax(ay, [dc, aj, dd, de, df, dg, aH], cz, 0)
1002- $Tuple2(nil, [("%s%s%d__wlgAmount__" + toString(fg[z])), ("%s%s%d__wlgPrice__" + toString(fg[A])), ("%s%s%d__usdtFunds__" + toString(fg[B])), ("%s%s%d__usdtEconomy__" + toString(fg[C])), ("%s%s%d__usdtActivity__" + toString(fg[D])), ("%s%s%d__usdtArbitrage__" + toString(fg[E])), ("%s%s%d__usdtPool__" + toString(fg[F])), ("%s%s%d__wlgIssueTime__" + toString(fg[G])), ("%s%s%d__wlgLastMarketingTeamActTime__" + toString(fg[H])), ("%s%s%d__wlgMarketingTotal__" + toString(fg[I])), ("%s%s%d__wlgMarketingAmLeft__" + toString(fg[J])), ("%s%s%d__wlgMarketingAmAvailNow__" + toString(fg[K])), ("%s%s%d__wlgMarketingWlgold__" + toString(fg[L])), ("%s%s%d__wlgTeamTotal__" + toString(fg[M])), ("%s%s%d__wlgTeamAmLeft__" + toString(fg[N])), ("%s%s%d__wlgTeamAmAvailNow__" + toString(fg[O])), ("%s%s%d__wlgTeamWlgold__" + toString(fg[P])), ("%s%s%d__wlgActTotal__" + toString(fg[Q])), ("%s%s%d__wlgActAmLeft__" + toString(fg[R])), ("%s%s%d__wlgActAmAvailNow__" + toString(fg[S])), ("%s%s%d__wlgActWlgold__" + toString(fg[T])), ("%s%s%d__wlgCurPeriod__" + toString(fg[U])), ("%s%s%d__wlgAmLeftTotal__" + toString(fg[V])), ("%s%s%d__wlgCurPeriodDistribution__" + toString(fg[W])), ("%s%s%d__wlgLastUserTime__" + toString(fg[X])), ("%s%s%d__wlgUserAmAvailNow__" + toString(fg[Y])), ("%s%s%d__wlgGuestSLandDaily__" + toString(fg[Z])), ("%s%s%d__wlgInvestFundTotal__" + toString(fg[aa]))])
1012+ let fm = ax(ay, [di, aj, dj, dk, dl, dm, aH], cF, 0)
1013+ $Tuple2(nil, [("%s%s%d__wlgAmount__" + toString(fm[z])), ("%s%s%d__wlgPrice__" + toString(fm[A])), ("%s%s%d__usdtFunds__" + toString(fm[B])), ("%s%s%d__usdtEconomy__" + toString(fm[C])), ("%s%s%d__usdtActivity__" + toString(fm[D])), ("%s%s%d__usdtArbitrage__" + toString(fm[E])), ("%s%s%d__usdtPool__" + toString(fm[F])), ("%s%s%d__wlgIssueTime__" + toString(fm[G])), ("%s%s%d__wlgLastMarketingTeamActTime__" + toString(fm[H])), ("%s%s%d__wlgMarketingTotal__" + toString(fm[I])), ("%s%s%d__wlgMarketingAmLeft__" + toString(fm[J])), ("%s%s%d__wlgMarketingAmAvailNow__" + toString(fm[K])), ("%s%s%d__wlgMarketingWlgold__" + toString(fm[L])), ("%s%s%d__wlgTeamTotal__" + toString(fm[M])), ("%s%s%d__wlgTeamAmLeft__" + toString(fm[N])), ("%s%s%d__wlgTeamAmAvailNow__" + toString(fm[O])), ("%s%s%d__wlgTeamWlgold__" + toString(fm[P])), ("%s%s%d__wlgActTotal__" + toString(fm[Q])), ("%s%s%d__wlgActAmLeft__" + toString(fm[R])), ("%s%s%d__wlgActAmAvailNow__" + toString(fm[S])), ("%s%s%d__wlgActWlgold__" + toString(fm[T])), ("%s%s%d__wlgCurPeriod__" + toString(fm[U])), ("%s%s%d__wlgAmLeftTotal__" + toString(fm[V])), ("%s%s%d__wlgCurPeriodDistribution__" + toString(fm[W])), ("%s%s%d__wlgLastUserTime__" + toString(fm[X])), ("%s%s%d__wlgUserAmAvailNow__" + toString(fm[Y])), ("%s%s%d__wlgGuestSLandDaily__" + toString(fm[Z])), ("%s%s%d__wlgInvestFundTotal__" + toString(fm[aa]))])
10031014 }
10041015
10051016
10061017
1007-@Callable(eF)
1008-func tournamentStatsREADONLY (fh) = {
1009- let fi = split(valueOrErrorMessage(getString(dh, cj(fh)), (("Error reading tournament " + toString(fh)) + " data")), cD)
1010- let fj = split(valueOrErrorMessage(getString(dh, cl(fh)), (("Error reading tournament " + toString(fh)) + " data")), cD)
1011- let fk = valueOrElse(getString(dh, cm(fh)), "")
1012- $Tuple2(nil, [("%s%s__tournamentStaticData__" + makeString([fi[cn], fi[co], fi[cp], fi[cq]], "_")), ("%s%s__tournamentDynamisData__" + makeString([fj[cr], fj[cs], fj[ct], fj[cu], fj[cv]], "_")), ("%s%s__tournamentRegistrands__" + fk)])
1018+@Callable(eL)
1019+func tournamentStatsREADONLY (fn) = {
1020+ let fo = cp(dn, fn)
1021+ let cr = fo[cn]
1022+ let cs = fo[co]
1023+ let fp = valueOrElse(getString(dn, cm(fn)), "")
1024+ $Tuple2(nil, [("%s%s__tournamentStaticData__" + makeString([cr[ct], cr[cu], cr[cv], cr[cw]], "_")), ("%s%s__tournamentDynamisData__" + makeString([cs[cx], cs[cy], cs[cz], cs[cA], cs[cB]], "_")), ("%s%s__tournamentRegistrands__" + fp)])
10131025 }
10141026
10151027
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 1000000
55
66 let b = 100000000
77
88 let c = 100000000000000
99
1010 let d = 100000
1111
1212 let e = 200000
1313
1414 let f = 100000
1515
1616 let g = 400000
1717
1818 let h = 31557600000
1919
2020 let i = 86400000
2121
2222 let j = "marketingAddr"
2323
2424 let k = "teamAddr"
2525
2626 let l = "lastClaimedTime_marketing"
2727
2828 let m = "marketingAmountLeft"
2929
3030 let n = "lastClaimedTime_team"
3131
3232 let o = "teamAmountLeft"
3333
3434 let p = "lastClaimedTime_activities"
3535
3636 let q = "activitiesAmountLeft"
3737
3838 let r = "stakersAmountLeft"
3939
4040 func s (t) = ("lastClaimedTimeUser_" + t)
4141
4242
4343 func u (v) = fraction(c, (g * (v + 1)), (6 * a))
4444
4545
4646 let w = "wlg_issueTime"
4747
4848 let x = "wlg_issuedAmount"
4949
5050 let y = "zbill_issuedAmount"
5151
5252 let z = 0
5353
5454 let A = 1
5555
5656 let B = 2
5757
5858 let C = 3
5959
6060 let D = 4
6161
6262 let E = 5
6363
6464 let F = 6
6565
6666 let G = 7
6767
6868 let H = 8
6969
7070 let I = 9
7171
7272 let J = 10
7373
7474 let K = 11
7575
7676 let L = 12
7777
7878 let M = 13
7979
8080 let N = 14
8181
8282 let O = 15
8383
8484 let P = 16
8585
8686 let Q = 17
8787
8888 let R = 18
8989
9090 let S = 19
9191
9292 let T = 20
9393
9494 let U = 21
9595
9696 let V = 22
9797
9898 let W = 23
9999
100100 let X = 24
101101
102102 let Y = 25
103103
104104 let Z = 26
105105
106106 let aa = 27
107107
108108 let ab = 0
109109
110110 let ac = 1
111111
112112 let ad = 2
113113
114114 let ae = 4
115115
116116 let af = 5
117117
118118 let ag = 6
119119
120120 func ah (ai,aj) = {
121121 let ak = split(valueOrElse(getString(aj, "resTypesProportions"), "0_0_0_0_0_0"), "_")
122122 func al (am,an) = (am + parseIntValue(an))
123123
124124 let ao = {
125125 let ap = ak
126126 let aq = size(ap)
127127 let ar = 0
128128 func as (at,au) = if ((au >= aq))
129129 then at
130130 else al(at, ap[au])
131131
132132 func av (at,au) = if ((au >= aq))
133133 then at
134134 else throw("List size exceeds 6")
135135
136136 av(as(as(as(as(as(as(ar, 0), 1), 2), 3), 4), 5), 6)
137137 }
138138 let aw = valueOrElse(getInteger(aj, ("stakedPiecesByOwner_" + ai)), 0)
139139 [ao, aw]
140140 }
141141
142142
143143 func ax (ay,az,aA,aB) = {
144144 let aC = valueOrErrorMessage(getInteger(az[ae], x), "WLGOLD is not issued yet")
145145 let aD = assetBalance(az[ad], aA)
146146 let aE = assetBalance(az[ab], aA)
147147 let aF = (assetBalance(az[ae], aA) - aB)
148148 let aG = assetBalance(az[af], aA)
149149 let aH = az[ag]
150150 let aI = (assetBalance(aH, aA) + valueOrElse(getInteger(aH, y), 0))
151151 let aJ = ((aD + aF) + aI)
152152 let aK = valueOrErrorMessage(getBinary(az[ae], "wlg_assetId"), "Not initialized yet")
153153 let aL = lastBlock.timestamp
154154 let aM = valueOrErrorMessage(getInteger(az[ae], w), "Not initialized")
155155 let aN = fraction(c, d, a)
156156 let aO = valueOrElse(getInteger(az[ae], m), aN)
157157 let aP = valueOrElse(getInteger(az[ae], l), aM)
158158 let aQ = addressFromStringValue(value(getString(az[ae], j)))
159159 let aR = min([fraction(aN, (aL - aP), h), aO])
160160 let aS = assetBalance(aQ, aK)
161161 let aT = fraction(c, e, a)
162162 let aU = valueOrElse(getInteger(az[ae], o), aT)
163163 let aV = valueOrElse(getInteger(az[ae], n), aM)
164164 let aW = addressFromStringValue(value(getString(az[ae], k)))
165165 let aX = min([fraction(aT, (aL - aV), (3 * h)), aU])
166166 let aY = assetBalance(aW, aK)
167167 let aZ = fraction(c, f, a)
168168 let ba = valueOrElse(getInteger(az[ae], q), aZ)
169169 let bb = valueOrElse(getInteger(az[ae], p), aM)
170170 let bc = min([fraction(aZ, (aL - bb), (3 * h)), ba])
171171 let bd = assetBalance(az[ab], aK)
172172 let be = valueOrElse(getInteger(az[ae], s(ay)), aM)
173173 let bf = ((be - aM) / h)
174174 let bg = min([aL, (aM + (3 * h))])
175175 let bh = min([((aL - aM) / h), 2])
176176 let bi = ah(ay, az[ac])
177177 let bj = u(bh)
178178 let bk = fraction(if ((bf == bh))
179179 then fraction(bj, (bg - be), h)
180180 else if ((bf == (bh - 1)))
181181 then (fraction(u((bh - 1)), ((aM + (h * bh)) - be), h) + fraction(bj, (bg - (aM + (h * bh))), h))
182182 else ((fraction(u((bh - 2)), ((aM + (h * (bh - 1))) - be), h) + u((bh - 1))) + fraction(bj, (bg - (aM + (h * bh))), h)), bi[1], bi[0])
183183 let bl = fraction(fraction(bj, i, h), 25, bi[0])
184184 let bm = valueOrElse(getInteger(az[ae], r), 0)
185185 [aC, fraction(aJ, b, aC), aJ, aD, aE, aF, aG, aM, aP, aN, aO, aR, aS, aT, aU, aX, aY, aZ, ba, bc, bd, bh, bm, bj, be, bk, bl, aI]
186186 }
187187
188188
189189 func bn (bo) = ("duckHealth_" + bo)
190190
191191
192192 func bp (bo) = ("duckChars_" + bo)
193193
194194
195195 func bq (bo) = ("duckXP_" + bo)
196196
197197
198198 func br (bo) = ("duckLevel_" + bo)
199199
200200
201201 func bs (bo) = ("duckFreePoints_" + bo)
202202
203203
204204 func bt (bo) = ("duckEquipment_" + bo)
205205
206206
207207 func bu (t) = ("userXP_" + t)
208208
209209
210210 func bv (t) = ("userLevel_" + t)
211211
212212
213213 func bw (t) = ("userFreePoints_" + t)
214214
215215
216216 func bx (by) = (100 + by)
217217
218218
219219 let bz = "PRESALE"
220220
221221 let bA = "ONBOARD"
222222
223223 let bB = 6
224224
225225 let bC = 3456000
226226
227227 let bD = 86400000
228228
229229 let bE = 10000000000
230230
231231 let bF = 39637
232232
233233 let bG = 3
234234
235235 let bH = 4
236236
237237 let bI = 10
238238
239239 let bJ = 10000000
240240
241-let bK = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_30_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_50_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_70_0,0,0,0,0,0,0_201"]
241+let bK = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_30_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_50_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_70_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_0_0,0,0,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_0_0,0,0,0,0,0,0_"]
242242
243243 let bL = 6
244244
245245 let bM = 10
246246
247247 func bN (t) = ("lastTxIdByUser_" + t)
248248
249249
250250 func bO (bP) = ("nftOwner_" + bP)
251251
252252
253253 func bQ (bP) = ("landCustomNameByAssetId_" + bP)
254254
255255
256256 func bR (bP) = ("stakedTime_" + bP)
257257
258258
259259 func bS (bP) = ("infraLevel_" + bP)
260260
261261
262262 func bT (bU,bP) = makeString(["landArtStatus", bU, bP], "_")
263263
264264
265265 func bV (bW) = ("wareHouse_" + bW)
266266
267267
268268 func bX (bP) = ("duckCustomNameByAssetId_" + bP)
269269
270270
271271 func bY (t) = ("accountCustomNameByAddr_" + t)
272272
273273
274274 func bZ (t) = ("accRefBy_" + t)
275275
276276
277277 func ca (t) = ("onboardArtActivatedDuckBy_" + t)
278278
279279
280280 func cb (t) = ("accReferrals_" + t)
281281
282282
283283 func cc (bP) = ("duckOwner_" + bP)
284284
285285
286286 func cd (ce) = ("stakedDuckByOwner_" + ce)
287287
288288
289289 func cf (bo) = ("duckLocation_" + bo)
290290
291291
292292 func cg () = "contractsBlocked"
293293
294294
295295 func ch (bW) = ("landOrder_" + bW)
296296
297297
298298 func ci () = "emergencyWarehouseProducts"
299299
300300
301301 func cj (ck) = ("%s%d__tourStaticData__" + toString(ck))
302302
303303
304304 func cl (ck) = ("%s%d__tourDynamicData__" + toString(ck))
305305
306306
307307 func cm (ck) = ("%s%d__allRegistrands__" + toString(ck))
308308
309309
310-let cn = 2
310+let cn = 0
311311
312-let co = 3
312+let co = 1
313313
314-let cp = 5
314+func cp (cq,ck) = {
315+ let cr = split(valueOrErrorMessage(getString(cq, cj(ck)), (("Error reading tournament " + toString(ck)) + " data")), "__")
316+ let cs = split(valueOrErrorMessage(getString(cq, cl(ck)), (("Error reading tournament " + toString(ck)) + " data")), "__")
317+[cr, cs]
318+ }
315319
316-let cq = 6
317320
318-let cr = 1
321+let ct = 2
319322
320-let cs = 2
321-
322-let ct = 3
323-
324-let cu = 4
323+let cu = 3
325324
326325 let cv = 5
327326
328-func cw (cx) = (parseIntValue(cx[bL]) * bJ)
327+let cw = 6
328+
329+let cx = 1
330+
331+let cy = 2
332+
333+let cz = 3
334+
335+let cA = 4
336+
337+let cB = 5
338+
339+func cC (cD) = (parseIntValue(cD[bL]) * bJ)
329340
330341
331-let cy = take(drop(this.bytes, 1), 1)
342+let cE = take(drop(this.bytes, 1), 1)
332343
333-let cz = {
334- let cA = cy
335- if ((base58'2W' == cA))
344+let cF = {
345+ let cG = cE
346+ if ((base58'2W' == cG))
336347 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
337- else if ((base58'2T' == cA))
348+ else if ((base58'2T' == cG))
338349 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
339350 else throw("Unknown chain")
340351 }
341352
342-let cB = {
343- let cA = cy
344- if ((base58'2W' == cA))
353+let cH = {
354+ let cG = cE
355+ if ((base58'2W' == cG))
345356 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
346- else if ((base58'2T' == cA))
357+ else if ((base58'2T' == cG))
347358 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
348359 else throw("Unknown chain")
349360 }
350361
351-let cC = {
352- let cA = cy
353- if ((base58'2W' == cA))
362+let cI = {
363+ let cG = cE
364+ if ((base58'2W' == cG))
354365 then 10000000000
355- else if ((base58'2T' == cA))
366+ else if ((base58'2T' == cG))
356367 then 100000000
357368 else throw("Unknown chain")
358369 }
359370
360-let cD = "__"
371+let cJ = "__"
361372
362-let cE = 1000000
373+let cK = 1000000
363374
364-let cF = 100000000
375+let cL = 100000000
365376
366-let cG = 25
377+let cM = 25
367378
368-let cH = 100
379+let cN = 100
369380
370-let cI = 225
381+let cO = 225
371382
372-let cJ = 400
383+let cP = 400
373384
374-let cK = 625
385+let cQ = 625
375386
376-func cL (cM,cN) = valueOrErrorMessage(getString(cM, cN), makeString(["mandatory ", toString(cM), ".", cN, " is not defined"], ""))
387+func cR (cS,cT) = valueOrErrorMessage(getString(cS, cT), makeString(["mandatory ", toString(cS), ".", cT, " is not defined"], ""))
377388
378389
379-let cO = 1
390+let cU = 1
380391
381-let cP = 2
392+let cV = 2
382393
383-let cQ = 3
394+let cW = 3
384395
385-let cR = 4
396+let cX = 4
386397
387-let cS = 5
398+let cY = 5
388399
389-let cT = 6
400+let cZ = 6
390401
391-let cU = 7
402+let da = 7
392403
393-func cV () = "%s__restConfig"
404+func db () = "%s__restConfig"
394405
395406
396-func cW () = "%s__restAddr"
407+func dc () = "%s__restAddr"
397408
398409
399-func cX (cY) = split_4C(cL(cY, cV()), cD)
410+func dd (de) = split_4C(cR(de, db()), cJ)
400411
401412
402-func cZ (da,db) = valueOrErrorMessage(addressFromString(da[db]), ("Rest cfg doesn't contain address at index " + toString(db)))
413+func df (dg,dh) = valueOrErrorMessage(addressFromString(dg[dh]), ("Rest cfg doesn't contain address at index " + toString(dh)))
403414
404415
405-let dc = addressFromStringValue(valueOrElse(getString(this, cW()), cB))
416+let di = addressFromStringValue(valueOrElse(getString(this, dc()), cH))
406417
407-let da = cX(dc)
418+let dg = dd(di)
408419
409-let aj = cZ(da, cO)
420+let aj = df(dg, cU)
410421
411-let dd = cZ(da, cP)
422+let dj = df(dg, cV)
412423
413-let de = cZ(da, cQ)
424+let dk = df(dg, cW)
414425
415-let df = cZ(da, cR)
426+let dl = df(dg, cX)
416427
417-let dg = cZ(da, cS)
428+let dm = df(dg, cY)
418429
419-let aH = cZ(da, cT)
430+let aH = df(dg, cZ)
420431
421-let dh = cZ(da, cU)
432+let dn = df(dg, da)
422433
423-let di = 0
434+let do = 0
424435
425-let dj = 1
436+let dp = 1
426437
427-let dk = 2
438+let dq = 2
428439
429-let dl = 3
440+let dr = 3
430441
431-let dm = "wlg_assetId"
442+let ds = "wlg_assetId"
432443
433-let dn = valueOrErrorMessage(getBinary(df, dm), "Not initialized yet")
444+let dt = valueOrErrorMessage(getBinary(dl, ds), "Not initialized yet")
434445
435-let do = 1
446+let du = 1
436447
437-func dp () = "resTypesProportions"
448+func dv () = "resTypesProportions"
438449
439450
440-func dq (ce) = ("stakedLandsByOwner_" + ce)
451+func dw (ce) = ("stakedLandsByOwner_" + ce)
441452
442453
443-func dr (ce) = ("stakedPiecesByOwner_" + ce)
454+func dx (ce) = ("stakedPiecesByOwner_" + ce)
444455
445456
446-func ds (dt) = {
447- let cA = dt
448- if ($isInstanceOf(cA, "String"))
457+func dy (dz) = {
458+ let cG = dz
459+ if ($isInstanceOf(cG, "String"))
449460 then {
450- let du = cA
451- du
461+ let dA = cG
462+ dA
452463 }
453464 else throw("fail to cast into String")
454465 }
455466
456467
457-func dv (dt) = {
458- let cA = dt
459- if ($isInstanceOf(cA, "Int"))
468+func dB (dz) = {
469+ let cG = dz
470+ if ($isInstanceOf(cG, "Int"))
460471 then {
461- let dw = cA
462- dw
472+ let dC = cG
473+ dC
463474 }
464475 else throw("fail to cast into Int")
465476 }
466477
467478
468-func dx (dt) = {
469- let cA = dt
470- if ($isInstanceOf(cA, "Boolean"))
479+func dD (dz) = {
480+ let cG = dz
481+ if ($isInstanceOf(cG, "Boolean"))
471482 then {
472- let du = cA
473- du
483+ let dA = cG
484+ dA
474485 }
475486 else throw("fail to cast into Boolean")
476487 }
477488
478489
479-func dy (dz) = {
480- let cA = dz
481- if (("S" == cA))
482- then cG
483- else if (("M" == cA))
484- then cH
485- else if (("L" == cA))
486- then cI
487- else if (("XL" == cA))
488- then cJ
489- else if (("XXL" == cA))
490- then cK
490+func dE (dF) = {
491+ let cG = dF
492+ if (("S" == cG))
493+ then cM
494+ else if (("M" == cG))
495+ then cN
496+ else if (("L" == cG))
497+ then cO
498+ else if (("XL" == cG))
499+ then cP
500+ else if (("XXL" == cG))
501+ then cQ
491502 else throw("Unknown land size")
492503 }
493504
494505
495-func dA (ai) = {
496- let ak = split(valueOrElse(getString(aj, dp()), "0_0_0_0_0_0"), "_")
506+func dG (ai) = {
507+ let ak = split(valueOrElse(getString(aj, dv()), "0_0_0_0_0_0"), "_")
497508 func al (am,an) = (am + parseIntValue(an))
498509
499510 let ao = {
500511 let ap = ak
501512 let aq = size(ap)
502513 let ar = 0
503514 func as (at,au) = if ((au >= aq))
504515 then at
505516 else al(at, ap[au])
506517
507518 func av (at,au) = if ((au >= aq))
508519 then at
509520 else throw("List size exceeds 6")
510521
511522 av(as(as(as(as(as(as(ar, 0), 1), 2), 3), 4), 5), 6)
512523 }
513- let aw = valueOrElse(getInteger(aj, dr(ai)), 0)
524+ let aw = valueOrElse(getInteger(aj, dx(ai)), 0)
514525 [ao, aw]
515526 }
516527
517528
518-let dB = 500000
529+let dH = 500000
519530
520-func dC (dD) = {
521- let cA = dD
522- if ($isInstanceOf(cA, "List[Any]"))
531+func dI (dJ) = {
532+ let cG = dJ
533+ if ($isInstanceOf(cG, "List[Any]"))
523534 then {
524- let dE = cA
525- if ((size(dE) != bB))
526- then throw(("Array size is " + toString(size(dE))))
535+ let dK = cG
536+ if ((size(dK) != bB))
537+ then throw(("Array size is " + toString(size(dK))))
527538 else {
528- func dF (am,an) = {
529- let dG = an
530- if ($isInstanceOf(dG, "Int"))
539+ func dL (am,an) = {
540+ let dM = an
541+ if ($isInstanceOf(dM, "Int"))
531542 then {
532- let dH = dG
533- (am :+ toString(dH))
543+ let dN = dM
544+ (am :+ toString(dN))
534545 }
535546 else throw("List type is not Int")
536547 }
537548
538- let dI = {
539- let ap = dE
549+ let dO = {
550+ let ap = dK
540551 let aq = size(ap)
541552 let ar = nil
542553 func as (at,au) = if ((au >= aq))
543554 then at
544- else dF(at, ap[au])
555+ else dL(at, ap[au])
545556
546557 func av (at,au) = if ((au >= aq))
547558 then at
548559 else throw("List size exceeds 6")
549560
550561 av(as(as(as(as(as(as(ar, 0), 1), 2), 3), 4), 5), 6)
551562 }
552- makeString(dI, "_")
563+ makeString(dO, "_")
553564 }
554565 }
555566 else throw("fail to cast into List")
556567 }
557568
558569
559-func dJ (dD) = {
560- let cA = dD
561- if ($isInstanceOf(cA, "(List[Any], List[Any])"))
570+func dP (dJ) = {
571+ let cG = dJ
572+ if ($isInstanceOf(cG, "(List[Any], List[Any])"))
562573 then {
563- let dK = cA
564- $Tuple2(dC(dK._1), dC(dK._2))
574+ let dQ = cG
575+ $Tuple2(dI(dQ._1), dI(dQ._2))
565576 }
566577 else throw("fail to cast into (List, List)")
567578 }
568579
569580
570-func dL (dM) = {
571- let t = addressFromString(dM)
572- let dN = if (isDefined(t))
581+func dR (dS) = {
582+ let t = addressFromString(dS)
583+ let dT = if (isDefined(t))
573584 then wavesBalance(value(t))
574585 else BalanceDetails(0, 0, 0, 0)
575- let dO = if (isDefined(t))
576- then assetBalance(value(t), cz)
586+ let dU = if (isDefined(t))
587+ then assetBalance(value(t), cF)
577588 else 0
578- let dP = if (isDefined(t))
579- then assetBalance(value(t), dn)
589+ let dV = if (isDefined(t))
590+ then assetBalance(value(t), dt)
580591 else 0
581- let dQ = valueOrElse(getString(aj, bY(dM)), dM)
582- let dR = bZ(dM)
583- let dS = getString(aj, dR)
584- let dT = valueOrElse(getString(aj, cb(dM)), "")
585- let dU = valueOrElse(getString(aj, bN(dM)), "")
586- let dV = dA(dM)[do]
587- let dW = valueOrElse(getInteger(aj, bu(dM)), 0)
588- let dX = valueOrElse(getInteger(aj, bv(dM)), 0)
589- let dY = valueOrElse(getInteger(aj, bw(dM)), 0)
590- let dZ = if (isDefined(dS))
592+ let dW = valueOrElse(getString(aj, bY(dS)), dS)
593+ let dX = bZ(dS)
594+ let dY = getString(aj, dX)
595+ let dZ = valueOrElse(getString(aj, cb(dS)), "")
596+ let ea = valueOrElse(getString(aj, bN(dS)), "")
597+ let eb = dG(dS)[du]
598+ let ec = valueOrElse(getInteger(aj, bu(dS)), 0)
599+ let ed = valueOrElse(getInteger(aj, bv(dS)), 0)
600+ let ee = valueOrElse(getInteger(aj, bw(dS)), 0)
601+ let ef = if (isDefined(dY))
591602 then (bA + (if (if (isDefined(t))
592- then isDefined(getString(aj, ca(dM)))
603+ then isDefined(getString(aj, ca(dS)))
593604 else false)
594605 then ":1"
595606 else ":0"))
596607 else ""
597-[("%s%s__customName__" + dQ), ("%s%s__referredBy__" + valueOrElse(dS, "")), ("%s%s__referrals__" + dT), ("%s%s__lastTxId__" + dU), ("%s%d__wavesBalance__" + toString(dN.available)), ("%s%d__wlgoldBalance__" + toString(dP)), ("%s%d__usdtBalance__" + toString(dO)), ("%s%d__stakedPieces__" + toString(dV)), ("%s%d__currentXp__" + toString(dW)), ("%s%d__currentLvl__" + toString(dX)), ("%s%d__pointsToDistribute__" + toString(dY)), ("%s%s__walletArtefacts__" + dZ)]
608+[("%s%s__customName__" + dW), ("%s%s__referredBy__" + valueOrElse(dY, "")), ("%s%s__referrals__" + dZ), ("%s%s__lastTxId__" + ea), ("%s%d__wavesBalance__" + toString(dT.available)), ("%s%d__wlgoldBalance__" + toString(dV)), ("%s%d__usdtBalance__" + toString(dU)), ("%s%d__stakedPieces__" + toString(eb)), ("%s%d__currentXp__" + toString(ec)), ("%s%d__currentLvl__" + toString(ed)), ("%s%d__pointsToDistribute__" + toString(ee)), ("%s%s__walletArtefacts__" + ef)]
598609 }
599610
600611
601-func ea (bW,dV) = {
602- let eb = valueOrElse(getInteger(aj, bS(bW)), 0)
603- let ec = valueOrElse(getInteger(aj, bT(bz, bW)), 0)
604- let ed = (eb / 6)
605- let ee = (eb / 7)
606- $Tuple3(eb, ec, ((bC + fraction(bC, ((eb + ed) + (2 * ee)), 5)) + fraction(bC, ec, (dV * 5))))
612+func eg (bW,eb) = {
613+ let eh = valueOrElse(getInteger(aj, bS(bW)), 0)
614+ let ei = valueOrElse(getInteger(aj, bT(bz, bW)), 0)
615+ let ej = (eh / 6)
616+ let ek = (eh / 7)
617+ $Tuple3(eh, ei, ((bC + fraction(bC, ((eh + ej) + (2 * ek)), 5)) + fraction(bC, ei, (eb * 5))))
607618 }
608619
609620
610-func ef (eg) = {
611- let eh = split(eg, "_")
612- ((bE * (parseIntValue(eh[1]) + 1)) * parseIntValue(eh[0]))
621+func el (em) = {
622+ let en = split(em, "_")
623+ ((bE * (parseIntValue(en[1]) + 1)) * parseIntValue(en[0]))
613624 }
614625
615626
616-func ei (ej,ek,eb) = {
617- let eg = ((toString(ek) + "_") + toString(eb))
618- let el = toString(ef(eg))
619- let em = valueOrElse(getString(aj, ej), ((((eg + ":0_0_0_0_0_0:0_0_0_0_0_0::0_0_") + el) + "_") + el))
620- split(em, ":")
627+func eo (ep,eq,eh) = {
628+ let em = ((toString(eq) + "_") + toString(eh))
629+ let er = toString(el(em))
630+ let es = valueOrElse(getString(aj, ep), ((((em + ":0_0_0_0_0_0:0_0_0_0_0_0::0_0_") + er) + "_") + er))
631+ split(es, ":")
621632 }
622633
623634
624-func en (bo) = {
625- let eo = bx(valueOrElse(getInteger(aj, br(bo)), 0))
626- $Tuple5(valueOrElse(getInteger(aj, bR(bo)), -1), value(assetInfo(fromBase58String(bo))).name, valueOrElse(getString(aj, cf(bo)), ""), valueOrElse(getInteger(aj, bn(bo)), eo), ds(invoke(aj, "getBackpackREADONLY", [bo], nil)))
635+func et (bo) = {
636+ let eu = bx(valueOrElse(getInteger(aj, br(bo)), 0))
637+ $Tuple5(valueOrElse(getInteger(aj, bR(bo)), -1), value(assetInfo(fromBase58String(bo))).name, valueOrElse(getString(aj, cf(bo)), ""), valueOrElse(getInteger(aj, bn(bo)), eu), dy(invoke(aj, "getBackpackREADONLY", [bo], nil)))
627638 }
628639
629640
630-func ep (bo,eq,er) = {
631- let dQ = valueOrElse(getString(aj, bX(bo)), er._2)
632- let es = valueOrElse(getString(aj, bp(bo)), "0_0_0_0_0")
633- let dW = valueOrElse(getInteger(aj, bq(bo)), 0)
634- let dX = valueOrElse(getInteger(aj, br(bo)), 0)
635- let dY = valueOrElse(getInteger(aj, bs(bo)), 0)
636- let et = valueOrElse(getString(aj, bt(bo)), ";_;_;_;_;_;")
637-[("%s%s__assetId__" + bo), ("%s%s__owner__" + eq), ("%s%s__customName__" + dQ), ("%s%d__stakedTime__" + toString(er._1)), ("%s%s__name__" + er._2), ("%s%s__location__" + er._3), ("%s%d__health__" + toString(er._4)), ("%s%d__maxHealth__" + toString(bx(dX))), ("%s%s__characteristics__" + es), ("%s%d__currentXp__" + toString(dW)), ("%s%d__currentLvl__" + toString(dX)), ("%s%d__pointsToDistribute__" + toString(dY)), ("%s%s__backPack__" + er._5), ("%s%s__equipment__" + et)]
641+func ev (bo,ew,ex) = {
642+ let dW = valueOrElse(getString(aj, bX(bo)), ex._2)
643+ let ey = valueOrElse(getString(aj, bp(bo)), "0_0_0_0_0")
644+ let ec = valueOrElse(getInteger(aj, bq(bo)), 0)
645+ let ed = valueOrElse(getInteger(aj, br(bo)), 0)
646+ let ee = valueOrElse(getInteger(aj, bs(bo)), 0)
647+ let ez = valueOrElse(getString(aj, bt(bo)), ";_;_;_;_;_;")
648+[("%s%s__assetId__" + bo), ("%s%s__owner__" + ew), ("%s%s__customName__" + dW), ("%s%d__stakedTime__" + toString(ex._1)), ("%s%s__name__" + ex._2), ("%s%s__location__" + ex._3), ("%s%d__health__" + toString(ex._4)), ("%s%d__maxHealth__" + toString(bx(ed))), ("%s%s__characteristics__" + ey), ("%s%d__currentXp__" + toString(ec)), ("%s%d__currentLvl__" + toString(ed)), ("%s%d__pointsToDistribute__" + toString(ee)), ("%s%s__backPack__" + ex._5), ("%s%s__equipment__" + ez)]
638649 }
639650
640651
641-func eu (bW,eq,ev) = if ((bW == ""))
652+func eA (bW,ew,eB) = if ((bW == ""))
642653 then throw("landAssetId is required")
643654 else {
644- let ew = value(assetInfo(fromBase58String(bW)))
645- let ex = split(ew.description, "_")
646- let ey = if ((ew.quantity > 0))
647- then ex[di]
648- else ("-" + ex[di])
649- let dV = dy(ex[dj])
650- let ez = ea(bW, dV)
651- let eA = (lastBlock.timestamp - ev)
652- let eB = if ((ev > 0))
653- then fraction(eA, (ez._3 * dV), bD)
655+ let eC = value(assetInfo(fromBase58String(bW)))
656+ let eD = split(eC.description, "_")
657+ let eE = if ((eC.quantity > 0))
658+ then eD[do]
659+ else ("-" + eD[do])
660+ let eb = dE(eD[dp])
661+ let eF = eg(bW, eb)
662+ let eG = (lastBlock.timestamp - eB)
663+ let eH = if ((eB > 0))
664+ then fraction(eG, (eF._3 * eb), bD)
654665 else 0
655- let eC = fraction(cC, (dV * (ez._1 + 1)), cG)
656- let eD = if ((ev > 0))
657- then dJ(invoke(aj, "splitByGlobalAndLocalWeightsREADONLY", [eC, eB, ex[dk]], nil))
658- else $Tuple2(dC(invoke(aj, "splitByGlobalWeightsREADONLY", [eC], nil)), "")
659- let dQ = valueOrElse(getString(aj, bQ(bW)), ((ex[dl] + "-") + ex[di]))
660-[("%s%s__assetId__" + bW), ("%s%s__owner__" + eq), ("%s%s__customName__" + dQ), ("%s%d__stakedTime__" + toString(ev)), ("%s%s__description__" + makeString([ey, ex[dj], ex[dk], ex[dl]], "_")), ("%s%d__infraLevel__" + toString(ez._1)), ("%s%s__availResByType__" + eD._2), ("%s%d__availResTotal__" + toString(eB)), ("%s%s__needMaterial__" + eD._1), ("%s%s__landArtefacts__PRESALE:" + toString(ez._2)), ("%s%s__warehouse__" + makeString(ei(bV(bW), (dV / cG), ez._1), ":")), ("%s%s__landOrder__" + valueOrElse(getString(dd, ch(bW)), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"))]
666+ let eI = fraction(cI, (eb * (eF._1 + 1)), cM)
667+ let eJ = if ((eB > 0))
668+ then dP(invoke(aj, "splitByGlobalAndLocalWeightsREADONLY", [eI, eH, eD[dq]], nil))
669+ else $Tuple2(dI(invoke(aj, "splitByGlobalWeightsREADONLY", [eI], nil)), "")
670+ let dW = valueOrElse(getString(aj, bQ(bW)), ((eD[dr] + "-") + eD[do]))
671+[("%s%s__assetId__" + bW), ("%s%s__owner__" + ew), ("%s%s__customName__" + dW), ("%s%d__stakedTime__" + toString(eB)), ("%s%s__description__" + makeString([eE, eD[dp], eD[dq], eD[dr]], "_")), ("%s%d__infraLevel__" + toString(eF._1)), ("%s%s__availResByType__" + eJ._2), ("%s%d__availResTotal__" + toString(eH)), ("%s%s__needMaterial__" + eJ._1), ("%s%s__landArtefacts__PRESALE:" + toString(eF._2)), ("%s%s__warehouse__" + makeString(eo(bV(bW), (eb / cM), eF._1), ":")), ("%s%s__landOrder__" + valueOrElse(getString(dj, ch(bW)), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"))]
661672 }
662673
663674
664-func eE (bW,eq) = if ((bW == ""))
675+func eK (bW,ew) = if ((bW == ""))
665676 then throw("landAssetId is required")
666677 else {
667- let ew = value(assetInfo(fromBase58String(bW)))
668- let ex = split(ew.description, "_")
669- let dV = dy(ex[dj])
670- let ez = ea(bW, dV)
671-[("%s%s__assetId__" + bW), ("%s%s__owner__" + eq), ("%s%s__warehouse__" + makeString(ei(bV(bW), (dV / cG), ez._1), ":")), ("%s%s__landOrder__" + valueOrElse(getString(dd, ch(bW)), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"))]
678+ let eC = value(assetInfo(fromBase58String(bW)))
679+ let eD = split(eC.description, "_")
680+ let eb = dE(eD[dp])
681+ let eF = eg(bW, eb)
682+[("%s%s__assetId__" + bW), ("%s%s__owner__" + ew), ("%s%s__warehouse__" + makeString(eo(bV(bW), (eb / cM), eF._1), ":")), ("%s%s__landOrder__" + valueOrElse(getString(dj, ch(bW)), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"))]
672683 }
673684
674685
675-@Callable(eF)
676-func constructorV1 (az) = if ((eF.caller != this))
686+@Callable(eL)
687+func constructorV1 (az) = if ((eL.caller != this))
677688 then throw("permissions denied")
678689 else {
679- func eG (am,eH) = (am + "%s")
690+ func eM (am,eN) = (am + "%s")
680691
681- let eI = {
692+ let eO = {
682693 let ap = az
683694 let aq = size(ap)
684695 let ar = ""
685696 func as (at,au) = if ((au >= aq))
686697 then at
687- else eG(at, ap[au])
698+ else eM(at, ap[au])
688699
689700 func av (at,au) = if ((au >= aq))
690701 then at
691702 else throw("List size exceeds 10")
692703
693704 av(as(as(as(as(as(as(as(as(as(as(ar, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
694705 }
695-[StringEntry(cV(), makeString(eI :: az, cD)), StringEntry(cW(), toString(this))]
706+[StringEntry(db(), makeString(eO :: az, cJ)), StringEntry(dc(), toString(this))]
696707 }
697708
698709
699710
700-@Callable(eF)
701-func walletInfoREADONLY (dM) = $Tuple2(nil, dL(dM))
711+@Callable(eL)
712+func walletInfoREADONLY (dS) = $Tuple2(nil, dR(dS))
702713
703714
704715
705-@Callable(eF)
706-func duckByOwnerInfoREADONLY (eJ) = {
707- let eK = getString(aj, cd(eJ))
708- $Tuple2(nil, if (if (isDefined(addressFromString(eJ)))
709- then isDefined(eK)
716+@Callable(eL)
717+func duckByOwnerInfoREADONLY (eP) = {
718+ let eQ = getString(aj, cd(eP))
719+ $Tuple2(nil, if (if (isDefined(addressFromString(eP)))
720+ then isDefined(eQ)
710721 else false)
711722 then {
712- let bo = value(eK)
713- ep(bo, eJ, en(bo))
723+ let bo = value(eQ)
724+ ev(bo, eP, et(bo))
714725 }
715- else ep("", eJ, $Tuple5(-1, "", "", -1, "")))
726+ else ev("", eP, $Tuple5(-1, "", "", -1, "")))
716727 }
717728
718729
719730
720-@Callable(eF)
731+@Callable(eL)
721732 func duckByAssetIdInfoREADONLY (bo) = {
722- let eq = getString(aj, cc(bo))
723- $Tuple2(nil, ep(bo, if (isDefined(eq))
724- then value(eq)
725- else "", en(bo)))
733+ let ew = getString(aj, cc(bo))
734+ $Tuple2(nil, ev(bo, if (isDefined(ew))
735+ then value(ew)
736+ else "", et(bo)))
726737 }
727738
728739
729740
730-@Callable(eF)
741+@Callable(eL)
731742 func landByAssetIdInfoREADONLY (bW) = if ((bW == ""))
732743 then throw("landAssetId is required")
733744 else {
734- let ev = valueOrElse(getInteger(aj, bR(bW)), -1)
735- let eq = if ((ev > 0))
745+ let eB = valueOrElse(getInteger(aj, bR(bW)), -1)
746+ let ew = if ((eB > 0))
736747 then value(getString(aj, bO(bW)))
737748 else ""
738- $Tuple2(nil, eu(bW, eq, ev))
749+ $Tuple2(nil, eA(bW, ew, eB))
739750 }
740751
741752
742753
743-@Callable(eF)
744-func stakedLandsByOwnerInfoREADONLY (eL) = if ((eL == ""))
754+@Callable(eL)
755+func stakedLandsByOwnerInfoREADONLY (eR) = if ((eR == ""))
745756 then throw("landOwnerAddress is required")
746757 else {
747- let eM = getString(aj, dq(eL))
748- let eN = if (isDefined(eM))
749- then split_51C(value(eM), "_")
758+ let eS = getString(aj, dw(eR))
759+ let eT = if (isDefined(eS))
760+ then split_51C(value(eS), "_")
750761 else nil
751- func eO (am,bW) = if ((bW == ""))
762+ func eU (am,bW) = if ((bW == ""))
752763 then throw("landAssetId is required")
753764 else {
754- let ev = valueOrElse(getInteger(aj, bR(bW)), -1)
755- (am :+ eu(bW, eL, ev))
765+ let eB = valueOrElse(getInteger(aj, bR(bW)), -1)
766+ (am :+ eA(bW, eR, eB))
756767 }
757768
758- let dI = {
759- let ap = eN
769+ let dO = {
770+ let ap = eT
760771 let aq = size(ap)
761772 let ar = nil
762773 func as (at,au) = if ((au >= aq))
763774 then at
764- else eO(at, ap[au])
775+ else eU(at, ap[au])
765776
766777 func av (at,au) = if ((au >= aq))
767778 then at
768779 else throw("List size exceeds 100")
769780
770781 av(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(ar, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
771782 }
772- $Tuple2(nil, dI)
783+ $Tuple2(nil, dO)
773784 }
774785
775786
776787
777-@Callable(eF)
778-func landsByIdsInfoREADONLY (eP) = {
779- func eO (am,bW) = if ((bW == ""))
788+@Callable(eL)
789+func landsByIdsInfoREADONLY (eV) = {
790+ func eU (am,bW) = if ((bW == ""))
780791 then throw("landAssetId is required")
781792 else {
782- let ev = valueOrElse(getInteger(aj, bR(bW)), -1)
783- let eq = if ((ev > 0))
793+ let eB = valueOrElse(getInteger(aj, bR(bW)), -1)
794+ let ew = if ((eB > 0))
784795 then value(getString(aj, bO(bW)))
785796 else ""
786- (am :+ eu(bW, eq, ev))
797+ (am :+ eA(bW, ew, eB))
787798 }
788799
789- let dI = {
790- let ap = eP
800+ let dO = {
801+ let ap = eV
791802 let aq = size(ap)
792803 let ar = nil
793804 func as (at,au) = if ((au >= aq))
794805 then at
795- else eO(at, ap[au])
806+ else eU(at, ap[au])
796807
797808 func av (at,au) = if ((au >= aq))
798809 then at
799810 else throw("List size exceeds 100")
800811
801812 av(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(ar, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
802813 }
803- $Tuple2(nil, dI)
814+ $Tuple2(nil, dO)
804815 }
805816
806817
807818
808-@Callable(eF)
819+@Callable(eL)
809820 func warehouseOrderByAssetIdInfoREADONLY (bW) = if ((bW == ""))
810821 then throw("landAssetId is required")
811822 else {
812- let ev = valueOrElse(getInteger(aj, bR(bW)), -1)
813- let eq = if ((ev > 0))
823+ let eB = valueOrElse(getInteger(aj, bR(bW)), -1)
824+ let ew = if ((eB > 0))
814825 then value(getString(aj, bO(bW)))
815826 else ""
816- $Tuple2(nil, eE(bW, eq))
827+ $Tuple2(nil, eK(bW, ew))
817828 }
818829
819830
820831
821-@Callable(eF)
822-func ordersByLandIdsInfoREADONLY (eP) = {
823- func eO (am,bW) = if ((bW == ""))
832+@Callable(eL)
833+func ordersByLandIdsInfoREADONLY (eV) = {
834+ func eU (am,bW) = if ((bW == ""))
824835 then throw("landAssetId is required")
825836 else {
826- let ev = valueOrElse(getInteger(aj, bR(bW)), -1)
827- let eq = if ((ev > 0))
837+ let eB = valueOrElse(getInteger(aj, bR(bW)), -1)
838+ let ew = if ((eB > 0))
828839 then value(getString(aj, bO(bW)))
829840 else ""
830- (am :+ eE(bW, eq))
841+ (am :+ eK(bW, ew))
831842 }
832843
833- let dI = {
834- let ap = eP
844+ let dO = {
845+ let ap = eV
835846 let aq = size(ap)
836847 let ar = nil
837848 func as (at,au) = if ((au >= aq))
838849 then at
839- else eO(at, ap[au])
850+ else eU(at, ap[au])
840851
841852 func av (at,au) = if ((au >= aq))
842853 then at
843854 else throw("List size exceeds 40")
844855
845856 av(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(ar, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40)
846857 }
847- $Tuple2(nil, dI)
858+ $Tuple2(nil, dO)
848859 }
849860
850861
851862
852-@Callable(eF)
853-func cancelWarehouseOrders (eP) = if ((eF.caller != this))
863+@Callable(eL)
864+func cancelWarehouseOrders (eV) = if ((eL.caller != this))
854865 then throw("permission denied")
855866 else {
856- let eQ = getBoolean(aj, cg())
857- if (if (!(isDefined(eQ)))
867+ let eW = getBoolean(aj, cg())
868+ if (if (!(isDefined(eW)))
858869 then true
859- else (value(eQ) == false))
870+ else (value(eW) == false))
860871 then throw("Contracts should be blocked before canceling orders")
861872 else {
862- func eO (ew,bW) = if ((bW == ""))
873+ func eU (eC,bW) = if ((bW == ""))
863874 then throw("landAssetId is required")
864875 else {
865- let eR = dx(invoke(dd, "setWarehouseOrder", ["0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:", bW], nil))
866- if (if (ew)
876+ let eX = dD(invoke(dj, "setWarehouseOrder", ["0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:", bW], nil))
877+ if (if (eC)
867878 then true
868- else eR)
869- then !(if (ew)
870- then eR
879+ else eX)
880+ then !(if (eC)
881+ then eX
871882 else false)
872883 else false
873884 }
874885
875- let dI = {
876- let ap = eP
886+ let dO = {
887+ let ap = eV
877888 let aq = size(ap)
878889 let ar = false
879890 func as (at,au) = if ((au >= aq))
880891 then at
881- else eO(at, ap[au])
892+ else eU(at, ap[au])
882893
883894 func av (at,au) = if ((au >= aq))
884895 then at
885896 else throw("List size exceeds 30")
886897
887898 av(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(ar, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
888899 }
889- $Tuple2(nil, dI)
900+ $Tuple2(nil, dO)
890901 }
891902 }
892903
893904
894905
895-@Callable(eF)
896-func fixWarehouseFormats (eP) = if ((eF.caller != this))
906+@Callable(eL)
907+func fixWarehouseFormats (eV) = if ((eL.caller != this))
897908 then throw("permission denied")
898909 else {
899- func eO (am,bW) = if ((bW == ""))
910+ func eU (am,bW) = if ((bW == ""))
900911 then throw("landAssetId is required")
901- else (am + size(ds(invoke(aj, "fixWarehouseFormat", [bW], nil))))
912+ else (am + size(dy(invoke(aj, "fixWarehouseFormat", [bW], nil))))
902913
903- let dI = {
904- let ap = eP
914+ let dO = {
915+ let ap = eV
905916 let aq = size(ap)
906917 let ar = 0
907918 func as (at,au) = if ((au >= aq))
908919 then at
909- else eO(at, ap[au])
920+ else eU(at, ap[au])
910921
911922 func av (at,au) = if ((au >= aq))
912923 then at
913924 else throw("List size exceeds 25")
914925
915926 av(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(ar, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25)
916927 }
917- $Tuple2(nil, dI)
928+ $Tuple2(nil, dO)
918929 }
919930
920931
921932
922-@Callable(eF)
923-func fixStakedPieces (eS) = if ((eF.caller != this))
933+@Callable(eL)
934+func fixStakedPieces (eY) = if ((eL.caller != this))
924935 then throw("permission denied")
925936 else {
926- func eT (am,t) = if ((t == ""))
937+ func eZ (am,t) = if ((t == ""))
927938 then throw("address is required")
928- else (am + dv(invoke(aj, "fixStakedPieces", [t], nil)))
939+ else (am + dB(invoke(aj, "fixStakedPieces", [t], nil)))
929940
930- let dI = {
931- let ap = eS
941+ let dO = {
942+ let ap = eY
932943 let aq = size(ap)
933944 let ar = 0
934945 func as (at,au) = if ((au >= aq))
935946 then at
936- else eT(at, ap[au])
947+ else eZ(at, ap[au])
937948
938949 func av (at,au) = if ((au >= aq))
939950 then at
940951 else throw("List size exceeds 16")
941952
942953 av(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(ar, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16)
943954 }
944- $Tuple2(nil, dI)
955+ $Tuple2(nil, dO)
945956 }
946957
947958
948959
949-@Callable(eF)
950-func sendUsdtPrize (eJ) = if ((eF.caller != aj))
960+@Callable(eL)
961+func sendUsdtPrize (eP) = if ((eL.caller != aj))
951962 then throw("permission denied")
952963 else {
953- let eU = fraction(assetBalance(this, cz), dB, cE)
954- $Tuple2([ScriptTransfer(addressFromStringValue(eJ), eU, cz)], eU)
964+ let fa = fraction(assetBalance(this, cF), dH, cK)
965+ $Tuple2([ScriptTransfer(addressFromStringValue(eP), fa, cF)], fa)
955966 }
956967
957968
958969
959-@Callable(eF)
970+@Callable(eL)
960971 func getEmergencyServiceDataREADONLY () = {
961- let eV = getString(dd, ci())
962- let eW = if (isDefined(eV))
963- then split(value(eV), "_")
972+ let fb = getString(dj, ci())
973+ let fc = if (isDefined(fb))
974+ then split(value(fb), "_")
964975 else nil
965- func eX (am,eY) = {
966- let dw = am._2
967- let cx = split(eY, "_")
968- let eZ = if ((dw == 0))
976+ func fd (am,fe) = {
977+ let dC = am._2
978+ let cD = split(fe, "_")
979+ let ff = if ((dC == 0))
969980 then (bG * bM)
970981 else 0
971- let fa = if ((size(eW) > dw))
972- then parseIntValue(eW[dw])
982+ let fg = if ((size(fc) > dC))
983+ then parseIntValue(fc[dC])
973984 else 0
974- let fb = cw(cx)
975- let fc = fraction((fb * bH), bF, (cF * bM))
976- let fd = fraction((fb * bI), bF, (cF * bM))
977- let fe = makeString([toString(eZ), toString(fa), toString(fc), toString(fd)], "_")
978- $Tuple2((am._1 :+ fe), (dw + 1))
985+ let fh = cC(cD)
986+ let fi = fraction((fh * bH), bF, (cL * bM))
987+ let fj = fraction((fh * bI), bF, (cL * bM))
988+ let fk = makeString([toString(ff), toString(fg), toString(fi), toString(fj)], "_")
989+ $Tuple2((am._1 :+ fk), (dC + 1))
979990 }
980991
981- let du = makeString_2C(( let ap = bK
992+ let dA = makeString_2C(( let ap = bK
982993 let aq = size(ap)
983994 let ar = $Tuple2(nil, 0)
984995 func as (at,au) = if ((au >= aq))
985996 then at
986- else eX(at, ap[au])
997+ else fd(at, ap[au])
987998
988999 func av (at,au) = if ((au >= aq))
9891000 then at
9901001 else throw("List size exceeds 50")
9911002
9921003 av(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(as(ar, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50))._1, ":")
993- let ff = ("%s%s__emergencyServiceData__" + du)
994- $Tuple2(nil, ff)
1004+ let fl = ("%s%s__emergencyServiceData__" + dA)
1005+ $Tuple2(nil, fl)
9951006 }
9961007
9971008
9981009
999-@Callable(eF)
1010+@Callable(eL)
10001011 func wlgStatsREADONLY (ay) = {
1001- let fg = ax(ay, [dc, aj, dd, de, df, dg, aH], cz, 0)
1002- $Tuple2(nil, [("%s%s%d__wlgAmount__" + toString(fg[z])), ("%s%s%d__wlgPrice__" + toString(fg[A])), ("%s%s%d__usdtFunds__" + toString(fg[B])), ("%s%s%d__usdtEconomy__" + toString(fg[C])), ("%s%s%d__usdtActivity__" + toString(fg[D])), ("%s%s%d__usdtArbitrage__" + toString(fg[E])), ("%s%s%d__usdtPool__" + toString(fg[F])), ("%s%s%d__wlgIssueTime__" + toString(fg[G])), ("%s%s%d__wlgLastMarketingTeamActTime__" + toString(fg[H])), ("%s%s%d__wlgMarketingTotal__" + toString(fg[I])), ("%s%s%d__wlgMarketingAmLeft__" + toString(fg[J])), ("%s%s%d__wlgMarketingAmAvailNow__" + toString(fg[K])), ("%s%s%d__wlgMarketingWlgold__" + toString(fg[L])), ("%s%s%d__wlgTeamTotal__" + toString(fg[M])), ("%s%s%d__wlgTeamAmLeft__" + toString(fg[N])), ("%s%s%d__wlgTeamAmAvailNow__" + toString(fg[O])), ("%s%s%d__wlgTeamWlgold__" + toString(fg[P])), ("%s%s%d__wlgActTotal__" + toString(fg[Q])), ("%s%s%d__wlgActAmLeft__" + toString(fg[R])), ("%s%s%d__wlgActAmAvailNow__" + toString(fg[S])), ("%s%s%d__wlgActWlgold__" + toString(fg[T])), ("%s%s%d__wlgCurPeriod__" + toString(fg[U])), ("%s%s%d__wlgAmLeftTotal__" + toString(fg[V])), ("%s%s%d__wlgCurPeriodDistribution__" + toString(fg[W])), ("%s%s%d__wlgLastUserTime__" + toString(fg[X])), ("%s%s%d__wlgUserAmAvailNow__" + toString(fg[Y])), ("%s%s%d__wlgGuestSLandDaily__" + toString(fg[Z])), ("%s%s%d__wlgInvestFundTotal__" + toString(fg[aa]))])
1012+ let fm = ax(ay, [di, aj, dj, dk, dl, dm, aH], cF, 0)
1013+ $Tuple2(nil, [("%s%s%d__wlgAmount__" + toString(fm[z])), ("%s%s%d__wlgPrice__" + toString(fm[A])), ("%s%s%d__usdtFunds__" + toString(fm[B])), ("%s%s%d__usdtEconomy__" + toString(fm[C])), ("%s%s%d__usdtActivity__" + toString(fm[D])), ("%s%s%d__usdtArbitrage__" + toString(fm[E])), ("%s%s%d__usdtPool__" + toString(fm[F])), ("%s%s%d__wlgIssueTime__" + toString(fm[G])), ("%s%s%d__wlgLastMarketingTeamActTime__" + toString(fm[H])), ("%s%s%d__wlgMarketingTotal__" + toString(fm[I])), ("%s%s%d__wlgMarketingAmLeft__" + toString(fm[J])), ("%s%s%d__wlgMarketingAmAvailNow__" + toString(fm[K])), ("%s%s%d__wlgMarketingWlgold__" + toString(fm[L])), ("%s%s%d__wlgTeamTotal__" + toString(fm[M])), ("%s%s%d__wlgTeamAmLeft__" + toString(fm[N])), ("%s%s%d__wlgTeamAmAvailNow__" + toString(fm[O])), ("%s%s%d__wlgTeamWlgold__" + toString(fm[P])), ("%s%s%d__wlgActTotal__" + toString(fm[Q])), ("%s%s%d__wlgActAmLeft__" + toString(fm[R])), ("%s%s%d__wlgActAmAvailNow__" + toString(fm[S])), ("%s%s%d__wlgActWlgold__" + toString(fm[T])), ("%s%s%d__wlgCurPeriod__" + toString(fm[U])), ("%s%s%d__wlgAmLeftTotal__" + toString(fm[V])), ("%s%s%d__wlgCurPeriodDistribution__" + toString(fm[W])), ("%s%s%d__wlgLastUserTime__" + toString(fm[X])), ("%s%s%d__wlgUserAmAvailNow__" + toString(fm[Y])), ("%s%s%d__wlgGuestSLandDaily__" + toString(fm[Z])), ("%s%s%d__wlgInvestFundTotal__" + toString(fm[aa]))])
10031014 }
10041015
10051016
10061017
1007-@Callable(eF)
1008-func tournamentStatsREADONLY (fh) = {
1009- let fi = split(valueOrErrorMessage(getString(dh, cj(fh)), (("Error reading tournament " + toString(fh)) + " data")), cD)
1010- let fj = split(valueOrErrorMessage(getString(dh, cl(fh)), (("Error reading tournament " + toString(fh)) + " data")), cD)
1011- let fk = valueOrElse(getString(dh, cm(fh)), "")
1012- $Tuple2(nil, [("%s%s__tournamentStaticData__" + makeString([fi[cn], fi[co], fi[cp], fi[cq]], "_")), ("%s%s__tournamentDynamisData__" + makeString([fj[cr], fj[cs], fj[ct], fj[cu], fj[cv]], "_")), ("%s%s__tournamentRegistrands__" + fk)])
1018+@Callable(eL)
1019+func tournamentStatsREADONLY (fn) = {
1020+ let fo = cp(dn, fn)
1021+ let cr = fo[cn]
1022+ let cs = fo[co]
1023+ let fp = valueOrElse(getString(dn, cm(fn)), "")
1024+ $Tuple2(nil, [("%s%s__tournamentStaticData__" + makeString([cr[ct], cr[cu], cr[cv], cr[cw]], "_")), ("%s%s__tournamentDynamisData__" + makeString([cs[cx], cs[cy], cs[cz], cs[cA], cs[cB]], "_")), ("%s%s__tournamentRegistrands__" + fp)])
10131025 }
10141026
10151027

github/deemru/w8io/169f3d6 
423.79 ms