LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBWaWV0bmFtZXNlCiAqCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZCBmb3IgQ29kZXdlYXZlcnMKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoMTI1OCkKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfVklFVE5BTUVTRSwgU1VCTEFOR19ERUZBVUxUCnsKICBMT0NBTEVfRk9OVFNJR05BVFVSRSBMIlx4MDAyZlx4ODAwMFx4MDAwYVx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDEwMFx4MDAwMFx4ODAwMFx4MDAwMFx4MDExM1x4MDAwMFx4ODAwMFx4YzVkNCIKICBMT0NBTEVfSUNBTEVOREFSVFlQRSAiMSIKICBMT0NBTEVfSUNFTlRVUlkgIjEiCiAgTE9DQUxFX0lDT1VOVFJZICI4NCIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMyIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMSIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTgiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjEyNTgiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiODQiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjUwMCIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQyYSIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMDAiCiAgTE9DQUxFX0lESUdJVFMgIjIiCiAgTE9DQUxFX0lESUdJVFNVQlNUSVRVVElPTiAiMSIKICBMT0NBTEVfSUZJUlNUREFZT0ZXRUVLICIwIgogIExPQ0FMRV9JRklSU1RXRUVLT0ZZRUFSICIwIgogIExPQ0FMRV9JSU5UTENVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lMQU5HVUFHRSAiMDQyYSIKICBMT0NBTEVfSUxEQVRFICIxIgogIExPQ0FMRV9JTFpFUk8gIjAiCiAgTE9DQUxFX0lNRUFTVVJFICIwIgogIExPQ0FMRV9JTU9OTFpFUk8gIjEiCiAgTE9DQUxFX0lORUdDVVJSICI4IgogIExPQ0FMRV9JTkVHTlVNQkVSICIxIgogIExPQ0FMRV9JTkVHU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSU5FR1NJR05QT1NOICIxIgogIExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIxIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjAiCiAgTE9DQUxFX0lUSU1FICIwIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIwIgogIExPQ0FMRV9TMTE1OSAiU0EiCiAgTE9DQUxFX1MyMzU5ICJDSCIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJWTk0iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAiaGFpIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgImJhIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgInT9IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgIm7jbSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICJzYex1IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTYgImJh0nkiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAiY24iCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiVklUIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAidGgxIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAidGgyIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAidGgzIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAidGg0IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAidGg1IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAidGg2IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAidGg3IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAidGg4IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAidGg5IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgInRoMTAiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAidGgxMSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICJ0aDEyIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIlZpZXQgTmFtIgogIExPQ0FMRV9TQ1VSUkVOQ1kgIv4iCiAgTE9DQUxFX1NEQVRFICIvIgogIExPQ0FMRV9TREFZTkFNRTEgInRo/ewgaGFpIgogIExPQ0FMRV9TREFZTkFNRTIgInRo/ewgYmEiCiAgTE9DQUxFX1NEQVlOQU1FMyAidGj97CB0/SIKICBMT0NBTEVfU0RBWU5BTUU0ICJ0aP3sIG7jbSIKICBMT0NBTEVfU0RBWU5BTUU1ICJ0aP3sIHNh7HUiCiAgTE9DQUxFX1NEQVlOQU1FNiAidGj97CBiYdJ5IgogIExPQ0FMRV9TREFZTkFNRTcgImNoddIgbmji8nQiCiAgTE9DQUxFX1NERUNJTUFMICIsIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiVmlldCBOYW0iCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiVmlldG5hbWVzZSBEb25nIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIlZpZXRuYW1lc2UiCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiVk5EIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJWTiIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJ2aSIKICBMT0NBTEVfU0xBTkdVQUdFICJWaWV0bmFtZXNlIgogIExPQ0FMRV9TTElTVCAiLCIKICBMT0NBTEVfU0xPTkdEQVRFICJkZCBNTU1NIHl5eXkiCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIsIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgInRoYexuZyBt9PJ0IgogIExPQ0FMRV9TTU9OVEhOQU1FMiAidGhh7G5nIGhhaSIKICBMT0NBTEVfU01PTlRITkFNRTMgInRoYexuZyBiYSIKICBMT0NBTEVfU01PTlRITkFNRTQgInRoYexuZyB0/SIKICBMT0NBTEVfU01PTlRITkFNRTUgInRoYexuZyBu420iCiAgTE9DQUxFX1NNT05USE5BTUU2ICJ0aGHsbmcgc2HsdSIKICBMT0NBTEVfU01PTlRITkFNRTcgInRoYexuZyBiYdJ5IgogIExPQ0FMRV9TTU9OVEhOQU1FOCAidGhh7G5nIHRh7G0iCiAgTE9DQUxFX1NNT05USE5BTUU5ICJ0aGHsbmcgY2hp7G4iCiAgTE9DQUxFX1NNT05USE5BTUUxMCAidGhh7G5nIG399cxpIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgInRoYexuZyBt/fXMaSBt9PJ0IgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgInRoYexuZyBt/fXMaSBoYWkiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIi4iCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAiVmnq8nQgTmFtIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgTCJEb1x4MDMwMlx4MDMwMG5nIgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgIlRp6uxuZyBWaerydCBOYW0iCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NIT1JUREFURSAiZGQvTU0veXl5eSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIi4iCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiaDptbTpzcyB0dCIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5Igp9Cg==