LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBGYXJzaQogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGV3ZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTYpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0ZBUlNJLCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHg2MGFmXHg4MDAwXHgzODQ4XHgxMDAwXHgwMDA4XHgwMDAwXHgwMDAwXHgwODAwXHgwMDQwXHgwMDAwXHgwMDAwXHgyMDAwXHgwMDQwXHgwMDAwXHgwMDAwXHgyMDA4IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIyIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjk4MSIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMiIKICBMT0NBTEVfSURBVEUgIjIiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMSIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTYiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjcyMCIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICI5ODEiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwNDIwIgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDI5IgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwNCIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIwIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjYiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDI5IgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMSIKICBMT0NBTEVfSU5FR0NVUlIgIjMiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjMiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIwIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjIiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjIiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjIiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSVRJTUUgIjAiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjEiCiAgTE9DQUxFX1MxMTU5ICLeLtkiCiAgTE9DQUxFX1MyMzU5ICLILtkiCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiSVJOIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgIs/m1OTI5SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICLT5aDU5MjlIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgIo3lx9HU5MjlIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgIoHkzNTkyOUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAizOPa5SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICLU5MjlIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgIu3f1OTI5SIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJGQVIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICKOx+Tm7eUiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICLd5tHt5SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIuPH0dMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICLC5tHt4SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIuPsIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAijubG5CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgIo7mxu3lIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAix+bKIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAi04HKx+PI0SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICLH9d/KyNEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAi5ObH48jRIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgIs/Tx+PI0SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJJcmFuIgogIExPQ0FMRV9TQ1VSUkVOQ1kgItHtx+EiCiAgTE9DQUxFX1NEQVRFICIvIgogIExPQ0FMRV9TREFZTkFNRTEgIs/m1OTI5SIKICBMT0NBTEVfU0RBWU5BTUUyICLT5aDU5MjlIgogIExPQ0FMRV9TREFZTkFNRTMgIo3lx9HU5MjlIgogIExPQ0FMRV9TREFZTkFNRTQgIoHkzNTkyOUiCiAgTE9DQUxFX1NEQVlOQU1FNSAizOPa5SIKICBMT0NBTEVfU0RBWU5BTUU2ICLU5MjlIgogIExPQ0FMRV9TREFZTkFNRTcgIu3f1OTI5SIKICBMT0NBTEVfU0RFQ0lNQUwgIi4iCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJJcmFuIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIklyYW5pYW4gUmlhbCIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJGYXJzaSIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJJUlIiCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIklSIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgImZhIgogIExPQ0FMRV9TTEFOR1VBR0UgIkZhcnNpIgogIExPQ0FMRV9TTElTVCAiOyIKICBMT0NBTEVfU0xPTkdEQVRFICJ5eXl5L01NL2RkIgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLyIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICKOx+Tm7eUiCiAgTE9DQUxFX1NNT05USE5BTUUyICLd5tHt5SIKICBMT0NBTEVfU01PTlRITkFNRTMgIuPH0dMiCiAgTE9DQUxFX1NNT05USE5BTUU0ICLC5tHt4SIKICBMT0NBTEVfU01PTlRITkFNRTUgIuPsIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAijubG5CIKICBMT0NBTEVfU01PTlRITkFNRTcgIo7mxu3lIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAix+bKIgogIExPQ0FMRV9TTU9OVEhOQU1FOSAi04HKx+PI0SIKICBMT0NBTEVfU01PTlRITkFNRTEwICLH9d/KyNEiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAi5ObH48jRIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgIs/Tx+PI0SIKICBMT0NBTEVfU01PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NNT05USE9VU0FORFNFUCAiLCIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICLH7dHH5CIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICLR7MfhIgogIExPQ0FMRV9TTkFUSVZFRElHSVRTIEwiXHgwNmYwXHgwNmYxXHgwNmYyXHgwNmYzXHgwNmY0XHgwNmY1XHgwNmY2XHgwNmY3XHgwNmY4XHgwNmY5IgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgIt3H0dPsIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTSE9SVERBVEUgInl5eXkvTU0vZGQiCiAgTE9DQUxFX1NTT1JUTkFNRSAiRGVmYXVsdCIKICBMT0NBTEVfU1RIT1VTQU5EICIsIgogIExPQ0FMRV9TVElNRSAiOiIKICBMT0NBTEVfU1RJTUVGT1JNQVQgImhoOm1tOnNzIHR0IgogIExPQ0FMRV9TWUVBUk1PTlRIICJ5eXl5L01NIgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==