I2lmbmRlZiBfX0ZPVEFfQ09NTU9OX0hfXwojZGVmaW5lIF9fRk9UQV9DT01NT05fSF9fCgojZGVmaW5lIFpURV9GT1RBX1VQREFURUZMQUdfTEVOIDMyCiNkZWZpbmUgWlRFX0ZPVEFfTkVURE9HX0ZMQUdfTEVOIDI1NgojZGVmaW5lIFpURV9GT1RBX0ZMQUdfTEVOIFpURV9GT1RBX05FVERPR19GTEFHX0xFTitaVEVfRk9UQV9VUERBVEVGTEFHX0xFTis0CgojZGVmaW5lIFpURV9GT1RBX1BBUlRJVElPTl9TVFJfTEVOIDMyCgp0eXBlZGVmIHN0cnVjdCB7CgljaGFyIHVwZGF0ZV9mbGFnW1pURV9GT1RBX1VQREFURUZMQUdfTEVOXTsKCWludCBzdGF0ZV9mbGFnOwoJY2hhciBuZXRkb2dfZmxhZ1taVEVfRk9UQV9ORVRET0dfRkxBR19MRU5dOwoJdm9pZCogcmVzZXJ2ZTsKCn0gZm90YWZsYWdfdDsKCnR5cGVkZWYgZW51bSB7CglTVEFURUZMQUdfTlVMTCA9IDAsCglSRUNPVkVSWSwKCVJFQ09WRVJZX0tFUk5FTCwKCUNQVU0wLAoJQ1BVWlNQLAoJQ1BVUjcsCglDUFVBUCwKCUNQRlMsCglVU0VSREFUQSwKCVNFQ1VSRUZTCn0gc3RhdGVmbGFnX3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CglzdGF0ZWZsYWdfdCBzdGF0ZWZsYWc7CgljaGFyIG5hbWVbWlRFX0ZPVEFfUEFSVElUSU9OX1NUUl9MRU5dOwp9IHN0YXRlZmxhZ19wcmludF90OwoKdHlwZWRlZiBlbnVtIHsKCVNOVFBfRkFJTEVEID0gMCwKCU1FTU9SWV9BTExPQ19GQUlMRUQsCglORVRXT1JLX05PVF9BVkFJTEFCTEUsCglETVNFU1NJT05fQUJPUlRFRF9ISUdILAoJRE1TRVNTSU9OX0FCT1JURURfTE9XLAoJRExTRVNTSU9OX0FCT1JURURfSElHSCwKCURMU0VTU0lPTl9BQk9SVEVEX0xPVywKCUlNRUlfSU5WQUxJRCwKCUNSX0lOTkVSX1ZFUlNJT05fSU5WQUxJRCwKfSBuZXRkb2dmbGFnX2Vycm9yX3Q7CgojZGVmaW5lIE5FVF9ET0dfSU5JVF9GTEFHIDB4RkYKI2RlZmluZSBORVRfRE9HX0VYQ0VQVElPTl9GTEFHIDEKCi8vVVBEQVRFX1NUQVRFCiNkZWZpbmUgCUlETEUgCQkJCQkiaWRsZSIKI2RlZmluZQlDSEVDS0lORwkJCQkiY2hlY2tpbmciCiNkZWZpbmUJQ0hFQ0tfQ09NUExFVEUJCQkiY2hlY2tfY29tcGxldGUiCiNkZWZpbmUJV0FJVF9DT05GSVJNCQkJIndhaXRfY29uZmlybSIKI2RlZmluZQlET1dOTE9BRElORwkJCSJkb3dubG9hZGluZyIKI2RlZmluZQlET1dOTE9BRF9TVUNDRVNTCSJkb3dubG9hZF9zdWNjZXNzIgojZGVmaW5lCURPV05MT0FEX0ZBSUxFRAkJImRvd25sb2FkX2ZhaWxlZCIKI2RlZmluZQlMT1dfQkFUVEVSWQkJCSJsb3dfYmF0dGVyeSIKI2RlZmluZQlQUkVQQVJFX0lOU1RBTEwJCSJwcmVwYXJlX2luc3RhbGwiCiNkZWZpbmUgCU5PTkUJCQkJCSJub25lIgoKLy9uZXcgdmVyc2lvbiBzdGF0ZSAgaGFzIHN0YXRlIGJlbG93CgovLyNkZWZpbmUgCUlETEUgCQkJCQkiaWRsZSIKI2RlZmluZQlDSEVDS19GQUlMRUQJCQkJImNoZWNrX2ZhaWxlZCIKI2RlZmluZQlST0FNSU5HCQkJCQkicm9hbWluZyIKI2RlZmluZQlCQURfTkVUV09SSwkJCSJiYWRfbmV0d29yayIKI2RlZmluZQlOT19ORVdfVkVSU0lPTiAJCQkibm9fbmV3X3ZlcnNpb24iCiNkZWZpbmUJSEFTX09QVElPTkFMIAkJCSJoYXNfb3B0aW9uYWwiCiNkZWZpbmUJSEFTX0NSSVRJQ0FMCQkJCSJoYXNfY3JpdGljYWwiCiNkZWZpbmUJUEtHX1RPT19CSUcJCQkJInBrZ190b29fYmlnIgojZGVmaW5lCUFMUkVBRFlfSEFTX1BLRwkJCQkiYWxyZWFkeV9oYXNfcGtnIgoKCgovLyBudiDP4LnYCgoKI2RlZmluZSBOVl9GT1RBX1BLR19UT1RBTF9TSVpFIAkJCQkJCSJmb3RhX3BrZ190b3RhbF9zaXplIgojZGVmaW5lIE5WX0ZPVEFfUEtHX0RMX1NJWkUgCQkJCQkJImZvdGFfZGxfcGtnX3NpemUiCiNkZWZpbmUgTlZfRk9UQV9ETV9WRU5ET1IgCQkJCQkJCSJmb3RhX2RtX3ZlbmRvciIKCi8qcG9sbGluZyAgz+C52CovCi8quPiy4srUyMvUsbbByKHKudPDKi8KI2RlZmluZSBOVl9ETV9ORVhUUE9MTElOR1RJTUUgCQkJCQkJImRtX25leHRwb2xsaW5ndGltZSIKLyp1bml0IGluIHNlY29uZCwgIMq1vMrKudPD1eK49iovCiNkZWZpbmUgTlZfRk9UQV9QT0xMSU5HX05FWFRfVElNRSAgICAgICAgICAgICAgICAgICAicG9sbGluZ19uZXh0dGltZSIKCiNkZWZpbmUgTlZfRE1fRk9UQV9BTExPV19ST0FNSU5HIAkJCQkJImZvdGFfYWxsb3dSb2FtaW5nVXBkYXRlIiAvLyJkbV9mb3RhX2FsbG93X3JvYW1pbmciIAojZGVmaW5lIE5WX0RNX1BPTExJTkdDWUNMRSAJCQkJCQkJImZvdGFfdXBkYXRlSW50ZXJ2YWxEYXkiIC8vImRtX3BvbGxpbmdjeWNsZSIKI2RlZmluZSBOVl9ETV9QT0xMSU5HU1dJVENIIAkJCQkJCSJmb3RhX3VwZGF0ZU1vZGUiIC8vImRtX3BvbGxpbmdzd2l0Y2giCiNkZWZpbmUgTlZfRk9UQV9URVNUTU9ERV9TV0lUQ0gJCQkJCQkiZm90YV90ZXN0X21vZGUiICAvL2ZvdGEgdGVzdCBtb2RlIHN3aXRjaAoKCi8quMNudsrH1NpyY8b0tq+9xbG+1tDKudPDKi8KI2RlZmluZSBOVl9VUERBVEVfVFlQRSAJCQkJCQkJCSJ1cGRhdGVfdHlwZSIKCgoKI2RlZmluZSBOVl9GT1RBX05FV19WRVJTSU9OX1NUQVRFIAkJCQkJImZvdGFfbmV3X3ZlcnNpb25fc3RhdGUiCiNkZWZpbmUgTlZfRk9UQV9DVVJSX1VQR1JBREVfU1RBVEUgCQkJCSJmb3RhX2N1cnJlbnRfdXBncmFkZV9zdGF0ZSIKI2RlZmluZSBOVl9GT1RBX1VQR1JBREVfU0VMRUNUT1IgCQkJCSJmb3RhX3VwZ3JhZGVfc2VsZWN0b3IiCiNkZWZpbmUgTlZfRk9UQV9ORUVEX1VTRVJfQ09ORklSTV9ET1dOTE9BRCAJCQkJImZvdGFfbmVlZF91c2VyX2NvbmZpcm1fZG93bmxvYWQiCiNkZWZpbmUgTlZfRk9UQV9ORUVEX1VTRVJfQ09ORklSTV9VUERBVEUgCQkJCSJmb3RhX25lZWRfdXNlcl9jb25maXJtX3VwZGF0ZSIKCi8qCjEuICAgd2hlbiBwb3dlcm9uLCAgaXQgd2lsbCBiZSBpbml0IGFjY29yZGluZyB0byB0aGUgZGVsdGEucGFja2FnZSBmaWxlCjIuICB3aGVuIGRvd25sb2FkZWQsIGl0IHdpbGwgYmUgc2V0CjMuICBpdCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZGVmYXVsdF9wYXJhbWV0ZXJfdXNlciBmaWxlLCAgaXQgbWVhbnMgd2hlbiByZXN0YXJ0LCBpdCBtdXN0IGJlIHJlaW5pdAoqLwojZGVmaW5lIE5WX0ZPVEFfUEtHX0VYSVNUCQkJIAkJCSJmb3RhX3BhY2thZ2VfYWxyZWFkeV9kb3dubG9hZCIKI2RlZmluZSBOVl9GT1RBX1BBQ0tBR0VfQUxSRUFEWV9ET1dOTE9BRCAJCSJmb3RhX3BhY2thZ2VfYWxyZWFkeV9kb3dubG9hZCIKCgovKtPQyP249rj80MK94bn7o6zQ6NKq08W7ryovCiNkZWZpbmUgTlZfRk9UQV9VUEdSQURFX1JFU1VMVCAJCQkJCSJmb3RhX3VwZ3JhZGVfcmVzdWx0IgojZGVmaW5lIE5WX0ZPVEFfVVBHUkFERV9SRVNVTFRfTU1JCQkJCSJmb3RhX3VwZ3JhZGVfcmVzdWx0X21taSIKCgovKmdvYWRoZWFkIMjUyLvU2sq508MqLwojZGVmaW5lIE5WX0ZPVEFfRE1fTEFTVF9DSEVDS19USU1FICAgCQkJCSJkbV9sYXN0X2NoZWNrX3RpbWUiCgojZGVmaW5lIE5WX0ZPVEFfVkVSU0lPTl9OQU1FIAkJCQkJCSJmb3RhX3ZlcnNpb25fbmFtZSIKI2RlZmluZSBOVl9GT1RBX1ZFUlNJT05fREVMVEFfSUQgCQkJCQkiZm90YV92ZXJzaW9uX2RlbHRhX2lkIgojZGVmaW5lIE5WX0ZPVEFfVkVSU0lPTl9ERUxUQV9VUkwgCQkJCQkiZm90YV92ZXJzaW9uX2RlbHRhX3VybCIKI2RlZmluZSBOVl9GT1RBX1ZFUlNJT05fTUQ1U1VNIAkJCQkJImZvdGFfdmVyc2lvbl9tZDVzdW0iCgojZGVmaW5lIE5WX0ZPVEFfT0VNCQkJCQkJCQkJImZvdGFfb2VtIgojZGVmaW5lIE5WX0ZPVEFfVE9LRU4gCQkJCQkJCQkiZm90YV90b2tlbiIKI2RlZmluZSBOVl9GT1RBX0RFVklDRV9UWVBFIAkJCQkJCSJmb3RhX2RldmljZV90eXBlIgojZGVmaW5lIE5WX0ZPVEFfUExBVEZPUk0gCQkJCQkJCSJmb3RhX3BsYXRmb3JtIgojZGVmaW5lIE5WX0ZPVEFfTU9ERUxTIAkJCQkJCQkJImZvdGFfbW9kZWxzIgoKLy8gYWRkIGJ5IG5ldyBsaWJkbWdyCiNkZWZpbmUgTlZfRk9UQV9QUk9EVUNUSUQJCQkJCQkJImZvdGFfcHJvZHVjdF9pZCIKI2RlZmluZSBOVl9GT1RBX1BST0RVQ1RTRUNSRVQgCQkJCQkJImZvdGFfcHJvZHVjdF9zZWNyZXQiCiNkZWZpbmUgTlZfRk9UQV9BUFBWRVJTSU9OIAkJCQkJCQkiZm90YV9hcHBfdmVyc2lvbiIKI2RlZmluZSBOVl9GT1RBX05FVFdPUktUWVBFIAkJCQkJCSJmb3RhX25ldHdvcmtfdHlwZSIKCgoKCiNkZWZpbmUgTlZfRk9UQV9ETF9VUkwgCQkJCQkJCQkiZm90YV9kbF91cmwiCiNkZWZpbmUgTlZfRk9UQV9DSEtfVVJMIAkJCQkJCQkiZm90YV9jaGtfdXJsIgojZGVmaW5lIE5WX0ZPVEFfUkVHX1VSTCAJCQkJCQkJImZvdGFfcmVnX3VybCIKI2RlZmluZSBOVl9GT1RBX1JFUE9SVF9ETFJfVVJMIAkJCQkJCSJmb3RhX3JlcG9ydF9kbHJfdXJsIgojZGVmaW5lIE5WX0ZPVEFfUkVQT1JUX1VQR1JfVVJMIAkJCQkJImZvdGFfcmVwb3J0X3VwZ3JfdXJsIgojZGVmaW5lIE5WX0ZPVEFfUkVQT1JUX1NBTEVTX1VSTCAJCQkJCSJmb3RhX3JlcG9ydF9zYWxlc191cmwiCgovKgoJU05UUCC4/NDCxKPKvaOsv8nS1Mih1rUKCW1hbnVhbAoJYXV0bwoqLwovLyNkZWZpbmUgTlZfU1lTVElNRV9NT0RFIAkJCQkJCQkic3lzdGltZV9tb2RlIgojZGVmaW5lIE5WX1NOVFBfTUFOVUFMX01PREUgCQkJCQkJIm1hbnVhbCIKI2RlZmluZSBOVl9TTlRQX0FVVE9fTU9ERSAJCQkJCQkJImF1dG8iCiNkZWZpbmUgTlZfU05UUF9QUk9DRVNTX1JFU1VMVCAJCQkJCQkic250cF9wcm9jZXNzX3Jlc3VsdCIKLyoKzfjC59e0zKwKSW50ZXJuYXRpb25hbDo6OkludGVybmFsOjo6SG9tZSovCiNkZWZpbmUgTlZfU0lNQ0FSRF9ST0FNIAkJCQkJCQkic2ltY2FyZF9yb2FtIgojZGVmaW5lIE5WX01PREVNX01BSU5fU1RBVEUgCQkJCQkJIm1vZGVtX21haW5fc3RhdGUiCgovKndhX2lubmVyX21vZCA9IFpURV9NRjkxMFMgIE1GOTEwVyBNRjkyMiovCiNkZWZpbmUgTlZfV0FfSU5ORVJfTU9EIAkJCQkJCQkid2FfaW5uZXJfbW9kIgojZGVmaW5lIE5WX0lNRUkgCQkJCQkJCQkJCSJpbWVpIgojZGVmaW5lIE5WX0NSX0lOTkVSX1ZFUlNJT04gCQkJCQkJImNyX2lubmVyX3ZlcnNpb24iCiNkZWZpbmUgTlZfSEFSRFdBUkVfVkVSU0lPTiAJCQkJCQkiaGFyZHdhcmVfdmVyc2lvbiIKCiNkZWZpbmUgVVBHUkFERV9TVEFURV9BQ0NFUFQgCQkJCQkJImFjY2VwdCIKI2RlZmluZSBVUEdSQURFX1NUQVRFX0NBTkNFTCAJCQkJCQkiY2FuY2VsIgoKI2RlZmluZSBVUEdSQURFX1NFTEVDVE9SX05PTkUgCQkJCQkJIm5vbmUiCiNkZWZpbmUgVVBHUkFERV9TRUxFQ1RPUl9BQ0NFUFQgCQkJCQkiYWNjZXB0IgojZGVmaW5lIFVQR1JBREVfU0VMRUNUT1JfQ0FOQ0VMIAkJCQkJImNhbmNlbCIKCiNkZWZpbmUgVVBEQVRFX1NVQ0NFU1MgCQkJCQkJCSJzdWNjZXNzIgojZGVmaW5lIFVQREFURV9GQUlMIAkJCQkJCQkJImZhaWwiCgojZGVmaW5lIFNVQ0NFU1NfU1RSSU5HIAkJCQkJCQkJInN1Y2Nlc3MiCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qKioqKioqKioqKioqKioqKk5WX1NJTUNBUkRfUk9BTSoqKioqKioqKioqKioqKi8KdHlwZWRlZiBlbnVtIE5ldHdvcmtTdGF0dXNfdGFnIHsKCU5FVFdPUktfSURMRSwKCVJPQU1JTkdfSE9NRSwKCVJPQU1JTkdfSU5URVJOQVRJT05BTCwKCVJPQU1JTkdfSU5URVJOQUwsCglST0FNSU5HX05BLAoJSEFTX1VTRVJfREFUQSwKCUNIQU5HRV9BUE5fRkFJTCwKCU5PX1NJTUNBUkRfSU5TRVJURUQsCglORVRXT1JLX0FWQUlMQUJMRQp9IE5ldHdvcmtTdGF0dXM7CgojZGVmaW5lIFJPQU1fSU5URVJOQVRJT05BTCAiSW50ZXJuYXRpb25hbCIKI2RlZmluZSBST0FNX0lOVEVSTkFMICJJbnRlcm5hbCIKI2RlZmluZSBST0FNX0hPTUUgIkhvbWUiCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKioqKioqKioqKioqKioqKk5WX01PREVNX01BSU5fU1RBVEUqKioqKioqKioqKioqLwojZGVmaW5lIE1PREVNX01BSU5fU1RBVEVfTU9ERU1fU0lNX1VOREVURUNURUQgIm1vZGVtX3NpbV91bmRldGVjdGVkIgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKioqKioqKioqKioqKioqKk5WX0ZPVEFfU1RBVEUqKioqKioqKioqKioqKioqKioqLwojZGVmaW5lIEZPVEFfU0VBUkNIX0ZBSUxFRCAiZm90YV9zZWFyY2hfZmFpbGVkIgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKioqKioqKioqKipOVl9GT1RBX1BLR19ETF9DSEVDS19SRVNVTCoqKioqKioqKioqKi8KI2RlZmluZSBGT1RBX1BLR19ETF9GQUlMRUQgImZvdGFfcGtnX2RsX2ZhaWxlZCIKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCiNkZWZpbmUgCVpURV9GT1RBX01BSU5fUEFUSAkJCQkJCQkiL2NhY2hlL3p0ZV9mb3RhLyIKI2RlZmluZSAgCUZPVEFVUEkJCQkJCQkJCQkJWlRFX0ZPVEFfTUFJTl9QQVRIInVwaS5sb2ciCiNkZWZpbmUgIAlGT1RBUkIJCQkJCQkJCQkJWlRFX0ZPVEFfTUFJTl9QQVRIImxpYi5sb2ciCiNkZWZpbmUgIAlGT1RBRE0JCQkJCQkJCQkJWlRFX0ZPVEFfTUFJTl9QQVRIImRtLmxvZyIKI2RlZmluZSAJRk9UQV9VUERBVEVfU1RBVFVTX0ZJTEUgCQkJCQlaVEVfRk9UQV9NQUlOX1BBVEgidXBkYXRlX3N0YXR1cyIKI2RlZmluZSAJRk9UQV9VUERBVEVfU1RBVFVTX0ZJTEVfT0xECQkJCQlaVEVfRk9UQV9NQUlOX1BBVEgiL2R1YS91cGRhdGVfc3RhdHVzIgoKCgojZGVmaW5lIAlGT1RBX1BBQ0tBR0VfRklMRSAgIAkJCQkJIAlaVEVfRk9UQV9NQUlOX1BBVEgiZGVsdGEucGFja2FnZSIKI2RlZmluZSAgICAgRk9UQV9QQUNLQUdFX0ZJTEVfRkFJTEVEICAgCQkJCSAgICAgWlRFX0ZPVEFfTUFJTl9QQVRIImRlbHRhLnBhY2thZ2UuZmFpbGVkIgojZGVmaW5lIAlDSEFSR0VSX1ZPTFRBR0VfRklMRSAgIAkJCQkJCSIvc3lzL2NsYXNzL3Bvd2VyX3N1cHBseS9iYXR0ZXJ5L3ZvbHRhZ2Vfbm93IgojZGVmaW5lICAgICBGT1RBX0RNX1VQR1JBREVfVEVNUCAJCQkJCQlaVEVfRk9UQV9NQUlOX1BBVEgidXBncmFkZV90ZW1wIgojZGVmaW5lIAlGT1RBX0RNX01FVEFfRklMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWlRFX0ZPVEFfTUFJTl9QQVRIIm1ldGFfZGF0YSIKCgojZGVmaW5lIAlETF9UTVBfRklMRU5BTUUgICAgICAgICAgICAJCQkJCQlaVEVfRk9UQV9NQUlOX1BBVEgicHJvY2Vzc19kZWx0YS5wYWNrYWdlIiAvL7njyf22z7Xn0Pi0q8/C1Ni5/bPM1tDB2cqxzsS8/goKI2RlZmluZSAJREVMVEFfVkVSSUZZX0ZBSUxFRCAJCQkJCQlaVEVfRk9UQV9NQUlOX1BBVEgiZGVsdGEucGFja2FnZS52ZXJpZnlGYWlsZWQiCiNkZWZpbmUgCURFTFRBX1JFQ09fRkFJTEVEIAkJCQkJCQlaVEVfRk9UQV9NQUlOX1BBVEgiZGVsdGEucGFja2FnZS5yZWNvRmFpbGVkIgojZGVmaW5lIAlERUxUQV9TWVNfRkFJTEVEICAgIAkJCQkJCQlaVEVfRk9UQV9NQUlOX1BBVEgiZGVsdGEucGFja2FnZS5zeXN0ZW1GYWlsZWQiCgojZGVmaW5lICAJRk9UQV9ETFNWUl9ET01BSU4JCQkJCQkJIm1nLmFkdXBzLmNuIgoKCiNlbmRpZgo=