LyoKICogRE9TIEVYRSBsb2FkZXIKICoKICogQ29weXJpZ2h0IDE5OTggT3ZlIEvldmVuCiAqLwoKI2lmZGVmIGxpbnV4CgojaW5jbHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRlIDxzeXMvaXBjLmg+CiNpbmNsdWRlIDxzeXMvc2htLmg+CiNpbmNsdWRlIDxzeXMvdm04Ni5oPgojaW5jbHVkZSAid2ludHlwZXMuaCIKCnR5cGVkZWYgc3RydWN0IF9ET1NUQVNLIHsKIExQVk9JRCBpbWc7CiB1bnNpZ25lZCBpbWdfb2ZzOwogSE1PRFVMRTE2IGhNb2R1bGU7CiBzdHJ1Y3Qgdm04NnBsdXNfc3RydWN0IFZNODY7CiBpbnQgZm4sIHN0YXRlOwojaWZkZWYgTVpfVVNFU1lTVgogLyogU1lTViBJUEMgaXMgbm90IHF1aXRlIHN1cHBvcnRlZCB5ZXQuLi4gKi8KIGtleV90IHNobV9rZXk7CiBpbnQgc2htX2lkOwojZWxzZQogY2hhciBtbV9uYW1lWzEyOF07CiBpbnQgbW1fZmQ7CiNlbmRpZgogaW50IHJlYWRfcGlwZSx3cml0ZV9waXBlOwogcGlkX3QgdGFzazsKfSBET1NUQVNLLCAqTFBET1NUQVNLOwoKZXh0ZXJuIEhJTlNUQU5DRTE2IE1aX0xvYWRNb2R1bGUoIExQQ1NUUiBuYW1lLCBMUENTVFIgY21kbGluZSwgTFBDU1RSIGVudiwgVUlOVDE2IHNob3dfY21kICk7CmV4dGVybiBpbnQgTVpfUnVuTW9kdWxlKCBMUERPU1RBU0sgbHBEb3NUYXNrICk7CmV4dGVybiB2b2lkIE1aX0tpbGxNb2R1bGUoIExQRE9TVEFTSyBscERvc1Rhc2sgKTsKZXh0ZXJuIGludCBET1NWTV9Qcm9jZXNzKCBMUERPU1RBU0sgbHBEb3NUYXNrICk7CgojZW5kaWYgLyogbGludXggKi8K