Date: Sun, 8 Feb 1998 21:33:54 -0600 From: "Jason" <jason_smethers@bigfoot.com> To: <hackers@FreeBSD.com> Subject: userland updates Message-ID: <003d01bd350b$8d872a80$016f6f6f@jason>
next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format. ------=_NextPart_000_003A_01BD34D9.4174C080 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit I have some diffs to cat, chio, and cp. If someone with commit privledges would like to look 'em over and commit... These incorperate some fixes and most noteably the ielem option to chio. heres the diffs... ------=_NextPart_000_003A_01BD34D9.4174C080 Content-Type: application/octet-stream; name="bin.cat.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="bin.cat.diff" T25seSBpbiAvdXNyL3NyYy9iaW4vY2F0OiBjYXQKZGlmZiAtYyAtciAvdXNyL3NyYy9iaW4vY2F0 L2NhdC4xIC91c3IvbG9jYWwvc3JjL2Jpbi9jYXQvY2F0LjEKKioqIC91c3Ivc3JjL2Jpbi9jYXQv Y2F0LjEJU2F0IEZlYiAyMiAwODowMToyNiAxOTk3Ci0tLSAvdXNyL2xvY2FsL3NyYy9iaW4vY2F0 L2NhdC4xCU1vbiBGZWIgIDIgMTg6MTg6MzQgMTk5OAoqKioqKioqKioqKioqKioKKioqIDEzLDE5 ICoqKioKICAuXCIgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogIC5cIiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogIC5cIiAzLiBB bGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRo aXMgc29mdHdhcmUKISAuXCIgICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVk Z2VtZW50OgogIC5cIglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5 IHRoZSBVbml2ZXJzaXR5IG9mCiAgLlwiCUNhbGlmb3JuaWEsIEJlcmtlbGV5IGFuZCBpdHMgY29u dHJpYnV0b3JzLgogIC5cIiA0LiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5v ciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotLS0gMTMsMTkgLS0tLQogIC5cIiAgICBu b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt ZXIgaW4gdGhlCiAgLlwiICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgLlwiIDMuIEFsbCBhZHZlcnRpc2luZyBt YXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQohIC5c IiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKICAuXCIJVGhp cyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgVW5pdmVyc2l0eSBv ZgogIC5cIglDYWxpZm9ybmlhLCBCZXJrZWxleSBhbmQgaXRzIGNvbnRyaWJ1dG9ycy4KICAuXCIg NC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0 cyBjb250cmlidXRvcnMKKioqKioqKioqKioqKioqCioqKiAxMTgsMTI1ICoqKioKICAuU2ggSElT VE9SWQogIEEKICAuTm0KISBjb21tYW5kIGFwcGVhcmVkIGluIFZlcnNpb24gMSBBVCZUIFVOSVgu IAogIERlbm5pcyBSaXRjaGllIGRlc2lnbmVkIGFuZCB3cm90ZSB0aGUgZmlyc3QgbWFuIHBhZ2Uu IAogIEl0IGFwcGVhcnMgdG8gaGF2ZSBiZWVuCiAgLlhyIGNhdCAxIC4KISAKLS0tIDExOCwxMzQg LS0tLQogIC5TaCBISVNUT1JZCiAgQQogIC5ObQohIHV0aWxpdHkgYXBwZWFyZWQgaW4gVmVyc2lv biAxIEFUJlQgVU5JWC4gCiAgRGVubmlzIFJpdGNoaWUgZGVzaWduZWQgYW5kIHdyb3RlIHRoZSBm aXJzdCBtYW4gcGFnZS4gCiAgSXQgYXBwZWFycyB0byBoYXZlIGJlZW4KICAuWHIgY2F0IDEgLgoh IC5TaCBTVEFOREFSRFMKISBUaGUKISAuTm0gY2F0CiEgdXRpbGl0eSBpcyBjb21wbGlhbnQgd2l0 aCB0aGUKISAuU3QgLXAxMDAzLjItOTIKISBzcGVjaWZpY2F0aW9uLgohIC5QcAohIFRoZSBmbGFn cwohIC5PcCBGbCBiZW5zdHYKISBhcmUgZXh0ZW5zaW9ucyB0byB0aGUgc3BlY2lmaWNhdGlvbi4K ZGlmZiAtYyAtciAvdXNyL3NyYy9iaW4vY2F0L2NhdC5jIC91c3IvbG9jYWwvc3JjL2Jpbi9jYXQv Y2F0LmMKKioqIC91c3Ivc3JjL2Jpbi9jYXQvY2F0LmMJRnJpIE1hciAyOCAwOToyNDowNCAxOTk3 Ci0tLSAvdXNyL2xvY2FsL3NyYy9iaW4vY2F0L2NhdC5jCVR1ZSBGZWIgIDMgMTc6MzM6MjQgMTk5 OAoqKioqKioqKioqKioqKioKKioqIDYzLDY4ICoqKioKLS0tIDYzLDY5IC0tLS0KICBpbnQgcnZh bDsKICBjaGFyICpmaWxlbmFtZTsKICAKKyBpbnQgbWFpbiBfX1AoKGludCwgY2hhciAqW10pKTsK ICB2b2lkIGNvb2tfYXJncyBfX1AoKGNoYXIgKmFyZ3ZbXSkpOwogIHZvaWQgY29va19idWYgX19Q KChGSUxFICopKTsKICB2b2lkIHJhd19hcmdzIF9fUCgoY2hhciAqYXJndltdKSk7CioqKioqKioq KioqKioqKgoqKiogNzYsODIgKioqKgogIAlleHRlcm4gaW50IG9wdGluZDsKICAJaW50IGNoOwog IAohIAlzZXRsb2NhbGUoTENfQ1RZUEUsICIiKTsKICAKICAJd2hpbGUgKChjaCA9IGdldG9wdChh cmdjLCBhcmd2LCAiYmVuc3R1diIpKSAhPSAtMSkKICAJCXN3aXRjaCAoY2gpIHsKLS0tIDc3LDgz IC0tLS0KICAJZXh0ZXJuIGludCBvcHRpbmQ7CiAgCWludCBjaDsKICAKISAJKHZvaWQpc2V0bG9j YWxlKExDX0FMTCwgIiIpOwogIAogIAl3aGlsZSAoKGNoID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJi ZW5zdHV2IikpICE9IC0xKQogIAkJc3dpdGNoIChjaCkgewoqKioqKioqKioqKioqKioKKioqIDk2 LDEwNyAqKioqCiAgCQkJdGZsYWcgPSB2ZmxhZyA9IDE7CS8qIC10IGltcGxpZXMgLXYgKi8KICAJ CQlicmVhazsKICAJCWNhc2UgJ3UnOgohIAkJCXNldGJ1ZihzdGRvdXQsIChjaGFyICopTlVMTCk7 CiAgCQkJYnJlYWs7CiAgCQljYXNlICd2JzoKICAJCQl2ZmxhZyA9IDE7CiAgCQkJYnJlYWs7CiAg CQlkZWZhdWx0OgogIAkJCSh2b2lkKWZwcmludGYoc3RkZXJyLAogIAkJCSAgICAidXNhZ2U6IGNh dCBbLWJlbnN0dXZdIFstXSBbZmlsZSAuLi5dXG4iKTsKICAJCQlleGl0KDEpOwotLS0gOTcsMTA5 IC0tLS0KICAJCQl0ZmxhZyA9IHZmbGFnID0gMTsJLyogLXQgaW1wbGllcyAtdiAqLwogIAkJCWJy ZWFrOwogIAkJY2FzZSAndSc6CiEgCQkJc2V0YnVmKHN0ZG91dCwgTlVMTCk7CiAgCQkJYnJlYWs7 CiAgCQljYXNlICd2JzoKICAJCQl2ZmxhZyA9IDE7CiAgCQkJYnJlYWs7CiAgCQlkZWZhdWx0Ogor IAkJY2FzZSAnPyc6CiAgCQkJKHZvaWQpZnByaW50ZihzdGRlcnIsCiAgCQkJICAgICJ1c2FnZTog Y2F0IFstYmVuc3R1dl0gWy1dIFtmaWxlIC4uLl1cbiIpOwogIAkJCWV4aXQoMSk7CioqKioqKioq KioqKioqKgoqKiogMjQ4LDI1OCAqKioqCiAgCQkJZXJyKDEsICIlcyIsIGZpbGVuYW1lKTsKICAJ CWJzaXplID0gTUFYKHNidWYuc3RfYmxrc2l6ZSwgMTAyNCk7CiAgCQlpZiAoKGJ1ZiA9IG1hbGxv YygodV9pbnQpYnNpemUpKSA9PSBOVUxMKQohIAkJCWVycigxLCBOVUxMKTsKICAJfQohIAl3aGls ZSAoKG5yID0gcmVhZChyZmQsIGJ1ZiwgYnNpemUpKSA+IDApCiAgCQlmb3IgKG9mZiA9IDA7IG5y OyBuciAtPSBudywgb2ZmICs9IG53KQohIAkJCWlmICgobncgPSB3cml0ZSh3ZmQsIGJ1ZiArIG9m ZiwgbnIpKSA8IDApCiAgCQkJCWVycigxLCAic3Rkb3V0Iik7CiAgCWlmIChuciA8IDApIHsKICAJ CXdhcm4oIiVzIiwgZmlsZW5hbWUpOwotLS0gMjUwLDI2MCAtLS0tCiAgCQkJZXJyKDEsICIlcyIs IGZpbGVuYW1lKTsKICAJCWJzaXplID0gTUFYKHNidWYuc3RfYmxrc2l6ZSwgMTAyNCk7CiAgCQlp ZiAoKGJ1ZiA9IG1hbGxvYygodV9pbnQpYnNpemUpKSA9PSBOVUxMKQohIAkJCWVycigxLCAiY2Fu bm90IGFsbG9jYXRlIGJ1ZmZlciIpOwogIAl9CiEgCXdoaWxlICgobnIgPSByZWFkKHJmZCwgYnVm LCAodV9pbnQpYnNpemUpKSA+IDApCiAgCQlmb3IgKG9mZiA9IDA7IG5yOyBuciAtPSBudywgb2Zm ICs9IG53KQohIAkJCWlmICgobncgPSB3cml0ZSh3ZmQsIGJ1ZiArIG9mZiwgKHVfaW50KW5yKSkg PCAwKQogIAkJCQllcnIoMSwgInN0ZG91dCIpOwogIAlpZiAobnIgPCAwKSB7CiAgCQl3YXJuKCIl cyIsIGZpbGVuYW1lKTsK ------=_NextPart_000_003A_01BD34D9.4174C080 Content-Type: application/octet-stream; name="bin.chio.all.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="bin.chio.all.diff" T25seSBpbiAvdXNyL3NyYy9iaW4vY2hpbzogY2hpbwpkaWZmIC1jIC1yIC91c3Ivc3JjL2Jpbi9j aGlvL2NoaW8uMSAvdXNyL2xvY2FsL3NyYy9iaW4vY2hpby9jaGlvLjEKKioqIC91c3Ivc3JjL2Jp bi9jaGlvL2NoaW8uMQlTYXQgU2VwIDEzIDExOjAxOjE4IDE5OTcKLS0tIC91c3IvbG9jYWwvc3Jj L2Jpbi9jaGlvL2NoaW8uMQlTdW4gRmViICA4IDIxOjE2OjU1IDE5OTgKKioqKioqKioqKioqKioq CioqKiAxMiwxOCAqKioqCiAgLlwiICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAuXCIgICAgZG9jdW1lbnRhdGlv biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K ICAuXCIgMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9y IHVzZSBvZiB0aGlzIHNvZnR3YXJlCiEgLlwiICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5n IGFja25vd2xlZGdlbWVudHM6CiAgLlwiCVRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBk ZXZlbG9wZWQgYnkgSmFzb24gUi4gVGhvcnBlCiAgLlwiCWZvciBBbmQgQ29tbXVuaWNhdGlvbnMs IGh0dHA6Ly93d3cuYW5kLmNvbS8KICAuXCIgNC4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkg bm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCi0tLSAxMiwxOCAtLS0t CiAgLlwiICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp bmcgZGlzY2xhaW1lciBpbiB0aGUKICAuXCIgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAuXCIgMy4gQWxsIGFk dmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNv ZnR3YXJlCiEgLlwiICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50 czoKICAuXCIJVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSBKYXNv biBSLiBUaG9ycGUKICAuXCIJZm9yIEFuZCBDb21tdW5pY2F0aW9ucywgaHR0cDovL3d3dy5hbmQu Y29tLwogIC5cIiA0LiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBl bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKKioqKioqKioqKioqKioqCioqKiAxNzcsMTgzICoq KioKICAuSXQgTm0gQUNDRVNTCiAgTWVkaWEgaW4gdGhpcyBlbGVtZW50IGlzIGFjY2Vzc2libGUg YnkgYSBwaWNrZXIuCiAgLkl0IE5tIEVYRU5BQgohIEVsZW1lbnQgc3VwcG9ydHMgcGFzc2luZyBt ZWRpYSAoZXhwb3J0aW5nKSB0byBhbiBvdXRzaXRlIGh1bWFuIG9wZXJhdG9yLgogIC5JdCBObSBJ TkVOQUIKICBFbGVtZW50IHN1cHBvcnRzIHJlY2VpdmluZyBtZWRpYSAoaW1wb3J0aW5nKSBmcm9t IGFuIG91dHNpZGUgaHVtYW4gb3BlcmF0b3IuCiAgLkVsCi0tLSAxNzcsMTg1IC0tLS0KICAuSXQg Tm0gQUNDRVNTCiAgTWVkaWEgaW4gdGhpcyBlbGVtZW50IGlzIGFjY2Vzc2libGUgYnkgYSBwaWNr ZXIuCiAgLkl0IE5tIEVYRU5BQgohIEVsZW1lbnQgc3VwcG9ydHMgcGFzc2luZyBtZWRpYSAoZXhw b3J0aW5nKSB0byBhbiBvdXRzaWRlIGh1bWFuIG9wZXJhdG9yLgohIC5JdCBObSBJRUxFTQohIFBl cmZvcm0gYW4gXGZCSU5JVElBTElaRSBFTEVNRU5UIFNUQVRVU1xmUiBvcGVyYXRpb24gb24gdGhl IGNoYW5nZXIuCiAgLkl0IE5tIElORU5BQgogIEVsZW1lbnQgc3VwcG9ydHMgcmVjZWl2aW5nIG1l ZGlhIChpbXBvcnRpbmcpIGZyb20gYW4gb3V0c2lkZSBodW1hbiBvcGVyYXRvci4KICAuRWwKKioq KioqKioqKioqKioqCioqKiAxODgsMjAwICoqKioKICBNb3ZlcyB0aGUgbWVkaWEgaW4gc2xvdCAz IChmb3VydGggc2xvdCkgdG8gZHJpdmUgMCAoZmlyc3QgZHJpdmUpLgogIC5QcAogIC5ObSBjaGlv IHNldHBpY2tlciAyCiAgQ29uZmlndXJlcyB0aGUgY2hhbmdlciB0byB1c2UgcGlja2VyIDIgKHRo aXJkIHBpY2tlcikgZm9yIG9wZXJhdGlvbnMuCiAgLlBwCiAgLlNoIEZJTEVTCiAgL2Rldi9jaDAg LSBkZWZhdWx0IGNoYW5nZXIgZGV2aWNlCiAgLlNoIFNFRSBBTFNPCiAgLlhyIG10IDEgLAohIC5Y ciBjaCA0ICwKICAuWHIgbW91bnQgOCAuCiAgLlNoIEFVVEhPUgogIFRoZQotLS0gMTkwLDIwMyAt LS0tCiAgTW92ZXMgdGhlIG1lZGlhIGluIHNsb3QgMyAoZm91cnRoIHNsb3QpIHRvIGRyaXZlIDAg KGZpcnN0IGRyaXZlKS4KICAuUHAKICAuTm0gY2hpbyBzZXRwaWNrZXIgMgorIC5QcAogIENvbmZp Z3VyZXMgdGhlIGNoYW5nZXIgdG8gdXNlIHBpY2tlciAyICh0aGlyZCBwaWNrZXIpIGZvciBvcGVy YXRpb25zLgogIC5QcAogIC5TaCBGSUxFUwogIC9kZXYvY2gwIC0gZGVmYXVsdCBjaGFuZ2VyIGRl dmljZQogIC5TaCBTRUUgQUxTTwogIC5YciBtdCAxICwKISAuWHIgY2ggNAogIC5YciBtb3VudCA4 IC4KICAuU2ggQVVUSE9SCiAgVGhlCk9ubHkgaW4gL3Vzci9zcmMvYmluL2NoaW86IGNoaW8uMS5v cmlnCmRpZmYgLWMgLXIgL3Vzci9zcmMvYmluL2NoaW8vY2hpby5jIC91c3IvbG9jYWwvc3JjL2Jp bi9jaGlvL2NoaW8uYwoqKiogL3Vzci9zcmMvYmluL2NoaW8vY2hpby5jCUZyaSBKdW4gIDYgMDE6 MzI6MDkgMTk5NwotLS0gL3Vzci9sb2NhbC9zcmMvYmluL2NoaW8vY2hpby5jCVN1biBGZWIgIDgg MTk6MDg6MjIgMTk5OAoqKioqKioqKioqKioqKioKKioqIDEzLDE5ICoqKioKICAgKiAgICBub3Rp Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg aW4gdGhlCiAgICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJp YWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKISAgKiAgICBt dXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1lbnRzOgogICAqCVRoaXMgcHJv ZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgSmFzb24gUi4gVGhvcnBlCiAgICoJ Zm9yIEFuZCBDb21tdW5pY2F0aW9ucywgaHR0cDovL3d3dy5hbmQuY29tLwogICAqIDQuIFRoZSBu YW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw cm9kdWN0cwotLS0gMTMsMTkgLS0tLQogICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAgKiAgICBkb2N1bWVu dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0 aW9uLgogICAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJl cyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQohICAqICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93 aW5nIGFja25vd2xlZGdtZW50czoKICAgKglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUg ZGV2ZWxvcGVkIGJ5IEphc29uIFIuIFRob3JwZQogICAqCWZvciBBbmQgQ29tbXVuaWNhdGlvbnMs IGh0dHA6Ly93d3cuYW5kLmNvbS8KICAgKiA0LiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBu b3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKKioqKioqKioqKioqKioq CioqKiAzNCw0MCAqKioqCiAgCiAgI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgogICNpbmNsdWRlIDxz eXMvaW9jdGwuaD4KISAjaW5jbHVkZSA8c3lzL2NoaW8uaD4gCiAgI2luY2x1ZGUgPGVyci5oPgog ICNpbmNsdWRlIDxlcnJuby5oPgogICNpbmNsdWRlIDxmY250bC5oPgotLS0gMzQsNDAgLS0tLQog IAogICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KICAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CiEgI2lu Y2x1ZGUgPHN5cy9jaGlvLmg+CiAgI2luY2x1ZGUgPGVyci5oPgogICNpbmNsdWRlIDxlcnJuby5o PgogICNpbmNsdWRlIDxmY250bC5oPgoqKioqKioqKioqKioqKioKKioqIDQ3LDUyICoqKioKLS0t IDQ3LDUzIC0tLS0KICAjaW5jbHVkZSAiZGVmcy5oIgogICNpbmNsdWRlICJwYXRobmFtZXMuaCIK ICAKKyBpbnQJbWFpbiBfX1AoKGludCwgY2hhciAqW10pKTsKICBzdGF0aWMJdm9pZCB1c2FnZSBf X1AoKHZvaWQpKTsKICBzdGF0aWMJdm9pZCBjbGVhbnVwIF9fUCgodm9pZCkpOwogIHN0YXRpYwlp bnQgcGFyc2VfZWxlbWVudF90eXBlIF9fUCgoY2hhciAqKSk7CioqKioqKioqKioqKioqKgoqKiog NjIsNjcgKioqKgotLS0gNjMsNjkgLS0tLQogIHN0YXRpYwlpbnQgZG9fZ2V0cGlja2VyIF9fUCgo Y2hhciAqLCBpbnQsIGNoYXIgKiopKTsKICBzdGF0aWMJaW50IGRvX3NldHBpY2tlciBfX1AoKGNo YXIgKiwgaW50LCBjaGFyICoqKSk7CiAgc3RhdGljCWludCBkb19zdGF0dXMgX19QKChjaGFyICos IGludCwgY2hhciAqKikpOworIHN0YXRpYwlpbnQgZG9faWVsZW0gX19QKChjaGFyICosIGludCwg Y2hhciAqKikpOwogIAogIC8qIFZhbGlkIGNoYW5nZXIgZWxlbWVudCB0eXBlcy4gKi8KICBjb25z dCBzdHJ1Y3QgZWxlbWVudF90eXBlIGVsZW1lbnRzW10gPSB7CioqKioqKioqKioqKioqKgoqKiog ODEsODYgKioqKgotLS0gODMsODkgLS0tLQogIAl7ICJnZXRwaWNrZXIiLAkJZG9fZ2V0cGlja2Vy IH0sCiAgCXsgInNldHBpY2tlciIsCQlkb19zZXRwaWNrZXIgfSwKICAJeyAic3RhdHVzIiwJCWRv X3N0YXR1cyB9LAorIAl7ICJpZWxlbSIsIAkJZG9faWVsZW0gfSwKICAJeyBOVUxMLAkJCTAgfSwK ICB9OwogIAoqKioqKioqKioqKioqKioKKioqIDk4LDEwNCAqKioqCiAgaW50CiAgbWFpbihhcmdj LCBhcmd2KQogIAlpbnQgYXJnYzsKISAJY2hhciAqKmFyZ3Y7CiAgewogIAlpbnQgY2gsIGk7CiAg Ci0tLSAxMDEsMTA3IC0tLS0KICBpbnQKICBtYWluKGFyZ2MsIGFyZ3YpCiAgCWludCBhcmdjOwoh IAljaGFyICphcmd2W107CiAgewogIAlpbnQgY2gsIGk7CiAgCioqKioqKioqKioqKioqKgoqKiog MTM1LDE0NiAqKioqCi0tLSAxMzgsMTU3IC0tLS0KICAJZm9yIChpID0gMDsgY29tbWFuZHNbaV0u Y2NfbmFtZSAhPSBOVUxMOyArK2kpCiAgCQlpZiAoc3RyY21wKCphcmd2LCBjb21tYW5kc1tpXS5j Y19uYW1lKSA9PSAwKQogIAkJCWJyZWFrOworIAlpZiAoY29tbWFuZHNbaV0uY2NfbmFtZSA9PSBO VUxMKSB7CisgCQkvKiBsb29rIGZvciBhYmJyZXZpYXRpb24gKi8KKyAJCWZvciAoaSA9IDA7IGNv bW1hbmRzW2ldLmNjX25hbWUgIT0gTlVMTDsgKytpKQorIAkJCWlmIChzdHJuY21wKCphcmd2LCBj b21tYW5kc1tpXS5jY19uYW1lLAorIAkJCQlzdHJsZW4oKmFyZ3YpKSA9PSAwKQorIAkJCQkJYnJl YWs7CisgCX0KICAJaWYgKGNvbW1hbmRzW2ldLmNjX25hbWUgPT0gTlVMTCkKICAJCWVycngoMSwg InVua25vd24gY29tbWFuZDogJXMiLCAqYXJndik7CiAgCiAgCS8qIFNraXAgb3ZlciB0aGUgY29t bWFuZCBuYW1lIGFuZCBjYWxsIGhhbmRsZXIuICovCiAgCSsrYXJndjsgLS1hcmdjOwogIAlleGl0 ICgoKmNvbW1hbmRzW2ldLmNjX2hhbmRsZXIpKGNvbW1hbmRzW2ldLmNjX25hbWUsIGFyZ2MsIGFy Z3YpKTsKKyAJLyogTk9UUkVBQ0hFRCAqLwogIH0KICAKICBzdGF0aWMgaW50CioqKioqKioqKioq KioqKgoqKiogMTY2LDE3MiAqKioqCiAgCQl3YXJueCgiJXM6IHRvbyBtYW55IGFyZ3VtZW50cyIs IGNuYW1lKTsKICAJCWdvdG8gdXNhZ2U7CiAgCX0KISAJYnplcm8oJmNtZCwgc2l6ZW9mKGNtZCkp OwogIAogIAkvKiA8ZnJvbSBFVD4gICovCiAgCWNtZC5jbV9mcm9tdHlwZSA9IHBhcnNlX2VsZW1l bnRfdHlwZSgqYXJndik7Ci0tLSAxNzcsMTgzIC0tLS0KICAJCXdhcm54KCIlczogdG9vIG1hbnkg YXJndW1lbnRzIiwgY25hbWUpOwogIAkJZ290byB1c2FnZTsKICAJfQohIAkodm9pZCkgbWVtc2V0 KCZjbWQsIDAsIHNpemVvZihjbWQpKTsKICAKICAJLyogPGZyb20gRVQ+ICAqLwogIAljbWQuY21f ZnJvbXR5cGUgPSBwYXJzZV9lbGVtZW50X3R5cGUoKmFyZ3YpOwoqKioqKioqKioqKioqKioKKioq IDIwNiwyMTIgKioqKgogIAlyZXR1cm4gKDApOwogIAogICB1c2FnZToKISAJZnByaW50ZihzdGRl cnIsICJ1c2FnZTogY2hpbyAlcyAiCiAgCSAgICAiPGZyb20gRVQ+IDxmcm9tIEVVPiA8dG8gRVQ+ IDx0byBFVT4gW2ludl1cbiIsIGNuYW1lKTsKICAJcmV0dXJuICgxKTsKICB9Ci0tLSAyMTcsMjIz IC0tLS0KICAJcmV0dXJuICgwKTsKICAKICAgdXNhZ2U6CiEgCSh2b2lkKSBmcHJpbnRmKHN0ZGVy ciwgInVzYWdlOiBjaGlvICVzICIKICAJICAgICI8ZnJvbSBFVD4gPGZyb20gRVU+IDx0byBFVD4g PHRvIEVVPiBbaW52XVxuIiwgY25hbWUpOwogIAlyZXR1cm4gKDEpOwogIH0KKioqKioqKioqKioq KioqCioqKiAyMzQsMjQwICoqKioKICAJCXdhcm54KCIlczogdG9vIG1hbnkgYXJndW1lbnRzIiwg Y25hbWUpOwogIAkJZ290byB1c2FnZTsKICAJfQohIAliemVybygmY21kLCBzaXplb2YoY21kKSk7 CiAgCiAgCS8qIDxzcmMgRVQ+ICAqLwogIAljbWQuY2Vfc3JjdHlwZSA9IHBhcnNlX2VsZW1lbnRf dHlwZSgqYXJndik7Ci0tLSAyNDUsMjUxIC0tLS0KICAJCXdhcm54KCIlczogdG9vIG1hbnkgYXJn dW1lbnRzIiwgY25hbWUpOwogIAkJZ290byB1c2FnZTsKICAJfQohIAkodm9pZCkgbWVtc2V0KCZj bWQsIDAsIHNpemVvZihjbWQpKTsKICAKICAJLyogPHNyYyBFVD4gICovCiAgCWNtZC5jZV9zcmN0 eXBlID0gcGFyc2VfZWxlbWVudF90eXBlKCphcmd2KTsKKioqKioqKioqKioqKioqCioqKiAyOTks MzA1ICoqKioKICAJcmV0dXJuICgwKTsKICAKICAgdXNhZ2U6CiEgCWZwcmludGYoc3RkZXJyLAog IAkJInVzYWdlOiBjaGlvICVzIDxzcmMgRVQ+IDxzcmMgRVU+IDxkc3QxIEVUPiA8ZHN0MSBFVT5c biIKICAJCSIgICAgICAgWzxkc3QyIEVUPiA8ZHN0MiBFVT5dIFtpbnYxXSBbaW52Ml1cbiIsIGNu YW1lKTsKICAJcmV0dXJuICgxKTsKLS0tIDMxMCwzMTYgLS0tLQogIAlyZXR1cm4gKDApOwogIAog ICB1c2FnZToKISAJKHZvaWQpIGZwcmludGYoc3RkZXJyLAogIAkJInVzYWdlOiBjaGlvICVzIDxz cmMgRVQ+IDxzcmMgRVU+IDxkc3QxIEVUPiA8ZHN0MSBFVT5cbiIKICAJCSIgICAgICAgWzxkc3Qy IEVUPiA8ZHN0MiBFVT5dIFtpbnYxXSBbaW52Ml1cbiIsIGNuYW1lKTsKICAJcmV0dXJuICgxKTsK KioqKioqKioqKioqKioqCioqKiAzMjgsMzM0ICoqKioKICAJCXdhcm54KCIlczogdG9vIG1hbnkg YXJndW1lbnRzIiwgY25hbWUpOwogIAkJZ290byB1c2FnZTsKICAJfQohIAliemVybygmY21kLCBz aXplb2YoY21kKSk7CiAgCiAgCS8qIDx0byBFVD4gICovCiAgCWNtZC5jcF90eXBlID0gcGFyc2Vf ZWxlbWVudF90eXBlKCphcmd2KTsKLS0tIDMzOSwzNDUgLS0tLQogIAkJd2FybngoIiVzOiB0b28g bWFueSBhcmd1bWVudHMiLCBjbmFtZSk7CiAgCQlnb3RvIHVzYWdlOwogIAl9CiEgCSh2b2lkKSBt ZW1zZXQoJmNtZCwgMCwgc2l6ZW9mKGNtZCkpOwogIAogIAkvKiA8dG8gRVQ+ICAqLwogIAljbWQu Y3BfdHlwZSA9IHBhcnNlX2VsZW1lbnRfdHlwZSgqYXJndik7CioqKioqKioqKioqKioqKgoqKiog MzYwLDM2OSAqKioqCiAgCXJldHVybiAoMCk7CiAgCiAgIHVzYWdlOgohIAlmcHJpbnRmKHN0ZGVy ciwgInVzYWdlOiBjaGlvICVzIDx0byBFVD4gPHRvIEVVPiBbaW52XVxuIiwgY25hbWUpOwogIAly ZXR1cm4gKDEpOwogIH0KICAKICBzdGF0aWMgaW50CiAgZG9fcGFyYW1zKGNuYW1lLCBhcmdjLCBh cmd2KQogIAljaGFyICpjbmFtZTsKLS0tIDM3MSwzODEgLS0tLQogIAlyZXR1cm4gKDApOwogIAog ICB1c2FnZToKISAJKHZvaWQpIGZwcmludGYoc3RkZXJyLCAidXNhZ2U6IGNoaW8gJXMgPHRvIEVU PiA8dG8gRVU+IFtpbnZdXG4iLCBjbmFtZSk7CiAgCXJldHVybiAoMSk7CiAgfQogIAorIC8qIEFS R1NVU0VEICovCiAgc3RhdGljIGludAogIGRvX3BhcmFtcyhjbmFtZSwgYXJnYywgYXJndikKICAJ Y2hhciAqY25hbWU7CioqKioqKioqKioqKioqKgoqKiogMzc0LDQwNSAqKioqCiAgCiAgCS8qIE5v IGFyZ3VtZW50cyB0byB0aGlzIGNvbW1hbmQuICovCiAgCWlmIChhcmdjKSB7CiEgCQl3YXJueCgi JXM6IG5vIGFyZ3VlbWVudHMgZXhwZWN0ZWQiLCBjbmFtZSk7CiAgCQlnb3RvIHVzYWdlOwogIAl9 CiAgCiAgCS8qIEdldCBwYXJhbXMgZnJvbSBjaGFuZ2VyIGFuZCBkaXNwbGF5IHRoZW0uICovCiEg CWJ6ZXJvKCZkYXRhLCBzaXplb2YoZGF0YSkpOwogIAlpZiAoaW9jdGwoY2hhbmdlcl9mZCwgQ0hJ T0dQQVJBTVMsIChjaGFyICopJmRhdGEpKQogIAkJZXJyKDEsICIlczogQ0hJT0dQQVJBTVMiLCBj aGFuZ2VyX25hbWUpOwogIAohIAlwcmludGYoIiVzOiAlZCBzbG90JXMsICVkIGRyaXZlJXMsICVk IHBpY2tlciVzIiwKICAJICAgIGNoYW5nZXJfbmFtZSwKICAJICAgIGRhdGEuY3BfbnNsb3RzLCAo ZGF0YS5jcF9uc2xvdHMgPiAxKSA/ICJzIiA6ICIiLAogIAkgICAgZGF0YS5jcF9uZHJpdmVzLCAo ZGF0YS5jcF9uZHJpdmVzID4gMSkgPyAicyIgOiAiIiwKICAJICAgIGRhdGEuY3BfbnBpY2tlcnMs IChkYXRhLmNwX25waWNrZXJzID4gMSkgPyAicyIgOiAiIik7CiAgCWlmIChkYXRhLmNwX25wb3J0 YWxzKQohIAkJcHJpbnRmKCIsICVkIHBvcnRhbCVzIiwgZGF0YS5jcF9ucG9ydGFscywKICAJCSAg ICAoZGF0YS5jcF9ucG9ydGFscyA+IDEpID8gInMiIDogIiIpOwohIAlwcmludGYoIlxuJXM6IGN1 cnJlbnQgcGlja2VyOiAlZFxuIiwgY2hhbmdlcl9uYW1lLCBkYXRhLmNwX2N1cnBpY2tlcik7CiAg CiAgCXJldHVybiAoMCk7CiAgCiAgIHVzYWdlOgohIAlmcHJpbnRmKHN0ZGVyciwgInVzYWdlOiBj aGlvICVzXG4iLCBjbmFtZSk7CiAgCXJldHVybiAoMSk7CiAgfQogIAogIHN0YXRpYyBpbnQKICBk b19nZXRwaWNrZXIoY25hbWUsIGFyZ2MsIGFyZ3YpCiAgCWNoYXIgKmNuYW1lOwotLS0gMzg2LDQx OSAtLS0tCiAgCiAgCS8qIE5vIGFyZ3VtZW50cyB0byB0aGlzIGNvbW1hbmQuICovCiAgCWlmIChh cmdjKSB7CiEgCQl3YXJueCgiJXM6IG5vIGFyZ3VtZW50cyBleHBlY3RlZCIsIGNuYW1lKTsKICAJ CWdvdG8gdXNhZ2U7CiAgCX0KICAKICAJLyogR2V0IHBhcmFtcyBmcm9tIGNoYW5nZXIgYW5kIGRp c3BsYXkgdGhlbS4gKi8KISAJKHZvaWQpIG1lbXNldCgmZGF0YSwgMCwgc2l6ZW9mKGRhdGEpKTsK ICAJaWYgKGlvY3RsKGNoYW5nZXJfZmQsIENISU9HUEFSQU1TLCAoY2hhciAqKSZkYXRhKSkKICAJ CWVycigxLCAiJXM6IENISU9HUEFSQU1TIiwgY2hhbmdlcl9uYW1lKTsKICAKISAJKHZvaWQpIHBy aW50ZigiJXM6ICVkIHNsb3QlcywgJWQgZHJpdmUlcywgJWQgcGlja2VyJXMiLAogIAkgICAgY2hh bmdlcl9uYW1lLAogIAkgICAgZGF0YS5jcF9uc2xvdHMsIChkYXRhLmNwX25zbG90cyA+IDEpID8g InMiIDogIiIsCiAgCSAgICBkYXRhLmNwX25kcml2ZXMsIChkYXRhLmNwX25kcml2ZXMgPiAxKSA/ ICJzIiA6ICIiLAogIAkgICAgZGF0YS5jcF9ucGlja2VycywgKGRhdGEuY3BfbnBpY2tlcnMgPiAx KSA/ICJzIiA6ICIiKTsKICAJaWYgKGRhdGEuY3BfbnBvcnRhbHMpCiEgCQkodm9pZCkgcHJpbnRm KCIsICVkIHBvcnRhbCVzIiwgZGF0YS5jcF9ucG9ydGFscywKICAJCSAgICAoZGF0YS5jcF9ucG9y dGFscyA+IDEpID8gInMiIDogIiIpOwohIAkodm9pZCkgcHJpbnRmKCJcbiVzOiBjdXJyZW50IHBp Y2tlcjogJWRcbiIsIGNoYW5nZXJfbmFtZSwKISAJCWRhdGEuY3BfY3VycGlja2VyKTsKICAKICAJ cmV0dXJuICgwKTsKICAKICAgdXNhZ2U6CiEgCSh2b2lkKSBmcHJpbnRmKHN0ZGVyciwgInVzYWdl OiBjaGlvICVzXG4iLCBjbmFtZSk7CiAgCXJldHVybiAoMSk7CiAgfQogIAorIC8qIEFSR1NVU0VE ICovCiAgc3RhdGljIGludAogIGRvX2dldHBpY2tlcihjbmFtZSwgYXJnYywgYXJndikKICAJY2hh ciAqY25hbWU7CioqKioqKioqKioqKioqKgoqKiogNDE4LDQyOSAqKioqCiAgCWlmIChpb2N0bChj aGFuZ2VyX2ZkLCBDSElPR1BJQ0tFUiwgKGNoYXIgKikmcGlja2VyKSkKICAJCWVycigxLCAiJXM6 IENISU9HUElDS0VSIiwgY2hhbmdlcl9uYW1lKTsKICAKISAJcHJpbnRmKCIlczogY3VycmVudCBw aWNrZXI6ICVkXG4iLCBjaGFuZ2VyX25hbWUsIHBpY2tlcik7CiAgCiAgCXJldHVybiAoMCk7CiAg CiAgIHVzYWdlOgohIAlmcHJpbnRmKHN0ZGVyciwgInVzYWdlOiBjaGlvICVzXG4iLCBjbmFtZSk7 CiAgCXJldHVybiAoMSk7CiAgfQogIAotLS0gNDMyLDQ0MyAtLS0tCiAgCWlmIChpb2N0bChjaGFu Z2VyX2ZkLCBDSElPR1BJQ0tFUiwgKGNoYXIgKikmcGlja2VyKSkKICAJCWVycigxLCAiJXM6IENI SU9HUElDS0VSIiwgY2hhbmdlcl9uYW1lKTsKICAKISAJKHZvaWQpIHByaW50ZigiJXM6IGN1cnJl bnQgcGlja2VyOiAlZFxuIiwgY2hhbmdlcl9uYW1lLCBwaWNrZXIpOwogIAogIAlyZXR1cm4gKDAp OwogIAogICB1c2FnZToKISAJKHZvaWQpIGZwcmludGYoc3RkZXJyLCAidXNhZ2U6IGNoaW8gJXNc biIsIGNuYW1lKTsKICAJcmV0dXJuICgxKTsKICB9CiAgCioqKioqKioqKioqKioqKgoqKiogNDUy LDQ1OCAqKioqCiAgCXJldHVybiAoMCk7CiAgCiAgIHVzYWdlOgohIAlmcHJpbnRmKHN0ZGVyciwg InVzYWdlOiBjaGlvICVzIDxwaWNrZXI+XG4iLCBjbmFtZSk7CiAgCXJldHVybiAoMSk7CiAgfQog IAotLS0gNDY2LDQ3MiAtLS0tCiAgCXJldHVybiAoMCk7CiAgCiAgIHVzYWdlOgohIAkodm9pZCkg ZnByaW50ZihzdGRlcnIsICJ1c2FnZTogY2hpbyAlcyA8cGlja2VyPlxuIiwgY25hbWUpOwogIAly ZXR1cm4gKDEpOwogIH0KICAKKioqKioqKioqKioqKioqCioqKiA0NjUsNDc2ICoqKioKICAJc3Ry dWN0IGNoYW5nZXJfZWxlbWVudF9zdGF0dXMgY21kOwogIAlzdHJ1Y3QgY2hhbmdlcl9wYXJhbXMg ZGF0YTsKICAJdV9pbnQ4X3QgKnN0YXR1c3A7CiEgCWludCBpLCBjb3VudCwgY2hldCwgc2NoZXQs IGVjaGV0OwogIAljaGFyICpkZXNjcmlwdGlvbjsKICAKLSAJY291bnQgPSAwOwotIAlkZXNjcmlw dGlvbiA9IE5VTEw7Ci0gCiAgCS8qCiAgCSAqIE9uIGEgc3RhdHVzIGNvbW1hbmQsIHdlIGV4cGVj dCB0aGUgZm9sbG93aW5nOgogIAkgKgotLS0gNDc5LDQ4OCAtLS0tCiAgCXN0cnVjdCBjaGFuZ2Vy X2VsZW1lbnRfc3RhdHVzIGNtZDsKICAJc3RydWN0IGNoYW5nZXJfcGFyYW1zIGRhdGE7CiAgCXVf aW50OF90ICpzdGF0dXNwOwohIAlpbnQgaSwgY2hldCwgc2NoZXQsIGVjaGV0OwohIAlzaXplX3Qg Y291bnQ7CiAgCWNoYXIgKmRlc2NyaXB0aW9uOwogIAogIAkvKgogIAkgKiBPbiBhIHN0YXR1cyBj b21tYW5kLCB3ZSBleHBlY3QgdGhlIGZvbGxvd2luZzoKICAJICoKKioqKioqKioqKioqKioqCioq KiA0OTAsNDk2ICoqKioKICAJICogR2V0IHBhcmFtcyBmcm9tIGNoYW5nZXIuICBTcGVjaWZpY2Fs bHksIHdlIG5lZWQgdGhlIGVsZW1lbnQKICAJICogY291bnRzLgogIAkgKi8KISAJYnplcm8oJmRh dGEsIHNpemVvZihkYXRhKSk7CiAgCWlmIChpb2N0bChjaGFuZ2VyX2ZkLCBDSElPR1BBUkFNUywg KGNoYXIgKikmZGF0YSkpCiAgCQllcnIoMSwgIiVzOiBDSElPR1BBUkFNUyIsIGNoYW5nZXJfbmFt ZSk7CiAgCi0tLSA1MDIsNTA4IC0tLS0KICAJICogR2V0IHBhcmFtcyBmcm9tIGNoYW5nZXIuICBT cGVjaWZpY2FsbHksIHdlIG5lZWQgdGhlIGVsZW1lbnQKICAJICogY291bnRzLgogIAkgKi8KISAJ KHZvaWQpIG1lbXNldCgmZGF0YSwgMCwgc2l6ZW9mKGRhdGEpKTsKICAJaWYgKGlvY3RsKGNoYW5n ZXJfZmQsIENISU9HUEFSQU1TLCAoY2hhciAqKSZkYXRhKSkKICAJCWVycigxLCAiJXM6IENISU9H UEFSQU1TIiwgY2hhbmdlcl9uYW1lKTsKICAKKioqKioqKioqKioqKioqCioqKiA1MjIsNTM0ICoq KioKICAJCQljb3VudCA9IGRhdGEuY3BfbmRyaXZlczsKICAJCQlkZXNjcmlwdGlvbiA9ICJkcml2 ZSI7CiAgCQkJYnJlYWs7CiAgCQl9CiAgCiAgCQlpZiAoY291bnQgPT0gMCkgewogIAkJCWlmIChh cmdjID09IDApCiAgCQkJCWNvbnRpbnVlOwogIAkJCWVsc2UgewohIAkJCQlwcmludGYoIiVzOiBu byAlcyBlbGVtZW50c1xuIiwKICAJCQkJICAgIGNoYW5nZXJfbmFtZSwgZGVzY3JpcHRpb24pOwog IAkJCQlyZXR1cm4gKDApOwogIAkJCX0KLS0tIDUzNCw1NTEgLS0tLQogIAkJCWNvdW50ID0gZGF0 YS5jcF9uZHJpdmVzOwogIAkJCWRlc2NyaXB0aW9uID0gImRyaXZlIjsKICAJCQlicmVhazsKKyAK KyAJCWRlZmF1bHQ6CisgCQkJLyogVG8gYXBwZWFzZSBnY2MgLVd1bmluaXRpYWxpemVkLiAqLwor IAkJCWNvdW50ID0gMDsKKyAJCQlkZXNjcmlwdGlvbiA9IE5VTEw7CiAgCQl9CiAgCiAgCQlpZiAo Y291bnQgPT0gMCkgewogIAkJCWlmIChhcmdjID09IDApCiAgCQkJCWNvbnRpbnVlOwogIAkJCWVs c2UgewohIAkJCQkodm9pZCkgcHJpbnRmKCIlczogbm8gJXMgZWxlbWVudHNcbiIsCiAgCQkJCSAg ICBjaGFuZ2VyX25hbWUsIGRlc2NyaXB0aW9uKTsKICAJCQkJcmV0dXJuICgwKTsKICAJCQl9Cioq KioqKioqKioqKioqKgoqKiogNTM4LDU0NSAqKioqCiAgCQlpZiAoKHN0YXR1c3AgPSAodV9pbnQ4 X3QgKiltYWxsb2MoY291bnQpKSA9PSBOVUxMKQogIAkJCWVycngoMSwgImNhbid0IGFsbG9jYXRl IHN0YXR1cyBzdG9yYWdlIik7CiAgCiEgCQliemVybyhzdGF0dXNwLCBjb3VudCk7CiEgCQliemVy bygmY21kLCBzaXplb2YoY21kKSk7CiAgCiAgCQljbWQuY2VzX3R5cGUgPSBjaGV0OwogIAkJY21k LmNlc19kYXRhID0gc3RhdHVzcDsKLS0tIDU1NSw1NjIgLS0tLQogIAkJaWYgKChzdGF0dXNwID0g KHVfaW50OF90ICopbWFsbG9jKGNvdW50KSkgPT0gTlVMTCkKICAJCQllcnJ4KDEsICJjYW4ndCBh bGxvY2F0ZSBzdGF0dXMgc3RvcmFnZSIpOwogIAohIAkJKHZvaWQpIG1lbXNldChzdGF0dXNwLCAw LCBjb3VudCk7CiEgCQkodm9pZCkgbWVtc2V0KCZjbWQsIDAsIHNpemVvZihjbWQpKTsKICAKICAJ CWNtZC5jZXNfdHlwZSA9IGNoZXQ7CiAgCQljbWQuY2VzX2RhdGEgPSBzdGF0dXNwOwoqKioqKioq KioqKioqKioKKioqIDU1MSw1NTcgKioqKgogIAogIAkJLyogRHVtcCB0aGUgc3RhdHVzIGZvciBl YWNoIGVsZW1lbnQgb2YgdGhpcyB0eXBlLiAqLwogIAkJZm9yIChpID0gMDsgaSA8IGNvdW50OyAr K2kpIHsKISAJCQlwcmludGYoIiVzICVkOiAlc1xuIiwgZGVzY3JpcHRpb24sIGksCiAgCQkJICAg IGJpdHNfdG9fc3RyaW5nKHN0YXR1c3BbaV0sIENFU1RBVFVTX0JJVFMpKTsKICAJCX0KICAKLS0t IDU2OCw1NzQgLS0tLQogIAogIAkJLyogRHVtcCB0aGUgc3RhdHVzIGZvciBlYWNoIGVsZW1lbnQg b2YgdGhpcyB0eXBlLiAqLwogIAkJZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKISAJCQko dm9pZCkgcHJpbnRmKCIlcyAlZDogJXNcbiIsIGRlc2NyaXB0aW9uLCBpLAogIAkJCSAgICBiaXRz X3RvX3N0cmluZyhzdGF0dXNwW2ldLCBDRVNUQVRVU19CSVRTKSk7CiAgCQl9CiAgCioqKioqKioq KioqKioqKgoqKiogNTYxLDU3MCAqKioqCiAgCXJldHVybiAoMCk7CiAgCiAgIHVzYWdlOgohIAlm cHJpbnRmKHN0ZGVyciwgInVzYWdlOiBjaGlvICVzIFs8ZWxlbWVudCB0eXBlPl1cbiIsIGNuYW1l KTsKICAJcmV0dXJuICgxKTsKICB9CiAgCiAgc3RhdGljIGludAogIHBhcnNlX2VsZW1lbnRfdHlw ZShjcCkKICAJY2hhciAqY3A7Ci0tLSA1NzgsNjAxIC0tLS0KICAJcmV0dXJuICgwKTsKICAKICAg dXNhZ2U6CiEgCSh2b2lkKSBmcHJpbnRmKHN0ZGVyciwgInVzYWdlOiBjaGlvICVzIFs8ZWxlbWVu dCB0eXBlPl1cbiIsIGNuYW1lKTsKICAJcmV0dXJuICgxKTsKICB9CiAgCisgLyogQVJHU1VTRUQg Ki8KKyBzdGF0aWMgaW50CisgZG9faWVsZW0oY25hbWUsIGFyZ2MsIGFyZ3YpCisgCWNoYXIgKmNu YW1lOworIAlpbnQgYXJnYzsKKyAJY2hhciAqKmFyZ3Y7CisgeworIAlpZiAoaW9jdGwoY2hhbmdl cl9mZCwgQ0hJT0lFTEVNLCBOVUxMKSkKKyAJCWVycigxLCAiJXM6IENISU9JRUxFTSIsIGNoYW5n ZXJfbmFtZSk7CisgCisgCXJldHVybiAoMCk7CisgfQorIAorIAogIHN0YXRpYyBpbnQKICBwYXJz ZV9lbGVtZW50X3R5cGUoY3ApCiAgCWNoYXIgKmNwOwoqKioqKioqKioqKioqKioKKioqIDU3Niw1 ODEgKioqKgotLS0gNjA3LDYxMyAtLS0tCiAgCQkJcmV0dXJuIChlbGVtZW50c1tpXS5ldF90eXBl KTsKICAKICAJZXJyeCgxLCAiaW52YWxpZCBlbGVtZW50IHR5cGUgYCVzJyIsIGNwKTsKKyAJLyog Tk9UUkVBQ0hFRCAqLwogIH0KICAKICBzdGF0aWMgaW50CioqKioqKioqKioqKioqKgoqKiogNjAz LDYwOCAqKioqCi0tLSA2MzUsNjQxIC0tLS0KICAJCXJldHVybiAodmFsKTsKICAKICAJZXJyeCgx LCAiaW52YWxpZCBtb2RpZmllciBgJXMnIiwgY3ApOworIAkvKiBOT1RSRUFDSEVEICovCiAgfQog IAogIHN0YXRpYyBpbnQKKioqKioqKioqKioqKioqCioqKiA2MjgsNjM0ICoqKioKICAJc3RhdGlj IGNoYXIgYnVmWzEyOF07CiAgCiAgCWJwID0gYnVmOwohIAliemVybyhidWYsIHNpemVvZihidWYp KTsKICAKICAJZm9yIChzZXAgPSAnPCc7IChmID0gKmNwKyspICE9IDA7IGNwID0gbnApIHsKICAJ CWZvciAobnAgPSBjcDsgKm5wID49ICcgJzspCi0tLSA2NjEsNjY3IC0tLS0KICAJc3RhdGljIGNo YXIgYnVmWzEyOF07CiAgCiAgCWJwID0gYnVmOwohIAkodm9pZCkgbWVtc2V0KGJ1ZiwgMCwgc2l6 ZW9mKGJ1ZikpOwogIAogIAlmb3IgKHNlcCA9ICc8JzsgKGYgPSAqY3ArKykgIT0gMDsgY3AgPSBu cCkgewogIAkJZm9yIChucCA9IGNwOyAqbnAgPj0gJyAnOykKKioqKioqKioqKioqKioqCioqKiA2 MzYsNjQyICoqKioKICAJCWlmICgodiAmICgxIDw8IChmIC0gMSkpKSA9PSAwKQogIAkJCWNvbnRp bnVlOwogIAkJYnAgKz0gc25wcmludGYoYnAsIHNpemVvZihidWYpIC0gKGJwIC0gJmJ1ZlswXSks CiEgCQkJCQkJIiVjJS4qcyIsIHNlcCwgbnAgLSBjcCwgY3ApOwogIAkJc2VwID0gJywnOwogIAl9 CiAgCWlmIChzZXAgIT0gJzwnKQotLS0gNjY5LDY3NSAtLS0tCiAgCQlpZiAoKHYgJiAoMSA8PCAo ZiAtIDEpKSkgPT0gMCkKICAJCQljb250aW51ZTsKICAJCWJwICs9IHNucHJpbnRmKGJwLCBzaXpl b2YoYnVmKSAtIChicCAtICZidWZbMF0pLAohIAkJCQkiJWMlLipzIiwgc2VwLCAoaW50KShsb25n KShucCAtIGNwKSwgY3ApOwogIAkJc2VwID0gJywnOwogIAl9CiAgCWlmIChzZXAgIT0gJzwnKQoq KioqKioqKioqKioqKioKKioqIDY0OCw2NTQgKioqKgogIHN0YXRpYyB2b2lkCiAgY2xlYW51cCgp CiAgewotIAogIAkvKiBTaW1wbGUgZW5vdWdoLi4uICovCiAgCSh2b2lkKWNsb3NlKGNoYW5nZXJf ZmQpOwogIH0KLS0tIDY4MSw2ODYgLS0tLQpPbmx5IGluIC91c3Ivc3JjL2Jpbi9jaGlvOiBjaGlv Lm8KZGlmZiAtYyAtciAvdXNyL3NyYy9iaW4vY2hpby9kZWZzLmggL3Vzci9sb2NhbC9zcmMvYmlu L2NoaW8vZGVmcy5oCioqKiAvdXNyL3NyYy9iaW4vY2hpby9kZWZzLmgJVGh1IE1hciAgNiAwOToz MDowNiAxOTk3Ci0tLSAvdXNyL2xvY2FsL3NyYy9iaW4vY2hpby9kZWZzLmgJU3VuIEZlYiAgMSAy MDoxODowNiAxOTk4CioqKioqKioqKioqKioqKgoqKiogMTMsMTkgKioqKgogICAqICAgIG5vdGlj ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp biB0aGUKICAgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlh bHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQohICAqICAgIG11 c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudHM6CiAgICoJVGhpcyBwcm9k dWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSBKYXNvbiBSLiBUaG9ycGUKICAgKglm b3IgQW5kIENvbW11bmljYXRpb25zLCBodHRwOi8vd3d3LmFuZC5jb20vCiAgICogNC4gVGhlIG5h bWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy b2R1Y3RzCi0tLSAxMywxOSAtLS0tCiAgICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0 aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogICAqICAgIGRvY3VtZW50 YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp b24uCiAgICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVz IG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCiEgICogICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dp bmcgYWNrbm93bGVkZ21lbnRzOgogICAqCVRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBk ZXZlbG9wZWQgYnkgSmFzb24gUi4gVGhvcnBlCiAgICoJZm9yIEFuZCBDb21tdW5pY2F0aW9ucywg aHR0cDovL3d3dy5hbmQuY29tLwogICAqIDQuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5v dCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cwpkaWZmIC1jIC1yIC91c3Iv c3JjL2Jpbi9jaGlvL3BhdGhuYW1lcy5oIC91c3IvbG9jYWwvc3JjL2Jpbi9jaGlvL3BhdGhuYW1l cy5oCioqKiAvdXNyL3NyYy9iaW4vY2hpby9wYXRobmFtZXMuaAlUaHUgTWFyICA2IDA5OjMwOjA2 IDE5OTcKLS0tIC91c3IvbG9jYWwvc3JjL2Jpbi9jaGlvL3BhdGhuYW1lcy5oCU1vbiBGZWIgIDIg MTk6MjM6MDYgMTk5OAoqKioqKioqKioqKioqKioKKioqIDEzLDE5ICoqKioKICAgKiAgICBub3Rp Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg aW4gdGhlCiAgICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJp YWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKISAgKiAgICBt dXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1lbnRzOgogICAqCVRoaXMgcHJv ZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgSmFzb24gUi4gVGhvcnBlCiAgICoJ Zm9yIEFuZCBDb21tdW5pY2F0aW9ucywgaHR0cDovL3d3dy5hbmQuY29tLwogICAqIDQuIFRoZSBu YW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw cm9kdWN0cwotLS0gMTMsMTkgLS0tLQogICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAgKiAgICBkb2N1bWVu dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0 aW9uLgogICAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJl cyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQohICAqICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93 aW5nIGFja25vd2xlZGdtZW50czoKICAgKglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUg ZGV2ZWxvcGVkIGJ5IEphc29uIFIuIFRob3JwZQogICAqCWZvciBBbmQgQ29tbXVuaWNhdGlvbnMs IGh0dHA6Ly93d3cuYW5kLmNvbS8KICAgKiA0LiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBu b3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKKioqIC91c3Ivc3JjL3N5 cy9zeXMvY2hpby5oCVR1ZSBNYXIgMTEgMTM6Mzg6MDIgMTk5NwotLS0gL3Vzci9sb2NhbC9zcmMv c3lzL3N5cy9jaGlvLmgJTW9uIEZlYiAgMiAyMDoxNToyMCAxOTk4CioqKioqKioqKioqKioqKgoq KiogMTUxLDE1NiAqKioqCi0tLSAxNTEsMTU3IC0tLS0KICAjZGVmaW5lIENISU9HUElDS0VSCV9J T1IoJ2MnLCAweDA0LCBpbnQpCiAgI2RlZmluZSBDSElPU1BJQ0tFUglfSU9XKCdjJywgMHgwNSwg aW50KQogICNkZWZpbmUgQ0hJT0dQQVJBTVMJX0lPUignYycsIDB4MDYsIHN0cnVjdCBjaGFuZ2Vy X3BhcmFtcykKKyAjZGVmaW5lIENISU9JRUxFTQkgX0lPKCdjJywgMHgwNykKICAjZGVmaW5lIENI SU9HU1RBVFVTCV9JT1coJ2MnLCAweDA4LCBzdHJ1Y3QgY2hhbmdlcl9lbGVtZW50X3N0YXR1cykK ICAKICAjZW5kaWYgLyogIV9TWVNfQ0hJT19IXyAqLwo= ------=_NextPart_000_003A_01BD34D9.4174C080 Content-Type: application/octet-stream; name="bin.cp.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="bin.cp.diff" T25seSBpbiAvdXNyL3NyYy9iaW4vY3A6IGNwCmRpZmYgLWMgLXIgL3Vzci9zcmMvYmluL2NwL2Nw LjEgL3Vzci9sb2NhbC9zcmMvYmluL2NwL2NwLjEKKioqIC91c3Ivc3JjL2Jpbi9jcC9jcC4xCVNh dCBGZWIgMjIgMDg6MDE6MzIgMTk5NwotLS0gL3Vzci9sb2NhbC9zcmMvYmluL2NwL2NwLjEJVHVl IEZlYiAgMyAxOTo0MjoxMSAxOTk4CioqKioqKioqKioqKioqKgoqKiogMTMsMTkgKioqKgogIC5c IiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp c2NsYWltZXIgaW4gdGhlCiAgLlwiICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgLlwiIDMuIEFsbCBhZHZlcnRp c2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2Fy ZQohIC5cIiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1lbnQ6CiAg LlwiCVRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIFVuaXZl cnNpdHkgb2YKICAuXCIJQ2FsaWZvcm5pYSwgQmVya2VsZXkgYW5kIGl0cyBjb250cmlidXRvcnMu CiAgLlwiIDQuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1l cyBvZiBpdHMgY29udHJpYnV0b3JzCi0tLSAxMywxOSAtLS0tCiAgLlwiICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK ICAuXCIgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp dGggdGhlIGRpc3RyaWJ1dGlvbi4KICAuXCIgMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBt ZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCiEgLlwiICAgIG11c3Qg ZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgogIC5cIglUaGlzIHByb2R1Y3Qg aW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBVbml2ZXJzaXR5IG9mCiAgLlwiCUNh bGlmb3JuaWEsIEJlcmtlbGV5IGFuZCBpdHMgY29udHJpYnV0b3JzLgogIC5cIiA0LiBOZWl0aGVy IHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1 dG9ycwoqKioqKioqKioqKioqKioKKioqIDQ3LDYyICoqKioKICAuRmwgUgogIC5PcCBGbCBIIHwg RmwgTCB8IEZsIFAKICAuT2MKISAuT3AgRmwgZiB8IGkKISAuT3AgRmwgcAogIC5BciBzb3VyY2Vf ZmlsZSB0YXJnZXRfZmlsZQogIC5ObSBjcAogIC5PbwogIC5GbCBSCiAgLk9wIEZsIEggfCBGbCBM IHwgRmwgUAogIC5PYwohIC5PcCBGbCBmIHwgaQohIC5PcCBGbCBwCiAgLkFyIHNvdXJjZV9maWxl IC4uLiB0YXJnZXRfZGlyZWN0b3J5CiAgLlNoIERFU0NSSVBUSU9OCiAgSW4gdGhlIGZpcnN0IHN5 bm9wc2lzIGZvcm0sIHRoZQotLS0gNDcsNjAgLS0tLQogIC5GbCBSCiAgLk9wIEZsIEggfCBGbCBM IHwgRmwgUAogIC5PYwohIC5PcCBGbCBmaXAKICAuQXIgc291cmNlX2ZpbGUgdGFyZ2V0X2ZpbGUK ICAuTm0gY3AKICAuT28KICAuRmwgUgogIC5PcCBGbCBIIHwgRmwgTCB8IEZsIFAKICAuT2MKISAu T3AgRmwgZmlwCiAgLkFyIHNvdXJjZV9maWxlIC4uLiB0YXJnZXRfZGlyZWN0b3J5CiAgLlNoIERF U0NSSVBUSU9OCiAgSW4gdGhlIGZpcnN0IHN5bm9wc2lzIGZvcm0sIHRoZQoqKioqKioqKioqKioq KioKKioqIDEwNywxMjMgKioqKgogIGNyZWF0ZSBhIG5ldyBmaWxlLCB3aXRob3V0IHByb21wdGlu ZyBmb3IgY29uZmlybWF0aW9uCiAgcmVnYXJkbGVzcyBvZiBpdHMgcGVybWlzc2lvbnMuCiAgKFRo ZQotIC5GbCBmCi0gb3B0aW9uIG92ZXJyaWRlcyBhbnkgcHJldmlvdXMKICAuRmwgaQohIG9wdGlv bnMuKQogIC5JdCBGbCBpCiAgQ2F1c2VzCiAgLk5tIGNwCiAgdG8gd3JpdGUgYSBwcm9tcHQgdG8g dGhlIHN0YW5kYXJkIGVycm9yIG91dHB1dCBiZWZvcmUgY29weWluZyBhIGZpbGUKICB0aGF0IHdv dWxkIG92ZXJ3cml0ZSBhbiBleGlzdGluZyBmaWxlLgogIElmIHRoZSByZXNwb25zZSBmcm9tIHRo ZSBzdGFuZGFyZCBpbnB1dCBiZWdpbnMgd2l0aCB0aGUgY2hhcmFjdGVyCiEgLlNxIExpIHkgCiAg b3IKICAuU3EgTGkgWSAsCiAgdGhlIGZpbGUgY29weSBpcyBhdHRlbXB0ZWQuCi0tLSAxMDUsMTIx IC0tLS0KICBjcmVhdGUgYSBuZXcgZmlsZSwgd2l0aG91dCBwcm9tcHRpbmcgZm9yIGNvbmZpcm1h dGlvbgogIHJlZ2FyZGxlc3Mgb2YgaXRzIHBlcm1pc3Npb25zLgogIChUaGUKICAuRmwgaQohIG9w dGlvbiBpcyBpZ25vcmVkIGlmIHRoZQohIC5GbCBmCiEgb3B0aW9uIGlzIHNwZWNpZmllZC4pCiAg Lkl0IEZsIGkKICBDYXVzZXMKICAuTm0gY3AKICB0byB3cml0ZSBhIHByb21wdCB0byB0aGUgc3Rh bmRhcmQgZXJyb3Igb3V0cHV0IGJlZm9yZSBjb3B5aW5nIGEgZmlsZQogIHRoYXQgd291bGQgb3Zl cndyaXRlIGFuIGV4aXN0aW5nIGZpbGUuCiAgSWYgdGhlIHJlc3BvbnNlIGZyb20gdGhlIHN0YW5k YXJkIGlucHV0IGJlZ2lucyB3aXRoIHRoZSBjaGFyYWN0ZXIKISAuU3EgTGkgeSAsCiAgb3IKICAu U3EgTGkgWSAsCiAgdGhlIGZpbGUgY29weSBpcyBhdHRlbXB0ZWQuCioqKioqKioqKioqKioqKgoq KiogMTk0LDIwMCAqKioqCiAgLkZsIFIKICBvcHRpb24gaXMgc3BlY2lmaWVkLgogIEluIGFkZGl0 aW9uLCB0aGVzZSBvcHRpb25zIG92ZXJyaWRlIGVhY2ggb3RoZXIgYW5kIHRoZQohIGNvbW1hbmQn cyBhY3Rpb25zIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBsYXN0IG9uZSBzcGVjaWZpZWQuCiAgLlBw CiAgLk5tIENwCiAgZXhpdHMgMCBvbiBzdWNjZXNzLCA+MCBpZiBhbiBlcnJvciBvY2N1cnJlZC4K LS0tIDE5MiwxOTggLS0tLQogIC5GbCBSCiAgb3B0aW9uIGlzIHNwZWNpZmllZC4KICBJbiBhZGRp dGlvbiwgdGhlc2Ugb3B0aW9ucyBvdmVycmlkZSBlYWNoIG90aGVyIGFuZCB0aGUKISB1dGlsaXR5 J3MgYWN0aW9ucyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgbGFzdCBvbmUgc3BlY2lmaWVkLgogIC5Q cAogIC5ObSBDcAogIGV4aXRzIDAgb24gc3VjY2VzcywgPjAgaWYgYW4gZXJyb3Igb2NjdXJyZWQu CioqKioqKioqKioqKioqKgoqKiogMjE2LDIyNiAqKioqCiAgLlNoIFNUQU5EQVJEUwogIFRoZQog IC5ObSBjcAohIGNvbW1hbmQgaXMgZXhwZWN0ZWQgdG8gYmUKICAuU3QgLXAxMDAzLjIKICBjb21w YXRpYmxlLgogIC5TaCBISVNUT1JZCiAgQQogIC5ObQohIGNvbW1hbmQgYXBwZWFyZWQgaW4KICAu QXQgdjEgLgotLS0gMjE0LDIyNCAtLS0tCiAgLlNoIFNUQU5EQVJEUwogIFRoZQogIC5ObSBjcAoh IHV0aWxpdHkgaXMgZXhwZWN0ZWQgdG8gYmUKICAuU3QgLXAxMDAzLjIKICBjb21wYXRpYmxlLgog IC5TaCBISVNUT1JZCiAgQQogIC5ObQohIHV0aWxpdHkgYXBwZWFyZWQgaW4KICAuQXQgdjEgLgpk aWZmIC1jIC1yIC91c3Ivc3JjL2Jpbi9jcC9jcC5jIC91c3IvbG9jYWwvc3JjL2Jpbi9jcC9jcC5j CioqKiAvdXNyL3NyYy9iaW4vY3AvY3AuYwlGcmkgTWFyIDI4IDA5OjI0OjE0IDE5OTcKLS0tIC91 c3IvbG9jYWwvc3JjL2Jpbi9jcC9jcC5jCVR1ZSBGZWIgIDMgMjA6Mzk6MzkgMTk5OAoqKioqKioq KioqKioqKioKKioqIDc5LDg2ICoqKioKICAjaW5jbHVkZSAiZXh0ZXJuLmgiCiAgCiAgI2RlZmlu ZQlTVFJJUF9UUkFJTElOR19TTEFTSChwKSB7CQkJCQlcCiEgICAgICAgICB3aGlsZSAoKHApLnBf ZW5kID4gKHApLnBfcGF0aCArIDEgJiYgKHApLnBfZW5kWy0xXSA9PSAnLycpCVwKISAgICAgICAg ICAgICAgICAgKi0tKHApLnBfZW5kID0gMDsJCQkJCVwKICB9CiAgCiAgUEFUSF9UIHRvID0geyB0 by5wX3BhdGgsICIiIH07Ci0tLSA3OSw4NiAtLS0tCiAgI2luY2x1ZGUgImV4dGVybi5oIgogIAog ICNkZWZpbmUJU1RSSVBfVFJBSUxJTkdfU0xBU0gocCkgewkJCQkJXAohIAl3aGlsZSAoKHApLnBf ZW5kID4gKHApLnBfcGF0aCArIDEgJiYgKHApLnBfZW5kWy0xXSA9PSAnLycpCVwKISAJCSotLShw KS5wX2VuZCA9ICdcMCc7CQkJCQlcCiAgfQogIAogIFBBVEhfVCB0byA9IHsgdG8ucF9wYXRoLCAi IiB9OwoqKioqKioqKioqKioqKioKKioqIDkxLDk2ICoqKioKLS0tIDkxLDk3IC0tLS0KICAKICBl bnVtIG9wIHsgRklMRV9UT19GSUxFLCBGSUxFX1RPX0RJUiwgRElSX1RPX0RORSB9OwogIAorIGlu dCBtYWluIF9fUCgoaW50LCBjaGFyICpbXSkpOwogIGludCBjb3B5IF9fUCgoY2hhciAqW10sIGVu dW0gb3AsIGludCkpOwogIGludCBtYXN0ZXJjbXAgX19QKChjb25zdCBGVFNFTlQgKiosIGNvbnN0 IEZUU0VOVCAqKikpOwogIAoqKioqKioqKioqKioqKioKKioqIDEyMywxMzQgKioqKgogIAkJCVJm bGFnID0gMTsKICAJCQlicmVhazsKICAJCWNhc2UgJ2YnOgotIAkJCWZmbGFnID0gMTsKICAJCQlp ZmxhZyA9IDA7CiAgCQkJYnJlYWs7CiAgCQljYXNlICdpJzoKISAJCQlpZmxhZyA9IDE7CiEgCQkJ ZmZsYWcgPSAwOwogIAkJCWJyZWFrOwogIAkJY2FzZSAncCc6CiAgCQkJcGZsYWcgPSAxOwotLS0g MTI0LDEzMyAtLS0tCiAgCQkJUmZsYWcgPSAxOwogIAkJCWJyZWFrOwogIAkJY2FzZSAnZic6CiAg CQkJaWZsYWcgPSAwOwogIAkJCWJyZWFrOwogIAkJY2FzZSAnaSc6CiEgCQkJaWZsYWcgPSBpc2F0 dHkoZmlsZW5vKHN0ZGluKSk7CiAgCQkJYnJlYWs7CiAgCQljYXNlICdwJzoKICAJCQlwZmxhZyA9 IDE7CioqKioqKioqKioqKioqKgoqKiogMTM2LDE0MSAqKioqCi0tLSAxMzUsMTQxIC0tLS0KICAJ CWNhc2UgJ3InOgogIAkJCXJmbGFnID0gMTsKICAJCQlicmVhazsKKyAJCWNhc2UgJz8nOgogIAkJ ZGVmYXVsdDoKICAJCQl1c2FnZSgpOwogIAkJCWJyZWFrOwoqKioqKioqKioqKioqKioKKioqIDE3 NywxOTEgKioqKgogIAogIAkvKiBTYXZlIHRoZSB0YXJnZXQgYmFzZSBpbiAidG8iLiAqLwogIAl0 YXJnZXQgPSBhcmd2Wy0tYXJnY107CiEgCWlmIChzdHJsZW4odGFyZ2V0KSA+IE1BWFBBVEhMRU4p CiAgCQllcnJ4KDEsICIlczogbmFtZSB0b28gbG9uZyIsIHRhcmdldCk7CiAgCSh2b2lkKXN0cmNw eSh0by5wX3BhdGgsIHRhcmdldCk7CiAgCXRvLnBfZW5kID0gdG8ucF9wYXRoICsgc3RybGVuKHRv LnBfcGF0aCk7CiEgICAgICAgICBpZiAodG8ucF9wYXRoID09IHRvLnBfZW5kKSB7CiAgCQkqdG8u cF9lbmQrKyA9ICcuJzsKISAJCSp0by5wX2VuZCA9IDA7CiAgCX0KISAgICAgICAgIFNUUklQX1RS QUlMSU5HX1NMQVNIKHRvKTsKICAJdG8udGFyZ2V0X2VuZCA9IHRvLnBfZW5kOwogIAogIAkvKiBT ZXQgZW5kIG9mIGFyZ3VtZW50IGxpc3QgZm9yIGZ0cygzKS4gKi8KLS0tIDE3NywxOTEgLS0tLQog IAogIAkvKiBTYXZlIHRoZSB0YXJnZXQgYmFzZSBpbiAidG8iLiAqLwogIAl0YXJnZXQgPSBhcmd2 Wy0tYXJnY107CiEgCWlmIChzdHJsZW4odGFyZ2V0KSA+PSBzaXplb2YodG8ucF9wYXRoKSkKICAJ CWVycngoMSwgIiVzOiBuYW1lIHRvbyBsb25nIiwgdGFyZ2V0KTsKICAJKHZvaWQpc3RyY3B5KHRv LnBfcGF0aCwgdGFyZ2V0KTsKICAJdG8ucF9lbmQgPSB0by5wX3BhdGggKyBzdHJsZW4odG8ucF9w YXRoKTsKISAJaWYgKHRvLnBfcGF0aCA9PSB0by5wX2VuZCkgewogIAkJKnRvLnBfZW5kKysgPSAn Lic7CiEgCQkqdG8ucF9lbmQgPSAnXDAnOwogIAl9CiEgCVNUUklQX1RSQUlMSU5HX1NMQVNIKHRv KTsKICAJdG8udGFyZ2V0X2VuZCA9IHRvLnBfZW5kOwogIAogIAkvKiBTZXQgZW5kIG9mIGFyZ3Vt ZW50IGxpc3QgZm9yIGZ0cygzKS4gKi8KKioqKioqKioqKioqKioqCioqKiAyNTMsMjYzICoqKioK ICAJc3RydWN0IHN0YXQgdG9fc3RhdDsKICAJRlRTICpmdHNwOwogIAlGVFNFTlQgKmN1cnI7CiEg CWludCBiYXNlID0gMCwgZG5lLCBubGVuLCBydmFsOwogIAljaGFyICpwLCAqdGFyZ2V0X21pZDsK ICAKICAJaWYgKChmdHNwID0gZnRzX29wZW4oYXJndiwgZnRzX29wdGlvbnMsIG1hc3RlcmNtcCkp ID09IE5VTEwpCiEgCQllcnIoMSwgTlVMTCk7CiAgCWZvciAocnZhbCA9IDA7IChjdXJyID0gZnRz X3JlYWQoZnRzcCkpICE9IE5VTEw7KSB7CiAgCQlzd2l0Y2ggKGN1cnItPmZ0c19pbmZvKSB7CiAg CQljYXNlIEZUU19OUzoKLS0tIDI1MywyNjUgLS0tLQogIAlzdHJ1Y3Qgc3RhdCB0b19zdGF0Owog IAlGVFMgKmZ0c3A7CiAgCUZUU0VOVCAqY3VycjsKISAJaW50IGJhc2UsIGRuZSwgbmxlbiwgcnZh bDsKICAJY2hhciAqcCwgKnRhcmdldF9taWQ7CiAgCisgCWJhc2UgPSAwOwkvKiBYWFggZ2NjIC1X dW5pbml0aWFsaXplZCAoc2VlIGNvbW1lbnQgYmVsb3cpICovCisgCiAgCWlmICgoZnRzcCA9IGZ0 c19vcGVuKGFyZ3YsIGZ0c19vcHRpb25zLCBtYXN0ZXJjbXApKSA9PSBOVUxMKQohIAkJZXJyKDEs IGFyZ3ZbMF0pOwogIAlmb3IgKHJ2YWwgPSAwOyAoY3VyciA9IGZ0c19yZWFkKGZ0c3ApKSAhPSBO VUxMOykgewogIAkJc3dpdGNoIChjdXJyLT5mdHNfaW5mbykgewogIAkJY2FzZSBGVFNfTlM6Cioq KioqKioqKioqKioqKgoqKiogMjc5LDI4NCAqKioqCi0tLSAyODEsMjk0IC0tLS0KICAgICAgICAg ICAgICAgICAgICogc291cmNlIG5hbWUgdG8gdGhlIHRhcmdldCBuYW1lLgogICAgICAgICAgICAg ICAgICAgKi8KICAJCWlmICh0eXBlICE9IEZJTEVfVE9fRklMRSkgeworIAkJCWlmICgoY3Vyci0+ ZnRzX25hbWVsZW4gKworIAkJCXRvLnRhcmdldF9lbmQgLSB0by5wX3BhdGggKyAxKSA+PSBzaXpl b2YodG8ucF9wYXRoKSkgeworIAkJCQl3YXJueCgiJXMvJXM6IG5hbWUgdG9vIGxvbmcgKG5vdCBj b3BpZWQpIiwKKyAJCQkJCXRvLnBfcGF0aCwgY3Vyci0+ZnRzX25hbWUpOworIAkJCQlydmFsID0g MTsKKyAJCQkJY29udGludWU7CisgCQkJfQorICAKICAJCQkvKgogIAkJCSAqIE5lZWQgdG8gcmVt ZW1iZXIgdGhlIHJvb3RzIG9mIHRyYXZlcnNhbHMgdG8gY3JlYXRlCiAgCQkJICogY29ycmVjdCBw YXRobmFtZXMuICBJZiB0aGVyZSdzIGEgZGlyZWN0b3J5IGJlaW5nCioqKioqKioqKioqKioqKgoq KiogMjg5LDI5NSAqKioqCiAgCQkJICogaXMgdGhlIGNhc2Ugd2hlcmUgdGhlIHRhcmdldCBleGlz dHMuCiAgCQkJICoKICAJCQkgKiBBbHNvLCBjaGVjayBmb3IgIi4uIi4gIFRoaXMgaXMgZm9yIGNv cnJlY3QgcGF0aAohIAkJCSAqIGNvbmNhdGVudGF0aW9uIGZvciBwYXRocyBlbmRpbmcgaW4gIi4u IiwgZS5nLgogIAkJCSAqCWNwIC1SIC4uIC90bXAKICAJCQkgKiBQYXRocyBlbmRpbmcgaW4gIi4u IiBhcmUgY2hhbmdlZCB0byAiLiIuICBUaGlzIGlzCiAgCQkJICogdHJpY2t5LCBidXQgc2VlbXMg dGhlIGVhc2llc3Qgd2F5IHRvIGZpeCB0aGUgcHJvYmxlbS4KLS0tIDI5OSwzMDUgLS0tLQogIAkJ CSAqIGlzIHRoZSBjYXNlIHdoZXJlIHRoZSB0YXJnZXQgZXhpc3RzLgogIAkJCSAqCiAgCQkJICog QWxzbywgY2hlY2sgZm9yICIuLiIuICBUaGlzIGlzIGZvciBjb3JyZWN0IHBhdGgKISAJCQkgKiBj b25jYXRlbmF0aW9uIGZvciBwYXRocyBlbmRpbmcgaW4gIi4uIiwgZS5nLgogIAkJCSAqCWNwIC1S IC4uIC90bXAKICAJCQkgKiBQYXRocyBlbmRpbmcgaW4gIi4uIiBhcmUgY2hhbmdlZCB0byAiLiIu ICBUaGlzIGlzCiAgCQkJICogdHJpY2t5LCBidXQgc2VlbXMgdGhlIGVhc2llc3Qgd2F5IHRvIGZp eCB0aGUgcHJvYmxlbS4KKioqKioqKioqKioqKioqCioqKiAzMTUsMzIyICoqKioKICAJCQl0YXJn ZXRfbWlkID0gdG8udGFyZ2V0X2VuZDsKICAJCQlpZiAoKnAgIT0gJy8nICYmIHRhcmdldF9taWRb LTFdICE9ICcvJykKICAJCQkJKnRhcmdldF9taWQrKyA9ICcvJzsKISAJCQkqdGFyZ2V0X21pZCA9 IDA7CiEgCQkJaWYgKHRhcmdldF9taWQgLSB0by5wX3BhdGggKyBubGVuID4gTUFYUEFUSExFTikg ewogIAkJCQl3YXJueCgiJXMlczogbmFtZSB0b28gbG9uZyAobm90IGNvcGllZCkiLAogIAkJCQkg ICAgdG8ucF9wYXRoLCBwKTsKICAJCQkJcnZhbCA9IDE7Ci0tLSAzMjUsMzMzIC0tLS0KICAJCQl0 YXJnZXRfbWlkID0gdG8udGFyZ2V0X2VuZDsKICAJCQlpZiAoKnAgIT0gJy8nICYmIHRhcmdldF9t aWRbLTFdICE9ICcvJykKICAJCQkJKnRhcmdldF9taWQrKyA9ICcvJzsKISAJCQkqdGFyZ2V0X21p ZCA9ICdcMCc7CiEgCQkJaWYgKHRhcmdldF9taWQgLSB0by5wX3BhdGggKyBubGVuID49CiEgCQkJ CXNpemVvZih0by5wX3BhdGgpKSB7CiAgCQkJCXdhcm54KCIlcyVzOiBuYW1lIHRvbyBsb25nIChu b3QgY29waWVkKSIsCiAgCQkJCSAgICB0by5wX3BhdGgsIHApOwogIAkJCQlydmFsID0gMTsKKioq KioqKioqKioqKioqCioqKiAzMjQsMzMwICoqKioKICAJCQl9CiAgCQkJKHZvaWQpc3RybmNhdCh0 YXJnZXRfbWlkLCBwLCBubGVuKTsKICAJCQl0by5wX2VuZCA9IHRhcmdldF9taWQgKyBubGVuOwoh IAkJCSp0by5wX2VuZCA9IDA7CiAgCQkJU1RSSVBfVFJBSUxJTkdfU0xBU0godG8pOwogIAkJfQog IAotLS0gMzM1LDM0MSAtLS0tCiAgCQkJfQogIAkJCSh2b2lkKXN0cm5jYXQodGFyZ2V0X21pZCwg cCwgbmxlbik7CiAgCQkJdG8ucF9lbmQgPSB0YXJnZXRfbWlkICsgbmxlbjsKISAJCQkqdG8ucF9l bmQgPSAnXDAnOwogIAkJCVNUUklQX1RSQUlMSU5HX1NMQVNIKHRvKTsKICAJCX0KICAKKioqKioq KioqKioqKioqCioqKiAzODMsMzkwICoqKioKICAJCQkvKgogIAkJCSAqIElmIG5vdCAtcCBhbmQg ZGlyZWN0b3J5IGRpZG4ndCBleGlzdCwgc2V0IGl0IHRvIGJlCiAgCQkJICogdGhlIHNhbWUgYXMg dGhlIGZyb20gZGlyZWN0b3J5LCB1bW9kaWZpZWQgYnkgdGhlCiEgICAgICAgICAgICAgICAgICAg ICAgICAgICogdW1hc2s7IGFyZ3VhYmx5IHdyb25nLCBidXQgaXQncyBiZWVuIHRoYXQgd2F5CiEg ICAgICAgICAgICAgICAgICAgICAgICAgICogZm9yZXZlci4KICAJCQkgKi8KICAJCQlpZiAocGZs YWcgJiYgc2V0ZmlsZShjdXJyLT5mdHNfc3RhdHAsIDApKQogIAkJCQlydmFsID0gMTsKLS0tIDM5 NCw0MDEgLS0tLQogIAkJCS8qCiAgCQkJICogSWYgbm90IC1wIGFuZCBkaXJlY3RvcnkgZGlkbid0 IGV4aXN0LCBzZXQgaXQgdG8gYmUKICAJCQkgKiB0aGUgc2FtZSBhcyB0aGUgZnJvbSBkaXJlY3Rv cnksIHVtb2RpZmllZCBieSB0aGUKISAJCQkgKiB1bWFzazsgYXJndWFibHkgd3JvbmcsIGJ1dCBp dCdzIGJlZW4gdGhhdCB3YXkKISAJCQkgKiBmb3JldmVyLgogIAkJCSAqLwogIAkJCWlmIChwZmxh ZyAmJiBzZXRmaWxlKGN1cnItPmZ0c19zdGF0cCwgMCkpCiAgCQkJCXJ2YWwgPSAxOwpPbmx5IGlu IC91c3Ivc3JjL2Jpbi9jcDogY3AubwpkaWZmIC1jIC1yIC91c3Ivc3JjL2Jpbi9jcC9leHRlcm4u aCAvdXNyL2xvY2FsL3NyYy9iaW4vY3AvZXh0ZXJuLmgKKioqIC91c3Ivc3JjL2Jpbi9jcC9leHRl cm4uaAlTYXQgRmViIDIyIDA4OjAxOjMzIDE5OTcKLS0tIC91c3IvbG9jYWwvc3JjL2Jpbi9jcC9l eHRlcm4uaAlUdWUgRmViICAzIDE5OjU5OjAxIDE5OTgKKioqKioqKioqKioqKioqCioqKiAxMSwx NyAqKioqCiAgICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogICAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90 aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgICogMy4gQWxs IGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlz IHNvZnR3YXJlCiEgICogICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2Vt ZW50OgogICAqCVRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhl IFVuaXZlcnNpdHkgb2YKICAgKglDYWxpZm9ybmlhLCBCZXJrZWxleSBhbmQgaXRzIGNvbnRyaWJ1 dG9ycy4KICAgKiA0LiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUg bmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotLS0gMTEsMTcgLS0tLQogICAqICAgIG5vdGljZSwg dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0 aGUKICAgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMg bWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQohICAqICAgIG11c3Qg ZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgogICAqCVRoaXMgcHJvZHVjdCBp bmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIFVuaXZlcnNpdHkgb2YKICAgKglDYWxp Zm9ybmlhLCBCZXJrZWxleSBhbmQgaXRzIGNvbnRyaWJ1dG9ycy4KICAgKiA0LiBOZWl0aGVyIHRo ZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9y cwoqKioqKioqKioqKioqKioKKioqIDM2LDQzICoqKioKICAKICB0eXBlZGVmIHN0cnVjdCB7CiAg CWNoYXIgKnBfZW5kOwkJCS8qIHBvaW50ZXIgdG8gTlVMTCBhdCBlbmQgb2YgcGF0aCAqLwohIAlj aGFyICp0YXJnZXRfZW5kOyAgICAgICAgICAgICAgIC8qIHBvaW50ZXIgdG8gZW5kIG9mIHRhcmdl dCBiYXNlICovCiEgCWNoYXIgcF9wYXRoW01BWFBBVEhMRU4gKyAxXTsJLyogcG9pbnRlciB0byB0 aGUgc3RhcnQgb2YgYSBwYXRoICovCiAgfSBQQVRIX1Q7CiAgCiAgZXh0ZXJuIFBBVEhfVCB0bzsK LS0tIDM2LDQzIC0tLS0KICAKICB0eXBlZGVmIHN0cnVjdCB7CiAgCWNoYXIgKnBfZW5kOwkJCS8q IHBvaW50ZXIgdG8gTlVMTCBhdCBlbmQgb2YgcGF0aCAqLwohIAljaGFyICp0YXJnZXRfZW5kOwkJ LyogcG9pbnRlciB0byBlbmQgb2YgdGFyZ2V0IGJhc2UgKi8KISAJY2hhciBwX3BhdGhbTUFYUEFU SExFTl07CS8qIHBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIGEgcGF0aCAqLwogIH0gUEFUSF9UOwog IAogIGV4dGVybiBQQVRIX1QgdG87CioqKioqKioqKioqKioqKgoqKiogNTIsNTYgKioqKgotLS0g NTIsNTcgLS0tLQogIGludAljb3B5X2xpbmsgX19QKChGVFNFTlQgKiwgaW50KSk7CiAgaW50CWNv cHlfc3BlY2lhbCBfX1AoKHN0cnVjdCBzdGF0ICosIGludCkpOwogIGludAlzZXRmaWxlIF9fUCgo c3RydWN0IHN0YXQgKiwgaW50KSk7CisgaW50CXNldGxpbmsgX19QKChzdHJ1Y3Qgc3RhdCAqKSk7 CiAgdm9pZAl1c2FnZSBfX1AoKHZvaWQpKTsKICBfX0VORF9ERUNMUwpkaWZmIC1jIC1yIC91c3Iv c3JjL2Jpbi9jcC91dGlscy5jIC91c3IvbG9jYWwvc3JjL2Jpbi9jcC91dGlscy5jCioqKiAvdXNy L3NyYy9iaW4vY3AvdXRpbHMuYwlTYXQgSmFuIDE3IDA3OjM5OjI5IDE5OTgKLS0tIC91c3IvbG9j YWwvc3JjL2Jpbi9jcC91dGlscy5jCVR1ZSBGZWIgIDMgMjA6MTU6NTMgMTk5OAoqKioqKioqKioq KioqKioKKioqIDExLDE3ICoqKioKICAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgICogICAgZG9jdW1lbnRh dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv bi4KICAgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMg b3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKISAgKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2lu ZyBhY2tub3dsZWRnZW1lbnQ6CiAgICoJVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRl dmVsb3BlZCBieSB0aGUgVW5pdmVyc2l0eSBvZgogICAqCUNhbGlmb3JuaWEsIEJlcmtlbGV5IGFu ZCBpdHMgY29udHJpYnV0b3JzLgogICAqIDQuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFVuaXZl cnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCi0tLSAxMSwxNyAtLS0tCiAg ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk aXNjbGFpbWVyIGluIHRoZQogICAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgICogMy4gQWxsIGFkdmVydGlz aW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJl CiEgICogICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6CiAgICoJ VGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgVW5pdmVyc2l0 eSBvZgogICAqCUNhbGlmb3JuaWEsIEJlcmtlbGV5IGFuZCBpdHMgY29udHJpYnV0b3JzLgogICAq IDQuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBp dHMgY29udHJpYnV0b3JzCioqKioqKioqKioqKioqKgoqKiogMTI2LDEzMiAqKioqCiAgCWlmIChm cy0+c3Rfc2l6ZSA8PSA4ICogMTA0ODU3NikgewogIAkJaWYgKChwID0gbW1hcChOVUxMLCAoc2l6 ZV90KWZzLT5zdF9zaXplLCBQUk9UX1JFQUQsCiAgCQkgICAgTUFQX1NIQVJFRCwgZnJvbV9mZCwg KG9mZl90KTApKSA9PSBNQVBfRkFJTEVEKSB7CiEgCQkJd2FybigiJXMiLCBlbnRwLT5mdHNfcGF0 aCk7CiAgCQkJcnZhbCA9IDE7CiAgCQl9IGVsc2UgewogIAkJCWZvciAoYnVmcCA9IHAsIHdyZXNp ZCA9IGZzLT5zdF9zaXplOyA7Ci0tLSAxMjYsMTMyIC0tLS0KICAJaWYgKGZzLT5zdF9zaXplIDw9 IDggKiAxMDQ4NTc2KSB7CiAgCQlpZiAoKHAgPSBtbWFwKE5VTEwsIChzaXplX3QpZnMtPnN0X3Np emUsIFBST1RfUkVBRCwKICAJCSAgICBNQVBfU0hBUkVELCBmcm9tX2ZkLCAob2ZmX3QpMCkpID09 IE1BUF9GQUlMRUQpIHsKISAJCQl3YXJuKCJtbWFwOiAlcyIsIGVudHAtPmZ0c19wYXRoKTsKICAJ CQlydmFsID0gMTsKICAJCX0gZWxzZSB7CiAgCQkJZm9yIChidWZwID0gcCwgd3Jlc2lkID0gZnMt PnN0X3NpemU7IDsKKioqKioqKioqKioqKioqCioqKiAyMjAsMjI2ICoqKioKICAJCXdhcm4oInN5 bWxpbms6ICVzIiwgbGluayk7CiAgCQlyZXR1cm4gKDEpOwogIAl9CiEgCXJldHVybiAoMCk7CiAg fQogIAogIGludAotLS0gMjIwLDIyNiAtLS0tCiAgCQl3YXJuKCJzeW1saW5rOiAlcyIsIGxpbmsp OwogIAkJcmV0dXJuICgxKTsKICAJfQohIAlyZXR1cm4gKHBmbGFnID8gc2V0bGluayhwLT5mdHNf c3RhdHApIDogMCk7CiAgfQogIAogIGludAoqKioqKioqKioqKioqKioKKioqIDI5MiwzMTEgKioq KgogIAkJd2FybigiY2hvd246ICVzIiwgdG8ucF9wYXRoKTsKICAJCXJ2YWwgPSAxOwogIAl9CiAg CiEgCWlmIChmZCA/CiEgCSAgICBmY2hmbGFncyhmZCwgZnMtPnN0X2ZsYWdzKSA6IGNoZmxhZ3Mo dG8ucF9wYXRoLCBmcy0+c3RfZmxhZ3MpKSB7CiEgCQl3YXJuKCJjaGZsYWdzOiAlcyIsIHRvLnBf cGF0aCk7CiEgCQlydmFsID0gMTsKICAJfQohIAlyZXR1cm4gKHJ2YWwpOwogIH0KICAKICB2b2lk CiAgdXNhZ2UoKQogIHsKICAJKHZvaWQpZnByaW50ZihzdGRlcnIsICIlc1xuJXNcbiIsCiEgInVz YWdlOiBjcCBbLVIgWy1IIHwgLUwgfCAtUF1dIFstZiB8IC1pXSBbLXBdIHNyYyB0YXJnZXQiLAoh ICIgICAgICAgY3AgWy1SIFstSCB8IC1MIHwgLVBdXSBbLWYgfCAtaV0gWy1wXSBzcmMxIC4uLiBz cmNOIGRpcmVjdG9yeSIpOwogIAlleGl0KDEpOwogIH0KLS0tIDI5MiwzMzQgLS0tLQogIAkJd2Fy bigiY2hvd246ICVzIiwgdG8ucF9wYXRoKTsKICAJCXJ2YWwgPSAxOwogIAl9CisgCS8qCisgCSAq IFhYWAorIAkgKiBORlMgZG9lc24ndCBzdXBwb3J0IGNoZmxhZ3M7IGlnbm9yZSBlcnJvcnMgdW5s ZXNzCisgCSAqIHRoZXJlJ3MgcmVhc29uIHRvIGJlbGlldmUgd2UncmUgbG9zaW5nIGJpdHMuCisg CSAqIChOb3RlLCB0aGlzIHN0aWxsIHdvbid0IGJlIHJpZ2h0IGlmIHRoZSBzZXJ2ZXIKKyAJICog c3VwcG9ydHMgZmxhZ3MgYW5kIHdlIHdlcmUgdHJ5aW5nIHRvICpyZW1vdmUqIGZsYWdzCisgCSAq IG9uIGEgZmlsZSB0aGF0IHdlIGNvcGllZCwgaS5lLiwgdGhhdCB3ZSBkaWRuJ3QgY3JlYXRlLikK KyAJICovCisgCWVycm5vID0gMDsKKyAJaWYgKGZkID8gZmNoZmxhZ3MoZmQsIGZzLT5zdF9mbGFn cykgOgorIAkJY2hmbGFncyh0by5wX3BhdGgsIGZzLT5zdF9mbGFncykpCisgCQkJaWYgKGVycm5v ICE9IEVPUE5PVFNVUFAgfHwgZnMtPnN0X2ZsYWdzICE9IDApIHsKKyAJCQkJd2FybigiY2hmbGFn czogJXMiLCB0by5wX3BhdGgpOworIAkJCQlydmFsID0gMTsKKyAJCQl9CisgCXJldHVybiAocnZh bCk7CisgfQogIAohIAohIGludAohIHNldGxpbmsoZnMpCiEgCXJlZ2lzdGVyIHN0cnVjdCBzdGF0 ICpmczsKISB7CiEgCWlmIChsY2hvd24odG8ucF9wYXRoLCBmcy0+c3RfdWlkLCBmcy0+c3RfZ2lk KSkgewohIAkJaWYgKGVycm5vICE9IEVQRVJNKSB7CiEgCQkJd2FybigibGNob3duOiAlcyIsIHRv LnBfcGF0aCk7CiEgCQkJcmV0dXJuICgxKTsKISAJCX0KICAJfQohIAlyZXR1cm4gKDApOwogIH0K ICAKICB2b2lkCiAgdXNhZ2UoKQogIHsKICAJKHZvaWQpZnByaW50ZihzdGRlcnIsICIlc1xuJXNc biIsCiEgCSJ1c2FnZTogY3AgWy1SIFstSCB8IC1MIHwgLVBdXSBbLWZpcF0gc3JjIHRhcmdldCIs CiEgCSIgICAgICAgY3AgWy1SIFstSCB8IC1MIHwgLVBdXSBbLWZpcF0gc3JjMSAuLi4gc3JjTiBk aXJlY3RvcnkiKTsKICAJZXhpdCgxKTsKICB9Ck9ubHkgaW4gL3Vzci9zcmMvYmluL2NwOiB1dGls cy5vCg== ------=_NextPart_000_003A_01BD34D9.4174C080-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?003d01bd350b$8d872a80$016f6f6f>