LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBCZWxhcnVzaWFuCiAqCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZCBmb3IgQ29kZVdlYXZlcnMKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoMTI1MSkKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfQkVMQVJVU0lBTiwgU1VCTEFOR19ERUZBVUxUCnsKICBMT0NBTEVfRk9OVFNJR05BVFVSRSBMIlx4MDIwM1x4ODAwMFx4Mzg0OFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwNFx4MDAwMFx4MDAwMFx4MDAwMlx4MDAwNFx4MDAwMFx4MDAwMFx4MDIwMiIKICBMT0NBTEVfSUNBTEVOREFSVFlQRSAiMSIKICBMT0NBTEVfSUNFTlRVUlkgIjEiCiAgTE9DQUxFX0lDT1VOVFJZICIzNzUiCiAgTE9DQUxFX0lDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JQ1VSUkVOQ1kgIjMiCiAgTE9DQUxFX0lEQVRFICIxIgogIExPQ0FMRV9JREFZTFpFUk8gIjEiCiAgTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFICIxMjUxIgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI4NjYiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiMzc1IgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICI1MDAiCiAgTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UgIjA0MjMiCiAgTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UgIjEwMDA3IgogIExPQ0FMRV9JREVGQVVMVFVOSVhDT0RFUEFHRSAiMTI1MSIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDIzIgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMSIKICBMT0NBTEVfSU5FR0NVUlIgIjgiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSU5FVVRSQUwgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIxIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjAiCiAgTE9DQUxFX0lSRUFESU5HTEFZT1VUICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJCTFIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAi7+0iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAi4KIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAi8fAiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAi9/YiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAi7/IiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAi8eEiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAi7eQiCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiQkVMIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAi0fLzIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAiy/7yIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAi0eDqIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAiyvDgIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAizODpIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAi1/3wIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAiy7PvIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAixu2zIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAiwuXwIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIsrg8SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICLLs/EiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAi0e3lIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIkJlbGFydXMiCiAgTE9DQUxFX1NDVVJSRU5DWSAi8PPhLiIKICBMT0NBTEVfU0RBVEUgIi4iCiAgTE9DQUxFX1NEQVlOQU1FMSAi7+Dt/+Tn5evg6iIKICBMT0NBTEVfU0RBWU5BTUUyICLgovLu8ODqIgogIExPQ0FMRV9TREFZTkFNRTMgIvHl8ODk4CIKICBMT0NBTEVfU0RBWU5BTUU0ICL34Pbi5fAiCiAgTE9DQUxFX1NEQVlOQU1FNSAi7//y7bP24CIKICBMT0NBTEVfU0RBWU5BTUU2ICLx8+Hu8uAiCiAgTE9DQUxFX1NEQVlOQU1FNyAi7f/k5+Xr/yIKICBMT0NBTEVfU0RFQ0lNQUwgIiwiCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJCZWxhcnVzIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIkJlbGFydXNpYW4gUnVibGUiCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiQmVsYXJ1c2lhbiIKICBMT0NBTEVfU0dST1VQSU5HICIzOzMiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJCWVIiCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIkJZIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgImJlIgogIExPQ0FMRV9TTEFOR1VBR0UgIkJlbGFydXNpYW4iCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgImQgTU1NTSB5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLCIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzMiCiAgTE9DQUxFX1NNT05USE5BTUUxICLR8vPk5+Xt/CIKICBMT0NBTEVfU01PTlRITkFNRTIgIsv+8vsiCiAgTE9DQUxFX1NNT05USE5BTUUzICLR4Org4rPqIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiyvDg8eDis+oiCiAgTE9DQUxFX1NNT05USE5BTUU1ICLM4OkiCiAgTE9DQUxFX1NNT05USE5BTUU2ICLX/fDi5e38IgogIExPQ0FMRV9TTU9OVEhOQU1FNyAiy7Pv5e38IgogIExPQ0FMRV9TTU9OVEhOQU1FOCAixu2z4uXt/CIKICBMT0NBTEVfU01PTlRITkFNRTkgIsLl8ODx5e38IgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIsrg8fLw+/fts+oiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAiy7Px8uDv4OQiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAi0e3l5uDt/CIKICBMT0NBTEVfU01PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NNT05USE9VU0FORFNFUCAiICIKICBMT0NBTEVfU05BTUUgImJlLUJZIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgIsHl6+Dw8/H8IgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIvDz4eXr/CIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRURJU1BMQVlOQU1FICLB5evg8PPx6uD/ICjB5evg8PPx/CkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAiweXr4PDz8erg/yIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU09QRU5UWVBFTEFOR1VBR0VUQUcgIkJFTCAiCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NDUklQVFMgIkN5cmw7IgogIExPQ0FMRV9TU0hPUlREQVRFICJkZC5NTS55eXl5IgogIExPQ0FMRV9TU0hPUlRUSU1FICJIOm1tIgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAiICIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJIOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NIHl5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIldlc3Rlcm4gRXVyb3BlIGFuZCBVbml0ZWQgU3RhdGVzIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkNlbnRyYWwgRXVyb3BlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aWMiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlZWsiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaWMiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJraWMiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwYW5lc2UiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVhbiIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlRyYWRpdGlvbmFsIENoaW5lc2UiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlNpbXBsaWZpZWQgQ2hpbmVzZSIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRoYWkiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJldyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmljIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1lc2UiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWMiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpYW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZW5pYW4iCn0K