X-Original-To: alpine-aports@lists.alpinelinux.org Received: from mout01.posteo.de (mout01.posteo.de [185.67.36.65]) by lists.alpinelinux.org (Postfix) with ESMTP id 43D375C5085 for ; Sat, 16 Jun 2018 10:08:29 +0000 (GMT) Received: from submission (posteo.de [89.146.220.130]) by mout01.posteo.de (Postfix) with ESMTPS id 8742820E2B for ; Sat, 16 Jun 2018 12:08:28 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1529143708; bh=0k3p2O07rUl9MMbgAmSrQ6/TSD5+flJ3MsTAaBpYcyk=; h=From:To:Cc:Subject:Date:From; b=k635nawRdMV1nwrBge9n4mafbDOPfF2OMHthZKZg2uJ/yuESHR7YlgyzJoGoz4a8b yHnE9wNzTSTkbQdLE6XQLW8b6WDcsLqBQiBAfHaRPV4w0TV+p6VNTInTZpJA8H8WMK prPaBU5W1fBL1Ty3+pS5cs9zLAnPMxdcwh4jSU1hdn4ERb21/cEBLacDYRW9Uk1Fvp TvHLV2vWZCkVfBaNMrUzfaDpOy5PNnaYPaVae66ufnF3xL4hVq90NfR8e1L1vDYqu1 rqgUIO1o6NzKehKFyQFcTSfKkdoPL4sgVtDDsd0UOrYCUJnZ5ccGx5zj7A8wb3w8ax Np0iCBUap9/KA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 417Cjk3t25z9rxQ; Sat, 16 Jun 2018 12:08:25 +0200 (CEST) From: Sascha Paunovic To: alpine-aports@lists.alpinelinux.org Cc: Sascha Paunovic Subject: [alpine-aports] [PATCH] main/mg: upgrade to 20180408 Date: Sat, 16 Jun 2018 12:08:17 +0200 Message-Id: <20180616100817.6845-1-azarus@posteo.net> X-Mailer: git-send-email 2.17.1 X-Mailinglist: alpine-aports Precedence: list List-Id: Alpine Development List-Unsubscribe: List-Post: List-Help: List-Subscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 YWxzbywgbW9kZXJuaXplLCBjbGVhbnVwLCByZW1vdmUgdW51c2VkIGZpbGVzDQotLS0NCiBtYWlu L21nL0FQS0JVSUxEICAgICAgICAgICAgICB8ICAzMiArLQ0KIG1haW4vbWcvbWlzc2luZy1kZWZp bmVzLnBhdGNoIHwgIDM0IC0tDQogbWFpbi9tZy90cmVlLmggICAgICAgICAgICAgICAgfCA3NjUg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIDMgZmlsZXMgY2hhbmdlZCwgOSBp bnNlcnRpb25zKCspLCA4MjIgZGVsZXRpb25zKC0pDQogZGVsZXRlIG1vZGUgMTAwNjQ0IG1haW4v bWcvbWlzc2luZy1kZWZpbmVzLnBhdGNoDQogZGVsZXRlIG1vZGUgMTAwNjQ0IG1haW4vbWcvdHJl ZS5oDQoNCmRpZmYgLS1naXQgYS9tYWluL21nL0FQS0JVSUxEIGIvbWFpbi9tZy9BUEtCVUlMRA0K aW5kZXggNzMzN2RmODAzMy4uYjAwMjMyNWU0OCAxMDA2NDQNCi0tLSBhL21haW4vbWcvQVBLQlVJ TEQNCisrKyBiL21haW4vbWcvQVBLQlVJTEQNCkBAIC0xLDQyICsxLDI4IEBADQogIyBDb250cmli dXRvcjogTGVlIEhpbm1hbiA8aGlubWFuQGdtYWlsLmNvbT4NCiAjIE1haW50YWluZXI6IEPDoWcg PGNhNmNAYml0bWVzc2FnZS5jaD4NCiBwa2duYW1lPW1nDQotcGtndmVyPTIwMTcxMDE0DQorcGtn dmVyPTIwMTgwNDA4DQogcGtncmVsPTANCiBwa2dkZXNjPSJtaWNyb3Njb3BpYyBFTUFDUyBzdHls ZSBlZGl0b3IiDQogdXJsPSJodHRwOi8vaG9tZXBhZ2UuYm9ldGVzLm9yZy9zb2Z0d2FyZS9tZyIN CiBhcmNoPSJhbGwiDQogbGljZW5zZT0iUHVibGljLURvbWFpbiINCi1kZXBlbmRzPQ0KIG1ha2Vk ZXBlbmRzPSJuY3Vyc2VzLWRldiBsaWJic2QtZGV2IGJzZC1jb21wYXQtaGVhZGVycyINCi1pbnN0 YWxsPQ0KIHN1YnBhY2thZ2VzPSIkcGtnbmFtZS1kb2MiDQotc291cmNlPSJodHRwOi8vaG9tZXBh Z2UuYm9ldGVzLm9yZy9zb2Z0d2FyZS9tZy8kcGtnbmFtZS0kcGtndmVyLnRhci5neg0KLQltaXNz aW5nLWRlZmluZXMucGF0Y2gNCi0JIg0KLQ0KLV9idWlsZGRpcj0iJHNyY2RpciIvJHBrZ25hbWUt JHBrZ3Zlcg0KLQ0KLXByZXBhcmUoKSB7DQotCWNkICIkX2J1aWxkZGlyIg0KLQlmb3IgaSBpbiAk c291cmNlOyBkbw0KLQkJY2FzZSAkaSBpbg0KLQkJKi5wYXRjaCkgbXNnICRpOyBwYXRjaCAtcDEg LWkgIiRzcmNkaXIiLyRpIHx8IHJldHVybiAxOzsNCi0JCWVzYWMNCi0JZG9uZQ0KLX0NCitzb3Vy Y2U9IiRwa2duYW1lLSRwa2d2ZXIudGFyLmd6OjpodHRwczovL2dpdGh1Yi5jb20vaGJvZXRlcy8k cGtnbmFtZS9hcmNoaXZlLyRwa2d2ZXIudGFyLmd6Ig0KK29wdGlvbnM9IiFjaGVjayIgIyBubyB0 ZXN0IHN1aXRlDQorYnVpbGRkaXI9IiRzcmNkaXIiLyRwa2duYW1lLSRwa2d2ZXINCiANCiBidWls ZCgpIHsNCi0JY2QgIiRfYnVpbGRkaXIiDQotCW1ha2UgcHJlZml4PS91c3IgbWFuZGlyPS91c3Iv c2hhcmUvbWFuIHx8IHJldHVybiAxDQorCWNkICIkYnVpbGRkaXIiDQorCW1ha2UgcHJlZml4PS91 c3IgbWFuZGlyPS91c3Ivc2hhcmUvbWFuDQogfQ0KIA0KIHBhY2thZ2UoKSB7DQotCWNkICIkX2J1 aWxkZGlyIg0KKwljZCAiJGJ1aWxkZGlyIg0KIAltYWtlIElOU1RBTEw9aW5zdGFsbCBERVNURElS PSIkcGtnZGlyIiBwcmVmaXg9L3VzciBcDQotCQltYW5kaXI9L3Vzci9zaGFyZS9tYW4gaW5zdGFs bCB8fCByZXR1cm4gMQ0KKwkJbWFuZGlyPS91c3Ivc2hhcmUvbWFuIGluc3RhbGwNCiAJaW5zdGFs bCAtRG02NDQgdHV0b3JpYWwgIiRwa2dkaXIiL3Vzci9zaGFyZS9kb2MvJHBrZ25hbWUvdHV0b3Jp YWwNCiB9DQogDQotc2hhNTEyc3Vtcz0iZDU1ODE4MzA4NDIxYWE1MjNmYjMwYjZlNDcyNWJiMTIy ZjM3NjM3YTgyMmZhYmFmZWJhOWY5ZGEzYjk3ZmQ3ZjZhZjY0MzFmY2UzMDE1Yzk2OWQwZTY1NmE0 OGU4OWVkNDliNzkwZGVlZmM2OWZiZGJiN2UyNTdmOGExYWViNTYgIG1nLTIwMTcxMDE0LnRhci5n eg0KLWYxOTY3ZGQzM2EwMjVlMTFmZjYzYmE3OTdjMmZiNjRhYzA2NzljZDZjMDlhMzMyMjQxYTI4 ZTA5NzZiOTZkYjQ2Nzg5NGUxZTM1NzNjNWJjODhiN2ZlYWVjZGI0MzA2OTVhYTRmOGZhMjcxMmIy MjdkMDk0N2IzZDhiMDVjOTdjICBtaXNzaW5nLWRlZmluZXMucGF0Y2giDQorc2hhNTEyc3Vtcz0i MjVmY2ViMThmY2JlNjMwMTBlN2EyZTEwN2FhNWMzMDM1NjkzOGJlMmUwNGZmNDg4NjlhMTJiNTAx OGRiYjgzYmNmNGRjNzBiMDM2NzQ3MTM1MTY2MTYwMzcyNDc5NTJhNTE0NTRhMjhjYTQxOGNkYzdi MDIwZDFmNDE1Zjg3MDEgIG1nLTIwMTgwNDA4LnRhci5neiINCmRpZmYgLS1naXQgYS9tYWluL21n L21pc3NpbmctZGVmaW5lcy5wYXRjaCBiL21haW4vbWcvbWlzc2luZy1kZWZpbmVzLnBhdGNoDQpk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDU4ZjVlMTA5ZmEuLjAwMDAwMDAwMDANCi0t LSBhL21haW4vbWcvbWlzc2luZy1kZWZpbmVzLnBhdGNoDQorKysgL2Rldi9udWxsDQpAQCAtMSwz NCArMCwwIEBADQotZGlmZiAtLWdpdCBhL2ZpbGVpby5jIGIvZmlsZWlvLmMNCi1pbmRleCA0YmIx ZjQ2Li5jOTM3ZWIwIDEwMDY0NA0KLS0tLSBhL2ZpbGVpby5jDQotKysrIGIvZmlsZWlvLmMNCi1A QCAtMjcsNiArMjcsMTQgQEANCi0gI2luY2x1ZGUgImtiZC5oIg0KLSAjaW5jbHVkZSAicGF0aG5h bWVzLmgiDQotIA0KLSsjaWZuZGVmIE1BWE5BTUxFTg0KLSsjZGVmaW5lIE1BWE5BTUxFTiAyNTUN Ci0rI2VuZGlmDQotKw0KLSsjaWZuZGVmIERFRkZJTEVNT0RFDQotKyNkZWZpbmUgREVGRklMRU1P REUgMDY2Ng0KLSsjZW5kaWYNCi0rDQotIHN0YXRpYyBjaGFyICpia3VwbG9jYXRpb24oY29uc3Qg Y2hhciAqKTsNCi0gc3RhdGljIGludCAgIGJrdXBsZWF2ZXRtcChjb25zdCBjaGFyICopOw0KLSAN Ci1kaWZmIC0tZ2l0IGEvcmVfc2VhcmNoLmMgYi9yZV9zZWFyY2guYw0KLWluZGV4IDI4NzAzMGEu LmRhNDRmMDAgMTAwNjQ0DQotLS0tIGEvcmVfc2VhcmNoLmMNCi0rKysgYi9yZV9zZWFyY2guYw0K LUBAIC0zNCw2ICszNCwxMCBAQA0KLSAjZGVmaW5lIFJFX05NQVRDSAkxMAkJLyogbWF4IG51bWJl ciBvZiBtYXRjaGVzCSAgICAqLw0KLSAjZGVmaW5lIFJFUExFTgkJMjU2CQkvKiBtYXggbGVuZ3Ro IG9mIHJlcGxhY2VtZW50IHN0cmluZyAqLw0KLSANCi0rI2lmbmRlZiBSRUdfU1RBUlRFTkQNCi0r I2RlZmluZSBSRUdfU1RBUlRFTkQgNA0KLSsjZW5kaWYNCi0rDQotIGNoYXIJcmVfcGF0W05QQVRd OwkJCS8qIHJlZ2V4IHBhdHRlcm4JCSAgICAqLw0KLSBpbnQJcmVfc3JjaF9sYXN0ZGlyID0gU1JD SF9OT1BSOwkvKiBsYXN0IHNlYXJjaCBmbGFncwkJICAgICovDQotIGludAljYXNlZm9sZHNlYXJj aCA9IFRSVUU7CQkvKiBkb2VzIHNlYXJjaCBpZ25vcmUgY2FzZT8JICAgICovDQpkaWZmIC0tZ2l0 IGEvbWFpbi9tZy90cmVlLmggYi9tYWluL21nL3RyZWUuaA0KZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0DQppbmRleCAxY2NlNzI3ODY4Li4wMDAwMDAwMDAwDQotLS0gYS9tYWluL21nL3RyZWUuaA0K KysrIC9kZXYvbnVsbA0KQEAgLTEsNzY1ICswLDAgQEANCi0vKgkkTmV0QlNEOiB0cmVlLmgsdiAx LjggMjAwNC8wMy8yOCAxOTozODozMCBwcm92b3MgRXhwICQJKi8NCi0vKgkkT3BlbkJTRDogdHJl ZS5oLHYgMS43IDIwMDIvMTAvMTcgMjE6NTE6NTQgYXJ0IEV4cCAkCSovDQotLyogJEZyZWVCU0Qk ICovDQotDQotLyotDQotICogQ29weXJpZ2h0IDIwMDIgTmllbHMgUHJvdm9zIDxwcm92b3NAY2l0 aS51bWljaC5lZHU+DQotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKg0KLSAqIFJlZGlzdHJp YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91 dA0KLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs b3dpbmcgY29uZGl0aW9ucw0KLSAqIGFyZSBtZXQ6DQotICogMS4gUmVkaXN0cmlidXRpb25zIG9m IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCi0gKiAgICBub3Rp Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu DQotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo ZSBhYm92ZSBjb3B5cmlnaHQNCi0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQotICogICAgZG9jdW1lbnRhdGlv biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4N Ci0gKg0KLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElT JycgQU5EIEFOWSBFWFBSRVNTIE9SDQotICogSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUw0KLSAqIE9GIE1FUkNI QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM QUlNRUQuDQotICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFO WSBESVJFQ1QsIElORElSRUNULA0KLSAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVA0KLSAqIE5PVCBMSU1JVEVE IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G IFVTRSwNCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkNCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUDQotICogKElOQ0xVRElORyBO RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF IE9GDQotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU WSBPRiBTVUNIIERBTUFHRS4NCi0gKi8NCi0NCi0jaWZuZGVmCV9TWVNfVFJFRV9IXw0KLSNkZWZp bmUJX1NZU19UUkVFX0hfDQotDQotI2luY2x1ZGUgPHN5cy9jZGVmcy5oPg0KLQ0KLS8qDQotICog VGhpcyBmaWxlIGRlZmluZXMgZGF0YSBzdHJ1Y3R1cmVzIGZvciBkaWZmZXJlbnQgdHlwZXMgb2Yg dHJlZXM6DQotICogc3BsYXkgdHJlZXMgYW5kIHJlZC1ibGFjayB0cmVlcy4NCi0gKg0KLSAqIEEg c3BsYXkgdHJlZSBpcyBhIHNlbGYtb3JnYW5pemluZyBkYXRhIHN0cnVjdHVyZS4gIEV2ZXJ5IG9w ZXJhdGlvbg0KLSAqIG9uIHRoZSB0cmVlIGNhdXNlcyBhIHNwbGF5IHRvIGhhcHBlbi4gIFRoZSBz cGxheSBtb3ZlcyB0aGUgcmVxdWVzdGVkDQotICogbm9kZSB0byB0aGUgcm9vdCBvZiB0aGUgdHJl ZSBhbmQgcGFydGx5IHJlYmFsYW5jZXMgaXQuDQotICoNCi0gKiBUaGlzIGhhcyB0aGUgYmVuZWZp dCB0aGF0IHJlcXVlc3QgbG9jYWxpdHkgY2F1c2VzIGZhc3RlciBsb29rdXBzIGFzDQotICogdGhl IHJlcXVlc3RlZCBub2RlcyBtb3ZlIHRvIHRoZSB0b3Agb2YgdGhlIHRyZWUuICBPbiB0aGUgb3Ro ZXIgaGFuZCwNCi0gKiBldmVyeSBsb29rdXAgY2F1c2VzIG1lbW9yeSB3cml0ZXMuDQotICoNCi0g KiBUaGUgQmFsYW5jZSBUaGVvcmVtIGJvdW5kcyB0aGUgdG90YWwgYWNjZXNzIHRpbWUgZm9yIG0g b3BlcmF0aW9ucw0KLSAqIGFuZCBuIGluc2VydHMgb24gYW4gaW5pdGlhbGx5IGVtcHR5IHRyZWUg YXMgTygobSArIG4pbGcgbikuICBUaGUNCi0gKiBhbW9ydGl6ZWQgY29zdCBmb3IgYSBzZXF1ZW5j ZSBvZiBtIGFjY2Vzc2VzIHRvIGEgc3BsYXkgdHJlZSBpcyBPKGxnIG4pOw0KLSAqDQotICogQSBy ZWQtYmxhY2sgdHJlZSBpcyBhIGJpbmFyeSBzZWFyY2ggdHJlZSB3aXRoIHRoZSBub2RlIGNvbG9y IGFzIGFuDQotICogZXh0cmEgYXR0cmlidXRlLiAgSXQgZnVsZmlsbHMgYSBzZXQgb2YgY29uZGl0 aW9uczoNCi0gKgktIGV2ZXJ5IHNlYXJjaCBwYXRoIGZyb20gdGhlIHJvb3QgdG8gYSBsZWFmIGNv bnNpc3RzIG9mIHRoZQ0KLSAqCSAgc2FtZSBudW1iZXIgb2YgYmxhY2sgbm9kZXMsDQotICoJLSBl YWNoIHJlZCBub2RlIChleGNlcHQgZm9yIHRoZSByb290KSBoYXMgYSBibGFjayBwYXJlbnQsDQot ICoJLSBlYWNoIGxlYWYgbm9kZSBpcyBibGFjay4NCi0gKg0KLSAqIEV2ZXJ5IG9wZXJhdGlvbiBv biBhIHJlZC1ibGFjayB0cmVlIGlzIGJvdW5kZWQgYXMgTyhsZyBuKS4NCi0gKiBUaGUgbWF4aW11 bSBoZWlnaHQgb2YgYSByZWQtYmxhY2sgdHJlZSBpcyAybGcgKG4rMSkuDQotICovDQotDQotI2Rl ZmluZSBTUExBWV9IRUFEKG5hbWUsIHR5cGUpCQkJCQkJXA0KLXN0cnVjdCBuYW1lIHsJCQkJCQkJ CVwNCi0Jc3RydWN0IHR5cGUgKnNwaF9yb290OyAvKiByb290IG9mIHRoZSB0cmVlICovCQkJXA0K LX0NCi0NCi0jZGVmaW5lIFNQTEFZX0lOSVRJQUxJWkVSKHJvb3QpCQkJCQkJXA0KLQl7IE5VTEwg fQ0KLQ0KLSNkZWZpbmUgU1BMQVlfSU5JVChyb290KSBkbyB7CQkJCQkJXA0KLQkocm9vdCktPnNw aF9yb290ID0gTlVMTDsJCQkJCVwNCi19IHdoaWxlICgvKkNPTlNUQ09ORCovIDApDQotDQotI2Rl ZmluZSBTUExBWV9FTlRSWSh0eXBlKQkJCQkJCVwNCi1zdHJ1Y3QgewkJCQkJCQkJXA0KLQlzdHJ1 Y3QgdHlwZSAqc3BlX2xlZnQ7IC8qIGxlZnQgZWxlbWVudCAqLwkJCVwNCi0Jc3RydWN0IHR5cGUg KnNwZV9yaWdodDsgLyogcmlnaHQgZWxlbWVudCAqLwkJCVwNCi19DQotDQotI2RlZmluZSBTUExB WV9MRUZUKGVsbSwgZmllbGQpCQkoZWxtKS0+ZmllbGQuc3BlX2xlZnQNCi0jZGVmaW5lIFNQTEFZ X1JJR0hUKGVsbSwgZmllbGQpCQkoZWxtKS0+ZmllbGQuc3BlX3JpZ2h0DQotI2RlZmluZSBTUExB WV9ST09UKGhlYWQpCQkoaGVhZCktPnNwaF9yb290DQotI2RlZmluZSBTUExBWV9FTVBUWShoZWFk KQkJKFNQTEFZX1JPT1QoaGVhZCkgPT0gTlVMTCkNCi0NCi0vKiBTUExBWV9ST1RBVEVfe0xFRlQs UklHSFR9IGV4cGVjdCB0aGF0IHRtcCBob2xkIFNQTEFZX3tSSUdIVCxMRUZUfSAqLw0KLSNkZWZp bmUgU1BMQVlfUk9UQVRFX1JJR0hUKGhlYWQsIHRtcCwgZmllbGQpIGRvIHsJCQlcDQotCVNQTEFZ X0xFRlQoKGhlYWQpLT5zcGhfcm9vdCwgZmllbGQpID0gU1BMQVlfUklHSFQodG1wLCBmaWVsZCk7 CVwNCi0JU1BMQVlfUklHSFQodG1wLCBmaWVsZCkgPSAoaGVhZCktPnNwaF9yb290OwkJCVwNCi0J KGhlYWQpLT5zcGhfcm9vdCA9IHRtcDsJCQkJCQlcDQotfSB3aGlsZSAoLypDT05TVENPTkQqLyAw KQ0KLQkNCi0jZGVmaW5lIFNQTEFZX1JPVEFURV9MRUZUKGhlYWQsIHRtcCwgZmllbGQpIGRvIHsJ CQlcDQotCVNQTEFZX1JJR0hUKChoZWFkKS0+c3BoX3Jvb3QsIGZpZWxkKSA9IFNQTEFZX0xFRlQo dG1wLCBmaWVsZCk7CVwNCi0JU1BMQVlfTEVGVCh0bXAsIGZpZWxkKSA9IChoZWFkKS0+c3BoX3Jv b3Q7CQkJXA0KLQkoaGVhZCktPnNwaF9yb290ID0gdG1wOwkJCQkJCVwNCi19IHdoaWxlICgvKkNP TlNUQ09ORCovIDApDQotDQotI2RlZmluZSBTUExBWV9MSU5LTEVGVChoZWFkLCB0bXAsIGZpZWxk KSBkbyB7CQkJCVwNCi0JU1BMQVlfTEVGVCh0bXAsIGZpZWxkKSA9IChoZWFkKS0+c3BoX3Jvb3Q7 CQkJXA0KLQl0bXAgPSAoaGVhZCktPnNwaF9yb290OwkJCQkJCVwNCi0JKGhlYWQpLT5zcGhfcm9v dCA9IFNQTEFZX0xFRlQoKGhlYWQpLT5zcGhfcm9vdCwgZmllbGQpOwkJXA0KLX0gd2hpbGUgKC8q Q09OU1RDT05EKi8gMCkNCi0NCi0jZGVmaW5lIFNQTEFZX0xJTktSSUdIVChoZWFkLCB0bXAsIGZp ZWxkKSBkbyB7CQkJCVwNCi0JU1BMQVlfUklHSFQodG1wLCBmaWVsZCkgPSAoaGVhZCktPnNwaF9y b290OwkJCVwNCi0JdG1wID0gKGhlYWQpLT5zcGhfcm9vdDsJCQkJCQlcDQotCShoZWFkKS0+c3Bo X3Jvb3QgPSBTUExBWV9SSUdIVCgoaGVhZCktPnNwaF9yb290LCBmaWVsZCk7CVwNCi19IHdoaWxl ICgvKkNPTlNUQ09ORCovIDApDQotDQotI2RlZmluZSBTUExBWV9BU1NFTUJMRShoZWFkLCBub2Rl LCBsZWZ0LCByaWdodCwgZmllbGQpIGRvIHsJCVwNCi0JU1BMQVlfUklHSFQobGVmdCwgZmllbGQp ID0gU1BMQVlfTEVGVCgoaGVhZCktPnNwaF9yb290LCBmaWVsZCk7CVwNCi0JU1BMQVlfTEVGVChy aWdodCwgZmllbGQpID0gU1BMQVlfUklHSFQoKGhlYWQpLT5zcGhfcm9vdCwgZmllbGQpO1wNCi0J U1BMQVlfTEVGVCgoaGVhZCktPnNwaF9yb290LCBmaWVsZCkgPSBTUExBWV9SSUdIVChub2RlLCBm aWVsZCk7CVwNCi0JU1BMQVlfUklHSFQoKGhlYWQpLT5zcGhfcm9vdCwgZmllbGQpID0gU1BMQVlf TEVGVChub2RlLCBmaWVsZCk7CVwNCi19IHdoaWxlICgvKkNPTlNUQ09ORCovIDApDQotDQotLyog R2VuZXJhdGVzIHByb3RvdHlwZXMgYW5kIGlubGluZSBmdW5jdGlvbnMgKi8NCi0NCi0jZGVmaW5l IFNQTEFZX1BST1RPVFlQRShuYW1lLCB0eXBlLCBmaWVsZCwgY21wKQkJCQlcDQotdm9pZCBuYW1l IyNfU1BMQVkoc3RydWN0IG5hbWUgKiwgc3RydWN0IHR5cGUgKik7CQkJXA0KLXZvaWQgbmFtZSMj X1NQTEFZX01JTk1BWChzdHJ1Y3QgbmFtZSAqLCBpbnQpOwkJCQlcDQotc3RydWN0IHR5cGUgKm5h bWUjI19TUExBWV9JTlNFUlQoc3RydWN0IG5hbWUgKiwgc3RydWN0IHR5cGUgKik7CQlcDQotc3Ry dWN0IHR5cGUgKm5hbWUjI19TUExBWV9SRU1PVkUoc3RydWN0IG5hbWUgKiwgc3RydWN0IHR5cGUg Kik7CQlcDQotCQkJCQkJCQkJXA0KLS8qIEZpbmRzIHRoZSBub2RlIHdpdGggdGhlIHNhbWUga2V5 IGFzIGVsbSAqLwkJCQlcDQotc3RhdGljIF9faW5saW5lIHN0cnVjdCB0eXBlICoJCQkJCQlcDQot bmFtZSMjX1NQTEFZX0ZJTkQoc3RydWN0IG5hbWUgKmhlYWQsIHN0cnVjdCB0eXBlICplbG0pCQkJ XA0KLXsJCQkJCQkJCQlcDQotCWlmIChTUExBWV9FTVBUWShoZWFkKSkJCQkJCQlcDQotCQlyZXR1 cm4oTlVMTCk7CQkJCQkJXA0KLQluYW1lIyNfU1BMQVkoaGVhZCwgZWxtKTsJCQkJCVwNCi0JaWYg KChjbXApKGVsbSwgKGhlYWQpLT5zcGhfcm9vdCkgPT0gMCkJCQkJXA0KLQkJcmV0dXJuIChoZWFk LT5zcGhfcm9vdCk7CQkJCVwNCi0JcmV0dXJuIChOVUxMKTsJCQkJCQkJXA0KLX0JCQkJCQkJCQlc DQotCQkJCQkJCQkJXA0KLXN0YXRpYyBfX2lubGluZSBzdHJ1Y3QgdHlwZSAqCQkJCQkJXA0KLW5h bWUjI19TUExBWV9ORVhUKHN0cnVjdCBuYW1lICpoZWFkLCBzdHJ1Y3QgdHlwZSAqZWxtKQkJCVwN Ci17CQkJCQkJCQkJXA0KLQluYW1lIyNfU1BMQVkoaGVhZCwgZWxtKTsJCQkJCVwNCi0JaWYgKFNQ TEFZX1JJR0hUKGVsbSwgZmllbGQpICE9IE5VTEwpIHsJCQkJXA0KLQkJZWxtID0gU1BMQVlfUklH SFQoZWxtLCBmaWVsZCk7CQkJCVwNCi0JCXdoaWxlIChTUExBWV9MRUZUKGVsbSwgZmllbGQpICE9 IE5VTEwpIHsJCVwNCi0JCQllbG0gPSBTUExBWV9MRUZUKGVsbSwgZmllbGQpOwkJCVwNCi0JCX0J CQkJCQkJXA0KLQl9IGVsc2UJCQkJCQkJCVwNCi0JCWVsbSA9IE5VTEw7CQkJCQkJXA0KLQlyZXR1 cm4gKGVsbSk7CQkJCQkJCVwNCi19CQkJCQkJCQkJXA0KLQkJCQkJCQkJCVwNCi1zdGF0aWMgX19p bmxpbmUgc3RydWN0IHR5cGUgKgkJCQkJCVwNCi1uYW1lIyNfU1BMQVlfTUlOX01BWChzdHJ1Y3Qg bmFtZSAqaGVhZCwgaW50IHZhbCkJCQlcDQotewkJCQkJCQkJCVwNCi0JbmFtZSMjX1NQTEFZX01J Tk1BWChoZWFkLCB2YWwpOwkJCQkJXA0KLSAgICAgICAgcmV0dXJuIChTUExBWV9ST09UKGhlYWQp KTsJCQkJCVwNCi19DQotDQotLyogTWFpbiBzcGxheSBvcGVyYXRpb24uDQotICogTW92ZXMgbm9k ZSBjbG9zZSB0byB0aGUga2V5IG9mIGVsbSB0byB0b3ANCi0gKi8NCi0jZGVmaW5lIFNQTEFZX0dF TkVSQVRFKG5hbWUsIHR5cGUsIGZpZWxkLCBjbXApCQkJCVwNCi1zdHJ1Y3QgdHlwZSAqCQkJCQkJ CQlcDQotbmFtZSMjX1NQTEFZX0lOU0VSVChzdHJ1Y3QgbmFtZSAqaGVhZCwgc3RydWN0IHR5cGUg KmVsbSkJCVwNCi17CQkJCQkJCQkJXA0KLSAgICBpZiAoU1BMQVlfRU1QVFkoaGVhZCkpIHsJCQkJ CQlcDQotCSAgICBTUExBWV9MRUZUKGVsbSwgZmllbGQpID0gU1BMQVlfUklHSFQoZWxtLCBmaWVs ZCkgPSBOVUxMOwlcDQotICAgIH0gZWxzZSB7CQkJCQkJCQlcDQotCSAgICBpbnQgX19jb21wOwkJ CQkJCQlcDQotCSAgICBuYW1lIyNfU1BMQVkoaGVhZCwgZWxtKTsJCQkJCVwNCi0JICAgIF9fY29t cCA9IChjbXApKGVsbSwgKGhlYWQpLT5zcGhfcm9vdCk7CQkJXA0KLQkgICAgaWYoX19jb21wIDwg MCkgewkJCQkJCVwNCi0JCSAgICBTUExBWV9MRUZUKGVsbSwgZmllbGQpID0gU1BMQVlfTEVGVCgo aGVhZCktPnNwaF9yb290LCBmaWVsZCk7XA0KLQkJICAgIFNQTEFZX1JJR0hUKGVsbSwgZmllbGQp ID0gKGhlYWQpLT5zcGhfcm9vdDsJCVwNCi0JCSAgICBTUExBWV9MRUZUKChoZWFkKS0+c3BoX3Jv b3QsIGZpZWxkKSA9IE5VTEw7CQlcDQotCSAgICB9IGVsc2UgaWYgKF9fY29tcCA+IDApIHsJCQkJ CVwNCi0JCSAgICBTUExBWV9SSUdIVChlbG0sIGZpZWxkKSA9IFNQTEFZX1JJR0hUKChoZWFkKS0+ c3BoX3Jvb3QsIGZpZWxkKTtcDQotCQkgICAgU1BMQVlfTEVGVChlbG0sIGZpZWxkKSA9IChoZWFk KS0+c3BoX3Jvb3Q7CQlcDQotCQkgICAgU1BMQVlfUklHSFQoKGhlYWQpLT5zcGhfcm9vdCwgZmll bGQpID0gTlVMTDsJXA0KLQkgICAgfSBlbHNlCQkJCQkJCVwNCi0JCSAgICByZXR1cm4gKChoZWFk KS0+c3BoX3Jvb3QpOwkJCQlcDQotICAgIH0JCQkJCQkJCQlcDQotICAgIChoZWFkKS0+c3BoX3Jv b3QgPSAoZWxtKTsJCQkJCQlcDQotICAgIHJldHVybiAoTlVMTCk7CQkJCQkJCVwNCi19CQkJCQkJ CQkJXA0KLQkJCQkJCQkJCVwNCi1zdHJ1Y3QgdHlwZSAqCQkJCQkJCQlcDQotbmFtZSMjX1NQTEFZ X1JFTU9WRShzdHJ1Y3QgbmFtZSAqaGVhZCwgc3RydWN0IHR5cGUgKmVsbSkJCVwNCi17CQkJCQkJ CQkJXA0KLQlzdHJ1Y3QgdHlwZSAqX190bXA7CQkJCQkJXA0KLQlpZiAoU1BMQVlfRU1QVFkoaGVh ZCkpCQkJCQkJXA0KLQkJcmV0dXJuIChOVUxMKTsJCQkJCQlcDQotCW5hbWUjI19TUExBWShoZWFk LCBlbG0pOwkJCQkJXA0KLQlpZiAoKGNtcCkoZWxtLCAoaGVhZCktPnNwaF9yb290KSA9PSAwKSB7 CQkJXA0KLQkJaWYgKFNQTEFZX0xFRlQoKGhlYWQpLT5zcGhfcm9vdCwgZmllbGQpID09IE5VTEwp IHsJXA0KLQkJCShoZWFkKS0+c3BoX3Jvb3QgPSBTUExBWV9SSUdIVCgoaGVhZCktPnNwaF9yb290 LCBmaWVsZCk7XA0KLQkJfSBlbHNlIHsJCQkJCQlcDQotCQkJX190bXAgPSBTUExBWV9SSUdIVCgo aGVhZCktPnNwaF9yb290LCBmaWVsZCk7CVwNCi0JCQkoaGVhZCktPnNwaF9yb290ID0gU1BMQVlf TEVGVCgoaGVhZCktPnNwaF9yb290LCBmaWVsZCk7XA0KLQkJCW5hbWUjI19TUExBWShoZWFkLCBl bG0pOwkJCVwNCi0JCQlTUExBWV9SSUdIVCgoaGVhZCktPnNwaF9yb290LCBmaWVsZCkgPSBfX3Rt cDsJXA0KLQkJfQkJCQkJCQlcDQotCQlyZXR1cm4gKGVsbSk7CQkJCQkJXA0KLQl9CQkJCQkJCQlc DQotCXJldHVybiAoTlVMTCk7CQkJCQkJCVwNCi19CQkJCQkJCQkJXA0KLQkJCQkJCQkJCVwNCi12 b2lkCQkJCQkJCQkJXA0KLW5hbWUjI19TUExBWShzdHJ1Y3QgbmFtZSAqaGVhZCwgc3RydWN0IHR5 cGUgKmVsbSkJCQlcDQotewkJCQkJCQkJCVwNCi0Jc3RydWN0IHR5cGUgX19ub2RlLCAqX19sZWZ0 LCAqX19yaWdodCwgKl9fdG1wOwkJCVwNCi0JaW50IF9fY29tcDsJCQkJCQkJXA0KLVwNCi0JU1BM QVlfTEVGVCgmX19ub2RlLCBmaWVsZCkgPSBTUExBWV9SSUdIVCgmX19ub2RlLCBmaWVsZCkgPSBO VUxMO1wNCi0JX19sZWZ0ID0gX19yaWdodCA9ICZfX25vZGU7CQkJCQlcDQotXA0KLQl3aGlsZSAo KF9fY29tcCA9IChjbXApKGVsbSwgKGhlYWQpLT5zcGhfcm9vdCkpICE9IDApIHsJCVwNCi0JCWlm IChfX2NvbXAgPCAwKSB7CQkJCQlcDQotCQkJX190bXAgPSBTUExBWV9MRUZUKChoZWFkKS0+c3Bo X3Jvb3QsIGZpZWxkKTsJXA0KLQkJCWlmIChfX3RtcCA9PSBOVUxMKQkJCQlcDQotCQkJCWJyZWFr OwkJCQkJXA0KLQkJCWlmICgoY21wKShlbG0sIF9fdG1wKSA8IDApewkJCVwNCi0JCQkJU1BMQVlf Uk9UQVRFX1JJR0hUKGhlYWQsIF9fdG1wLCBmaWVsZCk7CVwNCi0JCQkJaWYgKFNQTEFZX0xFRlQo KGhlYWQpLT5zcGhfcm9vdCwgZmllbGQpID09IE5VTEwpXA0KLQkJCQkJYnJlYWs7CQkJCVwNCi0J CQl9CQkJCQkJXA0KLQkJCVNQTEFZX0xJTktMRUZUKGhlYWQsIF9fcmlnaHQsIGZpZWxkKTsJCVwN Ci0JCX0gZWxzZSBpZiAoX19jb21wID4gMCkgewkJCQlcDQotCQkJX190bXAgPSBTUExBWV9SSUdI VCgoaGVhZCktPnNwaF9yb290LCBmaWVsZCk7CVwNCi0JCQlpZiAoX190bXAgPT0gTlVMTCkJCQkJ XA0KLQkJCQlicmVhazsJCQkJCVwNCi0JCQlpZiAoKGNtcCkoZWxtLCBfX3RtcCkgPiAwKXsJCQlc DQotCQkJCVNQTEFZX1JPVEFURV9MRUZUKGhlYWQsIF9fdG1wLCBmaWVsZCk7CVwNCi0JCQkJaWYg KFNQTEFZX1JJR0hUKChoZWFkKS0+c3BoX3Jvb3QsIGZpZWxkKSA9PSBOVUxMKVwNCi0JCQkJCWJy ZWFrOwkJCQlcDQotCQkJfQkJCQkJCVwNCi0JCQlTUExBWV9MSU5LUklHSFQoaGVhZCwgX19sZWZ0 LCBmaWVsZCk7CQlcDQotCQl9CQkJCQkJCVwNCi0JfQkJCQkJCQkJXA0KLQlTUExBWV9BU1NFTUJM RShoZWFkLCAmX19ub2RlLCBfX2xlZnQsIF9fcmlnaHQsIGZpZWxkKTsJCVwNCi19CQkJCQkJCQkJ XA0KLQkJCQkJCQkJCVwNCi0vKiBTcGxheSB3aXRoIGVpdGhlciB0aGUgbWluaW11bSBvciB0aGUg bWF4aW11bSBlbGVtZW50CQkJXA0KLSAqIFVzZWQgdG8gZmluZCBtaW5pbXVtIG9yIG1heGltdW0g ZWxlbWVudCBpbiB0cmVlLgkJCVwNCi0gKi8JCQkJCQkJCQlcDQotdm9pZCBuYW1lIyNfU1BMQVlf TUlOTUFYKHN0cnVjdCBuYW1lICpoZWFkLCBpbnQgX19jb21wKSBcDQotewkJCQkJCQkJCVwNCi0J c3RydWN0IHR5cGUgX19ub2RlLCAqX19sZWZ0LCAqX19yaWdodCwgKl9fdG1wOwkJCVwNCi1cDQot CVNQTEFZX0xFRlQoJl9fbm9kZSwgZmllbGQpID0gU1BMQVlfUklHSFQoJl9fbm9kZSwgZmllbGQp ID0gTlVMTDtcDQotCV9fbGVmdCA9IF9fcmlnaHQgPSAmX19ub2RlOwkJCQkJXA0KLVwNCi0Jd2hp bGUgKDEpIHsJCQkJCQkJXA0KLQkJaWYgKF9fY29tcCA8IDApIHsJCQkJCVwNCi0JCQlfX3RtcCA9 IFNQTEFZX0xFRlQoKGhlYWQpLT5zcGhfcm9vdCwgZmllbGQpOwlcDQotCQkJaWYgKF9fdG1wID09 IE5VTEwpCQkJCVwNCi0JCQkJYnJlYWs7CQkJCQlcDQotCQkJaWYgKF9fY29tcCA8IDApewkJCQlc DQotCQkJCVNQTEFZX1JPVEFURV9SSUdIVChoZWFkLCBfX3RtcCwgZmllbGQpOwlcDQotCQkJCWlm IChTUExBWV9MRUZUKChoZWFkKS0+c3BoX3Jvb3QsIGZpZWxkKSA9PSBOVUxMKVwNCi0JCQkJCWJy ZWFrOwkJCQlcDQotCQkJfQkJCQkJCVwNCi0JCQlTUExBWV9MSU5LTEVGVChoZWFkLCBfX3JpZ2h0 LCBmaWVsZCk7CQlcDQotCQl9IGVsc2UgaWYgKF9fY29tcCA+IDApIHsJCQkJXA0KLQkJCV9fdG1w ID0gU1BMQVlfUklHSFQoKGhlYWQpLT5zcGhfcm9vdCwgZmllbGQpOwlcDQotCQkJaWYgKF9fdG1w ID09IE5VTEwpCQkJCVwNCi0JCQkJYnJlYWs7CQkJCQlcDQotCQkJaWYgKF9fY29tcCA+IDApIHsJ CQkJXA0KLQkJCQlTUExBWV9ST1RBVEVfTEVGVChoZWFkLCBfX3RtcCwgZmllbGQpOwlcDQotCQkJ CWlmIChTUExBWV9SSUdIVCgoaGVhZCktPnNwaF9yb290LCBmaWVsZCkgPT0gTlVMTClcDQotCQkJ CQlicmVhazsJCQkJXA0KLQkJCX0JCQkJCQlcDQotCQkJU1BMQVlfTElOS1JJR0hUKGhlYWQsIF9f bGVmdCwgZmllbGQpOwkJXA0KLQkJfQkJCQkJCQlcDQotCX0JCQkJCQkJCVwNCi0JU1BMQVlfQVNT RU1CTEUoaGVhZCwgJl9fbm9kZSwgX19sZWZ0LCBfX3JpZ2h0LCBmaWVsZCk7CQlcDQotfQ0KLQ0K LSNkZWZpbmUgU1BMQVlfTkVHSU5GCS0xDQotI2RlZmluZSBTUExBWV9JTkYJMQ0KLQ0KLSNkZWZp bmUgU1BMQVlfSU5TRVJUKG5hbWUsIHgsIHkpCW5hbWUjI19TUExBWV9JTlNFUlQoeCwgeSkNCi0j ZGVmaW5lIFNQTEFZX1JFTU9WRShuYW1lLCB4LCB5KQluYW1lIyNfU1BMQVlfUkVNT1ZFKHgsIHkp DQotI2RlZmluZSBTUExBWV9GSU5EKG5hbWUsIHgsIHkpCQluYW1lIyNfU1BMQVlfRklORCh4LCB5 KQ0KLSNkZWZpbmUgU1BMQVlfTkVYVChuYW1lLCB4LCB5KQkJbmFtZSMjX1NQTEFZX05FWFQoeCwg eSkNCi0jZGVmaW5lIFNQTEFZX01JTihuYW1lLCB4KQkJKFNQTEFZX0VNUFRZKHgpID8gTlVMTAlc DQotCQkJCQk6IG5hbWUjI19TUExBWV9NSU5fTUFYKHgsIFNQTEFZX05FR0lORikpDQotI2RlZmlu ZSBTUExBWV9NQVgobmFtZSwgeCkJCShTUExBWV9FTVBUWSh4KSA/IE5VTEwJXA0KLQkJCQkJOiBu YW1lIyNfU1BMQVlfTUlOX01BWCh4LCBTUExBWV9JTkYpKQ0KLQ0KLSNkZWZpbmUgU1BMQVlfRk9S RUFDSCh4LCBuYW1lLCBoZWFkKQkJCQkJXA0KLQlmb3IgKCh4KSA9IFNQTEFZX01JTihuYW1lLCBo ZWFkKTsJCQkJXA0KLQkgICAgICh4KSAhPSBOVUxMOwkJCQkJCVwNCi0JICAgICAoeCkgPSBTUExB WV9ORVhUKG5hbWUsIGhlYWQsIHgpKQ0KLQ0KLS8qIE1hY3JvcyB0aGF0IGRlZmluZSBhIHJlZC1i bGFjayB0cmVlICovDQotI2RlZmluZSBSQl9IRUFEKG5hbWUsIHR5cGUpCQkJCQkJXA0KLXN0cnVj dCBuYW1lIHsJCQkJCQkJCVwNCi0Jc3RydWN0IHR5cGUgKnJiaF9yb290OyAvKiByb290IG9mIHRo ZSB0cmVlICovCQkJXA0KLX0NCi0NCi0jZGVmaW5lIFJCX0lOSVRJQUxJWkVSKHJvb3QpCQkJCQkJ XA0KLQl7IE5VTEwgfQ0KLQ0KLSNkZWZpbmUgUkJfSU5JVChyb290KSBkbyB7CQkJCQkJXA0KLQko cm9vdCktPnJiaF9yb290ID0gTlVMTDsJCQkJCVwNCi19IHdoaWxlICgvKkNPTlNUQ09ORCovIDAp DQotDQotI2RlZmluZSBSQl9CTEFDSwkwDQotI2RlZmluZSBSQl9SRUQJCTENCi0jZGVmaW5lIFJC X0VOVFJZKHR5cGUpCQkJCQkJCVwNCi1zdHJ1Y3QgewkJCQkJCQkJXA0KLQlzdHJ1Y3QgdHlwZSAq cmJlX2xlZnQ7CQkvKiBsZWZ0IGVsZW1lbnQgKi8JCVwNCi0Jc3RydWN0IHR5cGUgKnJiZV9yaWdo dDsJCS8qIHJpZ2h0IGVsZW1lbnQgKi8JCVwNCi0Jc3RydWN0IHR5cGUgKnJiZV9wYXJlbnQ7CS8q IHBhcmVudCBlbGVtZW50ICovCQlcDQotCWludCByYmVfY29sb3I7CQkJLyogbm9kZSBjb2xvciAq LwkJXA0KLX0NCi0NCi0jZGVmaW5lIFJCX0xFRlQoZWxtLCBmaWVsZCkJCShlbG0pLT5maWVsZC5y YmVfbGVmdA0KLSNkZWZpbmUgUkJfUklHSFQoZWxtLCBmaWVsZCkJCShlbG0pLT5maWVsZC5yYmVf cmlnaHQNCi0jZGVmaW5lIFJCX1BBUkVOVChlbG0sIGZpZWxkKQkJKGVsbSktPmZpZWxkLnJiZV9w YXJlbnQNCi0jZGVmaW5lIFJCX0NPTE9SKGVsbSwgZmllbGQpCQkoZWxtKS0+ZmllbGQucmJlX2Nv bG9yDQotI2RlZmluZSBSQl9ST09UKGhlYWQpCQkJKGhlYWQpLT5yYmhfcm9vdA0KLSNkZWZpbmUg UkJfRU1QVFkoaGVhZCkJCQkoUkJfUk9PVChoZWFkKSA9PSBOVUxMKQ0KLQ0KLSNkZWZpbmUgUkJf U0VUKGVsbSwgcGFyZW50LCBmaWVsZCkgZG8gewkJCQkJXA0KLQlSQl9QQVJFTlQoZWxtLCBmaWVs ZCkgPSBwYXJlbnQ7CQkJCQlcDQotCVJCX0xFRlQoZWxtLCBmaWVsZCkgPSBSQl9SSUdIVChlbG0s IGZpZWxkKSA9IE5VTEw7CQlcDQotCVJCX0NPTE9SKGVsbSwgZmllbGQpID0gUkJfUkVEOwkJCQkJ XA0KLX0gd2hpbGUgKC8qQ09OU1RDT05EKi8gMCkNCi0NCi0jZGVmaW5lIFJCX1NFVF9CTEFDS1JF RChibGFjaywgcmVkLCBmaWVsZCkgZG8gewkJCQlcDQotCVJCX0NPTE9SKGJsYWNrLCBmaWVsZCkg PSBSQl9CTEFDSzsJCQkJXA0KLQlSQl9DT0xPUihyZWQsIGZpZWxkKSA9IFJCX1JFRDsJCQkJCVwN Ci19IHdoaWxlICgvKkNPTlNUQ09ORCovIDApDQotDQotI2lmbmRlZiBSQl9BVUdNRU5UDQotI2Rl ZmluZSBSQl9BVUdNRU5UKHgpCWRvIHt9IHdoaWxlICgwKQ0KLSNlbmRpZg0KLQ0KLSNkZWZpbmUg UkJfUk9UQVRFX0xFRlQoaGVhZCwgZWxtLCB0bXAsIGZpZWxkKSBkbyB7CQkJXA0KLQkodG1wKSA9 IFJCX1JJR0hUKGVsbSwgZmllbGQpOwkJCQkJXA0KLQlpZiAoKFJCX1JJR0hUKGVsbSwgZmllbGQp ID0gUkJfTEVGVCh0bXAsIGZpZWxkKSkgIT0gTlVMTCkgewlcDQotCQlSQl9QQVJFTlQoUkJfTEVG VCh0bXAsIGZpZWxkKSwgZmllbGQpID0gKGVsbSk7CQlcDQotCX0JCQkJCQkJCVwNCi0JUkJfQVVH TUVOVChlbG0pOwkJCQkJCVwNCi0JaWYgKChSQl9QQVJFTlQodG1wLCBmaWVsZCkgPSBSQl9QQVJF TlQoZWxtLCBmaWVsZCkpICE9IE5VTEwpIHsJXA0KLQkJaWYgKChlbG0pID09IFJCX0xFRlQoUkJf UEFSRU5UKGVsbSwgZmllbGQpLCBmaWVsZCkpCVwNCi0JCQlSQl9MRUZUKFJCX1BBUkVOVChlbG0s IGZpZWxkKSwgZmllbGQpID0gKHRtcCk7CVwNCi0JCWVsc2UJCQkJCQkJXA0KLQkJCVJCX1JJR0hU KFJCX1BBUkVOVChlbG0sIGZpZWxkKSwgZmllbGQpID0gKHRtcCk7CVwNCi0JfSBlbHNlCQkJCQkJ CQlcDQotCQkoaGVhZCktPnJiaF9yb290ID0gKHRtcCk7CQkJCVwNCi0JUkJfTEVGVCh0bXAsIGZp ZWxkKSA9IChlbG0pOwkJCQkJXA0KLQlSQl9QQVJFTlQoZWxtLCBmaWVsZCkgPSAodG1wKTsJCQkJ CVwNCi0JUkJfQVVHTUVOVCh0bXApOwkJCQkJCVwNCi0JaWYgKChSQl9QQVJFTlQodG1wLCBmaWVs ZCkpKQkJCQkJXA0KLQkJUkJfQVVHTUVOVChSQl9QQVJFTlQodG1wLCBmaWVsZCkpOwkJCVwNCi19 IHdoaWxlICgvKkNPTlNUQ09ORCovIDApDQotDQotI2RlZmluZSBSQl9ST1RBVEVfUklHSFQoaGVh ZCwgZWxtLCB0bXAsIGZpZWxkKSBkbyB7CQkJXA0KLQkodG1wKSA9IFJCX0xFRlQoZWxtLCBmaWVs ZCk7CQkJCQlcDQotCWlmICgoUkJfTEVGVChlbG0sIGZpZWxkKSA9IFJCX1JJR0hUKHRtcCwgZmll bGQpKSAhPSBOVUxMKSB7CVwNCi0JCVJCX1BBUkVOVChSQl9SSUdIVCh0bXAsIGZpZWxkKSwgZmll bGQpID0gKGVsbSk7CQlcDQotCX0JCQkJCQkJCVwNCi0JUkJfQVVHTUVOVChlbG0pOwkJCQkJCVwN Ci0JaWYgKChSQl9QQVJFTlQodG1wLCBmaWVsZCkgPSBSQl9QQVJFTlQoZWxtLCBmaWVsZCkpICE9 IE5VTEwpIHsJXA0KLQkJaWYgKChlbG0pID09IFJCX0xFRlQoUkJfUEFSRU5UKGVsbSwgZmllbGQp LCBmaWVsZCkpCVwNCi0JCQlSQl9MRUZUKFJCX1BBUkVOVChlbG0sIGZpZWxkKSwgZmllbGQpID0g KHRtcCk7CVwNCi0JCWVsc2UJCQkJCQkJXA0KLQkJCVJCX1JJR0hUKFJCX1BBUkVOVChlbG0sIGZp ZWxkKSwgZmllbGQpID0gKHRtcCk7CVwNCi0JfSBlbHNlCQkJCQkJCQlcDQotCQkoaGVhZCktPnJi aF9yb290ID0gKHRtcCk7CQkJCVwNCi0JUkJfUklHSFQodG1wLCBmaWVsZCkgPSAoZWxtKTsJCQkJ CVwNCi0JUkJfUEFSRU5UKGVsbSwgZmllbGQpID0gKHRtcCk7CQkJCQlcDQotCVJCX0FVR01FTlQo dG1wKTsJCQkJCQlcDQotCWlmICgoUkJfUEFSRU5UKHRtcCwgZmllbGQpKSkJCQkJCVwNCi0JCVJC X0FVR01FTlQoUkJfUEFSRU5UKHRtcCwgZmllbGQpKTsJCQlcDQotfSB3aGlsZSAoLypDT05TVENP TkQqLyAwKQ0KLQ0KLS8qIEdlbmVyYXRlcyBwcm90b3R5cGVzIGFuZCBpbmxpbmUgZnVuY3Rpb25z ICovDQotI2RlZmluZQlSQl9QUk9UT1RZUEUobmFtZSwgdHlwZSwgZmllbGQsIGNtcCkJCQkJXA0K LQlSQl9QUk9UT1RZUEVfSU5URVJOQUwobmFtZSwgdHlwZSwgZmllbGQsIGNtcCwpDQotI2RlZmlu ZQlSQl9QUk9UT1RZUEVfU1RBVElDKG5hbWUsIHR5cGUsIGZpZWxkLCBjbXApCQkJXA0KLQlSQl9Q Uk9UT1RZUEVfSU5URVJOQUwobmFtZSwgdHlwZSwgZmllbGQsIGNtcCwgX191bnVzZWQgc3RhdGlj KQ0KLSNkZWZpbmUgUkJfUFJPVE9UWVBFX0lOVEVSTkFMKG5hbWUsIHR5cGUsIGZpZWxkLCBjbXAs IGF0dHIpCQlcDQotYXR0ciB2b2lkIG5hbWUjI19SQl9JTlNFUlRfQ09MT1Ioc3RydWN0IG5hbWUg Kiwgc3RydWN0IHR5cGUgKik7CQlcDQotYXR0ciB2b2lkIG5hbWUjI19SQl9SRU1PVkVfQ09MT1Io c3RydWN0IG5hbWUgKiwgc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKik7XA0KLWF0dHIgc3Ry dWN0IHR5cGUgKm5hbWUjI19SQl9SRU1PVkUoc3RydWN0IG5hbWUgKiwgc3RydWN0IHR5cGUgKik7 CVwNCi1hdHRyIHN0cnVjdCB0eXBlICpuYW1lIyNfUkJfSU5TRVJUKHN0cnVjdCBuYW1lICosIHN0 cnVjdCB0eXBlICopOwlcDQotYXR0ciBzdHJ1Y3QgdHlwZSAqbmFtZSMjX1JCX0ZJTkQoc3RydWN0 IG5hbWUgKiwgc3RydWN0IHR5cGUgKik7CQlcDQotYXR0ciBzdHJ1Y3QgdHlwZSAqbmFtZSMjX1JC X05GSU5EKHN0cnVjdCBuYW1lICosIHN0cnVjdCB0eXBlICopOwlcDQotYXR0ciBzdHJ1Y3QgdHlw ZSAqbmFtZSMjX1JCX05FWFQoc3RydWN0IHR5cGUgKik7CQkJXA0KLWF0dHIgc3RydWN0IHR5cGUg Km5hbWUjI19SQl9QUkVWKHN0cnVjdCB0eXBlICopOwkJCVwNCi1hdHRyIHN0cnVjdCB0eXBlICpu YW1lIyNfUkJfTUlOTUFYKHN0cnVjdCBuYW1lICosIGludCk7CQkJXA0KLQkJCQkJCQkJCVwNCi0N Ci0vKiBNYWluIHJiIG9wZXJhdGlvbi4NCi0gKiBNb3ZlcyBub2RlIGNsb3NlIHRvIHRoZSBrZXkg b2YgZWxtIHRvIHRvcA0KLSAqLw0KLSNkZWZpbmUJUkJfR0VORVJBVEUobmFtZSwgdHlwZSwgZmll bGQsIGNtcCkJCQkJXA0KLQlSQl9HRU5FUkFURV9JTlRFUk5BTChuYW1lLCB0eXBlLCBmaWVsZCwg Y21wLCkNCi0jZGVmaW5lCVJCX0dFTkVSQVRFX1NUQVRJQyhuYW1lLCB0eXBlLCBmaWVsZCwgY21w KQkJCVwNCi0JUkJfR0VORVJBVEVfSU5URVJOQUwobmFtZSwgdHlwZSwgZmllbGQsIGNtcCwgX191 bnVzZWQgc3RhdGljKQ0KLSNkZWZpbmUgUkJfR0VORVJBVEVfSU5URVJOQUwobmFtZSwgdHlwZSwg ZmllbGQsIGNtcCwgYXR0cikJCVwNCi1hdHRyIHZvaWQJCQkJCQkJCVwNCi1uYW1lIyNfUkJfSU5T RVJUX0NPTE9SKHN0cnVjdCBuYW1lICpoZWFkLCBzdHJ1Y3QgdHlwZSAqZWxtKQkJXA0KLXsJCQkJ CQkJCQlcDQotCXN0cnVjdCB0eXBlICpwYXJlbnQsICpncGFyZW50LCAqdG1wOwkJCQlcDQotCXdo aWxlICgocGFyZW50ID0gUkJfUEFSRU5UKGVsbSwgZmllbGQpKSAhPSBOVUxMICYmCQlcDQotCSAg ICBSQl9DT0xPUihwYXJlbnQsIGZpZWxkKSA9PSBSQl9SRUQpIHsJCQlcDQotCQlncGFyZW50ID0g UkJfUEFSRU5UKHBhcmVudCwgZmllbGQpOwkJCVwNCi0JCWlmIChwYXJlbnQgPT0gUkJfTEVGVChn cGFyZW50LCBmaWVsZCkpIHsJCVwNCi0JCQl0bXAgPSBSQl9SSUdIVChncGFyZW50LCBmaWVsZCk7 CQkJXA0KLQkJCWlmICh0bXAgJiYgUkJfQ09MT1IodG1wLCBmaWVsZCkgPT0gUkJfUkVEKSB7CVwN Ci0JCQkJUkJfQ09MT1IodG1wLCBmaWVsZCkgPSBSQl9CTEFDSzsJXA0KLQkJCQlSQl9TRVRfQkxB Q0tSRUQocGFyZW50LCBncGFyZW50LCBmaWVsZCk7XA0KLQkJCQllbG0gPSBncGFyZW50OwkJCQlc DQotCQkJCWNvbnRpbnVlOwkJCQlcDQotCQkJfQkJCQkJCVwNCi0JCQlpZiAoUkJfUklHSFQocGFy ZW50LCBmaWVsZCkgPT0gZWxtKSB7CQlcDQotCQkJCVJCX1JPVEFURV9MRUZUKGhlYWQsIHBhcmVu dCwgdG1wLCBmaWVsZCk7XA0KLQkJCQl0bXAgPSBwYXJlbnQ7CQkJCVwNCi0JCQkJcGFyZW50ID0g ZWxtOwkJCQlcDQotCQkJCWVsbSA9IHRtcDsJCQkJXA0KLQkJCX0JCQkJCQlcDQotCQkJUkJfU0VU X0JMQUNLUkVEKHBhcmVudCwgZ3BhcmVudCwgZmllbGQpOwlcDQotCQkJUkJfUk9UQVRFX1JJR0hU KGhlYWQsIGdwYXJlbnQsIHRtcCwgZmllbGQpOwlcDQotCQl9IGVsc2UgewkJCQkJCVwNCi0JCQl0 bXAgPSBSQl9MRUZUKGdwYXJlbnQsIGZpZWxkKTsJCQlcDQotCQkJaWYgKHRtcCAmJiBSQl9DT0xP Uih0bXAsIGZpZWxkKSA9PSBSQl9SRUQpIHsJXA0KLQkJCQlSQl9DT0xPUih0bXAsIGZpZWxkKSA9 IFJCX0JMQUNLOwlcDQotCQkJCVJCX1NFVF9CTEFDS1JFRChwYXJlbnQsIGdwYXJlbnQsIGZpZWxk KTtcDQotCQkJCWVsbSA9IGdwYXJlbnQ7CQkJCVwNCi0JCQkJY29udGludWU7CQkJCVwNCi0JCQl9 CQkJCQkJXA0KLQkJCWlmIChSQl9MRUZUKHBhcmVudCwgZmllbGQpID09IGVsbSkgewkJXA0KLQkJ CQlSQl9ST1RBVEVfUklHSFQoaGVhZCwgcGFyZW50LCB0bXAsIGZpZWxkKTtcDQotCQkJCXRtcCA9 IHBhcmVudDsJCQkJXA0KLQkJCQlwYXJlbnQgPSBlbG07CQkJCVwNCi0JCQkJZWxtID0gdG1wOwkJ CQlcDQotCQkJfQkJCQkJCVwNCi0JCQlSQl9TRVRfQkxBQ0tSRUQocGFyZW50LCBncGFyZW50LCBm aWVsZCk7CVwNCi0JCQlSQl9ST1RBVEVfTEVGVChoZWFkLCBncGFyZW50LCB0bXAsIGZpZWxkKTsJ XA0KLQkJfQkJCQkJCQlcDQotCX0JCQkJCQkJCVwNCi0JUkJfQ09MT1IoaGVhZC0+cmJoX3Jvb3Qs IGZpZWxkKSA9IFJCX0JMQUNLOwkJCVwNCi19CQkJCQkJCQkJXA0KLQkJCQkJCQkJCVwNCi1hdHRy IHZvaWQJCQkJCQkJCVwNCi1uYW1lIyNfUkJfUkVNT1ZFX0NPTE9SKHN0cnVjdCBuYW1lICpoZWFk LCBzdHJ1Y3QgdHlwZSAqcGFyZW50LCBzdHJ1Y3QgdHlwZSAqZWxtKSBcDQotewkJCQkJCQkJCVwN Ci0Jc3RydWN0IHR5cGUgKnRtcDsJCQkJCQlcDQotCXdoaWxlICgoZWxtID09IE5VTEwgfHwgUkJf Q09MT1IoZWxtLCBmaWVsZCkgPT0gUkJfQkxBQ0spICYmCVwNCi0JICAgIGVsbSAhPSBSQl9ST09U KGhlYWQpKSB7CQkJCQlcDQotCQlpZiAoUkJfTEVGVChwYXJlbnQsIGZpZWxkKSA9PSBlbG0pIHsJ CQlcDQotCQkJdG1wID0gUkJfUklHSFQocGFyZW50LCBmaWVsZCk7CQkJXA0KLQkJCWlmIChSQl9D T0xPUih0bXAsIGZpZWxkKSA9PSBSQl9SRUQpIHsJCVwNCi0JCQkJUkJfU0VUX0JMQUNLUkVEKHRt cCwgcGFyZW50LCBmaWVsZCk7CVwNCi0JCQkJUkJfUk9UQVRFX0xFRlQoaGVhZCwgcGFyZW50LCB0 bXAsIGZpZWxkKTtcDQotCQkJCXRtcCA9IFJCX1JJR0hUKHBhcmVudCwgZmllbGQpOwkJXA0KLQkJ CX0JCQkJCQlcDQotCQkJaWYgKChSQl9MRUZUKHRtcCwgZmllbGQpID09IE5VTEwgfHwJCVwNCi0J CQkgICAgUkJfQ09MT1IoUkJfTEVGVCh0bXAsIGZpZWxkKSwgZmllbGQpID09IFJCX0JMQUNLKSAm JlwNCi0JCQkgICAgKFJCX1JJR0hUKHRtcCwgZmllbGQpID09IE5VTEwgfHwJCVwNCi0JCQkgICAg UkJfQ09MT1IoUkJfUklHSFQodG1wLCBmaWVsZCksIGZpZWxkKSA9PSBSQl9CTEFDSykpIHtcDQot CQkJCVJCX0NPTE9SKHRtcCwgZmllbGQpID0gUkJfUkVEOwkJXA0KLQkJCQllbG0gPSBwYXJlbnQ7 CQkJCVwNCi0JCQkJcGFyZW50ID0gUkJfUEFSRU5UKGVsbSwgZmllbGQpOwkJXA0KLQkJCX0gZWxz ZSB7CQkJCQlcDQotCQkJCWlmIChSQl9SSUdIVCh0bXAsIGZpZWxkKSA9PSBOVUxMIHx8CVwNCi0J CQkJICAgIFJCX0NPTE9SKFJCX1JJR0hUKHRtcCwgZmllbGQpLCBmaWVsZCkgPT0gUkJfQkxBQ0sp IHtcDQotCQkJCQlzdHJ1Y3QgdHlwZSAqb2xlZnQ7CQlcDQotCQkJCQlpZiAoKG9sZWZ0ID0gUkJf TEVGVCh0bXAsIGZpZWxkKSkgXA0KLQkJCQkJICAgICE9IE5VTEwpCQkJXA0KLQkJCQkJCVJCX0NP TE9SKG9sZWZ0LCBmaWVsZCkgPSBSQl9CTEFDSztcDQotCQkJCQlSQl9DT0xPUih0bXAsIGZpZWxk KSA9IFJCX1JFRDsJXA0KLQkJCQkJUkJfUk9UQVRFX1JJR0hUKGhlYWQsIHRtcCwgb2xlZnQsIGZp ZWxkKTtcDQotCQkJCQl0bXAgPSBSQl9SSUdIVChwYXJlbnQsIGZpZWxkKTsJXA0KLQkJCQl9CQkJ CQlcDQotCQkJCVJCX0NPTE9SKHRtcCwgZmllbGQpID0gUkJfQ09MT1IocGFyZW50LCBmaWVsZCk7 XA0KLQkJCQlSQl9DT0xPUihwYXJlbnQsIGZpZWxkKSA9IFJCX0JMQUNLOwlcDQotCQkJCWlmIChS Ql9SSUdIVCh0bXAsIGZpZWxkKSkJCVwNCi0JCQkJCVJCX0NPTE9SKFJCX1JJR0hUKHRtcCwgZmll bGQpLCBmaWVsZCkgPSBSQl9CTEFDSztcDQotCQkJCVJCX1JPVEFURV9MRUZUKGhlYWQsIHBhcmVu dCwgdG1wLCBmaWVsZCk7XA0KLQkJCQllbG0gPSBSQl9ST09UKGhlYWQpOwkJCVwNCi0JCQkJYnJl YWs7CQkJCQlcDQotCQkJfQkJCQkJCVwNCi0JCX0gZWxzZSB7CQkJCQkJXA0KLQkJCXRtcCA9IFJC X0xFRlQocGFyZW50LCBmaWVsZCk7CQkJXA0KLQkJCWlmIChSQl9DT0xPUih0bXAsIGZpZWxkKSA9 PSBSQl9SRUQpIHsJCVwNCi0JCQkJUkJfU0VUX0JMQUNLUkVEKHRtcCwgcGFyZW50LCBmaWVsZCk7 CVwNCi0JCQkJUkJfUk9UQVRFX1JJR0hUKGhlYWQsIHBhcmVudCwgdG1wLCBmaWVsZCk7XA0KLQkJ CQl0bXAgPSBSQl9MRUZUKHBhcmVudCwgZmllbGQpOwkJXA0KLQkJCX0JCQkJCQlcDQotCQkJaWYg KChSQl9MRUZUKHRtcCwgZmllbGQpID09IE5VTEwgfHwJCVwNCi0JCQkgICAgUkJfQ09MT1IoUkJf TEVGVCh0bXAsIGZpZWxkKSwgZmllbGQpID09IFJCX0JMQUNLKSAmJlwNCi0JCQkgICAgKFJCX1JJ R0hUKHRtcCwgZmllbGQpID09IE5VTEwgfHwJCVwNCi0JCQkgICAgUkJfQ09MT1IoUkJfUklHSFQo dG1wLCBmaWVsZCksIGZpZWxkKSA9PSBSQl9CTEFDSykpIHtcDQotCQkJCVJCX0NPTE9SKHRtcCwg ZmllbGQpID0gUkJfUkVEOwkJXA0KLQkJCQllbG0gPSBwYXJlbnQ7CQkJCVwNCi0JCQkJcGFyZW50 ID0gUkJfUEFSRU5UKGVsbSwgZmllbGQpOwkJXA0KLQkJCX0gZWxzZSB7CQkJCQlcDQotCQkJCWlm IChSQl9MRUZUKHRtcCwgZmllbGQpID09IE5VTEwgfHwJXA0KLQkJCQkgICAgUkJfQ09MT1IoUkJf TEVGVCh0bXAsIGZpZWxkKSwgZmllbGQpID09IFJCX0JMQUNLKSB7XA0KLQkJCQkJc3RydWN0IHR5 cGUgKm9yaWdodDsJCVwNCi0JCQkJCWlmICgob3JpZ2h0ID0gUkJfUklHSFQodG1wLCBmaWVsZCkp IFwNCi0JCQkJCSAgICAhPSBOVUxMKQkJCVwNCi0JCQkJCQlSQl9DT0xPUihvcmlnaHQsIGZpZWxk KSA9IFJCX0JMQUNLO1wNCi0JCQkJCVJCX0NPTE9SKHRtcCwgZmllbGQpID0gUkJfUkVEOwlcDQot CQkJCQlSQl9ST1RBVEVfTEVGVChoZWFkLCB0bXAsIG9yaWdodCwgZmllbGQpO1wNCi0JCQkJCXRt cCA9IFJCX0xFRlQocGFyZW50LCBmaWVsZCk7CVwNCi0JCQkJfQkJCQkJXA0KLQkJCQlSQl9DT0xP Uih0bXAsIGZpZWxkKSA9IFJCX0NPTE9SKHBhcmVudCwgZmllbGQpO1wNCi0JCQkJUkJfQ09MT1Io cGFyZW50LCBmaWVsZCkgPSBSQl9CTEFDSzsJXA0KLQkJCQlpZiAoUkJfTEVGVCh0bXAsIGZpZWxk KSkJCVwNCi0JCQkJCVJCX0NPTE9SKFJCX0xFRlQodG1wLCBmaWVsZCksIGZpZWxkKSA9IFJCX0JM QUNLO1wNCi0JCQkJUkJfUk9UQVRFX1JJR0hUKGhlYWQsIHBhcmVudCwgdG1wLCBmaWVsZCk7XA0K LQkJCQllbG0gPSBSQl9ST09UKGhlYWQpOwkJCVwNCi0JCQkJYnJlYWs7CQkJCQlcDQotCQkJfQkJ CQkJCVwNCi0JCX0JCQkJCQkJXA0KLQl9CQkJCQkJCQlcDQotCWlmIChlbG0pCQkJCQkJCVwNCi0J CVJCX0NPTE9SKGVsbSwgZmllbGQpID0gUkJfQkxBQ0s7CQkJXA0KLX0JCQkJCQkJCQlcDQotCQkJ CQkJCQkJXA0KLWF0dHIgc3RydWN0IHR5cGUgKgkJCQkJCQlcDQotbmFtZSMjX1JCX1JFTU9WRShz dHJ1Y3QgbmFtZSAqaGVhZCwgc3RydWN0IHR5cGUgKmVsbSkJCQlcDQotewkJCQkJCQkJCVwNCi0J c3RydWN0IHR5cGUgKmNoaWxkLCAqcGFyZW50LCAqb2xkID0gZWxtOwkJCVwNCi0JaW50IGNvbG9y OwkJCQkJCQlcDQotCWlmIChSQl9MRUZUKGVsbSwgZmllbGQpID09IE5VTEwpCQkJCVwNCi0JCWNo aWxkID0gUkJfUklHSFQoZWxtLCBmaWVsZCk7CQkJCVwNCi0JZWxzZSBpZiAoUkJfUklHSFQoZWxt LCBmaWVsZCkgPT0gTlVMTCkJCQkJXA0KLQkJY2hpbGQgPSBSQl9MRUZUKGVsbSwgZmllbGQpOwkJ CQlcDQotCWVsc2UgewkJCQkJCQkJXA0KLQkJc3RydWN0IHR5cGUgKmxlZnQ7CQkJCQlcDQotCQll bG0gPSBSQl9SSUdIVChlbG0sIGZpZWxkKTsJCQkJXA0KLQkJd2hpbGUgKChsZWZ0ID0gUkJfTEVG VChlbG0sIGZpZWxkKSkgIT0gTlVMTCkJCVwNCi0JCQllbG0gPSBsZWZ0OwkJCQkJXA0KLQkJY2hp bGQgPSBSQl9SSUdIVChlbG0sIGZpZWxkKTsJCQkJXA0KLQkJcGFyZW50ID0gUkJfUEFSRU5UKGVs bSwgZmllbGQpOwkJCQlcDQotCQljb2xvciA9IFJCX0NPTE9SKGVsbSwgZmllbGQpOwkJCQlcDQot CQlpZiAoY2hpbGQpCQkJCQkJXA0KLQkJCVJCX1BBUkVOVChjaGlsZCwgZmllbGQpID0gcGFyZW50 OwkJXA0KLQkJaWYgKHBhcmVudCkgewkJCQkJCVwNCi0JCQlpZiAoUkJfTEVGVChwYXJlbnQsIGZp ZWxkKSA9PSBlbG0pCQlcDQotCQkJCVJCX0xFRlQocGFyZW50LCBmaWVsZCkgPSBjaGlsZDsJCVwN Ci0JCQllbHNlCQkJCQkJXA0KLQkJCQlSQl9SSUdIVChwYXJlbnQsIGZpZWxkKSA9IGNoaWxkOwlc DQotCQkJUkJfQVVHTUVOVChwYXJlbnQpOwkJCQlcDQotCQl9IGVsc2UJCQkJCQkJXA0KLQkJCVJC X1JPT1QoaGVhZCkgPSBjaGlsZDsJCQkJXA0KLQkJaWYgKFJCX1BBUkVOVChlbG0sIGZpZWxkKSA9 PSBvbGQpCQkJXA0KLQkJCXBhcmVudCA9IGVsbTsJCQkJCVwNCi0JCShlbG0pLT5maWVsZCA9IChv bGQpLT5maWVsZDsJCQkJXA0KLQkJaWYgKFJCX1BBUkVOVChvbGQsIGZpZWxkKSkgewkJCQlcDQot CQkJaWYgKFJCX0xFRlQoUkJfUEFSRU5UKG9sZCwgZmllbGQpLCBmaWVsZCkgPT0gb2xkKVwNCi0J CQkJUkJfTEVGVChSQl9QQVJFTlQob2xkLCBmaWVsZCksIGZpZWxkKSA9IGVsbTtcDQotCQkJZWxz ZQkJCQkJCVwNCi0JCQkJUkJfUklHSFQoUkJfUEFSRU5UKG9sZCwgZmllbGQpLCBmaWVsZCkgPSBl bG07XA0KLQkJCVJCX0FVR01FTlQoUkJfUEFSRU5UKG9sZCwgZmllbGQpKTsJCVwNCi0JCX0gZWxz ZQkJCQkJCQlcDQotCQkJUkJfUk9PVChoZWFkKSA9IGVsbTsJCQkJXA0KLQkJUkJfUEFSRU5UKFJC X0xFRlQob2xkLCBmaWVsZCksIGZpZWxkKSA9IGVsbTsJCVwNCi0JCWlmIChSQl9SSUdIVChvbGQs IGZpZWxkKSkJCQkJXA0KLQkJCVJCX1BBUkVOVChSQl9SSUdIVChvbGQsIGZpZWxkKSwgZmllbGQp ID0gZWxtOwlcDQotCQlpZiAocGFyZW50KSB7CQkJCQkJXA0KLQkJCWxlZnQgPSBwYXJlbnQ7CQkJ CQlcDQotCQkJZG8gewkJCQkJCVwNCi0JCQkJUkJfQVVHTUVOVChsZWZ0KTsJCQlcDQotCQkJfSB3 aGlsZSAoKGxlZnQgPSBSQl9QQVJFTlQobGVmdCwgZmllbGQpKSAhPSBOVUxMKTsgXA0KLQkJfQkJ CQkJCQlcDQotCQlnb3RvIGNvbG9yOwkJCQkJCVwNCi0JfQkJCQkJCQkJXA0KLQlwYXJlbnQgPSBS Ql9QQVJFTlQoZWxtLCBmaWVsZCk7CQkJCQlcDQotCWNvbG9yID0gUkJfQ09MT1IoZWxtLCBmaWVs ZCk7CQkJCQlcDQotCWlmIChjaGlsZCkJCQkJCQkJXA0KLQkJUkJfUEFSRU5UKGNoaWxkLCBmaWVs ZCkgPSBwYXJlbnQ7CQkJXA0KLQlpZiAocGFyZW50KSB7CQkJCQkJCVwNCi0JCWlmIChSQl9MRUZU KHBhcmVudCwgZmllbGQpID09IGVsbSkJCQlcDQotCQkJUkJfTEVGVChwYXJlbnQsIGZpZWxkKSA9 IGNoaWxkOwkJCVwNCi0JCWVsc2UJCQkJCQkJXA0KLQkJCVJCX1JJR0hUKHBhcmVudCwgZmllbGQp ID0gY2hpbGQ7CQlcDQotCQlSQl9BVUdNRU5UKHBhcmVudCk7CQkJCQlcDQotCX0gZWxzZQkJCQkJ CQkJXA0KLQkJUkJfUk9PVChoZWFkKSA9IGNoaWxkOwkJCQkJXA0KLWNvbG9yOgkJCQkJCQkJCVwN Ci0JaWYgKGNvbG9yID09IFJCX0JMQUNLKQkJCQkJCVwNCi0JCW5hbWUjI19SQl9SRU1PVkVfQ09M T1IoaGVhZCwgcGFyZW50LCBjaGlsZCk7CQlcDQotCXJldHVybiAob2xkKTsJCQkJCQkJXA0KLX0J CQkJCQkJCQlcDQotCQkJCQkJCQkJXA0KLS8qIEluc2VydHMgYSBub2RlIGludG8gdGhlIFJCIHRy ZWUgKi8JCQkJCVwNCi1hdHRyIHN0cnVjdCB0eXBlICoJCQkJCQkJXA0KLW5hbWUjI19SQl9JTlNF UlQoc3RydWN0IG5hbWUgKmhlYWQsIHN0cnVjdCB0eXBlICplbG0pCQkJXA0KLXsJCQkJCQkJCQlc DQotCXN0cnVjdCB0eXBlICp0bXA7CQkJCQkJXA0KLQlzdHJ1Y3QgdHlwZSAqcGFyZW50ID0gTlVM TDsJCQkJCVwNCi0JaW50IGNvbXAgPSAwOwkJCQkJCQlcDQotCXRtcCA9IFJCX1JPT1QoaGVhZCk7 CQkJCQkJXA0KLQl3aGlsZSAodG1wKSB7CQkJCQkJCVwNCi0JCXBhcmVudCA9IHRtcDsJCQkJCQlc DQotCQljb21wID0gKGNtcCkoZWxtLCBwYXJlbnQpOwkJCQlcDQotCQlpZiAoY29tcCA8IDApCQkJ CQkJXA0KLQkJCXRtcCA9IFJCX0xFRlQodG1wLCBmaWVsZCk7CQkJXA0KLQkJZWxzZSBpZiAoY29t cCA+IDApCQkJCQlcDQotCQkJdG1wID0gUkJfUklHSFQodG1wLCBmaWVsZCk7CQkJXA0KLQkJZWxz ZQkJCQkJCQlcDQotCQkJcmV0dXJuICh0bXApOwkJCQkJXA0KLQl9CQkJCQkJCQlcDQotCVJCX1NF VChlbG0sIHBhcmVudCwgZmllbGQpOwkJCQkJXA0KLQlpZiAocGFyZW50ICE9IE5VTEwpIHsJCQkJ CQlcDQotCQlpZiAoY29tcCA8IDApCQkJCQkJXA0KLQkJCVJCX0xFRlQocGFyZW50LCBmaWVsZCkg PSBlbG07CQkJXA0KLQkJZWxzZQkJCQkJCQlcDQotCQkJUkJfUklHSFQocGFyZW50LCBmaWVsZCkg PSBlbG07CQkJXA0KLQkJUkJfQVVHTUVOVChwYXJlbnQpOwkJCQkJXA0KLQl9IGVsc2UJCQkJCQkJ CVwNCi0JCVJCX1JPT1QoaGVhZCkgPSBlbG07CQkJCQlcDQotCW5hbWUjI19SQl9JTlNFUlRfQ09M T1IoaGVhZCwgZWxtKTsJCQkJXA0KLQlyZXR1cm4gKE5VTEwpOwkJCQkJCQlcDQotfQkJCQkJCQkJ CVwNCi0JCQkJCQkJCQlcDQotLyogRmluZHMgdGhlIG5vZGUgd2l0aCB0aGUgc2FtZSBrZXkgYXMg ZWxtICovCQkJCVwNCi1hdHRyIHN0cnVjdCB0eXBlICoJCQkJCQkJXA0KLW5hbWUjI19SQl9GSU5E KHN0cnVjdCBuYW1lICpoZWFkLCBzdHJ1Y3QgdHlwZSAqZWxtKQkJCVwNCi17CQkJCQkJCQkJXA0K LQlzdHJ1Y3QgdHlwZSAqdG1wID0gUkJfUk9PVChoZWFkKTsJCQkJXA0KLQlpbnQgY29tcDsJCQkJ CQkJXA0KLQl3aGlsZSAodG1wKSB7CQkJCQkJCVwNCi0JCWNvbXAgPSBjbXAoZWxtLCB0bXApOwkJ CQkJXA0KLQkJaWYgKGNvbXAgPCAwKQkJCQkJCVwNCi0JCQl0bXAgPSBSQl9MRUZUKHRtcCwgZmll bGQpOwkJCVwNCi0JCWVsc2UgaWYgKGNvbXAgPiAwKQkJCQkJXA0KLQkJCXRtcCA9IFJCX1JJR0hU KHRtcCwgZmllbGQpOwkJCVwNCi0JCWVsc2UJCQkJCQkJXA0KLQkJCXJldHVybiAodG1wKTsJCQkJ CVwNCi0JfQkJCQkJCQkJXA0KLQlyZXR1cm4gKE5VTEwpOwkJCQkJCQlcDQotfQkJCQkJCQkJCVwN Ci0JCQkJCQkJCQlcDQotLyogRmluZHMgdGhlIGZpcnN0IG5vZGUgZ3JlYXRlciB0aGFuIG9yIGVx dWFsIHRvIHRoZSBzZWFyY2gga2V5ICovCVwNCi1hdHRyIHN0cnVjdCB0eXBlICoJCQkJCQkJXA0K LW5hbWUjI19SQl9ORklORChzdHJ1Y3QgbmFtZSAqaGVhZCwgc3RydWN0IHR5cGUgKmVsbSkJCQlc DQotewkJCQkJCQkJCVwNCi0Jc3RydWN0IHR5cGUgKnRtcCA9IFJCX1JPT1QoaGVhZCk7CQkJCVwN Ci0Jc3RydWN0IHR5cGUgKnJlcyA9IE5VTEw7CQkJCQlcDQotCWludCBjb21wOwkJCQkJCQlcDQot CXdoaWxlICh0bXApIHsJCQkJCQkJXA0KLQkJY29tcCA9IGNtcChlbG0sIHRtcCk7CQkJCQlcDQot CQlpZiAoY29tcCA8IDApIHsJCQkJCQlcDQotCQkJcmVzID0gdG1wOwkJCQkJXA0KLQkJCXRtcCA9 IFJCX0xFRlQodG1wLCBmaWVsZCk7CQkJXA0KLQkJfQkJCQkJCQlcDQotCQllbHNlIGlmIChjb21w ID4gMCkJCQkJCVwNCi0JCQl0bXAgPSBSQl9SSUdIVCh0bXAsIGZpZWxkKTsJCQlcDQotCQllbHNl CQkJCQkJCVwNCi0JCQlyZXR1cm4gKHRtcCk7CQkJCQlcDQotCX0JCQkJCQkJCVwNCi0JcmV0dXJu IChyZXMpOwkJCQkJCQlcDQotfQkJCQkJCQkJCVwNCi0JCQkJCQkJCQlcDQotLyogQVJHU1VTRUQg Ki8JCQkJCQkJCVwNCi1hdHRyIHN0cnVjdCB0eXBlICoJCQkJCQkJXA0KLW5hbWUjI19SQl9ORVhU KHN0cnVjdCB0eXBlICplbG0pCQkJCQlcDQotewkJCQkJCQkJCVwNCi0JaWYgKFJCX1JJR0hUKGVs bSwgZmllbGQpKSB7CQkJCQlcDQotCQllbG0gPSBSQl9SSUdIVChlbG0sIGZpZWxkKTsJCQkJXA0K LQkJd2hpbGUgKFJCX0xFRlQoZWxtLCBmaWVsZCkpCQkJCVwNCi0JCQllbG0gPSBSQl9MRUZUKGVs bSwgZmllbGQpOwkJCVwNCi0JfSBlbHNlIHsJCQkJCQkJXA0KLQkJaWYgKFJCX1BBUkVOVChlbG0s IGZpZWxkKSAmJgkJCQlcDQotCQkgICAgKGVsbSA9PSBSQl9MRUZUKFJCX1BBUkVOVChlbG0sIGZp ZWxkKSwgZmllbGQpKSkJXA0KLQkJCWVsbSA9IFJCX1BBUkVOVChlbG0sIGZpZWxkKTsJCQlcDQot CQllbHNlIHsJCQkJCQkJXA0KLQkJCXdoaWxlIChSQl9QQVJFTlQoZWxtLCBmaWVsZCkgJiYJCQlc DQotCQkJICAgIChlbG0gPT0gUkJfUklHSFQoUkJfUEFSRU5UKGVsbSwgZmllbGQpLCBmaWVsZCkp KVwNCi0JCQkJZWxtID0gUkJfUEFSRU5UKGVsbSwgZmllbGQpOwkJXA0KLQkJCWVsbSA9IFJCX1BB UkVOVChlbG0sIGZpZWxkKTsJCQlcDQotCQl9CQkJCQkJCVwNCi0JfQkJCQkJCQkJXA0KLQlyZXR1 cm4gKGVsbSk7CQkJCQkJCVwNCi19CQkJCQkJCQkJXA0KLQkJCQkJCQkJCVwNCi0vKiBBUkdTVVNF RCAqLwkJCQkJCQkJXA0KLWF0dHIgc3RydWN0IHR5cGUgKgkJCQkJCQlcDQotbmFtZSMjX1JCX1BS RVYoc3RydWN0IHR5cGUgKmVsbSkJCQkJCVwNCi17CQkJCQkJCQkJXA0KLQlpZiAoUkJfTEVGVChl bG0sIGZpZWxkKSkgewkJCQkJXA0KLQkJZWxtID0gUkJfTEVGVChlbG0sIGZpZWxkKTsJCQkJXA0K LQkJd2hpbGUgKFJCX1JJR0hUKGVsbSwgZmllbGQpKQkJCQlcDQotCQkJZWxtID0gUkJfUklHSFQo ZWxtLCBmaWVsZCk7CQkJXA0KLQl9IGVsc2UgewkJCQkJCQlcDQotCQlpZiAoUkJfUEFSRU5UKGVs bSwgZmllbGQpICYmCQkJCVwNCi0JCSAgICAoZWxtID09IFJCX1JJR0hUKFJCX1BBUkVOVChlbG0s IGZpZWxkKSwgZmllbGQpKSkJXA0KLQkJCWVsbSA9IFJCX1BBUkVOVChlbG0sIGZpZWxkKTsJCQlc DQotCQllbHNlIHsJCQkJCQkJXA0KLQkJCXdoaWxlIChSQl9QQVJFTlQoZWxtLCBmaWVsZCkgJiYJ CQlcDQotCQkJICAgIChlbG0gPT0gUkJfTEVGVChSQl9QQVJFTlQoZWxtLCBmaWVsZCksIGZpZWxk KSkpXA0KLQkJCQllbG0gPSBSQl9QQVJFTlQoZWxtLCBmaWVsZCk7CQlcDQotCQkJZWxtID0gUkJf UEFSRU5UKGVsbSwgZmllbGQpOwkJCVwNCi0JCX0JCQkJCQkJXA0KLQl9CQkJCQkJCQlcDQotCXJl dHVybiAoZWxtKTsJCQkJCQkJXA0KLX0JCQkJCQkJCQlcDQotCQkJCQkJCQkJXA0KLWF0dHIgc3Ry dWN0IHR5cGUgKgkJCQkJCQlcDQotbmFtZSMjX1JCX01JTk1BWChzdHJ1Y3QgbmFtZSAqaGVhZCwg aW50IHZhbCkJCQkJXA0KLXsJCQkJCQkJCQlcDQotCXN0cnVjdCB0eXBlICp0bXAgPSBSQl9ST09U KGhlYWQpOwkJCQlcDQotCXN0cnVjdCB0eXBlICpwYXJlbnQgPSBOVUxMOwkJCQkJXA0KLQl3aGls ZSAodG1wKSB7CQkJCQkJCVwNCi0JCXBhcmVudCA9IHRtcDsJCQkJCQlcDQotCQlpZiAodmFsIDwg MCkJCQkJCQlcDQotCQkJdG1wID0gUkJfTEVGVCh0bXAsIGZpZWxkKTsJCQlcDQotCQllbHNlCQkJ CQkJCVwNCi0JCQl0bXAgPSBSQl9SSUdIVCh0bXAsIGZpZWxkKTsJCQlcDQotCX0JCQkJCQkJCVwN Ci0JcmV0dXJuIChwYXJlbnQpOwkJCQkJCVwNCi19DQotDQotI2RlZmluZSBSQl9ORUdJTkYJLTEN Ci0jZGVmaW5lIFJCX0lORgkxDQotDQotI2RlZmluZSBSQl9JTlNFUlQobmFtZSwgeCwgeSkJbmFt ZSMjX1JCX0lOU0VSVCh4LCB5KQ0KLSNkZWZpbmUgUkJfUkVNT1ZFKG5hbWUsIHgsIHkpCW5hbWUj I19SQl9SRU1PVkUoeCwgeSkNCi0jZGVmaW5lIFJCX0ZJTkQobmFtZSwgeCwgeSkJbmFtZSMjX1JC X0ZJTkQoeCwgeSkNCi0jZGVmaW5lIFJCX05GSU5EKG5hbWUsIHgsIHkpCW5hbWUjI19SQl9ORklO RCh4LCB5KQ0KLSNkZWZpbmUgUkJfTkVYVChuYW1lLCB4LCB5KQluYW1lIyNfUkJfTkVYVCh5KQ0K LSNkZWZpbmUgUkJfUFJFVihuYW1lLCB4LCB5KQluYW1lIyNfUkJfUFJFVih5KQ0KLSNkZWZpbmUg UkJfTUlOKG5hbWUsIHgpCQluYW1lIyNfUkJfTUlOTUFYKHgsIFJCX05FR0lORikNCi0jZGVmaW5l IFJCX01BWChuYW1lLCB4KQkJbmFtZSMjX1JCX01JTk1BWCh4LCBSQl9JTkYpDQotDQotI2RlZmlu ZSBSQl9GT1JFQUNIKHgsIG5hbWUsIGhlYWQpCQkJCQlcDQotCWZvciAoKHgpID0gUkJfTUlOKG5h bWUsIGhlYWQpOwkJCQkJXA0KLQkgICAgICh4KSAhPSBOVUxMOwkJCQkJCVwNCi0JICAgICAoeCkg PSBuYW1lIyNfUkJfTkVYVCh4KSkNCi0NCi0jZGVmaW5lIFJCX0ZPUkVBQ0hfRlJPTSh4LCBuYW1l LCB5KQkJCQkJXA0KLQlmb3IgKCh4KSA9ICh5KTsJCQkJCQkJXA0KLQkgICAgKCh4KSAhPSBOVUxM KSAmJiAoKHkpID0gbmFtZSMjX1JCX05FWFQoeCksICh4KSAhPSBOVUxMKTsJXA0KLQkgICAgICh4 KSA9ICh5KSkNCi0NCi0jZGVmaW5lIFJCX0ZPUkVBQ0hfU0FGRSh4LCBuYW1lLCBoZWFkLCB5KQkJ CQlcDQotCWZvciAoKHgpID0gUkJfTUlOKG5hbWUsIGhlYWQpOwkJCQkJXA0KLQkgICAgKCh4KSAh PSBOVUxMKSAmJiAoKHkpID0gbmFtZSMjX1JCX05FWFQoeCksICh4KSAhPSBOVUxMKTsJXA0KLQkg ICAgICh4KSA9ICh5KSkNCi0NCi0jZGVmaW5lIFJCX0ZPUkVBQ0hfUkVWRVJTRSh4LCBuYW1lLCBo ZWFkKQkJCQlcDQotCWZvciAoKHgpID0gUkJfTUFYKG5hbWUsIGhlYWQpOwkJCQkJXA0KLQkgICAg ICh4KSAhPSBOVUxMOwkJCQkJCVwNCi0JICAgICAoeCkgPSBuYW1lIyNfUkJfUFJFVih4KSkNCi0N Ci0jZGVmaW5lIFJCX0ZPUkVBQ0hfUkVWRVJTRV9GUk9NKHgsIG5hbWUsIHkpCQkJCVwNCi0JZm9y ICgoeCkgPSAoeSk7CQkJCQkJCVwNCi0JICAgICgoeCkgIT0gTlVMTCkgJiYgKCh5KSA9IG5hbWUj I19SQl9QUkVWKHgpLCAoeCkgIT0gTlVMTCk7CVwNCi0JICAgICAoeCkgPSAoeSkpDQotDQotI2Rl ZmluZSBSQl9GT1JFQUNIX1JFVkVSU0VfU0FGRSh4LCBuYW1lLCBoZWFkLCB5KQkJCVwNCi0JZm9y ICgoeCkgPSBSQl9NQVgobmFtZSwgaGVhZCk7CQkJCQlcDQotCSAgICAoKHgpICE9IE5VTEwpICYm ICgoeSkgPSBuYW1lIyNfUkJfUFJFVih4KSwgKHgpICE9IE5VTEwpOwlcDQotCSAgICAgKHgpID0g KHkpKQ0KLQ0KLSNlbmRpZgkvKiBfU1lTX1RSRUVfSF8gKi8NCi0tIA0KMi4xNy4xDQoNCg0KDQot LS0NClVuc3Vic2NyaWJlOiAgYWxwaW5lLWFwb3J0cyt1bnN1YnNjcmliZUBsaXN0cy5hbHBpbmVs aW51eC5vcmcNCkhlbHA6ICAgICAgICAgYWxwaW5lLWFwb3J0cytoZWxwQGxpc3RzLmFscGluZWxp bnV4Lm9yZw0KLS0tDQo=