Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w7qGn-005kSX-21 for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Apr 2026 07:45:46 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w7qFm-00FnUm-3A for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Apr 2026 07:44:43 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from <3danissimo@gmail.com>) id 1w7qFm-00FnUc-0X for pgsql-hackers@lists.postgresql.org; Wed, 01 Apr 2026 07:44:43 +0000 Received: from mail-yw1-x112b.google.com ([2607:f8b0:4864:20::112b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from <3danissimo@gmail.com>) id 1w7qFi-000000026S5-1vP0 for pgsql-hackers@lists.postgresql.org; Wed, 01 Apr 2026 07:44:41 +0000 Received: by mail-yw1-x112b.google.com with SMTP id 00721157ae682-799001d73bdso24775567b3.0 for ; Wed, 01 Apr 2026 00:44:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775029478; cv=none; d=google.com; s=arc-20240605; b=IpDRVPAgT3owubw4lP+QPLFTax7uLgjbB1ZBfV9pqscJAbG70+dRXyUP1Pos7yqqPA vBYYDoaB3y8DVnp/LQuJHnellveGWN3ZgZqwNlxo7+p5C/d/mjJeLr8bv4V+Eo3yrpe8 0ITiBnS4BPpgaDK52ItaMwmEXcnnuY5O1MBALElHaRN5DenhIn9V/d1FJumK/+Fsk6ws aK4YA+ZzRTOLMXKg/iL0dFdD6xVdtDuKKM5QUY+xGDxL08xsq2Bjsyiy87d2RqQyY6mR f+eV4NMejiKYdD6pXd9EK9JWhSo9cgoVPTKZRebkcTpHJpO/khzpxpV8eOwSLnkvUp00 fEaQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=7EYObjx1s06U51AZAiq5b2gUpqJN/SH3Y7Zjakhi+HE=; fh=6sNa4BAcf76qzXmp/l0Jj4qcS6ss0Ipg7grXt9QzYGA=; b=Fkorv2qngS3///AB+32ZEkepcF2Mf5KOD7f7ifpbrZlgebbhwwnUpKL/bHM1LVthdc DI/iaTC3acQ/L+SYPT5vR5NjS2Rz+eXch82ftDU+yk66q/inmiWDx+6UAu3/omC02nea c726SfAiVboYrkPNeeLnvikfdmgmXJV3GykassDsO78C5WruO02x4gYTZMkl/HXG7FtY g94llY65zsekMuHOEEmbswSriTdSFSM67WkRX9LKP6PXQY984yWNfIsZRrJC90JB1Vnm roXNbzd3O6kr24NoDVZiqFaxcAzPDJR3lfUlTdzfsPXiOQkzZx0vk9Q0JoZ1lACQwzcK d5HA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775029478; x=1775634278; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=7EYObjx1s06U51AZAiq5b2gUpqJN/SH3Y7Zjakhi+HE=; b=S543y5kA49MunHMuHpzNzVSF6S66AlX+jx8zCNz5disqsgiUV7RtDnnGAw0taCSnnY OxPOVP7ZYH7091Ook48YuNqrhraZODDSEIw4AXUJC74qDNc7LjMWlNDNb7h4T4NdaYYQ Yh+zDxws/inCTggcPxMn6koxpLvcqz332Vk01pbTRAWQ5TlrAaTb7ncxPSsaHlq30z9b /9ysiAYnpk0WU2dwuEFsHXzxcloWU9JFCM5t0us1DQEUo+AXAbsyhjQDHJzXy9HHVUwd cvzDrnwxBYnV1zOx6ymSppyneKDrZRJFcOBaP8wzIkBjU/sWA0O20zYL0t/6YriF2s/0 numA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775029478; x=1775634278; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=7EYObjx1s06U51AZAiq5b2gUpqJN/SH3Y7Zjakhi+HE=; b=MvZf5J4v9qPvS8LsO51DNUjHdYdxjARh4nos12X9Xnm5k2ICvzXFcTdNyo82VVHKbp xCqgMZA9qUG5LJ7voaBYKb94qCyK9+eg0Js3YPy3snYb0dsgl2WtXcYKZrbafvt4mnCY RznEsZhWtcn01Azvyt2fCMNG4Xw5iCY5xBGl3j9FrB7FF8LDM1VTLX9EH4YFOqOdPWgd lpz7ya/M8G998hm8YUYH8Ah8pBK+lH6n7el21godzoU1t7V/wHQPM+24xP3DgmlHESrL LL8gl7KA/MsXBW+8vp6DbA/I4UdSUIMrWejeYcgVl0eL0x6RPAGU9pZT2kQIzhn0XKh9 pu0Q== X-Forwarded-Encrypted: i=1; AJvYcCUnA2FbaQPsVKmFwH+O6ckzIi0oq/szW8I5WpFc2TcRdM/CTF+rSDqWxquVAqfWKItfkAhDezwYMuY0btTx@lists.postgresql.org X-Gm-Message-State: AOJu0YwI+CMw6oKoC2Kx5BrfM1cqSofqwtNjhbwnkjHeJf2ghrnuisTp qdpEFHiB0uWqZ0aEN9fEC+d7UMNajpm87MVYnVA4bUr88HWCW5DLf80+L+vx6U5y3I2ivnz+kdB V4wM3j31D6KjEc8QrOf4hYA9xpLViSzQ= X-Gm-Gg: ATEYQzzqO5wVHsM3TurBfDHoWBU/sQrONuDtzxP37FMWnlQrbNDXYbYYVIBQU08jNXy XnyqoLOHFlYIm6hYUvcHcUqanFLOJJ13Lyn+0lYsBnd+bra87NdHvYlQqyh6llU4KzE7Q9I/FIb kRSJAAIWhWyZCmF3e0XjFOcRSUaWSHsvtXrNEv2+gn/0FuQuJBv1MvJzQJ1JImKj5B/sdFCf1Ei oPVi4d0ITYiHMeYvextgcQDmOl7M3qfs46LPPemh//7wwZFgl2fFapIfaZramWIt4nfRcImBMHF 0rBNMry9 X-Received: by 2002:a05:690c:998d:b0:799:198d:8c5a with SMTP id 00721157ae682-7a21263a2eemr28833207b3.34.1775029477600; Wed, 01 Apr 2026 00:44:37 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Daniil Davydov <3danissimo@gmail.com> Date: Wed, 1 Apr 2026 14:44:25 +0700 X-Gm-Features: AQROBzCWGwfrkYJ2C9zKH7pxlodX8cItxUF8bBmUrCEgThJdTj6ovIz858IsnLk Message-ID: Subject: Re: POC: Parallel processing of indexes in autovacuum To: Masahiko Sawada Cc: SATYANARAYANA NARLAPURAM , Bharath Rupireddy , Sami Imseih , Alexander Korotkov , Matheus Alcantara , Maxim Orlov , Postgres hackers Content-Type: multipart/mixed; boundary="0000000000007ad66f064e61411f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007ad66f064e61411f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Wed, Apr 1, 2026 at 4:20=E2=80=AFAM Masahiko Sawada wrote: > > On Tue, Mar 31, 2026 at 7:18=E2=80=AFAM Daniil Davydov <3danissimo@gmail.= com> wrote: > > > > > + VACUUM can perform index vacuuming and index = cleanup > > Don't we need to mention autovacuum here too? I thought that VACUUM in = the > > context means "manual VACUUM command". > > I think that the documentation explains that the autovacuum daemon is > a worker automatically executing VACUUM and ANALYZE commands. > Yeah, that's true. Then I agree with this change. > > > He confirmed that as a rule there are *hundreds of thousands* of tables= in the > > system, the vast majority of which do not need to be vacuumed in parall= el mode. > > I'm still struggling to see the technical justification; why would a > user want to avoid parallel vacuuming on eligible tables if they have > already explicitly allowed the system to use more resources by setting > autovacuum_max_parallel_workers to >0? Here I am talking about "introductory data". I.e. the situation that the us= er has before considering our parameter usage. Based on this situation, it see= ms to me that not everyone will want to turn on parallel a/v (because of resou= rce shortage hazard). > If resource contention occurs, > it is typically a sign that the global parameters need re-tuning. As I > mentioned, the same contention can occur even with an opt-in style if > multiple tables are manually configured. > Yep, we already discussed it and I agree with you. I think that in the case= of opt-in style the resource contention will be much more controlled. But actu= ally the opt-in style in the form in which I originally proposed it, no longer s= eems like a good idea to me. Classic opt-in style will deprive us of support for half of the parallel a/v use cases. Anton's proposal seems to me like a goo= d balance between the two styles. > > He also suggested the following : let the reloption overlap the value o= f the > > GUC parameter. I.e. even if av_max_parallel_workers parameters is 0 the= user > > still can set the av_parallel_workers to 10 for some table, and autovac= uum > > will process this table in parallel. > > > > I remember that you want to use the GUC parameter as a global switch, a= nd this > > approach will break this logic. But according to Anton's words, it is o= kay if > > the GUC parameter cannot disable parallel a/v for all tables instantly.= It will > > become an administrator's responsibility to manually turn off parallel = a/v for > > several tables (again, it is completely OK). Thus, this feature can be = handy > > for all use cases. > > While some autovacuum parameters do override GUCs, those are typically > local to the process (like cost delay). Parallel workers, however, are > a shared system-wide resource. In a multi-tenant environment, allowing > a single table's reloption to bypass the > autovacuum_max_parallel_workers =3D 0 limit could lead to unexpected > exhaustion of the worker pool. Will this exhaustion really be unexpected? If we describe such an ability i= n the documentation, and the user uses it, then everything is fair. Even if administrator forgets that he enabled av_parallel_workers reloption somewhe= re, then he can : 1) Check the logfile (if log level is not too high) searching for logs like "parallel workers: index vacuum: N planned, N launched in total". 2) Run a query that selects all tables which have av_parallel_workers > 0. >I think that this GUC should act as a > reliable global switch for resource management. I agree that the "global switch" is an attractive idea and we should strive for it. But our parameter *can* play the role of the switch if users don't manually touch the av_parallel_workers reloption. But if they do - well, it= is their responsibility to turn the reloption off. > > > I hope it doesn't look like as an adapting to the needs of a specific u= ser. > > A lot of super-large productions are migrating to postgres now, and I b= elieve > > that we should ensure their comfort too. > > I'm not prioritizing one specific use case over another. I believe > that there are also users who want to use parallel vacuum on hundreds > of thousands of tables. We should consider a better solution while > checking it from multiple perspectives such as the usability, the > robustness and consistency with the existing features and behaviors > etc. For those users who want to use parallel a/v for hundreds of thousands of tables we have the default value "-1" which allows parallel a/v everywhere = via GUC parameter manipulation. For those users who want to parallel a/v on several specific tables we can allow setting reloption that will override the GUC. I guess that the question is : "Is it normal if the GUC parameter will lose ability to turn off parallel a/v everywhere after the user has manually rai= sed the value for the av_parallel_workers reloption on a few tables?". If the answer is "Yes", I don't see any obstacles for us to allow overriding the G= UC parameter via reloption. Thank you very much for your comments! Please, see an updated patch. -- Best regards, Daniil Davydov --0000000000007ad66f064e61411f Content-Type: text/x-patch; charset="US-ASCII"; name="v34-v35-diff.patch" Content-Disposition: attachment; filename="v34-v35-diff.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnfqpg9g1 RnJvbSAwMzMzZTkyOTRhMmJkMTY3ZDgzMjYzZjZmZGJkNzBjMjE4MmZjNTY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBXZWQsIDEgQXByIDIwMjYgMTQ6MjQ6MDMgKzA3MDAKU3ViamVjdDogW1BBVENI XSB2MzQtLXYzNS1kaWZmCgotLS0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCB8IDcgKysrKy0t LQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNn bWwKaW5kZXggNzBkODc3MWYwYWYuLjUyMGMzOGU4MmE2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC05NDk3LDkg Kzk0OTcsMTAgQEAgQ09QWSBwb3N0Z3Jlc19sb2cgRlJPTSAnL2Z1bGwvcGF0aC90by9sb2dmaWxl LmNzdicgV0lUSCBjc3Y7CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICBTZXRzIHRoZSBtYXhp bXVtIG51bWJlciBvZiBwYXJhbGxlbCB3b3JrZXJzIHRoYXQgY2FuIGJlIHVzZWQgYnkgYQogICAg ICAgICAgIHNpbmdsZSBhdXRvdmFjdXVtIHdvcmtlciB0byBwcm9jZXNzIGluZGV4ZXMuIFRoaXMg bGltaXQgYXBwbGllcwotICAgICAgICAgIHNwZWNpZmljYWxseSB0byB0aGUgaW5kZXggdmFjdXVt aW5nIGFuZCBpbmRleCBjbGVhbnVwIHBoYXNlcyBvZgotICAgICAgICAgIGF1dG92YWN1dW0uIFRo ZSBhY3R1YWwgbnVtYmVyIG9mIHBhcmFsbGVsIHdvcmtlcnMgaXMgZnVydGhlciBsaW1pdGVkCi0g ICAgICAgICAgYnkgPHhyZWYgbGlua2VuZD0iZ3VjLW1heC1wYXJhbGxlbC13b3JrZXJzIi8+LiBU aGlzIGlzIHRoZQorICAgICAgICAgIHNwZWNpZmljYWxseSB0byB0aGUgaW5kZXggdmFjdXVtaW5n IGFuZCBpbmRleCBjbGVhbnVwIHBoYXNlcyAoZm9yIHRoZQorICAgICAgICAgIGRldGFpbHMgb2Yg ZWFjaCBhdXRvdmFjdXVtIHBoYXNlLCBwbGVhc2UgcmVmZXIgdG8gPHhyZWYgbGlua2VuZD0idmFj dXVtLXBoYXNlcyIvPikuCisgICAgICAgICAgVGhlIGFjdHVhbCBudW1iZXIgb2YgcGFyYWxsZWwg d29ya2VycyBpcyBmdXJ0aGVyIGxpbWl0ZWQgYnkKKyAgICAgICAgICA8eHJlZiBsaW5rZW5kPSJn dWMtbWF4LXBhcmFsbGVsLXdvcmtlcnMiLz4uIFRoaXMgaXMgdGhlCiAgICAgICAgICAgcGVyLWF1 dG92YWN1dW0gd29ya2VyIGVxdWl2YWxlbnQgb2YgdGhlIDxsaXRlcmFsPlBBUkFMTEVMPC9saXRl cmFsPgogICAgICAgICAgIG9wdGlvbiBvZiB0aGUgPGxpbmsgbGlua2VuZD0ic3FsLXZhY3V1bSI+ PGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPjwvbGluaz4KICAgICAgICAgICBjb21tYW5kLiBTZXR0 aW5nIHRoaXMgdmFsdWUgdG8gMCBkaXNhYmxlcyBwYXJhbGxlbCB2YWN1dW0gZHVyaW5nIGF1dG92 YWN1dW0uCi0tIAoyLjQzLjAKCg== --0000000000007ad66f064e61411f Content-Type: text/x-patch; charset="US-ASCII"; name="v35-0001-Allow-autovacuum-to-use-parallel-vacuum-workers.patch" Content-Disposition: attachment; filename="v35-0001-Allow-autovacuum-to-use-parallel-vacuum-workers.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnfqpg900 RnJvbSBhMTE1YWJkYWFiMDlkNTY1ZWU0OWI5NzMyZjA2ZWQ2ZDljYjBjYzI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBUdWUsIDE3IE1hciAyMDI2IDAyOjE4OjA5ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MzVdIEFsbG93IGF1dG92YWN1dW0gdG8gdXNlIHBhcmFsbGVsIHZhY3V1bSB3b3JrZXJzLgoK UHJldmlvdXNseSwgYXV0b3ZhY3V1bSBhbHdheXMgZGlzYWJsZWQgcGFyYWxsZWwgdmFjdXVtIHJl Z2FyZGxlc3Mgb2YKdGhlIHRhYmxlJ3MgaW5kZXggY291bnQgb3IgY29uZmlndXJhdGlvbi4gVGhp cyBjb21taXQgZW5hYmxlcwphdXRvdmFjdXVtIHdvcmtlcnMgdG8gdXNlIHBhcmFsbGVsIGluZGV4 IHZhY3V1bWluZyBhbmQgaW5kZXggY2xlYW51cCwKdXNpbmcgdGhlIHNhbWUgcGFyYWxsZWwgdmFj dXVtIGluZnJhc3RydWN0dXJlIGFzIG1hbnVhbCBWQUNVVU0uCgpUd28gbmV3IGNvbmZpZ3VyYXRp b24gb3B0aW9ucyBjb250cm9sIHRoZSBmZWF0dXJlLiBUaGUgR1VDCmF1dG92YWN1dW1fbWF4X3Bh cmFsbGVsX3dvcmtlcnMgc2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgcGFyYWxsZWwKd29ya2Vy cyBhIHNpbmdsZSBhdXRvdmFjdXVtIHdvcmtlciBtYXkgbGF1bmNoOyBpdCBkZWZhdWx0cyB0byAw LApwcmVzZXJ2aW5nIGV4aXN0aW5nIGJlaGF2aW9yIHVubGVzcyBleHBsaWNpdGx5IGVuYWJsZWQu IFRoZSBwZXItdGFibGUKc3RvcmFnZSBwYXJhbWV0ZXIgYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3Jr ZXJzIHByb3ZpZGVzIHBlci10YWJsZSBsaW1pdHMuCkEgdmFsdWUgb2YgMCBkaXNhYmxlcyBwYXJh bGxlbCB2YWN1dW0gZm9yIHRoZSB0YWJsZSwgYSBwb3NpdGl2ZSB2YWx1ZQpjYXBzIHRoZSB3b3Jr ZXIgY291bnQgKHN0aWxsIGJvdW5kZWQgYnkgdGhlIEdVQyksIGFuZCAtMSAodGhlIGRlZmF1bHQp CmRlZmVycyB0byB0aGUgR1VDLgoKVG8gaGFuZGxlIGNhc2VzIHdoZXJlIGF1dG92YWN1dW0gd29y a2VycyByZWNlaXZlIGEgU0lHSFVQIGFuZCB1cGRhdGUKdGhlaXIgY29zdC1iYXNlZCB2YWN1dW0g ZGVsYXkgcGFyYW1ldGVycyBtaWQtb3BlcmF0aW9uLCBhIG5ldwpwcm9wYWdhdGlvbiBtZWNoYW5p c20gaXMgYWRkZWQgdG8gdmFjdXVtcGFyYWxsZWwuYy4gVGhlIGxlYWRlciBzdG9yZXMKaXRzIGVm ZmVjdGl2ZSBjb3N0IHBhcmFtZXRlcnMgaW4gYSBEU00gc2VnbWVudC4gUGFyYWxsZWwgdmFjdXVt CndvcmtlcnMgcG9sbCBmb3IgY2hhbmdlcyBpbiB2YWN1dW1fZGVsYXlfcG9pbnQoKTsgaWYgYW4g dXBkYXRlIGlzCmRldGVjdGVkLCB0aGV5IGFwcGx5IHRoZSBuZXcgdmFsdWVzIGxvY2FsbHkgdmlh IFZhY3V1bVVwZGF0ZUNvc3RzKCkuCgpBIG5ldyB0ZXN0IG1vZHVsZSwgc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2F1dG92YWN1dW0sIGlzIGFkZGVkIHRvCnZlcmlmeSB0aGF0IHBhcmFsbGVsIGF1dG92 YWN1dW0gd29ya2VycyBhcmUgY29ycmVuY3RseSBsYXVuY2hlZCBhbmQKdGhhdCBjb3N0LXBhcmFt ZXRlciB1cGRhdGVzIGFyZSBwcm9wYWdhdGVkIGFzIGV4cGVjdGVkLgoKQXV0aG9yOiBEYW5paWwg RGF2eWRvdiA8M2Rhbmlzc2ltb0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBNYXNhaGlrbyBTYXdh ZGEgPHNhd2FkYS5tc2hrQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFNhbWkgSW1zZWloIDxzYW1p bXNlaWhAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogTWF0aGV1cyBBbGNhbnRhcmEgPG1hdGhldXNz c2lsdjk3QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEJoYXJhdGggUnVwaXJlZGR5IDxiaGFyYXRo LnJ1cGlyZWRkeWZvcnBvc3RncmVzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFsZXhhbmRlciBL b3JvdGtvdiA8YWVrb3JvdGtvdkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiB6ZW5nbWFuIDx6ZW5n bWFuQGhhbG9kYnRlY2guY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBQ0c9 ZXpaT3JOc3VMb0VUTEQxZ0Fzd1pNdUgybkdHcTdPZ2NjMFFPRTVoaFdhdz1jd0BtYWlsLmdtYWls LmNvbQotLS0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgICAgICAgICAgICB8 ICAyNCArKwogZG9jL3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwgICAgICAgICAgICAgICAgIHwg IDMyICsrKwogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCAgICAgICAgICAgIHwg IDE2ICsrCiBkb2Mvc3JjL3NnbWwvcmVmL3ZhY3V1bS5zZ21sICAgICAgICAgICAgICAgICAgfCAg MjMgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jICAgICAgICB8ICAx MSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgICAgICAgfCAgMTIg Kwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMgICAgICAgICAgICAgICAgIHwgIDIxICst CiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jICAgICAgICAgfCAyMjMgKysr KysrKysrKysrKysrKystCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyAgICAg ICAgICAgfCAgMjUgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jICAgICAgICAgICAgICAg ICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0ICAg ICB8ICAgOCArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUg fCAgIDEgKwogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgICAgIHwg ICAxICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oICAgICAgICAgICAgICAgICB8ICAg MiArCiBzcmMvaW5jbHVkZS9taXNjYWRtaW4uaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsK IHNyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vLmdpdGlnbm9yZSAgIHwgICAyICsKIHNyYy90 ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL01ha2VmaWxlICAgICB8ICAyMCArKwogc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vbWVzb24uYnVpbGQgIHwgIDE1ICsrCiAuLi4vdC8w MDFfcGFyYWxsZWxfYXV0b3ZhY3V1bS5wbCAgICAgICAgICAgICAgfCAxOTcgKysrKysrKysrKysr KysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAx ICsKIDI0IGZpbGVzIGNoYW5nZWQsIDYxNiBpbnNlcnRpb25zKCspLCAzMyBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS8uZ2l0 aWdub3JlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1 dW0vTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0 b3ZhY3V1bS9tZXNvbi5idWlsZAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMv dGVzdF9hdXRvdmFjdXVtL3QvMDAxX3BhcmFsbGVsX2F1dG92YWN1dW0ucGwKCmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5k ZXggMjI5ZjQxMzUzZWIuLjUyMGMzOGU4MmE2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29u ZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC0yOTE4LDYgKzI5MTgs NyBAQCBpbmNsdWRlX2RpciAnY29uZi5kJwogICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoZW4g Y2hhbmdpbmcgdGhpcyB2YWx1ZSwgY29uc2lkZXIgYWxzbyBhZGp1c3RpbmcKICAgICAgICAgIDx4 cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxsZWwtd29ya2VycyIvPiwKKyAgICAgICAgIDx4cmVm IGxpbmtlbmQ9Imd1Yy1hdXRvdmFjdXVtLW1heC1wYXJhbGxlbC13b3JrZXJzIi8+LAogICAgICAg ICAgPHhyZWYgbGlua2VuZD0iZ3VjLW1heC1wYXJhbGxlbC1tYWludGVuYW5jZS13b3JrZXJzIi8+ LCBhbmQKICAgICAgICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxsZWwtd29ya2Vycy1w ZXItZ2F0aGVyIi8+LgogICAgICAgICA8L3BhcmE+CkBAIC05NDg1LDYgKzk0ODYsMjkgQEAgQ09Q WSBwb3N0Z3Jlc19sb2cgRlJPTSAnL2Z1bGwvcGF0aC90by9sb2dmaWxlLmNzdicgV0lUSCBjc3Y7 CiAgICAgICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgICA8dmFy bGlzdGVudHJ5IGlkPSJndWMtYXV0b3ZhY3V1bS1tYXgtcGFyYWxsZWwtd29ya2VycyIgeHJlZmxh YmVsPSJhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzIj4KKyAgICAgICAgPHRlcm0+PHZh cm5hbWU+YXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VyczwvdmFybmFtZT4gKDx0eXBlPmlu dGVnZXI8L3R5cGU+KQorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+PHZh cm5hbWU+YXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VyczwvdmFybmFtZT48L3ByaW1hcnk+ CisgICAgICAgICA8c2Vjb25kYXJ5PmNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9zZWNvbmRhcnk+ CisgICAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgICA8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRl bT4KKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIFNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9m IHBhcmFsbGVsIHdvcmtlcnMgdGhhdCBjYW4gYmUgdXNlZCBieSBhCisgICAgICAgICAgc2luZ2xl IGF1dG92YWN1dW0gd29ya2VyIHRvIHByb2Nlc3MgaW5kZXhlcy4gVGhpcyBsaW1pdCBhcHBsaWVz CisgICAgICAgICAgc3BlY2lmaWNhbGx5IHRvIHRoZSBpbmRleCB2YWN1dW1pbmcgYW5kIGluZGV4 IGNsZWFudXAgcGhhc2VzIChmb3IgdGhlCisgICAgICAgICAgZGV0YWlscyBvZiBlYWNoIGF1dG92 YWN1dW0gcGhhc2UsIHBsZWFzZSByZWZlciB0byA8eHJlZiBsaW5rZW5kPSJ2YWN1dW0tcGhhc2Vz Ii8+KS4KKyAgICAgICAgICBUaGUgYWN0dWFsIG51bWJlciBvZiBwYXJhbGxlbCB3b3JrZXJzIGlz IGZ1cnRoZXIgbGltaXRlZCBieQorICAgICAgICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtcGFy YWxsZWwtd29ya2VycyIvPi4gVGhpcyBpcyB0aGUKKyAgICAgICAgICBwZXItYXV0b3ZhY3V1bSB3 b3JrZXIgZXF1aXZhbGVudCBvZiB0aGUgPGxpdGVyYWw+UEFSQUxMRUw8L2xpdGVyYWw+CisgICAg ICAgICAgb3B0aW9uIG9mIHRoZSA8bGluayBsaW5rZW5kPSJzcWwtdmFjdXVtIj48Y29tbWFuZD5W QUNVVU08L2NvbW1hbmQ+PC9saW5rPgorICAgICAgICAgIGNvbW1hbmQuIFNldHRpbmcgdGhpcyB2 YWx1ZSB0byAwIGRpc2FibGVzIHBhcmFsbGVsIHZhY3V1bSBkdXJpbmcgYXV0b3ZhY3V1bS4KKyAg ICAgICAgICBUaGUgZGVmYXVsdCBpcyAwLgorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xp c3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8L3ZhcmlhYmxlbGlzdD4KICAg ICA8L3NlY3QyPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbWFpbnRlbmFuY2Uuc2dtbCBi L2RvYy9zcmMvc2dtbC9tYWludGVuYW5jZS5zZ21sCmluZGV4IDBkMmEyODIwN2VkLi5lYjZhMDdl MDg2ZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwKQEAgLTEwMzgsNiArMTAzOCwxMCBAQCBhbmFseXpl IHRocmVzaG9sZCA9IGFuYWx5emUgYmFzZSB0aHJlc2hvbGQgKyBhbmFseXplIHNjYWxlIGZhY3Rv ciAqIG51bWJlciBvZiB0dQogICAgIHBlci10YWJsZSA8bGl0ZXJhbD5hdXRvdmFjdXVtX3ZhY3V1 bV9jb3N0X2RlbGF5PC9saXRlcmFsPiBvcgogICAgIDxsaXRlcmFsPmF1dG92YWN1dW1fdmFjdXVt X2Nvc3RfbGltaXQ8L2xpdGVyYWw+IHN0b3JhZ2UgcGFyYW1ldGVycyBoYXZlIGJlZW4gc2V0CiAg ICAgYXJlIG5vdCBjb25zaWRlcmVkIGluIHRoZSBiYWxhbmNpbmcgYWxnb3JpdGhtLgorICAgIFBh cmFsbGVsIHdvcmtlcnMgbGF1bmNoZWQgZm9yIDx4cmVmIGxpbmtlbmQ9InBhcmFsbGVsLXZhY3V1 bSIvPiBhcmUgdXNpbmcKKyAgICB0aGUgc2FtZSBjb3N0IGRlbGF5IHBhcmFtZXRlcnMgYXMgdGhl IGxlYWRlciB3b3JrZXIuIElmIGFueSBvZiB0aGVzZQorICAgIHBhcmFtZXRlcnMgYXJlIGNoYW5n ZWQgaW4gdGhlIGxlYWRlciB3b3JrZXIsIGl0IHdpbGwgcHJvcGFnYXRlIHRoZSBuZXcKKyAgICBw YXJhbWV0ZXIgdmFsdWVzIHRvIGFsbCBvZiBpdHMgcGFyYWxsZWwgd29ya2Vycy4KICAgIDwvcGFy YT4KIAogICAgPHBhcmE+CkBAIC0xMTY2LDYgKzExNzAsMzQgQEAgYW5hbHl6ZSB0aHJlc2hvbGQg PSBhbmFseXplIGJhc2UgdGhyZXNob2xkICsgYW5hbHl6ZSBzY2FsZSBmYWN0b3IgKiBudW1iZXIg b2YgdHUKICAgICA8L3BhcmE+CiAgICA8L3NlY3QzPgogICA8L3NlY3QyPgorCisgIDxzZWN0MiBp ZD0icGFyYWxsZWwtdmFjdXVtIiB4cmVmbGFiZWw9IlBhcmFsbGVsIFZhY3V1bSI+CisgICA8dGl0 bGU+UGFyYWxsZWwgVmFjdXVtPC90aXRsZT4KKworICAgPHBhcmE+CisgICAgPGNvbW1hbmQ+VkFD VVVNPC9jb21tYW5kPiBjYW4gcGVyZm9ybSBpbmRleCB2YWN1dW1pbmcgYW5kIGluZGV4IGNsZWFu dXAKKyAgICBwaGFzZXMgaW4gcGFyYWxsZWwgdXNpbmcgYmFja2dyb3VuZCB3b3JrZXJzIChmb3Ig dGhlIGRldGFpbHMgb2YgZWFjaAorICAgIHZhY3V1bSBwaGFzZSwgcGxlYXNlIHJlZmVyIHRvIDx4 cmVmIGxpbmtlbmQ9InZhY3V1bS1waGFzZXMiLz4pLiBUaGUKKyAgICBkZWdyZWUgb2YgcGFyYWxs ZWxpc20gaXMgZGV0ZXJtaW5lZCBieSB0aGUgbnVtYmVyIG9mIGluZGV4ZXMgb24gdGhlCisgICAg cmVsYXRpb24gdGhhdCBzdXBwb3J0IHBhcmFsbGVsIHZhY3V1bSwgbGltaXRlZCBieSB0aGUgPGxp dGVyYWw+UEFSQUxMRUw8L2xpdGVyYWw+CisgICAgKGZvciBtYW51YWwgPGNvbW1hbmQ+VkFDVVVN PC9jb21tYW5kPikgb3IgdGhlCisgICAgPHhyZWYgbGlua2VuZD0iZ3VjLWF1dG92YWN1dW0tbWF4 LXBhcmFsbGVsLXdvcmtlcnMiLz4gcGFyYW1ldGVycyAoZm9yCisgICAgYXV0b3ZhY3V1bSkuCisg ICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIEFuIGluZGV4IGNhbiBwYXJ0aWNpcGF0ZSBpbiBw YXJhbGxlbCB2YWN1dW0gaWYgYW5kIG9ubHkgaWYgdGhlIHNpemUgb2YgdGhlCisgICAgaW5kZXgg aXMgbW9yZSB0aGFuIDx4cmVmIGxpbmtlbmQ9Imd1Yy1taW4tcGFyYWxsZWwtaW5kZXgtc2Nhbi1z aXplIi8+LgorICAgIFBsZWFzZSBub3RlIHRoYXQgaXQgaXMgbm90IGd1YXJhbnRlZWQgdGhhdCB0 aGUgbnVtYmVyIG9mIHBhcmFsbGVsIHdvcmtlcnMKKyAgICBzcGVjaWZpZWQgaW4gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmludGVnZXI8L3JlcGxhY2VhYmxlPiB3aWxsIGJlCisgICAg dXNlZCBkdXJpbmcgZXhlY3V0aW9uLiAgSXQgaXMgcG9zc2libGUgZm9yIGEgdmFjdXVtIHRvIHJ1 biB3aXRoIGZld2VyCisgICAgd29ya2VycyB0aGFuIHNwZWNpZmllZCwgb3IgZXZlbiB3aXRoIG5v IHdvcmtlcnMgYXQgYWxsLiAgT25seSBvbmUgd29ya2VyCisgICAgY2FuIGJlIHVzZWQgcGVyIGlu ZGV4LiAgU28gcGFyYWxsZWwgd29ya2VycyBhcmUgbGF1bmNoZWQgb25seSB3aGVuIHRoZXJlCisg ICAgYXJlIGF0IGxlYXN0IDxsaXRlcmFsPjI8L2xpdGVyYWw+IGluZGV4ZXMgaW4gdGhlIHRhYmxl LiAgV29ya2VycyBmb3IKKyAgICB2YWN1dW0gYXJlIGxhdW5jaGVkIGJlZm9yZSB0aGUgc3RhcnQg b2YgZWFjaCBwaGFzZSBhbmQgZXhpdCBhdCB0aGUgZW5kIG9mCisgICAgdGhlIHBoYXNlLiAgVGhl c2UgYmVoYXZpb3JzIG1pZ2h0IGNoYW5nZSBpbiBhIGZ1dHVyZSByZWxlYXNlLgorICAgPC9wYXJh PgorICA8L3NlY3QyPgogIDwvc2VjdDE+CiAKIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwK aW5kZXggODA4MjliMjM5NDUuLmUzNDI1ODVjN2YwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxl LnNnbWwKQEAgLTE3MzgsNiArMTczOCwyMiBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAg IDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICA8dmFybGlzdGVudHJ5IGlkPSJy ZWxvcHRpb24tYXV0b3ZhY3V1bS1wYXJhbGxlbC13b3JrZXJzIiB4cmVmbGFiZWw9ImF1dG92YWN1 dW1fcGFyYWxsZWxfd29ya2VycyI+CisgICAgPHRlcm0+PGxpdGVyYWw+YXV0b3ZhY3V1bV9wYXJh bGxlbF93b3JrZXJzPC9saXRlcmFsPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCisgICAgPGluZGV4 dGVybT4KKyAgICAgPHByaW1hcnk+PHZhcm5hbWU+YXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJz PC92YXJuYW1lPiBzdG9yYWdlIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICA8L2luZGV4dGVybT4K KyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgUGVyLXRh YmxlIHZhbHVlIGZvciA8eHJlZiBsaW5rZW5kPSJndWMtYXV0b3ZhY3V1bS1tYXgtcGFyYWxsZWwt d29ya2VycyIvPgorICAgICAgIHBhcmFtZXRlci4gSWYgLTEgaXMgc3BlY2lmaWVkLCA8dmFybmFt ZT5hdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzPC92YXJuYW1lPgorICAgICAgIHZhbHVl IHdpbGwgYmUgdXNlZC4gSWYgc2V0IHRvIDAsIHBhcmFsbGVsIHZhY3V1bSBpcyBkaXNhYmxlZCBm b3IKKyAgICAgICB0aGlzIHRhYmxlLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAtMS4KKyAgICAgPC9w YXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3Rl bnRyeSBpZD0icmVsb3B0aW9uLWF1dG92YWN1dW0tdmFjdXVtLXRocmVzaG9sZCIgeHJlZmxhYmVs PSJhdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQiPgogICAgIDx0ZXJtPjxsaXRlcmFsPmF1dG92 YWN1dW1fdmFjdXVtX3RocmVzaG9sZDwvbGl0ZXJhbD4sIDxsaXRlcmFsPnRvYXN0LmF1dG92YWN1 dW1fdmFjdXVtX3RocmVzaG9sZDwvbGl0ZXJhbD4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQogICAg IDxpbmRleHRlcm0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3ZhY3V1bS5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi92YWN1dW0uc2dtbAppbmRleCBhYzVkMDgzZDQ2OC4uMzhlZTk3M2Vh MDUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvdmFjdXVtLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL3JlZi92YWN1dW0uc2dtbApAQCAtODEsNyArODEsNyBAQCBWQUNVVU0gWyAoIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkg XSBbIDxyZQogICAgaXMgbm90IG9idGFpbmVkLiAgSG93ZXZlciwgZXh0cmEgc3BhY2UgaXMgbm90 IHJldHVybmVkIHRvIHRoZSBvcGVyYXRpbmcKICAgIHN5c3RlbSAoaW4gbW9zdCBjYXNlcyk7IGl0 J3MganVzdCBrZXB0IGF2YWlsYWJsZSBmb3IgcmUtdXNlIHdpdGhpbiB0aGUKICAgIHNhbWUgdGFi bGUuICBJdCBhbHNvIGFsbG93cyB1cyB0byBsZXZlcmFnZSBtdWx0aXBsZSBDUFVzIGluIG9yZGVy IHRvIHByb2Nlc3MKLSAgIGluZGV4ZXMuICBUaGlzIGZlYXR1cmUgaXMga25vd24gYXMgPGZpcnN0 dGVybT5wYXJhbGxlbCB2YWN1dW08L2ZpcnN0dGVybT4uCisgICBpbmRleGVzLiAgVGhpcyBmZWF0 dXJlIGlzIGtub3duIGFzIDxmaXJzdHRlcm0+PHhyZWYgbGlua2VuZD0icGFyYWxsZWwtdmFjdXVt Ii8+PC9maXJzdHRlcm0+LgogICAgVG8gZGlzYWJsZSB0aGlzIGZlYXR1cmUsIG9uZSBjYW4gdXNl IDxsaXRlcmFsPlBBUkFMTEVMPC9saXRlcmFsPiBvcHRpb24gYW5kCiAgICBzcGVjaWZ5IHBhcmFs bGVsIHdvcmtlcnMgYXMgemVyby4gIDxjb21tYW5kPlZBQ1VVTSBGVUxMPC9jb21tYW5kPiByZXdy aXRlcwogICAgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgdGFibGUgaW50byBhIG5ldyBkaXNr IGZpbGUgd2l0aCBubyBleHRyYSBzcGFjZSwKQEAgLTI2NiwyNCArMjY2LDkgQEAgVkFDVVVNIFsg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywg Li4uXSApIF0gWyA8cmUKICAgICA8dGVybT48bGl0ZXJhbD5QQVJBTExFTDwvbGl0ZXJhbD48L3Rl cm0+CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KLSAgICAgIFBlcmZvcm0gaW5kZXggdmFj dXVtIGFuZCBpbmRleCBjbGVhbnVwIHBoYXNlcyBvZiA8Y29tbWFuZD5WQUNVVU08L2NvbW1hbmQ+ Ci0gICAgICBpbiBwYXJhbGxlbCB1c2luZyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ aW50ZWdlcjwvcmVwbGFjZWFibGU+Ci0gICAgICBiYWNrZ3JvdW5kIHdvcmtlcnMgKGZvciB0aGUg ZGV0YWlscyBvZiBlYWNoIHZhY3V1bSBwaGFzZSwgcGxlYXNlCi0gICAgICByZWZlciB0byA8eHJl ZiBsaW5rZW5kPSJ2YWN1dW0tcGhhc2VzIi8+KS4gIFRoZSBudW1iZXIgb2Ygd29ya2VycyB1c2Vk Ci0gICAgICB0byBwZXJmb3JtIHRoZSBvcGVyYXRpb24gaXMgZXF1YWwgdG8gdGhlIG51bWJlciBv ZiBpbmRleGVzIG9uIHRoZQotICAgICAgcmVsYXRpb24gdGhhdCBzdXBwb3J0IHBhcmFsbGVsIHZh Y3V1bSB3aGljaCBpcyBsaW1pdGVkIGJ5IHRoZSBudW1iZXIgb2YKLSAgICAgIHdvcmtlcnMgc3Bl Y2lmaWVkIHdpdGggPGxpdGVyYWw+UEFSQUxMRUw8L2xpdGVyYWw+IG9wdGlvbiBpZiBhbnkgd2hp Y2ggaXMKLSAgICAgIGZ1cnRoZXIgbGltaXRlZCBieSA8eHJlZiBsaW5rZW5kPSJndWMtbWF4LXBh cmFsbGVsLW1haW50ZW5hbmNlLXdvcmtlcnMiLz4uCi0gICAgICBBbiBpbmRleCBjYW4gcGFydGlj aXBhdGUgaW4gcGFyYWxsZWwgdmFjdXVtIGlmIGFuZCBvbmx5IGlmIHRoZSBzaXplIG9mIHRoZQot ICAgICAgaW5kZXggaXMgbW9yZSB0aGFuIDx4cmVmIGxpbmtlbmQ9Imd1Yy1taW4tcGFyYWxsZWwt aW5kZXgtc2Nhbi1zaXplIi8+LgotICAgICAgUGxlYXNlIG5vdGUgdGhhdCBpdCBpcyBub3QgZ3Vh cmFudGVlZCB0aGF0IHRoZSBudW1iZXIgb2YgcGFyYWxsZWwgd29ya2VycwotICAgICAgc3BlY2lm aWVkIGluIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbnRlZ2VyPC9yZXBsYWNlYWJs ZT4gd2lsbCBiZQotICAgICAgdXNlZCBkdXJpbmcgZXhlY3V0aW9uLiAgSXQgaXMgcG9zc2libGUg Zm9yIGEgdmFjdXVtIHRvIHJ1biB3aXRoIGZld2VyCi0gICAgICB3b3JrZXJzIHRoYW4gc3BlY2lm aWVkLCBvciBldmVuIHdpdGggbm8gd29ya2VycyBhdCBhbGwuICBPbmx5IG9uZSB3b3JrZXIKLSAg ICAgIGNhbiBiZSB1c2VkIHBlciBpbmRleC4gIFNvIHBhcmFsbGVsIHdvcmtlcnMgYXJlIGxhdW5j aGVkIG9ubHkgd2hlbiB0aGVyZQotICAgICAgYXJlIGF0IGxlYXN0IDxsaXRlcmFsPjI8L2xpdGVy YWw+IGluZGV4ZXMgaW4gdGhlIHRhYmxlLiAgV29ya2VycyBmb3IKLSAgICAgIHZhY3V1bSBhcmUg bGF1bmNoZWQgYmVmb3JlIHRoZSBzdGFydCBvZiBlYWNoIHBoYXNlIGFuZCBleGl0IGF0IHRoZSBl bmQgb2YKLSAgICAgIHRoZSBwaGFzZS4gIFRoZXNlIGJlaGF2aW9ycyBtaWdodCBjaGFuZ2UgaW4g YSBmdXR1cmUgcmVsZWFzZS4gIFRoaXMKKyAgICAgIFNwZWNpZmllcyB0aGUgbWF4aW11bSBudW1i ZXIgb2YgcGFyYWxsZWwgd29ya2VycyB0aGF0IGNhbiBiZSB1c2VkCisgICAgICBmb3IgPHhyZWYg bGlua2VuZD0icGFyYWxsZWwtdmFjdXVtIi8+LCB3aGljaCBpcyBmdXJ0aGVyIGxpbWl0ZWQKKyAg ICAgIGJ5IDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxsZWwtbWFpbnRlbmFuY2Utd29ya2Vy cyIvPi4gVGhpcwogICAgICAgb3B0aW9uIGNhbid0IGJlIHVzZWQgd2l0aCB0aGUgPGxpdGVyYWw+ RlVMTDwvbGl0ZXJhbD4gb3B0aW9uLgogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMKaW5kZXggYjQxZWFmZDc2OTEuLjNlODMy YzM3OTdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3JlbG9wdGlvbnMu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3JlbG9wdGlvbnMuYwpAQCAtMjM2LDYg KzIzNiwxNSBAQCBzdGF0aWMgcmVsb3B0X2ludCBpbnRSZWxPcHRzW10gPQogCQl9LAogCQlTUEdJ U1RfREVGQVVMVF9GSUxMRkFDVE9SLCBTUEdJU1RfTUlOX0ZJTExGQUNUT1IsIDEwMAogCX0sCisJ eworCQl7CisJCQkiYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzIiwKKwkJCSJNYXhpbXVtIG51 bWJlciBvZiBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMgdGhhdCBjYW4gYmUgdXNlZCBmb3Ig cHJvY2Vzc2luZyB0aGlzIHRhYmxlLiIsCisJCQlSRUxPUFRfS0lORF9IRUFQLAorCQkJU2hhcmVV cGRhdGVFeGNsdXNpdmVMb2NrCisJCX0sCisJCS0xLCAtMSwgMTAyNAorCX0sCiAJewogCQl7CiAJ CQkiYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkIiwKQEAgLTE5NjksNiArMTk3OCw4IEBAIGRl ZmF1bHRfcmVsb3B0aW9ucyhEYXR1bSByZWxvcHRpb25zLCBib29sIHZhbGlkYXRlLCByZWxvcHRf a2luZCBraW5kKQogCQl7ImZpbGxmYWN0b3IiLCBSRUxPUFRfVFlQRV9JTlQsIG9mZnNldG9mKFN0 ZFJkT3B0aW9ucywgZmlsbGZhY3Rvcil9LAogCQl7ImF1dG92YWN1dW1fZW5hYmxlZCIsIFJFTE9Q VF9UWVBFX0JPT0wsCiAJCW9mZnNldG9mKFN0ZFJkT3B0aW9ucywgYXV0b3ZhY3V1bSkgKyBvZmZz ZXRvZihBdXRvVmFjT3B0cywgZW5hYmxlZCl9LAorCQl7ImF1dG92YWN1dW1fcGFyYWxsZWxfd29y a2VycyIsIFJFTE9QVF9UWVBFX0lOVCwKKwkJb2Zmc2V0b2YoU3RkUmRPcHRpb25zLCBhdXRvdmFj dXVtKSArIG9mZnNldG9mKEF1dG9WYWNPcHRzLCBhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMp fSwKIAkJeyJhdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQiLCBSRUxPUFRfVFlQRV9JTlQsCiAJ CW9mZnNldG9mKFN0ZFJkT3B0aW9ucywgYXV0b3ZhY3V1bSkgKyBvZmZzZXRvZihBdXRvVmFjT3B0 cywgdmFjdXVtX3RocmVzaG9sZCl9LAogCQl7ImF1dG92YWN1dW1fdmFjdXVtX21heF90aHJlc2hv bGQiLCBSRUxPUFRfVFlQRV9JTlQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5k ZXggODhjNzFjZDg1YjYuLjM5Mzk1YWVkMGQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCkBAIC0xNTIsNiArMTUyLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9yZWFkX3N0cmVhbS5o IgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0aWxzL2xz eXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3BnX3J1c2FnZS5oIgogI2luY2x1ZGUgInV0aWxz L3RpbWVzdGFtcC5oIgpAQCAtODYyLDYgKzg2MywxNyBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRp b24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAlsYXp5X2NoZWNrX3dyYXBhcm91 bmRfZmFpbHNhZmUodmFjcmVsKTsKIAlkZWFkX2l0ZW1zX2FsbG9jKHZhY3JlbCwgcGFyYW1zLT5u d29ya2Vycyk7CiAKKyNpZmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5UUworCisJLyoKKwkgKiBVc2Vk IGJ5IHRlc3RzIHRvIHBhdXNlIGJlZm9yZSBwYXJhbGxlbCB2YWN1dW0gaXMgbGF1bmNoZWQsIGFs bG93aW5nCisJICogdGVzdCBjb2RlIHRvIG1vZGlmeSBjb25maWd1cmF0aW9uIHRoYXQgdGhlIGxl YWRlciB0aGVuIHByb3BhZ2F0ZXMgdG8KKwkgKiB3b3JrZXJzLgorCSAqLworCWlmIChBbUF1dG9W YWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYgUGFyYWxsZWxWYWN1dW1Jc0FjdGl2ZSh2YWNyZWwpKQor CQlJTkpFQ1RJT05fUE9JTlQoImF1dG92YWN1dW0tc3RhcnQtcGFyYWxsZWwtdmFjdXVtIiwgTlVM TCk7CisjZW5kaWYKKwogCS8qCiAJICogQ2FsbCBsYXp5X3NjYW5faGVhcCB0byBwZXJmb3JtIGFs bCByZXF1aXJlZCBoZWFwIHBydW5pbmcsIGluZGV4CiAJICogdmFjdXVtaW5nLCBhbmQgaGVhcCB2 YWN1dW1pbmcgKHBsdXMgcmVsYXRlZCBwcm9jZXNzaW5nKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwppbmRl eCAwZWQzNjNkMWM4NS4uNjJkMDNjOGUxOTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCkBAIC0yNDM1 LDggKzI0MzUsMTkgQEAgdmFjdXVtX2RlbGF5X3BvaW50KGJvb2wgaXNfYW5hbHl6ZSkKIAkvKiBB bHdheXMgY2hlY2sgZm9yIGludGVycnVwdHMgKi8KIAlDSEVDS19GT1JfSU5URVJSVVBUUygpOwog Ci0JaWYgKEludGVycnVwdFBlbmRpbmcgfHwKLQkJKCFWYWN1dW1Db3N0QWN0aXZlICYmICFDb25m aWdSZWxvYWRQZW5kaW5nKSkKKwlpZiAoSW50ZXJydXB0UGVuZGluZykKKwkJcmV0dXJuOworCisJ aWYgKElzUGFyYWxsZWxXb3JrZXIoKSkKKwl7CisJCS8qCisJCSAqIFVwZGF0ZSBjb3N0LWJhc2Vk IHZhY3V1bSBkZWxheSBwYXJhbWV0ZXJzIGZvciBhIHBhcmFsbGVsIGF1dG92YWN1dW0KKwkJICog d29ya2VyIGlmIGFueSBjaGFuZ2VzIGFyZSBkZXRlY3RlZC4KKwkJICovCisJCXBhcmFsbGVsX3Zh Y3V1bV91cGRhdGVfc2hhcmVkX2RlbGF5X3BhcmFtcygpOworCX0KKworCWlmICghVmFjdXVtQ29z dEFjdGl2ZSAmJiAhQ29uZmlnUmVsb2FkUGVuZGluZykKIAkJcmV0dXJuOwogCiAJLyoKQEAgLTI0 NTAsNiArMjQ2MSwxMiBAQCB2YWN1dW1fZGVsYXlfcG9pbnQoYm9vbCBpc19hbmFseXplKQogCQlD b25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CiAJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdI VVApOwogCQlWYWN1dW1VcGRhdGVDb3N0cygpOworCisJCS8qCisJCSAqIFByb3BhZ2F0ZSBjb3N0 LWJhc2VkIHZhY3V1bSBkZWxheSBwYXJhbWV0ZXJzIHRvIHNoYXJlZCBtZW1vcnkgaWYKKwkJICog YW55IG9mIHRoZW0gaGF2ZSBjaGFuZ2VkIGR1cmluZyB0aGUgY29uZmlnIHJlbG9hZC4KKwkJICov CisJCXBhcmFsbGVsX3ZhY3V1bV9wcm9wYWdhdGVfc2hhcmVkX2RlbGF5X3BhcmFtcygpOwogCX0K IAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwppbmRleCA3NzgzNGI5NmEy MS4uNjgzYTBmMzRlMjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBh cmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwpAQCAt MSw3ICsxLDkgQEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKICAqIHZhY3V1bXBhcmFsbGVsLmMK LSAqCSAgU3VwcG9ydCByb3V0aW5lcyBmb3IgcGFyYWxsZWwgdmFjdXVtIGV4ZWN1dGlvbi4KKyAq CSAgU3VwcG9ydCByb3V0aW5lcyBmb3IgcGFyYWxsZWwgdmFjdXVtIGFuZCBhdXRvdmFjdXVtIGV4 ZWN1dGlvbi4gSW4gdGhlCisgKgkgIGNvbW1lbnRzIGJlbG93LCB0aGUgd29yZCAidmFjdXVtIiB3 aWxsIHJlZmVyIHRvIGJvdGggdmFjdXVtIGFuZAorICoJICBhdXRvdmFjdXVtLgogICoKICAqIFRo aXMgZmlsZSBjb250YWlucyByb3V0aW5lcyB0aGF0IGFyZSBpbnRlbmRlZCB0byBzdXBwb3J0IHNl dHRpbmcgdXAsIHVzaW5nLAogICogYW5kIHRlYXJpbmcgZG93biBhIFBhcmFsbGVsVmFjdXVtU3Rh dGUuCkBAIC0xNiw2ICsxOCwxMyBAQAogICogdGhlIHBhcmFsbGVsIGNvbnRleHQgaXMgcmUtaW5p dGlhbGl6ZWQgc28gdGhhdCB0aGUgc2FtZSBEU00gY2FuIGJlIHVzZWQgZm9yCiAgKiBtdWx0aXBs ZSBwYXNzZXMgb2YgaW5kZXggYnVsay1kZWxldGlvbiBhbmQgaW5kZXggY2xlYW51cC4KICAqCisg KiBGb3IgcGFyYWxsZWwgYXV0b3ZhY3V1bSwgd2UgbmVlZCB0byBwcm9wYWdhdGUgY29zdC1iYXNl ZCB2YWN1dW0gZGVsYXkKKyAqIHBhcmFtZXRlcnMgZnJvbSB0aGUgbGVhZGVyIHRvIGl0cyB3b3Jr ZXJzLCBhcyB0aGUgbGVhZGVyJ3MgcGFyYW1ldGVycyBjYW4KKyAqIGNoYW5nZSBldmVuIHdoaWxl IHByb2Nlc3NpbmcgYSB0YWJsZSAoZS5nLiwgZHVlIHRvIGEgY29uZmlnIHJlbG9hZCkuCisgKiBU aGUgUFZTaGFyZWRDb3N0UGFyYW1zIHN0cnVjdCBtYW5hZ2VzIHRoZXNlIHBhcmFtZXRlcnMgdXNp bmcgYQorICogZ2VuZXJhdGlvbiBjb3VudGVyLiBFYWNoIHBhcmFsbGVsIHdvcmtlciBwb2xscyB0 aGlzIHNoYXJlZCBzdGF0ZSBhbmQKKyAqIHJlZnJlc2hlcyBpdHMgbG9jYWwgZGVsYXkgcGFyYW1l dGVycyB3aGVuZXZlciBhIGNoYW5nZSBpcyBkZXRlY3RlZC4KKyAqCiAgKiBQb3J0aW9ucyBDb3B5 cmlnaHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAK ICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0 eSBvZiBDYWxpZm9ybmlhCiAgKgpAQCAtMzcsNiArNDYsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2Uv YnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAidGNvcC90Y29w cHJvdC5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0 aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCkBAIC01MSw2ICs2MSwz MyBAQAogI2RlZmluZSBQQVJBTExFTF9WQUNVVU1fS0VZX1dBTF9VU0FHRQkJNAogI2RlZmluZSBQ QVJBTExFTF9WQUNVVU1fS0VZX0lOREVYX1NUQVRTCQk1CiAKKy8qCisgKiBTdHJ1Y3QgZm9yIGNv c3QtYmFzZWQgdmFjdXVtIGRlbGF5IHJlbGF0ZWQgcGFyYW1ldGVycyB0byBzaGFyZSBhbW9uZyBh bgorICogYXV0b3ZhY3V1bSB3b3JrZXIgYW5kIGl0cyBwYXJhbGxlbCB2YWN1dW0gd29ya2Vycy4K KyAqLwordHlwZWRlZiBzdHJ1Y3QgUFZTaGFyZWRDb3N0UGFyYW1zCit7CisJLyoKKwkgKiBUaGUg Z2VuZXJhdGlvbiBjb3VudGVyIGlzIGluY3JlbWVudGVkIGJ5IHRoZSBsZWFkZXIgcHJvY2VzcyBl YWNoIHRpbWUKKwkgKiBpdCB1cGRhdGVzIHRoZSBzaGFyZWQgY29zdC1iYXNlZCB2YWN1dW0gZGVs YXkgcGFyYW1ldGVycy4gUGFyYWxsZWwKKwkgKiB2YWN1dW0gd29ya2VycyBjb21wYXJlcyBpdCB3 aXRoIHRoZWlyIGxvY2FsIGdlbmVyYXRpb24sCisJICogc2hhcmVkX3BhcmFtc19nZW5lcmF0aW9u X2xvY2FsLCB0byBkZXRlY3Qgd2hldGhlciB0aGV5IG5lZWQgdG8gcmVmcmVzaAorCSAqIHRoZWly IGxvY2FsIHBhcmFtZXRlcnMuIFRoZSBnZW5lcmF0aW9uIHN0YXJ0cyBmcm9tIDEgc28gdGhhdCBh IGZyZXNobHkKKwkgKiBzdGFydGVkIHdvcmtlciAod2hvc2UgbG9jYWwgY29weSBpcyAwKSB3aWxs IGFsd2F5cyBsb2FkIHRoZSBpbml0aWFsCisJICogcGFyYW1ldGVycyBvbiBpdHMgZmlyc3QgY2hl Y2suCisJICovCisJcGdfYXRvbWljX3VpbnQzMiBnZW5lcmF0aW9uOworCisJc2xvY2tfdAkJbXV0 ZXg7CQkJLyogcHJvdGVjdHMgYWxsIGZpZWxkcyBiZWxvdyAqLworCisJLyogUGFyYW1ldGVycyB0 byBzaGFyZSB3aXRoIHBhcmFsbGVsIHdvcmtlcnMgKi8KKwlkb3VibGUJCWNvc3RfZGVsYXk7CisJ aW50CQkJY29zdF9saW1pdDsKKwlpbnQJCQljb3N0X3BhZ2VfZGlydHk7CisJaW50CQkJY29zdF9w YWdlX2hpdDsKKwlpbnQJCQljb3N0X3BhZ2VfbWlzczsKK30gUFZTaGFyZWRDb3N0UGFyYW1zOwor CiAvKgogICogU2hhcmVkIGluZm9ybWF0aW9uIGFtb25nIHBhcmFsbGVsIHdvcmtlcnMuICBTbyB0 aGlzIGlzIGFsbG9jYXRlZCBpbiB0aGUgRFNNCiAgKiBzZWdtZW50LgpAQCAtMTIwLDYgKzE1Nywx OCBAQCB0eXBlZGVmIHN0cnVjdCBQVlNoYXJlZAogCiAJLyogU3RhdGlzdGljcyBvZiBzaGFyZWQg ZGVhZCBpdGVtcyAqLwogCVZhY0RlYWRJdGVtc0luZm8gZGVhZF9pdGVtc19pbmZvOworCisJLyoK KwkgKiBJZiAndHJ1ZScgdGhlbiB3ZSBhcmUgcnVubmluZyBwYXJhbGxlbCBhdXRvdmFjdXVtLiBP dGhlcndpc2UsIHdlIGFyZQorCSAqIHJ1bm5pbmcgcGFyYWxsZWwgbWFpbnRlbmFuY2UgVkFDVVVN LgorCSAqLworCWJvb2wJCWlzX2F1dG92YWN1dW07CisKKwkvKgorCSAqIENvc3QtYmFzZWQgdmFj dXVtIGRlbGF5IHBhcmFtZXRlcnMgc2hhcmVkIGJldHdlZW4gdGhlIGF1dG92YWN1dW0gbGVhZGVy CisJICogYW5kIGl0cyBwYXJhbGxlbCB3b3JrZXJzLgorCSAqLworCVBWU2hhcmVkQ29zdFBhcmFt cyBjb3N0X3BhcmFtczsKIH0gUFZTaGFyZWQ7CiAKIC8qIFN0YXR1cyB1c2VkIGR1cmluZyBwYXJh bGxlbCBpbmRleCB2YWN1dW0gb3IgY2xlYW51cCAqLwpAQCAtMjIyLDYgKzI3MSwxNyBAQCBzdHJ1 Y3QgUGFyYWxsZWxWYWN1dW1TdGF0ZQogCVBWSW5kVmFjU3RhdHVzIHN0YXR1czsKIH07CiAKK3N0 YXRpYyBQVlNoYXJlZENvc3RQYXJhbXMgKnB2X3NoYXJlZF9jb3N0X3BhcmFtcyA9IE5VTEw7CisK Ky8qCisgKiBXb3JrZXItbG9jYWwgY29weSBvZiB0aGUgbGFzdCBjb3N0LXBhcmFtZXRlciBnZW5l cmF0aW9uIHRoaXMgd29ya2VyIGhhcworICogYXBwbGllZC4gIEluaXRpYWxpemVkIHRvIDA7IHNp bmNlIHRoZSBsZWFkZXIgaW5pdGlhbGl6ZXMgdGhlIHNoYXJlZAorICogZ2VuZXJhdGlvbiBjb3Vu dGVyIHRvIDEsIHRoZSBmaXJzdCBjYWxsIHRvCisgKiBwYXJhbGxlbF92YWN1dW1fdXBkYXRlX3No YXJlZF9kZWxheV9wYXJhbXMoKSB3aWxsIGFsd2F5cyBkZXRlY3QgYQorICogbWlzbWF0Y2ggYW5k IHJlYWQgdGhlIGluaXRpYWwgcGFyYW1ldGVycyBmcm9tIHNoYXJlZCBtZW1vcnkuCisgKi8KK3N0 YXRpYyB1aW50MzIgc2hhcmVkX3BhcmFtc19nZW5lcmF0aW9uX2xvY2FsID0gMDsKKwogc3RhdGlj IGludAlwYXJhbGxlbF92YWN1dW1fY29tcHV0ZV93b3JrZXJzKFJlbGF0aW9uICppbmRyZWxzLCBp bnQgbmluZGV4ZXMsIGludCBucmVxdWVzdGVkLAogCQkJCQkJCQkJCQlib29sICp3aWxsX3BhcmFs bGVsX3ZhY3V1bSk7CiBzdGF0aWMgdm9pZCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5k ZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGludCBudW1faW5kZXhfc2NhbnMsCkBAIC0y MzMsNiArMjkzLDcgQEAgc3RhdGljIHZvaWQgcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nfb25lX2lu ZGV4KFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgUmVsYXRpb24KIHN0YXRpYyBib29sIHBhcmFs bGVsX3ZhY3V1bV9pbmRleF9pc19wYXJhbGxlbF9zYWZlKFJlbGF0aW9uIGluZHJlbCwgaW50IG51 bV9pbmRleF9zY2FucywKIAkJCQkJCQkJCQkJCSAgIGJvb2wgdmFjdXVtKTsKIHN0YXRpYyB2b2lk IHBhcmFsbGVsX3ZhY3V1bV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOworc3RhdGljIGlubGlu ZSB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9zZXRfY29zdF9wYXJhbWV0ZXJzKFBWU2hhcmVkQ29zdFBh cmFtcyAqcGFyYW1zKTsKIAogLyoKICAqIFRyeSB0byBlbnRlciBwYXJhbGxlbCBtb2RlIGFuZCBj cmVhdGUgYSBwYXJhbGxlbCBjb250ZXh0LiAgVGhlbiBpbml0aWFsaXplCkBAIC0zNzQsOCArNDM1 LDkgQEAgcGFyYWxsZWxfdmFjdXVtX2luaXQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiAqaW5kcmVs cywgaW50IG5pbmRleGVzLAogCXNoYXJlZC0+cXVlcnlpZCA9IHBnc3RhdF9nZXRfbXlfcXVlcnlf aWQoKTsKIAlzaGFyZWQtPm1haW50ZW5hbmNlX3dvcmtfbWVtX3dvcmtlciA9CiAJCShuaW5kZXhl c19td20gPiAwKSA/Ci0JCW1haW50ZW5hbmNlX3dvcmtfbWVtIC8gTWluKHBhcmFsbGVsX3dvcmtl cnMsIG5pbmRleGVzX213bSkgOgotCQltYWludGVuYW5jZV93b3JrX21lbTsKKwkJdmFjX3dvcmtf bWVtIC8gTWluKHBhcmFsbGVsX3dvcmtlcnMsIG5pbmRleGVzX213bSkgOgorCQl2YWNfd29ya19t ZW07CisKIAlzaGFyZWQtPmRlYWRfaXRlbXNfaW5mby5tYXhfYnl0ZXMgPSB2YWNfd29ya19tZW0g KiAoc2l6ZV90KSAxMDI0OwogCiAJLyogUHJlcGFyZSBEU0Egc3BhY2UgZm9yIGRlYWQgaXRlbXMg Ki8KQEAgLTM5Miw2ICs0NTQsMjEgQEAgcGFyYWxsZWxfdmFjdXVtX2luaXQoUmVsYXRpb24gcmVs LCBSZWxhdGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLAogCXBnX2F0b21pY19pbml0X3UzMigm KHNoYXJlZC0+YWN0aXZlX253b3JrZXJzKSwgMCk7CiAJcGdfYXRvbWljX2luaXRfdTMyKCYoc2hh cmVkLT5pZHgpLCAwKTsKIAorCXNoYXJlZC0+aXNfYXV0b3ZhY3V1bSA9IEFtQXV0b1ZhY3V1bVdv cmtlclByb2Nlc3MoKTsKKworCS8qCisJICogSW5pdGlhbGl6ZSBzaGFyZWQgY29zdC1iYXNlZCB2 YWN1dW0gZGVsYXkgcGFyYW1ldGVycyBpZiBpdCdzIGZvcgorCSAqIGF1dG92YWN1dW0uCisJICov CisJaWYgKHNoYXJlZC0+aXNfYXV0b3ZhY3V1bSkKKwl7CisJCXBhcmFsbGVsX3ZhY3V1bV9zZXRf Y29zdF9wYXJhbWV0ZXJzKCZzaGFyZWQtPmNvc3RfcGFyYW1zKTsKKwkJcGdfYXRvbWljX2luaXRf dTMyKCZzaGFyZWQtPmNvc3RfcGFyYW1zLmdlbmVyYXRpb24sIDEpOworCQlTcGluTG9ja0luaXQo JnNoYXJlZC0+Y29zdF9wYXJhbXMubXV0ZXgpOworCisJCXB2X3NoYXJlZF9jb3N0X3BhcmFtcyA9 ICYoc2hhcmVkLT5jb3N0X3BhcmFtcyk7CisJfQorCiAJc2htX3RvY19pbnNlcnQocGN4dC0+dG9j LCBQQVJBTExFTF9WQUNVVU1fS0VZX1NIQVJFRCwgc2hhcmVkKTsKIAlwdnMtPnNoYXJlZCA9IHNo YXJlZDsKIApAQCAtNDU3LDYgKzUzNCw5IEBAIHBhcmFsbGVsX3ZhY3V1bV9lbmQoUGFyYWxsZWxW YWN1dW1TdGF0ZSAqcHZzLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKippc3RhdHMpCiAJRGVzdHJv eVBhcmFsbGVsQ29udGV4dChwdnMtPnBjeHQpOwogCUV4aXRQYXJhbGxlbE1vZGUoKTsKIAorCWlm IChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkpCisJCXB2X3NoYXJlZF9jb3N0X3BhcmFtcyA9 IE5VTEw7CisKIAlwZnJlZShwdnMtPndpbGxfcGFyYWxsZWxfdmFjdXVtKTsKIAlwZnJlZShwdnMp OwogfQpAQCAtNTM0LDYgKzYxNCwxMDMgQEAgcGFyYWxsZWxfdmFjdXVtX2NsZWFudXBfYWxsX2lu ZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBsb25nIG51bV90YWJsZV90dXAKIAlwYXJh bGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhwdnMsIG51bV9pbmRleF9zY2FucywgZmFs c2UsIHdzdGF0cyk7CiB9CiAKKy8qCisgKiBGaWxsIGluIHRoZSBnaXZlbiBzdHJ1Y3R1cmUgd2l0 aCBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSBwYXJhbWV0ZXIgdmFsdWVzLgorICovCitzdGF0aWMg aW5saW5lIHZvaWQKK3BhcmFsbGVsX3ZhY3V1bV9zZXRfY29zdF9wYXJhbWV0ZXJzKFBWU2hhcmVk Q29zdFBhcmFtcyAqcGFyYW1zKQoreworCXBhcmFtcy0+Y29zdF9kZWxheSA9IHZhY3V1bV9jb3N0 X2RlbGF5OworCXBhcmFtcy0+Y29zdF9saW1pdCA9IHZhY3V1bV9jb3N0X2xpbWl0OworCXBhcmFt cy0+Y29zdF9wYWdlX2RpcnR5ID0gVmFjdXVtQ29zdFBhZ2VEaXJ0eTsKKwlwYXJhbXMtPmNvc3Rf cGFnZV9oaXQgPSBWYWN1dW1Db3N0UGFnZUhpdDsKKwlwYXJhbXMtPmNvc3RfcGFnZV9taXNzID0g VmFjdXVtQ29zdFBhZ2VNaXNzOworfQorCisvKgorICogVXBkYXRlcyB0aGUgY29zdC1iYXNlZCB2 YWN1dW0gZGVsYXkgcGFyYW1ldGVycyBmb3IgcGFyYWxsZWwgYXV0b3ZhY3V1bQorICogd29ya2Vy cy4KKyAqCisgKiBGb3Igbm9uLWF1dG92YWN1dW0gcGFyYWxsZWwgd29ya2VycywgdGhpcyBmdW5j dGlvbiB3aWxsIGhhdmUgbm8gZWZmZWN0LgorICovCit2b2lkCitwYXJhbGxlbF92YWN1dW1fdXBk YXRlX3NoYXJlZF9kZWxheV9wYXJhbXModm9pZCkKK3sKKwl1aW50MzIJCXBhcmFtc19nZW5lcmF0 aW9uOworCisJQXNzZXJ0KElzUGFyYWxsZWxXb3JrZXIoKSk7CisKKwkvKiBRdWljayByZXR1cm4g aWYgdGhlIHdvcmtlciBpcyBub3QgcnVubmluZyBmb3IgdGhlIGF1dG92YWN1dW0gKi8KKwlpZiAo cHZfc2hhcmVkX2Nvc3RfcGFyYW1zID09IE5VTEwpCisJCXJldHVybjsKKworCXBhcmFtc19nZW5l cmF0aW9uID0gcGdfYXRvbWljX3JlYWRfdTMyKCZwdl9zaGFyZWRfY29zdF9wYXJhbXMtPmdlbmVy YXRpb24pOworCUFzc2VydChzaGFyZWRfcGFyYW1zX2dlbmVyYXRpb25fbG9jYWwgPD0gcGFyYW1z X2dlbmVyYXRpb24pOworCisJLyogUmV0dXJuIGlmIHBhcmFtZXRlcnMgaGFkIG5vdCBjaGFuZ2Vk IGluIHRoZSBsZWFkZXIgKi8KKwlpZiAocGFyYW1zX2dlbmVyYXRpb24gPT0gc2hhcmVkX3BhcmFt c19nZW5lcmF0aW9uX2xvY2FsKQorCQlyZXR1cm47CisKKwlTcGluTG9ja0FjcXVpcmUoJnB2X3No YXJlZF9jb3N0X3BhcmFtcy0+bXV0ZXgpOworCVZhY3V1bUNvc3REZWxheSA9IHB2X3NoYXJlZF9j b3N0X3BhcmFtcy0+Y29zdF9kZWxheTsKKwlWYWN1dW1Db3N0TGltaXQgPSBwdl9zaGFyZWRfY29z dF9wYXJhbXMtPmNvc3RfbGltaXQ7CisJVmFjdXVtQ29zdFBhZ2VEaXJ0eSA9IHB2X3NoYXJlZF9j b3N0X3BhcmFtcy0+Y29zdF9wYWdlX2RpcnR5OworCVZhY3V1bUNvc3RQYWdlSGl0ID0gcHZfc2hh cmVkX2Nvc3RfcGFyYW1zLT5jb3N0X3BhZ2VfaGl0OworCVZhY3V1bUNvc3RQYWdlTWlzcyA9IHB2 X3NoYXJlZF9jb3N0X3BhcmFtcy0+Y29zdF9wYWdlX21pc3M7CisJU3BpbkxvY2tSZWxlYXNlKCZw dl9zaGFyZWRfY29zdF9wYXJhbXMtPm11dGV4KTsKKworCVZhY3V1bVVwZGF0ZUNvc3RzKCk7CisK KwlzaGFyZWRfcGFyYW1zX2dlbmVyYXRpb25fbG9jYWwgPSBwYXJhbXNfZ2VuZXJhdGlvbjsKKwor CWVsb2coREVCVUcyLAorCQkgInBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VyIHVwZGF0ZWQgY29z dCBwYXJhbXM6IGNvc3RfbGltaXQ9JWQsIGNvc3RfZGVsYXk9JWcsIGNvc3RfcGFnZV9taXNzPSVk LCBjb3N0X3BhZ2VfZGlydHk9JWQsIGNvc3RfcGFnZV9oaXQ9JWQiLAorCQkgdmFjdXVtX2Nvc3Rf bGltaXQsCisJCSB2YWN1dW1fY29zdF9kZWxheSwKKwkJIFZhY3V1bUNvc3RQYWdlTWlzcywKKwkJ IFZhY3V1bUNvc3RQYWdlRGlydHksCisJCSBWYWN1dW1Db3N0UGFnZUhpdCk7Cit9CisKKy8qCisg KiBTdG9yZSB0aGUgY29zdC1iYXNlZCB2YWN1dW0gZGVsYXkgcGFyYW1ldGVycyBpbiB0aGUgc2hh cmVkIG1lbW9yeSBzbyB0aGF0CisgKiBwYXJhbGxlbCB2YWN1dW0gd29ya2VycyBjYW4gY29uc3Vt ZSB0aGVtIChzZWUKKyAqIHBhcmFsbGVsX3ZhY3V1bV91cGRhdGVfc2hhcmVkX2RlbGF5X3BhcmFt cygpKS4KKyAqLwordm9pZAorcGFyYWxsZWxfdmFjdXVtX3Byb3BhZ2F0ZV9zaGFyZWRfZGVsYXlf cGFyYW1zKHZvaWQpCit7CisJQXNzZXJ0KEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSk7CisK KwkvKgorCSAqIFF1aWNrIHJldHVybiBpZiB0aGUgbGVhZGVyIHByb2Nlc3MgaXMgbm90IHNoYXJp bmcgdGhlIGRlbGF5IHBhcmFtZXRlcnMuCisJICovCisJaWYgKHB2X3NoYXJlZF9jb3N0X3BhcmFt cyA9PSBOVUxMKQorCQlyZXR1cm47CisKKwkvKgorCSAqIENoZWNrIGlmIGFueSBkZWxheSBwYXJh bWV0ZXJzIGhhdmUgY2hhbmdlZC4gV2UgY2FuIHJlYWQgdGhlbSB3aXRob3V0CisJICogbG9ja3Mg YXMgb25seSB0aGUgbGVhZGVyIGNhbiBtb2RpZnkgdGhlbS4KKwkgKi8KKwlpZiAodmFjdXVtX2Nv c3RfZGVsYXkgPT0gcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5jb3N0X2RlbGF5ICYmCisJCXZhY3V1 bV9jb3N0X2xpbWl0ID09IHB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+Y29zdF9saW1pdCAmJgorCQlW YWN1dW1Db3N0UGFnZURpcnR5ID09IHB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+Y29zdF9wYWdlX2Rp cnR5ICYmCisJCVZhY3V1bUNvc3RQYWdlSGl0ID09IHB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+Y29z dF9wYWdlX2hpdCAmJgorCQlWYWN1dW1Db3N0UGFnZU1pc3MgPT0gcHZfc2hhcmVkX2Nvc3RfcGFy YW1zLT5jb3N0X3BhZ2VfbWlzcykKKwkJcmV0dXJuOworCisJLyogVXBkYXRlIHRoZSBzaGFyZWQg ZGVsYXkgcGFyYW1ldGVycyAqLworCVNwaW5Mb2NrQWNxdWlyZSgmcHZfc2hhcmVkX2Nvc3RfcGFy YW1zLT5tdXRleCk7CisJcGFyYWxsZWxfdmFjdXVtX3NldF9jb3N0X3BhcmFtZXRlcnMocHZfc2hh cmVkX2Nvc3RfcGFyYW1zKTsKKwlTcGluTG9ja1JlbGVhc2UoJnB2X3NoYXJlZF9jb3N0X3BhcmFt cy0+bXV0ZXgpOworCisJLyoKKwkgKiBJbmNyZW1lbnQgdGhlIGdlbmVyYXRpb24gb2YgdGhlIHBh cmFtZXRlcnMsIGkuZS4gbGV0IHBhcmFsbGVsIHdvcmtlcnMKKwkgKiBrbm93IHRoYXQgdGhleSBz aG91bGQgcmUtcmVhZCBzaGFyZWQgY29zdCBwYXJhbXMuCisJICovCisJcGdfYXRvbWljX2ZldGNo X2FkZF91MzIoJnB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+Z2VuZXJhdGlvbiwgMSk7Cit9CisKIC8q CiAgKiBDb21wdXRlIHRoZSBudW1iZXIgb2YgcGFyYWxsZWwgd29ya2VyIHByb2Nlc3NlcyB0byBy ZXF1ZXN0LiAgQm90aCBpbmRleAogICogdmFjdXVtIGFuZCBpbmRleCBjbGVhbnVwIGNhbiBiZSBl eGVjdXRlZCB3aXRoIHBhcmFsbGVsIHdvcmtlcnMuCkBAIC01NTUsMTIgKzczMiwxNyBAQCBwYXJh bGxlbF92YWN1dW1fY29tcHV0ZV93b3JrZXJzKFJlbGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4 ZXMsIGludCBucmVxdWVzdGVkLAogCWludAkJCW5pbmRleGVzX3BhcmFsbGVsX2J1bGtkZWwgPSAw OwogCWludAkJCW5pbmRleGVzX3BhcmFsbGVsX2NsZWFudXAgPSAwOwogCWludAkJCXBhcmFsbGVs X3dvcmtlcnM7CisJaW50CQkJbWF4X3dvcmtlcnM7CisKKwltYXhfd29ya2VycyA9IEFtQXV0b1Zh Y3V1bVdvcmtlclByb2Nlc3MoKSA/CisJCWF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMg OgorCQltYXhfcGFyYWxsZWxfbWFpbnRlbmFuY2Vfd29ya2VyczsKIAogCS8qCiAJICogV2UgZG9u J3QgYWxsb3cgcGVyZm9ybWluZyBwYXJhbGxlbCBvcGVyYXRpb24gaW4gc3RhbmRhbG9uZSBiYWNr ZW5kIG9yCiAJICogd2hlbiBwYXJhbGxlbGlzbSBpcyBkaXNhYmxlZC4KIAkgKi8KLQlpZiAoIUlz VW5kZXJQb3N0bWFzdGVyIHx8IG1heF9wYXJhbGxlbF9tYWludGVuYW5jZV93b3JrZXJzID09IDAp CisJaWYgKCFJc1VuZGVyUG9zdG1hc3RlciB8fCBtYXhfd29ya2VycyA9PSAwKQogCQlyZXR1cm4g MDsKIAogCS8qCkBAIC01OTksOCArNzgxLDggQEAgcGFyYWxsZWxfdmFjdXVtX2NvbXB1dGVfd29y a2VycyhSZWxhdGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLCBpbnQgbnJlcXVlc3RlZCwKIAlw YXJhbGxlbF93b3JrZXJzID0gKG5yZXF1ZXN0ZWQgPiAwKSA/CiAJCU1pbihucmVxdWVzdGVkLCBu aW5kZXhlc19wYXJhbGxlbCkgOiBuaW5kZXhlc19wYXJhbGxlbDsKIAotCS8qIENhcCBieSBtYXhf cGFyYWxsZWxfbWFpbnRlbmFuY2Vfd29ya2VycyAqLwotCXBhcmFsbGVsX3dvcmtlcnMgPSBNaW4o cGFyYWxsZWxfd29ya2VycywgbWF4X3BhcmFsbGVsX21haW50ZW5hbmNlX3dvcmtlcnMpOworCS8q IENhcCBieSBHVUMgdmFyaWFibGUgKi8KKwlwYXJhbGxlbF93b3JrZXJzID0gTWluKHBhcmFsbGVs X3dvcmtlcnMsIG1heF93b3JrZXJzKTsKIAogCXJldHVybiBwYXJhbGxlbF93b3JrZXJzOwogfQpA QCAtNzMwLDYgKzkxMiwxNiBAQCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhQ YXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGludCBudW1faW5kZXhfc2NhbgogCQkJCQkJCXB2cy0+ cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQsIG53b3JrZXJzKSkpOwogCX0KIAorI2lmZGVmIFVTRV9J TkpFQ1RJT05fUE9JTlRTCisKKwkvKgorCSAqIFVzZWQgYnkgdGVzdHMgdG8gcGF1c2UgYWZ0ZXIg d29ya2VycyBhcmUgbGF1bmNoZWQgYnV0IGJlZm9yZSBpbmRleAorCSAqIHZhY3V1bWluZyBiZWdp bnMuCisJICovCisJaWYgKEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAmJiBud29ya2VycyA+ IDApCisJCUlOSkVDVElPTl9QT0lOVCgiYXV0b3ZhY3V1bS1sZWFkZXItYmVmb3JlLWluZGV4ZXMt cHJvY2Vzc2luZyIsIE5VTEwpOworI2VuZGlmCisKIAkvKiBWYWN1dW0gdGhlIGluZGV4ZXMgdGhh dCBjYW4gYmUgcHJvY2Vzc2VkIGJ5IG9ubHkgbGVhZGVyIHByb2Nlc3MgKi8KIAlwYXJhbGxlbF92 YWN1dW1fcHJvY2Vzc191bnNhZmVfaW5kZXhlcyhwdnMpOwogCkBAIC0xMDY0LDcgKzEyNTYsMjEg QEAgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQog CQkJCQkJCQlzaGFyZWQtPmRlYWRfaXRlbXNfaGFuZGxlKTsKIAogCS8qIFNldCBjb3N0LWJhc2Vk IHZhY3V1bSBkZWxheSAqLwotCVZhY3V1bVVwZGF0ZUNvc3RzKCk7CisJaWYgKHNoYXJlZC0+aXNf YXV0b3ZhY3V1bSkKKwl7CisJCS8qCisJCSAqIFBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VycyBp bml0aWFsaXplIGNvc3QtYmFzZWQgZGVsYXkgcGFyYW1ldGVycworCQkgKiBmcm9tIHRoZSBsZWFk ZXIncyBzaGFyZWQgc3RhdGUgcmF0aGVyIHRoYW4gR1VDIGRlZmF1bHRzLCBiZWNhdXNlCisJCSAq IHRoZSBsZWFkZXIgbWF5IGhhdmUgYXBwbGllZCBwZXItdGFibGUgb3IgYXV0b3ZhY3V1bS1zcGVj aWZpYworCQkgKiBvdmVycmlkZXMuICBwdl9zaGFyZWRfY29zdF9wYXJhbXMgbXVzdCBiZSBzZXQg YmVmb3JlIGNhbGxpbmcKKwkJICogcGFyYWxsZWxfdmFjdXVtX3VwZGF0ZV9zaGFyZWRfZGVsYXlf cGFyYW1zKCkuCisJCSAqLworCQlwdl9zaGFyZWRfY29zdF9wYXJhbXMgPSAmKHNoYXJlZC0+Y29z dF9wYXJhbXMpOworCQlwYXJhbGxlbF92YWN1dW1fdXBkYXRlX3NoYXJlZF9kZWxheV9wYXJhbXMo KTsKKwl9CisJZWxzZQorCQlWYWN1dW1VcGRhdGVDb3N0cygpOworCiAJVmFjdXVtQ29zdEJhbGFu Y2UgPSAwOwogCVZhY3V1bUNvc3RCYWxhbmNlTG9jYWwgPSAwOwogCVZhY3V1bVNoYXJlZENvc3RC YWxhbmNlID0gJihzaGFyZWQtPmNvc3RfYmFsYW5jZSk7CkBAIC0xMTE5LDYgKzEzMjUsOSBAQCBw YXJhbGxlbF92YWN1dW1fbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJdmFj X2Nsb3NlX2luZGV4ZXMobmluZGV4ZXMsIGluZHJlbHMsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCXRh YmxlX2Nsb3NlKHJlbCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKIAlGcmVlQWNjZXNzU3Ry YXRlZ3kocHZzLmJzdHJhdGVneSk7CisKKwlpZiAoc2hhcmVkLT5pc19hdXRvdmFjdXVtKQorCQlw dl9zaGFyZWRfY29zdF9wYXJhbXMgPSBOVUxMOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1 dG92YWN1dW0uYwppbmRleCA2Njk0ZjQ4NTIxNi4uODc4YTExYTZiNGIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvYXV0b3ZhY3V1bS5jCkBAIC0xNjg4LDcgKzE2ODgsNyBAQCBWYWN1dW1VcGRhdGVDb3N0 cyh2b2lkKQogCX0KIAllbHNlCiAJewotCQkvKiBNdXN0IGJlIGV4cGxpY2l0IFZBQ1VVTSBvciBB TkFMWVpFICovCisJCS8qIE11c3QgYmUgZXhwbGljaXQgVkFDVVVNIG9yIEFOQUxZWkUgb3IgcGFy YWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXIgKi8KIAkJdmFjdXVtX2Nvc3RfZGVsYXkgPSBWYWN1dW1D b3N0RGVsYXk7CiAJCXZhY3V1bV9jb3N0X2xpbWl0ID0gVmFjdXVtQ29zdExpbWl0OwogCX0KQEAg LTI5MjgsOCArMjkyOCw2IEBAIHRhYmxlX3JlY2hlY2tfYXV0b3ZhYyhPaWQgcmVsaWQsIEhUQUIg KnRhYmxlX3RvYXN0X21hcCwKIAkJICovCiAJCXRhYi0+YXRfcGFyYW1zLmluZGV4X2NsZWFudXAg PSBWQUNPUFRWQUxVRV9VTlNQRUNJRklFRDsKIAkJdGFiLT5hdF9wYXJhbXMudHJ1bmNhdGUgPSBW QUNPUFRWQUxVRV9VTlNQRUNJRklFRDsKLQkJLyogQXMgb2Ygbm93LCB3ZSBkb24ndCBzdXBwb3J0 IHBhcmFsbGVsIHZhY3V1bSBmb3IgYXV0b3ZhY3V1bSAqLwotCQl0YWItPmF0X3BhcmFtcy5ud29y a2VycyA9IC0xOwogCQl0YWItPmF0X3BhcmFtcy5mcmVlemVfbWluX2FnZSA9IGZyZWV6ZV9taW5f YWdlOwogCQl0YWItPmF0X3BhcmFtcy5mcmVlemVfdGFibGVfYWdlID0gZnJlZXplX3RhYmxlX2Fn ZTsKIAkJdGFiLT5hdF9wYXJhbXMubXVsdGl4YWN0X2ZyZWV6ZV9taW5fYWdlID0gbXVsdGl4YWN0 X2ZyZWV6ZV9taW5fYWdlOwpAQCAtMjkzOSw2ICsyOTM3LDI3IEBAIHRhYmxlX3JlY2hlY2tfYXV0 b3ZhYyhPaWQgcmVsaWQsIEhUQUIgKnRhYmxlX3RvYXN0X21hcCwKIAkJdGFiLT5hdF9wYXJhbXMu bG9nX2FuYWx5emVfbWluX2R1cmF0aW9uID0gbG9nX2FuYWx5emVfbWluX2R1cmF0aW9uOwogCQl0 YWItPmF0X3BhcmFtcy50b2FzdF9wYXJlbnQgPSBJbnZhbGlkT2lkOwogCisJCS8qIERldGVybWlu ZSB0aGUgbnVtYmVyIG9mIHBhcmFsbGVsIHZhY3V1bSB3b3JrZXJzIHRvIHVzZSAqLworCQl0YWIt PmF0X3BhcmFtcy5ud29ya2VycyA9IDA7CisJCWlmIChhdm9wdHMpCisJCXsKKwkJCWlmIChhdm9w dHMtPmF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VycyA9PSAwKQorCQkJeworCQkJCS8qCisJCQkJ ICogRGlzYWJsZSBwYXJhbGxlbCB2YWN1dW0sIGlmIHRoZSByZWxvcHRpb24gc2V0cyB0aGUgcGFy YWxsZWwKKwkJCQkgKiBkZWdyZWUgYXMgemVyby4KKwkJCQkgKi8KKwkJCQl0YWItPmF0X3BhcmFt cy5ud29ya2VycyA9IC0xOworCQkJfQorCQkJZWxzZSBpZiAoYXZvcHRzLT5hdXRvdmFjdXVtX3Bh cmFsbGVsX3dvcmtlcnMgPiAwKQorCQkJCXRhYi0+YXRfcGFyYW1zLm53b3JrZXJzID0gYXZvcHRz LT5hdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnM7CisKKwkJCS8qCisJCQkgKiBhdXRvdmFjdXVt X3BhcmFsbGVsX3dvcmtlcnMgPT0gLTEgZmFsbHMgdGhyb3VnaCwga2VlcAorCQkJICogbndvcmtl cnM9MAorCQkJICovCisJCX0KKwogCQkvKgogCQkgKiBMYXRlciwgaW4gdmFjdXVtX3JlbCgpLCB3 ZSBjaGVjayByZWxvcHRpb25zIGZvciBhbnkKIAkJICogdmFjdXVtX21heF9lYWdlcl9mcmVlemVf ZmFpbHVyZV9yYXRlIG92ZXJyaWRlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5p dC9nbG9iYWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYwppbmRleCAzNmFk NzA4YjM2MC4uMjRkZGIyNzZmMGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQv Z2xvYmFscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCkBAIC0xNDMs NiArMTQzLDcgQEAgaW50CQkJTkJ1ZmZlcnMgPSAxNjM4NDsKIGludAkJCU1heENvbm5lY3Rpb25z ID0gMTAwOwogaW50CQkJbWF4X3dvcmtlcl9wcm9jZXNzZXMgPSA4OwogaW50CQkJbWF4X3BhcmFs bGVsX3dvcmtlcnMgPSA4OworaW50CQkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA9 IDA7CiBpbnQJCQlNYXhCYWNrZW5kcyA9IDA7CiAKIC8qIEdVQyBwYXJhbWV0ZXJzIGZvciB2YWN1 dW0gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Yy5jCmluZGV4IGUxNTQ2ZDljOTdhLi4xNTA0OGFhOWU1NiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Yy5jCkBAIC0zMzU4LDkgKzMzNTgsMTQgQEAgc2V0X2NvbmZpZ193aXRoX2hh bmRsZShjb25zdCBjaGFyICpuYW1lLCBjb25maWdfaGFuZGxlICpoYW5kbGUsCiAJICoKIAkgKiBB bHNvIGFsbG93IG5vcm1hbCBzZXR0aW5nIGlmIHRoZSBHVUMgaXMgbWFya2VkIEdVQ19BTExPV19J Tl9QQVJBTExFTC4KIAkgKgotCSAqIE90aGVyIGNoYW5nZXMgbWlnaHQgbmVlZCB0byBhZmZlY3Qg b3RoZXIgd29ya2Vycywgc28gZm9yYmlkIHRoZW0uCisJICogT3RoZXIgY2hhbmdlcyBtaWdodCBu ZWVkIHRvIGFmZmVjdCBvdGhlciB3b3JrZXJzLCBzbyBmb3JiaWQgdGhlbS4gTm90ZSwKKwkgKiB0 aGF0IHBhcmFsbGVsIGF1dG92YWN1dW0gbGVhZGVyIGlzIGFuIGV4Y2VwdGlvbiBiZWNhdXNlIG9u bHkgY29zdC1iYXNlZAorCSAqIGRlbGF5cyBuZWVkIHRvIGJlIGFmZmVjdGVkIHRvIHBhcmFsbGVs IGF1dG92YWN1dW0gd29ya2Vycy4gVGhlc2UKKwkgKiBwYXJhbWV0ZXJzIGFyZSBwcm9wYWdhdGVk IHRvIGl0cyB3b3JrZXJzIGR1cmluZyBwYXJhbGxlbCB2YWN1dW0gKHNlZQorCSAqIHZhY3V1bXBh cmFsbGVsLmMgZm9yIGRldGFpbHMpLgogCSAqLwotCWlmIChJc0luUGFyYWxsZWxNb2RlKCkgJiYg Y2hhbmdlVmFsICYmIGFjdGlvbiAhPSBHVUNfQUNUSU9OX1NBVkUgJiYKKwlpZiAoSXNJblBhcmFs bGVsTW9kZSgpICYmICFBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYgY2hhbmdlVmFsICYm CisJCWFjdGlvbiAhPSBHVUNfQUNUSU9OX1NBVkUgJiYKIAkJKHJlY29yZC0+ZmxhZ3MgJiBHVUNf QUxMT1dfSU5fUEFSQUxMRUwpID09IDApCiAJewogCQllcmVwb3J0KGVsZXZlbCwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0IGIvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKaW5kZXggMGE4NjI2OTNmY2QuLjZlZjQ2 ZDg4MTU1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJz LmRhdAorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdApAQCAt MTcwLDYgKzE3MCwxNCBAQAogICBtYXggPT4gJzEwLjAnLAogfSwKIAoreyBuYW1lID0+ICdhdXRv dmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzJywgdHlwZSA9PiAnaW50JywgY29udGV4dCA9PiAn UEdDX1NJR0hVUCcsIGdyb3VwID0+ICdWQUNVVU1fQVVUT1ZBQ1VVTScsCisgIHNob3J0X2Rlc2Mg PT4gJ01heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIHdvcmtlcnMgdGhhdCBjYW4gYmUgdXNlZCBi eSBhIHNpbmdsZSBhdXRvdmFjdXVtIHdvcmtlci4nLAorICB2YXJpYWJsZSA9PiAnYXV0b3ZhY3V1 bV9tYXhfcGFyYWxsZWxfd29ya2VycycsCisgIGJvb3RfdmFsID0+ICcwJywKKyAgbWluID0+ICcw JywKKyAgbWF4ID0+ICdNQVhfUEFSQUxMRUxfV09SS0VSX0xJTUlUJywKK30sCisKIHsgbmFtZSA9 PiAnYXV0b3ZhY3V1bV9tYXhfd29ya2VycycsIHR5cGUgPT4gJ2ludCcsIGNvbnRleHQgPT4gJ1BH Q19TSUdIVVAnLCBncm91cCA9PiAnVkFDVVVNX0FVVE9WQUNVVU0nLAogICBzaG9ydF9kZXNjID0+ ICdTZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzaW11bHRhbmVvdXNseSBydW5uaW5nIGF1dG92 YWN1dW0gd29ya2VyIHByb2Nlc3Nlcy4nLAogICB2YXJpYWJsZSA9PiAnYXV0b3ZhY3V1bV9tYXhf d29ya2VycycsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwu Y29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1w bGUKaW5kZXggY2YxNTU5NzM4NWIuLjczYzQ5ZjA5YWVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC03MTMsNiArNzEzLDcgQEAKICNhdXRv dmFjdXVtX3dvcmtlcl9zbG90cyA9IDE2ICAgICAgICAgICAjIGF1dG92YWN1dW0gd29ya2VyIHNs b3RzIHRvIGFsbG9jYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQpCiAjYXV0b3ZhY3V1bV9tYXhfd29ya2VycyA9IDMg ICAgICAgICAgICAgIyBtYXggbnVtYmVyIG9mIGF1dG92YWN1dW0gc3VicHJvY2Vzc2VzCisjYXV0 b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA9IDAgICAgIyBsaW1pdGVkIGJ5IG1heF9wYXJh bGxlbF93b3JrZXJzCiAjYXV0b3ZhY3V1bV9uYXB0aW1lID0gMW1pbiAgICAgICAgICAgICAgIyB0 aW1lIGJldHdlZW4gYXV0b3ZhY3V1bSBydW5zCiAjYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xk ID0gNTAgICAgICAgIyBtaW4gbnVtYmVyIG9mIHJvdyB1cGRhdGVzIGJlZm9yZQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdmFjdXVtCmRpZmYgLS1naXQgYS9zcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmlu LmMKaW5kZXggNTNiZjFlMjE3MjEuLjFkOTQxYzExOTk3IDEwMDY0NAotLS0gYS9zcmMvYmluL3Bz cWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5j CkBAIC0xNDMyLDYgKzE0MzIsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgdGFibGVfc3Rv cmFnZV9wYXJhbWV0ZXJzW10gPSB7CiAJImF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhf YWdlIiwKIAkiYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX21pbl9hZ2UiLAogCSJhdXRvdmFj dXVtX211bHRpeGFjdF9mcmVlemVfdGFibGVfYWdlIiwKKwkiYXV0b3ZhY3V1bV9wYXJhbGxlbF93 b3JrZXJzIiwKIAkiYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9kZWxheSIsCiAJImF1dG92YWN1dW1f dmFjdXVtX2Nvc3RfbGltaXQiLAogCSJhdXRvdmFjdXVtX3ZhY3V1bV9pbnNlcnRfc2NhbGVfZmFj dG9yIiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oIGIvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKaW5kZXggNWI4MDIzNjE2YzAuLjY5ZmVjMDc0OTFiIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaAorKysgYi9zcmMvaW5jbHVk ZS9jb21tYW5kcy92YWN1dW0uaApAQCAtNDIyLDYgKzQyMiw4IEBAIGV4dGVybiB2b2lkIHBhcmFs bGVsX3ZhY3V1bV9jbGVhbnVwX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywK IAkJCQkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMsCiAJCQkJCQkJCQkJCQlib29sIGVzdGlt YXRlZF9jb3VudCwKIAkJCQkJCQkJCQkJCVBWV29ya2VyU3RhdHMgKndzdGF0cyk7CitleHRlcm4g dm9pZCBwYXJhbGxlbF92YWN1dW1fdXBkYXRlX3NoYXJlZF9kZWxheV9wYXJhbXModm9pZCk7Citl eHRlcm4gdm9pZCBwYXJhbGxlbF92YWN1dW1fcHJvcGFnYXRlX3NoYXJlZF9kZWxheV9wYXJhbXMo dm9pZCk7CiBleHRlcm4gdm9pZCBwYXJhbGxlbF92YWN1dW1fbWFpbihkc21fc2VnbWVudCAqc2Vn LCBzaG1fdG9jICp0b2MpOwogCiAvKiBpbiBjb21tYW5kcy9hbmFseXplLmMgKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKaW5k ZXggMDRmMjk3NDhiZTcuLjNlYWE0NjU1Yzg4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9taXNj YWRtaW4uaAorKysgYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaApAQCAtMTc4LDYgKzE3OCw3IEBA IGV4dGVybiBQR0RMTElNUE9SVCBpbnQgTWF4QmFja2VuZHM7CiBleHRlcm4gUEdETExJTVBPUlQg aW50IE1heENvbm5lY3Rpb25zOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfd29ya2VyX3By b2Nlc3NlczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3BhcmFsbGVsX3dvcmtlcnM7Citl eHRlcm4gUEdETExJTVBPUlQgaW50IGF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnM7CiAK IGV4dGVybiBQR0RMTElNUE9SVCBpbnQgY29tbWl0X3RpbWVzdGFtcF9idWZmZXJzOwogZXh0ZXJu IFBHRExMSU1QT1JUIGludCBtdWx0aXhhY3RfbWVtYmVyX2J1ZmZlcnM7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS91dGlscy9yZWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCmluZGV4IDIz NjgzMGY2YjkzLi5jZDFlOTJmMjMwMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVs LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKQEAgLTMxMSw2ICszMTEsOCBAQCB0eXBl ZGVmIHN0cnVjdCBGb3JlaWduS2V5Q2FjaGVJbmZvCiB0eXBlZGVmIHN0cnVjdCBBdXRvVmFjT3B0 cwogewogCWJvb2wJCWVuYWJsZWQ7CisKKwlpbnQJCQlhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtl cnM7CiAJaW50CQkJdmFjdXVtX3RocmVzaG9sZDsKIAlpbnQJCQl2YWN1dW1fbWF4X3RocmVzaG9s ZDsKIAlpbnQJCQl2YWN1dW1faW5zX3RocmVzaG9sZDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21v ZHVsZXMvTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlCmluZGV4IDI4Y2UzYjM1 ZWRhLi4zMzZhMjEyZmFmNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZQor KysgYi9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlCkBAIC0xNiw2ICsxNiw3IEBAIFNVQkRJUlMg PSBcCiAJCSAgcGxzYW1wbGUgXAogCQkgIHNwZ2lzdF9uYW1lX29wcyBcCiAJCSAgdGVzdF9haW8g XAorCQkgIHRlc3RfYXV0b3ZhY3V1bSBcCiAJCSAgdGVzdF9iaW5hcnloZWFwIFwKIAkJICB0ZXN0 X2JpdG1hcHNldCBcCiAJCSAgdGVzdF9ibG9vbWZpbHRlciBcCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZAppbmRl eCAzYWMyOTE2NTZjMS4uOTI5NjU5OTU2Y2IgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMv bWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZApAQCAtMTYsNiAr MTYsNyBAQCBzdWJkaXIoJ3Bsc2FtcGxlJykKIHN1YmRpcignc3BnaXN0X25hbWVfb3BzJykKIHN1 YmRpcignc3NsX3Bhc3NwaHJhc2VfY2FsbGJhY2snKQogc3ViZGlyKCd0ZXN0X2FpbycpCitzdWJk aXIoJ3Rlc3RfYXV0b3ZhY3V1bScpCiBzdWJkaXIoJ3Rlc3RfYmluYXJ5aGVhcCcpCiBzdWJkaXIo J3Rlc3RfYml0bWFwc2V0JykKIHN1YmRpcigndGVzdF9ibG9vbWZpbHRlcicpCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS8uZ2l0aWdub3JlIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uNzE2ZTE3ZjVhMmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsMiBAQAorIyBH ZW5lcmF0ZWQgc3ViZGlyZWN0b3JpZXMKKy90bXBfY2hlY2svCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9hdXRvdmFjdXVtL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi4xODhlYzlmOTZhMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9hdXRvdmFjdXVtL01ha2VmaWxlCkBAIC0wLDAgKzEsMjAgQEAKKyMgc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2F1dG92YWN1dW0vTWFrZWZpbGUKKworUEdGSUxFREVTQyA9ICJ0ZXN0X2F1dG92YWN1 dW0gLSB0ZXN0IGNvZGUgZm9yIHBhcmFsbGVsIGF1dG92YWN1dW0iCisKK1RBUF9URVNUUyA9IDEK KworRVhUUkFfSU5TVEFMTCA9IHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cworCitl eHBvcnQgZW5hYmxlX2luamVjdGlvbl9wb2ludHMKKworaWZkZWYgVVNFX1BHWFMKK1BHX0NPTkZJ RyA9IHBnX2NvbmZpZworUEdYUyA6PSAkKHNoZWxsICQoUEdfQ09ORklHKSAtLXBneHMpCitpbmNs dWRlICQoUEdYUykKK2Vsc2UKK3N1YmRpciA9IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFj dXVtCit0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLi8uLgoraW5jbHVkZSAkKHRvcF9idWlsZGRpcikv c3JjL01ha2VmaWxlLmdsb2JhbAoraW5jbHVkZSAkKHRvcF9zcmNkaXIpL2NvbnRyaWIvY29udHJp Yi1nbG9iYWwubWsKK2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0 b3ZhY3V1bS9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL21l c29uLmJ1aWxkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44NmUzOTJi YzBkZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVt L21lc29uLmJ1aWxkCkBAIC0wLDAgKzEsMTUgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI0LTIwMjYs IFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK3Rlc3RzICs9IHsKKyAgJ25h bWUnOiAndGVzdF9hdXRvdmFjdXVtJywKKyAgJ3NkJzogbWVzb24uY3VycmVudF9zb3VyY2VfZGly KCksCisgICdiZCc6IG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksCisgICd0YXAnOiB7CisgICAg J2Vudic6IHsKKyAgICAgICAnZW5hYmxlX2luamVjdGlvbl9wb2ludHMnOiBnZXRfb3B0aW9uKCdp bmplY3Rpb25fcG9pbnRzJykgPyAneWVzJyA6ICdubycsCisgICAgfSwKKyAgICAndGVzdHMnOiBb CisgICAgICAndC8wMDFfcGFyYWxsZWxfYXV0b3ZhY3V1bS5wbCcsCisgICAgXSwKKyAgfSwKK30K ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3QvMDAxX3BhcmFs bGVsX2F1dG92YWN1dW0ucGwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90LzAw MV9wYXJhbGxlbF9hdXRvdmFjdXVtLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi45ZTY1ZWFmYjU0OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9hdXRvdmFjdXVtL3QvMDAxX3BhcmFsbGVsX2F1dG92YWN1dW0ucGwKQEAgLTAsMCArMSwx OTcgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3Bt ZW50IEdyb3VwCisKKyMgVGVzdCBwYXJhbGxlbCBhdXRvdmFjdXVtIGJlaGF2aW9yCisKK3VzZSBz dHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7Cit1c2UgUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3Jl OworCitpZiAoJEVOVntlbmFibGVfaW5qZWN0aW9uX3BvaW50c30gbmUgJ3llcycpCit7CisJcGxh biBza2lwX2FsbCA9PiAnSW5qZWN0aW9uIHBvaW50cyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnVp bGQnOworfQorCisjIEJlZm9yZSBlYWNoIHRlc3Qgd2Ugc2hvdWxkIGRpc2FibGUgYXV0b3ZhY3V1 bSBmb3IgJ3Rlc3RfYXV0b3ZhYycgdGFibGUgYW5kCisjIGdlbmVyYXRlIHNvbWUgZGVhZCB0dXBs ZXMgaW4gaXQuIFJldHVybnMgdGhlIGN1cnJlbnQgYXV0b3ZhY3V1bV9jb3VudCBvZgorIyB0aGUg dGFibGUgdGVzdF9hdXRvdmFjLgorc3ViIHByZXBhcmVfZm9yX25leHRfdGVzdAoreworCW15ICgk bm9kZSwgJHRlc3RfbnVtYmVyKSA9IEBfOworCisJJG5vZGUtPnNhZmVfcHNxbCgKKwkJJ3Bvc3Rn cmVzJywgcXF7CisJCUFMVEVSIFRBQkxFIHRlc3RfYXV0b3ZhYyBTRVQgKGF1dG92YWN1dW1fZW5h YmxlZCA9IGZhbHNlKTsKKwkJVVBEQVRFIHRlc3RfYXV0b3ZhYyBTRVQgY29sXzEgPSAkdGVzdF9u dW1iZXI7CisJfSk7CisKKwlteSAkY291bnQgPSAkbm9kZS0+c2FmZV9wc3FsKAorCQkncG9zdGdy ZXMnLCBxcXsKKwkJU0VMRUNUIGF1dG92YWN1dW1fY291bnQgRlJPTSBwZ19zdGF0X3VzZXJfdGFi bGVzIFdIRVJFIHJlbG5hbWUgPSAndGVzdF9hdXRvdmFjJworCX0pOworCisJcmV0dXJuICRjb3Vu dDsKK30KKworIyBXYWl0IGZvciB0aGUgdGFibGUgdG8gYmUgdmFjdXVtZWQgYnkgYW4gYXV0b3Zh Y3V1bSB3b3JrZXIuCitzdWIgd2FpdF9mb3JfYXV0b3ZhY3V1bV9jb21wbGV0ZQoreworCW15ICgk bm9kZSwgJG9sZF9jb3VudCkgPSBAXzsKKworCSRub2RlLT5wb2xsX3F1ZXJ5X3VudGlsKAorCQkn cG9zdGdyZXMnLCBxcXsKKwkJU0VMRUNUIGF1dG92YWN1dW1fY291bnQgPiAkb2xkX2NvdW50IEZS T00gcGdfc3RhdF91c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ3Rlc3RfYXV0b3ZhYycKKwl9 KTsKK30KKworbXkgJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ21haW4n KTsKKyRub2RlLT5pbml0OworCisjIExpbWl0IHRvIG9uZSBhdXRvdmFjdXVtIHdvcmtlciBhbmQg ZGlzYWJsZSBhdXRvdmFjdXVtIGxvZ2dpbmcgZ2xvYmFsbHkKKyMgKGVuYWJsZWQgb25seSBvbiB0 aGUgdGVzdCB0YWJsZSkgc28gdGhhdCBsb2cgY2hlY2tzIGJlbG93IG1hdGNoIG9ubHkKKyMgYWN0 aXZpdHkgb24gdGhlIGV4cGVjdGVkIHRhYmxlLgorJG5vZGUtPmFwcGVuZF9jb25mKAorCSdwb3N0 Z3Jlc3FsLmNvbmYnLCBxcXsKK2F1dG92YWN1dW1fbWF4X3dvcmtlcnMgPSAxCithdXRvdmFjdXVt X3dvcmtlcl9zbG90cyA9IDEKK2F1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMgPSAyCitt YXhfd29ya2VyX3Byb2Nlc3NlcyA9IDEwCittYXhfcGFyYWxsZWxfd29ya2VycyA9IDEwCitsb2df bWluX21lc3NhZ2VzID0gZGVidWcyCithdXRvdmFjdXVtX25hcHRpbWUgPSAnMXMnCittaW5fcGFy YWxsZWxfaW5kZXhfc2Nhbl9zaXplID0gMAorbG9nX2F1dG92YWN1dW1fbWluX2R1cmF0aW9uID0g LTEKK30pOworJG5vZGUtPnN0YXJ0OworCisjIENoZWNrIGlmIHRoZSBleHRlbnNpb24gaW5qZWN0 aW9uX3BvaW50cyBpcyBhdmFpbGFibGUsIGFzIGl0IG1heSBiZQorIyBwb3NzaWJsZSB0aGF0IHRo aXMgc2NyaXB0IGlzIHJ1biB3aXRoIGluc3RhbGxjaGVjaywgd2hlcmUgdGhlIG1vZHVsZQorIyB3 b3VsZCBub3QgYmUgaW5zdGFsbGVkIGJ5IGRlZmF1bHQuCitpZiAoISRub2RlLT5jaGVja19leHRl bnNpb24oJ2luamVjdGlvbl9wb2ludHMnKSkKK3sKKwlwbGFuIHNraXBfYWxsID0+ICdFeHRlbnNp b24gaW5qZWN0aW9uX3BvaW50cyBub3QgaW5zdGFsbGVkJzsKK30KKworIyBDcmVhdGUgYWxsIGZ1 bmN0aW9ucyBuZWVkZWQgZm9yIHRlc3RpbmcKKyRub2RlLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVz JywgcXF7CisJQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOworfSk7CisKK215ICRp bmRleGVzX251bSA9IDM7CitteSAkaW5pdGlhbF9yb3dzX251bSA9IDEwXzAwMDsKK215ICRhdXRv dmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMgPSAyOworCisjIENyZWF0ZSB0YWJsZSBhbmQgZmlsbCBp dCB3aXRoIHNvbWUgZGF0YQorJG5vZGUtPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKKwlD UkVBVEUgVEFCTEUgdGVzdF9hdXRvdmFjICgKKwkJaWQgU0VSSUFMIFBSSU1BUlkgS0VZLAorCQlj b2xfMSBJTlRFR0VSLCAgY29sXzIgSU5URUdFUiwgIGNvbF8zIElOVEVHRVIsICBjb2xfNCBJTlRF R0VSCisJKSBXSVRIIChhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMgPSAkYXV0b3ZhY3V1bV9w YXJhbGxlbF93b3JrZXJzLAorCQkJbG9nX2F1dG92YWN1dW1fbWluX2R1cmF0aW9uID0gMCk7CisK KwlJTlNFUlQgSU5UTyB0ZXN0X2F1dG92YWMKKwlTRUxFQ1QKKwkJZyBBUyBjb2wxLAorCQlnICsg MSBBUyBjb2wyLAorCQlnICsgMiBBUyBjb2wzLAorCQlnICsgMyBBUyBjb2w0CisJRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgJGluaXRpYWxfcm93c19udW0pIEFTIGc7Cit9KTsKKworIyBDcmVhdGUg c3BlY2lmaWVkIG51bWJlciBvZiBiLXRyZWUgaW5kZXhlcyBvbiB0aGUgdGFibGUKKyRub2RlLT5z YWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CisJRE8gXCRcJAorCURFQ0xBUkUKKwkJaSBJTlRF R0VSOworCUJFR0lOCisJCUZPUiBpIElOIDEuLiRpbmRleGVzX251bSBMT09QCisJCQlFWEVDVVRF IGZvcm1hdCgnQ1JFQVRFIElOREVYIGlkeF9jb2xfXCVzIE9OIHRlc3RfYXV0b3ZhYyAoY29sX1wl cyk7JywgaSwgaSk7CisJCUVORCBMT09QOworCUVORCBcJFwkOworfSk7CisKKyMgVGVzdCAxIDoK KyMgT3VyIHRhYmxlIGhhcyBlbm91Z2ggaW5kZXhlcyBhbmQgYXBwcm9wcmlhdGUgcmVsb3B0aW9u cywgc28gYXV0b3ZhY3V1bSBtdXN0CisjIGJlIGFibGUgdG8gcHJvY2VzcyBpdCBpbiBwYXJhbGxl bCBtb2RlLiBKdXN0IGNoZWNrIGlmIGl0IGNhbiBkbyBpdC4KKworbXkgJGF2X2NvdW50ID0gcHJl cGFyZV9mb3JfbmV4dF90ZXN0KCRub2RlLCAxKTsKK215ICRsb2dfb2Zmc2V0ID0gLXMgJG5vZGUt PmxvZ2ZpbGU7CisKKyRub2RlLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CisJQUxURVIg VEFCTEUgdGVzdF9hdXRvdmFjIFNFVCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gdHJ1ZSk7Cit9KTsK KworIyBXYWl0IHVudGlsIHRoZSBwYXJhbGxlbCBhdXRvdmFjdXVtIG9uIHRhYmxlIGlzIGNvbXBs ZXRlZC4gQXQgdGhlIHNhbWUgdGltZSwKKyMgd2UgY2hlY2sgdGhhdCB0aGUgcmVxdWlyZWQgbnVt YmVyIG9mIHBhcmFsbGVsIHdvcmtlcnMgaGFzIGJlZW4gc3RhcnRlZC4KK3dhaXRfZm9yX2F1dG92 YWN1dW1fY29tcGxldGUoJG5vZGUsICRhdl9jb3VudCk7CitvayggJG5vZGUtPmxvZ19jb250YWlu cygKKwkJcXIvcGFyYWxsZWwgd29ya2VyczogaW5kZXggdmFjdXVtOiAyIHBsYW5uZWQsIDIgbGF1 bmNoZWQgaW4gdG90YWwvLAorCQkkbG9nX29mZnNldCkpOworCisjIFRlc3QgMjoKKyMgQ2hlY2sg d2hldGhlciBwYXJhbGxlbCBhdXRvdmFjdXVtIGxlYWRlciBjYW4gcHJvcGFnYXRlIGNvc3QtYmFz ZWQgcGFyYW1ldGVycworIyB0byB0aGUgcGFyYWxsZWwgd29ya2Vycy4KKworJGF2X2NvdW50ID0g cHJlcGFyZV9mb3JfbmV4dF90ZXN0KCRub2RlLCAyKTsKKyRsb2dfb2Zmc2V0ID0gLXMgJG5vZGUt PmxvZ2ZpbGU7CisKKyRub2RlLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CisJU0VMRUNU IGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdhdXRvdmFjdXVtLXN0YXJ0LXBhcmFsbGVsLXZhY3V1 bScsICd3YWl0Jyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdhdXRvdmFjdXVt LWxlYWRlci1iZWZvcmUtaW5kZXhlcy1wcm9jZXNzaW5nJywgJ3dhaXQnKTsKKworCUFMVEVSIFRB QkxFIHRlc3RfYXV0b3ZhYyBTRVQgKGF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VycyA9IDEsIGF1 dG92YWN1dW1fZW5hYmxlZCA9IHRydWUpOworfSk7CisKKyMgV2FpdCB1bnRpbCBwYXJhbGxlbCBh dXRvdmFjdXVtIGlzIGluaXRlZAorJG5vZGUtPndhaXRfZm9yX2V2ZW50KCdhdXRvdmFjdXVtIHdv cmtlcicsCisJJ2F1dG92YWN1dW0tc3RhcnQtcGFyYWxsZWwtdmFjdXVtJyk7CisKKyMgVXBkYXRl IHRoZSBzaGFyZWQgY29zdC1iYXNlZCBkZWxheSBwYXJhbWV0ZXJzLgorJG5vZGUtPnNhZmVfcHNx bCgKKwkncG9zdGdyZXMnLCBxcXsKKwlBTFRFUiBTWVNURU0gU0VUIHZhY3V1bV9jb3N0X2xpbWl0 ID0gNTAwOworCUFMVEVSIFNZU1RFTSBTRVQgdmFjdXVtX2Nvc3RfcGFnZV9taXNzID0gMTA7CisJ QUxURVIgU1lTVEVNIFNFVCB2YWN1dW1fY29zdF9wYWdlX2RpcnR5ID0gMTA7CisJQUxURVIgU1lT VEVNIFNFVCB2YWN1dW1fY29zdF9wYWdlX2hpdCA9IDEwOworCVNFTEVDVCBwZ19yZWxvYWRfY29u ZigpOworfSk7CisKKyMgUmVzdW1lIHRoZSBsZWFkZXIgcHJvY2VzcyB0byB1cGRhdGUgdGhlIHNo YXJlZCBwYXJhbWV0ZXJzIGR1cmluZyBoZWFwIHNjYW4gKGkuZS4KKyMgdmFjdXVtX2RlbGF5X3Bv aW50KCkgaXMgY2FsbGVkKSBhbmQgbGF1bmNoIGEgcGFyYWxsZWwgdmFjdXVtIHdvcmtlciwgYnV0 IGl0IHN0b3BzCisjIGJlZm9yZSB2YWN1dW1pbmcgaW5kZXhlcyBkdWUgdG8gdGhlIGluamVjdGlv biBwb2ludC4KKyRub2RlLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CisJU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfd2FrZXVwKCdhdXRvdmFjdXVtLXN0YXJ0LXBhcmFsbGVsLXZhY3V1bScp OworfSk7Ciskbm9kZS0+d2FpdF9mb3JfZXZlbnQoJ2F1dG92YWN1dW0gd29ya2VyJywKKwknYXV0 b3ZhY3V1bS1sZWFkZXItYmVmb3JlLWluZGV4ZXMtcHJvY2Vzc2luZycpOworCisjIENoZWNrIHdo ZXRoZXIgcGFyYWxsZWwgd29ya2VyIHN1Y2Nlc3NmdWxseSB1cGRhdGVkIGFsbCBwYXJhbWV0ZXJz IGR1cmluZworIyBpbmRleCBwcm9jZXNzaW5nCiskbm9kZS0+d2FpdF9mb3JfbG9nKAorCXFyL3Bh cmFsbGVsIGF1dG92YWN1dW0gd29ya2VyIHVwZGF0ZWQgY29zdCBwYXJhbXM6IGNvc3RfbGltaXQ9 NTAwLCBjb3N0X2RlbGF5PTIsIGNvc3RfcGFnZV9taXNzPTEwLCBjb3N0X3BhZ2VfZGlydHk9MTAs IGNvc3RfcGFnZV9oaXQ9MTAvLAorCSRsb2dfb2Zmc2V0KTsKKworJG5vZGUtPnNhZmVfcHNxbCgK KwkncG9zdGdyZXMnLCBxcXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2F1dG92 YWN1dW0tbGVhZGVyLWJlZm9yZS1pbmRleGVzLXByb2Nlc3NpbmcnKTsKK30pOworCit3YWl0X2Zv cl9hdXRvdmFjdXVtX2NvbXBsZXRlKCRub2RlLCAkYXZfY291bnQpOworCisjIENsZWFudXAKKyRu b2RlLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CisJU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfZGV0YWNoKCdhdXRvdmFjdXVtLXN0YXJ0LXBhcmFsbGVsLXZhY3V1bScpOworCVNFTEVDVCBp bmplY3Rpb25fcG9pbnRzX2RldGFjaCgnYXV0b3ZhY3V1bS1sZWFkZXItYmVmb3JlLWluZGV4ZXMt cHJvY2Vzc2luZycpOworfSk7CisKKyRub2RlLT5zdG9wOworZG9uZV90ZXN0aW5nKCk7CmRpZmYg LS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDhlOWMwNjU0N2Q2Li4zOThjM2YwOWY1OSAxMDA2NDQK LS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTIwOTgsNiArMjA5OCw3IEBAIFBWSW5kU3RhdHMKIFBW SW5kVmFjU3RhdHVzCiBQVk9JRAogUFZTaGFyZWQKK1BWU2hhcmVkQ29zdFBhcmFtcwogUFZXb3Jr ZXJVc2FnZQogUFZXb3JrZXJTdGF0cwogUFhfQWxpYXMKLS0gCjIuNDMuMAoK --0000000000007ad66f064e61411f--