Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1gHWVV-00019o-QE for pgsql-hackers@arkaria.postgresql.org; Tue, 30 Oct 2018 16:04:42 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1gHWVU-0001Ox-9W for pgsql-hackers@arkaria.postgresql.org; Tue, 30 Oct 2018 16:04:40 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1gHWVT-0001Od-Rv for pgsql-hackers@lists.postgresql.org; Tue, 30 Oct 2018 16:04:40 +0000 Received: from out3-smtp.messagingengine.com ([66.111.4.27]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1gHWVO-00035l-Rk for pgsql-hackers@postgresql.org; Tue, 30 Oct 2018 16:04:39 +0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id B3AA8208A4; Tue, 30 Oct 2018 12:04:33 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute7.internal (MEProxy); Tue, 30 Oct 2018 12:04:33 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=AkAt5w WvgBo34+tkYvXm1MzPcnYVPfAr+IjmfGcM7ko=; b=RWxriRtos3r3pCW2vzvK4z dHf188DNEmB5d3VAMpX8MT9YZPvzhgPG0NKCWUIxvYf814JG7apDHGrjyVHCYVzO Wt62MBikEggAm21Rtv1ljEuzDqPipNx9TAQej55d5jId4V58ctlxE7A7Cuxwb+Jp /vtI6IkU2XdlvhB9LSAzw4ImWw5jvCwJWM2/JWLvYIuhgwL7AS1LyRnwvls0QMhd +4zhvLtbrU6u3nhlFYseTU2s1jnn6N+hlaSghbR3MFSfIuLjjCbs9Y/PQEUdLz6p V87A2Unov2JYde/6mSchAB+V9aZhZ8f1uewW+Wo/2kDW06qUXkZOFNgnrwSxEZtQ == X-ME-Sender: X-ME-Proxy: Received: from april.pezone.net (p5df295f3.dip0.t-ipconnect.de [93.242.149.243]) by mail.messagingengine.com (Postfix) with ESMTPA id CEEEDE4899; Tue, 30 Oct 2018 12:04:30 -0400 (EDT) Subject: Re: [HACKERS] generated columns To: Sergei Kornilov , Erik Rijkers References: <1bc948f8-3bab-6c54-50af-c0723a75b85f@2ndquadrant.com> <20180116063546.GA3679@paquier.xyz> <48502d9b-60c4-5b10-40a2-e34f562132b4@2ndquadrant.com> <20180119051804.GC12826@paquier.xyz> <2e3d5147-16f8-af0f-00ab-4c72cafc896f@2ndquadrant.com> <20180131131804.GB1586@paquier.xyz> <20180202022532.GA84623@paquier.xyz> <050e663d-d915-f61b-af96-5a09c10ade02@2ndquadrant.com> <79e4de23-52e3-2c45-9ba0-5f6932f590aa@2ndquadrant.com> <50c7c87f285dfcade272731d4399a6a3@xs4all.nl> <24312231540910385@sas1-b3ec53dbc12b.qloud-c.yandex.net> Cc: pgsql-hackers , Michael Paquier , Jaime Casanova From: Peter Eisentraut Openpgp: preference=signencrypt Autocrypt: addr=peter.eisentraut@2ndquadrant.com; prefer-encrypt=mutual; keydata= xsFNBFUUt6kBEADZd9NNTBJbHmAXXJgPGOdd6Q73l80oifIVgn2tRxP9dYkCfTlo/yLqbKTl JNqTcyM6XrJDnB2sMEUGYCewYZXl+9C4bBJWyNqcEI1ae9u71vEq/fknFLArJ+2wN+f7QuRx Q8d94ZJAiJQ5g3fNk2HVeedCQCKP5dCzU+ZLt2dbsx1PDZLjTO9gf+JswWuGFb5wY5PZVM5V hq66Xk7ZJzHuARacza2RT7J2fkMmQBY+kr7L98Perb0GhafnlhXB0PvUB+N3xpmggMfwuhTu BngS/G/r3GvemxJuFxouw8xsMqrsfdksJXA2gLXYtwRCssdPV3PO0rlD9twqDo8URfIJ5fb6 1g/MV8aTOKjg3Q8MpJPtkwJqN4o3PvbwYdedeFnOVkkYAJdu/aX1v1BeCBDu7Hy3sF52scD3 pQbyQSl9vUDpTLarASAxNbAV0NRJE8dp4vfW6AH1ccryGiFqw/czPK/iN0+MT8wsjAW6WW4w hvjm5UPA1KTwi3ZT8eT5uycuH7QpuNk7LnGGXQ6KaRALFywzkr0A0V0AvFNa+l4wstMaXaB6 dmMXyF0/hfryqyOeu1gAdq4q0/PNC2dPgb/6uoh4eMjN6A5GXcprilhz5DulmsilY21hfSoU S64ODed96pKhprsOxjZiDRsN1QM5MwB+uwVWUNfsX7fIxE0BrwARAQABzSdQZXRlciBFaXNl bnRyYXV0IDxwZXRlckBlaXNlbnRyYXV0Lm9yZz7CwXoEEwEIACQCGwMFCwkIBwMFFQoJCAsF FgIDAQACHgECF4AFAlUUuKQCGQEACgkQoZ8SQ+xBJp8llw//RbGoXnF72FZTlOFsnNyxnWbF vViPCfdAlZl1GGK9OYCvV1dp/956HuhB0wpaGQHiBmQfOPJf/jLOPjXFYm2iEChEycrBChuE j4TSYemMp5BSPILYk9Uwd16kVD/+U6fQfK6H5pOhfBvbM6asMnmpY2wQuvktxHvaGlytFw84 EzFWNZtAZfxkw28w3AhIQkKe9hJanfyDL750RcbyEr8AAHty5IErrvS7tM5vQwIeh5BF26ND CyKPRdZgOgMpcwFfROKBDpAt052CgWIpNdhBdfIKlkCs4/ILxmC3rT/Mb/qZiHcoMMwEu6k+ T7vRAFZZAk62Yrr/U8/vUGKlzRZQoo86fyojCfI0ibCIc0z8rwCVY9P40G9wD9BTCZS/z8Vh jjpBlNnIKw2hM6hbxavKndCJjFFJD08rXrTyrLF/of18xD37vNdYooP9VATB5QjOWFRrscSZ 4a89e+to3m7YVnd4xdXwGp47dYusoax84C8tg1gZrH38ol9dPmnKX6GZrXeS7tH9k8VeUpJ8 HQbRThQRWAT936QpYbLConBmOtmbLmjQOGtiXPo1oK57X/7U/WBja5vWmm2q+Yxtt+3uHGVg DdDU4CJpXo4lX0v2n3QV5EBSW9hjdF3bNfl6GFBb1pPEhqNcMDUc7zkx/2uENdAdk/BnqMgH umip7b0pVfvOwU0EVRS3qQEQAJf6p0P7D+hMYUgCPkvgrcz6OJYsAYdUMUmokfqmkKwK0oJM ew8TNGM53ocKAgQGma5f10rwbZNPlpVPNRX5hwUmwVlcwSut0oE+JfUBH7mpysWvpF05RKIy q9RCoJZrAbXS7Tig56A1QD8IcM00rERZMcCOlI1+q9m4u9AOI+0LyGGSH+VvoyDHD/Jew4R2 TmPEF8Pu7lYiNYK88Q6u0kBkc+Tz3BNlyc6fi3HxnFfp0b75HLXPSTu2SwA/0Q31wHZXwrEU BR9KgSn/qbgy8ydPc97i82fhiFE3cbGexfPrQSMYmDGi+dcQ0s+AMQwC3XyMC0JkHpYUuFkR QdlIvaIhgFUUN2Vr4xF2ADaNTNFc4DYaiPHFAgHZw+3pZWqS4uIiWgJynrEaHw4F3QWU8/JB iyEWDhNq4WBrRA0u914TCCAoFOOKMnRdl8eJrRQKM/5/lXbHFjjlI/LDKhLRFsuQsnJJ3331 RjCzpHPZG5/p5KR1RHiAXa0p/DW5lXyq21hS3kjDlleoHqOxCN/cy0Jgz7qLDq1vZoCl67Sy RAH60c2Xu4may9SVltmot0OzWVHdrfS+85FQGp9580DaeLio7YMFKy2bfEvwQJ/c9xD2QPB+ oSb3V8ueSznXBG5+dyfOsZFRPxceA0wA2rSWZSjxLdKxvyGTj9vsCjaDu13rABEBAAHCwV8E GAEIAAkFAlUUt6kCGwwACgkQoZ8SQ+xBJp+HJhAAxmSTsC5y7p9Zu+nnLpucv/h88oEx985e qWeXzQiwM3pfRZS+PdTH9TyzHK0KOgKoAiubk0vt+BrT91D9d0G5kVQaTctAErGBoMkTaZJT XVEcNphiPzysdSqvprjojMp1y7rG8AP+Xd6m0rE1LRnkRRm8HyI8vdXsuLQPITGWXDLMjaNq AOV3BUnzkgtjMuIYw7SCr+12ZOb5dEKvaG4kjC4kaJ/TLbuBhVANcXkC90yp0AOZLs/cB1Dj OAXno/RUUruJ3r27a+pFv768UAi9QWcdw58yPxreMNMLqAgsS9oTHwHfGNWcB2dJ4UW+GMLJ hTf9TjQ2f+N/sIx5XMQ9pYw6CAJMK29qPx6/ZayrPxf22EXf0D3zTwIEZgwfSkynFVwV25L7 awQq60fifdMYheSxq7GbhpsixmcD+e161cCmLIt75YDt5bQ0B1yf7EmxG8n7pGZAOM6LoNsU fkSldba5XVwh8LuN5mK0nQBELGW6Os4TDq4REggLpfcvFC215zpuo0iCGnmE/Bns4nowqUSP u4tkWL+nxW4qgv8wo8HJ52jd79EJ8iqfIBoidBfy9AIUiEUApGQzWPu6yWcI8fY0rN5D+tc+ Yw1Zt6Mm+huYJpgCRsTcfzEcahnBn521CWcWvhW1ff3KFileFMtNmnBBhMncmRKHphtTKEpN 3jI= Organization: 2ndQuadrant Message-ID: Date: Tue, 30 Oct 2018 17:04:29 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <24312231540910385@sas1-b3ec53dbc12b.qloud-c.yandex.net> Content-Type: multipart/mixed; boundary="------------4EDEB29BEDC94A7A5102E36E" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------4EDEB29BEDC94A7A5102E36E Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit On 30/10/2018 15:39, Sergei Kornilov wrote: >> patch --dry-run --ignore-whitespace -p 0 -F 5 < >> v5-0001-Generated-columns.patch >> >> and varied both -p and -F paramaters to no avail. Am I doing it wrong? > I am able apply patch by command > patch -p1 < v5-0001-Generated-columns.patch > or by "git apply v5-0001-Generated-columns.patch", but only till commit d5eec4eefde70414c9929b32c411cb4f0900a2a9 (Add pg_partition_tree to display information about partitions) > > Unfortunately patch does not applied to current HEAD. Cfbot noticed this too: http://cfbot.cputube.org/patch_20_1443.log Here's another one. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------4EDEB29BEDC94A7A5102E36E Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v6-0001-Generated-columns.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v6-0001-Generated-columns.patch" RnJvbSBlMjUwN2Q5NDZkYTZlZDk5MTUwMzBkYWJmM2JlYzkyODE3OTQyZTMzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlcl9lQGdteC5u ZXQ+CkRhdGU6IFR1ZSwgMzAgT2N0IDIwMTggMTY6NTk6NDkgKzAxMDAKU3ViamVjdDogW1BB VENIIHY2XSBHZW5lcmF0ZWQgY29sdW1ucwoKVGhpcyBpcyBhbiBTUUwtc3RhbmRhcmQgZmVh dHVyZSB0aGF0IGFsbG93cyBjcmVhdGluZyBjb2x1bW5zIHRoYXQgYXJlCmNvbXB1dGVkIGZy b20gZXhwcmVzc2lvbnMgcmF0aGVyIHRoYW4gYXNzaWduZWQsIHNpbWlsYXIgdG8gYSB2aWV3 IG9yCm1hdGVyaWFsaXplZCB2aWV3IGJ1dCBvbiBhIGNvbHVtbiBiYXNpcy4KClRoaXMgaW1w bGVtZW50cyB0d28ga2luZHMgb2YgZ2VuZXJhdGVkIGNvbHVtbnM6IHZpcnR1YWwgKGNvbXB1 dGVkIG9uCnJlYWQpIGFuZCBzdG9yZWQgKGNvbXB1dGVkIG9uIHdyaXRlKS4KLS0tCiBkb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgMTkgKy0KIGRv Yy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dtbCAgICAgICAgICB8ICA2NiArLQog ZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwgICAgICAgICAgICAgICAgICAgIHwgICAzICst CiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sICAgICAgICAgICAgfCAgNDkg Ky0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vdHVwZGVzYy5jICAgICAgICAgICB8ICAx OSArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMgICAgICAgICAgICAgICAgICAgIHwg IDgwICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwgICAg fCAgMzAgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyAgICAgICAgICAgICAgICAg ICB8ICAzOCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICAg ICAgIHwgIDI3ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAg ICAgICAgfCAyMTkgKysrKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgICAg ICAgICAgICAgICAgfCAgMzcgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYyAg ICAgICAgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5j ICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2Rp ZnlUYWJsZS5jICAgICAgICB8ICA5OSArKysKIHNyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5j cy5jICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1 bmNzLmMgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVu Y3MuYyAgICAgICAgICAgICAgICAgIHwgICA5ICsKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkgICAgICAgICAgICAgICAgICAgICB8ICAyNiArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2FnZy5jICAgICAgICAgICAgICAgIHwgIDExICsKIHNyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9leHByLmMgICAgICAgICAgICAgICB8ICAgNSArCiBzcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfZnVuYy5jICAgICAgICAgICAgICAgfCAgMTIgKwogc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3V0aWxjbWQuYyAgICAgICAgICAgIHwgMTE1ICsrLQogc3JjL2JhY2tlbmQvcmV3 cml0ZS9yZXdyaXRlSGFuZGxlci5jICAgICAgICAgIHwgMTUyICsrKy0KIHNyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jICAgICAgICAgICB8ICAzMyArCiBzcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9wYXJ0Y2FjaGUuYyAgICAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyAgICAgICAgICAgIHwgICA0ICsKIHNyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8ICA0MyArLQogc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9i aW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYyAgICAgICAgICAgICAgICB8ICAxMCArCiBzcmMv YmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCAgICAgICAgICAgICAgfCAgMTcgKwogc3Jj L2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDI1ICstCiBz cmMvaW5jbHVkZS9hY2Nlc3MvdHVwZGVzYy5oICAgICAgICAgICAgICAgICAgfCAgIDEgKwog c3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmggICAgICAgICAgICAgICAgICAgIHwgICAzICst CiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2F0dHJpYnV0ZS5oICAgICAgICAgICAgfCAgIDYg Kwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jbGFzcy5kYXQgICAgICAgICAgICAgIHwgICAy ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuaCAgICAgICAgfCAg IDIgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwg ICAzICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8 ICAxNCArLQogc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oICAgICAgICAgICAgICAgICAg IHwgICAyICsKIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggICAgICAgICAgICAg ICB8ICAgMyArLQogc3JjL2luY2x1ZGUvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oICAgICAg ICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oICAgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvcGwvcGxwZXJsL2V4cGVjdGVkL3BscGVybF90cmlnZ2VyLm91 dCAgICAgfCAgOTMgKysrCiBzcmMvcGwvcGxwZXJsL3BscGVybC5jICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDcgKy0KIHNyYy9wbC9wbHBlcmwvc3FsL3BscGVybF90cmlnZ2VyLnNx bCAgICAgICAgICB8ICAzNCArCiBzcmMvcGwvcGxweXRob24vZXhwZWN0ZWQvcGxweXRob25f dHJpZ2dlci5vdXQgfCAgOTIgKysrCiBzcmMvcGwvcGxweXRob24vcGxweV9leGVjLmMgICAg ICAgICAgICAgICAgICAgfCAgIDYgKwogc3JjL3BsL3BscHl0aG9uL3BscHlfdHlwZWlvLmMg ICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvcGwvcGxweXRob24vc3FsL3BscHl0aG9u X3RyaWdnZXIuc3FsICAgICAgfCAgMzUgKwogc3JjL3BsL3RjbC9leHBlY3RlZC9wbHRjbF9x dWVyaWVzLm91dCAgICAgICAgIHwgIDg5ICsrKwogc3JjL3BsL3RjbC9leHBlY3RlZC9wbHRj bF9zZXR1cC5vdXQgICAgICAgICAgIHwgICA4ICsKIHNyYy9wbC90Y2wvcGx0Y2wuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArCiBzcmMvcGwvdGNsL3NxbC9wbHRjbF9x dWVyaWVzLnNxbCAgICAgICAgICAgICAgfCAgMjUgKwogc3JjL3BsL3RjbC9zcWwvcGx0Y2xf c2V0dXAuc3FsICAgICAgICAgICAgICAgIHwgIDEwICsKIC4uLi9yZWdyZXNzL2V4cGVjdGVk L2NyZWF0ZV90YWJsZV9saWtlLm91dCAgICB8ICA0NiArKwogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9nZW5lcmF0ZWQub3V0ICAgICAgIHwgNzM3ICsrKysrKysrKysrKysrKysrKwog c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAyICst CiBzcmMvdGVzdC9yZWdyZXNzL3NlcmlhbF9zY2hlZHVsZSAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX3RhYmxlX2xpa2Uuc3FsICAgIHwgIDE0 ICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZC5zcWwgICAgICAgICAgICB8IDQw OCArKysrKysrKysrCiA2MCBmaWxlcyBjaGFuZ2VkLCAyNzMxIGluc2VydGlvbnMoKyksIDky IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvZ2VuZXJhdGVkLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2dlbmVyYXRlZC5zcWwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxv Z3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDQyNTY1MTZjMDgu LjI3YmFhMzRiNDIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC0xMTQzLDkgKzExNDMsMTEgQEAg PHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX2F0dHJpYnV0ZTwvc3RydWN0bmFtZT4gQ29sdW1uczwv dGl0bGU+CiAgICAgICA8ZW50cnk+PHR5cGU+Ym9vbDwvdHlwZT48L2VudHJ5PgogICAgICAg PGVudHJ5PjwvZW50cnk+CiAgICAgICA8ZW50cnk+Ci0gICAgICAgVGhpcyBjb2x1bW4gaGFz IGEgZGVmYXVsdCB2YWx1ZSwgaW4gd2hpY2ggY2FzZSB0aGVyZSB3aWxsIGJlIGEKLSAgICAg ICBjb3JyZXNwb25kaW5nIGVudHJ5IGluIHRoZSA8c3RydWN0bmFtZT5wZ19hdHRyZGVmPC9z dHJ1Y3RuYW1lPgotICAgICAgIGNhdGFsb2cgdGhhdCBhY3R1YWxseSBkZWZpbmVzIHRoZSB2 YWx1ZS4KKyAgICAgICBUaGlzIGNvbHVtbiBoYXMgYSBkZWZhdWx0IGV4cHJlc3Npb24gb3Ig Z2VuZXJhdGlvbiBleHByZXNzaW9uLCBpbiB3aGljaAorICAgICAgIGNhc2UgdGhlcmUgd2ls bCBiZSBhIGNvcnJlc3BvbmRpbmcgZW50cnkgaW4gdGhlCisgICAgICAgPHN0cnVjdG5hbWU+ cGdfYXR0cmRlZjwvc3RydWN0bmFtZT4gY2F0YWxvZyB0aGF0IGFjdHVhbGx5IGRlZmluZXMg dGhlCisgICAgICAgZXhwcmVzc2lvbi4gIChDaGVjayA8c3RydWN0ZmllbGQ+YXR0Z2VuZXJh dGVkPC9zdHJ1Y3RmaWVsZD4gdG8KKyAgICAgICBkZXRlcm1pbmUgd2hldGhlciB0aGlzIGlz IGEgZGVmYXVsdCBvciBhIGdlbmVyYXRpb24gZXhwcmVzc2lvbi4pCiAgICAgICA8L2VudHJ5 PgogICAgICA8L3Jvdz4KIApAQCAtMTE3Myw2ICsxMTc1LDE3IEBAIDx0aXRsZT48c3RydWN0 bmFtZT5wZ19hdHRyaWJ1dGU8L3N0cnVjdG5hbWU+IENvbHVtbnM8L3RpdGxlPgogICAgICAg PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48c3Ry dWN0ZmllbGQ+YXR0Z2VuZXJhdGVkPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAgPGVu dHJ5Pjx0eXBlPmNoYXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48L2VudHJ5Pgor ICAgICAgPGVudHJ5PgorICAgICAgIElmIGEgemVybyBieXRlICg8bGl0ZXJhbD4nJzwvbGl0 ZXJhbD4pLCB0aGVuIG5vdCBhIGdlbmVyYXRlZCBjb2x1bW4uCisgICAgICAgT3RoZXJ3aXNl LCA8bGl0ZXJhbD5zPC9saXRlcmFsPiA9IHN0b3JlZCwgPGxpdGVyYWw+djwvbGl0ZXJhbD4g PQorICAgICAgIHZpcnR1YWwuCisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAg ICA8cm93PgogICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5hdHRpc2Ryb3BwZWQ8L3N0cnVj dGZpZWxkPjwvZW50cnk+CiAgICAgICA8ZW50cnk+PHR5cGU+Ym9vbDwvdHlwZT48L2VudHJ5 PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2luZm9ybWF0aW9uX3NjaGVtYS5zZ21sIGIv ZG9jL3NyYy9zZ21sL2luZm9ybWF0aW9uX3NjaGVtYS5zZ21sCmluZGV4IGIxMzcwMGRhOTIu LjEzMjFhZGU0NGEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hl bWEuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvaW5mb3JtYXRpb25fc2NoZW1hLnNnbWwKQEAg LTk1Miw2ICs5NTIsNjIgQEAgPHRpdGxlPjxsaXRlcmFsPmNvbGxhdGlvbl9jaGFyYWN0ZXJf c2V0X2FwcGxpY2FiaWxpdHk8L2xpdGVyYWw+IENvbHVtbnM8L3RpdGxlPgogICA8L3RhYmxl PgogIDwvc2VjdDE+CiAKKyA8c2VjdDEgaWQ9ImluZm9zY2hlbWEtY29sdW1uLWNvbHVtbi11 c2FnZSI+CisgIDx0aXRsZT48bGl0ZXJhbD5jb2x1bW5fY29sdW1uX3VzYWdlPC9saXRlcmFs PjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUaGUgdmlldyA8bGl0ZXJhbD5jb2x1bW5fY29s dW1uX3VzYWdlPC9saXRlcmFsPiBpZGVudGlmaWVzIGFsbCBnZW5lcmF0ZWQKKyAgIGNvbHVt bnMgdGhhdCBkZXBlbmQgb24gYW5vdGhlciBiYXNlIGNvbHVtbiBpbiB0aGUgc2FtZSB0YWJs ZS4gIE9ubHkgdGFibGVzCisgICBvd25lZCBieSBhIGN1cnJlbnRseSBlbmFibGVkIHJvbGUg YXJlIGluY2x1ZGVkLgorICA8L3BhcmE+CisKKyAgPHRhYmxlPgorICAgPHRpdGxlPjxsaXRl cmFsPmNvbHVtbl9jb2x1bW5fdXNhZ2U8L2xpdGVyYWw+IENvbHVtbnM8L3RpdGxlPgorCisg ICA8dGdyb3VwIGNvbHM9IjMiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeT5OYW1lPC9lbnRyeT4KKyAgICAgIDxlbnRyeT5EYXRhIFR5cGU8L2VudHJ5PgorICAg ICAgPGVudHJ5PkRlc2NyaXB0aW9uPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVh ZD4KKworICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD50 YWJsZV9jYXRhbG9nPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+c3Fs X2lkZW50aWZpZXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5OYW1lIG9mIHRoZSBk YXRhYmFzZSBjb250YWluaW5nIHRoZSB0YWJsZSAoYWx3YXlzIHRoZSBjdXJyZW50IGRhdGFi YXNlKTwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+ PGxpdGVyYWw+dGFibGVfc2NoZW1hPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+ PHR5cGU+c3FsX2lkZW50aWZpZXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5OYW1l IG9mIHRoZSBzY2hlbWEgY29udGFpbmluZyB0aGUgdGFibGU8L2VudHJ5PgorICAgICA8L3Jv dz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPnRhYmxlX25hbWU8L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlw ZT48L2VudHJ5PgorICAgICAgPGVudHJ5Pk5hbWUgb2YgdGhlIHRhYmxlPC9lbnRyeT4KKyAg ICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5jb2x1bW5f bmFtZTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPnNxbF9pZGVudGlm aWVyPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+TmFtZSBvZiB0aGUgYmFzZSBjb2x1 bW4gdGhhdCBhIGdlbmVyYXRlZCBjb2x1bW4gZGVwZW5kcyBvbjwvZW50cnk+CisgICAgIDwv cm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+ZGVwZW5kZW50X2Nv bHVtbjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPnNxbF9pZGVudGlm aWVyPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+TmFtZSBvZiB0aGUgZ2VuZXJhdGVk IGNvbHVtbjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGJvZHk+CisgICA8L3Rncm91 cD4KKyAgPC90YWJsZT4KKyA8L3NlY3QxPgorCiAgPHNlY3QxIGlkPSJpbmZvc2NoZW1hLWNv bHVtbi1kb21haW4tdXNhZ2UiPgogICA8dGl0bGU+PGxpdGVyYWw+Y29sdW1uX2RvbWFpbl91 c2FnZTwvbGl0ZXJhbD48L3RpdGxlPgogCkBAIC0xNjQ4LDEzICsxNzA0LDE5IEBAIDx0aXRs ZT48bGl0ZXJhbD5jb2x1bW5zPC9saXRlcmFsPiBDb2x1bW5zPC90aXRsZT4KICAgICAgPHJv dz4KICAgICAgIDxlbnRyeT48bGl0ZXJhbD5pc19nZW5lcmF0ZWQ8L2xpdGVyYWw+PC9lbnRy eT4KICAgICAgIDxlbnRyeT48dHlwZT5jaGFyYWN0ZXJfZGF0YTwvdHlwZT48L2VudHJ5Pgot ICAgICAgPGVudHJ5PkFwcGxpZXMgdG8gYSBmZWF0dXJlIG5vdCBhdmFpbGFibGUgaW4gPHBy b2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPjwvZW50cnk+CisgICAgICA8ZW50 cnk+CisgICAgICAgSWYgdGhlIGNvbHVtbiBpcyBhIGdlbmVyYXRlZCBjb2x1bW4sIHRoZW4g PGxpdGVyYWw+QUxXQVlTPC9saXRlcmFsPiwKKyAgICAgICBlbHNlIDxsaXRlcmFsPk5FVkVS PC9saXRlcmFsPi4KKyAgICAgIDwvZW50cnk+CiAgICAgIDwvcm93PgogCiAgICAgIDxyb3c+ CiAgICAgICA8ZW50cnk+PGxpdGVyYWw+Z2VuZXJhdGlvbl9leHByZXNzaW9uPC9saXRlcmFs PjwvZW50cnk+CiAgICAgICA8ZW50cnk+PHR5cGU+Y2hhcmFjdGVyX2RhdGE8L3R5cGU+PC9l bnRyeT4KLSAgICAgIDxlbnRyeT5BcHBsaWVzIHRvIGEgZmVhdHVyZSBub3QgYXZhaWxhYmxl IGluIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT48L2VudHJ5PgorICAg ICAgPGVudHJ5PgorICAgICAgIElmIHRoZSBjb2x1bW4gaXMgYSBnZW5lcmF0ZWQgY29sdW1u LCB0aGVuIHRoZSBnZW5lcmF0aW9uIGV4cHJlc3Npb24sCisgICAgICAgZWxzZSBudWxsLgor ICAgICAgPC9lbnRyeT4KICAgICAgPC9yb3c+CiAKICAgICAgPHJvdz4KZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNn bWwKaW5kZXggMTNhOGI2OGQ5NS4uYjFlODIxNGI4MSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3JlZi9jb3B5LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKQEAg LTEwMyw3ICsxMDMsOCBAQCA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CiAgICAgIDxsaXN0 aXRlbT4KICAgICAgPHBhcmE+CiAgICAgICBBbiBvcHRpb25hbCBsaXN0IG9mIGNvbHVtbnMg dG8gYmUgY29waWVkLiAgSWYgbm8gY29sdW1uIGxpc3QgaXMKLSAgICAgIHNwZWNpZmllZCwg YWxsIGNvbHVtbnMgb2YgdGhlIHRhYmxlIHdpbGwgYmUgY29waWVkLgorICAgICAgc3BlY2lm aWVkLCBhbGwgY29sdW1ucyBvZiB0aGUgdGFibGUgZXhjZXB0IGdlbmVyYXRlZCBjb2x1bW5z IHdpbGwgYmUKKyAgICAgIGNvcGllZC4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+ CiAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCmlu ZGV4IDEwNDI4ZjhmZjAuLjE1Yjk1YTI5OTIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFi bGUuc2dtbApAQCAtNjIsNiArNjIsNyBAQAogICBOVUxMIHwKICAgQ0hFQ0sgKCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ICkgWyBO TyBJTkhFUklUIF0gfAogICBERUZBVUxUIDxyZXBsYWNlYWJsZT5kZWZhdWx0X2V4cHI8L3Jl cGxhY2VhYmxlPiB8CisgIEdFTkVSQVRFRCBBTFdBWVMgQVMgKCA8cmVwbGFjZWFibGU+Z2Vu ZXJhdGlvbl9leHByPC9yZXBsYWNlYWJsZT4gKSBbIFZJUlRVQUwgfCBTVE9SRUQgXSB8CiAg IEdFTkVSQVRFRCB7IEFMV0FZUyB8IEJZIERFRkFVTFQgfSBBUyBJREVOVElUWSBbICggPHJl cGxhY2VhYmxlPnNlcXVlbmNlX29wdGlvbnM8L3JlcGxhY2VhYmxlPiApIF0gfAogICBVTklR VUUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3Jl cGxhY2VhYmxlPiB8CiAgIFBSSU1BUlkgS0VZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfApAQCAtODIsNyArODMsNyBA QAogCiA8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bGlrZV9v cHRpb248L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KIAoteyBJTkNMVURJTkcgfCBFWENM VURJTkcgfSB7IENPTU1FTlRTIHwgQ09OU1RSQUlOVFMgfCBERUZBVUxUUyB8IElERU5USVRZ IHwgSU5ERVhFUyB8IFNUQVRJU1RJQ1MgfCBTVE9SQUdFIHwgQUxMIH0KK3sgSU5DTFVESU5H IHwgRVhDTFVESU5HIH0geyBDT01NRU5UUyB8IENPTlNUUkFJTlRTIHwgREVGQVVMVFMgfCBH RU5FUkFURUQgfCBJREVOVElUWSB8IElOREVYRVMgfCBTVEFUSVNUSUNTIHwgU1RPUkFHRSB8 IEFMTCB9CiAKIDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgogCkBAIC02 MjksNiArNjMwLDE3IEBAIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KICAgICAgICAgPC9s aXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICAgIDx2YXJsaXN0ZW50 cnk+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPklOQ0xVRElORyBHRU5FUkFURUQ8L2xpdGVy YWw+PC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT4KKyAgICAg ICAgICBBbnkgZ2VuZXJhdGlvbiBleHByZXNzaW9ucyBhcyB3ZWxsIGFzIHRoZSB2aXJ0dWFs L3N0b3JlZCBjaG9pY2Ugb2YKKyAgICAgICAgICBjb3BpZWQgY29sdW1uIGRlZmluaXRpb25z IHdpbGwgYmUgY29waWVkLiAgQnkgZGVmYXVsdCwgbmV3IGNvbHVtbnMKKyAgICAgICAgICB3 aWxsIGJlIHJlZ3VsYXIgYmFzZSBjb2x1bW5zLgorICAgICAgICAgPC9wYXJhPgorICAgICAg ICA8L2xpc3RpdGVtPgorICAgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgICAgPHZhcmxp c3RlbnRyeT4KICAgICAgICAgPHRlcm0+PGxpdGVyYWw+SU5DTFVESU5HIElERU5USVRZPC9s aXRlcmFsPjwvdGVybT4KICAgICAgICAgPGxpc3RpdGVtPgpAQCAtNzk4LDYgKzgxMCwzMSBA QCA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFy bGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPkdF TkVSQVRFRCBBTFdBWVMgQVMgKCA8cmVwbGFjZWFibGU+Z2VuZXJhdGlvbl9leHByPC9yZXBs YWNlYWJsZT4gKSBbIFZJUlRVQUwgfCBTVE9SRUQgXTwvbGl0ZXJhbD48aW5kZXh0ZXJtPjxw cmltYXJ5PmdlbmVyYXRlZCBjb2x1bW48L3ByaW1hcnk+PC9pbmRleHRlcm0+PC90ZXJtPgor ICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIGNsYXVzZSBjcmVhdGVz IHRoZSBjb2x1bW4gYXMgYSA8Zmlyc3R0ZXJtPmdlbmVyYXRlZAorICAgICAgY29sdW1uPC9m aXJzdHRlcm0+LiAgVGhlIGNvbHVtbiBjYW5ub3QgYmUgd3JpdHRlbiB0bywgYW5kIHdoZW4g cmVhZCBpdAorICAgICAgd2lsbCBiZSBjb21wdXRlZCBmcm9tIHRoZSBzcGVjaWZpZWQgZXhw cmVzc2lvbi4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgV2hlbiA8bGl0 ZXJhbD5WSVJUVUFMPC9saXRlcmFsPiBpcyBzcGVjaWZpZWQsIHRoZSBjb2x1bW4gd2lsbCBi ZQorICAgICAgY29tcHV0ZWQgd2hlbiBpdCBpcyByZWFkLCBhbmQgaXQgd2lsbCBub3Qgb2Nj dXB5IGFueSBzdG9yYWdlLgorICAgICAgV2hlbiA8bGl0ZXJhbD5TVE9SRUQ8L2xpdGVyYWw+ IGlzIHNwZWNpZmllZCwgdGhlIGNvbHVtbiB3aWxsIGJlIGNvbXB1dGVkCisgICAgICBvbiB3 cml0ZSBhbmQgd2lsbCBiZSBzdG9yZWQgb24gZGlzay4gIDxsaXRlcmFsPlZJUlRVQUw8L2xp dGVyYWw+IGlzIHRoZQorICAgICAgZGVmYXVsdC4KKyAgICAgPC9wYXJhPgorCisgICAgIDxw YXJhPgorICAgICAgVGhlIGdlbmVyYXRpb24gZXhwcmVzc2lvbiBjYW4gcmVmZXIgdG8gb3Ro ZXIgY29sdW1ucyBpbiB0aGUgdGFibGUsIGJ1dAorICAgICAgbm90IG90aGVyIGdlbmVyYXRl ZCBjb2x1bW5zLiAgQW55IGZ1bmN0aW9ucyBhbmQgb3BlcmF0b3JzIHVzZWQgbXVzdCBiZQor ICAgICAgaW1tdXRhYmxlLiAgUmVmZXJlbmNlcyB0byBvdGhlciB0YWJsZXMgYXJlIG5vdCBh bGxvd2VkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVu dHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxsaXRlcmFsPkdFTkVSQVRF RCB7IEFMV0FZUyB8IEJZIERFRkFVTFQgfSBBUyBJREVOVElUWSBbICggPHJlcGxhY2VhYmxl PnNlcXVlbmNlX29wdGlvbnM8L3JlcGxhY2VhYmxlPiApIF08L2xpdGVyYWw+PC90ZXJtPgog ICAgIDxsaXN0aXRlbT4KQEAgLTIwNzAsNiArMjEwNywxNiBAQCA8dGl0bGU+TXVsdGlwbGUg SWRlbnRpdHkgQ29sdW1uczwvdGl0bGU+CiAgICA8L3BhcmE+CiAgIDwvcmVmc2VjdDI+CiAK KyAgPHJlZnNlY3QyPgorICAgPHRpdGxlPkdlbmVyYXRlZCBDb2x1bW5zPC90aXRsZT4KKwor ICAgPHBhcmE+CisgICAgVGhlIG9wdGlvbnMgPGxpdGVyYWw+VklSVFVBTDwvbGl0ZXJhbD4g YW5kIDxsaXRlcmFsPlNUT1JFRDwvbGl0ZXJhbD4gYXJlCisgICAgbm90IHN0YW5kYXJkIGJ1 dCBhcmUgYWxzbyB1c2VkIGJ5IG90aGVyIFNRTCBpbXBsZW1lbnRhdGlvbnMuICBUaGUgU1FM CisgICAgc3RhbmRhcmQgZG9lcyBub3Qgc3BlY2lmeSB0aGUgc3RvcmFnZSBvZiBnZW5lcmF0 ZWQgY29sdW1ucy4KKyAgIDwvcGFyYT4KKyAgPC9yZWZzZWN0Mj4KKwogICA8cmVmc2VjdDI+ CiAgICA8dGl0bGU+PGxpdGVyYWw+TElLRTwvbGl0ZXJhbD4gQ2xhdXNlPC90aXRsZT4KIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90dXBkZXNjLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvY29tbW9uL3R1cGRlc2MuYwppbmRleCBiMDQzNGI0NjcyLi4yMWJk MGQ4NmNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3R1cGRlc2Mu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3R1cGRlc2MuYwpAQCAtMTMzLDYg KzEzMyw3IEBAIENyZWF0ZVR1cGxlRGVzY0NvcHkoVHVwbGVEZXNjIHR1cGRlc2MpCiAJCWF0 dC0+YXR0aGFzZGVmID0gZmFsc2U7CiAJCWF0dC0+YXR0aGFzbWlzc2luZyA9IGZhbHNlOwog CQlhdHQtPmF0dGlkZW50aXR5ID0gJ1wwJzsKKwkJYXR0LT5hdHRnZW5lcmF0ZWQgPSAnXDAn OwogCX0KIAogCS8qIFdlIGNhbiBjb3B5IHRoZSB0dXBsZSB0eXBlIGlkZW50aWZpY2F0aW9u LCB0b28gKi8KQEAgLTE2Nyw2ICsxNjgsNyBAQCBDcmVhdGVUdXBsZURlc2NDb3B5Q29uc3Ry KFR1cGxlRGVzYyB0dXBkZXNjKQogCQlUdXBsZUNvbnN0ciAqY3B5ID0gKFR1cGxlQ29uc3Ry ICopIHBhbGxvYzAoc2l6ZW9mKFR1cGxlQ29uc3RyKSk7CiAKIAkJY3B5LT5oYXNfbm90X251 bGwgPSBjb25zdHItPmhhc19ub3RfbnVsbDsKKwkJY3B5LT5oYXNfZ2VuZXJhdGVkID0gY29u c3RyLT5oYXNfZ2VuZXJhdGVkOwogCiAJCWlmICgoY3B5LT5udW1fZGVmdmFsID0gY29uc3Ry LT5udW1fZGVmdmFsKSA+IDApCiAJCXsKQEAgLTI0OSw2ICsyNTEsNyBAQCBUdXBsZURlc2ND b3B5KFR1cGxlRGVzYyBkc3QsIFR1cGxlRGVzYyBzcmMpCiAJCWF0dC0+YXR0aGFzZGVmID0g ZmFsc2U7CiAJCWF0dC0+YXR0aGFzbWlzc2luZyA9IGZhbHNlOwogCQlhdHQtPmF0dGlkZW50 aXR5ID0gJ1wwJzsKKwkJYXR0LT5hdHRnZW5lcmF0ZWQgPSAnXDAnOwogCX0KIAlkc3QtPmNv bnN0ciA9IE5VTEw7CiAKQEAgLTMwMiw2ICszMDUsNyBAQCBUdXBsZURlc2NDb3B5RW50cnko VHVwbGVEZXNjIGRzdCwgQXR0ck51bWJlciBkc3RBdHRubywKIAlkc3RBdHQtPmF0dGhhc2Rl ZiA9IGZhbHNlOwogCWRzdEF0dC0+YXR0aGFzbWlzc2luZyA9IGZhbHNlOwogCWRzdEF0dC0+ YXR0aWRlbnRpdHkgPSAnXDAnOworCWRzdEF0dC0+YXR0Z2VuZXJhdGVkID0gJ1wwJzsKIH0K IAogLyoKQEAgLTQ2MCw2ICs0NjQsOCBAQCBlcXVhbFR1cGxlRGVzY3MoVHVwbGVEZXNjIHR1 cGRlc2MxLCBUdXBsZURlc2MgdHVwZGVzYzIpCiAJCQlyZXR1cm4gZmFsc2U7CiAJCWlmIChh dHRyMS0+YXR0aWRlbnRpdHkgIT0gYXR0cjItPmF0dGlkZW50aXR5KQogCQkJcmV0dXJuIGZh bHNlOworCQlpZiAoYXR0cjEtPmF0dGdlbmVyYXRlZCAhPSBhdHRyMi0+YXR0Z2VuZXJhdGVk KQorCQkJcmV0dXJuIGZhbHNlOwogCQlpZiAoYXR0cjEtPmF0dGlzZHJvcHBlZCAhPSBhdHRy Mi0+YXR0aXNkcm9wcGVkKQogCQkJcmV0dXJuIGZhbHNlOwogCQlpZiAoYXR0cjEtPmF0dGlz bG9jYWwgIT0gYXR0cjItPmF0dGlzbG9jYWwpCkBAIC00ODAsNiArNDg2LDggQEAgZXF1YWxU dXBsZURlc2NzKFR1cGxlRGVzYyB0dXBkZXNjMSwgVHVwbGVEZXNjIHR1cGRlc2MyKQogCQkJ cmV0dXJuIGZhbHNlOwogCQlpZiAoY29uc3RyMS0+aGFzX25vdF9udWxsICE9IGNvbnN0cjIt Pmhhc19ub3RfbnVsbCkKIAkJCXJldHVybiBmYWxzZTsKKwkJaWYgKGNvbnN0cjEtPmhhc19n ZW5lcmF0ZWQgIT0gY29uc3RyMi0+aGFzX2dlbmVyYXRlZCkKKwkJCXJldHVybiBmYWxzZTsK IAkJbiA9IGNvbnN0cjEtPm51bV9kZWZ2YWw7CiAJCWlmIChuICE9IChpbnQpIGNvbnN0cjIt Pm51bV9kZWZ2YWwpCiAJCQlyZXR1cm4gZmFsc2U7CkBAIC02NDMsNiArNjUxLDcgQEAgVHVw bGVEZXNjSW5pdEVudHJ5KFR1cGxlRGVzYyBkZXNjLAogCWF0dC0+YXR0aGFzZGVmID0gZmFs c2U7CiAJYXR0LT5hdHRoYXNtaXNzaW5nID0gZmFsc2U7CiAJYXR0LT5hdHRpZGVudGl0eSA9 ICdcMCc7CisJYXR0LT5hdHRnZW5lcmF0ZWQgPSAnXDAnOwogCWF0dC0+YXR0aXNkcm9wcGVk ID0gZmFsc2U7CiAJYXR0LT5hdHRpc2xvY2FsID0gdHJ1ZTsKIAlhdHQtPmF0dGluaGNvdW50 ID0gMDsKQEAgLTcwMiw2ICs3MTEsNyBAQCBUdXBsZURlc2NJbml0QnVpbHRpbkVudHJ5KFR1 cGxlRGVzYyBkZXNjLAogCWF0dC0+YXR0aGFzZGVmID0gZmFsc2U7CiAJYXR0LT5hdHRoYXNt aXNzaW5nID0gZmFsc2U7CiAJYXR0LT5hdHRpZGVudGl0eSA9ICdcMCc7CisJYXR0LT5hdHRn ZW5lcmF0ZWQgPSAnXDAnOwogCWF0dC0+YXR0aXNkcm9wcGVkID0gZmFsc2U7CiAJYXR0LT5h dHRpc2xvY2FsID0gdHJ1ZTsKIAlhdHQtPmF0dGluaGNvdW50ID0gMDsKQEAgLTg1NSwxNyAr ODY1LDggQEAgQnVpbGREZXNjRm9yUmVsYXRpb24oTGlzdCAqc2NoZW1hKQogCQlUdXBsZUNv bnN0ciAqY29uc3RyID0gKFR1cGxlQ29uc3RyICopIHBhbGxvYzAoc2l6ZW9mKFR1cGxlQ29u c3RyKSk7CiAKIAkJY29uc3RyLT5oYXNfbm90X251bGwgPSB0cnVlOwotCQljb25zdHItPmRl ZnZhbCA9IE5VTEw7Ci0JCWNvbnN0ci0+bWlzc2luZyA9IE5VTEw7Ci0JCWNvbnN0ci0+bnVt X2RlZnZhbCA9IDA7Ci0JCWNvbnN0ci0+Y2hlY2sgPSBOVUxMOwotCQljb25zdHItPm51bV9j aGVjayA9IDA7CiAJCWRlc2MtPmNvbnN0ciA9IGNvbnN0cjsKIAl9Ci0JZWxzZQotCXsKLQkJ ZGVzYy0+Y29uc3RyID0gTlVMTDsKLQl9CiAKIAlyZXR1cm4gZGVzYzsKIH0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9o ZWFwLmMKaW5kZXggM2M5YzAzYzk5Ny4uYjY5NDZkYWMyYSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMK QEAgLTY4LDYgKzY4LDcgQEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY29sbGF0ZS5oIgog I2luY2x1ZGUgInBhcnNlci9wYXJzZV9leHByLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNl X3JlbGF0aW9uLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNldHJlZS5oIgogI2luY2x1ZGUg InN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9zbWdyLmgiCkBAIC02ODUsNiArNjg2LDcgQEAgSW5zZXJ0UGdBdHRy aWJ1dGVUdXBsZShSZWxhdGlvbiBwZ19hdHRyaWJ1dGVfcmVsLAogCXZhbHVlc1tBbnVtX3Bn X2F0dHJpYnV0ZV9hdHRoYXNkZWYgLSAxXSA9IEJvb2xHZXREYXR1bShuZXdfYXR0cmlidXRl LT5hdHRoYXNkZWYpOwogCXZhbHVlc1tBbnVtX3BnX2F0dHJpYnV0ZV9hdHRoYXNtaXNzaW5n IC0gMV0gPSBCb29sR2V0RGF0dW0obmV3X2F0dHJpYnV0ZS0+YXR0aGFzbWlzc2luZyk7CiAJ dmFsdWVzW0FudW1fcGdfYXR0cmlidXRlX2F0dGlkZW50aXR5IC0gMV0gPSBDaGFyR2V0RGF0 dW0obmV3X2F0dHJpYnV0ZS0+YXR0aWRlbnRpdHkpOworCXZhbHVlc1tBbnVtX3BnX2F0dHJp YnV0ZV9hdHRnZW5lcmF0ZWQgLSAxXSA9IENoYXJHZXREYXR1bShuZXdfYXR0cmlidXRlLT5h dHRnZW5lcmF0ZWQpOwogCXZhbHVlc1tBbnVtX3BnX2F0dHJpYnV0ZV9hdHRpc2Ryb3BwZWQg LSAxXSA9IEJvb2xHZXREYXR1bShuZXdfYXR0cmlidXRlLT5hdHRpc2Ryb3BwZWQpOwogCXZh bHVlc1tBbnVtX3BnX2F0dHJpYnV0ZV9hdHRpc2xvY2FsIC0gMV0gPSBCb29sR2V0RGF0dW0o bmV3X2F0dHJpYnV0ZS0+YXR0aXNsb2NhbCk7CiAJdmFsdWVzW0FudW1fcGdfYXR0cmlidXRl X2F0dGluaGNvdW50IC0gMV0gPSBJbnQzMkdldERhdHVtKG5ld19hdHRyaWJ1dGUtPmF0dGlu aGNvdW50KTsKQEAgLTIxNjAsNiArMjE2Miw3IEBAIFN0b3JlQXR0ckRlZmF1bHQoUmVsYXRp b24gcmVsLCBBdHRyTnVtYmVyIGF0dG51bSwKIAlSZWxhdGlvbglhdHRycmVsOwogCUhlYXBU dXBsZQlhdHR0dXA7CiAJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0U3RydWN0OworCWNoYXIJCWF0 dGdlbmVyYXRlZDsKIAlPaWQJCQlhdHRyZGVmT2lkOwogCU9iamVjdEFkZHJlc3MgY29sb2Jq ZWN0LAogCQkJCWRlZm9iamVjdDsKQEAgLTIyMTUsNiArMjIxOCw3IEBAIFN0b3JlQXR0ckRl ZmF1bHQoUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG51bSwKIAkJZWxvZyhFUlJPUiwg ImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGF0dHJpYnV0ZSAlZCBvZiByZWxhdGlvbiAldSIs CiAJCQkgYXR0bnVtLCBSZWxhdGlvbkdldFJlbGlkKHJlbCkpOwogCWF0dFN0cnVjdCA9IChG b3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RSVUNUKGF0dHR1cCk7CisJYXR0Z2VuZXJhdGVkID0g YXR0U3RydWN0LT5hdHRnZW5lcmF0ZWQ7CiAJaWYgKCFhdHRTdHJ1Y3QtPmF0dGhhc2RlZikK IAl7CiAJCUZvcm1fcGdfYXR0cmlidXRlIGRlZkF0dFN0cnVjdDsKQEAgLTIyMzUsNyArMjIz OSw3IEBAIFN0b3JlQXR0ckRlZmF1bHQoUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG51 bSwKIAkJdmFsdWVzQXR0W0FudW1fcGdfYXR0cmlidXRlX2F0dGhhc2RlZiAtIDFdID0gdHJ1 ZTsKIAkJcmVwbGFjZXNBdHRbQW51bV9wZ19hdHRyaWJ1dGVfYXR0aGFzZGVmIC0gMV0gPSB0 cnVlOwogCi0JCWlmIChhZGRfY29sdW1uX21vZGUpCisJCWlmIChhZGRfY29sdW1uX21vZGUg JiYgIWF0dGdlbmVyYXRlZCkKIAkJewogCQkJZXhwcjIgPSBleHByZXNzaW9uX3BsYW5uZXIo ZXhwcjIpOwogCQkJZXN0YXRlID0gQ3JlYXRlRXhlY3V0b3JTdGF0ZSgpOwpAQCAtMjI5Nyw3 ICsyMzAxLDI2IEBAIFN0b3JlQXR0ckRlZmF1bHQoUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVy IGF0dG51bSwKIAkvKgogCSAqIFJlY29yZCBkZXBlbmRlbmNpZXMgb24gb2JqZWN0cyB1c2Vk IGluIHRoZSBleHByZXNzaW9uLCB0b28uCiAJICovCi0JcmVjb3JkRGVwZW5kZW5jeU9uRXhw cigmZGVmb2JqZWN0LCBleHByLCBOSUwsIERFUEVOREVOQ1lfTk9STUFMKTsKKwlpZiAoYXR0 Z2VuZXJhdGVkKQorCXsKKwkJLyoKKwkJICogR2VuZXJhdGVkIGNvbHVtbjogRHJvcHBpbmcg YW55dGhpbmcgdGhhdCB0aGUgZ2VuZXJhdGlvbiBleHByZXNzaW9uCisJCSAqIHJlZmVycyB0 byBhdXRvbWF0aWNhbGx5IGRyb3BzIHRoZSBnZW5lcmF0ZWQgY29sdW1uLgorCQkgKi8KKwkJ cmVjb3JkRGVwZW5kZW5jeU9uU2luZ2xlUmVsRXhwcigmY29sb2JqZWN0LCBleHByLCBSZWxh dGlvbkdldFJlbGlkKHJlbCksCisJCQkJCQkJCQkJREVQRU5ERU5DWV9BVVRPLAorCQkJCQkJ CQkJCURFUEVOREVOQ1lfQVVUTywgZmFsc2UpOworCX0KKwllbHNlCisJeworCQkvKgorCQkg KiBOb3JtYWwgZGVmYXVsdDogRHJvcHBpbmcgYW55dGhpbmcgdGhhdCB0aGUgZGVmYXVsdCBy ZWZlcnMgdG8KKwkJICogcmVxdWlyZXMgQ0FTQ0FERSBhbmQgZHJvcHMgdGhlIGRlZmF1bHQg b25seS4KKwkJICovCisJCXJlY29yZERlcGVuZGVuY3lPblNpbmdsZVJlbEV4cHIoJmRlZm9i amVjdCwgZXhwciwgUmVsYXRpb25HZXRSZWxpZChyZWwpLAorCQkJCQkJCQkJCURFUEVOREVO Q1lfTk9STUFMLAorCQkJCQkJCQkJCURFUEVOREVOQ1lfTk9STUFMLCBmYWxzZSk7CisJfQog CiAJLyoKIAkgKiBQb3N0IGNyZWF0aW9uIGhvb2sgZm9yIGF0dHJpYnV0ZSBkZWZhdWx0cy4K QEAgLTI1NjYsNyArMjU4OSw4IEBAIEFkZFJlbGF0aW9uTmV3Q29uc3RyYWludHMoUmVsYXRp b24gcmVsLAogCiAJCWV4cHIgPSBjb29rRGVmYXVsdChwc3RhdGUsIGNvbERlZi0+cmF3X2Rl ZmF1bHQsCiAJCQkJCQkgICBhdHAtPmF0dHR5cGlkLCBhdHAtPmF0dHR5cG1vZCwKLQkJCQkJ CSAgIE5hbWVTdHIoYXRwLT5hdHRuYW1lKSk7CisJCQkJCQkgICBOYW1lU3RyKGF0cC0+YXR0 bmFtZSksCisJCQkJCQkgICBhdHAtPmF0dGdlbmVyYXRlZCk7CiAKIAkJLyoKIAkJICogSWYg dGhlIGV4cHJlc3Npb24gaXMganVzdCBhIE5VTEwgY29uc3RhbnQsIHdlIGRvIG5vdCBib3Ro ZXIgdG8gbWFrZQpAQCAtMjkzNyw2ICsyOTYxLDQ2IEBAIFNldFJlbGF0aW9uTnVtQ2hlY2tz KFJlbGF0aW9uIHJlbCwgaW50IG51bWNoZWNrcykKIAloZWFwX2Nsb3NlKHJlbHJlbCwgUm93 RXhjbHVzaXZlTG9jayk7CiB9CiAKKy8qCisgKiBDaGVjayBmb3IgcmVmZXJlbmNlcyB0byBn ZW5lcmF0ZWQgY29sdW1ucworICovCitzdGF0aWMgYm9vbAorY2hlY2tfbmVzdGVkX2dlbmVy YXRlZF93YWxrZXIoTm9kZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKK3sKKwlQYXJzZVN0YXRl ICpwc3RhdGUgPSBjb250ZXh0OworCisJaWYgKG5vZGUgPT0gTlVMTCkKKwkJcmV0dXJuIGZh bHNlOworCWVsc2UgaWYgKElzQShub2RlLCBWYXIpKQorCXsKKwkJVmFyCQkgICAqdmFyID0g KFZhciAqKSBub2RlOworCQlPaWQJCQlyZWxpZDsKKwkJQXR0ck51bWJlcglhdHRudW07CisK KwkJcmVsaWQgPSBydF9mZXRjaCh2YXItPnZhcm5vLCBwc3RhdGUtPnBfcnRhYmxlKS0+cmVs aWQ7CisJCWF0dG51bSA9IHZhci0+dmFyYXR0bm87CisKKwkJaWYgKHJlbGlkICYmIGF0dG51 bSAmJiBnZXRfYXR0Z2VuZXJhdGVkKHJlbGlkLCBhdHRudW0pKQorCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkgZXJybXNn KCJjYW5ub3QgdXNlIGdlbmVyYXRlZCBjb2x1bW4gXCIlc1wiIGluIGNvbHVtbiBnZW5lcmF0 aW9uIGV4cHJlc3Npb24iLAorCQkJCQkJCWdldF9hdHRuYW1lKHJlbGlkLCBhdHRudW0sIGZh bHNlKSksCisJCQkJCSBlcnJkZXRhaWwoIkEgZ2VuZXJhdGVkIGNvbHVtbiBjYW5ub3QgcmVm ZXJlbmNlIGFub3RoZXIgZ2VuZXJhdGVkIGNvbHVtbi4iKSwKKwkJCQkJIHBhcnNlcl9lcnJw b3NpdGlvbihwc3RhdGUsIHZhci0+bG9jYXRpb24pKSk7CisKKwkJcmV0dXJuIGZhbHNlOwor CX0KKwllbHNlCisJCXJldHVybiBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIGNoZWNr X25lc3RlZF9nZW5lcmF0ZWRfd2Fsa2VyLAorCQkJCQkJCQkJICAodm9pZCAqKSBjb250ZXh0 KTsKK30KKworc3RhdGljIHZvaWQKK2NoZWNrX25lc3RlZF9nZW5lcmF0ZWQoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBOb2RlICpub2RlKQoreworCWNoZWNrX25lc3RlZF9nZW5lcmF0ZWRfd2Fs a2VyKG5vZGUsIHBzdGF0ZSk7Cit9CisKIC8qCiAgKiBUYWtlIGEgcmF3IGRlZmF1bHQgYW5k IGNvbnZlcnQgaXQgdG8gYSBjb29rZWQgZm9ybWF0IHJlYWR5IGZvcgogICogc3RvcmFnZS4K QEAgLTI5NTQsNyArMzAxOCw4IEBAIGNvb2tEZWZhdWx0KFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAkJCU5vZGUgKnJhd19kZWZhdWx0LAogCQkJT2lkIGF0dHR5cGlkLAogCQkJaW50MzIgYXR0 dHlwbW9kLAotCQkJY29uc3QgY2hhciAqYXR0bmFtZSkKKwkJCWNvbnN0IGNoYXIgKmF0dG5h bWUsCisJCQljaGFyIGF0dGdlbmVyYXRlZCkKIHsKIAlOb2RlCSAgICpleHByOwogCkBAIC0y OTYzLDE3ICszMDI4LDIwIEBAIGNvb2tEZWZhdWx0KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkv KgogCSAqIFRyYW5zZm9ybSByYXcgcGFyc2V0cmVlIHRvIGV4ZWN1dGFibGUgZXhwcmVzc2lv bi4KIAkgKi8KLQlleHByID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIHJhd19kZWZhdWx0LCBF WFBSX0tJTkRfQ09MVU1OX0RFRkFVTFQpOworCWV4cHIgPSB0cmFuc2Zvcm1FeHByKHBzdGF0 ZSwgcmF3X2RlZmF1bHQsIGF0dGdlbmVyYXRlZCA/IEVYUFJfS0lORF9HRU5FUkFURURfQ09M VU1OIDogRVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxUKTsKIAogCS8qCiAJICogTWFrZSBzdXJl IGRlZmF1bHQgZXhwciBkb2VzIG5vdCByZWZlciB0byBhbnkgdmFycyAod2UgbmVlZCB0aGlz IGNoZWNrCiAJICogc2luY2UgdGhlIHBzdGF0ZSBpbmNsdWRlcyB0aGUgdGFyZ2V0IHRhYmxl KS4KIAkgKi8KLQlpZiAoY29udGFpbl92YXJfY2xhdXNlKGV4cHIpKQorCWlmICghYXR0Z2Vu ZXJhdGVkICYmIGNvbnRhaW5fdmFyX2NsYXVzZShleHByKSkKIAkJZXJlcG9ydChFUlJPUiwK IAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfQ09MVU1OX1JFRkVSRU5DRSksCiAJCQkJ IGVycm1zZygiY2Fubm90IHVzZSBjb2x1bW4gcmVmZXJlbmNlcyBpbiBkZWZhdWx0IGV4cHJl c3Npb24iKSkpOwogCisJaWYgKGF0dGdlbmVyYXRlZCkKKwkJY2hlY2tfbmVzdGVkX2dlbmVy YXRlZChwc3RhdGUsIGV4cHIpOworCiAJLyoKIAkgKiB0cmFuc2Zvcm1FeHByKCkgc2hvdWxk IGhhdmUgYWxyZWFkeSByZWplY3RlZCBzdWJxdWVyaWVzLCBhZ2dyZWdhdGVzLAogCSAqIHdp bmRvdyBmdW5jdGlvbnMsIGFuZCBTUkZzLCBiYXNlZCBvbiB0aGUgRVhQUl9LSU5EXyBmb3Ig YSBkZWZhdWx0CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9u X3NjaGVtYS5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5z cWwKaW5kZXggZjRlNjlmNGEyNi4uYzM4MjViNGVkMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9pbmZvcm1hdGlvbl9zY2hlbWEuc3FsCisrKyBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvaW5mb3JtYXRpb25fc2NoZW1hLnNxbApAQCAtNTA5LDcgKzUwOSwyOSBAQCBDUkVB VEUgVklFVyBjb2xsYXRpb25fY2hhcmFjdGVyX3NldF9hcHBsaWNhYmlsaXR5IEFTCiAgKiBD T0xVTU5fQ09MVU1OX1VTQUdFIHZpZXcKICAqLwogCi0tLSBmZWF0dXJlIG5vdCBzdXBwb3J0 ZWQKK0NSRUFURSBWSUVXIGNvbHVtbl9jb2x1bW5fdXNhZ2UgQVMKKyAgICBTRUxFQ1QgQ0FT VChjdXJyZW50X2RhdGFiYXNlKCkgQVMgc3FsX2lkZW50aWZpZXIpIEFTIHRhYmxlX2NhdGFs b2csCisgICAgICAgICAgIENBU1Qobi5uc3BuYW1lIEFTIHNxbF9pZGVudGlmaWVyKSBBUyB0 YWJsZV9zY2hlbWEsCisgICAgICAgICAgIENBU1QoYy5yZWxuYW1lIEFTIHNxbF9pZGVudGlm aWVyKSBBUyB0YWJsZV9uYW1lLAorICAgICAgICAgICBDQVNUKGFjLmF0dG5hbWUgQVMgc3Fs X2lkZW50aWZpZXIpIEFTIGNvbHVtbl9uYW1lLAorICAgICAgICAgICBDQVNUKGFkLmF0dG5h bWUgQVMgc3FsX2lkZW50aWZpZXIpIEFTIGRlcGVuZGVudF9jb2x1bW4KKworICAgIEZST00g cGdfbmFtZXNwYWNlIG4sIHBnX2NsYXNzIGMsIHBnX2RlcGVuZCBkLAorICAgICAgICAgcGdf YXR0cmlidXRlIGFjLCBwZ19hdHRyaWJ1dGUgYWQKKworICAgIFdIRVJFIG4ub2lkID0gYy5y ZWxuYW1lc3BhY2UKKyAgICAgICAgICBBTkQgYy5vaWQgPSBhYy5hdHRyZWxpZAorICAgICAg ICAgIEFORCBjLm9pZCA9IGFkLmF0dHJlbGlkCisgICAgICAgICAgQU5EIGQuY2xhc3NpZCA9 ICdwZ19jYXRhbG9nLnBnX2NsYXNzJzo6cmVnY2xhc3MKKyAgICAgICAgICBBTkQgZC5yZWZj bGFzc2lkID0gJ3BnX2NhdGFsb2cucGdfY2xhc3MnOjpyZWdjbGFzcworICAgICAgICAgIEFO RCBkLm9iamlkID0gZC5yZWZvYmppZAorICAgICAgICAgIEFORCBjLm9pZCA9IGQub2JqaWQK KyAgICAgICAgICBBTkQgZC5vYmpzdWJpZCA9IGFkLmF0dG51bQorICAgICAgICAgIEFORCBk LnJlZm9ianN1YmlkID0gYWMuYXR0bnVtCisgICAgICAgICAgQU5EIGFkLmF0dGdlbmVyYXRl ZCA8PiAnJworICAgICAgICAgIEFORCBwZ19oYXNfcm9sZShjLnJlbG93bmVyLCAnVVNBR0Un KTsKKworR1JBTlQgU0VMRUNUIE9OIGNvbHVtbl9jb2x1bW5fdXNhZ2UgVE8gUFVCTElDOwog CiAKIC8qCkBAIC02NTYsNyArNjc4LDcgQEAgQ1JFQVRFIFZJRVcgY29sdW1ucyBBUwogICAg ICAgICAgICBDQVNUKGMucmVsbmFtZSBBUyBzcWxfaWRlbnRpZmllcikgQVMgdGFibGVfbmFt ZSwKICAgICAgICAgICAgQ0FTVChhLmF0dG5hbWUgQVMgc3FsX2lkZW50aWZpZXIpIEFTIGNv bHVtbl9uYW1lLAogICAgICAgICAgICBDQVNUKGEuYXR0bnVtIEFTIGNhcmRpbmFsX251bWJl cikgQVMgb3JkaW5hbF9wb3NpdGlvbiwKLSAgICAgICAgICAgQ0FTVChwZ19nZXRfZXhwcihh ZC5hZGJpbiwgYWQuYWRyZWxpZCkgQVMgY2hhcmFjdGVyX2RhdGEpIEFTIGNvbHVtbl9kZWZh dWx0LAorICAgICAgICAgICBDQVNUKENBU0UgV0hFTiBhLmF0dGdlbmVyYXRlZCA9ICcnIFRI RU4gcGdfZ2V0X2V4cHIoYWQuYWRiaW4sIGFkLmFkcmVsaWQpIEVORCBBUyBjaGFyYWN0ZXJf ZGF0YSkgQVMgY29sdW1uX2RlZmF1bHQsCiAgICAgICAgICAgIENBU1QoQ0FTRSBXSEVOIGEu YXR0bm90bnVsbCBPUiAodC50eXB0eXBlID0gJ2QnIEFORCB0LnR5cG5vdG51bGwpIFRIRU4g J05PJyBFTFNFICdZRVMnIEVORAogICAgICAgICAgICAgIEFTIHllc19vcl9ubykKICAgICAg ICAgICAgICBBUyBpc19udWxsYWJsZSwKQEAgLTc0NSw4ICs3NjcsOCBAQCBDUkVBVEUgVklF VyBjb2x1bW5zIEFTCiAgICAgICAgICAgIENBU1Qoc2VxLnNlcW1pbiBBUyBjaGFyYWN0ZXJf ZGF0YSkgQVMgaWRlbnRpdHlfbWluaW11bSwKICAgICAgICAgICAgQ0FTVChDQVNFIFdIRU4g c2VxLnNlcWN5Y2xlIFRIRU4gJ1lFUycgRUxTRSAnTk8nIEVORCBBUyB5ZXNfb3Jfbm8pIEFT IGlkZW50aXR5X2N5Y2xlLAogCi0gICAgICAgICAgIENBU1QoJ05FVkVSJyBBUyBjaGFyYWN0 ZXJfZGF0YSkgQVMgaXNfZ2VuZXJhdGVkLAotICAgICAgICAgICBDQVNUKG51bGwgQVMgY2hh cmFjdGVyX2RhdGEpIEFTIGdlbmVyYXRpb25fZXhwcmVzc2lvbiwKKyAgICAgICAgICAgQ0FT VChDQVNFIFdIRU4gYS5hdHRnZW5lcmF0ZWQgPD4gJycgVEhFTiAnQUxXQVlTJyBFTFNFICdO RVZFUicgRU5EIEFTIGNoYXJhY3Rlcl9kYXRhKSBBUyBpc19nZW5lcmF0ZWQsCisgICAgICAg ICAgIENBU1QoQ0FTRSBXSEVOIGEuYXR0Z2VuZXJhdGVkIDw+ICcnIFRIRU4gcGdfZ2V0X2V4 cHIoYWQuYWRiaW4sIGFkLmFkcmVsaWQpIEVORCBBUyBjaGFyYWN0ZXJfZGF0YSkgQVMgZ2Vu ZXJhdGlvbl9leHByZXNzaW9uLAogCiAgICAgICAgICAgIENBU1QoQ0FTRSBXSEVOIGMucmVs a2luZCBJTiAoJ3InLCAncCcpIE9SCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjLnJl bGtpbmQgSU4gKCd2JywgJ2YnKSBBTkQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2NvcHkuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwppbmRleCBiNThhNzRm NGUzLi4zYTdiMjI5YmNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5 LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCkBAIC0zMSw2ICszMSw3IEBA CiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgorI2luY2x1 ZGUgImV4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3R1 cHRhYmxlLmgiCiAjaW5jbHVkZSAiZm9yZWlnbi9mZHdhcGkuaCIKICNpbmNsdWRlICJsaWJw cS9saWJwcS5oIgpAQCAtMjkxMSw2ICsyOTEyLDI4IEBAIENvcHlGcm9tKENvcHlTdGF0ZSBj c3RhdGUpCiAJCQl9CiAJCQllbHNlCiAJCQl7CisJCQkJLyoKKwkJCQkgKiBOb3JtYWwgY2Fz ZTogaW5zZXJ0IHR1cGxlIGludG8gdGFibGUKKwkJCQkgKi8KKworCQkJCUhlYXBUdXBsZQlu ZXd0dXBsZTsKKworCQkJCS8qCisJCQkJICogQ29tcHV0ZSBzdG9yZWQgZ2VuZXJhdGVkIGNv bHVtbnMKKwkJCQkgKgorCQkJCSAqIFN3aXRjaCBtZW1vcnkgY29udGV4dCBzbyB0aGF0IHRo ZSBuZXcgdHVwbGUgaXMgaW4gdGhlIHNhbWUKKwkJCQkgKiBjb250ZXh0IGFzIHRoZSBvbGQg b25lLiAgTm90ZSB0aGF0IHdlIGRvbid0IHVzZSB0aGUgc2xvdCdzCisJCQkJICogY29udGV4 dC4KKwkJCQkgKi8KKwkJCQlpZiAocmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLT5y ZF9hdHQtPmNvbnN0ciAmJgorCQkJCQlyZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2Mt PnJkX2F0dC0+Y29uc3RyLT5oYXNfZ2VuZXJhdGVkKQorCQkJCXsKKwkJCQkJTWVtb3J5Q29u dGV4dFN3aXRjaFRvKEdldFBlclR1cGxlTWVtb3J5Q29udGV4dChlc3RhdGUpKTsKKwkJCQkJ aWYgKChuZXd0dXBsZSA9IEV4ZWNDb21wdXRlU3RvcmVkR2VuZXJhdGVkKGVzdGF0ZSwgc2xv dCkpKQorCQkJCQkJdHVwbGUgPSBuZXd0dXBsZTsKKwkJCQkJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGNvbnRleHQpOworCQkJCX0KKwogCQkJCS8qCiAJCQkJICogSWYgdGhlIHRhcmdl dCBpcyBhIHBsYWluIHRhYmxlLCBjaGVjayB0aGUgY29uc3RyYWludHMgb2YKIAkJCQkgKiB0 aGUgdHVwbGUuCkBAIC0zMjU3LDcgKzMyODAsNyBAQCBCZWdpbkNvcHlGcm9tKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAkJZm1ncl9pbmZvKGluX2Z1bmNfb2lkLCAmaW5fZnVuY3Rpb25zW2F0 dG51bSAtIDFdKTsKIAogCQkvKiBHZXQgZGVmYXVsdCBpbmZvIGlmIG5lZWRlZCAqLwotCQlp ZiAoIWxpc3RfbWVtYmVyX2ludChjc3RhdGUtPmF0dG51bWxpc3QsIGF0dG51bSkpCisJCWlm ICghbGlzdF9tZW1iZXJfaW50KGNzdGF0ZS0+YXR0bnVtbGlzdCwgYXR0bnVtKSAmJiAhYXR0 LT5hdHRnZW5lcmF0ZWQpCiAJCXsKIAkJCS8qIGF0dHJpYnV0ZSBpcyBOT1QgdG8gYmUgY29w aWVkIGZyb20gaW5wdXQgKi8KIAkJCS8qIHVzZSBkZWZhdWx0IHZhbHVlIGlmIG9uZSBleGlz dHMgKi8KQEAgLTQ5MjAsNiArNDk0MywxMSBAQCBDb3B5QXR0cmlidXRlT3V0Q1NWKENvcHlT dGF0ZSBjc3RhdGUsIGNoYXIgKnN0cmluZywKICAqIG9yIE5JTCBpZiB0aGVyZSB3YXMgbm9u ZSAoaW4gd2hpY2ggY2FzZSB3ZSB3YW50IGFsbCB0aGUgbm9uLWRyb3BwZWQKICAqIGNvbHVt bnMpLgogICoKKyAqIFdlIGRvbid0IGluY2x1ZGUgZ2VuZXJhdGVkIGNvbHVtbnMgaW4gdGhl IGdlbmVyYXRlZCBmdWxsIGxpc3QgYW5kIHdlIGRvbid0CisgKiBhbGxvdyB0aGVtIHRvIGJl IHNwZWNpZmllZCBleHBsaWNpdGx5LiAgVGhleSBkb24ndCBtYWtlIHNlbnNlIGZvciBDT1BZ CisgKiBGUk9NLCBidXQgd2UgY291bGQgcG9zc2libHkgYWxsb3cgdGhlbSBmb3IgQ09QWSBU Ty4gIEJ1dCB0aGlzIHdheSBpdCdzIGF0CisgKiBsZWFzdCBlbnN1cmVkIHRoYXQgd2hhdGV2 ZXIgd2UgY29weSBvdXQgY2FuIGJlIGNvcGllZCBiYWNrIGluLgorICoKICAqIHJlbCBjYW4g YmUgTlVMTCAuLi4gaXQncyBvbmx5IHVzZWQgZm9yIGVycm9yIHJlcG9ydHMuCiAgKi8KIHN0 YXRpYyBMaXN0ICoKQEAgLTQ5MzcsNiArNDk2NSw4IEBAIENvcHlHZXRBdHRudW1zKFR1cGxl RGVzYyB0dXBEZXNjLCBSZWxhdGlvbiByZWwsIExpc3QgKmF0dG5hbWVsaXN0KQogCQl7CiAJ CQlpZiAoVHVwbGVEZXNjQXR0cih0dXBEZXNjLCBpKS0+YXR0aXNkcm9wcGVkKQogCQkJCWNv bnRpbnVlOworCQkJaWYgKFR1cGxlRGVzY0F0dHIodHVwRGVzYywgaSktPmF0dGdlbmVyYXRl ZCkKKwkJCQljb250aW51ZTsKIAkJCWF0dG51bXMgPSBsYXBwZW5kX2ludChhdHRudW1zLCBp ICsgMSk7CiAJCX0KIAl9CkBAIC00OTYxLDYgKzQ5OTEsMTIgQEAgQ29weUdldEF0dG51bXMo VHVwbGVEZXNjIHR1cERlc2MsIFJlbGF0aW9uIHJlbCwgTGlzdCAqYXR0bmFtZWxpc3QpCiAJ CQkJCWNvbnRpbnVlOwogCQkJCWlmIChuYW1lc3RyY21wKCYoYXR0LT5hdHRuYW1lKSwgbmFt ZSkgPT0gMCkKIAkJCQl7CisJCQkJCWlmIChhdHQtPmF0dGdlbmVyYXRlZCkKKwkJCQkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9DT0xVTU5f UkVGRVJFTkNFKSwKKwkJCQkJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBpcyBhIGdlbmVy YXRlZCBjb2x1bW4iLAorCQkJCQkJCQkJCW5hbWUpLAorCQkJCQkJCQkgZXJyZGV0YWlsKCJH ZW5lcmF0ZWQgY29sdW1ucyBjYW5ub3QgYmUgdXNlZCBpbiBDT1BZLiIpKSk7CiAJCQkJCWF0 dG51bSA9IGF0dC0+YXR0bnVtOwogCQkJCQlicmVhazsKIAkJCQl9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2luZGV4Y21kcy5jCmluZGV4IDkwNmQ3MTEzNzguLmMzMzQyYmFhY2MgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2luZGV4Y21kcy5jCkBAIC03NTAsNiArNzUwLDkgQEAgRGVmaW5lSW5kZXgoT2lk IHJlbGF0aW9uSWQsCiAJLyoKIAkgKiBXZSBkaXNhbGxvdyBpbmRleGVzIG9uIHN5c3RlbSBj b2x1bW5zIG90aGVyIHRoYW4gT0lELiAgVGhleSB3b3VsZCBub3QKIAkgKiBuZWNlc3Nhcmls eSBnZXQgdXBkYXRlZCBjb3JyZWN0bHksIGFuZCB0aGV5IGRvbid0IHNlZW0gdXNlZnVsIGFu eXdheS4KKwkgKgorCSAqIEFsc28gZGlzYWxsb3cgdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1u cyBpbiBpbmRleGVzICh1c2UgZXhwcmVzc2lvbgorCSAqIGluZGV4IGluc3RlYWQpLgogCSAq LwogCWZvciAoaSA9IDA7IGkgPCBpbmRleEluZm8tPmlpX051bUluZGV4QXR0cnM7IGkrKykK IAl7CkBAIC03NTksMTAgKzc2MiwxNiBAQCBEZWZpbmVJbmRleChPaWQgcmVsYXRpb25JZCwK IAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKIAkJCQkJIGVycm1zZygiaW5kZXggY3JlYXRpb24gb24gc3lzdGVtIGNv bHVtbnMgaXMgbm90IHN1cHBvcnRlZCIpKSk7CisKKwkJaWYgKFR1cGxlRGVzY0F0dHIoUmVs YXRpb25HZXREZXNjcihyZWwpLCBhdHRubyAtIDEpLT5hdHRnZW5lcmF0ZWQgPT0gQVRUUklC VVRFX0dFTkVSQVRFRF9WSVJUVUFMKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkgZXJybXNnKCJpbmRl eCBjcmVhdGlvbiBvbiB2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW5zIGlzIG5vdCBzdXBwb3J0 ZWQiKSkpOwogCX0KIAogCS8qCi0JICogQWxzbyBjaGVjayBmb3Igc3lzdGVtIGNvbHVtbnMg dXNlZCBpbiBleHByZXNzaW9ucyBvciBwcmVkaWNhdGVzLgorCSAqIEFsc28gY2hlY2sgZm9y IHN5c3RlbSBhbmQgZ2VuZXJhdGVkIGNvbHVtbnMgdXNlZCBpbiBleHByZXNzaW9ucyBvcgor CSAqIHByZWRpY2F0ZXMuCiAJICovCiAJaWYgKGluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnMg fHwgaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUpCiAJewpAQCAtNzgwLDYgKzc4OSwyMiBAQCBE ZWZpbmVJbmRleChPaWQgcmVsYXRpb25JZCwKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVB VFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkJCSBlcnJtc2coImluZGV4IGNyZWF0aW9uIG9u IHN5c3RlbSBjb2x1bW5zIGlzIG5vdCBzdXBwb3J0ZWQiKSkpOwogCQl9CisKKwkJLyoKKwkJ ICogWFhYIFZpcnR1YWwgZ2VuZXJhdGVkIGNvbHVtbnMgaW4gaW5kZXggZXhwcmVzc2lvbnMg b3IgcHJlZGljYXRlcworCQkgKiBjb3VsZCBiZSBzdXBwb3J0ZWQsIGJ1dCBpdCBuZWVkcyBz dXBwb3J0IGluCisJCSAqIFJlbGF0aW9uR2V0SW5kZXhFeHByZXNzaW9ucygpIGFuZCBSZWxh dGlvbkdldEluZGV4UHJlZGljYXRlKCkuCisJCSAqLworCQlpID0gLTE7CisJCXdoaWxlICgo aSA9IGJtc19uZXh0X21lbWJlcihpbmRleGF0dHJzLCBpKSkgPj0gMCkKKwkJeworCQkJQXR0 ck51bWJlciAgYXR0bm8gPSBpICsgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJl cjsKKworCQkJaWYgKFR1cGxlRGVzY0F0dHIoUmVsYXRpb25HZXREZXNjcihyZWwpLCBhdHRu byAtIDEpLT5hdHRnZW5lcmF0ZWQgPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9WSVJUVUFMKQor CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9U X1NVUFBPUlRFRCksCisJCQkJCQkgZXJybXNnKCJpbmRleCBjcmVhdGlvbiBvbiB2aXJ0dWFs IGdlbmVyYXRlZCBjb2x1bW5zIGlzIG5vdCBzdXBwb3J0ZWQiKSkpOworCQl9CiAJfQogCiAJ LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggMTUzYWVjMjYzZS4uNzg3M2Ez ODZhMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTc0Miw2ICs3NDIsOSBA QCBEZWZpbmVSZWxhdGlvbihDcmVhdGVTdG10ICpzdG10LCBjaGFyIHJlbGtpbmQsIE9pZCBv d25lcklkLAogCiAJCWlmIChjb2xEZWYtPmlkZW50aXR5KQogCQkJYXR0ci0+YXR0aWRlbnRp dHkgPSBjb2xEZWYtPmlkZW50aXR5OworCisJCWlmIChjb2xEZWYtPmdlbmVyYXRlZCkKKwkJ CWF0dHItPmF0dGdlbmVyYXRlZCA9IGNvbERlZi0+Z2VuZXJhdGVkOwogCX0KIAogCS8qCkBA IC03ODcsNiArNzkwLDI3IEBAIERlZmluZVJlbGF0aW9uKENyZWF0ZVN0bXQgKnN0bXQsIGNo YXIgcmVsa2luZCwgT2lkIG93bmVySWQsCiAJICovCiAJcmVsID0gcmVsYXRpb25fb3Blbihy ZWxhdGlvbklkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKIAorCS8qCisJICogTm93IGFkZCBh bnkgbmV3bHkgc3BlY2lmaWVkIGNvbHVtbiBkZWZhdWx0IGFuZCBnZW5lcmF0aW9uIGV4cHJl c3Npb25zCisJICogdG8gdGhlIG5ldyByZWxhdGlvbi4gIFRoZXNlIGFyZSBwYXNzZWQgdG8g dXMgaW4gdGhlIGZvcm0gb2YgcmF3CisJICogcGFyc2V0cmVlczsgd2UgbmVlZCB0byB0cmFu c2Zvcm0gdGhlbSB0byBleGVjdXRhYmxlIGV4cHJlc3Npb24gdHJlZXMKKwkgKiBiZWZvcmUg dGhleSBjYW4gYmUgYWRkZWQuIFRoZSBtb3N0IGNvbnZlbmllbnQgd2F5IHRvIGRvIHRoYXQg aXMgdG8KKwkgKiBhcHBseSB0aGUgcGFyc2VyJ3MgdHJhbnNmb3JtRXhwciByb3V0aW5lLCBi dXQgdHJhbnNmb3JtRXhwciBkb2Vzbid0CisJICogd29yayB1bmxlc3Mgd2UgaGF2ZSBhIHBy ZS1leGlzdGluZyByZWxhdGlvbi4gU28sIHRoZSB0cmFuc2Zvcm1hdGlvbiBoYXMKKwkgKiB0 byBiZSBwb3N0cG9uZWQgdG8gdGhpcyBmaW5hbCBzdGVwIG9mIENSRUFURSBUQUJMRS4KKwkg KgorCSAqIFRoaXMgbmVlZHMgdG8gYmUgYmVmb3JlIHByb2Nlc3NpbmcgdGhlIHBhcnRpdGlv bmluZyBjbGF1c2VzIGJlY2F1c2UKKwkgKiB0aG9zZSBjb3VsZCByZWZlciB0byBnZW5lcmF0 ZWQgY29sdW1ucy4KKwkgKi8KKwlpZiAocmF3RGVmYXVsdHMpCisJCUFkZFJlbGF0aW9uTmV3 Q29uc3RyYWludHMocmVsLCByYXdEZWZhdWx0cywgTklMLAorCQkJCQkJCQkgIHRydWUsIHRy dWUsIGZhbHNlLCBxdWVyeVN0cmluZyk7CisKKwkvKgorCSAqIE1ha2UgY29sdW1uIGdlbmVy YXRpb24gZXhwcmVzc2lvbnMgdmlzaWJsZSBmb3IgdXNlIGJ5IHBhcnRpdGlvbmluZy4KKwkg Ki8KKwlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCiAJLyogUHJvY2VzcyBhbmQgc3Rv cmUgcGFydGl0aW9uIGJvdW5kLCBpZiBhbnkuICovCiAJaWYgKHN0bXQtPnBhcnRib3VuZCkK IAl7CkBAIC05NzksMTYgKzEwMDMsMTIgQEAgRGVmaW5lUmVsYXRpb24oQ3JlYXRlU3RtdCAq c3RtdCwgY2hhciByZWxraW5kLCBPaWQgb3duZXJJZCwKIAl9CiAKIAkvKgotCSAqIE5vdyBh ZGQgYW55IG5ld2x5IHNwZWNpZmllZCBjb2x1bW4gZGVmYXVsdCB2YWx1ZXMgYW5kIENIRUNL IGNvbnN0cmFpbnRzCi0JICogdG8gdGhlIG5ldyByZWxhdGlvbi4gIFRoZXNlIGFyZSBwYXNz ZWQgdG8gdXMgaW4gdGhlIGZvcm0gb2YgcmF3Ci0JICogcGFyc2V0cmVlczsgd2UgbmVlZCB0 byB0cmFuc2Zvcm0gdGhlbSB0byBleGVjdXRhYmxlIGV4cHJlc3Npb24gdHJlZXMKLQkgKiBi ZWZvcmUgdGhleSBjYW4gYmUgYWRkZWQuIFRoZSBtb3N0IGNvbnZlbmllbnQgd2F5IHRvIGRv IHRoYXQgaXMgdG8KLQkgKiBhcHBseSB0aGUgcGFyc2VyJ3MgdHJhbnNmb3JtRXhwciByb3V0 aW5lLCBidXQgdHJhbnNmb3JtRXhwciBkb2Vzbid0Ci0JICogd29yayB1bmxlc3Mgd2UgaGF2 ZSBhIHByZS1leGlzdGluZyByZWxhdGlvbi4gU28sIHRoZSB0cmFuc2Zvcm1hdGlvbiBoYXMK LQkgKiB0byBiZSBwb3N0cG9uZWQgdG8gdGhpcyBmaW5hbCBzdGVwIG9mIENSRUFURSBUQUJM RS4KKwkgKiBOb3cgYWRkIGFueSBuZXdseSBzcGVjaWZpZWQgQ0hFQ0sgY29uc3RyYWludHMg dG8gdGhlIG5ldyByZWxhdGlvbi4KKwkgKiBTYW1lIGFzIGZvciBkZWZhdWx0cyBhYm92ZSwg YnV0IHRoZXNlIG5lZWQgdG8gY29tZSBhZnRlciBwYXJ0aXRpb25pbmcKKwkgKiBpcyBzZXQg dXAuCiAJICovCi0JaWYgKHJhd0RlZmF1bHRzIHx8IHN0bXQtPmNvbnN0cmFpbnRzKQotCQlB ZGRSZWxhdGlvbk5ld0NvbnN0cmFpbnRzKHJlbCwgcmF3RGVmYXVsdHMsIHN0bXQtPmNvbnN0 cmFpbnRzLAorCWlmIChzdG10LT5jb25zdHJhaW50cykKKwkJQWRkUmVsYXRpb25OZXdDb25z dHJhaW50cyhyZWwsIE5JTCwgc3RtdC0+Y29uc3RyYWludHMsCiAJCQkJCQkJCSAgdHJ1ZSwg dHJ1ZSwgZmFsc2UsIHF1ZXJ5U3RyaW5nKTsKIAogCU9iamVjdEFkZHJlc3NTZXQoYWRkcmVz cywgUmVsYXRpb25SZWxhdGlvbklkLCByZWxhdGlvbklkKTsKQEAgLTIxNTIsNiArMjE3Miwx MyBAQCBNZXJnZUF0dHJpYnV0ZXMoTGlzdCAqc2NoZW1hLCBMaXN0ICpzdXBlcnMsIGNoYXIg cmVscGVyc2lzdGVuY2UsCiAJCQkJZGVmLT5pc19ub3RfbnVsbCB8PSBhdHRyaWJ1dGUtPmF0 dG5vdG51bGw7CiAJCQkJLyogRGVmYXVsdCBhbmQgb3RoZXIgY29uc3RyYWludHMgYXJlIGhh bmRsZWQgYmVsb3cgKi8KIAkJCQluZXdhdHRub1twYXJlbnRfYXR0bm8gLSAxXSA9IGV4aXN0 X2F0dG5vOworCisJCQkJLyogQ2hlY2sgZm9yIEdFTkVSQVRFRCBjb25mbGljdHMgKi8KKwkJ CQlpZiAoZGVmLT5nZW5lcmF0ZWQgIT0gYXR0cmlidXRlLT5hdHRnZW5lcmF0ZWQpCisJCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNN QVRDSCksCisJCQkJCQkJIGVycm1zZygiaW5oZXJpdGVkIGNvbHVtbiBcIiVzXCIgaGFzIGEg Z2VuZXJhdGlvbiBjb25mbGljdCIsCisJCQkJCQkJCQlhdHRyaWJ1dGVOYW1lKSkpOwogCQkJ fQogCQkJZWxzZQogCQkJewpAQCAtMjE3MCw2ICsyMTk3LDcgQEAgTWVyZ2VBdHRyaWJ1dGVz KExpc3QgKnNjaGVtYSwgTGlzdCAqc3VwZXJzLCBjaGFyIHJlbHBlcnNpc3RlbmNlLAogCQkJ CWRlZi0+c3RvcmFnZSA9IGF0dHJpYnV0ZS0+YXR0c3RvcmFnZTsKIAkJCQlkZWYtPnJhd19k ZWZhdWx0ID0gTlVMTDsKIAkJCQlkZWYtPmNvb2tlZF9kZWZhdWx0ID0gTlVMTDsKKwkJCQlk ZWYtPmdlbmVyYXRlZCA9IGF0dHJpYnV0ZS0+YXR0Z2VuZXJhdGVkOwogCQkJCWRlZi0+Y29s bENsYXVzZSA9IE5VTEw7CiAJCQkJZGVmLT5jb2xsT2lkID0gYXR0cmlidXRlLT5hdHRjb2xs YXRpb247CiAJCQkJZGVmLT5jb25zdHJhaW50cyA9IE5JTDsKQEAgLTQ2MzcsNyArNDY2NSw5 IEBAIEFUUmV3cml0ZVRhYmxlKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgT2lkIE9JRE5ld0hl YXAsIExPQ0tNT0RFIGxvY2ttb2RlKQogCQl7CiAJCQljYXNlIENPTlNUUl9DSEVDSzoKIAkJ CQluZWVkc2NhbiA9IHRydWU7Ci0JCQkJY29uLT5xdWFsc3RhdGUgPSBFeGVjUHJlcGFyZUV4 cHIoKEV4cHIgKikgY29uLT5xdWFsLCBlc3RhdGUpOworCQkJCWNvbi0+cXVhbHN0YXRlID0g RXhlY1ByZXBhcmVFeHByKChFeHByICopIGV4cGFuZF9nZW5lcmF0ZWRfY29sdW1uc19pbl9l eHByKGNvbi0+cXVhbCwKKwkJCQkJCQkJCQkJCQkJCQkJCQkJICBuZXdyZWwgPyBuZXdyZWwg OiBvbGRyZWwpLAorCQkJCQkJCQkJCQkJIGVzdGF0ZSk7CiAJCQkJYnJlYWs7CiAJCQljYXNl IENPTlNUUl9GT1JFSUdOOgogCQkJCS8qIE5vdGhpbmcgdG8gZG8gaGVyZSAqLwpAQCAtNTUz Niw2ICs1NTY2LDcgQEAgQVRFeGVjQWRkQ29sdW1uKExpc3QgKip3cXVldWUsIEFsdGVyZWRU YWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCWF0dHJpYnV0ZS5hdHRoYXNkZWYgPSBm YWxzZTsKIAlhdHRyaWJ1dGUuYXR0aGFzbWlzc2luZyA9IGZhbHNlOwogCWF0dHJpYnV0ZS5h dHRpZGVudGl0eSA9IGNvbERlZi0+aWRlbnRpdHk7CisJYXR0cmlidXRlLmF0dGdlbmVyYXRl ZCA9IGNvbERlZi0+Z2VuZXJhdGVkOwogCWF0dHJpYnV0ZS5hdHRpc2Ryb3BwZWQgPSBmYWxz ZTsKIAlhdHRyaWJ1dGUuYXR0aXNsb2NhbCA9IGNvbERlZi0+aXNfbG9jYWw7CiAJYXR0cmli dXRlLmF0dGluaGNvdW50ID0gY29sRGVmLT5pbmhjb3VudDsKQEAgLTU5NDUsNiArNTk3Niwx OCBAQCBBVEV4ZWNEcm9wTm90TnVsbChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbE5h bWUsIExPQ0tNT0RFIGxvY2ttb2RlKQogCQkJCSBlcnJtc2coImNhbm5vdCBhbHRlciBzeXN0 ZW0gY29sdW1uIFwiJXNcIiIsCiAJCQkJCQljb2xOYW1lKSkpOwogCisJLyoKKwkgKiBWaXJ0 dWFsIGdlbmVyYXRlZCBjb2x1bW5zIGRvbid0IHVzZSB0aGUgYXR0bm90bnVsbCBmaWVsZCBi dXQgdXNlIGEgZnVsbAorCSAqIENIRUNLIGNvbnN0cmFpbnQgaW5zdGVhZC4gIFdlIGNvdWxk IGltcGxlbWVudCBoZXJlIHRoYXQgaXQgZmluZHMgdGhhdAorCSAqIENIRUNLIGNvbnN0cmFp bnQgYW5kIGRyb3BzIGl0LCB3aGljaCBpcyBraW5kIG9mIHdoYXQgdGhlIFNRTCBzdGFuZGFy ZAorCSAqIHdvdWxkIHJlcXVpcmUgYW55d2F5LCBidXQgdGhhdCB3b3VsZCBiZSBxdWl0ZSBh IGJpdCBtb3JlIHdvcmsuCisJICovCisJaWYgKGF0dFR1cC0+YXR0Z2VuZXJhdGVkID09IEFU VFJJQlVURV9HRU5FUkFURURfVklSVFVBTCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiY2Fu bm90IHVzZSBEUk9QIE5PVCBOVUxMIG9uIHZpcnR1YWwgZ2VuZXJhdGVkIGNvbHVtbiBcIiVz XCIiLAorCQkJCQkJY29sTmFtZSkpKTsKKwogCWlmIChhdHRUdXAtPmF0dGlkZW50aXR5KQog CQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwK QEAgLTYwOTMsNiArNjEzNiwxNyBAQCBBVEV4ZWNTZXROb3ROdWxsKEFsdGVyZWRUYWJsZUlu Zm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJCSBlcnJtc2coImNhbm5vdCBhbHRlciBzeXN0 ZW0gY29sdW1uIFwiJXNcIiIsCiAJCQkJCQljb2xOYW1lKSkpOwogCisJLyoKKwkgKiBYWFgg V2UgbWlnaHQgd2FudCB0byBjb252ZXJ0IHRoaXMgdG8gYSBDSEVDSyBjb25zdHJhaW50IGxp a2Ugd2UgZG8gaW4KKwkgKiB0cmFuc2Zvcm1Db2x1bW5EZWZpbml0aW9uKCkuCisJICovCisJ aWYgKCgoRm9ybV9wZ19hdHRyaWJ1dGUpIEdFVFNUUlVDVCh0dXBsZSkpLT5hdHRnZW5lcmF0 ZWQgPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9WSVJUVUFMKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJy bXNnKCJjYW5ub3QgdXNlIFNFVCBOT1QgTlVMTCBvbiB2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1 bW4gXCIlc1wiIiwKKwkJCQkJCWNvbE5hbWUpLAorCQkJCSBlcnJoaW50KCJBZGQgYSBDSEVD SyBjb25zdHJhaW50IGluc3RlYWQuIikpKTsKKwogCS8qCiAJICogT2theSwgYWN0dWFsbHkg cGVyZm9ybSB0aGUgY2F0YWxvZyBjaGFuZ2UgLi4uIGlmIG5lZWRlZAogCSAqLwpAQCAtNjE1 Niw2ICs2MjEwLDEyIEBAIEFURXhlY0NvbHVtbkRlZmF1bHQoUmVsYXRpb24gcmVsLCBjb25z dCBjaGFyICpjb2xOYW1lLAogCQkJCQkJY29sTmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUocmVsKSksCiAJCQkJIG5ld0RlZmF1bHQgPyAwIDogZXJyaGludCgiVXNlIEFMVEVSIFRB QkxFIC4uLiBBTFRFUiBDT0xVTU4gLi4uIERST1AgSURFTlRJVFkgaW5zdGVhZC4iKSkpOwog CisJaWYgKFR1cGxlRGVzY0F0dHIodHVwZGVzYywgYXR0bnVtIC0gMSktPmF0dGdlbmVyYXRl ZCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCisJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgaXMg YSBnZW5lcmF0ZWQgY29sdW1uIiwKKwkJCQkJCWNvbE5hbWUsIFJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHJlbCkpKSk7CisKIAkvKgogCSAqIFJlbW92ZSBhbnkgb2xkIGRlZmF1bHQgZm9y IHRoZSBjb2x1bW4uICBXZSB1c2UgUkVTVFJJQ1QgaGVyZSBmb3IKIAkgKiBzYWZldHksIGJ1 dCBhdCBwcmVzZW50IHdlIGRvIG5vdCBleHBlY3QgYW55dGhpbmcgdG8gZGVwZW5kIG9uIHRo ZQpAQCAtNzQ3MCw2ICs3NTMwLDQxIEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlz dCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJICov CiAJY2hlY2tGa2V5UGVybWlzc2lvbnMocGtyZWwsIHBrYXR0bnVtLCBudW1wa3MpOwogCisJ LyoKKwkgKiBDaGVjayBzb21lIHRoaW5ncyBmb3IgZ2VuZXJhdGVkIGNvbHVtbnMuCisJICov CisJZm9yIChpID0gMDsgaSA8IG51bWZrczsgaSsrKQorCXsKKwkJY2hhcgkJYXR0Z2VuZXJh dGVkID0gVHVwbGVEZXNjQXR0cihSZWxhdGlvbkdldERlc2NyKHJlbCksIGZrYXR0bnVtW2ld IC0gMSktPmF0dGdlbmVyYXRlZDsKKworCQlpZiAoYXR0Z2VuZXJhdGVkKQorCQl7CisJCQkv KgorCQkJICogQ2hlY2sgcmVzdHJpY3Rpb25zIG9uIFVQREFURS9ERUxFVEUgYWN0aW9ucywg cGVyIFNRTCBzdGFuZGFyZAorCQkJICovCisJCQlpZiAoZmtjb25zdHJhaW50LT5ma191cGRf YWN0aW9uID09IEZLQ09OU1RSX0FDVElPTl9TRVROVUxMIHx8CisJCQkJZmtjb25zdHJhaW50 LT5ma191cGRfYWN0aW9uID09IEZLQ09OU1RSX0FDVElPTl9TRVRERUZBVUxUIHx8CisJCQkJ Zmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9uID09IEZLQ09OU1RSX0FDVElPTl9DQVNDQURF KQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9F UlJPUiksCisJCQkJCQkgZXJybXNnKCJpbnZhbGlkIE9OIFVQREFURSBhY3Rpb24gZm9yIGZv cmVpZ24ga2V5IGNvbnN0cmFpbnQgY29udGFpbmluZyBnZW5lcmF0ZWQgY29sdW1uIikpKTsK KwkJCWlmIChma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rpb24gPT0gRktDT05TVFJfQUNUSU9O X1NFVE5VTEwgfHwKKwkJCQlma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rpb24gPT0gRktDT05T VFJfQUNUSU9OX1NFVERFRkFVTFQpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJj b2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2coImludmFsaWQgT04g REVMRVRFIGFjdGlvbiBmb3IgZm9yZWlnbiBrZXkgY29uc3RyYWludCBjb250YWluaW5nIGdl bmVyYXRlZCBjb2x1bW4iKSkpOworCQl9CisKKwkJLyoKKwkJICogRktzIG9uIHZpcnR1YWwg Y29sdW1ucyBhcmUgbm90IHN1cHBvcnRlZCwgZG9lcyBub3QgaGF2ZSBzdXBwb3J0IGluCisJ CSAqIHJpX3RyaWdnZXJzLmMKKwkJICovCisJCWlmIChhdHRnZW5lcmF0ZWQgPT0gQVRUUklC VVRFX0dFTkVSQVRFRF9WSVJUVUFMKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkgZXJybXNnKCJmb3Jl aWduIGtleSBjb25zdHJhaW50cyBvbiB2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW5zIGFyZSBu b3Qgc3VwcG9ydGVkIikpKTsKKwl9CisKIAkvKgogCSAqIExvb2sgdXAgdGhlIGVxdWFsaXR5 IG9wZXJhdG9ycyB0byB1c2UgaW4gdGhlIGNvbnN0cmFpbnQuCiAJICoKQEAgLTg0NzUsNyAr ODU3MCw3IEBAIHZhbGlkYXRlQ2hlY2tDb25zdHJhaW50KFJlbGF0aW9uIHJlbCwgSGVhcFR1 cGxlIGNvbnN0cnR1cCkKIAlFU3RhdGUJICAgKmVzdGF0ZTsKIAlEYXR1bQkJdmFsOwogCWNo YXIJICAgKmNvbmJpbjsKLQlFeHByCSAgICpvcmlnZXhwcjsKKwlOb2RlCSAgICpvcmlnZXhw cjsKIAlFeHByU3RhdGUgICpleHByc3RhdGU7CiAJVHVwbGVEZXNjCXR1cGRlc2M7CiAJSGVh cFNjYW5EZXNjIHNjYW47CkBAIC04NTEwLDggKzg2MDUsOCBAQCB2YWxpZGF0ZUNoZWNrQ29u c3RyYWludChSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSBjb25zdHJ0dXApCiAJCWVsb2coRVJS T1IsICJudWxsIGNvbmJpbiBmb3IgY29uc3RyYWludCAldSIsCiAJCQkgSGVhcFR1cGxlR2V0 T2lkKGNvbnN0cnR1cCkpOwogCWNvbmJpbiA9IFRleHREYXR1bUdldENTdHJpbmcodmFsKTsK LQlvcmlnZXhwciA9IChFeHByICopIHN0cmluZ1RvTm9kZShjb25iaW4pOwotCWV4cHJzdGF0 ZSA9IEV4ZWNQcmVwYXJlRXhwcihvcmlnZXhwciwgZXN0YXRlKTsKKwlvcmlnZXhwciA9IHN0 cmluZ1RvTm9kZShjb25iaW4pOworCWV4cHJzdGF0ZSA9IEV4ZWNQcmVwYXJlRXhwcigoRXhw ciAqKSBleHBhbmRfZ2VuZXJhdGVkX2NvbHVtbnNfaW5fZXhwcihvcmlnZXhwciwgcmVsKSwg ZXN0YXRlKTsKIAogCWVjb250ZXh0ID0gR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUp OwogCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7CkBAIC05MTYwLDggKzkyNTUs OSBAQCBBVFByZXBBbHRlckNvbHVtblR5cGUoTGlzdCAqKndxdWV1ZSwKIAkJCQkJICAgbGlz dF9tYWtlMV9vaWQocmVsLT5yZF9yZWwtPnJlbHR5cGUpLAogCQkJCQkgICBmYWxzZSk7CiAK LQlpZiAodGFiLT5yZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04gfHwKLQkJdGFiLT5yZWxr aW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJaWYgKCh0YWItPnJlbGtpbmQg PT0gUkVMS0lORF9SRUxBVElPTiB8fAorCQkgdGFiLT5yZWxraW5kID09IFJFTEtJTkRfUEFS VElUSU9ORURfVEFCTEUpICYmCisJCWF0dFR1cC0+YXR0Z2VuZXJhdGVkICE9IEFUVFJJQlVU RV9HRU5FUkFURURfVklSVFVBTCkKIAl7CiAJCS8qCiAJCSAqIFNldCB1cCBhbiBleHByZXNz aW9uIHRvIHRyYW5zZm9ybSB0aGUgb2xkIGRhdGEgdmFsdWUgdG8gdGhlIG5ldwpAQCAtOTQz NSwxMCArOTUzMSwxOCBAQCBBVEV4ZWNBbHRlckNvbHVtblR5cGUoQWx0ZXJlZFRhYmxlSW5m byAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJCUNPRVJDRV9JTVBMSUNJVF9DQVNU LAogCQkJCQkJCQkJCQktMSk7CiAJCWlmIChkZWZhdWx0ZXhwciA9PSBOVUxMKQotCQkJZXJl cG9ydChFUlJPUiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCks Ci0JCQkJCSBlcnJtc2coImRlZmF1bHQgZm9yIGNvbHVtbiBcIiVzXCIgY2Fubm90IGJlIGNh c3QgYXV0b21hdGljYWxseSB0byB0eXBlICVzIiwKLQkJCQkJCQljb2xOYW1lLCBmb3JtYXRf dHlwZV9iZSh0YXJnZXR0eXBlKSkpKTsKKwkJeworCQkJaWYgKGF0dFR1cC0+YXR0Z2VuZXJh dGVkKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFU WVBFX01JU01BVENIKSwKKwkJCQkJCSBlcnJtc2coImdlbmVyYXRpb24gZXhwcmVzc2lvbiBm b3IgY29sdW1uIFwiJXNcIiBjYW5ub3QgYmUgY2FzdCBhdXRvbWF0aWNhbGx5IHRvIHR5cGUg JXMiLAorCQkJCQkJCQljb2xOYW1lLCBmb3JtYXRfdHlwZV9iZSh0YXJnZXR0eXBlKSkpKTsK KwkJCWVsc2UKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9E QVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCQkgZXJybXNnKCJkZWZhdWx0IGZvciBjb2x1bW4g XCIlc1wiIGNhbm5vdCBiZSBjYXN0IGF1dG9tYXRpY2FsbHkgdG8gdHlwZSAlcyIsCisJCQkJ CQkJCWNvbE5hbWUsIGZvcm1hdF90eXBlX2JlKHRhcmdldHR5cGUpKSkpOworCQl9CiAJfQog CWVsc2UKIAkJZGVmYXVsdGV4cHIgPSBOVUxMOwpAQCAtOTUxNCw2ICs5NjE4LDIxIEBAIEFU RXhlY0FsdGVyQ29sdW1uVHlwZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJl bCwKIAkJCQkJCSAqLwogCQkJCQkJQXNzZXJ0KGZvdW5kT2JqZWN0Lm9iamVjdFN1YklkID09 IDApOwogCQkJCQl9CisJCQkJCWVsc2UgaWYgKHJlbEtpbmQgPT0gUkVMS0lORF9SRUxBVElP TiAmJgorCQkJCQkJCSBmb3VuZE9iamVjdC5vYmplY3RTdWJJZCAhPSAwICYmCisJCQkJCQkJ IGdldF9hdHRnZW5lcmF0ZWQoZm91bmRPYmplY3Qub2JqZWN0SWQsIGZvdW5kT2JqZWN0Lm9i amVjdFN1YklkKSkKKwkJCQkJeworCQkJCQkJLyoKKwkJCQkJCSAqIENoYW5naW5nIHRoZSB0 eXBlIG9mIGEgY29sdW1uIHRoYXQgaXMgdXNlZCBieSBhCisJCQkJCQkgKiBnZW5lcmF0ZWQg Y29sdW1uIGlzIG5vdCBhbGxvd2VkIGJ5IFNRTCBzdGFuZGFyZC4KKwkJCQkJCSAqIEl0IG1p Z2h0IGJlIGRvYWJsZSB3aXRoIHNvbWUgdGhpbmtpbmcgYW5kIGVmZm9ydC4KKwkJCQkJCSAq LworCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5U QVhfRVJST1IpLAorCQkJCQkJCQkgZXJybXNnKCJjYW5ub3QgYWx0ZXIgdHlwZSBvZiBhIGNv bHVtbiB1c2VkIGJ5IGEgZ2VuZXJhdGVkIGNvbHVtbiIpLAorCQkJCQkJCQkgZXJyZGV0YWls KCJDb2x1bW4gXCIlc1wiIGlzIHVzZWQgYnkgZ2VuZXJhdGVkIGNvbHVtbiBcIiVzXCIuIiwK KwkJCQkJCQkJCQkgICBjb2xOYW1lLCBnZXRfYXR0bmFtZShmb3VuZE9iamVjdC5vYmplY3RJ ZCwgZm91bmRPYmplY3Qub2JqZWN0U3ViSWQsIGZhbHNlKSkpKTsKKwkJCQkJfQogCQkJCQll bHNlCiAJCQkJCXsKIAkJCQkJCS8qIE5vdCBleHBlY3RpbmcgYW55IG90aGVyIGRpcmVjdCBk ZXBlbmRlbmNpZXMuLi4gKi8KQEAgLTk2NTgsNyArOTc3Nyw4IEBAIEFURXhlY0FsdGVyQ29s dW1uVHlwZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkvKgogCSAq IE5vdyBzY2FuIGZvciBkZXBlbmRlbmNpZXMgb2YgdGhpcyBjb2x1bW4gb24gb3RoZXIgdGhp bmdzLiAgVGhlIG9ubHkKIAkgKiB0aGluZyB3ZSBzaG91bGQgZmluZCBpcyB0aGUgZGVwZW5k ZW5jeSBvbiB0aGUgY29sdW1uIGRhdGF0eXBlLCB3aGljaCB3ZQotCSAqIHdhbnQgdG8gcmVt b3ZlLCBhbmQgcG9zc2libHkgYSBjb2xsYXRpb24gZGVwZW5kZW5jeS4KKwkgKiB3YW50IHRv IHJlbW92ZSwgcG9zc2libHkgYSBjb2xsYXRpb24gZGVwZW5kZW5jeSwgYW5kIGRlcGVuZGVu Y2llcyBvbgorCSAqIG90aGVyIGNvbHVtbnMgaWYgaXQgaXMgYSBnZW5lcmF0ZWQgY29sdW1u LgogCSAqLwogCVNjYW5LZXlJbml0KCZrZXlbMF0sCiAJCQkJQW51bV9wZ19kZXBlbmRfY2xh c3NpZCwKQEAgLTk2NzksMTUgKzk3OTksMjYgQEAgQVRFeGVjQWx0ZXJDb2x1bW5UeXBlKEFs dGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCXdoaWxlIChIZWFwVHVwbGVJ c1ZhbGlkKGRlcFR1cCA9IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQogCXsKIAkJRm9ybV9w Z19kZXBlbmQgZm91bmREZXAgPSAoRm9ybV9wZ19kZXBlbmQpIEdFVFNUUlVDVChkZXBUdXAp OworCQlPYmplY3RBZGRyZXNzIGZvdW5kT2JqZWN0OwogCi0JCWlmIChmb3VuZERlcC0+ZGVw dHlwZSAhPSBERVBFTkRFTkNZX05PUk1BTCkKKwkJZm91bmRPYmplY3QuY2xhc3NJZCA9IGZv dW5kRGVwLT5yZWZjbGFzc2lkOworCQlmb3VuZE9iamVjdC5vYmplY3RJZCA9IGZvdW5kRGVw LT5yZWZvYmppZDsKKwkJZm91bmRPYmplY3Qub2JqZWN0U3ViSWQgPSBmb3VuZERlcC0+cmVm b2Jqc3ViaWQ7CisKKwkJaWYgKGZvdW5kRGVwLT5kZXB0eXBlICE9IERFUEVOREVOQ1lfTk9S TUFMICYmCisJCQlmb3VuZERlcC0+ZGVwdHlwZSAhPSBERVBFTkRFTkNZX0FVVE8pCiAJCQll bG9nKEVSUk9SLCAiZm91bmQgdW5leHBlY3RlZCBkZXBlbmRlbmN5IHR5cGUgJyVjJyIsCiAJ CQkJIGZvdW5kRGVwLT5kZXB0eXBlKTsKIAkJaWYgKCEoZm91bmREZXAtPnJlZmNsYXNzaWQg PT0gVHlwZVJlbGF0aW9uSWQgJiYKIAkJCSAgZm91bmREZXAtPnJlZm9iamlkID09IGF0dFR1 cC0+YXR0dHlwaWQpICYmCiAJCQkhKGZvdW5kRGVwLT5yZWZjbGFzc2lkID09IENvbGxhdGlv blJlbGF0aW9uSWQgJiYKLQkJCSAgZm91bmREZXAtPnJlZm9iamlkID09IGF0dFR1cC0+YXR0 Y29sbGF0aW9uKSkKLQkJCWVsb2coRVJST1IsICJmb3VuZCB1bmV4cGVjdGVkIGRlcGVuZGVu Y3kgZm9yIGNvbHVtbiIpOworCQkJICBmb3VuZERlcC0+cmVmb2JqaWQgPT0gYXR0VHVwLT5h dHRjb2xsYXRpb24pICYmCisJCQkhKGZvdW5kRGVwLT5yZWZjbGFzc2lkID09IFJlbGF0aW9u UmVsYXRpb25JZCAmJgorCQkJICBmb3VuZERlcC0+cmVmb2JqaWQgPT0gUmVsYXRpb25HZXRS ZWxpZChyZWwpICYmCisJCQkgIGZvdW5kRGVwLT5yZWZvYmpzdWJpZCAhPSAwKQorCQkJKQor CQkJZWxvZyhFUlJPUiwgImZvdW5kIHVuZXhwZWN0ZWQgZGVwZW5kZW5jeSBmb3IgY29sdW1u OiAlcyIsCisJCQkJIGdldE9iamVjdERlc2NyaXB0aW9uKCZmb3VuZE9iamVjdCkpOwogCiAJ CUNhdGFsb2dUdXBsZURlbGV0ZShkZXBSZWwsICZkZXBUdXAtPnRfc2VsZik7CiAJfQpAQCAt MTM3MTYsNiArMTM4NDcsMTggQEAgQ29tcHV0ZVBhcnRpdGlvbkF0dHJzKFBhcnNlU3RhdGUg KnBzdGF0ZSwgUmVsYXRpb24gcmVsLCBMaXN0ICpwYXJ0UGFyYW1zLCBBdHRyTnUKIAkJCQkJ CQkJcGVsZW0tPm5hbWUpLAogCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHBl bGVtLT5sb2NhdGlvbikpKTsKIAorCQkJLyoKKwkJCSAqIFNvbWUgZ2VuZXJhdGVkIGNvbHVt bnMgY291bGQgcGVyaGFwcyBiZSBzdXBwb3J0ZWQgaW4gcGFydGl0aW9uCisJCQkgKiBleHBy ZXNzaW9ucyBpbnN0ZWFkOyBzZWUgYmVsb3cuCisJCQkgKi8KKwkJCWlmIChhdHRmb3JtLT5h dHRnZW5lcmF0ZWQpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2coInVzaW5nIGdlbmVy YXRlZCBjb2x1bW4gaW4gcGFydGl0aW9uIGtleSBpcyBub3Qgc3VwcG9ydGVkIiksCisJCQkJ CQkgZXJyZGV0YWlsKCJDb2x1bW4gXCIlc1wiIGlzIGEgZ2VuZXJhdGVkIGNvbHVtbi4iLAor CQkJCQkJCQkgICBwZWxlbS0+bmFtZSksCisJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBz dGF0ZSwgcGVsZW0tPmxvY2F0aW9uKSkpOworCiAJCQlwYXJ0YXR0cnNbYXR0bl0gPSBhdHRm b3JtLT5hdHRudW07CiAJCQlhdHR0eXBlID0gYXR0Zm9ybS0+YXR0dHlwaWQ7CiAJCQlhdHRj b2xsYXRpb24gPSBhdHRmb3JtLT5hdHRjb2xsYXRpb247CkBAIC0xMzgwMyw2ICsxMzk0Niwz NiBAQCBDb21wdXRlUGFydGl0aW9uQXR0cnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBSZWxhdGlv biByZWwsIExpc3QgKnBhcnRQYXJhbXMsIEF0dHJOdQogCQkJCQkJCQkgZXJybXNnKCJwYXJ0 aXRpb24ga2V5IGV4cHJlc3Npb25zIGNhbm5vdCBjb250YWluIHN5c3RlbSBjb2x1bW4gcmVm ZXJlbmNlcyIpKSk7CiAJCQkJfQogCisJCQkJLyoKKwkJCQkgKiBHZW5lcmF0ZWQgY29sdW1u cyBpbiBwYXJ0aXRpb24ga2V5IGV4cHJlc3Npb25zOgorCQkJCSAqCisJCQkJICogLSBTdG9y ZWQgZ2VuZXJhdGVkIGNvbHVtbnMgY2Fubm90IHdvcms6IFRoZXkgYXJlIGNvbXB1dGVkCisJ CQkJICogICBhZnRlciBCRUZPUkUgdHJpZ2dlcnMsIGJ1dCBwYXJ0aXRpb24gcm91dGluZyBp cyBkb25lCisJCQkJICogICBiZWZvcmUgYWxsIHRyaWdnZXJzLgorCQkJCSAqCisJCQkJICog LSBWaXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW5zIGNvdWxkIHdvcmsuICBCdXQgdGhlcmUgaXMg YQorCQkJCSAqICAgcHJvYmxlbSB3aGVuIGRyb3BwaW5nIHN1Y2ggYSB0YWJsZTogRHJvcHBp bmcgYSB0YWJsZQorCQkJCSAqICAgY2FsbHMgcmVsYXRpb25fb3BlbigpLCB3aGljaCBjYXVz ZXMgcGFydGl0aW9uIGtleXMgdG8gYmUKKwkJCQkgKiAgIGNvbnN0cnVjdGVkIGZvciB0aGUg cGFydGNhY2hlLCBidXQgYXQgdGhhdCBwb2ludCB0aGUKKwkJCQkgKiAgIGdlbmVyYXRpb24g ZXhwcmVzc2lvbiBpcyBhbHJlYWR5IGRlbGV0ZWQgKHRocm91Z2gKKwkJCQkgKiAgIGRlcGVu ZGVuY2llcyksIHNvIHRoaXMgd2lsbCBmYWlsLiAgU28gaWYgeW91IHJlbW92ZSB0aGUKKwkJ CQkgKiAgIHJlc3RyaWN0aW9uIGJlbG93LCB0aGluZ3Mgd2lsbCBhcHBlYXIgdG8gd29yaywg YnV0IHlvdQorCQkJCSAqICAgY2FuJ3QgZHJvcCB0aGUgdGFibGUuIDotKAorCQkJCSAqLwor CQkJCWkgPSAtMTsKKwkJCQl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIoZXhwcl9hdHRy cywgaSkpID49IDApCisJCQkJeworCQkJCQlBdHRyTnVtYmVyICBhdHRubyA9IGkgKyBGaXJz dExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOworCisJCQkJCWlmIChUdXBsZURlc2NB dHRyKFJlbGF0aW9uR2V0RGVzY3IocmVsKSwgYXR0bm8gLSAxKS0+YXR0Z2VuZXJhdGVkKQor CQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAorCQkJCQkJCQkgZXJybXNnKCJ1c2luZyBnZW5lcmF0ZWQgY29s dW1uIGluIHBhcnRpdGlvbiBrZXkgaXMgbm90IHN1cHBvcnRlZCIpLAorCQkJCQkJCQkgZXJy ZGV0YWlsKCJDb2x1bW4gXCIlc1wiIGlzIGEgZ2VuZXJhdGVkIGNvbHVtbi4iLAorCQkJCQkJ CQkJCSAgIGdldF9hdHRuYW1lKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgYXR0bm8sIGZhbHNl KSksCisJCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBwZWxlbS0+bG9jYXRp b24pKSk7CisJCQkJfQorCiAJCQkJLyoKIAkJCQkgKiBXaGlsZSBpdCBpcyBub3QgZXhhY3Rs eSAqd3JvbmcqIGZvciBhIHBhcnRpdGlvbiBleHByZXNzaW9uCiAJCQkJICogdG8gYmUgYSBj b25zdGFudCwgaXQgc2VlbXMgYmV0dGVyIHRvIHJlamVjdCBzdWNoIGtleXMuCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy90cmlnZ2VyLmMKaW5kZXggMjQwZTg1ZTM5MS4uMGQyNjI4MjMyNCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RyaWdnZXIuYwpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgInBhcnNlci9w YXJzZV9yZWxhdGlvbi5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKICNpbmNs dWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgiCiAj aW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1 Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgpAQCAtMTAyLDYgKzEwMyw3IEBA IHN0YXRpYyB2b2lkIEFmdGVyVHJpZ2dlclNhdmVFdmVudChFU3RhdGUgKmVzdGF0ZSwgUmVz dWx0UmVsSW5mbyAqcmVsaW5mbywKIAkJCQkJICBUcmFuc2l0aW9uQ2FwdHVyZVN0YXRlICp0 cmFuc2l0aW9uX2NhcHR1cmUpOwogc3RhdGljIHZvaWQgQWZ0ZXJUcmlnZ2VyRW5sYXJnZVF1 ZXJ5U3RhdGUodm9pZCk7CiBzdGF0aWMgYm9vbCBiZWZvcmVfc3RtdF90cmlnZ2Vyc19maXJl ZChPaWQgcmVsaWQsIENtZFR5cGUgY21kVHlwZSk7CitzdGF0aWMgdm9pZCBjaGVja19tb2Rp ZmllZF92aXJ0dWFsX2dlbmVyYXRlZChUdXBsZURlc2MgdHVwZGVzYywgSGVhcFR1cGxlIHR1 cGxlKTsKIAogCiAvKgpAQCAtNjM4LDYgKzY0MCwxMSBAQCBDcmVhdGVUcmlnZ2VyKENyZWF0 ZVRyaWdTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCQkJCQkgZXJybXNn KCJCRUZPUkUgdHJpZ2dlcidzIFdIRU4gY29uZGl0aW9uIGNhbm5vdCByZWZlcmVuY2UgTkVX IHN5c3RlbSBjb2x1bW5zIiksCiAJCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LCB2YXItPmxvY2F0aW9uKSkpOworCQkJCQlpZiAoVHVwbGVEZXNjQXR0cihSZWxhdGlvbkdl dERlc2NyKHJlbCksIHZhci0+dmFyYXR0bm8gLSAxKS0+YXR0Z2VuZXJhdGVkICYmIFRSSUdH RVJfRk9SX0JFRk9SRSh0Z3R5cGUpKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJCQkgZXJy bXNnKCJCRUZPUkUgdHJpZ2dlcidzIFdIRU4gY29uZGl0aW9uIGNhbm5vdCByZWZlcmVuY2Ug TkVXIGdlbmVyYXRlZCBjb2x1bW5zIiksCisJCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24o cHN0YXRlLCB2YXItPmxvY2F0aW9uKSkpOwogCQkJCQlicmVhazsKIAkJCQlkZWZhdWx0Ogog CQkJCQkvKiBjYW4ndCBoYXBwZW4gd2l0aG91dCBhZGRfbWlzc2luZ19mcm9tLCBzbyBqdXN0 IGVsb2cgKi8KQEAgLTI1NzEsNiArMjU3OCw4IEBAIEV4ZWNCUkluc2VydFRyaWdnZXJzKEVT dGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogCQlUdXBsZVRhYmxlU2xv dCAqbmV3c2xvdCA9IGVzdGF0ZS0+ZXNfdHJpZ190dXBsZV9zbG90OwogCQlUdXBsZURlc2MJ dHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsaW5mby0+cmlfUmVsYXRpb25EZXNjKTsK IAorCQljaGVja19tb2RpZmllZF92aXJ0dWFsX2dlbmVyYXRlZCh0dXBkZXNjLCBuZXd0dXBs ZSk7CisKIAkJaWYgKG5ld3Nsb3QtPnR0c190dXBsZURlc2NyaXB0b3IgIT0gdHVwZGVzYykK IAkJCUV4ZWNTZXRTbG90RGVzY3JpcHRvcihuZXdzbG90LCB0dXBkZXNjKTsKIAkJRXhlY1N0 b3JlSGVhcFR1cGxlKG5ld3R1cGxlLCBuZXdzbG90LCBmYWxzZSk7CkBAIC0zMDc4LDYgKzMw ODcsOCBAQCBFeGVjQlJVcGRhdGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgRVBRU3RhdGUg KmVwcXN0YXRlLAogCQlUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCA9IGVzdGF0ZS0+ZXNfdHJp Z190dXBsZV9zbG90OwogCQlUdXBsZURlc2MJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3Io cmVsaW5mby0+cmlfUmVsYXRpb25EZXNjKTsKIAorCQljaGVja19tb2RpZmllZF92aXJ0dWFs X2dlbmVyYXRlZCh0dXBkZXNjLCBuZXd0dXBsZSk7CisKIAkJaWYgKG5ld3Nsb3QtPnR0c190 dXBsZURlc2NyaXB0b3IgIT0gdHVwZGVzYykKIAkJCUV4ZWNTZXRTbG90RGVzY3JpcHRvcihu ZXdzbG90LCB0dXBkZXNjKTsKIAkJRXhlY1N0b3JlSGVhcFR1cGxlKG5ld3R1cGxlLCBuZXdz bG90LCBmYWxzZSk7CkBAIC0zNDg0LDYgKzM0OTUsNyBAQCBUcmlnZ2VyRW5hYmxlZChFU3Rh dGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKIAogCQkJb2xkQ29udGV4dCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7CiAJCQl0Z3F1 YWwgPSBzdHJpbmdUb05vZGUodHJpZ2dlci0+dGdxdWFsKTsKKwkJCXRncXVhbCA9IChOb2Rl ICopIGV4cGFuZF9nZW5lcmF0ZWRfY29sdW1uc19pbl9leHByKHRncXVhbCwgcmVsaW5mby0+ cmlfUmVsYXRpb25EZXNjKTsKIAkJCS8qIENoYW5nZSByZWZlcmVuY2VzIHRvIE9MRCBhbmQg TkVXIHRvIElOTkVSX1ZBUiBhbmQgT1VURVJfVkFSICovCiAJCQlDaGFuZ2VWYXJOb2Rlcyh0 Z3F1YWwsIFBSUzJfT0xEX1ZBUk5PLCBJTk5FUl9WQVIsIDApOwogCQkJQ2hhbmdlVmFyTm9k ZXModGdxdWFsLCBQUlMyX05FV19WQVJOTywgT1VURVJfVkFSLCAwKTsKQEAgLTYxNTksMyAr NjE3MSwyOCBAQCBwZ190cmlnZ2VyX2RlcHRoKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJUEdf UkVUVVJOX0lOVDMyKE15VHJpZ2dlckRlcHRoKTsKIH0KKworLyoKKyAqIENoZWNrIHdoZXRo ZXIgYSB0cmlnZ2VyIG1vZGlmaWVkIGEgdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1uIGFuZCBl cnJvciBpZgorICogc28uCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19tb2RpZmllZF92aXJ0 dWFsX2dlbmVyYXRlZChUdXBsZURlc2MgdHVwZGVzYywgSGVhcFR1cGxlIHR1cGxlKQorewor CWlmICghKHR1cGRlc2MtPmNvbnN0ciAmJiB0dXBkZXNjLT5jb25zdHItPmhhc19nZW5lcmF0 ZWQpKQorCQlyZXR1cm47CisKKwlmb3IgKGludCBpID0gMDsgaSA8IHR1cGRlc2MtPm5hdHRz OyBpKyspCisJeworCQlpZiAoVHVwbGVEZXNjQXR0cih0dXBkZXNjLCBpKS0+YXR0Z2VuZXJh dGVkID09IEFUVFJJQlVURV9HRU5FUkFURURfVklSVFVBTCkKKwkJeworCQkJYm9vbAkJaXNu dWxsOworCisJCQlmYXN0Z2V0YXR0cih0dXBsZSwgaSArIDEsIHR1cGRlc2MsICZpc251bGwp OworCQkJaWYgKCFpc251bGwpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2Rl KEVSUkNPREVfRV9SX0lfRV9UUklHR0VSX1BST1RPQ09MX1ZJT0xBVEVEKSwKKwkJCQkJCSBl cnJtc2coInRyaWdnZXIgbW9kaWZpZWQgdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1uIHZhbHVl IikpKTsKKwkJfQorCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5 cGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jCmluZGV4IDMyNzE5 NjJhN2EuLmU4MTI5NGYyNzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5 cGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYwpAQCAtOTE0 LDcgKzkxNCw4IEBAIERlZmluZURvbWFpbihDcmVhdGVEb21haW5TdG10ICpzdG10KQogCQkJ CQlkZWZhdWx0RXhwciA9IGNvb2tEZWZhdWx0KHBzdGF0ZSwgY29uc3RyLT5yYXdfZXhwciwK IAkJCQkJCQkJCQkJICBiYXNldHlwZW9pZCwKIAkJCQkJCQkJCQkJICBiYXNldHlwZU1vZCwK LQkJCQkJCQkJCQkJICBkb21haW5OYW1lKTsKKwkJCQkJCQkJCQkJICBkb21haW5OYW1lLAor CQkJCQkJCQkJCQkgIDApOwogCiAJCQkJCS8qCiAJCQkJCSAqIElmIHRoZSBleHByZXNzaW9u IGlzIGp1c3QgYSBOVUxMIGNvbnN0YW50LCB3ZSB0cmVhdCBpdApAQCAtMjIxOSw3ICsyMjIw LDggQEAgQWx0ZXJEb21haW5EZWZhdWx0KExpc3QgKm5hbWVzLCBOb2RlICpkZWZhdWx0UmF3 KQogCQlkZWZhdWx0RXhwciA9IGNvb2tEZWZhdWx0KHBzdGF0ZSwgZGVmYXVsdFJhdywKIAkJ CQkJCQkJICB0eXBUdXAtPnR5cGJhc2V0eXBlLAogCQkJCQkJCQkgIHR5cFR1cC0+dHlwdHlw bW9kLAotCQkJCQkJCQkgIE5hbWVTdHIodHlwVHVwLT50eXBuYW1lKSk7CisJCQkJCQkJCSAg TmFtZVN0cih0eXBUdXAtPnR5cG5hbWUpLAorCQkJCQkJCQkgIDApOwogCiAJCS8qCiAJCSAq IElmIHRoZSBleHByZXNzaW9uIGlzIGp1c3QgYSBOVUxMIGNvbnN0YW50LCB3ZSB0cmVhdCB0 aGUgY29tbWFuZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggYmExNTZmOGM1Zi4u NTIxZGIxMGQ0OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC01Myw3ICs1Myw3 IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL2NsYXVz ZXMuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2V0cmVlLmgiCi0jaW5jbHVkZSAicmV3cml0 ZS9yZXdyaXRlTWFuaXAuaCIKKyNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3Iu aCIKICNpbmNsdWRlICJ0Y29wL3V0aWxpdHkuaCIKQEAgLTEzMjEsNiArMTMyMSw3IEBAIElu aXRSZXN1bHRSZWxJbmZvKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJcmVzdWx0 UmVsSW5mby0+cmlfRmR3U3RhdGUgPSBOVUxMOwogCXJlc3VsdFJlbEluZm8tPnJpX3VzZXNG ZHdEaXJlY3RNb2RpZnkgPSBmYWxzZTsKIAlyZXN1bHRSZWxJbmZvLT5yaV9Db25zdHJhaW50 RXhwcnMgPSBOVUxMOworCXJlc3VsdFJlbEluZm8tPnJpX0dlbmVyYXRlZEV4cHJzID0gTlVM TDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9qdW5rRmlsdGVyID0gTlVMTDsKIAlyZXN1bHRSZWxJ bmZvLT5yaV9wcm9qZWN0UmV0dXJuaW5nID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9v bkNvbmZsaWN0QXJiaXRlckluZGV4ZXMgPSBOSUw7CkBAIC0xODA5LDYgKzE4MTAsNyBAQCBF eGVjUmVsQ2hlY2soUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCUV4cHIJICAg KmNoZWNrY29uc3RyOwogCiAJCQljaGVja2NvbnN0ciA9IHN0cmluZ1RvTm9kZShjaGVja1tp XS5jY2Jpbik7CisJCQljaGVja2NvbnN0ciA9IChFeHByICopIGV4cGFuZF9nZW5lcmF0ZWRf Y29sdW1uc19pbl9leHByKChOb2RlICopIGNoZWNrY29uc3RyLCByZWwpOwogCQkJcmVzdWx0 UmVsSW5mby0+cmlfQ29uc3RyYWludEV4cHJzW2ldID0KIAkJCQlFeGVjUHJlcGFyZUV4cHIo Y2hlY2tjb25zdHIsIGVzdGF0ZSk7CiAJCX0KQEAgLTIyOTcsNiArMjI5OSwxMCBAQCBFeGVj QnVpbGRTbG90VmFsdWVEZXNjcmlwdGlvbihPaWQgcmVsb2lkLAogCQlpZiAoYXR0LT5hdHRp c2Ryb3BwZWQpCiAJCQljb250aW51ZTsKIAorCQkvKiBpZ25vcmUgdmlydHVhbCBnZW5lcmF0 ZWQgY29sdW1uczsgdGhleSBhcmUgYWx3YXlzIG51bGwgaGVyZSAqLworCQlpZiAoYXR0LT5h dHRnZW5lcmF0ZWQgPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9WSVJUVUFMKQorCQkJY29udGlu dWU7CisKIAkJaWYgKCF0YWJsZV9wZXJtKQogCQl7CiAJCQkvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCA1MjhmNTg3MTdlLi43MzMzMmVlY2FiIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtNDYsNiArNDYs NyBAQAogI2luY2x1ZGUgImZvcmVpZ24vZmR3YXBpLmgiCiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCisjaW5jbHVkZSAicmV3cml0ZS9y ZXdyaXRlSGFuZGxlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKQEAgLTI1 MCw2ICsyNTEsODQgQEAgRXhlY0NoZWNrVElEVmlzaWJsZShFU3RhdGUgKmVzdGF0ZSwKIAlS ZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CiB9CiAKK0hlYXBUdXBsZQorRXhlY0NvbXB1dGVTdG9y ZWRHZW5lcmF0ZWQoRVN0YXRlICplc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KQorewor CVJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8gPSBlc3RhdGUtPmVzX3Jlc3VsdF9yZWxh dGlvbl9pbmZvOworCVJlbGF0aW9uCXJlbCA9IHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9u RGVzYzsKKwlUdXBsZURlc2MJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKKwlp bnQJCQluYXR0cyA9IHR1cGRlc2MtPm5hdHRzOworCURhdHVtCSAgICp2YWx1ZXM7CisJYm9v bAkgICAqbnVsbHM7CisJYm9vbAkgICAqcmVwbGFjZXM7CisJYm9vbAkJYW55X2NoYW5nZXMg PSBmYWxzZTsKKworCXZhbHVlcyA9IHBhbGxvYyhzaXplb2YoKnZhbHVlcykgKiBuYXR0cyk7 CisJbnVsbHMgPSBwYWxsb2Moc2l6ZW9mKCpudWxscykgKiBuYXR0cyk7CisJcmVwbGFjZXMg PSBwYWxsb2MwKHNpemVvZigqcmVwbGFjZXMpICogbmF0dHMpOworCisJLyoKKwkgKiBJZiBm aXJzdCB0aW1lIHRocm91Z2ggZm9yIHRoaXMgcmVzdWx0IHJlbGF0aW9uLCBidWlsZCBleHBy ZXNzaW9uCisJICogbm9kZXRyZWVzIGZvciByZWwncyBzdG9yZWQgZ2VuZXJhdGlvbiBleHBy ZXNzaW9ucy4gIEtlZXAgdGhlbSBpbiB0aGUKKwkgKiBwZXItcXVlcnkgbWVtb3J5IGNvbnRl eHQgc28gdGhleSdsbCBzdXJ2aXZlIHRocm91Z2hvdXQgdGhlIHF1ZXJ5LgorCSAqLworCWlm IChyZXN1bHRSZWxJbmZvLT5yaV9HZW5lcmF0ZWRFeHBycyA9PSBOVUxMKQorCXsKKwkJTWVt b3J5Q29udGV4dCBvbGRDb250ZXh0OworCisJCW9sZENvbnRleHQgPSBNZW1vcnlDb250ZXh0 U3dpdGNoVG8oZXN0YXRlLT5lc19xdWVyeV9jeHQpOworCQlyZXN1bHRSZWxJbmZvLT5yaV9H ZW5lcmF0ZWRFeHBycyA9CisJCQkoRXhwclN0YXRlICoqKSBwYWxsb2MobmF0dHMgKiBzaXpl b2YoRXhwclN0YXRlICopKTsKKworCQlmb3IgKGludCBpID0gMDsgaSA8IG5hdHRzOyBpKysp CisJCXsKKwkJCWlmIChUdXBsZURlc2NBdHRyKHR1cGRlc2MsIGkpLT5hdHRnZW5lcmF0ZWQg PT0gQVRUUklCVVRFX0dFTkVSQVRFRF9TVE9SRUQpCisJCQl7CisJCQkJRXhwcgkgICAqZXhw cjsKKworCQkJCWV4cHIgPSAoRXhwciAqKSBidWlsZF9jb2x1bW5fZGVmYXVsdChyZWwsIGkg KyAxKTsKKwkJCQlBc3NlcnQoZXhwcik7CisKKwkJCQlyZXN1bHRSZWxJbmZvLT5yaV9HZW5l cmF0ZWRFeHByc1tpXSA9IEV4ZWNQcmVwYXJlRXhwcihleHByLCBlc3RhdGUpOworCQkJfQor CQl9CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZENvbnRleHQpOworCX0KKworCWZv ciAoaW50IGkgPSAwOyBpIDwgbmF0dHM7IGkrKykKKwl7CisJCWlmIChUdXBsZURlc2NBdHRy KHR1cGRlc2MsIGkpLT5hdHRnZW5lcmF0ZWQgPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9TVE9S RUQpCisJCXsKKwkJCUV4cHJDb250ZXh0ICplY29udGV4dDsKKwkJCURhdHVtCQl2YWw7CisJ CQlib29sCQlpc251bGw7CisKKwkJCWVjb250ZXh0ID0gR2V0UGVyVHVwbGVFeHByQ29udGV4 dChlc3RhdGUpOworCQkJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gc2xvdDsKKworCQkJ dmFsID0gRXhlY0V2YWxFeHByU3dpdGNoQ29udGV4dChyZXN1bHRSZWxJbmZvLT5yaV9HZW5l cmF0ZWRFeHByc1tpXSwgZWNvbnRleHQsICZpc251bGwpOworCisJCQl2YWx1ZXNbaV0gPSB2 YWw7CisJCQludWxsc1tpXSA9IGlzbnVsbDsKKwkJCXJlcGxhY2VzW2ldID0gdHJ1ZTsKKwkJ CWFueV9jaGFuZ2VzID0gdHJ1ZTsKKwkJfQorCX0KKworCWlmIChhbnlfY2hhbmdlcykKKwl7 CisJCUhlYXBUdXBsZQl0dXBsZTsKKworCQl0dXBsZSA9IEV4ZWNGZXRjaFNsb3RUdXBsZShz bG90KTsKKwkJdHVwbGUgPSBoZWFwX21vZGlmeV90dXBsZSh0dXBsZSwgdHVwZGVzYywgdmFs dWVzLCBudWxscywgcmVwbGFjZXMpOworCQlFeGVjU3RvcmVIZWFwVHVwbGUodHVwbGUsIHNs b3QsIGZhbHNlKTsKKwkJcmV0dXJuIHR1cGxlOworCX0KKworCXJldHVybiBOVUxMOworfQor CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY0luc2VydAogICoKQEAgLTM3Miw2ICs0NTEsMTYg QEAgRXhlY0luc2VydChNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLAogCQkgKi8KIAkJdHVw bGUtPnRfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlc3VsdFJlbGF0aW9uRGVzYyk7 CiAKKwkJLyoKKwkJICogQ29tcHV0ZSBzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbnMKKwkJICov CisJCWlmIChyZXN1bHRSZWxhdGlvbkRlc2MtPnJkX2F0dC0+Y29uc3RyICYmCisJCQlyZXN1 bHRSZWxhdGlvbkRlc2MtPnJkX2F0dC0+Y29uc3RyLT5oYXNfZ2VuZXJhdGVkKQorCQl7CisJ CQlFeGVjQ29tcHV0ZVN0b3JlZEdlbmVyYXRlZChlc3RhdGUsIHNsb3QpOworCQkJdHVwbGUg PSBFeGVjTWF0ZXJpYWxpemVTbG90KHNsb3QpOworCQl9CisKIAkJLyoKIAkJICogQ2hlY2sg YW55IFJMUyBXSVRIIENIRUNLIHBvbGljaWVzLgogCQkgKgpAQCAtMTAyNyw2ICsxMTE2LDE2 IEBAIEV4ZWNVcGRhdGUoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKIAkJICovCiAJCXR1 cGxlLT50X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChyZXN1bHRSZWxhdGlvbkRlc2Mp OwogCisJCS8qCisJCSAqIENvbXB1dGUgc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zCisJCSAq LworCQlpZiAocmVzdWx0UmVsYXRpb25EZXNjLT5yZF9hdHQtPmNvbnN0ciAmJgorCQkJcmVz dWx0UmVsYXRpb25EZXNjLT5yZF9hdHQtPmNvbnN0ci0+aGFzX2dlbmVyYXRlZCkKKwkJewor CQkJRXhlY0NvbXB1dGVTdG9yZWRHZW5lcmF0ZWQoZXN0YXRlLCBzbG90KTsKKwkJCXR1cGxl ID0gRXhlY01hdGVyaWFsaXplU2xvdChzbG90KTsKKwkJfQorCiAJCS8qCiAJCSAqIENoZWNr IGFueSBSTFMgVVBEQVRFIFdJVEggQ0hFQ0sgcG9saWNpZXMKIAkJICoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29w eWZ1bmNzLmMKaW5kZXggZThlYTU5ZTM0YS4uNmI5NzUyYTAyMCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29w eWZ1bmNzLmMKQEAgLTI4NzksNiArMjg3OSw3IEBAIF9jb3B5Q29sdW1uRGVmKGNvbnN0IENv bHVtbkRlZiAqZnJvbSkKIAlDT1BZX05PREVfRklFTEQoY29va2VkX2RlZmF1bHQpOwogCUNP UFlfU0NBTEFSX0ZJRUxEKGlkZW50aXR5KTsKIAlDT1BZX05PREVfRklFTEQoaWRlbnRpdHlT ZXF1ZW5jZSk7CisJQ09QWV9TQ0FMQVJfRklFTEQoZ2VuZXJhdGVkKTsKIAlDT1BZX05PREVf RklFTEQoY29sbENsYXVzZSk7CiAJQ09QWV9TQ0FMQVJfRklFTEQoY29sbE9pZCk7CiAJQ09Q WV9OT0RFX0ZJRUxEKGNvbnN0cmFpbnRzKTsKQEAgLTI5MDIsNiArMjkwMyw3IEBAIF9jb3B5 Q29uc3RyYWludChjb25zdCBDb25zdHJhaW50ICpmcm9tKQogCUNPUFlfTk9ERV9GSUVMRChy YXdfZXhwcik7CiAJQ09QWV9TVFJJTkdfRklFTEQoY29va2VkX2V4cHIpOwogCUNPUFlfU0NB TEFSX0ZJRUxEKGdlbmVyYXRlZF93aGVuKTsKKwlDT1BZX1NDQUxBUl9GSUVMRChnZW5lcmF0 ZWRfa2luZCk7CiAJQ09QWV9OT0RFX0ZJRUxEKGtleXMpOwogCUNPUFlfTk9ERV9GSUVMRChp bmNsdWRpbmcpOwogCUNPUFlfTk9ERV9GSUVMRChleGNsdXNpb25zKTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2Vx dWFsZnVuY3MuYwppbmRleCAzYmI5MWM5NTk1Li4wNDU5ZGQzNDRmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMv ZXF1YWxmdW5jcy5jCkBAIC0yNTU5LDYgKzI1NTksNyBAQCBfZXF1YWxDb2x1bW5EZWYoY29u c3QgQ29sdW1uRGVmICphLCBjb25zdCBDb2x1bW5EZWYgKmIpCiAJQ09NUEFSRV9OT0RFX0ZJ RUxEKGNvb2tlZF9kZWZhdWx0KTsKIAlDT01QQVJFX1NDQUxBUl9GSUVMRChpZGVudGl0eSk7 CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKGlkZW50aXR5U2VxdWVuY2UpOworCUNPTVBBUkVfU0NB TEFSX0ZJRUxEKGdlbmVyYXRlZCk7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKGNvbGxDbGF1c2Up OwogCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGNvbGxPaWQpOwogCUNPTVBBUkVfTk9ERV9GSUVM RChjb25zdHJhaW50cyk7CkBAIC0yNTgwLDYgKzI1ODEsNyBAQCBfZXF1YWxDb25zdHJhaW50 KGNvbnN0IENvbnN0cmFpbnQgKmEsIGNvbnN0IENvbnN0cmFpbnQgKmIpCiAJQ09NUEFSRV9O T0RFX0ZJRUxEKHJhd19leHByKTsKIAlDT01QQVJFX1NUUklOR19GSUVMRChjb29rZWRfZXhw cik7CiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQoZ2VuZXJhdGVkX3doZW4pOworCUNPTVBBUkVf U0NBTEFSX0ZJRUxEKGdlbmVyYXRlZF9raW5kKTsKIAlDT01QQVJFX05PREVfRklFTEQoa2V5 cyk7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKGluY2x1ZGluZyk7CiAJQ09NUEFSRV9OT0RFX0ZJ RUxEKGV4Y2x1c2lvbnMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVu Y3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKaW5kZXggNjk3MzFjY2RlYS4u MTRlMjE4NGY1YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwor KysgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCkBAIC0yODgwLDYgKzI4ODAsNyBA QCBfb3V0Q29sdW1uRGVmKFN0cmluZ0luZm8gc3RyLCBjb25zdCBDb2x1bW5EZWYgKm5vZGUp CiAJV1JJVEVfTk9ERV9GSUVMRChjb29rZWRfZGVmYXVsdCk7CiAJV1JJVEVfQ0hBUl9GSUVM RChpZGVudGl0eSk7CiAJV1JJVEVfTk9ERV9GSUVMRChpZGVudGl0eVNlcXVlbmNlKTsKKwlX UklURV9DSEFSX0ZJRUxEKGdlbmVyYXRlZCk7CiAJV1JJVEVfTk9ERV9GSUVMRChjb2xsQ2xh dXNlKTsKIAlXUklURV9PSURfRklFTEQoY29sbE9pZCk7CiAJV1JJVEVfTk9ERV9GSUVMRChj b25zdHJhaW50cyk7CkBAIC0zNTUxLDYgKzM1NTIsMTQgQEAgX291dENvbnN0cmFpbnQoU3Ry aW5nSW5mbyBzdHIsIGNvbnN0IENvbnN0cmFpbnQgKm5vZGUpCiAJCQlXUklURV9DSEFSX0ZJ RUxEKGdlbmVyYXRlZF93aGVuKTsKIAkJCWJyZWFrOwogCisJCWNhc2UgQ09OU1RSX0dFTkVS QVRFRDoKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoc3RyLCAiR0VORVJBVEVEIik7CisJ CQlXUklURV9OT0RFX0ZJRUxEKHJhd19leHByKTsKKwkJCVdSSVRFX1NUUklOR19GSUVMRChj b29rZWRfZXhwcik7CisJCQlXUklURV9DSEFSX0ZJRUxEKGdlbmVyYXRlZF93aGVuKTsKKwkJ CVdSSVRFX0NIQVJfRklFTEQoZ2VuZXJhdGVkX2tpbmQpOworCQkJYnJlYWs7CisKIAkJY2Fz ZSBDT05TVFJfQ0hFQ0s6CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKHN0ciwgIkNIRUNL Iik7CiAJCQlXUklURV9CT09MX0ZJRUxEKGlzX25vX2luaGVyaXQpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkK aW5kZXggNmQyM2JmYjBiMy4uYmRjNjRkMmY0ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC01NzUs NyArNTc1LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIg KnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxpdmFsPglv cHRfd2luZG93X2V4Y2x1c2lvbl9jbGF1c2UKICV0eXBlIDxzdHI+CQlvcHRfZXhpc3Rpbmdf d2luZG93X25hbWUKICV0eXBlIDxib29sZWFuPiBvcHRfaWZfbm90X2V4aXN0cwotJXR5cGUg PGl2YWw+CWdlbmVyYXRlZF93aGVuIG92ZXJyaWRlX2tpbmQKKyV0eXBlIDxpdmFsPglnZW5l cmF0ZWRfd2hlbiBvdmVycmlkZV9raW5kIG9wdF92aXJ0dWFsX29yX3N0b3JlZAogJXR5cGUg PHBhcnRzcGVjPglQYXJ0aXRpb25TcGVjIE9wdFBhcnRpdGlvblNwZWMKICV0eXBlIDxzdHI+ CQkJcGFydF9zdHJhdGVneQogJXR5cGUgPHBhcnRlbGVtPglwYXJ0X2VsZW0KQEAgLTY3Niw3 ICs2NzYsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAq cmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCVNBVkVQT0lOVCBTQ0hF TUEgU0NIRU1BUyBTQ1JPTEwgU0VBUkNIIFNFQ09ORF9QIFNFQ1VSSVRZIFNFTEVDVCBTRVFV RU5DRSBTRVFVRU5DRVMKIAlTRVJJQUxJWkFCTEUgU0VSVkVSIFNFU1NJT04gU0VTU0lPTl9V U0VSIFNFVCBTRVRTIFNFVE9GIFNIQVJFIFNIT1cKIAlTSU1JTEFSIFNJTVBMRSBTS0lQIFNN QUxMSU5UIFNOQVBTSE9UIFNPTUUgU1FMX1AgU1RBQkxFIFNUQU5EQUxPTkVfUAotCVNUQVJU IFNUQVRFTUVOVCBTVEFUSVNUSUNTIFNURElOIFNURE9VVCBTVE9SQUdFIFNUUklDVF9QIFNU UklQX1AKKwlTVEFSVCBTVEFURU1FTlQgU1RBVElTVElDUyBTVERJTiBTVERPVVQgU1RPUkFH RSBTVE9SRUQgU1RSSUNUX1AgU1RSSVBfUAogCVNVQlNDUklQVElPTiBTVUJTVFJJTkcgU1lN TUVUUklDIFNZU0lEIFNZU1RFTV9QCiAKIAlUQUJMRSBUQUJMRVMgVEFCTEVTQU1QTEUgVEFC TEVTUEFDRSBURU1QIFRFTVBMQVRFIFRFTVBPUkFSWSBURVhUX1AgVEhFTgpAQCAtNjg4LDcg KzY4OCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpy ZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJVU5USUwgVVBEQVRFIFVT RVIgVVNJTkcKIAogCVZBQ1VVTSBWQUxJRCBWQUxJREFURSBWQUxJREFUT1IgVkFMVUVfUCBW QUxVRVMgVkFSQ0hBUiBWQVJJQURJQyBWQVJZSU5HCi0JVkVSQk9TRSBWRVJTSU9OX1AgVklF VyBWSUVXUyBWT0xBVElMRQorCVZFUkJPU0UgVkVSU0lPTl9QIFZJRVcgVklFV1MgVklSVFVB TCBWT0xBVElMRQogCiAJV0hFTiBXSEVSRSBXSElURVNQQUNFX1AgV0lORE9XIFdJVEggV0lU SElOIFdJVEhPVVQgV09SSyBXUkFQUEVSIFdSSVRFCiAKQEAgLTM1NTMsNiArMzU1MywxNyBA QCBDb2xDb25zdHJhaW50RWxlbToKIAkJCQkJbi0+bG9jYXRpb24gPSBAMTsKIAkJCQkJJCQg PSAoTm9kZSAqKW47CiAJCQkJfQorCQkJfCBHRU5FUkFURUQgZ2VuZXJhdGVkX3doZW4gQVMg JygnIGFfZXhwciAnKScgb3B0X3ZpcnR1YWxfb3Jfc3RvcmVkCisJCQkJeworCQkJCQlDb25z dHJhaW50ICpuID0gbWFrZU5vZGUoQ29uc3RyYWludCk7CisJCQkJCW4tPmNvbnR5cGUgPSBD T05TVFJfR0VORVJBVEVEOworCQkJCQluLT5nZW5lcmF0ZWRfd2hlbiA9ICQyOworCQkJCQlu LT5yYXdfZXhwciA9ICQ1OworCQkJCQluLT5jb29rZWRfZXhwciA9IE5VTEw7CisJCQkJCW4t PmdlbmVyYXRlZF9raW5kID0gJDc7CisJCQkJCW4tPmxvY2F0aW9uID0gQDE7CisJCQkJCSQk ID0gKE5vZGUgKiluOworCQkJCX0KIAkJCXwgUkVGRVJFTkNFUyBxdWFsaWZpZWRfbmFtZSBv cHRfY29sdW1uX2xpc3Qga2V5X21hdGNoIGtleV9hY3Rpb25zCiAJCQkJewogCQkJCQlDb25z dHJhaW50ICpuID0gbWFrZU5vZGUoQ29uc3RyYWludCk7CkBAIC0zNTc1LDYgKzM1ODYsMTIg QEAgZ2VuZXJhdGVkX3doZW46CiAJCQl8IEJZIERFRkFVTFQJeyAkJCA9IEFUVFJJQlVURV9J REVOVElUWV9CWV9ERUZBVUxUOyB9CiAJCTsKIAorb3B0X3ZpcnR1YWxfb3Jfc3RvcmVkOgor CQkJU1RPUkVECQkJeyAkJCA9IEFUVFJJQlVURV9HRU5FUkFURURfU1RPUkVEOyB9CisJCQl8 IFZJUlRVQUwJCXsgJCQgPSBBVFRSSUJVVEVfR0VORVJBVEVEX1ZJUlRVQUw7IH0KKwkJCXwg LypFTVBUWSovCQl7ICQkID0gQVRUUklCVVRFX0dFTkVSQVRFRF9WSVJUVUFMOyB9CisJCTsK KwogLyoKICAqIENvbnN0cmFpbnRBdHRyIHJlcHJlc2VudHMgY29uc3RyYWludCBhdHRyaWJ1 dGVzLCB3aGljaCB3ZSBwYXJzZSBhcyBpZgogICogdGhleSB3ZXJlIGluZGVwZW5kZW50IGNv bnN0cmFpbnQgY2xhdXNlcywgaW4gb3JkZXIgdG8gYXZvaWQgc2hpZnQvcmVkdWNlCkBAIC0z NjQzLDYgKzM2NjAsNyBAQCBUYWJsZUxpa2VPcHRpb246CiAJCQkJfCBDT05TVFJBSU5UUwkJ eyAkJCA9IENSRUFURV9UQUJMRV9MSUtFX0NPTlNUUkFJTlRTOyB9CiAJCQkJfCBERUZBVUxU UwkJCXsgJCQgPSBDUkVBVEVfVEFCTEVfTElLRV9ERUZBVUxUUzsgfQogCQkJCXwgSURFTlRJ VFlfUAkJeyAkJCA9IENSRUFURV9UQUJMRV9MSUtFX0lERU5USVRZOyB9CisJCQkJfCBHRU5F UkFURUQJCQl7ICQkID0gQ1JFQVRFX1RBQkxFX0xJS0VfR0VORVJBVEVEOyB9CiAJCQkJfCBJ TkRFWEVTCQkJeyAkJCA9IENSRUFURV9UQUJMRV9MSUtFX0lOREVYRVM7IH0KIAkJCQl8IFNU QVRJU1RJQ1MJCXsgJCQgPSBDUkVBVEVfVEFCTEVfTElLRV9TVEFUSVNUSUNTOyB9CiAJCQkJ fCBTVE9SQUdFCQkJeyAkJCA9IENSRUFURV9UQUJMRV9MSUtFX1NUT1JBR0U7IH0KQEAgLTE1 MjM1LDYgKzE1MjUzLDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBTVERJTgogCQkJ fCBTVERPVVQKIAkJCXwgU1RPUkFHRQorCQkJfCBTVE9SRUQKIAkJCXwgU1RSSUNUX1AKIAkJ CXwgU1RSSVBfUAogCQkJfCBTVUJTQ1JJUFRJT04KQEAgLTE1MjcxLDYgKzE1MjkwLDcgQEAg dW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBWRVJTSU9OX1AKIAkJCXwgVklFVwogCQkJfCBW SUVXUworCQkJfCBWSVJUVUFMCiAJCQl8IFZPTEFUSUxFCiAJCQl8IFdISVRFU1BBQ0VfUAog CQkJfCBXSVRISU4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cu YyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYwppbmRleCA2MTcyN2UxZDcxLi5m YjMzODdiNjgzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMK KysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCkBAIC01MTQsNiArNTE0LDE0 IEBAIGNoZWNrX2FnZ2xldmVsc19hbmRfY29uc3RyYWludHMoUGFyc2VTdGF0ZSAqcHN0YXRl LCBOb2RlICpleHByKQogCQkJCWVyciA9IF8oImdyb3VwaW5nIG9wZXJhdGlvbnMgYXJlIG5v dCBhbGxvd2VkIGluIHBhcnRpdGlvbiBrZXkgZXhwcmVzc2lvbnMiKTsKIAogCQkJYnJlYWs7 CisJCWNhc2UgRVhQUl9LSU5EX0dFTkVSQVRFRF9DT0xVTU46CisKKwkJCWlmIChpc0FnZykK KwkJCQllcnIgPSBfKCJhZ2dyZWdhdGUgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBj b2x1bW4gZ2VuZXJhdGlvbiBleHByZXNzaW9ucyIpOworCQkJZWxzZQorCQkJCWVyciA9IF8o Imdyb3VwaW5nIG9wZXJhdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIGNvbHVtbiBnZW5lcmF0 aW9uIGV4cHJlc3Npb25zIik7CisKKwkJCWJyZWFrOwogCiAJCWNhc2UgRVhQUl9LSU5EX0NB TExfQVJHVU1FTlQ6CiAJCQlpZiAoaXNBZ2cpCkBAIC05MDIsNiArOTEwLDkgQEAgdHJhbnNm b3JtV2luZG93RnVuY0NhbGwoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dGdW5jICp3ZnVu YywKIAkJY2FzZSBFWFBSX0tJTkRfQ0FMTF9BUkdVTUVOVDoKIAkJCWVyciA9IF8oIndpbmRv dyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIENBTEwgYXJndW1lbnRzIik7CiAJCQli cmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfR0VORVJBVEVEX0NPTFVNTjoKKwkJCWVyciA9IF8o IndpbmRvdyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIGNvbHVtbiBnZW5lcmF0aW9u IGV4cHJlc3Npb25zIik7CisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGlu dGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9leHByLmMKaW5kZXggMzg1ZTU0YTliNi4uODUzZGVhYThkNyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYworKysgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBAIC0xODQ5LDYgKzE4NDksOSBAQCB0cmFuc2Zvcm1T dWJMaW5rKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU3ViTGluayAqc3VibGluaykKIAkJY2FzZSBF WFBSX0tJTkRfQ0FMTF9BUkdVTUVOVDoKIAkJCWVyciA9IF8oImNhbm5vdCB1c2Ugc3VicXVl cnkgaW4gQ0FMTCBhcmd1bWVudCIpOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX0dF TkVSQVRFRF9DT0xVTU46CisJCQllcnIgPSBfKCJjYW5ub3QgdXNlIHN1YnF1ZXJ5IGluIGNv bHVtbiBnZW5lcmF0aW9uIGV4cHJlc3Npb24iKTsKKwkJCWJyZWFrOwogCiAJCQkvKgogCQkJ ICogVGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRo YXQgdGhlCkBAIC0zNDc1LDYgKzM0NzgsOCBAQCBQYXJzZUV4cHJLaW5kTmFtZShQYXJzZUV4 cHJLaW5kIGV4cHJLaW5kKQogCQkJcmV0dXJuICJQQVJUSVRJT04gQlkiOwogCQljYXNlIEVY UFJfS0lORF9DQUxMX0FSR1VNRU5UOgogCQkJcmV0dXJuICJDQUxMIjsKKwkJY2FzZSBFWFBS X0tJTkRfR0VORVJBVEVEX0NPTFVNTjoKKwkJCXJldHVybiAiR0VORVJBVEVEIEFTIjsKIAog CQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBo ZXJlLCBzbyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2Z1bmMuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKaW5kZXggNDQyNTcx NTRiOC4uOGFlZWQ2M2E2OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2Z1bmMuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCkBAIC02MjEs NiArNjIxLDE1IEBAIFBhcnNlRnVuY09yQ29sdW1uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlz dCAqZnVuY25hbWUsIExpc3QgKmZhcmdzLAogCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBz dGF0ZSwgbG9jYXRpb24pKSk7CiAJfQogCisJaWYgKHBzdGF0ZS0+cF9leHByX2tpbmQgPT0g RVhQUl9LSU5EX0dFTkVSQVRFRF9DT0xVTU4gJiYKKwkJZnVuY192b2xhdGlsZShmdW5jaWQp ICE9IFBST1ZPTEFUSUxFX0lNTVVUQUJMRSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJIGVycm1zZygiY2Fubm90IHVzZSBm dW5jdGlvbiAlcyBpbiBjb2x1bW4gZ2VuZXJhdGlvbiBleHByZXNzaW9uIiwKKwkJCQkJCWZ1 bmNfc2lnbmF0dXJlX3N0cmluZyhmdW5jbmFtZSwgbmFyZ3MsIGFyZ25hbWVzLCBhY3R1YWxf YXJnX3R5cGVzKSksCisJCQkJIGVycmRldGFpbCgiRnVuY3Rpb25zIHVzZWQgaW4gYSBjb2x1 bW4gZ2VuZXJhdGlvbiBleHByZXNzaW9uIG11c3QgYmUgaW1tdXRhYmxlLiIpLAorCQkJCSBw YXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKKwogCS8qCiAJICogSWYg dGhlcmUgYXJlIGRlZmF1bHQgYXJndW1lbnRzLCB3ZSBoYXZlIHRvIGluY2x1ZGUgdGhlaXIg dHlwZXMgaW4KIAkgKiBhY3R1YWxfYXJnX3R5cGVzIGZvciB0aGUgcHVycG9zZSBvZiBjaGVj a2luZyBnZW5lcmljIHR5cGUgY29uc2lzdGVuY3kuCkBAIC0yMzcwLDYgKzIzNzksOSBAQCBj aGVja19zcmZfY2FsbF9wbGFjZW1lbnQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpsYXN0 X3NyZiwgaW50IGxvY2F0aW9uKQogCQljYXNlIEVYUFJfS0lORF9DQUxMX0FSR1VNRU5UOgog CQkJZXJyID0gXygic2V0LXJldHVybmluZyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGlu IENBTEwgYXJndW1lbnRzIik7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfR0VORVJB VEVEX0NPTFVNTjoKKwkJCWVyciA9IF8oInNldC1yZXR1cm5pbmcgZnVuY3Rpb25zIGFyZSBu b3QgYWxsb3dlZCBpbiBjb2x1bW4gZ2VuZXJhdGlvbiBleHByZXNzaW9ucyIpOworCQkJYnJl YWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6 IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV91dGlsY21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5j CmluZGV4IGE2YTJkZTk0ZWEuLmI2ZjBlN2Q4MmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X3V0aWxjbWQuYwpAQCAtNTI2LDYgKzUyNiw3IEBAIHRyYW5zZm9ybUNvbHVtbkRlZmluaXRp b24oQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgQ29sdW1uRGVmICpjb2x1bW4pCiAJYm9vbAkJ c2F3X251bGxhYmxlOwogCWJvb2wJCXNhd19kZWZhdWx0OwogCWJvb2wJCXNhd19pZGVudGl0 eTsKKwlib29sCQlzYXdfZ2VuZXJhdGVkOwogCUxpc3RDZWxsICAgKmNsaXN0OwogCiAJY3h0 LT5jb2x1bW5zID0gbGFwcGVuZChjeHQtPmNvbHVtbnMsIGNvbHVtbik7CkBAIC02MzMsNiAr NjM0LDcgQEAgdHJhbnNmb3JtQ29sdW1uRGVmaW5pdGlvbihDcmVhdGVTdG10Q29udGV4dCAq Y3h0LCBDb2x1bW5EZWYgKmNvbHVtbikKIAlzYXdfbnVsbGFibGUgPSBmYWxzZTsKIAlzYXdf ZGVmYXVsdCA9IGZhbHNlOwogCXNhd19pZGVudGl0eSA9IGZhbHNlOworCXNhd19nZW5lcmF0 ZWQgPSBmYWxzZTsKIAogCWZvcmVhY2goY2xpc3QsIGNvbHVtbi0+Y29uc3RyYWludHMpCiAJ ewpAQCAtNzEzLDYgKzcxNSw1MCBAQCB0cmFuc2Zvcm1Db2x1bW5EZWZpbml0aW9uKENyZWF0 ZVN0bXRDb250ZXh0ICpjeHQsIENvbHVtbkRlZiAqY29sdW1uKQogCQkJCQlicmVhazsKIAkJ CQl9CiAKKwkJCWNhc2UgQ09OU1RSX0dFTkVSQVRFRDoKKwkJCQlpZiAoY3h0LT5vZlR5cGUp CisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAorCQkJCQkJCSBlcnJtc2coImdlbmVyYXRlZCBjb2x1bXMgYXJl IG5vdCBzdXBwb3J0ZWQgb24gdHlwZWQgdGFibGVzIikpKTsKKwkJCQlpZiAoY3h0LT5wYXJ0 Ym91bmQpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJCSBlcnJtc2coImdlbmVyYXRlZCBjb2x1 bW5zIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHBhcnRpdGlvbnMiKSkpOworCisJCQkJaWYgKHNh d19nZW5lcmF0ZWQpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCSBlcnJtc2coIm11bHRpcGxlIGdlbmVyYXRp b24gY2xhdXNlcyBzcGVjaWZpZWQgZm9yIGNvbHVtbiBcIiVzXCIgb2YgdGFibGUgXCIlc1wi IiwKKwkJCQkJCQkJCWNvbHVtbi0+Y29sbmFtZSwgY3h0LT5yZWxhdGlvbi0+cmVsbmFtZSks CisJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwKKwkJCQkJCQkJCQkJ CWNvbnN0cmFpbnQtPmxvY2F0aW9uKSkpOworCQkJCWNvbHVtbi0+Z2VuZXJhdGVkID0gY29u c3RyYWludC0+Z2VuZXJhdGVkX2tpbmQ7CisJCQkJY29sdW1uLT5yYXdfZGVmYXVsdCA9IGNv bnN0cmFpbnQtPnJhd19leHByOworCQkJCUFzc2VydChjb25zdHJhaW50LT5jb29rZWRfZXhw ciA9PSBOVUxMKTsKKwkJCQlzYXdfZ2VuZXJhdGVkID0gdHJ1ZTsKKworCQkJCS8qCisJCQkJ ICogUHJldmVudCB2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW5zIGZyb20gaGF2aW5nIGEgZG9t YWluCisJCQkJICogdHlwZS4gIFdlIHdvdWxkIGhhdmUgdG8gZW5mb3JjZSBkb21haW4gY29u c3RyYWludHMgd2hlbgorCQkJCSAqIGNvbHVtbnMgdW5kZXJseWluZyB0aGUgZ2VuZXJhdGVk IGNvbHVtbiBjaGFuZ2UuICBUaGlzIGNvdWxkCisJCQkJICogcG9zc2libHkgYmUgaW1wbGVt ZW50ZWQsIGJ1dCBpdCdzIG5vdC4KKwkJCQkgKi8KKwkJCQlpZiAoY29sdW1uLT5nZW5lcmF0 ZWQgPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9WSVJUVUFMKQorCQkJCXsKKwkJCQkJVHlwZQkJ Y3R5cGU7CisKKwkJCQkJY3R5cGUgPSB0eXBlbmFtZVR5cGUoY3h0LT5wc3RhdGUsIGNvbHVt bi0+dHlwZU5hbWUsIE5VTEwpOworCQkJCQlpZiAoKChGb3JtX3BnX3R5cGUpIEdFVFNUUlVD VChjdHlwZSkpLT50eXB0eXBlID09IFRZUFRZUEVfRE9NQUlOKQorCQkJCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQp LAorCQkJCQkJCQkgZXJybXNnKCJ2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW4gXCIlc1wiIGNh bm5vdCBoYXZlIGEgZG9tYWluIHR5cGUiLAorCQkJCQkJCQkJCWNvbHVtbi0+Y29sbmFtZSks CisJCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsCisJCQkJCQkJCQkJ CQkJY29sdW1uLT5sb2NhdGlvbikpKTsKKwkJCQkJUmVsZWFzZVN5c0NhY2hlKGN0eXBlKTsK KwkJCQl9CisJCQkJYnJlYWs7CisKIAkJCWNhc2UgQ09OU1RSX0NIRUNLOgogCQkJCWN4dC0+ Y2tjb25zdHJhaW50cyA9IGxhcHBlbmQoY3h0LT5ja2NvbnN0cmFpbnRzLCBjb25zdHJhaW50 KTsKIAkJCQlicmVhazsKQEAgLTc3OSw2ICs4MjUsNTAgQEAgdHJhbnNmb3JtQ29sdW1uRGVm aW5pdGlvbihDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBDb2x1bW5EZWYgKmNvbHVtbikKIAkJ CQkJCQljb2x1bW4tPmNvbG5hbWUsIGN4dC0+cmVsYXRpb24tPnJlbG5hbWUpLAogCQkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLAogCQkJCQkJCQkJCWNvbnN0cmFpbnQt PmxvY2F0aW9uKSkpOworCisJCWlmIChzYXdfZGVmYXVsdCAmJiBzYXdfZ2VuZXJhdGVkKQor CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1Ip LAorCQkJCQkgZXJybXNnKCJib3RoIGRlZmF1bHQgYW5kIGdlbmVyYXRpb24gZXhwcmVzc2lv biBzcGVjaWZpZWQgZm9yIGNvbHVtbiBcIiVzXCIgb2YgdGFibGUgXCIlc1wiIiwKKwkJCQkJ CQljb2x1bW4tPmNvbG5hbWUsIGN4dC0+cmVsYXRpb24tPnJlbG5hbWUpLAorCQkJCQkgcGFy c2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLAorCQkJCQkJCQkJCWNvbnN0cmFpbnQtPmxv Y2F0aW9uKSkpOworCisJCWlmIChzYXdfaWRlbnRpdHkgJiYgc2F3X2dlbmVyYXRlZCkKKwkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwK KwkJCQkJIGVycm1zZygiYm90aCBpZGVudGl0eSBhbmQgZ2VuZXJhdGlvbiBleHByZXNzaW9u IHNwZWNpZmllZCBmb3IgY29sdW1uIFwiJXNcIiBvZiB0YWJsZSBcIiVzXCIiLAorCQkJCQkJ CWNvbHVtbi0+Y29sbmFtZSwgY3h0LT5yZWxhdGlvbi0+cmVsbmFtZSksCisJCQkJCSBwYXJz ZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsCisJCQkJCQkJCQkJY29uc3RyYWludC0+bG9j YXRpb24pKSk7CisKKwkJLyoKKwkJICogRm9yIGEgdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1u LCBjb252ZXJ0IHRoZSBub3QtbnVsbCBjb25zdHJhaW50CisJCSAqIGludG8gYSBmdWxsIGNo ZWNrIGNvbnN0cmFpbnQsIHNvIHRoYXQgdGhlIGdlbmVyYXRpb24gZXhwcmVzc2lvbiBjYW4K KwkJICogYmUgZXhwYW5kZWQgYXQgY2hlY2sgdGltZS4KKwkJICovCisJCWlmIChjb2x1bW4t PmlzX25vdF9udWxsICYmIGNvbHVtbi0+Z2VuZXJhdGVkID09IEFUVFJJQlVURV9HRU5FUkFU RURfVklSVFVBTCkKKwkJeworCQkJQ29uc3RyYWludCAqY2hrID0gbWFrZU5vZGUoQ29uc3Ry YWludCk7CisJCQlOdWxsVGVzdCAqbnQgPSBtYWtlTm9kZShOdWxsVGVzdCk7CisJCQlDb2x1 bW5SZWYgKmNyID0gbWFrZU5vZGUoQ29sdW1uUmVmKTsKKworCQkJY3ItPmxvY2F0aW9uID0g LTE7CisJCQljci0+ZmllbGRzID0gbGlzdF9tYWtlMShtYWtlU3RyaW5nKGNvbHVtbi0+Y29s bmFtZSkpOworCisJCQludC0+YXJnID0gKEV4cHIgKikgY3I7CisJCQludC0+bnVsbHRlc3R0 eXBlID0gSVNfTk9UX05VTEw7CisJCQludC0+bG9jYXRpb24gPSAtMTsKKworCQkJY2hrLT5j b250eXBlID0gQ09OU1RSX0NIRUNLOworCQkJY2hrLT5sb2NhdGlvbiA9IC0xOworCQkJY2hr LT5pbml0aWFsbHlfdmFsaWQgPSB0cnVlOworCQkJY2hrLT5yYXdfZXhwciA9IChOb2RlICop IG50OworCisJCQljeHQtPmNrY29uc3RyYWludHMgPSBsYXBwZW5kKGN4dC0+Y2tjb25zdHJh aW50cywgY2hrKTsKKworCQkJY29sdW1uLT5pc19ub3RfbnVsbCA9IGZhbHNlOworCQl9CiAJ fQogCiAJLyoKQEAgLTEwMDgsMTEgKzEwOTgsMTMgQEAgdHJhbnNmb3JtVGFibGVMaWtlQ2xh dXNlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFRhYmxlTGlrZUNsYXVzZSAqdGFibGVfbGlr ZV9jbGEKIAkJICogQ29weSBkZWZhdWx0LCBpZiBwcmVzZW50IGFuZCB0aGUgZGVmYXVsdCBo YXMgYmVlbiByZXF1ZXN0ZWQKIAkJICovCiAJCWlmIChhdHRyaWJ1dGUtPmF0dGhhc2RlZiAm JgotCQkJKHRhYmxlX2xpa2VfY2xhdXNlLT5vcHRpb25zICYgQ1JFQVRFX1RBQkxFX0xJS0Vf REVGQVVMVFMpKQorCQkJKHRhYmxlX2xpa2VfY2xhdXNlLT5vcHRpb25zICYgQ1JFQVRFX1RB QkxFX0xJS0VfREVGQVVMVFMgfHwKKwkJCSB0YWJsZV9saWtlX2NsYXVzZS0+b3B0aW9ucyAm IENSRUFURV9UQUJMRV9MSUtFX0dFTkVSQVRFRCkpCiAJCXsKIAkJCU5vZGUJICAgKnRoaXNf ZGVmYXVsdCA9IE5VTEw7CiAJCQlBdHRyRGVmYXVsdCAqYXR0cmRlZjsKIAkJCWludAkJCWk7 CisJCQlib29sCQlmb3VuZF93aG9sZV9yb3c7CiAKIAkJCS8qIEZpbmQgZGVmYXVsdCBpbiBj b25zdHJhaW50IHN0cnVjdHVyZSAqLwogCQkJQXNzZXJ0KGNvbnN0ciAhPSBOVUxMKTsKQEAg LTEwMjcsMTIgKzExMTksMjcgQEAgdHJhbnNmb3JtVGFibGVMaWtlQ2xhdXNlKENyZWF0ZVN0 bXRDb250ZXh0ICpjeHQsIFRhYmxlTGlrZUNsYXVzZSAqdGFibGVfbGlrZV9jbGEKIAkJCX0K IAkJCUFzc2VydCh0aGlzX2RlZmF1bHQgIT0gTlVMTCk7CiAKKwkJCWRlZi0+Y29va2VkX2Rl ZmF1bHQgPSBtYXBfdmFyaWFibGVfYXR0bm9zKHRoaXNfZGVmYXVsdCwKKwkJCQkJCQkJCQkJ CQkgIDEsIDAsCisJCQkJCQkJCQkJCQkJICBhdHRtYXAsIHR1cGxlRGVzYy0+bmF0dHMsCisJ CQkJCQkJCQkJCQkJICBJbnZhbGlkT2lkLCAmZm91bmRfd2hvbGVfcm93KTsKKwogCQkJLyoK LQkJCSAqIElmIGRlZmF1bHQgZXhwciBjb3VsZCBjb250YWluIGFueSB2YXJzLCB3ZSdkIG5l ZWQgdG8gZml4ICdlbSwKLQkJCSAqIGJ1dCBpdCBjYW4ndDsgc28gZGVmYXVsdCBpcyByZWFk eSB0byBhcHBseSB0byBjaGlsZC4KKwkJCSAqIFByZXZlbnQgdGhpcyBmb3IgdGhlIHNhbWUg cmVhc29uIGFzIGZvciBjb25zdHJhaW50cyBiZWxvdy4KKwkJCSAqIE5vdGUgdGhhdCBkZWZh dWx0cyBjYW5ub3QgY29udGFpbiBhbnkgdmFycywgc28gaXQncyBPSyB0aGF0IHRoZQorCQkJ ICogZXJyb3IgbWVzc2FnZSByZWZlcnMgdG8gZ2VuZXJhdGVkIGNvbHVtbnMuCiAJCQkgKi8K KwkJCWlmIChmb3VuZF93aG9sZV9yb3cpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShl cnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2co ImNhbm5vdCBjb252ZXJ0IHdob2xlLXJvdyB0YWJsZSByZWZlcmVuY2UiKSwKKwkJCQkJCSBl cnJkZXRhaWwoIkdlbmVyYXRpb24gZXhwcmVzc2lvbiBmb3IgY29sdW1uIFwiJXNcIiBjb250 YWlucyBhIHdob2xlLXJvdyByZWZlcmVuY2UgdG8gdGFibGUgXCIlc1wiLiIsCisJCQkJCQkJ CSAgIGF0dHJpYnV0ZU5hbWUsCisJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1l KHJlbGF0aW9uKSkpKTsKIAotCQkJZGVmLT5jb29rZWRfZGVmYXVsdCA9IHRoaXNfZGVmYXVs dDsKKwkJCWlmIChhdHRyaWJ1dGUtPmF0dGdlbmVyYXRlZCAmJgorCQkJCSh0YWJsZV9saWtl X2NsYXVzZS0+b3B0aW9ucyAmIENSRUFURV9UQUJMRV9MSUtFX0dFTkVSQVRFRCkpCisJCQkJ ZGVmLT5nZW5lcmF0ZWQgPSBhdHRyaWJ1dGUtPmF0dGdlbmVyYXRlZDsKIAkJfQogCiAJCS8q CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMgYi9z cmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKaW5kZXggNDM4MTVkMjZmZi4u NDY3NTg2ZDI5MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFu ZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYwpAQCAt MjAsNiArMjAsNyBAQAogICovCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUg ImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3Mvc3lzYXR0ci5oIgog I2luY2x1ZGUgImNhdGFsb2cvZGVwZW5kZW5jeS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf dHlwZS5oIgpAQCAtMzgsNiArMzksNyBAQAogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgi CiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgi CisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIAogCiAvKiBXZSB1c2UgYSBsaXN0IG9m IHRoZXNlIHRvIGRldGVjdCByZWN1cnNpb24gaW4gUmV3cml0ZVF1ZXJ5ICovCkBAIC04MzAs NiArODMyLDEzIEBAIHJld3JpdGVUYXJnZXRMaXN0SVUoTGlzdCAqdGFyZ2V0TGlzdCwKIAog CQkJaWYgKGF0dF90dXAtPmF0dGlkZW50aXR5ID09IEFUVFJJQlVURV9JREVOVElUWV9CWV9E RUZBVUxUICYmIG92ZXJyaWRlID09IE9WRVJSSURJTkdfVVNFUl9WQUxVRSkKIAkJCQlhcHBs eV9kZWZhdWx0ID0gdHJ1ZTsKKworCQkJaWYgKGF0dF90dXAtPmF0dGdlbmVyYXRlZCAmJiAh YXBwbHlfZGVmYXVsdCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJIGVycm1zZygiY2Fubm90IGluc2VydCBpbnRv IGNvbHVtbiBcIiVzXCIiLCBOYW1lU3RyKGF0dF90dXAtPmF0dG5hbWUpKSwKKwkJCQkJCSBl cnJkZXRhaWwoIkNvbHVtbiBcIiVzXCIgaXMgYSBnZW5lcmF0ZWQgY29sdW1uLiIsCisJCQkJ CQkJCSAgIE5hbWVTdHIoYXR0X3R1cC0+YXR0bmFtZSkpKSk7CiAJCX0KIAogCQlpZiAoY29t bWFuZFR5cGUgPT0gQ01EX1VQREFURSkKQEAgLTg0MCw5ICs4NDksMjQgQEAgcmV3cml0ZVRh cmdldExpc3RJVShMaXN0ICp0YXJnZXRMaXN0LAogCQkJCQkJIGVycm1zZygiY29sdW1uIFwi JXNcIiBjYW4gb25seSBiZSB1cGRhdGVkIHRvIERFRkFVTFQiLCBOYW1lU3RyKGF0dF90dXAt PmF0dG5hbWUpKSwKIAkJCQkJCSBlcnJkZXRhaWwoIkNvbHVtbiBcIiVzXCIgaXMgYW4gaWRl bnRpdHkgY29sdW1uIGRlZmluZWQgYXMgR0VORVJBVEVEIEFMV0FZUy4iLAogCQkJCQkJCQkg ICBOYW1lU3RyKGF0dF90dXAtPmF0dG5hbWUpKSkpOworCisJCQlpZiAoYXR0X3R1cC0+YXR0 Z2VuZXJhdGVkICYmIG5ld190bGUgJiYgIWFwcGx5X2RlZmF1bHQpCisJCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBl cnJtc2coImNvbHVtbiBcIiVzXCIgY2FuIG9ubHkgYmUgdXBkYXRlZCB0byBERUZBVUxUIiwg TmFtZVN0cihhdHRfdHVwLT5hdHRuYW1lKSksCisJCQkJCQkgZXJyZGV0YWlsKCJDb2x1bW4g XCIlc1wiIGlzIGEgZ2VuZXJhdGVkIGNvbHVtbi4iLAorCQkJCQkJCQkgICBOYW1lU3RyKGF0 dF90dXAtPmF0dG5hbWUpKSkpOwogCQl9CiAKLQkJaWYgKGFwcGx5X2RlZmF1bHQpCisJCWlm IChhdHRfdHVwLT5hdHRnZW5lcmF0ZWQpCisJCXsKKwkJCS8qCisJCQkgKiB2aXJ0dWFsIGdl bmVyYXRlZCBjb2x1bW4gc3RvcmVzIGEgbnVsbCB2YWx1ZTsgc3RvcmVkIGdlbmVyYXRlZAor CQkJICogY29sdW1uIHdpbGwgYmUgZml4ZWQgaW4gZXhlY3V0b3IKKwkJCSAqLworCQkJbmV3 X3RsZSA9IE5VTEw7CisJCX0KKwkJZWxzZSBpZiAoYXBwbHlfZGVmYXVsdCkKIAkJewogCQkJ Tm9kZQkgICAqbmV3X2V4cHI7CiAKQEAgLTExNDcsMTMgKzExNzEsMTIgQEAgYnVpbGRfY29s dW1uX2RlZmF1bHQoUmVsYXRpb24gcmVsLCBpbnQgYXR0cm5vKQogCQl9CiAJfQogCi0JaWYg KGV4cHIgPT0gTlVMTCkKLQl7Ci0JCS8qCi0JCSAqIE5vIHBlci1jb2x1bW4gZGVmYXVsdCwg c28gbG9vayBmb3IgYSBkZWZhdWx0IGZvciB0aGUgdHlwZSBpdHNlbGYuCi0JCSAqLworCS8q CisJICogTm8gcGVyLWNvbHVtbiBkZWZhdWx0LCBzbyBsb29rIGZvciBhIGRlZmF1bHQgZm9y IHRoZSB0eXBlIGl0c2VsZi4gIEJ1dAorCSAqIG5vdCBmb3IgZ2VuZXJhdGVkIGNvbHVtbnMu CisJICovCisJaWYgKGV4cHIgPT0gTlVMTCAmJiAhYXR0X3R1cC0+YXR0Z2VuZXJhdGVkKQog CQlleHByID0gZ2V0X3R5cGRlZmF1bHQoYXR0dHlwZSk7Ci0JfQogCiAJaWYgKGV4cHIgPT0g TlVMTCkKIAkJcmV0dXJuIE5VTEw7CQkJLyogTm8gZGVmYXVsdCBhbnl3aGVyZSAqLwpAQCAt MzY3Niw2ICszNjk5LDEwMyBAQCBSZXdyaXRlUXVlcnkoUXVlcnkgKnBhcnNldHJlZSwgTGlz dCAqcmV3cml0ZV9ldmVudHMpCiB9CiAKIAorc3RhdGljIE5vZGUgKgorZXhwYW5kX2dlbmVy YXRlZF9jb2x1bW5zX2luX2V4cHJfbXV0YXRvcihOb2RlICpub2RlLCBSZWxhdGlvbiByZWwp Cit7CisJaWYgKG5vZGUgPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisKKwlpZiAoSXNBKG5v ZGUsIFZhcikpCisJeworCQlWYXIgKnYgPSAoVmFyICopIG5vZGU7CisJCUF0dHJOdW1iZXIJ YXR0bnVtID0gdi0+dmFyYXR0bm87CisKKwkJaWYgKGF0dG51bSA+IDAgJiYgVHVwbGVEZXNj QXR0cihSZWxhdGlvbkdldERlc2NyKHJlbCksIGF0dG51bSAtIDEpLT5hdHRnZW5lcmF0ZWQg PT0gQVRUUklCVVRFX0dFTkVSQVRFRF9WSVJUVUFMKQorCQl7CisJCQlub2RlID0gYnVpbGRf Y29sdW1uX2RlZmF1bHQocmVsLCBhdHRudW0pOworCQkJaWYgKG5vZGUgPT0gTlVMTCkKKwkJ CQllbG9nKEVSUk9SLCAibm8gZ2VuZXJhdGlvbiBleHByZXNzaW9uIGZvdW5kIGZvciBjb2x1 bW4gbnVtYmVyICVkIG9mIHRhYmxlIFwiJXNcIiIsCisJCQkJCSBhdHRudW0sIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHJlbCkpOworCQkJQ2hhbmdlVmFyTm9kZXMobm9kZSwgMSwgdi0+ dmFybm8sIDApOworCQl9CisKKwkJcmV0dXJuIG5vZGU7CisJfQorCWVsc2UKKwkJcmV0dXJu IGV4cHJlc3Npb25fdHJlZV9tdXRhdG9yKG5vZGUsIGV4cGFuZF9nZW5lcmF0ZWRfY29sdW1u c19pbl9leHByX211dGF0b3IsIHJlbCk7Cit9CisKKworTm9kZSAqCitleHBhbmRfZ2VuZXJh dGVkX2NvbHVtbnNfaW5fZXhwcihOb2RlICpub2RlLCBSZWxhdGlvbiByZWwpCit7CisJVHVw bGVEZXNjCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7CisKKwlpZiAodHVwZGVz Yy0+Y29uc3RyICYmIHR1cGRlc2MtPmNvbnN0ci0+aGFzX2dlbmVyYXRlZCkKKwkJcmV0dXJu IGV4cHJlc3Npb25fdHJlZV9tdXRhdG9yKG5vZGUsCisJCQkJCQkJCQkgICBleHBhbmRfZ2Vu ZXJhdGVkX2NvbHVtbnNfaW5fZXhwcl9tdXRhdG9yLAorCQkJCQkJCQkJICAgcmVsKTsKKwll bHNlCisJCXJldHVybiBub2RlOworfQorCit0eXBlZGVmIHN0cnVjdAoreworCS8qIGxpc3Qg b2YgcmFuZ2UgdGFibGVzLCBpbm5lcm1vc3QgbGFzdCAqLworCUxpc3QgICAgICAgKnJ0YWJs ZXM7Cit9IGV4cGFuZF9nZW5lcmF0ZWRfY29udGV4dDsKKworc3RhdGljIE5vZGUgKgorZXhw YW5kX2dlbmVyYXRlZF9jb2x1bW5zX2luX3F1ZXJ5X211dGF0b3IoTm9kZSAqbm9kZSwgZXhw YW5kX2dlbmVyYXRlZF9jb250ZXh0ICpjb250ZXh0KQoreworCWlmIChub2RlID09IE5VTEwp CisJCXJldHVybiBOVUxMOworCisJaWYgKElzQShub2RlLCBWYXIpKQorCXsKKwkJVmFyICp2 ID0gKFZhciAqKSBub2RlOworCQlPaWQJCQlyZWxpZDsKKwkJQXR0ck51bWJlcglhdHRudW07 CisJCUxpc3QJICAgKnJ0YWJsZSA9IGxpc3RfbnRoX25vZGUoTGlzdCwKKwkJCQkJCQkJCQkg ICBjb250ZXh0LT5ydGFibGVzLAorCQkJCQkJCQkJCSAgIGxpc3RfbGVuZ3RoKGNvbnRleHQt PnJ0YWJsZXMpIC0gdi0+dmFybGV2ZWxzdXAgLSAxKTsKKworCQlyZWxpZCA9IHJ0X2ZldGNo KHYtPnZhcm5vLCBydGFibGUpLT5yZWxpZDsKKwkJYXR0bnVtID0gdi0+dmFyYXR0bm87CisK KwkJaWYgKCFyZWxpZCB8fCAhYXR0bnVtKQorCQkJcmV0dXJuIG5vZGU7CisKKwkJaWYgKGdl dF9hdHRnZW5lcmF0ZWQocmVsaWQsIGF0dG51bSkgPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9W SVJUVUFMKQorCQl7CisJCQlSZWxhdGlvbiBydF9lbnRyeV9yZWxhdGlvbiA9IGhlYXBfb3Bl bihyZWxpZCwgTm9Mb2NrKTsKKworCQkJbm9kZSA9IGJ1aWxkX2NvbHVtbl9kZWZhdWx0KHJ0 X2VudHJ5X3JlbGF0aW9uLCBhdHRudW0pOworCQkJQ2hhbmdlVmFyTm9kZXMobm9kZSwgMSwg di0+dmFybm8sIHYtPnZhcmxldmVsc3VwKTsKKworCQkJaGVhcF9jbG9zZShydF9lbnRyeV9y ZWxhdGlvbiwgTm9Mb2NrKTsKKwkJfQorCisJCXJldHVybiBub2RlOworCX0KKwllbHNlIGlm IChJc0Eobm9kZSwgUXVlcnkpKQorCXsKKwkJUXVlcnkJICAgKnF1ZXJ5ID0gKFF1ZXJ5ICop IG5vZGU7CisJCU5vZGUJICAgKnJlc3VsdDsKKworCQljb250ZXh0LT5ydGFibGVzID0gbGFw cGVuZChjb250ZXh0LT5ydGFibGVzLCBxdWVyeS0+cnRhYmxlKTsKKwkJcmVzdWx0ID0gKE5v ZGUgKikgcXVlcnlfdHJlZV9tdXRhdG9yKHF1ZXJ5LAorCQkJCQkJCQkJCQkgZXhwYW5kX2dl bmVyYXRlZF9jb2x1bW5zX2luX3F1ZXJ5X211dGF0b3IsCisJCQkJCQkJCQkJCSBjb250ZXh0 LAorCQkJCQkJCQkJCQkgUVRXX0RPTlRfQ09QWV9RVUVSWSk7CisJCWNvbnRleHQtPnJ0YWJs ZXMgPSBsaXN0X3RydW5jYXRlKGNvbnRleHQtPnJ0YWJsZXMsIGxpc3RfbGVuZ3RoKGNvbnRl eHQtPnJ0YWJsZXMpIC0gMSk7CisJCXJldHVybiByZXN1bHQ7CisJfQorCWVsc2UKKwkJcmV0 dXJuIGV4cHJlc3Npb25fdHJlZV9tdXRhdG9yKG5vZGUsIGV4cGFuZF9nZW5lcmF0ZWRfY29s dW1uc19pbl9xdWVyeV9tdXRhdG9yLCBjb250ZXh0KTsKK30KKworCiAvKgogICogUXVlcnlS ZXdyaXRlIC0KICAqCSAgUHJpbWFyeSBlbnRyeSBwb2ludCB0byB0aGUgcXVlcnkgcmV3cml0 ZXIuCkBAIC0zNzMxLDYgKzM4NTEsMjQgQEAgUXVlcnlSZXdyaXRlKFF1ZXJ5ICpwYXJzZXRy ZWUpCiAJLyoKIAkgKiBTdGVwIDMKIAkgKgorCSAqIEV4cGFuZCBnZW5lcmF0ZWQgY29sdW1u cy4KKwkgKi8KKwlmb3JlYWNoKGwsIHF1ZXJ5bGlzdCkKKwl7CisJCVF1ZXJ5CSAgICpxdWVy eSA9IChRdWVyeSAqKSBsZmlyc3QobCk7CisJCWV4cGFuZF9nZW5lcmF0ZWRfY29udGV4dCBj b250ZXh0OworCisJCWNvbnRleHQucnRhYmxlcyA9IGxpc3RfbWFrZTEocXVlcnktPnJ0YWJs ZSk7CisKKwkJcXVlcnkgPSBxdWVyeV90cmVlX211dGF0b3IocXVlcnksCisJCQkJCQkJCSAg IGV4cGFuZF9nZW5lcmF0ZWRfY29sdW1uc19pbl9xdWVyeV9tdXRhdG9yLAorCQkJCQkJCQkg ICAmY29udGV4dCwKKwkJCQkJCQkJICAgUVRXX0RPTlRfQ09QWV9RVUVSWSk7CisJfQorCisJ LyoKKwkgKiBTdGVwIDQKKwkgKgogCSAqIERldGVybWluZSB3aGljaCwgaWYgYW55LCBvZiB0 aGUgcmVzdWx0aW5nIHF1ZXJpZXMgaXMgc3VwcG9zZWQgdG8gc2V0CiAJICogdGhlIGNvbW1h bmQtcmVzdWx0IHRhZzsgYW5kIHVwZGF0ZSB0aGUgY2FuU2V0VGFnIGZpZWxkcyBhY2NvcmRp bmdseS4KIAkgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2Nh Y2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwppbmRleCA4OTJk ZGMwZDQ4Li5kN2RiOGFhNWEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9sc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUu YwpAQCAtODIxLDYgKzgyMSwzOSBAQCBnZXRfYXR0bnVtKE9pZCByZWxpZCwgY29uc3QgY2hh ciAqYXR0bmFtZSkKIAkJcmV0dXJuIEludmFsaWRBdHRyTnVtYmVyOwogfQogCisvKgorICog Z2V0X2F0dGdlbmVyYXRlZAorICoKKyAqCQlHaXZlbiB0aGUgcmVsYXRpb24gaWQgYW5kIHRo ZSBhdHRyaWJ1dGUgbmFtZSwKKyAqCQlyZXR1cm4gdGhlICJhdHRnZW5lcmF0ZWQiIGZpZWxk IGZyb20gdGhlIGF0dHJpYnV0ZSByZWxhdGlvbi4KKyAqCisgKgkJRXJyb3JzIGlmIG5vdCBm b3VuZC4KKyAqCisgKgkJU2luY2Ugbm90IGdlbmVyYXRlZCBpcyByZXByZXNlbnRlZCBieSAn XDAnLCB0aGlzIGNhbiBhbHNvIGJlIHVzZWQgYXMgYQorICoJCUJvb2xlYW4gdGVzdC4KKyAq LworY2hhcgorZ2V0X2F0dGdlbmVyYXRlZChPaWQgcmVsaWQsIEF0dHJOdW1iZXIgYXR0bnVt KQoreworCUhlYXBUdXBsZQl0cDsKKworCXRwID0gU2VhcmNoU3lzQ2FjaGUyKEFUVE5VTSwK KwkJCQkJCSBPYmplY3RJZEdldERhdHVtKHJlbGlkKSwKKwkJCQkJCSBJbnQxNkdldERhdHVt KGF0dG51bSkpOworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwl7CisJCUZvcm1fcGdf YXR0cmlidXRlIGF0dF90dXAgPSAoRm9ybV9wZ19hdHRyaWJ1dGUpIEdFVFNUUlVDVCh0cCk7 CisJCWNoYXIJCXJlc3VsdDsKKworCQlyZXN1bHQgPSBhdHRfdHVwLT5hdHRnZW5lcmF0ZWQ7 CisJCVJlbGVhc2VTeXNDYWNoZSh0cCk7CisJCXJldHVybiByZXN1bHQ7CisJfQorCWVsc2UK KwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGF0dHJpYnV0ZSAlZCBv ZiByZWxhdGlvbiAldSIsCisJCQkgYXR0bnVtLCByZWxpZCk7Cit9CisKIC8qCiAgKiBnZXRf YXR0dHlwZQogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BhcnRj YWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGFydGNhY2hlLmMKaW5kZXggNTc1 NzMwMWQwNS4uMzFjN2MyNzY0MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcGFydGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGFydGNhY2hl LmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvY2xhdXNlcy5oIgog I2luY2x1ZGUgIm9wdGltaXplci9wbGFubmVyLmgiCiAjaW5jbHVkZSAicGFydGl0aW9uaW5n L3BhcnRib3VuZHMuaCIKKyNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgiCiAj aW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgog I2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgpAQCAtMTMzLDYgKzEzNCw4IEBAIFJlbGF0 aW9uQnVpbGRQYXJ0aXRpb25LZXkoUmVsYXRpb24gcmVsYXRpb24pCiAJCWV4cHIgPSBzdHJp bmdUb05vZGUoZXhwclN0cmluZyk7CiAJCXBmcmVlKGV4cHJTdHJpbmcpOwogCisJCWV4cHIg PSBleHBhbmRfZ2VuZXJhdGVkX2NvbHVtbnNfaW5fZXhwcihleHByLCByZWxhdGlvbik7CisK IAkJLyoKIAkJICogUnVuIHRoZSBleHByZXNzaW9ucyB0aHJvdWdoIGNvbnN0LXNpbXBsaWZp Y2F0aW9uIHNpbmNlIHRoZSBwbGFubmVyCiAJCSAqIHdpbGwgYmUgY29tcGFyaW5nIHRoZW0g dG8gc2ltaWxhcmx5LXByb2Nlc3NlZCBxdWFsIGNsYXVzZSBvcGVyYW5kcywKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4IGZkM2QwMTBiNzcuLjU0Yjk1OWNkZWQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtNTEwLDYgKzUxMCw3IEBAIFJl bGF0aW9uQnVpbGRUdXBsZURlc2MoUmVsYXRpb24gcmVsYXRpb24pCiAJY29uc3RyID0gKFR1 cGxlQ29uc3RyICopIE1lbW9yeUNvbnRleHRBbGxvYyhDYWNoZU1lbW9yeUNvbnRleHQsCiAJ CQkJCQkJCQkJCQlzaXplb2YoVHVwbGVDb25zdHIpKTsKIAljb25zdHItPmhhc19ub3RfbnVs bCA9IGZhbHNlOworCWNvbnN0ci0+aGFzX2dlbmVyYXRlZCA9IGZhbHNlOwogCiAJLyoKIAkg KiBGb3JtIGEgc2NhbiBrZXkgdGhhdCBzZWxlY3RzIG9ubHkgdXNlciBhdHRyaWJ1dGVzIChh dHRudW0gPiAwKS4KQEAgLTU2Miw2ICs1NjMsOCBAQCBSZWxhdGlvbkJ1aWxkVHVwbGVEZXNj KFJlbGF0aW9uIHJlbGF0aW9uKQogCQkvKiBVcGRhdGUgY29uc3RyYWludC9kZWZhdWx0IGlu Zm8gKi8KIAkJaWYgKGF0dHAtPmF0dG5vdG51bGwpCiAJCQljb25zdHItPmhhc19ub3RfbnVs bCA9IHRydWU7CisJCWlmIChhdHRwLT5hdHRnZW5lcmF0ZWQpCisJCQljb25zdHItPmhhc19n ZW5lcmF0ZWQgPSB0cnVlOwogCiAJCS8qIElmIHRoZSBjb2x1bW4gaGFzIGEgZGVmYXVsdCwg ZmlsbCBpdCBpbnRvIHRoZSBhdHRyZGVmIGFycmF5ICovCiAJCWlmIChhdHRwLT5hdHRoYXNk ZWYpCkBAIC0zMTg3LDYgKzMxOTAsNyBAQCBSZWxhdGlvbkJ1aWxkTG9jYWxSZWxhdGlvbihj b25zdCBjaGFyICpyZWxuYW1lLAogCQlGb3JtX3BnX2F0dHJpYnV0ZSBkYXR0ID0gVHVwbGVE ZXNjQXR0cihyZWwtPnJkX2F0dCwgaSk7CiAKIAkJZGF0dC0+YXR0aWRlbnRpdHkgPSBzYXR0 LT5hdHRpZGVudGl0eTsKKwkJZGF0dC0+YXR0Z2VuZXJhdGVkID0gc2F0dC0+YXR0Z2VuZXJh dGVkOwogCQlkYXR0LT5hdHRub3RudWxsID0gc2F0dC0+YXR0bm90bnVsbDsKIAkJaGFzX25v dF9udWxsIHw9IHNhdHQtPmF0dG5vdG51bGw7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggYzhk MDFlZDRhNC4uN2Q2YzdkM2IyMCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC0xOTg3LDYgKzE5ODcs MTEgQEAgZHVtcFRhYmxlRGF0YV9pbnNlcnQoQXJjaGl2ZSAqZm91dCwgdm9pZCAqZGNvbnRl eHQpCiAJCQl7CiAJCQkJaWYgKGZpZWxkID4gMCkKIAkJCQkJYXJjaHB1dHMoIiwgIiwgZm91 dCk7CisJCQkJaWYgKHRiaW5mby0+YXR0Z2VuZXJhdGVkW2ZpZWxkXSkKKwkJCQl7CisJCQkJ CWFyY2hwdXRzKCJERUZBVUxUIiwgZm91dCk7CisJCQkJCWNvbnRpbnVlOworCQkJCX0KIAkJ CQlpZiAoUFFnZXRpc251bGwocmVzLCB0dXBsZSwgZmllbGQpKQogCQkJCXsKIAkJCQkJYXJj aHB1dHMoIk5VTEwiLCBmb3V0KTsKQEAgLTgxMzUsNiArODE0MCw3IEBAIGdldFRhYmxlQXR0 cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQog CWludAkJCWlfYXR0bm90bnVsbDsKIAlpbnQJCQlpX2F0dGhhc2RlZjsKIAlpbnQJCQlpX2F0 dGlkZW50aXR5OworCWludAkJCWlfYXR0Z2VuZXJhdGVkOwogCWludAkJCWlfYXR0aXNkcm9w cGVkOwogCWludAkJCWlfYXR0bGVuOwogCWludAkJCWlfYXR0YWxpZ247CkBAIC04MTg4LDYg KzgxOTQsMTMgQEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRi bGluZm8sIGludCBudW1UYWJsZXMpCiAJCQkJCQkgICJhLmF0dGlzbG9jYWwsXG4iCiAJCQkJ CQkgICJwZ19jYXRhbG9nLmZvcm1hdF90eXBlKHQub2lkLCBhLmF0dHR5cG1vZCkgQVMgYXR0 dHlwbmFtZSxcbiIpOwogCisJCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDEyMDAwMCkK KwkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsCisJCQkJCQkJICAiYS5hdHRnZW5lcmF0ZWQsXG4i KTsKKwkJZWxzZQorCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwKKwkJCQkJCQkgICInJyBBUyBh dHRnZW5lcmF0ZWQsXG4iKTsKKwogCQlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxMTAw MDApCiAJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLAogCQkJCQkJCSAgIkNBU0UgV0hFTiBhLmF0 dGhhc21pc3NpbmcgQU5EIE5PVCBhLmF0dGlzZHJvcHBlZCAiCkBAIC04MjYwLDYgKzgyNzMs NyBAQCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywg aW50IG51bVRhYmxlcykKIAkJaV9hdHRub3RudWxsID0gUFFmbnVtYmVyKHJlcywgImF0dG5v dG51bGwiKTsKIAkJaV9hdHRoYXNkZWYgPSBQUWZudW1iZXIocmVzLCAiYXR0aGFzZGVmIik7 CiAJCWlfYXR0aWRlbnRpdHkgPSBQUWZudW1iZXIocmVzLCAiYXR0aWRlbnRpdHkiKTsKKwkJ aV9hdHRnZW5lcmF0ZWQgPSBQUWZudW1iZXIocmVzLCAiYXR0Z2VuZXJhdGVkIik7CiAJCWlf YXR0aXNkcm9wcGVkID0gUFFmbnVtYmVyKHJlcywgImF0dGlzZHJvcHBlZCIpOwogCQlpX2F0 dGxlbiA9IFBRZm51bWJlcihyZXMsICJhdHRsZW4iKTsKIAkJaV9hdHRhbGlnbiA9IFBRZm51 bWJlcihyZXMsICJhdHRhbGlnbiIpOwpAQCAtODI3Nyw2ICs4MjkxLDcgQEAgZ2V0VGFibGVB dHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMp CiAJCXRiaW5mby0+YXR0c3RvcmFnZSA9IChjaGFyICopIHBnX21hbGxvYyhudHVwcyAqIHNp emVvZihjaGFyKSk7CiAJCXRiaW5mby0+dHlwc3RvcmFnZSA9IChjaGFyICopIHBnX21hbGxv YyhudHVwcyAqIHNpemVvZihjaGFyKSk7CiAJCXRiaW5mby0+YXR0aWRlbnRpdHkgPSAoY2hh ciAqKSBwZ19tYWxsb2MobnR1cHMgKiBzaXplb2YoY2hhcikpOworCQl0YmluZm8tPmF0dGdl bmVyYXRlZCA9IChjaGFyICopIHBnX21hbGxvYyhudHVwcyAqIHNpemVvZihjaGFyKSk7CiAJ CXRiaW5mby0+YXR0aXNkcm9wcGVkID0gKGJvb2wgKikgcGdfbWFsbG9jKG50dXBzICogc2l6 ZW9mKGJvb2wpKTsKIAkJdGJpbmZvLT5hdHRsZW4gPSAoaW50ICopIHBnX21hbGxvYyhudHVw cyAqIHNpemVvZihpbnQpKTsKIAkJdGJpbmZvLT5hdHRhbGlnbiA9IChjaGFyICopIHBnX21h bGxvYyhudHVwcyAqIHNpemVvZihjaGFyKSk7CkBAIC04MzAzLDYgKzgzMTgsNyBAQCBnZXRU YWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRh YmxlcykKIAkJCXRiaW5mby0+YXR0c3RvcmFnZVtqXSA9ICooUFFnZXR2YWx1ZShyZXMsIGos IGlfYXR0c3RvcmFnZSkpOwogCQkJdGJpbmZvLT50eXBzdG9yYWdlW2pdID0gKihQUWdldHZh bHVlKHJlcywgaiwgaV90eXBzdG9yYWdlKSk7CiAJCQl0YmluZm8tPmF0dGlkZW50aXR5W2pd ID0gKihQUWdldHZhbHVlKHJlcywgaiwgaV9hdHRpZGVudGl0eSkpOworCQkJdGJpbmZvLT5h dHRnZW5lcmF0ZWRbal0gPSAqKFBRZ2V0dmFsdWUocmVzLCBqLCBpX2F0dGdlbmVyYXRlZCkp OwogCQkJdGJpbmZvLT5uZWVkc19vdmVycmlkZSA9IHRiaW5mby0+bmVlZHNfb3ZlcnJpZGUg fHwgKHRiaW5mby0+YXR0aWRlbnRpdHlbal0gPT0gQVRUUklCVVRFX0lERU5USVRZX0FMV0FZ Uyk7CiAJCQl0YmluZm8tPmF0dGlzZHJvcHBlZFtqXSA9IChQUWdldHZhbHVlKHJlcywgaiwg aV9hdHRpc2Ryb3BwZWQpWzBdID09ICd0Jyk7CiAJCQl0YmluZm8tPmF0dGxlbltqXSA9IGF0 b2koUFFnZXR2YWx1ZShyZXMsIGosIGlfYXR0bGVuKSk7CkBAIC0xNTU3OCw2ICsxNTU5NCwy MyBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmluZm8p CiAJCQkJCQkJCQkJICB0YmluZm8tPmF0dHR5cG5hbWVzW2pdKTsKIAkJCQkJfQogCisJCQkJ CWlmIChoYXNfZGVmYXVsdCkKKwkJCQkJeworCQkJCQkJaWYgKHRiaW5mby0+YXR0Z2VuZXJh dGVkW2pdID09IEFUVFJJQlVURV9HRU5FUkFURURfU1RPUkVEKQorCQkJCQkJCWFwcGVuZFBR RXhwQnVmZmVyKHEsICIgR0VORVJBVEVEIEFMV0FZUyBBUyAoJXMpIFNUT1JFRCIsCisJCQkJ CQkJCQkJCSAgdGJpbmZvLT5hdHRyZGVmc1tqXS0+YWRlZl9leHByKTsKKwkJCQkJCWVsc2Ug aWYgKHRiaW5mby0+YXR0Z2VuZXJhdGVkW2pdID09IEFUVFJJQlVURV9HRU5FUkFURURfVklS VFVBTCkKKwkJCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAiIEdFTkVSQVRFRCBBTFdBWVMg QVMgKCVzKSIsCisJCQkJCQkJCQkJCSAgdGJpbmZvLT5hdHRyZGVmc1tqXS0+YWRlZl9leHBy KTsKKwkJCQkJCWVsc2UKKwkJCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAiIERFRkFVTFQg JXMiLAorCQkJCQkJCQkJCQkgIHRiaW5mby0+YXR0cmRlZnNbal0tPmFkZWZfZXhwcik7CisJ CQkJCX0KKworCisJCQkJCWlmIChoYXNfbm90bnVsbCkKKwkJCQkJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHEsICIgTk9UIE5VTEwiKTsKKwogCQkJCQkvKiBBZGQgY29sbGF0aW9uIGlmIG5v dCBkZWZhdWx0IGZvciB0aGUgdHlwZSAqLwogCQkJCQlpZiAoT2lkSXNWYWxpZCh0YmluZm8t PmF0dGNvbGxhdGlvbltqXSkpCiAJCQkJCXsKQEAgLTE1NTg4LDEzICsxNTYyMSw2IEBAIGR1 bXBUYWJsZVNjaGVtYShBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRiaW5mbykKIAkJCQkJ CQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAiIENPTExBVEUgJXMiLAogCQkJCQkJCQkJCQkgIGZt dFF1YWxpZmllZER1bXBhYmxlKGNvbGwpKTsKIAkJCQkJfQotCi0JCQkJCWlmIChoYXNfZGVm YXVsdCkKLQkJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICIgREVGQVVMVCAlcyIsCi0JCQkJ CQkJCQkJICB0YmluZm8tPmF0dHJkZWZzW2pdLT5hZGVmX2V4cHIpOwotCi0JCQkJCWlmICho YXNfbm90bnVsbCkKLQkJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsICIgTk9UIE5VTEwi KTsKIAkJCQl9CiAJCQl9CiAKQEAgLTE4MTQxLDYgKzE4MTY3LDcgQEAgZm10Q29weUNvbHVt bkxpc3QoY29uc3QgVGFibGVJbmZvICp0aSwgUFFFeHBCdWZmZXIgYnVmZmVyKQogCWludAkJ CW51bWF0dHMgPSB0aS0+bnVtYXR0czsKIAljaGFyCSAgKiphdHRuYW1lcyA9IHRpLT5hdHRu YW1lczsKIAlib29sCSAgICphdHRpc2Ryb3BwZWQgPSB0aS0+YXR0aXNkcm9wcGVkOworCWNo YXIJICAgKmF0dGdlbmVyYXRlZCA9IHRpLT5hdHRnZW5lcmF0ZWQ7CiAJYm9vbAkJbmVlZENv bW1hOwogCWludAkJCWk7CiAKQEAgLTE4MTUwLDYgKzE4MTc3LDggQEAgZm10Q29weUNvbHVt bkxpc3QoY29uc3QgVGFibGVJbmZvICp0aSwgUFFFeHBCdWZmZXIgYnVmZmVyKQogCXsKIAkJ aWYgKGF0dGlzZHJvcHBlZFtpXSkKIAkJCWNvbnRpbnVlOworCQlpZiAoYXR0Z2VuZXJhdGVk W2ldKQorCQkJY29udGludWU7CiAJCWlmIChuZWVkQ29tbWEpCiAJCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihidWZmZXIsICIsICIpOwogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihidWZmZXIs IGZtdElkKGF0dG5hbWVzW2ldKSk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCA2ODVhZDc4NjY5Li5k OGMxYzk5MjdlIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCisrKyBi L3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAgLTMxMCw2ICszMTAsNyBAQCB0eXBlZGVm IHN0cnVjdCBfdGFibGVJbmZvCiAJY2hhcgkgICAqdHlwc3RvcmFnZTsJCS8qIHR5cGUgc3Rv cmFnZSBzY2hlbWUgKi8KIAlib29sCSAgICphdHRpc2Ryb3BwZWQ7CS8qIHRydWUgaWYgYXR0 ciBpcyBkcm9wcGVkOyBkb24ndCBkdW1wIGl0ICovCiAJY2hhcgkgICAqYXR0aWRlbnRpdHk7 CisJY2hhcgkgICAqYXR0Z2VuZXJhdGVkOwogCWludAkJICAgKmF0dGxlbjsJCQkvKiBhdHRy aWJ1dGUgbGVuZ3RoLCB1c2VkIGJ5IGJpbmFyeV91cGdyYWRlICovCiAJY2hhcgkgICAqYXR0 YWxpZ247CQkvKiBhdHRyaWJ1dGUgYWxpZ24sIHVzZWQgYnkgYmluYXJ5X3VwZ3JhZGUgKi8K IAlib29sCSAgICphdHRpc2xvY2FsOwkJLyogdHJ1ZSBpZiBhdHRyIGhhcyBsb2NhbCBkZWZp bml0aW9uICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMg Yi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMKaW5kZXggYTFkM2NlZDMxOC4uYjZm MmE5MjM5NiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jCisr KyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYwpAQCAtMTEwMiw2ICsxMTAyLDE2 IEBAIHJlcGFpckRlcGVuZGVuY3lMb29wKER1bXBhYmxlT2JqZWN0ICoqbG9vcCwKIAkJfQog CX0KIAorCS8qIExvb3Agb2YgdGFibGUgd2l0aCBpdHNlbGYsIGhhcHBlbnMgd2l0aCBnZW5l cmF0ZWQgY29sdW1ucyAqLworCWlmIChuTG9vcCA9PSAxKQorCXsKKwkJaWYgKGxvb3BbMF0t Pm9ialR5cGUgPT0gRE9fVEFCTEUpCisJCXsKKwkJCXJlbW92ZU9iamVjdERlcGVuZGVuY3ko bG9vcFswXSwgbG9vcFswXS0+ZHVtcElkKTsKKwkJCXJldHVybjsKKwkJfQorCX0KKwogCS8q CiAJICogSWYgYWxsIHRoZSBvYmplY3RzIGFyZSBUQUJMRV9EQVRBIGl0ZW1zLCB3aGF0IHdl IG11c3QgaGF2ZSBpcyBhCiAJICogY2lyY3VsYXIgc2V0IG9mIGZvcmVpZ24ga2V5IGNvbnN0 cmFpbnRzIChvciBhIHNpbmdsZSBzZWxmLXJlZmVyZW50aWFsCmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9w Z19kdW1wLnBsCmluZGV4IGVjNzUxYTdjMjMuLjFkZDg1OWYxYzUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9iaW4vcGdfZHVtcC90 LzAwMl9wZ19kdW1wLnBsCkBAIC0yNDIwLDYgKzI0MjAsMjMgQEAKIAkJdW5saWtlID0+IHsg ZXhjbHVkZV9kdW1wX3Rlc3Rfc2NoZW1hID0+IDEsIH0sCiAJfSwKIAorCSdDUkVBVEUgVEFC TEUgdGVzdF90YWJsZV9nZW5lcmF0ZWQnID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDMsCisJ CWNyZWF0ZV9zcWwgICA9PiAnQ1JFQVRFIFRBQkxFIGR1bXBfdGVzdC50ZXN0X3RhYmxlX2dl bmVyYXRlZCAoCisJCQkJCQkgICBjb2wxIGludCBwcmltYXJ5IGtleSwKKwkJCQkJCSAgIGNv bDIgaW50IGdlbmVyYXRlZCBhbHdheXMgYXMgKGNvbDEgKiAyKQorCQkJCQkgICApOycsCisJ CXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBUQUJMRSBkdW1wX3Rlc3QudGVzdF90YWJs ZV9nZW5lcmF0ZWQgKFxFXG4KKwkJCVxzK1xRY29sMSBpbnRlZ2VyIE5PVCBOVUxMLFxFXG4K KwkJCVxzK1xRY29sMiBpbnRlZ2VyIEdFTkVSQVRFRCBBTFdBWVMgQVMgKChjb2wxICogMikp XEVcbgorCQkJXCk7CisJCQkveG1zLAorCQlsaWtlID0+CisJCSAgeyAlZnVsbF9ydW5zLCAl ZHVtcF90ZXN0X3NjaGVtYV9ydW5zLCBzZWN0aW9uX3ByZV9kYXRhID0+IDEsIH0sCisJCXVu bGlrZSA9PiB7IGV4Y2x1ZGVfZHVtcF90ZXN0X3NjaGVtYSA9PiAxLCB9LAorCX0sCisKIAkn Q1JFQVRFIFNUQVRJU1RJQ1MgZXh0ZW5kZWRfc3RhdHNfbm9fb3B0aW9ucycgPT4gewogCQlj cmVhdGVfb3JkZXIgPT4gOTcsCiAJCWNyZWF0ZV9zcWwgICA9PiAnQ1JFQVRFIFNUQVRJU1RJ Q1MgZHVtcF90ZXN0LnRlc3RfZXh0X3N0YXRzX25vX29wdGlvbnMKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXgg NGNhMGRiMWQwYy4uYmJkYzRiOWZhMiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTE0NjIsNiArMTQ2Miw3 IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJ CQkJYXR0bm90bnVsbF9jb2wgPSAtMSwKIAkJCQlhdHRjb2xsX2NvbCA9IC0xLAogCQkJCWF0 dGlkZW50aXR5X2NvbCA9IC0xLAorCQkJCWF0dGdlbmVyYXRlZF9jb2wgPSAtMSwKIAkJCQlp c2luZGV4a2V5X2NvbCA9IC0xLAogCQkJCWluZGV4ZGVmX2NvbCA9IC0xLAogCQkJCWZkd29w dHNfY29sID0gLTEsCkBAIC0xNzg5LDggKzE3OTAsOSBAQCBkZXNjcmliZU9uZVRhYmxlRGV0 YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCiAJaWYgKHNob3dfY29sdW1uX2RldGFp bHMpCiAJeworCQkvKiB1c2UgInByZXR0eSIgbW9kZSBmb3IgZXhwcmVzc2lvbiB0byBhdm9p ZCBleGNlc3NpdmUgcGFyZW50aGVzZXMgKi8KIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1 ZiwKLQkJCQkJCQkgIixcbiAgKFNFTEVDVCBzdWJzdHJpbmcocGdfY2F0YWxvZy5wZ19nZXRf ZXhwcihkLmFkYmluLCBkLmFkcmVsaWQpIGZvciAxMjgpIgorCQkJCQkJCSAiLFxuICAoU0VM RUNUIHN1YnN0cmluZyhwZ19jYXRhbG9nLnBnX2dldF9leHByKGQuYWRiaW4sIGQuYWRyZWxp ZCwgdHJ1ZSkgZm9yIDEyOCkiCiAJCQkJCQkJICJcbiAgIEZST00gcGdfY2F0YWxvZy5wZ19h dHRyZGVmIGQiCiAJCQkJCQkJICJcbiAgIFdIRVJFIGQuYWRyZWxpZCA9IGEuYXR0cmVsaWQg QU5EIGQuYWRudW0gPSBhLmF0dG51bSBBTkQgYS5hdHRoYXNkZWYpIgogCQkJCQkJCSAiLFxu ICBhLmF0dG5vdG51bGwiKTsKQEAgLTE4MDcsNiArMTgwOSwxMSBAQCBkZXNjcmliZU9uZVRh YmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQllbHNlCiAJCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cigmYnVmLCAiLFxuICAnJzo6cGdfY2F0YWxvZy5jaGFyIEFTIGF0dGlk ZW50aXR5Iik7CiAJCWF0dGlkZW50aXR5X2NvbCA9IGNvbHMrKzsKKwkJaWYgKHBzZXQuc3Zl cnNpb24gPj0gMTIwMDAwKQorCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIixcbiAg YS5hdHRnZW5lcmF0ZWQiKTsKKwkJZWxzZQorCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1 ZiwgIixcbiAgJyc6OnBnX2NhdGFsb2cuY2hhciBBUyBhdHRnZW5lcmF0ZWQiKTsKKwkJYXR0 Z2VuZXJhdGVkX2NvbCA9IGNvbHMrKzsKIAl9CiAJaWYgKHRhYmxlaW5mby5yZWxraW5kID09 IFJFTEtJTkRfSU5ERVggfHwKIAkJdGFibGVpbmZvLnJlbGtpbmQgPT0gUkVMS0lORF9QQVJU SVRJT05FRF9JTkRFWCkKQEAgLTE5ODAsNiArMTk4Nyw3IEBAIGRlc2NyaWJlT25lVGFibGVE ZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCWlmIChzaG93X2NvbHVtbl9kZXRh aWxzKQogCQl7CiAJCQljaGFyCSAgICppZGVudGl0eTsKKwkJCWNoYXIJICAgKmdlbmVyYXRl ZDsKIAkJCWNoYXIJICAgKmRlZmF1bHRfc3RyID0gIiI7CiAKIAkJCXByaW50VGFibGVBZGRD ZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgYXR0Y29sbF9jb2wpLCBmYWxzZSwgZmFs c2UpOwpAQCAtMTk4OSwxNiArMTk5NywyMSBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhj b25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJCQkJCSAgZmFsc2UsIGZhbHNlKTsKIAogCQkJ aWRlbnRpdHkgPSBQUWdldHZhbHVlKHJlcywgaSwgYXR0aWRlbnRpdHlfY29sKTsKKwkJCWdl bmVyYXRlZCA9IFBRZ2V0dmFsdWUocmVzLCBpLCBhdHRnZW5lcmF0ZWRfY29sKTsKIAotCQkJ aWYgKCFpZGVudGl0eVswXSkKLQkJCQkvKiAobm90ZTogYWJvdmUgd2UgY3V0IG9mZiB0aGUg J2RlZmF1bHQnIHN0cmluZyBhdCAxMjgpICovCi0JCQkJZGVmYXVsdF9zdHIgPSBQUWdldHZh bHVlKHJlcywgaSwgYXR0cmRlZl9jb2wpOwotCQkJZWxzZSBpZiAoaWRlbnRpdHlbMF0gPT0g QVRUUklCVVRFX0lERU5USVRZX0FMV0FZUykKKwkJCWlmIChpZGVudGl0eVswXSA9PSBBVFRS SUJVVEVfSURFTlRJVFlfQUxXQVlTKQogCQkJCWRlZmF1bHRfc3RyID0gImdlbmVyYXRlZCBh bHdheXMgYXMgaWRlbnRpdHkiOwogCQkJZWxzZSBpZiAoaWRlbnRpdHlbMF0gPT0gQVRUUklC VVRFX0lERU5USVRZX0JZX0RFRkFVTFQpCiAJCQkJZGVmYXVsdF9zdHIgPSAiZ2VuZXJhdGVk IGJ5IGRlZmF1bHQgYXMgaWRlbnRpdHkiOworCQkJZWxzZSBpZiAoZ2VuZXJhdGVkWzBdID09 IEFUVFJJQlVURV9HRU5FUkFURURfU1RPUkVEKQorCQkJCWRlZmF1bHRfc3RyID0gcHNwcmlu dGYoImdlbmVyYXRlZCBhbHdheXMgYXMgKCVzKSBzdG9yZWQiLCBQUWdldHZhbHVlKHJlcywg aSwgYXR0cmRlZl9jb2wpKTsKKwkJCWVsc2UgaWYgKGdlbmVyYXRlZFswXSA9PSBBVFRSSUJV VEVfR0VORVJBVEVEX1ZJUlRVQUwpCisJCQkJZGVmYXVsdF9zdHIgPSBwc3ByaW50ZigiZ2Vu ZXJhdGVkIGFsd2F5cyBhcyAoJXMpIiwgUFFnZXR2YWx1ZShyZXMsIGksIGF0dHJkZWZfY29s KSk7CisJCQllbHNlCisJCQkJLyogKG5vdGU6IGFib3ZlIHdlIGN1dCBvZmYgdGhlICdkZWZh dWx0JyBzdHJpbmcgYXQgMTI4KSAqLworCQkJCWRlZmF1bHRfc3RyID0gUFFnZXR2YWx1ZShy ZXMsIGksIGF0dHJkZWZfY29sKTsKIAotCQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIGRl ZmF1bHRfc3RyLCBmYWxzZSwgZmFsc2UpOworCQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQs IGRlZmF1bHRfc3RyLCBmYWxzZSwgZ2VuZXJhdGVkWzBdID8gdHJ1ZSA6IGZhbHNlKTsKIAkJ fQogCiAJCS8qIEluZm8gZm9yIGluZGV4IGNvbHVtbnMgKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2FjY2Vzcy90dXBkZXNjLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdHVwZGVzYy5o CmluZGV4IDcwODE2MGY2NDUuLjdhMDFkNGVhNTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy90dXBkZXNjLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3R1cGRlc2MuaApA QCAtNDQsNiArNDQsNyBAQCB0eXBlZGVmIHN0cnVjdCB0dXBsZUNvbnN0cgogCXVpbnQxNgkJ bnVtX2RlZnZhbDsKIAl1aW50MTYJCW51bV9jaGVjazsKIAlib29sCQloYXNfbm90X251bGw7 CisJYm9vbAkJaGFzX2dlbmVyYXRlZDsKIH0gVHVwbGVDb25zdHI7CiAKIC8qCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv aGVhcC5oCmluZGV4IDM5ZjA0YjA2ZWUuLjhiZTk0MjM4MDQgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvaGVhcC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVhcC5o CkBAIC0xMTYsNyArMTE2LDggQEAgZXh0ZXJuIE5vZGUgKmNvb2tEZWZhdWx0KFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAkJCU5vZGUgKnJhd19kZWZhdWx0LAogCQkJT2lkIGF0dHR5cGlkLAog CQkJaW50MzIgYXR0dHlwbW9kLAotCQkJY29uc3QgY2hhciAqYXR0bmFtZSk7CisJCQljb25z dCBjaGFyICphdHRuYW1lLAorCQkJY2hhciBhdHRnZW5lcmF0ZWQpOwogCiBleHRlcm4gdm9p ZCBEZWxldGVSZWxhdGlvblR1cGxlKE9pZCByZWxpZCk7CiBleHRlcm4gdm9pZCBEZWxldGVB dHRyaWJ1dGVUdXBsZXMoT2lkIHJlbGlkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfYXR0cmlidXRlLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2F0dHJpYnV0 ZS5oCmluZGV4IGRjMzY3NTNlZGUuLmNkNDI5NzJjNDcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfYXR0cmlidXRlLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19hdHRyaWJ1dGUuaApAQCAtMTQwLDYgKzE0MCw5IEBAIENBVEFMT0cocGdfYXR0cmlidXRl LDEyNDksQXR0cmlidXRlUmVsYXRpb25JZCkgQktJX0JPT1RTVFJBUCBCS0lfV0lUSE9VVF9P SURTIEJLCiAJLyogT25lIG9mIHRoZSBBVFRSSUJVVEVfSURFTlRJVFlfKiBjb25zdGFudHMg YmVsb3csIG9yICdcMCcgKi8KIAljaGFyCQlhdHRpZGVudGl0eSBCS0lfREVGQVVMVCgnXDAn KTsKIAorCS8qIE9uZSBvZiB0aGUgQVRUUklCVVRFX0dFTkVSQVRFRF8qIGNvbnN0YW50cyBi ZWxvdywgb3IgJ1wwJyAqLworCWNoYXIJCWF0dGdlbmVyYXRlZCBCS0lfREVGQVVMVCgnXDAn KTsKKwogCS8qIElzIGRyb3BwZWQgKGllLCBsb2dpY2FsbHkgaW52aXNpYmxlKSBvciBub3Qg Ki8KIAlib29sCQlhdHRpc2Ryb3BwZWQgQktJX0RFRkFVTFQoZik7CiAKQEAgLTIwMSw2ICsy MDQsOSBAQCB0eXBlZGVmIEZvcm1EYXRhX3BnX2F0dHJpYnV0ZSAqRm9ybV9wZ19hdHRyaWJ1 dGU7CiAjZGVmaW5lCQkgIEFUVFJJQlVURV9JREVOVElUWV9BTFdBWVMJCSdhJwogI2RlZmlu ZQkJICBBVFRSSUJVVEVfSURFTlRJVFlfQllfREVGQVVMVCAnZCcKIAorI2RlZmluZQkJICBB VFRSSUJVVEVfR0VORVJBVEVEX1NUT1JFRAkncycKKyNkZWZpbmUJCSAgQVRUUklCVVRFX0dF TkVSQVRFRF9WSVJUVUFMCSd2JworCiAjZW5kaWYJCQkJCQkJLyogRVhQT1NFX1RPX0NMSUVO VF9DT0RFICovCiAKICNlbmRpZgkJCQkJCQkvKiBQR19BVFRSSUJVVEVfSCAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jbGFzcy5kYXQgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX2NsYXNzLmRhdAppbmRleCA5ZmZmZGVmMzc5Li40OTY0M2I5MzRlIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NsYXNzLmRhdAorKysgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX2NsYXNzLmRhdApAQCAtMzYsNyArMzYsNyBAQAogICByZWxvZnR5 cGUgPT4gJzAnLCByZWxvd25lciA9PiAnUEdVSUQnLCByZWxhbSA9PiAnMCcsIHJlbGZpbGVu b2RlID0+ICcwJywKICAgcmVsdGFibGVzcGFjZSA9PiAnMCcsIHJlbHBhZ2VzID0+ICcwJywg cmVsdHVwbGVzID0+ICcwJywgcmVsYWxsdmlzaWJsZSA9PiAnMCcsCiAgIHJlbHRvYXN0cmVs aWQgPT4gJzAnLCByZWxoYXNpbmRleCA9PiAnZicsIHJlbGlzc2hhcmVkID0+ICdmJywKLSAg cmVscGVyc2lzdGVuY2UgPT4gJ3AnLCByZWxraW5kID0+ICdyJywgcmVsbmF0dHMgPT4gJzI0 JywgcmVsY2hlY2tzID0+ICcwJywKKyAgcmVscGVyc2lzdGVuY2UgPT4gJ3AnLCByZWxraW5k ID0+ICdyJywgcmVsbmF0dHMgPT4gJzI1JywgcmVsY2hlY2tzID0+ICcwJywKICAgcmVsaGFz b2lkcyA9PiAnZicsIHJlbGhhc3J1bGVzID0+ICdmJywgcmVsaGFzdHJpZ2dlcnMgPT4gJ2Yn LAogICByZWxoYXNzdWJjbGFzcyA9PiAnZicsIHJlbHJvd3NlY3VyaXR5ID0+ICdmJywgcmVs Zm9yY2Vyb3dzZWN1cml0eSA9PiAnZicsCiAgIHJlbGlzcG9wdWxhdGVkID0+ICd0JywgcmVs cmVwbGlkZW50ID0+ICduJywgcmVsaXNwYXJ0aXRpb24gPT4gJ2YnLApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmggYi9zcmMvaW5jbHVkZS9l eGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuaAppbmRleCAwZDdlNTc5ZTFjLi42NGNlOWVjYWYw IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuaAor KysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuaApAQCAtMTUsNiAr MTUsOCBAQAogCiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAKK2V4dGVybiBIZWFw VHVwbGUgRXhlY0NvbXB1dGVTdG9yZWRHZW5lcmF0ZWQoRVN0YXRlICplc3RhdGUsIFR1cGxl VGFibGVTbG90ICpzbG90KTsKKwogZXh0ZXJuIE1vZGlmeVRhYmxlU3RhdGUgKkV4ZWNJbml0 TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKTsKIGV4dGVybiB2b2lkIEV4ZWNFbmRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZVN0YXRl ICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNSZVNjYW5Nb2RpZnlUYWJsZShNb2RpZnlUYWJs ZVN0YXRlICpub2RlKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggODgwYTAzZTRlNC4u Y2U0ZWIwNGM3NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTQ0NSw2ICs0NDUsOSBA QCB0eXBlZGVmIHN0cnVjdCBSZXN1bHRSZWxJbmZvCiAJLyogYXJyYXkgb2YgY29uc3RyYWlu dC1jaGVja2luZyBleHByIHN0YXRlcyAqLwogCUV4cHJTdGF0ZSAqKnJpX0NvbnN0cmFpbnRF eHByczsKIAorCS8qIGFycmF5IG9mIHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1ucyBleHByIHN0 YXRlcyAqLworCUV4cHJTdGF0ZSAqKnJpX0dlbmVyYXRlZEV4cHJzOworCiAJLyogZm9yIHJl bW92aW5nIGp1bmsgYXR0cmlidXRlcyBmcm9tIHR1cGxlcyAqLwogCUp1bmtGaWx0ZXIgKnJp X2p1bmtGaWx0ZXI7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9k ZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBhYTRhMGRiYTJh Li5hNTYyOTFiOTYxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC02NTYsNiArNjU2 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29sdW1uRGVmCiAJY2hhcgkJaWRlbnRpdHk7CQkvKiBh dHRpZGVudGl0eSBzZXR0aW5nICovCiAJUmFuZ2VWYXIgICAqaWRlbnRpdHlTZXF1ZW5jZTsJ LyogdG8gc3RvcmUgaWRlbnRpdHkgc2VxdWVuY2UgbmFtZSBmb3IKIAkJCQkJCQkJCSAqIEFM VEVSIFRBQkxFIC4uLiBBREQgQ09MVU1OICovCisJY2hhcgkJZ2VuZXJhdGVkOwkJLyogYXR0 Z2VuZXJhdGVkIHNldHRpbmcgKi8KIAlDb2xsYXRlQ2xhdXNlICpjb2xsQ2xhdXNlOwkvKiB1 bnRyYW5zZm9ybWVkIENPTExBVEUgc3BlYywgaWYgYW55ICovCiAJT2lkCQkJY29sbE9pZDsJ CS8qIGNvbGxhdGlvbiBPSUQgKEludmFsaWRPaWQgaWYgbm90IHNldCkgKi8KIAlMaXN0CSAg ICpjb25zdHJhaW50czsJLyogb3RoZXIgY29uc3RyYWludHMgb24gY29sdW1uICovCkBAIC02 NzgsMTAgKzY3OSwxMSBAQCB0eXBlZGVmIGVudW0gVGFibGVMaWtlT3B0aW9uCiAJQ1JFQVRF X1RBQkxFX0xJS0VfQ09NTUVOVFMgPSAxIDw8IDAsCiAJQ1JFQVRFX1RBQkxFX0xJS0VfQ09O U1RSQUlOVFMgPSAxIDw8IDEsCiAJQ1JFQVRFX1RBQkxFX0xJS0VfREVGQVVMVFMgPSAxIDw8 IDIsCi0JQ1JFQVRFX1RBQkxFX0xJS0VfSURFTlRJVFkgPSAxIDw8IDMsCi0JQ1JFQVRFX1RB QkxFX0xJS0VfSU5ERVhFUyA9IDEgPDwgNCwKLQlDUkVBVEVfVEFCTEVfTElLRV9TVEFUSVNU SUNTID0gMSA8PCA1LAotCUNSRUFURV9UQUJMRV9MSUtFX1NUT1JBR0UgPSAxIDw8IDYsCisJ Q1JFQVRFX1RBQkxFX0xJS0VfR0VORVJBVEVEID0gMSA8PCAzLAorCUNSRUFURV9UQUJMRV9M SUtFX0lERU5USVRZID0gMSA8PCA0LAorCUNSRUFURV9UQUJMRV9MSUtFX0lOREVYRVMgPSAx IDw8IDUsCisJQ1JFQVRFX1RBQkxFX0xJS0VfU1RBVElTVElDUyA9IDEgPDwgNiwKKwlDUkVB VEVfVEFCTEVfTElLRV9TVE9SQUdFID0gMSA8PCA3LAogCUNSRUFURV9UQUJMRV9MSUtFX0FM TCA9IFBHX0lOVDMyX01BWAogfSBUYWJsZUxpa2VPcHRpb247CiAKQEAgLTIwNzYsNiArMjA3 OCw3IEBAIHR5cGVkZWYgZW51bSBDb25zdHJUeXBlCQkJLyogdHlwZXMgb2YgY29uc3RyYWlu dHMgKi8KIAlDT05TVFJfTk9UTlVMTCwKIAlDT05TVFJfREVGQVVMVCwKIAlDT05TVFJfSURF TlRJVFksCisJQ09OU1RSX0dFTkVSQVRFRCwKIAlDT05TVFJfQ0hFQ0ssCiAJQ09OU1RSX1BS SU1BUlksCiAJQ09OU1RSX1VOSVFVRSwKQEAgLTIxMTQsNyArMjExNyw4IEBAIHR5cGVkZWYg c3RydWN0IENvbnN0cmFpbnQKIAlib29sCQlpc19ub19pbmhlcml0OwkvKiBpcyBjb25zdHJh aW50IG5vbi1pbmhlcml0YWJsZT8gKi8KIAlOb2RlCSAgICpyYXdfZXhwcjsJCS8qIGV4cHIs IGFzIHVudHJhbnNmb3JtZWQgcGFyc2UgdHJlZSAqLwogCWNoYXIJICAgKmNvb2tlZF9leHBy OwkvKiBleHByLCBhcyBub2RlVG9TdHJpbmcgcmVwcmVzZW50YXRpb24gKi8KLQljaGFyCQln ZW5lcmF0ZWRfd2hlbjsKKwljaGFyCQlnZW5lcmF0ZWRfd2hlbjsJLyogQUxXQVlTIG9yIEJZ IERFRkFVTFQgKi8KKwljaGFyCQlnZW5lcmF0ZWRfa2luZDsgLyogU1RPUkVEIG9yIFZJUlRV QUwgKi8KIAogCS8qIEZpZWxkcyB1c2VkIGZvciB1bmlxdWUgY29uc3RyYWludHMgKFVOSVFV RSBhbmQgUFJJTUFSWSBLRVkpOiAqLwogCUxpc3QJICAgKmtleXM7CQkJLyogU3RyaW5nIG5v ZGVzIG5hbWluZyByZWZlcmVuY2VkIGtleQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFy c2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IDIzZGI0 MDE0N2IuLmM2ZTVhMWNiYjggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xp c3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTM4NCw2ICszODQs NyBAQCBQR19LRVlXT1JEKCJzdGF0aXN0aWNzIiwgU1RBVElTVElDUywgVU5SRVNFUlZFRF9L RVlXT1JEKQogUEdfS0VZV09SRCgic3RkaW4iLCBTVERJTiwgVU5SRVNFUlZFRF9LRVlXT1JE KQogUEdfS0VZV09SRCgic3Rkb3V0IiwgU1RET1VULCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQ R19LRVlXT1JEKCJzdG9yYWdlIiwgU1RPUkFHRSwgVU5SRVNFUlZFRF9LRVlXT1JEKQorUEdf S0VZV09SRCgic3RvcmVkIiwgU1RPUkVELCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlX T1JEKCJzdHJpY3QiLCBTVFJJQ1RfUCwgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09S RCgic3RyaXAiLCBTVFJJUF9QLCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJz dWJzY3JpcHRpb24iLCBTVUJTQ1JJUFRJT04sIFVOUkVTRVJWRURfS0VZV09SRCkKQEAgLTQ0 MCw2ICs0NDEsNyBAQCBQR19LRVlXT1JEKCJ2ZXJib3NlIiwgVkVSQk9TRSwgVFlQRV9GVU5D X05BTUVfS0VZV09SRCkKIFBHX0tFWVdPUkQoInZlcnNpb24iLCBWRVJTSU9OX1AsIFVOUkVT RVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoInZpZXciLCBWSUVXLCBVTlJFU0VSVkVEX0tF WVdPUkQpCiBQR19LRVlXT1JEKCJ2aWV3cyIsIFZJRVdTLCBVTlJFU0VSVkVEX0tFWVdPUkQp CitQR19LRVlXT1JEKCJ2aXJ0dWFsIiwgVklSVFVBTCwgVU5SRVNFUlZFRF9LRVlXT1JEKQog UEdfS0VZV09SRCgidm9sYXRpbGUiLCBWT0xBVElMRSwgVU5SRVNFUlZFRF9LRVlXT1JEKQog UEdfS0VZV09SRCgid2hlbiIsIFdIRU4sIFJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JE KCJ3aGVyZSIsIFdIRVJFLCBSRVNFUlZFRF9LRVlXT1JEKQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9u b2RlLmgKaW5kZXggMDIzMDU0MzgxMC4uMzI0OGQ5MzI5NyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFy c2Vfbm9kZS5oCkBAIC02OSw3ICs2OSw4IEBAIHR5cGVkZWYgZW51bSBQYXJzZUV4cHJLaW5k CiAJRVhQUl9LSU5EX1RSSUdHRVJfV0hFTiwJCS8qIFdIRU4gY29uZGl0aW9uIGluIENSRUFU RSBUUklHR0VSICovCiAJRVhQUl9LSU5EX1BPTElDWSwJCQkvKiBVU0lORyBvciBXSVRIIENI RUNLIGV4cHIgaW4gcG9saWN5ICovCiAJRVhQUl9LSU5EX1BBUlRJVElPTl9FWFBSRVNTSU9O LCAvKiBQQVJUSVRJT04gQlkgZXhwcmVzc2lvbiAqLwotCUVYUFJfS0lORF9DQUxMX0FSR1VN RU5UCQkvKiBwcm9jZWR1cmUgYXJndW1lbnQgaW4gQ0FMTCAqLworCUVYUFJfS0lORF9DQUxM X0FSR1VNRU5ULAkvKiBwcm9jZWR1cmUgYXJndW1lbnQgaW4gQ0FMTCAqLworCUVYUFJfS0lO RF9HRU5FUkFURURfQ09MVU1OLAkvKiBnZW5lcmF0aW9uIGV4cHJlc3Npb24gZm9yIGEgY29s dW1uICovCiB9IFBhcnNlRXhwcktpbmQ7CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIGIvc3JjL2luY2x1ZGUvcmV3cml0ZS9yZXdyaXRl SGFuZGxlci5oCmluZGV4IDgxMjgxOTlmYzMuLmY4MDE3ZTQyM2EgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuaAorKysgYi9zcmMvaW5jbHVkZS9y ZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgKQEAgLTMyLDUgKzMyLDYgQEAgZXh0ZXJuIGNvbnN0 IGNoYXIgKnZpZXdfcXVlcnlfaXNfYXV0b191cGRhdGFibGUoUXVlcnkgKnZpZXdxdWVyeSwK IGV4dGVybiBpbnQgcmVsYXRpb25faXNfdXBkYXRhYmxlKE9pZCByZWxvaWQsCiAJCQkJCSAg Ym9vbCBpbmNsdWRlX3RyaWdnZXJzLAogCQkJCQkgIEJpdG1hcHNldCAqaW5jbHVkZV9jb2xz KTsKK2V4dGVybiBOb2RlICpleHBhbmRfZ2VuZXJhdGVkX2NvbHVtbnNfaW5fZXhwcihOb2Rl ICpub2RlLCBSZWxhdGlvbiByZWwpOwogCiAjZW5kaWYJCQkJCQkJLyogUkVXUklURUhBTkRM RVJfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggYi9z cmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAppbmRleCBmZjE3MDVhZDJiLi5jYzk2YTYx MTU4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAorKysgYi9z cmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAtODUsNiArODUsNyBAQCBleHRlcm4g T2lkIGdldF9vcGZhbWlseV9wcm9jKE9pZCBvcGZhbWlseSwgT2lkIGxlZnR0eXBlLCBPaWQg cmlnaHR0eXBlLAogCQkJCSAgaW50MTYgcHJvY251bSk7CiBleHRlcm4gY2hhciAqZ2V0X2F0 dG5hbWUoT2lkIHJlbGlkLCBBdHRyTnVtYmVyIGF0dG51bSwgYm9vbCBtaXNzaW5nX29rKTsK IGV4dGVybiBBdHRyTnVtYmVyIGdldF9hdHRudW0oT2lkIHJlbGlkLCBjb25zdCBjaGFyICph dHRuYW1lKTsKK2V4dGVybiBjaGFyIGdldF9hdHRnZW5lcmF0ZWQoT2lkIHJlbGlkLCBBdHRy TnVtYmVyIGF0dG51bSk7CiBleHRlcm4gT2lkCWdldF9hdHR0eXBlKE9pZCByZWxpZCwgQXR0 ck51bWJlciBhdHRudW0pOwogZXh0ZXJuIHZvaWQgZ2V0X2F0dHR5cGV0eXBtb2Rjb2xsKE9p ZCByZWxpZCwgQXR0ck51bWJlciBhdHRudW0sCiAJCQkJCSAgT2lkICp0eXBpZCwgaW50MzIg KnR5cG1vZCwgT2lkICpjb2xsaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL3BsL3BscGVybC9leHBl Y3RlZC9wbHBlcmxfdHJpZ2dlci5vdXQgYi9zcmMvcGwvcGxwZXJsL2V4cGVjdGVkL3BscGVy bF90cmlnZ2VyLm91dAppbmRleCAyODAxMWNkOWY2Li5hNTQ1NTA2ZWM2IDEwMDY0NAotLS0g YS9zcmMvcGwvcGxwZXJsL2V4cGVjdGVkL3BscGVybF90cmlnZ2VyLm91dAorKysgYi9zcmMv cGwvcGxwZXJsL2V4cGVjdGVkL3BscGVybF90cmlnZ2VyLm91dApAQCAtNiw2ICs2LDggQEAg Q1JFQVRFIFRBQkxFIHRyaWdnZXJfdGVzdCAoCiAgICAgICAgIHYgdmFyY2hhciwKIAkJZm9v IHJvd2NvbXBuZXN0CiApOworQ1JFQVRFIFRBQkxFIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQK KyAgICAoaSBpbnQsIGogaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGkgKiAyKSk7CiBDUkVB VEUgT1IgUkVQTEFDRSBGVU5DVElPTiB0cmlnZ2VyX2RhdGEoKSBSRVRVUk5TIHRyaWdnZXIg TEFOR1VBR0UgcGxwZXJsIEFTICQkCiAKICAgIyBtYWtlIHN1cmUga2V5cyBhcmUgc29ydGVk IGZvciBjb25zaXN0ZW50IHJlc3VsdHMgLSBwZXJsIG5vIGxvbmdlcgpAQCAtOTgsNiArMTAw LDc5IEBAIE5PVElDRTogICRfVEQtPnt0YWJsZV9uYW1lfSA9ICd0cmlnZ2VyX3Rlc3QnCiBO T1RJQ0U6ICAkX1RELT57dGFibGVfc2NoZW1hfSA9ICdwdWJsaWMnCiBOT1RJQ0U6ICAkX1RE LT57d2hlbn0gPSAnQkVGT1JFJwogRFJPUCBUUklHR0VSIHNob3dfdHJpZ2dlcl9kYXRhX3Ry aWcgb24gdHJpZ2dlcl90ZXN0OworQ1JFQVRFIFRSSUdHRVIgc2hvd190cmlnZ2VyX2RhdGFf dHJpZ19iZWZvcmUKK0JFRk9SRSBJTlNFUlQgT1IgVVBEQVRFIE9SIERFTEVURSBPTiB0cmln Z2VyX3Rlc3RfZ2VuZXJhdGVkCitGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgdHJp Z2dlcl9kYXRhKCk7CitDUkVBVEUgVFJJR0dFUiBzaG93X3RyaWdnZXJfZGF0YV90cmlnX2Fm dGVyCitBRlRFUiBJTlNFUlQgT1IgVVBEQVRFIE9SIERFTEVURSBPTiB0cmlnZ2VyX3Rlc3Rf Z2VuZXJhdGVkCitGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9kYXRh KCk7CitpbnNlcnQgaW50byB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkIChpKSB2YWx1ZXMgKDEp OworTk9USUNFOiAgJF9URC0+e2FyZ2N9ID0gJzAnCitOT1RJQ0U6ICAkX1RELT57ZXZlbnR9 ID0gJ0lOU0VSVCcKK05PVElDRTogICRfVEQtPntsZXZlbH0gPSAnUk9XJworTk9USUNFOiAg JF9URC0+e25hbWV9ID0gJ3Nob3dfdHJpZ2dlcl9kYXRhX3RyaWdfYmVmb3JlJworTk9USUNF OiAgJF9URC0+e25ld30gPSB7J2knID0+ICcxJ30KK05PVElDRTogICRfVEQtPntyZWxpZH0g PSAnYm9ndXM6MTIzNDUnCitOT1RJQ0U6ICAkX1RELT57cmVsbmFtZX0gPSAndHJpZ2dlcl90 ZXN0X2dlbmVyYXRlZCcKK05PVElDRTogICRfVEQtPnt0YWJsZV9uYW1lfSA9ICd0cmlnZ2Vy X3Rlc3RfZ2VuZXJhdGVkJworTk9USUNFOiAgJF9URC0+e3RhYmxlX3NjaGVtYX0gPSAncHVi bGljJworTk9USUNFOiAgJF9URC0+e3doZW59ID0gJ0JFRk9SRScKK05PVElDRTogICRfVEQt PnthcmdjfSA9ICcwJworTk9USUNFOiAgJF9URC0+e2V2ZW50fSA9ICdJTlNFUlQnCitOT1RJ Q0U6ICAkX1RELT57bGV2ZWx9ID0gJ1JPVycKK05PVElDRTogICRfVEQtPntuYW1lfSA9ICdz aG93X3RyaWdnZXJfZGF0YV90cmlnX2FmdGVyJworTk9USUNFOiAgJF9URC0+e25ld30gPSB7 J2knID0+ICcxJ30KK05PVElDRTogICRfVEQtPntyZWxpZH0gPSAnYm9ndXM6MTIzNDUnCitO T1RJQ0U6ICAkX1RELT57cmVsbmFtZX0gPSAndHJpZ2dlcl90ZXN0X2dlbmVyYXRlZCcKK05P VElDRTogICRfVEQtPnt0YWJsZV9uYW1lfSA9ICd0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkJwor Tk9USUNFOiAgJF9URC0+e3RhYmxlX3NjaGVtYX0gPSAncHVibGljJworTk9USUNFOiAgJF9U RC0+e3doZW59ID0gJ0FGVEVSJwordXBkYXRlIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQgc2V0 IGkgPSAxMSB3aGVyZSBpID0gMTsKK05PVElDRTogICRfVEQtPnthcmdjfSA9ICcwJworTk9U SUNFOiAgJF9URC0+e2V2ZW50fSA9ICdVUERBVEUnCitOT1RJQ0U6ICAkX1RELT57bGV2ZWx9 ID0gJ1JPVycKK05PVElDRTogICRfVEQtPntuYW1lfSA9ICdzaG93X3RyaWdnZXJfZGF0YV90 cmlnX2JlZm9yZScKK05PVElDRTogICRfVEQtPntuZXd9ID0geydpJyA9PiAnMTEnfQorTk9U SUNFOiAgJF9URC0+e29sZH0gPSB7J2knID0+ICcxJ30KK05PVElDRTogICRfVEQtPntyZWxp ZH0gPSAnYm9ndXM6MTIzNDUnCitOT1RJQ0U6ICAkX1RELT57cmVsbmFtZX0gPSAndHJpZ2dl cl90ZXN0X2dlbmVyYXRlZCcKK05PVElDRTogICRfVEQtPnt0YWJsZV9uYW1lfSA9ICd0cmln Z2VyX3Rlc3RfZ2VuZXJhdGVkJworTk9USUNFOiAgJF9URC0+e3RhYmxlX3NjaGVtYX0gPSAn cHVibGljJworTk9USUNFOiAgJF9URC0+e3doZW59ID0gJ0JFRk9SRScKK05PVElDRTogICRf VEQtPnthcmdjfSA9ICcwJworTk9USUNFOiAgJF9URC0+e2V2ZW50fSA9ICdVUERBVEUnCitO T1RJQ0U6ICAkX1RELT57bGV2ZWx9ID0gJ1JPVycKK05PVElDRTogICRfVEQtPntuYW1lfSA9 ICdzaG93X3RyaWdnZXJfZGF0YV90cmlnX2FmdGVyJworTk9USUNFOiAgJF9URC0+e25ld30g PSB7J2knID0+ICcxMSd9CitOT1RJQ0U6ICAkX1RELT57b2xkfSA9IHsnaScgPT4gJzEnfQor Tk9USUNFOiAgJF9URC0+e3JlbGlkfSA9ICdib2d1czoxMjM0NScKK05PVElDRTogICRfVEQt PntyZWxuYW1lfSA9ICd0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkJworTk9USUNFOiAgJF9URC0+ e3RhYmxlX25hbWV9ID0gJ3RyaWdnZXJfdGVzdF9nZW5lcmF0ZWQnCitOT1RJQ0U6ICAkX1RE LT57dGFibGVfc2NoZW1hfSA9ICdwdWJsaWMnCitOT1RJQ0U6ICAkX1RELT57d2hlbn0gPSAn QUZURVInCitkZWxldGUgZnJvbSB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkOworTk9USUNFOiAg JF9URC0+e2FyZ2N9ID0gJzAnCitOT1RJQ0U6ICAkX1RELT57ZXZlbnR9ID0gJ0RFTEVURScK K05PVElDRTogICRfVEQtPntsZXZlbH0gPSAnUk9XJworTk9USUNFOiAgJF9URC0+e25hbWV9 ID0gJ3Nob3dfdHJpZ2dlcl9kYXRhX3RyaWdfYmVmb3JlJworTk9USUNFOiAgJF9URC0+e29s ZH0gPSB7J2knID0+ICcxMSd9CitOT1RJQ0U6ICAkX1RELT57cmVsaWR9ID0gJ2JvZ3VzOjEy MzQ1JworTk9USUNFOiAgJF9URC0+e3JlbG5hbWV9ID0gJ3RyaWdnZXJfdGVzdF9nZW5lcmF0 ZWQnCitOT1RJQ0U6ICAkX1RELT57dGFibGVfbmFtZX0gPSAndHJpZ2dlcl90ZXN0X2dlbmVy YXRlZCcKK05PVElDRTogICRfVEQtPnt0YWJsZV9zY2hlbWF9ID0gJ3B1YmxpYycKK05PVElD RTogICRfVEQtPnt3aGVufSA9ICdCRUZPUkUnCitOT1RJQ0U6ICAkX1RELT57YXJnY30gPSAn MCcKK05PVElDRTogICRfVEQtPntldmVudH0gPSAnREVMRVRFJworTk9USUNFOiAgJF9URC0+ e2xldmVsfSA9ICdST1cnCitOT1RJQ0U6ICAkX1RELT57bmFtZX0gPSAnc2hvd190cmlnZ2Vy X2RhdGFfdHJpZ19hZnRlcicKK05PVElDRTogICRfVEQtPntvbGR9ID0geydpJyA9PiAnMTEn fQorTk9USUNFOiAgJF9URC0+e3JlbGlkfSA9ICdib2d1czoxMjM0NScKK05PVElDRTogICRf VEQtPntyZWxuYW1lfSA9ICd0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkJworTk9USUNFOiAgJF9U RC0+e3RhYmxlX25hbWV9ID0gJ3RyaWdnZXJfdGVzdF9nZW5lcmF0ZWQnCitOT1RJQ0U6ICAk X1RELT57dGFibGVfc2NoZW1hfSA9ICdwdWJsaWMnCitOT1RJQ0U6ICAkX1RELT57d2hlbn0g PSAnQUZURVInCitEUk9QIFRSSUdHRVIgc2hvd190cmlnZ2VyX2RhdGFfdHJpZ19iZWZvcmUg T04gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZDsKK0RST1AgVFJJR0dFUiBzaG93X3RyaWdnZXJf ZGF0YV90cmlnX2FmdGVyIE9OIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQ7CiBpbnNlcnQgaW50 byB0cmlnZ2VyX3Rlc3QgdmFsdWVzKDEsJ2luc2VydCcsICcoIigxKSIpJyk7CiBDUkVBVEUg VklFVyB0cmlnZ2VyX3Rlc3RfdmlldyBBUyBTRUxFQ1QgKiBGUk9NIHRyaWdnZXJfdGVzdDsK IENSRUFURSBUUklHR0VSIHNob3dfdHJpZ2dlcl9kYXRhX3RyaWcKQEAgLTI5NSwzICszNzAs MjEgQEAgTk9USUNFOiAgcGVybHNuaXRjaDogZGRsX2NvbW1hbmRfc3RhcnQgRFJPUCBUQUJM RQogTk9USUNFOiAgcGVybHNuaXRjaDogZGRsX2NvbW1hbmRfZW5kIERST1AgVEFCTEUgCiBk cm9wIGV2ZW50IHRyaWdnZXIgcGVybF9hX3NuaXRjaDsKIGRyb3AgZXZlbnQgdHJpZ2dlciBw ZXJsX2Jfc25pdGNoOworLS0gZGVhbGluZyB3aXRoIGdlbmVyYXRlZCBjb2x1bW5zCitDUkVB VEUgRlVOQ1RJT04gZ2VuZXJhdGVkX3Rlc3RfZnVuYzEoKSBSRVRVUk5TIHRyaWdnZXIKK0xB TkdVQUdFIHBscGVybAorQVMgJCQKKyRfVEQtPntuZXd9e2p9ID0gNTsgICMgbm90IGFsbG93 ZWQKK3JldHVybiAnTU9ESUZZJzsKKyQkOworQ1JFQVRFIFRSSUdHRVIgZ2VuZXJhdGVkX3Rl c3RfdHJpZ2dlcjEgQkVGT1JFIElOU0VSVCBPTiB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkCitG T1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgZ2VuZXJhdGVkX3Rlc3RfZnVuYzEoKTsK K1RSVU5DQVRFIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQ7CitJTlNFUlQgSU5UTyB0cmlnZ2Vy X3Rlc3RfZ2VuZXJhdGVkIChpKSBWQUxVRVMgKDEpOworRVJST1I6ICBjYW5ub3Qgc2V0IGdl bmVyYXRlZCBjb2x1bW4gImoiCitDT05URVhUOiAgUEwvUGVybCBmdW5jdGlvbiAiZ2VuZXJh dGVkX3Rlc3RfZnVuYzEiCitTRUxFQ1QgKiBGUk9NIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQ7 CisgaSB8IGogCistLS0rLS0tCisoMCByb3dzKQorCmRpZmYgLS1naXQgYS9zcmMvcGwvcGxw ZXJsL3BscGVybC5jIGIvc3JjL3BsL3BscGVybC9wbHBlcmwuYwppbmRleCA0Y2ZjNTA2MjUz Li5jYjRmOTZhYTJhIDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZXJsL3BscGVybC5jCisrKyBi L3NyYy9wbC9wbHBlcmwvcGxwZXJsLmMKQEAgLTE3OTEsNiArMTc5MSwxMSBAQCBwbHBlcmxf bW9kaWZ5X3R1cGxlKEhWICpodlRELCBUcmlnZ2VyRGF0YSAqdGRhdGEsIEhlYXBUdXBsZSBv dHVwKQogCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJ CQkJCSBlcnJtc2coImNhbm5vdCBzZXQgc3lzdGVtIGF0dHJpYnV0ZSBcIiVzXCIiLAogCQkJ CQkJCWtleSkpKTsKKwkJaWYgKGF0dHItPmF0dGdlbmVyYXRlZCkKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRV9SX0lfRV9UUklHR0VSX1BST1RPQ09MX1ZJ T0xBVEVEKSwKKwkJCQkJIGVycm1zZygiY2Fubm90IHNldCBnZW5lcmF0ZWQgY29sdW1uIFwi JXNcIiIsCisJCQkJCQkJa2V5KSkpOwogCiAJCW1vZHZhbHVlc1thdHRuIC0gMV0gPSBwbHBl cmxfc3ZfdG9fZGF0dW0odmFsLAogCQkJCQkJCQkJCQkJIGF0dHItPmF0dHR5cGlkLApAQCAt MzA0MSw3ICszMDQ2LDcgQEAgcGxwZXJsX2hhc2hfZnJvbV90dXBsZShIZWFwVHVwbGUgdHVw bGUsIFR1cGxlRGVzYyB0dXBkZXNjKQogCQlPaWQJCQl0eXBvdXRwdXQ7CiAJCUZvcm1fcGdf YXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIodHVwZGVzYywgaSk7CiAKLQkJaWYgKGF0 dC0+YXR0aXNkcm9wcGVkKQorCQlpZiAoYXR0LT5hdHRpc2Ryb3BwZWQgfHwgYXR0LT5hdHRn ZW5lcmF0ZWQgPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9WSVJUVUFMKQogCQkJY29udGludWU7 CiAKIAkJYXR0bmFtZSA9IE5hbWVTdHIoYXR0LT5hdHRuYW1lKTsKZGlmZiAtLWdpdCBhL3Ny Yy9wbC9wbHBlcmwvc3FsL3BscGVybF90cmlnZ2VyLnNxbCBiL3NyYy9wbC9wbHBlcmwvc3Fs L3BscGVybF90cmlnZ2VyLnNxbAppbmRleCA2MjQxOTNiOWQwLi5hODk1NDVhZmQ4IDEwMDY0 NAotLS0gYS9zcmMvcGwvcGxwZXJsL3NxbC9wbHBlcmxfdHJpZ2dlci5zcWwKKysrIGIvc3Jj L3BsL3BscGVybC9zcWwvcGxwZXJsX3RyaWdnZXIuc3FsCkBAIC04LDYgKzgsOSBAQCBDUkVB VEUgVEFCTEUgdHJpZ2dlcl90ZXN0ICgKIAkJZm9vIHJvd2NvbXBuZXN0CiApOwogCitDUkVB VEUgVEFCTEUgdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZAorICAgIChpIGludCwgaiBpbnQgR0VO RVJBVEVEIEFMV0FZUyBBUyAoaSAqIDIpKTsKKwogQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJ T04gdHJpZ2dlcl9kYXRhKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFIHBscGVybCBBUyAk JAogCiAgICMgbWFrZSBzdXJlIGtleXMgYXJlIHNvcnRlZCBmb3IgY29uc2lzdGVudCByZXN1 bHRzIC0gcGVybCBubyBsb25nZXIKQEAgLTcwLDYgKzczLDIxIEBAIENSRUFURSBUUklHR0VS IHNob3dfdHJpZ2dlcl9kYXRhX3RyaWcKIAogRFJPUCBUUklHR0VSIHNob3dfdHJpZ2dlcl9k YXRhX3RyaWcgb24gdHJpZ2dlcl90ZXN0OwogCitDUkVBVEUgVFJJR0dFUiBzaG93X3RyaWdn ZXJfZGF0YV90cmlnX2JlZm9yZQorQkVGT1JFIElOU0VSVCBPUiBVUERBVEUgT1IgREVMRVRF IE9OIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQKK0ZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NF RFVSRSB0cmlnZ2VyX2RhdGEoKTsKKworQ1JFQVRFIFRSSUdHRVIgc2hvd190cmlnZ2VyX2Rh dGFfdHJpZ19hZnRlcgorQUZURVIgSU5TRVJUIE9SIFVQREFURSBPUiBERUxFVEUgT04gdHJp Z2dlcl90ZXN0X2dlbmVyYXRlZAorRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRy aWdnZXJfZGF0YSgpOworCitpbnNlcnQgaW50byB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkIChp KSB2YWx1ZXMgKDEpOwordXBkYXRlIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQgc2V0IGkgPSAx MSB3aGVyZSBpID0gMTsKK2RlbGV0ZSBmcm9tIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQ7CisK K0RST1AgVFJJR0dFUiBzaG93X3RyaWdnZXJfZGF0YV90cmlnX2JlZm9yZSBPTiB0cmlnZ2Vy X3Rlc3RfZ2VuZXJhdGVkOworRFJPUCBUUklHR0VSIHNob3dfdHJpZ2dlcl9kYXRhX3RyaWdf YWZ0ZXIgT04gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZDsKKwogaW5zZXJ0IGludG8gdHJpZ2dl cl90ZXN0IHZhbHVlcygxLCdpbnNlcnQnLCAnKCIoMSkiKScpOwogQ1JFQVRFIFZJRVcgdHJp Z2dlcl90ZXN0X3ZpZXcgQVMgU0VMRUNUICogRlJPTSB0cmlnZ2VyX3Rlc3Q7CiAKQEAgLTIy MSwzICsyMzksMTkgQEAgQ1JFQVRFIFRSSUdHRVIgYV90IEFGVEVSIFVQREFURSBPTiB0cmFu c2l0aW9uX3RhYmxlX3Rlc3QKIAogZHJvcCBldmVudCB0cmlnZ2VyIHBlcmxfYV9zbml0Y2g7 CiBkcm9wIGV2ZW50IHRyaWdnZXIgcGVybF9iX3NuaXRjaDsKKworLS0gZGVhbGluZyB3aXRo IGdlbmVyYXRlZCBjb2x1bW5zCisKK0NSRUFURSBGVU5DVElPTiBnZW5lcmF0ZWRfdGVzdF9m dW5jMSgpIFJFVFVSTlMgdHJpZ2dlcgorTEFOR1VBR0UgcGxwZXJsCitBUyAkJAorJF9URC0+ e25ld317an0gPSA1OyAgIyBub3QgYWxsb3dlZAorcmV0dXJuICdNT0RJRlknOworJCQ7CisK K0NSRUFURSBUUklHR0VSIGdlbmVyYXRlZF90ZXN0X3RyaWdnZXIxIEJFRk9SRSBJTlNFUlQg T04gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZAorRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VE VVJFIGdlbmVyYXRlZF90ZXN0X2Z1bmMxKCk7CisKK1RSVU5DQVRFIHRyaWdnZXJfdGVzdF9n ZW5lcmF0ZWQ7CitJTlNFUlQgSU5UTyB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkIChpKSBWQUxV RVMgKDEpOworU0VMRUNUICogRlJPTSB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkOwpkaWZmIC0t Z2l0IGEvc3JjL3BsL3BscHl0aG9uL2V4cGVjdGVkL3BscHl0aG9uX3RyaWdnZXIub3V0IGIv c3JjL3BsL3BscHl0aG9uL2V4cGVjdGVkL3BscHl0aG9uX3RyaWdnZXIub3V0CmluZGV4IGQ3 YWI4YWM2YjguLjhmMTc4NThlOTAgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHB5dGhvbi9leHBl Y3RlZC9wbHB5dGhvbl90cmlnZ2VyLm91dAorKysgYi9zcmMvcGwvcGxweXRob24vZXhwZWN0 ZWQvcGxweXRob25fdHJpZ2dlci5vdXQKQEAgLTY3LDYgKzY3LDggQEAgU0VMRUNUICogRlJP TSB1c2VyczsKIC0tIGR1bXAgdHJpZ2dlciBkYXRhCiBDUkVBVEUgVEFCTEUgdHJpZ2dlcl90 ZXN0CiAJKGkgaW50LCB2IHRleHQgKTsKK0NSRUFURSBUQUJMRSB0cmlnZ2VyX3Rlc3RfZ2Vu ZXJhdGVkCisJKGkgaW50LCBqIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChpICogMikpOwog Q1JFQVRFIEZVTkNUSU9OIHRyaWdnZXJfZGF0YSgpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFH RSBwbHB5dGhvbnUgQVMgJCQKIAogaWYgJ3JlbGlkJyBpbiBURDoKQEAgLTIwMyw2ICsyMDUs NzcgQEAgTk9USUNFOiAgVERbd2hlbl0gPT4gQkVGT1JFCiBEUk9QIFRSSUdHRVIgc2hvd190 cmlnZ2VyX2RhdGFfdHJpZ19zdG10IG9uIHRyaWdnZXJfdGVzdDsKIERST1AgVFJJR0dFUiBz aG93X3RyaWdnZXJfZGF0YV90cmlnX2JlZm9yZSBvbiB0cmlnZ2VyX3Rlc3Q7CiBEUk9QIFRS SUdHRVIgc2hvd190cmlnZ2VyX2RhdGFfdHJpZ19hZnRlciBvbiB0cmlnZ2VyX3Rlc3Q7CitD UkVBVEUgVFJJR0dFUiBzaG93X3RyaWdnZXJfZGF0YV90cmlnX2JlZm9yZQorQkVGT1JFIElO U0VSVCBPUiBVUERBVEUgT1IgREVMRVRFIE9OIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQKK0ZP UiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2RhdGEoKTsKK0NSRUFURSBU UklHR0VSIHNob3dfdHJpZ2dlcl9kYXRhX3RyaWdfYWZ0ZXIKK0FGVEVSIElOU0VSVCBPUiBV UERBVEUgT1IgREVMRVRFIE9OIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQKK0ZPUiBFQUNIIFJP VyBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2RhdGEoKTsKK2luc2VydCBpbnRvIHRyaWdn ZXJfdGVzdF9nZW5lcmF0ZWQgKGkpIHZhbHVlcyAoMSk7CitOT1RJQ0U6ICBURFthcmdzXSA9 PiBOb25lCitOT1RJQ0U6ICBURFtldmVudF0gPT4gSU5TRVJUCitOT1RJQ0U6ICBURFtsZXZl bF0gPT4gUk9XCitOT1RJQ0U6ICBURFtuYW1lXSA9PiBzaG93X3RyaWdnZXJfZGF0YV90cmln X2JlZm9yZQorTk9USUNFOiAgVERbbmV3XSA9PiB7J2knOiAxfQorTk9USUNFOiAgVERbb2xk XSA9PiBOb25lCitOT1RJQ0U6ICBURFtyZWxpZF0gPT4gYm9ndXM6MTIzNDUKK05PVElDRTog IFREW3RhYmxlX25hbWVdID0+IHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQKK05PVElDRTogIFRE W3RhYmxlX3NjaGVtYV0gPT4gcHVibGljCitOT1RJQ0U6ICBURFt3aGVuXSA9PiBCRUZPUkUK K05PVElDRTogIFREW2FyZ3NdID0+IE5vbmUKK05PVElDRTogIFREW2V2ZW50XSA9PiBJTlNF UlQKK05PVElDRTogIFREW2xldmVsXSA9PiBST1cKK05PVElDRTogIFREW25hbWVdID0+IHNo b3dfdHJpZ2dlcl9kYXRhX3RyaWdfYWZ0ZXIKK05PVElDRTogIFREW25ld10gPT4geydpJzog MX0KK05PVElDRTogIFREW29sZF0gPT4gTm9uZQorTk9USUNFOiAgVERbcmVsaWRdID0+IGJv Z3VzOjEyMzQ1CitOT1RJQ0U6ICBURFt0YWJsZV9uYW1lXSA9PiB0cmlnZ2VyX3Rlc3RfZ2Vu ZXJhdGVkCitOT1RJQ0U6ICBURFt0YWJsZV9zY2hlbWFdID0+IHB1YmxpYworTk9USUNFOiAg VERbd2hlbl0gPT4gQUZURVIKK3VwZGF0ZSB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkIHNldCBp ID0gMTEgd2hlcmUgaSA9IDE7CitOT1RJQ0U6ICBURFthcmdzXSA9PiBOb25lCitOT1RJQ0U6 ICBURFtldmVudF0gPT4gVVBEQVRFCitOT1RJQ0U6ICBURFtsZXZlbF0gPT4gUk9XCitOT1RJ Q0U6ICBURFtuYW1lXSA9PiBzaG93X3RyaWdnZXJfZGF0YV90cmlnX2JlZm9yZQorTk9USUNF OiAgVERbbmV3XSA9PiB7J2knOiAxMX0KK05PVElDRTogIFREW29sZF0gPT4geydpJzogMX0K K05PVElDRTogIFREW3JlbGlkXSA9PiBib2d1czoxMjM0NQorTk9USUNFOiAgVERbdGFibGVf bmFtZV0gPT4gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZAorTk9USUNFOiAgVERbdGFibGVfc2No ZW1hXSA9PiBwdWJsaWMKK05PVElDRTogIFREW3doZW5dID0+IEJFRk9SRQorTk9USUNFOiAg VERbYXJnc10gPT4gTm9uZQorTk9USUNFOiAgVERbZXZlbnRdID0+IFVQREFURQorTk9USUNF OiAgVERbbGV2ZWxdID0+IFJPVworTk9USUNFOiAgVERbbmFtZV0gPT4gc2hvd190cmlnZ2Vy X2RhdGFfdHJpZ19hZnRlcgorTk9USUNFOiAgVERbbmV3XSA9PiB7J2knOiAxMX0KK05PVElD RTogIFREW29sZF0gPT4geydpJzogMX0KK05PVElDRTogIFREW3JlbGlkXSA9PiBib2d1czox MjM0NQorTk9USUNFOiAgVERbdGFibGVfbmFtZV0gPT4gdHJpZ2dlcl90ZXN0X2dlbmVyYXRl ZAorTk9USUNFOiAgVERbdGFibGVfc2NoZW1hXSA9PiBwdWJsaWMKK05PVElDRTogIFREW3do ZW5dID0+IEFGVEVSCitkZWxldGUgZnJvbSB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkOworTk9U SUNFOiAgVERbYXJnc10gPT4gTm9uZQorTk9USUNFOiAgVERbZXZlbnRdID0+IERFTEVURQor Tk9USUNFOiAgVERbbGV2ZWxdID0+IFJPVworTk9USUNFOiAgVERbbmFtZV0gPT4gc2hvd190 cmlnZ2VyX2RhdGFfdHJpZ19iZWZvcmUKK05PVElDRTogIFREW25ld10gPT4gTm9uZQorTk9U SUNFOiAgVERbb2xkXSA9PiB7J2knOiAxMX0KK05PVElDRTogIFREW3JlbGlkXSA9PiBib2d1 czoxMjM0NQorTk9USUNFOiAgVERbdGFibGVfbmFtZV0gPT4gdHJpZ2dlcl90ZXN0X2dlbmVy YXRlZAorTk9USUNFOiAgVERbdGFibGVfc2NoZW1hXSA9PiBwdWJsaWMKK05PVElDRTogIFRE W3doZW5dID0+IEJFRk9SRQorTk9USUNFOiAgVERbYXJnc10gPT4gTm9uZQorTk9USUNFOiAg VERbZXZlbnRdID0+IERFTEVURQorTk9USUNFOiAgVERbbGV2ZWxdID0+IFJPVworTk9USUNF OiAgVERbbmFtZV0gPT4gc2hvd190cmlnZ2VyX2RhdGFfdHJpZ19hZnRlcgorTk9USUNFOiAg VERbbmV3XSA9PiBOb25lCitOT1RJQ0U6ICBURFtvbGRdID0+IHsnaSc6IDExfQorTk9USUNF OiAgVERbcmVsaWRdID0+IGJvZ3VzOjEyMzQ1CitOT1RJQ0U6ICBURFt0YWJsZV9uYW1lXSA9 PiB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkCitOT1RJQ0U6ICBURFt0YWJsZV9zY2hlbWFdID0+ IHB1YmxpYworTk9USUNFOiAgVERbd2hlbl0gPT4gQUZURVIKK0RST1AgVFJJR0dFUiBzaG93 X3RyaWdnZXJfZGF0YV90cmlnX2JlZm9yZSBPTiB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkOwor RFJPUCBUUklHR0VSIHNob3dfdHJpZ2dlcl9kYXRhX3RyaWdfYWZ0ZXIgT04gdHJpZ2dlcl90 ZXN0X2dlbmVyYXRlZDsKIGluc2VydCBpbnRvIHRyaWdnZXJfdGVzdCB2YWx1ZXMoMSwnaW5z ZXJ0Jyk7CiBDUkVBVEUgVklFVyB0cmlnZ2VyX3Rlc3RfdmlldyBBUyBTRUxFQ1QgKiBGUk9N IHRyaWdnZXJfdGVzdDsKIENSRUFURSBUUklHR0VSIHNob3dfdHJpZ2dlcl9kYXRhX3RyaWcK QEAgLTUyNCwzICs1OTcsMjIgQEAgSU5GTzogIG9sZDogMSAtPiBhCiBJTkZPOiAgbmV3OiAx IC0+IGIKIERST1AgVEFCTEUgdHJhbnNpdGlvbl90YWJsZV90ZXN0OwogRFJPUCBGVU5DVElP TiB0cmFuc2l0aW9uX3RhYmxlX3Rlc3RfZigpOworLS0gZGVhbGluZyB3aXRoIGdlbmVyYXRl ZCBjb2x1bW5zCitDUkVBVEUgRlVOQ1RJT04gZ2VuZXJhdGVkX3Rlc3RfZnVuYzEoKSBSRVRV Uk5TIHRyaWdnZXIKK0xBTkdVQUdFIHBscHl0aG9udQorQVMgJCQKK1REWyduZXcnXVsnaidd ID0gNSAgIyBub3QgYWxsb3dlZAorcmV0dXJuICdNT0RJRlknCiskJDsKK0NSRUFURSBUUklH R0VSIGdlbmVyYXRlZF90ZXN0X3RyaWdnZXIxIEJFRk9SRSBJTlNFUlQgT04gdHJpZ2dlcl90 ZXN0X2dlbmVyYXRlZAorRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIGdlbmVyYXRl ZF90ZXN0X2Z1bmMxKCk7CitUUlVOQ0FURSB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkOworSU5T RVJUIElOVE8gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZCAoaSkgVkFMVUVTICgxKTsKK0VSUk9S OiAgY2Fubm90IHNldCBnZW5lcmF0ZWQgY29sdW1uICJqIgorQ09OVEVYVDogIHdoaWxlIG1v ZGlmeWluZyB0cmlnZ2VyIHJvdworUEwvUHl0aG9uIGZ1bmN0aW9uICJnZW5lcmF0ZWRfdGVz dF9mdW5jMSIKK1NFTEVDVCAqIEZST00gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZDsKKyBpIHwg aiAKKy0tLSstLS0KKygwIHJvd3MpCisKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHB5dGhvbi9w bHB5X2V4ZWMuYyBiL3NyYy9wbC9wbHB5dGhvbi9wbHB5X2V4ZWMuYwppbmRleCA0N2VkOTVk Y2M2Li5kOWJlYjYxY2YyIDEwMDY0NAotLS0gYS9zcmMvcGwvcGxweXRob24vcGxweV9leGVj LmMKKysrIGIvc3JjL3BsL3BscHl0aG9uL3BscHlfZXhlYy5jCkBAIC0xMyw2ICsxMyw3IEBA CiAjaW5jbHVkZSAiZXhlY3V0b3Ivc3BpLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2lu Y2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgi CiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIK IApAQCAtOTUyLDYgKzk1MywxMSBAQCBQTHlfbW9kaWZ5X3R1cGxlKFBMeVByb2NlZHVyZSAq cHJvYywgUHlPYmplY3QgKnBsdGQsIFRyaWdnZXJEYXRhICp0ZGF0YSwKIAkJCQkJCShlcnJj b2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkJCSBlcnJtc2coImNh bm5vdCBzZXQgc3lzdGVtIGF0dHJpYnV0ZSBcIiVzXCIiLAogCQkJCQkJCQlwbGF0dHN0cikp KTsKKwkJCWlmIChUdXBsZURlc2NBdHRyKHR1cGRlc2MsIGF0dG4gLSAxKS0+YXR0Z2VuZXJh dGVkKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0VfUl9J X0VfVFJJR0dFUl9QUk9UT0NPTF9WSU9MQVRFRCksCisJCQkJCQkgZXJybXNnKCJjYW5ub3Qg c2V0IGdlbmVyYXRlZCBjb2x1bW4gXCIlc1wiIiwKKwkJCQkJCQkJcGxhdHRzdHIpKSk7CiAK IAkJCXBsdmFsID0gUHlEaWN0X0dldEl0ZW0ocGxudHVwLCBwbGF0dCk7CiAJCQlpZiAocGx2 YWwgPT0gTlVMTCkKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3R5cGVpby5j IGIvc3JjL3BsL3BscHl0aG9uL3BscHlfdHlwZWlvLmMKaW5kZXggZDZhNmE4NDljMy4uYWZk MWEwYTc0OCAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscHl0aG9uL3BscHlfdHlwZWlvLmMKKysr IGIvc3JjL3BsL3BscHl0aG9uL3BscHlfdHlwZWlvLmMKQEAgLTgzOSw3ICs4MzksNyBAQCBQ THlEaWN0X0Zyb21UdXBsZShQTHlEYXR1bVRvT2IgKmFyZywgSGVhcFR1cGxlIHR1cGxlLCBU dXBsZURlc2MgZGVzYykKIAkJCWJvb2wJCWlzX251bGw7CiAJCQlQeU9iamVjdCAgICp2YWx1 ZTsKIAotCQkJaWYgKGF0dHItPmF0dGlzZHJvcHBlZCkKKwkJCWlmIChhdHRyLT5hdHRpc2Ry b3BwZWQgfHwgYXR0ci0+YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVURV9HRU5FUkFURURfVklS VFVBTCkKIAkJCQljb250aW51ZTsKIAogCQkJa2V5ID0gTmFtZVN0cihhdHRyLT5hdHRuYW1l KTsKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHB5dGhvbi9zcWwvcGxweXRob25fdHJpZ2dlci5z cWwgYi9zcmMvcGwvcGxweXRob24vc3FsL3BscHl0aG9uX3RyaWdnZXIuc3FsCmluZGV4IDc5 YzI0YjcxNGIuLjc0NWU3OTJiZWMgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHB5dGhvbi9zcWwv cGxweXRob25fdHJpZ2dlci5zcWwKKysrIGIvc3JjL3BsL3BscHl0aG9uL3NxbC9wbHB5dGhv bl90cmlnZ2VyLnNxbApAQCAtNjcsNiArNjcsOSBAQCBDUkVBVEUgVFJJR0dFUiB1c2Vyc19k ZWxldGVfdHJpZyBCRUZPUkUgREVMRVRFIE9OIHVzZXJzIEZPUiBFQUNIIFJPVwogQ1JFQVRF IFRBQkxFIHRyaWdnZXJfdGVzdAogCShpIGludCwgdiB0ZXh0ICk7CiAKK0NSRUFURSBUQUJM RSB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkCisJKGkgaW50LCBqIGludCBHRU5FUkFURUQgQUxX QVlTIEFTIChpICogMikpOworCiBDUkVBVEUgRlVOQ1RJT04gdHJpZ2dlcl9kYXRhKCkgUkVU VVJOUyB0cmlnZ2VyIExBTkdVQUdFIHBscHl0aG9udSBBUyAkJAogCiBpZiAncmVsaWQnIGlu IFREOgpAQCAtMTA5LDYgKzExMiwyMSBAQCBDUkVBVEUgVFJJR0dFUiBzaG93X3RyaWdnZXJf ZGF0YV90cmlnX3N0bXQKIERST1AgVFJJR0dFUiBzaG93X3RyaWdnZXJfZGF0YV90cmlnX2Jl Zm9yZSBvbiB0cmlnZ2VyX3Rlc3Q7CiBEUk9QIFRSSUdHRVIgc2hvd190cmlnZ2VyX2RhdGFf dHJpZ19hZnRlciBvbiB0cmlnZ2VyX3Rlc3Q7CiAKK0NSRUFURSBUUklHR0VSIHNob3dfdHJp Z2dlcl9kYXRhX3RyaWdfYmVmb3JlCitCRUZPUkUgSU5TRVJUIE9SIFVQREFURSBPUiBERUxF VEUgT04gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZAorRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJP Q0VEVVJFIHRyaWdnZXJfZGF0YSgpOworCitDUkVBVEUgVFJJR0dFUiBzaG93X3RyaWdnZXJf ZGF0YV90cmlnX2FmdGVyCitBRlRFUiBJTlNFUlQgT1IgVVBEQVRFIE9SIERFTEVURSBPTiB0 cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkCitGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUg dHJpZ2dlcl9kYXRhKCk7CisKK2luc2VydCBpbnRvIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQg KGkpIHZhbHVlcyAoMSk7Cit1cGRhdGUgdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZCBzZXQgaSA9 IDExIHdoZXJlIGkgPSAxOworZGVsZXRlIGZyb20gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZDsK KworRFJPUCBUUklHR0VSIHNob3dfdHJpZ2dlcl9kYXRhX3RyaWdfYmVmb3JlIE9OIHRyaWdn ZXJfdGVzdF9nZW5lcmF0ZWQ7CitEUk9QIFRSSUdHRVIgc2hvd190cmlnZ2VyX2RhdGFfdHJp Z19hZnRlciBPTiB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkOworCiBpbnNlcnQgaW50byB0cmln Z2VyX3Rlc3QgdmFsdWVzKDEsJ2luc2VydCcpOwogQ1JFQVRFIFZJRVcgdHJpZ2dlcl90ZXN0 X3ZpZXcgQVMgU0VMRUNUICogRlJPTSB0cmlnZ2VyX3Rlc3Q7CiAKQEAgLTQzMCwzICs0NDgs MjAgQEAgQ1JFQVRFIFRSSUdHRVIgYV90IEFGVEVSIFVQREFURSBPTiB0cmFuc2l0aW9uX3Rh YmxlX3Rlc3QKIAogRFJPUCBUQUJMRSB0cmFuc2l0aW9uX3RhYmxlX3Rlc3Q7CiBEUk9QIEZV TkNUSU9OIHRyYW5zaXRpb25fdGFibGVfdGVzdF9mKCk7CisKKworLS0gZGVhbGluZyB3aXRo IGdlbmVyYXRlZCBjb2x1bW5zCisKK0NSRUFURSBGVU5DVElPTiBnZW5lcmF0ZWRfdGVzdF9m dW5jMSgpIFJFVFVSTlMgdHJpZ2dlcgorTEFOR1VBR0UgcGxweXRob251CitBUyAkJAorVERb J25ldyddWydqJ10gPSA1ICAjIG5vdCBhbGxvd2VkCityZXR1cm4gJ01PRElGWScKKyQkOwor CitDUkVBVEUgVFJJR0dFUiBnZW5lcmF0ZWRfdGVzdF90cmlnZ2VyMSBCRUZPUkUgSU5TRVJU IE9OIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQKK0ZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NF RFVSRSBnZW5lcmF0ZWRfdGVzdF9mdW5jMSgpOworCitUUlVOQ0FURSB0cmlnZ2VyX3Rlc3Rf Z2VuZXJhdGVkOworSU5TRVJUIElOVE8gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZCAoaSkgVkFM VUVTICgxKTsKK1NFTEVDVCAqIEZST00gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZDsKZGlmZiAt LWdpdCBhL3NyYy9wbC90Y2wvZXhwZWN0ZWQvcGx0Y2xfcXVlcmllcy5vdXQgYi9zcmMvcGwv dGNsL2V4cGVjdGVkL3BsdGNsX3F1ZXJpZXMub3V0CmluZGV4IDczNjY3MWNjMWIuLjFhYWM5 MzNiODEgMTAwNjQ0Ci0tLSBhL3NyYy9wbC90Y2wvZXhwZWN0ZWQvcGx0Y2xfcXVlcmllcy5v dXQKKysrIGIvc3JjL3BsL3RjbC9leHBlY3RlZC9wbHRjbF9xdWVyaWVzLm91dApAQCAtMjA3 LDYgKzIwNyw3NSBAQCBOT1RJQ0U6ICBUR190YWJsZV9uYW1lOiB0cmlnZ2VyX3Rlc3QKIE5P VElDRTogIFRHX3RhYmxlX3NjaGVtYTogcHVibGljCiBOT1RJQ0U6ICBUR193aGVuOiBCRUZP UkUKIE5PVElDRTogIGFyZ3M6IHsyMyBza2lkb299CitpbnNlcnQgaW50byB0cmlnZ2VyX3Rl c3RfZ2VuZXJhdGVkIChpKSB2YWx1ZXMgKDEpOworTk9USUNFOiAgTkVXOiB7aTogMX0KK05P VElDRTogIE9MRDoge30KK05PVElDRTogIFRHX2xldmVsOiBST1cKK05PVElDRTogIFRHX25h bWU6IHNob3dfdHJpZ2dlcl9kYXRhX3RyaWdfYmVmb3JlCitOT1RJQ0U6ICBUR19vcDogSU5T RVJUCitOT1RJQ0U6ICBUR19yZWxhdHRzOiB7e30gaSBqfQorTk9USUNFOiAgVEdfcmVsaWQ6 IGJvZ3VzOjEyMzQ1CitOT1RJQ0U6ICBUR190YWJsZV9uYW1lOiB0cmlnZ2VyX3Rlc3RfZ2Vu ZXJhdGVkCitOT1RJQ0U6ICBUR190YWJsZV9zY2hlbWE6IHB1YmxpYworTk9USUNFOiAgVEdf d2hlbjogQkVGT1JFCitOT1RJQ0U6ICBhcmdzOiB7fQorTk9USUNFOiAgTkVXOiB7aTogMX0K K05PVElDRTogIE9MRDoge30KK05PVElDRTogIFRHX2xldmVsOiBST1cKK05PVElDRTogIFRH X25hbWU6IHNob3dfdHJpZ2dlcl9kYXRhX3RyaWdfYWZ0ZXIKK05PVElDRTogIFRHX29wOiBJ TlNFUlQKK05PVElDRTogIFRHX3JlbGF0dHM6IHt7fSBpIGp9CitOT1RJQ0U6ICBUR19yZWxp ZDogYm9ndXM6MTIzNDUKK05PVElDRTogIFRHX3RhYmxlX25hbWU6IHRyaWdnZXJfdGVzdF9n ZW5lcmF0ZWQKK05PVElDRTogIFRHX3RhYmxlX3NjaGVtYTogcHVibGljCitOT1RJQ0U6ICBU R193aGVuOiBBRlRFUgorTk9USUNFOiAgYXJnczoge30KK3VwZGF0ZSB0cmlnZ2VyX3Rlc3Rf Z2VuZXJhdGVkIHNldCBpID0gMTEgd2hlcmUgaSA9IDE7CitOT1RJQ0U6ICBORVc6IHtpOiAx MX0KK05PVElDRTogIE9MRDoge2k6IDF9CitOT1RJQ0U6ICBUR19sZXZlbDogUk9XCitOT1RJ Q0U6ICBUR19uYW1lOiBzaG93X3RyaWdnZXJfZGF0YV90cmlnX2JlZm9yZQorTk9USUNFOiAg VEdfb3A6IFVQREFURQorTk9USUNFOiAgVEdfcmVsYXR0czoge3t9IGkgan0KK05PVElDRTog IFRHX3JlbGlkOiBib2d1czoxMjM0NQorTk9USUNFOiAgVEdfdGFibGVfbmFtZTogdHJpZ2dl cl90ZXN0X2dlbmVyYXRlZAorTk9USUNFOiAgVEdfdGFibGVfc2NoZW1hOiBwdWJsaWMKK05P VElDRTogIFRHX3doZW46IEJFRk9SRQorTk9USUNFOiAgYXJnczoge30KK05PVElDRTogIE5F Vzoge2k6IDExfQorTk9USUNFOiAgT0xEOiB7aTogMX0KK05PVElDRTogIFRHX2xldmVsOiBS T1cKK05PVElDRTogIFRHX25hbWU6IHNob3dfdHJpZ2dlcl9kYXRhX3RyaWdfYWZ0ZXIKK05P VElDRTogIFRHX29wOiBVUERBVEUKK05PVElDRTogIFRHX3JlbGF0dHM6IHt7fSBpIGp9CitO T1RJQ0U6ICBUR19yZWxpZDogYm9ndXM6MTIzNDUKK05PVElDRTogIFRHX3RhYmxlX25hbWU6 IHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQKK05PVElDRTogIFRHX3RhYmxlX3NjaGVtYTogcHVi bGljCitOT1RJQ0U6ICBUR193aGVuOiBBRlRFUgorTk9USUNFOiAgYXJnczoge30KK2RlbGV0 ZSBmcm9tIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQ7CitOT1RJQ0U6ICBORVc6IHt9CitOT1RJ Q0U6ICBPTEQ6IHtpOiAxMX0KK05PVElDRTogIFRHX2xldmVsOiBST1cKK05PVElDRTogIFRH X25hbWU6IHNob3dfdHJpZ2dlcl9kYXRhX3RyaWdfYmVmb3JlCitOT1RJQ0U6ICBUR19vcDog REVMRVRFCitOT1RJQ0U6ICBUR19yZWxhdHRzOiB7e30gaSBqfQorTk9USUNFOiAgVEdfcmVs aWQ6IGJvZ3VzOjEyMzQ1CitOT1RJQ0U6ICBUR190YWJsZV9uYW1lOiB0cmlnZ2VyX3Rlc3Rf Z2VuZXJhdGVkCitOT1RJQ0U6ICBUR190YWJsZV9zY2hlbWE6IHB1YmxpYworTk9USUNFOiAg VEdfd2hlbjogQkVGT1JFCitOT1RJQ0U6ICBhcmdzOiB7fQorTk9USUNFOiAgTkVXOiB7fQor Tk9USUNFOiAgT0xEOiB7aTogMTF9CitOT1RJQ0U6ICBUR19sZXZlbDogUk9XCitOT1RJQ0U6 ICBUR19uYW1lOiBzaG93X3RyaWdnZXJfZGF0YV90cmlnX2FmdGVyCitOT1RJQ0U6ICBUR19v cDogREVMRVRFCitOT1RJQ0U6ICBUR19yZWxhdHRzOiB7e30gaSBqfQorTk9USUNFOiAgVEdf cmVsaWQ6IGJvZ3VzOjEyMzQ1CitOT1RJQ0U6ICBUR190YWJsZV9uYW1lOiB0cmlnZ2VyX3Rl c3RfZ2VuZXJhdGVkCitOT1RJQ0U6ICBUR190YWJsZV9zY2hlbWE6IHB1YmxpYworTk9USUNF OiAgVEdfd2hlbjogQUZURVIKK05PVElDRTogIGFyZ3M6IHt9CiBpbnNlcnQgaW50byB0cmln Z2VyX3Rlc3RfdmlldyB2YWx1ZXMoMiwnaW5zZXJ0Jyk7CiBOT1RJQ0U6ICBORVc6IHtpOiAy LCB2OiBpbnNlcnR9CiBOT1RJQ0U6ICBPTEQ6IHt9CkBAIC0zMTQsNiArMzgzLDggQEAgTk9U SUNFOiAgVEdfdGFibGVfbmFtZTogdHJpZ2dlcl90ZXN0CiBOT1RJQ0U6ICBUR190YWJsZV9z Y2hlbWE6IHB1YmxpYwogTk9USUNFOiAgVEdfd2hlbjogQkVGT1JFCiBOT1RJQ0U6ICBhcmdz OiB7NDIge3N0YXRlbWVudCB0cmlnZ2VyfX0KK0RST1AgVFJJR0dFUiBzaG93X3RyaWdnZXJf ZGF0YV90cmlnX2JlZm9yZSBPTiB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkOworRFJPUCBUUklH R0VSIHNob3dfdHJpZ2dlcl9kYXRhX3RyaWdfYWZ0ZXIgT04gdHJpZ2dlcl90ZXN0X2dlbmVy YXRlZDsKIC0tIFRlc3QgY29tcG9zaXRlLXR5cGUgYXJndW1lbnRzCiBzZWxlY3QgdGNsX2Nv bXBvc2l0ZV9hcmdfcmVmMShyb3coJ3RrZXknLCA0MiwgJ3JlZjInKSk7CiAgdGNsX2NvbXBv c2l0ZV9hcmdfcmVmMSAKQEAgLTc3NSwzICs4NDYsMjEgQEAgSU5GTzogIG9sZDogMSAtPiBh CiBJTkZPOiAgbmV3OiAxIC0+IGIKIGRyb3AgdGFibGUgdHJhbnNpdGlvbl90YWJsZV90ZXN0 OwogZHJvcCBmdW5jdGlvbiB0cmFuc2l0aW9uX3RhYmxlX3Rlc3RfZigpOworLS0gZGVhbGlu ZyB3aXRoIGdlbmVyYXRlZCBjb2x1bW5zCitDUkVBVEUgRlVOQ1RJT04gZ2VuZXJhdGVkX3Rl c3RfZnVuYzEoKSBSRVRVUk5TIHRyaWdnZXIKK0xBTkdVQUdFIHBsdGNsCitBUyAkJAorIyBu b3QgYWxsb3dlZAorc2V0IE5FVyhqKSA1CityZXR1cm4gW2FycmF5IGdldCBORVddCiskJDsK K0NSRUFURSBUUklHR0VSIGdlbmVyYXRlZF90ZXN0X3RyaWdnZXIxIEJFRk9SRSBJTlNFUlQg T04gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZAorRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VE VVJFIGdlbmVyYXRlZF90ZXN0X2Z1bmMxKCk7CitUUlVOQ0FURSB0cmlnZ2VyX3Rlc3RfZ2Vu ZXJhdGVkOworSU5TRVJUIElOVE8gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZCAoaSkgVkFMVUVT ICgxKTsKK0VSUk9SOiAgY2Fubm90IHNldCBnZW5lcmF0ZWQgY29sdW1uICJqIgorU0VMRUNU ICogRlJPTSB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkOworIGkgfCBqIAorLS0tKy0tLQorKDAg cm93cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3BsL3RjbC9leHBlY3RlZC9wbHRjbF9zZXR1cC5v dXQgYi9zcmMvcGwvdGNsL2V4cGVjdGVkL3BsdGNsX3NldHVwLm91dAppbmRleCBmMTk1OGMz YTk4Li45MTAxMTllMzg1IDEwMDY0NAotLS0gYS9zcmMvcGwvdGNsL2V4cGVjdGVkL3BsdGNs X3NldHVwLm91dAorKysgYi9zcmMvcGwvdGNsL2V4cGVjdGVkL3BsdGNsX3NldHVwLm91dApA QCAtNTksNiArNTksOCBAQCBDUkVBVEUgVEFCTEUgdHJpZ2dlcl90ZXN0ICgKICk7CiAtLSBN YWtlIGNlcnRhaW4gZHJvcHBlZCBhdHRyaWJ1dGVzIGFyZSBoYW5kbGVkIGNvcnJlY3RseQog QUxURVIgVEFCTEUgdHJpZ2dlcl90ZXN0IERST1AgZHJvcG1lOworQ1JFQVRFIFRBQkxFIHRy aWdnZXJfdGVzdF9nZW5lcmF0ZWQKKwkoaSBpbnQsIGogaW50IEdFTkVSQVRFRCBBTFdBWVMg QVMgKGkgKiAyKSk7CiBDUkVBVEUgVklFVyB0cmlnZ2VyX3Rlc3RfdmlldyBBUyBTRUxFQ1Qg aSwgdiBGUk9NIHRyaWdnZXJfdGVzdDsKIENSRUFURSBGVU5DVElPTiB0cmlnZ2VyX2RhdGEo KSByZXR1cm5zIHRyaWdnZXIgbGFuZ3VhZ2UgcGx0Y2wgYXMgJF8kCiAJaWYgeyRUR190YWJs ZV9uYW1lIGVxICJ0cmlnZ2VyX3Rlc3QiICYmICRUR19sZXZlbCBlcSAiUk9XIiAmJiAkVEdf b3AgbmUgIkRFTEVURSJ9IHsKQEAgLTExMCw2ICsxMTIsMTIgQEAgRk9SIEVBQ0ggUk9XIEVY RUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZGF0YSgyMywnc2tpZG9vJyk7CiBDUkVBVEUgVFJJ R0dFUiBzdGF0ZW1lbnRfdHJpZ2dlcgogQkVGT1JFIElOU0VSVCBPUiBVUERBVEUgT1IgREVM RVRFIE9SIFRSVU5DQVRFIE9OIHRyaWdnZXJfdGVzdAogRk9SIEVBQ0ggU1RBVEVNRU5UIEVY RUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZGF0YSg0Miwnc3RhdGVtZW50IHRyaWdnZXInKTsK K0NSRUFURSBUUklHR0VSIHNob3dfdHJpZ2dlcl9kYXRhX3RyaWdfYmVmb3JlCitCRUZPUkUg SU5TRVJUIE9SIFVQREFURSBPUiBERUxFVEUgT04gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZAor Rk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZGF0YSgpOworQ1JFQVRF IFRSSUdHRVIgc2hvd190cmlnZ2VyX2RhdGFfdHJpZ19hZnRlcgorQUZURVIgSU5TRVJUIE9S IFVQREFURSBPUiBERUxFVEUgT04gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZAorRk9SIEVBQ0gg Uk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZGF0YSgpOwogQ1JFQVRFIFRSSUdHRVIg c2hvd190cmlnZ2VyX2RhdGFfdmlld190cmlnCiBJTlNURUFEIE9GIElOU0VSVCBPUiBVUERB VEUgT1IgREVMRVRFIE9OIHRyaWdnZXJfdGVzdF92aWV3CiBGT1IgRUFDSCBST1cgRVhFQ1VU RSBQUk9DRURVUkUgdHJpZ2dlcl9kYXRhKDI0LCdza2lkb28gdmlldycpOwpkaWZmIC0tZ2l0 IGEvc3JjL3BsL3RjbC9wbHRjbC5jIGIvc3JjL3BsL3RjbC9wbHRjbC5jCmluZGV4IGUyZmE0 M2I4OTAuLmMwN2ZhODI3NDIgMTAwNjQ0Ci0tLSBhL3NyYy9wbC90Y2wvcGx0Y2wuYworKysg Yi9zcmMvcGwvdGNsL3BsdGNsLmMKQEAgLTMyNDUsNiArMzI0NSwxMiBAQCBwbHRjbF9idWls ZF90dXBsZV9yZXN1bHQoVGNsX0ludGVycCAqaW50ZXJwLCBUY2xfT2JqICoqa3ZPYmp2LCBp bnQga3ZPYmpjLAogCQkJCQkgZXJybXNnKCJjYW5ub3Qgc2V0IHN5c3RlbSBhdHRyaWJ1dGUg XCIlc1wiIiwKIAkJCQkJCQlmaWVsZE5hbWUpKSk7CiAKKwkJaWYgKFR1cGxlRGVzY0F0dHIo dHVwZGVzYywgYXR0biAtIDEpLT5hdHRnZW5lcmF0ZWQpCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX0VfUl9JX0VfVFJJR0dFUl9QUk9UT0NPTF9WSU9MQVRF RCksCisJCQkJCSBlcnJtc2coImNhbm5vdCBzZXQgZ2VuZXJhdGVkIGNvbHVtbiBcIiVzXCIi LAorCQkJCQkJCWZpZWxkTmFtZSkpKTsKKwogCQl2YWx1ZXNbYXR0biAtIDFdID0gdXRmX3Uy ZShUY2xfR2V0U3RyaW5nKGt2T2JqdltpICsgMV0pKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3Ny Yy9wbC90Y2wvc3FsL3BsdGNsX3F1ZXJpZXMuc3FsIGIvc3JjL3BsL3RjbC9zcWwvcGx0Y2xf cXVlcmllcy5zcWwKaW5kZXggNzFjMTIzOGJkMi4uNGE0Mjg1MzU5MSAxMDA2NDQKLS0tIGEv c3JjL3BsL3RjbC9zcWwvcGx0Y2xfcXVlcmllcy5zcWwKKysrIGIvc3JjL3BsL3RjbC9zcWwv cGx0Y2xfcXVlcmllcy5zcWwKQEAgLTc2LDYgKzc2LDEwIEBACiAtLSBzaG93IGR1bXAgb2Yg dHJpZ2dlciBkYXRhCiBpbnNlcnQgaW50byB0cmlnZ2VyX3Rlc3QgdmFsdWVzKDEsJ2luc2Vy dCcpOwogCitpbnNlcnQgaW50byB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkIChpKSB2YWx1ZXMg KDEpOwordXBkYXRlIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQgc2V0IGkgPSAxMSB3aGVyZSBp ID0gMTsKK2RlbGV0ZSBmcm9tIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQ7CisKIGluc2VydCBp bnRvIHRyaWdnZXJfdGVzdF92aWV3IHZhbHVlcygyLCdpbnNlcnQnKTsKIHVwZGF0ZSB0cmln Z2VyX3Rlc3RfdmlldyBzZXQgdiA9ICd1cGRhdGUnIHdoZXJlIGk9MTsKIGRlbGV0ZSBmcm9t IHRyaWdnZXJfdGVzdF92aWV3OwpAQCAtODUsNiArODksOSBAQAogZGVsZXRlIGZyb20gdHJp Z2dlcl90ZXN0OwogdHJ1bmNhdGUgdHJpZ2dlcl90ZXN0OwogCitEUk9QIFRSSUdHRVIgc2hv d190cmlnZ2VyX2RhdGFfdHJpZ19iZWZvcmUgT04gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZDsK K0RST1AgVFJJR0dFUiBzaG93X3RyaWdnZXJfZGF0YV90cmlnX2FmdGVyIE9OIHRyaWdnZXJf dGVzdF9nZW5lcmF0ZWQ7CisKIC0tIFRlc3QgY29tcG9zaXRlLXR5cGUgYXJndW1lbnRzCiBz ZWxlY3QgdGNsX2NvbXBvc2l0ZV9hcmdfcmVmMShyb3coJ3RrZXknLCA0MiwgJ3JlZjInKSk7 CiBzZWxlY3QgdGNsX2NvbXBvc2l0ZV9hcmdfcmVmMihyb3coJ3RrZXknLCA0MiwgJ3JlZjIn KSk7CkBAIC0yNzksMyArMjg2LDIxIEBAIENSRUFURSBUUklHR0VSIGFfdCBBRlRFUiBVUERB VEUgT04gdHJhbnNpdGlvbl90YWJsZV90ZXN0CiB1cGRhdGUgdHJhbnNpdGlvbl90YWJsZV90 ZXN0IHNldCBuYW1lID0gJ2InOwogZHJvcCB0YWJsZSB0cmFuc2l0aW9uX3RhYmxlX3Rlc3Q7 CiBkcm9wIGZ1bmN0aW9uIHRyYW5zaXRpb25fdGFibGVfdGVzdF9mKCk7CisKKworLS0gZGVh bGluZyB3aXRoIGdlbmVyYXRlZCBjb2x1bW5zCisKK0NSRUFURSBGVU5DVElPTiBnZW5lcmF0 ZWRfdGVzdF9mdW5jMSgpIFJFVFVSTlMgdHJpZ2dlcgorTEFOR1VBR0UgcGx0Y2wKK0FTICQk CisjIG5vdCBhbGxvd2VkCitzZXQgTkVXKGopIDUKK3JldHVybiBbYXJyYXkgZ2V0IE5FV10K KyQkOworCitDUkVBVEUgVFJJR0dFUiBnZW5lcmF0ZWRfdGVzdF90cmlnZ2VyMSBCRUZPUkUg SU5TRVJUIE9OIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQKK0ZPUiBFQUNIIFJPVyBFWEVDVVRF IFBST0NFRFVSRSBnZW5lcmF0ZWRfdGVzdF9mdW5jMSgpOworCitUUlVOQ0FURSB0cmlnZ2Vy X3Rlc3RfZ2VuZXJhdGVkOworSU5TRVJUIElOVE8gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZCAo aSkgVkFMVUVTICgxKTsKK1NFTEVDVCAqIEZST00gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZDsK ZGlmZiAtLWdpdCBhL3NyYy9wbC90Y2wvc3FsL3BsdGNsX3NldHVwLnNxbCBiL3NyYy9wbC90 Y2wvc3FsL3BsdGNsX3NldHVwLnNxbAppbmRleCA1NmE5MGRjODQ0Li43ZTZlZDY5OWUzIDEw MDY0NAotLS0gYS9zcmMvcGwvdGNsL3NxbC9wbHRjbF9zZXR1cC5zcWwKKysrIGIvc3JjL3Bs L3RjbC9zcWwvcGx0Y2xfc2V0dXAuc3FsCkBAIC02OCw2ICs2OCw5IEBAIENSRUFURSBUQUJM RSB0cmlnZ2VyX3Rlc3QgKAogLS0gTWFrZSBjZXJ0YWluIGRyb3BwZWQgYXR0cmlidXRlcyBh cmUgaGFuZGxlZCBjb3JyZWN0bHkKIEFMVEVSIFRBQkxFIHRyaWdnZXJfdGVzdCBEUk9QIGRy b3BtZTsKIAorQ1JFQVRFIFRBQkxFIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQKKwkoaSBpbnQs IGogaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGkgKiAyKSk7CisKIENSRUFURSBWSUVXIHRy aWdnZXJfdGVzdF92aWV3IEFTIFNFTEVDVCBpLCB2IEZST00gdHJpZ2dlcl90ZXN0OwogCiBD UkVBVEUgRlVOQ1RJT04gdHJpZ2dlcl9kYXRhKCkgcmV0dXJucyB0cmlnZ2VyIGxhbmd1YWdl IHBsdGNsIGFzICRfJApAQCAtMTIyLDYgKzEyNSwxMyBAQCBDUkVBVEUgVFJJR0dFUiBzdGF0 ZW1lbnRfdHJpZ2dlcgogQkVGT1JFIElOU0VSVCBPUiBVUERBVEUgT1IgREVMRVRFIE9SIFRS VU5DQVRFIE9OIHRyaWdnZXJfdGVzdAogRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgUFJP Q0VEVVJFIHRyaWdnZXJfZGF0YSg0Miwnc3RhdGVtZW50IHRyaWdnZXInKTsKIAorQ1JFQVRF IFRSSUdHRVIgc2hvd190cmlnZ2VyX2RhdGFfdHJpZ19iZWZvcmUKK0JFRk9SRSBJTlNFUlQg T1IgVVBEQVRFIE9SIERFTEVURSBPTiB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkCitGT1IgRUFD SCBST1cgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9kYXRhKCk7CitDUkVBVEUgVFJJR0dF UiBzaG93X3RyaWdnZXJfZGF0YV90cmlnX2FmdGVyCitBRlRFUiBJTlNFUlQgT1IgVVBEQVRF IE9SIERFTEVURSBPTiB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkCitGT1IgRUFDSCBST1cgRVhF Q1VURSBQUk9DRURVUkUgdHJpZ2dlcl9kYXRhKCk7CisKIENSRUFURSBUUklHR0VSIHNob3df dHJpZ2dlcl9kYXRhX3ZpZXdfdHJpZwogSU5TVEVBRCBPRiBJTlNFUlQgT1IgVVBEQVRFIE9S IERFTEVURSBPTiB0cmlnZ2VyX3Rlc3RfdmlldwogRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJP Q0VEVVJFIHRyaWdnZXJfZGF0YSgyNCwnc2tpZG9vIHZpZXcnKTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX3RhYmxlX2xpa2Uub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfdGFibGVfbGlrZS5vdXQKaW5kZXggOGQ0NTQz YmZlOC4uMjAwNjE2MjY5NCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9jcmVhdGVfdGFibGVfbGlrZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9jcmVhdGVfdGFibGVfbGlrZS5vdXQKQEAgLTExMyw2ICsxMTMsNTIgQEAgU0VMRUNUICog RlJPTSB0ZXN0X2xpa2VfaWRfMzsgIC0tIGlkZW50aXR5IHdhcyBjb3BpZWQgYW5kIGFwcGxp ZWQKICgxIHJvdykKIAogRFJPUCBUQUJMRSB0ZXN0X2xpa2VfaWRfMSwgdGVzdF9saWtlX2lk XzIsIHRlc3RfbGlrZV9pZF8zOworQ1JFQVRFIFRBQkxFIHRlc3RfbGlrZV9nZW5fMSAoYSBp bnQsIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGEgKiAyKSk7CitcZCB0ZXN0X2xpa2Vf Z2VuXzEKKyAgICAgICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy50ZXN0X2xpa2VfZ2Vu XzEiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAg ICAgIERlZmF1bHQgICAgICAgICAgIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBhICAgICAgfCBp bnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBiICAgICAgfCBpbnRlZ2VyIHwg ICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzIChhICogMikKKwor SU5TRVJUIElOVE8gdGVzdF9saWtlX2dlbl8xIChhKSBWQUxVRVMgKDEpOworU0VMRUNUICog RlJPTSB0ZXN0X2xpa2VfZ2VuXzE7CisgYSB8IGIgCistLS0rLS0tCisgMSB8IDIKKygxIHJv dykKKworQ1JFQVRFIFRBQkxFIHRlc3RfbGlrZV9nZW5fMiAoTElLRSB0ZXN0X2xpa2VfZ2Vu XzEpOworXGQgdGVzdF9saWtlX2dlbl8yCisgICAgICAgICAgVGFibGUgInB1YmxpYy50ZXN0 X2xpa2VfZ2VuXzIiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxl IHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLQorIGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8 IAorIGIgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorCitJTlNF UlQgSU5UTyB0ZXN0X2xpa2VfZ2VuXzIgKGEpIFZBTFVFUyAoMSk7CitTRUxFQ1QgKiBGUk9N IHRlc3RfbGlrZV9nZW5fMjsKKyBhIHwgYiAKKy0tLSstLS0KKyAxIHwgIAorKDEgcm93KQor CitDUkVBVEUgVEFCTEUgdGVzdF9saWtlX2dlbl8zIChMSUtFIHRlc3RfbGlrZV9nZW5fMSBJ TkNMVURJTkcgR0VORVJBVEVEKTsKK1xkIHRlc3RfbGlrZV9nZW5fMworICAgICAgICAgICAg ICAgICAgICBUYWJsZSAicHVibGljLnRlc3RfbGlrZV9nZW5fMyIKKyBDb2x1bW4gfCAgVHlw ZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgRGVmYXVsdCAgICAgICAg ICAgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAg fCAgICAgICAgICB8IAorIGIgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAg ICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKGEgKiAyKQorCitJTlNFUlQgSU5UTyB0ZXN0X2xp a2VfZ2VuXzMgKGEpIFZBTFVFUyAoMSk7CitTRUxFQ1QgKiBGUk9NIHRlc3RfbGlrZV9nZW5f MzsKKyBhIHwgYiAKKy0tLSstLS0KKyAxIHwgMgorKDEgcm93KQorCitEUk9QIFRBQkxFIHRl c3RfbGlrZV9nZW5fMSwgdGVzdF9saWtlX2dlbl8yLCB0ZXN0X2xpa2VfZ2VuXzM7CiBDUkVB VEUgVEFCTEUgaW5oZyAoeCB0ZXh0LCBMSUtFIGluaHggSU5DTFVESU5HIElOREVYRVMsIHkg dGV4dCk7IC8qIGNvcGllcyBpbmRleGVzICovCiBJTlNFUlQgSU5UTyBpbmhnIFZBTFVFUyAo NSwgMTApOwogSU5TRVJUIElOVE8gaW5oZyBWQUxVRVMgKDIwLCAxMCk7IC0tIHNob3VsZCBm YWlsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZC5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZC5vdXQKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uODEyYTQwZDEzNgotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2VuZXJhdGVkLm91dApAQCAtMCww ICsxLDczNyBAQAorLS0gc2FuaXR5IGNoZWNrIG9mIHN5c3RlbSBjYXRhbG9nCitTRUxFQ1Qg YXR0cmVsaWQsIGF0dG5hbWUsIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVS RSBhdHRnZW5lcmF0ZWQgTk9UIElOICgnJywgJ3MnLCAndicpOworIGF0dHJlbGlkIHwgYXR0 bmFtZSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tCisoMCByb3dzKQorCitDUkVBVEUgVEFCTEUgZ3Rlc3QwIChhIGludCBQUklNQVJZIEtF WSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoNTUpKTsKK0NSRUFURSBUQUJMRSBndGVz dDEgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICog MikpOworU0VMRUNUIHRhYmxlX25hbWUsIGNvbHVtbl9uYW1lLCBjb2x1bW5fZGVmYXVsdCwg aXNfbnVsbGFibGUsIGlzX2dlbmVyYXRlZCwgZ2VuZXJhdGlvbl9leHByZXNzaW9uIEZST00g aW5mb3JtYXRpb25fc2NoZW1hLmNvbHVtbnMgV0hFUkUgdGFibGVfbmFtZSBMSUtFICdndGVz dF8nIE9SREVSIEJZIDEsIDI7CisgdGFibGVfbmFtZSB8IGNvbHVtbl9uYW1lIHwgY29sdW1u X2RlZmF1bHQgfCBpc19udWxsYWJsZSB8IGlzX2dlbmVyYXRlZCB8IGdlbmVyYXRpb25fZXhw cmVzc2lvbiAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IGd0ZXN0MCAgICAgfCBhICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgTk8gICAgICAg ICAgfCBORVZFUiAgICAgICAgfCAKKyBndGVzdDAgICAgIHwgYiAgICAgICAgICAgfCAgICAg ICAgICAgICAgICB8IFlFUyAgICAgICAgIHwgQUxXQVlTICAgICAgIHwgNTUKKyBndGVzdDEg ICAgIHwgYSAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8IE5PICAgICAgICAgIHwgTkVW RVIgICAgICAgIHwgCisgZ3Rlc3QxICAgICB8IGIgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgfCBZRVMgICAgICAgICB8IEFMV0FZUyAgICAgICB8IChhICogMikKKyg0IHJvd3MpCisK K1NFTEVDVCB0YWJsZV9uYW1lLCBjb2x1bW5fbmFtZSwgZGVwZW5kZW50X2NvbHVtbiBGUk9N IGluZm9ybWF0aW9uX3NjaGVtYS5jb2x1bW5fY29sdW1uX3VzYWdlIE9SREVSIEJZIDEsIDIs IDM7CisgdGFibGVfbmFtZSB8IGNvbHVtbl9uYW1lIHwgZGVwZW5kZW50X2NvbHVtbiAKKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIGd0ZXN0MSAg ICAgfCBhICAgICAgICAgICB8IGIKKygxIHJvdykKKworXGQgZ3Rlc3QxCisgICAgICAgICAg ICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy5ndGVzdDEiCisgQ29sdW1uIHwgIFR5cGUg ICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgIERlZmF1bHQgICAgICAgICAg IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwg bm90IG51bGwgfCAKKyBiICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAg fCBnZW5lcmF0ZWQgYWx3YXlzIGFzIChhICogMikKK0luZGV4ZXM6CisgICAgImd0ZXN0MV9w a2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGEpCisKKy0tIGR1cGxpY2F0ZSBnZW5lcmF0ZWQK K0NSRUFURSBUQUJMRSBndGVzdF9lcnJfMSAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50IEdF TkVSQVRFRCBBTFdBWVMgQVMgKGEgKiAyKSBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMykp OworRVJST1I6ICBtdWx0aXBsZSBnZW5lcmF0aW9uIGNsYXVzZXMgc3BlY2lmaWVkIGZvciBj b2x1bW4gImIiIG9mIHRhYmxlICJndGVzdF9lcnJfMSIKK0xJTkUgMTogLi4ubnQgUFJJTUFS WSBLRVksIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGEgKiAyKSBHRU5FUkFURUQgLi4u CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorLS0gcmVmZXJlbmNlcyB0byBvdGhlciBnZW5lcmF0ZWQgY29sdW1ucywg aW5jbHVkaW5nIHNlbGYtcmVmZXJlbmNlcworQ1JFQVRFIFRBQkxFIGd0ZXN0X2Vycl8yYSAo YSBpbnQgUFJJTUFSWSBLRVksIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGIgKiAyKSk7 CitFUlJPUjogIGNhbm5vdCB1c2UgZ2VuZXJhdGVkIGNvbHVtbiAiYiIgaW4gY29sdW1uIGdl bmVyYXRpb24gZXhwcmVzc2lvbgorTElORSAxOiAuLi5yXzJhIChhIGludCBQUklNQVJZIEtF WSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYiAqIDIpKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RF VEFJTDogIEEgZ2VuZXJhdGVkIGNvbHVtbiBjYW5ub3QgcmVmZXJlbmNlIGFub3RoZXIgZ2Vu ZXJhdGVkIGNvbHVtbi4KK0NSRUFURSBUQUJMRSBndGVzdF9lcnJfMmIgKGEgaW50IFBSSU1B UlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMiksIGMgaW50IEdFTkVS QVRFRCBBTFdBWVMgQVMgKGIgKiAzKSk7CitFUlJPUjogIGNhbm5vdCB1c2UgZ2VuZXJhdGVk IGNvbHVtbiAiYiIgaW4gY29sdW1uIGdlbmVyYXRpb24gZXhwcmVzc2lvbgorTElORSAxOiAu Li5SQVRFRCBBTFdBWVMgQVMgKGEgKiAyKSwgYyBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAo YiAqIDMpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIEEgZ2VuZXJhdGVkIGNvbHVtbiBjYW5u b3QgcmVmZXJlbmNlIGFub3RoZXIgZ2VuZXJhdGVkIGNvbHVtbi4KKy0tIGludmFsaWQgcmVm ZXJlbmNlCitDUkVBVEUgVEFCTEUgZ3Rlc3RfZXJyXzMgKGEgaW50IFBSSU1BUlkgS0VZLCBi IGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChjICogMikpOworRVJST1I6ICBjb2x1bW4gImMi IGRvZXMgbm90IGV4aXN0CitMSU5FIDE6IC4uLnJyXzMgKGEgaW50IFBSSU1BUlkgS0VZLCBi IGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChjICogMikpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gZnVu Y3Rpb25zIG11c3QgYmUgaW1tdXRhYmxlCitDUkVBVEUgVEFCTEUgZ3Rlc3RfZXJyXzQgKGEg aW50IFBSSU1BUlkgS0VZLCBiIGRvdWJsZSBwcmVjaXNpb24gR0VORVJBVEVEIEFMV0FZUyBB UyAocmFuZG9tKCkpKTsKK0VSUk9SOiAgY2Fubm90IHVzZSBmdW5jdGlvbiByYW5kb20oKSBp biBjb2x1bW4gZ2VuZXJhdGlvbiBleHByZXNzaW9uCitMSU5FIDE6IC4uLk1BUlkgS0VZLCBi IGRvdWJsZSBwcmVjaXNpb24gR0VORVJBVEVEIEFMV0FZUyBBUyAocmFuZG9tKCkpKS4uLgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KK0RFVEFJTDogIEZ1bmN0aW9ucyB1c2VkIGluIGEgY29sdW1uIGdlbmVyYXRp b24gZXhwcmVzc2lvbiBtdXN0IGJlIGltbXV0YWJsZS4KKy0tIGNhbm5vdCBoYXZlIGRlZmF1 bHQvaWRlbnRpdHkgYW5kIGdlbmVyYXRlZAorQ1JFQVRFIFRBQkxFIGd0ZXN0X2Vycl81YSAo YSBpbnQgUFJJTUFSWSBLRVksIGIgaW50IERFRkFVTFQgNSBHRU5FUkFURUQgQUxXQVlTIEFT IChhICogMikpOworRVJST1I6ICBib3RoIGRlZmF1bHQgYW5kIGdlbmVyYXRpb24gZXhwcmVz c2lvbiBzcGVjaWZpZWQgZm9yIGNvbHVtbiAiYiIgb2YgdGFibGUgImd0ZXN0X2Vycl81YSIK K0xJTkUgMTogLi4uIGd0ZXN0X2Vycl81YSAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50IERF RkFVTFQgNSBHRU5FUkFURUQgLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorQ1JFQVRFIFRBQkxFIGd0ZXN0X2Vy cl81YiAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgaWRl bnRpdHkgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpKTsKK0VSUk9SOiAgYm90aCBpZGVu dGl0eSBhbmQgZ2VuZXJhdGlvbiBleHByZXNzaW9uIHNwZWNpZmllZCBmb3IgY29sdW1uICJi IiBvZiB0YWJsZSAiZ3Rlc3RfZXJyXzViIgorTElORSAxOiAuLi50IFBSSU1BUlkgS0VZLCBi IGludCBHRU5FUkFURUQgQUxXQVlTIEFTIGlkZW50aXR5IEdFTkVSQVRFRCAuLi4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCitJTlNFUlQgSU5UTyBndGVzdDEgVkFMVUVTICgxKTsKK0lOU0VSVCBJTlRPIGd0ZXN0 MSBWQUxVRVMgKDIsIERFRkFVTFQpOworSU5TRVJUIElOVE8gZ3Rlc3QxIFZBTFVFUyAoMywg MzMpOyAgLS0gZXJyb3IKK0VSUk9SOiAgY2Fubm90IGluc2VydCBpbnRvIGNvbHVtbiAiYiIK K0RFVEFJTDogIENvbHVtbiAiYiIgaXMgYSBnZW5lcmF0ZWQgY29sdW1uLgorU0VMRUNUICog RlJPTSBndGVzdDEgT1JERVIgQlkgYTsKKyBhIHwgYiAKKy0tLSstLS0KKyAxIHwgMgorIDIg fCA0CisoMiByb3dzKQorCitVUERBVEUgZ3Rlc3QxIFNFVCBiID0gREVGQVVMVCBXSEVSRSBh ID0gMTsKK1VQREFURSBndGVzdDEgU0VUIGIgPSAxMSBXSEVSRSBhID0gMTsgIC0tIGVycm9y CitFUlJPUjogIGNvbHVtbiAiYiIgY2FuIG9ubHkgYmUgdXBkYXRlZCB0byBERUZBVUxUCitE RVRBSUw6ICBDb2x1bW4gImIiIGlzIGEgZ2VuZXJhdGVkIGNvbHVtbi4KK1NFTEVDVCAqIEZS T00gZ3Rlc3QxIE9SREVSIEJZIGE7CisgYSB8IGIgCistLS0rLS0tCisgMSB8IDIKKyAyIHwg NAorKDIgcm93cykKKworU0VMRUNUIGEsIGIsIGIgKiAyIEFTIGIyIEZST00gZ3Rlc3QxIE9S REVSIEJZIGE7CisgYSB8IGIgfCBiMiAKKy0tLSstLS0rLS0tLQorIDEgfCAyIHwgIDQKKyAy IHwgNCB8ICA4CisoMiByb3dzKQorCitTRUxFQ1QgYSwgYiBGUk9NIGd0ZXN0MSBXSEVSRSBi ID0gNCBPUkRFUiBCWSBhOworIGEgfCBiIAorLS0tKy0tLQorIDIgfCA0CisoMSByb3cpCisK Ky0tIHRlc3QgdGhhdCBvdmVyZmxvdyBlcnJvciBoYXBwZW5zIG9uIHJlYWQKK0lOU0VSVCBJ TlRPIGd0ZXN0MSBWQUxVRVMgKDIwMDAwMDAwMDApOworU0VMRUNUICogRlJPTSBndGVzdDE7 CitFUlJPUjogIGludGVnZXIgb3V0IG9mIHJhbmdlCitERUxFVEUgRlJPTSBndGVzdDEgV0hF UkUgYSA9IDIwMDAwMDAwMDA7CistLSB0ZXN0IHdpdGggam9pbnMKK0NSRUFURSBUQUJMRSBn dGVzdHggKHggaW50LCB5IGludCk7CitJTlNFUlQgSU5UTyBndGVzdHggVkFMVUVTICgxMSwg MSksICgyMiwgMiksICgzMywgMyk7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0eCwgZ3Rlc3QxIFdI RVJFIGd0ZXN0eC55ID0gZ3Rlc3QxLmE7CisgeCAgfCB5IHwgYSB8IGIgCistLS0tKy0tLSst LS0rLS0tCisgMTEgfCAxIHwgMSB8IDIKKyAyMiB8IDIgfCAyIHwgNAorKDIgcm93cykKKwor RFJPUCBUQUJMRSBndGVzdHg7CistLSB0ZXN0IFVQREFURS9ERUxFVEUgcXVhbHMKK1NFTEVD VCAqIEZST00gZ3Rlc3QxIE9SREVSIEJZIGE7CisgYSB8IGIgCistLS0rLS0tCisgMSB8IDIK KyAyIHwgNAorKDIgcm93cykKKworVVBEQVRFIGd0ZXN0MSBTRVQgYSA9IDMgV0hFUkUgYiA9 IDQ7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0MSBPUkRFUiBCWSBhOworIGEgfCBiIAorLS0tKy0t LQorIDEgfCAyCisgMyB8IDYKKygyIHJvd3MpCisKK0RFTEVURSBGUk9NIGd0ZXN0MSBXSEVS RSBiID0gMjsKK1NFTEVDVCAqIEZST00gZ3Rlc3QxIE9SREVSIEJZIGE7CisgYSB8IGIgCist LS0rLS0tCisgMyB8IDYKKygxIHJvdykKKworLS0gdmlld3MKK0NSRUFURSBWSUVXIGd0ZXN0 MXYgQVMgU0VMRUNUICogRlJPTSBndGVzdDE7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0MXY7Cisg YSB8IGIgCistLS0rLS0tCisgMyB8IDYKKygxIHJvdykKKworSU5TRVJUIElOVE8gZ3Rlc3Qx diBWQUxVRVMgKDQsIDgpOyAgLS0gZmFpbHMKK0VSUk9SOiAgY2Fubm90IGluc2VydCBpbnRv IGNvbHVtbiAiYiIKK0RFVEFJTDogIENvbHVtbiAiYiIgaXMgYSBnZW5lcmF0ZWQgY29sdW1u LgorLS0gaW5oZXJpdGFuY2UKK0NSRUFURSBUQUJMRSBndGVzdDFfMSAoKSBJTkhFUklUUyAo Z3Rlc3QxKTsKK1NFTEVDVCAqIEZST00gZ3Rlc3QxXzE7CisgYSB8IGIgCistLS0rLS0tCiso MCByb3dzKQorCitcZCBndGVzdDFfMQorICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUg InB1YmxpYy5ndGVzdDFfMSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVs bGFibGUgfCAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgCistLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IAorIGIgICAg ICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMg YXMgKGEgKiAyKQorSW5oZXJpdHM6IGd0ZXN0MQorCitJTlNFUlQgSU5UTyBndGVzdDFfMSBW QUxVRVMgKDQpOworU0VMRUNUICogRlJPTSBndGVzdDFfMTsKKyBhIHwgYiAKKy0tLSstLS0K KyA0IHwgOAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGd0ZXN0MTsKKyBhIHwgYiAKKy0t LSstLS0KKyAzIHwgNgorIDQgfCA4CisoMiByb3dzKQorCistLSB0ZXN0IGluaGVyaXRhbmNl IG1pc21hdGNoCitDUkVBVEUgVEFCTEUgZ3Rlc3R5ICh4IGludCwgYiBpbnQpOworQ1JFQVRF IFRBQkxFIGd0ZXN0MV8yICgpIElOSEVSSVRTIChndGVzdDEsIGd0ZXN0eSk7ICAtLSBlcnJv cgorTk9USUNFOiAgbWVyZ2luZyBtdWx0aXBsZSBpbmhlcml0ZWQgZGVmaW5pdGlvbnMgb2Yg Y29sdW1uICJiIgorRVJST1I6ICBpbmhlcml0ZWQgY29sdW1uICJiIiBoYXMgYSBnZW5lcmF0 aW9uIGNvbmZsaWN0CitEUk9QIFRBQkxFIGd0ZXN0eTsKKy0tIHN0b3JlZAorQ1JFQVRFIFRB QkxFIGd0ZXN0MyAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMg QVMgKGEgKiAzKSBTVE9SRUQpOworSU5TRVJUIElOVE8gZ3Rlc3QzIChhKSBWQUxVRVMgKDEp LCAoMiksICgzKTsKK1NFTEVDVCAqIEZST00gZ3Rlc3QzIE9SREVSIEJZIGE7CisgYSB8IGIg CistLS0rLS0tCisgMSB8IDMKKyAyIHwgNgorIDMgfCA5CisoMyByb3dzKQorCitVUERBVEUg Z3Rlc3QzIFNFVCBhID0gMjIgV0hFUkUgYSA9IDI7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0MyBP UkRFUiBCWSBhOworIGEgIHwgYiAgCistLS0tKy0tLS0KKyAgMSB8ICAzCisgIDMgfCAgOQor IDIyIHwgNjYKKygzIHJvd3MpCisKKy0tIENPUFkKK1RSVU5DQVRFIGd0ZXN0MTsKK0lOU0VS VCBJTlRPIGd0ZXN0MSAoYSkgVkFMVUVTICgxKSwgKDIpOworQ09QWSBndGVzdDEgVE8gc3Rk b3V0OworMQorMgorQ09QWSBndGVzdDEgKGEsIGIpIFRPIHN0ZG91dDsKK0VSUk9SOiAgY29s dW1uICJiIiBpcyBhIGdlbmVyYXRlZCBjb2x1bW4KK0RFVEFJTDogIEdlbmVyYXRlZCBjb2x1 bW5zIGNhbm5vdCBiZSB1c2VkIGluIENPUFkuCitDT1BZIGd0ZXN0MSBGUk9NIHN0ZGluOwor Q09QWSBndGVzdDEgKGEsIGIpIEZST00gc3RkaW47CitFUlJPUjogIGNvbHVtbiAiYiIgaXMg YSBnZW5lcmF0ZWQgY29sdW1uCitERVRBSUw6ICBHZW5lcmF0ZWQgY29sdW1ucyBjYW5ub3Qg YmUgdXNlZCBpbiBDT1BZLgorU0VMRUNUICogRlJPTSBndGVzdDEgT1JERVIgQlkgYTsKKyBh IHwgYiAKKy0tLSstLS0KKyAxIHwgMgorIDIgfCA0CisgMyB8IDYKKyA0IHwgOAorKDQgcm93 cykKKworVFJVTkNBVEUgZ3Rlc3QzOworSU5TRVJUIElOVE8gZ3Rlc3QzIChhKSBWQUxVRVMg KDEpLCAoMik7CitDT1BZIGd0ZXN0MyBUTyBzdGRvdXQ7CisxCisyCitDT1BZIGd0ZXN0MyAo YSwgYikgVE8gc3Rkb3V0OworRVJST1I6ICBjb2x1bW4gImIiIGlzIGEgZ2VuZXJhdGVkIGNv bHVtbgorREVUQUlMOiAgR2VuZXJhdGVkIGNvbHVtbnMgY2Fubm90IGJlIHVzZWQgaW4gQ09Q WS4KK0NPUFkgZ3Rlc3QzIEZST00gc3RkaW47CitDT1BZIGd0ZXN0MyAoYSwgYikgRlJPTSBz dGRpbjsKK0VSUk9SOiAgY29sdW1uICJiIiBpcyBhIGdlbmVyYXRlZCBjb2x1bW4KK0RFVEFJ TDogIEdlbmVyYXRlZCBjb2x1bW5zIGNhbm5vdCBiZSB1c2VkIGluIENPUFkuCitTRUxFQ1Qg KiBGUk9NIGd0ZXN0MyBPUkRFUiBCWSBhOworIGEgfCBiICAKKy0tLSstLS0tCisgMSB8ICAz CisgMiB8ICA2CisgMyB8ICA5CisgNCB8IDEyCisoNCByb3dzKQorCistLSBkcm9wIGNvbHVt biBiZWhhdmlvcgorQ1JFQVRFIFRBQkxFIGd0ZXN0MTAgKGEgaW50IFBSSU1BUlkgS0VZLCBi IGludCwgYyBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYiAqIDIpKTsKK0FMVEVSIFRBQkxF IGd0ZXN0MTAgRFJPUCBDT0xVTU4gYjsKK1xkIGd0ZXN0MTAKKyAgICAgICAgICAgICAgVGFi bGUgInB1YmxpYy5ndGVzdDEwIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBO dWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90 IG51bGwgfCAKK0luZGV4ZXM6CisgICAgImd0ZXN0MTBfcGtleSIgUFJJTUFSWSBLRVksIGJ0 cmVlIChhKQorCistLSBwcml2aWxlZ2VzCitDUkVBVEUgVVNFUiByZWdyZXNzX3VzZXIxMTsK K0NSRUFURSBUQUJMRSBndGVzdDExdiAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50LCBjIGlu dCBHRU5FUkFURUQgQUxXQVlTIEFTIChiICogMikgVklSVFVBTCk7CitJTlNFUlQgSU5UTyBn dGVzdDExdiBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKTsKK0dSQU5UIFNFTEVDVCAoYSwgYykg T04gZ3Rlc3QxMXYgVE8gcmVncmVzc191c2VyMTE7CitDUkVBVEUgVEFCTEUgZ3Rlc3QxMXMg KGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCwgYyBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAo YiAqIDIpIFNUT1JFRCk7CitJTlNFUlQgSU5UTyBndGVzdDExcyBWQUxVRVMgKDEsIDEwKSwg KDIsIDIwKTsKK0dSQU5UIFNFTEVDVCAoYSwgYykgT04gZ3Rlc3QxMXMgVE8gcmVncmVzc191 c2VyMTE7CitDUkVBVEUgRlVOQ1RJT04gZ2YxKGEgaW50KSBSRVRVUk5TIGludCBBUyAkJCBT RUxFQ1QgYSAqIDMgJCQgSU1NVVRBQkxFIExBTkdVQUdFIFNRTDsKK1JFVk9LRSBBTEwgT04g RlVOQ1RJT04gZ2YxKGludCkgRlJPTSBQVUJMSUM7CitDUkVBVEUgVEFCTEUgZ3Rlc3QxMnYg KGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCwgYyBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAo Z2YxKGIpKSBWSVJUVUFMKTsKK0lOU0VSVCBJTlRPIGd0ZXN0MTJ2IFZBTFVFUyAoMSwgMTAp LCAoMiwgMjApOworR1JBTlQgU0VMRUNUIChhLCBjKSBPTiBndGVzdDEydiBUTyByZWdyZXNz X3VzZXIxMTsKK0NSRUFURSBUQUJMRSBndGVzdDEycyAoYSBpbnQgUFJJTUFSWSBLRVksIGIg aW50LCBjIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChnZjEoYikpIFNUT1JFRCk7CitJTlNF UlQgSU5UTyBndGVzdDEycyBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKTsKK0dSQU5UIFNFTEVD VCAoYSwgYykgT04gZ3Rlc3QxMnMgVE8gcmVncmVzc191c2VyMTE7CitTRVQgUk9MRSByZWdy ZXNzX3VzZXIxMTsKK1NFTEVDVCBhLCBiIEZST00gZ3Rlc3QxMXY7ICAtLSBub3QgYWxsb3dl ZAorRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3IgdGFibGUgZ3Rlc3QxMXYKK1NFTEVD VCBhLCBjIEZST00gZ3Rlc3QxMXY7ICAtLSBhbGxvd2VkCisgYSB8IGMgIAorLS0tKy0tLS0K KyAxIHwgMjAKKyAyIHwgNDAKKygyIHJvd3MpCisKK1NFTEVDVCBhLCBiIEZST00gZ3Rlc3Qx MXM7ICAtLSBub3QgYWxsb3dlZAorRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3IgdGFi bGUgZ3Rlc3QxMXMKK1NFTEVDVCBhLCBjIEZST00gZ3Rlc3QxMXM7ICAtLSBhbGxvd2VkCisg YSB8IGMgIAorLS0tKy0tLS0KKyAxIHwgMjAKKyAyIHwgNDAKKygyIHJvd3MpCisKK1NFTEVD VCBnZjEoMTApOyAgLS0gbm90IGFsbG93ZWQKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQg Zm9yIGZ1bmN0aW9uIGdmMQorU0VMRUNUIGEsIGMgRlJPTSBndGVzdDEydjsgIC0tIG5vdCBh bGxvd2VkOyBUT0RPOiBvdWdodCB0byBiZSBhbGxvd2VkCitFUlJPUjogIHBlcm1pc3Npb24g ZGVuaWVkIGZvciBmdW5jdGlvbiBnZjEKK1NFTEVDVCBhLCBjIEZST00gZ3Rlc3QxMnM7ICAt LSBhbGxvd2VkCisgYSB8IGMgIAorLS0tKy0tLS0KKyAxIHwgMzAKKyAyIHwgNjAKKygyIHJv d3MpCisKK1JFU0VUIFJPTEU7CitEUk9QIFRBQkxFIGd0ZXN0MTF2LCBndGVzdDExcywgZ3Rl c3QxMnYsIGd0ZXN0MTJzOworRFJPUCBGVU5DVElPTiBnZjEoaW50KTsKK0RST1AgVVNFUiBy ZWdyZXNzX3VzZXIxMTsKKy0tIGNoZWNrIGNvbnN0cmFpbnRzCitDUkVBVEUgVEFCTEUgZ3Rl c3QyMCAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGEg KiAyKSBDSEVDSyAoYiA8IDUwKSk7CitJTlNFUlQgSU5UTyBndGVzdDIwIChhKSBWQUxVRVMg KDEwKTsgIC0tIG9rCitJTlNFUlQgSU5UTyBndGVzdDIwIChhKSBWQUxVRVMgKDMwKTsgIC0t IHZpb2xhdGVzIGNvbnN0cmFpbnQKK0VSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gImd0 ZXN0MjAiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgImd0ZXN0MjBfYl9jaGVjayIKK0RF VEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgzMCkuCitDUkVBVEUgVEFCTEUgZ3Rlc3Qy MGEgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICog MikpOworSU5TRVJUIElOVE8gZ3Rlc3QyMGEgKGEpIFZBTFVFUyAoMTApOworSU5TRVJUIElO VE8gZ3Rlc3QyMGEgKGEpIFZBTFVFUyAoMzApOworQUxURVIgVEFCTEUgZ3Rlc3QyMGEgQURE IENIRUNLIChiIDwgNTApOyAgLS0gZmFpbHMgb24gZXhpc3Rpbmcgcm93CitFUlJPUjogIGNo ZWNrIGNvbnN0cmFpbnQgImd0ZXN0MjBhX2JfY2hlY2siIGlzIHZpb2xhdGVkIGJ5IHNvbWUg cm93CitDUkVBVEUgVEFCTEUgZ3Rlc3QyMGIgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBH RU5FUkFURUQgQUxXQVlTIEFTIChhICogMikpOworSU5TRVJUIElOVE8gZ3Rlc3QyMGIgKGEp IFZBTFVFUyAoMTApOworSU5TRVJUIElOVE8gZ3Rlc3QyMGIgKGEpIFZBTFVFUyAoMzApOwor QUxURVIgVEFCTEUgZ3Rlc3QyMGIgQUREIENPTlNUUkFJTlQgY2hrIENIRUNLIChiIDwgNTAp IE5PVCBWQUxJRDsKK0FMVEVSIFRBQkxFIGd0ZXN0MjBiIFZBTElEQVRFIENPTlNUUkFJTlQg Y2hrOyAgLS0gZmFpbHMgb24gZXhpc3Rpbmcgcm93CitFUlJPUjogIGNoZWNrIGNvbnN0cmFp bnQgImNoayIgaXMgdmlvbGF0ZWQgYnkgc29tZSByb3cKKy0tIG5vdC1udWxsIGNvbnN0cmFp bnRzCitDUkVBVEUgVEFCTEUgZ3Rlc3QyMWEgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBH RU5FUkFURUQgQUxXQVlTIEFTIChudWxsaWYoYSwgMCkpIE5PVCBOVUxMKTsKK0lOU0VSVCBJ TlRPIGd0ZXN0MjFhIChhKSBWQUxVRVMgKDEpOyAgLS0gb2sKK0lOU0VSVCBJTlRPIGd0ZXN0 MjFhIChhKSBWQUxVRVMgKDApOyAgLS0gdmlvbGF0ZXMgY29uc3RyYWludAorRVJST1I6ICBu ZXcgcm93IGZvciByZWxhdGlvbiAiZ3Rlc3QyMWEiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFp bnQgImd0ZXN0MjFhX2JfY2hlY2siCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAo MCkuCitDUkVBVEUgVEFCTEUgZ3Rlc3QyMWIgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBH RU5FUkFURUQgQUxXQVlTIEFTIChudWxsaWYoYSwgMCkpKTsKK0FMVEVSIFRBQkxFIGd0ZXN0 MjFiIEFMVEVSIENPTFVNTiBiIFNFVCBOT1QgTlVMTDsgIC0tIGVycm9yCitFUlJPUjogIGNh bm5vdCB1c2UgU0VUIE5PVCBOVUxMIG9uIHZpcnR1YWwgZ2VuZXJhdGVkIGNvbHVtbiAiYiIK K0hJTlQ6ICBBZGQgYSBDSEVDSyBjb25zdHJhaW50IGluc3RlYWQuCitBTFRFUiBUQUJMRSBn dGVzdDIxYiBBTFRFUiBDT0xVTU4gYiBEUk9QIE5PVCBOVUxMOyAgLS0gZXJyb3IKK0VSUk9S OiAgY2Fubm90IHVzZSBEUk9QIE5PVCBOVUxMIG9uIHZpcnR1YWwgZ2VuZXJhdGVkIGNvbHVt biAiYiIKK0NSRUFURSBUQUJMRSBndGVzdDIxYyAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50 IEdFTkVSQVRFRCBBTFdBWVMgQVMgKG51bGxpZihhLCAwKSkgU1RPUkVEIE5PVCBOVUxMKTsK K0lOU0VSVCBJTlRPIGd0ZXN0MjFjIChhKSBWQUxVRVMgKDEpOyAgLS0gb2sKK0lOU0VSVCBJ TlRPIGd0ZXN0MjFjIChhKSBWQUxVRVMgKDApOyAgLS0gdmlvbGF0ZXMgY29uc3RyYWludAor RVJST1I6ICBudWxsIHZhbHVlIGluIGNvbHVtbiAiYiIgdmlvbGF0ZXMgbm90LW51bGwgY29u c3RyYWludAorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKDAsIG51bGwpLgorQ1JF QVRFIFRBQkxFIGd0ZXN0MjFkIChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQgR0VORVJBVEVE IEFMV0FZUyBBUyAobnVsbGlmKGEsIDApKSBTVE9SRUQpOworQUxURVIgVEFCTEUgZ3Rlc3Qy MWQgQUxURVIgQ09MVU1OIGIgU0VUIE5PVCBOVUxMOworSU5TRVJUIElOVE8gZ3Rlc3QyMWQg KGEpIFZBTFVFUyAoMSk7ICAtLSBvaworSU5TRVJUIElOVE8gZ3Rlc3QyMWQgKGEpIFZBTFVF UyAoMCk7ICAtLSB2aW9sYXRlcyBjb25zdHJhaW50CitFUlJPUjogIG51bGwgdmFsdWUgaW4g Y29sdW1uICJiIiB2aW9sYXRlcyBub3QtbnVsbCBjb25zdHJhaW50CitERVRBSUw6ICBGYWls aW5nIHJvdyBjb250YWlucyAoMCwgbnVsbCkuCitBTFRFUiBUQUJMRSBndGVzdDIxZCBBTFRF UiBDT0xVTU4gYiBEUk9QIE5PVCBOVUxMOworSU5TRVJUIElOVE8gZ3Rlc3QyMWQgKGEpIFZB TFVFUyAoMCk7ICAtLSBvayBub3cKKy0tIGluZGV4IGNvbnN0cmFpbnRzCitDUkVBVEUgVEFC TEUgZ3Rlc3QyMmEgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlT IEFTIChhICogMikgVU5JUVVFKTsgIC0tIGVycm9yCitFUlJPUjogIGluZGV4IGNyZWF0aW9u IG9uIHZpcnR1YWwgZ2VuZXJhdGVkIGNvbHVtbnMgaXMgbm90IHN1cHBvcnRlZAorQ1JFQVRF IFRBQkxFIGd0ZXN0MjJiIChhIGludCwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAq IDIpLCBQUklNQVJZIEtFWSAoYSwgYikpOyAgLS0gZXJyb3IKK0VSUk9SOiAgaW5kZXggY3Jl YXRpb24gb24gdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1ucyBpcyBub3Qgc3VwcG9ydGVkCist LSBpbmRleGVzCitDUkVBVEUgVEFCTEUgZ3Rlc3QyMmMgKGEgaW50LCBiIGludCBHRU5FUkFU RUQgQUxXQVlTIEFTIChhICogMikpOworQ1JFQVRFIElOREVYIGd0ZXN0MjJjX2JfaWR4IE9O IGd0ZXN0MjJjIChiKTsgIC0tIGVycm9yCitFUlJPUjogIGluZGV4IGNyZWF0aW9uIG9uIHZp cnR1YWwgZ2VuZXJhdGVkIGNvbHVtbnMgaXMgbm90IHN1cHBvcnRlZAorQ1JFQVRFIElOREVY IGd0ZXN0MjJjX2V4cHJfaWR4IE9OIGd0ZXN0MjJjICgoYiAqIDMpKTsKK0VSUk9SOiAgaW5k ZXggY3JlYXRpb24gb24gdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1ucyBpcyBub3Qgc3VwcG9y dGVkCitDUkVBVEUgSU5ERVggZ3Rlc3QyMmNfcHJlZF9pZHggT04gZ3Rlc3QyMmMgKGEpIFdI RVJFIGIgPiAwOworRVJST1I6ICBpbmRleCBjcmVhdGlvbiBvbiB2aXJ0dWFsIGdlbmVyYXRl ZCBjb2x1bW5zIGlzIG5vdCBzdXBwb3J0ZWQKK1xkIGd0ZXN0MjJjCisgICAgICAgICAgICAg ICAgICAgICAgICBUYWJsZSAicHVibGljLmd0ZXN0MjJjIgorIENvbHVtbiB8ICBUeXBlICAg fCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAK Ky0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgCisgYiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwg Z2VuZXJhdGVkIGFsd2F5cyBhcyAoYSAqIDIpCisKK0lOU0VSVCBJTlRPIGd0ZXN0MjJjIFZB TFVFUyAoMSksICgyKSwgKDMpOworU0VUIGVuYWJsZV9zZXFzY2FuIFRPIG9mZjsKK1NFVCBl bmFibGVfYml0bWFwc2NhbiBUTyBvZmY7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAq IEZST00gZ3Rlc3QyMmMgV0hFUkUgYiAqIDMgPSA2OworICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2Fu IG9uIGd0ZXN0MjJjCisgICBGaWx0ZXI6ICgoKGEgKiAyKSAqIDMpID0gNikKKygyIHJvd3Mp CisKK1NFTEVDVCAqIEZST00gZ3Rlc3QyMmMgV0hFUkUgYiAqIDMgPSA2OworIGEgfCBiIAor LS0tKy0tLQorIDEgfCAyCisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNU ICogRlJPTSBndGVzdDIyYyBXSEVSRSBhID0gMSBBTkQgYiA+IDA7CisgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIGd0ZXN0MjJjCisgICBGaWx0ZXI6ICgoYSA9 IDEpIEFORCAoKGEgKiAyKSA+IDApKQorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBndGVz dDIyYyBXSEVSRSBhID0gMSBBTkQgYiA+IDA7CisgYSB8IGIgCistLS0rLS0tCisgMSB8IDIK KygxIHJvdykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitSRVNFVCBlbmFibGVfYml0bWFw c2NhbjsKK0NSRUFURSBUQUJMRSBndGVzdDIyZCAoYSBpbnQsIGIgaW50IEdFTkVSQVRFRCBB TFdBWVMgQVMgKGEgKiAyKSBTVE9SRUQpOworQ1JFQVRFIElOREVYIGd0ZXN0MjJkX2JfaWR4 IE9OIGd0ZXN0MjJkIChiKTsKK0NSRUFURSBJTkRFWCBndGVzdDIyZF9leHByX2lkeCBPTiBn dGVzdDIyZCAoKGIgKiAzKSk7CitDUkVBVEUgSU5ERVggZ3Rlc3QyMmRfcHJlZF9pZHggT04g Z3Rlc3QyMmQgKGEpIFdIRVJFIGIgPiAwOworXGQgZ3Rlc3QyMmQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMuZ3Rlc3QyMmQiCisgQ29sdW1uIHwgIFR5cGUg ICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgIERlZmF1bHQgICAgICAg ICAgICAgICAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGEgICAgICB8IGludGVnZXIg fCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGIgICAgICB8IGludGVnZXIgfCAgICAgICAg ICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKGEgKiAyKSBzdG9yZWQKK0lu ZGV4ZXM6CisgICAgImd0ZXN0MjJkX2JfaWR4IiBidHJlZSAoYikKKyAgICAiZ3Rlc3QyMmRf ZXhwcl9pZHgiIGJ0cmVlICgoYiAqIDMpKQorICAgICJndGVzdDIyZF9wcmVkX2lkeCIgYnRy ZWUgKGEpIFdIRVJFIGIgPiAwCisKK0lOU0VSVCBJTlRPIGd0ZXN0MjJkIFZBTFVFUyAoMSks ICgyKSwgKDMpOworU0VUIGVuYWJsZV9zZXFzY2FuIFRPIG9mZjsKK1NFVCBlbmFibGVfYml0 bWFwc2NhbiBUTyBvZmY7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gZ3Rl c3QyMmQgV0hFUkUgYiA9IDQ7CisgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIEluZGV4IFNjYW4gdXNpbmcgZ3Rlc3QyMmRfYl9pZHggb24gZ3Rlc3QyMmQKKyAg IEluZGV4IENvbmQ6IChiID0gNCkKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gZ3Rlc3Qy MmQgV0hFUkUgYiA9IDQ7CisgYSB8IGIgCistLS0rLS0tCisgMiB8IDQKKygxIHJvdykKKwor RVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGd0ZXN0MjJkIFdIRVJFIGIgKiAz ID0gNjsKKyAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg SW5kZXggU2NhbiB1c2luZyBndGVzdDIyZF9leHByX2lkeCBvbiBndGVzdDIyZAorICAgSW5k ZXggQ29uZDogKChiICogMykgPSA2KQorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBndGVz dDIyZCBXSEVSRSBiICogMyA9IDY7CisgYSB8IGIgCistLS0rLS0tCisgMSB8IDIKKygxIHJv dykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGd0ZXN0MjJkIFdIRVJF IGEgPSAxIEFORCBiID4gMDsKKyAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBndGVzdDIyZF9wcmVkX2lkeCBvbiBndGVz dDIyZAorICAgSW5kZXggQ29uZDogKGEgPSAxKQorKDIgcm93cykKKworU0VMRUNUICogRlJP TSBndGVzdDIyZCBXSEVSRSBhID0gMSBBTkQgYiA+IDA7CisgYSB8IGIgCistLS0rLS0tCisg MSB8IDIKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitSRVNFVCBlbmFibGVf Yml0bWFwc2NhbjsKKy0tIGZvcmVpZ24ga2V5cworQ1JFQVRFIFRBQkxFIGd0ZXN0MjNhICh4 IGludCBQUklNQVJZIEtFWSwgeSBpbnQpOworSU5TRVJUIElOVE8gZ3Rlc3QyM2EgVkFMVUVT ICgxLCAxMSksICgyLCAyMiksICgzLCAzMyk7CitDUkVBVEUgVEFCTEUgZ3Rlc3QyM3ggKGEg aW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMikgUkVG RVJFTkNFUyBndGVzdDIzYSAoeCkgT04gVVBEQVRFIENBU0NBREUpOyAgLS0gZXJyb3IKK0VS Uk9SOiAgaW52YWxpZCBPTiBVUERBVEUgYWN0aW9uIGZvciBmb3JlaWduIGtleSBjb25zdHJh aW50IGNvbnRhaW5pbmcgZ2VuZXJhdGVkIGNvbHVtbgorQ1JFQVRFIFRBQkxFIGd0ZXN0MjN4 IChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIp IFJFRkVSRU5DRVMgZ3Rlc3QyM2EgKHgpIE9OIERFTEVURSBTRVQgTlVMTCk7ICAtLSBlcnJv cgorRVJST1I6ICBpbnZhbGlkIE9OIERFTEVURSBhY3Rpb24gZm9yIGZvcmVpZ24ga2V5IGNv bnN0cmFpbnQgY29udGFpbmluZyBnZW5lcmF0ZWQgY29sdW1uCitDUkVBVEUgVEFCTEUgZ3Rl c3QyM2IgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChh ICogMikgUkVGRVJFTkNFUyBndGVzdDIzYSAoeCkpOyAgLS0gZXJyb3IKK0VSUk9SOiAgZm9y ZWlnbiBrZXkgY29uc3RyYWludHMgb24gdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1ucyBhcmUg bm90IHN1cHBvcnRlZAorQ1JFQVRFIFRBQkxFIGd0ZXN0MjNjIChhIGludCBQUklNQVJZIEtF WSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpIFNUT1JFRCBSRUZFUkVOQ0VT IGd0ZXN0MjNhICh4KSk7CitcZCBndGVzdDIzYworICAgICAgICAgICAgICAgICAgICAgICAg ICAgVGFibGUgInB1YmxpYy5ndGVzdDIzYyIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0 aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgIAor LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAg ICB8IG5vdCBudWxsIHwgCisgYiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoYSAqIDIpIHN0b3JlZAorSW5kZXhlczoKKyAg ICAiZ3Rlc3QyM2NfcGtleSIgUFJJTUFSWSBLRVksIGJ0cmVlIChhKQorRm9yZWlnbi1rZXkg Y29uc3RyYWludHM6CisgICAgImd0ZXN0MjNjX2JfZmtleSIgRk9SRUlHTiBLRVkgKGIpIFJF RkVSRU5DRVMgZ3Rlc3QyM2EoeCkKKworSU5TRVJUIElOVE8gZ3Rlc3QyM2MgVkFMVUVTICgx KTsgIC0tIG9rCitJTlNFUlQgSU5UTyBndGVzdDIzYyBWQUxVRVMgKDUpOyAgLS0gZXJyb3IK K0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAiZ3Rlc3QyM2MiIHZpb2xhdGVz IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgImd0ZXN0MjNjX2JfZmtleSIKK0RFVEFJTDogIEtl eSAoYik9KDEwKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAiZ3Rlc3QyM2EiLgorRFJPUCBU QUJMRSBndGVzdDIzYzsKK0RST1AgVEFCTEUgZ3Rlc3QyM2E7CitDUkVBVEUgVEFCTEUgZ3Rl c3QyM3AgKHggaW50LCB5IGludCBHRU5FUkFURUQgQUxXQVlTIEFTICh4ICogMikgU1RPUkVE LCBQUklNQVJZIEtFWSAoeSkpOworSU5TRVJUIElOVE8gZ3Rlc3QyM3AgVkFMVUVTICgxKSwg KDIpLCAoMyk7CitDUkVBVEUgVEFCTEUgZ3Rlc3QyM3EgKGEgaW50IFBSSU1BUlkgS0VZLCBi IGludCBSRUZFUkVOQ0VTIGd0ZXN0MjNwICh5KSk7CitJTlNFUlQgSU5UTyBndGVzdDIzcSBW QUxVRVMgKDEsIDIpOyAgLS0gb2sKK0lOU0VSVCBJTlRPIGd0ZXN0MjNxIFZBTFVFUyAoMiwg NSk7ICAtLSBlcnJvcgorRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJndGVz dDIzcSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAiZ3Rlc3QyM3FfYl9ma2V5 IgorREVUQUlMOiAgS2V5IChiKT0oNSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgImd0ZXN0 MjNwIi4KKy0tIG5vIHRlc3QgZm9yIFBLIHVzaW5nIHZpcnR1YWwgY29sdW1uLCBzaW5jZSBz dWNoIGFuIGluZGV4IGNhbm5vdCBiZSBjcmVhdGVkCistLSBkb21haW5zCitDUkVBVEUgRE9N QUlOIGd0ZXN0ZG9tYWluMSBBUyBpbnQgQ0hFQ0sgKFZBTFVFIDwgMTApOworQ1JFQVRFIFRB QkxFIGd0ZXN0MjQgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGd0ZXN0ZG9tYWluMSBHRU5FUkFU RUQgQUxXQVlTIEFTIChhICogMikpOyAgLS0gcHJvaGliaXRlZAorRVJST1I6ICB2aXJ0dWFs IGdlbmVyYXRlZCBjb2x1bW4gImIiIGNhbm5vdCBoYXZlIGEgZG9tYWluIHR5cGUKK0xJTkUg MTogQ1JFQVRFIFRBQkxFIGd0ZXN0MjQgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGd0ZXN0ZG9t YWluMSBHRU5FLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorLS0gdHlwZWQgdGFibGVzIChjdXJyZW50bHkgbm90IHN1cHBvcnRlZCkK K0NSRUFURSBUWVBFIGd0ZXN0X3R5cGUgQVMgKGYxIGludGVnZXIsIGYyIHRleHQsIGYzIGJp Z2ludCk7CitDUkVBVEUgVEFCTEUgZ3Rlc3QyOCBPRiBndGVzdF90eXBlIChmMSBXSVRIIE9Q VElPTlMgR0VORVJBVEVEIEFMV0FZUyBBUyAoZjIgKjIpKTsKK0VSUk9SOiAgZ2VuZXJhdGVk IGNvbHVtcyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0eXBlZCB0YWJsZXMKK0RST1AgVFlQRSBn dGVzdF90eXBlIENBU0NBREU7CistLSB0YWJsZSBwYXJ0aXRpb25zIChjdXJyZW50bHkgbm90 IHN1cHBvcnRlZCkKK0NSRUFURSBUQUJMRSBndGVzdF9wYXJlbnQgKGYxIGRhdGUgTk9UIE5V TEwsIGYyIHRleHQsIGYzIGJpZ2ludCkgUEFSVElUSU9OIEJZIFJBTkdFIChmMSk7CitDUkVB VEUgVEFCTEUgZ3Rlc3RfY2hpbGQgUEFSVElUSU9OIE9GIGd0ZXN0X3BhcmVudCAoCisgICAg ZjMgV0lUSCBPUFRJT05TIEdFTkVSQVRFRCBBTFdBWVMgQVMgKGYyICogMikKKykgRk9SIFZB TFVFUyBGUk9NICgnMjAxNi0wNy0wMScpIFRPICgnMjAxNi0wOC0wMScpOyAtLSBlcnJvcgor RVJST1I6ICBnZW5lcmF0ZWQgY29sdW1ucyBhcmUgbm90IHN1cHBvcnRlZCBvbiBwYXJ0aXRp b25zCitEUk9QIFRBQkxFIGd0ZXN0X3BhcmVudDsKKy0tIHBhcnRpdGlvbmVkIHRhYmxlCitD UkVBVEUgVEFCTEUgZ3Rlc3RfcGFyZW50IChmMSBkYXRlIE5PVCBOVUxMLCBmMiBiaWdpbnQs IGYzIGJpZ2ludCBHRU5FUkFURUQgQUxXQVlTIEFTIChmMiAqIDIpKSBQQVJUSVRJT04gQlkg UkFOR0UgKGYxKTsKK0NSRUFURSBUQUJMRSBndGVzdF9jaGlsZCBQQVJUSVRJT04gT0YgZ3Rl c3RfcGFyZW50IEZPUiBWQUxVRVMgRlJPTSAoJzIwMTYtMDctMDEnKSBUTyAoJzIwMTYtMDgt MDEnKTsKK0lOU0VSVCBJTlRPIGd0ZXN0X3BhcmVudCAoZjEsIGYyKSBWQUxVRVMgKCcyMDE2 LTA3LTE1JywgMSk7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0X3BhcmVudDsKKyAgICAgZjEgICAg IHwgZjIgfCBmMyAKKy0tLS0tLS0tLS0tLSstLS0tKy0tLS0KKyAwNy0xNS0yMDE2IHwgIDEg fCAgMgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGd0ZXN0X2NoaWxkOworICAgICBmMSAg ICAgfCBmMiB8IGYzIAorLS0tLS0tLS0tLS0tKy0tLS0rLS0tLQorIDA3LTE1LTIwMTYgfCAg MSB8ICAyCisoMSByb3cpCisKK0RST1AgVEFCTEUgZ3Rlc3RfcGFyZW50OworQ1JFQVRFIFRB QkxFIGd0ZXN0X3BhcmVudCAoZjEgZGF0ZSBOT1QgTlVMTCwgZjIgYmlnaW50LCBmMyBiaWdp bnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoZjIgKiAyKSBTVE9SRUQpIFBBUlRJVElPTiBCWSBS QU5HRSAoZjEpOworQ1JFQVRFIFRBQkxFIGd0ZXN0X2NoaWxkIFBBUlRJVElPTiBPRiBndGVz dF9wYXJlbnQgRk9SIFZBTFVFUyBGUk9NICgnMjAxNi0wNy0wMScpIFRPICgnMjAxNi0wOC0w MScpOworSU5TRVJUIElOVE8gZ3Rlc3RfcGFyZW50IChmMSwgZjIpIFZBTFVFUyAoJzIwMTYt MDctMTUnLCAxKTsKK1NFTEVDVCAqIEZST00gZ3Rlc3RfcGFyZW50OworICAgICBmMSAgICAg fCBmMiB8IGYzIAorLS0tLS0tLS0tLS0tKy0tLS0rLS0tLQorIDA3LTE1LTIwMTYgfCAgMSB8 ICAyCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gZ3Rlc3RfY2hpbGQ7CisgICAgIGYxICAg ICB8IGYyIHwgZjMgCistLS0tLS0tLS0tLS0rLS0tLSstLS0tCisgMDctMTUtMjAxNiB8ICAx IHwgIDIKKygxIHJvdykKKworRFJPUCBUQUJMRSBndGVzdF9wYXJlbnQ7CistLSBnZW5lcmF0 ZWQgY29sdW1ucyBpbiBwYXJ0aXRpb24ga2V5IChjdXJyZW50bHkgbm90IHN1cHBvcnRlZCkK K0NSRUFURSBUQUJMRSBndGVzdF9wYXJlbnQgKGYxIGRhdGUgTk9UIE5VTEwsIGYyIGJpZ2lu dCwgZjMgYmlnaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGYyICogMikpIFBBUlRJVElPTiBC WSBSQU5HRSAoZjMpOworRVJST1I6ICB1c2luZyBnZW5lcmF0ZWQgY29sdW1uIGluIHBhcnRp dGlvbiBrZXkgaXMgbm90IHN1cHBvcnRlZAorTElORSAxOiAuLi5pZ2ludCBHRU5FUkFURUQg QUxXQVlTIEFTIChmMiAqIDIpKSBQQVJUSVRJT04gQlkgUkFOR0UgKGYzKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCitERVRBSUw6ICBDb2x1bW4gImYzIiBpcyBhIGdlbmVyYXRlZCBjb2x1bW4uCitD UkVBVEUgVEFCTEUgZ3Rlc3RfcGFyZW50IChmMSBkYXRlIE5PVCBOVUxMLCBmMiBiaWdpbnQs IGYzIGJpZ2ludCBHRU5FUkFURUQgQUxXQVlTIEFTIChmMiAqIDIpKSBQQVJUSVRJT04gQlkg UkFOR0UgKChmMyAqIDMpKTsKK0VSUk9SOiAgdXNpbmcgZ2VuZXJhdGVkIGNvbHVtbiBpbiBw YXJ0aXRpb24ga2V5IGlzIG5vdCBzdXBwb3J0ZWQKK0xJTkUgMTogLi4uR0VORVJBVEVEIEFM V0FZUyBBUyAoZjIgKiAyKSkgUEFSVElUSU9OIEJZIFJBTkdFICgoZjMgKiAzKSk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgorREVUQUlMOiAgQ29sdW1uICJmMyIgaXMgYSBnZW5lcmF0ZWQgY29sdW1uLgorQ1JF QVRFIFRBQkxFIGd0ZXN0X3BhcmVudCAoZjEgZGF0ZSBOT1QgTlVMTCwgZjIgYmlnaW50LCBm MyBiaWdpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoZjIgKiAyKSBTVE9SRUQpIFBBUlRJVElP TiBCWSBSQU5HRSAoKGYzICogMykpOworRVJST1I6ICB1c2luZyBnZW5lcmF0ZWQgY29sdW1u IGluIHBhcnRpdGlvbiBrZXkgaXMgbm90IHN1cHBvcnRlZAorTElORSAxOiAuLi5FRCBBTFdB WVMgQVMgKGYyICogMikgU1RPUkVEKSBQQVJUSVRJT04gQlkgUkFOR0UgKChmMyAqIDMpKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBeCitERVRBSUw6ICBDb2x1bW4gImYzIiBpcyBhIGdlbmVyYXRlZCBjb2x1bW4u CisvKgorQ1JFQVRFIFRBQkxFIGd0ZXN0X2NoaWxkMSBQQVJUSVRJT04gT0YgZ3Rlc3RfcGFy ZW50IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBndGVzdF9j aGlsZDIgUEFSVElUSU9OIE9GIGd0ZXN0X3BhcmVudCBGT1IgVkFMVUVTIEZST00gKDExKSBU TyAoMjApOworSU5TRVJUIElOVE8gZ3Rlc3RfcGFyZW50IChmMSwgZjIpIFZBTFVFUyAoJzIw MTYtMDctMTUnLCAxKTsKK0lOU0VSVCBJTlRPIGd0ZXN0X3BhcmVudCAoZjEsIGYyKSBWQUxV RVMgKCcyMDE2LTA3LTE1JywgMyk7CitJTlNFUlQgSU5UTyBndGVzdF9wYXJlbnQgKGYxLCBm MikgVkFMVUVTICgnMjAxNi0wNy0xNScsIDEwKTsgIC0tIGVycm9yCitTRUxFQ1QgKiBGUk9N IGd0ZXN0X2NoaWxkMTsKK1NFTEVDVCAqIEZST00gZ3Rlc3RfY2hpbGQyOworRFJPUCBUQUJM RSBndGVzdF9wYXJlbnQ7CisqLworLS0gQUxURVIgVEFCTEUgLi4uIEFERCBDT0xVTU4KK0NS RUFURSBUQUJMRSBndGVzdDI1IChhIGludCBQUklNQVJZIEtFWSk7CitJTlNFUlQgSU5UTyBn dGVzdDI1IFZBTFVFUyAoMyksICg0KTsKK0FMVEVSIFRBQkxFIGd0ZXN0MjUgQUREIENPTFVN TiBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMyk7CitTRUxFQ1QgKiBGUk9NIGd0 ZXN0MjUgT1JERVIgQlkgYTsKKyBhIHwgYiAgCistLS0rLS0tLQorIDMgfCAgOQorIDQgfCAx MgorKDIgcm93cykKKworQUxURVIgVEFCTEUgZ3Rlc3QyNSBBREQgQ09MVU1OIHggaW50IEdF TkVSQVRFRCBBTFdBWVMgQVMgKGIgKiA0KTsgIC0tIGVycm9yCitFUlJPUjogIGNhbm5vdCB1 c2UgZ2VuZXJhdGVkIGNvbHVtbiAiYiIgaW4gY29sdW1uIGdlbmVyYXRpb24gZXhwcmVzc2lv bgorREVUQUlMOiAgQSBnZW5lcmF0ZWQgY29sdW1uIGNhbm5vdCByZWZlcmVuY2UgYW5vdGhl ciBnZW5lcmF0ZWQgY29sdW1uLgorQUxURVIgVEFCTEUgZ3Rlc3QyNSBBREQgQ09MVU1OIHgg aW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKHogKiA0KTsgIC0tIGVycm9yCitFUlJPUjogIGNv bHVtbiAieiIgZG9lcyBub3QgZXhpc3QKKy0tIEFMVEVSIFRBQkxFIC4uLiBBTFRFUiBDT0xV TU4KK0NSRUFURSBUQUJMRSBndGVzdDI3IChhIGludCwgYiBpbnQgR0VORVJBVEVEIEFMV0FZ UyBBUyAoYSAqIDIpKTsKK0lOU0VSVCBJTlRPIGd0ZXN0MjcgKGEpIFZBTFVFUyAoMyksICg0 KTsKK0FMVEVSIFRBQkxFIGd0ZXN0MjcgQUxURVIgQ09MVU1OIGEgVFlQRSB0ZXh0OyAgLS0g ZXJyb3IKK0VSUk9SOiAgY2Fubm90IGFsdGVyIHR5cGUgb2YgYSBjb2x1bW4gdXNlZCBieSBh IGdlbmVyYXRlZCBjb2x1bW4KK0RFVEFJTDogIENvbHVtbiAiYSIgaXMgdXNlZCBieSBnZW5l cmF0ZWQgY29sdW1uICJiIi4KK0FMVEVSIFRBQkxFIGd0ZXN0MjcgQUxURVIgQ09MVU1OIGIg VFlQRSBudW1lcmljOworXGQgZ3Rlc3QyNworICAgICAgICAgICAgICAgICAgICAgICAgIFRh YmxlICJwdWJsaWMuZ3Rlc3QyNyIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwg TnVsbGFibGUgfCAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAKKy0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAK KyBiICAgICAgfCBudW1lcmljIHwgICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQg YWx3YXlzIGFzICgoYSAqIDIpKQorCitTRUxFQ1QgKiBGUk9NIGd0ZXN0Mjc7CisgYSB8IGIg CistLS0rLS0tCisgMyB8IDYKKyA0IHwgOAorKDIgcm93cykKKworQUxURVIgVEFCTEUgZ3Rl c3QyNyBBTFRFUiBDT0xVTU4gYiBUWVBFIGJvb2xlYW47ICAtLSBlcnJvcgorRVJST1I6ICBn ZW5lcmF0aW9uIGV4cHJlc3Npb24gZm9yIGNvbHVtbiAiYiIgY2Fubm90IGJlIGNhc3QgYXV0 b21hdGljYWxseSB0byB0eXBlIGJvb2xlYW4KK0FMVEVSIFRBQkxFIGd0ZXN0MjcgQUxURVIg Q09MVU1OIGIgRFJPUCBERUZBVUxUOyAgLS0gZXJyb3IKK0VSUk9SOiAgY29sdW1uICJiIiBv ZiByZWxhdGlvbiAiZ3Rlc3QyNyIgaXMgYSBnZW5lcmF0ZWQgY29sdW1uCitcZCBndGVzdDI3 CisgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy5ndGVzdDI3IgorIENv bHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgRGVm YXVsdCAgICAgICAgICAgIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGEgICAgICB8IGludGVn ZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGIgICAgICB8IG51bWVyaWMgfCAgICAg ICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKChhICogMikpCisKKy0t IHRyaWdnZXJzCitDUkVBVEUgVEFCTEUgZ3Rlc3QyNiAoYSBpbnQgUFJJTUFSWSBLRVksIGIg aW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGEgKiAyKSk7CitDUkVBVEUgRlVOQ1RJT04gZ3Rl c3RfdHJpZ2dlcl9mdW5jKCkgUkVUVVJOUyB0cmlnZ2VyCisgIExBTkdVQUdFIHBscGdzcWwK K0FTICQkCitCRUdJTgorICBJRiB0Z19vcCBJTiAoJ0RFTEVURScsICdVUERBVEUnKSBUSEVO CisgICAgUkFJU0UgSU5GTyAnJTogb2xkID0gJScsIFRHX05BTUUsIE9MRDsKKyAgRU5EIElG OworICBJRiB0Z19vcCBJTiAoJ0lOU0VSVCcsICdVUERBVEUnKSBUSEVOCisgICAgUkFJU0Ug SU5GTyAnJTogbmV3ID0gJScsIFRHX05BTUUsIE5FVzsKKyAgRU5EIElGOworICBJRiB0Z19v cCA9ICdERUxFVEUnIFRIRU4KKyAgICBSRVRVUk4gT0xEOworICBFTFNFCisgICAgUkVUVVJO IE5FVzsKKyAgRU5EIElGOworRU5ECiskJDsKK0NSRUFURSBUUklHR0VSIGd0ZXN0MSBCRUZP UkUgREVMRVRFIE9SIFVQREFURSBPTiBndGVzdDI2CisgIEZPUiBFQUNIIFJPVworICBXSEVO IChPTEQuYiA8IDApICAtLSBvaworICBFWEVDVVRFIFBST0NFRFVSRSBndGVzdF90cmlnZ2Vy X2Z1bmMoKTsKK0NSRUFURSBUUklHR0VSIGd0ZXN0MiBCRUZPUkUgSU5TRVJUIE9SIFVQREFU RSBPTiBndGVzdDI2CisgIEZPUiBFQUNIIFJPVworICBXSEVOIChORVcuYiA8IDApICAtLSBl cnJvcgorICBFWEVDVVRFIFBST0NFRFVSRSBndGVzdF90cmlnZ2VyX2Z1bmMoKTsKK0VSUk9S OiAgQkVGT1JFIHRyaWdnZXIncyBXSEVOIGNvbmRpdGlvbiBjYW5ub3QgcmVmZXJlbmNlIE5F VyBnZW5lcmF0ZWQgY29sdW1ucworTElORSAzOiAgIFdIRU4gKE5FVy5iIDwgMCkgIAorICAg ICAgICAgICAgICAgIF4KK0NSRUFURSBUUklHR0VSIGd0ZXN0MyBBRlRFUiBERUxFVEUgT1Ig VVBEQVRFIE9OIGd0ZXN0MjYKKyAgRk9SIEVBQ0ggUk9XCisgIFdIRU4gKE9MRC5iIDwgMCkg IC0tIG9rCisgIEVYRUNVVEUgUFJPQ0VEVVJFIGd0ZXN0X3RyaWdnZXJfZnVuYygpOworQ1JF QVRFIFRSSUdHRVIgZ3Rlc3Q0IEFGVEVSIElOU0VSVCBPUiBVUERBVEUgT04gZ3Rlc3QyNgor ICBGT1IgRUFDSCBST1cKKyAgV0hFTiAoTkVXLmIgPCAwKSAgLS0gb2sKKyAgRVhFQ1VURSBQ Uk9DRURVUkUgZ3Rlc3RfdHJpZ2dlcl9mdW5jKCk7CitJTlNFUlQgSU5UTyBndGVzdDI2IChh KSBWQUxVRVMgKC0yKSwgKDApLCAoMyk7CitJTkZPOiAgZ3Rlc3Q0OiBuZXcgPSAoLTIsKQor U0VMRUNUICogRlJPTSBndGVzdDI2IE9SREVSIEJZIGE7CisgYSAgfCBiICAKKy0tLS0rLS0t LQorIC0yIHwgLTQKKyAgMCB8ICAwCisgIDMgfCAgNgorKDMgcm93cykKKworVVBEQVRFIGd0 ZXN0MjYgU0VUIGEgPSBhICogLTI7CitJTkZPOiAgZ3Rlc3QxOiBvbGQgPSAoLTIsKQorSU5G TzogIGd0ZXN0MTogbmV3ID0gKDQsKQorSU5GTzogIGd0ZXN0Mzogb2xkID0gKC0yLCkKK0lO Rk86ICBndGVzdDM6IG5ldyA9ICg0LCkKK0lORk86ICBndGVzdDQ6IG9sZCA9ICgzLCkKK0lO Rk86ICBndGVzdDQ6IG5ldyA9ICgtNiwpCitTRUxFQ1QgKiBGUk9NIGd0ZXN0MjYgT1JERVIg QlkgYTsKKyBhICB8ICBiICAKKy0tLS0rLS0tLS0KKyAtNiB8IC0xMgorICAwIHwgICAwCisg IDQgfCAgIDgKKygzIHJvd3MpCisKK0RFTEVURSBGUk9NIGd0ZXN0MjYgV0hFUkUgYSA9IC02 OworSU5GTzogIGd0ZXN0MTogb2xkID0gKC02LCkKK0lORk86ICBndGVzdDM6IG9sZCA9ICgt NiwpCitTRUxFQ1QgKiBGUk9NIGd0ZXN0MjYgT1JERVIgQlkgYTsKKyBhIHwgYiAKKy0tLSst LS0KKyAwIHwgMAorIDQgfCA4CisoMiByb3dzKQorCitDUkVBVEUgRlVOQ1RJT04gZ3Rlc3Rf dHJpZ2dlcl9mdW5jMigpIFJFVFVSTlMgdHJpZ2dlcgorICBMQU5HVUFHRSBwbHBnc3FsCitB UyAkJAorQkVHSU4KKyAgTkVXLmIgPSA1OworICBSRVRVUk4gTkVXOworRU5ECiskJDsKK0NS RUFURSBUUklHR0VSIGd0ZXN0MTAgQkVGT1JFIElOU0VSVCBPUiBVUERBVEUgT04gZ3Rlc3Qy NgorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQUk9DRURVUkUgZ3Rlc3RfdHJpZ2dlcl9m dW5jMigpOworSU5TRVJUIElOVE8gZ3Rlc3QyNiAoYSkgVkFMVUVTICgxMCk7CitFUlJPUjog IHRyaWdnZXIgbW9kaWZpZWQgdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1uIHZhbHVlCitVUERB VEUgZ3Rlc3QyNiBTRVQgYSA9IDEgV0hFUkUgYSA9IDA7CitFUlJPUjogIHRyaWdnZXIgbW9k aWZpZWQgdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1uIHZhbHVlCistLSBMSUtFIElOQ0xVRElO RyBHRU5FUkFURUQgYW5kIGRyb3BwZWQgY29sdW1uIGhhbmRsaW5nCitDUkVBVEUgVEFCTEUg Z3Rlc3QyOGEgKAorICBhIGludCwKKyAgYiBpbnQsCisgIGMgaW50LAorICB4IGludCBHRU5F UkFURUQgQUxXQVlTIEFTIChiICogMikKKyk7CitBTFRFUiBUQUJMRSBndGVzdDI4YSBEUk9Q IENPTFVNTiBhOworQ1JFQVRFIFRBQkxFIGd0ZXN0MjhiIChMSUtFIGd0ZXN0MjhhIElOQ0xV RElORyBHRU5FUkFURUQpOworXGQgZ3Rlc3QyOCoKKyAgICAgICAgICAgICAgICAgICAgICAg IFRhYmxlICJwdWJsaWMuZ3Rlc3QyOGEiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlv biB8IE51bGxhYmxlIHwgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgIAorLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBiICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAK KyBjICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyB4ICAgICAg fCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFz IChiICogMikKKworICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy5ndGVz dDI4YiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAg ICAgICAgRGVmYXVsdCAgICAgICAgICAgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGIgICAgICB8 IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGMgICAgICB8IGludGVnZXIg fCAgICAgICAgICAgfCAgICAgICAgICB8IAorIHggICAgICB8IGludGVnZXIgfCAgICAgICAg ICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKGIgKiAyKQorCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCBiNWUxNTUwMWRkLi4yZjEzYjY4MjNjIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTExNiw3ICsxMTYsNyBAQCB0 ZXN0OiBwbGFuY2FjaGUgbGltaXQgcGxwZ3NxbCBjb3B5MiB0ZW1wIGRvbWFpbiByYW5nZWZ1 bmNzIHByZXBhcmUgd2l0aG91dF9vaWQgYwogIyAtLS0tLS0tLS0tCiAjIEFub3RoZXIgZ3Jv dXAgb2YgcGFyYWxsZWwgdGVzdHMKICMgLS0tLS0tLS0tLQotdGVzdDogaWRlbnRpdHkgcGFy dGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5lIHJlbG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4 aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUgcGFydGl0aW9uX2luZm8KK3Rlc3Q6IGlkZW50aXR5 IGdlbmVyYXRlZCBwYXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucyBo YXNoX3BhcnQgaW5kZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5mbwog CiAjIGV2ZW50IHRyaWdnZXJzIGNhbm5vdCBydW4gY29uY3VycmVudGx5IHdpdGggYW55IHRl c3QgdGhhdCBydW5zIERETAogdGVzdDogZXZlbnRfdHJpZ2dlcgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9zZXJpYWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3Nlcmlh bF9zY2hlZHVsZQppbmRleCA0OTMyOWZmYmI2Li42NDBiMTE5MDE4IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL3NlcmlhbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NlcmlhbF9zY2hlZHVsZQpAQCAtMTc5LDYgKzE3OSw3IEBAIHRlc3Q6IGxhcmdlb2JqZWN0 CiB0ZXN0OiB3aXRoCiB0ZXN0OiB4bWwKIHRlc3Q6IGlkZW50aXR5Cit0ZXN0OiBnZW5lcmF0 ZWQKIHRlc3Q6IHBhcnRpdGlvbl9qb2luCiB0ZXN0OiBwYXJ0aXRpb25fcHJ1bmUKIHRlc3Q6 IHJlbG9wdGlvbnMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV90 YWJsZV9saWtlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV90YWJsZV9saWtl LnNxbAppbmRleCA0MmNhZDY4MjZiLi5jNDYxZWE3OTA0IDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9jcmVhdGVfdGFibGVfbGlrZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvY3JlYXRlX3RhYmxlX2xpa2Uuc3FsCkBAIC01MSw2ICs1MSwyMCBAQCBDUkVB VEUgVEFCTEUgdGVzdF9saWtlX2lkXzMgKExJS0UgdGVzdF9saWtlX2lkXzEgSU5DTFVESU5H IElERU5USVRZKTsKIFNFTEVDVCAqIEZST00gdGVzdF9saWtlX2lkXzM7ICAtLSBpZGVudGl0 eSB3YXMgY29waWVkIGFuZCBhcHBsaWVkCiBEUk9QIFRBQkxFIHRlc3RfbGlrZV9pZF8xLCB0 ZXN0X2xpa2VfaWRfMiwgdGVzdF9saWtlX2lkXzM7CiAKK0NSRUFURSBUQUJMRSB0ZXN0X2xp a2VfZ2VuXzEgKGEgaW50LCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMikpOwor XGQgdGVzdF9saWtlX2dlbl8xCitJTlNFUlQgSU5UTyB0ZXN0X2xpa2VfZ2VuXzEgKGEpIFZB TFVFUyAoMSk7CitTRUxFQ1QgKiBGUk9NIHRlc3RfbGlrZV9nZW5fMTsKK0NSRUFURSBUQUJM RSB0ZXN0X2xpa2VfZ2VuXzIgKExJS0UgdGVzdF9saWtlX2dlbl8xKTsKK1xkIHRlc3RfbGlr ZV9nZW5fMgorSU5TRVJUIElOVE8gdGVzdF9saWtlX2dlbl8yIChhKSBWQUxVRVMgKDEpOwor U0VMRUNUICogRlJPTSB0ZXN0X2xpa2VfZ2VuXzI7CitDUkVBVEUgVEFCTEUgdGVzdF9saWtl X2dlbl8zIChMSUtFIHRlc3RfbGlrZV9nZW5fMSBJTkNMVURJTkcgR0VORVJBVEVEKTsKK1xk IHRlc3RfbGlrZV9nZW5fMworSU5TRVJUIElOVE8gdGVzdF9saWtlX2dlbl8zIChhKSBWQUxV RVMgKDEpOworU0VMRUNUICogRlJPTSB0ZXN0X2xpa2VfZ2VuXzM7CitEUk9QIFRBQkxFIHRl c3RfbGlrZV9nZW5fMSwgdGVzdF9saWtlX2dlbl8yLCB0ZXN0X2xpa2VfZ2VuXzM7CisKIENS RUFURSBUQUJMRSBpbmhnICh4IHRleHQsIExJS0UgaW5oeCBJTkNMVURJTkcgSU5ERVhFUywg eSB0ZXh0KTsgLyogY29waWVzIGluZGV4ZXMgKi8KIElOU0VSVCBJTlRPIGluaGcgVkFMVUVT ICg1LCAxMCk7CiBJTlNFUlQgSU5UTyBpbmhnIFZBTFVFUyAoMjAsIDEwKTsgLS0gc2hvdWxk IGZhaWwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZC5zcWwg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9nZW5lcmF0ZWQuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjhmNjYwOWRhMjMKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9nZW5lcmF0ZWQuc3FsCkBAIC0wLDAgKzEsNDA4IEBACist LSBzYW5pdHkgY2hlY2sgb2Ygc3lzdGVtIGNhdGFsb2cKK1NFTEVDVCBhdHRyZWxpZCwgYXR0 bmFtZSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dGdlbmVyYXRl ZCBOT1QgSU4gKCcnLCAncycsICd2Jyk7CisKKworQ1JFQVRFIFRBQkxFIGd0ZXN0MCAoYSBp bnQgUFJJTUFSWSBLRVksIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKDU1KSk7CitDUkVB VEUgVEFCTEUgZ3Rlc3QxIChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQgR0VORVJBVEVEIEFM V0FZUyBBUyAoYSAqIDIpKTsKKworU0VMRUNUIHRhYmxlX25hbWUsIGNvbHVtbl9uYW1lLCBj b2x1bW5fZGVmYXVsdCwgaXNfbnVsbGFibGUsIGlzX2dlbmVyYXRlZCwgZ2VuZXJhdGlvbl9l eHByZXNzaW9uIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLmNvbHVtbnMgV0hFUkUgdGFibGVf bmFtZSBMSUtFICdndGVzdF8nIE9SREVSIEJZIDEsIDI7CisKK1NFTEVDVCB0YWJsZV9uYW1l LCBjb2x1bW5fbmFtZSwgZGVwZW5kZW50X2NvbHVtbiBGUk9NIGluZm9ybWF0aW9uX3NjaGVt YS5jb2x1bW5fY29sdW1uX3VzYWdlIE9SREVSIEJZIDEsIDIsIDM7CisKK1xkIGd0ZXN0MQor CistLSBkdXBsaWNhdGUgZ2VuZXJhdGVkCitDUkVBVEUgVEFCTEUgZ3Rlc3RfZXJyXzEgKGEg aW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMikgR0VO RVJBVEVEIEFMV0FZUyBBUyAoYSAqIDMpKTsKKworLS0gcmVmZXJlbmNlcyB0byBvdGhlciBn ZW5lcmF0ZWQgY29sdW1ucywgaW5jbHVkaW5nIHNlbGYtcmVmZXJlbmNlcworQ1JFQVRFIFRB QkxFIGd0ZXN0X2Vycl8yYSAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50IEdFTkVSQVRFRCBB TFdBWVMgQVMgKGIgKiAyKSk7CitDUkVBVEUgVEFCTEUgZ3Rlc3RfZXJyXzJiIChhIGludCBQ UklNQVJZIEtFWSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpLCBjIGludCBH RU5FUkFURUQgQUxXQVlTIEFTIChiICogMykpOworCistLSBpbnZhbGlkIHJlZmVyZW5jZQor Q1JFQVRFIFRBQkxFIGd0ZXN0X2Vycl8zIChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQgR0VO RVJBVEVEIEFMV0FZUyBBUyAoYyAqIDIpKTsKKworLS0gZnVuY3Rpb25zIG11c3QgYmUgaW1t dXRhYmxlCitDUkVBVEUgVEFCTEUgZ3Rlc3RfZXJyXzQgKGEgaW50IFBSSU1BUlkgS0VZLCBi IGRvdWJsZSBwcmVjaXNpb24gR0VORVJBVEVEIEFMV0FZUyBBUyAocmFuZG9tKCkpKTsKKwor LS0gY2Fubm90IGhhdmUgZGVmYXVsdC9pZGVudGl0eSBhbmQgZ2VuZXJhdGVkCitDUkVBVEUg VEFCTEUgZ3Rlc3RfZXJyXzVhIChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQgREVGQVVMVCA1 IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGEgKiAyKSk7CitDUkVBVEUgVEFCTEUgZ3Rlc3RfZXJy XzViIChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyBpZGVu dGl0eSBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMikpOworCitJTlNFUlQgSU5UTyBndGVz dDEgVkFMVUVTICgxKTsKK0lOU0VSVCBJTlRPIGd0ZXN0MSBWQUxVRVMgKDIsIERFRkFVTFQp OworSU5TRVJUIElOVE8gZ3Rlc3QxIFZBTFVFUyAoMywgMzMpOyAgLS0gZXJyb3IKKworU0VM RUNUICogRlJPTSBndGVzdDEgT1JERVIgQlkgYTsKKworVVBEQVRFIGd0ZXN0MSBTRVQgYiA9 IERFRkFVTFQgV0hFUkUgYSA9IDE7CitVUERBVEUgZ3Rlc3QxIFNFVCBiID0gMTEgV0hFUkUg YSA9IDE7ICAtLSBlcnJvcgorCitTRUxFQ1QgKiBGUk9NIGd0ZXN0MSBPUkRFUiBCWSBhOwor CitTRUxFQ1QgYSwgYiwgYiAqIDIgQVMgYjIgRlJPTSBndGVzdDEgT1JERVIgQlkgYTsKK1NF TEVDVCBhLCBiIEZST00gZ3Rlc3QxIFdIRVJFIGIgPSA0IE9SREVSIEJZIGE7CisKKy0tIHRl c3QgdGhhdCBvdmVyZmxvdyBlcnJvciBoYXBwZW5zIG9uIHJlYWQKK0lOU0VSVCBJTlRPIGd0 ZXN0MSBWQUxVRVMgKDIwMDAwMDAwMDApOworU0VMRUNUICogRlJPTSBndGVzdDE7CitERUxF VEUgRlJPTSBndGVzdDEgV0hFUkUgYSA9IDIwMDAwMDAwMDA7CisKKy0tIHRlc3Qgd2l0aCBq b2lucworQ1JFQVRFIFRBQkxFIGd0ZXN0eCAoeCBpbnQsIHkgaW50KTsKK0lOU0VSVCBJTlRP IGd0ZXN0eCBWQUxVRVMgKDExLCAxKSwgKDIyLCAyKSwgKDMzLCAzKTsKK1NFTEVDVCAqIEZS T00gZ3Rlc3R4LCBndGVzdDEgV0hFUkUgZ3Rlc3R4LnkgPSBndGVzdDEuYTsKK0RST1AgVEFC TEUgZ3Rlc3R4OworCistLSB0ZXN0IFVQREFURS9ERUxFVEUgcXVhbHMKK1NFTEVDVCAqIEZS T00gZ3Rlc3QxIE9SREVSIEJZIGE7CitVUERBVEUgZ3Rlc3QxIFNFVCBhID0gMyBXSEVSRSBi ID0gNDsKK1NFTEVDVCAqIEZST00gZ3Rlc3QxIE9SREVSIEJZIGE7CitERUxFVEUgRlJPTSBn dGVzdDEgV0hFUkUgYiA9IDI7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0MSBPUkRFUiBCWSBhOwor CistLSB2aWV3cworQ1JFQVRFIFZJRVcgZ3Rlc3QxdiBBUyBTRUxFQ1QgKiBGUk9NIGd0ZXN0 MTsKK1NFTEVDVCAqIEZST00gZ3Rlc3QxdjsKK0lOU0VSVCBJTlRPIGd0ZXN0MXYgVkFMVUVT ICg0LCA4KTsgIC0tIGZhaWxzCisKKy0tIGluaGVyaXRhbmNlCitDUkVBVEUgVEFCTEUgZ3Rl c3QxXzEgKCkgSU5IRVJJVFMgKGd0ZXN0MSk7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0MV8xOwor XGQgZ3Rlc3QxXzEKK0lOU0VSVCBJTlRPIGd0ZXN0MV8xIFZBTFVFUyAoNCk7CitTRUxFQ1Qg KiBGUk9NIGd0ZXN0MV8xOworU0VMRUNUICogRlJPTSBndGVzdDE7CisKKy0tIHRlc3QgaW5o ZXJpdGFuY2UgbWlzbWF0Y2gKK0NSRUFURSBUQUJMRSBndGVzdHkgKHggaW50LCBiIGludCk7 CitDUkVBVEUgVEFCTEUgZ3Rlc3QxXzIgKCkgSU5IRVJJVFMgKGd0ZXN0MSwgZ3Rlc3R5KTsg IC0tIGVycm9yCitEUk9QIFRBQkxFIGd0ZXN0eTsKKworLS0gc3RvcmVkCitDUkVBVEUgVEFC TEUgZ3Rlc3QzIChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBB UyAoYSAqIDMpIFNUT1JFRCk7CitJTlNFUlQgSU5UTyBndGVzdDMgKGEpIFZBTFVFUyAoMSks ICgyKSwgKDMpOworU0VMRUNUICogRlJPTSBndGVzdDMgT1JERVIgQlkgYTsKK1VQREFURSBn dGVzdDMgU0VUIGEgPSAyMiBXSEVSRSBhID0gMjsKK1NFTEVDVCAqIEZST00gZ3Rlc3QzIE9S REVSIEJZIGE7CisKKy0tIENPUFkKK1RSVU5DQVRFIGd0ZXN0MTsKK0lOU0VSVCBJTlRPIGd0 ZXN0MSAoYSkgVkFMVUVTICgxKSwgKDIpOworCitDT1BZIGd0ZXN0MSBUTyBzdGRvdXQ7CisK K0NPUFkgZ3Rlc3QxIChhLCBiKSBUTyBzdGRvdXQ7CisKK0NPUFkgZ3Rlc3QxIEZST00gc3Rk aW47CiszCis0CitcLgorCitDT1BZIGd0ZXN0MSAoYSwgYikgRlJPTSBzdGRpbjsKKworU0VM RUNUICogRlJPTSBndGVzdDEgT1JERVIgQlkgYTsKKworVFJVTkNBVEUgZ3Rlc3QzOworSU5T RVJUIElOVE8gZ3Rlc3QzIChhKSBWQUxVRVMgKDEpLCAoMik7CisKK0NPUFkgZ3Rlc3QzIFRP IHN0ZG91dDsKKworQ09QWSBndGVzdDMgKGEsIGIpIFRPIHN0ZG91dDsKKworQ09QWSBndGVz dDMgRlJPTSBzdGRpbjsKKzMKKzQKK1wuCisKK0NPUFkgZ3Rlc3QzIChhLCBiKSBGUk9NIHN0 ZGluOworCitTRUxFQ1QgKiBGUk9NIGd0ZXN0MyBPUkRFUiBCWSBhOworCistLSBkcm9wIGNv bHVtbiBiZWhhdmlvcgorQ1JFQVRFIFRBQkxFIGd0ZXN0MTAgKGEgaW50IFBSSU1BUlkgS0VZ LCBiIGludCwgYyBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYiAqIDIpKTsKK0FMVEVSIFRB QkxFIGd0ZXN0MTAgRFJPUCBDT0xVTU4gYjsKKworXGQgZ3Rlc3QxMAorCistLSBwcml2aWxl Z2VzCitDUkVBVEUgVVNFUiByZWdyZXNzX3VzZXIxMTsKKworQ1JFQVRFIFRBQkxFIGd0ZXN0 MTF2IChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQsIGMgaW50IEdFTkVSQVRFRCBBTFdBWVMg QVMgKGIgKiAyKSBWSVJUVUFMKTsKK0lOU0VSVCBJTlRPIGd0ZXN0MTF2IFZBTFVFUyAoMSwg MTApLCAoMiwgMjApOworR1JBTlQgU0VMRUNUIChhLCBjKSBPTiBndGVzdDExdiBUTyByZWdy ZXNzX3VzZXIxMTsKKworQ1JFQVRFIFRBQkxFIGd0ZXN0MTFzIChhIGludCBQUklNQVJZIEtF WSwgYiBpbnQsIGMgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGIgKiAyKSBTVE9SRUQpOwor SU5TRVJUIElOVE8gZ3Rlc3QxMXMgVkFMVUVTICgxLCAxMCksICgyLCAyMCk7CitHUkFOVCBT RUxFQ1QgKGEsIGMpIE9OIGd0ZXN0MTFzIFRPIHJlZ3Jlc3NfdXNlcjExOworCitDUkVBVEUg RlVOQ1RJT04gZ2YxKGEgaW50KSBSRVRVUk5TIGludCBBUyAkJCBTRUxFQ1QgYSAqIDMgJCQg SU1NVVRBQkxFIExBTkdVQUdFIFNRTDsKK1JFVk9LRSBBTEwgT04gRlVOQ1RJT04gZ2YxKGlu dCkgRlJPTSBQVUJMSUM7CisKK0NSRUFURSBUQUJMRSBndGVzdDEydiAoYSBpbnQgUFJJTUFS WSBLRVksIGIgaW50LCBjIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChnZjEoYikpIFZJUlRV QUwpOworSU5TRVJUIElOVE8gZ3Rlc3QxMnYgVkFMVUVTICgxLCAxMCksICgyLCAyMCk7CitH UkFOVCBTRUxFQ1QgKGEsIGMpIE9OIGd0ZXN0MTJ2IFRPIHJlZ3Jlc3NfdXNlcjExOworCitD UkVBVEUgVEFCTEUgZ3Rlc3QxMnMgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCwgYyBpbnQg R0VORVJBVEVEIEFMV0FZUyBBUyAoZ2YxKGIpKSBTVE9SRUQpOworSU5TRVJUIElOVE8gZ3Rl c3QxMnMgVkFMVUVTICgxLCAxMCksICgyLCAyMCk7CitHUkFOVCBTRUxFQ1QgKGEsIGMpIE9O IGd0ZXN0MTJzIFRPIHJlZ3Jlc3NfdXNlcjExOworCitTRVQgUk9MRSByZWdyZXNzX3VzZXIx MTsKK1NFTEVDVCBhLCBiIEZST00gZ3Rlc3QxMXY7ICAtLSBub3QgYWxsb3dlZAorU0VMRUNU IGEsIGMgRlJPTSBndGVzdDExdjsgIC0tIGFsbG93ZWQKK1NFTEVDVCBhLCBiIEZST00gZ3Rl c3QxMXM7ICAtLSBub3QgYWxsb3dlZAorU0VMRUNUIGEsIGMgRlJPTSBndGVzdDExczsgIC0t IGFsbG93ZWQKK1NFTEVDVCBnZjEoMTApOyAgLS0gbm90IGFsbG93ZWQKK1NFTEVDVCBhLCBj IEZST00gZ3Rlc3QxMnY7ICAtLSBub3QgYWxsb3dlZDsgVE9ETzogb3VnaHQgdG8gYmUgYWxs b3dlZAorU0VMRUNUIGEsIGMgRlJPTSBndGVzdDEyczsgIC0tIGFsbG93ZWQKK1JFU0VUIFJP TEU7CisKK0RST1AgVEFCTEUgZ3Rlc3QxMXYsIGd0ZXN0MTFzLCBndGVzdDEydiwgZ3Rlc3Qx MnM7CitEUk9QIEZVTkNUSU9OIGdmMShpbnQpOworRFJPUCBVU0VSIHJlZ3Jlc3NfdXNlcjEx OworCistLSBjaGVjayBjb25zdHJhaW50cworQ1JFQVRFIFRBQkxFIGd0ZXN0MjAgKGEgaW50 IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMikgQ0hFQ0sg KGIgPCA1MCkpOworSU5TRVJUIElOVE8gZ3Rlc3QyMCAoYSkgVkFMVUVTICgxMCk7ICAtLSBv aworSU5TRVJUIElOVE8gZ3Rlc3QyMCAoYSkgVkFMVUVTICgzMCk7ICAtLSB2aW9sYXRlcyBj b25zdHJhaW50CisKK0NSRUFURSBUQUJMRSBndGVzdDIwYSAoYSBpbnQgUFJJTUFSWSBLRVks IGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGEgKiAyKSk7CitJTlNFUlQgSU5UTyBndGVz dDIwYSAoYSkgVkFMVUVTICgxMCk7CitJTlNFUlQgSU5UTyBndGVzdDIwYSAoYSkgVkFMVUVT ICgzMCk7CitBTFRFUiBUQUJMRSBndGVzdDIwYSBBREQgQ0hFQ0sgKGIgPCA1MCk7ICAtLSBm YWlscyBvbiBleGlzdGluZyByb3cKKworQ1JFQVRFIFRBQkxFIGd0ZXN0MjBiIChhIGludCBQ UklNQVJZIEtFWSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpKTsKK0lOU0VS VCBJTlRPIGd0ZXN0MjBiIChhKSBWQUxVRVMgKDEwKTsKK0lOU0VSVCBJTlRPIGd0ZXN0MjBi IChhKSBWQUxVRVMgKDMwKTsKK0FMVEVSIFRBQkxFIGd0ZXN0MjBiIEFERCBDT05TVFJBSU5U IGNoayBDSEVDSyAoYiA8IDUwKSBOT1QgVkFMSUQ7CitBTFRFUiBUQUJMRSBndGVzdDIwYiBW QUxJREFURSBDT05TVFJBSU5UIGNoazsgIC0tIGZhaWxzIG9uIGV4aXN0aW5nIHJvdworCist LSBub3QtbnVsbCBjb25zdHJhaW50cworQ1JFQVRFIFRBQkxFIGd0ZXN0MjFhIChhIGludCBQ UklNQVJZIEtFWSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAobnVsbGlmKGEsIDApKSBO T1QgTlVMTCk7CitJTlNFUlQgSU5UTyBndGVzdDIxYSAoYSkgVkFMVUVTICgxKTsgIC0tIG9r CitJTlNFUlQgSU5UTyBndGVzdDIxYSAoYSkgVkFMVUVTICgwKTsgIC0tIHZpb2xhdGVzIGNv bnN0cmFpbnQKKworQ1JFQVRFIFRBQkxFIGd0ZXN0MjFiIChhIGludCBQUklNQVJZIEtFWSwg YiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAobnVsbGlmKGEsIDApKSk7CitBTFRFUiBUQUJM RSBndGVzdDIxYiBBTFRFUiBDT0xVTU4gYiBTRVQgTk9UIE5VTEw7ICAtLSBlcnJvcgorQUxU RVIgVEFCTEUgZ3Rlc3QyMWIgQUxURVIgQ09MVU1OIGIgRFJPUCBOT1QgTlVMTDsgIC0tIGVy cm9yCisKK0NSRUFURSBUQUJMRSBndGVzdDIxYyAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50 IEdFTkVSQVRFRCBBTFdBWVMgQVMgKG51bGxpZihhLCAwKSkgU1RPUkVEIE5PVCBOVUxMKTsK K0lOU0VSVCBJTlRPIGd0ZXN0MjFjIChhKSBWQUxVRVMgKDEpOyAgLS0gb2sKK0lOU0VSVCBJ TlRPIGd0ZXN0MjFjIChhKSBWQUxVRVMgKDApOyAgLS0gdmlvbGF0ZXMgY29uc3RyYWludAor CitDUkVBVEUgVEFCTEUgZ3Rlc3QyMWQgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5F UkFURUQgQUxXQVlTIEFTIChudWxsaWYoYSwgMCkpIFNUT1JFRCk7CitBTFRFUiBUQUJMRSBn dGVzdDIxZCBBTFRFUiBDT0xVTU4gYiBTRVQgTk9UIE5VTEw7CitJTlNFUlQgSU5UTyBndGVz dDIxZCAoYSkgVkFMVUVTICgxKTsgIC0tIG9rCitJTlNFUlQgSU5UTyBndGVzdDIxZCAoYSkg VkFMVUVTICgwKTsgIC0tIHZpb2xhdGVzIGNvbnN0cmFpbnQKK0FMVEVSIFRBQkxFIGd0ZXN0 MjFkIEFMVEVSIENPTFVNTiBiIERST1AgTk9UIE5VTEw7CitJTlNFUlQgSU5UTyBndGVzdDIx ZCAoYSkgVkFMVUVTICgwKTsgIC0tIG9rIG5vdworCistLSBpbmRleCBjb25zdHJhaW50cwor Q1JFQVRFIFRBQkxFIGd0ZXN0MjJhIChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQgR0VORVJB VEVEIEFMV0FZUyBBUyAoYSAqIDIpIFVOSVFVRSk7ICAtLSBlcnJvcgorQ1JFQVRFIFRBQkxF IGd0ZXN0MjJiIChhIGludCwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpLCBQ UklNQVJZIEtFWSAoYSwgYikpOyAgLS0gZXJyb3IKKworLS0gaW5kZXhlcworQ1JFQVRFIFRB QkxFIGd0ZXN0MjJjIChhIGludCwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIp KTsKK0NSRUFURSBJTkRFWCBndGVzdDIyY19iX2lkeCBPTiBndGVzdDIyYyAoYik7ICAtLSBl cnJvcgorQ1JFQVRFIElOREVYIGd0ZXN0MjJjX2V4cHJfaWR4IE9OIGd0ZXN0MjJjICgoYiAq IDMpKTsKK0NSRUFURSBJTkRFWCBndGVzdDIyY19wcmVkX2lkeCBPTiBndGVzdDIyYyAoYSkg V0hFUkUgYiA+IDA7CitcZCBndGVzdDIyYworCitJTlNFUlQgSU5UTyBndGVzdDIyYyBWQUxV RVMgKDEpLCAoMiksICgzKTsKK1NFVCBlbmFibGVfc2Vxc2NhbiBUTyBvZmY7CitTRVQgZW5h YmxlX2JpdG1hcHNjYW4gVE8gb2ZmOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBG Uk9NIGd0ZXN0MjJjIFdIRVJFIGIgKiAzID0gNjsKK1NFTEVDVCAqIEZST00gZ3Rlc3QyMmMg V0hFUkUgYiAqIDMgPSA2OworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGd0 ZXN0MjJjIFdIRVJFIGEgPSAxIEFORCBiID4gMDsKK1NFTEVDVCAqIEZST00gZ3Rlc3QyMmMg V0hFUkUgYSA9IDEgQU5EIGIgPiAwOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitSRVNFVCBl bmFibGVfYml0bWFwc2NhbjsKKworQ1JFQVRFIFRBQkxFIGd0ZXN0MjJkIChhIGludCwgYiBp bnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpIFNUT1JFRCk7CitDUkVBVEUgSU5ERVgg Z3Rlc3QyMmRfYl9pZHggT04gZ3Rlc3QyMmQgKGIpOworQ1JFQVRFIElOREVYIGd0ZXN0MjJk X2V4cHJfaWR4IE9OIGd0ZXN0MjJkICgoYiAqIDMpKTsKK0NSRUFURSBJTkRFWCBndGVzdDIy ZF9wcmVkX2lkeCBPTiBndGVzdDIyZCAoYSkgV0hFUkUgYiA+IDA7CitcZCBndGVzdDIyZAor CitJTlNFUlQgSU5UTyBndGVzdDIyZCBWQUxVRVMgKDEpLCAoMiksICgzKTsKK1NFVCBlbmFi bGVfc2Vxc2NhbiBUTyBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gVE8gb2ZmOworRVhQ TEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGd0ZXN0MjJkIFdIRVJFIGIgPSA0Owor U0VMRUNUICogRlJPTSBndGVzdDIyZCBXSEVSRSBiID0gNDsKK0VYUExBSU4gKENPU1RTIE9G RikgU0VMRUNUICogRlJPTSBndGVzdDIyZCBXSEVSRSBiICogMyA9IDY7CitTRUxFQ1QgKiBG Uk9NIGd0ZXN0MjJkIFdIRVJFIGIgKiAzID0gNjsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VM RUNUICogRlJPTSBndGVzdDIyZCBXSEVSRSBhID0gMSBBTkQgYiA+IDA7CitTRUxFQ1QgKiBG Uk9NIGd0ZXN0MjJkIFdIRVJFIGEgPSAxIEFORCBiID4gMDsKK1JFU0VUIGVuYWJsZV9zZXFz Y2FuOworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CisKKy0tIGZvcmVpZ24ga2V5cworQ1JF QVRFIFRBQkxFIGd0ZXN0MjNhICh4IGludCBQUklNQVJZIEtFWSwgeSBpbnQpOworSU5TRVJU IElOVE8gZ3Rlc3QyM2EgVkFMVUVTICgxLCAxMSksICgyLCAyMiksICgzLCAzMyk7CisKK0NS RUFURSBUQUJMRSBndGVzdDIzeCAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50IEdFTkVSQVRF RCBBTFdBWVMgQVMgKGEgKiAyKSBSRUZFUkVOQ0VTIGd0ZXN0MjNhICh4KSBPTiBVUERBVEUg Q0FTQ0FERSk7ICAtLSBlcnJvcgorQ1JFQVRFIFRBQkxFIGd0ZXN0MjN4IChhIGludCBQUklN QVJZIEtFWSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpIFJFRkVSRU5DRVMg Z3Rlc3QyM2EgKHgpIE9OIERFTEVURSBTRVQgTlVMTCk7ICAtLSBlcnJvcgorCitDUkVBVEUg VEFCTEUgZ3Rlc3QyM2IgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxX QVlTIEFTIChhICogMikgUkVGRVJFTkNFUyBndGVzdDIzYSAoeCkpOyAgLS0gZXJyb3IKKwor Q1JFQVRFIFRBQkxFIGd0ZXN0MjNjIChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQgR0VORVJB VEVEIEFMV0FZUyBBUyAoYSAqIDIpIFNUT1JFRCBSRUZFUkVOQ0VTIGd0ZXN0MjNhICh4KSk7 CitcZCBndGVzdDIzYworCitJTlNFUlQgSU5UTyBndGVzdDIzYyBWQUxVRVMgKDEpOyAgLS0g b2sKK0lOU0VSVCBJTlRPIGd0ZXN0MjNjIFZBTFVFUyAoNSk7ICAtLSBlcnJvcgorCitEUk9Q IFRBQkxFIGd0ZXN0MjNjOworRFJPUCBUQUJMRSBndGVzdDIzYTsKKworQ1JFQVRFIFRBQkxF IGd0ZXN0MjNwICh4IGludCwgeSBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoeCAqIDIpIFNU T1JFRCwgUFJJTUFSWSBLRVkgKHkpKTsKK0lOU0VSVCBJTlRPIGd0ZXN0MjNwIFZBTFVFUyAo MSksICgyKSwgKDMpOworCitDUkVBVEUgVEFCTEUgZ3Rlc3QyM3EgKGEgaW50IFBSSU1BUlkg S0VZLCBiIGludCBSRUZFUkVOQ0VTIGd0ZXN0MjNwICh5KSk7CitJTlNFUlQgSU5UTyBndGVz dDIzcSBWQUxVRVMgKDEsIDIpOyAgLS0gb2sKK0lOU0VSVCBJTlRPIGd0ZXN0MjNxIFZBTFVF UyAoMiwgNSk7ICAtLSBlcnJvcgorCistLSBubyB0ZXN0IGZvciBQSyB1c2luZyB2aXJ0dWFs IGNvbHVtbiwgc2luY2Ugc3VjaCBhbiBpbmRleCBjYW5ub3QgYmUgY3JlYXRlZAorCistLSBk b21haW5zCitDUkVBVEUgRE9NQUlOIGd0ZXN0ZG9tYWluMSBBUyBpbnQgQ0hFQ0sgKFZBTFVF IDwgMTApOworQ1JFQVRFIFRBQkxFIGd0ZXN0MjQgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGd0 ZXN0ZG9tYWluMSBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMikpOyAgLS0gcHJvaGliaXRl ZAorCistLSB0eXBlZCB0YWJsZXMgKGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkKQorQ1JFQVRF IFRZUEUgZ3Rlc3RfdHlwZSBBUyAoZjEgaW50ZWdlciwgZjIgdGV4dCwgZjMgYmlnaW50KTsK K0NSRUFURSBUQUJMRSBndGVzdDI4IE9GIGd0ZXN0X3R5cGUgKGYxIFdJVEggT1BUSU9OUyBH RU5FUkFURUQgQUxXQVlTIEFTIChmMiAqMikpOworRFJPUCBUWVBFIGd0ZXN0X3R5cGUgQ0FT Q0FERTsKKworLS0gdGFibGUgcGFydGl0aW9ucyAoY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQp CitDUkVBVEUgVEFCTEUgZ3Rlc3RfcGFyZW50IChmMSBkYXRlIE5PVCBOVUxMLCBmMiB0ZXh0 LCBmMyBiaWdpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoZjEpOworQ1JFQVRFIFRBQkxFIGd0 ZXN0X2NoaWxkIFBBUlRJVElPTiBPRiBndGVzdF9wYXJlbnQgKAorICAgIGYzIFdJVEggT1BU SU9OUyBHRU5FUkFURUQgQUxXQVlTIEFTIChmMiAqIDIpCispIEZPUiBWQUxVRVMgRlJPTSAo JzIwMTYtMDctMDEnKSBUTyAoJzIwMTYtMDgtMDEnKTsgLS0gZXJyb3IKK0RST1AgVEFCTEUg Z3Rlc3RfcGFyZW50OworCistLSBwYXJ0aXRpb25lZCB0YWJsZQorQ1JFQVRFIFRBQkxFIGd0 ZXN0X3BhcmVudCAoZjEgZGF0ZSBOT1QgTlVMTCwgZjIgYmlnaW50LCBmMyBiaWdpbnQgR0VO RVJBVEVEIEFMV0FZUyBBUyAoZjIgKiAyKSkgUEFSVElUSU9OIEJZIFJBTkdFIChmMSk7CitD UkVBVEUgVEFCTEUgZ3Rlc3RfY2hpbGQgUEFSVElUSU9OIE9GIGd0ZXN0X3BhcmVudCBGT1Ig VkFMVUVTIEZST00gKCcyMDE2LTA3LTAxJykgVE8gKCcyMDE2LTA4LTAxJyk7CitJTlNFUlQg SU5UTyBndGVzdF9wYXJlbnQgKGYxLCBmMikgVkFMVUVTICgnMjAxNi0wNy0xNScsIDEpOwor U0VMRUNUICogRlJPTSBndGVzdF9wYXJlbnQ7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0X2NoaWxk OworRFJPUCBUQUJMRSBndGVzdF9wYXJlbnQ7CisKK0NSRUFURSBUQUJMRSBndGVzdF9wYXJl bnQgKGYxIGRhdGUgTk9UIE5VTEwsIGYyIGJpZ2ludCwgZjMgYmlnaW50IEdFTkVSQVRFRCBB TFdBWVMgQVMgKGYyICogMikgU1RPUkVEKSBQQVJUSVRJT04gQlkgUkFOR0UgKGYxKTsKK0NS RUFURSBUQUJMRSBndGVzdF9jaGlsZCBQQVJUSVRJT04gT0YgZ3Rlc3RfcGFyZW50IEZPUiBW QUxVRVMgRlJPTSAoJzIwMTYtMDctMDEnKSBUTyAoJzIwMTYtMDgtMDEnKTsKK0lOU0VSVCBJ TlRPIGd0ZXN0X3BhcmVudCAoZjEsIGYyKSBWQUxVRVMgKCcyMDE2LTA3LTE1JywgMSk7CitT RUxFQ1QgKiBGUk9NIGd0ZXN0X3BhcmVudDsKK1NFTEVDVCAqIEZST00gZ3Rlc3RfY2hpbGQ7 CitEUk9QIFRBQkxFIGd0ZXN0X3BhcmVudDsKKworLS0gZ2VuZXJhdGVkIGNvbHVtbnMgaW4g cGFydGl0aW9uIGtleSAoY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQpCitDUkVBVEUgVEFCTEUg Z3Rlc3RfcGFyZW50IChmMSBkYXRlIE5PVCBOVUxMLCBmMiBiaWdpbnQsIGYzIGJpZ2ludCBH RU5FUkFURUQgQUxXQVlTIEFTIChmMiAqIDIpKSBQQVJUSVRJT04gQlkgUkFOR0UgKGYzKTsK K0NSRUFURSBUQUJMRSBndGVzdF9wYXJlbnQgKGYxIGRhdGUgTk9UIE5VTEwsIGYyIGJpZ2lu dCwgZjMgYmlnaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGYyICogMikpIFBBUlRJVElPTiBC WSBSQU5HRSAoKGYzICogMykpOworQ1JFQVRFIFRBQkxFIGd0ZXN0X3BhcmVudCAoZjEgZGF0 ZSBOT1QgTlVMTCwgZjIgYmlnaW50LCBmMyBiaWdpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAo ZjIgKiAyKSBTVE9SRUQpIFBBUlRJVElPTiBCWSBSQU5HRSAoKGYzICogMykpOworLyoKK0NS RUFURSBUQUJMRSBndGVzdF9jaGlsZDEgUEFSVElUSU9OIE9GIGd0ZXN0X3BhcmVudCBGT1Ig VkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgZ3Rlc3RfY2hpbGQyIFBB UlRJVElPTiBPRiBndGVzdF9wYXJlbnQgRk9SIFZBTFVFUyBGUk9NICgxMSkgVE8gKDIwKTsK K0lOU0VSVCBJTlRPIGd0ZXN0X3BhcmVudCAoZjEsIGYyKSBWQUxVRVMgKCcyMDE2LTA3LTE1 JywgMSk7CitJTlNFUlQgSU5UTyBndGVzdF9wYXJlbnQgKGYxLCBmMikgVkFMVUVTICgnMjAx Ni0wNy0xNScsIDMpOworSU5TRVJUIElOVE8gZ3Rlc3RfcGFyZW50IChmMSwgZjIpIFZBTFVF UyAoJzIwMTYtMDctMTUnLCAxMCk7ICAtLSBlcnJvcgorU0VMRUNUICogRlJPTSBndGVzdF9j aGlsZDE7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0X2NoaWxkMjsKK0RST1AgVEFCTEUgZ3Rlc3Rf cGFyZW50OworKi8KKworLS0gQUxURVIgVEFCTEUgLi4uIEFERCBDT0xVTU4KK0NSRUFURSBU QUJMRSBndGVzdDI1IChhIGludCBQUklNQVJZIEtFWSk7CitJTlNFUlQgSU5UTyBndGVzdDI1 IFZBTFVFUyAoMyksICg0KTsKK0FMVEVSIFRBQkxFIGd0ZXN0MjUgQUREIENPTFVNTiBiIGlu dCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMyk7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0MjUg T1JERVIgQlkgYTsKK0FMVEVSIFRBQkxFIGd0ZXN0MjUgQUREIENPTFVNTiB4IGludCBHRU5F UkFURUQgQUxXQVlTIEFTIChiICogNCk7ICAtLSBlcnJvcgorQUxURVIgVEFCTEUgZ3Rlc3Qy NSBBREQgQ09MVU1OIHggaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKHogKiA0KTsgIC0tIGVy cm9yCisKKy0tIEFMVEVSIFRBQkxFIC4uLiBBTFRFUiBDT0xVTU4KK0NSRUFURSBUQUJMRSBn dGVzdDI3IChhIGludCwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpKTsKK0lO U0VSVCBJTlRPIGd0ZXN0MjcgKGEpIFZBTFVFUyAoMyksICg0KTsKK0FMVEVSIFRBQkxFIGd0 ZXN0MjcgQUxURVIgQ09MVU1OIGEgVFlQRSB0ZXh0OyAgLS0gZXJyb3IKK0FMVEVSIFRBQkxF IGd0ZXN0MjcgQUxURVIgQ09MVU1OIGIgVFlQRSBudW1lcmljOworXGQgZ3Rlc3QyNworU0VM RUNUICogRlJPTSBndGVzdDI3OworQUxURVIgVEFCTEUgZ3Rlc3QyNyBBTFRFUiBDT0xVTU4g YiBUWVBFIGJvb2xlYW47ICAtLSBlcnJvcgorCitBTFRFUiBUQUJMRSBndGVzdDI3IEFMVEVS IENPTFVNTiBiIERST1AgREVGQVVMVDsgIC0tIGVycm9yCitcZCBndGVzdDI3CisKKy0tIHRy aWdnZXJzCitDUkVBVEUgVEFCTEUgZ3Rlc3QyNiAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50 IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGEgKiAyKSk7CisKK0NSRUFURSBGVU5DVElPTiBndGVz dF90cmlnZ2VyX2Z1bmMoKSBSRVRVUk5TIHRyaWdnZXIKKyAgTEFOR1VBR0UgcGxwZ3NxbAor QVMgJCQKK0JFR0lOCisgIElGIHRnX29wIElOICgnREVMRVRFJywgJ1VQREFURScpIFRIRU4K KyAgICBSQUlTRSBJTkZPICclOiBvbGQgPSAlJywgVEdfTkFNRSwgT0xEOworICBFTkQgSUY7 CisgIElGIHRnX29wIElOICgnSU5TRVJUJywgJ1VQREFURScpIFRIRU4KKyAgICBSQUlTRSBJ TkZPICclOiBuZXcgPSAlJywgVEdfTkFNRSwgTkVXOworICBFTkQgSUY7CisgIElGIHRnX29w ID0gJ0RFTEVURScgVEhFTgorICAgIFJFVFVSTiBPTEQ7CisgIEVMU0UKKyAgICBSRVRVUk4g TkVXOworICBFTkQgSUY7CitFTkQKKyQkOworCitDUkVBVEUgVFJJR0dFUiBndGVzdDEgQkVG T1JFIERFTEVURSBPUiBVUERBVEUgT04gZ3Rlc3QyNgorICBGT1IgRUFDSCBST1cKKyAgV0hF TiAoT0xELmIgPCAwKSAgLS0gb2sKKyAgRVhFQ1VURSBQUk9DRURVUkUgZ3Rlc3RfdHJpZ2dl cl9mdW5jKCk7CisKK0NSRUFURSBUUklHR0VSIGd0ZXN0MiBCRUZPUkUgSU5TRVJUIE9SIFVQ REFURSBPTiBndGVzdDI2CisgIEZPUiBFQUNIIFJPVworICBXSEVOIChORVcuYiA8IDApICAt LSBlcnJvcgorICBFWEVDVVRFIFBST0NFRFVSRSBndGVzdF90cmlnZ2VyX2Z1bmMoKTsKKwor Q1JFQVRFIFRSSUdHRVIgZ3Rlc3QzIEFGVEVSIERFTEVURSBPUiBVUERBVEUgT04gZ3Rlc3Qy NgorICBGT1IgRUFDSCBST1cKKyAgV0hFTiAoT0xELmIgPCAwKSAgLS0gb2sKKyAgRVhFQ1VU RSBQUk9DRURVUkUgZ3Rlc3RfdHJpZ2dlcl9mdW5jKCk7CisKK0NSRUFURSBUUklHR0VSIGd0 ZXN0NCBBRlRFUiBJTlNFUlQgT1IgVVBEQVRFIE9OIGd0ZXN0MjYKKyAgRk9SIEVBQ0ggUk9X CisgIFdIRU4gKE5FVy5iIDwgMCkgIC0tIG9rCisgIEVYRUNVVEUgUFJPQ0VEVVJFIGd0ZXN0 X3RyaWdnZXJfZnVuYygpOworCitJTlNFUlQgSU5UTyBndGVzdDI2IChhKSBWQUxVRVMgKC0y KSwgKDApLCAoMyk7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0MjYgT1JERVIgQlkgYTsKK1VQREFU RSBndGVzdDI2IFNFVCBhID0gYSAqIC0yOworU0VMRUNUICogRlJPTSBndGVzdDI2IE9SREVS IEJZIGE7CitERUxFVEUgRlJPTSBndGVzdDI2IFdIRVJFIGEgPSAtNjsKK1NFTEVDVCAqIEZS T00gZ3Rlc3QyNiBPUkRFUiBCWSBhOworCisKK0NSRUFURSBGVU5DVElPTiBndGVzdF90cmln Z2VyX2Z1bmMyKCkgUkVUVVJOUyB0cmlnZ2VyCisgIExBTkdVQUdFIHBscGdzcWwKK0FTICQk CitCRUdJTgorICBORVcuYiA9IDU7CisgIFJFVFVSTiBORVc7CitFTkQKKyQkOworCitDUkVB VEUgVFJJR0dFUiBndGVzdDEwIEJFRk9SRSBJTlNFUlQgT1IgVVBEQVRFIE9OIGd0ZXN0MjYK KyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJFIGd0ZXN0X3RyaWdnZXJfZnVu YzIoKTsKKworSU5TRVJUIElOVE8gZ3Rlc3QyNiAoYSkgVkFMVUVTICgxMCk7CitVUERBVEUg Z3Rlc3QyNiBTRVQgYSA9IDEgV0hFUkUgYSA9IDA7CisKKy0tIExJS0UgSU5DTFVESU5HIEdF TkVSQVRFRCBhbmQgZHJvcHBlZCBjb2x1bW4gaGFuZGxpbmcKK0NSRUFURSBUQUJMRSBndGVz dDI4YSAoCisgIGEgaW50LAorICBiIGludCwKKyAgYyBpbnQsCisgIHggaW50IEdFTkVSQVRF RCBBTFdBWVMgQVMgKGIgKiAyKQorKTsKKworQUxURVIgVEFCTEUgZ3Rlc3QyOGEgRFJPUCBD T0xVTU4gYTsKKworQ1JFQVRFIFRBQkxFIGd0ZXN0MjhiIChMSUtFIGd0ZXN0MjhhIElOQ0xV RElORyBHRU5FUkFURUQpOworCitcZCBndGVzdDI4KgoKYmFzZS1jb21taXQ6IGMyYzdjMjYz YWYwMGE5NGJiYzFhMTU0NjEyMTVmMjkyODBhOWRkZjAKLS0gCjIuMTkuMQoK --------------4EDEB29BEDC94A7A5102E36E--