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.96) (envelope-from ) id 1vyFe1-00HZ97-0k for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Mar 2026 20:50:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vyFdz-001Mep-2K for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Mar 2026 20:50:04 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vyFdz-001Meg-0g for pgsql-hackers@lists.postgresql.org; Thu, 05 Mar 2026 20:50:03 +0000 Received: from mail-qv1-xf44.google.com ([2607:f8b0:4864:20::f44]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vyFdw-000000014TB-0GYa for pgsql-hackers@postgresql.org; Thu, 05 Mar 2026 20:50:03 +0000 Received: by mail-qv1-xf44.google.com with SMTP id 6a1803df08f44-89a1347051aso52618496d6.2 for ; Thu, 05 Mar 2026 12:49:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dunslane-net.20230601.gappssmtp.com; s=20230601; t=1772743798; x=1773348598; darn=postgresql.org; h=in-reply-to:autocrypt:content-language:from:references:cc:to :subject:user-agent:mime-version:date:message-id:from:to:cc:subject :date:message-id:reply-to; bh=PxT5qgnZfC+vwLvB8Opr4vkitjO5T3d/v1r6XHSklJ8=; b=mGT1QowEEiclKr3+J9JMxunRU+5ien1ZEUNzmqvx3wa7QawnlKokWM6fIG9OVTy7py nH4+d/BLwxg38oU38Jg+W7+/0lRzMwV5w/aE9Vf07XGjKEyBLntSgz5PKBoB4urSOGGO 9nvC1RMrHTzaVeMEOrZL684DfDiA1M9H0ot85bdkm8cA7N13Ygfr0LeI1BuiaGY+4yRR IM+eyljr/hCoDhjmcOZmulX7BIfofwt0UwV8xb/ibWgXLLUAbF6crfVt56+8LwviIpdv qS8+0WRtIlvlrz4KgDsVnSdhYClMBKx3hB2t0VD3PrA65Yb+8L0kK3DaOrc6NEM7Vdds LKjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772743798; x=1773348598; h=in-reply-to:autocrypt:content-language:from:references:cc:to :subject:user-agent:mime-version:date:message-id:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=PxT5qgnZfC+vwLvB8Opr4vkitjO5T3d/v1r6XHSklJ8=; b=AdfJaBndV/k9rCHALPDXfrU5TXiJpk/sZ0+v5SoFZIkOBAcoC78IPsQuAi1PdmfjWD RHE8Lr+Hx5HR86SEFGWqvFIIK2ahH1GamM0TxHfgwX5rwNSdCLPMz9O9V2DJewX5Ea53 ZY6ZkpTfyXg0oZKT22YpHvWE/gabIT2vjDcch00uLN52HdYWWQFKDXjYXQKEN8SLe7Qt c49B3gXQW/0262gbTQ8d/Vtj69bM7V7IlNKkTbStz0rqZv3RNmibERvkkuGg4kDsN39W 6B5SLVgXBxbn/2UgggVEXxKtg2Pkshi7NXnxB4JFNbUsrjcRl+jNWFSMgB2Yptf1Salf 3wqA== X-Forwarded-Encrypted: i=1; AJvYcCXQhRD2/cHJVtBbeF9H+lTtcyJoDfvaUhJN909nXiHaOfvihLS2A0e69gW0Dv23YZ0/+aShuRLCC6AQrse5@postgresql.org X-Gm-Message-State: AOJu0Yzqan08W+ngq/ByyvELye/fGAmP2OSDSVNwJjWElUiA+/hC2lRm MLuYX0GRAhamve4zT5CyEbA++cbypB8/DyWmUPuJvYlr1XxilIgwCJlZS7cTDJhW66E= X-Gm-Gg: ATEYQzymfHH39EhqRKsXkjEYR/4PAvXrSZUPL6mkCd8rxd13roQOSaM91d7zQN+Bndj ReyjkN10S3DdOjIj0Mz5ZGZz6IjD08pWYk1L3DRgFjLrgwEhxSv6jPtwFKPfJAT+PT4B5f/h+ai t7vZsRce++Q80buMOSEzNyRThR2kfVdYG/drtjh6tS8ol1DthkDTh0Ns3+evNAK2/5rIjauAyut 4xsQthjhwBzx2GCvUh2EN+20McPy2g13l9Iuq1wuwudJbRiXSoq0uxbb+DNmNMcg63D4tVjAB7d 89gNl+R9TC2Y8NamlRSEcDGDRyWRHfLuFGrQQEQCvWBcKmdCEQzvZYXEvTmbmT+lb71lmZxNo7n GsS2FBASn8jMUe02QLZaXfXnkius+16kPP7xZYX6n2W2bt9PKrYyIQkPlryiuwEQUU+yM4QIS5V Yo5d3t8HfWRKVSaNpSHDySuGgm0kf3HQ== X-Received: by 2002:a05:6214:3015:b0:89a:f0b:dc20 with SMTP id 6a1803df08f44-89a19ac9207mr98367576d6.8.1772743797786; Thu, 05 Mar 2026 12:49:57 -0800 (PST) Received: from ?IPV6:2605:a601:a6b0:500::1cb? ([2605:a601:a6b0:500::1cb]) by smtp.googlemail.com with ESMTPSA id 6a1803df08f44-899ee519773sm121767926d6.47.2026.03.05.12.49.56 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 05 Mar 2026 12:49:57 -0800 (PST) Content-Type: multipart/mixed; boundary="------------7Nf0ajVYMcC3OnzF2myr7D0R" Message-ID: <8154f8e2-7d9c-442f-a7cb-a5caf38f6a12@dunslane.net> Date: Thu, 5 Mar 2026 15:49:55 -0500 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Emitting JSON to file using COPY TO To: Joe Conway , jian he , Junwang Zhao Cc: Florents Tselai , "Andrey M. Borodin" , Dean Rasheed , Daniel Verite , Davin Shearer , PostgreSQL-development References: <74d3b4e2-d201-489d-9b9a-1a6d0eb492a6@dunslane.net> <6cbbf7f3-da4a-4201-98a6-4347a3c35db0@joeconway.com> From: Andrew Dunstan Content-Language: en-US Autocrypt: addr=andrew@dunslane.net; keydata= xsBNBE7KWFkBCAClridxur2AIc7eW2AR7izbfp3EnNefie2HbLF0izW5Ik5UjX2HBXBx4syI gY6b0ugohXrr274+baoAlvSbq6cAoQuEVrk5IZFzt20b1Xkx65FwGSEj526yiKLocqkJceSq Xr9xcA5SGY+FZv441chh5SU92v4q6z+6LPpoHOh97ptAVXZYNTtU0LevyvD5lja0TzbvJm6C eFXitJfnm1pLEr0DGJCR/iUOl/N62Kh4855zZC7NHIjQHPOvV5Stz/l5ilDhvGVk+xkXFPys SjZoUr1rXhYLpiyi5sR0X9FHXT0KnGuz1F5ERO7ZTLSSQ6fJwPj6gOk9K+vvoKvoeql5ABEB AAHNJEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PsLAlwQTAQgAQQIbAwIX gAIZAQULCQgHAwUVCgkICwUWAgMBAAIeBRYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNGd BQkdEO8nAAoJEJn6f8tZ/DuBq74H/jkTR4Zi3stbw+xC7v2u3QozssK7MYPL2AsVfh7OealS h182fiWXpfvmmAB7WUHbhk9GC2RAOnHI/2d2jgKaMLAHsGYOT0YopTVIwRY43fCw/mK67yxc wmDcX+zyKfLaivNbf5A7QPLNwda98bEAMSJ8Sn652Uc6cA8t3uKGsVzbRBQOoYzjgvBCfSrE 9ql3PDNg0l4BfAqabd2f70ZUm9VAMEPrgv/v2xI7M2XiL4g5BVmqLCOwxLM8RMCotCuoweUr VO43DeBCIDwLxotMJKvGWDjBzQYlU1NPUAtNcz/gN9ITUe1VUGjyvGj4u1lxBOcQQUw7l1+T 5moZ4iZxXzvOwE0ETspYWQEIANGc4zQULOxhbqO2dyD51YhqCNRmm9oKWaqf+wmW4tpDe/VV cxAnNizd4LWCHfzpb5cHAtGkOPePMfzWVf6nvdF7d3eglbtf59+zG7O7llV0xSSoFiieQBsr GvqDInXYX/4mRRXMtyhM353/tixC9RWLs1oofyYmCPPXXY7h9R7en3B8BoVrRFcdzlIY/NFN hFGW/9dkEiGjgna2Rk6e15kln4ZvFBWUg23p93w/pqXcxY6+k/8TEk+C4R+M6w7o2PLGOjdZ +kPiUcw5H85zf/yZJwQXzisXaNduwWB6Vads9YC9dj6kPR1c4VGRqAaYL++LAEOqrlvm2Tvq QqZRtnEAEQEAAcLAfAQYAQgAJgIbDBYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNI2BQkd EODdAAoJEJn6f8tZ/DuBfw0IAKTsfD40teP/pp+bsLLMSxPXUYrrprTj7WFB5v61p6dkpSr/ qXmMlyahdxQFaPmfVgVirB1Vk/kHiWNnnGjfUV9nB2Zg9LI0Xb9/ts3LsUiRWXzG3tkMY6XL vsVOxW4XFRND9l2q+WW93aZ1DZl+fqWfYgMvsusFRhmGFOKTRfKPta2Pkv+AhA24N4+PrR5p bU4k2MO8PAGiK8eaYKGFG1bHKuAvoDoF7WXJ3FHxuWqLnKEt4dfOLm5pAe3zq1Lt6q8azT9i QWGpSAK5vQUWQHBHpiDjdPeqKZ6HiAXIIKfSmb+jrvXBqoP+D6/K7rUjG2aXiRtTIAXms9sm VRu7cmw= In-Reply-To: <6cbbf7f3-da4a-4201-98a6-4347a3c35db0@joeconway.com> 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. --------------7Nf0ajVYMcC3OnzF2myr7D0R Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit > On 2026-03-05 Th 1:06 PM, Joe Conway wrote: >> >> >> Then I reworked the way this works. In order to support column lists >> with JSON output, we need to deal with individual columns instead of >> whole records. This involved quite a number of changes, as can be >> seen in patch 4. This involved exporting a new small function from >> json.c. >> >> The result is a lot cleaner, I believe, and in my benchmarking is >> faster by a factor of almost 2. > > Andrew, > > I don't see the actual patches. Did I miss it somewhere? Nope. Bad hair day apparently. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com --------------7Nf0ajVYMcC3OnzF2myr7D0R Content-Type: text/x-patch; charset=UTF-8; name="v25-0001-introduce-CopyFormat-refactor-CopyFormatOptions.patch" Content-Disposition: attachment; filename*0="v25-0001-introduce-CopyFormat-refactor-CopyFormatOptions.pat"; filename*1="ch" Content-Transfer-Encoding: base64 RnJvbSBiNTBjMjZlOWUyYTc2MDAxMzE1ZmIzZTUwMDBmMmQzM2UyNTRjNzQxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjEgSmFuIDIwMjYgMTg6Mzg6MjQgKzA4MDAKU3ViamVjdDog W1BBVENIIHYyNSAxLzRdIGludHJvZHVjZSBDb3B5Rm9ybWF0IHJlZmFjdG9yIENvcHlGb3Jt YXRPcHRpb25zCgpDdXJyZW50bHksIENPUFkgY29tbWFuZCBmb3JtYXQgaXMgZGV0ZXJtaW5l ZCBieSB0d28gYm9vbGVhbnMgKGJpbmFyeSwgY3N2X21vZGUpCmZpZWxkcyBpbiBDb3B5Rm9y bWF0T3B0aW9ucyBUaGlzIGFwcHJvYWNoLCB3aGlsZSBmdW5jdGlvbmFsLCBpc24ndCBpZGVh bCBmb3IKZnV0dXJlIG90aGVyIGltcGxlbWVudCBvdGhlciBmb3JtYXQuCgpUbyBzaW1wbGlm eSBhZGRpbmcgbmV3IGZvcm1hdHMsIHdlJ3ZlIGludHJvZHVjZWQgYW4gZW51bSBDb3B5Rm9y bWF0LiBUaGlzIG1ha2VzCnRoZSBjb2RlIGNsZWFuZXIgYW5kIG1vcmUgbWFpbnRhaW5hYmxl LCBhbGxvd2luZyBmb3IgZWFzaWVyIGludGVncmF0aW9uIG9mCmFkZGl0aW9uYWwgZm9ybWF0 cyBkb3duIHRoZSBsaW5lLgoKVGhlIENvcHlGb3JtYXQgZW51bSB3YXMgb3JpZ2luYWxseSBj b250cmlidXRlZCBieSBKb2VsIEphY29ic29uIDxqb2VsQGNvbXBpbGVyLm9yZz4sCmxhdGVy IHJlZmFjdG9yZWQgYnkgSmlhbiBIZSB0byBhZGRyZXNzIHZhcmlvdXMgaXNzdWVzLgoKZGlz Y3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUx2ZlVrQnhUWXk1dVdQRlZ3cGtfN2lp MnpnVDA3dDNkLXlSX2N5NHNmcnJMVSUzRGtjZyU0MG1haWwuZ21haWwuY29tCmRpc2N1c3Np b246IGh0dHBzOi8vcG9zdGdyLmVzL20vNmEwNDYyOGQtMGQ1My00MWQ5LTllMzUtNWE4ZGMz MDJjMzRjQGpvZWNvbndheS5jb20KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMg ICAgICAgICAgfCA1MCArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9jb3B5ZnJvbS5jICAgICAgfCAgNiArKy0tCiBzcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5ZnJvbXBhcnNlLmMgfCAgNyArKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9j b3B5dG8uYyAgICAgICAgfCAgOCArKy0tLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5o ICAgICAgICAgIHwgMTMgKysrKysrLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0ICAgICB8ICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgMzYg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCmluZGV4IDYzYjg2ODAyYmEyLi4yZjQ2 YmU1MTZmMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwpAQCAtNTc2LDYgKzU3Niw4IEBAIFByb2Nl c3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCW9wdHNfb3V0ID0gcGFsbG9j MF9vYmplY3QoQ29weUZvcm1hdE9wdGlvbnMpOwogCiAJb3B0c19vdXQtPmZpbGVfZW5jb2Rp bmcgPSAtMTsKKwkvKiBkZWZhdWx0IGZvcm1hdCAqLworCW9wdHNfb3V0LT5mb3JtYXQgPSBD T1BZX0ZPUk1BVF9URVhUOwogCiAJLyogRXh0cmFjdCBvcHRpb25zIGZyb20gdGhlIHN0YXRl bWVudCBub2RlIHRyZWUgKi8KIAlmb3JlYWNoKG9wdGlvbiwgb3B0aW9ucykKQEAgLTU5MCwx MSArNTkyLDExIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CiAJCQlmb3JtYXRf c3BlY2lmaWVkID0gdHJ1ZTsKIAkJCWlmIChzdHJjbXAoZm10LCAidGV4dCIpID09IDApCi0J CQkJIC8qIGRlZmF1bHQgZm9ybWF0ICovIDsKKwkJCQlvcHRzX291dC0+Zm9ybWF0ID0gQ09Q WV9GT1JNQVRfVEVYVDsKIAkJCWVsc2UgaWYgKHN0cmNtcChmbXQsICJjc3YiKSA9PSAwKQot CQkJCW9wdHNfb3V0LT5jc3ZfbW9kZSA9IHRydWU7CisJCQkJb3B0c19vdXQtPmZvcm1hdCA9 IENPUFlfRk9STUFUX0NTVjsKIAkJCWVsc2UgaWYgKHN0cmNtcChmbXQsICJiaW5hcnkiKSA9 PSAwKQotCQkJCW9wdHNfb3V0LT5iaW5hcnkgPSB0cnVlOworCQkJCW9wdHNfb3V0LT5mb3Jt YXQgPSBDT1BZX0ZPUk1BVF9CSU5BUlk7CiAJCQllbHNlCiAJCQkJZXJlcG9ydChFUlJPUiwK IAkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLApAQCAt NzU0LDMxICs3NTYsMzEgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIAkgKiBDaGVjayBmb3IgaW5jb21wYXRpYmxlIG9wdGlvbnMgKG11c3QgZG8gdGhlc2Ug dGhyZWUgYmVmb3JlIGluc2VydGluZwogCSAqIGRlZmF1bHRzKQogCSAqLwotCWlmIChvcHRz X291dC0+YmluYXJ5ICYmIG9wdHNfb3V0LT5kZWxpbSkKKwlpZiAob3B0c19vdXQtPmZvcm1h dCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgJiYgb3B0c19vdXQtPmRlbGltKQogCQllcmVwb3J0 KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJLyotIHRy YW5zbGF0b3I6ICVzIGlzIHRoZSBuYW1lIG9mIGEgQ09QWSBvcHRpb24sIGUuZy4gT05fRVJS T1IgKi8KIAkJCQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIs ICJERUxJTUlURVIiKSkpOwogCi0JaWYgKG9wdHNfb3V0LT5iaW5hcnkgJiYgb3B0c19vdXQt Pm51bGxfcHJpbnQpCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklO QVJZICYmIG9wdHNfb3V0LT5udWxsX3ByaW50KQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShl cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJjYW5ub3Qgc3Bl Y2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJOVUxMIikpKTsKIAotCWlmIChvcHRzX291dC0+ YmluYXJ5ICYmIG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50KQorCWlmIChvcHRzX291dC0+Zm9y bWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+ZGVmYXVsdF9wcmludCkK IAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiks CiAJCQkJIGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiREVG QVVMVCIpKSk7CiAKIAkvKiBTZXQgZGVmYXVsdHMgZm9yIG9taXR0ZWQgb3B0aW9ucyAqLwog CWlmICghb3B0c19vdXQtPmRlbGltKQotCQlvcHRzX291dC0+ZGVsaW0gPSBvcHRzX291dC0+ Y3N2X21vZGUgPyAiLCIgOiAiXHQiOworCQlvcHRzX291dC0+ZGVsaW0gPSAob3B0c19vdXQt PmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YpID8gIiwiIDogIlx0IjsKIAogCWlmICghb3B0 c19vdXQtPm51bGxfcHJpbnQpCi0JCW9wdHNfb3V0LT5udWxsX3ByaW50ID0gb3B0c19vdXQt PmNzdl9tb2RlID8gIiIgOiAiXFxOIjsKKwkJb3B0c19vdXQtPm51bGxfcHJpbnQgPSAob3B0 c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YpID8gIiIgOiAiXFxOIjsKIAlvcHRz X291dC0+bnVsbF9wcmludF9sZW4gPSBzdHJsZW4ob3B0c19vdXQtPm51bGxfcHJpbnQpOwog Ci0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBD T1BZX0ZPUk1BVF9DU1YpCiAJewogCQlpZiAoIW9wdHNfb3V0LT5xdW90ZSkKIAkJCW9wdHNf b3V0LT5xdW90ZSA9ICJcIiI7CkBAIC04MjYsNyArODI4LDcgQEAgUHJvY2Vzc0NvcHlPcHRp b25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkgKiBmdXR1cmUtcHJvb2ZpbmcuICBMaWtld2lz ZSB3ZSBkaXNhbGxvdyBhbGwgZGlnaXRzIHRob3VnaCBvbmx5IG9jdGFsCiAJICogZGlnaXRz IGFyZSBhY3R1YWxseSBkYW5nZXJvdXMuCiAJICovCi0JaWYgKCFvcHRzX291dC0+Y3N2X21v ZGUgJiYKKwlpZiAob3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1YgJiYKIAkJ c3RyY2hyKCJcXC5hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkiLAogCQkJ ICAgb3B0c19vdXQtPmRlbGltWzBdKSAhPSBOVUxMKQogCQllcmVwb3J0KEVSUk9SLApAQCAt ODM0LDQzICs4MzYsNDMgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIAkJCQkgZXJybXNnKCJDT1BZIGRlbGltaXRlciBjYW5ub3QgYmUgXCIlc1wiIiwgb3B0 c19vdXQtPmRlbGltKSkpOwogCiAJLyogQ2hlY2sgaGVhZGVyICovCi0JaWYgKG9wdHNfb3V0 LT5iaW5hcnkgJiYgb3B0c19vdXQtPmhlYWRlcl9saW5lICE9IENPUFlfSEVBREVSX0ZBTFNF KQorCWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRz X291dC0+aGVhZGVyX2xpbmUgIT0gQ09QWV9IRUFERVJfRkFMU0UpCiAJCWVyZXBvcnQoRVJS T1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkv Ki0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBP Tl9FUlJPUiAqLwogCQkJCSBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBt b2RlIiwgIkhFQURFUiIpKSk7CiAKIAkvKiBDaGVjayBxdW90ZSAqLwotCWlmICghb3B0c19v dXQtPmNzdl9tb2RlICYmIG9wdHNfb3V0LT5xdW90ZSAhPSBOVUxMKQorCWlmIChvcHRzX291 dC0+Zm9ybWF0ICE9IENPUFlfRk9STUFUX0NTViAmJiBvcHRzX291dC0+cXVvdGUgIT0gTlVM TCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9U X1NVUFBPUlRFRCksCiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENP UFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCiAJCQkJIGVycm1zZygiQ09QWSAlcyByZXF1 aXJlcyBDU1YgbW9kZSIsICJRVU9URSIpKSk7CiAKLQlpZiAob3B0c19vdXQtPmNzdl9tb2Rl ICYmIHN0cmxlbihvcHRzX291dC0+cXVvdGUpICE9IDEpCisJaWYgKG9wdHNfb3V0LT5mb3Jt YXQgPT0gQ09QWV9GT1JNQVRfQ1NWICYmIHN0cmxlbihvcHRzX291dC0+cXVvdGUpICE9IDEp CiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9T VVBQT1JURUQpLAogCQkJCSBlcnJtc2coIkNPUFkgcXVvdGUgbXVzdCBiZSBhIHNpbmdsZSBv bmUtYnl0ZSBjaGFyYWN0ZXIiKSkpOwogCi0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSAmJiBv cHRzX291dC0+ZGVsaW1bMF0gPT0gb3B0c19vdXQtPnF1b3RlWzBdKQorCWlmIChvcHRzX291 dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0NTViAmJiBvcHRzX291dC0+ZGVsaW1bMF0gPT0g b3B0c19vdXQtPnF1b3RlWzBdKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCSBlcnJtc2coIkNPUFkgZGVs aW1pdGVyIGFuZCBxdW90ZSBtdXN0IGJlIGRpZmZlcmVudCIpKSk7CiAKIAkvKiBDaGVjayBl c2NhcGUgKi8KLQlpZiAoIW9wdHNfb3V0LT5jc3ZfbW9kZSAmJiBvcHRzX291dC0+ZXNjYXBl ICE9IE5VTEwpCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYm IG9wdHNfb3V0LT5lc2NhcGUgIT0gTlVMTCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCS8qLSB0cmFuc2xhdG9y OiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCiAJ CQkJIGVycm1zZygiQ09QWSAlcyByZXF1aXJlcyBDU1YgbW9kZSIsICJFU0NBUEUiKSkpOwog Ci0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSAmJiBzdHJsZW4ob3B0c19vdXQtPmVzY2FwZSkg IT0gMSkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YgJiYgc3Ry bGVuKG9wdHNfb3V0LT5lc2NhcGUpICE9IDEpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2coIkNP UFkgZXNjYXBlIG11c3QgYmUgYSBzaW5nbGUgb25lLWJ5dGUgY2hhcmFjdGVyIikpKTsKIAog CS8qIENoZWNrIGZvcmNlX3F1b3RlICovCi0JaWYgKCFvcHRzX291dC0+Y3N2X21vZGUgJiYg KG9wdHNfb3V0LT5mb3JjZV9xdW90ZSB8fCBvcHRzX291dC0+Zm9yY2VfcXVvdGVfYWxsKSkK KwlpZiAob3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1YgJiYgKG9wdHNfb3V0 LT5mb3JjZV9xdW90ZSB8fCBvcHRzX291dC0+Zm9yY2VfcXVvdGVfYWxsKSkKIAkJZXJlcG9y dChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBl LmcuIE9OX0VSUk9SICovCkBAIC04ODQsOCArODg2LDggQEAgUHJvY2Vzc0NvcHlPcHRpb25z KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCSJDT1BZIEZST00iKSkpOwogCiAJLyogQ2hl Y2sgZm9yY2Vfbm90bnVsbCAqLwotCWlmICghb3B0c19vdXQtPmNzdl9tb2RlICYmIChvcHRz X291dC0+Zm9yY2Vfbm90bnVsbCAhPSBOSUwgfHwKLQkJCQkJCQkJb3B0c19vdXQtPmZvcmNl X25vdG51bGxfYWxsKSkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9D U1YgJiYgKG9wdHNfb3V0LT5mb3JjZV9ub3RudWxsICE9IE5JTCB8fAorCQkJCQkJCQkJCQkJ b3B0c19vdXQtPmZvcmNlX25vdG51bGxfYWxsKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQko ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCS8qLSB0cmFuc2xh dG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICov CkBAIC05MDAsOCArOTAyLDggQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBz dGF0ZSwKIAkJCQkJCSJDT1BZIFRPIikpKTsKIAogCS8qIENoZWNrIGZvcmNlX251bGwgKi8K LQlpZiAoIW9wdHNfb3V0LT5jc3ZfbW9kZSAmJiAob3B0c19vdXQtPmZvcmNlX251bGwgIT0g TklMIHx8Ci0JCQkJCQkJCW9wdHNfb3V0LT5mb3JjZV9udWxsX2FsbCkpCisJaWYgKG9wdHNf b3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYmIChvcHRzX291dC0+Zm9yY2VfbnVs bCAhPSBOSUwgfHwKKwkJCQkJCQkJCQkJCW9wdHNfb3V0LT5mb3JjZV9udWxsX2FsbCkpCiAJ CWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAogCQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9w dGlvbiwgZS5nLiBPTl9FUlJPUiAqLwpAQCAtOTI1LDcgKzkyNyw3IEBAIFByb2Nlc3NDb3B5 T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkiTlVMTCIpKSk7CiAKIAkvKiBE b24ndCBhbGxvdyB0aGUgQ1NWIHF1b3RlIGNoYXIgdG8gYXBwZWFyIGluIHRoZSBudWxsIHN0 cmluZy4gKi8KLQlpZiAob3B0c19vdXQtPmNzdl9tb2RlICYmCisJaWYgKG9wdHNfb3V0LT5m b3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWICYmCiAJCXN0cmNocihvcHRzX291dC0+bnVsbF9w cmludCwgb3B0c19vdXQtPnF1b3RlWzBdKSAhPSBOVUxMKQogCQllcmVwb3J0KEVSUk9SLAog CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLApAQCAtOTYx LDcgKzk2Myw3IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CQkJCQkJIkRFRkFVTFQiKSkpOwogCiAJCS8qIERvbid0IGFsbG93IHRoZSBDU1YgcXVvdGUg Y2hhciB0byBhcHBlYXIgaW4gdGhlIGRlZmF1bHQgc3RyaW5nLiAqLwotCQlpZiAob3B0c19v dXQtPmNzdl9tb2RlICYmCisJCWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFU X0NTViAmJgogCQkJc3RyY2hyKG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50LCBvcHRzX291dC0+ cXVvdGVbMF0pICE9IE5VTEwpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCkBAIC05NzgsNyArOTgwLDcgQEAgUHJv Y2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJIGVycm1zZygiTlVM TCBzcGVjaWZpY2F0aW9uIGFuZCBERUZBVUxUIHNwZWNpZmljYXRpb24gY2Fubm90IGJlIHRo ZSBzYW1lIikpKTsKIAl9CiAJLyogQ2hlY2sgb25fZXJyb3IgKi8KLQlpZiAob3B0c19vdXQt PmJpbmFyeSAmJiBvcHRzX291dC0+b25fZXJyb3IgIT0gQ09QWV9PTl9FUlJPUl9TVE9QKQor CWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291 dC0+b25fZXJyb3IgIT0gQ09QWV9PTl9FUlJPUl9TVE9QKQogCQllcmVwb3J0KEVSUk9SLAog CQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJvbmx5 IE9OX0VSUk9SIFNUT1AgaXMgYWxsb3dlZCBpbiBCSU5BUlkgbW9kZSIpKSk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weWZyb20uYwppbmRleCAyZjQyZjU1ZTIyOS4uNGQ5Mjc0MTAxNTkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weWZyb20uYwpAQCAtMTU2LDkgKzE1Niw5IEBAIHN0YXRpYyBjb25z dCBDb3B5RnJvbVJvdXRpbmUgQ29weUZyb21Sb3V0aW5lQmluYXJ5ID0gewogc3RhdGljIGNv bnN0IENvcHlGcm9tUm91dGluZSAqCiBDb3B5RnJvbUdldFJvdXRpbmUoY29uc3QgQ29weUZv cm1hdE9wdGlvbnMgKm9wdHMpCiB7Ci0JaWYgKG9wdHMtPmNzdl9tb2RlKQorCWlmIChvcHRz LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWKQogCQlyZXR1cm4gJkNvcHlGcm9tUm91dGlu ZUNTVjsKLQllbHNlIGlmIChvcHRzLT5iaW5hcnkpCisJZWxzZSBpZiAob3B0cy0+Zm9ybWF0 ID09IENPUFlfRk9STUFUX0JJTkFSWSkKIAkJcmV0dXJuICZDb3B5RnJvbVJvdXRpbmVCaW5h cnk7CiAKIAkvKiBkZWZhdWx0IGlzIHRleHQgKi8KQEAgLTI2Miw3ICsyNjIsNyBAQCBDb3B5 RnJvbUVycm9yQ2FsbGJhY2sodm9pZCAqYXJnKQogCQkJCSAgIGNzdGF0ZS0+Y3VyX3JlbG5h bWUpOwogCQlyZXR1cm47CiAJfQotCWlmIChjc3RhdGUtPm9wdHMuYmluYXJ5KQorCWlmIChj c3RhdGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSkKIAl7CiAJCS8qIGNh bid0IHVzZWZ1bGx5IGRpc3BsYXkgdGhlIGRhdGEgKi8KIAkJaWYgKGNzdGF0ZS0+Y3VyX2F0 dG5hbWUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNl LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKaW5kZXggZmJkMTMz NTNlZmMuLmMzNjY4NzRiZDk1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9j b3B5ZnJvbXBhcnNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJz ZS5jCkBAIC0xNzIsNyArMTcyLDcgQEAgUmVjZWl2ZUNvcHlCZWdpbihDb3B5RnJvbVN0YXRl IGNzdGF0ZSkKIHsKIAlTdHJpbmdJbmZvRGF0YSBidWY7CiAJaW50CQkJbmF0dHMgPSBsaXN0 X2xlbmd0aChjc3RhdGUtPmF0dG51bWxpc3QpOwotCWludDE2CQlmb3JtYXQgPSAoY3N0YXRl LT5vcHRzLmJpbmFyeSA/IDEgOiAwKTsKKwlpbnQxNgkJZm9ybWF0ID0gKGNzdGF0ZS0+b3B0 cy5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZID8gMSA6IDApOwogCWludAkJCWk7CiAK IAlwcV9iZWdpbm1lc3NhZ2UoJmJ1ZiwgUHFNc2dfQ29weUluUmVzcG9uc2UpOwpAQCAtNzUw LDcgKzc1MCw3IEBAIGJvb2wKIE5leHRDb3B5RnJvbVJhd0ZpZWxkcyhDb3B5RnJvbVN0YXRl IGNzdGF0ZSwgY2hhciAqKipmaWVsZHMsIGludCAqbmZpZWxkcykKIHsKIAlyZXR1cm4gTmV4 dENvcHlGcm9tUmF3RmllbGRzSW50ZXJuYWwoY3N0YXRlLCBmaWVsZHMsIG5maWVsZHMsCi0J CQkJCQkJCQkJIGNzdGF0ZS0+b3B0cy5jc3ZfbW9kZSk7CisJCQkJCQkJCQkJIGNzdGF0ZS0+ b3B0cy5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWKTsKIH0KIAogLyoKQEAgLTc3Nyw3ICs3 NzcsOCBAQCBOZXh0Q29weUZyb21SYXdGaWVsZHNJbnRlcm5hbChDb3B5RnJvbVN0YXRlIGNz dGF0ZSwgY2hhciAqKipmaWVsZHMsIGludCAqbmZpZWxkcwogCWJvb2wJCWRvbmUgPSBmYWxz ZTsKIAogCS8qIG9ubHkgYXZhaWxhYmxlIGZvciB0ZXh0IG9yIGNzdiBpbnB1dCAqLwotCUFz c2VydCghY3N0YXRlLT5vcHRzLmJpbmFyeSk7CisJQXNzZXJ0KGNzdGF0ZS0+b3B0cy5mb3Jt YXQgPT0gQ09QWV9GT1JNQVRfVEVYVCB8fAorCQkgICBjc3RhdGUtPm9wdHMuZm9ybWF0ID09 IENPUFlfRk9STUFUX0NTVik7CiAKIAkvKiBvbiBpbnB1dCBjaGVjayB0aGF0IHRoZSBoZWFk ZXIgbGluZSBpcyBjb3JyZWN0IGlmIG5lZWRlZCAqLwogCWlmIChjc3RhdGUtPmN1cl9saW5l bm8gPT0gMCAmJiBjc3RhdGUtPm9wdHMuaGVhZGVyX2xpbmUgIT0gQ09QWV9IRUFERVJfRkFM U0UpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCmluZGV4IDljZWVmZjZkOTllLi4wMzI1YTE2Zjgy YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKQEAgLTE4MSw5ICsxODEsOSBAQCBzdGF0aWMg Y29uc3QgQ29weVRvUm91dGluZSBDb3B5VG9Sb3V0aW5lQmluYXJ5ID0gewogc3RhdGljIGNv bnN0IENvcHlUb1JvdXRpbmUgKgogQ29weVRvR2V0Um91dGluZShjb25zdCBDb3B5Rm9ybWF0 T3B0aW9ucyAqb3B0cykKIHsKLQlpZiAob3B0cy0+Y3N2X21vZGUpCisJaWYgKG9wdHMtPmZv cm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YpCiAJCXJldHVybiAmQ29weVRvUm91dGluZUNTVjsK LQllbHNlIGlmIChvcHRzLT5iaW5hcnkpCisJZWxzZSBpZiAob3B0cy0+Zm9ybWF0ID09IENP UFlfRk9STUFUX0JJTkFSWSkKIAkJcmV0dXJuICZDb3B5VG9Sb3V0aW5lQmluYXJ5OwogCiAJ LyogZGVmYXVsdCBpcyB0ZXh0ICovCkBAIC0yMjAsNyArMjIwLDcgQEAgQ29weVRvVGV4dExp a2VTdGFydChDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKQogCiAJCQlj b2xuYW1lID0gTmFtZVN0cihUdXBsZURlc2NBdHRyKHR1cERlc2MsIGF0dG51bSAtIDEpLT5h dHRuYW1lKTsKIAotCQkJaWYgKGNzdGF0ZS0+b3B0cy5jc3ZfbW9kZSkKKwkJCWlmIChjc3Rh dGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0NTVikKIAkJCQlDb3B5QXR0cmlidXRl T3V0Q1NWKGNzdGF0ZSwgY29sbmFtZSwgZmFsc2UpOwogCQkJZWxzZQogCQkJCUNvcHlBdHRy aWJ1dGVPdXRUZXh0KGNzdGF0ZSwgY29sbmFtZSk7CkBAIC0zOTcsNyArMzk3LDcgQEAgU2Vu ZENvcHlCZWdpbihDb3B5VG9TdGF0ZSBjc3RhdGUpCiB7CiAJU3RyaW5nSW5mb0RhdGEgYnVm OwogCWludAkJCW5hdHRzID0gbGlzdF9sZW5ndGgoY3N0YXRlLT5hdHRudW1saXN0KTsKLQlp bnQxNgkJZm9ybWF0ID0gKGNzdGF0ZS0+b3B0cy5iaW5hcnkgPyAxIDogMCk7CisJaW50MTYJ CWZvcm1hdCA9IChjc3RhdGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSA/ IDEgOiAwKTsKIAlpbnQJCQlpOwogCiAJcHFfYmVnaW5tZXNzYWdlKCZidWYsIFBxTXNnX0Nv cHlPdXRSZXNwb25zZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5 LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKaW5kZXggODc3MjAyYWY2N2IuLjI0 MzBmYjBiMmU1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKKysr IGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCkBAIC00OSw2ICs0OSwxNiBAQCB0eXBl ZGVmIGVudW0gQ29weUxvZ1ZlcmJvc2l0eUNob2ljZQogCUNPUFlfTE9HX1ZFUkJPU0lUWV9W RVJCT1NFLCAvKiBsb2dzIGFkZGl0aW9uYWwgbWVzc2FnZXMgKi8KIH0gQ29weUxvZ1ZlcmJv c2l0eUNob2ljZTsKIAorLyoKKyAqIFJlcHJlc2VudHMgdGhlIGZvcm1hdCBvZiB0aGUgQ09Q WSBvcGVyYXRpb24uCisgKi8KK3R5cGVkZWYgZW51bSBDb3B5Rm9ybWF0Cit7CisJQ09QWV9G T1JNQVRfVEVYVCA9IDAsCisJQ09QWV9GT1JNQVRfQklOQVJZLAorCUNPUFlfRk9STUFUX0NT ViwKK30gQ29weUZvcm1hdDsKKwogLyoKICAqIEEgc3RydWN0IHRvIGhvbGQgQ09QWSBvcHRp b25zLCBpbiBhIHBhcnNlZCBmb3JtLiBBbGwgb2YgdGhlc2UgYXJlIHJlbGF0ZWQKICAqIHRv IGZvcm1hdHRpbmcsIGV4Y2VwdCBmb3IgJ2ZyZWV6ZScsIHdoaWNoIGRvZXNuJ3QgcmVhbGx5 IGJlbG9uZyBoZXJlLCBidXQKQEAgLTU5LDkgKzY5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgQ29w eUZvcm1hdE9wdGlvbnMKIAkvKiBwYXJhbWV0ZXJzIGZyb20gdGhlIENPUFkgY29tbWFuZCAq LwogCWludAkJCWZpbGVfZW5jb2Rpbmc7CS8qIGZpbGUgb3IgcmVtb3RlIHNpZGUncyBjaGFy YWN0ZXIgZW5jb2RpbmcsCiAJCQkJCQkJCSAqIC0xIGlmIG5vdCBzcGVjaWZpZWQgKi8KLQli b29sCQliaW5hcnk7CQkJLyogYmluYXJ5IGZvcm1hdD8gKi8KKwlDb3B5Rm9ybWF0CWZvcm1h dDsJCQkvKiBmb3JtYXQgb2YgdGhlIENPUFkgb3BlcmF0aW9uICovCiAJYm9vbAkJZnJlZXpl OwkJCS8qIGZyZWV6ZSByb3dzIG9uIGxvYWRpbmc/ICovCi0JYm9vbAkJY3N2X21vZGU7CQkv KiBDb21tYSBTZXBhcmF0ZWQgVmFsdWUgZm9ybWF0PyAqLwogCWludAkJCWhlYWRlcl9saW5l OwkvKiBudW1iZXIgb2YgbGluZXMgdG8gc2tpcCBvciBDT1BZX0hFQURFUl9YWFgKIAkJCQkJ CQkJICogdmFsdWUgKHNlZSB0aGUgYWJvdmUpICovCiAJY2hhcgkgICAqbnVsbF9wcmludDsJ CS8qIE5VTEwgbWFya2VyIHN0cmluZyAoc2VydmVyIGVuY29kaW5nISkgKi8KZGlmZiAtLWdp dCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggNzdlM2MwNDE0NGUuLjgzOTliZTk3ZmQ1IDEwMDY0 NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNTI4LDYgKzUyOCw3IEBAIENvbnZlcnNp b25Mb2NhdGlvbgogQ29udmVydFJvd3R5cGVFeHByCiBDb29rZWRDb25zdHJhaW50CiBDb3B5 RGVzdAorQ29weUZvcm1hdAogQ29weUZvcm1hdE9wdGlvbnMKIENvcHlGcm9tUm91dGluZQog Q29weUZyb21TdGF0ZQotLSAKMi40My4wCgo= --------------7Nf0ajVYMcC3OnzF2myr7D0R Content-Type: text/x-patch; charset=UTF-8; name="v25-0002-json-format-for-COPY-TO.patch" Content-Disposition: attachment; filename="v25-0002-json-format-for-COPY-TO.patch" Content-Transfer-Encoding: base64 RnJvbSAyODViZTBkNzkzNWI1NTA1YjZjYzE1MDk3NDJmM2ZjODdlMTllYTA5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFp bC5jb20+CkRhdGU6IE1vbiwgOSBGZWIgMjAyNiAxMTowMDowNiArMDgwMApTdWJqZWN0OiBb UEFUQ0ggdjI1IDIvNF0ganNvbiBmb3JtYXQgZm9yIENPUFkgVE8KCi0tLQogZG9jL3NyYy9z Z21sL3JlZi9jb3B5LnNnbWwgICAgICAgICB8ICAxMyArKy0tCiBzcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5LmMgICAgICAgIHwgIDQ5ICsrKysrKysrKystLS0tCiBzcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5dG8uYyAgICAgIHwgMTAxICsrKysrKysrKysrKysrKysrKysrKysrKysr LS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgIHwgICA4ICsrKwogc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2pzb24uYyAgICAgICB8ICAgNSArLQogc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5pbi5jICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMv Y29weS5oICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9qc29uLmggICAgICAg ICAgIHwgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQgfCAgNzgg KysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwg ICAgICB8ICA0OCArKysrKysrKysrKysrKwogMTAgZmlsZXMgY2hhbmdlZCwgMjc4IGluc2Vy dGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9y ZWYvY29weS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKaW5kZXggMGFkODkw ZWY5NWYuLjc1ZjU1YmJmNmY4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHku c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbApAQCAtMjI4LDEwICsyMjgs MTUgQEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1l PC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZQogICAgICAgU2VsZWN0cyB0aGUgZGF0 YSBmb3JtYXQgdG8gYmUgcmVhZCBvciB3cml0dGVuOgogICAgICAgPGxpdGVyYWw+dGV4dDwv bGl0ZXJhbD4sCiAgICAgICA8bGl0ZXJhbD5jc3Y8L2xpdGVyYWw+IChDb21tYSBTZXBhcmF0 ZWQgVmFsdWVzKSwKKyAgICAgIDxsaXRlcmFsPmpzb248L2xpdGVyYWw+IChKYXZhU2NyaXB0 IE9iamVjdCBOb3RhdGlvbiksCiAgICAgICBvciA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+ LgogICAgICAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+dGV4dDwvbGl0ZXJhbD4uCiAgICAg ICBTZWUgPHhyZWYgbGlua2VuZD0ic3FsLWNvcHktZmlsZS1mb3JtYXRzIi8+IGJlbG93IGZv ciBkZXRhaWxzLgogICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgVGhlIDxsaXRl cmFsPmpzb248L2xpdGVyYWw+IG9wdGlvbiBpcyBhbGxvd2VkIG9ubHkgaW4KKyAgICAgIDxj b21tYW5kPkNPUFkgVE88L2NvbW1hbmQ+LgorICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRl bT4KICAgIDwvdmFybGlzdGVudHJ5PgogCkBAIC0yNjYsNyArMjcxLDcgQEAgQ09QWSB7IDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4g WyAoIDxyZXBsYWNlYWJsZQogICAgICAgKGxpbmUpIG9mIHRoZSBmaWxlLiAgVGhlIGRlZmF1 bHQgaXMgYSB0YWIgY2hhcmFjdGVyIGluIHRleHQgZm9ybWF0LAogICAgICAgYSBjb21tYSBp biA8bGl0ZXJhbD5DU1Y8L2xpdGVyYWw+IGZvcm1hdC4KICAgICAgIFRoaXMgbXVzdCBiZSBh IHNpbmdsZSBvbmUtYnl0ZSBjaGFyYWN0ZXIuCi0gICAgICBUaGlzIG9wdGlvbiBpcyBub3Qg YWxsb3dlZCB3aGVuIHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJhbD4gZm9ybWF0Lgor ICAgICAgVGhpcyBvcHRpb24gaXMgbm90IGFsbG93ZWQgd2hlbiB1c2luZyA8bGl0ZXJhbD5i aW5hcnk8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPmpzb248L2xpdGVyYWw+IGZvcm1hdC4KICAg ICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTI4 MCw3ICsyODUsNyBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRh YmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgICBzdHJpbmcg aW4gPGxpdGVyYWw+Q1NWPC9saXRlcmFsPiBmb3JtYXQuIFlvdSBtaWdodCBwcmVmZXIgYW4K ICAgICAgIGVtcHR5IHN0cmluZyBldmVuIGluIHRleHQgZm9ybWF0IGZvciBjYXNlcyB3aGVy ZSB5b3UgZG9uJ3Qgd2FudCB0bwogICAgICAgZGlzdGluZ3Vpc2ggbnVsbHMgZnJvbSBlbXB0 eSBzdHJpbmdzLgotICAgICAgVGhpcyBvcHRpb24gaXMgbm90IGFsbG93ZWQgd2hlbiB1c2lu ZyA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+IGZvcm1hdC4KKyAgICAgIFRoaXMgb3B0aW9u IGlzIG5vdCBhbGxvd2VkIHdoZW4gdXNpbmcgPGxpdGVyYWw+YmluYXJ5PC9saXRlcmFsPiBv ciA8bGl0ZXJhbD5qc29uPC9saXRlcmFsPiBmb3JtYXQuCiAgICAgIDwvcGFyYT4KIAogICAg ICA8bm90ZT4KQEAgLTMwMyw3ICszMDgsNyBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxl CiAgICAgICBpcyBmb3VuZCBpbiB0aGUgaW5wdXQgZmlsZSwgdGhlIGRlZmF1bHQgdmFsdWUg b2YgdGhlIGNvcnJlc3BvbmRpbmcgY29sdW1uCiAgICAgICB3aWxsIGJlIHVzZWQuCiAgICAg ICBUaGlzIG9wdGlvbiBpcyBhbGxvd2VkIG9ubHkgaW4gPGNvbW1hbmQ+Q09QWSBGUk9NPC9j b21tYW5kPiwgYW5kIG9ubHkgd2hlbgotICAgICAgbm90IHVzaW5nIDxsaXRlcmFsPmJpbmFy eTwvbGl0ZXJhbD4gZm9ybWF0LgorICAgICAgbm90IHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwv bGl0ZXJhbD4gb3IgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gZm9ybWF0LgogICAgICA8L3Bh cmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMzMwLDcgKzMz NSw3IEBAIENPUFkgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFt ZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUKICAgICAgIDxjb21tYW5kPkNPUFkg RlJPTTwvY29tbWFuZD4gY29tbWFuZHMuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+Ci0g ICAgICBUaGlzIG9wdGlvbiBpcyBub3QgYWxsb3dlZCB3aGVuIHVzaW5nIDxsaXRlcmFsPmJp bmFyeTwvbGl0ZXJhbD4gZm9ybWF0LgorICAgICAgVGhpcyBvcHRpb24gaXMgbm90IGFsbG93 ZWQgd2hlbiB1c2luZyA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPmpz b248L2xpdGVyYWw+IGZvcm1hdC4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAg ICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHkuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwppbmRleCAyZjQ2YmU1MTZmMi4u MjljMTIxYzdmMDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKQEAgLTU5Nyw2ICs1OTcsOCBAQCBQ cm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCW9wdHNfb3V0LT5m b3JtYXQgPSBDT1BZX0ZPUk1BVF9DU1Y7CiAJCQllbHNlIGlmIChzdHJjbXAoZm10LCAiYmlu YXJ5IikgPT0gMCkKIAkJCQlvcHRzX291dC0+Zm9ybWF0ID0gQ09QWV9GT1JNQVRfQklOQVJZ OworCQkJZWxzZSBpZiAoc3RyY21wKGZtdCwgImpzb24iKSA9PSAwKQorCQkJCW9wdHNfb3V0 LT5mb3JtYXQgPSBDT1BZX0ZPUk1BVF9KU09OOwogCQkJZWxzZQogCQkJCWVyZXBvcnQoRVJS T1IsCiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwK QEAgLTc1NiwyMSArNzU4LDMyIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpw c3RhdGUsCiAJICogQ2hlY2sgZm9yIGluY29tcGF0aWJsZSBvcHRpb25zIChtdXN0IGRvIHRo ZXNlIHRocmVlIGJlZm9yZSBpbnNlcnRpbmcKIAkgKiBkZWZhdWx0cykKIAkgKi8KLQlpZiAo b3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgJiYgb3B0c19vdXQtPmRl bGltKQorCWlmIChvcHRzX291dC0+ZGVsaW0gJiYKKwkJKG9wdHNfb3V0LT5mb3JtYXQgPT0g Q09QWV9GT1JNQVRfQklOQVJZIHx8CisJCSBvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9S TUFUX0pTT04pKQogCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfU1lO VEFYX0VSUk9SKSwKLQkJLyotIHRyYW5zbGF0b3I6ICVzIGlzIHRoZSBuYW1lIG9mIGEgQ09Q WSBvcHRpb24sIGUuZy4gT05fRVJST1IgKi8KLQkJCQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lm eSAlcyBpbiBCSU5BUlkgbW9kZSIsICJERUxJTUlURVIiKSkpOworCQkJCWVycmNvZGUoRVJS Q09ERV9TWU5UQVhfRVJST1IpLAorCQkJCW9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JN QVRfQklOQVJZCisJCQkJPyBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBt b2RlIiwgIkRFTElNSVRFUiIpCisJCQkJOiBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGlu IEpTT04gbW9kZSIsICJERUxJTUlURVIiKSk7CiAKLQlpZiAob3B0c19vdXQtPmZvcm1hdCA9 PSBDT1BZX0ZPUk1BVF9CSU5BUlkgJiYgb3B0c19vdXQtPm51bGxfcHJpbnQpCisJaWYgKG9w dHNfb3V0LT5udWxsX3ByaW50ICYmCisJCShvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9S TUFUX0JJTkFSWSB8fAorCQkgb3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9KU09O KSkKIAkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCi0JCQkJIGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAi TlVMTCIpKSk7CisJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJb3B0 c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkKKwkJCQk/IGVycm1zZygiY2Fu bm90IHNwZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiTlVMTCIpCisJCQkJOiBlcnJtc2co ImNhbm5vdCBzcGVjaWZ5ICVzIGluIEpTT04gbW9kZSIsICJOVUxMIikpOwogCi0JaWYgKG9w dHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZICYmIG9wdHNfb3V0LT5kZWZh dWx0X3ByaW50KQorCWlmIChvcHRzX291dC0+ZGVmYXVsdF9wcmludCAmJgorCQkob3B0c19v dXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgfHwKKwkJIG9wdHNfb3V0LT5mb3Jt YXQgPT0gQ09QWV9GT1JNQVRfSlNPTikpCiAJCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNv ZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJCSBlcnJtc2coImNhbm5vdCBzcGVjaWZ5 ICVzIGluIEJJTkFSWSBtb2RlIiwgIkRFRkFVTFQiKSkpOworCQkJCWVycmNvZGUoRVJSQ09E RV9TWU5UQVhfRVJST1IpLAorCQkJCW9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRf QklOQVJZCisJCQkJPyBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBtb2Rl IiwgIkRFRkFVTFQiKQorCQkJCTogZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBKU09O IG1vZGUiLCAiREVGQVVMVCIpKTsKIAogCS8qIFNldCBkZWZhdWx0cyBmb3Igb21pdHRlZCBv cHRpb25zICovCiAJaWYgKCFvcHRzX291dC0+ZGVsaW0pCkBAIC04MzYsMTEgKzg0OSwxNSBA QCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCSBlcnJtc2co IkNPUFkgZGVsaW1pdGVyIGNhbm5vdCBiZSBcIiVzXCIiLCBvcHRzX291dC0+ZGVsaW0pKSk7 CiAKIAkvKiBDaGVjayBoZWFkZXIgKi8KLQlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZ X0ZPUk1BVF9CSU5BUlkgJiYgb3B0c19vdXQtPmhlYWRlcl9saW5lICE9IENPUFlfSEVBREVS X0ZBTFNFKQorCWlmIChvcHRzX291dC0+aGVhZGVyX2xpbmUgIT0gQ09QWV9IRUFERVJfRkFM U0UgJiYKKwkJKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZIHx8CisJ CSBvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0pTT04pKQogCQllcmVwb3J0KEVS Uk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJ CQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJLyotIHRyYW5z bGF0b3I6ICVzIGlzIHRoZSBuYW1lIG9mIGEgQ09QWSBvcHRpb24sIGUuZy4gT05fRVJST1Ig Ki8KLQkJCQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJI RUFERVIiKSkpOworCQkJCW9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZ CisJCQkJPyBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBtb2RlIiwgIkhF QURFUiIpCisJCQkJOiBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEpTT04gbW9kZSIs ICJIRUFERVIiKSk7CiAKIAkvKiBDaGVjayBxdW90ZSAqLwogCWlmIChvcHRzX291dC0+Zm9y bWF0ICE9IENPUFlfRk9STUFUX0NTViAmJiBvcHRzX291dC0+cXVvdGUgIT0gTlVMTCkKQEAg LTk0NCw2ICs5NjEsMTIgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIAkJCQkgZXJybXNnKCJDT1BZICVzIGNhbm5vdCBiZSB1c2VkIHdpdGggJXMiLCAiRlJF RVpFIiwKIAkJCQkJCSJDT1BZIFRPIikpKTsKIAorCS8qIENoZWNrIGpzb24gZm9ybWF0ICov CisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfSlNPTiAmJiBpc19mcm9t KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFN RVRFUl9WQUxVRSksCisJCQkJZXJybXNnKCJDT1BZICVzIG1vZGUgY2Fubm90IGJlIHVzZWQg d2l0aCAlcyIsICJKU09OIiwgIkNPUFkgRlJPTSIpKTsKKwogCWlmIChvcHRzX291dC0+ZGVm YXVsdF9wcmludCkKIAl7CiAJCWlmICghaXNfZnJvbSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMK aW5kZXggMDMyNWExNmY4MmEuLjk2NjA1MDc5ZWViIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8u YwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNkZXNjLmgiCiAj aW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci90dXB0 YWJsZS5oIgorI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS5o IgogI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIu aCIKQEAgLTMzLDYgKzM0LDcgQEAKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJz dG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgorI2luY2x1ZGUgInV0 aWxzL2pzb24uaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1 dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgpAQCAtODQsNiArODYs MTEgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29weVRvU3RhdGVEYXRhCiAJTGlzdAkgICAqYXR0bnVt bGlzdDsJCS8qIGludGVnZXIgbGlzdCBvZiBhdHRudW1zIHRvIGNvcHkgKi8KIAljaGFyCSAg ICpmaWxlbmFtZTsJCS8qIGZpbGVuYW1lLCBvciBOVUxMIGZvciBTVERPVVQgKi8KIAlib29s CQlpc19wcm9ncmFtOwkJLyogaXMgJ2ZpbGVuYW1lJyBhIHByb2dyYW0gdG8gcG9wZW4/ICov CisKKwkvKiBKU09OIGZvcm1hdCBzdGF0ZSAqLworCWJvb2wJCWpzb25fdHVwbGVkZXNjX3Jl YWR5OwkvKiBUdXBsZURlc2Mgc2V0dXAgZG9uZSBmb3IgSlNPTiAqLworCVN0cmluZ0luZm9E YXRhIGpzb25fYnVmOwkvKiByZXVzYWJsZSBidWZmZXIgZm9yIEpTT04gb3V0cHV0ICovCisK IAljb3B5X2RhdGFfZGVzdF9jYiBkYXRhX2Rlc3RfY2I7IC8qIGZ1bmN0aW9uIGZvciB3cml0 aW5nIGRhdGEgKi8KIAogCUNvcHlGb3JtYXRPcHRpb25zIG9wdHM7CkBAIC0xMzAsNiArMTM3 LDcgQEAgc3RhdGljIHZvaWQgQ29weVRvQ1NWT25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwg VHVwbGVUYWJsZVNsb3QgKnNsb3QpOwogc3RhdGljIHZvaWQgQ29weVRvVGV4dExpa2VPbmVS b3coQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCQkJ IGJvb2wgaXNfY3N2KTsKIHN0YXRpYyB2b2lkIENvcHlUb1RleHRMaWtlRW5kKENvcHlUb1N0 YXRlIGNzdGF0ZSk7CitzdGF0aWMgdm9pZCBDb3B5VG9Kc29uT25lUm93KENvcHlUb1N0YXRl IGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOwogc3RhdGljIHZvaWQgQ29weVRvQmlu YXJ5U3RhcnQoQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURlc2MgdHVwRGVzYyk7CiBzdGF0 aWMgdm9pZCBDb3B5VG9CaW5hcnlPdXRGdW5jKENvcHlUb1N0YXRlIGNzdGF0ZSwgT2lkIGF0 dHR5cGlkLCBGbWdySW5mbyAqZmluZm8pOwogc3RhdGljIHZvaWQgQ29weVRvQmluYXJ5T25l Um93KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOwpAQCAtMTQ5 LDcgKzE1Nyw3IEBAIHN0YXRpYyB2b2lkIENvcHlTZW5kSW50MTYoQ29weVRvU3RhdGUgY3N0 YXRlLCBpbnQxNiB2YWwpOwogLyoKICAqIENPUFkgVE8gcm91dGluZXMgZm9yIGJ1aWx0LWlu IGZvcm1hdHMuCiAgKgotICogQ1NWIGFuZCB0ZXh0IGZvcm1hdHMgc2hhcmUgdGhlIHNhbWUg VGV4dExpa2Ugcm91dGluZXMgZXhjZXB0IGZvciB0aGUKKyAqIENTViwgdGV4dCBhbmQganNv biBmb3JtYXRzIHNoYXJlIHRoZSBzYW1lIFRleHRMaWtlIHJvdXRpbmVzIGV4Y2VwdCBmb3Ig dGhlCiAgKiBvbmUtcm93IGNhbGxiYWNrLgogICovCiAKQEAgLTE2OSw2ICsxNzcsMTQgQEAg c3RhdGljIGNvbnN0IENvcHlUb1JvdXRpbmUgQ29weVRvUm91dGluZUNTViA9IHsKIAkuQ29w eVRvRW5kID0gQ29weVRvVGV4dExpa2VFbmQsCiB9OwogCisvKiBqc29uIGZvcm1hdCAqLwor c3RhdGljIGNvbnN0IENvcHlUb1JvdXRpbmUgQ29weVRvUm91dGluZUpzb24gPSB7CisJLkNv cHlUb1N0YXJ0ID0gQ29weVRvVGV4dExpa2VTdGFydCwKKwkuQ29weVRvT3V0RnVuYyA9IENv cHlUb1RleHRMaWtlT3V0RnVuYywKKwkuQ29weVRvT25lUm93ID0gQ29weVRvSnNvbk9uZVJv dywKKwkuQ29weVRvRW5kID0gQ29weVRvVGV4dExpa2VFbmQsCit9OworCiAvKiBiaW5hcnkg Zm9ybWF0ICovCiBzdGF0aWMgY29uc3QgQ29weVRvUm91dGluZSBDb3B5VG9Sb3V0aW5lQmlu YXJ5ID0gewogCS5Db3B5VG9TdGFydCA9IENvcHlUb0JpbmFyeVN0YXJ0LApAQCAtMTg1LDEy ICsyMDEsMTQgQEAgQ29weVRvR2V0Um91dGluZShjb25zdCBDb3B5Rm9ybWF0T3B0aW9ucyAq b3B0cykKIAkJcmV0dXJuICZDb3B5VG9Sb3V0aW5lQ1NWOwogCWVsc2UgaWYgKG9wdHMtPmZv cm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkpCiAJCXJldHVybiAmQ29weVRvUm91dGluZUJp bmFyeTsKKwllbHNlIGlmIChvcHRzLT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfSlNPTikKKwkJ cmV0dXJuICZDb3B5VG9Sb3V0aW5lSnNvbjsKIAogCS8qIGRlZmF1bHQgaXMgdGV4dCAqLwog CXJldHVybiAmQ29weVRvUm91dGluZVRleHQ7CiB9CiAKLS8qIEltcGxlbWVudGF0aW9uIG9m IHRoZSBzdGFydCBjYWxsYmFjayBmb3IgdGV4dCBhbmQgQ1NWIGZvcm1hdHMgKi8KKy8qIElt cGxlbWVudGF0aW9uIG9mIHRoZSBzdGFydCBjYWxsYmFjayBmb3IgdGV4dCwgQ1NWLCBhbmQg anNvbiBmb3JtYXRzICovCiBzdGF0aWMgdm9pZAogQ29weVRvVGV4dExpa2VTdGFydChDb3B5 VG9TdGF0ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKQogewpAQCAtMjA5LDYgKzIyNyw4 IEBAIENvcHlUb1RleHRMaWtlU3RhcnQoQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURlc2Mg dHVwRGVzYykKIAkJTGlzdENlbGwgICAqY3VyOwogCQlib29sCQloZHJfZGVsaW0gPSBmYWxz ZTsKIAorCQlBc3NlcnQoY3N0YXRlLT5vcHRzLmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9KU09O KTsKKwogCQlmb3JlYWNoKGN1ciwgY3N0YXRlLT5hdHRudW1saXN0KQogCQl7CiAJCQlpbnQJ CQlhdHRudW0gPSBsZmlyc3RfaW50KGN1cik7CkBAIC0yMjgsMTAgKzI0OCwyMSBAQCBDb3B5 VG9UZXh0TGlrZVN0YXJ0KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVEZXNjIHR1cERlc2Mp CiAKIAkJQ29weVNlbmRUZXh0TGlrZUVuZE9mUm93KGNzdGF0ZSk7CiAJfQorCisJLyogSlNP Ti1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiAqLworCWlmIChjc3RhdGUtPm9wdHMuZm9ybWF0 ID09IENPUFlfRk9STUFUX0pTT04pCisJeworCQlNZW1vcnlDb250ZXh0IG9sZGN4dDsKKwor CQkvKiBBbGxvY2F0ZSByZXVzYWJsZSBKU09OIG91dHB1dCBidWZmZXIgaW4gbG9uZy1saXZl ZCBjb250ZXh0ICovCisJCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhjc3RhdGUt PmNvcHljb250ZXh0KTsKKwkJaW5pdFN0cmluZ0luZm8oJmNzdGF0ZS0+anNvbl9idWYpOwor CQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKwl9CiB9CiAKIC8qCi0gKiBJbXBs ZW1lbnRhdGlvbiBvZiB0aGUgb3V0ZnVuYyBjYWxsYmFjayBmb3IgdGV4dCBhbmQgQ1NWIGZv cm1hdHMuIEFzc2lnbgorICogSW1wbGVtZW50YXRpb24gb2YgdGhlIG91dGZ1bmMgY2FsbGJh Y2sgZm9yIHRleHQsIENTViwgYW5kIGpzb24gZm9ybWF0cy4gQXNzaWduCiAgKiB0aGUgb3V0 cHV0IGZ1bmN0aW9uIGRhdGEgdG8gdGhlIGdpdmVuICpmaW5mby4KICAqLwogc3RhdGljIHZv aWQKQEAgLTMwNCwxMyArMzM1LDQ3IEBAIENvcHlUb1RleHRMaWtlT25lUm93KENvcHlUb1N0 YXRlIGNzdGF0ZSwKIAlDb3B5U2VuZFRleHRMaWtlRW5kT2ZSb3coY3N0YXRlKTsKIH0KIAot LyogSW1wbGVtZW50YXRpb24gb2YgdGhlIGVuZCBjYWxsYmFjayBmb3IgdGV4dCBhbmQgQ1NW IGZvcm1hdHMgKi8KKy8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBlbmQgY2FsbGJhY2sgZm9y IHRleHQsIENTViwgYW5kIGpzb24gZm9ybWF0cyAqLwogc3RhdGljIHZvaWQKIENvcHlUb1Rl eHRMaWtlRW5kKENvcHlUb1N0YXRlIGNzdGF0ZSkKIHsKIAkvKiBOb3RoaW5nIHRvIGRvIGhl cmUgKi8KIH0KIAorLyogSW1wbGVtZW50YXRpb24gb2YgcGVyLXJvdyBjYWxsYmFjayBmb3Ig anNvbiBmb3JtYXQgKi8KK3N0YXRpYyB2b2lkCitDb3B5VG9Kc29uT25lUm93KENvcHlUb1N0 YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpCit7CisJRGF0dW0JCXJvd2RhdGE7 CisKKwkvKgorCSAqIEZvciBxdWVyeS1iYXNlZCBDT1BZLCBjb3B5IHRoZSBxdWVyeSdzIFR1 cGxlRGVzYyBhdHRyaWJ1dGVzIGludG8gdGhlCisJICogc2xvdCdzIFR1cGxlRGVzYyBvbmNl LiAgQmxlc3NUdXBsZURlc2MgcmVnaXN0ZXJzIHRoZSBSRUNPUkRPSUQKKwkgKiBkZXNjcmlw dG9yIHNvIHRoYXQgbG9va3VwX3Jvd3R5cGVfdHVwZGVzYyBpbnNpZGUgY29tcG9zaXRlX3Rv X2pzb24gY2FuCisJICogZmluZCBpdC4KKwkgKi8KKwlpZiAoIWNzdGF0ZS0+cmVsICYmICFj c3RhdGUtPmpzb25fdHVwbGVkZXNjX3JlYWR5KQorCXsKKwkJbWVtY3B5KFR1cGxlRGVzY0F0 dHIoc2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvciwgMCksCisJCQkgICBUdXBsZURlc2NBdHRy KGNzdGF0ZS0+cXVlcnlEZXNjLT50dXBEZXNjLCAwKSwKKwkJCSAgIGNzdGF0ZS0+cXVlcnlE ZXNjLT50dXBEZXNjLT5uYXR0cyAqIHNpemVvZihGb3JtRGF0YV9wZ19hdHRyaWJ1dGUpKTsK KworCQlmb3IgKGludCBpID0gMDsgaSA8IGNzdGF0ZS0+cXVlcnlEZXNjLT50dXBEZXNjLT5u YXR0czsgaSsrKQorCQkJcG9wdWxhdGVfY29tcGFjdF9hdHRyaWJ1dGUoc2xvdC0+dHRzX3R1 cGxlRGVzY3JpcHRvciwgaSk7CisKKwkJQmxlc3NUdXBsZURlc2Moc2xvdC0+dHRzX3R1cGxl RGVzY3JpcHRvcik7CisJCWNzdGF0ZS0+anNvbl90dXBsZWRlc2NfcmVhZHkgPSB0cnVlOwor CX0KKworCXJvd2RhdGEgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlRGF0dW0oc2xvdCk7CisJ cmVzZXRTdHJpbmdJbmZvKCZjc3RhdGUtPmpzb25fYnVmKTsKKwljb21wb3NpdGVfdG9fanNv bihyb3dkYXRhLCAmY3N0YXRlLT5qc29uX2J1ZiwgZmFsc2UpOworCisJQ29weVNlbmREYXRh KGNzdGF0ZSwgY3N0YXRlLT5qc29uX2J1Zi5kYXRhLCBjc3RhdGUtPmpzb25fYnVmLmxlbik7 CisKKwlDb3B5U2VuZFRleHRMaWtlRW5kT2ZSb3coY3N0YXRlKTsKK30KKwogLyoKICAqIElt cGxlbWVudGF0aW9uIG9mIHRoZSBzdGFydCBjYWxsYmFjayBmb3IgYmluYXJ5IGZvcm1hdC4g U2VuZCBhIGhlYWRlcgogICogZm9yIGEgYmluYXJ5IGNvcHkuCkBAIC00MDIsOSArNDY3LDIz IEBAIFNlbmRDb3B5QmVnaW4oQ29weVRvU3RhdGUgY3N0YXRlKQogCiAJcHFfYmVnaW5tZXNz YWdlKCZidWYsIFBxTXNnX0NvcHlPdXRSZXNwb25zZSk7CiAJcHFfc2VuZGJ5dGUoJmJ1Ziwg Zm9ybWF0KTsJLyogb3ZlcmFsbCBmb3JtYXQgKi8KLQlwcV9zZW5kaW50MTYoJmJ1ZiwgbmF0 dHMpOwotCWZvciAoaSA9IDA7IGkgPCBuYXR0czsgaSsrKQotCQlwcV9zZW5kaW50MTYoJmJ1 ZiwgZm9ybWF0KTsgLyogcGVyLWNvbHVtbiBmb3JtYXRzICovCisJaWYgKGNzdGF0ZS0+b3B0 cy5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfSlNPTikKKwl7CisJCXBxX3NlbmRpbnQxNigmYnVm LCBuYXR0cyk7CisJCWZvciAoaSA9IDA7IGkgPCBuYXR0czsgaSsrKQorCQkJcHFfc2VuZGlu dDE2KCZidWYsIGZvcm1hdCk7IC8qIHBlci1jb2x1bW4gZm9ybWF0cyAqLworCX0KKwllbHNl CisJeworCQkvKgorCQkgKiBGb3IgSlNPTiBmb3JtYXQsIHJlcG9ydCBvbmUgdGV4dC1mb3Jt YXQgY29sdW1uLiAgRWFjaCBDb3B5RGF0YQorCQkgKiBtZXNzYWdlIGNvbnRhaW5zIG9uZSBj b21wbGV0ZSBKU09OIG9iamVjdCwgbm90IGluZGl2aWR1YWwgY29sdW1uCisJCSAqIHZhbHVl cywgc28gdGhlIHBlci1jb2x1bW4gY291bnQgaXMgYWx3YXlzIDEuCisJCSAqLworCQlwcV9z ZW5kaW50MTYoJmJ1ZiwgMSk7CisJCXBxX3NlbmRpbnQxNigmYnVmLCAwKTsKKwl9CisKIAlw cV9lbmRtZXNzYWdlKCZidWYpOwogCWNzdGF0ZS0+Y29weV9kZXN0ID0gQ09QWV9GUk9OVEVO RDsKIH0KQEAgLTUwNiw3ICs1ODUsNyBAQCBDb3B5U2VuZEVuZE9mUm93KENvcHlUb1N0YXRl IGNzdGF0ZSkKIH0KIAogLyoKLSAqIFdyYXBwZXIgZnVuY3Rpb24gb2YgQ29weVNlbmRFbmRP ZlJvdyBmb3IgdGV4dCBhbmQgQ1NWIGZvcm1hdHMuIFNlbmRzIHRoZQorICogV3JhcHBlciBm dW5jdGlvbiBvZiBDb3B5U2VuZEVuZE9mUm93IGZvciB0ZXh0LCBDU1YsIGFuZCBqc29uIGZv cm1hdHMuIFNlbmRzIHRoZQogICogbGluZSB0ZXJtaW5hdGlvbiBhbmQgZG8gY29tbW9uIGFw cHJvcHJpYXRlIHRoaW5ncyBmb3IgdGhlIGVuZCBvZiByb3cuCiAgKi8KIHN0YXRpYyBpbmxp bmUgdm9pZApAQCAtODkwLDYgKzk2OSwxMiBAQCBCZWdpbkNvcHlUbyhQYXJzZVN0YXRlICpw c3RhdGUsCiAJLyogR2VuZXJhdGUgb3IgY29udmVydCBsaXN0IG9mIGF0dHJpYnV0ZXMgdG8g cHJvY2VzcyAqLwogCWNzdGF0ZS0+YXR0bnVtbGlzdCA9IENvcHlHZXRBdHRudW1zKHR1cERl c2MsIGNzdGF0ZS0+cmVsLCBhdHRuYW1lbGlzdCk7CiAKKwkvKiBKU09OIG91dHB1dHMgd2hv bGUgcm93czsgYSBjb2x1bW4gbGlzdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgKi8KKwlpZiAoY3N0 YXRlLT5vcHRzLmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9KU09OICYmIGF0dG5hbWVsaXN0ICE9 IE5JTCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVf Tk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiY29sdW1uIHNlbGVjdGlvbiBpcyBub3Qg c3VwcG9ydGVkIGluIEpTT04gbW9kZSIpKSk7CisKIAludW1fcGh5c19hdHRycyA9IHR1cERl c2MtPm5hdHRzOwogCiAJLyogQ29udmVydCBGT1JDRV9RVU9URSBuYW1lIGxpc3QgdG8gcGVy LWNvbHVtbiBmbGFncywgY2hlY2sgdmFsaWRpdHkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGM1 NjcyNTJhY2M0Li5kYjk4ZjJkOTFiZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0zNjA5LDYgKzM2 MDksMTAgQEAgY29weV9vcHRfaXRlbToKIAkJCQl7CiAJCQkJCSQkID0gbWFrZURlZkVsZW0o ImZvcm1hdCIsIChOb2RlICopIG1ha2VTdHJpbmcoImNzdiIpLCBAMSk7CiAJCQkJfQorCQkJ fCBKU09OCisJCQkJeworCQkJCQkkJCA9IG1ha2VEZWZFbGVtKCJmb3JtYXQiLCAoTm9kZSAq KSBtYWtlU3RyaW5nKCJqc29uIiksIEAxKTsKKwkJCQl9CiAJCQl8IEhFQURFUl9QCiAJCQkJ ewogCQkJCQkkJCA9IG1ha2VEZWZFbGVtKCJoZWFkZXIiLCAoTm9kZSAqKSBtYWtlQm9vbGVh bih0cnVlKSwgQDEpOwpAQCAtMzY5MSw2ICszNjk1LDEwIEBAIGNvcHlfZ2VuZXJpY19vcHRf ZWxlbToKIAkJCQl7CiAJCQkJCSQkID0gbWFrZURlZkVsZW0oJDEsICQyLCBAMSk7CiAJCQkJ fQorCQkJfCBGT1JNQVRfTEEgY29weV9nZW5lcmljX29wdF9hcmcKKwkJCQl7CisJCQkJCSQk ID0gbWFrZURlZkVsZW0oImZvcm1hdCIsICQyLCBAMSk7CisJCQkJfQogCQk7CiAKIGNvcHlf Z2VuZXJpY19vcHRfYXJnOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b24uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMKaW5kZXggMGIxNjEzOTg0NjUu LmY2MDlkN2I5NDE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMKQEAgLTg2LDggKzg2LDYgQEAg dHlwZWRlZiBzdHJ1Y3QgSnNvbkFnZ1N0YXRlCiAJSnNvblVuaXF1ZUJ1aWxkZXJTdGF0ZSB1 bmlxdWVfY2hlY2s7CiB9IEpzb25BZ2dTdGF0ZTsKIAotc3RhdGljIHZvaWQgY29tcG9zaXRl X3RvX2pzb24oRGF0dW0gY29tcG9zaXRlLCBTdHJpbmdJbmZvIHJlc3VsdCwKLQkJCQkJCQkg IGJvb2wgdXNlX2xpbmVfZmVlZHMpOwogc3RhdGljIHZvaWQgYXJyYXlfZGltX3RvX2pzb24o U3RyaW5nSW5mbyByZXN1bHQsIGludCBkaW0sIGludCBuZGltcywgaW50ICpkaW1zLAogCQkJ CQkJCSAgY29uc3QgRGF0dW0gKnZhbHMsIGNvbnN0IGJvb2wgKm51bGxzLCBpbnQgKnZhbGNv dW50LAogCQkJCQkJCSAgSnNvblR5cGVDYXRlZ29yeSB0Y2F0ZWdvcnksIE9pZCBvdXRmdW5j b2lkLApAQCAtNTE3LDggKzUxNSw5IEBAIGFycmF5X3RvX2pzb25faW50ZXJuYWwoRGF0dW0g YXJyYXksIFN0cmluZ0luZm8gcmVzdWx0LCBib29sIHVzZV9saW5lX2ZlZWRzKQogCiAvKgog ICogVHVybiBhIGNvbXBvc2l0ZSAvIHJlY29yZCBpbnRvIEpTT04uCisgKiBFeHBvcnRlZCBz byBDT1BZIFRPIGNhbiB1c2UgaXQuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBjb21wb3Np dGVfdG9fanNvbihEYXR1bSBjb21wb3NpdGUsIFN0cmluZ0luZm8gcmVzdWx0LCBib29sIHVz ZV9saW5lX2ZlZWRzKQogewogCUhlYXBUdXBsZUhlYWRlciB0ZDsKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuaW4uYwppbmRleCA5MDVjMDc2NzYzYy4uZDI1NzgzN2IwYzUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmluLmMKQEAgLTM0MjUsNyArMzQyNSw3IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRz KGludCBwYXR0ZXJuX2lkLAogCiAJCQkvKiBDb21wbGV0ZSBDT1BZIDxzdGg+IEZST018VE8g ZmlsZW5hbWUgV0lUSCAoRk9STUFUICovCiAJCQllbHNlIGlmIChUYWlsTWF0Y2hlcygiRk9S TUFUIikpCi0JCQkJQ09NUExFVEVfV0lUSCgiYmluYXJ5IiwgImNzdiIsICJ0ZXh0Iik7CisJ CQkJQ09NUExFVEVfV0lUSCgiYmluYXJ5IiwgImNzdiIsICJ0ZXh0IiwgImpzb24iKTsKIAog CQkJLyogQ29tcGxldGUgQ09QWSA8c3RoPiBGUk9NfFRPIGZpbGVuYW1lIFdJVEggKEZSRUVa RSAqLwogCQkJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIkZSRUVaRSIpKQpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29w eS5oCmluZGV4IDI0MzBmYjBiMmU1Li4yYjViZWY2NzM4ZSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvY29weS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHku aApAQCAtNTcsNiArNTcsNyBAQCB0eXBlZGVmIGVudW0gQ29weUZvcm1hdAogCUNPUFlfRk9S TUFUX1RFWFQgPSAwLAogCUNPUFlfRk9STUFUX0JJTkFSWSwKIAlDT1BZX0ZPUk1BVF9DU1Ys CisJQ09QWV9GT1JNQVRfSlNPTiwKIH0gQ29weUZvcm1hdDsKIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3V0aWxzL2pzb24uaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb24uaApp bmRleCBmOGNjNTJiMWU3OC4uMmY0YmU0MDUxOGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3V0aWxzL2pzb24uaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9qc29uLmgKQEAgLTE3LDYg KzE3LDggQEAKICNpbmNsdWRlICJsaWIvc3RyaW5naW5mby5oIgogCiAvKiBmdW5jdGlvbnMg aW4ganNvbi5jICovCitleHRlcm4gdm9pZCBjb21wb3NpdGVfdG9fanNvbihEYXR1bSBjb21w b3NpdGUsIFN0cmluZ0luZm8gcmVzdWx0LAorCQkJCQkJCSAgYm9vbCB1c2VfbGluZV9mZWVk cyk7CiBleHRlcm4gdm9pZCBlc2NhcGVfanNvbihTdHJpbmdJbmZvIGJ1ZiwgY29uc3QgY2hh ciAqc3RyKTsKIGV4dGVybiB2b2lkIGVzY2FwZV9qc29uX3dpdGhfbGVuKFN0cmluZ0luZm8g YnVmLCBjb25zdCBjaGFyICpzdHIsIGludCBsZW4pOwogZXh0ZXJuIHZvaWQgZXNjYXBlX2pz b25fdGV4dChTdHJpbmdJbmZvIGJ1ZiwgY29uc3QgdGV4dCAqdHh0KTsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2NvcHkub3V0CmluZGV4IGQwZDU2M2UwZmE4Li40ZWE2NThhNDVkZSAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0CkBAIC03Myw2ICs3Myw4NCBAQCBjb3B5 IGNvcHl0ZXN0MyB0byBzdGRvdXQgY3N2IGhlYWRlcjsKIGMxLCJjb2wgd2l0aCAsIGNvbW1h IiwiY29sIHdpdGggIiIgcXVvdGUiCiAxLGEsMQogMixiLDIKKy0tLSB0ZXN0IGNvcHlpbmcg aW4gSlNPTiBtb2RlIHdpdGggdmFyaW91cyBzdHlsZXMKK2NvcHkgY29weXRlc3QgdG8gc3Rk b3V0IGpzb247Cit7InN0eWxlIjoiRE9TIiwidGVzdCI6ImFiY1xyXG5kZWYiLCJmaWxsZXIi OjF9Cit7InN0eWxlIjoiVW5peCIsInRlc3QiOiJhYmNcbmRlZiIsImZpbGxlciI6Mn0KK3si c3R5bGUiOiJNYWMiLCJ0ZXN0IjoiYWJjXHJkZWYiLCJmaWxsZXIiOjN9Cit7InN0eWxlIjoi ZXNjXFxhcGUiLCJ0ZXN0IjoiYVxcclxcXHJcXFxuXFxuYiIsImZpbGxlciI6NH0KK2NvcHkg Y29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbik7Cit7InN0eWxlIjoiRE9TIiwidGVz dCI6ImFiY1xyXG5kZWYiLCJmaWxsZXIiOjF9Cit7InN0eWxlIjoiVW5peCIsInRlc3QiOiJh YmNcbmRlZiIsImZpbGxlciI6Mn0KK3sic3R5bGUiOiJNYWMiLCJ0ZXN0IjoiYWJjXHJkZWYi LCJmaWxsZXIiOjN9Cit7InN0eWxlIjoiZXNjXFxhcGUiLCJ0ZXN0IjoiYVxcclxcXHJcXFxu XFxuYiIsImZpbGxlciI6NH0KKy0tIGFsbCBvZiB0aGUgZm9sbG93aW5nIHNob3VsZCB5aWVs ZCBlcnJvcgorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBkZWxpbWl0 ZXIgJ3wnKTsKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgREVMSU1JVEVSIGluIEpTT04gbW9k ZQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBudWxsICdcTicpOwor RVJST1I6ICBjYW5ub3Qgc3BlY2lmeSBOVUxMIGluIEpTT04gbW9kZQorY29weSBjb3B5dGVz dCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBkZWZhdWx0ICd8Jyk7CitFUlJPUjogIGNhbm5v dCBzcGVjaWZ5IERFRkFVTFQgaW4gSlNPTiBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91 dCAoZm9ybWF0IGpzb24sIGhlYWRlcik7CitFUlJPUjogIGNhbm5vdCBzcGVjaWZ5IEhFQURF UiBpbiBKU09OIG1vZGUKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwg aGVhZGVyIDEpOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSBIRUFERVIgaW4gSlNPTiBtb2Rl Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIHF1b3RlICciJyk7CitF UlJPUjogIENPUFkgUVVPVEUgcmVxdWlyZXMgQ1NWIG1vZGUKK2NvcHkgY29weXRlc3QgdG8g c3Rkb3V0IChmb3JtYXQganNvbiwgZXNjYXBlICciJyk7CitFUlJPUjogIENPUFkgRVNDQVBF IHJlcXVpcmVzIENTViBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpz b24sIGZvcmNlX3F1b3RlICopOworRVJST1I6ICBDT1BZIEZPUkNFX1FVT1RFIHJlcXVpcmVz IENTViBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNl X25vdF9udWxsICopOworRVJST1I6ICBDT1BZIEZPUkNFX05PVF9OVUxMIHJlcXVpcmVzIENT ViBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX251 bGwgKik7CitFUlJPUjogIENPUFkgRk9SQ0VfTlVMTCByZXF1aXJlcyBDU1YgbW9kZQorY29w eSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBvbl9lcnJvciBpZ25vcmUpOwor RVJST1I6ICBDT1BZIE9OX0VSUk9SIGNhbm5vdCBiZSB1c2VkIHdpdGggQ09QWSBUTworTElO RSAxOiBjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIG9uX2Vycm9yIGln bm9yZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorY29weSBjb3B5dGVzdCBmcm9tIHN0ZGluKGZvcm1hdCBqc29uKTsKK0VSUk9SOiAgQ09Q WSBKU09OIG1vZGUgY2Fubm90IGJlIHVzZWQgd2l0aCBDT1BZIEZST00KK2NvcHkgY29weXRl c3QgKHN0eWxlKSB0byBzdGRvdXQgKGZvcm1hdCBqc29uKTsKK0VSUk9SOiAgY29sdW1uIHNl bGVjdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGluIEpTT04gbW9kZQorLS0gYWxsIG9mIHRoZSBh Ym92ZSBzaG91bGQgeWllbGQgZXJyb3IKKy0tIGVtYmVkZGVkIGVzY2FwZWQgY2hhcmFjdGVy cworY3JlYXRlIHRlbXAgdGFibGUgY29weWpzb250ZXN0ICgKKyAgICBpZCBiaWdzZXJpYWws CisgICAgZjEgdGV4dCwKKyAgICBmMiB0aW1lc3RhbXB0eik7CitpbnNlcnQgaW50byBjb3B5 anNvbnRlc3QKKyAgc2VsZWN0IGcuaSwKKyAgICAgICAgIENBU0UgV0hFTiBnLmkgJSAyID0g MCBUSEVOCisgICAgICAgICAgICdsaW5lIHdpdGggJycgaW4gaXQ6ICcgfHwgZy5pOjp0ZXh0 CisgICAgICAgICBFTFNFCisgICAgICAgICAgICdsaW5lIHdpdGggIiBpbiBpdDogJyB8fCBn Lmk6OnRleHQKKyAgICAgICAgIEVORCwKKyAgICAgICAgICdNb24gRmViIDEwIDE3OjMyOjAx IDE5OTcgUFNUJworICBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDUpIGFzIGcoaSk7CitpbnNl cnQgaW50byBjb3B5anNvbnRlc3QgKGYxKSB2YWx1ZXMKKyhFJ2FhYVwiYmJiJzo6dGV4dCks CisoRSdhYWFcXGJiYic6OnRleHQpLAorKEUnYWFhXC9iYmInOjp0ZXh0KSwKKyhFJ2FhYVxi YmJiJzo6dGV4dCksCisoRSdhYWFcZmJiYic6OnRleHQpLAorKEUnYWFhXG5iYmInOjp0ZXh0 KSwKKyhFJ2FhYVxyYmJiJzo6dGV4dCksCisoRSdhYWFcdGJiYic6OnRleHQpOworY29weSBj b3B5anNvbnRlc3QgdG8gc3Rkb3V0IGpzb247Cit7ImlkIjoxLCJmMSI6ImxpbmUgd2l0aCBc IiBpbiBpdDogMSIsImYyIjoiMTk5Ny0wMi0xMFQxNzozMjowMS0wODowMCJ9Cit7ImlkIjoy LCJmMSI6ImxpbmUgd2l0aCAnIGluIGl0OiAyIiwiZjIiOiIxOTk3LTAyLTEwVDE3OjMyOjAx LTA4OjAwIn0KK3siaWQiOjMsImYxIjoibGluZSB3aXRoIFwiIGluIGl0OiAzIiwiZjIiOiIx OTk3LTAyLTEwVDE3OjMyOjAxLTA4OjAwIn0KK3siaWQiOjQsImYxIjoibGluZSB3aXRoICcg aW4gaXQ6IDQiLCJmMiI6IjE5OTctMDItMTBUMTc6MzI6MDEtMDg6MDAifQoreyJpZCI6NSwi ZjEiOiJsaW5lIHdpdGggXCIgaW4gaXQ6IDUiLCJmMiI6IjE5OTctMDItMTBUMTc6MzI6MDEt MDg6MDAifQoreyJpZCI6MSwiZjEiOiJhYWFcImJiYiIsImYyIjpudWxsfQoreyJpZCI6Miwi ZjEiOiJhYWFcXGJiYiIsImYyIjpudWxsfQoreyJpZCI6MywiZjEiOiJhYWEvYmJiIiwiZjIi Om51bGx9Cit7ImlkIjo0LCJmMSI6ImFhYVxiYmJiIiwiZjIiOm51bGx9Cit7ImlkIjo1LCJm MSI6ImFhYVxmYmJiIiwiZjIiOm51bGx9Cit7ImlkIjo2LCJmMSI6ImFhYVxuYmJiIiwiZjIi Om51bGx9Cit7ImlkIjo3LCJmMSI6ImFhYVxyYmJiIiwiZjIiOm51bGx9Cit7ImlkIjo4LCJm MSI6ImFhYVx0YmJiIiwiZjIiOm51bGx9CiBjcmVhdGUgdGVtcCB0YWJsZSBjb3B5dGVzdDQg KAogCWMxIGludCwKIAkiY29sbmFtZSB3aXRoIHRhYjogCSIgdGV4dCk7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2NvcHkuc3FsCmluZGV4IDY1Y2JkYWY3ZjNlLi5jNTU4ZWJhMjAyYSAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvY29weS5zcWwKQEAgLTgyLDYgKzgyLDU0IEBAIHRoaXMgaXMganVzdCBhIGxpbmUgZnVs bCBvZiBqdW5rIHRoYXQgd291bGQgZXJyb3Igb3V0IGlmIHBhcnNlZAogCiBjb3B5IGNvcHl0 ZXN0MyB0byBzdGRvdXQgY3N2IGhlYWRlcjsKIAorLS0tIHRlc3QgY29weWluZyBpbiBKU09O IG1vZGUgd2l0aCB2YXJpb3VzIHN0eWxlcworY29weSBjb3B5dGVzdCB0byBzdGRvdXQganNv bjsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbik7CisKKy0tIGFsbCBv ZiB0aGUgZm9sbG93aW5nIHNob3VsZCB5aWVsZCBlcnJvcgorY29weSBjb3B5dGVzdCB0byBz dGRvdXQgKGZvcm1hdCBqc29uLCBkZWxpbWl0ZXIgJ3wnKTsKK2NvcHkgY29weXRlc3QgdG8g c3Rkb3V0IChmb3JtYXQganNvbiwgbnVsbCAnXE4nKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rk b3V0IChmb3JtYXQganNvbiwgZGVmYXVsdCAnfCcpOworY29weSBjb3B5dGVzdCB0byBzdGRv dXQgKGZvcm1hdCBqc29uLCBoZWFkZXIpOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZv cm1hdCBqc29uLCBoZWFkZXIgMSk7Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0 IGpzb24sIHF1b3RlICciJyk7Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpz b24sIGVzY2FwZSAnIicpOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29u LCBmb3JjZV9xdW90ZSAqKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNv biwgZm9yY2Vfbm90X251bGwgKik7Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0 IGpzb24sIGZvcmNlX251bGwgKik7Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0 IGpzb24sIG9uX2Vycm9yIGlnbm9yZSk7Citjb3B5IGNvcHl0ZXN0IGZyb20gc3RkaW4oZm9y bWF0IGpzb24pOworY29weSBjb3B5dGVzdCAoc3R5bGUpIHRvIHN0ZG91dCAoZm9ybWF0IGpz b24pOworLS0gYWxsIG9mIHRoZSBhYm92ZSBzaG91bGQgeWllbGQgZXJyb3IKKworLS0gZW1i ZWRkZWQgZXNjYXBlZCBjaGFyYWN0ZXJzCitjcmVhdGUgdGVtcCB0YWJsZSBjb3B5anNvbnRl c3QgKAorICAgIGlkIGJpZ3NlcmlhbCwKKyAgICBmMSB0ZXh0LAorICAgIGYyIHRpbWVzdGFt cHR6KTsKKworaW5zZXJ0IGludG8gY29weWpzb250ZXN0CisgIHNlbGVjdCBnLmksCisgICAg ICAgICBDQVNFIFdIRU4gZy5pICUgMiA9IDAgVEhFTgorICAgICAgICAgICAnbGluZSB3aXRo ICcnIGluIGl0OiAnIHx8IGcuaTo6dGV4dAorICAgICAgICAgRUxTRQorICAgICAgICAgICAn bGluZSB3aXRoICIgaW4gaXQ6ICcgfHwgZy5pOjp0ZXh0CisgICAgICAgICBFTkQsCisgICAg ICAgICAnTW9uIEZlYiAxMCAxNzozMjowMSAxOTk3IFBTVCcKKyAgZnJvbSBnZW5lcmF0ZV9z ZXJpZXMoMSw1KSBhcyBnKGkpOworCitpbnNlcnQgaW50byBjb3B5anNvbnRlc3QgKGYxKSB2 YWx1ZXMKKyhFJ2FhYVwiYmJiJzo6dGV4dCksCisoRSdhYWFcXGJiYic6OnRleHQpLAorKEUn YWFhXC9iYmInOjp0ZXh0KSwKKyhFJ2FhYVxiYmJiJzo6dGV4dCksCisoRSdhYWFcZmJiYic6 OnRleHQpLAorKEUnYWFhXG5iYmInOjp0ZXh0KSwKKyhFJ2FhYVxyYmJiJzo6dGV4dCksCiso RSdhYWFcdGJiYic6OnRleHQpOworCitjb3B5IGNvcHlqc29udGVzdCB0byBzdGRvdXQganNv bjsKKwogY3JlYXRlIHRlbXAgdGFibGUgY29weXRlc3Q0ICgKIAljMSBpbnQsCiAJImNvbG5h bWUgd2l0aCB0YWI6IAkiIHRleHQpOwotLSAKMi40My4wCgo= --------------7Nf0ajVYMcC3OnzF2myr7D0R Content-Type: text/x-patch; charset=UTF-8; name="v25-0003-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Disposition: attachment; filename*0="v25-0003-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Transfer-Encoding: base64 RnJvbSAzMTJkZWRjMGEzYWVhMTgzM2JiOTkyZjA5NjEyMWRiNDA4NmZkMDc1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFp bC5jb20+CkRhdGU6IE1vbiwgOSBGZWIgMjAyNiAxMToxNDoxNSArMDgwMApTdWJqZWN0OiBb UEFUQ0ggdjI1IDMvNF0gQWRkIG9wdGlvbiBmb3JjZV9hcnJheSBmb3IgQ09QWSBKU09OIEZP Uk1BVAoKLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbCAgICAgICAgIHwgMzAgKysr KysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgICAgICAg IHwgMTMgKysrKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyAgICAgIHwg NDMgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCiBzcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmluLmMgICAgIHwgIDIgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaCAg ICAgICAgfCAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0IHwgMjMg KysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwgICAgICB8 ICA4ICsrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCAxMTUgaW5zZXJ0aW9ucygrKSwgNSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbCBiL2Rv Yy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCmluZGV4IDc1ZjU1YmJmNmY4Li5hNzk1ODdmNzYx MyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL3JlZi9jb3B5LnNnbWwKQEAgLTQwLDYgKzQwLDcgQEAgQ09QWSB7IDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIDxy ZXBsYWNlYWJsZQogICAgIEhFQURFUiBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5ib29sZWFuPC9yZXBsYWNlYWJsZT4gfCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+aW50ZWdlcjwvcmVwbGFjZWFibGU+IHwgTUFUQ0ggXQogICAgIFFVT1RFICc8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cXVvdGVfY2hhcmFjdGVyPC9yZXBsYWNlYWJsZT4n CiAgICAgRVNDQVBFICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXNjYXBlX2No YXJhY3RlcjwvcmVwbGFjZWFibGU+JworICAgIEZPUkNFX0FSUkFZIFsgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmJvb2xlYW48L3JlcGxhY2VhYmxlPiBdCiAgICAgRk9SQ0Vf UVVPVEUgeyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwv cmVwbGFjZWFibGU+IFssIC4uLl0gKSB8ICogfQogICAgIEZPUkNFX05PVF9OVUxMIHsgKCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxl PiBbLCAuLi5dICkgfCAqIH0KICAgICBGT1JDRV9OVUxMIHsgKCA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgfCAq IH0KQEAgLTM2Niw2ICszNjcsMTkgQEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZQogICAg IDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeSBp ZD0ic3FsLWNvcHktcGFyYW1zLWZvcmNlLWFycmF5Ij4KKyAgICA8dGVybT48bGl0ZXJhbD5G T1JDRV9BUlJBWTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFy YT4KKyAgICAgIEZvcmNlIG91dHB1dCBvZiBzcXVhcmUgYnJhY2tldHMgYXMgYXJyYXkgZGVj b3JhdGlvbnMgYXQgdGhlIGJlZ2lubmluZworICAgICAgYW5kIGVuZCBvZiBvdXRwdXQsIGFu ZCBjb21tYXMgYmV0d2VlbiB0aGUgcm93cy4gSXQgaXMgYWxsb3dlZCBvbmx5IGluCisgICAg ICA8Y29tbWFuZD5DT1BZIFRPPC9jb21tYW5kPiwgYW5kIG9ubHkgd2hlbiB1c2luZworICAg ICAgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gZm9ybWF0LiBUaGUgZGVmYXVsdCBpcworICAg ICAgPGxpdGVyYWw+ZmFsc2U8L2xpdGVyYWw+LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0 aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwt Y29weS1wYXJhbXMtZm9yY2UtcXVvdGUiPgogICAgIDx0ZXJtPjxsaXRlcmFsPkZPUkNFX1FV T1RFPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CkBAIC0xMTAzLDYgKzExMTcs MjIgQEAgQ09QWSBjb3VudHJ5IFRPIFNURE9VVCAoREVMSU1JVEVSICd8Jyk7CiA8L3Byb2dy YW1saXN0aW5nPgogICA8L3BhcmE+CiAKKzxwYXJhPgorICAgV2hlbiB0aGUgPGxpdGVyYWw+ Rk9SQ0VfQVJSQVk8L2xpdGVyYWw+IG9wdGlvbiBpcyBlbmFibGVkLAorICAgdGhlIGVudGly ZSBvdXRwdXQgaXMgd3JhcHBlZCBpbiBhIHNpbmdsZSBKU09OIGFycmF5IHdpdGggcm93cyBz ZXBhcmF0ZWQgYnkgY29tbWFzOgorPHByb2dyYW1saXN0aW5nPgorQ09QWSAoU0VMRUNUICog RlJPTSAoVkFMVUVTKDEpLCgyKSkgdmFsKGlkKSkgVE8gU1RET1VUICAoRk9STUFUIEpTT04s IEZPUkNFX0FSUkFZKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CitUaGUgb3V0cHV0IGlzIGFzIGZv bGxvd3M6Cis8c2NyZWVuPgorWworIHsiaWQiOjF9CisseyJpZCI6Mn0KK10KKzwvc2NyZWVu PgorPC9wYXJhPgorCisKICAgPHBhcmE+CiAgICBUbyBjb3B5IGRhdGEgZnJvbSBhIGZpbGUg aW50byB0aGUgPGxpdGVyYWw+Y291bnRyeTwvbGl0ZXJhbD4gdGFibGU6CiA8cHJvZ3JhbWxp c3Rpbmc+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9jb3B5LmMKaW5kZXggMjljMTIxYzdmMDguLjg0MjU0ZDQ2YTY3 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29weS5jCkBAIC01NjksNiArNTY5LDcgQEAgUHJvY2Vzc0NvcHlP cHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAlib29sCQlvbl9lcnJvcl9zcGVjaWZpZWQg PSBmYWxzZTsKIAlib29sCQlsb2dfdmVyYm9zaXR5X3NwZWNpZmllZCA9IGZhbHNlOwogCWJv b2wJCXJlamVjdF9saW1pdF9zcGVjaWZpZWQgPSBmYWxzZTsKKwlib29sCQlmb3JjZV9hcnJh eV9zcGVjaWZpZWQgPSBmYWxzZTsKIAlMaXN0Q2VsbCAgICpvcHRpb247CiAKIAkvKiBTdXBw b3J0IGV4dGVybmFsIHVzZSBmb3Igb3B0aW9uIHNhbml0eSBjaGVja2luZyAqLwpAQCAtNzI1 LDYgKzcyNiwxMyBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAog CQkJCQkJCQlkZWZlbC0+ZGVmbmFtZSksCiAJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBz dGF0ZSwgZGVmZWwtPmxvY2F0aW9uKSkpOwogCQl9CisJCWVsc2UgaWYgKHN0cmNtcChkZWZl bC0+ZGVmbmFtZSwgImZvcmNlX2FycmF5IikgPT0gMCkKKwkJeworCQkJaWYgKGZvcmNlX2Fy cmF5X3NwZWNpZmllZCkKKwkJCQllcnJvckNvbmZsaWN0aW5nRGVmRWxlbShkZWZlbCwgcHN0 YXRlKTsKKwkJCWZvcmNlX2FycmF5X3NwZWNpZmllZCA9IHRydWU7CisJCQlvcHRzX291dC0+ Zm9yY2VfYXJyYXkgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKKwkJfQogCQllbHNlIGlmIChz dHJjbXAoZGVmZWwtPmRlZm5hbWUsICJvbl9lcnJvciIpID09IDApCiAJCXsKIAkJCWlmIChv bl9lcnJvcl9zcGVjaWZpZWQpCkBAIC05NjcsNiArOTc1LDExIEBAIFByb2Nlc3NDb3B5T3B0 aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURf UEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQllcnJtc2coIkNPUFkgJXMgbW9kZSBjYW5ub3QgYmUg dXNlZCB3aXRoICVzIiwgIkpTT04iLCAiQ09QWSBGUk9NIikpOwogCisJaWYgKG9wdHNfb3V0 LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfSlNPTiAmJiBvcHRzX291dC0+Zm9yY2VfYXJyYXkp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1F VEVSX1ZBTFVFKSwKKwkJCQllcnJtc2coIkNPUFkgJXMgY2FuIG9ubHkgYmUgdXNlZCB3aXRo IEpTT04gbW9kZSIsICJGT1JDRV9BUlJBWSIpKTsKKwogCWlmIChvcHRzX291dC0+ZGVmYXVs dF9wcmludCkKIAl7CiAJCWlmICghaXNfZnJvbSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKaW5k ZXggOTY2MDUwNzllZWIuLmE3NjE1Y2MzNGVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwpA QCAtODgsNiArODgsNyBAQCB0eXBlZGVmIHN0cnVjdCBDb3B5VG9TdGF0ZURhdGEKIAlib29s CQlpc19wcm9ncmFtOwkJLyogaXMgJ2ZpbGVuYW1lJyBhIHByb2dyYW0gdG8gcG9wZW4/ICov CiAKIAkvKiBKU09OIGZvcm1hdCBzdGF0ZSAqLworCWJvb2wJCWpzb25fcm93X2RlbGltX25l ZWRlZDsJLyogbmVlZCBkZWxpbWl0ZXIgYmVmb3JlIG5leHQgcm93ICovCiAJYm9vbAkJanNv bl90dXBsZWRlc2NfcmVhZHk7CS8qIFR1cGxlRGVzYyBzZXR1cCBkb25lIGZvciBKU09OICov CiAJU3RyaW5nSW5mb0RhdGEganNvbl9idWY7CS8qIHJldXNhYmxlIGJ1ZmZlciBmb3IgSlNP TiBvdXRwdXQgKi8KIApAQCAtMTM4LDYgKzEzOSw3IEBAIHN0YXRpYyB2b2lkIENvcHlUb1Rl eHRMaWtlT25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3Qs CiAJCQkJCQkJCSBib29sIGlzX2Nzdik7CiBzdGF0aWMgdm9pZCBDb3B5VG9UZXh0TGlrZUVu ZChDb3B5VG9TdGF0ZSBjc3RhdGUpOwogc3RhdGljIHZvaWQgQ29weVRvSnNvbk9uZVJvdyhD b3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KTsKK3N0YXRpYyB2b2lk IENvcHlUb0pzb25FbmQoQ29weVRvU3RhdGUgY3N0YXRlKTsKIHN0YXRpYyB2b2lkIENvcHlU b0JpbmFyeVN0YXJ0KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVEZXNjIHR1cERlc2MpOwog c3RhdGljIHZvaWQgQ29weVRvQmluYXJ5T3V0RnVuYyhDb3B5VG9TdGF0ZSBjc3RhdGUsIE9p ZCBhdHR0eXBpZCwgRm1nckluZm8gKmZpbmZvKTsKIHN0YXRpYyB2b2lkIENvcHlUb0JpbmFy eU9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KTsKQEAg LTE1Nyw4ICsxNTksOSBAQCBzdGF0aWMgdm9pZCBDb3B5U2VuZEludDE2KENvcHlUb1N0YXRl IGNzdGF0ZSwgaW50MTYgdmFsKTsKIC8qCiAgKiBDT1BZIFRPIHJvdXRpbmVzIGZvciBidWls dC1pbiBmb3JtYXRzLgogICoKLSAqIENTViwgdGV4dCBhbmQganNvbiBmb3JtYXRzIHNoYXJl IHRoZSBzYW1lIFRleHRMaWtlIHJvdXRpbmVzIGV4Y2VwdCBmb3IgdGhlCi0gKiBvbmUtcm93 IGNhbGxiYWNrLgorICogVGV4dCBhbmQgQ1NWIGZvcm1hdHMgc2hhcmUgdGhlIHNhbWUgVGV4 dExpa2Ugcm91dGluZXMgZXhjZXB0IGZvciB0aGUKKyAqIG9uZS1yb3cgY2FsbGJhY2suICBK U09OIHNoYXJlcyB0aGUgc3RhcnQgYW5kIG91dGZ1bmMgY2FsbGJhY2tzIHdpdGgKKyAqIHRl eHQvQ1NWLCBidXQgaGFzIGl0cyBvd24gb25lLXJvdyBhbmQgZW5kIGNhbGxiYWNrcy4KICAq LwogCiAvKiB0ZXh0IGZvcm1hdCAqLwpAQCAtMTgyLDcgKzE4NSw3IEBAIHN0YXRpYyBjb25z dCBDb3B5VG9Sb3V0aW5lIENvcHlUb1JvdXRpbmVKc29uID0gewogCS5Db3B5VG9TdGFydCA9 IENvcHlUb1RleHRMaWtlU3RhcnQsCiAJLkNvcHlUb091dEZ1bmMgPSBDb3B5VG9UZXh0TGlr ZU91dEZ1bmMsCiAJLkNvcHlUb09uZVJvdyA9IENvcHlUb0pzb25PbmVSb3csCi0JLkNvcHlU b0VuZCA9IENvcHlUb1RleHRMaWtlRW5kLAorCS5Db3B5VG9FbmQgPSBDb3B5VG9Kc29uRW5k LAogfTsKIAogLyogYmluYXJ5IGZvcm1hdCAqLwpAQCAtMjU4LDYgKzI2MSwxNSBAQCBDb3B5 VG9UZXh0TGlrZVN0YXJ0KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVEZXNjIHR1cERlc2Mp CiAJCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhjc3RhdGUtPmNvcHljb250ZXh0 KTsKIAkJaW5pdFN0cmluZ0luZm8oJmNzdGF0ZS0+anNvbl9idWYpOwogCQlNZW1vcnlDb250 ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKworCQkvKgorCQkgKiBJZiBGT1JDRV9BUlJBWSBoYXMg YmVlbiBzcGVjaWZpZWQsIHNlbmQgdGhlIG9wZW5pbmcgYnJhY2tldC4KKwkJICovCisJCWlm IChjc3RhdGUtPm9wdHMuZm9yY2VfYXJyYXkpCisJCXsKKwkJCUNvcHlTZW5kQ2hhcihjc3Rh dGUsICdbJyk7CisJCQlDb3B5U2VuZFRleHRMaWtlRW5kT2ZSb3coY3N0YXRlKTsKKwkJfQog CX0KIH0KIApAQCAtMzM1LDcgKzM0Nyw3IEBAIENvcHlUb1RleHRMaWtlT25lUm93KENvcHlU b1N0YXRlIGNzdGF0ZSwKIAlDb3B5U2VuZFRleHRMaWtlRW5kT2ZSb3coY3N0YXRlKTsKIH0K IAotLyogSW1wbGVtZW50YXRpb24gb2YgdGhlIGVuZCBjYWxsYmFjayBmb3IgdGV4dCwgQ1NW LCBhbmQganNvbiBmb3JtYXRzICovCisvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZW5kIGNh bGxiYWNrIGZvciB0ZXh0IGFuZCBDU1YgZm9ybWF0cyAqLwogc3RhdGljIHZvaWQKIENvcHlU b1RleHRMaWtlRW5kKENvcHlUb1N0YXRlIGNzdGF0ZSkKIHsKQEAgLTM3MSwxMSArMzgzLDM0 IEBAIENvcHlUb0pzb25PbmVSb3coQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xv dCAqc2xvdCkKIAlyZXNldFN0cmluZ0luZm8oJmNzdGF0ZS0+anNvbl9idWYpOwogCWNvbXBv c2l0ZV90b19qc29uKHJvd2RhdGEsICZjc3RhdGUtPmpzb25fYnVmLCBmYWxzZSk7CiAKKwlp ZiAoY3N0YXRlLT5vcHRzLmZvcmNlX2FycmF5KQorCXsKKwkJaWYgKGNzdGF0ZS0+anNvbl9y b3dfZGVsaW1fbmVlZGVkKQorCQkJQ29weVNlbmRDaGFyKGNzdGF0ZSwgJywnKTsKKwkJZWxz ZQorCQl7CisJCQkvKiBmaXJzdCByb3cgbmVlZHMgbm8gZGVsaW1pdGVyICovCisJCQlDb3B5 U2VuZENoYXIoY3N0YXRlLCAnICcpOworCQkJY3N0YXRlLT5qc29uX3Jvd19kZWxpbV9uZWVk ZWQgPSB0cnVlOworCQl9CisJfQorCiAJQ29weVNlbmREYXRhKGNzdGF0ZSwgY3N0YXRlLT5q c29uX2J1Zi5kYXRhLCBjc3RhdGUtPmpzb25fYnVmLmxlbik7CiAKIAlDb3B5U2VuZFRleHRM aWtlRW5kT2ZSb3coY3N0YXRlKTsKIH0KIAorLyogSW1wbGVtZW50YXRpb24gb2YgdGhlIGVu ZCBjYWxsYmFjayBmb3IganNvbiBmb3JtYXQgKi8KK3N0YXRpYyB2b2lkCitDb3B5VG9Kc29u RW5kKENvcHlUb1N0YXRlIGNzdGF0ZSkKK3sKKwlpZiAoY3N0YXRlLT5vcHRzLmZvcmNlX2Fy cmF5KQorCXsKKwkJQ29weVNlbmRDaGFyKGNzdGF0ZSwgJ10nKTsKKwkJQ29weVNlbmRUZXh0 TGlrZUVuZE9mUm93KGNzdGF0ZSk7CisJfQorfQorCiAvKgogICogSW1wbGVtZW50YXRpb24g b2YgdGhlIHN0YXJ0IGNhbGxiYWNrIGZvciBiaW5hcnkgZm9ybWF0LiBTZW5kIGEgaGVhZGVy CiAgKiBmb3IgYSBiaW5hcnkgY29weS4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCBk MjU3ODM3YjBjNS4uNzZkMzI1OGU5MmIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAg LTEyMzIsNyArMTIzMiw3IEBAIENvcHlfY29tbW9uX29wdGlvbnMsICJERUZBVUxUIiwgIkZP UkNFX05PVF9OVUxMIiwgIkZPUkNFX05VTEwiLCAiRlJFRVpFIiwgXAogCiAvKiBDT1BZIFRP IG9wdGlvbnMgKi8KICNkZWZpbmUgQ29weV90b19vcHRpb25zIFwKLUNvcHlfY29tbW9uX29w dGlvbnMsICJGT1JDRV9RVU9URSIKK0NvcHlfY29tbW9uX29wdGlvbnMsICJGT1JDRV9RVU9U RSIsICJGT1JDRV9BUlJBWSIKIAogLyoKICAqIFRoZXNlIG9iamVjdCB0eXBlcyB3ZXJlIGlu dHJvZHVjZWQgbGF0ZXIgdGhhbiBvdXIgc3VwcG9ydCBjdXRvZmYgb2YKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2Nv cHkuaAppbmRleCAyYjViZWY2NzM4ZS4uYWJlY2ZlNTEwOTggMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NvbW1hbmRzL2NvcHkuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5 LmgKQEAgLTg4LDYgKzg4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29weUZvcm1hdE9wdGlvbnMK IAlMaXN0CSAgICpmb3JjZV9ub3RudWxsOwkvKiBsaXN0IG9mIGNvbHVtbiBuYW1lcyAqLwog CWJvb2wJCWZvcmNlX25vdG51bGxfYWxsOwkvKiBGT1JDRV9OT1RfTlVMTCAqPyAqLwogCWJv b2wJICAgKmZvcmNlX25vdG51bGxfZmxhZ3M7CS8qIHBlci1jb2x1bW4gQ1NWIEZOTiBmbGFn cyAqLworCWJvb2wJCWZvcmNlX2FycmF5OwkvKiBhZGQgSlNPTiBhcnJheSBkZWNvcmF0aW9u cyAqLwogCUxpc3QJICAgKmZvcmNlX251bGw7CQkvKiBsaXN0IG9mIGNvbHVtbiBuYW1lcyAq LwogCWJvb2wJCWZvcmNlX251bGxfYWxsOyAvKiBGT1JDRV9OVUxMICo/ICovCiAJYm9vbAkg ICAqZm9yY2VfbnVsbF9mbGFnczsJLyogcGVyLWNvbHVtbiBDU1YgRk4gZmxhZ3MgKi8KZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0CmluZGV4IDRlYTY1OGE0NWRlLi5hN2U4OGI3 MTFkNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0CkBAIC0xMTQsNiArMTE0 LDI5IEBAIEVSUk9SOiAgQ09QWSBKU09OIG1vZGUgY2Fubm90IGJlIHVzZWQgd2l0aCBDT1BZ IEZST00KIGNvcHkgY29weXRlc3QgKHN0eWxlKSB0byBzdGRvdXQgKGZvcm1hdCBqc29uKTsK IEVSUk9SOiAgY29sdW1uIHNlbGVjdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGluIEpTT04gbW9k ZQogLS0gYWxsIG9mIHRoZSBhYm92ZSBzaG91bGQgeWllbGQgZXJyb3IKKy0tIHNob3VsZCBm YWlsOiBmb3JjZV9hcnJheSByZXF1aXJlcyBqc29uIGZvcm1hdAorY29weSBjb3B5dGVzdCB0 byBzdGRvdXQgKGZvcm1hdCBjc3YsIGZvcmNlX2FycmF5IHRydWUpOworRVJST1I6ICBDT1BZ IEZPUkNFX0FSUkFZIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBKU09OIG1vZGUKKy0tIGZvcmNl X2FycmF5IHZhcmlhbnRzCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24s IGZvcmNlX2FycmF5KTsKK1sKKyB7InN0eWxlIjoiRE9TIiwidGVzdCI6ImFiY1xyXG5kZWYi LCJmaWxsZXIiOjF9CisseyJzdHlsZSI6IlVuaXgiLCJ0ZXN0IjoiYWJjXG5kZWYiLCJmaWxs ZXIiOjJ9CisseyJzdHlsZSI6Ik1hYyIsInRlc3QiOiJhYmNccmRlZiIsImZpbGxlciI6M30K Kyx7InN0eWxlIjoiZXNjXFxhcGUiLCJ0ZXN0IjoiYVxcclxcXHJcXFxuXFxuYiIsImZpbGxl ciI6NH0KK10KK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2Vf YXJyYXkgdHJ1ZSk7CitbCisgeyJzdHlsZSI6IkRPUyIsInRlc3QiOiJhYmNcclxuZGVmIiwi ZmlsbGVyIjoxfQorLHsic3R5bGUiOiJVbml4IiwidGVzdCI6ImFiY1xuZGVmIiwiZmlsbGVy IjoyfQorLHsic3R5bGUiOiJNYWMiLCJ0ZXN0IjoiYWJjXHJkZWYiLCJmaWxsZXIiOjN9Ciss eyJzdHlsZSI6ImVzY1xcYXBlIiwidGVzdCI6ImFcXHJcXFxyXFxcblxcbmIiLCJmaWxsZXIi OjR9CitdCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX2Fy cmF5IGZhbHNlKTsKK3sic3R5bGUiOiJET1MiLCJ0ZXN0IjoiYWJjXHJcbmRlZiIsImZpbGxl ciI6MX0KK3sic3R5bGUiOiJVbml4IiwidGVzdCI6ImFiY1xuZGVmIiwiZmlsbGVyIjoyfQor eyJzdHlsZSI6Ik1hYyIsInRlc3QiOiJhYmNccmRlZiIsImZpbGxlciI6M30KK3sic3R5bGUi OiJlc2NcXGFwZSIsInRlc3QiOiJhXFxyXFxcclxcXG5cXG5iIiwiZmlsbGVyIjo0fQogLS0g ZW1iZWRkZWQgZXNjYXBlZCBjaGFyYWN0ZXJzCiBjcmVhdGUgdGVtcCB0YWJsZSBjb3B5anNv bnRlc3QgKAogICAgIGlkIGJpZ3NlcmlhbCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2NvcHkuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwKaW5kZXgg YzU1OGViYTIwMmEuLmFlMjAyZmM1ZThkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9jb3B5LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbApAQCAt MTAyLDYgKzEwMiwxNCBAQCBjb3B5IGNvcHl0ZXN0IGZyb20gc3RkaW4oZm9ybWF0IGpzb24p OwogY29weSBjb3B5dGVzdCAoc3R5bGUpIHRvIHN0ZG91dCAoZm9ybWF0IGpzb24pOwogLS0g YWxsIG9mIHRoZSBhYm92ZSBzaG91bGQgeWllbGQgZXJyb3IKIAorLS0gc2hvdWxkIGZhaWw6 IGZvcmNlX2FycmF5IHJlcXVpcmVzIGpzb24gZm9ybWF0Citjb3B5IGNvcHl0ZXN0IHRvIHN0 ZG91dCAoZm9ybWF0IGNzdiwgZm9yY2VfYXJyYXkgdHJ1ZSk7CisKKy0tIGZvcmNlX2FycmF5 IHZhcmlhbnRzCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNl X2FycmF5KTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2Vf YXJyYXkgdHJ1ZSk7Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZv cmNlX2FycmF5IGZhbHNlKTsKKwogLS0gZW1iZWRkZWQgZXNjYXBlZCBjaGFyYWN0ZXJzCiBj cmVhdGUgdGVtcCB0YWJsZSBjb3B5anNvbnRlc3QgKAogICAgIGlkIGJpZ3NlcmlhbCwKLS0g CjIuNDMuMAoK --------------7Nf0ajVYMcC3OnzF2myr7D0R Content-Type: text/x-patch; charset=UTF-8; name="v25-0004-COPY-TO-JSON-build-JSON-per-column-support-colum.patch" Content-Disposition: attachment; filename*0="v25-0004-COPY-TO-JSON-build-JSON-per-column-support-colum.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBkMDQzYWRjYmIyMDMyZWIyYzEyMThkZjk5OTkyMDA4ODM4ZjJlMjAwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogV2VkLCA0IE1hciAyMDI2IDA5OjQwOjEwIC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MjUgNC80XSBDT1BZIFRPIEpTT046IGJ1aWxkIEpTT04gcGVyLWNvbHVtbiwgc3Vw cG9ydCBjb2x1bW4KIGxpc3RzCgpSZXdvcmsgQ29weVRvSnNvbk9uZVJvdyB0byBpdGVyYXRl IGF0dG51bWxpc3QgYW5kIGJ1aWxkIEpTT04gb2JqZWN0cwpjb2x1bW4tYnktY29sdW1uIHVz aW5nIGRhdHVtX3RvX2pzb25fYXBwZW5kLCBpbnN0ZWFkIG9mIGNvbnZlcnRpbmcgdGhlCndo b2xlIHJvdyB2aWEgRXhlY0ZldGNoU2xvdEhlYXBUdXBsZURhdHVtICsgY29tcG9zaXRlX3Rv X2pzb24uCgpUaGlzIGhhcyBzZXZlcmFsIGJlbmVmaXRzOgotIENvbHVtbiBsaXN0cyBub3cg d29yayB3aXRoIEpTT04gZm9ybWF0IChwcmV2aW91c2x5IHJlamVjdGVkKQotIFBlci1jb2x1 bW4gSlNPTiB0eXBlIGNhdGVnb3JpemF0aW9uIGlzIGRvbmUgb25jZSBhdCBzdGFydHVwIHJh dGhlcgogIHRoYW4gb24gZXZlcnkgcm93IChjb21wb3NpdGVfdG9fanNvbiBjYWxsZWQganNv bl9jYXRlZ29yaXplX3R5cGUKICBwZXIgY29sdW1uIHBlciByb3cpCi0gVGhlIFR1cGxlRGVz YyBtZW1jcHkvQmxlc3NUdXBsZURlc2MgaGFjayBmb3IgcXVlcnktYmFzZWQgQ09QWSBpcwog IGVsaW1pbmF0ZWQgZW50aXJlbHkKLSBQcmUtZXNjYXBlZCBjb2x1bW4ga2V5IHN0cmluZ3Mg YXZvaWQgcmVwZWF0ZWQgZXNjYXBlX2pzb24gY2FsbHMKCkFkZCBDb3B5VG9Kc29uU3RhcnQg KHByZS1jb21wdXRlcyBlc2NhcGVkIGtleSBzdHJpbmdzIGFuZCBqc29uX2J1ZiksCkNvcHlU b0pzb25PdXRGdW5jIChjYWxscyBqc29uX2NhdGVnb3JpemVfdHlwZSBvbmNlIHBlciBjb2x1 bW4pLCBhbmQKZXhwb3J0IGRhdHVtX3RvX2pzb25fYXBwZW5kIGZyb20ganNvbi5jIGZvciBl ZmZpY2llbnQgYXBwZW5kLXRvLQpTdHJpbmdJbmZvIEpTT04gc2VyaWFsaXphdGlvbi4KLS0t CiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyAgICAgIHwgMTU5ICsrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jICAgICAg IHwgIDE0ICsrKwogc3JjL2luY2x1ZGUvdXRpbHMvanNvbmZ1bmNzLmggICAgICB8ICAgMiAr CiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0IHwgICA4ICstCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9jb3B5LnNxbCAgICAgIHwgICA0ICstCiA1IGZpbGVzIGNoYW5nZWQs IDEyNiBpbnNlcnRpb25zKCspLCA2MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0 by5jCmluZGV4IGE3NjE1Y2MzNGVjLi45NTAyYzkxMGI0MyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29w eXRvLmMKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJleGVjdXRvci9leGVjZGVzYy5o IgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Iv dHVwdGFibGUuaCIKLSNpbmNsdWRlICJmdW5jYXBpLmgiCiAjaW5jbHVkZSAibGlicHEvbGli cHEuaCIKICNpbmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1ZGUgIm1iL3BnX3dj aGFyLmgiCkBAIC0zNSw2ICszNCw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2lu Y2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9qc29uLmgiCisjaW5j bHVkZSAidXRpbHMvanNvbmZ1bmNzLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgi CiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIK QEAgLTg5LDggKzg5LDEwIEBAIHR5cGVkZWYgc3RydWN0IENvcHlUb1N0YXRlRGF0YQogCiAJ LyogSlNPTiBmb3JtYXQgc3RhdGUgKi8KIAlib29sCQlqc29uX3Jvd19kZWxpbV9uZWVkZWQ7 CS8qIG5lZWQgZGVsaW1pdGVyIGJlZm9yZSBuZXh0IHJvdyAqLwotCWJvb2wJCWpzb25fdHVw bGVkZXNjX3JlYWR5OwkvKiBUdXBsZURlc2Mgc2V0dXAgZG9uZSBmb3IgSlNPTiAqLwogCVN0 cmluZ0luZm9EYXRhIGpzb25fYnVmOwkvKiByZXVzYWJsZSBidWZmZXIgZm9yIEpTT04gb3V0 cHV0ICovCisJSnNvblR5cGVDYXRlZ29yeSAqanNvbl9jYXRlZ29yaWVzOwkvKiBwZXItY29s dW1uIEpTT04gdHlwZSBjYXRlZ29yaWVzICovCisJT2lkCQkgICAqanNvbl9vdXRmdW5jb2lk czsJLyogcGVyLWNvbHVtbiBKU09OIG91dHB1dCBmdW5jIE9JRHMgKi8KKwljaGFyCSAgKipq c29uX2NvbF9rZXlzOwkvKiBwZXItY29sdW1uIHByZS1lc2NhcGVkICJrZXkiOiBzdHJpbmdz ICovCiAKIAljb3B5X2RhdGFfZGVzdF9jYiBkYXRhX2Rlc3RfY2I7IC8qIGZ1bmN0aW9uIGZv ciB3cml0aW5nIGRhdGEgKi8KIApAQCAtMTM4LDYgKzE0MCw4IEBAIHN0YXRpYyB2b2lkIENv cHlUb0NTVk9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90 KTsKIHN0YXRpYyB2b2lkIENvcHlUb1RleHRMaWtlT25lUm93KENvcHlUb1N0YXRlIGNzdGF0 ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJCQkJCSBib29sIGlzX2Nzdik7CiBzdGF0 aWMgdm9pZCBDb3B5VG9UZXh0TGlrZUVuZChDb3B5VG9TdGF0ZSBjc3RhdGUpOworc3RhdGlj IHZvaWQgQ29weVRvSnNvblN0YXJ0KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVEZXNjIHR1 cERlc2MpOworc3RhdGljIHZvaWQgQ29weVRvSnNvbk91dEZ1bmMoQ29weVRvU3RhdGUgY3N0 YXRlLCBPaWQgYXR0dHlwaWQsIEZtZ3JJbmZvICpmaW5mbyk7CiBzdGF0aWMgdm9pZCBDb3B5 VG9Kc29uT25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3Qp Owogc3RhdGljIHZvaWQgQ29weVRvSnNvbkVuZChDb3B5VG9TdGF0ZSBjc3RhdGUpOwogc3Rh dGljIHZvaWQgQ29weVRvQmluYXJ5U3RhcnQoQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURl c2MgdHVwRGVzYyk7CkBAIC0xNjAsOCArMTY0LDggQEAgc3RhdGljIHZvaWQgQ29weVNlbmRJ bnQxNihDb3B5VG9TdGF0ZSBjc3RhdGUsIGludDE2IHZhbCk7CiAgKiBDT1BZIFRPIHJvdXRp bmVzIGZvciBidWlsdC1pbiBmb3JtYXRzLgogICoKICAqIFRleHQgYW5kIENTViBmb3JtYXRz IHNoYXJlIHRoZSBzYW1lIFRleHRMaWtlIHJvdXRpbmVzIGV4Y2VwdCBmb3IgdGhlCi0gKiBv bmUtcm93IGNhbGxiYWNrLiAgSlNPTiBzaGFyZXMgdGhlIHN0YXJ0IGFuZCBvdXRmdW5jIGNh bGxiYWNrcyB3aXRoCi0gKiB0ZXh0L0NTViwgYnV0IGhhcyBpdHMgb3duIG9uZS1yb3cgYW5k IGVuZCBjYWxsYmFja3MuCisgKiBvbmUtcm93IGNhbGxiYWNrLiAgSlNPTiBoYXMgaXRzIG93 biBzdGFydCwgb3V0ZnVuYywgb25lLXJvdywgYW5kIGVuZAorICogY2FsbGJhY2tzLgogICov CiAKIC8qIHRleHQgZm9ybWF0ICovCkBAIC0xODIsOCArMTg2LDggQEAgc3RhdGljIGNvbnN0 IENvcHlUb1JvdXRpbmUgQ29weVRvUm91dGluZUNTViA9IHsKIAogLyoganNvbiBmb3JtYXQg Ki8KIHN0YXRpYyBjb25zdCBDb3B5VG9Sb3V0aW5lIENvcHlUb1JvdXRpbmVKc29uID0gewot CS5Db3B5VG9TdGFydCA9IENvcHlUb1RleHRMaWtlU3RhcnQsCi0JLkNvcHlUb091dEZ1bmMg PSBDb3B5VG9UZXh0TGlrZU91dEZ1bmMsCisJLkNvcHlUb1N0YXJ0ID0gQ29weVRvSnNvblN0 YXJ0LAorCS5Db3B5VG9PdXRGdW5jID0gQ29weVRvSnNvbk91dEZ1bmMsCiAJLkNvcHlUb09u ZVJvdyA9IENvcHlUb0pzb25PbmVSb3csCiAJLkNvcHlUb0VuZCA9IENvcHlUb0pzb25FbmQs CiB9OwpAQCAtMjExLDcgKzIxNSw3IEBAIENvcHlUb0dldFJvdXRpbmUoY29uc3QgQ29weUZv cm1hdE9wdGlvbnMgKm9wdHMpCiAJcmV0dXJuICZDb3B5VG9Sb3V0aW5lVGV4dDsKIH0KIAot LyogSW1wbGVtZW50YXRpb24gb2YgdGhlIHN0YXJ0IGNhbGxiYWNrIGZvciB0ZXh0LCBDU1Ys IGFuZCBqc29uIGZvcm1hdHMgKi8KKy8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzdGFydCBj YWxsYmFjayBmb3IgdGV4dCBhbmQgQ1NWIGZvcm1hdHMgKi8KIHN0YXRpYyB2b2lkCiBDb3B5 VG9UZXh0TGlrZVN0YXJ0KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVEZXNjIHR1cERlc2Mp CiB7CkBAIC0yMzAsOCArMjM0LDYgQEAgQ29weVRvVGV4dExpa2VTdGFydChDb3B5VG9TdGF0 ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKQogCQlMaXN0Q2VsbCAgICpjdXI7CiAJCWJv b2wJCWhkcl9kZWxpbSA9IGZhbHNlOwogCi0JCUFzc2VydChjc3RhdGUtPm9wdHMuZm9ybWF0 ICE9IENPUFlfRk9STUFUX0pTT04pOwotCiAJCWZvcmVhY2goY3VyLCBjc3RhdGUtPmF0dG51 bWxpc3QpCiAJCXsKIAkJCWludAkJCWF0dG51bSA9IGxmaXJzdF9pbnQoY3VyKTsKQEAgLTI1 MSwzMCArMjUzLDEwIEBAIENvcHlUb1RleHRMaWtlU3RhcnQoQ29weVRvU3RhdGUgY3N0YXRl LCBUdXBsZURlc2MgdHVwRGVzYykKIAogCQlDb3B5U2VuZFRleHRMaWtlRW5kT2ZSb3coY3N0 YXRlKTsKIAl9Ci0KLQkvKiBKU09OLXNwZWNpZmljIGluaXRpYWxpemF0aW9uICovCi0JaWYg KGNzdGF0ZS0+b3B0cy5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfSlNPTikKLQl7Ci0JCU1lbW9y eUNvbnRleHQgb2xkY3h0OwotCi0JCS8qIEFsbG9jYXRlIHJldXNhYmxlIEpTT04gb3V0cHV0 IGJ1ZmZlciBpbiBsb25nLWxpdmVkIGNvbnRleHQgKi8KLQkJb2xkY3h0ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKGNzdGF0ZS0+Y29weWNvbnRleHQpOwotCQlpbml0U3RyaW5nSW5mbygm Y3N0YXRlLT5qc29uX2J1Zik7Ci0JCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwot Ci0JCS8qCi0JCSAqIElmIEZPUkNFX0FSUkFZIGhhcyBiZWVuIHNwZWNpZmllZCwgc2VuZCB0 aGUgb3BlbmluZyBicmFja2V0LgotCQkgKi8KLQkJaWYgKGNzdGF0ZS0+b3B0cy5mb3JjZV9h cnJheSkKLQkJewotCQkJQ29weVNlbmRDaGFyKGNzdGF0ZSwgJ1snKTsKLQkJCUNvcHlTZW5k VGV4dExpa2VFbmRPZlJvdyhjc3RhdGUpOwotCQl9Ci0JfQogfQogCiAvKgotICogSW1wbGVt ZW50YXRpb24gb2YgdGhlIG91dGZ1bmMgY2FsbGJhY2sgZm9yIHRleHQsIENTViwgYW5kIGpz b24gZm9ybWF0cy4gQXNzaWduCisgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgb3V0ZnVuYyBj YWxsYmFjayBmb3IgdGV4dCBhbmQgQ1NWIGZvcm1hdHMuIEFzc2lnbgogICogdGhlIG91dHB1 dCBmdW5jdGlvbiBkYXRhIHRvIHRoZSBnaXZlbiAqZmluZm8uCiAgKi8KIHN0YXRpYyB2b2lk CkBAIC0zNTQsMzQgKzMzNiw5NSBAQCBDb3B5VG9UZXh0TGlrZUVuZChDb3B5VG9TdGF0ZSBj c3RhdGUpCiAJLyogTm90aGluZyB0byBkbyBoZXJlICovCiB9CiAKKy8qCisgKiBJbXBsZW1l bnRhdGlvbiBvZiB0aGUgc3RhcnQgY2FsbGJhY2sgZm9yIGpzb24gZm9ybWF0LgorICoKKyAq IFByZS1jb21wdXRlIHRoZSBlc2NhcGVkIEpTT04ga2V5IHN0cmluZ3MgKCciY29sbmFtZSI6 JykgZm9yIGVhY2ggc2VsZWN0ZWQKKyAqIGNvbHVtbiBzbyBDb3B5VG9Kc29uT25lUm93IG9u bHkgbmVlZHMgdG8gY29weSB0aGVtIHBlciByb3cuCisgKi8KK3N0YXRpYyB2b2lkCitDb3B5 VG9Kc29uU3RhcnQoQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURlc2MgdHVwRGVzYykKK3sK KwlNZW1vcnlDb250ZXh0IG9sZGN4dDsKKwlTdHJpbmdJbmZvRGF0YSBrZXlidWY7CisKKwlv bGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oY3N0YXRlLT5jb3B5Y29udGV4dCk7CisK KwkvKiBBbGxvY2F0ZSByZXVzYWJsZSBKU09OIG91dHB1dCBidWZmZXIgKi8KKwlpbml0U3Ry aW5nSW5mbygmY3N0YXRlLT5qc29uX2J1Zik7CisKKwkvKiBQcmUtYnVpbGQgZXNjYXBlZCBr ZXkgc3RyaW5nczogIlwiY29sbmFtZVwiOiIgKi8KKwljc3RhdGUtPmpzb25fY29sX2tleXMg PSBwYWxsb2MwKHR1cERlc2MtPm5hdHRzICogc2l6ZW9mKGNoYXIgKikpOworCWluaXRTdHJp bmdJbmZvKCZrZXlidWYpOworCWZvcmVhY2hfaW50KGF0dG51bSwgY3N0YXRlLT5hdHRudW1s aXN0KQorCXsKKwkJY2hhcgkgICAqY29sbmFtZTsKKworCQljb2xuYW1lID0gTmFtZVN0cihU dXBsZURlc2NBdHRyKHR1cERlc2MsIGF0dG51bSAtIDEpLT5hdHRuYW1lKTsKKworCQlyZXNl dFN0cmluZ0luZm8oJmtleWJ1Zik7CisJCWVzY2FwZV9qc29uKCZrZXlidWYsIGNvbG5hbWUp OworCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcigma2V5YnVmLCAnOicpOworCisJCWNzdGF0ZS0+ anNvbl9jb2xfa2V5c1thdHRudW0gLSAxXSA9IHBzdHJkdXAoa2V5YnVmLmRhdGEpOworCX0K KwlwZnJlZShrZXlidWYuZGF0YSk7CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0 KTsKKworCS8qIElmIEZPUkNFX0FSUkFZLCBzZW5kIHRoZSBvcGVuaW5nIGJyYWNrZXQgKi8K KwlpZiAoY3N0YXRlLT5vcHRzLmZvcmNlX2FycmF5KQorCXsKKwkJQ29weVNlbmRDaGFyKGNz dGF0ZSwgJ1snKTsKKwkJQ29weVNlbmRUZXh0TGlrZUVuZE9mUm93KGNzdGF0ZSk7CisJfQor fQorCisvKgorICogSW1wbGVtZW50YXRpb24gb2YgdGhlIG91dGZ1bmMgY2FsbGJhY2sgZm9y IGpzb24gZm9ybWF0LgorICoKKyAqIEluc3RlYWQgb2YgdGV4dCBvdXRwdXQgZnVuY3Rpb25z LCB3ZSBjYXRlZ29yaXplIGVhY2ggY29sdW1uJ3MgdHlwZSBmb3IKKyAqIEpTT04gc2VyaWFs aXphdGlvbiBvbmNlIHNvIENvcHlUb0pzb25PbmVSb3cgY2FuIHVzZSBkYXR1bV90b19qc29u X2FwcGVuZAorICogZGlyZWN0bHkuCisgKi8KK3N0YXRpYyB2b2lkCitDb3B5VG9Kc29uT3V0 RnVuYyhDb3B5VG9TdGF0ZSBjc3RhdGUsIE9pZCBhdHR0eXBpZCwgRm1nckluZm8gKmZpbmZv KQoreworCWludAkJCWF0dGlkeCA9IGZpbmZvIC0gY3N0YXRlLT5vdXRfZnVuY3Rpb25zOwor CisJanNvbl9jYXRlZ29yaXplX3R5cGUoYXR0dHlwaWQsIGZhbHNlLAorCQkJCQkJICZjc3Rh dGUtPmpzb25fY2F0ZWdvcmllc1thdHRpZHhdLAorCQkJCQkJICZjc3RhdGUtPmpzb25fb3V0 ZnVuY29pZHNbYXR0aWR4XSk7Cit9CisKIC8qIEltcGxlbWVudGF0aW9uIG9mIHBlci1yb3cg Y2FsbGJhY2sgZm9yIGpzb24gZm9ybWF0ICovCiBzdGF0aWMgdm9pZAogQ29weVRvSnNvbk9u ZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KQogewotCURh dHVtCQlyb3dkYXRhOworCWJvb2wJCW5lZWRzZXAgPSBmYWxzZTsKIAotCS8qCi0JICogRm9y IHF1ZXJ5LWJhc2VkIENPUFksIGNvcHkgdGhlIHF1ZXJ5J3MgVHVwbGVEZXNjIGF0dHJpYnV0 ZXMgaW50byB0aGUKLQkgKiBzbG90J3MgVHVwbGVEZXNjIG9uY2UuICBCbGVzc1R1cGxlRGVz YyByZWdpc3RlcnMgdGhlIFJFQ09SRE9JRAotCSAqIGRlc2NyaXB0b3Igc28gdGhhdCBsb29r dXBfcm93dHlwZV90dXBkZXNjIGluc2lkZSBjb21wb3NpdGVfdG9fanNvbiBjYW4KLQkgKiBm aW5kIGl0LgotCSAqLwotCWlmICghY3N0YXRlLT5yZWwgJiYgIWNzdGF0ZS0+anNvbl90dXBs ZWRlc2NfcmVhZHkpCi0JewotCQltZW1jcHkoVHVwbGVEZXNjQXR0cihzbG90LT50dHNfdHVw bGVEZXNjcmlwdG9yLCAwKSwKLQkJCSAgIFR1cGxlRGVzY0F0dHIoY3N0YXRlLT5xdWVyeURl c2MtPnR1cERlc2MsIDApLAotCQkJICAgY3N0YXRlLT5xdWVyeURlc2MtPnR1cERlc2MtPm5h dHRzICogc2l6ZW9mKEZvcm1EYXRhX3BnX2F0dHJpYnV0ZSkpOwotCi0JCWZvciAoaW50IGkg PSAwOyBpIDwgY3N0YXRlLT5xdWVyeURlc2MtPnR1cERlc2MtPm5hdHRzOyBpKyspCi0JCQlw b3B1bGF0ZV9jb21wYWN0X2F0dHJpYnV0ZShzbG90LT50dHNfdHVwbGVEZXNjcmlwdG9yLCBp KTsKLQotCQlCbGVzc1R1cGxlRGVzYyhzbG90LT50dHNfdHVwbGVEZXNjcmlwdG9yKTsKLQkJ Y3N0YXRlLT5qc29uX3R1cGxlZGVzY19yZWFkeSA9IHRydWU7Ci0JfQotCi0Jcm93ZGF0YSA9 IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGVEYXR1bShzbG90KTsKIAlyZXNldFN0cmluZ0luZm8o JmNzdGF0ZS0+anNvbl9idWYpOwotCWNvbXBvc2l0ZV90b19qc29uKHJvd2RhdGEsICZjc3Rh dGUtPmpzb25fYnVmLCBmYWxzZSk7CisJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmNzdGF0ZS0+ anNvbl9idWYsICd7Jyk7CisKKwlmb3JlYWNoX2ludChhdHRudW0sIGNzdGF0ZS0+YXR0bnVt bGlzdCkKKwl7CisJCURhdHVtCQl2YWx1ZSA9IHNsb3QtPnR0c192YWx1ZXNbYXR0bnVtIC0g MV07CisJCWJvb2wJCWlzbnVsbCA9IHNsb3QtPnR0c19pc251bGxbYXR0bnVtIC0gMV07CisK KwkJaWYgKG5lZWRzZXApCisJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcigmY3N0YXRlLT5qc29u X2J1ZiwgJywnKTsKKwkJbmVlZHNlcCA9IHRydWU7CisKKwkJLyogQXBwZW5kIHByZS1lc2Nh cGVkICJrZXkiOiAqLworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjc3RhdGUtPmpzb25f YnVmLAorCQkJCQkJCSAgIGNzdGF0ZS0+anNvbl9jb2xfa2V5c1thdHRudW0gLSAxXSk7CisK KwkJZGF0dW1fdG9fanNvbl9hcHBlbmQodmFsdWUsIGlzbnVsbCwgJmNzdGF0ZS0+anNvbl9i dWYsCisJCQkJCQkJIGNzdGF0ZS0+anNvbl9jYXRlZ29yaWVzW2F0dG51bSAtIDFdLAorCQkJ CQkJCSBjc3RhdGUtPmpzb25fb3V0ZnVuY29pZHNbYXR0bnVtIC0gMV0pOworCX0KKworCWFw cGVuZFN0cmluZ0luZm9DaGFyKCZjc3RhdGUtPmpzb25fYnVmLCAnfScpOwogCiAJaWYgKGNz dGF0ZS0+b3B0cy5mb3JjZV9hcnJheSkKIAl7CkBAIC0xMDA0LDEyICsxMDQ3LDYgQEAgQmVn aW5Db3B5VG8oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCS8qIEdlbmVyYXRlIG9yIGNvbnZlcnQg bGlzdCBvZiBhdHRyaWJ1dGVzIHRvIHByb2Nlc3MgKi8KIAljc3RhdGUtPmF0dG51bWxpc3Qg PSBDb3B5R2V0QXR0bnVtcyh0dXBEZXNjLCBjc3RhdGUtPnJlbCwgYXR0bmFtZWxpc3QpOwog Ci0JLyogSlNPTiBvdXRwdXRzIHdob2xlIHJvd3M7IGEgY29sdW1uIGxpc3QgZG9lc24ndCBt YWtlIHNlbnNlICovCi0JaWYgKGNzdGF0ZS0+b3B0cy5mb3JtYXQgPT0gQ09QWV9GT1JNQVRf SlNPTiAmJiBhdHRuYW1lbGlzdCAhPSBOSUwpCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCSBlcnJtc2coImNv bHVtbiBzZWxlY3Rpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBKU09OIG1vZGUiKSkpOwotCiAJ bnVtX3BoeXNfYXR0cnMgPSB0dXBEZXNjLT5uYXR0czsKIAogCS8qIENvbnZlcnQgRk9SQ0Vf UVVPVEUgbmFtZSBsaXN0IHRvIHBlci1jb2x1bW4gZmxhZ3MsIGNoZWNrIHZhbGlkaXR5ICov CkBAIC0xMjA0LDYgKzEyNDEsMTIgQEAgRG9Db3B5VG8oQ29weVRvU3RhdGUgY3N0YXRlKQog CiAJLyogR2V0IGluZm8gYWJvdXQgdGhlIGNvbHVtbnMgd2UgbmVlZCB0byBwcm9jZXNzLiAq LwogCWNzdGF0ZS0+b3V0X2Z1bmN0aW9ucyA9IChGbWdySW5mbyAqKSBwYWxsb2MobnVtX3Bo eXNfYXR0cnMgKiBzaXplb2YoRm1nckluZm8pKTsKKwlpZiAoY3N0YXRlLT5vcHRzLmZvcm1h dCA9PSBDT1BZX0ZPUk1BVF9KU09OKQorCXsKKwkJLyogSlNPTiBvdXRmdW5jIGNhbGxiYWNr IHN0b3JlcyBwZXItY29sdW1uIHR5cGUgY2F0ZWdvcml6YXRpb24gaGVyZSAqLworCQljc3Rh dGUtPmpzb25fY2F0ZWdvcmllcyA9IHBhbGxvYzAobnVtX3BoeXNfYXR0cnMgKiBzaXplb2Yo SnNvblR5cGVDYXRlZ29yeSkpOworCQljc3RhdGUtPmpzb25fb3V0ZnVuY29pZHMgPSBwYWxs b2MwKG51bV9waHlzX2F0dHJzICogc2l6ZW9mKE9pZCkpOworCX0KIAlmb3JlYWNoKGN1ciwg Y3N0YXRlLT5hdHRudW1saXN0KQogCXsKIAkJaW50CQkJYXR0bnVtID0gbGZpcnN0X2ludChj dXIpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb24uYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29uLmMKaW5kZXggZjYwOWQ3Yjk0MTcuLmRlODExNjBhODMx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29uLmMKQEAgLTc3MSw2ICs3NzEsMjAgQEAgZGF0dW1fdG9f anNvbihEYXR1bSB2YWwsIEpzb25UeXBlQ2F0ZWdvcnkgdGNhdGVnb3J5LCBPaWQgb3V0ZnVu Y29pZCkKIAlyZXR1cm4gUG9pbnRlckdldERhdHVtKGNzdHJpbmdfdG9fdGV4dF93aXRoX2xl bihyZXN1bHQuZGF0YSwgcmVzdWx0LmxlbikpOwogfQogCisvKgorICogQXBwZW5kIEpTT04g cmVwcmVzZW50YXRpb24gb2YgYSBEYXR1bSB0byBhIFN0cmluZ0luZm8uCisgKgorICogdGNh dGVnb3J5IGFuZCBvdXRmdW5jb2lkIGFyZSBmcm9tIGEgcHJldmlvdXMgY2FsbCB0byBqc29u X2NhdGVnb3JpemVfdHlwZS4KKyAqIElmIGlzX251bGwgaXMgdHJ1ZSwgYXBwZW5kcyAibnVs bCIgcmVnYXJkbGVzcyBvZiB0Y2F0ZWdvcnkvb3V0ZnVuY29pZC4KKyAqLwordm9pZAorZGF0 dW1fdG9fanNvbl9hcHBlbmQoRGF0dW0gdmFsLCBib29sIGlzX251bGwsIFN0cmluZ0luZm8g cmVzdWx0LAorCQkJCQkgSnNvblR5cGVDYXRlZ29yeSB0Y2F0ZWdvcnksIE9pZCBvdXRmdW5j b2lkKQoreworCWRhdHVtX3RvX2pzb25faW50ZXJuYWwodmFsLCBpc19udWxsLCByZXN1bHQs IHRjYXRlZ29yeSwgb3V0ZnVuY29pZCwKKwkJCQkJCSAgIGZhbHNlKTsKK30KKwogLyoKICAq IGpzb25fYWdnIHRyYW5zaXRpb24gZnVuY3Rpb24KICAqCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS91dGlscy9qc29uZnVuY3MuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25mdW5jcy5o CmluZGV4IDYzNmYwZjU1ODQwLi4xMmEwMTQ1MWZiYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvdXRpbHMvanNvbmZ1bmNzLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbmZ1bmNz LmgKQEAgLTg1LDYgKzg1LDggQEAgZXh0ZXJuIHZvaWQganNvbl9jYXRlZ29yaXplX3R5cGUo T2lkIHR5cG9pZCwgYm9vbCBpc19qc29uYiwKIAkJCQkJCQkJIEpzb25UeXBlQ2F0ZWdvcnkg KnRjYXRlZ29yeSwgT2lkICpvdXRmdW5jb2lkKTsKIGV4dGVybiBEYXR1bSBkYXR1bV90b19q c29uKERhdHVtIHZhbCwgSnNvblR5cGVDYXRlZ29yeSB0Y2F0ZWdvcnksCiAJCQkJCQkgICBP aWQgb3V0ZnVuY29pZCk7CitleHRlcm4gdm9pZCBkYXR1bV90b19qc29uX2FwcGVuZChEYXR1 bSB2YWwsIGJvb2wgaXNfbnVsbCwgU3RyaW5nSW5mbyByZXN1bHQsCisJCQkJCQkJCSBKc29u VHlwZUNhdGVnb3J5IHRjYXRlZ29yeSwgT2lkIG91dGZ1bmNvaWQpOwogZXh0ZXJuIERhdHVt IGRhdHVtX3RvX2pzb25iKERhdHVtIHZhbCwgSnNvblR5cGVDYXRlZ29yeSB0Y2F0ZWdvcnks CiAJCQkJCQkJT2lkIG91dGZ1bmNvaWQpOwogZXh0ZXJuIERhdHVtIGpzb25iX2Zyb21fdGV4 dCh0ZXh0ICpqcywgYm9vbCB1bmlxdWVfa2V5cyk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9j b3B5Lm91dAppbmRleCBhN2U4OGI3MTFkNy4uZDYwZTVhNGQzMmEgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9jb3B5Lm91dApAQCAtMTExLDggKzExMSw2IEBAIExJTkUgMTogY29weSBj b3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBvbl9lcnJvciBpZ25vcmUpOwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIGNvcHkgY29w eXRlc3QgZnJvbSBzdGRpbihmb3JtYXQganNvbik7CiBFUlJPUjogIENPUFkgSlNPTiBtb2Rl IGNhbm5vdCBiZSB1c2VkIHdpdGggQ09QWSBGUk9NCi1jb3B5IGNvcHl0ZXN0IChzdHlsZSkg dG8gc3Rkb3V0IChmb3JtYXQganNvbik7Ci1FUlJPUjogIGNvbHVtbiBzZWxlY3Rpb24gaXMg bm90IHN1cHBvcnRlZCBpbiBKU09OIG1vZGUKIC0tIGFsbCBvZiB0aGUgYWJvdmUgc2hvdWxk IHlpZWxkIGVycm9yCiAtLSBzaG91bGQgZmFpbDogZm9yY2VfYXJyYXkgcmVxdWlyZXMganNv biBmb3JtYXQKIGNvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQgY3N2LCBmb3JjZV9h cnJheSB0cnVlKTsKQEAgLTEzNyw2ICsxMzUsMTIgQEAgY29weSBjb3B5dGVzdCB0byBzdGRv dXQgKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJheSBmYWxzZSk7CiB7InN0eWxlIjoiVW5peCIs InRlc3QiOiJhYmNcbmRlZiIsImZpbGxlciI6Mn0KIHsic3R5bGUiOiJNYWMiLCJ0ZXN0Ijoi YWJjXHJkZWYiLCJmaWxsZXIiOjN9CiB7InN0eWxlIjoiZXNjXFxhcGUiLCJ0ZXN0IjoiYVxc clxcXHJcXFxuXFxuYiIsImZpbGxlciI6NH0KKy0tIGNvbHVtbiBsaXN0IHdpdGgganNvbiBm b3JtYXQKK2NvcHkgY29weXRlc3QgKHN0eWxlLCBmaWxsZXIpIHRvIHN0ZG91dCAoZm9ybWF0 IGpzb24pOworeyJzdHlsZSI6IkRPUyIsImZpbGxlciI6MX0KK3sic3R5bGUiOiJVbml4Iiwi ZmlsbGVyIjoyfQoreyJzdHlsZSI6Ik1hYyIsImZpbGxlciI6M30KK3sic3R5bGUiOiJlc2Nc XGFwZSIsImZpbGxlciI6NH0KIC0tIGVtYmVkZGVkIGVzY2FwZWQgY2hhcmFjdGVycwogY3Jl YXRlIHRlbXAgdGFibGUgY29weWpzb250ZXN0ICgKICAgICBpZCBiaWdzZXJpYWwsCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2NvcHkuc3FsCmluZGV4IGFlMjAyZmM1ZThkLi5kNjRmNGM2NmI5MyAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvY29weS5zcWwKQEAgLTk5LDcgKzk5LDYgQEAgY29weSBjb3B5dGVzdCB0byBz dGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9ub3RfbnVsbCAqKTsKIGNvcHkgY29weXRlc3Qg dG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfbnVsbCAqKTsKIGNvcHkgY29weXRlc3Qg dG8gc3Rkb3V0IChmb3JtYXQganNvbiwgb25fZXJyb3IgaWdub3JlKTsKIGNvcHkgY29weXRl c3QgZnJvbSBzdGRpbihmb3JtYXQganNvbik7Ci1jb3B5IGNvcHl0ZXN0IChzdHlsZSkgdG8g c3Rkb3V0IChmb3JtYXQganNvbik7CiAtLSBhbGwgb2YgdGhlIGFib3ZlIHNob3VsZCB5aWVs ZCBlcnJvcgogCiAtLSBzaG91bGQgZmFpbDogZm9yY2VfYXJyYXkgcmVxdWlyZXMganNvbiBm b3JtYXQKQEAgLTExMCw2ICsxMDksOSBAQCBjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9y bWF0IGpzb24sIGZvcmNlX2FycmF5KTsKIGNvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3Jt YXQganNvbiwgZm9yY2VfYXJyYXkgdHJ1ZSk7CiBjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAo Zm9ybWF0IGpzb24sIGZvcmNlX2FycmF5IGZhbHNlKTsKIAorLS0gY29sdW1uIGxpc3Qgd2l0 aCBqc29uIGZvcm1hdAorY29weSBjb3B5dGVzdCAoc3R5bGUsIGZpbGxlcikgdG8gc3Rkb3V0 IChmb3JtYXQganNvbik7CisKIC0tIGVtYmVkZGVkIGVzY2FwZWQgY2hhcmFjdGVycwogY3Jl YXRlIHRlbXAgdGFibGUgY29weWpzb250ZXN0ICgKICAgICBpZCBiaWdzZXJpYWwsCi0tIAoy LjQzLjAKCg== --------------7Nf0ajVYMcC3OnzF2myr7D0R--