Li4gQWxnb3JpdGhtcy9JbnNlcnRlcnMvL2JhY2tfaW5zZXJ0ZXIKCmJhY2tfaW5zZXJ0ZXIKPT09PT09PT09PT09PQoKU3lub3BzaXMKLS0tLS0tLS0KCi4uIHBhcnNlZC1saXRlcmFsOjoKICAgIAogICAgdGVtcGxhdGU8CiAgICAgICAgICB0eXBlbmFtZSBTZXEKICAgICAgICA+CiAgICBzdHJ1Y3QgYmFja19pbnNlcnRlcgogICAgewogICAgICAgIC8vIHx1bnNwZWNpZmllZHwKICAgICAgICAvLyB8Li4ufAogICAgfTsKCgpEZXNjcmlwdGlvbgotLS0tLS0tLS0tLQoKSW5zZXJ0cyBlbGVtZW50cyBhdCB0aGUgZW5kIG9mIHRoZSBzZXF1ZW5jZS4KCkhlYWRlcgotLS0tLS0KCi4uIHBhcnNlZC1saXRlcmFsOjoKICAgIAogICAgI2luY2x1ZGUgPGJvb3N0L21wbC9iYWNrX2luc2VydGVyLmhwcD4KCk1vZGVsIG9mCi0tLS0tLS0tCgp8SW5zZXJ0ZXJ8CgoKUGFyYW1ldGVycwotLS0tLS0tLS0tCgorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwp8IFBhcmFtZXRlciAgICAgfCBSZXF1aXJlbWVudCAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorPT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kwp8IGBgU2VxYGAgICAgICAgfCB8QmFjayBFeHRlbnNpYmxlIFNlcXVlbmNlfCAgICB8IEEgc2VxdWVuY2UgdG8gYmluZCB0aGUgaW5zZXJ0ZXIgdG8uICAgfAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwoKCkV4cHJlc3Npb24gc2VtYW50aWNzCi0tLS0tLS0tLS0tLS0tLS0tLS0tCgp8U2VtYW50aWNzIGRpc2NsYWltZXIuLi58IHxJbnNlcnRlcnwuCgpGb3IgYW55IHxCYWNrIEV4dGVuc2libGUgU2VxdWVuY2V8IGBgc2BgOgoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwp8IEV4cHJlc3Npb24gICAgICAgICAgICAgICAgfCBTZW1hbnRpY3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKfCBgYGJhY2tfaW5zZXJ0ZXI8cz5gYCAgICAgIHwgQW4gfEluc2VydGVyfCBgYGluYGAsIGVxdWl2YWxlbnQgdG8gICAgICAgICAgICAgICAgICAgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IC4uIHBhcnNlZC1saXRlcmFsOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIHN0cnVjdCBpbiA6IGluc2VydGVyPHMscHVzaF9iYWNrPF8xLF8yPiA+IHt9OyAgICAgICB8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKCgpDb21wbGV4aXR5Ci0tLS0tLS0tLS0KCkFtb3J0aXplZCBjb25zdGFudCB0aW1lLgoKCkV4YW1wbGUKLS0tLS0tLQoKLi4gcGFyc2VkLWxpdGVyYWw6OgoKICAgIHR5cGVkZWYgY29weTwKICAgICAgICAgIHJhbmdlX2M8aW50LDUsMTA+CiAgICAgICAgLCBiYWNrX2luc2VydGVyPCB2ZWN0b3JfYzxpbnQsMCwxLDIsMyw0PiA+CiAgICAgICAgPjo6dHlwZSByYW5nZTsKICAgICAgIAogICAgQk9PU1RfTVBMX0FTU0VSVCgoIGVxdWFsPCByYW5nZSwgcmFuZ2VfYzxpbnQsMCwxMD4gPiApKTsKCgpTZWUgYWxzbwotLS0tLS0tLQoKfEFsZ29yaXRobXN8LCB8SW5zZXJ0ZXJ8LCB8UmV2ZXJzaWJsZSBBbGdvcml0aG18LCB8W2luc2VydGVyXXwsIHxmcm9udF9pbnNlcnRlcnwsIHxwdXNoX2JhY2t8CgoKLi4gY29weXJpZ2h0OjogQ29weXJpZ2h0IKkgIDIwMDEtMjAwOSBBbGVrc2V5IEd1cnRvdm95IGFuZCBEYXZpZCBBYnJhaGFtcwogICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCiAgIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQo=