LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBTcGFuaXNoIChHdWF0ZW1hbGEpCiAqCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZCBmb3IgQ29kZVdlYXZlcnMKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoMTI1MikKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfU1BBTklTSCwgU1VCTEFOR19TUEFOSVNIX0dVQVRFTUFMQQp7CiAgTE9DQUxFX0ZPTlRTSUdOQVRVUkUgTCJceDAwMmZceDgwMDBceDM4MDhceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDFceDAwMDBceDAwMDBceDQwMDBceDAwMTNceDAwMDBceDAwMDBceGM1ZDQiCiAgTE9DQUxFX0lDQUxFTkRBUlRZUEUgIjEiCiAgTE9DQUxFX0lDRU5UVVJZICIxIgogIExPQ0FMRV9JQ09VTlRSWSAiNTAyIgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIwIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIxIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MiIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODUwIgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjUwMiIKICBMT0NBTEVfSURFRkFVTFRFQkNESUNDT0RFUEFHRSAiMjAyODQiCiAgTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UgIjEwMGEiCiAgTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UgIjEwMDAwIgogIExPQ0FMRV9JREVGQVVMVFVOSVhDT0RFUEFHRSAiMjg1OTEiCiAgTE9DQUxFX0lESUdJVFMgIjIiCiAgTE9DQUxFX0lESUdJVFNVQlNUSVRVVElPTiAiMSIKICBMT0NBTEVfSUZJUlNUREFZT0ZXRUVLICI2IgogIExPQ0FMRV9JRklSU1RXRUVLT0ZZRUFSICIwIgogIExPQ0FMRV9JSU5UTENVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lMQU5HVUFHRSAiMTAwYSIKICBMT0NBTEVfSUxEQVRFICIxIgogIExPQ0FMRV9JTFpFUk8gIjEiCiAgTE9DQUxFX0lNRUFTVVJFICIwIgogIExPQ0FMRV9JTU9OTFpFUk8gIjEiCiAgTE9DQUxFX0lORUdDVVJSICIwIgogIExPQ0FMRV9JTkVHTlVNQkVSICIxIgogIExPQ0FMRV9JTkVHU0VQQllTUEFDRSAiMCIKICBMT0NBTEVfSU5FR1NJR05QT1NOICIwIgogIExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICIxIgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMCIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIzIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lUSU1FICIwIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIxIgogIExPQ0FMRV9TMTE1OSAiYS5tLiIKICBMT0NBTEVfUzIzNTkgInAubS4iCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiR1RNIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgIkx1biIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICJNYXIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAiTWnpIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgIkp1ZSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICJWaWUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAiU+FiIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgIkRvbSIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJFU0ciCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICJFbmUiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICJGZWIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICJNYXIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICJBYnIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICJNYXkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICJKdW4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICJKdWwiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICJBZ28iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICJTZXAiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAiT2N0IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIk5vdiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICJEaWMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiR3VhdGVtYWxhIgogIExPQ0FMRV9TQ1VSUkVOQ1kgIlEiCiAgTE9DQUxFX1NEQVRFICIvIgogIExPQ0FMRV9TREFZTkFNRTEgIkx1bmVzIgogIExPQ0FMRV9TREFZTkFNRTIgIk1hcnRlcyIKICBMT0NBTEVfU0RBWU5BTUUzICJNaelyY29sZXMiCiAgTE9DQUxFX1NEQVlOQU1FNCAiSnVldmVzIgogIExPQ0FMRV9TREFZTkFNRTUgIlZpZXJuZXMiCiAgTE9DQUxFX1NEQVlOQU1FNiAiU+FiYWRvIgogIExPQ0FMRV9TREFZTkFNRTcgIkRvbWluZ28iCiAgTE9DQUxFX1NERUNJTUFMICIuIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiR3VhdGVtYWxhIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIkd1YXRlbWFsYW4gUXVldHphbCIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJTcGFuaXNoIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIkdUUSIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiR1QiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAiZXMiCiAgTE9DQUxFX1NMQU5HVUFHRSAiU3BhbmlzaCAoR3VhdGVtYWxhKSIKICBMT0NBTEVfU0xJU1QgIiwiCiAgTE9DQUxFX1NMT05HREFURSAiZGRkZCwgZGQnIGRlICdNTU1NJyBkZSAneXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIi4iCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAiRW5lcm8iCiAgTE9DQUxFX1NNT05USE5BTUUyICJGZWJyZXJvIgogIExPQ0FMRV9TTU9OVEhOQU1FMyAiTWFyem8iCiAgTE9DQUxFX1NNT05USE5BTUU0ICJBYnJpbCIKICBMT0NBTEVfU01PTlRITkFNRTUgIk1heW8iCiAgTE9DQUxFX1NNT05USE5BTUU2ICJKdW5pbyIKICBMT0NBTEVfU01PTlRITkFNRTcgIkp1bGlvIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiQWdvc3RvIgogIExPQ0FMRV9TTU9OVEhOQU1FOSAiU2VwdGllbWJyZSIKICBMT0NBTEVfU01PTlRITkFNRTEwICJPY3R1YnJlIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIk5vdmllbWJyZSIKICBMT0NBTEVfU01PTlRITkFNRTEyICJEaWNpZW1icmUiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIiwiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAiR3VhdGVtYWxhIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIlF1ZXR6YWwiCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIjAxMjM0NTY3ODkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAiRXNwYfFvbCIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0hPUlREQVRFICJkZC9NTS95eXl5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAiLCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJoaDptbTpzcyB0dCIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTScgZGUgJ3l5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIldlc3Rlcm4gRXVyb3BlIGFuZCBVbml0ZWQgU3RhdGVzIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkNlbnRyYWwgRXVyb3BlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aWMiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlZWsiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaWMiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJraWMiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwYW5lc2UiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVhbiIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlRyYWRpdGlvbmFsIENoaW5lc2UiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlNpbXBsaWZpZWQgQ2hpbmVzZSIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRoYWkiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJldyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmljIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1lc2UiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWMiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpYW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZW5pYW4iCn0K