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 1sJBQM-002wV2-RR for pgsql-hackers@arkaria.postgresql.org; Mon, 17 Jun 2024 12:25:27 +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 1sJBQK-00GPPw-Dd for pgsql-hackers@arkaria.postgresql.org; Mon, 17 Jun 2024 12:25:25 +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.94.2) (envelope-from ) id 1sJBQJ-00GPPo-VN for pgsql-hackers@lists.postgresql.org; Mon, 17 Jun 2024 12:25:24 +0000 Received: from mail-lj1-x231.google.com ([2a00:1450:4864:20::231]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sJBQD-0027Nk-Sb for pgsql-hackers@lists.postgresql.org; Mon, 17 Jun 2024 12:25:24 +0000 Received: by mail-lj1-x231.google.com with SMTP id 38308e7fff4ca-2ec1620a956so38619701fa.1 for ; Mon, 17 Jun 2024 05:25:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1718627117; x=1719231917; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=3OsJSx24tm0Q2C7njC4/vS5FRjPNxEUugRo9C5X8jgM=; b=KFygSc/unBqXU4SXDFnG63EhAEavNYwpLC+pL80ujb9HEOIOXrEOXKt3/1dAOycEKU rd1dx7AAV2Aj2PySSC+wnN9QY2ojeN4F+q+VokCwx2ayDcpvIRa2jLB8MYqO9N5IgZ+t ZlcMCWDvSIk/h3S68+iQm9hl9mDLGm5rWJPJhjwaVOE3Sbgvda84gd3SlINfwBD53rz6 fc7xaDGXTq8hUIh3d6NW01LFXg7k4e03jNnejXwssqSRNo/PcZOJXIfp06Hk+S00L5I6 poE+Ro4ihce5EPk1AOo2G47o5KZWx8eu6nN2xek7yVPXO2h1IkjchL2bJ0Ntsc8zAv/W s/pw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718627117; x=1719231917; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=3OsJSx24tm0Q2C7njC4/vS5FRjPNxEUugRo9C5X8jgM=; b=L+iSf+Wy8zqet1yemSIN6ObpI16aj9pL9A78PF4ulb/KyO1VDX4Z6pZ0FTJ5HqkoOJ 6q6RAK6amB7uFU1wxdKWAaeWikx2npubEwFoBmNAm0LTKGE+xuxfoGpoiHiFeynIgbKb Yxgtpm5JO1Xh3sAW693Y+OnjGknPzplgHrPcf+gGC9o2fV/e+mAV3yqZdMbNToXPLb0h cq1VrUlw7iym20ElVQOmkSPfLFTCTWVRVwWgKU6hktQXy7nLvjtMEyKBWoadOIo3DwN5 4vLRhKlvNmlmXFRl7ZKmxiExbrvDOTU/AcTAoi8I8ecFfNrfGYNtsJ5qrNRwdgw78g2C EMPg== X-Forwarded-Encrypted: i=1; AJvYcCX8QKxUGbaL4MGklZrnV2gpufka7cZ5oBYNmrKvu8luZnPPyK9BFtCmOAWrr0RVO/QZ7D4z9vaD3KGuRCghZJpnbmTQGi8hV+oaXpB3gI26qJ/2 X-Gm-Message-State: AOJu0YxBSu/GAgUKTTMXpVij0X2ol1ZNedeYKBos5OvwA+a6ZPmz9QPq dH1XvF14A433bKJt7DAP9HnZ3lfvclEyoQ0q7LxJwv4ut2w+7lmdlLU6jMv2vU3dtBfddUI9CB5 wxw6LZegbtwprHVZQfwdcdGRmD0CBQau0 X-Google-Smtp-Source: AGHT+IGZkE6WoTGw86oDkejWk7bB8Z8byMaP50e94AyK3jluKOG9hZqXbM1iY+zIzrqH8YvxLXyLG9f4b3SrkK6iG+M= X-Received: by 2002:a2e:80c9:0:b0:2eb:e542:cab0 with SMTP id 38308e7fff4ca-2ec0e5c5822mr64010131fa.14.1718627116549; Mon, 17 Jun 2024 05:25:16 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Bharath Rupireddy Date: Mon, 17 Jun 2024 17:55:04 +0530 Message-ID: Subject: Re: Introduce XID age and inactive timeout based replication slot invalidation To: Amit Kapila Cc: Bertrand Drouvot , shveta malik , Masahiko Sawada , Nathan Bossart , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000c8a5dc061b150e62" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000c8a5dc061b150e62 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Sat, Apr 13, 2024 at 9:36=E2=80=AFAM Bharath Rupireddy wrote: > > There was a point raised by Amit > https://www.postgresql.org/message-id/CAA4eK1K8wqLsMw6j0hE_SFoWAeo3Kw8UNn= MfhsWaYDF1GWYQ%2Bg%40mail.gmail.com > on when to do the XID age based invalidation - whether in checkpointer > or when vacuum is being run or whenever ComputeXIDHorizons gets called > or in autovacuum process. For now, I've chosen the design to do these > new invalidation checks in two places - 1) whenever the slot is > acquired and the slot acquisition errors out if invalidated, 2) during > checkpoint. However, I'm open to suggestions on this. Here are my thoughts on when to do the XID age invalidation. In all the patches sent so far, the XID age invalidation happens in two places - one during the slot acquisition, and another during the checkpoint. As the suggestion is to do it during the vacuum (manual and auto), so that even if the checkpoint isn't happening in the database for whatever reasons, a vacuum command or autovacuum can invalidate the slots whose XID is aged. An idea is to check for XID age based invalidation for all the slots in ComputeXidHorizons() before it reads replication_slot_xmin and replication_slot_catalog_xmin, and obviously before the proc array lock is acquired. A potential problem with this approach is that the invalidation check can become too aggressive as XID horizons are computed from many places. Another idea is to check for XID age based invalidation for all the slots in higher levels than ComputeXidHorizons(), for example in vacuum() which is an entry point for both vacuum command and autovacuum. This approach seems similar to vacuum_failsafe_age GUC which checks each relation for the failsafe age before vacuum gets triggered on it. Does anyone see any issues or risks with the above two approaches or have any other ideas? Thoughts? I attached v40 patches here. I reworded some of the ERROR messages, and did some code clean-up. Note that I haven't implemented any of the above approaches yet. -- Bharath Rupireddy PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --000000000000c8a5dc061b150e62 Content-Type: application/x-patch; name="v40-0001-Add-inactive_timeout-based-replication-slot-inva.patch" Content-Disposition: attachment; filename="v40-0001-Add-inactive_timeout-based-replication-slot-inva.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lxix9egj0 RnJvbSA3YTkyMGQ0ZjFhNGQ2YTEwNzc2ZmY1OTdkNmQ5MzFiMTAzNDA0MTdjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IE1vbiwgMTcgSnVuIDIwMjQgMDY6NTU6MjcgKzAw MDAKU3ViamVjdDogW1BBVENIIHY0MCAxLzJdIEFkZCBpbmFjdGl2ZV90aW1lb3V0IGJhc2VkIHJl cGxpY2F0aW9uIHNsb3QKIGludmFsaWRhdGlvbgoKVGlsbCBub3csIHBvc3RncmVzIGhhcyB0aGUg YWJpbGl0eSB0byBpbnZhbGlkYXRlIGluYWN0aXZlCnJlcGxpY2F0aW9uIHNsb3RzIGJhc2VkIG9u IHRoZSBhbW91bnQgb2YgV0FMIChzZXQgdmlhCm1heF9zbG90X3dhbF9rZWVwX3NpemUgR1VDKSB0 aGF0IHdpbGwgYmUgbmVlZGVkIGZvciB0aGUgc2xvdHMgaW4KY2FzZSB0aGV5IGJlY29tZSBhY3Rp dmUuIEhvd2V2ZXIsIGNob29zaW5nIGEgZGVmYXVsdCB2YWx1ZSBmb3IKbWF4X3Nsb3Rfd2FsX2tl ZXBfc2l6ZSBpcyB0cmlja3kuIEJlY2F1c2UgdGhlIGFtb3VudCBvZiBXQUwgYQpjdXN0b21lciBn ZW5lcmF0ZXMsIGFuZCB0aGVpciBhbGxvY2F0ZWQgc3RvcmFnZSB3aWxsIHZhcnkgZ3JlYXRseQpp biBwcm9kdWN0aW9uLCBtYWtpbmcgaXQgZGlmZmljdWx0IHRvIHBpbiBkb3duIGEgb25lLXNpemUt Zml0cy1hbGwKdmFsdWUuIEl0IGlzIG9mdGVuIGVhc3kgZm9yIGRldmVsb3BlcnMgdG8gc2V0IGEg dGltZW91dCBvZiBzYXkgMQpvciAyIG9yIDMgZGF5cywgYWZ0ZXIgd2hpY2ggdGhlIGluYWN0aXZl IHNsb3RzIGdldCBpbnZhbGlkYXRlZC4KClRvIGFjaGlldmUgdGhlIGFib3ZlLCBwb3N0Z3JlcyBp bnRyb2R1Y2VzIGEgR1VDIGFsbG93aW5nIHVzZXJzCnNldCBpbmFjdGl2ZSB0aW1lb3V0LiBUaGUg cmVwbGljYXRpb24gc2xvdHMgdGhhdCBhcmUgaW5hY3RpdmUKZm9yIGxvbmdlciB0aGFuIHNwZWNp ZmllZCBhbW91bnQgb2YgdGltZSBnZXQgaW52YWxpZGF0ZWQuCgpUaGUgaW52YWxpZGF0aW9uIGNo ZWNrIGhhcHBlbnMgYXQgdmFyaW91cyBsb2NhdGlvbnMgdG8gaGVscCBiZWluZwphcyBsYXRlc3Qg YXMgcG9zc2libGUsIHRoZXNlIGxvY2F0aW9ucyBpbmNsdWRlIHRoZSBmb2xsb3dpbmc6Ci0gV2hl bmV2ZXIgdGhlIHNsb3QgaXMgYWNxdWlyZWQgYW5kIHRoZSBzbG90IGFjcXVpc2l0aW9uIGVycm9y cwpvdXQgaWYgaW52YWxpZGF0ZWQuCi0gRHVyaW5nIGNoZWNrcG9pbnQKCk5vdGUgdGhhdCB0aGlz IG5ldyBpbnZhbGlkYXRpb24gbWVjaGFuaXNtIHdvbid0IGtpY2staW4gZm9yIHRoZQpzbG90cyB0 aGF0IGFyZSBjdXJyZW50bHkgYmVpbmcgc3luY2VkIGZyb20gdGhlIHByaW1hcnkgdG8gdGhlCnN0 YW5kYnksIGJlY2F1c2Ugc3VjaCBzeW5jZWQgc2xvdHMgYXJlIHR5cGljYWxseSBjb25zaWRlcmVk IG5vdAphY3RpdmUgKGZvciB0aGVtIHRvIGJlIGxhdGVyIGNvbnNpZGVyZWQgYXMgaW5hY3RpdmUp IGFzIHRoZXkgZG9uJ3QKcGVyZm9ybSBsb2dpY2FsIGRlY29kaW5nIHRvIHByb2R1Y2UgdGhlIGNo YW5nZXMuCgpBdXRob3I6IEJoYXJhdGggUnVwaXJlZGR5ClJldmlld2VkLWJ5OiBCZXJ0cmFuZCBE cm91dm90LCBBbWl0IEthcGlsYSwgU2h2ZXRhIE1hbGlrCkRpc2N1c3Npb246IGh0dHBzOi8vd3d3 LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvQ0FMajJBQ1c0YVVlLV91RlFPamRXQ0VOLXhYb0xH aG12UkZuTDhTTndfVFo1bkplK2F3QG1haWwuZ21haWwuY29tCkRpc2N1c3Npb246IGh0dHBzOi8v d3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvQ0ElMkJUZ21vWlRiYWFFalNaVUcxRkwwbXp4 QWROM3FtWGtzTzNPOV9QWmhFdVhUa1ZuUlElNDBtYWlsLmdtYWlsLmNvbQpEaXNjdXNzaW9uOiBo dHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkLzIwMjQwMzI2MDg0MS41amN2N2lo bmljY3klNDBhbHZoZXJyZS5wZ3NxbAotLS0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAg ICAgICAgICAgICAgICAgICB8ICAzMyArKwogZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21s ICAgICAgICAgICAgICAgIHwgICA3ICsKIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxm dW5jcy5jICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9z bG90c3luYy5jICAgIHwgIDExICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgICAg ICAgICAgICAgICAgfCAxODggKysrKysrKysrKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90ZnVuY3MuYyAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dh bHNlbmRlci5jICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX3Vw Z3JhZGVfc3VwcG9ydC5jICAgIHwgICAyICstCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190 YWJsZXMuYyAgICAgICAgICAgfCAgMTIgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jl c3FsLmNvbmYuc2FtcGxlIHwgICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaCAg ICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQgICAg ICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlY292ZXJ5L3QvMDUwX2ludmFsaWRhdGVf c2xvdHMucGwgICB8IDI4NiArKysrKysrKysrKysrKysrKysKIDEzIGZpbGVzIGNoYW5nZWQsIDUz NSBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9yZWNvdmVyeS90LzA1MF9pbnZhbGlkYXRlX3Nsb3RzLnBsCgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IDY5 ODE2OWFmZGIuLmEwMWY2ZDJkMTQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTQ1NTQsNiArNDU1NCwzOSBAQCBy ZXN0b3JlX2NvbW1hbmQgPSAnY29weSAiQzpcXHNlcnZlclxcYXJjaGl2ZWRpclxcJWYiICIlcCIn ICAjIFdpbmRvd3MKICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisg ICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1yZXBsaWNhdGlvbi1zbG90LWluYWN0aXZlLXRpbWVv dXQiIHhyZWZsYWJlbD0icmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0Ij4KKyAgICAg IDx0ZXJtPjx2YXJuYW1lPnJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dDwvdmFybmFt ZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJp bWFyeT48dmFybmFtZT5yZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQ8L3Zhcm5hbWU+ IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+Cisg ICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIElu dmFsaWRhdGVzIHJlcGxpY2F0aW9uIHNsb3RzIHRoYXQgYXJlIGluYWN0aXZlIGZvciBsb25nZXIg dGhhbgorICAgICAgICBzcGVjaWZpZWQgYW1vdW50IG9mIHRpbWUuIElmIHRoaXMgdmFsdWUgaXMg c3BlY2lmaWVkIHdpdGhvdXQgdW5pdHMsCisgICAgICAgIGl0IGlzIHRha2VuIGFzIHNlY29uZHMu IEEgdmFsdWUgb2YgemVybyAod2hpY2ggaXMgZGVmYXVsdCkgZGlzYWJsZXMKKyAgICAgICAgdGhl IHRpbWVvdXQgbWVjaGFuaXNtLiBUaGlzIHBhcmFtZXRlciBjYW4gb25seSBiZSBzZXQgaW4KKyAg ICAgICAgdGhlIDxmaWxlbmFtZT5wb3N0Z3Jlc3FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIG9yIG9u IHRoZSBzZXJ2ZXIKKyAgICAgICAgY29tbWFuZCBsaW5lLgorICAgICAgIDwvcGFyYT4KKworICAg ICAgIDxwYXJhPgorICAgICAgICBUaGlzIGludmFsaWRhdGlvbiBjaGVjayBoYXBwZW5zIGVpdGhl ciB3aGVuIHRoZSBzbG90IGlzIGFjcXVpcmVkCisgICAgICAgIGZvciB1c2Ugb3IgZHVyaW5nIGEg Y2hlY2twb2ludC4gVGhlIHRpbWUgc2luY2UgdGhlIHNsb3QgaGFzIGJlY29tZQorICAgICAgICBp bmFjdGl2ZSBpcyBrbm93biBmcm9tIGl0cworICAgICAgICA8c3RydWN0ZmllbGQ+aW5hY3RpdmVf c2luY2U8L3N0cnVjdGZpZWxkPiB2YWx1ZSB1c2luZyB3aGljaCB0aGUKKyAgICAgICAgdGltZW91 dCBpcyBtZWFzdXJlZC4KKyAgICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAg Tm90ZSB0aGF0IHRoZSBpbmFjdGl2ZSB0aW1lb3V0IGludmFsaWRhdGlvbiBtZWNoYW5pc20gaXMg bm90CisgICAgICAgIGFwcGxpY2FibGUgZm9yIHNsb3RzIG9uIHRoZSBzdGFuZGJ5IHRoYXQgYXJl IGJlaW5nIHN5bmNlZCBmcm9tIGEKKyAgICAgICAgcHJpbWFyeSBzZXJ2ZXIgKHdob3NlIDxzdHJ1 Y3RmaWVsZD5zeW5jZWQ8L3N0cnVjdGZpZWxkPiBmaWVsZCBpcworICAgICAgICA8bGl0ZXJhbD50 cnVlPC9saXRlcmFsPikuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAg PC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLXRyYWNrLWNvbW1p dC10aW1lc3RhbXAiIHhyZWZsYWJlbD0idHJhY2tfY29tbWl0X3RpbWVzdGFtcCI+CiAgICAgICA8 dGVybT48dmFybmFtZT50cmFja19jb21taXRfdGltZXN0YW1wPC92YXJuYW1lPiAoPHR5cGU+Ym9v bGVhbjwvdHlwZT4pCiAgICAgICA8aW5kZXh0ZXJtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3N5c3RlbS12aWV3cy5zZ21sIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCmluZGV4 IDhjMThiZWE5MDIuLjQ4NjdhZjFiNjEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0t dmlld3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKQEAgLTI1ODAs NiArMjU4MCwxMyBAQCBTRUxFQ1QgKiBGUk9NIHBnX2xvY2tzIHBsIExFRlQgSk9JTiBwZ19wcmVw YXJlZF94YWN0cyBwcHgKICAgICAgICAgICBwZXJmb3JtIGxvZ2ljYWwgZGVjb2RpbmcuICBJdCBp cyBzZXQgb25seSBmb3IgbG9naWNhbCBzbG90cy4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAg PC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+CisgICAgICAg ICAgPGxpdGVyYWw+aW5hY3RpdmVfdGltZW91dDwvbGl0ZXJhbD4gbWVhbnMgdGhhdCB0aGUgc2xv dCBoYXMgYmVlbgorICAgICAgICAgIGluYWN0aXZlIGZvciB0aGUgZHVyYXRpb24gc3BlY2lmaWVk IGJ5CisgICAgICAgICAgPHhyZWYgbGlua2VuZD0iZ3VjLXJlcGxpY2F0aW9uLXNsb3QtaW5hY3Rp dmUtdGltZW91dCIvPiBwYXJhbWV0ZXIuCisgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlz dGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAg ICAgPC9yb3c+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xv Z2ljYWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVu Y3MuYwppbmRleCBiNGRkNWNjZTc1Li41NmZjMWE0NWE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKQEAgLTE5Nyw3ICsxOTcsNyBAQCBwZ19s b2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXNfZ3V0cyhGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9v bCBjb25maXJtLCBib29sIGJpbgogCWVsc2UKIAkJZW5kX29mX3dhbCA9IEdldFhMb2dSZXBsYXlS ZWNQdHIoTlVMTCk7CiAKLQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIoKm5hbWUpLCB0 cnVlKTsKKwlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIoKm5hbWUpLCB0cnVlLCB0cnVl KTsKIAogCVBHX1RSWSgpOwogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvc2xvdHN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xv dHN5bmMuYwppbmRleCA1NmQzZmI1ZDBlLi5hNTk2N2Q0MDBmIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCkBAIC00NDgsNyArNDQ4LDcgQEAgZHJvcF9sb2Nh bF9vYnNvbGV0ZV9zbG90cyhMaXN0ICpyZW1vdGVfc2xvdF9saXN0KQogCiAJCQlpZiAoc3luY2Vk X3Nsb3QpCiAJCQl7Ci0JCQkJUmVwbGljYXRpb25TbG90QWNxdWlyZShOYW1lU3RyKGxvY2FsX3Ns b3QtPmRhdGEubmFtZSksIHRydWUpOworCQkJCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0 cihsb2NhbF9zbG90LT5kYXRhLm5hbWUpLCB0cnVlLCBmYWxzZSk7CiAJCQkJUmVwbGljYXRpb25T bG90RHJvcEFjcXVpcmVkKCk7CiAJCQl9CiAKQEAgLTY1MSw2ICs2NTEsMTMgQEAgc3luY2hyb25p emVfb25lX3Nsb3QoUmVtb3RlU2xvdCAqcmVtb3RlX3Nsb3QsIE9pZCByZW1vdGVfZGJpZCkKIAkJ CQkJCSAgICIgbmFtZSBzbG90IFwiJXNcIiBhbHJlYWR5IGV4aXN0cyBvbiB0aGUgc3RhbmRieSIs CiAJCQkJCQkgICByZW1vdGVfc2xvdC0+bmFtZSkpOwogCisJCS8qCisJCSAqIFNraXAgdGhlIHN5 bmMgaWYgdGhlIGxvY2FsIHNsb3QgaXMgYWxyZWFkeSBpbnZhbGlkYXRlZC4gV2UgZG8gdGhpcwor CQkgKiBiZWZvcmVoYW5kIHRvIGF2b2lkIHNsb3QgYWNxdWlyZSBhbmQgcmVsZWFzZS4KKwkJICov CisJCWlmIChzbG90LT5kYXRhLmludmFsaWRhdGVkICE9IFJTX0lOVkFMX05PTkUpCisJCQlyZXR1 cm4gZmFsc2U7CisKIAkJLyoKIAkJICogVGhlIHNsb3QgaGFzIGJlZW4gc3luY2hyb25pemVkIGJl Zm9yZS4KIAkJICoKQEAgLTY2Nyw3ICs2NzQsNyBAQCBzeW5jaHJvbml6ZV9vbmVfc2xvdChSZW1v dGVTbG90ICpyZW1vdGVfc2xvdCwgT2lkIHJlbW90ZV9kYmlkKQogCQkgKiBwcmUtY2hlY2sgdG8g ZW5zdXJlIHRoYXQgYXQgbGVhc3Qgb25lIG9mIHRoZSBzbG90IHByb3BlcnRpZXMgaXMKIAkJICog Y2hhbmdlZCBiZWZvcmUgYWNxdWlyaW5nIHRoZSBzbG90LgogCQkgKi8KLQkJUmVwbGljYXRpb25T bG90QWNxdWlyZShyZW1vdGVfc2xvdC0+bmFtZSwgdHJ1ZSk7CisJCVJlcGxpY2F0aW9uU2xvdEFj cXVpcmUocmVtb3RlX3Nsb3QtPm5hbWUsIHRydWUsIGZhbHNlKTsKIAogCQlBc3NlcnQoc2xvdCA9 PSBNeVJlcGxpY2F0aW9uU2xvdCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwppbmRleCA1NjRjZmVl MTI3Li5lODA4NzJmMjdiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90 LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCkBAIC0xMDcsMTAgKzEwNywx MSBAQCBjb25zdCBjaGFyICpjb25zdCBTbG90SW52YWxpZGF0aW9uQ2F1c2VzW10gPSB7CiAJW1JT X0lOVkFMX1dBTF9SRU1PVkVEXSA9ICJ3YWxfcmVtb3ZlZCIsCiAJW1JTX0lOVkFMX0hPUklaT05d ID0gInJvd3NfcmVtb3ZlZCIsCiAJW1JTX0lOVkFMX1dBTF9MRVZFTF0gPSAid2FsX2xldmVsX2lu c3VmZmljaWVudCIsCisJW1JTX0lOVkFMX0lOQUNUSVZFX1RJTUVPVVRdID0gImluYWN0aXZlX3Rp bWVvdXQiLAogfTsKIAogLyogTWF4aW11bSBudW1iZXIgb2YgaW52YWxpZGF0aW9uIGNhdXNlcyAq LwotI2RlZmluZQlSU19JTlZBTF9NQVhfQ0FVU0VTIFJTX0lOVkFMX1dBTF9MRVZFTAorI2RlZmlu ZQlSU19JTlZBTF9NQVhfQ0FVU0VTIFJTX0lOVkFMX0lOQUNUSVZFX1RJTUVPVVQKIAogU3RhdGlj QXNzZXJ0RGVjbChsZW5ndGhvZihTbG90SW52YWxpZGF0aW9uQ2F1c2VzKSA9PSAoUlNfSU5WQUxf TUFYX0NBVVNFUyArIDEpLAogCQkJCSAiYXJyYXkgbGVuZ3RoIG1pc21hdGNoIik7CkBAIC0xNDAs NiArMTQxLDcgQEAgUmVwbGljYXRpb25TbG90ICpNeVJlcGxpY2F0aW9uU2xvdCA9IE5VTEw7CiAv KiBHVUMgdmFyaWFibGVzICovCiBpbnQJCQltYXhfcmVwbGljYXRpb25fc2xvdHMgPSAxMDsgLyog dGhlIG1heGltdW0gbnVtYmVyIG9mIHJlcGxpY2F0aW9uCiAJCQkJCQkJCQkJICogc2xvdHMgKi8K K2ludAkJCXJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dCA9IDA7CiAKIC8qCiAgKiBU aGlzIEdVQyBsaXN0cyBzdHJlYW1pbmcgcmVwbGljYXRpb24gc3RhbmRieSBzZXJ2ZXIgc2xvdCBu YW1lcyB0aGF0CkBAIC0xNTksNiArMTYxLDEzIEBAIHN0YXRpYyBYTG9nUmVjUHRyIHNzX29sZGVz dF9mbHVzaF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIHN0YXRpYyB2b2lkIFJlcGxpY2F0aW9u U2xvdFNobWVtRXhpdChpbnQgY29kZSwgRGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIFJlcGxpY2F0 aW9uU2xvdERyb3BQdHIoUmVwbGljYXRpb25TbG90ICpzbG90KTsKIAorc3RhdGljIGJvb2wgSW52 YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNh dXNlIGNhdXNlLAorCQkJCQkJCQkJCSAgIFJlcGxpY2F0aW9uU2xvdCAqcywKKwkJCQkJCQkJCQkg ICBYTG9nUmVjUHRyIG9sZGVzdExTTiwKKwkJCQkJCQkJCQkgICBPaWQgZGJvaWQsCisJCQkJCQkJ CQkJICAgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkg ICBib29sICppbnZhbGlkYXRlZCk7CisKIC8qIGludGVybmFsIHBlcnNpc3RlbmN5IGZ1bmN0aW9u cyAqLwogc3RhdGljIHZvaWQgUmVzdG9yZVNsb3RGcm9tRGlzayhjb25zdCBjaGFyICpuYW1lKTsK IHN0YXRpYyB2b2lkIENyZWF0ZVNsb3RPbkRpc2soUmVwbGljYXRpb25TbG90ICpzbG90KTsKQEAg LTUzNSwxMiArNTQ0LDE3IEBAIFJlcGxpY2F0aW9uU2xvdE5hbWUoaW50IGluZGV4LCBOYW1lIG5h bWUpCiAgKgogICogQW4gZXJyb3IgaXMgcmFpc2VkIGlmIG5vd2FpdCBpcyB0cnVlIGFuZCB0aGUg c2xvdCBpcyBjdXJyZW50bHkgaW4gdXNlLiBJZgogICogbm93YWl0IGlzIGZhbHNlLCB3ZSBzbGVl cCB1bnRpbCB0aGUgc2xvdCBpcyByZWxlYXNlZCBieSB0aGUgb3duaW5nIHByb2Nlc3MuCisgKgor ICogQW4gZXJyb3IgaXMgcmFpc2VkIGlmIGNoZWNrX2Zvcl9pbnZhbGlkYXRpb24gaXMgdHJ1ZSBh bmQgdGhlIHNsb3QgZ2V0cworICogaW52YWxpZGF0ZWQgbm93IG9yIGhhcyBiZWVuIGludmFsaWRh dGVkIHByZXZpb3VzbHkuCiAgKi8KIHZvaWQKLVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoY29uc3Qg Y2hhciAqbmFtZSwgYm9vbCBub3dhaXQpCitSZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNvbnN0IGNo YXIgKm5hbWUsIGJvb2wgbm93YWl0LAorCQkJCQkgICBib29sIGNoZWNrX2Zvcl9pbnZhbGlkYXRp b24pCiB7CiAJUmVwbGljYXRpb25TbG90ICpzOwogCWludAkJCWFjdGl2ZV9waWQ7CisJYm9vbAkJ cmVsZWFzZWRfbG9jayA9IGZhbHNlOwogCiAJQXNzZXJ0KG5hbWUgIT0gTlVMTCk7CiAKQEAgLTYx NSw2ICs2MjksNTcgQEAgcmV0cnk6CiAJLyogV2UgbWFkZSB0aGlzIHNsb3QgYWN0aXZlLCBzbyBp dCdzIG91cnMgbm93LiAqLwogCU15UmVwbGljYXRpb25TbG90ID0gczsKIAorCUxXTG9ja0FjcXVp cmUoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2ssIExXX1NIQVJFRCk7CisKKwkvKgorCSAqIENo ZWNrIGlmIHRoZSBhY3F1aXJlZCBzbG90IG5lZWRzIHRvIGJlIGludmFsaWRhdGVkLiBBbmQsIGVy cm9yIG91dCBpZgorCSAqIGl0IGdldHMgaW52YWxpZGF0ZWQgbm93IG9yIGhhcyBiZWVuIGludmFs aWRhdGVkIHByZXZpb3VzbHksIGJlY2F1c2UKKwkgKiB0aGVyZSdzIG5vIHVzZSBpbiBhY3F1aXJp bmcgdGhlIGludmFsaWRhdGVkIHNsb3QuCisJICoKKwkgKiBYWFg6IEN1cnJlbnRseSB3ZSBjaGVj ayBmb3IgaW5hY3RpdmVfdGltZW91dCBpbnZhbGlkYXRpb24gaGVyZS4gV2UKKwkgKiBtaWdodCBu ZWVkIHRvIGNoZWNrIGZvciBvdGhlciBpbnZhbGlkYXRpb25zIHRvby4KKwkgKi8KKwlpZiAoY2hl Y2tfZm9yX2ludmFsaWRhdGlvbikKKwl7CisJCWJvb2wJCWludmFsaWRhdGVkID0gZmFsc2U7CisK KwkJcmVsZWFzZWRfbG9jayA9IEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSU19JTlZB TF9JTkFDVElWRV9USU1FT1VULAorCQkJCQkJCQkJCQkJCSAgIHMsIDAsIEludmFsaWRPaWQsCisJ CQkJCQkJCQkJCQkJICAgSW52YWxpZFRyYW5zYWN0aW9uSWQsCisJCQkJCQkJCQkJCQkJICAgJmlu dmFsaWRhdGVkKTsKKworCQkvKgorCQkgKiBJZiB0aGUgc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRl ZCwgcmVjYWxjdWxhdGUgdGhlIHJlc291cmNlIGxpbWl0cy4KKwkJICovCisJCWlmIChpbnZhbGlk YXRlZCkKKwkJeworCQkJUmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZFhtaW4oZmFsc2Up OworCQkJUmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTigpOworCQl9CisKKwkJaWYg KHMtPmRhdGEuaW52YWxpZGF0ZWQgPT0gUlNfSU5WQUxfSU5BQ1RJVkVfVElNRU9VVCkKKwkJewor CQkJLyoKKwkJCSAqIFJlbGVhc2UgdGhlIGxvY2sgaWYgaXQncyBub3QgeWV0IHRvIGtlZXAgdGhl IGNsZWFudXAgcGF0aCBvbgorCQkJICogZXJyb3IgaGFwcHkuCisJCQkgKi8KKwkJCWlmICghcmVs ZWFzZWRfbG9jaykKKwkJCQlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2Nr KTsKKworCQkJQXNzZXJ0KHMtPmluYWN0aXZlX3NpbmNlID4gMCk7CisJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRF KSwKKwkJCQkJIGVycm1zZygiY2FuIG5vIGxvbmdlciBnZXQgY2hhbmdlcyBmcm9tIHJlcGxpY2F0 aW9uIHNsb3QgXCIlc1wiIiwKKwkJCQkJCQlOYW1lU3RyKHMtPmRhdGEubmFtZSkpLAorCQkJCQkg ZXJyZGV0YWlsKCJUaGlzIHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQgYmVjYXVzZSBpdCB3YXMg aW5hY3RpdmUgc2luY2UgJXMgZm9yIG1vcmUgdGhhbiAlZCBzZWNvbmRzIHNwZWNpZmllZCBieSBc InJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dFwiLiIsCisJCQkJCQkJICAgdGltZXN0 YW1wdHpfdG9fc3RyKHMtPmluYWN0aXZlX3NpbmNlKSwKKwkJCQkJCQkgICByZXBsaWNhdGlvbl9z bG90X2luYWN0aXZlX3RpbWVvdXQpKSk7CisJCX0KKwl9CisKKwlpZiAoIXJlbGVhc2VkX2xvY2sp CisJCUxXTG9ja1JlbGVhc2UoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2spOworCiAJLyoKIAkg KiBUaGUgY2FsbCB0byBwZ3N0YXRfYWNxdWlyZV9yZXBsc2xvdCgpIHByb3RlY3RzIGFnYWluc3Qg c3RhdHMgZm9yIGEKIAkgKiBkaWZmZXJlbnQgc2xvdCwgZnJvbSBiZWZvcmUgYSByZXN0YXJ0IG9y IHN1Y2gsIGJlaW5nIHByZXNlbnQgZHVyaW5nCkBAIC03ODUsNyArODUwLDcgQEAgUmVwbGljYXRp b25TbG90RHJvcChjb25zdCBjaGFyICpuYW1lLCBib29sIG5vd2FpdCkKIHsKIAlBc3NlcnQoTXlS ZXBsaWNhdGlvblNsb3QgPT0gTlVMTCk7CiAKLQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKG5hbWUs IG5vd2FpdCk7CisJUmVwbGljYXRpb25TbG90QWNxdWlyZShuYW1lLCBub3dhaXQsIGZhbHNlKTsK IAogCS8qCiAJICogRG8gbm90IGFsbG93IHVzZXJzIHRvIGRyb3AgdGhlIHNsb3RzIHdoaWNoIGFy ZSBjdXJyZW50bHkgYmVpbmcgc3luY2VkCkBAIC04MDgsNyArODczLDcgQEAgUmVwbGljYXRpb25T bG90QWx0ZXIoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBmYWlsb3ZlcikKIHsKIAlBc3NlcnQoTXlS ZXBsaWNhdGlvblNsb3QgPT0gTlVMTCk7CiAKLQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKG5hbWUs IGZhbHNlKTsKKwlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKG5hbWUsIGZhbHNlLCB0cnVlKTsKIAog CWlmIChTbG90SXNQaHlzaWNhbChNeVJlcGxpY2F0aW9uU2xvdCkpCiAJCWVyZXBvcnQoRVJST1Is CkBAIC0xNDgwLDcgKzE1NDUsOCBAQCBSZXBvcnRTbG90SW52YWxpZGF0aW9uKFJlcGxpY2F0aW9u U2xvdEludmFsaWRhdGlvbkNhdXNlIGNhdXNlLAogCQkJCQkgICBOYW1lRGF0YSBzbG90bmFtZSwK IAkJCQkJICAgWExvZ1JlY1B0ciByZXN0YXJ0X2xzbiwKIAkJCQkJICAgWExvZ1JlY1B0ciBvbGRl c3RMU04sCi0JCQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24pCisJ CQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCSAgIFRp bWVzdGFtcFR6IGluYWN0aXZlX3NpbmNlKQogewogCVN0cmluZ0luZm9EYXRhIGVycl9kZXRhaWw7 CiAJYm9vbAkJaGludCA9IGZhbHNlOwpAQCAtMTUxMCw2ICsxNTc2LDEzIEBAIFJlcG9ydFNsb3RJ bnZhbGlkYXRpb24oUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCWNh c2UgUlNfSU5WQUxfV0FMX0xFVkVMOgogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZXJyX2Rl dGFpbCwgXygiTG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IHJlcXVpcmVzIFwid2FsX2xldmVs XCIgPj0gXCJsb2dpY2FsXCIgb24gdGhlIHByaW1hcnkgc2VydmVyLiIpKTsKIAkJCWJyZWFrOwor CQljYXNlIFJTX0lOVkFMX0lOQUNUSVZFX1RJTUVPVVQ6CisJCQlBc3NlcnQoaW5hY3RpdmVfc2lu Y2UgPiAwKTsKKwkJCWFwcGVuZFN0cmluZ0luZm8oJmVycl9kZXRhaWwsCisJCQkJCQkJIF8oIlRo ZSBzbG90IGhhcyBiZWVuIGluYWN0aXZlIHNpbmNlICVzIGZvciBtb3JlIHRoYW4gJWQgc2Vjb25k cyBzcGVjaWZpZWQgYnkgXCJyZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXRcIi4iKSwK KwkJCQkJCQkgdGltZXN0YW1wdHpfdG9fc3RyKGluYWN0aXZlX3NpbmNlKSwKKwkJCQkJCQkgcmVw bGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0KTsKKwkJCWJyZWFrOwogCQljYXNlIFJTX0lO VkFMX05PTkU6CiAJCQlwZ191bnJlYWNoYWJsZSgpOwogCX0KQEAgLTE1NTMsNiArMTYyNiw3IEBA IEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRp b25DYXVzZSBjYXVzZSwKIAlUcmFuc2FjdGlvbklkIGluaXRpYWxfY2F0YWxvZ19lZmZlY3RpdmVf eG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCVhMb2dSZWNQdHIJaW5pdGlhbF9yZXN0YXJ0 X2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogCVJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNh dXNlIGludmFsaWRhdGlvbl9jYXVzZV9wcmV2IFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWSA9IFJT X0lOVkFMX05PTkU7CisJVGltZXN0YW1wVHogaW5hY3RpdmVfc2luY2UgPSAwOwogCiAJZm9yICg7 OykKIAl7CkBAIC0xNTYwLDYgKzE2MzQsNyBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNs b3QoUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCU5hbWVEYXRhCXNs b3RuYW1lOwogCQlpbnQJCQlhY3RpdmVfcGlkID0gMDsKIAkJUmVwbGljYXRpb25TbG90SW52YWxp ZGF0aW9uQ2F1c2UgaW52YWxpZGF0aW9uX2NhdXNlID0gUlNfSU5WQUxfTk9ORTsKKwkJVGltZXN0 YW1wVHogbm93ID0gMDsKIAogCQlBc3NlcnQoTFdMb2NrSGVsZEJ5TWVJbk1vZGUoUmVwbGljYXRp b25TbG90Q29udHJvbExvY2ssIExXX1NIQVJFRCkpOwogCkBAIC0xNTcwLDYgKzE2NDUsMTggQEAg SW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlv bkNhdXNlIGNhdXNlLAogCQkJYnJlYWs7CiAJCX0KIAorCQlpZiAoY2F1c2UgPT0gUlNfSU5WQUxf SU5BQ1RJVkVfVElNRU9VVCAmJgorCQkJKHJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91 dCA+IDAgJiYKKwkJCSBzLT5pbmFjdGl2ZV9zaW5jZSA+IDAgJiYKKwkJCSAhKFJlY292ZXJ5SW5Q cm9ncmVzcygpICYmIHMtPmRhdGEuc3luY2VkKSkpCisJCXsKKwkJCS8qCisJCQkgKiBXZSBnZXQg dGhlIGN1cnJlbnQgdGltZSBiZWZvcmVoYW5kIHRvIGF2b2lkIHN5c3RlbSBjYWxsIHdoaWxlCisJ CQkgKiBob2xkaW5nIHRoZSBzcGlubG9jay4KKwkJCSAqLworCQkJbm93ID0gR2V0Q3VycmVudFRp bWVzdGFtcCgpOworCQl9CisKIAkJLyoKIAkJICogQ2hlY2sgaWYgdGhlIHNsb3QgbmVlZHMgdG8g YmUgaW52YWxpZGF0ZWQuIElmIGl0IG5lZWRzIHRvIGJlCiAJCSAqIGludmFsaWRhdGVkLCBhbmQg aXMgbm90IGN1cnJlbnRseSBhY3F1aXJlZCwgYWNxdWlyZSBpdCBhbmQgbWFyayBpdApAQCAtMTYy Myw2ICsxNzEwLDM5IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlv blNsb3RJbnZhbGlkYXRpb25DYXVzZSBjYXVzZSwKIAkJCQkJaWYgKFNsb3RJc0xvZ2ljYWwocykp CiAJCQkJCQlpbnZhbGlkYXRpb25fY2F1c2UgPSBjYXVzZTsKIAkJCQkJYnJlYWs7CisJCQkJY2Fz ZSBSU19JTlZBTF9JTkFDVElWRV9USU1FT1VUOgorCisJCQkJCS8qCisJCQkJCSAqIFF1aWNrIGV4 aXQgaWYgaW5hY3RpdmUgdGltZW91dCBpbnZhbGlkYXRpb24gbWVjaGFuaXNtCisJCQkJCSAqIGlz IGRpc2FibGVkIG9yIHNsb3QgaXMgY3VycmVudGx5IGJlaW5nIHVzZWQgb3IgdGhlIHNsb3QKKwkJ CQkJICogb24gc3RhbmRieSBpcyBjdXJyZW50bHkgYmVpbmcgc3luY2VkIGZyb20gdGhlIHByaW1h cnkuCisJCQkJCSAqCisJCQkJCSAqIE5vdGUgdGhhdCB3ZSBkb24ndCBpbnZhbGlkYXRlIHN5bmNl ZCBzbG90cyBiZWNhdXNlLAorCQkJCQkgKiB0aGV5IGFyZSB0eXBpY2FsbHkgY29uc2lkZXJlZCBu b3QgYWN0aXZlIGFzIHRoZXkgZG9uJ3QKKwkJCQkJICogcGVyZm9ybSBsb2dpY2FsIGRlY29kaW5n IHRvIHByb2R1Y2UgdGhlIGNoYW5nZXMuCisJCQkJCSAqLworCQkJCQlpZiAocmVwbGljYXRpb25f c2xvdF9pbmFjdGl2ZV90aW1lb3V0ID09IDAgfHwKKwkJCQkJCXMtPmluYWN0aXZlX3NpbmNlID09 IDAgfHwKKwkJCQkJCShSZWNvdmVyeUluUHJvZ3Jlc3MoKSAmJiBzLT5kYXRhLnN5bmNlZCkpCisJ CQkJCQlicmVhazsKKworCQkJCQkvKgorCQkJCQkgKiBDaGVjayBpZiB0aGUgc2xvdCBuZWVkcyB0 byBiZSBpbnZhbGlkYXRlZCBkdWUgdG8KKwkJCQkJICogcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2 ZV90aW1lb3V0IEdVQy4KKwkJCQkJICovCisJCQkJCWlmIChUaW1lc3RhbXBEaWZmZXJlbmNlRXhj ZWVkcyhzLT5pbmFjdGl2ZV9zaW5jZSwgbm93LAorCQkJCQkJCQkJCQkJICAgcmVwbGljYXRpb25f c2xvdF9pbmFjdGl2ZV90aW1lb3V0ICogMTAwMCkpCisJCQkJCXsKKwkJCQkJCWludmFsaWRhdGlv bl9jYXVzZSA9IGNhdXNlOworCQkJCQkJaW5hY3RpdmVfc2luY2UgPSBzLT5pbmFjdGl2ZV9zaW5j ZTsKKworCQkJCQkJLyoKKwkJCQkJCSAqIEludmFsaWRhdGlvbiBkdWUgdG8gaW5hY3RpdmUgdGlt ZW91dCBpbXBsaWVzIHRoYXQKKwkJCQkJCSAqIG5vIG9uZSBpcyB1c2luZyB0aGUgc2xvdC4KKwkJ CQkJCSAqLworCQkJCQkJQXNzZXJ0KHMtPmFjdGl2ZV9waWQgPT0gMCk7CisJCQkJCX0KKwkJCQkJ YnJlYWs7CiAJCQkJY2FzZSBSU19JTlZBTF9OT05FOgogCQkJCQlwZ191bnJlYWNoYWJsZSgpOwog CQkJfQpAQCAtMTY0OCwxMSArMTc2OCwxNCBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNs b3QoUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCWFjdGl2ZV9waWQg PSBzLT5hY3RpdmVfcGlkOwogCiAJCS8qCi0JCSAqIElmIHRoZSBzbG90IGNhbiBiZSBhY3F1aXJl ZCwgZG8gc28gYW5kIG1hcmsgaXQgaW52YWxpZGF0ZWQKLQkJICogaW1tZWRpYXRlbHkuICBPdGhl cndpc2Ugd2UnbGwgc2lnbmFsIHRoZSBvd25pbmcgcHJvY2VzcywgYmVsb3csIGFuZAotCQkgKiBy ZXRyeS4KKwkJICogSWYgdGhlIHNsb3QgY2FuIGJlIGFjcXVpcmVkLCBkbyBzbyBvciBpZiB0aGUg c2xvdCBpcyBhbHJlYWR5IG91cnMsCisJCSAqIHRoZW4gbWFyayBpdCBpbnZhbGlkYXRlZC4gIE90 aGVyd2lzZSB3ZSdsbCBzaWduYWwgdGhlIG93bmluZworCQkgKiBwcm9jZXNzLCBiZWxvdywgYW5k IHJldHJ5LgogCQkgKi8KLQkJaWYgKGFjdGl2ZV9waWQgPT0gMCkKKwkJaWYgKGFjdGl2ZV9waWQg PT0gMCB8fAorCQkJKE15UmVwbGljYXRpb25TbG90ICE9IE5VTEwgJiYKKwkJCSBNeVJlcGxpY2F0 aW9uU2xvdCA9PSBzICYmCisJCQkgYWN0aXZlX3BpZCA9PSBNeVByb2NQaWQpKQogCQl7CiAJCQlN eVJlcGxpY2F0aW9uU2xvdCA9IHM7CiAJCQlzLT5hY3RpdmVfcGlkID0gTXlQcm9jUGlkOwpAQCAt MTcwNyw3ICsxODMwLDggQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0 aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGNhdXNlLAogCQkJewogCQkJCVJlcG9ydFNsb3RJbnZh bGlkYXRpb24oaW52YWxpZGF0aW9uX2NhdXNlLCB0cnVlLCBhY3RpdmVfcGlkLAogCQkJCQkJCQkJ ICAgc2xvdG5hbWUsIHJlc3RhcnRfbHNuLAotCQkJCQkJCQkJICAgb2xkZXN0TFNOLCBzbmFwc2hv dENvbmZsaWN0SG9yaXpvbik7CisJCQkJCQkJCQkgICBvbGRlc3RMU04sIHNuYXBzaG90Q29uZmxp Y3RIb3Jpem9uLAorCQkJCQkJCQkJICAgaW5hY3RpdmVfc2luY2UpOwogCiAJCQkJaWYgKE15QmFj a2VuZFR5cGUgPT0gQl9TVEFSVFVQKQogCQkJCQkodm9pZCkgU2VuZFByb2NTaWduYWwoYWN0aXZl X3BpZCwKQEAgLTE3NTMsNyArMTg3Nyw4IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xv dChSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBjYXVzZSwKIAogCQkJUmVwb3J0U2xv dEludmFsaWRhdGlvbihpbnZhbGlkYXRpb25fY2F1c2UsIGZhbHNlLCBhY3RpdmVfcGlkLAogCQkJ CQkJCQkgICBzbG90bmFtZSwgcmVzdGFydF9sc24sCi0JCQkJCQkJCSAgIG9sZGVzdExTTiwgc25h cHNob3RDb25mbGljdEhvcml6b24pOworCQkJCQkJCQkgICBvbGRlc3RMU04sIHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkgICBpbmFjdGl2ZV9zaW5jZSk7CiAKIAkJCS8qIGRvbmUg d2l0aCB0aGlzIHNsb3QgZm9yIG5vdyAqLwogCQkJYnJlYWs7CkBAIC0xNzc2LDYgKzE5MDEsNyBA QCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90SW52YWxpZGF0 aW9uQ2F1c2UgY2F1c2UsCiAgKiAtIFJTX0lOVkFMX0hPUklaT046IHJlcXVpcmVzIGEgc25hcHNo b3QgPD0gdGhlIGdpdmVuIGhvcml6b24gaW4gdGhlIGdpdmVuCiAgKiAgIGRiOyBkYm9pZCBtYXkg YmUgSW52YWxpZE9pZCBmb3Igc2hhcmVkIHJlbGF0aW9ucwogICogLSBSU19JTlZBTF9XQUxfTEVW RUw6IGlzIGxvZ2ljYWwKKyAqIC0gUlNfSU5WQUxfSU5BQ1RJVkVfVElNRU9VVDogaW5hY3RpdmUg dGltZW91dCBvY2N1cnMKICAqCiAgKiBOQiAtIHRoaXMgcnVucyBhcyBwYXJ0IG9mIGNoZWNrcG9p bnQsIHNvIGF2b2lkIHJhaXNpbmcgZXJyb3JzIGlmIHBvc3NpYmxlLgogICovCkBAIC0xODI4LDcg KzE5NTQsNyBAQCByZXN0YXJ0OgogfQogCiAvKgotICogRmx1c2ggYWxsIHJlcGxpY2F0aW9uIHNs b3RzIHRvIGRpc2suCisgKiBGbHVzaCBhbGwgcmVwbGljYXRpb24gc2xvdHMgdG8gZGlzayBhbmQg aW52YWxpZGF0ZSBzbG90cy4KICAqCiAgKiBJdCBpcyBjb252ZW5pZW50IHRvIGZsdXNoIGRpcnR5 IHJlcGxpY2F0aW9uIHNsb3RzIGF0IHRoZSB0aW1lIG9mIGNoZWNrcG9pbnQuCiAgKiBBZGRpdGlv bmFsbHksIGluIGNhc2Ugb2YgYSBzaHV0ZG93biBjaGVja3BvaW50LCB3ZSBhbHNvIGlkZW50aWZ5 IHRoZSBzbG90cwpAQCAtMTgzOSw2ICsxOTY1LDcgQEAgdm9pZAogQ2hlY2tQb2ludFJlcGxpY2F0 aW9uU2xvdHMoYm9vbCBpc19zaHV0ZG93bikKIHsKIAlpbnQJCQlpOworCWJvb2wJCWludmFsaWRh dGVkID0gZmFsc2U7CiAKIAllbG9nKERFQlVHMSwgInBlcmZvcm1pbmcgcmVwbGljYXRpb24gc2xv dCBjaGVja3BvaW50Iik7CiAKQEAgLTE4ODYsNiArMjAxMyw0MyBAQCBDaGVja1BvaW50UmVwbGlj YXRpb25TbG90cyhib29sIGlzX3NodXRkb3duKQogCQlTYXZlU2xvdFRvUGF0aChzLCBwYXRoLCBM T0cpOwogCX0KIAlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xvdEFsbG9jYXRpb25Mb2NrKTsK KworCWVsb2coREVCVUcxLCAicGVyZm9ybWluZyByZXBsaWNhdGlvbiBzbG90IGludmFsaWRhdGlv biIpOworCisJLyoKKwkgKiBOb3RlIHRoYXQgd2Ugd2lsbCBtYWtlIGFub3RoZXIgcGFzcyBvdmVy IHJlcGxpY2F0aW9uIHNsb3RzIGZvcgorCSAqIGludmFsaWRhdGlvbnMgdG8ga2VlcCB0aGUgY29k ZSBzaW1wbGUuIFRoZSBhc3N1bXB0aW9uIGhlcmUgaXMgdGhhdCB0aGUKKwkgKiB0cmF2ZXJzYWwg b3ZlciByZXBsaWNhdGlvbiBzbG90cyBpc24ndCB0aGF0IGNvc3RseSBldmVuIHdpdGggaHVuZHJl ZHMKKwkgKiBvZiByZXBsaWNhdGlvbiBzbG90cy4gSWYgaXQgZXZlciB0dXJucyBvdXQgdGhhdCB0 aGlzIGFzc3VtcHRpb24gaXMKKwkgKiB3cm9uZywgd2UgbWlnaHQgaGF2ZSB0byBwdXQgdGhlIGlu dmFsaWRhdGlvbiBjaGVjayBsb2dpYyBpbiB0aGUgYWJvdmUKKwkgKiBsb29wLCBmb3IgdGhhdCB3 ZSBtaWdodCBoYXZlIHRvIGRvIHRoZSBmb2xsb3dpbmc6CisJICoKKwkgKiAtIEFjcXVyZSBDb250 cm9sTG9jayBsb2NrIG9uY2UgYmVmb3JlIHRoZSBsb29wLgorCSAqCisJICogLSBDYWxsIEludmFs aWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdCBmb3IgZWFjaCBzbG90LgorCSAqCisJICogLSBIYW5k bGUgdGhlIGNhc2VzIGluIHdoaWNoIENvbnRyb2xMb2NrIGdldHMgcmVsZWFzZWQganVzdCBsaWtl CisJICogSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyBkb2VzLgorCSAqCisJICog LSBBdm9pZCBzYXZpbmcgc2xvdCBpbmZvIHRvIGRpc2sgdHdvIHRpbWVzIGZvciBlYWNoIGludmFs aWRhdGVkIHNsb3QuCisJICoKKwkgKiBYWFg6IFNob3VsZCB3ZSBtb3ZlIGluYWN0aXZlX3RpbWVv dXQgaW5hdmFsaWRhdGlvbiBjaGVjayBjbG9zZXIgdG8KKwkgKiB3YWxfcmVtb3ZlZCBpbiBDcmVh dGVDaGVja1BvaW50IGFuZCBDcmVhdGVSZXN0YXJ0UG9pbnQ/CisJICovCisJaW52YWxpZGF0ZWQg PSBJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKFJTX0lOVkFMX0lOQUNUSVZFX1RJ TUVPVVQsCisJCQkJCQkJCQkJCQkJIDAsCisJCQkJCQkJCQkJCQkJIEludmFsaWRPaWQsCisJCQkJ CQkJCQkJCQkJIEludmFsaWRUcmFuc2FjdGlvbklkKTsKKworCWlmIChpbnZhbGlkYXRlZCkKKwl7 CisJCS8qCisJCSAqIElmIGFueSBzbG90cyBoYXZlIGJlZW4gaW52YWxpZGF0ZWQsIHJlY2FsY3Vs YXRlIHRoZSByZXNvdXJjZQorCQkgKiBsaW1pdHMuCisJCSAqLworCQlSZXBsaWNhdGlvblNsb3Rz Q29tcHV0ZVJlcXVpcmVkWG1pbihmYWxzZSk7CisJCVJlcGxpY2F0aW9uU2xvdHNDb21wdXRlUmVx dWlyZWRMU04oKTsKKwl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9zbG90ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jCmlu ZGV4IGRkNmMxZDVhN2UuLjlhZDNlNTU3MDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3Nsb3RmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5j cy5jCkBAIC01MzksNyArNTM5LDcgQEAgcGdfcmVwbGljYXRpb25fc2xvdF9hZHZhbmNlKFBHX0ZV TkNUSU9OX0FSR1MpCiAJCW1vdmV0byA9IE1pbihtb3ZldG8sIEdldFhMb2dSZXBsYXlSZWNQdHIo TlVMTCkpOwogCiAJLyogQWNxdWlyZSB0aGUgc2xvdCBzbyB3ZSAib3duIiBpdCAqLwotCVJlcGxp Y2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0cigqc2xvdG5hbWUpLCB0cnVlKTsKKwlSZXBsaWNhdGlv blNsb3RBY3F1aXJlKE5hbWVTdHIoKnNsb3RuYW1lKSwgdHJ1ZSwgdHJ1ZSk7CiAKIAkvKiBBIHNs b3Qgd2hvc2UgcmVzdGFydF9sc24gaGFzIG5ldmVyIGJlZW4gcmVzZXJ2ZWQgY2Fubm90IGJlIGFk dmFuY2VkICovCiAJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQoTXlSZXBsaWNhdGlvblNsb3QtPmRh dGEucmVzdGFydF9sc24pKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fs c2VuZGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwppbmRleCBjNjIz YjA3Y2YwLi4xNzQxZTA5MjU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxzZW5kZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwpAQCAt ODQ2LDcgKzg0Niw3IEBAIFN0YXJ0UmVwbGljYXRpb24oU3RhcnRSZXBsaWNhdGlvbkNtZCAqY21k KQogCiAJaWYgKGNtZC0+c2xvdG5hbWUpCiAJewotCQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNt ZC0+c2xvdG5hbWUsIHRydWUpOworCQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNtZC0+c2xvdG5h bWUsIHRydWUsIHRydWUpOwogCQlpZiAoU2xvdElzTG9naWNhbChNeVJlcGxpY2F0aW9uU2xvdCkp CiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5f UFJFUkVRVUlTSVRFX1NUQVRFKSwKQEAgLTE0NTksNyArMTQ1OSw3IEBAIFN0YXJ0TG9naWNhbFJl cGxpY2F0aW9uKFN0YXJ0UmVwbGljYXRpb25DbWQgKmNtZCkKIAogCUFzc2VydCghTXlSZXBsaWNh dGlvblNsb3QpOwogCi0JUmVwbGljYXRpb25TbG90QWNxdWlyZShjbWQtPnNsb3RuYW1lLCB0cnVl KTsKKwlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNtZC0+c2xvdG5hbWUsIHRydWUsIHRydWUpOwog CiAJLyoKIAkgKiBGb3JjZSBhIGRpc2Nvbm5lY3QsIHNvIHRoYXQgdGhlIGRlY29kaW5nIGNvZGUg ZG9lc24ndCBuZWVkIHRvIGNhcmUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9w Z191cGdyYWRlX3N1cHBvcnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1 cHBvcnQuYwppbmRleCBjNTRiMDhmZTE4Li44Mjk1NmQ1OGQzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvcGdfdXBncmFkZV9zdXBwb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jCkBAIC0yOTksNyArMjk5LDcgQEAgYmluYXJ5X3Vw Z3JhZGVfbG9naWNhbF9zbG90X2hhc19jYXVnaHRfdXAoUEdfRlVOQ1RJT05fQVJHUykKIAlzbG90 X25hbWUgPSBQR19HRVRBUkdfTkFNRSgwKTsKIAogCS8qIEFjcXVpcmUgdGhlIGdpdmVuIHNsb3Qg Ki8KLQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIoKnNsb3RfbmFtZSksIHRydWUpOwor CVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0cigqc2xvdF9uYW1lKSwgdHJ1ZSwgZmFsc2Up OwogCiAJQXNzZXJ0KFNsb3RJc0xvZ2ljYWwoTXlSZXBsaWNhdGlvblNsb3QpKTsKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCA0NmMyNThiZTI4Li40OTkwZTczYzk3IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtMjk2MSw2ICsyOTYxLDE4IEBAIHN0cnVj dCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50W10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJ fSwKIAorCXsKKwkJeyJyZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQiLCBQR0NfU0lH SFVQLCBSRVBMSUNBVElPTl9TRU5ESU5HLAorCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSBhbW91 bnQgb2YgdGltZSB0byB3YWl0IGJlZm9yZSBpbnZhbGlkYXRpbmcgYW4gIgorCQkJCQkJICJpbmFj dGl2ZSByZXBsaWNhdGlvbiBzbG90LiIpLAorCQkJTlVMTCwKKwkJCUdVQ19VTklUX1MKKwkJfSwK KwkJJnJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dCwKKwkJMCwgMCwgSU5UX01BWCwK KwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCisKIAl7CiAJCXsiY29tbWl0X2RlbGF5IiwgUEdDX1NV U0VULCBXQUxfU0VUVElOR1MsCiAJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhlIGRlbGF5IGluIG1p Y3Jvc2Vjb25kcyBiZXR3ZWVuIHRyYW5zYWN0aW9uIGNvbW1pdCBhbmQgIgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IGUwNTY3ZGUyMTkuLjUz NWZiMDczODUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5j b25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5z YW1wbGUKQEAgLTMzNSw2ICszMzUsNyBAQAogI3dhbF9zZW5kZXJfdGltZW91dCA9IDYwcwkjIGlu IG1pbGxpc2Vjb25kczsgMCBkaXNhYmxlcwogI3RyYWNrX2NvbW1pdF90aW1lc3RhbXAgPSBvZmYJ IyBjb2xsZWN0IHRpbWVzdGFtcCBvZiB0cmFuc2FjdGlvbiBjb21taXQKIAkJCQkjIChjaGFuZ2Ug cmVxdWlyZXMgcmVzdGFydCkKKyNyZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQgPSAw CSMgaW4gc2Vjb25kczsgMCBkaXNhYmxlcwogCiAjIC0gUHJpbWFyeSBTZXJ2ZXIgLQogCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmggYi9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9zbG90LmgKaW5kZXggMWJjODA5NjBlZi4uNTZkMjBlMWE3OCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3Nsb3QuaApAQCAtNTMsNiArNTMsOCBAQCB0eXBlZGVmIGVudW0gUmVwbGljYXRpb25TbG90 SW52YWxpZGF0aW9uQ2F1c2UKIAlSU19JTlZBTF9IT1JJWk9OLAogCS8qIHdhbF9sZXZlbCBpbnN1 ZmZpY2llbnQgZm9yIHNsb3QgKi8KIAlSU19JTlZBTF9XQUxfTEVWRUwsCisJLyogaW5hY3RpdmUg c2xvdCB0aW1lb3V0IGhhcyBvY2N1cnJlZCAqLworCVJTX0lOVkFMX0lOQUNUSVZFX1RJTUVPVVQs CiB9IFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlOwogCiBleHRlcm4gUEdETExJTVBP UlQgY29uc3QgY2hhciAqY29uc3QgU2xvdEludmFsaWRhdGlvbkNhdXNlc1tdOwpAQCAtMjMwLDYg KzIzMiw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCBSZXBsaWNhdGlvblNsb3QgKk15UmVwbGljYXRp b25TbG90OwogLyogR1VDcyAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfcmVwbGljYXRp b25fc2xvdHM7CiBleHRlcm4gUEdETExJTVBPUlQgY2hhciAqc3RhbmRieV9zbG90X25hbWVzOwor ZXh0ZXJuIFBHRExMSU1QT1JUIGludCByZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQ7 CiAKIC8qIHNobWVtIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyAqLwogZXh0ZXJuIFNpemUgUmVw bGljYXRpb25TbG90c1NobWVtU2l6ZSh2b2lkKTsKQEAgLTI0NSw3ICsyNDgsOCBAQCBleHRlcm4g dm9pZCBSZXBsaWNhdGlvblNsb3REcm9wKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgbm93YWl0KTsK IGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdERyb3BBY3F1aXJlZCh2b2lkKTsKIGV4dGVybiB2 b2lkIFJlcGxpY2F0aW9uU2xvdEFsdGVyKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgZmFpbG92ZXIp OwogCi1leHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNvbnN0IGNoYXIgKm5hbWUs IGJvb2wgbm93YWl0KTsKK2V4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoY29uc3Qg Y2hhciAqbmFtZSwgYm9vbCBub3dhaXQsCisJCQkJCQkJCSAgIGJvb2wgY2hlY2tfZm9yX2ludmFs aWRhdGlvbik7CiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3RSZWxlYXNlKHZvaWQpOwogZXh0 ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90Q2xlYW51cChib29sIHN5bmNlZF9vbmx5KTsKIGV4dGVy biB2b2lkIFJlcGxpY2F0aW9uU2xvdFNhdmUodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWNvdmVyeS9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCmluZGV4 IGIxZWI3N2IxZWMuLmI0YzVjZTI4NzUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L21l c29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCkBAIC0xMCw2ICsx MCw3IEBAIHRlc3RzICs9IHsKICAgICAgICAnZW5hYmxlX2luamVjdGlvbl9wb2ludHMnOiBnZXRf b3B0aW9uKCdpbmplY3Rpb25fcG9pbnRzJykgPyAneWVzJyA6ICdubycsCiAgICAgfSwKICAgICAn dGVzdHMnOiBbCisgICAgICAndC8wNTBfaW52YWxpZGF0ZV9zbG90cy5wbCcsCiAgICAgICAndC8w MDFfc3RyZWFtX3JlcC5wbCcsCiAgICAgICAndC8wMDJfYXJjaGl2aW5nLnBsJywKICAgICAgICd0 LzAwM19yZWNvdmVyeV90YXJnZXRzLnBsJywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5 L3QvMDUwX2ludmFsaWRhdGVfc2xvdHMucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA1MF9pbnZh bGlkYXRlX3Nsb3RzLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQ2 NjMwMTljMTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA1MF9pbnZh bGlkYXRlX3Nsb3RzLnBsCkBAIC0wLDAgKzEsMjg2IEBACisjIENvcHlyaWdodCAoYykgMjAyNCwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IGZvciByZXBsaWNh dGlvbiBzbG90cyBpbnZhbGlkYXRpb24KK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwg PT4gJ2FsbCc7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyOwordXNlIFRlc3Q6Ok1vcmU7Cit1c2UgVGltZTo6SGlSZXMgcXcodXNs ZWVwKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBUZXN0Y2FzZSBzdGFydDogSW52YWxp ZGF0ZSBzdHJlYW1pbmcgc3RhbmRieSdzIHNsb3QgYXMgd2VsbCBhcyBsb2dpY2FsCisjIGZhaWxv dmVyIHNsb3Qgb24gcHJpbWFyeSBkdWUgdG8gcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1l b3V0LiBBbHNvLAorIyBjaGVjayB0aGUgbG9naWNhbCBmYWlsb3ZlciBzbG90IHN5bmNlZCBvbiB0 byB0aGUgc3RhbmRieSBkb2Vzbid0IGludmFsaWRhdGUKKyMgdGhlIHNsb3Qgb24gaXRzIG93biwg YnV0IGdldHMgdGhlIGludmFsaWRhdGVkIHN0YXRlIGZyb20gdGhlIHJlbW90ZSBzbG90IG9uCisj IHRoZSBwcmltYXJ5LgorCisjIEluaXRpYWxpemUgcHJpbWFyeSBub2RlCitteSAkcHJpbWFyeSA9 IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHJpbWFyeScpOworJHByaW1hcnktPmlu aXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworCisjIEF2b2lkIGNoZWNrcG9pbnQg ZHVyaW5nIHRoZSB0ZXN0LCBvdGhlcndpc2UsIHRoZSB0ZXN0IGNhbiBnZXQgdW5wcmVkaWN0YWJs ZQorJHByaW1hcnktPmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxeworY2hlY2tw b2ludF90aW1lb3V0ID0gMWgKK2F1dG92YWN1dW0gPSBvZmYKK30pOworJHByaW1hcnktPnN0YXJ0 OworCisjIFRha2UgYmFja3VwCitteSAkYmFja3VwX25hbWUgPSAnbXlfYmFja3VwJzsKKyRwcmlt YXJ5LT5iYWNrdXAoJGJhY2t1cF9uYW1lKTsKKworIyBDcmVhdGUgYSBzdGFuZGJ5IGxpbmtpbmcg dG8gdGhlIHByaW1hcnkgdXNpbmcgdGhlIHJlcGxpY2F0aW9uIHNsb3QKK215ICRzdGFuZGJ5MSA9 IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3RhbmRieTEnKTsKKyRzdGFuZGJ5MS0+ aW5pdF9mcm9tX2JhY2t1cCgkcHJpbWFyeSwgJGJhY2t1cF9uYW1lLCBoYXNfc3RyZWFtaW5nID0+ IDEpOworCitteSAkY29ubnN0cl8xID0gJHByaW1hcnktPmNvbm5zdHI7Ciskc3RhbmRieTEtPmFw cGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxcSgKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNr ID0gb24KK3ByaW1hcnlfc2xvdF9uYW1lID0gJ3NiMV9zbG90JworcHJpbWFyeV9jb25uaW5mbyA9 ICckY29ubnN0cl8xIGRibmFtZT1wb3N0Z3JlcycKKykpOworCisjIENyZWF0ZSBzeW5jIHNsb3Qg b24gdGhlIHByaW1hcnkKKyRwcmltYXJ5LT5wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgcGdf Y3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdCgnbHN1YjFfc3luY19zbG90JywgJ3Rlc3Rf ZGVjb2RpbmcnLCBmYWxzZSwgZmFsc2UsIHRydWUpO30KKyk7CisKKyRwcmltYXJ5LT5zYWZlX3Bz cWwoCisJJ3Bvc3RncmVzJywgcXFbCisgICAgU0VMRUNUIHBnX2NyZWF0ZV9waHlzaWNhbF9yZXBs aWNhdGlvbl9zbG90KHNsb3RfbmFtZSA6PSAnc2IxX3Nsb3QnLCBpbW1lZGlhdGVseV9yZXNlcnZl IDo9IHRydWUpOworXSk7CisKKyRzdGFuZGJ5MS0+c3RhcnQ7CisKK215ICRzdGFuZGJ5MV9sb2dz dGFydCA9IC1zICRzdGFuZGJ5MS0+bG9nZmlsZTsKKworIyBXYWl0IHVudGlsIHN0YW5kYnkgaGFz IHJlcGxheWVkIGVub3VnaCBkYXRhCiskcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkc3RhbmRi eTEpOworCisjIFN5bmNocm9uaXplIHRoZSBwcmltYXJ5IHNlcnZlciBzbG90cyB0byB0aGUgc3Rh bmRieQorJHN0YW5kYnkxLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19zeW5jX3Jl cGxpY2F0aW9uX3Nsb3RzKCk7Iik7CisKKyMgQ29uZmlybSB0aGF0IHRoZSBsb2dpY2FsIGZhaWxv dmVyIHNsb3QgaXMgY3JlYXRlZCBvbiB0aGUgc3RhbmRieSBhbmQgaXMKKyMgZmxhZ2dlZCBhcyAn c3luY2VkJy4KK2lzKCAkc3RhbmRieTEtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywKKwkJcXtT RUxFQ1QgY291bnQoKikgPSAxIEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMKKwkJICBXSEVSRSBz bG90X25hbWUgPSAnbHN1YjFfc3luY19zbG90JyBBTkQgc3luY2VkIEFORCBOT1QgdGVtcG9yYXJ5 O30KKwkpLAorCSJ0IiwKKwknbG9naWNhbCBzbG90IGxzdWIxX3N5bmNfc2xvdCBoYXMgc3luY2Vk IGFzIHRydWUgb24gc3RhbmRieScpOworCitteSAkbG9nc3RhcnQgPSAtcyAkcHJpbWFyeS0+bG9n ZmlsZTsKK215ICRpbmFjdGl2ZV90aW1lb3V0ID0gMjsKKworIyBTZXQgdGltZW91dCBzbyB0aGF0 IHRoZSBuZXh0IGNoZWNrcG9pbnQgd2lsbCBpbnZhbGlkYXRlIHRoZSBpbmFjdGl2ZQorIyByZXBs aWNhdGlvbiBzbG90LgorJHByaW1hcnktPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKyAg ICBBTFRFUiBTWVNURU0gU0VUIHJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dCBUTyAn JHtpbmFjdGl2ZV90aW1lb3V0fXMnOworXSk7CiskcHJpbWFyeS0+cmVsb2FkOworCisjIFdhaXQg Zm9yIHRoZSBsb2dpY2FsIGZhaWxvdmVyIHNsb3QgdG8gYmVjb21lIGluYWN0aXZlIG9uIHRoZSBw cmltYXJ5LiBOb3RlCisjIHRoYXQgbm9ib2R5IGhhcyBhY3F1aXJlZCB0aGF0IHNsb3QgeWV0LCBz byBkdWUgdG8KKyMgcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0IHNldHRpbmcgYWJv dmUgaXQgbXVzdCBnZXQgaW52YWxpZGF0ZWQuCit3YWl0X2Zvcl9zbG90X2ludmFsaWRhdGlvbigk cHJpbWFyeSwgJ2xzdWIxX3N5bmNfc2xvdCcsICRsb2dzdGFydCwKKwkkaW5hY3RpdmVfdGltZW91 dCk7CisKKyMgU2V0IHRpbWVvdXQgb24gdGhlIHN0YW5kYnkgYWxzbyB0byBjaGVjayB0aGUgc3lu Y2VkIHNsb3RzIGRvbid0IGdldAorIyBpbnZhbGlkYXRlZCBkdWUgdG8gdGltZW91dCBvbiB0aGUg c3RhbmRieS4KKyRzdGFuZGJ5MS0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxWworICAgIEFM VEVSIFNZU1RFTSBTRVQgcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0IFRPICcycyc7 CitdKTsKKyRzdGFuZGJ5MS0+cmVsb2FkOworCisjIE5vdywgc3luYyB0aGUgbG9naWNhbCBmYWls b3ZlciBzbG90IGZyb20gdGhlIHJlbW90ZSBzbG90IG9uIHRoZSBwcmltYXJ5LgorIyBOb3RlIHRo YXQgdGhlIHJlbW90ZSBzbG90IGhhcyBhbHJlYWR5IGJlZW4gaW52YWxpZGF0ZWQgZHVlIHRvIGlu YWN0aXZlCisjIHRpbWVvdXQuIE5vdywgdGhlIHN0YW5kYnkgbXVzdCBhbHNvIHNlZSBpdCBhcyBp bnZhbGlkYXRlZC4KKyRzdGFuZGJ5MS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdf c3luY19yZXBsaWNhdGlvbl9zbG90cygpOyIpOworCisjIFdhaXQgZm9yIHRoZSBpbmFjdGl2ZSBy ZXBsaWNhdGlvbiBzbG90IHRvIGJlIGludmFsaWRhdGVkLgorJHN0YW5kYnkxLT5wb2xsX3F1ZXJ5 X3VudGlsKAorCSdwb3N0Z3JlcycsIHFxWworCVNFTEVDVCBDT1VOVChzbG90X25hbWUpID0gMSBG Uk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJCVdIRVJFIHNsb3RfbmFtZSA9ICdsc3ViMV9zeW5j X3Nsb3QnIEFORAorCQlpbnZhbGlkYXRpb25fcmVhc29uID0gJ2luYWN0aXZlX3RpbWVvdXQnOwor XSkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgcmVwbGljYXRpb24g c2xvdCBsc3ViMV9zeW5jX3Nsb3QgaW52YWxpZGF0aW9uIHRvIGJlIHN5bmNlZCBvbiBzdGFuZGJ5 IjsKKworIyBTeW5jZWQgc2xvdCBtdXN0bid0IGdldCBpbnZhbGlkYXRlZCBvbiB0aGUgc3RhbmRi eSBldmVuIGFmdGVyIGEgY2hlY2twb2ludCwKKyMgaXQgbXVzdCBzeW5jIGludmFsaWRhdGlvbiBm cm9tIHRoZSBwcmltYXJ5LiBTbywgd2UgbXVzdCBub3Qgc2VlIHRoZSBzbG90J3MKKyMgaW52YWxp ZGF0aW9uIG1lc3NhZ2UgaW4gc2VydmVyIGxvZy4KKyRzdGFuZGJ5MS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJDSEVDS1BPSU5UIik7CitvayggISRzdGFuZGJ5MS0+bG9nX2NvbnRhaW5zKAorCQki aW52YWxpZGF0aW5nIG9ic29sZXRlIHJlcGxpY2F0aW9uIHNsb3QgXCJsc3ViMV9zeW5jX3Nsb3Rc IiIsCisJCSRzdGFuZGJ5MV9sb2dzdGFydCksCisJJ2NoZWNrIHRoYXQgc3luZWQgc2xvdCBsc3Vi MV9zeW5jX3Nsb3QgaGFzIG5vdCBiZWVuIGludmFsaWRhdGVkIG9uIHRoZSBzdGFuZGJ5JworKTsK KworIyBTdG9wIHN0YW5kYnkgdG8gbWFrZSB0aGUgc3RhbmRieSdzIHJlcGxpY2F0aW9uIHNsb3Qg b24gdGhlIHByaW1hcnkgaW5hY3RpdmUKKyRzdGFuZGJ5MS0+c3RvcDsKKworIyBXYWl0IGZvciB0 aGUgc3RhbmRieSdzIHJlcGxpY2F0aW9uIHNsb3QgdG8gYmVjb21lIGluYWN0aXZlCit3YWl0X2Zv cl9zbG90X2ludmFsaWRhdGlvbigkcHJpbWFyeSwgJ3NiMV9zbG90JywgJGxvZ3N0YXJ0LAorCSRp bmFjdGl2ZV90aW1lb3V0KTsKKworIyBUZXN0Y2FzZSBlbmQ6IEludmFsaWRhdGUgc3RyZWFtaW5n IHN0YW5kYnkncyBzbG90IGFzIHdlbGwgYXMgbG9naWNhbCBmYWlsb3ZlcgorIyBzbG90IG9uIHBy aW1hcnkgZHVlIHRvIHJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dC4gQWxzbywgY2hl Y2sgdGhlCisjIGxvZ2ljYWwgZmFpbG92ZXIgc2xvdCBzeW5jZWQgb24gdG8gdGhlIHN0YW5kYnkg ZG9lc24ndCBpbnZhbGlkYXRlIHRoZSBzbG90IG9uCisjIGl0cyBvd24sIGJ1dCBnZXRzIHRoZSBp bnZhbGlkYXRlZCBzdGF0ZSBmcm9tIHRoZSByZW1vdGUgc2xvdCBvbiB0aGUgcHJpbWFyeS4KKyMg PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBUZXN0Y2Fz ZSBzdGFydDogSW52YWxpZGF0ZSBsb2dpY2FsIHN1YnNjcmliZXIncyBzbG90IGR1ZSB0bworIyBy ZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQuCisKK215ICRwdWJsaXNoZXIgPSAkcHJp bWFyeTsKKworIyBQcmVwYXJlIGZvciB0aGUgbmV4dCB0ZXN0CiskcHVibGlzaGVyLT5zYWZlX3Bz cWwoCisJJ3Bvc3RncmVzJywgcXFbCisgICAgQUxURVIgU1lTVEVNIFNFVCByZXBsaWNhdGlvbl9z bG90X2luYWN0aXZlX3RpbWVvdXQgVE8gJzAnOworXSk7CiskcHVibGlzaGVyLT5yZWxvYWQ7CisK KyMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZQorbXkgJHN1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YicpOworJHN1YnNjcmliZXItPmluaXQ7Ciskc3Vic2NyaWJl ci0+c3RhcnQ7CisKKyMgQ3JlYXRlIHRhYmxlcworJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YmwgKGlkIGludCkiKTsKKyRzdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3RibCAoaWQgaW50KSIpOwor CisjIEluc2VydCBzb21lIGRhdGEKKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJJTlNFUlQgSU5UTyB0ZXN0X3RibCBWQUxVRVMgKGdlbmVyYXRlX3NlcmllcygxLCA1KSk7Iik7 CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgorbXkgJHB1Ymxpc2hlcl9jb25uc3RyID0g JHB1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKKyRwdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YiBGT1IgQUxMIFRBQkxF UyIpOworJHB1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxWworICAgIFNFTEVD VCBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KHNsb3RfbmFtZSA6PSAnbHN1YjFf c2xvdCcsIHBsdWdpbiA6PSAncGdvdXRwdXQnKTsKK10pOworCiskc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gc3ViIENPTk5FQ1RJT04gJyRw dWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gcHViIFdJVEggKHNsb3RfbmFtZSA9ICdsc3Vi MV9zbG90JywgY3JlYXRlX3Nsb3QgPSBmYWxzZSkiCispOworCiskc3Vic2NyaWJlci0+d2FpdF9m b3Jfc3Vic2NyaXB0aW9uX3N5bmMoJHB1Ymxpc2hlciwgJ3N1YicpOworCitteSAkcmVzdWx0ID0K KyAgJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZS T00gdGVzdF90YmwiKTsKKworaXMoJHJlc3VsdCwgcXEoNSksICJjaGVjayBpbml0aWFsIGNvcHkg d2FzIGRvbmUiKTsKKworIyBQcmVwYXJlIGZvciB0aGUgbmV4dCB0ZXN0CiskcHVibGlzaGVyLT5z YWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisgICAgQUxURVIgU1lTVEVNIFNFVCByZXBsaWNh dGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQgVE8gJyAke2luYWN0aXZlX3RpbWVvdXR9cyc7Citd KTsKKyRwdWJsaXNoZXItPnJlbG9hZDsKKworJGxvZ3N0YXJ0ID0gLXMgJHB1Ymxpc2hlci0+bG9n ZmlsZTsKKworIyBTdG9wIHN1YnNjcmliZXIgdG8gbWFrZSB0aGUgcmVwbGljYXRpb24gc2xvdCBv biBwdWJsaXNoZXIgaW5hY3RpdmUKKyRzdWJzY3JpYmVyLT5zdG9wOworCisjIFdhaXQgZm9yIHRo ZSByZXBsaWNhdGlvbiBzbG90IHRvIGJlY29tZSBpbmFjdGl2ZSBhbmQgdGhlbiBpbnZhbGlkYXRl ZCBkdWUgdG8KKyMgdGltZW91dC4KK3dhaXRfZm9yX3Nsb3RfaW52YWxpZGF0aW9uKCRwdWJsaXNo ZXIsICdsc3ViMV9zbG90JywgJGxvZ3N0YXJ0LAorCSRpbmFjdGl2ZV90aW1lb3V0KTsKKworIyBU ZXN0Y2FzZSBlbmQ6IEludmFsaWRhdGUgbG9naWNhbCBzdWJzY3JpYmVyJ3Mgc2xvdCBkdWUgdG8K KyMgcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0LgorIyA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorCitzdWIgd2FpdF9mb3Jfc2xvdF9pbnZhbGlkYXRpb24KK3sKKwlteSAoJG5vZGUsICRz bG90X25hbWUsICRvZmZzZXQsICRpbmFjdGl2ZV90aW1lb3V0KSA9IEBfOworCW15ICRuYW1lID0g JG5vZGUtPm5hbWU7CisKKwkjIFdhaXQgZm9yIHRoZSByZXBsaWNhdGlvbiBzbG90IHRvIGJlY29t ZSBpbmFjdGl2ZQorCSRub2RlLT5wb2xsX3F1ZXJ5X3VudGlsKAorCQkncG9zdGdyZXMnLCBxcVsK KwkJU0VMRUNUIENPVU5UKHNsb3RfbmFtZSkgPSAxIEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMK KwkJCVdIRVJFIHNsb3RfbmFtZSA9ICckc2xvdF9uYW1lJyBBTkQgYWN0aXZlID0gJ2YnOworCV0p CisJICBvciBkaWUKKwkgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc2xvdCAkc2xvdF9u YW1lIHRvIGJlY29tZSBpbmFjdGl2ZSBvbiBub2RlICRuYW1lIjsKKworCSMgV2FpdCBmb3IgdGhl IHJlcGxpY2F0aW9uIHNsb3QgaW5mbyB0byBiZSB1cGRhdGVkCisJJG5vZGUtPnBvbGxfcXVlcnlf dW50aWwoCisJCSdwb3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgQ09VTlQoc2xvdF9uYW1lKSA9IDEg RlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cworCQkJV0hFUkUgaW5hY3RpdmVfc2luY2UgSVMgTk9U IE5VTEwKKwkJCQlBTkQgc2xvdF9uYW1lID0gJyRzbG90X25hbWUnIEFORCBhY3RpdmUgPSAnZic7 CisJXSkKKwkgIG9yIGRpZQorCSAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBpbmZvIG9m IHNsb3QgJHNsb3RfbmFtZSB0byBiZSB1cGRhdGVkIG9uIG5vZGUgJG5hbWUiOworCisJIyBTbGVl cCBhdCBsZWFzdCAkaW5hY3RpdmVfdGltZW91dCBkdXJhdGlvbiB0byBhdm9pZCBtdWx0aXBsZSBj aGVja3BvaW50cworCSMgZm9yIHRoZSBzbG90IHRvIGdldCBpbnZhbGlkYXRlZC4KKwlzbGVlcCgk aW5hY3RpdmVfdGltZW91dCk7CisKKwljaGVja19mb3Jfc2xvdF9pbnZhbGlkYXRpb25faW5fc2Vy dmVyX2xvZygkbm9kZSwgJHNsb3RfbmFtZSwgJG9mZnNldCk7CisKKwkjIFdhaXQgZm9yIHRoZSBp bmFjdGl2ZSByZXBsaWNhdGlvbiBzbG90IHRvIGJlIGludmFsaWRhdGVkCisJJG5vZGUtPnBvbGxf cXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgQ09VTlQoc2xvdF9uYW1l KSA9IDEgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cworCQkJV0hFUkUgc2xvdF9uYW1lID0gJyRz bG90X25hbWUnIEFORAorCQkJaW52YWxpZGF0aW9uX3JlYXNvbiA9ICdpbmFjdGl2ZV90aW1lb3V0 JzsKKwldKQorCSAgb3IgZGllCisJICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGluYWN0 aXZlIHNsb3QgJHNsb3RfbmFtZSB0byBiZSBpbnZhbGlkYXRlZCBvbiBub2RlICRuYW1lIjsKKwor CSMgQ2hlY2sgdGhhdCB0aGUgaW52YWxpZGF0ZWQgc2xvdCBjYW5ub3QgYmUgYWNxdWlyZWQKKwlt eSAoJHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVycik7CisKKwkoJHJlc3VsdCwgJHN0ZG91dCwgJHN0 ZGVycikgPSAkbm9kZS0+cHNxbCgKKwkJJ3Bvc3RncmVzJywgcXFbCisJCQlTRUxFQ1QgcGdfcmVw bGljYXRpb25fc2xvdF9hZHZhbmNlKCckc2xvdF9uYW1lJywgJzAvMScpOworCV0pOworCisJb2so ICRzdGRlcnIgPX4KKwkJICAvY2FuIG5vIGxvbmdlciBnZXQgY2hhbmdlcyBmcm9tIHJlcGxpY2F0 aW9uIHNsb3QgIiRzbG90X25hbWUiLywKKwkJImRldGVjdGVkIGVycm9yIHVwb24gdHJ5aW5nIHRv IGFjcXVpcmUgaW52YWxpZGF0ZWQgc2xvdCAkc2xvdF9uYW1lIG9uIG5vZGUgJG5hbWUiCisJICAp CisJICBvciBkaWUKKwkgICJjb3VsZCBub3QgZGV0ZWN0IGVycm9yIHVwb24gdHJ5aW5nIHRvIGFj cXVpcmUgaW52YWxpZGF0ZWQgc2xvdCAkc2xvdF9uYW1lIG9uIG5vZGUgJG5hbWUiOworfQorCisj IENoZWNrIGZvciBpbnZhbGlkYXRpb24gb2Ygc2xvdCBpbiBzZXJ2ZXIgbG9nCitzdWIgY2hlY2tf Zm9yX3Nsb3RfaW52YWxpZGF0aW9uX2luX3NlcnZlcl9sb2cKK3sKKwlteSAoJG5vZGUsICRzbG90 X25hbWUsICRvZmZzZXQpID0gQF87CisJbXkgJG5hbWUgPSAkbm9kZS0+bmFtZTsKKwlteSAkaW52 YWxpZGF0ZWQgPSAwOworCisJZm9yIChteSAkaSA9IDA7ICRpIDwgMTAgKiAkUG9zdGdyZVNRTDo6 VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdDsgJGkrKykKKwl7CisJCSRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkNIRUNLUE9JTlQiKTsKKwkJaWYgKCRub2RlLT5sb2dfY29udGFpbnMo CisJCQkJImludmFsaWRhdGluZyBvYnNvbGV0ZSByZXBsaWNhdGlvbiBzbG90IFwiJHNsb3RfbmFt ZVwiIiwKKwkJCQkkb2Zmc2V0KSkKKwkJeworCQkJJGludmFsaWRhdGVkID0gMTsKKwkJCWxhc3Q7 CisJCX0KKwkJdXNsZWVwKDEwMF8wMDApOworCX0KKwlvaygkaW52YWxpZGF0ZWQsCisJCSJjaGVj ayB0aGF0IHNsb3QgJHNsb3RfbmFtZSBpbnZhbGlkYXRpb24gaGFzIGJlZW4gbG9nZ2VkIG9uIG5v ZGUgJG5hbWUiCisJKTsKK30KKworZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjM0LjEKCg== --000000000000c8a5dc061b150e62 Content-Type: application/x-patch; name="v40-0002-Add-XID-age-based-replication-slot-invalidation.patch" Content-Disposition: attachment; filename="v40-0002-Add-XID-age-based-replication-slot-invalidation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lxix9hi71 RnJvbSAxODE4NTg4NWZiMzEzMjE4N2EyNTUyMTE2ZWUxNDNjNDUxOGMxYzRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IE1vbiwgMTcgSnVuIDIwMjQgMDk6NTQ6NDMgKzAw MDAKU3ViamVjdDogW1BBVENIIHY0MCAyLzJdIEFkZCBYSUQgYWdlIGJhc2VkIHJlcGxpY2F0aW9u IHNsb3QgaW52YWxpZGF0aW9uCgpUaWxsIG5vdywgcG9zdGdyZXMgaGFzIHRoZSBhYmlsaXR5IHRv IGludmFsaWRhdGUgaW5hY3RpdmUKcmVwbGljYXRpb24gc2xvdHMgYmFzZWQgb24gdGhlIGFtb3Vu dCBvZiBXQUwgKHNldCB2aWEKbWF4X3Nsb3Rfd2FsX2tlZXBfc2l6ZSBHVUMpIHRoYXQgd2lsbCBi ZSBuZWVkZWQgZm9yIHRoZSBzbG90cyBpbgpjYXNlIHRoZXkgYmVjb21lIGFjdGl2ZS4gSG93ZXZl ciwgY2hvb3NpbmcgYSBkZWZhdWx0IHZhbHVlIGZvcgptYXhfc2xvdF93YWxfa2VlcF9zaXplIGlz IHRyaWNreS4gQmVjYXVzZSB0aGUgYW1vdW50IG9mIFdBTCBhCmN1c3RvbWVyIGdlbmVyYXRlcywg YW5kIHRoZWlyIGFsbG9jYXRlZCBzdG9yYWdlIHdpbGwgdmFyeSBncmVhdGx5CmluIHByb2R1Y3Rp b24sIG1ha2luZyBpdCBkaWZmaWN1bHQgdG8gcGluIGRvd24gYSBvbmUtc2l6ZS1maXRzLWFsbAp2 YWx1ZS4gSXQgaXMgb2Z0ZW4gZWFzeSBmb3IgZGV2ZWxvcGVycyB0byBzZXQgYW4gWElEIGFnZSAo YWdlIG9mCnNsb3QncyB4bWluIG9yIGNhdGFsb2dfeG1pbikgb2Ygc2F5IDEgb3IgMS41IGJpbGxp b24sIGFmdGVyIHdoaWNoCnRoZSBzbG90cyBnZXQgaW52YWxpZGF0ZWQuCgpUbyBhY2hpZXZlIHRo ZSBhYm92ZSwgcG9zdGdyZXMgaW50cm9kdWNlcyBhIEdVQyBhbGxvd2luZyB1c2VycwpzZXQgc2xv dCBYSUQgYWdlLiBUaGUgcmVwbGljYXRpb24gc2xvdHMgd2hvc2UgeG1pbiBvciBjYXRhbG9nX3ht aW4KaGFzIHJlYWNoZWQgdGhlIGFnZSBzcGVjaWZpZWQgYnkgdGhpcyBzZXR0aW5nIGdldCBpbnZh bGlkYXRlZC4KClRoZSBpbnZhbGlkYXRpb24gY2hlY2sgaGFwcGVucyBhdCB2YXJpb3VzIGxvY2F0 aW9ucyB0byBoZWxwIGJlaW5nCmFzIGxhdGVzdCBhcyBwb3NzaWJsZSwgdGhlc2UgbG9jYXRpb25z IGluY2x1ZGUgdGhlIGZvbGxvd2luZzoKLSBXaGVuZXZlciB0aGUgc2xvdCBpcyBhY3F1aXJlZCBh bmQgdGhlIHNsb3QgYWNxdWlzaXRpb24gZXJyb3JzCm91dCBpZiBpbnZhbGlkYXRlZC4KLSBEdXJp bmcgY2hlY2twb2ludAoKQXV0aG9yOiBCaGFyYXRoIFJ1cGlyZWRkeQpSZXZpZXdlZC1ieTogQmVy dHJhbmQgRHJvdXZvdCwgQW1pdCBLYXBpbGEsIFNodmV0YSBNYWxpawpEaXNjdXNzaW9uOiBodHRw czovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBTGoyQUNXNGFVZS1fdUZRT2pkV0NF Ti14WG9MR2htdlJGbkw4U053X1RaNW5KZSthd0BtYWlsLmdtYWlsLmNvbQpEaXNjdXNzaW9uOiBo dHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkLzIwMjQwMzI3MTUwNTU3LkdBMzk5 NDkzNyU0MG5hdGhhbnhwczEzCkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3Jn L21lc3NhZ2UtaWQvQ0ElMkJUZ21vYVJFQ2NueXF4QXhVaFA1ZGsyUzRIWCUzRHBHaC1wLVBrQTN1 YyUyQmpHXzloaU13JTQwbWFpbC5nbWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNn bWwgICAgICAgICAgICAgICAgICAgICAgfCAgMjYgKysKIGRvYy9zcmMvc2dtbC9zeXN0ZW0tdmll d3Muc2dtbCAgICAgICAgICAgICAgICB8ICAgOCArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90LmMgICAgICAgICAgICAgICAgfCAxNTEgKysrKysrKystCiBzcmMvYmFja2VuZC91dGlscy9t aXNjL2d1Y190YWJsZXMuYyAgICAgICAgICAgfCAgMTAgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3Nsb3QuaCAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvdGVzdC9yZWNvdmVyeS90LzA1MF9p bnZhbGlkYXRlX3Nsb3RzLnBsICAgfCAyOTYgKysrKysrKysrKysrKysrKystCiA3IGZpbGVzIGNo YW5nZWQsIDQ4MSBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXgg YTAxZjZkMmQxNC4uMTE0YjQ4ZTQxZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtNDU4Nyw2ICs0NTg3LDMyIEBA IHJlc3RvcmVfY29tbWFuZCA9ICdjb3B5ICJDOlxcc2VydmVyXFxhcmNoaXZlZGlyXFwlZiIgIiVw IicgICMgV2luZG93cwogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAK KyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLXJlcGxpY2F0aW9uLXNsb3QteGlkLWFnZSIgeHJl ZmxhYmVsPSJyZXBsaWNhdGlvbl9zbG90X3hpZF9hZ2UiPgorICAgICAgPHRlcm0+PHZhcm5hbWU+ cmVwbGljYXRpb25fc2xvdF94aWRfYWdlPC92YXJuYW1lPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4p CisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPnJlcGxpY2F0aW9u X3Nsb3RfeGlkX2FnZTwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+ CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAg ICAgICA8cGFyYT4KKyAgICAgICAgSW52YWxpZGF0ZSByZXBsaWNhdGlvbiBzbG90cyB3aG9zZSA8 bGl0ZXJhbD54bWluPC9saXRlcmFsPiAodGhlIG9sZGVzdAorICAgICAgICB0cmFuc2FjdGlvbiB0 aGF0IHRoaXMgc2xvdCBuZWVkcyB0aGUgZGF0YWJhc2UgdG8gcmV0YWluKSBvcgorICAgICAgICA8 bGl0ZXJhbD5jYXRhbG9nX3htaW48L2xpdGVyYWw+ICh0aGUgb2xkZXN0IHRyYW5zYWN0aW9uIGFm ZmVjdGluZyB0aGUKKyAgICAgICAgc3lzdGVtIGNhdGFsb2dzIHRoYXQgdGhpcyBzbG90IG5lZWRz IHRoZSBkYXRhYmFzZSB0byByZXRhaW4pIGhhcyByZWFjaGVkCisgICAgICAgIHRoZSBhZ2Ugc3Bl Y2lmaWVkIGJ5IHRoaXMgc2V0dGluZy4gQSB2YWx1ZSBvZiB6ZXJvICh3aGljaCBpcyBkZWZhdWx0 KQorICAgICAgICBkaXNhYmxlcyB0aGlzIGZlYXR1cmUuIFVzZXJzIGNhbiBzZXQgdGhpcyB2YWx1 ZSBhbnl3aGVyZSBmcm9tIHplcm8gdG8KKyAgICAgICAgdHdvIGJpbGxpb24uIFRoaXMgcGFyYW1l dGVyIGNhbiBvbmx5IGJlIHNldCBpbiB0aGUKKyAgICAgICAgPGZpbGVuYW1lPnBvc3RncmVzcWwu Y29uZjwvZmlsZW5hbWU+IGZpbGUgb3Igb24gdGhlIHNlcnZlciBjb21tYW5kCisgICAgICAgIGxp bmUuCisgICAgICAgPC9wYXJhPgorCisgICAgICAgPHBhcmE+CisgICAgICAgIFRoaXMgaW52YWxp ZGF0aW9uIGNoZWNrIGhhcHBlbnMgZWl0aGVyIHdoZW4gdGhlIHNsb3QgaXMgYWNxdWlyZWQKKyAg ICAgICAgZm9yIHVzZSBvciBkdXJpbmcgYSBjaGVja3BvaW50LgorICAgICAgIDwvcGFyYT4KKyAg ICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50 cnkgaWQ9Imd1Yy10cmFjay1jb21taXQtdGltZXN0YW1wIiB4cmVmbGFiZWw9InRyYWNrX2NvbW1p dF90aW1lc3RhbXAiPgogICAgICAgPHRlcm0+PHZhcm5hbWU+dHJhY2tfY29tbWl0X3RpbWVzdGFt cDwvdmFybmFtZT4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KQogICAgICAgPGluZGV4dGVybT4KZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9z eXN0ZW0tdmlld3Muc2dtbAppbmRleCA0ODY3YWYxYjYxLi4wNDkwZjlmMTU2IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3N5c3Rl bS12aWV3cy5zZ21sCkBAIC0yNTg3LDYgKzI1ODcsMTQgQEAgU0VMRUNUICogRlJPTSBwZ19sb2Nr cyBwbCBMRUZUIEpPSU4gcGdfcHJlcGFyZWRfeGFjdHMgcHB4CiAgICAgICAgICAgPHhyZWYgbGlu a2VuZD0iZ3VjLXJlcGxpY2F0aW9uLXNsb3QtaW5hY3RpdmUtdGltZW91dCIvPiBwYXJhbWV0ZXIu CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRl bT4KKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIDxsaXRlcmFsPnhpZF9hZ2VkPC9saXRlcmFs PiBtZWFucyB0aGF0IHRoZSBzbG90J3MKKyAgICAgICAgICA8bGl0ZXJhbD54bWluPC9saXRlcmFs PiBvciA8bGl0ZXJhbD5jYXRhbG9nX3htaW48L2xpdGVyYWw+CisgICAgICAgICAgaGFzIHJlYWNo ZWQgdGhlIGFnZSBzcGVjaWZpZWQgYnkKKyAgICAgICAgICA8eHJlZiBsaW5rZW5kPSJndWMtcmVw bGljYXRpb24tc2xvdC14aWQtYWdlIi8+IHBhcmFtZXRlci4KKyAgICAgICAgIDwvcGFyYT4KKyAg ICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgIDwvcGFyYT48 L2VudHJ5PgogICAgICA8L3Jvdz4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3Nsb3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwppbmRleCBlODA4NzJmMjdi Li43OWFjNDEyZDhlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCkBAIC0xMDgsMTAgKzEwOCwxMSBA QCBjb25zdCBjaGFyICpjb25zdCBTbG90SW52YWxpZGF0aW9uQ2F1c2VzW10gPSB7CiAJW1JTX0lO VkFMX0hPUklaT05dID0gInJvd3NfcmVtb3ZlZCIsCiAJW1JTX0lOVkFMX1dBTF9MRVZFTF0gPSAi d2FsX2xldmVsX2luc3VmZmljaWVudCIsCiAJW1JTX0lOVkFMX0lOQUNUSVZFX1RJTUVPVVRdID0g ImluYWN0aXZlX3RpbWVvdXQiLAorCVtSU19JTlZBTF9YSURfQUdFXSA9ICJ4aWRfYWdlZCIsCiB9 OwogCiAvKiBNYXhpbXVtIG51bWJlciBvZiBpbnZhbGlkYXRpb24gY2F1c2VzICovCi0jZGVmaW5l CVJTX0lOVkFMX01BWF9DQVVTRVMgUlNfSU5WQUxfSU5BQ1RJVkVfVElNRU9VVAorI2RlZmluZQlS U19JTlZBTF9NQVhfQ0FVU0VTIFJTX0lOVkFMX1hJRF9BR0UKIAogU3RhdGljQXNzZXJ0RGVjbChs ZW5ndGhvZihTbG90SW52YWxpZGF0aW9uQ2F1c2VzKSA9PSAoUlNfSU5WQUxfTUFYX0NBVVNFUyAr IDEpLAogCQkJCSAiYXJyYXkgbGVuZ3RoIG1pc21hdGNoIik7CkBAIC0xNDIsNiArMTQzLDcgQEAg UmVwbGljYXRpb25TbG90ICpNeVJlcGxpY2F0aW9uU2xvdCA9IE5VTEw7CiBpbnQJCQltYXhfcmVw bGljYXRpb25fc2xvdHMgPSAxMDsgLyogdGhlIG1heGltdW0gbnVtYmVyIG9mIHJlcGxpY2F0aW9u CiAJCQkJCQkJCQkJICogc2xvdHMgKi8KIGludAkJCXJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVf dGltZW91dCA9IDA7CitpbnQJCQlyZXBsaWNhdGlvbl9zbG90X3hpZF9hZ2UgPSAwOwogCiAvKgog ICogVGhpcyBHVUMgbGlzdHMgc3RyZWFtaW5nIHJlcGxpY2F0aW9uIHN0YW5kYnkgc2VydmVyIHNs b3QgbmFtZXMgdGhhdApAQCAtMTYwLDYgKzE2Miw5IEBAIHN0YXRpYyBYTG9nUmVjUHRyIHNzX29s ZGVzdF9mbHVzaF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAogc3RhdGljIHZvaWQgUmVwbGlj YXRpb25TbG90U2htZW1FeGl0KGludCBjb2RlLCBEYXR1bSBhcmcpOwogc3RhdGljIHZvaWQgUmVw bGljYXRpb25TbG90RHJvcFB0cihSZXBsaWNhdGlvblNsb3QgKnNsb3QpOworc3RhdGljIGJvb2wg UmVwbGljYXRpb25TbG90SXNYSURBZ2VkKFJlcGxpY2F0aW9uU2xvdCAqc2xvdCwKKwkJCQkJCQkJ CSBUcmFuc2FjdGlvbklkICp4bWluLAorCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKmNhdGFsb2df eG1pbik7CiAKIHN0YXRpYyBib29sIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBs aWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBjYXVzZSwKIAkJCQkJCQkJCQkgICBSZXBsaWNh dGlvblNsb3QgKnMsCkBAIC02MzYsOCArNjQxLDggQEAgcmV0cnk6CiAJICogaXQgZ2V0cyBpbnZh bGlkYXRlZCBub3cgb3IgaGFzIGJlZW4gaW52YWxpZGF0ZWQgcHJldmlvdXNseSwgYmVjYXVzZQog CSAqIHRoZXJlJ3Mgbm8gdXNlIGluIGFjcXVpcmluZyB0aGUgaW52YWxpZGF0ZWQgc2xvdC4KIAkg KgotCSAqIFhYWDogQ3VycmVudGx5IHdlIGNoZWNrIGZvciBpbmFjdGl2ZV90aW1lb3V0IGludmFs aWRhdGlvbiBoZXJlLiBXZQotCSAqIG1pZ2h0IG5lZWQgdG8gY2hlY2sgZm9yIG90aGVyIGludmFs aWRhdGlvbnMgdG9vLgorCSAqIFhYWDogQ3VycmVudGx5IHdlIGNoZWNrIGZvciBpbmFjdGl2ZV90 aW1lb3V0IGFuZCB4aWRfYWdlZCBpbnZhbGlkYXRpb25zCisJICogaGVyZS4gV2UgbWlnaHQgbmVl ZCB0byBjaGVjayBmb3Igb3RoZXIgaW52YWxpZGF0aW9ucyB0b28uCiAJICovCiAJaWYgKGNoZWNr X2Zvcl9pbnZhbGlkYXRpb24pCiAJewpAQCAtNjQ4LDYgKzY1MywyMiBAQCByZXRyeToKIAkJCQkJ CQkJCQkJCQkgICBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKIAkJCQkJCQkJCQkJCQkgICAmaW52YWxp ZGF0ZWQpOwogCisJCWlmICghaW52YWxpZGF0ZWQgJiYgcmVsZWFzZWRfbG9jaykKKwkJeworCQkJ LyogVGhlIHNsb3QgaXMgc3RpbGwgb3VycyAqLworCQkJQXNzZXJ0KHMtPmFjdGl2ZV9waWQgPT0g TXlQcm9jUGlkKTsKKworCQkJLyogUmVhY3F1aXJlIHRoZSBDb250cm9sTG9jayAqLworCQkJTFdM b2NrQWNxdWlyZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jaywgTFdfU0hBUkVEKTsKKwkJCXJl bGVhc2VkX2xvY2sgPSBmYWxzZTsKKwkJfQorCisJCWlmICghaW52YWxpZGF0ZWQpCisJCQlyZWxl YXNlZF9sb2NrID0gSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJTX0lOVkFMX1hJRF9B R0UsCisJCQkJCQkJCQkJCQkJCSAgIHMsIDAsIEludmFsaWRPaWQsCisJCQkJCQkJCQkJCQkJCSAg IEludmFsaWRUcmFuc2FjdGlvbklkLAorCQkJCQkJCQkJCQkJCQkgICAmaW52YWxpZGF0ZWQpOwor CiAJCS8qCiAJCSAqIElmIHRoZSBzbG90IGhhcyBiZWVuIGludmFsaWRhdGVkLCByZWNhbGN1bGF0 ZSB0aGUgcmVzb3VyY2UgbGltaXRzLgogCQkgKi8KQEAgLTY1Nyw3ICs2NzgsOCBAQCByZXRyeToK IAkJCVJlcGxpY2F0aW9uU2xvdHNDb21wdXRlUmVxdWlyZWRMU04oKTsKIAkJfQogCi0JCWlmIChz LT5kYXRhLmludmFsaWRhdGVkID09IFJTX0lOVkFMX0lOQUNUSVZFX1RJTUVPVVQpCisJCWlmIChz LT5kYXRhLmludmFsaWRhdGVkID09IFJTX0lOVkFMX0lOQUNUSVZFX1RJTUVPVVQgfHwKKwkJCXMt PmRhdGEuaW52YWxpZGF0ZWQgPT0gUlNfSU5WQUxfWElEX0FHRSkKIAkJewogCQkJLyoKIAkJCSAq IFJlbGVhc2UgdGhlIGxvY2sgaWYgaXQncyBub3QgeWV0IHRvIGtlZXAgdGhlIGNsZWFudXAgcGF0 aCBvbgpAQCAtNjY1LDcgKzY4NywxMCBAQCByZXRyeToKIAkJCSAqLwogCQkJaWYgKCFyZWxlYXNl ZF9sb2NrKQogCQkJCUxXTG9ja1JlbGVhc2UoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2spOwor CQl9CiAKKwkJaWYgKHMtPmRhdGEuaW52YWxpZGF0ZWQgPT0gUlNfSU5WQUxfSU5BQ1RJVkVfVElN RU9VVCkKKwkJewogCQkJQXNzZXJ0KHMtPmluYWN0aXZlX3NpbmNlID4gMCk7CiAJCQllcmVwb3J0 KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRF X1NUQVRFKSwKQEAgLTY3NSw2ICs3MDAsMjAgQEAgcmV0cnk6CiAJCQkJCQkJICAgdGltZXN0YW1w dHpfdG9fc3RyKHMtPmluYWN0aXZlX3NpbmNlKSwKIAkJCQkJCQkgICByZXBsaWNhdGlvbl9zbG90 X2luYWN0aXZlX3RpbWVvdXQpKSk7CiAJCX0KKworCQlpZiAocy0+ZGF0YS5pbnZhbGlkYXRlZCA9 PSBSU19JTlZBTF9YSURfQUdFKQorCQl7CisJCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQo cy0+ZGF0YS54bWluKSB8fAorCQkJCSAgIFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHMtPmRhdGEuY2F0 YWxvZ194bWluKSk7CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09C SkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygiY2FuIG5vIGxv bmdlciBnZXQgY2hhbmdlcyBmcm9tIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIiwKKwkJCQkJCQlO YW1lU3RyKHMtPmRhdGEubmFtZSkpLAorCQkJCQkgZXJyZGV0YWlsKCJUaGUgc2xvdCdzIHhtaW4g JXUgb3IgY2F0YWxvZ194bWluICV1IGhhcyByZWFjaGVkIHRoZSBhZ2UgJWQgc3BlY2lmaWVkIGJ5 IFwicmVwbGljYXRpb25fc2xvdF94aWRfYWdlXCIuIiwKKwkJCQkJCQkgICBzLT5kYXRhLnhtaW4s CisJCQkJCQkJICAgcy0+ZGF0YS5jYXRhbG9nX3htaW4sCisJCQkJCQkJICAgcmVwbGljYXRpb25f c2xvdF94aWRfYWdlKSkpOworCQl9CiAJfQogCiAJaWYgKCFyZWxlYXNlZF9sb2NrKQpAQCAtMTU0 Niw3ICsxNTg1LDkgQEAgUmVwb3J0U2xvdEludmFsaWRhdGlvbihSZXBsaWNhdGlvblNsb3RJbnZh bGlkYXRpb25DYXVzZSBjYXVzZSwKIAkJCQkJICAgWExvZ1JlY1B0ciByZXN0YXJ0X2xzbiwKIAkJ CQkJICAgWExvZ1JlY1B0ciBvbGRlc3RMU04sCiAJCQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNo b3RDb25mbGljdEhvcml6b24sCi0JCQkJCSAgIFRpbWVzdGFtcFR6IGluYWN0aXZlX3NpbmNlKQor CQkJCQkgICBUaW1lc3RhbXBUeiBpbmFjdGl2ZV9zaW5jZSwKKwkJCQkJICAgVHJhbnNhY3Rpb25J ZCB4bWluLAorCQkJCQkgICBUcmFuc2FjdGlvbklkIGNhdGFsb2dfeG1pbikKIHsKIAlTdHJpbmdJ bmZvRGF0YSBlcnJfZGV0YWlsOwogCWJvb2wJCWhpbnQgPSBmYWxzZTsKQEAgLTE1ODMsNiArMTYy NCwyMCBAQCBSZXBvcnRTbG90SW52YWxpZGF0aW9uKFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlv bkNhdXNlIGNhdXNlLAogCQkJCQkJCSB0aW1lc3RhbXB0el90b19zdHIoaW5hY3RpdmVfc2luY2Up LAogCQkJCQkJCSByZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQpOwogCQkJYnJlYWs7 CisJCWNhc2UgUlNfSU5WQUxfWElEX0FHRToKKwkJCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxp ZCh4bWluKSB8fAorCQkJCSAgIFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGNhdGFsb2dfeG1pbikpOwor CisJCQlpZiAoVHJhbnNhY3Rpb25JZElzVmFsaWQoeG1pbikpCisJCQkJYXBwZW5kU3RyaW5nSW5m bygmZXJyX2RldGFpbCwgXygiVGhlIHNsb3QncyB4bWluICV1IGhhcyByZWFjaGVkIHRoZSBhZ2Ug JWQgc3BlY2lmaWVkIGJ5IFwicmVwbGljYXRpb25fc2xvdF94aWRfYWdlXCIuIiksCisJCQkJCQkJ CSB4bWluLAorCQkJCQkJCQkgcmVwbGljYXRpb25fc2xvdF94aWRfYWdlKTsKKwkJCWVsc2UgaWYg KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGNhdGFsb2dfeG1pbikpCisJCQkJYXBwZW5kU3RyaW5nSW5m bygmZXJyX2RldGFpbCwgXygiVGhlIHNsb3QncyBjYXRhbG9nX3htaW4gJXUgaGFzIHJlYWNoZWQg dGhlIGFnZSAlZCBzcGVjaWZpZWQgYnkgXCJyZXBsaWNhdGlvbl9zbG90X3hpZF9hZ2VcIi4iKSwK KwkJCQkJCQkJIGNhdGFsb2dfeG1pbiwKKwkJCQkJCQkJIHJlcGxpY2F0aW9uX3Nsb3RfeGlkX2Fn ZSk7CisKKwkJCWJyZWFrOwogCQljYXNlIFJTX0lOVkFMX05PTkU6CiAJCQlwZ191bnJlYWNoYWJs ZSgpOwogCX0KQEAgLTE2MjcsNiArMTY4Miw4IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRl U2xvdChSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBjYXVzZSwKIAlYTG9nUmVjUHRy CWluaXRpYWxfcmVzdGFydF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAlSZXBsaWNhdGlvblNs b3RJbnZhbGlkYXRpb25DYXVzZSBpbnZhbGlkYXRpb25fY2F1c2VfcHJldiBQR19VU0VEX0ZPUl9B U1NFUlRTX09OTFkgPSBSU19JTlZBTF9OT05FOwogCVRpbWVzdGFtcFR6IGluYWN0aXZlX3NpbmNl ID0gMDsKKwlUcmFuc2FjdGlvbklkIGFnZWRfeG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwor CVRyYW5zYWN0aW9uSWQgYWdlZF9jYXRhbG9nX3htaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsK IAogCWZvciAoOzspCiAJewpAQCAtMTc0Myw2ICsxODAwLDE2IEBAIEludmFsaWRhdGVQb3NzaWJs eU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBjYXVzZSwKIAkJ CQkJCUFzc2VydChzLT5hY3RpdmVfcGlkID09IDApOwogCQkJCQl9CiAJCQkJCWJyZWFrOworCQkJ CWNhc2UgUlNfSU5WQUxfWElEX0FHRToKKwkJCQkJaWYgKFJlcGxpY2F0aW9uU2xvdElzWElEQWdl ZChzLCAmYWdlZF94bWluLCAmYWdlZF9jYXRhbG9nX3htaW4pKQorCQkJCQl7CisJCQkJCQlBc3Nl cnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoYWdlZF94bWluKSB8fAorCQkJCQkJCSAgIFRyYW5zYWN0 aW9uSWRJc1ZhbGlkKGFnZWRfY2F0YWxvZ194bWluKSk7CisKKwkJCQkJCWludmFsaWRhdGlvbl9j YXVzZSA9IGNhdXNlOworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQkJYnJlYWs7CiAJCQkJY2Fz ZSBSU19JTlZBTF9OT05FOgogCQkJCQlwZ191bnJlYWNoYWJsZSgpOwogCQkJfQpAQCAtMTgzMSw3 ICsxODk4LDggQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xv dEludmFsaWRhdGlvbkNhdXNlIGNhdXNlLAogCQkJCVJlcG9ydFNsb3RJbnZhbGlkYXRpb24oaW52 YWxpZGF0aW9uX2NhdXNlLCB0cnVlLCBhY3RpdmVfcGlkLAogCQkJCQkJCQkJICAgc2xvdG5hbWUs IHJlc3RhcnRfbHNuLAogCQkJCQkJCQkJICAgb2xkZXN0TFNOLCBzbmFwc2hvdENvbmZsaWN0SG9y aXpvbiwKLQkJCQkJCQkJCSAgIGluYWN0aXZlX3NpbmNlKTsKKwkJCQkJCQkJCSAgIGluYWN0aXZl X3NpbmNlLCBhZ2VkX3htaW4sCisJCQkJCQkJCQkgICBhZ2VkX2NhdGFsb2dfeG1pbik7CiAKIAkJ CQlpZiAoTXlCYWNrZW5kVHlwZSA9PSBCX1NUQVJUVVApCiAJCQkJCSh2b2lkKSBTZW5kUHJvY1Np Z25hbChhY3RpdmVfcGlkLApAQCAtMTg3OCw3ICsxOTQ2LDggQEAgSW52YWxpZGF0ZVBvc3NpYmx5 T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGNhdXNlLAogCQkJ UmVwb3J0U2xvdEludmFsaWRhdGlvbihpbnZhbGlkYXRpb25fY2F1c2UsIGZhbHNlLCBhY3RpdmVf cGlkLAogCQkJCQkJCQkgICBzbG90bmFtZSwgcmVzdGFydF9sc24sCiAJCQkJCQkJCSAgIG9sZGVz dExTTiwgc25hcHNob3RDb25mbGljdEhvcml6b24sCi0JCQkJCQkJCSAgIGluYWN0aXZlX3NpbmNl KTsKKwkJCQkJCQkJICAgaW5hY3RpdmVfc2luY2UsIGFnZWRfeG1pbiwKKwkJCQkJCQkJICAgYWdl ZF9jYXRhbG9nX3htaW4pOwogCiAJCQkvKiBkb25lIHdpdGggdGhpcyBzbG90IGZvciBub3cgKi8K IAkJCWJyZWFrOwpAQCAtMTkwMiw2ICsxOTcxLDcgQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xl dGVTbG90KFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGNhdXNlLAogICogICBkYjsg ZGJvaWQgbWF5IGJlIEludmFsaWRPaWQgZm9yIHNoYXJlZCByZWxhdGlvbnMKICAqIC0gUlNfSU5W QUxfV0FMX0xFVkVMOiBpcyBsb2dpY2FsCiAgKiAtIFJTX0lOVkFMX0lOQUNUSVZFX1RJTUVPVVQ6 IGluYWN0aXZlIHRpbWVvdXQgb2NjdXJzCisgKiAtIFJTX0lOVkFMX1hJRF9BR0U6IHNsb3QncyB4 bWluIG9yIGNhdGFsb2dfeG1pbiBoYXMgcmVhY2hlZCB0aGUgYWdlCiAgKgogICogTkIgLSB0aGlz IHJ1bnMgYXMgcGFydCBvZiBjaGVja3BvaW50LCBzbyBhdm9pZCByYWlzaW5nIGVycm9ycyBpZiBw b3NzaWJsZS4KICAqLwpAQCAtMjAzMywxNCArMjEwMywyMCBAQCBDaGVja1BvaW50UmVwbGljYXRp b25TbG90cyhib29sIGlzX3NodXRkb3duKQogCSAqCiAJICogLSBBdm9pZCBzYXZpbmcgc2xvdCBp bmZvIHRvIGRpc2sgdHdvIHRpbWVzIGZvciBlYWNoIGludmFsaWRhdGVkIHNsb3QuCiAJICoKLQkg KiBYWFg6IFNob3VsZCB3ZSBtb3ZlIGluYWN0aXZlX3RpbWVvdXQgaW5hdmFsaWRhdGlvbiBjaGVj ayBjbG9zZXIgdG8KLQkgKiB3YWxfcmVtb3ZlZCBpbiBDcmVhdGVDaGVja1BvaW50IGFuZCBDcmVh dGVSZXN0YXJ0UG9pbnQ/CisJICogWFhYOiBTaG91bGQgd2UgbW92ZSBpbmFjdGl2ZV90aW1lb3V0 IGFuZCB4aWRfYWdlZCBpbmF2YWxpZGF0aW9uIGNoZWNrcworCSAqIGNsb3NlciB0byB3YWxfcmVt b3ZlZCBpbiBDcmVhdGVDaGVja1BvaW50IGFuZCBDcmVhdGVSZXN0YXJ0UG9pbnQ/CiAJICovCiAJ aW52YWxpZGF0ZWQgPSBJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKFJTX0lOVkFM X0lOQUNUSVZFX1RJTUVPVVQsCiAJCQkJCQkJCQkJCQkJIDAsCiAJCQkJCQkJCQkJCQkJIEludmFs aWRPaWQsCiAJCQkJCQkJCQkJCQkJIEludmFsaWRUcmFuc2FjdGlvbklkKTsKIAorCWlmICghaW52 YWxpZGF0ZWQpCisJCWludmFsaWRhdGVkID0gSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25T bG90cyhSU19JTlZBTF9YSURfQUdFLAorCQkJCQkJCQkJCQkJCQkgMCwKKwkJCQkJCQkJCQkJCQkJ IEludmFsaWRPaWQsCisJCQkJCQkJCQkJCQkJCSBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7CisKIAlp ZiAoaW52YWxpZGF0ZWQpCiAJewogCQkvKgpAQCAtMjA1Miw2ICsyMTI4LDYzIEBAIENoZWNrUG9p bnRSZXBsaWNhdGlvblNsb3RzKGJvb2wgaXNfc2h1dGRvd24pCiAJfQogfQogCisvKgorICogUmV0 dXJucyB0cnVlIGlmIHRoZSBnaXZlbiByZXBsaWNhdGlvbiBzbG90J3MgeG1pbiBvciBjYXRhbG9n X3htaW4gYWdlIGlzCisgKiBtb3JlIHRoYW4gcmVwbGljYXRpb25fc2xvdF94aWRfYWdlLgorICoK KyAqIE5vdGUgdGhhdCB0aGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgcmVwbGljYXRpb24gc2xvdCdz IHNwaW5sb2NrIHRvIGF2b2lkCisgKiByYWNlIGNvbmRpdGlvbnMgd2hpbGUgdGhpcyBmdW5jdGlv biByZWFkcyB4bWluIGFuZCBjYXRhbG9nX3htaW4uCisgKi8KK3N0YXRpYyBib29sCitSZXBsaWNh dGlvblNsb3RJc1hJREFnZWQoUmVwbGljYXRpb25TbG90ICpzbG90LCBUcmFuc2FjdGlvbklkICp4 bWluLAorCQkJCQkJIFRyYW5zYWN0aW9uSWQgKmNhdGFsb2dfeG1pbikKK3sKKwlUcmFuc2FjdGlv bklkIGN1dG9mZjsKKwlUcmFuc2FjdGlvbklkIGN1cnI7CisKKwlpZiAocmVwbGljYXRpb25fc2xv dF94aWRfYWdlID09IDApCisJCXJldHVybiBmYWxzZTsKKworCWN1cnIgPSBSZWFkTmV4dFRyYW5z YWN0aW9uSWQoKTsKKworCS8qCisJICogUmVwbGljYXRpb24gc2xvdCdzIHhtaW4gYW5kIGNhdGFs b2dfeG1pbiBjYW4gbmV2ZXIgYmUgbGFyZ2VyIHRoYW4gdGhlCisJICogY3VycmVudCB0cmFuc2Fj dGlvbiBpZCBldmVuIGluIHRoZSBjYXNlIG9mIHRyYW5zYWN0aW9uIElEIHdyYXBhcm91bmQuCisJ ICovCisJQXNzZXJ0KHNsb3QtPmRhdGEueG1pbiA8PSBjdXJyKTsKKwlBc3NlcnQoc2xvdC0+ZGF0 YS5jYXRhbG9nX3htaW4gPD0gY3Vycik7CisKKwkvKgorCSAqIFRoZSBjdXRvZmYgY2FuIHRlbGwg aG93IGZhciB3ZSBjYW4gZ28gYmFjayBmcm9tIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uCisJICog aWQgdGlsbCB0aGUgYWdlLiBBbmQgdGhlbiwgd2UgY2hlY2sgd2hldGhlciBvciBub3QgdGhlIHht aW4gb3IKKwkgKiBjYXRhbG9nX3htaW4gZmFsbHMgd2l0aGluIHRoZSBjdXRvZmY7IGlmIHllcywg cmV0dXJuIHRydWUsIG90aGVyd2lzZQorCSAqIGZhbHNlLgorCSAqLworCWN1dG9mZiA9IGN1cnIg LSByZXBsaWNhdGlvbl9zbG90X3hpZF9hZ2U7CisKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc05vcm1h bChjdXRvZmYpKQorCQljdXRvZmYgPSBGaXJzdE5vcm1hbFRyYW5zYWN0aW9uSWQ7CisKKwkqeG1p biA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCSpjYXRhbG9nX3htaW4gPSBJbnZhbGlkVHJhbnNh Y3Rpb25JZDsKKworCWlmIChUcmFuc2FjdGlvbklkSXNOb3JtYWwoc2xvdC0+ZGF0YS54bWluKSAm JgorCQlUcmFuc2FjdGlvbklkUHJlY2VkZXNPckVxdWFscyhzbG90LT5kYXRhLnhtaW4sIGN1dG9m ZikpCisJeworCQkqeG1pbiA9IHNsb3QtPmRhdGEueG1pbjsKKwkJcmV0dXJuIHRydWU7CisJfQor CisJaWYgKFRyYW5zYWN0aW9uSWRJc05vcm1hbChzbG90LT5kYXRhLmNhdGFsb2dfeG1pbikgJiYK KwkJVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMoc2xvdC0+ZGF0YS5jYXRhbG9nX3htaW4s IGN1dG9mZikpCisJeworCQkqY2F0YWxvZ194bWluID0gc2xvdC0+ZGF0YS5jYXRhbG9nX3htaW47 CisJCXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBmYWxzZTsKK30KKwogLyoKICAqIExvYWQg YWxsIHJlcGxpY2F0aW9uIHNsb3RzIGZyb20gZGlzayBpbnRvIG1lbW9yeSBhdCBzZXJ2ZXIgc3Rh cnR1cC4gVGhpcwogICogbmVlZHMgdG8gYmUgcnVuIGJlZm9yZSB3ZSBzdGFydCBjcmFzaCByZWNv dmVyeS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggNDk5MGU3M2M5Ny4uY2Ey MTBjNmJmOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTI5NzMsNiArMjk3 MywxNiBAQCBzdHJ1Y3QgY29uZmlnX2ludCBDb25maWd1cmVOYW1lc0ludFtdID0KIAkJTlVMTCwg TlVMTCwgTlVMTAogCX0sCiAKKwl7CisJCXsicmVwbGljYXRpb25fc2xvdF94aWRfYWdlIiwgUEdD X1NJR0hVUCwgUkVQTElDQVRJT05fU0VORElORywKKwkJCWdldHRleHRfbm9vcCgiQWdlIG9mIHRo ZSB0cmFuc2FjdGlvbiBJRCBhdCB3aGljaCBhIHJlcGxpY2F0aW9uIHNsb3QgZ2V0cyBpbnZhbGlk YXRlZC4iKSwKKwkJCWdldHRleHRfbm9vcCgiVGhlIHRyYW5zYWN0aW9uIGlzIHRoZSBvbGRlc3Qg dHJhbnNhY3Rpb24gKGluY2x1ZGluZyB0aGUgb25lIGFmZmVjdGluZyB0aGUgc3lzdGVtIGNhdGFs b2dzKSB0aGF0IGEgcmVwbGljYXRpb24gc2xvdCBuZWVkcyB0aGUgZGF0YWJhc2UgdG8gcmV0YWlu LiIpCisJCX0sCisJCSZyZXBsaWNhdGlvbl9zbG90X3hpZF9hZ2UsCisJCTAsIDAsIDIwMDAwMDAw MDAsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAorCiAJewogCQl7ImNvbW1pdF9kZWxheSIsIFBH Q19TVVNFVCwgV0FMX1NFVFRJTkdTLAogCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSBkZWxheSBp biBtaWNyb3NlY29uZHMgYmV0d2VlbiB0cmFuc2FjdGlvbiBjb21taXQgYW5kICIKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCA1MzVmYjA3Mzg1 Li5mMDQ3NzFkNjVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVz cWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNv bmYuc2FtcGxlCkBAIC0zMzYsNiArMzM2LDcgQEAKICN0cmFja19jb21taXRfdGltZXN0YW1wID0g b2ZmCSMgY29sbGVjdCB0aW1lc3RhbXAgb2YgdHJhbnNhY3Rpb24gY29tbWl0CiAJCQkJIyAoY2hh bmdlIHJlcXVpcmVzIHJlc3RhcnQpCiAjcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0 ID0gMAkjIGluIHNlY29uZHM7IDAgZGlzYWJsZXMKKyNyZXBsaWNhdGlvbl9zbG90X3hpZF9hZ2Ug PSAwCiAKICMgLSBQcmltYXJ5IFNlcnZlciAtCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3Nsb3QuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaAppbmRleCA1 NmQyMGUxYTc4Li5lNzU3YjgzNmM1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9zbG90LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCkBAIC01NSw2ICs1 NSw4IEBAIHR5cGVkZWYgZW51bSBSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZQogCVJT X0lOVkFMX1dBTF9MRVZFTCwKIAkvKiBpbmFjdGl2ZSBzbG90IHRpbWVvdXQgaGFzIG9jY3VycmVk ICovCiAJUlNfSU5WQUxfSU5BQ1RJVkVfVElNRU9VVCwKKwkvKiBzbG90J3MgeG1pbiBvciBjYXRh bG9nX3htaW4gaGFzIHJlYWNoZWQgdGhlIGFnZSAqLworCVJTX0lOVkFMX1hJRF9BR0UsCiB9IFJl cGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlOwogCiBleHRlcm4gUEdETExJTVBPUlQgY29u c3QgY2hhciAqY29uc3QgU2xvdEludmFsaWRhdGlvbkNhdXNlc1tdOwpAQCAtMjMzLDYgKzIzNSw3 IEBAIGV4dGVybiBQR0RMTElNUE9SVCBSZXBsaWNhdGlvblNsb3QgKk15UmVwbGljYXRpb25TbG90 OwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfcmVwbGljYXRpb25fc2xvdHM7CiBleHRlcm4g UEdETExJTVBPUlQgY2hhciAqc3RhbmRieV9zbG90X25hbWVzOwogZXh0ZXJuIFBHRExMSU1QT1JU IGludCByZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQ7CitleHRlcm4gUEdETExJTVBP UlQgaW50IHJlcGxpY2F0aW9uX3Nsb3RfeGlkX2FnZTsKIAogLyogc2htZW0gaW5pdGlhbGl6YXRp b24gZnVuY3Rpb25zICovCiBleHRlcm4gU2l6ZSBSZXBsaWNhdGlvblNsb3RzU2htZW1TaXplKHZv aWQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTBfaW52YWxpZGF0ZV9zbG90 cy5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUwX2ludmFsaWRhdGVfc2xvdHMucGwKaW5kZXgg NDY2MzAxOWMxNi4uZGEwNTM1MGRmNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8w NTBfaW52YWxpZGF0ZV9zbG90cy5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA1MF9pbnZh bGlkYXRlX3Nsb3RzLnBsCkBAIC04OSw3ICs4OSw3IEBAICRwcmltYXJ5LT5yZWxvYWQ7CiAjIHRo YXQgbm9ib2R5IGhhcyBhY3F1aXJlZCB0aGF0IHNsb3QgeWV0LCBzbyBkdWUgdG8KICMgcmVwbGlj YXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0IHNldHRpbmcgYWJvdmUgaXQgbXVzdCBnZXQgaW52 YWxpZGF0ZWQuCiB3YWl0X2Zvcl9zbG90X2ludmFsaWRhdGlvbigkcHJpbWFyeSwgJ2xzdWIxX3N5 bmNfc2xvdCcsICRsb2dzdGFydCwKLQkkaW5hY3RpdmVfdGltZW91dCk7CisJJGluYWN0aXZlX3Rp bWVvdXQsICdpbmFjdGl2ZV90aW1lb3V0Jyk7CiAKICMgU2V0IHRpbWVvdXQgb24gdGhlIHN0YW5k YnkgYWxzbyB0byBjaGVjayB0aGUgc3luY2VkIHNsb3RzIGRvbid0IGdldAogIyBpbnZhbGlkYXRl ZCBkdWUgdG8gdGltZW91dCBvbiB0aGUgc3RhbmRieS4KQEAgLTEyOSw3ICsxMjksNyBAQCAkc3Rh bmRieTEtPnN0b3A7CiAKICMgV2FpdCBmb3IgdGhlIHN0YW5kYnkncyByZXBsaWNhdGlvbiBzbG90 IHRvIGJlY29tZSBpbmFjdGl2ZQogd2FpdF9mb3Jfc2xvdF9pbnZhbGlkYXRpb24oJHByaW1hcnks ICdzYjFfc2xvdCcsICRsb2dzdGFydCwKLQkkaW5hY3RpdmVfdGltZW91dCk7CisJJGluYWN0aXZl X3RpbWVvdXQsICdpbmFjdGl2ZV90aW1lb3V0Jyk7CiAKICMgVGVzdGNhc2UgZW5kOiBJbnZhbGlk YXRlIHN0cmVhbWluZyBzdGFuZGJ5J3Mgc2xvdCBhcyB3ZWxsIGFzIGxvZ2ljYWwgZmFpbG92ZXIK ICMgc2xvdCBvbiBwcmltYXJ5IGR1ZSB0byByZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVv dXQuIEFsc28sIGNoZWNrIHRoZQpAQCAtMTk3LDE1ICsxOTcsMjgwIEBAICRzdWJzY3JpYmVyLT5z dG9wOwogIyBXYWl0IGZvciB0aGUgcmVwbGljYXRpb24gc2xvdCB0byBiZWNvbWUgaW5hY3RpdmUg YW5kIHRoZW4gaW52YWxpZGF0ZWQgZHVlIHRvCiAjIHRpbWVvdXQuCiB3YWl0X2Zvcl9zbG90X2lu dmFsaWRhdGlvbigkcHVibGlzaGVyLCAnbHN1YjFfc2xvdCcsICRsb2dzdGFydCwKLQkkaW5hY3Rp dmVfdGltZW91dCk7CisJJGluYWN0aXZlX3RpbWVvdXQsICdpbmFjdGl2ZV90aW1lb3V0Jyk7CiAK ICMgVGVzdGNhc2UgZW5kOiBJbnZhbGlkYXRlIGxvZ2ljYWwgc3Vic2NyaWJlcidzIHNsb3QgZHVl IHRvCiAjIHJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dC4KICMgPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KIAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBUZXN0Y2FzZSBzdGFydDogSW52 YWxpZGF0ZSBzdHJlYW1pbmcgc3RhbmRieSdzIHNsb3QgZHVlIHRvIHJlcGxpY2F0aW9uX3Nsb3Rf eGlkX2FnZQorIyBHVUMuCisKKyMgUHJlcGFyZSBmb3IgdGhlIG5leHQgdGVzdAorJHByaW1hcnkt PnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKyAgICBBTFRFUiBTWVNURU0gU0VUIHJlcGxp Y2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dCBUTyAnMCc7CitdKTsKKyRwcmltYXJ5LT5yZWxv YWQ7CisKKyMgQ3JlYXRlIGEgc3RhbmRieSBsaW5raW5nIHRvIHRoZSBwcmltYXJ5IHVzaW5nIHRo ZSByZXBsaWNhdGlvbiBzbG90CitteSAkc3RhbmRieTIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyLT5uZXcoJ3N0YW5kYnkyJyk7Ciskc3RhbmRieTItPmluaXRfZnJvbV9iYWNrdXAoJHByaW1h cnksICRiYWNrdXBfbmFtZSwgaGFzX3N0cmVhbWluZyA9PiAxKTsKKworIyBFbmFibGUgaHNfZmVl ZGJhY2suIFRoZSBzbG90IHNob3VsZCBnYWluIGFuIHhtaW4uIFdlIHNldCB0aGUgc3RhdHVzIGlu dGVydmFsCisjIHNvIHdlJ2xsIHNlZSB0aGUgcmVzdWx0cyBwcm9tcHRseS4KKyRzdGFuZGJ5Mi0+ YXBwZW5kX2NvbmYoCisJJ3Bvc3RncmVzcWwuY29uZicsIHF7CitwcmltYXJ5X3Nsb3RfbmFtZSA9 ICdzYjJfc2xvdCcKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24KK3dhbF9yZWNlaXZlcl9zdGF0 dXNfaW50ZXJ2YWwgPSAxCit9KTsKKworJHByaW1hcnktPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMn LCBxcVsKKyAgICBTRUxFQ1QgcGdfY3JlYXRlX3BoeXNpY2FsX3JlcGxpY2F0aW9uX3Nsb3Qoc2xv dF9uYW1lIDo9ICdzYjJfc2xvdCcsIGltbWVkaWF0ZWx5X3Jlc2VydmUgOj0gdHJ1ZSk7CitdKTsK KworJHN0YW5kYnkyLT5zdGFydDsKKworIyBDcmVhdGUgc29tZSBjb250ZW50IG9uIHByaW1hcnkg dG8gbW92ZSB4bWluCiskcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBU QUJMRSB0YWJfaW50IEFTIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgQVMgYSIpOworCisj IFdhaXQgdW50aWwgc3RhbmRieSBoYXMgcmVwbGF5ZWQgZW5vdWdoIGRhdGEKKyRwcmltYXJ5LT53 YWl0X2Zvcl9jYXRjaHVwKCRzdGFuZGJ5Mik7CisKKyRwcmltYXJ5LT5wb2xsX3F1ZXJ5X3VudGls KAorCSdwb3N0Z3JlcycsIHFxWworCVNFTEVDVCB4bWluIElTIE5PVCBOVUxMIEFORCBjYXRhbG9n X3htaW4gSVMgTlVMTAorCQlGUk9NIHBnX2NhdGFsb2cucGdfcmVwbGljYXRpb25fc2xvdHMKKwkJ V0hFUkUgc2xvdF9uYW1lID0gJ3NiMl9zbG90JzsKK10pIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRp bmcgZm9yIHNsb3Qgc2IyX3Nsb3QgeG1pbiB0byBhZHZhbmNlIjsKKworJHByaW1hcnktPnNhZmVf cHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKwlBTFRFUiBTWVNURU0gU0VUIHJlcGxpY2F0aW9uX3Ns b3RfeGlkX2FnZSA9IDUwMDsKK10pOworJHByaW1hcnktPnJlbG9hZDsKKworIyBTdG9wIHN0YW5k YnkgdG8gbWFrZSB0aGUgcmVwbGljYXRpb24gc2xvdCdzIHhtaW4gb24gcHJpbWFyeSB0byBhZ2UK KyRzdGFuZGJ5Mi0+c3RvcDsKKworJGxvZ3N0YXJ0ID0gLXMgJHByaW1hcnktPmxvZ2ZpbGU7CisK KyMgRG8gc29tZSB3b3JrIHRvIGFkdmFuY2UgeGlkcyBvbiBwcmltYXJ5CithZHZhbmNlX3hpZHMo JHByaW1hcnksICd0YWJfaW50Jyk7CisKKyMgV2FpdCBmb3IgdGhlIHJlcGxpY2F0aW9uIHNsb3Qg dG8gYmVjb21lIGluYWN0aXZlIGFuZCB0aGVuIGludmFsaWRhdGVkIGR1ZSB0bworIyBYSUQgYWdl Lgord2FpdF9mb3Jfc2xvdF9pbnZhbGlkYXRpb24oJHByaW1hcnksICdzYjJfc2xvdCcsICRsb2dz dGFydCwgMCwgJ3hpZF9hZ2VkJyk7CisKKyMgVGVzdGNhc2UgZW5kOiBJbnZhbGlkYXRlIHN0cmVh bWluZyBzdGFuZGJ5J3Mgc2xvdCBkdWUgdG8gcmVwbGljYXRpb25fc2xvdF94aWRfYWdlCisjIEdV Qy4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBU ZXN0Y2FzZSBzdGFydDogSW52YWxpZGF0ZSBsb2dpY2FsIHN1YnNjcmliZXIncyBzbG90IGR1ZSB0 bworIyByZXBsaWNhdGlvbl9zbG90X3hpZF9hZ2UgR1VDLgorCiskcHVibGlzaGVyID0gJHByaW1h cnk7CiskcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisJQUxURVIgU1lT VEVNIFNFVCByZXBsaWNhdGlvbl9zbG90X3hpZF9hZ2UgPSA1MDA7CitdKTsKKyRwdWJsaXNoZXIt PnJlbG9hZDsKKworJHN1YnNjcmliZXItPmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYn LCBxcSgKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24KK3dhbF9yZWNlaXZlcl9zdGF0dXNfaW50 ZXJ2YWwgPSAxCispKTsKKyRzdWJzY3JpYmVyLT5zdGFydDsKKworIyBDcmVhdGUgdGFibGVzCisk cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3RibDIg KGlkIGludCkiKTsKKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBU QUJMRSB0ZXN0X3RibDIgKGlkIGludCkiKTsKKworIyBJbnNlcnQgc29tZSBkYXRhCiskcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGVzdF90YmwyIFZBTFVF UyAoZ2VuZXJhdGVfc2VyaWVzKDEsIDUpKTsiKTsKKworIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0 aW9uCiskcHVibGlzaGVyX2Nvbm5zdHIgPSAkcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9 cG9zdGdyZXMnOworJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQ VUJMSUNBVElPTiBwdWIyIEZPUiBUQUJMRSB0ZXN0X3RibDIiKTsKKworJHN1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjIgQ09OTkVDVElP TiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiBwdWIyIFdJVEggKHNsb3RfbmFtZSA9 ICdsc3ViMl9zbG90JykiCispOworCiskc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9u X3N5bmMoJHB1Ymxpc2hlciwgJ3N1YjInKTsKKworJHJlc3VsdCA9CisgICRzdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGJsMiIpOwor CitpcygkcmVzdWx0LCBxcSg1KSwgImNoZWNrIGluaXRpYWwgY29weSB3YXMgZG9uZSIpOworCisk cHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsIHFxWworCVNFTEVDVCB4 bWluIElTIE5VTEwgQU5EIGNhdGFsb2dfeG1pbiBJUyBOT1QgTlVMTAorCUZST00gcGdfY2F0YWxv Zy5wZ19yZXBsaWNhdGlvbl9zbG90cworCVdIRVJFIHNsb3RfbmFtZSA9ICdsc3ViMl9zbG90JzsK K10pIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIHNsb3QgbHN1YjJfc2xvdCBjYXRhbG9n X3htaW4gdG8gYWR2YW5jZSI7CisKKyRsb2dzdGFydCA9IC1zICRwdWJsaXNoZXItPmxvZ2ZpbGU7 CisKKyMgU3RvcCBzdWJzY3JpYmVyIHRvIG1ha2UgdGhlIHJlcGxpY2F0aW9uIHNsb3Qgb24gcHVi bGlzaGVyIGluYWN0aXZlCiskc3Vic2NyaWJlci0+c3RvcDsKKworIyBEbyBzb21lIHdvcmsgdG8g YWR2YW5jZSB4aWRzIG9uIHB1Ymxpc2hlcgorYWR2YW5jZV94aWRzKCRwdWJsaXNoZXIsICd0ZXN0 X3RibDInKTsKKworIyBXYWl0IGZvciB0aGUgcmVwbGljYXRpb24gc2xvdCB0byBiZWNvbWUgaW5h Y3RpdmUgYW5kIHRoZW4gaW52YWxpZGF0ZWQgZHVlIHRvCisjIFhJRCBhZ2UuCit3YWl0X2Zvcl9z bG90X2ludmFsaWRhdGlvbigkcHVibGlzaGVyLCAnbHN1YjJfc2xvdCcsICRsb2dzdGFydCwgMCwK KwkneGlkX2FnZWQnKTsKKworIyBUZXN0Y2FzZSBlbmQ6IEludmFsaWRhdGUgbG9naWNhbCBzdWJz Y3JpYmVyJ3Mgc2xvdCBkdWUgdG8KKyMgcmVwbGljYXRpb25fc2xvdF94aWRfYWdlIEdVQy4KKyMg PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBUZXN0Y2Fz ZSBzdGFydDogSW52YWxpZGF0ZSBsb2dpY2FsIHNsb3Qgb24gc3RhbmRieSB0aGF0J3MgYmVpbmcg c3luY2VkIGZyb20KKyMgdGhlIHByaW1hcnkgZHVlIHRvIHJlcGxpY2F0aW9uX3Nsb3RfeGlkX2Fn ZSBHVUMuCisKKyRwdWJsaXNoZXIgPSAkcHJpbWFyeTsKKworIyBQcmVwYXJlIGZvciB0aGUgbmV4 dCB0ZXN0CiskcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisJQUxURVIg U1lTVEVNIFNFVCByZXBsaWNhdGlvbl9zbG90X3hpZF9hZ2UgPSAwOworXSk7CiskcHVibGlzaGVy LT5yZWxvYWQ7CisKKyMgQ3JlYXRlIGEgc3RhbmRieSBsaW5raW5nIHRvIHRoZSBwcmltYXJ5IHVz aW5nIHRoZSByZXBsaWNhdGlvbiBzbG90CitteSAkc3RhbmRieTMgPSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyLT5uZXcoJ3N0YW5kYnkzJyk7Ciskc3RhbmRieTMtPmluaXRfZnJvbV9iYWNrdXAo JHByaW1hcnksICRiYWNrdXBfbmFtZSwgaGFzX3N0cmVhbWluZyA9PiAxKTsKKworJHN0YW5kYnkz LT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywgcXEoCitob3Rfc3RhbmRieV9mZWVk YmFjayA9IG9uCitwcmltYXJ5X3Nsb3RfbmFtZSA9ICdzYjNfc2xvdCcKK3ByaW1hcnlfY29ubmlu Zm8gPSAnJGNvbm5zdHJfMSBkYm5hbWU9cG9zdGdyZXMnCispKTsKKworJHByaW1hcnktPnNhZmVf cHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKyAgICBTRUxFQ1QgcGdfY3JlYXRlX3BoeXNpY2FsX3Jl cGxpY2F0aW9uX3Nsb3Qoc2xvdF9uYW1lIDo9ICdzYjNfc2xvdCcsIGltbWVkaWF0ZWx5X3Jlc2Vy dmUgOj0gdHJ1ZSk7CitdKTsKKworJHN0YW5kYnkzLT5zdGFydDsKKworbXkgJHN0YW5kYnkzX2xv Z3N0YXJ0ID0gLXMgJHN0YW5kYnkzLT5sb2dmaWxlOworCisjIFdhaXQgdW50aWwgc3RhbmRieSBo YXMgcmVwbGF5ZWQgZW5vdWdoIGRhdGEKKyRwcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRzdGFu ZGJ5Myk7CisKKyRzdWJzY3JpYmVyLT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywg cXEoCitob3Rfc3RhbmRieV9mZWVkYmFjayA9IG9uCit3YWxfcmVjZWl2ZXJfc3RhdHVzX2ludGVy dmFsID0gMQorKSk7Ciskc3Vic2NyaWJlci0+c3RhcnQ7CisKKyMgQ3JlYXRlIHRhYmxlcworJHB1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YmwzIChp ZCBpbnQpIik7Ciskc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFC TEUgdGVzdF90YmwzIChpZCBpbnQpIik7CisKKyMgSW5zZXJ0IHNvbWUgZGF0YQorJHB1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRlc3RfdGJsMyBWQUxVRVMg KGdlbmVyYXRlX3NlcmllcygxLCA1KSk7Iik7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlv bgorJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElP TiBwdWIzIEZPUiBUQUJMRSB0ZXN0X3RibDMiKTsKKworJHN1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjMgQ09OTkVDVElPTiAnJHB1Ymxp c2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiBwdWIzIFdJVEggKHNsb3RfbmFtZSA9ICdsc3ViM19z eW5jX3Nsb3QnLCBmYWlsb3ZlciA9IHRydWUpIgorKTsKKworJHN1YnNjcmliZXItPndhaXRfZm9y X3N1YnNjcmlwdGlvbl9zeW5jKCRwdWJsaXNoZXIsICdzdWIzJyk7CisKKyRyZXN1bHQgPQorICAk c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0X3RibDMiKTsKKworaXMoJHJlc3VsdCwgcXEoNSksICJjaGVjayBpbml0aWFsIGNvcHkgd2Fz IGRvbmUiKTsKKworJHB1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgKKwkncG9zdGdyZXMnLCBx cVsKKwlTRUxFQ1QgeG1pbiBJUyBOVUxMIEFORCBjYXRhbG9nX3htaW4gSVMgTk9UIE5VTEwKKwlG Uk9NIHBnX2NhdGFsb2cucGdfcmVwbGljYXRpb25fc2xvdHMKKwlXSEVSRSBzbG90X25hbWUgPSAn bHN1YjNfc3luY19zbG90JzsKK10pCisgIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIHNs b3QgbHN1YjNfc3luY19zbG90IGNhdGFsb2dfeG1pbiB0byBhZHZhbmNlIjsKKworIyBTeW5jaHJv bml6ZSB0aGUgcHJpbWFyeSBzZXJ2ZXIgc2xvdHMgdG8gdGhlIHN0YW5kYnkKKyRzdGFuZGJ5My0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfc3luY19yZXBsaWNhdGlvbl9zbG90cygp OyIpOworCisjIENvbmZpcm0gdGhhdCB0aGUgbG9naWNhbCBmYWlsb3ZlciBzbG90IGlzIGNyZWF0 ZWQgb24gdGhlIHN0YW5kYnkgYW5kIGlzCisjIGZsYWdnZWQgYXMgJ3N5bmNlZCcgYW5kIGhhcyBn b3QgY2F0YWxvZ194bWluIGZyb20gdGhlIHByaW1hcnkuCitpcyggJHN0YW5kYnkzLT5zYWZlX3Bz cWwoCisJCSdwb3N0Z3JlcycsCisJCXF7U0VMRUNUIGNvdW50KCopID0gMSBGUk9NIHBnX3JlcGxp Y2F0aW9uX3Nsb3RzCisJCSAgV0hFUkUgc2xvdF9uYW1lID0gJ2xzdWIzX3N5bmNfc2xvdCcgQU5E IHN5bmNlZCBBTkQgTk9UIHRlbXBvcmFyeSBBTkQKKwkJCXhtaW4gSVMgTlVMTCBBTkQgY2F0YWxv Z194bWluIElTIE5PVCBOVUxMO30KKwkpLAorCSJ0IiwKKwknbG9naWNhbCBzbG90IGhhcyBzeW5j ZWQgYXMgdHJ1ZSBvbiBzdGFuZGJ5Jyk7CisKK215ICRwcmltYXJ5X2NhdGFsb2dfeG1pbiA9ICRw cmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNhdGFsb2dfeG1pbiBGUk9N IHBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9ICdsc3ViM19zeW5jX3Nsb3Qn IEFORCBjYXRhbG9nX3htaW4gSVMgTk9UIE5VTEw7IgorKTsKKworbXkgJHN0YWJkYnkzX2NhdGFs b2dfeG1pbiA9ICRzdGFuZGJ5My0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjYXRh bG9nX3htaW4gRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUgPSAnbHN1 YjNfc3luY19zbG90JyBBTkQgY2F0YWxvZ194bWluIElTIE5PVCBOVUxMOyIKKyk7CisKK2lzKCRw cmltYXJ5X2NhdGFsb2dfeG1pbiwgJHN0YWJkYnkzX2NhdGFsb2dfeG1pbiwKKwkiY2hlY2sgY2F0 YWxvZ194bWluIGFyZSBzYW1lIGZvciBwcmltYXJ5IHNsb3QgYW5kIHN5bmNlZCBzbG90Iik7CisK KyMgRW5hYmxlIFhJRCBhZ2UgYmFzZWQgaW52YWxpZGF0aW9uIG9uIHRoZSBzdGFuZGJ5LiBOb3Rl IHRoYXQgd2UgZGlzYWJsZWQgdGhlCisjIHNhbWUgb24gdGhlIHByaW1hcnkgdG8gY2hlY2sgaWYg dGhlIGludmFsaWRhdGlvbiBvY2N1cnMgZm9yIHN5bmNlZCBzbG90IG9uCisjIHRoZSBzdGFuZGJ5 LgorJHN0YW5kYnkzLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisJQUxURVIgU1lTVEVN IFNFVCByZXBsaWNhdGlvbl9zbG90X3hpZF9hZ2UgPSA1MDA7CitdKTsKKyRzdGFuZGJ5My0+cmVs b2FkOworCiskbG9nc3RhcnQgPSAtcyAkc3RhbmRieTMtPmxvZ2ZpbGU7CisKKyMgRG8gc29tZSB3 b3JrIHRvIGFkdmFuY2UgeGlkcyBvbiBwcmltYXJ5CithZHZhbmNlX3hpZHMoJHByaW1hcnksICd0 ZXN0X3RibDMnKTsKKworIyBXYWl0IGZvciBzdGFuZGJ5IHRvIGNhdGNoIHVwIHdpdGggdGhlIGFi b3ZlIHdvcmsKKyRwcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRzdGFuZGJ5Myk7CisKKyMgV2Fp dCBmb3IgdGhlIHJlcGxpY2F0aW9uIHNsb3QgdG8gYmVjb21lIGluYWN0aXZlIGFuZCB0aGVuIGlu dmFsaWRhdGVkIGR1ZSB0bworIyBYSUQgYWdlLgord2FpdF9mb3Jfc2xvdF9pbnZhbGlkYXRpb24o JHN0YW5kYnkzLCAnbHN1YjNfc3luY19zbG90JywgJGxvZ3N0YXJ0LCAwLAorCSd4aWRfYWdlZCcp OworCisjIE5vdGUgdGhhdCB0aGUgcmVwbGljYXRpb24gc2xvdCBvbiB0aGUgcHJpbWFyeSBpcyBz dGlsbCBhY3RpdmUKKyRyZXN1bHQgPSAkcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IlNFTEVDVCBDT1VOVChzbG90X25hbWUpID0gMSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdI RVJFIHNsb3RfbmFtZSA9ICdsc3ViM19zeW5jX3Nsb3QnIEFORCBpbnZhbGlkYXRpb25fcmVhc29u IElTIE5VTEw7IgorKTsKKworaXMoJHJlc3VsdCwgJ3QnLCAiY2hlY2sgbHN1YjNfc3luY19zbG90 IGlzIHN0aWxsIGFjdGl2ZSBvbiBwcmltYXJ5Iik7CisKKyMgVGVzdGNhc2UgZW5kOiBJbnZhbGlk YXRlIGxvZ2ljYWwgc2xvdCBvbiBzdGFuZGJ5IHRoYXQncyBiZWluZyBzeW5jZWQgZnJvbQorIyB0 aGUgcHJpbWFyeSBkdWUgdG8gcmVwbGljYXRpb25fc2xvdF94aWRfYWdlIEdVQy4KKyMgPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKwogc3ViIHdhaXRfZm9yX3Nsb3RfaW52YWxpZGF0aW9uCiB7Ci0JbXkg KCRub2RlLCAkc2xvdF9uYW1lLCAkb2Zmc2V0LCAkaW5hY3RpdmVfdGltZW91dCkgPSBAXzsKKwlt eSAoJG5vZGUsICRzbG90X25hbWUsICRvZmZzZXQsICRpbmFjdGl2ZV90aW1lb3V0LCAkcmVhc29u KSA9IEBfOwogCW15ICRuYW1lID0gJG5vZGUtPm5hbWU7CiAKIAkjIFdhaXQgZm9yIHRoZSByZXBs aWNhdGlvbiBzbG90IHRvIGJlY29tZSBpbmFjdGl2ZQpAQCAtMjM4LDcgKzUwMyw3IEBAIHN1YiB3 YWl0X2Zvcl9zbG90X2ludmFsaWRhdGlvbgogCQkncG9zdGdyZXMnLCBxcVsKIAkJU0VMRUNUIENP VU5UKHNsb3RfbmFtZSkgPSAxIEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMKIAkJCVdIRVJFIHNs b3RfbmFtZSA9ICckc2xvdF9uYW1lJyBBTkQKLQkJCWludmFsaWRhdGlvbl9yZWFzb24gPSAnaW5h Y3RpdmVfdGltZW91dCc7CisJCQlpbnZhbGlkYXRpb25fcmVhc29uID0gJyRyZWFzb24nOwogCV0p CiAJICBvciBkaWUKIAkgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgaW5hY3RpdmUgc2xv dCAkc2xvdF9uYW1lIHRvIGJlIGludmFsaWRhdGVkIG9uIG5vZGUgJG5hbWUiOwpAQCAtMjgzLDQg KzU0OCwyNSBAQCBzdWIgY2hlY2tfZm9yX3Nsb3RfaW52YWxpZGF0aW9uX2luX3NlcnZlcl9sb2cK IAkpOwogfQogCisjIERvIHNvbWUgd29yayBmb3IgYWR2YW5jaW5nIHhpZHMgb24gYSBnaXZlbiBu b2RlCitzdWIgYWR2YW5jZV94aWRzCit7CisJbXkgKCRub2RlLCAkdGFibGVfbmFtZSkgPSBAXzsK KworCSRub2RlLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHFxWworCQlkbyBcJFwkCisJCWJl Z2luCisJCWZvciBpIGluIDEwMDAwLi4xMTAwMCBsb29wCisJCQktLSB1c2UgYW4gZXhjZXB0aW9u IGJsb2NrIHNvIHRoYXQgZWFjaCBpdGVyYXRpb24gZWF0cyBhbiBYSUQKKwkJCWJlZ2luCisJCQlp bnNlcnQgaW50byAkdGFibGVfbmFtZSB2YWx1ZXMgKGkpOworCQkJZXhjZXB0aW9uCisJCQl3aGVu IGRpdmlzaW9uX2J5X3plcm8gdGhlbiBudWxsOworCQkJZW5kOworCQllbmQgbG9vcDsKKwkJZW5k XCRcJDsKKwldKTsKK30KKwogZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjM0LjEKCg== --000000000000c8a5dc061b150e62--