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 1wTQGJ-000W8Q-1p for pgsql-hackers@arkaria.postgresql.org; Sat, 30 May 2026 20:26:27 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wTQGI-006VJ5-0O for pgsql-hackers@arkaria.postgresql.org; Sat, 30 May 2026 20:26:26 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wTQGH-006VIw-1R for pgsql-hackers@lists.postgresql.org; Sat, 30 May 2026 20:26:26 +0000 Received: from mail-lj1-x22b.google.com ([2a00:1450:4864:20::22b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wTQGD-00000000Jsc-0ZYx for pgsql-hackers@lists.postgresql.org; Sat, 30 May 2026 20:26:24 +0000 Received: by mail-lj1-x22b.google.com with SMTP id 38308e7fff4ca-396770cdcfdso1507101fa.0 for ; Sat, 30 May 2026 13:26:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780172775; x=1780777575; darn=lists.postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=llP/Qv4yK3UysAzIpfyUaE2vOUukP8bV4AzIU0mEpA4=; b=mLctlP4Zqn83i3nDtxkZjqvaJKyII526cjaiP2rqQG8ctIJgOloFkDdJJQOYprIILF H9n30TgAg/fCEtt78Yj+2lBGIs+8lTylAFnirDmhjd4AFrL/zwdLwXz9HswTIurdMltI hY3TRjgZ+J0r4Mf0w2a0GhGbhFGzHqP8Sx67l39ZTzr6+/Fqa44TiwpDhqFBJ1w87bNB 4HvbfB25MIWjeRMrB7NuvRcOlrNxpIm96X6I6coci/hgIendqdmLEHlDRnKOlEMi78xF p6sMfT5Hs/FaTkl/oYcGxOWTqMKQNIu+NMYXMnggpdj41gjLHs3dCfxA2Tmk/IIZimK7 SCvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780172775; x=1780777575; h=in-reply-to:from:content-language: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=llP/Qv4yK3UysAzIpfyUaE2vOUukP8bV4AzIU0mEpA4=; b=EBlYl5N7RQgSobLydpIyUoayzS4/vJwYqw2LGyhhrrvhxyUdx9AvfD7uPuoftPIwqd ZkzFSC3bG6uIzhnoWJ2VtjgPfeGt9Q0YQSKkKPhMgO/YkeIZ8q49lc2/F2qist3hcPkZ c+wwAgs9gARkptTel/dy16Q+ttGl7+lR7CtWGlaYZYa1Y92AwMzPn/bLkCWz/KvZzihi bKdnGd0lhDtAsO+QI/I17wMd+4mnzyEpMYl/lqEGTdUEWlh9Y7ohJ+4FlmFNP+BTq1tM 0KZvsNIDQ+vBIky3uKN7i/Eb7dqsCiu0HrofRgJLgGU6gP9xSEEmnt8VWqecAwvjeVdd 1lFQ== X-Forwarded-Encrypted: i=1; AFNElJ8Wiws6I0yC+eKg4LN6UlOLQ3DK5jnWCJzD69Hdr6qufoKI+oESttskZHfYvZ3e8/bJaXAVmmGh2whVipPM@lists.postgresql.org X-Gm-Message-State: AOJu0YxBTgj75CYFv3kQrD21bsUSbjgoeRshlRjUaOgbnZRFyw8wGTch idORr55swHMsUM8/dAQKPqcWbwYq36uwubKsMWz1KVQNounQhqU4XBEL X-Gm-Gg: Acq92OEdHB3saW10WW8yIqrFgTVDM8vMQF5vaOpMSIdNrGYRaDCXNDOsGj4JO+ocMN5 La1/DEv/oxFMT3K4GxC1R1afsKlu81+LjtHyOy4B8r2gGOvAeEi0Ego8E7/mjifjrttWxidE2uM hGKFUsnQWrO9G1Eqn7OFoHb2fCP9zVOwyqlbyaN1//X8gY98RCWX1TPhohQJOPa0D72ElwxGAHt VLFLXdulJNYM1gpEceo/S8dY1aOKqupGWKWXKvfGSYp6jYMKJDJ364gDBZZnRDOOBRsj2BZozzT EQMGZJkGY+JHeM36cTbzDDVJ0E+i2d7MK552c0av8CdmIpyYqmAlCbVxAAhDHw3l/MZvuYGsizg J3jW0KCHV0GBXaEk1u6EUtlabL1N49qsOMyNOlwhIvtsMKtdYISo4ZcdiZmxinHouAzBtDmkJ2S KkDqYtgwDNkhRm4ABMJ+A27mOoGPE618Y8vmVfJ59DnZIfyeW4snCGOuwmMZGOxKbiDr0hq+6F/ ME= X-Received: by 2002:a2e:948f:0:b0:38e:8289:7938 with SMTP id 38308e7fff4ca-39664fb24b7mr9363581fa.24.1780172774392; Sat, 30 May 2026 13:26:14 -0700 (PDT) Received: from [192.168.0.11] (c151-177-23-39.bredband.tele2.se. [151.177.23.39]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-39659c46a6csm11330961fa.4.2026.05.30.13.26.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 30 May 2026 13:26:13 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------2TginzasSc0nRUJ8uwExTyBF" Message-ID: <9ce0d2b9-7a41-4a8a-b299-da295bb4514f@gmail.com> Date: Sat, 30 May 2026 22:26:11 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: pg_rewind does not rewind diverging timelines To: Japin Li Cc: surya poondla , pgsql-hackers@lists.postgresql.org References: Content-Language: en-US From: Mats Kindahl In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------2TginzasSc0nRUJ8uwExTyBF Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkgSmFwaW4sDQoNCk9uIDUvMjkvMjYgMDQ6MDEsIEphcGluIExpIHdyb3RlOg0KDQo+IEhp LCBNYXRzDQo+DQo+IE9uIFR1ZSwgMjYgTWF5IDIwMjYgYXQgMTg6MDMsIE1hdHMgS2luZGFo bCA8bWF0cy5raW5kYWhsQGdtYWlsLmNvbT4gd3JvdGU6DQo+PiBBdHRhY2hlZCBhIG5ldyB2 ZXJzaW9uIG9mIHRoZSBwYXRjaCB3aXRoIHRoZSBjaGFuZ2VzIHlvdSBzdWdnZXN0ZWQuDQo+ Pg0KPiBJIGZvdW5kIGFuIGVycm9yIG9uIHRoZSBXaW5kb3dzIHBsYXRmb3JtIFsxXS4NCj4N Cj4gWzA3OjA4OjI4LjUzOF0gPj4+IE1BTExPQ19QRVJUVVJCXz0xNjggUEdfUkVHUkVTUz1D OlxjaXJydXNcYnVpbGRcc3JjL3Rlc3RccmVncmVzc1xwZ19yZWdyZXNzLmV4ZSBSRUdSRVNT X1NITElCPUM6XGNpcnJ1c1xidWlsZFxzcmMvdGVzdFxyZWdyZXNzXHJlZ3Jlc3MuZGxsIE1T QU5fT1BUSU9OUz1oYWx0X29uX2Vycm9yPTE6YWJvcnRfb25fZXJyb3I9MTpwcmludF9zdW1t YXJ5PTE6cHJpbnRfc3RhY2t0cmFjZT0xIHRvcF9idWlsZGRpcj1DOlxjaXJydXNcYnVpbGQg VUJTQU5fT1BUSU9OUz1oYWx0X29uX2Vycm9yPTE6YWJvcnRfb25fZXJyb3I9MTpwcmludF9z dW1tYXJ5PTE6cHJpbnRfc3RhY2t0cmFjZT0xIE1FU09OX1RFU1RfSVRFUkFUSU9OPTEgUEFU SD1DOlxjaXJydXNcYnVpbGRcdG1wX2luc3RhbGxcdXNyXGxvY2FsXHBnc3FsXGJpbjtDOlxj aXJydXNcYnVpbGRcc3JjXGJpblxwZ19yZXdpbmQ7QzovY2lycnVzL2J1aWxkL3NyYy9iaW4v cGdfcmV3aW5kL3Rlc3Q7QzpcVlNfMjAxOVxWQ1xUb29sc1xNU1ZDXDE0LjI5LjMwMTMzXGJp blxIb3N0WDY0XHg2NDtDOlxWU18yMDE5XE1TQnVpbGRcQ3VycmVudFxiaW5cUm9zbHluO0M6 XFByb2dyYW0gRmlsZXMgKHg4NilcV2luZG93cyBLaXRzXDEwXGJpblwxMC4wLjIyNjIxLjBc eDY0O0M6XFByb2dyYW0gRmlsZXMgKHg4NilcV2luZG93cyBLaXRzXDEwXGJpblx4NjQ7Qzpc VlNfMjAxOVxcTVNCdWlsZFxDdXJyZW50XEJpbjtDOlxXaW5kb3dzXE1pY3Jvc29mdC5ORVRc RnJhbWV3b3JrNjRcdjQuMC4zMDMxOTtDOlxWU18yMDE5XENvbW1vbjdcSURFXDtDOlxWU18y MDE5XENvbW1vbjdcVG9vbHNcO0M6XFZTXzIwMTlcVkNcQXV4aWxpYXJ5XEJ1aWxkO0M6XHpz dGRcenN0ZC12MS41LjItd2luNjQ7QzpcemxpYjtDOlxsejQ7QzpcaWN1O0M6XHdpbmZsZXhi aXNvbjtDOlxzdHJhd2JlcnJ5XDUuNDIuMC4xXHBlcmxcYmluO0M6XHB5dGhvblxTY3JpcHRz XDtDOlxweXRob25cO0M6XFdpbmRvd3MgS2l0c1wxMFxEZWJ1Z2dlcnNceDY0O0M6XFByb2dy YW0gRmlsZXNcR2l0XHVzclxiaW47QzpcV2luZG93c1xzeXN0ZW0zMjtDOlxXaW5kb3dzO0M6 XFdpbmRvd3NcU3lzdGVtMzJcV2JlbTtDOlxXaW5kb3dzXFN5c3RlbTMyXFdpbmRvd3NQb3dl clNoZWxsXHYxLjBcO0M6XFdpbmRvd3NcU3lzdGVtMzJcT3BlblNTSFw7QzpcUHJvZ3JhbURh dGFcR29vR2V0O0M6XFByb2dyYW0gRmlsZXNcR29vZ2xlXENvbXB1dGUgRW5naW5lXG1ldGFk YXRhX3NjcmlwdHM7QzpcUHJvZ3JhbSBGaWxlcyAoeDg2KVxHb29nbGVcQ2xvdWQgU0RLXGdv b2dsZS1jbG91ZC1zZGtcYmluO0M6XFByb2dyYW0gRmlsZXNcUG93ZXJTaGVsbFw3XDtDOlxQ cm9ncmFtIEZpbGVzXEdvb2dsZVxDb21wdXRlIEVuZ2luZVxzeXNwcmVwO0M6XFByb2dyYW1E YXRhXGNob2NvbGF0ZXlcYmluO0M6XFByb2dyYW0gRmlsZXNcR2l0XGNtZDtDOlxQcm9ncmFt IEZpbGVzXEdpdFxtaW5ndzY0XGJpbjtDOlxQcm9ncmFtIEZpbGVzXEdpdFx1c3JcYmluO0M6 XFdpbmRvd3Ncc3lzdGVtMzJcY29uZmlnXHN5c3RlbXByb2ZpbGVcQXBwRGF0YVxMb2NhbFxN aWNyb3NvZnRcV2luZG93c0FwcHMgSU5JVERCX1RFTVBMQVRFPUM6L2NpcnJ1cy9idWlsZC90 bXBfaW5zdGFsbC9pbml0ZGItdGVtcGxhdGUgQVNBTl9PUFRJT05TPWhhbHRfb25fZXJyb3I9 MTphYm9ydF9vbl9lcnJvcj0xOnByaW50X3N1bW1hcnk9MSBzaGFyZV9jb250cmliX2Rpcj1D Oi9jaXJydXMvYnVpbGQvdG1wX2luc3RhbGwvL3Vzci9sb2NhbC9wZ3NxbC9zaGFyZS9jb250 cmliIEM6XHB5dGhvblxweXRob24zLkVYRSBDOlxjaXJydXNcYnVpbGRcLi5cc3JjL3Rvb2xz L3Rlc3R3cmFwIC0tYmFzZWRpciBDOlxjaXJydXNcYnVpbGQgLS1zcmNkaXIgQzpcY2lycnVz XHNyY1xiaW5ccGdfcmV3aW5kIC0tcGctdGVzdC1leHRyYSAgLS10ZXN0Z3JvdXAgcGdfcmV3 aW5kIC0tdGVzdG5hbWUgMDA1X3NhbWVfdGltZWxpbmUgLS0gQzpcc3RyYXdiZXJyeVw1LjQy LjAuMVxwZXJsXGJpblxwZXJsLkVYRSAtSSBDOi9jaXJydXMvc3JjL3Rlc3QvcGVybCAtSSBD OlxjaXJydXNcc3JjXGJpblxwZ19yZXdpbmQgQzovY2lycnVzL3NyYy9iaW4vcGdfcmV3aW5k L3QvMDA1X3NhbWVfdGltZWxpbmUucGwNCj4gWzA3OjA4OjI4LjUzOF0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSA4PCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQo+IFswNzowODoyOC41MzhdIHN0ZGVycjoNCj4gWzA3OjA4OjI4LjUz OF0gIyAgIEZhaWxlZCB0ZXN0ICdwZ19yZXdpbmQgcmV3aW5kcyBhY3Jvc3MgbWlzbWF0Y2hl ZCBUTEkgMiAvIFRMSSAyLXByaW1lIHRvIFRMSSAxJw0KPiBbMDc6MDg6MjguNTM4XSAjICAg YXQgQzovY2lycnVzL3NyYy9iaW4vcGdfcmV3aW5kL3QvMDA1X3NhbWVfdGltZWxpbmUucGwg bGluZSA0NS4NCj4gWzA3OjA4OjI4LjUzOF0gIyAtLS0tLS0tLS0tIGNvbW1hbmQgZmFpbGVk IC0tLS0tLS0tLS0NCj4gWzA3OjA4OjI4LjUzOF0gIyBwZ19yZXdpbmQgLS1kZWJ1ZyAtLXNv dXJjZS1wZ2RhdGEgQzpcY2lycnVzXGJ1aWxkL3Rlc3RydW4vcGdfcmV3aW5kLzAwNV9zYW1l X3RpbWVsaW5lXGRhdGEvdF8wMDVfc2FtZV90aW1lbGluZV9ub2RlX2IyX2RhdGEvcGdkYXRh IC0tdGFyZ2V0LXBnZGF0YSBDOlxjaXJydXNcYnVpbGQvdGVzdHJ1bi9wZ19yZXdpbmQvMDA1 X3NhbWVfdGltZWxpbmVcZGF0YS90XzAwNV9zYW1lX3RpbWVsaW5lX25vZGVfYTJfZGF0YS9w Z2RhdGEgLS1uby1zeW5jIC0tY29uZmlnLWZpbGUgQzpcY2lycnVzXGJ1aWxkXHRlc3RydW5c cGdfcmV3aW5kXDAwNV9zYW1lX3RpbWVsaW5lXGRhdGFcdG1wX3Rlc3RfWkNlWi90YXJnZXQt cG9zdGdyZXNxbC5jb25mLnRtcCAtLXJlc3RvcmUtdGFyZ2V0LXdhbA0KPiBbMDc6MDg6Mjgu NTM4XSAjIC0tLS0tLS0tLS0tLS0tIHN0ZGVyciAtLS0tLS0tLS0tLS0tLQ0KPiBbMDc6MDg6 MjguNTM4XSAjIHBnX3Jld2luZDogdXNpbmcgZm9yIHJld2luZCAicmVzdG9yZV9jb21tYW5k ID0gJ2NwICJDOmNpcnJ1c3VpbGQvdGVzdHJ1bi9wZ19yZXdpbmQvMDA1X3NhbWVfdGltZWxp bmVkYXRhL3RfMDA1X3NhbWVfdGltZWxpbmVfbm9kZV94X2RhdGEvcGdkYXRhL3BnX3dhbC8l ZiIgIiVwIiciDQo+IFswNzowODoyOC41MzhdICMgcGdfcmV3aW5kOiBTb3VyY2UgdGltZWxp bmUgaGlzdG9yeToNCj4gWzA3OjA4OjI4LjUzOF0gIyBwZ19yZXdpbmQ6IDE6IDAvMDAwMDAw MDAgLSAwLzA0MDAwMEUwDQo+IFswNzowODoyOC41MzhdICMgcGdfcmV3aW5kOiAyOiAwLzA0 MDAwMEUwIC0gMC8wMDAwMDAwMA0KPiBbMDc6MDg6MjguNTM4XSAjIHBnX3Jld2luZDogVGFy Z2V0IHRpbWVsaW5lIGhpc3Rvcnk6DQo+IFswNzowODoyOC41MzhdICMgcGdfcmV3aW5kOiAx OiAwLzAwMDAwMDAwIC0gMC8wNDAwMDBFMA0KPiBbMDc6MDg6MjguNTM4XSAjIHBnX3Jld2lu ZDogMjogMC8wNDAwMDBFMCAtIDAvMDYwMDAwRTANCj4gWzA3OjA4OjI4LjUzOF0gIyBwZ19y ZXdpbmQ6IDM6IDAvMDYwMDAwRTAgLSAwLzAwMDAwMDAwDQo+IFswNzowODoyOC41MzhdICMg cGdfcmV3aW5kOiBzZXJ2ZXJzIGRpdmVyZ2VkIGF0IFdBTCBsb2NhdGlvbiAwLzA0MDAwMEUw IG9uIHRpbWVsaW5lIDENCj4gWzA3OjA4OjI4LjUzOF0gIyBjcDogY2Fubm90IHN0YXQgJ0M6 Y2lycnVzJyQnXGInJ3VpbGQvdGVzdHJ1bi9wZ19yZXdpbmQvMDA1X3NhbWVfdGltZWxpbmVk YXRhL3RfMDA1X3NhbWVfdGltZWxpbmVfbm9kZV94X2RhdGEvcGdkYXRhL3BnX3dhbC8wMDAw MDAwMjAwMDAwMDAwMDAwMDAwMDQnOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5DQo+IFsw NzowODoyOC41MzhdICMgcGdfcmV3aW5kOiBlcnJvcjogY291bGQgbm90IHJlc3RvcmUgZmls ZSAiMDAwMDAwMDIwMDAwMDAwMDAwMDAwMDA0IiBmcm9tIGFyY2hpdmUNCj4gWzA3OjA4OjI4 LjUzOF0gIyBwZ19yZXdpbmQ6IGVycm9yOiBjb3VsZCBub3QgZmluZCBwcmV2aW91cyBXQUwg cmVjb3JkIGF0IDAvMDQwMDAwRTANCj4gWzA3OjA4OjI4LjUzOF0gIyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gWzA3OjA4OjI4LjUzOF0gIyAgIEZhaWxlZCB0 ZXN0ICdyZXdvdW5kIG5vZGUgcmVmbGVjdHMgc291cmNlIGhpc3RvcnksIG5vdCB0YXJnZXQg VExJIDIvVExJIDMgZGF0YScNCj4gWzA3OjA4OjI4LjUzOF0gIyAgIGF0IEM6L2NpcnJ1cy9z cmMvYmluL3BnX3Jld2luZC90LzAwNV9zYW1lX3RpbWVsaW5lLnBsIGxpbmUgMjYwLg0KPiBb MDc6MDg6MjguNTM4XSAjICAgICAgICAgIGdvdDogJ29yaWdpbjINCj4gWzA3OjA4OjI4LjUz OF0gIyB4Jw0KPiBbMDc6MDg6MjguNTM4XSAjICAgICBleHBlY3RlZDogJ2INCj4gWzA3OjA4 OjI4LjUzOF0gIyBvcmlnaW4yJw0KPiBbMDc6MDg6MjguNTM4XSAjIExvb2tzIGxpa2UgeW91 IGZhaWxlZCAyIHRlc3RzIG9mIDExLg0KPiBbMDc6MDg6MjguNTM4XQ0KPiBbMDc6MDg6Mjgu NTM4XSAodGVzdCBwcm9ncmFtIGV4aXRlZCB3aXRoIHN0YXR1cyBjb2RlIDIpDQo+IFswNzow ODoyOC41MzhdIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiBbMDc6MDg6MjguNTM4XQ0K Pg0KPg0KPiBbMV0gaHR0cHM6Ly9jaXJydXMtY2kuY29tL3Rhc2svNjIyODIxNzE1OTIyMTI0 OA0KDQpUaGFua3MgZm9yIHRlc3RpbmcgaXQgb24gV2luZG93cy4NCg0KSXQgc2VlbXMgbGlr ZSB0aGUgcGF0aCBuZWVkcyB0byBiZSBjbGVhbmVkIG9uIFdpbmRvd3MuIEkgY2hlY2tlZCAN CkNsdXN0ZXIucG0gYW5kIGNyZWF0ZWQgYSB2ZXJzaW9uIG9mIHRoYXQgY29kZSBhbmQgYWRk ZWQgdGhhdCB0byB0aGUgdGVzdCANCnRoYXQgc2hvdWxkIHdvcmsuIFNlZSBhdHRhY2hlZCBw YXRjaC4NCg0KSSBub3RlZCB0aGF0IG1hbnkgb2YgdGhlIHBhdGhzIGFyZSBub3QgcGxhdGZv cm0tYWdub3N0aWMuIEl0IGFuIGlkZWEgdG8gDQpzd2l0Y2ggdG8gdXNlIHNvbWV0aGluZyBs aWtlIEZpbGU6OlNwZWMgaW5zdGVhZCBhbmQgYnVpbGQgcGF0aHMgdXNpbmcgDQp0aGF0LCBi dXQgaXQncyBvdXQgb2Ygc2NvcGUgZm9yIHRoaXMgcGF0Y2guDQoNCkJlc3Qgd2lzaGVzLA0K TWF0cyBLaW5kYWhsLCBNdWx0aWdyZXMgRW5naW5lZXIsIFN1cGFiYXNlDQoNCg== --------------2TginzasSc0nRUJ8uwExTyBF Content-Type: text/x-patch; charset=UTF-8; name="v6.0001-pg_rewind-use-UUIDs-to-detect-independent-same-TLI-p.patch" Content-Disposition: attachment; filename*0="v6.0001-pg_rewind-use-UUIDs-to-detect-independent-same-TLI-p"; filename*1=".patch" Content-Transfer-Encoding: base64 RnJvbSA1YmMyYTMyMDU0ZTEzYzU3OWVmMDA0NWUwODcyMTMzMjI4OGFlZDY0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXRzIEtpbmRhaGwgPG1hdHNAa2luZGFobC5uZXQ+ CkRhdGU6IFNhdCwgMjMgTWF5IDIwMjYgMTY6MDk6NDQgKzAyMDAKU3ViamVjdDogcGdfcmV3 aW5kOiB1c2UgVVVJRHMgdG8gZGV0ZWN0IGluZGVwZW5kZW50IHNhbWUtVExJIHByb21vdGlv bnMKClR3byBQb3N0Z3JlU1FMIHN0YW5kYnlzIGNhbiBpbmRlcGVuZGVudGx5IHByb21vdGUg dG8gdGhlIHNhbWUgdGltZWxpbmUKSUQgaWYgdGhlaXIgcHJpbWFyeSBzdG9wcGVkIGJlZm9y ZSBlaXRoZXIgaGFkIGEgY2hhbmNlIHRvIHByb21vdGUuICBJbgp0aGF0IHNpdHVhdGlvbiBi b3RoIGNsdXN0ZXJzIHNoYXJlIGEgdGltZWxpbmUgaGlzdG9yeSBwcmVmaXggdGhhdCBsb29r cwppZGVudGljYWwgdG8gcGdfcmV3aW5kOiBzYW1lIFRMSSBudW1iZXJzIGFuZCBzYW1lIGJl Z2luL2VuZCBMU05zLiAgVGhlCmV4aXN0aW5nIHNhbWUtVExJIHNob3J0Y3V0IHRoZXJlZm9y ZSB0cmVhdGVkIHRoZSBzb3VyY2UgYXMgYSB2YWxpZApyZXdpbmQgdGFyZ2V0IGFuZCBza2lw cGVkIHRoZSByZXdpbmQgZW50aXJlbHksIGxlYXZpbmcgdGhlIHRhcmdldCdzCmRpdmVyZ2Vk IFdBTCBpbnRhY3QuCgpGaXggdGhpcyBieSBlbWJlZGRpbmcgYSBVVUlEdjcgdmFsdWUgaW4g ZXZlcnkgdGltZWxpbmUgaGlzdG9yeSBmaWxlCmVudHJ5IGF0IHByb21vdGlvbiB0aW1lLiAg RWFjaCBwcm9tb3Rpb24gZ2VuZXJhdGVzIGEgZnJlc2ggVVVJRCwgc28gdHdvCmluZGVwZW5k ZW50IHByb21vdGlvbnMgdG8gdGhlIHNhbWUgVExJIHdpbGwgY2FycnkgZGlmZmVyZW50IFVV SURzIGV2ZW4KdGhvdWdoIHRoZSBUTEkgbnVtYmVyIGFuZCBiZWdpbiBMU04gYXJlIGlkZW50 aWNhbC4KCldoZW4gbG9hZGluZyB0aGUgdGltZWxpbmUgaGlzdG9yeSwgcGdfcmV3aW5kIHVz ZXMgdGhlc2UgVVVJRHMgaW4gdHdvCnBsYWNlczoKCjEuIGZpbmRDb21tb25BbmNlc3RvclRp bWVsaW5lIGNoZWNrcyB0aGF0IHRoZSBUTEkgYW5kIFVVSUQgaW4gZWFjaCBlbnRyeQogICBt YXRjaC4gIEEgbWlzbWF0Y2ggc2lnbmFscyBpbmRlcGVuZGVudCBwcm9tb3Rpb25zIGFuZCB0 aGUgc2VhcmNoCiAgIGNvbnRpbnVlcyB0byBlYXJsaWVyIGVudHJpZXMgdG8gZmluZCB0aGUg dHJ1ZSBjb21tb24gYW5jZXN0b3IuCgoyLiBUaGUgc2FtZS1UTEkgc2hvcnRjdXQgKHNvdXJj ZSBhbmQgdGFyZ2V0IG9uIHRoZSBzYW1lIGN1cnJlbnQgVExJKQogICBjb21wYXJlcyB0aGUg VVVJRCBzdG9yZWQgaW4gdGhlIGxhc3QgY29tcGxldGVkIGhpc3RvcnkgZW50cnkgYW5kIGEK ICAgbWlzbWF0Y2ggZm9yY2VzIGEgZnVsbCByZXdpbmQgaW5zdGVhZCBvZiBhIG5vLW9wLgoK VVVJRHMgYXJlIHplcm8gZm9yIGNsdXN0ZXJzIHRoYXQgcHJlZGF0ZSB0aGlzIGNoYW5nZSwg YW5kIHRoZSBjb21wYXJpc29uCmZ1bmN0aW9uIHRyZWF0cyBhIHplcm8gVVVJRCBvbiBlaXRo ZXIgc2lkZSBhcyBkaWZmZXJlbnQgZnJvbSBhIFVVSUQKc2luY2UgdGhhdCBwcm9tb3Rpb24g aGFzIHRvIGJlIGZyb20gYSBkaWZmZXJlbnQgc2VydmVyIChpdCBoYWQgYQpwcmUtY2hhbmdl IHZlcnNpb24gc2VydmVyIHRoYXQgd2FzIHByb21vdGVkLCBzbyBpdCBjYW5ub3QgYmUgdGhl IHNhbWUgYXMKYSBwb3N0LWNoYW5nZSB2ZXJzaW9uIHNlcnZlciB0aGF0IHdhcyBwcm9tb3Rl ZCkuCgpUd28gbmV3IHRlc3RzIGluIHQvMDA1X3NhbWVfdGltZWxpbmUucGwgY292ZXIgYm90 aCBkZXRlY3Rpb24gcGF0aHMuCgpUaGUgZmlyc3QgY292ZXJzIHRoZSBzYW1lLVRMSSBzaG9y dGN1dDogdHdvIHN0YW5kYnlzIGluZGVwZW5kZW50bHkKcHJvbW90ZSB0byBUTEkyIGFuZCBU TEkyJywgZWFjaCB3aXRoIGEgZGlzdGluY3QgVVVJRC4KClRoZSBzZWNvbmQgY292ZXJzIHRo ZSBhbmNlc3RvciBzZWFyY2g6IHRoZSB0YXJnZXQgZ29lcyB0aHJvdWdoIFRMSTEgLT4KVExJ MiAtPiBUTEkzIHdoaWxlIHRoZSBzb3VyY2UgaW5kZXBlbmRlbnRseSBwcm9tb3RlZCBzbyB0 aGF0IGl0IGhhcyBhCnRpbWVsaW5lIHdpdGggVExJMSAtPiBUTEkyJyAtPiBUTEkzJy4gVGhl IHRlc3QgZW5zdXJlcyB0aGF0CmZpbmRDb21tb25BbmNlc3RvclRpbWVsaW5lIGJhY2tzIHVw IHRvIFRMSTEgYXMgdGhlIHRydWUgY29tbW9uIGFuY2VzdG9yCnJhdGhlciB0aGFuIGFjY2Vw dGluZyB0aGUgbnVtZXJpY2FsbHkgbWF0Y2hpbmcgVExJMiBlbnRyeS4KLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS90aW1lbGluZS5jICAgIHwgIDc5ICsrKystCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgICAgICAgIHwgIDE1ICsKIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC91dWlkLmMgICAgICAgICAgICAgfCAgMTUgKy0KIHNyYy9iaW4vcGdfcmV3 aW5kL3BnX3Jld2luZC5jICAgICAgICAgICAgfCAxMDQgKysrKysrLQogc3JjL2Jpbi9wZ19y ZXdpbmQvdC8wMDVfc2FtZV90aW1lbGluZS5wbCB8IDM2MiArKysrKysrKysrKysrKysrKysr KysrKwogc3JjL2Jpbi9wZ19yZXdpbmQvdGltZWxpbmUuYyAgICAgICAgICAgICB8ICA0NyAr Ky0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90aW1lbGluZS5oICAgICAgICAgICAgfCAgIDUgKy0K IHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9nX2ludGVybmFsLmggICAgICAgfCAgIDEgKwogc3Jj L2luY2x1ZGUvdXRpbHMvdXVpZC5oICAgICAgICAgICAgICAgICB8ICAxMCArLQogOSBmaWxl cyBjaGFuZ2VkLCA2MTUgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdGltZWxpbmUuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3RpbWVsaW5lLmMKaW5kZXggNjhlNWY2OTJkMjYuLmRmMTYx ZGNjMGQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90aW1lbGlu ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3RpbWVsaW5lLmMKQEAgLTQy LDYgKzQyLDggQEAKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2Zk LmgiCiAjaW5jbHVkZSAidXRpbHMvd2FpdF9ldmVudC5oIgorI2luY2x1ZGUgInV0aWxzL2Zt Z3Jwcm90b3MuaCIKKyNpbmNsdWRlICJ1dGlscy91dWlkLmgiCiAKIC8qCiAgKiBDb3BpZXMg YWxsIHRpbWVsaW5lIGhpc3RvcnkgZmlsZXMgd2l0aCBpZCdzIGJldHdlZW4gJ2JlZ2luJyBh bmQgJ2VuZCcKQEAgLTExMCw4ICsxMTIsMTIgQEAgcmVhZFRpbWVMaW5lSGlzdG9yeShUaW1l TGluZUlEIHRhcmdldFRMSSkKIAkJCWVyZXBvcnQoRkFUQUwsCiAJCQkJCShlcnJjb2RlX2Zv cl9maWxlX2FjY2VzcygpLAogCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwi JXNcIjogJW0iLCBwYXRoKSkpOwotCQkvKiBOb3QgdGhlcmUsIHNvIGFzc3VtZSBubyBwYXJl bnRzICovCi0JCWVudHJ5ID0gcGFsbG9jX29iamVjdChUaW1lTGluZUhpc3RvcnlFbnRyeSk7 CisKKwkJLyoKKwkJICogTm90IHRoZXJlLCBzbyBhc3N1bWUgbm8gcGFyZW50cy4gV2UgdXNl IHBhbGxvYzBfb2JqZWN0IHRvIGVuc3VyZQorCQkgKiB0aGF0IHRsdXVpZCBpcyBhbGwtemVy by4KKwkJICovCisJCWVudHJ5ID0gcGFsbG9jMF9vYmplY3QoVGltZUxpbmVIaXN0b3J5RW50 cnkpOwogCQllbnRyeS0+dGxpID0gdGFyZ2V0VExJOwogCQllbnRyeS0+YmVnaW4gPSBlbnRy eS0+ZW5kID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJCXJldHVybiBsaXN0X21ha2UxKGVudHJ5 KTsKQEAgLTEyNSw2ICsxMzEsNyBAQCByZWFkVGltZUxpbmVIaXN0b3J5KFRpbWVMaW5lSUQg dGFyZ2V0VExJKQogCXByZXZlbmQgPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAlmb3IgKDs7KQog CXsKKwkJY2hhcgkJdXVpZF9zdHJbVVVJRF9TVFJfTEVOICsgMV0gPSB7MH07CiAJCWNoYXIJ CWZsaW5lW01BWFBHUEFUSF07CiAJCWNoYXIJICAgKnJlczsKIAkJY2hhcgkgICAqcHRyOwpA QCAtMTU1LDcgKzE2Miw4IEBAIHJlYWRUaW1lTGluZUhpc3RvcnkoVGltZUxpbmVJRCB0YXJn ZXRUTEkpCiAJCWlmICgqcHRyID09ICdcMCcgfHwgKnB0ciA9PSAnIycpCiAJCQljb250aW51 ZTsKIAotCQluZmllbGRzID0gc3NjYW5mKGZsaW5lLCAiJXVcdCVYLyUwOFgiLCAmdGxpLCAm c3dpdGNocG9pbnRfaGksICZzd2l0Y2hwb2ludF9sbyk7CisJCW5maWVsZHMgPQorCQkJc3Nj YW5mKGZsaW5lLCAiJXVcdCVYLyUwOFhcdCUzNnMiLCAmdGxpLCAmc3dpdGNocG9pbnRfaGks ICZzd2l0Y2hwb2ludF9sbywgdXVpZF9zdHIpOwogCiAJCWlmIChuZmllbGRzIDwgMSkKIAkJ ewpAQCAtMTY0LDcgKzE3Miw3IEBAIHJlYWRUaW1lTGluZUhpc3RvcnkoVGltZUxpbmVJRCB0 YXJnZXRUTEkpCiAJCQkJCShlcnJtc2coInN5bnRheCBlcnJvciBpbiBoaXN0b3J5IGZpbGU6 ICVzIiwgZmxpbmUpLAogCQkJCQkgZXJyaGludCgiRXhwZWN0ZWQgYSBudW1lcmljIHRpbWVs aW5lIElELiIpKSk7CiAJCX0KLQkJaWYgKG5maWVsZHMgIT0gMykKKwkJaWYgKG5maWVsZHMg PCAzKQogCQkJZXJlcG9ydChGQVRBTCwKIAkJCQkJKGVycm1zZygic3ludGF4IGVycm9yIGlu IGhpc3RvcnkgZmlsZTogJXMiLCBmbGluZSksCiAJCQkJCSBlcnJoaW50KCJFeHBlY3RlZCBh IHdyaXRlLWFoZWFkIGxvZyBzd2l0Y2hwb2ludCBsb2NhdGlvbi4iKSkpOwpAQCAtMTc2LDEy ICsxODQsNDUgQEAgcmVhZFRpbWVMaW5lSGlzdG9yeShUaW1lTGluZUlEIHRhcmdldFRMSSkK IAogCQlsYXN0dGxpID0gdGxpOwogCi0JCWVudHJ5ID0gcGFsbG9jX29iamVjdChUaW1lTGlu ZUhpc3RvcnlFbnRyeSk7CisJCS8qCisJCSAqIFdlIHVzZSBwYWxsb2MwX29iamVjdCB0byBl bnN1cmUgdGhhdCB0bHV1aWQgaXMgYWxsLXplcm8sIHdoaWNoIGlzCisJCSAqIGltcG9ydGFu dCBmb3IgcGdfcmV3aW5kIHRvIGRldGVjdCB3aGV0aGVyIHRoZSBoaXN0b3J5IGZpbGUgaXMK KwkJICogbWlzc2luZyBvciBub3QuCisJCSAqLworCQllbnRyeSA9IHBhbGxvYzBfb2JqZWN0 KFRpbWVMaW5lSGlzdG9yeUVudHJ5KTsKIAkJZW50cnktPnRsaSA9IHRsaTsKIAkJZW50cnkt PmJlZ2luID0gcHJldmVuZDsKIAkJZW50cnktPmVuZCA9ICgodWludDY0KSAoc3dpdGNocG9p bnRfaGkpKSA8PCAzMiB8ICh1aW50NjQpIHN3aXRjaHBvaW50X2xvOwogCQlwcmV2ZW5kID0g ZW50cnktPmVuZDsKIAorCQkvKgorCQkgKiBQYXJzZSB0aGUgb3B0aW9uYWwgVVVJRCBmaWVs ZC4gT2xkIGhpc3RvcnkgZmlsZXMgaGF2ZSB0aGUgcmVhc29uCisJCSAqIHN0cmluZyBpbiBm aWVsZCA0LiBJdCBpcyBpbiB0aGVvcnkgcG9zc2libGUgdGhhdCB0aGUgcmVhc29uIHN0cmlu ZworCQkgKiBzdGFydHMgd2l0aCBhIFVVSUQsIGJ1dCB0aGUgY3VycmVudCB1c2FnZSBkbyBu b3Qgc3RvcmUgYSBVVUlELiBUaGlzCisJCSAqIGFsbG93cyB1cyB0byBzdXBwb3J0IGJvdGgg b2xkIGFuZCBuZXcgZm9ybWF0cyBvZiBoaXN0b3J5IGZpbGVzCisJCSAqIHdpdGhvdXQgYnJl YWtpbmcgY29tcGF0aWJpbGl0eSBieSBjaGVja2luZyBpZiB0aGUgZmllbGQgY29udGFpbnMg YQorCQkgKiB2YWxpZCBVVUlELgorCQkgKi8KKwkJaWYgKG5maWVsZHMgPT0gNCAmJiBzdHJs ZW4odXVpZF9zdHIpID09IFVVSURfU1RSX0xFTikKKwkJeworCQkJUEdfVFJZKCk7CisJCQl7 CisJCQkJRGF0dW0JCWRhdHVtID0gRGlyZWN0RnVuY3Rpb25DYWxsMSh1dWlkX2luLCBDU3Ry aW5nR2V0RGF0dW0odXVpZF9zdHIpKTsKKworCQkJCW1lbWNweSgmZW50cnktPnRsdXVpZCwg RGF0dW1HZXRVVUlEUChkYXR1bSksIHNpemVvZihwZ191dWlkX3QpKTsKKwkJCX0KKwkJCVBH X0NBVENIKCk7CisJCQl7CisJCQkJRXJyb3JEYXRhICAqZWRhdGEgPSBDb3B5RXJyb3JEYXRh KCk7CisKKwkJCQlGbHVzaEVycm9yU3RhdGUoKTsKKwkJCQllcmVwb3J0KEZBVEFMLAorCQkJ CQkJZXJybXNnKCJpbnZhbGlkIFVVSUQgaW4gaGlzdG9yeSBmaWxlIFwiJXNcIiIsIHBhdGgp LAorCQkJCQkJZXJyZGV0YWlsKCIlcyIsIGVkYXRhLT5tZXNzYWdlKSk7CisJCQl9CisJCQlQ R19FTkRfVFJZKCk7CisJCX0KKwogCQkvKiBCdWlsZCBsaXN0IHdpdGggbmV3ZXN0IGl0ZW0g Zmlyc3QgKi8KIAkJcmVzdWx0ID0gbGNvbnMoZW50cnksIHJlc3VsdCk7CiAKQEAgLTE5Nyw5 ICsyMzgsMTEgQEAgcmVhZFRpbWVMaW5lSGlzdG9yeShUaW1lTGluZUlEIHRhcmdldFRMSSkK IAogCS8qCiAJICogQ3JlYXRlIG9uZSBtb3JlIGVudHJ5IGZvciB0aGUgInRpcCIgb2YgdGhl IHRpbWVsaW5lLCB3aGljaCBoYXMgbm8gZW50cnkKLQkgKiBpbiB0aGUgaGlzdG9yeSBmaWxl LgorCSAqIGluIHRoZSBoaXN0b3J5IGZpbGUuIFdlIHVzZSBwYWxsb2MwX29iamVjdCB0byBl bnN1cmUgdGhhdCB0bHV1aWQgaXMKKwkgKiBhbGwtemVybywgd2hpY2ggaXMgaW1wb3J0YW50 IGZvciBwZ19yZXdpbmQgdG8gZGV0ZWN0IHdoZXRoZXIgdGhlCisJICogaGlzdG9yeSBmaWxl IGlzIG1pc3Npbmcgb3Igbm90LgogCSAqLwotCWVudHJ5ID0gcGFsbG9jX29iamVjdChUaW1l TGluZUhpc3RvcnlFbnRyeSk7CisJZW50cnkgPSBwYWxsb2MwX29iamVjdChUaW1lTGluZUhp c3RvcnlFbnRyeSk7CiAJZW50cnktPnRsaSA9IHRhcmdldFRMSTsKIAllbnRyeS0+YmVnaW4g PSBwcmV2ZW5kOwogCWVudHJ5LT5lbmQgPSBJbnZhbGlkWExvZ1JlY1B0cjsKQEAgLTI5NCwy MSArMzM3LDMzIEBAIGZpbmROZXdlc3RUaW1lTGluZShUaW1lTGluZUlEIHN0YXJ0VExJKQog ICoKICAqCW5ld1RMSTogSUQgb2YgdGhlIG5ldyB0aW1lbGluZQogICoJcGFyZW50VExJOiBJ RCBvZiBpdHMgaW1tZWRpYXRlIHBhcmVudAorICoJbmV3VExVVUlEOiBVVUlEIHVuaXF1ZWx5 IGlkZW50aWZ5aW5nIHRoaXMgcHJvbW90aW9uIGluc3RhbmNlCiAgKglzd2l0Y2hwb2ludDog V0FMIGxvY2F0aW9uIHdoZXJlIHRoZSBzeXN0ZW0gc3dpdGNoZWQgdG8gdGhlIG5ldyB0aW1l bGluZQogICoJcmVhc29uOiBodW1hbi1yZWFkYWJsZSBleHBsYW5hdGlvbiBvZiB3aHkgdGhl IHRpbWVsaW5lIHdhcyBzd2l0Y2hlZAogICoKLSAqIEN1cnJlbnRseSB0aGlzIGlzIG9ubHkg dXNlZCBhdCB0aGUgZW5kIHJlY292ZXJ5LCBhbmQgc28gdGhlcmUgYXJlIG5vIGxvY2tpbmcK KyAqIFRoZSBvdXRwdXQgZmlsZSBpcyBuYW1lZCA8bmV3VExJPi5oaXN0b3J5IChlLmcuIDAw MDAwMDAzLmhpc3RvcnkpLiAgSWYgdHdvCisgKiBzZXJ2ZXJzIGluZGVwZW5kZW50bHkgcHJv bW90ZSB0byB0aGUgc2FtZSB0aW1lbGluZSBJRCwgdGhlaXIgaGlzdG9yeSBmaWxlcworICog c2hhcmUgdGhlIHNhbWUgbmFtZS4gSW4gYSBzaGFyZWQgV0FMIGFyY2hpdmUgdGhlIHNlY29u ZCBmaWxlIHRvIGFycml2ZQorICogc2lsZW50bHkgb3ZlcndyaXRlcyB0aGUgZmlyc3QuICBU aGUgbmV3VExVVUlEIHdyaXR0ZW4gaW50byB0aGUgZmlsZSBjb250ZW50CisgKiBsZXRzIHBn X3Jld2luZCBkZXRlY3QgdGhpcyBjb2xsaXNpb246IGl0IGZldGNoZXMgZWFjaCBzZXJ2ZXIn cyBoaXN0b3J5IGZpbGUKKyAqIGRpcmVjdGx5IGZyb20gdGhhdCBzZXJ2ZXIsIGNvbXBhcmVz IHRoZSBVVUlEcyBmb3IgZXZlcnkgc2hhcmVkIFRMSSwgYW5kCisgKiB0cmVhdHMgYSBVVUlE IG1pc21hdGNoIGFzIGV2aWRlbmNlIG9mIGluZGVwZW5kZW50IHByb21vdGlvbiBldmVuIHdo ZW4gdGhlCisgKiBUTEkgbnVtYmVycyBhZ3JlZS4KKyAqCisgKiBDdXJyZW50bHkgdGhpcyBp cyBvbmx5IHVzZWQgYXQgZW5kIG9mIHJlY292ZXJ5LCBhbmQgc28gdGhlcmUgYXJlIG5vIGxv Y2tpbmcKICAqIGNvbnNpZGVyYXRpb25zLiAgQnV0IHdlIHNob3VsZCBiZSBqdXN0IGFzIHRl bnNlIGFzIFhMb2dGaWxlSW5pdCB0byBhdm9pZAogICogZW1wbGFjaW5nIGEgYm9ndXMgZmls ZS4KICAqLwogdm9pZAogd3JpdGVUaW1lTGluZUhpc3RvcnkoVGltZUxpbmVJRCBuZXdUTEks IFRpbWVMaW5lSUQgcGFyZW50VExJLAorCQkJCQkgY29uc3QgcGdfdXVpZF90ICpuZXdUTFVV SUQsCiAJCQkJCSBYTG9nUmVjUHRyIHN3aXRjaHBvaW50LCBjaGFyICpyZWFzb24pCiB7CiAJ Y2hhcgkJcGF0aFtNQVhQR1BBVEhdOwogCWNoYXIJCXRtcHBhdGhbTUFYUEdQQVRIXTsKIAlj aGFyCQloaXN0Zm5hbWVbTUFYRk5BTUVMRU5dOwogCWNoYXIJCWJ1ZmZlcltCTENLU1pdOwor CWNoYXIJICAgKnV1aWRfc3RyOwogCWludAkJCXNyY2ZkOwogCWludAkJCWZkOwogCWludAkJ CW5ieXRlczsKQEAgLTM5OCwxMyArNDUzLDE5IEBAIHdyaXRlVGltZUxpbmVIaXN0b3J5KFRp bWVMaW5lSUQgbmV3VExJLCBUaW1lTGluZUlEIHBhcmVudFRMSSwKIAkgKgogCSAqIElmIHdl IGRpZCBoYXZlIGEgcGFyZW50IGZpbGUsIGluc2VydCBhbiBleHRyYSBuZXdsaW5lIGp1c3Qg aW4gY2FzZSB0aGUKIAkgKiBwYXJlbnQgZmlsZSBmYWlsZWQgdG8gZW5kIHdpdGggb25lLgor CSAqCisJICogRm9ybWF0OiA8cGFyZW50VExJPlx0PHN3aXRjaHBvaW50Plx0PFRoaXNUaW1l TGluZVVVSUQ+XHQ8cmVhc29uPlxuCiAJICovCisJdXVpZF9zdHIgPSBEYXR1bUdldENTdHJp bmcoRGlyZWN0RnVuY3Rpb25DYWxsMSh1dWlkX291dCwgVVVJRFBHZXREYXR1bShuZXdUTFVV SUQpKSk7CisKIAlzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLAotCQkJICIlcyV1 XHQlWC8lMDhYXHQlc1xuIiwKKwkJCSAiJXMldVx0JVgvJTA4WFx0JXNcdCVzXG4iLAogCQkJ IChzcmNmZCA8IDApID8gIiIgOiAiXG4iLAogCQkJIHBhcmVudFRMSSwKIAkJCSBMU05fRk9S TUFUX0FSR1Moc3dpdGNocG9pbnQpLAorCQkJIHV1aWRfc3RyLAogCQkJIHJlYXNvbik7CisJ cGZyZWUodXVpZF9zdHIpOwogCiAJbmJ5dGVzID0gc3RybGVuKGJ1ZmZlcik7CiAJZXJybm8g PSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmluZGV4IGJlZGRjYjU1MmQ2Li44 NzQ4NmVjNmExYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxv Zy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtOTksNiAr OTksNyBAQAogI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInN0 b3JhZ2Uvc3luYy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Y19ob29rcy5oIgorI2luY2x1ZGUg InV0aWxzL3V1aWQuaCIKICNpbmNsdWRlICJ1dGlscy9ndWNfdGFibGVzLmgiCiAjaW5jbHVk ZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAjaW5jbHVkZSAidXRpbHMvcGdzdGF0X2lu dGVybmFsLmgiCkBAIC02Mzc4LDYgKzYzNzksOSBAQCBTdGFydHVwWExPRyh2b2lkKQogCW5l d1RMSSA9IGVuZE9mUmVjb3ZlcnlJbmZvLT5sYXN0UmVjVExJOwogCWlmIChBcmNoaXZlUmVj b3ZlcnlSZXF1ZXN0ZWQpCiAJeworCQlzdHJ1Y3QgdGltZXZhbCB0djsKKwkJcGdfdXVpZF90 CXV1aWRfYnVmOworCiAJCW5ld1RMSSA9IGZpbmROZXdlc3RUaW1lTGluZShyZWNvdmVyeVRh cmdldFRMSSkgKyAxOwogCQllcmVwb3J0KExPRywKIAkJCQkoZXJybXNnKCJzZWxlY3RlZCBu ZXcgdGltZWxpbmUgSUQ6ICV1IiwgbmV3VExJKSkpOwpAQCAtNjQwOCw4ICs2NDEyLDE5IEBA IFN0YXJ0dXBYTE9HKHZvaWQpCiAJCSAqIHRvIHRoZSBuZXcgdGltZWxpbmUsIGFuZCB3aWxs IHRyeSB0byBjb25uZWN0IHRvIHRoZSBuZXcgdGltZWxpbmUuCiAJCSAqIFRvIG1pbmltaXpl IHRoZSB3aW5kb3cgZm9yIHRoYXQsIHRyeSB0byBkbyBhcyBsaXR0bGUgYXMgcG9zc2libGUK IAkJICogYmV0d2VlbiBoZXJlIGFuZCB3cml0aW5nIHRoZSBlbmQtb2YtcmVjb3ZlcnkgcmVj b3JkLgorCQkgKgorCQkgKiBHZW5lcmF0ZSBhIFVVSUR2NyB0aGF0IHVuaXF1ZWx5IGlkZW50 aWZpZXMgdGhpcyBwcm9tb3Rpb24uICBUaGUKKwkJICogc2FtZSBVVUlEIGlzIHdyaXR0ZW4g aW50byB0aGUgaGlzdG9yeSBmaWxlIHNvIHRoYXQgcGdfcmV3aW5kIGNhbgorCQkgKiBkaXN0 aW5ndWlzaCB0d28gc2VydmVycyB0aGF0IGluZGVwZW5kZW50bHkgcHJvbW90ZWQgdG8gdGhl IHNhbWUKKwkJICogdGltZWxpbmUgSUQuICBVc2UgZ2V0dGltZW9mZGF5KCkgc2luY2Ugd2Ug YXJlIG5vdCBvbiBhIGhvdCBwYXRoOworCQkgKiBnZW5lcmF0ZV91dWlkdjcgd2FudHMgbWls bGlzZWNvbmRzIGFuZCB3ZSBwYXNzIDAgZm9yIHN1Yi1tcyBzaW5jZQorCQkgKiB0aGUgcmFu ZG9tIGJpdHMgYWxyZWFkeSBkaXN0aW5ndWlzaCBVVUlEcyBnZW5lcmF0ZWQgd2l0aGluIHRo ZSBzYW1lCisJCSAqIG1pbGxpc2Vjb25kLgogCQkgKi8KKwkJZ2V0dGltZW9mZGF5KCZ0diwg TlVMTCk7CisJCWdlbmVyYXRlX3V1aWR2N19yKCZ1dWlkX2J1ZiwgdHYudHZfc2VjICogMTAw MCArIHR2LnR2X3VzZWMgLyAxMDAwLCAwKTsKIAkJd3JpdGVUaW1lTGluZUhpc3RvcnkobmV3 VExJLCByZWNvdmVyeVRhcmdldFRMSSwKKwkJCQkJCQkgJnV1aWRfYnVmLAogCQkJCQkJCSBF bmRPZkxvZywgZW5kT2ZSZWNvdmVyeUluZm8tPnJlY292ZXJ5U3RvcFJlYXNvbik7CiAKIAkJ ZXJlcG9ydChMT0csCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdXVpZC5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3V1aWQuYwppbmRleCA2ZWUzNzUyYWM3OC4uZjFk YzAxOTZjZDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC91dWlkLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3V1aWQuYwpAQCAtNzIsNyArNzIsNyBAQCBzdGF0 aWMgYm9vbCB1dWlkX2FiYnJldl9hYm9ydChpbnQgbWVtdHVwY291bnQsIFNvcnRTdXBwb3J0 IHNzdXApOwogc3RhdGljIERhdHVtIHV1aWRfYWJicmV2X2NvbnZlcnQoRGF0dW0gb3JpZ2lu YWwsIFNvcnRTdXBwb3J0IHNzdXApOwogc3RhdGljIGlubGluZSB2b2lkIHV1aWRfc2V0X3Zl cnNpb24ocGdfdXVpZF90ICp1dWlkLCB1bnNpZ25lZCBjaGFyIHZlcnNpb24pOwogc3RhdGlj IGlubGluZSBpbnQ2NCBnZXRfcmVhbF90aW1lX25zX2FzY2VuZGluZyh2b2lkKTsKLXN0YXRp YyBwZ191dWlkX3QgKmdlbmVyYXRlX3V1aWR2Nyh1aW50NjQgdW5peF90c19tcywgdWludDMy IHN1Yl9tcyk7CitwZ191dWlkX3QgICpnZW5lcmF0ZV91dWlkdjcodWludDY0IHVuaXhfdHNf bXMsIHVpbnQzMiBzdWJfbXMpOwogCiBEYXR1bQogdXVpZF9pbihQR19GVU5DVElPTl9BUkdT KQpAQCAtNTgxLDYgKzU4MSwxNCBAQCBnZXRfcmVhbF90aW1lX25zX2FzY2VuZGluZyh2b2lk KQogCXJldHVybiBuczsKIH0KIAorcGdfdXVpZF90ICoKK2dlbmVyYXRlX3V1aWR2Nyh1aW50 NjQgdW5peF90c19tcywgdWludDMyIHN1Yl9tcykKK3sKKwlwZ191dWlkX3QgICp1dWlkID0g cGFsbG9jKFVVSURfTEVOKTsKKworCXJldHVybiBnZW5lcmF0ZV91dWlkdjdfcih1dWlkLCB1 bml4X3RzX21zLCBzdWJfbXMpOworfQorCiAvKgogICogR2VuZXJhdGUgVVVJRCB2ZXJzaW9u IDcgcGVyIFJGQyA5NTYyLCB3aXRoIHRoZSBnaXZlbiB0aW1lc3RhbXAuCiAgKgpAQCAtNTk3 LDEwICs2MDUsOSBAQCBnZXRfcmVhbF90aW1lX25zX2FzY2VuZGluZyh2b2lkKQogICoKICAq IE5COiBhbGwgbnVtYmVycyBoZXJlIGFyZSB1bnNpZ25lZCwgdW5peF90c19tcyBjYW5ub3Qg YmUgbmVnYXRpdmUgcGVyIFJGQy4KICAqLwotc3RhdGljIHBnX3V1aWRfdCAqCi1nZW5lcmF0 ZV91dWlkdjcodWludDY0IHVuaXhfdHNfbXMsIHVpbnQzMiBzdWJfbXMpCitwZ191dWlkX3Qg KgorZ2VuZXJhdGVfdXVpZHY3X3IocGdfdXVpZF90ICp1dWlkLCB1aW50NjQgdW5peF90c19t cywgdWludDMyIHN1Yl9tcykKIHsKLQlwZ191dWlkX3QgICp1dWlkID0gcGFsbG9jKFVVSURf TEVOKTsKIAl1aW50MzIJCWluY3JlYXNlZF9jbG9ja19wcmVjaXNpb247CiAKIAkvKiBGaWxs IGluIHRpbWUgcGFydCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXdpbmQvcGdfcmV3 aW5kLmMgYi9zcmMvYmluL3BnX3Jld2luZC9wZ19yZXdpbmQuYwppbmRleCA5ZDc0NWQ0YjI1 Yi4uZGU1Yjc3MTE3ZDYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfcmV3aW5kL3BnX3Jld2lu ZC5jCisrKyBiL3NyYy9iaW4vcGdfcmV3aW5kL3BnX3Jld2luZC5jCkBAIC0zMiw2ICszMiwx OSBAQAogI2luY2x1ZGUgInJld2luZF9zb3VyY2UuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1 ZnBhZ2UuaCIKIAorLyoKKyAqIFRpbWVsaW5lIGhpc3RvcmllcyBmb3IgYm90aCBjbHVzdGVy cywgcG9wdWxhdGVkIGJ5IG1hdGNoQW5kRmV0Y2hUaW1lbGluZXMoKS4KKyAqLwordHlwZWRl ZiBzdHJ1Y3QgVGltZUxpbmVIaXN0b3JpZXNEYXRhCit7CisJVGltZUxpbmVIaXN0b3J5RW50 cnkgKnNvdXJjZSwKKwkJCSAgICp0YXJnZXQ7CisJaW50CQkJc291cmNlTmVudHJpZXMsCisJ CQkJdGFyZ2V0TmVudHJpZXM7Cit9CQkJVGltZUxpbmVIaXN0b3JpZXNEYXRhOworCit0eXBl ZGVmIFRpbWVMaW5lSGlzdG9yaWVzRGF0YSAqVGltZUxpbmVIaXN0b3JpZXM7CisKIHN0YXRp YyB2b2lkIHVzYWdlKGNvbnN0IGNoYXIgKnByb2duYW1lKTsKIAogc3RhdGljIHZvaWQgcGVy Zm9ybV9yZXdpbmQoZmlsZW1hcF90ICpmaWxlbWFwLCByZXdpbmRfc291cmNlICpzb3VyY2Us CkBAIC01Myw2ICs2Niw5IEBAIHN0YXRpYyB2b2lkIGZpbmRDb21tb25BbmNlc3RvclRpbWVs aW5lKFRpbWVMaW5lSGlzdG9yeUVudHJ5ICphX2hpc3RvcnksCiAJCQkJCQkJCQkgICBUaW1l TGluZUhpc3RvcnlFbnRyeSAqYl9oaXN0b3J5LAogCQkJCQkJCQkJICAgaW50IGJfbmVudHJp ZXMsCiAJCQkJCQkJCQkgICBYTG9nUmVjUHRyICpyZWNwdHIsIGludCAqdGxpSW5kZXgpOwor c3RhdGljIGlubGluZSBib29sIG1hdGNoaW5nVGltZWxpbmVVVUlEKFRpbWVMaW5lSGlzdG9y eUVudHJ5ICphLCBUaW1lTGluZUhpc3RvcnlFbnRyeSAqYik7CitzdGF0aWMgYm9vbCBtYXRj aEFuZEZldGNoVGltZWxpbmVzKFRpbWVMaW5lSUQgc291cmNlX3RsaSwgVGltZUxpbmVJRCB0 YXJnZXRfdGxpLAorCQkJCQkJCQkgICBUaW1lTGluZUhpc3RvcmllcyB0aW1lbGluZUhpc3Rv cmllcyk7CiBzdGF0aWMgdm9pZCBlbnN1cmVDbGVhblNodXRkb3duKGNvbnN0IGNoYXIgKmFy Z3YwKTsKIHN0YXRpYyB2b2lkIGRpc2Nvbm5lY3RfYXRleGl0KHZvaWQpOwogCkBAIC0xNDEs NiArMTU3LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJaW50CQkJYzsKIAlY TG9nUmVjUHRyCWRpdmVyZ2VyZWM7CiAJaW50CQkJbGFzdGNvbW1vbnRsaUluZGV4OworCVRp bWVMaW5lSGlzdG9yaWVzRGF0YSB0aW1lbGluZUhpc3RvcmllczsKIAlYTG9nUmVjUHRyCWNo a3B0cmVjOwogCVRpbWVMaW5lSUQJY2hrcHR0bGk7CiAJWExvZ1JlY1B0cgljaGtwdHJlZG87 CkBAIC0zNzIsMTAgKzM4OSwyMSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkg KgogCSAqIElmIGJvdGggY2x1c3RlcnMgYXJlIGFscmVhZHkgb24gdGhlIHNhbWUgdGltZWxp bmUsIHRoZXJlJ3Mgbm90aGluZyB0bwogCSAqIGRvLgorCSAqCisJICogVGhpcyBhbHNvIGhh bmRsZXMgdGhlIGNhc2Ugd2hlbiB0d28gc2VydmVycyBpbmRlcGVuZGVudGx5IHByb21vdGVk IHRvCisJICogdGhlIHNhbWUgdGltZWxpbmUgSUQ6IG9uZSBjcmFzaGVkIGFmdGVyIHdyaXRp bmcgdGhlIGhpc3RvcnkgZmlsZSBidXQKKwkgKiBiZWZvcmUgaXRzIEVPUiBXQUwgcmVjb3Jk IHdhcyBkaXN0cmlidXRlZCwgc28gYSBzZWNvbmQgc3RhbmRieSBwcm9tb3RlZAorCSAqIGlu ZGVwZW5kZW50bHkuICBUaGUgaGlzdG9yeSBmaWxlcyBwcm9kdWNlZCBieSB0aG9zZSB0d28g cHJvbW90aW9ucworCSAqIGNhcnJ5IGRpZmZlcmVudCBVVUlEcy4KKwkgKgorCSAqIFdoZW4g dGhlIGNsdXN0ZXJzIGFyZSBvbiBkaWZmZXJlbnQgdGltZWxpbmVzIHdlIGxvY2F0ZSB0aGUg Zm9yayBwb2ludAorCSAqIHZpYSBmaW5kQ29tbW9uQW5jZXN0b3JUaW1lbGluZS4KIAkgKi8K LQlpZiAodGFyZ2V0X3RsaSA9PSBzb3VyY2VfdGxpKQorCWlmIChtYXRjaEFuZEZldGNoVGlt ZWxpbmVzKHNvdXJjZV90bGksIHRhcmdldF90bGksICZ0aW1lbGluZUhpc3RvcmllcykpCiAJ ewogCQlwZ19sb2dfaW5mbygic291cmNlIGFuZCB0YXJnZXQgY2x1c3RlciBhcmUgb24gdGhl IHNhbWUgdGltZWxpbmUiKTsKKwkJcGZyZWUodGltZWxpbmVIaXN0b3JpZXMuc291cmNlKTsK KwkJcGZyZWUodGltZWxpbmVIaXN0b3JpZXMudGFyZ2V0KTsKIAkJcmV3aW5kX25lZWRlZCA9 IGZhbHNlOwogCQl0YXJnZXRfd2FsX2VuZHJlYyA9IEludmFsaWRYTG9nUmVjUHRyOwogCX0K QEAgLTM4OSw4ICs0MTcsMTAgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCSAq IFJldHJpZXZlIHRpbWVsaW5lcyBmb3IgYm90aCBzb3VyY2UgYW5kIHRhcmdldCwgYW5kIGZp bmQgdGhlIHBvaW50CiAJCSAqIHdoZXJlIHRoZXkgZGl2ZXJnZWQuCiAJCSAqLwotCQlzb3Vy Y2VIaXN0b3J5ID0gZ2V0VGltZWxpbmVIaXN0b3J5KHNvdXJjZV90bGksIHRydWUsICZzb3Vy Y2VOZW50cmllcyk7Ci0JCXRhcmdldEhpc3RvcnkgPSBnZXRUaW1lbGluZUhpc3RvcnkodGFy Z2V0X3RsaSwgZmFsc2UsICZ0YXJnZXROZW50cmllcyk7CisJCXRhcmdldEhpc3RvcnkgPSB0 aW1lbGluZUhpc3Rvcmllcy50YXJnZXQ7CisJCXRhcmdldE5lbnRyaWVzID0gdGltZWxpbmVI aXN0b3JpZXMudGFyZ2V0TmVudHJpZXM7CisJCXNvdXJjZUhpc3RvcnkgPSB0aW1lbGluZUhp c3Rvcmllcy5zb3VyY2U7CisJCXNvdXJjZU5lbnRyaWVzID0gdGltZWxpbmVIaXN0b3JpZXMu c291cmNlTmVudHJpZXM7CiAKIAkJZmluZENvbW1vbkFuY2VzdG9yVGltZWxpbmUoc291cmNl SGlzdG9yeSwgc291cmNlTmVudHJpZXMsCiAJCQkJCQkJCSAgIHRhcmdldEhpc3RvcnksIHRh cmdldE5lbnRyaWVzLApAQCAtODc0LDcgKzkwNCw3IEBAIGdldFRpbWVsaW5lSGlzdG9yeShU aW1lTGluZUlEIHRsaSwgYm9vbCBpc19zb3VyY2UsIGludCAqbmVudHJpZXMpCiAJICovCiAJ aWYgKHRsaSA9PSAxKQogCXsKLQkJaGlzdG9yeSA9IHBnX21hbGxvY19vYmplY3QoVGltZUxp bmVIaXN0b3J5RW50cnkpOworCQloaXN0b3J5ID0gcGdfbWFsbG9jMF9vYmplY3QoVGltZUxp bmVIaXN0b3J5RW50cnkpOwogCQloaXN0b3J5LT50bGkgPSB0bGk7CiAJCWhpc3RvcnktPmJl Z2luID0gaGlzdG9yeS0+ZW5kID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJCSpuZW50cmllcyA9 IDE7CkBAIC05MjAsNiArOTUwLDU2IEBAIGdldFRpbWVsaW5lSGlzdG9yeShUaW1lTGluZUlE IHRsaSwgYm9vbCBpc19zb3VyY2UsIGludCAqbmVudHJpZXMpCiAJcmV0dXJuIGhpc3Rvcnk7 CiB9CiAKKy8qCisgKiBSZXR1cm4gdHJ1ZSBpZiB0d28gcGVyLWVudHJ5IHByb21vdGlvbiBV VUlEcyBhcmUgY29tcGF0aWJsZS4KKyAqCisgKiBBIHplcm8gVVVJRCBtZWFucyB0aGUgaGlz dG9yeSBmaWxlIHByZWRhdGVzIHRoaXMgZml4IChvciB0aGUgZW50cnkgaXMKKyAqIHN5bnRo ZXRpYykuICBJZiBib3RoIHNpZGVzIGFyZSB6ZXJvIHdlIGhhdmUgbm8gVVVJRCBpbmZvcm1h dGlvbiBhbmQgZmFsbAorICogYmFjayB0byBUTEktbnVtYmVyLW9ubHkgbWF0Y2hpbmcgKGJh Y2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgc2VydmVycykuCisgKiBJZiBvbmUgc2lk ZSBjYXJyaWVzIGEgVVVJRCBhbmQgdGhlIG90aGVyIGRvZXMgbm90LCB0aGV5IGNhbm5vdCBv cmlnaW5hdGUKKyAqIGZyb20gdGhlIHNhbWUgcHJvbW90aW9uIGFuZCBhcmUgdHJlYXRlZCBh cyBpbmNvbXBhdGlibGUuCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorbWF0Y2hpbmdUaW1l bGluZVVVSUQoVGltZUxpbmVIaXN0b3J5RW50cnkgKmEsIFRpbWVMaW5lSGlzdG9yeUVudHJ5 ICpiKQoreworCXN0YXRpYyBjb25zdCBwZ191dWlkX3QgemVybyA9IHt7MH19OworCisJaWYg KG1lbWNtcCgmYS0+dGx1dWlkLCAmemVybywgVVVJRF9MRU4pID09IDAgJiYgbWVtY21wKCZi LT50bHV1aWQsICZ6ZXJvLCBVVUlEX0xFTikgPT0gMCkKKwkJcmV0dXJuIHRydWU7CisJcmV0 dXJuIG1lbWNtcCgmYS0+dGx1dWlkLCAmYi0+dGx1dWlkLCBVVUlEX0xFTikgPT0gMDsKK30K KworLyoKKyAqIEZldGNoIHRoZSB0aW1lbGluZSBoaXN0b3J5IGZvciBib3RoIGNsdXN0ZXJz LCBzdG9yZSB0aGVtIGluIHRsaCwgYW5kIHJldHVybgorICogdHJ1ZSBpZiB0aGUgY2x1c3Rl cnMgYXJlIG9uIHRoZSBzYW1lIHRpbWVsaW5lIChubyByZXdpbmQgbmVlZGVkKS4KKyAqCisg KiB0bGggaXMgYWx3YXlzIGZ1bGx5IHBvcHVsYXRlZCBvbiByZXR1cm4gcmVnYXJkbGVzcyBv ZiB0aGUgcmVzdWx0LCBzbyB0aGUKKyAqIGNhbGxlciBjYW4gcGFzcyB0bGgtPnNvdXJjZSAv IHRsaC0+dGFyZ2V0IGRpcmVjdGx5IHRvCisgKiBmaW5kQ29tbW9uQW5jZXN0b3JUaW1lbGlu ZSgpIHdoZW4gdGhlIHJldHVybiB2YWx1ZSBpcyBmYWxzZS4KKyAqCisgKiBUTEkgMSBhbHdh eXMgcmV0dXJucyB0cnVlOiBpdCBpcyB0aGUgb3JpZ2luYWwgdGltZWxpbmUgYW5kIGhhcyBu byBwcm9tb3Rpb24KKyAqIFVVSUQuICBGb3IgVExJID49IDIsIHRoZSBVVUlEIGluIGVudHJ5 W05lbnRyaWVzIC0gMl0gaWRlbnRpZmllcyB0aGUKKyAqIHByb21vdGlvbiB0aGF0IGNyZWF0 ZWQgdGhlIGN1cnJlbnQgVExJLiAgQm90aC16ZXJvIFVVSURzIChvbGQgaGlzdG9yeSBmaWxl cykKKyAqIGFyZSB0cmVhdGVkIGFzIGNvbXBhdGlibGU7IHplcm8tdnMtbm9uemVybyBpcyB0 cmVhdGVkIGFzIGEgbWlzbWF0Y2ggYmVjYXVzZQorICogb25lIHNpZGUgY2FycmllcyBhIHBy b21vdGlvbiBVVUlEIGFuZCB0aGV5IGNhbm5vdCBiZSB0aGUgc2FtZSBwcm9tb3Rpb24uCisg Ki8KK3N0YXRpYyBib29sCittYXRjaEFuZEZldGNoVGltZWxpbmVzKFRpbWVMaW5lSUQgc291 cmNlX3RsaSwgVGltZUxpbmVJRCB0YXJnZXRfdGxpLCBUaW1lTGluZUhpc3RvcmllcyB0bGgp Cit7CisJdGxoLT5zb3VyY2UgPSBnZXRUaW1lbGluZUhpc3Rvcnkoc291cmNlX3RsaSwgdHJ1 ZSwgJnRsaC0+c291cmNlTmVudHJpZXMpOworCXRsaC0+dGFyZ2V0ID0gZ2V0VGltZWxpbmVI aXN0b3J5KHRhcmdldF90bGksIGZhbHNlLCAmdGxoLT50YXJnZXROZW50cmllcyk7CisKKwlp ZiAoc291cmNlX3RsaSAhPSB0YXJnZXRfdGxpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBU TEkgMSBoYXMgbm8gcHJvbW90aW9uIFVVSUQ7IGFsd2F5cyB0cmVhdCBhcyB0aGUgc2FtZSB0 aW1lbGluZS4gKi8KKwlpZiAodGxoLT5zb3VyY2VOZW50cmllcyA8IDIgfHwgdGxoLT50YXJn ZXROZW50cmllcyA8IDIpCisJCXJldHVybiB0cnVlOworCisJcmV0dXJuIG1hdGNoaW5nVGlt ZWxpbmVVVUlEKCZ0bGgtPnNvdXJjZVt0bGgtPnNvdXJjZU5lbnRyaWVzIC0gMl0sCisJCQkJ CQkJCSZ0bGgtPnRhcmdldFt0bGgtPnRhcmdldE5lbnRyaWVzIC0gMl0pOworfQorCiAvKgog ICogRGV0ZXJtaW5lIHRoZSBUTEkgb2YgdGhlIGxhc3QgY29tbW9uIHRpbWVsaW5lIGluIHRo ZSB0aW1lbGluZSBoaXN0b3J5IG9mCiAgKiB0d28gY2x1c3RlcnMuICp0bGlJbmRleCBpcyBz ZXQgdG8gdGhlIGluZGV4IG9mIGxhc3QgY29tbW9uIHRpbWVsaW5lIGluCkBAIC05NDEsMTIg KzEwMjEsMjYgQEAgZmluZENvbW1vbkFuY2VzdG9yVGltZWxpbmUoVGltZUxpbmVIaXN0b3J5 RW50cnkgKmFfaGlzdG9yeSwgaW50IGFfbmVudHJpZXMsCiAJICogZGVwZW5kaW5nIG9uIHRo ZSBoaXN0b3J5IGZpbGVzIHRoYXQgZWFjaCBub2RlIGhhcyBmZXRjaGVkIGluIHByZXZpb3Vz CiAJICogcmVjb3ZlcnkgcHJvY2Vzc2VzLiBIZW5jZSBjaGVjayB0aGUgc3RhcnQgcG9zaXRp b24gb2YgdGhlIG5ldyB0aW1lbGluZQogCSAqIGFzIHdlbGwgYW5kIG1vdmUgZG93biBieSBv bmUgZXh0cmEgdGltZWxpbmUgZW50cnkgaWYgdGhleSBkbyBub3QgbWF0Y2guCisJICoKKwkg KiBXZSBhbHNvIGNvbXBhcmUgdGltZWxpbmUgVVVJRHMgd2hlbiBib3RoIHNpZGVzIGNhcnJ5 IG9uZS4gIFR3byBzZXJ2ZXJzCisJICogdGhhdCBpbmRlcGVuZGVudGx5IHByb21vdGVkIHRv IHRoZSBzYW1lIHRpbWVsaW5lIElEIHByb2R1Y2UgaGlzdG9yeQorCSAqIGZpbGVzIHdpdGgg dGhlIHNhbWUgbmFtZSAoZS5nLiAwMDAwMDAwMy5oaXN0b3J5KTsgaW4gYSBzaGFyZWQgV0FM CisJICogYXJjaGl2ZSB0aGUgc2Vjb25kIGZpbGUgc2lsZW50bHkgb3ZlcndyaXRlcyB0aGUg Zmlyc3QuICBwZ19yZXdpbmQKKwkgKiBmZXRjaGVzIGVhY2ggc2VydmVyJ3MgaGlzdG9yeSBm aWxlIGRpcmVjdGx5IGZyb20gdGhhdCBzZXJ2ZXIsIHNvIGl0CisJICogc2VlcyBib3RoIFVV SURzLgorCSAqCisJICogVGhlIHRpbWVsaW5lIFVVSUQgc3RvcmVkIGluIGhpc3RvcnkgZW50 cnlbaV0gaXMgdGhlIFVVSUQgb2YgdGhlCisJICogcHJvbW90aW9uIHRoYXQgY3JlYXRlZCBl bnRyeVtpKzFdLCBpLmUuIHRoZSBVVUlEIG9mIFRMSSBlbnRyeVtpKzFdLnRsaS4KKwkgKiBT byB0byBjaGVjayB3aGV0aGVyIGVudHJ5W2ldIGl0c2VsZiByZXByZXNlbnRzIHRoZSBzYW1l IHRpbWVsaW5lIG9uCisJICogYm90aCBzaWRlcyB3ZSBsb29rIGF0IGVudHJ5W2ktMV0udGx1 dWlkIChmb3IgaSA+IDApLiAgVExJIDEgKGkgPT0gMCkgaXMKKwkgKiBhbHdheXMgdGhlIHNh bWU6IGl0IGlzIHRoZSBvcmlnaW5hbCB0aW1lbGluZSBhbmQgaGFzIG5vIHByb21vdGlvbiBV VUlELgogCSAqLwogCW4gPSBNaW4oYV9uZW50cmllcywgYl9uZW50cmllcyk7CiAJZm9yIChp ID0gMDsgaSA8IG47IGkrKykKIAl7CiAJCWlmIChhX2hpc3RvcnlbaV0udGxpICE9IGJfaGlz dG9yeVtpXS50bGkgfHwKLQkJCWFfaGlzdG9yeVtpXS5iZWdpbiAhPSBiX2hpc3RvcnlbaV0u YmVnaW4pCisJCQlhX2hpc3RvcnlbaV0uYmVnaW4gIT0gYl9oaXN0b3J5W2ldLmJlZ2luIHx8 CisJCQkoaSA+IDAgJiYgIW1hdGNoaW5nVGltZWxpbmVVVUlEKCZhX2hpc3RvcnlbaSAtIDFd LCAmYl9oaXN0b3J5W2kgLSAxXSkpKQogCQkJYnJlYWs7CiAJfQogCmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX3Jld2luZC90LzAwNV9zYW1lX3RpbWVsaW5lLnBsIGIvc3JjL2Jpbi9wZ19y ZXdpbmQvdC8wMDVfc2FtZV90aW1lbGluZS5wbAppbmRleCA5NWE0MGMzYjI3MC4uMjM2MGMz ZGYxZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfcmV3aW5kL3QvMDA1X3NhbWVfdGltZWxp bmUucGwKKysrIGIvc3JjL2Jpbi9wZ19yZXdpbmQvdC8wMDVfc2FtZV90aW1lbGluZS5wbApA QCAtNyw2ICs3LDggQEAKICMKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4g J2FsbCc7Cit1c2UgRmlsZTo6Q29weTsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKQEAg LTIxLDQgKzIzLDM2NCBAQCBSZXdpbmRUZXN0OjpjcmVhdGVfc3RhbmRieSgpOwogUmV3aW5k VGVzdDo6cnVuX3BnX3Jld2luZCgnbG9jYWwnKTsKIFJld2luZFRlc3Q6OmNsZWFuX3Jld2lu ZF90ZXN0KCk7CiAKKyMgSGVscGVyIGZ1bmN0aW9uIHRvIHJ1biBwZ19yZXdpbmQgaW4gbG9j YWwgbW9kZSB3aXRoIHRoZSBnaXZlbiBzb3VyY2UgYW5kCisjIHRhcmdldCBub2RlcyBhbmQg ZXh0cmEgYXJndW1lbnRzLgorIworIyBUaGUgdGFyZ2V0IGFuZCBzb3VyY2Ugbm9kZXMgYXJl IHN0b3BwZWQgYmVmb3JlIHRoZSBjYWxsIGFuZCB0aGUgdGFyZ2V0IGlzCisjIHJlc3RhcnRl ZCBhZnRlcndhcmQuICBUaGUgdGFyZ2V0J3MgcG9zdGdyZXNxbC5jb25mIGlzIGNvcGllZCB0 byBhIHRlbXBvcmFyeQorIyBsb2NhdGlvbiBhbmQgcGFzc2VkIHRvIHBnX3Jld2luZCB3aXRo IC0tY29uZmlnLWZpbGUsIHNvIHRoYXQgcGdfcmV3aW5kIGNhbgorIyB1cGRhdGUgdGhlIHRh cmdldCdzIGNvbmZpZyBmaWxlIGluIHBsYWNlIHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgZmls ZQorIyBwZXJtaXNzaW9ucy4gIFRoZSB0ZW1wb3JhcnkgY29uZmlnIGZpbGUgaXMgbW92ZWQg YmFjayB0byB0aGUgdGFyZ2V0J3MgZGF0YQorIyBkaXJlY3RvcnkgYW5kIHBlcm1pc3Npb25z IGZpeGVkIGFmdGVyIHBnX3Jld2luZCBmaW5pc2hlcy4KK3N1YiByZXdpbmRfbm9kZQorewor CW15ICgkdGFyZ2V0LCAkc291cmNlLCAkbGFiZWwsIEBleHRyYV9hcmdzKSA9IEBfOworCSRz b3VyY2UtPnN0b3A7CisJJHRhcmdldC0+c3RvcDsKKworCW15ICR0cGdkYXRhID0gJHRhcmdl dC0+ZGF0YV9kaXI7CisJbXkgJHRtcCA9IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0ZW1w ZGlyOworCWNvcHkoIiR0cGdkYXRhL3Bvc3RncmVzcWwuY29uZiIsICIkdG1wL3RhcmdldC1w b3N0Z3Jlc3FsLmNvbmYudG1wIik7CisKKwljb21tYW5kX29rKAorCQlbCisJCQkncGdfcmV3 aW5kJywKKwkJCSctLWRlYnVnJywKKwkJCSctLXNvdXJjZS1wZ2RhdGEnID0+ICRzb3VyY2Ut PmRhdGFfZGlyLAorCQkJJy0tdGFyZ2V0LXBnZGF0YScgPT4gJHRhcmdldC0+ZGF0YV9kaXIs CisJCQknLS1uby1zeW5jJywKKwkJCSctLWNvbmZpZy1maWxlJyA9PiAiJHRtcC90YXJnZXQt cG9zdGdyZXNxbC5jb25mLnRtcCIsCisJCQlAZXh0cmFfYXJncywKKwkJXSwKKwkJJGxhYmVs KTsKKworCW1vdmUoIiR0bXAvdGFyZ2V0LXBvc3RncmVzcWwuY29uZi50bXAiLCAiJHRwZ2Rh dGEvcG9zdGdyZXNxbC5jb25mIik7CisJY2htb2QoJHRhcmdldC0+Z3JvdXBfYWNjZXNzKCkg PyAwNjQwIDogMDYwMCwgIiR0cGdkYXRhL3Bvc3RncmVzcWwuY29uZiIpCisJICBvciBCQUlM X09VVCgidW5hYmxlIHRvIHNldCBwZXJtaXNzaW9ucyBmb3IgJHRwZ2RhdGEvcG9zdGdyZXNx bC5jb25mIik7CisKKwkkdGFyZ2V0LT5zdGFydDsKK30KKworIyBSZXdyaXRlIGEgbm9kZSdz IFRMSSBoaXN0b3J5IGZpbGUgaW4gdGhlIG9sZCAzLWZpZWxkIGZvcm1hdCAobm8gVVVJRCks IHNvCisjIHRoYXQgcGdfcmV3aW5kIHNlZXMgYSB6ZXJvIFVVSUQgZm9yIHRoYXQgc2lkZSwg YXMgaWYgdGhlIG5vZGUgaGFkIGJlZW4KKyMgcHJvbW90ZWQgYnkgYSBzZXJ2ZXIgdGhhdCBw cmVkYXRlcyB0aGUgVVVJRCBmZWF0dXJlLgorc3ViIHN0cmlwX3RsaV91dWlkCit7CisJbXkg KCRub2RlLCAkdGxpKSA9IEBfOworCW15ICRoaXN0ZmlsZSA9IHNwcmludGYoIiVzL3BnX3dh bC8lMDhYLmhpc3RvcnkiLCAkbm9kZS0+ZGF0YV9kaXIsICR0bGkpOworCW9wZW4obXkgJGZo LCAnPCcsICRoaXN0ZmlsZSkgb3IgZGllICJjYW5ub3Qgb3BlbiAkaGlzdGZpbGU6ICQhIjsK KwlteSBAbGluZXMgPSA8JGZoPjsKKwljbG9zZSAkZmg7CisJb3BlbigkZmgsICc+JywgJGhp c3RmaWxlKSBvciBkaWUgImNhbm5vdCB3cml0ZSAkaGlzdGZpbGU6ICQhIjsKKwlmb3IgbXkg JGxpbmUgKEBsaW5lcykKKwl7CisJCWNob21wICRsaW5lOworCQlteSBAZiA9IHNwbGl0KC9c dC8sICRsaW5lLCA0KTsKKwkJaWYgKEBmID09IDQpCisJCXsKKwkJCSMgRHJvcCB0aGUgVVVJ RCBmaWVsZCAoaW5kZXggMik7IGtlZXAgcGFyZW50VExJLCBzd2l0Y2hwb2ludCwgcmVhc29u LgorCQkJcHJpbnQgJGZoIGpvaW4oIlx0IiwgJGZbMF0sICRmWzFdLCAkZlszXSkgLiAiXG4i OworCQl9CisJCWVsc2UKKwkJeworCQkJcHJpbnQgJGZoICIkbGluZVxuIjsKKwkJfQorCX0K KwljbG9zZSAkZmg7Cit9CisKKyMgSGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhbiBvcmln aW4gbm9kZSB3aXRoIGEgdGVzdCB0YWJsZSBhbmQgYSByb3cgY29udGFpbmluZworIyB0aGUg Z2l2ZW4gbGFiZWwuICBUaGUgbm9kZSBpcyBzdGFydGVkIGFuZCByZWFkeSBmb3IgdXNlIGFz IGEgc291cmNlIGZvcgorIyBzdGFuZGJ5cy4KK3N1YiBzZXR1cF9vcmlnaW4KK3sKKwlteSAo JGxhYmVsKSA9IEBfOworCW15ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCRsYWJlbCk7CisJJG5vZGUtPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAxKTsKKwkk bm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJ3YWxfa2VlcF9zaXplID0g MzIwTUJcbiIpOworCSRub2RlLT5zdGFydDsKKwkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJDUkVBVEUgVEFCTEUgdGJsICh2YWwgdGV4dCkiKTsKKwkkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0YmwgVkFMVUVTICgnJGxhYmVsJykiKTsKKwkk bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDSEVDS1BPSU5UJyk7CisJcmV0dXJuICRu b2RlOworfQorCisjIEhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgbXVsdGlwbGUgc3RhbmRi eSBub2RlcyBmcm9tIHRoZSBzYW1lIG9yaWdpbiBub2RlLgorIyBFYWNoIHN0YW5kYnkgZ2V0 cyBpdHMgb3duIGJhY2t1cCBhbmQgZGF0YSBkaXJlY3RvcnksIHNvIHRoYXQgdGhleSB3aWxs CisjIGdlbmVyYXRlIGluZGVwZW5kZW50IFVVSURzIG9uIHByb21vdGlvbiBldmVuIHRob3Vn aCB0aGV5IHNoYXJlIHRoZSBzYW1lCisjIHRpbWVsaW5lIGhpc3RvcnkgdXAgdG8gdGhlIHBv aW50IG9mIHByb21vdGlvbi4KK3N1YiBzZXR1cF9zdGFuZGJ5c19mcm9tX29yaWdpbgorewor CW15ICgkb3JpZ2luLCBAbmFtZXMpID0gQF87CisJbXkgQHN0YW5kYnlzOworCWZvciBteSAk bmFtZSAoQG5hbWVzKQorCXsKKwkJbXkgJHN0YW5kYnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyLT5uZXcoJG5hbWUpOworCQkkb3JpZ2luLT5iYWNrdXAoJHN0YW5kYnktPm5hbWUp OworCQkkc3RhbmRieS0+aW5pdF9mcm9tX2JhY2t1cCgkb3JpZ2luLCAkc3RhbmRieS0+bmFt ZSwKKwkJCWhhc19zdHJlYW1pbmcgPT4gMSk7CisJCSRzdGFuZGJ5LT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywgIndhbF9rZWVwX3NpemUgPSAzMjBNQlxuIik7CisJCSRzdGFu ZGJ5LT5zZXRfc3RhbmRieV9tb2RlKCk7CisJCSRzdGFuZGJ5LT5zdGFydDsKKwkJcHVzaCBA c3RhbmRieXMsICRzdGFuZGJ5OworCX0KKwlyZXR1cm4gQHN0YW5kYnlzOworfQorCisjIEhl bHBlciBmdW5jdGlvbiB0byB3YWl0IGZvciBtdWx0aXBsZSBzdGFuZGJ5IG5vZGVzIHRvIGNh dGNoIHVwIHRvIHRoZSBvcmlnaW4uCitzdWIgc3luY19zdGFuZGJ5c193aXRoX29yaWdpbgor eworCW15ICgkb3JpZ2luLCBAc3RhbmRieXMpID0gQF87CisJJG9yaWdpbi0+d2FpdF9mb3Jf Y2F0Y2h1cCgkXykgZm9yIEBzdGFuZGJ5czsKK30KKworIyBIZWxwZXIgZnVuY3Rpb24gdG8g aW5zZXJ0IGEgcm93IHdpdGggdGhlIGdpdmVuIGxhYmVsIGludG8gYSBub2RlJ3MgdGVzdCB0 YWJsZS4KK3N1YiB3cml0ZV9yZWNvcmQKK3sKKwlteSAoJG5vZGUsICRsYWJlbCkgPSBAXzsK Kwkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0YmwgVkFMVUVT ICgnJGxhYmVsJykiKTsKKwkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDSEVDS1BP SU5UJyk7Cit9CisKKyMgVGVzdCB0aGF0IHBnX3Jld2luZCBkZXRlY3RzIGFuZCBoYW5kbGVz IHR3byBzdGFuZGJ5cyB0aGF0IGluZGVwZW5kZW50bHkKKyMgcHJvbW90ZWQgdG8gdGhlIHNh bWUgdGltZWxpbmUgSUQuICBCZWZvcmUgdGhlIFVVSUQtYmFzZWQgZGl2ZXJnZW5jZSBjaGVj aywKKyMgcGdfcmV3aW5kJ3Mgc2FtZS1UTEkgc2hvcnRjdXQgd291bGQgaW5jb3JyZWN0bHkg c2tpcCB0aGUgcmV3aW5kIGluIHRoaXMKKyMgY2FzZSwgbGVhdmluZyB0aGUgdGFyZ2V0J3Mg ZGl2ZXJnZWQgV0FMIGludGFjdC4KKyMKKyMgICBvcmlnaW4gKFRMSSAxKQorIyAgICAgICB8 CisjICAgICAgICstLS0gbm9kZV9hIChUTEkgMSkgLS1wcm9tb3RlLS0+IFRMSSAyLCBVVUlE LUEgICh0YXJnZXQpCisjICAgICAgIHwKKyMgICAgICAgKy0tLSBub2RlX2IgKFRMSSAxKSAt LXByb21vdGUtLT4gVExJIDIsIFVVSUQtQiAgKHNvdXJjZSkKKyMKKyMgcGdfcmV3aW5kIG11 c3QgZGV0ZWN0IHRoZSBVVUlEIG1pc21hdGNoIGFuZCByZXdpbmQgbm9kZV9hIHRvIG1hdGNo IG5vZGVfYi4KKworbXkgJG5vZGVfb3JpZ2luID0gc2V0dXBfb3JpZ2luKCdvcmlnaW4nKTsK KworIyBDcmVhdGUgbm9kZV9hIGFuZCBub2RlX2IgZnJvbSBzZXBhcmF0ZSBiYWNrdXBzIG9m IG9yaWdpbiBzbyB0aGF0IGVhY2gKKyMgaGFzIGl0cyBvd24gZGF0YSBkaXJlY3RvcnkgYW5k IHdpbGwgZ2VuZXJhdGUgYW4gaW5kZXBlbmRlbnQgVVVJRCBvbiBwcm9tb3Rpb24uCitteSAo JG5vZGVfYSwgJG5vZGVfYikgPQorICBzZXR1cF9zdGFuZGJ5c19mcm9tX29yaWdpbigkbm9k ZV9vcmlnaW4sICdub2RlX2EnLCAnbm9kZV9iJyk7CisKKyMgV2FpdCBmb3IgYm90aCBzdGFu ZGJ5cyB0byBjYXRjaCB1cCB0byBvcmlnaW4sIHRoZW4gc3RvcCBvcmlnaW4uICBBZnRlcgor IyB0aGlzIHBvaW50IHRoZSB0d28gc3RhbmRieXMgYXJlIGlzb2xhdGVkIGFuZCB3aWxsIHBy b21vdGUgaW5kZXBlbmRlbnRseS4KK3N5bmNfc3RhbmRieXNfd2l0aF9vcmlnaW4oJG5vZGVf b3JpZ2luLCAkbm9kZV9hLCAkbm9kZV9iKTsKKyRub2RlX29yaWdpbi0+c3RvcDsKKworIyBQ cm9tb3RlIGJvdGggc3RhbmRieXMuICBFYWNoIGxhbmRzIG9uIFRMSSAyIGJ1dCBnZW5lcmF0 ZXMgYSBkaXN0aW5jdCBVVUlELAorIyBzbyB0aGUgcmVzdWx0aW5nIGNsdXN0ZXJzIGFyZSBk aXZlcmdlZCBldmVuIHRob3VnaCB0aGV5IHNoYXJlIGEgdGltZWxpbmUgSUQuCiskbm9kZV9h LT5wcm9tb3RlOworJG5vZGVfYi0+cHJvbW90ZTsKKworIyBJbnNlcnQgYSBkaXZlcmdlbnQg cm93IG9uIGVhY2ggc28gdGhlIHJld2luZCBoYXMgdmlzaWJsZSB3b3JrIHRvIGRvLgord3Jp dGVfcmVjb3JkKCRub2RlX2EsICdpbiBBJyk7Cit3cml0ZV9yZWNvcmQoJG5vZGVfYiwgJ2lu IEInKTsKKworcmV3aW5kX25vZGUoJG5vZGVfYSwgJG5vZGVfYiwKKwkncGdfcmV3aW5kIGRl dGVjdHMgaW5kZXBlbmRlbnQgc2FtZS1UTEkgcHJvbW90aW9ucycpOworCitteSAkcmVzdWx0 ID0KKyAgJG5vZGVfYS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgdmFsIEZST00g dGJsIE9SREVSIEJZIHZhbCIpOworaXMoJHJlc3VsdCwgImluIEJcbm9yaWdpbiIsCisJJ3Jl d291bmQgbm9kZSBoYXMgc291cmNlIGRhdGEsIG5vdCBpdHMgb3duIGRpdmVyZ2VudCBkYXRh Jyk7CisKKyRub2RlX2EtPnRlYXJkb3duX25vZGU7Ciskbm9kZV9iLT50ZWFyZG93bl9ub2Rl OworJG5vZGVfb3JpZ2luLT50ZWFyZG93bl9ub2RlOworCisjIFRlc3QgdGhhdCBwZ19yZXdp bmQgY29ycmVjdGx5IHJld2luZHMgYWNyb3NzIGEgVExJIG1pc21hdGNoIGJ1cmllZCBpbiBh IHNoYXJlZAorIyBwcmVmaXggb2YgdGhlIHRpbWVsaW5lIGhpc3RvcnkuICBUaGUgdGFyZ2V0 IGhhcyBnb25lIHRocm91Z2ggdGhyZWUgdGltZWxpbmVzCisjIChUTEkgMSAtPiBUTEkgMiAt PiBUTEkgMykgd2hpbGUgdGhlIHNvdXJjZSBpbmRlcGVuZGVudGx5IHByb21vdGVkIGZyb20g VExJIDEKKyMgdG8gd2hhdCBpcyBudW1lcmljYWxseSBUTEkgMiBidXQgd2l0aCBhIGRpZmZl cmVudCBVVUlEIChUTEkgMicpLiAgVGhlIGRlZXBlc3QKKyMgY29tbW9uIGFuY2VzdG9yIGlz IHRoZXJlZm9yZSBUTEkgMSwgYW5kIHBnX3Jld2luZCBtdXN0IHJld2luZCB0aGUgdGFyZ2V0 IGFsbAorIyB0aGUgd2F5IGJhY2sgdG8gdGhlIGVuZCBvZiBUTEkgMS4KKyMKKyMgICBvcmln aW4gKFRMSSAxKSAtLSstLSBub2RlX3ggLS1wcm9tb3RlLS0+IFRMSSAyIC0tIG5vZGVfYSAt LXByb21vdGUtLT4gVExJIDMKKyMgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHRhcmdldDogVExJIDEtPlRMSSAyLT5UTEkgMykKKyMg ICAgICAgICAgICAgICAgICAgICstLSBub2RlX2IgLS1wcm9tb3RlLS0+IFRMSSAyJworIyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNvdXJjZTogVExJ IDEtPlRMSSAyJykKKyMKKyMgZmluZENvbW1vbkFuY2VzdG9yVGltZWxpbmUgd2Fsa3MgZm9y d2FyZDogVExJIDEgZW50cmllcyBtYXRjaCAoVVVJRD0wIG9uCisjIGJvdGggc2lkZXMpLCB0 aGVuIFRMSSAyIHZzIFRMSSAyJyBtYXRjaCBvbiB0bGkgYW5kIGJlZ2luIGJ1dCBkaWZmZXIg b24KKyMgVVVJRCwgc2lnbmFsbGluZyBpbmRlcGVuZGVudCBwcm9tb3Rpb25zLiAgVGhlIGFs Z29yaXRobSB0aGVyZWZvcmUgYmFja3MgdXAKKyMgdG8gVExJIDEgYXMgdGhlIGNvbW1vbiBh bmNlc3RvciBhbmQgc2V0cyB0aGUgZGl2ZXJnZW5jZSBwb2ludCB0byB0aGUgZW5kCisjIG9m IFRMSSAxLgorCitteSAkbm9kZV9vcmlnaW4yID0gc2V0dXBfb3JpZ2luKCdvcmlnaW4yJyk7 CisKKyMgbm9kZV94IGFuZCBub2RlX2IyIGJvdGggc3RhcnQgZnJvbSB0aGUgc2FtZSBUTEkg MSBiYXNlbGluZS4KK215ICgkbm9kZV94LCAkbm9kZV9iMikgPQorICBzZXR1cF9zdGFuZGJ5 c19mcm9tX29yaWdpbigkbm9kZV9vcmlnaW4yLCAnbm9kZV94JywgJ25vZGVfYjInKTsKKwor IyBCb3RoIHN0YW5kYnlzIG11c3QgYmUgY2F1Z2h0IHVwIHRvIHRoZSBzYW1lIExTTiBiZWZv cmUgb3JpZ2luIHN0b3BzLCBzbworIyB0aGF0IFRMSSAyIGFuZCBUTEkgMicgYm90aCBiZWdp biBhdCB0aGUgc2FtZSBXQUwgcG9zaXRpb24uCitzeW5jX3N0YW5kYnlzX3dpdGhfb3JpZ2lu KCRub2RlX29yaWdpbjIsICRub2RlX3gsICRub2RlX2IyKTsKKyRub2RlX29yaWdpbjItPnN0 b3A7CisKKyMgUHJvbW90ZSBub2RlX3ggdG8gVExJIDIgKFVVSUQtWCkgYW5kIGluc2VydCBh IHJvdy4gIG5vZGVfYjIgaXMgc3RpbGwgb24KKyMgVExJIDEgYW5kIGhhcyBub3QgeWV0IHNl ZW4gYW55IFRMSSAyIFdBTC4KKyRub2RlX3gtPnByb21vdGU7Cit3cml0ZV9yZWNvcmQoJG5v ZGVfeCwgJ3gnKTsKKworIyBCdWlsZCBub2RlX2EyIGFzIGEgc3RhbmRieSBvZiBub2RlX3gs IHRoZW4gcHJvbW90ZSBpdCB0byBUTEkgMy4KK215ICgkbm9kZV9hMikgPSBzZXR1cF9zdGFu ZGJ5c19mcm9tX29yaWdpbigkbm9kZV94LCAnbm9kZV9hMicpOworCitzeW5jX3N0YW5kYnlz X3dpdGhfb3JpZ2luKCRub2RlX3gsICRub2RlX2EyKTsKKyRub2RlX3gtPnN0b3A7CisKKyRu b2RlX2EyLT5wcm9tb3RlOworCisjIE5vdyBwcm9tb3RlIG5vZGVfYjIgaW5kZXBlbmRlbnRs eSBmcm9tIFRMSSAxIHRvIFRMSSAyJyAoVVVJRC1CLCAhPSBVVUlELVgpLgorJG5vZGVfYjIt PnByb21vdGU7Cit3cml0ZV9yZWNvcmQoJG5vZGVfYjIsICdiJyk7CisKKyMgUmV3aW5kIG5v ZGVfYTIgKFRMSSAxLT5UTEkgMi0+VExJIDMpIGZyb20gbm9kZV9iMiAoVExJIDEtPlRMSSAy JykgaW4KKyMgbG9jYWwgbW9kZS4gIFRoZSByZXdpbmQgbXVzdCByZWFjaCBiYWNrIHRvIHRo ZSBlbmQgb2YgVExJIDEuCisjCisjIG5vZGVfYTIgd2FzIGluaXRpYWxpc2VkIGZyb20gYSBz dHJlYW1pbmcgYmFja3VwIG9mIG5vZGVfeCB0YWtlbiBhZnRlcgorIyBub2RlX3ggaGFkIGFs cmVhZHkgY29tcGxldGVkIHNlZ21lbnQgNCBvZiBUTEkgMjsgdGhhdCBzZWdtZW50IHRoZXJl Zm9yZQorIyBkb2VzIG5vdCBhcHBlYXIgaW4gbm9kZV9hMidzIHBnX3dhbC4gIHBnX3Jld2lu ZCdzIGJhY2t3YXJkIHNjYW4gZm9yIHRoZQorIyBsYXN0IGNoZWNrcG9pbnQgYmVmb3JlIHRo ZSBkaXZlcmdlbmNlIHBvaW50IG5lZWRzIHRoYXQgc2VnbWVudCwgc28gd2UKKyMgcG9pbnQg cmVzdG9yZV9jb21tYW5kIGF0IG5vZGVfeCdzIHBnX3dhbCBhbmQgdXNlIC0tcmVzdG9yZS10 YXJnZXQtd2FsLgorIworIyBOb3RlOiBubyByb3cgaXMgaW5zZXJ0ZWQgb24gVExJIDMuICBU aGlzIGlzIGludGVudGlvbmFsOiB0aGUgb25seQorIyBwb3N0LWRpdmVyZ2VuY2UgdGFibGUg bW9kaWZpY2F0aW9uIGluIHRoZSB0YXJnZXQncyBXQUwgaXMgdGhlICd4JyBJTlNFUlQKKyMg b24gVExJIDIuICBPbiB1bnBhdGNoZWQgY29kZSB0aGUgV0FMIHNjYW4gd291bGQgc3RhcnQg ZnJvbSB0aGUgVExJIDIKKyMgc2h1dGRvd24gY2hlY2twb2ludCAoanVzdCBiZWZvcmUgVExJ IDMpLCBtaXNzIHRoYXQgZWFybGllciBpbnNlcnQsIGFuZAorIyBsZWF2ZSAneCcgaW4gcGxh Y2UgaW5zdGVhZCBvZiByZXBsYWNpbmcgaXQgd2l0aCAnYicuCitteSAkbm9kZV94X3dhbGRp ciA9ICRub2RlX3gtPmRhdGFfZGlyIC4gIi9wZ193YWwiOworaWYgKCRQb3N0Z3JlU1FMOjpU ZXN0OjpVdGlsczo6d2luZG93c19vcykKK3sKKwkkbm9kZV94X3dhbGRpciA9fiBze1xcfXtc XFxcfWc7CisJJG5vZGVfYTItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQlx cShcbnJlc3RvcmVfY29tbWFuZCA9ICdjb3B5ICIkbm9kZV94X3dhbGRpclxcXFwlZiIgIiVw IidcbikpOworfQorZWxzZQoreworCSRub2RlX2EyLT5hcHBlbmRfY29uZigncG9zdGdyZXNx bC5jb25mJywKKwkJcXEoXG5yZXN0b3JlX2NvbW1hbmQgPSAnY3AgIiRub2RlX3hfd2FsZGly LyVmIiAiJXAiJ1xuKSk7Cit9CisKK3Jld2luZF9ub2RlKCRub2RlX2EyLCAkbm9kZV9iMiwK KwkncGdfcmV3aW5kIHJld2luZHMgYWNyb3NzIG1pc21hdGNoZWQgVExJIDIgLyBUTEkgMi1w cmltZSB0byBUTEkgMScsCisJJy0tcmVzdG9yZS10YXJnZXQtd2FsJyk7CitteSAkcmVzdWx0 MiA9CisgICRub2RlX2EyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCB2YWwgRlJP TSB0YmwgT1JERVIgQlkgdmFsIik7CitpcygkcmVzdWx0MiwgImJcbm9yaWdpbjIiLAorCSdy ZXdvdW5kIG5vZGUgcmVmbGVjdHMgc291cmNlIGhpc3RvcnksIG5vdCB0YXJnZXQgVExJIDIv VExJIDMgZGF0YScpOworCiskbm9kZV9hMi0+dGVhcmRvd25fbm9kZTsKKyRub2RlX2IyLT50 ZWFyZG93bl9ub2RlOworJG5vZGVfeC0+dGVhcmRvd25fbm9kZTsKKyRub2RlX29yaWdpbjIt PnRlYXJkb3duX25vZGU7CisKKyMgVGVzdCB0aGF0IHBnX3Jld2luZCBjb3JyZWN0bHkgZGV0 ZWN0cyBhIG1pc21hdGNoIHdoZW4gb25lIGNsdXN0ZXIncyBUTEkgMgorIyBoaXN0b3J5IGVu dHJ5IGNhcnJpZXMgYSB6ZXJvIFVVSUQgKG9sZC1mb3JtYXQgaGlzdG9yeSBmaWxlKSB3aGls ZSB0aGUgb3RoZXIKKyMgY2FycmllcyBhIHJlYWwgVVVJRC4gIFRoZSB0d28gY2x1c3RlcnMg bXVzdCBoYXZlIHByb21vdGVkIGluZGVwZW5kZW50bHksIHNvCisjIHBnX3Jld2luZCBtdXN0 IHJld2luZCB0byBUTEkgMSByYXRoZXIgdGhhbiBhY2NlcHRpbmcgdGhlIHNhbWUtVExJIHNo b3J0Y3V0LgorIworIyBSdW4gYm90aCBvcmllbnRhdGlvbnM6CisjICAgKGEpIHRhcmdldCBo YXMgemVybyBVVUlELCBzb3VyY2UgaGFzIHJlYWwgVVVJRAorIyAgIChiKSB0YXJnZXQgaGFz IHJlYWwgVVVJRCwgc291cmNlIGhhcyB6ZXJvIFVVSUQKKyMKKyMgSW4gYm90aCBjYXNlcyB0 aGUgc2V0dXAgaXM6CisjCisjICAgb3JpZ2luIChUTEkgMSkgLS0rLS0gbm9kZV9wIC0tcHJv bW90ZS0tPiBUTEkgMiwgVVVJRC1QICAodGFyZ2V0KQorIyAgICAgICAgICAgICAgICAgICAg fAorIyAgICAgICAgICAgICAgICAgICAgKy0tIG5vZGVfcSAtLXByb21vdGUtLT4gVExJIDIs IFVVSUQtUSAgKHNvdXJjZSkKKyMKKyMgT25lIHNpZGUgdGhlbiBoYXMgaXRzIGhpc3Rvcnkg ZmlsZSByZXdyaXR0ZW4gdG8gdGhlIG9sZCAzLWZpZWxkIGZvcm1hdCBzbworIyB0aGF0IGl0 cyBVVUlEIHJlYWRzIGFzIHplcm8uICBwZ19yZXdpbmQgbXVzdCB0cmVhdCB6ZXJvLXZzLW5v bnplcm8gYXMKKyMgaW5jb21wYXRpYmxlICh0aGV5IGNhbm5vdCBiZSB0aGUgc2FtZSBwcm9t b3Rpb24pIGFuZCByZXdpbmQgdG8gVExJIDEuCisKK2ZvciBteSAkc3RyaXBfdGFyZ2V0ICgx LCAwKQoreworCW15ICR6ZXJvX3NpZGUgPSAkc3RyaXBfdGFyZ2V0ID8gJ3RhcmdldCcgOiAn c291cmNlJzsKKwlteSAkcmVhbF9zaWRlID0gJHN0cmlwX3RhcmdldCA/ICdzb3VyY2UnIDog J3RhcmdldCc7CisJbXkgJHNmeCA9ICRzdHJpcF90YXJnZXQgPyAnenQnIDogJ3pzJzsKKwlt eSAkbGFiZWwgPQorCSAgInBnX3Jld2luZCByZXdpbmRzIHdoZW4gJHplcm9fc2lkZSBoYXMg emVybyBVVUlEIGFuZCAkcmVhbF9zaWRlIGhhcyByZWFsIFVVSUQiOworCisJbXkgJG5vZGVf b3JpZ2luMyA9IHNldHVwX29yaWdpbigib3JpZ2luM18kc2Z4Iik7CisJbXkgKCRub2RlX3As ICRub2RlX3EpID0KKwkgIHNldHVwX3N0YW5kYnlzX2Zyb21fb3JpZ2luKCRub2RlX29yaWdp bjMsICJub2RlX3BfJHNmeCIsICJub2RlX3FfJHNmeCIpOworCisJc3luY19zdGFuZGJ5c193 aXRoX29yaWdpbigkbm9kZV9vcmlnaW4zLCAkbm9kZV9wLCAkbm9kZV9xKTsKKwkkbm9kZV9v cmlnaW4zLT5zdG9wOworCisJJG5vZGVfcC0+cHJvbW90ZTsKKwkkbm9kZV9xLT5wcm9tb3Rl OworCisJd3JpdGVfcmVjb3JkKCRub2RlX3AsICdpbiBQJyk7CisJd3JpdGVfcmVjb3JkKCRu b2RlX3EsICdpbiBRJyk7CisKKwkjIFN0cmlwIFVVSUQgZnJvbSB0aGUgY2hvc2VuIHNpZGUg dG8gc2ltdWxhdGUgYSBwcmUtVVVJRCBzZXJ2ZXIuCisJc3RyaXBfdGxpX3V1aWQoJHN0cmlw X3RhcmdldCA/ICRub2RlX3AgOiAkbm9kZV9xLCAyKTsKKworCXJld2luZF9ub2RlKCRub2Rl X3AsICRub2RlX3EsICRsYWJlbCk7CisJbXkgJHJlc3VsdDMgPQorCSAgJG5vZGVfcC0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgdmFsIEZST00gdGJsIE9SREVSIEJZIHZhbCIp OworCWlzKCAkcmVzdWx0MywKKwkJImluIFFcbm9yaWdpbjNfJHNmeCIsCisJCSdyZXdvdW5k IG5vZGUgaGFzIHNvdXJjZSBkYXRhLCBub3QgaXRzIG93biBkaXZlcmdlbnQgcm93Jyk7CisK Kwkkbm9kZV9wLT50ZWFyZG93bl9ub2RlOworCSRub2RlX3EtPnRlYXJkb3duX25vZGU7CisJ JG5vZGVfb3JpZ2luMy0+dGVhcmRvd25fbm9kZTsKK30KKworIyBUZXN0IHRoYXQgcGdfcmV3 aW5kIGRldGVjdHMgaW5kZXBlbmRlbnQgcHJvbW90aW9ucyB0byBUTEkgMyB3aGVuIGJvdGgK KyMgY2x1c3RlcnMgc2hhcmUgYSBjb21tb24gVExJIDEgLT4gVExJIDIgaGlzdG9yeSAoc2Ft ZSBVVUlEKSBidXQgaW5kZXBlbmRlbnRseQorIyBwcm9tb3RlZCBmcm9tIFRMSSAyIHRvIFRM SSAzLCBwcm9kdWNpbmcgZGlmZmVyZW50IFRMSSAzIFVVSURzLgorIworIyAgIG9yaWdpbiAo VExJIDEpIC0tLSBub2RlX21pZCAtLXByb21vdGUtLT4gVExJIDIsIFVVSUQtTQorIyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorIyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tIG5vZGVf YyAtLXByb21vdGUtLT4gVExJIDMsIFVVSUQtQyAgKHRhcmdldCkKKyMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLSBub2RlX2QgLS1wcm9t b3RlLS0+IFRMSSAzJywgVVVJRC1EICAoc291cmNlKQorIworIyBUaGUgc2FtZS1UTEkgc2hv cnRjdXQgY29tcGFyZXMgZW50cnlbTmVudHJpZXMtMl0udGx1dWlkIG9uIGVhY2ggc2lkZTsg dGhhdAorIyBpcyB0aGUgVVVJRCBvZiB0aGUgVExJIDMgcHJvbW90aW9uLCB3aGljaCBkaWZm ZXJzLiAgVGhlIGZ1bGwgcmV3aW5kIHBhdGgKKyMgdGhlbiB3YWxrcyB0aGUgaGlzdG9yeSBm b3J3YXJkOiBUTEkgMSBtYXRjaGVzIChzYW1lIHRsaS9iZWdpbi9VVUlELU0gYXQKKyMgZW50 cnlbMF0pLCBUTEkgMiBhbHNvIG1hdGNoZXMgKHNhbWUgdGxpL2JlZ2luOyBVVUlELU0gaXMg dGhlIHNhbWUgb24gYm90aAorIyBzaWRlcyBhdCBlbnRyeVswXSksIGJ1dCBUTEkgMyB2cyBU TEkgMycgZGlmZmVyIGF0IGVudHJ5WzFdIChVVUlELUMgIT0gVVVJRC1EKSwKKyMgc28gdGhl IGRpdmVyZ2VuY2UgcG9pbnQgaXMgc2V0IHRvIHRoZSBlbmQgb2YgVExJIDIuCisKK215ICRu b2RlX29yaWdpbjQgPSBzZXR1cF9vcmlnaW4oJ29yaWdpbjQnKTsKK215ICgkbm9kZV9taWQp ID0gc2V0dXBfc3RhbmRieXNfZnJvbV9vcmlnaW4oJG5vZGVfb3JpZ2luNCwgJ25vZGVfbWlk Jyk7CisKK3N5bmNfc3RhbmRieXNfd2l0aF9vcmlnaW4oJG5vZGVfb3JpZ2luNCwgJG5vZGVf bWlkKTsKKyRub2RlX29yaWdpbjQtPnN0b3A7CisKKyMgUHJvbW90ZSBub2RlX21pZCB0byBU TEkgMiBhbmQgaW5zZXJ0IGEgcm93IHRoYXQgYm90aCBUTEkgMyBub2RlcyB3aWxsIHNoYXJl LgorJG5vZGVfbWlkLT5wcm9tb3RlOword3JpdGVfcmVjb3JkKCRub2RlX21pZCwgJ21pZCcp OworCisjIG5vZGVfYyBhbmQgbm9kZV9kIGJvdGggc3RhcnQgYXMgc3RhbmRieXMgb2Ygbm9k ZV9taWQgc28gdGhleSBzaGFyZSB0aGUgc2FtZQorIyBUTEkgMiBwcm9tb3Rpb24gVVVJRCAo VVVJRC1NKS4KK215ICgkbm9kZV9jLCAkbm9kZV9kKSA9CisgIHNldHVwX3N0YW5kYnlzX2Zy b21fb3JpZ2luKCRub2RlX21pZCwgJ25vZGVfYycsICdub2RlX2QnKTsKK3N5bmNfc3RhbmRi eXNfd2l0aF9vcmlnaW4oJG5vZGVfbWlkLCAkbm9kZV9jLCAkbm9kZV9kKTsKKyRub2RlX21p ZC0+c3RvcDsKKworIyBQcm9tb3RlIGJvdGggaW5kZXBlbmRlbnRseTsgZWFjaCBnZW5lcmF0 ZXMgYSBkaXN0aW5jdCBUTEkgMyBVVUlELgorJG5vZGVfYy0+cHJvbW90ZTsKKyRub2RlX2Qt PnByb21vdGU7CisKK3dyaXRlX3JlY29yZCgkbm9kZV9jLCAnYycpOword3JpdGVfcmVjb3Jk KCRub2RlX2QsICdkJyk7CisKK3Jld2luZF9ub2RlKCRub2RlX2MsICRub2RlX2QsCisJJ3Bn X3Jld2luZCBkZXRlY3RzIGluZGVwZW5kZW50IFRMSSAzIC8gVExJIDMtcHJpbWUgcHJvbW90 aW9ucyBzaGFyaW5nIFRMSSAyJworKTsKK215ICRyZXN1bHQ0ID0KKyAgJG5vZGVfYy0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgdmFsIEZST00gdGJsIE9SREVSIEJZIHZhbCIp OworaXMoJHJlc3VsdDQsICJkXG5taWRcbm9yaWdpbjQiLAorCSdyZXdvdW5kIG5vZGUgaGFz IHNvdXJjZSBUTEkgMy1wcmltZSBkYXRhLCBub3QgaXRzIG93biBUTEkgMyBkYXRhJyk7CisK KyRub2RlX2MtPnRlYXJkb3duX25vZGU7Ciskbm9kZV9kLT50ZWFyZG93bl9ub2RlOworJG5v ZGVfbWlkLT50ZWFyZG93bl9ub2RlOworJG5vZGVfb3JpZ2luNC0+dGVhcmRvd25fbm9kZTsK KwogZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3Jld2luZC90aW1l bGluZS5jIGIvc3JjL2Jpbi9wZ19yZXdpbmQvdGltZWxpbmUuYwppbmRleCBkZGEwNmVhYTBi Yy4uYjY1MDA2MDZiMjcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfcmV3aW5kL3RpbWVsaW5l LmMKKysrIGIvc3JjL2Jpbi9wZ19yZXdpbmQvdGltZWxpbmUuYwpAQCAtOSw5ICs5LDQwIEBA CiAgKi8KICNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgogCisjaW5jbHVkZSA8Y3R5cGUuaD4K KyNpbmNsdWRlIDxzdHJpbmcuaD4KKwogI2luY2x1ZGUgImFjY2Vzcy90aW1lbGluZS5oIgog I2luY2x1ZGUgInBnX3Jld2luZC5oIgogCisvKgorICogUGFyc2UgYSBVVUlEIHN0cmluZyBp biBzdGFuZGFyZCBkYXNoZWQgZm9ybSBpbnRvIGEgcGdfdXVpZF90LgorICogUmV0dXJucyB0 cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIGlmIHN0ciBpcyBub3QgYSB2YWxpZCBVVUlEIHN0cmlu Zy4KKyAqLworc3RhdGljIGJvb2wKK3Jld2luZF9wYXJzZV91dWlkKGNvbnN0IGNoYXIgKnN0 ciwgcGdfdXVpZF90ICp1dWlkKQoreworCWNvbnN0IGNoYXIgKnNyYyA9IHN0cjsKKworCWZv ciAoaW50IGkgPSAwOyBpIDwgVVVJRF9MRU47IGkrKykKKwl7CisJCWNoYXIJCWJ1ZlszXTsK KworCQlpZiAoIWlzeGRpZ2l0KCh1bnNpZ25lZCBjaGFyKSBzcmNbMF0pIHx8CisJCQkhaXN4 ZGlnaXQoKHVuc2lnbmVkIGNoYXIpIHNyY1sxXSkpCisJCQlyZXR1cm4gZmFsc2U7CisJCWJ1 ZlswXSA9IHNyY1swXTsKKwkJYnVmWzFdID0gc3JjWzFdOworCQlidWZbMl0gPSAnXDAnOwor CQl1dWlkLT5kYXRhW2ldID0gKHVuc2lnbmVkIGNoYXIpIHN0cnRvdWwoYnVmLCBOVUxMLCAx Nik7CisJCXNyYyArPSAyOworCQkvKiBza2lwIGRhc2ggYXQgcG9zaXRpb25zIGFmdGVyIGJ5 dGVzIDMsIDUsIDcsIDkgKGkgPT0gMyw1LDcsOSkgKi8KKwkJaWYgKHNyY1swXSA9PSAnLScg JiYgKGkgPT0gMyB8fCBpID09IDUgfHwgaSA9PSA3IHx8IGkgPT0gOSkpCisJCQlzcmMrKzsK Kwl9CisJcmV0dXJuICgqc3JjID09ICdcMCcpOworfQorCiAvKgogICogVGhpcyBpcyBjb3B5 LXBhc3RlZCBmcm9tIHRoZSBiYWNrZW5kIHJlYWRUaW1lTGluZUhpc3RvcnksIG1vZGlmaWVk IHRvCiAgKiByZXR1cm4gYSBtYWxsb2MnZCBhcnJheSBhbmQgdG8gd29yayB3aXRob3V0IGJh Y2tlbmQgZnVuY3Rpb25zLgpAQCAtNDgsNiArNzksNyBAQCByZXdpbmRfcGFyc2VUaW1lTGlu ZUhpc3RvcnkoY2hhciAqYnVmZmVyLCBUaW1lTGluZUlEIHRhcmdldFRMSSwgaW50ICpuZW50 cmllcykKIAkJdWludDMyCQlzd2l0Y2hwb2ludF9oaTsKIAkJdWludDMyCQlzd2l0Y2hwb2lu dF9sbzsKIAkJaW50CQkJbmZpZWxkczsKKwkJY2hhcgkJdXVpZF9zdHJbVVVJRF9TVFJfTEVO ICsgMV0gPSB7MH07CiAKIAkJZmxpbmUgPSBidWZwdHI7CiAJCXdoaWxlICgqYnVmcHRyICYm ICpidWZwdHIgIT0gJ1xuJykKQEAgLTY2LDcgKzk4LDggQEAgcmV3aW5kX3BhcnNlVGltZUxp bmVIaXN0b3J5KGNoYXIgKmJ1ZmZlciwgVGltZUxpbmVJRCB0YXJnZXRUTEksIGludCAqbmVu dHJpZXMpCiAJCWlmICgqcHRyID09ICdcMCcgfHwgKnB0ciA9PSAnIycpCiAJCQljb250aW51 ZTsKIAotCQluZmllbGRzID0gc3NjYW5mKGZsaW5lLCAiJXVcdCVYLyUwOFgiLCAmdGxpLCAm c3dpdGNocG9pbnRfaGksICZzd2l0Y2hwb2ludF9sbyk7CisJCW5maWVsZHMgPSBzc2NhbmYo ZmxpbmUsICIldVx0JVgvJTA4WFx0JTM2cyIsICZ0bGksICZzd2l0Y2hwb2ludF9oaSwKKwkJ CQkJCSAmc3dpdGNocG9pbnRfbG8sIHV1aWRfc3RyKTsKIAogCQlpZiAobmZpZWxkcyA8IDEp CiAJCXsKQEAgLTc1LDcgKzEwOCw3IEBAIHJld2luZF9wYXJzZVRpbWVMaW5lSGlzdG9yeShj aGFyICpidWZmZXIsIFRpbWVMaW5lSUQgdGFyZ2V0VExJLCBpbnQgKm5lbnRyaWVzKQogCQkJ cGdfbG9nX2Vycm9yX2RldGFpbCgiRXhwZWN0ZWQgYSBudW1lcmljIHRpbWVsaW5lIElELiIp OwogCQkJZXhpdCgxKTsKIAkJfQotCQlpZiAobmZpZWxkcyAhPSAzKQorCQlpZiAobmZpZWxk cyA8IDMpCiAJCXsKIAkJCXBnX2xvZ19lcnJvcigic3ludGF4IGVycm9yIGluIGhpc3Rvcnkg ZmlsZTogJXMiLCBmbGluZSk7CiAJCQlwZ19sb2dfZXJyb3JfZGV0YWlsKCJFeHBlY3RlZCBh IHdyaXRlLWFoZWFkIGxvZyBzd2l0Y2hwb2ludCBsb2NhdGlvbi4iKTsKQEAgLTk5LDcgKzEz MiwxNCBAQCByZXdpbmRfcGFyc2VUaW1lTGluZUhpc3RvcnkoY2hhciAqYnVmZmVyLCBUaW1l TGluZUlEIHRhcmdldFRMSSwgaW50ICpuZW50cmllcykKIAkJZW50cnktPmVuZCA9ICgodWlu dDY0KSAoc3dpdGNocG9pbnRfaGkpKSA8PCAzMiB8ICh1aW50NjQpIHN3aXRjaHBvaW50X2xv OwogCQlwcmV2ZW5kID0gZW50cnktPmVuZDsKIAotCQkvKiB3ZSBpZ25vcmUgdGhlIHJlbWFp bmRlciBvZiBlYWNoIGxpbmUgKi8KKwkJLyoKKwkJICogUGFyc2UgdGhlIG9wdGlvbmFsIFVV SUQgZmllbGQuICBPbGQgaGlzdG9yeSBmaWxlcyBoYXZlIHRoZSByZWFzb24KKwkJICogc3Ry aW5nIGluIGZpZWxkIDQ7IGl0cyBmaXJzdCB3b3JkIGlzIG11Y2ggc2hvcnRlciB0aGFuIFVV SURfU1RSX0xFTgorCQkgKiBzbyB0aGUgbGVuZ3RoIGNoZWNrIHNhZmVseSBkaXN0aW5ndWlz aGVzIG9sZCBmcm9tIG5ldyBmb3JtYXQuCisJCSAqLworCQltZW1zZXQoJmVudHJ5LT50bHV1 aWQsIDAsIHNpemVvZihwZ191dWlkX3QpKTsKKwkJaWYgKG5maWVsZHMgPT0gNCAmJiBzdHJs ZW4odXVpZF9zdHIpID09IFVVSURfU1RSX0xFTikKKwkJCXJld2luZF9wYXJzZV91dWlkKHV1 aWRfc3RyLCAmZW50cnktPnRsdXVpZCk7CiAJfQogCiAJaWYgKGVudHJpZXMgJiYgdGFyZ2V0 VExJIDw9IGxhc3R0bGkpCkBAIC0xMjMsNiArMTYzLDcgQEAgcmV3aW5kX3BhcnNlVGltZUxp bmVIaXN0b3J5KGNoYXIgKmJ1ZmZlciwgVGltZUxpbmVJRCB0YXJnZXRUTEksIGludCAqbmVu dHJpZXMpCiAJZW50cnktPnRsaSA9IHRhcmdldFRMSTsKIAllbnRyeS0+YmVnaW4gPSBwcmV2 ZW5kOwogCWVudHJ5LT5lbmQgPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwltZW1zZXQoJmVudHJ5 LT50bHV1aWQsIDAsIHNpemVvZihwZ191dWlkX3QpKTsKIAogCSpuZW50cmllcyA9IG5saW5l czsKIAlyZXR1cm4gZW50cmllczsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90 aW1lbGluZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RpbWVsaW5lLmgKaW5kZXggOTdmMWQ2 MTljMzUuLmNkZDY0MmM5NGYwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGlt ZWxpbmUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGltZWxpbmUuaApAQCAtMTMsNiAr MTMsNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCiAjaW5jbHVkZSAibm9k ZXMvcGdfbGlzdC5oIgorI2luY2x1ZGUgInV0aWxzL3V1aWQuaCIKIAogLyoKICAqIEEgbGlz dCBvZiB0aGVzZSBzdHJ1Y3RzIGRlc2NyaWJlcyB0aGUgdGltZWxpbmUgaGlzdG9yeSBvZiB0 aGUgc2VydmVyLiBFYWNoCkBAIC0yMiw5ICsyMywxMCBAQAogICogcG9pbnRlcnMgb2YgYWxs IHRoZSBlbnRyaWVzIGZvcm0gYSBjb250aWd1b3VzIGxpbmUgZnJvbSBiZWdpbm5pbmcgb2Yg dGltZQogICogdG8gaW5maW5pdHkuCiAgKi8KLXR5cGVkZWYgc3RydWN0Cit0eXBlZGVmIHN0 cnVjdCBUaW1lTGluZUhpc3RvcnlFbnRyeQogewogCVRpbWVMaW5lSUQJdGxpOworCXBnX3V1 aWRfdAl0bHV1aWQ7CQkJLyogZnJvbSBoaXN0b3J5IGZpbGU7IHplcm8gaWYgdW5rbm93biAq LwogCVhMb2dSZWNQdHIJYmVnaW47CQkJLyogaW5jbHVzaXZlICovCiAJWExvZ1JlY1B0cgll bmQ7CQkJLyogZXhjbHVzaXZlLCBJbnZhbGlkWExvZ1JlY1B0ciBtZWFucyBpbmZpbml0eSAq LwogfSBUaW1lTGluZUhpc3RvcnlFbnRyeTsKQEAgLTMzLDYgKzM1LDcgQEAgZXh0ZXJuIExp c3QgKnJlYWRUaW1lTGluZUhpc3RvcnkoVGltZUxpbmVJRCB0YXJnZXRUTEkpOwogZXh0ZXJu IGJvb2wgZXhpc3RzVGltZUxpbmVIaXN0b3J5KFRpbWVMaW5lSUQgcHJvYmVUTEkpOwogZXh0 ZXJuIFRpbWVMaW5lSUQgZmluZE5ld2VzdFRpbWVMaW5lKFRpbWVMaW5lSUQgc3RhcnRUTEkp OwogZXh0ZXJuIHZvaWQgd3JpdGVUaW1lTGluZUhpc3RvcnkoVGltZUxpbmVJRCBuZXdUTEks IFRpbWVMaW5lSUQgcGFyZW50VExJLAorCQkJCQkJCQkgY29uc3QgcGdfdXVpZF90ICpuZXdU TFVVSUQsCiAJCQkJCQkJCSBYTG9nUmVjUHRyIHN3aXRjaHBvaW50LCBjaGFyICpyZWFzb24p OwogZXh0ZXJuIHZvaWQgd3JpdGVUaW1lTGluZUhpc3RvcnlGaWxlKFRpbWVMaW5lSUQgdGxp LCBjaGFyICpjb250ZW50LCBpbnQgc2l6ZSk7CiBleHRlcm4gdm9pZCByZXN0b3JlVGltZUxp bmVIaXN0b3J5RmlsZXMoVGltZUxpbmVJRCBiZWdpbiwgVGltZUxpbmVJRCBlbmQpOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dfaW50ZXJuYWwuaCBiL3NyYy9pbmNs dWRlL2FjY2Vzcy94bG9nX2ludGVybmFsLmgKaW5kZXggNTU2NjNlNmY0YWYuLjIwYTJmMzQ1 ZmQzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ19pbnRlcm5hbC5oCisr KyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nX2ludGVybmFsLmgKQEAgLTIyLDYgKzIyLDcg QEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxv Z3JlYWRlci5oIgogI2luY2x1ZGUgImRhdGF0eXBlL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUg InV0aWxzL3V1aWQuaCIKICNpbmNsdWRlICJsaWIvc3RyaW5naW5mby5oIgogI2luY2x1ZGUg InBndGltZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYmxvY2suaCIKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3V0aWxzL3V1aWQuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3V1aWQuaAppbmRl eCA1NzJkOGNmNGMzNi4uNjgzOWRlMmUwYjIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0 aWxzL3V1aWQuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy91dWlkLmgKQEAgLTE3LDEyICsx NywxNiBAQAogLyogdXVpZCBzaXplIGluIGJ5dGVzICovCiAjZGVmaW5lIFVVSURfTEVOIDE2 CiAKKy8qIGxlbmd0aCBvZiBhIFVVSUQgc3RyaW5nICh3aXRob3V0IG51bGwgdGVybWluYXRv cik6IHh4eHh4eHh4LXh4eHgteHh4eC14eHh4LXh4eHh4eHh4eHh4eCAqLworI2RlZmluZSBV VUlEX1NUUl9MRU4gMzYKKwogdHlwZWRlZiBzdHJ1Y3QgcGdfdXVpZF90CiB7CiAJdW5zaWdu ZWQgY2hhciBkYXRhW1VVSURfTEVOXTsKIH0gcGdfdXVpZF90OwogCi0vKiBmbWdyIGludGVy ZmFjZSBtYWNyb3MgKi8KKy8qIGZtZ3IgaW50ZXJmYWNlIG1hY3JvcyAoYmFja2VuZCBvbmx5 KSAqLworI2lmbmRlZiBGUk9OVEVORAogc3RhdGljIGlubGluZSBEYXR1bQogVVVJRFBHZXRE YXR1bShjb25zdCBwZ191dWlkX3QgKlgpCiB7CkBAIC0zOCw1ICs0Miw5IEBAIERhdHVtR2V0 VVVJRFAoRGF0dW0gWCkKIH0KIAogI2RlZmluZSBQR19HRVRBUkdfVVVJRF9QKFgpCQlEYXR1 bUdldFVVSURQKFBHX0dFVEFSR19EQVRVTShYKSkKKyNlbmRpZgkJCQkJCQkvKiAhRlJPTlRF TkQgKi8KKworZXh0ZXJuIHBnX3V1aWRfdCAqZ2VuZXJhdGVfdXVpZHY3KHVpbnQ2NCB1bml4 X3RzX21zLCB1aW50MzIgc3ViX21zKTsKK2V4dGVybiBwZ191dWlkX3QgKmdlbmVyYXRlX3V1 aWR2N19yKHBnX3V1aWRfdCAqdXVpZCwgdWludDY0IHVuaXhfdHNfbXMsIHVpbnQzMiBzdWJf bXMpOwogCiAjZW5kaWYJCQkJCQkJLyogVVVJRF9IICovCi0tIAoyLjQzLjAKCg== --------------2TginzasSc0nRUJ8uwExTyBF--