LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBBcmFiaWMgKFN5cmlhKQogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGVXZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTYpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0FSQUJJQywgU1VCTEFOR19BUkFCSUNfU1lSSUEKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHg2MGFmXHg4MDAwXHgzODQ4XHgxMDAwXHgwMDA4XHgwMDAwXHgwMDAwXHgwODAwXHgwMDQwXHgwMDAwXHgwMDAwXHgyMDAwXHgwMDQwXHgwMDAwXHgwMDAwXHgyMDA4IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjk2MyIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMiIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMSIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTYiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjcyMCIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICI5NjMiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwNDIwIgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIyODAxIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwNCIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NTk2IgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjAiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiNSIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjI4MDEiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiMyIKICBMT0NBTEVfSU5FR05VTUJFUiAiMyIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjAiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMiIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIxIgogIExPQ0FMRV9JTkVVVFJBTCAiMCIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjYiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjIiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSVJFQURJTkdMQVlPVVQgIjEiCiAgTE9DQUxFX0lUSU1FICIwIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIxIgogIExPQ0FMRV9TMTE1OSAi1SIKICBMT0NBTEVfUzIzNTkgIuMiCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiU1lSIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgIsfhx8vk7eQiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAix+HL4cfLx8EiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAix+HH0cjax8EiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAix+HO4+3TIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgIsfhzOPaySIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICLH4dPIyiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICLH4cfNzyIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJBUlMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICLfx+Tm5KDH4cvH5O0iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICLUyMfYIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAiwtDH0SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgIuTt08fkIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAiw+3H0SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgIs3S7dHH5CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgIsrj5tIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICLCyCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgIsPt4ebhIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIsrU0e3koMfhw+bhIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIsrU0e3koMfhy8fk7SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICLfx+Tm5KDH4cPm4SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJTeXJpYSIKICBMT0NBTEVfU0NVUlJFTkNZICLhLtMu/iIKICBMT0NBTEVfU0RBVEUgIi8iCiAgTE9DQUxFX1NEQVlOQU1FMSAix+HHy+Tt5CIKICBMT0NBTEVfU0RBWU5BTUUyICLH4cvhx8vHwSIKICBMT0NBTEVfU0RBWU5BTUUzICLH4cfRyNrHwSIKICBMT0NBTEVfU0RBWU5BTUU0ICLH4c7j7dMiCiAgTE9DQUxFX1NEQVlOQU1FNSAix+HM49rJIgogIExPQ0FMRV9TREFZTkFNRTYgIsfh08jKIgogIExPQ0FMRV9TREFZTkFNRTcgIsfhx83PIgogIExPQ0FMRV9TREVDSU1BTCAiLiIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIlN5cmlhIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIlN5cmlhbiBQb3VuZCIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJBcmFiaWMiCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiU1lQIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJTWSIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJhciIKICBMT0NBTEVfU0xBTkdVQUdFICJBcmFiaWMgKFN5cmlhKSIKICBMT0NBTEVfU0xJU1QgIjsiCiAgTE9DQUxFX1NMT05HREFURSAiZGQgTU1NTSwgeXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIi4iCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAi38fk5uSgx+HLx+TtIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAi1MjH2CIKICBMT0NBTEVfU01PTlRITkFNRTMgIsLQx9EiCiAgTE9DQUxFX1NNT05USE5BTUU0ICLk7dPH5CIKICBMT0NBTEVfU01PTlRITkFNRTUgIsPtx9EiCiAgTE9DQUxFX1NNT05USE5BTUU2ICLN0u3Rx+QiCiAgTE9DQUxFX1NNT05USE5BTUU3ICLK4+bSIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiwsgiCiAgTE9DQUxFX1NNT05USE5BTUU5ICLD7eHm4SIKICBMT0NBTEVfU01PTlRITkFNRTEwICLK1NHt5KDH4cPm4SIKICBMT0NBTEVfU01PTlRITkFNRTExICLK1NHt5KDH4cvH5O0iCiAgTE9DQUxFX1NNT05USE5BTUUxMiAi38fk5uSgx+HD5uEiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIiwiCiAgTE9DQUxFX1NOQU1FICJhci1TWSIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICLT5tHtxyIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICLM5O3loNPm0e0iCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgTCJceDA2NjBceDA2NjFceDA2NjJceDA2NjNceDA2NjRceDA2NjVceDA2NjZceDA2NjdceDA2NjhceDA2NjkiCiAgTE9DQUxFX1NOQVRJVkVESVNQTEFZTkFNRSAix+Ha0cjtySAo0+bR7ccpIgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgIsfh2tHI7ckiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NPUEVOVFlQRUxBTkdVQUdFVEFHICJBUkEgIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTQ1JJUFRTICJBcmFiOyIKICBMT0NBTEVfU1NIT1JUREFURSAiZGQvTU0veXl5eSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIiwiCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiaGg6bW06c3MgdHQiCiAgTE9DQUxFX1NZRUFSTU9OVEggIk1NTU0sIHl5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIldlc3Rlcm4gRXVyb3BlIGFuZCBVbml0ZWQgU3RhdGVzIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkNlbnRyYWwgRXVyb3BlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aWMiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlZWsiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaWMiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJraWMiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwYW5lc2UiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVhbiIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlRyYWRpdGlvbmFsIENoaW5lc2UiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlNpbXBsaWZpZWQgQ2hpbmVzZSIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRoYWkiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJldyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmljIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1lc2UiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWMiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpYW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZW5pYW4iCn0K