Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tzIoN-000WS4-Nt for pgsql-hackers@arkaria.postgresql.org; Mon, 31 Mar 2025 17:20:36 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tzIoM-009CMC-BD for pgsql-hackers@arkaria.postgresql.org; Mon, 31 Mar 2025 17:20:34 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tzIoL-009CAY-Fd for pgsql-hackers@lists.postgresql.org; Mon, 31 Mar 2025 17:20:33 +0000 Received: from mail-qt1-x835.google.com ([2607:f8b0:4864:20::835]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tzIoG-002B9k-1K for pgsql-hackers@lists.postgresql.org; Mon, 31 Mar 2025 17:20:32 +0000 Received: by mail-qt1-x835.google.com with SMTP id d75a77b69052e-47692b9d059so65063281cf.3 for ; Mon, 31 Mar 2025 10:20:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dunslane-net.20230601.gappssmtp.com; s=20230601; t=1743441627; x=1744046427; darn=lists.postgresql.org; h=in-reply-to:autocrypt:content-language:references:cc:to:from :subject:user-agent:mime-version:date:message-id:from:to:cc:subject :date:message-id:reply-to; bh=AIO7i5IlHAcstIENgOMXbB0RrzydPy2lBvHiaqRftko=; b=MNBWjezCYpsF+N4yWh7Zqb028JWHI+L46LZtSaPZV5DlKQmOPdzNORAio/m4Wa9I5R chD/babcmTfwqnR7kZY/NoWrzKKJlS+qp+79+zYBRIskxdxQI6AQWxUYC2iV6+iNa8T3 YDCX6F8p1TmEGyPoGLQC4XvMgekO96HxXj4jDEK0E5cXYMEDxE/kuqh+WqbHUuGtWUZC ypPJofkHAvfY7+JtE3PMc+LqwEIUDpvsiIjyxuuuIk+OJO+7EfnSVoDGTBsPoFxcqHn+ sbDiVBsNxPQ3ORe+Q8mJO6a+lR0tfiNAifcZxm9K9iME7Ylf7wXq5j3PMYJBJ4cOqS85 NQMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743441627; x=1744046427; h=in-reply-to:autocrypt:content-language:references:cc:to:from :subject:user-agent:mime-version:date:message-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=AIO7i5IlHAcstIENgOMXbB0RrzydPy2lBvHiaqRftko=; b=Oi7He4tqMTSnj8pi9MAfT4q3P7LFYLBcsag9zpNz1o5/uAHvuhwJn1+K8v7wGaU5PY eqtJ6SEHM2ggiDMAGiKn6hwehkru4+4SK8IDauPtdDP1mArrCkyahs/rK3YnDhSXInPO 59TFsdHwta1C0bw34suh7+Q6r7ZtTGYtqsq4NU9jp4eEB6Q4NShNr19s8Yr4TCPmjXfx m3SBv9Lp62beMP3b02pcJYLs8RlOE46NwSZl88KiduzVKZJw3li0Il+kWdHicVn4vkKD 0TUoUyp7AUVXkrCDoVSQMb4DGdTBzAwA4JDUou4APUMqLvjf6RH6ahBd9ajJXoQZD0oo jChQ== X-Forwarded-Encrypted: i=1; AJvYcCXhh6BagVGUtrzcGkL7v0/OROs7EIs+hV9UsOPmwtKgvWPnPN0p2Fjdfe71pizpTBfiIX+TQ9HwH6r/G74v@lists.postgresql.org X-Gm-Message-State: AOJu0YyBFaXTiyUsDvFFyNrtITiaRWU2QYj3W3UnNsVClsThBLmVqNuN keKt9WnNSGL4rKWgFAT8WBZAX8ejr4pCJkt8X3MiBhfOLHUfwaNhXBe6EGoUVRo= X-Gm-Gg: ASbGncv2Ua8pzX6ddEPA5rHwOsiVewZB0EmUVAoDITYoBR9tKfthowvzdLv48SThD+H TmiafGbTZ/MsWHL5WVQT5ETLDwb7INOKGBtiR3YChl5slLIYxbQK2QjuJyHdP485HTRhaSGVVS4 fAr85fqRZpHd3z3XBzDJdpKmsQVXfZ2BDrW4T6ArM20VO8DXT3+a0ZYpJ76ki3wIn9T6lAdfFWW AMor8dJHD+sYF0N307aEH1SnSZnUUNl+6to7SqMDi71GTVicZrV0DHTIHP/GZX4Bdl9IrVWc+/p QTUWUdnnbcvL80ZFk0plxMluttgMSoJRYSBP/XVAgDuxjq9f1/sk1tU= X-Google-Smtp-Source: AGHT+IGOIuojFI4AkafjR99z6lTAorahgApGtw9pDZCdUmLqCWIXfcZK/5DfTVyJWU4KVTlryepa0g== X-Received: by 2002:a05:622a:110e:b0:476:ac73:c3f6 with SMTP id d75a77b69052e-477e4ae4bdbmr159847311cf.4.1743441626572; Mon, 31 Mar 2025 10:20:26 -0700 (PDT) Received: from ?IPV6:2605:a601:a681:6b00::1cb? ([2605:a601:a681:6b00::1cb]) by smtp.googlemail.com with ESMTPSA id d75a77b69052e-477896cde88sm49399691cf.46.2025.03.31.10.20.25 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 31 Mar 2025 10:20:25 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------WYy7qAr00NPPVmPn6v3moLzs" Message-ID: Date: Mon, 31 Mar 2025 13:20:24 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Non-text mode for pg_dumpall From: Andrew Dunstan To: Mahendra Singh Thalor Cc: jian he , =?UTF-8?Q?=C3=81lvaro_Herrera?= , Srinath Reddy , pgsql-hackers@lists.postgresql.org References: <202503111705.xy7fddu36qae@alvherre.pgsql> <4ef51faa-993f-46ea-9e68-7baf736c07b8@dunslane.net> <763d1c6e-9298-4bac-9bea-9331db78a154@dunslane.net> Content-Language: en-US Autocrypt: addr=andrew@dunslane.net; keydata= xsBNBE7KWFkBCAClridxur2AIc7eW2AR7izbfp3EnNefie2HbLF0izW5Ik5UjX2HBXBx4syI gY6b0ugohXrr274+baoAlvSbq6cAoQuEVrk5IZFzt20b1Xkx65FwGSEj526yiKLocqkJceSq Xr9xcA5SGY+FZv441chh5SU92v4q6z+6LPpoHOh97ptAVXZYNTtU0LevyvD5lja0TzbvJm6C eFXitJfnm1pLEr0DGJCR/iUOl/N62Kh4855zZC7NHIjQHPOvV5Stz/l5ilDhvGVk+xkXFPys SjZoUr1rXhYLpiyi5sR0X9FHXT0KnGuz1F5ERO7ZTLSSQ6fJwPj6gOk9K+vvoKvoeql5ABEB AAHNJEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PsLAmwQTAQgARQIbAwIX gAIZAQULCQgHAgMiAgEGFQoJCAsCBBYCAwECHgcWIQTkPlhGHfx8v0RpFaWZ+n/LWfw7gQUC ZFlxxwUJGVGAbgAKCRCZ+n/LWfw7gXikB/9ZdcUy6CTBFIIuL/bVsc1eLEW/gJBjJBF6HxNY xgEkAgXAp4Lg4A5U+QB9GouFr7+GYxF0BU4hzoGhNPUWltxnHdMWP8nC/38LAqgMi8L/bbsm HW5YPBdWYaAZAPJQVfOAgjTbRUb26KSprpyrrJKW0ZmrZfjhNPcQ72jpWzoPLQqx2X6B0fru 1jq+cBh8lb6r1mJTim1T3JIn+F/v5VpdQS+EL8xqsHkfzKjIPsW3CIXpkypSk6saA55Rkkbl 26AW8ftPVB0Q6Lnn6FLt9CP0MGNixBQ55yq8r1K+nCBvCCjvQjM8RDm0UUum0WNl+ifQgTLO E8TWEnwVtkBf+3QWzsBNBE7KWFkBCADRnOM0FCzsYW6jtncg+dWIagjUZpvaClmqn/sJluLa Q3v1VXMQJzYs3eC1gh386W+XBwLRpDj3jzH81lX+p73Re3d3oJW7X+ffsxuzu5ZVdMUkqBYo nkAbKxr6gyJ12F/+JkUVzLcoTN+d/7YsQvUVi7NaKH8mJgjz112O4fUe3p9wfAaFa0RXHc5S GPzRTYRRlv/XZBIho4J2tkZOnteZJZ+GbxQVlINt6fd8P6al3MWOvpP/ExJPguEfjOsO6Njy xjo3WfpD4lHMOR/Oc3/8mScEF84rF2jXbsFgelWnbPWAvXY+pD0dXOFRkagGmC/viwBDqq5b 5tk76kKmUbZxABEBAAHCwHwEGAEIACYCGwwWIQTkPlhGHfx8v0RpFaWZ+n/LWfw7gQUCZFlx 5wUJGVGAjgAKCRCZ+n/LWfw7gf+iB/4g8CPY5jihf5r/8EsoIGe2H+dpVmpPF8YGBzTIvCz/ fQoOq8AX/pE76QEuFnFZWfjw+wgBXgCVmkox2Eflkk6z4ND3pcwGZ6CfCxTQCDk/dij+2DQ4 6bmDCy/sBgcbz9mTpoLC11HLoPae6YN9nBNQRZDcEFEu54OaVOqlIdbA6m+POIBCXZdHOFc0 WoDTgxHRzC1jgQNidyd6tKqcsVJs0dzF0oKTmFFmUAqTdJO12LBuNA1rlqrR3EtpYk8B/wtS 5dIMD7Q8hwQpL+4C6GNpb6ZKnPkLi47pDOLhz2qBrqN+rqUEsT3YnExYpzj5yOBi+FlmV1Hw 49QYe1sn2ZPs In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------WYy7qAr00NPPVmPn6v3moLzs Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 2025-03-31 Mo 1:16 PM, Andrew Dunstan wrote: > > > > Thanks. Here are patches that contain (my version of) all the > cleanups. With this I get a clean restore run in my test case with no > error messages. > > > This time with patches cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com --------------WYy7qAr00NPPVmPn6v3moLzs Content-Type: text/x-patch; charset=UTF-8; name="v20250331-0001-Move-common-pg_dump-code-related-to-connec.patch" Content-Disposition: attachment; filename*0="v20250331-0001-Move-common-pg_dump-code-related-to-connec.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA2Mjg2NzAxZmYzNjBjY2I4YzEwNWZhNWFhMGE4ZjliYmEzYjFkMWQ3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYWhlbmRyYSBTaW5naCBUaGFsb3IgPG1haGk2cnVu QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAwMToxODo0NiArMDUzMApTdWJq ZWN0OiBbUEFUQ0ggdjIwMjUwMzMxIDEvM10gTW92ZSBjb21tb24gcGdfZHVtcCBjb2RlIHJl bGF0ZWQgdG8gY29ubmVjdGlvbnMKIHRvIGEgbmV3IGZpbGUKCkNvbm5lY3REYXRhYmFzZSBp cyB1c2VkIGJ5IHBnX2R1bXBhbGwsIHBnX3Jlc3RvcmUgYW5kIHBnX2R1bXAgc28gbW92ZQpj b21tb24gY29kZSB0byBuZXcgZmlsZS4KCm5ldyBmaWxlIG5hbWU6IGNvbm5lY3RkYi5jCgpB dXRob3I6ICAgIE1haGVuZHJhIFNpbmdoIFRoYWxvciA8bWFoaTZydW5AZ21haWwuY29tPgot LS0KIHNyYy9iaW4vcGdfZHVtcC9NYWtlZmlsZSAgICAgICAgICAgICB8ICAgNSArLQogc3Jj L2Jpbi9wZ19kdW1wL2Nvbm5lY3RkYi5jICAgICAgICAgIHwgMjk0ICsrKysrKysrKysrKysr KysrKysrKysrKysrKwogc3JjL2Jpbi9wZ19kdW1wL2Nvbm5lY3RkYi5oICAgICAgICAgIHwg IDI2ICsrKwogc3JjL2Jpbi9wZ19kdW1wL21lc29uLmJ1aWxkICAgICAgICAgIHwgICAxICsK IHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXAuaCAgICAgICAgICB8ICAgNiArLQogc3JjL2Jp bi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jIHwgICA2ICstCiBzcmMvYmluL3BnX2R1 bXAvcGdfYmFja3VwX2RiLmMgICAgICAgfCAgNzkgKy0tLS0tLQogc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuYyAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVt cGFsbC5jICAgICAgICAgfCAyNzggKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogOSBmaWxl cyBjaGFuZ2VkLCAzNTIgaW5zZXJ0aW9ucygrKSwgMzQ1IGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy9iaW4vcGdfZHVtcC9jb25uZWN0ZGIuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy9iaW4vcGdfZHVtcC9jb25uZWN0ZGIuaAoKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfZHVtcC9NYWtlZmlsZSBiL3NyYy9iaW4vcGdfZHVtcC9NYWtlZmlsZQppbmRleCAy MzNhZDE1Y2E3NS4uZmE3OTU4ODNlOWYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9N YWtlZmlsZQorKysgYi9zcmMvYmluL3BnX2R1bXAvTWFrZWZpbGUKQEAgLTMxLDYgKzMxLDcg QEAgT0JKUyA9IFwKIAljb21wcmVzc19sejQubyBcCiAJY29tcHJlc3Nfbm9uZS5vIFwKIAlj b21wcmVzc196c3RkLm8gXAorCWNvbm5lY3RkYi5vIFwKIAlkdW1wdXRpbHMubyBcCiAJZmls dGVyLm8gXAogCXBhcmFsbGVsLm8gXApAQCAtNTAsOCArNTEsOCBAQCBwZ19kdW1wOiBwZ19k dW1wLm8gY29tbW9uLm8gcGdfZHVtcF9zb3J0Lm8gJChPQkpTKSB8IHN1Ym1ha2UtbGlicHEg c3VibWFrZS1saWJwZwogcGdfcmVzdG9yZTogcGdfcmVzdG9yZS5vICQoT0JKUykgfCBzdWJt YWtlLWxpYnBxIHN1Ym1ha2UtbGlicGdwb3J0IHN1Ym1ha2UtbGlicGdmZXV0aWxzCiAJJChD QykgJChDRkxBR1MpIHBnX3Jlc3RvcmUubyAkKE9CSlMpICQoTERGTEFHUykgJChMREZMQUdT X0VYKSAkKExJQlMpIC1vICRAJChYKQogCi1wZ19kdW1wYWxsOiBwZ19kdW1wYWxsLm8gZHVt cHV0aWxzLm8gZmlsdGVyLm8gJChXSU4zMlJFUykgfCBzdWJtYWtlLWxpYnBxIHN1Ym1ha2Ut bGlicGdwb3J0IHN1Ym1ha2UtbGlicGdmZXV0aWxzCi0JJChDQykgJChDRkxBR1MpIHBnX2R1 bXBhbGwubyBkdW1wdXRpbHMubyBmaWx0ZXIubyAkKFdJTjMyUkVTKSAkKExERkxBR1MpICQo TERGTEFHU19FWCkgJChMSUJTKSAtbyAkQCQoWCkKK3BnX2R1bXBhbGw6IHBnX2R1bXBhbGwu byAkKE9CSlMpIHwgc3VibWFrZS1saWJwcSBzdWJtYWtlLWxpYnBncG9ydCBzdWJtYWtlLWxp YnBnZmV1dGlscworCSQoQ0MpICQoQ0ZMQUdTKSBwZ19kdW1wYWxsLm8gJChPQkpTKSAkKExE RkxBR1MpICQoTERGTEFHU19FWCkgJChMSUJTKSAtbyAkQCQoWCkKIAogaW5zdGFsbDogYWxs IGluc3RhbGxkaXJzCiAJJChJTlNUQUxMX1BST0dSQU0pIHBnX2R1bXAkKFgpICckKERFU1RE SVIpJChiaW5kaXIpJy9wZ19kdW1wJChYKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1w L2Nvbm5lY3RkYi5jIGIvc3JjL2Jpbi9wZ19kdW1wL2Nvbm5lY3RkYi5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45ZTU5M2I3MGU4MQotLS0gL2Rldi9udWxs CisrKyBiL3NyYy9iaW4vcGdfZHVtcC9jb25uZWN0ZGIuYwpAQCAtMCwwICsxLDI5NCBAQAor LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogY29ubmVjdGRiLmMKKyAqICAgIFRoaXMg aXMgYSBjb21tb24gZmlsZSBjb25uZWN0aW9uIHRvIHRoZSBkYXRhYmFzZS4KKyAqCisgKiBQ b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50 cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogSURFTlRJRklDQVRJ T04KKyAqICAgIHNyYy9iaW4vcGdfZHVtcC9jb25uZWN0ZGIuYworICoKKyAqLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgorCisjaW5jbHVk ZSAiY29tbW9uL2Nvbm5lY3QuaCIKKyNpbmNsdWRlICJjb21tb24vbG9nZ2luZy5oIgorI2lu Y2x1ZGUgImNvbW1vbi9zdHJpbmcuaCIKKyNpbmNsdWRlICJjb25uZWN0ZGIuaCIKKyNpbmNs dWRlICJkdW1wdXRpbHMuaCIKKyNpbmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMuaCIK Kworc3RhdGljIGNoYXIgKmNvbnN0cnVjdENvbm5TdHIoY29uc3QgY2hhciAqKmtleXdvcmRz LCBjb25zdCBjaGFyICoqdmFsdWVzKTsKKworLyoKKyAqIENvbm5lY3REYXRhYmFzZQorICoK KyAqIE1ha2UgYSBkYXRhYmFzZSBjb25uZWN0aW9uIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRl cnMuICBBbgorICogaW50ZXJhY3RpdmUgcGFzc3dvcmQgcHJvbXB0IGlzIGF1dG9tYXRpY2Fs bHkgaXNzdWVkIGlmIHJlcXVpcmVkLgorICoKKyAqIElmIGZhaWxfb25fZXJyb3IgaXMgZmFs c2UsIHdlIHJldHVybiBOVUxMIHdpdGhvdXQgcHJpbnRpbmcgYW55IG1lc3NhZ2UKKyAqIG9u IGZhaWx1cmUsIGJ1dCBwcmVzZXJ2ZSBhbnkgcHJvbXB0ZWQgcGFzc3dvcmQgZm9yIHRoZSBu ZXh0IHRyeS4KKyAqCisgKiBPbiBzdWNjZXNzLCB0aGUgJ2Nvbm5zdHInIGlzIHNldCB0byBh IGNvbm5lY3Rpb24gc3RyaW5nIGNvbnRhaW5pbmcKKyAqIHRoZSBvcHRpb25zIHVzZWQgYW5k ICdzZXJ2ZXJfdmVyc2lvbicgaXMgc2V0IHRvIHZlcnNpb24gc28gdGhhdCBjYWxsZXIKKyAq IGNhbiB1c2UgdGhlbS4KKyAqLworUEdjb25uICoKK0Nvbm5lY3REYXRhYmFzZShjb25zdCBj aGFyICpkYm5hbWUsIGNvbnN0IGNoYXIgKmNvbm5lY3Rpb25fc3RyaW5nLAorCQkJCWNvbnN0 IGNoYXIgKnBnaG9zdCwgY29uc3QgY2hhciAqcGdwb3J0LCBjb25zdCBjaGFyICpwZ3VzZXIs CisJCQkJdHJpdmFsdWUgcHJvbXB0X3Bhc3N3b3JkLCBib29sIGZhaWxfb25fZXJyb3IsIGNv bnN0IGNoYXIgKnByb2duYW1lLAorCQkJCWNvbnN0IGNoYXIgKipjb25uc3RyLCBpbnQgKnNl cnZlcl92ZXJzaW9uLCBjaGFyICpwYXNzd29yZCwKKwkJCQljaGFyICpvdmVycmlkZV9kYm5h bWUpCit7CisJUEdjb25uCSAgICpjb25uOworCWJvb2wJCW5ld19wYXNzOworCWNvbnN0IGNo YXIgKnJlbW90ZXZlcnNpb25fc3RyOworCWludAkJCW15X3ZlcnNpb247CisJY29uc3QgY2hh ciAqKmtleXdvcmRzID0gTlVMTDsKKwljb25zdCBjaGFyICoqdmFsdWVzID0gTlVMTDsKKwlQ UWNvbm5pbmZvT3B0aW9uICpjb25uX29wdHMgPSBOVUxMOworCWludAkJCXNlcnZlcl92ZXJz aW9uX3RlbXA7CisKKwlpZiAocHJvbXB0X3Bhc3N3b3JkID09IFRSSV9ZRVMgJiYgIXBhc3N3 b3JkKQorCQlwYXNzd29yZCA9IHNpbXBsZV9wcm9tcHQoIlBhc3N3b3JkOiAiLCBmYWxzZSk7 CisKKwkvKgorCSAqIFN0YXJ0IHRoZSBjb25uZWN0aW9uLiAgTG9vcCB1bnRpbCB3ZSBoYXZl IGEgcGFzc3dvcmQgaWYgcmVxdWVzdGVkIGJ5CisJICogYmFja2VuZC4KKwkgKi8KKwlkbwor CXsKKwkJaW50CQkJYXJnY291bnQgPSA4OworCQlQUWNvbm5pbmZvT3B0aW9uICpjb25uX29w dDsKKwkJY2hhcgkgICAqZXJyX21zZyA9IE5VTEw7CisJCWludAkJCWkgPSAwOworCisJCWZy ZWUoa2V5d29yZHMpOworCQlmcmVlKHZhbHVlcyk7CisJCVBRY29ubmluZm9GcmVlKGNvbm5f b3B0cyk7CisKKwkJLyoKKwkJICogTWVyZ2UgdGhlIGNvbm5lY3Rpb24gaW5mbyBpbnB1dHMg Z2l2ZW4gaW4gZm9ybSBvZiBjb25uZWN0aW9uIHN0cmluZworCQkgKiBhbmQgb3RoZXIgb3B0 aW9ucy4gIEV4cGxpY2l0bHkgZGlzY2FyZCBhbnkgZGJuYW1lIHZhbHVlIGluIHRoZQorCQkg KiBjb25uZWN0aW9uIHN0cmluZzsgb3RoZXJ3aXNlLCBQUWNvbm5lY3RkYlBhcmFtcygpIHdv dWxkIGludGVycHJldAorCQkgKiB0aGF0IHZhbHVlIGFzIGJlaW5nIGl0c2VsZiBhIGNvbm5l Y3Rpb24gc3RyaW5nLgorCQkgKi8KKwkJaWYgKGNvbm5lY3Rpb25fc3RyaW5nKQorCQl7CisJ CQljb25uX29wdHMgPSBQUWNvbm5pbmZvUGFyc2UoY29ubmVjdGlvbl9zdHJpbmcsICZlcnJf bXNnKTsKKwkJCWlmIChjb25uX29wdHMgPT0gTlVMTCkKKwkJCQlwZ19mYXRhbCgiJXMiLCBl cnJfbXNnKTsKKworCQkJZm9yIChjb25uX29wdCA9IGNvbm5fb3B0czsgY29ubl9vcHQtPmtl eXdvcmQgIT0gTlVMTDsgY29ubl9vcHQrKykKKwkJCXsKKwkJCQlpZiAoY29ubl9vcHQtPnZh bCAhPSBOVUxMICYmIGNvbm5fb3B0LT52YWxbMF0gIT0gJ1wwJyAmJgorCQkJCQlzdHJjbXAo Y29ubl9vcHQtPmtleXdvcmQsICJkYm5hbWUiKSAhPSAwKQorCQkJCQlhcmdjb3VudCsrOwor CQkJfQorCisJCQlrZXl3b3JkcyA9IHBnX21hbGxvYzAoKGFyZ2NvdW50ICsgMSkgKiBzaXpl b2YoKmtleXdvcmRzKSk7CisJCQl2YWx1ZXMgPSBwZ19tYWxsb2MwKChhcmdjb3VudCArIDEp ICogc2l6ZW9mKCp2YWx1ZXMpKTsKKworCQkJZm9yIChjb25uX29wdCA9IGNvbm5fb3B0czsg Y29ubl9vcHQtPmtleXdvcmQgIT0gTlVMTDsgY29ubl9vcHQrKykKKwkJCXsKKwkJCQlpZiAo Y29ubl9vcHQtPnZhbCAhPSBOVUxMICYmIGNvbm5fb3B0LT52YWxbMF0gIT0gJ1wwJyAmJgor CQkJCQlzdHJjbXAoY29ubl9vcHQtPmtleXdvcmQsICJkYm5hbWUiKSAhPSAwKQorCQkJCXsK KwkJCQkJa2V5d29yZHNbaV0gPSBjb25uX29wdC0+a2V5d29yZDsKKwkJCQkJdmFsdWVzW2ld ID0gY29ubl9vcHQtPnZhbDsKKwkJCQkJaSsrOworCQkJCX0KKwkJCX0KKwkJfQorCQllbHNl CisJCXsKKwkJCWtleXdvcmRzID0gcGdfbWFsbG9jMCgoYXJnY291bnQgKyAxKSAqIHNpemVv Zigqa2V5d29yZHMpKTsKKwkJCXZhbHVlcyA9IHBnX21hbGxvYzAoKGFyZ2NvdW50ICsgMSkg KiBzaXplb2YoKnZhbHVlcykpOworCQl9CisKKwkJaWYgKHBnaG9zdCkKKwkJeworCQkJa2V5 d29yZHNbaV0gPSAiaG9zdCI7CisJCQl2YWx1ZXNbaV0gPSBwZ2hvc3Q7CisJCQlpKys7CisJ CX0KKwkJaWYgKHBncG9ydCkKKwkJeworCQkJa2V5d29yZHNbaV0gPSAicG9ydCI7CisJCQl2 YWx1ZXNbaV0gPSBwZ3BvcnQ7CisJCQlpKys7CisJCX0KKwkJaWYgKHBndXNlcikKKwkJewor CQkJa2V5d29yZHNbaV0gPSAidXNlciI7CisJCQl2YWx1ZXNbaV0gPSBwZ3VzZXI7CisJCQlp Kys7CisJCX0KKwkJaWYgKHBhc3N3b3JkKQorCQl7CisJCQlrZXl3b3Jkc1tpXSA9ICJwYXNz d29yZCI7CisJCQl2YWx1ZXNbaV0gPSBwYXNzd29yZDsKKwkJCWkrKzsKKwkJfQorCQlpZiAo ZGJuYW1lKQorCQl7CisJCQlrZXl3b3Jkc1tpXSA9ICJkYm5hbWUiOworCQkJdmFsdWVzW2ld ID0gZGJuYW1lOworCQkJaSsrOworCQl9CisJCWlmIChvdmVycmlkZV9kYm5hbWUpCisJCXsK KwkJCWtleXdvcmRzW2ldID0gImRibmFtZSI7CisJCQl2YWx1ZXNbaSsrXSA9IG92ZXJyaWRl X2RibmFtZTsKKwkJfQorCisJCWtleXdvcmRzW2ldID0gImZhbGxiYWNrX2FwcGxpY2F0aW9u X25hbWUiOworCQl2YWx1ZXNbaV0gPSBwcm9nbmFtZTsKKwkJaSsrOworCisJCW5ld19wYXNz ID0gZmFsc2U7CisJCWNvbm4gPSBQUWNvbm5lY3RkYlBhcmFtcyhrZXl3b3JkcywgdmFsdWVz LCB0cnVlKTsKKworCQlpZiAoIWNvbm4pCisJCQlwZ19mYXRhbCgiY291bGQgbm90IGNvbm5l Y3QgdG8gZGF0YWJhc2UgXCIlc1wiIiwgZGJuYW1lKTsKKworCQlpZiAoUFFzdGF0dXMoY29u bikgPT0gQ09OTkVDVElPTl9CQUQgJiYKKwkJCVBRY29ubmVjdGlvbk5lZWRzUGFzc3dvcmQo Y29ubikgJiYKKwkJCSFwYXNzd29yZCAmJgorCQkJcHJvbXB0X3Bhc3N3b3JkICE9IFRSSV9O TykKKwkJeworCQkJUFFmaW5pc2goY29ubik7CisJCQlwYXNzd29yZCA9IHNpbXBsZV9wcm9t cHQoIlBhc3N3b3JkOiAiLCBmYWxzZSk7CisJCQluZXdfcGFzcyA9IHRydWU7CisJCX0KKwl9 IHdoaWxlIChuZXdfcGFzcyk7CisKKwkvKiBjaGVjayB0byBzZWUgdGhhdCB0aGUgYmFja2Vu ZCBjb25uZWN0aW9uIHdhcyBzdWNjZXNzZnVsbHkgbWFkZSAqLworCWlmIChQUXN0YXR1cyhj b25uKSA9PSBDT05ORUNUSU9OX0JBRCkKKwl7CisJCWlmIChmYWlsX29uX2Vycm9yKQorCQkJ cGdfZmF0YWwoIiVzIiwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQllbHNlCisJCXsKKwkJ CVBRZmluaXNoKGNvbm4pOworCisJCQlmcmVlKGtleXdvcmRzKTsKKwkJCWZyZWUodmFsdWVz KTsKKwkJCVBRY29ubmluZm9GcmVlKGNvbm5fb3B0cyk7CisKKwkJCXJldHVybiBOVUxMOwor CQl9CisJfQorCisJLyoKKwkgKiBPaywgY29ubmVjdGVkIHN1Y2Nlc3NmdWxseS4gSWYgcmVx dWVzdGVkLCByZW1lbWJlciB0aGUgb3B0aW9ucyB1c2VkLCBpbgorCSAqIHRoZSBmb3JtIG9m IGEgY29ubmVjdGlvbiBzdHJpbmcuCisJICovCisJaWYgKGNvbm5zdHIpCisJCSpjb25uc3Ry ID0gY29uc3RydWN0Q29ublN0cihrZXl3b3JkcywgdmFsdWVzKTsKKworCWZyZWUoa2V5d29y ZHMpOworCWZyZWUodmFsdWVzKTsKKwlQUWNvbm5pbmZvRnJlZShjb25uX29wdHMpOworCisJ LyogQ2hlY2sgdmVyc2lvbiAqLworCXJlbW90ZXZlcnNpb25fc3RyID0gUFFwYXJhbWV0ZXJT dGF0dXMoY29ubiwgInNlcnZlcl92ZXJzaW9uIik7CisJaWYgKCFyZW1vdGV2ZXJzaW9uX3N0 cikKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBnZXQgc2VydmVyIHZlcnNpb24iKTsKKworCXNl cnZlcl92ZXJzaW9uX3RlbXAgPSBQUXNlcnZlclZlcnNpb24oY29ubik7CisJaWYgKHNlcnZl cl92ZXJzaW9uX3RlbXAgPT0gMCkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBwYXJzZSBzZXJ2 ZXIgdmVyc2lvbiBcIiVzXCIiLAorCQkJCSByZW1vdGV2ZXJzaW9uX3N0cik7CisKKwkvKiBJ ZiByZXF1ZXN0ZWQsIHRoZW4gY29weSBzZXJ2ZXIgdmVyc2lvbiB0byBvdXQgdmFyaWFibGUu ICovCisJaWYgKHNlcnZlcl92ZXJzaW9uKQorCQkqc2VydmVyX3ZlcnNpb24gPSBzZXJ2ZXJf dmVyc2lvbl90ZW1wOworCisJbXlfdmVyc2lvbiA9IFBHX1ZFUlNJT05fTlVNOworCisJLyoK KwkgKiBXZSBhbGxvdyB0aGUgc2VydmVyIHRvIGJlIGJhY2sgdG8gOS4yLCBhbmQgdXAgdG8g YW55IG1pbm9yIHJlbGVhc2Ugb2YKKwkgKiBvdXIgb3duIG1ham9yIHZlcnNpb24uICAoU2Vl IGFsc28gdmVyc2lvbiBjaGVjayBpbiBwZ19kdW1wLmMuKQorCSAqLworCWlmIChteV92ZXJz aW9uICE9IHNlcnZlcl92ZXJzaW9uX3RlbXAKKwkJJiYgKHNlcnZlcl92ZXJzaW9uX3RlbXAg PCA5MDIwMCB8fAorCQkJKHNlcnZlcl92ZXJzaW9uX3RlbXAgLyAxMDApID4gKG15X3ZlcnNp b24gLyAxMDApKSkKKwl7CisJCXBnX2xvZ19lcnJvcigiYWJvcnRpbmcgYmVjYXVzZSBvZiBz ZXJ2ZXIgdmVyc2lvbiBtaXNtYXRjaCIpOworCQlwZ19sb2dfZXJyb3JfZGV0YWlsKCJzZXJ2 ZXIgdmVyc2lvbjogJXM7ICVzIHZlcnNpb246ICVzIiwKKwkJCQkJCQlyZW1vdGV2ZXJzaW9u X3N0ciwgcHJvZ25hbWUsIFBHX1ZFUlNJT04pOworCQlleGl0X25pY2VseSgxKTsKKwl9CisK KwlQUWNsZWFyKGV4ZWN1dGVRdWVyeShjb25uLCBBTFdBWVNfU0VDVVJFX1NFQVJDSF9QQVRI X1NRTCkpOworCisJcmV0dXJuIGNvbm47Cit9CisKKy8qCisgKiBjb25zdHJ1Y3RDb25uU3Ry CisgKgorICogQ29uc3RydWN0IGEgY29ubmVjdGlvbiBzdHJpbmcgZnJvbSB0aGUgZ2l2ZW4g a2V5d29yZC92YWx1ZSBwYWlycy4gSXQgaXMKKyAqIHVzZWQgdG8gcGFzcyB0aGUgY29ubmVj dGlvbiBvcHRpb25zIHRvIHRoZSBwZ19kdW1wIHN1YnByb2Nlc3MuCisgKgorICogVGhlIGZv bGxvd2luZyBwYXJhbWV0ZXJzIGFyZSBleGNsdWRlZDoKKyAqCWRibmFtZQkJLSB2YXJpZXMg aW4gZWFjaCBwZ19kdW1wIGludm9jYXRpb24KKyAqCXBhc3N3b3JkCS0gaXQncyBub3Qgc2Vj dXJlIHRvIHBhc3MgYSBwYXNzd29yZCBvbiB0aGUgY29tbWFuZCBsaW5lCisgKglmYWxsYmFj a19hcHBsaWNhdGlvbl9uYW1lIC0gd2UnbGwgbGV0IHBnX2R1bXAgc2V0IGl0CisgKi8KK3N0 YXRpYyBjaGFyICoKK2NvbnN0cnVjdENvbm5TdHIoY29uc3QgY2hhciAqKmtleXdvcmRzLCBj b25zdCBjaGFyICoqdmFsdWVzKQoreworCVBRRXhwQnVmZmVyIGJ1ZiA9IGNyZWF0ZVBRRXhw QnVmZmVyKCk7CisJY2hhcgkgICAqY29ubnN0cjsKKwlpbnQJCQlpOworCWJvb2wJCWZpcnN0 a2V5d29yZCA9IHRydWU7CisKKwkvKiBDb25zdHJ1Y3QgYSBuZXcgY29ubmVjdGlvbiBzdHJp bmcgaW4ga2V5PSd2YWx1ZScgZm9ybWF0LiAqLworCWZvciAoaSA9IDA7IGtleXdvcmRzW2ld ICE9IE5VTEw7IGkrKykKKwl7CisJCWlmIChzdHJjbXAoa2V5d29yZHNbaV0sICJkYm5hbWUi KSA9PSAwIHx8CisJCQlzdHJjbXAoa2V5d29yZHNbaV0sICJwYXNzd29yZCIpID09IDAgfHwK KwkJCXN0cmNtcChrZXl3b3Jkc1tpXSwgImZhbGxiYWNrX2FwcGxpY2F0aW9uX25hbWUiKSA9 PSAwKQorCQkJY29udGludWU7CisKKwkJaWYgKCFmaXJzdGtleXdvcmQpCisJCQlhcHBlbmRQ UUV4cEJ1ZmZlckNoYXIoYnVmLCAnICcpOworCQlmaXJzdGtleXdvcmQgPSBmYWxzZTsKKwkJ YXBwZW5kUFFFeHBCdWZmZXIoYnVmLCAiJXM9Iiwga2V5d29yZHNbaV0pOworCQlhcHBlbmRD b25uU3RyVmFsKGJ1ZiwgdmFsdWVzW2ldKTsKKwl9CisKKwljb25uc3RyID0gcGdfc3RyZHVw KGJ1Zi0+ZGF0YSk7CisJZGVzdHJveVBRRXhwQnVmZmVyKGJ1Zik7CisJcmV0dXJuIGNvbm5z dHI7Cit9CisKKy8qCisgKiBleGVjdXRlUXVlcnkKKyAqCisgKiBSdW4gYSBxdWVyeSwgcmV0 dXJuIHRoZSByZXN1bHRzLCBleGl0IHByb2dyYW0gb24gZmFpbHVyZS4KKyAqLworUEdyZXN1 bHQgKgorZXhlY3V0ZVF1ZXJ5KFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcXVlcnkpCit7 CisJUEdyZXN1bHQgICAqcmVzOworCisJcGdfbG9nX2luZm8oImV4ZWN1dGluZyAlcyIsIHF1 ZXJ5KTsKKworCXJlcyA9IFBRZXhlYyhjb25uLCBxdWVyeSk7CisJaWYgKCFyZXMgfHwKKwkJ UFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19UVVBMRVNfT0spCisJeworCQlwZ19sb2df ZXJyb3IoInF1ZXJ5IGZhaWxlZDogJXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCXBn X2xvZ19lcnJvcl9kZXRhaWwoIlF1ZXJ5IHdhczogJXMiLCBxdWVyeSk7CisJCVBRZmluaXNo KGNvbm4pOworCQlleGl0X25pY2VseSgxKTsKKwl9CisKKwlyZXR1cm4gcmVzOworfQpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL2Nvbm5lY3RkYi5oIGIvc3JjL2Jpbi9wZ19kdW1w L2Nvbm5lY3RkYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42 YzFlMTk1NDc2OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9jb25uZWN0 ZGIuaApAQCAtMCwwICsxLDI2IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBj b25uZWN0ZGIuaAorICogICAgICBDb21tb24gaGVhZGVyIGZpbGUgZm9yIGNvbm5lY3Rpb24g dG8gdGhlIGRhdGFiYXNlLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0y MDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMg Q29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlm b3JuaWEKKyAqCisgKiBJREVOVElGSUNBVElPTgorICogICAgc3JjL2Jpbi9wZ19kdW1wL2Nv bm5lY3RkYi5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgQ09O TkVDVERCX0gKKyNkZWZpbmUgQ09OTkVDVERCX0gKKworI2luY2x1ZGUgInBnX2JhY2t1cC5o IgorI2luY2x1ZGUgInBnX2JhY2t1cF91dGlscy5oIgorCitleHRlcm4gUEdjb25uICpDb25u ZWN0RGF0YWJhc2UoY29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICpjb25uZWN0aW9u X3N0cmluZywgY29uc3QgY2hhciAqcGdob3N0LAorCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnBn cG9ydCwgY29uc3QgY2hhciAqcGd1c2VyLAorCQkJCQkJCSAgIHRyaXZhbHVlIHByb21wdF9w YXNzd29yZCwgYm9vbCBmYWlsX29uX2Vycm9yLAorCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnBy b2duYW1lLCBjb25zdCBjaGFyICoqY29ubnN0ciwgaW50ICpzZXJ2ZXJfdmVyc2lvbiwKKwkJ CQkJCQkgICBjaGFyICpwYXNzd29yZCwgY2hhciAqb3ZlcnJpZGVfZGJuYW1lKTsKK2V4dGVy biBQR3Jlc3VsdCAqZXhlY3V0ZVF1ZXJ5KFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcXVl cnkpOworI2VuZGlmCQkJCQkJCS8qIENPTk5FQ1REQl9IICovCmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX2R1bXAvbWVzb24uYnVpbGQgYi9zcmMvYmluL3BnX2R1bXAvbWVzb24uYnVpbGQK aW5kZXggNjAzYmE2Y2ZiZjAuLjI1OTg5ZThmMTZiIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X2R1bXAvbWVzb24uYnVpbGQKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL21lc29uLmJ1aWxkCkBA IC02LDYgKzYsNyBAQCBwZ19kdW1wX2NvbW1vbl9zb3VyY2VzID0gZmlsZXMoCiAgICdjb21w cmVzc19sejQuYycsCiAgICdjb21wcmVzc19ub25lLmMnLAogICAnY29tcHJlc3NfenN0ZC5j JywKKyAgJ2Nvbm5lY3RkYi5jJywKICAgJ2R1bXB1dGlscy5jJywKICAgJ2ZpbHRlci5jJywK ICAgJ3BhcmFsbGVsLmMnLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1 cC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5oCmluZGV4IDY1ODk4NmRlNmY4Li40 OWJjMWVlNzFlZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5oCisr KyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXAuaApAQCAtMjkzLDkgKzI5Myw5IEBAIHR5 cGVkZWYgdm9pZCAoKlNldHVwV29ya2VyUHRyVHlwZSkgKEFyY2hpdmUgKkFIKTsKICAqIE1h aW4gYXJjaGl2ZXIgaW50ZXJmYWNlLgogICovCiAKLWV4dGVybiB2b2lkIENvbm5lY3REYXRh YmFzZShBcmNoaXZlICpBSFgsCi0JCQkJCQkJY29uc3QgQ29ublBhcmFtcyAqY3BhcmFtcywK LQkJCQkJCQlib29sIGlzUmVjb25uZWN0KTsKK2V4dGVybiB2b2lkIENvbm5lY3REYXRhYmFz ZUFoeChBcmNoaXZlICpBSFgsCisJCQkJCQkJICAgY29uc3QgQ29ublBhcmFtcyAqY3BhcmFt cywKKwkJCQkJCQkgICBib29sIGlzUmVjb25uZWN0KTsKIGV4dGVybiB2b2lkIERpc2Nvbm5l Y3REYXRhYmFzZShBcmNoaXZlICpBSFgpOwogZXh0ZXJuIFBHY29ubiAqR2V0Q29ubmVjdGlv bihBcmNoaXZlICpBSFgpOwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFj a3VwX2FyY2hpdmVyLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMK aW5kZXggMWQxMzFlNWE1N2QuLjNmNTlmOGY5ZDlkIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2Jh Y2t1cF9hcmNoaXZlci5jCkBAIC00MTUsNyArNDE1LDcgQEAgUmVzdG9yZUFyY2hpdmUoQXJj aGl2ZSAqQUhYKQogCQlBSFgtPm1pblJlbW90ZVZlcnNpb24gPSAwOwogCQlBSFgtPm1heFJl bW90ZVZlcnNpb24gPSA5OTk5OTk5OwogCi0JCUNvbm5lY3REYXRhYmFzZShBSFgsICZyb3B0 LT5jcGFyYW1zLCBmYWxzZSk7CisJCUNvbm5lY3REYXRhYmFzZUFoeChBSFgsICZyb3B0LT5j cGFyYW1zLCBmYWxzZSk7CiAKIAkJLyoKIAkJICogSWYgd2UncmUgdGFsa2luZyB0byB0aGUg REIgZGlyZWN0bHksIGRvbid0IHNlbmQgY29tbWVudHMgc2luY2UgdGhleQpAQCAtNDQ1OCw3 ICs0NDU4LDcgQEAgcmVzdG9yZV90b2NfZW50cmllc19wb3N0Zm9yayhBcmNoaXZlSGFuZGxl ICpBSCwgVG9jRW50cnkgKnBlbmRpbmdfbGlzdCkKIAkvKgogCSAqIE5vdyByZWNvbm5lY3Qg dGhlIHNpbmdsZSBwYXJlbnQgY29ubmVjdGlvbi4KIAkgKi8KLQlDb25uZWN0RGF0YWJhc2Uo KEFyY2hpdmUgKikgQUgsICZyb3B0LT5jcGFyYW1zLCB0cnVlKTsKKwlDb25uZWN0RGF0YWJh c2VBaHgoKEFyY2hpdmUgKikgQUgsICZyb3B0LT5jcGFyYW1zLCB0cnVlKTsKIAogCS8qIHJl LWVzdGFibGlzaCBmaXhlZCBzdGF0ZSAqLwogCV9kb1NldEZpeGVkT3V0cHV0U3RhdGUoQUgp OwpAQCAtNTA3Niw3ICs1MDc2LDcgQEAgQ2xvbmVBcmNoaXZlKEFyY2hpdmVIYW5kbGUgKkFI KQogCSAqIENvbm5lY3Qgb3VyIG5ldyBjbG9uZSBvYmplY3QgdG8gdGhlIGRhdGFiYXNlLCB1 c2luZyB0aGUgc2FtZSBjb25uZWN0aW9uCiAJICogcGFyYW1ldGVycyB1c2VkIGZvciB0aGUg b3JpZ2luYWwgY29ubmVjdGlvbi4KIAkgKi8KLQlDb25uZWN0RGF0YWJhc2UoKEFyY2hpdmUg KikgY2xvbmUsICZjbG9uZS0+cHVibGljLnJvcHQtPmNwYXJhbXMsIHRydWUpOworCUNvbm5l Y3REYXRhYmFzZUFoeCgoQXJjaGl2ZSAqKSBjbG9uZSwgJmNsb25lLT5wdWJsaWMucm9wdC0+ Y3BhcmFtcywgdHJ1ZSk7CiAKIAkvKiByZS1lc3RhYmxpc2ggZml4ZWQgc3RhdGUgKi8KIAlp ZiAoQUgtPm1vZGUgPT0gYXJjaE1vZGVSZWFkKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19k dW1wL3BnX2JhY2t1cF9kYi5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9kYi5jCmlu ZGV4IDcxYzU1ZDI0NjZhLi41YzM0OTI3OWJlYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19k dW1wL3BnX2JhY2t1cF9kYi5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfZGIu YwpAQCAtMTksNiArMTksNyBAQAogCiAjaW5jbHVkZSAiY29tbW9uL2Nvbm5lY3QuaCIKICNp bmNsdWRlICJjb21tb24vc3RyaW5nLmgiCisjaW5jbHVkZSAiY29ubmVjdGRiLmgiCiAjaW5j bHVkZSAicGFyYWxsZWwuaCIKICNpbmNsdWRlICJwZ19iYWNrdXBfYXJjaGl2ZXIuaCIKICNp bmNsdWRlICJwZ19iYWNrdXBfZGIuaCIKQEAgLTg2LDkgKzg3LDkgQEAgUmVjb25uZWN0VG9T ZXJ2ZXIoQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNoYXIgKmRibmFtZSkKIAkgKiBBcmNo aXZlSGFuZGxlJ3MgY29ubkNhbmNlbCwgYmVmb3JlIGNsb3Npbmcgb2xkIGNvbm5lY3Rpb24u ICBPdGhlcndpc2UKIAkgKiBhbiBpbGwtdGltZWQgU0lHSU5UIGNvdWxkIHRyeSB0byBhY2Nl c3MgYSBkZWFkIGNvbm5lY3Rpb24uCiAJICovCi0JQUgtPmNvbm5lY3Rpb24gPSBOVUxMOwkJ LyogZG9kZ2UgZXJyb3IgY2hlY2sgaW4gQ29ubmVjdERhdGFiYXNlICovCisJQUgtPmNvbm5l Y3Rpb24gPSBOVUxMOwkJLyogZG9kZ2UgZXJyb3IgY2hlY2sgaW4gQ29ubmVjdERhdGFiYXNl QWh4ICovCiAKLQlDb25uZWN0RGF0YWJhc2UoKEFyY2hpdmUgKikgQUgsICZyb3B0LT5jcGFy YW1zLCB0cnVlKTsKKwlDb25uZWN0RGF0YWJhc2VBaHgoKEFyY2hpdmUgKikgQUgsICZyb3B0 LT5jcGFyYW1zLCB0cnVlKTsKIAogCVBRZmluaXNoKG9sZENvbm4pOwogfQpAQCAtMTA1LDE0 ICsxMDYsMTMgQEAgUmVjb25uZWN0VG9TZXJ2ZXIoQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0 IGNoYXIgKmRibmFtZSkKICAqIHVzZXJuYW1lIG5ldmVyIGRvZXMgY2hhbmdlLCBzbyBvbmUg c2F2ZWRQYXNzd29yZCBpcyBzdWZmaWNpZW50LgogICovCiB2b2lkCi1Db25uZWN0RGF0YWJh c2UoQXJjaGl2ZSAqQUhYLAotCQkJCWNvbnN0IENvbm5QYXJhbXMgKmNwYXJhbXMsCi0JCQkJ Ym9vbCBpc1JlY29ubmVjdCkKK0Nvbm5lY3REYXRhYmFzZUFoeChBcmNoaXZlICpBSFgsCisJ CQkJICAgY29uc3QgQ29ublBhcmFtcyAqY3BhcmFtcywKKwkJCQkgICBib29sIGlzUmVjb25u ZWN0KQogewogCUFyY2hpdmVIYW5kbGUgKkFIID0gKEFyY2hpdmVIYW5kbGUgKikgQUhYOwog CXRyaXZhbHVlCXByb21wdF9wYXNzd29yZDsKIAljaGFyCSAgICpwYXNzd29yZDsKLQlib29s CQluZXdfcGFzczsKIAogCWlmIChBSC0+Y29ubmVjdGlvbikKIAkJcGdfZmF0YWwoImFscmVh ZHkgY29ubmVjdGVkIHRvIGEgZGF0YWJhc2UiKTsKQEAgLTEyNSw2OSArMTI1LDEwIEBAIENv bm5lY3REYXRhYmFzZShBcmNoaXZlICpBSFgsCiAJaWYgKHByb21wdF9wYXNzd29yZCA9PSBU UklfWUVTICYmIHBhc3N3b3JkID09IE5VTEwpCiAJCXBhc3N3b3JkID0gc2ltcGxlX3Byb21w dCgiUGFzc3dvcmQ6ICIsIGZhbHNlKTsKIAotCS8qCi0JICogU3RhcnQgdGhlIGNvbm5lY3Rp b24uICBMb29wIHVudGlsIHdlIGhhdmUgYSBwYXNzd29yZCBpZiByZXF1ZXN0ZWQgYnkKLQkg KiBiYWNrZW5kLgotCSAqLwotCWRvCi0JewotCQljb25zdCBjaGFyICprZXl3b3Jkc1s4XTsK LQkJY29uc3QgY2hhciAqdmFsdWVzWzhdOwotCQlpbnQJCQlpID0gMDsKLQotCQkvKgotCQkg KiBJZiBkYm5hbWUgaXMgYSBjb25uc3RyaW5nLCBpdHMgZW50cmllcyBjYW4gb3ZlcnJpZGUg dGhlIG90aGVyCi0JCSAqIHZhbHVlcyBvYnRhaW5lZCBmcm9tIGNwYXJhbXM7IGJ1dCBpbiB0 dXJuLCBvdmVycmlkZV9kYm5hbWUgY2FuCi0JCSAqIG92ZXJyaWRlIHRoZSBkYm5hbWUgY29t cG9uZW50IG9mIGl0LgotCQkgKi8KLQkJa2V5d29yZHNbaV0gPSAiaG9zdCI7Ci0JCXZhbHVl c1tpKytdID0gY3BhcmFtcy0+cGdob3N0OwotCQlrZXl3b3Jkc1tpXSA9ICJwb3J0IjsKLQkJ dmFsdWVzW2krK10gPSBjcGFyYW1zLT5wZ3BvcnQ7Ci0JCWtleXdvcmRzW2ldID0gInVzZXIi OwotCQl2YWx1ZXNbaSsrXSA9IGNwYXJhbXMtPnVzZXJuYW1lOwotCQlrZXl3b3Jkc1tpXSA9 ICJwYXNzd29yZCI7Ci0JCXZhbHVlc1tpKytdID0gcGFzc3dvcmQ7Ci0JCWtleXdvcmRzW2ld ID0gImRibmFtZSI7Ci0JCXZhbHVlc1tpKytdID0gY3BhcmFtcy0+ZGJuYW1lOwotCQlpZiAo Y3BhcmFtcy0+b3ZlcnJpZGVfZGJuYW1lKQotCQl7Ci0JCQlrZXl3b3Jkc1tpXSA9ICJkYm5h bWUiOwotCQkJdmFsdWVzW2krK10gPSBjcGFyYW1zLT5vdmVycmlkZV9kYm5hbWU7Ci0JCX0K LQkJa2V5d29yZHNbaV0gPSAiZmFsbGJhY2tfYXBwbGljYXRpb25fbmFtZSI7Ci0JCXZhbHVl c1tpKytdID0gcHJvZ25hbWU7Ci0JCWtleXdvcmRzW2ldID0gTlVMTDsKLQkJdmFsdWVzW2kr K10gPSBOVUxMOwotCQlBc3NlcnQoaSA8PSBsZW5ndGhvZihrZXl3b3JkcykpOwotCi0JCW5l d19wYXNzID0gZmFsc2U7Ci0JCUFILT5jb25uZWN0aW9uID0gUFFjb25uZWN0ZGJQYXJhbXMo a2V5d29yZHMsIHZhbHVlcywgdHJ1ZSk7Ci0KLQkJaWYgKCFBSC0+Y29ubmVjdGlvbikKLQkJ CXBnX2ZhdGFsKCJjb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZSIpOwotCi0JCWlmIChQ UXN0YXR1cyhBSC0+Y29ubmVjdGlvbikgPT0gQ09OTkVDVElPTl9CQUQgJiYKLQkJCVBRY29u bmVjdGlvbk5lZWRzUGFzc3dvcmQoQUgtPmNvbm5lY3Rpb24pICYmCi0JCQlwYXNzd29yZCA9 PSBOVUxMICYmCi0JCQlwcm9tcHRfcGFzc3dvcmQgIT0gVFJJX05PKQotCQl7Ci0JCQlQUWZp bmlzaChBSC0+Y29ubmVjdGlvbik7Ci0JCQlwYXNzd29yZCA9IHNpbXBsZV9wcm9tcHQoIlBh c3N3b3JkOiAiLCBmYWxzZSk7Ci0JCQluZXdfcGFzcyA9IHRydWU7Ci0JCX0KLQl9IHdoaWxl IChuZXdfcGFzcyk7Ci0KLQkvKiBjaGVjayB0byBzZWUgdGhhdCB0aGUgYmFja2VuZCBjb25u ZWN0aW9uIHdhcyBzdWNjZXNzZnVsbHkgbWFkZSAqLwotCWlmIChQUXN0YXR1cyhBSC0+Y29u bmVjdGlvbikgPT0gQ09OTkVDVElPTl9CQUQpCi0JewotCQlpZiAoaXNSZWNvbm5lY3QpCi0J CQlwZ19mYXRhbCgicmVjb25uZWN0aW9uIGZhaWxlZDogJXMiLAotCQkJCQkgUFFlcnJvck1l c3NhZ2UoQUgtPmNvbm5lY3Rpb24pKTsKLQkJZWxzZQotCQkJcGdfZmF0YWwoIiVzIiwKLQkJ CQkJIFBRZXJyb3JNZXNzYWdlKEFILT5jb25uZWN0aW9uKSk7Ci0JfQorCUFILT5jb25uZWN0 aW9uID0gQ29ubmVjdERhdGFiYXNlKGNwYXJhbXMtPmRibmFtZSwgTlVMTCwgY3BhcmFtcy0+ cGdob3N0LAorCQkJCQkJCQkJIGNwYXJhbXMtPnBncG9ydCwgY3BhcmFtcy0+dXNlcm5hbWUs CisJCQkJCQkJCQkgcHJvbXB0X3Bhc3N3b3JkLCB0cnVlLAorCQkJCQkJCQkJIHByb2duYW1l LCBOVUxMLCBOVUxMLCBwYXNzd29yZCwgY3BhcmFtcy0+b3ZlcnJpZGVfZGJuYW1lKTsKIAog CS8qIFN0YXJ0IHN0cmljdDsgbGF0ZXIgcGhhc2VzIG1heSBvdmVycmlkZSB0aGlzLiAqLwog CVBRY2xlYXIoRXhlY3V0ZVNxbFF1ZXJ5Rm9yU2luZ2xlUm93KChBcmNoaXZlICopIEFILApk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmMKaW5kZXggNGNhMzRiZTIzMGMuLmY4NGVhNmVjYzQ4IDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMKQEAgLTk2Niw3ICs5NjYsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK IAkgKiBPcGVuIHRoZSBkYXRhYmFzZSB1c2luZyB0aGUgQXJjaGl2ZXIsIHNvIGl0IGtub3dz IGFib3V0IGl0LiBFcnJvcnMgbWVhbgogCSAqIGRlYXRoLgogCSAqLwotCUNvbm5lY3REYXRh YmFzZShmb3V0LCAmZG9wdC5jcGFyYW1zLCBmYWxzZSk7CisJQ29ubmVjdERhdGFiYXNlQWh4 KGZvdXQsICZkb3B0LmNwYXJhbXMsIGZhbHNlKTsKIAlzZXR1cF9jb25uZWN0aW9uKGZvdXQs IGR1bXBlbmNvZGluZywgZHVtcHNuYXBzaG90LCB1c2Vfcm9sZSk7CiAKIAkvKgpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBhbGwuYyBiL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wYWxsLmMKaW5kZXggMmVhNTc0YjBmMDYuLjU3M2E4YjYxYTQ1IDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcGFsbC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wYWxsLmMKQEAgLTI0LDExICsyNCwxMSBAQAogI2luY2x1ZGUgImNvbW1vbi9oYXNo Zm5fdW5zdGFibGUuaCIKICNpbmNsdWRlICJjb21tb24vbG9nZ2luZy5oIgogI2luY2x1ZGUg ImNvbW1vbi9zdHJpbmcuaCIKKyNpbmNsdWRlICJjb25uZWN0ZGIuaCIKICNpbmNsdWRlICJk dW1wdXRpbHMuaCIKICNpbmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMuaCIKICNpbmNs dWRlICJmaWx0ZXIuaCIKICNpbmNsdWRlICJnZXRvcHRfbG9uZy5oIgotI2luY2x1ZGUgInBn X2JhY2t1cC5oIgogCiAvKiB2ZXJzaW9uIHN0cmluZyB3ZSBleHBlY3QgYmFjayBmcm9tIHBn X2R1bXAgKi8KICNkZWZpbmUgUEdEVU1QX1ZFUlNJT05TVFIgInBnX2R1bXAgKFBvc3RncmVT UUwpICIgUEdfVkVSU0lPTiAiXG4iCkBAIC03MSwyMSArNzEsMTQgQEAgc3RhdGljIHZvaWQg YnVpbGRTaFNlY0xhYmVscyhQR2Nvbm4gKmNvbm4sCiAJCQkJCQkJIGNvbnN0IGNoYXIgKmNh dGFsb2dfbmFtZSwgT2lkIG9iamVjdElkLAogCQkJCQkJCSBjb25zdCBjaGFyICpvYmp0eXBl LCBjb25zdCBjaGFyICpvYmpuYW1lLAogCQkJCQkJCSBQUUV4cEJ1ZmZlciBidWZmZXIpOwot c3RhdGljIFBHY29ubiAqY29ubmVjdERhdGFiYXNlKGNvbnN0IGNoYXIgKmRibmFtZSwKLQkJ CQkJCQkgICBjb25zdCBjaGFyICpjb25uZWN0aW9uX3N0cmluZywgY29uc3QgY2hhciAqcGdo b3N0LAotCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnBncG9ydCwgY29uc3QgY2hhciAqcGd1c2Vy LAotCQkJCQkJCSAgIHRyaXZhbHVlIHByb21wdF9wYXNzd29yZCwgYm9vbCBmYWlsX29uX2Vy cm9yKTsKLXN0YXRpYyBjaGFyICpjb25zdHJ1Y3RDb25uU3RyKGNvbnN0IGNoYXIgKiprZXl3 b3JkcywgY29uc3QgY2hhciAqKnZhbHVlcyk7Ci1zdGF0aWMgUEdyZXN1bHQgKmV4ZWN1dGVR dWVyeShQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnF1ZXJ5KTsKIHN0YXRpYyB2b2lkIGV4 ZWN1dGVDb21tYW5kKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcXVlcnkpOwogc3RhdGlj IHZvaWQgZXhwYW5kX2RibmFtZV9wYXR0ZXJucyhQR2Nvbm4gKmNvbm4sIFNpbXBsZVN0cmlu Z0xpc3QgKnBhdHRlcm5zLAogCQkJCQkJCQkgICBTaW1wbGVTdHJpbmdMaXN0ICpuYW1lcyk7 CiBzdGF0aWMgdm9pZCByZWFkX2R1bXBhbGxfZmlsdGVycyhjb25zdCBjaGFyICpmaWxlbmFt ZSwgU2ltcGxlU3RyaW5nTGlzdCAqcGF0dGVybik7CiAKIHN0YXRpYyBjaGFyIHBnX2R1bXBf YmluW01BWFBHUEFUSF07Ci1zdGF0aWMgY29uc3QgY2hhciAqcHJvZ25hbWU7CiBzdGF0aWMg UFFFeHBCdWZmZXIgcGdkdW1wb3B0czsKLXN0YXRpYyBjaGFyICpjb25uc3RyID0gIiI7Citz dGF0aWMgY29uc3QgY2hhciAqY29ubnN0ciA9ICIiOwogc3RhdGljIGJvb2wgb3V0cHV0X2Ns ZWFuID0gZmFsc2U7CiBzdGF0aWMgYm9vbCBza2lwX2FjbHMgPSBmYWxzZTsKIHN0YXRpYyBi b29sIHZlcmJvc2UgPSBmYWxzZTsKQEAgLTEyOSw4ICsxMjIsNiBAQCBzdGF0aWMgY2hhciAq ZmlsZW5hbWUgPSBOVUxMOwogc3RhdGljIFNpbXBsZVN0cmluZ0xpc3QgZGF0YWJhc2VfZXhj bHVkZV9wYXR0ZXJucyA9IHtOVUxMLCBOVUxMfTsKIHN0YXRpYyBTaW1wbGVTdHJpbmdMaXN0 IGRhdGFiYXNlX2V4Y2x1ZGVfbmFtZXMgPSB7TlVMTCwgTlVMTH07CiAKLSNkZWZpbmUgZXhp dF9uaWNlbHkoY29kZSkgZXhpdChjb2RlKQotCiBpbnQKIG1haW4oaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKIHsKQEAgLTQ5OSwxOSArNDkwLDIyIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKIAkgKi8KIAlpZiAocGdkYikKIAl7Ci0JCWNvbm4gPSBjb25uZWN0RGF0YWJh c2UocGdkYiwgY29ubnN0ciwgcGdob3N0LCBwZ3BvcnQsIHBndXNlciwKLQkJCQkJCQkgICBw cm9tcHRfcGFzc3dvcmQsIGZhbHNlKTsKKwkJY29ubiA9IENvbm5lY3REYXRhYmFzZShwZ2Ri LCBjb25uc3RyLCBwZ2hvc3QsIHBncG9ydCwgcGd1c2VyLAorCQkJCQkJCSAgIHByb21wdF9w YXNzd29yZCwgZmFsc2UsCisJCQkJCQkJICAgcHJvZ25hbWUsICZjb25uc3RyLCAmc2VydmVy X3ZlcnNpb24sIE5VTEwsIE5VTEwpOwogCiAJCWlmICghY29ubikKIAkJCXBnX2ZhdGFsKCJj b3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZSBcIiVzXCIiLCBwZ2RiKTsKIAl9CiAJZWxz ZQogCXsKLQkJY29ubiA9IGNvbm5lY3REYXRhYmFzZSgicG9zdGdyZXMiLCBjb25uc3RyLCBw Z2hvc3QsIHBncG9ydCwgcGd1c2VyLAotCQkJCQkJCSAgIHByb21wdF9wYXNzd29yZCwgZmFs c2UpOworCQljb25uID0gQ29ubmVjdERhdGFiYXNlKCJwb3N0Z3JlcyIsIGNvbm5zdHIsIHBn aG9zdCwgcGdwb3J0LCBwZ3VzZXIsCisJCQkJCQkJICAgcHJvbXB0X3Bhc3N3b3JkLCBmYWxz ZSwKKwkJCQkJCQkgICBwcm9nbmFtZSwgJmNvbm5zdHIsICZzZXJ2ZXJfdmVyc2lvbiwgTlVM TCwgTlVMTCk7CiAJCWlmICghY29ubikKLQkJCWNvbm4gPSBjb25uZWN0RGF0YWJhc2UoInRl bXBsYXRlMSIsIGNvbm5zdHIsIHBnaG9zdCwgcGdwb3J0LCBwZ3VzZXIsCi0JCQkJCQkJCSAg IHByb21wdF9wYXNzd29yZCwgdHJ1ZSk7CisJCQljb25uID0gQ29ubmVjdERhdGFiYXNlKCJ0 ZW1wbGF0ZTEiLCBjb25uc3RyLCBwZ2hvc3QsIHBncG9ydCwgcGd1c2VyLAorCQkJCQkJCQkg ICBwcm9tcHRfcGFzc3dvcmQsIHRydWUsCisJCQkJCQkJCSAgIHByb2duYW1lLCAmY29ubnN0 ciwgJnNlcnZlcl92ZXJzaW9uLCBOVUxMLCBOVUxMKTsKIAogCQlpZiAoIWNvbm4pCiAJCXsK QEAgLTE3MzgsMjU2ICsxNzMyLDYgQEAgYnVpbGRTaFNlY0xhYmVscyhQR2Nvbm4gKmNvbm4s IGNvbnN0IGNoYXIgKmNhdGFsb2dfbmFtZSwgT2lkIG9iamVjdElkLAogCWRlc3Ryb3lQUUV4 cEJ1ZmZlcihzcWwpOwogfQogCi0vKgotICogTWFrZSBhIGRhdGFiYXNlIGNvbm5lY3Rpb24g d2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy4gIEFuCi0gKiBpbnRlcmFjdGl2ZSBwYXNzd29y ZCBwcm9tcHQgaXMgYXV0b21hdGljYWxseSBpc3N1ZWQgaWYgcmVxdWlyZWQuCi0gKgotICog SWYgZmFpbF9vbl9lcnJvciBpcyBmYWxzZSwgd2UgcmV0dXJuIE5VTEwgd2l0aG91dCBwcmlu dGluZyBhbnkgbWVzc2FnZQotICogb24gZmFpbHVyZSwgYnV0IHByZXNlcnZlIGFueSBwcm9t cHRlZCBwYXNzd29yZCBmb3IgdGhlIG5leHQgdHJ5LgotICoKLSAqIE9uIHN1Y2Nlc3MsIHRo ZSBnbG9iYWwgdmFyaWFibGUgJ2Nvbm5zdHInIGlzIHNldCB0byBhIGNvbm5lY3Rpb24gc3Ry aW5nCi0gKiBjb250YWluaW5nIHRoZSBvcHRpb25zIHVzZWQuCi0gKi8KLXN0YXRpYyBQR2Nv bm4gKgotY29ubmVjdERhdGFiYXNlKGNvbnN0IGNoYXIgKmRibmFtZSwgY29uc3QgY2hhciAq Y29ubmVjdGlvbl9zdHJpbmcsCi0JCQkJY29uc3QgY2hhciAqcGdob3N0LCBjb25zdCBjaGFy ICpwZ3BvcnQsIGNvbnN0IGNoYXIgKnBndXNlciwKLQkJCQl0cml2YWx1ZSBwcm9tcHRfcGFz c3dvcmQsIGJvb2wgZmFpbF9vbl9lcnJvcikKLXsKLQlQR2Nvbm4JICAgKmNvbm47Ci0JYm9v bAkJbmV3X3Bhc3M7Ci0JY29uc3QgY2hhciAqcmVtb3RldmVyc2lvbl9zdHI7Ci0JaW50CQkJ bXlfdmVyc2lvbjsKLQljb25zdCBjaGFyICoqa2V5d29yZHMgPSBOVUxMOwotCWNvbnN0IGNo YXIgKip2YWx1ZXMgPSBOVUxMOwotCVBRY29ubmluZm9PcHRpb24gKmNvbm5fb3B0cyA9IE5V TEw7Ci0Jc3RhdGljIGNoYXIgKnBhc3N3b3JkID0gTlVMTDsKLQotCWlmIChwcm9tcHRfcGFz c3dvcmQgPT0gVFJJX1lFUyAmJiAhcGFzc3dvcmQpCi0JCXBhc3N3b3JkID0gc2ltcGxlX3By b21wdCgiUGFzc3dvcmQ6ICIsIGZhbHNlKTsKLQotCS8qCi0JICogU3RhcnQgdGhlIGNvbm5l Y3Rpb24uICBMb29wIHVudGlsIHdlIGhhdmUgYSBwYXNzd29yZCBpZiByZXF1ZXN0ZWQgYnkK LQkgKiBiYWNrZW5kLgotCSAqLwotCWRvCi0JewotCQlpbnQJCQlhcmdjb3VudCA9IDY7Ci0J CVBRY29ubmluZm9PcHRpb24gKmNvbm5fb3B0OwotCQljaGFyCSAgICplcnJfbXNnID0gTlVM TDsKLQkJaW50CQkJaSA9IDA7Ci0KLQkJZnJlZShrZXl3b3Jkcyk7Ci0JCWZyZWUodmFsdWVz KTsKLQkJUFFjb25uaW5mb0ZyZWUoY29ubl9vcHRzKTsKLQotCQkvKgotCQkgKiBNZXJnZSB0 aGUgY29ubmVjdGlvbiBpbmZvIGlucHV0cyBnaXZlbiBpbiBmb3JtIG9mIGNvbm5lY3Rpb24g c3RyaW5nCi0JCSAqIGFuZCBvdGhlciBvcHRpb25zLiAgRXhwbGljaXRseSBkaXNjYXJkIGFu eSBkYm5hbWUgdmFsdWUgaW4gdGhlCi0JCSAqIGNvbm5lY3Rpb24gc3RyaW5nOyBvdGhlcndp c2UsIFBRY29ubmVjdGRiUGFyYW1zKCkgd291bGQgaW50ZXJwcmV0Ci0JCSAqIHRoYXQgdmFs dWUgYXMgYmVpbmcgaXRzZWxmIGEgY29ubmVjdGlvbiBzdHJpbmcuCi0JCSAqLwotCQlpZiAo Y29ubmVjdGlvbl9zdHJpbmcpCi0JCXsKLQkJCWNvbm5fb3B0cyA9IFBRY29ubmluZm9QYXJz ZShjb25uZWN0aW9uX3N0cmluZywgJmVycl9tc2cpOwotCQkJaWYgKGNvbm5fb3B0cyA9PSBO VUxMKQotCQkJCXBnX2ZhdGFsKCIlcyIsIGVycl9tc2cpOwotCi0JCQlmb3IgKGNvbm5fb3B0 ID0gY29ubl9vcHRzOyBjb25uX29wdC0+a2V5d29yZCAhPSBOVUxMOyBjb25uX29wdCsrKQot CQkJewotCQkJCWlmIChjb25uX29wdC0+dmFsICE9IE5VTEwgJiYgY29ubl9vcHQtPnZhbFsw XSAhPSAnXDAnICYmCi0JCQkJCXN0cmNtcChjb25uX29wdC0+a2V5d29yZCwgImRibmFtZSIp ICE9IDApCi0JCQkJCWFyZ2NvdW50Kys7Ci0JCQl9Ci0KLQkJCWtleXdvcmRzID0gcGdfbWFs bG9jMCgoYXJnY291bnQgKyAxKSAqIHNpemVvZigqa2V5d29yZHMpKTsKLQkJCXZhbHVlcyA9 IHBnX21hbGxvYzAoKGFyZ2NvdW50ICsgMSkgKiBzaXplb2YoKnZhbHVlcykpOwotCi0JCQlm b3IgKGNvbm5fb3B0ID0gY29ubl9vcHRzOyBjb25uX29wdC0+a2V5d29yZCAhPSBOVUxMOyBj b25uX29wdCsrKQotCQkJewotCQkJCWlmIChjb25uX29wdC0+dmFsICE9IE5VTEwgJiYgY29u bl9vcHQtPnZhbFswXSAhPSAnXDAnICYmCi0JCQkJCXN0cmNtcChjb25uX29wdC0+a2V5d29y ZCwgImRibmFtZSIpICE9IDApCi0JCQkJewotCQkJCQlrZXl3b3Jkc1tpXSA9IGNvbm5fb3B0 LT5rZXl3b3JkOwotCQkJCQl2YWx1ZXNbaV0gPSBjb25uX29wdC0+dmFsOwotCQkJCQlpKys7 Ci0JCQkJfQotCQkJfQotCQl9Ci0JCWVsc2UKLQkJewotCQkJa2V5d29yZHMgPSBwZ19tYWxs b2MwKChhcmdjb3VudCArIDEpICogc2l6ZW9mKCprZXl3b3JkcykpOwotCQkJdmFsdWVzID0g cGdfbWFsbG9jMCgoYXJnY291bnQgKyAxKSAqIHNpemVvZigqdmFsdWVzKSk7Ci0JCX0KLQot CQlpZiAocGdob3N0KQotCQl7Ci0JCQlrZXl3b3Jkc1tpXSA9ICJob3N0IjsKLQkJCXZhbHVl c1tpXSA9IHBnaG9zdDsKLQkJCWkrKzsKLQkJfQotCQlpZiAocGdwb3J0KQotCQl7Ci0JCQlr ZXl3b3Jkc1tpXSA9ICJwb3J0IjsKLQkJCXZhbHVlc1tpXSA9IHBncG9ydDsKLQkJCWkrKzsK LQkJfQotCQlpZiAocGd1c2VyKQotCQl7Ci0JCQlrZXl3b3Jkc1tpXSA9ICJ1c2VyIjsKLQkJ CXZhbHVlc1tpXSA9IHBndXNlcjsKLQkJCWkrKzsKLQkJfQotCQlpZiAocGFzc3dvcmQpCi0J CXsKLQkJCWtleXdvcmRzW2ldID0gInBhc3N3b3JkIjsKLQkJCXZhbHVlc1tpXSA9IHBhc3N3 b3JkOwotCQkJaSsrOwotCQl9Ci0JCWlmIChkYm5hbWUpCi0JCXsKLQkJCWtleXdvcmRzW2ld ID0gImRibmFtZSI7Ci0JCQl2YWx1ZXNbaV0gPSBkYm5hbWU7Ci0JCQlpKys7Ci0JCX0KLQkJ a2V5d29yZHNbaV0gPSAiZmFsbGJhY2tfYXBwbGljYXRpb25fbmFtZSI7Ci0JCXZhbHVlc1tp XSA9IHByb2duYW1lOwotCQlpKys7Ci0KLQkJbmV3X3Bhc3MgPSBmYWxzZTsKLQkJY29ubiA9 IFBRY29ubmVjdGRiUGFyYW1zKGtleXdvcmRzLCB2YWx1ZXMsIHRydWUpOwotCi0JCWlmICgh Y29ubikKLQkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZSBcIiVz XCIiLCBkYm5hbWUpOwotCi0JCWlmIChQUXN0YXR1cyhjb25uKSA9PSBDT05ORUNUSU9OX0JB RCAmJgotCQkJUFFjb25uZWN0aW9uTmVlZHNQYXNzd29yZChjb25uKSAmJgotCQkJIXBhc3N3 b3JkICYmCi0JCQlwcm9tcHRfcGFzc3dvcmQgIT0gVFJJX05PKQotCQl7Ci0JCQlQUWZpbmlz aChjb25uKTsKLQkJCXBhc3N3b3JkID0gc2ltcGxlX3Byb21wdCgiUGFzc3dvcmQ6ICIsIGZh bHNlKTsKLQkJCW5ld19wYXNzID0gdHJ1ZTsKLQkJfQotCX0gd2hpbGUgKG5ld19wYXNzKTsK LQotCS8qIGNoZWNrIHRvIHNlZSB0aGF0IHRoZSBiYWNrZW5kIGNvbm5lY3Rpb24gd2FzIHN1 Y2Nlc3NmdWxseSBtYWRlICovCi0JaWYgKFBRc3RhdHVzKGNvbm4pID09IENPTk5FQ1RJT05f QkFEKQotCXsKLQkJaWYgKGZhaWxfb25fZXJyb3IpCi0JCQlwZ19mYXRhbCgiJXMiLCBQUWVy cm9yTWVzc2FnZShjb25uKSk7Ci0JCWVsc2UKLQkJewotCQkJUFFmaW5pc2goY29ubik7Ci0K LQkJCWZyZWUoa2V5d29yZHMpOwotCQkJZnJlZSh2YWx1ZXMpOwotCQkJUFFjb25uaW5mb0Zy ZWUoY29ubl9vcHRzKTsKLQotCQkJcmV0dXJuIE5VTEw7Ci0JCX0KLQl9Ci0KLQkvKgotCSAq IE9rLCBjb25uZWN0ZWQgc3VjY2Vzc2Z1bGx5LiBSZW1lbWJlciB0aGUgb3B0aW9ucyB1c2Vk LCBpbiB0aGUgZm9ybSBvZiBhCi0JICogY29ubmVjdGlvbiBzdHJpbmcuCi0JICovCi0JY29u bnN0ciA9IGNvbnN0cnVjdENvbm5TdHIoa2V5d29yZHMsIHZhbHVlcyk7Ci0KLQlmcmVlKGtl eXdvcmRzKTsKLQlmcmVlKHZhbHVlcyk7Ci0JUFFjb25uaW5mb0ZyZWUoY29ubl9vcHRzKTsK LQotCS8qIENoZWNrIHZlcnNpb24gKi8KLQlyZW1vdGV2ZXJzaW9uX3N0ciA9IFBRcGFyYW1l dGVyU3RhdHVzKGNvbm4sICJzZXJ2ZXJfdmVyc2lvbiIpOwotCWlmICghcmVtb3RldmVyc2lv bl9zdHIpCi0JCXBnX2ZhdGFsKCJjb3VsZCBub3QgZ2V0IHNlcnZlciB2ZXJzaW9uIik7Ci0J c2VydmVyX3ZlcnNpb24gPSBQUXNlcnZlclZlcnNpb24oY29ubik7Ci0JaWYgKHNlcnZlcl92 ZXJzaW9uID09IDApCi0JCXBnX2ZhdGFsKCJjb3VsZCBub3QgcGFyc2Ugc2VydmVyIHZlcnNp b24gXCIlc1wiIiwKLQkJCQkgcmVtb3RldmVyc2lvbl9zdHIpOwotCi0JbXlfdmVyc2lvbiA9 IFBHX1ZFUlNJT05fTlVNOwotCi0JLyoKLQkgKiBXZSBhbGxvdyB0aGUgc2VydmVyIHRvIGJl IGJhY2sgdG8gOS4yLCBhbmQgdXAgdG8gYW55IG1pbm9yIHJlbGVhc2Ugb2YKLQkgKiBvdXIg b3duIG1ham9yIHZlcnNpb24uICAoU2VlIGFsc28gdmVyc2lvbiBjaGVjayBpbiBwZ19kdW1w LmMuKQotCSAqLwotCWlmIChteV92ZXJzaW9uICE9IHNlcnZlcl92ZXJzaW9uCi0JCSYmIChz ZXJ2ZXJfdmVyc2lvbiA8IDkwMjAwIHx8Ci0JCQkoc2VydmVyX3ZlcnNpb24gLyAxMDApID4g KG15X3ZlcnNpb24gLyAxMDApKSkKLQl7Ci0JCXBnX2xvZ19lcnJvcigiYWJvcnRpbmcgYmVj YXVzZSBvZiBzZXJ2ZXIgdmVyc2lvbiBtaXNtYXRjaCIpOwotCQlwZ19sb2dfZXJyb3JfZGV0 YWlsKCJzZXJ2ZXIgdmVyc2lvbjogJXM7ICVzIHZlcnNpb246ICVzIiwKLQkJCQkJCQlyZW1v dGV2ZXJzaW9uX3N0ciwgcHJvZ25hbWUsIFBHX1ZFUlNJT04pOwotCQlleGl0X25pY2VseSgx KTsKLQl9Ci0KLQlQUWNsZWFyKGV4ZWN1dGVRdWVyeShjb25uLCBBTFdBWVNfU0VDVVJFX1NF QVJDSF9QQVRIX1NRTCkpOwotCi0JcmV0dXJuIGNvbm47Ci19Ci0KLS8qIC0tLS0tLS0tLS0K LSAqIENvbnN0cnVjdCBhIGNvbm5lY3Rpb24gc3RyaW5nIGZyb20gdGhlIGdpdmVuIGtleXdv cmQvdmFsdWUgcGFpcnMuIEl0IGlzCi0gKiB1c2VkIHRvIHBhc3MgdGhlIGNvbm5lY3Rpb24g b3B0aW9ucyB0byB0aGUgcGdfZHVtcCBzdWJwcm9jZXNzLgotICoKLSAqIFRoZSBmb2xsb3dp bmcgcGFyYW1ldGVycyBhcmUgZXhjbHVkZWQ6Ci0gKglkYm5hbWUJCS0gdmFyaWVzIGluIGVh Y2ggcGdfZHVtcCBpbnZvY2F0aW9uCi0gKglwYXNzd29yZAktIGl0J3Mgbm90IHNlY3VyZSB0 byBwYXNzIGEgcGFzc3dvcmQgb24gdGhlIGNvbW1hbmQgbGluZQotICoJZmFsbGJhY2tfYXBw bGljYXRpb25fbmFtZSAtIHdlJ2xsIGxldCBwZ19kdW1wIHNldCBpdAotICogLS0tLS0tLS0t LQotICovCi1zdGF0aWMgY2hhciAqCi1jb25zdHJ1Y3RDb25uU3RyKGNvbnN0IGNoYXIgKipr ZXl3b3JkcywgY29uc3QgY2hhciAqKnZhbHVlcykKLXsKLQlQUUV4cEJ1ZmZlciBidWYgPSBj cmVhdGVQUUV4cEJ1ZmZlcigpOwotCWNoYXIJICAgKmNvbm5zdHI7Ci0JaW50CQkJaTsKLQli b29sCQlmaXJzdGtleXdvcmQgPSB0cnVlOwotCi0JLyogQ29uc3RydWN0IGEgbmV3IGNvbm5l Y3Rpb24gc3RyaW5nIGluIGtleT0ndmFsdWUnIGZvcm1hdC4gKi8KLQlmb3IgKGkgPSAwOyBr ZXl3b3Jkc1tpXSAhPSBOVUxMOyBpKyspCi0JewotCQlpZiAoc3RyY21wKGtleXdvcmRzW2ld LCAiZGJuYW1lIikgPT0gMCB8fAotCQkJc3RyY21wKGtleXdvcmRzW2ldLCAicGFzc3dvcmQi KSA9PSAwIHx8Ci0JCQlzdHJjbXAoa2V5d29yZHNbaV0sICJmYWxsYmFja19hcHBsaWNhdGlv bl9uYW1lIikgPT0gMCkKLQkJCWNvbnRpbnVlOwotCi0JCWlmICghZmlyc3RrZXl3b3JkKQot CQkJYXBwZW5kUFFFeHBCdWZmZXJDaGFyKGJ1ZiwgJyAnKTsKLQkJZmlyc3RrZXl3b3JkID0g ZmFsc2U7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyKGJ1ZiwgIiVzPSIsIGtleXdvcmRzW2ldKTsK LQkJYXBwZW5kQ29ublN0clZhbChidWYsIHZhbHVlc1tpXSk7Ci0JfQotCi0JY29ubnN0ciA9 IHBnX3N0cmR1cChidWYtPmRhdGEpOwotCWRlc3Ryb3lQUUV4cEJ1ZmZlcihidWYpOwotCXJl dHVybiBjb25uc3RyOwotfQotCi0vKgotICogUnVuIGEgcXVlcnksIHJldHVybiB0aGUgcmVz dWx0cywgZXhpdCBwcm9ncmFtIG9uIGZhaWx1cmUuCi0gKi8KLXN0YXRpYyBQR3Jlc3VsdCAq Ci1leGVjdXRlUXVlcnkoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpxdWVyeSkKLXsKLQlQ R3Jlc3VsdCAgICpyZXM7Ci0KLQlwZ19sb2dfaW5mbygiZXhlY3V0aW5nICVzIiwgcXVlcnkp OwotCi0JcmVzID0gUFFleGVjKGNvbm4sIHF1ZXJ5KTsKLQlpZiAoIXJlcyB8fAotCQlQUXJl c3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19PSykKLQl7Ci0JCXBnX2xvZ19lcnJv cigicXVlcnkgZmFpbGVkOiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKLQkJcGdfbG9n X2Vycm9yX2RldGFpbCgiUXVlcnkgd2FzOiAlcyIsIHF1ZXJ5KTsKLQkJUFFmaW5pc2goY29u bik7Ci0JCWV4aXRfbmljZWx5KDEpOwotCX0KLQotCXJldHVybiByZXM7Ci19Ci0KIC8qCiAg KiBBcyBhYm92ZSBmb3IgYSBTUUwgY29tbWFuZCAod2hpY2ggcmV0dXJucyBub3RoaW5nKS4K ICAqLwotLSAKMi4zNC4xCgo= --------------WYy7qAr00NPPVmPn6v3moLzs Content-Type: text/x-patch; charset=UTF-8; name="v20250331-0002-add-new-list-type-simple_oid_string_list-t.patch" Content-Disposition: attachment; filename*0="v20250331-0002-add-new-list-type-simple_oid_string_list-t.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBmMTcyYzdkYjYxYTc1ZDRiYmI1ODZkNTk3YWU4ZTllNDRkMDI2NDJjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogRnJpLCAyOCBNYXIgMjAyNSAxODoxMDoyNCAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjUwMzMxIDIvM10gYWRkIG5ldyBsaXN0IHR5cGUgc2ltcGxlX29pZF9zdHJp bmdfbGlzdCB0bwogZmUtdXRpbHMvc2ltcGxlX2xpc3QKCi0tLQogc3JjL2ZlX3V0aWxzL3Np bXBsZV9saXN0LmMgICAgICAgICB8IDQxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr Kwogc3JjL2luY2x1ZGUvZmVfdXRpbHMvc2ltcGxlX2xpc3QuaCB8IDE2ICsrKysrKysrKysr KwogMiBmaWxlcyBjaGFuZ2VkLCA1NyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3Jj L2ZlX3V0aWxzL3NpbXBsZV9saXN0LmMgYi9zcmMvZmVfdXRpbHMvc2ltcGxlX2xpc3QuYwpp bmRleCA0ODNkNTQ1NTU5NC4uYmJjYzRlZjYxOGQgMTAwNjQ0Ci0tLSBhL3NyYy9mZV91dGls cy9zaW1wbGVfbGlzdC5jCisrKyBiL3NyYy9mZV91dGlscy9zaW1wbGVfbGlzdC5jCkBAIC0x OTIsMyArMTkyLDQ0IEBAIHNpbXBsZV9wdHJfbGlzdF9kZXN0cm95KFNpbXBsZVB0ckxpc3Qg Kmxpc3QpCiAJCWNlbGwgPSBuZXh0OwogCX0KIH0KKworLyoKKyAqIEFkZCB0byBhbiBvaWRf c3RyaW5nIGxpc3QKKyAqLwordm9pZAorc2ltcGxlX29pZF9zdHJpbmdfbGlzdF9hcHBlbmQo U2ltcGxlT2lkU3RyaW5nTGlzdCAqIGxpc3QsIE9pZCBvaWQsIGNvbnN0IGNoYXIgKnN0cikK K3sKKwlTaW1wbGVPaWRTdHJpbmdMaXN0Q2VsbCAqY2VsbDsKKworCWNlbGwgPSAoU2ltcGxl T2lkU3RyaW5nTGlzdENlbGwgKikKKwkJcGdfbWFsbG9jKG9mZnNldG9mKFNpbXBsZU9pZFN0 cmluZ0xpc3RDZWxsLCBzdHIpICsgc3RybGVuKHN0cikgKyAxKTsKKworCWNlbGwtPm5leHQg PSBOVUxMOworCWNlbGwtPm9pZCA9IG9pZDsKKwlzdHJjcHkoY2VsbC0+c3RyLCBzdHIpOwor CisJaWYgKGxpc3QtPnRhaWwpCisJCWxpc3QtPnRhaWwtPm5leHQgPSBjZWxsOworCWVsc2UK KwkJbGlzdC0+aGVhZCA9IGNlbGw7CisJbGlzdC0+dGFpbCA9IGNlbGw7Cit9CisKKy8qCisg KiBEZXN0cm95IGFuIG9pZF9zdHJpbmcgbGlzdAorICovCit2b2lkCitzaW1wbGVfb2lkX3N0 cmluZ19saXN0X2Rlc3Ryb3koU2ltcGxlT2lkU3RyaW5nTGlzdCAqIGxpc3QpCit7CisJU2lt cGxlT2lkU3RyaW5nTGlzdENlbGwgKmNlbGw7CisKKwljZWxsID0gbGlzdC0+aGVhZDsKKwl3 aGlsZSAoY2VsbCAhPSBOVUxMKQorCXsKKwkJU2ltcGxlT2lkU3RyaW5nTGlzdENlbGwgKm5l eHQ7CisKKwkJbmV4dCA9IGNlbGwtPm5leHQ7CisJCXBnX2ZyZWUoY2VsbCk7CisJCWNlbGwg PSBuZXh0OworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2ZlX3V0aWxzL3NpbXBs ZV9saXN0LmggYi9zcmMvaW5jbHVkZS9mZV91dGlscy9zaW1wbGVfbGlzdC5oCmluZGV4IDNi OGUzODQxNGVjLi5hZjYxNTQ1ZDdmZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZmVfdXRp bHMvc2ltcGxlX2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9mZV91dGlscy9zaW1wbGVfbGlz dC5oCkBAIC01NSw2ICs1NSwxOSBAQCB0eXBlZGVmIHN0cnVjdCBTaW1wbGVQdHJMaXN0CiAJ U2ltcGxlUHRyTGlzdENlbGwgKnRhaWw7CiB9IFNpbXBsZVB0ckxpc3Q7CiAKK3R5cGVkZWYg c3RydWN0IFNpbXBsZU9pZFN0cmluZ0xpc3RDZWxsCit7CisJc3RydWN0IFNpbXBsZU9pZFN0 cmluZ0xpc3RDZWxsICpuZXh0OworCU9pZAkJCW9pZDsKKwljaGFyCQlzdHJbRkxFWElCTEVf QVJSQVlfTUVNQkVSXTsgLyogbnVsbC10ZXJtaW5hdGVkIHN0cmluZyBoZXJlICovCit9CQkJ U2ltcGxlT2lkU3RyaW5nTGlzdENlbGw7CisKK3R5cGVkZWYgc3RydWN0IFNpbXBsZU9pZFN0 cmluZ0xpc3QKK3sKKwlTaW1wbGVPaWRTdHJpbmdMaXN0Q2VsbCAqaGVhZDsKKwlTaW1wbGVP aWRTdHJpbmdMaXN0Q2VsbCAqdGFpbDsKK30JCQlTaW1wbGVPaWRTdHJpbmdMaXN0OworCiBl eHRlcm4gdm9pZCBzaW1wbGVfb2lkX2xpc3RfYXBwZW5kKFNpbXBsZU9pZExpc3QgKmxpc3Qs IE9pZCB2YWwpOwogZXh0ZXJuIGJvb2wgc2ltcGxlX29pZF9saXN0X21lbWJlcihTaW1wbGVP aWRMaXN0ICpsaXN0LCBPaWQgdmFsKTsKIGV4dGVybiB2b2lkIHNpbXBsZV9vaWRfbGlzdF9k ZXN0cm95KFNpbXBsZU9pZExpc3QgKmxpc3QpOwpAQCAtNjgsNCArODEsNyBAQCBleHRlcm4g Y29uc3QgY2hhciAqc2ltcGxlX3N0cmluZ19saXN0X25vdF90b3VjaGVkKFNpbXBsZVN0cmlu Z0xpc3QgKmxpc3QpOwogZXh0ZXJuIHZvaWQgc2ltcGxlX3B0cl9saXN0X2FwcGVuZChTaW1w bGVQdHJMaXN0ICpsaXN0LCB2b2lkICpwdHIpOwogZXh0ZXJuIHZvaWQgc2ltcGxlX3B0cl9s aXN0X2Rlc3Ryb3koU2ltcGxlUHRyTGlzdCAqbGlzdCk7CiAKK2V4dGVybiB2b2lkIHNpbXBs ZV9vaWRfc3RyaW5nX2xpc3RfYXBwZW5kKFNpbXBsZU9pZFN0cmluZ0xpc3QgKiBsaXN0LCBP aWQgb2lkLCBjb25zdCBjaGFyICpzdHIpOworZXh0ZXJuIHZvaWQgc2ltcGxlX29pZF9zdHJp bmdfbGlzdF9kZXN0cm95KFNpbXBsZU9pZFN0cmluZ0xpc3QgKiBsaXN0KTsKKwogI2VuZGlm CQkJCQkJCS8qIFNJTVBMRV9MSVNUX0ggKi8KLS0gCjIuMzQuMQoK --------------WYy7qAr00NPPVmPn6v3moLzs Content-Type: text/x-patch; charset=UTF-8; name="v20250331-0003-pg_dumpall-with-directory-tar-custom-forma.patch" Content-Disposition: attachment; filename*0="v20250331-0003-pg_dumpall-with-directory-tar-custom-forma.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwMGM1MzRmMGU0ZjUwMWNhZGI4NGYyZDI2Yjc4YzkyOTk1OTcxZjNiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYWhlbmRyYSBTaW5naCBUaGFsb3IgPG1haGk2cnVu QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAwMTozMDoxMiArMDUzMApTdWJq ZWN0OiBbUEFUQ0ggdjIwMjUwMzMxIDMvM10gcGdfZHVtcGFsbCB3aXRoIGRpcmVjdG9yeXx0 YXJ8Y3VzdG9tIGZvcm1hdCBhbmQKIHJlc3RvcmUgaXQgYnkgcGdfcmVzdG9yZQoKbmV3IG9w dGlvbiB0byBwZ19kdW1wYWxsOgotRiwgLS1mb3JtYXQ9ZHx0fGN8cCAgb3V0cHV0IGZpbGUg Zm9ybWF0ICggcGxhaW4gdGV4dCAoZGVmYXVsdCkpCgpFeDoxIC4vcGdfZHVtcGFsbCAtLWZv cm1hdD1kaXJlY3RvcnkgLS1maWxlPWR1bXBEaXJOYW1lCkV4OjIgLi9wZ19kdW1wYWxsIC0t Zm9ybWF0PXRhciAtLWZpbGU9ZHVtcERpck5hbWUKRXg6MyAuL3BnX2R1bXBhbGwgLS1mb3Jt YXQ9Y3VzdG9tIC0tZmlsZT1kdW1wRGlyTmFtZQpFeDo0IC4vcGdfZHVtcGFsbCAtLWZvcm1h dD1wbGFpbiAtLWZpbGU9ZHVtcERpck5hbWUKCmR1bXBzIGFyZSBhczoKZ2xvYmFsLmRhdCA6 OjogZ2xvYmFsIHNxbCBjb21tYW5kcyBpbiBzaW1wbGUgcGxhaW4gZm9ybWF0Cm1hcC5kYXQu ICAgOjo6IGRib2lkIGRibmFtZSAtLS1lbnRyaWVzIGZvciBhbGwgZGF0YWJhc2VzIGluIHNp bXBsZSB0ZXh0IGZvcm0KZGF0YWJhc2VzLiA6OjoKICAgICAgc3ViZGlyICAgICBkYm9pZDEg IC0+IHRvYy5kYXQgYW5kIGRhdGEgZmlsZXMgaW4gYXJjaGl2ZSBmb3JtYXQKICAgICAgc3Vi ZGlyICAgICBkYm9pZDIuIC0+IHRvYy5kYXQgYW5kIGRhdGEgZmlsZXMgaW4gYXJjaGl2ZSBm b3JtYXQKICAgICAgICAgICAgICBldGMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCk5PVEU6Cmlm IG5lZWRlZCwgcmVzdG9yZSBzaW5nbGUgZGIgYnkgcGFydGljdWxhciBzdWJkaXIKCkV4OiAu L3BnX3Jlc3RvcmUgLS1mb3JtYXQ9ZGlyZWN0b3J5IC1kIHBvc3RncmVzIGR1bXBEaXJOYW1l L2RhdGFiYXNlcy81CiAgIC0tIGhlcmUsIDUgaXMgdGhlIGRib2lkIG9mIHBvc3RncmVzIGRi CiAgIC0tIHRvIGdldCBkYm9pZCwgcmVmZXIgZGJuYW1lIGluIG1hcC5maWxlCgotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQpuZXcgb3B0aW9ucyB0byBwZ19yZXN0b3JlOgotZywgLS1nbG9iYWxz LW9ubHkgICAgICAgICAgIHJlc3RvcmUgb25seSBnbG9iYWwgb2JqZWN0cywgbm8gZGF0YWJh c2VzCi0tZXhjbHVkZS1kYXRhYmFzZT1QQVRURVJOICAgZXhjbHVkZSBkYXRhYmFzZSB3aG9z ZSBuYW1lIG1hdGNoZXMgcGF0dGVybgoKV2hlbiB3ZSBnaXZlIC1nLy0tZ2xvYmFscy1vbmx5 IG9wdGlvbiwgdGhlbiBvbmx5IHJlc3RvcmUgZ2xvYmFscywgbm8gZGIgcmVzdG9yaW5nLgoK RGVzaWduOgpXaGVuIC0tZm9ybWF0PWR8dHxjIGlzIHNwZWNpZmllZCBhbmQgdGhlcmUgaXMg bm8gdG9jLmRhdCBpbiBtYWluIGRpcmVjdG9yeSwgdGhlbiBjaGVjawpmb3IgZ2xvYmFsLmRh dCB0byByZXN0b3JlIGFsbCBkYXRhYmFzZXMuIElmIGdsb2JhbC5kYXQgZmlsZSBpcyBleGlz dCBpbiBkaXJlY3RvcnksCnRoZW4gZmlyc3QgcmVzdG9yZSBhbGwgZ2xvYmFscyBmcm9tIGds b2JhbC5kYXQgYW5kIHRoZW4gcmVzdG9yZSBhbGwgZGF0YWJhc2VzIG9uZSBieSBvbmUKZnJv bSBtYXAuZGF0IGxpc3QgKGlmIGV4aXN0KQoKZm9yIC0tZXhjbHVkZS1kYXRhYmFzZT1QQVRU RVJOIGZvciBwZ19yZXN0b3JlCgphcyBvZiBub3csIFNFTEVDVCAxIFdIRVJFIFhYWCBPUEVS QVRPUihwZ19jYXRhbG9nLn4pICdeKFBBVFRFUk4pJCcgQ09MTEFURSBwZ19jYXRhbG9nLmRl ZmF1bHQKaWYgbm8gZGIgY29ubmVjdGlvbiwgdGhlbiBQQVRURVJOPU5BTUUgbWF0Y2hpbmcg b25seQoKZm9yIGVhY2ggZGF0YWJhc2UsIHdlIGFyZSBjbGVhbmluZyBvbl9leGl0X25pY2Vs eV9pbmRleCBsaXN0LgoKYXQgdGhlIGVuZCBvZiByZXN0b3JlLCB3ZSBhcmUgZ2l2aW5nIHdh cm5pbmcgd2l0aCB0b3RhbCBudW1iZXIgb2YgZXJyb3JzIChpbmNsdWRpbmcgZ2xvYmFsLmRh dCwKYW5kIGVhY2ggZGF0YWJhc2UgZXJyb3JzKSBhbmQgZm9yIGVhY2ggZGF0YWJhc2UsIHdl IGFyZSBwcmludGluZyB3YXJuaW5nIHdpdGggZGJuYW1lIGFuZCB0b3RhbAplcnJvcnMuCgp0 aHJlYWQ6Cmh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC9DQUtZ dE5BcDl2T3R5ZFhMM19wbkdKJTJCVGV0WnROJTNERllTblpTTUNxWGNlVTNta0hQeFBnJTQw bWFpbC5nbWFpbC5jb20jMDY2NDMzY2I1YWUwMDdjYmUzNWZlZmRkZjc5NmQ1MmYKCkF1dGhv cjogICAgTWFoZW5kcmEgU2luZ2ggVGhhbG9yIDxtYWhpNnJ1bkBnbWFpbC5jb20+Ci0tLQog ZG9jL3NyYy9zZ21sL3JlZi9wZ19kdW1wYWxsLnNnbWwgICAgIHwgIDg2ICsrLQogZG9jL3Ny Yy9zZ21sL3JlZi9wZ19yZXN0b3JlLnNnbWwgICAgIHwgIDY2ICsrLQogc3JjL2Jpbi9wZ19k dW1wL3BhcmFsbGVsLmMgICAgICAgICAgIHwgIDExICstCiBzcmMvYmluL3BnX2R1bXAvcGdf YmFja3VwLmggICAgICAgICAgfCAgIDIgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBf YXJjaGl2ZXIuYyB8ICAyMCArLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZl ci5oIHwgICAzICstCiBzcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX3Rhci5jICAgICAgfCAg IDIgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfdXRpbHMuYyAgICB8ICAyMiArLQog c3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF91dGlscy5oICAgIHwgICAzICstCiBzcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iaW4vcGdfZHVt cC9wZ19kdW1wYWxsLmMgICAgICAgICB8IDI5NSArKysrKysrKy0tCiBzcmMvYmluL3BnX2R1 bXAvcGdfcmVzdG9yZS5jICAgICAgICAgfCA4MDIgKysrKysrKysrKysrKysrKysrKysrKysr KystCiBzcmMvYmluL3BnX2R1bXAvdC8wMDFfYmFzaWMucGwgICAgICAgfCAgIDkgKwogc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgIHwgICAyICsKIDE0IGZpbGVzIGNo YW5nZWQsIDEyMzEgaW5zZXJ0aW9ucygrKSwgOTQgZGVsZXRpb25zKC0pCiBtb2RlIGNoYW5n ZSAxMDA2NDQgPT4gMTAwNzU1IHNyYy9iaW4vcGdfZHVtcC90LzAwMV9iYXNpYy5wbAoKZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfZHVtcGFsbC5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi9wZ19kdW1wYWxsLnNnbWwKaW5kZXggNzY1YjMwYTNhNjYuLjQzZmRhYjJkNzdl IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX2R1bXBhbGwuc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvcmVmL3BnX2R1bXBhbGwuc2dtbApAQCAtMTYsNyArMTYsNyBAQCBQb3N0 Z3JlU1FMIGRvY3VtZW50YXRpb24KIAogIDxyZWZuYW1lZGl2PgogICA8cmVmbmFtZT5wZ19k dW1wYWxsPC9yZWZuYW1lPgotICA8cmVmcHVycG9zZT5leHRyYWN0IGEgPHByb2R1Y3RuYW1l PlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBkYXRhYmFzZSBjbHVzdGVyIGludG8gYSBzY3Jp cHQgZmlsZTwvcmVmcHVycG9zZT4KKyAgPHJlZnB1cnBvc2U+ZXh0cmFjdCBhIDxwcm9kdWN0 bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gZGF0YWJhc2UgY2x1c3RlciB1c2luZyBh IHNwZWNpZmllZCBkdW1wIGZvcm1hdDwvcmVmcHVycG9zZT4KICA8L3JlZm5hbWVkaXY+CiAK ICA8cmVmc3lub3BzaXNkaXY+CkBAIC0zMyw3ICszMyw3IEBAIFBvc3RncmVTUUwgZG9jdW1l bnRhdGlvbgogICA8cGFyYT4KICAgIDxhcHBsaWNhdGlvbj5wZ19kdW1wYWxsPC9hcHBsaWNh dGlvbj4gaXMgYSB1dGlsaXR5IGZvciB3cml0aW5nIG91dAogICAgKDxxdW90ZT5kdW1waW5n PC9xdW90ZT4pIGFsbCA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGRh dGFiYXNlcwotICAgb2YgYSBjbHVzdGVyIGludG8gb25lIHNjcmlwdCBmaWxlLiAgVGhlIHNj cmlwdCBmaWxlIGNvbnRhaW5zCisgICBvZiBhIGNsdXN0ZXIgaW50byBhbiBhcmNoaXZlLiAg VGhlIGFyY2hpdmUgY29udGFpbnMKICAgIDxhY3JvbnltPlNRTDwvYWNyb255bT4gY29tbWFu ZHMgdGhhdCBjYW4gYmUgdXNlZCBhcyBpbnB1dCB0byA8eHJlZgogICAgbGlua2VuZD0iYXBw LXBzcWwiLz4gdG8gcmVzdG9yZSB0aGUgZGF0YWJhc2VzLiAgSXQgZG9lcyB0aGlzIGJ5CiAg ICBjYWxsaW5nIDx4cmVmIGxpbmtlbmQ9ImFwcC1wZ2R1bXAiLz4gZm9yIGVhY2ggZGF0YWJh c2UgaW4gdGhlIGNsdXN0ZXIuCkBAIC01MiwxMSArNTIsMTYgQEAgUG9zdGdyZVNRTCBkb2N1 bWVudGF0aW9uCiAgIDwvcGFyYT4KIAogICA8cGFyYT4KLSAgIFRoZSBTUUwgc2NyaXB0IHdp bGwgYmUgd3JpdHRlbiB0byB0aGUgc3RhbmRhcmQgb3V0cHV0LiAgVXNlIHRoZQorICAgUGxh aW4gdGV4dCBTUUwgc2NyaXB0cyB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhlIHN0YW5kYXJkIG91 dHB1dC4gIFVzZSB0aGUKICAgIDxvcHRpb24+LWY8L29wdGlvbj4vPG9wdGlvbj4tLWZpbGU8 L29wdGlvbj4gb3B0aW9uIG9yIHNoZWxsIG9wZXJhdG9ycyB0bwogICAgcmVkaXJlY3QgaXQg aW50byBhIGZpbGUuCiAgIDwvcGFyYT4KIAorICA8cGFyYT4KKyAgIEFyY2hpdmVzIGluIG90 aGVyIGZvcm1hdHMgd2lsbCBiZSBwbGFjZWQgaW4gYSBkaXJlY3RvcnkgbmFtZWQgdXNpbmcg dGhlCisgICA8b3B0aW9uPi1mPC9vcHRpb24+LzxvcHRpb24+LS1maWxlPC9vcHRpb24+LCB3 aGljaCBpcyByZXF1aXJlZCBpbiB0aGlzIGNhc2UuCisgIDwvcGFyYT4KKwogICA8cGFyYT4K ICAgPGFwcGxpY2F0aW9uPnBnX2R1bXBhbGw8L2FwcGxpY2F0aW9uPiBuZWVkcyB0byBjb25u ZWN0IHNldmVyYWwKICAgdGltZXMgdG8gdGhlIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9w cm9kdWN0bmFtZT4gc2VydmVyIChvbmNlIHBlcgpAQCAtMTIxLDEwICsxMjYsODUgQEAgUG9z dGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICAgICAgPHBhcmE+CiAgICAgICAgIFNlbmQgb3V0 cHV0IHRvIHRoZSBzcGVjaWZpZWQgZmlsZS4gIElmIHRoaXMgaXMgb21pdHRlZCwgdGhlCiAg ICAgICAgIHN0YW5kYXJkIG91dHB1dCBpcyB1c2VkLgorICAgICAgICBOb3RlOiBUaGlzIG9w dGlvbiBjYW4gb25seSBiZSBvbWl0dGVkIHdoZW4gPG9wdGlvbj4tLWZvcm1hdDwvb3B0aW9u PiBpcyBwbGFpbgogICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwv dmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48b3B0 aW9uPi1GIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5mb3JtYXQ8L3JlcGxhY2Vh YmxlPjwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDx0ZXJtPjxvcHRpb24+LS1mb3JtYXQ9PHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmZvcm1hdDwvcmVwbGFjZWFibGU+PC9vcHRp b24+PC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBT cGVjaWZ5IHRoZSBmb3JtYXQgb2YgZHVtcCBmaWxlcy4gIEluIHBsYWluIGZvcm1hdCwgYWxs IHRoZSBkdW1wIGRhdGEgaXMKKyAgICAgICAgc2VudCBpbiBhIHNpbmdsZSB0ZXh0IHN0cmVh bS4gVGhpcyBpcyB0aGUgZGVmYXVsdC4KKworICAgICAgICBJbiBhbGwgb3RoZXIgbW9kZXMs IDxhcHBsaWNhdGlvbj5wZ19kdW1wYWxsPC9hcHBsaWNhdGlvbj4gZmlyc3QgY3JlYXRlcyB0 d28gZmlsZXM6CisgICAgICAgIDxmaWxlbmFtZT5nbG9iYWwuZGF0PC9maWxlbmFtZT4gYW5k IDxmaWxlbmFtZT5tYXAuZGF0PC9maWxlbmFtZT4sIGluIHRoZSBkaXJlY3RvcnkKKyAgICAg ICAgc3BlY2lmaWVkIGJ5IDxvcHRpb24+LS1maWxlPC9vcHRpb24+LgorICAgICAgICBUaGUg Zmlyc3QgZmlsZSBjb250YWlucyBnbG9iYWwgZGF0YSwgc3VjaCBhcyByb2xlcyBhbmQgdGFi bGVzcGFjZXMuIFRoZSBzZWNvbmQKKyAgICAgICAgY29udGFpbnMgYSBtYXBwaW5nIGJldHdl ZW4gZGF0YWJhc2Ugb2lkcyBhbmQgbmFtZXMuIFRoZXNlIGZpbGVzIGFyZSB1c2VkIGJ5Cisg ICAgICAgIDxhcHBsaWNhdGlvbj5wZ19yZXN0b3JlPC9hcHBsaWNhdGlvbj4uIERhdGEgZm9y IGluZGl2aWR1YWwgZGF0YWJhc2VzIGlzIHBsYWNlZCBpbgorICAgICAgICA8ZmlsZW5hbWU+ ZGF0YWJhc2VzPC9maWxlbmFtZT4gc3ViZGlyZWN0b3J5LCBuYW1lZCB1c2luZyB0aGUgZGF0 YWJhc2UncyA8dHlwZT5vaWQ8L3R5cGU+LgorCisgICAgICAgPHZhcmlhYmxlbGlzdD4KKyAg ICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPmQ8L2xpdGVy YWw+PC90ZXJtPgorICAgICAgICAgPHRlcm0+PGxpdGVyYWw+ZGlyZWN0b3J5PC9saXRlcmFs PjwvdGVybT4KKyAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAg ICAgICAgT3V0cHV0IGRpcmVjdG9yeS1mb3JtYXQgYXJjaGl2ZXMgZm9yIGVhY2ggZGF0YWJh c2UsCisgICAgICAgICAgIHN1aXRhYmxlIGZvciBpbnB1dCBpbnRvIHBnX3Jlc3RvcmUuIFRo ZSBkaXJlY3RvcnkKKyAgICAgICAgICAgd2lsbCBoYXZlIGRhdGFiYXNlIDx0eXBlPm9pZDwv dHlwZT4gYXMgaXRzIG5hbWUuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgPC9saXN0 aXRlbT4KKyAgICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgICAgPHZhcmxpc3RlbnRy eT4KKyAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPnA8L2xpdGVyYWw+PC90ZXJtPgorICAgICAg ICAgPHRlcm0+PGxpdGVyYWw+cGxhaW48L2xpdGVyYWw+PC90ZXJtPgorICAgICAgICAgPGxp c3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICBPdXRwdXQgYSBwbGFpbi10 ZXh0IFNRTCBzY3JpcHQgZmlsZSAodGhlIGRlZmF1bHQpLgorICAgICAgICAgIDwvcGFyYT4K KyAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAg ICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICA8dGVybT48bGl0ZXJhbD5jPC9saXRlcmFs PjwvdGVybT4KKyAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPmN1c3RvbTwvbGl0ZXJhbD48L3Rl cm0+CisgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAg IE91dHB1dCBhIGN1c3RvbS1mb3JtYXQgYXJjaGl2ZSBmb3IgZWFjaCBkYXRhYmFzZSwKKyAg ICAgICAgICAgc3VpdGFibGUgZm9yIGlucHV0IGludG8gcGdfcmVzdG9yZS4gVGhlIGFyY2hp dmUKKyAgICAgICAgICAgd2lsbCBiZSBuYW1lZCA8ZmlsZW5hbWU+ZGJvaWQuZG1wPC9maWxl bmFtZT4gd2hlcmUgPHR5cGU+ZGJvaWQ8L3R5cGU+IGlzIHRoZQorICAgICAgICAgICA8dHlw ZT5vaWQ8L3R5cGU+IG9mIHRoZSBkYXRhYmFzZS4KKyAgICAgICAgICA8L3BhcmE+CisgICAg ICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgICAg PHZhcmxpc3RlbnRyeT4KKyAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPnQ8L2xpdGVyYWw+PC90 ZXJtPgorICAgICAgICAgPHRlcm0+PGxpdGVyYWw+dGFyPC9saXRlcmFsPjwvdGVybT4KKyAg ICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgT3V0cHV0 IGEgdGFyLWZvcm1hdCBhcmNoaXZlIGZvciBlYWNoIGRhdGFiYXNlLAorICAgICAgICAgICBz dWl0YWJsZSBmb3IgaW5wdXQgaW50byBwZ19yZXN0b3JlLiBUaGUgYXJjaGl2ZQorICAgICAg ICAgICB3aWxsIGJlIG5hbWVkIDxmaWxlbmFtZT5kYm9pZC50YXI8L2ZpbGVuYW1lPiB3aGVy ZSA8dHlwZT5kYm9pZDwvdHlwZT4gaXMgdGhlCisgICAgICAgICAgIDx0eXBlPm9pZDwvdHlw ZT4gb2YgdGhlIGRhdGFiYXNlLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgIDwvbGlz dGl0ZW0+CisgICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICAgIDwvdmFyaWFibGVs aXN0PgorCisgICAgICAgTm90ZTogc2VlIDx4cmVmIGxpbmtlbmQ9ImFwcC1wZ2R1bXAiLz4g Zm9yIGRldGFpbHMKKyAgICAgICBvZiBob3cgdGhlIHZhcmlvdXMgbm9uIHBsYWluIHRleHQg YXJjaGl2ZXMgd29yay4KKworICAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgor ICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgPHRl cm0+PG9wdGlvbj4tLWZpbHRlcj08cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Zmls ZW5hbWU8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KICAgICAgIDxsaXN0aXRlbT4K ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfcmVzdG9yZS5zZ21sIGIvZG9jL3Ny Yy9zZ21sL3JlZi9wZ19yZXN0b3JlLnNnbWwKaW5kZXggYzg0MGE4MDdhZTkuLmYxNGU1ODY2 ZjZjIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3Jlc3RvcmUuc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvcmVmL3BnX3Jlc3RvcmUuc2dtbApAQCAtMTgsOCArMTgsOSBAQCBQ b3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICAgPHJlZm5hbWU+cGdfcmVzdG9yZTwvcmVmbmFt ZT4KIAogICA8cmVmcHVycG9zZT4KLSAgIHJlc3RvcmUgYSA8cHJvZHVjdG5hbWU+UG9zdGdy ZVNRTDwvcHJvZHVjdG5hbWU+IGRhdGFiYXNlIGZyb20gYW4KLSAgIGFyY2hpdmUgZmlsZSBj cmVhdGVkIGJ5IDxhcHBsaWNhdGlvbj5wZ19kdW1wPC9hcHBsaWNhdGlvbj4KKyAgIHJlc3Rv cmUgYSA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGRhdGFiYXNlIG9y IGNsdXN0ZXIKKyAgIGZyb20gYW4gYXJjaGl2ZSBjcmVhdGVkIGJ5IDxhcHBsaWNhdGlvbj5w Z19kdW1wPC9hcHBsaWNhdGlvbj4gb3IKKyAgIDxhcHBsaWNhdGlvbj5wZ19kdW1wYWxsPC9h cHBsaWNhdGlvbj4KICAgPC9yZWZwdXJwb3NlPgogIDwvcmVmbmFtZWRpdj4KIApAQCAtMzgs MTMgKzM5LDE0IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogCiAgIDxwYXJhPgogICAg PGFwcGxpY2F0aW9uPnBnX3Jlc3RvcmU8L2FwcGxpY2F0aW9uPiBpcyBhIHV0aWxpdHkgZm9y IHJlc3RvcmluZyBhCi0gICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+ IGRhdGFiYXNlIGZyb20gYW4gYXJjaGl2ZQotICAgY3JlYXRlZCBieSA8eHJlZiBsaW5rZW5k PSJhcHAtcGdkdW1wIi8+IGluIG9uZSBvZiB0aGUgbm9uLXBsYWluLXRleHQKKyAgIDxwcm9k dWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gZGF0YWJhc2Ugb3IgY2x1c3RlciBm cm9tIGFuIGFyY2hpdmUKKyAgIGNyZWF0ZWQgYnkgPHhyZWYgbGlua2VuZD0iYXBwLXBnZHVt cCIvPiBvcgorICAgPHhyZWYgbGlua2VuZD0iYXBwLXBnLWR1bXBhbGwiLz4gaW4gb25lIG9m IHRoZSBub24tcGxhaW4tdGV4dAogICAgZm9ybWF0cy4gIEl0IHdpbGwgaXNzdWUgdGhlIGNv bW1hbmRzIG5lY2Vzc2FyeSB0byByZWNvbnN0cnVjdCB0aGUKLSAgIGRhdGFiYXNlIHRvIHRo ZSBzdGF0ZSBpdCB3YXMgaW4gYXQgdGhlIHRpbWUgaXQgd2FzIHNhdmVkLiAgVGhlCi0gICBh cmNoaXZlIGZpbGVzIGFsc28gYWxsb3cgPGFwcGxpY2F0aW9uPnBnX3Jlc3RvcmU8L2FwcGxp Y2F0aW9uPiB0bworICAgZGF0YWJhc2Ugb3IgY2x1c3RlciB0byB0aGUgc3RhdGUgaXQgd2Fz IGluIGF0IHRoZSB0aW1lIGl0IHdhcyBzYXZlZC4gVGhlCisgICBhcmNoaXZlcyBhbHNvIGFs bG93IDxhcHBsaWNhdGlvbj5wZ19yZXN0b3JlPC9hcHBsaWNhdGlvbj4gdG8KICAgIGJlIHNl bGVjdGl2ZSBhYm91dCB3aGF0IGlzIHJlc3RvcmVkLCBvciBldmVuIHRvIHJlb3JkZXIgdGhl IGl0ZW1zCi0gICBwcmlvciB0byBiZWluZyByZXN0b3JlZC4gVGhlIGFyY2hpdmUgZmlsZXMg YXJlIGRlc2lnbmVkIHRvIGJlCisgICBwcmlvciB0byBiZWluZyByZXN0b3JlZC4gVGhlIGFy Y2hpdmUgZm9ybWF0cyBhcmUgZGVzaWduZWQgdG8gYmUKICAgIHBvcnRhYmxlIGFjcm9zcyBh cmNoaXRlY3R1cmVzLgogICA8L3BhcmE+CiAKQEAgLTUyLDEwICs1NCwxNyBAQCBQb3N0Z3Jl U1FMIGRvY3VtZW50YXRpb24KICAgIDxhcHBsaWNhdGlvbj5wZ19yZXN0b3JlPC9hcHBsaWNh dGlvbj4gY2FuIG9wZXJhdGUgaW4gdHdvIG1vZGVzLgogICAgSWYgYSBkYXRhYmFzZSBuYW1l IGlzIHNwZWNpZmllZCwgPGFwcGxpY2F0aW9uPnBnX3Jlc3RvcmU8L2FwcGxpY2F0aW9uPgog ICAgY29ubmVjdHMgdG8gdGhhdCBkYXRhYmFzZSBhbmQgcmVzdG9yZXMgYXJjaGl2ZSBjb250 ZW50cyBkaXJlY3RseSBpbnRvCi0gICB0aGUgZGF0YWJhc2UuICBPdGhlcndpc2UsIGEgc2Ny aXB0IGNvbnRhaW5pbmcgdGhlIFNRTAotICAgY29tbWFuZHMgbmVjZXNzYXJ5IHRvIHJlYnVp bGQgdGhlIGRhdGFiYXNlIGlzIGNyZWF0ZWQgYW5kIHdyaXR0ZW4KKyAgIHRoZSBkYXRhYmFz ZS4KKyAgIFdoZW4gcmVzdG9yaW5nIGZyb20gYSBkdW1wIG1hZGUgYnk8YXBwbGljYXRpb24+ cGdfZHVtcGFsbDwvYXBwbGljYXRpb24+LAorICAgZWFjaCBkYXRhYmFzZSB3aWxsIGJlIGNy ZWF0ZWQgYW5kIHRoZW4gdGhlIHJlc3RvcmF0aW9uIHdpbGwgYmUgcnVuIGluIHRoYXQKKyAg IGRhdGFiYXNlLgorCisgICBPdGhlcndpc2UsIHdoZW4gYSBkYXRhYmFzZSBuYW1lIGlzIG5v dCBzcGVjaWZpZWQsIGEgc2NyaXB0IGNvbnRhaW5pbmcgdGhlIFNRTAorICAgY29tbWFuZHMg bmVjZXNzYXJ5IHRvIHJlYnVpbGQgdGhlIGRhdGFiYXNlIG9yIGNsdXN0ZXIgaXMgY3JlYXRl ZCBhbmQgd3JpdHRlbgogICAgdG8gYSBmaWxlIG9yIHN0YW5kYXJkIG91dHB1dC4gIFRoaXMg c2NyaXB0IG91dHB1dCBpcyBlcXVpdmFsZW50IHRvCi0gICB0aGUgcGxhaW4gdGV4dCBvdXRw dXQgZm9ybWF0IG9mIDxhcHBsaWNhdGlvbj5wZ19kdW1wPC9hcHBsaWNhdGlvbj4uCisgICB0 aGUgcGxhaW4gdGV4dCBvdXRwdXQgZm9ybWF0IG9mIDxhcHBsaWNhdGlvbj5wZ19kdW1wPC9h cHBsaWNhdGlvbj4gb3IKKyAgIDxhcHBsaWNhdGlvbj5wZ19kdW1wYWxsPC9hcHBsaWNhdGlv bj4uCisKICAgIFNvbWUgb2YgdGhlIG9wdGlvbnMgY29udHJvbGxpbmcgdGhlIG91dHB1dCBh cmUgdGhlcmVmb3JlIGFuYWxvZ291cyB0bwogICAgPGFwcGxpY2F0aW9uPnBnX2R1bXA8L2Fw cGxpY2F0aW9uPiBvcHRpb25zLgogICA8L3BhcmE+CkBAIC0xNDAsNiArMTQ5LDggQEAgUG9z dGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICAgICAgIGNvbW1hbmRzIHRoYXQgbWVudGlvbiB0 aGlzIGRhdGFiYXNlLgogICAgICAgICBBY2Nlc3MgcHJpdmlsZWdlcyBmb3IgdGhlIGRhdGFi YXNlIGl0c2VsZiBhcmUgYWxzbyByZXN0b3JlZCwKICAgICAgICAgdW5sZXNzIDxvcHRpb24+ LS1uby1hY2w8L29wdGlvbj4gaXMgc3BlY2lmaWVkLgorICAgICAgICA8b3B0aW9uPi0tY3Jl YXRlPC9vcHRpb24+IGlzIHJlcXVpcmVkIHdoZW4gcmVzdG9yaW5nIG11bHRpcGxlIGRhdGFi YXNlcworICAgICAgICBmcm9tIGFuIGFyY2hpdmUgY3JlYXRlZCBieSA8YXBwbGljYXRpb24+ cGdfZHVtcGFsbDwvYXBwbGljYXRpb24+LgogICAgICAgIDwvcGFyYT4KIAogICAgICAgIDxw YXJhPgpAQCAtMTY2LDYgKzE3NywyOCBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICAg ICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0 ZW50cnk+CisgICAgICA8dGVybT48b3B0aW9uPi0tZXhjbHVkZS1kYXRhYmFzZT08cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGF0dGVybjwvcmVwbGFjZWFibGU+PC9vcHRpb24+ PC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBEbyBu b3QgcmVzdG9yZSBkYXRhYmFzZXMgd2hvc2UgbmFtZSBtYXRjaGVzCisgICAgICAgIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXR0ZXJuPC9yZXBsYWNlYWJsZT4uCisgICAg ICAgIE11bHRpcGxlIHBhdHRlcm5zIGNhbiBiZSBleGNsdWRlZCBieSB3cml0aW5nIG11bHRp cGxlCisgICAgICAgIDxvcHRpb24+LS1leGNsdWRlLWRhdGFiYXNlPC9vcHRpb24+IHN3aXRj aGVzLiAgVGhlCisgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXR0 ZXJuPC9yZXBsYWNlYWJsZT4gcGFyYW1ldGVyIGlzCisgICAgICAgIGludGVycHJldGVkIGFz IGEgcGF0dGVybiBhY2NvcmRpbmcgdG8gdGhlIHNhbWUgcnVsZXMgdXNlZCBieQorICAgICAg ICA8YXBwbGljYXRpb24+cHNxbDwvYXBwbGljYXRpb24+J3MgPGxpdGVyYWw+XGQ8L2xpdGVy YWw+CisgICAgICAgIGNvbW1hbmRzIChzZWUgPHhyZWYgbGlua2VuZD0iYXBwLXBzcWwtcGF0 dGVybnMiLz4pLAorICAgICAgICBzbyBtdWx0aXBsZSBkYXRhYmFzZXMgY2FuIGFsc28gYmUg ZXhjbHVkZWQgYnkgd3JpdGluZyB3aWxkY2FyZAorICAgICAgICBjaGFyYWN0ZXJzIGluIHRo ZSBwYXR0ZXJuLiAgV2hlbiB1c2luZyB3aWxkY2FyZHMsIGJlIGNhcmVmdWwgdG8KKyAgICAg ICAgcXVvdGUgdGhlIHBhdHRlcm4gaWYgbmVlZGVkIHRvIHByZXZlbnQgc2hlbGwgd2lsZGNh cmQgZXhwYW5zaW9uLgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAg VGhpcyBvcHRpb24gaXMgb25seSByZWxldmFudCB3aGVuIHJlc3RvcmluZyBmcm9tIGFuIGFy Y2hpdmUgbWFkZSB1c2luZyA8YXBwbGljYXRpb24+cGdfZHVtcGFsbDwvYXBwbGljYXRpb24+ LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVu dHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICA8dGVybT48b3B0aW9uPi1lPC9v cHRpb24+PC90ZXJtPgogICAgICAgPHRlcm0+PG9wdGlvbj4tLWV4aXQtb24tZXJyb3I8L29w dGlvbj48L3Rlcm0+CkBAIC0zMTUsNiArMzQ4LDE5IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRh dGlvbgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAg PHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxvcHRpb24+LWc8L29wdGlvbj48L3Rlcm0+ CisgICAgICA8dGVybT48b3B0aW9uPi0tZ2xvYmFscy1vbmx5PC9vcHRpb24+PC90ZXJtPgor ICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBSZXN0b3JlIG9ubHkg Z2xvYmFsIG9iamVjdHMgKHJvbGVzIGFuZCB0YWJsZXNwYWNlcyksIG5vIGRhdGFiYXNlcy4K KyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoaXMgb3B0aW9uIGlz IG9ubHkgcmVsZXZhbnQgd2hlbiByZXN0b3JpbmcgZnJvbSBhbiBhcmNoaXZlIG1hZGUgdXNp bmcgPGFwcGxpY2F0aW9uPnBnX2R1bXBhbGw8L2FwcGxpY2F0aW9uPi4KKyAgICAgICA8L3Bh cmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8 dmFybGlzdGVudHJ5PgogICAgICAgPHRlcm0+PG9wdGlvbj4tSSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+aW5kZXg8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KICAg ICAgIDx0ZXJtPjxvcHRpb24+LS1pbmRleD08cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+aW5kZXg8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfZHVtcC9wYXJhbGxlbC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BhcmFsbGVsLmMK aW5kZXggMDg2YWRjZGM1MDIuLmEzNmQyYTViZjg0IDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X2R1bXAvcGFyYWxsZWwuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGFyYWxsZWwuYwpAQCAt MzI2LDExICszMjYsMTggQEAgZ2V0VGhyZWFkTG9jYWxQUUV4cEJ1ZmZlcih2b2lkKQogICog cGdfZHVtcCBhbmQgcGdfcmVzdG9yZSBjYWxsIHRoaXMgdG8gcmVnaXN0ZXIgdGhlIGNsZWFu dXAgaGFuZGxlcgogICogYXMgc29vbiBhcyB0aGV5J3ZlIGNyZWF0ZWQgdGhlIEFyY2hpdmVI YW5kbGUuCiAgKi8KLXZvaWQKK2ludAogb25fZXhpdF9jbG9zZV9hcmNoaXZlKEFyY2hpdmUg KkFIWCkKIHsKIAlzaHV0ZG93bl9pbmZvLkFIWCA9IEFIWDsKLQlvbl9leGl0X25pY2VseShh cmNoaXZlX2Nsb3NlX2Nvbm5lY3Rpb24sICZzaHV0ZG93bl9pbmZvKTsKKwlyZXR1cm4gb25f ZXhpdF9uaWNlbHkoYXJjaGl2ZV9jbG9zZV9jb25uZWN0aW9uLCAmc2h1dGRvd25faW5mbyk7 Cit9CisKK3ZvaWQKK3JlcGxhY2Vfb25fZXhpdF9jbG9zZV9hcmNoaXZlKEFyY2hpdmUgKkFI WCwgaW50IGlkeCkKK3sKKwlzaHV0ZG93bl9pbmZvLkFIWCA9IEFIWDsKKwlzZXRfb25fZXhp dF9uaWNlbHlfZW50cnkoYXJjaGl2ZV9jbG9zZV9jb25uZWN0aW9uLCAmc2h1dGRvd25faW5m bywgaWR4KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNr dXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXAuaAppbmRleCA0OWJjMWVlNzFlZi4u MTdkNmUwNmVjMjUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXAuaAor KysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwLmgKQEAgLTMxMSw3ICszMTEsNyBAQCBl eHRlcm4gdm9pZCBTZXRBcmNoaXZlT3B0aW9ucyhBcmNoaXZlICpBSCwgRHVtcE9wdGlvbnMg KmRvcHQsIFJlc3RvcmVPcHRpb25zICpybwogCiBleHRlcm4gdm9pZCBQcm9jZXNzQXJjaGl2 ZVJlc3RvcmVPcHRpb25zKEFyY2hpdmUgKkFIWCk7CiAKLWV4dGVybiB2b2lkIFJlc3RvcmVB cmNoaXZlKEFyY2hpdmUgKkFIWCk7CitleHRlcm4gdm9pZCBSZXN0b3JlQXJjaGl2ZShBcmNo aXZlICpBSFgsIGJvb2wgYXBwZW5kX2RhdGEpOwogCiAvKiBPcGVuIGFuIGV4aXN0aW5nIGFy Y2hpdmUgKi8KIGV4dGVybiBBcmNoaXZlICpPcGVuQXJjaGl2ZShjb25zdCBjaGFyICpGaWxl U3BlYywgY29uc3QgQXJjaGl2ZUZvcm1hdCBmbXQpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1 cF9hcmNoaXZlci5jCmluZGV4IDNmNTlmOGY5ZDlkLi41NGViNDcyODkyOCAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCisrKyBiL3NyYy9iaW4v cGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYwpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMg aW50CVJlc3RvcmluZ1RvREIoQXJjaGl2ZUhhbmRsZSAqQUgpOwogc3RhdGljIHZvaWQgZHVt cF9sb19idWYoQXJjaGl2ZUhhbmRsZSAqQUgpOwogc3RhdGljIHZvaWQgZHVtcFRpbWVzdGFt cChBcmNoaXZlSGFuZGxlICpBSCwgY29uc3QgY2hhciAqbXNnLCB0aW1lX3QgdGltKTsKIHN0 YXRpYyB2b2lkIFNldE91dHB1dChBcmNoaXZlSGFuZGxlICpBSCwgY29uc3QgY2hhciAqZmls ZW5hbWUsCi0JCQkJCSAgY29uc3QgcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVz c2lvbl9zcGVjKTsKKwkJCQkJICBjb25zdCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uIGNv bXByZXNzaW9uX3NwZWMsIGJvb2wgYXBwZW5kX2RhdGEpOwogc3RhdGljIENvbXByZXNzRmls ZUhhbmRsZSAqU2F2ZU91dHB1dChBcmNoaXZlSGFuZGxlICpBSCk7CiBzdGF0aWMgdm9pZCBS ZXN0b3JlT3V0cHV0KEFyY2hpdmVIYW5kbGUgKkFILCBDb21wcmVzc0ZpbGVIYW5kbGUgKnNh dmVkT3V0cHV0KTsKIApAQCAtMzM4LDkgKzMzOCwxNCBAQCBQcm9jZXNzQXJjaGl2ZVJlc3Rv cmVPcHRpb25zKEFyY2hpdmUgKkFIWCkKIAkJU3RyaWN0TmFtZXNDaGVjayhyb3B0KTsKIH0K IAotLyogUHVibGljICovCisvKgorICogUmVzdG9yZUFyY2hpdmUKKyAqCisgKiBJZiBhcHBl bmRfZGF0YSBpcyBzZXQsIHRoZW4gYXBwZW5kIGRhdGEgaW50byBmaWxlIGFzIHdlIGFyZSBy ZXN0b3JpbmcgZHVtcAorICogb2YgbXVsdGlwbGUgZGF0YWJhc2VzIHdoaWNoIHdhcyB0YWtl biBieSBwZ19kdW1wYWxsLgorICovCiB2b2lkCi1SZXN0b3JlQXJjaGl2ZShBcmNoaXZlICpB SFgpCitSZXN0b3JlQXJjaGl2ZShBcmNoaXZlICpBSFgsIGJvb2wgYXBwZW5kX2RhdGEpCiB7 CiAJQXJjaGl2ZUhhbmRsZSAqQUggPSAoQXJjaGl2ZUhhbmRsZSAqKSBBSFg7CiAJUmVzdG9y ZU9wdGlvbnMgKnJvcHQgPSBBSC0+cHVibGljLnJvcHQ7CkBAIC00NTcsNyArNDYyLDcgQEAg UmVzdG9yZUFyY2hpdmUoQXJjaGl2ZSAqQUhYKQogCSAqLwogCXNhdiA9IFNhdmVPdXRwdXQo QUgpOwogCWlmIChyb3B0LT5maWxlbmFtZSB8fCByb3B0LT5jb21wcmVzc2lvbl9zcGVjLmFs Z29yaXRobSAhPSBQR19DT01QUkVTU0lPTl9OT05FKQotCQlTZXRPdXRwdXQoQUgsIHJvcHQt PmZpbGVuYW1lLCByb3B0LT5jb21wcmVzc2lvbl9zcGVjKTsKKwkJU2V0T3V0cHV0KEFILCBy b3B0LT5maWxlbmFtZSwgcm9wdC0+Y29tcHJlc3Npb25fc3BlYywgYXBwZW5kX2RhdGEpOwog CiAJYWhwcmludGYoQUgsICItLVxuLS0gUG9zdGdyZVNRTCBkYXRhYmFzZSBkdW1wXG4tLVxu XG4iKTsKIApAQCAtMTI5Myw3ICsxMjk4LDcgQEAgUHJpbnRUT0NTdW1tYXJ5KEFyY2hpdmUg KkFIWCkKIAogCXNhdiA9IFNhdmVPdXRwdXQoQUgpOwogCWlmIChyb3B0LT5maWxlbmFtZSkK LQkJU2V0T3V0cHV0KEFILCByb3B0LT5maWxlbmFtZSwgb3V0X2NvbXByZXNzaW9uX3NwZWMp OworCQlTZXRPdXRwdXQoQUgsIHJvcHQtPmZpbGVuYW1lLCBvdXRfY29tcHJlc3Npb25fc3Bl YywgZmFsc2UpOwogCiAJaWYgKHN0cmZ0aW1lKHN0YW1wX3N0ciwgc2l6ZW9mKHN0YW1wX3N0 ciksIFBHRFVNUF9TVFJGVElNRV9GTVQsCiAJCQkJIGxvY2FsdGltZSgmQUgtPmNyZWF0ZURh dGUpKSA9PSAwKQpAQCAtMTY3Miw3ICsxNjc3LDggQEAgYXJjaHByaW50ZihBcmNoaXZlICpB SCwgY29uc3QgY2hhciAqZm10LC4uLikKIAogc3RhdGljIHZvaWQKIFNldE91dHB1dChBcmNo aXZlSGFuZGxlICpBSCwgY29uc3QgY2hhciAqZmlsZW5hbWUsCi0JCSAgY29uc3QgcGdfY29t cHJlc3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjKQorCQkgIGNvbnN0IHBnX2Nv bXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJlc3Npb25fc3BlYywKKwkJICBib29sIGFwcGVu ZF9kYXRhKQogewogCUNvbXByZXNzRmlsZUhhbmRsZSAqQ0ZIOwogCWNvbnN0IGNoYXIgKm1v ZGU7CkBAIC0xNjkyLDcgKzE2OTgsNyBAQCBTZXRPdXRwdXQoQXJjaGl2ZUhhbmRsZSAqQUgs IGNvbnN0IGNoYXIgKmZpbGVuYW1lLAogCWVsc2UKIAkJZm4gPSBmaWxlbm8oc3Rkb3V0KTsK IAotCWlmIChBSC0+bW9kZSA9PSBhcmNoTW9kZUFwcGVuZCkKKwlpZiAoYXBwZW5kX2RhdGEg fHwgQUgtPm1vZGUgPT0gYXJjaE1vZGVBcHBlbmQpCiAJCW1vZGUgPSBQR19CSU5BUllfQTsK IAllbHNlCiAJCW1vZGUgPSBQR19CSU5BUllfVzsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBf YXJjaGl2ZXIuaAppbmRleCBhMjA2NGY0NzFlZC4uZGMwNDViODUyZTkgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuaAorKysgYi9zcmMvYmluL3Bn X2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmgKQEAgLTM4NSw3ICszODUsOCBAQCBzdHJ1Y3Qg X3RvY0VudHJ5CiB9OwogCiBleHRlcm4gaW50CXBhcmFsbGVsX3Jlc3RvcmUoQXJjaGl2ZUhh bmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSk7Ci1leHRlcm4gdm9pZCBvbl9leGl0X2Nsb3NlX2Fy Y2hpdmUoQXJjaGl2ZSAqQUhYKTsKK2V4dGVybiBpbnQJb25fZXhpdF9jbG9zZV9hcmNoaXZl KEFyY2hpdmUgKkFIWCk7CitleHRlcm4gdm9pZCByZXBsYWNlX29uX2V4aXRfY2xvc2VfYXJj aGl2ZShBcmNoaXZlICpBSFgsIGludCBpZHgpOwogCiBleHRlcm4gdm9pZCB3YXJuX29yX2V4 aXRfaG9ycmlibHkoQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNoYXIgKmZtdCwuLi4pIHBn X2F0dHJpYnV0ZV9wcmludGYoMiwgMyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVt cC9wZ19iYWNrdXBfdGFyLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX3Rhci5jCmlu ZGV4IGI1YmEzYjQ2ZGQ5Li5kOTRkMGRlMmE1ZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19k dW1wL3BnX2JhY2t1cF90YXIuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX3Rh ci5jCkBAIC04MjYsNyArODI2LDcgQEAgX0Nsb3NlQXJjaGl2ZShBcmNoaXZlSGFuZGxlICpB SCkKIAkJc2F2VmVyYm9zZSA9IEFILT5wdWJsaWMudmVyYm9zZTsKIAkJQUgtPnB1YmxpYy52 ZXJib3NlID0gMDsKIAotCQlSZXN0b3JlQXJjaGl2ZSgoQXJjaGl2ZSAqKSBBSCk7CisJCVJl c3RvcmVBcmNoaXZlKChBcmNoaXZlICopIEFILCBmYWxzZSk7CiAKIAkJU2V0QXJjaGl2ZU9w dGlvbnMoKEFyY2hpdmUgKikgQUgsIHNhdkRvcHQsIHNhdlJvcHQpOwogCmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX3V0aWxzLmMgYi9zcmMvYmluL3BnX2R1bXAv cGdfYmFja3VwX3V0aWxzLmMKaW5kZXggNzlhZWM1ZjUxNTguLjU5ZWNlMjk5OWE4IDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX3V0aWxzLmMKKysrIGIvc3JjL2Jp bi9wZ19kdW1wL3BnX2JhY2t1cF91dGlscy5jCkBAIC02MSwxNCArNjEsMjYgQEAgc2V0X2R1 bXBfc2VjdGlvbihjb25zdCBjaGFyICphcmcsIGludCAqZHVtcFNlY3Rpb25zKQogCiAKIC8q IFJlZ2lzdGVyIGEgY2FsbGJhY2sgdG8gYmUgcnVuIHdoZW4gZXhpdF9uaWNlbHkgaXMgaW52 b2tlZC4gKi8KLXZvaWQKK2ludAogb25fZXhpdF9uaWNlbHkob25fZXhpdF9uaWNlbHlfY2Fs bGJhY2sgZnVuY3Rpb24sIHZvaWQgKmFyZykKIHsKLQlpZiAob25fZXhpdF9uaWNlbHlfaW5k ZXggPj0gTUFYX09OX0VYSVRfTklDRUxZKQotCQlwZ19mYXRhbCgib3V0IG9mIG9uX2V4aXRf bmljZWx5IHNsb3RzIik7Ci0Jb25fZXhpdF9uaWNlbHlfbGlzdFtvbl9leGl0X25pY2VseV9p bmRleF0uZnVuY3Rpb24gPSBmdW5jdGlvbjsKLQlvbl9leGl0X25pY2VseV9saXN0W29uX2V4 aXRfbmljZWx5X2luZGV4XS5hcmcgPSBhcmc7CisJc2V0X29uX2V4aXRfbmljZWx5X2VudHJ5 KGZ1bmN0aW9uLCBhcmcsIG9uX2V4aXRfbmljZWx5X2luZGV4KTsKIAlvbl9leGl0X25pY2Vs eV9pbmRleCsrOworCisJcmV0dXJuIChvbl9leGl0X25pY2VseV9pbmRleCAtIDEpOworfQor Cit2b2lkCitzZXRfb25fZXhpdF9uaWNlbHlfZW50cnkob25fZXhpdF9uaWNlbHlfY2FsbGJh Y2sgZnVuY3Rpb24sIHZvaWQgKmFyZywgaW50IGkpCit7CisJaWYgKGkgPj0gTUFYX09OX0VY SVRfTklDRUxZKQorCQlwZ19mYXRhbCgib3V0IG9mIG9uX2V4aXRfbmljZWx5IHNsb3RzIik7 CisKKwlpZiAoaSA+IG9uX2V4aXRfbmljZWx5X2luZGV4KQorCQlwZ19mYXRhbCgibm8gZW50 cnkgZXhpc3RzIG9uICVkIGluZGV4IGludG8gb25fZXhpdF9uaWNlbHkgc2xvdHMiLCBpKTsK KworCW9uX2V4aXRfbmljZWx5X2xpc3RbaV0uZnVuY3Rpb24gPSBmdW5jdGlvbjsKKwlvbl9l eGl0X25pY2VseV9saXN0W2ldLmFyZyA9IGFyZzsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfdXRpbHMuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19i YWNrdXBfdXRpbHMuaAppbmRleCBiYTA0MjAxNjg3OS4uMWNlMTA3NzA5NmQgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfdXRpbHMuaAorKysgYi9zcmMvYmluL3Bn X2R1bXAvcGdfYmFja3VwX3V0aWxzLmgKQEAgLTI4LDcgKzI4LDggQEAgdHlwZWRlZiB2b2lk ICgqb25fZXhpdF9uaWNlbHlfY2FsbGJhY2spIChpbnQgY29kZSwgdm9pZCAqYXJnKTsKIGV4 dGVybiBjb25zdCBjaGFyICpwcm9nbmFtZTsKIAogZXh0ZXJuIHZvaWQgc2V0X2R1bXBfc2Vj dGlvbihjb25zdCBjaGFyICphcmcsIGludCAqZHVtcFNlY3Rpb25zKTsKLWV4dGVybiB2b2lk IG9uX2V4aXRfbmljZWx5KG9uX2V4aXRfbmljZWx5X2NhbGxiYWNrIGZ1bmN0aW9uLCB2b2lk ICphcmcpOworZXh0ZXJuIGludAlvbl9leGl0X25pY2VseShvbl9leGl0X25pY2VseV9jYWxs YmFjayBmdW5jdGlvbiwgdm9pZCAqYXJnKTsKK2V4dGVybiB2b2lkIHNldF9vbl9leGl0X25p Y2VseV9lbnRyeShvbl9leGl0X25pY2VseV9jYWxsYmFjayBmdW5jdGlvbiwgdm9pZCAqYXJn LCBpbnQgaWR4KTsKIHBnX25vcmV0dXJuIGV4dGVybiB2b2lkIGV4aXRfbmljZWx5KGludCBj b2RlKTsKIAogLyogSW4gcGdfZHVtcCwgd2UgbW9kaWZ5IHBnX2ZhdGFsIHRvIGNhbGwgZXhp dF9uaWNlbHkgaW5zdGVhZCBvZiBleGl0ICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCBmODRlYTZl Y2M0OC4uODMyYTZhZjcwOTEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtMTIxOSw3ICsxMjE5LDcg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJICogcmlnaHQgbm93LgogCSAqLwog CWlmIChwbGFpblRleHQpCi0JCVJlc3RvcmVBcmNoaXZlKGZvdXQpOworCQlSZXN0b3JlQXJj aGl2ZShmb3V0LCBmYWxzZSk7CiAKIAlDbG9zZUFyY2hpdmUoZm91dCk7CiAKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wYWxsLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcGFsbC5jCmluZGV4IDU3M2E4YjYxYTQ1Li45ZDA4YzZjYTBlNiAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBhbGwuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcGFsbC5jCkBAIC0xNSw2ICsxNSw3IEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlc19mZS5o IgogCisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDx0aW1lLmg+CiAjaW5jbHVk ZSA8dW5pc3RkLmg+CiAKQEAgLTY0LDkgKzY1LDEwIEBAIHN0YXRpYyB2b2lkIGRyb3BUYWJs ZXNwYWNlcyhQR2Nvbm4gKmNvbm4pOwogc3RhdGljIHZvaWQgZHVtcFRhYmxlc3BhY2VzKFBH Y29ubiAqY29ubik7CiBzdGF0aWMgdm9pZCBkcm9wREJzKFBHY29ubiAqY29ubik7CiBzdGF0 aWMgdm9pZCBkdW1wVXNlckNvbmZpZyhQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnVzZXJu YW1lKTsKLXN0YXRpYyB2b2lkIGR1bXBEYXRhYmFzZXMoUEdjb25uICpjb25uKTsKK3N0YXRp YyB2b2lkIGR1bXBEYXRhYmFzZXMoUEdjb25uICpjb25uLCBBcmNoaXZlRm9ybWF0IGFyY2hE dW1wRm9ybWF0KTsKIHN0YXRpYyB2b2lkIGR1bXBUaW1lc3RhbXAoY29uc3QgY2hhciAqbXNn KTsKLXN0YXRpYyBpbnQJcnVuUGdEdW1wKGNvbnN0IGNoYXIgKmRibmFtZSwgY29uc3QgY2hh ciAqY3JlYXRlX29wdHMpOworc3RhdGljIGludAlydW5QZ0R1bXAoY29uc3QgY2hhciAqZGJu YW1lLCBjb25zdCBjaGFyICpjcmVhdGVfb3B0cywKKwkJCQkJICBjaGFyICpkYmZpbGUsIEFy Y2hpdmVGb3JtYXQgYXJjaER1bXBGb3JtYXQpOwogc3RhdGljIHZvaWQgYnVpbGRTaFNlY0xh YmVscyhQR2Nvbm4gKmNvbm4sCiAJCQkJCQkJIGNvbnN0IGNoYXIgKmNhdGFsb2dfbmFtZSwg T2lkIG9iamVjdElkLAogCQkJCQkJCSBjb25zdCBjaGFyICpvYmp0eXBlLCBjb25zdCBjaGFy ICpvYmpuYW1lLApAQCAtNzUsNiArNzcsOCBAQCBzdGF0aWMgdm9pZCBleGVjdXRlQ29tbWFu ZChQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnF1ZXJ5KTsKIHN0YXRpYyB2b2lkIGV4cGFu ZF9kYm5hbWVfcGF0dGVybnMoUEdjb25uICpjb25uLCBTaW1wbGVTdHJpbmdMaXN0ICpwYXR0 ZXJucywKIAkJCQkJCQkJICAgU2ltcGxlU3RyaW5nTGlzdCAqbmFtZXMpOwogc3RhdGljIHZv aWQgcmVhZF9kdW1wYWxsX2ZpbHRlcnMoY29uc3QgY2hhciAqZmlsZW5hbWUsIFNpbXBsZVN0 cmluZ0xpc3QgKnBhdHRlcm4pOworc3RhdGljIHZvaWQgY3JlYXRlX29yX29wZW5fZGlyKGNv bnN0IGNoYXIgKmRpcm5hbWUpOworc3RhdGljIEFyY2hpdmVGb3JtYXQgcGFyc2VEdW1wRm9y bWF0KGNvbnN0IGNoYXIgKmZvcm1hdCk7CiAKIHN0YXRpYyBjaGFyIHBnX2R1bXBfYmluW01B WFBHUEFUSF07CiBzdGF0aWMgUFFFeHBCdWZmZXIgcGdkdW1wb3B0czsKQEAgLTE0Niw2ICsx NTAsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCXsicGFzc3dvcmQiLCBu b19hcmd1bWVudCwgTlVMTCwgJ1cnfSwKIAkJeyJuby1wcml2aWxlZ2VzIiwgbm9fYXJndW1l bnQsIE5VTEwsICd4J30sCiAJCXsibm8tYWNsIiwgbm9fYXJndW1lbnQsIE5VTEwsICd4J30s CisJCXsiZm9ybWF0IiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdGJ30sCiAKIAkJLyoK IAkJICogdGhlIGZvbGxvd2luZyBvcHRpb25zIGRvbid0IGhhdmUgYW4gZXF1aXZhbGVudCBz aG9ydCBvcHRpb24gbGV0dGVyCkBAIC0xOTUsNiArMjAwLDggQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdKQogCWNoYXIJICAgKnBnZGIgPSBOVUxMOwogCWNoYXIJICAgKnVzZV9y b2xlID0gTlVMTDsKIAljb25zdCBjaGFyICpkdW1wZW5jb2RpbmcgPSBOVUxMOworCUFyY2hp dmVGb3JtYXQgYXJjaER1bXBGb3JtYXQgPSBhcmNoTnVsbDsKKwljb25zdCBjaGFyICpmb3Jt YXROYW1lID0gInAiOwogCXRyaXZhbHVlCXByb21wdF9wYXNzd29yZCA9IFRSSV9ERUZBVUxU OwogCWJvb2wJCWRhdGFfb25seSA9IGZhbHNlOwogCWJvb2wJCWdsb2JhbHNfb25seSA9IGZh bHNlOwpAQCAtMjQ0LDcgKzI1MSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK IAogCXBnZHVtcG9wdHMgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOwogCi0Jd2hpbGUgKChjID0g Z2V0b3B0X2xvbmcoYXJnYywgYXJndiwgImFjZDpFOmY6Z2g6bDpPcDpyc1M6dFU6dndXeCIs IGxvbmdfb3B0aW9ucywgJm9wdGluZGV4KSkgIT0gLTEpCisJd2hpbGUgKChjID0gZ2V0b3B0 X2xvbmcoYXJnYywgYXJndiwgImFjZDpFOmY6RjpnaDpsOk9wOnJzUzp0VTp2d1d4IiwgbG9u Z19vcHRpb25zLCAmb3B0aW5kZXgpKSAhPSAtMSkKIAl7CiAJCXN3aXRjaCAoYykKIAkJewpA QCAtMjcyLDcgKzI3OSw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihwZ2R1bXBvcHRzLCAiIC1mICIpOwogCQkJCWFwcGVuZFNo ZWxsU3RyaW5nKHBnZHVtcG9wdHMsIGZpbGVuYW1lKTsKIAkJCQlicmVhazsKLQorCQkJY2Fz ZSAnRic6CisJCQkJZm9ybWF0TmFtZSA9IHBnX3N0cmR1cChvcHRhcmcpOworCQkJCWJyZWFr OwogCQkJY2FzZSAnZyc6CiAJCQkJZ2xvYmFsc19vbmx5ID0gdHJ1ZTsKIAkJCQlicmVhazsK QEAgLTQyMSw2ICs0MzAsMjEgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQll eGl0X25pY2VseSgxKTsKIAl9CiAKKwkvKiBHZXQgZm9ybWF0IGZvciBkdW1wLiAqLworCWFy Y2hEdW1wRm9ybWF0ID0gcGFyc2VEdW1wRm9ybWF0KGZvcm1hdE5hbWUpOworCisJLyoKKwkg KiBJZiBhIG5vbi1wbGFpbiBmb3JtYXQgaXMgc3BlY2lmaWVkLCBhIGZpbGUgbmFtZSBpcyBh bHNvIHJlcXVpcmVkIGFzIHRoZQorCSAqIHBhdGggdG8gdGhlIG1haW4gZGlyZWN0b3J5Lgor CSAqLworCWlmIChhcmNoRHVtcEZvcm1hdCAhPSBhcmNoTnVsbCAmJgorCQkoIWZpbGVuYW1l IHx8IHN0cmNtcChmaWxlbmFtZSwgIiIpID09IDApKQorCXsKKwkJcGdfbG9nX2Vycm9yKCJv cHRpb24gLUYvLS1mb3JtYXQ9ZHxjfHQgcmVxdWlyZXMgb3B0aW9uIC1mLy0tZmlsZSIpOwor CQlwZ19sb2dfZXJyb3JfaGludCgiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3Jt YXRpb24uIiwgcHJvZ25hbWUpOworCQlleGl0X25pY2VseSgxKTsKKwl9CisKIAkvKgogCSAq IElmIHBhc3N3b3JkIHZhbHVlcyBhcmUgbm90IHJlcXVpcmVkIGluIHRoZSBkdW1wLCBzd2l0 Y2ggdG8gdXNpbmcKIAkgKiBwZ19yb2xlcyB3aGljaCBpcyBlcXVhbGx5IHVzZWZ1bCwganVz dCBtb3JlIGxpa2VseSB0byBoYXZlIHVucmVzdHJpY3RlZApAQCAtNDgzLDYgKzUwNywzMyBA QCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJaWYgKHN0YXRpc3RpY3Nfb25seSkK IAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocGdkdW1wb3B0cywgIiAtLXN0YXRpc3RpY3Mtb25s eSIpOwogCisJLyoKKwkgKiBPcGVuIHRoZSBvdXRwdXQgZmlsZSBpZiByZXF1aXJlZCwgb3Ro ZXJ3aXNlIHVzZSBzdGRvdXQuICBJZiByZXF1aXJlZCwKKwkgKiB0aGVuIGNyZWF0ZSBuZXcg ZGlyZWN0b3J5IGFuZCBnbG9iYWwuZGF0IGZpbGUuCisJICovCisJaWYgKGFyY2hEdW1wRm9y bWF0ICE9IGFyY2hOdWxsKQorCXsKKwkJY2hhcgkJZ2xvYmFsX3BhdGhbTUFYUEdQQVRIXTsK KworCQkvKiBDcmVhdGUgbmV3IGRpcmVjdG9yeSBvciBhY2NlcHQgdGhlIGVtcHR5IGV4aXN0 aW5nIGRpcmVjdG9yeS4gKi8KKwkJY3JlYXRlX29yX29wZW5fZGlyKGZpbGVuYW1lKTsKKwor CQlzbnByaW50ZihnbG9iYWxfcGF0aCwgTUFYUEdQQVRILCAiJXMvZ2xvYmFsLmRhdCIsIGZp bGVuYW1lKTsKKworCQlPUEYgPSBmb3BlbihnbG9iYWxfcGF0aCwgUEdfQklOQVJZX1cpOwor CQlpZiAoIU9QRikKKwkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBnbG9iYWwuZGF0IGZp bGU6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKwl9CisJZWxzZSBpZiAoZmlsZW5hbWUpCisJ eworCQlPUEYgPSBmb3BlbihmaWxlbmFtZSwgUEdfQklOQVJZX1cpOworCQlpZiAoIU9QRikK KwkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBvdXRwdXQgZmlsZSBcIiVzXCI6ICVtIiwK KwkJCQkJIGZpbGVuYW1lKTsKKwl9CisJZWxzZQorCQlPUEYgPSBzdGRvdXQ7CisKIAkvKgog CSAqIElmIHRoZXJlIHdhcyBhIGRhdGFiYXNlIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBs aW5lLCB1c2UgdGhhdCwKIAkgKiBvdGhlcndpc2UgdHJ5IHRvIGNvbm5lY3QgdG8gZGF0YWJh c2UgInBvc3RncmVzIiwgYW5kIGZhaWxpbmcgdGhhdApAQCAtNTIyLDE5ICs1NzMsNiBAQCBt YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJZXhwYW5kX2RibmFtZV9wYXR0ZXJucyhj b25uLCAmZGF0YWJhc2VfZXhjbHVkZV9wYXR0ZXJucywKIAkJCQkJCSAgICZkYXRhYmFzZV9l eGNsdWRlX25hbWVzKTsKIAotCS8qCi0JICogT3BlbiB0aGUgb3V0cHV0IGZpbGUgaWYgcmVx dWlyZWQsIG90aGVyd2lzZSB1c2Ugc3Rkb3V0Ci0JICovCi0JaWYgKGZpbGVuYW1lKQotCXsK LQkJT1BGID0gZm9wZW4oZmlsZW5hbWUsIFBHX0JJTkFSWV9XKTsKLQkJaWYgKCFPUEYpCi0J CQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gb3V0cHV0IGZpbGUgXCIlc1wiOiAlbSIsCi0J CQkJCSBmaWxlbmFtZSk7Ci0JfQotCWVsc2UKLQkJT1BGID0gc3Rkb3V0OwotCiAJLyoKIAkg KiBTZXQgdGhlIGNsaWVudCBlbmNvZGluZyBpZiByZXF1ZXN0ZWQuCiAJICovCkBAIC02MzQs NyArNjcyLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCX0KIAogCWlmICgh Z2xvYmFsc19vbmx5ICYmICFyb2xlc19vbmx5ICYmICF0YWJsZXNwYWNlc19vbmx5KQotCQlk dW1wRGF0YWJhc2VzKGNvbm4pOworCQlkdW1wRGF0YWJhc2VzKGNvbm4sIGFyY2hEdW1wRm9y bWF0KTsKIAogCVBRZmluaXNoKGNvbm4pOwogCkBAIC02NDcsNyArNjg1LDcgQEAgbWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKQogCQlmY2xvc2UoT1BGKTsKIAogCQkvKiBzeW5jIHRo ZSByZXN1bHRpbmcgZmlsZSwgZXJyb3JzIGFyZSBub3QgZmF0YWwgKi8KLQkJaWYgKGRvc3lu YykKKwkJaWYgKGRvc3luYyAmJiAoYXJjaER1bXBGb3JtYXQgPT0gYXJjaE51bGwpKQogCQkJ KHZvaWQpIGZzeW5jX2ZuYW1lKGZpbGVuYW1lLCBmYWxzZSk7CiAJfQogCkBAIC02NTgsMTIg KzY5NiwxNCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiBzdGF0aWMgdm9pZAog aGVscCh2b2lkKQogewotCXByaW50ZihfKCIlcyBleHRyYWN0cyBhIFBvc3RncmVTUUwgZGF0 YWJhc2UgY2x1c3RlciBpbnRvIGFuIFNRTCBzY3JpcHQgZmlsZS5cblxuIiksIHByb2duYW1l KTsKKwlwcmludGYoXygiJXMgZXh0cmFjdHMgYSBQb3N0Z3JlU1FMIGRhdGFiYXNlIGNsdXN0 ZXIgYmFzZWQgb24gc3BlY2lmaWVkIGR1bXAgZm9ybWF0LlxuXG4iKSwgcHJvZ25hbWUpOwog CXByaW50ZihfKCJVc2FnZTpcbiIpKTsKIAlwcmludGYoXygiICAlcyBbT1BUSU9OXS4uLlxu IiksIHByb2duYW1lKTsKIAogCXByaW50ZihfKCJcbkdlbmVyYWwgb3B0aW9uczpcbiIpKTsK IAlwcmludGYoXygiICAtZiwgLS1maWxlPUZJTEVOQU1FICAgICAgICAgIG91dHB1dCBmaWxl IG5hbWVcbiIpKTsKKwlwcmludGYoXygiICAtRiwgLS1mb3JtYXQ9Y3xkfHR8cCAgICAgICAg IG91dHB1dCBmaWxlIGZvcm1hdCAoY3VzdG9tLCBkaXJlY3RvcnksIHRhcixcbiIKKwkJCSAi ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWluIHRleHQgKGRlZmF1bHQpKVxu IikpOwogCXByaW50ZihfKCIgIC12LCAtLXZlcmJvc2UgICAgICAgICAgICAgICAgdmVyYm9z ZSBtb2RlXG4iKSk7CiAJcHJpbnRmKF8oIiAgLVYsIC0tdmVyc2lvbiAgICAgICAgICAgICAg ICBvdXRwdXQgdmVyc2lvbiBpbmZvcm1hdGlvbiwgdGhlbiBleGl0XG4iKSk7CiAJcHJpbnRm KF8oIiAgLS1sb2NrLXdhaXQtdGltZW91dD1USU1FT1VUICBmYWlsIGFmdGVyIHdhaXRpbmcg VElNRU9VVCBmb3IgYSB0YWJsZSBsb2NrXG4iKSk7CkBAIC05NjksOSArMTAwOSw2IEBAIGR1 bXBSb2xlcyhQR2Nvbm4gKmNvbm4pCiAJICogV2UgZG8gaXQgdGhpcyB3YXkgYmVjYXVzZSBj b25maWcgc2V0dGluZ3MgZm9yIHJvbGVzIGNvdWxkIG1lbnRpb24gdGhlCiAJICogbmFtZXMg b2Ygb3RoZXIgcm9sZXMuCiAJICovCi0JaWYgKFBRbnR1cGxlcyhyZXMpID4gMCkKLQkJZnBy aW50ZihPUEYsICJcbi0tXG4tLSBVc2VyIENvbmZpZ3VyYXRpb25zXG4tLVxuIik7Ci0KIAlm b3IgKGkgPSAwOyBpIDwgUFFudHVwbGVzKHJlcyk7IGkrKykKIAkJZHVtcFVzZXJDb25maWco Y29ubiwgUFFnZXR2YWx1ZShyZXMsIGksIGlfcm9sbmFtZSkpOwogCkBAIC0xNDg1LDYgKzE1 MjIsNyBAQCBkdW1wVXNlckNvbmZpZyhQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnVzZXJu YW1lKQogewogCVBRRXhwQnVmZmVyIGJ1ZiA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CiAJUEdy ZXN1bHQgICAqcmVzOworCXN0YXRpYyBib29sIGhlYWRlcl9kb25lID0gZmFsc2U7CiAKIAlw cmludGZQUUV4cEJ1ZmZlcihidWYsICJTRUxFQ1QgdW5uZXN0KHNldGNvbmZpZykgRlJPTSBw Z19kYl9yb2xlX3NldHRpbmcgIgogCQkJCQkgICJXSEVSRSBzZXRkYXRhYmFzZSA9IDAgQU5E IHNldHJvbGUgPSAiCkBAIC0xNDk2LDcgKzE1MzQsMTMgQEAgZHVtcFVzZXJDb25maWcoUEdj b25uICpjb25uLCBjb25zdCBjaGFyICp1c2VybmFtZSkKIAlyZXMgPSBleGVjdXRlUXVlcnko Y29ubiwgYnVmLT5kYXRhKTsKIAogCWlmIChQUW50dXBsZXMocmVzKSA+IDApCisJeworCQlp ZiAoIWhlYWRlcl9kb25lKQorCQkJZnByaW50ZihPUEYsICJcbi0tXG4tLSBVc2VyIENvbmZp Z3VyYXRpb25zXG4tLVxuIik7CisJCWhlYWRlcl9kb25lID0gdHJ1ZTsKKwogCQlmcHJpbnRm KE9QRiwgIlxuLS1cbi0tIFVzZXIgQ29uZmlnIFwiJXNcIlxuLS1cblxuIiwgdXNlcm5hbWUp OworCX0KIAogCWZvciAoaW50IGkgPSAwOyBpIDwgUFFudHVwbGVzKHJlcyk7IGkrKykKIAl7 CkBAIC0xNTcwLDEwICsxNjE0LDEzIEBAIGV4cGFuZF9kYm5hbWVfcGF0dGVybnMoUEdjb25u ICpjb25uLAogICogRHVtcCBjb250ZW50cyBvZiBkYXRhYmFzZXMuCiAgKi8KIHN0YXRpYyB2 b2lkCi1kdW1wRGF0YWJhc2VzKFBHY29ubiAqY29ubikKK2R1bXBEYXRhYmFzZXMoUEdjb25u ICpjb25uLCBBcmNoaXZlRm9ybWF0IGFyY2hEdW1wRm9ybWF0KQogewogCVBHcmVzdWx0ICAg KnJlczsKIAlpbnQJCQlpOworCWNoYXIJCWRiX3N1YmRpcltNQVhQR1BBVEhdOworCWNoYXIJ CWRiZmlsZXBhdGhbTUFYUEdQQVRIXTsKKwlGSUxFCSAgICptYXBfZmlsZSA9IE5VTEw7CiAK IAkvKgogCSAqIFNraXAgZGF0YWJhc2VzIG1hcmtlZCBub3QgZGF0YWxsb3djb25uLCBzaW5j ZSB3ZSdkIGJlIHVuYWJsZSB0byBjb25uZWN0CkBAIC0xNTg3LDE4ICsxNjM0LDQyIEBAIGR1 bXBEYXRhYmFzZXMoUEdjb25uICpjb25uKQogCSAqIGRvZXNuJ3QgaGF2ZSBzb21lIGZhaWx1 cmUgbW9kZSB3aXRoIC0tY2xlYW4uCiAJICovCiAJcmVzID0gZXhlY3V0ZVF1ZXJ5KGNvbm4s Ci0JCQkJCSAgICJTRUxFQ1QgZGF0bmFtZSAiCisJCQkJCSAgICJTRUxFQ1QgZGF0bmFtZSwg b2lkICIKIAkJCQkJICAgIkZST00gcGdfZGF0YWJhc2UgZCAiCiAJCQkJCSAgICJXSEVSRSBk YXRhbGxvd2Nvbm4gQU5EIGRhdGNvbm5saW1pdCAhPSAtMiAiCiAJCQkJCSAgICJPUkRFUiBC WSAoZGF0bmFtZSA8PiAndGVtcGxhdGUxJyksIGRhdG5hbWUiKTsKIAotCWlmIChQUW50dXBs ZXMocmVzKSA+IDApCisJaWYgKGFyY2hEdW1wRm9ybWF0ID09IGFyY2hOdWxsICYmIFBRbnR1 cGxlcyhyZXMpID4gMCkKIAkJZnByaW50ZihPUEYsICItLVxuLS0gRGF0YWJhc2VzXG4tLVxu XG4iKTsKIAorCS8qCisJICogSWYgZGlyZWN0b3J5L3Rhci9jdXN0b20gZm9ybWF0IGlzIHNw ZWNpZmllZCwgY3JlYXRlIGEgc3ViZGlyZWN0b3J5CisJICogdW5kZXIgdGhlIG1haW4gZGly ZWN0b3J5IGFuZCBlYWNoIGRhdGFiYXNlIGR1bXAgZmlsZSBvciBzdWJkaXJlY3RvcnkKKwkg KiB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhhdCBzdWJkaXJlY3RvcnkgYnkgcGdfZHVtcC4KKwkg Ki8KKwlpZiAoYXJjaER1bXBGb3JtYXQgIT0gYXJjaE51bGwpCisJeworCQljaGFyCQltYXBf ZmlsZV9wYXRoW01BWFBHUEFUSF07CisKKwkJc25wcmludGYoZGJfc3ViZGlyLCBNQVhQR1BB VEgsICIlcy9kYXRhYmFzZXMiLCBmaWxlbmFtZSk7CisKKwkJLyogQ3JlYXRlIGEgc3ViZGly ZWN0b3J5IHdpdGggJ2RhdGFiYXNlcycgbmFtZSB1bmRlciBtYWluIGRpcmVjdG9yeS4gKi8K KwkJaWYgKG1rZGlyKGRiX3N1YmRpciwgMDc1NSkgIT0gMCkKKwkJCXBnX2ZhdGFsKCJjb3Vs ZCBub3QgY3JlYXRlIHN1YmRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgZGJfc3ViZGlyKTsKKwor CQlzbnByaW50ZihtYXBfZmlsZV9wYXRoLCBNQVhQR1BBVEgsICIlcy9tYXAuZGF0IiwgZmls ZW5hbWUpOworCisJCS8qIENyZWF0ZSBhIG1hcCBmaWxlICh0byBzdG9yZSBkYm9pZCBhbmQg ZGJuYW1lKSAqLworCQltYXBfZmlsZSA9IGZvcGVuKG1hcF9maWxlX3BhdGgsIFBHX0JJTkFS WV9XKTsKKwkJaWYgKCFtYXBfZmlsZSkKKwkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBt YXAgZmlsZTogJXMiLCBzdHJlcnJvcihlcnJubykpOworCX0KKwogCWZvciAoaSA9IDA7IGkg PCBQUW50dXBsZXMocmVzKTsgaSsrKQogCXsKIAkJY2hhcgkgICAqZGJuYW1lID0gUFFnZXR2 YWx1ZShyZXMsIGksIDApOwotCQljb25zdCBjaGFyICpjcmVhdGVfb3B0czsKKwkJY2hhcgkg ICAqb2lkID0gUFFnZXR2YWx1ZShyZXMsIGksIDEpOworCQljb25zdCBjaGFyICpjcmVhdGVf b3B0cyA9ICIiOwogCQlpbnQJCQlyZXQ7CiAKIAkJLyogU2tpcCB0ZW1wbGF0ZTAsIGV2ZW4g aWYgaXQncyBub3QgbWFya2VkICFkYXRhbGxvd2Nvbm4uICovCkBAIC0xNjEyLDkgKzE2ODMs MjcgQEAgZHVtcERhdGFiYXNlcyhQR2Nvbm4gKmNvbm4pCiAJCQljb250aW51ZTsKIAkJfQog CisJCS8qCisJCSAqIElmIHRoaXMgaXMgbm90IGEgcGxhaW4gZm9ybWF0IGR1bXAsIHRoZW4g YXBwZW5kIGRib2lkIGFuZCBkYm5hbWUgdG8KKwkJICogdGhlIG1hcC5kYXQgZmlsZS4KKwkJ ICovCisJCWlmIChhcmNoRHVtcEZvcm1hdCAhPSBhcmNoTnVsbCkKKwkJeworCQkJaWYgKGFy Y2hEdW1wRm9ybWF0ID09IGFyY2hDdXN0b20pCisJCQkJc25wcmludGYoZGJmaWxlcGF0aCwg TUFYUEdQQVRILCAiXCIlc1wiL1wiJXNcIi5kbXAiLCBkYl9zdWJkaXIsIG9pZCk7CisJCQll bHNlIGlmIChhcmNoRHVtcEZvcm1hdCA9PSBhcmNoVGFyKQorCQkJCXNucHJpbnRmKGRiZmls ZXBhdGgsIE1BWFBHUEFUSCwgIlwiJXNcIi9cIiVzXCIudGFyIiwgZGJfc3ViZGlyLCBvaWQp OworCQkJZWxzZQorCQkJCXNucHJpbnRmKGRiZmlsZXBhdGgsIE1BWFBHUEFUSCwgIlwiJXNc Ii9cIiVzXCIiLCBkYl9zdWJkaXIsIG9pZCk7CisKKwkJCS8qIFB1dCBvbmUgbGluZSBlbnRy eSBmb3IgZGJvaWQgYW5kIGRibmFtZSBpbiBtYXAgZmlsZS4gKi8KKwkJCWZwcmludGYobWFw X2ZpbGUsICIlcyAlc1xuIiwgb2lkLCBkYm5hbWUpOworCQl9CisKIAkJcGdfbG9nX2luZm8o ImR1bXBpbmcgZGF0YWJhc2UgXCIlc1wiIiwgZGJuYW1lKTsKIAotCQlmcHJpbnRmKE9QRiwg Ii0tXG4tLSBEYXRhYmFzZSBcIiVzXCIgZHVtcFxuLS1cblxuIiwgZGJuYW1lKTsKKwkJaWYg KGFyY2hEdW1wRm9ybWF0ID09IGFyY2hOdWxsKQorCQkJIGZwcmludGYoT1BGLCAiLS1cbi0t IERhdGFiYXNlIFwiJXNcIiBkdW1wXG4tLVxuXG4iLCBkYm5hbWUpOwogCiAJCS8qCiAJCSAq IFdlIGFzc3VtZSB0aGF0ICJ0ZW1wbGF0ZTEiIGFuZCAicG9zdGdyZXMiIGFscmVhZHkgZXhp c3QgaW4gdGhlCkBAIC0xNjI4LDEyICsxNzE3LDkgQEAgZHVtcERhdGFiYXNlcyhQR2Nvbm4g KmNvbm4pCiAJCXsKIAkJCWlmIChvdXRwdXRfY2xlYW4pCiAJCQkJY3JlYXRlX29wdHMgPSAi LS1jbGVhbiAtLWNyZWF0ZSI7Ci0JCQllbHNlCi0JCQl7Ci0JCQkJY3JlYXRlX29wdHMgPSAi IjsKLQkJCQkvKiBTaW5jZSBwZ19kdW1wIHdvbid0IGVtaXQgYSBcY29ubmVjdCBjb21tYW5k LCB3ZSBtdXN0ICovCisJCQkvKiBTaW5jZSBwZ19kdW1wIHdvbid0IGVtaXQgYSBcY29ubmVj dCBjb21tYW5kLCB3ZSBtdXN0ICovCisJCQllbHNlIGlmIChhcmNoRHVtcEZvcm1hdCA9PSBh cmNoTnVsbCkKIAkJCQlmcHJpbnRmKE9QRiwgIlxcY29ubmVjdCAlc1xuXG4iLCBkYm5hbWUp OwotCQkJfQogCQl9CiAJCWVsc2UKIAkJCWNyZWF0ZV9vcHRzID0gIi0tY3JlYXRlIjsKQEAg LTE2NDEsMTkgKzE3MjcsMzAgQEAgZHVtcERhdGFiYXNlcyhQR2Nvbm4gKmNvbm4pCiAJCWlm IChmaWxlbmFtZSkKIAkJCWZjbG9zZShPUEYpOwogCi0JCXJldCA9IHJ1blBnRHVtcChkYm5h bWUsIGNyZWF0ZV9vcHRzKTsKKwkJcmV0ID0gcnVuUGdEdW1wKGRibmFtZSwgY3JlYXRlX29w dHMsIGRiZmlsZXBhdGgsIGFyY2hEdW1wRm9ybWF0KTsKIAkJaWYgKHJldCAhPSAwKQogCQkJ cGdfZmF0YWwoInBnX2R1bXAgZmFpbGVkIG9uIGRhdGFiYXNlIFwiJXNcIiwgZXhpdGluZyIs IGRibmFtZSk7CiAKIAkJaWYgKGZpbGVuYW1lKQogCQl7Ci0JCQlPUEYgPSBmb3BlbihmaWxl bmFtZSwgUEdfQklOQVJZX0EpOworCQkJY2hhcgkJZ2xvYmFsX3BhdGhbTUFYUEdQQVRIXTsK KworCQkJaWYgKGFyY2hEdW1wRm9ybWF0ICE9IGFyY2hOdWxsKQorCQkJCXNucHJpbnRmKGds b2JhbF9wYXRoLCBNQVhQR1BBVEgsICIlcy9nbG9iYWwuZGF0IiwgZmlsZW5hbWUpOworCQkJ ZWxzZQorCQkJCXNucHJpbnRmKGdsb2JhbF9wYXRoLCBNQVhQR1BBVEgsICIlcyIsIGZpbGVu YW1lKTsKKworCQkJT1BGID0gZm9wZW4oZ2xvYmFsX3BhdGgsIFBHX0JJTkFSWV9BKTsKIAkJ CWlmICghT1BGKQogCQkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgcmUtb3BlbiB0aGUgb3V0cHV0 IGZpbGUgXCIlc1wiOiAlbSIsCi0JCQkJCQkgZmlsZW5hbWUpOworCQkJCQkJIGdsb2JhbF9w YXRoKTsKIAkJfQogCX0KIAorCS8qIENsb3NlIG1hcCBmaWxlICovCisJaWYgKGFyY2hEdW1w Rm9ybWF0ICE9IGFyY2hOdWxsKQorCQlmY2xvc2UobWFwX2ZpbGUpOworCiAJUFFjbGVhcihy ZXMpOwogfQogCkBAIC0xNjYzLDcgKzE3NjAsOCBAQCBkdW1wRGF0YWJhc2VzKFBHY29ubiAq Y29ubikKICAqIFJ1biBwZ19kdW1wIG9uIGRibmFtZSwgd2l0aCBzcGVjaWZpZWQgb3B0aW9u cy4KICAqLwogc3RhdGljIGludAotcnVuUGdEdW1wKGNvbnN0IGNoYXIgKmRibmFtZSwgY29u c3QgY2hhciAqY3JlYXRlX29wdHMpCitydW5QZ0R1bXAoY29uc3QgY2hhciAqZGJuYW1lLCBj b25zdCBjaGFyICpjcmVhdGVfb3B0cywgY2hhciAqZGJmaWxlLAorCQkgIEFyY2hpdmVGb3Jt YXQgYXJjaER1bXBGb3JtYXQpCiB7CiAJUFFFeHBCdWZmZXJEYXRhIGNvbm5zdHJidWY7CiAJ UFFFeHBCdWZmZXJEYXRhIGNtZDsKQEAgLTE2NzIsMTcgKzE3NzAsMzYgQEAgcnVuUGdEdW1w KGNvbnN0IGNoYXIgKmRibmFtZSwgY29uc3QgY2hhciAqY3JlYXRlX29wdHMpCiAJaW5pdFBR RXhwQnVmZmVyKCZjb25uc3RyYnVmKTsKIAlpbml0UFFFeHBCdWZmZXIoJmNtZCk7CiAKLQlw cmludGZQUUV4cEJ1ZmZlcigmY21kLCAiXCIlc1wiICVzICVzIiwgcGdfZHVtcF9iaW4sCi0J CQkJCSAgcGdkdW1wb3B0cy0+ZGF0YSwgY3JlYXRlX29wdHMpOwotCiAJLyoKLQkgKiBJZiB3 ZSBoYXZlIGEgZmlsZW5hbWUsIHVzZSB0aGUgdW5kb2N1bWVudGVkIHBsYWluLWFwcGVuZCBw Z19kdW1wCi0JICogZm9ybWF0LgorCSAqIElmIHRoaXMgaXMgbm90IGEgcGxhaW4gZm9ybWF0 IGR1bXAsIHRoZW4gYXBwZW5kIGZpbGUgbmFtZSBhbmQgZHVtcAorCSAqIGZvcm1hdCB0byB0 aGUgcGdfZHVtcCBjb21tYW5kIHRvIGdldCBhcmNoaXZlIGR1bXAuCiAJICovCi0JaWYgKGZp bGVuYW1lKQotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY21kLCAiIC1GYSAiKTsKKwlpZiAo YXJjaER1bXBGb3JtYXQgIT0gYXJjaE51bGwpCisJeworCQlwcmludGZQUUV4cEJ1ZmZlcigm Y21kLCAiXCIlc1wiIC1mICVzICVzIiwgcGdfZHVtcF9iaW4sCisJCQkJCQkgIGRiZmlsZSwg Y3JlYXRlX29wdHMpOworCisJCWlmIChhcmNoRHVtcEZvcm1hdCA9PSBhcmNoRGlyZWN0b3J5 KQorCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNtZCwgIiAgLS1mb3JtYXQ9ZGlyZWN0b3J5 ICIpOworCQllbHNlIGlmIChhcmNoRHVtcEZvcm1hdCA9PSBhcmNoQ3VzdG9tKQorCQkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIoJmNtZCwgIiAgLS1mb3JtYXQ9Y3VzdG9tICIpOworCQllbHNl IGlmIChhcmNoRHVtcEZvcm1hdCA9PSBhcmNoVGFyKQorCQkJYXBwZW5kUFFFeHBCdWZmZXJT dHIoJmNtZCwgIiAgLS1mb3JtYXQ9dGFyICIpOworCX0KIAllbHNlCi0JCWFwcGVuZFBRRXhw QnVmZmVyU3RyKCZjbWQsICIgLUZwICIpOworCXsKKwkJcHJpbnRmUFFFeHBCdWZmZXIoJmNt ZCwgIlwiJXNcIiAlcyAlcyIsIHBnX2R1bXBfYmluLAorCQkJCQkJICBwZ2R1bXBvcHRzLT5k YXRhLCBjcmVhdGVfb3B0cyk7CisKKwkJLyoKKwkJICogSWYgd2UgaGF2ZSBhIGZpbGVuYW1l LCB1c2UgdGhlIHVuZG9jdW1lbnRlZCBwbGFpbi1hcHBlbmQgcGdfZHVtcAorCQkgKiBmb3Jt YXQuCisJCSAqLworCQlpZiAoZmlsZW5hbWUpCisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigm Y21kLCAiIC1GYSAiKTsKKwkJZWxzZQorCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNtZCwg IiAtRnAgIik7CisJfQogCiAJLyoKIAkgKiBBcHBlbmQgdGhlIGRhdGFiYXNlIG5hbWUgdG8g dGhlIGFscmVhZHktY29uc3RydWN0ZWQgc3RlbSBvZiBjb25uZWN0aW9uCkBAIC0xODI3LDMg KzE5NDQsOTEgQEAgcmVhZF9kdW1wYWxsX2ZpbHRlcnMoY29uc3QgY2hhciAqZmlsZW5hbWUs IFNpbXBsZVN0cmluZ0xpc3QgKnBhdHRlcm4pCiAKIAlmaWx0ZXJfZnJlZSgmZnN0YXRlKTsK IH0KKworLyoKKyAqIGNyZWF0ZV9vcl9vcGVuX2RpcgorICoKKyAqIFRoaXMgd2lsbCBjcmVh dGUgYSBuZXcgZGlyZWN0b3J5IHdpdGggZ2l2ZW4gbmFtZS4gIElmIHRoZXJlIGlzIGFscmVh ZHkgc2FtZQorICogZW1wdHkgZGlyZWN0b3J5IGV4aXN0LCB0aGVuIHVzZSBpdC4KKyAqLwor c3RhdGljIHZvaWQKK2NyZWF0ZV9vcl9vcGVuX2Rpcihjb25zdCBjaGFyICpkaXJuYW1lKQor eworCXN0cnVjdCBzdGF0IHN0OworCWJvb2wJCWlzX2VtcHR5ID0gZmFsc2U7CisKKwkvKiB3 ZSBhY2NlcHQgYW4gZW1wdHkgZXhpc3RpbmcgZGlyZWN0b3J5ICovCisJaWYgKHN0YXQoZGly bmFtZSwgJnN0KSA9PSAwICYmIFNfSVNESVIoc3Quc3RfbW9kZSkpCisJeworCQlESVIJCSAg ICpkaXIgPSBvcGVuZGlyKGRpcm5hbWUpOworCisJCWlmIChkaXIpCisJCXsKKwkJCXN0cnVj dCBkaXJlbnQgKmQ7CisKKwkJCWlzX2VtcHR5ID0gdHJ1ZTsKKworCQkJd2hpbGUgKGVycm5v ID0gMCwgKGQgPSByZWFkZGlyKGRpcikpKQorCQkJeworCQkJCWlmIChzdHJjbXAoZC0+ZF9u YW1lLCAiLiIpICE9IDAgJiYgc3RyY21wKGQtPmRfbmFtZSwgIi4uIikgIT0gMCkKKwkJCQl7 CisJCQkJCWlzX2VtcHR5ID0gZmFsc2U7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwor CQkJaWYgKGVycm5vKQorCQkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVhZCBkaXJlY3Rvcnkg XCIlc1wiOiAlbSIsCisJCQkJCQkgZGlybmFtZSk7CisKKwkJCWlmIChjbG9zZWRpcihkaXIp KQorCQkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgY2xvc2UgZGlyZWN0b3J5IFwiJXNcIjogJW0i LAorCQkJCQkJIGRpcm5hbWUpOworCQl9CisKKwkJaWYgKCFpc19lbXB0eSkKKwkJeworCQkJ cGdfbG9nX2Vycm9yKCJkaXJlY3RvcnkgXCIlc1wiIGV4aXN0cyBidXQgaXMgbm90IGVtcHR5 IiwgZGlybmFtZSk7CisJCQlwZ19sb2dfZXJyb3JfaGludCgiSWYgeW91IHdhbnQgdG8gZHVt cCBkYXRhIG9uIHRoaXMgZGlyZWN0b3J5LCBlaXRoZXIgcmVtb3ZlIG9yIGVtcHR5ICIKKwkJ CQkJCQkgICJ0aGlzIGRpcmVjdG9yeSBcIiVzXCIgb3IgcnVuICVzICIKKwkJCQkJCQkgICJ3 aXRoIGFuIGFyZ3VtZW50IG90aGVyIHRoYW4gXCIlc1wiLiIsCisJCQkJCQkJICBkaXJuYW1l LCBwcm9nbmFtZSwgZGlybmFtZSk7CisJCQlleGl0X25pY2VseSgxKTsKKwkJfQorCX0KKwll bHNlIGlmIChta2RpcihkaXJuYW1lLCAwNzAwKSA8IDApCisJCXBnX2ZhdGFsKCJjb3VsZCBu b3QgY3JlYXRlIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgZGlybmFtZSk7Cit9CisKKy8qCisg KiBwYXJzZUR1bXBGb3JtYXQKKyAqCisgKiBUaGlzIHdpbGwgdmFsaWRhdGUgZHVtcCBmb3Jt YXRzLgorICovCitzdGF0aWMgQXJjaGl2ZUZvcm1hdAorcGFyc2VEdW1wRm9ybWF0KGNvbnN0 IGNoYXIgKmZvcm1hdCkKK3sKKwlBcmNoaXZlRm9ybWF0IGFyY2hEdW1wRm9ybWF0OworCisJ aWYgKHBnX3N0cmNhc2VjbXAoZm9ybWF0LCAiYyIpID09IDApCisJCWFyY2hEdW1wRm9ybWF0 ID0gYXJjaEN1c3RvbTsKKwllbHNlIGlmIChwZ19zdHJjYXNlY21wKGZvcm1hdCwgImN1c3Rv bSIpID09IDApCisJCWFyY2hEdW1wRm9ybWF0ID0gYXJjaEN1c3RvbTsKKwllbHNlIGlmIChw Z19zdHJjYXNlY21wKGZvcm1hdCwgImQiKSA9PSAwKQorCQlhcmNoRHVtcEZvcm1hdCA9IGFy Y2hEaXJlY3Rvcnk7CisJZWxzZSBpZiAocGdfc3RyY2FzZWNtcChmb3JtYXQsICJkaXJlY3Rv cnkiKSA9PSAwKQorCQlhcmNoRHVtcEZvcm1hdCA9IGFyY2hEaXJlY3Rvcnk7CisJZWxzZSBp ZiAocGdfc3RyY2FzZWNtcChmb3JtYXQsICJwIikgPT0gMCkKKwkJYXJjaER1bXBGb3JtYXQg PSBhcmNoTnVsbDsKKwllbHNlIGlmIChwZ19zdHJjYXNlY21wKGZvcm1hdCwgInBsYWluIikg PT0gMCkKKwkJYXJjaER1bXBGb3JtYXQgPSBhcmNoTnVsbDsKKwllbHNlIGlmIChwZ19zdHJj YXNlY21wKGZvcm1hdCwgInQiKSA9PSAwKQorCQlhcmNoRHVtcEZvcm1hdCA9IGFyY2hUYXI7 CisJZWxzZSBpZiAocGdfc3RyY2FzZWNtcChmb3JtYXQsICJ0YXIiKSA9PSAwKQorCQlhcmNo RHVtcEZvcm1hdCA9IGFyY2hUYXI7CisJZWxzZQorCQlwZ19mYXRhbCgidW5yZWNvZ25pemVk IGFyY2hpdmUgZm9ybWF0IFwiJXNcIjsgcGxlYXNlIHNwZWNpZnkgXCJjXCIsIFwiZFwiLCBc InBcIiwgb3IgXCJ0XCIiLAorCQkJCSBmb3JtYXQpOworCisJcmV0dXJuIGFyY2hEdW1wRm9y bWF0OworfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX3Jlc3RvcmUuYyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19yZXN0b3JlLmMKaW5kZXggNDdmN2IwZGQzYTEuLjViYTBjNGI3 NjhmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfcmVzdG9yZS5jCisrKyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19yZXN0b3JlLmMKQEAgLTIsNyArMiw3IEBACiAgKgogICogcGdf cmVzdG9yZS5jCiAgKglwZ19yZXN0b3JlIGlzIGFuIHV0aWxpdHkgZXh0cmFjdGluZyBwb3N0 Z3JlcyBkYXRhYmFzZSBkZWZpbml0aW9ucwotICoJZnJvbSBhIGJhY2t1cCBhcmNoaXZlIGNy ZWF0ZWQgYnkgcGdfZHVtcCB1c2luZyB0aGUgYXJjaGl2ZXIKKyAqCWZyb20gYSBiYWNrdXAg YXJjaGl2ZSBjcmVhdGVkIGJ5IHBnX2R1bXAvcGdfZHVtcGFsbCB1c2luZyB0aGUgYXJjaGl2 ZXIKICAqCWludGVyZmFjZS4KICAqCiAgKglwZ19yZXN0b3JlIHdpbGwgcmVhZCB0aGUgYmFj a3VwIGFyY2hpdmUgYW5kCkBAIC00MSwxMSArNDEsMTUgQEAKICNpbmNsdWRlICJwb3N0Z3Jl c19mZS5oIgogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgog I2lmZGVmIEhBVkVfVEVSTUlPU19ICiAjaW5jbHVkZSA8dGVybWlvcy5oPgogI2VuZGlmCiAK KyNpbmNsdWRlICJjb21tb24vc3RyaW5nLmgiCisjaW5jbHVkZSAiY29ubmVjdGRiLmgiCiAj aW5jbHVkZSAiZmVfdXRpbHMvb3B0aW9uX3V0aWxzLmgiCisjaW5jbHVkZSAiZmVfdXRpbHMv c3RyaW5nX3V0aWxzLmgiCiAjaW5jbHVkZSAiZmlsdGVyLmgiCiAjaW5jbHVkZSAiZ2V0b3B0 X2xvbmcuaCIKICNpbmNsdWRlICJwYXJhbGxlbC5oIgpAQCAtNTMsMTggKzU3LDM2IEBACiAK IHN0YXRpYyB2b2lkIHVzYWdlKGNvbnN0IGNoYXIgKnByb2duYW1lKTsKIHN0YXRpYyB2b2lk IHJlYWRfcmVzdG9yZV9maWx0ZXJzKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBSZXN0b3JlT3B0 aW9ucyAqb3B0cyk7CitzdGF0aWMgYm9vbCBmaWxlX2V4aXN0c19pbl9kaXJlY3RvcnkoY29u c3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpmaWxlbmFtZSk7CitzdGF0aWMgaW50CXJlc3Rv cmVfb25lX2RhdGFiYXNlKGNvbnN0IGNoYXIgKmlucHV0RmlsZVNwZWMsIFJlc3RvcmVPcHRp b25zICpvcHRzLAorCQkJCQkJCSAgIGludCBudW1Xb3JrZXJzLCBib29sIGFwcGVuZF9kYXRh LCBpbnQgbnVtKTsKK3N0YXRpYyBpbnQJcmVhZF9vbmVfc3RhdGVtZW50KFN0cmluZ0luZm8g aW5CdWYsIEZJTEUgKnBmaWxlKTsKK3N0YXRpYyBpbnQJcmVzdG9yZV9hbGxfZGF0YWJhc2Vz KFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqZHVtcGRpcnBhdGgsCisJCQkJCQkJCVNpbXBs ZVN0cmluZ0xpc3QgZGJfZXhjbHVkZV9wYXR0ZXJucywgUmVzdG9yZU9wdGlvbnMgKm9wdHMs IGludCBudW1Xb3JrZXJzKTsKK3N0YXRpYyBpbnQJcHJvY2Vzc19nbG9iYWxfc3FsX2NvbW1h bmRzKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqZHVtcGRpcnBhdGgsCisJCQkJCQkJCQkJ Y29uc3QgY2hhciAqb3V0ZmlsZSk7CitzdGF0aWMgdm9pZCBjb3B5X29yX3ByaW50X2dsb2Jh bF9maWxlKGNvbnN0IGNoYXIgKm91dGZpbGUsIEZJTEUgKnBmaWxlKTsKK3N0YXRpYyBpbnQJ Z2V0X2RibmFtZXNfbGlzdF90b19yZXN0b3JlKFBHY29ubiAqY29ubiwKKwkJCQkJCQkJCQlT aW1wbGVPaWRTdHJpbmdMaXN0ICogZGJuYW1lX29pZF9saXN0LAorCQkJCQkJCQkJCVNpbXBs ZVN0cmluZ0xpc3QgZGJfZXhjbHVkZV9wYXR0ZXJucyk7CitzdGF0aWMgaW50CWdldF9kYm5h bWVfb2lkX2xpc3RfZnJvbV9tZmlsZShjb25zdCBjaGFyICpkdW1wZGlycGF0aCwKKwkJCQkJ CQkJCQkgICBTaW1wbGVPaWRTdHJpbmdMaXN0ICogZGJuYW1lX29pZF9saXN0KTsKK3N0YXRp YyBzaXplX3QgcXVvdGVfbGl0ZXJhbF9pbnRlcm5hbChjaGFyICpkc3QsIGNvbnN0IGNoYXIg KnNyYywgc2l6ZV90IGxlbik7CitzdGF0aWMgY2hhciAqcXVvdGVfbGl0ZXJhbF9jc3RyKGNv bnN0IGNoYXIgKnJhd3N0cik7CitzdGF0aWMgaW50CW9uX2V4aXRfaW5kZXggPSAwOwogCiBp bnQKIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogewogCVJlc3RvcmVPcHRpb25zICpv cHRzOwogCWludAkJCWM7Ci0JaW50CQkJZXhpdF9jb2RlOwogCWludAkJCW51bVdvcmtlcnMg PSAxOwotCUFyY2hpdmUgICAgKkFIOwogCWNoYXIJICAgKmlucHV0RmlsZVNwZWM7CiAJYm9v bAkJZGF0YV9vbmx5ID0gZmFsc2U7CiAJYm9vbAkJc2NoZW1hX29ubHkgPSBmYWxzZTsKKwlp bnQJCQluX2Vycm9ycyA9IDA7CisJYm9vbAkJZ2xvYmFsc19vbmx5ID0gZmFsc2U7CisJU2lt cGxlU3RyaW5nTGlzdCBkYl9leGNsdWRlX3BhdHRlcm5zID0ge05VTEwsIE5VTEx9OwogCXN0 YXRpYyBpbnQJZGlzYWJsZV90cmlnZ2VycyA9IDA7CiAJc3RhdGljIGludAllbmFibGVfcm93 X3NlY3VyaXR5ID0gMDsKIAlzdGF0aWMgaW50CWlmX2V4aXN0cyA9IDA7CkBAIC05MCw2ICsx MTIsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJeyJjbGVhbiIsIDAsIE5V TEwsICdjJ30sCiAJCXsiY3JlYXRlIiwgMCwgTlVMTCwgJ0MnfSwKIAkJeyJkYXRhLW9ubHki LCAwLCBOVUxMLCAnYSd9LAorCQl7Imdsb2JhbHMtb25seSIsIDAsIE5VTEwsICdnJ30sCiAJ CXsiZGJuYW1lIiwgMSwgTlVMTCwgJ2QnfSwKIAkJeyJleGl0LW9uLWVycm9yIiwgMCwgTlVM TCwgJ2UnfSwKIAkJeyJleGNsdWRlLXNjaGVtYSIsIDEsIE5VTEwsICdOJ30sCkBAIC0xNDQs NiArMTY3LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCXsid2l0aC1zdGF0 aXN0aWNzIiwgbm9fYXJndW1lbnQsICZ3aXRoX3N0YXRpc3RpY3MsIDF9LAogCQl7InN0YXRp c3RpY3Mtb25seSIsIG5vX2FyZ3VtZW50LCAmc3RhdGlzdGljc19vbmx5LCAxfSwKIAkJeyJm aWx0ZXIiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgNH0sCisJCXsiZXhjbHVkZS1kYXRh YmFzZSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCA2fSwKIAogCQl7TlVMTCwgMCwgTlVM TCwgMH0KIAl9OwpAQCAtMTcyLDcgKzE5Niw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogCQl9CiAJfQogCi0Jd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwg ImFjQ2Q6ZWY6RjpoOkk6ajpsTDpuOk46T3A6UDpSc1M6dDpUOlU6dndXeDEiLAorCXdoaWxl ICgoYyA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJhY0NkOmVmOkY6Z2g6STpqOmxMOm46 TjpPcDpQOlJzUzp0OlQ6VTp2d1d4MSIsCiAJCQkJCQkJY21kb3B0cywgTlVMTCkpICE9IC0x KQogCXsKIAkJc3dpdGNoIChjKQpAQCAtMTk5LDExICsyMjMsMTQgQEAgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCiAJCQkJaWYgKHN0cmxlbihvcHRhcmcpICE9IDApCiAJCQkJCW9w dHMtPmZvcm1hdE5hbWUgPSBwZ19zdHJkdXAob3B0YXJnKTsKIAkJCQlicmVhazsKKwkJCWNh c2UgJ2cnOgorCQkJCS8qIHJlc3RvcmUgb25seSBnbG9iYWwuZGF0IGZpbGUgZnJvbSBkaXJl Y3RvcnkgKi8KKwkJCQlnbG9iYWxzX29ubHkgPSB0cnVlOworCQkJCWJyZWFrOwogCQkJY2Fz ZSAnaCc6CiAJCQkJaWYgKHN0cmxlbihvcHRhcmcpICE9IDApCiAJCQkJCW9wdHMtPmNwYXJh bXMucGdob3N0ID0gcGdfc3RyZHVwKG9wdGFyZyk7CiAJCQkJYnJlYWs7Ci0KIAkJCWNhc2Ug J2onOgkJCS8qIG51bWJlciBvZiByZXN0b3JlIGpvYnMgKi8KIAkJCQlpZiAoIW9wdGlvbl9w YXJzZV9pbnQob3B0YXJnLCAiLWovLS1qb2JzIiwgMSwKIAkJCQkJCQkJCSAgUEdfTUFYX0pP QlMsCkBAIC0zMTgsNiArMzQ1LDkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJ CQkJCWV4aXQoMSk7CiAJCQkJb3B0cy0+ZXhpdF9vbl9lcnJvciA9IHRydWU7CiAJCQkJYnJl YWs7CisJCQljYXNlIDY6CQkJCS8qIGRhdGFiYXNlIHBhdHRlcm5zIHRvIHNraXAgKi8KKwkJ CQlzaW1wbGVfc3RyaW5nX2xpc3RfYXBwZW5kKCZkYl9leGNsdWRlX3BhdHRlcm5zLCBvcHRh cmcpOworCQkJCWJyZWFrOwogCiAJCQlkZWZhdWx0OgogCQkJCS8qIGdldG9wdF9sb25nIGFs cmVhZHkgZW1pdHRlZCBhIGNvbXBsYWludCAqLwpAQCAtMzQ1LDYgKzM3NSwxMyBAQCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikKIAlpZiAoIW9wdHMtPmNwYXJhbXMuZGJuYW1lICYm ICFvcHRzLT5maWxlbmFtZSAmJiAhb3B0cy0+dG9jU3VtbWFyeSkKIAkJcGdfZmF0YWwoIm9u ZSBvZiAtZC8tLWRibmFtZSBhbmQgLWYvLS1maWxlIG11c3QgYmUgc3BlY2lmaWVkIik7CiAK KwlpZiAoZGJfZXhjbHVkZV9wYXR0ZXJucy5oZWFkICE9IE5VTEwgJiYgZ2xvYmFsc19vbmx5 KQorCXsKKwkJcGdfbG9nX2Vycm9yKCJvcHRpb24gLS1leGNsdWRlLWRhdGFiYXNlIGNhbm5v dCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggLWcvLS1nbG9iYWxzLW9ubHkiKTsKKwkJcGdfbG9n X2Vycm9yX2hpbnQoIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLiIs IHByb2duYW1lKTsKKwkJZXhpdF9uaWNlbHkoMSk7CisJfQorCiAJLyogU2hvdWxkIGdldCBh dCBtb3N0IG9uZSBvZiAtZCBhbmQgLWYsIGVsc2UgdXNlciBpcyBjb25mdXNlZCAqLwogCWlm IChvcHRzLT5jcGFyYW1zLmRibmFtZSkKIAl7CkBAIC00NTIsNiArNDg5LDExNSBAQCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQkJIG9wdHMtPmZvcm1hdE5hbWUpOwogCX0K IAorCS8qCisJICogSWYgdG9jLmRhdCBmaWxlIGRvZXMgbm90IHByZXNlbnQgaW4gY3VycmVu dCBwYXRoLCB0aGVuIGNoZWNrIGZvcgorCSAqIGdsb2JhbC5kYXQuICBJZiBnbG9iYWwuZGF0 IGZpbGUgaXMgcHJlc2VudCwgdGhlbiByZXN0b3JlIGFsbCB0aGUKKwkgKiBkYXRhYmFzZXMg ZnJvbSBtYXAuZGF0KGlmIGV4aXN0KSBmaWxlIGxpc3QgYW5kIHNraXAgcmVzdG9yaW5nIGZv cgorCSAqIC0tZXhjbHVkZS1kYXRhYmFzZSBwYXR0ZXJucy4KKwkgKi8KKwlpZiAoaW5wdXRG aWxlU3BlYyAhPSBOVUxMICYmICFmaWxlX2V4aXN0c19pbl9kaXJlY3RvcnkoaW5wdXRGaWxl U3BlYywgInRvYy5kYXQiKSAmJgorCQlmaWxlX2V4aXN0c19pbl9kaXJlY3RvcnkoaW5wdXRG aWxlU3BlYywgImdsb2JhbC5kYXQiKSkKKwl7CisJCVBHY29ubgkgICAqY29ubiA9IE5VTEw7 CS8qIENvbm5lY3Rpb24gdG8gcmVzdG9yZSBnbG9iYWwgc3FsCisJCQkJCQkJCQkgKiBjb21t YW5kcy4gKi8KKworCQkvKgorCQkgKiBVc2VyIGlzIHN1Z2dlc3RlZCB0byB1c2Ugc2luZ2xl IGRhdGFiYXNlIGR1bXAgZm9yIC0tbGlzdCBvcHRpb24uCisJCSAqLworCQlpZiAob3B0cy0+ dG9jU3VtbWFyeSkKKwkJCXBnX2ZhdGFsKCJvcHRpb24gLWwvLS1saXN0IGNhbm5vdCBiZSB1 c2VkIHdoZW4gcmVzdG9yaW5nIG11bHRpcGxlIGRhdGFiYXNlcyBieSBhcmNoaXZlIG9mIHBn X2R1bXBhbGwiKTsKKworCQkvKgorCQkgKiBUbyByZXN0b3JlIG11bHRpcGxlIGRhdGFiYXNl cywgLUMgKGNyZWF0ZSBkYXRhYmFzZSkgb3B0aW9uIHNob3VsZAorCQkgKiBiZSBzcGVjaWZp ZWQuIEV2ZW4gdGhlcmUgaXMgc2luZ2xlIGRhdGFiYXNlIGluIGR1bXAsIHJlcG9ydCBlcnJv cgorCQkgKiBiZWNhdXNlIGl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRoYXQgZGF0YWJhc2UgaGFz bid0IGNyZWF0ZWQgc28gYmV0dGVyCisJCSAqIHdlIHJlcG9ydCBlcnJvci4KKwkJICovCisJ CWlmICghZ2xvYmFsc19vbmx5ICYmIG9wdHMtPmNyZWF0ZURCICE9IDEpCisJCXsKKwkJCXBn X2xvZ19lcnJvcigiLUMvLS1jcmVhdGUgb3B0aW9uIHNob3VsZCBiZSBzcGVjaWZpZWQgd2hl biByZXN0b3JpbmcgbXVsdGlwbGUgZGF0YWJhc2VzIGJ5IGFyY2hpdmUgb2YgcGdfZHVtcGFs bCIpOworCQkJcGdfbG9nX2Vycm9yX2hpbnQoIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3Jl IGluZm9ybWF0aW9uLiIsIHByb2duYW1lKTsKKwkJCXBnX2xvZ19lcnJvcl9oaW50KCJJZiBk YiBpcyBhbHJlYWR5IGNyZWF0ZWQgYW5kIGR1bXAgaGFzIHNpbmdsZSBkYiBkdW1wLCB0aGVu IHVzZSBwYXJ0aWN1bGFyIGR1bXAgZmlsZS4iKTsKKwkJCWV4aXRfbmljZWx5KDEpOworCQl9 CisKKwkJLyoKKwkJICogQ29ubmVjdCB0byBkYXRhYmFzZSB0byBleGVjdXRlIGdsb2JhbCBz cWwgY29tbWFuZHMgZnJvbSBnbG9iYWwuZGF0CisJCSAqIGZpbGUuCisJCSAqLworCQlpZiAo b3B0cy0+Y3BhcmFtcy5kYm5hbWUpCisJCXsKKwkJCWNvbm4gPSBDb25uZWN0RGF0YWJhc2Uo b3B0cy0+Y3BhcmFtcy5kYm5hbWUsIE5VTEwsIG9wdHMtPmNwYXJhbXMucGdob3N0LAorCQkJ CQkJCQkgICBvcHRzLT5jcGFyYW1zLnBncG9ydCwgb3B0cy0+Y3BhcmFtcy51c2VybmFtZSwg VFJJX0RFRkFVTFQsCisJCQkJCQkJCSAgIGZhbHNlLCBwcm9nbmFtZSwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTCk7CisKKworCQkJaWYgKCFjb25uKQorCQkJCXBnX2ZhdGFsKCJjb3VsZCBu b3QgY29ubmVjdCB0byBkYXRhYmFzZSBcIiVzXCIiLCBvcHRzLT5jcGFyYW1zLmRibmFtZSk7 CisJCX0KKworCQkvKiBJZiBnbG9iYWxzLW9ubHksIHRoZW4gcmV0dXJuIGZyb20gaGVyZS4g Ki8KKwkJaWYgKGdsb2JhbHNfb25seSkKKwkJeworCQkJLyoKKwkJCSAqIE9wZW4gZ2xvYmFs LmRhdCBmaWxlIGFuZCBleGVjdXRlL2FwcGVuZCBhbGwgdGhlIGdsb2JhbCBzcWwKKwkJCSAq IGNvbW1hbmRzLgorCQkJICovCisJCQluX2Vycm9ycyA9IHByb2Nlc3NfZ2xvYmFsX3NxbF9j b21tYW5kcyhjb25uLCBpbnB1dEZpbGVTcGVjLAorCQkJCQkJCQkJCQkJICAgb3B0cy0+Zmls ZW5hbWUpOworCisJCQlpZiAoY29ubikKKwkJCQlQUWZpbmlzaChjb25uKTsKKworCQkJcGdf bG9nX2luZm8oImRhdGFiYXNlcyByZXN0b3JpbmcgaXMgc2tpcHBlZCBhcyAtZy8tLWdsb2Jh bHMtb25seSBvcHRpb24gaXMgc3BlY2lmaWVkIik7CisJCX0KKwkJZWxzZQorCQl7CisJCQkv KiBOb3cgcmVzdG9yZSBhbGwgdGhlIGRhdGFiYXNlcyBmcm9tIG1hcC5kYXQgZmlsZS4gKi8K KwkJCW5fZXJyb3JzID0gcmVzdG9yZV9hbGxfZGF0YWJhc2VzKGNvbm4sIGlucHV0RmlsZVNw ZWMsIGRiX2V4Y2x1ZGVfcGF0dGVybnMsCisJCQkJCQkJCQkJICAgb3B0cywgbnVtV29ya2Vy cyk7CisJCX0KKworCQkvKiBGcmVlIGRiIHBhdHRlcm4gbGlzdC4gKi8KKwkJc2ltcGxlX3N0 cmluZ19saXN0X2Rlc3Ryb3koJmRiX2V4Y2x1ZGVfcGF0dGVybnMpOworCX0KKwllbHNlCQkJ CQkJLyogcHJvY2VzcyBpZiBnbG9iYWwuZGF0IGZpbGUgZG9lcyBub3QgZXhpc3QuICovCisJ eworCQlpZiAoZGJfZXhjbHVkZV9wYXR0ZXJucy5oZWFkICE9IE5VTEwpCisJCQlwZ19mYXRh bCgib3B0aW9uIC0tZXhjbHVkZS1kYXRhYmFzZSBjYW4gYmUgdXNlZCBvbmx5IHdoZW4gcmVz dG9yaW5nIG11bHRpcGxlIGRhdGFiYXNlcyBieSBhcmNoaXZlIG9mIHBnX2R1bXBhbGwiKTsK KworCQlpZiAoZ2xvYmFsc19vbmx5KQorCQkJcGdfZmF0YWwoIm9wdGlvbiAtZy8tLWdsb2Jh bHMtb25seSBjYW4gYmUgdXNlZCBvbmx5IHdoZW4gcmVzdG9yaW5nIG11bHRpcGxlIGRhdGFi YXNlcyBieSBhcmNoaXZlIG9mIHBnX2R1bXBhbGwiKTsKKworCQluX2Vycm9ycyA9IHJlc3Rv cmVfb25lX2RhdGFiYXNlKGlucHV0RmlsZVNwZWMsIG9wdHMsIG51bVdvcmtlcnMsIGZhbHNl LCAwKTsKKwl9CisKKwlvbl9leGl0X2luZGV4ID0gMDsJCQkvKiBSZXNldCBpbmRleC4gKi8K KworCS8qIERvbmUsIHByaW50IGEgc3VtbWFyeSBvZiBpZ25vcmVkIGVycm9ycyBkdXJpbmcg cmVzdG9yZS4gKi8KKwlpZiAobl9lcnJvcnMpCisJeworCQlwZ19sb2dfd2FybmluZygiZXJy b3JzIGlnbm9yZWQgb24gcmVzdG9yZTogJWQiLCBuX2Vycm9ycyk7CisJCXJldHVybiAxOwor CX0KKworCXJldHVybiAwOworfQorCisvKgorICogcmVzdG9yZV9vbmVfZGF0YWJhc2UKKyAq CisgKiBUaGlzIHdpbGwgcmVzdG9yZSBvbmUgZGF0YWJhc2UgdXNpbmcgdG9jLmRhdCBmaWxl LgorICoKKyAqIHJldHVybnMgdGhlIG51bWJlciBvZiBlcnJvcnMgd2hpbGUgZG9pbmcgcmVz dG9yZS4KKyAqLworc3RhdGljIGludAorcmVzdG9yZV9vbmVfZGF0YWJhc2UoY29uc3QgY2hh ciAqaW5wdXRGaWxlU3BlYywgUmVzdG9yZU9wdGlvbnMgKm9wdHMsCisJCQkJICAgaW50IG51 bVdvcmtlcnMsIGJvb2wgYXBwZW5kX2RhdGEsIGludCBudW0pCit7CisJQXJjaGl2ZSAgICAq QUg7CisJaW50CQkJbl9lcnJvcnM7CisKIAlBSCA9IE9wZW5BcmNoaXZlKGlucHV0RmlsZVNw ZWMsIG9wdHMtPmZvcm1hdCk7CiAKIAlTZXRBcmNoaXZlT3B0aW9ucyhBSCwgTlVMTCwgb3B0 cyk7CkBAIC00NTksOSArNjA1LDE1IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQog CS8qCiAJICogV2UgZG9uJ3QgaGF2ZSBhIGNvbm5lY3Rpb24geWV0IGJ1dCB0aGF0IGRvZXNu J3QgbWF0dGVyLiBUaGUgY29ubmVjdGlvbgogCSAqIGlzIGluaXRpYWxpemVkIHRvIE5VTEwg YW5kIGlmIHdlIHRlcm1pbmF0ZSB0aHJvdWdoIGV4aXRfbmljZWx5KCkgd2hpbGUKLQkgKiBp dCdzIHN0aWxsIE5VTEwsIHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHdpbGwganVzdCBiZSBhIG5v LW9wLgorCSAqIGl0J3Mgc3RpbGwgTlVMTCwgdGhlIGNsZWFudXAgZnVuY3Rpb24gd2lsbCBq dXN0IGJlIGEgbm8tb3AuIElmIHdlIGFyZQorCSAqIHJlc3RvcmluZyBtdWx0aXBsZSBkYXRh YmFzZXMsIHRoZW4gc2F2ZSBpbmRleCBvZiBleGl0X25pY2VseSBzbyB0aGF0IHdlCisJICog Y2FuIHVzZSBzYW1lIHNsb3QgZm9yIGFsbCB0aGUgZGF0YWJhc2VzIGFzIHdlIGFscmVhZHkg Y2xvc2VkIHRoZQorCSAqIHByZXZpb3VzIGFyY2hpdmUgYnkgQ2xvc2VBcmNoaXZlLgogCSAq LwotCW9uX2V4aXRfY2xvc2VfYXJjaGl2ZShBSCk7CisJaWYgKCFhcHBlbmRfZGF0YSB8fCBu dW0gPT0gMCkKKwkJb25fZXhpdF9pbmRleCA9IG9uX2V4aXRfY2xvc2VfYXJjaGl2ZShBSCk7 CisJZWxzZQorCQlyZXBsYWNlX29uX2V4aXRfY2xvc2VfYXJjaGl2ZShBSCwgb25fZXhpdF9p bmRleCk7CiAKIAkvKiBMZXQgdGhlIGFyY2hpdmVyIGtub3cgaG93IG5vaXN5IHRvIGJlICov CiAJQUgtPnZlcmJvc2UgPSBvcHRzLT52ZXJib3NlOwpAQCAtNDgxLDI1ICs2MzMsMjIgQEAg bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJZWxzZQogCXsKIAkJUHJvY2Vzc0FyY2hp dmVSZXN0b3JlT3B0aW9ucyhBSCk7Ci0JCVJlc3RvcmVBcmNoaXZlKEFIKTsKKwkJUmVzdG9y ZUFyY2hpdmUoQUgsIGFwcGVuZF9kYXRhKTsKIAl9CiAKLQkvKiBkb25lLCBwcmludCBhIHN1 bW1hcnkgb2YgaWdub3JlZCBlcnJvcnMgKi8KLQlpZiAoQUgtPm5fZXJyb3JzKQotCQlwZ19s b2dfd2FybmluZygiZXJyb3JzIGlnbm9yZWQgb24gcmVzdG9yZTogJWQiLCBBSC0+bl9lcnJv cnMpOworCW5fZXJyb3JzID0gQUgtPm5fZXJyb3JzOwogCiAJLyogQUggbWF5IGJlIGZyZWVk IGluIENsb3NlQXJjaGl2ZT8gKi8KLQlleGl0X2NvZGUgPSBBSC0+bl9lcnJvcnMgPyAxIDog MDsKLQogCUNsb3NlQXJjaGl2ZShBSCk7CiAKLQlyZXR1cm4gZXhpdF9jb2RlOworCXJldHVy biBuX2Vycm9yczsKIH0KIAogc3RhdGljIHZvaWQKIHVzYWdlKGNvbnN0IGNoYXIgKnByb2du YW1lKQogewotCXByaW50ZihfKCIlcyByZXN0b3JlcyBhIFBvc3RncmVTUUwgZGF0YWJhc2Ug ZnJvbSBhbiBhcmNoaXZlIGNyZWF0ZWQgYnkgcGdfZHVtcC5cblxuIiksIHByb2duYW1lKTsK KwlwcmludGYoXygiJXMgcmVzdG9yZXMgYSBQb3N0Z3JlU1FMIGRhdGFiYXNlIGZyb20gYW4g YXJjaGl2ZSBjcmVhdGVkIGJ5IHBnX2R1bXAuXG4iCisJCQkgIklmIGFyY2hpdmUgaXMgY3Jl YXRlZCBieSBwZ19kdW1wYWxsLCB0aGVuIHJlc3RvcmVzIG11bHRpcGxlIGRhdGFiYXNlcyBh bHNvLiBcblxuIiksIHByb2duYW1lKTsKIAlwcmludGYoXygiVXNhZ2U6XG4iKSk7CiAJcHJp bnRmKF8oIiAgJXMgW09QVElPTl0uLi4gW0ZJTEVdXG4iKSwgcHJvZ25hbWUpOwogCkBAIC01 MTcsNiArNjY2LDcgQEAgdXNhZ2UoY29uc3QgY2hhciAqcHJvZ25hbWUpCiAJcHJpbnRmKF8o IiAgLWMsIC0tY2xlYW4gICAgICAgICAgICAgICAgICBjbGVhbiAoZHJvcCkgZGF0YWJhc2Ug b2JqZWN0cyBiZWZvcmUgcmVjcmVhdGluZ1xuIikpOwogCXByaW50ZihfKCIgIC1DLCAtLWNy ZWF0ZSAgICAgICAgICAgICAgICAgY3JlYXRlIHRoZSB0YXJnZXQgZGF0YWJhc2VcbiIpKTsK IAlwcmludGYoXygiICAtZSwgLS1leGl0LW9uLWVycm9yICAgICAgICAgIGV4aXQgb24gZXJy b3IsIGRlZmF1bHQgaXMgdG8gY29udGludWVcbiIpKTsKKwlwcmludGYoXygiICAtZywgLS1n bG9iYWxzLW9ubHkgICAgICAgICAgIHJlc3RvcmUgb25seSBnbG9iYWwgb2JqZWN0cywgbm8g ZGF0YWJhc2VzXG4iKSk7CiAJcHJpbnRmKF8oIiAgLUksIC0taW5kZXg9TkFNRSAgICAgICAg ICAgICByZXN0b3JlIG5hbWVkIGluZGV4XG4iKSk7CiAJcHJpbnRmKF8oIiAgLWosIC0tam9i cz1OVU0gICAgICAgICAgICAgICB1c2UgdGhpcyBtYW55IHBhcmFsbGVsIGpvYnMgdG8gcmVz dG9yZVxuIikpOwogCXByaW50ZihfKCIgIC1MLCAtLXVzZS1saXN0PUZJTEVOQU1FICAgICAg dXNlIHRhYmxlIG9mIGNvbnRlbnRzIGZyb20gdGhpcyBmaWxlIGZvclxuIgpAQCAtNTI5LDYg KzY3OSw3IEBAIHVzYWdlKGNvbnN0IGNoYXIgKnByb2duYW1lKQogCXByaW50ZihfKCIgIC1T LCAtLXN1cGVydXNlcj1OQU1FICAgICAgICAgc3VwZXJ1c2VyIHVzZXIgbmFtZSB0byB1c2Ug Zm9yIGRpc2FibGluZyB0cmlnZ2Vyc1xuIikpOwogCXByaW50ZihfKCIgIC10LCAtLXRhYmxl PU5BTUUgICAgICAgICAgICAgcmVzdG9yZSBuYW1lZCByZWxhdGlvbiAodGFibGUsIHZpZXcs IGV0Yy4pXG4iKSk7CiAJcHJpbnRmKF8oIiAgLVQsIC0tdHJpZ2dlcj1OQU1FICAgICAgICAg ICByZXN0b3JlIG5hbWVkIHRyaWdnZXJcbiIpKTsKKwlwcmludGYoXygiICAtLWV4Y2x1ZGUt ZGF0YWJhc2U9UEFUVEVSTiAgIGV4Y2x1ZGUgZGF0YWJhc2VzIHdob3NlIG5hbWUgbWF0Y2hl cyB3aXRoIHBhdHRlcm5cbiIpKTsKIAlwcmludGYoXygiICAteCwgLS1uby1wcml2aWxlZ2Vz ICAgICAgICAgIHNraXAgcmVzdG9yYXRpb24gb2YgYWNjZXNzIHByaXZpbGVnZXMgKGdyYW50 L3Jldm9rZSlcbiIpKTsKIAlwcmludGYoXygiICAtMSwgLS1zaW5nbGUtdHJhbnNhY3Rpb24g ICAgIHJlc3RvcmUgYXMgYSBzaW5nbGUgdHJhbnNhY3Rpb25cbiIpKTsKIAlwcmludGYoXygi ICAtLWRpc2FibGUtdHJpZ2dlcnMgICAgICAgICAgIGRpc2FibGUgdHJpZ2dlcnMgZHVyaW5n IGRhdGEtb25seSByZXN0b3JlXG4iKSk7CkBAIC01NjksOCArNzIwLDggQEAgdXNhZ2UoY29u c3QgY2hhciAqcHJvZ25hbWUpCiAJcHJpbnRmKF8oIiAgLS1yb2xlPVJPTEVOQU1FICAgICAg ICAgIGRvIFNFVCBST0xFIGJlZm9yZSByZXN0b3JlXG4iKSk7CiAKIAlwcmludGYoXygiXG4i Ci0JCQkgIlRoZSBvcHRpb25zIC1JLCAtbiwgLU4sIC1QLCAtdCwgLVQsIGFuZCAtLXNlY3Rp b24gY2FuIGJlIGNvbWJpbmVkIGFuZCBzcGVjaWZpZWRcbiIKLQkJCSAibXVsdGlwbGUgdGlt ZXMgdG8gc2VsZWN0IG11bHRpcGxlIG9iamVjdHMuXG4iKSk7CisJCQkgIlRoZSBvcHRpb25z IC1JLCAtbiwgLU4sIC1QLCAtdCwgLVQsIC0tc2VjdGlvbiwgYW5kIC0tZXhjbHVkZS1kYXRh YmFzZSBjYW4gYmUgY29tYmluZWRcbiIKKwkJCSAiYW5kIHNwZWNpZmllZCBtdWx0aXBsZSB0 aW1lcyB0byBzZWxlY3QgbXVsdGlwbGUgb2JqZWN0cy5cbiIpKTsKIAlwcmludGYoXygiXG5J ZiBubyBpbnB1dCBmaWxlIG5hbWUgaXMgc3VwcGxpZWQsIHRoZW4gc3RhbmRhcmQgaW5wdXQg aXMgdXNlZC5cblxuIikpOwogCXByaW50ZihfKCJSZXBvcnQgYnVncyB0byA8JXM+LlxuIiks IFBBQ0tBR0VfQlVHUkVQT1JUKTsKIAlwcmludGYoXygiJXMgaG9tZSBwYWdlOiA8JXM+XG4i KSwgUEFDS0FHRV9OQU1FLCBQQUNLQUdFX1VSTCk7CkBAIC02NzUsMyArODI2LDYyMCBAQCBy ZWFkX3Jlc3RvcmVfZmlsdGVycyhjb25zdCBjaGFyICpmaWxlbmFtZSwgUmVzdG9yZU9wdGlv bnMgKm9wdHMpCiAKIAlmaWx0ZXJfZnJlZSgmZnN0YXRlKTsKIH0KKworLyoKKyAqIGZpbGVf ZXhpc3RzX2luX2RpcmVjdG9yeQorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiBmaWxlIGV4aXN0 IGluIGN1cnJlbnQgZGlyZWN0b3J5LgorICovCitzdGF0aWMgYm9vbAorZmlsZV9leGlzdHNf aW5fZGlyZWN0b3J5KGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZmlsZW5hbWUpCit7 CisJc3RydWN0IHN0YXQgc3Q7CisJY2hhcgkJYnVmW01BWFBHUEFUSF07CisKKwlpZiAoc25w cmludGYoYnVmLCBNQVhQR1BBVEgsICIlcy8lcyIsIGRpciwgZmlsZW5hbWUpID49IE1BWFBH UEFUSCkKKwkJcGdfZmF0YWwoImRpcmVjdG9yeSBuYW1lIHRvbyBsb25nOiBcIiVzXCIiLCBk aXIpOworCisJcmV0dXJuIChzdGF0KGJ1ZiwgJnN0KSA9PSAwICYmIFNfSVNSRUcoc3Quc3Rf bW9kZSkpOworfQorCisvKgorICogcmVhZF9vbmVfc3RhdGVtZW50CisgKgorICogVGhpcyB3 aWxsIHN0YXJ0IHJlYWRpbmcgZnJvbSBwYXNzZWQgZmlsZSBwb2ludGVyIHVzaW5nIGZnZXRj IGFuZCByZWFkIHRpbGwKKyAqIHNlbWljb2xvbihzcWwgc3RhdGVtZW50IHRlcm1pbmF0b3Ig Zm9yIGdsb2JhbC5kYXQgZmlsZSkKKyAqCisgKiBFT0YgaXMgcmV0dXJuZWQgaWYgZW5kLW9m LWZpbGUgaW5wdXQgaXMgc2VlbjsgdGltZSB0byBzaHV0IGRvd24uCisgKi8KKworc3RhdGlj IGludAorcmVhZF9vbmVfc3RhdGVtZW50KFN0cmluZ0luZm8gaW5CdWYsIEZJTEUgKnBmaWxl KQoreworCWludAkJCWM7CQkJCS8qIGNoYXJhY3RlciByZWFkIGZyb20gZ2V0YygpICovCisJ aW50CQkJbTsKKworCVN0cmluZ0luZm9EYXRhIHE7CisKKwlpbml0U3RyaW5nSW5mbygmcSk7 CisKKwlyZXNldFN0cmluZ0luZm8oaW5CdWYpOworCisJLyoKKwkgKiBSZWFkIGNoYXJhY3Rl cnMgdW50aWwgRU9GIG9yIHRoZSBhcHByb3ByaWF0ZSBkZWxpbWl0ZXIgaXMgc2Vlbi4KKwkg Ki8KKwl3aGlsZSAoKGMgPSBmZ2V0YyhwZmlsZSkpICE9IEVPRikKKwl7CisJCWlmIChjICE9 ICdcJycgJiYgYyAhPSAnIicgJiYgYyAhPSAnXG4nICYmIGMgIT0gJzsnKQorCQl7CisJCQlh cHBlbmRTdHJpbmdJbmZvQ2hhcihpbkJ1ZiwgKGNoYXIpIGMpOworCQkJd2hpbGUgKChjID0g ZmdldGMocGZpbGUpKSAhPSBFT0YpCisJCQl7CisJCQkJaWYgKGMgIT0gJ1wnJyAmJiBjICE9 ICciJyAmJiBjICE9ICc7JyAmJiBjICE9ICdcbicpCisJCQkJCWFwcGVuZFN0cmluZ0luZm9D aGFyKGluQnVmLCAoY2hhcikgYyk7CisJCQkJZWxzZQorCQkJCQlicmVhazsKKwkJCX0KKwkJ fQorCisJCWlmIChjID09ICdcJycgfHwgYyA9PSAnIicpCisJCXsKKwkJCWFwcGVuZFN0cmlu Z0luZm9DaGFyKCZxLCAoY2hhcikgYyk7CisJCQltID0gYzsKKworCQkJd2hpbGUgKChjID0g ZmdldGMocGZpbGUpKSAhPSBFT0YpCisJCQl7CisJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIo JnEsIChjaGFyKSBjKTsKKworCQkJCWlmIChjID09IG0pCisJCQkJeworCQkJCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKGluQnVmLCBxLmRhdGEpOworCQkJCQlyZXNldFN0cmluZ0luZm8o JnEpOworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisJCX0KKworCQlpZiAoYyA9PSAnOycp CisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGluQnVmLCAoY2hhcikgJzsnKTsKKwkJ CWJyZWFrOworCQl9CisKKwkJaWYgKGMgPT0gJ1xuJykKKwkJCWFwcGVuZFN0cmluZ0luZm9D aGFyKGluQnVmLCAoY2hhcikgJ1xuJyk7CisJfQorCisJLyogTm8gaW5wdXQgYmVmb3JlIEVP RiBzaWduYWwgbWVhbnMgdGltZSB0byBxdWl0LiAqLworCWlmIChjID09IEVPRiAmJiBpbkJ1 Zi0+bGVuID09IDApCisJCXJldHVybiBFT0Y7CisKKwkvKiBBZGQgJ1wwJyB0byBtYWtlIGl0 IGxvb2sgdGhlIHNhbWUgYXMgbWVzc2FnZSBjYXNlLiAqLworCWFwcGVuZFN0cmluZ0luZm9D aGFyKGluQnVmLCAoY2hhcikgJ1wwJyk7CisKKwlyZXR1cm4gJ1EnOworfQorCisvKgorICog Z2V0X2RibmFtZXNfbGlzdF90b19yZXN0b3JlCisgKgorICogVGhpcyB3aWxsIG1hcmsgZm9y IHNraXBwaW5nIGFueSBlbnRyaWVzIGZyb20gZGJuYW1lX29pZF9saXN0IHRoYXQgcGF0dGVy biBtYXRjaCBhbgorICogZW50cnkgaW4gdGhlIGRiX2V4Y2x1ZGVfcGF0dGVybnMgbGlzdC4K KyAqCisgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF0YWJhc2UgdG8gYmUgcmVzdG9yZWQu CisgKgorICovCitzdGF0aWMgaW50CitnZXRfZGJuYW1lc19saXN0X3RvX3Jlc3RvcmUoUEdj b25uICpjb25uLAorCQkJCQkJCVNpbXBsZU9pZFN0cmluZ0xpc3QgKiBkYm5hbWVfb2lkX2xp c3QsCisJCQkJCQkJU2ltcGxlU3RyaW5nTGlzdCBkYl9leGNsdWRlX3BhdHRlcm5zKQorewor CWludAkJCWNvdW50X2RiID0gMDsKKwlQUUV4cEJ1ZmZlciBxdWVyeTsKKwlQR3Jlc3VsdCAg ICpyZXM7CisKKwlxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisKKwlpZiAoIWNvbm4p CisJCXBnX2xvZ19pbmZvKCJjb25zaWRlcmluZyBQQVRURVJOIGFzIE5BTUUgZm9yIC0tZXhj bHVkZS1kYXRhYmFzZSBvcHRpb24gYXMgbm8gZGIgY29ubmVjdGlvbiB3aGlsZSBkb2luZyBw Z19yZXN0b3JlLiIpOworCisJLyoKKwkgKiBQcm9jZXNzIG9uZSBieSBvbmUgYWxsIGRibmFt ZXMgYW5kIGlmIHNwZWNpZmllZCB0byBza2lwIHJlc3RvcmluZywgdGhlbgorCSAqIHJlbW92 ZSBkYm5hbWUgZnJvbSBsaXN0LgorCSAqLworCWZvciAoU2ltcGxlT2lkU3RyaW5nTGlzdENl bGwgKiBkYl9jZWxsID0gZGJuYW1lX29pZF9saXN0LT5oZWFkOworCQkgZGJfY2VsbDsgZGJf Y2VsbCA9IGRiX2NlbGwtPm5leHQpCisJeworCQlib29sCQlza2lwX2RiX3Jlc3RvcmUgPSBm YWxzZTsKKworCQlmb3IgKFNpbXBsZVN0cmluZ0xpc3RDZWxsICpwYXRfY2VsbCA9IGRiX2V4 Y2x1ZGVfcGF0dGVybnMuaGVhZDsgcGF0X2NlbGw7IHBhdF9jZWxsID0gcGF0X2NlbGwtPm5l eHQpCisJCXsKKwkJCS8qCisJCQkgKiB0aGUgY29uc3RydWN0IHBhdHRlcm4gbWF0Y2hpbmcg cXVlcnk6IFNFTEVDVCAxIFdIRVJFIFhYWAorCQkJICogT1BFUkFUT1IocGdfY2F0YWxvZy5+ KSAnXihQQVRURVJOKSQnIENPTExBVEUgcGdfY2F0YWxvZy5kZWZhdWx0CisJCQkgKgorCQkJ ICogWFhYIHJlcHJlc2VudHMgdGhlIHN0cmluZyBsaXRlcmFsIGRhdGFiYXNlIG5hbWUgZGVy aXZlZCBmcm9tCisJCQkgKiB0aGUgZGJuYW1lX29pZF9saXN0LCB3aGljaCBpcyBpbml0aWFs bHkgZXh0cmFjdGVkIGZyb20gdGhlCisJCQkgKiBtYXAuZGF0IGZpbGUgbG9jYXRlZCBpbiB0 aGUgYmFja3VwIGRpcmVjdG9yeS4gIHRoYXQncyB3aHkgd2UKKwkJCSAqIG5lZWQgcXVvdGVf bGl0ZXJhbF9jc3RyLgorCQkJICoKKwkJCSAqIElmIG5vIGRiIGNvbm5lY3Rpb24sIHRoZW4g Y29uc2lkZXIgUEFUVEVSTiBhcyBOQU1FLgorCQkJICovCisJCQlpZiAocGdfc3RyY2FzZWNt cChkYl9jZWxsLT5zdHIsIHBhdF9jZWxsLT52YWwpID09IDApCisJCQkJc2tpcF9kYl9yZXN0 b3JlID0gdHJ1ZTsKKwkJCWVsc2UgaWYgKGNvbm4pCisJCQl7CisJCQkJaW50CQkJZG90Y250 OworCisJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICJTRUxFQ1QgMSAiKTsKKwkJ CQlwcm9jZXNzU1FMTmFtZVBhdHRlcm4oY29ubiwgcXVlcnksIHBhdF9jZWxsLT52YWwsIGZh bHNlLAorCQkJCQkJCQkJICBmYWxzZSwgTlVMTCwgcXVvdGVfbGl0ZXJhbF9jc3RyKGRiX2Nl bGwtPnN0ciksCisJCQkJCQkJCQkgIE5VTEwsIE5VTEwsIE5VTEwsICZkb3RjbnQpOworCisJ CQkJaWYgKGRvdGNudCA+IDApCisJCQkJeworCQkJCQlwZ19sb2dfZXJyb3IoImltcHJvcGVy IHF1YWxpZmllZCBuYW1lICh0b28gbWFueSBkb3R0ZWQgbmFtZXMpOiAlcyIsCisJCQkJCQkJ CSBkYl9jZWxsLT5zdHIpOworCQkJCQlQUWZpbmlzaChjb25uKTsKKwkJCQkJZXhpdF9uaWNl bHkoMSk7CisJCQkJfQorCisJCQkJcmVzID0gZXhlY3V0ZVF1ZXJ5KGNvbm4sIHF1ZXJ5LT5k YXRhKTsKKworCQkJCWlmICgoUFFyZXN1bHRTdGF0dXMocmVzKSA9PSBQR1JFU19UVVBMRVNf T0spICYmIFBRbnR1cGxlcyhyZXMpKQorCQkJCXsKKwkJCQkJc2tpcF9kYl9yZXN0b3JlID0g dHJ1ZTsKKwkJCQkJcGdfbG9nX2luZm8oImRhdGFiYXNlIFwiJXNcIiBtYXRjaGVzIGV4Y2x1 ZGUgcGF0dGVybjogXCIlc1wiIiwgZGJfY2VsbC0+c3RyLCBwYXRfY2VsbC0+dmFsKTsKKwkJ CQl9CisKKwkJCQlQUWNsZWFyKHJlcyk7CisJCQkJcmVzZXRQUUV4cEJ1ZmZlcihxdWVyeSk7 CisJCQl9CisKKwkJCWlmIChza2lwX2RiX3Jlc3RvcmUpCisJCQkJYnJlYWs7CisJCX0KKwor CQkvKiBJbmNyZW1lbnQgY291bnQgaWYgZGF0YWJhc2UgbmVlZHMgdG8gYmUgcmVzdG9yZWQu ICovCisJCWlmIChza2lwX2RiX3Jlc3RvcmUpCisJCXsKKwkJCXBnX2xvZ19pbmZvKCJleGNs dWRpbmcgZGF0YWJhc2UgXCIlc1wiIiwgZGJfY2VsbC0+c3RyKTsKKwkJCWRiX2NlbGwtPm9p ZCA9IEludmFsaWRPaWQ7CisJCX0KKwkJZWxzZQorCQl7CisJCQljb3VudF9kYisrOworCQl9 CisJfQorCisJcmV0dXJuIGNvdW50X2RiOworfQorCisvKgorICogZ2V0X2RibmFtZV9vaWRf bGlzdF9mcm9tX21maWxlCisgKgorICogT3BlbiBtYXAuZGF0IGZpbGUgYW5kIHJlYWQgbGlu ZSBieSBsaW5lIGFuZCB0aGVuIHByZXBhcmUgYSBsaXN0IG9mIGRhdGFiYXNlCisgKiBuYW1l cyBhbmQgY29ycmVzcG9uZGluZyBkYl9vaWQuCisgKgorICogUmV0dXJucywgdG90YWwgbnVt YmVyIG9mIGRhdGFiYXNlIG5hbWVzIGluIG1hcC5kYXQgZmlsZS4KKyAqLworc3RhdGljIGlu dAorZ2V0X2RibmFtZV9vaWRfbGlzdF9mcm9tX21maWxlKGNvbnN0IGNoYXIgKmR1bXBkaXJw YXRoLCBTaW1wbGVPaWRTdHJpbmdMaXN0ICogZGJuYW1lX29pZF9saXN0KQoreworCUZJTEUJ ICAgKnBmaWxlOworCWNoYXIJCW1hcF9maWxlX3BhdGhbTUFYUEdQQVRIXTsKKwljaGFyCQls aW5lW01BWFBHUEFUSF07CisJaW50CQkJY291bnQgPSAwOworCisJLyoKKwkgKiBJZiB0aGVy ZSBpcyBvbmx5IGdsb2JhbC5kYXQgZmlsZSBpbiBkdW1wLCB0aGVuIHJldHVybiBmcm9tIGhl cmUgYXMKKwkgKiB0aGVyZSBpcyBubyBkYXRhYmFzZSB0byByZXN0b3JlLgorCSAqLworCWlm ICghZmlsZV9leGlzdHNfaW5fZGlyZWN0b3J5KGR1bXBkaXJwYXRoLCAibWFwLmRhdCIpKQor CXsKKwkJcGdfbG9nX2luZm8oImRhdGFiYXNlcyByZXN0b3JpbmcgaXMgc2tpcHBlZCBhcyBt YXAuZGF0IGZpbGUgaXMgbm90IHByZXNlbnQgaW4gXCIlc1wiIiwgZHVtcGRpcnBhdGgpOwor CQlyZXR1cm4gMDsKKwl9CisKKwlzbnByaW50ZihtYXBfZmlsZV9wYXRoLCBNQVhQR1BBVEgs ICIlcy9tYXAuZGF0IiwgZHVtcGRpcnBhdGgpOworCisJLyogT3BlbiBtYXAuZGF0IGZpbGUu ICovCisJcGZpbGUgPSBmb3BlbihtYXBfZmlsZV9wYXRoLCBQR19CSU5BUllfUik7CisKKwlp ZiAocGZpbGUgPT0gTlVMTCkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIG1hcC5kYXQg ZmlsZTogXCIlc1wiIiwgbWFwX2ZpbGVfcGF0aCk7CisKKwkvKiBBcHBlbmQgYWxsIHRoZSBk Ym5hbWUgYW5kIGRiX29pZCB0byB0aGUgbGlzdC4gKi8KKwl3aGlsZSAoKGZnZXRzKGxpbmUs IE1BWFBHUEFUSCwgcGZpbGUpKSAhPSBOVUxMKQorCXsKKwkJT2lkCQkJZGJfb2lkID0gSW52 YWxpZE9pZDsKKwkJY2hhcgkJZGJfb2lkX3N0cltNQVhQR1BBVEggKyAxXSA9IHsnXDAnfTsK KwkJY2hhcgkJZGJuYW1lW01BWFBHUEFUSCArIDFdID0geydcMCd9OworCisJCS8qIEV4dHJh Y3QgZGJvaWQuICovCisJCXNzY2FuZihsaW5lLCAiJXUiLCAmZGJfb2lkKTsKKwkJc3NjYW5m KGxpbmUsICIlMjBzIiwgZGJfb2lkX3N0cik7CisKKwkJLyogTm93IGNvcHkgZGJuYW1lLiAq LworCQlzdHJjcHkoZGJuYW1lLCBsaW5lICsgc3RybGVuKGRiX29pZF9zdHIpICsgMSk7CisK KwkJLyogUmVtb3ZlIFxuIGZyb20gZGJhbm1lLiAqLworCQlkYm5hbWVbc3RybGVuKGRibmFt ZSkgLSAxXSA9ICdcMCc7CisKKwkJcGdfbG9nX2luZm8oImZvdW5kIGRhdGFiYXNlIFwiJXNc IiAoT0lEOiAldSkgaW4gbWFwLmRhdCBmaWxlIHdoaWxlIHJlc3RvcmluZy4iLCBkYm5hbWUs IGRiX29pZCk7CisKKwkJLyogUmVwb3J0IGVycm9yIGFuZCBleGl0IGlmIHRoZSBmaWxlIGhh cyBhbnkgY29ycnVwdGVkIGRhdGEuICovCisJCWlmICghT2lkSXNWYWxpZChkYl9vaWQpIHx8 IHN0cmxlbihkYm5hbWUpID09IDApCisJCQlwZ19mYXRhbCgiaW52YWxpZCBlbnRyeSBpbiBt YXAuZGF0IGZpbGUgYXQgbGluZSA6ICVkIiwgY291bnQgKyAxKTsKKworCQkvKgorCQkgKiBY WFggOiBiZWZvcmUgYWRkaW5nIGRibmFtZSBpbnRvIGxpc3QsIHdlIGNhbiB2ZXJpZnkgdGhh dCB0aGlzIGRiCisJCSAqIG5lZWRzIHRvIHNraXBwZWQgZm9yIHJlc3RvcmUgb3Igbm90IGJ1 dCBhcyBvZiBub3csIHdlIGFyZSBtYWtpbmcgYQorCQkgKiBsaXN0IG9mIGFsbCB0aGUgZGF0 YWJhc2VzLgorCQkgKi8KKwkJc2ltcGxlX29pZF9zdHJpbmdfbGlzdF9hcHBlbmQoZGJuYW1l X29pZF9saXN0LCBkYl9vaWQsIGRibmFtZSk7CisJCWNvdW50Kys7CisJfQorCisJLyogQ2xv c2UgbWFwLmRhdCBmaWxlLiAqLworCWZjbG9zZShwZmlsZSk7CisKKwlyZXR1cm4gY291bnQ7 Cit9CisKKy8qCisgKiByZXN0b3JlX2FsbF9kYXRhYmFzZXMKKyAqCisgKiBUaGlzIHdpbGwg cmVzdG9yZSBkYXRhYmFzZXMgdGhvc2UgZHVtcHMgYXJlIHByZXNlbnQgaW4KKyAqIGRpcmVj dG9yeSBiYXNlZCBvbiBtYXAuZGF0IGZpbGUgbWFwcGluZy4KKyAqCisgKiBUaGlzIHdpbGwg c2tpcCByZXN0b3JpbmcgZm9yIGRhdGFiYXNlcyB0aGF0IGFyZSBzcGVjaWZpZWQgd2l0aAor ICogZXhjbHVkZS1kYXRhYmFzZSBvcHRpb24uCisgKgorICogcmV0dXJucywgbnVtYmVyIG9m IGVycm9ycyB3aGlsZSBkb2luZyByZXN0b3JlLgorICovCitzdGF0aWMgaW50CityZXN0b3Jl X2FsbF9kYXRhYmFzZXMoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpkdW1wZGlycGF0aCwK KwkJCQkJU2ltcGxlU3RyaW5nTGlzdCBkYl9leGNsdWRlX3BhdHRlcm5zLCBSZXN0b3JlT3B0 aW9ucyAqb3B0cywKKwkJCQkJaW50IG51bVdvcmtlcnMpCit7CisJU2ltcGxlT2lkU3RyaW5n TGlzdCBkYm5hbWVfb2lkX2xpc3QgPSB7TlVMTCwgTlVMTH07CisJaW50CQkJbnVtX2RiX3Jl c3RvcmUgPSAwOworCWludAkJCW51bV90b3RhbF9kYjsKKwlpbnQJCQluX2Vycm9yc190b3Rh bDsKKwlpbnQJCQljb3VudCA9IDA7CisJY2hhcgkJKmNvbm5lY3RlZF9kYiA9IE5VTEw7CisJ Ym9vbAkJZHVtcERhdGEgPSBvcHRzLT5kdW1wRGF0YTsKKwlib29sCQlkdW1wU2NoZW1hID0g b3B0cy0+ZHVtcFNjaGVtYTsKKwlib29sCQlkdW1wU3RhdGlzdGljcyA9IG9wdHMtPmR1bXBT Y2hlbWE7CisKKwkvKiBTYXZlIGRiIG5hbWUgdG8gcmV1c2UgaXQgZm9yIGFsbCB0aGUgZGF0 YWJhc2UuICovCisJaWYgKG9wdHMtPmNwYXJhbXMuZGJuYW1lKQorCQljb25uZWN0ZWRfZGIg PSBvcHRzLT5jcGFyYW1zLmRibmFtZTsKKworCW51bV90b3RhbF9kYiA9IGdldF9kYm5hbWVf b2lkX2xpc3RfZnJvbV9tZmlsZShkdW1wZGlycGF0aCwgJmRibmFtZV9vaWRfbGlzdCk7CisK KwkvKgorCSAqIElmIG1hcC5kYXQgaGFzIG5vIGVudHJ5LCByZXR1cm4gZnJvbSBoZXJlIGFm dGVyIHByb2Nlc3NpbmcgZ2xvYmFsLmRhdAorCSAqIGZpbGUuCisJICovCisJaWYgKGRibmFt ZV9vaWRfbGlzdC5oZWFkID09IE5VTEwpCisJCXJldHVybiBwcm9jZXNzX2dsb2JhbF9zcWxf Y29tbWFuZHMoY29ubiwgZHVtcGRpcnBhdGgsIG9wdHMtPmZpbGVuYW1lKTsKKworCXBnX2xv Z19pbmZvKCJmb3VuZCB0b3RhbCAlZCBkYXRhYmFzZSBuYW1lcyBpbiBtYXAuZGF0IGZpbGUi LCBudW1fdG90YWxfZGIpOworCisJaWYgKCFjb25uKQorCXsKKwkJcGdfbG9nX2luZm8oInRy eWluZyB0byBjb25uZWN0IGRhdGFiYXNlIFwicG9zdGdyZXNcIiAgdG8gZHVtcCBpbnRvIG91 dCBmaWxlIik7CisKKwkJY29ubiA9IENvbm5lY3REYXRhYmFzZSgicG9zdGdyZXMiLCBOVUxM LCBvcHRzLT5jcGFyYW1zLnBnaG9zdCwKKwkJCQkJCQkgICBvcHRzLT5jcGFyYW1zLnBncG9y dCwgb3B0cy0+Y3BhcmFtcy51c2VybmFtZSwgVFJJX0RFRkFVTFQsCisJCQkJCQkJICAgZmFs c2UsIHByb2duYW1lLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKTsKKworCQkvKiBUcnkgd2l0 aCB0ZW1wbGF0ZTEuICovCisJCWlmICghY29ubikKKwkJeworCQkJcGdfbG9nX2luZm8oInRy eWluZyB0byBjb25uZWN0IGRhdGFiYXNlIFwidGVtcGxhdGUxXCIgYXMgZmFpbGVkIHRvIGNv bm5lY3QgdG8gZGF0YWJhc2UgXCJwb3N0Z3Jlc1wiIHRvIGR1bXAgaW50byBvdXQgZmlsZSIp OworCisJCQljb25uID0gQ29ubmVjdERhdGFiYXNlKCJ0ZW1wbGF0ZTEiLCBOVUxMLCBvcHRz LT5jcGFyYW1zLnBnaG9zdCwKKwkJCQkJCQkJICAgb3B0cy0+Y3BhcmFtcy5wZ3BvcnQsIG9w dHMtPmNwYXJhbXMudXNlcm5hbWUsIFRSSV9ERUZBVUxULAorCQkJCQkJCQkgICBmYWxzZSwg cHJvZ25hbWUsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpOworCQl9CisJfQorCisJLyoKKwkg KiBwcm9jZXNzaW5nIHBnX3Jlc3RvcmUgLS1leGNsdWRlLWRhdGFiYXNlPVBBVFRFUk4vTkFN RSBpZiBubyBjb25uZWN0aW9uLgorCSAqLworCW51bV9kYl9yZXN0b3JlID0gZ2V0X2RibmFt ZXNfbGlzdF90b19yZXN0b3JlKGNvbm4sICZkYm5hbWVfb2lkX2xpc3QsCisJCQkJCQkJCQkJ CQkgZGJfZXhjbHVkZV9wYXR0ZXJucyk7CisKKwkvKiBPcGVuIGdsb2JhbC5kYXQgZmlsZSBh bmQgZXhlY3V0ZS9hcHBlbmQgYWxsIHRoZSBnbG9iYWwgc3FsIGNvbW1hbmRzLiAqLworCW5f ZXJyb3JzX3RvdGFsID0gcHJvY2Vzc19nbG9iYWxfc3FsX2NvbW1hbmRzKGNvbm4sIGR1bXBk aXJwYXRoLCBvcHRzLT5maWxlbmFtZSk7CisKKwkvKiBDbG9zZSB0aGUgZGIgY29ubmVjdGlv biBhcyB3ZSBhcmUgZG9uZSB3aXRoIGdsb2JhbHMgYW5kIHBhdHRlcm5zLiAqLworCWlmIChj b25uKQorCQlQUWZpbmlzaChjb25uKTsKKworCS8qIEV4aXQgaWYgbm8gZGIgbmVlZHMgdG8g YmUgcmVzdG9yZWQuICovCisJaWYgKGRibmFtZV9vaWRfbGlzdC5oZWFkID09IE5VTEwgfHwg bnVtX2RiX3Jlc3RvcmUgPT0gMCkKKwl7CisJCXBnX2xvZ19pbmZvKCJubyBkYXRhYmFzZSBu ZWVkcyB0byByZXN0b3JlIG91dCBvZiAlZCBkYXRhYmFzZXMiLCBudW1fdG90YWxfZGIpOwor CQlyZXR1cm4gbl9lcnJvcnNfdG90YWw7CisJfQorCisJcGdfbG9nX2luZm8oIm5lZWRzIHRv IHJlc3RvcmUgJWQgZGF0YWJhc2VzIG91dCBvZiAlZCBkYXRhYmFzZXMiLCBudW1fZGJfcmVz dG9yZSwgbnVtX3RvdGFsX2RiKTsKKworCS8qCisJICogVGlsbCBub3csIHdlIG1hZGUgYSBs aXN0IG9mIGRhdGFiYXNlcywgdGhvc2UgbmVlZHMgdG8gYmUgcmVzdG9yZWQgYWZ0ZXIKKwkg KiBza2lwcGluZyBuYW1lcyBvZiBleGNsdWRlLWRhdGFiYXNlLiAgTm93IHdlIGNhbiBsYXVu Y2ggcGFyYWxsZWwgd29ya2VycworCSAqIHRvIHJlc3RvcmUgdGhlc2UgZGF0YWJhc2VzLgor CSAqLworCWZvciAoU2ltcGxlT2lkU3RyaW5nTGlzdENlbGwgKiBkYl9jZWxsID0gZGJuYW1l X29pZF9saXN0LmhlYWQ7CisJCSBkYl9jZWxsOyBkYl9jZWxsID0gZGJfY2VsbC0+bmV4dCkK Kwl7CisJCWNoYXIJCXN1YmRpcnBhdGhbTUFYUEdQQVRIXTsKKwkJY2hhcgkJc3ViZGlyZGJw YXRoW01BWFBHUEFUSF07CisJCWNoYXIJCWRiZmlsZW5hbWVbTUFYUEdQQVRIXTsKKwkJaW50 CQkJbl9lcnJvcnM7CisKKwkJLyogaWdub3JlIGRicyBtYXJrZWQgZm9yIHNraXBwaW5nICov CisJCWlmIChkYl9jZWxsLT5vaWQgPT0gSW52YWxpZE9pZCkKKwkJCWNvbnRpbnVlOworCisJ CS8qCisJCSAqIFdlIG5lZWQgdG8gcmVzZXQgb3ZlcnJpZGVfZGJuYW1lIHNvIHRoYXQgb2Jq ZWN0cyBjYW4gYmUgcmVzdG9yZWQKKwkJICogaW50byBhbHJlYWR5IGNyZWF0ZWQgZGF0YWJh c2UuICh1c2VkIHdpdGggLWQvLS1kYm5hbWUgb3B0aW9uKQorCQkgKi8KKwkJaWYgKG9wdHMt PmNwYXJhbXMub3ZlcnJpZGVfZGJuYW1lKQorCQl7CisJCQlwZnJlZShvcHRzLT5jcGFyYW1z Lm92ZXJyaWRlX2RibmFtZSk7CisJCQlvcHRzLT5jcGFyYW1zLm92ZXJyaWRlX2RibmFtZSA9 IE5VTEw7CisJCX0KKworCQlzbnByaW50ZihzdWJkaXJkYnBhdGgsIE1BWFBHUEFUSCwgIiVz L2RhdGFiYXNlcyIsIGR1bXBkaXJwYXRoKTsKKworCQkvKgorCQkgKiBWYWxpZGF0ZSBkYXRh YmFzZSBkdW1wIGZpbGUuICBJZiB0aGVyZSBpcyAudGFyIG9yIC5kbXAgZmlsZSBleGlzdAor CQkgKiB0aGVuIGNvbnNpZGVyIHBhcnRpY3VsYXIgZmlsZSwgb3RoZXJ3aXNlIGp1c3QgYXBw ZW5kIGRib2lkIHRvIHRoZQorCQkgKiBkYXRhYmFzZXMgZm9sZGVyLgorCQkgKi8KKwkJc25w cmludGYoZGJmaWxlbmFtZSwgTUFYUEdQQVRILCAiJXUudGFyIiwgZGJfY2VsbC0+b2lkKTsK KwkJaWYgKGZpbGVfZXhpc3RzX2luX2RpcmVjdG9yeShzdWJkaXJkYnBhdGgsIGRiZmlsZW5h bWUpKQorCQkJc25wcmludGYoc3ViZGlycGF0aCwgTUFYUEdQQVRILCAiJXMvZGF0YWJhc2Vz LyV1LnRhciIsIGR1bXBkaXJwYXRoLCBkYl9jZWxsLT5vaWQpOworCQllbHNlCisJCXsKKwkJ CXNucHJpbnRmKGRiZmlsZW5hbWUsIE1BWFBHUEFUSCwgIiV1LmRtcCIsIGRiX2NlbGwtPm9p ZCk7CisKKwkJCWlmIChmaWxlX2V4aXN0c19pbl9kaXJlY3Rvcnkoc3ViZGlyZGJwYXRoLCBk YmZpbGVuYW1lKSkKKwkJCQlzbnByaW50ZihzdWJkaXJwYXRoLCBNQVhQR1BBVEgsICIlcy9k YXRhYmFzZXMvJXUuZG1wIiwgZHVtcGRpcnBhdGgsIGRiX2NlbGwtPm9pZCk7CisJCQllbHNl CisJCQkJc25wcmludGYoc3ViZGlycGF0aCwgTUFYUEdQQVRILCAiJXMvZGF0YWJhc2VzLyV1 IiwgZHVtcGRpcnBhdGgsIGRiX2NlbGwtPm9pZCk7CisJCX0KKworCQlwZ19sb2dfaW5mbygi cmVzdG9yaW5nIGRhdGFiYXNlIFwiJXNcIiIsIGRiX2NlbGwtPnN0cik7CisKKwkJLyogSWYg ZGF0YWJhc2UgaXMgYWxyZWFkeSBjcmVhdGVkLCB0aGVuIGRvbid0IHNldCBjcmVhdGVEQiBm bGFnLiAqLworCQlpZiAob3B0cy0+Y3BhcmFtcy5kYm5hbWUpCisJCXsKKwkJCVBHY29ubiAq dGVzdF9jb25uOworCisJCQl0ZXN0X2Nvbm4gPSBDb25uZWN0RGF0YWJhc2UoZGJfY2VsbC0+ c3RyLCBOVUxMLCBvcHRzLT5jcGFyYW1zLnBnaG9zdCwKKwkJCQkJCQkJCQlvcHRzLT5jcGFy YW1zLnBncG9ydCwgb3B0cy0+Y3BhcmFtcy51c2VybmFtZSwgVFJJX0RFRkFVTFQsCisJCQkJ CQkJCQkJZmFsc2UsIHByb2duYW1lLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKTsKKwkJCWlm ICh0ZXN0X2Nvbm4pCisJCQl7CisJCQkJUFFmaW5pc2godGVzdF9jb25uKTsKKworCQkJCS8q IFVzZSBhbHJlYWR5IGNyZWF0ZWQgZGF0YWJhc2UgZm9yIGNvbm5lY3Rpb24uICovCisJCQkJ b3B0cy0+Y3JlYXRlREIgPSAwOworCQkJCW9wdHMtPmNwYXJhbXMuZGJuYW1lID0gZGJfY2Vs bC0+c3RyOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCS8qIHdlJ2xsIGhhdmUgdG8gY3Jl YXRlIGl0ICovCisJCQkJb3B0cy0+Y3JlYXRlREIgPSAxOworCQkJCW9wdHMtPmNwYXJhbXMu ZGJuYW1lID0gY29ubmVjdGVkX2RiOworCQkJfQorCQl9CisKKwkJLyoKKwkJICogUmVzZXQg ZmxhZ3MgLSBtaWdodCBoYXZlIGJlZW4gcmVzZXQgaW4gcGdfYmFja3VwX2FyY2hpdmVyLmMg YnkgdGhlCisJCSAqIHByZXZpb3VzIHJlc3RvcmUuCisJCSAqLworCQlvcHRzLT5kdW1wRGF0 YSA9IGR1bXBEYXRhOworCQlvcHRzLT5kdW1wU2NoZW1hID0gZHVtcFNjaGVtYTsKKwkJb3B0 cy0+ZHVtcFN0YXRpc3RpY3MgPSBkdW1wU3RhdGlzdGljczsKKworCQkvKiBSZXN0b3JlIHNp bmdsZSBkYXRhYmFzZS4gKi8KKwkJbl9lcnJvcnMgPSByZXN0b3JlX29uZV9kYXRhYmFzZShz dWJkaXJwYXRoLCBvcHRzLCBudW1Xb3JrZXJzLCB0cnVlLCBjb3VudCk7CisKKwkJLyogUHJp bnQgYSBzdW1tYXJ5IG9mIGlnbm9yZWQgZXJyb3JzIGR1cmluZyBzaW5nbGUgZGF0YWJhc2Ug cmVzdG9yZS4gKi8KKwkJaWYgKG5fZXJyb3JzKQorCQl7CisJCQluX2Vycm9yc190b3RhbCAr PSBuX2Vycm9yczsKKwkJCXBnX2xvZ193YXJuaW5nKCJlcnJvcnMgaWdub3JlZCBvbiBkYXRh YmFzZSBcIiVzXCIgcmVzdG9yZTogJWQiLCBkYl9jZWxsLT5zdHIsIG5fZXJyb3JzKTsKKwkJ fQorCisJCWNvdW50Kys7CisJfQorCisJLyogTG9nIG51bWJlciBvZiBwcm9jZXNzZWQgZGF0 YWJhc2VzLiAqLworCXBnX2xvZ19pbmZvKCJudW1iZXIgb2YgcmVzdG9yZWQgZGF0YWJhc2Vz IGFyZSAlZCIsIG51bV9kYl9yZXN0b3JlKTsKKworCS8qIEZyZWUgZGJuYW1lIGFuZCBkYm9p ZCBsaXN0LiAqLworCXNpbXBsZV9vaWRfc3RyaW5nX2xpc3RfZGVzdHJveSgmZGJuYW1lX29p ZF9saXN0KTsKKworCXJldHVybiBuX2Vycm9yc190b3RhbDsKK30KKworLyoKKyAqIHByb2Nl c3NfZ2xvYmFsX3NxbF9jb21tYW5kcworICoKKyAqIFRoaXMgd2lsbCBvcGVuIGdsb2JhbC5k YXQgZmlsZSBhbmQgd2lsbCBleGVjdXRlIGFsbCBnbG9iYWwgc3FsIGNvbW1hbmRzIG9uZQor ICogYnkgb25lIHN0YXRlbWVudC4KKyAqIFNlbWljb2xvbiBpcyBjb25zaWRlcmVkIGFzIHN0 YXRlbWVudCB0ZXJtaW5hdG9yLiAgSWYgb3V0ZmlsZSBpcyBwYXNzZWQsIHRoZW4KKyAqIHRo aXMgd2lsbCBjb3B5IGFsbCBzcWwgY29tbWFuZHMgaW50byBvdXRmaWxlIHJhdGhlciB0aGVu IGV4ZWN1dGluZyB0aGVtLgorICoKKyAqIHJldHVybnMgdGhlIG51bWJlciBvZiBlcnJvcnMg d2hpbGUgcHJvY2Vzc2luZyBnbG9iYWwuZGF0CisgKi8KK3N0YXRpYyBpbnQKK3Byb2Nlc3Nf Z2xvYmFsX3NxbF9jb21tYW5kcyhQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKmR1bXBkaXJw YXRoLCBjb25zdCBjaGFyICpvdXRmaWxlKQoreworCWNoYXIJCWdsb2JhbF9maWxlX3BhdGhb TUFYUEdQQVRIXTsKKwlQR3Jlc3VsdCAgICpyZXN1bHQ7CisJU3RyaW5nSW5mb0RhdGEgc3Fs c3RhdGVtZW50LCB1c2VyX2NyZWF0ZTsKKwlGSUxFCSAgICpwZmlsZTsKKwlpbnQJCQluX2Vy cm9ycyA9IDA7CisKKwlzbnByaW50ZihnbG9iYWxfZmlsZV9wYXRoLCBNQVhQR1BBVEgsICIl cy9nbG9iYWwuZGF0IiwgZHVtcGRpcnBhdGgpOworCisJLyogT3BlbiBnbG9iYWwuZGF0IGZp bGUuICovCisJcGZpbGUgPSBmb3BlbihnbG9iYWxfZmlsZV9wYXRoLCBQR19CSU5BUllfUik7 CisKKwlpZiAocGZpbGUgPT0gTlVMTCkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGds b2JhbC5kYXQgZmlsZTogXCIlc1wiIiwgZ2xvYmFsX2ZpbGVfcGF0aCk7CisKKwkvKgorCSAq IElmIG91dGZpbGUgaXMgZ2l2ZW4sIHRoZW4ganVzdCBjb3B5IGFsbCBnbG9iYWwuZGF0IGZp bGUgZGF0YSBpbnRvCisJICogb3V0ZmlsZS4KKwkgKi8KKwlpZiAob3V0ZmlsZSkKKwl7CisJ CWNvcHlfb3JfcHJpbnRfZ2xvYmFsX2ZpbGUob3V0ZmlsZSwgcGZpbGUpOworCQlyZXR1cm4g MDsKKwl9CisKKwkvKiBJbml0IHNxbHN0YXRlbWVudCB0byBhcHBlbmQgY29tbWFuZHMuICov CisJaW5pdFN0cmluZ0luZm8oJnNxbHN0YXRlbWVudCk7CisKKwkvKiBjcmVhdGlvbiBzdGF0 ZW1lbnQgZm9yIG91ciBjdXJyZW50IHJvbGUgKi8KKwlpbml0U3RyaW5nSW5mbygmdXNlcl9j cmVhdGUpOworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnVzZXJfY3JlYXRlLCAiQ1JFQVRF IFJPTEUgIik7CisJLyogc2hvdWxkIHVzZSBmbXRJZCBoZXJlLCBidXQgd2UgZG9uJ3Qga25v dyB0aGUgZW5jb2RpbmcgKi8KKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZ1c2VyX2NyZWF0 ZSwgUFF1c2VyKGNvbm4pKTsKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZ1c2VyX2NyZWF0 ZSwgIjsiKTsKKworCS8qIFByb2Nlc3MgZmlsZSB0aWxsIEVPRiBhbmQgZXhlY3V0ZSBzcWwg c3RhdGVtZW50cy4gKi8KKwl3aGlsZSAocmVhZF9vbmVfc3RhdGVtZW50KCZzcWxzdGF0ZW1l bnQsIHBmaWxlKSAhPSBFT0YpCisJeworCQkvKiBkb24ndCB0cnkgdG8gY3JlYXRlIHRoZSBy b2xlIHdlIGFyZSBjb25uZWN0ZWQgYXMgKi8KKwkJaWYgKHN0cnN0cihzcWxzdGF0ZW1lbnQu ZGF0YSwgdXNlcl9jcmVhdGUuZGF0YSkpCisJCQljb250aW51ZTsKKworCQlwZ19sb2dfaW5m bygiZXhlY3V0aW5nIHF1ZXJ5OiAlcyIsIHNxbHN0YXRlbWVudC5kYXRhKTsKKwkJcmVzdWx0 ID0gUFFleGVjKGNvbm4sIHNxbHN0YXRlbWVudC5kYXRhKTsKKworCQlzd2l0Y2ggKFBRcmVz dWx0U3RhdHVzKHJlc3VsdCkpCisJCXsKKwkJCWNhc2UgUEdSRVNfQ09NTUFORF9PSzoKKwkJ CWNhc2UgUEdSRVNfVFVQTEVTX09LOgorCQkJY2FzZSBQR1JFU19FTVBUWV9RVUVSWToKKwkJ CQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJbl9lcnJvcnMrKzsKKwkJCQlwZ19sb2dfZXJy b3IoImNvdWxkIG5vdCBleGVjdXRlIHF1ZXJ5OiBcIiVzXCIgXG5Db21tYW5kIHdhczogXCIl c1wiIiwgUFFlcnJvck1lc3NhZ2UoY29ubiksIHNxbHN0YXRlbWVudC5kYXRhKTsKKwkJfQor CQlQUWNsZWFyKHJlc3VsdCk7CisJfQorCisJLyogUHJpbnQgYSBzdW1tYXJ5IG9mIGlnbm9y ZWQgZXJyb3JzIGR1cmluZyBnbG9iYWwuZGF0LiAqLworCWlmIChuX2Vycm9ycykKKwkJcGdf bG9nX3dhcm5pbmcoImVycm9ycyBpZ25vcmVkIG9uIGdsb2JhbC5kYXQgZmlsZSByZXN0b3Jl OiAlZCIsIG5fZXJyb3JzKTsKKworCWZjbG9zZShwZmlsZSk7CisKKwlyZXR1cm4gbl9lcnJv cnM7Cit9CisKKy8qCisgKiBjb3B5X29yX3ByaW50X2dsb2JhbF9maWxlCisgKgorICogVGhp cyB3aWxsIGNvcHkgZ2xvYmFsLmRhdCBmaWxlIGludG8gb3V0IGZpbGUuICBJZiAiLSIgaXMg dXNlZCBhcyBvdXRmaWxlLAorICogdGhlbiBwcmludCBjb21tYW5kcyB0byB0aGUgc3Rkb3V0 LgorICovCitzdGF0aWMgdm9pZAorY29weV9vcl9wcmludF9nbG9iYWxfZmlsZShjb25zdCBj aGFyICpvdXRmaWxlLCBGSUxFICpwZmlsZSkKK3sKKwljaGFyCQlvdXRfZmlsZV9wYXRoW01B WFBHUEFUSF07CisJRklMRQkgICAqT1BGOworCWludAkJCWM7CisKKwkvKiAiLSIgaXMgdXNl ZCBmb3Igc3Rkb3V0LiAqLworCWlmIChzdHJjbXAob3V0ZmlsZSwgIi0iKSA9PSAwKQorCQlP UEYgPSBzdGRvdXQ7CisJZWxzZQorCXsKKwkJc25wcmludGYob3V0X2ZpbGVfcGF0aCwgTUFY UEdQQVRILCAiJXMiLCBvdXRmaWxlKTsKKwkJT1BGID0gZm9wZW4ob3V0X2ZpbGVfcGF0aCwg UEdfQklOQVJZX1cpOworCisJCWlmIChPUEYgPT0gTlVMTCkKKwkJeworCQkJZmNsb3NlKHBm aWxlKTsKKwkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBmaWxlOiBcIiVzXCIiLCBvdXRm aWxlKTsKKwkJfQorCX0KKworCS8qIEFwcGVuZCBnbG9iYWwuZGF0IGludG8gb3V0IGZpbGUg b3IgcHJpbnQgdG8gdGhlIHN0ZG91dC4gKi8KKwl3aGlsZSAoKGMgPSBmZ2V0YyhwZmlsZSkp ICE9IEVPRikKKwkJZnB1dGMoYywgT1BGKTsKKworCWZjbG9zZShwZmlsZSk7CisKKwkvKiBD bG9zZSBvdXQgZmlsZS4gKi8KKwlpZiAoc3RyY21wKG91dGZpbGUsICItIikgIT0gMCkKKwkJ ZmNsb3NlKE9QRik7Cit9CisKKy8qCisgKiBxdW90ZV9saXRlcmFsX2ludGVybmFsCisgKi8K K3N0YXRpYyBzaXplX3QKK3F1b3RlX2xpdGVyYWxfaW50ZXJuYWwoY2hhciAqZHN0LCBjb25z dCBjaGFyICpzcmMsIHNpemVfdCBsZW4pCit7CisJY29uc3QgY2hhciAqczsKKwljaGFyCSAg ICpzYXZlZHN0ID0gZHN0OworCisJZm9yIChzID0gc3JjOyBzIDwgc3JjICsgbGVuOyBzKysp CisJeworCQlpZiAoKnMgPT0gJ1xcJykKKwkJeworCQkJKmRzdCsrID0gRVNDQVBFX1NUUklO R19TWU5UQVg7CisJCQlicmVhazsKKwkJfQorCX0KKworCSpkc3QrKyA9ICdcJyc7CisJd2hp bGUgKGxlbi0tID4gMCkKKwl7CisJCWlmIChTUUxfU1RSX0RPVUJMRSgqc3JjLCB0cnVlKSkK KwkJCSpkc3QrKyA9ICpzcmM7CisJCSpkc3QrKyA9ICpzcmMrKzsKKwl9CisJKmRzdCsrID0g J1wnJzsKKworCXJldHVybiBkc3QgLSBzYXZlZHN0OworfQorCisvKgorICogcXVvdGVfbGl0 ZXJhbF9jc3RyCisgKgorICoJICByZXR1cm5zIGEgcHJvcGVybHkgcXVvdGVkIGxpdGVyYWwK KyAqIGNvcGllZCBmcm9tIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9xdW90ZS5jCisgKi8KK3N0 YXRpYyBjaGFyICoKK3F1b3RlX2xpdGVyYWxfY3N0cihjb25zdCBjaGFyICpyYXdzdHIpCit7 CisJY2hhcgkgICAqcmVzdWx0OworCWludAkJCWxlbjsKKwlpbnQJCQluZXdsZW47CisKKwls ZW4gPSBzdHJsZW4ocmF3c3RyKTsKKworCS8qIFdlIG1ha2UgYSB3b3JzdC1jYXNlIHJlc3Vs dCBhcmVhOyB3YXN0aW5nIGEgbGl0dGxlIHNwYWNlIGlzIE9LICovCisJcmVzdWx0ID0gcGdf bWFsbG9jKGxlbiAqIDIgKyAzICsgMSk7CisKKwluZXdsZW4gPSBxdW90ZV9saXRlcmFsX2lu dGVybmFsKHJlc3VsdCwgcmF3c3RyLCBsZW4pOworCXJlc3VsdFtuZXdsZW5dID0gJ1wwJzsK KworCXJldHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvdC8w MDFfYmFzaWMucGwgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDFfYmFzaWMucGwKb2xkIG1vZGUg MTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAzN2Q4OTNkNWU2YS4uMGJiY2RiZTg0YTcK LS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAxX2Jhc2ljLnBsCisrKyBiL3NyYy9iaW4vcGdf ZHVtcC90LzAwMV9iYXNpYy5wbApAQCAtMjM3LDYgKzIzNywxMSBAQCBjb21tYW5kX2ZhaWxz X2xpa2UoCiAJJ3BnX3Jlc3RvcmU6IG9wdGlvbnMgLUNcLy0tY3JlYXRlIGFuZCAtMVwvLS1z aW5nbGUtdHJhbnNhY3Rpb24gY2Fubm90IGJlIHVzZWQgdG9nZXRoZXInCiApOwogCitjb21t YW5kX2ZhaWxzX2xpa2UoCisJWyAncGdfcmVzdG9yZScsICctLWV4Y2x1ZGUtZGF0YWJhc2U9 Zm9vJywgJy0tZ2xvYmFscy1vbmx5JywgJy1kJywgJ3h4eCcgXSwKKwlxci9cUXBnX3Jlc3Rv cmU6IGVycm9yOiBvcHRpb24gLS1leGNsdWRlLWRhdGFiYXNlIGNhbm5vdCBiZSB1c2VkIHRv Z2V0aGVyIHdpdGggLWdcLy0tZ2xvYmFscy1vbmx5XEUvLAorCSdwZ19yZXN0b3JlOiBvcHRp b24gLS1leGNsdWRlLWRhdGFiYXNlIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggLWcv LS1nbG9iYWxzLW9ubHknKTsKKwogIyBhbHNvIGZhaWxzIGZvciAtciBhbmQgLXQsIGJ1dCBp dCBzZWVtcyBwb2ludGxlc3MgdG8gYWRkIG1vcmUgdGVzdHMgZm9yIHRob3NlLgogY29tbWFu ZF9mYWlsc19saWtlKAogCVsgJ3BnX2R1bXBhbGwnLCAnLS1leGNsdWRlLWRhdGFiYXNlPWZv bycsICctLWdsb2JhbHMtb25seScgXSwKQEAgLTI0NCw0ICsyNDksOCBAQCBjb21tYW5kX2Zh aWxzX2xpa2UoCiAJJ3BnX2R1bXBhbGw6IG9wdGlvbiAtLWV4Y2x1ZGUtZGF0YWJhc2UgY2Fu bm90IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCAtZy8tLWdsb2JhbHMtb25seScKICk7CiAKK2Nv bW1hbmRfZmFpbHNfbGlrZSgKKwlbICdwZ19kdW1wYWxsJywgJy0tZm9ybWF0JywgJ3gnIF0s CisJcXIvXFFwZ19kdW1wYWxsOiBlcnJvcjogdW5yZWNvZ25pemVkIGFyY2hpdmUgZm9ybWF0 ICJ4IjtcRS8sCisJJ3BnX2R1bXBhbGw6IHVucmVjb2duaXplZCBhcmNoaXZlIGZvcm1hdCcp OwogZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGI2 NmNlY2Q4Nzk5Li45NWVjOGZiYjE0MSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK QEAgLTI3MzIsNiArMjczMiw4IEBAIFNodXRkb3duTW9kZQogU2lnblRTVmVjdG9yCiBTaW1w bGVBY3Rpb25MaXN0CiBTaW1wbGVBY3Rpb25MaXN0Q2VsbAorU2ltcGxlRGF0YWJhc2VPaWRM aXN0CitTaW1wbGVEYXRhYmFzZU9pZExpc3RDZWxsCiBTaW1wbGVFY29udGV4dFN0YWNrRW50 cnkKIFNpbXBsZU9pZExpc3QKIFNpbXBsZU9pZExpc3RDZWxsCi0tIAoyLjM0LjEKCg== --------------WYy7qAr00NPPVmPn6v3moLzs--