From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 90370495CA for ; Sat, 27 Dec 2025 11:50:30 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'SaTgIqwXG47SW1ahhQ9LFUPWzRe6iWnymF1TNM6y85A=', expected b'5qb1WThxq4A2XPoO9+pPFoKnT6FLD0eaufRZik76FVE=')) header.d=ffmpeg.org header.i=@ffmpeg.org header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1766836169; h=content-type : mime-version : to : date : message-id : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-transfer-encoding : from; bh=SaTgIqwXG47SW1ahhQ9LFUPWzRe6iWnymF1TNM6y85A=; b=GcVQnDy8KDY/AJ7GaJJ34/kaB5LwMcofQAOaMmblRAh4LmrMIL3opFVuqMzfqqpedK8VD 90Ip1CbqvUaHdXtpK5eU2pXQkkvRzuq/KdKPPd8UGjbVKkLhkkxr4GVTDcWoGfAKE7+lp7T CQ3wnNVKxDhSN4BznhUEkFx/Xq6FUJakEx5smVWMs/kVAWbAFIU8yEkTRK9WrKc5ewXBJdK BSdpl5IV26JoqVrQ2xpoMDi57Veqdn8DzMqt7J0DNmG5jDN+v20t77SpNnuRzJgtD+EeHhg q4p/fMQ/BrQWxTfUiVowSW9CwxU1nm7NhPoehXqWQ1nr1fWdE07GACjuPU9g== Received: from [172.20.0.4] (unknown [172.20.0.4]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id F29DD690BEB; Sat, 27 Dec 2025 13:49:28 +0200 (EET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1766836150; b=ratteaKARSR9grptDXNB2tsz2MG0oj1npcduusAHbqm5/YdpQAkNfDGpul5h4Gv7WqnrI ih3RU+mTZZe6sgNNyjAdvj4jk8+Y6j6jWv3mQXK5CUH3DVjOceZ1h7fq0/7C1fLEvjhWZ/t iDlHO5XC3azrzdqZF/6mxw1KDOYklbe3TbUxH4ItbprSnCkUe/l7h2ZSHLuRbOGYNtYBjiP I3ZJw+1zxsVVm+PMnXYcpBHaH4cNku+d8k/PXczHhP6R6dBXRiNYEsYCDyHQ213hOigcn9j BA4C4orOMczCjorYvBO6MXsNifcvSVLwrKnJ11rYV4r5nXmaTAFd72e3DRCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1766836150; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=SaTgIqwXG47SW1ahhQ9LFUPWzRe6iWnymF1TNM6y85A=; b=MvIYBNOz1IvpC3R/v4aO9bnwCo/1rHs3gFgMo61vP1NcJKRIvu2M/8JcIGKifpViMykL6 2knBWk3xt4MYeekA8wZalGBcXahMATBRSmaZrjFLCiO63nRh65UMLQH8Rqg/CNuaIk77F3Q 1gE1rQxt/u+IzwgXX02sShUxV1iGD6599zo/ewwARvoUAJHggrdkMXOx1pzvjp+75QY64OT Sajch2TFYg74nighiewLQDvPYa4zlwcZsYlTZp9sxmohGzgNWrAQOXA4HrLtovPY7aSfApo 6r9A+YeQtwz7A9ZzsGj5uggzEG5ZvHP5NSnSFarphyi721SpiY0BUyn6wf+g== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none; dmarc=pass header.from=ffmpeg.org policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=ffmpeg.org policy.dmarc=quarantine DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1766836141; h=content-type : mime-version : content-transfer-encoding : from : to : reply-to : subject : date : from; bh=5qb1WThxq4A2XPoO9+pPFoKnT6FLD0eaufRZik76FVE=; b=oI25V7TLPiLRht24a8KqeLib4vrQLfMow1JRjEobhtFBZTICgL+LvFqXEtl1ss6XNRj7H VG+FU5GvEgS5IUILSTOqFwnrVBW+2MGZtltV3KkKvphLufRT+Fw6Ir6mtGDu6MIMSrh0lFf v4gOZk4+gPqpEY14lU+WMCjlhX/sOTXobb2P1ITDldGyeUi5uhHTy4fQloyrBTSiHak2mQJ udgxtnvywZDkZkK0phNzkANywdF74RqcdQn9jpuZYYbYfAh6c/ARiwR1Pdj49kAqtof+3Jl Fnq1J5M1efv6IMOYDLQpe0b0cT88JMmRUXEoxosW8Gwo2JeGgUZTPnWif8ZA== Received: from 55ca25703178 (code.ffmpeg.org [188.245.149.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 29285690B43 for ; Sat, 27 Dec 2025 13:49:01 +0200 (EET) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Date: Sat, 27 Dec 2025 11:49:00 -0000 Message-ID: <176683614134.25.17239166442842070205@4457048688e7> Message-ID-Hash: J3QRBF62TSGNV6ZK4TRILSOXLUIS42RI X-Message-ID-Hash: J3QRBF62TSGNV6ZK4TRILSOXLUIS42RI X-MailFrom: code@ffmpeg.org X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH] av1_in_ts (PR #21301) List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Jun Zhao via ffmpeg-devel Cc: Jun Zhao Content-Transfer-Encoding: base64 Archived-At: List-Archive: List-Post: UFIgIzIxMzAxIG9wZW5lZCBieSBKdW4gWmhhbyAobXlwb3B5ZGV2KQpVUkw6IGh0dHBzOi8vY29k ZS5mZm1wZWcub3JnL0ZGbXBlZy9GRm1wZWcvcHVsbHMvMjEzMDEKUGF0Y2ggVVJMOiBodHRwczov L2NvZGUuZmZtcGVnLm9yZy9GRm1wZWcvRkZtcGVnL3B1bGxzLzIxMzAxLnBhdGNoCgpUaGlzIGlt cGxlbWVudGF0aW9uIGVuYWJsZXMgZnVsbCBzdXBwb3J0IGZvciBtdXhpbmcgYW5kIGRlbXV4aW5n IEFWMSB2aWRlbyB3aXRoaW4gTVBFRy0yIFRyYW5zcG9ydCBTdHJlYW1zLCANCmFkaGVyaW5nIHRv IHRoZSBBT01lZGlhIGRyYWZ0IHNwZWNpZmljYXRpb27vvIhodHRwczovL2FvbWVkaWFjb2RlYy5n aXRodWIuaW8vYXYxLW1wZWcyLXRzL++8iS4gDQoNCkEgbmV3IGJpdHN0cmVhbSBmaWx0ZXIsIGF2 MV90cywgd2FzIGludHJvZHVjZWQgdG8gc2VhbWxlc3NseSBjb252ZXJ0IGJldHdlZW4gdGhlIExv dw0KT3ZlcmhlYWQgQml0c3RyZWFtIEZvcm1hdCAodXNlZCBpbiBNUDQvV2ViTSkgYW5kIHRoZSBT dGFydCBDb2RlIEJhc2VkIEZvcm1hdCByZXF1aXJlZCBmb3IgTVBFRy1UUywgDQpoYW5kbGluZyBl c3NlbnRpYWwgdGFza3Mgc3VjaCBhcyBzdGFydCBjb2RlIGluc2VydGlvbiwgZW11bGF0aW9uIHBy ZXZlbnRpb24sIGFuZCBUZW1wb3JhbCBEZWxpbWl0ZXIgZ2VuZXJhdGlvbi4gDQoNClRoZSBNUEVH LVRTIG11eGVyIGFuZCBkZW11eGVyIGhhdmUgYmVlbiB1cGRhdGVkIHRvIGF1dG9tYXRpY2FsbHkg aW50ZWdyYXRlIHRoaXMgZmlsdGVyIGFuZCBjb3JyZWN0bHkgcHJvY2VzcyANCnRoZSBzcGVjaWZp YyBBVjEgUmVnaXN0cmF0aW9uIGFuZCBWaWRlbyBEZXNjcmlwdG9ycyB0byBlbnN1cmUgY29tcGxp YW5jZSBhbmQgY29tcGF0aWJpbGl0eS4KCgpGcm9tIDUzZmYyMzA0NDIwNTUzYjEyNzQ4ZjhkMzJm MTQ0ZmRjNGFhZTcyZTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEp1biBaaGFvIDxi YXJyeWp6aGFvQHRlbmNlbnQuY29tPgpEYXRlOiBTYXQsIDI3IERlYyAyMDI1IDE0OjQyOjE4ICsw ODAwClN1YmplY3Q6IFtQQVRDSCAwMS8xMV0gbGF2Yy9ic2YvYXYxX3RzOiBhZGQgQVYxIFRTIGJp dHN0cmVhbSBmaWx0ZXIKClRoaXMgYml0c3RyZWFtIGZpbHRlciBjb252ZXJ0cyBBVjEgc3RyZWFt cyBiZXR3ZWVuIEFubmV4IEIgYW5kIExvdyBPdmVyaGVhZApiaXRzdHJlYW0gZm9ybWF0IGFzIGRl ZmluZWQgaW4gdGhlICJBVjEgQ29kZWMgaW4gTVBFRy0yIFRTIiBzcGVjaWZpY2F0aW9uLgoKTVBF Ry0yIFRyYW5zcG9ydCBTdHJlYW1zIHJlcXVpcmUgQVYxIHRvIGJlIGluIEFubmV4IEIgZm9ybWF0 IChzdGFydCBjb2RlcyksCndoaWxlIEZGbXBlZydzIGludGVybmFsIHJlcHJlc2VudGF0aW9uIChh bmQgSVNPQk1GRikgdXNlcyB0aGUgTG93IE92ZXJoZWFkCmZvcm1hdCAobGVuZ3RoIHByZWZpeGVk KS4gVGhpcyBmaWx0ZXIgYnJpZGdlcyB0aGUgZ2FwLgoKU2lnbmVkLW9mZi1ieTogSnVuIFpoYW8g PGJhcnJ5anpoYW9AdGVuY2VudC5jb20+Ci0tLQogY29uZmlndXJlICAgICAgICAgICAgICAgICAg ICAgIHwgICAxICsKIGxpYmF2Y29kZWMvYml0c3RyZWFtX2ZpbHRlcnMuYyB8ICAgMSArCiBsaWJh dmNvZGVjL2JzZi9NYWtlZmlsZSAgICAgICAgfCAgIDEgKwogbGliYXZjb2RlYy9ic2YvYXYxX3Rz LmMgICAgICAgIHwgMzc1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNCBmaWxl cyBjaGFuZ2VkLCAzNzggaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29k ZWMvYnNmL2F2MV90cy5jCgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4 IDMwMWEzZTVlM2UuLjAyNDExZDkzMjcgMTAwNzU1Ci0tLSBhL2NvbmZpZ3VyZQorKysgYi9jb25m aWd1cmUKQEAgLTM1OTksNiArMzU5OSw3IEBAIGFoeF90b19tcDJfYnNmX2RlcHM9ImxncGxfZ3Bs IgogYXYxX2ZyYW1lX21lcmdlX2JzZl9zZWxlY3Q9ImNic19hdjEiCiBhdjFfZnJhbWVfc3BsaXRf YnNmX3NlbGVjdD0iY2JzX2F2MSIKIGF2MV9tZXRhZGF0YV9ic2Zfc2VsZWN0PSJjYnNfYXYxIgor YXYxX3RzX2JzZl9zZWxlY3Q9ImF2MV9wYXJzZSIKIGRvdmlfcnB1X2JzZl9zZWxlY3Q9ImNic19o MjY1IGNic19hdjEgZG92aV9ycHVkZWMgZG92aV9ycHVlbmMiCiBkdHMycHRzX2JzZl9zZWxlY3Q9 ImNic19oMjY0IGgyNjRwYXJzZSBjYnNfaDI2NSBoZXZjX3BhcnNlciIKIGVhYzNfY29yZV9ic2Zf c2VsZWN0PSJhYzNfcGFyc2VyIgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9iaXRzdHJlYW1fZmls dGVycy5jIGIvbGliYXZjb2RlYy9iaXRzdHJlYW1fZmlsdGVycy5jCmluZGV4IGI0Yjg1MmM3ZTYu LjQ5YzcxNDFkZTAgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvYml0c3RyZWFtX2ZpbHRlcnMuYwor KysgYi9saWJhdmNvZGVjL2JpdHN0cmVhbV9maWx0ZXJzLmMKQEAgLTMwLDYgKzMwLDcgQEAgZXh0 ZXJuIGNvbnN0IEZGQml0U3RyZWFtRmlsdGVyIGZmX2Fwdl9tZXRhZGF0YV9ic2Y7CiBleHRlcm4g Y29uc3QgRkZCaXRTdHJlYW1GaWx0ZXIgZmZfYXYxX2ZyYW1lX21lcmdlX2JzZjsKIGV4dGVybiBj b25zdCBGRkJpdFN0cmVhbUZpbHRlciBmZl9hdjFfZnJhbWVfc3BsaXRfYnNmOwogZXh0ZXJuIGNv bnN0IEZGQml0U3RyZWFtRmlsdGVyIGZmX2F2MV9tZXRhZGF0YV9ic2Y7CitleHRlcm4gY29uc3Qg RkZCaXRTdHJlYW1GaWx0ZXIgZmZfYXYxX3RzX2JzZjsKIGV4dGVybiBjb25zdCBGRkJpdFN0cmVh bUZpbHRlciBmZl9jaG9tcF9ic2Y7CiBleHRlcm4gY29uc3QgRkZCaXRTdHJlYW1GaWx0ZXIgZmZf ZHVtcF9leHRyYWRhdGFfYnNmOwogZXh0ZXJuIGNvbnN0IEZGQml0U3RyZWFtRmlsdGVyIGZmX2Rj YV9jb3JlX2JzZjsKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYnNmL01ha2VmaWxlIGIvbGliYXZj b2RlYy9ic2YvTWFrZWZpbGUKaW5kZXggMzYwZmQxZTMyZi4uNWNhZmIxMzZjNyAxMDA2NDQKLS0t IGEvbGliYXZjb2RlYy9ic2YvTWFrZWZpbGUKKysrIGIvbGliYXZjb2RlYy9ic2YvTWFrZWZpbGUK QEAgLTcsNiArNyw3IEBAIE9CSlMtJChDT05GSUdfQVBWX01FVEFEQVRBX0JTRikgICAgICAgICAg ICs9IGJzZi9hcHZfbWV0YWRhdGEubwogT0JKUy0kKENPTkZJR19BVjFfRlJBTUVfTUVSR0VfQlNG KSAgICAgICAgKz0gYnNmL2F2MV9mcmFtZV9tZXJnZS5vCiBPQkpTLSQoQ09ORklHX0FWMV9GUkFN RV9TUExJVF9CU0YpICAgICAgICArPSBic2YvYXYxX2ZyYW1lX3NwbGl0Lm8KIE9CSlMtJChDT05G SUdfQVYxX01FVEFEQVRBX0JTRikgICAgICAgICAgICs9IGJzZi9hdjFfbWV0YWRhdGEubworT0JK Uy0kKENPTkZJR19BVjFfVFNfQlNGKSAgICAgICAgICAgICAgICAgKz0gYnNmL2F2MV90cy5vCiBP QkpTLSQoQ09ORklHX0NIT01QX0JTRikgICAgICAgICAgICAgICAgICArPSBic2YvY2hvbXAubwog T0JKUy0kKENPTkZJR19EQ0FfQ09SRV9CU0YpICAgICAgICAgICAgICAgKz0gYnNmL2RjYV9jb3Jl Lm8KIE9CSlMtJChDT05GSUdfRFRTMlBUU19CU0YpICAgICAgICAgICAgICAgICs9IGJzZi9kdHMy cHRzLm8KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYnNmL2F2MV90cy5jIGIvbGliYXZjb2RlYy9i c2YvYXYxX3RzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNWE3Nzc5 YzRhMQotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2Y29kZWMvYnNmL2F2MV90cy5jCkBAIC0wLDAg KzEsMzc1IEBACisvKgorICogQVYxIE1QRUctVFMgYml0c3RyZWFtIGZpbHRlcgorICogQ29weXJp Z2h0IChjKSAyMDI0CisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorICoKKyAq IEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH TlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0 ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g U3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisKKy8q KgorICogQGZpbGUKKyAqIFRoaXMgYml0c3RyZWFtIGZpbHRlciBjb252ZXJ0cyBBVjEgYml0c3Ry ZWFtcyBiZXR3ZWVuIExvdyBPdmVyaGVhZCBCaXRzdHJlYW0KKyAqIEZvcm1hdCAodXNlZCBpbiBN UDQvV2ViTSkgYW5kIFN0YXJ0IENvZGUgQmFzZWQgRm9ybWF0ICh1c2VkIGluIE1QRUctVFMpIGFz CisgKiBkZWZpbmVkIGluICJBVjEgQ29kZWMgaW4gTVBFRy0yIFRyYW5zcG9ydCBTdHJlYW0iIHNw ZWNpZmljYXRpb24uCisgKgorICogU3RhcnQgQ29kZSBCYXNlZCBGb3JtYXQgcHJlcGVuZHMgZWFj aCBPQlUgd2l0aCBhIDMtYnl0ZSBzdGFydCBjb2RlICgweDAwMDAwMSkKKyAqIGFuZCBhcHBsaWVz IGVtdWxhdGlvbiBwcmV2ZW50aW9uIGJ5dGVzICgweDAzKSB0byBwcmV2ZW50IHN0YXJ0IGNvZGUg ZW11bGF0aW9uLgorICovCisKKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZhc3NlcnQuaCIKKyNpbmNs dWRlICJsaWJhdnV0aWwvbWVtLmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL29wdC5oIgorCisjaW5j bHVkZSAiYnNmLmgiCisjaW5jbHVkZSAiYnNmX2ludGVybmFsLmgiCisjaW5jbHVkZSAiYXYxLmgi CisjaW5jbHVkZSAiYXYxX3BhcnNlLmgiCisKKy8qIFN0YXJ0IGNvZGUgZm9yIEFWMSBPQlVzIGlu IE1QRUctVFMgKi8KKyNkZWZpbmUgQVYxX1NUQVJUX0NPREUgMHgwMDAwMDEKKyNkZWZpbmUgU1RB UlRfQ09ERV9TSVpFIDMKKyNkZWZpbmUgTUlOX1BBQ0tFVF9TSVpFIDQKKyNkZWZpbmUgQlVGRkVS X1BBRERJTkcgNjQKKworLyogVGVtcG9yYWwgRGVsaW1pdGVyIE9CVTogdHlwZT0yLCBleHRlbnNp b25fZmxhZz0wLCBoYXNfc2l6ZV9maWVsZD0xLCByZXNlcnZlZD0wCisgKiBCaW5hcnk6IDAgMDAx MCAwIDEgMCA9IDB4MTIsIGZvbGxvd2VkIGJ5IHNpemU9MCAoTEVCMTI4KSAqLworc3RhdGljIGNv bnN0IHVpbnQ4X3QgdGVtcG9yYWxfZGVsaW1pdGVyX29idVtdID0geyAweDEyLCAweDAwIH07CisK K3R5cGVkZWYgc3RydWN0IEFWMVRTQ29udGV4dCB7CisgICAgY29uc3QgQVZDbGFzcyAqY2xhc3M7 CisgICAgaW50IG1vZGU7ICAvKiAwID0gdG8gVFMgKGFkZCBzdGFydCBjb2RlcyksIDEgPSBmcm9t IFRTIChyZW1vdmUgc3RhcnQgY29kZXMpICovCit9IEFWMVRTQ29udGV4dDsKKworLyoqCisgKiBQ cmVwYXJlIG91dHB1dCBwYWNrZXQgYnkgYWxsb2NhdGluZyBidWZmZXIgYW5kIGNvcHlpbmcgcHJv cGVydGllcyBmcm9tIGlucHV0CisgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgQVZF UlJPUiBvbiBmYWlsdXJlCisgKi8KK3N0YXRpYyBpbnQgcHJlcGFyZV9vdXRwdXRfcGFja2V0KEFW QlNGQ29udGV4dCAqY3R4LCBBVlBhY2tldCAqcGt0LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgQVZQYWNrZXQgKmluLCBpbnQgb3V0X3NpemUpCit7CisgICAgaW50IHJl dCA9IGF2X25ld19wYWNrZXQocGt0LCBvdXRfc2l6ZSk7CisgICAgaWYgKHJldCA8IDApCisgICAg ICAgIHJldHVybiByZXQ7CisKKyAgICByZXQgPSBhdl9wYWNrZXRfY29weV9wcm9wcyhwa3QsIGlu KTsKKyAgICBpZiAocmV0IDwgMCkgeworICAgICAgICBhdl9wYWNrZXRfdW5yZWYocGt0KTsKKyAg ICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qKgorICogV3Jp dGUgZGF0YSB3aXRoIGVtdWxhdGlvbiBwcmV2ZW50aW9uIGJ5dGVzCisgKiBSZXR1cm5zIG51bWJl ciBvZiBieXRlcyB3cml0dGVuCisgKi8KK3N0YXRpYyBpbnQgd3JpdGVfZXNjYXBlZCh1aW50OF90 ICpkc3QsIGNvbnN0IHVpbnQ4X3QgKnNyYywgaW50IHNpemUpCit7CisgICAgaW50IGksIGogPSAw OworICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgaWYgKGkgKyAyIDwg c2l6ZSAmJiBzcmNbaV0gPT0gMCAmJiBzcmNbaSArIDFdID09IDAgJiYgc3JjW2kgKyAyXSA8PSAz KSB7CisgICAgICAgICAgICBkc3RbaisrXSA9IDA7CisgICAgICAgICAgICBkc3RbaisrXSA9IDA7 CisgICAgICAgICAgICBkc3RbaisrXSA9IDM7ICAvKiBlbXVsYXRpb25fcHJldmVudGlvbl90aHJl ZV9ieXRlICovCisgICAgICAgICAgICBkc3RbaisrXSA9IHNyY1tpICsgMl07ICAvKiBXcml0ZSB0 aGUgdGhpcmQgYnl0ZSBhZnRlciBpbnNlcnRpb24gYnl0ZSAqLworICAgICAgICAgICAgaSArPSAy OyAgLyogU2tpcCB0aGUgdHdvIHplcm9zIGFuZCB0aGUgdGhpcmQgYnl0ZSAqLworICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgZHN0W2orK10gPSBzcmNbaV07CisgICAgICAgIH0KKyAgICB9 CisgICAgcmV0dXJuIGo7Cit9CisKKy8qKgorICogUmVtb3ZlIGVtdWxhdGlvbiBwcmV2ZW50aW9u IGJ5dGVzIGZyb20gZXNjYXBlZCBkYXRhCisgKiBSZXR1cm5zIG51bWJlciBvZiBieXRlcyB3cml0 dGVuCisgKi8KK3N0YXRpYyBpbnQgcmVtb3ZlX2VzY2FwZSh1aW50OF90ICpkc3QsIGNvbnN0IHVp bnQ4X3QgKnNyYywgaW50IHNpemUpCit7CisgICAgaW50IGksIGogPSAwOworICAgIGZvciAoaSA9 IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgaWYgKGkgKyAyIDwgc2l6ZSAmJiBzcmNbaV0g PT0gMCAmJiBzcmNbaSArIDFdID09IDAgJiYgc3JjW2kgKyAyXSA9PSAzKSB7CisgICAgICAgICAg ICBkc3RbaisrXSA9IDA7CisgICAgICAgICAgICBkc3RbaisrXSA9IDA7CisgICAgICAgICAgICBp ICs9IDI7ICAvKiBza2lwIHRoZSBlbXVsYXRpb25fcHJldmVudGlvbl90aHJlZV9ieXRlICovCisg ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkc3RbaisrXSA9IHNyY1tpXTsKKyAgICAgICAg fQorICAgIH0KKyAgICByZXR1cm4gajsKK30KKworLyoqCisgKiBDaGVjayBpZiB0aGUgZmlyc3Qg T0JVIGluIGRhdGEgaXMgYSB2YWxpZCBUZW1wb3JhbCBEZWxpbWl0ZXIKKyAqIFJldHVybnMgMSBp ZiBhIHZhbGlkIFREIGlzIHByZXNlbnQsIDAgb3RoZXJ3aXNlCisgKgorICogQSB2YWxpZCBUZW1w b3JhbCBEZWxpbWl0ZXIgT0JVIG11c3Q6CisgKiAtIEhhdmUgT0JVIHR5cGUgPSBBVjFfT0JVX1RF TVBPUkFMX0RFTElNSVRFUiAoMikKKyAqIC0gSGF2ZSBoYXNfc2l6ZV9maWVsZCA9IDEKKyAqIC0g SGF2ZSBzaXplID0gMCAoTEVCMTI4IGVuY29kZWQpCisgKi8KK3N0YXRpYyBpbnQgaGFzX3RlbXBv cmFsX2RlbGltaXRlcihjb25zdCB1aW50OF90ICpkYXRhLCBpbnQgc2l6ZSkKK3sKKyAgICBpZiAo c2l6ZSA8IDIpCisgICAgICAgIHJldHVybiAwOworCisgICAgLyogT0JVIGhlYWRlcjogZm9yYmlk ZGVuKDEpIHwgdHlwZSg0KSB8IGV4dGVuc2lvbigxKSB8IGhhc19zaXplKDEpIHwgcmVzZXJ2ZWQo MSkKKyAgICAgKiBUZW1wb3JhbCBEZWxpbWl0ZXIgdHlwZSA9IDIsIHNvIGhlYWRlciBieXRlIHdp dGggaGFzX3NpemU9MSBpcyAweDEyCisgICAgICogd2l0aCBoYXNfc2l6ZT0wIGlzIDB4MTAgKGJ1 dCBwZXIgc3BlYywgVEQgc2hvdWxkIGhhdmUgaGFzX3NpemU9MSkgKi8KKyAgICBpbnQgb2J1X3R5 cGUgPSAoZGF0YVswXSA+PiAzKSAmIDB4MGY7CisgICAgaW50IGhhc19zaXplID0gKGRhdGFbMF0g Pj4gMSkgJiAweDAxOworCisgICAgaWYgKG9idV90eXBlICE9IEFWMV9PQlVfVEVNUE9SQUxfREVM SU1JVEVSKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIFBlciBBVjEgc3BlYywgVGVtcG9y YWwgRGVsaW1pdGVyIHNob3VsZCBoYXZlIGhhc19zaXplX2ZpZWxkID0gMQorICAgICAqIGFuZCBz aG91bGQgaGF2ZSB6ZXJvIHBheWxvYWQgc2l6ZSAqLworICAgIGlmICghaGFzX3NpemUpIHsKKyAg ICAgICAgLyogVEQgd2l0aCBoYXNfc2l6ZT0wIGlzIHZhbGlkIHBlciBzcGVjIGJ1dCB1bmNvbW1v bi4KKyAgICAgICAgICogSW4gdGhpcyBjYXNlLCB0aGUgZW50aXJlIFREIGlzIGp1c3QgdGhlIGhl YWRlciBieXRlLiAqLworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICAvKiBoYXNfc2l6 ZT0xLCBuZXh0IGJ5dGUocykgY29udGFpbiB0aGUgc2l6ZSBpbiBMRUIxMjggZm9ybWF0LgorICAg ICAqIEZvciBURCwgc2l6ZSBtdXN0IGJlIDAsIHdoaWNoIGlzIGVuY29kZWQgYXMgYSBzaW5nbGUg MCBieXRlLiAqLworICAgIGlmIChkYXRhWzFdICE9IDApIHsKKyAgICAgICAgLyogU2l6ZSBpcyBu b3QgemVybywgc28gdGhpcyBpcyBub3QgYSB2YWxpZCBUZW1wb3JhbCBEZWxpbWl0ZXIgKi8KKyAg ICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CisKKy8qKgorICogQ29u dmVydCBmcm9tIExvdyBPdmVyaGVhZCBCaXRzdHJlYW0gRm9ybWF0IHRvIFN0YXJ0IENvZGUgQmFz ZWQgRm9ybWF0CisgKiAoZm9yIG11eGluZyB0byBNUEVHLVRTKQorICovCitzdGF0aWMgaW50IGF2 MV90b190c19maWx0ZXIoQVZCU0ZDb250ZXh0ICpjdHgsIEFWUGFja2V0ICpwa3QpCit7CisgICAg aW50IHJldDsKKyAgICBjb25zdCB1aW50OF90ICppbl9kYXRhOworICAgIGludCBpbl9zaXplOwor ICAgIHVpbnQ4X3QgKm91dF9kYXRhOworICAgIGludCBvdXRfc2l6ZSA9IDA7CisgICAgaW50IG1h eF9vdXRfc2l6ZTsKKyAgICBBVjFPQlUgb2J1OworICAgIEFWUGFja2V0ICppbiA9IE5VTEw7CisK KyAgICAvKiBNb3ZlIGlucHV0IHBhY2tldCB0byAnaW4nICovCisgICAgaW4gPSBhdl9wYWNrZXRf YWxsb2MoKTsKKyAgICBpZiAoIWluKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwor CisgICAgcmV0ID0gZmZfYnNmX2dldF9wYWNrZXRfcmVmKGN0eCwgaW4pOworICAgIGlmIChyZXQg PCAwKSB7CisgICAgICAgIGF2X3BhY2tldF9mcmVlKCZpbik7CisgICAgICAgIHJldHVybiByZXQ7 CisgICAgfQorCisgICAgaW5fZGF0YSA9IGluLT5kYXRhOworICAgIGluX3NpemUgPSBpbi0+c2l6 ZTsKKworICAgIGF2X2xvZyhjdHgsIEFWX0xPR19ERUJVRywgImF2MV90b190czogaW5wdXQgc2l6 ZSAlZFxuIiwgaW5fc2l6ZSk7CisKKyAgICAvKiBDaGVjayBpZiBwYWNrZXQgc3RhcnRzIHdpdGgg VGVtcG9yYWwgRGVsaW1pdGVyLgorICAgICAqIElmIG5vdCwgd2UnbGwgaW5zZXJ0IG9uZSB0byBl bnN1cmUgcHJvcGVyIFRVIGJvdW5kYXJpZXMuCisgICAgICovCisgICAgaW50IG5lZWRfdGQgPSAh aGFzX3RlbXBvcmFsX2RlbGltaXRlcihpbl9kYXRhLCBpbl9zaXplKTsKKyAgICBpZiAobmVlZF90 ZCkgeworICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfREVCVUcsICJJbnNlcnRpbmcgVGVtcG9y YWwgRGVsaW1pdGVyIE9CVVxuIik7CisgICAgfQorCisgICAgLyogQ2FsY3VsYXRlIG1heGltdW0g b3V0cHV0IHNpemU6CisgICAgICogV29yc3QgY2FzZTogZXZlcnkgYnl0ZSBjb3VsZCBuZWVkIGVz Y2FwZSwgc28gMy8yICogb3JpZ2luYWwgc2l6ZSAoYXBwcm94ICogMikKKyAgICAgKiBQbHVzIG92 ZXJoZWFkIGZvciBzdGFydCBjb2RlcyBhbmQgVEQgaW5zZXJ0aW9uCisgICAgICovCisgICAgbWF4 X291dF9zaXplID0gaW5fc2l6ZSAqIDIgKyBCVUZGRVJfUEFERElORyArIChuZWVkX3RkID8gKFNU QVJUX0NPREVfU0laRSArIHNpemVvZih0ZW1wb3JhbF9kZWxpbWl0ZXJfb2J1KSkgOiAwKTsKKwor ICAgIHJldCA9IHByZXBhcmVfb3V0cHV0X3BhY2tldChjdHgsIHBrdCwgaW4sIG1heF9vdXRfc2l6 ZSk7CisgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgYXZfcGFja2V0X2ZyZWUoJmluKTsKKyAg ICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICBvdXRfZGF0YSA9IHBrdC0+ZGF0YTsKKwor ICAgIC8qIEluc2VydCBUZW1wb3JhbCBEZWxpbWl0ZXIgaWYgbmVlZGVkICovCisgICAgaWYgKG5l ZWRfdGQpIHsKKyAgICAgICAgLyogV3JpdGUgc3RhcnQgY29kZSBmb3IgVEQgKi8KKyAgICAgICAg b3V0X2RhdGFbb3V0X3NpemUrK10gPSAwOworICAgICAgICBvdXRfZGF0YVtvdXRfc2l6ZSsrXSA9 IDA7CisgICAgICAgIG91dF9kYXRhW291dF9zaXplKytdID0gMTsKKyAgICAgICAgLyogV3JpdGUg VEQgT0JVIChubyBlc2NhcGluZyBuZWVkZWQgLSBpdCdzIGp1c3QgMHgxMiAweDAwKSAqLworICAg ICAgICBtZW1jcHkob3V0X2RhdGEgKyBvdXRfc2l6ZSwgdGVtcG9yYWxfZGVsaW1pdGVyX29idSwg c2l6ZW9mKHRlbXBvcmFsX2RlbGltaXRlcl9vYnUpKTsKKyAgICAgICAgb3V0X3NpemUgKz0gc2l6 ZW9mKHRlbXBvcmFsX2RlbGltaXRlcl9vYnUpOworICAgIH0KKworICAgIC8qIFBhcnNlIGFuZCBj b252ZXJ0IGVhY2ggT0JVICovCisgICAgd2hpbGUgKGluX3NpemUgPiAwKSB7CisgICAgICAgIGlu dCBvYnVfc2l6ZTsKKyAgICAgICAgaW50IGVzY2FwZWRfc2l6ZTsKKworICAgICAgICByZXQgPSBm Zl9hdjFfZXh0cmFjdF9vYnUoJm9idSwgaW5fZGF0YSwgaW5fc2l6ZSwgY3R4KTsKKyAgICAgICAg aWYgKHJldCA8IDApIHsKKyAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgIkZh aWxlZCB0byBleHRyYWN0IE9CVVxuIik7CisgICAgICAgICAgICBhdl9wYWNrZXRfdW5yZWYocGt0 KTsKKyAgICAgICAgICAgIGF2X3BhY2tldF9mcmVlKCZpbik7CisgICAgICAgICAgICByZXR1cm4g cmV0OworICAgICAgICB9CisKKyAgICAgICAgb2J1X3NpemUgPSBvYnUucmF3X3NpemU7CisKKyAg ICAgICAgLyogV3JpdGUgc3RhcnQgY29kZSAqLworICAgICAgICBvdXRfZGF0YVtvdXRfc2l6ZSsr XSA9IDA7CisgICAgICAgIG91dF9kYXRhW291dF9zaXplKytdID0gMDsKKyAgICAgICAgb3V0X2Rh dGFbb3V0X3NpemUrK10gPSAxOworCisgICAgICAgIC8qIFdyaXRlIE9CVSB3aXRoIGVtdWxhdGlv biBwcmV2ZW50aW9uICovCisgICAgICAgIGVzY2FwZWRfc2l6ZSA9IHdyaXRlX2VzY2FwZWQob3V0 X2RhdGEgKyBvdXRfc2l6ZSwgb2J1LnJhd19kYXRhLCBvYnVfc2l6ZSk7CisgICAgICAgIG91dF9z aXplICs9IGVzY2FwZWRfc2l6ZTsKKworICAgICAgICBpbl9kYXRhICs9IG9idV9zaXplOworICAg ICAgICBpbl9zaXplIC09IG9idV9zaXplOworICAgIH0KKworICAgIGF2X3Nocmlua19wYWNrZXQo cGt0LCBvdXRfc2l6ZSk7CisgICAgYXZfcGFja2V0X2ZyZWUoJmluKTsKKyAgICByZXR1cm4gMDsK K30KKworLyoqCisgKiBDb252ZXJ0IGZyb20gU3RhcnQgQ29kZSBCYXNlZCBGb3JtYXQgdG8gTG93 IE92ZXJoZWFkIEJpdHN0cmVhbSBGb3JtYXQKKyAqIChmb3IgZGVtdXhpbmcgZnJvbSBNUEVHLVRT KQorICovCitzdGF0aWMgaW50IGF2MV9mcm9tX3RzX2ZpbHRlcihBVkJTRkNvbnRleHQgKmN0eCwg QVZQYWNrZXQgKnBrdCkKK3sKKyAgICBpbnQgcmV0OworICAgIGNvbnN0IHVpbnQ4X3QgKmluX2Rh dGE7CisgICAgaW50IGluX3NpemU7CisgICAgdWludDhfdCAqb3V0X2RhdGE7CisgICAgaW50IG91 dF9zaXplID0gMDsKKyAgICBBVlBhY2tldCAqaW4gPSBOVUxMOworCisgICAgLyogQWxsb2NhdGUg c2VwYXJhdGUgaW5wdXQgcGFja2V0IHRvIHByZXNlcnZlIGRhdGEgd2hpbGUgd2UgYWxsb2NhdGUg b3V0cHV0LiAqLworICAgIGluID0gYXZfcGFja2V0X2FsbG9jKCk7CisgICAgaWYgKCFpbikKKyAg ICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKKworICAgIHJldCA9IGZmX2JzZl9nZXRfcGFj a2V0X3JlZihjdHgsIGluKTsKKyAgICBpZiAocmV0IDwgMCkgeworICAgICAgICBhdl9wYWNrZXRf ZnJlZSgmaW4pOworICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKworICAgIGluX2RhdGEgPSBp bi0+ZGF0YTsKKyAgICBpbl9zaXplID0gaW4tPnNpemU7CisKKyAgICAvKiBPdXRwdXQgc2l6ZSB3 aWxsIGJlIHNtYWxsZXIgKG5vIHN0YXJ0IGNvZGVzLCBmZXdlciBlc2NhcGUgYnl0ZXMpICovCisg ICAgcmV0ID0gcHJlcGFyZV9vdXRwdXRfcGFja2V0KGN0eCwgcGt0LCBpbiwgaW5fc2l6ZSArIEJV RkZFUl9QQURESU5HKTsKKyAgICBpZiAocmV0IDwgMCkgeworICAgICAgICBhdl9wYWNrZXRfZnJl ZSgmaW4pOworICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKworICAgIG91dF9kYXRhID0gcGt0 LT5kYXRhOworCisgICAgLyogRmluZCBhbmQgcHJvY2VzcyBlYWNoIE9CVSAqLworICAgIHdoaWxl IChpbl9zaXplID4gMCkgeworICAgICAgICBjb25zdCB1aW50OF90ICpvYnVfc3RhcnQ7CisgICAg ICAgIGludCBvYnVfc2l6ZTsKKyAgICAgICAgaW50IHVuZXNjYXBlZF9zaXplOworCisgICAgICAg IC8qIENoZWNrIGZvciBzdGFydCBjb2RlIDB4MDAwMDAxICovCisgICAgICAgIGlmIChpbl9zaXpl IDwgTUlOX1BBQ0tFVF9TSVpFIHx8IGluX2RhdGFbMF0gIT0gMCB8fCBpbl9kYXRhWzFdICE9IDAg fHwgaW5fZGF0YVsyXSAhPSAxKSB7CisgICAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJS T1IsICJNaXNzaW5nIHN0YXJ0IGNvZGUgYXQgcG9zaXRpb24gJWRcbiIsCisgICAgICAgICAgICAg ICAgICAgKGludCkoaW5fZGF0YSAtIHBrdC0+ZGF0YSkpOworICAgICAgICAgICAgcmV0ID0gQVZF UlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorCisg ICAgICAgIGluX2RhdGEgKz0gU1RBUlRfQ09ERV9TSVpFOworICAgICAgICBpbl9zaXplIC09IFNU QVJUX0NPREVfU0laRTsKKyAgICAgICAgb2J1X3N0YXJ0ID0gaW5fZGF0YTsKKworICAgICAgICAv KiBGaW5kIG5leHQgc3RhcnQgY29kZSBvciBlbmQgb2YgZGF0YSAqLworICAgICAgICBvYnVfc2l6 ZSA9IDA7CisgICAgICAgIHdoaWxlIChvYnVfc2l6ZSArIFNUQVJUX0NPREVfU0laRSA8PSBpbl9z aXplKSB7CisgICAgICAgICAgICBpZiAoaW5fZGF0YVtvYnVfc2l6ZV0gPT0gMCAmJiBpbl9kYXRh W29idV9zaXplICsgMV0gPT0gMCAmJgorICAgICAgICAgICAgICAgIGluX2RhdGFbb2J1X3NpemUg KyAyXSA9PSAxKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg ICAgICAgICBvYnVfc2l6ZSsrOworICAgICAgICB9CisgICAgICAgIGlmIChvYnVfc2l6ZSArIFNU QVJUX0NPREVfU0laRSA+IGluX3NpemUpIHsKKyAgICAgICAgICAgIG9idV9zaXplID0gaW5fc2l6 ZTsgIC8qIExhc3QgT0JVICovCisgICAgICAgIH0KKworICAgICAgICAvKiBSZW1vdmUgZW11bGF0 aW9uIHByZXZlbnRpb24gYnl0ZXMgKi8KKyAgICAgICAgdW5lc2NhcGVkX3NpemUgPSByZW1vdmVf ZXNjYXBlKG91dF9kYXRhICsgb3V0X3NpemUsIG9idV9zdGFydCwgb2J1X3NpemUpOworICAgICAg ICBvdXRfc2l6ZSArPSB1bmVzY2FwZWRfc2l6ZTsKKworICAgICAgICBpbl9kYXRhICs9IG9idV9z aXplOworICAgICAgICBpbl9zaXplIC09IG9idV9zaXplOworICAgIH0KKworICAgIGF2X3Nocmlu a19wYWNrZXQocGt0LCBvdXRfc2l6ZSk7CisgICAgYXZfcGFja2V0X2ZyZWUoJmluKTsKKyAgICBy ZXR1cm4gMDsKKworZmFpbDoKKyAgICBhdl9wYWNrZXRfdW5yZWYocGt0KTsKKyAgICBhdl9wYWNr ZXRfZnJlZSgmaW4pOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgYXYxX3RzX2Zp bHRlcihBVkJTRkNvbnRleHQgKmN0eCwgQVZQYWNrZXQgKnBrdCkKK3sKKyAgICBBVjFUU0NvbnRl eHQgKnMgPSBjdHgtPnByaXZfZGF0YTsKKworICAgIGlmIChzLT5tb2RlID09IDApCisgICAgICAg IHJldHVybiBhdjFfdG9fdHNfZmlsdGVyKGN0eCwgcGt0KTsKKyAgICBlbHNlCisgICAgICAgIHJl dHVybiBhdjFfZnJvbV90c19maWx0ZXIoY3R4LCBwa3QpOworfQorCitzdGF0aWMgY29uc3QgZW51 bSBBVkNvZGVjSUQgYXYxX3RzX2NvZGVjX2lkc1tdID0geworICAgIEFWX0NPREVDX0lEX0FWMSwg QVZfQ09ERUNfSURfTk9ORSwKK307CisKKyNkZWZpbmUgT0ZGU0VUKHgpIG9mZnNldG9mKEFWMVRT Q29udGV4dCwgeCkKKyNkZWZpbmUgRkxBR1MgKEFWX09QVF9GTEFHX1ZJREVPX1BBUkFNIHwgQVZf T1BUX0ZMQUdfQlNGX1BBUkFNKQorCitzdGF0aWMgY29uc3QgQVZPcHRpb24gYXYxX3RzX29wdGlv bnNbXSA9IHsKKyAgICB7ICJtb2RlIiwgIkNvbnZlcnNpb24gbW9kZSIsIE9GRlNFVChtb2RlKSwg QVZfT1BUX1RZUEVfSU5ULCB7IC5pNjQgPSAwIH0sIDAsIDEsIEZMQUdTLCAudW5pdCA9ICJtb2Rl IiB9LAorICAgIHsgInRvX3RzIiwgICAiTG93IE92ZXJoZWFkIHRvIFN0YXJ0IENvZGUgKGZvciBt dXhpbmcpIiwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsgLmk2NCA9IDAgfSwgMCwgMCwgRkxBR1Ms IC51bml0ID0gIm1vZGUiIH0sCisgICAgeyAiZnJvbV90cyIsICJTdGFydCBDb2RlIHRvIExvdyBP dmVyaGVhZCAoZm9yIGRlbXV4aW5nKSIsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7IC5pNjQgPSAx IH0sIDAsIDAsIEZMQUdTLCAudW5pdCA9ICJtb2RlIiB9LAorICAgIHsgTlVMTCB9Cit9OworCitz dGF0aWMgY29uc3QgQVZDbGFzcyBhdjFfdHNfY2xhc3MgPSB7CisgICAgLmNsYXNzX25hbWUgPSAi YXYxX3RzIiwKKyAgICAuaXRlbV9uYW1lICA9IGF2X2RlZmF1bHRfaXRlbV9uYW1lLAorICAgIC5v cHRpb24gICAgID0gYXYxX3RzX29wdGlvbnMsCisgICAgLnZlcnNpb24gICAgPSBMSUJBVlVUSUxf VkVSU0lPTl9JTlQsCit9OworCitjb25zdCBGRkJpdFN0cmVhbUZpbHRlciBmZl9hdjFfdHNfYnNm ID0geworICAgIC5wLm5hbWUgICAgICAgICA9ICJhdjFfdHMiLAorICAgIC5wLmNvZGVjX2lkcyAg ICA9IGF2MV90c19jb2RlY19pZHMsCisgICAgLnAucHJpdl9jbGFzcyAgID0gJmF2MV90c19jbGFz cywKKyAgICAucHJpdl9kYXRhX3NpemUgPSBzaXplb2YoQVYxVFNDb250ZXh0KSwKKyAgICAuZmls dGVyICAgICAgICAgPSBhdjFfdHNfZmlsdGVyLAorfTsKLS0gCjIuNDkuMQoKCkZyb20gMjMyMDgx ODg3NWRkYTZkYTg1ZTEyZGEyOTI1NzA1ZGZjNDcwYWEzYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogSnVuIFpoYW8gPGJhcnJ5anpoYW9AdGVuY2VudC5jb20+CkRhdGU6IFNhdCwgMjcg RGVjIDIwMjUgMTQ6NDI6MTggKzA4MDAKU3ViamVjdDogW1BBVENIIDAyLzExXSBkb2MvYml0c3Ry ZWFtX2ZpbHRlcnM6IGFkZCBhdjFfdHMgZG9jdW1lbnRhdGlvbgoKRG9jdW1lbnQgdGhlIG5ldyBh djFfdHMgYml0c3RyZWFtIGZpbHRlciwgZXhwbGFpbmluZyBpdHMgdXNhZ2UgZm9yCmNvbnZlcnRp bmcgYmV0d2VlbiBBbm5leCBCIGFuZCBMb3cgT3ZlcmhlYWQgZm9ybWF0cy4KClNpZ25lZC1vZmYt Ynk6IEp1biBaaGFvIDxiYXJyeWp6aGFvQHRlbmNlbnQuY29tPgotLS0KIGRvYy9iaXRzdHJlYW1f ZmlsdGVycy50ZXhpIHwgMjAgKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAy MCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZG9jL2JpdHN0cmVhbV9maWx0ZXJzLnRleGkg Yi9kb2MvYml0c3RyZWFtX2ZpbHRlcnMudGV4aQppbmRleCBmYjMxY2E3MzgwLi5jYjVlMzUxMmI3 IDEwMDY0NAotLS0gYS9kb2MvYml0c3RyZWFtX2ZpbHRlcnMudGV4aQorKysgYi9kb2MvYml0c3Ry ZWFtX2ZpbHRlcnMudGV4aQpAQCAtOTIsNiArOTIsMjYgQEAgRGVsZXRlcyBQYWRkaW5nIE9CVXMu CiAKIEBlbmQgdGFibGUKIAorQHNlY3Rpb24gYXYxX3RzCisKK0NvbnZlcnQgQVYxIGJpdHN0cmVh bXMgYmV0d2VlbiBBbm5leCBCIChhcyB1c2VkIGluIE1QRUctVFMpIGFuZCBMb3cgT3ZlcmhlYWQg KHN0YW5kYXJkKSBmb3JtYXRzLgorCitAdGFibGUgQG9wdGlvbgorQGl0ZW0gbW9kZQorU2V0IHRo ZSBjb252ZXJzaW9uIG1vZGUuCisKK0B0YWJsZSBAc2FtcAorQGl0ZW0gdG9fdHMKK0NvbnZlcnQg ZnJvbSBMb3cgT3ZlcmhlYWQgdG8gQW5uZXggQiAoTVBFRy1UUyBjb21wYXRpYmxlKS4KK0luc2Vy dHMgU3RhcnQgQ29kZXMgYW5kIGFwcGxpZXMgZW11bGF0aW9uIHByZXZlbnRpb24gYnl0ZXMuCitJ dCBhbHNvIGVuc3VyZXMgYSBUZW1wb3JhbCBEZWxpbWl0ZXIgT0JVIGlzIHByZXNlbnQgYXQgdGhl IGJlZ2lubmluZyBvZiBlYWNoIHBhY2tldC4KKworQGl0ZW0gZnJvbV90cworQ29udmVydCBmcm9t IEFubmV4IEIgdG8gTG93IE92ZXJoZWFkLgorU3RyaXBzIFN0YXJ0IENvZGVzIGFuZCByZW1vdmVz IGVtdWxhdGlvbiBwcmV2ZW50aW9uIGJ5dGVzLgorQGVuZCB0YWJsZQorQGVuZCB0YWJsZQorCiBA c2VjdGlvbiBjaG9tcAogCiBSZW1vdmUgemVybyBwYWRkaW5nIGF0IHRoZSBlbmQgb2YgYSBwYWNr ZXQuCi0tIAoyLjQ5LjEKCgpGcm9tIDhmOTljNjZhZDAwNTczY2ZlNzhhNzY4Nzk1ZGY4YzM4MjYw OTMyM2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEp1biBaaGFvIDxiYXJyeWp6aGFv QHRlbmNlbnQuY29tPgpEYXRlOiBTYXQsIDI3IERlYyAyMDI1IDE0OjQzOjQ1ICswODAwClN1Ympl Y3Q6IFtQQVRDSCAwMy8xMV0gbGF2Zi9tcGVndHM6IGFkZCBBVjEgZGVtdXhpbmcgc3VwcG9ydAoK QWRkIHN1cHBvcnQgZm9yIGRlbXV4aW5nIEFWMSB2aWRlbyBmcm9tIE1QRUctMiBUcmFuc3BvcnQg U3RyZWFtcyBhY2NvcmRpbmcKdG8gdGhlICJBVjEgQ29kZWMgaW4gTVBFRy0yIFRTIiBzcGVjaWZp Y2F0aW9uLgoKVGhpcyBpbXBsZW1lbnRhdGlvbiBkZXRlY3RzIEFWMSBzdHJlYW1zIGFuZCBhdXRv bWF0aWNhbGx5IGluc2VydHMgdGhlCidhdjFfdHMnIGJpdHN0cmVhbSBmaWx0ZXIgdG8gY29udmVy dCB0aGUgc3RyZWFtIGZyb20gdGhlIFRTLWNvbXBsaWFudApBbm5leCBCIGZvcm1hdCB0byB0aGUg TG93IE92ZXJoZWFkIGZvcm1hdCBwcmVmZXJyZWQgYnkgRkZtcGVnIGRlY29kZXJzLgoKU2lnbmVk LW9mZi1ieTogSnVuIFpoYW8gPGJhcnJ5anpoYW9AdGVuY2VudC5jb20+Ci0tLQogbGliYXZmb3Jt YXQvbXBlZ3RzLmMgfCAxMzEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLQogbGliYXZmb3JtYXQvbXBlZ3RzLmggfCAgIDQgKysKIDIgZmlsZXMgY2hhbmdlZCwgMTM0 IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9t cGVndHMuYyBiL2xpYmF2Zm9ybWF0L21wZWd0cy5jCmluZGV4IDdjMTlhYmFmNzYuLjBkNGIyZmEz NzAgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L21wZWd0cy5jCisrKyBiL2xpYmF2Zm9ybWF0L21w ZWd0cy5jCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAibGliYXZjb2RlYy9kZWZzLmgiCiAj aW5jbHVkZSAibGliYXZjb2RlYy9nZXRfYml0cy5oIgogI2luY2x1ZGUgImxpYmF2Y29kZWMvb3B1 cy9vcHVzLmgiCisjaW5jbHVkZSAibGliYXZjb2RlYy9ic2YuaCIKICNpbmNsdWRlICJhdmZvcm1h dC5oIgogI2luY2x1ZGUgIm1wZWd0cy5oIgogI2luY2x1ZGUgImludGVybmFsLmgiCkBAIC0xODIs NiArMTgzLDcgQEAgc3RydWN0IE1wZWdUU0NvbnRleHQgewogCiAgICAgQVZTdHJlYW0gKmVwZ19z dHJlYW07CiAgICAgQVZCdWZmZXJQb29sKiBwb29sc1szMl07CisgICAgaW50IGF2MV9sb3dfb3Zl cmhlYWQ7CiB9OwogCiAjZGVmaW5lIE1QRUdUU19PUFRJT05TIFwKQEAgLTE5Myw3ICsxOTUsMTAg QEAgc3RydWN0IE1wZWdUU0NvbnRleHQgewogICAgICAgICB7IC5pNjQgPSAwIH0sIDAsIElOVF9N QVgsIEFWX09QVF9GTEFHX0VYUE9SVCB8IEFWX09QVF9GTEFHX1JFQURPTkxZIH0sIFwKICAgICB7 ICJ0c19wYWNrZXRzaXplIiwgIm91dHB1dCBvcHRpb24gY2FycnlpbmcgdGhlIHJhdyBwYWNrZXQg c2l6ZSIsICAgICAgICAgICBcCiAgICAgICAgIG9mZnNldG9mKE1wZWdUU0NvbnRleHQsIHJhd19w YWNrZXRfc2l6ZSksIEFWX09QVF9UWVBFX0lOVCwgICAgICAgICAgICAgXAotICAgICAgICB7IC5p NjQgPSAwIH0sIDAsIElOVF9NQVgsIEFWX09QVF9GTEFHX0VYUE9SVCB8IEFWX09QVF9GTEFHX1JF QURPTkxZIH0KKyAgICAgICAgeyAuaTY0ID0gMCB9LCAwLCBJTlRfTUFYLCBBVl9PUFRfRkxBR19F WFBPUlQgfCBBVl9PUFRfRkxBR19SRUFET05MWSB9LCBcCisgICAgeyAiYXYxX2xvd19vdmVyaGVh ZCIsICJFeHBvcnQgQVYxIGluIExvdyBPdmVyaGVhZCBmb3JtYXQgKGRlZmF1bHQ6IHRydWUpIiwg XAorICAgICAgICBvZmZzZXRvZihNcGVnVFNDb250ZXh0LCBhdjFfbG93X292ZXJoZWFkKSwgQVZf T1BUX1RZUEVfQk9PTCwgICAgICAgICAgIFwKKyAgICAgICAgeyAuaTY0ID0gMSB9LCAwLCAxLCBB Vl9PUFRfRkxBR19ERUNPRElOR19QQVJBTSB9CiAKIHN0YXRpYyBjb25zdCBBVk9wdGlvbiBvcHRp b25zW10gPSB7CiAgICAgTVBFR1RTX09QVElPTlMsCkBAIC0yNzMsNiArMjc4LDggQEAgdHlwZWRl ZiBzdHJ1Y3QgUEVTQ29udGV4dCB7CiAgICAgQVZCdWZmZXJSZWYgKmJ1ZmZlcjsKICAgICBTTENv bmZpZ0Rlc2NyIHNsOwogICAgIGludCBtZXJnZWRfc3Q7CisgICAgQVZCU0ZDb250ZXh0ICpic2Y7 CisgICAgQVZQYWNrZXQgKmJzZl9wa3Q7CiB9IFBFU0NvbnRleHQ7CiAKIEVYVEVSTiBjb25zdCBG RklucHV0Rm9ybWF0IGZmX21wZWd0c19kZW11eGVyOwpAQCAtNTY5LDYgKzU3Niw4IEBAIHN0YXRp YyB2b2lkIG1wZWd0c19jbG9zZV9maWx0ZXIoTXBlZ1RTQ29udGV4dCAqdHMsIE1wZWdUU0ZpbHRl ciAqZmlsdGVyKQogICAgIGVsc2UgaWYgKGZpbHRlci0+dHlwZSA9PSBNUEVHVFNfUEVTKSB7CiAg ICAgICAgIFBFU0NvbnRleHQgKnBlcyA9IGZpbHRlci0+dS5wZXNfZmlsdGVyLm9wYXF1ZTsKICAg ICAgICAgYXZfYnVmZmVyX3VucmVmKCZwZXMtPmJ1ZmZlcik7CisgICAgICAgIGF2X2JzZl9mcmVl KCZwZXMtPmJzZik7CisgICAgICAgIGF2X3BhY2tldF9mcmVlKCZwZXMtPmJzZl9wa3QpOwogICAg ICAgICAvKiByZWZlcmVuY2VkIHByaXZhdGUgZGF0YSB3aWxsIGJlIGZyZWVkIGxhdGVyIGluCiAg ICAgICAgICAqIGF2Zm9ybWF0X2Nsb3NlX2lucHV0IChwZXMtPnN0LT5wcml2X2RhdGEgPT0gcGVz KSAqLwogICAgICAgICBpZiAoIXBlcy0+c3QgfHwgcGVzLT5tZXJnZWRfc3QpIHsKQEAgLTg2NCw2 ICs4NzMsNyBAQCBzdGF0aWMgY29uc3QgU3RyZWFtVHlwZSBITFNfU0FNUExFX0VOQ190eXBlc1td ID0gewogfTsKIAogc3RhdGljIGNvbnN0IFN0cmVhbVR5cGUgUkVHRF90eXBlc1tdID0geworICAg IHsgTUtUQUcoJ0EnLCAnVicsICcwJywgJzEnKSwgQVZNRURJQV9UWVBFX1ZJREVPLCBBVl9DT0RF Q19JRF9BVjEgICB9LAogICAgIHsgTUtUQUcoJ2QnLCAncicsICdhJywgJ2MnKSwgQVZNRURJQV9U WVBFX1ZJREVPLCBBVl9DT0RFQ19JRF9ESVJBQyB9LAogICAgIHsgTUtUQUcoJ0EnLCAnQycsICct JywgJzMnKSwgQVZNRURJQV9UWVBFX0FVRElPLCBBVl9DT0RFQ19JRF9BQzMgICB9LAogICAgIHsg TUtUQUcoJ0EnLCAnQycsICctJywgJzQnKSwgQVZNRURJQV9UWVBFX0FVRElPLCBBVl9DT0RFQ19J RF9BQzQgICB9LApAQCAtMTAxMyw2ICsxMDIzLDMxIEBAIHN0YXRpYyB2b2lkIG5ld19kYXRhX3Bh Y2tldChjb25zdCB1aW50OF90ICpidWZmZXIsIGludCBsZW4sIEFWUGFja2V0ICpwa3QpCiAgICAg cGt0LT5zaXplID0gbGVuOwogfQogCitzdGF0aWMgdm9pZCBtcGVndHNfZW5zdXJlX2F2MV9ic2Yo UEVTQ29udGV4dCAqcGVzKQoreworICAgIGlmICghcGVzLT50cy0+YXYxX2xvd19vdmVyaGVhZCB8 fCBwZXMtPmJzZiB8fCAhcGVzLT5zdCB8fCBwZXMtPnN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0g QVZfQ09ERUNfSURfQVYxKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBBVkJpdFN0cmVh bUZpbHRlciAqZmlsdGVyID0gYXZfYnNmX2dldF9ieV9uYW1lKCJhdjFfdHMiKTsKKyAgICBpZiAo ZmlsdGVyKSB7CisgICAgICAgIGludCByZXQ7CisgICAgICAgIGlmICgocmV0ID0gYXZfYnNmX2Fs bG9jKGZpbHRlciwgJnBlcy0+YnNmKSkgPj0gMCkgeworICAgICAgICAgICAgYXZjb2RlY19wYXJh bWV0ZXJzX2NvcHkocGVzLT5ic2YtPnBhcl9pbiwgcGVzLT5zdC0+Y29kZWNwYXIpOworICAgICAg ICAgICAgcGVzLT5ic2YtPnRpbWVfYmFzZV9pbiA9IHBlcy0+c3QtPnRpbWVfYmFzZTsKKyAgICAg ICAgICAgIGlmICgocmV0ID0gYXZfb3B0X3NldChwZXMtPmJzZi0+cHJpdl9kYXRhLCAibW9kZSIs ICJmcm9tX3RzIiwgMCkpIDwgMCkKKyAgICAgICAgICAgICAgICAgYXZfbG9nKHBlcy0+c3RyZWFt LCBBVl9MT0dfV0FSTklORywgIkZhaWxlZCB0byBzZXQgYXYxX3RzIG1vZGUgdG8gZnJvbV90czog JWRcbiIsIHJldCk7CisKKyAgICAgICAgICAgIGlmICgocmV0ID0gYXZfYnNmX2luaXQocGVzLT5i c2YpKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgYXZfYnNmX2ZyZWUoJnBlcy0+YnNmKTsKKyAg ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgIHBlcy0+YnNmX3BrdCA9IGF2X3Bh Y2tldF9hbGxvYygpOworICAgICAgICAgICAgICAgICBpZiAoIXBlcy0+YnNmX3BrdCkKKyAgICAg ICAgICAgICAgICAgICAgIGF2X2JzZl9mcmVlKCZwZXMtPmJzZik7CisgICAgICAgICAgICB9Cisg ICAgICAgIH0KKyAgICB9Cit9CisKIHN0YXRpYyBpbnQgbmV3X3Blc19wYWNrZXQoUEVTQ29udGV4 dCAqcGVzLCBBVlBhY2tldCAqcGt0KQogewogICAgIHVpbnQ4X3QgKnNkOwpAQCAtMTA1Nyw4ICsx MDkyLDMzIEBAIHN0YXRpYyBpbnQgbmV3X3Blc19wYWNrZXQoUEVTQ29udGV4dCAqcGVzLCBBVlBh Y2tldCAqcGt0KQogICAgIHBrdC0+ZHRzID0gcGVzLT5kdHM7CiAgICAgLyogc3RvcmUgcG9zaXRp b24gb2YgZmlyc3QgVFMgcGFja2V0IG9mIHRoaXMgUEVTIHBhY2tldCAqLwogICAgIHBrdC0+cG9z ICAgPSBwZXMtPnRzX3BhY2tldF9wb3M7CisKKyAgICBtcGVndHNfZW5zdXJlX2F2MV9ic2YocGVz KTsKKwogICAgIHBrdC0+ZmxhZ3MgPSBwZXMtPmZsYWdzOwogCisgICAgaWYgKHBlcy0+YnNmKSB7 CisgICAgICAgIGludCBzdHJlYW1faW5kZXggPSBwa3QtPnN0cmVhbV9pbmRleDsKKyAgICAgICAg aW50NjRfdCBwb3MgPSBwa3QtPnBvczsKKyAgICAgICAgaW50IHJldCA9IGF2X2JzZl9zZW5kX3Bh Y2tldChwZXMtPmJzZiwgcGt0KTsKKyAgICAgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgICAg IGF2X2xvZyhwZXMtPnN0cmVhbSwgQVZfTE9HX1dBUk5JTkcsICJFcnJvciBzZW5kaW5nIHRvIGF2 MV90czogJWRcbiIsIHJldCk7CisgICAgICAgICAgICBwZXMtPmJ1ZmZlciA9IE5VTEw7CisgICAg ICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9CisKKyAgICAgICAgcmV0ID0gYXZfYnNmX3Jl Y2VpdmVfcGFja2V0KHBlcy0+YnNmLCBwa3QpOworICAgICAgICBpZiAocmV0IDwgMCkgeworICAg ICAgICAgICAgcGVzLT5idWZmZXIgPSBOVUxMOworICAgICAgICAgICAgaWYgKHJldCA9PSBBVkVS Uk9SKEVBR0FJTikpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBhdl9s b2cocGVzLT5zdHJlYW0sIEFWX0xPR19XQVJOSU5HLCAiRXJyb3IgcmVjZWl2aW5nIGZyb20gYXYx X3RzOiAlZFxuIiwgcmV0KTsKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgIH0KKyAg ICAgICAgcGt0LT5zdHJlYW1faW5kZXggPSBzdHJlYW1faW5kZXg7CisgICAgICAgIHBrdC0+cG9z ID0gcG9zOworICAgIH0KKwogICAgIHBlcy0+YnVmZmVyID0gTlVMTDsKICAgICByZXNldF9wZXNf cGFja2V0X3N0YXRlKHBlcyk7CiAKQEAgLTIyOTQsNiArMjM1NCw3NSBAQCBpbnQgZmZfcGFyc2Vf bXBlZzJfZGVzY3JpcHRvcihBVkZvcm1hdENvbnRleHQgKmZjLCBBVlN0cmVhbSAqc3QsIGludCBz dHJlYW1fdHlwZQogICAgICAgICAgICAgc3RpLT5uZWVkX3BhcnNpbmcgPSAwOwogICAgICAgICB9 CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVYxX1ZJREVPX0RFU0NSSVBUT1I6CisgICAgICAg IC8qIEFWMSB2aWRlbyBkZXNjcmlwdG9yIHBlciAiQVYxIENvZGVjIGluIE1QRUctMiBUUyIgc3Bl YworICAgICAgICAgKiBodHRwczovL2FvbWVkaWFjb2RlYy5naXRodWIuaW8vYXYxLW1wZWcyLXRz LworICAgICAgICAgKiBUaGlzIGRlc2NyaXB0b3IgaXMgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRo IHJlZ2lzdHJhdGlvbiBkZXNjcmlwdG9yICdBVjAxJworICAgICAgICAgKi8KKyAgICAgICAgaWYg KHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxKSB7CisgICAgICAgICAg ICBpbnQgbWFya2VyX3ZlcnNpb24sIHNlcV9wcm9maWxlLCBzZXFfbGV2ZWxfaWR4XzAsIHNlcV90 aWVyXzA7CisgICAgICAgICAgICBpbnQgaGlnaF9iaXRkZXB0aCwgdHdlbHZlX2JpdCwgbW9ub2No cm9tZTsKKyAgICAgICAgICAgIGludCBjaHJvbWFfc3Vic2FtcGxpbmdfeCwgY2hyb21hX3N1YnNh bXBsaW5nX3ksIGNocm9tYV9zYW1wbGVfcG9zaXRpb247CisgICAgICAgICAgICBpbnQgaGRyX3dj Z19pZGM7CisgICAgICAgICAgICB1aW50OF90IGJ5dGUwLCBieXRlMSwgYnl0ZTIsIGJ5dGUzOwor CisgICAgICAgICAgICBpZiAoZGVzY19lbmQgLSAqcHAgPCA0KQorICAgICAgICAgICAgICAgIHJl dHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworCisgICAgICAgICAgICBieXRlMCA9IGdldDgocHAs IGRlc2NfZW5kKTsgLyogbWFya2VyKDEpIHwgdmVyc2lvbig3KSAqLworICAgICAgICAgICAgYnl0 ZTEgPSBnZXQ4KHBwLCBkZXNjX2VuZCk7IC8qIHNlcV9wcm9maWxlKDMpIHwgc2VxX2xldmVsX2lk eF8wKDUpICovCisgICAgICAgICAgICBieXRlMiA9IGdldDgocHAsIGRlc2NfZW5kKTsgLyogc2Vx X3RpZXJfMCgxKSB8IGhpZ2hfYml0ZGVwdGgoMSkgfCB0d2VsdmVfYml0KDEpIHwgbW9ub2Nocm9t ZSgxKSB8IGNocm9tYV9zdWJzYW1wbGluZ194KDEpIHwgY2hyb21hX3N1YnNhbXBsaW5nX3koMSkg fCBjaHJvbWFfc2FtcGxlX3Bvc2l0aW9uKDIpICovCisgICAgICAgICAgICBieXRlMyA9IGdldDgo cHAsIGRlc2NfZW5kKTsgLyogaGRyX3djZ19pZGMoMikgfCByZXNlcnZlZCgxKSB8IGluaXRpYWxf cHJlc2VudGF0aW9uX2RlbGF5X3ByZXNlbnQoMSkgfCBpbml0aWFsX3ByZXNlbnRhdGlvbl9kZWxh eSg0KSAqLworCisgICAgICAgICAgICBtYXJrZXJfdmVyc2lvbiA9IGJ5dGUwOworICAgICAgICAg ICAgaWYgKChtYXJrZXJfdmVyc2lvbiAmIDB4ODApICE9IDB4ODApIHsKKyAgICAgICAgICAgICAg ICBhdl9sb2coZmMsIEFWX0xPR19XQVJOSU5HLCAiSW52YWxpZCBBVjEgdmlkZW8gZGVzY3JpcHRv ciBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisg ICAgICAgICAgICBzZXFfcHJvZmlsZSAgICA9IChieXRlMSA+PiA1KSAmIDB4MDc7CisgICAgICAg ICAgICBzZXFfbGV2ZWxfaWR4XzAgPSBieXRlMSAmIDB4MWY7CisgICAgICAgICAgICBzZXFfdGll cl8wICAgICA9IChieXRlMiA+PiA3KSAmIDB4MDE7CisgICAgICAgICAgICBoaWdoX2JpdGRlcHRo ICA9IChieXRlMiA+PiA2KSAmIDB4MDE7CisgICAgICAgICAgICB0d2VsdmVfYml0ICAgICA9IChi eXRlMiA+PiA1KSAmIDB4MDE7CisgICAgICAgICAgICBtb25vY2hyb21lICAgICA9IChieXRlMiA+ PiA0KSAmIDB4MDE7CisgICAgICAgICAgICBjaHJvbWFfc3Vic2FtcGxpbmdfeCA9IChieXRlMiA+ PiAzKSAmIDB4MDE7CisgICAgICAgICAgICBjaHJvbWFfc3Vic2FtcGxpbmdfeSA9IChieXRlMiA+ PiAyKSAmIDB4MDE7CisgICAgICAgICAgICBjaHJvbWFfc2FtcGxlX3Bvc2l0aW9uID0gYnl0ZTIg JiAweDAzOworICAgICAgICAgICAgaGRyX3djZ19pZGMgICAgPSAoYnl0ZTMgPj4gNikgJiAweDAz OworCisgICAgICAgICAgICBzdC0+Y29kZWNwYXItPnByb2ZpbGUgPSBzZXFfcHJvZmlsZTsKKyAg ICAgICAgICAgIHN0LT5jb2RlY3Bhci0+bGV2ZWwgICA9IHNlcV9sZXZlbF9pZHhfMCB8IChzZXFf dGllcl8wIDw8IDgpOworCisgICAgICAgICAgICAvKiBEZXJpdmUgYml0IGRlcHRoICovCisgICAg ICAgICAgICBpZiAoc2VxX3Byb2ZpbGUgPT0gMiAmJiBoaWdoX2JpdGRlcHRoKQorICAgICAgICAg ICAgICAgIHN0LT5jb2RlY3Bhci0+Yml0c19wZXJfY29kZWRfc2FtcGxlID0gdHdlbHZlX2JpdCA/ IDEyIDogMTA7CisgICAgICAgICAgICBlbHNlIGlmIChzZXFfcHJvZmlsZSA8PSAyKQorICAgICAg ICAgICAgICAgIHN0LT5jb2RlY3Bhci0+Yml0c19wZXJfY29kZWRfc2FtcGxlID0gaGlnaF9iaXRk ZXB0aCA/IDEwIDogODsKKworICAgICAgICAgICAgLyogU2V0IGNocm9tYSBsb2NhdGlvbiBiYXNl ZCBvbiBjaHJvbWFfc2FtcGxlX3Bvc2l0aW9uICovCisgICAgICAgICAgICBpZiAoIW1vbm9jaHJv bWUgJiYgY2hyb21hX3N1YnNhbXBsaW5nX3ggJiYgY2hyb21hX3N1YnNhbXBsaW5nX3kpIHsKKyAg ICAgICAgICAgICAgICBzd2l0Y2ggKGNocm9tYV9zYW1wbGVfcG9zaXRpb24pIHsKKyAgICAgICAg ICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgIHN0LT5jb2RlY3Bhci0+Y2hyb21h X2xvY2F0aW9uID0gQVZDSFJPTUFfTE9DX0xFRlQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAgICAgc3QtPmNvZGVj cGFyLT5jaHJvbWFfbG9jYXRpb24gPSBBVkNIUk9NQV9MT0NfVE9QTEVGVDsKKyAgICAgICAgICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAg ICAgICAgICBhdl9sb2coZmMsIEFWX0xPR19UUkFDRSwgIkFWMSB2aWRlbyBkZXNjcmlwdG9yOiBw cm9maWxlPSVkLCBsZXZlbD0lZCwgdGllcj0lZCwgIgorICAgICAgICAgICAgICAgICAgICJiaXRf ZGVwdGg9JWQsIG1vbm9jaHJvbWU9JWQsIGNocm9tYV9zdWJzYW1wbGluZz0lZHglZCwgIgorICAg ICAgICAgICAgICAgICAgICJjaHJvbWFfc2FtcGxlX3Bvc2l0aW9uPSVkLCBoZHJfd2NnX2lkYz0l ZFxuIiwKKyAgICAgICAgICAgICAgICAgICBzZXFfcHJvZmlsZSwgc2VxX2xldmVsX2lkeF8wLCBz ZXFfdGllcl8wLAorICAgICAgICAgICAgICAgICAgIHN0LT5jb2RlY3Bhci0+Yml0c19wZXJfY29k ZWRfc2FtcGxlLCBtb25vY2hyb21lLAorICAgICAgICAgICAgICAgICAgIGNocm9tYV9zdWJzYW1w bGluZ194LCBjaHJvbWFfc3Vic2FtcGxpbmdfeSwKKyAgICAgICAgICAgICAgICAgICBjaHJvbWFf c2FtcGxlX3Bvc2l0aW9uLCBoZHJfd2NnX2lkYyk7CisKKyAgICAgICAgICAgIHN0aS0+bmVlZF9j b250ZXh0X3VwZGF0ZSA9IDE7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBE T1ZJX1ZJREVPX1NUUkVBTV9ERVNDUklQVE9SOgogICAgICAgICB7CiAgICAgICAgICAgICB1aW50 MzJfdCBidWY7CmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9tcGVndHMuaCBiL2xpYmF2Zm9ybWF0 L21wZWd0cy5oCmluZGV4IDIyMzk2MmQxOGUuLmE4MWUzYjNmMTYgMTAwNjQ0Ci0tLSBhL2xpYmF2 Zm9ybWF0L21wZWd0cy5oCisrKyBiL2xpYmF2Zm9ybWF0L21wZWd0cy5oCkBAIC0yMzAsNiArMjMw LDEwIEBAIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9saWJyYXJ5L2FyY2hpdmUvZG9jdW1l bnRhdGlvbi9BdWRpb1ZpZGVvL0NvbmNlcHR1YWwvCiBodHRwczovL3Byb2Zlc3Npb25hbC5kb2xi eS5jb20vc2l0ZWFzc2V0cy9jb250ZW50LWNyZWF0aW9uL2RvbGJ5LXZpc2lvbi1mb3ItY29udGVu dC1jcmVhdG9ycy9kb2xieS12aXNpb24tYml0c3RyZWFtcy1pbi1tcGVnLTItdHJhbnNwb3J0LXN0 cmVhbS1tdWx0aXBsZXgtdjEuMi5wZGYgKi8KICNkZWZpbmUgRE9WSV9WSURFT19TVFJFQU1fREVT Q1JJUFRPUiAweGIwCiAKKy8qKiBzZWUgIkFWMSBDb2RlYyBpbiBNUEVHLTIgVHJhbnNwb3J0IFN0 cmVhbSIKK2h0dHBzOi8vYW9tZWRpYWNvZGVjLmdpdGh1Yi5pby9hdjEtbXBlZzItdHMvICovCisj ZGVmaW5lIEFWMV9WSURFT19ERVNDUklQVE9SIDB4ODAKKwogI2RlZmluZSBEQVRBX0NPTVBPTkVO VF9ERVNDUklQVE9SIDB4ZmQgLyogQVJJQiBTVEQtQjEwICovCiAKIHR5cGVkZWYgc3RydWN0IE1w ZWdUU0NvbnRleHQgTXBlZ1RTQ29udGV4dDsKLS0gCjIuNDkuMQoKCkZyb20gNzNhN2E3MmVjY2Ux NTgwMDVkMWQ4YjY1YzVkMjAyMmJiOTgyNmM2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogSnVuIFpoYW8gPGJhcnJ5anpoYW9AdGVuY2VudC5jb20+CkRhdGU6IFNhdCwgMjcgRGVjIDIw MjUgMTQ6NDM6NDUgKzA4MDAKU3ViamVjdDogW1BBVENIIDA0LzExXSBkb2MvZGVtdXhlcnM6IGFk ZCBhdjFfbG93X292ZXJoZWFkIGRvY3VtZW50YXRpb24KCkRvY3VtZW50IHRoZSBhdjFfbG93X292 ZXJoZWFkIG9wdGlvbiBmb3IgdGhlIE1QRUctVFMgZGVtdXhlciwgd2hpY2gKY29udHJvbHMgdGhl IGF1dG9tYXRpYyBpbnNlcnRpb24gb2YgdGhlIGF2MV90cyBiaXRzdHJlYW0gZmlsdGVyLgoKU2ln bmVkLW9mZi1ieTogSnVuIFpoYW8gPGJhcnJ5anpoYW9AdGVuY2VudC5jb20+Ci0tLQogZG9jL2Rl bXV4ZXJzLnRleGkgfCA0ICsrKysKIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKCmRp ZmYgLS1naXQgYS9kb2MvZGVtdXhlcnMudGV4aSBiL2RvYy9kZW11eGVycy50ZXhpCmluZGV4IGMx ZGRhN2YxZWIuLjBlZWI4YzQ4NzggMTAwNjQ0Ci0tLSBhL2RvYy9kZW11eGVycy50ZXhpCisrKyBi L2RvYy9kZW11eGVycy50ZXhpCkBAIC0xMDAxLDYgKzEwMDEsMTAgQEAgc3RyZWFtcyBtb3ZlIHRv IGRpZmZlcmVudCBQSURzLiBEZWZhdWx0IHZhbHVlIGlzIDAuCiBAaXRlbSBtYXhfcGFja2V0X3Np emUKIFNldCBtYXhpbXVtIHNpemUsIGluIGJ5dGVzLCBvZiBwYWNrZXQgZW1pdHRlZCBieSB0aGUg ZGVtdXhlci4gUGF5bG9hZHMgYWJvdmUgdGhpcyBzaXplCiBhcmUgc3BsaXQgYWNyb3NzIG11bHRp cGxlIHBhY2tldHMuIFJhbmdlIGlzIDEgdG8gSU5UX01BWC8yLiBEZWZhdWx0IGlzIDIwNDgwMCBi eXRlcy4KKworQGl0ZW0gYXYxX2xvd19vdmVyaGVhZAorQ29udmVydCBBVjEgc3RyZWFtIGludG8g bG93LW92ZXJoZWFkIGZvcm1hdC4KK1RoaXMgc2V0dGluZyBpcyBlbmFibGVkIGJ5IGRlZmF1bHQu IElmIGRpc2FibGVkLCB0aGUgc3RyZWFtIHdpbGwgYmUgZXhwb3J0ZWQgaW4gQW5uZXggQiBmb3Jt YXQuCiBAZW5kIHRhYmxlCiAKIEBzZWN0aW9uIG1wanBlZwotLSAKMi40OS4xCgoKRnJvbSAyNzZm YWJhMmI2NzE5MWIwMGUwZDQwYTEzMWZiMWQwOGU5MTI0ZTE4IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiBKdW4gWmhhbyA8YmFycnlqemhhb0B0ZW5jZW50LmNvbT4KRGF0ZTogU2F0LCAy NyBEZWMgMjAyNSAxNzozMTowMyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggMDUvMTFdIGxhdmYvbXBl Z3RzZW5jOiBhZGQgQVYxIG11eGluZyBzdXBwb3J0CgpBZGQgc3VwcG9ydCBmb3IgbXV4aW5nIEFW MSB2aWRlbyBpbnRvIE1QRUctMiBUcmFuc3BvcnQgU3RyZWFtcyBhcyBkZWZpbmVkCmluIHRoZSAi QVYxIENvZGVjIGluIE1QRUctMiBUUyIgc3BlY2lmaWNhdGlvbi4KCkl0IGF1dG9tYXRpY2FsbHkg aW5zZXJ0cyB0aGUgYXYxX3RzIGJpdHN0cmVhbSBmaWx0ZXIgdG8gY29udmVydCB0aGUKaW50ZXJu YWwgTG93IE92ZXJoZWFkIGZvcm1hdCB0byB0aGUgQW5uZXggQiBmb3JtYXQgcmVxdWlyZWQgYnkg dGhlCk1QRUctVFMgc3RhbmRhcmQuCgpTaWduZWQtb2ZmLWJ5OiBKdW4gWmhhbyA8YmFycnlqemhh b0B0ZW5jZW50LmNvbT4KLS0tCiBsaWJhdmZvcm1hdC9tcGVndHNlbmMuYyB8IDEzMiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiAxIGZpbGUgY2hhbmdlZCwgMTMwIGlu c2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbXBl Z3RzZW5jLmMgYi9saWJhdmZvcm1hdC9tcGVndHNlbmMuYwppbmRleCBlYTdjNjA2NWEwLi4zNDk3 Yzk1NmI3IDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9tcGVndHNlbmMuYworKysgYi9saWJhdmZv cm1hdC9tcGVndHNlbmMuYwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImxpYmF2dXRpbC9t YXRoZW1hdGljcy5oIgogI2luY2x1ZGUgImxpYmF2dXRpbC9tZW0uaCIKICNpbmNsdWRlICJsaWJh dnV0aWwvb3B0LmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL3BpeGRlc2MuaCIKIAogI2luY2x1ZGUg ImxpYmF2Y29kZWMvYWMzX3BhcnNlcl9pbnRlcm5hbC5oIgogI2luY2x1ZGUgImxpYmF2Y29kZWMv Ynl0ZXN0cmVhbS5oIgpAQCAtMzc0LDYgKzM3NSw5IEBAIHN0YXRpYyBpbnQgZ2V0X2R2Yl9zdHJl YW1fdHlwZShBVkZvcm1hdENvbnRleHQgKnMsIEFWU3RyZWFtICpzdCkKICAgICBjYXNlIEFWX0NP REVDX0lEX1ZWQzoKICAgICAgICAgc3RyZWFtX3R5cGUgPSBTVFJFQU1fVFlQRV9WSURFT19WVkM7 CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVZfQ09ERUNfSURfQVYxOgorICAgICAgICBzdHJl YW1fdHlwZSA9IFNUUkVBTV9UWVBFX1BSSVZBVEVfREFUQTsKKyAgICAgICAgYnJlYWs7CiAgICAg Y2FzZSBBVl9DT0RFQ19JRF9DQVZTOgogICAgICAgICBzdHJlYW1fdHlwZSA9IFNUUkVBTV9UWVBF X1ZJREVPX0NBVlM7CiAgICAgICAgIGJyZWFrOwpAQCAtODEwLDYgKzgxNCw5OSBAQCBzdGF0aWMg aW50IG1wZWd0c193cml0ZV9wbXQoQVZGb3JtYXRDb250ZXh0ICpzLCBNcGVnVFNTZXJ2aWNlICpz ZXJ2aWNlKQogICAgICAgICAgICAgfSBlbHNlIGlmIChzdHJlYW1fdHlwZSA9PSBTVFJFQU1fVFlQ RV9WSURFT19DQVZTIHx8IHN0cmVhbV90eXBlID09IFNUUkVBTV9UWVBFX1ZJREVPX0FWUzIgfHwK ICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX3R5cGUgPT0gU1RSRUFNX1RZUEVfVklERU9f QVZTMykgewogICAgICAgICAgICAgICAgIHB1dF9yZWdpc3RyYXRpb25fZGVzY3JpcHRvcigmcSwg TUtUQUcoJ0EnLCAnVicsICdTJywgJ1YnKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGVj X2lkID09IEFWX0NPREVDX0lEX0FWMSkgeworICAgICAgICAgICAgICAgIC8qIEFWMSB1c2VzIFBS SVZBVEVfREFUQSBzdHJlYW0gdHlwZSB3aXRoICdBVjAxJyByZWdpc3RyYXRpb24gZGVzY3JpcHRv cgorICAgICAgICAgICAgICAgICAqIGFuZCBBVjEgdmlkZW8gZGVzY3JpcHRvciBwZXIgaHR0cHM6 Ly9hb21lZGlhY29kZWMuZ2l0aHViLmlvL2F2MS1tcGVnMi10cy8KKyAgICAgICAgICAgICAgICAg Ki8KKyAgICAgICAgICAgICAgICBpbnQgc2VxX3Byb2ZpbGUgPSBzdC0+Y29kZWNwYXItPnByb2Zp bGUgPj0gMCA/IHN0LT5jb2RlY3Bhci0+cHJvZmlsZSA6IDA7CisgICAgICAgICAgICAgICAgaW50 IHNlcV9sZXZlbF9pZHhfMCA9IHN0LT5jb2RlY3Bhci0+bGV2ZWwgPj0gMCA/IChzdC0+Y29kZWNw YXItPmxldmVsICYgMHgxZikgOiAxOworICAgICAgICAgICAgICAgIGludCBzZXFfdGllcl8wID0g c3QtPmNvZGVjcGFyLT5sZXZlbCA+PSAwID8gKChzdC0+Y29kZWNwYXItPmxldmVsID4+IDgpICYg MHgwMSkgOiAwOworICAgICAgICAgICAgICAgIGludCBoaWdoX2JpdGRlcHRoID0gMCwgdHdlbHZl X2JpdCA9IDAsIG1vbm9jaHJvbWUgPSAwOworICAgICAgICAgICAgICAgIGludCBjaHJvbWFfc3Vi c2FtcGxpbmdfeCA9IDEsIGNocm9tYV9zdWJzYW1wbGluZ195ID0gMTsKKyAgICAgICAgICAgICAg ICBpbnQgY2hyb21hX3NhbXBsZV9wb3NpdGlvbiA9IDA7CisgICAgICAgICAgICAgICAgaW50IGhk cl93Y2dfaWRjID0gMDsKKworICAgICAgICAgICAgICAgIC8qIERlcml2ZSBoaWdoX2JpdGRlcHRo IGFuZCB0d2VsdmVfYml0IGZyb20gYml0c19wZXJfY29kZWRfc2FtcGxlICovCisgICAgICAgICAg ICAgICAgaWYgKHN0LT5jb2RlY3Bhci0+Yml0c19wZXJfY29kZWRfc2FtcGxlID09IDEwKSB7Cisg ICAgICAgICAgICAgICAgICAgIGhpZ2hfYml0ZGVwdGggPSAxOworICAgICAgICAgICAgICAgIH0g ZWxzZSBpZiAoc3QtPmNvZGVjcGFyLT5iaXRzX3Blcl9jb2RlZF9zYW1wbGUgPT0gMTIpIHsKKyAg ICAgICAgICAgICAgICAgICAgaGlnaF9iaXRkZXB0aCA9IDE7CisgICAgICAgICAgICAgICAgICAg IHR3ZWx2ZV9iaXQgPSAxOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8q IERlcml2ZSBjaHJvbWEgc3Vic2FtcGxpbmcgZnJvbSBwaXhlbCBmb3JtYXQgKi8KKyAgICAgICAg ICAgICAgICBpZiAoc3QtPmNvZGVjcGFyLT5mb3JtYXQgIT0gQVZfUElYX0ZNVF9OT05FKSB7Cisg ICAgICAgICAgICAgICAgICAgIGNvbnN0IEFWUGl4Rm10RGVzY3JpcHRvciAqZGVzYyA9IGF2X3Bp eF9mbXRfZGVzY19nZXQoc3QtPmNvZGVjcGFyLT5mb3JtYXQpOworICAgICAgICAgICAgICAgICAg ICBpZiAoZGVzYykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlc2MtPm5iX2NvbXBv bmVudHMgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbm9jaHJvbWUgPSAx OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNocm9tYV9zdWJzYW1wbGluZ194ID0gMTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaHJvbWFfc3Vic2FtcGxpbmdfeSA9IDE7Cisg ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNocm9tYV9zdWJzYW1wbGluZ194ID0gZGVzYy0+bG9nMl9jaHJvbWFfdyA/IDEgOiAwOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNocm9tYV9zdWJzYW1wbGluZ195ID0gZGVzYy0+ bG9nMl9jaHJvbWFfaCA/IDEgOiAwOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyog RGVyaXZlIGNocm9tYV9zYW1wbGVfcG9zaXRpb24gZnJvbSBjaHJvbWFfbG9jYXRpb24gKi8KKyAg ICAgICAgICAgICAgICBzd2l0Y2ggKHN0LT5jb2RlY3Bhci0+Y2hyb21hX2xvY2F0aW9uKSB7Cisg ICAgICAgICAgICAgICAgY2FzZSBBVkNIUk9NQV9MT0NfTEVGVDoKKyAgICAgICAgICAgICAgICAg ICAgY2hyb21hX3NhbXBsZV9wb3NpdGlvbiA9IDE7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgICAgICAgIGNhc2UgQVZDSFJPTUFfTE9DX1RPUExFRlQ6CisgICAgICAgICAg ICAgICAgICAgIGNocm9tYV9zYW1wbGVfcG9zaXRpb24gPSAyOworICAgICAgICAgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBj aHJvbWFfc2FtcGxlX3Bvc2l0aW9uID0gMDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyogRGVyaXZlIGhkcl93Y2dfaWRj IGZyb20gY29sb3IgcHJvcGVydGllczoKKyAgICAgICAgICAgICAgICAgKiAwID0gU0RSCisgICAg ICAgICAgICAgICAgICogMSA9IFdDRyBvbmx5IChXaWRlIENvbG9yIEdhbXV0IHdpdGhvdXQgSERS KQorICAgICAgICAgICAgICAgICAqIDIgPSBIRFIgYW5kIFdDRyAoYm90aCBIRFIgdHJhbnNmZXIg YW5kIHdpZGUgZ2FtdXQpCisgICAgICAgICAgICAgICAgICogMyA9IE5vIGluZGljYXRpb24KKyAg ICAgICAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAqIEhEUiBpcyBpbmRpY2F0ZWQgYnkg UFEgKFNNUFRFIFNUIDIwODQpIG9yIEhMRyAoQVJJQiBTVEQtQjY3KSB0cmFuc2Zlci4KKyAgICAg ICAgICAgICAgICAgKiBXQ0cgaXMgaW5kaWNhdGVkIGJ5IEJULjIwMjAgY29sb3IgcHJpbWFyaWVz LgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICAgICAgaW50IGlzX2hkciA9IChzdC0+Y29kZWNwYXItPmNvbG9yX3RyYyA9PSBBVkNPTF9UUkNf U01QVEUyMDg0IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3QtPmNvZGVj cGFyLT5jb2xvcl90cmMgPT0gQVZDT0xfVFJDX0FSSUJfU1REX0I2Nyk7CisgICAgICAgICAgICAg ICAgICAgIGludCBpc193Y2cgPSAoc3QtPmNvZGVjcGFyLT5jb2xvcl9wcmltYXJpZXMgPT0gQVZD T0xfUFJJX0JUMjAyMCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzX2hkciAmJiBpc193 Y2cpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhkcl93Y2dfaWRjID0gMjsgIC8qIEhEUiBh bmQgV0NHICovCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNfaGRyKSB7CisgICAg ICAgICAgICAgICAgICAgICAgICAvKiBIRFIgd2l0aG91dCBXQ0cgcHJpbWFyaWVzIC0gc3RpbGwg c2lnbmFsIGFzIEhEUitXQ0cgc2luY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIEhEUiBj b250ZW50IHR5cGljYWxseSBpbXBsaWVzIHdpZGUgZ2FtdXQgZXZlbiBpZiBub3QgZXhwbGljaXRs eQorICAgICAgICAgICAgICAgICAgICAgICAgICogdGFnZ2VkIHdpdGggQlQuMjAyMCBwcmltYXJp ZXMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGhkcl93Y2dfaWRjID0gMjsKKyAgICAgICAg ICAgICAgICAgICAgfSBlbHNlIGlmIChpc193Y2cpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg IGhkcl93Y2dfaWRjID0gMTsgIC8qIFdDRyBvbmx5IChTRFIgd2l0aCB3aWRlIGdhbXV0KSAqLwor ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaGRy X3djZ19pZGMgPSAwOyAgLyogU0RSICovCisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAg ICAgICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0RFQlVHLCAiQVYxIHN0cmVhbSAlZDogY29s b3JfdHJjPSVkLCBjb2xvcl9wcmltYXJpZXM9JWQsICIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICJpc19oZHI9JWQsIGlzX3djZz0lZCwgaGRyX3djZ19pZGM9JWRcbiIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBpLCBzdC0+Y29kZWNwYXItPmNvbG9yX3RyYywgc3QtPmNvZGVjcGFy LT5jb2xvcl9wcmltYXJpZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19oZHIsIGlz X3djZywgaGRyX3djZ19pZGMpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg IC8qIFJlZ2lzdHJhdGlvbiBkZXNjcmlwdG9yICdBVjAxJyAtIG11c3QgY29tZSBmaXJzdCAqLwor ICAgICAgICAgICAgICAgIHB1dF9yZWdpc3RyYXRpb25fZGVzY3JpcHRvcigmcSwgTUtUQUcoJ0En LCAnVicsICcwJywgJzEnKSk7CisKKyAgICAgICAgICAgICAgICAvKiBBVjEgdmlkZW8gZGVzY3Jp cHRvciAqLworICAgICAgICAgICAgICAgICpxKysgPSBBVjFfVklERU9fREVTQ1JJUFRPUjsgICAg IC8qIGRlc2NyaXB0b3JfdGFnICovCisgICAgICAgICAgICAgICAgKnErKyA9IDQ7ICAgICAgICAg ICAgICAgICAgICAgICAgLyogZGVzY3JpcHRvcl9sZW5ndGggKi8KKyAgICAgICAgICAgICAgICAq cSsrID0gMHg4MTsgICAgICAgICAgICAgICAgICAgICAvKiBtYXJrZXIoMSkgfCB2ZXJzaW9uKDcp ID0gMSAqLworICAgICAgICAgICAgICAgICpxKysgPSAoc2VxX3Byb2ZpbGUgPDwgNSkgfCAoc2Vx X2xldmVsX2lkeF8wICYgMHgxZik7CisgICAgICAgICAgICAgICAgKnErKyA9IChzZXFfdGllcl8w IDw8IDcpIHwgKGhpZ2hfYml0ZGVwdGggPDwgNikgfCAodHdlbHZlX2JpdCA8PCA1KSB8CisgICAg ICAgICAgICAgICAgICAgICAgIChtb25vY2hyb21lIDw8IDQpIHwgKGNocm9tYV9zdWJzYW1wbGlu Z194IDw8IDMpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgKGNocm9tYV9zdWJzYW1wbGluZ195 IDw8IDIpIHwgKGNocm9tYV9zYW1wbGVfcG9zaXRpb24gJiAweDAzKTsKKyAgICAgICAgICAgICAg ICAqcSsrID0gKGhkcl93Y2dfaWRjIDw8IDYpOyAgICAgICAvKiBoZHJfd2NnX2lkYygyKSB8IHJl c2VydmVkKDEpPTAgfCBpbml0aWFsX3ByZXNlbnRhdGlvbl9kZWxheV9wcmVzZW50KDEpPTAgfCBy ZXNlcnZlZCg0KT0wICovCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAg ICAgY2FzZSBBVk1FRElBX1RZUEVfREFUQToKQEAgLTE0NTMsNiArMTU1MCw4IEBAIHN0YXRpYyBp bnQgZ2V0X3Blc19zdHJlYW1faWQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlN0cmVhbSAqc3QsIGlu dCBzdHJlYW1faWQsIGluCiAgICAgaWYgKHN0LT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1F RElBX1RZUEVfVklERU8pIHsKICAgICAgICAgaWYgKHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0g QVZfQ09ERUNfSURfRElSQUMpCiAgICAgICAgICAgICByZXR1cm4gU1RSRUFNX0lEX0VYVEVOREVE X1NUUkVBTV9JRDsKKyAgICAgICAgZWxzZSBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBB Vl9DT0RFQ19JRF9BVjEpCisgICAgICAgICAgICByZXR1cm4gU1RSRUFNX0lEX1BSSVZBVEVfU1RS RUFNXzE7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBTVFJFQU1fSURfVklERU9f U1RSRUFNXzA7CiAgICAgfSBlbHNlIGlmIChzdC0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZN RURJQV9UWVBFX0FVRElPICYmCkBAIC0xNjczLDggKzE3NzIsMTAgQEAgc3RhdGljIHZvaWQgbXBl Z3RzX3dyaXRlX3BlcyhBVkZvcm1hdENvbnRleHQgKnMsIEFWU3RyZWFtICpzdCwKICAgICAgICAg ICAgICAgICAqcSsrID0gbGVuID4+IDg7CiAgICAgICAgICAgICAgICAgKnErKyA9IGxlbjsKICAg ICAgICAgICAgICAgICB2YWwgID0gMHg4MDsKLSAgICAgICAgICAgICAgICAvKiBkYXRhIGFsaWdu bWVudCBpbmRpY2F0b3IgaXMgcmVxdWlyZWQgZm9yIHN1YnRpdGxlIGFuZCBkYXRhIHN0cmVhbXMg Ki8KLSAgICAgICAgICAgICAgICBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVE SUFfVFlQRV9TVUJUSVRMRSB8fCBzdC0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9U WVBFX0RBVEEpCisgICAgICAgICAgICAgICAgLyogZGF0YSBhbGlnbm1lbnQgaW5kaWNhdG9yIGlz IHJlcXVpcmVkIGZvciBzdWJ0aXRsZSwgZGF0YSBzdHJlYW1zLCBhbmQgQVYxICovCisgICAgICAg ICAgICAgICAgaWYgKHN0LT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfU1VC VElUTEUgfHwKKyAgICAgICAgICAgICAgICAgICAgc3QtPmNvZGVjcGFyLT5jb2RlY190eXBlID09 IEFWTUVESUFfVFlQRV9EQVRBIHx8CisgICAgICAgICAgICAgICAgICAgIHN0LT5jb2RlY3Bhci0+ Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxKQogICAgICAgICAgICAgICAgICAgICB2YWwgfD0g MHgwNDsKICAgICAgICAgICAgICAgICAqcSsrID0gdmFsOwogICAgICAgICAgICAgICAgICpxKysg PSBmbGFnczsKQEAgLTIzMjUsNiArMjQyNiwzMyBAQCBzdGF0aWMgaW50IG1wZWd0c19jaGVja19i aXRzdHJlYW0oQVZGb3JtYXRDb250ZXh0ICpzLCBBVlN0cmVhbSAqc3QsCiAgICAgICAgICAgICAg ICAgICAgICAgICAoKHN0LT5jb2RlY3Bhci0+ZXh0cmFkYXRhWzBdICYgZS0+bWFzaykgPT0gZS0+ dmFsdWUpKSkpCiAgICAgICAgICAgICByZXR1cm4gZmZfc3RyZWFtX2FkZF9iaXRzdHJlYW1fZmls dGVyKHN0LCBlLT5ic2ZfbmFtZSwgTlVMTCk7CiAgICAgfQorCisgICAgLyogQVYxIGluIE1QRUct VFMgdXNlcyBTdGFydCBDb2RlIEJhc2VkIEZvcm1hdCAoMHgwMDAwMDEgcHJlZml4IHBlciBPQlUp LgorICAgICAqIElmIGlucHV0IGlzIExvdyBPdmVyaGVhZCBCaXRzdHJlYW0gRm9ybWF0IChubyBz dGFydCBjb2RlcyksIGluc2VydCBhdjFfdHMgQlNGLgorICAgICAqLworICAgIGlmIChzdC0+Y29k ZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSkgeworICAgICAgICBpbnQgaXNfbG93 X292ZXJoZWFkID0gMDsKKworICAgICAgICAvKiBDaGVjayBleHRyYWRhdGEgZm9yIEFWMUNvZGVj Q29uZmlndXJhdGlvblJlY29yZCAoc3RhcnRzIHdpdGggMHg4MSkgKi8KKyAgICAgICAgaWYgKHN0 LT5jb2RlY3Bhci0+ZXh0cmFkYXRhX3NpemUgPj0gNCAmJiAoc3QtPmNvZGVjcGFyLT5leHRyYWRh dGFbMF0gJiAweDgwKSkgeworICAgICAgICAgICAgaXNfbG93X292ZXJoZWFkID0gMTsKKyAgICAg ICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfREVCVUcsICJTdHJlYW0gJWQ6IEFWMUNvZGVjQ29uZmln dXJhdGlvblJlY29yZCBmb3VuZCBpbiBleHRyYWRhdGEsIGFzc3VtaW5nIExvdyBPdmVyaGVhZFxu Iiwgc3QtPmluZGV4KTsKKyAgICAgICAgfSBlbHNlIGlmIChwa3QtPnNpemUgPj0gNCkgeworICAg ICAgICAgICAgIC8qIENoZWNrIGlmIGRhdGEgc3RhcnRzIHdpdGggc3RhcnQgY29kZSAweDAwMDAw MSAqLworICAgICAgICAgICAgaWYgKEFWX1JCMjQocGt0LT5kYXRhKSAhPSAweDAwMDAwMSkgewor ICAgICAgICAgICAgICAgIGlzX2xvd19vdmVyaGVhZCA9IDE7CisgICAgICAgICAgICAgICAgYXZf bG9nKHMsIEFWX0xPR19ERUJVRywgIlN0cmVhbSAlZDogTm8gc3RhcnQgY29kZSBmb3VuZCBpbiBw YWNrZXQsIGFzc3VtaW5nIExvdyBPdmVyaGVhZFxuIiwgc3QtPmluZGV4KTsKKyAgICAgICAgICAg IH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChpc19sb3dfb3ZlcmhlYWQpIHsKKyAgICAgICAg ICAgIGF2X2xvZyhzLCBBVl9MT0dfSU5GTywgIkF1dG8taW5zZXJ0aW5nIGF2MV90cyBCU0YgZm9y IHN0cmVhbSAlZFxuIiwgc3QtPmluZGV4KTsKKyAgICAgICAgICAgIHJldHVybiBmZl9zdHJlYW1f YWRkX2JpdHN0cmVhbV9maWx0ZXIoc3QsICJhdjFfdHMiLCAibW9kZT10b190cyIpOworICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfREVCVUcsICJTdHJlYW0g JWQ6IFN0YXJ0IGNvZGUgZm91bmQgb3IgQW5uZXggQiBpbXBsaWVkLCBubyBCU0YgbmVlZGVkXG4i LCBzdC0+aW5kZXgpOworICAgICAgICB9CisgICAgfQorCiAgICAgcmV0dXJuIDE7CiB9CiAKLS0g CjIuNDkuMQoKCkZyb20gNGRlNjMxZThkZGM5YTQzMzkzNTcwYTc0NjVmYjk5ZDUwM2M0ODVkMCBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSnVuIFpoYW8gPGJhcnJ5anpoYW9AdGVuY2Vu dC5jb20+CkRhdGU6IFNhdCwgMjcgRGVjIDIwMjUgMTc6MzE6MTUgKzA4MDAKU3ViamVjdDogW1BB VENIIDA2LzExXSBkb2M6IHVwZGF0ZSBDaGFuZ2Vsb2cgZm9yIEFWMSBpbiBNUEVHLVRTCgotLS0K IENoYW5nZWxvZyB8IDEgKwogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCgpkaWZmIC0t Z2l0IGEvQ2hhbmdlbG9nIGIvQ2hhbmdlbG9nCmluZGV4IDU2OWM3ZmZhZDguLjUyNjY3ZGMxMTgg MTAwNjQ0Ci0tLSBhL0NoYW5nZWxvZworKysgYi9DaGFuZ2Vsb2cKQEAgLTE4LDYgKzE4LDcgQEAg dmVyc2lvbiA8bmV4dD46CiAtIEpQRUctWFMgcGFyc2VyCiAtIEpQRUctWFMgZGVjb2RlciBhbmQg ZW5jb2RlciB0aHJvdWdoIGxpYnN2dGpwZWd4cwogLSBKUEVHLVhTIHJhdyBiaXRzdHJlYW0gbXV4 ZXIgYW5kIGRlbXV4ZXIKKy0gQVYxIGluIE1QRUctVFMgbXV4ZXIgYW5kIGRlbXV4ZXIKIAogCiB2 ZXJzaW9uIDguMDoKLS0gCjIuNDkuMQoKCkZyb20gMjkxMWNlOTZhMzU3MTMyNzNiN2Y1YjBhMGNh ZDgzMWY1MDljMGQ4YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSnVuIFpoYW8gPGJh cnJ5anpoYW9AdGVuY2VudC5jb20+CkRhdGU6IFNhdCwgMjcgRGVjIDIwMjUgMTc6MTU6MDcgKzA4 MDAKU3ViamVjdDogW1BBVENIIDA3LzExXSBkb2MvbXV4ZXJzOiBhZGQgQVYxIE1QRUctVFMgZG9j dW1lbnRhdGlvbgoKQWRkIGRvY3VtZW50YXRpb24gZm9yIHRoZSBBVjEgbXV4aW5nIHN1cHBvcnQg aW4gTVBFRy1UUy4KClNpZ25lZC1vZmYtYnk6IEp1biBaaGFvIDxiYXJyeWp6aGFvQHRlbmNlbnQu Y29tPgotLS0KIGRvYy9tdXhlcnMudGV4aSB8IDIwICsrKysrKysrKysrKysrKysrKysrCiAxIGZp bGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RvYy9tdXhlcnMudGV4 aSBiL2RvYy9tdXhlcnMudGV4aQppbmRleCBhMmUzNTYxODdhLi40OWM4MzI0ZjFiIDEwMDY0NAot LS0gYS9kb2MvbXV4ZXJzLnRleGkKKysrIGIvZG9jL211eGVycy50ZXhpCkBAIC0zMDU2LDYgKzMw NTYsMjYgQEAgYW5kIEBjb2Rle3NlcnZpY2VfbmFtZX0uIElmIHRoZXkgYXJlIG5vdCBzZXQgdGhl IGRlZmF1bHQgZm9yCiBAY29kZXtzZXJ2aWNlX3Byb3ZpZGVyfSBpcyBAc2FtcHtGRm1wZWd9IGFu ZCB0aGUgZGVmYXVsdCBmb3IKIEBjb2Rle3NlcnZpY2VfbmFtZX0gaXMgQHNhbXB7U2VydmljZTAx fS4KIAorQHN1YnNlY3Rpb24gQVYxIFN0cmVhbXMKKworQVYxIHN0cmVhbXMgYXJlIGF1dG9tYXRp Y2FsbHkgY29udmVydGVkIGZyb20gbG93LW92ZXJoZWFkIGJpdHN0cmVhbSBmb3JtYXQKKyhhcyB1 c2VkIGluIE1QNC9XZWJNIGNvbnRhaW5lcnMpIHRvIHN0YXJ0IGNvZGUgYmFzZWQgZm9ybWF0IChB bm5leCBCKSBhcworcmVxdWlyZWQgYnkgdGhlIE1QRUctVFMgc3BlY2lmaWNhdGlvbi4gVGhlIGNv bnZlcnNpb24gaXMgaGFuZGxlZCBpbnRlcm5hbGx5CitieSB0aGUgQGNvZGV7YXYxX3RzfSBiaXRz dHJlYW0gZmlsdGVyIGFuZCBpcyB0cmFuc3BhcmVudCB0byB0aGUgdXNlci4KKworVGhlIEhEUi9X Q0cgaW5kaWNhdG9yIGluIHRoZSBBVjEgdmlkZW8gZGVzY3JpcHRvciBpcyBhdXRvbWF0aWNhbGx5 IGRlcml2ZWQKK2Zyb20gdGhlIHN0cmVhbSdzIGNvbG9yIHBhcmFtZXRlcnMuIFRoZSBAY29kZXto ZHJfd2NnX2lkY30gZmllbGQgaW4gdGhlIFBNVAorQVYxIGRlc2NyaXB0b3IgaXMgc2V0IGFjY29y ZGluZyB0byB0cmFuc2ZlciBjaGFyYWN0ZXJpc3RpY3MgYW5kIGNvbG9yCitwcmltYXJpZXM6CitA dGFibGUgQHNhbXAKK0BpdGVtIDAgPSBTRFIgKFN0YW5kYXJkIER5bmFtaWMgUmFuZ2UpCitObyBI RFIgb3IgV2lkZSBDb2xvciBHYW11dCB0cmFuc2ZlciBmdW5jdGlvbnMgb3IgcHJpbWFyaWVzIGRl dGVjdGVkLgorQGl0ZW0gMSA9IFdDRyAoV2lkZSBDb2xvciBHYW11dCkKK1dpZGUgQ29sb3IgR2Ft dXQgcHJpbWFyaWVzIChlLmcuLCBCVC4yMDIwKSBkZXRlY3RlZCwgYnV0IG5vIEhEUiB0cmFuc2Zl ciBmdW5jdGlvbi4KK0BpdGVtIDIgPSBIRFIrV0NHCitCb3RoIEhEUiB0cmFuc2ZlciBmdW5jdGlv biAoUFEgb3IgSExHKSBhbmQgV2lkZSBDb2xvciBHYW11dCBwcmltYXJpZXMgZGV0ZWN0ZWQuCitA ZW5kIHRhYmxlCisKIEBzdWJzZWN0aW9uIE9wdGlvbnMKIAogVGhlIG11eGVyIG9wdGlvbnMgYXJl OgotLSAKMi40OS4xCgoKRnJvbSBmMmRkNGQ1MGM0NzM5ZThhZmFjYjk1NTBjYmYwOWM1MDhlM2Y1 ODJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKdW4gWmhhbyA8YmFycnlqemhhb0B0 ZW5jZW50LmNvbT4KRGF0ZTogU2F0LCAyNyBEZWMgMjAyNSAxNDoyMDoyMyArMDgwMApTdWJqZWN0 OiBbUEFUQ0ggMDgvMTFdIGxhdmYvbW92ZW5jOiB1c2UgYXYxX3RzIGJzZgoKVXNlIHRoZSBhdjFf dHMgYml0c3RyZWFtIGZpbHRlciB0byBoYW5kbGUgQVYxIHN0cmVhbXMsIGVuc3VyaW5nIHByb3Bl cgpjb252ZXJzaW9uIGZyb20gQW5uZXggQiB0byB0aGUgZm9ybWF0IHJlcXVpcmVkIGJ5IElTT0JN RkYgKE1QNC9NT1YpIHdoZW4KbmVjZXNzYXJ5LgoKSVNPQk1GRiByZXF1aXJlcyB0aGUgTG93IE92 ZXJoZWFkIGZvcm1hdCAoYXYxYykuIElmIHRoZSBpbnB1dCBpcyBpbgpBbm5leCBCIChlLmcuIGZy b20gTVBFRy1UUyksIHRoaXMgZW5zdXJlcyBpdCBpcyBjb3JyZWN0bHkgY29udmVydGVkLgoKU2ln bmVkLW9mZi1ieTogSnVuIFpoYW8gPGJhcnJ5anpoYW9AdGVuY2VudC5jb20+Ci0tLQogbGliYXZm b3JtYXQvbW92ZW5jLmMgfCA3ICsrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMo KykKCmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9tb3ZlbmMuYyBiL2xpYmF2Zm9ybWF0L21vdmVu Yy5jCmluZGV4IDhkOGFjZDJhZmYuLmQ4MWZjNGY1NWMgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0 L21vdmVuYy5jCisrKyBiL2xpYmF2Zm9ybWF0L21vdmVuYy5jCkBAIC04Nzk5LDYgKzg3OTksMTMg QEAgc3RhdGljIGludCBtb3ZfY2hlY2tfYml0c3RyZWFtKEFWRm9ybWF0Q29udGV4dCAqcywgQVZT dHJlYW0gKnN0LAogICAgICAgICAgICAgcmV0ID0gZmZfc3RyZWFtX2FkZF9iaXRzdHJlYW1fZmls dGVyKHN0LCAiYWFjX2FkdHN0b2FzYyIsIE5VTEwpOwogICAgIH0gZWxzZSBpZiAoc3QtPmNvZGVj cGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDkpIHsKICAgICAgICAgcmV0ID0gZmZfc3Ry ZWFtX2FkZF9iaXRzdHJlYW1fZmlsdGVyKHN0LCAidnA5X3N1cGVyZnJhbWUiLCBOVUxMKTsKKyAg ICB9IGVsc2UgaWYgKHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxKSB7 CisgICAgICAgIC8qIEFWMSBpbiBNUDQvTU9WIHVzZXMgTG93IE92ZXJoZWFkIEJpdHN0cmVhbSBG b3JtYXQgKG5vIHN0YXJ0IGNvZGVzKS4KKyAgICAgICAgICogSWYgaW5wdXQgaXMgU3RhcnQgQ29k ZSBCYXNlZCBGb3JtYXQgKGZyb20gTVBFRy1UUyksIGNvbnZlcnQgaXQuCisgICAgICAgICAqLwor ICAgICAgICBpZiAocGt0LT5zaXplID49IDQgJiYgQVZfUkIyNChwa3QtPmRhdGEpID09IDB4MDAw MDAxKSB7CisgICAgICAgICAgICByZXQgPSBmZl9zdHJlYW1fYWRkX2JpdHN0cmVhbV9maWx0ZXIo c3QsICJhdjFfdHMiLCAibW9kZT1mcm9tX3RzIik7CisgICAgICAgIH0KICAgICB9CiAKICAgICBy ZXR1cm4gcmV0OwotLSAKMi40OS4xCgoKRnJvbSAxYjk1YzFmYWMxMGUzZTNlODI1NzRjYmQzMGFm NmNjOTc1MjJmYjQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKdW4gWmhhbyA8YmFy cnlqemhhb0B0ZW5jZW50LmNvbT4KRGF0ZTogU2F0LCAyNyBEZWMgMjAyNSAxNDoyMDozMCArMDgw MApTdWJqZWN0OiBbUEFUQ0ggMDkvMTFdIGxhdmYvZmx2ZW5jOiB1c2UgYXYxX3RzIGJzZgoKVXNl IHRoZSBhdjFfdHMgYml0c3RyZWFtIGZpbHRlciBmb3IgQVYxIGluIEZMVi9SVE1QIHRvIGVuc3Vy ZSBjb21wbGlhbmNlCndpdGggdGhlIEVuaGFuY2VkIFJUTVAvRkxWIHNwZWNpZmljYXRpb24gZm9y IEFWMSBlbmNhcHN1bGF0aW9uLgoKU2ltaWxhciB0byBJU09CTUZGLCBFbmhhbmNlZCBSVE1QIGV4 cGVjdHMgdGhlIHBhY2tldGl6ZWQgKExvdyBPdmVyaGVhZCkKZm9ybWF0LiBUaGlzIGNoYW5nZSBl bnN1cmVzIGFueSBBbm5leCBCIGlucHV0IGlzIGNvbnZlcnRlZC4KClNpZ25lZC1vZmYtYnk6IEp1 biBaaGFvIDxiYXJyeWp6aGFvQHRlbmNlbnQuY29tPgotLS0KIGxpYmF2Zm9ybWF0L2ZsdmVuYy5j IHwgNyArKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0 IGEvbGliYXZmb3JtYXQvZmx2ZW5jLmMgYi9saWJhdmZvcm1hdC9mbHZlbmMuYwppbmRleCBhMDUw M2MxNzk5Li5kMjIxZWVkMzJjIDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9mbHZlbmMuYworKysg Yi9saWJhdmZvcm1hdC9mbHZlbmMuYwpAQCAtMTQ3Myw2ICsxNDczLDEzIEBAIHN0YXRpYyBpbnQg Zmx2X2NoZWNrX2JpdHN0cmVhbShBVkZvcm1hdENvbnRleHQgKnMsIEFWU3RyZWFtICpzdCwKICAg ICAgICAgaWYgKHBrdC0+c2l6ZSA+IDIgJiYgKEFWX1JCMTYocGt0LT5kYXRhKSAmIDB4ZmZmMCkg PT0gMHhmZmYwKQogICAgICAgICAgICAgcmV0dXJuIGZmX3N0cmVhbV9hZGRfYml0c3RyZWFtX2Zp bHRlcihzdCwgImFhY19hZHRzdG9hc2MiLCBOVUxMKTsKICAgICB9CisgICAgaWYgKHN0LT5jb2Rl Y3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxICYmIHBrdC0+c2l6ZSA+PSA0KSB7Cisg ICAgICAgIC8qIEFWMSBpbiBGTFYgdXNlcyBMb3cgT3ZlcmhlYWQgQml0c3RyZWFtIEZvcm1hdCAo bm8gc3RhcnQgY29kZXMpLgorICAgICAgICAgKiBJZiBpbnB1dCBpcyBTdGFydCBDb2RlIEJhc2Vk IEZvcm1hdCAoMHgwMDAwMDEgcHJlZml4IHBlciBPQlUpLAorICAgICAgICAgKiBpbnNlcnQgYXYx X3RzIEJTRiB0byBjb252ZXJ0IGl0LiAqLworICAgICAgICBpZiAoQVZfUkIyNChwa3QtPmRhdGEp ID09IDB4MDAwMDAxKQorICAgICAgICAgICAgcmV0dXJuIGZmX3N0cmVhbV9hZGRfYml0c3RyZWFt X2ZpbHRlcihzdCwgImF2MV90cyIsICJtb2RlPWZyb21fdHMiKTsKKyAgICB9CiAgICAgaWYgKCFz dC0+Y29kZWNwYXItPmV4dHJhZGF0YV9zaXplICYmCiAgICAgICAgICAgICAoc3QtPmNvZGVjcGFy LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0IHx8CiAgICAgICAgICAgICAgc3QtPmNvZGVj cGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDIHx8Ci0tIAoyLjQ5LjEKCgpGcm9tIDky MGRmZjE0OTE2OTVmNzdmNjM0OWMwNjRlZmMwODhkNDNlZjY2NzkgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IEp1biBaaGFvIDxiYXJyeWp6aGFvQHRlbmNlbnQuY29tPgpEYXRlOiBTYXQs IDI3IERlYyAyMDI1IDE0OjIwOjM3ICswODAwClN1YmplY3Q6IFtQQVRDSCAxMC8xMV0gdGVzdHM6 IGFkZCBhdjFfdHMgYml0c3RyZWFtIGZpbHRlciBBUEkgdGVzdAoKQWRkIGEgdGVzdCBjb3Zlcmlu ZyB0aGUgQVBJIHVzYWdlIG9mIHRoZSBhdjFfdHMgYml0c3RyZWFtIGZpbHRlciwKdmVyaWZ5aW5n IG1lbW9yeSBoYW5kbGluZywgYmFzaWMgY29udmVyc2lvbiBsb2dpYywgYW5kIHJvdW5kLXRyaXAK Y29uc2lzdGVuY3kgYmV0d2VlbiBBbm5leCBCIGFuZCBMb3cgT3ZlcmhlYWQgZm9ybWF0cy4KClNp Z25lZC1vZmYtYnk6IEp1biBaaGFvIDxiYXJyeWp6aGFvQHRlbmNlbnQuY29tPgotLS0KIHRlc3Rz L2FwaS9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDIgKy0KIHRlc3RzL2FwaS9hcGktYXYxLXRz LWJzZi10ZXN0LmMgfCA0ODAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRlc3Rz L2ZhdGUvYXBpLm1hayAgICAgICAgICAgICAgfCAgIDUgKwogMyBmaWxlcyBjaGFuZ2VkLCA0ODYg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2Fw aS9hcGktYXYxLXRzLWJzZi10ZXN0LmMKCmRpZmYgLS1naXQgYS90ZXN0cy9hcGkvTWFrZWZpbGUg Yi90ZXN0cy9hcGkvTWFrZWZpbGUKaW5kZXggODk5YWViMWY1NC4uZTViNzM4ZjMwZSAxMDA2NDQK LS0tIGEvdGVzdHMvYXBpL01ha2VmaWxlCisrKyBiL3Rlc3RzL2FwaS9NYWtlZmlsZQpAQCAtMSw3 ICsxLDcgQEAKIEFQSVRFU1RQUk9HUy0kKGNhbGwgRU5DREVDLCBGTEFDLCBGTEFDKSArPSBhcGkt ZmxhYwogQVBJVEVTVFBST0dTLSQoY2FsbCBERU1ERUMsIEgyNjQsIEgyNjQpICs9IGFwaS1oMjY0 CiBBUElURVNUUFJPR1MtJChjYWxsIERFTURFQywgSDI2NCwgSDI2NCkgKz0gYXBpLWgyNjQtc2xp Y2UKLUFQSVRFU1RQUk9HUy15ZXMgKz0gYXBpLXNlZWsgYXBpLWR1bXAtc3RyZWFtLW1ldGEKK0FQ SVRFU1RQUk9HUy15ZXMgKz0gYXBpLXNlZWsgYXBpLWR1bXAtc3RyZWFtLW1ldGEgYXBpLWF2MS10 cy1ic2YKIEFQSVRFU1RQUk9HUy0kKGNhbGwgREVNREVDLCBIMjYzLCBIMjYzKSArPSBhcGktYmFu ZAogQVBJVEVTVFBST0dTLSQoSEFWRV9USFJFQURTKSArPSBhcGktdGhyZWFkbWVzc2FnZQogQVBJ VEVTVFBST0dTICs9ICQoQVBJVEVTVFBST0dTLXllcykKZGlmZiAtLWdpdCBhL3Rlc3RzL2FwaS9h cGktYXYxLXRzLWJzZi10ZXN0LmMgYi90ZXN0cy9hcGkvYXBpLWF2MS10cy1ic2YtdGVzdC5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjNkMWZlMmNlYzMKLS0tIC9kZXYv bnVsbAorKysgYi90ZXN0cy9hcGkvYXBpLWF2MS10cy1ic2YtdGVzdC5jCkBAIC0wLDAgKzEsNDgw IEBACisvKgorICogVGVzdCBmb3IgYXYxX3RzIGJpdHN0cmVhbSBmaWx0ZXIgbWVtb3J5IGhhbmRs aW5nCisgKgorICogVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIGF2MV90cyBCU0YgY29ycmVj dGx5IGhhbmRsZXMgbWVtb3J5CisgKiB3aGVuIGNvbnZlcnRpbmcgYmV0d2VlbiBMb3cgT3Zlcmhl YWQgYW5kIFN0YXJ0IENvZGUgZm9ybWF0cy4KKyAqCisgKiBCdWcgYmVpbmcgdGVzdGVkOiBJbiBh djFfZnJvbV90c19maWx0ZXIsIHRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbgorICogc3RvcmVk IGEgcG9pbnRlciB0byBwa3QtPmRhdGEgaW4gaW5fZGF0YSwgdGhlbiBjYWxsZWQgYXZfbmV3X3Bh Y2tldCgpCisgKiB3aGljaCBmcmVlcyBwa3QgYW5kIGFsbG9jYXRlcyBuZXcgbWVtb3J5LCBsZWF2 aW5nIGluX2RhdGEgYXMgYQorICogZGFuZ2xpbmcgcG9pbnRlci4KKyAqLworCisjaW5jbHVkZSA8 c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2lu Y2x1ZGUgImxpYmF2Y29kZWMvYXZjb2RlYy5oIgorI2luY2x1ZGUgImxpYmF2Y29kZWMvYnNmLmgi CisjaW5jbHVkZSAibGliYXZ1dGlsL21lbS5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9vcHQuaCIK KworLyogTWluaW1hbCBBVjEgT0JVIGhlYWRlciBmb3IgdGVzdGluZzoKKyAqIC0gT0JVIHR5cGUg PSAxIChzZXF1ZW5jZSBoZWFkZXIpCisgKiAtIG9idV9leHRlbnNpb25fZmxhZyA9IDAKKyAqIC0g b2J1X2hhc19zaXplX2ZpZWxkID0gMQorICogLSBvYnVfc2l6ZSA9IDIgKExFQjEyOCBlbmNvZGVk KQorICogLSAyIGJ5dGVzIG9mIGR1bW15IHBheWxvYWQKKyAqLworc3RhdGljIGNvbnN0IHVpbnQ4 X3QgbG93X292ZXJoZWFkX29idVtdID0geworICAgIDB4MEEsICAgICAgIC8qIE9CVSBoZWFkZXI6 IHR5cGU9MSwgZXh0PTAsIGhhc19zaXplPTEgKi8KKyAgICAweDAyLCAgICAgICAvKiBPQlUgc2l6 ZSAoTEVCMTI4KTogMiBieXRlcyAqLworICAgIDB4MDAsIDB4MDAgIC8qIER1bW15IHBheWxvYWQg Ki8KK307CisKKy8qIFNhbWUgT0JVIGluIFN0YXJ0IENvZGUgZm9ybWF0IChBbm5leCBCKToKKyAq IC0gMy1ieXRlIHN0YXJ0IGNvZGUgMHgwMDAwMDEKKyAqIC0gU2FtZSBPQlUgZGF0YQorICovCitz dGF0aWMgY29uc3QgdWludDhfdCBzdGFydF9jb2RlX29idVtdID0geworICAgIDB4MDAsIDB4MDAs IDB4MDEsICAvKiBTdGFydCBjb2RlICovCisgICAgMHgwQSwgICAgICAgICAgICAgIC8qIE9CVSBo ZWFkZXIgKi8KKyAgICAweDAyLCAgICAgICAgICAgICAgLyogT0JVIHNpemUgKi8KKyAgICAweDAw LCAweDAwICAgICAgICAgLyogRHVtbXkgcGF5bG9hZCAqLworfTsKKworLyogVGVzdCBPQlUgd2l0 aCBkYXRhIHRoYXQgY291bGQgdHJpZ2dlciBlbXVsYXRpb24gcHJldmVudGlvbjoKKyAqIENvbnRh aW5zIDB4MDAgMHgwMCAweDAxIHBhdHRlcm4gdGhhdCBuZWVkcyBlc2NhcGluZworICogSW5jbHVk ZXMgVGVtcG9yYWwgRGVsaW1pdGVyIGF0IHN0YXJ0IHRvIHByZXZlbnQgYXV0by1pbnNlcnRpb24K KyAqLworc3RhdGljIGNvbnN0IHVpbnQ4X3Qgb2J1X3dpdGhfZXNjYXBlX3BhdHRlcm5bXSA9IHsK KyAgICAweDEyLCAweDAwLCAgICAgICAgICAgICAgICAgICAvKiBUZW1wb3JhbCBEZWxpbWl0ZXIg T0JVICh0eXBlPTIsIHNpemU9MCkgKi8KKyAgICAweDBBLCAgICAgICAgICAgICAgICAgICAgICAg ICAvKiBPQlUgaGVhZGVyICovCisgICAgMHgwNSwgICAgICAgICAgICAgICAgICAgICAgICAgLyog T0JVIHNpemU6IDUgYnl0ZXMgKi8KKyAgICAweEFBLCAweDAwLCAweDAwLCAweDAxLCAweEJCICAv KiBQYXlsb2FkIHdpdGggMHgwMDAwMDEgcGF0dGVybiAqLworfTsKKworLyogU2FtZSBPQlUgYWZ0 ZXIgZXNjYXBpbmcgKHdpdGggZW11bGF0aW9uIHByZXZlbnRpb24gYnl0ZSAweDAzKSAqLworc3Rh dGljIGNvbnN0IHVpbnQ4X3QgZXNjYXBlZF9vYnVbXSA9IHsKKyAgICAweDAwLCAweDAwLCAweDAx LCAgICAgICAgICAgICAgICAgICAgLyogU3RhcnQgY29kZSAqLworICAgIDB4MTIsIDB4MDAsICAg ICAgICAgICAgICAgICAgICAgICAgICAvKiBUZW1wb3JhbCBEZWxpbWl0ZXIgT0JVICovCisgICAg MHgwMCwgMHgwMCwgMHgwMSwgICAgICAgICAgICAgICAgICAgIC8qIFN0YXJ0IGNvZGUgKi8KKyAg ICAweDBBLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogT0JVIGhlYWRlciAqLwor ICAgIDB4MDUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBPQlUgc2l6ZSAqLwor ICAgIDB4QUEsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDEsIDB4QkIgICAvKiBFc2NhcGVkIHBheWxv YWQgKi8KK307CisKK3N0YXRpYyBpbnQgdGVzdF90b190c19tb2RlKHZvaWQpCit7CisgICAgY29u c3QgQVZCaXRTdHJlYW1GaWx0ZXIgKmZpbHRlcjsKKyAgICBBVkJTRkNvbnRleHQgKmJzZl9jdHgg PSBOVUxMOworICAgIEFWUGFja2V0ICpwa3RfaW4gPSBOVUxMOworICAgIEFWUGFja2V0ICpwa3Rf b3V0ID0gTlVMTDsKKyAgICBpbnQgcmV0OworCisgICAgcHJpbnRmKCJUZXN0aW5nIHRvX3RzIG1v ZGUgKExvdyBPdmVyaGVhZCAtPiBTdGFydCBDb2RlKS4uLlxuIik7CisKKyAgICBmaWx0ZXIgPSBh dl9ic2ZfZ2V0X2J5X25hbWUoImF2MV90cyIpOworICAgIGlmICghZmlsdGVyKSB7CisgICAgICAg IGZwcmludGYoc3RkZXJyLCAiYXYxX3RzIEJTRiBub3QgZm91bmRcbiIpOworICAgICAgICByZXR1 cm4gLTE7CisgICAgfQorCisgICAgcmV0ID0gYXZfYnNmX2FsbG9jKGZpbHRlciwgJmJzZl9jdHgp OworICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRv IGFsbG9jYXRlIEJTRiBjb250ZXh0XG4iKTsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisK KyAgICAvKiBDb25maWd1cmUgZm9yIHRvX3RzIG1vZGUgKi8KKyAgICBhdl9vcHRfc2V0KGJzZl9j dHgtPnByaXZfZGF0YSwgIm1vZGUiLCAidG9fdHMiLCAwKTsKKworICAgIGJzZl9jdHgtPnBhcl9p bi0+Y29kZWNfaWQgPSBBVl9DT0RFQ19JRF9BVjE7CisgICAgcmV0ID0gYXZfYnNmX2luaXQoYnNm X2N0eCk7CisgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWls ZWQgdG8gaW5pdCBCU0ZcbiIpOworICAgICAgICBhdl9ic2ZfZnJlZSgmYnNmX2N0eCk7CisgICAg ICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgcGt0X2luID0gYXZfcGFja2V0X2FsbG9jKCk7 CisgICAgcGt0X291dCA9IGF2X3BhY2tldF9hbGxvYygpOworICAgIGlmICghcGt0X2luIHx8ICFw a3Rfb3V0KSB7CisgICAgICAgIHJldCA9IEFWRVJST1IoRU5PTUVNKTsKKyAgICAgICAgZ290byBj bGVhbnVwOworICAgIH0KKworICAgIC8qIENyZWF0ZSBpbnB1dCBwYWNrZXQgd2l0aCBMb3cgT3Zl cmhlYWQgZGF0YSAqLworICAgIHJldCA9IGF2X25ld19wYWNrZXQocGt0X2luLCBzaXplb2YobG93 X292ZXJoZWFkX29idSkpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICBnb3RvIGNsZWFudXA7 CisgICAgbWVtY3B5KHBrdF9pbi0+ZGF0YSwgbG93X292ZXJoZWFkX29idSwgc2l6ZW9mKGxvd19v dmVyaGVhZF9vYnUpKTsKKworICAgIC8qIFNlbmQgdG8gQlNGICovCisgICAgcmV0ID0gYXZfYnNm X3NlbmRfcGFja2V0KGJzZl9jdHgsIHBrdF9pbik7CisgICAgaWYgKHJldCA8IDApIHsKKyAgICAg ICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gc2VuZCBwYWNrZXQ6ICVkXG4iLCByZXQpOwor ICAgICAgICBnb3RvIGNsZWFudXA7CisgICAgfQorCisgICAgLyogUmVjZWl2ZSBmaWx0ZXJlZCBw YWNrZXQgKi8KKyAgICByZXQgPSBhdl9ic2ZfcmVjZWl2ZV9wYWNrZXQoYnNmX2N0eCwgcGt0X291 dCk7CisgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQg dG8gcmVjZWl2ZSBwYWNrZXQ6ICVkXG4iLCByZXQpOworICAgICAgICBnb3RvIGNsZWFudXA7Cisg ICAgfQorCisgICAgLyogVmVyaWZ5IG91dHB1dCBoYXMgc3RhcnQgY29kZSAqLworICAgIGlmIChw a3Rfb3V0LT5zaXplIDwgMyB8fAorICAgICAgICBwa3Rfb3V0LT5kYXRhWzBdICE9IDB4MDAgfHwK KyAgICAgICAgcGt0X291dC0+ZGF0YVsxXSAhPSAweDAwIHx8CisgICAgICAgIHBrdF9vdXQtPmRh dGFbMl0gIT0gMHgwMSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIk91dHB1dCBtaXNzaW5n IHN0YXJ0IGNvZGVcbiIpOworICAgICAgICByZXQgPSAtMTsKKyAgICAgICAgZ290byBjbGVhbnVw OworICAgIH0KKworICAgIHByaW50ZigiICB0b190cyBtb2RlOiBQQVNTRUQgKG91dHB1dCBzaXpl OiAlZCwgaGFzIHN0YXJ0IGNvZGUpXG4iLCBwa3Rfb3V0LT5zaXplKTsKKyAgICByZXQgPSAwOwor CitjbGVhbnVwOgorICAgIGF2X3BhY2tldF9mcmVlKCZwa3RfaW4pOworICAgIGF2X3BhY2tldF9m cmVlKCZwa3Rfb3V0KTsKKyAgICBhdl9ic2ZfZnJlZSgmYnNmX2N0eCk7CisgICAgcmV0dXJuIHJl dDsKK30KKworc3RhdGljIGludCB0ZXN0X2Zyb21fdHNfbW9kZSh2b2lkKQoreworICAgIGNvbnN0 IEFWQml0U3RyZWFtRmlsdGVyICpmaWx0ZXI7CisgICAgQVZCU0ZDb250ZXh0ICpic2ZfY3R4ID0g TlVMTDsKKyAgICBBVlBhY2tldCAqcGt0X2luID0gTlVMTDsKKyAgICBBVlBhY2tldCAqcGt0X291 dCA9IE5VTEw7CisgICAgaW50IHJldDsKKworICAgIHByaW50ZigiVGVzdGluZyBmcm9tX3RzIG1v ZGUgKFN0YXJ0IENvZGUgLT4gTG93IE92ZXJoZWFkKS4uLlxuIik7CisKKyAgICBmaWx0ZXIgPSBh dl9ic2ZfZ2V0X2J5X25hbWUoImF2MV90cyIpOworICAgIGlmICghZmlsdGVyKSB7CisgICAgICAg IGZwcmludGYoc3RkZXJyLCAiYXYxX3RzIEJTRiBub3QgZm91bmRcbiIpOworICAgICAgICByZXR1 cm4gLTE7CisgICAgfQorCisgICAgcmV0ID0gYXZfYnNmX2FsbG9jKGZpbHRlciwgJmJzZl9jdHgp OworICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRv IGFsbG9jYXRlIEJTRiBjb250ZXh0XG4iKTsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisK KyAgICAvKiBDb25maWd1cmUgZm9yIGZyb21fdHMgbW9kZSAqLworICAgIGF2X29wdF9zZXQoYnNm X2N0eC0+cHJpdl9kYXRhLCAibW9kZSIsICJmcm9tX3RzIiwgMCk7CisKKyAgICBic2ZfY3R4LT5w YXJfaW4tPmNvZGVjX2lkID0gQVZfQ09ERUNfSURfQVYxOworICAgIHJldCA9IGF2X2JzZl9pbml0 KGJzZl9jdHgpOworICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAi RmFpbGVkIHRvIGluaXQgQlNGXG4iKTsKKyAgICAgICAgYXZfYnNmX2ZyZWUoJmJzZl9jdHgpOwor ICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKworICAgIHBrdF9pbiA9IGF2X3BhY2tldF9hbGxv YygpOworICAgIHBrdF9vdXQgPSBhdl9wYWNrZXRfYWxsb2MoKTsKKyAgICBpZiAoIXBrdF9pbiB8 fCAhcGt0X291dCkgeworICAgICAgICByZXQgPSBBVkVSUk9SKEVOT01FTSk7CisgICAgICAgIGdv dG8gY2xlYW51cDsKKyAgICB9CisKKyAgICAvKiBDcmVhdGUgaW5wdXQgcGFja2V0IHdpdGggU3Rh cnQgQ29kZSBkYXRhICovCisgICAgcmV0ID0gYXZfbmV3X3BhY2tldChwa3RfaW4sIHNpemVvZihz dGFydF9jb2RlX29idSkpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICBnb3RvIGNsZWFudXA7 CisgICAgbWVtY3B5KHBrdF9pbi0+ZGF0YSwgc3RhcnRfY29kZV9vYnUsIHNpemVvZihzdGFydF9j b2RlX29idSkpOworCisgICAgLyogU2VuZCB0byBCU0YgKi8KKyAgICByZXQgPSBhdl9ic2Zfc2Vu ZF9wYWNrZXQoYnNmX2N0eCwgcGt0X2luKTsKKyAgICBpZiAocmV0IDwgMCkgeworICAgICAgICBm cHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBzZW5kIHBhY2tldDogJWRcbiIsIHJldCk7CisgICAg ICAgIGdvdG8gY2xlYW51cDsKKyAgICB9CisKKyAgICAvKiBSZWNlaXZlIGZpbHRlcmVkIHBhY2tl dCAtIFRISVMgSVMgV0hFUkUgVEhFIEJVRyBXT1VMRCBNQU5JRkVTVAorICAgICAqIElmIGluX2Rh dGEgYmVjb21lcyBhIGRhbmdsaW5nIHBvaW50ZXIgYWZ0ZXIgYXZfbmV3X3BhY2tldCgpLAorICAg ICAqIHRoaXMgd2lsbCBlaXRoZXIgY3Jhc2ggb3IgcHJvZHVjZSBnYXJiYWdlIG91dHB1dC4KKyAg ICAgKi8KKyAgICByZXQgPSBhdl9ic2ZfcmVjZWl2ZV9wYWNrZXQoYnNmX2N0eCwgcGt0X291dCk7 CisgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8g cmVjZWl2ZSBwYWNrZXQ6ICVkXG4iLCByZXQpOworICAgICAgICBnb3RvIGNsZWFudXA7CisgICAg fQorCisgICAgLyogVmVyaWZ5IG91dHB1dCBtYXRjaGVzIGV4cGVjdGVkIExvdyBPdmVyaGVhZCBm b3JtYXQgKi8KKyAgICBpZiAocGt0X291dC0+c2l6ZSAhPSBzaXplb2YobG93X292ZXJoZWFkX29i dSkpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJPdXRwdXQgc2l6ZSBtaXNtYXRjaDogZXhw ZWN0ZWQgJXp1LCBnb3QgJWRcbiIsCisgICAgICAgICAgICAgICAgc2l6ZW9mKGxvd19vdmVyaGVh ZF9vYnUpLCBwa3Rfb3V0LT5zaXplKTsKKyAgICAgICAgcmV0ID0gLTE7CisgICAgICAgIGdvdG8g Y2xlYW51cDsKKyAgICB9CisKKyAgICBpZiAobWVtY21wKHBrdF9vdXQtPmRhdGEsIGxvd19vdmVy aGVhZF9vYnUsIHNpemVvZihsb3dfb3ZlcmhlYWRfb2J1KSkgIT0gMCkgeworICAgICAgICBmcHJp bnRmKHN0ZGVyciwgIk91dHB1dCBkYXRhIG1pc21hdGNoXG4iKTsKKyAgICAgICAgcHJpbnRmKCIg IEV4cGVjdGVkOiAiKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplb2YobG93 X292ZXJoZWFkX29idSk7IGkrKykKKyAgICAgICAgICAgIHByaW50ZigiJTAyeCAiLCBsb3dfb3Zl cmhlYWRfb2J1W2ldKTsKKyAgICAgICAgcHJpbnRmKCJcbiAgR290OiAgICAgICIpOworICAgICAg ICBmb3IgKGludCBpID0gMDsgaSA8IHBrdF9vdXQtPnNpemU7IGkrKykKKyAgICAgICAgICAgIHBy aW50ZigiJTAyeCAiLCBwa3Rfb3V0LT5kYXRhW2ldKTsKKyAgICAgICAgcHJpbnRmKCJcbiIpOwor ICAgICAgICByZXQgPSAtMTsKKyAgICAgICAgZ290byBjbGVhbnVwOworICAgIH0KKworICAgIHBy aW50ZigiICBmcm9tX3RzIG1vZGU6IFBBU1NFRCAob3V0cHV0IHNpemU6ICVkLCBkYXRhIG1hdGNo ZXMpXG4iLCBwa3Rfb3V0LT5zaXplKTsKKyAgICByZXQgPSAwOworCitjbGVhbnVwOgorICAgIGF2 X3BhY2tldF9mcmVlKCZwa3RfaW4pOworICAgIGF2X3BhY2tldF9mcmVlKCZwa3Rfb3V0KTsKKyAg ICBhdl9ic2ZfZnJlZSgmYnNmX2N0eCk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGlu dCB0ZXN0X2VzY2FwZV9oYW5kbGluZyh2b2lkKQoreworICAgIGNvbnN0IEFWQml0U3RyZWFtRmls dGVyICpmaWx0ZXI7CisgICAgQVZCU0ZDb250ZXh0ICpic2ZfY3R4ID0gTlVMTDsKKyAgICBBVlBh Y2tldCAqcGt0X2luID0gTlVMTDsKKyAgICBBVlBhY2tldCAqcGt0X291dCA9IE5VTEw7CisgICAg aW50IHJldDsKKworICAgIHByaW50ZigiVGVzdGluZyBlbXVsYXRpb24gcHJldmVudGlvbiBieXRl IGhhbmRsaW5nLi4uXG4iKTsKKworICAgIGZpbHRlciA9IGF2X2JzZl9nZXRfYnlfbmFtZSgiYXYx X3RzIik7CisgICAgaWYgKCFmaWx0ZXIpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJhdjFf dHMgQlNGIG5vdCBmb3VuZFxuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAv KiBUZXN0IHRvX3RzOiBzaG91bGQgYWRkIGVzY2FwZSBieXRlcyAqLworICAgIHJldCA9IGF2X2Jz Zl9hbGxvYyhmaWx0ZXIsICZic2ZfY3R4KTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0 dXJuIHJldDsKKworICAgIGF2X29wdF9zZXQoYnNmX2N0eC0+cHJpdl9kYXRhLCAibW9kZSIsICJ0 b190cyIsIDApOworICAgIGJzZl9jdHgtPnBhcl9pbi0+Y29kZWNfaWQgPSBBVl9DT0RFQ19JRF9B VjE7CisgICAgcmV0ID0gYXZfYnNmX2luaXQoYnNmX2N0eCk7CisgICAgaWYgKHJldCA8IDApIHsK KyAgICAgICAgYXZfYnNmX2ZyZWUoJmJzZl9jdHgpOworICAgICAgICByZXR1cm4gcmV0OworICAg IH0KKworICAgIHBrdF9pbiA9IGF2X3BhY2tldF9hbGxvYygpOworICAgIHBrdF9vdXQgPSBhdl9w YWNrZXRfYWxsb2MoKTsKKyAgICBpZiAoIXBrdF9pbiB8fCAhcGt0X291dCkgeworICAgICAgICBy ZXQgPSBBVkVSUk9SKEVOT01FTSk7CisgICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICB9CisKKyAg ICByZXQgPSBhdl9uZXdfcGFja2V0KHBrdF9pbiwgc2l6ZW9mKG9idV93aXRoX2VzY2FwZV9wYXR0 ZXJuKSk7CisgICAgaWYgKHJldCA8IDApCisgICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICBtZW1j cHkocGt0X2luLT5kYXRhLCBvYnVfd2l0aF9lc2NhcGVfcGF0dGVybiwgc2l6ZW9mKG9idV93aXRo X2VzY2FwZV9wYXR0ZXJuKSk7CisKKyAgICByZXQgPSBhdl9ic2Zfc2VuZF9wYWNrZXQoYnNmX2N0 eCwgcGt0X2luKTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgZ290byBjbGVhbnVwOworCisg ICAgcmV0ID0gYXZfYnNmX3JlY2VpdmVfcGFja2V0KGJzZl9jdHgsIHBrdF9vdXQpOworICAgIGlm IChyZXQgPCAwKQorICAgICAgICBnb3RvIGNsZWFudXA7CisKKyAgICAvKiBWZXJpZnkgZXNjYXBl IGJ5dGUgd2FzIGluc2VydGVkICovCisgICAgaWYgKHBrdF9vdXQtPnNpemUgIT0gc2l6ZW9mKGVz Y2FwZWRfb2J1KSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVzY2FwZSB0ZXN0OiBzaXpl IG1pc21hdGNoLCBleHBlY3RlZCAlenUgZ290ICVkXG4iLAorICAgICAgICAgICAgICAgIHNpemVv Zihlc2NhcGVkX29idSksIHBrdF9vdXQtPnNpemUpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwg IiAgRXhwZWN0ZWQ6ICIpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZihl c2NhcGVkX29idSk7IGkrKykKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJTAyeCAiLCBl c2NhcGVkX29idVtpXSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiXG4gIEdvdDogICAgICAi KTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwa3Rfb3V0LT5zaXplOyBpKyspCisgICAg ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiUwMnggIiwgcGt0X291dC0+ZGF0YVtpXSk7CisgICAg ICAgIGZwcmludGYoc3RkZXJyLCAiXG4iKTsKKyAgICAgICAgcmV0ID0gLTE7CisgICAgICAgIGdv dG8gY2xlYW51cDsKKyAgICB9CisKKyAgICBpZiAobWVtY21wKHBrdF9vdXQtPmRhdGEsIGVzY2Fw ZWRfb2J1LCBzaXplb2YoZXNjYXBlZF9vYnUpKSAhPSAwKSB7CisgICAgICAgIGZwcmludGYoc3Rk ZXJyLCAiRXNjYXBlIHRlc3Q6IGRhdGEgbWlzbWF0Y2hcbiIpOworICAgICAgICByZXQgPSAtMTsK KyAgICAgICAgZ290byBjbGVhbnVwOworICAgIH0KKworICAgIHByaW50ZigiICBFc2NhcGUgaW5z ZXJ0aW9uOiBQQVNTRURcbiIpOworCisgICAgLyogTm93IHRlc3QgZnJvbV90czogc2hvdWxkIHJl bW92ZSBlc2NhcGUgYnl0ZXMgKi8KKyAgICBhdl9wYWNrZXRfdW5yZWYocGt0X2luKTsKKyAgICBh dl9wYWNrZXRfdW5yZWYocGt0X291dCk7CisgICAgYXZfYnNmX2ZyZWUoJmJzZl9jdHgpOworCisg ICAgcmV0ID0gYXZfYnNmX2FsbG9jKGZpbHRlciwgJmJzZl9jdHgpOworICAgIGlmIChyZXQgPCAw KQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgYXZfb3B0X3NldChic2ZfY3R4LT5wcml2X2Rh dGEsICJtb2RlIiwgImZyb21fdHMiLCAwKTsKKyAgICBic2ZfY3R4LT5wYXJfaW4tPmNvZGVjX2lk ID0gQVZfQ09ERUNfSURfQVYxOworICAgIHJldCA9IGF2X2JzZl9pbml0KGJzZl9jdHgpOworICAg IGlmIChyZXQgPCAwKSB7CisgICAgICAgIGF2X2JzZl9mcmVlKCZic2ZfY3R4KTsKKyAgICAgICAg cmV0dXJuIHJldDsKKyAgICB9CisKKyAgICByZXQgPSBhdl9uZXdfcGFja2V0KHBrdF9pbiwgc2l6 ZW9mKGVzY2FwZWRfb2J1KSk7CisgICAgaWYgKHJldCA8IDApCisgICAgICAgIGdvdG8gY2xlYW51 cDsKKyAgICBtZW1jcHkocGt0X2luLT5kYXRhLCBlc2NhcGVkX29idSwgc2l6ZW9mKGVzY2FwZWRf b2J1KSk7CisKKyAgICByZXQgPSBhdl9ic2Zfc2VuZF9wYWNrZXQoYnNmX2N0eCwgcGt0X2luKTsK KyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgZ290byBjbGVhbnVwOworCisgICAgcmV0ID0gYXZf YnNmX3JlY2VpdmVfcGFja2V0KGJzZl9jdHgsIHBrdF9vdXQpOworICAgIGlmIChyZXQgPCAwKQor ICAgICAgICBnb3RvIGNsZWFudXA7CisKKyAgICBpZiAocGt0X291dC0+c2l6ZSAhPSBzaXplb2Yo b2J1X3dpdGhfZXNjYXBlX3BhdHRlcm4pKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiVW5l c2NhcGUgdGVzdDogc2l6ZSBtaXNtYXRjaCwgZXhwZWN0ZWQgJXp1IGdvdCAlZFxuIiwKKyAgICAg ICAgICAgICAgICBzaXplb2Yob2J1X3dpdGhfZXNjYXBlX3BhdHRlcm4pLCBwa3Rfb3V0LT5zaXpl KTsKKyAgICAgICAgcmV0ID0gLTE7CisgICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICB9CisKKyAg ICBpZiAobWVtY21wKHBrdF9vdXQtPmRhdGEsIG9idV93aXRoX2VzY2FwZV9wYXR0ZXJuLCBzaXpl b2Yob2J1X3dpdGhfZXNjYXBlX3BhdHRlcm4pKSAhPSAwKSB7CisgICAgICAgIGZwcmludGYoc3Rk ZXJyLCAiVW5lc2NhcGUgdGVzdDogZGF0YSBtaXNtYXRjaFxuIik7CisgICAgICAgIHJldCA9IC0x OworICAgICAgICBnb3RvIGNsZWFudXA7CisgICAgfQorCisgICAgcHJpbnRmKCIgIEVzY2FwZSBy ZW1vdmFsOiBQQVNTRURcbiIpOworICAgIHJldCA9IDA7CisKK2NsZWFudXA6CisgICAgYXZfcGFj a2V0X2ZyZWUoJnBrdF9pbik7CisgICAgYXZfcGFja2V0X2ZyZWUoJnBrdF9vdXQpOworICAgIGF2 X2JzZl9mcmVlKCZic2ZfY3R4KTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IHRl c3Rfcm91bmR0cmlwKHZvaWQpCit7CisgICAgY29uc3QgQVZCaXRTdHJlYW1GaWx0ZXIgKmZpbHRl cjsKKyAgICBBVkJTRkNvbnRleHQgKnRvX3RzX2N0eCA9IE5VTEwsICpmcm9tX3RzX2N0eCA9IE5V TEw7CisgICAgQVZQYWNrZXQgKnBrdF9vcmlnID0gTlVMTDsKKyAgICBBVlBhY2tldCAqcGt0X3Rz ID0gTlVMTDsKKyAgICBBVlBhY2tldCAqcGt0X2JhY2sgPSBOVUxMOworICAgIGludCByZXQ7CisK KyAgICBwcmludGYoIlRlc3Rpbmcgcm91bmR0cmlwIGNvbnZlcnNpb24uLi5cbiIpOworCisgICAg ZmlsdGVyID0gYXZfYnNmX2dldF9ieV9uYW1lKCJhdjFfdHMiKTsKKyAgICBpZiAoIWZpbHRlcikK KyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogU2V0dXAgdG9fdHMgQlNGICovCisgICAgcmV0 ID0gYXZfYnNmX2FsbG9jKGZpbHRlciwgJnRvX3RzX2N0eCk7CisgICAgaWYgKHJldCA8IDApCisg ICAgICAgIHJldHVybiByZXQ7CisgICAgYXZfb3B0X3NldCh0b190c19jdHgtPnByaXZfZGF0YSwg Im1vZGUiLCAidG9fdHMiLCAwKTsKKyAgICB0b190c19jdHgtPnBhcl9pbi0+Y29kZWNfaWQgPSBB Vl9DT0RFQ19JRF9BVjE7CisgICAgcmV0ID0gYXZfYnNmX2luaXQodG9fdHNfY3R4KTsKKyAgICBp ZiAocmV0IDwgMCkKKyAgICAgICAgZ290byBjbGVhbnVwOworCisgICAgLyogU2V0dXAgZnJvbV90 cyBCU0YgKi8KKyAgICByZXQgPSBhdl9ic2ZfYWxsb2MoZmlsdGVyLCAmZnJvbV90c19jdHgpOwor ICAgIGlmIChyZXQgPCAwKQorICAgICAgICBnb3RvIGNsZWFudXA7CisgICAgYXZfb3B0X3NldChm cm9tX3RzX2N0eC0+cHJpdl9kYXRhLCAibW9kZSIsICJmcm9tX3RzIiwgMCk7CisgICAgZnJvbV90 c19jdHgtPnBhcl9pbi0+Y29kZWNfaWQgPSBBVl9DT0RFQ19JRF9BVjE7CisgICAgcmV0ID0gYXZf YnNmX2luaXQoZnJvbV90c19jdHgpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICBnb3RvIGNs ZWFudXA7CisKKyAgICBwa3Rfb3JpZyA9IGF2X3BhY2tldF9hbGxvYygpOworICAgIHBrdF90cyA9 IGF2X3BhY2tldF9hbGxvYygpOworICAgIHBrdF9iYWNrID0gYXZfcGFja2V0X2FsbG9jKCk7Cisg ICAgaWYgKCFwa3Rfb3JpZyB8fCAhcGt0X3RzIHx8ICFwa3RfYmFjaykgeworICAgICAgICByZXQg PSBBVkVSUk9SKEVOT01FTSk7CisgICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICB9CisKKyAgICAv KiBTdGFydCB3aXRoIExvdyBPdmVyaGVhZCBPQlUgY29udGFpbmluZyBlc2NhcGUgcGF0dGVybiAq LworICAgIHJldCA9IGF2X25ld19wYWNrZXQocGt0X29yaWcsIHNpemVvZihvYnVfd2l0aF9lc2Nh cGVfcGF0dGVybikpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICBnb3RvIGNsZWFudXA7Cisg ICAgbWVtY3B5KHBrdF9vcmlnLT5kYXRhLCBvYnVfd2l0aF9lc2NhcGVfcGF0dGVybiwgc2l6ZW9m KG9idV93aXRoX2VzY2FwZV9wYXR0ZXJuKSk7CisKKyAgICAvKiBDb252ZXJ0IHRvIFRTIGZvcm1h dCAqLworICAgIHJldCA9IGF2X2JzZl9zZW5kX3BhY2tldCh0b190c19jdHgsIHBrdF9vcmlnKTsK KyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgZ290byBjbGVhbnVwOworICAgIHJldCA9IGF2X2Jz Zl9yZWNlaXZlX3BhY2tldCh0b190c19jdHgsIHBrdF90cyk7CisgICAgaWYgKHJldCA8IDApCisg ICAgICAgIGdvdG8gY2xlYW51cDsKKworICAgIC8qIENvbnZlcnQgYmFjayBmcm9tIFRTIGZvcm1h dCAqLworICAgIHJldCA9IGF2X2JzZl9zZW5kX3BhY2tldChmcm9tX3RzX2N0eCwgcGt0X3RzKTsK KyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgZ290byBjbGVhbnVwOworICAgIHJldCA9IGF2X2Jz Zl9yZWNlaXZlX3BhY2tldChmcm9tX3RzX2N0eCwgcGt0X2JhY2spOworICAgIGlmIChyZXQgPCAw KQorICAgICAgICBnb3RvIGNsZWFudXA7CisKKyAgICAvKiBWZXJpZnkgcm91bmR0cmlwIHByb2R1 Y2VzIGlkZW50aWNhbCBkYXRhICovCisgICAgaWYgKHBrdF9iYWNrLT5zaXplICE9IHNpemVvZihv YnVfd2l0aF9lc2NhcGVfcGF0dGVybikpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJSb3Vu ZHRyaXA6IHNpemUgbWlzbWF0Y2hcbiIpOworICAgICAgICByZXQgPSAtMTsKKyAgICAgICAgZ290 byBjbGVhbnVwOworICAgIH0KKworICAgIGlmIChtZW1jbXAocGt0X2JhY2stPmRhdGEsIG9idV93 aXRoX2VzY2FwZV9wYXR0ZXJuLCBzaXplb2Yob2J1X3dpdGhfZXNjYXBlX3BhdHRlcm4pKSAhPSAw KSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiUm91bmR0cmlwOiBkYXRhIG1pc21hdGNoXG4i KTsKKyAgICAgICAgcmV0ID0gLTE7CisgICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICB9CisKKyAg ICBwcmludGYoIiAgUm91bmR0cmlwOiBQQVNTRURcbiIpOworICAgIHJldCA9IDA7CisKK2NsZWFu dXA6CisgICAgYXZfcGFja2V0X2ZyZWUoJnBrdF9vcmlnKTsKKyAgICBhdl9wYWNrZXRfZnJlZSgm cGt0X3RzKTsKKyAgICBhdl9wYWNrZXRfZnJlZSgmcGt0X2JhY2spOworICAgIGF2X2JzZl9mcmVl KCZ0b190c19jdHgpOworICAgIGF2X2JzZl9mcmVlKCZmcm9tX3RzX2N0eCk7CisgICAgcmV0dXJu IHJldDsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgICh2b2lk KWFyZ2M7CisgICAgKHZvaWQpYXJndjsKKyAgICBpbnQgZmFpbGVkID0gMDsKKworICAgIHByaW50 ZigiPT09IEFWMSBUUyBCU0YgTWVtb3J5IFRlc3QgPT09XG5cbiIpOworCisgICAgaWYgKHRlc3Rf dG9fdHNfbW9kZSgpIDwgMCkKKyAgICAgICAgZmFpbGVkKys7CisKKyAgICBpZiAodGVzdF9mcm9t X3RzX21vZGUoKSA8IDApCisgICAgICAgIGZhaWxlZCsrOworCisgICAgaWYgKHRlc3RfZXNjYXBl X2hhbmRsaW5nKCkgPCAwKQorICAgICAgICBmYWlsZWQrKzsKKworICAgIGlmICh0ZXN0X3JvdW5k dHJpcCgpIDwgMCkKKyAgICAgICAgZmFpbGVkKys7CisKKyAgICBwcmludGYoIlxuPT09IFJlc3Vs dHM6ICVkIHRlc3RzLCAlZCBmYWlsZWQgPT09XG4iLAorICAgICAgICAgICA0LCBmYWlsZWQpOwor CisgICAgcmV0dXJuIGZhaWxlZCA+IDAgPyAxIDogMDsKK30KZGlmZiAtLWdpdCBhL3Rlc3RzL2Zh dGUvYXBpLm1hayBiL3Rlc3RzL2ZhdGUvYXBpLm1hawppbmRleCBiNzYwZGU1ZWI2Li45MDJlZDk3 MmFiIDEwMDY0NAotLS0gYS90ZXN0cy9mYXRlL2FwaS5tYWsKKysrIGIvdGVzdHMvZmF0ZS9hcGku bWFrCkBAIC0yOCw2ICsyOCwxMSBAQCBmYXRlLWFwaS10aHJlYWRtZXNzYWdlOiAkKEFQSVRFU1RT RElSKS9hcGktdGhyZWFkbWVzc2FnZS10ZXN0JChFWEVTVUYpCiBmYXRlLWFwaS10aHJlYWRtZXNz YWdlOiBDTUQgPSBydW4gJChBUElURVNUU0RJUikvYXBpLXRocmVhZG1lc3NhZ2UtdGVzdCQoRVhF U1VGKSAzIDEwIDMwIDUwIDIgMjAgNDAKIGZhdGUtYXBpLXRocmVhZG1lc3NhZ2U6IENNUCA9IG51 bGwKIAorRkFURV9BUEktJChDT05GSUdfQVZDT0RFQykgKz0gZmF0ZS1hcGktYXYxLXRzLWJzZgor ZmF0ZS1hcGktYXYxLXRzLWJzZjogJChBUElURVNUU0RJUikvYXBpLWF2MS10cy1ic2YtdGVzdCQo RVhFU1VGKQorZmF0ZS1hcGktYXYxLXRzLWJzZjogQ01EID0gcnVuICQoQVBJVEVTVFNESVIpL2Fw aS1hdjEtdHMtYnNmLXRlc3QkKEVYRVNVRikKK2ZhdGUtYXBpLWF2MS10cy1ic2Y6IENNUCA9IG51 bGwKKwogRkFURV9BUElfU0FNUExFUy0kKENPTkZJR19BVkZPUk1BVCkgKz0gJChGQVRFX0FQSV9T QU1QTEVTX0xJQkFWRk9STUFULXllcykKIAogaWZkZWYgU0FNUExFUwotLSAKMi40OS4xCgoKRnJv bSA3YzJmNzUwMjE1YmY1N2IzMjM5M2ZiN2ZmMmZmMDEzNTU1MzRlNGZmIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiBKdW4gWmhhbyA8YmFycnlqemhhb0B0ZW5jZW50LmNvbT4KRGF0ZTog U2F0LCAyNyBEZWMgMjAyNSAxNzoyNzoyNCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggMTEvMTFdIHRl c3RzL2ZhdGUvbGF2Zi1jb250YWluZXI6IGFkZCBBVjEgTVBFRy1UUyBtdXhpbmcgdGVzdAoKLS0t CiB0ZXN0cy9mYXRlL2xhdmYtY29udGFpbmVyLm1hayB8IDIgKysKIDEgZmlsZSBjaGFuZ2VkLCAy IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS90ZXN0cy9mYXRlL2xhdmYtY29udGFpbmVyLm1h ayBiL3Rlc3RzL2ZhdGUvbGF2Zi1jb250YWluZXIubWFrCmluZGV4IGQxMDA3YTQyOGEuLjE0YmQ5 ODI1YjYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2ZhdGUvbGF2Zi1jb250YWluZXIubWFrCisrKyBiL3Rl c3RzL2ZhdGUvbGF2Zi1jb250YWluZXIubWFrCkBAIC03NCw2ICs3NCw3IEBAIGZhdGUtbGF2Zi1j b250YWluZXIgZmF0ZS1sYXZmOiAkKEZBVEVfTEFWRl9DT05UQUlORVIpCiBGQVRFX0xBVkZfQ09O VEFJTkVSX0ZBVEUtJChjYWxsIENSQywgQVBWIE1PViwsICAgICAgICAgICBBUFZfUEFSU0VSIE1Q NF9NVVhFUikgKz0gYXB2Lm1wNAogRkFURV9MQVZGX0NPTlRBSU5FUl9GQVRFLSQoY2FsbCBDUkMs IElWRiBNT1YsIEFWMSwgICAgICAgQVYxX1BBUlNFUiBFWFRSQUNUX0VYVFJBREFUQV9CU0YgTVA0 X01VWEVSKSAgICAgICs9IGF2MS5tcDQKIEZBVEVfTEFWRl9DT05UQUlORVJfRkFURS0kKGNhbGwg Q1JDLCBJVkYgTUFUUk9TS0EsIEFWMSwgIEFWMV9QQVJTRVIgRVhUUkFDVF9FWFRSQURBVEFfQlNG IE1BVFJPU0tBX01VWEVSKSArPSBhdjEubWt2CitGQVRFX0xBVkZfQ09OVEFJTkVSX0ZBVEUtJChj YWxsIENSQywgSVZGIE1QRUdUUywgQVYxLCBBVjFfUEFSU0VSIEFWMV9UU19CU0YgTVBFR1RTX01V WEVSKSArPSBhdjEudHMKIEZBVEVfTEFWRl9DT05UQUlORVJfRkFURS0kKGNhbGwgQ1JDLCBNT1Yg RVZDLCwgICAgICAgICAgIEVWQ19QQVJTRVIgTVA0X01VWEVSKSArPSBldmMubXA0CiBGQVRFX0xB VkZfQ09OVEFJTkVSX0ZBVEUtJChjYWxsIENSQywgTU9WIEgyNjQsLCAgICAgICAgICBIMjY0X1BB UlNFUiBFWFRSQUNUX0VYVFJBREFUQV9CU0YgTVA0X01VWEVSKSArPSBoMjY0Lm1wNAogRkFURV9M QVZGX0NPTlRBSU5FUl9GQVRFLSQoY2FsbCBDUkMsIE1PViBIRVZDLCwgICAgICAgICAgSEVWQ19Q QVJTRVIgRVhUUkFDVF9FWFRSQURBVEFfQlNGIE1QNF9NVVhFUikgKz0gaGV2Yy5tcDQKQEAgLTk2 LDYgKzk3LDcgQEAgJChGQVRFX0xBVkZfQ09OVEFJTkVSX0ZBVEUpOiAkKEFSRUYpICQoVlJFRikK IGZhdGUtbGF2Zi1mYXRlLWFwdi5tcDQ6IENNRCA9IGxhdmZfY29udGFpbmVyX2ZhdGUgImFwdi9w cm9maWxlXzQyMi0xMC5hcHYiICIiICIiICItYzp2IGNvcHkiCiBmYXRlLWxhdmYtZmF0ZS1hdjEu bXA0OiBDTUQgPSBsYXZmX2NvbnRhaW5lcl9mYXRlICJhdjEtdGVzdC12ZWN0b3JzL2F2MS0xLWI4 LTA1LW12Lml2ZiIgIi1jOnYgYXYxIiAiIiAiLWM6diBjb3B5IgogZmF0ZS1sYXZmLWZhdGUtYXYx Lm1rdjogQ01EID0gbGF2Zl9jb250YWluZXJfZmF0ZSAiYXYxLXRlc3QtdmVjdG9ycy9hdjEtMS1i OC0wNS1tdi5pdmYiICItYzp2IGF2MSIgIiIgIi1jOnYgY29weSIKK2ZhdGUtbGF2Zi1mYXRlLWF2 MS50czogQ01EID0gbGF2Zl9jb250YWluZXJfZmF0ZSAiYXYxLXRlc3QtdmVjdG9ycy9hdjEtMS1i OC0wNS1tdi5pdmYiICItYzp2IGF2MSIgIiIgIi1jOnYgY29weSIKIGZhdGUtbGF2Zi1mYXRlLWV2 Yy5tcDQ6IENNRCA9IGxhdmZfY29udGFpbmVyX2ZhdGUgImV2Yy9ha2l5b19jaWYuZXZjIiAiIiAi IiAiLWM6diBjb3B5IgogZmF0ZS1sYXZmLWZhdGUtaDI2NC5tcDQ6IENNRCA9IGxhdmZfY29udGFp bmVyX2ZhdGUgImgyNjQvaW50cmFfcmVmcmVzaC5oMjY0IiAiIiAiIiAiLWM6diBjb3B5IgogZmF0 ZS1sYXZmLWZhdGUtaGV2Yy5tcDQ6IENNRCA9IGxhdmZfY29udGFpbmVyX2ZhdGUgImhldmMtY29u Zm9ybWFuY2UvSFJEX0FfRnVqaXRzdV8yLmJpdCIgIiIgIiIgIi1jOnYgY29weSIKLS0gCjIuNDku MQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVn LWRldmVsIG1haWxpbmcgbGlzdCAtLSBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpUbyB1bnN1YnNj cmliZSBzZW5kIGFuIGVtYWlsIHRvIGZmbXBlZy1kZXZlbC1sZWF2ZUBmZm1wZWcub3JnCg==