Date: Wed, 22 Jun 2022 09:53:01 -0300 (-03) From: Ivan Quitschal <tezeka@hotmail.com> To: freebsd-current@freebsd.org Subject: vt newcons mouse paste issue FIXED Message-ID: <CP6P284MB1900CA1ED5B5BADE054ECB34CBB29@CP6P284MB1900.BRAP284.PROD.OUTLOOK.COM>
next in thread | raw e-mail | index | archive | help
--3432851520-594251130-1655902382=:1623 Content-Type: text/plain; format=flowed; charset=US-ASCII Hi All About this anoying paste error we still have in vt console, I looked it up and couldnt find any fix regarding this, so i did it. Please find attached the fixed version of /usr/src/sys/dev/vt/vt_buf.c with trim spaces and aligned to the console size. I've tested with other fonts and looks fine in here. I hope this can help other ppl which finds this terminal mouse paste issue a pain in the neck. thanks --tzk --3432851520-594251130-1655902382=:1623 Content-Type: text/plain; charset=US-ASCII; name=vt_buf.c Content-Transfer-Encoding: BASE64 Content-ID: <f221781c-0dc-cba9-26e9-ce9c1ed7714d@hotmail.com> Content-Description: vt_buf.c Content-Disposition: attachment; filename=vt_buf.c LyotDQogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLUZyZWVCU0QNCiAq DQogKiBDb3B5cmlnaHQgKGMpIDIwMDksIDIwMTMgVGhlIEZyZWVCU0QgRm91bmRhdGlvbg0KICoN CiAqIFRoaXMgc29mdHdhcmUgd2FzIGRldmVsb3BlZCBieSBFZCBTY2hvdXRlbiB1bmRlciBzcG9u c29yc2hpcCBmcm9tIHRoZQ0KICogRnJlZUJTRCBGb3VuZGF0aW9uLg0KICoNCiAqIFBvcnRpb25z IG9mIHRoaXMgc29mdHdhcmUgd2VyZSBkZXZlbG9wZWQgYnkgT2xla3NhbmRyIFJ5YmFsa28NCiAq IHVuZGVyIHNwb25zb3JzaGlwIGZyb20gdGhlIEZyZWVCU0QgRm91bmRhdGlvbi4NCiAqDQogKiBS ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y IHdpdGhvdXQNCiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KICogYXJlIG1ldDoNCiAqIDEuIFJlZGlzdHJpYnV0aW9u cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQogKiAgICBu b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt ZXIuDQogKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug dGhlIGFib3ZlIGNvcHlyaWdodA0KICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KICogICAgZG9jdW1lbnRhdGlv biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4N CiAqDQogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRS SUJVVE9SUyBgYEFTIElTJycgQU5EDQogKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUNCiAqIElNUExJRUQgV0FSUkFO VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFDQogKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1Ig Q09OVFJJQlVUT1JTIEJFIExJQUJMRQ0KICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwNCiAqIERBTUFHRVMg KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF IEdPT0RTDQogKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S IEJVU0lORVNTIElOVEVSUlVQVElPTikNCiAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUDQogKiBMSUFCSUxJ VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ TiBBTlkgV0FZDQogKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GDQogKiBTVUNIIERBTUFHRS4NCiAqLw0KDQojaW5j bHVkZSA8c3lzL2NkZWZzLmg+DQpfX0ZCU0RJRCgiJEZyZWVCU0QkIik7DQoNCiNpbmNsdWRlIDxz eXMvcGFyYW0uaD4NCiNpbmNsdWRlIDxzeXMvc3lzdG0uaD4NCiNpbmNsdWRlIDxzeXMva2VybmVs Lmg+DQojaW5jbHVkZSA8c3lzL2xvY2suaD4NCiNpbmNsdWRlIDxzeXMvbWFsbG9jLmg+DQojaW5j bHVkZSA8c3lzL211dGV4Lmg+DQojaW5jbHVkZSA8c3lzL3JlYm9vdC5oPg0KI2luY2x1ZGUgPHN5 cy9jdHlwZS5oPg0KDQojaW5jbHVkZSA8ZGV2L3Z0L3Z0Lmg+DQoNCnN0YXRpYyBNQUxMT0NfREVG SU5FKE1fVlRCVUYsICJ2dGJ1ZiIsICJ2dCBidWZmZXIiKTsNCg0KI2RlZmluZQlWVEJVRl9MT0NL KHZiKQkJbXR4X2xvY2tfc3BpbigmKHZiKS0+dmJfbG9jaykNCiNkZWZpbmUJVlRCVUZfVU5MT0NL KHZiKQltdHhfdW5sb2NrX3NwaW4oJih2YiktPnZiX2xvY2spDQoNCiNkZWZpbmUgUE9TX0lOREVY KGMsIHIpICgoKHIpIDw8IDEyKSArIChjKSkNCiNkZWZpbmUJUE9TX0NPUFkoZCwgcykJZG8gewlc DQoJKGQpLnRwX2NvbCA9IChzKS50cF9jb2w7CVwNCgkoZCkudHBfcm93ID0gKHMpLnRwX3JvdzsJ XA0KfSB3aGlsZSAoMCkNCg0KI2lmbmRlZiBTQ19OT19DVVRQQVNURQ0Kc3RhdGljIGludCB2dGJ1 Zl9odHcoY29uc3Qgc3RydWN0IHZ0X2J1ZiAqdmIsIGludCByb3cpOw0Kc3RhdGljIGludCB2dGJ1 Zl93dGgoY29uc3Qgc3RydWN0IHZ0X2J1ZiAqdmIsIGludCByb3cpOw0Kc3RhdGljIGludCB2dGJ1 Zl9pbl90aGlzX3JhbmdlKGludCBiZWdpbiwgaW50IHRlc3QsIGludCBlbmQsIGludCBzeik7DQoj ZW5kaWYNCg0KLyoNCiAqIGxpbmU0DQogKiBsaW5lNSA8LS0tIGN1cnJvZmZzZXQgKHRlcm1pbmFs IG91dHB1dCB0byB0aGF0IGxpbmUpDQogKiBsaW5lMA0KICogbGluZTEgICAgICAgICAgICAgICAg ICA8LS0tIHJvZmZzZXQgKGhpc3RvcnkgZGlzcGxheSBmcm9tIHRoYXQgcG9pbnQpDQogKiBsaW5l Mg0KICogbGluZTMNCiAqLw0KaW50DQp2dGhpc3Rvcnlfc2VlayhzdHJ1Y3QgdnRfYnVmICp2Yiwg aW50IG9mZnNldCwgaW50IHdoZW5jZSkNCnsNCglpbnQgZGlmZiwgdG9wLCBib3R0b20sIHJvZmZz ZXQ7DQoNCgkvKiBObyBzY3JvbGxpbmcgaWYgbm90IGVuYWJsZWQuICovDQoJaWYgKCh2Yi0+dmJf ZmxhZ3MgJiBWQkZfU0NST0xMKSA9PSAwKSB7DQoJCWlmICh2Yi0+dmJfcm9mZnNldCAhPSB2Yi0+ dmJfY3Vycm9mZnNldCkgew0KCQkJdmItPnZiX3JvZmZzZXQgPSB2Yi0+dmJfY3Vycm9mZnNldDsN CgkJCXJldHVybiAoMHhmZmZmKTsNCgkJfQ0KCQlyZXR1cm4gKDApOyAvKiBObyBjaGFuZ2VzICov DQoJfQ0KDQoJLyogInRvcCIgbWF5IGJlIGEgbmVnYXRpdmUgaW50ZWdlci4gKi8NCglib3R0b20g PSB2Yi0+dmJfY3Vycm9mZnNldDsNCgl0b3AgPSAodmItPnZiX2ZsYWdzICYgVkJGX0hJU1RPUllf RlVMTCkgPw0KCSAgICBib3R0b20gKyB2Yi0+dmJfc2NyX3NpemUudHBfcm93IC0gdmItPnZiX2hp c3Rvcnlfc2l6ZSA6DQoJICAgIDA7DQoNCglyb2Zmc2V0ID0gMDsgLyogTWFrZSBnY2MgaGFwcHku ICovDQoJc3dpdGNoICh3aGVuY2UpIHsNCgljYXNlIFZIU19TRVQ6DQoJCWlmIChvZmZzZXQgPCAw KQ0KCQkJb2Zmc2V0ID0gMDsNCgkJcm9mZnNldCA9IHRvcCArIG9mZnNldDsNCgkJYnJlYWs7DQoJ Y2FzZSBWSFNfQ1VSOg0KCQkvKg0KCQkgKiBPcGVyYXRlIG9uIGNvcHkgb2Ygb2Zmc2V0IHZhbHVl LCBzaW5jZSBpdCB0ZW1wb3JhcnkNCgkJICogY2FuIGJlIGJpZ2dlciB0aGFuIGFtb3VudCBvZiBy b3dzIGluIGJ1ZmZlci4NCgkJICovDQoJCXJvZmZzZXQgPSB2Yi0+dmJfcm9mZnNldDsNCgkJaWYg KHJvZmZzZXQgPj0gYm90dG9tICsgdmItPnZiX3Njcl9zaXplLnRwX3JvdykNCgkJCXJvZmZzZXQg LT0gdmItPnZiX2hpc3Rvcnlfc2l6ZTsNCg0KCQlyb2Zmc2V0ICs9IG9mZnNldDsNCgkJcm9mZnNl dCA9IE1BWChyb2Zmc2V0LCB0b3ApOw0KCQlyb2Zmc2V0ID0gTUlOKHJvZmZzZXQsIGJvdHRvbSk7 DQoNCgkJaWYgKHJvZmZzZXQgPCAwKQ0KCQkJcm9mZnNldCA9IHZiLT52Yl9oaXN0b3J5X3NpemUg KyByb2Zmc2V0Ow0KDQoJCWJyZWFrOw0KCWNhc2UgVkhTX0VORDoNCgkJLyogR28gdG8gY3VycmVu dCBvZmZzZXQuICovDQoJCXJvZmZzZXQgPSB2Yi0+dmJfY3Vycm9mZnNldDsNCgkJYnJlYWs7DQoJ fQ0KDQoJZGlmZiA9IHZiLT52Yl9yb2Zmc2V0ICE9IHJvZmZzZXQ7DQoJdmItPnZiX3JvZmZzZXQg PSByb2Zmc2V0Ow0KDQoJcmV0dXJuIChkaWZmKTsNCn0NCg0Kdm9pZA0KdnRoaXN0b3J5X2FkZGxp bmVzKHN0cnVjdCB2dF9idWYgKnZiLCBpbnQgb2Zmc2V0KQ0Kew0KI2lmbmRlZiBTQ19OT19DVVRQ QVNURQ0KCWludCBjdXIsIHN6Ow0KI2VuZGlmDQoNCgl2Yi0+dmJfY3Vycm9mZnNldCArPSBvZmZz ZXQ7DQoJaWYgKHZiLT52Yl9jdXJyb2Zmc2V0ICsgdmItPnZiX3Njcl9zaXplLnRwX3JvdyA+PSB2 Yi0+dmJfaGlzdG9yeV9zaXplKSB7DQoJCXZiLT52Yl9mbGFncyB8PSBWQkZfSElTVE9SWV9GVUxM Ow0KCQl2Yi0+dmJfY3Vycm9mZnNldCAlPSB2Yi0+dmJfaGlzdG9yeV9zaXplOw0KCX0NCglpZiAo KHZiLT52Yl9mbGFncyAmIFZCRl9TQ1JPTEwpID09IDApIHsNCgkJdmItPnZiX3JvZmZzZXQgPSB2 Yi0+dmJfY3Vycm9mZnNldDsNCgl9DQoNCiNpZm5kZWYgU0NfTk9fQ1VUUEFTVEUNCglzeiA9IHZi LT52Yl9oaXN0b3J5X3NpemU7DQoJY3VyID0gdmItPnZiX3JvZmZzZXQgKyB2Yi0+dmJfc2NyX3Np emUudHBfcm93ICsgc3ogLSAxOw0KCWlmICh2dGJ1Zl9pbl90aGlzX3JhbmdlKGN1ciwgdmItPnZi X21hcmtfc3RhcnQudHBfcm93LCBjdXIgKyBvZmZzZXQsIHN6KSB8fA0KCSAgICB2dGJ1Zl9pbl90 aGlzX3JhbmdlKGN1ciwgdmItPnZiX21hcmtfZW5kLnRwX3JvdywgY3VyICsgb2Zmc2V0LCBzeikp IHsNCgkJLyogY2xlYXIgc2NyZWVuIHNlbGVjdGlvbiAqLw0KCQl2Yi0+dmJfbWFya19zdGFydC50 cF9yb3cgPSB2Yi0+dmJfbWFya19lbmQudHBfcm93Ow0KCQl2Yi0+dmJfbWFya19zdGFydC50cF9j b2wgPSB2Yi0+dmJfbWFya19lbmQudHBfY29sOw0KCX0NCiNlbmRpZg0KfQ0KDQp2b2lkDQp2dGhp c3RvcnlfZ2V0cG9zKGNvbnN0IHN0cnVjdCB2dF9idWYgKnZiLCB1bnNpZ25lZCBpbnQgKm9mZnNl dCkNCnsNCg0KCSpvZmZzZXQgPSB2Yi0+dmJfcm9mZnNldDsNCn0NCg0KI2lmbmRlZiBTQ19OT19D VVRQQVNURQkvKiBPbmx5IG1vdXNlIHN1cHBvcnQgdXNlIGl0IG5vdy4gKi8NCi8qIFRyYW5zbGF0 ZSBoaXN0b3J5IHJvdyB0byBjdXJyZW50IHZpZXcgcm93IG51bWJlci4gKi8NCnN0YXRpYyBpbnQN CnZ0YnVmX2h0dyhjb25zdCBzdHJ1Y3QgdnRfYnVmICp2YiwgaW50IHJvdykNCnsNCg0KCS8qDQoJ ICogdG90YWwgMTAwMCByb3dzLg0KCSAqIEhpc3Rvcnkgb2Zmc2V0CXJvZmZzZXQJd2lucm93DQoJ ICoJMjA1CQkyMDAJKCgyMDUgLSAyMDAgKyAxMDAwKSAlIDEwMDApID0gNQ0KCSAqCTkwCQk5OTAJ KCg5MCAtIDk5MCArIDEwMDApICUgMTAwMCkgPSAxMDANCgkgKi8NCglyZXR1cm4gKChyb3cgLSB2 Yi0+dmJfcm9mZnNldCArIHZiLT52Yl9oaXN0b3J5X3NpemUpICUNCgkgICAgdmItPnZiX2hpc3Rv cnlfc2l6ZSk7DQp9DQoNCi8qIFRyYW5zbGF0ZSBjdXJyZW50IHZpZXcgcm93IG51bWJlciB0byBo aXN0b3J5IHJvdy4gKi8NCnN0YXRpYyBpbnQNCnZ0YnVmX3d0aChjb25zdCBzdHJ1Y3QgdnRfYnVm ICp2YiwgaW50IHJvdykNCnsNCg0KCXJldHVybiAoKHZiLT52Yl9yb2Zmc2V0ICsgcm93KSAlIHZi LT52Yl9oaXN0b3J5X3NpemUpOw0KfQ0KDQovKg0KICogVGVzdCBpZiBhbiBpbmRleCBpbiBhIGNp cmN1bGFyIGJ1ZmZlciBpcyB3aXRoaW4gYSByYW5nZS4NCiAqDQogKiBiZWdpbiAtIHN0YXJ0IGlu ZGV4DQogKiBlbmQgLSBlbmQgaW5kZXgNCiAqIHRlc3QgLSB0ZXN0IGluZGV4DQogKiBzeiAtIHNp emUgb2YgY2lyY3VsYXIgYnVmZmVyIHdoZW4gaXQgdHVybnMgb3Zlcg0KICovDQpzdGF0aWMgaW50 DQp2dGJ1Zl9pbl90aGlzX3JhbmdlKGludCBiZWdpbiwgaW50IHRlc3QsIGludCBlbmQsIGludCBz eikNCnsNCg0KCWJlZ2luICU9IHN6Ow0KCWVuZCAlPSBzejsNCg0KCS8qIGNoZWNrIGZvciBpbnZl cnNpb24gKi8NCglpZiAoYmVnaW4gPiBlbmQpDQoJCXJldHVybiAodGVzdCA+PSBiZWdpbiB8fCB0 ZXN0IDwgZW5kKTsNCgllbHNlDQoJCXJldHVybiAodGVzdCA+PSBiZWdpbiAmJiB0ZXN0IDwgZW5k KTsNCn0NCiNlbmRpZg0KDQppbnQNCnZ0YnVmX2lzY3Vyc29yKGNvbnN0IHN0cnVjdCB2dF9idWYg KnZiLCBpbnQgcm93LCBpbnQgY29sKQ0Kew0KI2lmbmRlZiBTQ19OT19DVVRQQVNURQ0KCWludCBz Yywgc3IsIHN6LCBlYywgZXIsIHRtcDsNCiNlbmRpZg0KDQoJaWYgKCh2Yi0+dmJfZmxhZ3MgJiAo VkJGX0NVUlNPUnxWQkZfU0NST0xMKSkgPT0gVkJGX0NVUlNPUiAmJg0KCSAgICAodmItPnZiX2N1 cnNvci50cF9yb3cgPT0gcm93KSAmJiAodmItPnZiX2N1cnNvci50cF9jb2wgPT0gY29sKSkNCgkJ cmV0dXJuICgxKTsNCg0KI2lmbmRlZiBTQ19OT19DVVRQQVNURQ0KCS8qIE1hcmsgY3V0L3Bhc3Rl IHJlZ2lvbi4gKi8NCglpZiAodmItPnZiX21hcmtfc3RhcnQudHBfY29sID09IHZiLT52Yl9tYXJr X2VuZC50cF9jb2wgJiYNCgkgICAgdmItPnZiX21hcmtfc3RhcnQudHBfcm93ID09IHZiLT52Yl9t YXJrX2VuZC50cF9yb3cpDQoJCXJldHVybiAoMCk7DQoNCglzYyA9IHZiLT52Yl9tYXJrX3N0YXJ0 LnRwX2NvbDsNCglzciA9IHZiLT52Yl9tYXJrX3N0YXJ0LnRwX3JvdzsNCgllYyA9IHZiLT52Yl9t YXJrX2VuZC50cF9jb2w7DQoJZXIgPSB2Yi0+dmJfbWFya19lbmQudHBfcm93Ow0KDQoJLyoNCgkg KiBJbmZvcm1hdGlvbiBhYm91dCBpZiB0aGUgc2VsZWN0aW9uIHdhcyBtYWRlIGJvdHRvbS10b3Ag b3INCgkgKiB0b3AtYm90dG9tIGlzIGxvc3QgZHVlIHRvIG1vZHVsbyBhcml0aG1ldGljcyBhbmQg bmVlZHMgdG8NCgkgKiBiZSByZWNvdmVyZWQ6DQoJICovDQoJc3ogPSB2Yi0+dmJfaGlzdG9yeV9z aXplOw0KCXRtcCA9IChzeiArIGVyIC0gc3IpICUgc3o7DQoJcm93ID0gdnRidWZfd3RoKHZiLCBy b3cpOw0KDQoJLyogU3dhcCBzdGFydCBhbmQgZW5kIGlmIHN0YXJ0ID4gZW5kICovDQoJaWYgKCgy ICogdG1wKSA+IHN6IHx8ICh0bXAgPT0gMCAmJiBzYyA+IGVjKSkgew0KCQl0bXAgPSBzYzsgc2Mg PSBlYzsgZWMgPSB0bXA7DQoJCXRtcCA9IHNyOyBzciA9IGVyOyBlciA9IHRtcDsNCgl9DQoNCglp ZiAodnRidWZfaW5fdGhpc19yYW5nZShQT1NfSU5ERVgoc2MsIHNyKSwgUE9TX0lOREVYKGNvbCwg cm93KSwNCgkgICAgUE9TX0lOREVYKGVjLCBlciksIFBPU19JTkRFWCgwLCBzeikpKQ0KCQlyZXR1 cm4gKDEpOw0KI2VuZGlmDQoNCglyZXR1cm4gKDApOw0KfQ0KDQp2b2lkDQp2dGJ1Zl9sb2NrKHN0 cnVjdCB2dF9idWYgKnZiKQ0Kew0KDQoJVlRCVUZfTE9DSyh2Yik7DQp9DQoNCnZvaWQNCnZ0YnVm X3VubG9jayhzdHJ1Y3QgdnRfYnVmICp2YikNCnsNCg0KCVZUQlVGX1VOTE9DSyh2Yik7DQp9DQoN CnZvaWQNCnZ0YnVmX2RpcnR5KHN0cnVjdCB2dF9idWYgKnZiLCBjb25zdCB0ZXJtX3JlY3RfdCAq YXJlYSkNCnsNCg0KCWlmICh2Yi0+dmJfZGlydHlyZWN0LnRyX2JlZ2luLnRwX3JvdyA+IGFyZWEt PnRyX2JlZ2luLnRwX3JvdykNCgkJdmItPnZiX2RpcnR5cmVjdC50cl9iZWdpbi50cF9yb3cgPSBh cmVhLT50cl9iZWdpbi50cF9yb3c7DQoJaWYgKHZiLT52Yl9kaXJ0eXJlY3QudHJfYmVnaW4udHBf Y29sID4gYXJlYS0+dHJfYmVnaW4udHBfY29sKQ0KCQl2Yi0+dmJfZGlydHlyZWN0LnRyX2JlZ2lu LnRwX2NvbCA9IGFyZWEtPnRyX2JlZ2luLnRwX2NvbDsNCglpZiAodmItPnZiX2RpcnR5cmVjdC50 cl9lbmQudHBfcm93IDwgYXJlYS0+dHJfZW5kLnRwX3JvdykNCgkJdmItPnZiX2RpcnR5cmVjdC50 cl9lbmQudHBfcm93ID0gYXJlYS0+dHJfZW5kLnRwX3JvdzsNCglpZiAodmItPnZiX2RpcnR5cmVj dC50cl9lbmQudHBfY29sIDwgYXJlYS0+dHJfZW5kLnRwX2NvbCkNCgkJdmItPnZiX2RpcnR5cmVj dC50cl9lbmQudHBfY29sID0gYXJlYS0+dHJfZW5kLnRwX2NvbDsNCn0NCg0Kc3RhdGljIGlubGlu ZSB2b2lkDQp2dGJ1Zl9kaXJ0eV9jZWxsKHN0cnVjdCB2dF9idWYgKnZiLCBjb25zdCB0ZXJtX3Bv c190ICpwKQ0Kew0KCXRlcm1fcmVjdF90IGFyZWE7DQoNCglhcmVhLnRyX2JlZ2luID0gKnA7DQoJ YXJlYS50cl9lbmQudHBfcm93ID0gcC0+dHBfcm93ICsgMTsNCglhcmVhLnRyX2VuZC50cF9jb2wg PSBwLT50cF9jb2wgKyAxOw0KCXZ0YnVmX2RpcnR5KHZiLCAmYXJlYSk7DQp9DQoNCnN0YXRpYyB2 b2lkDQp2dGJ1Zl9tYWtlX3VuZGlydHkoc3RydWN0IHZ0X2J1ZiAqdmIpDQp7DQoNCgl2Yi0+dmJf ZGlydHlyZWN0LnRyX2JlZ2luID0gdmItPnZiX3Njcl9zaXplOw0KCXZiLT52Yl9kaXJ0eXJlY3Qu dHJfZW5kLnRwX3JvdyA9IHZiLT52Yl9kaXJ0eXJlY3QudHJfZW5kLnRwX2NvbCA9IDA7DQp9DQoN CnZvaWQNCnZ0YnVmX3VuZGlydHkoc3RydWN0IHZ0X2J1ZiAqdmIsIHRlcm1fcmVjdF90ICpyKQ0K ew0KDQoJKnIgPSB2Yi0+dmJfZGlydHlyZWN0Ow0KCXZ0YnVmX21ha2VfdW5kaXJ0eSh2Yik7DQp9 DQoNCnZvaWQNCnZ0YnVmX2NvcHkoc3RydWN0IHZ0X2J1ZiAqdmIsIGNvbnN0IHRlcm1fcmVjdF90 ICpyLCBjb25zdCB0ZXJtX3Bvc190ICpwMikNCnsNCgljb25zdCB0ZXJtX3Bvc190ICpwMSA9ICZy LT50cl9iZWdpbjsNCgl0ZXJtX3JlY3RfdCBhcmVhOw0KCXVuc2lnbmVkIGludCByb3dzLCBjb2xz Ow0KCWludCBwciwgcmRpZmY7DQoNCglLQVNTRVJUKHItPnRyX2JlZ2luLnRwX3JvdyA8IHZiLT52 Yl9zY3Jfc2l6ZS50cF9yb3csDQoJICAgICgidnRidWZfY29weSBiZWdpbi50cF9yb3cgJWQgbXVz dCBiZSBsZXNzIHRoYW4gc2NyZWVuIHdpZHRoICVkIiwNCgkJci0+dHJfYmVnaW4udHBfcm93LCB2 Yi0+dmJfc2NyX3NpemUudHBfcm93KSk7DQoJS0FTU0VSVChyLT50cl9iZWdpbi50cF9jb2wgPCB2 Yi0+dmJfc2NyX3NpemUudHBfY29sLA0KCSAgICAoInZ0YnVmX2NvcHkgYmVnaW4udHBfY29sICVk IG11c3QgYmUgbGVzcyB0aGFuIHNjcmVlbiBoZWlnaHQgJWQiLA0KCQlyLT50cl9iZWdpbi50cF9j b2wsIHZiLT52Yl9zY3Jfc2l6ZS50cF9jb2wpKTsNCg0KCUtBU1NFUlQoci0+dHJfZW5kLnRwX3Jv dyA8PSB2Yi0+dmJfc2NyX3NpemUudHBfcm93LA0KCSAgICAoInZ0YnVmX2NvcHkgZW5kLnRwX3Jv dyAlZCBtdXN0IGJlIGxlc3MgdGhhbiBzY3JlZW4gd2lkdGggJWQiLA0KCQlyLT50cl9lbmQudHBf cm93LCB2Yi0+dmJfc2NyX3NpemUudHBfcm93KSk7DQoJS0FTU0VSVChyLT50cl9lbmQudHBfY29s IDw9IHZiLT52Yl9zY3Jfc2l6ZS50cF9jb2wsDQoJICAgICgidnRidWZfY29weSBlbmQudHBfY29s ICVkIG11c3QgYmUgbGVzcyB0aGFuIHNjcmVlbiBoZWlnaHQgJWQiLA0KCQlyLT50cl9lbmQudHBf Y29sLCB2Yi0+dmJfc2NyX3NpemUudHBfY29sKSk7DQoNCglLQVNTRVJUKHAyLT50cF9yb3cgPCB2 Yi0+dmJfc2NyX3NpemUudHBfcm93LA0KCSAgICAoInZ0YnVmX2NvcHkgdHBfcm93ICVkIG11c3Qg YmUgbGVzcyB0aGFuIHNjcmVlbiB3aWR0aCAlZCIsDQoJCXAyLT50cF9yb3csIHZiLT52Yl9zY3Jf c2l6ZS50cF9yb3cpKTsNCglLQVNTRVJUKHAyLT50cF9jb2wgPCB2Yi0+dmJfc2NyX3NpemUudHBf Y29sLA0KCSAgICAoInZ0YnVmX2NvcHkgdHBfY29sICVkIG11c3QgYmUgbGVzcyB0aGFuIHNjcmVl biBoZWlnaHQgJWQiLA0KCQlwMi0+dHBfY29sLCB2Yi0+dmJfc2NyX3NpemUudHBfY29sKSk7DQoN Cglyb3dzID0gci0+dHJfZW5kLnRwX3JvdyAtIHItPnRyX2JlZ2luLnRwX3JvdzsNCglyZGlmZiA9 IHItPnRyX2JlZ2luLnRwX3JvdyAtIHAyLT50cF9yb3c7DQoJY29scyA9IHItPnRyX2VuZC50cF9j b2wgLSByLT50cl9iZWdpbi50cF9jb2w7DQoJaWYgKHItPnRyX2JlZ2luLnRwX3JvdyA+IHAyLT50 cF9yb3cgJiYgci0+dHJfYmVnaW4udHBfY29sID09IDAgJiYNCgkgICAgci0+dHJfZW5kLnRwX2Nv bCA9PSB2Yi0+dmJfc2NyX3NpemUudHBfY29sICYmIC8qIEZ1bGwgcm93LiAqLw0KCSAgICAocm93 cyArIHJkaWZmKSA9PSB2Yi0+dmJfc2NyX3NpemUudHBfcm93ICYmIC8qIFdob2xlIHNjcmVlbi4g Ki8NCgkgICAgcmRpZmYgPiAwKSB7IC8qIE9ubHkgZm9yd2FyZCBkaXJlY3Rpb24uIERvIG5vdCBl YXQgaGlzdG9yeS4gKi8NCgkJdnRoaXN0b3J5X2FkZGxpbmVzKHZiLCByZGlmZik7DQoJfSBlbHNl IGlmIChwMi0+dHBfcm93IDwgcDEtPnRwX3Jvdykgew0KCQkvKiBIYW5kbGUgb3ZlcmxhcHBpbmcg Y29waWVzIG9mIGxpbmUgc2VnbWVudHMuICovDQoJCS8qIE1vdmUgZGF0YSB1cC4gKi8NCgkJZm9y IChwciA9IDA7IHByIDwgcm93czsgcHIrKykNCgkJCW1lbW1vdmUoDQoJCQkgICAgJlZUQlVGX0ZJ RUxEKHZiLCBwMi0+dHBfcm93ICsgcHIsIHAyLT50cF9jb2wpLA0KCQkJICAgICZWVEJVRl9GSUVM RCh2YiwgcDEtPnRwX3JvdyArIHByLCBwMS0+dHBfY29sKSwNCgkJCSAgICBjb2xzICogc2l6ZW9m KHRlcm1fY2hhcl90KSk7DQoJfSBlbHNlIHsNCgkJLyogTW92ZSBkYXRhIGRvd24uICovDQoJCWZv ciAocHIgPSByb3dzIC0gMTsgcHIgPj0gMDsgcHItLSkNCgkJCW1lbW1vdmUoDQoJCQkgICAgJlZU QlVGX0ZJRUxEKHZiLCBwMi0+dHBfcm93ICsgcHIsIHAyLT50cF9jb2wpLA0KCQkJICAgICZWVEJV Rl9GSUVMRCh2YiwgcDEtPnRwX3JvdyArIHByLCBwMS0+dHBfY29sKSwNCgkJCSAgICBjb2xzICog c2l6ZW9mKHRlcm1fY2hhcl90KSk7DQoJfQ0KDQoJYXJlYS50cl9iZWdpbiA9ICpwMjsNCglhcmVh LnRyX2VuZC50cF9yb3cgPSBNSU4ocDItPnRwX3JvdyArIHJvd3MsIHZiLT52Yl9zY3Jfc2l6ZS50 cF9yb3cpOw0KCWFyZWEudHJfZW5kLnRwX2NvbCA9IE1JTihwMi0+dHBfY29sICsgY29scywgdmIt PnZiX3Njcl9zaXplLnRwX2NvbCk7DQoJdnRidWZfZGlydHkodmIsICZhcmVhKTsNCn0NCg0Kc3Rh dGljIHZvaWQNCnZ0YnVmX2RvX2ZpbGwoc3RydWN0IHZ0X2J1ZiAqdmIsIGNvbnN0IHRlcm1fcmVj dF90ICpyLCB0ZXJtX2NoYXJfdCBjKQ0Kew0KCXVuc2lnbmVkIGludCBwciwgcGM7DQoJdGVybV9j aGFyX3QgKnJvdzsNCg0KCWZvciAocHIgPSByLT50cl9iZWdpbi50cF9yb3c7IHByIDwgci0+dHJf ZW5kLnRwX3JvdzsgcHIrKykgew0KCQlyb3cgPSB2Yi0+dmJfcm93c1sodmItPnZiX2N1cnJvZmZz ZXQgKyBwcikgJQ0KCQkgICAgVlRCVUZfTUFYX0hFSUdIVCh2YildOw0KCQlmb3IgKHBjID0gci0+ dHJfYmVnaW4udHBfY29sOyBwYyA8IHItPnRyX2VuZC50cF9jb2w7IHBjKyspIHsNCgkJCXJvd1tw Y10gPSBjOw0KCQl9DQoJfQ0KfQ0KDQp2b2lkDQp2dGJ1Zl9maWxsKHN0cnVjdCB2dF9idWYgKnZi LCBjb25zdCB0ZXJtX3JlY3RfdCAqciwgdGVybV9jaGFyX3QgYykNCnsNCg0KCUtBU1NFUlQoci0+ dHJfYmVnaW4udHBfcm93IDwgdmItPnZiX3Njcl9zaXplLnRwX3JvdywNCgkgICAgKCJ2dGJ1Zl9m aWxsIGJlZ2luLnRwX3JvdyAlZCBtdXN0IGJlIDwgc2NyZWVuIGhlaWdodCAlZCIsDQoJCXItPnRy X2JlZ2luLnRwX3JvdywgdmItPnZiX3Njcl9zaXplLnRwX3JvdykpOw0KCUtBU1NFUlQoci0+dHJf YmVnaW4udHBfY29sIDwgdmItPnZiX3Njcl9zaXplLnRwX2NvbCwNCgkgICAgKCJ2dGJ1Zl9maWxs IGJlZ2luLnRwX2NvbCAlZCBtdXN0IGJlIDwgc2NyZWVuIHdpZHRoICVkIiwNCgkJci0+dHJfYmVn aW4udHBfY29sLCB2Yi0+dmJfc2NyX3NpemUudHBfY29sKSk7DQoNCglLQVNTRVJUKHItPnRyX2Vu ZC50cF9yb3cgPD0gdmItPnZiX3Njcl9zaXplLnRwX3JvdywNCgkgICAgKCJ2dGJ1Zl9maWxsIGVu ZC50cF9yb3cgJWQgbXVzdCBiZSA8PSBzY3JlZW4gaGVpZ2h0ICVkIiwNCgkJci0+dHJfZW5kLnRw X3JvdywgdmItPnZiX3Njcl9zaXplLnRwX3JvdykpOw0KCUtBU1NFUlQoci0+dHJfZW5kLnRwX2Nv bCA8PSB2Yi0+dmJfc2NyX3NpemUudHBfY29sLA0KCSAgICAoInZ0YnVmX2ZpbGwgZW5kLnRwX2Nv bCAlZCBtdXN0IGJlIDw9IHNjcmVlbiB3aWR0aCAlZCIsDQoJCXItPnRyX2VuZC50cF9jb2wsIHZi LT52Yl9zY3Jfc2l6ZS50cF9jb2wpKTsNCg0KCXZ0YnVmX2RvX2ZpbGwodmIsIHIsIGMpOw0KCXZ0 YnVmX2RpcnR5KHZiLCByKTsNCn0NCg0Kc3RhdGljIHZvaWQNCnZ0YnVmX2luaXRfcm93cyhzdHJ1 Y3QgdnRfYnVmICp2YikNCnsNCglpbnQgcjsNCg0KCXZiLT52Yl9oaXN0b3J5X3NpemUgPSBNQVgo dmItPnZiX2hpc3Rvcnlfc2l6ZSwgdmItPnZiX3Njcl9zaXplLnRwX3Jvdyk7DQoNCglmb3IgKHIg PSAwOyByIDwgdmItPnZiX2hpc3Rvcnlfc2l6ZTsgcisrKQ0KCQl2Yi0+dmJfcm93c1tyXSA9ICZ2 Yi0+dmJfYnVmZmVyW3IgKiB2Yi0+dmJfc2NyX3NpemUudHBfY29sXTsNCn0NCg0Kc3RhdGljIHZv aWQNCnZ0YnVmX2RvX2NsZWFyaGlzdG9yeShzdHJ1Y3QgdnRfYnVmICp2YikNCnsNCgl0ZXJtX3Jl Y3RfdCByZWN0Ow0KCWNvbnN0IHRla2VuX2F0dHJfdCAqYTsNCgl0ZXJtX2NoYXJfdCBjaDsNCg0K CWEgPSB0ZWtlbl9nZXRfY3VyYXR0cigmdmItPnZiX3Rlcm1pbmFsLT50bV9lbXVsYXRvcik7DQoJ Y2ggPSBUQ09MT1JfRkcoYS0+dGFfZmdjb2xvcikgfCBUQ09MT1JfQkcoYS0+dGFfYmdjb2xvcik7 DQoNCglyZWN0LnRyX2JlZ2luLnRwX3JvdyA9IHJlY3QudHJfYmVnaW4udHBfY29sID0gMDsNCgly ZWN0LnRyX2VuZC50cF9jb2wgPSB2Yi0+dmJfc2NyX3NpemUudHBfY29sOw0KCXJlY3QudHJfZW5k LnRwX3JvdyA9IHZiLT52Yl9oaXN0b3J5X3NpemU7DQoNCgl2dGJ1Zl9kb19maWxsKHZiLCAmcmVj dCwgVlRCVUZfU1BBQ0VfQ0hBUihjaCkpOw0KfQ0KDQpzdGF0aWMgdm9pZA0KdnRidWZfcmVzZXRf c2Nyb2xsYmFjayhzdHJ1Y3QgdnRfYnVmICp2YikNCnsNCgl2Yi0+dmJfcm9mZnNldCA9IDA7DQoJ dmItPnZiX2N1cnJvZmZzZXQgPSAwOw0KCXZiLT52Yl9tYXJrX3N0YXJ0LnRwX3JvdyA9IDA7DQoJ dmItPnZiX21hcmtfc3RhcnQudHBfY29sID0gMDsNCgl2Yi0+dmJfbWFya19lbmQudHBfcm93ID0g MDsNCgl2Yi0+dmJfbWFya19lbmQudHBfY29sID0gMDsNCn0NCg0Kdm9pZA0KdnRidWZfaW5pdF9l YXJseShzdHJ1Y3QgdnRfYnVmICp2YikNCnsNCgl2Yi0+dmJfZmxhZ3MgfD0gVkJGX0NVUlNPUjsN Cgl2dGJ1Zl9yZXNldF9zY3JvbGxiYWNrKHZiKTsNCgl2dGJ1Zl9pbml0X3Jvd3ModmIpOw0KCXZ0 YnVmX2RvX2NsZWFyaGlzdG9yeSh2Yik7DQoJdnRidWZfbWFrZV91bmRpcnR5KHZiKTsNCglpZiAo KHZiLT52Yl9mbGFncyAmIFZCRl9NVFhfSU5JVCkgPT0gMCkgew0KCQltdHhfaW5pdCgmdmItPnZi X2xvY2ssICJ2dGJ1ZiIsIE5VTEwsIE1UWF9TUElOKTsNCgkJdmItPnZiX2ZsYWdzIHw9IFZCRl9N VFhfSU5JVDsNCgl9DQp9DQoNCnZvaWQNCnZ0YnVmX2luaXQoc3RydWN0IHZ0X2J1ZiAqdmIsIGNv bnN0IHRlcm1fcG9zX3QgKnApDQp7DQoJaW50IHN6Ow0KDQoJdmItPnZiX3Njcl9zaXplID0gKnA7 DQoJdmItPnZiX2hpc3Rvcnlfc2l6ZSA9IFZCRl9ERUZBVUxUX0hJU1RPUllfU0laRTsNCg0KCWlm ICgodmItPnZiX2ZsYWdzICYgVkJGX1NUQVRJQykgPT0gMCkgew0KCQlzeiA9IHZiLT52Yl9oaXN0 b3J5X3NpemUgKiBwLT50cF9jb2wgKiBzaXplb2YodGVybV9jaGFyX3QpOw0KCQl2Yi0+dmJfYnVm ZmVyID0gbWFsbG9jKHN6LCBNX1ZUQlVGLCBNX1dBSVRPSyB8IE1fWkVSTyk7DQoNCgkJc3ogPSB2 Yi0+dmJfaGlzdG9yeV9zaXplICogc2l6ZW9mKHRlcm1fY2hhcl90ICopOw0KCQl2Yi0+dmJfcm93 cyA9IG1hbGxvYyhzeiwgTV9WVEJVRiwgTV9XQUlUT0sgfCBNX1pFUk8pOw0KCX0NCg0KCXZ0YnVm X2luaXRfZWFybHkodmIpOw0KfQ0KDQp2b2lkDQp2dGJ1Zl9jbGVhcmhpc3Rvcnkoc3RydWN0IHZ0 X2J1ZiAqdmIpDQp7DQoJVlRCVUZfTE9DSyh2Yik7DQoJdnRidWZfZG9fY2xlYXJoaXN0b3J5KHZi KTsNCgl2dGJ1Zl9yZXNldF9zY3JvbGxiYWNrKHZiKTsNCgl2Yi0+dmJfZmxhZ3MgJj0gflZCRl9I SVNUT1JZX0ZVTEw7DQoJVlRCVUZfVU5MT0NLKHZiKTsNCn0NCg0Kdm9pZA0KdnRidWZfc2V0aGlz dG9yeV9zaXplKHN0cnVjdCB2dF9idWYgKnZiLCB1bnNpZ25lZCBpbnQgc2l6ZSkNCnsNCgl0ZXJt X3Bvc190IHA7DQoNCgkvKiBXaXRoIHNhbWUgc2l6ZSAqLw0KCXAudHBfcm93ID0gdmItPnZiX3Nj cl9zaXplLnRwX3JvdzsNCglwLnRwX2NvbCA9IHZiLT52Yl9zY3Jfc2l6ZS50cF9jb2w7DQoJdnRi dWZfZ3Jvdyh2YiwgJnAsIHNpemUpOw0KfQ0KDQp2b2lkDQp2dGJ1Zl9ncm93KHN0cnVjdCB2dF9i dWYgKnZiLCBjb25zdCB0ZXJtX3Bvc190ICpwLCB1bnNpZ25lZCBpbnQgaGlzdG9yeV9zaXplKQ0K ew0KCXRlcm1fY2hhcl90ICpvbGQsICpuZXcsICoqcm93cywgKipvbGRyb3dzLCAqKmNvcHlyb3dz LCAqcm93LCAqb2xkcm93Ow0KCXVuc2lnbmVkIGludCB3LCBoLCBjLCByLCBvbGRfaGlzdG9yeV9z aXplOw0KCXNpemVfdCBidWZzaXplLCByb3dzc2l6ZTsNCglpbnQgaGlzdG9yeV9mdWxsOw0KCWNv bnN0IHRla2VuX2F0dHJfdCAqYTsNCgl0ZXJtX2NoYXJfdCBjaDsNCg0KCWEgPSB0ZWtlbl9nZXRf Y3VyYXR0cigmdmItPnZiX3Rlcm1pbmFsLT50bV9lbXVsYXRvcik7DQoJY2ggPSBUQ09MT1JfRkco YS0+dGFfZmdjb2xvcikgfCBUQ09MT1JfQkcoYS0+dGFfYmdjb2xvcik7DQoNCgloaXN0b3J5X3Np emUgPSBNQVgoaGlzdG9yeV9zaXplLCBwLT50cF9yb3cpOw0KDQoJLyogQWxsb2NhdGUgbmV3IGJ1 ZmZlci4gKi8NCglidWZzaXplID0gaGlzdG9yeV9zaXplICogcC0+dHBfY29sICogc2l6ZW9mKHRl cm1fY2hhcl90KTsNCgluZXcgPSBtYWxsb2MoYnVmc2l6ZSwgTV9WVEJVRiwgTV9XQUlUT0sgfCBN X1pFUk8pOw0KCXJvd3NzaXplID0gaGlzdG9yeV9zaXplICogc2l6ZW9mKHRlcm1fcG9zX3QgKik7 DQoJcm93cyA9IG1hbGxvYyhyb3dzc2l6ZSwgTV9WVEJVRiwgTV9XQUlUT0sgfCBNX1pFUk8pOw0K DQoJLyogVG9nZ2xlIGl0LiAqLw0KCVZUQlVGX0xPQ0sodmIpOw0KCW9sZCA9IHZiLT52Yl9mbGFn cyAmIFZCRl9TVEFUSUMgPyBOVUxMIDogdmItPnZiX2J1ZmZlcjsNCglvbGRyb3dzID0gdmItPnZi X2ZsYWdzICYgVkJGX1NUQVRJQyA/IE5VTEwgOiB2Yi0+dmJfcm93czsNCgljb3B5cm93cyA9IHZi LT52Yl9yb3dzOw0KDQoJdyA9IHZiLT52Yl9zY3Jfc2l6ZS50cF9jb2w7DQoJaCA9IHZiLT52Yl9z Y3Jfc2l6ZS50cF9yb3c7DQoJb2xkX2hpc3Rvcnlfc2l6ZSA9IHZiLT52Yl9oaXN0b3J5X3NpemU7 DQoJaGlzdG9yeV9mdWxsID0gdmItPnZiX2ZsYWdzICYgVkJGX0hJU1RPUllfRlVMTCB8fA0KCSAg ICB2Yi0+dmJfY3Vycm9mZnNldCArIGggPj0gaGlzdG9yeV9zaXplOw0KDQoJdmItPnZiX2hpc3Rv cnlfc2l6ZSA9IGhpc3Rvcnlfc2l6ZTsNCgl2Yi0+dmJfYnVmZmVyID0gbmV3Ow0KCXZiLT52Yl9y b3dzID0gcm93czsNCgl2Yi0+dmJfZmxhZ3MgJj0gflZCRl9TVEFUSUM7DQoJdmItPnZiX3Njcl9z aXplID0gKnA7DQoJdnRidWZfaW5pdF9yb3dzKHZiKTsNCg0KCS8qDQoJICogQ29weSByb3dzIHRv IHRoZSBuZXcgYnVmZmVyLiBUaGUgZmlyc3Qgcm93IGluIHRoZSBoaXN0b3J5DQoJICogaXMgYmFj ayB0byBpbmRleCAwLCBpZS4gdGhlIG5ldyBidWZmZXIgZG9lc24ndCBjeWNsZS4NCgkgKi8NCglp ZiAoaGlzdG9yeV9zaXplID4gb2xkX2hpc3Rvcnlfc2l6ZSkgew0KCQlmb3IgKHIgPSAwOyByIDwg b2xkX2hpc3Rvcnlfc2l6ZTsgcisrKSB7DQoJCQlyb3cgPSByb3dzW3JdOw0KDQoJCQkvKiBDb21w dXRlIHRoZSBjb3JyZXNwb25kaW5nIHJvdyBpbiB0aGUgb2xkIGJ1ZmZlci4gKi8NCgkJCWlmICho aXN0b3J5X2Z1bGwpDQoJCQkJLyoNCgkJCQkgKiBUaGUgYnVmZmVyIGlzIGZ1bGwsIHRoZSAidG9w IiByb3cgaXMNCgkJCQkgKiB0aGUgb25lIGp1c3QgYWZ0ZXIgdGhlIHZpZXdhYmxlIGFyZWENCgkJ CQkgKiAoY3Vycm9mZnNldCArIHZpZXdhYmxlIGhlaWdodCkgaW4gdGhlDQoJCQkJICogY3ljbGlu ZyBidWZmZXIuIFRoZSBjb3JyZXNwb25kaW5nIHJvdw0KCQkJCSAqIGlzIGNvbXB1dGVkIGZyb20g dGhpcyB0b3Agcm93Lg0KCQkJCSAqLw0KCQkJCW9sZHJvdyA9IGNvcHlyb3dzWw0KCQkJCSAgICAo dmItPnZiX2N1cnJvZmZzZXQgKyBoICsgcikgJQ0KCQkJCSAgICBvbGRfaGlzdG9yeV9zaXplXTsN CgkJCWVsc2UNCgkJCQkvKg0KCQkJCSAqIFRoZSBidWZmZXIgaXMgbm90IGZ1bGwsIHRoZXJlZm9y ZSwNCgkJCQkgKiB3ZSBkaWRuJ3QgY3ljbGUgYWxyZWFkeS4gVGhlDQoJCQkJICogY29ycmVzcG9u ZGluZyByb3dzIGFyZSB0aGUgc2FtZSBpbg0KCQkJCSAqIGJvdGggYnVmZmVycy4NCgkJCQkgKi8N CgkJCQlvbGRyb3cgPSBjb3B5cm93c1tyXTsNCg0KCQkJbWVtbW92ZShyb3csIG9sZHJvdywNCgkJ CSAgICBNSU4ocC0+dHBfY29sLCB3KSAqIHNpemVvZih0ZXJtX2NoYXJfdCkpOw0KDQoJCQkvKg0K CQkJICogWFhYIFZUQlVGX1NQQUNFX0NIQVIoVEVSTUlOQUxfTk9STV9BVFRSKSB3aWxsDQoJCQkg KiBleHRlbmRlZCBsaW5lcyBvZiBrZXJuZWwgdGV4dCB1c2luZyB0aGUgd3JvbmcNCgkJCSAqIGJh Y2tncm91bmQgY29sb3IuDQoJCQkgKi8NCgkJCWZvciAoYyA9IE1JTihwLT50cF9jb2wsIHcpOyBj IDwgcC0+dHBfY29sOyBjKyspIHsNCgkJCQlyb3dbY10gPSBWVEJVRl9TUEFDRV9DSEFSKGNoKTsN CgkJCX0NCgkJfQ0KDQoJCS8qIEZpbGwgcmVtYWluaW5nIHJvd3MuICovDQoJCWZvciAociA9IG9s ZF9oaXN0b3J5X3NpemU7IHIgPCBoaXN0b3J5X3NpemU7IHIrKykgew0KCQkJcm93ID0gcm93c1ty XTsNCgkJCWZvciAoYyA9IE1JTihwLT50cF9jb2wsIHcpOyBjIDwgcC0+dHBfY29sOyBjKyspIHsN CgkJCQlyb3dbY10gPSBWVEJVRl9TUEFDRV9DSEFSKGNoKTsNCgkJCX0NCgkJfQ0KDQoJCXZiLT52 Yl9mbGFncyAmPSB+VkJGX0hJU1RPUllfRlVMTDsNCg0KCQkvKg0KCQkgKiBJZiB0aGUgc2NyZWVu IGlzIGFscmVhZHkgZmlsbGVkICh0aGVyZSBhcmUgbm9uLXZpc2libGUgbGluZXMNCgkJICogYWJv dmUgdGhlIGN1cnJlbnQgdmlld2FibGUgYXJlYSksIGFkanVzdCBjdXJyb2Zmc2V0IHRvIHRoZQ0K CQkgKiBuZXcgdmlld2FibGUgYXJlYS4NCgkJICoNCgkJICogSWYgdGhlIG9sZCBidWZmZXIgd2Fz IGZ1bGwsIHNldCBjdXJyb2Zmc2V0IHRvIHRoZQ0KCQkgKiA8aD50aCBtb3N0IHJlY2VudCBsaW5l IG9mIGhpc3RvcnkgaW4gdGhlIG5ldywgbm9uLWN5Y2xlZA0KCQkgKiBidWZmZXIuIE90aGVyd2lz ZSwgaXQgZGlkbid0IGN5Y2xlLCBzbyB0aGUgb2xkIGN1cnJvZmZzZXQNCgkJICogaXMgdGhlIHNh bWUgaW4gdGhlIG5ldyBidWZmZXIuDQoJCSAqLw0KCQlpZiAoaGlzdG9yeV9mdWxsKQ0KCQkJdmIt PnZiX2N1cnJvZmZzZXQgPSBvbGRfaGlzdG9yeV9zaXplIC0gaDsNCgl9IGVsc2Ugew0KCQkvKg0K CQkgKiAob2xkX2hpc3Rvcnlfc2l6ZSAtIGhpc3Rvcnlfc2l6ZSkgbGluZXMgb2YgaGlzdG9yeSBh cmUNCgkJICogZHJvcHBlZC4NCgkJICovDQoJCWZvciAociA9IDA7IHIgPCBoaXN0b3J5X3NpemU7 IHIrKykgew0KCQkJcm93ID0gcm93c1tyXTsNCg0KCQkJLyoNCgkJCSAqIENvbXB1dGUgdGhlIGNv cnJlc3BvbmRpbmcgcm93IGluIHRoZSBvbGQgYnVmZmVyLg0KCQkJICoNCgkJCSAqIFNlZSB0aGUg ZXF1aXZhbGVudCBpZnt9IGJsb2NrIGFib3ZlIGZvciBhbg0KCQkJICogZXhwbGFuYXRpb24uDQoJ CQkgKi8NCgkJCWlmIChoaXN0b3J5X2Z1bGwpDQoJCQkJb2xkcm93ID0gY29weXJvd3NbDQoJCQkJ ICAgICh2Yi0+dmJfY3Vycm9mZnNldCArIGggKyByICsNCgkJCQkgICAgIChvbGRfaGlzdG9yeV9z aXplIC0gaGlzdG9yeV9zaXplKSkgJQ0KCQkJCSAgICBvbGRfaGlzdG9yeV9zaXplXTsNCgkJCWVs c2UNCgkJCQlvbGRyb3cgPSBjb3B5cm93c1tyXTsNCg0KCQkJbWVtbW92ZShyb3csIG9sZHJvdywN CgkJCSAgICBNSU4ocC0+dHBfY29sLCB3KSAqIHNpemVvZih0ZXJtX2NoYXJfdCkpOw0KDQoJCQkv Kg0KCQkJICogWFhYIFZUQlVGX1NQQUNFX0NIQVIoVEVSTUlOQUxfTk9STV9BVFRSKSB3aWxsDQoJ CQkgKiBleHRlbmRlZCBsaW5lcyBvZiBrZXJuZWwgdGV4dCB1c2luZyB0aGUgd3JvbmcNCgkJCSAq IGJhY2tncm91bmQgY29sb3IuDQoJCQkgKi8NCgkJCWZvciAoYyA9IE1JTihwLT50cF9jb2wsIHcp OyBjIDwgcC0+dHBfY29sOyBjKyspIHsNCgkJCQlyb3dbY10gPSBWVEJVRl9TUEFDRV9DSEFSKGNo KTsNCgkJCX0NCgkJfQ0KDQoJCWlmIChoaXN0b3J5X2Z1bGwpIHsNCgkJCXZiLT52Yl9jdXJyb2Zm c2V0ID0gaGlzdG9yeV9zaXplIC0gaDsNCgkJCXZiLT52Yl9mbGFncyB8PSBWQkZfSElTVE9SWV9G VUxMOw0KCQl9DQoJfQ0KDQoJdmItPnZiX3JvZmZzZXQgPSB2Yi0+dmJfY3Vycm9mZnNldDsNCg0K CS8qIEFkanVzdCBjdXJzb3IgcG9zaXRpb24uICovDQoJaWYgKHZiLT52Yl9jdXJzb3IudHBfY29s ID4gcC0+dHBfY29sIC0gMSkNCgkJLyoNCgkJICogTW92ZSBjdXJzb3IgdG8gdGhlIGxhc3QgY29s dW1uLCBpbiBjYXNlIGl0cyBwcmV2aW91cw0KCQkgKiBwb3NpdGlvbiBpcyBvdXRzaWRlIG9mIHRo ZSBuZXcgc2NyZWVuIGFyZWEuDQoJCSAqLw0KCQl2Yi0+dmJfY3Vyc29yLnRwX2NvbCA9IHAtPnRw X2NvbCAtIDE7DQoNCglpZiAodmItPnZiX2N1cnJvZmZzZXQgPiAwIHx8IHZiLT52Yl9jdXJzb3Iu dHBfcm93ID4gcC0+dHBfcm93IC0gMSkNCgkJLyogTW92ZSBjdXJzb3IgdG8gdGhlIGxhc3QgbGlu ZSBvbiB0aGUgc2NyZWVuLiAqLw0KCQl2Yi0+dmJfY3Vyc29yLnRwX3JvdyA9IHAtPnRwX3JvdyAt IDE7DQoNCglWVEJVRl9VTkxPQ0sodmIpOw0KDQoJLyogRGVhbGxvY2F0ZSBvbGQgYnVmZmVyLiAq Lw0KCWZyZWUob2xkLCBNX1ZUQlVGKTsNCglmcmVlKG9sZHJvd3MsIE1fVlRCVUYpOw0KfQ0KDQp2 b2lkDQp2dGJ1Zl9wdXRjaGFyKHN0cnVjdCB2dF9idWYgKnZiLCBjb25zdCB0ZXJtX3Bvc190ICpw LCB0ZXJtX2NoYXJfdCBjKQ0Kew0KCXRlcm1fY2hhcl90ICpyb3c7DQoNCglLQVNTRVJUKHAtPnRw X3JvdyA8IHZiLT52Yl9zY3Jfc2l6ZS50cF9yb3csDQoJICAgICgidnRidWZfcHV0Y2hhciB0cF9y b3cgJWQgbXVzdCBiZSBsZXNzIHRoYW4gc2NyZWVuIHdpZHRoICVkIiwNCgkJcC0+dHBfcm93LCB2 Yi0+dmJfc2NyX3NpemUudHBfcm93KSk7DQoJS0FTU0VSVChwLT50cF9jb2wgPCB2Yi0+dmJfc2Ny X3NpemUudHBfY29sLA0KCSAgICAoInZ0YnVmX3B1dGNoYXIgdHBfY29sICVkIG11c3QgYmUgbGVz cyB0aGFuIHNjcmVlbiBoZWlnaHQgJWQiLA0KCQlwLT50cF9jb2wsIHZiLT52Yl9zY3Jfc2l6ZS50 cF9jb2wpKTsNCg0KCXJvdyA9IHZiLT52Yl9yb3dzWyh2Yi0+dmJfY3Vycm9mZnNldCArIHAtPnRw X3JvdykgJQ0KCSAgICBWVEJVRl9NQVhfSEVJR0hUKHZiKV07DQoJaWYgKHJvd1twLT50cF9jb2xd ICE9IGMpIHsNCgkJcm93W3AtPnRwX2NvbF0gPSBjOw0KCQl2dGJ1Zl9kaXJ0eV9jZWxsKHZiLCBw KTsNCgl9DQp9DQoNCnZvaWQNCnZ0YnVmX2N1cnNvcl9wb3NpdGlvbihzdHJ1Y3QgdnRfYnVmICp2 YiwgY29uc3QgdGVybV9wb3NfdCAqcCkNCnsNCglpZiAodmItPnZiX2ZsYWdzICYgVkJGX0NVUlNP Uikgew0KCQl2dGJ1Zl9kaXJ0eV9jZWxsKHZiLCAmdmItPnZiX2N1cnNvcik7DQoJCXZiLT52Yl9j dXJzb3IgPSAqcDsNCgkJdnRidWZfZGlydHlfY2VsbCh2YiwgJnZiLT52Yl9jdXJzb3IpOw0KCX0g ZWxzZSB7DQoJCXZiLT52Yl9jdXJzb3IgPSAqcDsNCgl9DQp9DQoNCiNpZm5kZWYgU0NfTk9fQ1VU UEFTVEUNCnN0YXRpYyB2b2lkDQp2dGJ1Zl9mbHVzaF9tYXJrKHN0cnVjdCB2dF9idWYgKnZiKQ0K ew0KCXRlcm1fcmVjdF90IGFyZWE7DQoJaW50IHMsIGU7DQoNCgkvKiBOb3RpZnkgcmVuZGVyZXIg dG8gdXBkYXRlIG1hcmtlZCByZWdpb24uICovDQoJaWYgKCh2Yi0+dmJfbWFya19zdGFydC50cF9j b2wgIT0gdmItPnZiX21hcmtfZW5kLnRwX2NvbCkgfHwNCgkgICAgKHZiLT52Yl9tYXJrX3N0YXJ0 LnRwX3JvdyAhPSB2Yi0+dmJfbWFya19lbmQudHBfcm93KSkgew0KCQlzID0gdnRidWZfaHR3KHZi LCB2Yi0+dmJfbWFya19zdGFydC50cF9yb3cpOw0KCQllID0gdnRidWZfaHR3KHZiLCB2Yi0+dmJf bWFya19lbmQudHBfcm93KTsNCg0KCQlhcmVhLnRyX2JlZ2luLnRwX2NvbCA9IDA7DQoJCWFyZWEu dHJfYmVnaW4udHBfcm93ID0gTUlOKHMsIGUpOw0KDQoJCWFyZWEudHJfZW5kLnRwX2NvbCA9IHZi LT52Yl9zY3Jfc2l6ZS50cF9jb2w7DQoJCWFyZWEudHJfZW5kLnRwX3JvdyA9IE1BWChzLCBlKSAr IDE7DQoNCgkJVlRCVUZfTE9DSyh2Yik7DQoJCXZ0YnVmX2RpcnR5KHZiLCAmYXJlYSk7DQoJCVZU QlVGX1VOTE9DSyh2Yik7DQoJfQ0KfQ0KDQppbnQNCnZ0YnVmX2dldF9tYXJrZWRfbGVuKHN0cnVj dCB2dF9idWYgKnZiKQ0Kew0KCWludCBlaSwgc2ksIHN6Ow0KCXRlcm1fcG9zX3QgcywgZTsNCg0K CS8qIFN3YXAgYWNjb3JkaW5nIHRvIHdpbmRvdyBjb29yZGluYXRlcy4gKi8NCglpZiAoUE9TX0lO REVYKHZ0YnVmX2h0dyh2YiwgdmItPnZiX21hcmtfc3RhcnQudHBfcm93KSwNCgkgICAgdmItPnZi X21hcmtfc3RhcnQudHBfY29sKSA+DQoJICAgIFBPU19JTkRFWCh2dGJ1Zl9odHcodmIsIHZiLT52 Yl9tYXJrX2VuZC50cF9yb3cpLA0KCSAgICB2Yi0+dmJfbWFya19lbmQudHBfY29sKSkgew0KCQlQ T1NfQ09QWShlLCB2Yi0+dmJfbWFya19zdGFydCk7DQoJCVBPU19DT1BZKHMsIHZiLT52Yl9tYXJr X2VuZCk7DQoJfSBlbHNlIHsNCgkJUE9TX0NPUFkocywgdmItPnZiX21hcmtfc3RhcnQpOw0KCQlQ T1NfQ09QWShlLCB2Yi0+dmJfbWFya19lbmQpOw0KCX0NCg0KCXNpID0gcy50cF9yb3cgKiB2Yi0+ dmJfc2NyX3NpemUudHBfY29sICsgcy50cF9jb2w7DQoJZWkgPSBlLnRwX3JvdyAqIHZiLT52Yl9z Y3Jfc2l6ZS50cF9jb2wgKyBlLnRwX2NvbDsNCg0KCS8qIE51bWJlciBzeW1ib2xzIGFuZCBudW1i ZXIgb2Ygcm93cyB0byBpbmplY3QgXG4gKi8NCglzeiA9IGVpIC0gc2kgKyAoKGUudHBfcm93IC0g cy50cF9yb3cpICogMik7DQoNCglyZXR1cm4gKHN6ICogc2l6ZW9mKHRlcm1fY2hhcl90KSk7DQp9 DQoNCnZvaWQNCnZ0YnVmX2V4dHJhY3RfbWFya2VkKHN0cnVjdCB2dF9idWYgKnZiLCB0ZXJtX2No YXJfdCAqYnVmLCBpbnQgc3opDQp7DQoJaW50IGksIHIsIGMsIGNzLCBjZTsNCgl0ZXJtX3Bvc190 IHMsIGU7DQoJdGVybV9jaGFyX3QgKmVuZDsNCg0KCS8qIFN3YXAgYWNjb3JkaW5nIHRvIHdpbmRv dyBjb29yZGluYXRlcy4gKi8NCglpZiAoUE9TX0lOREVYKHZ0YnVmX2h0dyh2YiwgdmItPnZiX21h cmtfc3RhcnQudHBfcm93KSwNCgkgICAgdmItPnZiX21hcmtfc3RhcnQudHBfY29sKSA+DQoJICAg IFBPU19JTkRFWCh2dGJ1Zl9odHcodmIsIHZiLT52Yl9tYXJrX2VuZC50cF9yb3cpLA0KCSAgICB2 Yi0+dmJfbWFya19lbmQudHBfY29sKSkgew0KCQlQT1NfQ09QWShlLCB2Yi0+dmJfbWFya19zdGFy dCk7DQoJCVBPU19DT1BZKHMsIHZiLT52Yl9tYXJrX2VuZCk7DQoJfSBlbHNlIHsNCgkJUE9TX0NP UFkocywgdmItPnZiX21hcmtfc3RhcnQpOw0KCQlQT1NfQ09QWShlLCB2Yi0+dmJfbWFya19lbmQp Ow0KCX0NCg0KCWkgPSAwOw0KCWZvciAociA9IHMudHBfcm93OyByIDw9IGUudHBfcm93OyByKysp IHsNCgkJY3MgPSAociA9PSBzLnRwX3Jvdyk/cy50cF9jb2w6MDsNCgkJY2UgPSAociA9PSBlLnRw X3Jvdyk/ZS50cF9jb2w6dmItPnZiX3Njcl9zaXplLnRwX2NvbDsNCgkJZm9yIChjID0gY3M7IGMg PCBjZTsgYysrKSB7DQoJCQlidWZbaSsrXSA9IHZiLT52Yl9yb3dzW3JdW2NdOw0KCQl9DQoJCWVu ZCA9IGJ1ZiArIGkgLTE7DQoJCXdoaWxlIChlbmQgPiBidWYgJiYgaXNzcGFjZSgodW5zaWduZWQg Y2hhcikqZW5kKSkNCgkJew0KCQkJKmVuZCA9ICdcMCc7DQoJCQllbmQtLTsNCgkJfQ0KDQoJCS8q IEFkZCBuZXcgbGluZSBmb3IgYWxsIHJvd3MsIGJ1dCBub3QgZm9yIGxhc3Qgb25lLiAqLw0KCQlp ZiAociAhPSBlLnRwX3Jvdykgew0KCQkJYnVmW2ldID0gJ1xyJzsNCgkJCWJ1ZltpKytdID0gJ1xu JzsNCgkJCWJ1ZltpKytdID0gJ1wwJzsNCgkJfQ0KCX0NCn0NCg0KaW50DQp2dGJ1Zl9zZXRfbWFy ayhzdHJ1Y3QgdnRfYnVmICp2YiwgaW50IHR5cGUsIGludCBjb2wsIGludCByb3cpDQp7DQoJdGVy bV9jaGFyX3QgKnI7DQoJaW50IGk7DQoNCglzd2l0Y2ggKHR5cGUpIHsNCgljYXNlIFZUQl9NQVJL X0VORDoJLyogQjEgVVAgKi8NCgkJaWYgKHZiLT52Yl9tYXJrX2xhc3QgIT0gVlRCX01BUktfTU9W RSkNCgkJCXJldHVybiAoMCk7DQoJCS8qIEZBTExUSFJPVUdIICovDQoJY2FzZSBWVEJfTUFSS19N T1ZFOg0KCWNhc2UgVlRCX01BUktfRVhURU5EOg0KCQl2dGJ1Zl9mbHVzaF9tYXJrKHZiKTsgLyog Q2xlYW4gb2xkIG1hcmsuICovDQoJCXZiLT52Yl9tYXJrX2VuZC50cF9jb2wgPSBjb2w7DQoJCXZi LT52Yl9tYXJrX2VuZC50cF9yb3cgPSB2dGJ1Zl93dGgodmIsIHJvdyk7DQoJCWJyZWFrOw0KCWNh c2UgVlRCX01BUktfU1RBUlQ6DQoJCXZ0YnVmX2ZsdXNoX21hcmsodmIpOyAvKiBDbGVhbiBvbGQg bWFyay4gKi8NCgkJdmItPnZiX21hcmtfc3RhcnQudHBfY29sID0gY29sOw0KCQl2Yi0+dmJfbWFy a19zdGFydC50cF9yb3cgPSB2dGJ1Zl93dGgodmIsIHJvdyk7DQoJCS8qIFN0YXJ0IGFnYWluLCBz byBjbGVhciBlbmQgcG9pbnQuICovDQoJCXZiLT52Yl9tYXJrX2VuZC50cF9jb2wgPSBjb2w7DQoJ CXZiLT52Yl9tYXJrX2VuZC50cF9yb3cgPSB2dGJ1Zl93dGgodmIsIHJvdyk7DQoJCWJyZWFrOw0K CWNhc2UgVlRCX01BUktfV09SRDoNCgkJdnRidWZfZmx1c2hfbWFyayh2Yik7IC8qIENsZWFuIG9s ZCBtYXJrLiAqLw0KCQl2Yi0+dmJfbWFya19zdGFydC50cF9yb3cgPSB2Yi0+dmJfbWFya19lbmQu dHBfcm93ID0NCgkJICAgIHZ0YnVmX3d0aCh2Yiwgcm93KTsNCgkJciA9IHZiLT52Yl9yb3dzW3Zi LT52Yl9tYXJrX3N0YXJ0LnRwX3Jvd107DQoJCWZvciAoaSA9IGNvbDsgaSA+PSAwOyBpIC0tKSB7 DQoJCQlpZiAoVENIQVJfQ0hBUkFDVEVSKHJbaV0pID09ICcgJykgew0KCQkJCXZiLT52Yl9tYXJr X3N0YXJ0LnRwX2NvbCA9IGkgKyAxOw0KCQkJCWJyZWFrOw0KCQkJfQ0KCQl9DQoJCS8qIE5vIHNw YWNlIC0gd29yZCBleHRlbmRzIHRvIGJlZ2lubmluZyBvZiBsaW5lLiAqLw0KCQlpZiAoaSA9PSAt MSkNCgkJCXZiLT52Yl9tYXJrX3N0YXJ0LnRwX2NvbCA9IDA7DQoJCWZvciAoaSA9IGNvbDsgaSA8 IHZiLT52Yl9zY3Jfc2l6ZS50cF9jb2w7IGkrKykgew0KCQkJaWYgKFRDSEFSX0NIQVJBQ1RFUihy W2ldKSA9PSAnICcpIHsNCgkJCQl2Yi0+dmJfbWFya19lbmQudHBfY29sID0gaTsNCgkJCQlicmVh azsNCgkJCX0NCgkJfQ0KCQkvKiBObyBzcGFjZSAtIHdvcmQgZXh0ZW5kcyB0byBlbmQgb2YgbGlu ZS4gKi8NCgkJaWYgKGkgPT0gdmItPnZiX3Njcl9zaXplLnRwX2NvbCkNCgkJCXZiLT52Yl9tYXJr X2VuZC50cF9jb2wgPSBpOw0KDQoJCWlmICh2Yi0+dmJfbWFya19zdGFydC50cF9jb2wgPiB2Yi0+ dmJfbWFya19lbmQudHBfY29sKQ0KCQkJdmItPnZiX21hcmtfc3RhcnQudHBfY29sID0gdmItPnZi X21hcmtfZW5kLnRwX2NvbDsNCgkJYnJlYWs7DQoJY2FzZSBWVEJfTUFSS19ST1c6DQoJCXZ0YnVm X2ZsdXNoX21hcmsodmIpOyAvKiBDbGVhbiBvbGQgbWFyay4gKi8NCgkJdmItPnZiX21hcmtfc3Rh cnQudHBfY29sID0gMDsNCgkJdmItPnZiX21hcmtfZW5kLnRwX2NvbCA9IHZiLT52Yl9zY3Jfc2l6 ZS50cF9jb2w7DQoJCXZiLT52Yl9tYXJrX3N0YXJ0LnRwX3JvdyA9IHZiLT52Yl9tYXJrX2VuZC50 cF9yb3cgPQ0KCQkgICAgdnRidWZfd3RoKHZiLCByb3cpOw0KCQlicmVhazsNCgljYXNlIFZUQl9N QVJLX05PTkU6DQoJCXZiLT52Yl9tYXJrX2xhc3QgPSB0eXBlOw0KCQkvKiBGQUxMVEhST1VHSCAq Lw0KCWRlZmF1bHQ6DQoJCS8qIHBhbmljPyAqLw0KCQlyZXR1cm4gKDApOw0KCX0NCg0KCXZiLT52 Yl9tYXJrX2xhc3QgPSB0eXBlOw0KCS8qIERyYXcgbmV3IG1hcmtlZCByZWdpb24uICovDQoJdnRi dWZfZmx1c2hfbWFyayh2Yik7DQoJcmV0dXJuICgxKTsNCn0NCiNlbmRpZg0KDQp2b2lkDQp2dGJ1 Zl9jdXJzb3JfdmlzaWJpbGl0eShzdHJ1Y3QgdnRfYnVmICp2YiwgaW50IHllcykNCnsNCglpbnQg b2ZsYWdzLCBuZmxhZ3M7DQoNCglvZmxhZ3MgPSB2Yi0+dmJfZmxhZ3M7DQoJaWYgKHllcykNCgkJ dmItPnZiX2ZsYWdzIHw9IFZCRl9DVVJTT1I7DQoJZWxzZQ0KCQl2Yi0+dmJfZmxhZ3MgJj0gflZC Rl9DVVJTT1I7DQoJbmZsYWdzID0gdmItPnZiX2ZsYWdzOw0KDQoJaWYgKG9mbGFncyAhPSBuZmxh Z3MpDQoJCXZ0YnVmX2RpcnR5X2NlbGwodmIsICZ2Yi0+dmJfY3Vyc29yKTsNCn0NCg0Kdm9pZA0K dnRidWZfc2Nyb2xsX21vZGUoc3RydWN0IHZ0X2J1ZiAqdmIsIGludCB5ZXMpDQp7DQoJaW50IG9m bGFncywgbmZsYWdzOw0KDQoJVlRCVUZfTE9DSyh2Yik7DQoJb2ZsYWdzID0gdmItPnZiX2ZsYWdz Ow0KCWlmICh5ZXMpDQoJCXZiLT52Yl9mbGFncyB8PSBWQkZfU0NST0xMOw0KCWVsc2UNCgkJdmIt PnZiX2ZsYWdzICY9IH5WQkZfU0NST0xMOw0KCW5mbGFncyA9IHZiLT52Yl9mbGFnczsNCg0KCWlm IChvZmxhZ3MgIT0gbmZsYWdzKQ0KCQl2dGJ1Zl9kaXJ0eV9jZWxsKHZiLCAmdmItPnZiX2N1cnNv cik7DQoJVlRCVUZfVU5MT0NLKHZiKTsNCn0NCg== --3432851520-594251130-1655902382=:1623--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CP6P284MB1900CA1ED5B5BADE054ECB34CBB29>