SENVNSBjb25maWd1cmF0aW9uIGRldGFpbHMgYW5kIHN0YXJ0dXAgc2VxdWVuY2UKCihDKSBDb3B5cmlnaHQgMjAwNyBOZXRzdGFsIE1hc2NoaW5lbiBBRwogICAgTmlrbGF1cyBHaWdlciAoTmlrbGF1cy5HaWdlckBuZXRzdGFsLmNvbSkKClRPRE86Ci0tLS0tCi0gRml4IGVycm9yOiBXYWl0aW5nIGZvciBQSFkgYXV0byBuZWdvdGlhdGlvbiB0byBjb21wbGV0ZS4uLi4uIFRJTUVPVVQgIQogICAgIC0gRG9lcyBub3Qgb2NjdXIgaWYgYm90aCBFTUFDIGFyZSBjb25uZWN0ZWQKLSBGaXggUlRTL0NUUyBwcm9ibGVtIChIVz8pCiAgQ09ORklHX1NFUklBTF9NVUxUSS9DT05GSUdfU0VSSUFMX1NPRlRXQVJFX0ZJRk8gaGFuZ3MgYWZ0ZXIKICBTd2l0Y2hpbmcgdG8gaW50ZXJydXB0IGRyaXZlbiBzZXJpYWwgaW5wdXQgbW9kZQoKQ2F2ZWF0czoKLS0tLS0tLS0KRXJyYXRhIENISVBfODogSW5jb3JyZWN0IFdyaXRlIHRvIEREUiBTRFJBTS4gKHdhcyBub3QgYXBwbGllZCB0byBzZXF1b2lhLmMpCnNlZSBoY3U1LmMuCgoKTWVtb3J5IEJhbmsgMCAtLSBGbGFzaCBjaGlwCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKMHhmZmYwMDAwMCAtIDB4ZmZmZmZmZmYKClRoZSBmbGFzaCBjaGlwIGlzIHJlYWxseSBvbmx5IDUxMktieXRlcywgYnV0IHRoZSBoaWdoIGFkZHJlc3MgYml0IG9mCnRoZSAxTWVnIHJlZ2lvbiBpcyBpZ25vcmVkLCBzbyB0aGUgZmxhc2ggaXMgcmVwbGljYXRlZCB0aHJvdWdoIHRoZQpyZWdpb24uIFRodXMsIHRoaXMgaXMgY29uc2lzdGVudCB3aXRoIGEgZmxhc2ggYmFzZSBhZGRyZXNzIDB4ZmZmODAwMDAuCgpUaGUgcGxhY2VtZW50IGF0IHRoZSBlbmQgaXMgdG8gYmUgY29uc2lzdGVudCB3aXRoIHJlc2V0IGJlaGF2aW9yLAp3aGVyZSB0aGUgcHJvY2Vzc29yIGl0c2VsZiBpbml0aWFsbHkgdXNlcyB0aGlzIGJ1cyB0byBsb2FkIHRoZSBicmFuY2gKdmVjdG9yIGFuZCBzdGFydCBydW5uaW5nLgoKT24tQ2hpcCBNZW1vcnkKLS0tLS0tLS0tLS0tLS0KCjB4ZTAwMTAwMDAtIDB4ZTAwMTNmZmYgICBDT05GSUdfU1lTX09DTV9CQVNFClRoZSA0NDBFUHggaW5jbHVkZXMgYSAxNksgb24tY2hpcCBtZW1vcnkgdGhhdCBjYW4gYmUgcGxhY2VkIGhvd2V2ZXIKc29mdHdhcmUgY2hvb3Nlcy4KCkludGVybmFsIFBlcmlwaGVyYWxzCi0tLS0tLS0tLS0tLS0tLS0tLS0tCgoweGVmNjAwMzAwIC0gMHhlZjYwMDhmZgoKVGhlc2UgYXJlIHNjYXR0ZXJlZCB2YXJpb3VzIHBlcmlwaGVyYWxzIGludGVybmFsIHRvIHRoZSBQUEM0NDBFUFgKY2hpcC4KCkNoaXAtU2VsZWN0IDI6IEZsYXNoIE1lbW9yeQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk5vdCB1c2VkCgpDaGlwLVNlbGVjdCAzOiBDQU4gSW50ZXJmYWNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMHhjODAwMDAwOiAyIEludGVsIDgyNTI3IENBTi1Db250cm9sbGVyCgoKQ2hpcC1TZWxlY3QgNDogSU1DLWJ1cyBzdGFuZGFyZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoweGNjMDAwMDA6IE5ldHN0YWwgc3BlY2lmaWMgSU8tQnVzCgoKQ2hpcC1TZWxlY3QgNTogSU1DLWJ1cyBmYXN0IChpbmFjdGl2ZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCjB4Y2UwMDAwMDogTmV0c3RhbCBzcGVjaWZpYyBJTy1CdXMgKGZhc3QsIGJ1dCBub3QgeWV0IHVzZWQpCgoKTWVtb3J5IEJhbmsgMSAtLSBERFIyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCjB4MDAwMDAwMDAgLSAweGZmZmZmZmYgICAjIERlZmF1bHQgMjU2IE1CCgpQQ0kgPz8KClVTQiA/PwpPbmx5IFVTQl9TVE9SQUdFIGlzIGVuYWJsZWQgdG8gbG9hZCB2eFdvcmtzCmZyb20gYSBtZW1vcnkgc3RpY2suCgpTeXN0ZW0tTEVEcyA/Pz8gKEFuYWxvZyB6dSBIQ1U0ID8/PykKClN0YXJ0dXAgc2VxdWVuY2UKLS0tLS0tLS0tLS0tLS0tLQoKKGNwdS9wcGM0eHgvcmVzZXR2ZWMuUykKZGVwZW5kaW5nIG9uIGNvbmZpZ3Mgb3B0aW9uCmNhbGwgX3N0YXJ0XzQ0MCBfc3RhcnRfcGNpIG9kZXIgX3N0YXJ0CgooY3B1L3BwYzR4eC9zdGFydC5TKQoKX3N0YXJ0XzQ0MDoKCWluaXRpYWxpemUgcmVnaXN0ZXIgbGlrZQoJQ0NSMAoJZGVidWcKCXNldHVwIGludGVycnVwdCB2ZWN0b3JzCgljb25maWd1cmUgY2FjaGUgcmVnaW9ucwoJY2xlYXIgYW5kIHNldHVwIFRMQgoJZW5hYmxlIGludGVybmFsIFJBTQoJanVtcCBzdGFydF9yYW0KCXdoaWNoIGluIHR1cm4gd2lsbCBqdW1wIHRvIHN0YXJ0Cl9zdGFydDoKCUNsZWFyIGFuZCBzZXQgdXAgc29tZSByZWdpc3RlcnMuCglEZWJ1ZyBzZXR1cAoJU2V0dXAgdGhlIGludGVybmFsIFNSQU0KCVNldHVwIHRoZSBzdGFjayBpbiBpbnRlcm5hbCBTUkFNCiAgICBzZXR1cCBzdGFjayBwb2ludGVyIChyMSkKICAgIHNldHVwIEdPVAoJY2FsbCBjcHVfaW5pdF9mCS8qIHJ1biBsb3ctbGV2ZWwgQ1BVIGluaXQgY29kZQkgICAoZnJvbSBGbGFzaCkgKi8KCiAgICBjYWxsIGNwdV9pbml0X2YKICAgIGJvYXJkX2luaXRfZjogKGxpYl9wcGNcYm9hcmQuYykKCWluaXRfc2VxdWVuY2UgZGVmaW5lcyBhIGxpc3Qgb2YgZnVuY3Rpb24gdG8gYmUgY2FsbGVkCgkgICAgYm9hcmRfZWFybHlfaW5pdF9mOiAoYm9hcmQvbmV0c3RhbC9oY3U1L2hjdTUuYykKCQlXZSBhcmUgdXNpbmcgQm9vdHN0cmFwLU9wdGlvbiBBCgkJaWYgQ1BSMF9JQ0ZHX1JMSV9NQVNLID09IDAgdGhlbiBzZXQgc29tZSByZWdpc3RlcnMgYW5kIHJlYm9vdAoJCVNldHVwIHRoZSBHUElPIHBpbnMKCQlTZXR1cCB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgcG9sYXJpdGllcywgdHJpZ2dlcnMsIGV0Yy4KCQlFdGhlcm5ldCwgUENJLCBVU0IgZW5hYmxlCgkJc2V0dXAgQk9PVCBGTEFTSCAoQ2hpcCB0aW1pbmcpCgkgICAgaW5pdF9iYXVkcmF0ZSwKCSAgICBzZXJpYWxfaW5pdAoJICAgIGNoZWNrY3B1CgkgICAgbWlzY19pbml0X2YgI2lmZGVmCgkgICAgaW5pdF9mdW5jX2kyYyAjaWZkZWYKCSAgICBwb3N0X2luaXRfZiAgI2lmZGVmCgkgICAgaW5pdF9mdW5jX3JhbSAtPiBjYWxscyBpbml0X2RyYW0gYm9hcmQvbmV0c3RhbC9oY3U1L3NkcmFtLmMKCQkoRVlFIGZ1bmN0aW9uIHJlbW92ZWQhISkKCSAgICB0ZXN0X2RyYW0gY2FsbAoKCSAqIFJlc2VydmUgbWVtb3J5IGF0IGVuZCBvZiBSQU0gZm9yICh0b3AgZG93biBpbiB0aGF0IG9yZGVyKToKCSAqICAtIGtlcm5lbCBsb2cgYnVmZmVyCgkgKiAgLSBwcm90ZWN0ZWQgUkFNCgkgKiAgLSBMQ0QgZnJhbWVidWZmZXIKCSAqICAtIG1vbml0b3IgY29kZQoJICogIC0gYm9hcmQgaW5mbyBzdHJ1Y3QKCVNhdmUgbG9jYWwgdmFyaWFibGVzIHRvIGJvYXJkIGluZm8gc3RydWN0CgljYWxsIHJlbG9jYXRlX2NvZGUoKSBkb2VzIG5vdCByZXR1cm4KCXJlbG9jYXRlX2NvZGU6IChjcHUvcHBjNHh4L3N0YXJ0LlMpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRnJvbSBub3cgb24gb3VyIGNvcHkgaXMgaW4gUkFNIGFuZCB3ZSB3aWxsIHJ1biBmcm9tIHRoZXJlLAoJc3RhcnRpbmcgd2l0aCBib2FyZF9pbml0X3IKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgYm9hcmRfaW5pdF9yOiAobGliX3BwY1xib2FyZC5jKQoJc2V0dXAgYmQgZnVuY3Rpb24gcG9pbnRlcnMKCXRyYXBfaW5pdAoJZmxhc2hfaW5pdDogKGJvYXJkL25ldHN0YWwvaGN1NS9mbGFzaC5jKQoJCS8qIHNldHVwIGZvciB1LWJvb3QgZXJhc2UsIHVwZGF0ZSAqLwoJc2V0dXAgYmQgZmxhc2ggaW5mbwoJY3B1X2luaXRfcjogKGNwdS9wcGM0eHgvY3B1X2luaXQuYykKCSAgICBwZXJpcGhlcmFsIGNoaXAgc2VsZWN0IGluIHVzaW5nIGRlZmluZXMgbGlrZQoJICAgIENPTkZJR19TWVNfRUJDX1BCMEEsIENPTkZJR19TWVNfRUJDX1BCMEMgZnJvbSBoY3U1LmgKCW1lbV9tYWxsb2NfaW5pdAoJbWFsbG9jX2Jpbl9yZWxvYwoJc3BpX2luaXQgKHIgb3IgZik/Pz8gKENPTkZJR19FTlZfSVNfSU5fRUVQUk9NKQoJZW52X3JlbG9jYXRlZAoJbWlzY19pbml0X3IoYmQpOiAoYm9hcmQvbmV0c3RhbC9oY3U1LmMpCgkgICAgZXRoYWRkciBtaXQgc2VyaWFsIG51bWJlciBlcmfkbnplbgogICAgVGhlbiB3ZSB3aWxsIHNvbWVob3cgZ28gaW50byB0aGUgY29tbWFuZCBsb29wCgpNb3N0IG9mIHRoZSBIVyBzcGVjaWZpYyBjb2RlIGZvciB0aGUgSENVNSBtYXkgYmUgZm91bmQgaW4KaW5jbHVkZS9jb25maWdzL2hjdTUuaApib2FyZC9uZXRzdGFsL2hjdTUvKgpjcHUvcHBjNHh4LyoKbGliX3BwYy8qCmluY2x1ZGUvcHBjNDQwLmgKCkRyaXZlcnMgZm9yIHNlcmlhbCBldGMgYXJlIGZvdW5kIHVuZGVyIGRyaXZlcnMvCgpEb24ndCBhc2sgcXVlc3Rpb24gaWYgeW91IGRpZCBub3QgbG9vayBhdCB0aGUgUkVBRE1FICEhCk1vc3QgQ09ORklHX1NZU18qIGFuZCBDT05GSUdfKiBzd2l0Y2hlcyBhcmUgbWVudGlvbmVkL2V4cGxhaW5lZCB0aGVyZS4K