IyEgL2Jpbi9zaAouICIke3NyY2Rpcj0ufS9pbml0LnNoIjsgcGF0aF9wcmVwZW5kXyAuIC4uL3NyYwoKIyBUZXN0IHRoZSBidWlsdGluIGNvbW1hbmQgIjAiLgoKIyBGaW5kIGEgJ3RyJyBwcm9ncmFtIHRoYXQgc3VwcG9ydHMgTlVMIGJ5dGVzIGluIHRoZSBpbnB1dC4KIyBTb2xhcmlzIC91c3IvYmluL3RyIGRvZXMgbm90LgppZiB0ZXN0IC1mIC91c3IveHBnNi9iaW4vdHI7IHRoZW4KICBUUj0vdXNyL3hwZzYvYmluL3RyCmVsc2UKICBpZiB0ZXN0IC1mIC91c3IveHBnNC9iaW4vdHI7IHRoZW4KICAgIFRSPS91c3IveHBnNC9iaW4vdHIKICBlbHNlCiAgICBUUj10cgogIGZpCmZpCgpjYXQgPDxcRU9GID4gbWV4LXRlc3QyLnBvCiMgSEVBREVSLgojCm1zZ2lkICIiCm1zZ3N0ciAiIgoiUHJvamVjdC1JZC1WZXJzaW9uOiBCb25uaWUgVHlsZXJcbiIKIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xXG4iCiJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCgojOiBtYXJyaWVkLW1lbjo0CiMsIGZ1enp5Cm1zZ2lkICJUaGUgd29ybGQgaXMgZnVsbCBvZiBtYXJyaWVkIG1lbiIKbXNnc3RyICJTbyB2aWVsZSB2ZXJoZWlyYXRldGUgTeRubmVyIgoKIzogbWFycmllZC1tZW46NQptc2dpZCAid2l0aCB3aXZlcyB3aG8gbmV2ZXIgdW5kZXJzdGFuZCIKbXNnc3RyICJ1bmQgaWhyZSBGcmF1ZW4gdmVyc3RlaGVuIHNpZSBuaWNodCIKCiM6IG1hcnJpZWQtbWVuOjYKbXNnaWQgIlRoZXkncmUgbG9va2luZyBmb3Igc29tZW9uZSB0byBzaGFyZSIKbXNnc3RyICIiCgojIHNjaHdlciB6dSD8YmVyc2V0emVuLi4uCiM6IG1hcnJpZWQtbWVuOjcKbXNnaWQgInRoZSBleGNpdGVtZW50IG9mIGEgbG92ZSBhZmZhaXIiCm1zZ3N0ciAiIgoKIzogbWFycmllZC1tZW46OAptc2dpZCAiSnVzdCBhcyBzb29uIGFzIHRoZXkgZmluZCB5b3UiCm1zZ3N0ciAiIgoKIzogbWFycmllZC1tZW46OQptc2dpZCAiVGhleSB3YXJuIHlvdSBhbmQgZGFybiB5b3UiCm1zZ3N0ciAiIgoKI34gbXNnaWQgIllvdSBmbHkgb24gdGhlIHdpbmdzIG9mIHJvbWFuY2UiCiN+IG1zZ3N0ciAiRGllIEZs/GdlbCBkZXIgZnJpc2NoZW4gTGllYmVcbiIKI34gImhlYmVuIGRpY2ggenVtIEhpbW1lbCIKCiMsIGZ1enp5CiN+IG1zZ2lkICJJbiB0aGUgZXllcyBvZiB0aGUgd29ybGQiCiN+IG1zZ3N0ciAiRvxyIGRpZSBhbmRlcmVuIgoKIyBFdHdhcyBmcmVpZSDcYmVyc2V0enVuZy4KI34gbXNnaWQgIllvdSdyZSBqdXN0IGFub3RoZXIgY3JhenkgZ2lybCIKI34gbXNnc3RyICJiaXN0IGR1IGJsb98gZWluIHZlcnL8Y2t0ZXMgZHVtbWVzIERpbmciCgojfiBtc2dpZCAiV2hvIGxvdmVzIGEgbWFycmllZCBtYW4iCiN+IG1zZ3N0ciAiZGFzIGVpbmVuIHZlcmhlaXJhdGV0ZW4gTWFubiBsaWVidCIKRU9GCgo6ICR7TVNHRVhFQz1tc2dleGVjfQpMQ19BTEw9QyBcCiR7TVNHRVhFQ30gLWkgbWV4LXRlc3QyLnBvIDAgPiBtZXgtdGVzdDIudG1wIDI+IG1leC10ZXN0Mi5lcnIKcmVzdWx0PSQ/CmNhdCBtZXgtdGVzdDIuZXJyIHwgZ3JlcCAtdiAnd2FybmluZzogTG9jYWxlIGNoYXJzZXQnIHwgZ3JlcCAtdiAnXiAnCnRlc3QgJHJlc3VsdCA9IDAgfHwgeyBFeGl0IDE7IH0KTENfQUxMPUMgJFRSIC1kICdccicgPCBtZXgtdGVzdDIudG1wID4gbWV4LXRlc3QyLm91dCB8fCBFeGl0IDEKCjogJHtDTVA9Y21wfQoke0NNUH0gIiRhYnNfc3JjZGlyIi9tZXgtdGVzdDIub2sgbWV4LXRlc3QyLm91dCA+L2Rldi9udWxsIDI+L2Rldi9udWxsCnJlc3VsdD0kPwoKZXhpdCAkcmVzdWx0Cg==