LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBGYXJzaQogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGVXZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTYpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0ZBUlNJLCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHg2MGFmXHg4MDAwXHgzODQ4XHgxMDAwXHgwMDA4XHgwMDAwXHgwMDAwXHgwODAwXHgwMDQwXHgwMDAwXHgwMDAwXHgyMDAwXHgwMDQwXHgwMDAwXHgwMDAwXHgyMDA4IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIyIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjk4MSIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMiIKICBMT0NBTEVfSURBVEUgIjIiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMSIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTYiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjcyMCIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICI5ODEiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwNDIwIgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDI5IgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwNCIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjY1MDAxIgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjAiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiNiIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA0MjkiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiMyIKICBMT0NBTEVfSU5FR05VTUJFUiAiMyIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjAiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMiIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIxIgogIExPQ0FMRV9JTkVVVFJBTCAiMCIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjIiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjIiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSVJFQURJTkdMQVlPVVQgIjAiCiAgTE9DQUxFX0lUSU1FICIwIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIxIgogIExPQ0FMRV9TMTE1OSAi3i7ZIgogIExPQ0FMRV9TMjM1OSAiyC7ZIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIklSTiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICLP5tTkyOUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAi0+Wg1OTI5SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICKN5cfR1OTI5SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICKB5MzU5MjlIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgIszj2uUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAi1OTI5SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICLt39TkyOUiCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiRkFSIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAijsfk5u3lIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAi3ebR7eUiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICLjx9HTIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAiwubR7eEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICLj7CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgIo7mxuQiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICKO5sbt5SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIsfmyiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgItOBysfjyNEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAix/XfysjRIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIuTmx+PI0SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICLP08fjyNEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiSXJhbiIKICBMT0NBTEVfU0NVUlJFTkNZICLR7cfhIgogIExPQ0FMRV9TREFURSAiLyIKICBMT0NBTEVfU0RBWU5BTUUxICLP5tTkyOUiCiAgTE9DQUxFX1NEQVlOQU1FMiAi0+Wg1OTI5SIKICBMT0NBTEVfU0RBWU5BTUUzICKN5cfR1OTI5SIKICBMT0NBTEVfU0RBWU5BTUU0ICKB5MzU5MjlIgogIExPQ0FMRV9TREFZTkFNRTUgIszj2uUiCiAgTE9DQUxFX1NEQVlOQU1FNiAi1OTI5SIKICBMT0NBTEVfU0RBWU5BTUU3ICLt39TkyOUiCiAgTE9DQUxFX1NERUNJTUFMICIuIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiSXJhbiIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJJcmFuaWFuIFJpYWwiCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiRmFyc2kiCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiSVJSIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJJUiIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJmYSIKICBMT0NBTEVfU0xBTkdVQUdFICJGYXJzaSIKICBMT0NBTEVfU0xJU1QgIjsiCiAgTE9DQUxFX1NMT05HREFURSAieXl5eS9NTS9kZCIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIi8iCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAijsfk5u3lIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAi3ebR7eUiCiAgTE9DQUxFX1NNT05USE5BTUUzICLjx9HTIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiwubR7eEiCiAgTE9DQUxFX1NNT05USE5BTUU1ICLj7CIKICBMT0NBTEVfU01PTlRITkFNRTYgIo7mxuQiCiAgTE9DQUxFX1NNT05USE5BTUU3ICKO5sbt5SIKICBMT0NBTEVfU01PTlRITkFNRTggIsfmyiIKICBMT0NBTEVfU01PTlRITkFNRTkgItOBysfjyNEiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAix/XfysjRIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIuTmx+PI0SIKICBMT0NBTEVfU01PTlRITkFNRTEyICLP08fjyNEiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIiwiCiAgTE9DQUxFX1NOQU1FICJmYS1JUiIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICLH7dHH5CIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICLR7MfhIgogIExPQ0FMRV9TTkFUSVZFRElHSVRTIEwiXHgwNmYwXHgwNmYxXHgwNmYyXHgwNmYzXHgwNmY0XHgwNmY1XHgwNmY2XHgwNmY3XHgwNmY4XHgwNmY5IgogIExPQ0FMRV9TTkFUSVZFRElTUExBWU5BTUUgIt3H0dPsICjH7dHH5CkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAi3cfR0+wiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NDUklQVFMgIkFyYWI7IgogIExPQ0FMRV9TU0hPUlREQVRFICJ5eXl5L01NL2RkIgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAiLCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJoaDptbTpzcyB0dCIKICBMT0NBTEVfU1lFQVJNT05USCAieXl5eS9NTSIKCiAgTEdSUElEX1dFU1RFUk5fRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiV2VzdGVybiBFdXJvcGUgYW5kIFVuaXRlZCBTdGF0ZXMiCiAgTEdSUElEX0NFTlRSQUxfRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiQ2VudHJhbCBFdXJvcGUiCiAgTEdSUElEX0JBTFRJQytMR1JQSURfUkVTX0JBU0UgIkJhbHRpYyIKICBMR1JQSURfR1JFRUsrTEdSUElEX1JFU19CQVNFICJHcmVlayIKICBMR1JQSURfQ1lSSUxMSUMrTEdSUElEX1JFU19CQVNFICJDeXJpbGxpYyIKICBMR1JQSURfVFVSS0lTSCtMR1JQSURfUkVTX0JBU0UgIlR1cmtpYyIKICBMR1JQSURfSkFQQU5FU0UrTEdSUElEX1JFU19CQVNFICJKYXBhbmVzZSIKICBMR1JQSURfS09SRUFOK0xHUlBJRF9SRVNfQkFTRSAiS29yZWFuIgogIExHUlBJRF9UUkFESVRJT05BTF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiVHJhZGl0aW9uYWwgQ2hpbmVzZSIKICBMR1JQSURfU0lNUExJRklFRF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiU2ltcGxpZmllZCBDaGluZXNlIgogIExHUlBJRF9USEFJK0xHUlBJRF9SRVNfQkFTRSAiVGhhaSIKICBMR1JQSURfSEVCUkVXK0xHUlBJRF9SRVNfQkFTRSAiSGVicmV3IgogIExHUlBJRF9BUkFCSUMrTEdSUElEX1JFU19CQVNFICJBcmFiaWMiIAogIExHUlBJRF9WSUVUTkFNRVNFK0xHUlBJRF9SRVNfQkFTRSAiVmlldG5hbWVzZSIKICBMR1JQSURfSU5ESUMrTEdSUElEX1JFU19CQVNFICJJbmRpYyIKICBMR1JQSURfR0VPUkdJQU4rTEdSUElEX1JFU19CQVNFICJHZW9yZ2lhbiIKICBMR1JQSURfQVJNRU5JQU4rTEdSUElEX1JFU19CQVNFICJBcm1lbmlhbiIKfQo=