LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBHcmVlawogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGVXZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTMpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0dSRUVLLCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDhiXHg4MDAwXHgzODQ5XHgxMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDA4XHgwMDAwXHgwMDAwXHgxMDAwXHgwMDA4XHgwMDAwXHgwMDAwXHgxMDAxIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjMwIgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIzIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIwIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MyIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiNzM3IgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjMwIgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICIyMDI3MyIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQwOCIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMDYiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODU5NyIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDA4IgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMCIKICBMT0NBTEVfSU5FR0NVUlIgIjgiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSVRJTUUgIjAiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjAiCiAgTE9DQUxFX1MxMTU5ICLw7CIKICBMT0NBTEVfUzIzNTkgIuzsIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIkdSQyIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICLE5fUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAi1PHpIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgItTl9CIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICLQ5ewiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAi0OHxIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTYgItPh4iIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICLK9fEiCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiRUxMIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAiyeHtIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAi1uXiIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAizOHxIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAiwfDxIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAizOH6IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAiye/17SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgIsnv9esiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICLB9eMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICLT5fAiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAiz+r0IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIs3v5SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICLE5eoiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiR3JlZWNlIgogIExPQ0FMRV9TQ1VSUkVOQ1kgIoAiCiAgTE9DQUxFX1NEQVRFICIvIgogIExPQ0FMRV9TREFZTkFNRTEgIsTl9fTd8eEiCiAgTE9DQUxFX1NEQVlOQU1FMiAi1PHf9OciCiAgTE9DQUxFX1NEQVlOQU1FMyAi1OX03PH05yIKICBMT0NBTEVfU0RBWU5BTUU0ICLQ3ezw9OciCiAgTE9DQUxFX1NEQVlOQU1FNSAi0OHx4fPq5fXeIgogIExPQ0FMRV9TREFZTkFNRTYgItPc4uLh9O8iCiAgTE9DQUxFX1NEQVlOQU1FNyAiyvXx6eHq3iIKICBMT0NBTEVfU0RFQ0lNQUwgIiwiCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJHcmVlY2UiCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiRXVybyIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJHcmVlayIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJFVVIiCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIkdSIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgImVsIgogIExPQ0FMRV9TTEFOR1VBR0UgIkdyZWVrIgogIExPQ0FMRV9TTElTVCAiOyIKICBMT0NBTEVfU0xPTkdEQVRFICJkZGRkLCBkIE1NTU0geXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIiwiCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAiyeHt7/Xc8env8iIKICBMT0NBTEVfU01PTlRITkFNRTIgItbl4vHv9dzx6e/yIgogIExPQ0FMRV9TTU9OVEhOQU1FMyAizNzx9Onv8iIKICBMT0NBTEVfU01PTlRITkFNRTQgIsHw8d/r6e/yIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAizNzp7/IiCiAgTE9DQUxFX1NNT05USE5BTUU2ICLJ7/3t6e/yIgogIExPQ0FMRV9TTU9OVEhOQU1FNyAiye/96+nv8iIKICBMT0NBTEVfU01PTlRITkFNRTggIsH94+/18/Tv8iIKICBMT0NBTEVfU01PTlRITkFNRTkgItPl8PTd7OLx6e/yIgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIs/q9P7i8env8iIKICBMT0NBTEVfU01PTlRITkFNRTExICLN793s4vHp7/IiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAixOXq3ezi8env8iIKICBMT0NBTEVfU01PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NNT05USE9VU0FORFNFUCAiLiIKICBMT0NBTEVfU05BTUUgImVsLUdSIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgIsXr69zk4SIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICLl9fH+IgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgIuXr6+ft6ercIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTSE9SVERBVEUgImQvTS95eXl5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAiLiIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJoOm1tOnNzIHR0IgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NIHl5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIldlc3Rlcm4gRXVyb3BlIGFuZCBVbml0ZWQgU3RhdGVzIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkNlbnRyYWwgRXVyb3BlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aWMiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlZWsiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaWMiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJraWMiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwYW5lc2UiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVhbiIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlRyYWRpdGlvbmFsIENoaW5lc2UiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlNpbXBsaWZpZWQgQ2hpbmVzZSIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRoYWkiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJldyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmljIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1lc2UiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWMiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpYW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZW5pYW4iCn0K