LyoKICogIE5vdGVwYWQgKFN3ZWRpc2ggcmVzb3VyY2VzKQogKgogKiAgQ29weXJpZ2h0IDE5OTcsOTggTWFyY2VsIEJhdXIgPG1iYXVyQGcyNi5ldGh6LmNoPgogKiAgU3dlZGlzaCBsYW5ndWFnZSBieSBLYXJsIEJhY2tzdHL2bSA8a2FybF9iQGdlb2NpdGllcy5jb20+CiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCiNkZWZpbmUgTEFOR1VBR0VfSUQgICAgICAgICAgICAgICAgICAgICBTdwojZGVmaW5lIExBTkdVQUdFX05VTUJFUiAgICAgICAgICAgICAgICAgMWQKI2RlZmluZSBMQU5HVUFHRV9NRU5VX0lURU0gICAgICAgICAgICAgICImU3ZlbnNrYSIKCgovKiBNZW51ICovCgojZGVmaW5lIE1FTlVfRklMRSAgICAgICAgICAgICAgICAgICAgICAgIiZBcmtpdiIKI2RlZmluZSBNRU5VX0ZJTEVfTkVXICAgICAgICAgICAgICAgICAgICImTnkuLi4iCiNkZWZpbmUgTUVOVV9GSUxFX09QRU4gICAgICAgICAgICAgICAgICAi1iZwcG5hIgojZGVmaW5lIE1FTlVfRklMRV9TQVZFICAgICAgICAgICAgICAgICAgIiZTcGFyYSIKI2RlZmluZSBNRU5VX0ZJTEVfU0FWRUFTICAgICAgICAgICAgICAgICJTcGFyYSAmc29tLi4uIgojZGVmaW5lIE1FTlVfRklMRV9QUklOVCAgICAgICAgICAgICAgICAgIiZTa3JpdiB1dCIKI2RlZmluZSBNRU5VX0ZJTEVfUEFHRVNFVFVQICAgICAgICAgICAgICJTaWQgTGEmeW91dC4uLiIKI2RlZmluZSBNRU5VX0ZJTEVfUFJJTlRTRVRVUCAgICAgICAgICAgICJTa3JpdmFyICZpbnN05GxsbmluZ2FyLi4uIgojZGVmaW5lIE1FTlVfRklMRV9FWElUICAgICAgICAgICAgICAgICAgIiZBdnNsdXRhIgoKI2RlZmluZSBNRU5VX0VESVQgICAgICAgICAgICAgICAgICAgICAgICImUmVkaWdlcmEiCiNkZWZpbmUgTUVOVV9FRElUX1VORE8gICAgICAgICAgICAgICAgICAiJlVuZG9cdEN0cmwrWiIKI2RlZmluZSBNRU5VX0VESVRfQ1VUICAgICAgICAgICAgICAgICAgICJLbGlwcGFcdEN0cmwrWCIKI2RlZmluZSBNRU5VX0VESVRfQ09QWSAgICAgICAgICAgICAgICAgICImS29waWVyYVx0Q3RybCtDIgojZGVmaW5lIE1FTlVfRURJVF9QQVNURSAgICAgICAgICAgICAgICAgIiZLbGlzdHJhIGluXHRDdHJsK1YiCiNkZWZpbmUgTUVOVV9FRElUX0RFTEVURSAgICAgICAgICAgICAgICAiJlRhIGJvcnRcdERlbCIKI2RlZmluZSBNRU5VX0VESVRfU0VMRUNUQUxMICAgICAgICAgICAgICJNYXJrZXJhICZhbGx0IgojZGVmaW5lIE1FTlVfRURJVF9USU1FREFURSAgICAgICAgICAgICAgIiZUaWQvRGF0dW1cdEY1IgojZGVmaW5lIE1FTlVfRURJVF9XUkFQICAgICAgICAgICAgICAgICAgIiZEZWxhIGzlbmdhIG1lbmluZ2FyIgoKI2RlZmluZSBNRU5VX1NFQVJDSCAgICAgICAgICAgICAgICAgICAgICImU/ZrIgojZGVmaW5lIE1FTlVfU0VBUkNIX1NFQVJDSCAgICAgICAgICAgICAgIlP2ay4uLiIKI2RlZmluZSBNRU5VX1NFQVJDSF9ORVhUICAgICAgICAgICAgICAgICImU/ZrIG7kc3RhXHRGMyIKCiNkZWZpbmUgTUVOVV9MQU5HVUFHRSAgICAgICAgICAgICAgICAgICAiJlNwcuVrIgoKI2RlZmluZSBNRU5VX0hFTFAgICAgICAgICAgICAgICAgICAgICAgICImSGrkbHAiCiNkZWZpbmUgTUVOVV9IRUxQX0NPTlRFTlRTICAgICAgICAgICAgICAiJklubmVo5WxsIgojZGVmaW5lIE1FTlVfSEVMUF9TRUFSQ0ggICAgICAgICAgICAgICAgIiZT9msuLi4iCiNkZWZpbmUgTUVOVV9IRUxQX0hFTFBfT05fSEVMUCAgICAgICAgICAiQW525G5kbmluZ2VuICZhdiBoauRscCIKCiNkZWZpbmUgTUVOVV9JTkZPICAgICAgICAgICAgICAgICAgICAgICAiSW5mJm9ybWF0aW9uLi4uIgojZGVmaW5lIE1FTlVfSU5GT19MSUNFTlNFICAgICAgICAgICAgICAgIiZMaWNlbnMiCiNkZWZpbmUgTUVOVV9JTkZPX05PX1dBUlJBTlRZICAgICAgICAgICAiJklOR0VOIEdBUkFOVEkiCiNkZWZpbmUgTUVOVV9JTkZPX0FCT1VUX1dJTkUgICAgICAgICAgICAiJk9tIFdpbmUiCgoKLyogRGlhbG9ncyAqLwoKI2RlZmluZSBESUFMT0dfT0sgICAgICAgICAgICAgICAgICAgICAgICJPSyIKI2RlZmluZSBESUFMT0dfQ0FOQ0VMICAgICAgICAgICAgICAgICAgICJBdmJyeXQiCiNkZWZpbmUgRElBTE9HX0JST1dTRSAgICAgICAgICAgICAgICAgICAiJkJs5GRkcmEuLi4iCiNkZWZpbmUgRElBTE9HX0hFTFAgICAgICAgICAgICAgICAgICAgICAiJkhq5GxwIgoKI2RlZmluZSBESUFMT0dfUEFHRVNFVFVQX0NBUFRJT04gICAgICAgICJTaWQgTGF5b3V0IgojZGVmaW5lIERJQUxPR19QQUdFU0VUVVBfSEVBRCAgICAgICAgICAgIiZIdXZ1ZG5vdDoiCiNkZWZpbmUgRElBTE9HX1BBR0VTRVRVUF9UQUlMICAgICAgICAgICAiJkZvdG5vdDoiCiNkZWZpbmUgRElBTE9HX1BBR0VTRVRVUF9NQVJHSU4gICAgICAgICAiS2FudGVyOiIKI2RlZmluZSBESUFMT0dfUEFHRVNFVFVQX0xFRlQgICAgICAgICAgICImVuRuc3RlcjoiCiNkZWZpbmUgRElBTE9HX1BBR0VTRVRVUF9SSUdIVCAgICAgICAgICAiJkj2Z2VyOiIKI2RlZmluZSBESUFMT0dfUEFHRVNFVFVQX1RPUCAgICAgICAgICAgICIm1nZlcjoiCiNkZWZpbmUgRElBTE9HX1BBR0VTRVRVUF9CT1RUT00gICAgICAgICAiJlVuZGVyOiIKCgovKiBTdHJpbmdzICovCgojZGVmaW5lIFNUUklOR19QQUdFU0VUVVBfSEVBREVSVkFMVUUgICAgIiZuIiAgICAgICAgLyogRklYTUUgKi8KI2RlZmluZSBTVFJJTkdfUEFHRVNFVFVQX0ZPT1RFUlZBTFVFICAgICJQYWdlICZzIiAgIC8qIEZJWE1FICovCiNkZWZpbmUgU1RSSU5HX1BBR0VTRVRVUF9MRUZUVkFMVUUgICAgICAiMjAgbW0iICAgICAvKiBGSVhNRSAqLwojZGVmaW5lIFNUUklOR19QQUdFU0VUVVBfUklHSFRWQUxVRSAgICAgIjIwIG1tIiAgICAgLyogRklYTUUgKi8KI2RlZmluZSBTVFJJTkdfUEFHRVNFVFVQX1RPUFZBTFVFICAgICAgICIyNSBtbSIgICAgIC8qIEZJWE1FICovCiNkZWZpbmUgU1RSSU5HX1BBR0VTRVRVUF9CT1RUT01WQUxVRSAgICAiMjUgbW0iICAgICAvKiBGSVhNRSAqLwoKI2RlZmluZSBTVFJJTkdfTk9URVBBRCAgICAgICAgICAgICAgICAgICJBbnRlY2tuaW5nYXIiCiNkZWZpbmUgU1RSSU5HX0VSUk9SICAgICAgICAgICAgICAgICAgICAiRkVMIgojZGVmaW5lIFNUUklOR19XQVJOSU5HICAgICAgICAgICAgICAgICAgIlZBUk5JTkciCiNkZWZpbmUgU1RSSU5HX0lORk8gICAgICAgICAgICAgICAgICAgICAiSW5mb3JtYXRpb24iCgojZGVmaW5lIFNUUklOR19VTlRJVExFRCAgICAgICAgICAgICAgICAgIih1bnRpdGxlZCkiCgojZGVmaW5lIFNUUklOR19BTExfRklMRVMgICAgICAgICAgICAgICAgIkFsbGEgZmlsZXIgKCouKikiCiNkZWZpbmUgU1RSSU5HX1RFWFRfRklMRVNfVFhUICAgICAgICAgICAiVGV4dCBmaWxlciAoKi50eHQpIgoKI2RlZmluZSBTVFJJTkdfVE9PTEFSR0UgICAgICAgICAiRmlsZW4gJyVzJyDkciBm9nIgc3RvciBm9nIgbm90ZXBhZC5cbiBcCkFuduRuZCBlbiBhbm5hbiBlZGl0b3IuIgoKI2RlZmluZSBTVFJJTkdfTk9URVhUICAgICAgICAgICAiRHUgc2tyZXYgaW50ZSBpbiBu5WdvbiB0ZXh0LiBcClxuU2tyaXYgbuVnb3Qgb2NoIGb2cnP2ayBzZWRhbiBpZ2VuIgoKLyogRklYTUUgKi8KCiNkZWZpbmUgU1RSSU5HX0RPRVNOT1RFWElTVCAgICAgIkZpbGUgJyVzJ1xuZG9lcyBub3QgZXhpc3RcblxuIFwKRG8geW91IHdhbnQgdG8gY3JlYXRlIGEgbmV3IGZpbGUgPyIKCiNkZWZpbmUgU1RSSU5HX05PVFNBVkVEICAgICAgICAgIkZpbGVuICclcydcbmhhcyBiZWVuIG1vZGlmaWVkXG5cbiBcCldvdWxkIHlvdSBsaWtlIHRvIHNhdmUgeW91ciBjaGFuZ2VzID8iCgojZGVmaW5lIFNUUklOR19OT1RGT1VORCAgICAgICAgICInJXMnIGhpdHRhZGVzIGludGUuIgoKI2RlZmluZSBTVFJJTkdfT1VUX09GX01FTU9SWSAgICAiSW50ZSB0aWxscuRrbGlndCBtZWQgbWlubmUgZvZyIGF0dCBzbHV0ZvZyYSBcCmRlbiBo5HIgdXBwZ2lmdGVuLiBcbkF2c2x1dGEgZXR0IGVsbGVyIGZsZXJhIHByb2dyYW0gZvZyIGF0dCD2a2EgbeRuZ2RlbiBcbmZyaXR0IFwKbWlubmUuIgoKI2luY2x1ZGUgIm5vdGVwYWQucmMiCg==