LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBLeXJneXogKEN5cmlsbGljKQogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGVXZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTEpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0tZUkdZWiwgU1VCTEFOR19ERUZBVUxUCnsKICBMT0NBTEVfRk9OVFNJR05BVFVSRSBMIlx4MDIwM1x4ODAwMFx4Mzg0OFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwNFx4MDAwMFx4MDAwMFx4MDAwMlx4MDAwNFx4MDAwMFx4MDAwMFx4MDIwMiIKICBMT0NBTEVfSUNBTEVOREFSVFlQRSAiMSIKICBMT0NBTEVfSUNFTlRVUlkgIjAiCiAgTE9DQUxFX0lDT1VOVFJZICI5OTYiCiAgTE9DQUxFX0lDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JQ1VSUkVOQ1kgIjMiCiAgTE9DQUxFX0lEQVRFICIxIgogIExPQ0FMRV9JREFZTFpFUk8gIjEiCiAgTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFICIxMjUxIgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI4NjYiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiOTk2IgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICIyMDg4MCIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiNDQwIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwNyIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NTk1IgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjAiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA0NDAiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiOCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMCIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMSIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJLR1oiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAixPgiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAi2PgiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAi2PAiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAiwfgiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAixuwiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAiyPgiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAixvgiCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiS1lSIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAi3+3iIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAi1OXiIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAizODwIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAiwO/wIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAizODpIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAiyP7tIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAiyP7rIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAiwOLjIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAi0eXtIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIs7q8iIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICLN7v8iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAixOXqIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIkt5cmd5enN0YW4iCiAgTE9DQUxFX1NDVVJSRU5DWSAi8e7sIgogIExPQ0FMRV9TREFURSAiLiIKICBMT0NBTEVfU0RBWU5BTUUxIEwiXHgwNDE0XHgwNGFmXHgwNDM5XHgwNDQ4XHgwNGU5XHgwNDNjXHgwNDMxXHgwNGFmIgogIExPQ0FMRV9TREFZTkFNRTIgItjl6fjl7OHoIgogIExPQ0FMRV9TREFZTkFNRTMgItjg8Pjl7OHoIgogIExPQ0FMRV9TREFZTkFNRTQgIsHl6fjl7OHoIgogIExPQ0FMRV9TREFZTkFNRTUgIsbz7OAiCiAgTE9DQUxFX1NEQVlOQU1FNiAiyPjl7OHoIgogIExPQ0FMRV9TREFZTkFNRTcgIsbl6vjl7OHoIgogIExPQ0FMRV9TREVDSU1BTCAiLCIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIkt5cmd5enN0YW4iCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAic29tIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIkt5cmd5eiIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJLR1MiCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIktHIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgImt5IgogIExPQ0FMRV9TTEFOR1VBR0UgIkt5cmd5eiAoQ3lyaWxsaWMpIgogIExPQ0FMRV9TTElTVCAiOyIKICBMT0NBTEVfU0xPTkdEQVRFICJkJy0nTU1NTSB5eXl5Jy3mLiciCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICItIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgIt/t4uDw/CIKICBMT0NBTEVfU01PTlRITkFNRTIgItTl4vDg6/wiCiAgTE9DQUxFX1NNT05USE5BTUUzICLM4PDyIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiwO/w5ev8IgogIExPQ0FMRV9TTU9OVEhOQU1FNSAizODpIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAiyP7t/CIKICBMT0NBTEVfU01PTlRITkFNRTcgIsj+6/wiCiAgTE9DQUxFX1NNT05USE5BTUU4ICLA4uPz8fIiCiAgTE9DQUxFX1NNT05USE5BTUU5ICLR5e3y/+Hw/CIKICBMT0NBTEVfU01PTlRITkFNRTEwICLO6vL/4fD8IgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIs3u/+Hw/CIKICBMT0NBTEVfU01PTlRITkFNRTEyICLE5erg4fD8IgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICKgIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgIsr78OP75/Hy4O0iCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAi8e7sIgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgIsr78OP75yIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0hPUlREQVRFICJkZC5NTS55eSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIqAiCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiSDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5Jy3mLiciCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIldlc3Rlcm4gRXVyb3BlIGFuZCBVbml0ZWQgU3RhdGVzIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkNlbnRyYWwgRXVyb3BlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aWMiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlZWsiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaWMiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJraWMiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwYW5lc2UiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVhbiIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlRyYWRpdGlvbmFsIENoaW5lc2UiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlNpbXBsaWZpZWQgQ2hpbmVzZSIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRoYWkiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJldyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmljIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1lc2UiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWMiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpYW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZW5pYW4iCn0K