From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v4,1/7] typec: tcpm: Add PD Rev 3.0 definitions to PD header From: Heikki Krogerus Message-Id: <20180130122134.GA14922@kuha.fi.intel.com> Date: Tue, 30 Jan 2018 14:21:34 +0200 To: Adam Thomson Cc: Guenter Roeck , Greg Kroah-Hartman , Sebastian Reichel , Hans de Goede , Yueyao Zhu , Rui Miguel Silva , linux-usb@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, support.opensource@diasemi.com List-ID: T24gVHVlLCBKYW4gMDIsIDIwMTggYXQgMDM6NTA6NDlQTSArMDAwMCwgQWRhbSBUaG9tc29uIHdy b3RlOgo+IFRoaXMgY29tbWl0IGFkZHMgZGVmaW5pdGlvbnMgZm9yIFBEIFJldiAzLjAgbWVzc2Fn ZXMsIGluY2x1ZGluZwo+IEFQRE8gUFBTIGFuZCBleHRlbmRlZCBtZXNzYWdlIHN1cHBvcnQgZm9y IFRDUE0uCj4gCj4gU2lnbmVkLW9mZi1ieTogQWRhbSBUaG9tc29uIDxBZGFtLlRob21zb24uT3Bl bnNvdXJjZUBkaWFzZW1pLmNvbT4KCkp1c3Qgb25lIG5pdHBpY2suIEkgbm90aWNlZCB0aGF0IHlv dSBhcmUgZXhjZWVkaW5nIHRoZSA4MCBjaGFyYWN0ZXIKbGltaXQgcGVyIGxpbmUgaW4gc2V2ZXJh bCBwbGFjZXMgaW4gdGhpcyBzZXJpZXMsIGFuZCBJIG1hbnkgY2FzZXMgaXQKZG9lcyBub3QgbG9v ayBsaWtlIHNwbGl0dGluZyB0aGUgbGluZSB3b3VsZCBtYWtlIHRoZSBjb2RlIGFueSBsZXNzCnJl YWRhYmxlLgoKQnV0IEkgZG9uJ3QgdGhpbmsgdGhhdCBpcyBjcml0aWNhbCwgc28gaWYgdGhlcmUg YXJlIG5vIG90aGVyIGNvbW1lbnRzOgoKCkFja2VkLWJ5OiBIZWlra2kgS3JvZ2VydXMgPGhlaWtr aS5rcm9nZXJ1c0BsaW51eC5pbnRlbC5jb20+CgoKPiAtLS0KPiAgaW5jbHVkZS9saW51eC91c2Iv cGQuaCB8IDE4NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCAxNzQgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0p Cj4gCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdXNiL3BkLmggYi9pbmNsdWRlL2xpbnV4 L3VzYi9wZC5oCj4gaW5kZXggYjNkNDFkNy4uZmYzNTliZGYgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVk ZS9saW51eC91c2IvcGQuaAo+ICsrKyBiL2luY2x1ZGUvbGludXgvdXNiL3BkLmgKPiBAQCAtMzUs NiArMzUsMTMgQEAgZW51bSBwZF9jdHJsX21zZ190eXBlIHsKPiAgCVBEX0NUUkxfV0FJVCA9IDEy LAo+ICAJUERfQ1RSTF9TT0ZUX1JFU0VUID0gMTMsCj4gIAkvKiAxNC0xNSBSZXNlcnZlZCAqLwo+ ICsJUERfQ1RSTF9OT1RfU1VQUCA9IDE2LAo+ICsJUERfQ1RSTF9HRVRfU09VUkNFX0NBUF9FWFQg PSAxNywKPiArCVBEX0NUUkxfR0VUX1NUQVRVUyA9IDE4LAo+ICsJUERfQ1RSTF9GUl9TV0FQID0g MTksCj4gKwlQRF9DVFJMX0dFVF9QUFNfU1RBVFVTID0gMjAsCj4gKwlQRF9DVFJMX0dFVF9DT1VO VFJZX0NPREVTID0gMjEsCj4gKwkvKiAyMi0zMSBSZXNlcnZlZCAqLwo+ICB9Owo+ICAKPiAgZW51 bSBwZF9kYXRhX21zZ190eXBlIHsKPiBAQCAtNDMsMTMgKzUwLDM5IEBAIGVudW0gcGRfZGF0YV9t c2dfdHlwZSB7Cj4gIAlQRF9EQVRBX1JFUVVFU1QgPSAyLAo+ICAJUERfREFUQV9CSVNUID0gMywK PiAgCVBEX0RBVEFfU0lOS19DQVAgPSA0LAo+IC0JLyogNS0xNCBSZXNlcnZlZCAqLwo+ICsJUERf REFUQV9CQVRUX1NUQVRVUyA9IDUsCj4gKwlQRF9EQVRBX0FMRVJUID0gNiwKPiArCVBEX0RBVEFf R0VUX0NPVU5UUllfSU5GTyA9IDcsCj4gKwkvKiA4LTE0IFJlc2VydmVkICovCj4gIAlQRF9EQVRB X1ZFTkRPUl9ERUYgPSAxNSwKPiArCS8qIDE2LTMxIFJlc2VydmVkICovCj4gK307Cj4gKwo+ICtl bnVtIHBkX2V4dF9tc2dfdHlwZSB7Cj4gKwkvKiAwIFJlc2VydmVkICovCj4gKwlQRF9FWFRfU09V UkNFX0NBUF9FWFQgPSAxLAo+ICsJUERfRVhUX1NUQVRVUyA9IDIsCj4gKwlQRF9FWFRfR0VUX0JB VFRfQ0FQID0gMywKPiArCVBEX0VYVF9HRVRfQkFUVF9TVEFUVVMgPSA0LAo+ICsJUERfRVhUX0JB VFRfQ0FQID0gNSwKPiArCVBEX0VYVF9HRVRfTUFOVUZBQ1RVUkVSX0lORk8gPSA2LAo+ICsJUERf RVhUX01BTlVGQUNUVVJFUl9JTkZPID0gNywKPiArCVBEX0VYVF9TRUNVUklUWV9SRVFVRVNUID0g OCwKPiArCVBEX0VYVF9TRUNVUklUWV9SRVNQT05TRSA9IDksCj4gKwlQRF9FWFRfRldfVVBEQVRF X1JFUVVFU1QgPSAxMCwKPiArCVBEX0VYVF9GV19VUERBVEVfUkVTUE9OU0UgPSAxMSwKPiArCVBE X0VYVF9QUFNfU1RBVFVTID0gMTIsCj4gKwlQRF9FWFRfQ09VTlRSWV9JTkZPID0gMTMsCj4gKwlQ RF9FWFRfQ09VTlRSWV9DT0RFUyA9IDE0LAo+ICsJLyogMTUtMzEgUmVzZXJ2ZWQgKi8KPiAgfTsK PiAgCj4gICNkZWZpbmUgUERfUkVWMTAJMHgwCj4gICNkZWZpbmUgUERfUkVWMjAJMHgxCj4gKyNk ZWZpbmUgUERfUkVWMzAJMHgyCj4gKyNkZWZpbmUgUERfTUFYX1JFVglQRF9SRVYzMAo+ICAKPiAr I2RlZmluZSBQRF9IRUFERVJfRVhUX0hEUglCSVQoMTUpCj4gICNkZWZpbmUgUERfSEVBREVSX0NO VF9TSElGVAkxMgo+ICAjZGVmaW5lIFBEX0hFQURFUl9DTlRfTUFTSwkweDcKPiAgI2RlZmluZSBQ RF9IRUFERVJfSURfU0hJRlQJOQo+IEBAIC01OSwxOCArOTIsMTkgQEAgZW51bSBwZF9kYXRhX21z Z190eXBlIHsKPiAgI2RlZmluZSBQRF9IRUFERVJfUkVWX01BU0sJMHgzCj4gICNkZWZpbmUgUERf SEVBREVSX0RBVEFfUk9MRQlCSVQoNSkKPiAgI2RlZmluZSBQRF9IRUFERVJfVFlQRV9TSElGVAkw Cj4gLSNkZWZpbmUgUERfSEVBREVSX1RZUEVfTUFTSwkweGYKPiArI2RlZmluZSBQRF9IRUFERVJf VFlQRV9NQVNLCTB4MWYKPiAgCj4gLSNkZWZpbmUgUERfSEVBREVSKHR5cGUsIHB3ciwgZGF0YSwg aWQsIGNudCkJCQkJXAo+ICsjZGVmaW5lIFBEX0hFQURFUih0eXBlLCBwd3IsIGRhdGEsIHJldiwg aWQsIGNudCwgZXh0X2hkcikJCVwKPiAgCSgoKCh0eXBlKSAmIFBEX0hFQURFUl9UWVBFX01BU0sp IDw8IFBEX0hFQURFUl9UWVBFX1NISUZUKSB8CVwKPiAgCSAoKHB3cikgPT0gVFlQRUNfU09VUkNF ID8gUERfSEVBREVSX1BXUl9ST0xFIDogMCkgfAkJXAo+ICAJICgoZGF0YSkgPT0gVFlQRUNfSE9T VCA/IFBEX0hFQURFUl9EQVRBX1JPTEUgOiAwKSB8CQlcCj4gLQkgKFBEX1JFVjIwIDw8IFBEX0hF QURFUl9SRVZfU0hJRlQpIHwJCQkJXAo+ICsJIChyZXYgPDwgUERfSEVBREVSX1JFVl9TSElGVCkg fAkJCQkJXAo+ICAJICgoKGlkKSAmIFBEX0hFQURFUl9JRF9NQVNLKSA8PCBQRF9IRUFERVJfSURf U0hJRlQpIHwJCVwKPiAtCSAoKChjbnQpICYgUERfSEVBREVSX0NOVF9NQVNLKSA8PCBQRF9IRUFE RVJfQ05UX1NISUZUKSkKPiArCSAoKChjbnQpICYgUERfSEVBREVSX0NOVF9NQVNLKSA8PCBQRF9I RUFERVJfQ05UX1NISUZUKSB8CVwKPiArCSAoKGV4dF9oZHIpID8gUERfSEVBREVSX0VYVF9IRFIg OiAwKSkKPiAgCj4gICNkZWZpbmUgUERfSEVBREVSX0xFKHR5cGUsIHB3ciwgZGF0YSwgaWQsIGNu dCkgXAo+IC0JY3B1X3RvX2xlMTYoUERfSEVBREVSKCh0eXBlKSwgKHB3ciksIChkYXRhKSwgKGlk KSwgKGNudCkpKQo+ICsJY3B1X3RvX2xlMTYoUERfSEVBREVSKCh0eXBlKSwgKHB3ciksIChkYXRh KSwgUERfUkVWMjAsIChpZCksIChjbnQpLCAoMCkpKQo+ICAKPiAgc3RhdGljIGlubGluZSB1bnNp Z25lZCBpbnQgcGRfaGVhZGVyX2NudCh1MTYgaGVhZGVyKQo+ICB7Cj4gQEAgLTEwMiwxNiArMTM2 LDc1IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHBkX2hlYWRlcl9tc2dpZF9sZShfX2xl MTYgaGVhZGVyKQo+ICAJcmV0dXJuIHBkX2hlYWRlcl9tc2dpZChsZTE2X3RvX2NwdShoZWFkZXIp KTsKPiAgfQo+ICAKPiArc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgcGRfaGVhZGVyX3Jldih1 MTYgaGVhZGVyKQo+ICt7Cj4gKwlyZXR1cm4gKGhlYWRlciA+PiBQRF9IRUFERVJfUkVWX1NISUZU KSAmIFBEX0hFQURFUl9SRVZfTUFTSzsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB1bnNpZ25l ZCBpbnQgcGRfaGVhZGVyX3Jldl9sZShfX2xlMTYgaGVhZGVyKQo+ICt7Cj4gKwlyZXR1cm4gcGRf aGVhZGVyX3JldihsZTE2X3RvX2NwdShoZWFkZXIpKTsKPiArfQo+ICsKPiArI2RlZmluZSBQRF9F WFRfSERSX0NIVU5LRUQJCUJJVCgxNSkKPiArI2RlZmluZSBQRF9FWFRfSERSX0NIVU5LX05VTV9T SElGVAkxMQo+ICsjZGVmaW5lIFBEX0VYVF9IRFJfQ0hVTktfTlVNX01BU0sJMHhmCj4gKyNkZWZp bmUgUERfRVhUX0hEUl9SRVFfQ0hVTksJCUJJVCgxMCkKPiArI2RlZmluZSBQRF9FWFRfSERSX0RB VEFfU0laRV9TSElGVAkwCj4gKyNkZWZpbmUgUERfRVhUX0hEUl9EQVRBX1NJWkVfTUFTSwkweDFm Zgo+ICsKPiArI2RlZmluZSBQRF9FWFRfSERSKGRhdGFfc2l6ZSwgcmVxX2NodW5rLCBjaHVua19u dW0sIGNodW5rZWQpCQkJCVwKPiArCSgoKChkYXRhX3NpemUpICYgUERfRVhUX0hEUl9EQVRBX1NJ WkVfTUFTSykgPDwgUERfRVhUX0hEUl9EQVRBX1NJWkVfU0hJRlQpIHwJXAo+ICsJICgocmVxX2No dW5rKSA/IFBEX0VYVF9IRFJfUkVRX0NIVU5LIDogMCkgfAkJCQkJXAo+ICsJICgoKGNodW5rX251 bSkgJiBQRF9FWFRfSERSX0NIVU5LX05VTV9NQVNLKSA8PCBQRF9FWFRfSERSX0NIVU5LX05VTV9T SElGVCkgfAlcCj4gKwkgKChjaHVua2VkKSA/IFBEX0VYVF9IRFJfQ0hVTktFRCA6IDApKQo+ICsK PiArI2RlZmluZSBQRF9FWFRfSERSX0xFKGRhdGFfc2l6ZSwgcmVxX2NodW5rLCBjaHVua19udW0s IGNodW5rZWQpIFwKPiArCWNwdV90b19sZTE2KFBEX0VYVF9IRFIoKGRhdGFfc2l6ZSksIChyZXFf Y2h1bmspLCAoY2h1bmtfbnVtKSwgKGNodW5rZWQpKSkKPiArCj4gK3N0YXRpYyBpbmxpbmUgdW5z aWduZWQgaW50IHBkX2V4dF9oZWFkZXJfY2h1bmtfbnVtKHUxNiBleHRfaGVhZGVyKQo+ICt7Cj4g KwlyZXR1cm4gKGV4dF9oZWFkZXIgPj4gUERfRVhUX0hEUl9DSFVOS19OVU1fU0hJRlQpICYKPiAr CQlQRF9FWFRfSERSX0NIVU5LX05VTV9NQVNLOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHVu c2lnbmVkIGludCBwZF9leHRfaGVhZGVyX2RhdGFfc2l6ZSh1MTYgZXh0X2hlYWRlcikKPiArewo+ ICsJcmV0dXJuIChleHRfaGVhZGVyID4+IFBEX0VYVF9IRFJfREFUQV9TSVpFX1NISUZUKSAmCj4g KwkJUERfRVhUX0hEUl9EQVRBX1NJWkVfTUFTSzsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB1 bnNpZ25lZCBpbnQgcGRfZXh0X2hlYWRlcl9kYXRhX3NpemVfbGUoX19sZTE2IGV4dF9oZWFkZXIp Cj4gK3sKPiArCXJldHVybiBwZF9leHRfaGVhZGVyX2RhdGFfc2l6ZShsZTE2X3RvX2NwdShleHRf aGVhZGVyKSk7Cj4gK30KPiArCj4gICNkZWZpbmUgUERfTUFYX1BBWUxPQUQJCTcKPiArI2RlZmlu ZSBQRF9FWFRfTUFYX0NIVU5LX0RBVEEJMjYKPiAgCj4gIC8qKgo+IC0gKiBzdHJ1Y3QgcGRfbWVz c2FnZSAtIFBEIG1lc3NhZ2UgYXMgc2VlbiBvbiB3aXJlCj4gLSAqIEBoZWFkZXI6CVBEIG1lc3Nh Z2UgaGVhZGVyCj4gLSAqIEBwYXlsb2FkOglQRCBtZXNzYWdlIHBheWxvYWQKPiAtICovCj4gKyAg KiBzdHJ1Y3QgcGRfY2h1bmtlZF9leHRfbWVzc2FnZV9kYXRhIC0gUEQgY2h1bmtlZCBleHRlbmRl ZCBtZXNzYWdlIGRhdGEgYXMKPiArICAqCQkJCQkgc2VlbiBvbiB3aXJlCj4gKyAgKiBAaGVhZGVy OiAgICBQRCBleHRlbmRlZCBtZXNzYWdlIGhlYWRlcgo+ICsgICogQGRhdGE6ICAgICAgUEQgZXh0 ZW5kZWQgbWVzc2FnZSBkYXRhCj4gKyAgKi8KPiArc3RydWN0IHBkX2NodW5rZWRfZXh0X21lc3Nh Z2VfZGF0YSB7Cj4gKwlfX2xlMTYgaGVhZGVyOwo+ICsJdTggZGF0YVtQRF9FWFRfTUFYX0NIVU5L X0RBVEFdOwo+ICt9IF9fcGFja2VkOwo+ICsKPiArLyoqCj4gKyAgKiBzdHJ1Y3QgcGRfbWVzc2Fn ZSAtIFBEIG1lc3NhZ2UgYXMgc2VlbiBvbiB3aXJlCj4gKyAgKiBAaGVhZGVyOiAgICBQRCBtZXNz YWdlIGhlYWRlcgo+ICsgICogQHBheWxvYWQ6ICAgUEQgbWVzc2FnZSBwYXlsb2FkCj4gKyAgKiBA ZXh0X21zZzogICBQRCBtZXNzYWdlIGNodW5rZWQgZXh0ZW5kZWQgbWVzc2FnZSBkYXRhCj4gKyAg Ki8KPiAgc3RydWN0IHBkX21lc3NhZ2Ugewo+ICAJX19sZTE2IGhlYWRlcjsKPiAtCV9fbGUzMiBw YXlsb2FkW1BEX01BWF9QQVlMT0FEXTsKPiArCXVuaW9uIHsKPiArCQlfX2xlMzIgcGF5bG9hZFtQ RF9NQVhfUEFZTE9BRF07Cj4gKwkJc3RydWN0IHBkX2NodW5rZWRfZXh0X21lc3NhZ2VfZGF0YSBl eHRfbXNnOwo+ICsJfTsKPiAgfSBfX3BhY2tlZDsKPiAgCj4gIC8qIFBETzogUG93ZXIgRGF0YSBP YmplY3QgKi8KPiBAQCAtMTIxLDYgKzIxNCw3IEBAIGVudW0gcGRfcGRvX3R5cGUgewo+ICAJUERP X1RZUEVfRklYRUQgPSAwLAo+ICAJUERPX1RZUEVfQkFUVCA9IDEsCj4gIAlQRE9fVFlQRV9WQVIg PSAyLAo+ICsJUERPX1RZUEVfQVBETyA9IDMsCj4gIH07Cj4gIAo+ICAjZGVmaW5lIFBET19UWVBF X1NISUZUCQkzMAo+IEBAIC0xNzQsNiArMjY4LDM0IEBAIGVudW0gcGRfcGRvX3R5cGUgewo+ICAJ KFBET19UWVBFKFBET19UWVBFX1ZBUikgfCBQRE9fVkFSX01JTl9WT0xUKG1pbl9tdikgfAlcCj4g IAkgUERPX1ZBUl9NQVhfVk9MVChtYXhfbXYpIHwgUERPX1ZBUl9NQVhfQ1VSUihtYXhfbWEpKQo+ ICAKPiArZW51bSBwZF9hcGRvX3R5cGUgewo+ICsJQVBET19UWVBFX1BQUyA9IDAsCj4gK307Cj4g Kwo+ICsjZGVmaW5lIFBET19BUERPX1RZUEVfU0hJRlQJMjgJLyogT25seSB2YWxpZCB2YWx1ZSBj dXJyZW50bHkgaXMgMHgwIC0gUFBTICovCj4gKyNkZWZpbmUgUERPX0FQRE9fVFlQRV9NQVNLCTB4 Mwo+ICsKPiArI2RlZmluZSBQRE9fQVBET19UWVBFKHQpCSgodCkgPDwgUERPX0FQRE9fVFlQRV9T SElGVCkKPiArCj4gKyNkZWZpbmUgUERPX1BQU19BUERPX01BWF9WT0xUX1NISUZUCTE3CS8qIDEw MG1WIHVuaXRzICovCj4gKyNkZWZpbmUgUERPX1BQU19BUERPX01JTl9WT0xUX1NISUZUCTgJLyog MTAwbVYgdW5pdHMgKi8KPiArI2RlZmluZSBQRE9fUFBTX0FQRE9fTUFYX0NVUlJfU0hJRlQJMAkv KiA1MG1BIHVuaXRzICovCj4gKwo+ICsjZGVmaW5lIFBET19QUFNfQVBET19WT0xUX01BU0sJMHhm Zgo+ICsjZGVmaW5lIFBET19QUFNfQVBET19DVVJSX01BU0sJMHg3Zgo+ICsKPiArI2RlZmluZSBQ RE9fUFBTX0FQRE9fTUlOX1ZPTFQobXYpCVwKPiArCSgoKChtdikgLyAxMDApICYgUERPX1BQU19B UERPX1ZPTFRfTUFTSykgPDwgUERPX1BQU19BUERPX01JTl9WT0xUX1NISUZUKQo+ICsjZGVmaW5l IFBET19QUFNfQVBET19NQVhfVk9MVChtdikJXAo+ICsJKCgoKG12KSAvIDEwMCkgJiBQRE9fUFBT X0FQRE9fVk9MVF9NQVNLKSA8PCBQRE9fUFBTX0FQRE9fTUFYX1ZPTFRfU0hJRlQpCj4gKyNkZWZp bmUgUERPX1BQU19BUERPX01BWF9DVVJSKG1hKQlcCj4gKwkoKCgobWEpIC8gNTApICYgUERPX1BQ U19BUERPX0NVUlJfTUFTSykgPDwgUERPX1BQU19BUERPX01BWF9DVVJSX1NISUZUKQo+ICsKPiAr I2RlZmluZSBQRE9fUFBTX0FQRE8obWluX212LCBtYXhfbXYsIG1heF9tYSkJCQkJXAo+ICsJKFBE T19UWVBFKFBET19UWVBFX0FQRE8pIHwgUERPX0FQRE9fVFlQRShBUERPX1RZUEVfUFBTKSB8CVwK PiArCVBET19QUFNfQVBET19NSU5fVk9MVChtaW5fbXYpIHwgUERPX1BQU19BUERPX01BWF9WT0xU KG1heF9tdikgfAlcCj4gKwlQRE9fUFBTX0FQRE9fTUFYX0NVUlIobWF4X21hKSkKPiArCj4gIHN0 YXRpYyBpbmxpbmUgZW51bSBwZF9wZG9fdHlwZSBwZG9fdHlwZSh1MzIgcGRvKQo+ICB7Cj4gIAly ZXR1cm4gKHBkbyA+PiBQRE9fVFlQRV9TSElGVCkgJiBQRE9fVFlQRV9NQVNLOwo+IEBAIC0yMDQs NiArMzI2LDI5IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHBkb19tYXhfcG93ZXIodTMy IHBkbykKPiAgCXJldHVybiAoKHBkbyA+PiBQRE9fQkFUVF9NQVhfUFdSX1NISUZUKSAmIFBET19Q V1JfTUFTSykgKiAyNTA7Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbmxpbmUgZW51bSBwZF9hcGRvX3R5 cGUgcGRvX2FwZG9fdHlwZSh1MzIgcGRvKQo+ICt7Cj4gKwlyZXR1cm4gKHBkbyA+PiBQRE9fQVBE T19UWVBFX1NISUZUKSAmIFBET19BUERPX1RZUEVfTUFTSzsKPiArfQo+ICsKPiArc3RhdGljIGlu bGluZSB1bnNpZ25lZCBpbnQgcGRvX3Bwc19hcGRvX21pbl92b2x0YWdlKHUzMiBwZG8pCj4gK3sK PiArCXJldHVybiAoKHBkbyA+PiBQRE9fUFBTX0FQRE9fTUlOX1ZPTFRfU0hJRlQpICYKPiArCQlQ RE9fUFBTX0FQRE9fVk9MVF9NQVNLKSAqIDEwMDsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB1 bnNpZ25lZCBpbnQgcGRvX3Bwc19hcGRvX21heF92b2x0YWdlKHUzMiBwZG8pCj4gK3sKPiArCXJl dHVybiAoKHBkbyA+PiBQRE9fUFBTX0FQRE9fTUFYX1ZPTFRfU0hJRlQpICYKPiArCQlQRE9fUFBT X0FQRE9fVk9MVF9NQVNLKSAqIDEwMDsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB1bnNpZ25l ZCBpbnQgcGRvX3Bwc19hcGRvX21heF9jdXJyZW50KHUzMiBwZG8pCj4gK3sKPiArCXJldHVybiAo KHBkbyA+PiBQRE9fUFBTX0FQRE9fTUFYX0NVUlJfU0hJRlQpICYKPiArCQlQRE9fUFBTX0FQRE9f Q1VSUl9NQVNLKSAqIDUwOwo+ICt9Cj4gKwo+ICAvKiBSRE86IFJlcXVlc3QgRGF0YSBPYmplY3Qg Ki8KPiAgI2RlZmluZSBSRE9fT0JKX1BPU19TSElGVAkyOAo+ICAjZGVmaW5lIFJET19PQkpfUE9T X01BU0sJMHg3Cj4gQEAgLTIzNyw2ICszODIsMjQgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBp bnQgcGRvX21heF9wb3dlcih1MzIgcGRvKQo+ICAJKFJET19PQkooaWR4KSB8IChmbGFncykgfAkJ CQlcCj4gIAkgUkRPX0JBVFRfT1BfUFdSKG9wX213KSB8IFJET19CQVRUX01BWF9QV1IobWF4X213 KSkKPiAgCj4gKyNkZWZpbmUgUkRPX1BST0dfVk9MVF9NQVNLCTB4N2ZmCj4gKyNkZWZpbmUgUkRP X1BST0dfQ1VSUl9NQVNLCTB4N2YKPiArCj4gKyNkZWZpbmUgUkRPX1BST0dfVk9MVF9TSElGVAk5 Cj4gKyNkZWZpbmUgUkRPX1BST0dfQ1VSUl9TSElGVAkwCj4gKwo+ICsjZGVmaW5lIFJET19QUk9H X1ZPTFRfTVZfU1RFUAkyMAo+ICsjZGVmaW5lIFJET19QUk9HX0NVUlJfTUFfU1RFUAk1MAo+ICsK PiArI2RlZmluZSBQRE9fUFJPR19PVVRfVk9MVChtdikJXAo+ICsJKCgoKG12KSAvIFJET19QUk9H X1ZPTFRfTVZfU1RFUCkgJiBSRE9fUFJPR19WT0xUX01BU0spIDw8IFJET19QUk9HX1ZPTFRfU0hJ RlQpCj4gKyNkZWZpbmUgUERPX1BST0dfT1BfQ1VSUihtYSkJXAo+ICsJKCgoKG1hKSAvIFJET19Q Uk9HX0NVUlJfTUFfU1RFUCkgJiBSRE9fUFJPR19DVVJSX01BU0spIDw8IFJET19QUk9HX0NVUlJf U0hJRlQpCj4gKwo+ICsjZGVmaW5lIFJET19QUk9HKGlkeCwgb3V0X212LCBvcF9tYSwgZmxhZ3Mp CQkJXAo+ICsJKFJET19PQkooaWR4KSB8IChmbGFncykgfAkJCQlcCj4gKwkgUERPX1BST0dfT1VU X1ZPTFQob3V0X212KSB8IFBET19QUk9HX09QX0NVUlIob3BfbWEpKQo+ICsKPiAgc3RhdGljIGlu bGluZSB1bnNpZ25lZCBpbnQgcmRvX2luZGV4KHUzMiByZG8pCj4gIHsKPiAgCXJldHVybiAocmRv ID4+IFJET19PQkpfUE9TX1NISUZUKSAmIFJET19PQkpfUE9TX01BU0s7Cj4gLS0gCj4gMS45LjEK