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 1wXPSy-003FNP-2r for pgsql-hackers@arkaria.postgresql.org; Wed, 10 Jun 2026 20:24:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wXPSx-00Cpm0-2c for pgsql-hackers@arkaria.postgresql.org; Wed, 10 Jun 2026 20:23:59 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wXPSx-00Cpls-0J for pgsql-hackers@lists.postgresql.org; Wed, 10 Jun 2026 20:23:59 +0000 Received: from mail-qv1-xf34.google.com ([2607:f8b0:4864:20::f34]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wXPSs-00000002OU8-0pMF for pgsql-hackers@postgresql.org; Wed, 10 Jun 2026 20:23:58 +0000 Received: by mail-qv1-xf34.google.com with SMTP id 6a1803df08f44-8ccf181a52bso65729876d6.3 for ; Wed, 10 Jun 2026 13:23:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dunslane-net.20251104.gappssmtp.com; s=20251104; t=1781123032; x=1781727832; darn=postgresql.org; h=in-reply-to:autocrypt:content-language:references:cc:to:from :subject:user-agent:mime-version:date:message-id:from:to:cc:subject :date:message-id:reply-to; bh=4poleN+S8nbtsoQL9RF/VCbUeGONZwtInXnNhnxthqo=; b=ArIsnnvg0P46zaee5AEFW46SxEih5VcNj5Vs3r4SgM2s94tzJqa8cxZqSBTdraLwUU LZoD/sKhHGJ4g3agsR01IVOdbtvwy07wm/Wncxfk/Tega1R1OFkSr0qgiioR2EYp9Asm OgddfHJlTgBlpr31wGrO+iniq8Lb5a89AWhq4TTsmOybI2r1KQDD3NaUUmiPtLuERE5o DkFKyWi08GRc+EAgAvoYBWHy2/SlJFswudc+4RkUXJEoMImNeFiUgEQwLjaQgGRbFA+L a9rFoUDKn/0d0f7FgcLJ68X5tf5bA/LiwhfFE09ctdqniDqTFJOjcTdfGY4WydztfIVq PwKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781123032; x=1781727832; h=in-reply-to:autocrypt:content-language:references:cc:to:from :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=4poleN+S8nbtsoQL9RF/VCbUeGONZwtInXnNhnxthqo=; b=f0BXTZRiHW+YzwVOneb67UU+2Hs1XwAmC17YxN36zspMhsuXI9QSwfS9jjpwWk9F8P O6K+VtYupaMfYmKLYbRrGs7vmqqaqTKdGITBcp9kO3UF8OJfH2RgehDrDYvZ3gyEu8y6 5aaZyw3etN71oY7AMlhSvkHkki1bisfJH6Usa53Hn6HHrJ3AwMzIjgH2+fQaSEjkHAGy pbcWcf+mIs2T/mkKIUptjfPgFmCTbfeo8n4MsTN/Aqh5/zh4su6KUrCLr3atuol1dmkG 6xkO71UH/N0RXQFhYYzhS48jjFimvyiqP0DS2Vyx2aA1rahoMIa8DnSLNdfzvWlvXEeM 4OEg== X-Gm-Message-State: AOJu0YwV4DiuAQxpHOwYXf7+7l1xWIVz/lL4QXRoB1p1HWDvDVaKZYWl BI84mcVDbtgQpK5R14CDRI8UD+lqSIV26bCl1eOpVBgYSjr3v4zkeBQz2o7/k8tEreI= X-Gm-Gg: Acq92OGj1MSO81Bo82i2i49MLBlEkdFogxNNm+6sa4Hzycg7HKuOv6Kh1TEL1p3kwdu aPrW561PTGT70Ebs3TK015rKenkCAQ56ytDRyxJAiQMNU/OPxwRqlmy+5KStpASaj8QRHKXFCz7 llDqxp4f4ls25E2Hm/1T6FQc1Q2T6XCixoIsWIq5nDWy7UeHZN12pydyEkXPyW3KxEi3W094GNx RvfiMMVY25/l3jFyXefiES6hqFrPmfBzxd3wMMyqU8mf74Hi1SDDT1Oiqcfi5fUx/Xqu4yxdN6c YBm6I6RMOgxEoR9ssFcCZkVMoMQpedCRUajHbGxL0oEjAYLU2jYj8EXi1RKwM5gYx5pFLZ3Bx/h qpNCVIEoOBmHMlyCsNdMlMhwmFYSZ6nxWnWd4jPqnArB+Mvxbj6lAga8bzvVRP3LEkr8iVaLvr4 md7+Mwk8/arxLCgbFfEzdGaYgmHnMgtyCXz8C07Bg9pVvy7tv85e/ELr0FWOfEMf9pGl5F5ug2l 611O2FsLg== X-Received: by 2002:a05:6214:cad:b0:8ce:cc38:e496 with SMTP id 6a1803df08f44-8cf1cc97551mr146920386d6.22.1781123031636; Wed, 10 Jun 2026 13:23:51 -0700 (PDT) Received: from ?IPV6:2605:a601:a6b0:500:ccb8:56eb:bfc6:86b5? ([2605:a601:a6b0:500:ccb8:56eb:bfc6:86b5]) by smtp.googlemail.com with ESMTPSA id 6a1803df08f44-8ceccdb93d8sm249231946d6.16.2026.06.10.13.23.49 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 10 Jun 2026 13:23:50 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------qPe8Eb3h7kDV46foKbqhjv9u" Message-ID: <506de8d3-e2b1-4929-88d8-96253d5e4121@dunslane.net> Date: Wed, 10 Jun 2026 16:23:47 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: BackgroundPsql swallowing errors on windows From: Andrew Dunstan To: Andres Freund Cc: pgsql-hackers@postgresql.org, Noah Misch References: <762648ad-99b5-4871-beaa-ca275e46ef6e@dunslane.net> <5dgt6vir7n664qruw3ndywpmfxsmfuu4oeh43syocgo3g6v72n@hjxahrqk4w7t> <1779b4d6-768f-4edb-8cd6-62706d321f32@dunslane.net> <1880b789-cb54-4162-ae19-9eb29fabc8da@dunslane.net> <3510c901-b760-4534-9371-8a921d955549@dunslane.net> Content-Language: en-US Autocrypt: addr=andrew@dunslane.net; keydata= xsBNBE7KWFkBCAClridxur2AIc7eW2AR7izbfp3EnNefie2HbLF0izW5Ik5UjX2HBXBx4syI gY6b0ugohXrr274+baoAlvSbq6cAoQuEVrk5IZFzt20b1Xkx65FwGSEj526yiKLocqkJceSq Xr9xcA5SGY+FZv441chh5SU92v4q6z+6LPpoHOh97ptAVXZYNTtU0LevyvD5lja0TzbvJm6C eFXitJfnm1pLEr0DGJCR/iUOl/N62Kh4855zZC7NHIjQHPOvV5Stz/l5ilDhvGVk+xkXFPys SjZoUr1rXhYLpiyi5sR0X9FHXT0KnGuz1F5ERO7ZTLSSQ6fJwPj6gOk9K+vvoKvoeql5ABEB AAHNJEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PsLAlwQTAQgAQQIbAwIX gAIZAQULCQgHAwUVCgkICwUWAgMBAAIeBRYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNGd BQkdEO8nAAoJEJn6f8tZ/DuBq74H/jkTR4Zi3stbw+xC7v2u3QozssK7MYPL2AsVfh7OealS h182fiWXpfvmmAB7WUHbhk9GC2RAOnHI/2d2jgKaMLAHsGYOT0YopTVIwRY43fCw/mK67yxc wmDcX+zyKfLaivNbf5A7QPLNwda98bEAMSJ8Sn652Uc6cA8t3uKGsVzbRBQOoYzjgvBCfSrE 9ql3PDNg0l4BfAqabd2f70ZUm9VAMEPrgv/v2xI7M2XiL4g5BVmqLCOwxLM8RMCotCuoweUr VO43DeBCIDwLxotMJKvGWDjBzQYlU1NPUAtNcz/gN9ITUe1VUGjyvGj4u1lxBOcQQUw7l1+T 5moZ4iZxXzvOwE0ETspYWQEIANGc4zQULOxhbqO2dyD51YhqCNRmm9oKWaqf+wmW4tpDe/VV cxAnNizd4LWCHfzpb5cHAtGkOPePMfzWVf6nvdF7d3eglbtf59+zG7O7llV0xSSoFiieQBsr GvqDInXYX/4mRRXMtyhM353/tixC9RWLs1oofyYmCPPXXY7h9R7en3B8BoVrRFcdzlIY/NFN hFGW/9dkEiGjgna2Rk6e15kln4ZvFBWUg23p93w/pqXcxY6+k/8TEk+C4R+M6w7o2PLGOjdZ +kPiUcw5H85zf/yZJwQXzisXaNduwWB6Vads9YC9dj6kPR1c4VGRqAaYL++LAEOqrlvm2Tvq QqZRtnEAEQEAAcLAfAQYAQgAJgIbDBYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNI2BQkd EODdAAoJEJn6f8tZ/DuBfw0IAKTsfD40teP/pp+bsLLMSxPXUYrrprTj7WFB5v61p6dkpSr/ qXmMlyahdxQFaPmfVgVirB1Vk/kHiWNnnGjfUV9nB2Zg9LI0Xb9/ts3LsUiRWXzG3tkMY6XL vsVOxW4XFRND9l2q+WW93aZ1DZl+fqWfYgMvsusFRhmGFOKTRfKPta2Pkv+AhA24N4+PrR5p bU4k2MO8PAGiK8eaYKGFG1bHKuAvoDoF7WXJ3FHxuWqLnKEt4dfOLm5pAe3zq1Lt6q8azT9i QWGpSAK5vQUWQHBHpiDjdPeqKZ6HiAXIIKfSmb+jrvXBqoP+D6/K7rUjG2aXiRtTIAXms9sm VRu7cmw= In-Reply-To: <3510c901-b760-4534-9371-8a921d955549@dunslane.net> 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. --------------qPe8Eb3h7kDV46foKbqhjv9u Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 2026-06-03 We 5:23 PM, Andrew Dunstan wrote: > > On 2026-06-02 Tu 3:03 PM, Andrew Dunstan wrote: >> >> On 2026-02-18 We 2:41 PM, Andrew Dunstan wrote: >>> >>> On 2026-02-17 Tu 4:56 PM, Andres Freund wrote: >>>> Hi, >>>> >>>> On 2026-02-17 16:31:02 -0500, Andrew Dunstan wrote: >>>>> On 2026-02-16 Mo 7:17 PM, Andres Freund wrote: >>>>>> I briefly tried this out. The overall resource usage of the test >>>>>> is noticeably >>>>>> reduced - and that's on linux with fast fork, so it should be >>>>>> considerably >>>>>> better on windows.  However, the tests take a lot longer than >>>>>> before, I think >>>>>> mostly due to polling for results rather than waiting for them to >>>>>> be ready >>>>>> using PQsocketPoll() or such. >>>>>> >>>>>> E.g. bloom/001_wal takes about 15s on HEAD for me, but 138s with >>>>>> the patch. I >>>>>> think that's just due to the various usleep(100_000); >>>>>> >>>>>> >>>>>> FWIW, oauth_validator/001_server fails with the patch at the moment. >>>>>> >>>>> Try this version. On my machine it's now a few percent faster. I >>>>> fixed the >>>>> polling. I also added pipeline support for large sets of commands, to >>>>> minimize roundtrips. >>>> Nice!  Will try it out. >>>> >>>> >>>> Have you tried it on windows already? That's where we pay by far >>>> the biggest >>>> price due to all the unnecessary process creations... >>>> >>>> It looks like strawberry perl has FFI::Platypus, but not FFI::C.  >>>> There is >>>> perl/vendor/lib/FFI/Platypus/Lang/C.pm, but that just seems like it's >>>> documentation.  There is however FFI::Platypus::Record, which maybe >>>> could >>>> suffice? >>>> >>>> Do we actually need FFI::C, or can we work around not having it? >>>> Looks like >>>> it's just used for notify related stuff. >>>> >>>> It looks like mingw doesn't have packages for FFI::Platypus, but it'll >>>> probably be a lot easier to build that than when using msvc. >>>> >>>> >>> >>> I replaced the use of FFI::C with FFI::Platypus::Record. That comes >>> for free with FFI::Platypus, so there would be no extra dependency. >>> It means a little extra housekeeping so we don't lose track of the >>> pointer for later use with PQfreemem, but it's not too bad. >>> >>> I have tried it out with Windows, seemed to work OK although the >>> xid_wraparound tests 2 and 3 timed out. >>> >>> Latest is attached. >>> >>> >>> >> >> Here is v12. I removed the XS variant in this version, which makes >> things simpler. We can restore it if necessary. >> >> Patch 1 adds the new framework >> >> Patch 2 adapts Cluster.pm to it, as well as handling some instability >> at global destruction time that was exacerbated by using FFI::Platypus. >> >> Patch 3 makes improvements in the individual TAP tests using the >> framework, including removing every one of the calls to >> background_psql(). >> >> >> I'm going to add this to the CF and will start testing (again) on >> Windows. >> >> >> > > v13 attached now passes all tests on my Windows machine. > > > rebased, including porting a new use of background_psql. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com --------------qPe8Eb3h7kDV46foKbqhjv9u Content-Type: text/x-patch; charset=UTF-8; name="v14-0001-Add-PostgreSQL-Test-Session-for-libpq-based-TAP-.patch" Content-Disposition: attachment; filename*0="v14-0001-Add-PostgreSQL-Test-Session-for-libpq-based-TAP-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBkYzE3YmZiODJmMjIxYWJiZmJhMmNjMDgyZTk3MDlmMmI0ODNiYjRhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogV2VkLCAzIEp1biAyMDI2IDA5OjUwOjE3IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTQgMS8zXSBBZGQgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbiBmb3IgbGlicHEt YmFzZWQgVEFQCiB0ZXN0IHNlc3Npb25zCgpJbnRyb2R1Y2UgYSBzZXNzaW9uIG9iamVjdCBm b3IgVEFQIHRlc3RzIHRoYXQgdGFsa3MgdG8gdGhlIHNlcnZlcgpkaXJlY3RseSB0aHJvdWdo IGxpYnBxIGluc3RlYWQgb2Ygc3Bhd25pbmcgYSBwc3FsIGNoaWxkIHByb2Nlc3MgZm9yCmVh Y2ggYmFja2dyb3VuZCBzZXNzaW9uLiAgQ29ubmVjdGluZyBpbi1wcm9jZXNzIGF2b2lkcyB0 aGUgb3ZlcmhlYWQgYW5kCmZyYWdpbGl0eSBvZiBkcml2aW5nIHBzcWwgb3ZlciBwaXBlcyBh bmQgZ2l2ZXMgdGVzdHMgc3luY2hyb25vdXMgYW5kCmFzeW5jaHJvbm91cyBxdWVyeSBpbnRl cmZhY2VzLCBub3RpY2UgY2FwdHVyZSwgYW5kIHBpcGVsaW5lZCBxdWVyaWVzLgoKbGlicHEg aXMgcmVhY2hlZCB0aHJvdWdoIGFuIEZGSTo6UGxhdHlwdXMgd3JhcHBlciwgc28gbm8gY29t cGlsZWQgWFMKbW9kdWxlIGlzIHJlcXVpcmVkLiAgVGhlIG5ldyBtb2R1bGVzIGFyZToKCiAg UG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbiAgLSB0aGUgbGlicHEgc2Vzc2lvbiBvYmplY3QK ICBQb3N0Z3JlU1FMOjpQcUZGSSAgICAgICAgICAtIEZGSSBiaW5kaW5ncyB0byBsaWJwcQog IFBvc3RncmVTUUw6OlBxQ29uc3RhbnRzICAgIC0gbGlicHEgY29uc3RhbnRzCiAgUG9zdGdy ZVNRTDo6UEdUeXBlcyAgICAgICAgLSBsaWJwcSB0eXBlIE9JRCBkZWZpbml0aW9ucwogIFBv c3RncmVTUUw6OkZpbmRMaWIgICAgICAgIC0gbG9jYXRlIHRoZSBsaWJwcSBzaGFyZWQgbGli cmFyeQoKVW5sZXNzIHRoZSBjb25uZWN0aW9uIHN0cmluZyBhbHJlYWR5IG5hbWVzIGEgcm9s ZSwgdGhlIHNlc3Npb24gcGlucyB0aGUKY29ubmVjdGluZyB1c2VyIHRvIHRoZSBvcGVyYXRp bmctc3lzdGVtIHVzZXIgcmF0aGVyIHRoYW4gbGV0dGluZyBhIHN0cmF5ClBHVVNFUiBpbiB0 aGUgZW52aXJvbm1lbnQgc2VsZWN0IGl0OyB0aGlzIG1hdGNoZXMgaG93IHRoZSByZXN0IG9m IHRoZQp0ZXN0IGZyYW1ld29yayBjb25uZWN0cyBhbmQsIGluIHBhcnRpY3VsYXIsIHRoZSBT U1BJIHVzZXJtYXAgdXNlZCBvbgpXaW5kb3dzLiAgQSBmYWlsZWQgY29ubmVjdGlvbiByZWNv cmRzIHRoZSBsaWJwcSBlcnJvciBtZXNzYWdlIChpbgokUG9zdGdyZVNRTDo6VGVzdDo6U2Vz c2lvbjo6Y29ubmVjdF9lcnJvcikgYmVmb3JlIHJldHVybmluZyB1bmRlZiwgc28KY2FsbGVy cyB0aGF0IHRyZWF0IHRoZSBmYWlsdXJlIGFzIGZhdGFsIGNhbiByZXBvcnQgd2h5LgoKSW5z dGFsbCB0aGUgbmV3IG1vZHVsZXMgZnJvbSBib3RoIHRoZSBtYWtlIGFuZCBtZXNvbiBidWls ZHMuCi0tLQogc3JjL3Rlc3QvcGVybC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICB8ICAg MTAgKwogc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML0ZpbmRMaWIucG0gICAgICB8ICAxNjQg KysrKwogc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1BHVHlwZXMucG0gICAgICB8ICAzNTYg KysrKysrKwogc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1BxQ29uc3RhbnRzLnBtICB8ICAx ODUgKysrKwogc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1BxRkZJLnBtICAgICAgICB8ICA0 MzcgKysrKysrKysrCiBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9TZXNzaW9uLnBt IHwgMTEwNyArKysrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9wZXJsL21lc29uLmJ1 aWxkICAgICAgICAgICAgICAgIHwgICAgNSArCiA3IGZpbGVzIGNoYW5nZWQsIDIyNjQgaW5z ZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3BlcmwvUG9zdGdyZVNR TC9GaW5kTGliLnBtCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcGVybC9Qb3N0Z3Jl U1FML1BHVHlwZXMucG0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9wZXJsL1Bvc3Rn cmVTUUwvUHFDb25zdGFudHMucG0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9wZXJs L1Bvc3RncmVTUUwvUHFGRkkucG0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9wZXJs L1Bvc3RncmVTUUwvVGVzdC9TZXNzaW9uLnBtCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcGVy bC9NYWtlZmlsZSBiL3NyYy90ZXN0L3BlcmwvTWFrZWZpbGUKaW5kZXggZmQ0ZmRhZjcwMGIu LmQyMzRjYzU5NjA4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9wZXJsL01ha2VmaWxlCisrKyBi L3NyYy90ZXN0L3BlcmwvTWFrZWZpbGUKQEAgLTI1LDkgKzI1LDE0IEBAIGluc3RhbGw6IGFs bCBpbnN0YWxsZGlycwogCSQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvUG9zdGdyZVNRTC9U ZXN0L0tlcmJlcm9zLnBtICckKERFU1RESVIpJChwZ3hzZGlyKS8kKHN1YmRpcikvUG9zdGdy ZVNRTC9UZXN0L0tlcmJlcm9zLnBtJwogCSQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvUG9z dGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0gJyQoREVTVERJUikkKHBneHNkaXIpLyQoc3ViZGly KS9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbScKIAkkKElOU1RBTExfREFUQSkgJChzcmNk aXIpL1Bvc3RncmVTUUwvVGVzdC9CYWNrZ3JvdW5kUHNxbC5wbSAnJChERVNURElSKSQocGd4 c2RpcikvJChzdWJkaXIpL1Bvc3RncmVTUUwvVGVzdC9CYWNrZ3JvdW5kUHNxbC5wbScKKwkk KElOU1RBTExfREFUQSkgJChzcmNkaXIpL1Bvc3RncmVTUUwvVGVzdC9TZXNzaW9uLnBtICck KERFU1RESVIpJChwZ3hzZGlyKS8kKHN1YmRpcikvUG9zdGdyZVNRTC9UZXN0L1Nlc3Npb24u cG0nCiAJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9Qb3N0Z3JlU1FML1Rlc3QvQWRqdXN0 RHVtcC5wbSAnJChERVNURElSKSQocGd4c2RpcikvJChzdWJkaXIpL1Bvc3RncmVTUUwvVGVz dC9BZGp1c3REdW1wLnBtJwogCSQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvUG9zdGdyZVNR TC9UZXN0L0FkanVzdFVwZ3JhZGUucG0gJyQoREVTVERJUikkKHBneHNkaXIpLyQoc3ViZGly KS9Qb3N0Z3JlU1FML1Rlc3QvQWRqdXN0VXBncmFkZS5wbScKIAkkKElOU1RBTExfREFUQSkg JChzcmNkaXIpL1Bvc3RncmVTUUwvVmVyc2lvbi5wbSAnJChERVNURElSKSQocGd4c2Rpcikv JChzdWJkaXIpL1Bvc3RncmVTUUwvVmVyc2lvbi5wbScKKwkkKElOU1RBTExfREFUQSkgJChz cmNkaXIpL1Bvc3RncmVTUUwvRmluZExpYi5wbSAnJChERVNURElSKSQocGd4c2RpcikvJChz dWJkaXIpL1Bvc3RncmVTUUwvRmluZExpYi5wbScKKwkkKElOU1RBTExfREFUQSkgJChzcmNk aXIpL1Bvc3RncmVTUUwvUHFGRkkucG0gJyQoREVTVERJUikkKHBneHNkaXIpLyQoc3ViZGly KS9Qb3N0Z3JlU1FML1BxRkZJLnBtJworCSQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvUG9z dGdyZVNRTC9QcUNvbnN0YW50cy5wbSAnJChERVNURElSKSQocGd4c2RpcikvJChzdWJkaXIp L1Bvc3RncmVTUUwvUHFDb25zdGFudHMucG0nCisJJChJTlNUQUxMX0RBVEEpICQoc3JjZGly KS9Qb3N0Z3JlU1FML1BHVHlwZXMucG0gJyQoREVTVERJUikkKHBneHNkaXIpLyQoc3ViZGly KS9Qb3N0Z3JlU1FML1BHVHlwZXMucG0nCiAKIHVuaW5zdGFsbDoKIAlybSAtZiAnJChERVNU RElSKSQocGd4c2RpcikvJChzdWJkaXIpL1Bvc3RncmVTUUwvVGVzdC9VdGlscy5wbScKQEAg LTM2LDggKzQxLDEzIEBAIHVuaW5zdGFsbDoKIAlybSAtZiAnJChERVNURElSKSQocGd4c2Rp cikvJChzdWJkaXIpL1Bvc3RncmVTUUwvVGVzdC9LZXJiZXJvcy5wbScKIAlybSAtZiAnJChE RVNURElSKSQocGd4c2RpcikvJChzdWJkaXIpL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBt JwogCXJtIC1mICckKERFU1RESVIpJChwZ3hzZGlyKS8kKHN1YmRpcikvUG9zdGdyZVNRTC9U ZXN0L0JhY2tncm91bmRQc3FsLnBtJworCXJtIC1mICckKERFU1RESVIpJChwZ3hzZGlyKS8k KHN1YmRpcikvUG9zdGdyZVNRTC9UZXN0L1Nlc3Npb24ucG0nCiAJcm0gLWYgJyQoREVTVERJ UikkKHBneHNkaXIpLyQoc3ViZGlyKS9Qb3N0Z3JlU1FML1Rlc3QvQWRqdXN0RHVtcC5wbScK IAlybSAtZiAnJChERVNURElSKSQocGd4c2RpcikvJChzdWJkaXIpL1Bvc3RncmVTUUwvVGVz dC9BZGp1c3RVcGdyYWRlLnBtJwogCXJtIC1mICckKERFU1RESVIpJChwZ3hzZGlyKS8kKHN1 YmRpcikvUG9zdGdyZVNRTC9WZXJzaW9uLnBtJworCXJtIC1mICckKERFU1RESVIpJChwZ3hz ZGlyKS8kKHN1YmRpcikvUG9zdGdyZVNRTC9GaW5kTGliLnBtJworCXJtIC1mICckKERFU1RE SVIpJChwZ3hzZGlyKS8kKHN1YmRpcikvUG9zdGdyZVNRTC9QcUZGSS5wbScKKwlybSAtZiAn JChERVNURElSKSQocGd4c2RpcikvJChzdWJkaXIpL1Bvc3RncmVTUUwvUHFDb25zdGFudHMu cG0nCisJcm0gLWYgJyQoREVTVERJUikkKHBneHNkaXIpLyQoc3ViZGlyKS9Qb3N0Z3JlU1FM L1BHVHlwZXMucG0nCiAKIGVuZGlmCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bvc3Rn cmVTUUwvRmluZExpYi5wbSBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9GaW5kTGliLnBt Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iNDI5MGM4NGM0Zgot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9GaW5kTGliLnBt CkBAIC0wLDAgKzEsMTY0IEBACisKKyMgQ29weXJpZ2h0IChjKSAyMDIxLTIwMjYsIFBvc3Rn cmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKz1wb2QKKworPWhlYWQxIE5BTUUK KworUG9zdGdyZVNRTDo6RmluZExpYiAtIGZpbmQgc2hhcmVkIGxpYnJhcmllcyBmb3IgUG9z dGdyZVNRTCBUQVAgdGVzdHMKKworPWhlYWQxIFNZTk9QU0lTCisKKyAgdXNlIFBvc3RncmVT UUw6OkZpbmRMaWI7CisKKyAgbXkgJGxpYnBhdGggPSBmaW5kX2xpYl9vcl9kaWUoCisgICAg ICBsaWIgICAgID0+ICdwcScsCisgICAgICBsaWJwYXRoID0+IFsnL3Vzci9sb2NhbC9wZ3Nx bC9saWInXSwKKyAgKTsKKworPWhlYWQxIERFU0NSSVBUSU9OCisKK1RoaXMgbW9kdWxlIHBy b3ZpZGVzIGEgc2ltcGxlIG1lY2hhbmlzbSB0byBsb2NhdGUgc2hhcmVkIGxpYnJhcmllcywK K3VzZWQgYXMgYSBsaWdodHdlaWdodCByZXBsYWNlbWVudCBmb3IgQzxGRkk6OkNoZWNrTGli Pi4gSXQgc2VhcmNoZXMKK2ZvciBsaWJyYXJpZXMgaW4gc3BlY2lmaWVkIHBhdGhzIGFuZCBj b21tb24gc3lzdGVtIGxvY2F0aW9ucy4KKworPWhlYWQxIEVYUE9SVEVEIEZVTkNUSU9OUwor Cis9b3ZlcgorCis9aXRlbSBmaW5kX2xpYl9vcl9kaWUoJWFyZ3MpCisKK1NlYXJjaGVzIGZv ciBhIHNoYXJlZCBsaWJyYXJ5IGFuZCByZXR1cm5zIGl0cyBmdWxsIHBhdGguIERpZXMgaWYg dGhlCitsaWJyYXJ5IGNhbm5vdCBiZSBmb3VuZC4KKworQXJndW1lbnRzOgorCis9b3Zlcgor Cis9aXRlbSBsaWIgPT4gJG5hbWUKKworUmVxdWlyZWQuIFRoZSBsaWJyYXJ5IG5hbWUgd2l0 aG91dCBwcmVmaXggb3Igc3VmZml4IChlLmcuLCBDPCdwcSc+IGZvcgorQzxsaWJwcS5zbz4p LgorCis9aXRlbSBsaWJwYXRoID0+IFxAcGF0aHMKKworT3B0aW9uYWwuIEFycmF5IG9mIGRp cmVjdG9yaWVzIHRvIHNlYXJjaCBmaXJzdC4KKworPWl0ZW0gc3lzdGVtcGF0aCA9PiBcQHBh dGhzCisKK09wdGlvbmFsLiBJZiBzZXQgdG8gYW4gZW1wdHkgYXJyYXkgQzxbXT4sIHN5c3Rl bSBwYXRocyB3aWxsIG5vdCBiZSBzZWFyY2hlZC4KKworPWJhY2sKKworPWJhY2sKKworPWN1 dAorCitwYWNrYWdlIFBvc3RncmVTUUw6OkZpbmRMaWI7CisKK3VzZSBzdHJpY3Q7Cit1c2Ug d2FybmluZ3MgRkFUQUwgPT4gcXcoYWxsKTsKKwordXNlIEV4cG9ydGVyIHF3KGltcG9ydCk7 Cit1c2UgRmlsZTo6U3BlYzsKK3VzZSBDb25maWc7CisKK291ciBARVhQT1JUID0gcXcoZmlu ZF9saWJfb3JfZGllKTsKKworc3ViIGZpbmRfbGliX29yX2RpZQoreworCW15ICVhcmdzID0g QF87CisKKwlteSAkbGlibmFtZSA9ICRhcmdze2xpYn0gb3IgZGllICJmaW5kX2xpYl9vcl9k aWU6ICdsaWInIGFyZ3VtZW50IHJlcXVpcmVkIjsKKwlteSAkbGlicGF0aCA9ICRhcmdze2xp YnBhdGh9IC8vIFtdOworCW15ICRzeXN0ZW1wYXRoID0gJGFyZ3N7c3lzdGVtcGF0aH07CisK KwlteSBAc2VhcmNoX3BhdGhzID0gQCRsaWJwYXRoOworCisJIyBBZGQgc3lzdGVtIHBhdGhz IHVubGVzcyBleHBsaWNpdGx5IGRpc2FibGVkCisJdW5sZXNzIChkZWZpbmVkICRzeXN0ZW1w YXRoICYmIHJlZigkc3lzdGVtcGF0aCkgZXEgJ0FSUkFZJyAmJiBAJHN5c3RlbXBhdGggPT0g MCkKKwl7CisJCXB1c2ggQHNlYXJjaF9wYXRocywgX2dldF9zeXN0ZW1fbGliX3BhdGhzKCk7 CisJfQorCisJIyBEZXRlcm1pbmUgbGlicmFyeSBmaWxlIHBhdHRlcm5zIGJhc2VkIG9uIE9T CisJbXkgQHBhdHRlcm5zID0gX2dldF9saWJfcGF0dGVybnMoJGxpYm5hbWUpOworCisJZm9y IG15ICRkaXIgKEBzZWFyY2hfcGF0aHMpCisJeworCQluZXh0IHVubGVzcyAtZCAkZGlyOwor CisJCWZvciBteSAkcGF0dGVybiAoQHBhdHRlcm5zKQorCQl7CisJCQlteSBAbWF0Y2hlcyA9 IGdsb2IoRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkZGlyLCAkcGF0dGVybikpOworCQkJZm9yIG15 ICRtYXRjaCAoQG1hdGNoZXMpCisJCQl7CisJCQkJcmV0dXJuICRtYXRjaCBpZiAtZiAkbWF0 Y2ggJiYgLXIgJG1hdGNoOworCQkJfQorCQl9CisJfQorCisJZGllICJmaW5kX2xpYl9vcl9k aWU6IHVuYWJsZSB0byBmaW5kIGxpYiRsaWJuYW1lIGluOiAiIC4gam9pbigiLCAiLCBAc2Vh cmNoX3BhdGhzKTsKK30KKworc3ViIF9nZXRfbGliX3BhdHRlcm5zCit7CisJbXkgJGxpYm5h bWUgPSBzaGlmdDsKKworCWlmICgkXk8gZXEgJ2RhcndpbicpCisJeworCQlyZXR1cm4gKCJs aWIkbGlibmFtZS5keWxpYiIsICJsaWIkbGlibmFtZS4qLmR5bGliIik7CisJfQorCWVsc2lm ICgkXk8gZXEgJ01TV2luMzInIHx8ICReTyBlcSAnY3lnd2luJykKKwl7CisJCXJldHVybiAo IiRsaWJuYW1lLmRsbCIsICJsaWIkbGlibmFtZS5kbGwiKTsKKwl9CisJZWxzZQorCXsKKwkJ IyBMaW51eCBhbmQgb3RoZXIgVW5peC1saWtlIHN5c3RlbXMKKwkJcmV0dXJuICgibGliJGxp Ym5hbWUuc28iLCAibGliJGxpYm5hbWUuc28uKiIpOworCX0KK30KKworc3ViIF9nZXRfc3lz dGVtX2xpYl9wYXRocworeworCW15IEBwYXRoczsKKworCSMgQ29tbW9uIHN5c3RlbSBsaWJy YXJ5IHBhdGhzCisJcHVzaCBAcGF0aHMsICcvdXNyL2xpYicsICcvdXNyL2xvY2FsL2xpYics ICcvbGliJzsKKworCSMgQWRkIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBwYXRocyBvbiBMaW51 eAorCWlmICgkXk8gZXEgJ2xpbnV4JykKKwl7CisJCXB1c2ggQHBhdGhzLCAnL3Vzci9saWIv eDg2XzY0LWxpbnV4LWdudScsICcvdXNyL2xpYi9hYXJjaDY0LWxpbnV4LWdudSc7CisJCXB1 c2ggQHBhdGhzLCAnL3Vzci9saWI2NCcsICcvbGliNjQnOworCX0KKworCSMgQWRkIHBhdGhz IGZyb20gTERfTElCUkFSWV9QQVRICisJaWYgKCRFTlZ7TERfTElCUkFSWV9QQVRIfSkKKwl7 CisJCXB1c2ggQHBhdGhzLCBzcGxpdCgvOi8sICRFTlZ7TERfTElCUkFSWV9QQVRIfSk7CisJ fQorCisJIyBtYWNPUyBzcGVjaWZpYworCWlmICgkXk8gZXEgJ2RhcndpbicpCisJeworCQlw dXNoIEBwYXRocywgJy9vcHQvaG9tZWJyZXcvbGliJywgJy91c3IvbG9jYWwvb3B0L2xpYnBx L2xpYic7CisJCWlmICgkRU5We0RZTERfTElCUkFSWV9QQVRIfSkKKwkJeworCQkJcHVzaCBA cGF0aHMsIHNwbGl0KC86LywgJEVOVntEWUxEX0xJQlJBUllfUEFUSH0pOworCQl9CisJfQor CisJcmV0dXJuIEBwYXRoczsKK30KKworPXBvZAorCis9aGVhZDEgU0VFIEFMU08KKworTDxQ b3N0Z3JlU1FMOjpQcUZGST4KKworPWN1dAorCisxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cGVybC9Qb3N0Z3JlU1FML1BHVHlwZXMucG0gYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwv UEdUeXBlcy5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMmJj MDA3YzMyM2EKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwv UEdUeXBlcy5wbQpAQCAtMCwwICsxLDM1NiBAQAorCisjIENvcHlyaWdodCAoYykgMjAyMS0y MDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCis9cG9kCisKKz1o ZWFkMSBOQU1FCisKK1Bvc3RncmVTUUw6OlBHVHlwZXMgLSBQb3N0Z3JlU1FMIGJhY2tlbmQg dHlwZSBPSUQgY29uc3RhbnRzCisKKz1oZWFkMSBTWU5PUFNJUworCisgIHVzZSBQb3N0Z3Jl U1FMOjpQR1R5cGVzOworCisgIGlmICgkdHlwZV9vaWQgPT0gVEVYVE9JRCkgeyAuLi4gfQor CisgIGlmICgkdHlwZV9vaWQgPT0gSU5UNEFSUkFZT0lEKSB7IC4uLiB9CisKKz1oZWFkMSBE RVNDUklQVElPTgorCitUaGlzIG1vZHVsZSBwcm92aWRlcyBjb25zdGFudHMgZm9yIFBvc3Rn cmVTUUwgYmFja2VuZCB0eXBlIE9JRHMsIGFzIGRlZmluZWQKK2luIEM8c3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ190eXBlX2QuaD4uIFRoZXNlIGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IGNv bHVtbgordHlwZXMgaW4gcXVlcnkgcmVzdWx0cyB2aWEgQzxQUWZ0eXBlKCk+LgorCitBbGwg Y29uc3RhbnRzIGFyZSBleHBvcnRlZCBieSBkZWZhdWx0LgorCis9aGVhZDEgRVhQT1JURUQg Q09OU1RBTlRTCisKKz1oZWFkMiBCYXNpYyBUeXBlcworCitDPEJPT0xPSUQ+LCBDPEJZVEVB T0lEPiwgQzxDSEFST0lEPiwgQzxOQU1FT0lEPiwgQzxJTlQ4T0lEPiwgQzxJTlQyT0lEPiwK K0M8SU5UMlZFQ1RPUk9JRD4sIEM8SU5UNE9JRD4sIEM8VEVYVE9JRD4sIEM8T0lET0lEPiwg QzxUSURPSUQ+LCBDPFhJRE9JRD4sCitDPENJRE9JRD4sIEM8T0lEVkVDVE9ST0lEPiwgQzxK U09OT0lEPiwgQzxYTUxPSUQ+LCBDPFhJRDhPSUQ+LCBDPFBPSU5UT0lEPiwKK0M8TFNFR09J RD4sIEM8UEFUSE9JRD4sIEM8Qk9YT0lEPiwgQzxQT0xZR09OT0lEPiwgQzxMSU5FT0lEPiwg QzxGTE9BVDRPSUQ+LAorQzxGTE9BVDhPSUQ+LCBDPFVOS05PV05PSUQ+LCBDPENJUkNMRU9J RD4sIEM8TU9ORVlPSUQ+LCBDPE1BQ0FERFJPSUQ+LAorQzxJTkVUT0lEPiwgQzxDSURST0lE PiwgQzxNQUNBRERSOE9JRD4sIEM8QUNMSVRFTU9JRD4sIEM8QlBDSEFST0lEPiwKK0M8VkFS Q0hBUk9JRD4sIEM8REFURU9JRD4sIEM8VElNRU9JRD4sIEM8VElNRVNUQU1QT0lEPiwgQzxU SU1FU1RBTVBUWk9JRD4sCitDPElOVEVSVkFMT0lEPiwgQzxUSU1FVFpPSUQ+LCBDPEJJVE9J RD4sIEM8VkFSQklUT0lEPiwgQzxOVU1FUklDT0lEPiwKK0M8UkVGQ1VSU09ST0lEPiwgQzxV VUlET0lEPiwgQzxUU1ZFQ1RPUk9JRD4sIEM8R1RTVkVDVE9ST0lEPiwgQzxUU1FVRVJZT0lE PiwKK0M8SlNPTkJPSUQ+LCBDPEpTT05QQVRIT0lEPiwgQzxUWElEX1NOQVBTSE9UT0lEPgor Cis9aGVhZDIgUmFuZ2UgVHlwZXMKKworQzxJTlQ0UkFOR0VPSUQ+LCBDPE5VTVJBTkdFT0lE PiwgQzxUU1JBTkdFT0lEPiwgQzxUU1RaUkFOR0VPSUQ+LAorQzxEQVRFUkFOR0VPSUQ+LCBD PElOVDhSQU5HRU9JRD4KKworPWhlYWQyIE11bHRpcmFuZ2UgVHlwZXMKKworQzxJTlQ0TVVM VElSQU5HRU9JRD4sIEM8TlVNTVVMVElSQU5HRU9JRD4sIEM8VFNNVUxUSVJBTkdFT0lEPiwK K0M8VFNUWk1VTFRJUkFOR0VPSUQ+LCBDPERBVEVNVUxUSVJBTkdFT0lEPiwgQzxJTlQ4TVVM VElSQU5HRU9JRD4KKworPWhlYWQyIFBzZXVkbyBUeXBlcworCitDPFJFQ09SRE9JRD4sIEM8 UkVDT1JEQVJSQVlPSUQ+LCBDPENTVFJJTkdPSUQ+LCBDPFZPSURPSUQ+LCBDPFRSSUdHRVJP SUQ+LAorQzxFVkVOVF9UUklHR0VST0lEPgorCis9aGVhZDIgQXJyYXkgVHlwZXMKKworQXJy YXkgdHlwZSBPSURzIGZvbGxvdyB0aGUgcGF0dGVybiBDPHtCQVNFTkFNRX1BUlJBWU9JRD4s IGUuZy4sIEM8VEVYVEFSUkFZT0lEPiwKK0M8SU5UNEFSUkFZT0lEPiwgQzxKU09OQkFSUkFZ T0lEPi4KKworPWN1dAorCitwYWNrYWdlIFBvc3RncmVTUUw6OlBHVHlwZXM7CisKK3VzZSBz dHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gcXcoYWxsKTsKKwordXNlIEV4cG9ydGVy IHF3KGltcG9ydCk7CisKK291ciBARVhQT1JUID0gcXcoCisKKyAgQk9PTE9JRAorICBCWVRF QU9JRAorICBDSEFST0lECisgIE5BTUVPSUQKKyAgSU5UOE9JRAorICBJTlQyT0lECisgIElO VDJWRUNUT1JPSUQKKyAgSU5UNE9JRAorICBURVhUT0lECisgIE9JRE9JRAorICBUSURPSUQK KyAgWElET0lECisgIENJRE9JRAorICBPSURWRUNUT1JPSUQKKyAgSlNPTk9JRAorICBYTUxP SUQKKyAgWElEOE9JRAorICBQT0lOVE9JRAorICBMU0VHT0lECisgIFBBVEhPSUQKKyAgQk9Y T0lECisgIFBPTFlHT05PSUQKKyAgTElORU9JRAorICBGTE9BVDRPSUQKKyAgRkxPQVQ4T0lE CisgIFVOS05PV05PSUQKKyAgQ0lSQ0xFT0lECisgIE1PTkVZT0lECisgIE1BQ0FERFJPSUQK KyAgSU5FVE9JRAorICBDSURST0lECisgIE1BQ0FERFI4T0lECisgIEFDTElURU1PSUQKKyAg QlBDSEFST0lECisgIFZBUkNIQVJPSUQKKyAgREFURU9JRAorICBUSU1FT0lECisgIFRJTUVT VEFNUE9JRAorICBUSU1FU1RBTVBUWk9JRAorICBJTlRFUlZBTE9JRAorICBUSU1FVFpPSUQK KyAgQklUT0lECisgIFZBUkJJVE9JRAorICBOVU1FUklDT0lECisgIFJFRkNVUlNPUk9JRAor ICBVVUlET0lECisgIFRTVkVDVE9ST0lECisgIEdUU1ZFQ1RPUk9JRAorICBUU1FVRVJZT0lE CisgIEpTT05CT0lECisgIEpTT05QQVRIT0lECisgIFRYSURfU05BUFNIT1RPSUQKKyAgSU5U NFJBTkdFT0lECisgIE5VTVJBTkdFT0lECisgIFRTUkFOR0VPSUQKKyAgVFNUWlJBTkdFT0lE CisgIERBVEVSQU5HRU9JRAorICBJTlQ4UkFOR0VPSUQKKyAgSU5UNE1VTFRJUkFOR0VPSUQK KyAgTlVNTVVMVElSQU5HRU9JRAorICBUU01VTFRJUkFOR0VPSUQKKyAgVFNUWk1VTFRJUkFO R0VPSUQKKyAgREFURU1VTFRJUkFOR0VPSUQKKyAgSU5UOE1VTFRJUkFOR0VPSUQKKyAgUkVD T1JET0lECisgIFJFQ09SREFSUkFZT0lECisgIENTVFJJTkdPSUQKKyAgVk9JRE9JRAorICBU UklHR0VST0lECisgIEVWRU5UX1RSSUdHRVJPSUQKKworICBCT09MQVJSQVlPSUQKKyAgQllU RUFBUlJBWU9JRAorICBDSEFSQVJSQVlPSUQKKyAgTkFNRUFSUkFZT0lECisgIElOVDhBUlJB WU9JRAorICBJTlQyQVJSQVlPSUQKKyAgSU5UMlZFQ1RPUkFSUkFZT0lECisgIElOVDRBUlJB WU9JRAorICBURVhUQVJSQVlPSUQKKyAgT0lEQVJSQVlPSUQKKyAgVElEQVJSQVlPSUQKKyAg WElEQVJSQVlPSUQKKyAgQ0lEQVJSQVlPSUQKKyAgT0lEVkVDVE9SQVJSQVlPSUQKKyAgSlNP TkFSUkFZT0lECisgIFhNTEFSUkFZT0lECisgIFhJRDhBUlJBWU9JRAorICBQT0lOVEFSUkFZ T0lECisgIExTRUdBUlJBWU9JRAorICBQQVRIQVJSQVlPSUQKKyAgQk9YQVJSQVlPSUQKKyAg UE9MWUdPTkFSUkFZT0lECisgIExJTkVBUlJBWU9JRAorICBGTE9BVDRBUlJBWU9JRAorICBG TE9BVDhBUlJBWU9JRAorICBDSVJDTEVBUlJBWU9JRAorICBNT05FWUFSUkFZT0lECisgIE1B Q0FERFJBUlJBWU9JRAorICBJTkVUQVJSQVlPSUQKKyAgQ0lEUkFSUkFZT0lECisgIE1BQ0FE RFI4QVJSQVlPSUQKKyAgQUNMSVRFTUFSUkFZT0lECisgIEJQQ0hBUkFSUkFZT0lECisgIFZB UkNIQVJBUlJBWU9JRAorICBEQVRFQVJSQVlPSUQKKyAgVElNRUFSUkFZT0lECisgIFRJTUVT VEFNUEFSUkFZT0lECisgIFRJTUVTVEFNUFRaQVJSQVlPSUQKKyAgSU5URVJWQUxBUlJBWU9J RAorICBUSU1FVFpBUlJBWU9JRAorICBCSVRBUlJBWU9JRAorICBWQVJCSVRBUlJBWU9JRAor ICBOVU1FUklDQVJSQVlPSUQKKyAgUkVGQ1VSU09SQVJSQVlPSUQKKyAgVVVJREFSUkFZT0lE CisgIFRTVkVDVE9SQVJSQVlPSUQKKyAgR1RTVkVDVE9SQVJSQVlPSUQKKyAgVFNRVUVSWUFS UkFZT0lECisgIEpTT05CQVJSQVlPSUQKKyAgSlNPTlBBVEhBUlJBWU9JRAorICBUWElEX1NO QVBTSE9UQVJSQVlPSUQKKyAgSU5UNFJBTkdFQVJSQVlPSUQKKyAgTlVNUkFOR0VBUlJBWU9J RAorICBUU1JBTkdFQVJSQVlPSUQKKyAgVFNUWlJBTkdFQVJSQVlPSUQKKyAgREFURVJBTkdF QVJSQVlPSUQKKyAgSU5UOFJBTkdFQVJSQVlPSUQKKyAgSU5UNE1VTFRJUkFOR0VBUlJBWU9J RAorICBOVU1NVUxUSVJBTkdFQVJSQVlPSUQKKyAgVFNNVUxUSVJBTkdFQVJSQVlPSUQKKyAg VFNUWk1VTFRJUkFOR0VBUlJBWU9JRAorICBEQVRFTVVMVElSQU5HRUFSUkFZT0lECisgIElO VDhNVUxUSVJBTkdFQVJSQVlPSUQKKyAgQ1NUUklOR0FSUkFZT0lECisKKyk7CisKK3VzZSBj b25zdGFudCB7CisJQk9PTE9JRCAgICAgICAgICAgICAgICAgPT4gMTYsCisJQllURUFPSUQg ICAgICAgICAgICAgICAgPT4gMTcsCisJQ0hBUk9JRCAgICAgICAgICAgICAgICAgPT4gMTgs CisJTkFNRU9JRCAgICAgICAgICAgICAgICAgPT4gMTksCisJSU5UOE9JRCAgICAgICAgICAg ICAgICAgPT4gMjAsCisJSU5UMk9JRCAgICAgICAgICAgICAgICAgPT4gMjEsCisJSU5UMlZF Q1RPUk9JRCAgICAgICAgICAgPT4gMjIsCisJSU5UNE9JRCAgICAgICAgICAgICAgICAgPT4g MjMsCisJVEVYVE9JRCAgICAgICAgICAgICAgICAgPT4gMjUsCisJT0lET0lEICAgICAgICAg ICAgICAgICAgPT4gMjYsCisJVElET0lEICAgICAgICAgICAgICAgICAgPT4gMjcsCisJWElE T0lEICAgICAgICAgICAgICAgICAgPT4gMjgsCisJQ0lET0lEICAgICAgICAgICAgICAgICAg PT4gMjksCisJT0lEVkVDVE9ST0lEICAgICAgICAgICAgPT4gMzAsCisJSlNPTk9JRCAgICAg ICAgICAgICAgICAgPT4gMTE0LAorCVhNTE9JRCAgICAgICAgICAgICAgICAgID0+IDE0MiwK KwlYSUQ4T0lEICAgICAgICAgICAgICAgICA9PiA1MDY5LAorCVBPSU5UT0lEICAgICAgICAg ICAgICAgID0+IDYwMCwKKwlMU0VHT0lEICAgICAgICAgICAgICAgICA9PiA2MDEsCisJUEFU SE9JRCAgICAgICAgICAgICAgICAgPT4gNjAyLAorCUJPWE9JRCAgICAgICAgICAgICAgICAg ID0+IDYwMywKKwlQT0xZR09OT0lEICAgICAgICAgICAgICA9PiA2MDQsCisJTElORU9JRCAg ICAgICAgICAgICAgICAgPT4gNjI4LAorCUZMT0FUNE9JRCAgICAgICAgICAgICAgID0+IDcw MCwKKwlGTE9BVDhPSUQgICAgICAgICAgICAgICA9PiA3MDEsCisJVU5LTk9XTk9JRCAgICAg ICAgICAgICAgPT4gNzA1LAorCUNJUkNMRU9JRCAgICAgICAgICAgICAgID0+IDcxOCwKKwlN T05FWU9JRCAgICAgICAgICAgICAgICA9PiA3OTAsCisJTUFDQUREUk9JRCAgICAgICAgICAg ICAgPT4gODI5LAorCUlORVRPSUQgICAgICAgICAgICAgICAgID0+IDg2OSwKKwlDSURST0lE ICAgICAgICAgICAgICAgICA9PiA2NTAsCisJTUFDQUREUjhPSUQgICAgICAgICAgICAgPT4g Nzc0LAorCUFDTElURU1PSUQgICAgICAgICAgICAgID0+IDEwMzMsCisJQlBDSEFST0lEICAg ICAgICAgICAgICAgPT4gMTA0MiwKKwlWQVJDSEFST0lEICAgICAgICAgICAgICA9PiAxMDQz LAorCURBVEVPSUQgICAgICAgICAgICAgICAgID0+IDEwODIsCisJVElNRU9JRCAgICAgICAg ICAgICAgICAgPT4gMTA4MywKKwlUSU1FU1RBTVBPSUQgICAgICAgICAgICA9PiAxMTE0LAor CVRJTUVTVEFNUFRaT0lEICAgICAgICAgID0+IDExODQsCisJSU5URVJWQUxPSUQgICAgICAg ICAgICAgPT4gMTE4NiwKKwlUSU1FVFpPSUQgICAgICAgICAgICAgICA9PiAxMjY2LAorCUJJ VE9JRCAgICAgICAgICAgICAgICAgID0+IDE1NjAsCisJVkFSQklUT0lEICAgICAgICAgICAg ICAgPT4gMTU2MiwKKwlOVU1FUklDT0lEICAgICAgICAgICAgICA9PiAxNzAwLAorCVJFRkNV UlNPUk9JRCAgICAgICAgICAgID0+IDE3OTAsCisJVVVJRE9JRCAgICAgICAgICAgICAgICAg PT4gMjk1MCwKKwlUU1ZFQ1RPUk9JRCAgICAgICAgICAgICA9PiAzNjE0LAorCUdUU1ZFQ1RP Uk9JRCAgICAgICAgICAgID0+IDM2NDIsCisJVFNRVUVSWU9JRCAgICAgICAgICAgICAgPT4g MzYxNSwKKwlKU09OQk9JRCAgICAgICAgICAgICAgICA9PiAzODAyLAorCUpTT05QQVRIT0lE ICAgICAgICAgICAgID0+IDQwNzIsCisJVFhJRF9TTkFQU0hPVE9JRCAgICAgICAgPT4gMjk3 MCwKKwlJTlQ0UkFOR0VPSUQgICAgICAgICAgICA9PiAzOTA0LAorCU5VTVJBTkdFT0lEICAg ICAgICAgICAgID0+IDM5MDYsCisJVFNSQU5HRU9JRCAgICAgICAgICAgICAgPT4gMzkwOCwK KwlUU1RaUkFOR0VPSUQgICAgICAgICAgICA9PiAzOTEwLAorCURBVEVSQU5HRU9JRCAgICAg ICAgICAgID0+IDM5MTIsCisJSU5UOFJBTkdFT0lEICAgICAgICAgICAgPT4gMzkyNiwKKwlJ TlQ0TVVMVElSQU5HRU9JRCAgICAgICA9PiA0NDUxLAorCU5VTU1VTFRJUkFOR0VPSUQgICAg ICAgID0+IDQ1MzIsCisJVFNNVUxUSVJBTkdFT0lEICAgICAgICAgPT4gNDUzMywKKwlUU1Ra TVVMVElSQU5HRU9JRCAgICAgICA9PiA0NTM0LAorCURBVEVNVUxUSVJBTkdFT0lEICAgICAg ID0+IDQ1MzUsCisJSU5UOE1VTFRJUkFOR0VPSUQgICAgICAgPT4gNDUzNiwKKwlSRUNPUkRP SUQgICAgICAgICAgICAgICA9PiAyMjQ5LAorCVJFQ09SREFSUkFZT0lEICAgICAgICAgID0+ IDIyODcsCisJQ1NUUklOR09JRCAgICAgICAgICAgICAgPT4gMjI3NSwKKwlWT0lET0lEICAg ICAgICAgICAgICAgICA9PiAyMjc4LAorCVRSSUdHRVJPSUQgICAgICAgICAgICAgID0+IDIy NzksCisJRVZFTlRfVFJJR0dFUk9JRCAgICAgICAgPT4gMzgzOCwKKworCUJPT0xBUlJBWU9J RCAgICAgICAgICAgID0+IDEwMDAsCisJQllURUFBUlJBWU9JRCAgICAgICAgICAgPT4gMTAw MSwKKwlDSEFSQVJSQVlPSUQgICAgICAgICAgICA9PiAxMDAyLAorCU5BTUVBUlJBWU9JRCAg ICAgICAgICAgID0+IDEwMDMsCisJSU5UOEFSUkFZT0lEICAgICAgICAgICAgPT4gMTAxNiwK KwlJTlQyQVJSQVlPSUQgICAgICAgICAgICA9PiAxMDA1LAorCUlOVDJWRUNUT1JBUlJBWU9J RCAgICAgID0+IDEwMDYsCisJSU5UNEFSUkFZT0lEICAgICAgICAgICAgPT4gMTAwNywKKwlU RVhUQVJSQVlPSUQgICAgICAgICAgICA9PiAxMDA5LAorCU9JREFSUkFZT0lEICAgICAgICAg ICAgID0+IDEwMjgsCisJVElEQVJSQVlPSUQgICAgICAgICAgICAgPT4gMTAxMCwKKwlYSURB UlJBWU9JRCAgICAgICAgICAgICA9PiAxMDExLAorCUNJREFSUkFZT0lEICAgICAgICAgICAg ID0+IDEwMTIsCisJT0lEVkVDVE9SQVJSQVlPSUQgICAgICAgPT4gMTAxMywKKwlKU09OQVJS QVlPSUQgICAgICAgICAgICA9PiAxOTksCisJWE1MQVJSQVlPSUQgICAgICAgICAgICAgPT4g MTQzLAorCVhJRDhBUlJBWU9JRCAgICAgICAgICAgID0+IDI3MSwKKwlQT0lOVEFSUkFZT0lE ICAgICAgICAgICA9PiAxMDE3LAorCUxTRUdBUlJBWU9JRCAgICAgICAgICAgID0+IDEwMTgs CisJUEFUSEFSUkFZT0lEICAgICAgICAgICAgPT4gMTAxOSwKKwlCT1hBUlJBWU9JRCAgICAg ICAgICAgICA9PiAxMDIwLAorCVBPTFlHT05BUlJBWU9JRCAgICAgICAgID0+IDEwMjcsCisJ TElORUFSUkFZT0lEICAgICAgICAgICAgPT4gNjI5LAorCUZMT0FUNEFSUkFZT0lEICAgICAg ICAgID0+IDEwMjEsCisJRkxPQVQ4QVJSQVlPSUQgICAgICAgICAgPT4gMTAyMiwKKwlDSVJD TEVBUlJBWU9JRCAgICAgICAgICA9PiA3MTksCisJTU9ORVlBUlJBWU9JRCAgICAgICAgICAg PT4gNzkxLAorCU1BQ0FERFJBUlJBWU9JRCAgICAgICAgID0+IDEwNDAsCisJSU5FVEFSUkFZ T0lEICAgICAgICAgICAgPT4gMTA0MSwKKwlDSURSQVJSQVlPSUQgICAgICAgICAgICA9PiA2 NTEsCisJTUFDQUREUjhBUlJBWU9JRCAgICAgICAgPT4gNzc1LAorCUFDTElURU1BUlJBWU9J RCAgICAgICAgID0+IDEwMzQsCisJQlBDSEFSQVJSQVlPSUQgICAgICAgICAgPT4gMTAxNCwK KwlWQVJDSEFSQVJSQVlPSUQgICAgICAgICA9PiAxMDE1LAorCURBVEVBUlJBWU9JRCAgICAg ICAgICAgID0+IDExODIsCisJVElNRUFSUkFZT0lEICAgICAgICAgICAgPT4gMTE4MywKKwlU SU1FU1RBTVBBUlJBWU9JRCAgICAgICA9PiAxMTE1LAorCVRJTUVTVEFNUFRaQVJSQVlPSUQg ICAgID0+IDExODUsCisJSU5URVJWQUxBUlJBWU9JRCAgICAgICAgPT4gMTE4NywKKwlUSU1F VFpBUlJBWU9JRCAgICAgICAgICA9PiAxMjcwLAorCUJJVEFSUkFZT0lEICAgICAgICAgICAg ID0+IDE1NjEsCisJVkFSQklUQVJSQVlPSUQgICAgICAgICAgPT4gMTU2MywKKwlOVU1FUklD QVJSQVlPSUQgICAgICAgICA9PiAxMjMxLAorCVJFRkNVUlNPUkFSUkFZT0lEICAgICAgID0+ IDIyMDEsCisJVVVJREFSUkFZT0lEICAgICAgICAgICAgPT4gMjk1MSwKKwlUU1ZFQ1RPUkFS UkFZT0lEICAgICAgICA9PiAzNjQzLAorCUdUU1ZFQ1RPUkFSUkFZT0lEICAgICAgID0+IDM2 NDQsCisJVFNRVUVSWUFSUkFZT0lEICAgICAgICAgPT4gMzY0NSwKKwlKU09OQkFSUkFZT0lE ICAgICAgICAgICA9PiAzODA3LAorCUpTT05QQVRIQVJSQVlPSUQgICAgICAgID0+IDQwNzMs CisJVFhJRF9TTkFQU0hPVEFSUkFZT0lEICAgPT4gMjk0OSwKKwlJTlQ0UkFOR0VBUlJBWU9J RCAgICAgICA9PiAzOTA1LAorCU5VTVJBTkdFQVJSQVlPSUQgICAgICAgID0+IDM5MDcsCisJ VFNSQU5HRUFSUkFZT0lEICAgICAgICAgPT4gMzkwOSwKKwlUU1RaUkFOR0VBUlJBWU9JRCAg ICAgICA9PiAzOTExLAorCURBVEVSQU5HRUFSUkFZT0lEICAgICAgID0+IDM5MTMsCisJSU5U OFJBTkdFQVJSQVlPSUQgICAgICAgPT4gMzkyNywKKwlJTlQ0TVVMVElSQU5HRUFSUkFZT0lE ICA9PiA2MTUwLAorCU5VTU1VTFRJUkFOR0VBUlJBWU9JRCAgID0+IDYxNTEsCisJVFNNVUxU SVJBTkdFQVJSQVlPSUQgICAgPT4gNjE1MiwKKwlUU1RaTVVMVElSQU5HRUFSUkFZT0lEICA9 PiA2MTUzLAorCURBVEVNVUxUSVJBTkdFQVJSQVlPSUQgID0+IDYxNTUsCisJSU5UOE1VTFRJ UkFOR0VBUlJBWU9JRCAgPT4gNjE1NywKKwlDU1RSSU5HQVJSQVlPSUQgICAgICAgICA9PiAx MjYzLAorfTsKKworPXBvZAorCis9aGVhZDEgU0VFIEFMU08KKworTDxQb3N0Z3JlU1FMOjpQ cUZGST4sIEw8UG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbj4KKworPWN1dAorCisxOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1BxQ29uc3RhbnRzLnBtIGIvc3Jj L3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1BxQ29uc3RhbnRzLnBtCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mODE5MTNiNTgwYQotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9QcUNvbnN0YW50cy5wbQpAQCAtMCwwICsxLDE4 NSBAQAorCisjIENvcHlyaWdodCAoYykgMjAyMS0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBE ZXZlbG9wbWVudCBHcm91cAorCis9cG9kCisKKz1oZWFkMSBOQU1FCisKK1Bvc3RncmVTUUw6 OlBxQ29uc3RhbnRzIC0gbGlicHEgY29uc3RhbnRzIGZvciBQb3N0Z3JlU1FMIFRBUCB0ZXN0 cworCis9aGVhZDEgU1lOT1BTSVMKKworICB1c2UgUG9zdGdyZVNRTDo6UHFDb25zdGFudHM7 CisKKyAgaWYgKFBRc3RhdHVzKCRjb25uKSA9PSBDT05ORUNUSU9OX09LKSB7IC4uLiB9CisK KyAgaWYgKFBRcmVzdWx0U3RhdHVzKCRyZXN1bHQpID09IFBHUkVTX1RVUExFU19PSykgeyAu Li4gfQorCis9aGVhZDEgREVTQ1JJUFRJT04KKworVGhpcyBtb2R1bGUgcHJvdmlkZXMgbGli cHEgY29uc3RhbnRzIHVzZWQgYnkgdGhlIEZGSSBiYWNrZW5kCisoQzxQb3N0Z3JlU1FMOjpQ cUZGST4pLiAgQWxsIGNvbnN0YW50cyBhcmUgZXhwb3J0ZWQgYnkgZGVmYXVsdC4KKworPWhl YWQxIEVYUE9SVEVEIENPTlNUQU5UUworCis9aGVhZDIgQ29ubmVjdGlvbiBTdGF0dXMgKENv bm5TdGF0dXNUeXBlKQorCitDPENPTk5FQ1RJT05fT0s+LCBDPENPTk5FQ1RJT05fQkFEPiwg QzxDT05ORUNUSU9OX1NUQVJURUQ+LAorQzxDT05ORUNUSU9OX01BREU+LCBDPENPTk5FQ1RJ T05fQVdBSVRJTkdfUkVTUE9OU0U+LCBDPENPTk5FQ1RJT05fQVVUSF9PSz4sCitDPENPTk5F Q1RJT05fU0VURU5WPiwgQzxDT05ORUNUSU9OX1NTTF9TVEFSVFVQPiwgQzxDT05ORUNUSU9O X05FRURFRD4sCitDPENPTk5FQ1RJT05fQ0hFQ0tfV1JJVEFCTEU+LCBDPENPTk5FQ1RJT05f Q09OU1VNRT4sIEM8Q09OTkVDVElPTl9HU1NfU1RBUlRVUD4sCitDPENPTk5FQ1RJT05fQ0hF Q0tfVEFSR0VUPiwgQzxDT05ORUNUSU9OX0NIRUNLX1NUQU5EQlk+LCBDPENPTk5FQ1RJT05f QUxMT0NBVEVEPgorCis9aGVhZDIgRXhlY3V0aW9uIFN0YXR1cyAoRXhlY1N0YXR1c1R5cGUp CisKK0M8UEdSRVNfRU1QVFlfUVVFUlk+LCBDPFBHUkVTX0NPTU1BTkRfT0s+LCBDPFBHUkVT X1RVUExFU19PSz4sCitDPFBHUkVTX0NPUFlfT1VUPiwgQzxQR1JFU19DT1BZX0lOPiwgQzxQ R1JFU19CQURfUkVTUE9OU0U+LAorQzxQR1JFU19OT05GQVRBTF9FUlJPUj4sIEM8UEdSRVNf RkFUQUxfRVJST1I+LCBDPFBHUkVTX0NPUFlfQk9USD4sCitDPFBHUkVTX1NJTkdMRV9UVVBM RT4sIEM8UEdSRVNfUElQRUxJTkVfU1lOQz4sIEM8UEdSRVNfUElQRUxJTkVfQUJPUlRFRD4s CitDPFBHUkVTX1RVUExFU19DSFVOSz4KKworPWhlYWQyIFBvbGxpbmcgU3RhdHVzIChQb3N0 Z3Jlc1BvbGxpbmdTdGF0dXNUeXBlKQorCitDPFBHUkVTX1BPTExJTkdfRkFJTEVEPiwgQzxQ R1JFU19QT0xMSU5HX1JFQURJTkc+LCBDPFBHUkVTX1BPTExJTkdfV1JJVElORz4sCitDPFBH UkVTX1BPTExJTkdfT0s+LCBDPFBHUkVTX1BPTExJTkdfQUNUSVZFPgorCis9aGVhZDIgUGlu ZyBTdGF0dXMgKFBHUGluZykKKworQzxQUVBJTkdfT0s+LCBDPFBRUElOR19SRUpFQ1Q+LCBD PFBRUElOR19OT19SRVNQT05TRT4sIEM8UFFQSU5HX05PX0FUVEVNUFQ+CisKKz1oZWFkMiBU cmFuc2FjdGlvbiBTdGF0dXMgKFBHVHJhbnNhY3Rpb25TdGF0dXNUeXBlKQorCitDPFBRVFJB TlNfSURMRT4sIEM8UFFUUkFOU19BQ1RJVkU+LCBDPFBRVFJBTlNfSU5UUkFOUz4sIEM8UFFU UkFOU19JTkVSUk9SPiwKK0M8UFFUUkFOU19VTktOT1dOPgorCis9Y3V0CisKK3BhY2thZ2Ug UG9zdGdyZVNRTDo6UHFDb25zdGFudHM7CisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3Mg RkFUQUwgPT4gcXcoYWxsKTsKKwordXNlIEV4cG9ydGVyIHF3KGltcG9ydCk7CisKK291ciBA RVhQT1JUID0gcXcoCisKKyAgQ09OTkVDVElPTl9PSworICBDT05ORUNUSU9OX0JBRAorICBD T05ORUNUSU9OX1NUQVJURUQKKyAgQ09OTkVDVElPTl9NQURFCisgIENPTk5FQ1RJT05fQVdB SVRJTkdfUkVTUE9OU0UKKyAgQ09OTkVDVElPTl9BVVRIX09LCisgIENPTk5FQ1RJT05fU0VU RU5WCisgIENPTk5FQ1RJT05fU1NMX1NUQVJUVVAKKyAgQ09OTkVDVElPTl9ORUVERUQKKyAg Q09OTkVDVElPTl9DSEVDS19XUklUQUJMRQorICBDT05ORUNUSU9OX0NPTlNVTUUKKyAgQ09O TkVDVElPTl9HU1NfU1RBUlRVUAorICBDT05ORUNUSU9OX0NIRUNLX1RBUkdFVAorICBDT05O RUNUSU9OX0NIRUNLX1NUQU5EQlkKKyAgQ09OTkVDVElPTl9BTExPQ0FURUQKKworICBQR1JF U19FTVBUWV9RVUVSWQorICBQR1JFU19DT01NQU5EX09LCisgIFBHUkVTX1RVUExFU19PSwor ICBQR1JFU19DT1BZX09VVAorICBQR1JFU19DT1BZX0lOCisgIFBHUkVTX0JBRF9SRVNQT05T RQorICBQR1JFU19OT05GQVRBTF9FUlJPUgorICBQR1JFU19GQVRBTF9FUlJPUgorICBQR1JF U19DT1BZX0JPVEgKKyAgUEdSRVNfU0lOR0xFX1RVUExFCisgIFBHUkVTX1BJUEVMSU5FX1NZ TkMKKyAgUEdSRVNfUElQRUxJTkVfQUJPUlRFRAorICBQR1JFU19UVVBMRVNfQ0hVTksKKwor ICBQR1JFU19QT0xMSU5HX0ZBSUxFRAorICBQR1JFU19QT0xMSU5HX1JFQURJTkcKKyAgUEdS RVNfUE9MTElOR19XUklUSU5HCisgIFBHUkVTX1BPTExJTkdfT0sKKyAgUEdSRVNfUE9MTElO R19BQ1RJVkUKKworICBQUVBJTkdfT0sKKyAgUFFQSU5HX1JFSkVDVAorICBQUVBJTkdfTk9f UkVTUE9OU0UKKyAgUFFQSU5HX05PX0FUVEVNUFQKKworICBQUVRSQU5TX0lETEUKKyAgUFFU UkFOU19BQ1RJVkUKKyAgUFFUUkFOU19JTlRSQU5TCisgIFBRVFJBTlNfSU5FUlJPUgorICBQ UVRSQU5TX1VOS05PV04KKworKTsKKworIyBDb25uU3RhdHVzVHlwZToKK3VzZSBjb25zdGFu dCB7CisJQ09OTkVDVElPTl9PSyAgICAgICAgICAgICAgICAgPT4gMCwKKwlDT05ORUNUSU9O X0JBRCAgICAgICAgICAgICAgICA9PiAxLAorCUNPTk5FQ1RJT05fU1RBUlRFRCAgICAgICAg ICAgID0+IDIsCisJQ09OTkVDVElPTl9NQURFICAgICAgICAgICAgICAgPT4gMywKKwlDT05O RUNUSU9OX0FXQUlUSU5HX1JFU1BPTlNFICA9PiA0LAorCUNPTk5FQ1RJT05fQVVUSF9PSyAg ICAgICAgICAgID0+IDUsCisJQ09OTkVDVElPTl9TRVRFTlYgICAgICAgICAgICAgPT4gNiwK KwlDT05ORUNUSU9OX1NTTF9TVEFSVFVQICAgICAgICA9PiA3LAorCUNPTk5FQ1RJT05fTkVF REVEICAgICAgICAgICAgID0+IDgsCisJQ09OTkVDVElPTl9DSEVDS19XUklUQUJMRSAgICAg PT4gOSwKKwlDT05ORUNUSU9OX0NPTlNVTUUgICAgICAgICAgICA9PiAxMCwKKwlDT05ORUNU SU9OX0dTU19TVEFSVFVQICAgICAgICA9PiAxMSwKKwlDT05ORUNUSU9OX0NIRUNLX1RBUkdF VCAgICAgICA9PiAxMiwKKwlDT05ORUNUSU9OX0NIRUNLX1NUQU5EQlkgICAgICA9PiAxMywK KwlDT05ORUNUSU9OX0FMTE9DQVRFRCAgICAgICAgICA9PiAxNCwKK307CisKKyMgRXhlY1N0 YXR1c1R5cGU6Cit1c2UgY29uc3RhbnQgeworCVBHUkVTX0VNUFRZX1FVRVJZICAgICA9PiAw LAorCVBHUkVTX0NPTU1BTkRfT0sgICAgICA9PiAxLAorCVBHUkVTX1RVUExFU19PSyAgICAg ICA9PiAyLAorCVBHUkVTX0NPUFlfT1VUICAgICAgICA9PiAzLAorCVBHUkVTX0NPUFlfSU4g ICAgICAgICA9PiA0LAorCVBHUkVTX0JBRF9SRVNQT05TRSAgICA9PiA1LAorCVBHUkVTX05P TkZBVEFMX0VSUk9SICA9PiA2LAorCVBHUkVTX0ZBVEFMX0VSUk9SICAgICA9PiA3LAorCVBH UkVTX0NPUFlfQk9USCAgICAgICA9PiA4LAorCVBHUkVTX1NJTkdMRV9UVVBMRSAgICA9PiA5 LAorCVBHUkVTX1BJUEVMSU5FX1NZTkMgICA9PiAxMCwKKwlQR1JFU19QSVBFTElORV9BQk9S VEVEID0+IDExLAorCVBHUkVTX1RVUExFU19DSFVOSyAgICA9PiAxMiwKK307CisKKyMgUG9z dGdyZXNQb2xsaW5nU3RhdHVzVHlwZToKK3VzZSBjb25zdGFudCB7CisJUEdSRVNfUE9MTElO R19GQUlMRUQgID0+IDAsCisJUEdSRVNfUE9MTElOR19SRUFESU5HID0+IDEsCisJUEdSRVNf UE9MTElOR19XUklUSU5HID0+IDIsCisJUEdSRVNfUE9MTElOR19PSyAgICAgID0+IDMsCisJ UEdSRVNfUE9MTElOR19BQ1RJVkUgID0+IDQsCit9OworCisjIFBHUGluZzoKK3VzZSBjb25z dGFudCB7CisJUFFQSU5HX09LICAgICAgICAgID0+IDAsCisJUFFQSU5HX1JFSkVDVCAgICAg ID0+IDEsCisJUFFQSU5HX05PX1JFU1BPTlNFID0+IDIsCisJUFFQSU5HX05PX0FUVEVNUFQg ID0+IDMsCit9OworCisjIFBHVHJhbnNhY3Rpb25TdGF0dXNUeXBlOgordXNlIGNvbnN0YW50 IHsKKwlQUVRSQU5TX0lETEUgICAgPT4gMCwKKwlQUVRSQU5TX0FDVElWRSAgPT4gMSwKKwlQ UVRSQU5TX0lOVFJBTlMgPT4gMiwKKwlQUVRSQU5TX0lORVJST1IgPT4gMywKKwlQUVRSQU5T X1VOS05PV04gPT4gNCwKK307CisKKz1wb2QKKworPWhlYWQxIFNFRSBBTFNPCisKK0w8UG9z dGdyZVNRTDo6UHFGRkk+LCBMPFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24+CisKKz1jdXQK KworMTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9QcUZGSS5wbSBi L3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9QcUZGSS5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uZjE2NDcwYzQ2ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvUHFGRkkucG0KQEAgLTAsMCArMSw0MzcgQEAKKwor IyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1l bnQgR3JvdXAKKworPXBvZAorCis9aGVhZDEgTkFNRQorCitQb3N0Z3JlU1FMOjpQcUZGSSAt IEZGSSB3cmFwcGVyIGZvciBsaWJwcQorCis9aGVhZDEgU1lOT1BTSVMKKworICB1c2UgUG9z dGdyZVNRTDo6UHFGRkk7CisKKyAgIyBJbml0aWFsaXplIHRoZSBGRkkgYmluZGluZ3MgKHJl cXVpcmVkIGJlZm9yZSB1c2UpCisgIFBvc3RncmVTUUw6OlBxRkZJOjpzZXR1cCgkbGliZGly KTsKKworICAjIENvbm5lY3QgdG8gZGF0YWJhc2UKKyAgbXkgJGNvbm4gPSBQUWNvbm5lY3Rk YigiZGJuYW1lPXBvc3RncmVzIik7CisgIGRpZSBQUWVycm9yTWVzc2FnZSgkY29ubikgdW5s ZXNzIFBRc3RhdHVzKCRjb25uKSA9PSBDT05ORUNUSU9OX09LOworCisgICMgRXhlY3V0ZSBx dWVyeQorICBteSAkcmVzdWx0ID0gUFFleGVjKCRjb25uLCAiU0VMRUNUIDEiKTsKKyAgaWYg KFBRcmVzdWx0U3RhdHVzKCRyZXN1bHQpID09IFBHUkVTX1RVUExFU19PSykgeworICAgICAg cHJpbnQgUFFnZXR2YWx1ZSgkcmVzdWx0LCAwLCAwKSwgIlxuIjsKKyAgfQorICBQUWNsZWFy KCRyZXN1bHQpOworCisgIFBRZmluaXNoKCRjb25uKTsKKworPWhlYWQxIERFU0NSSVBUSU9O CisKK1RoaXMgbW9kdWxlIHByb3ZpZGVzIFBlcmwgYmluZGluZ3MgdG8gbGlicHEgdXNpbmcg TDxGRkk6OlBsYXR5cHVzPi4KK0l0IGlzIHRoZSBiYWNrZW5kIHVzZWQgYnkgTDxQb3N0Z3Jl U1FMOjpUZXN0OjpTZXNzaW9uPi4KKworVGhlIG1vZHVsZSBtdXN0IGJlIGluaXRpYWxpemVk IGJ5IGNhbGxpbmcgQzxzZXR1cCgpPiBiZWZvcmUgYW55IGxpYnBxCitmdW5jdGlvbnMgY2Fu IGJlIHVzZWQuCisKKz1oZWFkMSBGVU5DVElPTlMKKworPWhlYWQyIHNldHVwKCRsaWJkaXIg WywgJHVzZV9zeXN0ZW1fcGF0aF0pCisKK0luaXRpYWxpemUgdGhlIEZGSSBiaW5kaW5ncy4g QzwkbGliZGlyPiBzcGVjaWZpZXMgd2hlcmUgdG8gZmluZCBsaWJwcS4KK0lmIEM8JHVzZV9z eXN0ZW1fcGF0aD4gaXMgZmFsc2UsIG9ubHkgQzwkbGliZGlyPiBpcyBzZWFyY2hlZC4KKwor PWhlYWQyIGxpYnBxIEZ1bmN0aW9ucworCitBbGwgc3RhbmRhcmQgbGlicHEgZnVuY3Rpb25z IGFyZSBleHBvcnRlZC4gU2VlIHRoZSBQb3N0Z3JlU1FMIGxpYnBxCitkb2N1bWVudGF0aW9u IGZvciBkZXRhaWxzLiBDb21tb25seSB1c2VkIGZ1bmN0aW9ucyBpbmNsdWRlOgorCitCPENv bm5lY3Rpb246PiBDPFBRY29ubmVjdGRiPiwgQzxQUWNvbm5lY3RTdGFydD4sIEM8UFFjb25u ZWN0UG9sbD4sCitDPFBRZmluaXNoPiwgQzxQUXN0YXR1cz4sIEM8UFFlcnJvck1lc3NhZ2U+ CisKK0I8RXhlY3V0aW9uOj4gQzxQUWV4ZWM+LCBDPFBRZXhlY1BhcmFtcz4sIEM8UFFwcmVw YXJlPiwgQzxQUWV4ZWNQcmVwYXJlZD4sCitDPFBRc2VuZFF1ZXJ5PiwgQzxQUWdldFJlc3Vs dD4sIEM8UFFjbGVhcj4KKworQjxSZXN1bHRzOj4gQzxQUXJlc3VsdFN0YXR1cz4sIEM8UFFu dHVwbGVzPiwgQzxQUW5maWVsZHM+LCBDPFBRZm5hbWU+LAorQzxQUWZ0eXBlPiwgQzxQUWdl dHZhbHVlPiwgQzxQUWdldGlzbnVsbD4KKworQjxQaXBlbGluZTo+IEM8UFFlbnRlclBpcGVs aW5lTW9kZT4sIEM8UFFleGl0UGlwZWxpbmVNb2RlPiwKK0M8UFFwaXBlbGluZVN5bmM+LCBD PFBRc2VuZFF1ZXJ5UGFyYW1zPgorCitCPE5vdGlmaWNhdGlvbnM6PiBDPFBRbm90aWZpZXM+ LCBDPFBRbm90aWZ5X2NoYW5uZWw+LCBDPFBRbm90aWZ5X3BheWxvYWQ+LAorQzxQUW5vdGlm eV9iZV9waWQ+LCBDPFBRbm90aWZ5X2ZyZWU+CisKK0I8Tm90aWNlIFByb2Nlc3Npbmc6PiBD PFBRc2V0Tm90aWNlUHJvY2Vzc29yPiwgQzxjcmVhdGVfbm90aWNlX3Byb2Nlc3Nvcj4KKwor PWhlYWQyIGNyZWF0ZV9ub3RpY2VfcHJvY2Vzc29yKCRjYWxsYmFjaykKKworQ3JlYXRlcyBh IG5vdGljZSBwcm9jZXNzb3IgY2xvc3VyZSB0aGF0IGNhbiBiZSBwYXNzZWQgdG8KK0M8UFFz ZXROb3RpY2VQcm9jZXNzb3I+LiBUaGUgY2FsbGJhY2sgcmVjZWl2ZXMgQzwoJGFyZywgJG1l c3NhZ2UpPi4KK1RoZSBjYWxsZXIgbXVzdCBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSByZXR1 cm5lZCBjbG9zdXJlIHRvIHByZXZlbnQKK2dhcmJhZ2UgY29sbGVjdGlvbi4KKworPWhlYWQx IEVYUE9SVEVEIENPTlNUQU5UUworCitUaGlzIG1vZHVsZSByZS1leHBvcnRzIGFsbCBjb25z dGFudHMgZnJvbSBMPFBvc3RncmVTUUw6OlBxQ29uc3RhbnRzPgorYW5kIEw8UG9zdGdyZVNR TDo6UEdUeXBlcz4uCisKKz1jdXQKKworcGFja2FnZSBQb3N0Z3JlU1FMOjpQcUZGSTsKKwor dXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiBxdyhhbGwpOworCit1c2UgRkZJ OjpQbGF0eXB1czsKK3VzZSBGRkk6OlBsYXR5cHVzOjpSZWNvcmQ7Cit1c2UgUG9zdGdyZVNR TDo6RmluZExpYjsKKworIyBQR25vdGlmeSBzdHJ1Y3QgZm9yIG5vdGlmaWNhdGlvbiBzdXBw b3J0CisjIHR5cGVkZWYgc3RydWN0IHBnTm90aWZ5IHsKKyMgICAgIGNoYXIgKnJlbG5hbWU7 ICAgIC8qIG5vdGlmaWNhdGlvbiBjaGFubmVsIG5hbWUgKi8KKyMgICAgIGludCAgIGJlX3Bp ZDsgICAgIC8qIHByb2Nlc3MgSUQgb2Ygbm90aWZ5aW5nIHNlcnZlciBwcm9jZXNzICovCisj ICAgICBjaGFyICpleHRyYTsgICAgICAvKiBub3RpZmljYXRpb24gcGF5bG9hZCBzdHJpbmcg Ki8KKyMgfSBQR25vdGlmeTsKK3BhY2thZ2UgUEdub3RpZnkgeworCXVzZSBGRkk6OlBsYXR5 cHVzOjpSZWNvcmQ7CisJcmVjb3JkX2xheW91dF8xKAorCQknb3BhcXVlJyA9PiAncmVsbmFt ZScsCisJCSdzaW50MzInID0+ICdiZV9waWQnLAorCQknb3BhcXVlJyA9PiAnZXh0cmEnLAor CSk7Cit9CitwYWNrYWdlIFBvc3RncmVTUUw6OlBxRkZJOwordXNlIFBvc3RncmVTUUw6OlBx Q29uc3RhbnRzOwordXNlIFBvc3RncmVTUUw6OlBHVHlwZXM7CisKK3VzZSBFeHBvcnRlciBx dyhpbXBvcnQpOworCitvdXIgQEVYUE9SVCA9ICgKKyAgQFBvc3RncmVTUUw6OlBxQ29uc3Rh bnRzOjpFWFBPUlQsCisgIEBQb3N0Z3JlU1FMOjpQR1R5cGVzOjpFWFBPUlQsCispOworCisK KworbXkgQHByb2NzID0gcXcoCisKKyAgUFFub3RpZmllcworICBQUWZyZWVtZW0KKyAgUFFu b3RpZnlfY2hhbm5lbAorICBQUW5vdGlmeV9wYXlsb2FkCisgIFBRbm90aWZ5X2JlX3BpZAor ICBQUW5vdGlmeV9mcmVlCisKKyAgUFFjb25uZWN0ZGIKKyAgUFFjb25uZWN0ZGJQYXJhbXMK KyAgUFFzZXRkYkxvZ2luCisgIFBRZmluaXNoCisgIFBRcmVzZXQKKyAgUFFkYgorICBQUXVz ZXIKKyAgUFFwYXNzCisgIFBRaG9zdAorICBQUWhvc3RhZGRyCisgIFBRcG9ydAorICBQUXR0 eQorICBQUW9wdGlvbnMKKyAgUFFzdGF0dXMKKyAgUFF0cmFuc2FjdGlvblN0YXR1cworICBQ UXBhcmFtZXRlclN0YXR1cworICBQUXBpbmcKKyAgUFFwaW5nUGFyYW1zCisKKyAgUFFleGVj CisgIFBRZXhlY1BhcmFtcworICBQUXByZXBhcmUKKyAgUFFleGVjUHJlcGFyZWQKKworICBQ UWRlc2NyaWJlUHJlcGFyZWQKKyAgUFFkZXNjcmliZVBvcnRhbAorCisgIFBRY2xvc2VQcmVw YXJlZAorICBQUWNsb3NlUG9ydGFsCisgIFBRY2xlYXIKKworICBQUXNlbmRRdWVyeQorICBQ UWdldFJlc3VsdAorICBQUWlzQnVzeQorICBQUWNvbnN1bWVJbnB1dAorCisgIFBRcHJvdG9j b2xWZXJzaW9uCisgIFBRc2VydmVyVmVyc2lvbgorICBQUWVycm9yTWVzc2FnZQorICBQUXNv Y2tldAorICBQUXNvY2tldFBvbGwKKyAgUFFnZXRDdXJyZW50VGltZVVTZWMKKyAgUFFiYWNr ZW5kUElECisgIFBRY29ubmVjdGlvbk5lZWRzUGFzc3dvcmQKKyAgUFFjb25uZWN0aW9uVXNl ZFBhc3N3b3JkCisgIFBRY29ubmVjdGlvblVzZWRHU1NBUEkKKyAgUFFjbGllbnRFbmNvZGlu ZworICBQUXNldENsaWVudEVuY29kaW5nCisKKyAgUFFyZXN1bHRTdGF0dXMKKyAgUFFyZXNT dGF0dXMKKyAgUFFyZXN1bHRFcnJvck1lc3NhZ2UKKyAgUFFyZXN1bHRFcnJvckZpZWxkCisg IFBRbnR1cGxlcworICBQUW5maWVsZHMKKyAgUFFiaW5hcnlUdXBsZXMKKyAgUFFmbmFtZQor ICBQUWZudW1iZXIKKyAgUFFmdGFibGUKKyAgUFFmdGFibGVjb2wKKyAgUFFmZm9ybWF0Cisg IFBRZnR5cGUKKyAgUFFmc2l6ZQorICBQUWZtb2QKKyAgUFFjbWRTdGF0dXMKKyAgUFFvaWRW YWx1ZQorICBQUWNtZFR1cGxlcworICBQUWdldHZhbHVlCisgIFBRZ2V0bGVuZ3RoCisgIFBR Z2V0aXNudWxsCisgIFBRbnBhcmFtcworICBQUXBhcmFtdHlwZQorICBQUWNoYW5nZVBhc3N3 b3JkCisKKyAgUFFwaXBlbGluZVN0YXR1cworICBQUWVudGVyUGlwZWxpbmVNb2RlCisgIFBR ZXhpdFBpcGVsaW5lTW9kZQorICBQUXBpcGVsaW5lU3luYworICBQUXNlbmRGbHVzaFJlcXVl c3QKKyAgUFFzZW5kUGlwZWxpbmVTeW5jCisgIFBRc2VuZFF1ZXJ5UGFyYW1zCisKKyAgUFFz ZXRub25ibG9ja2luZworICBQUWlzbm9uYmxvY2tpbmcKKyAgUFFmbHVzaAorCisgIFBRY29u bmVjdFN0YXJ0CisgIFBRY29ubmVjdFN0YXJ0UGFyYW1zCisgIFBRY29ubmVjdFBvbGwKKwor ICBQUXNldE5vdGljZVByb2Nlc3NvcgorICBjcmVhdGVfbm90aWNlX3Byb2Nlc3NvcgorCisp OworCitwdXNoKEBFWFBPUlQsIEBwcm9jcyk7CisKK3N1YiBzZXR1cAoreworCW15ICRsaWJk aXIgPSBzaGlmdDsKKwlteSAkdXNlX3N5c3RlbV9wYXRoID0gc2hpZnQ7CisKKwlteSAkZmZp ID0gRkZJOjpQbGF0eXB1cy0+bmV3KGFwaSA9PiAxKTsKKworCW15IEBzeXN0ZW1fcGF0aDsK KwlAc3lzdGVtX3BhdGggPSAoc3lzdGVtcGF0aCA9PiBbXSkgdW5sZXNzICR1c2Vfc3lzdGVt X3BhdGg7CisKKwkkZmZpLT50eXBlKCdvcGFxdWUnID0+ICdQR2Nvbm4nKTsKKwkkZmZpLT50 eXBlKCdvcGFxdWUnID0+ICdQR3Jlc3VsdCcpOworCSRmZmktPnR5cGUoJ3VpbnQzMicgPT4g J09pZCcpOworCSRmZmktPnR5cGUoJ2ludCcgPT4gJ0V4ZWNTdGF0dXNUeXBlJyk7CisKKwkj IFJlZ2lzdGVyIHRoZSBQR25vdGlmeSByZWNvcmQgdHlwZSBmb3Igc3RydWN0IGFjY2Vzcwor CSRmZmktPnR5cGUoJ3JlY29yZChQR25vdGlmeSknID0+ICdQR25vdGlmeV9yZWNvcmQnKTsK KworCW15ICRsaWIgPSBmaW5kX2xpYl9vcl9kaWUoCisJCWxpYiA9PiAncHEnLAorCQlsaWJw YXRoID0+IFskbGliZGlyXSwKKwkgICAgQHN5c3RlbV9wYXRoLAorCSAgICk7CisJJGZmaS0+ bGliKCRsaWIpOworCisJJGZmaS0+YXR0YWNoKCdQUWNvbm5lY3RkYicgPT4gWydzdHJpbmcn XSA9PiAnUEdjb25uJyk7CisJJGZmaS0+YXR0YWNoKAorCQknUFFjb25uZWN0ZGJQYXJhbXMn ID0+IFsgJ3N0cmluZ1tdJywgJ3N0cmluZ1tdJywgJ2ludCcgXSA9PiAnUEdjb25uJyk7CisJ JGZmaS0+YXR0YWNoKAorCQknUFFzZXRkYkxvZ2luJyA9PiBbCisJCQknc3RyaW5nJywgJ3N0 cmluZycsICdzdHJpbmcnLCAnc3RyaW5nJywKKwkJCSdzdHJpbmcnLCAnc3RyaW5nJywgJ3N0 cmluZycsCisJCV0gPT4gJ1BHY29ubicpOworCSRmZmktPmF0dGFjaCgnUFFmaW5pc2gnID0+ IFsnUEdjb25uJ10gPT4gJ3ZvaWQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRcmVzZXQnID0+IFsn UEdjb25uJ10gPT4gJ3ZvaWQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRZGInID0+IFsnUEdjb25u J10gPT4gJ3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFF1c2VyJyA9PiBbJ1BHY29ubidd ID0+ICdzdHJpbmcnKTsKKwkkZmZpLT5hdHRhY2goJ1BRcGFzcycgPT4gWydQR2Nvbm4nXSA9 PiAnc3RyaW5nJyk7CisJJGZmaS0+YXR0YWNoKCdQUWhvc3QnID0+IFsnUEdjb25uJ10gPT4g J3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFFob3N0YWRkcicgPT4gWydQR2Nvbm4nXSA9 PiAnc3RyaW5nJyk7CisJJGZmaS0+YXR0YWNoKCdQUXBvcnQnID0+IFsnUEdjb25uJ10gPT4g J3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFF0dHknID0+IFsnUEdjb25uJ10gPT4gJ3N0 cmluZycpOworCSRmZmktPmF0dGFjaCgnUFFvcHRpb25zJyA9PiBbJ1BHY29ubiddID0+ICdz dHJpbmcnKTsKKwkkZmZpLT5hdHRhY2goJ1BRc3RhdHVzJyA9PiBbJ1BHY29ubiddID0+ICdp bnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRdHJhbnNhY3Rpb25TdGF0dXMnID0+IFsnUEdjb25u J10gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFwYXJhbWV0ZXJTdGF0dXMnID0+IFsg J1BHY29ubicsICdzdHJpbmcnIF0gPT4gJ3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFFw aW5nJyA9PiBbJ3N0cmluZyddID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goCisJCSdQUXBp bmdQYXJhbXMnID0+IFsgJ3N0cmluZ1tdJywgJ3N0cmluZ1tdJywgJ2ludCcgXSA9PiAnaW50 Jyk7CisKKwkkZmZpLT5hdHRhY2goJ1BRcHJvdG9jb2xWZXJzaW9uJyA9PiBbJ1BHY29ubidd ID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRc2VydmVyVmVyc2lvbicgPT4gWydQR2Nv bm4nXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWVycm9yTWVzc2FnZScgPT4gWydQ R2Nvbm4nXSA9PiAnc3RyaW5nJyk7CisJJGZmaS0+YXR0YWNoKCdQUXNvY2tldCcgPT4gWydQ R2Nvbm4nXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUXNvY2tldFBvbGwnID0+IFsn aW50JywgJ2ludCcsICdpbnQnLCAnc2ludDY0J10gPT4gJ2ludCcpOworCSRmZmktPmF0dGFj aCgnUFFnZXRDdXJyZW50VGltZVVTZWMnID0+IFtdID0+ICdzaW50NjQnKTsKKwkkZmZpLT5h dHRhY2goJ1BRYmFja2VuZFBJRCcgPT4gWydQR2Nvbm4nXSA9PiAnaW50Jyk7CisJJGZmaS0+ YXR0YWNoKCdQUWNvbm5lY3Rpb25OZWVkc1Bhc3N3b3JkJyA9PiBbJ1BHY29ubiddID0+ICdp bnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRY29ubmVjdGlvblVzZWRQYXNzd29yZCcgPT4gWydQ R2Nvbm4nXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWNvbm5lY3Rpb25Vc2VkR1NT QVBJJyA9PiBbJ1BHY29ubiddID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRY2xpZW50 RW5jb2RpbmcnID0+IFsnUEdjb25uJ10gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFz ZXRDbGllbnRFbmNvZGluZycgPT4gWyAnUEdjb25uJywgJ3N0cmluZycgXSA9PiAnaW50Jyk7 CisKKwkkZmZpLT5hdHRhY2goJ1BRZXhlYycgPT4gWyAnUEdjb25uJywgJ3N0cmluZycgXSA9 PiAnUEdyZXN1bHQnKTsKKwkkZmZpLT5hdHRhY2goCisJCSdQUWV4ZWNQYXJhbXMnID0+IFsK KwkJCSdQR2Nvbm4nLCAnc3RyaW5nJywgJ2ludCcsICdpbnRbXScsCisJCQknc3RyaW5nW10n LCAnaW50W10nLCAnaW50W10nLCAnaW50JworCQldID0+ICdQR3Jlc3VsdCcpOworCSRmZmkt PmF0dGFjaCgKKwkJJ1BRcHJlcGFyZScgPT4gWyAnUEdjb25uJywgJ3N0cmluZycsICdzdHJp bmcnLCAnaW50JywgJ2ludFtdJyBdID0+CisJCSAgJ1BHcmVzdWx0Jyk7CisJJGZmaS0+YXR0 YWNoKAorCQknUFFleGVjUHJlcGFyZWQnID0+IFsgJ1BHY29ubicsICdzdHJpbmcnLCAnaW50 JywKKwkJCSdzdHJpbmdbXScsICdpbnRbXScsICdpbnRbXScsICdpbnQnIF0gPT4gJ1BHcmVz dWx0Jyk7CisKKwkkZmZpLT5hdHRhY2goJ1BRcmVzdWx0U3RhdHVzJyA9PiBbJ1BHcmVzdWx0 J10gPT4gJ0V4ZWNTdGF0dXNUeXBlJyk7CisJJGZmaS0+YXR0YWNoKCdQUXJlc1N0YXR1cycg PT4gWydFeGVjU3RhdHVzVHlwZSddID0+ICdzdHJpbmcnKTsKKwkkZmZpLT5hdHRhY2goJ1BR cmVzdWx0RXJyb3JNZXNzYWdlJyA9PiBbJ1BHcmVzdWx0J10gPT4gJ3N0cmluZycpOworCSRm ZmktPmF0dGFjaCgnUFFyZXN1bHRFcnJvckZpZWxkJyA9PiBbICdQR3Jlc3VsdCcsICdpbnQn IF0gPT4gJ3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFFudHVwbGVzJyA9PiBbJ1BHcmVz dWx0J10gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFuZmllbGRzJyA9PiBbJ1BHcmVz dWx0J10gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFiaW5hcnlUdXBsZXMnID0+IFsn UEdyZXN1bHQnXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWZuYW1lJyA9PiBbICdQ R3Jlc3VsdCcsICdpbnQnIF0gPT4gJ3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFFmbnVt YmVyJyA9PiBbICdQR3Jlc3VsdCcsICdzdHJpbmcnIF0gPT4gJ2ludCcpOworCSRmZmktPmF0 dGFjaCgnUFFmdGFibGUnID0+IFsgJ1BHcmVzdWx0JywgJ2ludCcgXSA9PiAnT2lkJyk7CisJ JGZmaS0+YXR0YWNoKCdQUWZ0YWJsZWNvbCcgPT4gWyAnUEdyZXN1bHQnLCAnaW50JyBdID0+ ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRZmZvcm1hdCcgPT4gWyAnUEdyZXN1bHQnLCAn aW50JyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRZnR5cGUnID0+IFsgJ1BHcmVz dWx0JywgJ2ludCcgXSA9PiAnT2lkJyk7CisJJGZmaS0+YXR0YWNoKCdQUWZzaXplJyA9PiBb ICdQR3Jlc3VsdCcsICdpbnQnIF0gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFmbW9k JyA9PiBbICdQR3Jlc3VsdCcsICdpbnQnIF0gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgn UFFjbWRTdGF0dXMnID0+IFsnUEdyZXN1bHQnXSA9PiAnc3RyaW5nJyk7CisJJGZmaS0+YXR0 YWNoKCdQUW9pZFZhbHVlJyA9PiBbJ1BHcmVzdWx0J10gPT4gJ09pZCcpOworCSRmZmktPmF0 dGFjaCgnUFFjbWRUdXBsZXMnID0+IFsnUEdyZXN1bHQnXSA9PiAnc3RyaW5nJyk7CisJJGZm aS0+YXR0YWNoKCdQUWdldHZhbHVlJyA9PiBbICdQR3Jlc3VsdCcsICdpbnQnLCAnaW50JyBd ID0+ICdzdHJpbmcnKTsKKwkkZmZpLT5hdHRhY2goJ1BRZ2V0bGVuZ3RoJyA9PiBbICdQR3Jl c3VsdCcsICdpbnQnLCAnaW50JyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRZ2V0 aXNudWxsJyA9PiBbICdQR3Jlc3VsdCcsICdpbnQnLCAnaW50JyBdID0+ICdpbnQnKTsKKwkk ZmZpLT5hdHRhY2goJ1BRbnBhcmFtcycgPT4gWydQR3Jlc3VsdCddID0+ICdpbnQnKTsKKwkk ZmZpLT5hdHRhY2goJ1BRcGFyYW10eXBlJyA9PiBbICdQR3Jlc3VsdCcsICdpbnQnIF0gPT4g J09pZCcpOworCisKKwkkZmZpLT5hdHRhY2goCisJCSdQUWRlc2NyaWJlUHJlcGFyZWQnID0+ IFsgJ1BHY29ubicsICdzdHJpbmcnIF0gPT4gJ1BHcmVzdWx0Jyk7CisJJGZmaS0+YXR0YWNo KCdQUWRlc2NyaWJlUG9ydGFsJyA9PiBbICdQR2Nvbm4nLCAnc3RyaW5nJyBdID0+ICdQR3Jl c3VsdCcpOworCisJJGZmaS0+YXR0YWNoKCdQUWNsb3NlUHJlcGFyZWQnID0+IFsgJ1BHY29u bicsICdzdHJpbmcnIF0gPT4gJ1BHcmVzdWx0Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWNsb3Nl UG9ydGFsJyA9PiBbICdQR2Nvbm4nLCAnc3RyaW5nJyBdID0+ICdQR3Jlc3VsdCcpOworCSRm ZmktPmF0dGFjaCgnUFFjbGVhcicgPT4gWydQR3Jlc3VsdCddID0+ICd2b2lkJyk7CisKKwkk ZmZpLT5hdHRhY2goJ1BRY29ubmVjdFN0YXJ0JyA9PiBbICdzdHJpbmcnIF0gPT4gJ1BHY29u bicpOworCSRmZmktPmF0dGFjaCgKKwkJJ1BRY29ubmVjdFN0YXJ0UGFyYW1zJyA9PiBbICdz dHJpbmdbXScsICdzdHJpbmdbXScsICdpbnQnIF0gPT4gJ1BHY29ubicpOworCSRmZmktPmF0 dGFjaCgnUFFjb25uZWN0UG9sbCcgPT4gWyAnUEdjb25uJyBdID0+ICdpbnQnKTsKKwkkZmZp LT5hdHRhY2goJ1BRcmVzZXRTdGFydCcgPT4gWyAnUEdjb25uJyBdID0+ICdpbnQnKTsKKwkk ZmZpLT5hdHRhY2goJ1BRcmVzZXRQb2xsJyA9PiBbICdQR2Nvbm4nIF0gPT4gJ2ludCcpOwor CSRmZmktPmF0dGFjaCgnUFFzZW5kUXVlcnknID0+IFsgJ1BHY29ubicsICAnc3RyaW5nJyBd ID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRc2VuZFF1ZXJ5UGFyYW1zJyA9PiBbCisJ CSdQR2Nvbm4nLCAnc3RyaW5nJywgJ2ludCcsICdPaWQqJywgJ3N0cmluZyonLAorCQknaW50 KicsICdpbnQqJywgJ2ludCcgXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUXNlbmRQ cmVwYXJlJyA9PiBbICdQR2Nvbm4nLCAnc3RyaW5nJywgJ3N0cmluZycsICdpbnQnLCAnT2lk W10nIF0gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFnZXRSZXN1bHQnID0+IFsgJ1BH Y29ubicgXSA9PiAnUEdyZXN1bHQnKTsKKworCSRmZmktPmF0dGFjaCgnUFFpc0J1c3knID0+ IFsgJ1BHY29ubicgXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWNvbnN1bWVJbnB1 dCcgPT4gWyAnUEdjb25uJyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRY2hhbmdl UGFzc3dvcmQnID0+IFsgJ1BHY29ubicsICdzdHJpbmcnLCAnc3RyaW5nJyBdID0+ICdQR3Jl c3VsdCcpOworCisJJGZmaS0+YXR0YWNoKCdQUXBpcGVsaW5lU3RhdHVzJyA9PiBbICdQR2Nv bm4nIF0gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFlbnRlclBpcGVsaW5lTW9kZScg PT4gWyAnUEdjb25uJyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRZXhpdFBpcGVs aW5lTW9kZScgPT4gWyAnUEdjb25uJyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BR cGlwZWxpbmVTeW5jJyA9PiBbICdQR2Nvbm4nIF0gPT4gJ2ludCcpOworCSRmZmktPmF0dGFj aCgnUFFzZW5kRmx1c2hSZXF1ZXN0JyA9PiBbICdQR2Nvbm4nIF0gPT4gJ2ludCcpOworCSRm ZmktPmF0dGFjaCgnUFFzZW5kUGlwZWxpbmVTeW5jJyA9PiBbICdQR2Nvbm4nIF0gPT4gJ2lu dCcpOworCSRmZmktPmF0dGFjaCgnUFFzZXRub25ibG9ja2luZycgPT4gWyAnUEdjb25uJywg J2ludCcgXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWlzbm9uYmxvY2tpbmcnID0+ IFsgJ1BHY29ubicgXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWZsdXNoJyA9PiBb ICdQR2Nvbm4nIF0gPT4gJ2ludCcpOworCisJIyBOb3RpZmljYXRpb24gc3VwcG9ydCAtIFBR bm90aWZpZXMgcmV0dXJucyBhIHBvaW50ZXIgdG8gUEdub3RpZnkgc3RydWN0CisJIyBXZSBy ZXR1cm4gb3BhcXVlIHRvIHByZXNlcnZlIHRoZSBvcmlnaW5hbCBwb2ludGVyIGZvciBmcmVl aW5nIHdpdGggUFFmcmVlbWVtCisJJGZmaS0+YXR0YWNoKCdQUW5vdGlmaWVzJyA9PiBbICdQ R2Nvbm4nIF0gPT4gJ29wYXF1ZScpOworCSRmZmktPmF0dGFjaCgnUFFmcmVlbWVtJyA9PiBb ICdvcGFxdWUnIF0gPT4gJ3ZvaWQnKTsKKworCSMgTm90aWNlIHByb2Nlc3NvciBjYWxsYmFj ayBzdXBwb3J0CisJIyB0eXBlZGVmIHZvaWQgKCpQUW5vdGljZVByb2Nlc3Nvcikodm9pZCAq YXJnLCBjb25zdCBjaGFyICptZXNzYWdlKTsKKwkkZmZpLT50eXBlKCcob3BhcXVlLHN0cmlu ZyktPnZvaWQnID0+ICdQUW5vdGljZVByb2Nlc3NvcicpOworCSRmZmktPmF0dGFjaCgnUFFz ZXROb3RpY2VQcm9jZXNzb3InID0+IFsgJ1BHY29ubicsICdQUW5vdGljZVByb2Nlc3Nvcics ICdvcGFxdWUnIF0gPT4gJ29wYXF1ZScpOworCisJIyBTdG9yZSB0aGUgJGZmaSBpbnN0YW5j ZSBmb3IgdXNlIGJ5IGhlbHBlciBmdW5jdGlvbnMKKwkkUG9zdGdyZVNRTDo6UHFGRkk6Ol9m ZmkgPSAkZmZpOworfQorCisjIEhlbHBlciBmdW5jdGlvbnMgdG8gZXh0cmFjdCB2YWx1ZXMg ZnJvbSBQR25vdGlmeSBzdHJ1Y3QKKyMgVGhlIG9wYXF1ZSBwb2ludGVyIGlzIGNhc3QgdG8g dGhlIHJlY29yZCB0eXBlIHRvIGFjY2VzcyBmaWVsZHMKKworc3ViIF9jYXN0X3RvX3Bnbm90 aWZ5Cit7CisJbXkgJHB0ciA9IHNoaWZ0OworCXJldHVybiB1bmRlZiB1bmxlc3MgJHB0cjsK KwlyZXR1cm4gJFBvc3RncmVTUUw6OlBxRkZJOjpfZmZpLT5jYXN0KCdvcGFxdWUnLCAncmVj b3JkKFBHbm90aWZ5KSonLCAkcHRyKTsKK30KKworc3ViIFBRbm90aWZ5X2NoYW5uZWwKK3sK KwlteSAkcHRyID0gc2hpZnQ7CisJcmV0dXJuIHVuZGVmIHVubGVzcyAkcHRyOworCW15ICRu b3RpZnkgPSBfY2FzdF90b19wZ25vdGlmeSgkcHRyKTsKKwlteSAkc3RyX3B0ciA9ICRub3Rp ZnktPnJlbG5hbWU7CisJcmV0dXJuIHVuZGVmIHVubGVzcyAkc3RyX3B0cjsKKwlyZXR1cm4g JFBvc3RncmVTUUw6OlBxRkZJOjpfZmZpLT5jYXN0KCdvcGFxdWUnLCAnc3RyaW5nJywgJHN0 cl9wdHIpOworfQorCitzdWIgUFFub3RpZnlfcGF5bG9hZAoreworCW15ICRwdHIgPSBzaGlm dDsKKwlyZXR1cm4gdW5kZWYgdW5sZXNzICRwdHI7CisJbXkgJG5vdGlmeSA9IF9jYXN0X3Rv X3Bnbm90aWZ5KCRwdHIpOworCW15ICRzdHJfcHRyID0gJG5vdGlmeS0+ZXh0cmE7CisJcmV0 dXJuIHVuZGVmIHVubGVzcyAkc3RyX3B0cjsKKwlyZXR1cm4gJFBvc3RncmVTUUw6OlBxRkZJ OjpfZmZpLT5jYXN0KCdvcGFxdWUnLCAnc3RyaW5nJywgJHN0cl9wdHIpOworfQorCitzdWIg UFFub3RpZnlfYmVfcGlkCit7CisJbXkgJHB0ciA9IHNoaWZ0OworCXJldHVybiB1bmRlZiB1 bmxlc3MgJHB0cjsKKwlteSAkbm90aWZ5ID0gX2Nhc3RfdG9fcGdub3RpZnkoJHB0cik7CisJ cmV0dXJuICRub3RpZnktPmJlX3BpZDsKK30KKworIyBGcmVlIGEgUEdub3RpZnkgc3RydWN0 IHVzaW5nIHRoZSBvcmlnaW5hbCBwb2ludGVyCitzdWIgUFFub3RpZnlfZnJlZQoreworCW15 ICRwdHIgPSBzaGlmdDsKKwlyZXR1cm4gdW5sZXNzICRwdHI7CisJUFFmcmVlbWVtKCRwdHIp OworfQorCisjIENyZWF0ZSBhIG5vdGljZSBwcm9jZXNzb3IgY2xvc3VyZSB0aGF0IGNhbiBi ZSBwYXNzZWQgdG8gUFFzZXROb3RpY2VQcm9jZXNzb3IuCisjIFRoZSBjYWxsYmFjayB3aWxs IGJlIGludm9rZWQgd2l0aCAoYXJnLCBtZXNzYWdlKSB3aGVyZSBhcmcgaXMgb3BhcXVlIGFu ZCBtZXNzYWdlIGlzIHN0cmluZy4KKyMgUmV0dXJucyB0aGUgY2xvc3VyZSAtIGNhbGxlciBt dXN0IGtlZXAgYSByZWZlcmVuY2UgdG8gcHJldmVudCBnYXJiYWdlIGNvbGxlY3Rpb24uCitz dWIgY3JlYXRlX25vdGljZV9wcm9jZXNzb3IKK3sKKwlteSAkY2FsbGJhY2sgPSBzaGlmdDsg ICMgc3ViIHsgbXkgKCRhcmcsICRtZXNzYWdlKSA9IEBfOyAuLi4gfQorCXJldHVybiAkUG9z dGdyZVNRTDo6UHFGRkk6Ol9mZmktPmNsb3N1cmUoJGNhbGxiYWNrKTsKK30KKworPXBvZAor Cis9aGVhZDEgU0VFIEFMU08KKworTDxQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uPiwKK0w8 UG9zdGdyZVNRTDo6UHFDb25zdGFudHM+LCBMPFBvc3RncmVTUUw6OlBHVHlwZXM+LCBMPEZG STo6UGxhdHlwdXM+CisKKz1jdXQKKworMTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Blcmwv UG9zdGdyZVNRTC9UZXN0L1Nlc3Npb24ucG0gYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwv VGVzdC9TZXNzaW9uLnBtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li4zNjI2Mzg0MmM1ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3BlcmwvUG9zdGdy ZVNRTC9UZXN0L1Nlc3Npb24ucG0KQEAgLTAsMCArMSwxMTA3IEBACisKKyMgQ29weXJpZ2h0 IChjKSAyMDIxLTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisK Kz1wb2QKKworPWhlYWQxIE5BTUUKKworUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbiAtIGNs YXNzIGZvciBhIFBvc3RncmVTUUwgbGlicHEgc2Vzc2lvbgorCis9aGVhZDEgU1lOT1BTSVMK KworICB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKKworICB1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKKworICBteSAkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXItPm5ldygnbXlub2RlJyk7CisKKyAgIyBjcmVhdGUgYSBuZXcgc2Vzc2lvbi4gZGVm dWx0IGRibmFtZSBpcyAncG9zdGdyZXMnCisgIG15ICRzZXNzaW9uID0gUG9zdGdyZVNRTDo6 VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgWywgZGJuYW1lID0+ICRkYm5hbWVdICk7CisK KyAgIyBjbG9zZSB0aGUgc2Vzc2lvbgorICAkc2Vzc2lvbi0+Y2xvc2U7CisKKyAgIyByZW9w ZW4gdGhlIHNlc3Npb24sIGFmdGVyIGNsb3NpbmcgaXQgaWYgbm90IGNsb3NlZAorICAkc2Vz c2lvbi0+cmVjb25uZWN0OworCisgICMgY2hlY2sgaWYgdGhlIHNlc3Npb24gaXMgb2sKKyAg IyBteSAkc3RhdHVzID0gJHNlc3Npb24tPmNvbm5fc3RhdHVzOworCisgICMgcnVuIHNvbWUg U1FMLCBub3QgcHJvZHVjaW5nIHR1cGxlcworICBteSAkcmVzdWx0ID0gJHNlc3Npb24tPmRv KCRzcWwsIC4uLik7CisKKyAgIyBydW4gYW4gU1FMIHN0YXRlbWVudCBhc3luY2hyb25vdXNs eQorICBteSAkcmVzdWx0ID0gJHNlc3Npb24tPmRvX2FzeW5jKCRzcWwpOworCisgICMgd2Fp dCBmb3IgYW5kIGFzeW5jIFNRTCB0byBjb21wbGV0ZQorICAkc2Vzc2lvbi0+d2FpdF9mb3Jf Y29tcGxldGlvbjsKKworICAjIHNldCBhIHBhc3N3b3JkIGZvciBhIHVzZXIKKyAgbXkgJHJl c3VsdCA9ICRzZXNzaW9uLT5zZXRfcGFzc3dvcmQoJHVzZXIsICRwYXNzd29yZCk7CisKKyAg IyBnZXQgc29tZSBkYXRhCisgIG15ICRyZXN1bHQgPSAkc2Vzc2lvbi0+cXVlcnkoJHNxbCk7 CisKKyAgIyBnZXQgYSBzaW5nbGUgdmFsdWUsIGRlZmF1bHQgY3JvYWtzIGlmIG5vIHZhbHVl IGZvdW5kCisgIG15ICR2YWwgPSAkc2Vzc2lvbi0+cXVlcnlfb25ldmFsKCRzcWwgWywgJG1p c3Npbmdfb2sgXSk7CisKKyAgI3JldHVybiBsaW5lcyBvZiB0dXBsZXMgbGlrZSAicHNxbCAt QSAtdCIKKyAgbXkgQGxpbmVzID0gJHNlc3Npb24tPnF1ZXJ5X3R1cGxlcygkc3FsLCAuLi4p OworCis9aGVhZDEgREVTQ1JJUFRJT04KKworQzxQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9u PiBlbmNhcHN1bGF0ZXMgYSBDPGxpYnBxPiBzZXNzaW9uIGZvciB1c2UgaW4KK1Bvc3RncmVT UUwgVEFQIHRlc3RzLCBhbGxvd2luZyB0aGUgdGVzdCB0byBjb25uZWN0IHdpdGhvdXQgaGF2 aW5nIHRvIHNwYXduCitDPHBzcWw+IGluIGEgY2hpbGQgcHJvY2Vzcy4KKworVGhlIHNlc3Np b24gb2JqZWN0IGlzIGF1dG9tYXRpY2FsbHkgY2xvc2VkIHdoZW4gdGhlIG9iamVjdCBnb2Vz IG91dCBvZiBzY29wZSwKK2luY2x1ZGluZyBhdCBzY3JpcHQgZW5kLgorCitTZXZlcmFsIG1l dGhvZHMgcmV0dXJuIGEgaGFzaHJlZiBhcyBhIHJlc3VsdCwgd2hpY2ggd2lsbCBoYXZlIHRo ZSBmb2xsb3dpbmcKK2ZpZWxkczoKKworPW92ZXIKKworPWl0ZW0gKiBzdGF0dXMKKworPWl0 ZW0gKiBlcnJvcl9tZXNzYWdlIChvbmx5IGlmIHRoZXJlIGlzIGFuIGVycm9yKQorCis9aXRl bSAqIG5hbWVzCisKKz1pdGVtICogdHlwZXMKKworPWl0ZW0gKiByb3dzCisKKz1pdGVtICog cHNxbG91dAorCis9YmFjaworCitUaGUgbGFzdCA0IHdpbGwgYmUgZW1wdHkgdW5sZXNzIHRo ZSBTUUwgcHJvZHVjZXMgdHVwbGVzLgorCis9Y3V0CisKK3BhY2thZ2UgUG9zdGdyZVNRTDo6 VGVzdDo6U2Vzc2lvbjsKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAn YWxsJzsKKwordXNlIENhcnA7CisKK215ICRzZXR1cF9vazsKKworIyBMYXN0IGNvbm5lY3Rp b24gZXJyb3IuICBuZXcoKSByZXR1cm5zIHVuZGVmIG9uIGEgZmFpbGVkIGNvbm5lY3Rpb24g KGNhbGxlcnMKKyMgc3VjaCBhcyBwb2xsX3VudGlsX2Nvbm5lY3Rpb24oKSByZWx5IG9uIHRo YXQpLCB3aGljaCBsb3NlcyB0aGUgbGlicHEgZXJyb3IKKyMgbWVzc2FnZTsgc3Rhc2ggaXQg aGVyZSBzbyBjYWxsZXJzIHRoYXQgdHJlYXQgYSBmYWlsZWQgY29ubmVjdGlvbiBhcyBmYXRh bCBjYW4KKyMgcmVwb3J0IHdoeS4KK291ciAkY29ubmVjdF9lcnJvcjsKKworQkVHSU4KK3sK KwkjIFVzZSB0aGUgRkZJIGxpYnBxIHdyYXBwZXIuICBUaGlzIHdpbGwgZmFpbCBpZiB0aGUg RkZJIGxpYnJhcmllcyBhcmUgbm90CisJIyBhdmFpbGFibGUuCisJIworCSMgVGhlIGFjdHVh bCBzZXR1cCBpcyBkb25lIHBlciBzZXNzaW9uLCBiZWNhdXNlIHdlIGdldCB0aGUgbGliZGly IGZyb20KKwkjIHRoZSBub2RlIG9iamVjdCAoaW4gbW9zdCBjYXNlcykuCisJcmVxdWlyZSBQ b3N0Z3JlU1FMOjpQcUZGSTsKKwlQb3N0Z3JlU1FMOjpQcUZGSS0+aW1wb3J0OworfQorCitz dWIgX3NldHVwCit7CisJcmV0dXJuIGlmICRzZXR1cF9vazsKKwlteSAkbGliZGlyID0gc2hp ZnQ7CisJUG9zdGdyZVNRTDo6UHFGRkk6OnNldHVwKCRsaWJkaXIpOworCSRzZXR1cF9vayA9 IDE7Cit9CisKKz1wb2QKKworPWhlYWQxIE1FVEhPRFMKKworPW92ZXIKKworPWl0ZW0gUG9z dGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGU9PiAkbm9kZSBbLCBkYm5hbWU9PiAk ZGJuYW1lIF0pCisKK1NldCB1cCBhIG5ldyBzZXNzaW9uIGZvciB0aGUgbm9kZSwgd2hpY2gg bXVzdCBiZSBhIEM8UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlcj4KK2luc3RhbmNlLiBUaGUg ZGVmYXVsdCBkYmFtZSBpcyBDPHBvc3RncmVzPi4KKworPWl0ZW0gUG9zdGdyZVNRTDo6VGVz dDo6U2Vzc2lvbi0+bmV3KGNvbm5zdHIgPT4gJGNvbm5zdHIgWywgbGliZGlyID0+ICRsaWJk aXJdKQorCitTZXQgdXAgYSBuZXcgc2Vzc2lvbiBmb3IgdGhlIGNvbm5lY3Rpb24gc3RyaW5n LiBJZiB1c2luZyB0aGUgRkZJIGxpYnBxIHdyYXBwZXIsCitDPCRsaWJkaXI+IG11c3QgcG9p bnQgdG8gdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgbGlicHEgbGlicmFyeSBpcyBpbnN0YWxs ZWQuCisKKz1jdXQKKworc3ViIG5ldworeworCW15ICRjbGFzcyA9IHNoaWZ0OworCW15ICRz ZWxmID0ge307CisJYmxlc3MgJHNlbGYsICRjbGFzczsKKwlteSAlYXJncyA9IEBfOworCW15 ICRub2RlID0gJGFyZ3N7bm9kZX07CisJbXkgJGRibmFtZSA9ICRhcmdze2RibmFtZX0gfHwg J3Bvc3RncmVzJzsKKwlteSAkbGliZGlyID0gJGFyZ3N7bGliZGlyfTsKKwlteSAkY29ubnN0 ciA9ICRhcmdze2Nvbm5zdHJ9OworCW15ICR1c2VyID0gJGFyZ3N7dXNlcn07CisJbXkgJHdh aXQgPSAkYXJnc3t3YWl0fSAvLyAxOworCXVubGVzcyAoJHNldHVwX29rKQorCXsKKwkJdW5s ZXNzICgkbGliZGlyKQorCQl7CisJCQljcm9hayAiYmFkIG5vZGUiIHVubGVzcyAkbm9kZS0+ aXNhKCJQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyIik7CisJCQkkbGliZGlyID0gJG5vZGUt PmNvbmZpZ19kYXRhKCReTyBlcSAnTVNXaW4zMicgPyAnLS1iaW5kaXInIDogJy0tbGliZGly Jyk7CisJCX0KKwkJX3NldHVwKCRsaWJkaXIpOworCX0KKwl1bmxlc3MgKCRjb25uc3RyKQor CXsKKwkJY3JvYWsgImJhZCBub2RlIiB1bmxlc3MgJG5vZGUtPmlzYSgiUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3RlciIpOworCQkkY29ubnN0ciA9ICRub2RlLT5jb25uc3RyKCRkYm5hbWUp OworCX0KKworCSMgUGluIHRoZSBjb25uZWN0aW5nIHJvbGUgdW5sZXNzIHRoZSBjb25uZWN0 aW9uIHN0cmluZyBhbHJlYWR5IG5hbWVzIG9uZS4KKwkjIFdpdGggbm8gInVzZXIiIGluIHRo ZSBjb25uZWN0aW9uIHN0cmluZywgbGlicHEgZmFsbHMgYmFjayB0byBQR1VTRVIgKGFuZAor CSMgb25seSB0aGVuIHRvIHRoZSBvcGVyYXRpbmctc3lzdGVtIHVzZXIpLiAgQSBzdHJheSBQ R1VTRVIgaW4gdGhlCisJIyBlbnZpcm9ubWVudCAtLSBhcyBzZXQgb24gdGhlIGJ1aWxkZmFy bSAtLSB3b3VsZCB0aGVuIHNlbGVjdCBhIHJvbGUgdGhhdAorCSMgdGhlIGNsdXN0ZXIncyBh dXRoZW50aWNhdGlvbiBzZXR1cCBkb2VzIG5vdCByZWNvZ25pemU7IGluIHBhcnRpY3VsYXIg dGhlCisJIyBTU1BJIHVzZXJtYXAgdXNlZCBvbiBXaW5kb3dzIGlzIGJ1aWx0IGFyb3VuZCB0 aGUgT1MgdXNlciBieQorCSMgInBnX3JlZ3Jlc3MgLS1jb25maWctYXV0aCIsIHNvIGEgUEdV U0VSIG9mIGUuZy4gImJ1aWxkZmFybSIgZmFpbHMKKwkjIGF1dGhlbnRpY2F0aW9uLiAgRGVm YXVsdCB0byB0aGUgT1MgdXNlciwgd2hpY2ggaXMgaG93IHRoZSByZXN0IG9mIHRoZQorCSMg dGVzdCBmcmFtZXdvcmsgY29ubmVjdHMsIHVubGVzcyB0aGUgY2FsbGVyIChvciB0aGUgY29u bmVjdGlvbiBzdHJpbmcpCisJIyByZXF1ZXN0ZWQgYSBzcGVjaWZpYyB1c2VyLgorCWlmICgk Y29ubnN0ciAhfiAvXGJ1c2VyXHMqPS8pCisJeworCQkkdXNlciAvLz0gJF5PIGVxICdNU1dp bjMyJyA/ICRFTlZ7VVNFUk5BTUV9IDogKGdldHB3dWlkKCQ8KSlbMF07CisJCSRjb25uc3Ry IC49ICIgdXNlcj0nJHVzZXInIiBpZiBkZWZpbmVkICR1c2VyICYmICR1c2VyIG5lICcnOwor CX0KKwkkc2VsZi0+e2Nvbm5zdHJ9ID0gJGNvbm5zdHI7CisJJHNlbGYtPntub3RpY2VzfSA9 IFtdOworCisJaWYgKCR3YWl0KQorCXsKKwkJJHNlbGYtPntjb25ufSA9IFBRY29ubmVjdGRi KCRjb25uc3RyKTsKKwkJIyBUaGUgZGVzdHJ1Y3RvciB3aWxsIGNsZWFuIHVwIGZvciB1cyBl dmVuIGlmIHdlIGZhaWwKKwkJdW5sZXNzIChQUXN0YXR1cygkc2VsZi0+e2Nvbm59KSA9PSBD T05ORUNUSU9OX09LKQorCQl7CisJCQkkY29ubmVjdF9lcnJvciA9IFBRZXJyb3JNZXNzYWdl KCRzZWxmLT57Y29ubn0pOworCQkJcmV0dXJuIHVuZGVmOworCQl9CisJCSRzZWxmLT5fc2V0 dXBfbm90aWNlX3Byb2Nlc3NvcigpOworCQlyZXR1cm4gJHNlbGY7CisJfQorCWVsc2UKKwl7 CisJCSRzZWxmLT57Y29ubn0gPSBQUWNvbm5lY3RTdGFydCgkY29ubnN0cik7CisJCWlmIChQ UXN0YXR1cygkc2VsZi0+e2Nvbm59KSA9PSBDT05ORUNUSU9OX0JBRCkKKwkJeworCQkJJGNv bm5lY3RfZXJyb3IgPSBQUWVycm9yTWVzc2FnZSgkc2VsZi0+e2Nvbm59KTsKKwkJCXJldHVy biB1bmRlZjsKKwkJfQorCQlyZXR1cm4gJHNlbGY7CisJfQorfQorCisjIFNldCB1cCBhIG5v dGljZSBwcm9jZXNzb3IgdG8gY2FwdHVyZSBub3RpY2VzL3dhcm5pbmdzCitzdWIgX3NldHVw X25vdGljZV9wcm9jZXNzb3IKK3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCisJIyBPbmx5IGF2 YWlsYWJsZSB3aXRoIEZGSSBiYWNrZW5kCisJcmV0dXJuIHVubGVzcyBkZWZpbmVkICZjcmVh dGVfbm90aWNlX3Byb2Nlc3NvcjsKKworCW15ICRub3RpY2VzID0gJHNlbGYtPntub3RpY2Vz fTsKKworCSMgQ3JlYXRlIGNsb3N1cmUgdGhhdCBjYXB0dXJlcyBub3RpY2VzIGludG8gb3Vy IGFycmF5CisJJHNlbGYtPntfbm90aWNlX2Nsb3N1cmV9ID0gY3JlYXRlX25vdGljZV9wcm9j ZXNzb3Ioc3ViIHsKKwkJbXkgKCRhcmcsICRtZXNzYWdlKSA9IEBfOworCQlwdXNoIEAkbm90 aWNlcywgJG1lc3NhZ2U7CisJfSk7CisKKwlQUXNldE5vdGljZVByb2Nlc3Nvcigkc2VsZi0+ e2Nvbm59LCAkc2VsZi0+e19ub3RpY2VfY2xvc3VyZX0sIHVuZGVmKTsKK30KKworCisjIGZv ciBhIGNvbm5lY3Rpb24gc3RhcnRlZCB3aXRoIFBRY29ubmVjdFN0YXJ0LCB3YWl0IHVudGls IGl0IGlzIGluIENPTk5FQ1RJT05fT0sgc3RhdGUuCisjIFVzZXMgUFFjb25uZWN0UG9sbCB0 byBkcml2ZSB0aGUgYXN5bmMgY29ubmVjdGlvbiBmb3J3YXJkLgorc3ViIHdhaXRfY29ubmVj dAoreworCW15ICRzZWxmID0gc2hpZnQ7CisJbXkgJGNvbm4gPSAkc2VsZi0+e2Nvbm59Owor CW15ICR0aW1lb3V0ID0gJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1 bHQ7CisJbXkgJHN0YXJ0ID0gdGltZTsKKwl3aGlsZSAoMSkKKwl7CisJCW15ICRwb2xsX3Jl cyA9IFBRY29ubmVjdFBvbGwoJGNvbm4pOworCQlteSAkc3RhdHVzID0gUFFzdGF0dXMoJGNv bm4pOworCisJCSMgQ29ubmVjdGlvbiBpcyBjb21wbGV0ZQorCQlpZiAoJHBvbGxfcmVzID09 IFBHUkVTX1BPTExJTkdfT0sgfHwgJHN0YXR1cyA9PSBDT05ORUNUSU9OX09LKQorCQl7CisJ CQkkc2VsZi0+X3NldHVwX25vdGljZV9wcm9jZXNzb3IoKTsKKwkJCXJldHVybjsKKwkJfQor CisJCSMgQ29ubmVjdGlvbiBmYWlsZWQKKwkJaWYgKCRwb2xsX3JlcyA9PSBQR1JFU19QT0xM SU5HX0ZBSUxFRCB8fCAkc3RhdHVzID09IENPTk5FQ1RJT05fQkFEKQorCQl7CisJCQlkaWUg ImNvbm5lY3Rpb24gZmFpbGVkOiAiIC4gUFFlcnJvck1lc3NhZ2UoJGNvbm4pOworCQl9CisK KwkJZGllICJ0aW1lZCBvdXQgd2FpdGluZyBmb3IgY29ubmVjdGlvbiIgaWYgdGltZSAtICRz dGFydCA+ICR0aW1lb3V0OworCisJCSMgV2FpdCBvbiBzb2NrZXQgYmFzZWQgb24gd2hhdCBQ UWNvbm5lY3RQb2xsIG5lZWRzCisJCW15ICRzb2NrZXQgPSBQUXNvY2tldCgkY29ubik7CisJ CWlmICgkc29ja2V0ID49IDApCisJCXsKKwkJCW15ICRmb3JSZWFkID0gKCRwb2xsX3JlcyA9 PSBQR1JFU19QT0xMSU5HX1JFQURJTkcpID8gMSA6IDA7CisJCQlteSAkZm9yV3JpdGUgPSAo JHBvbGxfcmVzID09IFBHUkVTX1BPTExJTkdfV1JJVElORykgPyAxIDogMDsKKwkJCW15ICRl bmRfdGltZSA9IFBRZ2V0Q3VycmVudFRpbWVVU2VjKCkgKyAxXzAwMF8wMDA7ICAjIDEgc2Vj b25kCisJCQlQUXNvY2tldFBvbGwoJHNvY2tldCwgJGZvclJlYWQsICRmb3JXcml0ZSwgJGVu ZF90aW1lKTsKKwkJfQorCX0KK30KKworIyBTaW5nbGUgc3RlcCBvZiBhc3luYyBjb25uZWN0 aW9uIHBvbGxpbmcgLSBkcml2ZXMgdGhlIGNvbm5lY3Rpb24gc3RhdGUgbWFjaGluZQorIyBm b3J3YXJkIHdpdGhvdXQgYmxvY2tpbmcuIFJldHVybnMgdGhlIHBvbGwgcmVzdWx0IChQR1JF U19QT0xMSU5HXyogY29uc3RhbnQpLgorc3ViIHBvbGxfY29ubmVjdAoreworCW15ICRzZWxm ID0gc2hpZnQ7CisJbXkgJGNvbm4gPSAkc2VsZi0+e2Nvbm59OworCXJldHVybiBQUWNvbm5l Y3RQb2xsKCRjb25uKTsKK30KKworPXBvZAorCis9aXRlbSAkc2Vzc2lvbi0+Y2xvc2UoKQor CitDbG9zZSB0aGUgY29ubmVjdGlvbgorCis9Y3V0CisKK3N1YiBjbG9zZQoreworCW15ICRz ZWxmID0gc2hpZnQ7CisJUFFmaW5pc2goJHNlbGYtPntjb25ufSk7CisJZGVsZXRlICRzZWxm LT57Y29ubn07Cit9CisKKyMgQWxpYXMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBCYWNrZ3Jv dW5kUHNxbAorKnF1aXQgPSBcJmNsb3NlOworCisjIGNsb3NlIHRoZSBzZXNzaW9uIGlmIHRo ZSBvYmplY3QgZ29lcyBvdXQgb2Ygc2NvcGUKK3N1YiBERVNUUk9ZCit7CisJbXkgJHNlbGYg PSBzaGlmdDsKKworCSMgRHVyaW5nIGdsb2JhbCBkZXN0cnVjdGlvbiB0aGUgRkZJOjpQbGF0 eXB1cyBiaW5kaW5ncyAoYW5kIGFueSBub3RpY2UKKwkjIHByb2Nlc3NvciBjbG9zdXJlIHJl Z2lzdGVyZWQgd2l0aCBsaWJwcSkgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIHRvcm4KKwkjIGRv d24gaW4gYW4gdW5wcmVkaWN0YWJsZSBvcmRlci4gIENhbGxpbmcgUFFmaW5pc2goKSB0aGVu IGNhbiBpbnZva2UgYQorCSMgZnJlZWQgbm90aWNlIGNhbGxiYWNrIG9yIGEgZnJlZWQgRkZJ IHRodW5rLCBkeWluZyB3aXRoICJDYW4ndCB1c2UgYW4KKwkjIHVuZGVmaW5lZCB2YWx1ZSBh cyBhIHN1YnJvdXRpbmUgcmVmZXJlbmNlIi4gIFRoZSBwcm9jZXNzIGlzIGV4aXRpbmcKKwkj IGFueXdheSwgc28ganVzdCBsZXQgdGhlIE9TIHJlY2xhaW0gdGhlIHNvY2tldC4KKwlyZXR1 cm4gaWYgJHteR0xPQkFMX1BIQVNFfSBlcSAnREVTVFJVQ1QnOworCisJJHNlbGYtPmNsb3Nl IGlmIGV4aXN0cyAkc2VsZi0+e2Nvbm59OworfQorCis9cG9kCisKKz1pdGVtICRzZXNzaW9u LT5yZWNvbm5lY3QoKQorCitSZW9wZW4gdGhlIHNlc3Npb24gdXNpbmcgdGhlIG9yaWdpbmFs IGNvbm5zdHIuIElmIHRoZSBzZXNzaW9uIGlzIHN0aWxsIG9wZW4sCitjbG9zZSBpdCBiZWZv cmUgcmVvcGVuaW5nLgorCis9Y3V0CisKK3N1YiByZWNvbm5lY3QKK3sKKwlteSAkc2VsZiA9 IHNoaWZ0OworCSRzZWxmLT5jbG9zZSBpZiBleGlzdHMgJHNlbGYtPntjb25ufTsKKwkkc2Vs Zi0+e2Nvbm59ID0gUFFjb25uZWN0ZGIoJHNlbGYtPntjb25uc3RyfSk7CisJbXkgJHN0YXR1 cyA9IFBRc3RhdHVzKCRzZWxmLT57Y29ubn0pOworCWlmICgkc3RhdHVzID09IENPTk5FQ1RJ T05fT0spCisJeworCQkkc2VsZi0+X3NldHVwX25vdGljZV9wcm9jZXNzb3IoKTsKKwl9CisJ cmV0dXJuICRzdGF0dXM7Cit9CisKKz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPnJlY29ubmVj dF9hbmRfY2xlYXIoKQorCitSZWNvbm5lY3QgYW5kIGNsZWFyIGFsbCBjYXB0dXJlZCBub3Rp Y2VzLiBSZXR1cm5zIHRoZSBjb25uZWN0aW9uIHN0YXR1cy4KKworPWN1dAorCitzdWIgcmVj b25uZWN0X2FuZF9jbGVhcgoreworCW15ICRzZWxmID0gc2hpZnQ7CisJbXkgJHN0YXR1cyA9 ICRzZWxmLT5yZWNvbm5lY3QoKTsKKwkkc2VsZi0+Y2xlYXJfbm90aWNlcygpOworCXJldHVy biAkc3RhdHVzOworfQorCis9cG9kCisKKz1pdGVtICRzZXNzaW9uLT5nZXRfbm90aWNlcygp CisKK1JldHVybiBhbiBhcnJheXJlZiBvZiBhbGwgY2FwdHVyZWQgbm90aWNlcy93YXJuaW5n cyBzaW5jZSB0aGUgbGFzdCBjbGVhci4KKworPWN1dAorCitzdWIgZ2V0X25vdGljZXMKK3sK KwlteSAkc2VsZiA9IHNoaWZ0OworCXJldHVybiAkc2VsZi0+e25vdGljZXN9OworfQorCis9 cG9kCisKKz1pdGVtICRzZXNzaW9uLT5nZXRfbm90aWNlc19zdHIoKQorCitSZXR1cm4gYWxs IGNhcHR1cmVkIG5vdGljZXMvd2FybmluZ3MgYXMgYSBzaW5nbGUgc3RyaW5nIChqb2luZWQg YnkgZW1wdHkgc3RyaW5nKS4KK1RoaXMgaXMgc2ltaWxhciB0byBob3cgQmFja2dyb3VuZFBz cWwncyB7c3RkZXJyfSBmaWVsZCB3b3Jrcy4KKworPWN1dAorCitzdWIgZ2V0X25vdGljZXNf c3RyCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwlyZXR1cm4gam9pbignJywgQHskc2VsZi0+ e25vdGljZXN9fSk7Cit9CisKKz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPmNsZWFyX25vdGlj ZXMoKQorCitDbGVhciBhbGwgY2FwdHVyZWQgbm90aWNlcy93YXJuaW5ncy4KKworPWN1dAor CitzdWIgY2xlYXJfbm90aWNlcworeworCW15ICRzZWxmID0gc2hpZnQ7CisJIyBDbGVhciBp biBwbGFjZSAtIGRvbid0IHJlcGxhY2UgdGhlIGFycmF5LCBhcyB0aGUgbm90aWNlIHByb2Nl c3NvcgorCSMgY2xvc3VyZSBoYXMgYSByZWZlcmVuY2UgdG8gaXQKKwlAeyRzZWxmLT57bm90 aWNlc319ID0gKCk7Cit9CisKKz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPmdldF9zdGRlcnIo KQorCitSZXR1cm4gYSBzdGRlcnItbGlrZSBzdHJpbmcgY29udGFpbmluZyBhbGwgbm90aWNl cyBwbHVzIGFueSBlcnJvciBtZXNzYWdlCitmcm9tIHRoZSBsYXN0IHF1ZXJ5LiBUaGlzIG1p bWljcyBCYWNrZ3JvdW5kUHNxbCdzIHtzdGRlcnJ9IGJlaGF2aW9yLgorCis9Y3V0CisKK3N1 YiBnZXRfc3RkZXJyCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwlteSAkc3RkZXJyID0gJHNl bGYtPmdldF9ub3RpY2VzX3N0cigpOworCWlmIChleGlzdHMgJHNlbGYtPntsYXN0X2Vycm9y fSAmJiBkZWZpbmVkICRzZWxmLT57bGFzdF9lcnJvcn0pCisJeworCQkkc3RkZXJyIC49ICRz ZWxmLT57bGFzdF9lcnJvcn07CisJfQorCXJldHVybiAkc3RkZXJyOworfQorCis9cG9kCisK Kz1pdGVtICRzZXNzaW9uLT5jbGVhcl9zdGRlcnIoKQorCitDbGVhciBub3RpY2VzIGFuZCBs YXN0IGVycm9yLCBsaWtlIHNldHRpbmcgJHBzcWwtPntzdGRlcnJ9ID0gJycuCisKKz1jdXQK Kworc3ViIGNsZWFyX3N0ZGVycgoreworCW15ICRzZWxmID0gc2hpZnQ7CisJJHNlbGYtPmNs ZWFyX25vdGljZXMoKTsKKwlkZWxldGUgJHNlbGYtPntsYXN0X2Vycm9yfTsKK30KKworPXBv ZAorCis9aXRlbSAkc2Vzc2lvbi0+Y29ubl9zdGF0dXMoKQorCitSZXR1cm4gdGhlIGNvbm5l Y3Rpb24gc3RhdHVzLiBUaGlzIHdpbGwgYmUgYSBsaWJwcSBzdGF0dXMgdmFsdWUgbGlrZQor QzxDT05ORUNUSU9OX09LPi4KKworPWN1dAorCitzdWIgY29ubl9zdGF0dXMKK3sKKwlteSAk c2VsZiA9IHNoaWZ0OworCXJldHVybiBleGlzdHMgJHNlbGYtPntjb25ufSA/IFBRc3RhdHVz KCRzZWxmLT57Y29ubn0pIDogdW5kZWY7Cit9CisKKz1wb2QKKworPWl0ZW0gJHNlc3Npb24t PmJhY2tlbmRfcGlkKCkKKworUmV0dXJuIHRoZSBiYWNrZW5kIHByb2Nlc3MgSUQgZm9yIHRo aXMgY29ubmVjdGlvbi4KKworPWN1dAorCitzdWIgYmFja2VuZF9waWQKK3sKKwlteSAkc2Vs ZiA9IHNoaWZ0OworCXJldHVybiBQUWJhY2tlbmRQSUQoJHNlbGYtPntjb25ufSk7Cit9CisK Kz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPmRvKCRzcWwsIC4uLikKKworUnVuIG9uZSBvciBt b3JlIFNRTCBzdGF0ZW1lbnRzIHN5bmNocm9ub3VzbHkgKHVzaW5nIEM8UFFleGVjPikuIFRo ZSBzdGF0ZW1lbnRzCitzaG91bGQgbm90IHJldHVybiBhbnkgdHVwbGVzLiBSZXR1cm5zIHRo ZSBzdGF0dXMsIHdoaWNoIHdpbGwgYmUKK0M8UEdSRVNfQ09NTUFORF9PSz4gKGkuZS4gMSkg aW4gdGhlIGNhc2Ugb2Ygc3VjY2Vzcy4KKworPWN1dAorCitzdWIgZG8KK3sKKwlteSAkc2Vs ZiA9IHNoaWZ0OworCW15ICRjb25uID0gJHNlbGYtPntjb25ufTsKKwlteSAkc3RhdHVzOwor CWZvcmVhY2ggbXkgJHNxbCAoQF8pCisJeworCQlteSAkcmVzdWx0ID0gUFFleGVjKCRjb25u LCAkc3FsKTsKKwkJJHN0YXR1cyA9IFBRcmVzdWx0U3RhdHVzKCRyZXN1bHQpOworCQlQUWNs ZWFyKCRyZXN1bHQpOworCQlyZXR1cm4gJHN0YXR1cyB1bmxlc3MgJHN0YXR1cyA9PSBQR1JF U19DT01NQU5EX09LOworCX0KKwlyZXR1cm4gJHN0YXR1czsKK30KKworPXBvZAorCis9aXRl bSAkc2Vzc2lvbi0+ZG9fYXN5bmMoJHNxbCkKKworUnVuIGEgc2luZ2xlIHN0YXRlbWVudCBh c3luY2hyb25vdXNseSwgdXNpbmcgQzxQUXNlbmRRdWVyeT4uIFRoZSByZXR1cm4gdmFsdWUK K2lzIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHN1Y2Nlc3MuCisKKz1jdXQKKworc3ViIGRvX2Fz eW5jCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwlteSAkY29ubiA9ICRzZWxmLT57Y29ubn07 CisJbXkgJHNxbCA9IHNoaWZ0OworCW15ICRyZXN1bHQgPSBQUXNlbmRRdWVyeSgkY29ubiwg JHNxbCk7CisJcmV0dXJuICRyZXN1bHQ7ICMgMSBvciAwCit9CisKKyMgZ2V0IHRoZSBuZXh0 IHJlc3VsdHNldCBmcm9tIHNvbWUgYXN5bmMgY29tbWFuZHMKKyMgd2FpdCBpZiBuZWNlc3Nh cnkgdXNpbmcgUFFzb2NrZXRQb2xsCisjIGMuZi4gbGlicHFzcnZfZ2V0X3Jlc3VsdAorc3Vi IF9nZXRfcmVzdWx0Cit7CisJbXkgJGNvbm4gPSBzaGlmdDsKKwlteSAkc29ja2V0ID0gUFFz b2NrZXQoJGNvbm4pOworCXdoaWxlIChQUWlzQnVzeSgkY29ubikpCisJeworCQkjIFdhaXQg Zm9yIHRoZSBzb2NrZXQgdG8gYmVjb21lIHJlYWRhYmxlIChubyB0aW1lb3V0ID0gLTEpCisJ CVBRc29ja2V0UG9sbCgkc29ja2V0LCAxLCAwLCAtMSk7CisJCWxhc3QgaWYgUFFjb25zdW1l SW5wdXQoJGNvbm4pID09IDA7CisJfQorCXJldHVybiBQUWdldFJlc3VsdCgkY29ubik7Cit9 CisKKz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPndhaXRfZm9yX2NvbXBsZXRpb24oKQorCitX YWl0IHVudGlsIGFsbCBhc3luY2hyb25vdXMgU1FMIGhhcyBjb21wbGV0ZWQKKworPWN1dAor CitzdWIgd2FpdF9mb3JfY29tcGxldGlvbgoreworCSMgd2FpdCBmb3IgYWxsIHRoZSByZXN1 bHRzZXRzIGFuZCBjbGVhciB0aGVtCisJIyBjLmYuIGxpYnBxc3J2X2dldF9yZXN1bHRfbGFz dAorCW15ICRzZWxmID0gc2hpZnQ7CisJbXkgJGNvbm4gPSAkc2VsZi0+e2Nvbm59OworCXdo aWxlIChteSAkcmVzID0gX2dldF9yZXN1bHQoJGNvbm4pKQorCXsKKwkJUFFjbGVhcigkcmVz KTsKKwl9Cit9CisKKz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPmdldF9hc3luY19yZXN1bHQo KQorCitXYWl0IGZvciBhbmQgcmV0dXJuIHRoZSByZXN1bHQgb2YgYW4gYXN5bmMgcXVlcnkg YXMgYSByZXN1bHQgaGFzaC4KK0NsZWFycyBhbnkgc3Vic2VxdWVudCByZXN1bHRzLgorCis9 Y3V0CisKK3N1YiBnZXRfYXN5bmNfcmVzdWx0Cit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwlt eSAkY29ubiA9ICRzZWxmLT57Y29ubn07CisJbXkgJHJlc3VsdCA9IF9nZXRfcmVzdWx0KCRj b25uKTsKKwlyZXR1cm4gdW5kZWYgdW5sZXNzICRyZXN1bHQ7CisJbXkgJHJlcyA9IF9nZXRf cmVzdWx0X2RhdGEoJHJlc3VsdCwgJGNvbm4pOworCVBRY2xlYXIoJHJlc3VsdCk7CisJIyBD bGVhciBhbnkgcmVtYWluaW5nIHJlc3VsdHMKKwl3aGlsZSAobXkgJHIgPSBfZ2V0X3Jlc3Vs dCgkY29ubikpCisJeworCQlQUWNsZWFyKCRyKTsKKwl9CisJcmV0dXJuICRyZXM7Cit9CisK Kz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPndhaXRfZm9yX2FzeW5jX3BhdHRlcm4oJHBhdHRl cm4sICR0aW1lb3V0KQorCitXYWl0IGZvciBhbiBhc3luYyBxdWVyeSByZXN1bHQgd2hvc2Ug cHNxbG91dCBtYXRjaGVzIHRoZSBnaXZlbiByZWdleCBwYXR0ZXJuLgorUmV0dXJucyB0aGUg bWF0Y2hpbmcgb3V0cHV0IHN0cmluZywgb3IgZGllcyBvbiB0aW1lb3V0L2Vycm9yLgorRGVm YXVsdCB0aW1lb3V0IGlzIGZyb20gJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0 X2RlZmF1bHQuCisKKz1jdXQKKworc3ViIHdhaXRfZm9yX2FzeW5jX3BhdHRlcm4KK3sKKwlt eSAkc2VsZiA9IHNoaWZ0OworCW15ICRwYXR0ZXJuID0gc2hpZnQ7CisJbXkgJHRpbWVvdXQg PSBzaGlmdCAvLyAkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdDsK KwlteSAkY29ubiA9ICRzZWxmLT57Y29ubn07CisJbXkgJHNvY2tldCA9IFBRc29ja2V0KCRj b25uKTsKKwlteSAkc3RhcnQgPSB0aW1lOworCisJd2hpbGUgKDEpCisJeworCQkjIENoZWNr IGlmIHJlc3VsdCBpcyByZWFkeSAobm9uLWJsb2NraW5nKQorCQlQUWNvbnN1bWVJbnB1dCgk Y29ubik7CisJCWlmICghUFFpc0J1c3koJGNvbm4pKQorCQl7CisJCQlteSAkcmVzdWx0ID0g UFFnZXRSZXN1bHQoJGNvbm4pOworCQkJaWYgKCRyZXN1bHQpCisJCQl7CisJCQkJbXkgJHJl cyA9IF9nZXRfcmVzdWx0X2RhdGEoJHJlc3VsdCwgJGNvbm4pOworCQkJCVBRY2xlYXIoJHJl c3VsdCk7CisJCQkJIyBDbGVhciBhbnkgcmVtYWluaW5nIHJlc3VsdHMKKwkJCQl3aGlsZSAo bXkgJHIgPSBQUWdldFJlc3VsdCgkY29ubikpCisJCQkJeworCQkJCQlQUWNsZWFyKCRyKTsK KwkJCQl9CisJCQkJbXkgJG91dHB1dCA9ICRyZXMtPntwc3Fsb3V0fTsKKwkJCQlpZiAoJG91 dHB1dCA9fiAkcGF0dGVybikKKwkJCQl7CisJCQkJCXJldHVybiAkb3V0cHV0OworCQkJCX0K KwkJCQkjIElmIHdlIGdvdCBhIHJlc3VsdCBidXQgaXQgZGlkbid0IG1hdGNoLCByZXR1cm4g aXQgYW55d2F5CisJCQkJIyAoY2FsbGVyIG1heSB3YW50IHRvIGNoZWNrIGVycm9yKQorCQkJ CXJldHVybiAkb3V0cHV0OworCQkJfQorCQl9CisKKwkJZGllICJ0aW1lZCBvdXQgd2FpdGlu ZyBmb3IgYXN5bmMgcmVzdWx0IiBpZiB0aW1lIC0gJHN0YXJ0ID4gJHRpbWVvdXQ7CisKKwkJ IyBXYWl0IGZvciB0aGUgc29ja2V0IHRvIGJlY29tZSByZWFkYWJsZSwgd2l0aCAxIHNlY29u ZCB0aW1lb3V0CisJCSMgdG8gYWxsb3cgcGVyaW9kaWMgdGltZW91dCBjaGVja3MKKwkJbXkg JGVuZF90aW1lID0gUFFnZXRDdXJyZW50VGltZVVTZWMoKSArIDFfMDAwXzAwMDsgICMgMSBz ZWNvbmQKKwkJUFFzb2NrZXRQb2xsKCRzb2NrZXQsIDEsIDAsICRlbmRfdGltZSk7CisJfQor fQorCis9cG9kCisKKz1pdGVtICRzZXNzaW9uLT50cnlfZ2V0X2FzeW5jX3Jlc3VsdCgpCisK K05vbi1ibG9ja2luZyBjaGVjayBmb3IgYXN5bmMgcXVlcnkgcmVzdWx0LiBSZXR1cm5zIHJl c3VsdCBoYXNoIGlmIGF2YWlsYWJsZSwKK3VuZGVmIGlmIHF1ZXJ5IGlzIHN0aWxsIHJ1bm5p bmcuCisKKz1jdXQKKworc3ViIHRyeV9nZXRfYXN5bmNfcmVzdWx0Cit7CisJbXkgJHNlbGYg PSBzaGlmdDsKKwlteSAkY29ubiA9ICRzZWxmLT57Y29ubn07CisKKwlQUWNvbnN1bWVJbnB1 dCgkY29ubik7CisJcmV0dXJuIHVuZGVmIGlmIFBRaXNCdXN5KCRjb25uKTsKKworCW15ICRy ZXN1bHQgPSBQUWdldFJlc3VsdCgkY29ubik7CisJcmV0dXJuIHVuZGVmIHVubGVzcyAkcmVz dWx0OworCisJbXkgJHJlcyA9IF9nZXRfcmVzdWx0X2RhdGEoJHJlc3VsdCwgJGNvbm4pOwor CVBRY2xlYXIoJHJlc3VsdCk7CisJIyBDbGVhciBhbnkgcmVtYWluaW5nIHJlc3VsdHMKKwl3 aGlsZSAobXkgJHIgPSBQUWdldFJlc3VsdCgkY29ubikpCisJeworCQlQUWNsZWFyKCRyKTsK Kwl9CisJcmV0dXJuICRyZXM7Cit9CisKKz1wb2QKKworPWl0ZW0gICRzZXNzaW9uLT5zZXRf cGFzc3dvcmQoJHVzZXIsICRwYXNzd29yZCkKKworU2V0IHRoZSB1c2VyJ3MgcGFzc3dvcmQg YnkgY2FsbGluZyBDPFBRY2hhbmdlUGFzc3dvcmQ+LgorCitSZXR1cm5zIGEgcmVzdWx0IGhh c2guCisKKz1jdXQKKworIyBzZXQgcGFzc3dvcmQgZm9yIHVzZXIKK3N1YiBzZXRfcGFzc3dv cmQKK3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCW15ICR1c2VyID0gc2hpZnQ7CisJbXkgJHBh c3N3b3JkID0gc2hpZnQ7CisJbXkgJGNvbm4gPSAkc2VsZi0+e2Nvbm59OworCW15ICRyZXN1 bHQgPSBQUWNoYW5nZVBhc3N3b3JkKCRjb25uLCAkdXNlciwgJHBhc3N3b3JkKTsKKwlteSAk cmV0ID0gX2dldF9yZXN1bHRfZGF0YSgkcmVzdWx0KTsKKwlQUWNsZWFyKCRyZXN1bHQpOwor CXJldHVybiAkcmV0OworfQorCisjIENvbW1vbiBpbnRlcm5hbCByb3V0aW5lIHRvIHByb2Nl c3MgcmVzdWx0IGRhdGEuCisjIFRoZSByZXR1cm5lZCBvYmplY3QgaXMgZGVhZCBhbmQgd2ls bCBiZSBnYXJiYWdlIGNvbGxlY3RlZCBhcyBuZWNlc3NhcnkuCisKK3N1YiBfZ2V0X3Jlc3Vs dF9kYXRhCit7CisJbXkgJHJlc3VsdCA9IHNoaWZ0OworCW15ICRjb25uID0gc2hpZnQ7CisJ bXkgJHN0YXR1cyA9IFBRcmVzdWx0U3RhdHVzKCRyZXN1bHQpOworCW15ICRyZXMgPSB7CXN0 YXR1cyA9PiAkc3RhdHVzLCBuYW1lcyA9PiBbXSwgdHlwZXMgPT4gW10sIHJvd3MgPT4gW10s CisJCQlwc3Fsb3V0ID0+ICIifTsKKwl1bmxlc3MgKCRzdGF0dXMgPT0gUEdSRVNfVFVQTEVT X09LIHx8ICRzdGF0dXMgPT0gUEdSRVNfQ09NTUFORF9PSykKKwl7CisJCSRyZXMtPntlcnJv cl9tZXNzYWdlfSA9IFBRZXJyb3JNZXNzYWdlKCRjb25uKTsKKwkJcmV0dXJuICRyZXM7CisJ fQorCWlmICgkc3RhdHVzID09IFBHUkVTX0NPTU1BTkRfT0spCisJeworCQlyZXR1cm4gJHJl czsKKwl9CisJbXkgJG50dXBsZXMgPSBQUW50dXBsZXMoJHJlc3VsdCk7CisJbXkgJG5maWVs ZHMgPSBQUW5maWVsZHMoJHJlc3VsdCk7CisJIyBhc3N1bWluZyBoZXJlIHRoYXQgdGhlIHN0 cmluZ3MgcmV0dXJuZWQgYnkgUFFmbmFtZSBhbmQgUFFnZXR2YWx1ZQorCSMgYXJlIG1hcHBl ZCBpbnRvIHBlcmwgc3BhY2UgdXNpbmcgc2V0c3ZwdiBvciBzaW1pbGFyIGFuZCB0aHVzIHdv bid0CisJIyBiZSBhZmZlY3QgYnkgdXMgY2FsbGluZyBQUWNsZWFyIG9uIHRoZSByZXN1bHQg b2JqZWN0LgorCWZvcmVhY2ggbXkgJGZpZWxkICgwIC4uICRuZmllbGRzLTEpCisJeworCQlw dXNoKEB7JHJlcy0+e25hbWVzfX0sIFBRZm5hbWUoJHJlc3VsdCwgJGZpZWxkKSk7CisJCXB1 c2goQHskcmVzLT57dHlwZXN9fSwgUFFmdHlwZSgkcmVzdWx0LCAkZmllbGQpKTsKKwl9CisJ bXkgQHRleHRyb3dzOworCWZvcmVhY2ggbXkgJG5yb3cgKDAgLi4gJG50dXBsZXMgLSAxKQor CXsKKwkJbXkgJHJvdyA9IFtdOworCQlmb3JlYWNoIG15ICRmaWVsZCAoIDAgLi4gJG5maWVs ZHMgLSAxKQorCQl7CisJCQlteSAkdmFsID0gUFFnZXR2YWx1ZSgkcmVzdWx0LCAkbnJvdywg JGZpZWxkKTsKKwkJCWlmICgoJHZhbCAvLyAiIikgZXEgIiIpCisJCQl7CisJCQkJJHZhbCA9 IHVuZGVmIGlmIFBRZ2V0aXNudWxsKCRyZXN1bHQsICRucm93LCAkZmllbGQpOworCQkJfQor CQkJcHVzaChAJHJvdywgJHZhbCk7CisJCX0KKwkJcHVzaChAeyRyZXMtPntyb3dzfX0sICRy b3cpOworCQlubyB3YXJuaW5ncyBxdyh1bmluaXRpYWxpemVkKTsKKwkJcHVzaChAdGV4dHJv d3MsIGpvaW4oJ3wnLCBAJHJvdykpOworCX0KKwkkcmVzLT57cHNxbG91dH0gPSBqb2luKCJc biIsQHRleHRyb3dzKSBpZiAkbnR1cGxlczsKKwlyZXR1cm4gJHJlczsKK30KKworCis9cG9k CisKKz1pdGVtICRzZXNzaW9uLT5xdWVyeSgkc3FsKQorCitSdW5zIHNxbCB0aGF0IG1pZ2h0 IHJldHVybiB0dXBsZXMuCisKK1JldHVybnMgYSByZXN1bHQgaGFzaC4KKworPWN1dAorCitz dWIgcXVlcnkKK3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCW15ICRzcWwgPSBzaGlmdDsKKwlt eSAkY29ubiA9ICRzZWxmLT57Y29ubn07CisKKwkjIFVzZSBQUXNlbmRRdWVyeSArIFBRZ2V0 UmVzdWx0IHRvIGhhbmRsZSBtdWx0aS1zdGF0ZW1lbnQgU1FMIHByb3Blcmx5LgorCSMgVGhp cyBjb2xsZWN0cyByZXN1bHRzIGZyb20gYWxsIHN0YXRlbWVudHMgYW5kIHJldHVybnMgdGhl IGxhc3Qgb25lCisJIyB0aGF0IGhhZCB0dXBsZXMsIHNpbWlsYXIgdG8gaG93IHBzcWwgd29y a3MuCisJUFFzZW5kUXVlcnkoJGNvbm4sICRzcWwpIG9yIGRvIHsKKwkJcmV0dXJuIHsgc3Rh dHVzID0+IC0xLCBlcnJvcl9tZXNzYWdlID0+IFBRZXJyb3JNZXNzYWdlKCRjb25uKSwKKwkJ CQkgbmFtZXMgPT4gW10sIHR5cGVzID0+IFtdLCByb3dzID0+IFtdLCBwc3Fsb3V0ID0+ICIi IH07CisJfTsKKworCW15ICRmaW5hbF9yZXM7CisJbXkgJGxhc3RfZXJyb3I7CisJbXkgQGFs bF9wc3Fsb3V0OworCisJd2hpbGUgKG15ICRyZXN1bHQgPSBfZ2V0X3Jlc3VsdCgkY29ubikp CisJeworCQlteSAkcmVzID0gX2dldF9yZXN1bHRfZGF0YSgkcmVzdWx0LCAkY29ubik7CisJ CVBRY2xlYXIoJHJlc3VsdCk7CisKKwkJIyBDb2xsZWN0IG91dHB1dCBmcm9tIGFsbCBzdGF0 ZW1lbnRzCisJCXB1c2ggQGFsbF9wc3Fsb3V0LCAkcmVzLT57cHNxbG91dH0gaWYgJHJlcy0+ e3BzcWxvdXR9IG5lICIiOworCisJCSMgVHJhY2sgZXJyb3JzCisJCSRsYXN0X2Vycm9yID0g JHJlcy0+e2Vycm9yX21lc3NhZ2V9IGlmIGV4aXN0cyAkcmVzLT57ZXJyb3JfbWVzc2FnZX07 CisKKwkJIyBLZWVwIHRoZSBsYXN0IHJlc3VsdCB0aGF0IGhhZCB0dXBsZXMsIG9yIHRoZSBs YXN0IHJlc3VsdCBvdmVyYWxsCisJCWlmICgkcmVzLT57c3RhdHVzfSA9PSBQR1JFU19UVVBM RVNfT0sgfHwgIWRlZmluZWQgJGZpbmFsX3JlcykKKwkJeworCQkJJGZpbmFsX3JlcyA9ICRy ZXM7CisJCX0KKwl9CisKKwkkZmluYWxfcmVzIC8vPSB7IHN0YXR1cyA9PiBQR1JFU19DT01N QU5EX09LLCBuYW1lcyA9PiBbXSwgdHlwZXMgPT4gW10sCisJCQkJCSByb3dzID0+IFtdLCBw c3Fsb3V0ID0+ICIiIH07CisKKwkjIENvbWJpbmUgYWxsIG91dHB1dCAobGlrZSBwc3FsIGRv ZXMpCisJJGZpbmFsX3Jlcy0+e3BzcWxvdXR9ID0gam9pbigiXG4iLCBAYWxsX3BzcWxvdXQp IGlmIEBhbGxfcHNxbG91dDsKKworCSMgSWYgdGhlcmUgd2FzIGFueSBlcnJvciwgaW5jbHVk ZSBpdCBpbiB0aGUgcmVzdWx0IGZvciBxdWVyeV9zYWZlCisJJGZpbmFsX3Jlcy0+e2Vycm9y X21lc3NhZ2V9ID0gJGxhc3RfZXJyb3IgaWYgZGVmaW5lZCAkbGFzdF9lcnJvcjsKKworCSMg U3RvcmUgZXJyb3IgZm9yIGdldF9zdGRlcnIoKQorCSRzZWxmLT57bGFzdF9lcnJvcn0gPSAk bGFzdF9lcnJvcjsKKworCSMgSWYgd2UncmUgaW4gYW4gYWJvcnRlZCB0cmFuc2FjdGlvbiBz dGF0ZSwgcm9sbCBpdCBiYWNrIHRvIGNsZWFuIHVwLgorCSMgVGhpcyBtaW1pY3MgcHNxbCdz IGJlaGF2aW9yIHdpdGggb25fZXJyb3Jfc3RvcCA9PiAwLgorCWlmIChQUXRyYW5zYWN0aW9u U3RhdHVzKCRjb25uKSA9PSBQUVRSQU5TX0lORVJST1IpCisJeworCQlteSAkcmIgPSBQUWV4 ZWMoJGNvbm4sICJST0xMQkFDSyIpOworCQlQUWNsZWFyKCRyYikgaWYgJHJiOworCX0KKwor CXJldHVybiAkZmluYWxfcmVzOworfQorCis9cG9kCisKKz1pdGVtICRzZXNzaW9uLT5xdWVy eV9zYWZlKCRzcWwpCisKK1J1bnMgc3FsIHRoYXQgbWlnaHQgcmV0dXJuIHR1cGxlcywgY3Jv YWtpbmcgaWYgdGhlcmUncyBhbiBlcnJvci4KK1JldHVybnMgdGhlIHBzcWxvdXQgc3RyaW5n IChsaWtlIHBzcWwgLUF0IG91dHB1dCkgb24gc3VjY2Vzcy4KKworPWN1dAorCitzdWIgcXVl cnlfc2FmZQoreworCW15ICRzZWxmID0gc2hpZnQ7CisJbXkgJHNxbCA9IHNoaWZ0OworCW15 ICRyZXMgPSAkc2VsZi0+cXVlcnkoJHNxbCk7CisJaWYgKGV4aXN0cyAkcmVzLT57ZXJyb3Jf bWVzc2FnZX0pIHsKKwkJIyBEZWJ1Zzogc2hvdyB3aGVyZSB0aGUgZXJyb3Igb2NjdXJyZWQK KwkJbXkgJHNob3J0X3NxbCA9IHN1YnN0cigkc3FsLCAwLCAxMDApOworCQkkc2hvcnRfc3Fs ID1+IHMvXHMrLyAvZzsKKwkJY3JvYWsgInF1ZXJ5X3NhZmUgZmFpbGVkIG9uIFskc2hvcnRf c3FsLi4uXTogJHJlcy0+e2Vycm9yX21lc3NhZ2V9IjsKKwl9CisJcmV0dXJuICRyZXMtPntw c3Fsb3V0fTsKK30KKworPXBvZAorCis9aXRlbSAkc2Vzc2lvbi0+cXVlcnlfb25ldmFsKCRz cWwgWywgJG1pc3Npbmdfb2sgXSApCisKK1J1biBhIHF1ZXJ5IHRoYXQgaXMgZXhwZWN0ZWQg dG8gcmV0dXJuIG5vIG1vcmUgdGhhbiBvbmUgdHVwbGUgd2l0aCBvbmUgdmFsdWU7CisKK0lm IEM8JG1pc3Npbmdfb2s+IGlzIHRydWUsIHJldHVybiB1bmRlZiBpZiB0aGUgcXVlcnkgcmV0 dXJucyBubyB0dXBsZS4gT3RoZXJ3aXNlCitjcm9hayBpZiB0aGVyZSBpcyBub3QgZXhhY3Rs eSBvbmUgdHVwbGUsIG9yIG9mIHRoZSB0dXBsZSBkb2VzIG5vdCBoYXZlCitleGN0bHkgb25l IHZhbHVlLgorCitJZiBub25lIG9mIHRoZXNlIGFwcGx5LCByZXR1cm4gdGhlIHNpbmdsZSB2 YWx1ZSBmcm9tIHRoZSBxdWVyeS4gQSBOVUxMIHZhbHVlCit3aWxsIHJlc3VsdCBpbiB1bmRl Ziwgc28gaWYgQzwkbWlzc2luZ19vaz4gaXMgdHJ1ZSB5b3Ugd29uJ3QgYmUgYWJsZSB0bwor ZGlzdGluZ3Vpc2ggYmV0d2VlbiBhIG51bGwgdmFsdWUgYW5kIGEgbWlzc2luZyB0dXBsZS4K KworQSBub24gTlVMTCB2YWx1ZSBpcyByZXR1cm5lZCBhcyB0aGUgc3RyaW5nIHZhbHVlIG9i dGFpbmVkIGZyb20gQzxQUWdldHZhbHVlPi4KKworPWN1dAorCitzdWIgcXVlcnlfb25ldmFs Cit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwlteSAkc3FsID0gc2hpZnQ7CisJbXkgJG1pc3Np bmdfb2sgPSBzaGlmdDsgIyBkZWZhdWx0IGlzIG5vdCBvaworCW15ICRjb25uID0gJHNlbGYt Pntjb25ufTsKKwlteSAkcmVzdWx0ID0gUFFleGVjKCRjb25uLCAkc3FsKTsKKwlteSAkc3Rh dHVzID0gUFFyZXN1bHRTdGF0dXMoJHJlc3VsdCk7CisJdW5sZXNzICAoJHN0YXR1cyA9PSBQ R1JFU19UVVBMRVNfT0spCisJeworCQlQUWNsZWFyKCRyZXN1bHQpIGlmICRyZXN1bHQ7CisJ CWNyb2FrIFBRZXJyb3JNZXNzYWdlKCRjb25uKTsKKwl9CisJbXkgJG50dXBsZXMgPSBQUW50 dXBsZXMoJHJlc3VsdCk7CisJcmV0dXJuIHVuZGVmIGlmICgkbWlzc2luZ19vayAmJiAhJG50 dXBsZXMpOworCW15ICRuZmllbGRzID0gUFFuZmllbGRzKCRyZXN1bHQpOworCWNyb2FrICIk bnR1cGxlcyB0dXBsZXMgIT0gMSBvciAkbmZpZWxkcyBmaWVsZHMgIT0gMSIKKwkgIGlmICRu dHVwbGVzICE9IDEgfHwgJG5maWVsZHMgIT0gMTsKKwlteSAkdmFsID0gUFFnZXR2YWx1ZSgk cmVzdWx0LCAwLCAwKTsKKwlpZiAoJHZhbCBlcSAiIikKKwl7CisJCSR2YWwgPSB1bmRlZiBp ZiBQUWdldGlzbnVsbCgkcmVzdWx0LCAwLCAwKTsKKwl9CisJUFFjbGVhcigkcmVzdWx0KTsK KwlyZXR1cm4gJHZhbDsKK30KKworPXBvZAorCis9aXRlbSAkc2Vzc2lvbi0+cXVlcnlfdHVw bGVzKCRzcWwsIC4uLikKKworUnVuIHRoZSBzcWwgY29tbWFuZHMgYW5kIHJldHVybiB0aGUg b3V0cHV0IGFzIGEgc2luZ2xlIHBpZWNlIG9mIHRleHQgaW4gdGhlCitzYW1lIGZvcm1hdCBh cyBDPHBzcWwgLUEgLXQ+LgorCitGaWVsZHMgd2l0aGluIHR1cGxlcyBhcmUgc2VwYXJhdGVk IGJ5IGEgInwiLCB0dXBsZXMgYXJlIHNwZWFyYXRlZCBieSAiXG4iCisKKz1jdXQKKworc3Vi IHF1ZXJ5X3R1cGxlcworeworCW15ICRzZWxmID0gc2hpZnQ7CisJIyBVc2UgcGlwZWxpbmVk IHZlcnNpb24gZm9yIDQrIHF1ZXJpZXMgd2hlcmUgdGhlIG92ZXJoZWFkIGlzIHdvcnRoIGl0 CisJcmV0dXJuICRzZWxmLT5xdWVyeV90dXBsZXNfcGlwZWxpbmVkKEBfKSBpZiBAXyA+PSA0 OworCisJbXkgQHJlc3VsdHM7CisJZm9yZWFjaCBteSAkc3FsIChAXykKKwl7CisJCW15ICRy ZXMgPSAkc2VsZi0+cXVlcnkoJHNxbCk7CisJCWNyb2FrICRyZXMtPntlcnJvcl9tZXNzYWdl fQorCQkgIHVubGVzcyAkcmVzLT57c3RhdHVzfSA9PSBQR1JFU19UVVBMRVNfT0s7CisJCW15 ICRyb3dzID0gJHJlcy0+e3Jvd3N9OworCQl1bmxlc3MgKEAkcm93cykKKwkJeworCQkJIyB1 bmZvcnR1bmF0ZWx5IGJyZWFrcyBhdCBsZWFzdCBvbmUgdGVzdAorCQkJIyBwdXNoKEByZXN1 bHRzLCItLSBlbXB0eSIpOworCQkJbmV4dDsKKwkJfQorCQkjIGpvaW4gd2lsbCByZW5kZXIg dW5kZWYgYXMgYW4gZW1wdHkgc3RyaW5nIGhlcmUKKwkJbm8gd2FybmluZ3MgcXcodW5pbml0 aWFsaXplZCk7CisJCW15IEB0dXBsZXMgPSBtYXAgeyBqb2luKCd8JywgQCRfKTsgfSBAJHJv d3M7CisJCXB1c2goQHJlc3VsdHMsIGpvaW4oIlxuIixAdHVwbGVzKSk7CisJfQorCXJldHVy biBqb2luKCJcbiIsQHJlc3VsdHMpOworfQorCis9cG9kCisKKz1pdGVtICRzZXNzaW9uLT5x dWVyeV90dXBsZXNfcGlwZWxpbmVkKCRzcWwsIC4uLikKKworUnVuIG11bHRpcGxlIFNRTCBx dWVyaWVzIHVzaW5nIHBpcGVsaW5lIG1vZGUgZm9yIGVmZmljaWVuY3kuIFJldHVybnMgb3V0 cHV0CitpbiB0aGUgc2FtZSBmb3JtYXQgYXMgQzxxdWVyeV90dXBsZXM+IGJ1dCB3aXRoIG9u bHkgb25lIG5ldHdvcmsgcm91bmQtdHJpcAorZm9yIGFsbCBxdWVyaWVzLgorCis9Y3V0CisK K3N1YiBxdWVyeV90dXBsZXNfcGlwZWxpbmVkCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwlt eSBAcXVlcmllcyA9IEBfOworCW15ICRjb25uID0gJHNlbGYtPntjb25ufTsKKwlteSBAcmVz dWx0czsKKworCSMgRW50ZXIgcGlwZWxpbmUgbW9kZQorCVBRZW50ZXJQaXBlbGluZU1vZGUo JGNvbm4pIG9yIGNyb2FrICJGYWlsZWQgdG8gZW50ZXIgcGlwZWxpbmUgbW9kZSI7CisKKwkj IFNlbmQgYWxsIHF1ZXJpZXMgdXNpbmcgUFFzZW5kUXVlcnlQYXJhbXMgKFBRc2VuZFF1ZXJ5 IG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lIG1vZGUpCisJZm9yIG15ICRzcWwgKEBxdWVyaWVz KQorCXsKKwkJUFFzZW5kUXVlcnlQYXJhbXMoJGNvbm4sICRzcWwsIDAsIHVuZGVmLCB1bmRl ZiwgdW5kZWYsIHVuZGVmLCAwKSBvciBkbyB7CisJCQlQUWV4aXRQaXBlbGluZU1vZGUoJGNv bm4pOworCQkJY3JvYWsgIkZhaWxlZCB0byBzZW5kIHF1ZXJ5OiAiIC4gUFFlcnJvck1lc3Nh Z2UoJGNvbm4pOworCQl9OworCX0KKworCSMgTWFyayBlbmQgb2YgcGlwZWxpbmUKKwlQUXBp cGVsaW5lU3luYygkY29ubikgb3IgZG8geworCQlQUWV4aXRQaXBlbGluZU1vZGUoJGNvbm4p OworCQljcm9hayAiRmFpbGVkIHRvIHN5bmMgcGlwZWxpbmUiOworCX07CisKKwkjIENvbGxl Y3QgcmVzdWx0cyBmb3IgZWFjaCBxdWVyeQorCWZvciBteSAkaSAoMCAuLiAkI3F1ZXJpZXMp CisJeworCQlteSAkcmVzdWx0ID0gX2dldF9yZXN1bHQoJGNvbm4pOworCQlpZiAoISRyZXN1 bHQpCisJCXsKKwkJCVBRZXhpdFBpcGVsaW5lTW9kZSgkY29ubik7CisJCQljcm9hayAiTm8g cmVzdWx0IGZvciBxdWVyeSAkaSI7CisJCX0KKworCQlteSAkc3RhdHVzID0gUFFyZXN1bHRT dGF0dXMoJHJlc3VsdCk7CisJCWlmICgkc3RhdHVzID09IFBHUkVTX1BJUEVMSU5FX0FCT1JU RUQpCisJCXsKKwkJCVBRY2xlYXIoJHJlc3VsdCk7CisJCQlQUWV4aXRQaXBlbGluZU1vZGUo JGNvbm4pOworCQkJY3JvYWsgIlBpcGVsaW5lIGFib3J0ZWQgYXQgcXVlcnkgJGkiOworCQl9 CisKKwkJaWYgKCRzdGF0dXMgPT0gUEdSRVNfVFVQTEVTX09LKQorCQl7CisJCQlteSAkcmVz ID0gX2dldF9yZXN1bHRfZGF0YSgkcmVzdWx0LCAkY29ubik7CisJCQlteSAkcm93cyA9ICRy ZXMtPntyb3dzfTsKKwkJCWlmIChAJHJvd3MpCisJCQl7CisJCQkJbm8gd2FybmluZ3MgcXco dW5pbml0aWFsaXplZCk7CisJCQkJbXkgQHR1cGxlcyA9IG1hcCB7IGpvaW4oJ3wnLCBAJF8p OyB9IEAkcm93czsKKwkJCQlwdXNoKEByZXN1bHRzLCBqb2luKCJcbiIsIEB0dXBsZXMpKTsK KwkJCX0KKwkJfQorCQllbHNpZiAoJHN0YXR1cyAhPSBQR1JFU19DT01NQU5EX09LKQorCQl7 CisJCQlteSAkZXJyID0gUFFlcnJvck1lc3NhZ2UoJGNvbm4pOworCQkJUFFjbGVhcigkcmVz dWx0KTsKKwkJCVBRZXhpdFBpcGVsaW5lTW9kZSgkY29ubik7CisJCQljcm9hayAiUXVlcnkg JGkgZmFpbGVkOiAkZXJyIjsKKwkJfQorCQlQUWNsZWFyKCRyZXN1bHQpOworCisJCSMgQ29u c3VtZSB0aGUgTlVMTCByZXN1bHQgdGhhdCBtYXJrcyBlbmQgb2YgdGhpcyBxdWVyeSdzIHJl c3VsdHMKKwkJd2hpbGUgKG15ICRleHRyYSA9IFBRZ2V0UmVzdWx0KCRjb25uKSkKKwkJewor CQkJUFFjbGVhcigkZXh0cmEpOworCQl9CisJfQorCisJIyBDb25zdW1lIHRoZSBwaXBlbGlu ZSBzeW5jIHJlc3VsdAorCW15ICRzeW5jX3Jlc3VsdCA9IF9nZXRfcmVzdWx0KCRjb25uKTsK KwlpZiAoJHN5bmNfcmVzdWx0KQorCXsKKwkJbXkgJHN0YXR1cyA9IFBRcmVzdWx0U3RhdHVz KCRzeW5jX3Jlc3VsdCk7CisJCVBRY2xlYXIoJHN5bmNfcmVzdWx0KTsKKwkJaWYgKCRzdGF0 dXMgIT0gUEdSRVNfUElQRUxJTkVfU1lOQykKKwkJeworCQkJUFFleGl0UGlwZWxpbmVNb2Rl KCRjb25uKTsKKwkJCWNyb2FrICJFeHBlY3RlZCBQR1JFU19QSVBFTElORV9TWU5DLCBnb3Qg JHN0YXR1cyI7CisJCX0KKwl9CisKKwkjIEV4aXQgcGlwZWxpbmUgbW9kZQorCVBRZXhpdFBp cGVsaW5lTW9kZSgkY29ubikgb3IgY3JvYWsgIkZhaWxlZCB0byBleGl0IHBpcGVsaW5lIG1v ZGUiOworCisJcmV0dXJuIGpvaW4oIlxuIiwgQHJlc3VsdHMpOworfQorCisKK3N1YiBzZXRu b25ibG9ja2luZworeworCW15ICRzZWxmID0gc2hpZnQ7CisJbXkgJHZhbCA9IHNoaWZ0Owor CW15ICRyZXMgPSBQUXNldG5vbmJsb2NraW5nKCRzZWxmLT57Y29ubn0sICR2YWwpOworCWNy b2FrICJwcm9ibGVtIHNldHRpbmcgbm9uLWJsb2NraW5nIgorCSAgaWYgJHJlczsKKwlyZXR1 cm47Cit9CisKK3N1YiBpc25vbmJsb2NraW5nCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwly ZXR1cm4gUFFpc25vbmJsb2NraW5nKCRzZWxmLT57Y29ubn0pOworfQorCitzdWIgZW50ZXJQ aXBlbGluZU1vZGUKK3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCXJldHVybiBQUWVudGVyUGlw ZWxpbmVNb2RlKCRzZWxmLT57Y29ubn0pOworfQorCitzdWIgZXhpdFBpcGVsaW5lTW9kZQor eworCW15ICRzZWxmID0gc2hpZnQ7CisJcmV0dXJuIFBRZXhpdFBpcGVsaW5lTW9kZSgkc2Vs Zi0+e2Nvbm59KTsKK30KKworc3ViIHBpcGVsaW5lU3RhdHVzCit7CisJbXkgJHNlbGYgPSBz aGlmdDsKKwlyZXR1cm4gUFFwaXBlbGluZVN0YXR1cygkc2VsZi0+e2Nvbm59KTsKK30KKwor c3ViIHBpcGVsaW5lU3luYworeworCW15ICRzZWxmID0gc2hpZnQ7CisJcmV0dXJuIFBRcGlw ZWxpbmVTeW5jKCRzZWxmLT57Y29ubn0pOworfQorCisKK3N1YiBkb19waXBlbGluZQorewor CW15ICRzZWxmID0gc2hpZnQ7CisJbXkgJHN0YXRlbWVudCA9IHNoaWZ0OworCW15IEBhcmdz ID0gQF87CisJbXkgJG5hcmdzID0gc2NhbGFyKEBhcmdzKTsKKwlteSAkcmVzID0gUFFzZW5k UXVlcnlQYXJhbXMoJHNlbGYtPntjb25ufSwgJHN0YXRlbWVudCwgJG5hcmdzLCB1bmRlZiwg XEBhcmdzLCB1bmRlZiAsIHVuZGVmLCAwKTsKKwlyZXR1cm4gJHJlczsKK30KKworPXBvZAor Cis9aXRlbSAkc2Vzc2lvbi0+Z2V0X25vdGlmaWNhdGlvbigpCisKK0NoZWNrIGZvciBhIHBl bmRpbmcgbm90aWZpY2F0aW9uIGFuZCByZXR1cm4gaXQgYXMgYSBoYXNocmVmIHdpdGgga2V5 cworQzxjaGFubmVsPiwgQzxwaWQ+LCBhbmQgQzxwYXlsb2FkPi4gUmV0dXJucyB1bmRlZiBp ZiBubyBub3RpZmljYXRpb24gaXMKK2F2YWlsYWJsZS4KKworQXV0b21hdGljYWxseSBjb25z dW1lcyBhbnkgcGVuZGluZyBpbnB1dCBiZWZvcmUgY2hlY2tpbmcgZm9yIG5vdGlmaWNhdGlv bnMuCisKKz1jdXQKKworc3ViIGdldF9ub3RpZmljYXRpb24KK3sKKwlteSAkc2VsZiA9IHNo aWZ0OworCW15ICRjb25uID0gJHNlbGYtPntjb25ufTsKKworCSMgQ29uc3VtZSBhbnkgcGVu ZGluZyBpbnB1dAorCVBRY29uc3VtZUlucHV0KCRjb25uKTsKKworCW15ICRub3RpZnkgPSBQ UW5vdGlmaWVzKCRjb25uKTsKKwlyZXR1cm4gdW5kZWYgdW5sZXNzICRub3RpZnk7CisKKwlt eSAkcmVzdWx0ID0geworCQljaGFubmVsID0+IFBRbm90aWZ5X2NoYW5uZWwoJG5vdGlmeSks CisJCXBpZCAgICAgPT4gUFFub3RpZnlfYmVfcGlkKCRub3RpZnkpLAorCQlwYXlsb2FkID0+ IFBRbm90aWZ5X3BheWxvYWQoJG5vdGlmeSksCisJfTsKKworCVBRbm90aWZ5X2ZyZWUoJG5v dGlmeSk7CisKKwlyZXR1cm4gJHJlc3VsdDsKK30KKworPXBvZAorCis9aXRlbSAkc2Vzc2lv bi0+Z2V0X2FsbF9ub3RpZmljYXRpb25zKCkKKworQ29uc3VtZSBpbnB1dCBhbmQgcmV0dXJu IGFsbCBwZW5kaW5nIG5vdGlmaWNhdGlvbnMgYXMgYW4gYXJyYXlyZWYgb2YgaGFzaHJlZnMu CitFYWNoIGhhc2hyZWYgaGFzIGtleXMgQzxjaGFubmVsPiwgQzxwaWQ+LCBhbmQgQzxwYXls b2FkPi4KKworPWN1dAorCitzdWIgZ2V0X2FsbF9ub3RpZmljYXRpb25zCit7CisJbXkgJHNl bGYgPSBzaGlmdDsKKwlteSBAbm90aWZpY2F0aW9uczsKKworCXdoaWxlIChteSAkbm90aWZ5 ID0gJHNlbGYtPmdldF9ub3RpZmljYXRpb24oKSkKKwl7CisJCXB1c2ggQG5vdGlmaWNhdGlv bnMsICRub3RpZnk7CisJfQorCisJcmV0dXJuIFxAbm90aWZpY2F0aW9uczsKK30KKworPXBv ZAorCis9YmFjaworCis9Y3V0CisKKworMTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Blcmwv bWVzb24uYnVpbGQgYi9zcmMvdGVzdC9wZXJsL21lc29uLmJ1aWxkCmluZGV4IDBmZDM2Yzll NTcwLi4zN2Q4YWMyYTM2YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcGVybC9tZXNvbi5idWls ZAorKysgYi9zcmMvdGVzdC9wZXJsL21lc29uLmJ1aWxkCkBAIC00LDYgKzQsMTAgQEAKIAog aW5zdGFsbF9kYXRhKAogICAnUG9zdGdyZVNRTC9WZXJzaW9uLnBtJywKKyAgJ1Bvc3RncmVT UUwvRmluZExpYi5wbScsCisgICdQb3N0Z3JlU1FML1BxRkZJLnBtJywKKyAgJ1Bvc3RncmVT UUwvUHFDb25zdGFudHMucG0nLAorICAnUG9zdGdyZVNRTC9QR1R5cGVzLnBtJywKICAgaW5z dGFsbF9kaXI6IGRpcl9wZ3hzIC8gJ3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTCcpCiAKIGlu c3RhbGxfZGF0YSgKQEAgLTE1LDQgKzE5LDUgQEAgaW5zdGFsbF9kYXRhKAogICAnUG9zdGdy ZVNRTC9UZXN0L0JhY2tncm91bmRQc3FsLnBtJywKICAgJ1Bvc3RncmVTUUwvVGVzdC9BZGp1 c3REdW1wLnBtJywKICAgJ1Bvc3RncmVTUUwvVGVzdC9BZGp1c3RVcGdyYWRlLnBtJywKKyAg J1Bvc3RncmVTUUwvVGVzdC9TZXNzaW9uLnBtJywKICAgaW5zdGFsbF9kaXI6IGRpcl9wZ3hz IC8gJ3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0JykKLS0gCjIuNDMuMAoK --------------qPe8Eb3h7kDV46foKbqhjv9u Content-Type: text/x-patch; charset=UTF-8; name="v14-0002-Use-PostgreSQL-Test-Session-within-the-TAP-test-.patch" Content-Disposition: attachment; filename*0="v14-0002-Use-PostgreSQL-Test-Session-within-the-TAP-test-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA4MWY0NzljNGRhYWU1ZDVjYzUwYTA1YWNkZjY2YWI0ZmJlYjhlY2RmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogV2VkLCAzIEp1biAyMDI2IDA5OjUwOjE3IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTQgMi8zXSBVc2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbiB3aXRoaW4gdGhl IFRBUCB0ZXN0CiBmcmFtZXdvcmsKCk1ha2UgdGhlIHRlc3QgZnJhbWV3b3JrIGl0c2VsZiBi ZW5lZml0IGZyb20gaW4tcHJvY2VzcyBsaWJwcSBhY2Nlc3M6CgogICogUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3Rlcjo6c2FmZV9wc3FsKCkgcnVucyBhIHNpbmdsZSwgcGFyYW1ldGVybGVz cwogICAgc3RhdGVtZW50IHRocm91Z2ggYSBTZXNzaW9uIGluc3RlYWQgb2Ygc3Bhd25pbmcg cHNxbCwgYW5kIHJlcG9ydHMgdGhlCiAgICBsaWJwcSBjb25uZWN0aW9uIGVycm9yIGlmIHRo ZSBzZXNzaW9uIGNhbm5vdCBiZSBlc3RhYmxpc2hlZC4gIEl0IGZhbGxzCiAgICBiYWNrIHRv IHBzcWwgZm9yIG11bHRpLXN0YXRlbWVudCBvciBwYXJhbWV0ZXJpemVkIGNhbGxzLCBhbmQg YWxzbyB3aGVuCiAgICBQR09QVElPTlMgaXMgc2V0OiBQR09QVElPTlMgaW5qZWN0cyBjb25u ZWN0aW9uLXRpbWUgR1VDcyB0aGUgY2FsbGVyCiAgICByZWxpZXMgb24sIGFuZCBhbiBGRkkt bG9hZGVkIGxpYnBxIGRvZXMgbm90IHJlbGlhYmx5IHNlZSBhIFBHT1BUSU9OUwogICAgc2V0 IGluICVFTlYgYXQgcnVuIHRpbWUgb24gV2luZG93cyAoc2VwYXJhdGUgQyBydW50aW1lKSwg d2hlcmVhcyBhCiAgICBzcGF3bmVkIHBzcWwgaW5oZXJpdHMgaXQuCiAgKiBwb2xsX3F1ZXJ5 X3VudGlsKCkgcG9sbHMgdGhyb3VnaCBhIFNlc3Npb24uCiAgKiBhZGQgcG9sbF91bnRpbF9j b25uZWN0aW9uKCkgdG8gd2FpdCBmb3IgdGhlIHNlcnZlciB0byBhY2NlcHQKICAgIGNvbm5l Y3Rpb25zLgoKQWxzbyBoYXJkZW4gUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHMgYWdhaW5zdCBl cnJvcnMgcmFpc2VkIGR1cmluZyBnbG9iYWwKZGVzdHJ1Y3Rpb24uICBTdWNoIGVycm9ycyBo YXBwZW4gYWZ0ZXIgdGhlIHRlc3QgYm9keSBoYXMgZmluaXNoZWQgKGZvcgpleGFtcGxlIEZG STo6UGxhdHlwdXMgYmluZGluZ3Mgb3IgY2FsbGJhY2sgY2xvc3VyZXMgYmVpbmcgZnJlZWQg aW4gYW4KdW5wcmVkaWN0YWJsZSBvcmRlciBhcyB0aGUgcHJvY2VzcyBleGl0cyk7IHJlcG9y dGluZyB0aGVtIGJ5IGNhbGxpbmcKZG9uZV90ZXN0aW5nKCkgYSBzZWNvbmQgdGltZSB3b3Vs ZCBzcHVyaW91c2x5IGZhaWwgYW4gb3RoZXJ3aXNlLXBhc3NpbmcKdGVzdCwgc28gdGhleSBh cmUgbm93IGxvZ2dlZCBhbmQgaWdub3JlZC4KLS0tCiBzcmMvdGVzdC9wZXJsL1Bvc3RncmVT UUwvVGVzdC9DbHVzdGVyLnBtIHwgMTI1ICsrKysrKysrKysrKysrKystLS0tLS0tCiBzcmMv dGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9VdGlscy5wbSAgIHwgIDEzICsrKwogMiBmaWxl cyBjaGFuZ2VkLCAxMDIgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbSBiL3NyYy90 ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KaW5kZXggNTI5ZjQ5ZWZlZTEu LjkzMDA1ZGI0ZjAzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVz dC9DbHVzdGVyLnBtCisrKyBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0 ZXIucG0KQEAgLTExMiw2ICsxMTIsNyBAQCB1c2UgU29ja2V0OwogdXNlIFRlc3Q6Ok1vcmU7 CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHMgICAgICAgICAgKCk7CiB1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6QmFja2dyb3VuZFBzcWwgKCk7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 U2Vzc2lvbjsKIHVzZSBUZXh0OjpQYXJzZVdvcmRzICAgICAgICAgICAgICAgICBxdyhzaGVs bHdvcmRzKTsKIHVzZSBUaW1lOjpIaVJlcyAgICAgICAgICAgICAgICAgICAgICBxdyh1c2xl ZXApOwogdXNlIFNjYWxhcjo6VXRpbCAgICAgICAgICAgICAgICAgICAgIHF3KGJsZXNzZWQp OwpAQCAtMjA3MCwyMCArMjA3MSw1MSBAQCBzdWIgc2FmZV9wc3FsCiAKIAlteSAoJHN0ZG91 dCwgJHN0ZGVycik7CiAKLQlteSAkcmV0ID0gJHNlbGYtPnBzcWwoCi0JCSRkYm5hbWUsICRz cWwsCi0JCSVwYXJhbXMsCi0JCXN0ZG91dCA9PiBcJHN0ZG91dCwKLQkJc3RkZXJyID0+IFwk c3RkZXJyLAotCQlvbl9lcnJvcl9kaWUgPT4gMSwKLQkJb25fZXJyb3Jfc3RvcCA9PiAxKTsK LQotCSMgcHNxbCBjYW4gZW1pdCBzdGRlcnIgZnJvbSBOT1RJQ0VzIGV0YwotCWlmICgkc3Rk ZXJyIG5lICIiKQorCSMgRm9yIG5vdyBvbmx5IHVzZSBhIFNlc3Npb24gb2JqZWN0IGZvciBz aW5nbGUgc3RhdGVtZW50IHNxbCB3aXRob3V0IGFueQorCSMgc3BlY2lhbCBwYXJhbXMuICBB bHNvIGZhbGwgYmFjayB0byBwc3FsIHdoZW4gUEdPUFRJT05TIGlzIHNldDogaXQgaW5qZWN0 cworCSMgY29ubmVjdGlvbi10aW1lIEdVQ3MgdGhhdCB0aGUgY2FsbGVyIGlzIHJlbHlpbmcg b24gKGUuZy4gY29tcHV0ZV9xdWVyeV9pZAorCSMgZm9yIGF1dG9fZXhwbGFpbiksIGFuZCBh IGxpYnBxIGxvYWRlZCB2aWEgRkZJIGRvZXMgbm90IHJlbGlhYmx5IHNlZSBhCisJIyBQR09Q VElPTlMgdGhhdCB3YXMgc2V0IGluICVFTlYgYXQgcnVuIHRpbWUgb24gV2luZG93cyAoc2Vw YXJhdGUgQyBydW50aW1lCisJIyBmcm9tIHBlcmwpLCB3aGVyZWFzIGEgc3Bhd25lZCBwc3Fs IGluaGVyaXRzIGl0LgorCWlmICggICAkc3FsID1+IC9cdy8KKwkJJiYgJHNxbCAhfiAvXFxi aW5kfDsuKlx3L3MKKwkJJiYgIXNjYWxhcihrZXlzKCVwYXJhbXMpKQorCQkmJiAhJEVOVntQ R09QVElPTlN9KQogCXsKLQkJcHJpbnQgIiMjIyMgQmVnaW4gc3RhbmRhcmQgZXJyb3JcbiI7 Ci0JCXByaW50ICRzdGRlcnI7Ci0JCXByaW50ICJcbiMjIyMgRW5kIHN0YW5kYXJkIGVycm9y XG4iOworCisJCW15ICRzZXNzaW9uID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3 KG5vZGU9PiAkc2VsZiwKKwkJCQkJCQkJCQkJCQkgZGJuYW1lID0+ICRkYm5hbWUpOworCQlk ZWZpbmVkICRzZXNzaW9uCisJCSAgb3IgZGllICJjb25uZWN0aW9uIGZhaWx1cmU6ICIKKwkJ ICAuICgkUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjo6Y29ubmVjdF9lcnJvciAvLyAnJykK KwkJICAuICJ3aGlsZSBydW5uaW5nICckc3FsJyI7CisJCW15ICRyZXMgPSAkc2Vzc2lvbi0+ cXVlcnkoJHNxbCk7CisJCW15ICRzdGF0dXMgPSAkcmVzLT57c3RhdHVzfTsKKwkJJHN0ZG91 dCA9ICRyZXMtPntwc3Fsb3V0fSAvLyAiIjsKKwkJJHN0ZGVyciA9ICRyZXMtPntlcnJvcl9t ZXNzYWdlfSAvLyAiIjsKKwkJZGllICJlcnJvcjogc3RhdHVzID0gJHN0YXR1cyBzdGRlcnI6 ICckc3RkZXJyJ1xud2hpbGUgcnVubmluZyAnJHNxbCciCisJCSAgaWYgKCRzdGF0dXMgIT0g MSAmJiAkc3RhdHVzICE9IDIpOyAjIENPTU1BTkRfT0sgb3IgQ09NTUFORF9UVVBMRVMKKwor CX0KKwllbHNlCisJeworCQkjIGRpYWcgInNhZmVfcHNxbCBjYWxsIGhhcyBwYXJhbXMgb3Ig bXVsdGlwbGUgc3RhdGVtZW50cyI7CisKKwkJbXkgJHJldCA9ICRzZWxmLT5wc3FsKAorCQkJ JGRibmFtZSwgJHNxbCwKKwkJCSVwYXJhbXMsCisJCQlzdGRvdXQgPT4gXCRzdGRvdXQsCisJ CQlzdGRlcnIgPT4gXCRzdGRlcnIsCisJCQlvbl9lcnJvcl9kaWUgPT4gMSwKKwkJCW9uX2Vy cm9yX3N0b3AgPT4gMSk7CisKKwkJIyBwc3FsIGNhbiBlbWl0IHN0ZGVyciBmcm9tIE5PVElD RXMgZXRjCisJCWlmICgkc3RkZXJyIG5lICIiKQorCQl7CisJCQlwcmludCAiIyMjIyBCZWdp biBzdGFuZGFyZCBlcnJvclxuIjsKKwkJCXByaW50ICRzdGRlcnI7CisJCQlwcmludCAiXG4j IyMjIEVuZCBzdGFuZGFyZCBlcnJvclxuIjsKKwkJfQogCX0KIAogCXJldHVybiAkc3Rkb3V0 OwpAQCAtMjE4Nyw2ICsyMjE5LDkgQEAgc3ViIHBzcWwKIAogCWxvY2FsICVFTlYgPSAkc2Vs Zi0+X2dldF9lbnYoKTsKIAorCSMgdW5jb21tZW50IHRvIGdldCBhIGNvdW50IG9mIGNhbGxz IHRvIHBzcWwKKwkjIG5vdGUoImNvdW50aW5nIHBzcWwiKTsKKwogCW15ICRzdGRvdXQgPSAk cGFyYW1ze3N0ZG91dH07CiAJbXkgJHN0ZGVyciA9ICRwYXJhbXN7c3RkZXJyfTsKIAlteSAk cmVwbGljYXRpb24gPSAkcGFyYW1ze3JlcGxpY2F0aW9ufTsKQEAgLTI3NjAsMzMgKzI3OTUs MjAgQEAgc3ViIHBvbGxfcXVlcnlfdW50aWwKIHsKIAlteSAoJHNlbGYsICRkYm5hbWUsICRx dWVyeSwgJGV4cGVjdGVkKSA9IEBfOwogCi0JbG9jYWwgJUVOViA9ICRzZWxmLT5fZ2V0X2Vu digpOwotCiAJJGV4cGVjdGVkID0gJ3QnIHVubGVzcyBkZWZpbmVkKCRleHBlY3RlZCk7ICAg ICMgZGVmYXVsdCB2YWx1ZQogCi0JbXkgJGNtZCA9IFsKLQkJJHNlbGYtPmluc3RhbGxlZF9j b21tYW5kKCdwc3FsJyksICctLW5vLXBzcWxyYycsCi0JCSctLW5vLWFsaWduJywgJy0tdHVw bGVzLW9ubHknLAotCQknLS1kYm5hbWUnID0+ICRzZWxmLT5jb25uc3RyKCRkYm5hbWUpCi0J XTsKLQlteSAoJHN0ZG91dCwgJHN0ZGVycik7CisJbXkgJHNlc3Npb24gPSBQb3N0Z3JlU1FM OjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkc2VsZiwKKwkJCQkJCQkJCQkJCSBkYm5h bWUgPT4gJGRibmFtZSk7CiAJbXkgJG1heF9hdHRlbXB0cyA9IDEwICogJFBvc3RncmVTUUw6 OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQ7CiAJbXkgJGF0dGVtcHRzID0gMDsKIAor CW15ICRxdWVyeV92YWx1ZTsKKwogCXdoaWxlICgkYXR0ZW1wdHMgPCAkbWF4X2F0dGVtcHRz KQogCXsKLQkJbXkgJHJlc3VsdCA9IElQQzo6UnVuOjpydW4gJGNtZCwKLQkJICAnPCcgPT4g XCRxdWVyeSwKLQkJICAnPicgPT4gXCRzdGRvdXQsCi0JCSAgJzI+JyA9PiBcJHN0ZGVycjsK LQotCQljaG9tcCgkc3Rkb3V0KTsKLQkJY2hvbXAoJHN0ZGVycik7Ci0KLQkJaWYgKCRzdGRv dXQgZXEgJGV4cGVjdGVkICYmICRzdGRlcnIgZXEgJycpCi0JCXsKLQkJCXJldHVybiAxOwot CQl9CisJCW15ICRyZXN1bHQgPSAkc2Vzc2lvbi0+cXVlcnkoJHF1ZXJ5KTsKKwkJJHF1ZXJ5 X3ZhbHVlID0gKCRyZXN1bHQtPntwc3Fsb3V0fSAvLyAiIik7CisJCXJldHVybiAxIGlmICAk cXVlcnlfdmFsdWUgZXEgJGV4cGVjdGVkOwogCiAJCSMgV2FpdCAwLjEgc2Vjb25kIGJlZm9y ZSByZXRyeWluZy4KIAkJdXNsZWVwKDEwMF8wMDApOwpAQCAtMjgwMSw5ICsyODIzLDQwIEBA ICRxdWVyeQogZXhwZWN0aW5nIHRoaXMgb3V0cHV0OgogJGV4cGVjdGVkCiBsYXN0IGFjdHVh bCBxdWVyeSBvdXRwdXQ6Ci0kc3Rkb3V0Ci13aXRoIHN0ZGVycjoKLSRzdGRlcnIpOworJHF1 ZXJ5X3ZhbHVlCispOworCXJldHVybiAwOworfQorCis9cG9kCisKKz1pdGVtICRub2RlLT5w b2xsX3VudGlsX2Nvbm5lY3Rpb24oJGRibmFtZSkKKworVHJ5IHRvIGNvbm5lY3QgcmVwZWF0 ZWRseSwgdW50aWwgaXQgd2Ugc3VjY2VlZC4KK1RpbWVzIG91dCBhZnRlciAkUG9zdGdyZVNR TDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCBzZWNvbmRzLgorUmV0dXJucyAxIGlm IHN1Y2Nlc3NmdWwsIDAgaWYgdGltZWQgb3V0LgorCis9Y3V0CisKK3N1YiBwb2xsX3VudGls X2Nvbm5lY3Rpb24KK3sKKwlteSAoJHNlbGYsICRkYm5hbWUpID0gQF87CisKKwlteSAkbWF4 X2F0dGVtcHRzID0gMTAgKiAkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVm YXVsdDsKKwlteSAkYXR0ZW1wdHMgPSAwOworCisJd2hpbGUgKCRhdHRlbXB0cyA8ICRtYXhf YXR0ZW1wdHMpCisJeworCQlteSAkc2Vzc2lvbiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Np b24tPm5ldyhub2RlID0+ICRzZWxmLAorCQkJCQkJCQkJCQkJCSBkYm5hbWUgPT4gJGRibmFt ZSk7CisJCXJldHVybiAxIGlmICRzZXNzaW9uOworCisJCSMgV2FpdCAwLjEgc2Vjb25kIGJl Zm9yZSByZXRyeWluZy4KKwkJdXNsZWVwKDEwMF8wMDApOworCisJCSRhdHRlbXB0cysrOwor CX0KKwogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bvc3Rn cmVTUUwvVGVzdC9VdGlscy5wbSBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L1V0 aWxzLnBtCmluZGV4IGQzZTZhYmY3YTY4Li5jMDkxY2UwMzI2ZCAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvVXRpbHMucG0KKysrIGIvc3JjL3Rlc3QvcGVy bC9Qb3N0Z3JlU1FML1Rlc3QvVXRpbHMucG0KQEAgLTI2Miw2ICsyNjIsMTkgQEAgSU5JVAog CQkjIElnbm9yZSBkaWVzIGluc2lkZSBldmFscwogCQlyZXR1cm4gaWYgJF5TID09IDE7CiAK KwkJIyBEaWVzIGR1cmluZyBnbG9iYWwgZGVzdHJ1Y3Rpb24gaGFwcGVuIGFmdGVyIHRoZSB0 ZXN0IGJvZHkgaGFzCisJCSMgZmluaXNoZWQgKGRvbmVfdGVzdGluZygpIGhhcyBhbHJlYWR5 IHJ1bikuICBUaGV5IGFyZSB0eXBpY2FsbHkKKwkJIyBoYXJtbGVzcyB0ZWFyZG93bi1vcmRl cmluZyBhcnRpZmFjdHMgLS0gZm9yIGV4YW1wbGUgRkZJOjpQbGF0eXB1cworCQkjIGJpbmRp bmdzIG9yIGNhbGxiYWNrIGNsb3N1cmVzIGJlaW5nIGZyZWVkIGluIGFuIHVucHJlZGljdGFi bGUgb3JkZXIKKwkJIyB3aGlsZSB0aGUgcHJvY2VzcyBleGl0cy4gIFJlcG9ydGluZyB0aGVt IGJ5IGNhbGxpbmcgZG9uZV90ZXN0aW5nKCkKKwkJIyBhZ2FpbiB3b3VsZCBzcHVyaW91c2x5 IGZhaWwgYW4gb3RoZXJ3aXNlLXBhc3NpbmcgdGVzdCwgc28ganVzdCBsb2cKKwkJIyB0aGVt IGFuZCByZXR1cm4uCisJCWlmICgke15HTE9CQUxfUEhBU0V9IGVxICdERVNUUlVDVCcpCisJ CXsKKwkJCWRpYWcoImRpZSBkdXJpbmcgZ2xvYmFsIGRlc3RydWN0aW9uIChpZ25vcmVkKTog JF9bMF0iKTsKKwkJCXJldHVybjsKKwkJfQorCiAJCWRpYWcoImRpZTogJF9bMF0iKTsKIAkJ IyBBbHNvIGNhbGwgZG9uZV90ZXN0aW5nKCkgdG8gYXZvaWQgdGhlIGNvbmZ1c2luZyAibm8g cGxhbiB3YXMgZGVjbGFyZWQiCiAJCSMgbWVzc2FnZSBpbiBUQVAgb3V0cHV0IHdoZW4gYSB0 ZXN0IGRpZXMuCi0tIAoyLjQzLjAKCg== --------------qPe8Eb3h7kDV46foKbqhjv9u Content-Type: text/x-patch; charset=UTF-8; name="v14-0003-Convert-TAP-tests-to-PostgreSQL-Test-Session.patch" Content-Disposition: attachment; filename*0="v14-0003-Convert-TAP-tests-to-PostgreSQL-Test-Session.patch" Content-Transfer-Encoding: base64 RnJvbSBkZDUyNzY2M2FkMGIzOTFjZDI5ODQ3MTgwNGYxN2JmODMwNTk0M2E0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogV2VkLCAzIEp1biAyMDI2IDA5OjUwOjE3IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTQgMy8zXSBDb252ZXJ0IFRBUCB0ZXN0cyB0byBQb3N0Z3JlU1FMOjpUZXN0OjpT ZXNzaW9uCgpDb252ZXJ0IHRlc3RzIHRoYXQgZHJvdmUgYSBsb25nLWxpdmVkIGJhY2tncm91 bmQgcHNxbCBwcm9jZXNzIChvcgpyZXBlYXRlZGx5IHNwYXduZWQgcHNxbCkgdG8gdXNlIHRo ZSBsaWJwcSBTZXNzaW9uIG9iamVjdCBpbnN0ZWFkLiAgVGhpcwpjb3ZlcnMgY29uY3VycmVu dC1zZXNzaW9uIGFuZCBhc3luY2hyb25vdXMtcXVlcnkgdGVzdHMgYWNyb3NzIGNvbnRyaWIs CnNyYy9iaW4gYW5kIHNyYy90ZXN0OiBhbWNoZWNrLCBibG9vbSwgcGdfdmlzaWJpbGl0eSwg dGVzdF9kZWNvZGluZywKcGdfYW1jaGVjaywgcGdfdXBncmFkZSwgYXV0aGVudGljYXRpb24s IG9hdXRoX3ZhbGlkYXRvciwgdGVzdF9haW8sCnRlc3RfY2hlY2tzdW1zLCB0ZXN0X21pc2Ms IHRlc3Rfc2xydSwgeGlkX3dyYXBhcm91bmQsIHBvc3RtYXN0ZXIsCnJlY292ZXJ5IGFuZCBz dWJzY3JpcHRpb24uCgpXaGVyZSBhIHRlc3QgbXVzdCBsb2FkIGxpYnBxIGZyb20gYSBkaWZm ZXJlbnQgaW5zdGFsbGF0aW9uIHRoYW4gdGhlIG9uZQppdCBjb25uZWN0cyB0byAocGdfdXBn cmFkZSdzIGNyb3NzLXZlcnNpb24gd29ya2xvYWQpLCBpdCBwYXNzZXMgdGhhdApub2RlIHNv IFNlc3Npb24gbG9jYXRlcyB0aGUgbGlicmFyeSBjb3JyZWN0bHkgb24gYWxsIHBsYXRmb3Jt cy4KLS0tCiBjb250cmliL2FtY2hlY2svdC8wMDFfdmVyaWZ5X2hlYXBhbS5wbCAgICAgICAg fCAgMzYgKy0KIGNvbnRyaWIvYW1jaGVjay90LzAwMl9jaWMucGwgICAgICAgICAgICAgICAg ICB8ICAgNyArLQogY29udHJpYi9hbWNoZWNrL3QvMDAzX2NpY18ycGMucGwgICAgICAgICAg ICAgIHwgIDY0ICsrLQogY29udHJpYi9ibG9vbS90LzAwMV93YWwucGwgICAgICAgICAgICAg ICAgICAgIHwgIDQ0ICstCiAuLi4vdC8wMDFfY29uY3VycmVudF90cmFuc2FjdGlvbi5wbCAg ICAgICAgICAgfCAgIDkgKy0KIGNvbnRyaWIvdGVzdF9kZWNvZGluZy90LzAwMV9yZXBsX3N0 YXRzLnBsICAgICB8ICAxMSArLQogc3JjL2Jpbi9wZ19hbWNoZWNrL3QvMDA0X3ZlcmlmeV9o ZWFwYW0ucGwgICAgIHwgIDk3ICsrKy0tCiAuLi4vcGdfdXBncmFkZS90LzAwN19tdWx0aXhh Y3RfY29udmVyc2lvbi5wbCAgfCAgMzcgKy0KIHNyYy90ZXN0L2F1dGhlbnRpY2F0aW9uL3Qv MDAxX3Bhc3N3b3JkLnBsICAgICB8ICAzNSArLQogc3JjL3Rlc3QvYXV0aGVudGljYXRpb24v dC8wMDdfcHJlX2F1dGgucGwgICAgIHwgIDM0ICstCiAuLi4vbW9kdWxlcy9vYXV0aF92YWxp ZGF0b3IvdC8wMDFfc2VydmVyLnBsICAgfCAgMjkgKy0KIHNyYy90ZXN0L21vZHVsZXMvdGVz dF9haW8vdC8wMDFfYWlvLnBsICAgICAgICB8IDE2NSArKysrLS0tCiAuLi4vbW9kdWxlcy90 ZXN0X2Fpby90LzAwNF9yZWFkX3N0cmVhbS5wbCAgICAgfCAgNzUgKystLQogLi4uL21vZHVs ZXMvdGVzdF9jaGVja3N1bXMvdC8wMDJfcmVzdGFydHMucGwgIHwgICA3ICstCiAuLi4vdGVz dF9jaGVja3N1bXMvdC8wMDNfc3RhbmRieV9yZXN0YXJ0cy5wbCAgfCAgMTMgKy0KIC4uLi9t b2R1bGVzL3Rlc3RfY2hlY2tzdW1zL3QvMDA0X29mZmxpbmUucGwgICB8ICAgNyArLQogc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMDVfdGltZW91dHMucGwgIHwgIDQ1ICstCiAu Li4vbW9kdWxlcy90ZXN0X21pc2MvdC8wMDdfY2F0Y2FjaGVfaW52YWwucGwgfCAgMjQgKy0K IC4uLi90LzAxMF9pbmRleF9jb25jdXJyZW50bHlfdXBzZXJ0LnBsICAgICAgICB8IDQwNiAr KysrKystLS0tLS0tLS0tLS0KIC4uLi9tb2R1bGVzL3Rlc3RfbWlzYy90LzAxMV9sb2NrX3N0 YXRzLnBsICAgICB8ICA5NiArKy0tLQogLi4uL3Rlc3RfbWlzYy90LzAxM190ZW1wX29ial9t dWx0aXNlc3Npb24ucGwgIHwgIDI2ICstCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2xydS90 LzAwMV9tdWx0aXhhY3QucGwgfCAgMTcgKy0KIC4uLi94aWRfd3JhcGFyb3VuZC90LzAwMV9l bWVyZ2VuY3lfdmFjdXVtLnBsICB8ICAxNiArLQogLi4uL21vZHVsZXMveGlkX3dyYXBhcm91 bmQvdC8wMDJfbGltaXRzLnBsICAgIHwgIDIxICstCiAuLi4veGlkX3dyYXBhcm91bmQvdC8w MDRfbm90aWZ5X2ZyZWV6ZS5wbCAgICAgfCAgMjcgKy0KIC4uLi9wb3N0bWFzdGVyL3QvMDAy X2Nvbm5lY3Rpb25fbGltaXRzLnBsICAgICB8ICAyNSArLQogc3JjL3Rlc3QvcmVjb3Zlcnkv dC8wMDlfdHdvcGhhc2UucGwgICAgICAgICAgIHwgIDE2ICstCiBzcmMvdGVzdC9yZWNvdmVy eS90LzAxM19jcmFzaF9yZXN0YXJ0LnBsICAgICAgfCAgIDQgKy0KIHNyYy90ZXN0L3JlY292 ZXJ5L3QvMDIyX2NyYXNoX3RlbXBfZmlsZXMucGwgICB8ICAgNCArLQogc3JjL3Rlc3QvcmVj b3ZlcnkvdC8wMzFfcmVjb3ZlcnlfY29uZmxpY3QucGwgIHwgIDM5ICstCiBzcmMvdGVzdC9y ZWNvdmVyeS90LzAzN19pbnZhbGlkX2RhdGFiYXNlLnBsICAgfCAgNDUgKy0KIC4uLi90LzA0 MF9zdGFuZGJ5X2ZhaWxvdmVyX3Nsb3RzX3N5bmMucGwgICAgICB8ICAyNiArLQogLi4uL3Jl Y292ZXJ5L3QvMDQxX2NoZWNrcG9pbnRfYXRfcHJvbW90ZS5wbCAgIHwgIDExICstCiBzcmMv dGVzdC9yZWNvdmVyeS90LzA0Ml9sb3dfbGV2ZWxfYmFja3VwLnBsICAgfCAgMTIgKy0KIC4u Li9yZWNvdmVyeS90LzA0Nl9jaGVja3BvaW50X2xvZ2ljYWxfc2xvdC5wbCB8ICA2NiArKy0K IC4uLi90LzA0N19jaGVja3BvaW50X3BoeXNpY2FsX3Nsb3QucGwgICAgICAgICB8ICAxOCAr LQogLi4uL3JlY292ZXJ5L3QvMDQ4X3ZhY3V1bV9ob3Jpem9uX2Zsb29yLnBsICAgIHwgIDQw ICstCiBzcmMvdGVzdC9yZWNvdmVyeS90LzA0OV93YWl0X2Zvcl9sc24ucGwgICAgICAgfCAx NTYgKysrKy0tLQogLi4uL3JlY292ZXJ5L3QvMDUwX3JlZG9fc2VnbWVudF9taXNzaW5nLnBs ICAgIHwgIDE0ICstCiAuLi4vcmVjb3ZlcnkvdC8wNTFfZWZmZWN0aXZlX3dhbF9sZXZlbC5w bCAgICAgfCAgNDMgKy0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwg ICAgICAgICB8ICAzNSArLQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM1X2NvbmZsaWN0 cy5wbCAgICAgIHwgIDIzICstCiAuLi4vdC8wMzhfd2Fsc25kX3NodXRkb3duX3RpbWVvdXQu cGwgICAgICAgICAgfCAgMTUgKy0KIDQzIGZpbGVzIGNoYW5nZWQsIDg4NCBpbnNlcnRpb25z KCspLCAxMDU2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay90 LzAwMV92ZXJpZnlfaGVhcGFtLnBsIGIvY29udHJpYi9hbWNoZWNrL3QvMDAxX3ZlcmlmeV9o ZWFwYW0ucGwKaW5kZXggZTNmZWUxOWFlNWQuLjllYTcyMTc5ZmNkIDEwMDY0NAotLS0gYS9j b250cmliL2FtY2hlY2svdC8wMDFfdmVyaWZ5X2hlYXBhbS5wbAorKysgYi9jb250cmliL2Ft Y2hlY2svdC8wMDFfdmVyaWZ5X2hlYXBhbS5wbApAQCAtNSw2ICs1LDcgQEAgdXNlIHN0cmlj dDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIAogdXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpVdGlsczsKIAogdXNlIFRlc3Q6Ok1vcmU7CkBAIC0xOCw3ICsxOSw5 IEBAICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCd0ZXN0Jyk7CiAk bm9kZS0+aW5pdChub19kYXRhX2NoZWNrc3VtcyA9PiAxKTsKICRub2RlLT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywgJ2F1dG92YWN1dW09b2ZmJyk7CiAkbm9kZS0+c3RhcnQ7 Ci0kbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoQ1JFQVRFIEVYVEVOU0lPTiBhbWNo ZWNrKSk7CitteSAkc2Vzc2lvbiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhu b2RlID0+ICRub2RlKTsKKworJHNlc3Npb24tPmRvKHEoQ1JFQVRFIEVYVEVOU0lPTiBhbWNo ZWNrKSk7CiAKICMKICMgQ2hlY2sgYSB0YWJsZSB3aXRoIGRhdGEgbG9hZGVkIGJ1dCBubyBj b3JydXB0aW9uLCBmcmVlemluZywgZXRjLgpAQCAtNDksNyArNTIsNyBAQCBkZXRlY3RzX2hl YXBfY29ycnVwdGlvbigKICMgQ2hlY2sgYSBjb3JydXB0IHRhYmxlIHdpdGggYWxsLWZyb3pl biBkYXRhCiAjCiBmcmVzaF90ZXN0X3RhYmxlKCd0ZXN0Jyk7Ci0kbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHEoVkFDVVVNIChGUkVFWkUsIERJU0FCTEVfUEFHRV9TS0lQUElORykg dGVzdCkpOworJHNlc3Npb24tPmRvKHEoVkFDVVVNIChGUkVFWkUsIERJU0FCTEVfUEFHRV9T S0lQUElORykgdGVzdCkpOwogZGV0ZWN0c19ub19jb3JydXB0aW9uKCJ2ZXJpZnlfaGVhcGFt KCd0ZXN0JykiLAogCSJhbGwtZnJvemVuIG5vdCBjb3JydXB0ZWQgdGFibGUiKTsKIGNvcnJ1 cHRfZmlyc3RfcGFnZSgndGVzdCcpOwpAQCAtODEsNyArODQsNyBAQCBzdWIgcmVsYXRpb25f ZmlsZXBhdGgKIAlteSAoJHJlbG5hbWUpID0gQF87CiAKIAlteSAkcGdkYXRhID0gJG5vZGUt PmRhdGFfZGlyOwotCW15ICRyZWwgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ bXkgJHJlbCA9ICRzZXNzaW9uLT5xdWVyeV9vbmV2YWwoCiAJCXFxKFNFTEVDVCBwZ19yZWxh dGlvbl9maWxlcGF0aCgnJHJlbG5hbWUnKSkpOwogCWRpZSAicGF0aCBub3QgZm91bmQgZm9y IHJlbGF0aW9uICRyZWxuYW1lIiB1bmxlc3MgZGVmaW5lZCAkcmVsOwogCXJldHVybiAiJHBn ZGF0YS8kcmVsIjsKQEAgLTkyLDggKzk1LDggQEAgc3ViIGZyZXNoX3Rlc3RfdGFibGUKIHsK IAlteSAoJHJlbG5hbWUpID0gQF87CiAKLQlyZXR1cm4gJG5vZGUtPnNhZmVfcHNxbCgKLQkJ J3Bvc3RncmVzJywgcXEoCisJcmV0dXJuICRzZXNzaW9uLT5kbygKKwkJcXEoCiAJCURST1Ag VEFCTEUgSUYgRVhJU1RTICRyZWxuYW1lIENBU0NBREU7CiAJCUNSRUFURSBUQUJMRSAkcmVs bmFtZSAoYSBpbnRlZ2VyLCBiIHRleHQpOwogCQlBTFRFUiBUQUJMRSAkcmVsbmFtZSBTRVQg KGF1dG92YWN1dW1fZW5hYmxlZD1mYWxzZSk7CkBAIC0xMTcsOCArMTIwLDggQEAgc3ViIGZy ZXNoX3Rlc3Rfc2VxdWVuY2UKIHsKIAlteSAoJHNlcW5hbWUpID0gQF87CiAKLQlyZXR1cm4g JG5vZGUtPnNhZmVfcHNxbCgKLQkJJ3Bvc3RncmVzJywgcXEoCisJcmV0dXJuICRzZXNzaW9u LT5kbygKKwkJcXEoCiAJCURST1AgU0VRVUVOQ0UgSUYgRVhJU1RTICRzZXFuYW1lIENBU0NB REU7CiAJCUNSRUFURSBTRVFVRU5DRSAkc2VxbmFtZQogCQkJSU5DUkVNRU5UIEJZIDEzCkBA IC0xMzQsOCArMTM3LDggQEAgc3ViIGFkdmFuY2VfdGVzdF9zZXF1ZW5jZQogewogCW15ICgk c2VxbmFtZSkgPSBAXzsKIAotCXJldHVybiAkbm9kZS0+c2FmZV9wc3FsKAotCQkncG9zdGdy ZXMnLCBxcSgKKwlyZXR1cm4gJHNlc3Npb24tPnF1ZXJ5X29uZXZhbCgKKwkJcXEoCiAJCVNF TEVDVCBuZXh0dmFsKCckc2VxbmFtZScpOwogCSkpOwogfQpAQCAtMTQ1LDEwICsxNDgsNyBA QCBzdWIgc2V0X3Rlc3Rfc2VxdWVuY2UKIHsKIAlteSAoJHNlcW5hbWUpID0gQF87CiAKLQly ZXR1cm4gJG5vZGUtPnNhZmVfcHNxbCgKLQkJJ3Bvc3RncmVzJywgcXEoCi0JCVNFTEVDVCBz ZXR2YWwoJyRzZXFuYW1lJywgMTAyKTsKLQkpKTsKKwlyZXR1cm4gJHNlc3Npb24tPnF1ZXJ5 X29uZXZhbChxcShTRUxFQ1Qgc2V0dmFsKCckc2VxbmFtZScsIDEwMikpKTsKIH0KIAogIyBD YWxsIFNRTCBmdW5jdGlvbnMgdG8gcmVzZXQgdGhlIHNlcXVlbmNlCkBAIC0xNTYsOCArMTU2 LDggQEAgc3ViIHJlc2V0X3Rlc3Rfc2VxdWVuY2UKIHsKIAlteSAoJHNlcW5hbWUpID0gQF87 CiAKLQlyZXR1cm4gJG5vZGUtPnNhZmVfcHNxbCgKLQkJJ3Bvc3RncmVzJywgcXEoCisJcmV0 dXJuICRzZXNzaW9uLT5kbygKKwkJcXEoCiAJCUFMVEVSIFNFUVVFTkNFICRzZXFuYW1lIFJF U1RBUlQgV0lUSCA1MQogCSkpOwogfQpAQCAtMTY5LDYgKzE2OSw3IEBAIHN1YiBjb3JydXB0 X2ZpcnN0X3BhZ2UKIAlteSAoJHJlbG5hbWUpID0gQF87CiAJbXkgJHJlbHBhdGggPSByZWxh dGlvbl9maWxlcGF0aCgkcmVsbmFtZSk7CiAKKwkkc2Vzc2lvbi0+Y2xvc2U7CiAJJG5vZGUt PnN0b3A7CiAKIAlteSAkZmg7CkBAIC0xOTEsNiArMTkyLDcgQEAgc3ViIGNvcnJ1cHRfZmly c3RfcGFnZQogCSAgb3IgQkFJTF9PVVQoImNsb3NlIGZhaWxlZDogJCEiKTsKIAogCSRub2Rl LT5zdGFydDsKKwkkc2Vzc2lvbi0+cmVjb25uZWN0OwogfQogCiBzdWIgZGV0ZWN0c19oZWFw X2NvcnJ1cHRpb24KQEAgLTIxNiw3ICsyMTgsNyBAQCBzdWIgZGV0ZWN0c19jb3JydXB0aW9u CiAKIAlteSAoJGZ1bmN0aW9uLCAkdGVzdG5hbWUsIEByZSkgPSBAXzsKIAotCW15ICRyZXN1 bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKFNFTEVDVCAqIEZST00gJGZ1 bmN0aW9uKSk7CisJbXkgJHJlc3VsdCA9ICRzZXNzaW9uLT5xdWVyeV90dXBsZXMocXEoU0VM RUNUICogRlJPTSAkZnVuY3Rpb24pKTsKIAlsaWtlKCRyZXN1bHQsICRfLCAkdGVzdG5hbWUp IGZvciAoQHJlKTsKIH0KIApAQCAtMjI2LDcgKzIyOCw3IEBAIHN1YiBkZXRlY3RzX25vX2Nv cnJ1cHRpb24KIAogCW15ICgkZnVuY3Rpb24sICR0ZXN0bmFtZSkgPSBAXzsKIAotCW15ICRy ZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKFNFTEVDVCAqIEZST00g JGZ1bmN0aW9uKSk7CisJbXkgJHJlc3VsdCA9ICRzZXNzaW9uLT5xdWVyeV90dXBsZXMocXEo U0VMRUNUICogRlJPTSAkZnVuY3Rpb24pKTsKIAlpcygkcmVzdWx0LCAnJywgJHRlc3RuYW1l KTsKIH0KIApkaWZmIC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL3QvMDAyX2NpYy5wbCBiL2Nv bnRyaWIvYW1jaGVjay90LzAwMl9jaWMucGwKaW5kZXggNjI5ZDAwYzFkMDUuLmYyYzdiYzg2 NTNmIDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svdC8wMDJfY2ljLnBsCisrKyBiL2Nv bnRyaWIvYW1jaGVjay90LzAwMl9jaWMucGwKQEAgLTYsNiArNiw3IEBAIHVzZSBzdHJpY3Q7 CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiAKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM7CiAKIHVzZSBUZXN0OjpNb3JlOwpAQCAtNzIsOCArNzMsOCBA QCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJcShJTlNFUlQgSU5UTyBxdWViZWMg U0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMikgcyhpKTspKTsKIAogIyBzdGFy dCBiYWNrZ3JvdW5kIHRyYW5zYWN0aW9uCi1teSAkaW5fcHJvZ3Jlc3NfaCA9ICRub2RlLT5i YWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7Ci0kaW5fcHJvZ3Jlc3NfaC0+cXVlcnlfc2Fm ZShxKEJFR0lOOyBTRUxFQ1QgcGdfY3VycmVudF94YWN0X2lkKCk7KSk7CitteSAkaW5fcHJv Z3Jlc3NfaCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2Rl KTsKKyRpbl9wcm9ncmVzc19oLT5kbyhxKEJFR0lOOyBTRUxFQ1QgcGdfY3VycmVudF94YWN0 X2lkKCk7KSk7CiAKICMgZGVsZXRlIG9uZSByb3cgZnJvbSB0YWJsZSwgd2hpbGUgYmFja2dy b3VuZCB0cmFuc2FjdGlvbiBpcyBpbiBwcm9ncmVzcwogJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxKERFTEVURSBGUk9NIHF1ZWJlYyBXSEVSRSBpID0gMTspKTsKQEAgLTg2LDcg Kzg3LDcgQEAgbXkgJHJlc3VsdCA9ICRub2RlLT5wc3FsKCdwb3N0Z3JlcycsCiAJcShTRUxF Q1QgYnRfaW5kZXhfcGFyZW50X2NoZWNrKCdvc2NhcicsIGhlYXBhbGxpbmRleGVkID0+IHRy dWUpKSk7CiBpcygkcmVzdWx0LCAnMCcsICdidF9pbmRleF9wYXJlbnRfY2hlY2sgZm9yIENJ QyBhZnRlciByZW1vdmVkIHJvdycpOwogCi0kaW5fcHJvZ3Jlc3NfaC0+cXVpdDsKKyRpbl9w cm9ncmVzc19oLT5jbG9zZTsKIAogJG5vZGUtPnN0b3A7CiBkb25lX3Rlc3RpbmcoKTsKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay90LzAwM19jaWNfMnBjLnBsIGIvY29udHJpYi9h bWNoZWNrL3QvMDAzX2NpY18ycGMucGwKaW5kZXggZjI4ZWVhYzE3ZWYuLmQzYTE2NDNiZjMz IDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svdC8wMDNfY2ljXzJwYy5wbAorKysgYi9j b250cmliL2FtY2hlY2svdC8wMDNfY2ljXzJwYy5wbApAQCAtNyw2ICs3LDcgQEAgdXNlIHdh cm5pbmdzIEZBVEFMID0+ICdhbGwnOwogCiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl cjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpTZXNzaW9uOwogCiB1c2UgVGVzdDo6TW9yZTsKIApAQCAtMzYsMjkgKzM3LDQyIEBAICRu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgVEFCTEUgdGJsKGkgaW50LCBq IGpzb25iKSkpOwogIyBzdGF0ZW1lbnRzLgogIwogCi1teSAkbWFpbl9oID0gJG5vZGUtPmJh Y2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKK215ICRtYWluX2ggPSBQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uLT5uZXcobm9kZT0+JG5vZGUpOwogCi0kbWFpbl9oLT5xdWVyeV9zYWZl KAorJG1haW5faC0+ZG9fYXN5bmMoCiAJcSgKIEJFR0lOOwogSU5TRVJUIElOVE8gdGJsIFZB TFVFUygwLCAnW1sxNCwyLDNdXScpOwogKSk7CiAKLW15ICRjaWNfaCA9ICRub2RlLT5iYWNr Z3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7CitteSAkY2ljX2ggPSBQb3N0Z3JlU1FMOjpUZXN0 OjpTZXNzaW9uLT5uZXcobm9kZT0+JG5vZGUpOwogCi0kY2ljX2gtPnF1ZXJ5X3VudGlsKAot CXFyL3N0YXJ0LywgcSgKLVxlY2hvIHN0YXJ0Ci1DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ IGlkeCBPTiB0YmwoaSk7Ci1DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGdpbmlkeCBPTiB0 YmwgVVNJTkcgZ2luKGopOworJGNpY19oLT5zZXRub25ibG9ja2luZygxKTsKKworJGNpY19o LT5lbnRlclBpcGVsaW5lTW9kZSgpOworCiskY2ljX2gtPmRvX3BpcGVsaW5lKAorCXEoCitD UkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiB0YmwoaSkKKykpOworCiskY2ljX2gt PnBpcGVsaW5lU3luYygpOworCiskY2ljX2gtPmRvX3BpcGVsaW5lKAorCXEoCitDUkVBVEUg SU5ERVggQ09OQ1VSUkVOVExZIGdpbmlkeCBPTiB0YmwgVVNJTkcgZ2luKGopCiApKTsKIAot JG1haW5faC0+cXVlcnlfc2FmZSgKKyRjaWNfaC0+cGlwZWxpbmVTeW5jKCk7CisKKyRtYWlu X2gtPndhaXRfZm9yX2NvbXBsZXRpb247CiskbWFpbl9oLT5kb19hc3luYygKIAlxKAogUFJF UEFSRSBUUkFOU0FDVElPTiAnYSc7CiApKTsKIAotJG1haW5faC0+cXVlcnlfc2FmZSgKKyRt YWluX2gtPndhaXRfZm9yX2NvbXBsZXRpb247CiskbWFpbl9oLT5kb19hc3luYygKIAlxKAog QkVHSU47CiBJTlNFUlQgSU5UTyB0YmwgVkFMVUVTKDAsICdbWzE0LDIsM11dJyk7CkBAIC02 Niw3ICs4MCw4IEBAIElOU0VSVCBJTlRPIHRibCBWQUxVRVMoMCwgJ1tbMTQsMiwzXV0nKTsK IAogJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKENPTU1JVCBQUkVQQVJFRCAnYSc7 KSk7CiAKLSRtYWluX2gtPnF1ZXJ5X3NhZmUoCiskbWFpbl9oLT53YWl0X2Zvcl9jb21wbGV0 aW9uOworJG1haW5faC0+ZG9fYXN5bmMoCiAJcSgKIFBSRVBBUkUgVFJBTlNBQ1RJT04gJ2In OwogQkVHSU47CkBAIC03NSwxNCArOTAsMTcgQEAgSU5TRVJUIElOVE8gdGJsIFZBTFVFUygw LCAnIm1hcnkgaGFkIGEgbGl0dGxlIGxhbWIiJyk7CiAKICRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcShDT01NSVQgUFJFUEFSRUQgJ2InOykpOwogCi0kbWFpbl9oLT5xdWVyeV9z YWZlKAotCXEoCi1QUkVQQVJFIFRSQU5TQUNUSU9OICdjJzsKLUNPTU1JVCBQUkVQQVJFRCAn Yyc7Ci0pKTsKKyRtYWluX2gtPndhaXRfZm9yX2NvbXBsZXRpb247CiskbWFpbl9oLT5kbygK KwlxKFBSRVBBUkUgVFJBTlNBQ1RJT04gJ2MnOyksCisJcShDT01NSVQgUFJFUEFSRUQgJ2Mn OykpOwogCi0kbWFpbl9oLT5xdWl0OwotJGNpY19oLT5xdWl0OworJG1haW5faC0+Y2xvc2U7 CisKKyMgY2FsbGVkIHR3aWNlIG91dCBvZiBhbiBhYnVuZGFuY2Ugb2YgY2F1dGlvbiBhYm91 dCBwaXBlbGluZSBtb2RlCiskY2ljX2gtPndhaXRfZm9yX2NvbXBsZXRpb247CiskY2ljX2gt PndhaXRfZm9yX2NvbXBsZXRpb247CiskY2ljX2gtPmNsb3NlOwogCiAkcmVzdWx0ID0gJG5v ZGUtPnBzcWwoJ3Bvc3RncmVzJywgcShTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2lkeCcsdHJ1 ZSkpKTsKIGlzKCRyZXN1bHQsICcwJywgJ2J0X2luZGV4X2NoZWNrIGFmdGVyIG92ZXJsYXBw aW5nIDJQQycpOwpAQCAtMTA2LDEwICsxMjQsOSBAQCBQUkVQQVJFIFRSQU5TQUNUSU9OICdw ZXJzaXN0c19mb3JldmVyJzsKICkpOwogJG5vZGUtPnJlc3RhcnQ7CiAKLW15ICRyZWluZGV4 X2ggPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotJHJlaW5kZXhfaC0+ cXVlcnlfdW50aWwoCi0JcXIvc3RhcnQvLCBxKAotXGVjaG8gc3RhcnQKK215ICRyZWluZGV4 X2ggPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7Cisk cmVpbmRleF9oLT5kb19hc3luYygKKwlxKAogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgaWR4 OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gdGJsKGkpOwogRFJPUCBJTkRF WCBDT05DVVJSRU5UTFkgZ2luaWR4OwpAQCAtMTE3LDcgKzEzNCw4IEBAIENSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgZ2luaWR4IE9OIHRibCBVU0lORyBnaW4oaik7CiApKTsKIAogJG5v ZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVEICdzcGFuc19yZXN0 YXJ0JyIpOwotJHJlaW5kZXhfaC0+cXVpdDsKKyRyZWluZGV4X2gtPndhaXRfZm9yX2NvbXBs ZXRpb247CiskcmVpbmRleF9oLT5jbG9zZTsKICRyZXN1bHQgPSAkbm9kZS0+cHNxbCgncG9z dGdyZXMnLCBxKFNFTEVDVCBidF9pbmRleF9jaGVjaygnaWR4Jyx0cnVlKSkpOwogaXMoJHJl c3VsdCwgJzAnLCAnYnRfaW5kZXhfY2hlY2sgYWZ0ZXIgMlBDIGFuZCByZXN0YXJ0Jyk7CiAk cmVzdWx0ID0gJG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywgcShTRUxFQ1QgZ2luX2luZGV4X2No ZWNrKCdnaW5pZHgnKSkpOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9ibG9vbS90LzAwMV93YWwu cGwgYi9jb250cmliL2Jsb29tL3QvMDAxX3dhbC5wbAppbmRleCA2ODNiMTg3NjA1NS4uZjg2 YzQ5ZDYzNTcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYmxvb20vdC8wMDFfd2FsLnBsCisrKyBi L2NvbnRyaWIvYmxvb20vdC8wMDFfd2FsLnBsCkBAIC01LDExICs1LDE0IEBACiB1c2Ugc3Ry aWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogdXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCiBteSAkbm9kZV9wcmlt YXJ5OwogbXkgJG5vZGVfc3RhbmRieTsKK215ICRzZXNzaW9uX3ByaW1hcnk7CitteSAkc2Vz c2lvbl9zdGFuZGJ5OwogCiAjIFJ1biBmZXcgcXVlcmllcyBvbiBib3RoIHByaW1hcnkgYW5k IHN0YW5kYnkgYW5kIGNoZWNrIHRoZWlyIHJlc3VsdHMgbWF0Y2guCiBzdWIgdGVzdF9pbmRl eF9yZXBsYXkKQEAgLTIxLDIwICsyNCwxOCBAQCBzdWIgdGVzdF9pbmRleF9yZXBsYXkKIAkj IFdhaXQgZm9yIHN0YW5kYnkgdG8gY2F0Y2ggdXAKIAkkbm9kZV9wcmltYXJ5LT53YWl0X2Zv cl9jYXRjaHVwKCRub2RlX3N0YW5kYnkpOwogCi0JbXkgJHF1ZXJpZXMgPSBxcShTRVQgZW5h YmxlX3NlcXNjYW49b2ZmOwotU0VUIGVuYWJsZV9iaXRtYXBzY2FuPW9uOwotU0VUIGVuYWJs ZV9pbmRleHNjYW49b247Ci1TRUxFQ1QgKiBGUk9NIHRzdCBXSEVSRSBpID0gMDsKLVNFTEVD VCAqIEZST00gdHN0IFdIRVJFIGkgPSAzOwotU0VMRUNUICogRlJPTSB0c3QgV0hFUkUgdCA9 ICdiJzsKLVNFTEVDVCAqIEZST00gdHN0IFdIRVJFIHQgPSAnZic7Ci1TRUxFQ1QgKiBGUk9N IHRzdCBXSEVSRSBpID0gMyBBTkQgdCA9ICdjJzsKLVNFTEVDVCAqIEZST00gdHN0IFdIRVJF IGkgPSA3IEFORCB0ID0gJ2UnOwotKTsKKwlteSBAcXVlcmllcyA9ICgKKwkJIlNFTEVDVCAq IEZST00gdHN0IFdIRVJFIGkgPSAwIiwKKwkJIlNFTEVDVCAqIEZST00gdHN0IFdIRVJFIGkg PSAzIiwKKwkJIlNFTEVDVCAqIEZST00gdHN0IFdIRVJFIHQgPSAnYiciLAorCQkiU0VMRUNU ICogRlJPTSB0c3QgV0hFUkUgdCA9ICdmJyIsCisJCSJTRUxFQ1QgKiBGUk9NIHRzdCBXSEVS RSBpID0gMyBBTkQgdCA9ICdjJyIsCisJCSJTRUxFQ1QgKiBGUk9NIHRzdCBXSEVSRSBpID0g NyBBTkQgdCA9ICdlJyIsCisJICAgKTsKIAogCSMgUnVuIHRlc3QgcXVlcmllcyBhbmQgY29t cGFyZSB0aGVpciByZXN1bHQKLQlteSAkcHJpbWFyeV9yZXN1bHQgPSAkbm9kZV9wcmltYXJ5 LT5zYWZlX3BzcWwoInBvc3RncmVzIiwgJHF1ZXJpZXMpOwotCW15ICRzdGFuZGJ5X3Jlc3Vs dCA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgicG9zdGdyZXMiLCAkcXVlcmllcyk7CisJ bXkgJHByaW1hcnlfcmVzdWx0ID0gJHNlc3Npb25fcHJpbWFyeS0+cXVlcnlfdHVwbGVzKEBx dWVyaWVzKTsKKwlteSAkc3RhbmRieV9yZXN1bHQgPSAkc2Vzc2lvbl9zdGFuZGJ5LT5xdWVy eV90dXBsZXMoQHF1ZXJpZXMpOwogCiAJaXMoJHByaW1hcnlfcmVzdWx0LCAkc3RhbmRieV9y ZXN1bHQsICIkdGVzdF9uYW1lOiBxdWVyeSByZXN1bHQgbWF0Y2hlcyIpOwogCXJldHVybjsK QEAgLTU1LDEzICs1NiwyNCBAQCAkbm9kZV9zdGFuZGJ5LT5pbml0X2Zyb21fYmFja3VwKCRu b2RlX3ByaW1hcnksICRiYWNrdXBfbmFtZSwKIAloYXNfc3RyZWFtaW5nID0+IDEpOwogJG5v ZGVfc3RhbmRieS0+c3RhcnQ7CiAKKyMgQ3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBzZXNz aW9ucworJHNlc3Npb25fcHJpbWFyeSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5l dyhub2RlID0+ICRub2RlX3ByaW1hcnkpOworJHNlc3Npb25fc3RhbmRieSA9IFBvc3RncmVT UUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlX3N0YW5kYnkpOworbXkgJGlu aXRzZXQgPSBxWworICAgU0VUIGVuYWJsZV9zZXFzY2FuPW9mZjsKKyAgIFNFVCBlbmFibGVf Yml0bWFwc2Nhbj1vbjsKKyAgIFNFVCBlbmFibGVfaW5kZXhzY2FuPW9uOworXTsKKyRzZXNz aW9uX3ByaW1hcnktPmRvKCRpbml0c2V0KTsKKyRzZXNzaW9uX3N0YW5kYnktPmRvKCRpbml0 c2V0KTsKKwogIyBDcmVhdGUgc29tZSBibG9vbSBpbmRleCBvbiBwcmltYXJ5Ci0kbm9kZV9w cmltYXJ5LT5zYWZlX3BzcWwoInBvc3RncmVzIiwgIkNSRUFURSBFWFRFTlNJT04gYmxvb207 Iik7Ci0kbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoInBvc3RncmVzIiwgIkNSRUFURSBUQUJM RSB0c3QgKGkgaW50NCwgdCB0ZXh0KTsiKTsKLSRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgi cG9zdGdyZXMiLAorJHNlc3Npb25fcHJpbWFyeS0+ZG8oIkNSRUFURSBFWFRFTlNJT04gYmxv b207Iik7Ciskc2Vzc2lvbl9wcmltYXJ5LT5kbygiQ1JFQVRFIFRBQkxFIHRzdCAoaSBpbnQ0 LCB0IHRleHQpOyIpOworJHNlc3Npb25fcHJpbWFyeS0+ZG8oCiAJIklOU0VSVCBJTlRPIHRz dCBTRUxFQ1QgaSUxMCwgc3Vic3RyKGVuY29kZShzaGEyNTYoaTo6dGV4dDo6Ynl0ZWEpLCAn aGV4JyksIDEsIDEpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMDApIGk7IgogKTsKLSRu b2RlX3ByaW1hcnktPnNhZmVfcHNxbCgicG9zdGdyZXMiLAorJHNlc3Npb25fcHJpbWFyeS0+ ZG8oCiAJIkNSRUFURSBJTkRFWCBibG9vbWlkeCBPTiB0c3QgVVNJTkcgYmxvb20gKGksIHQp IFdJVEggKGNvbDEgPSAzKTsiKTsKIAogIyBUZXN0IHRoYXQgcXVlcmllcyBnaXZlIHNhbWUg cmVzdWx0CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3Zpc2liaWxpdHkvdC8wMDFfY29uY3Vy cmVudF90cmFuc2FjdGlvbi5wbCBiL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS90LzAwMV9jb25j dXJyZW50X3RyYW5zYWN0aW9uLnBsCmluZGV4IDNhYTU1Njg5MmE2Li5jZjZlM2I0NTE4MiAx MDA2NDQKLS0tIGEvY29udHJpYi9wZ192aXNpYmlsaXR5L3QvMDAxX2NvbmN1cnJlbnRfdHJh bnNhY3Rpb24ucGwKKysrIGIvY29udHJpYi9wZ192aXNpYmlsaXR5L3QvMDAxX2NvbmN1cnJl bnRfdHJhbnNhY3Rpb24ucGwKQEAgLTYsNiArNiw3IEBACiB1c2Ugc3RyaWN0OwogdXNlIHdh cm5pbmdzIEZBVEFMID0+ICdhbGwnOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7 Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCkBAIC0yNCwxMCArMjUsMTAgQEAgJHN0YW5k YnktPnN0YXJ0OwogCiAjIFNldHVwIGFub3RoZXIgZGF0YWJhc2UKICRub2RlLT5zYWZlX3Bz cWwoInBvc3RncmVzIiwgIkNSRUFURSBEQVRBQkFTRSBvdGhlcl9kYXRhYmFzZTtcbiIpOwot bXkgJGJzZXNzaW9uID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgnb3RoZXJfZGF0YWJhc2Un KTsKK215ICRic2Vzc2lvbiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2Rl ID0+ICRub2RlLCBkYm5hbWUgPT4gJ290aGVyX2RhdGFiYXNlJyk7CiAKICMgUnVuIGEgY29u Y3VycmVudCB0cmFuc2FjdGlvbgotJGJzZXNzaW9uLT5xdWVyeV9zYWZlKAorJGJzZXNzaW9u LT5kbygKIAlxcVsKIAlCRUdJTjsKIAlTRUxFQ1QgdHhpZF9jdXJyZW50KCk7CkBAIC01NSw4 ICs1Niw4IEBAICRyZXN1bHQgPSAkc3RhbmRieS0+c2FmZV9wc3FsKCJwb3N0Z3JlcyIsCiBv aygkcmVzdWx0IGVxICIiLCAicGdfY2hlY2tfdmlzaWJsZSgpIGRldGVjdHMgbm8gZXJyb3Jz Iik7CiAKICMgU2h1dGRvd24KLSRic2Vzc2lvbi0+cXVlcnlfc2FmZSgiQ09NTUlUOyIpOwot JGJzZXNzaW9uLT5xdWl0OworJGJzZXNzaW9uLT5kbygiQ09NTUlUOyIpOworJGJzZXNzaW9u LT5jbG9zZTsKICRub2RlLT5zdG9wOwogJHN0YW5kYnktPnN0b3A7CiAKZGlmZiAtLWdpdCBh L2NvbnRyaWIvdGVzdF9kZWNvZGluZy90LzAwMV9yZXBsX3N0YXRzLnBsIGIvY29udHJpYi90 ZXN0X2RlY29kaW5nL3QvMDAxX3JlcGxfc3RhdHMucGwKaW5kZXggNjgxNGM3OTJlMmIuLjc5 YjkxODIwMTRmIDEwMDY0NAotLS0gYS9jb250cmliL3Rlc3RfZGVjb2RpbmcvdC8wMDFfcmVw bF9zdGF0cy5wbAorKysgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvdC8wMDFfcmVwbF9zdGF0 cy5wbApAQCAtNyw2ICs3LDcgQEAgdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9 PiAnYWxsJzsKIHVzZSBGaWxlOjpQYXRoIHF3KHJtdHJlZSk7CiB1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBv c3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKQEAgLTEyOSwxMSAr MTMwLDExIEBAICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKICk7CiAKICMgTG9vayBh dCBzbG90IGRhdGEsIHdpdGggYSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24uCi1teSAkYnBnc3Fs ID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+ IDEpOworbXkgJGJnc2Vzc2lvbiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhu b2RlPT4kbm9kZSk7CiAKICMgTGF1bmNoIHF1ZXJ5IGFuZCBsb29rIGF0IHNsb3QgZGF0YSwg aW5jcmVtZW50aW5nIHRoZSByZWZjb3VudCBvZiB0aGUKICMgc3RhdHMgZW50cnkuCi0kYnBn c3FsLT5xdWVyeV9zYWZlKAorJGJnc2Vzc2lvbi0+ZG9fYXN5bmMoCiAJIlNFTEVDVCBwZ19s b2dpY2FsX3Nsb3RfcGVla19iaW5hcnlfY2hhbmdlcygnJHNsb3RfbmFtZV9yZXN0YXJ0Jywg TlVMTCwgTlVMTCkiCiApOwogCkBAIC0xNTAsNyArMTUxLDggQEAgJG5vZGUtPnNhZmVfcHNx bCgncG9zdGdyZXMnLAogCiAjIExvb2sgYWdhaW4gYXQgdGhlIHNsb3QgZGF0YS4gIFRoZSBs b2NhbCBzdGF0cyByZWZlcmVuY2Ugc2hvdWxkIGJlIHJlZnJlc2hlZAogIyB0byB0aGUgcmVp bml0aWFsaXplZCBlbnRyeS4KLSRicGdzcWwtPnF1ZXJ5X3NhZmUoCiskYmdzZXNzaW9uLT53 YWl0X2Zvcl9jb21wbGV0aW9uOworJGJnc2Vzc2lvbi0+ZG9fYXN5bmMoCiAJIlNFTEVDVCBw Z19sb2dpY2FsX3Nsb3RfcGVla19iaW5hcnlfY2hhbmdlcygnJHNsb3RfbmFtZV9yZXN0YXJ0 JywgTlVMTCwgTlVMTCkiCiApOwogIyBEcm9wIGFnYWluIHRoZSBzbG90LCB0aGUgZW50cnkg aXMgbm90IGRyb3BwZWQgeWV0IGFzIHRoZSBwcmV2aW91cyBzZXNzaW9uCkBAIC0xNzYsNiAr MTc4LDcgQEAgY29tbWFuZF9saWtlKAogbXkgJHN0YXRzX2ZpbGUgPSAiJGRhdGFkaXIvcGdf c3RhdC9wZ3N0YXQuc3RhdCI7CiBvaygtZiAiJHN0YXRzX2ZpbGUiLCAic3RhdHMgZmlsZSBt dXN0IGV4aXN0IGFmdGVyIHNodXRkb3duIik7CiAKLSRicGdzcWwtPnF1aXQ7CiskYmdzZXNz aW9uLT53YWl0X2Zvcl9jb21wbGV0aW9uOworJGJnc2Vzc2lvbi0+Y2xvc2U7CiAKIGRvbmVf dGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19hbWNoZWNrL3QvMDA0X3Zlcmlm eV9oZWFwYW0ucGwgYi9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDRfdmVyaWZ5X2hlYXBhbS5w bAppbmRleCA5NWYxZjM0YzkwZC4uOWFmYWNiY2FhZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfYW1jaGVjay90LzAwNF92ZXJpZnlfaGVhcGFtLnBsCisrKyBiL3NyYy9iaW4vcGdfYW1j aGVjay90LzAwNF92ZXJpZnlfaGVhcGFtLnBsCkBAIC01LDYgKzUsNyBAQCB1c2Ugc3RyaWN0 OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogCiB1c2UgUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOwogCiB1c2UgVGVzdDo6TW9yZTsKQEAgLTE5MCwxNiArMTkx LDE3IEBAICRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ21heF9wcmVw YXJlZF90cmFuc2FjdGlvbnM9MTAnKTsKICRub2RlLT5zdGFydDsKIG15ICRwb3J0ID0gJG5v ZGUtPnBvcnQ7CiBteSAkcGdkYXRhID0gJG5vZGUtPmRhdGFfZGlyOwotJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIEVYVEVOU0lPTiBhbWNoZWNrIik7Ci0kbm9kZS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgRVhURU5TSU9OIHBhZ2VpbnNwZWN0Iik7 CitteSAkc2Vzc2lvbiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ ICRub2RlKTsKKyRzZXNzaW9uLT5kbygiQ1JFQVRFIEVYVEVOU0lPTiBhbWNoZWNrIik7Cisk c2Vzc2lvbi0+ZG8oIkNSRUFURSBFWFRFTlNJT04gcGFnZWluc3BlY3QiKTsKIAogIyBHZXQg YSBub24temVybyBkYXRmcm96ZW54aWQKLSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg cXEoVkFDVVVNIEZSRUVaRSkpOworJHNlc3Npb24tPmRvKHFxKFZBQ1VVTSBGUkVFWkUpKTsK IAogIyBDcmVhdGUgdGhlIHRlc3QgdGFibGUgd2l0aCBwcmVjaXNlbHkgdGhlIHNjaGVtYSB0 aGF0IG91ciBjb3JydXB0aW9uIGZ1bmN0aW9uCiAjIGV4cGVjdHMuCi0kbm9kZS0+c2FmZV9w c3FsKAotCSdwb3N0Z3JlcycsIHFxKAorJHNlc3Npb24tPmRvKAorCXFxKAogCQlDUkVBVEUg VEFCTEUgcHVibGljLnRlc3QgKGEgQklHSU5ULCBiIFRFWFQsIGMgVEVYVCk7CiAJCUFMVEVS IFRBQkxFIHB1YmxpYy50ZXN0IFNFVCAoYXV0b3ZhY3V1bV9lbmFibGVkPWZhbHNlKTsKIAkJ QUxURVIgVEFCTEUgcHVibGljLnRlc3QgQUxURVIgQ09MVU1OIGMgU0VUIFNUT1JBR0UgRVhU RVJOQUw7CkBAIC0yMDksMTQgKzIxMSwxNSBAQCAkbm9kZS0+c2FmZV9wc3FsKAogIyBXZSB3 YW50ICgwIDwgZGF0ZnJvemVueGlkIDwgdGVzdC5yZWxmcm96ZW54aWQpLiAgVG8gYWNoaWV2 ZSB0aGlzLCB3ZSBmcmVlemUKICMgYW4gb3RoZXJ3aXNlIHVudXNlZCB0YWJsZSwgcHVibGlj Lmp1bmssIHByaW9yIHRvIGluc2VydGluZyBkYXRhIGFuZCBmcmVlemluZwogIyBwdWJsaWMu dGVzdAotJG5vZGUtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKKyRzZXNzaW9uLT5k bygKKwlxcSgKIAkJQ1JFQVRFIFRBQkxFIHB1YmxpYy5qdW5rIEFTIFNFTEVDVCAnanVuayc6 OlRFWFQgQVMganVua19jb2x1bW47CiAJCUFMVEVSIFRBQkxFIHB1YmxpYy5qdW5rIFNFVCAo YXV0b3ZhY3V1bV9lbmFibGVkPWZhbHNlKTsKLQkJVkFDVVVNIEZSRUVaRSBwdWJsaWMuanVu awotCSkpOworCSksCisJJ1ZBQ1VVTSBGUkVFWkUgcHVibGljLmp1bmsnCispOwogCi1teSAk cmVsID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorbXkgJHJlbCA9ICRzZXNzaW9u LT5xdWVyeV9vbmV2YWwoCiAJcXEoU0VMRUNUIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCdwdWJs aWMudGVzdCcpKSk7CiBteSAkcmVscGF0aCA9ICIkcGdkYXRhLyRyZWwiOwogCkBAIC0yMjks MjMgKzIzMiwyNCBAQCBteSAkUk9XQ09VTlRfQkFTSUMgPSAxNjsKIAogIyBGaXJzdCBpbnNl cnQgZGF0YSBuZWVkZWQgZm9yIHRlc3RzIHVucmVsYXRlZCB0byB1cGRhdGUgY2hhaW4gdmFs aWRhdGlvbi4KICMgVGhlbiBmcmVlemUgdGhlIHBhZ2UuIFRoZXNlIHR1cGxlcyBhcmUgYXQg b2Zmc2V0IG51bWJlcnMgMSB0byAxNi4KLSRub2RlLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVz JywgcXEoCiskc2Vzc2lvbi0+ZG8oCisJcXEoCiAJSU5TRVJUIElOVE8gcHVibGljLnRlc3Qg KGEsIGIsIGMpCiAJCVNFTEVDVAogCQkJeCdERUFERjlGOURFQURGOUY5Jzo6YmlnaW50LAog CQkJJ2FiY2RlZmcnLAogCQkJcmVwZWF0KCd3JywgMTAwMDApCiAJRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgJFJPV0NPVU5UX0JBU0lDKTsKLQlWQUNVVU0gRlJFRVpFIHB1YmxpYy50ZXN0 OykKKyAgICApLAorCSdWQUNVVU0gRlJFRVpFIHB1YmxpYy50ZXN0JwogKTsKIAogIyBDcmVh dGUgc29tZSBzaW1wbGUgSE9UIHVwZGF0ZSBjaGFpbnMgZm9yIGxpbmUgcG9pbnRlciB2YWxp ZGF0aW9uLiBBZnRlcgogIyB0aGUgcGFnZSBpcyBIT1QgcHJ1bmVkLCB3ZSdsbCBoYXZlIHR3 byByZWRpcmVjdHMgbGluZSBwb2ludGVycyBlYWNoIHBvaW50aW5nCiAjIHRvIGEgdHVwbGUu IFdlJ2xsIHRoZW4gY2hhbmdlIHRoZSBzZWNvbmQgcmVkaXJlY3QgdG8gcG9pbnQgdG8gdGhl IHNhbWUKICMgdHVwbGUgYXMgdGhlIGZpcnN0IG9uZSBhbmQgdmVyaWZ5IHRoYXQgd2UgY2Fu IGRldGVjdCBjb3JydXB0aW9uLgotJG5vZGUtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBx cSgKKyRzZXNzaW9uLT5kbygKKwlxcSgKIAkJSU5TRVJUIElOVE8gcHVibGljLnRlc3QgKGEs IGIsIGMpCiAJCQlWQUxVRVMgKCB4J0RFQURGOUY5REVBREY5RjknOjpiaWdpbnQsICdhYmNk ZWZnJywKIAkJCQkJIGdlbmVyYXRlX3NlcmllcygxLDIpKTsgLS0gb2Zmc2V0IG51bWJlcnMg MTcgYW5kIDE4CkBAIC0yNTQsOCArMjU4LDggQEAgJG5vZGUtPnNhZmVfcHNxbCgKIAkpKTsK IAogIyBDcmVhdGUgc29tZSBtb3JlIEhPVCB1cGRhdGUgY2hhaW5zLgotJG5vZGUtPnNhZmVf cHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKKyRzZXNzaW9uLT5kbygKKwlxcSgKIAkJSU5TRVJU IElOVE8gcHVibGljLnRlc3QgKGEsIGIsIGMpCiAJCQlWQUxVRVMgKCB4J0RFQURGOUY5REVB REY5RjknOjpiaWdpbnQsICdhYmNkZWZnJywKIAkJCQkJIGdlbmVyYXRlX3NlcmllcygzLDYp KTsgLS0gb2Zmc2V0IG51bWJlcnMgMjEgdGhyb3VnaCAyNApAQCAtMjY0LDI1ICsyNjgsMzAg QEAgJG5vZGUtPnNhZmVfcHNxbCgKIAkpKTsKIAogIyBOZWdhdGl2ZSB0ZXN0IGNhc2Ugb2Yg SE9ULXBydW5pbmcgd2l0aCBhYm9ydGVkIHR1cGxlLgotJG5vZGUtPnNhZmVfcHNxbCgKLQkn cG9zdGdyZXMnLCBxcSgKKyRzZXNzaW9uLT5kbygKKwlxcSgKIAkJQkVHSU47CiAJCVVQREFU RSBwdWJsaWMudGVzdCBTRVQgYyA9ICdhJyBXSEVSRSBjID0gJzUnOyAtLSBvZmZzZXQgbnVt YmVyIDI3CiAJCUFCT1JUOwotCQlWQUNVVU0gRlJFRVpFIHB1YmxpYy50ZXN0OwotCSkpOwor ICAgICAgICksCisJICAgJ1ZBQ1VVTSBGUkVFWkUgcHVibGljLnRlc3Q7JywKKwkpOwogCiAj IE5leHQgdXBkYXRlIG9uIGFueSB0dXBsZSB3aWxsIGJlIHN0b3JlZCBhdCB0aGUgc2FtZSBw bGFjZSBvZiB0dXBsZSBpbnNlcnRlZAogIyBieSBhYm9ydGVkIHRyYW5zYWN0aW9uLiBUaGlz IHNob3VsZCBub3QgY2F1c2UgdGhlIHRhYmxlIHRvIGFwcGVhciBjb3JydXB0LgotJG5vZGUt PnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKKyRzZXNzaW9uLT5kbygKKwlxcSgKKyAg ICAgICAgQkVHSU47CiAJCVVQREFURSBwdWJsaWMudGVzdCBTRVQgYyA9ICdhJyBXSEVSRSBj ID0gJzYnOyAtLSBvZmZzZXQgbnVtYmVyIDI3IGFnYWluCi0JCVZBQ1VVTSBGUkVFWkUgcHVi bGljLnRlc3Q7Ci0JKSk7CisgICAgICAgIENPTU1JVDsKKwkpLAorCSdWQUNVVU0gRlJFRVpF IHB1YmxpYy50ZXN0OycsCisgICApOwogCiAjIERhdGEgZm9yIEhPVCBjaGFpbiB2YWxpZGF0 aW9uLCBzbyBub3QgY2FsbGluZyBWQUNVVU0gRlJFRVpFLgotJG5vZGUtPnNhZmVfcHNxbCgK LQkncG9zdGdyZXMnLCBxcSgKKyRzZXNzaW9uLT5kbygKKwlxcSgKKyAgICAgICAgQkVHSU47 CiAJCUlOU0VSVCBJTlRPIHB1YmxpYy50ZXN0IChhLCBiLCBjKQogCQkJVkFMVUVTICggeCdE RUFERjlGOURFQURGOUY5Jzo6YmlnaW50LCAnYWJjZGVmZycsCiAJCQkJCSBnZW5lcmF0ZV9z ZXJpZXMoNywxNSkpOyAtLSBvZmZzZXQgbnVtYmVycyAyOCB0byAzNgpAQCAtMjkzLDExICsz MDIsMTIgQEAgJG5vZGUtPnNhZmVfcHNxbCgKIAkJVVBEQVRFIHB1YmxpYy50ZXN0IFNFVCBj ID0gJ2EnIFdIRVJFIGMgPSAnMTMnOyAtLSBvZmZzZXQgbnVtYmVyIDQxCiAJCVVQREFURSBw dWJsaWMudGVzdCBTRVQgYyA9ICdhJyBXSEVSRSBjID0gJzE0JzsgLS0gb2Zmc2V0IG51bWJl ciA0MgogCQlVUERBVEUgcHVibGljLnRlc3QgU0VUIGMgPSAnYScgV0hFUkUgYyA9ICcxNSc7 IC0tIG9mZnNldCBudW1iZXIgNDMKKyAgICAgICAgQ09NTUlUOwogCSkpOwogCiAjIE5lZWQg b25lIGFib3J0ZWQgdHJhbnNhY3Rpb24gdG8gdGVzdCBjb3JydXB0aW9uIGluIEhPVCBjaGFp bnMuCi0kbm9kZS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHFxKAorJHNlc3Npb24tPmRv KAorCXFxKAogCQlCRUdJTjsKIAkJVVBEQVRFIHB1YmxpYy50ZXN0IFNFVCBjID0gJ2EnIFdI RVJFIGMgPSAnOSc7IC0tIG9mZnNldCBudW1iZXIgNDQKIAkJQUJPUlQ7CkBAIC0zMDYsMTkg KzMxNiwxOSBAQCAkbm9kZS0+c2FmZV9wc3FsKAogIyBOZWVkIG9uZSBpbi1wcm9ncmVzcyB0 cmFuc2FjdGlvbiB0byB0ZXN0IGZldyBjb3JydXB0aW9uIGluIEhPVCBjaGFpbnMuCiAjIFdl IGFyZSBjcmVhdGluZyBQUkVQQVJFIFRSQU5TQUNUSU9OIGhlcmUgYXMgdGhlc2Ugd2lsbCBu b3QgYmUgYWJvcnRlZAogIyBldmVuIGlmIHdlIHN0b3AgdGhlIG5vZGUuCi0kbm9kZS0+c2Fm ZV9wc3FsKAotCSdwb3N0Z3JlcycsIHFxKAorJHNlc3Npb24tPmRvKAorCXFxKAogCQlCRUdJ TjsKIAkJUFJFUEFSRSBUUkFOU0FDVElPTiAnaW5fcHJvZ3Jlc3NfdHgnOwogCSkpOwotbXkg JGluX3Byb2dyZXNzX3hpZCA9ICRub2RlLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXEo CitteSAkaW5fcHJvZ3Jlc3NfeGlkID0gJHNlc3Npb24tPnF1ZXJ5X29uZXZhbCgKKwlxcSgK IAkJU0VMRUNUIHRyYW5zYWN0aW9uIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7CiAJKSk7CiAK LW15ICRyZWxmcm96ZW54aWQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCitteSAk cmVsZnJvemVueGlkID0gJHNlc3Npb24tPnF1ZXJ5X29uZXZhbCgKIAlxKHNlbGVjdCByZWxm cm96ZW54aWQgZnJvbSBwZ19jbGFzcyB3aGVyZSByZWxuYW1lID0gJ3Rlc3QnKSk7Ci1teSAk ZGF0ZnJvemVueGlkID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorbXkgJGRhdGZy b3plbnhpZCA9ICRzZXNzaW9uLT5xdWVyeV9vbmV2YWwoCiAJcShzZWxlY3QgZGF0ZnJvemVu eGlkIGZyb20gcGdfZGF0YWJhc2Ugd2hlcmUgZGF0bmFtZSA9ICdwb3N0Z3JlcycpKTsKIAog IyBTYW5pdHkgY2hlY2sgdGhhdCBvdXIgJ3Rlc3QnIHRhYmxlIGhhcyBhIHJlbGZyb3plbnhp ZCBuZXdlciB0aGFuIHRoZQpAQCAtMzI2LDYgKzMzNiw3IEBAIG15ICRkYXRmcm96ZW54aWQg PSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAjIGZpcnN0IG5vcm1hbCB4aWQuICBX ZSByZWx5IG9uIHRoZXNlIGludmFyaWFudHMgaW4gc29tZSBvZiBvdXIgdGVzdHMuCiBpZiAo JGRhdGZyb3plbnhpZCA8PSAzIHx8ICRkYXRmcm96ZW54aWQgPj0gJHJlbGZyb3plbnhpZCkK IHsKKwkkc2Vzc2lvbi0+Y2xvc2U7CiAJJG5vZGUtPmNsZWFuX25vZGU7CiAJcGxhbiBza2lw X2FsbCA9PgogCSAgIlhpZCB0aHJlc2hvbGRzIG5vdCBhcyBleHBlY3RlZDogZ290IGRhdGZy b3plbnhpZCA9ICRkYXRmcm96ZW54aWQsIHJlbGZyb3plbnhpZCA9ICRyZWxmcm96ZW54aWQi OwpAQCAtMzM0LDE3ICszNDUsMjEgQEAgaWYgKCRkYXRmcm96ZW54aWQgPD0gMyB8fCAkZGF0 ZnJvemVueGlkID49ICRyZWxmcm96ZW54aWQpCiAKICMgRmluZCB3aGVyZSBlYWNoIG9mIHRo ZSB0dXBsZXMgaXMgbG9jYXRlZCBvbiB0aGUgcGFnZS4gSWYgYSBwYXJ0aWN1bGFyCiAjIGxp bmUgcG9pbnRlciBpcyBhIHJlZGlyZWN0IHJhdGhlciB0aGFuIGEgdHVwbGUsIHdlIHJlY29y ZCB0aGUgb2Zmc2V0IGFzIC0xLgotbXkgQGxwX29mZiA9IHNwbGl0ICdcbicsICRub2RlLT5z YWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXEoCitteSAkbHBfb2ZmX3JlcyA9ICRzZXNzaW9u LT5xdWVyeSgKKwlxcSgKIAkgICAgU0VMRUNUIENBU0UgV0hFTiBscF9mbGFncyA9IDIgVEhF TiAtMSBFTFNFIGxwX29mZiBFTkQKIAkgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jh d19wYWdlKCd0ZXN0JywgJ21haW4nLCAwKSkKICAgICApCi0pOworICAgKTsKK215IEBscF9v ZmY7CitwdXNoKEBscF9vZmYsICRfLT5bMF0pIGZvcmVhY2ggQHskbHBfb2ZmX3Jlcy0+e3Jv d3N9fTsKKwogc2NhbGFyIEBscF9vZmYgPT0gJFJPV0NPVU5UIG9yIEJBSUxfT1VUKCJyb3cg b2Zmc2V0IGNvdW50cyBtaXNtYXRjaCIpOwogCiAjIFNhbml0eSBjaGVjayB0aGF0IG91ciAn dGVzdCcgdGFibGUgb24gZGlzayBsYXlvdXQgbWF0Y2hlcyBleHBlY3RhdGlvbnMuICBJZgog IyB0aGlzIGlzIG5vdCBzbywgd2Ugd2lsbCBoYXZlIHRvIHNraXAgdGhlIHRlc3QgdW50aWwg c29tZWJvZHkgdXBkYXRlcyB0aGUgdGVzdAogIyB0byB3b3JrIG9uIHRoaXMgcGxhdGZvcm0u Ciskc2Vzc2lvbi0+Y2xvc2U7CiAkbm9kZS0+c3RvcDsKIG15ICRmaWxlOwogb3BlbigkZmls ZSwgJys8JywgJHJlbHBhdGgpCkBAIC03NTEsMTcgKzc2NiwxOSBAQCBmb3IgKG15ICR0dXBp ZHggPSAwOyAkdHVwaWR4IDwgJFJPV0NPVU5UOyAkdHVwaWR4KyspCiBjbG9zZSgkZmlsZSkK ICAgb3IgQkFJTF9PVVQoImNsb3NlIGZhaWxlZDogJCEiKTsKICRub2RlLT5zdGFydDsKKyRz ZXNzaW9uLT5yZWNvbm5lY3Q7CiAKICMgUnVuIHBnX2FtY2hlY2sgYWdhaW5zdCB0aGUgY29y cnVwdCB0YWJsZSB3aXRoIGVwb2NoPTAsIGNvbXBhcmluZyBhY3R1YWwKICMgY29ycnVwdGlv biBtZXNzYWdlcyBhZ2FpbnN0IHRoZSBleHBlY3RlZCBtZXNzYWdlcwogJG5vZGUtPmNvbW1h bmRfY2hlY2tzX2FsbCgKIAlbICdwZ19hbWNoZWNrJywgJy0tbm8tZGVwZW5kZW50LWluZGV4 ZXMnLCAnLS1wb3J0JyA9PiAkcG9ydCwgJ3Bvc3RncmVzJyBdLAogCTIsIFtAZXhwZWN0ZWRd LCBbXSwgJ0V4cGVjdGVkIGNvcnJ1cHRpb24gbWVzc2FnZSBvdXRwdXQnKTsKLSRub2RlLT5z YWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXEoCiskc2Vzc2lvbi0+ZG8oCisJcXEoCiAgICAg ICAgICAgICAgICAgICAgICAgICBDT01NSVQgUFJFUEFSRUQgJ2luX3Byb2dyZXNzX3R4JzsK ICAgICAgICAgKSk7CiAKKyRzZXNzaW9uLT5jbG9zZTsKICRub2RlLT50ZWFyZG93bl9ub2Rl OwogJG5vZGUtPmNsZWFuX25vZGU7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFk ZS90LzAwN19tdWx0aXhhY3RfY29udmVyc2lvbi5wbCBiL3NyYy9iaW4vcGdfdXBncmFkZS90 LzAwN19tdWx0aXhhY3RfY29udmVyc2lvbi5wbAppbmRleCA4NjdhMDYyMzE1My4uOWE0Yzhl ZDk4MzkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdXBncmFkZS90LzAwN19tdWx0aXhhY3Rf Y29udmVyc2lvbi5wbAorKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDdfbXVsdGl4YWN0 X2NvbnZlcnNpb24ucGwKQEAgLTE1LDYgKzE1LDcgQEAgdXNlIHdhcm5pbmdzIEZBVEFMID0+ ICdhbGwnOwogCiB1c2UgTWF0aDo6QmlnSW50OwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FM OjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCkBAIC0zOCwxMCArMzksOCBAQCBt eSAkdGVtcGRpciA9IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0ZW1wZGlyOwogIyB2ZXJz aW9ucy4KICMKICMgVGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBjbHVzdGVyIHRvIGNvbm5l Y3QgdG8sIHRoZSBzZWNvbmQgYXJndW1lbnQKLSMgaXMgYSBjbHVzdGVyIHVzaW5nIHRoZSBu ZXcgdmVyc2lvbi4gIFdlIG5lZWQgdGhlICdwc3FsJyBiaW5hcnkgZnJvbQotIyB0aGUgbmV3 IHZlcnNpb24sIHRoZSBuZXcgY2x1c3RlciBpcyBvdGhlcndpc2UgdW51c2VkLiAgKFdlIG5l ZWQgdG8KLSMgdXNlIHRoZSBuZXcgJ3BzcWwnIGJlY2F1c2Ugc29tZSBvZiB0aGUgbW9yZSBh ZHZhbmNlZCBiYWNrZ3JvdW5kIHBzcWwKLSMgcGVybCBtb2R1bGUgZmVhdHVyZXMgZGVwZW5k IG9uIGEgZmFpcmx5IHJlY2VudCBwc3FsIHZlcnNpb24uKQorIyBpcyBhIGNsdXN0ZXIgdXNp bmcgdGhlIG5ldyB2ZXJzaW9uLiAgV2UgbmVlZCB0aGUgbGlicHEgbGlicmFyeSBmcm9tCisj IHRoZSBuZXcgdmVyc2lvbiAoZm9yIFNlc3Npb24pLCB0aGUgbmV3IGNsdXN0ZXIgaXMgb3Ro ZXJ3aXNlIHVudXNlZC4KIHN1YiBteGFjdF93b3JrbG9hZAogewogCW15ICRub2RlID0gc2hp ZnQ7ICAgICAgICMgQ2x1c3RlciB0byBjb25uZWN0IHRvCkBAIC03OSwxOCArNzgsMjAgQEAg c3ViIG14YWN0X3dvcmtsb2FkCiAJIyBpbiBlYWNoIGNvbm5lY3Rpb24uCiAJZm9yICgwIC4u ICRuY2xpZW50cykKIAl7Ci0JCSMgVXNlIHRoZSBwc3FsIGJpbmFyeSBmcm9tIHRoZSBuZXcg aW5zdGFsbGF0aW9uLiAgVGhlCi0JCSMgQmFja2dyb3VuZFBzcWwgZnVuY3Rpb25hbGl0eSBk b2Vzbid0IHdvcmsgd2l0aCBvbGRlciBwc3FsCi0JCSMgdmVyc2lvbnMuCi0JCW15ICRjb25u ID0gJGJpbm5vZGUtPmJhY2tncm91bmRfcHNxbCgKLQkJCScnLAotCQkJY29ubnN0ciA9PiAk bm9kZS0+Y29ubnN0cigncG9zdGdyZXMnKSwKLQkJCXRpbWVvdXQgPT4gJGNvbm5lY3Rpb25f dGltZW91dF9zZWNzKTsKKwkJIyBDb25uZWN0IHRvIHRoZSAob2xkKSBjbHVzdGVyLCBidXQg bG9hZCBsaWJwcSBmcm9tIHRoZSBuZXcKKwkJIyBpbnN0YWxsYXRpb246IHRoZSBTZXNzaW9u IEZGSSB3cmFwcGVyIGJpbmRzIGxpYnBxIGZ1bmN0aW9ucyB0aGF0CisJCSMgbWF5IG5vdCBi ZSBwcmVzZW50IGluIHRoZSBvbGQgaW5zdGFsbGF0aW9uJ3MgbGlicHEuICBQYXNzaW5nIHRo ZQorCQkjIG5vZGUgKHJhdGhlciB0aGFuIGFuIGV4cGxpY2l0IGxpYmRpcikgbGV0cyBTZXNz aW9uIGxvY2F0ZSB0aGUKKwkJIyBsaWJyYXJ5IGNvcnJlY3RseSBvbiBhbGwgcGxhdGZvcm1z LCBpbmNsdWRpbmcgV2luZG93cyB3aGVyZSBpdAorCQkjIGxpdmVzIGluIGJpbmRpci4KKwkJ bXkgJGNvbm4gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcoCisJCQlub2RlID0+ ICRiaW5ub2RlLAorCQkJY29ubnN0ciA9PiAkbm9kZS0+Y29ubnN0cigncG9zdGdyZXMnKSk7 CiAKLQkJJGNvbm4tPnF1ZXJ5X3NhZmUoIlNFVCBsb2dfc3RhdGVtZW50PW5vbmUiLCB2ZXJi b3NlID0+ICR2ZXJib3NlKQorCQkkY29ubi0+ZG8oIlNFVCBsb2dfc3RhdGVtZW50PW5vbmUi KQogCQkgIHVubGVzcyAkdmVyYm9zZTsKLQkJJGNvbm4tPnF1ZXJ5X3NhZmUoIlNFVCBlbmFi bGVfc2Vxc2Nhbj1vZmYiLCB2ZXJib3NlID0+ICR2ZXJib3NlKTsKLQkJJGNvbm4tPnF1ZXJ5 X3NhZmUoIkJFR0lOIiwgdmVyYm9zZSA9PiAkdmVyYm9zZSk7CisJCSRjb25uLT5kbygiU0VU IGVuYWJsZV9zZXFzY2FuPW9mZiIpOworCQkkY29ubi0+ZG8oIkJFR0lOIik7CiAKIAkJcHVz aChAY29ubmVjdGlvbnMsICRjb25uKTsKIAl9CkBAIC0xMDgsOSArMTA5LDkgQEAgc3ViIG14 YWN0X3dvcmtsb2FkCiAJCW15ICRjb25uID0gJGNvbm5lY3Rpb25zWyAkaSAlICRuY2xpZW50 cyBdOwogCiAJCW15ICRzcWwgPSAoJGkgJSAkYWJvcnRfZXZlcnkgPT0gMCkgPyAiQUJPUlQi IDogIkNPTU1JVCI7Ci0JCSRjb25uLT5xdWVyeV9zYWZlKCRzcWwsIHZlcmJvc2UgPT4gJHZl cmJvc2UpOworCQkkY29ubi0+ZG8oJHNxbCk7CiAKLQkJJGNvbm4tPnF1ZXJ5X3NhZmUoIkJF R0lOIiwgdmVyYm9zZSA9PiAkdmVyYm9zZSk7CisJCSRjb25uLT5kbygiQkVHSU4iKTsKIAkJ aWYgKCRpICUgJHVwZGF0ZV9ldmVyeSA9PSAwKQogCQl7CiAJCQkkc3FsID0gcXFbCkBAIC0x MjYsMTIgKzEyNywxMiBAQCBzdWIgbXhhY3Rfd29ya2xvYWQKIAkJCSAgKSBhcyB4CiAJCQld OwogCQl9Ci0JCSRjb25uLT5xdWVyeV9zYWZlKCRzcWwsIHZlcmJvc2UgPT4gJHZlcmJvc2Up OworCQkkY29ubi0+ZG8oJHNxbCk7CiAJfQogCiAJZm9yIG15ICRjb25uIChAY29ubmVjdGlv bnMpCiAJewotCQkkY29ubi0+cXVpdCgpOworCQkkY29ubi0+Y2xvc2U7CiAJfQogCiAJJG5v ZGUtPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9hdXRoZW50aWNhdGlvbi90LzAwMV9w YXNzd29yZC5wbCBiL3NyYy90ZXN0L2F1dGhlbnRpY2F0aW9uL3QvMDAxX3Bhc3N3b3JkLnBs CmluZGV4IDY5ZWQ0OTE5YjE2Li5hYzJhYTNjZTIzZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv YXV0aGVudGljYXRpb24vdC8wMDFfcGFzc3dvcmQucGwKKysrIGIvc3JjL3Rlc3QvYXV0aGVu dGljYXRpb24vdC8wMDFfcGFzc3dvcmQucGwKQEAgLTEzLDYgKzEzLDcgQEAKIHVzZSBzdHJp Y3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiB1c2UgUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiBpZiAoISR1c2VfdW5peF9z b2NrZXRzKQpAQCAtMTg1LDM2ICsxODYsMTggQEAgbXkgJHJlcyA9ICRub2RlLT5zYWZlX3Bz cWwoCiAJIFdIRVJFIHJvbG5hbWUgPSAnc2NyYW1fcm9sZV9pdGVyJyIpOwogaXMoJHJlcywg J1NDUkFNLVNIQS0yNTYkMTAyNDonLCAnc2NyYW1faXRlcmF0aW9ucyBpbiBzZXJ2ZXIgc2lk ZSBST0xFJyk7CiAKLSMgSWYgd2UgZG9uJ3QgaGF2ZSBJTzo6UHR5LCBmb3JnZXQgaXQsIGJl Y2F1c2UgSVBDOjpSdW4gZGVwZW5kcyBvbiB0aGF0Ci0jIHRvIHN1cHBvcnQgcHR5IGNvbm5l Y3Rpb25zLiBBbHNvIHNraXAgaWYgSVBDOjpSdW4gaXNuJ3QgYXQgbGVhc3QgMC45OAotIyBh cyBlYXJsaWVyIHZlcnNpb24gY2F1c2UgdGhlIHNlc3Npb24gdG8gdGltZSBvdXQuCi1TS0lQ OgotewotCXNraXAgIklPOjpQdHkgYW5kIElQQzo6UnVuID49IDAuOTggcmVxdWlyZWQiLCAx Ci0JICB1bmxlc3MgZXZhbCB7IHJlcXVpcmUgSU86OlB0eTsgSVBDOjpSdW4tPlZFUlNJT04o JzAuOTgnKTsgfTsKKyMgc2V0IHBhc3N3b3JkIHVzaW5nIFBRY2hhbmdlUGFzc3dvcmQKK215 ICRzZXNzaW9uID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3IChub2RlID0+ICRu b2RlKTsKIAotCSMgQWx0ZXIgdGhlIHBhc3N3b3JkIG9uIHRoZSBjcmVhdGVkIHJvbGUgdXNp bmcgXHBhc3N3b3JkIGluIHBzcWwgdG8gZW5zdXJlCi0JIyB0aGF0IGNsaWVudHNpZGUgcGFz c3dvcmQgY2hhbmdlcyB1c2UgdGhlIHNjcmFtX2l0ZXJhdGlvbnMgdmFsdWUgd2hlbgotCSMg Y2FsY3VsYXRpbmcgU0NSQU0gc2VjcmV0cy4KLQlteSAkc2Vzc2lvbiA9ICRub2RlLT5pbnRl cmFjdGl2ZV9wc3FsKCdwb3N0Z3JlcycpOwotCi0JJHNlc3Npb24tPnNldF9xdWVyeV90aW1l cl9yZXN0YXJ0KCk7Ci0JJHNlc3Npb24tPnF1ZXJ5KCJTRVQgcGFzc3dvcmRfZW5jcnlwdGlv bj0nc2NyYW0tc2hhLTI1Nic7Iik7Ci0JJHNlc3Npb24tPnF1ZXJ5KCJTRVQgc2NyYW1faXRl cmF0aW9ucz00MjsiKTsKLQkkc2Vzc2lvbi0+cXVlcnlfdW50aWwocXIvRW50ZXIgbmV3IHBh c3N3b3JkLywKLQkJIlxccGFzc3dvcmQgc2NyYW1fcm9sZV9pdGVyXG4iKTsKLQkkc2Vzc2lv bi0+cXVlcnlfdW50aWwocXIvRW50ZXIgaXQgYWdhaW4vLCAicGFzc1xuIik7Ci0JJHNlc3Np b24tPnF1ZXJ5X3VudGlsKHFyL3Bvc3RncmVzPSMgLywgInBhc3NcbiIpOwotCSRzZXNzaW9u LT5xdWl0OwotCi0JJHJlcyA9ICRub2RlLT5zYWZlX3BzcWwoCi0JCSdwb3N0Z3JlcycsCisk c2Vzc2lvbi0+ZG8oIlNFVCBwYXNzd29yZF9lbmNyeXB0aW9uPSdzY3JhbS1zaGEtMjU2Jzsi LAorCQkJICJTRVQgc2NyYW1faXRlcmF0aW9ucz00MjsiKTsKKyRyZXMgPSAkc2Vzc2lvbi0+ c2V0X3Bhc3N3b3JkKCJzY3JhbV9yb2xlX2l0ZXIiLCJwYXNzIik7CitpcygkcmVzLT57c3Rh dHVzfSwgMSwgInNldCBwYXNzd29yZCBvayIpOworJHJlcyA9ICRzZXNzaW9uLT5xdWVyeV9v bmV2YWwoCiAJCSJTRUxFQ1Qgc3Vic3RyKHJvbHBhc3N3b3JkLDEsMTcpCiAJCSBGUk9NIHBn X2F1dGhpZAogCQkgV0hFUkUgcm9sbmFtZSA9ICdzY3JhbV9yb2xlX2l0ZXInIik7Ci0JaXMo JHJlcywgJ1NDUkFNLVNIQS0yNTYkNDI6JywKLQkJJ3NjcmFtX2l0ZXJhdGlvbnMgaW4gcHNx bCBccGFzc3dvcmQgY29tbWFuZCcpOwotfQoraXMoJHJlcywgJ1NDUkFNLVNIQS0yNTYkNDI6 JywgJ3NjcmFtX2l0ZXJhdGlvbnMgY29ycmVjdCcpOwogCiAjIENyZWF0ZSBhIGRhdGFiYXNl IHRvIHRlc3QgcmVndWxhciBleHByZXNzaW9uLgogJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiQ1JFQVRFIGRhdGFiYXNlIHJlZ2V4X3Rlc3RkYjsiKTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L2F1dGhlbnRpY2F0aW9uL3QvMDA3X3ByZV9hdXRoLnBsIGIvc3JjL3Rlc3QvYXV0 aGVudGljYXRpb24vdC8wMDdfcHJlX2F1dGgucGwKaW5kZXggMDQwNjNmNDcyMWQuLjE3ZGU5 MmJjNDFhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9hdXRoZW50aWNhdGlvbi90LzAwN19wcmVf YXV0aC5wbAorKysgYi9zcmMvdGVzdC9hdXRoZW50aWNhdGlvbi90LzAwN19wcmVfYXV0aC5w bApAQCAtNyw2ICs3LDcgQEAgdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAn YWxsJzsKIAogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNR TDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBU aW1lOjpIaVJlcyBxdyh1c2xlZXApOwogdXNlIFRlc3Q6Ok1vcmU7CkBAIC0zNiwyNCArMzcs MjcgQEAgaWYgKCEkbm9kZS0+Y2hlY2tfZXh0ZW5zaW9uKCdpbmplY3Rpb25fcG9pbnRzJykp CiAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgRVhURU5TSU9OIGluamVj dGlvbl9wb2ludHMnKTsKIAogIyBDb25uZWN0IHRvIHRoZSBzZXJ2ZXIgYW5kIGluamVjdCBh IHdhaXRwb2ludC4KLW15ICRwc3FsID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdy ZXMnKTsKLSRwc3FsLT5xdWVyeV9zYWZlKCJTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRh Y2goJ2luaXQtcHJlLWF1dGgnLCAnd2FpdCcpIik7CitteSAkc2Vzc2lvbiA9IFBvc3RncmVT UUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRzZXNzaW9uLT5kbygi U0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdpbml0LXByZS1hdXRoJywgJ3dhaXQn KSIpOwogCiAjIEZyb20gdGhpcyBwb2ludCBvbiwgYWxsIG5ldyBjb25uZWN0aW9ucyB3aWxs IGhhbmcgZHVyaW5nIHN0YXJ0dXAsIGp1c3QgYmVmb3JlCi0jIGF1dGhlbnRpY2F0aW9uLiBV c2UgdGhlICRwc3FsIGNvbm5lY3Rpb24gaGFuZGxlIGZvciBzZXJ2ZXIgaW50ZXJhY3Rpb24u Ci1teSAkY29ubiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgd2FpdCA9 PiAwKTsKKyMgYXV0aGVudGljYXRpb24uIFVzZSB0aGUgJHNlc3Npb24gY29ubmVjdGlvbiBo YW5kbGUgZm9yIHNlcnZlciBpbnRlcmFjdGlvbi4KK215ICRjb25uID0gUG9zdGdyZVNRTDo6 VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUsIHdhaXQgPT4gMCk7CiAKICMgV2Fp dCBmb3IgdGhlIGNvbm5lY3Rpb24gdG8gc2hvdyB1cCBpbiBwZ19zdGF0X2FjdGl2aXR5LCB3 aXRoIHRoZSB3YWl0X2V2ZW50Ci0jIG9mIHRoZSBpbmplY3Rpb24gcG9pbnQuCisjIG9mIHRo ZSBpbmplY3Rpb24gcG9pbnQuIFdlIG5lZWQgdG8gcG9sbCB0aGUgYXN5bmMgY29ubmVjdGlv biB0byBkcml2ZSBpdCBmb3J3YXJkLgogbXkgJHBpZDsKIHdoaWxlICgxKQogewotCSRwaWQg PSAkcHNxbC0+cXVlcnkoCisJIyBEcml2ZSB0aGUgYXN5bmMgY29ubmVjdGlvbiBmb3J3YXJk IC0gaXQgd29uJ3QgcHJvZ3Jlc3Mgd2l0aG91dCBwb2xsaW5nCisJJGNvbm4tPnBvbGxfY29u bmVjdCgpOworCisJJHBpZCA9ICRzZXNzaW9uLT5xdWVyeV9vbmV2YWwoCiAJCXFxe1NFTEVD VCBwaWQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5CiAgIFdIRVJFIGJhY2tlbmRfdHlwZSA9ICdj bGllbnQgYmFja2VuZCcKICAgICBBTkQgc3RhdGUgPSAnc3RhcnRpbmcnCi0gICAgQU5EIHdh aXRfZXZlbnQgPSAnaW5pdC1wcmUtYXV0aCc7fSk7Ci0JbGFzdCBpZiAkcGlkIG5lICIiOwor ICAgIEFORCB3YWl0X2V2ZW50ID0gJ2luaXQtcHJlLWF1dGgnO30sIDEpOworCWxhc3QgaWYg ZGVmaW5lZCAkcGlkICYmICRwaWQgbmUgIiI7CiAKIAl1c2xlZXAoMTAwXzAwMCk7CiB9CkBA IC02MiwyNCArNjYsMjQgQEAgbm90ZSAiYmFja2VuZCAkcGlkIGlzIGF1dGhlbnRpY2F0aW5n IjsKIG9rKDEsICdhdXRoZW50aWNhdGluZyBjb25uZWN0aW9ucyBhcmUgcmVjb3JkZWQgaW4g cGdfc3RhdF9hY3Rpdml0eScpOwogCiAjIERldGFjaCB0aGUgd2FpdHBvaW50IGFuZCB3YWl0 IGZvciB0aGUgY29ubmVjdGlvbiB0byBjb21wbGV0ZS4KLSRwc3FsLT5xdWVyeV9zYWZlKCJT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2luaXQtcHJlLWF1dGgnKTsiKTsKKyRz ZXNzaW9uLT5kbygiU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdpbml0LXByZS1h dXRoJykiKTsKICRjb25uLT53YWl0X2Nvbm5lY3QoKTsKIAogIyBNYWtlIHN1cmUgdGhlIHBn c3RhdCBlbnRyeSBpcyB1cGRhdGVkIGV2ZW50dWFsbHkuCiB3aGlsZSAoMSkKIHsKIAlteSAk c3RhdGUgPQotCSAgJHBzcWwtPnF1ZXJ5KCJTRUxFQ1Qgc3RhdGUgRlJPTSBwZ19zdGF0X2Fj dGl2aXR5IFdIRVJFIHBpZCA9ICRwaWQ7Iik7Ci0JbGFzdCBpZiAkc3RhdGUgZXEgImlkbGUi OworCSAgJHNlc3Npb24tPnF1ZXJ5X29uZXZhbCgiU0VMRUNUIHN0YXRlIEZST00gcGdfc3Rh dF9hY3Rpdml0eSBXSEVSRSBwaWQgPSAkcGlkIik7CisJbGFzdCBpZiBkZWZpbmVkICRzdGF0 ZSAmJiAkc3RhdGUgZXEgImlkbGUiOwogCi0Jbm90ZSAic3RhdGUgZm9yIGJhY2tlbmQgJHBp ZCBpcyAnJHN0YXRlJzsgd2FpdGluZyBmb3IgJ2lkbGUnLi4uIjsKKwlub3RlICJzdGF0ZSBm b3IgYmFja2VuZCAkcGlkIGlzICciIC4gKCRzdGF0ZSAvLyAndW5kZWYnKSAuICInOyB3YWl0 aW5nIGZvciAnaWRsZScuLi4iOwogCXVzbGVlcCgxMDBfMDAwKTsKIH0KIAogb2soMSwgJ2F1 dGhlbnRpY2F0ZWQgY29ubmVjdGlvbnMgcmVhY2ggaWRsZSBzdGF0ZSBpbiBwZ19zdGF0X2Fj dGl2aXR5Jyk7CiAKLSRwc3FsLT5xdWVyeV9zYWZlKCJTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19kZXRhY2goJ2luaXQtcHJlLWF1dGgnKTsiKTsKLSRwc3FsLT5xdWl0KCk7Ci0kY29ubi0+ cXVpdCgpOworJHNlc3Npb24tPmRvKCJTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2go J2luaXQtcHJlLWF1dGgnKSIpOworJHNlc3Npb24tPmNsb3NlKCk7CiskY29ubi0+Y2xvc2Uo KTsKIAogZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL29h dXRoX3ZhbGlkYXRvci90LzAwMV9zZXJ2ZXIucGwgYi9zcmMvdGVzdC9tb2R1bGVzL29hdXRo X3ZhbGlkYXRvci90LzAwMV9zZXJ2ZXIucGwKaW5kZXggMTYxOWZiZmZkNDUuLjNkNGViMWJm ZTMwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci90LzAw MV9zZXJ2ZXIucGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvdC8w MDFfc2VydmVyLnBsCkBAIC0xMiw2ICsxMiw3IEBAIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAn YWxsJzsKIHVzZSBKU09OOjpQUCAgICAgcXcoZW5jb2RlX2pzb24pOwogdXNlIE1JTUU6OkJh c2U2NCBxdyhlbmNvZGVfYmFzZTY0KTsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVz dDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIApAQCAtNTcsNyArNTgsNyBAQCAkbm9kZS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgVVNFUiB0ZXN0YWx0OycpOwogJG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQ1JFQVRFIFVTRVIgdGVzdHBhcmFtOycpOwogCiAj IFNhdmUgYSBiYWNrZ3JvdW5kIGNvbm5lY3Rpb24gZm9yIGxhdGVyIGNvbmZpZ3VyYXRpb24g Y2hhbmdlcy4KLW15ICRiZ2Nvbm4gPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jl cycpOworbXkgJGJnY29ubiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2Rl ID0+ICRub2RlKTsKIAogbXkgJHdlYnNlcnZlciA9IE9BdXRoOjpTZXJ2ZXItPm5ldygpOwog JHdlYnNlcnZlci0+cnVuKCk7CkBAIC0xMjQsMTEgKzEyNSwxMSBAQCAkbG9nX3N0YXJ0ID0K ICAgJG5vZGUtPndhaXRfZm9yX2xvZyhxci9yZWxvYWRpbmcgY29uZmlndXJhdGlvbiBmaWxl cy8sICRsb2dfc3RhcnQpOwogCiAjIENoZWNrIHBnX2hiYV9maWxlX3J1bGVzKCkgc3VwcG9y dC4KLW15ICRjb250ZW50cyA9ICRiZ2Nvbm4tPnF1ZXJ5X3NhZmUoCitteSAkY29udGVudHMg PSAkYmdjb25uLT5xdWVyeSgKIAlxcShTRUxFQ1QgcnVsZV9udW1iZXIsIGF1dGhfbWV0aG9k LCBvcHRpb25zCiAJCSBGUk9NIHBnX2hiYV9maWxlX3J1bGVzCiAJCSBPUkRFUiBCWSBydWxl X251bWJlcjspKTsKLWlzKCAkY29udGVudHMsCitpcyggJGNvbnRlbnRzLT57cHNxbG91dH0s CiAJcXF7MXxvYXV0aHxce2lzc3Vlcj0kaXNzdWVyLCJzY29wZT1vcGVuaWQgcG9zdGdyZXMi LHZhbGlkYXRvcj12YWxpZGF0b3JcfQogMnxvYXV0aHxce2lzc3Vlcj0kaXNzdWVyLy53ZWxs LWtub3duL29hdXRoLWF1dGhvcml6YXRpb24tc2VydmVyL2FsdGVybmF0ZSwic2NvcGU9b3Bl bmlkIHBvc3RncmVzIGFsdCIsdmFsaWRhdG9yPXZhbGlkYXRvclx9CiAzfG9hdXRofFx7aXNz dWVyPSRpc3N1ZXIvcGFyYW0sInNjb3BlPW9wZW5pZCBwb3N0Z3JlcyIsdmFsaWRhdG9yPXZh bGlkYXRvclx9fSwKQEAgLTU1MSw3ICs1NTIsNyBAQCAkY29tbW9uX2Nvbm5zdHIgPQogICAi ZGJuYW1lPXBvc3RncmVzIG9hdXRoX2lzc3Vlcj0kaXNzdWVyLy53ZWxsLWtub3duL29wZW5p ZC1jb25maWd1cmF0aW9uIG9hdXRoX3Njb3BlPScnIG9hdXRoX2NsaWVudF9pZD1mMDJjNjM2 MS0wNjM1IjsKIAogIyBNaXNiZWhhdmluZyB2YWxpZGF0b3JzIG11c3QgZmFpbCBzaHV0Lgot JGJnY29ubi0+cXVlcnlfc2FmZSgiQUxURVIgU1lTVEVNIFNFVCBvYXV0aF92YWxpZGF0b3Iu YXV0aG5faWQgVE8gJyciKTsKKyRiZ2Nvbm4tPmRvKCJBTFRFUiBTWVNURU0gU0VUIG9hdXRo X3ZhbGlkYXRvci5hdXRobl9pZCBUTyAnJyIpOwogJG5vZGUtPnJlbG9hZDsKICRsb2dfc3Rh cnQgPQogICAkbm9kZS0+d2FpdF9mb3JfbG9nKHFyL3JlbG9hZGluZyBjb25maWd1cmF0aW9u IGZpbGVzLywgJGxvZ19zdGFydCk7CkBAIC01NjIsMTUgKzU2MywxNSBAQCAkbm9kZS0+Y29u bmVjdF9mYWlscygKIAlleHBlY3RlZF9zdGRlcnIgPT4gcXIvT0F1dGggYmVhcmVyIGF1dGhl bnRpY2F0aW9uIGZhaWxlZC8sCiAJbG9nX2xpa2UgPT4gWwogCQlxci9jb25uZWN0aW9uIGF1 dGhlbnRpY2F0ZWQ6IGlkZW50aXR5PSIiLywKLQkJcXIvRkFUQUw6XHMrT0F1dGggYmVhcmVy IGF1dGhlbnRpY2F0aW9uIGZhaWxlZC8sCisJCXFyL0ZBVEFMOiAoIFtBLVowLTldKzopPyBP QXV0aCBiZWFyZXIgYXV0aGVudGljYXRpb24gZmFpbGVkLywKIAkJcXIvREVUQUlMOlxzK1Zh bGlkYXRvciBwcm92aWRlZCBubyBpZGVudGl0eS8sCiAJXSk7CiAKICMgRXZlbiBpZiBhIHZh bGlkYXRvciBhdXRoZW50aWNhdGVzIHRoZSB1c2VyLCBpZiB0aGUgdG9rZW4gaXNuJ3QgY29u c2lkZXJlZAogIyB2YWxpZCwgdGhlIGNvbm5lY3Rpb24gZmFpbHMuCi0kYmdjb25uLT5xdWVy eV9zYWZlKAorJGJnY29ubi0+ZG8oCiAJIkFMVEVSIFNZU1RFTSBTRVQgb2F1dGhfdmFsaWRh dG9yLmF1dGhuX2lkIFRPICd0ZXN0XEBleGFtcGxlLm9yZyciKTsKLSRiZ2Nvbm4tPnF1ZXJ5 X3NhZmUoCiskYmdjb25uLT5kbygKIAkiQUxURVIgU1lTVEVNIFNFVCBvYXV0aF92YWxpZGF0 b3IuYXV0aG9yaXplX3Rva2VucyBUTyBmYWxzZSIpOwogJG5vZGUtPnJlbG9hZDsKICRsb2df c3RhcnQgPQpAQCAtNTgyLDcgKzU4Myw3IEBAICRub2RlLT5jb25uZWN0X2ZhaWxzKAogCWV4 cGVjdGVkX3N0ZGVyciA9PiBxci9PQXV0aCBiZWFyZXIgYXV0aGVudGljYXRpb24gZmFpbGVk LywKIAlsb2dfbGlrZSA9PiBbCiAJCXFyL2Nvbm5lY3Rpb24gYXV0aGVudGljYXRlZDogaWRl bnRpdHk9InRlc3RcQGV4YW1wbGVcLm9yZyIvLAotCQlxci9GQVRBTDpccytPQXV0aCBiZWFy ZXIgYXV0aGVudGljYXRpb24gZmFpbGVkLywKKwkJcXIvRkFUQUw6ICggW0EtWjAtOV0rOik/ IE9BdXRoIGJlYXJlciBhdXRoZW50aWNhdGlvbiBmYWlsZWQvLAogCQlxci9ERVRBSUw6XHMr VmFsaWRhdG9yIGZhaWxlZCB0byBhdXRob3JpemUgdGhlIHByb3ZpZGVkIHRva2VuLywKIAld KTsKIApAQCAtNjY0LDggKzY2NSw4IEBAIGxvY2FsIGFsbCB0ZXN0cGFyYW0gb2F1dGggaXNz dWVyPSIkaXNzdWVyIiBzY29wZT0iIiBkZWxlZ2F0ZV9pZGVudF9tYXBwaW5nPTEKIH0pOwog CiAjIFRvIHN0YXJ0LCBoYXZlIHRoZSB2YWxpZGF0b3IgdXNlIHRoZSByb2xlIG5hbWVzIGFz IGF1dGhuIElEcy4KLSRiZ2Nvbm4tPnF1ZXJ5X3NhZmUoIkFMVEVSIFNZU1RFTSBSRVNFVCBv YXV0aF92YWxpZGF0b3IuYXV0aG5faWQiKTsKLSRiZ2Nvbm4tPnF1ZXJ5X3NhZmUoIkFMVEVS IFNZU1RFTSBSRVNFVCBvYXV0aF92YWxpZGF0b3IuYXV0aG9yaXplX3Rva2VucyIpOworJGJn Y29ubi0+ZG8oIkFMVEVSIFNZU1RFTSBSRVNFVCBvYXV0aF92YWxpZGF0b3IuYXV0aG5faWQi KTsKKyRiZ2Nvbm4tPmRvKCJBTFRFUiBTWVNURU0gUkVTRVQgb2F1dGhfdmFsaWRhdG9yLmF1 dGhvcml6ZV90b2tlbnMiKTsKIAogJG5vZGUtPnJlbG9hZDsKICRsb2dfc3RhcnQgPQpAQCAt NjgyLDcgKzY4Myw3IEBAICRub2RlLT5jb25uZWN0X2ZhaWxzKAogCWV4cGVjdGVkX3N0ZGVy ciA9PiBxci9PQXV0aCBiZWFyZXIgYXV0aGVudGljYXRpb24gZmFpbGVkLyk7CiAKICMgSGF2 ZSB0aGUgdmFsaWRhdG9yIGlkZW50aWZ5IHRoZSBlbmQgdXNlciBhcyB1c2VyQGV4YW1wbGUu Y29tLgotJGJnY29ubi0+cXVlcnlfc2FmZSgKKyRiZ2Nvbm4tPmRvKAogCSJBTFRFUiBTWVNU RU0gU0VUIG9hdXRoX3ZhbGlkYXRvci5hdXRobl9pZCBUTyAndXNlclxAZXhhbXBsZS5jb20n Iik7CiAkbm9kZS0+cmVsb2FkOwogJGxvZ19zdGFydCA9CkBAIC03MDYsNyArNzA3LDcgQEAg JG5vZGUtPmNvbm5lY3Rfb2soCiAJZXhwZWN0ZWRfc3RkZXJyID0+CiAJICBxckBWaXNpdCBo dHRwczovL2V4YW1wbGVcLmNvbS8gYW5kIGVudGVyIHRoZSBjb2RlOiBwb3N0Z3Jlc3VzZXJA KTsKIAotJGJnY29ubi0+cXVlcnlfc2FmZSgiQUxURVIgU1lTVEVNIFJFU0VUIG9hdXRoX3Zh bGlkYXRvci5hdXRobl9pZCIpOworJGJnY29ubi0+ZG8oIkFMVEVSIFNZU1RFTSBSRVNFVCBv YXV0aF92YWxpZGF0b3IuYXV0aG5faWQiKTsKICRub2RlLT5yZWxvYWQ7CiAkbG9nX3N0YXJ0 ID0KICAgJG5vZGUtPndhaXRfZm9yX2xvZyhxci9yZWxvYWRpbmcgY29uZmlndXJhdGlvbiBm aWxlcy8sICRsb2dfc3RhcnQpOwpAQCAtODI5LDcgKzgzMCw3IEBAICR1c2VyID0gInRlc3Rh bHQiOwogJG5vZGUtPmNvbm5lY3RfZmFpbHMoCiAJInVzZXI9JHVzZXIgZGJuYW1lPXBvc3Rn cmVzIG9hdXRoX2lzc3Vlcj0kaXNzdWVyLy53ZWxsLWtub3duL29hdXRoLWF1dGhvcml6YXRp b24tc2VydmVyL2FsdGVybmF0ZSBvYXV0aF9jbGllbnRfaWQ9ZjAyYzYzNjEtMDYzNiIsCiAJ ImZhaWxfdmFsaWRhdG9yIGlzIHVzZWQgZm9yICR1c2VyIiwKLQlleHBlY3RlZF9zdGRlcnIg PT4gcXIvRkFUQUw6XHMrZmFpbF92YWxpZGF0b3I6IHNlbnRpbmVsIGVycm9yLyk7CisJZXhw ZWN0ZWRfc3RkZXJyID0+IHFyL0ZBVEFMOiAoIFtBLVowLTldKzopPyBmYWlsX3ZhbGlkYXRv cjogc2VudGluZWwgZXJyb3IvKTsKIAogIwogIyBUZXN0IEFCSSBjb21wYXRpYmlsaXR5IG1h Z2ljIG1hcmtlcgpAQCAtODQ5LDcgKzg1MCw3IEBAICRub2RlLT5jb25uZWN0X2ZhaWxzKAog CSJ1c2VyPXRlc3QgZGJuYW1lPXBvc3RncmVzIG9hdXRoX2lzc3Vlcj0kaXNzdWVyLy53ZWxs LWtub3duL29hdXRoLWF1dGhvcml6YXRpb24tc2VydmVyL2FsdGVybmF0ZSBvYXV0aF9jbGll bnRfaWQ9ZjAyYzYzNjEtMDYzNiIsCiAJIm1hZ2ljX3ZhbGlkYXRvciBpcyB1c2VkIGZvciAk dXNlciIsCiAJZXhwZWN0ZWRfc3RkZXJyID0+Ci0JICBxci9GQVRBTDpccytPQXV0aCB2YWxp ZGF0b3IgbW9kdWxlICJtYWdpY192YWxpZGF0b3IiOiBtYWdpYyBudW1iZXIgbWlzbWF0Y2gv CisJICBxci9GQVRBTDogKCBbQS1aMC05XSs6KT8gT0F1dGggdmFsaWRhdG9yIG1vZHVsZSAi bWFnaWNfdmFsaWRhdG9yIjogbWFnaWMgbnVtYmVyIG1pc21hdGNoLwogKTsKICRub2RlLT5z dG9wOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYWlvL3QvMDAxX2Fp by5wbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9haW8vdC8wMDFfYWlvLnBsCmluZGV4IDYz Y2FkZDY0YzE1Li5iZjk0NjgwMTYwMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2Fpby90LzAwMV9haW8ucGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Fpby90 LzAwMV9haW8ucGwKQEAgLTQsNiArNCw3IEBAIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3Mg RkFUQUwgPT4gJ2FsbCc7CiAKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNl IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRp bHM7CiB1c2UgVGVzdDo6TW9yZTsKIApAQCAtNjIsMTkgKzYzLDE5IEBAIHN1YiBwc3FsX2xp a2UKIHsKIAlsb2NhbCAkVGVzdDo6QnVpbGRlcjo6TGV2ZWwgPSAkVGVzdDo6QnVpbGRlcjo6 TGV2ZWwgKyAxOwogCW15ICRpb19tZXRob2QgPSBzaGlmdDsKLQlteSAkcHNxbCA9IHNoaWZ0 OworCW15ICRzZXNzaW9uID0gc2hpZnQ7CiAJbXkgJG5hbWUgPSBzaGlmdDsKIAlteSAkc3Fs ID0gc2hpZnQ7CiAJbXkgJGV4cGVjdGVkX3N0ZG91dCA9IHNoaWZ0OwogCW15ICRleHBlY3Rl ZF9zdGRlcnIgPSBzaGlmdDsKLQlteSAoJGNtZHJldCwgJG91dHB1dCk7CiAKLQkoJG91dHB1 dCwgJGNtZHJldCkgPSAkcHNxbC0+cXVlcnkoJHNxbCk7CisJbXkgJHJlcyA9ICRzZXNzaW9u LT5xdWVyeSgkc3FsKTsKKwlteSAkb3V0cHV0ID0gJHJlcy0+e3BzcWxvdXR9OwogCiAJbGlr ZSgkb3V0cHV0LCAkZXhwZWN0ZWRfc3Rkb3V0LCAiJGlvX21ldGhvZDogJG5hbWU6IGV4cGVj dGVkIHN0ZG91dCIpOwotCWxpa2UoJHBzcWwtPntzdGRlcnJ9LCAkZXhwZWN0ZWRfc3RkZXJy LAorCWxpa2UoJHNlc3Npb24tPmdldF9zdGRlcnIoKSwgJGV4cGVjdGVkX3N0ZGVyciwKIAkJ IiRpb19tZXRob2Q6ICRuYW1lOiBleHBlY3RlZCBzdGRlcnIiKTsKLQkkcHNxbC0+e3N0ZGVy cn0gPSAnJzsKKwkkc2Vzc2lvbi0+Y2xlYXJfc3RkZXJyKCk7CiAKIAlyZXR1cm4gJG91dHB1 dDsKIH0KQEAgLTg3LDE3ICs4OCwxNSBAQCBzdWIgcXVlcnlfd2FpdF9ibG9jawogCWxvY2Fs ICRUZXN0OjpCdWlsZGVyOjpMZXZlbCA9ICRUZXN0OjpCdWlsZGVyOjpMZXZlbCArIDE7CiAJ bXkgJGlvX21ldGhvZCA9IHNoaWZ0OwogCW15ICRub2RlID0gc2hpZnQ7Ci0JbXkgJHBzcWwg PSBzaGlmdDsKKwlteSAkc2Vzc2lvbiA9IHNoaWZ0OwogCW15ICRuYW1lID0gc2hpZnQ7CiAJ bXkgJHNxbCA9IHNoaWZ0OwogCW15ICR3YWl0Zm9yID0gc2hpZnQ7CiAJbXkgJHdhaXRfY3Vy cmVudF9zZXNzaW9uID0gc2hpZnQ7CiAKLQlteSAkcGlkID0gJHBzcWwtPnF1ZXJ5X3NhZmUo J1NFTEVDVCBwZ19iYWNrZW5kX3BpZCgpJyk7CisJbXkgJHBpZCA9ICRzZXNzaW9uLT5iYWNr ZW5kX3BpZCgpOwogCi0JJHBzcWwtPntzdGRpbn0gLj0gcXEoJHNxbDtcbik7Ci0JJHBzcWwt PntydW59LT5wdW1wX25iKCk7Ci0Jbm90ZSAiaXNzdWVkIHNxbDogJHNxbDtcbiI7CisJJHNl c3Npb24tPmRvX2FzeW5jKCRzcWwpOwogCW9rKDEsICIkaW9fbWV0aG9kOiAkbmFtZTogaXNz dWVkIHNxbCIpOwogCiAJbXkgJHdhaXRxdWVyeTsKQEAgLTE2Myw3ICsxNjIsNyBAQCBzdWIg dGVzdF9oYW5kbGUKIAlteSAkaW9fbWV0aG9kID0gc2hpZnQ7CiAJbXkgJG5vZGUgPSBzaGlm dDsKIAotCW15ICRwc3FsID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBv bl9lcnJvcl9zdG9wID0+IDApOworCW15ICRwc3FsID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vz c2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCiAJIyBsZWFrIHdhcm5pbmc6IGltcGxpY2l0 IHhhY3QKIAlwc3FsX2xpa2UoCkBAIC0yNjksNyArMjY4LDcgQEAgc3ViIHRlc3RfYmF0Y2ht b2RlCiAJbXkgJGlvX21ldGhvZCA9IHNoaWZ0OwogCW15ICRub2RlID0gc2hpZnQ7CiAKLQlt eSAkcHNxbCA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jf c3RvcCA9PiAwKTsKKwlteSAkcHNxbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5l dyhub2RlID0+ICRub2RlKTsKIAogCSMgSW4gYSBidWlsZCB3aXRoIFJFTENBQ0hFX0ZPUkNF X1JFTEVBU0UgYW5kIENBVENBQ0hFX0ZPUkNFX1JFTEVBU0UsIGp1c3QKIAkjIHVzaW5nIFNF TEVDVCBiYXRjaF9zdGFydCgpIGNhdXNlcyBzcHVyaW91cyB0ZXN0IGZhaWx1cmVzLCBiZWNh dXNlIHRoZQpAQCAtMzI5LDcgKzMyOCw3IEBAIHN1YiB0ZXN0X2lvX2Vycm9yCiAJbXkgJG5v ZGUgPSBzaGlmdDsKIAlteSAoJHJldCwgJG91dHB1dCk7CiAKLQlteSAkcHNxbCA9ICRub2Rl LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlt eSAkcHNxbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2Rl KTsKIAogCSRwc3FsLT5xdWVyeV9zYWZlKAogCQlxcSgKQEAgLTM4MSw4ICszODAsOCBAQCBz dWIgdGVzdF9zdGFydHdhaXRfaW8KIAlteSAkbm9kZSA9IHNoaWZ0OwogCW15ICgkcmV0LCAk b3V0cHV0KTsKIAotCW15ICRwc3FsX2EgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0 Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0JbXkgJHBzcWxfYiA9ICRub2RlLT5iYWNr Z3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlteSAkcHNx bF9hID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwor CW15ICRwc3FsX2IgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAk bm9kZSk7CiAKIAogCSMjIyBWZXJpZnkgYmVoYXZpb3IgZm9yIG5vcm1hbCB0YWJsZXMKQEAg LTQ0MSw3ICs0NDAsNyBAQCBzdWIgdGVzdF9zdGFydHdhaXRfaW8KIAogCiAJIyBCZWNhdXNl IHRoZSBJTyB3YXMgdGVybWluYXRlZCwgYnV0IG5vdCBtYXJrZWQgYXMgdmFsaWQsIHNlY29u ZCBzZXNzaW9uIHNob3VsZCBnZXQgdGhlIHJpZ2h0IHRvIHN0YXJ0IGlvCi0JcHVtcF91bnRp bCgkcHNxbF9iLT57cnVufSwgJHBzcWxfYi0+e3RpbWVvdXR9LCBcJHBzcWxfYi0+e3N0ZG91 dH0sIHFyL3QvKTsKKwkkcHNxbF9iLT53YWl0X2Zvcl9hc3luY19wYXR0ZXJuKHFyL3QvKTsK IAlvaygxLCAiJGlvX21ldGhvZDogYmxvY2tpbmcgc3RhcnQgYnVmZmVyIGlvLCBjYW4gc3Rh cnQgaW8iKTsKIAogCSMgdGVybWluYXRlIHRoZSBJTyBhZ2FpbgpAQCAtNDc5LDcgKzQ3OCw3 IEBAIHN1YiB0ZXN0X3N0YXJ0d2FpdF9pbwogCQlxci9eJC8pOwogCiAJIyBCZWNhdXNlIHRo ZSBJTyB3YXMgdGVybWluYXRlZCwgYW5kIG1hcmtlZCBhcyB2YWxpZCwgc2Vjb25kIHNlc3Np b24gc2hvdWxkIGNvbXBsZXRlIGJ1dCBub3QgbmVlZCBpbwotCXB1bXBfdW50aWwoJHBzcWxf Yi0+e3J1bn0sICRwc3FsX2ItPnt0aW1lb3V0fSwgXCRwc3FsX2ItPntzdGRvdXR9LCBxci9m Lyk7CisJJHBzcWxfYi0+d2FpdF9mb3JfYXN5bmNfcGF0dGVybihxci9mLyk7CiAJb2soMSwg IiRpb19tZXRob2Q6IGJsb2NraW5nIHN0YXJ0IGJ1ZmZlciBpbywgbm8gbmVlZCB0byBzdGFy dCBpbyIpOwogCiAJIyBidWZmZXIgaXMgdmFsaWQgbm93LCBtYWtlIGl0IGludmFsaWQgYWdh aW4KQEAgLTU1OCw4ICs1NTcsOCBAQCBzdWIgdGVzdF9jb21wbGV0ZV9mb3JlaWduCiAJbXkg JG5vZGUgPSBzaGlmdDsKIAlteSAoJHJldCwgJG91dHB1dCk7CiAKLQlteSAkcHNxbF9hID0g JG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDAp OwotCW15ICRwc3FsX2IgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9u X2Vycm9yX3N0b3AgPT4gMCk7CisJbXkgJHBzcWxfYSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNl c3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKwlteSAkcHNxbF9iID0gUG9zdGdyZVNRTDo6 VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCiAJIyBJc3N1ZSBJTyB3aXRo b3V0IHdhaXRpbmcgZm9yIGNvbXBsZXRpb24sIHRoZW4gc2xlZXAKIAkkcHNxbF9hLT5xdWVy eV9zYWZlKApAQCAtNjI4LDcgKzYyNyw3IEBAIHN1YiB0ZXN0X2Nsb3NlX2ZkCiAJbXkgJG5v ZGUgPSBzaGlmdDsKIAlteSAoJHJldCwgJG91dHB1dCk7CiAKLQlteSAkcHNxbCA9ICRub2Rl LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlt eSAkcHNxbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2Rl KTsKIAogCXBzcWxfbGlrZSgKIAkJJGlvX21ldGhvZCwKQEAgLTY3OCw3ICs2NzcsNyBAQCBz dWIgdGVzdF9pbmplY3QKIAlteSAkbm9kZSA9IHNoaWZ0OwogCW15ICgkcmV0LCAkb3V0cHV0 KTsKIAotCW15ICRwc3FsID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBv bl9lcnJvcl9zdG9wID0+IDApOworCW15ICRwc3FsID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vz c2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCiAJIyBpbmplY3RlZCB3aGF0IHdlJ2QgZXhw ZWN0CiAJJHBzcWwtPnF1ZXJ5X3NhZmUocXEoU0VMRUNUIGlual9pb19zaG9ydF9yZWFkX2F0 dGFjaCg4MTkyKTspKTsKQEAgLTgxMiw3ICs4MTEsNyBAQCBzdWIgdGVzdF9pbmplY3Rfd29y a2VyCiAJbXkgJG5vZGUgPSBzaGlmdDsKIAlteSAoJHJldCwgJG91dHB1dCk7CiAKLQlteSAk cHNxbCA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3Rv cCA9PiAwKTsKKwlteSAkcHNxbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhu b2RlID0+ICRub2RlKTsKIAogCSMgdHJpZ2dlciBhIGZhaWx1cmUgdG8gcmVvcGVuLCBzaG91 bGQgZXJyb3Igb3V0LCBidXQgc2hvdWxkIHJlY292ZXIKIAkkcHNxbC0+cXVlcnlfc2FmZSgK QEAgLTg0OSw3ICs4NDgsNyBAQCBzdWIgdGVzdF9pbnZhbGlkYXRlCiAJbXkgJGlvX21ldGhv ZCA9IHNoaWZ0OwogCW15ICRub2RlID0gc2hpZnQ7CiAKLQlteSAkcHNxbCA9ICRub2RlLT5i YWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlteSAk cHNxbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsK IAogCWZvcmVhY2ggbXkgJHBlcnNpc3RlbmN5IChxdyhub3JtYWwgdW5sb2dnZWQgdGVtcG9y YXJ5KSkKIAl7CkBAIC05MDcsOCArOTA2LDggQEAgc3ViIHRlc3RfemVybwogCW15ICRpb19t ZXRob2QgPSBzaGlmdDsKIAlteSAkbm9kZSA9IHNoaWZ0OwogCi0JbXkgJHBzcWxfYSA9ICRu b2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsK LQlteSAkcHNxbF9iID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9l cnJvcl9zdG9wID0+IDApOworCW15ICRwc3FsX2EgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNz aW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CisJbXkgJHBzcWxfYiA9IFBvc3RncmVTUUw6OlRl c3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKIAogCWZvcmVhY2ggbXkgJHBlcnNp c3RlbmN5IChxdyhub3JtYWwgdGVtcG9yYXJ5KSkKIAl7CkBAIC05MzMsNyArOTMyLDcgQEAg U0VMRUNUIG1vZGlmeV9yZWxfYmxvY2soJ3RibF96ZXJvJywgMCwgY29ycnVwdF9oZWFkZXI9 PnRydWUpOwogCQkJcXEoCiBTRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF96ZXJvJywg MCwgemVyb19vbl9lcnJvcj0+ZmFsc2UpKSwKIAkJCXFyL14kLywKLQkJCXFyL15wc3FsOjxz dGRpbj46XGQrOiBFUlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9jayAwIG9mIHJlbGF0aW9u ICJiYXNlXC8uKlwvLiokLworCQkJcXIvXig/OnBzcWw6PHN0ZGluPjpcZCs6ICk/RVJST1I6 ICBpbnZhbGlkIHBhZ2UgaW4gYmxvY2sgMCBvZiByZWxhdGlvbiAiYmFzZVwvLipcLy4qJC8K IAkJKTsKIAogCQkjIENoZWNrIHRoYXQgcGFnZSB2YWxpZGl0eSBlcnJvcnMgYXJlIHplcm9l ZApAQCAtOTQ0LDcgKzk0Myw3IEBAIFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgndGJsX3pl cm8nLCAwLCB6ZXJvX29uX2Vycm9yPT5mYWxzZSkpLAogCQkJcXEoCiBTRUxFQ1QgcmVhZF9y ZWxfYmxvY2tfbGwoJ3RibF96ZXJvJywgMCwgemVyb19vbl9lcnJvcj0+dHJ1ZSkpLAogCQkJ cXIvXiQvLAotCQkJcXIvXnBzcWw6PHN0ZGluPjpcZCs6IFdBUk5JTkc6ICBpbnZhbGlkIHBh Z2UgaW4gYmxvY2sgMCBvZiByZWxhdGlvbiAiYmFzZVwvLipcLy4qIjsgemVyb2luZyBvdXQg cGFnZSQvCisJCQlxci9eKD86cHNxbDo8c3RkaW4+OlxkKzogKT9XQVJOSU5HOiAgaW52YWxp ZCBwYWdlIGluIGJsb2NrIDAgb2YgcmVsYXRpb24gImJhc2VcLy4qXC8uKiI7IHplcm9pbmcg b3V0IHBhZ2UkLwogCQkpOwogCiAJCSMgQW5kIHRoYXQgb25jZSB0aGUgY29ycnVwdGlvbiBp cyBmaXhlZCwgd2UgY2FuIHJlYWQgYWdhaW4KQEAgLTk1Miw3ICs5NTEsNyBAQCBTRUxFQ1Qg cmVhZF9yZWxfYmxvY2tfbGwoJ3RibF96ZXJvJywgMCwgemVyb19vbl9lcnJvcj0+dHJ1ZSkp LAogCQkJcXEoCiBTRUxFQ1QgbW9kaWZ5X3JlbF9ibG9jaygndGJsX3plcm8nLCAwLCB6ZXJv PT50cnVlKTsKICkpOwotCQkkcHNxbF9hLT57c3RkZXJyfSA9ICcnOworCQkkcHNxbF9hLT5j bGVhcl9zdGRlcnIoKTsKIAogCQlwc3FsX2xpa2UoCiAJCQkkaW9fbWV0aG9kLApAQCAtOTc1 LDcgKzk3NCw3IEBAIFNFTEVDVCBtb2RpZnlfcmVsX2Jsb2NrKCd0YmxfemVybycsIDMsIGNv cnJ1cHRfaGVhZGVyPT50cnVlKTsKIAkJCSIkcGVyc2lzdGVuY3k6IHRlc3QgemVyb2luZyBv ZiBpbnZhbGlkIGJsb2NrIDMiLAogCQkJcXEoU0VMRUNUIHJlYWRfcmVsX2Jsb2NrX2xsKCd0 YmxfemVybycsIDMsIHplcm9fb25fZXJyb3I9PnRydWUpOyksCiAJCQlxci9eJC8sCi0JCQlx ci9ecHNxbDo8c3RkaW4+OlxkKzogV0FSTklORzogIGludmFsaWQgcGFnZSBpbiBibG9jayAz IG9mIHJlbGF0aW9uICJiYXNlXC8uKlwvLioiOyB6ZXJvaW5nIG91dCBwYWdlJC8KKwkJCXFy L14oPzpwc3FsOjxzdGRpbj46XGQrOiApP1dBUk5JTkc6ICBpbnZhbGlkIHBhZ2UgaW4gYmxv Y2sgMyBvZiByZWxhdGlvbiAiYmFzZVwvLipcLy4qIjsgemVyb2luZyBvdXQgcGFnZSQvCiAJ CSk7CiAKIApAQCAtOTkyLDcgKzk5MSw3IEBAIFNFTEVDVCBtb2RpZnlfcmVsX2Jsb2NrKCd0 YmxfemVybycsIDMsIGNvcnJ1cHRfaGVhZGVyPT50cnVlKTsKIAkJCSIkcGVyc2lzdGVuY3k6 IHRlc3QgcmVhZGluZyBvZiBpbnZhbGlkIGJsb2NrIDIsMyBpbiBsYXJnZXIgcmVhZCIsCiAJ CQlxcShTRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF96ZXJvJywgMSwgbmJsb2Nrcz0+ NCwgemVyb19vbl9lcnJvcj0+ZmFsc2UpKSwKIAkJCXFyL14kLywKLQkJCXFyL15wc3FsOjxz dGRpbj46XGQrOiBFUlJPUjogIDIgaW52YWxpZCBwYWdlcyBhbW9uZyBibG9ja3MgMS4uNCBv ZiByZWxhdGlvbiAiYmFzZVwvLipcLy4qXG5ERVRBSUw6ICBCbG9jayAyIGhlbGQgdGhlIGZp cnN0IGludmFsaWQgcGFnZVwuXG5ISU5UOlteXG5dKyQvCisJCQlxci9eKD86cHNxbDo8c3Rk aW4+OlxkKzogKT9FUlJPUjogIDIgaW52YWxpZCBwYWdlcyBhbW9uZyBibG9ja3MgMS4uNCBv ZiByZWxhdGlvbiAiYmFzZVwvLipcLy4qXG5ERVRBSUw6ICBCbG9jayAyIGhlbGQgdGhlIGZp cnN0IGludmFsaWQgcGFnZVwuXG5ISU5UOlteXG5dKyQvCiAJCSk7CiAKIAkJIyBUaGVuIHRl c3QgemVyb2luZyB2aWEgWkVST19PTl9FUlJPUiBmbGFnCkBAIC0xMDAyLDcgKzEwMDEsNyBA QCBTRUxFQ1QgbW9kaWZ5X3JlbF9ibG9jaygndGJsX3plcm8nLCAzLCBjb3JydXB0X2hlYWRl cj0+dHJ1ZSk7CiAJCQkiJHBlcnNpc3RlbmN5OiB0ZXN0IHplcm9pbmcgb2YgaW52YWxpZCBi bG9jayAyLDMgaW4gbGFyZ2VyIHJlYWQsIFpFUk9fT05fRVJST1IiLAogCQkJcXEoU0VMRUNU IHJlYWRfcmVsX2Jsb2NrX2xsKCd0YmxfemVybycsIDEsIG5ibG9ja3M9PjQsIHplcm9fb25f ZXJyb3I9PnRydWUpKSwKIAkJCXFyL14kLywKLQkJCXFyL15wc3FsOjxzdGRpbj46XGQrOiBX QVJOSU5HOiAgemVyb2luZyBvdXQgMiBpbnZhbGlkIHBhZ2VzIGFtb25nIGJsb2NrcyAxLi40 IG9mIHJlbGF0aW9uICJiYXNlXC8uKlwvLipcbkRFVEFJTDogIEJsb2NrIDIgaGVsZCB0aGUg Zmlyc3QgemVyb2VkIHBhZ2VcLlxuSElOVDpbXlxuXSskLworCQkJcXIvXig/OnBzcWw6PHN0 ZGluPjpcZCs6ICk/V0FSTklORzogIHplcm9pbmcgb3V0IDIgaW52YWxpZCBwYWdlcyBhbW9u ZyBibG9ja3MgMS4uNCBvZiByZWxhdGlvbiAiYmFzZVwvLipcLy4qXG5ERVRBSUw6ICBCbG9j ayAyIGhlbGQgdGhlIGZpcnN0IHplcm9lZCBwYWdlXC5cbkhJTlQ6W15cbl0rJC8KIAkJKTsK IAogCQkjIFRoZW4gdGVzdCB6ZXJvaW5nIHZpYSB6ZXJvX2RhbWFnZWRfcGFnZXMKQEAgLTEw MTcsNyArMTAxNiw3IEBAIFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgndGJsX3plcm8nLCAx LCBuYmxvY2tzPT40LCB6ZXJvX29uX2Vycm9yPT5mYWxzZSkKIENPTU1JVDsKICksCiAJCQlx ci9eJC8sCi0JCQlxci9ecHNxbDo8c3RkaW4+OlxkKzogV0FSTklORzogIHplcm9pbmcgb3V0 IDIgaW52YWxpZCBwYWdlcyBhbW9uZyBibG9ja3MgMS4uNCBvZiByZWxhdGlvbiAiYmFzZVwv LipcLy4qXG5ERVRBSUw6ICBCbG9jayAyIGhlbGQgdGhlIGZpcnN0IHplcm9lZCBwYWdlXC5c bkhJTlQ6W15cbl0rJC8KKwkJCXFyL14oPzpwc3FsOjxzdGRpbj46XGQrOiApP1dBUk5JTkc6 ICB6ZXJvaW5nIG91dCAyIGludmFsaWQgcGFnZXMgYW1vbmcgYmxvY2tzIDEuLjQgb2YgcmVs YXRpb24gImJhc2VcLy4qXC8uKlxuREVUQUlMOiAgQmxvY2sgMiBoZWxkIHRoZSBmaXJzdCB6 ZXJvZWQgcGFnZVwuXG5ISU5UOlteXG5dKyQvCiAJCSk7CiAKIAkJJHBzcWxfYS0+cXVlcnlf c2FmZShxcShDT01NSVQpKTsKQEAgLTEwMzAsNyArMTAyOSw3IEBAIFNFTEVDVCBpbnZhbGlk YXRlX3JlbF9ibG9jaygndGJsX3plcm8nLCBnLmkpCiBGUk9NIGdlbmVyYXRlX3Nlcmllcygw LCAxNSkgZyhpKTsKIFNFTEVDVCBtb2RpZnlfcmVsX2Jsb2NrKCd0YmxfemVybycsIDMsIHpl cm89PnRydWUpOwogKSk7Ci0JCSRwc3FsX2EtPntzdGRlcnJ9ID0gJyc7CisJCSRwc3FsX2Et PmNsZWFyX3N0ZGVycigpOwogCiAJCXBzcWxfbGlrZSgKIAkJCSRpb19tZXRob2QsCkBAIC0x MDM5LDcgKzEwMzgsNyBAQCBTRUxFQ1QgbW9kaWZ5X3JlbF9ibG9jaygndGJsX3plcm8nLCAz LCB6ZXJvPT50cnVlKTsKIAkJCXFxKAogU0VMRUNUIGNvdW50KCopIEZST00gdGJsX3plcm8p LAogCQkJcXIvXiQvLAotCQkJcXIvXnBzcWw6PHN0ZGluPjpcZCs6IEVSUk9SOiAgaW52YWxp ZCBwYWdlIGluIGJsb2NrIDIgb2YgcmVsYXRpb24gImJhc2VcLy4qXC8uKiQvCisJCQlxci9e KD86cHNxbDo8c3RkaW4+OlxkKzogKT9FUlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9jayAy IG9mIHJlbGF0aW9uICJiYXNlXC8uKlwvLiokLwogCQkpOwogCiAJCSMgVmVyaWZ5IHRoYXQg YnVmbWdyLmMgSU8gemVyb2VzIG91dCBwYWdlcyB3aXRoIHBhZ2UgdmFsaWRpdHkgZXJyb3Jz CkBAIC0xMDU0LDcgKzEwNTMsNyBAQCBTRUxFQ1QgY291bnQoKikgRlJPTSB0YmxfemVybzsK IENPTU1JVDsKICksCiAJCQlxci9eXGQrJC8sCi0JCQlxci9ecHNxbDo8c3RkaW4+OlxkKzog V0FSTklORzogIGludmFsaWQgcGFnZSBpbiBibG9jayAyIG9mIHJlbGF0aW9uICJiYXNlXC8u KlwvLiokLworCQkJcXIvXig/OnBzcWw6PHN0ZGluPjpcZCs6ICk/V0FSTklORzogIGludmFs aWQgcGFnZSBpbiBibG9jayAyIG9mIHJlbGF0aW9uICJiYXNlXC8uKlwvLiokLwogCQkpOwog CiAJCSMgQ2hlY2sgdGhhdCB3YXJuaW5ncy9lcnJvcnMgYWJvdXQgcGFnZSB2YWxpZGl0eSBp biBhbiBJTyBzdGFydGVkIGJ5CkBAIC0xMDkzLDcgKzEwOTIsNyBAQCBEUk9QIFRBQkxFIHRi bF96ZXJvOwogKSk7CiAJfQogCi0JJHBzcWxfYS0+e3N0ZGVycn0gPSAnJzsKKwkkcHNxbF9h LT5jbGVhcl9zdGRlcnIoKTsKIAogCSRwc3FsX2EtPnF1aXQoKTsKIAkkcHNxbF9iLT5xdWl0 KCk7CkBAIC0xMTA1LDE5ICsxMTA0LDE3IEBAIHN1YiB0ZXN0X2NoZWNrc3VtCiAJbXkgJGlv X21ldGhvZCA9IHNoaWZ0OwogCW15ICRub2RlID0gc2hpZnQ7CiAKLQlteSAkcHNxbF9hID0g JG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDAp OworCW15ICRwc3FsX2EgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9 PiAkbm9kZSk7CiAKLQkkcHNxbF9hLT5xdWVyeV9zYWZlKAotCQlxcSgKLUNSRUFURSBUQUJM RSB0Ymxfbm9ybWFsKGlkIGludCkgV0lUSCAoQVVUT1ZBQ1VVTV9FTkFCTEVEID0gZmFsc2Up OwotSU5TRVJUIElOVE8gdGJsX25vcm1hbCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDUw MDApOwotU0VMRUNUIG1vZGlmeV9yZWxfYmxvY2soJ3RibF9ub3JtYWwnLCAzLCBjb3JydXB0 X2NoZWNrc3VtPT50cnVlKTsKLQotQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSB0YmxfdGVtcChp ZCBpbnQpIFdJVEggKEFVVE9WQUNVVU1fRU5BQkxFRCA9IGZhbHNlKTsKLUlOU0VSVCBJTlRP IHRibF90ZW1wIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCk7Ci1TRUxFQ1QgbW9k aWZ5X3JlbF9ibG9jaygndGJsX3RlbXAnLCAzLCBjb3JydXB0X2NoZWNrc3VtPT50cnVlKTsK LVNFTEVDVCBtb2RpZnlfcmVsX2Jsb2NrKCd0YmxfdGVtcCcsIDQsIGNvcnJ1cHRfY2hlY2tz dW09PnRydWUpOwotKSk7CisJIyBTcGxpdCBtdWx0aS1zdGF0ZW1lbnQgcXVlcnkgaW50byBz ZXBhcmF0ZSBjYWxscyB0byBtYXRjaCBwc3FsIGJlaGF2aW9yCisJIyB3aGVyZSBlcnJvcnMg aW4gb25lIHN0YXRlbWVudCBkb24ndCBwcmV2ZW50IHN1YnNlcXVlbnQgc3RhdGVtZW50cwor CSRwc3FsX2EtPnF1ZXJ5X3NhZmUocXEoQ1JFQVRFIFRBQkxFIHRibF9ub3JtYWwoaWQgaW50 KSBXSVRIIChBVVRPVkFDVVVNX0VOQUJMRUQgPSBmYWxzZSkpKTsKKwkkcHNxbF9hLT5xdWVy eV9zYWZlKHFxKElOU0VSVCBJTlRPIHRibF9ub3JtYWwgU0VMRUNUIGdlbmVyYXRlX3Nlcmll cygxLCA1MDAwKSkpOworCSRwc3FsX2EtPnF1ZXJ5X3NhZmUocXEoU0VMRUNUIG1vZGlmeV9y ZWxfYmxvY2soJ3RibF9ub3JtYWwnLCAzLCBjb3JydXB0X2NoZWNrc3VtPT50cnVlKSkpOwor CSRwc3FsX2EtPnF1ZXJ5X3NhZmUocXEoQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSB0YmxfdGVt cChpZCBpbnQpIFdJVEggKEFVVE9WQUNVVU1fRU5BQkxFRCA9IGZhbHNlKSkpOworCSRwc3Fs X2EtPnF1ZXJ5X3NhZmUocXEoSU5TRVJUIElOVE8gdGJsX3RlbXAgU0VMRUNUIGdlbmVyYXRl X3NlcmllcygxLCA1MDAwKSkpOworCSRwc3FsX2EtPnF1ZXJ5X3NhZmUocXEoU0VMRUNUIG1v ZGlmeV9yZWxfYmxvY2soJ3RibF90ZW1wJywgMywgY29ycnVwdF9jaGVja3N1bT0+dHJ1ZSkp KTsKKwkkcHNxbF9hLT5xdWVyeV9zYWZlKHFxKFNFTEVDVCBtb2RpZnlfcmVsX2Jsb2NrKCd0 YmxfdGVtcCcsIDQsIGNvcnJ1cHRfY2hlY2tzdW09PnRydWUpKSk7CiAKIAkjIFRvIGJlIGFi bGUgdG8gdGVzdCBjaGVja3N1bSBmYWlsdXJlcyBvbiBzaGFyZWQgcmVscyB3ZSBuZWVkIGEg c2hhcmVkIHJlbAogCSMgd2l0aCBpbnZhbGlkIHBhZ2VzIC0gd2hpY2ggaXMgYSBiaXQgc2Nh cnkuIHBnX3Noc2VjbGFiZWwgc2VlbXMgbGlrZSBhCkBAIC0xMTQwLDcgKzExMzcsNyBAQCBT RUxFQ1QgbW9kaWZ5X3JlbF9ibG9jaygncGdfc2hzZWNsYWJlbCcsIDMsIGNvcnJ1cHRfY2hl Y2tzdW09PnRydWUpOwogCQlxcSgKIFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgndGJsX25v cm1hbCcsIDMsIG5ibG9ja3M9PjEsIHplcm9fb25fZXJyb3I9PmZhbHNlKTspLAogCQlxci9e JC8sCi0JCXFyL15wc3FsOjxzdGRpbj46XGQrOiBFUlJPUjogIGludmFsaWQgcGFnZSBpbiBi bG9jayAzIG9mIHJlbGF0aW9uICJiYXNlXC9cZCtcL1xkKyIkLworCQlxci9eKD86cHNxbDo8 c3RkaW4+OlxkKzogKT9FUlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9jayAzIG9mIHJlbGF0 aW9uICJiYXNlXC9cZCtcL1xkKyIkLwogCSk7CiAKIAlteSAoJGNzX2NvdW50X2FmdGVyLCAk Y3NfdHNfYWZ0ZXIpID0KQEAgLTExNjIsNyArMTE1OSw3IEBAIFNFTEVDVCByZWFkX3JlbF9i bG9ja19sbCgndGJsX25vcm1hbCcsIDMsIG5ibG9ja3M9PjEsIHplcm9fb25fZXJyb3I9PmZh bHNlKTspLAogCQlxcSgKIFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgndGJsX3RlbXAnLCA0 LCBuYmxvY2tzPT4yLCB6ZXJvX29uX2Vycm9yPT5mYWxzZSk7KSwKIAkJcXIvXiQvLAotCQlx ci9ecHNxbDo8c3RkaW4+OlxkKzogRVJST1I6ICBpbnZhbGlkIHBhZ2UgaW4gYmxvY2sgNCBv ZiByZWxhdGlvbiAiYmFzZVwvXGQrXC90XGQrX1xkKyIkLworCQlxci9eKD86cHNxbDo8c3Rk aW4+OlxkKzogKT9FUlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9jayA0IG9mIHJlbGF0aW9u ICJiYXNlXC9cZCtcL3RcZCtfXGQrIiQvCiAJKTsKIAogCSgkY3NfY291bnRfYWZ0ZXIsICRj c190c19hZnRlcikgPSBjaGVja3N1bV9mYWlsdXJlcygkcHNxbF9hLCAncG9zdGdyZXMnKTsK QEAgLTExODMsNyArMTE4MCw3IEBAIFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgndGJsX3Rl bXAnLCA0LCBuYmxvY2tzPT4yLCB6ZXJvX29uX2Vycm9yPT5mYWxzZSk7KSwKIAkJcXEoCiBT RUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3BnX3Noc2VjbGFiZWwnLCAyLCBuYmxvY2tzPT4y LCB6ZXJvX29uX2Vycm9yPT5mYWxzZSk7KSwKIAkJcXIvXiQvLAotCQlxci9ecHNxbDo8c3Rk aW4+OlxkKzogRVJST1I6ICAyIGludmFsaWQgcGFnZXMgYW1vbmcgYmxvY2tzIDIuLjMgb2Yg cmVsYXRpb24gImdsb2JhbFwvXGQrIlxuREVUQUlMOiAgQmxvY2sgMiBoZWxkIHRoZSBmaXJz dCBpbnZhbGlkIHBhZ2VcLlxuSElOVDpbXlxuXSskLworCQlxci9eKD86cHNxbDo8c3RkaW4+ OlxkKzogKT9FUlJPUjogIDIgaW52YWxpZCBwYWdlcyBhbW9uZyBibG9ja3MgMi4uMyBvZiBy ZWxhdGlvbiAiZ2xvYmFsXC9cZCsiXG5ERVRBSUw6ICBCbG9jayAyIGhlbGQgdGhlIGZpcnN0 IGludmFsaWQgcGFnZVwuXG5ISU5UOlteXG5dKyQvCiAJKTsKIAogCSgkY3NfY291bnRfYWZ0 ZXIsICRjc190c19hZnRlcikgPSBjaGVja3N1bV9mYWlsdXJlcygkcHNxbF9hKTsKQEAgLTEy MDEsNyArMTE5OCw3IEBAIFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgncGdfc2hzZWNsYWJl bCcsIDIsIG5ibG9ja3M9PjIsIHplcm9fb25fZXJyb3I9PmZhbHNlKTspCiBTRUxFQ1QgbW9k aWZ5X3JlbF9ibG9jaygncGdfc2hzZWNsYWJlbCcsIDEsIHplcm89PnRydWUpOwogRFJPUCBU QUJMRSB0Ymxfbm9ybWFsOwogKSk7Ci0JJHBzcWxfYS0+e3N0ZGVycn0gPSAnJzsKKwkkcHNx bF9hLT5jbGVhcl9zdGRlcnIoKTsKIAogCSRwc3FsX2EtPnF1aXQoKTsKIH0KQEAgLTEyMTQs NyArMTIxMSw3IEBAIHN1YiB0ZXN0X2NoZWNrc3VtX2NyZWF0ZWRiCiAJbXkgJGlvX21ldGhv ZCA9IHNoaWZ0OwogCW15ICRub2RlID0gc2hpZnQ7CiAKLQlteSAkcHNxbCA9ICRub2RlLT5i YWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlteSAk cHNxbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsK IAogCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJJ0NSRUFURSBEQVRBQkFTRSBy ZWdyZXNzaW9uX2NyZWF0ZWRiX3NvdXJjZScpOwpAQCAtMTI0OCw3ICsxMjQ1LDcgQEAgU1RS QVRFR1kgd2FsX2xvZzsKIAkJImNyZWF0ZSBkYXRhYmFzZSB3LyB3YWwgc3RyYXRlZ3ksIGlu dmFsaWQgc291cmNlIiwKIAkJJGNyZWF0ZWRiX3NxbCwKIAkJcXIvXiQvLAotCQlxci9wc3Fs OjxzdGRpbj46XGQrOiBFUlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9jayAxIG9mIHJlbGF0 aW9uICJiYXNlXC9cZCtcL1xkKyIkLworCQlxci9eKD86cHNxbDo8c3RkaW4+OlxkKzogKT9F UlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9jayAxIG9mIHJlbGF0aW9uICJiYXNlXC9cZCtc L1xkKyIkLwogCSk7CiAJbXkgKCRjc19jb3VudF9hZnRlciwgJGNzX3RzX2FmdGVyKSA9CiAJ ICBjaGVja3N1bV9mYWlsdXJlcygkcHNxbCwgJ3JlZ3Jlc3Npb25fY3JlYXRlZGJfc291cmNl Jyk7CkBAIC0xMjc3LDcgKzEyNzQsNyBAQCBzdWIgdGVzdF9pZ25vcmVfY2hlY2tzdW0KIAlt eSAkaW9fbWV0aG9kID0gc2hpZnQ7CiAJbXkgJG5vZGUgPSBzaGlmdDsKIAotCW15ICRwc3Fs ID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+ IDApOworCW15ICRwc3FsID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUg PT4gJG5vZGUpOwogCiAJIyBUZXN0IHNldHVwCiAJJHBzcWwtPnF1ZXJ5X3NhZmUoCkBAIC0x MzQyLDcgKzEzMzksNyBAQCBTRUxFQ1QgbW9kaWZ5X3JlbF9ibG9jaygndGJsX2NzX2ZhaWwn LCA0LCBjb3JydXB0X2hlYWRlcj0+dHJ1ZSk7CiAJCXFxKAogU0VMRUNUIHJlYWRfcmVsX2Js b2NrX2xsKCd0YmxfY3NfZmFpbCcsIDMsIG5ibG9ja3M9PjEsIHplcm9fb25fZXJyb3I9PmZh bHNlKTspLAogCQlxci9eJC8sCi0JCXFyL15wc3FsOjxzdGRpbj46XGQrOiBXQVJOSU5HOiAg aWdub3JpbmcgY2hlY2tzdW0gZmFpbHVyZSBpbiBibG9jayAzLworCQlxci9eKD86cHNxbDo8 c3RkaW4+OlxkKzogKT9XQVJOSU5HOiAgaWdub3JpbmcgY2hlY2tzdW0gZmFpbHVyZSBpbiBi bG9jayAzLwogCSk7CiAKIAkjIENoZWNrIHRoYXQgdGhlIGxvZyBjb250YWlucyBhIExPRyBt ZXNzYWdlIGFib3V0IHRoZSBmYWlsdXJlCkBAIC0xMzU3LDcgKzEzNTQsNyBAQCBTRUxFQ1Qg cmVhZF9yZWxfYmxvY2tfbGwoJ3RibF9jc19mYWlsJywgMywgbmJsb2Nrcz0+MSwgemVyb19v bl9lcnJvcj0+ZmFsc2UpOyksCiAJCXFxKAogU0VMRUNUIHJlYWRfcmVsX2Jsb2NrX2xsKCd0 YmxfY3NfZmFpbCcsIDIsIG5ibG9ja3M9PjMsIHplcm9fb25fZXJyb3I9PmZhbHNlKTspLAog CQlxci9eJC8sCi0JCXFyL15wc3FsOjxzdGRpbj46XGQrOiBFUlJPUjogIGludmFsaWQgcGFn ZSBpbiBibG9jayA0IG9mIHJlbGF0aW9uICJiYXNlXC9cZCtcL1xkKyIkLworCQlxci9eKD86 cHNxbDo8c3RkaW4+OlxkKzogKT9FUlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9jayA0IG9m IHJlbGF0aW9uICJiYXNlXC9cZCtcL1xkKyIkLwogCSk7CiAKIAkjIFRlc3QgbXVsdGktYmxv Y2sgcmVhZCB3aXRoIGRpZmZlcmVudCBwcm9ibGVtcyBpbiBkaWZmZXJlbnQgYmxvY2tzCkBA IC0xMzY5LDcgKzEzNjYsNyBAQCBTRUxFQ1QgbW9kaWZ5X3JlbF9ibG9jaygndGJsX2NzX2Zh aWwnLCAzLCBjb3JydXB0X2NoZWNrc3VtPT50cnVlLCBjb3JydXB0X2hlYWRlcgogU0VMRUNU IG1vZGlmeV9yZWxfYmxvY2soJ3RibF9jc19mYWlsJywgNCwgY29ycnVwdF9oZWFkZXI9PnRy dWUpOwogU0VMRUNUIG1vZGlmeV9yZWxfYmxvY2soJ3RibF9jc19mYWlsJywgNSwgY29ycnVw dF9oZWFkZXI9PnRydWUpOwogKSk7Ci0JJHBzcWwtPntzdGRlcnJ9ID0gJyc7CisJJHBzcWwt PmNsZWFyX3N0ZGVycigpOwogCiAJJGxvZ19sb2NhdGlvbiA9IC1zICRub2RlLT5sb2dmaWxl OwogCXBzcWxfbGlrZSgKQEAgLTEzNzksNyArMTM3Niw3IEBAIFNFTEVDVCBtb2RpZnlfcmVs X2Jsb2NrKCd0YmxfY3NfZmFpbCcsIDUsIGNvcnJ1cHRfaGVhZGVyPT50cnVlKTsKIAkJcXEo CiBTRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF9jc19mYWlsJywgMSwgbmJsb2Nrcz0+ NSwgemVyb19vbl9lcnJvcj0+dHJ1ZSk7KSwKIAkJcXIvXiQvLAotCQlxci9ecHNxbDo8c3Rk aW4+OlxkKzogV0FSTklORzogIHplcm9pbmcgMyBwYWdlXChzXCkgYW5kIGlnbm9yaW5nIDIg Y2hlY2tzdW0gZmFpbHVyZVwoc1wpIGFtb25nIGJsb2NrcyAxLi41IG9mIHJlbGF0aW9uICIv CisJCXFyL14oPzpwc3FsOjxzdGRpbj46XGQrOiApP1dBUk5JTkc6ICB6ZXJvaW5nIDMgcGFn ZVwoc1wpIGFuZCBpZ25vcmluZyAyIGNoZWNrc3VtIGZhaWx1cmVcKHNcKSBhbW9uZyBibG9j a3MgMS4uNSBvZiByZWxhdGlvbiAiLwogCSk7CiAKIApAQCAtMTQxMiw3ICsxNDA5LDcgQEAg U0VMRUNUIHJlYWRfcmVsX2Jsb2NrX2xsKCd0YmxfY3NfZmFpbCcsIDEsIG5ibG9ja3M9PjUs IHplcm9fb25fZXJyb3I9PnRydWUpOyksCiAJCXFxKAogU0VMRUNUIG1vZGlmeV9yZWxfYmxv Y2soJ3RibF9jc19mYWlsJywgMywgY29ycnVwdF9jaGVja3N1bT0+dHJ1ZSwgY29ycnVwdF9o ZWFkZXI9PnRydWUpOwogKSk7Ci0JJHBzcWwtPntzdGRlcnJ9ID0gJyc7CisJJHBzcWwtPmNs ZWFyX3N0ZGVycigpOwogCiAJcHNxbF9saWtlKAogCQkkaW9fbWV0aG9kLApAQCAtMTQyMSw3 ICsxNDE4LDcgQEAgU0VMRUNUIG1vZGlmeV9yZWxfYmxvY2soJ3RibF9jc19mYWlsJywgMywg Y29ycnVwdF9jaGVja3N1bT0+dHJ1ZSwgY29ycnVwdF9oZWFkZXIKIAkJcXEoCiBTRUxFQ1Qg cmVhZF9yZWxfYmxvY2tfbGwoJ3RibF9jc19mYWlsJywgMywgbmJsb2Nrcz0+MSwgemVyb19v bl9lcnJvcj0+ZmFsc2UpOyksCiAJCXFyL14kLywKLQkJcXIvXnBzcWw6PHN0ZGluPjpcZCs6 IEVSUk9SOiAgaW52YWxpZCBwYWdlIGluIGJsb2NrIDMgb2YgcmVsYXRpb24gIi8pOworCQlx ci9eKD86cHNxbDo8c3RkaW4+OlxkKzogKT9FUlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9j ayAzIG9mIHJlbGF0aW9uICIvKTsKIAogCXBzcWxfbGlrZSgKIAkJJGlvX21ldGhvZCwKQEAg LTE0MzAsNyArMTQyNyw3IEBAIFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgndGJsX2NzX2Zh aWwnLCAzLCBuYmxvY2tzPT4xLCB6ZXJvX29uX2Vycm9yPT5mYWxzZSk7KSwKIAkJcXEoCiBT RUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF9jc19mYWlsJywgMywgbmJsb2Nrcz0+MSwg emVyb19vbl9lcnJvcj0+dHJ1ZSk7KSwKIAkJcXIvXiQvLAotCQlxci9ecHNxbDo8c3RkaW4+ OlxkKzogV0FSTklORzogIGludmFsaWQgcGFnZSBpbiBibG9jayAzIG9mIHJlbGF0aW9uICJi YXNlXC8uKiI7IHplcm9pbmcgb3V0IHBhZ2UvCisJCXFyL14oPzpwc3FsOjxzdGRpbj46XGQr OiApP1dBUk5JTkc6ICBpbnZhbGlkIHBhZ2UgaW4gYmxvY2sgMyBvZiByZWxhdGlvbiAiYmFz ZVwvLioiOyB6ZXJvaW5nIG91dCBwYWdlLwogCSk7CiAKIApAQCAtMTQ0Niw4ICsxNDQzLDgg QEAgc3ViIHRlc3RfcmVhZF9idWZmZXJzCiAJbXkgKCRyZXQsICRvdXRwdXQpOwogCW15ICR0 YWJsZTsKIAotCW15ICRwc3FsX2EgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jl cycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0JbXkgJHBzcWxfYiA9ICRub2RlLT5iYWNrZ3Jv dW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlteSAkcHNxbF9h ID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworCW15 ICRwc3FsX2IgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9k ZSk7CiAKIAkkcHNxbF9hLT5xdWVyeV9zYWZlKAogCQlxcSgKQEAgLTE2MzEsNyArMTYyOCw3 IEBAIElOU0VSVCBJTlRPIHRtcF9vayBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDAp OwogCQkkcHNxbF9hLT5xdWVyeV9zYWZlKHFxfFNFTEVDVCBldmljdF9yZWwoJyR0YWJsZScp fCk7CiAKIAkJbXkgJGJ1Zl9pZCA9Ci0JCSAgJHBzcWxfYi0+cXVlcnlfc2FmZShxcXxTRUxF Q1QgYnVmZmVyX2NyZWF0ZV90b3koJyR0YWJsZScsIDMpfCk7CisJCSAgJHBzcWxfYi0+cXVl cnlfb25ldmFsKHFxfFNFTEVDVCBidWZmZXJfY3JlYXRlX3RveSgnJHRhYmxlJywgMyl8KTsK IAkJJHBzcWxfYi0+cXVlcnlfc2FmZSgKIAkJCXFxfFNFTEVDVCBidWZmZXJfY2FsbF9zdGFy dF9pbygkYnVmX2lkLCBmb3JfaW5wdXQ9PnRydWUsIHdhaXQ9PnRydWUpfAogCQkpOwpAQCAt MTY0OCwxNiArMTY0NSwxNiBAQCBJTlNFUlQgSU5UTyB0bXBfb2sgU0VMRUNUIGdlbmVyYXRl X3NlcmllcygxLCA1MDAwKTsKIAkJCXFxfFNFTEVDVCBidWZmZXJfY2FsbF90ZXJtaW5hdGVf aW8oJGJ1Zl9pZCwgZm9yX2lucHV0PT50cnVlLCBzdWNjZWVkPT5mYWxzZSwgaW9fZXJyb3I9 PmZhbHNlLCByZWxlYXNlX2Fpbz0+ZmFsc2UpfAogCQkpOwogCQkjIEJlY2F1c2Ugbm8gSU8g d3JlZiB3YXMgYXNzaWduZWQsIGJsb2NrIDMgc2hvdWxkIG5vdCByZXBvcnQgZm9yZWlnbiBJ TwotCQlwdW1wX3VudGlsKCRwc3FsX2EtPntydW59LCAkcHNxbF9hLT57dGltZW91dH0sIFwk cHNxbF9hLT57c3Rkb3V0fSwKLQkJCXFyLzBcfDFcfHRcfGZcfDJcbjJcfDNcfHRcfGZcfDMv KTsKLQkJb2soMSwKKwkJbGlrZSgKKwkJCSRwc3FsX2EtPndhaXRfZm9yX2FzeW5jX3BhdHRl cm4ocXIvMFx8MVx8dFx8Zlx8MlxuMlx8M1x8dFx8Zlx8My8pLAorCQkJcXIvMFx8MVx8dFx8 Zlx8MlxuMlx8M1x8dFx8Zlx8My8sCiAJCQkiJGlvX21ldGhvZDogJHBlcnNpc3RlbmN5OiBJ TyB3YXMgc3BsaXQgZHVlIHRvIGNvbmN1cnJlbnQgZmFpbGVkIElPIgogCQkpOwogCiAJCSMg U2FtZSBhcyBiZWZvcmUsIGV4Y2VwdCB0aGUgY29uY3VycmVudCBJTyBzdWNjZWVkcyB0aGlz IHRpbWUKIAkJJHBzcWxfYS0+cXVlcnlfc2FmZShxcXxTRUxFQ1QgZXZpY3RfcmVsKCckdGFi bGUnKXwpOwogCQkkYnVmX2lkID0KLQkJICAkcHNxbF9iLT5xdWVyeV9zYWZlKHFxfFNFTEVD VCBidWZmZXJfY3JlYXRlX3RveSgnJHRhYmxlJywgMyl8KTsKKwkJICAkcHNxbF9iLT5xdWVy eV9vbmV2YWwocXF8U0VMRUNUIGJ1ZmZlcl9jcmVhdGVfdG95KCckdGFibGUnLCAzKXwpOwog CQkkcHNxbF9iLT5xdWVyeV9zYWZlKAogCQkJcXF8U0VMRUNUIGJ1ZmZlcl9jYWxsX3N0YXJ0 X2lvKCRidWZfaWQsIGZvcl9pbnB1dD0+dHJ1ZSwgd2FpdD0+dHJ1ZSl8CiAJCSk7CkBAIC0x Njc0LDkgKzE2NzEsMTAgQEAgSU5TRVJUIElOVE8gdG1wX29rIFNFTEVDVCBnZW5lcmF0ZV9z ZXJpZXMoMSwgNTAwMCk7CiAJCQlxcXxTRUxFQ1QgYnVmZmVyX2NhbGxfdGVybWluYXRlX2lv KCRidWZfaWQsIGZvcl9pbnB1dD0+dHJ1ZSwgc3VjY2VlZD0+dHJ1ZSwgaW9fZXJyb3I9PmZh bHNlLCByZWxlYXNlX2Fpbz0+ZmFsc2UpfAogCQkpOwogCQkjIEJlY2F1c2Ugbm8gSU8gd3Jl ZiB3YXMgYXNzaWduZWQsIGJsb2NrIDMgc2hvdWxkIG5vdCByZXBvcnQgZm9yZWlnbiBJTwot CQlwdW1wX3VudGlsKCRwc3FsX2EtPntydW59LCAkcHNxbF9hLT57dGltZW91dH0sIFwkcHNx bF9hLT57c3Rkb3V0fSwKLQkJCXFyLzBcfDFcfHRcfGZcfDJcbjJcfDNcfGZcfGZcfDFcbjNc fDRcfHRcfGZcfDIvKTsKLQkJb2soMSwKKwkJbGlrZSgKKwkJCSRwc3FsX2EtPndhaXRfZm9y X2FzeW5jX3BhdHRlcm4oCisJCQkJcXIvMFx8MVx8dFx8Zlx8MlxuMlx8M1x8Zlx8Zlx8MVxu M1x8NFx8dFx8Zlx8Mi8pLAorCQkJcXIvMFx8MVx8dFx8Zlx8MlxuMlx8M1x8Zlx8Zlx8MVxu M1x8NFx8dFx8Zlx8Mi8sCiAJCQkiJGlvX21ldGhvZDogJHBlcnNpc3RlbmN5OiBJTyB3YXMg c3BsaXQgZHVlIHRvIGNvbmN1cnJlbnQgc3VjY2Vzc2Z1bCBJTyIKIAkJKTsKIAl9CkBAIC0x NjkyLDkgKzE2OTAsOSBAQCBzdWIgdGVzdF9yZWFkX2J1ZmZlcnNfaW5qZWN0CiAJbXkgJGlv X21ldGhvZCA9IHNoaWZ0OwogCW15ICRub2RlID0gc2hpZnQ7CiAKLQlteSAkcHNxbF9hID0g JG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDAp OwotCW15ICRwc3FsX2IgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9u X2Vycm9yX3N0b3AgPT4gMCk7Ci0JbXkgJHBzcWxfYyA9ICRub2RlLT5iYWNrZ3JvdW5kX3Bz cWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlteSAkcHNxbF9hID0gUG9z dGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworCW15ICRwc3Fs X2IgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CisJ bXkgJHBzcWxfYyA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRu b2RlKTsKIAogCW15ICRleHBlY3RlZDsKIApAQCAtMTc2MywxMiArMTc2MSwxMyBAQCBzdWIg dGVzdF9yZWFkX2J1ZmZlcnNfaW5qZWN0CiAJCSMgcmV0dXJuIGZvciBzb21ldGhpbmcgd2l0 aCBtaXNzZXMgaW4gc3luYyBtb2RlLgogCQkkZXhwZWN0ZWQgPSBxci8wXHwxXHx0XHxmXHw0 LzsKIAl9Ci0JcHVtcF91bnRpbCgkcHNxbF9hLT57cnVufSwgJHBzcWxfYS0+e3RpbWVvdXR9 LCBcJHBzcWxfYS0+e3N0ZG91dH0sCi0JCSRleHBlY3RlZCk7Ci0Jb2soMSwKKwlsaWtlKCRw c3FsX2EtPndhaXRfZm9yX2FzeW5jX3BhdHRlcm4oJGV4cGVjdGVkKSwgJGV4cGVjdGVkLAog CQkiJGlvX21ldGhvZDogJHBlcnNpc3RlbmN5OiByZWFkIDEtMywgYmxvY2tlZCBvbiBpbi1w cm9ncmVzcyAxLCBzZWUgZXhwZWN0ZWQgcmVzdWx0IgogCSk7Ci0JJHBzcWxfYS0+e3N0ZG91 dH0gPSAnJzsKKworCSMgQidzIGxvdy1sZXZlbCByZWFkIGhhcyBjb21wbGV0ZWQgbm93IHRo YXQgQyByZWxlYXNlZCBpdDsgZHJhaW4gaXRzCisJIyByZXN1bHQgYmVmb3JlIEIgaXMgcmV1 c2VkIGJlbG93LgorCSRwc3FsX2ItPndhaXRfZm9yX2NvbXBsZXRpb247CiAKIAogCSMjIwpA QCAtMTgyOSwxMiArMTgyOCwxMiBAQCByZWFkX2J1ZmZlcnMoJyR0YWJsZScsIDAsIDQpfCwK IAkJIyByZXR1cm4gZm9yIHNvbWV0aGluZyB3aXRoIG1pc3NlcyBpbiBzeW5jIG1vZGUuCiAJ CSRleHBlY3RlZCA9IHFyLzBcfDBcfHRcfGZcfDQvOwogCX0KLQlwdW1wX3VudGlsKCRwc3Fs X2EtPntydW59LCAkcHNxbF9hLT57dGltZW91dH0sIFwkcHNxbF9hLT57c3Rkb3V0fSwKLQkJ JGV4cGVjdGVkKTsKLQlvaygxLAorCWxpa2UoJHBzcWxfYS0+d2FpdF9mb3JfYXN5bmNfcGF0 dGVybigkZXhwZWN0ZWQpLCAkZXhwZWN0ZWQsCiAJCSIkaW9fbWV0aG9kOiAkcGVyc2lzdGVu Y3k6IHJlYWQgMC0zLCBibG9ja2VkIG9uIGluLXByb2dyZXNzIDIrMywgc2VlIGV4cGVjdGVk IHJlc3VsdCIKIAkpOwotCSRwc3FsX2EtPntzdGRvdXR9ID0gJyc7CisKKwkjIERyYWluIEIn cyBub3ctY29tcGxldGVkIGxvdy1sZXZlbCByZWFkIGJlZm9yZSBjbG9zaW5nLgorCSRwc3Fs X2ItPndhaXRfZm9yX2NvbXBsZXRpb247CiAKIAogCSRwc3FsX2EtPnF1aXQoKTsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9haW8vdC8wMDRfcmVhZF9zdHJlYW0ucGwg Yi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYWlvL3QvMDA0X3JlYWRfc3RyZWFtLnBsCmluZGV4 IDMyMzExYzA3YWMwLi43ODJiNjJjNDUyZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2Fpby90LzAwNF9yZWFkX3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfYWlvL3QvMDA0X3JlYWRfc3RyZWFtLnBsCkBAIC01LDYgKzUsNyBAQCB1c2Ugd2Fy bmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiAKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6 OlNlc3Npb247CiB1c2UgVGVzdDo6TW9yZTsKIAogdXNlIEZpbmRCaW47CkBAIC02MCw3ICs2 MSw3IEBAIHN1YiB0ZXN0X3JlcGVhdGVkX2Jsb2NrcwogCW15ICRpb19tZXRob2QgPSBzaGlm dDsKIAlteSAkbm9kZSA9IHNoaWZ0OwogCi0JbXkgJHBzcWwgPSAkbm9kZS0+YmFja2dyb3Vu ZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CisJbXkgJHBzcWwgPSBQ b3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKIAkjIFBy ZXZlbnRpbmcgbGFyZ2VyIHJlYWRzIG1ha2VzIHRlc3RpbmcgZWFzaWVyCiAJJHBzcWwtPnF1 ZXJ5X3NhZmUocXEvU0VUIGlvX2NvbWJpbmVfbGltaXQgPSAxLyk7CkBAIC0xMTEsNyArMTEy LDcgQEAgc3ViIHRlc3RfcmVwZWF0ZWRfYmxvY2tzCiAJCSAgIEFSUkFZWzAsIDIsIDIsIDQs IDRdKTsvKTsKIAlvaygxLCAiJGlvX21ldGhvZDogdGVtcCBzdHJlYW0gaGl0dGluZyB0aGUg c2FtZSBibG9jayByZXBlYXRlZGx5Iik7CiAKLQkkcHNxbC0+cXVpdCgpOworCSRwc3FsLT5j bG9zZSgpOwogfQogCiAKQEAgLTEyMCwxMCArMTIxLDEwIEBAIHN1YiB0ZXN0X2luamVjdF9m b3JlaWduCiAJbXkgJGlvX21ldGhvZCA9IHNoaWZ0OwogCW15ICRub2RlID0gc2hpZnQ7CiAK LQlteSAkcHNxbF9hID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9l cnJvcl9zdG9wID0+IDApOwotCW15ICRwc3FsX2IgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3Fs KCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CisJbXkgJHBzcWxfYSA9IFBvc3Rn cmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKwlteSAkcHNxbF9i ID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCi0J bXkgJHBpZF9hID0gJHBzcWxfYS0+cXVlcnlfc2FmZShxcS9TRUxFQ1QgcGdfYmFja2VuZF9w aWQoKTsvKTsKKwlteSAkcGlkX2EgPSAkcHNxbF9hLT5xdWVyeV9vbmV2YWwocXEvU0VMRUNU IHBnX2JhY2tlbmRfcGlkKCk7Lyk7CiAKIAogCSMjIwpAQCAtMTM2LDkgKzEzNyw4IEBAIHN1 YiB0ZXN0X2luamVjdF9mb3JlaWduCiAJCXFxL1NFTEVDVCBpbmpfaW9fY29tcGxldGlvbl93 YWl0KHBpZD0+cGdfYmFja2VuZF9waWQoKSwKIAkJICAgcmVsZmlsZW5vZGU9PnBnX3JlbGF0 aW9uX2ZpbGVub2RlKCdsYXJnZWlzaCcpKTsvKTsKIAotCSRwc3FsX2ItPntzdGRpbn0gLj0g cXEvU0VMRUNUIHJlYWRfcmVsX2Jsb2NrX2xsKCdsYXJnZWlzaCcsCi0JCWJsb2Nrbm89PjUs IG5ibG9ja3M9PjEpO1xuLzsKLQkkcHNxbF9iLT57cnVufS0+cHVtcF9uYigpOworCSRwc3Fs X2ItPmRvX2FzeW5jKHFxL1NFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgnbGFyZ2Vpc2gnLAor CQlibG9ja25vPT41LCBuYmxvY2tzPT4xKTsvKTsKIAogCSRub2RlLT5wb2xsX3F1ZXJ5X3Vu dGlsKAogCQkncG9zdGdyZXMnLCBxcS9TRUxFQ1Qgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRf YWN0aXZpdHkKQEAgLTE0Nyw5ICsxNDcsOCBAQCBzdWIgdGVzdF9pbmplY3RfZm9yZWlnbgog CiAJIyBCbG9jayA1IGlzIHVuZGVyZ29pbmcgSU8gaW4gc2Vzc2lvbiBiLCBzbyBzZXNzaW9u IGEgd2lsbCBtb3ZlIG9uIHRvIHN0YXJ0CiAJIyBhIG5ldyBJTyBmb3IgYmxvY2sgNy4KLQkk cHNxbF9hLT57c3RkaW59IC49IHFxL1NFTEVDVCBhcnJheV9hZ2coYmxvY2tudW0pIEZST00K LQkJcmVhZF9zdHJlYW1fZm9yX2Jsb2NrcygnbGFyZ2Vpc2gnLCBBUlJBWVswLCAyLCA1LCA3 XSk7XG4vOwotCSRwc3FsX2EtPntydW59LT5wdW1wX25iKCk7CisJJHBzcWxfYS0+ZG9fYXN5 bmMocXEvU0VMRUNUIGFycmF5X2FnZyhibG9ja251bSkgRlJPTQorCQlyZWFkX3N0cmVhbV9m b3JfYmxvY2tzKCdsYXJnZWlzaCcsIEFSUkFZWzAsIDIsIDUsIDddKTsvKTsKIAogCSRub2Rl LT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAJCXFxKFNFTEVDVCB3YWl0X2V2ZW50 IEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVSRSBwaWQgPSAkcGlkX2EpLApAQCAtMTU3LDEw ICsxNTYsMTAgQEAgc3ViIHRlc3RfaW5qZWN0X2ZvcmVpZ24KIAogCSRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgcXEvU0VMRUNUIGlual9pb19jb21wbGV0aW9uX2NvbnRpbnVlKCkv KTsKIAotCXB1bXBfdW50aWwoCi0JCSRwc3FsX2EtPntydW59LCAkcHNxbF9hLT57dGltZW91 dH0sCi0JCVwkcHNxbF9hLT57c3Rkb3V0fSwgcXIvXHswLDIsNSw3XH0vKTsKLQkkcHNxbF9h LT57c3Rkb3V0fSA9ICcnOworCSRwc3FsX2EtPndhaXRfZm9yX2FzeW5jX3BhdHRlcm4ocXIv XHswLDIsNSw3XH0vKTsKKworCSMgRHJhaW4gc2Vzc2lvbiBiJ3Mgbm93LWNvbXBsZXRlZCBs b3ctbGV2ZWwgcmVhZCBiZWZvcmUgcmV1c2luZyBpdC4KKwkkcHNxbF9iLT53YWl0X2Zvcl9j b21wbGV0aW9uOwogCiAJb2soMSwKIAkJcXEvJGlvX21ldGhvZDogcmVhZCBzdHJlYW0gZW5j b3VudGVycyBzdWNjZWVkaW5nIElPIGJ5IGFub3RoZXIgYmFja2VuZC8KQEAgLTE4MSw5ICsx ODAsOCBAQCBzdWIgdGVzdF9pbmplY3RfZm9yZWlnbgogCQkgICBwaWQ9PnBnX2JhY2tlbmRf cGlkKCksCiAJCSAgIHJlbGZpbGVub2RlPT5wZ19yZWxhdGlvbl9maWxlbm9kZSgnbGFyZ2Vp c2gnKSk7Lyk7CiAKLQkkcHNxbF9iLT57c3RkaW59IC49IHFxL1NFTEVDVCByZWFkX3JlbF9i bG9ja19sbCgnbGFyZ2Vpc2gnLAotCQlibG9ja25vPT41LCBuYmxvY2tzPT4xKTtcbi87Ci0J JHBzcWxfYi0+e3J1bn0tPnB1bXBfbmIoKTsKKwkkcHNxbF9iLT5kb19hc3luYyhxcS9TRUxF Q1QgcmVhZF9yZWxfYmxvY2tfbGwoJ2xhcmdlaXNoJywKKwkJYmxvY2tubz0+NSwgbmJsb2Nr cz0+MSk7Lyk7CiAKIAkkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgKIAkJJ3Bvc3RncmVzJywK QEAgLTE5MSw5ICsxODksOCBAQCBzdWIgdGVzdF9pbmplY3RfZm9yZWlnbgogCQkgICBXSEVS RSB3YWl0X2V2ZW50ID0gJ2NvbXBsZXRpb25fd2FpdCc7LywKIAkJJ2NvbXBsZXRpb25fd2Fp dCcpOwogCi0JJHBzcWxfYS0+e3N0ZGlufSAuPSBxcS9TRUxFQ1QgYXJyYXlfYWdnKGJsb2Nr bnVtKSBGUk9NCi0JCXJlYWRfc3RyZWFtX2Zvcl9ibG9ja3MoJ2xhcmdlaXNoJywgQVJSQVlb MCwgMiwgNSwgN10pO1xuLzsKLQkkcHNxbF9hLT57cnVufS0+cHVtcF9uYigpOworCSRwc3Fs X2EtPmRvX2FzeW5jKHFxL1NFTEVDVCBhcnJheV9hZ2coYmxvY2tudW0pIEZST00KKwkJcmVh ZF9zdHJlYW1fZm9yX2Jsb2NrcygnbGFyZ2Vpc2gnLCBBUlJBWVswLCAyLCA1LCA3XSk7Lyk7 CiAKIAkkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAogCQlxcShTRUxFQ1Qg d2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgcGlkID0gJHBpZF9hKSwK QEAgLTIwMSwxNSArMTk4LDEzIEBAIHN1YiB0ZXN0X2luamVjdF9mb3JlaWduCiAKIAkkbm9k ZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxL1NFTEVDVCBpbmpfaW9fY29tcGxldGlvbl9j b250aW51ZSgpLyk7CiAKLQlwdW1wX3VudGlsKAotCQkkcHNxbF9hLT57cnVufSwgJHBzcWxf YS0+e3RpbWVvdXR9LAotCQlcJHBzcWxfYS0+e3N0ZG91dH0sIHFyL1x7MCwyLDUsN1x9Lyk7 Ci0JJHBzcWxfYS0+e3N0ZG91dH0gPSAnJzsKKwkkcHNxbF9hLT53YWl0X2Zvcl9hc3luY19w YXR0ZXJuKHFyL1x7MCwyLDUsN1x9Lyk7CiAKLQlwdW1wX3VudGlsKCRwc3FsX2ItPntydW59 LCAkcHNxbF9iLT57dGltZW91dH0sIFwkcHNxbF9iLT57c3RkZXJyfSwKLQkJcXIvRVJST1Iu KmNvdWxkIG5vdCByZWFkIGJsb2NrcyA1XC5cLjUvKTsKLQlvaygxLCAiJGlvX21ldGhvZDog aW5qZWN0ZWQgZXJyb3Igb2NjdXJyZWQiKTsKLQkkcHNxbF9iLT57c3RkZXJyfSA9ICcnOwor CSMgU2Vzc2lvbiBiJ3MgbG93LWxldmVsIHJlYWQgaGl0cyB0aGUgaW5qZWN0ZWQgZXJyb3Iu CisJbXkgJHJlc19iID0gJHBzcWxfYi0+Z2V0X2FzeW5jX3Jlc3VsdCgpOworCWxpa2UoJHJl c19iLT57ZXJyb3JfbWVzc2FnZX0sIHFyL0VSUk9SLipjb3VsZCBub3QgcmVhZCBibG9ja3Mg NVwuXC41LywKKwkJIiRpb19tZXRob2Q6IGluamVjdGVkIGVycm9yIG9jY3VycmVkIik7CisJ JHBzcWxfYi0+Y2xlYXJfc3RkZXJyKCk7CiAJJHBzcWxfYi0+cXVlcnlfc2FmZShxcS9TRUxF Q1QgaW5qX2lvX3Nob3J0X3JlYWRfZGV0YWNoKCk7Lyk7CiAKIAlvaygxLApAQCAtMjI2LDkg KzIyMSw4IEBAIHN1YiB0ZXN0X2luamVjdF9mb3JlaWduCiAJCXFxL1NFTEVDVCBpbmpfaW9f Y29tcGxldGlvbl93YWl0KHBpZD0+cGdfYmFja2VuZF9waWQoKSwKIAkJICAgcmVsZmlsZW5v ZGU9PnBnX3JlbGF0aW9uX2ZpbGVub2RlKCdsYXJnZWlzaCcpKTsvKTsKIAotCSRwc3FsX2It PntzdGRpbn0gLj0gcXEvU0VMRUNUIHJlYWRfcmVsX2Jsb2NrX2xsKCdsYXJnZWlzaCcsCi0J CWJsb2Nrbm89PjIsIG5ibG9ja3M9PjMpO1xuLzsKLQkkcHNxbF9iLT57cnVufS0+cHVtcF9u YigpOworCSRwc3FsX2ItPmRvX2FzeW5jKHFxL1NFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgn bGFyZ2Vpc2gnLAorCQlibG9ja25vPT4yLCBuYmxvY2tzPT4zKTsvKTsKIAogCSRub2RlLT5w b2xsX3F1ZXJ5X3VudGlsKAogCQkncG9zdGdyZXMnLApAQCAtMjM3LDkgKzIzMSw4IEBAIHN1 YiB0ZXN0X2luamVjdF9mb3JlaWduCiAJCSdjb21wbGV0aW9uX3dhaXQnKTsKIAogCSMgQmxv Y2tzIDIgYW5kIDQgYXJlIHVuZGVyZ29pbmcgSU8gaW5pdGlhdGVkIGJ5IHNlc3Npb24gYgot CSRwc3FsX2EtPntzdGRpbn0gLj0gcXEvU0VMRUNUIGFycmF5X2FnZyhibG9ja251bSkgRlJP TQotCQlyZWFkX3N0cmVhbV9mb3JfYmxvY2tzKCdsYXJnZWlzaCcsIEFSUkFZWzAsIDIsIDRd KTtcbi87Ci0JJHBzcWxfYS0+e3J1bn0tPnB1bXBfbmIoKTsKKwkkcHNxbF9hLT5kb19hc3lu YyhxcS9TRUxFQ1QgYXJyYXlfYWdnKGJsb2NrbnVtKSBGUk9NCisJCXJlYWRfc3RyZWFtX2Zv cl9ibG9ja3MoJ2xhcmdlaXNoJywgQVJSQVlbMCwgMiwgNF0pOy8pOwogCiAJJG5vZGUtPnBv bGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKIAkJcXEoU0VMRUNUIHdhaXRfZXZlbnQgRlJP TSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHBpZCA9ICRwaWRfYSksCkBAIC0yNDcsMTUgKzI0 MCwxNSBAQCBzdWIgdGVzdF9pbmplY3RfZm9yZWlnbgogCiAJJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCBxcS9TRUxFQ1QgaW5qX2lvX2NvbXBsZXRpb25fY29udGludWUoKS8pOwog Ci0JcHVtcF91bnRpbCgKLQkJJHBzcWxfYS0+e3J1bn0sICRwc3FsX2EtPnt0aW1lb3V0fSwK LQkJXCRwc3FsX2EtPntzdGRvdXR9LCBxci9cezAsMiw0XH0vKTsKLQkkcHNxbF9hLT57c3Rk b3V0fSA9ICcnOworCSRwc3FsX2EtPndhaXRfZm9yX2FzeW5jX3BhdHRlcm4ocXIvXHswLDIs NFx9Lyk7CisKKwkjIERyYWluIHNlc3Npb24gYidzIG5vdy1jb21wbGV0ZWQgbG93LWxldmVs IHJlYWQuCisJJHBzcWxfYi0+d2FpdF9mb3JfY29tcGxldGlvbjsKIAogCW9rKDEsIHFxLyRp b19tZXRob2Q6IHJlYWQgc3RyZWFtIGVuY291bnRlcnMgdHdvIGJ1ZmZlciByZWFkIGluIG9u ZSBJTy8pOwogCi0JJHBzcWxfYS0+cXVpdCgpOwotCSRwc3FsX2ItPnF1aXQoKTsKKwkkcHNx bF9hLT5jbG9zZSgpOworCSRwc3FsX2ItPmNsb3NlKCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NoZWNrc3Vtcy90LzAwMl9yZXN0YXJ0cy5wbCBiL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9jaGVja3N1bXMvdC8wMDJfcmVzdGFydHMucGwKaW5kZXgg MWFhMmMwYzY1ZTUuLmNkOWE3MzE0YzhhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfY2hlY2tzdW1zL3QvMDAyX3Jlc3RhcnRzLnBsCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9jaGVja3N1bXMvdC8wMDJfcmVzdGFydHMucGwKQEAgLTgsNiArOCw3IEBAIHVz ZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIAogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6U2Vzc2lvbjsKIHVzZSBUZXN0OjpNb3JlOwogCiB1c2UgRmluZEJpbjsKQEAgLTQ0 LDggKzQ1LDggQEAgU0tJUDoKIAkjCiAJIyBUaGlzIGlzIGEgc2ltaWxhciB0ZXN0IHRvIHRo ZSBzeW50aGV0aWMgdmFyaWFudCBpbiAwMDVfaW5qZWN0aW9uLnBsCiAJIyB3aGljaCBmYWtl cyB0aGlzIHNjZW5hcmlvLgotCW15ICRic2Vzc2lvbiA9ICRub2RlLT5iYWNrZ3JvdW5kX3Bz cWwoJ3Bvc3RncmVzJyk7Ci0JJGJzZXNzaW9uLT5xdWVyeV9zYWZlKCdDUkVBVEUgVEVNUE9S QVJZIFRBQkxFIHR0IChhIGludGVnZXIpOycpOworCW15ICRic2Vzc2lvbiA9IFBvc3RncmVT UUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKwkkYnNlc3Npb24tPmRv KCdDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIHR0IChhIGludGVnZXIpOycpOwogCiAJIyBJbiBh bm90aGVyIHNlc3Npb24sIG1ha2Ugc3VyZSB3ZSBjYW4gc2VlIHRoZSBibG9ja2luZyB0ZW1w IHRhYmxlIGJ1dAogCSMgc3RhcnQgcHJvY2Vzc2luZyBhbnl3YXlzIGFuZCBjaGVjayB0aGF0 IHdlIGFyZSBibG9ja2VkIHdpdGggYSBwcm9wZXIKQEAgLTg1LDcgKzg2LDcgQEAgU0tJUDoK IAkjIHNlc3Npb24gZmlyc3Qgc2luY2UgdGhlIGJyaWVmIHBlcmlvZCBiZXR3ZWVuIGNsb3Np bmcgYW5kIHN0b3BwaW5nIG1pZ2h0CiAJIyBiZSBlbm91Z2ggZm9yIGNoZWNrc3VtcyB0byBn ZXQgZW5hYmxlZC4KIAkkbm9kZS0+c3RvcDsKLQkkYnNlc3Npb24tPnF1aXQ7CisJJGJzZXNz aW9uLT5jbG9zZTsKIAkkbm9kZS0+c3RhcnQ7CiAKIAkjIEVuc3VyZSB0aGUgY2hlY2tzdW1z IGFyZW4ndCBlbmFibGVkIGFjcm9zcyB0aGUgcmVzdGFydC4gIFRoaXMgbGVhdmVzIHRoZQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NoZWNrc3Vtcy90LzAwM19zdGFu ZGJ5X3Jlc3RhcnRzLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NoZWNrc3Vtcy90LzAw M19zdGFuZGJ5X3Jlc3RhcnRzLnBsCmluZGV4IGJiMzVlZDBiMzI1Li42N2Q0ZTc2ZTdiNSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NoZWNrc3Vtcy90LzAwM19zdGFu ZGJ5X3Jlc3RhcnRzLnBsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jaGVja3N1bXMv dC8wMDNfc3RhbmRieV9yZXN0YXJ0cy5wbApAQCAtNyw2ICs3LDcgQEAgdXNlIHN0cmljdDsK IHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFBvc3RncmVTUUw6 OlRlc3Q6OlNlc3Npb247CiB1c2UgVGVzdDo6TW9yZTsKIAogdXNlIEZpbmRCaW47CkBAIC0y NTUsMTEgKzI1NiwxMSBAQCAkbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2Rl X3N0YW5kYnksICdyZXBsYXknKTsKIAogIyBPcGVuIGEgYmFja2dyb3VuZCBwc3FsIGNvbm5l Y3Rpb24gb24gdGhlIHByaW1hcnkgYW5kIGluamVjdCBhIGJhcnJpZXIgdG8KICMgYmxvY2sg cHJvZ3Jlc3Mgb24gdG8ga2VlcCB0aGUgc3RhdGUgZnJvbSBhZHZhbmNpbmcgcGFzdCBpbnBy b2dyZXNzLW9uCi1teSAkbm9kZV9wcmltYXJ5X2Jwc3FsID0gJG5vZGVfcHJpbWFyeS0+YmFj a2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotJG5vZGVfcHJpbWFyeV9icHNxbC0+cXVlcnlf c2FmZSgnQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSB0dCAoYSBpbnRlZ2VyKTsnKTsKK215ICRu b2RlX3ByaW1hcnlfYnBzcWwgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9k ZSA9PiAkbm9kZV9wcmltYXJ5KTsKKyRub2RlX3ByaW1hcnlfYnBzcWwtPmRvKCdDUkVBVEUg VEVNUE9SQVJZIFRBQkxFIHR0IChhIGludGVnZXIpOycpOwogIyBBbHNvIG9wZW4gYSBiYWNr Z3JvdW5kIHBzcWwgY29ubmVjdGlvbiB0byB0aGUgc3RhbmRieSB0byBtYWtlIHN1cmUgd2Ug aGF2ZQogIyBhbiBhY3RpdmUgYmFja2VuZCBkdXJpbmcgcHJvbW90aW9uLgotbXkgJG5vZGVf c3RhbmRieV9icHNxbCA9ICRub2RlX3N0YW5kYnktPmJhY2tncm91bmRfcHNxbCgncG9zdGdy ZXMnKTsKK215ICRub2RlX3N0YW5kYnlfYnBzcWwgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNz aW9uLT5uZXcobm9kZSA9PiAkbm9kZV9zdGFuZGJ5KTsKIAogIyBTdGFydCB0byBlbmFibGUg Y2hlY2tzdW1zIGFuZCB3YWl0IHVudGlsIGJvdGggcHJpbWFyeSBhbmQgc3RhbmRieSBoYXZl IG1vdmVkCiAjIHRvIHRoZSBpbnByb2dyZXNzLW9uIHN0YXRlLiAgUHJvY2Vzc2luZyB3aWxs IGJsb2NrIGhlcmUgYXMgdGhlIHRlbXBvcmFyeSByZWwKQEAgLTI4MSw3ICsyODIsMTEgQEAg JHJlc3VsdCA9ICRub2RlX3N0YW5kYnlfYnBzcWwtPnF1ZXJ5X3NhZmUoIlNIT1cgZGF0YV9j aGVja3N1bXM7Iik7CiBpcygkcmVzdWx0LCAnb2ZmJywKIAknZW5zdXJlIGNoZWNrc3VtcyBh cmUgc2V0IHRvIG9mZiBhZnRlciBwcm9tb3Rpb24gZHVyaW5nIGlucHJvZ3Jlc3Mtb24nKTsK IAotJG5vZGVfc3RhbmRieV9icHNxbC0+cXVpdDsKKyMgVGhlIHByaW1hcnkncyBzZXNzaW9u IHdhcyBrZXB0IG9wZW4gb25seSB0byBob2xkIHRoZSBibG9ja2luZyB0ZW1wIHRhYmxlOwor IyBjbG9zZSBpdCBleHBsaWNpdGx5IChpdHMgYmFja2VuZCBpcyBhbHJlYWR5IGdvbmUgYWZ0 ZXIgdGhlIGNyYXNoKSBzbyBpdCBpcworIyBub3QgbGVmdCB0byBiZSB0b3JuIGRvd24gYXQg Z2xvYmFsIGRlc3RydWN0aW9uLgorJG5vZGVfcHJpbWFyeV9icHNxbC0+Y2xvc2U7Ciskbm9k ZV9zdGFuZGJ5X2Jwc3FsLT5jbG9zZTsKICRub2RlX3N0YW5kYnktPnN0b3A7CiAKIGRvbmVf dGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NoZWNrc3Vt cy90LzAwNF9vZmZsaW5lLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NoZWNrc3Vtcy90 LzAwNF9vZmZsaW5lLnBsCmluZGV4IDczYzI3OWU3NWUwLi5iZTZiNmI2ZTRjNiAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NoZWNrc3Vtcy90LzAwNF9vZmZsaW5lLnBs CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jaGVja3N1bXMvdC8wMDRfb2ZmbGluZS5w bApAQCAtOCw2ICs4LDcgQEAgdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogCiB1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGls czsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFRlc3Q6Ok1vcmU7CiAK IHVzZSBGaW5kQmluOwpAQCAtNTMsOCArNTQsOCBAQCB0ZXN0X2NoZWNrc3VtX3N0YXRlKCRu b2RlLCAnb2ZmJyk7CiAjIGNhbiBhY2NvbXBsaXNoIHRoaXMgYnkgc2V0dGluZyB1cCBhbiBp bnRlcmFjdGl2ZSBwc3FsIHByb2Nlc3Mgd2hpY2gga2VlcHMgdGhlCiAjIHRlbXBvcmFyeSB0 YWJsZSBjcmVhdGVkIGFzIHdlIGVuYWJsZSBjaGVja3N1bXMgaW4gYW5vdGhlciBwc3FsIHBy b2Nlc3MuCiAKLW15ICRic2Vzc2lvbiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3Rn cmVzJyk7Ci0kYnNlc3Npb24tPnF1ZXJ5X3NhZmUoJ0NSRUFURSBURU1QT1JBUlkgVEFCTEUg dHQgKGEgaW50ZWdlcik7Jyk7CitteSAkYnNlc3Npb24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpT ZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskYnNlc3Npb24tPmRvKCdDUkVBVEUgVEVN UE9SQVJZIFRBQkxFIHR0IChhIGludGVnZXIpOycpOwogCiAjIEluIGFub3RoZXIgc2Vzc2lv biwgbWFrZSBzdXJlIHdlIGNhbiBzZWUgdGhlIGJsb2NraW5nIHRlbXAgdGFibGUgYnV0IHN0 YXJ0CiAjIHByb2Nlc3NpbmcgYW55d2F5cyBhbmQgY2hlY2sgdGhhdCB3ZSBhcmUgYmxvY2tl ZCB3aXRoIGEgcHJvcGVyIHdhaXQgZXZlbnQuCkBAIC03MCw3ICs3MSw3IEBAIGVuYWJsZV9k YXRhX2NoZWNrc3Vtcygkbm9kZSwgd2FpdCA9PiAnaW5wcm9ncmVzcy1vbicpOwogIyBTdG9w IHRoZSBjbHVzdGVyIGJlZm9yZSBleGl0aW5nIHRoZSBiYWNrZ3JvdW5kIHNlc3Npb24gc2lu Y2Ugb3RoZXJ3aXNlCiAjIGNoZWNrc3VtcyBtaWdodCBoYXZlIHRpbWUgdG8gZ2V0IGVuYWJs ZWQgYmVmb3JlIHNodXR0aW5nIGRvd24gdGhlIGNsdXN0ZXIuCiAkbm9kZS0+c3RvcCgnZmFz dCcpOwotJGJzZXNzaW9uLT5xdWl0OworJGJzZXNzaW9uLT5jbG9zZTsKICRub2RlLT5jaGVj a3N1bV9lbmFibGVfb2ZmbGluZTsKICRub2RlLT5zdGFydDsKIApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMDVfdGltZW91dHMucGwgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfbWlzYy90LzAwNV90aW1lb3V0cy5wbAppbmRleCBjMTZiN2RiZjVlNi4u ZDY0YTc4N2E5YWIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3Qv MDA1X3RpbWVvdXRzLnBsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3QvMDA1 X3RpbWVvdXRzLnBsCkBAIC02LDYgKzYsNyBAQCB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2Fs bCc7CiB1c2UgbG9jYWxlOwogCiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3Vz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOwogdXNlIFRpbWU6OkhpUmVzIHF3KHVzbGVlcCk7CiB1c2UgVGVzdDo6TW9yZTsKQEAg LTQyLDI0ICs0MywxNiBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUg RVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7Jyk7CiAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCiAJIlNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndHJhbnNhY3Rpb24t dGltZW91dCcsICd3YWl0Jyk7Iik7CiAKLW15ICRwc3FsX3Nlc3Npb24gPSAkbm9kZS0+YmFj a2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOworbXkgJHBzcWxfc2Vzc2lvbiA9IFBvc3RncmVT UUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKIAotIyBUaGUgZm9sbG93 aW5nIHF1ZXJ5IHdpbGwgZ2VuZXJhdGUgYSBzdHJlYW0gb2YgU0VMRUNUIDEgcXVlcmllcy4g VGhpcyBpcyBkb25lCi0jIHNvIHRvIGV4ZXJjaXNlIHRyYW5zYWN0aW9uIHRpbWVvdXQgaW4g dGhlIHByZXNlbmNlIG9mIHNob3J0IHF1ZXJpZXMuCi0jIE5vdGU6IHRoZSBpbnRlcnZhbCB2 YWx1ZSBpcyBwYXJzZWQgd2l0aCBsb2NhbGUtYXdhcmUgc3RydG9kKCkKLSRwc3FsX3Nlc3Np b24tPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX2JnX3BzcWwvLAotCXNwcmludGYoCi0J CXEoXGVjaG8gc3RhcnRpbmdfYmdfcHNxbAotCQlTRVQgdHJhbnNhY3Rpb25fdGltZW91dCB0 byAnMTBtcyc7Ci0JCUJFR0lOOwotCQlTRUxFQ1QgMSBcd2F0Y2ggJWcKLQkJXHEKLSksIDAu MDAxKSk7CiskcHNxbF9zZXNzaW9uLT5kbygiU0VUIHRyYW5zYWN0aW9uX3RpbWVvdXQgdG8g JzEwbXMnOyIpOworCiskcHNxbF9zZXNzaW9uLT5kb19hc3luYygiQkVHSU47IERPICcgYmVn aW4gbG9vcCBQRVJGT1JNIHBnX3NsZWVwKDAuMDAxKTsgZW5kIGxvb3A7IGVuZCAnOyIpOwog CiAjIFdhaXQgdW50aWwgdGhlIGJhY2tlbmQgZW50ZXJzIHRoZSB0aW1lb3V0IGluamVjdGlv biBwb2ludC4gV2lsbCBnZXQgYW4gZXJyb3IKICMgaGVyZSBpZiBhbnl0aGluZyBnb2VzIHdy b25nLgogJG5vZGUtPndhaXRfZm9yX2V2ZW50KCdjbGllbnQgYmFja2VuZCcsICd0cmFuc2Fj dGlvbi10aW1lb3V0Jyk7CitwYXNzKCJnb3QgdHJhbnNhY3Rpb24gdGltZW91dCBldmVudCIp OwogCiBteSAkbG9nX29mZnNldCA9IC1zICRub2RlLT5sb2dmaWxlOwogCkBAIC03MCwxMSAr NjMsOSBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAjIENoZWNrIHRoYXQgdGhl IHRpbWVvdXQgd2FzIGxvZ2dlZC4KICRub2RlLT53YWl0X2Zvcl9sb2coJ3Rlcm1pbmF0aW5n IGNvbm5lY3Rpb24gZHVlIHRvIHRyYW5zYWN0aW9uIHRpbWVvdXQnLAogCSRsb2dfb2Zmc2V0 KTsKK3Bhc3MoImdvdCB0cmFuc2FjdGlvbiB0aW1lb3V0IGxvZyIpOwogCi0jIElmIHdlIHNl bmQgXHEgd2l0aCAkcHNxbF9zZXNzaW9uLT5xdWl0IHRoZSBjb21tYW5kIGNhbiBiZSBzZW50 IHRvIHRoZSBzZXNzaW9uCi0jIGFscmVhZHkgY2xvc2VkLiBTbyBccSBpcyBpbiBpbml0aWFs IHNjcmlwdCwgaGVyZSB3ZSBvbmx5IGZpbmlzaCBJUEM6OlJ1bi4KLSRwc3FsX3Nlc3Npb24t PntydW59LT5maW5pc2g7Ci0KKyRwc3FsX3Nlc3Npb24tPmNsb3NlOwogCiAjCiAjIDIuIFRl c3Qgb2YgdGhlIGlkbGUgaW4gdHJhbnNhY3Rpb24gdGltZW91dApAQCAtODUsMTAgKzc2LDgg QEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogKTsKIAogIyBXZSBiZWdpbiBhIHRy YW5zYWN0aW9uIGFuZCB0aGUgaGFuZCBvbiB0aGUgbGluZQotJHBzcWxfc2Vzc2lvbiA9ICRu b2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7Ci0kcHNxbF9zZXNzaW9uLT5xdWVy eV91bnRpbCgKLQlxci9zdGFydGluZ19iZ19wc3FsLywgcSgKLSAgIFxlY2hvIHN0YXJ0aW5n X2JnX3BzcWwKKyRwc3FsX3Nlc3Npb24tPnJlY29ubmVjdDsKKyRwc3FsX3Nlc3Npb24tPmRv KHEoCiAgICBTRVQgaWRsZV9pbl90cmFuc2FjdGlvbl9zZXNzaW9uX3RpbWVvdXQgdG8gJzEw bXMnOwogICAgQkVHSU47CiApKTsKQEAgLTk2LDYgKzg1LDcgQEAgJHBzcWxfc2Vzc2lvbi0+ cXVlcnlfdW50aWwoCiAjIFdhaXQgdW50aWwgdGhlIGJhY2tlbmQgZW50ZXJzIHRoZSB0aW1l b3V0IGluamVjdGlvbiBwb2ludC4KICRub2RlLT53YWl0X2Zvcl9ldmVudCgnY2xpZW50IGJh Y2tlbmQnLAogCSdpZGxlLWluLXRyYW5zYWN0aW9uLXNlc3Npb24tdGltZW91dCcpOworcGFz cygiZ290IGlkbGUgaW4gdHJhbnNhY3Rpb24gdGltZW91dCBldmVudCIpOwogCiAkbG9nX29m ZnNldCA9IC1zICRub2RlLT5sb2dmaWxlOwogCkBAIC0xMDYsOCArOTYsOSBAQCAkbm9kZS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAjIENoZWNrIHRoYXQgdGhlIHRpbWVvdXQgd2FzIGxv Z2dlZC4KICRub2RlLT53YWl0X2Zvcl9sb2coCiAJJ3Rlcm1pbmF0aW5nIGNvbm5lY3Rpb24g ZHVlIHRvIGlkbGUtaW4tdHJhbnNhY3Rpb24gdGltZW91dCcsICRsb2dfb2Zmc2V0KTsKK3Bh c3MoImdvdCBpZGxlIGluIHRyYW5zYWN0aW9uIHRpbWVvdXQgbG9nIik7CiAKLW9rKCRwc3Fs X3Nlc3Npb24tPnF1aXQpOworJHBzcWxfc2Vzc2lvbi0+Y2xvc2U7CiAKIAogIwpAQCAtMTE3 LDE1ICsxMDgsMTQgQEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2lkbGUtc2Vzc2lvbi10aW1lb3V0JywgJ3dhaXQn KTsiKTsKIAogIyBXZSBqdXN0IGluaXRpYWxpemUgdGhlIEdVQyBhbmQgd2FpdC4gTm8gdHJh bnNhY3Rpb24gaXMgcmVxdWlyZWQuCi0kcHNxbF9zZXNzaW9uID0gJG5vZGUtPmJhY2tncm91 bmRfcHNxbCgncG9zdGdyZXMnKTsKLSRwc3FsX3Nlc3Npb24tPnF1ZXJ5X3VudGlsKAotCXFy L3N0YXJ0aW5nX2JnX3BzcWwvLCBxKAotICAgXGVjaG8gc3RhcnRpbmdfYmdfcHNxbAorJHBz cWxfc2Vzc2lvbi0+cmVjb25uZWN0OworJHBzcWxfc2Vzc2lvbi0+ZG8ocSgKICAgIFNFVCBp ZGxlX3Nlc3Npb25fdGltZW91dCB0byAnMTBtcyc7CiApKTsKIAogIyBXYWl0IHVudGlsIHRo ZSBiYWNrZW5kIGVudGVycyB0aGUgdGltZW91dCBpbmplY3Rpb24gcG9pbnQuCiAkbm9kZS0+ d2FpdF9mb3JfZXZlbnQoJ2NsaWVudCBiYWNrZW5kJywgJ2lkbGUtc2Vzc2lvbi10aW1lb3V0 Jyk7CitwYXNzKCJnb3QgaWRsZSBzZXNzaW9uIHRpbWVvdXQgZXZlbnQiKTsKIAogJGxvZ19v ZmZzZXQgPSAtcyAkbm9kZS0+bG9nZmlsZTsKIApAQCAtMTM2LDcgKzEyNiw4IEBAICRub2Rl LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKICMgQ2hlY2sgdGhhdCB0aGUgdGltZW91dCB3YXMg bG9nZ2VkLgogJG5vZGUtPndhaXRfZm9yX2xvZygndGVybWluYXRpbmcgY29ubmVjdGlvbiBk dWUgdG8gaWRsZS1zZXNzaW9uIHRpbWVvdXQnLAogCSRsb2dfb2Zmc2V0KTsKK3Bhc3MoImdv dCBpZGxlIHNlc2lvbiB0aWVtb3V0IGxvZyIpOwogCi1vaygkcHNxbF9zZXNzaW9uLT5xdWl0 KTsKKyRwc3FsX3Nlc3Npb24tPmNsb3NlOwogCiBkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3QvMDA3X2NhdGNhY2hlX2ludmFsLnBs IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMDdfY2F0Y2FjaGVfaW52YWwucGwK aW5kZXggNDI0NTU2MjYxYzkuLmUzYjNmZDhiYWU5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfbWlzYy90LzAwN19jYXRjYWNoZV9pbnZhbC5wbAorKysgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAwN19jYXRjYWNoZV9pbnZhbC5wbApAQCAtNDYsMTIg KzQ2LDEyIEBAICRub2RlLT5zYWZlX3BzcWwoCiAgICAgQ1JFQVRFIEZVTkNUSU9OIGZvb2Z1 bmMoZHVtbXkgaW50ZWdlcikgUkVUVVJOUyBpbnRlZ2VyIEFTIFwkXCQgU0VMRUNUIDE7IC8q ICRsb25ndGV4dCAqLyBcJFwkIExBTkdVQUdFIFNRTAogXSk7CiAKLW15ICRwc3FsX3Nlc3Np b24gPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotbXkgJHBzcWxfc2Vz c2lvbjIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOworbXkgJHBzcWxf c2Vzc2lvbiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2Rl KTsKK215ICRwc3FsX3Nlc3Npb24yID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3 KG5vZGUgPT4gJG5vZGUpOwogCiAjIFNldCBpbmplY3Rpb24gcG9pbnQgaW4gdGhlIHNlc3Np b24sIHRvIHBhdXNlIHdoaWxlIHBvcHVsYXRpbmcgdGhlCiAjIGNhdGNhY2hlIGxpc3QKLSRw c3FsX3Nlc3Npb24tPnF1ZXJ5X3NhZmUoCiskcHNxbF9zZXNzaW9uLT5kbygKIAlxcVsKICAg ICBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKICAgICBTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19hdHRhY2goJ2NhdGNhY2hlLWxpc3QtbWlzcy1zeXN0YWJsZS1zY2Fu LXN0YXJ0ZWQnLCAnd2FpdCcpOwpAQCAtNTksMTAgKzU5LDkgQEAgJHBzcWxfc2Vzc2lvbi0+ cXVlcnlfc2FmZSgKIAogIyBUaGlzIHBhdXNlcyBvbiB0aGUgaW5qZWN0aW9uIHBvaW50IHdo aWxlIHBvcHVsYXRpbmcgY2F0Y2FjaGUgbGlzdAogIyBmb3IgZnVuY3Rpb25zIHdpdGggbmFt ZSAiZm9vZnVuYyIKLSRwc3FsX3Nlc3Npb24tPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5n X2JnX3BzcWwvLCBxKAotICAgXGVjaG8gc3RhcnRpbmdfYmdfcHNxbAotICAgU0VMRUNUIGZv b2Z1bmMoMSk7CiskcHNxbF9zZXNzaW9uLT5kb19hc3luYygKKyAgIHEoCisgICAgICBTRUxF Q1QgZm9vZnVuYygxKTsKICkpOwogCiAjIFdoaWxlIHRoZSBmaXJzdCBzZXNzaW9uIGlzIGJ1 aWxkaW5nIHRoZSBjYXRjYWNoZSBsaXN0LCBjcmVhdGUgYSBuZXcKQEAgLTgzLDE2ICs4Miwx OSBAQCAkbm9kZS0+c2FmZV9wc3FsKAogIyB0cnlpbmcgdG8gZXhlcmNpc2UgaGVyZS4pCiAj CiAjIFRoZSAiU0VMRUNUIGZvb2Z1bmMoMSkiIHF1ZXJ5IHdpbGwgbm93IGZpbmlzaC4KLSRw c3FsX3Nlc3Npb24yLT5xdWVyeV9zYWZlKAorJHBzcWxfc2Vzc2lvbjItPmRvKAogCXFxWwog ICAgIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnY2F0Y2FjaGUtbGlzdC1taXNz LXN5c3RhYmxlLXNjYW4tc3RhcnRlZCcpOwogICAgIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X2RldGFjaCgnY2F0Y2FjaGUtbGlzdC1taXNzLXN5c3RhYmxlLXNjYW4tc3RhcnRlZCcpOwog XSk7CiAKICMgVGVzdCB0aGF0IHRoZSBuZXcgZnVuY3Rpb24gaXMgdmlzaWJsZSB0byB0aGUg c2Vzc2lvbi4KLSRwc3FsX3Nlc3Npb24tPnF1ZXJ5X3NhZmUoIlNFTEVDVCBmb29mdW5jKCk7 Iik7CiskcHNxbF9zZXNzaW9uLT53YWl0X2Zvcl9jb21wbGV0aW9uOworbXkgJHJlcyA9ICRw c3FsX3Nlc3Npb24tPnF1ZXJ5KCJTRUxFQ1QgZm9vZnVuYygpOyIpOwogCi1vaygkcHNxbF9z ZXNzaW9uLT5xdWl0KTsKLW9rKCRwc3FsX3Nlc3Npb24yLT5xdWl0KTsKK2lzKCRyZXMtPntz dGF0dXN9LCAyLCAiZ290IFRVUExFU19PSyIpOworCiskcHNxbF9zZXNzaW9uLT5jbG9zZTsK KyRwc3FsX3Nlc3Npb24yLT5jbG9zZTsKIAogZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAxMF9pbmRleF9jb25jdXJyZW50bHlf dXBzZXJ0LnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMTBfaW5kZXhfY29u Y3VycmVudGx5X3Vwc2VydC5wbAppbmRleCA1MGEwZTdkYjhmNy4uYTczNTljYjA2MjQgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3QvMDEwX2luZGV4X2NvbmN1 cnJlbnRseV91cHNlcnQucGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8w MTBfaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydC5wbApAQCAtMTMsNiArMTMsNyBAQCB1c2Ug c3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogCiB1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNl IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiB1c2UgVGltZTo6 SGlSZXMgcXcodXNsZWVwKTsKQEAgLTUxLDQ3ICs1MiwzOCBAQCBBTFRFUiBUQUJMRSB0ZXN0 LnRibGV4cHIgU0VUIChwYXJhbGxlbF93b3JrZXJzPTApOwogIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogbm90ZSgnVGVzdDogUkVJTkRFWCBDT05DVVJSRU5UTFkgKyBVUFNFUlQgKHdha2V1 cCBhdCBzZXQtZGVhZCBwaGFzZSknKTsKIAotIyBDcmVhdGUgc2Vzc2lvbnMgd2l0aCBvbl9l cnJvcl9zdG9wID0+IDAgc28gcHNxbCBkb2Vzbid0IGV4aXQgb24gU1FMIGVycm9ycy4KLSMg VGhpcyBhbGxvd3MgdXMgdG8gY29sbGVjdCBzdGRlcnIgYW5kIGRldGVjdCBlcnJvcnMgYWZ0 ZXIgdGhlIHRlc3QgY29tcGxldGVzLgotbXkgJHMxID0gJG5vZGUtPmJhY2tncm91bmRfcHNx bCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotbXkgJHMyID0gJG5vZGUtPmJh Y2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotbXkgJHMz ID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+ IDApOworIyBDcmVhdGUgc2Vzc2lvbnMgZm9yIGNvbmN1cnJlbnQgb3BlcmF0aW9ucworbXkg JHMxID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwor bXkgJHMyID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUp OworbXkgJHMzID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5v ZGUpOwogCiAjIFNldHVwIGluamVjdGlvbiBwb2ludHMgZm9yIGVhY2ggc2Vzc2lvbgotJHMx LT5xdWVyeV9zYWZlKAorJHMxLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNf c2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2NoZWNrLWV4 Y2x1c2lvbi1vci11bmlxdWUtY29uc3RyYWludC1uby1jb25mbGljdCcsICd3YWl0Jyk7CiBd KTsKIAotJHMyLT5xdWVyeV9zYWZlKAorJHMyLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlv bl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2go J2V4ZWMtaW5zZXJ0LWJlZm9yZS1pbnNlcnQtc3BlY3VsYXRpdmUnLCAnd2FpdCcpOwogXSk7 CiAKLSRzMy0+cXVlcnlfc2FmZSgKKyRzMy0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25f cG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdy ZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc2V0LWRlYWQnLCAnd2FpdCcp OwogXSk7CiAKICMgczMgc3RhcnRzIFJFSU5ERVggKHdpbGwgYmxvY2sgb24gcmVpbmRleC1y ZWxhdGlvbi1jb25jdXJyZW50bHktYmVmb3JlLXNldC1kZWFkKQotJHMzLT5xdWVyeV91bnRp bCgKLQlxci9zdGFydGluZ19yZWluZGV4LywgcVsKLVxlY2hvIHN0YXJ0aW5nX3JlaW5kZXgK LVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHRlc3QudGJscGtfcGtleTsKLV0pOworJHMz LT5kb19hc3luYyhxW1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHRlc3QudGJscGtfcGtl eTtdKTsKIAogIyBXYWl0IGZvciBzMyB0byBoaXQgaW5qZWN0aW9uIHBvaW50CiBva19pbmpl Y3Rpb25fcG9pbnQoJG5vZGUsICdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZv cmUtc2V0LWRlYWQnKTsKIAogIyBzMSBzdGFydHMgVVBTRVJUICh3aWxsIGJsb2NrIG9uIGNo ZWNrLWV4Y2x1c2lvbi1vci11bmlxdWUtY29uc3RyYWludC1uby1jb25mbGljdCkKLSRzMS0+ cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfdXBzZXJ0X3MxLywgcVsKLVxlY2hvIHN0YXJ0 aW5nX3Vwc2VydF9zMQotSU5TRVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLG5vdygp KSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1d KTsKKyRzMS0+ZG9fYXN5bmMocVtJTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMs bm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3co KTtdKTsKIAogIyBXYWl0IGZvciBzMSB0byBoaXQgaW5qZWN0aW9uIHBvaW50CiBva19pbmpl Y3Rpb25fcG9pbnQoJG5vZGUsICdjaGVjay1leGNsdXNpb24tb3ItdW5pcXVlLWNvbnN0cmFp bnQtbm8tY29uZmxpY3QnKTsKQEAgLTEwMSwxMSArOTMsNyBAQCB3YWtldXBfaW5qZWN0aW9u X3BvaW50KCRub2RlLAogCSdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUt c2V0LWRlYWQnKTsKIAogIyBzMiBzdGFydHMgVVBTRVJUICh3aWxsIGJsb2NrIG9uIGV4ZWMt aW5zZXJ0LWJlZm9yZS1pbnNlcnQtc3BlY3VsYXRpdmUpCi0kczItPnF1ZXJ5X3VudGlsKAot CXFyL3N0YXJ0aW5nX3Vwc2VydF9zMi8sIHFbCi1cZWNobyBzdGFydGluZ191cHNlcnRfczIK LUlOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFMVUVTICgxMyxub3coKSkgT04gQ09ORkxJQ1Qg KGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOwotXSk7CiskczItPmRvX2Fz eW5jKHFbSU5TRVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLG5vdygpKSBPTiBDT05G TElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7XSk7CiAKICMgV2Fp dCBmb3IgczIgdG8gaGl0IGluamVjdGlvbiBwb2ludAogb2tfaW5qZWN0aW9uX3BvaW50KCRu b2RlLCAnZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVjdWxhdGl2ZScpOwpAQCAtMTI1 LDUxICsxMTMsMzkgQEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnVFJVTkNBVEUg VEFCTEUgdGVzdC50YmxwaycpOwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogbm90ZSgnVGVz dDogUkVJTkRFWCBDT05DVVJSRU5UTFkgKyBVUFNFUlQgKHdha2V1cCBhdCBzd2FwIHBoYXNl KScpOwogCi0kczEgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vy cm9yX3N0b3AgPT4gMCk7Ci0kczIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jl cycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0kczMgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3Fs KCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CiskczEgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczIgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczMgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKLSRzMS0+cXVlcnlfc2FmZSgK KyRzMS0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwog U0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdjaGVjay1leGNsdXNpb24tb3ItdW5p cXVlLWNvbnN0cmFpbnQtbm8tY29uZmxpY3QnLCAnd2FpdCcpOwogXSk7CiAKLSRzMi0+cXVl cnlfc2FmZSgKKyRzMi0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9s b2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdleGVjLWluc2VydC1i ZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlJywgJ3dhaXQnKTsKIF0pOwogCi0kczMtPnF1ZXJ5 X3NhZmUoCiskczMtPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9j YWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgncmVpbmRleC1yZWxhdGlv bi1jb25jdXJyZW50bHktYmVmb3JlLXN3YXAnLCAnd2FpdCcpOwogXSk7CiAKLSRzMy0+cXVl cnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfcmVpbmRleC8sIHFbCi1cZWNobyBzdGFydGluZ19y ZWluZGV4Ci1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB0ZXN0LnRibHBrX3BrZXk7Ci1d KTsKKyRzMy0+ZG9fYXN5bmMocVtSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB0ZXN0LnRi bHBrX3BrZXk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ3JlaW5kZXgtcmVs YXRpb24tY29uY3VycmVudGx5LWJlZm9yZS1zd2FwJyk7CiAKLSRzMS0+cXVlcnlfdW50aWwo Ci0JcXIvc3RhcnRpbmdfdXBzZXJ0X3MxLywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9z MQotSU5TRVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLG5vdygpKSBPTiBDT05GTElD VCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMS0+ZG9f YXN5bmMocVtJTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsbm93KCkpIE9OIENP TkZMSUNUIChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tf aW5qZWN0aW9uX3BvaW50KCRub2RlLCAnY2hlY2stZXhjbHVzaW9uLW9yLXVuaXF1ZS1jb25z dHJhaW50LW5vLWNvbmZsaWN0Jyk7CiAKIHdha2V1cF9pbmplY3Rpb25fcG9pbnQoJG5vZGUs ICdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc3dhcCcpOwogCi0kczIt PnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX3Vwc2VydF9zMi8sIHFbCi1cZWNobyBzdGFy dGluZ191cHNlcnRfczIKLUlOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFMVUVTICgxMyxub3co KSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOwot XSk7CiskczItPmRvX2FzeW5jKHFbSU5TRVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEz LG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93 KCk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2V4ZWMtaW5zZXJ0LWJlZm9y ZS1pbnNlcnQtc3BlY3VsYXRpdmUnKTsKIApAQCAtMTg0LDUwICsxNjAsMzggQEAgJG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnVFJVTkNBVEUgVEFCTEUgdGVzdC50YmxwaycpOwog IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogbm90ZSgnVGVzdDogUkVJTkRFWCBDT05DVVJSRU5U TFkgKyBVUFNFUlQgKHMxIHdha2VzIGJlZm9yZSByZWluZGV4KScpOwogCi0kczEgPSAkbm9k ZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0k czIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3Ag PT4gMCk7Ci0kczMgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vy cm9yX3N0b3AgPT4gMCk7CiskczEgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXco bm9kZSA9PiAkbm9kZSk7CiskczIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXco bm9kZSA9PiAkbm9kZSk7CiskczMgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXco bm9kZSA9PiAkbm9kZSk7CiAKLSRzMS0+cXVlcnlfc2FmZSgKKyRzMS0+ZG8oCiAJcVsKIFNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9w b2ludHNfYXR0YWNoKCdjaGVjay1leGNsdXNpb24tb3ItdW5pcXVlLWNvbnN0cmFpbnQtbm8t Y29uZmxpY3QnLCAnd2FpdCcpOwogXSk7CiAKLSRzMi0+cXVlcnlfc2FmZSgKKyRzMi0+ZG8o CiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfYXR0YWNoKCdleGVjLWluc2VydC1iZWZvcmUtaW5zZXJ0LXNwZWN1 bGF0aXZlJywgJ3dhaXQnKTsKIF0pOwogCi0kczMtPnF1ZXJ5X3NhZmUoCiskczMtPmRvKAog CXFbCiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX2F0dGFjaCgncmVpbmRleC1yZWxhdGlvbi1jb25jdXJyZW50bHktYmVm b3JlLXNldC1kZWFkJywgJ3dhaXQnKTsKIF0pOwogCi0kczMtPnF1ZXJ5X3VudGlsKAotCXFy L3N0YXJ0aW5nX3JlaW5kZXgvLCBxWwotXGVjaG8gc3RhcnRpbmdfcmVpbmRleAotUkVJTkRF WCBJTkRFWCBDT05DVVJSRU5UTFkgdGVzdC50Ymxwa19wa2V5OwotXSk7CiskczMtPmRvX2Fz eW5jKHFbUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgdGVzdC50Ymxwa19wa2V5O10pOwog CiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJl bnRseS1iZWZvcmUtc2V0LWRlYWQnKTsKIAotJHMxLT5xdWVyeV91bnRpbCgKLQlxci9zdGFy dGluZ191cHNlcnRfczEvLCBxWwotXGVjaG8gc3RhcnRpbmdfdXBzZXJ0X3MxCi1JTlNFUlQg SU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsbm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBV UERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTsKLV0pOworJHMxLT5kb19hc3luYyhxW0lO U0VSVCBJTlRPIHRlc3QudGJscGsgVkFMVUVTICgxMyxub3coKSkgT04gQ09ORkxJQ1QgKGkp IERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpO10pOwogCiBva19pbmplY3Rpb25f cG9pbnQoJG5vZGUsICdjaGVjay1leGNsdXNpb24tb3ItdW5pcXVlLWNvbnN0cmFpbnQtbm8t Y29uZmxpY3QnKTsKIAogIyBTdGFydCBzMiBCRUZPUkUgd2FraW5nIHJlaW5kZXggKGtleSBk aWZmZXJlbmNlIGZyb20gcGVybXV0YXRpb24gMSkKLSRzMi0+cXVlcnlfdW50aWwoCi0JcXIv c3RhcnRpbmdfdXBzZXJ0X3MyLywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMgotSU5T RVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLG5vdygpKSBPTiBDT05GTElDVCAoaSkg RE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMi0+ZG9fYXN5bmMo cVtJTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsbm93KCkpIE9OIENPTkZMSUNU IChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tfaW5qZWN0 aW9uX3BvaW50KCRub2RlLCAnZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVjdWxhdGl2 ZScpOwogCkBAIC0yNDUsNTIgKzIwOSw0MCBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICdUUlVOQ0FURSBUQUJMRSB0ZXN0LnRibHBrJyk7CiAjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCiBub3RlKCdUZXN0OiBSRUlOREVYICsgVVBTRVJUIE9OIENPTlNUUkFJTlQgKHNldC1k ZWFkIHBoYXNlKScpOwogCi0kczEgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jl cycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0kczIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3Fs KCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0kczMgPSAkbm9kZS0+YmFja2dy b3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CiskczEgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczIgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczMgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKLSRzMS0+cXVl cnlfc2FmZSgKKyRzMS0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9s b2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdjaGVjay1leGNsdXNp b24tb3ItdW5pcXVlLWNvbnN0cmFpbnQtbm8tY29uZmxpY3QnLCAnd2FpdCcpOwogXSk7CiAK LSRzMi0+cXVlcnlfc2FmZSgKKyRzMi0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9p bnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdleGVj LWluc2VydC1iZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlJywgJ3dhaXQnKTsKIF0pOwogCi0k czMtPnF1ZXJ5X3NhZmUoCiskczMtPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgncmVpbmRl eC1yZWxhdGlvbi1jb25jdXJyZW50bHktYmVmb3JlLXNldC1kZWFkJywgJ3dhaXQnKTsKIF0p OwogCi0kczMtPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX3JlaW5kZXgvLCBxWwotXGVj aG8gc3RhcnRpbmdfcmVpbmRleAotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgdGVzdC50 Ymxwa19wa2V5OwotXSk7CiskczMtPmRvX2FzeW5jKHFbUkVJTkRFWCBJTkRFWCBDT05DVVJS RU5UTFkgdGVzdC50Ymxwa19wa2V5O10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUs ICdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc2V0LWRlYWQnKTsKIAot JHMxLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ191cHNlcnRfczEvLCBxWwotXGVjaG8g c3RhcnRpbmdfdXBzZXJ0X3MxCi1JTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMs IG5vdygpKSBPTiBDT05GTElDVCBPTiBDT05TVFJBSU5UIHRibHBrX3BrZXkgRE8gVVBEQVRF IFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMS0+ZG9fYXN5bmMocVtJTlNFUlQg SU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElDVCBPTiBDT05T VFJBSU5UIHRibHBrX3BrZXkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7XSk7 CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2NoZWNrLWV4Y2x1c2lvbi1vci11bmlx dWUtY29uc3RyYWludC1uby1jb25mbGljdCcpOwogCiB3YWtldXBfaW5qZWN0aW9uX3BvaW50 KCRub2RlLAogCSdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc2V0LWRl YWQnKTsKIAotJHMyLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ191cHNlcnRfczIvLCBx WwotXGVjaG8gc3RhcnRpbmdfdXBzZXJ0X3MyCi1JTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZB TFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElDVCBPTiBDT05TVFJBSU5UIHRibHBrX3BrZXkg RE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMi0+ZG9fYXN5bmMo cVtJTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElD VCBPTiBDT05TVFJBSU5UIHRibHBrX3BrZXkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0g bm93KCk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2V4ZWMtaW5zZXJ0LWJl Zm9yZS1pbnNlcnQtc3BlY3VsYXRpdmUnKTsKIApAQCAtMzA1LDUxICsyNTcsMzkgQEAgJG5v ZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnVFJVTkNBVEUgVEFCTEUgdGVzdC50Ymxwaycp OwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogbm90ZSgnVGVzdDogUkVJTkRFWCArIFVQU0VS VCBPTiBDT05TVFJBSU5UIChzd2FwIHBoYXNlKScpOwogCi0kczEgPSAkbm9kZS0+YmFja2dy b3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0kczIgPSAkbm9k ZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0k czMgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3Ag PT4gMCk7CiskczEgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAk bm9kZSk7CiskczIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAk bm9kZSk7CiskczMgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAk bm9kZSk7CiAKLSRzMS0+cXVlcnlfc2FmZSgKKyRzMS0+ZG8oCiAJcVsKIFNFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0 YWNoKCdjaGVjay1leGNsdXNpb24tb3ItdW5pcXVlLWNvbnN0cmFpbnQtbm8tY29uZmxpY3Qn LCAnd2FpdCcpOwogXSk7CiAKLSRzMi0+cXVlcnlfc2FmZSgKKyRzMi0+ZG8oCiAJcVsKIFNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9w b2ludHNfYXR0YWNoKCdleGVjLWluc2VydC1iZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlJywg J3dhaXQnKTsKIF0pOwogCi0kczMtPnF1ZXJ5X3NhZmUoCiskczMtPmRvKAogCXFbCiBTRUxF Q1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9p bnRzX2F0dGFjaCgncmVpbmRleC1yZWxhdGlvbi1jb25jdXJyZW50bHktYmVmb3JlLXN3YXAn LCAnd2FpdCcpOwogXSk7CiAKLSRzMy0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfcmVp bmRleC8sIHFbCi1cZWNobyBzdGFydGluZ19yZWluZGV4Ci1SRUlOREVYIElOREVYIENPTkNV UlJFTlRMWSB0ZXN0LnRibHBrX3BrZXk7Ci1dKTsKKyRzMy0+ZG9fYXN5bmMocVtSRUlOREVY IElOREVYIENPTkNVUlJFTlRMWSB0ZXN0LnRibHBrX3BrZXk7XSk7CiAKIG9rX2luamVjdGlv bl9wb2ludCgkbm9kZSwgJ3JlaW5kZXgtcmVsYXRpb24tY29uY3VycmVudGx5LWJlZm9yZS1z d2FwJyk7CiAKLSRzMS0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfdXBzZXJ0X3MxLywg cVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMQotSU5TRVJUIElOVE8gdGVzdC50YmxwayBW QUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1QgT04gQ09OU1RSQUlOVCB0Ymxwa19wa2V5 IERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOwotXSk7CiskczEtPmRvX2FzeW5j KHFbSU5TRVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJ Q1QgT04gQ09OU1RSQUlOVCB0Ymxwa19wa2V5IERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9 IG5vdygpO10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdjaGVjay1leGNsdXNp b24tb3ItdW5pcXVlLWNvbnN0cmFpbnQtbm8tY29uZmxpY3QnKTsKIAogd2FrZXVwX2luamVj dGlvbl9wb2ludCgkbm9kZSwgJ3JlaW5kZXgtcmVsYXRpb24tY29uY3VycmVudGx5LWJlZm9y ZS1zd2FwJyk7CiAKLSRzMi0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfdXBzZXJ0X3My LywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMgotSU5TRVJUIElOVE8gdGVzdC50Ymxw ayBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1QgT04gQ09OU1RSQUlOVCB0Ymxwa19w a2V5IERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOwotXSk7CiskczItPmRvX2Fz eW5jKHFbSU5TRVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09O RkxJQ1QgT04gQ09OU1RSQUlOVCB0Ymxwa19wa2V5IERPIFVQREFURSBTRVQgdXBkYXRlZF9h dCA9IG5vdygpO10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdleGVjLWluc2Vy dC1iZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlJyk7CiAKQEAgLTM2NCw1MCArMzA0LDM4IEBA ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1RSVU5DQVRFIFRBQkxFIHRlc3QudGJs cGsnKTsKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIG5vdGUoJ1Rlc3Q6IFJFSU5ERVggKyBV UFNFUlQgT04gQ09OU1RSQUlOVCAoczEgd2FrZXMgYmVmb3JlIHJlaW5kZXgpJyk7CiAKLSRz MSA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9 PiAwKTsKLSRzMiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJy b3Jfc3RvcCA9PiAwKTsKLSRzMyA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVz Jywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKyRzMSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Np b24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRzMiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Np b24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRzMyA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Np b24tPm5ldyhub2RlID0+ICRub2RlKTsKIAotJHMxLT5xdWVyeV9zYWZlKAorJHMxLT5kbygK IAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19hdHRhY2goJ2NoZWNrLWV4Y2x1c2lvbi1vci11bmlxdWUtY29uc3Ry YWludC1uby1jb25mbGljdCcsICd3YWl0Jyk7CiBdKTsKIAotJHMyLT5xdWVyeV9zYWZlKAor JHMyLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2V4ZWMtaW5zZXJ0LWJlZm9yZS1pbnNl cnQtc3BlY3VsYXRpdmUnLCAnd2FpdCcpOwogXSk7CiAKLSRzMy0+cXVlcnlfc2FmZSgKKyRz My0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VM RUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJl bnRseS1iZWZvcmUtc2V0LWRlYWQnLCAnd2FpdCcpOwogXSk7CiAKLSRzMy0+cXVlcnlfdW50 aWwoCi0JcXIvc3RhcnRpbmdfcmVpbmRleC8sIHFbCi1cZWNobyBzdGFydGluZ19yZWluZGV4 Ci1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB0ZXN0LnRibHBrX3BrZXk7Ci1dKTsKKyRz My0+ZG9fYXN5bmMocVtSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB0ZXN0LnRibHBrX3Br ZXk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ3JlaW5kZXgtcmVsYXRpb24t Y29uY3VycmVudGx5LWJlZm9yZS1zZXQtZGVhZCcpOwogCi0kczEtPnF1ZXJ5X3VudGlsKAot CXFyL3N0YXJ0aW5nX3Vwc2VydF9zMS8sIHFbCi1cZWNobyBzdGFydGluZ191cHNlcnRfczEK LUlOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFMVUVTICgxMywgbm93KCkpIE9OIENPTkZMSUNU IE9OIENPTlNUUkFJTlQgdGJscGtfcGtleSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBu b3coKTsKLV0pOworJHMxLT5kb19hc3luYyhxW0lOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFM VUVTICgxMywgbm93KCkpIE9OIENPTkZMSUNUIE9OIENPTlNUUkFJTlQgdGJscGtfcGtleSBE TyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tfaW5qZWN0aW9uX3Bv aW50KCRub2RlLCAnY2hlY2stZXhjbHVzaW9uLW9yLXVuaXF1ZS1jb25zdHJhaW50LW5vLWNv bmZsaWN0Jyk7CiAKICMgU3RhcnQgczIgQkVGT1JFIHdha2luZyByZWluZGV4Ci0kczItPnF1 ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX3Vwc2VydF9zMi8sIHFbCi1cZWNobyBzdGFydGlu Z191cHNlcnRfczIKLUlOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFMVUVTICgxMywgbm93KCkp IE9OIENPTkZMSUNUIE9OIENPTlNUUkFJTlQgdGJscGtfcGtleSBETyBVUERBVEUgU0VUIHVw ZGF0ZWRfYXQgPSBub3coKTsKLV0pOworJHMyLT5kb19hc3luYyhxW0lOU0VSVCBJTlRPIHRl c3QudGJscGsgVkFMVUVTICgxMywgbm93KCkpIE9OIENPTkZMSUNUIE9OIENPTlNUUkFJTlQg dGJscGtfcGtleSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tf aW5qZWN0aW9uX3BvaW50KCRub2RlLCAnZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVj dWxhdGl2ZScpOwogCkBAIC00MjUsNTIgKzM1Myw0MCBAQCAkbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICdUUlVOQ0FURSBUQUJMRSB0ZXN0LnRibHBrJyk7CiAjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCiBub3RlKCdUZXN0OiBSRUlOREVYIG9uIHBhcnRpdGlvbmVkIHRhYmxlIChz ZXQtZGVhZCBwaGFzZSknKTsKIAotJHMxID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9z dGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotJHMyID0gJG5vZGUtPmJhY2tncm91bmRf cHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotJHMzID0gJG5vZGUtPmJh Y2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOworJHMxID0g UG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworJHMyID0g UG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworJHMzID0g UG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCi0kczEt PnF1ZXJ5X3NhZmUoCiskczEtPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19z ZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnY2hlY2stZXhj bHVzaW9uLW9yLXVuaXF1ZS1jb25zdHJhaW50LW5vLWNvbmZsaWN0JywgJ3dhaXQnKTsKIF0p OwogCi0kczItPnF1ZXJ5X3NhZmUoCiskczItPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9u X3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgn ZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVjdWxhdGl2ZScsICd3YWl0Jyk7CiBdKTsK IAotJHMzLT5xdWVyeV9zYWZlKAorJHMzLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9w b2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3Jl aW5kZXgtcmVsYXRpb24tY29uY3VycmVudGx5LWJlZm9yZS1zZXQtZGVhZCcsICd3YWl0Jyk7 CiBdKTsKIAotJHMzLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ19yZWluZGV4LywgcVsK LVxlY2hvIHN0YXJ0aW5nX3JlaW5kZXgKLVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHRl c3QudGJsX3BhcnRpdGlvbl9wa2V5OwotXSk7CiskczMtPmRvX2FzeW5jKHFbUkVJTkRFWCBJ TkRFWCBDT05DVVJSRU5UTFkgdGVzdC50YmxfcGFydGl0aW9uX3BrZXk7XSk7CiAKIG9rX2lu amVjdGlvbl9wb2ludCgkbm9kZSwgJ3JlaW5kZXgtcmVsYXRpb24tY29uY3VycmVudGx5LWJl Zm9yZS1zZXQtZGVhZCcpOwogCi0kczEtPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX3Vw c2VydF9zMS8sIHFbCi1cZWNobyBzdGFydGluZ191cHNlcnRfczEKLUlOU0VSVCBJTlRPIHRl c3QudGJscGFydGVkIFZBTFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBE QVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMS0+ZG9fYXN5bmMocVtJTlNF UlQgSU5UTyB0ZXN0LnRibHBhcnRlZCBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1Qg KGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpO10pOwogCiBva19pbmplY3Rp b25fcG9pbnQoJG5vZGUsICdjaGVjay1leGNsdXNpb24tb3ItdW5pcXVlLWNvbnN0cmFpbnQt bm8tY29uZmxpY3QnKTsKIAogd2FrZXVwX2luamVjdGlvbl9wb2ludCgkbm9kZSwKIAkncmVp bmRleC1yZWxhdGlvbi1jb25jdXJyZW50bHktYmVmb3JlLXNldC1kZWFkJyk7CiAKLSRzMi0+ cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfdXBzZXJ0X3MyLywgcVsKLVxlY2hvIHN0YXJ0 aW5nX3Vwc2VydF9zMgotSU5TRVJUIElOVE8gdGVzdC50YmxwYXJ0ZWQgVkFMVUVTICgxMywg bm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3co KTsKLV0pOworJHMyLT5kb19hc3luYyhxW0lOU0VSVCBJTlRPIHRlc3QudGJscGFydGVkIFZB TFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVk X2F0ID0gbm93KCk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2V4ZWMtaW5z ZXJ0LWJlZm9yZS1pbnNlcnQtc3BlY3VsYXRpdmUnKTsKIApAQCAtNDg1LDUxICs0MDEsMzkg QEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnVFJVTkNBVEUgVEFCTEUgdGVzdC50 YmxwYXJ0ZWQnKTsKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIG5vdGUoJ1Rlc3Q6IFJFSU5E RVggb24gcGFydGl0aW9uZWQgdGFibGUgKHN3YXAgcGhhc2UpJyk7CiAKLSRzMSA9ICRub2Rl LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKLSRz MiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9 PiAwKTsKLSRzMyA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJy b3Jfc3RvcCA9PiAwKTsKKyRzMSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhu b2RlID0+ICRub2RlKTsKKyRzMiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhu b2RlID0+ICRub2RlKTsKKyRzMyA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhu b2RlID0+ICRub2RlKTsKIAotJHMxLT5xdWVyeV9zYWZlKAorJHMxLT5kbygKIAlxWwogU0VM RUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3Bv aW50c19hdHRhY2goJ2NoZWNrLWV4Y2x1c2lvbi1vci11bmlxdWUtY29uc3RyYWludC1uby1j b25mbGljdCcsICd3YWl0Jyk7CiBdKTsKIAotJHMyLT5xdWVyeV9zYWZlKAorJHMyLT5kbygK IAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19hdHRhY2goJ2V4ZWMtaW5zZXJ0LWJlZm9yZS1pbnNlcnQtc3BlY3Vs YXRpdmUnLCAnd2FpdCcpOwogXSk7CiAKLSRzMy0+cXVlcnlfc2FmZSgKKyRzMy0+ZG8oCiAJ cVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVj dGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZv cmUtc3dhcCcsICd3YWl0Jyk7CiBdKTsKIAotJHMzLT5xdWVyeV91bnRpbCgKLQlxci9zdGFy dGluZ19yZWluZGV4LywgcVsKLVxlY2hvIHN0YXJ0aW5nX3JlaW5kZXgKLVJFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIHRlc3QudGJsX3BhcnRpdGlvbl9wa2V5OwotXSk7CiskczMtPmRv X2FzeW5jKHFbUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgdGVzdC50YmxfcGFydGl0aW9u X3BrZXk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ3JlaW5kZXgtcmVsYXRp b24tY29uY3VycmVudGx5LWJlZm9yZS1zd2FwJyk7CiAKLSRzMS0+cXVlcnlfdW50aWwoCi0J cXIvc3RhcnRpbmdfdXBzZXJ0X3MxLywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMQot SU5TRVJUIElOVE8gdGVzdC50YmxwYXJ0ZWQgVkFMVUVTICgxMywgbm93KCkpIE9OIENPTkZM SUNUIChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTsKLV0pOworJHMxLT5k b19hc3luYyhxW0lOU0VSVCBJTlRPIHRlc3QudGJscGFydGVkIFZBTFVFUyAoMTMsIG5vdygp KSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7XSk7 CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2NoZWNrLWV4Y2x1c2lvbi1vci11bmlx dWUtY29uc3RyYWludC1uby1jb25mbGljdCcpOwogCiB3YWtldXBfaW5qZWN0aW9uX3BvaW50 KCRub2RlLCAncmVpbmRleC1yZWxhdGlvbi1jb25jdXJyZW50bHktYmVmb3JlLXN3YXAnKTsK IAotJHMyLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ191cHNlcnRfczIvLCBxWwotXGVj aG8gc3RhcnRpbmdfdXBzZXJ0X3MyCi1JTlNFUlQgSU5UTyB0ZXN0LnRibHBhcnRlZCBWQUxV RVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9h dCA9IG5vdygpOwotXSk7CiskczItPmRvX2FzeW5jKHFbSU5TRVJUIElOVE8gdGVzdC50Ymxw YXJ0ZWQgVkFMVUVTICgxMywgbm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERBVEUgU0VU IHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tfaW5qZWN0aW9uX3BvaW50KCRub2RlLCAn ZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVjdWxhdGl2ZScpOwogCkBAIC01NDQsNTAg KzQ0OCwzOCBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdUUlVOQ0FURSBUQUJM RSB0ZXN0LnRibHBhcnRlZCcpOwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogbm90ZSgnVGVz dDogUkVJTkRFWCBvbiBwYXJ0aXRpb25lZCB0YWJsZSAoczEgd2FrZXMgYmVmb3JlIHJlaW5k ZXgpJyk7CiAKLSRzMSA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25f ZXJyb3Jfc3RvcCA9PiAwKTsKLSRzMiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3Rn cmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKLSRzMyA9ICRub2RlLT5iYWNrZ3JvdW5kX3Bz cWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKyRzMSA9IFBvc3RncmVTUUw6 OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRzMiA9IFBvc3RncmVTUUw6 OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRzMyA9IFBvc3RncmVTUUw6 OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKIAotJHMxLT5xdWVyeV9zYWZl KAorJHMxLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7 CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2NoZWNrLWV4Y2x1c2lvbi1vci11 bmlxdWUtY29uc3RyYWludC1uby1jb25mbGljdCcsICd3YWl0Jyk7CiBdKTsKIAotJHMyLT5x dWVyeV9zYWZlKAorJHMyLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0 X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2V4ZWMtaW5zZXJ0 LWJlZm9yZS1pbnNlcnQtc3BlY3VsYXRpdmUnLCAnd2FpdCcpOwogXSk7CiAKLSRzMy0+cXVl cnlfc2FmZSgKKyRzMy0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9s b2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4LXJlbGF0 aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc2V0LWRlYWQnLCAnd2FpdCcpOwogXSk7CiAKLSRz My0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfcmVpbmRleC8sIHFbCi1cZWNobyBzdGFy dGluZ19yZWluZGV4Ci1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB0ZXN0LnRibF9wYXJ0 aXRpb25fcGtleTsKLV0pOworJHMzLT5kb19hc3luYyhxW1JFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIHRlc3QudGJsX3BhcnRpdGlvbl9wa2V5O10pOwogCiBva19pbmplY3Rpb25fcG9p bnQoJG5vZGUsICdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc2V0LWRl YWQnKTsKIAotJHMxLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ191cHNlcnRfczEvLCBx WwotXGVjaG8gc3RhcnRpbmdfdXBzZXJ0X3MxCi1JTlNFUlQgSU5UTyB0ZXN0LnRibHBhcnRl ZCBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFURSBTRVQgdXBk YXRlZF9hdCA9IG5vdygpOwotXSk7CiskczEtPmRvX2FzeW5jKHFbSU5TRVJUIElOVE8gdGVz dC50YmxwYXJ0ZWQgVkFMVUVTICgxMywgbm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERB VEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tfaW5qZWN0aW9uX3BvaW50KCRu b2RlLCAnY2hlY2stZXhjbHVzaW9uLW9yLXVuaXF1ZS1jb25zdHJhaW50LW5vLWNvbmZsaWN0 Jyk7CiAKICMgU3RhcnQgczIgQkVGT1JFIHdha2luZyByZWluZGV4Ci0kczItPnF1ZXJ5X3Vu dGlsKAotCXFyL3N0YXJ0aW5nX3Vwc2VydF9zMi8sIHFbCi1cZWNobyBzdGFydGluZ191cHNl cnRfczIKLUlOU0VSVCBJTlRPIHRlc3QudGJscGFydGVkIFZBTFVFUyAoMTMsIG5vdygpKSBP TiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsK KyRzMi0+ZG9fYXN5bmMocVtJTlNFUlQgSU5UTyB0ZXN0LnRibHBhcnRlZCBWQUxVRVMgKDEz LCBub3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5v dygpO10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdleGVjLWluc2VydC1iZWZv cmUtaW5zZXJ0LXNwZWN1bGF0aXZlJyk7CiAKQEAgLTYwNywzNSArNDk5LDI3IEBAIG5vdGUo CiAJJ1Rlc3Q6IFJFSU5ERVggb24gcGFydGl0aW9uZWQgdGFibGUsIGNhY2hlIGludmFsIGJl dHdlZW4gdHdvIGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzJwogKTsKIAotJHMxID0gJG5vZGUt PmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotJHMy ID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+ IDApOwotJHMzID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJv cl9zdG9wID0+IDApOworJHMxID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5v ZGUgPT4gJG5vZGUpOworJHMyID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5v ZGUgPT4gJG5vZGUpOworJHMzID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5v ZGUgPT4gJG5vZGUpOwogCi0kczEtPnF1ZXJ5X3NhZmUoCiskczEtPmRvKAogCXFbCiBTRUxF Q1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9p bnRzX2F0dGFjaCgnZXhlYy1pbml0LXBhcnRpdGlvbi1hZnRlci1nZXQtcGFydGl0aW9uLWFu Y2VzdG9ycycsICd3YWl0Jyk7CiBdKTsKIAotJHMyLT5xdWVyeV9zYWZlKAorJHMyLT5kbygK IAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19hdHRhY2goJ3JlaW5kZXgtcmVsYXRpb24tY29uY3VycmVudGx5LWJl Zm9yZS1zd2FwJywgJ3dhaXQnKTsKIF0pOwogCi0kczItPnF1ZXJ5X3VudGlsKAotCXFyL3N0 YXJ0aW5nX3JlaW5kZXgvLCBxWwotXGVjaG8gc3RhcnRpbmdfcmVpbmRleAotUkVJTkRFWCBJ TkRFWCBDT05DVVJSRU5UTFkgdGVzdC50YmxfcGFydGl0aW9uX3BrZXk7Ci1dKTsKKyRzMi0+ ZG9fYXN5bmMocVtSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB0ZXN0LnRibF9wYXJ0aXRp b25fcGtleTtdKTsKIAogb2tfaW5qZWN0aW9uX3BvaW50KCRub2RlLCAncmVpbmRleC1yZWxh dGlvbi1jb25jdXJyZW50bHktYmVmb3JlLXN3YXAnKTsKIAotJHMxLT5xdWVyeV91bnRpbCgK LQlxci9zdGFydGluZ191cHNlcnRfczEvLCBxWwotXGVjaG8gc3RhcnRpbmdfdXBzZXJ0X3Mx Ci1JTlNFUlQgSU5UTyB0ZXN0LnRibHBhcnRlZCBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09O RkxJQ1QgKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOwotXSk7CiskczEt PmRvX2FzeW5jKHFbSU5TRVJUIElOVE8gdGVzdC50YmxwYXJ0ZWQgVkFMVUVTICgxMywgbm93 KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtd KTsKIAogb2tfaW5qZWN0aW9uX3BvaW50KCRub2RlLAogCSdleGVjLWluaXQtcGFydGl0aW9u LWFmdGVyLWdldC1wYXJ0aXRpb24tYW5jZXN0b3JzJyk7CkBAIC02NTQsMjYgKzUzOCwyNCBA QCBub3RlKCdUZXN0OiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZICsgVVBTRVJUJyk7CiAj IFVzZXMgaW52YWxpZGF0ZS1jYXRhbG9nLXNuYXBzaG90LWVuZCB0byB0ZXN0IGNhdGFsb2cg aW52YWxpZGF0aW9uCiAjIGR1cmluZyBVUFNFUlQKIAotJHMxID0gJG5vZGUtPmJhY2tncm91 bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotJHMyID0gJG5vZGUt PmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotJHMz ID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+ IDApOworJHMxID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5v ZGUpOworJHMyID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5v ZGUpOworJHMzID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5v ZGUpOwogCi1teSAkczFfcGlkID0gJHMxLT5xdWVyeV9zYWZlKCdTRUxFQ1QgcGdfYmFja2Vu ZF9waWQoKScpOworIyBHZXQgdGhlIHNlc3Npb24ncyBiYWNrZW5kIFBJRCBiZWZvcmUgYXR0 YWNoaW5nIGluamVjdGlvbiBwb2ludHMKK215ICRzMV9waWQgPSAkczEtPnF1ZXJ5X29uZXZh bCgnU0VMRUNUIHBnX2JhY2tlbmRfcGlkKCknKTsKIAogIyBzMSBhdHRhY2hlcyBCT1RIIGlu amVjdGlvbiBwb2ludHMgLSB0aGUgdW5pcXVlIGNvbnN0cmFpbnQgY2hlY2sgQU5EIGNhdGFs b2cgc25hcHNob3QKLSRzMS0+cXVlcnlfc2FmZSgKKyRzMS0+ZG8oCiAJcVsKIFNFTEVDVCBp bmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNf YXR0YWNoKCdjaGVjay1leGNsdXNpb24tb3ItdW5pcXVlLWNvbnN0cmFpbnQtbm8tY29uZmxp Y3QnLCAnd2FpdCcpOwogXSk7CiAKLSRzMS0+cXVlcnlfdW50aWwoCi0JcXIvYXR0YWNoaW5n X2luamVjdGlvbl9wb2ludC8sIHFbCi1cZWNobyBhdHRhY2hpbmdfaW5qZWN0aW9uX3BvaW50 Ci1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2ludmFsaWRhdGUtY2F0YWxvZy1z bmFwc2hvdC1lbmQnLCAnd2FpdCcpOwotXSk7Ci0KICMgSW4gY2FzZXMgb2YgY2FjaGUgY2xv YmJlcmluZywgczEgbWF5IGhpdCB0aGUgaW5qZWN0aW9uIHBvaW50IGR1cmluZyBhdHRhY2gu CisjIFN0YXJ0IGF0dGFjaCBhc3luY2hyb25vdXNseSBzbyB3ZSBjYW4gY2hlY2sgaWYgaXQg YmxvY2tzLgorJHMxLT5kb19hc3luYyhxW1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFj aCgnaW52YWxpZGF0ZS1jYXRhbG9nLXNuYXBzaG90LWVuZCcsICd3YWl0Jyk7XSk7CisKICMg V2FpdCBmb3IgdGhhdCBzZXNzaW9uIHRvIGJlY29tZSBpZGxlIChhdHRhY2ggY29tcGxldGVk KSwgb3Igd2FrZSBpdCB1cCBpZgogIyBpdCBiZWNvbWVzIHN0dWNrIG9uIGluamVjdGlvbiBw b2ludC4KIGlmICghd2FpdF9mb3JfaWRsZSgkbm9kZSwgJHMxX3BpZCkpCkBAIC02ODcsMzQg KzU2OSwyOCBAQCBpZiAoIXdhaXRfZm9yX2lkbGUoJG5vZGUsICRzMV9waWQpKQogCQlTRUxF Q1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2ludmFsaWRhdGUtY2F0YWxvZy1zbmFwc2hv dC1lbmQnKTsKIAldKTsKIH0KKyMgV2FpdCBmb3IgYXN5bmMgY29tbWFuZCB0byBjb21wbGV0 ZQorJHMxLT53YWl0X2Zvcl9jb21wbGV0aW9uOwogCi0kczItPnF1ZXJ5X3NhZmUoCiskczIt PmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVD VCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1z cGVjdWxhdGl2ZScsICd3YWl0Jyk7CiBdKTsKIAotJHMzLT5xdWVyeV9zYWZlKAorJHMzLT5k bygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2RlZmluZS1pbmRleC1iZWZvcmUtc2V0LXZhbGlk JywgJ3dhaXQnKTsKIF0pOwogCiAjIHMzOiBTdGFydCBDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIChibG9ja3Mgb24gZGVmaW5lLWluZGV4LWJlZm9yZS1zZXQtdmFsaWQpCi0kczMtPnF1 ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX2NyZWF0ZV9pbmRleC8sIHFbCi1cZWNobyBzdGFy dGluZ19jcmVhdGVfaW5kZXgKLUNSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIHRi bF9wa2V5X2R1cGxpY2F0ZSBPTiB0ZXN0LnRibHBrKGkpOwotXSk7CiskczMtPmRvX2FzeW5j KHFbQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgdGJsX3BrZXlfZHVwbGljYXRl IE9OIHRlc3QudGJscGsoaSk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2Rl ZmluZS1pbmRleC1iZWZvcmUtc2V0LXZhbGlkJyk7CiAKICMgczE6IFN0YXJ0IFVQU0VSVCAo YmxvY2tzIG9uIGludmFsaWRhdGUtY2F0YWxvZy1zbmFwc2hvdC1lbmQpCi0kczEtPnF1ZXJ5 X3VudGlsKAotCXFyL3N0YXJ0aW5nX3Vwc2VydF9zMS8sIHFbCi1cZWNobyBzdGFydGluZ191 cHNlcnRfczEKLUlOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFMVUVTICgxMyxub3coKSkgT04g Q09ORkxJQ1QgKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOwotXSk7Cisk czEtPmRvX2FzeW5jKHFbSU5TRVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLG5vdygp KSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7XSk7 CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2ludmFsaWRhdGUtY2F0YWxvZy1zbmFw c2hvdC1lbmQnKTsKIApAQCAtNzIyLDExICs1OTgsNyBAQCBva19pbmplY3Rpb25fcG9pbnQo JG5vZGUsICdpbnZhbGlkYXRlLWNhdGFsb2ctc25hcHNob3QtZW5kJyk7CiB3YWtldXBfaW5q ZWN0aW9uX3BvaW50KCRub2RlLCAnZGVmaW5lLWluZGV4LWJlZm9yZS1zZXQtdmFsaWQnKTsK IAogIyBzMjogU3RhcnQgVVBTRVJUIChibG9ja3Mgb24gZXhlYy1pbnNlcnQtYmVmb3JlLWlu c2VydC1zcGVjdWxhdGl2ZSkKLSRzMi0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfdXBz ZXJ0X3MyLywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMgotSU5TRVJUIElOVE8gdGVz dC50YmxwayBWQUxVRVMgKDEzLG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNF VCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMi0+ZG9fYXN5bmMocVtJTlNFUlQgSU5U TyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsbm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERB VEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tfaW5qZWN0aW9uX3BvaW50KCRu b2RlLCAnZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVjdWxhdGl2ZScpOwogCkBAIC03 NDcsMjQgKzYxOSwyMCBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdUUlVOQ0FU RSBUQUJMRSB0ZXN0LnRibHBhcnRlZCcpOwogbm90ZSgnVGVzdDogQ1JFQVRFIElOREVYIENP TkNVUlJFTlRMWSBvbiBwYXJ0aWFsIGluZGV4ICsgVVBTRVJUJyk7CiAjIFVzZXMgaW52YWxp ZGF0ZS1jYXRhbG9nLXNuYXBzaG90LWVuZCB0byB0ZXN0IGNhdGFsb2cgaW52YWxpZGF0aW9u IGR1cmluZyBVUFNFUlQKIAotJHMxID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdy ZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotJHMyID0gJG5vZGUtPmJhY2tncm91bmRfcHNx bCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotJHMzID0gJG5vZGUtPmJhY2tn cm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOworJHMxID0gUG9z dGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworJHMyID0gUG9z dGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworJHMzID0gUG9z dGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCi0kczFfcGlk ID0gJHMxLT5xdWVyeV9zYWZlKCdTRUxFQ1QgcGdfYmFja2VuZF9waWQoKScpOworJHMxX3Bp ZCA9ICRzMS0+cXVlcnlfb25ldmFsKCdTRUxFQ1QgcGdfYmFja2VuZF9waWQoKScpOwogCiAj IHMxIGF0dGFjaGVzIEJPVEggaW5qZWN0aW9uIHBvaW50cyAtIHRoZSB1bmlxdWUgY29uc3Ry YWludCBjaGVjayBBTkQgY2F0YWxvZyBzbmFwc2hvdAotJHMxLT5xdWVyeV9zYWZlKAorJHMx LT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxF Q1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2NoZWNrLWV4Y2x1c2lvbi1vci11bmlxdWUt Y29uc3RyYWludC1uby1jb25mbGljdCcsICd3YWl0Jyk7CiBdKTsKIAotJHMxLT5xdWVyeV91 bnRpbCgKLQlxci9hdHRhY2hpbmdfaW5qZWN0aW9uX3BvaW50LywgcVsKLVxlY2hvIGF0dGFj aGluZ19pbmplY3Rpb25fcG9pbnQKLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgn aW52YWxpZGF0ZS1jYXRhbG9nLXNuYXBzaG90LWVuZCcsICd3YWl0Jyk7Ci1dKTsKKyRzMS0+ ZG8ocVtTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2ludmFsaWRhdGUtY2F0YWxv Zy1zbmFwc2hvdC1lbmQnLCAnd2FpdCcpO10pOwogCiAjIEluIGNhc2VzIG9mIGNhY2hlIGNs b2JiZXJpbmcsIHMxIG1heSBoaXQgdGhlIGluamVjdGlvbiBwb2ludCBkdXJpbmcgYXR0YWNo LgogIyBXYWl0IGZvciB0aGF0IHNlc3Npb24gdG8gYmVjb21lIGlkbGUgKGF0dGFjaCBjb21w bGV0ZWQpLCBvciB3YWtlIGl0IHVwIGlmCkBAIC03ODEsMzMgKzY0OSwyNSBAQCBpZiAoIXdh aXRfZm9yX2lkbGUoJG5vZGUsICRzMV9waWQpKQogCV0pOwogfQogCi0kczItPnF1ZXJ5X3Nh ZmUoCiskczItPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwo KTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnZXhlYy1pbnNlcnQtYmVmb3Jl LWluc2VydC1zcGVjdWxhdGl2ZScsICd3YWl0Jyk7CiBdKTsKIAotJHMzLT5xdWVyeV9zYWZl KAorJHMzLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7 CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2RlZmluZS1pbmRleC1iZWZvcmUt c2V0LXZhbGlkJywgJ3dhaXQnKTsKIF0pOwogCiAjIHMzOiBTdGFydCBDUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIChibG9ja3Mgb24gZGVmaW5lLWluZGV4LWJlZm9yZS1zZXQtdmFsaWQp Ci0kczMtPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX2NyZWF0ZV9pbmRleC8sIHFbCi1c ZWNobyBzdGFydGluZ19jcmVhdGVfaW5kZXgKLUNSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VS UkVOVExZIHRibF9wa2V5X3NwZWNpYWxfZHVwbGljYXRlIE9OIHRlc3QudGJsZXhwcihhYnMo aSkpIFdIRVJFIGkgPCAxMDAwMDsKLV0pOworJHMzLT5kb19hc3luYyhxW0NSRUFURSBVTklR VUUgSU5ERVggQ09OQ1VSUkVOVExZIHRibF9wa2V5X3NwZWNpYWxfZHVwbGljYXRlIE9OIHRl c3QudGJsZXhwcihhYnMoaSkpIFdIRVJFIGkgPCAxMDAwMDtdKTsKIAogb2tfaW5qZWN0aW9u X3BvaW50KCRub2RlLCAnZGVmaW5lLWluZGV4LWJlZm9yZS1zZXQtdmFsaWQnKTsKIAogIyBz MTogU3RhcnQgVVBTRVJUIChibG9ja3Mgb24gaW52YWxpZGF0ZS1jYXRhbG9nLXNuYXBzaG90 LWVuZCkKLSRzMS0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfdXBzZXJ0X3MxLywgcVsK LVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMQotSU5TRVJUIElOVE8gdGVzdC50YmxleHByIFZB TFVFUygxMyxub3coKSkgT04gQ09ORkxJQ1QgKGFicyhpKSkgV0hFUkUgaSA8IDEwMCBETyBV UERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTsKLV0pOworJHMxLT5kb19hc3luYyhxW0lO U0VSVCBJTlRPIHRlc3QudGJsZXhwciBWQUxVRVMoMTMsbm93KCkpIE9OIENPTkZMSUNUIChh YnMoaSkpIFdIRVJFIGkgPCAxMDAgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7 XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2ludmFsaWRhdGUtY2F0YWxvZy1z bmFwc2hvdC1lbmQnKTsKIApAQCAtODE1LDExICs2NzUsNyBAQCBva19pbmplY3Rpb25fcG9p bnQoJG5vZGUsICdpbnZhbGlkYXRlLWNhdGFsb2ctc25hcHNob3QtZW5kJyk7CiB3YWtldXBf aW5qZWN0aW9uX3BvaW50KCRub2RlLCAnZGVmaW5lLWluZGV4LWJlZm9yZS1zZXQtdmFsaWQn KTsKIAogIyBzMjogU3RhcnQgVVBTRVJUIChibG9ja3Mgb24gZXhlYy1pbnNlcnQtYmVmb3Jl LWluc2VydC1zcGVjdWxhdGl2ZSkKLSRzMi0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdf dXBzZXJ0X3MyLywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMgotSU5TRVJUIElOVE8g dGVzdC50YmxleHByIFZBTFVFUygxMyxub3coKSkgT04gQ09ORkxJQ1QgKGFicyhpKSkgV0hF UkUgaSA8IDEwMCBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTsKLV0pOworJHMy LT5kb19hc3luYyhxW0lOU0VSVCBJTlRPIHRlc3QudGJsZXhwciBWQUxVRVMoMTMsbm93KCkp IE9OIENPTkZMSUNUIChhYnMoaSkpIFdIRVJFIGkgPCAxMDAgRE8gVVBEQVRFIFNFVCB1cGRh dGVkX2F0ID0gbm93KCk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2V4ZWMt aW5zZXJ0LWJlZm9yZS1pbnNlcnQtc3BlY3VsYXRpdmUnKTsKIHdha2V1cF9pbmplY3Rpb25f cG9pbnQoJG5vZGUsICdpbnZhbGlkYXRlLWNhdGFsb2ctc25hcHNob3QtZW5kJyk7CkBAIC05 MjAsMzMgKzc3NiwyMyBAQCBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJyRwb2lu dF9uYW1lJyk7CiBdKTsKIH0KIAotIyBXYWl0IGZvciBhbnkgcGVuZGluZyBxdWVyeSB0byBj b21wbGV0ZSwgY2FwdHVyZSBzdGRlcnIsIGFuZCBjbG9zZSB0aGUgc2Vzc2lvbi4KLSMgUmV0 dXJucyB0aGUgc3RkZXJyIG91dHB1dCAoZXhjbHVkaW5nIGludGVybmFsIG1hcmtlcnMpLgor IyBXYWl0IGZvciBhbnkgcGVuZGluZyBxdWVyeSB0byBjb21wbGV0ZSBhbmQgY2xvc2UgdGhl IHNlc3Npb24uCisjIFJldHVybnMgZW1wdHkgc3RyaW5nIG9uIHN1Y2Nlc3MsIGVycm9yIG1l c3NhZ2Ugb24gZmFpbHVyZS4KIHN1YiBzYWZlX3F1aXQKIHsKIAlteSAoJHNlc3Npb24pID0g QF87CiAKLQkjIFNlbmQgYSBtYXJrZXIgYW5kIHdhaXQgZm9yIGl0IHRvIGVuc3VyZSBhbnkg cGVuZGluZyBxdWVyeSBjb21wbGV0ZXMKLQlteSAkYmFubmVyID0gInNhZmVfcXVpdF9tYXJr ZXIiOwotCW15ICRiYW5uZXJfbWF0Y2ggPSBxci8oXnxcbikkYmFubmVyXHI/XG4vOworCSMg V2FpdCBmb3IgYW55IGFzeW5jIHF1ZXJpZXMgdG8gY29tcGxldGUKKwkkc2Vzc2lvbi0+d2Fp dF9mb3JfY29tcGxldGlvbjsKIAotCSRzZXNzaW9uLT57c3RkaW59IC49ICJcXGVjaG8gJGJh bm5lclxuXFx3YXJuICRiYW5uZXJcbiI7Ci0KLQlwdW1wX3VudGlsKAotCQkkc2Vzc2lvbi0+ e3J1bn0sICRzZXNzaW9uLT57dGltZW91dH0sCi0JCVwkc2Vzc2lvbi0+e3N0ZG91dH0sICRi YW5uZXJfbWF0Y2gpOwotCXB1bXBfdW50aWwoCi0JCSRzZXNzaW9uLT57cnVufSwgJHNlc3Np b24tPnt0aW1lb3V0fSwKLQkJXCRzZXNzaW9uLT57c3RkZXJyfSwgJGJhbm5lcl9tYXRjaCk7 Ci0KLQkjIENhcHR1cmUgc3RkZXJyIChleGNsdWRpbmcgdGhlIGJhbm5lcikKLQlteSAkc3Rk ZXJyID0gJHNlc3Npb24tPntzdGRlcnJ9OwotCSRzdGRlcnIgPX4gcy8kYmFubmVyX21hdGNo Ly87CisJIyBDaGVjayBjb25uZWN0aW9uIHN0YXR1cworCW15ICRzdGF0dXMgPSAkc2Vzc2lv bi0+Y29ubl9zdGF0dXM7CiAKIAkjIENsb3NlIHRoZSBzZXNzaW9uCi0JJHNlc3Npb24tPnF1 aXQ7CisJJHNlc3Npb24tPmNsb3NlOwogCi0JcmV0dXJuICRzdGRlcnI7CisJIyBSZXR1cm4g ZW1wdHkgc3RyaW5nIGlmIGNvbm5lY3Rpb24gd2FzIE9LLCBvdGhlcndpc2UgcmV0dXJuIGVy cm9yCisJcmV0dXJuICgkc3RhdHVzID09IFBvc3RncmVTUUw6OlBxRkZJOjpDT05ORUNUSU9O X09LKCkpID8gJycgOiAnY29ubmVjdGlvbiBlcnJvcic7CiB9CiAKICMgSGVscGVyIGZ1bmN0 aW9uOiB2ZXJpZnkgdGhhdCB0aGUgZ2l2ZW4gc2Vzc2lvbnMgZXhpdCBjbGVhbmx5LgpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMTFfbG9ja19zdGF0cy5w bCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3QvMDExX2xvY2tfc3RhdHMucGwKaW5k ZXggNDVkN2QyNmY3MGMuLjAwYzFhYjAwZGYyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfbWlzYy90LzAxMV9sb2NrX3N0YXRzLnBsCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9taXNjL3QvMDExX2xvY2tfc3RhdHMucGwKQEAgLTE5LDYgKzE5LDcgQEAgdXNl IHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogCiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uOwogdXNlIFRlc3Q6Ok1vcmU7CiAKIHBsYW4gc2tpcF9hbGwgPT4gJ0lu amVjdGlvbiBwb2ludHMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJ1aWxkJwpAQCAtMzIsMTUg KzMzLDEyIEBAIG15ICRub2RlOwogIyBTZXR1cCB0aGUgMiBzZXNzaW9ucwogc3ViIHNldHVw X3Nlc3Npb25zCiB7Ci0JJHMxID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMn KTsKLQkkczIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOworCSRzMSA9 IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKwkkczIg PSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKIAkj IFNldHVwIGluamVjdGlvbiBwb2ludHMgZm9yIHRoZSB3YWl0aW5nIHNlc3Npb24KLQkkczIt PnF1ZXJ5X3VudGlsKAotCQlxci9hdHRhY2hpbmdfaW5qZWN0aW9uX3BvaW50LywgcVsKLQkJ CVxlY2hvIGF0dGFjaGluZ19pbmplY3Rpb25fcG9pbnQKLQkJCVNFTEVDVCBpbmplY3Rpb25f cG9pbnRzX2F0dGFjaCgnZGVhZGxvY2stdGltZW91dC1maXJlZCcsICd3YWl0Jyk7Ci0JCV0p OworCSRzMi0+ZG8oCisJCXFbU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdkZWFk bG9jay10aW1lb3V0LWZpcmVkJywgJ3dhaXQnKTtdKTsKIH0KIAogIyBGZXRjaCB3YWl0cyBh bmQgd2FpdF90aW1lIGZyb20gcGdfc3RhdF9sb2NrIGZvciBhIGdpdmVuIGxvY2sgdHlwZQpA QCAtOTgsNyArOTYsNyBAQCBzZXR1cF9zZXNzaW9ucygpOwogCiBteSAkbG9nX29mZnNldCA9 IC1zICRub2RlLT5sb2dmaWxlOwogCi0kczEtPnF1ZXJ5X3NhZmUoCiskczEtPmRvKAogCXFb CiBTRUxFQ1QgcGdfc3RhdF9yZXNldF9zaGFyZWQoJ2xvY2snKTsKIEJFR0lOOwpAQCAtMTA2 LDE3ICsxMDQsMTMgQEAgTE9DSyBUQUJMRSB0ZXN0X3N0YXRfdGFiOwogXSk7CiAKICMgczIg c2V0dXAKLSRzMi0+cXVlcnlfc2FmZSgKKyRzMi0+ZG8oCiAJcVsKIEJFR0lOOwogU0VMRUNU IHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogXSk7CiAjIHMyIGJsb2NrcyBvbiBMT0NL LgotJHMyLT5xdWVyeV91bnRpbCgKLQlxci9sb2NrX3MyLywgcVsKLVxlY2hvIGxvY2tfczIK LUxPQ0sgVEFCTEUgdGVzdF9zdGF0X3RhYjsKLV0pOworJHMyLT5kb19hc3luYyhxKExPQ0sg VEFCTEUgdGVzdF9zdGF0X3RhYjspKTsKIAogd2FpdF9hbmRfZGV0YWNoKCRub2RlLCAnZGVh ZGxvY2stdGltZW91dC1maXJlZCcpOwogCkBAIC0xMzYsOCArMTMwLDkgQEAgJG5vZGUtPnNh ZmVfcHNxbCgKICRub2RlLT53YWl0X2Zvcl9sb2cocXIvbG9nZ2luZyBtZW1vcnkgY29udGV4 dHMvLCAkbG9nX29mZnNldCk7CiAKICMgZGVhZGxvY2tfdGltZW91dCBmaXJlZCwgbm93IGNv bW1pdCBpbiBzMSBhbmQgczIKLSRzMS0+cXVlcnlfc2FmZShxKENPTU1JVCkpOwotJHMyLT5x dWVyeV9zYWZlKHEoQ09NTUlUKSk7CiskczEtPmRvKHEoQ09NTUlUKSk7CiskczItPndhaXRf Zm9yX2NvbXBsZXRpb247CiskczItPmRvKHEoQ09NTUlUKSk7CiAKICMgY2hlY2sgdGhhdCBw Z19zdGF0X2xvY2sgaGFzIGJlZW4gdXBkYXRlZAogd2FpdF9mb3JfcGdfc3RhdF9sb2NrKCRu b2RlLCAncmVsYXRpb24nKTsKQEAgLTE1OCw4ICsxNTMsOCBAQCBpcyggc2NhbGFyIEBzdGls bF93YWl0aW5nLAogKTsKIAogIyBjbG9zZSBzZXNzaW9ucwotJHMxLT5xdWl0OwotJHMyLT5x dWl0OworJHMxLT5jbG9zZTsKKyRzMi0+Y2xvc2U7CiAKICMjIyMjIyMgdHJhbnNhY3Rpb24g bG9jawogCkBAIC0xNjcsMjcgKzE2MiwzMSBAQCBzZXR1cF9zZXNzaW9ucygpOwogCiAkbG9n X29mZnNldCA9IC1zICRub2RlLT5sb2dmaWxlOwogCi0kczEtPnF1ZXJ5X3NhZmUoCisjIFRo ZSBJTlNFUlQgbXVzdCBhdXRvY29tbWl0IGJlZm9yZSB0aGUgZXhwbGljaXQgdHJhbnNhY3Rp b24gaXMgb3BlbmVkLCBzbworIyB0aGF0IHNlc3Npb24gczIgY2FuIHNlZSByb3dzIGsxL2sy L2szIGFuZCBibG9jayBvbiBzMSdzIHJvdyBsb2NrLiAgU2VuZCBpdAorIyBzZXBhcmF0ZWx5 IGZyb20gdGhlIEJFR0lOIGJsb2NrOiBhIHNpbmdsZSBtdWx0aS1zdGF0ZW1lbnQgcXVlcnkg Y29udGFpbmluZworIyBCRUdJTiB3b3VsZCBydW4gdGhlIElOU0VSVCBpbnNpZGUgdGhlIHN0 aWxsLW9wZW4gdHJhbnNhY3Rpb24sIGxlYXZpbmcgdGhlCisjIHJvd3MgaW52aXNpYmxlIHRv IHMyIChzbyBpdHMgVVBEQVRFIHdvdWxkIG1hdGNoIG5vdGhpbmcgYW5kIG5ldmVyIHdhaXQp LgorJHMxLT5kbygKIAlxWwogU0VMRUNUIHBnX3N0YXRfcmVzZXRfc2hhcmVkKCdsb2NrJyk7 CiBJTlNFUlQgSU5UTyB0ZXN0X3N0YXRfdGFiKGtleSwgdmFsdWUpIFZBTFVFUygnazEnLCAx KSwgKCdrMicsIDEpLCAoJ2szJywgMSk7CitdKTsKKyRzMS0+ZG8oCisJcVsKIEJFR0lOOwog VVBEQVRFIHRlc3Rfc3RhdF90YWIgU0VUIHZhbHVlID0gdmFsdWUgKyAxIFdIRVJFIGtleSA9 ICdrMSc7CiBdKTsKIAogIyBzMiBzZXR1cAotJHMyLT5xdWVyeV9zYWZlKAorJHMyLT5kbygK IAlxWwogU0VUIGxvZ19sb2NrX3dhaXRzID0gb247CiBCRUdJTjsKIFNFTEVDVCBwZ19zdGF0 X2ZvcmNlX25leHRfZmx1c2goKTsKIF0pOwogIyBzMiBibG9ja3MgaGVyZSBvbiBVUERBVEUK LSRzMi0+cXVlcnlfdW50aWwoCi0JcXIvbG9ja19zMi8sIHFbCi1cZWNobyBsb2NrX3MyCi1V UERBVEUgdGVzdF9zdGF0X3RhYiBTRVQgdmFsdWUgPSB2YWx1ZSArIDEgV0hFUkUga2V5ID0g J2sxJzsKLV0pOworJHMyLT5kb19hc3luYyhxKFVQREFURSB0ZXN0X3N0YXRfdGFiIFNFVCB2 YWx1ZSA9IHZhbHVlICsgMSBXSEVSRSBrZXkgPSAnazEnOykpOwogCiB3YWl0X2FuZF9kZXRh Y2goJG5vZGUsICdkZWFkbG9jay10aW1lb3V0LWZpcmVkJyk7CiAKQEAgLTE5Niw4ICsxOTUs OSBAQCAkbm9kZS0+d2FpdF9mb3JfbG9nKHFyL3N0aWxsIHdhaXRpbmcgZm9yIFNoYXJlTG9j ayBvbiB0cmFuc2FjdGlvbi8sCiAJJGxvZ19vZmZzZXQpOwogCiAjIGRlYWRsb2NrX3RpbWVv dXQgZmlyZWQsIG5vdyBjb21taXQgaW4gczEgYW5kIHMyCi0kczEtPnF1ZXJ5X3NhZmUocShD T01NSVQpKTsKLSRzMi0+cXVlcnlfc2FmZShxKENPTU1JVCkpOworJHMxLT5kbyhxKENPTU1J VCkpOworJHMyLT53YWl0X2Zvcl9jb21wbGV0aW9uOworJHMyLT5kbyhxKENPTU1JVCkpOwog CiAjIGNoZWNrIHRoYXQgcGdfc3RhdF9sb2NrIGhhcyBiZWVuIHVwZGF0ZWQKIHdhaXRfZm9y X3BnX3N0YXRfbG9jaygkbm9kZSwgJ3RyYW5zYWN0aW9uaWQnKTsKQEAgLTIwOCw4ICsyMDgs OCBAQCBvaygxLCAiTG9jayBzdGF0cyBvayBmb3IgdHJhbnNhY3Rpb25pZCIpOwogJG5vZGUt PndhaXRfZm9yX2xvZyhxci9hY3F1aXJlZCBTaGFyZUxvY2sgb24gdHJhbnNhY3Rpb24vLCAk bG9nX29mZnNldCk7CiAKICMgQ2xvc2Ugc2Vzc2lvbnMKLSRzMS0+cXVpdDsKLSRzMi0+cXVp dDsKKyRzMS0+Y2xvc2U7CiskczItPmNsb3NlOwogCiAjIyMjIyMjIGFkdmlzb3J5IGxvY2sK IApAQCAtMjE3LDI1ICsyMTcsMjEgQEAgc2V0dXBfc2Vzc2lvbnMoKTsKIAogJGxvZ19vZmZz ZXQgPSAtcyAkbm9kZS0+bG9nZmlsZTsKIAotJHMxLT5xdWVyeV9zYWZlKAorJHMxLT5kbygK IAlxWwogU0VMRUNUIHBnX3N0YXRfcmVzZXRfc2hhcmVkKCdsb2NrJyk7CiBTRUxFQ1QgcGdf YWR2aXNvcnlfbG9jaygxKTsKIF0pOwogCiAjIHMyIHNldHVwCi0kczItPnF1ZXJ5X3NhZmUo CiskczItPmRvKAogCXFbCiBTRVQgbG9nX2xvY2tfd2FpdHMgPSBvbjsKIEJFR0lOOwogU0VM RUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogXSk7CiAjIHMyIGJsb2NrcyBvbiB0 aGUgYWR2aXNvcnkgbG9jay4KLSRzMi0+cXVlcnlfdW50aWwoCi0JcXIvbG9ja19zMi8sIHFb Ci1cZWNobyBsb2NrX3MyCi1TRUxFQ1QgcGdfYWR2aXNvcnlfbG9jaygxKTsKLV0pOworJHMy LT5kb19hc3luYyhxKFNFTEVDVCBwZ19hZHZpc29yeV9sb2NrKDEpOykpOwogCiB3YWl0X2Fu ZF9kZXRhY2goJG5vZGUsICdkZWFkbG9jay10aW1lb3V0LWZpcmVkJyk7CiAKQEAgLTI0NCw4 ICsyNDAsOSBAQCAkbm9kZS0+d2FpdF9mb3JfbG9nKHFyL3N0aWxsIHdhaXRpbmcgZm9yIEV4 Y2x1c2l2ZUxvY2sgb24gYWR2aXNvcnkgbG9jay8sCiAJJGxvZ19vZmZzZXQpOwogCiAjIGRl YWRsb2NrX3RpbWVvdXQgZmlyZWQsIG5vdyB1bmxvY2sgYW5kIGNvbW1pdCBzMgotJHMxLT5x dWVyeV9zYWZlKHEoU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jaygxKSkpOwotJHMyLT5xdWVy eV9zYWZlKAorJHMxLT5kbyhxKFNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soMSkpKTsKKyRz Mi0+d2FpdF9mb3JfY29tcGxldGlvbjsKKyRzMi0+ZG8oCiAJcVsKIFNFTEVDVCBwZ19hZHZp c29yeV91bmxvY2soMSk7CiBDT01NSVQ7CkBAIC0yNjAsOCArMjU3LDggQEAgb2soMSwgIkxv Y2sgc3RhdHMgb2sgZm9yIGFkdmlzb3J5Iik7CiAkbm9kZS0+d2FpdF9mb3JfbG9nKHFyL2Fj cXVpcmVkIEV4Y2x1c2l2ZUxvY2sgb24gYWR2aXNvcnkgbG9jay8sICRsb2dfb2Zmc2V0KTsK IAogIyBDbG9zZSBzZXNzaW9ucwotJHMxLT5xdWl0OwotJHMyLT5xdWl0OworJHMxLT5jbG9z ZTsKKyRzMi0+Y2xvc2U7CiAKICMjIyMjIyMgRW5zdXJlIGxvZ19sb2NrX3dhaXRzIGhhcyBu byBpbXBhY3QKIApAQCAtMjY5LDcgKzI2Niw3IEBAIHNldHVwX3Nlc3Npb25zKCk7CiAKICRs b2dfb2Zmc2V0ID0gLXMgJG5vZGUtPmxvZ2ZpbGU7CiAKLSRzMS0+cXVlcnlfc2FmZSgKKyRz MS0+ZG8oCiAJcVsKIFNFTEVDVCBwZ19zdGF0X3Jlc2V0X3NoYXJlZCgnbG9jaycpOwogQkVH SU47CkBAIC0yNzcsMjQgKzI3NCwyMSBAQCBMT0NLIFRBQkxFIHRlc3Rfc3RhdF90YWI7CiBd KTsKIAogIyBzMiBzZXR1cAotJHMyLT5xdWVyeV9zYWZlKAorJHMyLT5kbygKIAlxWwogU0VU IGxvZ19sb2NrX3dhaXRzID0gb2ZmOwogQkVHSU47CiBTRUxFQ1QgcGdfc3RhdF9mb3JjZV9u ZXh0X2ZsdXNoKCk7CiBdKTsKICMgczIgYmxvY2tzIG9uIExPQ0suCi0kczItPnF1ZXJ5X3Vu dGlsKAotCXFyL2xvY2tfczIvLCBxWwotXGVjaG8gbG9ja19zMgotTE9DSyBUQUJMRSB0ZXN0 X3N0YXRfdGFiOwotXSk7CiskczItPmRvX2FzeW5jKHEoTE9DSyBUQUJMRSB0ZXN0X3N0YXRf dGFiOykpOwogCiB3YWl0X2FuZF9kZXRhY2goJG5vZGUsICdkZWFkbG9jay10aW1lb3V0LWZp cmVkJyk7CiAKICMgZGVhZGxvY2tfdGltZW91dCBmaXJlZCwgbm93IGNvbW1pdCBpbiBzMSBh bmQgczIKLSRzMS0+cXVlcnlfc2FmZShxKENPTU1JVCkpOwotJHMyLT5xdWVyeV9zYWZlKHEo Q09NTUlUKSk7CiskczEtPmRvKHEoQ09NTUlUKSk7CiskczItPndhaXRfZm9yX2NvbXBsZXRp b247CiskczItPmRvKHEoQ09NTUlUKSk7CiAKICMgY2hlY2sgdGhhdCBwZ19zdGF0X2xvY2sg aGFzIGJlZW4gdXBkYXRlZAogd2FpdF9mb3JfcGdfc3RhdF9sb2NrKCRub2RlLCAncmVsYXRp b24nKTsKQEAgLTMxMCw4ICszMDQsOCBAQCBvayggISRub2RlLT5sb2dfY29udGFpbnMoCiAp OwogCiAjIGNsb3NlIHNlc3Npb25zCi0kczEtPnF1aXQ7Ci0kczItPnF1aXQ7CiskczEtPmNs b3NlOworJHMyLT5jbG9zZTsKIAogIyBjbGVhbnVwCiAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsIHFbRFJPUCBUQUJMRSB0ZXN0X3N0YXRfdGFiO10pOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMTNfdGVtcF9vYmpfbXVsdGlzZXNzaW9uLnBs IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMTNfdGVtcF9vYmpfbXVsdGlzZXNz aW9uLnBsCmluZGV4IDVmM2NjN2QyZmM1Li4wYjE1YjBiZGUwOCAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMTNfdGVtcF9vYmpfbXVsdGlzZXNzaW9uLnBs CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3QvMDEzX3RlbXBfb2JqX211bHRp c2Vzc2lvbi5wbApAQCAtMjAsMjEgKzIwLDIxIEBAIHVzZSBzdHJpY3Q7CiB1c2Ugd2Fybmlu Z3M7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpU ZXN0OjpVdGlsczsKLXVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpCYWNrZ3JvdW5kUHNxbDsKK3Vz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFRlc3Q6Ok1vcmU7CiAKIG15ICRu b2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCd0ZW1wX2xvY2snKTsKICRu b2RlLT5pbml0OwogJG5vZGUtPnN0YXJ0OwogCi0jIE93bmVyIHNlc3Npb24uICBDcmVhdGVk IHZpYSBiYWNrZ3JvdW5kX3BzcWwgc28gaXQgc3RheXMgYWxpdmUgd2hpbGUKLSMgdGhlIHNl Y29uZCBzZXNzaW9uIHByb2JlcyBpdHMgdGVtcCBvYmplY3RzLgotbXkgJHBzcWwxID0gJG5v ZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKKyMgT3duZXIgc2Vzc2lvbi4gIENy ZWF0ZWQgYXMgYSBwZXJzaXN0ZW50IGxpYnBxIHNlc3Npb24gc28gaXQgc3RheXMgYWxpdmUK KyMgd2hpbGUgdGhlIHNlY29uZCBzZXNzaW9uIHByb2JlcyBpdHMgdGVtcCBvYmplY3RzLgor bXkgJHBzcWwxID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5v ZGUpOwogCiAjIEluaXRpYWxseSBjcmVhdGUgdGhlIHRhYmxlIHdpdGhvdXQgYW4gaW5kZXgs IHNvIHJlYWQgcGF0aHMgZ28gc3RyYWlnaHQKICMgdGhyb3VnaCB0aGUgcmVhZC1zdHJlYW0g LyBidWZmZXItbWFuYWdlciBlbnRyeSBwb2ludHMgd2l0aG91dCBiZWluZwogIyBtYXNrZWQg YnkgYW4gaW5kZXggc2NhbiB0aGF0IHdvdWxkIGhpdCBSZWFkQnVmZmVyX2NvbW1vbiBmcm9t IG5idHJlZS4KLSRwc3FsMS0+cXVlcnlfc2FmZShxKENSRUFURSBURU1QIFRBQkxFIGZvbyBB UyBTRUxFQ1QgNDIgQVMgdmFsOykpOworJHBzcWwxLT5kbyhxKENSRUFURSBURU1QIFRBQkxF IGZvbyBBUyBTRUxFQ1QgNDIgQVMgdmFsOykpOwogCiAjIFJlc29sdmUgdGhlIG93bmVyJ3Mg dGVtcCBzY2hlbWEgc28gdGhlIHByb2Jpbmcgc2Vzc2lvbiBjYW4gcmVmZXIgdG8KICMgdGhl IHRhYmxlIGJ5IGEgZnVsbHktcXVhbGlmaWVkIG5hbWUuCkBAIC0xMzAsNyArMTMwLDcgQEAg bGlrZSgkc3RkZXJyLAogIyBOb3cgY3JlYXRlIGFuIGluZGV4IHRvIGV4ZXJjaXNlIHRoZSBp bmRleC1zY2FuIHBhdGguICBuYnRyZWUgY2FsbHMKICMgUmVhZEJ1ZmZlciAod2hpY2ggaXMg UmVhZEJ1ZmZlckV4dGVuZGVkIC0+IFJlYWRCdWZmZXJfY29tbW9uKSwgc28KICMgdGhpcyBl eGVyY2lzZXMgYSBkaWZmZXJlbnQgY2hhaW4gb2YgYnVmZmVyLW1hbmFnZXIgZW50cnkgcG9p bnRzLgotJHBzcWwxLT5xdWVyeV9zYWZlKHEoQ1JFQVRFIElOREVYIE9OIGZvbyh2YWwpOykp OworJHBzcWwxLT5kbyhxKENSRUFURSBJTkRFWCBPTiBmb28odmFsKTspKTsKIAogJG5vZGUt PnBzcWwoCiAJJ3Bvc3RncmVzJywKQEAgLTE1Niw3ICsxNTYsNyBAQCBsaWtlKCRzdGRlcnIs IHFyL2Nhbm5vdCBhbHRlciB0ZW1wb3JhcnkgdGFibGVzIG9mIG90aGVyIHNlc3Npb25zLywK ICMgb3BlcmF0aW9ucyAtLSB0aGV5IGRvbid0IHJlYWQgdGhlIHVuZGVybHlpbmcgdGFibGUg LS0gd2hpY2gKICMgZG9jdW1lbnRzIHRoZSBib3VuZGFyeSBiZXR3ZWVuIGNhdGFsb2cgYW5k IGRhdGEgYWNjZXNzIGZvciB0ZW1wCiAjIG9iamVjdHMuCi0kcHNxbDEtPnF1ZXJ5X3NhZmUo CiskcHNxbDEtPmRvKAogCQlxW0NSRUFURSBGVU5DVElPTiBwZ190ZW1wLmZvb19pZChyIGZv bykgUkVUVVJOUyBpbnQgTEFOR1VBR0UgU1FMIF0KIAkgIC4gcVtBUyAnU0VMRUNUIHIudmFs JztdKTsKIApAQCAtMTg3LDcgKzE4Nyw3IEBAIGlzKCRzdGRlcnIsICcnLCAnRFJPUCBUQUJM RSBpcyBhbGxvd2VkJyk7CiAjIGludG8gdGhlIGNyZWF0b3IncyBwZ190ZW1wIG5hbWVzcGFj ZSB3aXRoIGFuIGF1dG8tZGVwZW5kZW5jeSBvbgogIyB0aGUgYm9ycm93ZWQgdHlwZSwgc28g aXQgZGlzYXBwZWFycyB0b2dldGhlciB3aXRoIHRoZSBzZXNzaW9uIHRoYXQKICMgY3JlYXRl ZCBpdC4KLSRwc3FsMS0+cXVlcnlfc2FmZShxKENSRUFURSBURU1QIFRBQkxFIGZvbzIgQVMg U0VMRUNUIDQyIEFTIHZhbDspKTsKKyRwc3FsMS0+ZG8ocShDUkVBVEUgVEVNUCBUQUJMRSBm b28yIEFTIFNFTEVDVCA0MiBBUyB2YWw7KSk7CiAKICRub2RlLT5wc3FsKAogCSdwb3N0Z3Jl cycsCkBAIC0yMTYsOCArMjE2LDggQEAgbXkgJGZvbzJfb2lkID0gJG5vZGUtPnNhZmVfcHNx bCgncG9zdGdyZXMnLAogIyBDcm9zcy1zZXNzaW9uIExPQ0sgVEFCTEUgc2NlbmFyaW8uICBF bnN1cmUgdGhhdCBMb2NrUmVsYXRpb25PaWQgaXMgd29ya2luZwogIyBwcm9wZXJseSBmb3Ig b3RoZXIgdGVtcCB0YWJsZXMgc2luY2UgdGhpcyBtZWNoYW5pc20gaXMgYWxzbyB1c2VkIGJ5 CiAjIGF1dG92YWN1dW0gZHVyaW5nIG9ycGhhbmVkIHRhYmxlcyBjbGVhbnVwLgotbXkgJHBz cWwyID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKLSRwc3FsMi0+cXVl cnlfc2FmZSgKK215ICRwc3FsMiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhu b2RlID0+ICRub2RlKTsKKyRwc3FsMi0+ZG8oCiAJcXF7CiAJQkVHSU47CiAJTE9DSyBUQUJM RSAkdGVtcHNjaGVtYS5mb28yIElOIEFDQ0VTUyBTSEFSRSBNT0RFOwpAQCAtMjMzLDE1ICsy MzMsMTUgQEAgJHBzcWwyLT5xdWVyeV9zYWZlKAogIyBvd25lciB3aWxsIHRyeSB0byBhY3F1 aXJlIGRlbGV0aW9uIGxvY2sgYWxsIGl0cyB0ZW1wIG9iamVjdHMgdmlhCiAjIGZpbmREZXBl bmRlbnRPYmplY3RzLgogbXkgJGxvZ19vZmZzZXQgPSAtcyAkbm9kZS0+bG9nZmlsZTsKLSRw c3FsMS0+cXVpdDsKKyRwc3FsMS0+Y2xvc2U7CiAKICMgQ2hlY2sgd2hldGhlciBzZXNzaW9u LWV4aXQgY2xlYW51cCBpcyBibG9ja2VkLgogJG5vZGUtPndhaXRfZm9yX2xvZyhxci93YWl0 aW5nIGZvciBBY2Nlc3NFeGNsdXNpdmVMb2NrIG9uIHJlbGF0aW9uICRmb28yX29pZC8sCiAJ JGxvZ19vZmZzZXQpOwogCiAjIFJlbGVhc2UgbG9jayBvbiBmb28yIGFuZCBhbGxvdyBzZXNz aW9uLWV4aXQgY2xlYW51cCB0byBmaW5pc2guCi0kcHNxbDItPnF1ZXJ5X3NhZmUocShDT01N SVQ7KSk7Ci0kcHNxbDItPnF1aXQ7CiskcHNxbDItPmRvKHEoQ09NTUlUOykpOworJHBzcWwy LT5jbG9zZTsKIAogIyBBZnRlciByZWxlYXNpbmcgdGhlIGxvY2ssIHRoZSBvd25lciBjYW4g ZmluYWxseSBhY3F1aXJlCiAjIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgb24gZm9vMiBhbmQgZmlu aXNoIHNlc3Npb24tZXhpdCBjbGVhbnVwLiAgVmVyaWZ5CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL3Rlc3Rfc2xydS90LzAwMV9tdWx0aXhhY3QucGwgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3Rfc2xydS90LzAwMV9tdWx0aXhhY3QucGwKaW5kZXggZjZmNDU4OTVlYmQuLjJk ODY0MzRkN2JjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2xydS90LzAw MV9tdWx0aXhhY3QucGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NscnUvdC8wMDFf bXVsdGl4YWN0LnBsCkBAIC02LDYgKzYsNyBAQCB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdz IEZBVEFMID0+ICdhbGwnOwogCiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3Vz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOwogCiB1c2UgVGVzdDo6TW9yZTsKQEAgLTMwLDggKzMxLDggQEAgJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCBxKENSRUFURSBFWFRFTlNJT04gdGVzdF9zbHJ1KSk7CiAjIGxv c3QuCiAKICMgQ3JlYXRlIHRoZSBmaXJzdCBtdWx0aXhhY3QKLW15ICRiZ19wc3FsID0gJG5v ZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKLW15ICRtdWx0aTEgPSAkYmdfcHNx bC0+cXVlcnlfc2FmZShxKFNFTEVDVCB0ZXN0X2NyZWF0ZV9tdWx0aXhhY3QoKTspKTsKK215 ICRiZ19zZXNzaW9uID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4g JG5vZGUpOworbXkgJG11bHRpMSA9ICRiZ19zZXNzaW9uLT5xdWVyeV9vbmV2YWwocShTRUxF Q1QgdGVzdF9jcmVhdGVfbXVsdGl4YWN0KCk7KSk7CiAKICMgQXNzaWduIHRoZSBtaWRkbGUg bXVsdGl4YWN0LiBVc2UgYW4gaW5qZWN0aW9uIHBvaW50IHRvIHByZXZlbnQgaXQKICMgZnJv bSBiZWluZyBmdWxseSByZWNvcmRlZC4KQEAgLTM5LDExICs0MCw5IEBAICRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKIAlxe1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgn bXVsdGl4YWN0LWNyZWF0ZS1mcm9tLW1lbWJlcnMnLCd3YWl0Jyk7fQogKTsKIAotJGJnX3Bz cWwtPnF1ZXJ5X3VudGlsKAotCXFyL2Fzc2lnbmluZyBsb3N0IG11bHRpLywgcSgKLVxlY2hv IGFzc2lnbmluZyBsb3N0IG11bHRpCi0JU0VMRUNUIHRlc3RfY3JlYXRlX211bHRpeGFjdCgp OwotKSk7CisjIFN0YXJ0IHRoZSBzZWNvbmQgbXVsdGl4YWN0IGNyZWF0aW9uIGFzeW5jaHJv bm91c2x5IC0gaXQgd2lsbCBibG9jayBhdAorIyB0aGUgaW5qZWN0aW9uIHBvaW50CiskYmdf c2Vzc2lvbi0+ZG9fYXN5bmMocShTRUxFQ1QgdGVzdF9jcmVhdGVfbXVsdGl4YWN0KCk7KSk7 CiAKICRub2RlLT53YWl0X2Zvcl9ldmVudCgnY2xpZW50IGJhY2tlbmQnLCAnbXVsdGl4YWN0 LWNyZWF0ZS1mcm9tLW1lbWJlcnMnKTsKICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK QEAgLTUyLDEwICs1MSwxMCBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAjIENy ZWF0ZSB0aGUgdGhpcmQgbXVsdGl4aWQKIG15ICRtdWx0aTIgPSAkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHF7U0VMRUNUIHRlc3RfY3JlYXRlX211bHRpeGFjdCgpO30pOwogCi0j IEFsbCBzZXQgYW5kIGRvbmUsIGl0J3MgdGltZSBmb3IgaGFyZCByZXN0YXJ0CisjIEFsbCBz ZXQgYW5kIGRvbmUsIGl0J3MgdGltZSBmb3IgaGFyZCByZXN0YXJ0LiBUaGUgYmFja2dyb3Vu ZCBzZXNzaW9uCisjIHdpbGwgYmUgdGVybWluYXRlZCBieSB0aGUgY3Jhc2guCiAkbm9kZS0+ c3RvcCgnaW1tZWRpYXRlJyk7CiAkbm9kZS0+c3RhcnQ7Ci0kYmdfcHNxbC0+e3J1bn0tPmZp bmlzaDsKIAogIyBWZXJpZnkgdGhhdCB0aGUgcmVjb3JkZWQgbXVsdGl4aWRzIGFyZSByZWFk YWJsZQogaXMoICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7U0VMRUNUIHRlc3Rf cmVhZF9tdWx0aXhhY3QoJyRtdWx0aTEnKTt9KSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21v ZHVsZXMveGlkX3dyYXBhcm91bmQvdC8wMDFfZW1lcmdlbmN5X3ZhY3V1bS5wbCBiL3NyYy90 ZXN0L21vZHVsZXMveGlkX3dyYXBhcm91bmQvdC8wMDFfZW1lcmdlbmN5X3ZhY3V1bS5wbApp bmRleCAyMTNmOTA1MmVkMi4uMzA0MDc2NzM1YjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21v ZHVsZXMveGlkX3dyYXBhcm91bmQvdC8wMDFfZW1lcmdlbmN5X3ZhY3V1bS5wbAorKysgYi9z cmMvdGVzdC9tb2R1bGVzL3hpZF93cmFwYXJvdW5kL3QvMDAxX2VtZXJnZW5jeV92YWN1dW0u cGwKQEAgLTQsNiArNCw3IEBACiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ ICdhbGwnOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNR TDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBU ZXN0OjpNb3JlOwogCkBAIC00NywxNyArNDgsMTAgQEAgQ1JFQVRFIFRBQkxFIHNtYWxsX3Ry dW5jKGlkIHNlcmlhbCBwcmltYXJ5IGtleSwgZGF0YSB0ZXh0LCBmaWxsZXIgdGV4dCBkZWZh dWx0IHIKIElOU0VSVCBJTlRPIHNtYWxsX3RydW5jKGRhdGEpIFNFTEVDVCBnZW5lcmF0ZV9z ZXJpZXMoMSwxNTAwMCk7CiBdKTsKIAotIyBCdW1wIHRoZSBxdWVyeSB0aW1lb3V0IHRvIGF2 b2lkIGZhbHNlIG5lZ2F0aXZlcyBvbiBzbG93IHRlc3Qgc3lzdGVtcy4KLW15ICRwc3FsX3Rp bWVvdXRfc2VjcyA9IDQgKiAkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVm YXVsdDsKLQogIyBTdGFydCBhIGJhY2tncm91bmQgc2Vzc2lvbiwgd2hpY2ggaG9sZHMgYSB0 cmFuc2FjdGlvbiBvcGVuLCBwcmV2ZW50aW5nCiAjIGF1dG92YWN1dW0gZnJvbSBhZHZhbmNp bmcgcmVsZnJvemVueGlkIGFuZCBkYXRmcm96ZW54aWQuCi1teSAkYmFja2dyb3VuZF9wc3Fs ID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgKLQkncG9zdGdyZXMnLAotCW9uX2Vycm9yX3N0 b3AgPT4gMCwKLQl0aW1lb3V0ID0+ICRwc3FsX3RpbWVvdXRfc2Vjcyk7Ci0kYmFja2dyb3Vu ZF9wc3FsLT5zZXRfcXVlcnlfdGltZXJfcmVzdGFydCgpOwotJGJhY2tncm91bmRfcHNxbC0+ cXVlcnlfc2FmZSgKK215ICRiYWNrZ3JvdW5kX3Nlc3Npb24gPSBQb3N0Z3JlU1FMOjpUZXN0 OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskYmFja2dyb3VuZF9zZXNzaW9uLT5k bygKIAlxcVsKIAlCRUdJTjsKIAlERUxFVEUgRlJPTSBsYXJnZSBXSEVSRSBpZCAlIDIgPSAw OwpAQCAtODksOCArODMsOCBAQCBteSAkbG9nX29mZnNldCA9IC1zICRub2RlLT5sb2dmaWxl OwogCiAjIEZpbmlzaCB0aGUgb2xkIHRyYW5zYWN0aW9uLCB0byBhbGxvdyB2YWN1dW0gZnJl ZXppbmcgdG8gYWR2YW5jZQogIyByZWxmcm96ZW54aWQgYW5kIGRhdGZyb3plbnhpZCBhZ2Fp bi4KLSRiYWNrZ3JvdW5kX3BzcWwtPnF1ZXJ5X3NhZmUocXFbQ09NTUlUXSk7Ci0kYmFja2dy b3VuZF9wc3FsLT5xdWl0OworJGJhY2tncm91bmRfc2Vzc2lvbi0+ZG8ocXFbQ09NTUlUO10p OworJGJhY2tncm91bmRfc2Vzc2lvbi0+Y2xvc2U7CiAKICMgV2FpdCB1bnRpbCBhdXRvdmFj dXVtIHByb2Nlc3NlZCBhbGwgdGFibGVzIGFuZCBhZHZhbmNlZCB0aGUKICMgc3lzdGVtLXdp ZGUgb2xkZXN0LVhJRC4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMveGlkX3dyYXBh cm91bmQvdC8wMDJfbGltaXRzLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3Vu ZC90LzAwMl9saW1pdHMucGwKaW5kZXggODY2MzJhOGQ1MTAuLjBlZjY3ZDBmNGI4IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3hpZF93cmFwYXJvdW5kL3QvMDAyX2xpbWl0cy5w bAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3hpZF93cmFwYXJvdW5kL3QvMDAyX2xpbWl0cy5w bApAQCAtMTAsNiArMTAsNyBAQAogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9 PiAnYWxsJzsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVT UUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2Ug VGVzdDo6TW9yZTsKIHVzZSBUaW1lOjpIaVJlcyBxdyh1c2xlZXApOwpAQCAtMjksNiArMzAs OCBAQCAkbm9kZS0+YXBwZW5kX2NvbmYoCiAJJ3Bvc3RncmVzcWwuY29uZicsIHFxWwogYXV0 b3ZhY3V1bV9uYXB0aW1lID0gMXMKIGxvZ19hdXRvdmFjdXVtX21pbl9kdXJhdGlvbiA9IDAK K2xvZ19jb25uZWN0aW9ucyA9IG9uCitsb2dfc3RhdGVtZW50ID0gJ2FsbCcKIF0pOwogJG5v ZGUtPnN0YXJ0OwogJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQ1JFQVRFIEVYVEVO U0lPTiB4aWRfd3JhcGFyb3VuZCcpOwpAQCAtNDEsMTYgKzQ0LDEwIEBAIENSRUFURSBUQUJM RSB3cmFwYXJvdW5kdGVzdCh0IHRleHQpIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZCA9IG9m Zik7CiBJTlNFUlQgSU5UTyB3cmFwYXJvdW5kdGVzdCBWQUxVRVMgKCdzdGFydCcpOwogXSk7 CiAKLSMgQnVtcCB0aGUgcXVlcnkgdGltZW91dCB0byBhdm9pZCBmYWxzZSBuZWdhdGl2ZXMg b24gc2xvdyB0ZXN0IHN5c3RlbXMuCi1teSAkcHNxbF90aW1lb3V0X3NlY3MgPSA0ICogJFBv c3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQ7Ci0KICMgU3RhcnQgYSBi YWNrZ3JvdW5kIHNlc3Npb24sIHdoaWNoIGhvbGRzIGEgdHJhbnNhY3Rpb24gb3BlbiwgcHJl dmVudGluZwogIyBhdXRvdmFjdXVtIGZyb20gYWR2YW5jaW5nIHJlbGZyb3plbnhpZCBhbmQg ZGF0ZnJvemVueGlkLgotbXkgJGJhY2tncm91bmRfcHNxbCA9ICRub2RlLT5iYWNrZ3JvdW5k X3BzcWwoCi0JJ3Bvc3RncmVzJywKLQlvbl9lcnJvcl9zdG9wID0+IDAsCi0JdGltZW91dCA9 PiAkcHNxbF90aW1lb3V0X3NlY3MpOwotJGJhY2tncm91bmRfcHNxbC0+cXVlcnlfc2FmZSgK K215ICRiYWNrZ3JvdW5kX3Nlc3Npb24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5u ZXcobm9kZSA9PiAkbm9kZSk7CiskYmFja2dyb3VuZF9zZXNzaW9uLT5kbygKIAlxcVsKIAlC RUdJTjsKIAlJTlNFUlQgSU5UTyB3cmFwYXJvdW5kdGVzdCBWQUxVRVMgKCdvbGR4YWN0Jyk7 CkBAIC0xMDgsOCArMTA1LDggQEAgbGlrZSgKIAogIyBGaW5pc2ggdGhlIG9sZCB0cmFuc2Fj dGlvbiwgdG8gYWxsb3cgdmFjdXVtIGZyZWV6aW5nIHRvIGFkdmFuY2UKICMgcmVsZnJvemVu eGlkIGFuZCBkYXRmcm96ZW54aWQgYWdhaW4uCi0kYmFja2dyb3VuZF9wc3FsLT5xdWVyeV9z YWZlKHFxW0NPTU1JVF0pOwotJGJhY2tncm91bmRfcHNxbC0+cXVpdDsKKyRiYWNrZ3JvdW5k X3Nlc3Npb24tPmRvKHFxW0NPTU1JVDtdKTsKKyRiYWNrZ3JvdW5kX3Nlc3Npb24tPmNsb3Nl OwogCiAjIFZBQ1VVTSwgdG8gZnJlZXplIHRoZSB0YWJsZXMgYW5kIGFkdmFuY2UgZGF0ZnJv emVueGlkLgogIwpAQCAtMTIyLDggKzExOSw4IEBAICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgJ1ZBQ1VVTScpOwogIyB0aGUgc3lzdGVtLXdpZGUgb2xkZXN0LVhJRC4KICRyZXQg PQogICAkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAotCXFxW0lOU0VSVCBJ TlRPIHdyYXBhcm91bmR0ZXN0IFZBTFVFUyAoJ2FmdGVyIFZBQ1VVTScpXSwKLQknSU5TRVJU IDAgMScpOworCXFxW0lOU0VSVCBJTlRPIHdyYXBhcm91bmR0ZXN0IFZBTFVFUyAoJ2FmdGVy IFZBQ1VVTScpIFJFVFVSTklORyB0cnVlXSwKKwkJCQkJCSApOwogCiAjIENoZWNrIHRoZSB0 YWJsZSBjb250ZW50cwogJHJldCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXFb U0VMRUNUICogZnJvbSB3cmFwYXJvdW5kdGVzdF0pOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv bW9kdWxlcy94aWRfd3JhcGFyb3VuZC90LzAwNF9ub3RpZnlfZnJlZXplLnBsIGIvc3JjL3Rl c3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC90LzAwNF9ub3RpZnlfZnJlZXplLnBsCmluZGV4 IGQwYTFmMWZlMmZjLi5mMmZhNGU1YTZiOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxl cy94aWRfd3JhcGFyb3VuZC90LzAwNF9ub3RpZnlfZnJlZXplLnBsCisrKyBiL3NyYy90ZXN0 L21vZHVsZXMveGlkX3dyYXBhcm91bmQvdC8wMDRfbm90aWZ5X2ZyZWV6ZS5wbApAQCAtNyw2 ICs3LDcgQEAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiB1 c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpT ZXNzaW9uOwogdXNlIFRlc3Q6Ok1vcmU7CiAKIG15ICRub2RlID0gUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3Rlci0+bmV3KCdub2RlJyk7CkBAIC0yNCw5ICsyNSw5IEBAICRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKIAknQUxURVIgREFUQUJBU0UgdGVtcGxhdGUwIFdJVEggQUxM T1dfQ09OTkVDVElPTlMgdHJ1ZScpOwogCiAjIFN0YXJ0IFNlc3Npb24gMSBhbmQgbGVhdmUg aXQgaWRsZSBpbiB0cmFuc2FjdGlvbgotbXkgJHBzcWxfc2Vzc2lvbjEgPSAkbm9kZS0+YmFj a2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotJHBzcWxfc2Vzc2lvbjEtPnF1ZXJ5X3NhZmUo J2xpc3RlbiBzOycpOwotJHBzcWxfc2Vzc2lvbjEtPnF1ZXJ5X3NhZmUoJ2JlZ2luOycpOwor bXkgJHNlc3Npb24xID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4g JG5vZGUpOworJHNlc3Npb24xLT5kbygnTElTVEVOIHMnKTsKKyRzZXNzaW9uMS0+ZG8oJ0JF R0lOJyk7CiAKICMgU2VuZCBzb21lIG5vdGlmeXMgZnJvbSBvdGhlciBzZXNzaW9ucwogZm9y IG15ICRpICgxIC4uIDEwKQpAQCAtNTQsMTggKzU1LDIwIEBAIG15ICRkYXRhZnJvbnplbnhp ZF9mcmVlemUgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJInNlbGVjdCBtaW4o ZGF0ZnJvemVueGlkOjp0ZXh0OjpiaWdpbnQpIGZyb20gcGdfZGF0YWJhc2UiKTsKIG9rKCRk YXRhZnJvbnplbnhpZF9mcmVlemUgPiAkZGF0YWZyb256ZW54aWQsICdkYXRmcm96ZW54aWQg YWR2YW5jZWQnKTsKIAotIyBPbiBTZXNzaW9uIDEsIGNvbW1pdCBhbmQgZW5zdXJlIHRoYXQg dGhlIGFsbCB0aGUgbm90aWZpY2F0aW9ucyBhcmUKKyMgT24gU2Vzc2lvbiAxLCBjb21taXQg YW5kIGVuc3VyZSB0aGF0IGFsbCB0aGUgbm90aWZpY2F0aW9ucyBhcmUKICMgcmVjZWl2ZWQu IFRoaXMgZGVwZW5kcyBvbiBjb3JyZWN0bHkgZnJlZXppbmcgdGhlIFhJRHMgaW4gdGhlIHBl bmRpbmcKICMgbm90aWZpY2F0aW9uIGVudHJpZXMuCi1teSAkcmVzID0gJHBzcWxfc2Vzc2lv bjEtPnF1ZXJ5X3NhZmUoJ2NvbW1pdDsnKTsKLW15ICRub3RpZmljYXRpb25zX2NvdW50ID0g MDsKLWZvcmVhY2ggbXkgJGkgKHNwbGl0KCdcbicsICRyZXMpKQorJHNlc3Npb24xLT5kbygn Q09NTUlUJyk7CisKK215ICRub3RpZmljYXRpb25zID0gJHNlc3Npb24xLT5nZXRfYWxsX25v dGlmaWNhdGlvbnMoKTsKK2lzKHNjYWxhcihAJG5vdGlmaWNhdGlvbnMpLCAxMCwgJ3JlY2Vp dmVkIGFsbCBjb21taXR0ZWQgbm90aWZpY2F0aW9ucycpOworCitteSAkZXhwZWN0ZWRfcGF5 bG9hZCA9IDE7Citmb3JlYWNoIG15ICRub3RpZnkgKEAkbm90aWZpY2F0aW9ucykKIHsKLQkk bm90aWZpY2F0aW9uc19jb3VudCsrOwotCWxpa2UoJGksCi0JCXFyL0FzeW5jaHJvbm91cyBu b3RpZmljYXRpb24gInMiIHdpdGggcGF5bG9hZCAiJG5vdGlmaWNhdGlvbnNfY291bnQiIHJl Y2VpdmVkLwotCSk7CisJaXMoJG5vdGlmeS0+e2NoYW5uZWx9LCAncycsICJub3RpZmljYXRp b24gJGV4cGVjdGVkX3BheWxvYWQgaGFzIGNvcnJlY3QgY2hhbm5lbCIpOworCWlzKCRub3Rp ZnktPntwYXlsb2FkfSwgJGV4cGVjdGVkX3BheWxvYWQsICJub3RpZmljYXRpb24gJGV4cGVj dGVkX3BheWxvYWQgaGFzIGNvcnJlY3QgcGF5bG9hZCIpOworCSRleHBlY3RlZF9wYXlsb2Fk Kys7CiB9Ci1pcygkbm90aWZpY2F0aW9uc19jb3VudCwgMTAsICdyZWNlaXZlZCBhbGwgY29t bWl0dGVkIG5vdGlmaWNhdGlvbnMnKTsKIAogZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9wb3N0bWFzdGVyL3QvMDAyX2Nvbm5lY3Rpb25fbGltaXRzLnBsIGIvc3Jj L3Rlc3QvcG9zdG1hc3Rlci90LzAwMl9jb25uZWN0aW9uX2xpbWl0cy5wbAppbmRleCA4YzY3 YzRhODZjNy4uZDUwMTlmYWM3YjggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Bvc3RtYXN0ZXIv dC8wMDJfY29ubmVjdGlvbl9saW1pdHMucGwKKysrIGIvc3JjL3Rlc3QvcG9zdG1hc3Rlci90 LzAwMl9jb25uZWN0aW9uX2xpbWl0cy5wbApAQCAtNyw2ICs3LDcgQEAKIHVzZSBzdHJpY3Q7 CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVT UUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKQEAgLTMzLDE5ICszNCwxOSBA QCBHUkFOVCBwZ191c2VfcmVzZXJ2ZWRfY29ubmVjdGlvbnMgVE8gcmVncmVzc19yZXNlcnZl ZDsKIENSRUFURSBVU0VSIHJlZ3Jlc3Nfc3VwZXJ1c2VyIExPR0lOIFNVUEVSVVNFUjsKIH0p OwogCitteSAkbm9kZV9jb25uc3RyID0gJG5vZGUtPmNvbm5zdHIoJ3Bvc3RncmVzJyk7CisK ICMgV2l0aCB0aGUgbGltaXRzIHdlIHNldCBpbiBwb3N0Z3Jlc3FsLmNvbmYsIHdlIGNhbiBl c3RhYmxpc2g6CiAjIC0gMyBjb25uZWN0aW9ucyBmb3IgYW55IHVzZXIgd2l0aCBubyBzcGVj aWFsIHByaXZpbGVnZXMKICMgLSAyIG1vcmUgY29ubmVjdGlvbnMgZm9yIHVzZXJzIGJlbG9u Z2luZyB0byAicGdfdXNlX3Jlc2VydmVkX2Nvbm5lY3Rpb25zIgogIyAtIDEgbW9yZSBjb25u ZWN0aW9uIGZvciBzdXBlcnVzZXIKIAotc3ViIGJhY2tncm91bmRfcHNxbF9hc191c2VyCitz dWIgc2Vzc2lvbl9hc191c2VyCiB7CiAJbXkgJHVzZXIgPSBzaGlmdDsKKwlteSAkY29ubnN0 ciA9ICIkbm9kZV9jb25uc3RyIHVzZXI9JHVzZXIiOwogCi0JcmV0dXJuICRub2RlLT5iYWNr Z3JvdW5kX3BzcWwoCi0JCSdwb3N0Z3JlcycsCi0JCW9uX2Vycm9yX2RpZSA9PiAxLAotCQll eHRyYV9wYXJhbXMgPT4gWyAnLS11c2VybmFtZScgPT4gJHVzZXIgXSk7CisJcmV0dXJuIFBv c3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlLCBjb25uc3RyID0+ ICRjb25uc3RyKTsKIH0KIAogIyBMaWtlIGNvbm5lY3RfZmFpbHMoKSwgZXhjZXB0IHRoYXQg d2UgYWxzbyB3YWl0IGZvciB0aGUgZmFpbGVkIGJhY2tlbmQgdG8KQEAgLTgyLDkgKzgzLDkg QEAgJG5vZGUtPnJlc3RhcnQ7CiBteSBAc2Vzc2lvbnMgPSAoKTsKIG15IEByYXdfY29ubmVj dGlvbnMgPSAoKTsKIAotcHVzaChAc2Vzc2lvbnMsIGJhY2tncm91bmRfcHNxbF9hc191c2Vy KCdyZWdyZXNzX3JlZ3VsYXInKSk7Ci1wdXNoKEBzZXNzaW9ucywgYmFja2dyb3VuZF9wc3Fs X2FzX3VzZXIoJ3JlZ3Jlc3NfcmVndWxhcicpKTsKLXB1c2goQHNlc3Npb25zLCBiYWNrZ3Jv dW5kX3BzcWxfYXNfdXNlcigncmVncmVzc19yZWd1bGFyJykpOworcHVzaChAc2Vzc2lvbnMs IHNlc3Npb25fYXNfdXNlcigncmVncmVzc19yZWd1bGFyJykpOworcHVzaChAc2Vzc2lvbnMs IHNlc3Npb25fYXNfdXNlcigncmVncmVzc19yZWd1bGFyJykpOworcHVzaChAc2Vzc2lvbnMs IHNlc3Npb25fYXNfdXNlcigncmVncmVzc19yZWd1bGFyJykpOwogY29ubmVjdF9mYWlsc193 YWl0KAogCSRub2RlLAogCSJkYm5hbWU9cG9zdGdyZXMgdXNlcj1yZWdyZXNzX3JlZ3VsYXIi LApAQCAtOTMsOCArOTQsOCBAQCBjb25uZWN0X2ZhaWxzX3dhaXQoCiAJICBxci9GQVRBTDog IHJlbWFpbmluZyBjb25uZWN0aW9uIHNsb3RzIGFyZSByZXNlcnZlZCBmb3Igcm9sZXMgd2l0 aCBwcml2aWxlZ2VzIG9mIHRoZSAicGdfdXNlX3Jlc2VydmVkX2Nvbm5lY3Rpb25zIiByb2xl LwogKTsKIAotcHVzaChAc2Vzc2lvbnMsIGJhY2tncm91bmRfcHNxbF9hc191c2VyKCdyZWdy ZXNzX3Jlc2VydmVkJykpOwotcHVzaChAc2Vzc2lvbnMsIGJhY2tncm91bmRfcHNxbF9hc191 c2VyKCdyZWdyZXNzX3Jlc2VydmVkJykpOworcHVzaChAc2Vzc2lvbnMsIHNlc3Npb25fYXNf dXNlcigncmVncmVzc19yZXNlcnZlZCcpKTsKK3B1c2goQHNlc3Npb25zLCBzZXNzaW9uX2Fz X3VzZXIoJ3JlZ3Jlc3NfcmVzZXJ2ZWQnKSk7CiBjb25uZWN0X2ZhaWxzX3dhaXQoCiAJJG5v ZGUsCiAJImRibmFtZT1wb3N0Z3JlcyB1c2VyPXJlZ3Jlc3NfcmVzZXJ2ZWQiLApAQCAtMTAz LDcgKzEwNCw3IEBAIGNvbm5lY3RfZmFpbHNfd2FpdCgKIAkgIHFyL0ZBVEFMOiAgcmVtYWlu aW5nIGNvbm5lY3Rpb24gc2xvdHMgYXJlIHJlc2VydmVkIGZvciByb2xlcyB3aXRoIHRoZSBT VVBFUlVTRVIgYXR0cmlidXRlLwogKTsKIAotcHVzaChAc2Vzc2lvbnMsIGJhY2tncm91bmRf cHNxbF9hc191c2VyKCdyZWdyZXNzX3N1cGVydXNlcicpKTsKK3B1c2goQHNlc3Npb25zLCBz ZXNzaW9uX2FzX3VzZXIoJ3JlZ3Jlc3Nfc3VwZXJ1c2VyJykpOwogY29ubmVjdF9mYWlsc193 YWl0KAogCSRub2RlLAogCSJkYm5hbWU9cG9zdGdyZXMgdXNlcj1yZWdyZXNzX3N1cGVydXNl ciIsCkBAIC0xNTAsNyArMTUxLDcgQEAgU0tJUDoKICMgQ2xlYW4gdXAKIGZvcmVhY2ggbXkg JHNlc3Npb24gKEBzZXNzaW9ucykKIHsKLQkkc2Vzc2lvbi0+cXVpdDsKKwkkc2Vzc2lvbi0+ Y2xvc2U7CiB9CiBmb3JlYWNoIG15ICRzb2NrZXQgKEByYXdfY29ubmVjdGlvbnMpCiB7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAwOV90d29waGFzZS5wbCBiL3NyYy90 ZXN0L3JlY292ZXJ5L3QvMDA5X3R3b3BoYXNlLnBsCmluZGV4IGFhNzNkM2UxMDZjLi45ZmUw MzdiYjBhMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMDlfdHdvcGhhc2Uu cGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMDlfdHdvcGhhc2UucGwKQEAgLTYsNiAr Niw3IEBAIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiAKIHVz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNl c3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsK IApAQCAtMzMxLDExICszMzIsMTAgQEAgJGN1cl9wcmltYXJ5LT5zdG9wOwogJGN1cl9zdGFu ZGJ5LT5yZXN0YXJ0OwogCiAjIEFjcXVpcmUgYSBzbmFwc2hvdCBpbiBzdGFuZGJ5LCBiZWZv cmUgd2UgY29tbWl0IHRoZSBwcmVwYXJlZCB0cmFuc2FjdGlvbgotbXkgJHN0YW5kYnlfc2Vz c2lvbiA9Ci0gICRjdXJfc3RhbmRieS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9u X2Vycm9yX2RpZSA9PiAxKTsKLSRzdGFuZGJ5X3Nlc3Npb24tPnF1ZXJ5X3NhZmUoIkJFR0lO IElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQiKTsKK215ICRzdGFuZGJ5X3Nlc3Np b24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkY3VyX3N0YW5k YnkpOworJHN0YW5kYnlfc2Vzc2lvbi0+ZG8oIkJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBF QVRBQkxFIFJFQUQiKTsKICRwc3FsX291dCA9Ci0gICRzdGFuZGJ5X3Nlc3Npb24tPnF1ZXJ5 X3NhZmUoIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRfMDA5X3RibF9zdGFuZGJ5X212Y2MiKTsK KyAgJHN0YW5kYnlfc2Vzc2lvbi0+cXVlcnlfb25ldmFsKCJTRUxFQ1QgY291bnQoKikgRlJP TSB0XzAwOV90Ymxfc3RhbmRieV9tdmNjIik7CiBpcygkcHNxbF9vdXQsICcwJywKIAkiUHJl cGFyZWQgdHJhbnNhY3Rpb24gbm90IHZpc2libGUgaW4gc3RhbmRieSBiZWZvcmUgY29tbWl0 Iik7CiAKQEAgLTM0OSwxNyArMzQ5LDE3IEBAIENPTU1JVCBQUkVQQVJFRCAneGFjdF8wMDlf c3RhbmRieV9tdmNjJzsKIAogIyBTdGlsbCBub3QgdmlzaWJsZSB0byB0aGUgb2xkIHNuYXBz aG90CiAkcHNxbF9vdXQgPQotICAkc3RhbmRieV9zZXNzaW9uLT5xdWVyeV9zYWZlKCJTRUxF Q1QgY291bnQoKikgRlJPTSB0XzAwOV90Ymxfc3RhbmRieV9tdmNjIik7CisgICRzdGFuZGJ5 X3Nlc3Npb24tPnF1ZXJ5X29uZXZhbCgiU0VMRUNUIGNvdW50KCopIEZST00gdF8wMDlfdGJs X3N0YW5kYnlfbXZjYyIpOwogaXMoJHBzcWxfb3V0LCAnMCcsCiAJIkNvbW1pdHRlZCBwcmVw YXJlZCB0cmFuc2FjdGlvbiBub3QgdmlzaWJsZSB0byBvbGQgc25hcHNob3QgaW4gc3RhbmRi eSIpOwogCiAjIElzIHZpc2libGUgdG8gYSBuZXcgc25hcHNob3QKLSRzdGFuZGJ5X3Nlc3Np b24tPnF1ZXJ5X3NhZmUoIkNPTU1JVCIpOworJHN0YW5kYnlfc2Vzc2lvbi0+ZG8oIkNPTU1J VCIpOwogJHBzcWxfb3V0ID0KLSAgJHN0YW5kYnlfc2Vzc2lvbi0+cXVlcnlfc2FmZSgiU0VM RUNUIGNvdW50KCopIEZST00gdF8wMDlfdGJsX3N0YW5kYnlfbXZjYyIpOworICAkc3RhbmRi eV9zZXNzaW9uLT5xdWVyeV9vbmV2YWwoIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRfMDA5X3Ri bF9zdGFuZGJ5X212Y2MiKTsKIGlzKCRwc3FsX291dCwgJzInLAogCSJDb21taXR0ZWQgcHJl cGFyZWQgdHJhbnNhY3Rpb24gaXMgdmlzaWJsZSB0byBuZXcgc25hcHNob3QgaW4gc3RhbmRi eSIpOwotJHN0YW5kYnlfc2Vzc2lvbi0+cXVpdDsKKyRzdGFuZGJ5X3Nlc3Npb24tPmNsb3Nl OwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIENoZWNrIGZvciBhIGxvY2sgY29u ZmxpY3QgYmV0d2VlbiBwcmVwYXJlZCB0cmFuc2FjdGlvbiB3aXRoIERETCBpbnNpZGUgYW5k CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAxM19jcmFzaF9yZXN0YXJ0LnBs IGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTNfY3Jhc2hfcmVzdGFydC5wbAppbmRleCAwZmRl OTIwNzEzZS4uYjYyYjAwMDBlZGYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3Qv MDEzX2NyYXNoX3Jlc3RhcnQucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTNfY3Jh c2hfcmVzdGFydC5wbApAQCAtMTQ5LDcgKzE0OSw3IEBAIG9rKCBwdW1wX3VudGlsKAogJG1v bml0b3ItPmZpbmlzaDsKIAogIyBXYWl0IHRpbGwgc2VydmVyIHJlc3RhcnRzCi1pcygkbm9k ZS0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLCB1bmRlZiwgJycpLAoraXMoJG5vZGUt PnBvbGxfdW50aWxfY29ubmVjdGlvbigncG9zdGdyZXMnKSwKIAkiMSIsICJyZWNvbm5lY3Rl ZCBhZnRlciBTSUdRVUlUIik7CiAKIApAQCAtMjM4LDcgKzIzOCw3IEBAIG9rKCBwdW1wX3Vu dGlsKAogJG1vbml0b3ItPmZpbmlzaDsKIAogIyBXYWl0IHRpbGwgc2VydmVyIHJlc3RhcnRz Ci1pcygkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLCB1bmRlZiwgJycpLAor aXMoJG5vZGUtPnBvbGxfdW50aWxfY29ubmVjdGlvbigncG9zdGdyZXMnKSwKIAkiMSIsICJy ZWNvbm5lY3RlZCBhZnRlciBTSUdLSUxMIik7CiAKICMgTWFrZSBzdXJlIHRoZSBjb21taXR0 ZWQgcm93cyBzdXJ2aXZlZCwgaW4tcHJvZ3Jlc3Mgb25lcyBub3QKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlY292ZXJ5L3QvMDIyX2NyYXNoX3RlbXBfZmlsZXMucGwgYi9zcmMvdGVzdC9y ZWNvdmVyeS90LzAyMl9jcmFzaF90ZW1wX2ZpbGVzLnBsCmluZGV4IDVkZTliMGZiMGViLi42 YzU1ZmNmNDBiMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMjJfY3Jhc2hf dGVtcF9maWxlcy5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAyMl9jcmFzaF90ZW1w X2ZpbGVzLnBsCkBAIC0xNDYsNyArMTQ2LDcgQEAgb2soIHB1bXBfdW50aWwoCiAka2lsbG1l Mi0+ZmluaXNoOwogCiAjIFdhaXQgdGlsbCBzZXJ2ZXIgZmluaXNoZXMgcmVzdGFydGluZwot JG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgdW5kZWYsICcnKTsKKyRub2Rl LT5wb2xsX3VudGlsX2Nvbm5lY3Rpb24oJ3Bvc3RncmVzJyk7CiAKICMgQ2hlY2sgZm9yIHRl bXBvcmFyeSBmaWxlcwogaXMoICRub2RlLT5zYWZlX3BzcWwoCkBAIC0yNTMsNyArMjUzLDcg QEAgb2soIHB1bXBfdW50aWwoCiAka2lsbG1lMi0+ZmluaXNoOwogCiAjIFdhaXQgdGlsbCBz ZXJ2ZXIgZmluaXNoZXMgcmVzdGFydGluZwotJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoJ3Bv c3RncmVzJywgdW5kZWYsICcnKTsKKyRub2RlLT5wb2xsX3VudGlsX2Nvbm5lY3Rpb24oJ3Bv c3RncmVzJyk7CiAKICMgQ2hlY2sgZm9yIHRlbXBvcmFyeSBmaWxlcyAtLSBzaG91bGQgYmUg dGhlcmUKIGlzKCAkbm9kZS0+c2FmZV9wc3FsKApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVj b3ZlcnkvdC8wMzFfcmVjb3ZlcnlfY29uZmxpY3QucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90 LzAzMV9yZWNvdmVyeV9jb25mbGljdC5wbAppbmRleCA3YTc0MGY2OTgwNi4uNzQzNDk3NDkx NzAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDMxX3JlY292ZXJ5X2NvbmZs aWN0LnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDMxX3JlY292ZXJ5X2NvbmZsaWN0 LnBsCkBAIC03LDYgKzcsNyBAQAogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9 PiAnYWxsJzsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVT UUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2Ug VGVzdDo6TW9yZTsKIApAQCAtNjcsOCArNjgsNyBAQCAkbm9kZV9wcmltYXJ5LT53YWl0X2Zv cl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5KTsKIAogCiAjIGEgbG9uZ3J1bm5pbmcg cHNxbCB0aGF0IHdlIGNhbiB1c2UgdG8gdHJpZ2dlciBjb25mbGljdHMKLW15ICRwc3FsX3N0 YW5kYnkgPQotICAkbm9kZV9zdGFuZGJ5LT5iYWNrZ3JvdW5kX3BzcWwoJHRlc3RfZGIsIG9u X2Vycm9yX3N0b3AgPT4gMCk7CitteSAkcHNxbF9zdGFuZGJ5ID0gUG9zdGdyZVNRTDo6VGVz dDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGVfc3RhbmRieSwgZGJuYW1lID0+ICR0ZXN0 X2RiKTsKIG15ICRleHBlY3RlZF9jb25mbGljdHMgPSAwOwogCiAKQEAgLTk2LDcgKzk2LDcg QEAgbXkgJGN1cnNvcjEgPSAidGVzdF9yZWNvdmVyeV9jb25mbGljdF9jdXJzb3IiOwogCiAj IERFQ0xBUkUgYW5kIHVzZSBhIGN1cnNvciBvbiBzdGFuZGJ5LCBjYXVzaW5nIGJ1ZmZlciB3 aXRoIHRoZSBvbmx5IGJsb2NrIG9mCiAjIHRoZSByZWxhdGlvbiB0byBiZSBwaW5uZWQgb24g dGhlIHN0YW5kYnkKLW15ICRyZXMgPSAkcHNxbF9zdGFuZGJ5LT5xdWVyeV9zYWZlKAorbXkg JHJlcyA9ICRwc3FsX3N0YW5kYnktPnF1ZXJ5X29uZXZhbCgKIAlxcVsKICAgICBCRUdJTjsK ICAgICBERUNMQVJFICRjdXJzb3IxIENVUlNPUiBGT1IgU0VMRUNUIGIgRlJPTSAkdGFibGUx OwpAQCAtMTE5LDcgKzExOSw3IEBAICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgkdGVzdF9k YiwgcXFbVkFDVVVNIEZSRUVaRSAkdGFibGUxO10pOwogJG5vZGVfcHJpbWFyeS0+d2FpdF9m b3JfcmVwbGF5X2NhdGNodXAoJG5vZGVfc3RhbmRieSk7CiAKIGNoZWNrX2NvbmZsaWN0X2xv ZygiVXNlciB3YXMgaG9sZGluZyBzaGFyZWQgYnVmZmVyIHBpbiBmb3IgdG9vIGxvbmciKTsK LSRwc3FsX3N0YW5kYnktPnJlY29ubmVjdF9hbmRfY2xlYXIoKTsKKyRwc3FsX3N0YW5kYnkt PnJlY29ubmVjdCgpOwogY2hlY2tfY29uZmxpY3Rfc3RhdCgiYnVmZmVycGluIik7CiAKIApA QCAtMTMyLDcgKzEzMiw3IEBAICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgkdGVzdF9kYiwK ICRub2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRub2RlX3N0YW5kYnkp OwogCiAjIERFQ0xBUkUgYW5kIEZFVENIIGZyb20gY3Vyc29yIG9uIHRoZSBzdGFuZGJ5Ci0k cmVzID0gJHBzcWxfc3RhbmRieS0+cXVlcnlfc2FmZSgKKyRyZXMgPSAkcHNxbF9zdGFuZGJ5 LT5xdWVyeV9vbmV2YWwoCiAJcXFbCiAgICAgICAgIEJFR0lOOwogICAgICAgICBERUNMQVJF ICRjdXJzb3IxIENVUlNPUiBGT1IgU0VMRUNUIGIgRlJPTSAkdGFibGUxOwpAQCAtMTUyLDcg KzE1Miw3IEBAICRub2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRub2Rl X3N0YW5kYnkpOwogCiBjaGVja19jb25mbGljdF9sb2coCiAJIlVzZXIgcXVlcnkgbWlnaHQg aGF2ZSBuZWVkZWQgdG8gc2VlIHJvdyB2ZXJzaW9ucyB0aGF0IG11c3QgYmUgcmVtb3ZlZCIp OwotJHBzcWxfc3RhbmRieS0+cmVjb25uZWN0X2FuZF9jbGVhcigpOworJHBzcWxfc3RhbmRi eS0+cmVjb25uZWN0KCk7CiBjaGVja19jb25mbGljdF9zdGF0KCJzbmFwc2hvdCIpOwogCiAK QEAgLTE2MSw3ICsxNjEsNyBAQCAkc2VjdCA9ICJsb2NrIGNvbmZsaWN0IjsKICRleHBlY3Rl ZF9jb25mbGljdHMrKzsKIAogIyBhY3F1aXJlIGxvY2sgdG8gY29uZmxpY3Qgd2l0aAotJHJl cyA9ICRwc3FsX3N0YW5kYnktPnF1ZXJ5X3NhZmUoCiskcmVzID0gJHBzcWxfc3RhbmRieS0+ cXVlcnlfb25ldmFsKAogCXFxWwogICAgICAgICBCRUdJTjsKICAgICAgICAgTE9DSyBUQUJM RSAkdGFibGUxIElOIEFDQ0VTUyBTSEFSRSBNT0RFOwpAQCAtMTc1LDcgKzE3NSw3IEBAICRu b2RlX3ByaW1hcnktPnNhZmVfcHNxbCgkdGVzdF9kYiwgcXFbRFJPUCBUQUJMRSAkdGFibGUx O10pOwogJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJG5vZGVfc3Rh bmRieSk7CiAKIGNoZWNrX2NvbmZsaWN0X2xvZygiVXNlciB3YXMgaG9sZGluZyBhIHJlbGF0 aW9uIGxvY2sgZm9yIHRvbyBsb25nIik7Ci0kcHNxbF9zdGFuZGJ5LT5yZWNvbm5lY3RfYW5k X2NsZWFyKCk7CiskcHNxbF9zdGFuZGJ5LT5yZWNvbm5lY3QoKTsKIGNoZWNrX2NvbmZsaWN0 X3N0YXQoImxvY2siKTsKIAogCkBAIC0xODYsNyArMTg2LDcgQEAgJGV4cGVjdGVkX2NvbmZs aWN0cysrOwogIyBERUNMQVJFIGEgY3Vyc29yIGZvciBhIHF1ZXJ5IHdoaWNoLCB3aXRoIHN1 ZmZpY2llbnRseSBsb3cgd29ya19tZW0sIHdpbGwKICMgc3BpbGwgdHVwbGVzIGludG8gdGVt cCBmaWxlcyBpbiB0aGUgdGVtcG9yYXJ5IHRhYmxlc3BhY2UgY3JlYXRlZCBkdXJpbmcKICMg c2V0dXAuCi0kcmVzID0gJHBzcWxfc3RhbmRieS0+cXVlcnlfc2FmZSgKKyRyZXMgPSAkcHNx bF9zdGFuZGJ5LT5xdWVyeV9vbmV2YWwoCiAJcXFbCiAgICAgICAgIEJFR0lOOwogICAgICAg ICBTRVQgd29ya19tZW0gPSAnNjRrQic7CkBAIC0yMDUsNyArMjA1LDcgQEAgJG5vZGVfcHJp bWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJG5vZGVfc3RhbmRieSk7CiAKIGNoZWNr X2NvbmZsaWN0X2xvZygKIAkiVXNlciB3YXMgb3IgbWlnaHQgaGF2ZSBiZWVuIHVzaW5nIHRh Ymxlc3BhY2UgdGhhdCBtdXN0IGJlIGRyb3BwZWQiKTsKLSRwc3FsX3N0YW5kYnktPnJlY29u bmVjdF9hbmRfY2xlYXIoKTsKKyRwc3FsX3N0YW5kYnktPnJlY29ubmVjdCgpOwogY2hlY2tf Y29uZmxpY3Rfc3RhdCgidGFibGVzcGFjZSIpOwogCiAKQEAgLTIyMCw4ICsyMjAsOSBAQCAk bm9kZV9zdGFuZGJ5LT5hZGp1c3RfY29uZigKIAkncG9zdGdyZXNxbC5jb25mJywKIAknbWF4 X3N0YW5kYnlfc3RyZWFtaW5nX2RlbGF5JywKIAkiJHtQb3N0Z3JlU1FMOjpUZXN0OjpVdGls czo6dGltZW91dF9kZWZhdWx0fXMiKTsKKyRwc3FsX3N0YW5kYnktPmNsb3NlOwogJG5vZGVf c3RhbmRieS0+cmVzdGFydCgpOwotJHBzcWxfc3RhbmRieS0+cmVjb25uZWN0X2FuZF9jbGVh cigpOworJHBzcWxfc3RhbmRieS0+cmVjb25uZWN0KCk7CiAKICMgR2VuZXJhdGUgYSBmZXcg ZGVhZCByb3dzLCB0byBsYXRlciBiZSBjbGVhbmVkIHVwIGJ5IHZhY3V1bS4gVGhlbiBhY3F1 aXJlIGEKICMgbG9jayBvbiBhbm90aGVyIHJlbGF0aW9uIGluIGEgcHJlcGFyZWQgeGFjdCwg c28gaXQncyBoZWxkIGNvbnRpbnVvdXNseSBieQpAQCAtMjQ0LDEyICsyNDUsMTUgQEAgU0VM RUNUIHR4aWRfY3VycmVudCgpOwogCiAkbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlf Y2F0Y2h1cCgkbm9kZV9zdGFuZGJ5KTsKIAotJHJlcyA9ICRwc3FsX3N0YW5kYnktPnF1ZXJ5 X3VudGlsKAotCXFyL14xJC9tLCBxcVsKKyRyZXMgPSAkcHNxbF9zdGFuZGJ5LT5xdWVyeV9v bmV2YWwoCisJcXFbCiAgICAgQkVHSU47CiAgICAgLS0gaG9sZCBwaW4KICAgICBERUNMQVJF ICRjdXJzb3IxIENVUlNPUiBGT1IgU0VMRUNUIGEgRlJPTSAkdGFibGUxOwogICAgIEZFVENI IEZPUldBUkQgRlJPTSAkY3Vyc29yMTsKK10pOworaXMgKCRyZXMsIDEsICJwaW4gaGVsZCIp OworJHBzcWxfc3RhbmRieS0+ZG9fYXN5bmMocXFbCiAgICAgLS0gd2FpdCBmb3IgbG9jayBo ZWxkIGJ5IHByZXBhcmVkIHRyYW5zYWN0aW9uCiAJU0VMRUNUICogRlJPTSAkdGFibGUyOwog ICAgIF0pOwpAQCAtMjcwLDE1ICsyNzQsMTYgQEAgJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3Fs KCR0ZXN0X2RiLCBxcVtWQUNVVU0gRlJFRVpFICR0YWJsZTE7XSk7CiAkbm9kZV9wcmltYXJ5 LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5KTsKIAogY2hlY2tfY29u ZmxpY3RfbG9nKCJVc2VyIHRyYW5zYWN0aW9uIGNhdXNlZCBidWZmZXIgZGVhZGxvY2sgd2l0 aCByZWNvdmVyeS4iKTsKLSRwc3FsX3N0YW5kYnktPnJlY29ubmVjdF9hbmRfY2xlYXIoKTsK KyRwc3FsX3N0YW5kYnktPnJlY29ubmVjdCgpOwogY2hlY2tfY29uZmxpY3Rfc3RhdCgiZGVh ZGxvY2siKTsKIAogIyBjbGVhbiB1cCBmb3IgbmV4dCB0ZXN0cwogJG5vZGVfcHJpbWFyeS0+ c2FmZV9wc3FsKCR0ZXN0X2RiLCBxcVtST0xMQkFDSyBQUkVQQVJFRCAnbG9jayc7XSk7CiAk bm9kZV9zdGFuZGJ5LT5hZGp1c3RfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ21heF9zdGFu ZGJ5X3N0cmVhbWluZ19kZWxheScsCi0JJzUwbXMnKTsKKwkJCQkJCSAgICc1MG1zJyk7Cisk cHNxbF9zdGFuZGJ5LT5jbG9zZTsKICRub2RlX3N0YW5kYnktPnJlc3RhcnQoKTsKLSRwc3Fs X3N0YW5kYnktPnJlY29ubmVjdF9hbmRfY2xlYXIoKTsKKyRwc3FsX3N0YW5kYnktPnJlY29u bmVjdCgpOwogCiAKICMgQ2hlY2sgdGhhdCBleHBlY3RlZCBudW1iZXIgb2YgY29uZmxpY3Rz IHNob3cgaW4gcGdfc3RhdF9kYXRhYmFzZS4gTmVlZHMgdG8KQEAgLTMwMiw3ICszMDcsNyBA QCBjaGVja19jb25mbGljdF9sb2coIlVzZXIgd2FzIGNvbm5lY3RlZCB0byBhIGRhdGFiYXNl IHRoYXQgbXVzdCBiZSBkcm9wcGVkIik7CiAKICMgZXhwbGljaXRseSBzaHV0IGRvd24gcHNx bCBpbnN0YW5jZXMgZ3JhY2VmdWxseSAtIHRvIGF2b2lkIGhhbmdzIG9yIHdvcnNlIG9uCiAj IHdpbmRvd3MKLSRwc3FsX3N0YW5kYnktPnF1aXQ7CiskcHNxbF9zdGFuZGJ5LT5jbG9zZTsK IAogJG5vZGVfc3RhbmRieS0+c3RvcCgpOwogJG5vZGVfcHJpbWFyeS0+c3RvcCgpOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzdfaW52YWxpZF9kYXRhYmFzZS5wbCBi L3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM3X2ludmFsaWRfZGF0YWJhc2UucGwKaW5kZXggYTA5 NDcxMDg3MDAuLmIxMGE3OWQwZWU3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90 LzAzN19pbnZhbGlkX2RhdGFiYXNlLnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM3 X2ludmFsaWRfZGF0YWJhc2UucGwKQEAgLTUsNiArNSw3IEBACiB1c2Ugc3RyaWN0OwogdXNl IHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0 ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpU ZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCkBAIC05MSw0MSArOTIsMzggQEAgaXMo JG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywgJ0RST1AgREFUQUJBU0UgcmVncmVzc2lvbl9pbnZh bGlkJyksCiAjIGRyb3BwaW5nIHRoZSBkYXRhYmFzZSwgbWFraW5nIGl0IGEgc3VpdGFibGUg cG9pbnQgdG8gd2FpdC4gIFNpbmNlIHJlbGNhY2hlCiAjIGluaXQgcmVhZHMgcGdfdGFibGVz cGFjZSwgZXN0YWJsaXNoIGVhY2ggY29ubmVjdGlvbiBiZWZvcmUgbG9ja2luZy4gIFRoaXMK ICMgYXZvaWRzIGEgY29ubmVjdGlvbi10aW1lIGhhbmcgd2l0aCBkZWJ1Z19kaXNjYXJkX2Nh Y2hlcy4KLW15ICRjYW5jZWwgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jlcycs IG9uX2Vycm9yX3N0b3AgPT4gMSk7Ci1teSAkYmdwc3FsID0gJG5vZGUtPmJhY2tncm91bmRf cHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotbXkgJHBpZCA9ICRiZ3Bz cWwtPnF1ZXJ5KCdTRUxFQ1QgcGdfYmFja2VuZF9waWQoKScpOworbXkgJGNhbmNlbCA9IFBv c3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlPT4kbm9kZSk7CitteSAkYmdwc3Fs ID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGU9PiRub2RlKTsKK215ICRw aWQgPSAkYmdwc3FsLT5xdWVyeV9vbmV2YWwoJ1NFTEVDVCBwZ19iYWNrZW5kX3BpZCgpJyk7 CiAKICMgY3JlYXRlIHRoZSBkYXRhYmFzZSwgcHJldmVudCBkcm9wIGRhdGFiYXNlIHZpYSBs b2NrIGhlbGQgYnkgYSAyUEMgdHJhbnNhY3Rpb24KLSRiZ3BzcWwtPnF1ZXJ5X3NhZmUoCi0J cXEoCi0gIENSRUFURSBEQVRBQkFTRSByZWdyZXNzaW9uX2ludmFsaWRfaW50ZXJydXB0Owot ICBCRUdJTjsKK2lzICgxLCAgJGJncHNxbC0+ZG8oCisJCXFxKAorICBDUkVBVEUgREFUQUJB U0UgcmVncmVzc2lvbl9pbnZhbGlkX2ludGVycnVwdDspLAorICBxcShCRUdJTjsKICAgTE9D SyBwZ190YWJsZXNwYWNlOwotICBQUkVQQVJFIFRSQU5TQUNUSU9OICdsb2NrX3RibHNwYyc7 KSk7CisgIFBSRVBBUkUgVFJBTlNBQ1RJT04gJ2xvY2tfdGJsc3BjJzspKSk7CiAKICMgVHJ5 IHRvIGRyb3AuIFRoaXMgd2lsbCB3YWl0IGR1ZSB0byB0aGUgc3RpbGwgaGVsZCBsb2NrLgot JGJncHNxbC0+cXVlcnlfdW50aWwocXIvLywgIkRST1AgREFUQUJBU0UgcmVncmVzc2lvbl9p bnZhbGlkX2ludGVycnVwdDtcbiIpOworJGJncHNxbC0+ZG9fYXN5bmMoIkRST1AgREFUQUJB U0UgcmVncmVzc2lvbl9pbnZhbGlkX2ludGVycnVwdDsiKTsKIAogCiAjIE9uY2UgdGhlIERS T1AgREFUQUJBU0UgaXMgd2FpdGluZyBmb3IgdGhlIGxvY2ssIGludGVycnVwdCBpdC4KLW9r KCAkY2FuY2VsLT5xdWVyeV9zYWZlKAotCQlxcSgKK215ICRjYW5jZWxfcmVzID0gJGNhbmNl bC0+cXVlcnkoCisJCXFxWwogCURPIFwkXCQKIAlCRUdJTgogCQlXSElMRSBOT1QgRVhJU1RT KFNFTEVDVCAqIEZST00gcGdfbG9ja3MgV0hFUkUgTk9UIGdyYW50ZWQgQU5EIHJlbGF0aW9u ID0gJ3BnX3RhYmxlc3BhY2UnOjpyZWdjbGFzcyBBTkQgbW9kZSA9ICdBY2Nlc3NTaGFyZUxv Y2snKSBMT09QCiAJCQlQRVJGT1JNIHBnX3NsZWVwKC4xKTsKIAkJRU5EIExPT1A7CiAJRU5E XCRcJDsKLQlTRUxFQ1QgcGdfY2FuY2VsX2JhY2tlbmQoJHBpZCk7KSksCi0JImNhbmNlbGlu ZyBEUk9QIERBVEFCQVNFIik7Ci0kY2FuY2VsLT5xdWl0KCk7CisJU0VMRUNUIHBnX2NhbmNl bF9iYWNrZW5kKCRwaWQpXSk7CitpcyAoMiwgJGNhbmNlbF9yZXMtPntzdGF0dXN9LCAiY2Fu Y2VsaW5nIERST1AgREFUQUJBU0UiKTsgIyBDT01NQU5EX1RVUExFU19PSworJGNhbmNlbC0+ Y2xvc2UoKTsKIAorJGJncHNxbC0+d2FpdF9mb3JfY29tcGxldGlvbjsKICMgd2FpdCBmb3Ig Y2FuY2VsbGF0aW9uIHRvIGJlIHByb2Nlc3NlZAotb2soIHB1bXBfdW50aWwoCi0JCSRiZ3Bz cWwtPntydW59LCAkYmdwc3FsLT57dGltZW91dH0sCi0JCVwkYmdwc3FsLT57c3RkZXJyfSwg cXIvY2FuY2VsaW5nIHN0YXRlbWVudCBkdWUgdG8gdXNlciByZXF1ZXN0LyksCi0JImNhbmNl bCBwcm9jZXNzZWQiKTsKLSRiZ3BzcWwtPntzdGRlcnJ9ID0gJyc7CitwYXNzKCJjYW5jZWwg cHJvY2Vzc2VkIik7CiAKICMgVmVyaWZ5IHRoYXQgY29ubmVjdGlvbnMgdG8gdGhlIGRhdGFi YXNlIGFyZW4ndCBhbGxvd2VkLiAgVGhlIGJhY2tlbmQgY2hlY2tzCiAjIHRoaXMgYmVmb3Jl IHJlbGNhY2hlIGluaXQsIHNvIHRoZSBsb2NrIHdvbid0IGludGVyZmVyZS4KQEAgLTEzNCw5 ICsxMzIsMTIgQEAgaXMoJG5vZGUtPnBzcWwoJ3JlZ3Jlc3Npb25faW52YWxpZF9pbnRlcnJ1 cHQnLCAnJyksCiAKICMgVG8gcHJvcGVybHkgZHJvcCB0aGUgZGF0YWJhc2UsIHdlIG5lZWQg dG8gcmVsZWFzZSB0aGUgbG9jayBwcmV2aW91c2x5IHByZXZlbnRpbmcKICMgZG9pbmcgc28u Ci0kYmdwc3FsLT5xdWVyeV9zYWZlKHFxKFJPTExCQUNLIFBSRVBBUkVEICdsb2NrX3RibHNw YycpKTsKLSRiZ3BzcWwtPnF1ZXJ5X3NhZmUocXEoRFJPUCBEQVRBQkFTRSByZWdyZXNzaW9u X2ludmFsaWRfaW50ZXJydXB0KSk7CitvaygkYmdwc3FsLT5kbyhxcShST0xMQkFDSyBQUkVQ QVJFRCAnbG9ja190YmxzcGMnKSksCisJInVuYmxvY2sgRFJPUCBEQVRBQkFTRSIpOwogCi0k Ymdwc3FsLT5xdWl0KCk7CitvaygkYmdwc3FsLT5xdWVyeShxcShEUk9QIERBVEFCQVNFIHJl Z3Jlc3Npb25faW52YWxpZF9pbnRlcnJ1cHQpKSwKKwkiRFJPUCBEQVRBQkFTRSBpbnZhbGlk X2ludGVycnVwdCIpOworCiskYmdwc3FsLT5jbG9zZSgpOwogCiBkb25lX3Rlc3RpbmcoKTsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQwX3N0YW5kYnlfZmFpbG92ZXJf c2xvdHNfc3luYy5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQwX3N0YW5kYnlfZmFpbG92 ZXJfc2xvdHNfc3luYy5wbAppbmRleCBmODkyMmFhYTFhMi4uZWYxNmUwYTg3NDAgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQwX3N0YW5kYnlfZmFpbG92ZXJfc2xvdHNf c3luYy5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0MF9zdGFuZGJ5X2ZhaWxvdmVy X3Nsb3RzX3N5bmMucGwKQEAgLTQsNiArNCw3IEBACiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5p bmdzIEZBVEFMID0+ICdhbGwnOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1 c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpV dGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCkBAIC03NjgsMTcgKzc2OSwxMyBAQCAkcHJpbWFy eS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBwZ19jcmVhdGVfbG9naWNhbF9y ZXBsaWNhdGlvbl9zbG90KCd0ZXN0X3Nsb3QnLCAndGVzdF9kZWNvZGluZycsIGZhbHNlLCBm YWxzZSwgdHJ1ZSk7IgogKTsKIAotbXkgJGJhY2tfcSA9ICRwcmltYXJ5LT5iYWNrZ3JvdW5k X3BzcWwoCi0JJ3Bvc3RncmVzJywKLQlvbl9lcnJvcl9zdG9wID0+IDAsCi0JdGltZW91dCA9 PiAkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7CitteSAkYmFj a19xID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGU9PiRwcmltYXJ5KTsK IAogIyBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMgd2lsbCBiZSBibG9ja2VkIHVudGls IHRoZSBzdGFuZGJ5IGNhdGNoZXMgdXAsCiAjIGhlbmNlIGl0IG5lZWRzIHRvIGJlIGV4ZWN1 dGVkIGluIGEgYmFja2dyb3VuZCBzZXNzaW9uLgogJG9mZnNldCA9IC1zICRwcmltYXJ5LT5s b2dmaWxlOwotJGJhY2tfcS0+cXVlcnlfdW50aWwoCi0JcXIvbG9naWNhbF9zbG90X2dldF9j aGFuZ2VzLywgcSgKLSAgIFxlY2hvIGxvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcworJGJhY2tf cS0+ZG9fYXN5bmMoCisJcSgKICAgIFNFTEVDVCBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5n ZXMoJ3Rlc3Rfc2xvdCcsIE5VTEwsIE5VTEwpOwogKSk7CiAKQEAgLTc5Niw3ICs3OTMsOCBA QCAkcHJpbWFyeS0+cmVsb2FkOwogIyBTaW5jZSB0aGVyZSBhcmUgbm8gc2xvdHMgaW4gc3lu Y2hyb25pemVkX3N0YW5kYnlfc2xvdHMsIHRoZSBmdW5jdGlvbgogIyBwZ19sb2dpY2FsX3Ns b3RfZ2V0X2NoYW5nZXMgc2hvdWxkIG5vdyByZXR1cm4sIGFuZCB0aGUgc2Vzc2lvbiBjYW4g YmUKICMgc3RvcHBlZC4KLSRiYWNrX3EtPnF1aXQ7CiskYmFja19xLT53YWl0X2Zvcl9jb21w bGV0aW9uOworJGJhY2tfcS0+Y2xvc2U7CiAKICRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKIAkiU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgndGVzdF9zbG90Jyk7 Iik7CkBAIC0xMDU5LDEzICsxMDU3LDggQEAgJHN0YW5kYnkyLT5yZWxvYWQ7CiAjIHN5bmNo cm9uaXphdGlvbiB1bnRpbCB0aGUgcmVtb3RlIHNsb3QgY2F0Y2hlcyB1cC4KICMgVGhlIEFQ SSB3aWxsIG5vdCByZXR1cm4gdW50aWwgdGhpcyBoYXBwZW5zLCB0byBiZSBhYmxlIHRvIG1h a2UKICMgZnVydGhlciBjYWxscywgY2FsbCB0aGUgQVBJIGluIGEgYmFja2dyb3VuZCBwcm9j ZXNzLgotbXkgJGggPSAkc3RhbmRieTItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBv bl9lcnJvcl9zdG9wID0+IDApOwotCi0kaC0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnQvLCBx KAotCVxlY2hvIHN0YXJ0Ci0JU0VMRUNUIHBnX3N5bmNfcmVwbGljYXRpb25fc2xvdHMoKTsK LQkpKTsKK215ICRoID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4g JHN0YW5kYnkyKTsKKyRoLT5kb19hc3luYyhxKFNFTEVDVCBwZ19zeW5jX3JlcGxpY2F0aW9u X3Nsb3RzKCk7KSk7CiAKICMgQ29uZmlybSB0aGF0IHRoZSBzbG90IHN5bmMgaXMgc2tpcHBl ZCBkdWUgdG8gdGhlIHJlbW90ZSBzbG90IGxhZ2dpbmcgYmVoaW5kCiAkc3RhbmRieTItPndh aXRfZm9yX2xvZygKQEAgLTExMDQsNiArMTA5Nyw3IEBAICRzdGFuZGJ5Mi0+d2FpdF9mb3Jf bG9nKAogCXFyL25ld2x5IGNyZWF0ZWQgcmVwbGljYXRpb24gc2xvdCBcImxzdWIxX3Nsb3Rc IiBpcyBzeW5jLXJlYWR5IG5vdy8sCiAJJGxvZ19vZmZzZXQpOwogCi0kaC0+cXVpdDsKKyRo LT53YWl0X2Zvcl9jb21wbGV0aW9uOworJGgtPmNsb3NlOwogCiBkb25lX3Rlc3RpbmcoKTsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQxX2NoZWNrcG9pbnRfYXRfcHJv bW90ZS5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQxX2NoZWNrcG9pbnRfYXRfcHJvbW90 ZS5wbAppbmRleCBkMDc4M2ZlZjlhZS4uZmNjMDEzMzQ1ODkgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlY292ZXJ5L3QvMDQxX2NoZWNrcG9pbnRfYXRfcHJvbW90ZS5wbAorKysgYi9zcmMv dGVzdC9yZWNvdmVyeS90LzA0MV9jaGVja3BvaW50X2F0X3Byb21vdGUucGwKQEAgLTQsNiAr NCw3IEBACiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogdXNl IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vz c2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUaW1lOjpIaVJlcyBx dyh1c2xlZXApOwogdXNlIFRlc3Q6Ok1vcmU7CkBAIC03MCwxMSArNzEsOSBAQCAkbm9kZV9z dGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKICMgRXhlY3V0ZSBhIHJlc3RhcnQgcG9p bnQgb24gdGhlIHN0YW5kYnksIHRoYXQgd2Ugd2lsbCBub3cgYmUgd2FpdGluZyBvbi4KICMg VGhpcyBuZWVkcyB0byBiZSBpbiB0aGUgYmFja2dyb3VuZC4KIG15ICRsb2dzdGFydCA9IC1z ICRub2RlX3N0YW5kYnktPmxvZ2ZpbGU7Ci1teSAkcHNxbF9zZXNzaW9uID0KLSAgJG5vZGVf c3RhbmRieS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4g MCk7Ci0kcHNxbF9zZXNzaW9uLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ19jaGVja3Bv aW50LywgcSgKLSAgIFxlY2hvIHN0YXJ0aW5nX2NoZWNrcG9pbnQKK215ICRwc3FsX3Nlc3Np b24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZT0+ICRub2RlX3N0YW5k YnkpOworJHBzcWxfc2Vzc2lvbi0+ZG9fYXN5bmMoCisJcSgKICAgIENIRUNLUE9JTlQ7CiAp KTsKIApAQCAtMTU5LDcgKzE1OCw3IEBAIG9rKCBwdW1wX3VudGlsKAogJGtpbGxtZS0+Zmlu aXNoOwogCiAjIFdhaXQgdGlsbCBzZXJ2ZXIgZmluaXNoZXMgcmVzdGFydGluZy4KLSRub2Rl X3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgdW5kZWYsICcnKTsKKyRu b2RlX3N0YW5kYnktPnBvbGxfdW50aWxfY29ubmVjdGlvbigncG9zdGdyZXMnKTsKIAogIyBB ZnRlciByZWNvdmVyeSwgdGhlIHNlcnZlciBzaG91bGQgYmUgYWJsZSB0byBzdGFydC4KIG15 ICRzdGRvdXQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA0Ml9sb3dfbGV2 ZWxfYmFja3VwLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDJfbG93X2xldmVsX2JhY2t1 cC5wbAppbmRleCBkZjRhZTAyOWZlNi4uNTg0ODk0ODIzNDEgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlY292ZXJ5L3QvMDQyX2xvd19sZXZlbF9iYWNrdXAucGwKKysrIGIvc3JjL3Rlc3Qv cmVjb3ZlcnkvdC8wNDJfbG93X2xldmVsX2JhY2t1cC5wbApAQCAtMTAsNiArMTAsNyBAQCB1 c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiB1c2UgRmlsZTo6Q29weSBxdyhjb3B5KTsK IHVzZSBGaWxlOjpQYXRoIHF3KHJtdHJlZSk7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6 OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKQEAgLTIwLDExICsyMSwxMCBAQCAk bm9kZV9wcmltYXJ5LT5zdGFydDsKIAogIyBTdGFydCBiYWNrdXAuCiBteSAkYmFja3VwX25h bWUgPSAnYmFja3VwMSc7Ci1teSAkcHNxbCA9ICRub2RlX3ByaW1hcnktPmJhY2tncm91bmRf cHNxbCgncG9zdGdyZXMnKTsKK215ICRwc3FsID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lv bi0+bmV3KG5vZGUgPT4gJG5vZGVfcHJpbWFyeSk7CiAKLSRwc3FsLT5xdWVyeV9zYWZlKCJT RVQgY2xpZW50X21pbl9tZXNzYWdlcyBUTyBXQVJOSU5HIik7Ci0kcHNxbC0+c2V0X3F1ZXJ5 X3RpbWVyX3Jlc3RhcnQ7Ci0kcHNxbC0+cXVlcnlfc2FmZSgic2VsZWN0IHBnX2JhY2t1cF9z dGFydCgndGVzdCBsYWJlbCcpIik7CiskcHNxbC0+ZG8oIlNFVCBjbGllbnRfbWluX21lc3Nh Z2VzIFRPIFdBUk5JTkciKTsKKyRwc3FsLT5xdWVyeSgic2VsZWN0IHBnX2JhY2t1cF9zdGFy dCgndGVzdCBsYWJlbCcpIik7CiAKICMgQ29weSBmaWxlcy4KIG15ICRiYWNrdXBfZGlyID0g JG5vZGVfcHJpbWFyeS0+YmFja3VwX2RpciAuICcvJyAuICRiYWNrdXBfbmFtZTsKQEAgLTgx LDkgKzgxLDkgQEAgbXkgJHN0b3Bfc2VnbWVudF9uYW1lID0gJG5vZGVfcHJpbWFyeS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCiAKICMgU3RvcCBiYWNrdXAgYW5kIGdldCBiYWNrdXBfbGFi ZWwsIHRoZSBsYXN0IHNlZ21lbnQgaXMgYXJjaGl2ZWQuCiBteSAkYmFja3VwX2xhYmVsID0K LSAgJHBzcWwtPnF1ZXJ5X3NhZmUoInNlbGVjdCBsYWJlbGZpbGUgZnJvbSBwZ19iYWNrdXBf c3RvcCgpIik7CisgICRwc3FsLT5xdWVyeV9vbmV2YWwoInNlbGVjdCBsYWJlbGZpbGUgZnJv bSBwZ19iYWNrdXBfc3RvcCgpIik7CiAKLSRwc3FsLT5xdWl0OworJHBzcWwtPmNsb3NlOwog CiAjIFJhdGhlciB0aGFuIHdyaXRpbmcgb3V0IGJhY2t1cF9sYWJlbCwgdHJ5IHRvIHJlY292 ZXIgdGhlIGJhY2t1cCB3aXRob3V0CiAjIGJhY2t1cF9sYWJlbCB0byBkZW1vbnN0cmF0ZSB0 aGF0IHJlY292ZXJ5IHdpbGwgbm90IHdvcmsgY29ycmVjdGx5IHdpdGhvdXQgaXQsCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA0Nl9jaGVja3BvaW50X2xvZ2ljYWxfc2xv dC5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ2X2NoZWNrcG9pbnRfbG9naWNhbF9zbG90 LnBsCmluZGV4IDY2NzYxYmY1NmMxLi4zYTQ2ZjIwZmMyOCAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVjb3ZlcnkvdC8wNDZfY2hlY2twb2ludF9sb2dpY2FsX3Nsb3QucGwKKysrIGIvc3Jj L3Rlc3QvcmVjb3ZlcnkvdC8wNDZfY2hlY2twb2ludF9sb2dpY2FsX3Nsb3QucGwKQEAgLTgs NiArOCw3IEBAIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiAK IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6 OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiAKIHVzZSBUZXN0OjpN b3JlOwpAQCAtNTIsMTMgKzUzLDEwIEBAICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXtjaGVja3BvaW50fSk7CiAKICMgR2Vu ZXJhdGUgc29tZSB0cmFuc2FjdGlvbnMgdG8gZ2V0IFJVTk5JTkdfWEFDVFMuCi1teSAkeGFj dHMgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotJHhhY3RzLT5xdWVy eV91bnRpbCgKLQlxci9ydW5feGFjdHMvLAotCXEoXGVjaG8gcnVuX3hhY3RzCi1TRUxFQ1Qg MSBcd2F0Y2ggMC4xCi1ccQotKSk7Citmb3IgKG15ICRpID0gMDsgJGkgPCAxMDsgJGkrKykK K3sKKwkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdTRUxFQ1QgMScpOworfQogCiAk bm9kZS0+YWR2YW5jZV93YWwoMjApOwogCkBAIC03MiwxNiArNzAsMTEgQEAgJG5vZGUtPmFk dmFuY2Vfd2FsKDIwKTsKICMgcmVtb3Zpbmcgb2xkIFdBTCBzZWdtZW50cy4KIG5vdGUoJ3N0 YXJ0aW5nIGNoZWNrcG9pbnQnKTsKIAotbXkgJGNoZWNrcG9pbnQgPSAkbm9kZS0+YmFja2dy b3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotJGNoZWNrcG9pbnQtPnF1ZXJ5X3NhZmUoCiskbm9k ZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJcShzZWxlY3QgaW5qZWN0aW9uX3BvaW50c19h dHRhY2goJ2NoZWNrcG9pbnQtYmVmb3JlLW9sZC13YWwtcmVtb3ZhbCcsJ3dhaXQnKSkKICk7 Ci0kY2hlY2twb2ludC0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfY2hlY2twb2ludC8s Ci0JcShcZWNobyBzdGFydGluZ19jaGVja3BvaW50Ci1jaGVja3BvaW50OwotXHEKLSkpOwor bXkgJGNoZWNrcG9pbnQgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9 PiAkbm9kZSk7CiskY2hlY2twb2ludC0+ZG9fYXN5bmMocShDSEVDS1BPSU5UOykpOwogCiAj IFdhaXQgdW50aWwgdGhlIGNoZWNrcG9pbnQgc3RvcHMgcmlnaHQgYmVmb3JlIHJlbW92aW5n IFdBTCBzZWdtZW50cy4KIG5vdGUoJ3dhaXRpbmcgZm9yIGluamVjdGlvbl9wb2ludCcpOwpA QCAtOTAsMTcgKzgzLDIxIEBAIG5vdGUoJ2luamVjdGlvbl9wb2ludCBpcyByZWFjaGVkJyk7 CiAKICMgVHJ5IHRvIGFkdmFuY2UgdGhlIGxvZ2ljYWwgc2xvdCwgYnV0IG1ha2UgaXQgc3Rv cCB3aGVuIGl0IG1vdmVzIHRvIHRoZSBuZXh0CiAjIFdBTCBzZWdtZW50ICh0aGlzIGhhcyB0 byBoYXBwZW4gaW4gdGhlIGJhY2tncm91bmQsIHRvbykuCi1teSAkbG9naWNhbCA9ICRub2Rl LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7Ci0kbG9naWNhbC0+cXVlcnlfc2FmZSgK KyMgV2UgbmVlZCB0byBjYWxsIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcyByZXBlYXRl ZGx5IHVudGlsIHRoZSBzbG90CisjIGFkdmFuY2VzIHRvIHRoZSBuZXh0IHNlZ21lbnQgYW5k IGhpdHMgdGhlIGluamVjdGlvbiBwb2ludC4KK215ICRsb2dpY2FsID0gUG9zdGdyZVNRTDo6 VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworJGxvZ2ljYWwtPmRvKAogCXF7 c2VsZWN0IGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdsb2dpY2FsLXJlcGxpY2F0aW9uLXNs b3QtYWR2YW5jZS1zZWdtZW50Jywnd2FpdCcpO30KICk7Ci0kbG9naWNhbC0+cXVlcnlfdW50 aWwoCi0JcXIvZ2V0X2NoYW5nZXMvLAotCXEoCi1cZWNobyBnZXRfY2hhbmdlcwotc2VsZWN0 IGNvdW50KCopIGZyb20gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdzbG90X2xvZ2lj YWwnLCBudWxsLCBudWxsKSBcd2F0Y2ggMQotXHEKLSkpOworJGxvZ2ljYWwtPmRvX2FzeW5j KAorCXF7RE8gJCQKKwlCRUdJTgorCQlMT09QCisJCQlQRVJGT1JNIGNvdW50KCopIEZST00g cGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdzbG90X2xvZ2ljYWwnLCBudWxsLCBudWxs KTsKKwkJCVBFUkZPUk0gcGdfc2xlZXAoMC4xKTsKKwkJRU5EIExPT1A7CisJRU5EICQkO30K Kyk7CiAKICMgV2FpdCB1bnRpbCB0aGUgc2xvdCdzIHJlc3RhcnRfbHNuIHBvaW50cyB0byB0 aGUgbmV4dCBXQUwgc2VnbWVudC4KIG5vdGUoJ3dhaXRpbmcgZm9yIGluamVjdGlvbl9wb2lu dCcpOwpAQCAtMTM4LDEyICsxMzUsOCBAQCBldmFsIHsKIH07CiBpcygkQCwgJycsICJMb2dp Y2FsIHNsb3Qgc3RpbGwgdmFsaWQiKTsKIAotIyBJZiB3ZSBzZW5kIFxxIHdpdGggJDxwc3Fs X3Nlc3Npb24+LT5xdWl0IHRoZSBjb21tYW5kIGNhbiBiZSBzZW50IHRvIHRoZQotIyBzZXNz aW9uIGFscmVhZHkgY2xvc2VkLiBTbyBccSBpcyBpbiBpbml0aWFsIHNjcmlwdCwgaGVyZSB3 ZSBvbmx5IGZpbmlzaAotIyBJUEM6OlJ1bgotJHhhY3RzLT57cnVufS0+ZmluaXNoOwotJGNo ZWNrcG9pbnQtPntydW59LT5maW5pc2g7Ci0kbG9naWNhbC0+e3J1bn0tPmZpbmlzaDsKKyMg U2Vzc2lvbnMgd2VyZSB0ZXJtaW5hdGVkIGJ5IHRoZSBzZXJ2ZXIgY3Jhc2ggYW5kIHdpbGwg YmUgY2xlYW5lZCB1cAorIyBhdXRvbWF0aWNhbGx5IHdoZW4gdGhleSBnbyBvdXQgb2Ygc2Nv cGUuCiAKICMgVmVyaWZ5IHRoYXQgdGhlIHN5bmNocm9uaXplZCBzbG90cyB3b24ndCBiZSBp bnZhbGlkYXRlZCBpbW1lZGlhdGVseSBhZnRlcgogIyBzeW5jaHJvbml6YXRpb24gaW4gdGhl IHByZXNlbmNlIG9mIGEgY29uY3VycmVudCBjaGVja3BvaW50LgpAQCAtMTg1LDE1ICsxNzgs MTEgQEAgJHByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5KTsKICMg Y2hlY2twb2ludCBzdG9wcyByaWdodCBiZWZvcmUgaW52YWxpZGF0aW5nIHJlcGxpY2F0aW9u IHNsb3RzLgogbm90ZSgnc3RhcnRpbmcgY2hlY2twb2ludCcpOwogCi0kY2hlY2twb2ludCA9 ICRzdGFuZGJ5LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7Ci0kY2hlY2twb2ludC0+ cXVlcnlfc2FmZSgKKyRzdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAlxKHNlbGVj dCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgncmVzdGFydHBvaW50LWJlZm9yZS1zbG90LWlu dmFsaWRhdGlvbicsJ3dhaXQnKSkKICk7Ci0kY2hlY2twb2ludC0+cXVlcnlfdW50aWwoCi0J cXIvc3RhcnRpbmdfY2hlY2twb2ludC8sCi0JcShcZWNobyBzdGFydGluZ19jaGVja3BvaW50 Ci1jaGVja3BvaW50OwotKSk7CiskY2hlY2twb2ludCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNl c3Npb24tPm5ldyhub2RlID0+ICRzdGFuZGJ5KTsKKyRjaGVja3BvaW50LT5kb19hc3luYyhx KENIRUNLUE9JTlQ7KSk7CiAKICMgV2FpdCB1bnRpbCB0aGUgY2hlY2twb2ludCBzdG9wcyBy aWdodCBiZWZvcmUgaW52YWxpZGF0aW5nIHNsb3RzCiBub3RlKCd3YWl0aW5nIGZvciBpbmpl Y3Rpb25fcG9pbnQnKTsKQEAgLTIxNiw3ICsyMDUsOCBAQCAkc3RhbmRieS0+c2FmZV9wc3Fs KAogCXF7c2VsZWN0IGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdyZXN0YXJ0cG9pbnQtYmVm b3JlLXNsb3QtaW52YWxpZGF0aW9uJyk7CiAJICBzZWxlY3QgaW5qZWN0aW9uX3BvaW50c19k ZXRhY2goJ3Jlc3RhcnRwb2ludC1iZWZvcmUtc2xvdC1pbnZhbGlkYXRpb24nKX0pOwogCi0k Y2hlY2twb2ludC0+cXVpdDsKKyRjaGVja3BvaW50LT53YWl0X2Zvcl9jb21wbGV0aW9uOwor JGNoZWNrcG9pbnQtPmNsb3NlOwogCiAjIENvbmZpcm0gdGhhdCB0aGUgc2xvdCBpcyBub3Qg aW52YWxpZGF0ZWQKIGlzKCAkc3RhbmRieS0+c2FmZV9wc3FsKApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVjb3ZlcnkvdC8wNDdfY2hlY2twb2ludF9waHlzaWNhbF9zbG90LnBsIGIvc3Jj L3Rlc3QvcmVjb3ZlcnkvdC8wNDdfY2hlY2twb2ludF9waHlzaWNhbF9zbG90LnBsCmluZGV4 IDQzMzQxNDVhYmUxLi40MzE5M2MyMTliYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3Zl cnkvdC8wNDdfY2hlY2twb2ludF9waHlzaWNhbF9zbG90LnBsCisrKyBiL3NyYy90ZXN0L3Jl Y292ZXJ5L3QvMDQ3X2NoZWNrcG9pbnRfcGh5c2ljYWxfc2xvdC5wbApAQCAtOCw2ICs4LDcg QEAgdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIAogdXNlIFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lv bjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIAogdXNlIFRlc3Q6Ok1vcmU7CkBA IC02OSwxNiArNzAsMTEgQEAgbm90ZSgicmVzdGFydCBsc24gYmVmb3JlIGNoZWNrcG9pbnQ6 ICRyZXN0YXJ0X2xzbl9pbml0Iik7CiAjIHJlbW92aW5nIG9sZCBXQUwgc2VnbWVudHMuCiBu b3RlKCdzdGFydGluZyBjaGVja3BvaW50Jyk7CiAKLW15ICRjaGVja3BvaW50ID0gJG5vZGUt PmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKLSRjaGVja3BvaW50LT5xdWVyeV9zYWZl KAorbXkgJGNoZWNrcG9pbnQgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9k ZSA9PiAkbm9kZSk7CiskY2hlY2twb2ludC0+ZG8oCiAJcXtzZWxlY3QgaW5qZWN0aW9uX3Bv aW50c19hdHRhY2goJ2NoZWNrcG9pbnQtYmVmb3JlLW9sZC13YWwtcmVtb3ZhbCcsJ3dhaXQn KX0KICk7Ci0kY2hlY2twb2ludC0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfY2hlY2tw b2ludC8sCi0JcShcZWNobyBzdGFydGluZ19jaGVja3BvaW50Ci1jaGVja3BvaW50OwotXHEK LSkpOworJGNoZWNrcG9pbnQtPmRvX2FzeW5jKCdjaGVja3BvaW50Jyk7CiAKICMgV2FpdCB1 bnRpbCB0aGUgY2hlY2twb2ludCBzdG9wcyByaWdodCBiZWZvcmUgcmVtb3ZpbmcgV0FMIHNl Z21lbnRzLgogbm90ZSgnd2FpdGluZyBmb3IgaW5qZWN0aW9uX3BvaW50Jyk7CkBAIC0xMDQs NyArMTAwLDExIEBAIG15ICRyZXN0YXJ0X2xzbl9vbGQgPSAkbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCiBjaG9tcCgkcmVzdGFydF9sc25fb2xkKTsKIG5vdGUoInJlc3RhcnQgbHNu IGJlZm9yZSBzdG9wOiAkcmVzdGFydF9sc25fb2xkIik7CiAKLSMgQWJydXB0bHkgc3RvcCB0 aGUgc2VydmVyLgorJGNoZWNrcG9pbnQtPndhaXRfZm9yX2NvbXBsZXRpb24oKTsKKyRjaGVj a3BvaW50LT5jbG9zZSgpOworCisjIEFicnVwdGx5IHN0b3AgdGhlIHNlcnZlciAoMSBzZWNv bmQgc2hvdWxkIGJlIGVub3VnaCBmb3IgdGhlIGNoZWNrcG9pbnQKKyMgdG8gZmluaXNoOyBp dCB3b3VsZCBiZSBiZXR0ZXIpLgogJG5vZGUtPnN0b3AoJ2ltbWVkaWF0ZScpOwogCiAkbm9k ZS0+c3RhcnQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA0OF92YWN1dW1f aG9yaXpvbl9mbG9vci5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ4X3ZhY3V1bV9ob3Jp em9uX2Zsb29yLnBsCmluZGV4IDUyYWNiNTU2MWQ2Li5hNDg3YmUwNGRjOCAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDhfdmFjdXVtX2hvcml6b25fZmxvb3IucGwKKysr IGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDhfdmFjdXVtX2hvcml6b25fZmxvb3IucGwKQEAg LTQ1LDEyICs0NSwxMCBAQCBteSAkb3JpZ19jb25uaW5mbyA9ICRub2RlX3ByaW1hcnktPmNv bm5zdHIoKTsKIG15ICR0YWJsZTEgPSAidmFjX2hvcml6b25fZmxvb3JfdGFibGUiOwogCiAj IExvbmctcnVubmluZyBQcmltYXJ5IFNlc3Npb24gQQotbXkgJHBzcWxfcHJpbWFyeUEgPQot ICAkbm9kZV9wcmltYXJ5LT5iYWNrZ3JvdW5kX3BzcWwoJHRlc3RfZGIsIG9uX2Vycm9yX3N0 b3AgPT4gMSk7CitteSAkc2Vzc2lvbl9wcmltYXJ5QSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNl c3Npb24tPm5ldyhub2RlID0+ICRub2RlX3ByaW1hcnksIGRibmFtZSA9PiAkdGVzdF9kYik7 CiAKICMgTG9uZy1ydW5uaW5nIFByaW1hcnkgU2Vzc2lvbiBCCi1teSAkcHNxbF9wcmltYXJ5 QiA9Ci0gICRub2RlX3ByaW1hcnktPmJhY2tncm91bmRfcHNxbCgkdGVzdF9kYiwgb25fZXJy b3Jfc3RvcCA9PiAxKTsKK215ICRzZXNzaW9uX3ByaW1hcnlCID0gUG9zdGdyZVNRTDo6VGVz dDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGVfcHJpbWFyeSwgZGJuYW1lID0+ICR0ZXN0 X2RiKTsKIAogIyBPdXIgdGVzdCByZWxpZXMgb24gdHdvIHJvdW5kcyBvZiBpbmRleCB2YWN1 dW1pbmcgZm9yIHJlYXNvbnMgZWxhYm9yYXRlZAogIyBsYXRlci4gVG8gdHJpZ2dlciB0d28g cm91bmRzIG9mIGluZGV4IHZhY3V1bWluZywgd2UgbXVzdCBmaWxsIHVwIHRoZQpAQCAtMTIz LDcgKzEyMSw3IEBAICRub2RlX3JlcGxpY2EtPnBvbGxfcXVlcnlfdW50aWwoCiAjIE5vdyBp bnNlcnQgYW5kIHVwZGF0ZSBhIHR1cGxlIHdoaWNoIHdpbGwgYmUgdmlzaWJsZSB0byB0aGUg dmFjdXVtIG9uIHRoZQogIyBwcmltYXJ5IGJ1dCB3aGljaCB3aWxsIGhhdmUgeG1heCBuZXdl ciB0aGFuIHRoZSBvbGRlc3QgeG1pbiBvbiB0aGUgc3RhbmRieQogIyB0aGF0IHdhcyByZWNl bnRseSBkaXNjb25uZWN0ZWQuCi1teSAkcmVzID0gJHBzcWxfcHJpbWFyeUEtPnF1ZXJ5X3Nh ZmUoCitteSAkcmVzID0gJHNlc3Npb25fcHJpbWFyeUEtPnF1ZXJ5KAogCXFxWwogCQlJTlNF UlQgSU5UTyAkdGFibGUxIFZBTFVFUyAoOTkpOwogCQlVUERBVEUgJHRhYmxlMSBTRVQgY29s MSA9IDEwMCBXSEVSRSBjb2wxID0gOTk7CkBAIC0xMzIsNyArMTMwLDcgQEAgbXkgJHJlcyA9 ICRwc3FsX3ByaW1hcnlBLT5xdWVyeV9zYWZlKAogKTsKIAogIyBNYWtlIHN1cmUgdGhlIFVQ REFURSBmaW5pc2hlZAotbGlrZSgkcmVzLCBxci9eYWZ0ZXJfdXBkYXRlJC9tLCAiVVBEQVRF IG9jY3VycmVkIG9uIHByaW1hcnkgc2Vzc2lvbiBBIik7CitsaWtlKCRyZXMtPntwc3Fsb3V0 fSwgcXIvXmFmdGVyX3VwZGF0ZSQvbSwgIlVQREFURSBvY2N1cnJlZCBvbiBwcmltYXJ5IHNl c3Npb24gQSIpOwogCiAjIE9wZW4gYSBjdXJzb3Igb24gdGhlIHByaW1hcnkgd2hvc2UgcGlu IHdpbGwga2VlcCBWQUNVVU0gZnJvbSBnZXR0aW5nIGEKICMgY2xlYW51cCBsb2NrIG9uIHRo ZSBmaXJzdCBwYWdlIG9mIHRoZSByZWxhdGlvbi4gV2Ugd2FudCBWQUNVVU0gdG8gYmUgYWJs ZSB0bwpAQCAtMTQ1LDcgKzE0Myw3IEBAIG15ICRwcmltYXJ5X2N1cnNvcjEgPSAidmFjX2hv cml6b25fZmxvb3JfY3Vyc29yMSI7CiAjIFRoZSBmaXJzdCB2YWx1ZSBpbnNlcnRlZCBpbnRv IHRoZSB0YWJsZSB3YXMgYSA3LCBzbyBGRVRDSCBGT1JXQVJEIHNob3VsZAogIyByZXR1cm4g YSA3LiBUaGF0J3MgaG93IHdlIGtub3cgdGhlIGN1cnNvciBoYXMgYSBwaW4uCiAjIERpc2Fi bGUgaW5kZXggc2NhbnMgc28gdGhlIGN1cnNvciBwaW5zIGhlYXAgcGFnZXMgYW5kIG5vdCBp bmRleCBwYWdlcy4KLSRyZXMgPSAkcHNxbF9wcmltYXJ5Qi0+cXVlcnlfc2FmZSgKKyRyZXMg PSAkc2Vzc2lvbl9wcmltYXJ5Qi0+cXVlcnkoCiAJcXFbCiAJQkVHSU47CiAJU0VUIGVuYWJs ZV9iaXRtYXBzY2FuID0gb2ZmOwpAQCAtMTU2LDExICsxNTQsMTEgQEAgJHJlcyA9ICRwc3Fs X3ByaW1hcnlCLT5xdWVyeV9zYWZlKAogCV0KICk7CiAKLWlzKCRyZXMsIDcsIHFxW0N1cnNv ciBxdWVyeSByZXR1cm5lZCAkcmVzLiBFeHBlY3RlZCB2YWx1ZSA3Ll0pOworaXMoJHJlcy0+ e3BzcWxvdXR9LCA3LCBxcVtDdXJzb3IgcXVlcnkgcmV0dXJuZWQgJHJlcy0+e3BzcWxvdXR9 LiBFeHBlY3RlZCB2YWx1ZSA3Ll0pOwogCiAjIEdldCB0aGUgUElEIG9mIHRoZSBzZXNzaW9u IHdoaWNoIHdpbGwgcnVuIHRoZSBWQUNVVU0gRlJFRVpFIHNvIHRoYXQgd2UgY2FuCiAjIHVz ZSBpdCB0byBmaWx0ZXIgcGdfc3RhdF9hY3Rpdml0eSBsYXRlci4KLW15ICR2YWN1dW1fcGlk ID0gJHBzcWxfcHJpbWFyeUEtPnF1ZXJ5X3NhZmUoIlNFTEVDVCBwZ19iYWNrZW5kX3BpZCgp OyIpOworbXkgJHZhY3V1bV9waWQgPSAkc2Vzc2lvbl9wcmltYXJ5QS0+cXVlcnlfb25ldmFs KCJTRUxFQ1QgcGdfYmFja2VuZF9waWQoKTsiKTsKIAogIyBOb3cgc3RhcnQgYSBWQUNVVU0g RlJFRVpFIG9uIHRoZSBwcmltYXJ5LiBJdCB3aWxsIGNhbGwgdmFjdXVtX2dldF9jdXRvZmZz KCkKICMgYW5kIGVzdGFibGlzaCB2YWx1ZXMgb2YgT2xkZXN0WG1pbiBhbmQgR2xvYmFsVmlz U3RhdGUgd2hpY2ggYXJlIG5ld2VyIHRoYW4KQEAgLTE3NiwxNCArMTc0LDggQEAgbXkgJHZh Y3V1bV9waWQgPSAkcHNxbF9wcmltYXJ5QS0+cXVlcnlfc2FmZSgiU0VMRUNUIHBnX2JhY2tl bmRfcGlkKCk7Iik7CiAjIHBhZ2VzIG9mIHRoZSBoZWFwIG11c3QgYmUgcHJvY2Vzc2VkIGlu IG9yZGVyIGJ5IGEgc2luZ2xlIHdvcmtlciB0byBlbnN1cmUKICMgdGVzdCBzdGFiaWxpdHkg KFBBUkFMTEVMIDAgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSBidXQgZ3VhcmRzIGFnYWluc3Qg dGhlCiAjIHBvc3NpYmlsaXR5IG9mIHBhcmFsbGVsIGhlYXAgdmFjdXVtaW5nKS4KLSRwc3Fs X3ByaW1hcnlBLT57c3RkaW59IC49IHFxWwotCQlTRVQgbWFpbnRlbmFuY2VfaW9fY29uY3Vy cmVuY3kgPSAwOwotCQlWQUNVVU0gKFZFUkJPU0UsIEZSRUVaRSwgUEFSQUxMRUwgMCkgJHRh YmxlMTsKLQkJXFxlY2hvIFZBQ1VVTQotICAgICAgICBdOwotCi0jIE1ha2Ugc3VyZSB0aGUg VkFDVVVNIGNvbW1hbmQgbWFrZXMgaXQgdG8gdGhlIHNlcnZlci4KLSRwc3FsX3ByaW1hcnlB LT57cnVufS0+cHVtcF9uYigpOworJHNlc3Npb25fcHJpbWFyeUEtPmRvKCdTRVQgbWFpbnRl bmFuY2VfaW9fY29uY3VycmVuY3kgPSAwOycpOworJHNlc3Npb25fcHJpbWFyeUEtPmRvX2Fz eW5jKCJWQUNVVU0gKFZFUkJPU0UsIEZSRUVaRSwgUEFSQUxMRUwgMCkgJHRhYmxlMTsiKTsK IAogIyBNYWtlIHN1cmUgdGhhdCB0aGUgVkFDVVVNIGhhcyBhbHJlYWR5IGNhbGxlZCB2YWN1 dW1fZ2V0X2N1dG9mZnMoKSBhbmQgaXMKICMganVzdCB3YWl0aW5nIG9uIHRoZSBsb2NrIHRv IHN0YXJ0IHZhY3V1bWluZy4gV2UgZG9uJ3Qgd2FudCB0aGUgc3RhbmRieSB0bwpAQCAtMjI5 LDcgKzIyMSw3IEBAICRub2RlX3ByaW1hcnktPnBvbGxfcXVlcnlfdW50aWwoCiAjIGV4cGVj dCB0aGF0IGEgcm91bmQgb2YgaW5kZXggdmFjdXVtaW5nIGhhcyBoYXBwZW5lZCBhbmQgdGhh dCB0aGUgdmFjdXVtIGlzCiAjIG5vdyB3YWl0aW5nIGZvciB0aGUgY3Vyc29yIHRvIHJlbGVh c2UgaXRzIHBpbiBvbiB0aGUgbGFzdCBwYWdlIG9mIHRoZQogIyByZWxhdGlvbi4KLSRyZXMg PSAkcHNxbF9wcmltYXJ5Qi0+cXVlcnlfc2FmZSgiRkVUQ0ggJHByaW1hcnlfY3Vyc29yMSIp OworJHJlcyA9ICRzZXNzaW9uX3ByaW1hcnlCLT5xdWVyeV9vbmV2YWwoIkZFVENIICRwcmlt YXJ5X2N1cnNvcjEiKTsKIGlzKCRyZXMsIDcsCiAJcXFbQ3Vyc29yIHF1ZXJ5IHJldHVybmVk ICRyZXMgZnJvbSBzZWNvbmQgZmV0Y2guIEV4cGVjdGVkIHZhbHVlIDcuXSk7CiAKQEAgLTI0 MywxMyArMjM1LDcgQEAgJG5vZGVfcHJpbWFyeS0+cG9sbF9xdWVyeV91bnRpbCgKIAldLCAn dCcpOwogCiAjIENvbW1pdCB0aGUgdHJhbnNhY3Rpb24gd2l0aCB0aGUgb3BlbiBjdXJzb3Ig c28gdGhhdCB0aGUgVkFDVVVNIGNhbiBmaW5pc2guCi0kcHNxbF9wcmltYXJ5Qi0+cXVlcnlf dW50aWwoCi0JcXIvXmNvbW1pdCQvbSwKLQlxcVsKLQkJCUNPTU1JVDsKLQkJCVxcZWNobyBj b21taXQKLSAgICAgICAgXQotKTsKKyRzZXNzaW9uX3ByaW1hcnlCLT5kbygnQ09NTUlUJyk7 CiAKICMgVkFDVVVNIHByb2NlZWRzIHdpdGggcHJ1bmluZyBhbmQgZG9lcyBhIHZpc2liaWxp dHkgY2hlY2sgb24gZWFjaCB0dXBsZS4gSW4KICMgb2xkZXIgdmVyc2lvbnMgb2YgUG9zdGdy ZXMsIHBydW5pbmcgZm91bmQgb3VyIGZpbmFsIGRlYWQgdHVwbGUKQEAgLTI4MSw4ICsyNjcs OCBAQCAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJHRlc3RfZGIsICJJTlNFUlQgSU5UTyAk dGFibGUxIFZBTFVFUyAoMSk7Iik7CiAkbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVw KCRub2RlX3JlcGxpY2EsICdyZXBsYXknLCAkcHJpbWFyeV9sc24pOwogCiAjIyBTaHV0IGRv d24gcHNxbHMKLSRwc3FsX3ByaW1hcnlBLT5xdWl0OwotJHBzcWxfcHJpbWFyeUItPnF1aXQ7 Ciskc2Vzc2lvbl9wcmltYXJ5QS0+Y2xvc2U7Ciskc2Vzc2lvbl9wcmltYXJ5Qi0+Y2xvc2U7 CiAKICRub2RlX3JlcGxpY2EtPnN0b3AoKTsKICRub2RlX3ByaW1hcnktPnN0b3AoKTsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ5X3dhaXRfZm9yX2xzbi5wbCBiL3Ny Yy90ZXN0L3JlY292ZXJ5L3QvMDQ5X3dhaXRfZm9yX2xzbi5wbAppbmRleCBiYzIxNjA2NDcx NC4uOTkxMWU1YmZhMDQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ5X3dh aXRfZm9yX2xzbi5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0OV93YWl0X2Zvcl9s c24ucGwKQEAgLTUsNiArNSw3IEBAIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwg PT4gJ2FsbCc7CiAKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1 c2UgVGVzdDo6TW9yZTsKIApAQCAtMjIxLDIwICsyMjIsMTUgQEAgb2soJG91dHB1dCBlcSAi dGltZW91dCIsICJXQUlUIEZPUiByZXR1cm5zIGNvcnJlY3Qgc3RhdHVzIGFmdGVyIHRpbWVv dXQiKTsKIG15ICRzdWJ4YWN0X2xzbiA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9z dGdyZXMnLAogCSJTRUxFQ1QgcGdfY3VycmVudF93YWxfaW5zZXJ0X2xzbigpICsgMTAwMDAw MDAwMDAiKTsKIG15ICRzdWJ4YWN0X2FwcG5hbWUgPSAnd2FpdF9mb3JfbHNuX3N1YnhhY3Rf Y2xlYW51cCc7Ci1teSAkc3VieGFjdF9zZXNzaW9uID0KLSAgJG5vZGVfcHJpbWFyeS0+YmFj a2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0kc3VieGFj dF9zZXNzaW9uLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydC8sIHFxWwotCVNFVCBhcHBsaWNh dGlvbl9uYW1lID0gJyRzdWJ4YWN0X2FwcG5hbWUnOwotCUJFR0lOOwotCVNBVkVQT0lOVCB3 YWl0X2NsZWFudXA7Ci0JXFxlY2hvIHN0YXJ0Ci0JV0FJVCBGT1IgTFNOICcke3N1YnhhY3Rf bHNufScgV0lUSCAoTU9ERSAncHJpbWFyeV9mbHVzaCcpOwotCVJPTExCQUNLIFRPIHdhaXRf Y2xlYW51cDsKLQlXQUlUIEZPUiBMU04gJyR7c3VieGFjdF9sc259JwotCQlXSVRIIChNT0RF ICdwcmltYXJ5X2ZsdXNoJywgdGltZW91dCAnMTBtcycsIG5vX3Rocm93KTsKLQlDT01NSVQ7 Ci1dKTsKK215ICRzdWJ4YWN0X3Nlc3Npb24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9u LT5uZXcobm9kZSA9PiAkbm9kZV9wcmltYXJ5KTsKKyMgU2VuZCB0aGUgc2V0dXAgc3RhdGVt ZW50cyBpbmRpdmlkdWFsbHkgc28gdGhlIGZpcnN0IFdBSVQgRk9SIExTTiBjYW4gYmUKKyMg aXNzdWVkIGFzeW5jaHJvbm91c2x5OiBpdCBibG9ja3MgKHRoZSB0YXJnZXQgTFNOIGlzIHVu cmVhY2hhYmxlKSBhbmQgd2lsbAorIyBiZSBjYW5jZWxlZCBiZWxvdy4KKyRzdWJ4YWN0X3Nl c3Npb24tPmRvKCJTRVQgYXBwbGljYXRpb25fbmFtZSA9ICckc3VieGFjdF9hcHBuYW1lJyIp OworJHN1YnhhY3Rfc2Vzc2lvbi0+ZG8oIkJFR0lOIik7Ciskc3VieGFjdF9zZXNzaW9uLT5k bygiU0FWRVBPSU5UIHdhaXRfY2xlYW51cCIpOworJHN1YnhhY3Rfc2Vzc2lvbi0+ZG9fYXN5 bmMoCisJIldBSVQgRk9SIExTTiAnJHtzdWJ4YWN0X2xzbn0nIFdJVEggKE1PREUgJ3ByaW1h cnlfZmx1c2gnKSIpOwogJG5vZGVfcHJpbWFyeS0+cG9sbF9xdWVyeV91bnRpbCgKIAkncG9z dGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKikgPSAxIEZST00gcGdfc3RhdF9hY3Rpdml0eQpA QCAtMjQ4LDE4ICsyNDQsMzAgQEAgbXkgJHN1YnhhY3RfY2FuY2VsbGVkID0gJG5vZGVfcHJp bWFyeS0+c2FmZV9wc3FsKAogCSAgIEFORCB3YWl0X2V2ZW50ID0gJ1dhaXRGb3JXYWxGbHVz aCciCiApOwogaXMoJHN1YnhhY3RfY2FuY2VsbGVkLCAndCcsICJjYW5jZWxlZCBXQUlUIEZP UiBMU04gaW4gc3VidHJhbnNhY3Rpb24iKTsKLSRzdWJ4YWN0X3Nlc3Npb24tPnF1aXQ7Ci1j aG9tcCgkc3VieGFjdF9zZXNzaW9uLT57c3Rkb3V0fSk7CisKKyMgVGhlIGNhbmNlbCBpbnRl cnJ1cHRzIHRoZSBibG9ja2luZyBXQUlUIEZPUiBMU04sIGxlYXZpbmcgdGhlIHRyYW5zYWN0 aW9uCisjIGluIGFuIGFib3J0ZWQgc3RhdGUuCitteSAkc3VieGFjdF9jYW5jZWxfcmVzID0g JHN1YnhhY3Rfc2Vzc2lvbi0+Z2V0X2FzeW5jX3Jlc3VsdCgpOwogbGlrZSgKLQkkc3VieGFj dF9zZXNzaW9uLT57c3RkZXJyfSwKKwkkc3VieGFjdF9jYW5jZWxfcmVzLT57ZXJyb3JfbWVz c2FnZX0sCiAJcXIvY2FuY2VsaW5nIHN0YXRlbWVudCBkdWUgdG8gdXNlciByZXF1ZXN0LywK IAkicXVlcnkgY2FuY2VsIGludGVycnVwdGVkIFdBSVQgRk9SIExTTiBpbiBzdWJ0cmFuc2Fj dGlvbiIpOwotaXMoJHN1YnhhY3Rfc2Vzc2lvbi0+e3N0ZG91dH0sCisKKyMgUm9sbCBiYWNr IHRvIHRoZSBzYXZlcG9pbnQgc28gYSBzZWNvbmQgV0FJVCBGT1IgTFNOIGNhbiByZWdpc3Rl ciBhZ2FpbiBpbgorIyB0aGUgc2FtZSBiYWNrZW5kOyB3aXRoIG5vX3Rocm93IGl0IHJldHVy bnMgJ3RpbWVvdXQnIHJhdGhlciB0aGFuIGVycm9yaW5nLgorJHN1YnhhY3Rfc2Vzc2lvbi0+ ZG8oIlJPTExCQUNLIFRPIHdhaXRfY2xlYW51cCIpOworbXkgJHN1YnhhY3RfdGltZW91dCA9 ICRzdWJ4YWN0X3Nlc3Npb24tPnF1ZXJ5X29uZXZhbCgKKwkiV0FJVCBGT1IgTFNOICcke3N1 YnhhY3RfbHNufScKKwkJV0lUSCAoTU9ERSAncHJpbWFyeV9mbHVzaCcsIHRpbWVvdXQgJzEw bXMnLCBub190aHJvdykiKTsKK2lzKCRzdWJ4YWN0X3RpbWVvdXQsCiAJInRpbWVvdXQiLCAi c2Vjb25kIFdBSVQgRk9SIExTTiB0aW1lZCBvdXQgYWZ0ZXIgc2F2ZXBvaW50IHJvbGxiYWNr Iik7Ci11bmxpa2UoCi0JJHN1YnhhY3Rfc2Vzc2lvbi0+e3N0ZGVycn0sCi0JcXIvc2VydmVy IGNsb3NlZCB0aGUgY29ubmVjdGlvbiB1bmV4cGVjdGVkbHkvLAorCisjIFRoZSBiYWNrZW5k IHN1cnZpdmVkIHRoZSBjYW5jZWwgd2l0aG91dCBkaXNjb25uZWN0aW5nOiB0aGUgY29ubmVj dGlvbiBpcworIyBzdGlsbCB1c2FibGUuCitpcygkc3VieGFjdF9zZXNzaW9uLT5xdWVyeV9v bmV2YWwoJ1NFTEVDVCAxJyksICcxJywKIAkiV0FJVCBGT1IgTFNOIGFmdGVyIHNhdmVwb2lu dCByb2xsYmFjayBkaWQgbm90IGRpc2Nvbm5lY3QiKTsKKyRzdWJ4YWN0X3Nlc3Npb24tPmRv KCJDT01NSVQiKTsKKyRzdWJ4YWN0X3Nlc3Npb24tPmNsb3NlOwogCiAjIDUuIENoZWNrIG1v ZGUgdmFsaWRhdGlvbjogc3RhbmRieSBtb2RlcyBlcnJvciBvbiBwcmltYXJ5LCBwcmltYXJ5 IG1vZGUgZXJyb3JzCiAjIG9uIHN0YW5kYnksIGFuZCBwcmltYXJ5X2ZsdXNoIHdvcmtzIG9u IHByaW1hcnkuICBBbHNvIGNoZWNrIHRoYXQgV0FJVCBGT1IKQEAgLTQ2NywxMCArNDc1LDgg QEAgZm9yIChteSAkaSA9IDA7ICRpIDwgNTsgJGkrKykKIAlteSAkbHNuID0KIAkgICRub2Rl X3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQkiU0VMRUNUIHBnX2N1cnJlbnRf d2FsX2luc2VydF9sc24oKSIpOwotCSRwc3FsX3Nlc3Npb25zWyRpXSA9ICRub2RlX3N0YW5k YnktPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKLQkkcHNxbF9zZXNzaW9uc1skaV0t PnF1ZXJ5X3VudGlsKAotCQlxci9zdGFydC8sIHFxWwotCQlcXGVjaG8gc3RhcnQKKwkkcHNx bF9zZXNzaW9uc1skaV0gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9 PiAkbm9kZV9zdGFuZGJ5KTsKKwkkcHNxbF9zZXNzaW9uc1skaV0tPmRvX2FzeW5jKHFxWwog CQlXQUlUIEZPUiBMU04gJyR7bHNufSc7CiAJCVNFTEVDVCBsb2dfY291bnQoJHtpfSk7CiAJ XSk7CkBAIC00ODEsNyArNDg3LDggQEAgJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJTRUxFQ1QgcGdfd2FsX3JlcGxheV9yZXN1bWUoKTsiKTsKIGZvciAobXkgJGkg PSAwOyAkaSA8IDU7ICRpKyspCiB7CiAJJG5vZGVfc3RhbmRieS0+d2FpdF9mb3JfbG9nKCJj b3VudCAke2l9IiwgJGxvZ19vZmZzZXQpOwotCSRwc3FsX3Nlc3Npb25zWyRpXS0+cXVpdDsK KwkkcHNxbF9zZXNzaW9uc1skaV0tPndhaXRfZm9yX2NvbXBsZXRpb247CisJJHBzcWxfc2Vz c2lvbnNbJGldLT5jbG9zZTsKIH0KIAogb2soMSwgJ211bHRpcGxlIHN0YW5kYnlfcmVwbGF5 IHdhaXRlcnMgcmVwb3J0ZWQgY29uc2lzdGVudCBkYXRhJyk7CkBAIC01MDUsMTAgKzUxMiw4 IEBAIGZvciAobXkgJGkgPSAwOyAkaSA8IDU7ICRpKyspCiBteSBAd3JpdGVfc2Vzc2lvbnM7 CiBmb3IgKG15ICRpID0gMDsgJGkgPCA1OyAkaSsrKQogewotCSR3cml0ZV9zZXNzaW9uc1sk aV0gPSAkbm9kZV9zdGFuZGJ5LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7Ci0JJHdy aXRlX3Nlc3Npb25zWyRpXS0+cXVlcnlfdW50aWwoCi0JCXFyL3N0YXJ0LywgcXFbCi0JCVxc ZWNobyBzdGFydAorCSR3cml0ZV9zZXNzaW9uc1skaV0gPSBQb3N0Z3JlU1FMOjpUZXN0OjpT ZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZV9zdGFuZGJ5KTsKKwkkd3JpdGVfc2Vzc2lvbnNb JGldLT5kb19hc3luYyhxcVsKIAkJV0FJVCBGT1IgTFNOICckd3JpdGVfbHNuc1skaV0nIFdJ VEggKE1PREUgJ3N0YW5kYnlfd3JpdGUnLCB0aW1lb3V0ICcxZCcpOwogCQlTRUxFQ1QgbG9n X3dhaXRfZG9uZSgnd3JpdGVfZG9uZScsICRpKTsKIAldKTsKQEAgLTUyNyw3ICs1MzIsOCBA QCByZXN1bWVfd2FscmVjZWl2ZXIoJG5vZGVfc3RhbmRieSk7CiBmb3IgKG15ICRpID0gMDsg JGkgPCA1OyAkaSsrKQogewogCSRub2RlX3N0YW5kYnktPndhaXRfZm9yX2xvZygid3JpdGVf ZG9uZSAkaSIsICR3cml0ZV9sb2dfb2Zmc2V0KTsKLQkkd3JpdGVfc2Vzc2lvbnNbJGldLT5x dWl0OworCSR3cml0ZV9zZXNzaW9uc1skaV0tPndhaXRfZm9yX2NvbXBsZXRpb247CisJJHdy aXRlX3Nlc3Npb25zWyRpXS0+Y2xvc2U7CiB9CiAKICMgVmVyaWZ5IG9uIHN0YW5kYnkgdGhh dCBXQUwgd2FzIHdyaXR0ZW4gdXAgdG8gdGhlIHRhcmdldCBMU04KQEAgLTU1NywxMCArNTYz LDggQEAgZm9yIChteSAkaSA9IDA7ICRpIDwgNTsgJGkrKykKIG15IEBmbHVzaF9zZXNzaW9u czsKIGZvciAobXkgJGkgPSAwOyAkaSA8IDU7ICRpKyspCiB7Ci0JJGZsdXNoX3Nlc3Npb25z WyRpXSA9ICRub2RlX3N0YW5kYnktPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKLQkk Zmx1c2hfc2Vzc2lvbnNbJGldLT5xdWVyeV91bnRpbCgKLQkJcXIvc3RhcnQvLCBxcVsKLQkJ XFxlY2hvIHN0YXJ0CisJJGZsdXNoX3Nlc3Npb25zWyRpXSA9IFBvc3RncmVTUUw6OlRlc3Q6 OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlX3N0YW5kYnkpOworCSRmbHVzaF9zZXNzaW9u c1skaV0tPmRvX2FzeW5jKHFxWwogCQlXQUlUIEZPUiBMU04gJyRmbHVzaF9sc25zWyRpXScg V0lUSCAoTU9ERSAnc3RhbmRieV9mbHVzaCcsIHRpbWVvdXQgJzFkJyk7CiAJCVNFTEVDVCBs b2dfd2FpdF9kb25lKCdmbHVzaF9kb25lJywgJGkpOwogCV0pOwpAQCAtNTc5LDcgKzU4Myw4 IEBAIHJlc3VtZV93YWxyZWNlaXZlcigkbm9kZV9zdGFuZGJ5KTsKIGZvciAobXkgJGkgPSAw OyAkaSA8IDU7ICRpKyspCiB7CiAJJG5vZGVfc3RhbmRieS0+d2FpdF9mb3JfbG9nKCJmbHVz aF9kb25lICRpIiwgJGZsdXNoX2xvZ19vZmZzZXQpOwotCSRmbHVzaF9zZXNzaW9uc1skaV0t PnF1aXQ7CisJJGZsdXNoX3Nlc3Npb25zWyRpXS0+d2FpdF9mb3JfY29tcGxldGlvbjsKKwkk Zmx1c2hfc2Vzc2lvbnNbJGldLT5jbG9zZTsKIH0KIAogIyBWZXJpZnkgb24gc3RhbmRieSB0 aGF0IFdBTCB3YXMgZmx1c2hlZCB1cCB0byB0aGUgdGFyZ2V0IExTTgpAQCAtNjE1LDEwICs2 MjAsOCBAQCBteSBAbWl4ZWRfc2Vzc2lvbnM7CiBteSBAbWl4ZWRfbW9kZXMgPSAoJ3N0YW5k YnlfcmVwbGF5JywgJ3N0YW5kYnlfd3JpdGUnLCAnc3RhbmRieV9mbHVzaCcpOwogZm9yICht eSAkaSA9IDA7ICRpIDwgNjsgJGkrKykKIHsKLQkkbWl4ZWRfc2Vzc2lvbnNbJGldID0gJG5v ZGVfc3RhbmRieS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotCSRtaXhlZF9zZXNz aW9uc1skaV0tPnF1ZXJ5X3VudGlsKAotCQlxci9zdGFydC8sIHFxWwotCQlcXGVjaG8gc3Rh cnQKKwkkbWl4ZWRfc2Vzc2lvbnNbJGldID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+ bmV3KG5vZGUgPT4gJG5vZGVfc3RhbmRieSk7CisJJG1peGVkX3Nlc3Npb25zWyRpXS0+ZG9f YXN5bmMocXFbCiAJCVdBSVQgRk9SIExTTiAnJHttaXhlZF90YXJnZXRfbHNufScgV0lUSCAo TU9ERSAnJG1peGVkX21vZGVzWyRpICUgM10nLCB0aW1lb3V0ICcxZCcpOwogCQlTRUxFQ1Qg bG9nX3dhaXRfZG9uZSgnbWl4ZWRfZG9uZScsICRpKTsKIAldKTsKQEAgLTY0Miw3ICs2NDUs OCBAQCByZXN1bWVfd2FscmVjZWl2ZXIoJG5vZGVfc3RhbmRieSk7CiBmb3IgKG15ICRpID0g MDsgJGkgPCA2OyAkaSsrKQogewogCSRub2RlX3N0YW5kYnktPndhaXRfZm9yX2xvZygibWl4 ZWRfZG9uZSAkaSIsICRtaXhlZF9sb2dfb2Zmc2V0KTsKLQkkbWl4ZWRfc2Vzc2lvbnNbJGld LT5xdWl0OworCSRtaXhlZF9zZXNzaW9uc1skaV0tPndhaXRfZm9yX2NvbXBsZXRpb247CisJ JG1peGVkX3Nlc3Npb25zWyRpXS0+Y2xvc2U7CiB9CiAKICMgVmVyaWZ5IGFsbCBtb2RlcyBy ZWFjaGVkIHRoZSB0YXJnZXQgTFNOCkBAIC02NzUsMTAgKzY3OSw4IEBAIG15ICRwcmltYXJ5 X2ZsdXNoX2xvZ19vZmZzZXQgPSAtcyAkbm9kZV9wcmltYXJ5LT5sb2dmaWxlOwogbXkgQHBy aW1hcnlfZmx1c2hfc2Vzc2lvbnM7CiBmb3IgKG15ICRpID0gMDsgJGkgPCA1OyAkaSsrKQog ewotCSRwcmltYXJ5X2ZsdXNoX3Nlc3Npb25zWyRpXSA9ICRub2RlX3ByaW1hcnktPmJhY2tn cm91bmRfcHNxbCgncG9zdGdyZXMnKTsKLQkkcHJpbWFyeV9mbHVzaF9zZXNzaW9uc1skaV0t PnF1ZXJ5X3VudGlsKAotCQlxci9zdGFydC8sIHFxWwotCQlcXGVjaG8gc3RhcnQKKwkkcHJp bWFyeV9mbHVzaF9zZXNzaW9uc1skaV0gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5u ZXcobm9kZSA9PiAkbm9kZV9wcmltYXJ5KTsKKwkkcHJpbWFyeV9mbHVzaF9zZXNzaW9uc1sk aV0tPmRvX2FzeW5jKHFxWwogCQlXQUlUIEZPUiBMU04gJyRwcmltYXJ5X2ZsdXNoX2xzbnNb JGldJyBXSVRIIChNT0RFICdwcmltYXJ5X2ZsdXNoJywgdGltZW91dCAnMWQnKTsKIAkJU0VM RUNUIGxvZ193YWl0X2RvbmUoJ3ByaW1hcnlfZmx1c2hfZG9uZScsICRpKTsKIAldKTsKQEAg LTY4OSw3ICs2OTEsOCBAQCBmb3IgKG15ICRpID0gMDsgJGkgPCA1OyAkaSsrKQogewogCSRu b2RlX3ByaW1hcnktPndhaXRfZm9yX2xvZygicHJpbWFyeV9mbHVzaF9kb25lICRpIiwKIAkJ JHByaW1hcnlfZmx1c2hfbG9nX29mZnNldCk7Ci0JJHByaW1hcnlfZmx1c2hfc2Vzc2lvbnNb JGldLT5xdWl0OworCSRwcmltYXJ5X2ZsdXNoX3Nlc3Npb25zWyRpXS0+d2FpdF9mb3JfY29t cGxldGlvbjsKKwkkcHJpbWFyeV9mbHVzaF9zZXNzaW9uc1skaV0tPmNsb3NlOwogfQogCiAj IFZlcmlmeSBvbiBwcmltYXJ5IHRoYXQgV0FMIHdhcyBmbHVzaGVkIHVwIHRvIHRoZSB0YXJn ZXQgTFNOCkBAIC03MTcsMTAgKzcyMCw4IEBAIG15IEB3YWl0X21vZGVzID0gKCdzdGFuZGJ5 X3JlcGxheScsICdzdGFuZGJ5X3dyaXRlJywgJ3N0YW5kYnlfZmx1c2gnKTsKIG15IEB3YWl0 X3Nlc3Npb25zOwogZm9yIChteSAkaSA9IDA7ICRpIDwgMzsgJGkrKykKIHsKLQkkd2FpdF9z ZXNzaW9uc1skaV0gPSAkbm9kZV9zdGFuZGJ5LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVz Jyk7Ci0JJHdhaXRfc2Vzc2lvbnNbJGldLT5xdWVyeV91bnRpbCgKLQkJcXIvc3RhcnQvLCBx cVsKLQkJXFxlY2hvIHN0YXJ0CisJJHdhaXRfc2Vzc2lvbnNbJGldID0gUG9zdGdyZVNRTDo6 VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGVfc3RhbmRieSk7CisJJHdhaXRfc2Vz c2lvbnNbJGldLT5kb19hc3luYyhxcVsKIAkJV0FJVCBGT1IgTFNOICcke2xzbjR9JyBXSVRI IChNT0RFICckd2FpdF9tb2Rlc1skaV0nKTsKIAldKTsKIH0KQEAgLTc1OCwxMiArNzU5LDcg QEAgb2soJG91dHB1dCBlcSAibm90IGluIHJlY292ZXJ5IiwKICRub2RlX3N0YW5kYnktPnN0 b3A7CiAkbm9kZV9wcmltYXJ5LT5zdG9wOwogCi0jIElmIHdlIHNlbmQgXHEgd2l0aCAkc2Vz c2lvbi0+cXVpdCB0aGUgY29tbWFuZCBjYW4gYmUgc2VudCB0byB0aGUgc2Vzc2lvbgotIyBh bHJlYWR5IGNsb3NlZC4gU28gXHEgaXMgaW4gaW5pdGlhbCBzY3JpcHQsIGhlcmUgd2Ugb25s eSBmaW5pc2ggSVBDOjpSdW4uCi1mb3IgKG15ICRpID0gMDsgJGkgPCAzOyAkaSsrKQotewot CSR3YWl0X3Nlc3Npb25zWyRpXS0+e3J1bn0tPmZpbmlzaDsKLX0KKyMgU2Vzc2lvbnMgd2ls bCBiZSBjbGVhbmVkIHVwIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGV5IGdvIG91dCBvZiBzY29w ZS4KIAogIyA5LiBBcmNoaXZlLW9ubHkgc3RhbmRieSB0ZXN0czogdmVyaWZ5IHN0YW5kYnlf d3JpdGUvc3RhbmRieV9mbHVzaCB3b3JrCiAjIHdpdGhvdXQgYSB3YWxyZWNlaXZlci4gIFRo ZXNlIGV4ZXJjaXNlcyB0aGUgcmVwbGF5LXBvc2l0aW9uIGZsb29yIGluCkBAIC04NjIsMTgg Kzg1OCwxNCBAQCAkYXJjX3ByaW1hcnktPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywK ICMgU3RhcnQgYmFja2dyb3VuZCB3YWl0ZXJzLiAgV2l0aCByZXBsYXkgcGF1c2VkLCB0YXJn ZXQgPiByZXBsYXksIHNvIHRoZXkKICMgd2lsbCBzbGVlcCBvbiBXYWl0TGF0Y2guICBUaGV5 IGNhbiBvbmx5IGJlIHdva2VuIGJ5IHRoZSByZXBsYXktbG9vcAogIyBXYWl0TFNOV2FrZXVw IGNhbGxzLgotbXkgJGFyY193cml0ZV9zZXNzaW9uID0gJGFyY19zdGFuZGJ5LT5iYWNrZ3Jv dW5kX3BzcWwoJ3Bvc3RncmVzJyk7Ci0kYXJjX3dyaXRlX3Nlc3Npb24tPnF1ZXJ5X3VudGls KAotCXFyL3N0YXJ0LywgcXFbCi0JXFxlY2hvIHN0YXJ0CitteSAkYXJjX3dyaXRlX3Nlc3Np b24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkYXJjX3N0YW5k YnkpOworJGFyY193cml0ZV9zZXNzaW9uLT5kb19hc3luYyhxcVsKIAlXQUlUIEZPUiBMU04g JyR7YXJjX3RhcmdldF9sc24yfScKIAkJV0lUSCAoTU9ERSAnc3RhbmRieV93cml0ZScsIHRp bWVvdXQgJzFkJywgbm9fdGhyb3cpOwogXSk7CiAKLW15ICRhcmNfZmx1c2hfc2Vzc2lvbiA9 ICRhcmNfc3RhbmRieS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotJGFyY19mbHVz aF9zZXNzaW9uLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydC8sIHFxWwotCVxcZWNobyBzdGFy dAorbXkgJGFyY19mbHVzaF9zZXNzaW9uID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+ bmV3KG5vZGUgPT4gJGFyY19zdGFuZGJ5KTsKKyRhcmNfZmx1c2hfc2Vzc2lvbi0+ZG9fYXN5 bmMocXFbCiAJV0FJVCBGT1IgTFNOICcke2FyY190YXJnZXRfbHNuMn0nCiAJCVdJVEggKE1P REUgJ3N0YW5kYnlfZmx1c2gnLCB0aW1lb3V0ICcxZCcsIG5vX3Rocm93KTsKIF0pOwpAQCAt ODg3LDE1ICs4NzksMTUgQEAgJGFyY19zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0 Z3JlcycsCiAjIFNUQU5EQllfRkxVU0ggd2FpdGVycyBhcyBpdCByZXBsYXlzIHBhc3QgYXJj X3RhcmdldF9sc24yLgogJGFyY19zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBwZ193YWxfcmVwbGF5X3Jlc3VtZSgpIik7CiAKLSRhcmNfd3JpdGVfc2Vzc2lvbi0+ cXVpdDsKLSRhcmNfZmx1c2hfc2Vzc2lvbi0+cXVpdDsKLWNob21wKCRhcmNfd3JpdGVfc2Vz c2lvbi0+e3N0ZG91dH0pOwotY2hvbXAoJGFyY19mbHVzaF9zZXNzaW9uLT57c3Rkb3V0fSk7 CitteSAkYXJjX3dyaXRlX291dCA9ICRhcmNfd3JpdGVfc2Vzc2lvbi0+Z2V0X2FzeW5jX3Jl c3VsdCgpOworbXkgJGFyY19mbHVzaF9vdXQgPSAkYXJjX2ZsdXNoX3Nlc3Npb24tPmdldF9h c3luY19yZXN1bHQoKTsKKyRhcmNfd3JpdGVfc2Vzc2lvbi0+Y2xvc2U7CiskYXJjX2ZsdXNo X3Nlc3Npb24tPmNsb3NlOwogCi1pcygkYXJjX3dyaXRlX3Nlc3Npb24tPntzdGRvdXR9LAor aXMoJGFyY193cml0ZV9vdXQtPntwc3Fsb3V0fSwKIAknc3VjY2VzcycsCiAJInN0YW5kYnlf d3JpdGUgd2FpdGVyIHdva2VuIGJ5IHJlcGxheSBvbiBhcmNoaXZlLW9ubHkgc3RhbmRieSIp OwotaXMoJGFyY19mbHVzaF9zZXNzaW9uLT57c3Rkb3V0fSwKK2lzKCRhcmNfZmx1c2hfb3V0 LT57cHNxbG91dH0sCiAJJ3N1Y2Nlc3MnLAogCSJzdGFuZGJ5X2ZsdXNoIHdhaXRlciB3b2tl biBieSByZXBsYXkgb24gYXJjaGl2ZS1vbmx5IHN0YW5kYnkiKTsKIApAQCAtMTAzNSwxMCAr MTAyNyw4IEBAIGNoZWNrX3dhaXRfZm9yX2xzbl9mZW5jZXBvc3QoJHJjdl9zdGFuZGJ5LCAn c3RhbmRieV9mbHVzaCcsICRmbHVzaF9sc24sCiAkcmN2X3ByaW1hcnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAogCSJJTlNFUlQgSU5UTyByY3ZfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3Nl cmllcygyMDAsIDIxMCkpIik7CiAKLW15ICRib3VuZGFyeV9zZXNzaW9uID0gJHJjdl9zdGFu ZGJ5LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7Ci0kYm91bmRhcnlfc2Vzc2lvbi0+ cXVlcnlfdW50aWwoCi0JcXIvc3RhcnQvLCBxcVsKLQlcXGVjaG8gc3RhcnQKK215ICRib3Vu ZGFyeV9zZXNzaW9uID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4g JHJjdl9zdGFuZGJ5KTsKKyRib3VuZGFyeV9zZXNzaW9uLT5kb19hc3luYyhxcVsKIAlXQUlU IEZPUiBMU04gJyR7cmVwbGF5X2xzbl9wbHVzfScKIAkJV0lUSCAoTU9ERSAnc3RhbmRieV9y ZXBsYXknLCB0aW1lb3V0ICcxZCcsIG5vX3Rocm93KTsKIF0pOwpAQCAtMTA0OSw5ICsxMDM5 LDkgQEAgJHJjdl9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAKICRy Y3Zfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfd2FsX3JlcGxh eV9yZXN1bWUoKSIpOwogcmVzdW1lX3dhbHJlY2VpdmVyKCRyY3Zfc3RhbmRieSk7Ci0kYm91 bmRhcnlfc2Vzc2lvbi0+cXVpdDsKLWNob21wKCRib3VuZGFyeV9zZXNzaW9uLT57c3Rkb3V0 fSk7Ci1pcygkYm91bmRhcnlfc2Vzc2lvbi0+e3N0ZG91dH0sCitteSAkYm91bmRhcnlfb3V0 ID0gJGJvdW5kYXJ5X3Nlc3Npb24tPmdldF9hc3luY19yZXN1bHQoKTsKKyRib3VuZGFyeV9z ZXNzaW9uLT5jbG9zZTsKK2lzKCRib3VuZGFyeV9vdXQtPntwc3Fsb3V0fSwKIAknc3VjY2Vz cycsCiAJInN0YW5kYnlfcmVwbGF5OiB3YWl0ZXIgYXQgY3VycmVudCArIDEgd2FrZXMgd2hl biByZXBsYXkgYWR2YW5jZXMiKTsKIApAQCAtMTEwMSwxMCArMTA5MSw4IEBAICR0bF9zdGFu ZGJ5Mi0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgcGdfZ2V0X3dh bF9yZXBsYXlfcGF1c2Vfc3RhdGUoKSA9ICdwYXVzZWQnIikKICAgb3IgZGllICJUaW1lZCBv dXQgd2FpdGluZyBmb3IgdGxfc3RhbmRieTIgcmVwbGF5IHRvIHBhdXNlIjsKIAotbXkgJHRs X3Nlc3Npb24gPSAkdGxfc3RhbmRieTItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsK LSR0bF9zZXNzaW9uLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydC8sIHFxWwotCVxcZWNobyBz dGFydAorbXkgJHRsX3Nlc3Npb24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXco bm9kZSA9PiAkdGxfc3RhbmRieTIpOworJHRsX3Nlc3Npb24tPmRvX2FzeW5jKHFxWwogCVdB SVQgRk9SIExTTiAnJHt0bF90YXJnZXR9JwogCQlXSVRIIChNT0RFICdzdGFuZGJ5X3JlcGxh eScsIHRpbWVvdXQgJzFkJywgbm9fdGhyb3cpOwogXSk7CkBAIC0xMTI2LDkgKzExMTQsOSBA QCAkdGxfc3RhbmRieTItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNU IHJlY2VpdmVkX3RsaSA+IDEgRlJPTSBwZ19zdGF0X3dhbF9yZWNlaXZlciIpCiAgIG9yIGRp ZSAidGxfc3RhbmRieTIgZGlkIG5vdCBmb2xsb3cgdXBzdHJlYW0gdGltZWxpbmUgc3dpdGNo IjsKIAotJHRsX3Nlc3Npb24tPnF1aXQ7Ci1jaG9tcCgkdGxfc2Vzc2lvbi0+e3N0ZG91dH0p OwotaXMoJHRsX3Nlc3Npb24tPntzdGRvdXR9LCAnc3VjY2VzcycsCitteSAkdGxfb3V0ID0g JHRsX3Nlc3Npb24tPmdldF9hc3luY19yZXN1bHQoKTsKKyR0bF9zZXNzaW9uLT5jbG9zZTsK K2lzKCR0bF9vdXQtPntwc3Fsb3V0fSwgJ3N1Y2Nlc3MnLAogCSJXQUlUIEZPUiBMU04gc3Vy dml2ZXMgdXBzdHJlYW0gcHJvbW90aW9uIGFuZCB0aW1lbGluZSBzd2l0Y2ggb24gY2FzY2Fk ZSBzdGFuZGJ5IgogKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTBf cmVkb19zZWdtZW50X21pc3NpbmcucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA1MF9yZWRv X3NlZ21lbnRfbWlzc2luZy5wbAppbmRleCBlMDdmZjBjNzJmZS4uYjQ5MmRiNDQ2ODQgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUwX3JlZG9fc2VnbWVudF9taXNzaW5n LnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUwX3JlZG9fc2VnbWVudF9taXNzaW5n LnBsCkBAIC03LDYgKzcsNyBAQAogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9 PiAnYWxsJzsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVT UUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2Ug VGVzdDo6TW9yZTsKIApAQCAtNDQsMTUgKzQ1LDExIEBAICRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAlxe3NlbGVjdCBpbmpl Y3Rpb25fcG9pbnRzX2F0dGFjaCgnY3JlYXRlLWNoZWNrcG9pbnQtcnVuJywgJ3dhaXQnKX0p OwogCi0jIFN0YXJ0IGEgcHNxbCBzZXNzaW9uIHRvIHJ1biB0aGUgY2hlY2twb2ludCBpbiB0 aGUgYmFja2dyb3VuZCBhbmQgbWFrZQorIyBTdGFydCBhIHNlc3Npb24gdG8gcnVuIHRoZSBj aGVja3BvaW50IGluIHRoZSBiYWNrZ3JvdW5kIGFuZCBtYWtlCiAjIHRoZSB0ZXN0IHdhaXQg b24gdGhlIGluamVjdGlvbiBwb2ludCBzbyB0aGUgY2hlY2twb2ludCBzdG9wcyBqdXN0IGFm dGVyCiAjIGl0IHN0YXJ0cy4KLW15ICRjaGVja3BvaW50ID0gJG5vZGUtPmJhY2tncm91bmRf cHNxbCgncG9zdGdyZXMnKTsKLSRjaGVja3BvaW50LT5xdWVyeV91bnRpbCgKLQlxci9zdGFy dGluZ19jaGVja3BvaW50LywKLQlxKFxlY2hvIHN0YXJ0aW5nX2NoZWNrcG9pbnQKLWNoZWNr cG9pbnQ7Ci0pKTsKK215ICRjaGVja3BvaW50ID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lv bi0+bmV3KG5vZGUgPT4gJG5vZGUpOworJGNoZWNrcG9pbnQtPmRvX2FzeW5jKHEoQ0hFQ0tQ T0lOVDspKTsKIAogIyBXYWl0IGZvciB0aGUgaW5pdGlhbCBwb2ludCB0byBmaW5pc2gsIHRo ZSBjaGVja3BvaW50ZXIgaXMgc3RpbGwKICMgb3V0c2lkZSBpdHMgY3JpdGljYWwgc2VjdGlv bi4gIFRoZW4gcmVsZWFzZSB0byByZWFjaCB0aGUgc2Vjb25kCkBAIC03Niw3ICs3Myw4IEBA ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAlxe3NlbGVjdCBpbmplY3Rpb25fcG9p bnRzX3dha2V1cCgnY3JlYXRlLWNoZWNrcG9pbnQtcnVuJyl9KTsKICRub2RlLT53YWl0X2Zv cl9sb2cocXIvY2hlY2twb2ludCBjb21wbGV0ZS8sICRsb2dfb2Zmc2V0KTsKIAotJGNoZWNr cG9pbnQtPnF1aXQ7CiskY2hlY2twb2ludC0+d2FpdF9mb3JfY29tcGxldGlvbjsKKyRjaGVj a3BvaW50LT5jbG9zZTsKIAogIyBSZXRyaWV2ZSB0aGUgV0FMIGZpbGUgbmFtZXMgZm9yIHRo ZSByZWRvIHJlY29yZCBhbmQgY2hlY2twb2ludCByZWNvcmQuCiBteSAkcmVkb19sc24gPSAk bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNv dmVyeS90LzA1MV9lZmZlY3RpdmVfd2FsX2xldmVsLnBsIGIvc3JjL3Rlc3QvcmVjb3Zlcnkv dC8wNTFfZWZmZWN0aXZlX3dhbF9sZXZlbC5wbAppbmRleCBjNDVlZGRjNzM4My4uMjBjMDBi ODlhMjMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUxX2VmZmVjdGl2ZV93 YWxfbGV2ZWwucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTFfZWZmZWN0aXZlX3dh bF9sZXZlbC5wbApAQCAtNiw2ICs2LDcgQEAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3Mg RkFUQUwgPT4gJ2FsbCc7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxz OwogdXNlIFRlc3Q6Ok1vcmU7CiAKQEAgLTM4MiwyMCArMzgzLDE1IEBAIGlmICggICAkRU5W e2VuYWJsZV9pbmplY3Rpb25fcG9pbnRzfSBlcSAneWVzJwogCXRlc3Rfd2FsX2xldmVsKCRw cmltYXJ5LCAicmVwbGljYXxyZXBsaWNhIiwKIAkJImVmZmVjdGl2ZV93YWxfbGV2ZWwgZ290 IGRlY3JlYXNlZCB0byAncmVwbGljYScgb24gcHJpbWFyeSIpOwogCi0JIyBTdGFydCBhIHBz cWwgc2Vzc2lvbiB0byB0ZXN0IHRoZSBjYXNlIHdoZXJlIHRoZSBhY3RpdmF0aW9uIHByb2Nl c3MgaXMKKwkjIFN0YXJ0IGEgc2Vzc2lvbiB0byB0ZXN0IHRoZSBjYXNlIHdoZXJlIHRoZSBh Y3RpdmF0aW9uIHByb2Nlc3MgaXMKIAkjIGludGVycnVwdGVkLgotCW15ICRwc3FsX2NyZWF0 ZV9zbG90ID0gJHByaW1hcnktPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKKwlteSAk cHNxbF9jcmVhdGVfc2xvdCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2Rl ID0+ICRwcmltYXJ5KTsKIAotCSMgU3RhcnQgdGhlIGxvZ2ljYWwgZGVjb2RpbmcgYWN0aXZh dGlvbiBwcm9jZXNzIHVwb24gY3JlYXRpbmcgdGhlIGxvZ2ljYWwKLQkjIHNsb3QsIGJ1dCBp dCB3aWxsIHdhaXQgZHVlIHRvIHRoZSBpbmplY3Rpb24gcG9pbnQuCi0JJHBzcWxfY3JlYXRl X3Nsb3QtPnF1ZXJ5X3VudGlsKAotCQlxci9jcmVhdGVfc2xvdF9jYW5jZWxlZC8sCi0JCXEo XGVjaG8gY3JlYXRlX3Nsb3RfY2FuY2VsZWQKLXNlbGVjdCBpbmplY3Rpb25fcG9pbnRzX3Nl dF9sb2NhbCgpOwotc2VsZWN0IGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdsb2dpY2FsLWRl Y29kaW5nLWFjdGl2YXRpb24nLCAnd2FpdCcpOwotc2VsZWN0IHBnX2NyZWF0ZV9sb2dpY2Fs X3JlcGxpY2F0aW9uX3Nsb3QoJ3Nsb3RfY2FuY2VsZWQnLCAncGdvdXRwdXQnKTsKLVxxCi0p KTsKKwkjIFNldCB1cCB0aGUgaW5qZWN0aW9uIHBvaW50IGluIHRoaXMgc2Vzc2lvbiAodXNp bmcgc2V0X2xvY2FsIHNvIGl0IG9ubHkKKwkjIGFmZmVjdHMgdGhpcyBzZXNzaW9uKSwgdGhl biBzdGFydCB0aGUgc2xvdCBjcmVhdGlvbiB3aGljaCB3aWxsIGJsb2NrLgorCSRwc3FsX2Ny ZWF0ZV9zbG90LT5kbyhxe3NlbGVjdCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpfSk7 CisJJHBzcWxfY3JlYXRlX3Nsb3QtPmRvKHF7c2VsZWN0IGluamVjdGlvbl9wb2ludHNfYXR0 YWNoKCdsb2dpY2FsLWRlY29kaW5nLWFjdGl2YXRpb24nLCAnd2FpdCcpfSk7CisJJHBzcWxf Y3JlYXRlX3Nsb3QtPmRvX2FzeW5jKHF7c2VsZWN0IHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxp Y2F0aW9uX3Nsb3QoJ3Nsb3RfY2FuY2VsZWQnLCAncGdvdXRwdXQnKX0pOwogCiAJJHByaW1h cnktPndhaXRfZm9yX2V2ZW50KCdjbGllbnQgYmFja2VuZCcsICdsb2dpY2FsLWRlY29kaW5n LWFjdGl2YXRpb24nKTsKIAlub3RlKCJpbmplY3Rpb25fcG9pbnQgJ2xvZ2ljYWwtZGVjb2Rp bmctYWN0aXZhdGlvbicgaXMgcmVhY2hlZCIpOwpAQCAtNDEzLDE5ICs0MDksMTcgQEAgc2Vs ZWN0IHBnX2NhbmNlbF9iYWNrZW5kKHBpZCkgZnJvbSBwZ19zdGF0X2FjdGl2aXR5IHdoZXJl IHF1ZXJ5IH4gJ3Nsb3RfY2FuY2VsZWQKIAl3YWl0X2Zvcl9sb2dpY2FsX2RlY29kaW5nX2Rp c2FibGVkKCRwcmltYXJ5KTsKIAlwYXNzKCJ0aGUgYWN0aXZhdGlvbiBwcm9jZXNzIGFib3J0 ZWQiKTsKIAorCSMgQ2xlYW4gdXAgdGhlIHNlc3Npb24gKHRoZSBhc3luYyBxdWVyeSB3YXMg Y2FuY2VsbGVkLCBzbyB3ZSBqdXN0IGNsb3NlKQorCSRwc3FsX2NyZWF0ZV9zbG90LT5jbG9z ZTsKKwogCSMgVGVzdCBjb25jdXJyZW50IGFjdGl2YXRpb24gcHJvY2Vzc2VzIHJ1biBhbmQg b25lIGlzIGludGVycnVwdGVkLgotCSRwc3FsX2NyZWF0ZV9zbG90ID0gJHByaW1hcnktPmJh Y2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKKwkkcHNxbF9jcmVhdGVfc2xvdCA9IFBvc3Rn cmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRwcmltYXJ5KTsKKworCSMgU3Rh cnQgYSBzZXNzaW9uIGFuZCBzdG9wIGluIHRoZSBtaWRkbGUgb2YgdGhlIGFjdGl2YXRpb24g cHJvY2Vzcy4KKwkkcHNxbF9jcmVhdGVfc2xvdC0+ZG8ocXtzZWxlY3QgaW5qZWN0aW9uX3Bv aW50c19zZXRfbG9jYWwoKX0pOworCSRwc3FsX2NyZWF0ZV9zbG90LT5kbyhxe3NlbGVjdCBp bmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnbG9naWNhbC1kZWNvZGluZy1hY3RpdmF0aW9uJywg J3dhaXQnKX0pOworCSRwc3FsX2NyZWF0ZV9zbG90LT5kb19hc3luYyhxe3NlbGVjdCBwZ19j cmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KCdzbG90X2NhbmNlbGVkMicsICdwZ291 dHB1dCcpfSk7CiAKLQkjIFN0YXJ0IGEgcHNxbCBzZXNzaW9uIGFuZCBzdG9wcyBpbiB0aGUg bWlkZGxlIG9mIHRoZSBhY3RpdmF0aW9uCi0JIyBwcm9jZXNzLgotCSRwc3FsX2NyZWF0ZV9z bG90LT5xdWVyeV91bnRpbCgKLQkJcXIvY3JlYXRlX3Nsb3RfY2FuY2VsZWQvLAotCQlxKFxl Y2hvIGNyZWF0ZV9zbG90X2NhbmNlbGVkCi1zZWxlY3QgaW5qZWN0aW9uX3BvaW50c19zZXRf bG9jYWwoKTsKLXNlbGVjdCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnbG9naWNhbC1kZWNv ZGluZy1hY3RpdmF0aW9uJywgJ3dhaXQnKTsKLXNlbGVjdCBwZ19jcmVhdGVfbG9naWNhbF9y ZXBsaWNhdGlvbl9zbG90KCdzbG90X2NhbmNlbGVkMicsICdwZ291dHB1dCcpOwotXHEKLSkp OwogCSRwcmltYXJ5LT53YWl0X2Zvcl9ldmVudCgnY2xpZW50IGJhY2tlbmQnLCAnbG9naWNh bC1kZWNvZGluZy1hY3RpdmF0aW9uJyk7CiAJbm90ZSgiaW5qZWN0aW9uX3BvaW50ICdsb2dp Y2FsLWRlY29kaW5nLWFjdGl2YXRpb24nIGlzIHJlYWNoZWQiKTsKIApAQCAtNDUzLDYgKzQ0 Nyw5IEBAIHNlbGVjdCBwZ19jYW5jZWxfYmFja2VuZChwaWQpIGZyb20gcGdfc3RhdF9hY3Rp dml0eSB3aGVyZSBxdWVyeSB+ICdzbG90X2NhbmNlbGVkCiAJdGVzdF93YWxfbGV2ZWwoJHBy aW1hcnksICJyZXBsaWNhfGxvZ2ljYWwiLAogCQkiZWZmZWN0aXZlX3dhbF9sZXZlbCByZW1h aW5zICdsb2dpY2FsJyBldmVuIGFmdGVyIHRoZSBjb25jdXJyZW50IGFjdGl2YXRpb24gaXMg aW50ZXJydXB0ZWQiCiAJKTsKKworCSMgQ2xlYW4gdXAgdGhlIHNlc3Npb24gKHRoZSBhc3lu YyBxdWVyeSB3YXMgY2FuY2VsbGVkLCBzbyB3ZSBqdXN0IGNsb3NlKQorCSRwc3FsX2NyZWF0 ZV9zbG90LT5jbG9zZTsKIH0KIAogJHByaW1hcnktPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE1X3N0cmVhbS5wbAppbmRleCBhYzk2YmMzZjAwOS4uNDE3NjVmYWVhMzQgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKKysrIGIv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbApAQCAtNSw2ICs1LDcgQEAK IHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiB1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwog dXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKQEAgLTMw LDE4ICszMSwxNyBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkjIEludGVybGVhdmUgYSBwYWly IG9mIHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0a0IgbGltaXQuCiAJbXkg JG9mZnNldCA9IDA7CiAKLQlteSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9w c3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CisJbXkgJGggPSBQb3N0Z3Jl U1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZT0+JG5vZGVfcHVibGlzaGVyKTsKIAogCSMg Q2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgogCSRvZmZzZXQgPSAtcyAk bm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwogCi0JJGgtPnF1ZXJ5X3NhZmUoCi0JCXF7Ci0J QkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIHNoYTI1NihpOjp0ZXh0 OjpieXRlYSkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUg dGVzdF90YWIgU0VUIGIgPSBzaGEyNTYoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQl9KTsKKwkkaC0+ZG8oCisJ CSdCRUdJTicsCisJCSdJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgc2hhMjU2KGk6 OnRleHQ6OmJ5dGVhKSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpJywKKwkJ J1VQREFURSB0ZXN0X3RhYiBTRVQgYiA9IHNoYTI1NihiKSBXSEVSRSBtb2QoYSwyKSA9IDAn LAorCQknREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwJywKKwkpOwog CiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJCSdwb3N0Z3JlcycsIHF7CkBAIC01 MSw5ICs1MSw5IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCUNPTU1JVDsKIAl9KTsKIAotCSRo LT5xdWVyeV9zYWZlKCdDT01NSVQnKTsKKwkkaC0+ZG8oJ0NPTU1JVCcpOwogCSMgZXJyb3Jz IG1ha2UgdGhlIG5leHQgdGVzdCBmYWlsLCBzbyBpZ25vcmUgdGhlbSBoZXJlCi0JJGgtPnF1 aXQ7CisJJGgtPmNsb3NlOwogCiAJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKIApAQCAtMjExLDE0ICsyMTEsMTQgQEAgJG5vZGVfc3Vic2NyaWJlci0+ cmVsb2FkOwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7U0VM RUNUIDF9KTsKIAogIyBJbnRlcmxlYXZlIGEgcGFpciBvZiB0cmFuc2FjdGlvbnMsIGVhY2gg ZXhjZWVkaW5nIHRoZSA2NGtCIGxpbWl0LgotbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJh Y2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOworbXkgJGgg PSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZV9wdWJsaXNo ZXIpOwogCiAjIENvbmZpcm0gaWYgYSBkZWFkbG9jayBiZXR3ZWVuIHRoZSBsZWFkZXIgYXBw bHkgd29ya2VyIGFuZCB0aGUgcGFyYWxsZWwgYXBwbHkKICMgd29ya2VyIGNhbiBiZSBkZXRl Y3RlZC4KIAogbXkgJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CiAK LSRoLT5xdWVyeV9zYWZlKAorJGgtPmRvKAogCXF7CiBCRUdJTjsKIElOU0VSVCBJTlRPIHRl c3RfdGFiXzIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsK QEAgLTIzMiw4ICsyMzIsOCBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAK ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0 ZXN0X3RhYl8yIHZhbHVlcygxKSIpOwogCi0kaC0+cXVlcnlfc2FmZSgnQ09NTUlUJyk7Ci0k aC0+cXVpdDsKKyRoLT5kbygnQ09NTUlUJyk7CiskaC0+Y2xvc2U7CiAKICRub2RlX3N1YnNj cmliZXItPndhaXRfZm9yX2xvZyhxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gZGVhZGxvY2sg ZGV0ZWN0ZWQvLAogCSRvZmZzZXQpOwpAQCAtMjYwLDcgKzI2MCw4IEBAICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogIyBDaGVjayB0aGUgc3Vic2NyaWJlciBs b2cgZnJvbSBub3cgb24uCiAkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmls ZTsKIAotJGgtPnF1ZXJ5X3NhZmUoCiskaC0+cmVjb25uZWN0OworJGgtPmRvKAogCXF7CiBC RUdJTjsKIElOU0VSVCBJTlRPIHRlc3RfdGFiXzIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgNTAwMCkgcyhpKTsKQEAgLTI3NSw4ICsyNzYsOCBAQCAkbm9kZV9zdWJzY3Jp YmVyLT53YWl0X2Zvcl9sb2coCiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAogCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYl8yIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDUwMDApIHMoaSkiKTsKIAotJGgtPnF1ZXJ5X3NhZmUoJ0NPTU1JVCcpOwot JGgtPnF1aXQ7CiskaC0+ZG8oJ0NPTU1JVCcpOworJGgtPmNsb3NlOwogCiAkbm9kZV9zdWJz Y3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGRlYWRsb2Nr IGRldGVjdGVkLywKIAkkb2Zmc2V0KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAzNV9jb25mbGljdHMucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzVf Y29uZmxpY3RzLnBsCmluZGV4IGYyM2ZlNmFmMmE1Li44MDU4YmVlYjY4MCAxMDA2NDQKLS0t IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM1X2NvbmZsaWN0cy5wbAorKysgYi9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMzVfY29uZmxpY3RzLnBsCkBAIC00LDYgKzQsNyBAQAog dXNlIHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIHVzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1 c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIApAQCAtNDU1 LDE3ICs0NTYsMTQgQEAgaWYgKCRpbmplY3Rpb25fcG9pbnRzX3N1cHBvcnRlZCAhPSAwKQog CiAJIyBTdGFydCBhIGJhY2tncm91bmQgc2Vzc2lvbiBvbiB0aGUgcHVibGlzaGVyIG5vZGUg dG8gcGVyZm9ybSBhbiB1cGRhdGUgYW5kCiAJIyBwYXVzZSBhdCB0aGUgaW5qZWN0aW9uIHBv aW50LgotCW15ICRwdWJfc2Vzc2lvbiA9ICRub2RlX0ItPmJhY2tncm91bmRfcHNxbCgncG9z dGdyZXMnKTsKLQkkcHViX3Nlc3Npb24tPnF1ZXJ5X3VudGlsKAotCQlxci9zdGFydGluZ19i Z19wc3FsLywKLQkJcXsKLQkJCVxlY2hvIHN0YXJ0aW5nX2JnX3BzcWwKLQkJCUJFR0lOOwot CQkJVVBEQVRFIHRhYiBTRVQgYiA9IDIgV0hFUkUgYSA9IDE7Ci0JCQlQUkVQQVJFIFRSQU5T QUNUSU9OICd0eG5fd2l0aF9sYXRlcl9jb21taXRfdHMnOwotCQkJQ09NTUlUIFBSRVBBUkVE ICd0eG5fd2l0aF9sYXRlcl9jb21taXRfdHMnOwotCQl9CisJbXkgJHB1Yl9zZXNzaW9uID0g UG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGVfQik7CisJJHB1 Yl9zZXNzaW9uLT5kbygKKwkJcXtCRUdJTn0sCisJCXF7VVBEQVRFIHRhYiBTRVQgYiA9IDIg V0hFUkUgYSA9IDF9LAorCQlxe1BSRVBBUkUgVFJBTlNBQ1RJT04gJ3R4bl93aXRoX2xhdGVy X2NvbW1pdF90cyd9CiAJKTsKKwkjIENPTU1JVCBQUkVQQVJFRCB3aWxsIGJsb2NrIG9uIHRo ZSBpbmplY3Rpb24gcG9pbnQKKwkkcHViX3Nlc3Npb24tPmRvX2FzeW5jKHF7Q09NTUlUIFBS RVBBUkVEICd0eG5fd2l0aF9sYXRlcl9jb21taXRfdHMnfSk7CiAKIAkjIFdhaXQgdW50aWwg dGhlIGJhY2tlbmQgZW50ZXJzIHRoZSBpbmplY3Rpb24gcG9pbnQKIAkkbm9kZV9CLT53YWl0 X2Zvcl9ldmVudCgnY2xpZW50IGJhY2tlbmQnLApAQCAtNTE2LDggKzUxNCw5IEBAIGlmICgk aW5qZWN0aW9uX3BvaW50c19zdXBwb3J0ZWQgIT0gMCkKIAkJIFNFTEVDVCBpbmplY3Rpb25f cG9pbnRzX2RldGFjaCgnY29tbWl0LWFmdGVyLWRlbGF5LWNoZWNrcG9pbnQnKTsiCiAJKTsK IAotCSMgQ2xvc2UgdGhlIGJhY2tncm91bmQgc2Vzc2lvbiBvbiB0aGUgcHVibGlzaGVyIG5v ZGUKLQlvaygkcHViX3Nlc3Npb24tPnF1aXQsICJjbG9zZSBwdWJsaXNoZXIgc2Vzc2lvbiIp OworCSMgV2FpdCBmb3IgdGhlIGFzeW5jIHF1ZXJ5IHRvIGNvbXBsZXRlIGFuZCBjbG9zZSB0 aGUgYmFja2dyb3VuZCBzZXNzaW9uCisJJHB1Yl9zZXNzaW9uLT53YWl0X2Zvcl9jb21wbGV0 aW9uOworCSRwdWJfc2Vzc2lvbi0+Y2xvc2U7CiAKIAkjIENvbmZpcm0gdGhhdCB0aGUgdHJh bnNhY3Rpb24gY29tbWl0dGVkCiAJJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAnU0VMRUNUICogRlJPTSB0YWIgV0hFUkUgYSA9IDEnKTsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzOF93YWxzbmRfc2h1dGRvd25fdGltZW91dC5w bCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzOF93YWxzbmRfc2h1dGRvd25fdGltZW91 dC5wbAppbmRleCBmNGVkNWQ5Nzg1Mi4uNDhjYWY4ZTNkYTQgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAzOF93YWxzbmRfc2h1dGRvd25fdGltZW91dC5wbAorKysg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzhfd2Fsc25kX3NodXRkb3duX3RpbWVvdXQu cGwKQEAgLTgsNiArOCw3IEBAIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4g J2FsbCc7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FM OjpUZXN0OjpVdGlsczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFRl c3Q6Ok1vcmU7CiB1c2UgVGltZTo6SGlSZXMgcXcodXNsZWVwKTsKIApAQCAtNDUsNyArNDYs NyBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9k ZV9wdWJsaXNoZXIsICd0ZXN0X3N1YicpOwogCiAjIFN0YXJ0IGEgYmFja2dyb3VuZCBzZXNz aW9uIG9uIHRoZSBzdWJzY3JpYmVyIHRvIHJ1biBhIHRyYW5zYWN0aW9uIGxhdGVyCiAjIHRo YXQgd2lsbCBibG9jayB0aGUgbG9naWNhbCBhcHBseSB3b3JrZXIgb24gYSBsb2NrLgotbXkg JHN1Yl9zZXNzaW9uID0gJG5vZGVfc3Vic2NyaWJlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0 Z3JlcycpOworbXkgJHN1Yl9zZXNzaW9uID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+ bmV3KG5vZGUgPT4gJG5vZGVfc3Vic2NyaWJlcik7CiAKICMgVGVzdCB0aGF0IHdoZW4gdGhl IGxvZ2ljYWwgYXBwbHkgd29ya2VyIGlzIGJsb2NrZWQgb24gYSBsb2NrIGFuZCByZXBsaWNh dGlvbgogIyBpcyBzdGFsbGVkLCBzaHV0dGluZyBkb3duIHRoZSBwdWJsaXNoZXIgY2F1c2Vz IHRoZSBsb2dpY2FsIHdhbHNlbmRlciB0byBleGl0CkBAIC01Myw3ICs1NCw3IEBAIG15ICRz dWJfc2Vzc2lvbiA9ICRub2RlX3N1YnNjcmliZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdy ZXMnKTsKIAogIyBDYXVzZSB0aGUgbG9naWNhbCBhcHBseSB3b3JrZXIgdG8gYmxvY2sgb24g YSBsb2NrIGJ5IHJ1bm5pbmcgY29uZmxpY3RpbmcKICMgdHJhbnNhY3Rpb25zIG9uIHRoZSBw dWJsaXNoZXIgYW5kIHN1YnNjcmliZXIuCi0kc3ViX3Nlc3Npb24tPnF1ZXJ5X3NhZmUoIkJF R0lOOyBJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDApOyIpOworJHN1Yl9zZXNzaW9u LT5kbygiQkVHSU47IElOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMCk7Iik7CiAkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90 YWIgVkFMVUVTICgwKTsiKTsKIAogbXkgJGxvZ19vZmZzZXQgPSAtcyAkbm9kZV9wdWJsaXNo ZXItPmxvZ2ZpbGU7CkBAIC02NSw3ICs2Niw3IEBAIG9rKCAkbm9kZV9wdWJsaXNoZXItPmxv Z19jb250YWlucygKIAkJJGxvZ19vZmZzZXQpLAogCSJ3YWxzZW5kZXIgZXhpdHMgZHVlIHRv IHdhbF9zZW5kZXJfc2h1dGRvd25fdGltZW91dCIpOwogCi0kc3ViX3Nlc3Npb24tPnF1ZXJ5 X3NhZmUoIkFCT1JUOyIpOworJHN1Yl9zZXNzaW9uLT5kbygiQUJPUlQ7Iik7CiAkbm9kZV9w dWJsaXNoZXItPnN0YXJ0OwogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0 ZXN0X3N1YicpOwogCkBAIC03OSw3ICs4MCw3IEBAICRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgndGVzdF9zdWInKTsKIAogIyBSdW4gYSB0cmFuc2FjdGlvbiBvbiB0aGUg c3Vic2NyaWJlciB0aGF0IGJsb2NrcyB0aGUgbG9naWNhbCBhcHBseSB3b3JrZXIKICMgb24g YSBsb2NrLgotJHN1Yl9zZXNzaW9uLT5xdWVyeV9zYWZlKCJCRUdJTjsgTE9DSyBUQUJMRSB0 ZXN0X3RhYiBJTiBFWENMVVNJVkUgTU9ERTsiKTsKKyRzdWJfc2Vzc2lvbi0+ZG8oIkJFR0lO OyBMT0NLIFRBQkxFIHRlc3RfdGFiIElOIEVYQ0xVU0lWRSBNT0RFOyIpOwogCiAjIEdlbmVy YXRlIGVub3VnaCBkYXRhIHRvIGZpbGwgdGhlIGxvZ2ljYWwgd2Fsc2VuZGVyJ3Mgb3V0cHV0 IGJ1ZmZlci4KICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCkBAIC0x MTcsNyArMTE4LDcgQEAgb2soICRub2RlX3B1Ymxpc2hlci0+bG9nX2NvbnRhaW5zKAogCSJ3 YWxzZW5kZXIgd2l0aCBmdWxsIG91dHB1dCBidWZmZXIgZXhpdHMgZHVlIHRvIHdhbF9zZW5k ZXJfc2h1dGRvd25fdGltZW91dCIKICk7CiAKLSRzdWJfc2Vzc2lvbi0+cXVlcnlfc2FmZSgi QUJPUlQ7Iik7Ciskc3ViX3Nlc3Npb24tPmRvKCJBQk9SVDsiKTsKIAogIyBUaGUgbmV4dCB0 ZXN0IGRlcGVuZHMgb24gUGVybCdzIGBraWxsYCwgd2hpY2ggYXBwYXJlbnRseSBpcyBub3QK ICMgcG9ydGFibGUgdG8gV2luZG93cy4gIChJdCB3b3VsZCBiZSBuaWNlIHRvIHVzZSBUZXN0 OjpNb3JlJ3MgYHN1YnRlc3RgLApAQCAtMTY3LDcgKzE2OCw3IEBAICRub2RlX3N0YW5kYnkt PnN0YXJ0OwogIyBDYXVzZSB0aGUgbG9naWNhbCBhcHBseSB3b3JrZXIgdG8gYmxvY2sgb24g YSBsb2NrIGJ5IHJ1bm5pbmcgY29uZmxpY3RpbmcKICMgdHJhbnNhY3Rpb25zIG9uIHRoZSBw dWJsaXNoZXIgYW5kIHN1YnNjcmliZXIsIHN0YWxsaW5nIGxvZ2ljYWwgcmVwbGljYXRpb24u CiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3Rlc3Rfc3ViJyk7Ci0kc3Vi X3Nlc3Npb24tPnF1ZXJ5X3NhZmUoIkJFR0lOOyBMT0NLIFRBQkxFIHRlc3RfdGFiIElOIEVY Q0xVU0lWRSBNT0RFOyIpOworJHN1Yl9zZXNzaW9uLT5kbygiQkVHSU47IExPQ0sgVEFCTEUg dGVzdF90YWIgSU4gRVhDTFVTSVZFIE1PREU7Iik7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgtMSk7ICIp OwogCiAjIENhdXNlIHRoZSBzdGFuZGJ5J3Mgd2FscmVjZWl2ZXIgdG8gYmUgYmxvY2tlZCB3 aXRoIFNJR1NUT1Agc2lnbmFsLApAQCAtMTkzLDcgKzE5NCw3IEBAIG9rKCAkbm9kZV9wdWJs aXNoZXItPmxvZ19jb250YWlucygKICk7CiAKIGtpbGwgJ0NPTlQnLCAkcmVjZWl2ZXJwaWQ7 Ci0kc3ViX3Nlc3Npb24tPnF1aXQ7Ciskc3ViX3Nlc3Npb24tPmNsb3NlOwogCiAkbm9kZV9z dWJzY3JpYmVyLT5zdG9wKCdmYXN0Jyk7CiAkbm9kZV9zdGFuZGJ5LT5zdG9wKCdmYXN0Jyk7 Ci0tIAoyLjQzLjAKCg== --------------qPe8Eb3h7kDV46foKbqhjv9u--