IyEgL2Jpbi9zaAouICIke3NyY2Rpcj0ufS9pbml0LnNoIjsgcGF0aF9wcmVwZW5kXyAuIC4uL3NyYwoKIyBUZXN0IC0tbmV3bGluZSBvcHRpb24uCgpjYXQgPDxcRU9GID4gbWV4LXRlc3Q2LnBvCiMgSEVBREVSLgojCm1zZ2lkICIiCm1zZ3N0ciAiIgoiUHJvamVjdC1JZC1WZXJzaW9uOiBCb25uaWUgVHlsZXJcbiIKIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xXG4iCiJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCgojOiBtYXJyaWVkLW1lbjo0CiMsIGZ1enp5Cm1zZ2lkICJUaGUgd29ybGQgaXMgZnVsbCBvZiBtYXJyaWVkIG1lbiIKbXNnc3RyICJTbyB2aWVsZSB2ZXJoZWlyYXRldGUgTeRubmVyIgoKIzogbWFycmllZC1tZW46NQptc2dpZCAid2l0aCB3aXZlcyB3aG8gbmV2ZXIgdW5kZXJzdGFuZCIKbXNnc3RyICJ1bmQgaWhyZSBGcmF1ZW4gdmVyc3RlaGVuIHNpZSBuaWNodCIKCiM6IG1hcnJpZWQtbWVuOjYKbXNnaWQgIlRoZXkncmUgbG9va2luZyBmb3Igc29tZW9uZSB0byBzaGFyZSIKbXNnc3RyICIiCgojIHNjaHdlciB6dSD8YmVyc2V0emVuLi4uCiM6IG1hcnJpZWQtbWVuOjcKbXNnaWQgInRoZSBleGNpdGVtZW50IG9mIGEgbG92ZSBhZmZhaXIiCm1zZ3N0ciAiIgoKIzogbWFycmllZC1tZW46OAptc2dpZCAiSnVzdCBhcyBzb29uIGFzIHRoZXkgZmluZCB5b3UiCm1zZ3N0ciAiIgoKIzogbWFycmllZC1tZW46OQptc2dpZCAiVGhleSB3YXJuIHlvdSBhbmQgZGFybiB5b3UiCm1zZ3N0ciAiIgoKI34gbXNnaWQgIllvdSBmbHkgb24gdGhlIHdpbmdzIG9mIHJvbWFuY2UiCiN+IG1zZ3N0ciAiRGllIEZs/GdlbCBkZXIgZnJpc2NoZW4gTGllYmVcbiIKI34gImhlYmVuIGRpY2ggenVtIEhpbW1lbCIKCiMsIGZ1enp5CiN+IG1zZ2lkICJJbiB0aGUgZXllcyBvZiB0aGUgd29ybGQiCiN+IG1zZ3N0ciAiRvxyIGRpZSBhbmRlcmVuIgoKIyBFdHdhcyBmcmVpZSDcYmVyc2V0enVuZy4KI34gbXNnaWQgIllvdSdyZSBqdXN0IGFub3RoZXIgY3JhenkgZ2lybCIKI34gbXNnc3RyICJiaXN0IGR1IGJsb98gZWluIHZlcnL8Y2t0ZXMgZHVtbWVzIERpbmciCgojfiBtc2dpZCAiV2hvIGxvdmVzIGEgbWFycmllZCBtYW4iCiN+IG1zZ3N0ciAiZGFzIGVpbmVuIHZlcmhlaXJhdGV0ZW4gTWFubiBsaWVidCIKRU9GCgpjYXQgPDxcRU9GID4gbWV4LXRlc3Q2LnNoCiMhIC9iaW4vc2gKZWNobyAiPT09PT09PT09PT09PT09PT09PT09PT09PSAkTVNHRVhFQ19MT0NBVElPTiA9PT09PT09PT09PT09PT09PT09PT09PT09IiB8IExDX0FMTD1DIHRyIC1kICdccicKY2F0IDw8TUVPRgokTVNHRVhFQ19NU0dJRAotLS0KTUVPRgpjYXQKZWNobyB8IExDX0FMTD1DIHRyIC1kICdccicKZXhpdCAwCkVPRgpjaG1vZCBhK3ggbWV4LXRlc3Q2LnNoCgo6ICR7TVNHRVhFQz1tc2dleGVjfQpMQ19BTEw9QyBcCiR7TVNHRVhFQ30gLS1uZXdsaW5lIC1pIG1leC10ZXN0Ni5wbyAuL21leC10ZXN0Ni5zaCA+IG1leC10ZXN0Ni5vdXQgMj4gbWV4LXRlc3Q2LmVycgpyZXN1bHQ9JD8KY2F0IG1leC10ZXN0Ni5lcnIgfCBncmVwIC12ICd3YXJuaW5nOiBMb2NhbGUgY2hhcnNldCcgfCBncmVwIC12ICdeICcKdGVzdCAkcmVzdWx0ID0gMCB8fCB7IEV4aXQgMTsgfQoKY2F0IDw8XEVPRiA+IG1leC10ZXN0Ni5vawo9PT09PT09PT09PT09PT09PT09PT09PT09IG1leC10ZXN0Ni5wbzo0ID09PT09PT09PT09PT09PT09PT09PT09PT0KCi0tLQpQcm9qZWN0LUlkLVZlcnNpb246IEJvbm5pZSBUeWxlcgpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgoKPT09PT09PT09PT09PT09PT09PT09PT09PSBtZXgtdGVzdDYucG86MTIgPT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgd29ybGQgaXMgZnVsbCBvZiBtYXJyaWVkIG1lbgotLS0KU28gdmllbGUgdmVyaGVpcmF0ZXRlIE3kbm5lcgoKPT09PT09PT09PT09PT09PT09PT09PT09PSBtZXgtdGVzdDYucG86MTYgPT09PT09PT09PT09PT09PT09PT09PT09PQp3aXRoIHdpdmVzIHdobyBuZXZlciB1bmRlcnN0YW5kCi0tLQp1bmQgaWhyZSBGcmF1ZW4gdmVyc3RlaGVuIHNpZSBuaWNodAoKPT09PT09PT09PT09PT09PT09PT09PT09PSBtZXgtdGVzdDYucG86MjAgPT09PT09PT09PT09PT09PT09PT09PT09PQpUaGV5J3JlIGxvb2tpbmcgZm9yIHNvbWVvbmUgdG8gc2hhcmUKLS0tCgoKPT09PT09PT09PT09PT09PT09PT09PT09PSBtZXgtdGVzdDYucG86MjUgPT09PT09PT09PT09PT09PT09PT09PT09PQp0aGUgZXhjaXRlbWVudCBvZiBhIGxvdmUgYWZmYWlyCi0tLQoKCj09PT09PT09PT09PT09PT09PT09PT09PT0gbWV4LXRlc3Q2LnBvOjI5ID09PT09PT09PT09PT09PT09PT09PT09PT0KSnVzdCBhcyBzb29uIGFzIHRoZXkgZmluZCB5b3UKLS0tCgoKPT09PT09PT09PT09PT09PT09PT09PT09PSBtZXgtdGVzdDYucG86MzMgPT09PT09PT09PT09PT09PT09PT09PT09PQpUaGV5IHdhcm4geW91IGFuZCBkYXJuIHlvdQotLS0KCgo9PT09PT09PT09PT09PT09PT09PT09PT09IG1leC10ZXN0Ni5wbzozNiA9PT09PT09PT09PT09PT09PT09PT09PT09CllvdSBmbHkgb24gdGhlIHdpbmdzIG9mIHJvbWFuY2UKLS0tCkRpZSBGbPxnZWwgZGVyIGZyaXNjaGVuIExpZWJlCmhlYmVuIGRpY2ggenVtIEhpbW1lbAoKPT09PT09PT09PT09PT09PT09PT09PT09PSBtZXgtdGVzdDYucG86NDEgPT09PT09PT09PT09PT09PT09PT09PT09PQpJbiB0aGUgZXllcyBvZiB0aGUgd29ybGQKLS0tCkb8ciBkaWUgYW5kZXJlbgoKPT09PT09PT09PT09PT09PT09PT09PT09PSBtZXgtdGVzdDYucG86NDUgPT09PT09PT09PT09PT09PT09PT09PT09PQpZb3UncmUganVzdCBhbm90aGVyIGNyYXp5IGdpcmwKLS0tCmJpc3QgZHUgYmxv3yBlaW4gdmVycvxja3RlcyBkdW1tZXMgRGluZwoKPT09PT09PT09PT09PT09PT09PT09PT09PSBtZXgtdGVzdDYucG86NDggPT09PT09PT09PT09PT09PT09PT09PT09PQpXaG8gbG92ZXMgYSBtYXJyaWVkIG1hbgotLS0KZGFzIGVpbmVuIHZlcmhlaXJhdGV0ZW4gTWFubiBsaWVidAoKRU9GCgo6ICR7RElGRj1kaWZmfQoke0RJRkZ9IG1leC10ZXN0Ni5vayBtZXgtdGVzdDYub3V0CnJlc3VsdD0kPwoKZXhpdCAkcmVzdWx0Cg==