IyBDSE5fMV9odW1hbl8yMDA2X3BvcHVsYXRpb24ucHJvcGVydGllcyAKIyBUaGlzIGZpbGUgY29udGFpbnMgcG9wdWxhdGlvbiB2YWx1ZXMgZm9yIENISU5BCiMKIyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiMgKiBDb3B5cmlnaHQgKGMpIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMsIDIwMTQsIDIwMTUsIDIwMTYsIDIwMTcsIDIwMTgKIyAqIElCTSBDb3Jwb3JhdGlvbiwgQmZSLCBhbmQgb3RoZXJzLgojICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwojICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCiMgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAojICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKIyAqCiMgKiBDb250cmlidXRvcnM6CiMgKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uIGFuZCBuZXcgZmVhdHVyZXMKIyAqICAgICBCdW5kZXNpbnN0aXR1dCBm/HIgUmlzaWtvYmV3ZXJ0dW5nIC0gUGFqZWsgR3JhcGggaW50ZXJmYWNlLCBuZXcgVmV0ZXJpbmFyeSBNb2RlbHMKIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCiMgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIyAqIEtleSBGb3JtYXQ6IAojICogCiMgKiAJIEZvciBsZXZlbCAxIGRhdGEsIHRoZSBrZXkgaXMgdGhlIElTTzMxNjYtMiBjb2RlLiBBbiBJU08zMTY2LTIgY29kZSBpcyBjb21wb3NlZCBhcyBmb2xsb3dzOiAKIyAqIGEgdHdvIGxldHRlciBjb3VudHJ5IGNvZGUgZm9sbG93ZWQgYnkgdXAgdG8gdGhyZWUgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgZm9yIHRoZSBsZXZlbCAxIGFkbWluaXN0cmF0aW9uLgojICoKIyAqIAkgRm9yIGxldmVsIDIgZGF0YSwgdGhlIGtleSBpcyB0aGUgSVNPMzE2Ni0yIGNvZGUgZm9sbG93ZWQgYnkgc2l4IGRpZ2l0cy4gVGhlIGxlZnRtb3N0IHR3byBkaWdpdHMgaW5kaWNhdGUKIyAqIHRoZSBsZXZlbCAxIGNvbnRhaW5lciBvZiBhIGxldmVsIDIgYWRtaW5pc3RyYXRpb24gKGkuZS4gQ2FsaWZvcm5pYSBpcyBhIGxldmVsIDEgY29udGFpbmVyIGZvciBPcmFuZ2UgQ291bnR5CiMgKiB3aGljaCBpcyBhIGxldmVsIDIgYWRtaW5pc3RyYXRpb24pLiAgVGhlIHR3byBkaWdpdHMgd2VyZSB0YWtlbiBmcm9tIGEgbGV4aWNvZ3JhcGhpYyBzb3J0aW5nIG9mIGFsbCB0aGUKIyAqIGxldmVsIDEgYWRtaW5pc3RyYXRpb25zIHdpdGhpbiBhIGNvdW50cnkuIFNpbWlsYXJseSwgdGhlIGZvdXIgbGVmdG1vc3QgZGlnaXRzIGluZGljYXRlIGEgbGV2ZWwgMiBhZG1pbmlzdHJhdGlvbi4KIyAqIEFnYWluLCB0aGVzZSBmb3VyIGRpZ2l0cyBhcmUgYW4gaW5kZXggaW50byB0aGUgbGV4aWNvZ3JhcGhpYyBzb3J0aW5nIG9mIGFsbCBsZXZlbCAyIGFkbWluaXN0cmF0aW9ucyB3aXRoaW4gCiMgKiBhIGxldmVsIDEgYWRtaW5pc3RyYXRpb24uIAojICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCiMgVGhpcyBpcyB0aGUgbmFtZSBvZiB0aGUgY2xhc3MgdGhhdCB3aWxsIGludGVycHJldCB0aGUgcmVzdCBvZiB0aGUgZmlsZSdzIGNvbnRlbnRzClJFQ09SRF9DTEFTU05BTUUgPSBvcmcuZWNsaXBzZS5zdGVtLmludGVybmFsLmRhdGEucmVjb3Jkcy5Db3VudHJ5R3JhcGhSZWNvcmQkQ291bnRyeVBvcHVsYXRpb25MYWJlbEdyYXBoUmVjb3JkCgojIFRoZSBJU08tMzE2Ni0xIGFscGhhMyBjb2RlIGZvciB0aGUgY291bnRyeQpJU09LRVkgPSBDSE4KCiMgVGhlIGFkbWluaXN0cmF0aW9uIGxldmVsIG9mIHRoZSBwb3B1bGF0aW9uIGRhdGEKQURNSU5fTEVWRUwgPSAxCgojIFRoaXMgaXMgdGhlIGRhdGUgcmFuZ2UgZm9yIHdoaWNoIHRoZSBwb3B1bGF0aW9uIHZhbHVlcyBpbiB0aGlzIGZpbGUgYXJlIHZhbGlkIAojIFNlZSBodHRwOi8vcHVybC5vcmcvZGMvdGVybXMvMS4xL3ZhbGlkClZBTElEID0gc3RhcnQ9MjAwNi0wMS0wMTsgZW5kPTIwMDYtMTItMzE7CgojIFRoaXMgaXMgdGhlIHNvdXJjZSBvZiB0aGUgZGF0YQpTT1VSQ0UgPSBodHRwczovL3d3dy5jaWEuZ292L2xpYnJhcnkvcHVibGljYXRpb25zL3RoZS13b3JsZC1mYWN0Ym9vay8KIyBTT1VSQ0UgPSBodHRwOi8vd3d3LnN0YXRzLmdvdi5jbi9lbmdsaXNoL2luZGV4Lmh0bQojIFNPVVJDRSA9IGh0dHBzOi8vd3d3LmNpYS5nb3YvbGlicmFyeS9wdWJsaWNhdGlvbnMvdGhlLXdvcmxkLWZhY3Rib29rLwoKIyBUaGUgcG9wdWxhdGlvbiBpZGVudGlmaWVyClBPUFVMQVRJT04gPSBodW1hbgoKIyBUaGUgeWVhciB0aGUgZGF0YSBpcyB2YWxpZApZRUFSID0gMjAwNgoKIyBTdGF0ZS9Qcm92aW5jZQoKQ04tMzQgPSA2NDYxMDAwMApDTi0wID0gMTQ5MzAwMDAKQ04tNTAgPSAzMTIyMDAwMApDTi0zNSA9IDM1MTEwMDAwCkNOLTYyID0gMjYxOTAwMDAKQ04tNDQgPSA4MzA0MDAwMApDTi00NSA9IDQ4ODkwMDAwCkNOLTUyID0gMzkwNDAwMDAKQ04tNDYgPSA4MTgwMDAwCkNOLTczID0gNjgwOTAwMDAKQ04tMjMgPSAzODE3MDAwMApDTi00ID0gOTcxNzAwMDAKQ04tSEsgPSA3MDQxMDAwCkNOLTQyID0gNjAxNjAwMDAKQ04tNDMgPSA2Njk4MDAwMApDTi1KSyA9IDEwMDY5OTE3CkNOLTMyID0gNzQzMzAwMDAKQ04tMzYgPSA0Mjg0MDAwMApDTi0yMiA9IDI3MDkwMDAwCkNOLUtPVyA9IDIwNzEwMDAKQ04tNzIgPSA0MjE3MDAwMApDTi1NQVIgPSAxNTU2MDAKQ04tNzUgPSAyMzg0MDAwMApDTi1OVCA9IDMzNDMwNDYKQ04tNjQgPSA1ODgwMDAwCkNOLTYzID0gNTM5MDAwMApDTi02ID0gMzcwNTAwMDAKQ04tMzcgPSA5MTgwMDAwMApDTi0zID0gMTc0MjAwMDAKQ04tNzQgPSAzMzM1MDAwMApDTi01ID0gODcyNTAwMDAKQ04tNyA9IDIyODk0Mzg0CkNOLTIgPSAxMDI0MDAwMApDTi02NSA9IDE5NjMwMDAwCkNOLTU0ID0gMjc0MDAwMApDTi01MyA9IDQ0MTUwMDAwCkNOLTMzID0gNDcyMDAwMDAK