Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: USB:serial:pl2303:Add new PID to support PL2303HXN (TYPE_HXN) From: Johan Hovold Message-Id: <20190415085626.GB29656@localhost> Date: Mon, 15 Apr 2019 10:56:26 +0200 To: Charles Yeh Cc: Johan Hovold , Greg KH , linux-usb@vger.kernel.org, charles-yeh@prolific.com.tw List-ID: SGkgQ2hhcmxlcywKClBsZWFzZSBmaXggeW91ciBtYWlsIHNldHVwIHNvIHRoYXQgeW91IGNhbiBy ZXNwb25kIGlubGluZSBhcyBpcwpjdXN0b21hcnkgb24gdGhlIGxpc3RzLiBZb3VyIG1haWxzIGFy ZSBjdXJyZW50bHkgdW5uZWNlc3NhcmlseSBoYXJkIHRvCnJlYWQgZHVlIHRvIGl0IG5vdCBiZWlu ZyBjbGVhciB3aGF0IGlzIHF1b3RlZCB0ZXh0IGFuZCB3aGF0IGlzbid0LgoKU3BlY2lmaWNhbGx5 LCBxdW90ZWQgdGV4dCBzaG91bGQgaGF2ZSBhbiBleHRyYSAiPiAiIGF0IHRoZSBzdGFydCBvZiB0 aGUKbGluZSwgYW5kIGRvbid0IGNvcHkgdGV4dCBhbmQgcmVzcG9uZCB0byBpdCAoanVzdCByZXBs eSAqaW5saW5lKikuCgpDdXJyZW50bHkgdGhlcmUncyBhIHNlY29uZCBjb3B5IG9mIHRoZSBtYWls IHlvdXIgcmVzcG9uZGluZyB0byBhdCB0aGUKZW5kIG9mIHlvdXIgbWFpbHMuIFRoYXQgYml0IHNo b3VsZCBpbnN0ZWFkIGNvbnRhaW4geW91ciByZXBsaWVzICh3aXRoCnVubmVjZXNzYXJ5IGNvbnRl eHQgcmVtb3ZlZCkuCgpPbiBUdWUsIEFwciAwOSwgMjAxOSBhdCAwNTo1Mjo0NVBNICswODAwLCBD aGFybGVzIFllaCB3cm90ZToKPiBIaSBKb2hhbiwKPiAgICAgICAxLiBUaGUgSFhOIHJlZ2lzdGVy IGxheW91dCBpcyBlbnRpcmVseSBkaWZmZXJlbnQgZnJvbSBIWCBhbmQKPiAgICAgICAgICAgIGVh cmxpZXIgZGV2aWNlcy4KPiAKPiAgICAgICAgIDIuIEhYTiB1c2UgdGhlIHNhbWUgQ0RDIGNsYXNz IHJlcXVlc3RzIChsaW5lIGVuY29kaW5nLCBldGMpIGFzCj4gICAgICAgICAgICBlYXJsaWVyIHJl dmlzaW9ucy4KPiAKPiBDYW4geW91IHNlbmQgbWUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIEhYTiBw cm90b2NvbD8gVGhhdCB3b3VsZCBoZWxwIGEKPiBsb3QgaW4gZmluZGluZyB0aGUgcmlnaHQgYWJz dHJhY3Rpb24gbGV2ZWwgZm9yIHRoaXMuCj4gCj4gQW5z77yaCj4gWWVzLFRoZSBIWE4gcmVnaXN0 ZXIgbGF5b3V0IGlzIGVudGlyZWx5IGRpZmZlcmVudCBmcm9tIEhYIGFuZCBlYXJsaWVyIGRldmlj ZXMsCj4gWWVzLCBIWE4gdXNlIHRoZSBzYW1lIENEQyBjbGFzcyByZXF1ZXN0cyAobGluZSBlbmNv ZGluZywgZXRjKSBhcwo+IGVhcmxpZXIgcmV2aXNpb25zCgpPaywgdGhhbmtzIGZvciBjb25maXJt aW5nLgoKPiBJIGRvbid0IGhhdmUgYSBQTDIzMDNHIChIWE4pIFdvcmQgZmlsZSwgSSBvbmx5IGhh dmUgRXhjZWwncyB0YWJsZSBmaWxlLAo+IHBsZWFzZSByZWZlciB0byBQTDIzMDNfTGludXhcVmVu ZG9yX1JlcXVlc3V0LnBuZwoKRGlkIHlvdSBmb3JnZXQgdG8gYXR0YWNoIHRoZSBwbmc/IEV4Y2Vs IGZpbGVzIGRlc2NyaWJpbmcgdGhlIHByb3RvY29sCndvdWxkIGRvIGp1c3QgZmluZS4KCj4gT3Ig eW91IGNhbiBpbnN0YWxsIHdpbmRvdyBkcml2ZXIgdXNlIFBMMjMwM0cgZGVtbyBib2FyZC4KCj4g YW5kIHRoZW4gVVNCIEJ1cyBIb3VuZCB0byBhbmFseXNpcyB0aGUgdmVuZG9yIHJlcXVlc3QuCgpO bywgSSdtIGNlcnRhaW5seSBub3QgZ29pbmcgdG8gcmV2ZXJzZSBlbmdpbmVlciB5b3VyIFdpbmRv d3MgZHJpdmVyIGluCm9yZGVyIHRvIGhlbHAgeW91LgoKU3VyZWx5LCB5b3UgbXVzdCBoYXZlIHNv bWUgZG9jdW1lbnRhdGlvbiBmb3IgeW91ciBkZXZpY2VzPwoKPiBUaGUgb3JpZ2luYWwgUHJvbGlm aWMgY29tcGFueSBpcyBob3Bpbmc6Cj4gVFlQRV9IWCBhbmQgVFlQRV8wMSB1c2VkIG9sZCBkcml2 ZXIocGwyMzAzLmMgJiBwbDIzMDMuaCkKPiBUaGUgbmV3IFBMMjMwM0cgKFRZUEVfSFhOKSB1c2Vz IG5ldyBkcml2ZXIocGxzZXIuYyAmIHBsc2VyLmgpLAo+IAo+IFlvdSBjYW4gZ28gdG8gdGhlIHdl YnNpdGUgb2YgUHJvbGlmaWMsIGluIHRoZSB3ZWJzaXRlLAo+IAo+IFRZUEVfSFggYW5kIFRZUEVf MDEgYXJlIGNhbGxlZAo+IFBMMjMwMyBVU0IgdG8gU2VyaWFsIEJyaWRnZSBDb250cm9sbGVycyAo QWxsIENoaXAgVmVyc2lvbnMpCj4gCj4gVFlQRV9IWE4gaXMgY2FsbGVkCj4gUEwyMzAzRyBVU0Ig dG8gU2VyaWFsIEJyaWRnZSBDb250cm9sbGVycyAoQWxsIENoaXAgVmVyc2lvbnMpLgo+IAo+IFdl IHByb3ZpZGUgdHdvIGRpZmZlcmVudCBmaWxlIHBhdGhzIG9uIHRoZSB3ZWJzaXRlLCB0aGUgbmFt ZS5maWxlLi4KPiBpcyB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIFRZUEVfSFgvMDEgYW5kIFRZUEVf SFhOCj4gcGxlYXNlIHJlZmVyIHRvIFBMMjMwM19MaW51eFxXaW5kb3dfc3VwcG9ydF9oeF9oeG4u anBnCj4gCj4gVFlQRV9IWCBhbmQgVFlQRV8wMTp0aGUgd2luZG93cyBmaWxlIG5hbWUgaXMgc2Vy MnBsLnN5cyAmIHNlcjJwbDY0LnN5cy4KPiAKPiBUWVBFX0hYTjp0aGUgd2luZG93cyBmaWxlIG5h bWUgaXMgcGxzZXIuc3lzICYgcGxzZXI2NC5zeXMuCj4gCj4gcGxlYXNlIHJlZmVyIHRvIFBMMjMw M19MaW51eFx3aW5kb3dfcGxzZXJfc2VyMnBsLmJtcAo+IAo+IEJ1dCBHcmVnIGRpc2FncmVlZCB3 aXRoIHRoZSBMaW51eCBPUyBhYm91dCBuZXcgRmlsZSBuYW1lKHBsc2VyLmMgJiBwbHNlci5oKQo+ IFNvIHdlIGRpZCB0aGF0IHdlIG1lcmdlZCB3aXRoIHRoZSBleGlzdGluZyBwbDIzMDMuYyhoKQo+ IGludG8gYSBuZXcgY2hpcCAoUEwyMzAzRywgVFlQRV9IWE4pCgpZZXMsIHRoZSBwbHNlciBkcml2 ZXIgeW91IHN1Ym1pdHRlZCB3YXMganVzdCBhIGNvcHkgb2YgcGwyMzAzLCB3aXRoCm1pbmltYWwg Y2hhbmdlcyB0byBzdXBwb3J0IHBsMjMwM2cuIFdpdGggdGhhdCBtdWNoIGNvZGUgYmVpbmcgc2hh cmVkIHlvdQpuZWVkIHRvIGFkZCBzdXBwb3J0IGZvciB0aGUgbmV3IGRldmljZSB0eXBlIHRvIHRo ZSBjdXJyZW50IGRyaXZlci4KCkJ1dCB0aGUgbGFjayBvZiBkb2N1bWVudGF0aW9uIG9mIHRoZSBw cm90b2NvbHMgdXNlZCBpcyBtYWtpbmcgaXQgaGFyZCB0bwpkZXRlcm1pbmUgdGhlIGFwcHJvcHJp YXRlIGFic3RyYWN0aW9uIGxldmVsLgoKPiA+ICsjZGVmaW5lIFRZUEVfSFhOX0ZMT1dDT05UUk9M X1JFRyAgICAgMHgwQQo+IAo+ID4gKyNkZWZpbmUgVFlQRV9IWE5fSEFSRFdBUkVGTE9XX0RBVEEg ICAweEZBCj4gPiArI2RlZmluZSBUWVBFX0hYTl9TT0ZUV0FSRUZMT1dfREFUQSAgIDB4RUUKPiA+ ICsjZGVmaW5lIFRZUEVfSFhOX05PRkxPV19EQVRBICAgICAgICAgMHhGRgo+IAo+IFdoYXQgZXhh Y3RseSBkb2VzIGJpdHMgMHgxNSAoYml0cyA0LCAyIGFuZCAwKSBkbz8KPiBBbnM6cGxlYXNlIHJl ZmVyIHRvIFBMMjMwM19MaW51eFxQTDIzMDNHX1RZUEVfSFhOX1VBUlRfRmxvdy5qcGcsCj4gCj4g SXMgcmVnaXN0ZXIgMHgwYSByZWFsbHkgb25seSB1c2VkIGZvciBmbG93IGNvbnRyb2w/Cj4gQW5z OiBZZXMsIHBsZWFzZSByZWZlciB0byBQTDIzMDNfTGludXhcUEwyMzAzR19UWVBFX0hYTl9VQVJU X0Zsb3cuanBnLAo+IDB4MEEoQml0IDIsIDMsIDQpaXMgVUFSVCBmbG93IGNvbnRyb2wgc2V0dHRp bmcsCj4gaXQgb25seSBzdXBwb3J0cyBUWVBFX0hYTiwgbm8gc3VwcG9ydHMgVFlQRV9IWC8wMS4K Ck9rLCB0aGFua3MgKGZvdW5kIHRoZSBsaW5rIGF0IHRoZSBlbmQgb2YgdGhlIG1haWwgbm93KS4K Cj4gSW4gYW4gZWFybGllciB2ZXJzaW9uIG9mIHlvdXIgcGF0Y2gsIHlvdSBhbHNvIGNoZWNrZWQg YmNkVVNCIGhlcmUuIFdoeQo+IGRpZCB5b3UgcmVtb3ZlIGl0Pwo+IAo+ID4gKyAgICAgICAgICAg ICByZXMgPSB1c2JfY29udHJvbF9tc2coc2VyaWFsLT5kZXYsCj4gPiArICAgICAgICAgICAgICAg ICAgICAgdXNiX3JjdmN0cmxwaXBlKHNlcmlhbC0+ZGV2LCAwKSwKPiA+ICsgICAgICAgICAgICAg ICAgICAgICBWRU5ET1JfUkVBRF9SRVFVRVNULCBWRU5ET1JfUkVBRF9SRVFVRVNUX1RZUEUsCj4g PiArICAgICAgICAgICAgICAgICAgICAgVFlQRV9IWF9SRUFEX1NUQVRVU19SRUcsIDAsIGJ1Ziwg MSwgMTAwKTsKPiAKPiBQbGVhc2UgbmFtZSB0aGUgcmVnaXN0ZXJzIGFmdGVyIHdoYXQgdGhleSBk bywgbm90IGhvdyB5b3UgdXNlIHRoZW0uIFdoYXQKPiBpcyByZWdpc3RlciAwIHRoYXQgeW91IHJl YWQgaGVyZT8gRG9lcyBpdCBoYXZlIGEgbmFtZT8KPiAKPiBBbnM6IEJlY2F1c2UgdGhlICJrYnVp bGQgdGVzdCByb2JvdCA8bGtwQGludGVsLmNvbT4iIHJlcGx5IG1lIGEgZXJyb3IuCj4gUGxlYXNl IHJlZmVyIHRvIEVtYWlsOiAiVHVlc2RheSwgRGVjZW1iZXIgMjUsIDIwMTgsIGF0IDExOjM5IHBt Igo+IG9yIHJlZmVyIHRvIFBMMjMwM19MaW51eFxyZW1vZV9jaGVja2VkX2JjZFVTQi50eHQKClll cywgeW91IG5lZWRlZCB0byB1c2UgaGVscGVyIGZ1bmN0aW9uIHRvIGRlYWwgd2l0aCBlbmRpYW5l c3MgYXMgd2FzCnBvaW50ZWQgb3V0IHRvIHlvdSBpbiB0aGF0IHRocmVhZC4gV2h5IGRpZG4ndCB5 b3UgdXNlIHRoZSBoZWxwZXIsIGFuZAppbnN0ZWFkIGp1c3QgZHJvcHBlZCB0aGUgY2hlY2s/Cgo+ IFdoeSBUWVBFXzAxIHNldHMgYml0IDB4MjAgb2YgcmVnaXN0ZXIgMiBpbnN0ZWFkIG9mIDB4NDAg YXMgdGhlIEhYIGRvZXM/Cj4gSXMgdGhhdCBldmVuIGNvcnJlY3Q/Cj4gQW5zOiBZZXMsIGl0IGlz IGNvcnJlY3QsCj4gVGhlIE91dHB1dChUWC9EVFIvUlRTKSBUcmktc3RhdGUgSC9XIGRlc2lnbiBp cyBkaWZmZXJlbnQuCj4gCj4gVFlQRV8wMTogUlMtMjMyIE91dHB1dCBUcmktc3RhdGU6Cj4gMDog UlMtMjMyIG91dHB1dCBpbiBvdXRwdXQgbW9kZTsKPiAxOiBSUy0yMzIgb3V0cHV0IHRyaS1zdGF0 ZS4KPiAKPiBUWVBFX0hYX1NlcmlhbCBQb3J0IChUWEQsIFJUUywgYW5kIERUUikgT3V0cHV0IEVu YWJsZToKPiAwMCDigJMgRGlzYWJsZSBvdXRwdXQgc2lnbmFscyAoVHJpLVN0YXRlKSBhdCBhbGwg dGltZTsKPiAwMSDigJMgRGlzYWJsZSBvdXRwdXQgc2lnbmFscyAoVHJpLVN0YXRlKSBkdXJpbmcg c3VzcGVuZDsKPiAxMCwgMTEg4oCTIFNldCBvdXRwdXQgc2lnbmFscyB0byBISUdIIGR1cmluZyBz dXNwZW5kOwoKT2suCgo+ID4gICAgICAgaWYgKENfQ1JUU0NUUyh0dHkpKSB7Cj4gPiAtICAgICAg ICAgICAgIGlmIChzcHJpdi0+cXVpcmtzICYgUEwyMzAzX1FVSVJLX0xFR0FDWSkKPiA+IC0gICAg ICAgICAgICAgICAgICAgICBwbDIzMDNfdmVuZG9yX3dyaXRlKHNlcmlhbCwgMHgwLCAweDQxKTsK PiAKPiBXaHkgZG8gdGhlIFRZUEVfMDEgbm90IHNldCBiaXQgMHgyMCBoZXJlPyBEbyB0aGUgbGVn YWN5IGRldmljZSBzdXBwb3J0Cj4gYm90aCBhdXRvLXJ0cyBhbmQgYXV0by1jdHM/Cj4gCj4gQW5z OiBZZXMsIGl0IGlzIGNvcnJlY3QsCj4gVGhlIEhhcmR3YXJlIFVBUlQgZmxvdyBjb250cm9sIHNl dHR0aW5nIGRlc2lnbiBpcyBkaWZmZXJlbnQKPiBiZXR3ZWVuIFRZUFRfMDEgYW5kIFRZUFRfSFgu Cj4gCj4gQWx0aG91Z2ggSSBoYXZlIGJlZW4gaW4gUHJvbGlmaWMgQ29tcGFueSBmb3IgYWxtb3N0 IDE2IHllYXJzLi4KPiBCdXQgVFlQRV8wMSAoUEwyMzAzSCkgaGFzIGJlZW4gZGlzY29udGludWVk KEVPTCkgZm9yIDEzIHllYXJzLi4uCj4gTm93IGNhbid0IGZpbmQgdGhpcyBJQyhUWVBUXzAxOiBQ TDIzMDNIKSBvbiB0aGUgbWFya2V0Li4KClN1cmUsIGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIG1ha2Ug c3VyZSB3ZSBkb24ndCBicmVhayBhbnkgd29ya2luZyBzZXR1cHMKdXNpbmcgdGhlc2Ugb2xkIGRl dmljZXMsIHNvIEkgc3RpbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgb2xkZXIKcHJvdG9j b2xzIHdvcmsuCgo+IFRoZSBsaW5lImlmIChzcHJpdi0+cXVpcmtzICYgUEwyMzAzX1FVSVJLX0xF R0FDWSkiCj4geW91IGFyZSBhc2tpbmcgbm93IGlzIG5vdCB3aGF0IEkgd3JvdGUuLi4KPiBJIGRv bid0IGtub3cgd2h5IHRvIGRlZmluZSBpdCBhcyBQTDIzMDNfUVVJUktfTEVHQUNZLgoKSSBhZGRl ZCB0aGF0IGF0IHNvbWUgcG9pbnQgaW4gYW4gYXR0ZW1wdCB0byBjbGVhbiB1cCB0aGlzCnJldmVy c2UtZW5naW5lZXJpbmcgZHJpdmVyLiBZb3UgY2FuIHJlYWQgaXQgYXMgYSBUWVBFXzAxIHRlc3Qu IAoKPiBJIGFtIG1haW5seSByZXNwb25zaWJsZSBmb3IgdGhlIFBMMjMwMyBkcml2ZXIKPiBXaW5k b3dzLCBXaW5DRSwgTWFjICYgQW5kcm9pZCBpbiBQcm9saWZpYy4KPiBPbiB0aGUgTGludXggZHJp dmVyIHNpZGUsIG9ubHkgd2hlbiB0aGUgY3VzdG9tZXIgaGFzIGEgcHJvYmxlbSwKPiBvciB3YW50 IHRvIGFkZCBuZXcgZmVhdHVyZXMgKHN1Y2ggYXMgR1BJTyBjb250cm9sLCBuZXcgQmF1ZCByYXRl KSwKPiBJIHdpbGwgcmV3cml0ZSB0aGUgTGludXggY29kZS4KPiBSZXdyaXR0ZW4gTGludXggY29k ZSB3aWxsIG9ubHkgYmUgZ2l2ZW4gdG8gdGhlIGNvcnJlc3BvbmRpbmcgY3VzdG9tZXIuCj4gCj4g SnVzdCBsaWtlIHRoaXMgdGltZSwgYmVjYXVzZSBJIHdhbnQgdG8gYWRkIFBMMjMwM0cgKFRZUEVf SFhOKSB0byBMaW51eCwKPiBJIGp1c3QgcmV3cml0dGVuIHRoZSBMaW51eCBjb2RlLi4uCj4gRm9y IHNvbWUgZGVmaW5pdGlvbnMgaW4gdGhlIExpbnV4IGNvZGUsCj4gc3VjaCBhcyB3aHkgaXQgaXMg ZGVmaW5lZCBhcyBQTDIzMDNfUVVJUktfTEVHQUNZLAo+IEkgcmVhbGx5IGRvbid0IGtub3cgdmVy eSB3ZWxsCj4gCj4gQmVmb3JlIHJld3JpdGluZyB0aGUgTGludXggY29kZSwKPiBJIGNhbiBvbmx5 IGd1ZXNzICJQTDIzMDNfUVVJUktfTEVHQUNZIiB0aGF0IHRoaXMgcmVmZXJzIHRvIHRoZQo+IG9s ZCBQTDIzMDMgKFBMMjMwM0gsIFRZUEVfMDEpLi4KClJpZ2h0LgoKPiBBZnRlciB0aGUgYWN0dWFs IHRlc3QgKEkgaGF2ZSB0ZXN0ZWQgdGhlIG9sZCBQTDIzMDNIIGNoaXAgb24gTGludXgpLAo+IHdo ZW4gSSBwbHVnIGluIHRoZSBQTDIzMDNIIChUWVBFXzAxKSwgdGhlIExpbnV4IGNvZGUgd2lsbCBl eGVjdXRlIHRoZSBjb2RlOgo+IGlmIChzcHJpdi0+cXVpcmtzICYgUEwyMzAzX1FVSVJLX0xFR0FD WSkgaXRpbmVyYXJ5IGNvZGUuCj4gU28gSSBjb25maXJtIFRoaXMgIlBMMjMwM19RVUlSS19MRUdB Q1kiIG9mIGNvZGUgcmVmZXJzIHRvIFBMMjMwM0goVFlQRV8wMSkKCkNvcnJlY3QsIGJ1dCBteSBx dWVzdGlvbiB3YXMgYWJvdXQgYml0IDB4MjAgZm9yIFRZUEVfMDEgZGV2aWNlczsgd2h5Cmlzbid0 IGl0IGJlaW5nIGFzIHNldCBhcyBmb3IgVFlQRV9IWD8KCj4gPiArICAgICAgICAgICAgIGlmIChz cHJpdi0+dHlwZSA9PSAmcGwyMzAzX3R5cGVfZGF0YVtUWVBFX0hYTl0pCj4gPiArICAgICAgICAg ICAgICAgICAgICAgcGwyMzAzX3ZlbmRvcl93cml0ZShzZXJpYWwsIFRZUEVfSFhOX0ZMT1dDT05U Uk9MX1JFRywKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBUWVBFX0hYTl9TT0ZUV0FSRUZMT1dfREFUQSk7Cj4gPiAgICAgICAgICAgICAgIGVsc2UKPiA+ IC0gICAgICAgICAgICAgICAgICAgICBwbDIzMDNfdmVuZG9yX3dyaXRlKHNlcmlhbCwgMHgwLCAw eDYxKTsKPiA+IC0gICAgIH0gZWxzZSBpZiAoSV9JWE9OKHR0eSkgJiYgIUlfSVhBTlkodHR5KSAm JiBTVEFSVF9DSEFSKHR0eSkgPT0gMHgxMSAmJgo+ID4gLSAgICAgICAgICAgICAgICAgICAgIFNU T1BfQ0hBUih0dHkpID09IDB4MTMpIHsKPiA+IC0gICAgICAgICAgICAgcGwyMzAzX3ZlbmRvcl93 cml0ZShzZXJpYWwsIDB4MCwgMHhjMCk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgcGwyMzAz X3ZlbmRvcl93cml0ZShzZXJpYWwsIFRZUEVfSFhfMDFfRkxPV0NPTlRST0xfUkVHLAo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRZUEVfSFhfMDFfU09G VFdBUkVGTE9XX0RBVEEpOwo+ID4gICAgICAgfSBlbHNlIHsKPiA+IC0gICAgICAgICAgICAgcGwy MzAzX3ZlbmRvcl93cml0ZShzZXJpYWwsIDB4MCwgMHgwKTsKPiA+ICsgICAgICAgICAgICAgaWYg KHNwcml2LT50eXBlID09ICZwbDIzMDNfdHlwZV9kYXRhW1RZUEVfSFhOXSkKPiA+ICsgICAgICAg ICAgICAgICAgICAgICBwbDIzMDNfdmVuZG9yX3dyaXRlKHNlcmlhbCwgVFlQRV9IWE5fRkxPV0NP TlRST0xfUkVHLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFRZUEVfSFhOX05PRkxPV19EQVRBKTsKPiA+ICsgICAgICAgICAgICAgZWxzZQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgIHBsMjMwM192ZW5kb3Jfd3JpdGUoc2VyaWFsLCBUWVBFX0hYXzAx X0ZMT1dDT05UUk9MX1JFRywKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBUWVBFX0hYXzAxX05PRkxPV19EQVRBKTsKPiAKPiBBcyBhbHJlYWR5IG1lbnRp b25lZCwgdGhlIGFib3ZlIGlzIGhhcmRseSByZWFkYWJsZS4gV2hlbiBzdHVkeWluZyB0aGUKPiBj dXJyZW50IGRyaXZlciwgSSBub3RpY2VkIGEgY291cGxlIG9mIGJ1Z3MgdGhhdCBJJ20gcHJlcGFy aW5nIGZpeGVzIGZvci4KPiAKPiBTcGVjaWZpY2FsbHksIHdlIHNob3VsZG4ndCBiZSBvdmVyd3Jp dGluZyB0aGUgZW50aXJlIGNvbnRyb2wgcmVnaXN0ZXIsCj4gd2hpY2ggY2hhbmdlcyB0aGUgdHJh bmNlaXZlciBzdXNwZW5kIG1vZGUuIEFyZSB0aGVyZSBzaW1pbGFyIHByb2JsZW1zCj4gd2l0aCBu b3QgZG9pbmcgYml0IHVwZGF0ZXMgb2YgcmVnaXN0ZXIgMHgwYT8KPiAKPiBFaXRoZXIgd2F5LCBy ZWJhc2luZyB5b3VyIHBhdGNoZXMgb24gdG9wIG9mIHRob3NlIHNob3VsZCBhbGxvdyB0aGlzIHRv Cj4gYmUgY2xlYW5lZCB1cCBzb21ld2hhdC4KPiAKPiAKPiBBbnM6IHRoZSB0aHJlZSBjaGlwcyBU WVBFXzAxIC8gVFlQRV9IWCAvIFRZUEVfSFhOIGhhdmUgdGhlaXIgb3duIGluZGVwZW5kZW50Cj4g IGZsb3cgY29udHJvbCBSZWdpc3RlciBzZXR0aW5ncy4uLgo+IFdoYXQgYWR2aWNlIGRvIHlvdSBo YXZlIGZvciBoYW5kbGluZyBoZXJlPwo+IAo+IEhlcmUgSSBoYXZlIGFjdHVhbGx5IHRlc3RlZCB0 aGUgdGhyZWUgY2hpcHMgVFlQRV8wMSAvIFRZUEVfSFggLyBUWVBFX0hYTgo+IFRZUEVfMDE6IFBM MjMwM0gKPiBUWVBFX0hYOiBQTDIzMDNIWEEvIFBMMjMwM1hBLyBQTDIzMDNIWEQvUEwyMzAzVEEv UEwyMzAzVEIvUEwyMzAzUkEvIFBMMjMwM1NBLgo+IFRZUEVfSFhOOiBQTDIzMDNHQywgUEwyMzAz R1MsIFBMMjMwM0dMLi4uCj4gCj4gVGhlIHRlc3QgcmVzdWx0IGlzIE9LLi4KCldlbGwsIHdpdGhv dXQgZG9jdW1lbnRhdGlvbiBpdCBpcyBoYXJkIHRvIGdpdmUgYWR2aWNlLiBCdXQgdGhlCmluZm9y bWF0aW9uIHlvdSBwcm92aWRlZCBhYm92ZSwgaW5kaWNhdGVzIHRoYXQgeW91IHNob3VsZCBub3Qg YmUKb3ZlcndyaXRpbmcgdGhlc2UgcmVnaXN0ZXJzIGNvbXBsZXRlbHkgZm9yIEhYTiBlaXRoZXIg d2hlbiB1cGRhdGluZyB0aGUKZmxvdy1jb250cm9sIHNldHRpbmdzLiBPbmx5IHRoZSBiaXRzIDIu LjQgKGFuZCBwb3NzaWJseSAwLi4xKSBzaG91bGQgYmUKd3JpdHRlbi4KClRha2UgYSBsb29rIGF0 IHRoZSBwYXRjaGVzIEkgbWVyZ2VkIGZvciBkb2luZyB0aGlzIG9uIHRoZSBvbGRlciBkZXZpY2Vz LgpZb3Ugc2hvdWxkIGJlIGFibGUgdG8gdXNlIHRoZSBzYW1lIGhlbHBlciB3aGVuIHVwZGF0aW5n IHRoZXNlCnJlZ2lzdGVycy4KCglodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgv a2VybmVsL2dpdC9qb2hhbi91c2Itc2VyaWFsLmdpdC9jb21taXQvP2g9dXNiLW5leHQmaWQ9ZjY0 YzNhYjIzMDY4MmU4Mzk1YTdmYmQwMWYzZWI1MTQwYzgzN2Q0ZQoKPiA+ICsgICAgICAgICAgICAg ICAgICAgICBwbDIzMDNfdmVuZG9yX3dyaXRlKHNlcmlhbCwKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSFhOX1JFU0VUX0RPV05fVVBTVFJFQU1fUkVHLAo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIWE5fUkVTRVRfRE9XTl9VUFNUUkVB TV9EQVRBKTsKPiAKPiBDYW4geW91IHdyaXRlIGFueXRoaW5nIHRvIHRoaXMgcmVnaXN0ZXIgdG8g cmVzZXQgdGhlIGJ1ZmZlcnMsIG9yIGRvZXMgaXQKPiBoYXZlIHRvIGJlIDA/Cj4gQW5zOiBJdCBo YXZlIHRvIHJlc2V0IHRvIDAsIHBsZWFzZSByZWZlciB0byBQTDIzMDNfTGludXhcUEwyMzAzR19D aGlwUmVzZXQuanBnCgpCdXQgdGhhdCBqcGcgc2hvd3Mgb25seSBiaXQgMCBhbmQgMSBiZWluZyB1 c2VkIGZvciBkYXRhIHBpcGUgcmVzZXQuIEFuZApzaG91bGRuJ3QgeW91IGJlIHdyaXRpbmcgMHgw MiB0byByZXNldCB0aG9zZT8KCj4gPiArICAgICAgICAgICAgIGVsc2Ugewo+ID4gKyAgICAgICAg ICAgICAgICAgICAgIHBsMjMwM192ZW5kb3Jfd3JpdGUoc2VyaWFsLAo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBIWF9SRVNFVF9ET1dOX1VQU1RSRUFNX1JFRzEsCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhYX1JFU0VUX0RPV05fVVBT VFJFQU1fREFUQSk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgcGwyMzAzX3ZlbmRvcl93cml0 ZShzZXJpYWwsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhYX1JF U0VUX0RPV05fVVBTVFJFQU1fUkVHMiwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSFhfUkVTRVRfRE9XTl9VUFNUUkVBTV9EQVRBKTsKPiAKPiBJIGFzc3VtZSB0aGUg b2xkZXIgdmVyc2lvbnMgYWxsb3cgZm9yIHRoZSBhbmQgdXAgYW5kIGRvd24gYnVmZmVycyB0byBi ZQo+IHJlc2V0IGluZGVwZW5kZW50bHk/IFBsZWFzZSBuYW1lIHRoZXNlIHJlZ2lzdGVycyBhY2Nv cmRpbmdseS4KPiBBbnM6IFllcywgcmVzZXQgaW5kZXBlbmRlbnRseSwKPiBwbGVhc2UgcmVmZXIg dG8gUEwyMzAzX0xpbnV4XFBMMjMwM19UWVBFX0hYX1Jlc2V0LmpwZwo+IFRoZSBvcmlnaW5hbCBj b2RlIGlzCj4gICAgICAgICAvKiByZXNldCB1cHN0cmVhbSBkYXRhIHBpcGVzICovCj4gICAgICAg ICBwbDIzMDNfdmVuZG9yX3dyaXRlKHNlcmlhbCwgOCwgMCk7Cj4gICAgICAgICBwbDIzMDNfdmVu ZG9yX3dyaXRlKHNlcmlhbCwgOSwgMCk7Cj4gCj4gWW91IHByZXZpb3VzbHkgc3VnZ2VzdGVkIHRo YXQgSSBhbSBub3QgdXNpbmcgIm1hZ2ljYWwiIGNvbnN0YW50cyBkaXJlY3RseSwKPiBQbGVhc2Ug dXNlIGRlZmluZXMgcmF0aGVyIHRoYW4gIm1hZ2ljYWwiIENvbnN0YW50cy4KPiBXaGF0IGFkdmlj ZSBkbyB5b3UgaGF2ZSBmb3IgaGFuZGxpbmcgaGVyZT8KCk5hbWUgcmVnaXN0ZXIgYW5kIGJpdC1k ZWZpbml0aW9ucyBhZnRlciB3aGF0IHRoZXkgZG8uIFdlIG5lZWQgY29kZSB0byBiZQpjbGVhbiBh bmQgbW9zdGx5IHNlbGYtZG9jdW1lbnRpbmcuIEluIHRoaXMgY2FzZSwgYmFzZWQgb24gdGhlCmlu Zm9ybWF0aW9uIHByb3ZpZGVkIGFib3ZlLCB5b3UgY291bGQgdXNlCgoJI2RlZmluZSBQTDIzMDNf UkVTRVRfRE9XTlNUUkVBTV9QSVBFCTgKCSNkZWZpbmUgUEwyMzAzX1JFU0VUX1VQU1RSRUFNX1BJ UEUJOQoKZm9yIGV4YW1wbGUuCgpBcyB0aGUgcHJvdG9jb2wgYXBwZWFycyB0byBtYW5kYXRlIHdy aXRpbmcgMCB0byB0aGVzZSByZWdpc3RlcnMsIGl0Cm1heSBiZSBvayB0byBrZWVwIHRoYXQgYXMg YSBudW1lcmljYWwgY29uc3RhbnQuCgpKb2hhbgo=