LyoKICogV2luZUZpbGUKICogU3dlZGlzaCBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDA1IERhdmlkIE5vcmRlbmJlcmcKICogQ29weXJpZ2h0IDIwMDggRGFuaWVsIE55bGFuZGVyIDxwb0BkYW5pZWxueWxhbmRlci5zZT4KICogQ29weXJpZ2h0IDIwMDkgQW5kZXJzIEpvbnNzb24KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI2luY2x1ZGUgInJlc291cmNlLmgiCgpMQU5HVUFHRSBMQU5HX1NXRURJU0gsIFNVQkxBTkdfTkVVVFJBTAoKLyogTWVudSAqLwoKCklETV9XSU5FRklMRSBNRU5VIEZJWEVEIElNUFVSRQp7CiAgICBQT1BVUCAiJkFya2l2IiB7CiAgICAgICAgTUVOVUlURU0gIibWcHBuYVx0RW50ZXIiLCAgICAgICAgICAgICAgIElEX0FDVElWQVRFCiAgICAgICAgTUVOVUlURU0gIiZGbHl0dGEuLi5cdEY3IiwgICAgICAgICAgICAgIElEX0ZJTEVfTU9WRQogICAgICAgIE1FTlVJVEVNICImS29waWVyYS4uLlx0RjgiLCAgICAgICAgICAgICBJRF9GSUxFX0NPUFkKICAgICAgICBNRU5VSVRFTSAiJkkgdXJrbGlwcC4uLlx0RjkiLCAgICAgICAgICAgMTE4CiAgICAgICAgTUVOVUlURU0gIiZUYSBib3J0XHREZWwiLCAgICAgICAgICAgICAgIElEX0ZJTEVfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIiZCeXQgbmFtbi4uLiIsICAgICAgICAgICAgICAgIDEwOQogICAgICAgIE1FTlVJVEVNICImRWdlbnNrYXBlci4uLlx0QWx0K0VudGVyIiwgICBJRF9FRElUX1BST1BFUlRJRVMKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJktvbXByaW1lcmEuLi4iLCAgICAgICAgICAgICAgMTE5CiAgICAgICAgTUVOVUlURU0gIlBhY2thICZ1cHAuLi4iLCAgICAgICAgICAgICAgIDEyMAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImS/ZyLi4uIiwgICAgICAgICAgICAgICAgICAgICBJRF9FWEVDVVRFCiAgICAgICAgTUVOVUlURU0gIiZTa3JpdiB1dC4uLiIsICAgICAgICAgICAgICAgIDEwMgogICAgICAgIE1FTlVJVEVNICJBc3NvY2llcmEuLi4iLCAgICAgICAgICAgICAgICAxMDMKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiU2thcGEgbWFwcC4uLiIsICAgICAgICAgICAgICAgMTExCiAgICAgICAgTUVOVUlURU0gIiZT9msuLi4iLCAgICAgICAgICAgICAgICAgICAgIDEwNAogICAgICAgIE1FTlVJVEVNICImVuRsaiBmaWxlci4uLiIsICAgICAgICAgICAgICAxMTYKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwogICAgICAgIE1FTlVJVEVNICImQXZzbHV0YVx0QWx0K1giLCAgICAgICAgICAgICBJRF9GSUxFX0VYSVQKI2Vsc2UKICAgICAgICBNRU5VSVRFTSAiJkF2c2x1dGEiLCAgICAgICAgICAgICAgICAgICAgSURfRklMRV9FWElUCiNlbmRpZgogICAgfQoKICAgIFBPUFVQICImRGlzayIgewogICAgICAgIE1FTlVJVEVNICImS29waWVyYSBkaXNrLi4uIiwgICAgICAgICAgICAyMDEKICAgICAgICBNRU5VSVRFTSAiJk5hbW5nZSBkaXNrLi4uIiwgICAgICAgICAgICAgMjAyCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZGb3JtYXRlcmEgZGlzay4uLiIsICAgICAgICAgIElEX0ZPUk1BVF9ESVNLCiNpZmRlZiBfV0lOOTUKICAgICAgICBNRU5VSVRFTSAiJlNrYXBhIHN5c3RlbWRpc2suLi4iLCAtMSAvKlRPRE8qLwojZW5kaWYKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQW5zbHV0ICZu5HR2ZXJrc2VuaGV0IiwgICAgICAgSURfQ09OTkVDVF9ORVRXT1JLX0RSSVZFCiAgICAgICAgTUVOVUlURU0gIiZLb3BwbGEgaWZy5W4gbuR0dmVya3NlbmhldCIsIElEX0RJU0NPTk5FQ1RfTkVUV09SS19EUklWRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJEZWxhIHV0Li4uIiwgICAgICAgICAgICAgICAgICAyNTQKICAgICAgICBNRU5VSVRFTSAiJlRhIGJvcnQgdXRkZWxuaW5nLi4uIiwgICAgICAgMjU1CiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZW5GxqIGVuaGV0Li4uIiwgICAgICAgICAgICAgIDI1MQogICAgfQoKICAgIFBPUFVQICImVHLkZCIgewogICAgICAgIE1FTlVJVEVNICImTuRzdGEgbml25Vx0KyIsICAgICAgICAgICAgICAzMDEKICAgICAgICBNRU5VSVRFTSAiVXT2a2EgJnRy5GRcdCoiLCAgICAgICAgICAgICAgMzAyCiAgICAgICAgTUVOVUlURU0gIlV09mthICZhbGxhXHRDdHJsKyoiLCAgICAgICAgIDMwMwogICAgICAgIE1FTlVJVEVNICJLb2xsYXBzYSAmdHLkZFx0LSIsICAgICAgICAgICAzMDQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJk1hcmtlcmEgdW5kZXJtYXBwYXIiLCAgICAgICAgNTA1CiAgICB9CgogICAgUE9QVVAgIiZWaXNhIiB7CiAgICAgICAgTUVOVUlURU0gIiZUcuRkIG9jaCBtYXBwIiwgICAgICAgICAgICAgIDQxMwogICAgICAgIE1FTlVJVEVNICJFbmRhc3QgdHIm5GQiLCAgICAgICAgICAgICAgICAgIDQxMQogICAgICAgIE1FTlVJVEVNICJFbmRhc3QgJm1hcHAiLCAgICAgICAgICAgICAgICAgIDQxMgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJEZSZsYSIsICAgICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZOYW1uIiwgICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfTkFNRQogICAgICAgIE1FTlVJVEVNICImQWxsYSBmaWxkZXRhbGplciIsICAgICAgICAgICBJRF9WSUVXX0FMTF9BVFRSSUJVVEVTLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIiZWaXNzYSBkZXRhbGplci4uLiIsICAgICAgICAgIElEX1ZJRVdfU0VMRUNURURfQVRUUklCVVRFUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU29ydGVyYSBlZnRlciBuYW1uIiwgICAgICAgICBJRF9WSUVXX1NPUlRfTkFNRQogICAgICAgIE1FTlVJVEVNICJTb3J0ZXJhIGVmdGVyIHQmeXAiLCAgICAgICAgICBJRF9WSUVXX1NPUlRfVFlQRQogICAgICAgIE1FTlVJVEVNICJTb3J0ZXJhIGVmdGVyIHN0Jm9ybGVrIiwgICAgICBJRF9WSUVXX1NPUlRfU0laRQogICAgICAgIE1FTlVJVEVNICJTb3J0ZXJhIGVmdGVyICZkYXR1bSIsICAgICAgICBJRF9WSUVXX1NPUlRfREFURQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJTb3J0ZXJhIGVmdGVyICYuLi4iLCAgICAgICAgICBJRF9WSUVXX0ZJTFRFUgogICAgfQoKICAgIFBPUFVQICImSW5zdORsbG5pbmdhciIgewogICAgICAgIE1FTlVJVEVNICImQmVrcuRmdGVsc2UuLi4iLCAgICAgICAgICAgICA1MDEKICAgICAgICBNRU5VSVRFTSAiJlRlY2tlbnNuaXR0Li4uIiwgICAgICAgICAgICAgSURfU0VMRUNUX0ZPTlQKICAgICAgICBNRU5VSVRFTSAiJktvbmZpZ3VyZXJhIHZlcmt0eWdzZuRsdC4uLiIsIDUxMgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImVmVya3R5Z3Nm5Gx0IiwgICAgICAgICAgICAgICBJRF9WSUVXX1RPT0xfQkFSLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIiZFbmhldHNm5Gx0IiwgICAgICAgICAgICAgICAgIElEX1ZJRVdfRFJJVkVfQkFSLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIlN0JmF0dXNm5Gx0IiwgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSLCBDSEVDS0VECiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKICAgICAgICBNRU5VSVRFTSAiSCZlbHNr5HJtXHRDdHJsK1NoaWZ0K1MiLCAgICBJRF9WSUVXX0ZVTExTQ1JFRU4KI2VuZGlmCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZNaW5pbWVyYSB2aWQga/ZybmluZyIsICAgICAgIDUwNAogICAgICAgIE1FTlVJVEVNICImU3BhcmEg5G5kcmluZ2FyIHZpZCBzdORuZ25pbmciLCA1MTEKICAgIH0KCiAgICBQT1BVUCAiJlPka2VyaGV0IiB7CiAgICAgICAgTUVOVUlURU0gIibFdGtvbXN0Li4uIiwgICAgICAgICAgICAgICAgIDYwNQogICAgICAgIE1FTlVJVEVNICImTG9nZ25pbmcuLi4iLCAgICAgICAgICAgICAgICA2MDYKICAgICAgICBNRU5VSVRFTSAiJsRnYXJlLi4uIiwgICAgICAgICAgICAgICAgICAgNjA3CiAgICB9CgogICAgUE9QVVAgIiZG9m5zdGVyIiB7CiAgICAgICAgTUVOVUlURU0gIk55dHQgJmb2bnN0ZXIiLCAgICAgICAgICAgICAgIElEX1dJTkRPV19ORVcKICAgICAgICBNRU5VSVRFTSAi1nZlcmxhcHBhbmRlXHRDdHJsK0Y1IiwgICAgICAgSURfV0lORE9XX0NBU0NBREUKICAgICAgICBNRU5VSVRFTSAiT3JkbmEgJmhvcmlzb250ZWxsdCIsICAgICAgICAgSURfV0lORE9XX1RJTEVfSE9SWgogICAgICAgIE1FTlVJVEVNICJPcmRuYSAmdmVydGlrYWx0XHRDdHJsK0Y0IiwgICBJRF9XSU5ET1dfVElMRV9WRVJUCiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKICAgICAgICBNRU5VSVRFTSAiT3JkbmEgYXV0b21hdGlza3QiLCAgICAgICAgICAgSURfV0lORE9XX0FVVE9TT1JUCiNlbmRpZgogICAgICAgIE1FTlVJVEVNICJPcmRuYSAmc3ltYm9sZXIiLCAgICAgICAgICAgICBJRF9XSU5ET1dfQVJSQU5HRQogICAgICAgIE1FTlVJVEVNICImVXBwZGF0ZXJhXHRGNSIsICAgICAgICAgICAgICBJRF9SRUZSRVNICiAgICB9CgogICAgUE9QVVAgIiY/IiB7CiAgICAgICAgTUVOVUlURU0gIiZIauRscGF2c25pdHRcdEYxIiwgICAgICAgICAgIElEX0hFTFAKICAgICAgICBNRU5VSVRFTSAiSGrkbHAgJnP2ay4uLlx0RjEiLCAgICAgICAgICAgSURfSEVMUAogICAgICAgIE1FTlVJVEVNICImQW525G5kYSBoauRscGVuXHRGMSIsICAgICAgICBJRF9IRUxQX1VTSU5HCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkluZm9ybWF0aW9uIG9tICZXaW5lZmlsZS4uLiIsIElEX0FCT1VUCiAgICB9Cn0KCgpJRERfRVhFQ1VURSBESUFMT0cgRklYRUQgSU1QVVJFIDE1LCAxMywgMjEwLCA2MwpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJL9nIiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogICAgQ09OVFJPTCAgICAgICAgICIiLCAxMDEsICJTdGF0aWMiLCBTU19TSU1QTEV8U1NfTk9QUkVGSVgsIDMsIDYsIDE2MiwgMTAKICAgIENPTlRST0wgICAgICAgICAiJktvbW1hbmRvOiIsIC0xLCAiU3RhdGljIiwgU1NfTEVGVE5PV09SRFdSQVB8V1NfR1JPVVAsIDMsIDE4LCA2MCwgMTAKICAgIEVESVRURVhUICAgICAgICAyMDEsIDMsIDI5LCAxMzQsIDEyLCBFU19BVVRPSFNDUk9MTAogICAgQ09OVFJPTCAgICAgICAgICJTb20gJnN5bWJvbCIsIDIxNCwgIkJ1dHRvbiIsIEJTX0FVVE9DSEVDS0JPWHxXU19UQUJTVE9QLDMsIDQ1LCA3MSwgMTIKICAgIERFRlBVU0hCVVRUT04gICAiT0siLCAxLCAxNTgsIDYsIDQ3LCAxNAogICAgUFVTSEJVVFRPTiAgICAgICJBdmJyeXQiLCAyLCAxNTgsIDIzLCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiJkhq5GxwIiwgMjU0LCAxNTgsIDQzLCA0NywgMTQKfQoKSUREX1NFTEVDVF9ERVNUSU5BVElPTiBESUFMT0cgRklYRUQgSU1QVVJFIDE1LCAxMywgMjEwLCA2MwpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJW5GxqIG3lbCIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiAgICBDT05UUk9MICAgICAgICAgIiIsIDEwMSwgIlN0YXRpYyIsIFNTX1NJTVBMRXxTU19OT1BSRUZJWCwgMywgNiwgMTYyLCAxMAogICAgQ09OVFJPTCAgICAgICAgICImU/ZrduRnOiIsIC0xLCAiU3RhdGljIiwgU1NfTEVGVE5PV09SRFdSQVB8V1NfR1JPVVAsIDMsIDE4LCA2MCwgMTAKICAgIEVESVRURVhUICAgICAgICAyMDEsIDMsIDI5LCAxMzQsIDEyLCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsIDEsIDE1OCwgNiwgNDcsIDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkF2YnJ5dCIsIDIsIDE1OCwgMjMsIDQ3LCAxNAogICAgUFVTSEJVVFRPTiAgICAgICImQmzkZGRyYSIsIDI1NCwgMTU4LCA0MywgNDcsIDE0Cn0KCklERF9ESUFMT0dfVklFV19UWVBFIERJQUxPRyBESVNDQVJEQUJMRSAxNSwgMTMsIDE2MSwgOTcKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRWZ0ZXIgZmlsdHlwIgpGT05UIDgsICJNUyBTYW5zIFNlcmlmIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICImTmFtbjoiLC0xLDcsOCwyMiwxMAogICAgRURJVFRFWFQgICAgICAgIElEQ19WSUVXX1BBVFRFUk4sMzEsNyw2MywxMixFU19BVVRPSFNDUk9MTAogICAgR1JPVVBCT1ggICAgICAgICJGaWx0eXAiLC0xLDcsMjMsODcsNTYKICAgIENPTlRST0wgICAgICAgICAiJkthdGFsb2dlciIsSURDX1ZJRVdfVFlQRV9ESVJFQ1RPUklFUywiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDEzLDMyLDcwLDEwCiAgICBDT05UUk9MICAgICAgICAgIiZQcm9ncmFtIixJRENfVklFV19UWVBFX1BST0dSQU1TLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTMsNDMsNzAsMTAKICAgIENPTlRST0wgICAgICAgICAiJkRva3VtZW50IixJRENfVklFV19UWVBFX0RPQ1VNRU5UUywiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDEzLDU0LDcwLDEwCiAgICBDT05UUk9MICAgICAgICAgIiZBbmRyYSBmaWxlciIsSURDX1ZJRVdfVFlQRV9PVEhFUlMsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxMyw2NSw3MCwxMAogICAgQ09OVFJPTCAgICAgICAgICJWaXNhIGf2bWRhLyZzeXN0ZW0tZmlsZXIiLElEQ19WSUVXX1RZUEVfSElEREVOLAogICAgICAgICAgICAgICAgICAgICJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsNyw4MSwxMDYsOQogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxMDQsNyw1MCwxNAogICAgUFVTSEJVVFRPTiAgICAgICJBdmJyeXQiLElEQ0FOQ0VMLDEwNCwyNCw1MCwxNApFTkQKCklERF9ESUFMT0dfUFJPUEVSVElFUyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI0OCwgMjE1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkVnZW5za2FwZXIgZvZyICVzIgpGT05UIDgsICJNUyBTYW5zIFNlcmlmIgpCRUdJTgogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxOTEsNyw1MCwxNAogICAgUFVTSEJVVFRPTiAgICAgICJBdmJyeXQiLElEQ0FOQ0VMLDE5MSwyOSw1MCwxNAogICAgTFRFWFQgICAgICAgICAgICImRmlsbmFtbjoiLC0xLDcsNyw1OSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX0ZJTEVOQU1FLDcxLDcsMTIwLDksRVNfUkVBRE9OTFkgfCBOT1QgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJGJnVsbCBz9mt25Gc6IiwtMSw3LDE4LDU5LDkKICAgIEVESVRURVhUICAgICAgICBJRENfU1RBVElDX1BST1BfUEFUSCw3MSwxOCwxMjAsOSwgRVNfUkVBRE9OTFkgfCBOT1QgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJTaXN0IORuZHJhZDoiLC0xLDcsMjksNTksOQogICAgRURJVFRFWFQgICAgICAgIElEQ19TVEFUSUNfUFJPUF9MQVNUQ0hBTkdFLDcxLDI5LDEyMCw5LEVTX1JFQURPTkxZIHwgTk9UIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiVmVyc2lvbjoiLC0xLDcsNDAsNTksOQogICAgRURJVFRFWFQgICAgICAgIElEQ19TVEFUSUNfUFJPUF9WRVJTSU9OLDcxLDQwLDEyMCw5LEVTX1JFQURPTkxZIHwgTk9UIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiQ29wJnlyaWdodDoiLC0xLDcsNTEsNTksOQogICAgRURJVFRFWFQgICAgICAgIElEQ19TVEFUSUNfUFJPUF9DT1BZUklHSFQsNzEsNTEsMTIwLDksRVNfUkVBRE9OTFkgfCBOT1QgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJTdG9ybGVrOiIsLTEsNyw2Miw1OSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX1NJWkUsNzEsNjIsMTIwLDksRVNfUkVBRE9OTFkgfCBOT1QgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgR1JPVVBCT1ggICAgICAgICJBdHRyaWJ1dCIsLTEsNyw3OSwxNTgsNDYKICAgIENPTlRST0wgICAgICAgICAiU2smcml2c2t5ZGRhZCIsSURDX0NIRUNLX1JFQURPTkxZLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTcsOTEsNjgsOQogICAgQ09OVFJPTCAgICAgICAgICImRG9sZCIsSURDX0NIRUNLX0hJRERFTiwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDkyLDkxLDY4LDkKICAgIENPTlRST0wgICAgICAgICAiJkFya2l2IixJRENfQ0hFQ0tfQVJDSElWRSwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE3LDEwMSw2OCw5CiAgICBDT05UUk9MICAgICAgICAgIiZTeXN0ZW0iLElEQ19DSEVDS19TWVNURU0sIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCw5MiwxMDEsNjgsOQogICAgQ09OVFJPTCAgICAgICAgICImS29tcHJpbWVyYWQiLElEQ19DSEVDS19DT01QUkVTU0VELCJCdXR0b24iLCBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE3LDExMSw2OCw5CiAgICBHUk9VUEJPWCAgICAgICAgIiZWZXJzaW9uc2luZm8iLC0xLDcsMTI5LDIzNCw3OQogICAgTElTVEJPWCAgICAgICAgIElEQ19MSVNUX1BST1BfVkVSU0lPTl9UWVBFUywxMywxMzksMTA3LDYzLExCU19TT1JUIHwgTEJTX05PSU5URUdSQUxIRUlHSFQgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgRURJVFRFWFQgICAgICAgIElEQ19MSVNUX1BST1BfVkVSU0lPTl9WQUxVRVMsMTIzLDEzOSwxMTEsNjMsRVNfTVVMVElMSU5FIHwgRVNfUkVBRE9OTFkgfCBXU19WU0NST0xMCkVORAoKClNUUklOR1RBQkxFCnsKICAgIElEU19GT05UX1NFTF9ETEdfTkFNRSAgICJWZXJrc3TkbGwgdGVja2Vuc25pdHRzaW5zdORsbG5pbmdhciIKICAgIElEU19GT05UX1NFTF9FUlJPUiAgICAgICJFdHQgZmVsIHVwcHN0b2QgbuRyIGV0dCBueXR0IHRlY2tlbnNuaXR0IHZhbGRlcy4iCn0KClNUUklOR1RBQkxFCnsKICAgIElEU19XSU5FRklMRSAgICAgICAgICAgICJXaW5lZmlsZSIKICAgIElEU19FUlJPUiAgICAgICAgICAgICAgICJGZWwiCiAgICBJRFNfUk9PVF9GUyAgICAgICAgICAgICAicm9vdCBmcyIKICAgIElEU19VTklYRlMgICAgICAgICAgICAgICJ1bml4ZnMiCiAgICBJRFNfREVTS1RPUCAgICAgICAgICAgICAiU2tyaXZib3JkIgogICAgSURTX1NIRUxMICAgICAgICAgICAgICAgIlNrYWwiCiAgICBJRFNfVElUTEVGTVQgICAgICAgICAgICAiJXMgLSAlcyIKICAgIElEU19OT19JTVBMICAgICAgICAgICAgICJJbnRlIGltcGxlbWVudGVyYXQg5G5udSIKICAgIElEU19XSU5FX0ZJTEUgICAgICAgICAgICJXaW5lZmlsZSIKfQoKU1RSSU5HVEFCTEUKewogICAgSURTX0NPTF9OQU1FICAgICAgICAgICAgIk5hbW4iCiAgICBJRFNfQ09MX1NJWkUgICAgICAgICAgICAiU3RvcmxlayIKICAgIElEU19DT0xfQ0RBVEUgICAgICAgICAgICJDRGF0dW0iCiAgICBJRFNfQ09MX0FEQVRFICAgICAgICAgICAiQURhdHVtIgogICAgSURTX0NPTF9NREFURSAgICAgICAgICAgIk1EYXR1bSIKICAgIElEU19DT0xfSURYICAgICAgICAgICAgICJJbmRleC9Jbm9kZSIKICAgIElEU19DT0xfTElOS1MgICAgICAgICAgICJM5G5rYXIiCiAgICBJRFNfQ09MX0FUVFIgICAgICAgICAgICAiQXR0cmlidXQiCiAgICBJRFNfQ09MX1NFQyAgICAgICAgICAgICAiU+RrZXJoZXQiCgogICAgSURTX0ZSRUVfU1BBQ0VfRk1UICAgICAgIiVzIGF2ICVzIGxlZGlndCIKfQo=