Li4gTWV0YWZ1bmN0aW9ucy9Db25jZXB0cy8vVHJpdmlhbCBNZXRhZnVuY3Rpb24gfDcwCgpUcml2aWFsIE1ldGFmdW5jdGlvbgo9PT09PT09PT09PT09PT09PT09PQoKRGVzY3JpcHRpb24KLS0tLS0tLS0tLS0KCkEgfFRyaXZpYWwgTWV0YWZ1bmN0aW9ufCBhY2NlcHRzIGEgc2luZ2xlIGFyZ3VtZW50IG9mIGEgY2xhc3MgdHlwZSBgYHhgYCBhbmQgCnJldHVybnMgdGhlIGBgeGBgXCAncyBuZXN0ZWQgdHlwZSBtZW1iZXIgYGB4OjpuYW1lYGAsIHdoZXJlIGBgbmFtZWBgIGlzCmEgcGxhY2Vob2xkZXIgdG9rZW4gZm9yIHRoZSBhY3R1YWwgbWVtYmVyJ3MgbmFtZSBhY2Nlc3NlZCBieSBhIHNwZWNpZmljIAptZXRhZnVuY3Rpb24ncyBpbnN0YW5jZS4gQnkgY29udmVudGlvbiwgYWxsIGB0cml2aWFsIG1ldGFmdW5jdGlvbnNgX18gaW4gTVBMIAphcmUgbmFtZWQgYWZ0ZXIgdGhlIG1lbWJlcnMgdGhleSBwcm92aWRlIGFzc2VzcyB0by4gRm9yIGluc3RhbmNlLCBhIHxUcml2aWFsCk1ldGFmdW5jdGlvbnwgbmFtZWQgYGBmaXJzdGBgIHJlYWNoZXMgZm9yIHRoZSBgYHhgYFwgJ3MgbmVzdGVkIG1lbWJlciAKYGA6OmZpcnN0YGAuCgpfXyBgVHJpdmlhbCBNZXRhZnVuY3Rpb25zIFN1bW1hcnlgXwoKCkV4cHJlc3Npb24gcmVxdWlyZW1lbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgp8SW4gdGhlIGZvbGxvd2luZyB0YWJsZS4uLnwgYGBuYW1lYGAgaXMgcGxhY2Vob2xkZXIgdG9rZW4gZm9yIHRoZSBuYW1lcyBvZiAKdGhlIHxUcml2aWFsIE1ldGFmdW5jdGlvbnwgaXRzZWxmIGFuZCB0aGUgYWNjZXNzZWQgbWVtYmVyLCBhbmQgYGB4YGAgaXMKYSBjbGFzcyB0eXBlIHN1Y2ggdGhhdCBgYHg6Om5hbWVgYCBpcyBhIHZhbGlkICp0eXBlLW5hbWUqLgoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBFeHByZXNzaW9uICAgICAgICAgICAgICAgIHwgVHlwZSAgICAgICAgICAgICAgfCBDb21wbGV4aXR5ICAgICAgICAgICAgICAgIHwKKz09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PSsKfCBgYG5hbWU8eD46OnR5cGVgYCAgICAgICAgIHwgQW55IHR5cGUgICAgICAgICAgfCBDb25zdGFudCB0aW1lLiAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKCgpFeHByZXNzaW9uIHNlbWFudGljcwotLS0tLS0tLS0tLS0tLS0tLS0tLQoKLi4gcGFyc2VkLWxpdGVyYWw6OgoKICAgIHR5cGVkZWYgbmFtZTx4Pjo6dHlwZSByOwoKOlByZWNvbmRpdGlvbjoKICAgIGBgeDo6bmFtZWBgIGlzIGEgdmFsaWQgKnR5cGUtbmFtZSouCgo6U2VtYW50aWNzOgogICAgYGBpc19zYW1lPHIseDo6bmFtZT46OnZhbHVlID09IHRydWVgYC4KCgpNb2RlbHMKLS0tLS0tCgoqIHxmaXJzdHwKKiB8c2Vjb25kfAoqIHxiYXNlfAoKClNlZSBhbHNvCi0tLS0tLS0tCgp8TWV0YWZ1bmN0aW9uc3wsIHxUcml2aWFsIE1ldGFmdW5jdGlvbnN8LCB8aWRlbnRpdHl8CgoKLi4gY29weXJpZ2h0OjogQ29weXJpZ2h0IKkgIDIwMDEtMjAwOSBBbGVrc2V5IEd1cnRvdm95IGFuZCBEYXZpZCBBYnJhaGFtcwogICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCiAgIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQo=