Ly9NaWNyb3NvZnQgZU1iZWRkZWQgVmlzdWFsIEMrKyBnZW5lcmF0ZWQgcmVzb3VyY2Ugc2NyaXB0Lg0KLy8NCiNpbmNsdWRlICJyZXNvdXJjZS5oIg0KDQojZGVmaW5lIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQovLw0KLy8gR2VuZXJhdGVkIGZyb20gdGhlIFRFWFRJTkNMVURFIDIgcmVzb3VyY2UuDQovLw0KI2luY2x1ZGUgImFmeHJlcy5oIg0KI2luY2x1ZGUgIm5ld3Jlcy5oIg0KDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KI3VuZGVmIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMNCg0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCi8vIEVuZ2xpc2ggKFUuUy4pIHJlc291cmNlcw0KDQojaWYgIWRlZmluZWQoQUZYX1JFU09VUkNFX0RMTCkgfHwgZGVmaW5lZChBRlhfVEFSR19FTlUpDQojaWZkZWYgX1dJTjMyDQpMQU5HVUFHRSBMQU5HX0VOR0xJU0gsIFNVQkxBTkdfRU5HTElTSF9VUw0KI3ByYWdtYSBjb2RlX3BhZ2UoMTI1MikNCiNlbmRpZiAvL19XSU4zMg0KDQojaWZkZWYgQVBTVFVESU9fSU5WT0tFRA0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCi8vDQovLyBURVhUSU5DTFVERQ0KLy8NCg0KMSBURVhUSU5DTFVERSBESVNDQVJEQUJMRSANCkJFR0lODQogICAgInJlc291cmNlLmhcMCINCkVORA0KDQoyIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFIA0KQkVHSU4NCiAgICAiI2luY2x1ZGUgIiJhZnhyZXMuaCIiXHJcbiINCiAgICAiI2luY2x1ZGUgIiJuZXdyZXMuaCIiXHJcbiINCiAgICAiXDAiDQpFTkQNCg0KMyBURVhUSU5DTFVERSBESVNDQVJEQUJMRSANCkJFR0lODQogICAgIiNkZWZpbmUgX0FGWF9OT19TUExJVFRFUl9SRVNPVVJDRVNcclxuIg0KICAgICIjZGVmaW5lIF9BRlhfTk9fT0xFX1JFU09VUkNFU1xyXG4iDQogICAgIiNkZWZpbmUgX0FGWF9OT19UUkFDS0VSX1JFU09VUkNFU1xyXG4iDQogICAgIiNkZWZpbmUgX0FGWF9OT19QUk9QRVJUWV9SRVNPVVJDRVNcclxuIg0KICAgICJcclxuIg0KICAgICIjaWYgIWRlZmluZWQoQUZYX1JFU09VUkNFX0RMTCkgfHwgZGVmaW5lZChBRlhfVEFSR19FTlUpXHJcbiINCiAgICAiI2lmZGVmIF9XSU4zMlxyXG4iDQogICAgIkxBTkdVQUdFIDksIDFcclxuIg0KICAgICIjcHJhZ21hIGNvZGVfcGFnZSgxMjUyKVxyXG4iDQogICAgIiNlbmRpZiAvL19XSU4zMlxyXG4iDQogICAgIiNpbmNsdWRlICIicmVzXFxQb2NrZXRQSi5yYzIiIiAgLy8gbm9uLU1pY3Jvc29mdCBlTWJlZGRlZCBWaXN1YWwgQysrIGVkaXRlZCByZXNvdXJjZXNcclxuIg0KICAgICIjaW5jbHVkZSAiImFmeHJlcy5yYyIiICAgICAgICAgLy8gU3RhbmRhcmQgY29tcG9uZW50c1xyXG4iDQogICAgIiNpbmNsdWRlICIid2NlcmVzLnJjIiIgICAgICAgICAvLyBXQ0Utc3BlY2lmaWMgY29tcG9uZW50c1xyXG4iDQogICAgIiNlbmRpZlxyXG4iDQogICAgIlwwIg0KRU5EDQoNCiNlbmRpZiAgICAvLyBBUFNUVURJT19JTlZPS0VEDQoNCg0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCi8vDQovLyBJY29uDQovLw0KDQovLyBJY29uIHdpdGggbG93ZXN0IElEIHZhbHVlIHBsYWNlZCBmaXJzdCB0byBlbnN1cmUgYXBwbGljYXRpb24gaWNvbg0KLy8gcmVtYWlucyBjb25zaXN0ZW50IG9uIGFsbCBzeXN0ZW1zLg0KSURSX01BSU5GUkFNRSAgICAgICAgICAgSUNPTiAgICBESVNDQVJEQUJMRSAgICAgInJlc1xcUG9ja2V0UEouaWNvIg0KSURJX09OTElORSAgICAgICAgICAgICAgSUNPTiAgICBESVNDQVJEQUJMRSAgICAgInJlc1xcb25saW5lLmljbyINCklESV9PRkZMSU5FICAgICAgICAgICAgIElDT04gICAgRElTQ0FSREFCTEUgICAgICJyZXNcXG9mZmxpbmUuaWNvIg0KSURJX0lOVklTSUJMRSAgICAgICAgICAgSUNPTiAgICBESVNDQVJEQUJMRSAgICAgInJlc1xcaW52aXNpYmwuaWNvIg0KDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KLy8NCi8vIERpYWxvZw0KLy8NCg0KSUREX1BPQ0tFVFBKX0RJQUxPRyBESUFMT0dFWCAwLCAwLCAxMzksIDE1MQ0KU1RZTEUgV1NfUE9QVVAgfCBXU19WSVNJQkxFIHwgV1NfQ0FQVElPTg0KRVhTVFlMRSBXU19FWF9BUFBXSU5ET1cgfCAweDgwMDAwMDAwTA0KQ0FQVElPTiAiUG9ja2V0UEoiDQpGT05UIDgsICJTeXN0ZW0iDQpCRUdJTg0KICAgIExURVhUICAgICAgICAgICAic2lwOnVzZXJAcGpzaXAubGFiIixJRENfQUNDX0lELDIyLDUsMTE1LDgNCiAgICBDT05UUk9MICAgICAgICAgMTM1LElEQ19CVE5fQUNDLCJTdGF0aWMiLFNTX0JJVE1BUCB8IFNTX05PVElGWSB8IA0KICAgICAgICAgICAgICAgICAgICBXU19CT1JERVIgfCBXU19UQUJTVE9QLDcsMywxMiwxMQ0KICAgIENPTlRST0wgICAgICAgICAiTGlzdDEiLElEQ19CVUREWV9MSVNULCJTeXNMaXN0VmlldzMyIixMVlNfU01BTExJQ09OIHwgDQogICAgICAgICAgICAgICAgICAgIExWU19TSU5HTEVTRUwgfCBMVlNfU09SVEFTQ0VORElORyB8IFdTX0JPUkRFUiB8IA0KICAgICAgICAgICAgICAgICAgICBXU19UQUJTVE9QLDcsMzUsMTI3LDEwOQ0KICAgIExURVhUICAgICAgICAgICAiVVJMOiIsSURDX1NUQVRJQyw3LDE5LDE2LDgNCiAgICBFRElUVEVYVCAgICAgICAgSURDX1VSTCwyNSwxNiw5NywxMixFU19BVVRPSFNDUk9MTA0KICAgIENPTlRST0wgICAgICAgICAxMzgsSURDX0JUTl9BQ1RJT04sIlN0YXRpYyIsU1NfQklUTUFQIHwgU1NfTk9USUZZIHwgDQogICAgICAgICAgICAgICAgICAgIFdTX0JPUkRFUiwxMjUsMTYsMTIsMTENCkVORA0KDQpJRERfU0VUVElORyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDE0MCwgMTQzDQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQ0KQ0FQVElPTiAiUG9ja2V0UEogU2V0dGluZ3MuLiINCkZPTlQgOCwgIlN5c3RlbSINCkJFR0lODQogICAgRURJVFRFWFQgICAgICAgIElEQ19ET01BSU4sMzgsNyw3OCwxMixFU19BVVRPSFNDUk9MTA0KICAgIEVESVRURVhUICAgICAgICBJRENfVVNFUiwzOCwyMSw3OCwxMixFU19BVVRPSFNDUk9MTA0KICAgIEVESVRURVhUICAgICAgICBJRENfUEFTU1dELDM4LDM1LDc4LDEyLEVTX1BBU1NXT1JEIHwgRVNfQVVUT0hTQ1JPTEwNCiAgICBFRElUVEVYVCAgICAgICAgSURDX0ROUywzOCw0OSw3OCwxMixFU19BVVRPSFNDUk9MTA0KICAgIEVESVRURVhUICAgICAgICBJRENfU1RVTl9TUlYsNTYsNjQsNzcsMTIsRVNfQVVUT0hTQ1JPTEwNCiAgICBDT05UUk9MICAgICAgICAgIklDRSIsSURDX0lDRSwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDcsNzksDQogICAgICAgICAgICAgICAgICAgIDI0LDEwDQogICAgQ09OVFJPTCAgICAgICAgICJUQ1AiLElEQ19UQ1AsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwzMywNCiAgICAgICAgICAgICAgICAgICAgNzksMjQsMTANCiAgICBDT05UUk9MICAgICAgICAgIlNSVFAiLElEQ19TUlRQLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsNjEsDQogICAgICAgICAgICAgICAgICAgIDc5LDI5LDEwDQogICAgQ09OVFJPTCAgICAgICAgICJQVUJMSVNIIixJRENfUFVCTElTSCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCANCiAgICAgICAgICAgICAgICAgICAgV1NfVEFCU1RPUCw5Myw3OSw0MCwxMA0KICAgIENPTlRST0wgICAgICAgICAiRUMsIHRhaWw6IixJRENfRUNIT19TVVBQUkVTUywiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCANCiAgICAgICAgICAgICAgICAgICAgV1NfVEFCU1RPUCw3LDkyLDM3LDEwDQogICAgRURJVFRFWFQgICAgICAgIElEQ19FQ19UQUlMLDQ3LDkxLDIzLDEyLEVTX0FVVE9IU0NST0xMDQogICAgQ09OVFJPTCAgICAgICAgICJWQUQiLElEQ19WQUQsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCw5MywNCiAgICAgICAgICAgICAgICAgICAgOTIsMjUsMTANCiAgICBDT01CT0JPWCAgICAgICAgSURDX0NPREVDUyw1OSwxMDUsNDIsMzksQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCANCiAgICAgICAgICAgICAgICAgICAgV1NfVEFCU1RPUA0KICAgIFBVU0hCVVRUT04gICAgICAiT0siLElET0ssMTcsMTIyLDUwLDE0DQogICAgUFVTSEJVVFRPTiAgICAgICJDYW5jZWwiLElEQ0FOQ0VMLDczLDEyMiw1MCwxNA0KICAgIExURVhUICAgICAgICAgICAiRG9tYWluOiIsSURDX1NUQVRJQyw3LDgsMzAsOQ0KICAgIExURVhUICAgICAgICAgICAiVXNlcjoiLElEQ19TVEFUSUMsNywyMiwzMCw5DQogICAgTFRFWFQgICAgICAgICAgICJQYXNzd2Q6IixJRENfU1RBVElDLDcsMzYsMzAsOQ0KICAgIENPTlRST0wgICAgICAgICAiU1RVTiBTcnY6IixJRENfU1RVTiwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCANCiAgICAgICAgICAgICAgICAgICAgV1NfVEFCU1RPUCw3LDY1LDQ3LDEwDQogICAgTFRFWFQgICAgICAgICAgICJETlM6IixJRENfU1RBVElDLDgsNTAsMzAsOQ0KICAgIExURVhUICAgICAgICAgICAibXMiLElEQ19TVEFUSUMsNzUsOTIsMTMsOQ0KICAgIExURVhUICAgICAgICAgICAiQ29kZWMgcHJpb3JpdHk6IixJRENfU1RBVElDLDcsMTA3LDQ5LDkNCiAgICBDT05UUk9MICAgICAgICAgIkFBIixJRENfQUEsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxMDcsDQogICAgICAgICAgICAgICAgICAgIDEwNywyNSwxMA0KRU5EDQoNCg0KI2lmbmRlZiBfTUFDDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KLy8NCi8vIFZlcnNpb24NCi8vDQoNClZTX1ZFUlNJT05fSU5GTyBWRVJTSU9OSU5GTw0KIEZJTEVWRVJTSU9OIDEsMCwwLDENCiBQUk9EVUNUVkVSU0lPTiAxLDAsMCwxDQogRklMRUZMQUdTTUFTSyAweDNmTA0KI2lmZGVmIF9ERUJVRw0KIEZJTEVGTEFHUyAweDFMDQojZWxzZQ0KIEZJTEVGTEFHUyAweDBMDQojZW5kaWYNCiBGSUxFT1MgMHg0TA0KIEZJTEVUWVBFIDB4MUwNCiBGSUxFU1VCVFlQRSAweDBMDQpCRUdJTg0KICAgIEJMT0NLICJTdHJpbmdGaWxlSW5mbyINCiAgICBCRUdJTg0KICAgICAgICBCTE9DSyAiMDQwOTA0QjAiDQogICAgICAgIEJFR0lODQogICAgICAgICAgICBWQUxVRSAiQ29tcGFueU5hbWUiLCAiSFBcMCINCiAgICAgICAgICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAiUG9ja2V0UEogV0NFIE1GQyBBcHBsaWNhdGlvblwwIg0KICAgICAgICAgICAgVkFMVUUgIkZpbGVWZXJzaW9uIiwgIjEsIDAsIDAsIDFcMCINCiAgICAgICAgICAgIFZBTFVFICJJbnRlcm5hbE5hbWUiLCAiUG9ja2V0UEpcMCINCiAgICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsICJDb3B5cmlnaHQgqSAyMDA4XDAiDQogICAgICAgICAgICBWQUxVRSAiTGVnYWxUcmFkZW1hcmtzIiwgIlwwIg0KICAgICAgICAgICAgVkFMVUUgIk9yaWdpbmFsRmlsZW5hbWUiLCAiUG9ja2V0UEouZXhlXDAiDQogICAgICAgICAgICBWQUxVRSAiUHJvZHVjdE5hbWUiLCAiUG9ja2V0UEogQXBwbGljYXRpb25cMCINCiAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0VmVyc2lvbiIsICIxLCAwLCAwLCAxXDAiDQogICAgICAgIEVORA0KICAgIEVORA0KICAgIEJMT0NLICJWYXJGaWxlSW5mbyINCiAgICBCRUdJTg0KICAgICAgICBWQUxVRSAiVHJhbnNsYXRpb24iLCAweDQwOSwgMTIwMA0KICAgIEVORA0KRU5EDQoNCiNlbmRpZiAgICAvLyAhX01BQw0KDQoNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQovLw0KLy8gREVTSUdOSU5GTw0KLy8NCg0KI2lmZGVmIEFQU1RVRElPX0lOVk9LRUQNCkdVSURFTElORVMgREVTSUdOSU5GTyBESVNDQVJEQUJMRSANCkJFR0lODQogICAgSUREX1BPQ0tFVFBKX0RJQUxPRywgRElBTE9HDQogICAgQkVHSU4NCiAgICAgICAgTEVGVE1BUkdJTiwgNw0KICAgICAgICBSSUdIVE1BUkdJTiwgMTM3DQogICAgICAgIFRPUE1BUkdJTiwgNw0KICAgICAgICBCT1RUT01NQVJHSU4sIDE0NA0KICAgICAgICBIT1JaR1VJREUsIDI4DQogICAgRU5EDQoNCiAgICBJRERfU0VUVElORywgRElBTE9HDQogICAgQkVHSU4NCiAgICAgICAgTEVGVE1BUkdJTiwgNw0KICAgICAgICBSSUdIVE1BUkdJTiwgMTMzDQogICAgICAgIFRPUE1BUkdJTiwgNw0KICAgICAgICBCT1RUT01NQVJHSU4sIDEzNg0KICAgIEVORA0KRU5EDQojZW5kaWYgICAgLy8gQVBTVFVESU9fSU5WT0tFRA0KDQoNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQovLw0KLy8gQml0bWFwDQovLw0KDQpJREJfT05MSU5FICAgICAgICAgICAgICBCSVRNQVAgIERJU0NBUkRBQkxFICAgICAicmVzXFxvbmxpbmUuYm1wIg0KSURCX09GRkxJTkUgICAgICAgICAgICAgQklUTUFQICBESVNDQVJEQUJMRSAgICAgInJlc1xcb2ZmbGluZS5ibXAiDQpJREJfSU5WSVNJQkxFICAgICAgICAgICBCSVRNQVAgIERJU0NBUkRBQkxFICAgICAicmVzXFxpbnZpc2libC5ibXAiDQpJREJfQUNUSU9OICAgICAgICAgICAgICBCSVRNQVAgIERJU0NBUkRBQkxFICAgICAicmVzXFxhY3Rpb24uYm1wIg0KSURCX0JMQU5LICAgICAgICAgICAgICAgQklUTUFQICBESVNDQVJEQUJMRSAgICAgInJlc1xcYmxhbmsuYm1wIg0KDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KLy8NCi8vIE1lbnViYXINCi8vDQoNCklEUl9BQ0NfTUVOVSBNRU5VIERJU0NBUkRBQkxFIA0KQkVHSU4NCiAgICBQT1BVUCAiU2V0IE9ubGluZSBTdGF0dXM6Ig0KICAgIEJFR0lODQogICAgICAgIE1FTlVJVEVNICImT25saW5lIiwgICAgICAgICAgICAgICAgICAgICBJRENfQUNDX09OTElORQ0KICAgICAgICBNRU5VSVRFTSAiJkludmlzaWJsZSIsICAgICAgICAgICAgICAgICAgSURDX0FDQ19JTlZJU0lCTEUNCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SDQogICAgICAgIE1FTlVJVEVNICImU2V0dGluZ3MuLi4iLCAgICAgICAgICAgICAgICBJRENfQUNDX1NFVFRJTkdTDQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUg0KICAgICAgICBNRU5VSVRFTSAiRSZ4aXQiLCAgICAgICAgICAgICAgICAgICAgICAgSURPSw0KICAgIEVORA0KRU5EDQoNCklEUl9VUklfTUVOVSBNRU5VIERJU0NBUkRBQkxFIA0KQkVHSU4NCiAgICBQT1BVUCAiVVJJIEFjdGlvbiINCiAgICBCRUdJTg0KICAgICAgICBNRU5VSVRFTSAiJkNhbGwuLi4iLCAgICAgICAgICAgICAgICAgICAgSURDX1VSSV9DQUxMDQogICAgICAgIE1FTlVJVEVNICJBZGQgdG8gQnVkZHkgTGlzdCIsICAgICAgICAgICBJRENfVVJJX0FERF9CVUREWQ0KICAgICAgICBNRU5VSVRFTSAiJkRlbCBCdWRkeSIsICAgICAgICAgICAgICAgICAgSURDX1VSSV9ERUxfQlVERFkNCiAgICBFTkQNCkVORA0KDQoNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQovLw0KLy8gRGF0YQ0KLy8NCg0KSURSX0FDQ19NRU5VIFNITUVOVUJBUiBESVNDQVJEQUJMRSANCkJFR0lODQogICAgSURSX0FDQ19NRU5VLCAxLA0KICAgIElfSU1BR0VOT05FLCBJRENfTUVOVTEsIFRCU1RBVEVfRU5BQkxFRCwgDQogICAgVEJTVFlMRV9EUk9QRE9XTiB8IFRCU1RZTEVfQVVUT1NJWkUsIElEU19DQVBfTUVOVUlURU0zMjc4NiwgMCwgMCwNCkVORA0KDQpJRFJfVVJJX01FTlUgU0hNRU5VQkFSIERJU0NBUkRBQkxFIA0KQkVHSU4NCiAgICBJRFJfVVJJX01FTlUsIDEsDQogICAgSV9JTUFHRU5PTkUsIElEQ19NRU5VMiwgVEJTVEFURV9FTkFCTEVELCANCiAgICBUQlNUWUxFX0RST1BET1dOIHwgVEJTVFlMRV9BVVRPU0laRSwgSURTX0NBUF9NRU5VSVRFTTMyNzkwLCAwLCAwLA0KRU5EDQoNCg0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCi8vDQovLyBTdHJpbmcgVGFibGUNCi8vDQoNClNUUklOR1RBQkxFIERJU0NBUkRBQkxFIA0KQkVHSU4NCiAgICBJRFNfQ0FQX09OTElORSAgICAgICAgICAiT25saW5lIg0KICAgIElEU19DQVBfT0ZGTElORSAgICAgICAgICJPZmZsaW5lIg0KICAgIElEU19DQVBfSU5WSVNJQkxFICAgICAgICJJbnZpc2libGUiDQpFTkQNCg0KU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUgDQpCRUdJTg0KICAgIElEU19DQVBfTUVOVUlURU0zMjc4NiAgICJTZXQgT25saW5lIFN0YXR1czoiDQogICAgSURTX0NBUF9NRU5VSVRFTTMyNzkwICAgIlVSSSBBY3Rpb24iDQpFTkQNCg0KI2VuZGlmICAgIC8vIEVuZ2xpc2ggKFUuUy4pIHJlc291cmNlcw0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCg0KDQoNCiNpZm5kZWYgQVBTVFVESU9fSU5WT0tFRA0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCi8vDQovLyBHZW5lcmF0ZWQgZnJvbSB0aGUgVEVYVElOQ0xVREUgMyByZXNvdXJjZS4NCi8vDQojZGVmaW5lIF9BRlhfTk9fU1BMSVRURVJfUkVTT1VSQ0VTDQojZGVmaW5lIF9BRlhfTk9fT0xFX1JFU09VUkNFUw0KI2RlZmluZSBfQUZYX05PX1RSQUNLRVJfUkVTT1VSQ0VTDQojZGVmaW5lIF9BRlhfTk9fUFJPUEVSVFlfUkVTT1VSQ0VTDQoNCiNpZiAhZGVmaW5lZChBRlhfUkVTT1VSQ0VfRExMKSB8fCBkZWZpbmVkKEFGWF9UQVJHX0VOVSkNCiNpZmRlZiBfV0lOMzINCkxBTkdVQUdFIDksIDENCiNwcmFnbWEgY29kZV9wYWdlKDEyNTIpDQojZW5kaWYgLy9fV0lOMzINCiNpbmNsdWRlICJyZXNcUG9ja2V0UEoucmMyIiAgLy8gbm9uLU1pY3Jvc29mdCBlTWJlZGRlZCBWaXN1YWwgQysrIGVkaXRlZCByZXNvdXJjZXMNCiNpbmNsdWRlICJhZnhyZXMucmMiICAgICAgICAgLy8gU3RhbmRhcmQgY29tcG9uZW50cw0KI2luY2x1ZGUgIndjZXJlcy5yYyIgICAgICAgICAvLyBXQ0Utc3BlY2lmaWMgY29tcG9uZW50cw0KI2VuZGlmDQoNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQojZW5kaWYgICAgLy8gbm90IEFQU1RVRElPX0lOVk9LRUQNCg0K