IyEvYmluL3NoCiMKIyBDb3B5cmlnaHQgKGMpIDIwMDYgSm9oYW5uZXMgRS4gU2NoaW5kZWxpbgojCgp0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc2hvcnRsb2cKJwoKR0lUX1RFU1RfREVGQVVMVF9JTklUSUFMX0JSQU5DSF9OQU1FPW1haW4KZXhwb3J0IEdJVF9URVNUX0RFRkFVTFRfSU5JVElBTF9CUkFOQ0hfTkFNRQoKLiAuL3Rlc3QtbGliLnNoCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCcgJwoJdGVzdF90aWNrICYmCgllY2hvIDEgPmExICYmCglnaXQgYWRkIGExICYmCgl0cmVlPSQoZ2l0IHdyaXRlLXRyZWUpICYmCgljb21taXQ9JChwcmludGYgIiVzXG4iICJUZXN0IiAiIiB8IGdpdCBjb21taXQtdHJlZSAiJHRyZWUiKSAmJgoJZ2l0IHVwZGF0ZS1yZWYgSEVBRCAiJGNvbW1pdCIgJiYKCgllY2hvIDIgPmExICYmCglnaXQgY29tbWl0IC0tcXVpZXQgLW0gIlRoaXMgaXMgYSB2ZXJ5LCB2ZXJ5IGxvbmcgZmlyc3QgbGluZSBmb3IgdGhlIGNvbW1pdCBtZXNzYWdlIHRvIHNlZSBpZiBpdCBpcyB3cmFwcGVkIGNvcnJlY3RseSIgYTEgJiYKCgkjIHRlc3QgaWYgdGhlIHdyYXBwaW5nIGlzIHN0aWxsIHZhbGlkCgkjIHdoZW4gcmVwbGFjaW5nIGFsbCBpcyBieSB0cmVibGUgY2xlZnMuCgllY2hvIDMgPmExICYmCglnaXQgY29tbWl0IC0tcXVpZXQgLW0gIiQoCgkJZWNobyAiVGhpcyBpcyBhIHZlcnksIHZlcnkgbG9uZyBmaXJzdCBsaW5lIGZvciB0aGUgY29tbWl0IG1lc3NhZ2UgdG8gc2VlIGlmIGl0IGlzIHdyYXBwZWQgY29ycmVjdGx5IiB8CgkJc2VkICJzL2kvMTIzNC9nIiB8CgkJdHIgMTIzNCAiXDM2MFwyMzVcMjA0XDIzNiIpIiBhMSAmJgoKCSMgbm93IGZzY2sgdXAgdGhlIHV0ZjgKCWdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyBub24tdXRmLTggJiYKCWVjaG8gNCA+YTEgJiYKCWdpdCBjb21taXQgLS1xdWlldCAtbSAiJCgKCQllY2hvICJUaGlzIGlzIGEgdmVyeSwgdmVyeSBsb25nIGZpcnN0IGxpbmUgZm9yIHRoZSBjb21taXQgbWVzc2FnZSB0byBzZWUgaWYgaXQgaXMgd3JhcHBlZCBjb3JyZWN0bHkiIHwKCQlzZWQgInMvaS8xMjM0L2ciIHwKCQl0ciAxMjM0ICJcMzcwXDIzNVwyMDRcMjM2IikiIGExICYmCgoJZWNobyA1ID5hMSAmJgoJZ2l0IGNvbW1pdCAtLXF1aWV0IC1tICJhCQkJCQkJCQkxMgkzNAk1Ngk3OCIgYTEgJiYKCgllY2hvIDYgPmExICYmCglnaXQgY29tbWl0IC0tcXVpZXQgLW0gIkNvbW1pdCBieSBzb21lb25lIGVsc2UiIFwKCQktLWF1dGhvcj0iU29tZW9uZSBlbHNlIDxub3QhbWU+IiBhMSAmJgoKCWNhdCA+ZXhwZWN0LnRlbXBsYXRlIDw8LVxFT0YKCUEgVSBUaG9yICg1KToKCSAgICAgIFNVQkpFQ1QKCSAgICAgIFNVQkpFQ1QKCSAgICAgIFNVQkpFQ1QKCSAgICAgIFNVQkpFQ1QKCSAgICAgIFNVQkpFQ1QKCglTb21lb25lIGVsc2UgKDEpOgoJICAgICAgU1VCSkVDVAoKCUVPRgonCgpmdXp6KCkgewoJZmlsZT0kMSAmJgoJc2VkICIKCQkJcy8kT0lEX1JFR0VYL09CSkVDVF9OQU1FL2cKCQkJcy8kX3gzNS9PQkpJRC9nCgkJCXMvXiBcezZcfVtDVGFdLiovICAgICAgU1VCSkVDVC9nCgkJCXMvXiBcezhcfVteIF0uKi8gICAgICAgIENPTlRJTlVBVElPTi9nCgkJIiA8IiRmaWxlIiA+IiRmaWxlLmZ1enp5IiAmJgoJc2VkICIvQ09OVElOVUFUSU9OLyBkIiA8IiRmaWxlLmZ1enp5Igp9Cgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdkZWZhdWx0IG91dHB1dCBmb3JtYXQnICcKCWdpdCBzaG9ydGxvZyBIRUFEID5sb2cgJiYKCWZ1enogbG9nID5sb2cucHJlZGljdGFibGUgJiYKCXRlc3RfY21wIGV4cGVjdC50ZW1wbGF0ZSBsb2cucHJlZGljdGFibGUKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJldHR5IGZvcm1hdCcgJwoJc2VkIHMvU1VCSkVDVC9PQkpFQ1RfTkFNRS8gZXhwZWN0LnRlbXBsYXRlID5leHBlY3QgJiYKCWdpdCBzaG9ydGxvZyAtLWZvcm1hdD0iJUgiIEhFQUQgPmxvZyAmJgoJZnV6eiBsb2cgPmxvZy5wcmVkaWN0YWJsZSAmJgoJdGVzdF9jbXAgZXhwZWN0IGxvZy5wcmVkaWN0YWJsZQonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcmV0dHkgZm9ybWF0ICh3aXRoIC0tZGF0ZSknICcKCXNlZCAicy9TVUJKRUNULzIwMDUtMDQtMDcgT0JKRUNUX05BTUUvIiBleHBlY3QudGVtcGxhdGUgPmV4cGVjdCAmJgoJZ2l0IHNob3J0bG9nIC0tZm9ybWF0PSIlYWQgJUgiIC0tZGF0ZT1zaG9ydCBIRUFEID5sb2cgJiYKCWZ1enogbG9nID5sb2cucHJlZGljdGFibGUgJiYKCXRlc3RfY21wIGV4cGVjdCBsb2cucHJlZGljdGFibGUKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1hYmJyZXYnICcKCXNlZCBzL1NVQkpFQ1QvT0JKSUQvIGV4cGVjdC50ZW1wbGF0ZSA+ZXhwZWN0ICYmCglnaXQgc2hvcnRsb2cgLS1mb3JtYXQ9IiVoIiAtLWFiYnJldj0zNSBIRUFEID5sb2cgJiYKCWZ1enogbG9nID5sb2cucHJlZGljdGFibGUgJiYKCXRlc3RfY21wIGV4cGVjdCBsb2cucHJlZGljdGFibGUKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnb3V0cHV0IGZyb20gdXNlci1kZWZpbmVkIGZvcm1hdCBpcyByZS13cmFwcGVkJyAnCglzZWQgInMvU1VCSkVDVC90d28gbGluZXMvIiBleHBlY3QudGVtcGxhdGUgPmV4cGVjdCAmJgoJZ2l0IHNob3J0bG9nIC0tZm9ybWF0PSJ0d28lbmxpbmVzIiBIRUFEID5sb2cgJiYKCWZ1enogbG9nID5sb2cucHJlZGljdGFibGUgJiYKCXRlc3RfY21wIGV4cGVjdCBsb2cucHJlZGljdGFibGUKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAhTUlOR1csSUNPTlYgJ3Nob3J0bG9nIHdyYXBwaW5nJyAnCgljYXQgPmV4cGVjdCA8PFxFT0YgJiYKQSBVIFRob3IgKDUpOgogICAgICBUZXN0CiAgICAgIFRoaXMgaXMgYSB2ZXJ5LCB2ZXJ5IGxvbmcgZmlyc3QgbGluZSBmb3IgdGhlIGNvbW1pdCBtZXNzYWdlIHRvIHNlZSBpZgogICAgICAgICBpdCBpcyB3cmFwcGVkIGNvcnJlY3RseQogICAgICBUaPCdhJ5zIPCdhJ5zIGEgdmVyeSwgdmVyeSBsb25nIGbwnYSecnN0IGzwnYSebmUgZm9yIHRoZSBjb21t8J2EnnQgbWVzc2FnZSB0byBzZWUg8J2EnmYKICAgICAgICAg8J2EnnQg8J2EnnMgd3JhcHBlZCBjb3JyZWN0bHkKICAgICAgVGj4nYSecyD4nYSecyBhIHZlcnksIHZlcnkgbG9uZyBm+J2EnnJzdCBs+J2Enm5lIGZvciB0aGUgY29tbfidhJ50CiAgICAgICAgIG1lc3NhZ2UgdG8gc2VlIPidhJ5mIPidhJ50IPidhJ5zIHdyYXBwZWQgY29ycmVjdGx5CiAgICAgIGEJCQkJCQkJCTEyCTM0CiAgICAgICAgIDU2CTc4CgpTb21lb25lIGVsc2UgKDEpOgogICAgICBDb21taXQgYnkgc29tZW9uZSBlbHNlCgpFT0YKCWdpdCBzaG9ydGxvZyAtdyBIRUFEID5vdXQgJiYKCXRlc3RfY21wIGV4cGVjdCBvdXQKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAhTUlOR1csSUNPTlYgJ3Nob3J0bG9nIGZyb20gbm9uLWdpdCBkaXJlY3RvcnknICcKCWdpdCBsb2cgLS1uby1leHBhbmQtdGFicyBIRUFEID5sb2cgJiYKCUdJVF9ESVI9bm9uLWV4aXN0aW5nIGdpdCBzaG9ydGxvZyAtdyA8bG9nID5vdXQgJiYKCXRlc3RfY21wIGV4cGVjdCBvdXQKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAhTUlOR1csSUNPTlYgJ3Nob3J0bG9nIGNhbiByZWFkIC0tZm9ybWF0PXJhdyBvdXRwdXQnICcKCWdpdCBsb2cgLS1mb3JtYXQ9cmF3IEhFQUQgPmxvZyAmJgoJR0lUX0RJUj1ub24tZXhpc3RpbmcgZ2l0IHNob3J0bG9nIC13IDxsb2cgPm91dCAmJgoJdGVzdF9jbXAgZXhwZWN0IG91dAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyBmcm9tIG5vbi1naXQgZGlyZWN0b3J5IHJlZnVzZXMgZXh0cmEgYXJndW1lbnRzJyAnCgl0ZXN0X211c3RfZmFpbCBlbnYgR0lUX0RJUj1ub24tZXhpc3RpbmcgZ2l0IHNob3J0bG9nIGZvbyAyPm91dCAmJgoJdGVzdF9ncmVwICJ0b28gbWFueSBhcmd1bWVudHMiIG91dAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyAtLWF1dGhvciBmcm9tIG5vbi1naXQgZGlyZWN0b3J5IGRvZXMgbm90IHNlZ2ZhdWx0JyAnCglub25naXQgZ2l0IHNob3J0bG9nIC0tYXV0aG9yPWF1dGhvciA8L2Rldi9udWxsCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3J0bG9nIHNob3VsZCBhZGQgbmV3bGluZSB3aGVuIGlucHV0IGxpbmUgbWF0Y2hlcyB3cmFwbGVuJyAnCgljYXQgPmV4cGVjdCA8PFxFT0YgJiYKQSBVIFRob3IgKDIpOgogICAgICBiYmJiYmJiYmJiYmJiYmJiYmI6IGJiYmJiYmJiIGJiYiBiYmJiIGJiYmJiYmIgYmIgYmJiYiBiYmIgYmJiYmIgYmJiYmJiCiAgICAgIGFhYWFhYWFhYWFhYWFhYWFhYWFhYWE6IGFhYWFhYSBhYWFhYWFhYWFhIGFhYWEgYWFhYWFhYWEgYWEgYWFhYSBhYSBhYWEKCkVPRgoJZ2l0IHNob3J0bG9nIC13ID5vdXQgPDxcRU9GICYmCmNvbW1pdCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxCkF1dGhvcjogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KRGF0ZTogICBUaHUgQXByIDcgMTU6MTQ6MTMgMjAwNSAtMDcwMAoKICAgIGFhYWFhYWFhYWFhYWFhYWFhYWFhYWE6IGFhYWFhYSBhYWFhYWFhYWFhIGFhYWEgYWFhYWFhYWEgYWEgYWFhYSBhYSBhYWEKCmNvbW1pdCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyCkF1dGhvcjogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KRGF0ZTogICBUaHUgQXByIDcgMTU6MTQ6MTMgMjAwNSAtMDcwMAoKICAgIGJiYmJiYmJiYmJiYmJiYmJiYjogYmJiYmJiYmIgYmJiIGJiYmIgYmJiYmJiYiBiYiBiYmJiIGJiYiBiYmJiYiBiYmJiYmIKCkVPRgoJdGVzdF9jbXAgZXhwZWN0IG91dAonCgppY29udmZyb211dGY4dG9pc284ODU5MSgpIHsKCXByaW50ZiAiJXMiICIkKiIgfCBpY29udiAtZiBVVEYtOCAtdCBJU084ODU5LTEKfQoKRFNDSE89IkrDtmjDpG5uw6tzIFwiRHNjaMO2XCIgU2NoaW5kw6tsaW4iCkRTQ0hPRT0iJERTQ0hPIDxKb2hhbm5lcy5TY2hpbmRlbGluQGdteC5kZT4iCk1TRzE9InNldCBhMSB0byAyIGFuZCBzb21lIG5vbi1BU0NJSSBjaGFyczogw4TDn8O4IgpNU0cyPSJzZXQgYTEgdG8gMyBhbmQgc29tZSBub24tQVNDSUkgY2hhcnM6IMOhw6bDryIKY2F0ID4gZXhwZWN0IDw8IEVPRgokRFNDSE8gKDIpOgogICAgICAkTVNHMQogICAgICAkTVNHMgoKRU9GCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICFNSU5HVyxJQ09OViAnc2hvcnRsb2cgZW5jb2RpbmcnICcKCWdpdCByZXNldCAtLWhhcmQgIiRjb21taXQiICYmCglnaXQgY29uZmlnIC0tdW5zZXQgaTE4bi5jb21taXRlbmNvZGluZyAmJgoJZWNobyAyID4gYTEgJiYKCWdpdCBjb21taXQgLS1xdWlldCAtbSAiJE1TRzEiIC0tYXV0aG9yPSIkRFNDSE9FIiBhMSAmJgoJZ2l0IGNvbmZpZyBpMThuLmNvbW1pdGVuY29kaW5nICJJU084ODU5LTEiICYmCgllY2hvIDMgPiBhMSAmJgoJZ2l0IGNvbW1pdCAtLXF1aWV0IC1tICIkKGljb252ZnJvbXV0Zjh0b2lzbzg4NTkxICIkTVNHMiIpIiBcCgkJLS1hdXRob3I9IiQoaWNvbnZmcm9tdXRmOHRvaXNvODg1OTEgIiREU0NIT0UiKSIgYTEgJiYKCWdpdCBjb25maWcgLS11bnNldCBpMThuLmNvbW1pdGVuY29kaW5nICYmCglnaXQgc2hvcnRsb2cgSEVBRH4yLi4gPiBvdXQgJiYKdGVzdF9jbXAgZXhwZWN0IG91dCcKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3J0bG9nIHdpdGggcmV2aXNpb24gcHNldWRvIG9wdGlvbnMnICcKCWdpdCBzaG9ydGxvZyAtLWFsbCAmJgoJZ2l0IHNob3J0bG9nIC0tYnJhbmNoZXMgJiYKCWdpdCBzaG9ydGxvZyAtLWV4Y2x1ZGU9cmVmcy9oZWFkcy9tKiAtLWFsbAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyB3aXRoIC0tb3V0cHV0PTxmaWxlPicgJwoJZ2l0IHNob3J0bG9nIC0tb3V0cHV0PXNob3J0bG9nIC0xIG1haW4gPm91dHB1dCAmJgoJdGVzdF9tdXN0X2JlX2VtcHR5IG91dHB1dCAmJgoJdGVzdF9saW5lX2NvdW50ID0gMyBzaG9ydGxvZwonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyAtLWNvbW1pdHRlciAoaW50ZXJuYWwpJyAnCglnaXQgY2hlY2tvdXQgLS1vcnBoYW4gc2lkZSAmJgoJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIG9uZSAmJgoJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIHR3byAmJgoJR0lUX0NPTU1JVFRFUl9OQU1FPSJTaW4gTm9tYnJlIiBnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gdGhyZWUgJiYKCgljYXQgPmV4cGVjdCA8PC1cRU9GICYmCgkgICAgIDIJQyBPIE1pdHRlcgoJICAgICAxCVNpbiBOb21icmUKCUVPRgoJZ2l0IHNob3J0bG9nIC1uc2MgSEVBRCA+YWN0dWFsICYmCgl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3J0bG9nIC0tY29tbWl0dGVyIChleHRlcm5hbCknICcKCWdpdCBsb2cgLS1mb3JtYXQ9ZnVsbCB8IGdpdCBzaG9ydGxvZyAtbnNjID5hY3R1YWwgJiYKCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1ncm91cD1jb21taXR0ZXIgaXMgdGhlIHNhbWUgYXMgLS1jb21taXR0ZXInICcKCWdpdCBzaG9ydGxvZyAtbnMgLS1ncm91cD1jb21taXR0ZXIgSEVBRCA+YWN0dWFsICYmCgl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3J0bG9nIC0tZ3JvdXA9dHJhaWxlcjpzaWduZWQtb2ZmLWJ5JyAnCglnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gZm9vIC1zICYmCglHSVRfQ09NTUlUVEVSX05BTUU9IlNPQiBPbmUiIFwKCUdJVF9DT01NSVRURVJfRU1BSUw9c29iQGV4YW1wbGUuY29tIFwKCQlnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gZm9vIC1zICYmCglnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLS1hbWVuZCAtLW5vLWVkaXQgLXMgJiYKCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKCSAgICAgMglDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CgkgICAgIDEJU09CIE9uZSA8c29iQGV4YW1wbGUuY29tPgoJRU9GCglnaXQgc2hvcnRsb2cgLW5zZSAtLWdyb3VwPXRyYWlsZXI6c2lnbmVkLW9mZi1ieSBIRUFEID5hY3R1YWwgJiYKCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2hvcnRsb2cgLS1ncm91cD1mb3JtYXQnICcKCWdpdCBzaG9ydGxvZyAtcyAtLWRhdGU9ImZvcm1hdDolWSIgLS1ncm91cD0iZm9ybWF0OiVjTiAoJWNkKSIgXAoJCUhFQUQgPmFjdHVhbCAmJgoJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgoJICAgICA0CUMgTyBNaXR0ZXIgKDIwMDUpCgkgICAgIDEJU2luIE5vbWJyZSAoMjAwNSkKCUVPRgoJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyAtLWdyb3VwPTxmb3JtYXQ+IERXSU0nICcKCWdpdCBzaG9ydGxvZyAtcyAtLWRhdGU9ImZvcm1hdDolWSIgLS1ncm91cD0iJWNOICglY2QpIiBIRUFEID5hY3R1YWwgJiYKCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2hvcnRsb2cgYm9ndXMgLS1ncm91cCcgJwoJdGVzdF9tdXN0X2ZhaWwgZ2l0IHNob3J0bG9nIC0tZ3JvdXA9Ym9ndXMgSEVBRCAyPmVyciAmJgoJZ3JlcCAidW5rbm93biBncm91cCB0eXBlIiBlcnIKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAndHJhaWxlciBpZGVudHMgYXJlIHNwbGl0JyAnCgljYXQgPmV4cGVjdCA8PC1cRU9GICYmCgkgICAgIDIJQyBPIE1pdHRlcgoJICAgICAxCVNPQiBPbmUKCUVPRgoJZ2l0IHNob3J0bG9nIC1ucyAtLWdyb3VwPXRyYWlsZXI6c2lnbmVkLW9mZi1ieSBIRUFEID5hY3R1YWwgJiYKCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAndHJhaWxlciBpZGVudHMgYXJlIG1haWxtYXBwZWQnICcKCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKCSAgICAgMglDIE8gTWl0dGVyCgkgICAgIDEJQW5vdGhlciBOYW1lCglFT0YKCWVjaG8gIkFub3RoZXIgTmFtZSA8c29iQGV4YW1wbGUuY29tPiIgPm1haWwubWFwICYmCglnaXQgLWMgbWFpbG1hcC5maWxlPW1haWwubWFwIHNob3J0bG9nIC1ucyBcCgkJLS1ncm91cD10cmFpbGVyOnNpZ25lZC1vZmYtYnkgSEVBRCA+YWN0dWFsICYmCgl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3J0bG9nIGRlLWR1cGxpY2F0ZXMgdHJhaWxlcnMgaW4gYSBzaW5nbGUgY29tbWl0JyAnCglnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLUYgLSA8PC1cRU9GICYmCglzdWJqZWN0IG9uZQoKCXRoaXMgbWVzc2FnZSBoYXMgdHdvIGRpc3RpbmN0IHZhbHVlcywgcGx1cyBhIHJlcGVhdAoKCVJlcGVhdGVkLXRyYWlsZXI6IEZvbwoJUmVwZWF0ZWQtdHJhaWxlcjogQmFyCglSZXBlYXRlZC10cmFpbGVyOiBGb28KCUVPRgoKCWdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtRiAtIDw8LVxFT0YgJiYKCXN1YmplY3QgdHdvCgoJc2ltaWxhciB0byB0aGUgcHJldmlvdXMsIGJ1dCB3aXRob3V0IHRoZSBzZWNvbmQgZGlzdGluY3QgdmFsdWUKCglSZXBlYXRlZC10cmFpbGVyOiBGb28KCVJlcGVhdGVkLXRyYWlsZXI6IEZvbwoJRU9GCgoJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgoJICAgICAyCUZvbwoJICAgICAxCUJhcgoJRU9GCglnaXQgc2hvcnRsb2cgLW5zIC0tZ3JvdXA9dHJhaWxlcjpyZXBlYXRlZC10cmFpbGVyIC0yIEhFQUQgPmFjdHVhbCAmJgoJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAonCgojIFRyYWlsZXJzIHRoYXQgaGF2ZSB1bmZvbGRlZCAoc2luZ2xlIGxpbmUpIGFuZCBmb2xkZWQgKG11bHRpbGluZSkgdmFsdWVzIHdoaWNoCiMgYXJlIG90aGVyd2lzZSBpZGVudGljYWwgYXJlIHRyZWF0ZWQgYXMgdGhlIHNhbWUgdHJhaWxlciBmb3IgZGUtZHVwbGljYXRpb24uCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3J0bG9nIGRlLWR1cGxpY2F0ZXMgdHJhaWxlcnMgaW4gYSBzaW5nbGUgY29tbWl0IChmb2xkZWQvdW5mb2xkZWQgdmFsdWVzKScgJwoJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1GIC0gPDwtXEVPRiAmJgoJc3ViamVjdCBvbmUKCgl0aGlzIG1lc3NhZ2UgaGFzIHR3byBkaXN0aW5jdCB2YWx1ZXMsIHBsdXMgYSByZXBlYXQgKGZvbGRlZCkKCglSZXBlYXRlZC10cmFpbGVyOiBGb28gZm9vIGZvbwoJUmVwZWF0ZWQtdHJhaWxlcjogQmFyCglSZXBlYXRlZC10cmFpbGVyOiBGb28KCSAgZm9vIGZvbwoJRU9GCgoJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1GIC0gPDwtXEVPRiAmJgoJc3ViamVjdCB0d28KCglzaW1pbGFyIHRvIHRoZSBwcmV2aW91cywgYnV0IHdpdGhvdXQgdGhlIHNlY29uZCBkaXN0aW5jdCB2YWx1ZQoKCVJlcGVhdGVkLXRyYWlsZXI6IEZvbyBmb28gZm9vCglSZXBlYXRlZC10cmFpbGVyOiBGb28KCSAgZm9vIGZvbwoJRU9GCgoJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgoJICAgICAyCUZvbyBmb28gZm9vCgkgICAgIDEJQmFyCglFT0YKCWdpdCBzaG9ydGxvZyAtbnMgLS1ncm91cD10cmFpbGVyOnJlcGVhdGVkLXRyYWlsZXIgLTIgSEVBRCA+YWN0dWFsICYmCgl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3J0bG9nIGNhbiBtYXRjaCBtdWx0aXBsZSBncm91cHMnICcKCWdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtRiAtIDw8LVxFT0YgJiYKCXN1YmplY3Qgb25lCgoJdGhpcyBoYXMgdHdvIHRyYWlsZXJzIHRoYXQgYXJlIGRpc3RpbmN0IGZyb20gdGhlIGF1dGhvcjsgaXQgd2lsbCBjb3VudAoJMyB0aW1lcyBpbiB0aGUgb3V0cHV0CgoJU29tZS10cmFpbGVyOiBVc2VyIEEgPGFAZXhhbXBsZS5jb20+CglBbm90aGVyLXRyYWlsZXI6IFVzZXIgQiA8YkBleGFtcGxlLmNvbT4KCUVPRgoKCWdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtRiAtIDw8LVxFT0YgJiYKCXN1YmplY3QgdHdvCgoJdGhpcyBvbmUgaGFzIHR3byB0cmFpbGVycywgb25lIG9mIHdoaWNoIGlzIGEgZHVwbGljYXRlIHdpdGggdGhlIGF1dGhvcjsKCWl0IHdpbGwgb25seSBiZSBjb3VudGVkIG9uY2UgZm9yIHRoZW0KCglBbm90aGVyLXRyYWlsZXI6IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CglTb21lLXRyYWlsZXI6IFVzZXIgQiA8YkBleGFtcGxlLmNvbT4KCUVPRgoKCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKCSAgICAgMglBIFUgVGhvcgoJICAgICAyCVVzZXIgQgoJICAgICAxCVVzZXIgQQoJRU9GCglnaXQgc2hvcnRsb2cgLW5zIFwKCQktLWdyb3VwPWF1dGhvciBcCgkJLS1ncm91cD10cmFpbGVyOnNvbWUtdHJhaWxlciBcCgkJLS1ncm91cD10cmFpbGVyOmFub3RoZXItdHJhaWxlciBcCgkJLTIgSEVBRCA+YWN0dWFsICYmCgl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3J0bG9nIGNhbiBtYXRjaCBtdWx0aXBsZSBmb3JtYXQgZ3JvdXBzJyAnCglHSVRfQ09NTUlUVEVSX05BTUU9IiRHSVRfQVVUSE9SX05BTUUiIFwKCQlnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gImlkZW50aWNhbCBuYW1lcyIgJiYKCXRlc3RfdGljayAmJgoJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgoJICAgICAyCUEgVSBUaG9yCgkgICAgIDEJQyBPIE1pdHRlcgoJRU9GCglnaXQgc2hvcnRsb2cgLW5zIC0tZ3JvdXA9IiVjbiIgLS1ncm91cD0iJWFuIiAtMiBIRUFEID5hY3R1YWwgJiYKCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0IHVwIG9wdGlvbiBzZWxlY3Rpb24gdGVzdHMnICcKCWdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtRiAtIDw8LVxFT0YKCXN1YmplY3QKCglib2R5CgoJVHJhaWxlci1vbmU6IHZhbHVlLW9uZQoJVHJhaWxlci10d286IHZhbHVlLXR3bwoJRU9GCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tbm8tZ3JvdXAgcmVzZXRzIGdyb3VwIGxpc3QgdG8gYXV0aG9yJyAnCgljYXQgPmV4cGVjdCA8PC1cRU9GICYmCgkgICAgIDEJQSBVIFRob3IKCUVPRgoJZ2l0IHNob3J0bG9nIC1ucyBcCgkJLS1ncm91cD1jb21taXR0ZXIgXAoJCS0tZ3JvdXA9dHJhaWxlcjp0cmFpbGVyLW9uZSBcCgkJLS1uby1ncm91cCBcCgkJLTEgSEVBRCA+YWN0dWFsICYmCgl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tbm8tZ3JvdXAgcmVzZXRzIHRyYWlsZXIgbGlzdCcgJwoJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgoJICAgICAxCXZhbHVlLXR3bwoJRU9GCglnaXQgc2hvcnRsb2cgLW5zIFwKCQktLWdyb3VwPXRyYWlsZXI6dHJhaWxlci1vbmUgXAoJCS0tbm8tZ3JvdXAgXAoJCS0tZ3JvdXA9dHJhaWxlcjp0cmFpbGVyLXR3byBcCgkJLTEgSEVBRCA+YWN0dWFsICYmCgl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0ZGluIHdpdGggbXVsdGlwbGUgZ3JvdXBzIHJlcG9ydHMgZXJyb3InICcKCWdpdCBsb2cgPmxvZyAmJgoJdGVzdF9tdXN0X2ZhaWwgZ2l0IHNob3J0bG9nIC0tZ3JvdXA9YXV0aG9yIC0tZ3JvdXA9Y29tbWl0dGVyIDxsb2cKJwoKdGVzdF9kb25lCg==