ZGlmZiAtLWdpdCBhL3NyYy93aW5kb3dzL21pbmlfZGlzYXNzZW1ibGVyLmggYi9zcmMvd2luZG93cy9taW5pX2Rpc2Fzc2VtYmxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzYmRjMDYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvd2luZG93cy9taW5pX2Rpc2Fzc2VtYmxlci5oCkBAIC0wLDAgKzEsMTk4IEBACisvLyAtKi0gTW9kZTogQysrOyBjLWJhc2ljLW9mZnNldDogMjsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLQorLyogQ29weXJpZ2h0IChjKSAyMDA3LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiAtLS0KKyAqIEF1dGhvcjogSm9pIFNpZ3VyZHNzb24KKyAqCisgKiBEZWZpbml0aW9uIG9mIE1pbmlEaXNhc3NlbWJsZXIuCisgKi8KKworI2lmbmRlZiBHT09HTEVfUEVSRlRPT0xTX01JTklfRElTQVNTRU1CTEVSX0hfCisjZGVmaW5lIEdPT0dMRV9QRVJGVE9PTFNfTUlOSV9ESVNBU1NFTUJMRVJfSF8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlICJtaW5pX2Rpc2Fzc2VtYmxlcl90eXBlcy5oIgorCisvLyBjb21wYXRpYmlsaXR5IHNoaW0KKyNpbmNsdWRlICJiYXNlL2xvZ2dpbmcuaCIKKyNkZWZpbmUgU0lERVNURVBfQVNTRVJUKGNvbmQpICBSQVdfRENIRUNLKGNvbmQsICNjb25kKQorI2RlZmluZSBTSURFU1RFUF9MT0cobXNnKSAgICAgIFJBV19WTE9HKDEsIG1zZykKKworbmFtZXNwYWNlIHNpZGVzdGVwIHsKKworLy8gVGhpcyBzbWFsbCBkaXNhc3NlbWJsZXIgaXMgdmVyeSBsaW1pdGVkCisvLyBpbiBpdHMgZnVuY3Rpb25hbGl0eSwgYW5kIGluIGZhY3QgZG9lcyBvbmx5IHRoZSBiYXJlIG1pbmltdW0gcmVxdWlyZWQgYnkgdGhlCisvLyBwcmVhbWJsZSBwYXRjaGluZyB1dGlsaXR5LiAgSXQgbWF5IGJlIHVzZWZ1bCBmb3Igb3RoZXIgcHVycG9zZXMsIGhvd2V2ZXIuCisvLworLy8gVGhlIGxpbWl0YXRpb25zIGluY2x1ZGUgYXQgbGVhc3QgdGhlIGZvbGxvd2luZzoKKy8vICAtIyBObyBzdXBwb3J0IGZvciBjb3Byb2Nlc3NvciBvcGNvZGVzLCBNTVgsIGV0Yy4KKy8vICAtIyBObyBtYWNoaW5lLXJlYWRhYmxlIGlkZW50aWZpY2F0aW9uIG9mIG9wY29kZXMgb3IgZGVjb2Rpbmcgb2YKKy8vICAgICBhc3NlbWJseSBwYXJhbWV0ZXJzLiBUaGUgbmFtZSBvZiB0aGUgb3Bjb2RlIChhcyBhIHN0cmluZykgaXMgZ2l2ZW4sCisvLyAgICAgaG93ZXZlciwgdG8gYWlkIGRlYnVnZ2luZy4KKy8vCisvLyBZb3UgbWF5IGFzayB3aGF0IHRoaXMgbGl0dGxlIGRpc2Fzc2VtYmxlciBhY3R1YWxseSBkb2VzLCB0aGVuPyAgVGhlIGFuc3dlciBpcworLy8gdGhhdCBpdCBkb2VzIHRoZSBmb2xsb3dpbmcsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCB0aGUgcGF0Y2hpbmcgdXRpbGl0eSBuZWVkczoKKy8vICAtIyBJbmRpY2F0ZXMgaWYgb3Bjb2RlIGlzIGEganVtcCAoYW55IGtpbmQpIG9yIGEgcmV0dXJuIChhbnkga2luZCkKKy8vICAgICBiZWNhdXNlIHRoaXMgaXMgaW1wb3J0YW50IGZvciB0aGUgcGF0Y2hpbmcgdXRpbGl0eSB0byBkZXRlcm1pbmUgaWYKKy8vICAgICBhIGZ1bmN0aW9uIGlzIHRvbyBzaG9ydCBvciB0aGVyZSBhcmUganVtcHMgdG9vIGVhcmx5IGluIGl0IGZvciBpdAorLy8gICAgIHRvIGJlIHByZWFtYmxlIHBhdGNoZWQuCisvLyAgLSMgVGhlIG9wY29kZSBsZW5ndGggaXMgYWx3YXlzIGNhbGN1bGF0ZWQsIHNvIHRoYXQgdGhlIHBhdGNoaW5nIHV0aWxpdHkKKy8vICAgICBjYW4gZmlndXJlIG91dCB3aGVyZSB0aGUgbmV4dCBpbnN0cnVjdGlvbiBzdGFydHMsIGFuZCB3aGV0aGVyIGl0CisvLyAgICAgYWxyZWFkeSBoYXMgZW5vdWdoIGluc3RydWN0aW9ucyB0byByZXBsYWNlIHdpdGggdGhlIGFic29sdXRlIGp1bXAKKy8vICAgICB0byB0aGUgcGF0Y2hpbmcgY29kZS4KKy8vCisvLyBUaGUgdXNhZ2UgaXMgcXVpdGUgc2ltcGxlOyBqdXN0IGNyZWF0ZSBhIE1pbmlEaXNhc3NlbWJsZXIgYW5kIHVzZSBpdHMKKy8vIERpc2Fzc2VtYmxlKCkgbWV0aG9kLgorLy8KKy8vIElmIHlvdSB3b3VsZCBsaWtlIHRvIGV4dGVuZCB0aGlzIGRpc2Fzc2VtYmxlciwgcGxlYXNlIHJlZmVyIHRvIHRoZQorLy8gSUEtMzIgSW50ZWyuIEFyY2hpdGVjdHVyZSBTb2Z0d2FyZSBEZXZlbG9wZXKScyBNYW51YWwgVm9sdW1lIDI6CisvLyBJbnN0cnVjdGlvbiBTZXQgUmVmZXJlbmNlIGZvciBpbmZvcm1hdGlvbiBhYm91dCBvcGVyYW5kIGRlY29kaW5nCisvLyBldGMuCitjbGFzcyBQRVJGVE9PTFNfRExMX0RFQ0wgTWluaURpc2Fzc2VtYmxlciB7CisgcHVibGljOgorCisgIC8vIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2UgYW5kIHNldHMgZGVmYXVsdHMuCisgIC8vCisgIC8vIEBwYXJhbSBvcGVyYW5kX2RlZmF1bHRfMzJfYml0cyBJZiB0cnVlLCB0aGUgZGVmYXVsdCBvcGVyYW5kIHNpemUgaXMKKyAgLy8gc2V0IHRvIDMyIGJpdHMsIHdoaWNoIGlzIHRoZSBkZWZhdWx0IHVuZGVyIFdpbjMyLiBPdGhlcndpc2UgaXQgaXMgMTYgYml0cy4KKyAgLy8gQHBhcmFtIGFkZHJlc3NfZGVmYXVsdF8zMl9iaXRzIElmIHRydWUsIHRoZSBkZWZhdWx0IGFkZHJlc3Mgc2l6ZSBpcworICAvLyBzZXQgdG8gMzIgYml0cywgd2hpY2ggaXMgdGhlIGRlZmF1bHQgdW5kZXIgV2luMzIuIE90aGVyd2lzZSBpdCBpcyAxNiBiaXRzLgorICBNaW5pRGlzYXNzZW1ibGVyKGJvb2wgb3BlcmFuZF9kZWZhdWx0XzMyX2JpdHMsCisgICAgICAgICAgICAgICAgICAgYm9vbCBhZGRyZXNzX2RlZmF1bHRfMzJfYml0cyk7CisKKyAgLy8gRXF1aXZhbGVudCB0byBNaW5pRGlzYXNzZW1ibGVyKHRydWUsIHRydWUpOworICBNaW5pRGlzYXNzZW1ibGVyKCk7CisKKyAgLy8gQXR0ZW1wdHMgdG8gZGlzYXNzZW1ibGUgYSBzaW5nbGUgaW5zdHJ1Y3Rpb24gc3RhcnRpbmcgZnJvbSB0aGUKKyAgLy8gYWRkcmVzcyBpbiBtZW1vcnkgaXQgaXMgcG9pbnRlZCB0by4KKyAgLy8KKyAgLy8gQHBhcmFtIHN0YXJ0IEFkZHJlc3Mgd2hlcmUgZGlzYXNzZW1ibHkgc2hvdWxkIHN0YXJ0LgorICAvLyBAcGFyYW0gaW5zdHJ1Y3Rpb25fYnl0ZXMgVmFyaWFibGUgdGhhdCB3aWxsIGJlIDxiPmluY3JlbWVudGVkPC9iPiBieQorICAvLyB0aGUgbGVuZ3RoIGluIGJ5dGVzIG9mIHRoZSBpbnN0cnVjdGlvbi4KKyAgLy8gQHJldHVybiBlbkl0SnVtcCwgZW5JdFJldHVybiBvciBlbkl0R2VuZXJpYyBvbiBzdWNjZXNzLiAgZW5JdFVua25vd24KKyAgLy8gaWYgdW5hYmxlIHRvIGRpc2Fzc2VtYmxlLCBlbkl0VW51c2VkIGlmIHRoaXMgc2VlbXMgdG8gYmUgYW4gdW51c2VkCisgIC8vIG9wY29kZS4gSW4gdGhlIGxhc3QgdHdvIChlcnJvcikgY2FzZXMsIGNiSW5zdHJ1Y3Rpb24gd2lsbCBiZSBzZXQKKyAgLy8gdG8gMHhmZmZmZmZmZi4KKyAgLy8KKyAgLy8gQHBvc3QgVGhpcyBpbnN0YW5jZSBvZiB0aGUgZGlzYXNzZW1ibGVyIGlzIHJlYWR5IHRvIGJlIHVzZWQgYWdhaW4sCisgIC8vIHdpdGggdW5jaGFuZ2VkIGRlZmF1bHRzIGZyb20gY3JlYXRpb24gdGltZS4KKyAgSW5zdHJ1Y3Rpb25UeXBlIERpc2Fzc2VtYmxlKHVuc2lnbmVkIGNoYXIqIHN0YXJ0LCB1bnNpZ25lZCBpbnQmIGluc3RydWN0aW9uX2J5dGVzKTsKKworIHByaXZhdGU6CisKKyAgLy8gTWFrZXMgdGhlIGRpc2Fzc2VtYmxlciByZWFkeSBmb3IgcmV1c2UuCisgIHZvaWQgSW5pdGlhbGl6ZSgpOworCisgIC8vIFNldHMgdGhlIGZsYWdzIGZvciBhZGRyZXNzIGFuZCBvcGVyYW5kIHNpemVzLgorICAvLyBAcmV0dXJuIE51bWJlciBvZiBwcmVmaXggYnl0ZXMuCisgIEluc3RydWN0aW9uVHlwZSBQcm9jZXNzUHJlZml4ZXModW5zaWduZWQgY2hhciogc3RhcnQsIHVuc2lnbmVkIGludCYgc2l6ZSk7CisKKyAgLy8gU2V0cyB0aGUgZmxhZyBmb3Igd2hldGhlciB3ZSBoYXZlIE1vZFIvTSwgYW5kIGluY3JlbWVudHMKKyAgLy8gb3BlcmFuZF9ieXRlc18gaWYgYW55IGFyZSBzcGVjaWZpZXMgYnkgdGhlIG9wY29kZSBkaXJlY3RseS4KKyAgLy8gQHJldHVybiBOdW1iZXIgb2Ygb3Bjb2RlIGJ5dGVzLgorICBJbnN0cnVjdGlvblR5cGUgUHJvY2Vzc09wY29kZSh1bnNpZ25lZCBjaGFyKiBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQmIHNpemUpOworCisgIC8vIENoZWNrcyB0aGUgdHlwZSBvZiB0aGUgc3VwcGxpZWQgb3BlcmFuZC4gIEluY3JlbWVudHMKKyAgLy8gb3BlcmFuZF9ieXRlc18gaWYgaXQgZGlyZWN0bHkgaW5kaWNhdGVzIGFuIGltbWVkaWF0ZSBldGMuCisgIC8vIG9wZXJhbmQuICBBc3NlcnRzIGhhdmVfbW9kcm1fIGlmIHRoZSBvcGVyYW5kIHNwZWNpZmllcworICAvLyBhIE1vZFIvTSBieXRlLgorICBib29sIFByb2Nlc3NPcGVyYW5kKGludCBmbGFnX29wZXJhbmQpOworCisgIC8vIEluY3JlbWVudHMgb3BlcmFuZF9ieXRlc18gYnkgc2l6ZSBzcGVjaWZpZWQgYnkgTW9kUi9NIGFuZAorICAvLyBieSBTSUIgaWYgcHJlc2VudC4KKyAgLy8gQHJldHVybiAwIGluIGNhc2Ugb2YgZXJyb3IsIDEgaWYgdGhlcmUgaXMganVzdCBhIE1vZFIvTSBieXRlLAorICAvLyAyIGlmIHRoZXJlIGlzIGEgTW9kUi9NIGJ5dGUgYW5kIGEgU0lCIGJ5dGUuCisgIGJvb2wgUHJvY2Vzc01vZHJtKHVuc2lnbmVkIGNoYXIqIHN0YXJ0LCB1bnNpZ25lZCBpbnQmIHNpemUpOworCisgIC8vIFByb2Nlc3NlcyB0aGUgU0lCIGJ5dGUgdGhhdCBpdCBpcyBwb2ludGVkIHRvLgorICAvLyBAcGFyYW0gc3RhcnQgUG9pbnRlciB0byB0aGUgU0lCIGJ5dGUuCisgIC8vIEBwYXJhbSBtb2QgVGhlIG1vZCBmaWVsZCBmcm9tIHRoZSBNb2RSL00gYnl0ZS4KKyAgLy8gQHJldHVybiAxIHRvIGluZGljYXRlIHN1Y2Nlc3MgKGluZGljYXRlcyAxIFNJQiBieXRlKQorICBib29sIFByb2Nlc3NTaWIodW5zaWduZWQgY2hhciogc3RhcnQsIHVuc2lnbmVkIGNoYXIgbW9kLCB1bnNpZ25lZCBpbnQmIHNpemUpOworCisgIC8vIFRoZSBpbnN0cnVjdGlvbiB0eXBlIHdlIGhhdmUgZGVjb2RlZCBmcm9tIHRoZSBvcGNvZGUuCisgIEluc3RydWN0aW9uVHlwZSBpbnN0cnVjdGlvbl90eXBlXzsKKworICAvLyBDb3VudHMgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IGlzIG9jY3VwaWVkIGJ5IG9wZXJhbmRzIGluCisgIC8vIHRoZSBjdXJyZW50IGluc3RydWN0aW9uIChub3RlOiB3ZSBkb24ndCBjYXJlIGFib3V0IGhvdyBsYXJnZQorICAvLyBvcGVyYW5kcyBzdG9yZWQgaW4gcmVnaXN0ZXJzIGV0Yy4gYXJlKS4KKyAgdW5zaWduZWQgaW50IG9wZXJhbmRfYnl0ZXNfOworCisgIC8vIFRydWUgaWZmIHRoZXJlIGlzIGEgTW9kUi9NIGJ5dGUgaW4gdGhpcyBpbnN0cnVjdGlvbi4KKyAgYm9vbCBoYXZlX21vZHJtXzsKKworICAvLyBUcnVlIGlmZiB3ZSBuZWVkIHRvIGRlY29kZSB0aGUgTW9kUi9NIGJ5dGUgKHNvbWV0aW1lcyBpdCBqdXN0CisgIC8vIHBvaW50cyB0byBhIHJlZ2lzdGVyLCB3ZSBjYW4gdGVsbCBieSB0aGUgYWRkcmVzc2luZyBtb2RlKS4KKyAgYm9vbCBzaG91bGRfZGVjb2RlX21vZHJtXzsKKworICAvLyBDdXJyZW50IG9wZXJhbmQgc2l6ZSBpcyAzMiBiaXRzIGlmIHRydWUsIDE2IGJpdHMgaWYgZmFsc2UuCisgIGJvb2wgb3BlcmFuZF9pc18zMl9iaXRzXzsKKworICAvLyBEZWZhdWx0IG9wZXJhbmQgc2l6ZSBpcyAzMiBiaXRzIGlmIHRydWUsIDE2IGJpdHMgaWYgZmFsc2UuCisgIGJvb2wgb3BlcmFuZF9kZWZhdWx0X2lzXzMyX2JpdHNfOworCisgIC8vIEN1cnJlbnQgYWRkcmVzcyBzaXplIGlzIDMyIGJpdHMgaWYgdHJ1ZSwgMTYgYml0cyBpZiBmYWxzZS4KKyAgYm9vbCBhZGRyZXNzX2lzXzMyX2JpdHNfOworCisgIC8vIERlZmF1bHQgYWRkcmVzcyBzaXplIGlzIDMyIGJpdHMgaWYgdHJ1ZSwgMTYgYml0cyBpZiBmYWxzZS4KKyAgYm9vbCBhZGRyZXNzX2RlZmF1bHRfaXNfMzJfYml0c187CisKKyAgLy8gRGV0ZXJtaW5lcyBpZiA2NCBiaXQgb3BlcmFuZHMgYXJlIHN1cHBvcnRlZCAoeDY0KS4KKyAgYm9vbCBvcGVyYW5kX2RlZmF1bHRfc3VwcG9ydF82NF9iaXRzXzsKKworICAvLyBDdXJyZW50IG9wZXJhbmQgc2l6ZSBpcyA2NCBiaXRzIGlmIHRydWUsIDMyIGJpdHMgaWYgZmFsc2UuCisgIGJvb2wgb3BlcmFuZF9pc182NF9iaXRzXzsKKworICAvLyBIdWdlIGJpZyBvcGNvZGUgdGFibGUgYmFzZWQgb24gdGhlIElBLTMyIG1hbnVhbCwgZGVmaW5lZAorICAvLyBpbiBJYTMyT3Bjb2RlTWFwLmNjCisgIHN0YXRpYyBjb25zdCBPcGNvZGVUYWJsZSBzX2lhMzJfb3Bjb2RlX21hcF9bXTsKKworICAvLyBTb21ld2hhdCBzbWFsbGVyIHRhYmxlIHRvIGhlbHAgd2l0aCBkZWNvZGluZyBNb2RSL00gYnl0ZXMKKyAgLy8gd2hlbiAxNi1iaXQgYWRkcmVzc2luZyBtb2RlIGlzIGJlaW5nIHVzZWQuICBEZWZpbmVkIGluCisgIC8vIElhMzJNb2RybU1hcC5jYworICBzdGF0aWMgY29uc3QgTW9kcm1FbnRyeSBzX2lhMTZfbW9kcm1fbWFwX1tdOworCisgIC8vIFNvbWV3aGF0IHNtYWxsZXIgdGFibGUgdG8gaGVscCB3aXRoIGRlY29kaW5nIE1vZFIvTSBieXRlcworICAvLyB3aGVuIDMyLWJpdCBhZGRyZXNzaW5nIG1vZGUgaXMgYmVpbmcgdXNlZC4gIERlZmluZWQgaW4KKyAgLy8gSWEzMk1vZHJtTWFwLmNjCisgIHN0YXRpYyBjb25zdCBNb2RybUVudHJ5IHNfaWEzMl9tb2RybV9tYXBfW107CisKKyAgLy8gSW5kaWNhdG9ycyBvZiB3aGV0aGVyIHdlIGdvdCBjZXJ0YWluIHByZWZpeGVzIHRoYXQgY2VydGFpbgorICAvLyBzaWxseSBJbnRlbCBpbnN0cnVjdGlvbnMgZGVwZW5kIG9uIGluIG5vbnN0YW5kYXJkIHdheXMgZm9yCisgIC8vIHRoZWlyIGJlaGF2aW9ycy4KKyAgYm9vbCBnb3RfZjJfcHJlZml4XywgZ290X2YzX3ByZWZpeF8sIGdvdF82Nl9wcmVmaXhfOworfTsKKworfTsgIC8vIG5hbWVzcGFjZSBzaWRlc3RlcAorCisjZW5kaWYgIC8vIEdPT0dMRV9QRVJGVE9PTFNfTUlOSV9ESVNBU1NFTUJMRVJfSF8K