IyEvYmluL3NoCiMKIyBDb3B5cmlnaHQgKGMpIDIwMDYgSm9oYW5uZXMgRS4gU2NoaW5kZWxpbgojCgp0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc2hvcnRsb2cKJwoKLiAuL3Rlc3QtbGliLnNoCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCcgJwoJdGVzdF90aWNrICYmCgllY2hvIDEgPmExICYmCglnaXQgYWRkIGExICYmCgl0cmVlPSQoZ2l0IHdyaXRlLXRyZWUpICYmCgljb21taXQ9JChwcmludGYgIiVzXG4iICJUZXN0IiAiIiB8IGdpdCBjb21taXQtdHJlZSAiJHRyZWUiKSAmJgoJZ2l0IHVwZGF0ZS1yZWYgSEVBRCAiJGNvbW1pdCIgJiYKCgllY2hvIDIgPmExICYmCglnaXQgY29tbWl0IC0tcXVpZXQgLW0gIlRoaXMgaXMgYSB2ZXJ5LCB2ZXJ5IGxvbmcgZmlyc3QgbGluZSBmb3IgdGhlIGNvbW1pdCBtZXNzYWdlIHRvIHNlZSBpZiBpdCBpcyB3cmFwcGVkIGNvcnJlY3RseSIgYTEgJiYKCgkjIHRlc3QgaWYgdGhlIHdyYXBwaW5nIGlzIHN0aWxsIHZhbGlkCgkjIHdoZW4gcmVwbGFjaW5nIGFsbCBpcyBieSB0cmVibGUgY2xlZnMuCgllY2hvIDMgPmExICYmCglnaXQgY29tbWl0IC0tcXVpZXQgLW0gIiQoCgkJZWNobyAiVGhpcyBpcyBhIHZlcnksIHZlcnkgbG9uZyBmaXJzdCBsaW5lIGZvciB0aGUgY29tbWl0IG1lc3NhZ2UgdG8gc2VlIGlmIGl0IGlzIHdyYXBwZWQgY29ycmVjdGx5IiB8CgkJc2VkICJzL2kvMTIzNC9nIiB8CgkJdHIgMTIzNCAiXDM2MFwyMzVcMjA0XDIzNiIpIiBhMSAmJgoKCSMgbm93IGZzY2sgdXAgdGhlIHV0ZjgKCWdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyBub24tdXRmLTggJiYKCWVjaG8gNCA+YTEgJiYKCWdpdCBjb21taXQgLS1xdWlldCAtbSAiJCgKCQllY2hvICJUaGlzIGlzIGEgdmVyeSwgdmVyeSBsb25nIGZpcnN0IGxpbmUgZm9yIHRoZSBjb21taXQgbWVzc2FnZSB0byBzZWUgaWYgaXQgaXMgd3JhcHBlZCBjb3JyZWN0bHkiIHwKCQlzZWQgInMvaS8xMjM0L2ciIHwKCQl0ciAxMjM0ICJcMzcwXDIzNVwyMDRcMjM2IikiIGExICYmCgoJZWNobyA1ID5hMSAmJgoJZ2l0IGNvbW1pdCAtLXF1aWV0IC1tICJhCQkJCQkJCQkxMgkzNAk1Ngk3OCIgYTEgJiYKCgllY2hvIDYgPmExICYmCglnaXQgY29tbWl0IC0tcXVpZXQgLW0gIkNvbW1pdCBieSBzb21lb25lIGVsc2UiIFwKCQktLWF1dGhvcj0iU29tZW9uZSBlbHNlIDxub3QhbWU+IiBhMSAmJgoKCWNhdCA+ZXhwZWN0LnRlbXBsYXRlIDw8LVxFT0YKCUEgVSBUaG9yICg1KToKCSAgICAgIFNVQkpFQ1QKCSAgICAgIFNVQkpFQ1QKCSAgICAgIFNVQkpFQ1QKCSAgICAgIFNVQkpFQ1QKCSAgICAgIFNVQkpFQ1QKCglTb21lb25lIGVsc2UgKDEpOgoJICAgICAgU1VCSkVDVAoKCUVPRgonCgpmdXp6KCkgewoJZmlsZT0kMSAmJgoJc2VkICIKCQkJcy8kT0lEX1JFR0VYL09CSkVDVF9OQU1FL2cKCQkJcy8kX3gzNS9PQkpJRC9nCgkJCXMvXiBcezZcfVtDVGFdLiovICAgICAgU1VCSkVDVC9nCgkJCXMvXiBcezhcfVteIF0uKi8gICAgICAgIENPTlRJTlVBVElPTi9nCgkJIiA8IiRmaWxlIiA+IiRmaWxlLmZ1enp5IiAmJgoJc2VkICIvQ09OVElOVUFUSU9OLyBkIiA8IiRmaWxlLmZ1enp5Igp9Cgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdkZWZhdWx0IG91dHB1dCBmb3JtYXQnICcKCWdpdCBzaG9ydGxvZyBIRUFEID5sb2cgJiYKCWZ1enogbG9nID5sb2cucHJlZGljdGFibGUgJiYKCXRlc3RfY21wIGV4cGVjdC50ZW1wbGF0ZSBsb2cucHJlZGljdGFibGUKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJldHR5IGZvcm1hdCcgJwoJc2VkIHMvU1VCSkVDVC9PQkpFQ1RfTkFNRS8gZXhwZWN0LnRlbXBsYXRlID5leHBlY3QgJiYKCWdpdCBzaG9ydGxvZyAtLWZvcm1hdD0iJUgiIEhFQUQgPmxvZyAmJgoJZnV6eiBsb2cgPmxvZy5wcmVkaWN0YWJsZSAmJgoJdGVzdF9jbXAgZXhwZWN0IGxvZy5wcmVkaWN0YWJsZQonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICctLWFiYnJldicgJwoJc2VkIHMvU1VCSkVDVC9PQkpJRC8gZXhwZWN0LnRlbXBsYXRlID5leHBlY3QgJiYKCWdpdCBzaG9ydGxvZyAtLWZvcm1hdD0iJWgiIC0tYWJicmV2PTM1IEhFQUQgPmxvZyAmJgoJZnV6eiBsb2cgPmxvZy5wcmVkaWN0YWJsZSAmJgoJdGVzdF9jbXAgZXhwZWN0IGxvZy5wcmVkaWN0YWJsZQonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdvdXRwdXQgZnJvbSB1c2VyLWRlZmluZWQgZm9ybWF0IGlzIHJlLXdyYXBwZWQnICcKCXNlZCAicy9TVUJKRUNUL3R3byBsaW5lcy8iIGV4cGVjdC50ZW1wbGF0ZSA+ZXhwZWN0ICYmCglnaXQgc2hvcnRsb2cgLS1mb3JtYXQ9InR3byVubGluZXMiIEhFQUQgPmxvZyAmJgoJZnV6eiBsb2cgPmxvZy5wcmVkaWN0YWJsZSAmJgoJdGVzdF9jbXAgZXhwZWN0IGxvZy5wcmVkaWN0YWJsZQonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICFNSU5HVyAnc2hvcnRsb2cgd3JhcHBpbmcnICcKCWNhdCA+ZXhwZWN0IDw8XEVPRiAmJgpBIFUgVGhvciAoNSk6CiAgICAgIFRlc3QKICAgICAgVGhpcyBpcyBhIHZlcnksIHZlcnkgbG9uZyBmaXJzdCBsaW5lIGZvciB0aGUgY29tbWl0IG1lc3NhZ2UgdG8gc2VlIGlmCiAgICAgICAgIGl0IGlzIHdyYXBwZWQgY29ycmVjdGx5CiAgICAgIFRo8J2EnnMg8J2EnnMgYSB2ZXJ5LCB2ZXJ5IGxvbmcgZvCdhJ5yc3QgbPCdhJ5uZSBmb3IgdGhlIGNvbW3wnYSedCBtZXNzYWdlIHRvIHNlZSDwnYSeZgogICAgICAgICDwnYSedCDwnYSecyB3cmFwcGVkIGNvcnJlY3RseQogICAgICBUaPidhJ5zIPidhJ5zIGEgdmVyeSwgdmVyeSBsb25nIGb4nYSecnN0IGz4nYSebmUgZm9yIHRoZSBjb21t+J2EnnQKICAgICAgICAgbWVzc2FnZSB0byBzZWUg+J2EnmYg+J2EnnQg+J2EnnMgd3JhcHBlZCBjb3JyZWN0bHkKICAgICAgYQkJCQkJCQkJMTIJMzQKICAgICAgICAgNTYJNzgKClNvbWVvbmUgZWxzZSAoMSk6CiAgICAgIENvbW1pdCBieSBzb21lb25lIGVsc2UKCkVPRgoJZ2l0IHNob3J0bG9nIC13IEhFQUQgPm91dCAmJgoJdGVzdF9jbXAgZXhwZWN0IG91dAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICFNSU5HVyAnc2hvcnRsb2cgZnJvbSBub24tZ2l0IGRpcmVjdG9yeScgJwoJZ2l0IGxvZyAtLW5vLWV4cGFuZC10YWJzIEhFQUQgPmxvZyAmJgoJR0lUX0RJUj1ub24tZXhpc3RpbmcgZ2l0IHNob3J0bG9nIC13IDxsb2cgPm91dCAmJgoJdGVzdF9jbXAgZXhwZWN0IG91dAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICFNSU5HVyAnc2hvcnRsb2cgY2FuIHJlYWQgLS1mb3JtYXQ9cmF3IG91dHB1dCcgJwoJZ2l0IGxvZyAtLWZvcm1hdD1yYXcgSEVBRCA+bG9nICYmCglHSVRfRElSPW5vbi1leGlzdGluZyBnaXQgc2hvcnRsb2cgLXcgPGxvZyA+b3V0ICYmCgl0ZXN0X2NtcCBleHBlY3Qgb3V0CicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3J0bG9nIGZyb20gbm9uLWdpdCBkaXJlY3RvcnkgcmVmdXNlcyBleHRyYSBhcmd1bWVudHMnICcKCXRlc3RfbXVzdF9mYWlsIGVudiBHSVRfRElSPW5vbi1leGlzdGluZyBnaXQgc2hvcnRsb2cgZm9vIDI+b3V0ICYmCgl0ZXN0X2kxOG5ncmVwICJ0b28gbWFueSBhcmd1bWVudHMiIG91dAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyBzaG91bGQgYWRkIG5ld2xpbmUgd2hlbiBpbnB1dCBsaW5lIG1hdGNoZXMgd3JhcGxlbicgJwoJY2F0ID5leHBlY3QgPDxcRU9GICYmCkEgVSBUaG9yICgyKToKICAgICAgYmJiYmJiYmJiYmJiYmJiYmJiOiBiYmJiYmJiYiBiYmIgYmJiYiBiYmJiYmJiIGJiIGJiYmIgYmJiIGJiYmJiIGJiYmJiYgogICAgICBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhOiBhYWFhYWEgYWFhYWFhYWFhYSBhYWFhIGFhYWFhYWFhIGFhIGFhYWEgYWEgYWFhCgpFT0YKCWdpdCBzaG9ydGxvZyAtdyA+b3V0IDw8XEVPRiAmJgpjb21taXQgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMQpBdXRob3I6IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CkRhdGU6ICAgVGh1IEFwciA3IDE1OjE0OjEzIDIwMDUgLTA3MDAKCiAgICBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhOiBhYWFhYWEgYWFhYWFhYWFhYSBhYWFhIGFhYWFhYWFhIGFhIGFhYWEgYWEgYWFhCgpjb21taXQgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMgpBdXRob3I6IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CkRhdGU6ICAgVGh1IEFwciA3IDE1OjE0OjEzIDIwMDUgLTA3MDAKCiAgICBiYmJiYmJiYmJiYmJiYmJiYmI6IGJiYmJiYmJiIGJiYiBiYmJiIGJiYmJiYmIgYmIgYmJiYiBiYmIgYmJiYmIgYmJiYmJiCgpFT0YKCXRlc3RfY21wIGV4cGVjdCBvdXQKJwoKaWNvbnZmcm9tdXRmOHRvaXNvODg1OTEoKSB7CglwcmludGYgIiVzIiAiJCoiIHwgaWNvbnYgLWYgVVRGLTggLXQgSVNPODg1OS0xCn0KCkRTQ0hPPSJKw7Zow6RubsOrcyBcIkRzY2jDtlwiIFNjaGluZMOrbGluIgpEU0NIT0U9IiREU0NITyA8Sm9oYW5uZXMuU2NoaW5kZWxpbkBnbXguZGU+IgpNU0cxPSJzZXQgYTEgdG8gMiBhbmQgc29tZSBub24tQVNDSUkgY2hhcnM6IMOEw5/DuCIKTVNHMj0ic2V0IGExIHRvIDMgYW5kIHNvbWUgbm9uLUFTQ0lJIGNoYXJzOiDDocOmw68iCmNhdCA+IGV4cGVjdCA8PCBFT0YKJERTQ0hPICgyKToKICAgICAgJE1TRzEKICAgICAgJE1TRzIKCkVPRgoKdGVzdF9leHBlY3Rfc3VjY2VzcyAhTUlOR1cgJ3Nob3J0bG9nIGVuY29kaW5nJyAnCglnaXQgcmVzZXQgLS1oYXJkICIkY29tbWl0IiAmJgoJZ2l0IGNvbmZpZyAtLXVuc2V0IGkxOG4uY29tbWl0ZW5jb2RpbmcgJiYKCWVjaG8gMiA+IGExICYmCglnaXQgY29tbWl0IC0tcXVpZXQgLW0gIiRNU0cxIiAtLWF1dGhvcj0iJERTQ0hPRSIgYTEgJiYKCWdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyAiSVNPODg1OS0xIiAmJgoJZWNobyAzID4gYTEgJiYKCWdpdCBjb21taXQgLS1xdWlldCAtbSAiJChpY29udmZyb211dGY4dG9pc284ODU5MSAiJE1TRzIiKSIgXAoJCS0tYXV0aG9yPSIkKGljb252ZnJvbXV0Zjh0b2lzbzg4NTkxICIkRFNDSE9FIikiIGExICYmCglnaXQgY29uZmlnIC0tdW5zZXQgaTE4bi5jb21taXRlbmNvZGluZyAmJgoJZ2l0IHNob3J0bG9nIEhFQUR+Mi4uID4gb3V0ICYmCnRlc3RfY21wIGV4cGVjdCBvdXQnCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyB3aXRoIHJldmlzaW9uIHBzZXVkbyBvcHRpb25zJyAnCglnaXQgc2hvcnRsb2cgLS1hbGwgJiYKCWdpdCBzaG9ydGxvZyAtLWJyYW5jaGVzICYmCglnaXQgc2hvcnRsb2cgLS1leGNsdWRlPXJlZnMvaGVhZHMvbSogLS1hbGwKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2hvcnRsb2cgd2l0aCAtLW91dHB1dD08ZmlsZT4nICcKCWdpdCBzaG9ydGxvZyAtLW91dHB1dD1zaG9ydGxvZyAtMSBtYXN0ZXIgPm91dHB1dCAmJgoJdGVzdF9tdXN0X2JlX2VtcHR5IG91dHB1dCAmJgoJdGVzdF9saW5lX2NvdW50ID0gMyBzaG9ydGxvZwonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyAtLWNvbW1pdHRlciAoaW50ZXJuYWwpJyAnCglnaXQgY2hlY2tvdXQgLS1vcnBoYW4gc2lkZSAmJgoJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIG9uZSAmJgoJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIHR3byAmJgoJR0lUX0NPTU1JVFRFUl9OQU1FPSJTaW4gTm9tYnJlIiBnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gdGhyZWUgJiYKCgljYXQgPmV4cGVjdCA8PC1cRU9GICYmCgkgICAgIDIJQyBPIE1pdHRlcgoJICAgICAxCVNpbiBOb21icmUKCUVPRgoJZ2l0IHNob3J0bG9nIC1uc2MgSEVBRCA+YWN0dWFsICYmCgl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3J0bG9nIC0tY29tbWl0dGVyIChleHRlcm5hbCknICcKCWdpdCBsb2cgLS1mb3JtYXQ9ZnVsbCB8IGdpdCBzaG9ydGxvZyAtbnNjID5hY3R1YWwgJiYKCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1ncm91cD1jb21taXR0ZXIgaXMgdGhlIHNhbWUgYXMgLS1jb21taXR0ZXInICcKCWdpdCBzaG9ydGxvZyAtbnMgLS1ncm91cD1jb21taXR0ZXIgSEVBRCA+YWN0dWFsICYmCgl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3J0bG9nIC0tZ3JvdXA9dHJhaWxlcjpzaWduZWQtb2ZmLWJ5JyAnCglnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gZm9vIC1zICYmCglHSVRfQ09NTUlUVEVSX05BTUU9IlNPQiBPbmUiIFwKCUdJVF9DT01NSVRURVJfRU1BSUw9c29iQGV4YW1wbGUuY29tIFwKCQlnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gZm9vIC1zICYmCglnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLS1hbWVuZCAtLW5vLWVkaXQgLXMgJiYKCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKCSAgICAgMglDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CgkgICAgIDEJU09CIE9uZSA8c29iQGV4YW1wbGUuY29tPgoJRU9GCglnaXQgc2hvcnRsb2cgLW5zZSAtLWdyb3VwPXRyYWlsZXI6c2lnbmVkLW9mZi1ieSBIRUFEID5hY3R1YWwgJiYKCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAndHJhaWxlciBpZGVudHMgYXJlIHNwbGl0JyAnCgljYXQgPmV4cGVjdCA8PC1cRU9GICYmCgkgICAgIDIJQyBPIE1pdHRlcgoJICAgICAxCVNPQiBPbmUKCUVPRgoJZ2l0IHNob3J0bG9nIC1ucyAtLWdyb3VwPXRyYWlsZXI6c2lnbmVkLW9mZi1ieSBIRUFEID5hY3R1YWwgJiYKCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAndHJhaWxlciBpZGVudHMgYXJlIG1haWxtYXBwZWQnICcKCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKCSAgICAgMglDIE8gTWl0dGVyCgkgICAgIDEJQW5vdGhlciBOYW1lCglFT0YKCWVjaG8gIkFub3RoZXIgTmFtZSA8c29iQGV4YW1wbGUuY29tPiIgPm1haWwubWFwICYmCglnaXQgLWMgbWFpbG1hcC5maWxlPW1haWwubWFwIHNob3J0bG9nIC1ucyBcCgkJLS1ncm91cD10cmFpbGVyOnNpZ25lZC1vZmYtYnkgSEVBRCA+YWN0dWFsICYmCgl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3J0bG9nIGRlLWR1cGxpY2F0ZXMgdHJhaWxlcnMgaW4gYSBzaW5nbGUgY29tbWl0JyAnCglnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLUYgLSA8PC1cRU9GICYmCglzdWJqZWN0IG9uZQoKCXRoaXMgbWVzc2FnZSBoYXMgdHdvIGRpc3RpbmN0IHZhbHVlcywgcGx1cyBhIHJlcGVhdAoKCVJlcGVhdGVkLXRyYWlsZXI6IEZvbwoJUmVwZWF0ZWQtdHJhaWxlcjogQmFyCglSZXBlYXRlZC10cmFpbGVyOiBGb28KCUVPRgoKCWdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtRiAtIDw8LVxFT0YgJiYKCXN1YmplY3QgdHdvCgoJc2ltaWxhciB0byB0aGUgcHJldmlvdXMsIGJ1dCB3aXRob3V0IHRoZSBzZWNvbmQgZGlzdGluY3QgdmFsdWUKCglSZXBlYXRlZC10cmFpbGVyOiBGb28KCVJlcGVhdGVkLXRyYWlsZXI6IEZvbwoJRU9GCgoJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgoJICAgICAyCUZvbwoJICAgICAxCUJhcgoJRU9GCglnaXQgc2hvcnRsb2cgLW5zIC0tZ3JvdXA9dHJhaWxlcjpyZXBlYXRlZC10cmFpbGVyIC0yIEhFQUQgPmFjdHVhbCAmJgoJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyBjYW4gbWF0Y2ggbXVsdGlwbGUgZ3JvdXBzJyAnCglnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLUYgLSA8PC1cRU9GICYmCglzdWJqZWN0IG9uZQoKCXRoaXMgaGFzIHR3byB0cmFpbGVycyB0aGF0IGFyZSBkaXN0aW5jdCBmcm9tIHRoZSBhdXRob3I7IGl0IHdpbGwgY291bnQKCTMgdGltZXMgaW4gdGhlIG91dHB1dAoKCVNvbWUtdHJhaWxlcjogVXNlciBBIDxhQGV4YW1wbGUuY29tPgoJQW5vdGhlci10cmFpbGVyOiBVc2VyIEIgPGJAZXhhbXBsZS5jb20+CglFT0YKCglnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLUYgLSA8PC1cRU9GICYmCglzdWJqZWN0IHR3bwoKCXRoaXMgb25lIGhhcyB0d28gdHJhaWxlcnMsIG9uZSBvZiB3aGljaCBpcyBhIGR1cGxpY2F0ZSB3aXRoIHRoZSBhdXRob3I7CglpdCB3aWxsIG9ubHkgYmUgY291bnRlZCBvbmNlIGZvciB0aGVtCgoJQW5vdGhlci10cmFpbGVyOiBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPgoJU29tZS10cmFpbGVyOiBVc2VyIEIgPGJAZXhhbXBsZS5jb20+CglFT0YKCgljYXQgPmV4cGVjdCA8PC1cRU9GICYmCgkgICAgIDIJQSBVIFRob3IKCSAgICAgMglVc2VyIEIKCSAgICAgMQlVc2VyIEEKCUVPRgoJZ2l0IHNob3J0bG9nIC1ucyBcCgkJLS1ncm91cD1hdXRob3IgXAoJCS0tZ3JvdXA9dHJhaWxlcjpzb21lLXRyYWlsZXIgXAoJCS0tZ3JvdXA9dHJhaWxlcjphbm90aGVyLXRyYWlsZXIgXAoJCS0yIEhFQUQgPmFjdHVhbCAmJgoJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXQgdXAgb3B0aW9uIHNlbGVjdGlvbiB0ZXN0cycgJwoJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1GIC0gPDwtXEVPRgoJc3ViamVjdAoKCWJvZHkKCglUcmFpbGVyLW9uZTogdmFsdWUtb25lCglUcmFpbGVyLXR3bzogdmFsdWUtdHdvCglFT0YKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1uby1ncm91cCByZXNldHMgZ3JvdXAgbGlzdCB0byBhdXRob3InICcKCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKCSAgICAgMQlBIFUgVGhvcgoJRU9GCglnaXQgc2hvcnRsb2cgLW5zIFwKCQktLWdyb3VwPWNvbW1pdHRlciBcCgkJLS1ncm91cD10cmFpbGVyOnRyYWlsZXItb25lIFwKCQktLW5vLWdyb3VwIFwKCQktMSBIRUFEID5hY3R1YWwgJiYKCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1uby1ncm91cCByZXNldHMgdHJhaWxlciBsaXN0JyAnCgljYXQgPmV4cGVjdCA8PC1cRU9GICYmCgkgICAgIDEJdmFsdWUtdHdvCglFT0YKCWdpdCBzaG9ydGxvZyAtbnMgXAoJCS0tZ3JvdXA9dHJhaWxlcjp0cmFpbGVyLW9uZSBcCgkJLS1uby1ncm91cCBcCgkJLS1ncm91cD10cmFpbGVyOnRyYWlsZXItdHdvIFwKCQktMSBIRUFEID5hY3R1YWwgJiYKCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RkaW4gd2l0aCBtdWx0aXBsZSBncm91cHMgcmVwb3J0cyBlcnJvcicgJwoJZ2l0IGxvZyA+bG9nICYmCgl0ZXN0X211c3RfZmFpbCBnaXQgc2hvcnRsb2cgLS1ncm91cD1hdXRob3IgLS1ncm91cD1jb21taXR0ZXIgPGxvZwonCgp0ZXN0X2RvbmUK