LyoKICogV2luZUZpbGUKICogUG9ydHVndWVzZSBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDAzIE1hcmNlbG8gRHVhcnRlCiAqIENvcHlyaWdodCAyMDA0IEFt6XJpY28gSm9z6SBNZWxvCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCgovKiBNZW51ICovCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4KCklETV9XSU5FRklMRSBNRU5VIEZJWEVEIElNUFVSRQp7CglQT1BVUCAiJkFycXVpdm8iICB7CgkJTUVOVUlURU0gIkEmYnJpclx0RW50ZXIiICwJCQlJRF9BQ1RJVkFURQoJCU1FTlVJVEVNICImTW92ZXIuLi5cdEY3IiAsIAkJCUlEX0ZJTEVfTU9WRQoJCU1FTlVJVEVNICImQ29waWFyLi4uXHRGOCIgLAkJCTEwNwoJCU1FTlVJVEVNICImSW4gQ2xpcGJvYXJkLi4uXHRGOSIgLAkJMTE4CgkJTUVOVUlURU0gIkUmeGNsdWlyXHREZWwiICwJCQkxMDgKCQlNRU5VSVRFTSAiUmUmbm9tZWFyLi4uIiAsCQkJMTA5CgkJTUVOVUlURU0gIiZQcm9wcmllZGFkZXMuLi5cdEFsdCtFbnRlciIgLCBJRF9FRElUX1BST1BFUlRJRVMKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiQyZvbXByaW1pci4uLiIgLAkJMTE5CgkJTUVOVUlURU0gIkRlc2NvbXByaW1pci4uLiIgLAkJMTIwCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIkV4ZWN1JnRhci4uLiIgLAkJCUlEX0VYRUNVVEUKCQlNRU5VSVRFTSAiJkltcHJpbWlyLi4uIiAsIAkJCTEwMgoJCU1FTlVJVEVNICJBJnNzb2NpYXIuLi4iICwJCTEwMwoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICJDcmkmYXIgcGFzdGEuLi4iICwJCQkxMTEKCQlNRU5VSVRFTSAiUCZlc3F1aXNhci4uLiIgLAkJCTEwNAoJCU1FTlVJVEVNICJTZWxlY2lvbmFyIGFycXVpJnZvcy4uLiIgLAkJCTExNgoJCU1FTlVJVEVNIFNFUEFSQVRPUgojaWZuZGVmIF9OT19FWFRFTlNJT05TCgkJTUVOVUlURU0gIlNhaSZyXHRBbHQrWCIgLCAJCQlJRF9GSUxFX0VYSVQKI2Vsc2UKCQlNRU5VSVRFTSAiU2FpJnIiLCAJCQkJSURfRklMRV9FWElUCiNlbmRpZgoJfQoKCVBPUFVQICImRGlzY28iICB7CgkJTUVOVUlURU0gIiZDb3BpYXIgZGlzY28uLi4iICwJCQkyMDEKCQlNRU5VSVRFTSAiJk5vbWVhciBkaXNjby4uLiIgLAkJCTIwMgoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICImRm9ybWF0YXIgZGlzY28uLi4iICwJCQlJRF9GT1JNQVRfRElTSwojaWZkZWYgX1dJTjk1CgkJTUVOVUlURU0gIiZHZXJhciBkaXNjbyBkZSBzaXN0ZW1hLi4uIiwgLTEJLypAQCAqLwojZW5kaWYKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiQ29uZWN0YSZyIHVuaWRhZGUgZGUgcmVkZSIgLAkJCUlEX0NPTk5FQ1RfTkVUV09SS19EUklWRQoJCU1FTlVJVEVNICImRGVzY29uZWN0YXIgdW5pZGFkZSBkZSByZWRlIiAsCQlJRF9ESVNDT05ORUNUX05FVFdPUktfRFJJVkUKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiQyZvbXBhcnRpbGhhciBjb21vLi4uIiAsCQkJMjU0CgkJTUVOVUlURU0gIiZSZW1vdmVyIGNvbXBhcnRpbGhhbWVudG8uLi4iICwJCQkyNTUKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiU2VsZWNpb25hciAmdW5pZGFkZS4uLiIgLAkJCTI1MQoJfQoKCVBPUFVQICLBJnJ2b3JlIiAgewoJCU1FTlVJVEVNICImUHLzeGltbyBu7XZlbFx0KyIgLAkJCTMwMQoJCU1FTlVJVEVNICJFeHBhbmRpJnIgcGFzdGFcdCoiICwJCTMwMgoJCU1FTlVJVEVNICJFeHBhbmRpciAmdHVkb1x0U3RyZysqIiAsCQkzMDMKCQlNRU5VSVRFTSAiUmVjb2xoZXIgcCZhc3RhXHQtIiAsCQkJMzA0CgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIiZJbmRpY2FyIHN1Ym7tdmVpcyIgLAkJCQk1MDUKCX0KCglQT1BVUCAiJkV4aWJpciIgIHsKCQlNRU5VSVRFTSAiwSZydm9yZSBlIHBhc3RhIiAsCQkJNDEzCgkJTUVOVUlURU0gIlMmb21lbnRlIOFydm9yZSIgLAkJCTQxMQoJCU1FTlVJVEVNICJTbyZtZW50ZSBwYXN0YSIgLAkJCTQxMgoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICImRGl2aWRpciIgLAkJCUlEX1ZJRVdfU1BMSVQKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiJk5vbWUiICwJCQlJRF9WSUVXX05BTUUKCQlNRU5VSVRFTSAiJlRvZG9zIG9zIGRlbGFsaGVzIiAsCQkJCUlEX1ZJRVdfQUxMX0FUVFJJQlVURVMsIENIRUNLRUQKCQlNRU5VSVRFTSAiRCZldGFsaGVzIHBhcmNpYWlzLi4uIiAsCQkJSURfVklFV19TRUxFQ1RFRF9BVFRSSUJVVEVTCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIiZDbGFzc2lmaWNhciBwb3Igbm9tZSIgLAkJSURfVklFV19TT1JUX05BTUUKCQlNRU5VSVRFTSAiQyZsYXNzaWZpY2FyIHBvciB0aXBvIiAsCQlJRF9WSUVXX1NPUlRfVFlQRQoJCU1FTlVJVEVNICJDbCZhc3NpZmljYXIgcG9yIHRhbWFuaG8iICwgCQlJRF9WSUVXX1NPUlRfU0laRQoJCU1FTlVJVEVNICJDbGEmc3NpZmljYXIgcG9yICZkYXRhIiAsIAkJSURfVklFV19TT1JUX0RBVEUKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiQ2xhc3NpZmljYXIgJnBvci4uLiIgLAkJCTQwOQoJfQoKCVBPUFVQICImT3Dn9WVzIiAgewoJCU1FTlVJVEVNICImQ29uZmlybWHn428uLi4iICwJCS0xCgkJTUVOVUlURU0gIiZGb250ZS4uLiIgLAkJCUlEX1NFTEVDVF9GT05UCgkJTUVOVUlURU0gIiZQZXJzb25hbGl6YXIgYmFycmEgZGUgZmVycmFtZW50YXMuLi4iICwgLTEKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiQmFycmEgZCZlIGZlcnJhbWVudGFzIiAsCQlJRF9WSUVXX1RPT0xfQkFSLCBDSEVDS0VECgkJTUVOVUlURU0gIiZCYXJyYSBkZSB1bmlkYWRlcyIgLAkJSURfVklFV19EUklWRV9CQVIsIENIRUNLRUQKCQlNRU5VSVRFTSAiQiZhcnJhIGRlICZzdGF0dXMiICwJSURfVklFV19TVEFUVVNCQVIsIENIRUNLRUQKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwoJCU1FTlVJVEVNICJUZWxhIENoZWlhXHRDdHJsK1NoaWZ0K1MiICwgCUlEX1ZJRVdfRlVMTFNDUkVFTgojZW5kaWYKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiJk1pbmltaXphciBkdXJhbnRlIG8gdXNvIiAsCQktMQoJCU1FTlVJVEVNICImU2FsdmFyIGNvbmZpZ3VyYef1ZXMgYW8gc2FpciIgLAkJCTUxMQoJfQoKCglQT1BVUCAiJlNlZ3VyYW7nYSIgIHsKCQlNRU5VSVRFTSAiJkFjZXNzby4uLiIgLAkJNjA1CgkJTUVOVUlURU0gIiZMb2dnaW5nLi4uIiAsCQkJNjA2CgkJTUVOVUlURU0gIiZPd25lci4uLiIgLAkJNjA3Cgl9CgoJUE9QVVAgIiZKYW5lbGEiICB7CgkJTUVOVUlURU0gIiZOb3ZhIGphbmVsYSIgLAkJCUlEX1dJTkRPV19ORVcKCQlNRU5VSVRFTSAiJkVtIGNhc2NhdGFcdEN0cmwrRjUiICwJCUlEX1dJTkRPV19DQVNDQURFCgkJTUVOVUlURU0gIkxhZG8gYSBsYWRvICZob3Jpem9udGFsbWVudGUiICwJCUlEX1dJTkRPV19USUxFX0hPUloKCQlNRU5VSVRFTSAiTGFkbyBhIGxhZG8gJnZlcnRpY2FsbWVudGVcdEN0cmwrRjQiICwJCUlEX1dJTkRPV19USUxFX1ZFUlQKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwoJCU1FTlVJVEVNICJPcmdhbml6YXIgYXV0b21hdGljYW1lbnRlIiAsCQlJRF9XSU5ET1dfQVVUT1NPUlQKI2VuZGlmCgkJTUVOVUlURU0gIiZPcmdhbml6YXIg7WNvbmVzIiAsCQlJRF9XSU5ET1dfQVJSQU5HRQoJCU1FTlVJVEVNICImQXR1YWxpemFyXHRGNSIgLAkJSURfUkVGUkVTSAoJfQoKCVBPUFVQICJBaiZ1ZGEiICB7CgkJTUVOVUlURU0gIiZU83BpY29zIGRhIGFqdWRhXHRGMSIgLAkJCUlEX0hFTFAKCQlNRU5VSVRFTSAiUGVzcXVpc2FyLi4uIiAsCQkJSURfSEVMUAoJCU1FTlVJVEVNICImVXNhbmRvIGEgYWp1ZGEiICwJCQlJRF9IRUxQX1VTSU5HCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJUE9QVVAgIiZJbmZvcm1h5/Vlcy4uLiIgIHsKCQkgIE1FTlVJVEVNICJTb2JyZSBvICZXaW5lLi4uIiAsCQkJSURfQUJPVVRfV0lORQovKgogKgkJICBNRU5VSVRFTSAiJkxpY2Vuc2UuLi4iCQlJRF9MSUNFTlNFCiAqCQkgIE1FTlVJVEVNICImTk8gV0FSUkFOVFkiCQlJRF9OT19XQVJSQU5UWQogKi8KCQl9Cgl9Cn0KCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFCgpJRE1fV0lORUZJTEUgTUVOVSBGSVhFRCBJTVBVUkUKewoJUE9QVVAgIiZGaWNoZWlybyIgIHsKCQlNRU5VSVRFTSAiQSZicmlyXHRFbnRlciIgLAkJCUlEX0FDVElWQVRFCgkJTUVOVUlURU0gIiZNb3Zlci4uLlx0RjciICwgCQkJSURfRklMRV9NT1ZFCgkJTUVOVUlURU0gIiZDb3BpYXIuLi5cdEY4IiAsCQkJMTA3CgkJTUVOVUlURU0gIiZOYSBBcmVhIGRlIFRyYW5zZmVyZW5jaWEuLi5cdEY5IiAsCQkxMTgKCQlNRU5VSVRFTSAiRSZ4Y2x1aXJcdERlbCIgLAkJCTEwOAoJCU1FTlVJVEVNICJSZSZub21lYXIuLi4iICwJCQkxMDkKCQlNRU5VSVRFTSAiJlByb3ByaWVkYWRlcy4uLlx0QWx0K0VudGVyIiAsIElEX0VESVRfUFJPUEVSVElFUwoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICJDJm9tcHJpbWlyLi4uIiAsCQkxMTkKCQlNRU5VSVRFTSAiJkRlc2NvbXByaW1pci4uLiIgLAkJMTIwCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIkV4ZWN1JnRhci4uLiIgLAkJCUlEX0VYRUNVVEUKCQlNRU5VSVRFTSAiJkltcHJpbWlyLi4uIiAsIAkJCTEwMgoJCU1FTlVJVEVNICJBJnNzb2NpYXIuLi4iICwJCTEwMwoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICJDcmkmYXIgcGFzdGEuLi4iICwJCQkxMTEKCQlNRU5VSVRFTSAiUCZlc3F1aXNhci4uLiIgLAkJCTEwNAoJCU1FTlVJVEVNICJTZWxlY2lvbmFyIGZpY2hlaSZyb3MuLi4iICwJCQkxMTYKCQlNRU5VSVRFTSBTRVBBUkFUT1IKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwoJCU1FTlVJVEVNICJTYWkmclx0QWx0K1giICwgCQkJSURfRklMRV9FWElUCiNlbHNlCgkJTUVOVUlURU0gIlNhaSZyIiwgCQkJCUlEX0ZJTEVfRVhJVAojZW5kaWYKCX0KCglQT1BVUCAiJkRpc2NvIiAgewoJCU1FTlVJVEVNICImQ29waWFyIGRpc2NvLi4uIiAsCQkJMjAxCgkJTUVOVUlURU0gIiZOb21lYXIgZGlzY28uLi4iICwJCQkyMDIKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiJkZvcm1hdGFyIGRpc2NvLi4uIiAsCQkJSURfRk9STUFUX0RJU0sKI2lmZGVmIF9XSU45NQoJCU1FTlVJVEVNICImR2VyYXIgZGlzY28gZGUgc2lzdGVtYS4uLiIsIC0xCS8qQEAgKi8KI2VuZGlmCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIkNvbmVjdGEmciB1bmlkYWRlIGRlIHJlZGUiICwJCQlJRF9DT05ORUNUX05FVFdPUktfRFJJVkUKCQlNRU5VSVRFTSAiJkRlc2NvbmVjdGFyIHVuaWRhZGUgZGUgcmVkZSIgLAkJSURfRElTQ09OTkVDVF9ORVRXT1JLX0RSSVZFCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIiZQYXJ0aWxoYXIgY29tby4uLiIgLAkJCTI1NAoJCU1FTlVJVEVNICImUmVtb3ZlciBwYXJ0aWxoYS4uLiIgLAkJCTI1NQoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICJTZWxlY2Npb25hciAmdW5pZGFkZS4uLiIgLAkJCTI1MQoJfQoKCVBPUFVQICLBJnJ2b3JlIiAgewoJCU1FTlVJVEVNICImUHLzeGltbyBu7XZlbFx0KyIgLAkJCTMwMQoJCU1FTlVJVEVNICJFeHBhbmRpJnIgcGFzdGFcdCoiICwJCTMwMgoJCU1FTlVJVEVNICJFeHBhbmRpciAmdHVkb1x0U3RyZysqIiAsCQkzMDMKCQlNRU5VSVRFTSAiUmVjb2xoZXIgcCZhc3RhXHQtIiAsCQkJMzA0CgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIiZJbmRpY2FyIHN1Ym7tdmVpcyIgLAkJCQk1MDUKCX0KCglQT1BVUCAiJkV4aWJpciIgIHsKCQlNRU5VSVRFTSAiwSZydm9yZSBlIHBhc3RhIiAsCQkJNDEzCgkJTUVOVUlURU0gIlMmb21lbnRlIOFydm9yZSIgLAkJCTQxMQoJCU1FTlVJVEVNICJTbyZtZW50ZSBwYXN0YSIgLAkJCTQxMgoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICImRGl2aWRpciIgLAkJCUlEX1ZJRVdfU1BMSVQKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiJk5vbWUiICwJCQlJRF9WSUVXX05BTUUKCQlNRU5VSVRFTSAiJlRvZG9zIG9zIGRlbGFsaGVzIiAsCQkJCUlEX1ZJRVdfQUxMX0FUVFJJQlVURVMsIENIRUNLRUQKCQlNRU5VSVRFTSAiRCZldGFsaGVzIHBhcmNpYWlzLi4uIiAsCQkJSURfVklFV19TRUxFQ1RFRF9BVFRSSUJVVEVTCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIiZDbGFzc2lmaWNhciBwb3Igbm9tZSIgLAkJSURfVklFV19TT1JUX05BTUUKCQlNRU5VSVRFTSAiQyZsYXNzaWZpY2FyIHBvciB0aXBvIiAsCQlJRF9WSUVXX1NPUlRfVFlQRQoJCU1FTlVJVEVNICJDbCZhc3NpZmljYXIgcG9yIHRhbWFuaG8iICwgCQlJRF9WSUVXX1NPUlRfU0laRQoJCU1FTlVJVEVNICJDbGEmc3NpZmljYXIgcG9yICZkYXRhIiAsIAkJSURfVklFV19TT1JUX0RBVEUKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiQ2xhc3NpZmljYXIgJnBvci4uLiIgLAkJCTQwOQoJfQoKCVBPUFVQICImT3Dn9WVzIiAgewoJCU1FTlVJVEVNICImQ29uZmlybWHn428uLi4iICwJCS0xCgkJTUVOVUlURU0gIiZGb250ZS4uLiIgLAkJCUlEX1NFTEVDVF9GT05UCgkJTUVOVUlURU0gIiZQZXJzb25hbGl6YXIgYmFycmEgZGUgZmVycmFtZW50YXMuLi4iICwgLTEKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiQmFycmEgZCZlIGZlcnJhbWVudGFzIiAsCQlJRF9WSUVXX1RPT0xfQkFSLCBDSEVDS0VECgkJTUVOVUlURU0gIiZCYXJyYSBkZSB1bmlkYWRlcyIgLAkJSURfVklFV19EUklWRV9CQVIsIENIRUNLRUQKCQlNRU5VSVRFTSAiQiZhcnJhIGRlIGUmc3RhZG8iICwJSURfVklFV19TVEFUVVNCQVIsIENIRUNLRUQKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwoJCU1FTlVJVEVNICJFY3LjIENvbXBsZWN0b1x0Q3RybCtTaGlmdCtTIiAsIAlJRF9WSUVXX0ZVTExTQ1JFRU4KI2VuZGlmCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIiZNaW5pbWl6YXIgZHVyYW50ZSBvIHVzbyIgLAkJLTEKCQlNRU5VSVRFTSAiJkdyYXZhciBjb25maWd1cmHn9WVzIGFvIHNhaXIiICwJCQk1MTEKCX0KCgoJUE9QVVAgIiZTZWd1cmFu52EiICB7CgkJTUVOVUlURU0gIiZBY2Vzc28uLi4iICwJCTYwNQoJCU1FTlVJVEVNICImTG9nZ2luZy4uLiIgLAkJCTYwNgoJCU1FTlVJVEVNICImRG9uby4uLiIgLAkJNjA3Cgl9CgoJUE9QVVAgIiZKYW5lbGEiICB7CgkJTUVOVUlURU0gIiZOb3ZhIGphbmVsYSIgLAkJCUlEX1dJTkRPV19ORVcKCQlNRU5VSVRFTSAiJkVtIGNhc2NhdGFcdEN0cmwrRjUiICwJCUlEX1dJTkRPV19DQVNDQURFCgkJTUVOVUlURU0gIkxhZG8gYSBsYWRvICZob3Jpem9udGFsbWVudGUiICwJCUlEX1dJTkRPV19USUxFX0hPUloKCQlNRU5VSVRFTSAiTGFkbyBhIGxhZG8gJnZlcnRpY2FsbWVudGVcdEN0cmwrRjQiICwJCUlEX1dJTkRPV19USUxFX1ZFUlQKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwoJCU1FTlVJVEVNICJPcmdhbml6YXIgYXV0b21hdGljYW1lbnRlIiAsCQlJRF9XSU5ET1dfQVVUT1NPUlQKI2VuZGlmCgkJTUVOVUlURU0gIiZPcmdhbml6YXIg7WNvbmVzIiAsCQlJRF9XSU5ET1dfQVJSQU5HRQoJCU1FTlVJVEVNICImQWN0dWFsaXphclx0RjUiICwJCUlEX1JFRlJFU0gKCX0KCglQT1BVUCAiQWomdWRhIiAgewoJCU1FTlVJVEVNICImVPNwaWNvcyBkYSBhanVkYVx0RjEiICwJCQlJRF9IRUxQCgkJTUVOVUlURU0gIlBlc3F1aXNhci4uLiIgLAkJCUlEX0hFTFAKCQlNRU5VSVRFTSAiJlVzYW5kbyBhIGFqdWRhIiAsCQkJSURfSEVMUF9VU0lORwoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCVBPUFVQICImSW5mb3JtYef1ZXMuLi4iICB7CgkJICBNRU5VSVRFTSAiQWNlcmNhIGRvICZXaW5lLi4uIiAsCQkJSURfQUJPVVRfV0lORQovKgogKgkJICBNRU5VSVRFTSAiJkxpY2Vu52EuLi4iCQlJRF9MSUNFTlNFCiAqCQkgIE1FTlVJVEVNICImU0VNIEdBUkFOVElBIgkJSURfTk9fV0FSUkFOVFkKICovCgkJfQoJfQp9CgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX05FVVRSQUwKCklERF9FWEVDVVRFIERJQUxPRyBGSVhFRCBJTVBVUkUgMTUsIDEzLCAyMTAsIDYzClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkV4ZWN1dGFyIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKCUNPTlRST0wgCQkiIiwgMTAxLCAiU3RhdGljIiwgU1NfU0lNUExFfFNTX05PUFJFRklYLCAzLCA2LCAxNjIsIDEwCglDT05UUk9MIAkJIiZDb21hbmRvOiIgLCAtMSwgIlN0YXRpYyIsIFNTX0xFRlROT1dPUkRXUkFQfFdTX0dST1VQLCAzLCAxOCwgNjAsIDEwCglFRElUVEVYVAkJMjAxLCAzLCAyOSwgMTM0LCAxMiwgRVNfQVVUT0hTQ1JPTEwKCUNPTlRST0wgCQkiJk1pbmltaXphZG8iICwgMjE0LCAiQnV0dG9uIiwgQlNfQVVUT0NIRUNLQk9YfFdTX1RBQlNUT1AsMywgNDUsIDcxLCAxMgoJREVGUFVTSEJVVFRPTgkiT0siICwgMSwgMTU4LCA2LCA0NywgMTQKCVBVU0hCVVRUT04JCSJDYW5jZWxhciIgLCAyLCAxNTgsIDIzLCA0NywgMTQKCVBVU0hCVVRUT04JCSImQWp1ZGEiICwgMjU0LCAxNTgsIDQzLCA0NywgMTQKfQoKSUREX1NFTEVDVF9ERVNUSU5BVElPTiBESUFMT0cgRklYRUQgSU1QVVJFIDE1LCAxMywgMjEwLCA2MwpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJTZWxlY2lvbmFyIGRlc3Rpbm8iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewoJQ09OVFJPTCAJIiIsIDEwMSwgIlN0YXRpYyIsIFNTX1NJTVBMRXxTU19OT1BSRUZJWCwgMywgNiwgMTYyLCAxMAoJQ09OVFJPTCAJIiZDYW1pbmhvOiIgLCAtMSwgIlN0YXRpYyIsIFNTX0xFRlROT1dPUkRXUkFQfFdTX0dST1VQLCAzLCAxOCwgNjAsIDEwCglFRElUVEVYVAkyMDEsIDMsIDI5LCAxMzQsIDEyLCBFU19BVVRPSFNDUk9MTAoJREVGUFVTSEJVVFRPTgkiT0siICwgMSwgMTU4LCA2LCA0NywgMTQKCVBVU0hCVVRUT04JIkNhbmNlbGFyIiAsIDIsIDE1OCwgMjMsIDQ3LCAxNAoJUFVTSEJVVFRPTgkiJlByb2N1cmFyIiAsIDI1NCwgMTU4LCA0MywgNDcsIDE0Cn0KClNUUklOR1RBQkxFCnsKCUlEU19GT05UX1NFTF9ETEdfTkFNRQkiQXBsaWNhbmRvIGNvbmZpZ3VyYef1ZXMgZGUgZm9udGUiCglJRFNfRk9OVF9TRUxfRVJST1IJIkVycm8gZW5xdWFudG8gc2VsZWNpb25hIG5vdmEgZm9udGUuIgp9CgpTVFJJTkdUQUJMRQp7CiBJRFNfV0lORUZJTEUgIldpbmVmaWxlIgogSURTX0VSUk9SICAiRXJybyIKIElEU19ST09UX0ZTICAicm9vdCBmcyIKIElEU19VTklYRlMgICJ1bml4ZnMiCiBJRFNfREVTS1RPUCAgIsFyZWEgZGUgdHJhYmFsaG8iCiBJRFNfU0hFTEwgICJTaGVsbCIKIElEU19USVRMRUZNVCAiJXMgLSAlcyIKIElEU19OT19JTVBMICAiQWluZGEgbuNvIGltcGxlbWVudGFkbyIKIElEU19XSU5FICAiV0lORSIKIElEU19XSU5FX0ZJTEUgIldpbmUgRmlsZSIKfQoKU1RSSU5HVEFCTEUKewogSURTX0NPTF9OQU1FICJOb21lIgogSURTX0NPTF9TSVpFICJUYW1hbmhvIgogSURTX0NPTF9DREFURSAiQ0RhdGEiCiBJRFNfQ09MX0FEQVRFICJBRGF0YSIKIElEU19DT0xfTURBVEUgIk1EYXRhIgogSURTX0NPTF9JRFggICJJbmRleC9Jbm9kZSIKIElEU19DT0xfTElOS1MgIkxpZ2Hn9WVzIgogSURTX0NPTF9BVFRSICJBdHJpYnV0b3MiCiBJRFNfQ09MX1NFQyAgIlNlZ3VyYW7nYSIKfQo=