LyoKICogKEMpIENvcHlyaWdodCAyMDAzCiAqIERhdmlkIE38bGxlciBFTFNPRlQgQUcgU3dpdHplcmxhbmQuIGQubXVlbGxlckBlbHNvZnQuY2gKICoKICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICogcHJvamVjdC4KICoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwogKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgogKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKICogTUEgMDIxMTEtMTMwNyBVU0EKICovCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIE5BTUUJICAgIDogUzVQQzExWC5oCiAqIFZlcnNpb24gIDogMzEuMy4yMDAzCiAqCiAqIGNvbW1vbiBzdHVmZiBmb3IgU0FNU1VORyBTNVBDMTFYIFNvQwogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKI2lmbmRlZiBfX1M1UEMxMVhfSF9fCiNkZWZpbmUgX19TNVBDMTFYX0hfXwoKI2luY2x1ZGUgPGNvbW1vbi5oPgp0eXBlZGVmIHZ1X2NoYXIJCVM1UEMxMVhfUkVHODsKdHlwZWRlZiB2dV9zaG9ydAlTNVBDMTFYX1JFRzE2Owp0eXBlZGVmIHZ1X2xvbmcJCVM1UEMxMVhfUkVHMzI7CgovKiBNZW1vcnkgY29udHJvbGxlciAoc2VlIG1hbnVhbCBjaGFwdGVyIDUpICovCnR5cGVkZWYgc3RydWN0IHsKCVM1UEMxMVhfUkVHMzIJQldTQ09OOwoJUzVQQzExWF9SRUczMglCQU5LQ09OWzhdOwoJUzVQQzExWF9SRUczMglSRUZSRVNIOwoJUzVQQzExWF9SRUczMglCQU5LU0laRTsKCVM1UEMxMVhfUkVHMzIJTVJTUkI2OwoJUzVQQzExWF9SRUczMglNUlNSQjc7Cn0gLypfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSkqLyBTNVBDMTFYX01FTUNUTDsKCgovKiBVU0IgSE9TVCAoc2VlIG1hbnVhbCBjaGFwdGVyIDEyKSAqLwp0eXBlZGVmIHN0cnVjdCB7CglTNVBDMTFYX1JFRzMyCUhjUmV2aXNpb247CglTNVBDMTFYX1JFRzMyCUhjQ29udHJvbDsKCVM1UEMxMVhfUkVHMzIJSGNDb21tb25TdGF0dXM7CglTNVBDMTFYX1JFRzMyCUhjSW50ZXJydXB0U3RhdHVzOwoJUzVQQzExWF9SRUczMglIY0ludGVycnVwdEVuYWJsZTsKCVM1UEMxMVhfUkVHMzIJSGNJbnRlcnJ1cHREaXNhYmxlOwoJUzVQQzExWF9SRUczMglIY0hDQ0E7CglTNVBDMTFYX1JFRzMyCUhjUGVyaW9kQ3V0dGVuZEVEOwoJUzVQQzExWF9SRUczMglIY0NvbnRyb2xIZWFkRUQ7CglTNVBDMTFYX1JFRzMyCUhjQ29udHJvbEN1cnJlbnRFRDsKCVM1UEMxMVhfUkVHMzIJSGNCdWxrSGVhZEVEOwoJUzVQQzExWF9SRUczMglIY0J1bGRDdXJyZW50RUQ7CglTNVBDMTFYX1JFRzMyCUhjRG9uZUhlYWQ7CglTNVBDMTFYX1JFRzMyCUhjUm1JbnRlcnZhbDsKCVM1UEMxMVhfUkVHMzIJSGNGbVJlbWFpbmluZzsKCVM1UEMxMVhfUkVHMzIJSGNGbU51bWJlcjsKCVM1UEMxMVhfUkVHMzIJSGNQZXJpb2RpY1N0YXJ0OwoJUzVQQzExWF9SRUczMglIY0xTVGhyZXNob2xkOwoJUzVQQzExWF9SRUczMglIY1JoRGVzY3JpcHRvckE7CglTNVBDMTFYX1JFRzMyCUhjUmhEZXNjcmlwdG9yQjsKCVM1UEMxMVhfUkVHMzIJSGNSaFN0YXR1czsKCVM1UEMxMVhfUkVHMzIJSGNSaFBvcnRTdGF0dXMxOwoJUzVQQzExWF9SRUczMglIY1JoUG9ydFN0YXR1czI7Cn0gLypfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSkqLyBTNVBDMTFYX1VTQl9IT1NUOwoKCi8qIElOVEVSUlVQVCAoc2VlIG1hbnVhbCBjaGFwdGVyIDE0KSAqLwp0eXBlZGVmIHN0cnVjdCB7CglTNVBDMTFYX1JFRzMyCVNSQ1BORDsKCVM1UEMxMVhfUkVHMzIJSU5UTU9EOwoJUzVQQzExWF9SRUczMglJTlRNU0s7CglTNVBDMTFYX1JFRzMyCVBSSU9SSVRZOwoJUzVQQzExWF9SRUczMglJTlRQTkQ7CglTNVBDMTFYX1JFRzMyCUlOVE9GRlNFVDsKfSAvKl9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKSovIFM1UEMxMVhfSU5URVJSVVBUOwoKCi8qIERNQVMgKHNlZSBtYW51YWwgY2hhcHRlciA4KSAqLwp0eXBlZGVmIHN0cnVjdCB7CglTNVBDMTFYX1JFRzMyCURJU1JDOwoJUzVQQzExWF9SRUczMglESURTVDsKCVM1UEMxMVhfUkVHMzIJRENPTjsKCVM1UEMxMVhfUkVHMzIJRFNUQVQ7CglTNVBDMTFYX1JFRzMyCURDU1JDOwoJUzVQQzExWF9SRUczMglEQ0RTVDsKCVM1UEMxMVhfUkVHMzIJRE1BU0tUUklHOwp9IC8qX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpKi8gUzVQQzExWF9ETUE7Cgp0eXBlZGVmIHN0cnVjdCB7CglTNVBDMTFYX0RNQQlkbWFbNF07Cn0gLypfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSkqLyBTNVBDMTFYX0RNQVM7CgoKLyogQ0xPQ0sgJiBQT1dFUiBNQU5BR0VNRU5UIChzZWUgUzNDMjQwMCBtYW51YWwgY2hhcHRlciA2KSAqLwovKiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlZSBTM0MyNDEwIG1hbnVhbCBjaGFwdGVyIDcpICovCnR5cGVkZWYgc3RydWN0IHsKCVM1UEMxMVhfUkVHMzIJTE9DS1RJTUU7CglTNVBDMTFYX1JFRzMyCU1QTExDT047CglTNVBDMTFYX1JFRzMyCVVQTExDT047CglTNVBDMTFYX1JFRzMyCUNMS0NPTjsKCVM1UEMxMVhfUkVHMzIJQ0xLU0xPVzsKCVM1UEMxMVhfUkVHMzIJQ0xLRElWTjsKfSAvKl9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKSovIFM1UEMxMVhfQ0xPQ0tfUE9XRVI7CgoKLyogTENEIENPTlRST0xMRVIgKHNlZSBtYW51YWwgY2hhcHRlciAxNSkgKi8KdHlwZWRlZiBzdHJ1Y3QgewoJUzVQQzExWF9SRUczMglMQ0RDT04xOwoJUzVQQzExWF9SRUczMglMQ0RDT04yOwoJUzVQQzExWF9SRUczMglMQ0RDT04zOwoJUzVQQzExWF9SRUczMglMQ0RDT040OwoJUzVQQzExWF9SRUczMglMQ0RDT041OwoJUzVQQzExWF9SRUczMglMQ0RTQUREUjE7CglTNVBDMTFYX1JFRzMyCUxDRFNBRERSMjsKCVM1UEMxMVhfUkVHMzIJTENEU0FERFIzOwoJUzVQQzExWF9SRUczMglSRURMVVQ7CglTNVBDMTFYX1JFRzMyCUdSRUVOTFVUOwoJUzVQQzExWF9SRUczMglCTFVFTFVUOwoJUzVQQzExWF9SRUczMglyZXNbOF07CglTNVBDMTFYX1JFRzMyCURJVEhNT0RFOwoJUzVQQzExWF9SRUczMglUUEFMOwp9IC8qX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpKi8gUzVQQzExWF9MQ0Q7CgoKLyogTkFORCBGTEFTSCAoc2VlIFMzQzI0MTAgbWFudWFsIGNoYXB0ZXIgNikgKi8KdHlwZWRlZiBzdHJ1Y3QgewoJUzVQQzExWF9SRUczMglORkNPTkY7CglTNVBDMTFYX1JFRzMyCU5GQ01EOwoJUzVQQzExWF9SRUczMglORkFERFI7CglTNVBDMTFYX1JFRzMyCU5GREFUQTsKCVM1UEMxMVhfUkVHMzIJTkZTVEFUOwoJUzVQQzExWF9SRUczMglORkVDQzsKfSAvKl9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKSovIFMzQzI0MTBfTkFORDsKCgovKiBVQVJUIChzZWUgbWFudWFsIGNoYXB0ZXIgMTEpICovCnR5cGVkZWYgc3RydWN0IHsKCVM1UEMxMVhfUkVHMzIJVUxDT047CglTNVBDMTFYX1JFRzMyCVVDT047CglTNVBDMTFYX1JFRzMyCVVGQ09OOwoJUzVQQzExWF9SRUczMglVTUNPTjsKCVM1UEMxMVhfUkVHMzIJVVRSU1RBVDsKCVM1UEMxMVhfUkVHMzIJVUVSU1RBVDsKCVM1UEMxMVhfUkVHMzIJVUZTVEFUOwoJUzVQQzExWF9SRUczMglVTVNUQVQ7CiNpZmRlZiBfX0JJR19FTkRJQU4KCVM1UEMxMVhfUkVHOAlyZXMxWzNdOwoJUzVQQzExWF9SRUc4CVVUWEg7CglTNVBDMTFYX1JFRzgJcmVzMlszXTsKCVM1UEMxMVhfUkVHOAlVUlhIOwojZWxzZSAvKiBMaXR0bGUgRW5kaWFuICovCglTNVBDMTFYX1JFRzgJVVRYSDsKCVM1UEMxMVhfUkVHOAlyZXMxWzNdOwoJUzVQQzExWF9SRUc4CVVSWEg7CglTNVBDMTFYX1JFRzgJcmVzMlszXTsKI2VuZGlmCglTNVBDMTFYX1JFRzMyCVVCUkRJVjsKfSAvKl9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKSovIFM1UEMxMVhfVUFSVDsKCgovKiBQV00gVElNRVIgKHNlZSBtYW51YWwgY2hhcHRlciAxMCkgKi8KdHlwZWRlZiBzdHJ1Y3QgewoJUzVQQzExWF9SRUczMglUQ05UQjsKCVM1UEMxMVhfUkVHMzIJVENNUEI7CglTNVBDMTFYX1JFRzMyCVRDTlRPOwp9IC8qX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpKi8gUzVQQzExWF9USU1FUjsKCnR5cGVkZWYgc3RydWN0IHsKCVM1UEMxMVhfUkVHMzIJVENGRzA7CglTNVBDMTFYX1JFRzMyCVRDRkcxOwoJUzVQQzExWF9SRUczMglUQ09OOwoJUzVQQzExWF9USU1FUgljaFs0XTsKCVM1UEMxMVhfUkVHMzIJVENOVEI0OwoJUzVQQzExWF9SRUczMglUQ05UTzQ7Cn0gLypfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSkqLyBTNVBDMTFYX1RJTUVSUzsKCgovKiBVU0IgREVWSUNFIChzZWUgbWFudWFsIGNoYXB0ZXIgMTMpICovCnR5cGVkZWYgc3RydWN0IHsKI2lmZGVmIF9fQklHX0VORElBTgoJUzVQQzExWF9SRUc4CXJlc1szXTsKCVM1UEMxMVhfUkVHOAlFUF9GSUZPX1JFRzsKI2Vsc2UgLyogIGxpdHRsZSBlbmRpYW4gKi8KCVM1UEMxMVhfUkVHOAlFUF9GSUZPX1JFRzsKCVM1UEMxMVhfUkVHOAlyZXNbM107CiNlbmRpZgp9IC8qX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpKi8gUzVQQzExWF9VU0JfREVWX0ZJRk9TOwoKdHlwZWRlZiBzdHJ1Y3QgewojaWZkZWYgX19CSUdfRU5ESUFOCglTNVBDMTFYX1JFRzgJcmVzMVszXTsKCVM1UEMxMVhfUkVHOAlFUF9ETUFfQ09OOwoJUzVQQzExWF9SRUc4CXJlczJbM107CglTNVBDMTFYX1JFRzgJRVBfRE1BX1VOSVQ7CglTNVBDMTFYX1JFRzgJcmVzM1szXTsKCVM1UEMxMVhfUkVHOAlFUF9ETUFfRklGTzsKCVM1UEMxMVhfUkVHOAlyZXM0WzNdOwoJUzVQQzExWF9SRUc4CUVQX0RNQV9UVENfTDsKCVM1UEMxMVhfUkVHOAlyZXM1WzNdOwoJUzVQQzExWF9SRUc4CUVQX0RNQV9UVENfTTsKCVM1UEMxMVhfUkVHOAlyZXM2WzNdOwoJUzVQQzExWF9SRUc4CUVQX0RNQV9UVENfSDsKI2Vsc2UgLyogIGxpdHRsZSBlbmRpYW4gKi8KCVM1UEMxMVhfUkVHOAlFUF9ETUFfQ09OOwoJUzVQQzExWF9SRUc4CXJlczFbM107CglTNVBDMTFYX1JFRzgJRVBfRE1BX1VOSVQ7CglTNVBDMTFYX1JFRzgJcmVzMlszXTsKCVM1UEMxMVhfUkVHOAlFUF9ETUFfRklGTzsKCVM1UEMxMVhfUkVHOAlyZXMzWzNdOwoJUzVQQzExWF9SRUc4CUVQX0RNQV9UVENfTDsKCVM1UEMxMVhfUkVHOAlyZXM0WzNdOwoJUzVQQzExWF9SRUc4CUVQX0RNQV9UVENfTTsKCVM1UEMxMVhfUkVHOAlyZXM1WzNdOwoJUzVQQzExWF9SRUc4CUVQX0RNQV9UVENfSDsKCVM1UEMxMVhfUkVHOAlyZXM2WzNdOwojZW5kaWYKfSAvKl9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKSovIFM1UEMxMVhfVVNCX0RFVl9ETUFTOwoKdHlwZWRlZiBzdHJ1Y3QgewojaWZkZWYgX19CSUdfRU5ESUFOCglTNVBDMTFYX1JFRzgJcmVzMVszXTsKCVM1UEMxMVhfUkVHOAlGVU5DX0FERFJfUkVHOwoJUzVQQzExWF9SRUc4CXJlczJbM107CglTNVBDMTFYX1JFRzgJUFdSX1JFRzsKCVM1UEMxMVhfUkVHOAlyZXMzWzNdOwoJUzVQQzExWF9SRUc4CUVQX0lOVF9SRUc7CglTNVBDMTFYX1JFRzgJcmVzNFsxNV07CglTNVBDMTFYX1JFRzgJVVNCX0lOVF9SRUc7CglTNVBDMTFYX1JFRzgJcmVzNVszXTsKCVM1UEMxMVhfUkVHOAlFUF9JTlRfRU5fUkVHOwoJUzVQQzExWF9SRUc4CXJlczZbMTVdOwoJUzVQQzExWF9SRUc4CVVTQl9JTlRfRU5fUkVHOwoJUzVQQzExWF9SRUc4CXJlczdbM107CglTNVBDMTFYX1JFRzgJRlJBTUVfTlVNMV9SRUc7CglTNVBDMTFYX1JFRzgJcmVzOFszXTsKCVM1UEMxMVhfUkVHOAlGUkFNRV9OVU0yX1JFRzsKCVM1UEMxMVhfUkVHOAlyZXM5WzNdOwoJUzVQQzExWF9SRUc4CUlOREVYX1JFRzsKCVM1UEMxMVhfUkVHOAlyZXMxMFs3XTsKCVM1UEMxMVhfUkVHOAlNQVhQX1JFRzsKCVM1UEMxMVhfUkVHOAlyZXMxMVszXTsKCVM1UEMxMVhfUkVHOAlFUDBfQ1NSX0lOX0NTUjFfUkVHOwoJUzVQQzExWF9SRUc4CXJlczEyWzNdOwoJUzVQQzExWF9SRUc4CUlOX0NTUjJfUkVHOwoJUzVQQzExWF9SRUc4CXJlczEzWzddOwoJUzVQQzExWF9SRUc4CU9VVF9DU1IxX1JFRzsKCVM1UEMxMVhfUkVHOAlyZXMxNFszXTsKCVM1UEMxMVhfUkVHOAlPVVRfQ1NSMl9SRUc7CglTNVBDMTFYX1JFRzgJcmVzMTVbM107CglTNVBDMTFYX1JFRzgJT1VUX0ZJRk9fQ05UMV9SRUc7CglTNVBDMTFYX1JFRzgJcmVzMTZbM107CglTNVBDMTFYX1JFRzgJT1VUX0ZJRk9fQ05UMl9SRUc7CiNlbHNlIC8qICBsaXR0bGUgZW5kaWFuICovCglTNVBDMTFYX1JFRzgJRlVOQ19BRERSX1JFRzsKCVM1UEMxMVhfUkVHOAlyZXMxWzNdOwoJUzVQQzExWF9SRUc4CVBXUl9SRUc7CglTNVBDMTFYX1JFRzgJcmVzMlszXTsKCVM1UEMxMVhfUkVHOAlFUF9JTlRfUkVHOwoJUzVQQzExWF9SRUc4CXJlczNbMTVdOwoJUzVQQzExWF9SRUc4CVVTQl9JTlRfUkVHOwoJUzVQQzExWF9SRUc4CXJlczRbM107CglTNVBDMTFYX1JFRzgJRVBfSU5UX0VOX1JFRzsKCVM1UEMxMVhfUkVHOAlyZXM1WzE1XTsKCVM1UEMxMVhfUkVHOAlVU0JfSU5UX0VOX1JFRzsKCVM1UEMxMVhfUkVHOAlyZXM2WzNdOwoJUzVQQzExWF9SRUc4CUZSQU1FX05VTTFfUkVHOwoJUzVQQzExWF9SRUc4CXJlczdbM107CglTNVBDMTFYX1JFRzgJRlJBTUVfTlVNMl9SRUc7CglTNVBDMTFYX1JFRzgJcmVzOFszXTsKCVM1UEMxMVhfUkVHOAlJTkRFWF9SRUc7CglTNVBDMTFYX1JFRzgJcmVzOVs3XTsKCVM1UEMxMVhfUkVHOAlNQVhQX1JFRzsKCVM1UEMxMVhfUkVHOAlyZXMxMFs3XTsKCVM1UEMxMVhfUkVHOAlFUDBfQ1NSX0lOX0NTUjFfUkVHOwoJUzVQQzExWF9SRUc4CXJlczExWzNdOwoJUzVQQzExWF9SRUc4CUlOX0NTUjJfUkVHOwoJUzVQQzExWF9SRUc4CXJlczEyWzNdOwoJUzVQQzExWF9SRUc4CU9VVF9DU1IxX1JFRzsKCVM1UEMxMVhfUkVHOAlyZXMxM1s3XTsKCVM1UEMxMVhfUkVHOAlPVVRfQ1NSMl9SRUc7CglTNVBDMTFYX1JFRzgJcmVzMTRbM107CglTNVBDMTFYX1JFRzgJT1VUX0ZJRk9fQ05UMV9SRUc7CglTNVBDMTFYX1JFRzgJcmVzMTVbM107CglTNVBDMTFYX1JFRzgJT1VUX0ZJRk9fQ05UMl9SRUc7CglTNVBDMTFYX1JFRzgJcmVzMTZbM107CiNlbmRpZiAvKiAgX19CSUdfRU5ESUFOICovCglTNVBDMTFYX1VTQl9ERVZfRklGT1MJZmlmb1s1XTsKCVM1UEMxMVhfVVNCX0RFVl9ETUFTCWRtYVs1XTsKfSAvKl9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKSovIFM1UEMxMVhfVVNCX0RFVklDRTsKCgovKiBXQVRDSCBET0cgVElNRVIgKHNlZSBtYW51YWwgY2hhcHRlciAxOCkgKi8KdHlwZWRlZiBzdHJ1Y3QgewoJUzVQQzExWF9SRUczMglXVENPTjsKCVM1UEMxMVhfUkVHMzIJV1REQVQ7CglTNVBDMTFYX1JFRzMyCVdUQ05UOwp9IC8qX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpKi8gUzVQQzExWF9XQVRDSERPRzsKCgovKiBJSUMgKHNlZSBtYW51YWwgY2hhcHRlciAyMCkgKi8KdHlwZWRlZiBzdHJ1Y3QgewoJUzVQQzExWF9SRUczMglJSUNDT047CglTNVBDMTFYX1JFRzMyCUlJQ1NUQVQ7CglTNVBDMTFYX1JFRzMyCUlJQ0FERDsKCVM1UEMxMVhfUkVHMzIJSUlDRFM7Cn0gLypfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSkqLyBTNVBDMTFYX0kyQzsKCgovKiBJSVMgKHNlZSBtYW51YWwgY2hhcHRlciAyMSkgKi8KdHlwZWRlZiBzdHJ1Y3QgewojaWZkZWYgX19CSUdfRU5ESUFOCglTNVBDMTFYX1JFRzE2CXJlczE7CglTNVBDMTFYX1JFRzE2CUlJU0NPTjsKCVM1UEMxMVhfUkVHMTYJcmVzMjsKCVM1UEMxMVhfUkVHMTYJSUlTTU9EOwoJUzVQQzExWF9SRUcxNglyZXMzOwoJUzVQQzExWF9SRUcxNglJSVNQU1I7CglTNVBDMTFYX1JFRzE2CXJlczQ7CglTNVBDMTFYX1JFRzE2CUlJU0ZDT047CglTNVBDMTFYX1JFRzE2CXJlczU7CglTNVBDMTFYX1JFRzE2CUlJU0ZJRk87CiNlbHNlIC8qICBsaXR0bGUgZW5kaWFuICovCglTNVBDMTFYX1JFRzE2CUlJU0NPTjsKCVM1UEMxMVhfUkVHMTYJcmVzMTsKCVM1UEMxMVhfUkVHMTYJSUlTTU9EOwoJUzVQQzExWF9SRUcxNglyZXMyOwoJUzVQQzExWF9SRUcxNglJSVNQU1I7CglTNVBDMTFYX1JFRzE2CXJlczM7CglTNVBDMTFYX1JFRzE2CUlJU0ZDT047CglTNVBDMTFYX1JFRzE2CXJlczQ7CglTNVBDMTFYX1JFRzE2CUlJU0ZJRk87CglTNVBDMTFYX1JFRzE2CXJlczU7CiNlbmRpZgp9IC8qX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpKi8gUzVQQzExWF9JMlM7CgoKLyogSS9PIFBPUlQgKHNlZSBtYW51YWwgY2hhcHRlciA5KSAqLwp0eXBlZGVmIHN0cnVjdCB7Cgp9IC8qX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpKi8gUzVQQzExWF9HUElPOwoKCi8qIFJUQyAoc2VlIG1hbnVhbCBjaGFwdGVyIDE3KSAqLwp0eXBlZGVmIHN0cnVjdCB7CiNpZmRlZiBfX0JJR19FTkRJQU4KCVM1UEMxMVhfUkVHOAlyZXMxWzY3XTsKCVM1UEMxMVhfUkVHOAlSVENDT047CglTNVBDMTFYX1JFRzgJcmVzMlszXTsKCVM1UEMxMVhfUkVHOAlUSUNOVDsKCVM1UEMxMVhfUkVHOAlyZXMzWzExXTsKCVM1UEMxMVhfUkVHOAlSVENBTE07CglTNVBDMTFYX1JFRzgJcmVzNFszXTsKCVM1UEMxMVhfUkVHOAlBTE1TRUM7CglTNVBDMTFYX1JFRzgJcmVzNVszXTsKCVM1UEMxMVhfUkVHOAlBTE1NSU47CglTNVBDMTFYX1JFRzgJcmVzNlszXTsKCVM1UEMxMVhfUkVHOAlBTE1IT1VSOwoJUzVQQzExWF9SRUc4CXJlczdbM107CglTNVBDMTFYX1JFRzgJQUxNREFURTsKCVM1UEMxMVhfUkVHOAlyZXM4WzNdOwoJUzVQQzExWF9SRUc4CUFMTU1PTjsKCVM1UEMxMVhfUkVHOAlyZXM5WzNdOwoJUzVQQzExWF9SRUc4CUFMTVlFQVI7CglTNVBDMTFYX1JFRzgJcmVzMTBbM107CglTNVBDMTFYX1JFRzgJUlRDUlNUOwoJUzVQQzExWF9SRUc4CXJlczExWzNdOwoJUzVQQzExWF9SRUc4CUJDRFNFQzsKCVM1UEMxMVhfUkVHOAlyZXMxMlszXTsKCVM1UEMxMVhfUkVHOAlCQ0RNSU47CglTNVBDMTFYX1JFRzgJcmVzMTNbM107CglTNVBDMTFYX1JFRzgJQkNESE9VUjsKCVM1UEMxMVhfUkVHOAlyZXMxNFszXTsKCVM1UEMxMVhfUkVHOAlCQ0REQVRFOwoJUzVQQzExWF9SRUc4CXJlczE1WzNdOwoJUzVQQzExWF9SRUc4CUJDRERBWTsKCVM1UEMxMVhfUkVHOAlyZXMxNlszXTsKCVM1UEMxMVhfUkVHOAlCQ0RNT047CglTNVBDMTFYX1JFRzgJcmVzMTdbM107CglTNVBDMTFYX1JFRzgJQkNEWUVBUjsKI2Vsc2UgLyogIGxpdHRsZSBlbmRpYW4gKi8KCVM1UEMxMVhfUkVHOAlyZXMwWzY0XTsKCVM1UEMxMVhfUkVHOAlSVENDT047CglTNVBDMTFYX1JFRzgJcmVzMVszXTsKCVM1UEMxMVhfUkVHOAlUSUNOVDsKCVM1UEMxMVhfUkVHOAlyZXMyWzExXTsKCVM1UEMxMVhfUkVHOAlSVENBTE07CglTNVBDMTFYX1JFRzgJcmVzM1szXTsKCVM1UEMxMVhfUkVHOAlBTE1TRUM7CglTNVBDMTFYX1JFRzgJcmVzNFszXTsKCVM1UEMxMVhfUkVHOAlBTE1NSU47CglTNVBDMTFYX1JFRzgJcmVzNVszXTsKCVM1UEMxMVhfUkVHOAlBTE1IT1VSOwoJUzVQQzExWF9SRUc4CXJlczZbM107CglTNVBDMTFYX1JFRzgJQUxNREFURTsKCVM1UEMxMVhfUkVHOAlyZXM3WzNdOwoJUzVQQzExWF9SRUc4CUFMTU1PTjsKCVM1UEMxMVhfUkVHOAlyZXM4WzNdOwoJUzVQQzExWF9SRUc4CUFMTVlFQVI7CglTNVBDMTFYX1JFRzgJcmVzOVszXTsKCVM1UEMxMVhfUkVHOAlSVENSU1Q7CglTNVBDMTFYX1JFRzgJcmVzMTBbM107CglTNVBDMTFYX1JFRzgJQkNEU0VDOwoJUzVQQzExWF9SRUc4CXJlczExWzNdOwoJUzVQQzExWF9SRUc4CUJDRE1JTjsKCVM1UEMxMVhfUkVHOAlyZXMxMlszXTsKCVM1UEMxMVhfUkVHOAlCQ0RIT1VSOwoJUzVQQzExWF9SRUc4CXJlczEzWzNdOwoJUzVQQzExWF9SRUc4CUJDRERBVEU7CglTNVBDMTFYX1JFRzgJcmVzMTRbM107CglTNVBDMTFYX1JFRzgJQkNEREFZOwoJUzVQQzExWF9SRUc4CXJlczE1WzNdOwoJUzVQQzExWF9SRUc4CUJDRE1PTjsKCVM1UEMxMVhfUkVHOAlyZXMxNlszXTsKCVM1UEMxMVhfUkVHOAlCQ0RZRUFSOwoJUzVQQzExWF9SRUc4CXJlczE3WzNdOwojZW5kaWYKfSAvKl9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKSovIFM1UEMxMVhfUlRDOwoKCi8qIEFEQyAoc2VlIG1hbnVhbCBjaGFwdGVyIDE2KSAqLwp0eXBlZGVmIHN0cnVjdCB7CglTNVBDMTFYX1JFRzMyCUFEQ0NPTjsKCVM1UEMxMVhfUkVHMzIJQURDREFUOwp9IC8qX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpKi8gUzNDMjQwMF9BREM7CgoKLyogQURDIChzZWUgbWFudWFsIGNoYXB0ZXIgMTYpICovCnR5cGVkZWYgc3RydWN0IHsKCVM1UEMxMVhfUkVHMzIJQURDQ09OOwoJUzVQQzExWF9SRUczMglBRENUU0M7CglTNVBDMTFYX1JFRzMyCUFEQ0RMWTsKCVM1UEMxMVhfUkVHMzIJQURDREFUMDsKCVM1UEMxMVhfUkVHMzIJQURDREFUMTsKfSAvKl9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKSovIFMzQzI0MTBfQURDOwoKCi8qIFNQSSAoc2VlIG1hbnVhbCBjaGFwdGVyIDIyKSAqLwp0eXBlZGVmIHN0cnVjdCB7CglTNVBDMTFYX1JFRzMyCVNQQ09OOwoJUzVQQzExWF9SRUczMglTUFNUQTsKCVM1UEMxMVhfUkVHMzIJU1BQSU47CglTNVBDMTFYX1JFRzMyCVNQUFJFOwoJUzVQQzExWF9SRUczMglTUFREQVQ7CglTNVBDMTFYX1JFRzMyCVNQUkRBVDsKCVM1UEMxMVhfUkVHMzIJcmVzWzJdOwp9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKSBTNVBDMTFYX1NQSV9DSEFOTkVMOwoKdHlwZWRlZiBzdHJ1Y3QgewoJUzVQQzExWF9TUElfQ0hBTk5FTAljaFtTNVBDMTFYX1NQSV9DSEFOTkVMU107Cn0gLypfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSkqLyBTNVBDMTFYX1NQSTsKCgovKiBNTUMgSU5URVJGQUNFIChzZWUgUzNDMjQwMCBtYW51YWwgY2hhcHRlciAxOSkgKi8KdHlwZWRlZiBzdHJ1Y3QgewojaWZkZWYgX19CSUdfRU5ESUFOCglTNVBDMTFYX1JFRzgJcmVzMVszXTsKCVM1UEMxMVhfUkVHOAlNTUNPTjsKCVM1UEMxMVhfUkVHOAlyZXMyWzNdOwoJUzVQQzExWF9SRUc4CU1NQ1JSOwoJUzVQQzExWF9SRUc4CXJlczNbM107CglTNVBDMTFYX1JFRzgJTU1GQ09OOwoJUzVQQzExWF9SRUc4CXJlczRbM107CglTNVBDMTFYX1JFRzgJTU1TVEE7CglTNVBDMTFYX1JFRzE2CXJlczU7CglTNVBDMTFYX1JFRzE2CU1NRlNUQTsKCVM1UEMxMVhfUkVHOAlyZXM2WzNdOwoJUzVQQzExWF9SRUc4CU1NUFJFOwoJUzVQQzExWF9SRUcxNglyZXM3OwoJUzVQQzExWF9SRUcxNglNTUxFTjsKCVM1UEMxMVhfUkVHOAlyZXM4WzNdOwoJUzVQQzExWF9SRUc4CU1NQ1I3OwoJUzVQQzExWF9SRUczMglNTVJTUFs0XTsKCVM1UEMxMVhfUkVHOAlyZXM5WzNdOwoJUzVQQzExWF9SRUc4CU1NQ01EMDsKCVM1UEMxMVhfUkVHMzIJTU1DTUQxOwoJUzVQQzExWF9SRUcxNglyZXMxMDsKCVM1UEMxMVhfUkVHMTYJTU1DUjE2OwoJUzVQQzExWF9SRUc4CXJlczExWzNdOwoJUzVQQzExWF9SRUc4CU1NREFUOwojZWxzZQoJUzVQQzExWF9SRUc4CU1NQ09OOwoJUzVQQzExWF9SRUc4CXJlczFbM107CglTNVBDMTFYX1JFRzgJTU1DUlI7CglTNVBDMTFYX1JFRzgJcmVzMlszXTsKCVM1UEMxMVhfUkVHOAlNTUZDT047CglTNVBDMTFYX1JFRzgJcmVzM1szXTsKCVM1UEMxMVhfUkVHOAlNTVNUQTsKCVM1UEMxMVhfUkVHOAlyZXM0WzNdOwoJUzVQQzExWF9SRUcxNglNTUZTVEE7CglTNVBDMTFYX1JFRzE2CXJlczU7CglTNVBDMTFYX1JFRzgJTU1QUkU7CglTNVBDMTFYX1JFRzgJcmVzNlszXTsKCVM1UEMxMVhfUkVHMTYJTU1MRU47CglTNVBDMTFYX1JFRzE2CXJlczc7CglTNVBDMTFYX1JFRzgJTU1DUjc7CglTNVBDMTFYX1JFRzgJcmVzOFszXTsKCVM1UEMxMVhfUkVHMzIJTU1SU1BbNF07CglTNVBDMTFYX1JFRzgJTU1DTUQwOwoJUzVQQzExWF9SRUc4CXJlczlbM107CglTNVBDMTFYX1JFRzMyCU1NQ01EMTsKCVM1UEMxMVhfUkVHMTYJTU1DUjE2OwoJUzVQQzExWF9SRUcxNglyZXMxMDsKCVM1UEMxMVhfUkVHOAlNTURBVDsKCVM1UEMxMVhfUkVHOAlyZXMxMVszXTsKI2VuZGlmCn0gLypfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSkqLyBTM0MyNDAwX01NQzsKCgovKiBTRCBJTlRFUkZBQ0UgKHNlZSBTM0MyNDEwIG1hbnVhbCBjaGFwdGVyIDE5KSAqLwp0eXBlZGVmIHN0cnVjdCB7CglTNVBDMTFYX1JFRzMyCVNESUNPTjsKCVM1UEMxMVhfUkVHMzIJU0RJUFJFOwoJUzVQQzExWF9SRUczMglTRElDQVJHOwoJUzVQQzExWF9SRUczMglTRElDQ09OOwoJUzVQQzExWF9SRUczMglTRElDU1RBOwoJUzVQQzExWF9SRUczMglTRElSU1AwOwoJUzVQQzExWF9SRUczMglTRElSU1AxOwoJUzVQQzExWF9SRUczMglTRElSU1AyOwoJUzVQQzExWF9SRUczMglTRElSU1AzOwoJUzVQQzExWF9SRUczMglTRElEVElNRVI7CglTNVBDMTFYX1JFRzMyCVNESUJTSVpFOwoJUzVQQzExWF9SRUczMglTRElEQ09OOwoJUzVQQzExWF9SRUczMglTRElEQ05UOwoJUzVQQzExWF9SRUczMglTRElEU1RBOwoJUzVQQzExWF9SRUczMglTRElGU1RBOwojaWZkZWYgX19CSUdfRU5ESUFOCglTNVBDMTFYX1JFRzgJcmVzWzNdOwoJUzVQQzExWF9SRUc4CVNESURBVDsKI2Vsc2UKCVM1UEMxMVhfUkVHOAlTRElEQVQ7CglTNVBDMTFYX1JFRzgJcmVzWzNdOwojZW5kaWYKCVM1UEMxMVhfUkVHMzIJU0RJSU1TSzsKfSAvKl9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKSovIFMzQzI0MTBfU0RJOwoKI2VuZGlmIC8qX19TNVBDMTFYX0hfXyovCg==