LyoKICoJT0xFMk5MUyBsaWJyYXJ5CiAqICAgICAgU3BhbmlzaCAoTW9kZXJuIFNvcnQpCiAqCiAqIENvcHlyaWdodCAxOTk4IE1hcmNlbCBCYXVyCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCkxPQ1ZBTChMT0NBTEVfSUxBTkdVQUdFLCIwYzBhIikKTE9DVkFMKExPQ0FMRV9TTEFOR1VBR0UsIkVzcGHxb2wiKQpMT0NWQUwoTE9DQUxFX1NFTkdMQU5HVUFHRSwiU3BhbmlzaCAtIE1vZGVybiBTb3J0IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTEFOR05BTUUsImVzbiIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRUxBTkdOQU1FLCJFc3Bh8W9sIChNb2Rlcm5vKSIpCkxPQ1ZBTChMT0NBTEVfSUNPVU5UUlksIjM0IikKTE9DVkFMKExPQ0FMRV9TQ09VTlRSWSwiRXNwYfFhIikKTE9DVkFMKExPQ0FMRV9TRU5HQ09VTlRSWSwiU3BhaW4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSwiRVNQIikKTE9DVkFMKExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUsIkVzcGHxYSIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSwiMDQwYSIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRDT1VOVFJZLCIzNCIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSwiODUwIikKTE9DVkFMKExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSwiMTI1MiIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSwgIjEwMDAwIikKTE9DVkFMKExPQ0FMRV9TTElTVCwgIjsiKQpMT0NWQUwoTE9DQUxFX0lNRUFTVVJFLCAiMCIpCkxPQ1ZBTChMT0NBTEVfU0RFQ0lNQUwsICIsIikKTE9DVkFMKExPQ0FMRV9TVEhPVVNBTkQsICIuIikKTE9DVkFMKExPQ0FMRV9TR1JPVVBJTkcsICIzOzAiKQpMT0NWQUwoTE9DQUxFX0lESUdJVFMsICIyIikKTE9DVkFMKExPQ0FMRV9JTFpFUk8sICIxIikKTE9DVkFMKExPQ0FMRV9JTkVHTlVNQkVSLCAiMSIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRURJR0lUUywgIjAxMjM0NTY3ODkiKQpMT0NWQUwoTE9DQUxFX1NDVVJSRU5DWSwipCIpCkxPQ1ZBTChMT0NBTEVfU0lOVExTWU1CT0wsICJFVVIiKQpMT0NWQUwoTE9DQUxFX1NNT05ERUNJTUFMU0VQLCAiLCIpCkxPQ1ZBTChMT0NBTEVfU01PTlRIT1VTQU5EU0VQLCAiLiIpCkxPQ1ZBTChMT0NBTEVfU01PTkdST1VQSU5HLCAiMzswIikKTE9DVkFMKExPQ0FMRV9JSU5UTENVUlJESUdJVFMsICIwIikKTE9DVkFMKExPQ0FMRV9JQ1VSUkRJR0lUUywgIjAiKQpMT0NWQUwoTE9DQUxFX0lDVVJSRU5DWSwgIjMiKQpMT0NWQUwoTE9DQUxFX0lORUdDVVJSLCAiOCIpCkxPQ1ZBTChMT0NBTEVfU0RBVEUsICIvIikKTE9DVkFMKExPQ0FMRV9TVElNRSwgIjoiKQpMT0NWQUwoTE9DQUxFX1NTSE9SVERBVEUsICJkZC9NTS95eSIpCkxPQ1ZBTChMT0NBTEVfU0xPTkdEQVRFLCAiZGRkZCwgZGQnIGRlICdNTU1NJyBkZSAneXl5eSIpCkxPQ1ZBTChMT0NBTEVfU1RJTUVGT1JNQVQsICJIOm1tOnNzIikKTE9DVkFMKExPQ0FMRV9JREFURSwgIjEiKQpMT0NWQUwoTE9DQUxFX0lMREFURSwgIjEiKQpMT0NWQUwoTE9DQUxFX0lUSU1FLCIxIikKTE9DVkFMKExPQ0FMRV9JVElNRU1BUktQT1NOLCAiMCIpCkxPQ1ZBTChMT0NBTEVfSUNFTlRVUlksICIwIikKTE9DVkFMKExPQ0FMRV9JVExaRVJPLCIxIikKTE9DVkFMKExPQ0FMRV9JREFZTFpFUk8sICIxIikKTE9DVkFMKExPQ0FMRV9JTU9OTFpFUk8sICIxIikKTE9DVkFMKExPQ0FMRV9TMTE1OSwgImEubS4iKQpMT0NWQUwoTE9DQUxFX1MyMzU5LCAicC5tLiIpCkxPQ1ZBTChMT0NBTEVfSUNBTEVOREFSVFlQRSwgIjEiKQpMT0NWQUwoTE9DQUxFX0lPUFRJT05BTENBTEVOREFSLCAiMCIpCkxPQ1ZBTChMT0NBTEVfSUZJUlNUREFZT0ZXRUVLLCAiMCIpCkxPQ1ZBTChMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiwgIjAiKQoKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTEsImx1bmVzIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTIsIm1hcnRlcyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUzLCJtaelyY29sZXMiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNCwianVldmVzIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTUsInZpZXJuZXMiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNiwic+FiYWRvIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTcsImRvbWluZ28iKQoKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTEsImx1biIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUyLCJtYXIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMywibWnpIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTQsImp1ZSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU1LCJ2aWUiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiwic+FiIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTcsImRvbSIpCgpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxLCJlbmVybyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTIsImZlYnJlcm8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUzLCJtYXJ6byIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTQsImFicmlsIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNSwibWF5byIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTYsImp1bmlvIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNywianVsaW8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU4LCJhZ29zdG8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU5LCJzZXB0aWVtYnJlIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTAsIm9jdHVicmUiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMSwibm92aWVtYnJlIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTIsImRpY2llbWJyZSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEzLCIiKQoKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSwiZW5lIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiwiZmViIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMywibWFyIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCwiYWJyIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSwibWF5IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiwianVuIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNywianVsIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCwiYWdvIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSwic2VwIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAsIm9jdCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExLCJub3YiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiwiZGljIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMsIiIpCgpMT0NWQUwoTE9DQUxFX1NQT1NJVElWRVNJR04sICIiKQpMT0NWQUwoTE9DQUxFX1NORUdBVElWRVNJR04sICItIikKTE9DVkFMKExPQ0FMRV9JUE9TU0lHTlBPU04sICIxIikKTE9DVkFMKExPQ0FMRV9JTkVHU0lHTlBPU04sICIxIikKTE9DVkFMKExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMsICIwIikKTE9DVkFMKExPQ0FMRV9JUE9TU0VQQllTUEFDRSwgIjEiKQpMT0NWQUwoTE9DQUxFX0lORUdTWU1QUkVDRURFUywgIjAiKQpMT0NWQUwoTE9DQUxFX0lORUdTRVBCWVNQQUNFLCAiMSIpCkxPQ1ZBTChMT0NBTEVfRk9OVFNJR05BVFVSRSwgIi8iKQpMT0NWQUwoTE9DQUxFX1NJU082MzlMQU5HTkFNRSwiZXMiKQpMT0NWQUwoTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIkVTIikKTE9DVkFMKExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFLCAiMjAyODQiKQpMT0NWQUwoTE9DQUxFX0lQQVBFUlNJWkUsICI5IikKTE9DVkFMKExPQ0FMRV9TRU5HQ1VSUk5BTUUsICJTcGFuaXNoIFBlc2V0YSIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRUNVUlJOQU1FLCAiUGVzZXRhIikKTE9DVkFMKExPQ0FMRV9TWUVBUk1PTlRILCAiTU1NTScgZGUgJ3l5eXkiKQpMT0NWQUwoTE9DQUxFX1NTT1JUTkFNRSwgIkRlZmF1bHQiKQpMT0NWQUwoTE9DQUxFX0lESUdJVFNVQlNUSVRVVElPTiwgIiIiIikK