LyoKICogc2JwY2QuaCAgIFNwZWNpZnkgaW50ZXJmYWNlIGFkZHJlc3MgYW5kIGludGVyZmFjZSB0eXBlIGhlcmUuCiAqLwoKLyoKICogQXR0ZW50aW9uISBUaGlzIGZpbGUgY29udGFpbnMgdXNlci1zZXJ2aWNlYWJsZSBwYXJ0cyEKICogSSByZWNvbW1lbmQgdG8gbWFrZSB1c2Ugb2YgaXQuLi4KICogSWYgeW91IGZlZWwgaGVscGxlc3MsIGxvb2sgaW50byBEb2N1bWVudGF0aW9uL2Nkcm9tL3NicGNkCiAqIChnb29kIGlkZWEgYW55d2F5LCBhdCBsZWFzdCBiZWZvcmUgbWFpbGluZyBtZSkuCiAqCiAqIFRoZSBkZWZpbml0aW9ucyBmb3IgdGhlIGZpcnN0IGNvbnRyb2xsZXIgY2FuIGdldCBvdmVycmlkZGVuIGJ5CiAqIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lICgibGlsbyBib290IG9wdGlvbiIpLgogKiBFeGFtcGxlczoKICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYnBjZD0weDMwMCxMYXNlck1hdGUKICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2JwY2Q9MHgyMzAsU291bmRCbGFzdGVyCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNicGNkPTB4MzM4LFNvdW5kU2NhcGUKICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2JwY2Q9MHgyQzAsVGVhYzE2Yml0CiAqCiAqIElmIHNicGNkIGdldHMgdXNlZCBhcyBhIG1vZHVsZSwgeW91IGNhbiBsb2FkIGl0IHdpdGgKICogICAgIGluc21vZCBzYnBjZC5vIHNicGNkPTB4MzAwLDAKICogb3IKICogICAgIGluc21vZCBzYnBjZC5vIHNicGNkPTB4MjMwLDEKICogb3IKICogICAgIGluc21vZCBzYnBjZC5vIHNicGNkPTB4MzM4LDIKICogb3IKICogICAgIGluc21vZCBzYnBjZC5vIHNicGNkPTB4MkMwLDMKICogcmVzcGVjdGl2ZSB0byBvdmVycmlkZSB0aGUgY29uZmlndXJlZCBhZGRyZXNzIGFuZCB0eXBlLgogKi8KCi8qCiAqIGRlZmluZSB5b3VyIENEUk9NIHBvcnQgYmFzZSBhZGRyZXNzIGFzIENEUk9NX1BPUlQKICogYW5kIHNwZWNpZnkgdGhlIHR5cGUgb2YgeW91ciBpbnRlcmZhY2UgY2FyZCBhcyBTQlBSTy4KICoKICogYWRkcmVzczoKICogPT09PT09PT0KICogU0JQUk8gdHlwZSBhZGRyZXNzZXMgdHlwaWNhbGx5IGFyZSAweDAyMzAgKD0weDIyMCsweDEwKSwgMHgwMjUwLCAuLi4KICogTEFTRVJNQVRFIHR5cGUgKENJLTEwMVAsIFdESC03MDAxQykgYWRkcmVzc2VzIHR5cGljYWxseSBhcmUgMHgwMzAwLCAuLi4KICogU09VTkRTQ0FQRSBhZGRyZXNzZXMgYXJlIGZyb20gdGhlIExBU0VSTUFURSB0eXBlIGFuZCByYW5nZS4gWW91IGhhdmUgdG8KICogc3BlY2lmeSB0aGUgUkVBTCBhZGRyZXNzIGhlcmUsIG5vdCB0aGUgY29uZmlndXJhdGlvbiBwb3J0IGFkZHJlc3MuIExvb2sKICogYXQgdGhlIENEUk9NIGRyaXZlcidzIGludm9raW5nIGxpbmUgd2l0aGluIHlvdXIgRE9TIENPTkZJRy5TWVMsIG9yIGxldAogKiBzYnBjZCBhdXRvLXByb2JlLCBpZiB5b3UgYXJlIG5vdCBmaXJtIHdpdGggdGhlIGFkZHJlc3MuCiAqIFRoZXJlIGFyZSBzb21lIHNvdW5kY2FyZHMgb24gdGhlIG1hcmtldCB3aXRoIDB4MDYzMCwgMHgwNjUwLCAuLi47IHRoZWlyCiAqIHR5cGUgaXMgbm90IG9idmlvdXMgKGJvdGggdHlwZXMgYXJlIHBvc3NpYmxlKS4KICoKICogZXhhbXBsZTogaWYgeW91ciBTQlBSTyBhdWRpbyBhZGRyZXNzIGlzIDB4MjIwLCBzcGVjaWZ5IDB4MjMwIGFuZCBTQlBSTyAxLgogKiAgICAgICAgICBpZiB5b3VyIHNvdW5kY2FyZCBoYXMgaXRzIENEUk9NIHBvcnQgYWJvdmUgMHgzMDAsIHNwZWNpZnkKICogICAgICAgICAgdGhhdCBhZGRyZXNzIGFuZCB0cnkgU0JQUk8gMCBmaXJzdC4KICogICAgICAgICAgaWYgeW91ciBTb3VuZFNjYXBlIGNvbmZpZ3VyYXRpb24gcG9ydCBpcyBhdCAweDMzMCwgc3BlY2lmeQogKiAgICAgICAgICAweDMzOCBhbmQgU0JQUk8gMi4KICoKICogaW50ZXJmYWNlIHR5cGU6CiAqID09PT09PT09PT09PT09PQogKiBzZXQgU0JQUk8gdG8gMSBmb3IgInRydWUiIFNvdW5kQmxhc3RlciBjYXJkCiAqIHNldCBTQlBSTyB0byAwIGZvciAiY29tcGF0aWJsZSIgc291bmRjYXJkcyBhbmQKICogICAgICAgICAgICAgICAgZm9yICJwb29yIiAobm8gc291bmQpIGludGVyZmFjZSBjYXJkcy4KICogc2V0IFNCUFJPIHRvIDIgZm9yIEVuc29uaWMgU291bmRTY2FwZSBvciBTUEVBIE1lZGlhIEZYIGNhcmRzCiAqIHNldCBTQlBSTyB0byAzIGZvciBUZWFjIDE2Yml0IGludGVyZmFjZSBjYXJkcwogKgogKiBBbG1vc3QgYWxsICJjb21wYXRpYmxlIiBzb3VuZCBib2FyZHMgbmVlZCB0byBzZXQgU0JQUk8gdG8gMC4KICogSWYgU0JQUk8gaXMgc2V0IHdyb25nLCB0aGUgZHJpdmVzIHdpbGwgZ2V0IGZvdW5kIC0gYnV0IGFueQogKiBkYXRhIGFjY2VzcyB3aWxsIGdpdmUgZXJyb3JzIChhdWRpbyBhY2Nlc3Mgd2lsbCB3b3JrKS4KICogVGhlICJPbW5pQ0QiIG5vLXNvdW5kIGludGVyZmFjZSBjYXJkIGZyb20gQ3JlYXRpdmVMYWJzIGFuZCBtb3N0IFRlYWMKICogaW50ZXJmYWNlIGNhcmRzIG5lZWQgU0JQUk8gMS4KICoKICogc291bmQgYmFzZToKICogPT09PT09PT09PT0KICogVGhlIFNPVU5EX0JBU0UgZGVmaW5pdGlvbiB0ZWxscyBpZiB3ZSBzaG91bGQgdHJ5IHRvIHR1cm4gdGhlIENEIHNvdW5kCiAqIGNoYW5uZWxzIG9uLiBJdCB3aWxsIG9ubHkgYmUgb2YgdXNlIHJlZ2FyZGluZyBzb3VuZGNhcmRzIHdpdGggYSBTYlBybwogKiBjb21wYXRpYmxlIG1peGVyLgogKgogKiBFeGFtcGxlOiAjZGVmaW5lIFNPVU5EX0JBU0UgMHgyMjAgZW5hYmxlcyB0aGUgc291bmQgY2FyZCdzIENEIGNoYW5uZWxzCiAqICAgICAgICAgICNkZWZpbmUgU09VTkRfQkFTRSAwICAgICBsZWF2ZXMgdGhlIHNvdW5kY2FyZCB1bnRvdWNoZWQKICovCiNkZWZpbmUgQ0RST01fUE9SVCAweDM0MCAvKiA8LS0tLS0tLS0tLS08PCBwb3J0IGFkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgKi8KI2RlZmluZSBTQlBSTyAgICAgIDAgICAgIC8qIDwtLS0tLS0tLS0tLTw8IGludGVyZmFjZSB0eXBlICAgICAgICAgICAgICAgICAgICAqLwojZGVmaW5lIE1BWF9EUklWRVMgNCAgICAgLyogc2V0IHRvIDEgaWYgdGhlIGNhcmQgZG9lcyBub3QgdXNlICJkcml2ZSBzZWxlY3QiICovCiNkZWZpbmUgU09VTkRfQkFTRSAweDIyMCAvKiA8LS0tLS0tLS0tLS08PCBzb3VuZCBhZGRyZXNzIG9mIHRoaXMgY2FyZCBvciAwICAgKi8KCi8qCiAqIHNvbWUgbW9yZSBvciBsZXNzIHVzZXIgZGVwZW5kZW50IGRlZmluaXRpb25zIC0gc2VydmljZSB0aGVtIQogKi8KCi8qIFNldCB0aGlzIHRvIDAgb25jZSB5b3UgaGF2ZSBjb25maWd1cmVkIHlvdXIgaW50ZXJmYWNlIGRlZmluaXRpb25zIHJpZ2h0LiAqLwojZGVmaW5lIERJU1RSSUJVVElPTiAxCgovKgogKiBUaW1lIHRvIHdhaXQgYWZ0ZXIgZ2l2aW5nIGEgbWVzc2FnZS4KICogVGhpcyBnZXRzIGltcG9ydGFudCBpZiB5b3UgZW5hYmxlIG5vbi1zdGFuZGFyZCBEQkdfeHh4IGZsYWdzLgogKiBZb3Ugd2lsbCBzZWUgd2hhdCBoYXBwZW5zIGlmIHlvdSBvbWl0IHRoZSBwYXVzZSBvciBtYWtlIGl0CiAqIHRvbyBzaG9ydC4gQmUgd2FybmVkIQogKi8KI2RlZmluZSBLTE9HRF9QQVVTRSAxCgovKiB0cmF5IGNvbnRyb2w6IGVqZWN0IHRyYXkgaWYgbm8gZGlzayBpcyBpbiAqLwojaWYgRElTVFJJQlVUSU9OCiNkZWZpbmUgSlVLRUJPWCAwCiNlbHNlCiNkZWZpbmUgSlVLRUJPWCAxCiNlbmRpZiAvKiBESVNUUklCVVRJT04gKi8KCi8qIHRyYXkgY29udHJvbDogZWplY3QgdHJheSBhZnRlciBsYXN0IHVzZSAqLwojaWYgRElTVFJJQlVUSU9OCiNkZWZpbmUgRUpFQ1QgMAojZWxzZQojZGVmaW5lIEVKRUNUIDEKI2VuZGlmIC8qIERJU1RSSUJVVElPTiAqLwoKLyogbWF4LiBudW1iZXIgb2YgYXVkaW8gZnJhbWVzIHRvIHJlYWQgd2l0aCBvbmUgICAgICovCi8qIHJlcXVlc3QgKGFsbG9jYXRlcyBuKiAyMzUyIGJ5dGVzIGtlcm5lbCBtZW1vcnkhKSAqLwovKiBtYXkgYmUgZnJlZWx5IGFkanVzdGVkLCBmLmUuIDc1ICg9IDEgc2VjLiksIGF0ICAgKi8KLyogcnVudGltZSBieSB1c2Ugb2YgdGhlIENEUk9NQVVESU9CVUZTSVogaW9jdGwuICAgICovCiNkZWZpbmUgUkVBRF9BVURJTyAwCgovKiBPcHRpbWl6YXRpb25zIGZvciB0aGUgVGVhYyBDRC01NUEgZHJpdmUgcmVhZCBwZXJmb3JtYW5jZS4KICogU0JQX1RFQUNfU1BFRUQgY2FuIGJlIGNoYW5nZWQgaGVyZSwgb3Igb25lIGNhbiBzZXQgdGhlIAogKiB2YXJpYWJsZSAidGVhYyIgd2hlbiBsb2FkaW5nIGFzIGEgbW9kdWxlLgogKiBWYWxpZCBzZXR0aW5ncyBhcmU6CiAqICAgMCAtIHZlcnkgc2xvdyAtIHRoZSByZWNvbW1lbmRlZCAiRElTVFJJQlVUSU9OIDEiIHNldHVwLgogKiAgIDEgLSAyeCBwZXJmb3JtYW5jZSB3aXRoIGxpdHRsZSBvdmVyaGVhZC4gTm8gYnVzeSB3YWl0aW5nLgogKiAgIDIgLSA0eCBwZXJmb3JtYW5jZSB3aXRoIDVtcyBvdmVyaGVhZCBwZXIgcmVhZC4gQnVzeSB3YWl0LgogKgogKiBTZXR0aW5nIFNCUF9URUFDX1NQRUVEIG9yIHRoZSB2YXJpYWJsZSAndGVhYycgdG8gYW55dGhpbmcKICogb3RoZXIgdGhhbiAwIG1heSBjYXVzZSBwcm9ibGVtcy4gSWYgeW91IHJ1biBpbnRvIHRoZW0sIGZpcnN0CiAqIGNoYW5nZSBTQlBfVEVBQ19TUEVFRCBiYWNrIHRvIDAgYW5kIHNlZSBpZiB5b3VyIGRyaXZlIHJlc3BvbmRzCiAqIG5vcm1hbGx5LiBJZiB5ZXMsIHlvdSBhcmUgImFsbG93ZWQiIHRvIHJlcG9ydCB5b3VyIGNhc2UgLSB0byBoZWxwCiAqIG1lIHdpdGggdGhlIGRyaXZlciwgbm90IHRvIHNvbHZlIHlvdXIgaGFzc2xlLiBEb260dCBtYWlsIGlmIHlvdQogKiBzaW1wbHkgYXJlIHN0dWNrIGludG8geW91ciBvd24gInR1bmluZyIgZXhwZXJpbWVudHMsIHlvdSBrbm93PwogKi8KI2RlZmluZSBTQlBfVEVBQ19TUEVFRCAxCgovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi8qCiAqIG5vdGhpbmcgdG8gY2hhbmdlIGJlbG93IGhlcmUgaWYgeW91IGFyZSBub3QgZnVsbHkgYXdhcmUgd2hhdCB5b3UncmUgZG9pbmcKICovCiNpZm5kZWYgX0xJTlVYX1NCUENEX0gKCiNkZWZpbmUgX0xJTlVYX1NCUENEX0gKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwovKgogKiBkcml2ZXIncyBvd24gcmVhZF9haGVhZCwgZGF0YSBtb2RlCiAqLwojZGVmaW5lIFNCUF9CVUZGRVJfRlJBTUVTIDggCgojZGVmaW5lIExPTkdfVElNSU5HIDAgLyogdGVzdCBhZ2FpbnN0IHRpbWVvdXRzIHdpdGggImdvbGQiIENEcyBvbiBDUi01MjEgKi8KI3VuZGVmICBGVVRVUkUKI3VuZGVmIFNBRkVfTUlYRUQKCiNkZWZpbmUgVEVTVF9VUEMgMAojZGVmaW5lIFNQRUFfVEVTVCAwCiNkZWZpbmUgVEVTVF9TVEkgMAojZGVmaW5lIE9MRF9CVVNZIDAKI3VuZGVmIFBBVEhfQ0hFQ0sKI2lmbmRlZiBTT1VORF9CQVNFCiNkZWZpbmUgU09VTkRfQkFTRSAwCiNlbmRpZgojaWYgRElTVFJJQlVUSU9OCiN1bmRlZiBTQlBfVEVBQ19TUEVFRAojZGVmaW5lIFNCUF9URUFDX1NQRUVEIDAKI2VuZGlmCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwovKgogKiBEREkgaW50ZXJmYWNlIGRlZmluaXRpb25zCiAqICJpbnZlbnRlZCIgYnkgRnJlZCBOLiB2YW4gS2VtcGVuLi4KICovCiNkZWZpbmUgRERJT0NTREJHCTB4OTAwMAoKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi8qCiAqICJwcml2YXRlIiBJT0NUTCBmdW5jdGlvbnMKICovCiNkZWZpbmUgQ0RST01BVURJT0JVRlNJWgkweDUzODIgLyogc2V0IHRoZSBhdWRpbyBidWZmZXIgc2l6ZSAqLwoKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi8qCiAqIERlYnVnIG91dHB1dCBsZXZlbHMKICovCiNkZWZpbmUgREJHX0lORgkxCS8qIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiAqLwojZGVmaW5lIERCR19CU1oJMgkvKiBCTE9DS19TSVpFIHRyYWNlICovCiNkZWZpbmUgREJHX1JFQQkzCS8qIFJFQUQgc3RhdHVzIHRyYWNlICovCiNkZWZpbmUgREJHX0NISwk0CS8qIE1FRElBIENIRUNLIHRyYWNlICovCiNkZWZpbmUgREJHX1RJTQk1CS8qIGRhdGFyYXRlIHRpbWVyIHRlc3QgKi8KI2RlZmluZSBEQkdfSU5JCTYJLyogaW5pdGlhbGl6YXRpb24gdHJhY2UgKi8KI2RlZmluZSBEQkdfVE9DCTcJLyogdGVsbCBUb2NFbnRyeSB2YWx1ZXMgKi8KI2RlZmluZSBEQkdfSU9DCTgJLyogaW9jdGwgdHJhY2UgKi8KI2RlZmluZSBEQkdfU1RBCTkJLyogUmVzcG9uc2VTdGF0dXMoKSB0cmFjZSAqLwojZGVmaW5lIERCR19FUlIJMTAJLyogY2NfUmVhZEVycm9yKCkgdHJhY2UgKi8KI2RlZmluZSBEQkdfQ01ECTExCS8qIGNtZF9vdXQoKSB0cmFjZSAqLwojZGVmaW5lIERCR19XUk4JMTIJLyogZ2l2ZSBleHBsYW5hdGlvbiBiZWZvcmUgYXV0by1wcm9iaW5nICovCiNkZWZpbmUgREJHX01VTAkxMwkvKiBtdWx0aSBzZXNzaW9uIGNvZGUgdGVzdCAqLwojZGVmaW5lIERCR19JRFgJMTQJLyogdGVzdCBjb2RlIGZvciBkcml2ZV9pZCAhPTAgKi8KI2RlZmluZSBEQkdfSU9YCTE1CS8qIHNvbWUgc3BlY2lhbCBpbmZvcm1hdGlvbiAqLwojZGVmaW5lIERCR19ESUQJMTYJLyogZHJpdmUgSUQgdGVzdCAqLwojZGVmaW5lIERCR19SRVMJMTcJLyogZHJpdmUgcmVzZXQgaW5mbyAqLwojZGVmaW5lIERCR19TUEkJMTgJLyogU3BpblVwIHRlc3QgKi8KI2RlZmluZSBEQkdfSU9TCTE5CS8qIGlvY3RsIHRyYWNlOiBzdWJjaGFubmVsIGZ1bmN0aW9ucyAqLwojZGVmaW5lIERCR19JTzIJMjAJLyogaW9jdGwgdHJhY2U6IGdlbmVyYWwgKi8KI2RlZmluZSBEQkdfVVBDCTIxCS8qIHNob3cgVVBDIGluZm9ybWF0aW9uICovCiNkZWZpbmUgREJHX1hBMQkyMgkvKiBYQSBtb2RlIGRlYnVnZ2luZyAqLwojZGVmaW5lIERCR19MQ0sJMjMJLyogZG9vciAodW4pbG9jayBpbmZvICovCiNkZWZpbmUgREJHX1NRMQkyNAkvKiBkdW1wIFN1YlEgZnJhbWUgKi8KI2RlZmluZSBEQkdfQVVECTI1CS8qIFJFQUQgQVVESU8gZGVidWdnaW5nICovCiNkZWZpbmUgREJHX1NFUQkyNgkvKiBTZXF1b2lhIGludGVyZmFjZSBjb25maWd1cmF0aW9uIHRyYWNlICovCiNkZWZpbmUgREJHX0xDUwkyNwkvKiBMb25nc2hpbmUgTENTLTcyNjAgZGVidWdnaW5nIHRyYWNlICovCiNkZWZpbmUgREJHX0NEMgkyOAkvKiBNS0UvRnVuYWkgQ0QyMDAgZGVidWdnaW5nIHRyYWNlICovCiNkZWZpbmUgREJHX1RFQQkyOQkvKiBURUFDIENELTU1QSBkZWJ1Z2dpbmcgdHJhY2UgKi8KI2RlZmluZSBEQkdfRUNTCTMwCS8qIEVDUy1BVCAoVmVydG9zIDEwMCkgZGVidWdnaW5nIHRyYWNlICovCiNkZWZpbmUgREJHXzAwMAkzMQkvKiB1bm5lY2Vzc2FyeSBpbmZvcm1hdGlvbiAqLwoKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwoKLyoKICogYml0cyBvZiBmbGFnc19jbWRfb3V0OgogKi8KI2RlZmluZSBmX3Jlc3BvMwkJMHgxMDAKI2RlZmluZSBmX3B1dGNtZAkJMHg4MAojZGVmaW5lIGZfcmVzcG8yCQkweDQwCiNkZWZpbmUgZl9sb3BzdGEJCTB4MjAKI2RlZmluZSBmX2dldHN0YQkJMHgxMAojZGVmaW5lIGZfUmVzcG9uc2VTdGF0dXMJMHgwOAojZGVmaW5lIGZfb2JleV9wX2NoZWNrCQkweDA0CiNkZWZpbmUgZl9iaXQxCQkJMHgwMgojZGVmaW5lIGZfd2FpdF9pZl9idXN5CQkweDAxCgovKgogKiBkaXNrc3RhdGVfZmxhZ3M6CiAqLwojZGVmaW5lIHg4MF9iaXQJCQkweDgwCiNkZWZpbmUgdXBjX2JpdAkJCTB4NDAKI2RlZmluZSB2b2x1bWVfYml0CQkweDIwCiNkZWZpbmUgdG9jX2JpdAkJCTB4MTAKI2RlZmluZSBtdWx0aXNlc3Npb25fYml0CTB4MDgKI2RlZmluZSBjZF9zaXplX2JpdAkJMHgwNAojZGVmaW5lIHN1YnFfYml0CQkweDAyCiNkZWZpbmUgZnJhbWVfc2l6ZV9iaXQJCTB4MDEKCi8qCiAqIGRpc2sgc3RhdGVzIChiaXRzIG9mIGRpc2tzdGF0ZV9mbGFncyk6CiAqLwojZGVmaW5lIHVwY192YWxpZAkJKGN1cnJlbnRfZHJpdmUtPmRpc2tzdGF0ZV9mbGFncyZ1cGNfYml0KQojZGVmaW5lIHZvbHVtZV92YWxpZAkJKGN1cnJlbnRfZHJpdmUtPmRpc2tzdGF0ZV9mbGFncyZ2b2x1bWVfYml0KQojZGVmaW5lIHRvY192YWxpZAkJKGN1cnJlbnRfZHJpdmUtPmRpc2tzdGF0ZV9mbGFncyZ0b2NfYml0KQojZGVmaW5lIGNkX3NpemVfdmFsaWQJCShjdXJyZW50X2RyaXZlLT5kaXNrc3RhdGVfZmxhZ3MmY2Rfc2l6ZV9iaXQpCiNkZWZpbmUgc3VicV92YWxpZAkJKGN1cnJlbnRfZHJpdmUtPmRpc2tzdGF0ZV9mbGFncyZzdWJxX2JpdCkKI2RlZmluZSBmcmFtZV9zaXplX3ZhbGlkCShjdXJyZW50X2RyaXZlLT5kaXNrc3RhdGVfZmxhZ3MmZnJhbWVfc2l6ZV9iaXQpCgovKgogKiB0aGUgc3RhdHVzX2JpdHMgdmFyaWFibGUKICovCiNkZWZpbmUgcF9zdWNjZXNzCTB4MTAwCiNkZWZpbmUgcF9kb29yX2Nsb3NlZAkweDgwCiNkZWZpbmUgcF9jYWRkeV9pbgkweDQwCiNkZWZpbmUgcF9zcGlubmluZwkweDIwCiNkZWZpbmUgcF9jaGVjawkJMHgxMAojZGVmaW5lIHBfYnVzeV9uZXcJMHgwOAojZGVmaW5lIHBfZG9vcl9sb2NrZWQJMHgwNAojZGVmaW5lIHBfZGlza19vawkweDAxCgovKgogKiBMQ1MtNzI2MCBzcGVjaWFsIHN0YXR1cyByZXN1bHQgYml0czoKICovCiNkZWZpbmUgcF9sY3NfZG9vcl9sb2NrZWQJMHgwMgojZGVmaW5lIHBfbGNzX2Rvb3JfY2xvc2VkCTB4MDEgLyogcHJvYmFibHkgZGlza19pbiAqLwoKLyoKICogQ1ItNTJ4IHNwZWNpYWwgc3RhdHVzIHJlc3VsdCBiaXRzOgogKi8KI2RlZmluZSBwX2NhZGRpbl9vbGQJMHg0MAojZGVmaW5lIHBfc3VjY2Vzc19vbGQJMHgwOAojZGVmaW5lIHBfYnVzeV9vbGQJMHgwNAojZGVmaW5lIHBfYml0XzEJCTB4MDIJLyogaG9wZWZ1bGx5IHVudXNlZCBub3cgKi8KCi8qCiAqICJnZW5lcmF0aW9uIHNwZWNpZmljIiBkZWZzIG9mIHRoZSBzdGF0dXMgcmVzdWx0IGJpdHM6CiAqLwojZGVmaW5lIHAwX2Rvb3JfY2xvc2VkCTB4ODAKI2RlZmluZSBwMF9jYWRkeV9pbgkweDQwCiNkZWZpbmUgcDBfc3Bpbm5pbmcJMHgyMAojZGVmaW5lIHAwX2NoZWNrCTB4MTAKI2RlZmluZSBwMF9zdWNjZXNzCTB4MDggLyogdW51c2VkICovCiNkZWZpbmUgcDBfYnVzeQkJMHgwNAojZGVmaW5lIHAwX2JpdF8xCTB4MDIgLyogdW51c2VkICovCiNkZWZpbmUgcDBfZGlza19vawkweDAxCgojZGVmaW5lIHBMX2Rpc2tfaW4JMHg0MAojZGVmaW5lIHBMX3NwaW5uaW5nCTB4MjAKI2RlZmluZSBwTF9jaGVjawkweDEwCiNkZWZpbmUgcExfc3VjY2VzcwkweDA4IC8qIHVudXNlZCA/PyAqLwojZGVmaW5lIHBMX2J1c3kJCTB4MDQKI2RlZmluZSBwTF9kb29yX2xvY2tlZAkweDAyCiNkZWZpbmUgcExfZG9vcl9jbG9zZWQJMHgwMQoKI2RlZmluZSBwVl9kb29yX2Nsb3NlZAkweDQwCiNkZWZpbmUgcFZfc3Bpbm5pbmcJMHgyMAojZGVmaW5lIHBWX2NoZWNrCTB4MTAKI2RlZmluZSBwVl9zdWNjZXNzCTB4MDgKI2RlZmluZSBwVl9idXN5CQkweDA0CiNkZWZpbmUgcFZfZG9vcl9sb2NrZWQJMHgwMgojZGVmaW5lIHBWX2Rpc2tfb2sJMHgwMQoKI2RlZmluZSBwMV9kb29yX2Nsb3NlZAkweDgwCiNkZWZpbmUgcDFfZGlza19pbgkweDQwCiNkZWZpbmUgcDFfc3Bpbm5pbmcJMHgyMAojZGVmaW5lIHAxX2NoZWNrCTB4MTAKI2RlZmluZSBwMV9idXN5CQkweDA4CiNkZWZpbmUgcDFfZG9vcl9sb2NrZWQJMHgwNAojZGVmaW5lIHAxX2JpdF8xCTB4MDIgLyogdW51c2VkICovCiNkZWZpbmUgcDFfZGlza19vawkweDAxCgojZGVmaW5lIHAyX2Rpc2tfb2sJMHg4MAojZGVmaW5lIHAyX2Rvb3JfbG9ja2VkCTB4NDAKI2RlZmluZSBwMl9zcGlubmluZwkweDIwCiNkZWZpbmUgcDJfYnVzeTIJMHgxMAojZGVmaW5lIHAyX2J1c3kxCTB4MDgKI2RlZmluZSBwMl9kb29yX2Nsb3NlZAkweDA0CiNkZWZpbmUgcDJfZGlza19pbgkweDAyCiNkZWZpbmUgcDJfY2hlY2sJMHgwMQoKLyoKICogdXNlZCBkcml2ZSBzdGF0ZXM6CiAqLwojZGVmaW5lIHN0X2Rvb3JfY2xvc2VkCShjdXJyZW50X2RyaXZlLT5zdGF0dXNfYml0cyZwX2Rvb3JfY2xvc2VkKQojZGVmaW5lIHN0X2NhZGR5X2luCShjdXJyZW50X2RyaXZlLT5zdGF0dXNfYml0cyZwX2NhZGR5X2luKQojZGVmaW5lIHN0X3NwaW5uaW5nCShjdXJyZW50X2RyaXZlLT5zdGF0dXNfYml0cyZwX3NwaW5uaW5nKQojZGVmaW5lIHN0X2NoZWNrCShjdXJyZW50X2RyaXZlLT5zdGF0dXNfYml0cyZwX2NoZWNrKQojZGVmaW5lIHN0X2J1c3kJCShjdXJyZW50X2RyaXZlLT5zdGF0dXNfYml0cyZwX2J1c3lfbmV3KQojZGVmaW5lIHN0X2Rvb3JfbG9ja2VkCShjdXJyZW50X2RyaXZlLT5zdGF0dXNfYml0cyZwX2Rvb3JfbG9ja2VkKQojZGVmaW5lIHN0X2Rpc2tvawkoY3VycmVudF9kcml2ZS0+c3RhdHVzX2JpdHMmcF9kaXNrX29rKQoKLyoKICogYml0cyBvZiB0aGUgQ0RpX3N0YXR1cyByZWdpc3RlcjoKICovCiNkZWZpbmUgc19ub3RfcmVzdWx0X3JlYWR5CTB4MDQgLyogMDogInJlc3VsdCByZWFkeSIgKi8KI2RlZmluZSBzX25vdF9kYXRhX3JlYWR5CTB4MDIgLyogMDogImRhdGEgcmVhZHkiICAgKi8KI2RlZmluZSBzX2F0dGVudGlvbgkJMHgwMSAvKiAxOiAiYXR0ZW50aW9uIHJlcXVpcmVkIiAqLwovKgogKiB1c2FibGUgYXM6CiAqLwojZGVmaW5lIERSVl9BVFROCSgoaW5iKENEaV9zdGF0dXMpJnNfYXR0ZW50aW9uKSE9MCkKI2RlZmluZSBEQVRBX1JFQURZCSgoaW5iKENEaV9zdGF0dXMpJnNfbm90X2RhdGFfcmVhZHkpPT0wKQojZGVmaW5lIFJFU1VMVF9SRUFEWQkoKGluYihDRGlfc3RhdHVzKSZzX25vdF9yZXN1bHRfcmVhZHkpPT0wKQoKLyoKICogZHJpdmUgZmFtaWxpZXMgYW5kIHR5cGVzIChmaXJtd2FyZSB2ZXJzaW9ucyk6CiAqLwojZGVmaW5lIGRydl9mYW0wCTB4MDEwMAkJLyogQ1ItNTJ4IGZhbWlseSAqLwojZGVmaW5lIGRydl8xOTkJCShkcnZfZmFtMCsweDAxKQkvKiA8MjAwICovCiNkZWZpbmUgZHJ2XzIwMAkJKGRydl9mYW0wKzB4MDIpCS8qIDwyMDEgKi8KI2RlZmluZSBkcnZfMjAxCQkoZHJ2X2ZhbTArMHgwMykJLyogPDIxMCAqLwojZGVmaW5lIGRydl8yMTAJCShkcnZfZmFtMCsweDA0KQkvKiA8MjExICovCiNkZWZpbmUgZHJ2XzIxMQkJKGRydl9mYW0wKzB4MDUpCS8qIDwzMDAgKi8KI2RlZmluZSBkcnZfMzAwCQkoZHJ2X2ZhbTArMHgwNikJLyogPj0zMDAgKi8KCiNkZWZpbmUgZHJ2X2ZhbTEJMHgwMjAwCQkvKiBDUi01NnggZmFtaWx5ICovCiNkZWZpbmUgZHJ2XzA5OQkJKGRydl9mYW0xKzB4MDEpCS8qIDwxMDAgKi8KI2RlZmluZSBkcnZfMTAwCQkoZHJ2X2ZhbTErMHgwMikJLyogPj0xMDAsIG9ubHkgMS4wMiBhbmQgNS4wMCBrbm93biAqLwoKI2RlZmluZSBkcnZfZmFtMgkweDA0MDAJCS8qIENEMjAwIGZhbWlseSAqLwoKI2RlZmluZSBkcnZfZmFtVAkweDA4MDAJCS8qIFRFQUMgQ0QtNTVBICovCgojZGVmaW5lIGRydl9mYW1MCTB4MTAwMAkJLyogTG9uZ3NoaW5lIGZhbWlseSAqLwojZGVmaW5lIGRydl8yNjAJCShkcnZfZmFtTCsweDAxKQkvKiBMQ1MtNzI2MCAqLwojZGVmaW5lIGRydl9lMQkJKGRydl9mYW1MKzB4MDEpCS8qIExDUy03MjYwLCBmaXJtd2FyZSAiQSBFMSIgKi8KI2RlZmluZSBkcnZfZjQJCShkcnZfZmFtTCsweDAyKQkvKiBMQ1MtNzI2MCwgZmlybXdhcmUgIkE0RjQiICovCgojZGVmaW5lIGRydl9mYW1WCTB4MjAwMAkJLyogRUNTLUFUICh2ZXJ0b3MtMTAwKSBmYW1pbHkgKi8KI2RlZmluZSBkcnZfYXQJCShkcnZfZmFtVisweDAxKQkvKiBFQ1MtQVQsIGZpcm13YXJlICIxLjAwIiAqLwoKI2RlZmluZSBmYW0wX2RyaXZlCShjdXJyZW50X2RyaXZlLT5kcnZfdHlwZSZkcnZfZmFtMCkKI2RlZmluZSBmYW1MX2RyaXZlCShjdXJyZW50X2RyaXZlLT5kcnZfdHlwZSZkcnZfZmFtTCkKI2RlZmluZSBmYW1WX2RyaXZlCShjdXJyZW50X2RyaXZlLT5kcnZfdHlwZSZkcnZfZmFtVikKI2RlZmluZSBmYW0xX2RyaXZlCShjdXJyZW50X2RyaXZlLT5kcnZfdHlwZSZkcnZfZmFtMSkKI2RlZmluZSBmYW0yX2RyaXZlCShjdXJyZW50X2RyaXZlLT5kcnZfdHlwZSZkcnZfZmFtMikKI2RlZmluZSBmYW1UX2RyaXZlCShjdXJyZW50X2RyaXZlLT5kcnZfdHlwZSZkcnZfZmFtVCkKI2RlZmluZSBmYW0wTF9kcml2ZQkoY3VycmVudF9kcml2ZS0+ZHJ2X3R5cGUmKGRydl9mYW0wfGRydl9mYW1MKSkKI2RlZmluZSBmYW0wVl9kcml2ZQkoY3VycmVudF9kcml2ZS0+ZHJ2X3R5cGUmKGRydl9mYW0wfGRydl9mYW1WKSkKI2RlZmluZSBmYW1MVl9kcml2ZQkoY3VycmVudF9kcml2ZS0+ZHJ2X3R5cGUmKGRydl9mYW1MfGRydl9mYW1WKSkKI2RlZmluZSBmYW0wTFZfZHJpdmUJKGN1cnJlbnRfZHJpdmUtPmRydl90eXBlJihkcnZfZmFtMHxkcnZfZmFtTHxkcnZfZmFtVikpCiNkZWZpbmUgZmFtMUxfZHJpdmUJKGN1cnJlbnRfZHJpdmUtPmRydl90eXBlJihkcnZfZmFtMXxkcnZfZmFtTCkpCiNkZWZpbmUgZmFtMVZfZHJpdmUJKGN1cnJlbnRfZHJpdmUtPmRydl90eXBlJihkcnZfZmFtMXxkcnZfZmFtVikpCiNkZWZpbmUgZmFtMUxWX2RyaXZlCShjdXJyZW50X2RyaXZlLT5kcnZfdHlwZSYoZHJ2X2ZhbTF8ZHJ2X2ZhbUx8ZHJ2X2ZhbVYpKQojZGVmaW5lIGZhbTAxX2RyaXZlCShjdXJyZW50X2RyaXZlLT5kcnZfdHlwZSYoZHJ2X2ZhbTB8ZHJ2X2ZhbTEpKQojZGVmaW5lIGZhbTEyX2RyaXZlCShjdXJyZW50X2RyaXZlLT5kcnZfdHlwZSYoZHJ2X2ZhbTF8ZHJ2X2ZhbTIpKQojZGVmaW5lIGZhbTJUX2RyaXZlCShjdXJyZW50X2RyaXZlLT5kcnZfdHlwZSYoZHJ2X2ZhbTJ8ZHJ2X2ZhbVQpKQoKLyoKICogYXVkaW8gc3RhdGVzOgogKi8KI2RlZmluZSBhdWRpb19jb21wbGV0ZWQJMyAvKiBGb3Jnb3QgdGhpcyBvbmUhIC0tQUpLICovCiNkZWZpbmUgYXVkaW9fcGxheWluZwkyCiNkZWZpbmUgYXVkaW9fcGF1c2luZwkxCgovKgogKiBkcnZfcGF0dGVybiwgZHJ2X29wdGlvbnM6CiAqLwojZGVmaW5lIHNwZWVkX2F1dG8JMHg4MAojZGVmaW5lIHNwZWVkXzMwMAkweDQwCiNkZWZpbmUgc3BlZWRfMTUwCTB4MjAKI2RlZmluZSBhdWRpb19tb25vCTB4MDQKCi8qCiAqIHZhbHVlcyBvZiBjbWRfdHlwZSAoMCBlbHNlKToKICovCiNkZWZpbmUgUkVBRF9NMQkweDAxCS8qICJkYXRhIG1vZGUgMSI6IDIwNDggYnl0ZXMgcGVyIGZyYW1lICovCiNkZWZpbmUgUkVBRF9NMgkweDAyCS8qICJkYXRhIG1vZGUgMiI6IDEyKzIwNDgrMjgwIGJ5dGVzIHBlciBmcmFtZSAqLwojZGVmaW5lIFJFQURfU0MJMHgwNAkvKiAic3ViY2hhbm5lbCBpbmZvIjogOTYgYnl0ZXMgcGVyIGZyYW1lICovCiNkZWZpbmUgUkVBRF9BVQkweDA4CS8qICJhdWRpbyBmcmFtZSI6IDIzNTIgYnl0ZXMgcGVyIGZyYW1lICovCgovKgogKiBzZW5zZV9ieXRlOgogKgogKiAgICAgICAgICB2YWx1ZXM6IDAwCiAqICAgICAgICAgICAgICAgICAgMDEKICogICAgICAgICAgICAgICAgICA4MQogKiAgICAgICAgICAgICAgICAgIDgyICJyYXcgYXVkaW8iIG1vZGUKICogICAgICAgICAgICAgICAgICB4eCBmcm9tIGluZm9idWZbMF0gYWZ0ZXIgODUgMDAgMDAgMDAgMDAgMDAgMDAKICovCgovKiBhdWRpbyBzdGF0dXMgKGJpbikgKi8KI2RlZmluZSBhdWRfMDAgMHgwMCAvKiBBdWRpbyBzdGF0dXMgYnl0ZSBub3Qgc3VwcG9ydGVkIG9yIG5vdCB2YWxpZCAqLwojZGVmaW5lIGF1ZHgxMSAweDBiIC8qIEF1ZGlvIHBsYXkgb3BlcmF0aW9uIGluIHByb2dyZXNzICAgICAgICAgICAgICovCiNkZWZpbmUgYXVkeDEyIDB4MGMgLyogQXVkaW8gcGxheSBvcGVyYXRpb24gcGF1c2VkICAgICAgICAgICAgICAgICAgKi8KI2RlZmluZSBhdWR4MTMgMHgwZCAvKiBBdWRpbyBwbGF5IG9wZXJhdGlvbiBzdWNjZXNzZnVsbHkgY29tcGxldGVkICAqLwojZGVmaW5lIGF1ZHgxNCAweDBlIC8qIEF1ZGlvIHBsYXkgb3BlcmF0aW9uIHN0b3BwZWQgZHVlIHRvIGVycm9yICAgICovCiNkZWZpbmUgYXVkeDE1IDB4MGYgLyogTm8gY3VycmVudCBhdWRpbyBzdGF0dXMgdG8gcmV0dXJuICAgICAgICAgICAgKi8KLyogYXVkaW8gc3RhdHVzIChiY2QpICovCiNkZWZpbmUgYXVkXzExIDB4MTEgLyogQXVkaW8gcGxheSBvcGVyYXRpb24gaW4gcHJvZ3Jlc3MgICAgICAgICAgICAgKi8KI2RlZmluZSBhdWRfMTIgMHgxMiAvKiBBdWRpbyBwbGF5IG9wZXJhdGlvbiBwYXVzZWQgICAgICAgICAgICAgICAgICAqLwojZGVmaW5lIGF1ZF8xMyAweDEzIC8qIEF1ZGlvIHBsYXkgb3BlcmF0aW9uIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQgICovCiNkZWZpbmUgYXVkXzE0IDB4MTQgLyogQXVkaW8gcGxheSBvcGVyYXRpb24gc3RvcHBlZCBkdWUgdG8gZXJyb3IgICAgKi8KI2RlZmluZSBhdWRfMTUgMHgxNSAvKiBObyBjdXJyZW50IGF1ZGlvIHN0YXR1cyB0byByZXR1cm4gICAgICAgICAgICAqLwoKLyoKICogaGlnaGVzdCBhbGxvd2VkIGRyaXZlIG51bWJlciAoTUlOT1IrMSkKICovCiNkZWZpbmUgTlJfU0JQQ0QJNAoKLyoKICogd2UgdHJ5IHRvIG5ldmVyIGRpc2FibGUgaW50ZXJydXB0cyAtIHNlZW1zIHRvIHdvcmsKICovCiNkZWZpbmUgU0JQQ0RfRElTX0lSUQkwCgovKgogKiAid3JpdGUgYnl0ZSB0byBwb3J0IgogKi8KI2RlZmluZSBPVVQoeCx5KQlvdXRiKHkseCkKCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwoKI2RlZmluZSBNSVhFUl9hZGRyIFNPVU5EX0JBU0UrNCAvKiBzb3VuZCBjYXJkJ3MgYWRkcmVzcyByZWdpc3RlciAqLwojZGVmaW5lIE1JWEVSX2RhdGEgU09VTkRfQkFTRSs1IC8qIHNvdW5kIGNhcmQncyBkYXRhIHJlZ2lzdGVyICovCiNkZWZpbmUgTUlYRVJfQ0RfVm9sdW1lCTB4MjgJLyogaW50ZXJuYWwgU0IgUHJvIHJlZ2lzdGVyIGFkZHJlc3MgKi8KCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwoKI2RlZmluZSBNQVhfVFJBQ0tTCTk5CgojZGVmaW5lIEVSUl9ESVNLQ0hBTkdFIDYxNQoKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi8qCiAqIFRvIG1ha2UgY29udmVyc2lvbnMgZWFzaWVyIChtYWNoaW5lIGRlcGVuZGVudCEpCiAqLwp0eXBlZGVmIHVuaW9uIF9tc2YKewoJdV9pbnQgbjsKCXVfY2hhciBjWzRdOwp9IE1TRjsKCnR5cGVkZWYgdW5pb24gX2Jsawp7Cgl1X2ludCBuOwoJdV9jaGFyIGNbNF07Cn0gQkxLOwoKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCgovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpDT01NQU5EIFNFVCBvZiAib2xkIiBkcml2ZXMgbGlrZSBDUi01MjEsIENSLTUyMgogICAgICAgICAgICAgICAodGhlIENSLTU2MiBmYW1pbHkgaXMgZGlmZmVyZW50KToKCk5vLglDb21tYW5kCQkJICAgICAgIENvZGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkRyaXZlIENvbW1hbmRzOgogMQlTZWVrCQkJCTAxCQogMglSZWFkIERhdGEJCQkwMgogMwlSZWFkIFhBLURhdGEJCQkwMwogNAlSZWFkIEhlYWRlcgkJCTA0CiA1CVNwaW4gVXAJCQkJMDUKIDYJU3BpbiBEb3duCQkJMDYKIDcJRGlhZ25vc3RpYwkJCTA3CiA4CVJlYWQgVVBDCQkJMDgKIDkJUmVhZCBJU1JDCQkJMDkKMTAJUGxheSBBdWRpbwkJCTBBCjExCVBsYXkgQXVkaW8gTVNGCQkJMEIKMTIJUGxheSBBdWRpbyBUcmFjay9JbmRleAkJMEMKClN0YXR1cyBDb21tYW5kczoKMTMJUmVhZCBTdGF0dXMJCQk4MQkKMTQJUmVhZCBFcnJvcgkJCTgyCjE1CVJlYWQgRHJpdmUgVmVyc2lvbgkJODMKMTYJTW9kZSBTZWxlY3QJCQk4NAoxNwlNb2RlIFNlbnNlCQkJODUKMTgJU2V0IFhBIFBhcmFtZXRlcgkJODYKMTkJUmVhZCBYQSBQYXJhbWV0ZXIJCTg3CjIwCVJlYWQgQ2FwYWNpdHkJCQk4OAoyMQlSZWFkIFNVQl9RCQkJODkKMjIJUmVhZCBEaXNjIENvZGUJCQk4QQoyMwlSZWFkIERpc2MgSW5mb3JtYXRpb24JCThCCjI0CVJlYWQgVE9DCQkJOEMKMjUJUGF1c2UvUmVzdW1lCQkJOEQKMjYJUmVhZCBQYWNrZXQJCQk4RQoyNwlSZWFkIFBhdGggQ2hlY2sJCQkwMAogCiAKYWxsIG51bWJlcnMgKGxiYSwgbXNmLWJpbiwgbXNmLWJjZCwgY291bnRzKSB0byB0cmFuc2ZlciBoaWdoIGJ5dGUgZmlyc3QKCm1uZW1vICAgICA3LWJ5dGUgY29tbWFuZCAgICAgICAgI2J5dGVzIHJlc3BvbnNlIChyMC4uLnJuKQpfX19fX19fXyBfX19fX19fX19fX19fX19fX19fXyAgX19fXyAKClJlYWQgU3RhdHVzOgpzdGF0dXM6ICA4MS4gICAgICAgICAgICAgICAgICAgICgxKSAgb25lLWJ5dGUgY29tbWFuZCwgZ2l2ZXMgdGhlIG1haW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyBieXRlClJlYWQgRXJyb3I6CmNoZWNrMTogIDgyIDAwIDAwIDAwIDAwIDAwIDAwLiAgKDYpICByMTogYXVkaW8gc3RhdHVzCgpSZWFkIFBhY2tldDoKY2hlY2syOiAgOGUgeHggMDAgMDAgMDAgMDAgMDAuICh4eCkgIGdldHMgeHggYnl0ZXMgcmVzcG9uc2UsIHJlbGF0aW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBjb21tYW5kcyAwMSAwNCAwNSAwNyAwOCAwOQoKUGxheSBBdWRpbzoKcGxheTogICAgMGEgbGwtYmItYWEgbm4tbm4tbm4uICAoMCkgIHBsYXkgYXVkaW8sIGxsLWJiLWFhOiBzdGFydGluZyBibG9jayAobGJhKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5uLW5uLW5uOiAjYmxvY2tzClBsYXkgQXVkaW8gTVNGOgogICAgICAgICAwYiBtbS1zcy1mZiBtbS1zcy1mZiAgICgwKSAgcGxheSBhdWRpbyBmcm9tL3RvCgpQbGF5IEF1ZGlvIFRyYWNrL0luZGV4OgogICAgICAgICAwYyAuLi4KClBhdXNlL1Jlc3VtZToKcGF1c2U6ICAgOGQgcHIgMDAgMDAgMDAgMDAgMDAuICAoMCkgIHBhdXNlIChwcj0wMCkgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bWUgKHByPTgwKSBhdWRpbyBwbGF5aW5nCgpNb2RlIFNlbGVjdDoKICAgICAgICAgODQgMDAgbm4tbm4gPz8uPz8gMDAgICAoMCkgIG5uLW5uOiAyMDQ4IG9yIDIzNDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3NpYmx5IGRlZmluZXMgdHJhbnNmZXIgc2l6ZQoKc2V0X3ZvbDogODQgODMgMDAgMDAgc3cgbGUgMDAuICAoMCkgIHN3KGl0Y2gpOiBscnh4eHh4eCAob2ZmPTEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZSh2ZWwpOiBtaW49MCwgbWF4PUZGLCBlbHNlIGhhbGYKCQkJCSAgICAgKGZpcm13YXJlIDIuMTEpCgpNb2RlIFNlbnNlOgpnZXRfdm9sOiA4NSAwMyAwMCAwMCAwMCAwMCAwMC4gICgyKSAgdGVsbCBjdXJyZW50IGF1ZGlvIHZvbHVtZSBzZXR0aW5nCgpSZWFkIERpc2MgSW5mb3JtYXRpb246CnRvY2Rlc2M6IDhiIDAwIDAwIDAwIDAwIDAwIDAwLiAgKDYpICByZWFkIHRoZSB0b2MgZGVzY3JpcHRvciAoIm1zZi1iaW4iLWZvcm1hdCkKClJlYWQgVE9DOgp0b2NlbnQ6ICA4YyBmbCBubiAwMCAwMCAwMCAwMC4gICg4KSAgcmVhZCB0b2MgZW50cnkgI25uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbD0wOiJsYmEiLSwgPTI6Im1zZi1iaW4iLWZvcm1hdCkKClJlYWQgQ2FwYWNpdHk6CmNhcGFjaXQ6IDg4IDAwIDAwIDAwIDAwIDAwIDAwLiAgKDUpICAicmVhZCBDRC1ST00gY2FwYWNpdHkiCgoKUmVhZCBQYXRoIENoZWNrOgpwaW5nOiAgICAwMCAwMCAwMCAwMCAwMCAwMCAwMC4gICgyKSAgcjA9QUEsIHIxPTU1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoInBpbmciIGlmIHRoZSBkcml2ZSBpcyBjb25uZWN0ZWQpCgpSZWFkIERyaXZlIFZlcnNpb246CmlkZW50OiAgIDgzIDAwIDAwIDAwIDAwIDAwIDAwLiAoMTIpICBnaXZlcyAiTUFUU0hJVEFuLm5uIiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuLm5uID0gMi4wMSwgMi4xMS4sIDMuMDAsIC4uLikKClNlZWs6CnNlZWs6ICAgIDAxIDAwIGxsLWJiLWFhIDAwIDAwLiAgKDApICAKc2VlazogICAgMDEgMDIgbW0tc3MtZmYgMDAgMDAuICAoMCkgIAoKUmVhZCBEYXRhOgpyZWFkOiAgICAwMiB4eC14eC14eCBubi1ubiBmbC4gICg/KSAgcmVhZCBubi1ubiBibG9ja3Mgb2YgMjA0OCBieXRlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nIGF0IGJsb2NrIHh4LXh4LXh4ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsPTA6ICJsYmEiLSwgPTI6Im1zZi1iY2QiLWNvZGVkIHh4LXh4LXh4CgpSZWFkIFhBLURhdGE6CnJlYWQ6ICAgIDAzIHh4LXh4LXh4IG5uLW5uIGZsLiAgKD8pICByZWFkIG5uLW5uIGJsb2NrcyBvZiAyMzQwIGJ5dGVzLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nIGF0IGJsb2NrIHh4LXh4LXh4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbD0wOiAibGJhIi0sID0yOiJtc2YtYmNkIi1jb2RlZCB4eC14eC14eAoKUmVhZCBTVUJfUToKICAgICAgICAgODkgZmwgMDAgMDAgMDAgMDAgMDAuICgxMykgIHIwOiBhdWRpbyBzdGF0dXMsIHI0LXI3OiBsYmEvbXNmLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmw9MDogImxiYSIsIGZsPTI6ICJtc2YiCgpSZWFkIERpc2MgQ29kZToKICAgICAgICAgOGEgMDAgMDAgMDAgMDAgMDAgMDAuICgxNCkgIHBvc3NpYmx5IGV4dGVuZGVkICJjaGVjayBjb25kaXRpb24iLWluZm8KClJlYWQgSGVhZGVyOgogICAgICAgICAwNCAwMCBsbC1iYi1hYSAwMCAwMC4gICgwKSAgIDQgYnl0ZXMgcmVzcG9uc2Ugd2l0aCAiY2hlY2syIgogICAgICAgICAwNCAwMiBtbS1zcy1mZiAwMCAwMC4gICgwKSAgIDQgYnl0ZXMgcmVzcG9uc2Ugd2l0aCAiY2hlY2syIgoKU3BpbiBVcDoKICAgICAgICAgMDUgMDAgbGwtYmItYWEgMDAgMDAuICAoMCkgIHBvc3NpYmx5IGltcGxpZXMgYSAic2VlayIKClNwaW4gRG93bjoKICAgICAgICAgMDYgLi4uCgpEaWFnbm9zdGljOgogICAgICAgICAwNyAwMCBsbC1iYi1hYSAwMCAwMC4gICgyKSAgIDIgYnl0ZXMgcmVzcG9uc2Ugd2l0aCAiY2hlY2syIgogICAgICAgICAwNyAwMiBtbS1zcy1mZiAwMCAwMC4gICgyKSAgIDIgYnl0ZXMgcmVzcG9uc2Ugd2l0aCAiY2hlY2syIgoKUmVhZCBVUEM6CiAgICAgICAgIDA4IDAwIGxsLWJiLWFhIDAwIDAwLiAoMTYpICAKICAgICAgICAgMDggMDIgbW0tc3MtZmYgMDAgMDAuICgxNikgIAoKUmVhZCBJU1JDOgogICAgICAgICAwOSAwMCBsbC1iYi1hYSAwMCAwMC4gKDE1KSAgMTUgYnl0ZXMgcmVzcG9uc2Ugd2l0aCAiY2hlY2syIgogICAgICAgICAwOSAwMiBtbS1zcy1mZiAwMCAwMC4gKDE1KSAgMTUgYnl0ZXMgcmVzcG9uc2Ugd2l0aCAiY2hlY2syIgoKU2V0IFhBIFBhcmFtZXRlcjoKICAgICAgICAgODYgLi4uCgpSZWFkIFhBIFBhcmFtZXRlcjoKICAgICAgICAgODcgLi4uCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCgovKgogKiBjb21tYW5kcwogKgogKiBDUi01Mng6ICAgICAgQ01EMF8KICogQ1ItNTZ4OiAgICAgIENNRDFfCiAqIENEMjAwOiAgICAgICBDTUQyXwogKiBMQ1MtNzI2MDogICAgQ01ETF8KICogVEVBQyBDRC01NUE6IENNRFRfCiAqIEVDUy1BVDogICAgICBDTURWXwogKi8KI2RlZmluZSBDTUQxX1JFU0VUCTB4MGEKI2RlZmluZSBDTUQyX1JFU0VUCTB4MDEKI2RlZmluZSBDTURUX1JFU0VUCTB4YzAKCiNkZWZpbmUgQ01EMV9MT0NLX0NUTAkweDBjCiNkZWZpbmUgQ01EMl9MT0NLX0NUTAkweDFlCiNkZWZpbmUgQ01EVF9MT0NLX0NUTAlDTUQyX0xPQ0tfQ1RMCiNkZWZpbmUgQ01ETF9MT0NLX0NUTAkweDBlCiNkZWZpbmUgQ01EVl9MT0NLX0NUTAlDTURMX0xPQ0tfQ1RMCgojZGVmaW5lIENNRDFfVFJBWV9DVEwJMHgwNwojZGVmaW5lIENNRDJfVFJBWV9DVEwJMHgxYgojZGVmaW5lIENNRFRfVFJBWV9DVEwJQ01EMl9UUkFZX0NUTAojZGVmaW5lIENNRExfVFJBWV9DVEwJMHgwZAojZGVmaW5lIENNRFZfVFJBWV9DVEwJQ01ETF9UUkFZX0NUTAoKI2RlZmluZSBDTUQxX01VTFRJU0VTUwkweDhkCiNkZWZpbmUgQ01ETF9NVUxUSVNFU1MJMHg4YwojZGVmaW5lIENNRFZfTVVMVElTRVNTCUNNRExfTVVMVElTRVNTCgojZGVmaW5lIENNRDFfU1VCQ0hBTklORgkweDExCiNkZWZpbmUgQ01EMl9TVUJDSEFOSU5GCTB4Pz8KCiNkZWZpbmUgQ01EMV9BQk9SVAkweDA4CiNkZWZpbmUgQ01EMl9BQk9SVAkweDA4CiNkZWZpbmUgQ01EVF9BQk9SVAkweDA4CgojZGVmaW5lIENNRDJfeDAyCTB4MDIKCiNkZWZpbmUgQ01EMl9TRVRTUEVFRAkweGRhCgojZGVmaW5lIENNRDBfUEFUSF9DSEVDSwkweDAwCiNkZWZpbmUgQ01EMV9QQVRIX0NIRUNLCTB4Pz8/CiNkZWZpbmUgQ01EMl9QQVRIX0NIRUNLCTB4Pz8/CiNkZWZpbmUgQ01EVF9QQVRIX0NIRUNLCTB4Pz8/CiNkZWZpbmUgQ01ETF9QQVRIX0NIRUNLCUNNRDBfUEFUSF9DSEVDSwojZGVmaW5lIENNRFZfUEFUSF9DSEVDSwlDTUQwX1BBVEhfQ0hFQ0sKCiNkZWZpbmUgQ01EMF9TRUVLCTB4MDEKI2RlZmluZSBDTUQxX1NFRUsJQ01EMF9TRUVLCiNkZWZpbmUgQ01EMl9TRUVLCTB4MmIKI2RlZmluZSBDTURUX1NFRUsJQ01EMl9TRUVLCiNkZWZpbmUgQ01ETF9TRUVLCUNNRDBfU0VFSwojZGVmaW5lIENNRFZfU0VFSwlDTUQwX1NFRUsKCiNkZWZpbmUgQ01EMF9SRUFECTB4MDIKI2RlZmluZSBDTUQxX1JFQUQJMHgxMAojZGVmaW5lIENNRDJfUkVBRAkweDI4CiNkZWZpbmUgQ01EVF9SRUFECUNNRDJfUkVBRAojZGVmaW5lIENNRExfUkVBRAlDTUQwX1JFQUQKI2RlZmluZSBDTURWX1JFQUQJQ01EMF9SRUFECgojZGVmaW5lIENNRDBfUkVBRF9YQQkweDAzCiNkZWZpbmUgQ01EMl9SRUFEX1hBCTB4ZDQKI2RlZmluZSBDTUQyX1JFQURfWEEyCTB4ZDUKI2RlZmluZSBDTURMX1JFQURfWEEJQ01EMF9SRUFEX1hBIC8qIHJlYWxseSA/PyAqLwojZGVmaW5lIENNRFZfUkVBRF9YQQlDTUQwX1JFQURfWEEKCiNkZWZpbmUgQ01EMF9SRUFEX0hFQUQJMHgwNAoKI2RlZmluZSBDTUQwX1NQSU5VUAkweDA1CiNkZWZpbmUgQ01EMV9TUElOVVAJMHgwMgojZGVmaW5lIENNRDJfU1BJTlVQCUNNRDJfVFJBWV9DVEwKI2RlZmluZSBDTURMX1NQSU5VUAlDTUQwX1NQSU5VUAojZGVmaW5lIENNRFZfU1BJTlVQCUNNRDBfU1BJTlVQCgojZGVmaW5lIENNRDBfU1BJTkRPV04JMHgwNiAvKiByZWFsbHk/Pz8gKi8KI2RlZmluZSBDTUQxX1NQSU5ET1dOCTB4MDYKI2RlZmluZSBDTUQyX1NQSU5ET1dOCUNNRDJfVFJBWV9DVEwKI2RlZmluZSBDTURMX1NQSU5ET1dOCTB4MGQKI2RlZmluZSBDTURWX1NQSU5ET1dOCUNNRDBfU1BJTkRPV04KCiNkZWZpbmUgQ01EMF9ESUFHCTB4MDcKCiNkZWZpbmUgQ01EMF9SRUFEX1VQQwkweDA4CiNkZWZpbmUgQ01EMV9SRUFEX1VQQwkweDg4CiNkZWZpbmUgQ01EMl9SRUFEX1VQQwkweD8/PwojZGVmaW5lIENNRExfUkVBRF9VUEMJQ01EMF9SRUFEX1VQQwojZGVmaW5lIENNRFZfUkVBRF9VUEMJMHg4ZgoKI2RlZmluZSBDTUQwX1JFQURfSVNSQwkweDA5CgojZGVmaW5lIENNRDBfUExBWQkweDBhCiNkZWZpbmUgQ01EMV9QTEFZCTB4Pz8/CiNkZWZpbmUgQ01EMl9QTEFZCTB4Pz8/CiNkZWZpbmUgQ01ETF9QTEFZCUNNRDBfUExBWQojZGVmaW5lIENNRFZfUExBWQlDTUQwX1BMQVkKCiNkZWZpbmUgQ01EMF9QTEFZX01TRgkweDBiCiNkZWZpbmUgQ01EMV9QTEFZX01TRgkweDBlCiNkZWZpbmUgQ01EMl9QTEFZX01TRgkweDQ3CiNkZWZpbmUgQ01EVF9QTEFZX01TRglDTUQyX1BMQVlfTVNGCiNkZWZpbmUgQ01ETF9QTEFZX01TRgkweD8/PwoKI2RlZmluZSBDTUQwX1BMQVlfVEkJMHgwYwojZGVmaW5lIENNRDFfUExBWV9USQkweDBmCgojZGVmaW5lIENNRDBfU1RBVFVTCTB4ODEKI2RlZmluZSBDTUQxX1NUQVRVUwkweDA1CiNkZWZpbmUgQ01EMl9TVEFUVVMJMHgwMAojZGVmaW5lIENNRFRfU1RBVFVTCUNNRDJfU1RBVFVTCiNkZWZpbmUgQ01ETF9TVEFUVVMJQ01EMF9TVEFUVVMKI2RlZmluZSBDTURWX1NUQVRVUwlDTUQwX1NUQVRVUwojZGVmaW5lIENNRDJfU0VFS19MRUFESU4gMHgwMAoKI2RlZmluZSBDTUQwX1JFQURfRVJSCTB4ODIKI2RlZmluZSBDTUQxX1JFQURfRVJSCUNNRDBfUkVBRF9FUlIKI2RlZmluZSBDTUQyX1JFQURfRVJSCTB4MDMKI2RlZmluZSBDTURUX1JFQURfRVJSCUNNRDJfUkVBRF9FUlIgLyogZ2V0IGF1ZGlvIHN0YXR1cyAqLwojZGVmaW5lIENNRExfUkVBRF9FUlIJQ01EMF9SRUFEX0VSUgojZGVmaW5lIENNRFZfUkVBRF9FUlIJQ01EMF9SRUFEX0VSUgoKI2RlZmluZSBDTUQwX1JFQURfVkVSCTB4ODMKI2RlZmluZSBDTUQxX1JFQURfVkVSCUNNRDBfUkVBRF9WRVIKI2RlZmluZSBDTUQyX1JFQURfVkVSCTB4MTIKI2RlZmluZSBDTURUX1JFQURfVkVSCUNNRDJfUkVBRF9WRVIgLyogcmVhbGx5ID8/ICovCiNkZWZpbmUgQ01ETF9SRUFEX1ZFUglDTUQwX1JFQURfVkVSCiNkZWZpbmUgQ01EVl9SRUFEX1ZFUglDTUQwX1JFQURfVkVSCgojZGVmaW5lIENNRDBfU0VUTU9ERQkweDg0CiNkZWZpbmUgQ01EMV9TRVRNT0RFCTB4MDkKI2RlZmluZSBDTUQyX1NFVE1PREUJMHg1NQojZGVmaW5lIENNRFRfU0VUTU9ERQlDTUQyX1NFVE1PREUKI2RlZmluZSBDTURMX1NFVE1PREUJQ01EMF9TRVRNT0RFCgojZGVmaW5lIENNRDBfR0VUTU9ERQkweDg1CiNkZWZpbmUgQ01EMV9HRVRNT0RFCTB4ODQKI2RlZmluZSBDTUQyX0dFVE1PREUJMHg1YQojZGVmaW5lIENNRFRfR0VUTU9ERQlDTUQyX0dFVE1PREUKI2RlZmluZSBDTURMX0dFVE1PREUJQ01EMF9HRVRNT0RFCgojZGVmaW5lIENNRDBfU0VUX1hBCTB4ODYKCiNkZWZpbmUgQ01EMF9HRVRfWEEJMHg4NwoKI2RlZmluZSBDTUQwX0NBUEFDSVRZCTB4ODgKI2RlZmluZSBDTUQxX0NBUEFDSVRZCTB4ODUKI2RlZmluZSBDTUQyX0NBUEFDSVRZCTB4MjUKI2RlZmluZSBDTURMX0NBUEFDSVRZCUNNRDBfQ0FQQUNJVFkgLyogbWlzc2luZyBpbiBzb21lIGZpcm13YXJlIHZlcnNpb25zICovCgojZGVmaW5lIENNRDBfUkVBRFNVQlEJMHg4OQojZGVmaW5lIENNRDFfUkVBRFNVQlEJMHg4NwojZGVmaW5lIENNRDJfUkVBRFNVQlEJMHg0MgojZGVmaW5lIENNRFRfUkVBRFNVQlEJQ01EMl9SRUFEU1VCUQojZGVmaW5lIENNRExfUkVBRFNVQlEJQ01EMF9SRUFEU1VCUQojZGVmaW5lIENNRFZfUkVBRFNVQlEJQ01EMF9SRUFEU1VCUQoKI2RlZmluZSBDTUQwX0RJU0tDT0RFCTB4OGEKCiNkZWZpbmUgQ01EMF9ESVNLSU5GTwkweDhiCiNkZWZpbmUgQ01EMV9ESVNLSU5GTwlDTUQwX0RJU0tJTkZPCiNkZWZpbmUgQ01EMl9ESVNLSU5GTwkweDQzCiNkZWZpbmUgQ01EVF9ESVNLSU5GTwlDTUQyX0RJU0tJTkZPCiNkZWZpbmUgQ01ETF9ESVNLSU5GTwlDTUQwX0RJU0tJTkZPCiNkZWZpbmUgQ01EVl9ESVNLSU5GTwlDTUQwX0RJU0tJTkZPCgojZGVmaW5lIENNRDBfUkVBRFRPQwkweDhjCiNkZWZpbmUgQ01EMV9SRUFEVE9DCUNNRDBfUkVBRFRPQwojZGVmaW5lIENNRDJfUkVBRFRPQwkweD8/PwojZGVmaW5lIENNRExfUkVBRFRPQwlDTUQwX1JFQURUT0MKI2RlZmluZSBDTURWX1JFQURUT0MJQ01EMF9SRUFEVE9DCgojZGVmaW5lIENNRDBfUEFVX1JFUwkweDhkCiNkZWZpbmUgQ01EMV9QQVVfUkVTCTB4MGQKI2RlZmluZSBDTUQyX1BBVV9SRVMJMHg0YgojZGVmaW5lIENNRFRfUEFVU0UJQ01EMl9QQVVfUkVTCiNkZWZpbmUgQ01ETF9QQVVfUkVTCUNNRDBfUEFVX1JFUwojZGVmaW5lIENNRFZfUEFVU0UJQ01EMF9QQVVfUkVTCgojZGVmaW5lIENNRDBfUEFDS0VUCTB4OGUKI2RlZmluZSBDTUQxX1BBQ0tFVAlDTUQwX1BBQ0tFVAojZGVmaW5lIENNRDJfUEFDS0VUCTB4Pz8/CiNkZWZpbmUgQ01ETF9QQUNLRVQJQ01EMF9QQUNLRVQKI2RlZmluZSBDTURWX1BBQ0tFVAkweD8/PwoKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwojZW5kaWYgLyogX0xJTlVYX1NCUENEX0ggKi8KLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi8qCiAqIE92ZXJyaWRlcyBmb3IgRW1hY3Mgc28gdGhhdCB3ZSBmb2xsb3cgTGludXMncyB0YWJiaW5nIHN0eWxlLgogKiBFbWFjcyB3aWxsIG5vdGljZSB0aGlzIHN0dWZmIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUgYW5kIGF1dG9tYXRpY2FsbHkKICogYWRqdXN0IHRoZSBzZXR0aW5ncyBmb3IgdGhpcyBidWZmZXIgb25seS4gIFRoaXMgbXVzdCByZW1haW4gYXQgdGhlIGVuZAogKiBvZiB0aGUgZmlsZS4gCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiBMb2NhbCB2YXJpYWJsZXM6CiAqIGMtaW5kZW50LWxldmVsOiA4CiAqIGMtYnJhY2UtaW1hZ2luYXJ5LW9mZnNldDogMAogKiBjLWJyYWNlLW9mZnNldDogLTgKICogYy1hcmdkZWNsLWluZGVudDogOAogKiBjLWxhYmVsLW9mZnNldDogLTgKICogYy1jb250aW51ZWQtc3RhdGVtZW50LW9mZnNldDogOAogKiBjLWNvbnRpbnVlZC1icmFjZS1vZmZzZXQ6IDAKICogRW5kOgogKi8K