LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBUdXJraXNoCiAqCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZCBmb3IgQ29kZXdlYXZlcnMKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoMTI1NCkKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfVFVSS0lTSCwgU1VCTEFOR19ERUZBVUxUCnsKICBMT0NBTEVfRk9OVFNJR05BVFVSRSBMIlx4MDAyZlx4ODAwMFx4MzgwOFx4MTAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAxMFx4MDAwMFx4MDAwMFx4MDEwMFx4MDAxMlx4MDAwMFx4MDAwMFx4YzVkNCIKICBMT0NBTEVfSUNBTEVOREFSVFlQRSAiMSIKICBMT0NBTEVfSUNFTlRVUlkgIjEiCiAgTE9DQUxFX0lDT1VOVFJZICI5MCIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMyIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMSIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTQiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg1NyIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICI5MCIKICBMT0NBTEVfSURFRkFVTFRFQkNESUNDT0RFUEFHRSAiMjA5MDUiCiAgTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UgIjA0MWYiCiAgTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UgIjEwMDgxIgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA0MWYiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiOCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMCIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMSIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMSIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJUVVIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAiUHp0IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgIlNhbCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICLHYXIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAiUGVyIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgIkN1bSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICJDbXQiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAiUGF6IgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIlRSSyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgIk9jYSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgIt51YiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIk1hciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgIk5pcyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIk1heSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgIkhheiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgIlRlbSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIkHwdSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgIkV5bCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICJFa2kiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAiS2FzIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgIkFyYSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJUdXJrZXkiCiAgTE9DQUxFX1NDVVJSRU5DWSAiVEwiCiAgTE9DQUxFX1NEQVRFICIuIgogIExPQ0FMRV9TREFZTkFNRTEgIlBhemFydGVzaSIKICBMT0NBTEVfU0RBWU5BTUUyICJTYWz9IgogIExPQ0FMRV9TREFZTkFNRTMgIsdhcv5hbWJhIgogIExPQ0FMRV9TREFZTkFNRTQgIlBlcv5lbWJlIgogIExPQ0FMRV9TREFZTkFNRTUgIkN1bWEiCiAgTE9DQUxFX1NEQVlOQU1FNiAiQ3VtYXJ0ZXNpIgogIExPQ0FMRV9TREFZTkFNRTcgIlBhemFyIgogIExPQ0FMRV9TREVDSU1BTCAiLCIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIlR1cmtleSIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJUdXJraXNoIExpcmEiCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiVHVya2lzaCIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJUUkwiCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIlRSIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgInRyIgogIExPQ0FMRV9TTEFOR1VBR0UgIlR1cmtpc2giCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgImRkIE1NTU0geXl5eSBkZGRkIgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLCIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICJPY2FrIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAi3nViYXQiCiAgTE9DQUxFX1NNT05USE5BTUUzICJNYXJ0IgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiTmlzYW4iCiAgTE9DQUxFX1NNT05USE5BTUU1ICJNYXn9cyIKICBMT0NBTEVfU01PTlRITkFNRTYgIkhhemlyYW4iCiAgTE9DQUxFX1NNT05USE5BTUU3ICJUZW1tdXoiCiAgTE9DQUxFX1NNT05USE5BTUU4ICJB8HVzdG9zIgogIExPQ0FMRV9TTU9OVEhOQU1FOSAiRXls/GwiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAiRWtpbSIKICBMT0NBTEVfU01PTlRITkFNRTExICJLYXP9bSIKICBMT0NBTEVfU01PTlRITkFNRTEyICJBcmFs/WsiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIi4iCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAiVPxya2l5ZSIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICJU/HJrIExpcmFz/SIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICJU/HJr52UiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NIT1JUREFURSAiZGQuTU0ueXl5eSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIi4iCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiSEg6bW06c3MiCiAgTE9DQUxFX1NZRUFSTU9OVEggIk1NTU0geXl5eSIKfQo=