I2lmbmRlZiBNU19JTkNECiNkZWZpbmUgTVNfSU5DRAoKI2luY2x1ZGUgPGxpbnV4L2Jsa2Rldi5oPgojaW5jbHVkZSAiY29tbW9uLmgiCgovLyBNZW1vcnlTdGljayBSZWdpc3RlcgovLyBTdGF0dXMgUmVnaXN0ZXIgMAojZGVmaW5lIE1TX1JFR19TVDBfTUIgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwICAgIC8vIG1lZGlhIGJ1c3kKI2RlZmluZSBNU19SRUdfU1QwX0ZCMCAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCAgICAvLyBmbHVzaCBidXN5IDAKI2RlZmluZSBNU19SRUdfU1QwX0JFICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCAgICAvLyBidWZmZXIgZW1wdHkKI2RlZmluZSBNU19SRUdfU1QwX0JGICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCAgICAvLyBidWZmZXIgZnVsbAojZGVmaW5lIE1TX1JFR19TVDBfU0wgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAyICAgIC8vIHNsZWVwCiNkZWZpbmUgTVNfUkVHX1NUMF9XUCAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEgICAgLy8gd3JpdGUgcHJvdGVjdGVkCiNkZWZpbmUgTVNfUkVHX1NUMF9XUF9PTiAgICAgICAgICAgICAgICAgICAgICAgIE1TX1JFR19TVDBfV1AKI2RlZmluZSBNU19SRUdfU1QwX1dQX09GRiAgICAgICAgICAgICAgICAgICAgICAgMHgwMAoKLy8gU3RhdHVzIFJlZ2lzdGVyIDEKI2RlZmluZSBNU19SRUdfU1QxX01CICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCAgICAvLyBtZWRpYSBidXN5CiNkZWZpbmUgTVNfUkVHX1NUMV9GQjEgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAgICAgLy8gZmx1c2ggYnVzeSAxCiNkZWZpbmUgTVNfUkVHX1NUMV9EVEVSICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAgICAgLy8gZXJyb3Igb24gZGF0YShjb3JyZWN0ZWQpCiNkZWZpbmUgTVNfUkVHX1NUMV9VQ0RUICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAgICAgLy8gdW5hYmxlIHRvIGNvcnJlY3QgZGF0YQojZGVmaW5lIE1TX1JFR19TVDFfRVhFUiAgICAgICAgICAgICAgICAgICAgICAgICAweDA4ICAgIC8vIGVycm9yIG9uIGV4dHJhKGNvcnJlY3RlZCkKI2RlZmluZSBNU19SRUdfU1QxX1VDRVggICAgICAgICAgICAgICAgICAgICAgICAgMHgwNCAgICAvLyB1bmFibGUgdG8gY29ycmVjdCBleHRyYQojZGVmaW5lIE1TX1JFR19TVDFfRkdFUiAgICAgICAgICAgICAgICAgICAgICAgICAweDAyICAgIC8vIGVycm9yIG9uIG92ZXJ3cml0ZSBmbGFnKGNvcnJlY3RlZCkKI2RlZmluZSBNU19SRUdfU1QxX1VDRkcgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMSAgICAvLyB1bmFibGUgdG8gY29ycmVjdCBvdmVyd3JpdGUgZmxhZwojZGVmaW5lIE1TX1JFR19TVDFfREVGQVVMVCAgICAgICAgICAgICAgICAgICAgICAoTVNfUkVHX1NUMV9NQiAgIHwgTVNfUkVHX1NUMV9GQjEgIHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNfUkVHX1NUMV9EVEVSIHwgTVNfUkVHX1NUMV9VQ0RUIHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNfUkVHX1NUMV9FWEVSIHwgTVNfUkVHX1NUMV9VQ0VYIHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNfUkVHX1NUMV9GR0VSIHwgTVNfUkVHX1NUMV9VQ0ZHKQoKLy8gU3lzdGVtIFBhcmFtZXRlcgojZGVmaW5lIE1TX1JFR19TWVNQQVJfQkFNRCAgICAgICAgICAgICAgICAgICAgICAweDgwICAgICAgICAgICAgICAgIC8vIGJsb2NrIGFkZHJlc3MgbW9kZQojZGVmaW5lIE1TX1JFR19TWVNQQVJfQkFORF9MSU5FQVIgICAgICAgICAgICAgICBNU19SRUdfU1lTUEFSX0JBTUQgIC8vICAgbGluZWFyIG1vZGUKI2RlZmluZSBNU19SRUdfU1lTUEFSX0JBTkRfQ0hJUCAgICAgICAgICAgICAgICAgMHgwMCAgICAgICAgICAgICAgICAvLyAgY2hpcCBtb2RlCiNkZWZpbmUgTVNfUkVHX1NZU1BBUl9BVEVOICAgICAgICAgICAgICAgICAgICAgIDB4NDAgICAgICAgICAgICAgICAgLy8gYXR0cmlidXRlIFJPTSBlbmFibGUKI2RlZmluZSBNU19SRUdfU1lTUEFSX0FURU5fRU5BQkxFICAgICAgICAgICAgICAgTVNfUkVHX1NZU1BBUl9BVEVOICAvLyAgZW5hYmxlCiNkZWZpbmUgTVNfUkVHX1NZU1BBUl9BVEVOX0RJU0FCTEUgICAgICAgICAgICAgIDB4MDAgICAgICAgICAgICAgICAgLy8gIGRpc2FibGUKI2RlZmluZSBNU19SRUdfU1lTUEFSX1JFU0VSVkVEICAgICAgICAgICAgICAgICAgMHgyZgoKLy8gQ29tbWFuZCBQYXJhbWV0ZXIKI2RlZmluZSBNU19SRUdfQ01EUEFSX0NQMiAgICAgICAgICAgICAgICAgICAgICAgMHg4MAojZGVmaW5lIE1TX1JFR19DTURQQVJfQ1AxICAgICAgICAgICAgICAgICAgICAgICAweDQwCiNkZWZpbmUgTVNfUkVHX0NNRFBBUl9DUDAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAKI2RlZmluZSBNU19SRUdfQ01EUEFSX0JMT0NLX0FDQ0VTUyAgICAgICAgICAgICAgMAojZGVmaW5lIE1TX1JFR19DTURQQVJfUEFHRV9BQ0NFU1MgICAgICAgICAgICAgICBNU19SRUdfQ01EUEFSX0NQMAojZGVmaW5lIE1TX1JFR19DTURQQVJfRVhUUkFfREFUQSAgICAgICAgICAgICAgICBNU19SRUdfQ01EUEFSX0NQMQojZGVmaW5lIE1TX1JFR19DTURQQVJfT1ZFUldSSVRFICAgICAgICAgICAgICAgICBNU19SRUdfQ01EUEFSX0NQMgojZGVmaW5lIE1TX1JFR19DTURQQVJfUkVTRVJWRUQgICAgICAgICAgICAgICAgICAweDFmCgovLyBPdmVyd3JpdGUgQXJlYQojZGVmaW5lIE1TX1JFR19PVlJfQktTVCAgICAgICAgICAgICAgICAgICAgICAgICAweDgwICAgICAgICAgICAgLy8gYmxvY2sgc3RhdHVzCiNkZWZpbmUgTVNfUkVHX09WUl9CS1NUX09LICAgICAgICAgICAgICAgICAgICAgIE1TX1JFR19PVlJfQktTVCAgICAgLy8gT0sKI2RlZmluZSBNU19SRUdfT1ZSX0JLU1RfTkcgICAgICAgICAgICAgICAgICAgICAgMHgwMCAgICAgICAgICAgIC8vIE5HCiNkZWZpbmUgTVNfUkVHX09WUl9QR1NUMCAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAgICAgICAgICAgICAvLyBwYWdlIHN0YXR1cwojZGVmaW5lIE1TX1JFR19PVlJfUEdTVDEgICAgICAgICAgICAgICAgICAgICAgICAweDIwCiNkZWZpbmUgTVNfUkVHX09WUl9QR1NUX01BU0sgICAgICAgICAgICAgICAgICAgIChNU19SRUdfT1ZSX1BHU1QwIHwgTVNfUkVHX09WUl9QR1NUMSkKI2RlZmluZSBNU19SRUdfT1ZSX1BHU1RfT0sgICAgICAgICAgICAgICAgICAgICAgKE1TX1JFR19PVlJfUEdTVDAgfCBNU19SRUdfT1ZSX1BHU1QxKSAvLyBPSwojZGVmaW5lIE1TX1JFR19PVlJfUEdTVF9ORyAgICAgICAgICAgICAgICAgICAgICBNU19SRUdfT1ZSX1BHU1QxICAgICAgICAgICAgICAgICAgICAgIC8vIE5HCiNkZWZpbmUgTVNfUkVHX09WUl9QR1NUX0RBVEFfRVJST1IgICAgICAgICAgICAgIDB4MDAgICAgICAgIC8vIGRhdGEgZXJyb3IKI2RlZmluZSBNU19SRUdfT1ZSX1VEU1QgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCAgICAgICAgLy8gdXBkYXRlIHN0YXR1cwojZGVmaW5lIE1TX1JFR19PVlJfVURTVF9VUERBVElORyAgICAgICAgICAgICAgICAweDAwICAgICAgICAvLyB1cGRhdGluZwojZGVmaW5lIE1TX1JFR19PVlJfVURTVF9OT19VUERBVEUgICAgICAgICAgICAgICBNU19SRUdfT1ZSX1VEU1QKI2RlZmluZSBNU19SRUdfT1ZSX1JFU0VSVkVEICAgICAgICAgICAgICAgICAgICAgMHgwOAojZGVmaW5lIE1TX1JFR19PVlJfREVGQVVMVCAgICAgICAgICAgICAgICAgICAgICAoTVNfUkVHX09WUl9CS1NUX09LIHwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU19SRUdfT1ZSX1BHU1RfT0sgfCAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1TX1JFR19PVlJfVURTVF9OT19VUERBVEUgfCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1TX1JFR19PVlJfUkVTRVJWRUQpCi8vIE1hbmFnZW1lbnQgRmxhZwojZGVmaW5lIE1TX1JFR19NTkdfU0NNUzAgICAgICAgICAgICAgICAgICAgICAgICAweDIwICAgIC8vIHNlcmlhbCBjb3B5IG1hbmFnZW1lbnQgc3lzdGVtCiNkZWZpbmUgTVNfUkVHX01OR19TQ01TMSAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAKI2RlZmluZSBNU19SRUdfTU5HX1NDTVNfTUFTSyAgICAgICAgICAgICAgICAgICAgKE1TX1JFR19NTkdfU0NNUzAgfCBNU19SRUdfTU5HX1NDTVMxKQojZGVmaW5lIE1TX1JFR19NTkdfU0NNU19DT1BZX09LICAgICAgICAgICAgICAgICAoTVNfUkVHX01OR19TQ01TMCB8IE1TX1JFR19NTkdfU0NNUzEpCiNkZWZpbmUgTVNfUkVHX01OR19TQ01TX09ORV9DT1BZICAgICAgICAgICAgICAgIE1TX1JFR19NTkdfU0NNUzEKI2RlZmluZSBNU19SRUdfTU5HX1NDTVNfTk9fQ09QWSAgICAgICAgICAgICAgICAgMHgwMAojZGVmaW5lIE1TX1JFR19NTkdfQVRGTEcgICAgICAgICAgICAgICAgICAgICAgICAweDA4ICAgIC8vIGFkZHJlc3MgdHJhbnNmZXIgdGFibGUgZmxhZwojZGVmaW5lIE1TX1JFR19NTkdfQVRGTEdfT1RIRVIgICAgICAgICAgICAgICAgICBNU19SRUdfTU5HX0FURkxHICAgIC8vIG90aGVyCiNkZWZpbmUgTVNfUkVHX01OR19BVEZMR19BVFRCTCAgICAgICAgICAgICAgICAgIDB4MDAgICAgLy8gYWRkcmVzcyB0cmFuc2ZlciB0YWJsZQojZGVmaW5lIE1TX1JFR19NTkdfU1lTRkxHICAgICAgICAgICAgICAgICAgICAgICAweDA0ICAgIC8vIHN5c3RlbSBmbGFnCiNkZWZpbmUgTVNfUkVHX01OR19TWVNGTEdfVVNFUiAgICAgICAgICAgICAgICAgIE1TX1JFR19NTkdfU1lTRkxHICAgLy8gdXNlciBibG9jawojZGVmaW5lIE1TX1JFR19NTkdfU1lTRkxHX0JPT1QgICAgICAgICAgICAgICAgICAweDAwICAgICAgICAgICAgLy8gc3lzdGVtIGJsb2NrCiNkZWZpbmUgTVNfUkVHX01OR19SRVNFUlZFRCAgICAgICAgICAgICAgICAgICAgIDB4YzMKI2RlZmluZSBNU19SRUdfTU5HX0RFRkFVTFQJCShNU19SRUdfTU5HX1NDTVNfQ09QWV9PSyB8CVwKCQkJCQkgTVNfUkVHX01OR19BVEZMR19PVEhFUiB8CVwKCQkJCQkgTVNfUkVHX01OR19TWVNGTEdfVVNFUiB8CVwKCQkJCQkgTVNfUkVHX01OR19SRVNFUlZFRCkKCi8vIEVycm9yIGNvZGVzCiNkZWZpbmUgTVNfU1RBVFVTX1NVQ0NFU1MgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMAojZGVmaW5lIE1TX0VSUk9SX09VVF9PRl9TUEFDRSAgICAgICAgICAgICAgICAgICAweDAxMDMKI2RlZmluZSBNU19TVEFUVVNfV1JJVEVfUFJPVEVDVCAgICAgICAgICAgICAgICAgMHgwMTA2CiNkZWZpbmUgTVNfRVJST1JfUkVBRF9EQVRBICAgICAgICAgICAgICAgICAgICAgIDB4ODAwMgojZGVmaW5lIE1TX0VSUk9SX0ZMQVNIX1JFQUQgICAgICAgICAgICAgICAgICAgICAweDgwMDMKI2RlZmluZSBNU19FUlJPUl9GTEFTSF9XUklURSAgICAgICAgICAgICAgICAgICAgMHg4MDA0CiNkZWZpbmUgTVNfRVJST1JfRkxBU0hfRVJBU0UgICAgICAgICAgICAgICAgICAgIDB4ODAwNQojZGVmaW5lIE1TX0VSUk9SX0ZMQVNIX0NPUFkgICAgICAgICAgICAgICAgICAgICAweDgwMDYKCiNkZWZpbmUgTVNfU1RBVFVTX0VSUk9SICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmZmZQojZGVmaW5lIE1TX0ZJRk9fRVJST1IgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZmZmQKI2RlZmluZSBNU19VTkRFRklORURfRVJST1IgICAgICAgICAgICAgICAgICAgICAgMHhmZmZjCiNkZWZpbmUgTVNfS0VUSU1FT1VUX0VSUk9SICAgICAgICAgICAgICAgICAgICAgIDB4ZmZmYgojZGVmaW5lIE1TX1NUQVRVU19JTlRfRVJST1IgICAgICAgICAgICAgICAgICAgICAweGZmZmEKI2RlZmluZSBNU19OT19NRU1PUllfRVJST1IgICAgICAgICAgICAgICAgICAgICAgMHhmZmY5CiNkZWZpbmUgTVNfTk9DQVJEX0VSUk9SICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmZmOAojZGVmaW5lIE1TX0xCX05PVF9VU0VEICAgICAgICAgICAgICAgICAgICAgICAgICAweGZmZmYKI2RlZmluZSBNU19MQl9FUlJPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZmYwCiNkZWZpbmUgTVNfTEJfQk9PVF9CTE9DSyAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmZmMQojZGVmaW5lIE1TX0xCX0lOSVRJQUxfRVJST1IgICAgICAgICAgICAgICAgICAgICAweGZmZjIKI2RlZmluZSBNU19TVEFUVVNfU1VDQ0VTU19XSVRIX0VDQyAgICAgICAgICAgICAgMHhmZmYzCiNkZWZpbmUgTVNfTEJfQUNRVUlSRURfRVJST1IgICAgICAgICAgICAgICAgICAgIDB4ZmZmNAojZGVmaW5lIE1TX0xCX05PVF9VU0VEX0VSQVNFRCAgICAgICAgICAgICAgICAgICAweGZmZjUKCiNkZWZpbmUgTVNfTGliQ29udjJQaHlzaWNhbChwZHgsIExvZ0Jsb2NrKSAgICAgICgoKExvZ0Jsb2NrKSA+PSAocGR4KS0+TVNfTGliLk51bWJlck9mTG9nQmxvY2spID8gTVNfU1RBVFVTX0VSUk9SIDogKHBkeCktPk1TX0xpYi5Mb2cyUGh5TWFwW0xvZ0Jsb2NrXSkKI2RlZmluZSBNU19MaWJDb252MkxvZ2ljYWwocGR4LCBQaHlCbG9jaykgICAgICAgKCgoUGh5QmxvY2spID49IChwZHgpLT5NU19MaWIuTnVtYmVyT2ZQaHlCbG9jaykgPyBNU19TVEFUVVNfRVJST1IgOiAocGR4KS0+TVNfTGliLlBoeTJMb2dNYXBbUGh5QmxvY2tdKSAvL6xkcGh5LT5sb2cgdGFibGUKCiNkZWZpbmUgTVNfTElCX0NUUkxfUkRPTkxZICAgICAgICAgICAgICAgICAgICAgIDAKI2RlZmluZSBNU19MSUJfQ1RSTF9XUlBST1RFQ1QgICAgICAgICAgICAgICAgICAgMQojZGVmaW5lIE1TX0xpYkN0cmxDaGVjayhwZHgsIEZsYWcpICAgICAgICAgICAgICAoKHBkeCktPk1TX0xpYi5mbGFncyAmICgxIDw8IChGbGFnKSkpCgojZGVmaW5lIE1TX0xpYkN0cmxTZXQocGR4LCBGbGFnKSAgICAgICAgICAgICAgICAocGR4KS0+TVNfTGliLmZsYWdzIHw9ICgxIDw8IChGbGFnKSkKI2RlZmluZSBNU19MaWJDdHJsUmVzZXQocGR4LCBGbGFnKSAgICAgICAgICAgICAgKHBkeCktPk1TX0xpYi5mbGFncyAmPSB+KDEgPDwgKEZsYWcpKQojZGVmaW5lIE1TX0xpYklzV3JpdGFibGUocGR4KSAgICAgICAgICAgICAgICAgICAoKE1TX0xpYkN0cmxDaGVjaygocGR4KSwgTVNfTElCX0NUUkxfUkRPTkxZKSA9PSAwKSAmJiAoTVNfTGliQ3RybENoZWNrKHBkeCwgTVNfTElCX0NUUkxfV1JQUk9URUNUKSA9PSAwKSkKCiNkZWZpbmUgTVNfTUFYX1BBR0VTX1BFUl9CTE9DSyAgICAgICAgICAgICAgICAgIDMyCiNkZWZpbmUgTVNfTElCX0JJVFNfUEVSX0JZVEUgICAgICAgICAgICAgICAgICAgIDgKCiNkZWZpbmUgTVNfTGliUGFnZU1hcElkeChuKSAgICAgICAgICAgICAgICAgICAgICgobikgLyBNU19MSUJfQklUU19QRVJfQllURSkKI2RlZmluZSBNU19MaWJQYWdlTWFwQml0KG4pICAgICAgICAgICAgICAgICAgICAgKDEgPDwgKChuKSAlIE1TX0xJQl9CSVRTX1BFUl9CWVRFKSkKI2RlZmluZSBNU19MaWJDaGVja1BhZ2VNYXBCaXQocGR4LCBuKSAgICAgICAgICAgKChwZHgpLT5NU19MaWIucGFnZW1hcFtNU19MaWJQYWdlTWFwSWR4KG4pXSAmIE1TX0xpYlBhZ2VNYXBCaXQobikpCiNkZWZpbmUgTVNfTGliU2V0UGFnZU1hcEJpdChwZHgsIG4pICAgICAgICAgICAgICgocGR4KS0+TVNfTGliLnBhZ2VtYXBbTVNfTGliUGFnZU1hcElkeChuKV0gfD0gTVNfTGliUGFnZU1hcEJpdChuKSkKI2RlZmluZSBNU19MaWJSZXNldFBhZ2VNYXBCaXQocGR4LCBuKSAgICAgICAgICAgKChwZHgpLT5NU19MaWIucGFnZW1hcFtNU19MaWJQYWdlTWFwSWR4KG4pXSAmPSB+TVNfTGliUGFnZU1hcEJpdChuKSkKI2RlZmluZSBNU19MaWJDbGVhclBhZ2VNYXAocGR4KSAgICAgICAgICAgICAgICAgbWVtc2V0KChwZHgpLT5NU19MaWIucGFnZW1hcCwgMCwgc2l6ZW9mKChwZHgpLT5NU19MaWIucGFnZW1hcCkpCgoKI2RlZmluZSBNZW1TdGlja0xvZ0FkZHIobG9nYWRyMSwgbG9nYWRyMCkgICAgICAgKCgoKFdPUkQpKGxvZ2FkcjEpKSA8PCA4KSB8IChsb2dhZHIwKSkKCiNkZWZpbmUgTVNfQllURVNfUEVSX1BBR0UgICAgICAgICAgICAgICAgICAgICAgIDUxMgoKI2RlZmluZSBNU19NQVhfSU5JVElBTF9FUlJPUl9CTE9DS1MgICAgICAgICAgICAgMTAKI2RlZmluZSBNU19OVU1CRVJfT0ZfUEFHRVNfRk9SX0JPT1RfQkxPQ0sgICAgICAgMwojZGVmaW5lIE1TX05VTUJFUl9PRl9QQUdFU19GT1JfTFBDVEJMICAgICAgICAgICAyCgojZGVmaW5lIE1TX05VTUJFUl9PRl9CT09UX0JMT0NLICAgICAgICAgICAgICAgICAyCiNkZWZpbmUgTVNfTlVNQkVSX09GX1NZU1RFTV9CTE9DSyAgICAgICAgICAgICAgIDQKI2RlZmluZSBNU19MT0dJQ0FMX0JMT0NLU19QRVJfU0VHTUVOVCAgICAgICAgICAgNDk2CiNkZWZpbmUgTVNfTE9HSUNBTF9CTE9DS1NfSU5fMVNUX1NFR01FTlQgICAgICAgIDQ5NAojZGVmaW5lIE1TX1BIWVNJQ0FMX0JMT0NLU19QRVJfU0VHTUVOVCAgICAgICAgICAweDIwMCAgIC8vIDUxMgojZGVmaW5lIE1TX1BIWVNJQ0FMX0JMT0NLU19QRVJfU0VHTUVOVF9NQVNLICAgICAweDFmZgoKI2RlZmluZSBNU19TRUNUT1JfU0laRSAgICAgICAgICAgICAgICAgICAgICAgICAgNTEyCiNkZWZpbmUgTUJSX1NJR05BVFVSRSAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4QUE1NQojZGVmaW5lIFBCUl9TSUdOQVRVUkUgICAgICAgICAgICAgICAgICAgICAgICAgICAweEFBNTUKCiNkZWZpbmUgUEFSVElUSU9OX0ZBVF8xMiAgICAgICAgICAgICAgICAgICAgICAgIDEKI2RlZmluZSBQQVJUSVRJT05fRkFUXzE2ICAgICAgICAgICAgICAgICAgICAgICAgMgoKI2RlZmluZSBNU19CT09UX0JMT0NLX0lEICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxCiNkZWZpbmUgTVNfQk9PVF9CTE9DS19GT1JNQVRfVkVSU0lPTiAgICAgICAgICAgIDB4MDEwMAojZGVmaW5lIE1TX0JPT1RfQkxPQ0tfREFUQV9FTlRSSUVTICAgICAgICAgICAgICAyCgojZGVmaW5lIE1TX1NZU0lORl9NU0NMQVNTX1RZUEVfMSAgICAgICAgICAgICAgICAxCiNkZWZpbmUgTVNfU1lTSU5GX0NBUkRUWVBFX1JET05MWSAgICAgICAgICAgICAgIDEKI2RlZmluZSBNU19TWVNJTkZfQ0FSRFRZUEVfUkRXUiAgICAgICAgICAgICAgICAgMgojZGVmaW5lIE1TX1NZU0lORl9DQVJEVFlQRV9IWUJSSUQgICAgICAgICAgICAgICAzCiNkZWZpbmUgTVNfU1lTSU5GX1NFQ1VSSVRZICAgICAgICAgICAgICAgICAgICAgIDB4MDEKI2RlZmluZSBNU19TWVNJTkZfU0VDVVJJVFlfTk9fU1VQUE9SVCAgICAgICAgICAgTVNfU1lTSU5GX1NFQ1VSSVRZCiNkZWZpbmUgTVNfU1lTSU5GX1NFQ1VSSVRZX1NVUFBPUlQgICAgICAgICAgICAgIDAKI2RlZmluZSBNU19TWVNJTkZfRk9STUFUX01BVCAgICAgICAgICAgICAgICAgICAgMCAgIC8vID8KI2RlZmluZSBNU19TWVNJTkZfRk9STUFUX0ZBVCAgICAgICAgICAgICAgICAgICAgMQojZGVmaW5lIE1TX1NZU0lORl9VU0FHRV9HRU5FUkFMICAgICAgICAgICAgICAgICAwCiNkZWZpbmUgTVNfU1lTSU5GX1BBR0VfU0laRSAgICAgICAgICAgICAgICAgICAgIE1TX0JZVEVTX1BFUl9QQUdFIC8vIGZpeGVkCiNkZWZpbmUgTVNfU1lTSU5GX1JFU0VSVkVEMSAgICAgICAgICAgICAgICAgICAgIDEKI2RlZmluZSBNU19TWVNJTkZfUkVTRVJWRUQyICAgICAgICAgICAgICAgICAgICAgMQoKI2RlZmluZSBNU19TWVNFTlRfVFlQRV9JTlZBTElEX0JMT0NLICAgICAgICAgICAgMHgwMQojZGVmaW5lIE1TX1NZU0VOVF9UWVBFX0NJU19JREkgICAgICAgICAgICAgICAgICAweDBhICAgIC8vIENJUy9JREkKCiNkZWZpbmUgU0laRV9PRl9LSVJPICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMjQKCi8vIEJPT1QgQkxPQ0sKI2RlZmluZSBNU19OVU1CRVJfT0ZfU1lTVEVNX0VOVFJZICAgICAgICAgICAgICAgNAoKLy8tLS0tLSBNZW1TdGlja1JlZ2lzdGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBTdGF0dXMgcmVnaXN0ZXJzICgxNiBieXRlcykKdHlwZWRlZiBzdHJ1Y3QgewoJQllURSBSZXNlcnZlZDA7CQkvLyAwMAoJQllURSBJTlRSZWdpc3RlcjsJLy8gMDEKCUJZVEUgU3RhdHVzUmVnaXN0ZXIwOwkvLyAwMgoJQllURSBTdGF0dXNSZWdpc3RlcjE7CS8vIDAzCglCWVRFIFJlc2VydmVkMVsxMl07CS8vIDA0LTBGCn0gTWVtU3RpY2tTdGF0dXNSZWdpc3RlcnM7CgovLyBQYXJhbWV0ZXIgcmVnaXN0ZXJzICg2IGJ5dGVzKQp0eXBlZGVmIHN0cnVjdCB7CglCWVRFIFN5c3RlbVBhcmFtZXRlcjsJLy8gMTAKCUJZVEUgQmxvY2tBZGRyZXNzMjsJLy8gMTEKCUJZVEUgQmxvY2tBZGRyZXNzMTsJLy8gMTIKCUJZVEUgQmxvY2tBZGRyZXNzMDsJLy8gMTMKCUJZVEUgQ01EUGFyYW1ldGVyOwkvLyAxNAoJQllURSBQYWdlQWRkcmVzczsJLy8gMTUKfSBNZW1TdGlja1BhcmFtZXRlclJlZ2lzdGVyczsKCi8vIEV4dHJhIHJlZ2lzdGVycyAoOSBieXRlcykKdHlwZWRlZiBzdHJ1Y3QgewoJQllURSBPdmVyd3JpdGVGbGFnOwkvLyAxNgoJQllURSBNYW5hZ2VtZW50RmxhZzsJLy8gMTcKCUJZVEUgTG9naWNhbEFkZHJlc3MxOwkvLyAxOAoJQllURSBMb2dpY2FsQWRkcmVzczA7CS8vIDE5CglCWVRFIFJlc2VydmVkQXJlYVs1XTsJLy8gMUEtMUUKfSBNZW1TdGlja0V4dHJhRGF0YVJlZ2lzdGVyczsKCi8vIEFsbCByZWdpc3RlcnMgaW4gTWVtb3J5IFN0aWNrICgzMiBieXRlcywgaW5jbHVkZXMgMSBieXRlIHBhZGRpbmcpCnR5cGVkZWYgc3RydWN0IHsKCU1lbVN0aWNrU3RhdHVzUmVnaXN0ZXJzIHN0YXR1czsKCU1lbVN0aWNrUGFyYW1ldGVyUmVnaXN0ZXJzIHBhcmFtOwoJTWVtU3RpY2tFeHRyYURhdGFSZWdpc3RlcnMgZXh0cmE7CglCWVRFIHBhZGRpbmc7Cn0gTWVtU3RpY2tSZWdpc3RlcnMsICpQTWVtU3RpY2tSZWdpc3RlcnM7CgovLy0tLS0tIE1lbVN0aWNrQm9vdEJsb2NrUGFnZTAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnR5cGVkZWYgc3RydWN0IHsKCVdPUkQgd0Jsb2NrSUQ7CglXT1JEIHdGb3JtYXRWZXJzaW9uOwoJQllURSBiUmVzZXJ2ZWQxWzE4NF07CglCWVRFIGJOdW1iZXJPZkRhdGFFbnRyeTsKCUJZVEUgYlJlc2VydmVkMlsxNzldOwp9IE1lbVN0aWNrQm9vdEJsb2NrSGVhZGVyOwoKdHlwZWRlZiBzdHJ1Y3QgewoJRFdPUkQgZHdTdGFydDsKCURXT1JEIGR3U2l6ZTsKCUJZVEUgYlR5cGU7CglCWVRFIGJSZXNlcnZlZFszXTsKfSBNZW1TdGlja0Jvb3RCbG9ja1N5c0VudFJlYzsKCnR5cGVkZWYgc3RydWN0IHsKCU1lbVN0aWNrQm9vdEJsb2NrU3lzRW50UmVjIGVudHJ5W01TX05VTUJFUl9PRl9TWVNURU1fRU5UUlldOwp9IE1lbVN0aWNrQm9vdEJsb2NrU3lzRW50OwoKdHlwZWRlZiBzdHJ1Y3QgewoJQllURSBiTXNDbGFzczsJCS8vIG11c3QgYmUgMQoJQllURSBiQ2FyZFR5cGU7CQkvLyBzZWUgYmVsb3cKCVdPUkQgd0Jsb2NrU2l6ZTsJLy8gbiBLQgoJV09SRCB3QmxvY2tOdW1iZXI7CS8vIG51bWJlciBvZiBwaHlzaWNhbCBibG9jawoJV09SRCB3VG90YWxCbG9ja051bWJlcjsJLy8gbnVtYmVyIG9mIGxvZ2ljYWwgYmxvY2sKCVdPUkQgd1BhZ2VTaXplOwkJLy8gbXVzdCBiZSAweDIwMAoJQllURSBiRXh0cmFTaXplOwkvLyAweDEwCglCWVRFIGJTZWN1cml0eVN1cHBvcnQ7CglCWVRFIGJBc3NlbWJseURhdGVbOF07CglCWVRFIGJGYWN0b3J5QXJlYVs0XTsKCUJZVEUgYkFzc2VtYmx5TWFrZXJDb2RlOwoJQllURSBiQXNzZW1ibHlNYWNoaW5lQ29kZVszXTsKCVdPUkQgd01lbW9yeU1ha2VyQ29kZTsKCVdPUkQgd01lbW9yeURldmljZUNvZGU7CglXT1JEIHdNZW1vcnlTaXplOwoJQllURSBiUmVzZXJ2ZWQxOwoJQllURSBiUmVzZXJ2ZWQyOwoJQllURSBiVkNDOwoJQllURSBiVlBQOwoJV09SRCB3Q29udHJvbGxlckNoaXBOdW1iZXI7CglXT1JEIHdDb250cm9sbGVyRnVuY3Rpb247CS8vIE5ldyBNUwoJQllURSBiUmVzZXJ2ZWQzWzldOwkJLy8gTmV3IE1TCglCWVRFIGJQYXJhbGxlbFN1cHBvcnQ7CQkvLyBOZXcgTVMKCVdPUkQgd0Zvcm1hdFZhbHVlOwkJLy8gTmV3IE1TCglCWVRFIGJGb3JtYXRUeXBlOwoJQllURSBiVXNhZ2U7CglCWVRFIGJEZXZpY2VUeXBlOwoJQllURSBiUmVzZXJ2ZWQ0WzIyXTsKCUJZVEUgYkZVVmFsdWUzOwoJQllURSBiRlVWYWx1ZTQ7CglCWVRFIGJSZXNlcnZlZDVbMTVdOwp9IE1lbVN0aWNrQm9vdEJsb2NrU3lzSW5mOwoKdHlwZWRlZiBzdHJ1Y3QgewoJTWVtU3RpY2tCb290QmxvY2tIZWFkZXIgaGVhZGVyOwoJTWVtU3RpY2tCb290QmxvY2tTeXNFbnQgc3lzZW50OwoJTWVtU3RpY2tCb290QmxvY2tTeXNJbmYgc3lzaW5mOwp9IE1lbVN0aWNrQm9vdEJsb2NrUGFnZTA7CgovLy0tLS0tIE1lbVN0aWNrQm9vdEJsb2NrQ0lTX0lESSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnR5cGVkZWYgc3RydWN0IHsKCUJZVEUgYkNpc3RwbERFVklDRVs2XTsgICAgICAgICAgICAvLyAwCglCWVRFIGJDaXN0cGxERVZJQ0UwQ1s2XTsgICAgICAgICAgLy8gNgoJQllURSBiQ2lzdHBsSkVERUNDWzRdOyAgICAgICAgICAgIC8vIDEyCglCWVRFIGJDaXN0cGxNQU5GSURbNl07ICAgICAgICAgICAgLy8gMTYKCUJZVEUgYkNpc3RwbFZFUjFbMzJdOyAgICAgICAgICAgICAvLyAyMgoJQllURSBiQ2lzdHBsRlVOQ0lEWzRdOyAgICAgICAgICAgIC8vIDU0CglCWVRFIGJDaXN0cGxGVU5DRTBbNF07ICAgICAgICAgICAgLy8gNTgKCUJZVEUgYkNpc3RwbEZVTkNFMVs1XTsgICAgICAgICAgICAvLyA2MgoJQllURSBiQ2lzdHBsQ09ORls3XTsgICAgICAgICAgICAgIC8vIDY3CglCWVRFIGJDaXN0cGxDRlRCTEVOVDBbMTBdOyAgICAgICAgLy8gNzQKCUJZVEUgYkNpc3RwbENGVEJMRU5UMVs4XTsgICAgICAgICAvLyA4NAoJQllURSBiQ2lzdHBsQ0ZUQkxFTlQyWzEyXTsgICAgICAgIC8vIDkyCglCWVRFIGJDaXN0cGxDRlRCTEVOVDNbOF07ICAgICAgICAgLy8gMTA0CglCWVRFIGJDaXN0cGxDRlRCTEVOVDRbMTddOyAgICAgICAgLy8gMTEyCglCWVRFIGJDaXN0cGxDRlRCTEVOVDVbOF07ICAgICAgICAgLy8gMTI5CglCWVRFIGJDaXN0cGxDRlRCTEVOVDZbMTddOyAgICAgICAgLy8gMTM3CglCWVRFIGJDaXN0cGxDRlRCTEVOVDdbOF07ICAgICAgICAgLy8gMTU0CglCWVRFIGJDaXN0cGxOT0xJTktbM107ICAgICAgICAgICAgLy8gMTYyCn0gTWVtU3RpY2tCb290QmxvY2tDSVM7Cgp0eXBlZGVmIHN0cnVjdCB7CiNkZWZpbmUgTVNfSURJX0dFTkVSQUxfQ09ORiAgICAgICAgIDB4ODQ4QQoJV09SRCB3SURJZ2VuZXJhbENvbmZpZ3VyYXRpb247ICAgICAvLyAwCglXT1JEIHdJREludW1iZXJPZkN5bGluZGVyOyAgICAgICAgIC8vIDEKCVdPUkQgd0lESXJlc2VydmVkMDsgICAgICAgICAgICAgICAgLy8gMgoJV09SRCB3SURJbnVtYmVyT2ZIZWFkOyAgICAgICAgICAgICAvLyAzCglXT1JEIHdJRElieXRlc1BlclRyYWNrOyAgICAgICAgICAgIC8vIDQKCVdPUkQgd0lESWJ5dGVzUGVyU2VjdG9yOyAgICAgICAgICAgLy8gNQoJV09SRCB3SURJc2VjdG9yc1BlclRyYWNrOyAgICAgICAgICAvLyA2CglXT1JEIHdJREl0b3RhbFNlY3RvcnNbMl07ICAgICAgICAgIC8vIDctOCAgaGlnaCxsb3cKCVdPUkQgd0lESXJlc2VydmVkMVsxMV07ICAgICAgICAgICAgLy8gOS0xOQoJV09SRCB3SURJYnVmZmVyVHlwZTsgICAgICAgICAgICAgICAvLyAyMAoJV09SRCB3SURJYnVmZmVyU2l6ZTsgICAgICAgICAgICAgICAvLyAyMQoJV09SRCB3SURJbG9uZ0NtZEVDQzsgICAgICAgICAgICAgICAvLyAyMgoJV09SRCB3SURJZmlybVZlcnNpb25bNF07ICAgICAgICAgICAvLyAyMy0yNgoJV09SRCB3SURJbW9kZWxOYW1lWzIwXTsgICAgICAgICAgICAvLyAyNy00NgoJV09SRCB3SURJcmVzZXJ2ZWQyOyAgICAgICAgICAgICAgICAvLyA0NwoJV09SRCB3SURJbG9uZ1dvcmRTdXBwb3J0ZWQ7ICAgICAgICAvLyA0OAoJV09SRCB3SURJZG1hU3VwcG9ydGVkOyAgICAgICAgICAgICAvLyA0OQoJV09SRCB3SURJcmVzZXJ2ZWQzOyAgICAgICAgICAgICAgICAvLyA1MAoJV09SRCB3SURJcGlvVGltaW5nOyAgICAgICAgICAgICAgICAvLyA1MQoJV09SRCB3SURJZG1hVGltaW5nOyAgICAgICAgICAgICAgICAvLyA1MgoJV09SRCB3SURJdHJhbnNmZXJQYXJhbWV0ZXI7ICAgICAgICAvLyA1MwoJV09SRCB3SURJZm9ybWF0dGVkQ3lsaW5kZXI7ICAgICAgICAvLyA1NAoJV09SRCB3SURJZm9ybWF0dGVkSGVhZDsgICAgICAgICAgICAvLyA1NQoJV09SRCB3SURJZm9ybWF0dGVkU2VjdG9yc1BlclRyYWNrOyAvLyA1NgoJV09SRCB3SURJZm9ybWF0dGVkVG90YWxTZWN0b3JzWzJdOyAvLyA1Ny01OAoJV09SRCB3SURJbXVsdGlTZWN0b3I7ICAgICAgICAgICAgICAvLyA1OQoJV09SRCB3SURJbGJhU2VjdG9yc1syXTsgICAgICAgICAgICAvLyA2MC02MQoJV09SRCB3SURJc2luZ2xlV29yZERNQTsgICAgICAgICAgICAvLyA2MgoJV09SRCB3SURJbXVsdGlXb3JkRE1BOyAgICAgICAgICAgICAvLyA2MwoJV09SRCB3SURJcmVzZXJ2ZWQ0WzE5Ml07ICAgICAgICAgICAvLyA2NC0yNTUKfSBNZW1TdGlja0Jvb3RCbG9ja0lESTsKCnR5cGVkZWYgc3RydWN0IHsKCXVuaW9uIHsKCQlNZW1TdGlja0Jvb3RCbG9ja0NJUyBjaXM7CgkJQllURSBkbXlbMjU2XTsKCX0gY2lzOwoKCXVuaW9uIHsKCU1lbVN0aWNrQm9vdEJsb2NrSURJIGlkaTsKCUJZVEUgZG15WzI1Nl07Cgl9IGlkaTsKCn0gTWVtU3RpY2tCb290QmxvY2tDSVNfSURJOwoKLy8tLS0tLSBNU19MaWJDb250cm9sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp0eXBlZGVmIHN0cnVjdCB7CglCWVRFIHJlc2VydmVkOwoJQllURSBpbnRyOwoJQllURSBzdGF0dXMwOwoJQllURSBzdGF0dXMxOwoJQllURSBvdnJmbGc7CglCWVRFIG1uZ2ZsZzsKCVdPUkQgbG9nYWRyOwp9IE1TX0xpYlR5cGVFeHRkYXQ7Cgp0eXBlZGVmIHN0cnVjdCB7CglEV09SRCBmbGFnczsKCURXT1JEIEJ5dGVzUGVyU2VjdG9yOwoJRFdPUkQgTnVtYmVyT2ZDeWxpbmRlcjsKCURXT1JEIFNlY3RvcnNQZXJDeWxpbmRlcjsKCVdPUkQgY2FyZFR5cGU7CQkJLy8gUi9XLCBSTywgSHlicmlkCglXT1JEIGJsb2NrU2l6ZTsKCVdPUkQgUGFnZXNQZXJCbG9jazsKCVdPUkQgTnVtYmVyT2ZQaHlCbG9jazsKCVdPUkQgTnVtYmVyT2ZMb2dCbG9jazsKCVdPUkQgTnVtYmVyT2ZTZWdtZW50OwoJV09SRCAqUGh5MkxvZ01hcDsJCS8vIHBoeTJsb2cgdGFibGUKCVdPUkQgKkxvZzJQaHlNYXA7CQkvLyBsb2cycGh5IHRhYmxlCglXT1JEIHdydGJsazsKCUJZVEUgcGFnZW1hcFsoTVNfTUFYX1BBR0VTX1BFUl9CTE9DSyArIChNU19MSUJfQklUU19QRVJfQllURS0xKSkgLwoJCSAgICAgTVNfTElCX0JJVFNfUEVSX0JZVEVdOwoJQllURSAqYmxrcGFnOwoJTVNfTGliVHlwZUV4dGRhdCAqYmxrZXh0OwoJQllURSBjb3B5YnVmWzUxMl07Cn0gTVNfTGliQ29udHJvbDsKCiNlbmRpZgo=