Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o6Keu-0007W8-Mr for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Jun 2022 23:30:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1o6Ket-0004d1-34 for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Jun 2022 23:30:15 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o6Kes-0004ce-04 for pgsql-hackers@lists.postgresql.org; Tue, 28 Jun 2022 23:30:14 +0000 Received: from wout4-smtp.messagingengine.com ([64.147.123.20]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o6Keg-0000WO-Or for pgsql-hackers@postgresql.org; Tue, 28 Jun 2022 23:30:12 +0000 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.west.internal (Postfix) with ESMTP id 777743200684 for ; Tue, 28 Jun 2022 19:30:00 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute3.internal (MEProxy); Tue, 28 Jun 2022 19:30:00 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:sender:subject:subject:to:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; t=1656458999; x=1656545399; bh=cZZ4597EkrHrzwzs7v4W0f1KHKNh c4JPvQ3gscAyS2U=; b=BsrbWOQT/8HY61bFgAo4aBprgTPaCLNOtEXV9Y/TUBjP lVBO4k147ByzShUtV9eapsyaxRldJAAsPJzwbQPJr0kah2C2juNBfjuljNALfcRQ oZvfMUW94qDshXJ1j5YG5PbWycxwubvmUyKNRJW1Mjstx9dmHkDUhSuXiRKLU+pn EhQCoUJzOkPTgvo0vYrbTJtFUTWNqKmEyJP/SJiRtXbltfbvSn6/xWJZvztrzX+a ckTucaoS6mdBd8VchHeIfbGpFsaUkjadpEknv4W6J6twbqypyomIgSmpW3zXg+vK xmbpQcZxZnkGU4SphcDcxPg/ZX7+t60l8K8PUB8UTw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrudegkedgvddtucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpegtkfffgggfuffhvfhfjgesmhdtre ertdefjeenucfhrhhomheprfgvthgvrhcugfhishgvnhhtrhgruhhtuceophgvthgvrhdr vghishgvnhhtrhgruhhtsegvnhhtvghrphhrihhsvggusgdrtghomheqnecuggftrfgrth htvghrnhepkeetteefheevhfdvledtfeegleeutdekkeekveeifeeuffevjeeujeehffej ieejnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepph gvthgvrhdrvghishgvnhhtrhgruhhtsegvnhhtvghrphhrihhsvggusgdrtghomh X-ME-Proxy: Feedback-ID: i131946ab:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Tue, 28 Jun 2022 19:29:58 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------ejJ9GM0PsaNfahd2MbmsRf69" Message-ID: <48a9f2c2-4a57-27d8-7c53-16a23a01014e@enterprisedb.com> Date: Wed, 29 Jun 2022 00:29:57 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.10.0 Subject: Re: Transparent column encryption Content-Language: en-US From: Peter Eisentraut To: pgsql-hackers References: <89157929-c2b6-817b-6025-8e4b2d89d88f@enterprisedb.com> In-Reply-To: <89157929-c2b6-817b-6025-8e4b2d89d88f@enterprisedb.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------ejJ9GM0PsaNfahd2MbmsRf69 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Here is a new version of this patch. See also the original description quoted below. I have done a significant amount of work on this over the last few months. Some important news include: - The cryptography has been improved. It now uses an AEAD scheme, and for deterministic encryption a proper SIV construction. - The OpenSSL-specific parts have been moved to a separate file in libpq. Non-OpenSSL builds compile and work (without functionality, of course). - libpq handles multiple CEKs and CMKs, including changing keys on the fly. - libpq supports a mode to force encryption of certain values. - libpq supports a flexible configuration system for looking up CMKs, including support for external key management systems. - psql has a new \gencr command that allows passing in bind parameters for (potential) encryption. - There is some more pg_dump and psql support. - The new data types for storing encrypted data have been renamed for clarity. - Various changes to the protocol compared to the previous patch. - The patch contains full documentation of the protocol changes, glossary entries, and more new documentation. The major pieces that are still missing are: - DDL support for registering keys - Protocol versioning or feature flags Other than that it's pretty complete in my mind. For interested reviewers, I have organized the patch so that you can start reading it top to bottom: The documentation comes first, then the tests, then the code changes. Even some feedback on the first or first two aspects would be valuable to me. Old news follows: On 03.12.21 22:32, Peter Eisentraut wrote: > I want to present my proof-of-concept patch for the transparent column > encryption feature.  (Some might also think of it as automatic > client-side encryption or similar, but I like my name.)  This feature > enables the {automatic,transparent} encryption and decryption of > particular columns in the client.  The data for those columns then > only ever appears in ciphertext on the server, so it is protected from > the "prying eyes" of DBAs, sysadmins, cloud operators, etc.  The > canonical use case for this feature is storing credit card numbers > encrypted, in accordance with PCI DSS, as well as similar situations > involving social security numbers etc.  Of course, you can't do any > computations with encrypted values on the server, but for these use > cases, that is not necessary.  This feature does support deterministic > encryption as an alternative to the default randomized encryption, so > in that mode you can do equality lookups, at the cost of some > security. > > This functionality also exists in other SQL database products, so the > overall concepts weren't invented by me by any means. > > Also, this feature has nothing to do with the on-disk encryption > feature being contemplated in parallel.  Both can exist independently. > > The attached patch has all the necessary pieces in place to make this > work, so you can have an idea how the overall system works.  It > contains some documentation and tests to help illustrate the > functionality.  But it's missing the remaining 90% of the work, > including additional DDL support, error handling, robust memory > management, protocol versioning, forward and backward compatibility, > pg_dump support, psql \d support, refinement of the cryptography, and > so on.  But I think obvious solutions exist to all of those things, so > it isn't that interesting to focus on them for now. > > ------ > > Now to the explanation of how it works. > > You declare a column as encrypted in a CREATE TABLE statement.  The > column value is encrypted by a symmetric key called the column > encryption key (CEK).  The CEK is a catalog object.  The CEK key > material is in turn encrypted by an assymmetric key called the column > master key (CMK).  The CMK is not stored in the database but somewhere > where the client can get to it, for example in a file or in a key > management system.  When a server sends rows containing encrypted > column values to the client, it first sends the required CMK and CEK > information (new protocol messages), which the client needs to record. > Then, the client can use this information to automatically decrypt the > incoming row data and forward it in plaintext to the application. > > For the CMKs, the catalog object specifies a "provider" and generic > options.  Right now, libpq has a "file" provider hardcoded, and it > takes a "filename" option.  Via some mechanism to be determined, > additional providers could be loaded and then talk to key management > systems via http or whatever.  I have left some comments in the libpq > code where the hook points for this could be. > > The general idea would be for an application to have one CMK per area > of secret stuff, for example, for credit card data.  The CMK can be > rotated: each CEK can be represented multiple times in the database, > encrypted by a different CMK.  (The CEK can't be rotated easily, since > that would require reading out all the data from a table/column and > reencrypting it.  We could/should add some custom tooling for that, > but it wouldn't be a routine operation.) > > The encryption algorithms are mostly hardcoded right now, but there > are facilities for picking algorithms and adding new ones that will be > expanded.  The CMK process uses RSA-OAEP.  The CEK process uses > AES-128-CBC right now; a more complete solution should probably > involve some HMAC thrown in. > > In the server, the encrypted datums are stored in types called > encryptedr and encryptedd (for randomized and deterministic > encryption).  These are essentially cousins of bytea.  For the rest of > the database system below the protocol handling, there is nothing > special about those.  For example, encryptedr has no operators at all, > encryptedd has only an equality operator.  pg_attribute has a new > column attrealtypid that stores the original type of the data in the > column.  This is only used for providing it to clients, so that > higher-level clients can convert the decrypted value to their > appropriate data types in their environments. > > Some protocol extensions are required.  These should be guarded by > some _pq_... setting, but this is not done in this patch yet.  As > mentioned above, extra messages are added for sending the CMKs and > CEKs.  In the RowDescription message, I have commandeered the format > field to add a bit that indicates that the field is encrypted.  This > could be made a separate field, and there should probably be > additional fields to indicate the algorithm and CEK name, but this was > easiest for now.  The ParameterDescription message is extended to > contain format fields for each parameter, for the same purpose. > Again, this could be done differently. > > Speaking of parameter descriptions, the trickiest part of this whole > thing appears to be how to get transparently encrypted data into the > database (as opposed to reading it out).  It is required to use > protocol-level prepared statements (i.e., extended query) for this. > The client must first prepare a statement, then describe the statement > to get parameter metadata, which indicates which parameters are to be > encrypted and how.  So this will require some care by applications > that want to do this, but, well, they probably should be careful > anyway.  In libpq, the existing APIs make this difficult, because > there is no way to pass the result of a describe-statement call back > into execute-statement-with-parameters.  I added new functions that do > this, so you then essentially do > >     res0 = PQdescribePrepared(conn, ""); >     res = PQexecPrepared2(conn, "", 2, values, NULL, NULL, 0, res0); > > (The name could obviously be improved.)  Other client APIs that have a > "statement handle" concept could do this more elegantly and probably > without any API changes. > > Another challenge is that the parse analysis must check which > underlying column a parameter corresponds to.  This is similar to > resorigtbl and resorigcol in the opposite direction.  The current > implementation of this works for the test cases, but I know it has > some problems, so I'll continue working in this.  This functionality > is in principle available to all prepared-statement variants, not only > protocol-level.  So you can see in the tests that I expanded the > pg_prepared_statements view to show this information as well, which > also provides an easy way to test and debug this functionality > independent of column encryption. > > And also, psql doesn't use prepared statements, so writing into > encrypted columns currently doesn't work at all via psql.  (Reading > works no problem.)  All the test code currently uses custom libpq C > programs.  We should think about a way to enable prepared statements > in psql, perhaps something like > > INSERT INTO t1 VALUES ($1, $2) \gg 'val1' 'val2' > > (\gexec and \gx are already taken.) > > ------ > > This is not targeting PostgreSQL 15.  But I'd appreciate some feedback > on the direction.  As I mentioned above, a lot of the remaining work > is arguably mostly straightforward.  Some closer examination of the > issues surrounding the libpq API changes and psql would be useful. > Perhaps there are other projects where that kind of functionality > would also be useful. --------------ejJ9GM0PsaNfahd2MbmsRf69 Content-Type: text/plain; charset=UTF-8; name="v2-0001-Transparent-column-encryption.patch" Content-Disposition: attachment; filename="v2-0001-Transparent-column-encryption.patch" Content-Transfer-Encoding: base64 RnJvbSA5YWI5YTI2Yjg2NTcxN2FhYTc1NzVhZmU3ZTc3MWJkYjYzZGExMmViIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogV2VkLCAyOSBKdW4gMjAyMiAwMDowMToyMiArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjJdIFRyYW5zcGFyZW50IGNvbHVtbiBlbmNyeXB0aW9uCgotLS0KIGRvYy9z cmMvc2dtbC9hY3Jvbnltcy5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAxOCArCiBkb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAyNzUgKysrKysr KwogZG9jL3NyYy9zZ21sL2RhdGF0eXBlLnNnbWwgICAgICAgICAgICAgICAgICAgIHwgIDQ3 ICsrCiBkb2Mvc3JjL3NnbWwvZGRsLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAg NzMgKysKIGRvYy9zcmMvc2dtbC9nbG9zc2FyeS5zZ21sICAgICAgICAgICAgICAgICAgICB8 ICAyMyArCiBkb2Mvc3JjL3NnbWwvbGlicHEuc2dtbCAgICAgICAgICAgICAgICAgICAgICAg fCAyNTcgKysrKystCiBkb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbCAgICAgICAgICAgICAg ICAgICAgfCAzNDYgKysrKysrKysKIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNn bWwgICAgICAgICAgICB8ICA0MiArLQogZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21s ICAgICAgICAgICAgICAgIHwgIDMzICsKIHNyYy90ZXN0L01ha2VmaWxlICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL3Rlc3QvY29sdW1uX2VuY3J5cHRpb24v LmdpdGlnbm9yZSAgICAgICAgIHwgICAzICsKIHNyYy90ZXN0L2NvbHVtbl9lbmNyeXB0aW9u L01ha2VmaWxlICAgICAgICAgICB8ICAyOSArCiAuLi4vdC8wMDFfY29sdW1uX2VuY3J5cHRp b24ucGwgICAgICAgICAgICAgICAgfCAyMDYgKysrKysKIC4uLi9jb2x1bW5fZW5jcnlwdGlv bi90LzAwMl9jbWtfcm90YXRpb24ucGwgICB8IDE0NCArKysrCiBzcmMvdGVzdC9jb2x1bW5f ZW5jcnlwdGlvbi90ZXN0X2NsaWVudC5jICAgICAgfCAyMTAgKysrKysKIC4uLi9jb2x1bW5f ZW5jcnlwdGlvbi90ZXN0X3J1bl9kZWNyeXB0LnBsICAgICB8ICA0MSArCiAuLi4vdHJhY2Vz L2Rpc2FsbG93ZWRfaW5fcGlwZWxpbmUudHJhY2UgICAgICAgfCAgIDIgKy0KIC4uLi90cmFj ZXMvbXVsdGlfcGlwZWxpbmVzLnRyYWNlICAgICAgICAgICAgICB8ICAgNCArLQogLi4uL2xp YnBxX3BpcGVsaW5lL3RyYWNlcy9ub3N5bmMudHJhY2UgICAgICAgIHwgIDIwICstCiAuLi4v dHJhY2VzL3BpcGVsaW5lX2Fib3J0LnRyYWNlICAgICAgICAgICAgICAgfCAgIDQgKy0KIC4u Li9saWJwcV9waXBlbGluZS90cmFjZXMvcHJlcGFyZWQudHJhY2UgICAgICB8ICAgNiArLQog Li4uL3RyYWNlcy9zaW1wbGVfcGlwZWxpbmUudHJhY2UgICAgICAgICAgICAgIHwgICAyICst CiAuLi4vbGlicHFfcGlwZWxpbmUvdHJhY2VzL3NpbmdsZXJvdy50cmFjZSAgICAgfCAgIDYg Ky0KIC4uLi9saWJwcV9waXBlbGluZS90cmFjZXMvdHJhbnNhY3Rpb24udHJhY2UgICB8ICAg MiArLQogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvY29sdW1uX2VuY3J5cHRpb24ub3V0ICAgIHwg IDU5ICsrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dCAgICAgICAg fCAgIDYgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dCAgICAg IHwgIDEyICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ByZXBhcmUub3V0ICAgICAg ICAgfCAgNDEgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQgICAgICAg ICAgICB8ICAyNSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCAgICAg ICAgICAgfCAgIDYgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHlwZV9zYW5pdHku b3V0ICAgICB8ICAyMCArLQogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAg ICAgICAgICAgIHwgICAzICsKIHNyYy90ZXN0L3JlZ3Jlc3MvcGdfcmVncmVzc19tYWluLmMg ICAgICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sdW1uX2VuY3J5 cHRpb24uc3FsICAgIHwgIDUwICsrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wcmVwYXJlLnNx bCAgICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BzcWwuc3Fs ICAgICAgICAgICAgICAgICB8ICAxNyArCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC90eXBlX3Nh bml0eS5zcWwgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9wcmludHR1 cC5oICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Ft b3AuZGF0ICAgICAgICAgICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19h bXByb2MuZGF0ICAgICAgICAgICAgIHwgICA1ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdf YXR0cmlidXRlLmggICAgICAgICAgICB8ICAgOSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X2Nhc3QuZGF0ICAgICAgICAgICAgICAgfCAgIDYgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19jb2xlbmNrZXkuaCAgICAgICAgICAgIHwgIDU1ICsrCiBzcmMvaW5jbHVkZS9jYXRhbG9n L3BnX2NvbGVuY2tleWRhdGEuaCAgICAgICAgfCAgNDYgKysKIHNyYy9pbmNsdWRlL2NhdGFs b2cvcGdfY29sbWFzdGVya2V5LmggICAgICAgICB8ICA0NSArKwogc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19vcGNsYXNzLmRhdCAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfb3BlcmF0b3IuZGF0ICAgICAgICAgICB8ICAxMCArCiBzcmMvaW5jbHVkZS9j YXRhbG9nL3BnX29wZmFtaWx5LmRhdCAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAgIHwgIDEzICstCiBzcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3R5cGUuZGF0ICAgICAgICAgICAgICAgfCAgMTIgKwogc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ190eXBlLmggICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5j bHVkZS9wYXJzZXIvYW5hbHl6ZS5oICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9p bmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggICAgICAgICAgICAgICB8ICAgMiArCiBzcmMv aW5jbHVkZS9wYXJzZXIvcGFyc2VfcGFyYW0uaCAgICAgICAgICAgICAgfCAgIDMgKy0KIHNy Yy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaCAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBz cmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgIDQgKwog c3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaCAgICAgICAgICAgICAgICAgIHwgICAzICsK IHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcHJpbnRzaW1wbGUuYyAgICAgICB8ICAgMiAr CiBzcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3ByaW50dHVwLmMgICAgICAgICAgfCAxMzcg KysrKwogc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90dXBkZXNjLmMgICAgICAgICAgIHwg IDEyICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2h2YWxpZGF0ZS5jICAgICAgICB8 ICAgMiArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZSAgICAgICAgICAgICAgICAg IHwgICAzICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYyAgICAgICAgICAgICAgICAg ICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jICAgICAgICAgICAg ICAgIHwgIDU5ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAg ICAgICAgfCAgNzQgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jICAgICAgICAgICAg ICAgICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYyAgICAgICAg ICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jICAgICAg ICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jICAgICAg ICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jICAgICAg ICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyAgICAg ICAgICAgICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAg ICAgICAgICAgICAgICAgfCAgMTMgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9wYXJh bS5jICAgICAgICAgICAgICB8ICA0MyArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Rh cmdldC5jICAgICAgICAgICAgIHwgICA2ICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2Jh c2ViYWNrdXBfY29weS5jICAgICB8ICAxMiArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxzZW5kZXIuYyAgICAgICAgICAgfCAgIDUgKwogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jl cy5jICAgICAgICAgICAgICAgICAgIHwgIDU0ICstCiBzcmMvYmFja2VuZC91dGlscy9jYWNo ZS9wbGFuY2FjaGUuYyAgICAgICAgICAgfCAgMTAgKwogc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvc3lzY2FjaGUuYyAgICAgICAgICAgIHwgIDI5ICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMgICAgICAgICAgICAgICAgICAgICB8ICAyNiArLQogc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuaCAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iaW4vcHNxbC9jb21t YW5kLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAzMSArCiBzcmMvYmluL3BzcWwvY29t bW9uLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzggKy0KIHNyYy9iaW4vcHNxbC9k ZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAyOSArLQogc3JjL2Jpbi9wc3Fs L2hlbHAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy9iaW4vcHNx bC9zZXR0aW5ncy5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArCiBzcmMvYmluL3Bz cWwvc3RhcnR1cC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTAgKwogc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5jICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW50 ZXJmYWNlcy9saWJwcS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2lu dGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9p bnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYyAgICAgICAgICAgICB8ICAyMCArCiBzcmMv aW50ZXJmYWNlcy9saWJwcS9mZS1lbmNyeXB0LW9wZW5zc2wuYyAgICAgfCA3NTMgKysrKysr KysrKysrKysrKysrCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1lbmNyeXB0LmggICAgICAg ICAgICAgfCAgMzMgKwogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZXhlYy5jICAgICAgICAg ICAgICAgIHwgNTk0ICsrKysrKysrKysrKystCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1w cm90b2NvbDMuYyAgICAgICAgICAgfCAxMjMgKystCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9m ZS10cmFjZS5jICAgICAgICAgICAgICAgfCAgIDcgKwogc3JjL2ludGVyZmFjZXMvbGlicHEv bGlicHEtZmUuaCAgICAgICAgICAgICAgIHwgIDIyICsKIHNyYy9pbnRlcmZhY2VzL2xpYnBx L2xpYnBxLWludC5oICAgICAgICAgICAgICB8ICAzNCArCiBzcmMvaW50ZXJmYWNlcy9saWJw cS9ubHMubWsgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbnRlcmZhY2VzL2xp YnBxL3Rlc3QvLmdpdGlnbm9yZSAgICAgICAgICB8ICAgMSArCiBzcmMvaW50ZXJmYWNlcy9s aWJwcS90ZXN0L01ha2VmaWxlICAgICAgICAgICAgfCAgIDcgKwogLi4uL3Bvc3RncmVzX2Zk dy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0ICAgIHwgICAyICstCiAxMDMgZmlsZXMgY2hh bmdlZCwgNDM4MCBpbnNlcnRpb25zKCspLCAxMjMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL3Rlc3QvY29sdW1uX2VuY3J5cHRpb24vLmdpdGlnbm9yZQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2NvbHVtbl9lbmNyeXB0aW9uL01ha2VmaWxlCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvY29sdW1uX2VuY3J5cHRpb24vdC8wMDFfY29sdW1u X2VuY3J5cHRpb24ucGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9jb2x1bW5fZW5j cnlwdGlvbi90LzAwMl9jbWtfcm90YXRpb24ucGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9jb2x1bW5fZW5jcnlwdGlvbi90ZXN0X2NsaWVudC5jCiBjcmVhdGUgbW9kZSAxMDA3 NTUgc3JjL3Rlc3QvY29sdW1uX2VuY3J5cHRpb24vdGVzdF9ydW5fZGVjcnlwdC5wbAogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sdW1uX2VuY3J5 cHRpb24ub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29s dW1uX2VuY3J5cHRpb24uc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19jb2xlbmNrZXkuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfY29sZW5ja2V5ZGF0YS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19jb2xtYXN0ZXJrZXkuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9p bnRlcmZhY2VzL2xpYnBxL2ZlLWVuY3J5cHQtb3BlbnNzbC5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZW5jcnlwdC5oCgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL2Fjcm9ueW1zLnNnbWwgYi9kb2Mvc3JjL3NnbWwvYWNyb255bXMuc2dtbApp bmRleCA5ZWQxNDhhYjg0Li5lMjFjOWJjY2UzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv YWNyb255bXMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvYWNyb255bXMuc2dtbApAQCAtNTYs NiArNTYsMTUgQEAgPHRpdGxlPkFjcm9ueW1zPC90aXRsZT4KICAgICA8L2xpc3RpdGVtPgog ICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGFj cm9ueW0+Q0VLPC9hY3JvbnltPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJh PgorICAgICAgQ29sdW1uIEVuY3J5cHRpb24gS2V5CisgICAgIDwvcGFyYT4KKyAgICA8L2xp c3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAg PHRlcm0+PGFjcm9ueW0+Q0lEUjwvYWNyb255bT48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpA QCAtNjcsNiArNzYsMTUgQEAgPHRpdGxlPkFjcm9ueW1zPC90aXRsZT4KICAgICA8L2xpc3Rp dGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRl cm0+PGFjcm9ueW0+Q01LPC9hY3JvbnltPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAg IDxwYXJhPgorICAgICAgQ29sdW1uIE1hc3RlciBLZXkKKyAgICAgPC9wYXJhPgorICAgIDwv bGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeT4KICAg ICA8dGVybT48YWNyb255bT5DUEFOPC9hY3JvbnltPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+ CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dt bC9jYXRhbG9ncy5zZ21sCmluZGV4IDI1YjAyYzRlMzcuLmNlZGFmNTVjMDcgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRh bG9ncy5zZ21sCkBAIC0xMDUsNiArMTA1LDIxIEBAIDx0aXRsZT5TeXN0ZW0gQ2F0YWxvZ3M8 L3RpdGxlPgogICAgICAgPGVudHJ5PmNvbGxhdGlvbnMgKGxvY2FsZSBpbmZvcm1hdGlvbik8 L2VudHJ5PgogICAgICA8L3Jvdz4KIAorICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaW5r IGxpbmtlbmQ9ImNhdGFsb2ctcGctY29sZW5ja2V5Ij48c3RydWN0bmFtZT5wZ19jb2xlbmNr ZXk8L3N0cnVjdG5hbWU+PC9saW5rPjwvZW50cnk+CisgICAgICA8ZW50cnk+Y29sdW1uIGVu Y3J5cHRpb24ga2V5czwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnk+PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1jb2xlbmNrZXlkYXRhIj48c3Ry dWN0bmFtZT5wZ19jb2xlbmNrZXlkYXRhPC9zdHJ1Y3RuYW1lPjwvbGluaz48L2VudHJ5Pgor ICAgICAgPGVudHJ5PmNvbHVtbiBlbmNyeXB0aW9uIGtleSBkYXRhPC9lbnRyeT4KKyAgICAg PC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGluayBsaW5rZW5kPSJjYXRh bG9nLXBnLWNvbG1hc3RlcmtleSI+PHN0cnVjdG5hbWU+cGdfY29sbWFzdGVya2V5PC9zdHJ1 Y3RuYW1lPjwvbGluaz48L2VudHJ5PgorICAgICAgPGVudHJ5PmNvbHVtbiBtYXN0ZXIga2V5 czwvZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnk+PGxp bmsgbGlua2VuZD0iY2F0YWxvZy1wZy1jb25zdHJhaW50Ij48c3RydWN0bmFtZT5wZ19jb25z dHJhaW50PC9zdHJ1Y3RuYW1lPjwvbGluaz48L2VudHJ5PgogICAgICAgPGVudHJ5PmNoZWNr IGNvbnN0cmFpbnRzLCB1bmlxdWUgY29uc3RyYWludHMsIHByaW1hcnkga2V5IGNvbnN0cmFp bnRzLCBmb3JlaWduIGtleSBjb25zdHJhaW50czwvZW50cnk+CkBAIC0xMzYwLDYgKzEzNzUs NDAgQEAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX2F0dHJpYnV0ZTwvc3RydWN0bmFtZT4gQ29s dW1uczwvdGl0bGU+CiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmF0dGNl azwvc3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgICAocmVmZXJlbmNlcyA8 bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWNvbGVuY2tleSI+PHN0cnVjdG5hbWU+cGdfY29s ZW5ja2V5PC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0Zmll bGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgSWYgdGhlIGNvbHVt biBpcyBlbmNyeXB0ZWQsIGEgcmVmZXJlbmNlIHRvIHRoZSBjb2x1bW4gZW5jcnlwdGlvbiBr ZXksIGVsc2UgMC4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAg ICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJh IHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+YXR0cmVh bHR5cGlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVu Y2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctdHlwZSI+PHN0cnVjdG5hbWU+cGdfdHlw ZTwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPikK KyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIElmIHRoZSBjb2x1bW4gaXMg ZW5jcnlwdGVkLCB0aGVuIHRoaXMgY29sdW1uIGluZGljYXRlcyB0aGUgdHlwZSBvZiB0aGUK KyAgICAgICBlbmNyeXB0ZWQgZGF0YSB0aGF0IGlzIHJlcG9ydGVkIHRvIHRoZSBjbGllbnQu ICBGb3IgZW5jcnlwdGVkIGNvbHVtbnMsCisgICAgICAgdGhlIGZpZWxkIDxzdHJ1Y3RmaWVs ZD5hdHR0eXBpZDwvc3RydWN0ZmllbGQ+IGlzIGVpdGhlcgorICAgICAgIDx0eXBlPnBnX2Vu Y3J5cHRlZF9kZXQ8L3R5cGU+IG9yIDx0eXBlPnBnX2VuY3J5cHRlZF9ybmQ8L3R5cGU+LiAg SWYgdGhlCisgICAgICAgY29sdW1uIGlzIG5vdCBlbmNyeXB0ZWQsIHRoZW4gMC4KKyAgICAg IDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVu dHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZp bml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+YXR0ZW5jYWxnPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+aW50MTY8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAg ICBJZiB0aGUgY29sdW1uIGlzIGVuY3J5cHRlZCwgdGhlIGlkZW50aWZpZXIgb2YgdGhlIGVu Y3J5cHRpb24gYWxnb3JpdGhtOworICAgICAgIHNlZSA8eHJlZiBsaW5rZW5kPSJwcm90b2Nv bC1jZWsiLz4gZm9yIHBvc3NpYmxlIHZhbHVlcy4KKyAgICAgICA8L3BhcmE+PC9lbnRyeT4K KyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9n X3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAgICAgICAg PHN0cnVjdGZpZWxkPmF0dGluaGNvdW50PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50NDwvdHlw ZT4KQEAgLTI0MzcsNiArMjQ4NiwyMzIgQEAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX2NvbGxh dGlvbjwvc3RydWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+CiAgIDwvcGFyYT4KICA8L3NlY3Qx PgogCisgPHNlY3QxIGlkPSJjYXRhbG9nLXBnLWNvbGVuY2tleSI+CisgIDx0aXRsZT48c3Ry dWN0bmFtZT5wZ19jb2xlbmNrZXk8L3N0cnVjdG5hbWU+PC90aXRsZT4KKworICA8aW5kZXh0 ZXJtIHpvbmU9ImNhdGFsb2ctcGctY29sZW5ja2V5Ij4KKyAgIDxwcmltYXJ5PnBnX2NvbGVu Y2tleTwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPHBhcmE+CisgICBUaGUgY2F0 YWxvZyA8c3RydWN0bmFtZT5wZ19jb2xlbmNrZXk8L3N0cnVjdG5hbWU+IGNvbnRhaW5zIGlu Zm9ybWF0aW9uCisgICBhYm91dCB0aGUgY29sdW1uIGVuY3J5cHRpb24ga2V5cyBpbiB0aGUg ZGF0YWJhc2UuICBUaGUgYWN0dWFsIGtleSBtYXRlcmlhbAorICAgb2YgdGhlIGNvbHVtbiBl bmNyeXB0aW9uIGtleXMgaXMgaW4gdGhlIGNhdGFsb2cgPGxpbmsKKyAgIGxpbmtlbmQ9ImNh dGFsb2ctcGctY29sZW5ja2V5ZGF0YSI+PHN0cnVjdG5hbWU+cGdfY29sZW5ja2V5ZGF0YTwv c3RydWN0bmFtZT48L2xpbms+LgorICA8L3BhcmE+CisKKyAgPHRhYmxlPgorICAgPHRpdGxl PjxzdHJ1Y3RuYW1lPnBnX2NvbGVuY2tleTwvc3RydWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+ CisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5f ZGVmaW5pdGlvbiI+CisgICAgICAgQ29sdW1uIFR5cGUKKyAgICAgIDwvcGFyYT4KKyAgICAg IDxwYXJhPgorICAgICAgIERlc2NyaXB0aW9uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAg ICAgPC9yb3c+CisgICAgPC90aGVhZD4KKworICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAg ICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1 bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+ IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAg IFJvdyBpZGVudGlmaWVyCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisK KyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48 cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmNl a25hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5uYW1lPC90eXBlPgorICAgICAgPC9wYXJhPgor ICAgICAgPHBhcmE+CisgICAgICAgQ29sdW1uIGVuY3J5cHRpb24ga2V5IG5hbWUKKyAgICAg IDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVu dHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZp bml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+Y2Vrb3duZXI8L3N0cnVjdGZpZWxkPiA8 dHlwZT5vaWQ8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0 YWxvZy1wZy1hdXRoaWQiPjxzdHJ1Y3RuYW1lPnBnX2F1dGhpZDwvc3RydWN0bmFtZT48L2xp bms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAg ICAgIDxwYXJhPgorICAgICAgIE93bmVyIG9mIHRoZSBjb2x1bW4gZW5jcnlwdGlvbiBrZXkK KyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAg PC90Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0MT4KKworIDxzZWN0MSBpZD0iY2F0YWxv Zy1wZy1jb2xlbmNrZXlkYXRhIj4KKyAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX2NvbGVuY2tl eWRhdGE8L3N0cnVjdG5hbWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJtIHpvbmU9ImNhdGFs b2ctcGctY29sZW5ja2V5ZGF0YSI+CisgICA8cHJpbWFyeT5wZ19jb2xlbmNrZXlkYXRhPC9w cmltYXJ5PgorICA8L2luZGV4dGVybT4KKworICA8cGFyYT4KKyAgIFRoZSBjYXRhbG9nIDxz dHJ1Y3RuYW1lPnBnX2NvbGVuY2tleWRhdGE8L3N0cnVjdG5hbWU+IGNvbnRhaW5zIHRoZSBr ZXkKKyAgIG1hdGVyaWFsIG9mIGNvbHVtbiBlbmNyeXB0aW9uIGtleXMuICBFYWNoIGNvbHVt biBlbmNyeXB0aW9uIGtleSBvYmplY3QgY2FuCisgICBjb250YWluIHNldmVyYWwgdmVyc2lv bnMgb2YgdGhlIGtleSBtYXRlcmlhbCwgZWFjaCBlbmNyeXB0ZWQgd2l0aCBhCisgICBkaWZm ZXJlbnQgY29sdW1uIG1hc3RlciBrZXkuICBUaGF0IGFsbG93cyB0aGUgZ3JhZHVhbCByb3Rh dGlvbiBvZiB0aGUKKyAgIGNvbHVtbiBtYXN0ZXIga2V5cy4gIFRodXMsIDxsaXRlcmFsPihj a2RjZWtpZCwgY2tkY21raWQpPC9saXRlcmFsPiBpcyBhCisgICB1bmlxdWUga2V5IG9mIHRo aXMgdGFibGUuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRoZSBrZXkgbWF0ZXJpYWwg b2YgY29sdW1uIGVuY3J5cHRpb24ga2V5cyBzaG91bGQgbmV2ZXIgYmUgZGVjcnlwdGVkIGlu c2lkZQorICAgdGhlIGRhdGFiYXNlIGluc3RhbmNlLiAgSXQgaXMgbWVhbnQgdG8gYmUgc2Vu dCBhcy1pcyB0byB0aGUgY2xpZW50LCB3aGVyZQorICAgaXQgaXMgZGVjcnlwdGVkIHVzaW5n IHRoZSBhc3NvY2lhdGVkIGNvbHVtbiBtYXN0ZXIga2V5LCBhbmQgdGhlbiB1c2VkIHRvCisg ICBlbmNyeXB0IG9yIGRlY3J5cHQgY29sdW1uIHZhbHVlcy4KKyAgPC9wYXJhPgorCisgIDx0 YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19jb2xlbmNrZXlkYXRhPC9zdHJ1Y3Ru YW1lPiBDb2x1bW5zPC90aXRsZT4KKyAgIDx0Z3JvdXAgY29scz0iMSI+CisgICAgPHRoZWFk PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICBDb2x1bW4gVHlwZQor ICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgRGVzY3JpcHRpb24KKyAgICAg IDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3RoZWFkPgorCisgICAgPHRi b2R5PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0Zmll bGQ+b2lkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgPC9wYXJhPgor ICAgICAgPHBhcmE+CisgICAgICAgUm93IGlkZW50aWZpZXIKKyAgICAgIDwvcGFyYT48L2Vu dHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNh dGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAg ICAgICA8c3RydWN0ZmllbGQ+Y2tkY2VraWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5 cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1jb2xl bmNrZXkiPjxzdHJ1Y3RuYW1lPnBnX2NvbGVuY2tleTwvc3RydWN0bmFtZT48L2xpbms+Ljxz dHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxw YXJhPgorICAgICAgIFRoZSBjb2x1bW4gZW5jcnlwdGlvbiBrZXkgdGhpcyBlbnRyeSBiZWxv bmdzIHRvCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJv dz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xl PSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmNrZGNta2lkPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5r IGxpbmtlbmQ9ImNhdGFsb2ctcGctY29sbWFzdGVya2V5Ij48c3RydWN0bmFtZT5wZ19jb2xt YXN0ZXJrZXk8L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+b2lkPC9zdHJ1Y3Rm aWVsZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgY29sdW1u IG1hc3RlciBrZXkgdGhhdCB0aGUga2V5IG1hdGVyaWFsIGlzIGVuY3J5cHRlZCB3aXRoCisg ICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5f ZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmNrZGNta2FsZzwvc3RydWN0Zmll bGQ+IDx0eXBlPmludDE2PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+Cisg ICAgICAgVGhlIGVuY3J5cHRpb24gYWxnb3JpdGhtIHVzZWQgZm9yIGVuY3J5cHRpbmcgdGhl IGtleSBtYXRlcmlhbDsgc2VlCisgICAgICAgPHhyZWYgbGlua2VuZD0icHJvdG9jb2wtY21r Ii8+IGZvciBwb3NzaWJsZSB2YWx1ZXMuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAg PC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPmNrZGVuY3ZhbDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJ5dGVhPC90eXBlPgorICAg ICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIGtleSBtYXRlcmlhbCBvZiB0 aGlzIGNvbHVtbiBlbmNyeXB0aW9uIGtleSwgZW5jcnlwdGVkIHVzaW5nIHRoZQorICAgICAg IHJlZmVyZW5jZWQgY29sdW1uIG1hc3RlciBrZXkKKyAgICAgIDwvcGFyYT48L2VudHJ5Pgor ICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+Cisg PC9zZWN0MT4KKworIDxzZWN0MSBpZD0iY2F0YWxvZy1wZy1jb2xtYXN0ZXJrZXkiPgorICA8 dGl0bGU+PHN0cnVjdG5hbWU+cGdfY29sbWFzdGVya2V5PC9zdHJ1Y3RuYW1lPjwvdGl0bGU+ CisKKyAgPGluZGV4dGVybSB6b25lPSJjYXRhbG9nLXBnLWNvbG1hc3RlcmtleSI+CisgICA8 cHJpbWFyeT5wZ19jb2xtYXN0ZXJrZXk8L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisg IDxwYXJhPgorICAgVGhlIGNhdGFsb2cgPHN0cnVjdG5hbWU+cGdfY29sbWFzdGVya2V5PC9z dHJ1Y3RuYW1lPiBjb250YWlucyBpbmZvcm1hdGlvbgorICAgYWJvdXQgY29sdW1uIG1hc3Rl ciBrZXlzLiAgVGhlIGtleXMgdGhlbXNlbHZlcyBhcmUgbm90IHN0b3JlZCBpbiB0aGUKKyAg IGRhdGFiYXNlLiAgVGhlIGNhdGFsb2cgZW50cnkgb25seSBjb250YWlucyBpbmZvcm1hdGlv biB0aGF0IGlzIHVzZWQgYnkKKyAgIGNsaWVudHMgdG8gbG9jYXRlIHRoZSBrZXlzLCBmb3Ig ZXhhbXBsZSBpbiBhIGZpbGUgb3IgaW4gYSBrZXkgbWFuYWdlbWVudAorICAgc3lzdGVtLgor ICA8L3BhcmE+CisKKyAgPHRhYmxlPgorICAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX2NvbG1h c3RlcmtleTwvc3RydWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+CisgICA8dGdyb3VwIGNvbHM9 IjEiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRh bG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAg ICAgQ29sdW1uIFR5cGUKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIERl c2NyaXB0aW9uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90 aGVhZD4KKworICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJj YXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+Cisg ICAgICAgPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4K KyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFJvdyBpZGVudGlmaWVyCisg ICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5f ZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmNta25hbWU8L3N0cnVjdGZpZWxk PiA8dHlwZT5uYW1lPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAg ICAgQ29sdW1uIG1hc3RlciBrZXkgbmFtZQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAg IDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1 Y3RmaWVsZD5jbWtvd25lcjwvc3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAg ICAocmVmZXJlbmNlcyA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWF1dGhpZCI+PHN0cnVj dG5hbWU+cGdfYXV0aGlkPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPm9pZDwv c3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgT3du ZXIgb2YgdGhlIGNvbHVtbiBtYXN0ZXIga2V5CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAg ICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3Rh YmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0 cnVjdGZpZWxkPmNta3JlYWxtPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KKyAg ICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIEEgPHF1b3RlPnJlYWxtPC9xdW90 ZT4gYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29sdW1uIG1hc3RlciBrZXkuICBUaGlzIGlzCisg ICAgICAgYSBmcmVlbHkgY2hvc2VuIHN0cmluZyB0aGF0IGlzIHVzZWQgYnkgY2xpZW50cyB0 byBkZXRlcm1pbmUgaG93IHRvIGxvb2sKKyAgICAgICB1cCB0aGUga2V5LiAgQSB0eXBpY2Fs IGNvbmZpZ3VyYXRpb24gd291bGQgcHV0IGFsbCBDTUtzIHRoYXQgYXJlIGxvb2tlZAorICAg ICAgIHVwIGluIHRoZSBzYW1lIHdheSBpbnRvIHRoZSBzYW1lIHJlYWxtLgorICAgICAgPC9w YXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGJvZHk+CisgICA8L3Rncm91cD4K KyAgPC90YWJsZT4KKyA8L3NlY3QxPgorCiAgPHNlY3QxIGlkPSJjYXRhbG9nLXBnLWNvbnN0 cmFpbnQiPgogICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfY29uc3RyYWludDwvc3RydWN0bmFt ZT48L3RpdGxlPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZGF0YXR5cGUuc2dtbCBi L2RvYy9zcmMvc2dtbC9kYXRhdHlwZS5zZ21sCmluZGV4IDhlMzBiODIyNzMuLmNkZDA1MzBl ZWIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9kYXRhdHlwZS5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9kYXRhdHlwZS5zZ21sCkBAIC01MzQyLDQgKzUzNDIsNTEgQEAgPHRpdGxlPlBz ZXVkby1UeXBlczwvdGl0bGU+CiAKICAgPC9zZWN0MT4KIAorICA8c2VjdDEgaWQ9ImRhdGF0 eXBlLWVuY3J5cHRlZCI+CisgICA8dGl0bGU+VHlwZXMgUmVsYXRlZCB0byBFbmNyeXB0aW9u PC90aXRsZT4KKworICAgPHBhcmE+CisgICAgQW4gZW5jcnlwdGVkIGNvbHVtbiB2YWx1ZSAo c2VlIDx4cmVmIGxpbmtlbmQ9ImRkbC1jb2x1bW4tZW5jcnlwdGlvbiIvPikgaXMKKyAgICBp bnRlcm5hbGx5IHN0b3JlZCB1c2luZyB0aGUgdHlwZXMKKyAgICA8dHlwZT5wZ19lbmNyeXB0 ZWRfcm5kPC90eXBlPiAoZm9yIHJhbmRvbWl6ZWQgZW5jcnlwdGlvbikgb3IKKyAgICA8dHlw ZT5wZ19lbmNyeXB0ZWRfZGV0PC90eXBlPiAoZm9yIGRldGVybWluaXN0aWMgZW5jcnlwdGlv bik7IHNlZSA8eHJlZgorICAgIGxpbmtlbmQ9ImRhdGF0eXBlLWVuY3J5cHRlZC10YWJsZSIv Pi4gIE1vc3Qgb2YgdGhlIGRhdGFiYXNlIHN5c3RlbSB0cmVhdHMKKyAgICB0aGlzIGFzIG5v cm1hbCB0eXBlcy4gIEZvciBleGFtcGxlLCB0aGUgdHlwZSA8dHlwZT5wZ19lbmNyeXB0ZWRf ZGV0PC90eXBlPiBoYXMKKyAgICBhbiBlcXVhbHMgb3BlcmF0b3IgdGhhdCBhbGxvd3MgbG9v a3VwIG9mIGVuY3J5cHRlZCB2YWx1ZXMuICBUaGUgZXh0ZXJuYWwKKyAgICByZXByZXNlbnRh dGlvbiBvZiB0aGVzZSB0eXBlcyBpcyB0aGUgc2FtZSBhcyB0aGUgPHR5cGU+Ynl0ZWE8L3R5 cGU+IHR5cGUuCisgICAgVGh1cywgY2xpZW50cyB0aGF0IGRvbid0IHN1cHBvcnQgdHJhbnNw YXJlbnQgY29sdW1uIGVuY3J5cHRpb24gb3IgaGF2ZQorICAgIGRpc2FibGVkIGl0IHdpbGwg c2VlIHRoZSBlbmNyeXB0ZWQgdmFsdWVzIGFzIGJ5dGUgYXJyYXlzLiAgQ2xpZW50cyB0aGF0 CisgICAgc3VwcG9ydCB0cmFuc3BhcmVudCBkYXRhIGVuY3J5cHRpb24gd2lsbCBub3Qgc2Vl IHRoZXNlIHR5cGVzIGluIHJlc3VsdAorICAgIHNldHMsIGFzIHRoZSBwcm90b2NvbCBsYXll ciB3aWxsIHRyYW5zbGF0ZSB0aGVtIGJhY2sgdG8gZGVjbGFyZWQKKyAgICB1bmRlcmx5aW5n IHR5cGUgaW4gdGhlIHRhYmxlIGRlZmluaXRpb24uCisgICA8L3BhcmE+CisKKyAgICA8dGFi bGUgaWQ9ImRhdGF0eXBlLWVuY3J5cHRlZC10YWJsZSI+CisgICAgIDx0aXRsZT5UeXBlcyBS ZWxhdGVkIHRvIEVuY3J5cHRpb248L3RpdGxlPgorICAgICA8dGdyb3VwIGNvbHM9IjMiPgor ICAgICAgPGNvbHNwZWMgY29sbmFtZT0iY29sMSIgY29sd2lkdGg9IjEqIi8+CisgICAgICA8 Y29sc3BlYyBjb2xuYW1lPSJjb2wyIiBjb2x3aWR0aD0iMyoiLz4KKyAgICAgIDxjb2xzcGVj IGNvbG5hbWU9ImNvbDMiIGNvbHdpZHRoPSIyKiIvPgorICAgICAgPHRoZWFkPgorICAgICAg IDxyb3c+CisgICAgICAgIDxlbnRyeT5OYW1lPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PlN0 b3JhZ2UgU2l6ZTwvZW50cnk+CisgICAgICAgIDxlbnRyeT5EZXNjcmlwdGlvbjwvZW50cnk+ CisgICAgICAgPC9yb3c+CisgICAgICA8L3RoZWFkPgorICAgICAgPHRib2R5PgorICAgICAg IDxyb3c+CisgICAgICAgIDxlbnRyeT48dHlwZT5wZ19lbmNyeXB0ZWRfZGV0PC90eXBlPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeT4xIG9yIDQgYnl0ZXMgcGx1cyB0aGUgYWN0dWFsIGJp bmFyeSBzdHJpbmc8L2VudHJ5PgorICAgICAgICA8ZW50cnk+ZW5jcnlwdGVkIGNvbHVtbiB2 YWx1ZSwgZGV0ZXJtaW5pc3RpYyBlbmNyeXB0aW9uPC9lbnRyeT4KKyAgICAgICA8L3Jvdz4K KyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnk+PHR5cGU+cGdfZW5jcnlwdGVkX3JuZDwv dHlwZT48L2VudHJ5PgorICAgICAgICA8ZW50cnk+MSBvciA0IGJ5dGVzIHBsdXMgdGhlIGFj dHVhbCBiaW5hcnkgc3RyaW5nPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PmVuY3J5cHRlZCBj b2x1bW4gdmFsdWUsIHJhbmRvbWl6ZWQgZW5jcnlwdGlvbjwvZW50cnk+CisgICAgICAgPC9y b3c+CisgICAgICA8L3Rib2R5PgorICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorICA8 L3NlY3QxPgogIDwvY2hhcHRlcj4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9kZGwuc2dt bCBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbAppbmRleCBiMDFlM2FkNTQ0Li5iYjg1MDM1ODRl IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L2RkbC5zZ21sCkBAIC0xMjExLDYgKzEyMTEsNzkgQEAgPHRpdGxlPkV4Y2x1c2lvbiBDb25z dHJhaW50czwvdGl0bGU+CiAgIDwvc2VjdDI+CiAgPC9zZWN0MT4KIAorIDxzZWN0MSBpZD0i ZGRsLWNvbHVtbi1lbmNyeXB0aW9uIj4KKyAgPHRpdGxlPlRyYW5zcGFyZW50IENvbHVtbiBF bmNyeXB0aW9uPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFdpdGggPGZpcnN0dGVybT50cmFu c3BhcmVudCBjb2x1bW4gZW5jcnlwdGlvbjwvZmlyc3R0ZXJtPiwgY29sdW1ucyBjYW4gYmUK KyAgIHN0b3JlZCBlbmNyeXB0ZWQgaW4gdGhlIGRhdGFiYXNlLiAgVGhlIGVuY3J5cHRpb24g YW5kIGRlY3J5cHRpb24gaGFwcGVucyBvbgorICAgdGhlIGNsaWVudCwgc28gdGhhdCB0aGUg cGxhaW50ZXh0IHZhbHVlIGlzIG5ldmVyIHNlZW4gaW4gdGhlIGRhdGFiYXNlCisgICBpbnN0 YW5jZSBvciBvbiB0aGUgc2VydmVyIGhvc3RpbmcgdGhlIGRhdGFiYXNlLiAgVGhlIGRyYXdi YWNrIGlzIHRoYXQgbW9zdAorICAgb3BlcmF0aW9ucywgc3VjaCBhcyBmdW5jdGlvbiBjYWxs cyBvciBzb3J0aW5nLCBhcmUgbm90IHBvc3NpYmxlIG9uCisgICBlbmNyeXB0ZWQgdmFsdWVz LgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUcmFucGFyZW50IGNvbHVtbiBlbmNyeXB0 aW9uIHVzZXMgdHdvIGxldmVscyBvZiBjcnlwdG9ncmFwaGljIGtleXMuICBUaGUKKyAgIGFj dHVhbCBjb2x1bW4gdmFsdWUgaXMgZW5jcnlwdGVkIHVzaW5nIGEgc3ltbWV0cmljIGFsZ29y aXRobSwgc3VjaCBhcyBBRVMsCisgICB1c2luZyBhIDxmaXJzdHRlcm0+Y29sdW1uIGVuY3J5 cHRpb24ga2V5PC9maXJzdHRlcm0+CisgICAoPGFjcm9ueW0+Q0VLPC9hY3JvbnltPikuICBU aGUgY29sdW1uIGVuY3J5cHRpb24ga2V5IGlzIGluIHR1cm4gZW5jcnlwdGVkCisgICB1c2lu ZyBhbiBhc3N5bW1ldHJpYyBhbGdvcml0aG0sIHN1Y2ggYXMgUlNBLCB1c2luZyBhIDxmaXJz dHRlcm0+Y29sdW1uCisgICBtYXN0ZXIga2V5PC9maXJzdHRlcm0+ICg8YWNyb255bT5DTUs8 L2Fjcm9ueW0+KS4gIFRoZSBlbmNyeXB0ZWQgQ0VLIGlzCisgICBzdG9yZWQgaW4gdGhlIGRh dGFiYXNlIHN5c3RlbS4gIFRoZSBDTUsgaXMgbm90IHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UK KyAgIHN5c3RlbTsgaXQgaXMgc3RvcmVkIG9uIHRoZSBjbGllbnQgb3Igc29tZXdoZXJlIHdo ZXJlIHRoZSBjbGllbnQgY2FuIGFjY2VzcworICAgaXQsIHN1Y2ggYXMgaW4gYSBsb2NhbCBm aWxlIG9yIGluIGEga2V5IG1hbmFnZW1lbnQgc3lzdGVtLiAgVGhlIGRhdGFiYXNlCisgICBz eXN0ZW0gb25seSByZWNvcmRzIHdoZXJlIHRoZSBDTUsgaXMgc3RvcmVkIGFuZCBwcm92aWRl cyB0aGlzIGluZm9ybWF0aW9uCisgICB0byB0aGUgY2xpZW50LiAgV2hlbiByb3dzIGNvbnRh aW5pbmcgZW5jcnlwdGVkIGNvbHVtbnMgYXJlIHNlbnQgdG8gdGhlCisgICBjbGllbnQsIHRo ZSBzZXJ2ZXIgZmlyc3Qgc2VuZHMgYW55IG5lY2Vzc2FyeSBDTUsgaW5mb3JtYXRpb24sIGZv bGxvd2VkIGJ5CisgICBhbnkgcmVxdWlyZWQgQ0VLLiAgVGhlIGNsaWVudCB0aGVuIGxvb2tz IHVwIHRoZSBDTUsgYW5kIHVzZXMgdGhhdCB0bworICAgZGVjcnlwdCB0aGUgQ0VLLiAgVGhl biBpdCBkZWNyeXB0cyBpbmNvbWluZyByb3cgZGF0YSB1c2luZyB0aGUgQ0VLIGFuZAorICAg cHJvdmlkZXMgdGhlIGRlY3J5cHRlZCByb3cgZGF0YSB0byB0aGUgYXBwbGljYXRpb24uCisg IDwvcGFyYT4KKworICA8cGFyYT4KKyAgIEhlcmUgaXMgYW4gZXhhbXBsZSBkZWNsYXJpbmcg YSBjb2x1bW4gYXMgZW5jcnlwdGVkOgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFRBQkxF IGN1c3RvbWVycyAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIG5hbWUgdGV4dCBO T1QgTlVMTCwKKyAgICAuLi4KKyAgICBjcmVkaXRjYXJkX251bSB0ZXh0IDxlbXBoYXNpcz5F TkNSWVBURUQgV0lUSCAoY29sdW1uX2VuY3J5cHRpb25fa2V5ID0gY2VrMSk8L2VtcGhhc2lz PgorKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIENv bHVtbiBlbmNyeXB0aW9uIHN1cHBvcnRzIDxmaXJzdHRlcm0+cmFuZG9taXplZDwvZmlyc3R0 ZXJtPgorICAgKGFsc28ga25vd24gYXMgPGZpcnN0dGVybT5wcm9iYWJpbGlzdGljPC9maXJz dHRlcm0+KSBhbmQKKyAgIDxmaXJzdHRlcm0+ZGV0ZXJtaW5pc3RpYzwvZmlyc3R0ZXJtPiBl bmNyeXB0aW9uLiAgVGhlIGFib3ZlIGV4YW1wbGUgdXNlcworICAgcmFuZG9taXplZCBlbmNy eXB0aW9uLCB3aGljaCBpcyB0aGUgZGVmYXVsdC4gIFJhbmRvbWl6ZWQgZW5jcnlwdGlvbiB1 c2VzIGEKKyAgIHJhbmRvbSBpbml0aWFsaXphdGlvbiB2ZWN0b3IgZm9yIGVhY2ggZW5jcnlw dGlvbiwgc28gdGhhdCBldmVuIGlmIHRoZQorICAgcGxhaW50ZXh0IG9mIHR3byByb3dzIGlz IGVxdWFsLCB0aGUgZW5jcnlwdGVkIHZhbHVlcyB3aWxsIGJlIGRpZmZlcmVudC4KKyAgIFRo aXMgcHJldmVudHMgc29tZW9uZSB3aXRoIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIGRhdGFiYXNl IHNlcnZlciB0byBtYWtlCisgICBjb21wdXRhdGlvbnMgc3VjaCBhcyBkaXN0aW5jdCBjb3Vu dHMgb24gdGhlIGVuY3J5cHRlZCB2YWx1ZXMuCisgICBEZXRlcm1pbmlzdGljIGVuY3J5cHRp b24gdXNlcyBhIGZpeGVkIGluaXRpYWxpemF0aW9uIHZlY3Rvci4gIFRoaXMgcmVkdWNlcwor ICAgc2VjdXJpdHksIGJ1dCBpdCBhbGxvd3MgZXF1YWxpdHkgc2VhcmNoZXMgb24gZW5jcnlw dGVkIHZhbHVlcy4gIFRoZQorICAgZm9sbG93aW5nIGV4YW1wbGUgZGVjbGFyZXMgYSBjb2x1 bW4gd2l0aCBkZXRlcm1pbmlzdGljIGVuY3J5cHRpb246Cis8cHJvZ3JhbWxpc3Rpbmc+CitD UkVBVEUgVEFCTEUgZW1wbG95ZWVzICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAg bmFtZSB0ZXh0IE5PVCBOVUxMLAorICAgIC4uLgorICAgIHNzbiB0ZXh0IEVOQ1JZUFRFRCBX SVRIICgKKyAgICAgICAgY29sdW1uX2VuY3J5cHRpb25fa2V5ID0gY2VrMSwgPGVtcGhhc2lz PmVuY3J5cHRpb25fdHlwZSA9IGRldGVybWluaXN0aWM8L2VtcGhhc2lzPikKKyk7Cis8L3By b2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBOdWxsIHZhbHVlcyBh cmUgbm90IGVuY3J5cHRlZCBieSB0cmFuc3BhcmVudCBjb2x1bW4gZW5jcnlwdGlvbjsgbnVs bCB2YWx1ZXMKKyAgIHNlbnQgYnkgdGhlIGNsaWVudCBhcmUgdmlzaWJsZSBhcyBudWxsIHZh bHVlcyBpbiB0aGUgZGF0YWJhc2UuICBJZiB0aGUgZmFjdAorICAgdGhhdCBhIHZhbHVlIGlz IG51bGwgbmVlZHMgdG8gYmUgaGlkZGVuIGZyb20gdGhlIHNlcnZlciwgdGhpcyBpbmZvcm1h dGlvbgorICAgbmVlZHMgdG8gYmUgZW5jb2RlZCBpbnRvIGEgbm9ubnVsbCB2YWx1ZSBpbiB0 aGUgY2xpZW50IHNvbWVob3cuCisgIDwvcGFyYT4KKyA8L3NlY3QxPgorCiAgPHNlY3QxIGlk PSJkZGwtc3lzdGVtLWNvbHVtbnMiPgogICA8dGl0bGU+U3lzdGVtIENvbHVtbnM8L3RpdGxl PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZ2xvc3Nhcnkuc2dtbCBiL2RvYy9zcmMv c2dtbC9nbG9zc2FyeS5zZ21sCmluZGV4IGQ2ZDBhM2E4MTQuLjEwNTA3ZTQzOTEgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9nbG9zc2FyeS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9n bG9zc2FyeS5zZ21sCkBAIC0zNTMsNiArMzUzLDI5IEBAIDx0aXRsZT5HbG9zc2FyeTwvdGl0 bGU+CiAgICA8L2dsb3NzZGVmPgogICA8L2dsb3NzZW50cnk+CiAKKyAgPGdsb3NzZW50cnkg aWQ9Imdsb3NzYXJ5LWNvbHVtbi1lbmNyeXB0aW9uLWtleSI+CisgICA8Z2xvc3N0ZXJtPkNv bHVtbiBlbmNyeXB0aW9uIGtleTwvZ2xvc3N0ZXJtPgorICAgPGdsb3NzZGVmPgorICAgIDxw YXJhPgorICAgICBBIGNyeXB0b2dyYXBoaWMga2V5IHVzZWQgdG8gZW5jcnlwdCBjb2x1bW4g dmFsdWVzIHdoZW4gdXNpbmcgdHJhbnNwYXJlbnQKKyAgICAgY29sdW1uIGVuY3J5cHRpb24u ICBDb2x1bW4gZW5jcnlwdGlvbiBrZXlzIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlCisg ICAgIGVuY3J5cHRlZCBieSBhbm90aGVyIGtleSwgdGhlIGNvbHVtbiBtYXN0ZXIga2V5Lgor ICAgIDwvcGFyYT4KKyAgIDwvZ2xvc3NkZWY+CisgIDwvZ2xvc3NlbnRyeT4KKworICA8Z2xv c3NlbnRyeSBpZD0iZ2xvc3NhcnktY29sdW1uLW1hc3Rlci1rZXkiPgorICAgPGdsb3NzdGVy bT5Db2x1bW4gbWFzdGVyIGtleTwvZ2xvc3N0ZXJtPgorICAgPGdsb3NzZGVmPgorICAgIDxw YXJhPgorICAgICBBIGNyeXB0b2dyYXBoaWMga2V5IHVzZWQgdG8gZW5jcnlwdCBjb2x1bW4g ZW5jcnlwdGlvbiBrZXlzLiAgKFNvIHRoZQorICAgICBjb2x1bW4gbWFzdGVyIGtleSBpcyBh IDxmaXJzdHRlcm0+a2V5IGVuY3J5cHRpb24ga2V5PC9maXJzdHRlcm0+LikKKyAgICAgQ29s dW1uIG1hc3RlciBrZXlzIGFyZSBzdG9yZWQgb3V0c2lkZSB0aGUgZGF0YWJhc2Ugc3lzdGVt LCBmb3IgZXhhbXBsZSBpbgorICAgICBhIGtleSBtYW5hZ2VtZW50IHN5c3RlbS4KKyAgICA8 L3BhcmE+CisgICA8L2dsb3NzZGVmPgorICA8L2dsb3NzZW50cnk+CisKICAgPGdsb3NzZW50 cnkgaWQ9Imdsb3NzYXJ5LWNvbW1pdCI+CiAgICA8Z2xvc3N0ZXJtPkNvbW1pdDwvZ2xvc3N0 ZXJtPgogICAgPGdsb3NzZGVmPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xpYnBxLnNn bWwgYi9kb2Mvc3JjL3NnbWwvbGlicHEuc2dtbAppbmRleCAzN2VjM2NiNGU1Li5kMTM1ZDg4 MmViIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbGlicHEuc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvbGlicHEuc2dtbApAQCAtMTk3NCw2ICsxOTc0LDExMCBAQCA8dGl0bGU+UGFyYW1l dGVyIEtleSBXb3JkczwvdGl0bGU+CiAgICAgICAgPC9wYXJhPgogICAgICAgPC9saXN0aXRl bT4KICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0ibGli cHEtY29ubmVjdC1jbWtsb29rdXAiIHhyZWZsYWJlbD0iY21rbG9va3VwIj4KKyAgICAgIDx0 ZXJtPjxsaXRlcmFsPmNta2xvb2t1cDwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICA8bGlzdGl0 ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoaXMgc3BlY2lmaWVzIGhvdyBsaWJwcSBz aG91bGQgbG9vayB1cCBjb2x1bW4gbWFzdGVyIGtleXMgKENNS3MpIGluCisgICAgICAgIG9y ZGVyIHRvIGRlY3J5cHQgdGhlIGNvbHVtbiBlbmNyeXB0aW9uIGtleXMgKENFS3MpLgorICAg ICAgICBUaGUgdmFsdWUgaXMgYSBsaXN0IG9mIDxsaXRlcmFsPmtleT12YWx1ZTwvbGl0ZXJh bD4gZW50cmllcyBzZXBhcmF0ZWQKKyAgICAgICAgYnkgc2VtaWNvbG9ucy4gIEVhY2gga2V5 IGlzIHRoZSBuYW1lIG9mIGEga2V5IHJlYWxtLCBvcgorICAgICAgICA8bGl0ZXJhbD4qPC9s aXRlcmFsPiB0byBtYXRjaCBhbGwgcmVhbG1zLiAgVGhlIHZhbHVlIGlzIGEKKyAgICAgICAg PGxpdGVyYWw+c2NoZW1lOmRhdGE8L2xpdGVyYWw+IHNwZWNpZmljYXRpb24uICBUaGUgc2No ZW1lIHNwZWNpZmllcworICAgICAgICB0aGUgbWV0aG9kIHRvIGxvb2sgdXAgdGhlIGtleSwg dGhlIHJlbWFpbmluZyBkYXRhIGlzIHNwZWNpZmljIHRvIHRoZQorICAgICAgICBzY2hlbWUu ICBQbGFjZWhvbGRlcnMgYXJlIHJlcGxhY2VkIGluIHRoZSByZW1haW5pbmcgZGF0YSBhcyBm b2xsb3dzOgorCisgICAgICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICAgICA8dmFybGlzdGVu dHJ5PgorICAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPiVhPC9saXRlcmFsPjwvdGVybT4KKyAg ICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhl IENNSyBhbGdvcml0aG0gbmFtZSAoc2VlIDx4cmVmIGxpbmtlbmQ9InByb3RvY29sLWNtay10 YWJsZSIvPikKKyAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+Cisg ICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAg ICAgICAgICA8dGVybT48bGl0ZXJhbD4lYjwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICAgICAg PGxpc3RpdGVtPgorICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBlbmNyeXB0 ZWQgQ0VLIGRhdGEgaW4gQmFzZTY0IGVuY29kaW5nIChvbmx5IGZvciB0aGUgPGxpdGVyYWw+ cnVuPC9saXRlcmFsPiBzY2hlbWUpCisgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8 L2xpc3RpdGVtPgorICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgICAgIDx2YXJs aXN0ZW50cnk+CisgICAgICAgICAgPHRlcm0+PGxpdGVyYWw+JWs8L2xpdGVyYWw+PC90ZXJt PgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAg ICBUaGUgQ01LIGtleSBuYW1lCisgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8L2xp c3RpdGVtPgorICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgICAgIDx2YXJsaXN0 ZW50cnk+CisgICAgICAgICAgPHRlcm0+PGxpdGVyYWw+JXI8L2xpdGVyYWw+PC90ZXJtPgor ICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBU aGUgcmVhbG0gbmFtZQorICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPC9saXN0aXRl bT4KKyAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICA8L3ZhcmlhYmxlbGlzdD4K KyAgICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAgQXZhaWxhYmxlIHNj aGVtZXMgYXJlOgorICAgICAgICA8dmFyaWFibGVsaXN0PgorICAgICAgICAgPHZhcmxpc3Rl bnRyeT4KKyAgICAgICAgICA8dGVybT48bGl0ZXJhbD5maWxlPC9saXRlcmFsPjwvdGVybT4K KyAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAg TG9hZCB0aGUga2V5IG1hdGVyaWFsIGZyb20gYSBmaWxlLiAgVGhlIHJlbWFpbmluZyBkYXRh IGlzIHRoZSBmaWxlCisgICAgICAgICAgICBuYW1lLiAgVXNlIHRoaXMgaWYgdGhlIENNS3Mg YXJlIGtlcHQgaW4gYSBmaWxlIG9uIHRoZSBmaWxlIHN5c3RlbS4KKyAgICAgICAgICAgPC9w YXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4K KworICAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dGVybT48bGl0ZXJhbD5y dW48L2xpdGVyYWw+PC90ZXJtPgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAg PHBhcmE+CisgICAgICAgICAgICBSdW4gdGhlIHNwZWNpZmllZCBjb21tYW5kIHRvIGRlY3J5 cHQgdGhlIENFSy4gIFRoZSByZW1haW5pbmcgZGF0YQorICAgICAgICAgICAgaXMgYSBzaGVs bCBjb21tYW5kLiAgVXNlIHRoaXMgd2l0aCBrZXkgbWFuYWdlbWVudCBzeXN0ZW1zIHRoYXQK KyAgICAgICAgICAgIHBlcmZvcm0gdGhlIGRlY3J5cHRpb24gdGhlbXNlbHZlcy4gIFRoZSBj b21tYW5kIG11c3QgcHJpbnQgdGhlCisgICAgICAgICAgICBkZWNyeXB0ZWQgcGxhaW50ZXh0 IGluIEJhc2U2NCBmb3JtYXQgb24gdGhlIHN0YW5kYXJkIG91dHB1dC4KKyAgICAgICAgICAg PC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICA8L3Zhcmxpc3RlbnRy eT4KKyAgICAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAgICAgPC9wYXJhPgorCisgICAgICAg PHBhcmE+CisgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGVtcHR5LgorICAgICAgIDwv cGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAgICBFeGFtcGxlOgorPHByb2dyYW1saXN0 aW5nPgorY21rbG9va3VwPSJyMT1maWxlOi9zb21lL3doZXJlL3NlY3JldHMvJWsucGVtOyo9 ZmlsZTovZWxzZS93aGVyZS8lci8lay5wZW0iCis8L3Byb2dyYW1saXN0aW5nPgorICAgICAg ICBUaGlzIHNwZWNpZmljYXRpb24gc2F5cywgZm9yIGtleXMgaW4gcmVhbG0gPHF1b3RlPnIx PC9xdW90ZT4sIGxvYWQKKyAgICAgICAgdGhlbSBmcm9tIHRoZSBzcGVjaWZpZWQgZmlsZSwg cmVwbGFjaW5nIDxsaXRlcmFsPiVrPC9saXRlcmFsPiBieSB0aGUKKyAgICAgICAga2V5IG5h bWUuICBGb3Iga2V5cyBpbiBvdGhlciByZWFsbXMsIGxvYWQgdGhlbSBmcm9tIHRoZSBmaWxl LAorICAgICAgICByZXBsYWNpbmcgcmVhbG0gYW5kIGtleSBuYW1lcyBhcyBzcGVjaWZpZWQu CisgICAgICAgPC9wYXJhPgorCisgICAgICAgPHBhcmE+CisgICAgICAgIEFuIGV4YW1wbGUg Zm9yIGludGVyYWN0aW5nIHdpdGggYSAoaHlwb3RoZXRpY2FsKSBrZXkgbWFuYWdlbWVudAor ICAgICAgICBzeXN0ZW06Cis8cHJvZ3JhbWxpc3Rpbmc+CitjbWtsb29rdXA9Iio9cnVuOmFj bWVrbXMgZGVjcnlwdCAtLWtleSAlayAtLWFsZyAlYSAtLWJsb2IgJyViJyIKKzwvcHJvZ3Jh bWxpc3Rpbmc+CisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92 YXJsaXN0ZW50cnk+CiAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICA8L3BhcmE+CiAgIDwvc2Vj dDI+CkBAIC0zMDIyLDYgKzMxMjYsNTcgQEAgPHRpdGxlPk1haW4gRnVuY3Rpb25zPC90aXRs ZT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2 YXJsaXN0ZW50cnkgaWQ9ImxpYnBxLVBRZXhlY1ByZXBhcmVkMiI+CisgICAgICA8dGVybT48 ZnVuY3Rpb24+UFFleGVjUHJlcGFyZWQyPC9mdW5jdGlvbj48aW5kZXh0ZXJtPjxwcmltYXJ5 PlBRZXhlY1ByZXBhcmVkMjwvcHJpbWFyeT48L2luZGV4dGVybT48L3Rlcm0+CisKKyAgICAg IDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgU2VuZHMgYSByZXF1ZXN0IHRv IGV4ZWN1dGUgYSBwcmVwYXJlZCBzdGF0ZW1lbnQgd2l0aCBnaXZlbgorICAgICAgICBwYXJh bWV0ZXJzLCBhbmQgd2FpdHMgZm9yIHRoZSByZXN1bHQsIHdpdGggc3VwcG9ydCBmb3IgZW5j cnlwdGVkIGNvbHVtbnMuCis8c3lub3BzaXM+CitQR3Jlc3VsdCAqUFFleGVjUHJlcGFyZWQy KFBHY29ubiAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq c3RtdE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuUGFyYW1zLAorICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogY29uc3QgKnBhcmFtVmFsdWVz LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgKnBhcmFtTGVuZ3RocywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICpwYXJhbUZvcm1hdHMsCisg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAqcGFyYW1Gb3JjZUNvbHVtbkVu Y3J5cHRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzdWx0Rm9ybWF0 LAorICAgICAgICAgICAgICAgICAgICAgICAgICBQR3Jlc3VsdCAqcGFyYW1EZXNjKTsKKzwv c3lub3BzaXM+CisgICAgICAgPC9wYXJhPgorCisgICAgICAgPHBhcmE+CisgICAgICAgIDx4 cmVmIGxpbmtlbmQ9ImxpYnBxLVBRZXhlY1ByZXBhcmVkMiIvPiBpcyBsaWtlIDx4cmVmCisg ICAgICAgIGxpbmtlbmQ9ImxpYnBxLVBRZXhlY1ByZXBhcmVkIi8+IHdpdGggYWRkaXRpb25h bCBzdXBwb3J0IGZvciBlbmNyeXB0ZWQKKyAgICAgICAgY29sdW1ucy4gIFRoZSBwYXJhbWV0 ZXIgPHBhcmFtZXRlcj5wYXJhbURlc2M8L3BhcmFtZXRlcj4gbXVzdCBiZSBhCisgICAgICAg IHJlc3VsdCBzZXQgb2J0YWluZWQgZnJvbSA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWRlc2Ny aWJlUHJlcGFyZWQiLz4gb24KKyAgICAgICAgdGhlIHNhbWUgcHJlcGFyZWQgc3RhdGVtZW50 LgorICAgICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAgICBUaGlzIGZ1bmN0 aW9uIG11c3QgYmUgdXNlZCBpZiBhIHN0YXRlbWVudCBwYXJhbWV0ZXIgY29ycmVzcG9uZHMg dG8gYW4KKyAgICAgICAgdW5kZXJseWluZyBlbmNyeXB0ZWQgY29sdW1uLiAgSW4gdGhhdCBz aXR1YXRpb24sIHRoZSBwcmVwYXJlZAorICAgICAgICBzdGF0ZW1lbnQgbmVlZHMgdG8gYmUg ZGVzY3JpYmVkIGZpcnN0IHNvIHRoYXQgbGlicHEgY2FuIG9idGFpbiB0aGUKKyAgICAgICAg bmVjZXNzYXJ5IGtleSBhbmQgb3RoZXIgaW5mb3JtYXRpb24gZnJvbSB0aGUgc2VydmVyLiAg V2hlbiB0aGF0IGlzCisgICAgICAgIGRvbmUsIHRoZSBwYXJhbWV0ZXJzIGNvcnJlc3BvbmRp bmcgdG8gZW5jcnlwdGVkIGNvbHVtbnMgYXJlCisgICAgICAgIGF1dG9tYXRpY2FsbHkgZW5j cnlwdGVkIGFwcHJvcHJpYXRlbHkgYmVmb3JlIGJlaW5nIHNlbnQgdG8gdGhlIHNlcnZlci4K KyAgICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIHBhcmFtZXRl ciA8cGFyYW1ldGVyPnBhcmFtRm9yY2VDb2x1bW5FbmNyeXB0aW9uczwvcGFyYW1ldGVyPgor ICAgICAgICBzcGVjaWZpZXMgd2hldGhlciBlbmNyeXB0aW9uIHNob3VsZCBiZSBmb3JjZWQg Zm9yIGEgcGFyYW1ldGVyLiAgSWYKKyAgICAgICAgZW5jcnlwdGlvbiBpcyBmb3JjZWQgZm9y IGEgcGFyYW1ldGVyIGJ1dCBpdCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGFuCisgICAgICAg IGVuY3J5cHRlZCBjb2x1bW4gb24gdGhlIHNlcnZlciwgdGhlbiB0aGUgY2FsbCB3aWxsIGZh aWwgYW5kIHRoZQorICAgICAgICBwYXJhbWV0ZXIgd2lsbCBub3QgYmUgc2VudC4gIFRoaXMg Y2FuIGJlIHVzZWQgZm9yIGFkZGl0aW9uYWwgc2VjdXJpdHkKKyAgICAgICAgYWdhaW5zdCBh IGNvbXByaW1pc2VkIHNlcnZlci4gIChUaGUgZHJhd2JhY2sgaXMgdGhhdCBhcHBsaWNhdGlv biBjb2RlCisgICAgICAgIHRoZW4gbmVlZHMgdG8gYmUga2VwdCB1cCB0byBkYXRlIHdpdGgg a25vd2xlZGdlIGFib3V0IHdoaWNoIGNvbHVtbnMKKyAgICAgICAgYXJlIGVuY3J5cHRlZCBy YXRoZXIgdGhhbiBsZXR0aW5nIHRoZSBzZXJ2ZXIgc3BlY2lmeSB0aGlzLikgIElmIHRoZQor ICAgICAgICBhcnJheSBwb2ludGVyIGlzIG51bGwgdGhlbiBlbmNyeXB0aW9uIGlzIG5vdCBm b3JjZWQgZm9yIGFueSBwYXJhbWV0ZXIuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0 aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeSBpZD0i bGlicHEtUFFkZXNjcmliZVByZXBhcmVkIj4KICAgICAgIDx0ZXJtPjxmdW5jdGlvbj5QUWRl c2NyaWJlUHJlcGFyZWQ8L2Z1bmN0aW9uPjxpbmRleHRlcm0+PHByaW1hcnk+UFFkZXNjcmli ZVByZXBhcmVkPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPjwvdGVybT4KIApAQCAtMzg2OSw2ICs0 MDI0LDI4IEBAIDx0aXRsZT5SZXRyaWV2aW5nIFF1ZXJ5IFJlc3VsdCBJbmZvcm1hdGlvbjwv dGl0bGU+CiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICA8 dmFybGlzdGVudHJ5IGlkPSJsaWJwcS1QUWZpc2VuY3J5cHRlZCI+CisgICAgIDx0ZXJtPjxm dW5jdGlvbj5QUWZpc2VuY3J5cHRlZDwvZnVuY3Rpb24+PGluZGV4dGVybT48cHJpbWFyeT5Q UWZpc2VuY3J5cHRlZDwvcHJpbWFyeT48L2luZGV4dGVybT48L3Rlcm0+CisKKyAgICAgPGxp c3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgUmV0dXJucyB3aGV0aGVyIHRoZSB2YWx1 ZSBmb3IgdGhlIGdpdmVuIGNvbHVtbiBjYW1lIGZyb20gYW4gZW5jcnlwdGVkCisgICAgICAg Y29sdW1uLiAgQ29sdW1uIG51bWJlcnMgc3RhcnQgYXQgMC4KKzxzeW5vcHNpcz4KK2ludCBQ UWZpc2VuY3J5cHRlZChjb25zdCBQR3Jlc3VsdCAqcmVzLAorICAgICAgICAgICAgICAgICAg IGludCBjb2x1bW5fbnVtYmVyKTsKKzwvc3lub3BzaXM+CisgICAgICA8L3BhcmE+CisKKyAg ICAgIDxwYXJhPgorICAgICAgIEVuY3J5cHRlZCBjb2x1bW4gdmFsdWVzIGFyZSBhdXRvbWF0 aWNhbGx5IGRlY3J5cHRlZCwgc28gdGhpcyBmdW5jdGlvbgorICAgICAgIGlzIG5vdCBuZWNl c3NhcnkgdG8gYWNjZXNzIHRoZSBjb2x1bW4gdmFsdWUuICBJdCBjYW4gYmUgdXNlZCBmb3Ig ZXh0cmEKKyAgICAgICBzZWN1cml0eSB0byBjaGVjayB3aGV0aGVyIHRoZSB2YWx1ZSB3YXMg c3RvcmVkIGVuY3J5cHRlZCB3aGVuIG9uZQorICAgICAgIHRob3VnaHQgaXQgc2hvdWxkIGJl LgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5 PgorCiAgICAgPHZhcmxpc3RlbnRyeSBpZD0ibGlicHEtUFFmc2l6ZSI+CiAgICAgIDx0ZXJt PjxmdW5jdGlvbj5QUWZzaXplPC9mdW5jdGlvbj48aW5kZXh0ZXJtPjxwcmltYXJ5PlBRZnNp emU8L3ByaW1hcnk+PC9pbmRleHRlcm0+PC90ZXJtPgogCkBAIC00MDQ0LDEyICs0MjIxLDM3 IEBAIDx0aXRsZT5SZXRyaWV2aW5nIFF1ZXJ5IFJlc3VsdCBJbmZvcm1hdGlvbjwvdGl0bGU+ CiAKICAgICAgIDxwYXJhPgogICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgb25seSB1c2VmdWwg d2hlbiBpbnNwZWN0aW5nIHRoZSByZXN1bHQgb2YKLSAgICAgICA8eHJlZiBsaW5rZW5kPSJs aWJwcS1QUWRlc2NyaWJlUHJlcGFyZWQiLz4uICBGb3Igb3RoZXIgdHlwZXMgb2YgcXVlcmll cyBpdAorICAgICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRZGVzY3JpYmVQcmVwYXJlZCIv Pi4gIEZvciBvdGhlciB0eXBlcyBvZiByZXN1bHRzIGl0CiAgICAgICAgd2lsbCByZXR1cm4g emVyby4KICAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3Rl bnRyeT4KIAorICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImxpYnBxLVBRcGFyYW1pc2VuY3J5cHRl ZCI+CisgICAgIDx0ZXJtPjxmdW5jdGlvbj5QUXBhcmFtaXNlbmNyeXB0ZWQ8L2Z1bmN0aW9u PjxpbmRleHRlcm0+PHByaW1hcnk+UFFwYXJhbWlzZW5jcnlwdGVkPC9wcmltYXJ5PjwvaW5k ZXh0ZXJtPjwvdGVybT4KKworICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAg ICBSZXR1cm5zIHdoZXRoZXIgdGhlIHZhbHVlIGZvciB0aGUgZ2l2ZW4gcGFyYW1ldGVyIGlz IGRlc3RpbmVkIGZvciBhbgorICAgICAgIGVuY3J5cHRlZCBjb2x1bW4uICBQYXJhbWV0ZXIg bnVtYmVycyBzdGFydCBhdCAwLgorPHN5bm9wc2lzPgoraW50IFBRcGFyYW1pc2VuY3J5cHRl ZChjb25zdCBQR3Jlc3VsdCAqcmVzLCBpbnQgcGFyYW1fbnVtYmVyKTsKKzwvc3lub3BzaXM+ CisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgIFZhbHVlcyBmb3IgcGFy YW1ldGVycyBkZXN0aW5lZCBmb3IgZW5jcnlwdGVkIGNvbHVtbnMgYXJlIGF1dG9tYXRpY2Fs bHkKKyAgICAgICBlbmNyeXB0ZWQsIHNvIHRoaXMgZnVuY3Rpb24gaXMgbm90IG5lY2Vzc2Fy eSB0byBwcmVwYXJlIHRoZSBwYXJhbWV0ZXIKKyAgICAgICB2YWx1ZS4gIEl0IGNhbiBiZSB1 c2VkIGZvciBleHRyYSBzZWN1cml0eSB0byBjaGVjayB3aGV0aGVyIHRoZSB2YWx1ZQorICAg ICAgIHdpbGwgYmUgc3RvcmVkIGVuY3J5cHRlZCB3aGVuIG9uZSB0aG91Z2h0IGl0IHNob3Vs ZCBiZS4gIChCdXQgc2VlIGFsc28KKyAgICAgICBhdCA8eHJlZiBsaW5rZW5kPSJsaWJwcS1Q UWV4ZWNQcmVwYXJlZDIiLz4gZm9yIGFub3RoZXIgd2F5IHRvIGRvIHRoYXQuKQorICAgICAg IFRoaXMgZnVuY3Rpb24gaXMgb25seSB1c2VmdWwgd2hlbiBpbnNwZWN0aW5nIHRoZSByZXN1 bHQgb2YgPHhyZWYKKyAgICAgICBsaW5rZW5kPSJsaWJwcS1QUWRlc2NyaWJlUHJlcGFyZWQi Lz4uICBGb3Igb3RoZXIgdHlwZXMgb2YgcmVzdWx0cyBpdAorICAgICAgIHdpbGwgcmV0dXJu IGZhbHNlLgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlz dGVudHJ5PgorCiAgICAgPHZhcmxpc3RlbnRyeSBpZD0ibGlicHEtUFFwcmludCI+CiAgICAg IDx0ZXJtPjxmdW5jdGlvbj5QUXByaW50PC9mdW5jdGlvbj48aW5kZXh0ZXJtPjxwcmltYXJ5 PlBRcHJpbnQ8L3ByaW1hcnk+PC9pbmRleHRlcm0+PC90ZXJtPgogCkBAIC00NTc1LDYgKzQ3 NzcsNyBAQCA8dGl0bGU+QXN5bmNocm9ub3VzIENvbW1hbmQgUHJvY2Vzc2luZzwvdGl0bGU+ CiAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUXNlbmRRdWVyeVBhcmFtcyIvPiwKICAgIDx4 cmVmIGxpbmtlbmQ9ImxpYnBxLVBRc2VuZFByZXBhcmUiLz4sCiAgICA8eHJlZiBsaW5rZW5k PSJsaWJwcS1QUXNlbmRRdWVyeVByZXBhcmVkIi8+LAorICAgPHhyZWYgbGlua2VuZD0ibGli cHEtUFFzZW5kUXVlcnlQcmVwYXJlZDIiLz4sCiAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1Q UXNlbmREZXNjcmliZVByZXBhcmVkIi8+LCBhbmQKICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBx LVBRc2VuZERlc2NyaWJlUG9ydGFsIi8+LAogICAgd2hpY2ggY2FuIGJlIHVzZWQgd2l0aCA8 eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWdldFJlc3VsdCIvPiB0byBkdXBsaWNhdGUKQEAgLTQ1 ODIsNiArNDc4NSw3IEBAIDx0aXRsZT5Bc3luY2hyb25vdXMgQ29tbWFuZCBQcm9jZXNzaW5n PC90aXRsZT4KICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRZXhlY1BhcmFtcyIvPiwKICAg IDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRcHJlcGFyZSIvPiwKICAgIDx4cmVmIGxpbmtlbmQ9 ImxpYnBxLVBRZXhlY1ByZXBhcmVkIi8+LAorICAgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFl eGVjUHJlcGFyZWQyIi8+LAogICAgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFkZXNjcmliZVBy ZXBhcmVkIi8+LCBhbmQKICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRZGVzY3JpYmVQb3J0 YWwiLz4KICAgIHJlc3BlY3RpdmVseS4KQEAgLTQ2OTMsNiArNDg5Nyw0NiBAQCA8dGl0bGU+ QXN5bmNocm9ub3VzIENvbW1hbmQgUHJvY2Vzc2luZzwvdGl0bGU+CiAgICAgIDwvbGlzdGl0 ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICA8dmFybGlzdGVudHJ5IGlkPSJsaWJw cS1QUXNlbmRRdWVyeVByZXBhcmVkMiI+CisgICAgIDx0ZXJtPjxmdW5jdGlvbj5QUXNlbmRR dWVyeVByZXBhcmVkMjwvZnVuY3Rpb24+PGluZGV4dGVybT48cHJpbWFyeT5QUXNlbmRRdWVy eVByZXBhcmVkMjwvcHJpbWFyeT48L2luZGV4dGVybT48L3Rlcm0+CisKKyAgICAgPGxpc3Rp dGVtPgorICAgICAgPHBhcmE+CisgICAgICAgU2VuZHMgYSByZXF1ZXN0IHRvIGV4ZWN1dGUg YSBwcmVwYXJlZCBzdGF0ZW1lbnQgd2l0aCBnaXZlbgorICAgICAgIHBhcmFtZXRlcnMsIHdp dGhvdXQgd2FpdGluZyBmb3IgdGhlIHJlc3VsdChzKSwgd2l0aCBzdXBwb3J0IGZvciBlbmNy eXB0ZWQgY29sdW1ucy4KKzxzeW5vcHNpcz4KK2ludCBQUXNlbmRRdWVyeVByZXBhcmVkMihQ R2Nvbm4gKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3Rt dE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5QYXJhbXMsCisgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIGNvbnN0ICpwYXJhbVZhbHVlcywKKyAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgKnBhcmFtTGVuZ3RocywKKyAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgKnBhcmFtRm9ybWF0cywKKyAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBpbnQgKnBhcmFtRm9yY2VDb2x1bW5FbmNyeXB0aW9u cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzdWx0Rm9ybWF0LAorICAgICAg ICAgICAgICAgICAgICAgICAgIFBHcmVzdWx0ICpwYXJhbURlc2MpOworPC9zeW5vcHNpcz4K KyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgPHhyZWYgbGlua2VuZD0i bGlicHEtUFFzZW5kUXVlcnlQcmVwYXJlZDIiLz4gaXMgbGlrZSA8eHJlZgorICAgICAgIGxp bmtlbmQ9ImxpYnBxLVBRc2VuZFF1ZXJ5UHJlcGFyZWQiLz4gd2l0aCBhZGRpdGlvbmFsIHN1 cHBvcnQgZm9yIGVuY3J5cHRlZAorICAgICAgIGNvbHVtbnMuICBUaGUgcGFyYW1ldGVyIDxw YXJhbWV0ZXI+cGFyYW1EZXNjPC9wYXJhbWV0ZXI+IG11c3QgYmUgYQorICAgICAgIHJlc3Vs dCBzZXQgb2J0YWluZWQgZnJvbSA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUXNlbmREZXNjcmli ZVByZXBhcmVkIi8+IG9uCisgICAgICAgdGhlIHNhbWUgcHJlcGFyZWQgc3RhdGVtZW50Lgor ICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICBUaGlzIGZ1bmN0aW9uIG11 c3QgYmUgdXNlZCBpZiBhIHN0YXRlbWVudCBwYXJhbWV0ZXIgY29ycmVzcG9uZHMgdG8gYW4K KyAgICAgICB1bmRlcmx5aW5nIGVuY3J5cHRlZCBjb2x1bW4uICBJbiB0aGF0IHNpdHVhdGlv biwgdGhlIHByZXBhcmVkCisgICAgICAgc3RhdGVtZW50IG5lZWRzIHRvIGJlIGRlc2NyaWJl ZCBmaXJzdCBzbyB0aGF0IGxpYnBxIGNhbiBvYnRhaW4gdGhlCisgICAgICAgbmVjZXNzYXJ5 IGtleSBhbmQgb3RoZXIgaW5mb3JtYXRpb24gZnJvbSB0aGUgc2VydmVyLiAgV2hlbiB0aGF0 IGlzCisgICAgICAgZG9uZSwgdGhlIHBhcmFtZXRlcnMgY29ycmVzcG9uZGluZyB0byBlbmNy eXB0ZWQgY29sdW1ucyBhcmUKKyAgICAgICBhdXRvbWF0aWNhbGx5IGVuY3J5cHRlZCBhcHBy b3ByaWF0ZWx5IGJlZm9yZSBiZWluZyBzZW50IHRvIHRoZSBzZXJ2ZXIuCisgICAgICAgU2Vl IGFsc28gdW5kZXIgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFleGVjUHJlcGFyZWQyIi8+Lgor ICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5Pgor CiAgICAgPHZhcmxpc3RlbnRyeSBpZD0ibGlicHEtUFFzZW5kRGVzY3JpYmVQcmVwYXJlZCI+ CiAgICAgIDx0ZXJtPjxmdW5jdGlvbj5QUXNlbmREZXNjcmliZVByZXBhcmVkPC9mdW5jdGlv bj48aW5kZXh0ZXJtPjxwcmltYXJ5PlBRc2VuZERlc2NyaWJlUHJlcGFyZWQ8L3ByaW1hcnk+ PC9pbmRleHRlcm0+PC90ZXJtPgogCkBAIC00NzQzLDYgKzQ5ODcsNyBAQCA8dGl0bGU+QXN5 bmNocm9ub3VzIENvbW1hbmQgUHJvY2Vzc2luZzwvdGl0bGU+CiAgICAgICAgPHhyZWYgbGlu a2VuZD0ibGlicHEtUFFzZW5kUXVlcnlQYXJhbXMiLz4sCiAgICAgICAgPHhyZWYgbGlua2Vu ZD0ibGlicHEtUFFzZW5kUHJlcGFyZSIvPiwKICAgICAgICA8eHJlZiBsaW5rZW5kPSJsaWJw cS1QUXNlbmRRdWVyeVByZXBhcmVkIi8+LAorICAgICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBx LVBRc2VuZFF1ZXJ5UHJlcGFyZWQyIi8+LAogICAgICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBx LVBRc2VuZERlc2NyaWJlUHJlcGFyZWQiLz4sCiAgICAgICAgPHhyZWYgbGlua2VuZD0ibGli cHEtUFFzZW5kRGVzY3JpYmVQb3J0YWwiLz4sIG9yCiAgICAgICAgPHhyZWYgbGlua2VuZD0i bGlicHEtUFFwaXBlbGluZVN5bmMiLz4KQEAgLTc3NzEsNiArODAxNiwxNiBAQCA8dGl0bGU+ RW52aXJvbm1lbnQgVmFyaWFibGVzPC90aXRsZT4KICAgICAgPC9wYXJhPgogICAgIDwvbGlz dGl0ZW0+CiAKKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgPGluZGV4dGVy bT4KKyAgICAgICA8cHJpbWFyeT48ZW52YXI+UEdDTUtMT09LVVA8L2VudmFyPjwvcHJpbWFy eT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPGVudmFyPlBHQ01LTE9PS1VQPC9lbnZh cj4gYmVoYXZlcyB0aGUgc2FtZSBhcyB0aGUgPHhyZWYKKyAgICAgIGxpbmtlbmQ9ImxpYnBx LWNvbm5lY3QtY21rbG9va3VwIi8+IGNvbm5lY3Rpb24gcGFyYW1ldGVyLgorICAgICA8L3Bh cmE+CisgICAgPC9saXN0aXRlbT4KKwogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+CiAg ICAgICA8aW5kZXh0ZXJtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNn bWwgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbAppbmRleCBhOTQ3NDNiNTg3Li4zYmMz ZDMwZmQ4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbApAQCAtMTA1MCw2ICsxMDUwLDUyIEBAIDx0aXRs ZT5FeHRlbmRlZCBRdWVyeTwvdGl0bGU+CiAgICA8L25vdGU+CiAgIDwvc2VjdDI+CiAKKyAg PHNlY3QyPgorICAgPHRpdGxlPlRyYW5zcGFyZW50IENvbHVtbiBFbmNyeXB0aW9uPC90aXRs ZT4KKworICAgPHBhcmE+CisgICAgV2hlbiB0cmFuc3BhcmVudCBjb2x1bW4gZW5jcnlwdGlv biBpcyBlbmFibGVkLCB0aGUgbWVzc2FnZXMKKyAgICBDb2x1bW5NYXN0ZXJLZXkgYW5kIENv bHVtbkVuY3J5cHRpb25LZXkgY2FuIGFwcGVhciBiZWZvcmUgUm93RGVzY3JpcHRpb24KKyAg ICBhbmQgUGFyYW1ldGVyRGVzY3JpcHRpb24gbWVzc2FnZXMuICBDbGllbnRzIHNob3VsZCBj b2xsZWN0IHRoZSBpbmZvcm1hdGlvbgorICAgIGluIHRoZXNlIG1lc3NhZ2VzIGFuZCBrZWVw IHRoZW0gZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgY29ubmVjdGlvbi4gIEEKKyAgICBzZXJ2 ZXIgaXMgbm90IHJlcXVpcmVkIHRvIHJlc2VuZCB0aGUga2V5IGluZm9ybWF0aW9uIGZvciBl YWNoIHN0YXRlbWVudAorICAgIGN5Y2xlIGlmIGl0IHdhcyBhbHJlYWR5IHNlbnQgZHVyaW5n IHRoaXMgY29ubmVjdGlvbi4gIElmIGEgc2VydmVyIHJlc2VuZHMKKyAgICBhIGtleSB0aGF0 IHRoZSBjbGllbnQgaGFzIGFscmVhZHkgc3RvcmVkICh0aGF0IGlzLCBhIGtleSBoYXZpbmcg YW4gSUQKKyAgICBlcXVhbCB0byBvbmUgYWxyZWFkeSBzdG9yZWQpLCB0aGUgbmV3IGluZm9y bWF0aW9uIHNob3VsZCByZXBsYWNlIHRoZSBvbGQuCisgICAgKFRoaXMgY291bGQgaGFwcGVu LCBmb3IgZXhhbXBsZSwgaWYgdGhlIGtleSB3YXMgYWx0ZXJlZCBieSBzZXJ2ZXItc2lkZSBE REwKKyAgICBjb21tYW5kcy4pCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIEEgY2xp ZW50IHN1cHBvcnRpbmcgdHJhbnNwYXJlbnQgY29sdW1uIGVuY3J5cHRpb24gc2hvdWxkIGF1 dG9tYXRpY2FsbHkKKyAgICBkZWNyeXB0IHRoZSBjb2x1bW4gdmFsdWUgZmllbGRzIG9mIERh dGFSb3cgbWVzc2FnZXMgY29ycmVzcG9uZGluZyB0bworICAgIGVuY3J5cHRlZCBjb2x1bW5z LCBhbmQgaXQgc2hvdWxkIGF1dG9tYXRpY2FsbHkgZW5jcnlwdCB0aGUgcGFyYW1ldGVyIHZh bHVlCisgICAgZmllbGRzIG9mIEJpbmQgbWVzc2FnZXMgY29ycmVzcG9uZGluZyB0byBlbmNy eXB0ZWQgY29sdW1ucy4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgV2hlbiBjb2x1 bW4gZW5jcnlwdGlvbiBpcyB1c2VkLCB0aGUgcGxhaW50ZXh0IGlzIGFsd2F5cyBpbiB0ZXh0 IGZvcm1hdAorICAgIChub3QgYmluYXJ5IGZvcm1hdCkuCisgICA8L3BhcmE+CisKKyAgIDxw YXJhPgorICAgIFdoZW4gZGV0ZXJtaW5pc3RpYyBlbmNyeXB0aW9uIGlzIHVzZWQsIGNsaWVu dHMgbmVlZCB0byB0YWtlIGNhcmUgdG8KKyAgICByZXByZXNlbnQgcGxhaW50ZXh0IHRvIGJl IGVuY3J5cHRlZCBpbiBhIGNvbnNpc3RlbnQgZm9ybS4gIEZvciBleGFtcGxlLAorICAgIGVu Y3J5cHRpbmcgYW4gaW50ZWdlciByZXByZXNlbnRlZCBieSB0aGUgc3RyaW5nIDxsaXRlcmFs PjEwMDwvbGl0ZXJhbD4gYW5kCisgICAgYW4gaW50ZWdlciByZXByZXNlbnRlZCBieSB0aGUg c3RyaW5nIDxsaXRlcmFsPisxMDA8L2xpdGVyYWw+IHdvdWxkIHJlc3VsdAorICAgIGluIHR3 byBkaWZmZXJlbnQgY2lwaGVydGV4dHMsIHRodXMgZGVmZWF0aW5nIHRoZSBtYWluIHBvaW50 IG9mCisgICAgZGV0ZXJtaW5pc3RpYyBlbmNyeXB0aW9uLiAgVGhpcyBwcm90b2NvbCBzcGVj aWZpY2F0aW9uIHJlcXVpcmVzIHRoZQorICAgIHBsYWludGV4dCB0byBiZSBpbiA8cXVvdGU+ Y2Fub25pY2FsPC9xdW90ZT4gZm9ybSwgd2hpY2ggaXMgdGhlIGZvcm0gdGhhdAorICAgIGlz IHByb2R1Y2VkIGJ5IHRoZSBzZXJ2ZXIgd2hlbiBpdCBvdXRwdXRzIGEgcGFydGljdWxhciB2 YWx1ZSBpbiB0ZXh0CisgICAgZm9ybWF0LgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAg ICBUaGUgY3J5cHRvZ3JhcGhpYyBvcGVyYXRpb25zIHVzZWQgZm9yIHRyYW5zcGFyZW50IGNv bHVtbiBlbmNyeXB0aW9uIGFyZQorICAgIGRlc2NyaWJlZCBpbiA8eHJlZiBsaW5rZW5kPSJw cm90b2NvbC10cmFuc3BhcmVudC1jb2x1bW4tZW5jcnlwdGlvbiIvPi4KKyAgIDwvcGFyYT4K KyAgPC9zZWN0Mj4KKwogICA8c2VjdDI+CiAgICA8dGl0bGU+RnVuY3Rpb24gQ2FsbDwvdGl0 bGU+CiAKQEAgLTM5OTEsNiArNDAzNywxMjggQEAgPHRpdGxlPk1lc3NhZ2UgRm9ybWF0czwv dGl0bGU+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFy bGlzdGVudHJ5IGlkPSJwcm90b2NvbC1tZXNzYWdlLWZvcm1hdHMtQ29sdW1uRW5jcnlwdGlv bktleSI+CisgICAgPHRlcm0+Q29sdW1uRW5jcnlwdGlvbktleSAoQik8L3Rlcm0+CisgICAg PGxpc3RpdGVtPgorICAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4K KyAgICAgICA8dGVybT5CeXRlMSgnWScpPC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAg ICAgICAgPHBhcmE+CisgICAgICAgICBJZGVudGlmaWVzIHRoZSBtZXNzYWdlIGFzIGEgY29s dW1uIGVuY3J5cHRpb24ga2V5IG1lc3NhZ2UuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8 L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50 cnk+CisgICAgICAgPHRlcm0+SW50MzI8L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAg ICAgICA8cGFyYT4KKyAgICAgICAgIExlbmd0aCBvZiBtZXNzYWdlIGNvbnRlbnRzIGluIGJ5 dGVzLCBpbmNsdWRpbmcgc2VsZi4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0 ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeT4KKyAg ICAgICA8dGVybT5JbnQzMjwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxw YXJhPgorICAgICAgICAgVGhlIHNlc3Npb24tc3BlY2lmaWMgaWRlbnRpZmllciBvZiB0aGUg a2V5LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFy bGlzdGVudHJ5PgorCisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgIDx0ZXJtPkludDMy PC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBU aGUgaWRlbnRpZmllciBvZiB0aGUgbWFzdGVyIGtleSB1c2VkIHRvIGVuY3J5cHQgdGhpcyBr ZXkuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJs aXN0ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+SW50MTY8 L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFRo ZSBpZGVudGlmaWVyIG9mIHRoZSBhbGdvcml0aG0gdXNlZCB0byBlbmNyeXB0IHRoaXMga2V5 LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlz dGVudHJ5PgorCisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgIDx0ZXJtPkludDMyPC90 ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBUaGUg bGVuZ3RoIG9mIHRoZSBmb2xsb3dpbmcga2V5IG1hdGVyaWFsLgorICAgICAgICA8L3BhcmE+ CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8 dmFybGlzdGVudHJ5PgorICAgICAgIDx0ZXJtPkJ5dGU8cmVwbGFjZWFibGU+bjwvcmVwbGFj ZWFibGU+PC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAg ICAgICBUaGUga2V5IG1hdGVyaWFsLCBlbmNyeXB0ZWQgd2l0aCB0aGUgbWFzdGVyIGtleSBy ZWZlcmVuY2VkIGFib3ZlLgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4K KyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICA8L2xp c3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InBy b3RvY29sLW1lc3NhZ2UtZm9ybWF0cy1Db2x1bW5NYXN0ZXJLZXkiPgorICAgIDx0ZXJtPkNv bHVtbk1hc3RlcktleSAoQik8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8dmFyaWFi bGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVybT5CeXRlMSgneScp PC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBJ ZGVudGlmaWVzIHRoZSBtZXNzYWdlIGFzIGEgY29sdW1uIG1hc3RlciBrZXkgbWVzc2FnZS4K KyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3Rl bnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVybT5JbnQzMjwvdGVy bT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgTGVuZ3Ro IG9mIG1lc3NhZ2UgY29udGVudHMgaW4gYnl0ZXMsIGluY2x1ZGluZyBzZWxmLgorICAgICAg ICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5Pgor CisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgIDx0ZXJtPkludDMyPC90ZXJtPgorICAg ICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBUaGUgc2Vzc2lvbi1z cGVjaWZpYyBpZGVudGlmaWVyIG9mIHRoZSBrZXkuCisgICAgICAgIDwvcGFyYT4KKyAgICAg ICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0 ZW50cnk+CisgICAgICAgPHRlcm0+U3RyaW5nPC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4K KyAgICAgICAgPHBhcmE+CisgICAgICAgICBUaGUgbmFtZSBvZiB0aGUga2V5LgorICAgICAg ICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5Pgor CisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgIDx0ZXJtPlN0cmluZzwvdGVybT4KKyAg ICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIGtleSdzIHJl YWxtLgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFy bGlzdGVudHJ5PgorICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICA8L2xpc3RpdGVtPgorICAg PC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InByb3RvY29sLW1lc3Nh Z2UtZm9ybWF0cy1Db21tYW5kQ29tcGxldGUiPgogICAgIDx0ZXJtPkNvbW1hbmRDb21wbGV0 ZSAoQik8L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpAQCAtNTA4Niw2ICs1MjU0LDM3IEBAIDx0 aXRsZT5NZXNzYWdlIEZvcm1hdHM8L3RpdGxlPgogICAgICAgICA8L3BhcmE+CiAgICAgICAg PC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlzdGVu dHJ5PgorICAgICAgIDx0ZXJtPkludDMyPC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAg ICAgICAgPHBhcmE+CisgICAgICAgICBJZiB0aGlzIHBhcmFtZXRlciBpcyB0byBiZSBlbmNy eXB0ZWQsIHRoaXMgc3BlY2lmaWVzIHRoZQorICAgICAgICAgaWRlbnRpZmllciBvZiB0aGUg Y29sdW1uIGVuY3J5cHRpb24ga2V5IHRvIHVzZSwgZWxzZSB6ZXJvLgorICAgICAgICA8L3Bh cmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAg ICA8dmFybGlzdGVudHJ5PgorICAgICAgIDx0ZXJtPkludDE2PC90ZXJtPgorICAgICAgIDxs aXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBJZiB0aGlzIHBhcmFtZXRlciBp cyB0byBiZSBlbmNyeXB0ZWQsIHRoaXMgc3BlY2lmaWVzIHRoZQorICAgICAgICAgaWRlbnRp ZmllciBvZiB0aGUgZW5jcnlwdGlvbiBhbGdvcml0aG0sIGVsc2UgemVyby4KKyAgICAgICAg PC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKwor ICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVybT5JbnQxNjwvdGVybT4KKyAgICAg ICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhpcyBpcyB1c2VkIGFz IGEgYml0IGZpZWxkIG9mIGZsYWdzLiAgSWYgdGhlIGNvbHVtbiBpcworICAgICAgICAgZW5j cnlwdGVkIGFuZCBiaXQgMHgwMSBpcyBzZXQsIHRoZSBjb2x1bW4gdXNlcyBkZXRlcm1pbmlz dGljCisgICAgICAgICBlbmNyeXB0aW9uLCBvdGhlcndpc2UgcmFuZG9taXplZCBlbmNyeXB0 aW9uLgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFy bGlzdGVudHJ5PgogICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICA8L2xpc3RpdGVtPgogICAg PC92YXJsaXN0ZW50cnk+CkBAIC01NDc0LDYgKzU2NzMsMjYgQEAgPHRpdGxlPk1lc3NhZ2Ug Rm9ybWF0czwvdGl0bGU+CiAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L2xpc3RpdGVtPgog ICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAg PHRlcm0+SW50MzI8L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4K KyAgICAgICAgIElmIHRoaXMgcGFyYW1ldGVyIGlzIHRvIGJlIGVuY3J5cHRlZCwgdGhpcyBz cGVjaWZpZXMgdGhlCisgICAgICAgICBpZGVudGlmaWVyIG9mIHRoZSBjb2x1bW4gZW5jcnlw dGlvbiBrZXkgdG8gdXNlLCBlbHNlIHplcm8uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8 L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50 cnk+CisgICAgICAgPHRlcm0+SW50MTY8L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAg ICAgICA8cGFyYT4KKyAgICAgICAgIElmIHRoaXMgcGFyYW1ldGVyIGlzIHRvIGJlIGVuY3J5 cHRlZCwgdGhpcyBzcGVjaWZpZXMgdGhlCisgICAgICAgICBpZGVudGlmaWVyIG9mIHRoZSBl bmNyeXB0IGFsZ29yaXRobSwgZWxzZSB6ZXJvLgorICAgICAgICA8L3BhcmE+CisgICAgICAg PC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICA8L3ZhcmlhYmxlbGlz dD4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CkBAIC03Mjc4LDYgKzc0 OTcsMTMzIEBAIDx0aXRsZT5Mb2dpY2FsIFJlcGxpY2F0aW9uIE1lc3NhZ2UgRm9ybWF0czwv dGl0bGU+CiAgIDwvdmFyaWFibGVsaXN0PgogIDwvc2VjdDE+CiAKKyA8c2VjdDEgaWQ9InBy b3RvY29sLXRyYW5zcGFyZW50LWNvbHVtbi1lbmNyeXB0aW9uIj4KKyAgPHRpdGxlPlRyYW5z cGFyZW50IENvbHVtbiBFbmNyeXB0aW9uIENyeXB0b2dyYXBoeTwvdGl0bGU+CisKKyAgPHBh cmE+CisgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHRoZSBjcnlwdG9ncmFwaGljIG9wZXJh dGlvbnMgdXNlZCBieSB0cmFuc3BhcmVudAorICAgY29sdW1uIGVuY3J5cHRpb24uICBBIGNs aWVudCB0aGF0IHN1cHBvcnRzIHRyYW5zcGFyZW50IGNvbHVtbiBlbmNyeXB0aW9uCisgICBu ZWVkcyB0byBpbXBsZW1lbnQgdGhlc2Ugb3BlcmF0aW9ucyBhcyBzcGVjaWZpZWQgaGVyZSBp biBvcmRlciB0byBiZSBhYmxlCisgICB0byBpbnRlcm9wZXJhdGUgd2l0aCBvdGhlciBjbGll bnRzLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBDb2x1bW4gZW5jcnlwdGlvbiBrZXkg YWxnb3JpdGhtcyBhbmQgY29sdW1uIG1hc3RlciBrZXkgYWxnb3JpdGhtcyBhcmUKKyAgIGlk ZW50aWZpZWQgYnkgaW50ZWdlcnMgaW4gdGhlIHByb3RvY29sIG1lc3NhZ2VzIGFuZCB0aGUg c3lzdGVtIGNhdGFsb2dzLgorICAgQWRkaXRpb25hbCBhbGdvcml0aG1zIG1heSBiZSBhZGRl ZCB0byB0aGlzIHByb3RvY29sIHNwZWNpZmljYXRpb24gd2l0aG91dCBhCisgICBjaGFuZ2Ug aW4gdGhlIHByb3RvY29sIHZlcnNpb24gbnVtYmVyLiAgQ2xpZW50cyBzaG91bGQgaW1wbGVt ZW50IHN1cHBvcnQKKyAgIGZvciBhbGwgdGhlIGFsZ29yaXRobXMgc3BlY2lmaWVkIGhlcmUu ICBJZiBhIGNsaWVudCBlbmNvdW50ZXJzIGFuIGFsZ29yaXRobQorICAgaWRlbnRpZmllciBp dCBkb2VzIG5vdCByZWNvZ25pemUgb3IgZG9lcyBub3Qgc3VwcG9ydCwgaXQgbXVzdCByYWlz ZSBhbgorICAgZXJyb3IuICBBIHN1aXRhYmxlIGVycm9yIG1lc3NhZ2Ugc2hvdWxkIGJlIHBy b3ZpZGVkIHRvIHRoZSBhcHBsaWNhdGlvbiBvcgorICAgdXNlci4KKyAgPC9wYXJhPgorCisg IDxzZWN0MiBpZD0icHJvdG9jb2wtY21rIj4KKyAgIDx0aXRsZT5Db2x1bW4gTWFzdGVyIEtl eXM8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICBUaGUgY3VycmVudGx5IGRlZmluZWQgYWxn b3JpdGhtcyBmb3IgY29sdW1uIG1hc3RlciBrZXlzIGFyZSBsaXN0ZWQgaW4KKyAgICA8eHJl ZiBsaW5rZW5kPSJwcm90b2NvbC1jbWstdGFibGUiLz4uCisgICA8L3BhcmE+CisKKyAgIDx0 YWJsZSBpZD0icHJvdG9jb2wtY21rLXRhYmxlIj4KKyAgICA8dGl0bGU+Q29sdW1uIE1hc3Rl ciBLZXkgQWxnb3JpdGhtczwvdGl0bGU+CisgICAgPHRncm91cCBjb2xzPSIzIj4KKyAgICAg PHRoZWFkPgorICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnk+SUQ8L2VudHJ5PgorICAgICAg IDxlbnRyeT5OYW1lPC9lbnRyeT4KKyAgICAgICA8ZW50cnk+UmVmZXJlbmNlPC9lbnRyeT4K KyAgICAgIDwvcm93PgorICAgICA8L3RoZWFkPgorICAgICA8dGJvZHk+CisgICAgICA8cm93 PgorICAgICAgIDxlbnRyeT4xPC9lbnRyeT4KKyAgICAgICA8ZW50cnk+PGxpdGVyYWw+UlNB RVNfT0FFUF9TSEFfMTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgIDxlbnRyeT48dWxpbmsg dXJsPSJodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzgwMTciPlJG QyA4MDE3PC91bGluaz4gKFBLQ1MgIzEpPC9lbnRyeT4KKyAgICAgIDwvcm93PgorICAgICAg PHJvdz4KKyAgICAgICA8ZW50cnk+MjwvZW50cnk+CisgICAgICAgPGVudHJ5PjxsaXRlcmFs PlJTQUVTX09BRVBfU0hBXzI1NjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgIDxlbnRyeT48 dWxpbmsgdXJsPSJodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzgw MTciPlJGQyA4MDE3PC91bGluaz4gKFBLQ1MgIzEpPC9lbnRyeT4KKyAgICAgIDwvcm93Pgor ICAgICA8L3Rib2R5PgorICAgIDwvdGdyb3VwPgorICAgPC90YWJsZT4KKyAgPC9zZWN0Mj4K KworICA8c2VjdDIgaWQ9InByb3RvY29sLWNlayI+CisgICA8dGl0bGU+Q29sdW1uIEVuY3J5 cHRpb24gS2V5czwvdGl0bGU+CisKKyAgIDxwYXJhPgorICAgIFRoZSBjdXJyZW50bHkgZGVm aW5lZCBhbGdvcml0aG1zIGZvciBjb2x1bW4gZW5jcnlwdGlvbiBrZXlzIGFyZSBsaXN0ZWQg aW4KKyAgICA8eHJlZiBsaW5rZW5kPSJwcm90b2NvbC1jZWstdGFibGUiLz4uCisgICA8L3Bh cmE+CisKKyAgIDx0YWJsZSBpZD0icHJvdG9jb2wtY2VrLXRhYmxlIj4KKyAgICA8dGl0bGU+ Q29sdW1uIEVuY3J5cHRpb24gS2V5IEFsZ29yaXRobXM8L3RpdGxlPgorICAgIDx0Z3JvdXAg Y29scz0iMyI+CisgICAgIDx0aGVhZD4KKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5PklE PC9lbnRyeT4KKyAgICAgICA8ZW50cnk+TmFtZTwvZW50cnk+CisgICAgICAgPGVudHJ5PlJl ZmVyZW5jZTwvZW50cnk+CisgICAgICAgPGVudHJ5PktleSBsZW5ndGggKG9jdGV0cyk8L2Vu dHJ5PgorICAgICAgPC9yb3c+CisgICAgIDwvdGhlYWQ+CisgICAgIDx0Ym9keT4KKyAgICAg IDxyb3c+CisgICAgICAgPGVudHJ5PjEzMDwvZW50cnk+CisgICAgICAgPGVudHJ5PjxsaXRl cmFsPkFFQURfQUVTXzEyOF9DQkNfSE1BQ19TSEFfMjU2PC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgPGVudHJ5Pjx1bGluayB1cmw9Imh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcv ZG9jL2h0bWwvZHJhZnQtbWNncmV3LWFlYWQtYWVzLWNiYy1obWFjLXNoYTItMDUiLz48L2Vu dHJ5PgorICAgICAgIDxlbnRyeT4zMjwvZW50cnk+CisgICAgICA8L3Jvdz4KKyAgICAgIDxy b3c+CisgICAgICAgPGVudHJ5PjEzMTwvZW50cnk+CisgICAgICAgPGVudHJ5PjxsaXRlcmFs PkFFQURfQUVTXzE5Ml9DQkNfSE1BQ19TSEFfMzg0PC9saXRlcmFsPjwvZW50cnk+CisgICAg ICAgPGVudHJ5Pjx1bGluayB1cmw9Imh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9j L2h0bWwvZHJhZnQtbWNncmV3LWFlYWQtYWVzLWNiYy1obWFjLXNoYTItMDUiLz48L2VudHJ5 PgorICAgICAgIDxlbnRyeT40ODwvZW50cnk+CisgICAgICA8L3Jvdz4KKyAgICAgIDxyb3c+ CisgICAgICAgPGVudHJ5PjEzMjwvZW50cnk+CisgICAgICAgPGVudHJ5PjxsaXRlcmFsPkFF QURfQUVTXzI1Nl9DQkNfSE1BQ19TSEFfMzg0PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg PGVudHJ5Pjx1bGluayB1cmw9Imh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0 bWwvZHJhZnQtbWNncmV3LWFlYWQtYWVzLWNiYy1obWFjLXNoYTItMDUiLz48L2VudHJ5Pgor ICAgICAgIDxlbnRyeT41NjwvZW50cnk+CisgICAgICA8L3Jvdz4KKyAgICAgIDxyb3c+Cisg ICAgICAgPGVudHJ5PjEzMzwvZW50cnk+CisgICAgICAgPGVudHJ5PjxsaXRlcmFsPkFFQURf QUVTXzI1Nl9DQkNfSE1BQ19TSEFfNTEyPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgPGVu dHJ5Pjx1bGluayB1cmw9Imh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwv ZHJhZnQtbWNncmV3LWFlYWQtYWVzLWNiYy1obWFjLXNoYTItMDUiLz48L2VudHJ5PgorICAg ICAgIDxlbnRyeT42NDwvZW50cnk+CisgICAgICA8L3Jvdz4KKyAgICAgPC90Ym9keT4KKyAg ICA8L3Rncm91cD4KKyAgIDwvdGFibGU+CisKKyAgIDxwYXJhPgorICAgIFRoZSA8cXVvdGU+ YXNzb2NpYXRlZCBkYXRhPC9xdW90ZT4gaW4gdGhlc2UgYWxnb3JpdGhtcyBjb25zaXN0cyBv ZiA0CisgICAgYnl0ZXM6IFRoZSBBU0NJSSBsZXR0ZXJzIDxsaXRlcmFsPlA8L2xpdGVyYWw+ IGFuZCA8bGl0ZXJhbD5HPC9saXRlcmFsPgorICAgIChieXRlIHZhbHVlcyA4MCBhbmQgNzEp LCBmb2xsb3dlZCBieSB0aGUgYWxnb3JpdGhtIElEIGFzIGEgMTYtYml0IHVuc2lnbmVkCisg ICAgaW50ZWdlciBpbiBuZXR3b3JrIGJ5dGUgb3JkZXIuCisgICA8L3BhcmE+CisKKyAgIDxw YXJhPgorICAgIFRoZSBsZW5ndGggb2YgdGhlIGluaXRpYWxpemF0aW9uIHZlY3RvciBpcyAx NiBvY3RldHMgZm9yIGFsbCBDRUsgYWxnb3JpdGhtCisgICAgdmFyaWFudHMuICBGb3IgcmFu ZG9taXplZCBlbmNyeXB0aW9uLCB0aGUgaW5pdGlhbGl6YXRpb24gdmVjdG9yIHNob3VsZCBi ZQorICAgIChjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcpIHJhbmRvbSBieXRlcy4gIEZvciBk ZXRlcm1pbmlzdGljIGVuY3J5cHRpb24sCisgICAgdGhlIGluaXRpYWxpemF0aW9uIHZlY3Rv ciBpcyBjb25zdHJ1Y3RlZCBhcworPHByb2dyYW1saXN0aW5nPgorU1VCU1RSSU5HKDxyZXBs YWNlYWJsZT5ITUFDPC9yZXBsYWNlYWJsZT4oPHJlcGxhY2VhYmxlPks8L3JlcGxhY2VhYmxl PiwgPHJlcGxhY2VhYmxlPlA8L3JlcGxhY2VhYmxlPikgRk9SIDxyZXBsYWNlYWJsZT5JVkxF TjwvcmVwbGFjZWFibGU+KQorPC9wcm9ncmFtbGlzdGluZz4KKyAgICB3aGVyZSA8cmVwbGFj ZWFibGU+SE1BQzwvcmVwbGFjZWFibGU+IGlzIHRoZSBITUFDIGZ1bmN0aW9uIGFzc29jaWF0 ZWQgd2l0aAorICAgIHRoZSBhbGdvcml0aG0sIDxyZXBsYWNlYWJsZT5LPC9yZXBsYWNlYWJs ZT4gaXMgdGhlIHByZWZpeCBvZiB0aGUgQ0VLIG9mCisgICAgdGhlIGxlbmd0aCByZXF1aXJl ZCBieSB0aGUgSE1BQyBmdW5jdGlvbiwgYW5kIDxyZXBsYWNlYWJsZT5QPC9yZXBsYWNlYWJs ZT4KKyAgICBpcyB0aGUgcGxhaW50ZXh0IHRvIGJlIGVuY3J5cHRlZC4gIChUaGlzIGlzIHRo ZSBzYW1lIHBvcnRpb24gb2YgdGhlIENFSworICAgIHRoYXQgdGhlIEFFQURfQUVTXypfSE1B Q18qIGFsZ29yaXRobXMgdXNlIGZvciB0aGUgTUFDIHBhcnQuKQorICAgPC9wYXJhPgorICA8 L3NlY3QyPgorIDwvc2VjdDE+CisKICA8c2VjdDEgaWQ9InByb3RvY29sLWNoYW5nZXMiPgog ICA8dGl0bGU+U3VtbWFyeSBvZiBDaGFuZ2VzIHNpbmNlIFByb3RvY29sIDIuMDwvdGl0bGU+ CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwgYi9k b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCmluZGV4IDZjOTkxOGIwYTEuLjdh MWQwM2Y4NjggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbApAQCAtMjIsNyAr MjIsNyBAQAogIDxyZWZzeW5vcHNpc2Rpdj4KIDxzeW5vcHNpcz4KIENSRUFURSBbIFsgR0xP QkFMIHwgTE9DQUwgXSB7IFRFTVBPUkFSWSB8IFRFTVAgfSB8IFVOTE9HR0VEIF0gVEFCTEUg WyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxl X25hbWU8L3JlcGxhY2VhYmxlPiAoIFsKLSAgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+ZGF0YV90eXBlPC9yZXBsYWNlYWJsZT4gWyBDT01QUkVTU0lPTiA8cmVwbGFj ZWFibGU+Y29tcHJlc3Npb25fbWV0aG9kPC9yZXBsYWNlYWJsZT4gXSBbIENPTExBVEUgPHJl cGxhY2VhYmxlPmNvbGxhdGlvbjwvcmVwbGFjZWFibGU+IF0gWyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+Y29sdW1uX2NvbnN0cmFpbnQ8L3JlcGxhY2VhYmxlPiBbIC4uLiBd IF0KKyAgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3Jl cGxhY2VhYmxlPiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGF0YV90eXBlPC9y ZXBsYWNlYWJsZT4gWyBDT01QUkVTU0lPTiA8cmVwbGFjZWFibGU+Y29tcHJlc3Npb25fbWV0 aG9kPC9yZXBsYWNlYWJsZT4gXSBbIEVOQ1JZUFRFRCBXSVRIICggPHJlcGxhY2VhYmxlPmVu Y3J5cHRpb25fb3B0aW9uczwvcmVwbGFjZWFibGU+ICkgXSBbIENPTExBVEUgPHJlcGxhY2Vh YmxlPmNvbGxhdGlvbjwvcmVwbGFjZWFibGU+IF0gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+Y29sdW1uX2NvbnN0cmFpbnQ8L3JlcGxhY2VhYmxlPiBbIC4uLiBdIF0KICAg ICB8IDxyZXBsYWNlYWJsZT50YWJsZV9jb25zdHJhaW50PC9yZXBsYWNlYWJsZT4KICAgICB8 IExJS0UgPHJlcGxhY2VhYmxlPnNvdXJjZV90YWJsZTwvcmVwbGFjZWFibGU+IFsgPHJlcGxh Y2VhYmxlPmxpa2Vfb3B0aW9uPC9yZXBsYWNlYWJsZT4gLi4uIF0gfQogICAgIFssIC4uLiBd CkBAIC0zMjIsNiArMzIyLDQ2IEBAIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KICAgICA8 L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+Cisg ICAgPHRlcm0+PGxpdGVyYWw+RU5DUllQVEVEIFdJVEggKCA8cmVwbGFjZWFibGU+ZW5jcnlw dGlvbl9vcHRpb25zPC9yZXBsYWNlYWJsZT4gKTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxp c3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIEVuYWJsZXMgdHJhbnNwYXJlbnQgY29sdW1u IGVuY3J5cHRpb24gZm9yIHRoZSBjb2x1bW4uCisgICAgICA8cmVwbGFjZWFibGU+ZW5jcnlw dGlvbl9vcHRpb25zPC9yZXBsYWNlYWJsZT4gYXJlIGNvbW1hLXNlcGFyYXRlZAorICAgICAg PGxpdGVyYWw+a2V5PXZhbHVlPC9saXRlcmFsPiBzcGVjaWZpY2F0aW9ucy4gIFRoZSBmb2xs b3dpbmcgb3B0aW9ucyBhcmUKKyAgICAgIGF2YWlsYWJsZToKKyAgICAgIDx2YXJpYWJsZWxp c3Q+CisgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+PGxpdGVyYWw+Y29s dW1uX2VuY3J5cHRpb25fa2V5PC9saXRlcmFsPjwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVt PgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRo ZSBjb2x1bW4gZW5jcnlwdGlvbiBrZXkgdG8gdXNlLiAgU3BlY2lmeWluZworICAgICAgICAg IHRoaXMgaXMgbWFuZGF0b3J5LgorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3Rp dGVtPgorICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgIDx2YXJsaXN0ZW50cnk+Cisg ICAgICAgIDx0ZXJtPjxsaXRlcmFsPmVuY3J5cHRpb25fdHlwZTwvbGl0ZXJhbD48L3Rlcm0+ CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIDxsaXRl cmFsPnJhbmRvbWl6ZWQ8L2xpdGVyYWw+ICh0aGUgZGVmYXVsdCkgb3IgPGxpdGVyYWw+ZGV0 ZXJtaW5pc3RpYzwvbGl0ZXJhbD4KKyAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0 aXRlbT4KKyAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICA8dmFybGlzdGVudHJ5Pgor ICAgICAgICA8dGVybT48bGl0ZXJhbD5hbGdvcml0aG08L2xpdGVyYWw+PC90ZXJtPgorICAg ICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGUgZW5jcnlw dGlvbiBhbGdvcml0aG0gdG8gdXNlLiAgVGhlIGRlZmF1bHQgaXMKKyAgICAgICAgICA8bGl0 ZXJhbD5BRUFEX0FFU18xMjhfQ0JDX0hNQUNfU0hBXzI1NjwvbGl0ZXJhbD4uCisgICAgICAg ICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgPC92YXJsaXN0ZW50cnk+ CisgICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+ CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8dGVybT48 bGl0ZXJhbD5JTkhFUklUUyAoIDxyZXBsYWNlYWJsZT5wYXJlbnRfdGFibGU8L3JlcGxhY2Vh YmxlPiBbLCAuLi4gXSApPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwgYi9kb2Mvc3JjL3NnbWwv cmVmL3BzcWwtcmVmLnNnbWwKaW5kZXggNjViYjBhNmEzZi4uZTZjOTNmMWIxMyAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9yZWYvcHNxbC1yZWYuc2dtbApAQCAtMjI1NSw2ICsyMjU1LDI4IEBAIDx0aXRsZT5NZXRh LUNvbW1hbmRzPC90aXRsZT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgogCiAKKyAgICAgIDx2 YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+PGxpdGVyYWw+XGdlbmNyPC9saXRlcmFsPiBb IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJhbWV0ZXI8L3JlcGxhY2VhYmxl PiBdIC4uLiA8L3Rlcm0+CisKKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgor ICAgICAgICAgU2VuZHMgdGhlIGN1cnJlbnQgcXVlcnkgYnVmZmVyIHRvIHRoZSBzZXJ2ZXIg Zm9yIGV4ZWN1dGlvbiwgYXMgd2l0aAorICAgICAgICAgPGxpdGVyYWw+XGc8L2xpdGVyYWw+ LCB3aXRoIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVycyBwYXNzZWQgZm9yIGFueQorICAgICAg ICAgcGFyYW1ldGVyIHBsYWNlaG9sZGVycyAoPGxpdGVyYWw+JDE8L2xpdGVyYWw+IGV0Yy4p LiAgVGhpcyBjb21tYW5kCisgICAgICAgICBlbnN1cmVzIHRoYXQgYW55IHBhcmFtZXRlcnMg Y29ycmVzcG9uZGluZyB0byBlbmNyeXB0ZWQgY29sdW1ucyBhcmUKKyAgICAgICAgIHNlbnQg dG8gdGhlIHNlcnZlciBlbmNyeXB0ZWQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8 cGFyYT4KKyAgICAgICAgIEV4YW1wbGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitJTlNFUlQgSU5U TyB0YmwxIFZBTFVFUyAoJDEsICQyKSBcZ2VuY3IgJ2ZpcnN0IHZhbHVlJyAnc2Vjb25kIHZh bHVlJworPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlz dGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworCiAgICAgICA8dmFybGlzdGVudHJ5 PgogICAgICAgICA8dGVybT48bGl0ZXJhbD5cZ2V0ZW52IDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wc3FsX3ZhcjwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5lbnZfdmFyPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+PC90ZXJtPgogCkBA IC0zOTQ1LDYgKzM5NjcsMTcgQEAgPHRpdGxlPlZhcmlhYmxlczwvdGl0bGU+CiAgICAgICAg IDwvbGlzdGl0ZW0+CiAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICAgPHZhcmxpc3Rl bnRyeT4KKyAgICAgICAgPHRlcm0+PHZhcm5hbWU+SElERV9DT0xVTU5fRU5DUllQVElPTjwv dmFybmFtZT48L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+Cisg ICAgICAgICBJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byA8bGl0ZXJhbD50cnVlPC9saXRl cmFsPiwgY29sdW1uIGVuY3J5cHRpb24KKyAgICAgICAgIGRldGFpbHMgYXJlIG5vdCBkaXNw bGF5ZWQuIFRoaXMgaXMgbWFpbmx5IHVzZWZ1bCBmb3IgcmVncmVzc2lvbgorICAgICAgICAg dGVzdHMuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwv dmFybGlzdGVudHJ5PgorCiAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICA8dGVybT48 dmFybmFtZT5ISURFX1RPQVNUX0NPTVBSRVNTSU9OPC92YXJuYW1lPjwvdGVybT4KICAgICAg ICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvTWFrZWZpbGUgYi9zcmMvdGVz dC9NYWtlZmlsZQppbmRleCA2OWVmMDc0ZDc1Li4yMzAwYmU4MzMyIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9NYWtlZmlsZQpAQCAtMzIsNiArMzIs NyBAQCBTVUJESVJTICs9IGxkYXAKIGVuZGlmCiBlbmRpZgogaWZlcSAoJCh3aXRoX3NzbCks b3BlbnNzbCkKK1NVQkRJUlMgKz0gY29sdW1uX2VuY3J5cHRpb24KIGlmbmVxICgsJChmaWx0 ZXIgc3NsLCQoUEdfVEVTVF9FWFRSQSkpKQogU1VCRElSUyArPSBzc2wKIGVuZGlmCkBAIC00 MSw3ICs0Miw3IEBAIGVuZGlmCiAjIGNsZWFuIiBldGMgdG8gcmVjdXJzZSBpbnRvIHRoZW0u ICAoV2UgbXVzdCBmaWx0ZXIgb3V0IHRob3NlIHRoYXQgd2UKICMgaGF2ZSBjb25kaXRpb25h bGx5IGluY2x1ZGVkIGludG8gU1VCRElSUyBhYm92ZSwgZWxzZSB0aGVyZSB3aWxsIGJlCiAj IG1ha2UgY29uZnVzaW9uLikKLUFMV0FZU19TVUJESVJTID0gJChmaWx0ZXItb3V0ICQoU1VC RElSUyksZXhhbXBsZXMga2VyYmVyb3MgaWN1IGxkYXAgc3NsKQorQUxXQVlTX1NVQkRJUlMg PSAkKGZpbHRlci1vdXQgJChTVUJESVJTKSxleGFtcGxlcyBrZXJiZXJvcyBpY3UgbGRhcCBz c2wgY29sdW1uX2VuY3J5cHRpb24pCiAKICMgV2Ugd2FudCB0byByZWN1cnNlIHRvIGFsbCBz dWJkaXJzIGZvciBhbGwgc3RhbmRhcmQgdGFyZ2V0cywgZXhjZXB0IHRoYXQKICMgaW5zdGFs bGNoZWNrIGFuZCBpbnN0YWxsIHNob3VsZCBub3QgcmVjdXJzZSBpbnRvIHRoZSBzdWJkaXJl Y3RvcnkgIm1vZHVsZXMiLgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvY29sdW1uX2VuY3J5cHRp b24vLmdpdGlnbm9yZSBiL3NyYy90ZXN0L2NvbHVtbl9lbmNyeXB0aW9uLy5naXRpZ25vcmUK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNDU2ZGJmNjlkMgotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2NvbHVtbl9lbmNyeXB0aW9uLy5naXRpZ25vcmUK QEAgLTAsMCArMSwzIEBACisvdGVzdF9jbGllbnQKKyMgR2VuZXJhdGVkIGJ5IHRlc3Qgc3Vp dGUKKy90bXBfY2hlY2svCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9jb2x1bW5fZW5jcnlwdGlv bi9NYWtlZmlsZSBiL3NyYy90ZXN0L2NvbHVtbl9lbmNyeXB0aW9uL01ha2VmaWxlCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjdhY2E4NGIxN2EKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9jb2x1bW5fZW5jcnlwdGlvbi9NYWtlZmlsZQpAQCAtMCww ICsxLDI5IEBACisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIworIyBNYWtlZmlsZSBmb3Igc3Jj L3Rlc3QvY29sdW1uX2VuY3J5cHRpb24KKyMKKyMgUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAx OTk2LTIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisjIFBvcnRp b25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBD YWxpZm9ybmlhCisjCisjIHNyYy90ZXN0L2NvbHVtbl9lbmNyeXB0aW9uL01ha2VmaWxlCisj CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdWJkaXIgPSBzcmMvdGVzdC9jb2x1bW5fZW5j cnlwdGlvbgordG9wX2J1aWxkZGlyID0gLi4vLi4vLi4KK2luY2x1ZGUgJCh0b3BfYnVpbGRk aXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKKworb3ZlcnJpZGUgQ1BQRkxBR1MgOj0gLUkkKGxp YnBxX3NyY2RpcikgJChDUFBGTEFHUykKK0xERkxBR1NfSU5URVJOQUwgKz0gLUwkKHRvcF9i dWlsZGRpcikvc3JjL2ZlX3V0aWxzIC1scGdmZXV0aWxzICQobGlicHFfcGdwb3J0KQorCith bGw6IHRlc3RfY2xpZW50CisKK2NoZWNrOiBhbGwKKwkkKHByb3ZlX2NoZWNrKQorCitpbnN0 YWxsY2hlY2s6CisJJChwcm92ZV9pbnN0YWxsY2hlY2spCisKK2NsZWFuIGRpc3RjbGVhbiBt YWludGFpbmVyLWNsZWFuOgorCXJtIC1mIHRlc3RfY2xpZW50Lm8gdGVzdF9jbGllbnQKKwly bSAtcmYgdG1wX2NoZWNrCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9jb2x1bW5fZW5jcnlwdGlv bi90LzAwMV9jb2x1bW5fZW5jcnlwdGlvbi5wbCBiL3NyYy90ZXN0L2NvbHVtbl9lbmNyeXB0 aW9uL3QvMDAxX2NvbHVtbl9lbmNyeXB0aW9uLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAuLjdhYjk4OTgxZDgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9jb2x1bW5fZW5jcnlwdGlvbi90LzAwMV9jb2x1bW5fZW5jcnlwdGlvbi5wbApAQCAtMCww ICsxLDIwNiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyMiwgUG9zdGdyZVNRTCBHbG9i YWwgRGV2ZWxvcG1lbnQgR3JvdXAKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3Vz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK215ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6 Q2x1c3Rlci0+bmV3KCdub2RlJyk7Ciskbm9kZS0+aW5pdDsKKyRub2RlLT5zdGFydDsKKwor CitzdWIgY3JlYXRlX2NtaworeworCW15ICgkY21rbmFtZSkgPSBAXzsKKworCW15ICRjbWtm aWxlbmFtZSA9ICIke1Bvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0bXBfY2hlY2t9LyR7Y21r bmFtZX0ucGVtIjsKKworCXN5c3RlbV9vcl9iYWlsICdvcGVuc3NsJywgJ2dlbnBrZXknLCAn LWFsZ29yaXRobScsICdyc2EnLCAnLW91dCcsICRjbWtmaWxlbmFtZTsKKworCSRub2RlLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CitJTlNFUlQgSU5UTyBwZ19jb2xtYXN0ZXJrZXkg KG9pZCwgY21rbmFtZSwgY21rb3duZXIsIGNta3JlYWxtKSBWQUxVRVMgKAorICAgIHBnX25l eHRvaWQoJ3BnX2NhdGFsb2cucGdfY29sbWFzdGVya2V5JywgJ29pZCcsICdwZ19jYXRhbG9n LnBnX2NvbG1hc3RlcmtleV9vaWRfaW5kZXgnKSwKKyAgICAnJHtjbWtuYW1lfScsCisgICAg KHNlbGVjdCBvaWQgZnJvbSBwZ19yb2xlcyB3aGVyZSByb2xuYW1lID0gY3VycmVudF91c2Vy KSwKKyAgICcnCispOworfSk7CisKKwlyZXR1cm4gJGNta2ZpbGVuYW1lOworfQorCitzdWIg Y3JlYXRlX2NlaworeworCW15ICgkY2VrbmFtZSwgJGJ5dGVzLCAkY21rbmFtZSwgJGNta2Zp bGVuYW1lKSA9IEBfOworCisJIyBnZW5lcmF0ZSByYW5kb20gYnl0ZXMKKwlzeXN0ZW1fb3Jf YmFpbCAnb3BlbnNzbCcsICdyYW5kJywgJy1vdXQnLCAiJHtQb3N0Z3JlU1FMOjpUZXN0OjpV dGlsczo6dG1wX2NoZWNrfS8ke2Nla25hbWV9LmJpbiIsICRieXRlczsKKworCSMgZW5jcnlw dCBDRUsgdXNpbmcgQ01LCisJc3lzdGVtX29yX2JhaWwgJ29wZW5zc2wnLCAncGtleXV0bCcs ICctZW5jcnlwdCcsCisJICAnLWlua2V5JywgJGNta2ZpbGVuYW1lLAorCSAgJy1wa2V5b3B0 JywgJ3JzYV9wYWRkaW5nX21vZGU6b2FlcCcsCisJICAnLWluJywgIiR7UG9zdGdyZVNRTDo6 VGVzdDo6VXRpbHM6OnRtcF9jaGVja30vJHtjZWtuYW1lfS5iaW4iLAorCSAgJy1vdXQnLCAi JHtQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dG1wX2NoZWNrfS8ke2Nla25hbWV9LmJpbi5l bmMiOworCisJbXkgJGNla2VuY2hleCA9IHVucGFjaygnSConLCBzbHVycF9maWxlICIke1Bv c3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0bXBfY2hlY2t9LyR7Y2VrbmFtZX0uYmluLmVuYyIp OworCisJIyBjcmVhdGUgQ0VLIGluIGRhdGFiYXNlCisJJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxcXsKK0lOU0VSVCBJTlRPIHBnX2NvbGVuY2tleSAob2lkLCBjZWtuYW1lLCBj ZWtvd25lcikgVkFMVUVTICgKKyAgICBwZ19uZXh0b2lkKCdwZ19jYXRhbG9nLnBnX2NvbGVu Y2tleScsICdvaWQnLCAncGdfY2F0YWxvZy5wZ19jb2xlbmNrZXlfb2lkX2luZGV4JyksCisg ICAgJyR7Y2VrbmFtZX0nLAorICAgIChzZWxlY3Qgb2lkIGZyb20gcGdfcm9sZXMgd2hlcmUg cm9sbmFtZSA9IGN1cnJlbnRfdXNlcikKKyk7Cit9KTsKKwkkbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHFxeworSU5TRVJUIElOVE8gcGdfY29sZW5ja2V5ZGF0YSAob2lkLCBja2Rj ZWtpZCwgY2tkY21raWQsIGNrZGNta2FsZywgY2tkZW5jdmFsKSBWQUxVRVMgKAorICAgIHBn X25leHRvaWQoJ3BnX2NhdGFsb2cucGdfY29sZW5ja2V5ZGF0YScsICdvaWQnLCAncGdfY2F0 YWxvZy5wZ19jb2xlbmNrZXlkYXRhX29pZF9pbmRleCcpLAorICAgIChTRUxFQ1Qgb2lkIEZS T00gcGdfY29sZW5ja2V5IFdIRVJFIGNla25hbWUgPSAnJHtjZWtuYW1lfScpLAorICAgIChT RUxFQ1Qgb2lkIEZST00gcGdfY29sbWFzdGVya2V5IFdIRVJFIGNta25hbWUgPSAnJHtjbWtu YW1lfScpLAorICAgIDEsCisgICAgJ1xceCR7Y2VrZW5jaGV4fScKKyk7Cit9KTsKKworCXJl dHVybjsKK30KKworCitteSAkY21rMWZpbGVuYW1lID0gY3JlYXRlX2NtaygnY21rMScpOwor bXkgJGNtazJmaWxlbmFtZSA9IGNyZWF0ZV9jbWsoJ2NtazInKTsKK2NyZWF0ZV9jZWsoJ2Nl azEnLCAzMiwgJ2NtazEnLCAkY21rMWZpbGVuYW1lKTsKK2NyZWF0ZV9jZWsoJ2NlazInLCA0 OCwgJ2NtazInLCAkY21rMmZpbGVuYW1lKTsKKworJEVOVnsnUEdDTUtMT09LVVAnfSA9ICcq PWZpbGU6JyAuICR7UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRtcF9jaGVja30gLiAnLyVr LnBlbSc7CisKKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKK0NSRUFURSBU QUJMRSB0YmwxICgKKyAgICBhIGludCwKKyAgICBiIHRleHQgRU5DUllQVEVEIFdJVEggKGNv bHVtbl9lbmNyeXB0aW9uX2tleSA9IGNlazEpCispOworfSk7CisKKyRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgcXF7CitDUkVBVEUgVEFCTEUgdGJsMiAoCisgICAgYSBpbnQsCisg ICAgYiB0ZXh0IEVOQ1JZUFRFRCBXSVRIIChlbmNyeXB0aW9uX3R5cGUgPSBkZXRlcm1pbmlz dGljLCBjb2x1bW5fZW5jcnlwdGlvbl9rZXkgPSBjZWsxKQorKTsKK30pOworCiskbm9kZS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworQ1JFQVRFIFRBQkxFIHRibDMgKAorICAgIGEg aW50LAorICAgIGIgdGV4dCBFTkNSWVBURUQgV0lUSCAoY29sdW1uX2VuY3J5cHRpb25fa2V5 ID0gY2VrMSksCisgICAgYyB0ZXh0IEVOQ1JZUFRFRCBXSVRIIChjb2x1bW5fZW5jcnlwdGlv bl9rZXkgPSBjZWsyLCBhbGdvcml0aG0gPSAnQUVBRF9BRVNfMTkyX0NCQ19ITUFDX1NIQV8z ODQnKQorKTsKK30pOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CitJTlNF UlQgSU5UTyB0YmwxIChhLCBiKSBWQUxVRVMgKDEsICQxKSBcZ2VuY3IgJ3ZhbDEnCitJTlNF UlQgSU5UTyB0YmwxIChhLCBiKSBWQUxVRVMgKDIsICQxKSBcZ2VuY3IgJ3ZhbDInCit9KTsK KworIyBFeHBlY3RlZCBjaXBoZXJ0ZXh0IGxlbmd0aCBpcyAyIGJsb2NrcyBvZiBBRVMgb3V0 cHV0ICgyICogMTYpIHBsdXMKKyMgaGFsZiBTSEEtMjU2IG91dHB1dCAoMTYpIGluIGhleCBl bmNvZGluZzogKDIgKiAxNiArIDE2KSAqIDIgPSA5NgorbGlrZSgkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHF7Q09QWSAoU0VMRUNUICogRlJPTSB0YmwxKSBUTyBTVERPVVR9KSwK Kwlxci8xXHRcXFxceFswLTlhLWZdezk2fVxuMlx0XFxcXHhbMC05YS1mXXs5Nn0vLAorCSdp bnNlcnRlZCBkYXRhIGlzIGVuY3J5cHRlZCcpOworCitteSAkcmVzdWx0OworCiskcmVzdWx0 ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxe1NFTEVDVCBhLCBiIEZST00gdGJs MSBcZ2Rlc2N9KTsKK2lzKCRyZXN1bHQsCisJcShhfGludGVnZXIKK2J8dGV4dCksCisJJ3F1 ZXJ5IHJlc3VsdCBkZXNjcmlwdGlvbiBoYXMgb3JpZ2luYWwgdHlwZScpOworCiskcmVzdWx0 ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxe1NFTEVDVCBhLCBiIEZST00gdGJs MX0pOworaXMoJHJlc3VsdCwKKwlxKDF8dmFsMQorMnx2YWwyKSwKKwknZGVjcnlwdGVkIHF1 ZXJ5IHJlc3VsdCcpOworCit7CisJbG9jYWwgJEVOVnsnUEdDTUtMT09LVVAnfSA9ICcqPXJ1 bjpicm9rZW4gJWsgIiViIic7CisJJHJlc3VsdCA9ICRub2RlLT5wc3FsKCdwb3N0Z3Jlcycs IHF7U0VMRUNUIGEsIGIgRlJPTSB0YmwxfSk7CisJaXNudCgkcmVzdWx0LCAwLCAncXVlcnkg ZmFpbHMgd2l0aCBicm9rZW4gY21rbG9va3VwIHJ1biBzZXR0aW5nJyk7Cit9CisKK3sKKwls b2NhbCAkRU5WeydQR0NNS0xPT0tVUCd9ID0gIio9cnVuOnBlcmwgLi90ZXN0X3J1bl9kZWNy eXB0LnBsICcke1Bvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0bXBfY2hlY2t9JyAlayAlYSAn JWInIjsKKworCSRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7U0VM RUNUIGEsIGIgRlJPTSB0YmwxfSk7CisJaXMoJHJlc3VsdCwKKwkJcSgxfHZhbDEKKzJ8dmFs MiksCisJCSdkZWNyeXB0ZWQgcXVlcnkgcmVzdWx0IHdpdGggY21rbG9va3VwIHJ1bicpOwor fQorCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CitJTlNFUlQgSU5UTyB0Ymwz IChhLCBiLCBjKSBWQUxVRVMgKDEsICQxLCAkMikgXGdlbmNyICd2YWxCMScgJ3ZhbEMxJwor fSk7CisKKyRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7U0VMRUNU IGEsIGIsIGMgRlJPTSB0YmwzfSk7CitpcygkcmVzdWx0LAorCXEoMXx2YWxCMXx2YWxDMSks CisJJ2RlY3J5cHRlZCBxdWVyeSByZXN1bHQgbXVsdGlwbGUga2V5cycpOworCisKKyRub2Rl LT5jb21tYW5kX2ZhaWxzX2xpa2UoWyd0ZXN0X2NsaWVudCcsICd0ZXN0MSddLCBxci9ub3Qg ZW5jcnlwdGVkLywgJ3Rlc3QgY2xpZW50IGZhaWxzIGJlY2F1c2UgcGFyYW1ldGVycyBub3Qg ZW5jcnlwdGVkJyk7CisKKyRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs IHF7U0VMRUNUIGEsIGIgRlJPTSB0YmwxfSk7CitpcygkcmVzdWx0LAorCXEoMXx2YWwxCisy fHZhbDIpLAorCSdkZWNyeXB0ZWQgcXVlcnkgcmVzdWx0IGFmdGVyIHRlc3QgY2xpZW50IGlu c2VydCcpOworCiskbm9kZS0+Y29tbWFuZF9vayhbJ3Rlc3RfY2xpZW50JywgJ3Rlc3QyJ10s ICd0ZXN0IGNsaWVudCB0ZXN0IDInKTsKKworJHJlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcXtTRUxFQ1QgYSwgYiBGUk9NIHRibDF9KTsKK2lzKCRyZXN1bHQsCisJ cSgxfHZhbDEKKzJ8dmFsMgorM3x2YWwzKSwKKwknZGVjcnlwdGVkIHF1ZXJ5IHJlc3VsdCBh ZnRlciB0ZXN0IGNsaWVudCBpbnNlcnQgMicpOworCitsaWtlKCRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcXtDT1BZIChTRUxFQ1QgKiBGUk9NIHRibDEgV0hFUkUgYSA9IDMpIFRP IFNURE9VVH0pLAorCXFyLzNcdFxcXFx4WzAtOWEtZl17OTZ9LywKKwknaW5zZXJ0ZWQgZGF0 YSBpcyBlbmNyeXB0ZWQnKTsKKworJG5vZGUtPmNvbW1hbmRfb2soWyd0ZXN0X2NsaWVudCcs ICd0ZXN0MyddLCAndGVzdCBjbGllbnQgdGVzdCAzJyk7CisKKyRyZXN1bHQgPSAkbm9kZS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7U0VMRUNUIGEsIGIgRlJPTSB0YmwxfSk7Citpcygk cmVzdWx0LAorCXEoMXx2YWwxCisyfHZhbDIKKzN8dmFsM3VwZCksCisJJ2RlY3J5cHRlZCBx dWVyeSByZXN1bHQgYWZ0ZXIgdGVzdCBjbGllbnQgaW5zZXJ0IDMnKTsKKworJG5vZGUtPmNv bW1hbmRfb2soWyd0ZXN0X2NsaWVudCcsICd0ZXN0NCddLCAndGVzdCBjbGllbnQgdGVzdCA0 Jyk7CisKKyRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7U0VMRUNU IGEsIGIgRlJPTSB0YmwyfSk7CitpcygkcmVzdWx0LAorCXEoMXx2YWxBCisyfHZhbEIKKzN8 dmFsQSksCisJJ2RlY3J5cHRlZCBxdWVyeSByZXN1bHQgYWZ0ZXIgdGVzdCBjbGllbnQgaW5z ZXJ0IDQnKTsKKworaXMoJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxe1NFTEVDVCBi LCBjb3VudCgqKSBGUk9NIHRibDIgR1JPVVAgQlkgYiBPUkRFUiBCWSAyfSksCisJcSh2YWxC fDEKK3ZhbEF8MiksCisJJ2dyb3VwIGJ5IGRldGVybWluaXN0aWNhbGx5IGVuY3J5cHRlZCBj b2x1bW4nKTsKKworJG5vZGUtPmNvbW1hbmRfb2soWyd0ZXN0X2NsaWVudCcsICd0ZXN0NSdd LCAndGVzdCBjbGllbnQgdGVzdCA1Jyk7CisKKyRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHF7U0VMRUNUIGEsIGIsIGMgRlJPTSB0YmwzfSk7CitpcygkcmVzdWx0 LAorCXEoMXx2YWxCMXx2YWxDMQorMnx2YWxCMnx2YWxDMgorM3x2YWxCM3x2YWxDMyksCisJ J2RlY3J5cHRlZCBxdWVyeSByZXN1bHQgbXVsdGlwbGUga2V5cyBhZnRlciB0ZXN0IGNsaWVu dCBpbnNlcnQgNScpOworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L2NvbHVtbl9lbmNyeXB0aW9uL3QvMDAyX2Nta19yb3RhdGlvbi5wbCBiL3NyYy90ZXN0L2Nv bHVtbl9lbmNyeXB0aW9uL3QvMDAyX2Nta19yb3RhdGlvbi5wbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi41YTEzYTIwNmViCi0tLSAvZGV2L251bGwKKysrIGIv c3JjL3Rlc3QvY29sdW1uX2VuY3J5cHRpb24vdC8wMDJfY21rX3JvdGF0aW9uLnBsCkBAIC0w LDAgKzEsMTQ0IEBACisjIENvcHlyaWdodCAoYykgMjAyMS0yMDIyLCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIFRlc3QgY29sdW1uIG1hc3RlciBrZXkgcm90 YXRpb24uICBGaXJzdCwgd2UgZ2VuZXJhdGUgQ01LMSBhbmQgYSBDRUsKKyMgZW5jcnlwdGVk IHdpdGggaXQuICBUaGVuIHdlIGFkZCBhIENNSzIgYW5kIGVuY3J5cHQgdGhlIENFSyB3aXRo IGl0CisjIGFzIHdlbGwuICAoUmVjYWxsIHRoYXQgYSBDRUsgY2FuIGJlIGFzc29jaWF0ZWQg d2l0aCBtdWx0aXBsZSBDTUtzLAorIyBmb3IgdGhpcyByZWFzb24uICBUaGF0J3Mgd2h5IHBn X2NvbGVuY2tleWRhdGEgaXMgc3BsaXQgb3V0IGZyb20KKyMgcGdfY29sZW5ja2V5LikgIFRo ZW4gd2UgcmVtb3ZlIENNSzEuICBXZSB0ZXN0IHRoYXQgd2UgY2FuIGdldAorIyBkZWNyeXB0 ZWQgcXVlcnkgcmVzdWx0cyBhdCBlYWNoIHN0ZXAuCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2Fy bmluZ3M7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FM OjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCitteSAkbm9kZSA9IFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbm9kZScpOworJG5vZGUtPmluaXQ7Ciskbm9kZS0+ c3RhcnQ7CisKKworc3ViIGNyZWF0ZV9jbWsKK3sKKwlteSAoJGNta25hbWUpID0gQF87CisK KwlteSAkY21rZmlsZW5hbWUgPSAiJHtQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dG1wX2No ZWNrfS8ke2Nta25hbWV9LnBlbSI7CisKKwlzeXN0ZW1fb3JfYmFpbCAnb3BlbnNzbCcsICdn ZW5wa2V5JywgJy1hbGdvcml0aG0nLCAncnNhJywgJy1vdXQnLCAkY21rZmlsZW5hbWU7CisK Kwkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworSU5TRVJUIElOVE8gcGdfY29s bWFzdGVya2V5IChvaWQsIGNta25hbWUsIGNta293bmVyLCBjbWtyZWFsbSkgVkFMVUVTICgK KyAgICBwZ19uZXh0b2lkKCdwZ19jYXRhbG9nLnBnX2NvbG1hc3RlcmtleScsICdvaWQnLCAn cGdfY2F0YWxvZy5wZ19jb2xtYXN0ZXJrZXlfb2lkX2luZGV4JyksCisgICAgJyR7Y21rbmFt ZX0nLAorICAgIChzZWxlY3Qgb2lkIGZyb20gcGdfcm9sZXMgd2hlcmUgcm9sbmFtZSA9IGN1 cnJlbnRfdXNlciksCisgICAnJworKTsKK30pOworCisJcmV0dXJuICRjbWtmaWxlbmFtZTsK K30KKworCitteSAkY21rMWZpbGVuYW1lID0gY3JlYXRlX2NtaygnY21rMScpOworCisjIGNy ZWF0ZSBDRUsKK215ICgkY2VrbmFtZSwgJGJ5dGVzKSA9ICgnY2VrMScsIDE2KzE2KTsKKwor IyBnZW5lcmF0ZSByYW5kb20gYnl0ZXMKK3N5c3RlbV9vcl9iYWlsICdvcGVuc3NsJywgJ3Jh bmQnLCAnLW91dCcsICIke1Bvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0bXBfY2hlY2t9LyR7 Y2VrbmFtZX0uYmluIiwgJGJ5dGVzOworCisjIGVuY3J5cHQgQ0VLIHVzaW5nIENNSworc3lz dGVtX29yX2JhaWwgJ29wZW5zc2wnLCAncGtleXV0bCcsICctZW5jcnlwdCcsCisgICctaW5r ZXknLCAkY21rMWZpbGVuYW1lLAorICAnLXBrZXlvcHQnLCAncnNhX3BhZGRpbmdfbW9kZTpv YWVwJywKKyAgJy1pbicsICIke1Bvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0bXBfY2hlY2t9 LyR7Y2VrbmFtZX0uYmluIiwKKyAgJy1vdXQnLCAiJHtQb3N0Z3JlU1FMOjpUZXN0OjpVdGls czo6dG1wX2NoZWNrfS8ke2Nla25hbWV9LmJpbi5lbmMiOworCitteSAkY2VrZW5jaGV4ID0g dW5wYWNrKCdIKicsIHNsdXJwX2ZpbGUgIiR7UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRt cF9jaGVja30vJHtjZWtuYW1lfS5iaW4uZW5jIik7CisKKyMgY3JlYXRlIENFSyBpbiBkYXRh YmFzZQorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKK0lOU0VSVCBJTlRPIHBn X2NvbGVuY2tleSAob2lkLCBjZWtuYW1lLCBjZWtvd25lcikgVkFMVUVTICgKKyAgICBwZ19u ZXh0b2lkKCdwZ19jYXRhbG9nLnBnX2NvbGVuY2tleScsICdvaWQnLCAncGdfY2F0YWxvZy5w Z19jb2xlbmNrZXlfb2lkX2luZGV4JyksCisgICAgJyR7Y2VrbmFtZX0nLAorICAgIChzZWxl Y3Qgb2lkIGZyb20gcGdfcm9sZXMgd2hlcmUgcm9sbmFtZSA9IGN1cnJlbnRfdXNlcikKKyk7 Cit9KTsKKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKK0lOU0VSVCBJTlRP IHBnX2NvbGVuY2tleWRhdGEgKG9pZCwgY2tkY2VraWQsIGNrZGNta2lkLCBja2RjbWthbGcs IGNrZGVuY3ZhbCkgVkFMVUVTICgKKyAgICBwZ19uZXh0b2lkKCdwZ19jYXRhbG9nLnBnX2Nv bGVuY2tleWRhdGEnLCAnb2lkJywgJ3BnX2NhdGFsb2cucGdfY29sZW5ja2V5ZGF0YV9vaWRf aW5kZXgnKSwKKyAgICAoU0VMRUNUIG9pZCBGUk9NIHBnX2NvbGVuY2tleSBXSEVSRSBjZWtu YW1lID0gJyR7Y2VrbmFtZX0nKSwKKyAgICAoU0VMRUNUIG9pZCBGUk9NIHBnX2NvbG1hc3Rl cmtleSBXSEVSRSBjbWtuYW1lID0gJ2NtazEnKSwKKyAgICAxLAorICAgICdcXHgke2Nla2Vu Y2hleH0nCispOworfSk7CisKKyRFTlZ7J1BHQ01LTE9PS1VQJ30gPSAnKj1maWxlOicgLiAk e1Bvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0bXBfY2hlY2t9IC4gJy8lay5wZW0nOworCisk bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworQ1JFQVRFIFRBQkxFIHRibDEgKAor ICAgIGEgaW50LAorICAgIGIgdGV4dCBFTkNSWVBURUQgV0lUSCAoY29sdW1uX2VuY3J5cHRp b25fa2V5ID0gY2VrMSkKKyk7Cit9KTsKKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LCBxeworSU5TRVJUIElOVE8gdGJsMSAoYSwgYikgVkFMVUVTICgxLCAkMSkgXGdlbmNyICd2 YWwxJworSU5TRVJUIElOVE8gdGJsMSAoYSwgYikgVkFMVUVTICgyLCAkMSkgXGdlbmNyICd2 YWwyJworfSk7CisKK2lzKCRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXtTRUxFQ1Qg YSwgYiBGUk9NIHRibDF9KSwKKwlxKDF8dmFsMQorMnx2YWwyKSwKKwknZGVjcnlwdGVkIHF1 ZXJ5IHJlc3VsdCB3aXRoIG9uZSBDTUsnKTsKKworCisjIGNyZWF0ZSBuZXcgQ01LCitteSAk Y21rMmZpbGVuYW1lID0gY3JlYXRlX2NtaygnY21rMicpOworCisjIGVuY3J5cHQgQ0VLIHVz aW5nIG5ldyBDTUsKKyMKKyMgKEhlcmUsIHdlIHN0aWxsIGhhdmUgdGhlIHBsYWludGV4dCBv ZiB0aGUgQ0VLIGF2YWlsYWJsZSBmcm9tCisjIGVhcmxpZXIuICBJbiByZWFsaXR5LCBvbmUg d291bGQgZGVjcnlwdCB0aGUgQ0VLIHdpdGggdGhlIGZpcnN0IENNSworIyBhbmQgdGhlbiBy ZS1lbmNyeXB0IGl0IHdpdGggdGhlIHNlY29uZCBDTUsuKQorc3lzdGVtX29yX2JhaWwgJ29w ZW5zc2wnLCAncGtleXV0bCcsICctZW5jcnlwdCcsCisgICctaW5rZXknLCAkY21rMmZpbGVu YW1lLAorICAnLXBrZXlvcHQnLCAncnNhX3BhZGRpbmdfbW9kZTpvYWVwJywKKyAgJy1pbics ICIke1Bvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0bXBfY2hlY2t9LyR7Y2VrbmFtZX0uYmlu IiwKKyAgJy1vdXQnLCAiJHtQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dG1wX2NoZWNrfS8k e2Nla25hbWV9LmJpbi5lbmMiOworCiskY2VrZW5jaGV4ID0gdW5wYWNrKCdIKicsIHNsdXJw X2ZpbGUgIiR7UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRtcF9jaGVja30vJHtjZWtuYW1l fS5iaW4uZW5jIik7CisKKyMgYWRkIG5ldyBkYXRhIHJlY29yZCBmb3IgQ0VLIGluIGRhdGFi YXNlCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworSU5TRVJUIElOVE8gcGdf Y29sZW5ja2V5ZGF0YSAob2lkLCBja2RjZWtpZCwgY2tkY21raWQsIGNrZGNta2FsZywgY2tk ZW5jdmFsKSBWQUxVRVMgKAorICAgIHBnX25leHRvaWQoJ3BnX2NhdGFsb2cucGdfY29sZW5j a2V5ZGF0YScsICdvaWQnLCAncGdfY2F0YWxvZy5wZ19jb2xlbmNrZXlkYXRhX29pZF9pbmRl eCcpLAorICAgIChTRUxFQ1Qgb2lkIEZST00gcGdfY29sZW5ja2V5IFdIRVJFIGNla25hbWUg PSAnJHtjZWtuYW1lfScpLAorICAgIChTRUxFQ1Qgb2lkIEZST00gcGdfY29sbWFzdGVya2V5 IFdIRVJFIGNta25hbWUgPSAnY21rMicpLAorICAgIDEsCisgICAgJ1xceCR7Y2VrZW5jaGV4 fScKKyk7Cit9KTsKKworCitpcygkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7U0VM RUNUIGEsIGIgRlJPTSB0YmwxfSksCisJcSgxfHZhbDEKKzJ8dmFsMiksCisJJ2RlY3J5cHRl ZCBxdWVyeSByZXN1bHQgd2l0aCB0d28gQ01LcycpOworCisKKyMgZGVsZXRlIENFSyByZWNv cmQgZm9yIGZpcnN0IENNSworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKK0RF TEVURSBGUk9NIHBnX2NvbGVuY2tleWRhdGEgV0hFUkUgY2tkY21raWQgPSAoU0VMRUNUIG9p ZCBGUk9NIHBnX2NvbG1hc3RlcmtleSBXSEVSRSBjbWtuYW1lID0gJ2NtazEnKTsKK30pOwor CisKK2lzKCRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXtTRUxFQ1QgYSwgYiBGUk9N IHRibDF9KSwKKwlxKDF8dmFsMQorMnx2YWwyKSwKKwknZGVjcnlwdGVkIHF1ZXJ5IHJlc3Vs dCB3aXRoIG9ubHkgbmV3IENNSycpOworCisKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvY29sdW1uX2VuY3J5cHRpb24vdGVzdF9jbGllbnQuYyBiL3NyYy90ZXN0 L2NvbHVtbl9lbmNyeXB0aW9uL3Rlc3RfY2xpZW50LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMC4uYTY0Nzc0YmIzYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L2NvbHVtbl9lbmNyeXB0aW9uL3Rlc3RfY2xpZW50LmMKQEAgLTAsMCArMSwyMTAgQEAK Ky8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXNfZmUuaCIKKworI2lu Y2x1ZGUgImxpYnBxLWZlLmgiCisKKworc3RhdGljIGludAordGVzdDEoUEdjb25uICpjb25u KQoreworCVBHcmVzdWx0ICAgKnJlczsKKwljb25zdCBjaGFyICp2YWx1ZXNbXSA9IHsiMyIs ICJ2YWwzIn07CisKKwlyZXMgPSBQUWV4ZWNQYXJhbXMoY29ubiwgIklOU0VSVCBJTlRPIHRi bDEgKGEsIGIpIFZBTFVFUyAoJDEsICQyKSIsCisJCQkJCSAgIDIsIE5VTEwsIHZhbHVlcywg TlVMTCwgTlVMTCwgMCk7CisJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09N TUFORF9PSykKKwl7CisJCWZwcmludGYoc3RkZXJyLCAiUFFleGVjUGFyYW1zKCkgZmFpbGVk OiAlc1xuIiwKKwkJCQlQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCXJldHVybiAxOworCX0K KworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50Cit0ZXN0MihQR2Nvbm4gKmNvbm4pCit7 CisJUEdyZXN1bHQgICAqcmVzLAorCQkJICAgKnJlczI7CisJY29uc3QgY2hhciAqdmFsdWVz W10gPSB7IjMiLCAidmFsMyJ9OworCWludAkJCWZvcmNlc1tdID0ge2ZhbHNlLCB0cnVlfTsK KworCXJlcyA9IFBRcHJlcGFyZShjb25uLCAiIiwgIklOU0VSVCBJTlRPIHRibDEgKGEsIGIp IFZBTFVFUyAoJDEsICQyKSIsCisJCQkJCTIsIE5VTEwpOworCWlmIChQUXJlc3VsdFN0YXR1 cyhyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spCisJeworCQlmcHJpbnRmKHN0ZGVyciwgIlBR cHJlcGFyZSgpIGZhaWxlZDogJXNcbiIsCisJCQkJUFFlcnJvck1lc3NhZ2UoY29ubikpOwor CQlyZXR1cm4gMTsKKwl9CisKKwlyZXMyID0gUFFkZXNjcmliZVByZXBhcmVkKGNvbm4sICIi KTsKKwlpZiAoUFFyZXN1bHRTdGF0dXMocmVzMikgIT0gUEdSRVNfQ09NTUFORF9PSykKKwl7 CisJCWZwcmludGYoc3RkZXJyLCAiUFFkZXNjcmliZVByZXBhcmVkKCkgZmFpbGVkOiAlc1xu IiwKKwkJCQlQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCXJldHVybiAxOworCX0KKworCWlm ICghKCFQUXBhcmFtaXNlbmNyeXB0ZWQocmVzMiwgMCkgJiYKKwkJICAgUFFwYXJhbWlzZW5j cnlwdGVkKHJlczIsIDEpKSkKKwl7CisJCWZwcmludGYoc3RkZXJyLCAid3JvbmcgcmVzdWx0 cyBmcm9tIFBRcGFyYW1pc2VuY3J5cHRlZCgpXG4iKTsKKwkJcmV0dXJuIDE7CisJfQorCisJ cmVzID0gUFFleGVjUHJlcGFyZWQyKGNvbm4sICIiLCAyLCB2YWx1ZXMsIE5VTEwsIE5VTEws IGZvcmNlcywgMCwgcmVzMik7CisJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNf Q09NTUFORF9PSykKKwl7CisJCWZwcmludGYoc3RkZXJyLCAiUFFleGVjUHJlcGFyZWQoKSBm YWlsZWQ6ICVzXG4iLAorCQkJCVBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcmV0dXJuIDE7 CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3Rlc3QzKFBHY29ubiAqY29u bikKK3sKKwlQR3Jlc3VsdCAgICpyZXMsCisJCQkgICAqcmVzMjsKKwljb25zdCBjaGFyICp2 YWx1ZXNbXSA9IHsiMyIsICJ2YWwzdXBkIn07CisKKwlyZXMgPSBQUXByZXBhcmUoY29ubiwg IiIsICJVUERBVEUgdGJsMSBTRVQgYiA9ICQyIFdIRVJFIGEgPSAkMSIsCisJCQkJCTIsIE5V TEwpOworCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spCisJ eworCQlmcHJpbnRmKHN0ZGVyciwgIlBRcHJlcGFyZSgpIGZhaWxlZDogJXNcbiIsCisJCQkJ UFFlcnJvck1lc3NhZ2UoY29ubikpOworCQlyZXR1cm4gMTsKKwl9CisKKwlyZXMyID0gUFFk ZXNjcmliZVByZXBhcmVkKGNvbm4sICIiKTsKKwlpZiAoUFFyZXN1bHRTdGF0dXMocmVzMikg IT0gUEdSRVNfQ09NTUFORF9PSykKKwl7CisJCWZwcmludGYoc3RkZXJyLCAiUFFkZXNjcmli ZVByZXBhcmVkKCkgZmFpbGVkOiAlc1xuIiwKKwkJCQlQUWVycm9yTWVzc2FnZShjb25uKSk7 CisJCXJldHVybiAxOworCX0KKworCXJlcyA9IFBRZXhlY1ByZXBhcmVkMihjb25uLCAiIiwg MiwgdmFsdWVzLCBOVUxMLCBOVUxMLCBOVUxMLCAwLCByZXMyKTsKKwlpZiAoUFFyZXN1bHRT dGF0dXMocmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQorCXsKKwkJZnByaW50ZihzdGRlcnIs ICJQUWV4ZWNQcmVwYXJlZCgpIGZhaWxlZDogJXNcbiIsCisJCQkJUFFlcnJvck1lc3NhZ2Uo Y29ubikpOworCQlyZXR1cm4gMTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dAordGVzdDQoUEdjb25uICpjb25uKQoreworCVBHcmVzdWx0ICAgKnJlcywKKwkJCSAgICpy ZXMyOworCWNvbnN0IGNoYXIgKnZhbHVlc1tdID0geyIxIiwgInZhbEEiLCAiMiIsICJ2YWxC IiwgIjMiLCAidmFsQSJ9OworCisJcmVzID0gUFFwcmVwYXJlKGNvbm4sICIiLCAiSU5TRVJU IElOVE8gdGJsMiAoYSwgYikgVkFMVUVTICgkMSwgJDIpLCAoJDMsICQ0KSwgKCQ1LCAkNiki LAorCQkJCQk2LCBOVUxMKTsKKwlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19D T01NQU5EX09LKQorCXsKKwkJZnByaW50ZihzdGRlcnIsICJQUXByZXBhcmUoKSBmYWlsZWQ6 ICVzXG4iLAorCQkJCVBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcmV0dXJuIDE7CisJfQor CisJcmVzMiA9IFBRZGVzY3JpYmVQcmVwYXJlZChjb25uLCAiIik7CisJaWYgKFBRcmVzdWx0 U3RhdHVzKHJlczIpICE9IFBHUkVTX0NPTU1BTkRfT0spCisJeworCQlmcHJpbnRmKHN0ZGVy ciwgIlBRZGVzY3JpYmVQcmVwYXJlZCgpIGZhaWxlZDogJXNcbiIsCisJCQkJUFFlcnJvck1l c3NhZ2UoY29ubikpOworCQlyZXR1cm4gMTsKKwl9CisKKwlyZXMgPSBQUWV4ZWNQcmVwYXJl ZDIoY29ubiwgIiIsIDYsIHZhbHVlcywgTlVMTCwgTlVMTCwgTlVMTCwgMCwgcmVzMik7CisJ aWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykKKwl7CisJCWZw cmludGYoc3RkZXJyLCAiUFFleGVjUHJlcGFyZWQoKSBmYWlsZWQ6ICVzXG4iLAorCQkJCVBR ZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcmV0dXJuIDE7CisJfQorCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQKK3Rlc3Q1KFBHY29ubiAqY29ubikKK3sKKwlQR3Jlc3VsdCAgICpy ZXMsCisJCQkgICAqcmVzMjsKKwljb25zdCBjaGFyICp2YWx1ZXNbXSA9IHsKKwkJIjIiLCAi dmFsQjIiLCAidmFsQzIiLAorCQkiMyIsICJ2YWxCMyIsICJ2YWxDMyIKKwl9OworCisJcmVz ID0gUFFwcmVwYXJlKGNvbm4sICIiLCAiSU5TRVJUIElOVE8gdGJsMyAoYSwgYiwgYykgVkFM VUVTICgkMSwgJDIsICQzKSwgKCQ0LCAkNSwgJDYpIiwKKwkJCQkJNiwgTlVMTCk7CisJaWYg KFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykKKwl7CisJCWZwcmlu dGYoc3RkZXJyLCAiUFFwcmVwYXJlKCkgZmFpbGVkOiAlc1xuIiwKKwkJCQlQUWVycm9yTWVz c2FnZShjb25uKSk7CisJCXJldHVybiAxOworCX0KKworCXJlczIgPSBQUWRlc2NyaWJlUHJl cGFyZWQoY29ubiwgIiIpOworCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMyKSAhPSBQR1JFU19D T01NQU5EX09LKQorCXsKKwkJZnByaW50ZihzdGRlcnIsICJQUWRlc2NyaWJlUHJlcGFyZWQo KSBmYWlsZWQ6ICVzXG4iLAorCQkJCVBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcmV0dXJu IDE7CisJfQorCisJcmVzID0gUFFleGVjUHJlcGFyZWQyKGNvbm4sICIiLCA2LCB2YWx1ZXMs IE5VTEwsIE5VTEwsIE5VTEwsIDAsIHJlczIpOworCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMp ICE9IFBHUkVTX0NPTU1BTkRfT0spCisJeworCQlmcHJpbnRmKHN0ZGVyciwgIlBRZXhlY1By ZXBhcmVkKCkgZmFpbGVkOiAlc1xuIiwKKwkJCQlQUWVycm9yTWVzc2FnZShjb25uKSk7CisJ CXJldHVybiAxOworCX0KKworCXJldHVybiAwOworfQorCitpbnQKK21haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQoreworCVBHY29ubgkgICAqY29ubjsKKwlpbnQJCQlyZXQgPSAwOwor CisJY29ubiA9IFBRY29ubmVjdGRiKCIiKTsKKwlpZiAoUFFzdGF0dXMoY29ubikgIT0gQ09O TkVDVElPTl9PSykKKwl7CisJCWZwcmludGYoc3RkZXJyLCAiQ29ubmVjdGlvbiB0byBkYXRh YmFzZSBmYWlsZWQ6ICVzXG4iLAorCQkJCVBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcmV0 dXJuIDE7CisJfQorCisJaWYgKGFyZ2MgPCAyIHx8IGFyZ3ZbMV0gPT0gTlVMTCkKKwkJcmV0 dXJuIDg3OworCWVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAidGVzdDEiKSA9PSAwKQorCQly ZXQgPSB0ZXN0MShjb25uKTsKKwllbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgInRlc3QyIikg PT0gMCkKKwkJcmV0ID0gdGVzdDIoY29ubik7CisJZWxzZSBpZiAoc3RyY21wKGFyZ3ZbMV0s ICJ0ZXN0MyIpID09IDApCisJCXJldCA9IHRlc3QzKGNvbm4pOworCWVsc2UgaWYgKHN0cmNt cChhcmd2WzFdLCAidGVzdDQiKSA9PSAwKQorCQlyZXQgPSB0ZXN0NChjb25uKTsKKwllbHNl IGlmIChzdHJjbXAoYXJndlsxXSwgInRlc3Q1IikgPT0gMCkKKwkJcmV0ID0gdGVzdDUoY29u bik7CisJZWxzZQorCQlyZXQgPSA4ODsKKworCVBRZmluaXNoKGNvbm4pOworCXJldHVybiBy ZXQ7Cit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9jb2x1bW5fZW5jcnlwdGlvbi90ZXN0X3J1 bl9kZWNyeXB0LnBsIGIvc3JjL3Rlc3QvY29sdW1uX2VuY3J5cHRpb24vdGVzdF9ydW5fZGVj cnlwdC5wbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwLi45NjY0MzQ5 ZjE0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvY29sdW1uX2VuY3J5cHRpb24vdGVz dF9ydW5fZGVjcnlwdC5wbApAQCAtMCwwICsxLDQxIEBACisjIS91c3IvYmluL3BlcmwKKwor IyBUZXN0L3NhbXBsZSBjb21tYW5kIGZvciBsaWJwcSBjbWtsb29rdXAgcnVuIHNjaGVtZQor IworIyBUaGlzIGp1c3QgcGxhY2VzIHRoZSBkYXRhIGludG8gdGVtcG9yYXJ5IGZpbGVzIGFu ZCBydW5zIHRoZSBvcGVuc3NsCisjIGNvbW1hbmQgb24gaXQuICAoSW4gcHJhY3RpY2UsIHRo aXMgY291bGQgbW9yZSBzaW1wbHkgYmUgd3JpdHRlbiBhcyBhCisjIHNoZWxsIHNjcmlwdCwg YnV0IHRoaXMgd2F5IGl0J3MgbW9yZSBwb3J0YWJsZS4pCisKKyMgQ29weXJpZ2h0IChjKSAy MDIxLTIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK3VzZSBz dHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBNSU1FOjpCYXNlNjQ7CisKK215ICgkdG1w ZGlyLCAkY21rbmFtZSwgJGFsZywgJGI2NGRhdGEpID0gQEFSR1Y7CisKK2RpZSB1bmxlc3Mg JGFsZyBlcSAnUlNBRVNfT0FFUF9TSEFfMSc7CisKK29wZW4gbXkgJGZoLCAnPjpyYXcnLCAi JHt0bXBkaXJ9L2lucHV0LnRtcCIgb3IgZGllOworcHJpbnQgJGZoIGRlY29kZV9iYXNlNjQo JGI2NGRhdGEpOworY2xvc2UgJGZoOworCitzeXN0ZW0oJ29wZW5zc2wnLCAncGtleXV0bCcs ICctZGVjcnlwdCcsCisJJy1pbmtleScsICIke3RtcGRpcn0vJHtjbWtuYW1lfS5wZW0iLCAn LXBrZXlvcHQnLCAncnNhX3BhZGRpbmdfbW9kZTpvYWVwJywKKwknLWluJywgIiR7dG1wZGly fS9pbnB1dC50bXAiLCAnLW91dCcsICIke3RtcGRpcn0vb3V0cHV0LnRtcCIpID09IDAgb3Ig ZGllOworCitvcGVuICRmaCwgJzw6cmF3JywgIiR7dG1wZGlyfS9vdXRwdXQudG1wIiBvciBk aWU7CitteSAkZGF0YSA9ICcnOworCit3aGlsZSAoMSkgeworCW15ICRzdWNjZXNzID0gcmVh ZCAkZmgsICRkYXRhLCAxMDAsIGxlbmd0aCgkZGF0YSk7CisJZGllICQhIGlmIG5vdCBkZWZp bmVkICRzdWNjZXNzOworCWxhc3QgaWYgbm90ICRzdWNjZXNzOworfQorCitjbG9zZSAkZmg7 CisKK3VubGluayAiJHt0bXBkaXJ9L2lucHV0LnRtcCIsICIke3RtcGRpcn0vb3V0cHV0LnRt cCI7CisKK3ByaW50IGVuY29kZV9iYXNlNjQoJGRhdGEpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbW9kdWxlcy9saWJwcV9waXBlbGluZS90cmFjZXMvZGlzYWxsb3dlZF9pbl9waXBlbGlu ZS50cmFjZSBiL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvdHJhY2VzL2Rpc2Fs bG93ZWRfaW5fcGlwZWxpbmUudHJhY2UKaW5kZXggZGQ2ZGYwM2YxZS4uNWZjOWMwMzQ2ZCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9saWJwcV9waXBlbGluZS90cmFjZXMvZGlz YWxsb3dlZF9pbl9waXBlbGluZS50cmFjZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2xpYnBx X3BpcGVsaW5lL3RyYWNlcy9kaXNhbGxvd2VkX2luX3BpcGVsaW5lLnRyYWNlCkBAIC0xLDUg KzEsNSBAQAogRgkxMwlRdWVyeQkgIlNFTEVDVCAxIgotQgkzMwlSb3dEZXNjcmlwdGlvbgkg MSAiP2NvbHVtbj8iIE5OTk4gMCBOTk5OIDQgLTEgMAorQgkzOQlSb3dEZXNjcmlwdGlvbgkg MSAiP2NvbHVtbj8iIE5OTk4gMCBOTk5OIDQgLTEgMCBOTk5OIDAKIEIJMTEJRGF0YVJvdwkg MSAxICcxJwogQgkxMwlDb21tYW5kQ29tcGxldGUJICJTRUxFQ1QgMSIKIEIJNQlSZWFkeUZv clF1ZXJ5CSBJCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2xpYnBxX3BpcGVsaW5l L3RyYWNlcy9tdWx0aV9waXBlbGluZXMudHJhY2UgYi9zcmMvdGVzdC9tb2R1bGVzL2xpYnBx X3BpcGVsaW5lL3RyYWNlcy9tdWx0aV9waXBlbGluZXMudHJhY2UKaW5kZXggNGI5YWIwN2Nh NC4uNzAwYjBiNjUxOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9saWJwcV9waXBl bGluZS90cmFjZXMvbXVsdGlfcGlwZWxpbmVzLnRyYWNlCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvbGlicHFfcGlwZWxpbmUvdHJhY2VzL211bHRpX3BpcGVsaW5lcy50cmFjZQpAQCAtMTAs MTMgKzEwLDEzIEBAIEYJOQlFeGVjdXRlCSAiIiAwCiBGCTQJU3luYwogQgk0CVBhcnNlQ29t cGxldGUKIEIJNAlCaW5kQ29tcGxldGUKLUIJMzMJUm93RGVzY3JpcHRpb24JIDEgIj9jb2x1 bW4/IiBOTk5OIDAgTk5OTiA0IC0xIDAKK0IJMzkJUm93RGVzY3JpcHRpb24JIDEgIj9jb2x1 bW4/IiBOTk5OIDAgTk5OTiA0IC0xIDAgTk5OTiAwCiBCCTExCURhdGFSb3cJIDEgMSAnMScK IEIJMTMJQ29tbWFuZENvbXBsZXRlCSAiU0VMRUNUIDEiCiBCCTUJUmVhZHlGb3JRdWVyeQkg SQogQgk0CVBhcnNlQ29tcGxldGUKIEIJNAlCaW5kQ29tcGxldGUKLUIJMzMJUm93RGVzY3Jp cHRpb24JIDEgIj9jb2x1bW4/IiBOTk5OIDAgTk5OTiA0IC0xIDAKK0IJMzkJUm93RGVzY3Jp cHRpb24JIDEgIj9jb2x1bW4/IiBOTk5OIDAgTk5OTiA0IC0xIDAgTk5OTiAwCiBCCTExCURh dGFSb3cJIDEgMSAnMScKIEIJMTMJQ29tbWFuZENvbXBsZXRlCSAiU0VMRUNUIDEiCiBCCTUJ UmVhZHlGb3JRdWVyeQkgSQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9saWJwcV9w aXBlbGluZS90cmFjZXMvbm9zeW5jLnRyYWNlIGIvc3JjL3Rlc3QvbW9kdWxlcy9saWJwcV9w aXBlbGluZS90cmFjZXMvbm9zeW5jLnRyYWNlCmluZGV4IGQ5OWFhYzY0OWQuLjdiMWRmYTFj MTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvdHJhY2Vz L25vc3luYy50cmFjZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2xpYnBxX3BpcGVsaW5lL3Ry YWNlcy9ub3N5bmMudHJhY2UKQEAgLTQxLDUyICs0MSw1MiBAQCBGCTkJRXhlY3V0ZQkgIiIg MAogRgk0CUZsdXNoCiBCCTQJUGFyc2VDb21wbGV0ZQogQgk0CUJpbmRDb21wbGV0ZQotQgkz MQlSb3dEZXNjcmlwdGlvbgkgMSAicmVwZWF0IiBOTk5OIDAgTk5OTiA2NTUzNSAtMSAwCitC CTM3CVJvd0Rlc2NyaXB0aW9uCSAxICJyZXBlYXQiIE5OTk4gMCBOTk5OIDY1NTM1IC0xIDAg Tk5OTiAwCiBCCTcwCURhdGFSb3cJIDEgNjAgJ3h5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4 eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4eicKIEIJMTMJQ29tbWFuZENvbXBs ZXRlCSAiU0VMRUNUIDEiCiBCCTQJUGFyc2VDb21wbGV0ZQogQgk0CUJpbmRDb21wbGV0ZQot QgkzMQlSb3dEZXNjcmlwdGlvbgkgMSAicmVwZWF0IiBOTk5OIDAgTk5OTiA2NTUzNSAtMSAw CitCCTM3CVJvd0Rlc2NyaXB0aW9uCSAxICJyZXBlYXQiIE5OTk4gMCBOTk5OIDY1NTM1IC0x IDAgTk5OTiAwCiBCCTcwCURhdGFSb3cJIDEgNjAgJ3h5enh6eHl6eHp4eXp4enh5enh6eHl6 eHp4eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4eicKIEIJMTMJQ29tbWFuZENv bXBsZXRlCSAiU0VMRUNUIDEiCiBCCTQJUGFyc2VDb21wbGV0ZQogQgk0CUJpbmRDb21wbGV0 ZQotQgkzMQlSb3dEZXNjcmlwdGlvbgkgMSAicmVwZWF0IiBOTk5OIDAgTk5OTiA2NTUzNSAt MSAwCitCCTM3CVJvd0Rlc2NyaXB0aW9uCSAxICJyZXBlYXQiIE5OTk4gMCBOTk5OIDY1NTM1 IC0xIDAgTk5OTiAwCiBCCTcwCURhdGFSb3cJIDEgNjAgJ3h5enh6eHl6eHp4eXp4enh5enh6 eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4eicKIEIJMTMJQ29tbWFu ZENvbXBsZXRlCSAiU0VMRUNUIDEiCiBCCTQJUGFyc2VDb21wbGV0ZQogQgk0CUJpbmRDb21w bGV0ZQotQgkzMQlSb3dEZXNjcmlwdGlvbgkgMSAicmVwZWF0IiBOTk5OIDAgTk5OTiA2NTUz NSAtMSAwCitCCTM3CVJvd0Rlc2NyaXB0aW9uCSAxICJyZXBlYXQiIE5OTk4gMCBOTk5OIDY1 NTM1IC0xIDAgTk5OTiAwCiBCCTcwCURhdGFSb3cJIDEgNjAgJ3h5enh6eHl6eHp4eXp4enh5 enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4eicKIEIJMTMJQ29t bWFuZENvbXBsZXRlCSAiU0VMRUNUIDEiCiBCCTQJUGFyc2VDb21wbGV0ZQogQgk0CUJpbmRD b21wbGV0ZQotQgkzMQlSb3dEZXNjcmlwdGlvbgkgMSAicmVwZWF0IiBOTk5OIDAgTk5OTiA2 NTUzNSAtMSAwCitCCTM3CVJvd0Rlc2NyaXB0aW9uCSAxICJyZXBlYXQiIE5OTk4gMCBOTk5O IDY1NTM1IC0xIDAgTk5OTiAwCiBCCTcwCURhdGFSb3cJIDEgNjAgJ3h5enh6eHl6eHp4eXp4 enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4eicKIEIJMTMJ Q29tbWFuZENvbXBsZXRlCSAiU0VMRUNUIDEiCiBCCTQJUGFyc2VDb21wbGV0ZQogQgk0CUJp bmRDb21wbGV0ZQotQgkzMQlSb3dEZXNjcmlwdGlvbgkgMSAicmVwZWF0IiBOTk5OIDAgTk5O TiA2NTUzNSAtMSAwCitCCTM3CVJvd0Rlc2NyaXB0aW9uCSAxICJyZXBlYXQiIE5OTk4gMCBO Tk5OIDY1NTM1IC0xIDAgTk5OTiAwCiBCCTcwCURhdGFSb3cJIDEgNjAgJ3h5enh6eHl6eHp4 eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4eicKIEIJ MTMJQ29tbWFuZENvbXBsZXRlCSAiU0VMRUNUIDEiCiBCCTQJUGFyc2VDb21wbGV0ZQogQgk0 CUJpbmRDb21wbGV0ZQotQgkzMQlSb3dEZXNjcmlwdGlvbgkgMSAicmVwZWF0IiBOTk5OIDAg Tk5OTiA2NTUzNSAtMSAwCitCCTM3CVJvd0Rlc2NyaXB0aW9uCSAxICJyZXBlYXQiIE5OTk4g MCBOTk5OIDY1NTM1IC0xIDAgTk5OTiAwCiBCCTcwCURhdGFSb3cJIDEgNjAgJ3h5enh6eHl6 eHp4eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4eicK IEIJMTMJQ29tbWFuZENvbXBsZXRlCSAiU0VMRUNUIDEiCiBCCTQJUGFyc2VDb21wbGV0ZQog Qgk0CUJpbmRDb21wbGV0ZQotQgkzMQlSb3dEZXNjcmlwdGlvbgkgMSAicmVwZWF0IiBOTk5O IDAgTk5OTiA2NTUzNSAtMSAwCitCCTM3CVJvd0Rlc2NyaXB0aW9uCSAxICJyZXBlYXQiIE5O Tk4gMCBOTk5OIDY1NTM1IC0xIDAgTk5OTiAwCiBCCTcwCURhdGFSb3cJIDEgNjAgJ3h5enh6 eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4 eicKIEIJMTMJQ29tbWFuZENvbXBsZXRlCSAiU0VMRUNUIDEiCiBCCTQJUGFyc2VDb21wbGV0 ZQogQgk0CUJpbmRDb21wbGV0ZQotQgkzMQlSb3dEZXNjcmlwdGlvbgkgMSAicmVwZWF0IiBO Tk5OIDAgTk5OTiA2NTUzNSAtMSAwCitCCTM3CVJvd0Rlc2NyaXB0aW9uCSAxICJyZXBlYXQi IE5OTk4gMCBOTk5OIDY1NTM1IC0xIDAgTk5OTiAwCiBCCTcwCURhdGFSb3cJIDEgNjAgJ3h5 enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4 eXp4eicKIEIJMTMJQ29tbWFuZENvbXBsZXRlCSAiU0VMRUNUIDEiCiBCCTQJUGFyc2VDb21w bGV0ZQogQgk0CUJpbmRDb21wbGV0ZQotQgkzMQlSb3dEZXNjcmlwdGlvbgkgMSAicmVwZWF0 IiBOTk5OIDAgTk5OTiA2NTUzNSAtMSAwCitCCTM3CVJvd0Rlc2NyaXB0aW9uCSAxICJyZXBl YXQiIE5OTk4gMCBOTk5OIDY1NTM1IC0xIDAgTk5OTiAwCiBCCTcwCURhdGFSb3cJIDEgNjAg J3h5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6eHp4eXp4enh5enh6eHl6 eHp4eXp4eicKIEIJMTMJQ29tbWFuZENvbXBsZXRlCSAiU0VMRUNUIDEiCiBGCTQJVGVybWlu YXRlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2xpYnBxX3BpcGVsaW5lL3RyYWNl cy9waXBlbGluZV9hYm9ydC50cmFjZSBiL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxp bmUvdHJhY2VzL3BpcGVsaW5lX2Fib3J0LnRyYWNlCmluZGV4IDNmY2U1NDhiOTkuLjZlNDMw OWNhZGQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvdHJh Y2VzL3BpcGVsaW5lX2Fib3J0LnRyYWNlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvbGlicHFf cGlwZWxpbmUvdHJhY2VzL3BpcGVsaW5lX2Fib3J0LnRyYWNlCkBAIC01MCwxNCArNTAsMTQg QEAgRgk2CUNsb3NlCSBQICIiCiBGCTQJU3luYwogQgk0CVBhcnNlQ29tcGxldGUKIEIJNAlC aW5kQ29tcGxldGUKLUIJMzMJUm93RGVzY3JpcHRpb24JIDEgIj9jb2x1bW4/IiBOTk5OIDAg Tk5OTiA2NTUzNSAtMSAwCitCCTM5CVJvd0Rlc2NyaXB0aW9uCSAxICI/Y29sdW1uPyIgTk5O TiAwIE5OTk4gNjU1MzUgLTEgMCBOTk5OIDAKIEIJMzIJRGF0YVJvdwkgMSAyMiAnMC4zMzMz MzMzMzMzMzMzMzMzMzMzMycKIEIJMzIJRGF0YVJvdwkgMSAyMiAnMC41MDAwMDAwMDAwMDAw MDAwMDAwMCcKIEIJMzIJRGF0YVJvdwkgMSAyMiAnMS4wMDAwMDAwMDAwMDAwMDAwMDAwMCcK IEIJTk4JRXJyb3JSZXNwb25zZQkgUyAiRVJST1IiIFYgIkVSUk9SIiBDICIyMjAxMiIgTSAi ZGl2aXNpb24gYnkgemVybyIgRiAiU1NTUyIgTCAiU1NTUyIgUiAiU1NTUyIgXHgwMAogQgk1 CVJlYWR5Rm9yUXVlcnkJIEkKIEYJNDAJUXVlcnkJICJTRUxFQ1QgaXRlbW5vIEZST00gcHFf cGlwZWxpbmVfZGVtbyIKLUIJMzEJUm93RGVzY3JpcHRpb24JIDEgIml0ZW1ubyIgTk5OTiAy IE5OTk4gNCAtMSAwCitCCTM3CVJvd0Rlc2NyaXB0aW9uCSAxICJpdGVtbm8iIE5OTk4gMiBO Tk5OIDQgLTEgMCBOTk5OIDAKIEIJMTEJRGF0YVJvdwkgMSAxICczJwogQgkxMwlDb21tYW5k Q29tcGxldGUJICJTRUxFQ1QgMSIKIEIJNQlSZWFkeUZvclF1ZXJ5CSBJCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL2xpYnBxX3BpcGVsaW5lL3RyYWNlcy9wcmVwYXJlZC50cmFj ZSBiL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvdHJhY2VzL3ByZXBhcmVkLnRy YWNlCmluZGV4IDFhN2RlNWMzZTYuLjhkNDViYmMwY2UgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvdHJhY2VzL3ByZXBhcmVkLnRyYWNlCisrKyBiL3Ny Yy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvdHJhY2VzL3ByZXBhcmVkLnRyYWNlCkBA IC0yLDggKzIsOCBAQCBGCTY4CVBhcnNlCSAic2VsZWN0X29uZSIgIlNFTEVDVCAkMSwgJzQy JywgJDE6Om51bWVyaWMsIGludGVydmFsICcxIHNlYyciIDEgTk5OTgogRgkxNglEZXNjcmli ZQkgUyAic2VsZWN0X29uZSIKIEYJNAlTeW5jCiBCCTQJUGFyc2VDb21wbGV0ZQotQgkxMAlQ YXJhbWV0ZXJEZXNjcmlwdGlvbgkgMSBOTk5OCi1CCTExMwlSb3dEZXNjcmlwdGlvbgkgNCAi P2NvbHVtbj8iIE5OTk4gMCBOTk5OIDQgLTEgMCAiP2NvbHVtbj8iIE5OTk4gMCBOTk5OIDY1 NTM1IC0xIDAgIm51bWVyaWMiIE5OTk4gMCBOTk5OIDY1NTM1IC0xIDAgImludGVydmFsIiBO Tk5OIDAgTk5OTiAxNiAtMSAwCitCCTE4CVBhcmFtZXRlckRlc2NyaXB0aW9uCSAxIE5OTk4g Tk5OTiAwIDAKK0IJMTM3CVJvd0Rlc2NyaXB0aW9uCSA0ICI/Y29sdW1uPyIgTk5OTiAwIE5O Tk4gNCAtMSAwIE5OTk4gMCAiP2NvbHVtbj8iIE5OTk4gMCBOTk5OIDY1NTM1IC0xIDAgTk5O TiAwICJudW1lcmljIiBOTk5OIDAgTk5OTiA2NTUzNSAtMSAwIE5OTk4gMCAiaW50ZXJ2YWwi IE5OTk4gMCBOTk5OIDE2IC0xIDAgTk5OTiAwCiBCCTUJUmVhZHlGb3JRdWVyeQkgSQogRgkx MAlRdWVyeQkgIkJFR0lOIgogQgkxMAlDb21tYW5kQ29tcGxldGUJICJCRUdJTiIKQEAgLTEz LDYgKzEzLDYgQEAgQgkxOQlDb21tYW5kQ29tcGxldGUJICJERUNMQVJFIENVUlNPUiIKIEIJ NQlSZWFkeUZvclF1ZXJ5CSBUCiBGCTE2CURlc2NyaWJlCSBQICJjdXJzb3Jfb25lIgogRgk0 CVN5bmMKLUIJMzMJUm93RGVzY3JpcHRpb24JIDEgIj9jb2x1bW4/IiBOTk5OIDAgTk5OTiA0 IC0xIDAKK0IJMzkJUm93RGVzY3JpcHRpb24JIDEgIj9jb2x1bW4/IiBOTk5OIDAgTk5OTiA0 IC0xIDAgTk5OTiAwCiBCCTUJUmVhZHlGb3JRdWVyeQkgVAogRgk0CVRlcm1pbmF0ZQpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9saWJwcV9waXBlbGluZS90cmFjZXMvc2ltcGxl X3BpcGVsaW5lLnRyYWNlIGIvc3JjL3Rlc3QvbW9kdWxlcy9saWJwcV9waXBlbGluZS90cmFj ZXMvc2ltcGxlX3BpcGVsaW5lLnRyYWNlCmluZGV4IDVjOTQ3NDliYzEuLjVmNDg0OTQyNWQg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvdHJhY2VzL3Np bXBsZV9waXBlbGluZS50cmFjZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2xpYnBxX3BpcGVs aW5lL3RyYWNlcy9zaW1wbGVfcGlwZWxpbmUudHJhY2UKQEAgLTUsNyArNSw3IEBAIEYJOQlF eGVjdXRlCSAiIiAwCiBGCTQJU3luYwogQgk0CVBhcnNlQ29tcGxldGUKIEIJNAlCaW5kQ29t cGxldGUKLUIJMzMJUm93RGVzY3JpcHRpb24JIDEgIj9jb2x1bW4/IiBOTk5OIDAgTk5OTiA0 IC0xIDAKK0IJMzkJUm93RGVzY3JpcHRpb24JIDEgIj9jb2x1bW4/IiBOTk5OIDAgTk5OTiA0 IC0xIDAgTk5OTiAwCiBCCTExCURhdGFSb3cJIDEgMSAnMScKIEIJMTMJQ29tbWFuZENvbXBs ZXRlCSAiU0VMRUNUIDEiCiBCCTUJUmVhZHlGb3JRdWVyeQkgSQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy9saWJwcV9waXBlbGluZS90cmFjZXMvc2luZ2xlcm93LnRyYWNlIGIv c3JjL3Rlc3QvbW9kdWxlcy9saWJwcV9waXBlbGluZS90cmFjZXMvc2luZ2xlcm93LnRyYWNl CmluZGV4IDlkZTk5YmVmY2MuLjE5OWRmNGQ0ZjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21v ZHVsZXMvbGlicHFfcGlwZWxpbmUvdHJhY2VzL3NpbmdsZXJvdy50cmFjZQorKysgYi9zcmMv dGVzdC9tb2R1bGVzL2xpYnBxX3BpcGVsaW5lL3RyYWNlcy9zaW5nbGVyb3cudHJhY2UKQEAg LTEzLDE0ICsxMywxNCBAQCBGCTkJRXhlY3V0ZQkgIiIgMAogRgk0CVN5bmMKIEIJNAlQYXJz ZUNvbXBsZXRlCiBCCTQJQmluZENvbXBsZXRlCi1CCTQwCVJvd0Rlc2NyaXB0aW9uCSAxICJn ZW5lcmF0ZV9zZXJpZXMiIE5OTk4gMCBOTk5OIDQgLTEgMAorQgk0NglSb3dEZXNjcmlwdGlv bgkgMSAiZ2VuZXJhdGVfc2VyaWVzIiBOTk5OIDAgTk5OTiA0IC0xIDAgTk5OTiAwCiBCCTEy CURhdGFSb3cJIDEgMiAnNDInCiBCCTEyCURhdGFSb3cJIDEgMiAnNDMnCiBCCTEyCURhdGFS b3cJIDEgMiAnNDQnCiBCCTEzCUNvbW1hbmRDb21wbGV0ZQkgIlNFTEVDVCAzIgogQgk0CVBh cnNlQ29tcGxldGUKIEIJNAlCaW5kQ29tcGxldGUKLUIJNDAJUm93RGVzY3JpcHRpb24JIDEg ImdlbmVyYXRlX3NlcmllcyIgTk5OTiAwIE5OTk4gNCAtMSAwCitCCTQ2CVJvd0Rlc2NyaXB0 aW9uCSAxICJnZW5lcmF0ZV9zZXJpZXMiIE5OTk4gMCBOTk5OIDQgLTEgMCBOTk5OIDAKIEIJ MTIJRGF0YVJvdwkgMSAyICc0MicKIEIJMTIJRGF0YVJvdwkgMSAyICc0MycKIEIJMTIJRGF0 YVJvdwkgMSAyICc0NCcKQEAgLTI4LDcgKzI4LDcgQEAgQgkxMglEYXRhUm93CSAxIDIgJzQ1 JwogQgkxMwlDb21tYW5kQ29tcGxldGUJICJTRUxFQ1QgNCIKIEIJNAlQYXJzZUNvbXBsZXRl CiBCCTQJQmluZENvbXBsZXRlCi1CCTQwCVJvd0Rlc2NyaXB0aW9uCSAxICJnZW5lcmF0ZV9z ZXJpZXMiIE5OTk4gMCBOTk5OIDQgLTEgMAorQgk0NglSb3dEZXNjcmlwdGlvbgkgMSAiZ2Vu ZXJhdGVfc2VyaWVzIiBOTk5OIDAgTk5OTiA0IC0xIDAgTk5OTiAwCiBCCTEyCURhdGFSb3cJ IDEgMiAnNDInCiBCCTEyCURhdGFSb3cJIDEgMiAnNDMnCiBCCTEyCURhdGFSb3cJIDEgMiAn NDQnCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2xpYnBxX3BpcGVsaW5lL3RyYWNl cy90cmFuc2FjdGlvbi50cmFjZSBiL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUv dHJhY2VzL3RyYW5zYWN0aW9uLnRyYWNlCmluZGV4IDFkY2MyMzczYzAuLmE2ODY5YzRhNWIg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvdHJhY2VzL3Ry YW5zYWN0aW9uLnRyYWNlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUv dHJhY2VzL3RyYW5zYWN0aW9uLnRyYWNlCkBAIC01NCw3ICs1NCw3IEBAIEIJMTUJQ29tbWFu ZENvbXBsZXRlCSAiSU5TRVJUIDAgMSIKIEIJNQlSZWFkeUZvclF1ZXJ5CSBJCiBCCTUJUmVh ZHlGb3JRdWVyeQkgSQogRgkzNAlRdWVyeQkgIlNFTEVDVCAqIEZST00gcHFfcGlwZWxpbmVf dHN0IgotQgkyNwlSb3dEZXNjcmlwdGlvbgkgMSAiaWQiIE5OTk4gMSBOTk5OIDQgLTEgMAor QgkzMwlSb3dEZXNjcmlwdGlvbgkgMSAiaWQiIE5OTk4gMSBOTk5OIDQgLTEgMCBOTk5OIDAK IEIJMTEJRGF0YVJvdwkgMSAxICczJwogQgkxMwlDb21tYW5kQ29tcGxldGUJICJTRUxFQ1Qg MSIKIEIJNQlSZWFkeUZvclF1ZXJ5CSBJCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2NvbHVtbl9lbmNyeXB0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY29sdW1uX2VuY3J5cHRpb24ub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAuLmY4ZGI0ZTE3ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2NvbHVtbl9lbmNyeXB0aW9uLm91dApAQCAtMCwwICsxLDU5IEBA Citcc2V0IEhJREVfQ09MVU1OX0VOQ1JZUFRJT04gZmFsc2UKKy8qIEltYWdpbmU6CitDUkVB VEUgQ09MVU1OIE1BU1RFUiBLRVkgY21rMSAoCisgICAgcmVhbG0gPSAndGVzdCcKKyk7Cisq LworSU5TRVJUIElOVE8gcGdfY29sbWFzdGVya2V5IChvaWQsIGNta25hbWUsIGNta293bmVy LCBjbWtyZWFsbSkgVkFMVUVTICgKKyAgICBwZ19uZXh0b2lkKCdwZ19jYXRhbG9nLnBnX2Nv bG1hc3RlcmtleScsICdvaWQnLCAncGdfY2F0YWxvZy5wZ19jb2xtYXN0ZXJrZXlfb2lkX2lu ZGV4JyksCisgICAgJ2NtazEnLAorICAgIChzZWxlY3Qgb2lkIGZyb20gcGdfcm9sZXMgd2hl cmUgcm9sbmFtZSA9IGN1cnJlbnRfdXNlciksCisgICAgJ3Rlc3QnCispOworLyogSW1hZ2lu ZToKK0NSRUFURSBDT0xVTU4gRU5DUllQVElPTiBLRVkgY2VrMSAoCisgICAgY29sdW1uX21h c3Rlcl9rZXkgPSBjbWsxLAorICAgIGFsZ29yaXRobSA9ICcuLi4nLAorICAgIGVuY3J5cHRl ZF92YWx1ZSA9ICcuLi4nCispOworKi8KK0lOU0VSVCBJTlRPIHBnX2NvbGVuY2tleSAob2lk LCBjZWtuYW1lLCBjZWtvd25lcikgVkFMVUVTICgKKyAgICBwZ19uZXh0b2lkKCdwZ19jYXRh bG9nLnBnX2NvbGVuY2tleScsICdvaWQnLCAncGdfY2F0YWxvZy5wZ19jb2xlbmNrZXlfb2lk X2luZGV4JyksCisgICAgJ2NlazEnLAorICAgIChzZWxlY3Qgb2lkIGZyb20gcGdfcm9sZXMg d2hlcmUgcm9sbmFtZSA9IGN1cnJlbnRfdXNlcikKKyk7CitJTlNFUlQgSU5UTyBwZ19jb2xl bmNrZXlkYXRhIChvaWQsIGNrZGNla2lkLCBja2RjbWtpZCwgY2tkY21rYWxnLCBja2RlbmN2 YWwpIFZBTFVFUyAoCisgICAgcGdfbmV4dG9pZCgncGdfY2F0YWxvZy5wZ19jb2xlbmNrZXlk YXRhJywgJ29pZCcsICdwZ19jYXRhbG9nLnBnX2NvbGVuY2tleWRhdGFfb2lkX2luZGV4Jyks CisgICAgKFNFTEVDVCBvaWQgRlJPTSBwZ19jb2xlbmNrZXkgV0hFUkUgY2VrbmFtZSA9ICdj ZWsxJyksCisgICAgKFNFTEVDVCBvaWQgRlJPTSBwZ19jb2xtYXN0ZXJrZXkgV0hFUkUgY21r bmFtZSA9ICdjbWsxJyksCisgICAgMSwKKyAgICAnXHhERUFEQkVFRicKKyk7CitDUkVBVEUg VEFCTEUgdGJsX2ZhaWwgKAorICAgIGEgaW50LAorICAgIGIgdGV4dCwKKyAgICBjIHRleHQg RU5DUllQVEVEIFdJVEggKGNvbHVtbl9lbmNyeXB0aW9uX2tleSA9IG5vdGV4aXN0KQorKTsK K0VSUk9SOiAgY29sdW1uIGVuY3J5cHRpb24ga2V5ICJub3RleGlzdCIgZG9lcyBub3QgZXhp c3QKK0NSRUFURSBUQUJMRSB0YmxfMjlmMyAoCisgICAgYSBpbnQsCisgICAgYiB0ZXh0LAor ICAgIGMgdGV4dCBFTkNSWVBURUQgV0lUSCAoY29sdW1uX2VuY3J5cHRpb25fa2V5ID0gY2Vr MSkKKyk7CitcZCB0YmxfMjlmMworICAgICAgICAgICAgICBUYWJsZSAicHVibGljLnRibF8y OWYzIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1 bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBiICAg ICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBjICAgICAgfCB0ZXh0 ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKworXGQrIHRibF8yOWYzCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy50YmxfMjlm MyIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0 IHwgU3RvcmFnZSAgfCBFbmNyeXB0aW9uIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24g CistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQor IGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBw bGFpbiAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAKKyBiICAgICAgfCB0ZXh0 ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgZXh0ZW5kZWQgfCAgICAg ICAgICAgIHwgICAgICAgICAgICAgIHwgCisgYyAgICAgIHwgdGV4dCAgICB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgICAgICAgICB8IGV4dGVuZGVkIHwgY2VrMSAgICAgICB8ICAgICAg ICAgICAgICB8IAorCitEUk9QIFRBQkxFIHRibF8yOWYzOyAgLS0gRklYTUU6IG5lZWRzIHBn X2R1bXAgc3VwcG9ydCBmb3IgcGdfdXBncmFkZSB0ZXN0cwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9vaWRqb2lucy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL29pZGpvaW5zLm91dAppbmRleCAyMTVlYjg5OWJlLi4yYWEwZTE2MzIzIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dApAQCAtNzMsNiArNzMsOCBA QCBOT1RJQ0U6ICBjaGVja2luZyBwZ190eXBlIHt0eXBiYXNldHlwZX0gPT4gcGdfdHlwZSB7 b2lkfQogTk9USUNFOiAgY2hlY2tpbmcgcGdfdHlwZSB7dHlwY29sbGF0aW9ufSA9PiBwZ19j b2xsYXRpb24ge29pZH0KIE5PVElDRTogIGNoZWNraW5nIHBnX2F0dHJpYnV0ZSB7YXR0cmVs aWR9ID0+IHBnX2NsYXNzIHtvaWR9CiBOT1RJQ0U6ICBjaGVja2luZyBwZ19hdHRyaWJ1dGUg e2F0dHR5cGlkfSA9PiBwZ190eXBlIHtvaWR9CitOT1RJQ0U6ICBjaGVja2luZyBwZ19hdHRy aWJ1dGUge2F0dGNla30gPT4gcGdfY29sZW5ja2V5IHtvaWR9CitOT1RJQ0U6ICBjaGVja2lu ZyBwZ19hdHRyaWJ1dGUge2F0dHJlYWx0eXBpZH0gPT4gcGdfdHlwZSB7b2lkfQogTk9USUNF OiAgY2hlY2tpbmcgcGdfYXR0cmlidXRlIHthdHRjb2xsYXRpb259ID0+IHBnX2NvbGxhdGlv biB7b2lkfQogTk9USUNFOiAgY2hlY2tpbmcgcGdfY2xhc3Mge3JlbG5hbWVzcGFjZX0gPT4g cGdfbmFtZXNwYWNlIHtvaWR9CiBOT1RJQ0U6ICBjaGVja2luZyBwZ19jbGFzcyB7cmVsdHlw ZX0gPT4gcGdfdHlwZSB7b2lkfQpAQCAtMjY2LDMgKzI2OCw3IEBAIE5PVElDRTogIGNoZWNr aW5nIHBnX3N1YnNjcmlwdGlvbiB7c3ViZGJpZH0gPT4gcGdfZGF0YWJhc2Uge29pZH0KIE5P VElDRTogIGNoZWNraW5nIHBnX3N1YnNjcmlwdGlvbiB7c3Vib3duZXJ9ID0+IHBnX2F1dGhp ZCB7b2lkfQogTk9USUNFOiAgY2hlY2tpbmcgcGdfc3Vic2NyaXB0aW9uX3JlbCB7c3JzdWJp ZH0gPT4gcGdfc3Vic2NyaXB0aW9uIHtvaWR9CiBOT1RJQ0U6ICBjaGVja2luZyBwZ19zdWJz Y3JpcHRpb25fcmVsIHtzcnJlbGlkfSA9PiBwZ19jbGFzcyB7b2lkfQorTk9USUNFOiAgY2hl Y2tpbmcgcGdfY29sbWFzdGVya2V5IHtjbWtvd25lcn0gPT4gcGdfYXV0aGlkIHtvaWR9CitO T1RJQ0U6ICBjaGVja2luZyBwZ19jb2xlbmNrZXkge2Nla293bmVyfSA9PiBwZ19hdXRoaWQg e29pZH0KK05PVElDRTogIGNoZWNraW5nIHBnX2NvbGVuY2tleWRhdGEge2NrZGNla2lkfSA9 PiBwZ19jb2xlbmNrZXkge29pZH0KK05PVElDRTogIGNoZWNraW5nIHBnX2NvbGVuY2tleWRh dGEge2NrZGNta2lkfSA9PiBwZ19jb2xtYXN0ZXJrZXkge29pZH0KZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0CmluZGV4IDg2ZDc1NWFhNDQuLjRhMzY2MDc0 ZGEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dApAQCAt MTc1LDEzICsxNzUsMTQgQEAgV0hFUkUgcDEub2lkICE9IHAyLm9pZCBBTkQKIE9SREVSIEJZ IDEsIDI7CiAgICAgICAgICBwcm9hcmd0eXBlcyAgICAgICAgIHwgICAgICAgcHJvYXJndHlw ZXMgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBieXRlYSAgICAgICAgICAgICAgICAgICAgICAgfCBwZ19lbmNy eXB0ZWRfZGV0CiAgYmlnaW50ICAgICAgICAgICAgICAgICAgICAgIHwgeGlkOAogIHRleHQg ICAgICAgICAgICAgICAgICAgICAgICB8IGNoYXJhY3RlcgogIHRleHQgICAgICAgICAgICAg ICAgICAgICAgICB8IGNoYXJhY3RlciB2YXJ5aW5nCiAgdGltZXN0YW1wIHdpdGhvdXQgdGlt ZSB6b25lIHwgdGltZXN0YW1wIHdpdGggdGltZSB6b25lCiAgYml0ICAgICAgICAgICAgICAg ICAgICAgICAgIHwgYml0IHZhcnlpbmcKICB0eGlkX3NuYXBzaG90ICAgICAgICAgICAgICAg fCBwZ19zbmFwc2hvdAotKDYgcm93cykKKyg3IHJvd3MpCiAKIFNFTEVDVCBESVNUSU5DVCBw MS5wcm9hcmd0eXBlc1sxXTo6cmVndHlwZSwgcDIucHJvYXJndHlwZXNbMV06OnJlZ3R5cGUK IEZST00gcGdfcHJvYyBBUyBwMSwgcGdfcHJvYyBBUyBwMgpAQCAtMTk3LDEyICsxOTgsMTMg QEAgV0hFUkUgcDEub2lkICE9IHAyLm9pZCBBTkQKIE9SREVSIEJZIDEsIDI7CiAgICAgICAg ICBwcm9hcmd0eXBlcyAgICAgICAgIHwgICAgICAgcHJvYXJndHlwZXMgICAgICAgIAogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBieXRlYSAgICAgICAgICAgICAgICAgICAgICAgfCBwZ19lbmNyeXB0ZWRfZGV0CiAgaW50 ZWdlciAgICAgICAgICAgICAgICAgICAgIHwgeGlkCiAgdGltZXN0YW1wIHdpdGhvdXQgdGlt ZSB6b25lIHwgdGltZXN0YW1wIHdpdGggdGltZSB6b25lCiAgYml0ICAgICAgICAgICAgICAg ICAgICAgICAgIHwgYml0IHZhcnlpbmcKICB0eGlkX3NuYXBzaG90ICAgICAgICAgICAgICAg fCBwZ19zbmFwc2hvdAogIGFueXJhbmdlICAgICAgICAgICAgICAgICAgICB8IGFueW11bHRp cmFuZ2UKLSg1IHJvd3MpCisoNiByb3dzKQogCiBTRUxFQ1QgRElTVElOQ1QgcDEucHJvYXJn dHlwZXNbMl06OnJlZ3R5cGUsIHAyLnByb2FyZ3R5cGVzWzJdOjpyZWd0eXBlCiBGUk9NIHBn X3Byb2MgQVMgcDEsIHBnX3Byb2MgQVMgcDIKQEAgLTg0MSw2ICs4NDMsOCBAQCB4aWQ4Z2Uo eGlkOCx4aWQ4KQogeGlkOGVxKHhpZDgseGlkOCkKIHhpZDhuZSh4aWQ4LHhpZDgpCiB4aWQ4 Y21wKHhpZDgseGlkOCkKK3BnX2VuY3J5cHRlZF9kZXRfZXEocGdfZW5jcnlwdGVkX2RldCxw Z19lbmNyeXB0ZWRfZGV0KQorcGdfZW5jcnlwdGVkX2RldF9uZShwZ19lbmNyeXB0ZWRfZGV0 LHBnX2VuY3J5cHRlZF9kZXQpCiAtLSByZXN0b3JlIG5vcm1hbCBvdXRwdXQgbW9kZQogXGFc dAogLS0gTGlzdCBvZiBmdW5jdGlvbnMgdXNlZCBieSBsaWJwcSdzIGZlLWxvYmouYwpAQCAt OTg4LDcgKzk5Miw5IEBAIFdIRVJFIGMuY2FzdG1ldGhvZCA9ICdiJyBBTkQKICB4bWwgICAg ICAgICAgICAgICB8IHRleHQgICAgICAgICAgICAgIHwgICAgICAgIDAgfCBhCiAgeG1sICAg ICAgICAgICAgICAgfCBjaGFyYWN0ZXIgdmFyeWluZyB8ICAgICAgICAwIHwgYQogIHhtbCAg ICAgICAgICAgICAgIHwgY2hhcmFjdGVyICAgICAgICAgfCAgICAgICAgMCB8IGEKLSgxMCBy b3dzKQorIGJ5dGVhICAgICAgICAgICAgIHwgcGdfZW5jcnlwdGVkX2RldCAgfCAgICAgICAg MCB8IGUKKyBieXRlYSAgICAgICAgICAgICB8IHBnX2VuY3J5cHRlZF9ybmQgIHwgICAgICAg IDAgfCBlCisoMTIgcm93cykKIAogLS0gKioqKioqKioqKioqKioqKiBwZ19jb252ZXJzaW9u ICoqKioqKioqKioqKioqKioKIC0tIExvb2sgZm9yIGlsbGVnYWwgdmFsdWVzIGluIHBnX2Nv bnZlcnNpb24gZmllbGRzLgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wcmVwYXJlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJlcGFyZS5vdXQK aW5kZXggMzMwNmM2OTZiMS4uNjc1NTU2YzdkMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9wcmVwYXJlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3ByZXBhcmUub3V0CkBAIC0xNTksMjUgKzE1OSwzMCBAQCBQUkVQQVJFIHE2IEFTCiAg ICAgU0VMRUNUICogRlJPTSB0ZW5rMSBXSEVSRSB1bmlxdWUxID0gJDEgQU5EIHN0cmluZ3Ux ID0gJDI7CiBQUkVQQVJFIHE3KHVua25vd24pIEFTCiAgICAgU0VMRUNUICogRlJPTSByb2Fk IFdIRVJFIHRoZXBhdGggPSAkMTsKLVNFTEVDVCBuYW1lLCBzdGF0ZW1lbnQsIHBhcmFtZXRl cl90eXBlcyBGUk9NIHBnX3ByZXBhcmVkX3N0YXRlbWVudHMKKy0tIERNTCBzdGF0ZW1lbnRz CitQUkVQQVJFIHE4IEFTCisgICAgVVBEQVRFIHRlbmsxIFNFVCBzdHJpbmd1MSA9ICQyIFdI RVJFIHVuaXF1ZTEgPSAkMTsKK1NFTEVDVCBuYW1lLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcl90 eXBlcywgcGFyYW1ldGVyX29yaWdfdGFibGVzLCBwYXJhbWV0ZXJfb3JpZ19jb2x1bW5zIEZS T00gcGdfcHJlcGFyZWRfc3RhdGVtZW50cwogICAgIE9SREVSIEJZIG5hbWU7Ci0gbmFtZSB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcl90eXBlcyAgICAgICAg ICAgICAgICAgICAKLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHEyICAgfCBQUkVQQVJFIHEyKHRl eHQpIEFTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wg e3RleHR9Ci0gICAgICB8ICAgICAgICAgU0VMRUNUIGRhdG5hbWUsIGRhdGlzdGVtcGxhdGUs IGRhdGFsbG93Y29ubiAgICAgICAgICAgICArfCAKLSAgICAgIHwgICAgICAgICBGUk9NIHBn X2RhdGFiYXNlIFdIRVJFIGRhdG5hbWUgPSAkMTsgICAgICAgICAgICAgICAgICAgICB8IAot IHEzICAgfCBQUkVQQVJFIHEzKHRleHQsIGludCwgZmxvYXQsIGJvb2xlYW4sIHNtYWxsaW50 KSBBUyAgICAgICAgICAgICAgK3wge3RleHQsaW50ZWdlciwiZG91YmxlIHByZWNpc2lvbiIs Ym9vbGVhbixzbWFsbGludH0KLSAgICAgIHwgICAgICAgICBTRUxFQ1QgKiBGUk9NIHRlbmsx IFdIRVJFIHN0cmluZzQgPSAkMSBBTkQgKGZvdXIgPSAkMiBPUit8IAotICAgICAgfCAgICAg ICAgIHRlbiA9ICQzOjpiaWdpbnQgT1IgdHJ1ZSA9ICQ0IE9SIG9kZCA9ICQ1OjppbnQpICAg ICAgICAgK3wgCi0gICAgICB8ICAgICAgICAgT1JERVIgQlkgdW5pcXVlMTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAKLSBxNSAgIHwgUFJFUEFSRSBxNShp bnQsIHRleHQpIEFTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8 IHtpbnRlZ2VyLHRleHR9Ci0gICAgICB8ICAgICAgICAgU0VMRUNUICogRlJPTSB0ZW5rMSBX SEVSRSB1bmlxdWUxID0gJDEgT1Igc3RyaW5ndTEgPSAkMiArfCAKLSAgICAgIHwgICAgICAg ICBPUkRFUiBCWSB1bmlxdWUxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IAotIHE2ICAgfCBQUkVQQVJFIHE2IEFTICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wge2ludGVnZXIsbmFtZX0KLSAgICAgIHwg ICAgIFNFTEVDVCAqIEZST00gdGVuazEgV0hFUkUgdW5pcXVlMSA9ICQxIEFORCBzdHJpbmd1 MSA9ICQyOyAgICB8IAotIHE3ICAgfCBQUkVQQVJFIHE3KHVua25vd24pIEFTICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wge3BhdGh9Ci0gICAgICB8ICAg ICBTRUxFQ1QgKiBGUk9NIHJvYWQgV0hFUkUgdGhlcGF0aCA9ICQxOyAgICAgICAgICAgICAg ICAgICAgICAgfCAKLSg1IHJvd3MpCisgbmFtZSB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0YXRlbWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgIHBhcmFtZXRlcl90eXBlcyAgICAgICAgICAgICAgICAgICB8IHBhcmFtZXRlcl9v cmlnX3RhYmxlcyB8IHBhcmFtZXRlcl9vcmlnX2NvbHVtbnMgCistLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg cTIgICB8IFBSRVBBUkUgcTIodGV4dCkgQVMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArfCB7dGV4dH0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IHstfSAgICAgICAgICAgICAgICAgICB8IHswfQorICAgICAg fCAgICAgICAgIFNFTEVDVCBkYXRuYW1lLCBkYXRpc3RlbXBsYXRlLCBkYXRhbGxvd2Nvbm4g ICAgICAgICAgICAgK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCAKKyAgICAgIHwgICAgICAg ICBGUk9NIHBnX2RhdGFiYXNlIFdIRVJFIGRhdG5hbWUgPSAkMTsgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgCisgcTMgICB8IFBSRVBBUkUgcTModGV4 dCwgaW50LCBmbG9hdCwgYm9vbGVhbiwgc21hbGxpbnQpIEFTICAgICAgICAgICAgICArfCB7 dGV4dCxpbnRlZ2VyLCJkb3VibGUgcHJlY2lzaW9uIixib29sZWFuLHNtYWxsaW50fSB8IHst LC0sLSwtLC19ICAgICAgICAgICB8IHswLDAsMCwwLDB9CisgICAgICB8ICAgICAgICAgU0VM RUNUICogRlJPTSB0ZW5rMSBXSEVSRSBzdHJpbmc0ID0gJDEgQU5EIChmb3VyID0gJDIgT1Ir fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICB8IAorICAgICAgfCAgICAgICAgIHRlbiA9ICQzOjpi aWdpbnQgT1IgdHJ1ZSA9ICQ0IE9SIG9kZCA9ICQ1OjppbnQpICAgICAgICAgK3wgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgfCAKKyAgICAgIHwgICAgICAgICBPUkRFUiBCWSB1bmlxdWUxOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgIHwgCisgcTUgICB8IFBSRVBBUkUgcTUoaW50LCB0ZXh0KSBBUyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCB7aW50ZWdlcix0ZXh0fSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHstLC19ICAgICAgICAgICAgICAgICB8 IHswLDB9CisgICAgICB8ICAgICAgICAgU0VMRUNUICogRlJPTSB0ZW5rMSBXSEVSRSB1bmlx dWUxID0gJDEgT1Igc3RyaW5ndTEgPSAkMiArfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8IAor ICAgICAgfCAgICAgICAgIE9SREVSIEJZIHVuaXF1ZTE7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCAKKyBxNiAgIHwg UFJFUEFSRSBxNiBBUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICt8IHtpbnRlZ2VyLG5hbWV9ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgey0sLX0gICAgICAgICAgICAgICAgIHwgezAsMH0KKyAgICAgIHwgICAg IFNFTEVDVCAqIEZST00gdGVuazEgV0hFUkUgdW5pcXVlMSA9ICQxIEFORCBzdHJpbmd1MSA9 ICQyOyAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgCisgcTcgICB8IFBSRVBBUkUgcTco dW5rbm93bikgQVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr fCB7cGF0aH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IHstfSAgICAgICAgICAgICAgICAgICB8IHswfQorICAgICAgfCAgICAgU0VMRUNUICogRlJP TSByb2FkIFdIRVJFIHRoZXBhdGggPSAkMTsgICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgfCAKKyBxOCAgIHwgUFJFUEFSRSBxOCBBUyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8IHtpbnRlZ2VyLG5h bWV9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgey0sdGVuazF9ICAg ICAgICAgICAgIHwgezAsMTR9CisgICAgICB8ICAgICBVUERBVEUgdGVuazEgU0VUIHN0cmlu Z3UxID0gJDIgV0hFUkUgdW5pcXVlMSA9ICQxOyAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg ICAgICAgICB8IAorKDYgcm93cykKIAogLS0gdGVzdCBERUFMTE9DQVRFIEFMTDsKIERFQUxM T0NBVEUgQUxMOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3Fs Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQKaW5kZXggNjBhY2Jk MTI0MS4uMzM5NTZmNjk5MyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wc3FsLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0CkBA IC0yMzcsNiArMjM3LDMxIEBAIFNFTEVDVCAzIEFTIHgsICdIZWxsbycsIDQgQVMgeSwgdHJ1 ZSBBUyAiZGlydHlcbmFtZSIgXGdkZXNjIFxnCiAgMyB8IEhlbGxvICAgIHwgNCB8IHQKICgx IHJvdykKIAorLS0gXGdlbmNyCistLSAoVGhpcyBqdXN0IHRlc3RzIHRoZSBwYXJhbWV0ZXIg cGFzc2luZzsgdGhlcmUgaXMgbm8gZW5jcnlwdGlvbiBoZXJlLikKK0NSRUFURSBUQUJMRSB0 ZXN0X2dlbmNyIChhIGludCwgYiB0ZXh0KTsKK0lOU0VSVCBJTlRPIHRlc3RfZ2VuY3IgVkFM VUVTICgxLCAnb25lJykgXGdlbmNyCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ2VuY3IgV0hFUkUg YSA9IDEgXGdlbmNyCisgYSB8ICBiICAKKy0tLSstLS0tLQorIDEgfCBvbmUKKygxIHJvdykK KworSU5TRVJUIElOVE8gdGVzdF9nZW5jciBWQUxVRVMgKCQxLCAkMikgXGdlbmNyIDIgJ3R3 bycKK1NFTEVDVCAqIEZST00gdGVzdF9nZW5jciBXSEVSRSBhIElOICgkMSwgJDIpIFxnZW5j ciAyIDMKKyBhIHwgIGIgIAorLS0tKy0tLS0tCisgMiB8IHR3bworKDEgcm93KQorCistLSB0 ZXN0IHBhcnNlIGVycm9yCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ2VuY3IgV0hFUkUgYSA9IHgg XGdlbmNyCitFUlJPUjogIGNvbHVtbiAieCIgZG9lcyBub3QgZXhpc3QKK0xJTkUgMTogU0VM RUNUICogRlJPTSB0ZXN0X2dlbmNyIFdIRVJFIGEgPSB4IAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIHRlc3QgYmluZCBlcnJvcgorU0VMRUNU ICogRlJPTSB0ZXN0X2dlbmNyIFdIRVJFIGEgPSAkMSBcZ2VuY3IKK0VSUk9SOiAgYmluZCBt ZXNzYWdlIHN1cHBsaWVzIDAgcGFyYW1ldGVycywgYnV0IHByZXBhcmVkIHN0YXRlbWVudCAi IiByZXF1aXJlcyAxCiAtLSBcZ2V4ZWMKIGNyZWF0ZSB0ZW1wb3JhcnkgdGFibGUgZ2V4ZWNf dGVzdChhIGludCwgYiB0ZXh0LCBjIGRhdGUsIGQgZmxvYXQpOwogc2VsZWN0IGZvcm1hdCgn Y3JlYXRlIGluZGV4IG9uIGdleGVjX3Rlc3QoJUkpJywgYXR0bmFtZSkKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggZmMzY2RlMzIyNi4uODk4NzY1ZTI1NSAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTE0MjUsOCArMTQyNSwxMCBA QCBwZ19wcmVwYXJlZF9zdGF0ZW1lbnRzfCBTRUxFQ1QgcC5uYW1lLAogICAgIHAucGFyYW1l dGVyX3R5cGVzLAogICAgIHAuZnJvbV9zcWwsCiAgICAgcC5nZW5lcmljX3BsYW5zLAotICAg IHAuY3VzdG9tX3BsYW5zCi0gICBGUk9NIHBnX3ByZXBhcmVkX3N0YXRlbWVudCgpIHAobmFt ZSwgc3RhdGVtZW50LCBwcmVwYXJlX3RpbWUsIHBhcmFtZXRlcl90eXBlcywgZnJvbV9zcWws IGdlbmVyaWNfcGxhbnMsIGN1c3RvbV9wbGFucyk7CisgICAgcC5jdXN0b21fcGxhbnMsCisg ICAgcC5wYXJhbWV0ZXJfb3JpZ190YWJsZXMsCisgICAgcC5wYXJhbWV0ZXJfb3JpZ19jb2x1 bW5zCisgICBGUk9NIHBnX3ByZXBhcmVkX3N0YXRlbWVudCgpIHAobmFtZSwgc3RhdGVtZW50 LCBwcmVwYXJlX3RpbWUsIHBhcmFtZXRlcl90eXBlcywgZnJvbV9zcWwsIGdlbmVyaWNfcGxh bnMsIGN1c3RvbV9wbGFucywgcGFyYW1ldGVyX29yaWdfdGFibGVzLCBwYXJhbWV0ZXJfb3Jp Z19jb2x1bW5zKTsKIHBnX3ByZXBhcmVkX3hhY3RzfCBTRUxFQ1QgcC50cmFuc2FjdGlvbiwK ICAgICBwLmdpZCwKICAgICBwLnByZXBhcmVkLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC90eXBlX3Nhbml0eS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3R5cGVfc2FuaXR5Lm91dAppbmRleCBkM2FjMDhjOWVlLi5mYzBjNTg5NmU0IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3R5cGVfc2FuaXR5Lm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3R5cGVfc2FuaXR5Lm91dApAQCAtMTcsNyAr MTcsNyBAQCBTRUxFQ1QgdDEub2lkLCB0MS50eXBuYW1lCiBGUk9NIHBnX3R5cGUgYXMgdDEK IFdIRVJFIHQxLnR5cG5hbWVzcGFjZSA9IDAgT1IKICAgICAodDEudHlwbGVuIDw9IDAgQU5E IHQxLnR5cGxlbiAhPSAtMSBBTkQgdDEudHlwbGVuICE9IC0yKSBPUgotICAgICh0MS50eXB0 eXBlIG5vdCBpbiAoJ2InLCAnYycsICdkJywgJ2UnLCAnbScsICdwJywgJ3InKSkgT1IKKyAg ICAodDEudHlwdHlwZSBub3QgaW4gKCdiJywgJ2MnLCAnZCcsICdlJywgJ20nLCAncCcsICdy JywgJ3knKSkgT1IKICAgICBOT1QgdDEudHlwaXNkZWZpbmVkIE9SCiAgICAgKHQxLnR5cGFs aWduIG5vdCBpbiAoJ2MnLCAncycsICdpJywgJ2QnKSkgT1IKICAgICAodDEudHlwc3RvcmFn ZSBub3QgaW4gKCdwJywgJ3gnLCAnZScsICdtJykpOwpAQCAtNzUsNyArNzUsOSBAQCBPUkRF UiBCWSB0MS5vaWQ7CiAgNDYwMCB8IHBnX2JyaW5fYmxvb21fc3VtbWFyeQogIDQ2MDEgfCBw Z19icmluX21pbm1heF9tdWx0aV9zdW1tYXJ5CiAgNTAxNyB8IHBnX21jdl9saXN0Ci0oNiBy b3dzKQorIDgyNDMgfCBwZ19lbmNyeXB0ZWRfZGV0CisgODI0NCB8IHBnX2VuY3J5cHRlZF9y bmQKKyg4IHJvd3MpCiAKIC0tIE1ha2Ugc3VyZSB0eXBhcnJheSBwb2ludHMgdG8gYSAidHJ1 ZSIgYXJyYXkgdHlwZSBvZiBvdXIgb3duIGJhc2UKIFNFTEVDVCB0MS5vaWQsIHQxLnR5cG5h bWUgYXMgYmFzZXR5cGUsIHQyLnR5cG5hbWUgYXMgYXJyYXl0eXBlLApAQCAtMjEwLDcgKzIx Miw4IEBAIE9SREVSIEJZIDE7CiAgZSAgICAgICB8IGVudW1faW4KICBtICAgICAgIHwgbXVs dGlyYW5nZV9pbgogIHIgICAgICAgfCByYW5nZV9pbgotKDUgcm93cykKKyB5ICAgICAgIHwg Ynl0ZWFpbgorKDYgcm93cykKIAogLS0gQ2hlY2sgZm9yIGJvZ3VzIHR5cG91dHB1dCByb3V0 aW5lcwogLS0gQXMgb2YgOC4wLCB0aGlzIGNoZWNrIGZpbmRzIHJlZmN1cnNvciwgd2hpY2gg aXMgYm9ycm93aW5nCkBAIC0yNTUsNyArMjU4LDggQEAgT1JERVIgQlkgMTsKICBlICAgICAg IHwgZW51bV9vdXQKICBtICAgICAgIHwgbXVsdGlyYW5nZV9vdXQKICByICAgICAgIHwgcmFu Z2Vfb3V0Ci0oNCByb3dzKQorIHkgICAgICAgfCBieXRlYW91dAorKDUgcm93cykKIAogLS0g RG9tYWlucyBzaG91bGQgaGF2ZSBzYW1lIHR5cG91dHB1dCBhcyB0aGVpciBiYXNlIHR5cGVz CiBTRUxFQ1QgdDEub2lkLCB0MS50eXBuYW1lLCB0Mi5vaWQsIHQyLnR5cG5hbWUKQEAgLTMz NSw3ICszMzksOCBAQCBPUkRFUiBCWSAxOwogIGUgICAgICAgfCBlbnVtX3JlY3YKICBtICAg ICAgIHwgbXVsdGlyYW5nZV9yZWN2CiAgciAgICAgICB8IHJhbmdlX3JlY3YKLSg1IHJvd3Mp CisgeSAgICAgICB8IGJ5dGVhcmVjdgorKDYgcm93cykKIAogLS0gQ2hlY2sgZm9yIGJvZ3Vz IHR5cHNlbmQgcm91dGluZXMKIC0tIEFzIG9mIDcuNCwgdGhpcyBjaGVjayBmaW5kcyByZWZj dXJzb3IsIHdoaWNoIGlzIGJvcnJvd2luZwpAQCAtMzgwLDcgKzM4NSw4IEBAIE9SREVSIEJZ IDE7CiAgZSAgICAgICB8IGVudW1fc2VuZAogIG0gICAgICAgfCBtdWx0aXJhbmdlX3NlbmQK ICByICAgICAgIHwgcmFuZ2Vfc2VuZAotKDQgcm93cykKKyB5ICAgICAgIHwgYnl0ZWFzZW5k CisoNSByb3dzKQogCiAtLSBEb21haW5zIHNob3VsZCBoYXZlIHNhbWUgdHlwc2VuZCBhcyB0 aGVpciBiYXNlIHR5cGVzCiBTRUxFQ1QgdDEub2lkLCB0MS50eXBuYW1lLCB0Mi5vaWQsIHQy LnR5cG5hbWUKQEAgLTcwNyw2ICs3MTMsOCBAQCBDUkVBVEUgVEFCTEUgdGFiX2NvcmVfdHlw ZXMgQVMgU0VMRUNUCiAgICd0eHQnOjp0ZXh0LAogICB0cnVlOjpib29sLAogICBFJ1xceERF QURCRUVGJzo6Ynl0ZWEsCisgIEUnXFx4REVBREJFRUYnOjpwZ19lbmNyeXB0ZWRfcm5kLAor ICBFJ1xceERFQURCRUVGJzo6cGdfZW5jcnlwdGVkX2RldCwKICAgQicxMDAwMSc6OmJpdCwK ICAgQicxMDAwMSc6OnZhcmJpdCBBUyB2YXJiaXQsCiAgICcxMi4zNCc6Om1vbmV5LApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0 L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggMTAzZTExNDgzZC4uZmZjYTIwNmM2 ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0xMjksNiArMTI5LDkg QEAgdGVzdDogcGxhbmNhY2hlIGxpbWl0IHBscGdzcWwgY29weTIgdGVtcCBkb21haW4gcmFu Z2VmdW5jcyBwcmVwYXJlIGNvbnZlcnNpb24gdHIKICMgLS0tLS0tLS0tLQogdGVzdDogcGFy dGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5lIHJlbG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4 aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUgcGFydGl0aW9uX2luZm8gdHVwbGVzb3J0IGV4cGxh aW4gY29tcHJlc3Npb24gbWVtb2l6ZSBzdGF0cwogCisjIFdJUAordGVzdDogY29sdW1uX2Vu Y3J5cHRpb24KKwogIyBldmVudF90cmlnZ2VyIGNhbm5vdCBydW4gY29uY3VycmVudGx5IHdp dGggYW55IHRlc3QgdGhhdCBydW5zIERETAogIyBvaWRqb2lucyBpcyByZWFkLW9ubHksIHRo b3VnaCwgYW5kIHNob3VsZCBydW4gbGF0ZSBmb3IgYmVzdCBjb3ZlcmFnZQogdGVzdDogZXZl bnRfdHJpZ2dlciBvaWRqb2lucwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wZ19y ZWdyZXNzX21haW4uYyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGdfcmVncmVzc19tYWluLmMKaW5k ZXggYTRiMzU0YzllNi4uOGFkMWY0NThkNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9wZ19yZWdyZXNzX21haW4uYworKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BnX3JlZ3Jlc3Nf bWFpbi5jCkBAIC04Miw3ICs4Miw3IEBAIHBzcWxfc3RhcnRfdGVzdChjb25zdCBjaGFyICp0 ZXN0bmFtZSwKIAkJCQkJICAgYmluZGlyID8gYmluZGlyIDogIiIsCiAJCQkJCSAgIGJpbmRp ciA/ICIvIiA6ICIiLAogCQkJCQkgICBkYmxpc3QtPnN0ciwKLQkJCQkJICAgIi12IEhJREVf VEFCTEVBTT1vbiAtdiBISURFX1RPQVNUX0NPTVBSRVNTSU9OPW9uIiwKKwkJCQkJICAgIi12 IEhJREVfVEFCTEVBTT1vbiAtdiBISURFX1RPQVNUX0NPTVBSRVNTSU9OPW9uIC12IEhJREVf Q09MVU1OX0VOQ1JZUFRJT049b24iLAogCQkJCQkgICBpbmZpbGUsCiAJCQkJCSAgIG91dGZp bGUpOwogCWlmIChvZmZzZXQgPj0gc2l6ZW9mKHBzcWxfY21kKSkKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbHVtbl9lbmNyeXB0aW9uLnNxbCBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2NvbHVtbl9lbmNyeXB0aW9uLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi4zN2YwYjIzZDEwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvY29sdW1uX2VuY3J5cHRpb24uc3FsCkBAIC0wLDAgKzEsNTAgQEAK K1xzZXQgSElERV9DT0xVTU5fRU5DUllQVElPTiBmYWxzZQorCisvKiBJbWFnaW5lOgorQ1JF QVRFIENPTFVNTiBNQVNURVIgS0VZIGNtazEgKAorICAgIHJlYWxtID0gJ3Rlc3QnCispOwor Ki8KK0lOU0VSVCBJTlRPIHBnX2NvbG1hc3RlcmtleSAob2lkLCBjbWtuYW1lLCBjbWtvd25l ciwgY21rcmVhbG0pIFZBTFVFUyAoCisgICAgcGdfbmV4dG9pZCgncGdfY2F0YWxvZy5wZ19j b2xtYXN0ZXJrZXknLCAnb2lkJywgJ3BnX2NhdGFsb2cucGdfY29sbWFzdGVya2V5X29pZF9p bmRleCcpLAorICAgICdjbWsxJywKKyAgICAoc2VsZWN0IG9pZCBmcm9tIHBnX3JvbGVzIHdo ZXJlIHJvbG5hbWUgPSBjdXJyZW50X3VzZXIpLAorICAgICd0ZXN0JworKTsKKworLyogSW1h Z2luZToKK0NSRUFURSBDT0xVTU4gRU5DUllQVElPTiBLRVkgY2VrMSAoCisgICAgY29sdW1u X21hc3Rlcl9rZXkgPSBjbWsxLAorICAgIGFsZ29yaXRobSA9ICcuLi4nLAorICAgIGVuY3J5 cHRlZF92YWx1ZSA9ICcuLi4nCispOworKi8KK0lOU0VSVCBJTlRPIHBnX2NvbGVuY2tleSAo b2lkLCBjZWtuYW1lLCBjZWtvd25lcikgVkFMVUVTICgKKyAgICBwZ19uZXh0b2lkKCdwZ19j YXRhbG9nLnBnX2NvbGVuY2tleScsICdvaWQnLCAncGdfY2F0YWxvZy5wZ19jb2xlbmNrZXlf b2lkX2luZGV4JyksCisgICAgJ2NlazEnLAorICAgIChzZWxlY3Qgb2lkIGZyb20gcGdfcm9s ZXMgd2hlcmUgcm9sbmFtZSA9IGN1cnJlbnRfdXNlcikKKyk7CitJTlNFUlQgSU5UTyBwZ19j b2xlbmNrZXlkYXRhIChvaWQsIGNrZGNla2lkLCBja2RjbWtpZCwgY2tkY21rYWxnLCBja2Rl bmN2YWwpIFZBTFVFUyAoCisgICAgcGdfbmV4dG9pZCgncGdfY2F0YWxvZy5wZ19jb2xlbmNr ZXlkYXRhJywgJ29pZCcsICdwZ19jYXRhbG9nLnBnX2NvbGVuY2tleWRhdGFfb2lkX2luZGV4 JyksCisgICAgKFNFTEVDVCBvaWQgRlJPTSBwZ19jb2xlbmNrZXkgV0hFUkUgY2VrbmFtZSA9 ICdjZWsxJyksCisgICAgKFNFTEVDVCBvaWQgRlJPTSBwZ19jb2xtYXN0ZXJrZXkgV0hFUkUg Y21rbmFtZSA9ICdjbWsxJyksCisgICAgMSwKKyAgICAnXHhERUFEQkVFRicKKyk7CisKK0NS RUFURSBUQUJMRSB0YmxfZmFpbCAoCisgICAgYSBpbnQsCisgICAgYiB0ZXh0LAorICAgIGMg dGV4dCBFTkNSWVBURUQgV0lUSCAoY29sdW1uX2VuY3J5cHRpb25fa2V5ID0gbm90ZXhpc3Qp CispOworCitDUkVBVEUgVEFCTEUgdGJsXzI5ZjMgKAorICAgIGEgaW50LAorICAgIGIgdGV4 dCwKKyAgICBjIHRleHQgRU5DUllQVEVEIFdJVEggKGNvbHVtbl9lbmNyeXB0aW9uX2tleSA9 IGNlazEpCispOworCitcZCB0YmxfMjlmMworXGQrIHRibF8yOWYzCisKK0RST1AgVEFCTEUg dGJsXzI5ZjM7ICAtLSBGSVhNRTogbmVlZHMgcGdfZHVtcCBzdXBwb3J0IGZvciBwZ191cGdy YWRlIHRlc3RzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wcmVwYXJlLnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ByZXBhcmUuc3FsCmluZGV4IDk4NWQwZjA1Yzku LmIyYWE5NmQzNzAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ByZXBhcmUu c3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ByZXBhcmUuc3FsCkBAIC03MSw3ICs3 MSwxMSBAQCBDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIHE1X3ByZXBfbm9kYXRhIEFTIEVYRUNV VEUgcTUoMjAwLCAnRFRBQUFBJykKIFBSRVBBUkUgcTcodW5rbm93bikgQVMKICAgICBTRUxF Q1QgKiBGUk9NIHJvYWQgV0hFUkUgdGhlcGF0aCA9ICQxOwogCi1TRUxFQ1QgbmFtZSwgc3Rh dGVtZW50LCBwYXJhbWV0ZXJfdHlwZXMgRlJPTSBwZ19wcmVwYXJlZF9zdGF0ZW1lbnRzCist LSBETUwgc3RhdGVtZW50cworUFJFUEFSRSBxOCBBUworICAgIFVQREFURSB0ZW5rMSBTRVQg c3RyaW5ndTEgPSAkMiBXSEVSRSB1bmlxdWUxID0gJDE7CisKK1NFTEVDVCBuYW1lLCBzdGF0 ZW1lbnQsIHBhcmFtZXRlcl90eXBlcywgcGFyYW1ldGVyX29yaWdfdGFibGVzLCBwYXJhbWV0 ZXJfb3JpZ19jb2x1bW5zIEZST00gcGdfcHJlcGFyZWRfc3RhdGVtZW50cwogICAgIE9SREVS IEJZIG5hbWU7CiAKIC0tIHRlc3QgREVBTExPQ0FURSBBTEw7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wc3FsLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BzcWwu c3FsCmluZGV4IDExNDljNmE4MzkuLmU4OGM3MGQzMDIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3BzcWwuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BzcWwu c3FsCkBAIC0xMTksNiArMTE5LDIzIEBAIENSRUFURSBUQUJMRSBidWJ1YnUoYSBpbnQpIFxn ZGVzYwogLS0gYWxsIG9uIG9uZSBsaW5lCiBTRUxFQ1QgMyBBUyB4LCAnSGVsbG8nLCA0IEFT IHksIHRydWUgQVMgImRpcnR5XG5hbWUiIFxnZGVzYyBcZwogCisKKy0tIFxnZW5jcgorLS0g KFRoaXMganVzdCB0ZXN0cyB0aGUgcGFyYW1ldGVyIHBhc3Npbmc7IHRoZXJlIGlzIG5vIGVu Y3J5cHRpb24gaGVyZS4pCisKK0NSRUFURSBUQUJMRSB0ZXN0X2dlbmNyIChhIGludCwgYiB0 ZXh0KTsKK0lOU0VSVCBJTlRPIHRlc3RfZ2VuY3IgVkFMVUVTICgxLCAnb25lJykgXGdlbmNy CitTRUxFQ1QgKiBGUk9NIHRlc3RfZ2VuY3IgV0hFUkUgYSA9IDEgXGdlbmNyCisKK0lOU0VS VCBJTlRPIHRlc3RfZ2VuY3IgVkFMVUVTICgkMSwgJDIpIFxnZW5jciAyICd0d28nCitTRUxF Q1QgKiBGUk9NIHRlc3RfZ2VuY3IgV0hFUkUgYSBJTiAoJDEsICQyKSBcZ2VuY3IgMiAzCisK Ky0tIHRlc3QgcGFyc2UgZXJyb3IKK1NFTEVDVCAqIEZST00gdGVzdF9nZW5jciBXSEVSRSBh ID0geCBcZ2VuY3IKKy0tIHRlc3QgYmluZCBlcnJvcgorU0VMRUNUICogRlJPTSB0ZXN0X2dl bmNyIFdIRVJFIGEgPSAkMSBcZ2VuY3IKKworCiAtLSBcZ2V4ZWMKIAogY3JlYXRlIHRlbXBv cmFyeSB0YWJsZSBnZXhlY190ZXN0KGEgaW50LCBiIHRleHQsIGMgZGF0ZSwgZCBmbG9hdCk7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC90eXBlX3Nhbml0eS5zcWwgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC90eXBlX3Nhbml0eS5zcWwKaW5kZXggNWVkYzFmMWY2ZS4u MzRkZDE5NDU2ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHlwZV9zYW5p dHkuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3R5cGVfc2FuaXR5LnNxbApAQCAt MjAsNyArMjAsNyBAQAogRlJPTSBwZ190eXBlIGFzIHQxCiBXSEVSRSB0MS50eXBuYW1lc3Bh Y2UgPSAwIE9SCiAgICAgKHQxLnR5cGxlbiA8PSAwIEFORCB0MS50eXBsZW4gIT0gLTEgQU5E IHQxLnR5cGxlbiAhPSAtMikgT1IKLSAgICAodDEudHlwdHlwZSBub3QgaW4gKCdiJywgJ2Mn LCAnZCcsICdlJywgJ20nLCAncCcsICdyJykpIE9SCisgICAgKHQxLnR5cHR5cGUgbm90IGlu ICgnYicsICdjJywgJ2QnLCAnZScsICdtJywgJ3AnLCAncicsICd5JykpIE9SCiAgICAgTk9U IHQxLnR5cGlzZGVmaW5lZCBPUgogICAgICh0MS50eXBhbGlnbiBub3QgaW4gKCdjJywgJ3Mn LCAnaScsICdkJykpIE9SCiAgICAgKHQxLnR5cHN0b3JhZ2Ugbm90IGluICgncCcsICd4Jywg J2UnLCAnbScpKTsKQEAgLTUyOSw2ICs1MjksOCBAQCBDUkVBVEUgVEFCTEUgdGFiX2NvcmVf dHlwZXMgQVMgU0VMRUNUCiAgICd0eHQnOjp0ZXh0LAogICB0cnVlOjpib29sLAogICBFJ1xc eERFQURCRUVGJzo6Ynl0ZWEsCisgIEUnXFx4REVBREJFRUYnOjpwZ19lbmNyeXB0ZWRfcm5k LAorICBFJ1xceERFQURCRUVGJzo6cGdfZW5jcnlwdGVkX2RldCwKICAgQicxMDAwMSc6OmJp dCwKICAgQicxMDAwMSc6OnZhcmJpdCBBUyB2YXJiaXQsCiAgICcxMi4zNCc6Om1vbmV5LApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3ByaW50dHVwLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvcHJpbnR0dXAuaAppbmRleCA5NzFhNzRjZjIyLi5kYjFmM2I4ODExIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcHJpbnR0dXAuaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvcHJpbnR0dXAuaApAQCAtMjAsNiArMjAsOCBAQCBleHRlcm4gRGVzdFJlY2Vp dmVyICpwcmludHR1cF9jcmVhdGVfRFIoQ29tbWFuZERlc3QgZGVzdCk7CiAKIGV4dGVybiB2 b2lkIFNldFJlbW90ZURlc3RSZWNlaXZlclBhcmFtcyhEZXN0UmVjZWl2ZXIgKnNlbGYsIFBv cnRhbCBwb3J0YWwpOwogCitleHRlcm4gdm9pZCBNYXliZVNlbmRDb2x1bW5FbmNyeXB0aW9u S2V5TWVzc2FnZShPaWQgYXR0Y2VrKTsKKwogZXh0ZXJuIHZvaWQgU2VuZFJvd0Rlc2NyaXB0 aW9uTWVzc2FnZShTdHJpbmdJbmZvIGJ1ZiwKIAkJCQkJCQkJCSAgVHVwbGVEZXNjIHR5cGVp bmZvLCBMaXN0ICp0YXJnZXRsaXN0LCBpbnQxNiAqZm9ybWF0cyk7CiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1vcC5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX2Ftb3AuZGF0CmluZGV4IDYxY2Q1OTE0MzAuLmEwYmQ3MDgxMzIgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1vcC5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19hbW9wLmRhdApAQCAtMTAyOCw2ICsxMDI4LDExIEBACiAgIGFtb3ByaWdodHR5 cGUgPT4gJ2J5dGVhJywgYW1vcHN0cmF0ZWd5ID0+ICcxJywgYW1vcG9wciA9PiAnPShieXRl YSxieXRlYSknLAogICBhbW9wbWV0aG9kID0+ICdoYXNoJyB9LAogCisjIHBnX2VuY3J5cHRl ZF9kZXRfb3BzCit7IGFtb3BmYW1pbHkgPT4gJ2hhc2gvcGdfZW5jcnlwdGVkX2RldF9vcHMn LCBhbW9wbGVmdHR5cGUgPT4gJ3BnX2VuY3J5cHRlZF9kZXQnLAorICBhbW9wcmlnaHR0eXBl ID0+ICdwZ19lbmNyeXB0ZWRfZGV0JywgYW1vcHN0cmF0ZWd5ID0+ICcxJywgYW1vcG9wciA9 PiAnPShwZ19lbmNyeXB0ZWRfZGV0LHBnX2VuY3J5cHRlZF9kZXQpJywKKyAgYW1vcG1ldGhv ZCA9PiAnaGFzaCcgfSwKKwogIyB4aWRfb3BzCiB7IGFtb3BmYW1pbHkgPT4gJ2hhc2gveGlk X29wcycsIGFtb3BsZWZ0dHlwZSA9PiAneGlkJywgYW1vcHJpZ2h0dHlwZSA9PiAneGlkJywK ICAgYW1vcHN0cmF0ZWd5ID0+ICcxJywgYW1vcG9wciA9PiAnPSh4aWQseGlkKScsIGFtb3Bt ZXRob2QgPT4gJ2hhc2gnIH0sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X2FtcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQKaW5kZXgg NGNjMTI5YmViZC4uZGRkYjI3MTEzZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19hbXByb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRh dApAQCAtNDAyLDYgKzQwMiwxMSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2hhc2gvYnl0ZWFf b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2J5dGVhJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ ICdieXRlYScsIGFtcHJvY251bSA9PiAnMicsCiAgIGFtcHJvYyA9PiAnaGFzaHZhcmxlbmFl eHRlbmRlZCcgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdoYXNoL3BnX2VuY3J5cHRlZF9kZXRf b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3BnX2VuY3J5cHRlZF9kZXQnLAorICBhbXByb2Ny aWdodHR5cGUgPT4gJ3BnX2VuY3J5cHRlZF9kZXQnLCBhbXByb2NudW0gPT4gJzEnLCBhbXBy b2MgPT4gJ2hhc2h2YXJsZW5hJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2hhc2gvcGdfZW5j cnlwdGVkX2RldF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAncGdfZW5jcnlwdGVkX2RldCcs CisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAncGdfZW5jcnlwdGVkX2RldCcsIGFtcHJvY251bSA9 PiAnMicsCisgIGFtcHJvYyA9PiAnaGFzaHZhcmxlbmFleHRlbmRlZCcgfSwKIHsgYW1wcm9j ZmFtaWx5ID0+ICdoYXNoL3hpZF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAneGlkJywKICAg YW1wcm9jcmlnaHR0eXBlID0+ICd4aWQnLCBhbXByb2NudW0gPT4gJzEnLCBhbXByb2MgPT4g J2hhc2hpbnQ0JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2hhc2gveGlkX29wcycsIGFtcHJv Y2xlZnR0eXBlID0+ICd4aWQnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19hdHRyaWJ1dGUuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYXR0cmlidXRlLmgKaW5k ZXggMDUzMjk0Yzk5Zi4uNTUwYTUzNjQ5YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19hdHRyaWJ1dGUuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2F0dHJp YnV0ZS5oCkBAIC0xNjQsNiArMTY0LDE1IEBAIENBVEFMT0cocGdfYXR0cmlidXRlLDEyNDks QXR0cmlidXRlUmVsYXRpb25JZCkgQktJX0JPT1RTVFJBUCBCS0lfUk9XVFlQRV9PSUQoNzUs CiAJICovCiAJYm9vbAkJYXR0aXNsb2NhbCBCS0lfREVGQVVMVCh0KTsKIAorCS8qIGNvbHVt biBlbmNyeXB0aW9uIGtleSAqLworCU9pZAkJCWF0dGNlayBCS0lfREVGQVVMVCgwKSBCS0lf TE9PS1VQX09QVChwZ19jb2xlbmNrZXkpOworCisJLyogcmVhbCB0eXBlIGlmIGVuY3J5cHRl ZCAqLworCU9pZAkJCWF0dHJlYWx0eXBpZCBCS0lfREVGQVVMVCgwKSBCS0lfTE9PS1VQX09Q VChwZ190eXBlKTsKKworCS8qIGVuY3J5cHRpb24gYWxnb3JpdGhtIChQR19DRUtfKiB2YWx1 ZXMpICovCisJaW50MTYJCWF0dGVuY2FsZyBCS0lfREVGQVVMVCgwKTsKKwogCS8qIE51bWJl ciBvZiB0aW1lcyBpbmhlcml0ZWQgZnJvbSBkaXJlY3QgcGFyZW50IHJlbGF0aW9uKHMpICov CiAJaW50MzIJCWF0dGluaGNvdW50IEJLSV9ERUZBVUxUKDApOwogCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Nhc3QuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19jYXN0LmRhdAppbmRleCA0NDcxZWI2YmJlLi44NzhiMGJjYmJmIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Nhc3QuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfY2FzdC5kYXQKQEAgLTU0Niw0ICs1NDYsMTAgQEAKIHsgY2FzdHNvdXJjZSA9PiAn dHN0enJhbmdlJywgY2FzdHRhcmdldCA9PiAndHN0em11bHRpcmFuZ2UnLAogICBjYXN0ZnVu YyA9PiAndHN0em11bHRpcmFuZ2UodHN0enJhbmdlKScsIGNhc3Rjb250ZXh0ID0+ICdlJywK ICAgY2FzdG1ldGhvZCA9PiAnZicgfSwKKworeyBjYXN0c291cmNlID0+ICdieXRlYScsIGNh c3R0YXJnZXQgPT4gJ3BnX2VuY3J5cHRlZF9kZXQnLCBjYXN0ZnVuYyA9PiAnMCcsCisgIGNh c3Rjb250ZXh0ID0+ICdlJywgY2FzdG1ldGhvZCA9PiAnYicgfSwKK3sgY2FzdHNvdXJjZSA9 PiAnYnl0ZWEnLCBjYXN0dGFyZ2V0ID0+ICdwZ19lbmNyeXB0ZWRfcm5kJywgY2FzdGZ1bmMg PT4gJzAnLAorICBjYXN0Y29udGV4dCA9PiAnZScsIGNhc3RtZXRob2QgPT4gJ2InIH0sCisK IF0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29sZW5ja2V5LmggYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbGVuY2tleS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLjA5NWVkNzEyYjAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX2NvbGVuY2tleS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBnX2NvbGVuY2tleS5oCisgKgkgIGRlZmluaXRp b24gb2YgdGhlICJjb2x1bW4gZW5jcnlwdGlvbiBrZXkiIHN5c3RlbSBjYXRhbG9nCisgKgor ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjIsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJl Z2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIHNyYy9pbmNs dWRlL2NhdGFsb2cvcGdfY29sZW5rZXkuaAorICoKKyAqIE5PVEVTCisgKgkgIFRoZSBDYXRh bG9nLnBtIG1vZHVsZSByZWFkcyB0aGlzIGZpbGUgYW5kIGRlcml2ZXMgc2NoZW1hCisgKgkg IGluZm9ybWF0aW9uLgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVm IFBHX0NPTEVOQ0tFWV9ICisjZGVmaW5lIFBHX0NPTEVOQ0tFWV9ICisKKyNpbmNsdWRlICJj YXRhbG9nL2dlbmJraS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfY29sZW5ja2V5X2QuaCIK KworLyogLS0tLS0tLS0tLS0tLS0tLQorICoJCXBnX2NvbGVuY2tleSBkZWZpbml0aW9uLiBj cHAgdHVybnMgdGhpcyBpbnRvCisgKgkJdHlwZWRlZiBzdHJ1Y3QgRm9ybURhdGFfcGdfY29s ZW5ja2V5CisgKiAtLS0tLS0tLS0tLS0tLS0tCisgKi8KK0NBVEFMT0cocGdfY29sZW5ja2V5 LDgyMzQsQ29sdW1uRW5jS2V5UmVsYXRpb25JZCkKK3sKKwlPaWQJCQlvaWQ7CisJTmFtZURh dGEJY2VrbmFtZTsKKwlPaWQJCQljZWtvd25lciBCS0lfTE9PS1VQKHBnX2F1dGhpZCk7Cit9 IEZvcm1EYXRhX3BnX2NvbGVuY2tleTsKKwordHlwZWRlZiBGb3JtRGF0YV9wZ19jb2xlbmNr ZXkgKkZvcm1fcGdfY29sZW5ja2V5OworCitERUNMQVJFX1VOSVFVRV9JTkRFWF9QS0VZKHBn X2NvbGVuY2tleV9vaWRfaW5kZXgsIDgyNDAsIENvbHVtbkVuY0tleU9pZEluZGV4SWQsIG9u IHBnX2NvbGVuY2tleSB1c2luZyBidHJlZShvaWQgb2lkX29wcykpOworREVDTEFSRV9VTklR VUVfSU5ERVgocGdfY29sZW5ja2V5X2Nla25hbWVfaW5kZXgsIDgyNDIsIENvbHVtbkVuY0tl eU5hbWVJbmRleElkLCBvbiBwZ19jb2xlbmNrZXkgdXNpbmcgYnRyZWUoY2VrbmFtZSBuYW1l X29wcykpOworCisvKgorICogQ29uc3RhbnRzIGZvciBDTUsgYW5kIENFSyBhbGdvcml0aG1z LiAgTm90ZSB0aGF0IHRoZXNlIGFyZSBwYXJ0IG9mIHRoZQorICogcHJvdG9jb2wuICBGb3Ig Y2xhcml0eSwgdGhlIGFzc2lnbmVkIG51bWJlcnMgYXJlIG5vdCByZXVzZWQgYmV0d2VlbiBD TUtzCisgKiBhbmQgQ0VLcywgYnV0IHRoYXQgaXMgbm90IHRlY2huaWNhbGx5IHJlcXVpcmVk LiAgSW4gZWl0aGVyIGNhc2UsIGRvbid0CisgKiBhc3NpZ24gemVybywgc28gdGhhdCB0aGF0 IGNhbiBiZSB1c2VkIGFzIGFuIGludmFsaWQgdmFsdWUuCisgKi8KKworI2RlZmluZSBQR19D TUtfUlNBRVNfT0FFUF9TSEFfMQkJCTEKKyNkZWZpbmUgUEdfQ01LX1JTQUVTX09BRVBfU0hB XzI1NgkJMgorCisjZGVmaW5lIFBHX0NFS19BRUFEX0FFU18xMjhfQ0JDX0hNQUNfU0hBXzI1 NgkxMzAKKyNkZWZpbmUgUEdfQ0VLX0FFQURfQUVTXzE5Ml9DQkNfSE1BQ19TSEFfMzg0CTEz MQorI2RlZmluZSBQR19DRUtfQUVBRF9BRVNfMjU2X0NCQ19ITUFDX1NIQV8zODQJMTMyCisj ZGVmaW5lIFBHX0NFS19BRUFEX0FFU18yNTZfQ0JDX0hNQUNfU0hBXzUxMgkxMzMKKworI2Vu ZGlmCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbGVuY2tleWRhdGEu aCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29sZW5ja2V5ZGF0YS5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjNlNGRlYTcyMTgKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbGVuY2tleWRhdGEuaApAQCAtMCwwICsx LDQ2IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ19jb2xlbmNrZXlkYXRh LmgKKyAqCSAgZGVmaW5pdGlvbiBvZiB0aGUgImNvbHVtbiBlbmNyeXB0aW9uIGtleSBkYXRh IiBzeXN0ZW0gY2F0YWxvZworICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0y MDIyLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMg Q29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlm b3JuaWEKKyAqCisgKiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbGVua2V5ZGF0YS5oCisg KgorICogTk9URVMKKyAqCSAgVGhlIENhdGFsb2cucG0gbW9kdWxlIHJlYWRzIHRoaXMgZmls ZSBhbmQgZGVyaXZlcyBzY2hlbWEKKyAqCSAgaW5mb3JtYXRpb24uCisgKgorICotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgUEdfQ09MRU5DS0VZREFUQV9ICisjZGVmaW5l IFBHX0NPTEVOQ0tFWURBVEFfSAorCisjaW5jbHVkZSAiY2F0YWxvZy9nZW5ia2kuaCIKKyNp bmNsdWRlICJjYXRhbG9nL3BnX2NvbGVuY2tleWRhdGFfZC5oIgorCisvKiAtLS0tLS0tLS0t LS0tLS0tCisgKgkJcGdfY29sZW5ja2V5ZGF0YSBkZWZpbml0aW9uLiBjcHAgdHVybnMgdGhp cyBpbnRvCisgKgkJdHlwZWRlZiBzdHJ1Y3QgRm9ybURhdGFfcGdfY29sZW5ja2V5ZGF0YQor ICogLS0tLS0tLS0tLS0tLS0tLQorICovCitDQVRBTE9HKHBnX2NvbGVuY2tleWRhdGEsODI1 MCxDb2x1bW5FbmNLZXlEYXRhUmVsYXRpb25JZCkKK3sKKwlPaWQJCQlvaWQ7CisJT2lkCQkJ Y2tkY2VraWQgQktJX0xPT0tVUChwZ19jb2xlbmNrZXkpOworCU9pZAkJCWNrZGNta2lkIEJL SV9MT09LVVAocGdfY29sbWFzdGVya2V5KTsKKwlpbnQxNgkJY2tkY21rYWxnOwkJLyogUEdf Q01LXyogdmFsdWVzICovCisjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1s ZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KKwlieXRlYQkJY2tkZW5jdmFsIEJLSV9GT1JD RV9OT1RfTlVMTDsKKyNlbmRpZgorfSBGb3JtRGF0YV9wZ19jb2xlbmNrZXlkYXRhOworCit0 eXBlZGVmIEZvcm1EYXRhX3BnX2NvbGVuY2tleWRhdGEgKkZvcm1fcGdfY29sZW5ja2V5ZGF0 YTsKKworREVDTEFSRV9UT0FTVChwZ19jb2xlbmNrZXlkYXRhLCA4MjM3LCA4MjM4KTsKKwor REVDTEFSRV9VTklRVUVfSU5ERVhfUEtFWShwZ19jb2xlbmNrZXlkYXRhX29pZF9pbmRleCwg ODI1MSwgQ29sdW1uRW5jS2V5RGF0YU9pZEluZGV4SWQsIG9uIHBnX2NvbGVuY2tleWRhdGEg dXNpbmcgYnRyZWUob2lkIG9pZF9vcHMpKTsKK0RFQ0xBUkVfVU5JUVVFX0lOREVYKHBnX2Nv bGVuY2tleWRhdGFfY2tkY2VraWRfY2tkY21raWRfaW5kZXgsIDgyNTIsIENvbHVtbkVuY0tl eUNla2lkQ21raWRJbmRleElkLCBvbiBwZ19jb2xlbmNrZXlkYXRhIHVzaW5nIGJ0cmVlKGNr ZGNla2lkIG9pZF9vcHMsIGNrZGNta2lkIG9pZF9vcHMpKTsKKworI2VuZGlmCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbG1hc3RlcmtleS5oIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19jb2xtYXN0ZXJrZXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwLi4wMzQ0Y2M0MjAxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19jb2xtYXN0ZXJrZXkuaApAQCAtMCwwICsxLDQ1IEBACisvKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ19jb2xtYXN0ZXJrZXkuaAorICoJICBkZWZpbml0 aW9uIG9mIHRoZSAiY29sdW1uIG1hc3RlciBrZXkiIHN5c3RlbSBjYXRhbG9nCisgKgorICog UG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2Vu dHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIHNyYy9pbmNsdWRl L2NhdGFsb2cvcGdfY29sbWFzdGVya2V5LmgKKyAqCisgKiBOT1RFUworICoJICBUaGUgQ2F0 YWxvZy5wbSBtb2R1bGUgcmVhZHMgdGhpcyBmaWxlIGFuZCBkZXJpdmVzIHNjaGVtYQorICoJ ICBpbmZvcm1hdGlvbi4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRl ZiBQR19DT0xNQVNURVJLRVlfSAorI2RlZmluZSBQR19DT0xNQVNURVJLRVlfSAorCisjaW5j bHVkZSAiY2F0YWxvZy9nZW5ia2kuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbG1hc3Rl cmtleV9kLmgiCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqCQlwZ19jb2xtYXN0ZXJrZXkg ZGVmaW5pdGlvbi4gY3BwIHR1cm5zIHRoaXMgaW50bworICoJCXR5cGVkZWYgc3RydWN0IEZv cm1EYXRhX3BnX2NvbG1hc3RlcmtleQorICogLS0tLS0tLS0tLS0tLS0tLQorICovCitDQVRB TE9HKHBnX2NvbG1hc3RlcmtleSw4MjMzLENvbHVtbk1hc3RlcktleVJlbGF0aW9uSWQpCit7 CisJT2lkCQkJb2lkOworCU5hbWVEYXRhCWNta25hbWU7CisJT2lkCQkJY21rb3duZXIgQktJ X0xPT0tVUChwZ19hdXRoaWQpOworI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFi bGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCisJdGV4dAkJY21rcmVhbG0gQktJX0ZP UkNFX05PVF9OVUxMOworI2VuZGlmCit9IEZvcm1EYXRhX3BnX2NvbG1hc3RlcmtleTsKKwor dHlwZWRlZiBGb3JtRGF0YV9wZ19jb2xtYXN0ZXJrZXkgKkZvcm1fcGdfY29sbWFzdGVya2V5 OworCitERUNMQVJFX1RPQVNUKHBnX2NvbG1hc3RlcmtleSwgODIzNSwgODIzNik7CisKK0RF Q0xBUkVfVU5JUVVFX0lOREVYX1BLRVkocGdfY29sbWFzdGVya2V5X29pZF9pbmRleCwgODIz OSwgQ29sdW1uTWFzdGVyS2V5T2lkSW5kZXhJZCwgb24gcGdfY29sbWFzdGVya2V5IHVzaW5n IGJ0cmVlKG9pZCBvaWRfb3BzKSk7CitERUNMQVJFX1VOSVFVRV9JTkRFWChwZ19jb2xtYXN0 ZXJrZXlfY21rbmFtZV9pbmRleCwgODI0MSwgQ29sdW1uTWFzdGVyS2V5TmFtZUluZGV4SWQs IG9uIHBnX2NvbG1hc3RlcmtleSB1c2luZyBidHJlZShjbWtuYW1lIG5hbWVfb3BzKSk7CisK KyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGNsYXNzLmRh dCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BjbGFzcy5kYXQKaW5kZXggZGJjYWU3ZmZk ZC4uMGNhNDAxZmZlNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGNs YXNzLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wY2xhc3MuZGF0CkBAIC0x NjYsNiArMTY2LDggQEAKICAgb3BjaW50eXBlID0+ICdib29sJyB9LAogeyBvcGNtZXRob2Qg PT4gJ2hhc2gnLCBvcGNuYW1lID0+ICdieXRlYV9vcHMnLCBvcGNmYW1pbHkgPT4gJ2hhc2gv Ynl0ZWFfb3BzJywKICAgb3BjaW50eXBlID0+ICdieXRlYScgfSwKK3sgb3BjbWV0aG9kID0+ ICdoYXNoJywgb3BjbmFtZSA9PiAncGdfZW5jcnlwdGVkX2RldF9vcHMnLCBvcGNmYW1pbHkg PT4gJ2hhc2gvcGdfZW5jcnlwdGVkX2RldF9vcHMnLAorICBvcGNpbnR5cGUgPT4gJ3BnX2Vu Y3J5cHRlZF9kZXQnIH0sCiB7IG9wY21ldGhvZCA9PiAnYnRyZWUnLCBvcGNuYW1lID0+ICd0 aWRfb3BzJywgb3BjZmFtaWx5ID0+ICdidHJlZS90aWRfb3BzJywKICAgb3BjaW50eXBlID0+ ICd0aWQnIH0sCiB7IG9wY21ldGhvZCA9PiAnaGFzaCcsIG9wY25hbWUgPT4gJ3hpZF9vcHMn LCBvcGNmYW1pbHkgPT4gJ2hhc2gveGlkX29wcycsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX29wZXJhdG9yLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3Bl cmF0b3IuZGF0CmluZGV4IGJjNWY4MjEzZjMuLjQ3MzdhN2Y5ZWQgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BlcmF0b3IuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfb3BlcmF0b3IuZGF0CkBAIC0zNDU4LDQgKzM0NTgsMTQgQEAKICAgb3ByY29k ZSA9PiAnbXVsdGlyYW5nZV9hZnRlcl9tdWx0aXJhbmdlJywgb3BycmVzdCA9PiAnbXVsdGly YW5nZXNlbCcsCiAgIG9wcmpvaW4gPT4gJ3NjYWxhcmd0am9pbnNlbCcgfSwKIAoreyBvaWQg PT4gJzgyNDcnLCBkZXNjciA9PiAnZXF1YWwnLAorICBvcHJuYW1lID0+ICc9Jywgb3ByY2Fu bWVyZ2UgPT4gJ2YnLCBvcHJjYW5oYXNoID0+ICd0Jywgb3BybGVmdCA9PiAncGdfZW5jcnlw dGVkX2RldCcsCisgIG9wcnJpZ2h0ID0+ICdwZ19lbmNyeXB0ZWRfZGV0Jywgb3BycmVzdWx0 ID0+ICdib29sJywgb3ByY29tID0+ICc9KHBnX2VuY3J5cHRlZF9kZXQscGdfZW5jcnlwdGVk X2RldCknLAorICBvcHJuZWdhdGUgPT4gJzw+KHBnX2VuY3J5cHRlZF9kZXQscGdfZW5jcnlw dGVkX2RldCknLCBvcHJjb2RlID0+ICdwZ19lbmNyeXB0ZWRfZGV0X2VxJywgb3BycmVzdCA9 PiAnZXFzZWwnLAorICBvcHJqb2luID0+ICdlcWpvaW5zZWwnIH0sCit7IG9pZCA9PiAnODI0 OCcsIGRlc2NyID0+ICdub3QgZXF1YWwnLAorICBvcHJuYW1lID0+ICc8PicsIG9wcmxlZnQg PT4gJ3BnX2VuY3J5cHRlZF9kZXQnLCBvcHJyaWdodCA9PiAncGdfZW5jcnlwdGVkX2RldCcs IG9wcnJlc3VsdCA9PiAnYm9vbCcsCisgIG9wcmNvbSA9PiAnPD4ocGdfZW5jcnlwdGVkX2Rl dCxwZ19lbmNyeXB0ZWRfZGV0KScsIG9wcm5lZ2F0ZSA9PiAnPShwZ19lbmNyeXB0ZWRfZGV0 LHBnX2VuY3J5cHRlZF9kZXQpJywKKyAgb3ByY29kZSA9PiAncGdfZW5jcnlwdGVkX2RldF9u ZScsIG9wcnJlc3QgPT4gJ25lcXNlbCcsIG9wcmpvaW4gPT4gJ25lcWpvaW5zZWwnIH0sCisK IF0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BmYW1pbHkuZGF0IGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGZhbWlseS5kYXQKaW5kZXggYjNiNmE3ZTYxNi4u NTM0MzU4MGIwNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGZhbWls eS5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGZhbWlseS5kYXQKQEAgLTEw OCw2ICsxMDgsOCBAQAogICBvcGZtZXRob2QgPT4gJ2hhc2gnLCBvcGZuYW1lID0+ICdib29s X29wcycgfSwKIHsgb2lkID0+ICcyMjIzJywKICAgb3BmbWV0aG9kID0+ICdoYXNoJywgb3Bm bmFtZSA9PiAnYnl0ZWFfb3BzJyB9LAoreyBvaWQgPT4gJzgyNDknLAorICBvcGZtZXRob2Qg PT4gJ2hhc2gnLCBvcGZuYW1lID0+ICdwZ19lbmNyeXB0ZWRfZGV0X29wcycgfSwKIHsgb2lk ID0+ICcyNzg5JywKICAgb3BmbWV0aG9kID0+ICdidHJlZScsIG9wZm5hbWUgPT4gJ3RpZF9v cHMnIH0sCiB7IG9pZCA9PiAnMjIyNScsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRl eCA4N2FhNTcxYTMzLi42YjMyNjk4YzJiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQK QEAgLTgwMjUsOSArODAyNSw5IEBACiAgIHByb25hbWUgPT4gJ3BnX3ByZXBhcmVkX3N0YXRl bWVudCcsIHByb3Jvd3MgPT4gJzEwMDAnLCBwcm9yZXRzZXQgPT4gJ3QnLAogICBwcm92b2xh dGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlwZSA9PiAncmVjb3Jk JywKICAgcHJvYXJndHlwZXMgPT4gJycsCi0gIHByb2FsbGFyZ3R5cGVzID0+ICd7dGV4dCx0 ZXh0LHRpbWVzdGFtcHR6LF9yZWd0eXBlLGJvb2wsaW50OCxpbnQ4fScsCi0gIHByb2FyZ21v ZGVzID0+ICd7byxvLG8sbyxvLG8sb30nLAotICBwcm9hcmduYW1lcyA9PiAne25hbWUsc3Rh dGVtZW50LHByZXBhcmVfdGltZSxwYXJhbWV0ZXJfdHlwZXMsZnJvbV9zcWwsZ2VuZXJpY19w bGFucyxjdXN0b21fcGxhbnN9JywKKyAgcHJvYWxsYXJndHlwZXMgPT4gJ3t0ZXh0LHRleHQs dGltZXN0YW1wdHosX3JlZ3R5cGUsYm9vbCxpbnQ4LGludDgsX3JlZ2NsYXNzLF9pbnQyfScs CisgIHByb2FyZ21vZGVzID0+ICd7byxvLG8sbyxvLG8sbyxvLG99JywKKyAgcHJvYXJnbmFt ZXMgPT4gJ3tuYW1lLHN0YXRlbWVudCxwcmVwYXJlX3RpbWUscGFyYW1ldGVyX3R5cGVzLGZy b21fc3FsLGdlbmVyaWNfcGxhbnMsY3VzdG9tX3BsYW5zLHBhcmFtZXRlcl9vcmlnX3RhYmxl cyxwYXJhbWV0ZXJfb3JpZ19jb2x1bW5zfScsCiAgIHByb3NyYyA9PiAncGdfcHJlcGFyZWRf c3RhdGVtZW50JyB9LAogeyBvaWQgPT4gJzI1MTEnLCBkZXNjciA9PiAnZ2V0IHRoZSBvcGVu IGN1cnNvcnMgZm9yIHRoaXMgc2Vzc2lvbicsCiAgIHByb25hbWUgPT4gJ3BnX2N1cnNvcics IHByb3Jvd3MgPT4gJzEwMDAnLCBwcm9yZXRzZXQgPT4gJ3QnLApAQCAtMTE4ODUsNCArMTE4 ODUsMTEgQEAKICAgcHJvcmV0dHlwZSA9PiAnYnl0ZWEnLCBwcm9hcmd0eXBlcyA9PiAncGdf YnJpbl9taW5tYXhfbXVsdGlfc3VtbWFyeScsCiAgIHByb3NyYyA9PiAnYnJpbl9taW5tYXhf bXVsdGlfc3VtbWFyeV9zZW5kJyB9LAogCit7IG9pZCA9PiAnODI0NScsCisgIHByb25hbWUg PT4gJ3BnX2VuY3J5cHRlZF9kZXRfZXEnLCBwcm9sZWFrcHJvb2YgPT4gJ3QnLCBwcm9yZXR0 eXBlID0+ICdib29sJywKKyAgcHJvYXJndHlwZXMgPT4gJ3BnX2VuY3J5cHRlZF9kZXQgcGdf ZW5jcnlwdGVkX2RldCcsIHByb3NyYyA9PiAnYnl0ZWFlcScgfSwKK3sgb2lkID0+ICc4MjQ2 JywKKyAgcHJvbmFtZSA9PiAncGdfZW5jcnlwdGVkX2RldF9uZScsIHByb2xlYWtwcm9vZiA9 PiAndCcsIHByb3JldHR5cGUgPT4gJ2Jvb2wnLAorICBwcm9hcmd0eXBlcyA9PiAncGdfZW5j cnlwdGVkX2RldCBwZ19lbmNyeXB0ZWRfZGV0JywgcHJvc3JjID0+ICdieXRlYW5lJyB9LAor CiBdCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3R5cGUuZGF0IGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ190eXBlLmRhdAppbmRleCBkZjQ1ODc5NDYzLi5kZjFmYTNl MzkzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3R5cGUuZGF0CisrKyBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfdHlwZS5kYXQKQEAgLTY5Miw0ICs2OTIsMTYgQEAK ICAgdHlwcmVjZWl2ZSA9PiAnYnJpbl9taW5tYXhfbXVsdGlfc3VtbWFyeV9yZWN2JywKICAg dHlwc2VuZCA9PiAnYnJpbl9taW5tYXhfbXVsdGlfc3VtbWFyeV9zZW5kJywgdHlwYWxpZ24g PT4gJ2knLAogICB0eXBzdG9yYWdlID0+ICd4JywgdHlwY29sbGF0aW9uID0+ICdkZWZhdWx0 JyB9LAorCit7IG9pZCA9PiAnODI0MycsIGRlc2NyID0+ICdlbmNyeXB0ZWQgY29sdW1uIChk ZXRlcm1pbmlzdGljKScsCisgIHR5cG5hbWUgPT4gJ3BnX2VuY3J5cHRlZF9kZXQnLCB0eXBs ZW4gPT4gJy0xJywgdHlwYnl2YWwgPT4gJ2YnLCB0eXB0eXBlID0+ICd5JywKKyAgdHlwY2F0 ZWdvcnkgPT4gJ1knLCB0eXBpbnB1dCA9PiAnYnl0ZWFpbicsIHR5cG91dHB1dCA9PiAnYnl0 ZWFvdXQnLAorICB0eXByZWNlaXZlID0+ICdieXRlYXJlY3YnLCB0eXBzZW5kID0+ICdieXRl YXNlbmQnLCB0eXBhbGlnbiA9PiAnaScsCisgIHR5cHN0b3JhZ2UgPT4gJ2UnIH0sCit7IG9p ZCA9PiAnODI0NCcsIGRlc2NyID0+ICdlbmNyeXB0ZWQgY29sdW1uIChyYW5kb21pemVkKScs CisgIHR5cG5hbWUgPT4gJ3BnX2VuY3J5cHRlZF9ybmQnLCB0eXBsZW4gPT4gJy0xJywgdHlw Ynl2YWwgPT4gJ2YnLCB0eXB0eXBlID0+ICd5JywKKyAgdHlwY2F0ZWdvcnkgPT4gJ1knLCB0 eXBpbnB1dCA9PiAnYnl0ZWFpbicsIHR5cG91dHB1dCA9PiAnYnl0ZWFvdXQnLAorICB0eXBy ZWNlaXZlID0+ICdieXRlYXJlY3YnLCB0eXBzZW5kID0+ICdieXRlYXNlbmQnLCB0eXBhbGln biA9PiAnaScsCisgIHR5cHN0b3JhZ2UgPT4gJ2UnIH0sCisKIF0KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfdHlwZS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ190 eXBlLmgKaW5kZXggNDhhMjU1OTEzNy4uZmRiMDk2YjFmYiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ190eXBlLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ190 eXBlLmgKQEAgLTI3Nyw2ICsyNzcsNyBAQCBERUNMQVJFX1VOSVFVRV9JTkRFWChwZ190eXBl X3R5cG5hbWVfbnNwX2luZGV4LCAyNzA0LCBUeXBlTmFtZU5zcEluZGV4SWQsIG9uIHBnXwog I2RlZmluZSAgVFlQVFlQRV9NVUxUSVJBTkdFCSdtJyAvKiBtdWx0aXJhbmdlIHR5cGUgKi8K ICNkZWZpbmUgIFRZUFRZUEVfUFNFVURPCQkncCcgLyogcHNldWRvLXR5cGUgKi8KICNkZWZp bmUgIFRZUFRZUEVfUkFOR0UJCSdyJyAvKiByYW5nZSB0eXBlICovCisjZGVmaW5lICBUWVBU WVBFX0VOQ1JZUFRFRAkneScJLyogZW5jcnlwdGVkIGNvbHVtbiB2YWx1ZSAqLwogCiAjZGVm aW5lICBUWVBDQVRFR09SWV9JTlZBTElECSdcMCcJLyogbm90IGFuIGFsbG93ZWQgY2F0ZWdv cnkgKi8KICNkZWZpbmUgIFRZUENBVEVHT1JZX0FSUkFZCQknQScKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaAppbmRleCA3M2Y2MzViNDU1Li44ODNlZDg4NDY2IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oCkBAIC02NzgsNiArNjc4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29sdW1uRGVm CiAJY2hhcgkgICAqY29sbmFtZTsJCS8qIG5hbWUgb2YgY29sdW1uICovCiAJVHlwZU5hbWUg ICAqdHlwZU5hbWU7CQkvKiB0eXBlIG9mIGNvbHVtbiAqLwogCWNoYXIJICAgKmNvbXByZXNz aW9uOwkvKiBjb21wcmVzc2lvbiBtZXRob2QgZm9yIGNvbHVtbiAqLworCUxpc3QJICAgKmVu Y3J5cHRpb247CQkvKiBlbmNyeXB0aW9uIGluZm8gZm9yIGNvbHVtbiAqLwogCWludAkJCWlu aGNvdW50OwkJLyogbnVtYmVyIG9mIHRpbWVzIGNvbHVtbiBpcyBpbmhlcml0ZWQgKi8KIAli b29sCQlpc19sb2NhbDsJCS8qIGNvbHVtbiBoYXMgbG9jYWwgKG5vbi1pbmhlcml0ZWQpIGRl ZiduICovCiAJYm9vbAkJaXNfbm90X251bGw7CS8qIE5PVCBOVUxMIGNvbnN0cmFpbnQgc3Bl Y2lmaWVkPyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaCBi L3NyYy9pbmNsdWRlL3BhcnNlci9hbmFseXplLmgKaW5kZXggZGMzNzk1NDdjNy4uYzMxMGUx MjRmMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaAorKysgYi9z cmMvaW5jbHVkZS9wYXJzZXIvYW5hbHl6ZS5oCkBAIC0yOCw3ICsyOCw5IEBAIGV4dGVybiBQ R0RMTElNUE9SVCBwb3N0X3BhcnNlX2FuYWx5emVfaG9va190eXBlIHBvc3RfcGFyc2VfYW5h bHl6ZV9ob29rOwogZXh0ZXJuIFF1ZXJ5ICpwYXJzZV9hbmFseXplX2ZpeGVkcGFyYW1zKFJh d1N0bXQgKnBhcnNlVHJlZSwgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCQkJCQlj b25zdCBPaWQgKnBhcmFtVHlwZXMsIGludCBudW1QYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQg KnF1ZXJ5RW52KTsKIGV4dGVybiBRdWVyeSAqcGFyc2VfYW5hbHl6ZV92YXJwYXJhbXMoUmF3 U3RtdCAqcGFyc2VUcmVlLCBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAotCQkJCQkJCQkJICBP aWQgKipwYXJhbVR5cGVzLCBpbnQgKm51bVBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVl cnlFbnYpOworCQkJCQkJCQkJICBPaWQgKipwYXJhbVR5cGVzLCBpbnQgKm51bVBhcmFtcywK KwkJCQkJCQkJCSAgT2lkICoqcGFyYW1PcmlnVGJscywgQXR0ck51bWJlciAqKnBhcmFtT3Jp Z0NvbHMsCisJCQkJCQkJCQkgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIGV4dGVy biBRdWVyeSAqcGFyc2VfYW5hbHl6ZV93aXRoY2IoUmF3U3RtdCAqcGFyc2VUcmVlLCBjb25z dCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCQkJCQkgICBQYXJzZXJTZXR1cEhvb2sgcGFyc2Vy U2V0dXAsCiAJCQkJCQkJCSAgIHZvaWQgKnBhcnNlclNldHVwQXJnLApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9w YXJzZV9ub2RlLmgKaW5kZXggY2Y5Yzc1OTAyNS4uMjI1YTJhODczMyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJz ZXIvcGFyc2Vfbm9kZS5oCkBAIC05Myw2ICs5Myw3IEBAIHR5cGVkZWYgTm9kZSAqKCpQYXJz ZVBhcmFtUmVmSG9vaykgKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUGFyYW1SZWYgKnByZWYpOwog dHlwZWRlZiBOb2RlICooKkNvZXJjZVBhcmFtSG9vaykgKFBhcnNlU3RhdGUgKnBzdGF0ZSwg UGFyYW0gKnBhcmFtLAogCQkJCQkJCQkgIE9pZCB0YXJnZXRUeXBlSWQsIGludDMyIHRhcmdl dFR5cGVNb2QsCiAJCQkJCQkJCSAgaW50IGxvY2F0aW9uKTsKK3R5cGVkZWYgdm9pZCAoKlBh cmFtQXNzaWduT3JpZ0hvb2spIChQYXJzZVN0YXRlICpwc3RhdGUsIFBhcmFtICpwYXJhbSwg T2lkIG9yaWd0YmwsIEF0dHJOdW1iZXIgb3JpZ2NvbCk7CiAKIAogLyoKQEAgLTIyMiw2ICsy MjMsNyBAQCBzdHJ1Y3QgUGFyc2VTdGF0ZQogCVBvc3RQYXJzZUNvbHVtblJlZkhvb2sgcF9w b3N0X2NvbHVtbnJlZl9ob29rOwogCVBhcnNlUGFyYW1SZWZIb29rIHBfcGFyYW1yZWZfaG9v azsKIAlDb2VyY2VQYXJhbUhvb2sgcF9jb2VyY2VfcGFyYW1faG9vazsKKwlQYXJhbUFzc2ln bk9yaWdIb29rIHBfcGFyYW1fYXNzaWduX29yaWdfaG9vazsKIAl2b2lkCSAgICpwX3JlZl9o b29rX3N0YXRlOwkvKiBjb21tb24gcGFzc3Rocm91Z2ggbGluayBmb3IgYWJvdmUgKi8KIH07 CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9wYXJhbS5oIGIvc3Jj L2luY2x1ZGUvcGFyc2VyL3BhcnNlX3BhcmFtLmgKaW5kZXggZGYxZWU2NjBkOC4uZGEyMDJi MjhhNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3BhcmFtLmgKKysr IGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3BhcmFtLmgKQEAgLTE4LDcgKzE4LDggQEAK IGV4dGVybiB2b2lkIHNldHVwX3BhcnNlX2ZpeGVkX3BhcmFtZXRlcnMoUGFyc2VTdGF0ZSAq cHN0YXRlLAogCQkJCQkJCQkJCSBjb25zdCBPaWQgKnBhcmFtVHlwZXMsIGludCBudW1QYXJh bXMpOwogZXh0ZXJuIHZvaWQgc2V0dXBfcGFyc2VfdmFyaWFibGVfcGFyYW1ldGVycyhQYXJz ZVN0YXRlICpwc3RhdGUsCi0JCQkJCQkJCQkJCU9pZCAqKnBhcmFtVHlwZXMsIGludCAqbnVt UGFyYW1zKTsKKwkJCQkJCQkJCQkJT2lkICoqcGFyYW1UeXBlcywgaW50ICpudW1QYXJhbXMs CisJCQkJCQkJCQkJCU9pZCAqKnBhcmFtT3JpZ1RibHMsIEF0dHJOdW1iZXIgKipwYXJhbU9y aWdDb2xzKTsKIGV4dGVybiB2b2lkIGNoZWNrX3ZhcmlhYmxlX3BhcmFtZXRlcnMoUGFyc2VT dGF0ZSAqcHN0YXRlLCBRdWVyeSAqcXVlcnkpOwogZXh0ZXJuIGJvb2wgcXVlcnlfY29udGFp bnNfZXh0ZXJuX3BhcmFtcyhRdWVyeSAqcXVlcnkpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS90Y29wL3Rjb3Bwcm90LmggYi9zcmMvaW5jbHVkZS90Y29wL3Rjb3Bwcm90LmgKaW5k ZXggNzBkOWRhYjI1Yi4uMzAzOGNlYjUyMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNv cC90Y29wcHJvdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaApAQCAtNTMs NiArNTMsOCBAQCBleHRlcm4gTGlzdCAqcGdfYW5hbHl6ZV9hbmRfcmV3cml0ZV92YXJwYXJh bXMoUmF3U3RtdCAqcGFyc2V0cmVlLAogCQkJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKnF1ZXJ5 X3N0cmluZywKIAkJCQkJCQkJCQkJICBPaWQgKipwYXJhbVR5cGVzLAogCQkJCQkJCQkJCQkg IGludCAqbnVtUGFyYW1zLAorCQkJCQkJCQkJCQkgIE9pZCAqKnBhcmFtT3JpZ1RibHMsCisJ CQkJCQkJCQkJCSAgQXR0ck51bWJlciAqKnBhcmFtT3JpZ0NvbHMsCiAJCQkJCQkJCQkJCSAg UXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOwogZXh0ZXJuIExpc3QgKnBnX2FuYWx5emVf YW5kX3Jld3JpdGVfd2l0aGNiKFJhd1N0bXQgKnBhcnNldHJlZSwKIAkJCQkJCQkJCQkgICBj b25zdCBjaGFyICpxdWVyeV9zdHJpbmcsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGls cy9wbGFuY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCmluZGV4IDA0 OTk2MzVmNTkuLjhmOWRjYzAyNGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3Bs YW5jYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCkBAIC0xMDEs NiArMTAxLDggQEAgdHlwZWRlZiBzdHJ1Y3QgQ2FjaGVkUGxhblNvdXJjZQogCUNvbW1hbmRU YWcJY29tbWFuZFRhZzsJCS8qICdudWZmIHNhaWQgKi8KIAlPaWQJCSAgICpwYXJhbV90eXBl czsJLyogYXJyYXkgb2YgcGFyYW1ldGVyIHR5cGUgT0lEcywgb3IgTlVMTCAqLwogCWludAkJ CW51bV9wYXJhbXM7CQkvKiBsZW5ndGggb2YgcGFyYW1fdHlwZXMgYXJyYXkgKi8KKwlPaWQJ CSAgICpwYXJhbV9vcmlndGJsczsJLyogYXJyYXkgb2YgdW5kZXJseWluZyB0YWJsZXMgb2Yg cGFyYW1ldGVycywgb3IgTlVMTCAqLworCUF0dHJOdW1iZXIgKnBhcmFtX29yaWdjb2xzOwkv KiBhcnJheSBvZiB1bmRlcmx5aW5nIGNvbHVtbnMgb2YgcGFyYW1ldGVycywgb3IgTlVMTCAq LwogCVBhcnNlclNldHVwSG9vayBwYXJzZXJTZXR1cDsJLyogYWx0ZXJuYXRpdmUgcGFyYW1l dGVyIHNwZWMgbWV0aG9kICovCiAJdm9pZAkgICAqcGFyc2VyU2V0dXBBcmc7CiAJaW50CQkJ Y3Vyc29yX29wdGlvbnM7IC8qIGN1cnNvciBvcHRpb25zIHVzZWQgZm9yIHBsYW5uaW5nICov CkBAIC0xOTksNiArMjAxLDggQEAgZXh0ZXJuIHZvaWQgQ29tcGxldGVDYWNoZWRQbGFuKENh Y2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJICAgTWVtb3J5Q29udGV4dCBx dWVyeXRyZWVfY29udGV4dCwKIAkJCQkJCQkgICBPaWQgKnBhcmFtX3R5cGVzLAogCQkJCQkJ CSAgIGludCBudW1fcGFyYW1zLAorCQkJCQkJCSAgIE9pZCAqcGFyYW1fb3JpZ3RibHMsCisJ CQkJCQkJICAgQXR0ck51bWJlciAqcGFyYW1fb3JpZ2NvbHMsCiAJCQkJCQkJICAgUGFyc2Vy U2V0dXBIb29rIHBhcnNlclNldHVwLAogCQkJCQkJCSAgIHZvaWQgKnBhcnNlclNldHVwQXJn LAogCQkJCQkJCSAgIGludCBjdXJzb3Jfb3B0aW9ucywKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3V0aWxzL3N5c2NhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9zeXNjYWNoZS5oCmlu ZGV4IDQ0NjNlYTY2YmUuLjA5ZTJkZjdkNzggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0 aWxzL3N5c2NhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaApAQCAt NDQsOCArNDQsMTEgQEAgZW51bSBTeXNDYWNoZUlkZW50aWZpZXIKIAlBVVRITkFNRSwKIAlB VVRIT0lELAogCUNBU1RTT1VSQ0VUQVJHRVQsCisJQ0VLTkFNRSwKKwlDRUtPSUQsCiAJQ0xB QU1OQU1FTlNQLAogCUNMQU9JRCwKKwlDTUtPSUQsCiAJQ09MTE5BTUVFTkNOU1AsCiAJQ09M TE9JRCwKIAlDT05ERUZBVUxULApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2Nv bW1vbi9wcmludHNpbXBsZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9wcmludHNp bXBsZS5jCmluZGV4IGU5OWFhMjc5ZjYuLjc5MTU0ZjhhYWIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9jb21tb24vcHJpbnRzaW1wbGUuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvY29tbW9uL3ByaW50c2ltcGxlLmMKQEAgLTQ2LDYgKzQ2LDggQEAgcHJpbnRzaW1w bGVfc3RhcnR1cChEZXN0UmVjZWl2ZXIgKnNlbGYsIGludCBvcGVyYXRpb24sIFR1cGxlRGVz YyB0dXBkZXNjKQogCQlwcV9zZW5kaW50MTYoJmJ1ZiwgYXR0ci0+YXR0bGVuKTsKIAkJcHFf c2VuZGludDMyKCZidWYsIGF0dHItPmF0dHR5cG1vZCk7CiAJCXBxX3NlbmRpbnQxNigmYnVm LCAwKTsJLyogZm9ybWF0IGNvZGUgKi8KKwkJcHFfc2VuZGludDMyKCZidWYsIDApOwkvKiBD RUsgKi8KKwkJcHFfc2VuZGludDE2KCZidWYsIDApOwkvKiBDRUsgYWxnICovCiAJfQogCiAJ cHFfZW5kbWVzc2FnZSgmYnVmKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9j b21tb24vcHJpbnR0dXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcHJpbnR0dXAu YwppbmRleCBkMmYzYjU3Mjg4Li5lMWQzZWZhYjQ0IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvY29tbW9uL3ByaW50dHVwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2Nv bW1vbi9wcmludHR1cC5jCkBAIC0xNSwxMyArMTUsMjUgQEAKICAqLwogI2luY2x1ZGUgInBv c3RncmVzLmgiCiAKKyNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKICNpbmNsdWRlICJhY2Nl c3MvcHJpbnR0dXAuaCIKKyNpbmNsdWRlICJhY2Nlc3Mvc2tleS5oIgorI2luY2x1ZGUgImFj Y2Vzcy90YWJsZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfY29sZW5ja2V5LmgiCisjaW5j bHVkZSAiY2F0YWxvZy9wZ19jb2xlbmNrZXlkYXRhLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9w Z19jb2xtYXN0ZXJrZXkuaCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgogI2luY2x1ZGUg ImxpYnBxL3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAidGNvcC9wcXVlcnkuaCIKKyNpbmNsdWRl ICJ1dGlscy9hcnJheS5oIgorI2luY2x1ZGUgInV0aWxzL2FycmF5YWNjZXNzLmgiCisjaW5j bHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgog I2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbWRlYnVn LmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9yZWwu aCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogCiAKIHN0YXRpYyB2b2lkIHByaW50 dHVwX3N0YXJ0dXAoRGVzdFJlY2VpdmVyICpzZWxmLCBpbnQgb3BlcmF0aW9uLApAQCAtMTUx LDYgKzE2MywxMTEgQEAgcHJpbnR0dXBfc3RhcnR1cChEZXN0UmVjZWl2ZXIgKnNlbGYsIGlu dCBvcGVyYXRpb24sIFR1cGxlRGVzYyB0eXBlaW5mbykKIAkgKi8KIH0KIAorLyoKKyAqIFNl bmQgQ29sdW1uTWFzdGVyS2V5IG1lc3NhZ2UsIHVubGVzcyBpdCdzIGFscmVhZHkgYmVlbiBz ZW50IGluIHRoaXMgc2Vzc2lvbgorICogZm9yIHRoaXMga2V5LgorICoKKyAqIFRPRE86IHN5 c2NhY2hlIGludmFsaWRhdGlvbiBzdXBwb3J0CisgKi8KK0xpc3QJICAgKmNta19zZW50ID0g TklMOworCitzdGF0aWMgdm9pZAorTWF5YmVTZW5kQ29sdW1uTWFzdGVyS2V5TWVzc2FnZShP aWQgY21raWQpCit7CisJSGVhcFR1cGxlCXR1cGxlOworCUZvcm1fcGdfY29sbWFzdGVya2V5 IGNta2Zvcm07CisJRGF0dW0JCWRhdHVtOworCWJvb2wJCWlzbnVsbDsKKwlTdHJpbmdJbmZv RGF0YSBidWY7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCisJaWYgKGxpc3RfbWVt YmVyX29pZChjbWtfc2VudCwgY21raWQpKQorCQlyZXR1cm47CisKKwl0dXBsZSA9IFNlYXJj aFN5c0NhY2hlMShDTUtPSUQsIE9iamVjdElkR2V0RGF0dW0oY21raWQpKTsKKwlpZiAoIUhl YXBUdXBsZUlzVmFsaWQodHVwbGUpKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3IgY29sdW1uIG1hc3RlciBrZXkgJXUiLCBjbWtpZCk7CisJY21rZm9ybSA9IChG b3JtX3BnX2NvbG1hc3RlcmtleSkgR0VUU1RSVUNUKHR1cGxlKTsKKworCXBxX2JlZ2lubWVz c2FnZSgmYnVmLCAneScpOyAvKiBDb2x1bW5NYXN0ZXJLZXkgKi8KKwlwcV9zZW5kaW50MzIo JmJ1ZiwgY21rZm9ybS0+b2lkKTsKKwlwcV9zZW5kc3RyaW5nKCZidWYsIE5hbWVTdHIoY21r Zm9ybS0+Y21rbmFtZSkpOworCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKENNS09JRCwgdHVw bGUsIEFudW1fcGdfY29sbWFzdGVya2V5X2Nta3JlYWxtLCAmaXNudWxsKTsKKwlBc3NlcnQo IWlzbnVsbCk7CisJcHFfc2VuZHN0cmluZygmYnVmLCBUZXh0RGF0dW1HZXRDU3RyaW5nKGRh dHVtKSk7CisJcHFfZW5kbWVzc2FnZSgmYnVmKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0dXBs ZSk7CisKKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFRvcE1lbW9yeUNv bnRleHQpOworCWNta19zZW50ID0gbGFwcGVuZF9vaWQoY21rX3NlbnQsIGNta2lkKTsKKwlN ZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7Cit9CisKKy8qCisgKiBTZW5kIENv bHVtbkVuY3J5cHRpb25LZXkgbWVzc2FnZSwgdW5sZXNzIGl0J3MgYWxyZWFkeSBiZWVuIHNl bnQgaW4gdGhpcworICogc2Vzc2lvbiBmb3IgdGhpcyBrZXkuCisgKgorICogVE9ETzogc3lz Y2FjaGUgaW52YWxpZGF0aW9uIHN1cHBvcnQKKyAqLworTGlzdAkgICAqY2VrX3NlbnQgPSBO SUw7CisKK3ZvaWQKK01heWJlU2VuZENvbHVtbkVuY3J5cHRpb25LZXlNZXNzYWdlKE9pZCBh dHRjZWspCit7CisJSGVhcFR1cGxlCXR1cGxlOworCVNjYW5LZXlEYXRhIHNrZXlbMV07CisJ U3lzU2NhbkRlc2Mgc2Q7CisJUmVsYXRpb24JcmVsOworCWJvb2wJCWZvdW5kID0gZmFsc2U7 CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCisJaWYgKGxpc3RfbWVtYmVyX29pZChj ZWtfc2VudCwgYXR0Y2VrKSkKKwkJcmV0dXJuOworCisJU2NhbktleUluaXQoJnNrZXlbMF0s CisJCQkJQW51bV9wZ19jb2xlbmNrZXlkYXRhX2NrZGNla2lkLAorCQkJCUJURXF1YWxTdHJh dGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKGF0dGNlaykpOwor CXJlbCA9IHRhYmxlX29wZW4oQ29sdW1uRW5jS2V5RGF0YVJlbGF0aW9uSWQsIEFjY2Vzc1No YXJlTG9jayk7CisJc2QgPSBzeXN0YWJsZV9iZWdpbnNjYW4ocmVsLCBDb2x1bW5FbmNLZXlD ZWtpZENta2lkSW5kZXhJZCwgdHJ1ZSwgTlVMTCwgMSwgc2tleSk7CisKKwl3aGlsZSAoKHR1 cGxlID0gc3lzdGFibGVfZ2V0bmV4dChzZCkpKQorCXsKKwkJRm9ybV9wZ19jb2xlbmNrZXlk YXRhIGNrZGZvcm0gPSAoRm9ybV9wZ19jb2xlbmNrZXlkYXRhKSBHRVRTVFJVQ1QodHVwbGUp OworCQlEYXR1bQkJZGF0dW07CisJCWJvb2wJCWlzbnVsbDsKKwkJYnl0ZWEJICAgKmJhOwor CQlTdHJpbmdJbmZvRGF0YSBidWY7CisKKwkJTWF5YmVTZW5kQ29sdW1uTWFzdGVyS2V5TWVz c2FnZShja2Rmb3JtLT5ja2RjbWtpZCk7CisKKwkJZGF0dW0gPSBoZWFwX2dldGF0dHIodHVw bGUsIEFudW1fcGdfY29sZW5ja2V5ZGF0YV9ja2RlbmN2YWwsIFJlbGF0aW9uR2V0RGVzY3Io cmVsKSwgJmlzbnVsbCk7CisJCUFzc2VydCghaXNudWxsKTsKKwkJYmEgPSBwZ19kZXRvYXN0 X2RhdHVtX3BhY2tlZCgoYnl0ZWEgKikgRGF0dW1HZXRQb2ludGVyKGRhdHVtKSk7CisKKwkJ cHFfYmVnaW5tZXNzYWdlKCZidWYsICdZJyk7IC8qIENvbHVtbkVuY3J5cHRpb25LZXkgKi8K KwkJcHFfc2VuZGludDMyKCZidWYsIGNrZGZvcm0tPmNrZGNla2lkKTsKKwkJcHFfc2VuZGlu dDMyKCZidWYsIGNrZGZvcm0tPmNrZGNta2lkKTsKKwkJcHFfc2VuZGludDE2KCZidWYsIGNr ZGZvcm0tPmNrZGNta2FsZyk7CisJCXBxX3NlbmRpbnQzMigmYnVmLCBWQVJTSVpFX0FOWV9F WEhEUihiYSkpOworCQlwcV9zZW5kYnl0ZXMoJmJ1ZiwgVkFSREFUQV9BTlkoYmEpLCBWQVJT SVpFX0FOWV9FWEhEUihiYSkpOworCQlwcV9lbmRtZXNzYWdlKCZidWYpOworCisJCWZvdW5k ID0gdHJ1ZTsKKwl9CisKKwlpZiAoIWZvdW5kKQorCQllbG9nKEVSUk9SLCAibG9va3VwIGZh aWxlZCBmb3IgY29sdW1uIGVuY3J5cHRpb24ga2V5IGRhdGEgJXUiLCBhdHRjZWspOworCisJ c3lzdGFibGVfZW5kc2NhbihzZCk7CisJdGFibGVfY2xvc2UocmVsLCBOb0xvY2spOworCisJ b2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BNZW1vcnlDb250ZXh0KTsK KwljZWtfc2VudCA9IGxhcHBlbmRfb2lkKGNla19zZW50LCBhdHRjZWspOworCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKK30KKwogLyoKICAqIFNlbmRSb3dEZXNjcmlw dGlvbk1lc3NhZ2UgLS0tIHNlbmQgYSBSb3dEZXNjcmlwdGlvbiBtZXNzYWdlIHRvIHRoZSBm cm9udGVuZAogICoKQEAgLTIwMCw2ICszMTcsOCBAQCBTZW5kUm93RGVzY3JpcHRpb25NZXNz YWdlKFN0cmluZ0luZm8gYnVmLCBUdXBsZURlc2MgdHlwZWluZm8sCiAJCU9pZAkJCXJlc29y aWd0Ymw7CiAJCUF0dHJOdW1iZXIJcmVzb3JpZ2NvbDsKIAkJaW50MTYJCWZvcm1hdDsKKwkJ T2lkCQkJYXR0Y2VraWQgPSBJbnZhbGlkT2lkOworCQlpbnQxNgkJYXR0ZW5jYWxnID0gMDsK IAogCQkvKgogCQkgKiBJZiBjb2x1bW4gaXMgYSBkb21haW4sIHNlbmQgdGhlIGJhc2UgdHlw ZSBhbmQgdHlwbW9kIGluc3RlYWQuCkBAIC0yMzEsNiArMzUwLDIyIEBAIFNlbmRSb3dEZXNj cmlwdGlvbk1lc3NhZ2UoU3RyaW5nSW5mbyBidWYsIFR1cGxlRGVzYyB0eXBlaW5mbywKIAkJ ZWxzZQogCQkJZm9ybWF0ID0gMDsKIAorCQlpZiAoZ2V0X3R5cHR5cGUoYXR0dHlwaWQpID09 IFRZUFRZUEVfRU5DUllQVEVEKQorCQl7CisJCQlIZWFwVHVwbGUJdHA7CisJCQlGb3JtX3Bn X2F0dHJpYnV0ZSBvcmlnX2F0dDsKKworCQkJdHAgPSBTZWFyY2hTeXNDYWNoZTIoQVRUTlVN LCBPYmplY3RJZEdldERhdHVtKHJlc29yaWd0YmwpLCBJbnQxNkdldERhdHVtKHJlc29yaWdj b2wpKTsKKwkJCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJCQkJZWxvZyhFUlJPUiwg ImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGF0dHJpYnV0ZSAlZCBvZiByZWxhdGlvbiAldSIs IHJlc29yaWdjb2wsIHJlc29yaWd0YmwpOworCQkJb3JpZ19hdHQgPSAoRm9ybV9wZ19hdHRy aWJ1dGUpIEdFVFNUUlVDVCh0cCk7CisJCQlNYXliZVNlbmRDb2x1bW5FbmNyeXB0aW9uS2V5 TWVzc2FnZShvcmlnX2F0dC0+YXR0Y2VrKTsKKwkJCWF0dHR5cGlkID0gb3JpZ19hdHQtPmF0 dHJlYWx0eXBpZDsKKwkJCWF0dGNla2lkID0gb3JpZ19hdHQtPmF0dGNlazsKKwkJCWF0dGVu Y2FsZyA9IG9yaWdfYXR0LT5hdHRlbmNhbGc7CisJCQlSZWxlYXNlU3lzQ2FjaGUodHApOwor CQl9CisKIAkJcHFfd3JpdGVzdHJpbmcoYnVmLCBOYW1lU3RyKGF0dC0+YXR0bmFtZSkpOwog CQlwcV93cml0ZWludDMyKGJ1ZiwgcmVzb3JpZ3RibCk7CiAJCXBxX3dyaXRlaW50MTYoYnVm LCByZXNvcmlnY29sKTsKQEAgLTIzOCw2ICszNzMsOCBAQCBTZW5kUm93RGVzY3JpcHRpb25N ZXNzYWdlKFN0cmluZ0luZm8gYnVmLCBUdXBsZURlc2MgdHlwZWluZm8sCiAJCXBxX3dyaXRl aW50MTYoYnVmLCBhdHQtPmF0dGxlbik7CiAJCXBxX3dyaXRlaW50MzIoYnVmLCBhdHR0eXBt b2QpOwogCQlwcV93cml0ZWludDE2KGJ1ZiwgZm9ybWF0KTsKKwkJcHFfd3JpdGVpbnQzMihi dWYsIGF0dGNla2lkKTsKKwkJcHFfd3JpdGVpbnQxNihidWYsIGF0dGVuY2FsZyk7CiAJfQog CiAJcHFfZW5kbWVzc2FnZV9yZXVzZShidWYpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2NvbW1vbi90dXBkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3R1 cGRlc2MuYwppbmRleCA5ZjQxYjFlODU0Li4zOGQ2MGIxNzRmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvY29tbW9uL3R1cGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvY29tbW9uL3R1cGRlc2MuYwpAQCAtNDU5LDYgKzQ1OSwxMiBAQCBlcXVhbFR1cGxlRGVz Y3MoVHVwbGVEZXNjIHR1cGRlc2MxLCBUdXBsZURlc2MgdHVwZGVzYzIpCiAJCQlyZXR1cm4g ZmFsc2U7CiAJCWlmIChhdHRyMS0+YXR0aXNsb2NhbCAhPSBhdHRyMi0+YXR0aXNsb2NhbCkK IAkJCXJldHVybiBmYWxzZTsKKwkJaWYgKGF0dHIxLT5hdHRjZWsgIT0gYXR0cjItPmF0dGNl aykKKwkJCXJldHVybiBmYWxzZTsKKwkJaWYgKGF0dHIxLT5hdHRyZWFsdHlwaWQgIT0gYXR0 cjItPmF0dHJlYWx0eXBpZCkKKwkJCXJldHVybiBmYWxzZTsKKwkJaWYgKGF0dHIxLT5hdHRl bmNhbGcgIT0gYXR0cjItPmF0dGVuY2FsZykKKwkJCXJldHVybiBmYWxzZTsKIAkJaWYgKGF0 dHIxLT5hdHRpbmhjb3VudCAhPSBhdHRyMi0+YXR0aW5oY291bnQpCiAJCQlyZXR1cm4gZmFs c2U7CiAJCWlmIChhdHRyMS0+YXR0Y29sbGF0aW9uICE9IGF0dHIyLT5hdHRjb2xsYXRpb24p CkBAIC02MjksNiArNjM1LDkgQEAgVHVwbGVEZXNjSW5pdEVudHJ5KFR1cGxlRGVzYyBkZXNj LAogCWF0dC0+YXR0Z2VuZXJhdGVkID0gJ1wwJzsKIAlhdHQtPmF0dGlzZHJvcHBlZCA9IGZh bHNlOwogCWF0dC0+YXR0aXNsb2NhbCA9IHRydWU7CisJYXR0LT5hdHRjZWsgPSAwOworCWF0 dC0+YXR0cmVhbHR5cGlkID0gMDsKKwlhdHQtPmF0dGVuY2FsZyA9IDA7CiAJYXR0LT5hdHRp bmhjb3VudCA9IDA7CiAJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBhcmUgbm90IHByZXNl bnQgaW4gdHVwbGVkZXNjcyAqLwogCkBAIC02OTAsNiArNjk5LDkgQEAgVHVwbGVEZXNjSW5p dEJ1aWx0aW5FbnRyeShUdXBsZURlc2MgZGVzYywKIAlhdHQtPmF0dGdlbmVyYXRlZCA9ICdc MCc7CiAJYXR0LT5hdHRpc2Ryb3BwZWQgPSBmYWxzZTsKIAlhdHQtPmF0dGlzbG9jYWwgPSB0 cnVlOworCWF0dC0+YXR0Y2VrID0gMDsKKwlhdHQtPmF0dHJlYWx0eXBpZCA9IDA7CisJYXR0 LT5hdHRlbmNhbGcgPSAwOwogCWF0dC0+YXR0aW5oY291bnQgPSAwOwogCS8qIHZhcmlhYmxl LWxlbmd0aCBmaWVsZHMgYXJlIG5vdCBwcmVzZW50IGluIHR1cGxlZGVzY3MgKi8KIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaHZhbGlkYXRlLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNodmFsaWRhdGUuYwppbmRleCAxMGJmMjZjZTdjLi5j ZWE5MWQ0YTg4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNodmFs aWRhdGUuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNodmFsaWRhdGUuYwpA QCAtMzMxLDcgKzMzMSw3IEBAIGNoZWNrX2hhc2hfZnVuY19zaWduYXR1cmUoT2lkIGZ1bmNp ZCwgaW50MTYgYW1wcm9jbnVtLCBPaWQgYXJndHlwZSkKIAkJCQkgYXJndHlwZSA9PSBCT09M T0lEKQogCQkJIC8qIG9rYXksIGFsbG93ZWQgdXNlIG9mIGhhc2hjaGFyKCkgKi8gOwogCQll bHNlIGlmICgoZnVuY2lkID09IEZfSEFTSFZBUkxFTkEgfHwgZnVuY2lkID09IEZfSEFTSFZB UkxFTkFFWFRFTkRFRCkgJiYKLQkJCQkgYXJndHlwZSA9PSBCWVRFQU9JRCkKKwkJCQkgKGFy Z3R5cGUgPT0gQllURUFPSUQgfHwgYXJndHlwZSA9PSBQR19FTkNSWVBURURfREVUT0lEKSkK IAkJCSAvKiBva2F5LCBhbGxvd2VkIHVzZSBvZiBoYXNodmFybGVuYSgpICovIDsKIAkJZWxz ZQogCQkJcmVzdWx0ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQppbmRleCA4OWEwMjIx ZWM5Li43ZTFhOTFiOTc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2Vm aWxlCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUKQEAgLTcyLDcgKzcyLDgg QEAgQ0FUQUxPR19IRUFERVJTIDo9IFwKIAlwZ19jb2xsYXRpb24uaCBwZ19wYXJhbWV0ZXJf YWNsLmggcGdfcGFydGl0aW9uZWRfdGFibGUuaCBcCiAJcGdfcmFuZ2UuaCBwZ190cmFuc2Zv cm0uaCBcCiAJcGdfc2VxdWVuY2UuaCBwZ19wdWJsaWNhdGlvbi5oIHBnX3B1YmxpY2F0aW9u X25hbWVzcGFjZS5oIFwKLQlwZ19wdWJsaWNhdGlvbl9yZWwuaCBwZ19zdWJzY3JpcHRpb24u aCBwZ19zdWJzY3JpcHRpb25fcmVsLmgKKwlwZ19wdWJsaWNhdGlvbl9yZWwuaCBwZ19zdWJz Y3JpcHRpb24uaCBwZ19zdWJzY3JpcHRpb25fcmVsLmggXAorCXBnX2NvbG1hc3RlcmtleS5o IHBnX2NvbGVuY2tleS5oIHBnX2NvbGVuY2tleWRhdGEuaAogCiBHRU5FUkFURURfSEVBREVS UyA6PSAkKENBVEFMT0dfSEVBREVSUzolLmg9JV9kLmgpIHNjaGVtYXBnLmggc3lzdGVtX2Zr X2luZm8uaAogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCmluZGV4IDE4MDMxOTRkYjkuLjBlYTU4MjM5YjQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCisrKyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvaGVhcC5jCkBAIC03NDYsNiArNzQ2LDkgQEAgSW5zZXJ0UGdBdHRyaWJ1 dGVUdXBsZXMoUmVsYXRpb24gcGdfYXR0cmlidXRlX3JlbCwKIAkJc2xvdFtzbG90Q291bnRd LT50dHNfdmFsdWVzW0FudW1fcGdfYXR0cmlidXRlX2F0dGdlbmVyYXRlZCAtIDFdID0gQ2hh ckdldERhdHVtKGF0dHJzLT5hdHRnZW5lcmF0ZWQpOwogCQlzbG90W3Nsb3RDb3VudF0tPnR0 c192YWx1ZXNbQW51bV9wZ19hdHRyaWJ1dGVfYXR0aXNkcm9wcGVkIC0gMV0gPSBCb29sR2V0 RGF0dW0oYXR0cnMtPmF0dGlzZHJvcHBlZCk7CiAJCXNsb3Rbc2xvdENvdW50XS0+dHRzX3Zh bHVlc1tBbnVtX3BnX2F0dHJpYnV0ZV9hdHRpc2xvY2FsIC0gMV0gPSBCb29sR2V0RGF0dW0o YXR0cnMtPmF0dGlzbG9jYWwpOworCQlzbG90W3Nsb3RDb3VudF0tPnR0c192YWx1ZXNbQW51 bV9wZ19hdHRyaWJ1dGVfYXR0Y2VrIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKGF0dHJzLT5h dHRjZWspOworCQlzbG90W3Nsb3RDb3VudF0tPnR0c192YWx1ZXNbQW51bV9wZ19hdHRyaWJ1 dGVfYXR0cmVhbHR5cGlkIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKGF0dHJzLT5hdHRyZWFs dHlwaWQpOworCQlzbG90W3Nsb3RDb3VudF0tPnR0c192YWx1ZXNbQW51bV9wZ19hdHRyaWJ1 dGVfYXR0ZW5jYWxnIC0gMV0gPSBJbnQxNkdldERhdHVtKGF0dHJzLT5hdHRlbmNhbGcpOwog CQlzbG90W3Nsb3RDb3VudF0tPnR0c192YWx1ZXNbQW51bV9wZ19hdHRyaWJ1dGVfYXR0aW5o Y291bnQgLSAxXSA9IEludDMyR2V0RGF0dW0oYXR0cnMtPmF0dGluaGNvdW50KTsKIAkJc2xv dFtzbG90Q291bnRdLT50dHNfdmFsdWVzW0FudW1fcGdfYXR0cmlidXRlX2F0dGNvbGxhdGlv biAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShhdHRycy0+YXR0Y29sbGF0aW9uKTsKIAkJaWYg KGF0dG9wdGlvbnMgJiYgYXR0b3B0aW9uc1tuYXR0c10gIT0gKERhdHVtKSAwKQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvcHJlcGFyZS5jCmluZGV4IDgwNzM4NTQ3ZWQuLmExN2MyNzMxYmUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9wcmVwYXJlLmMKQEAgLTUwLDcgKzUwLDYgQEAgc3RhdGljIHZvaWQgSW5pdFF1 ZXJ5SGFzaFRhYmxlKHZvaWQpOwogc3RhdGljIFBhcmFtTGlzdEluZm8gRXZhbHVhdGVQYXJh bXMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJUHJlcGFyZWRTdGF0ZW1lbnQgKnBz dG10LCBMaXN0ICpwYXJhbXMsCiAJCQkJCQkJCQlFU3RhdGUgKmVzdGF0ZSk7Ci1zdGF0aWMg RGF0dW0gYnVpbGRfcmVndHlwZV9hcnJheShPaWQgKnBhcmFtX3R5cGVzLCBpbnQgbnVtX3Bh cmFtcyk7CiAKIC8qCiAgKiBJbXBsZW1lbnRzIHRoZSAnUFJFUEFSRScgdXRpbGl0eSBzdGF0 ZW1lbnQuCkBAIC02Miw2ICs2MSw4IEBAIFByZXBhcmVRdWVyeShQYXJzZVN0YXRlICpwc3Rh dGUsIFByZXBhcmVTdG10ICpzdG10LAogCVJhd1N0bXQgICAgKnJhd3N0bXQ7CiAJQ2FjaGVk UGxhblNvdXJjZSAqcGxhbnNvdXJjZTsKIAlPaWQJCSAgICphcmd0eXBlcyA9IE5VTEw7CisJ T2lkCQkgICAqYXJnb3JpZ3RibHMgPSBOVUxMOworCUF0dHJOdW1iZXIgKmFyZ29yaWdjb2xz ID0gTlVMTDsKIAlpbnQJCQluYXJnczsKIAlMaXN0CSAgICpxdWVyeV9saXN0OwogCkBAIC0x MDgsNiArMTA5LDkgQEAgUHJlcGFyZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUHJlcGFy ZVN0bXQgKnN0bXQsCiAKIAkJCWFyZ3R5cGVzW2krK10gPSB0b2lkOwogCQl9CisKKwkJYXJn b3JpZ3RibHMgPSAoT2lkICopIHBhbGxvYzAobmFyZ3MgKiBzaXplb2YoT2lkKSk7CisJCWFy Z29yaWdjb2xzID0gKEF0dHJOdW1iZXIgKikgcGFsbG9jMChuYXJncyAqIHNpemVvZihBdHRy TnVtYmVyKSk7CiAJfQogCiAJLyoKQEAgLTExNyw3ICsxMjEsOSBAQCBQcmVwYXJlUXVlcnko UGFyc2VTdGF0ZSAqcHN0YXRlLCBQcmVwYXJlU3RtdCAqc3RtdCwKIAkgKiBSZXdyaXRlIHRo ZSBxdWVyeS4gVGhlIHJlc3VsdCBjb3VsZCBiZSAwLCAxLCBvciBtYW55IHF1ZXJpZXMuCiAJ ICovCiAJcXVlcnlfbGlzdCA9IHBnX2FuYWx5emVfYW5kX3Jld3JpdGVfdmFycGFyYW1zKHJh d3N0bXQsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAotCQkJCQkJCQkJCQkJICAmYXJndHlwZXMs ICZuYXJncywgTlVMTCk7CisJCQkJCQkJCQkJCQkgICZhcmd0eXBlcywgJm5hcmdzLAorCQkJ CQkJCQkJCQkJICAmYXJnb3JpZ3RibHMsICZhcmdvcmlnY29scywKKwkJCQkJCQkJCQkJCSAg TlVMTCk7CiAKIAkvKiBGaW5pc2ggZmlsbGluZyBpbiB0aGUgQ2FjaGVkUGxhblNvdXJjZSAq LwogCUNvbXBsZXRlQ2FjaGVkUGxhbihwbGFuc291cmNlLApAQCAtMTI1LDYgKzEzMSw4IEBA IFByZXBhcmVRdWVyeShQYXJzZVN0YXRlICpwc3RhdGUsIFByZXBhcmVTdG10ICpzdG10LAog CQkJCQkgICBOVUxMLAogCQkJCQkgICBhcmd0eXBlcywKIAkJCQkJICAgbmFyZ3MsCisJCQkJ CSAgIGFyZ29yaWd0YmxzLAorCQkJCQkgICBhcmdvcmlnY29scywKIAkJCQkJICAgTlVMTCwK IAkJCQkJICAgTlVMTCwKIAkJCQkJICAgQ1VSU09SX09QVF9QQVJBTExFTF9PSywJLyogYWxs b3cgcGFyYWxsZWwgbW9kZSAqLwpAQCAtNjgzLDIwICs2OTEsMzYgQEAgcGdfcHJlcGFyZWRf c3RhdGVtZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWhhc2hfc2VxX2luaXQoJmhhc2hfc2Vx LCBwcmVwYXJlZF9xdWVyaWVzKTsKIAkJd2hpbGUgKChwcmVwX3N0bXQgPSBoYXNoX3NlcV9z ZWFyY2goJmhhc2hfc2VxKSkgIT0gTlVMTCkKIAkJewotCQkJRGF0dW0JCXZhbHVlc1s3XTsK LQkJCWJvb2wJCW51bGxzWzddOworCQkJRGF0dW0JCXZhbHVlc1s5XTsKKwkJCWJvb2wJCW51 bGxzWzldOworCQkJaW50CQkJbnVtX3BhcmFtcyA9IHByZXBfc3RtdC0+cGxhbnNvdXJjZS0+ bnVtX3BhcmFtczsKKwkJCURhdHVtCSAgICp0bXBfYXJ5OwogCiAJCQlNZW1TZXQobnVsbHMs IDAsIHNpemVvZihudWxscykpOwogCiAJCQl2YWx1ZXNbMF0gPSBDU3RyaW5nR2V0VGV4dERh dHVtKHByZXBfc3RtdC0+c3RtdF9uYW1lKTsKIAkJCXZhbHVlc1sxXSA9IENTdHJpbmdHZXRU ZXh0RGF0dW0ocHJlcF9zdG10LT5wbGFuc291cmNlLT5xdWVyeV9zdHJpbmcpOwogCQkJdmFs dWVzWzJdID0gVGltZXN0YW1wVHpHZXREYXR1bShwcmVwX3N0bXQtPnByZXBhcmVfdGltZSk7 Ci0JCQl2YWx1ZXNbM10gPSBidWlsZF9yZWd0eXBlX2FycmF5KHByZXBfc3RtdC0+cGxhbnNv dXJjZS0+cGFyYW1fdHlwZXMsCi0JCQkJCQkJCQkJCXByZXBfc3RtdC0+cGxhbnNvdXJjZS0+ bnVtX3BhcmFtcyk7CisKKwkJCXRtcF9hcnkgPSAoRGF0dW0gKikgcGFsbG9jKG51bV9wYXJh bXMgKiBzaXplb2YoRGF0dW0pKTsKKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3BhcmFt czsgaSsrKQorCQkJCXRtcF9hcnlbaV0gPSBPYmplY3RJZEdldERhdHVtKHByZXBfc3RtdC0+ cGxhbnNvdXJjZS0+cGFyYW1fdHlwZXNbaV0pOworCQkJdmFsdWVzWzNdID0gUG9pbnRlckdl dERhdHVtKGNvbnN0cnVjdF9hcnJheSh0bXBfYXJ5LCBudW1fcGFyYW1zLCBSRUdUWVBFT0lE LCA0LCB0cnVlLCBUWVBBTElHTl9JTlQpKTsKKwogCQkJdmFsdWVzWzRdID0gQm9vbEdldERh dHVtKHByZXBfc3RtdC0+ZnJvbV9zcWwpOwogCQkJdmFsdWVzWzVdID0gSW50NjRHZXREYXR1 bUZhc3QocHJlcF9zdG10LT5wbGFuc291cmNlLT5udW1fZ2VuZXJpY19wbGFucyk7CiAJCQl2 YWx1ZXNbNl0gPSBJbnQ2NEdldERhdHVtRmFzdChwcmVwX3N0bXQtPnBsYW5zb3VyY2UtPm51 bV9jdXN0b21fcGxhbnMpOwogCisJCQl0bXBfYXJ5ID0gKERhdHVtICopIHBhbGxvYyhudW1f cGFyYW1zICogc2l6ZW9mKERhdHVtKSk7CisJCQlmb3IgKGludCBpID0gMDsgaSA8IG51bV9w YXJhbXM7IGkrKykKKwkJCQl0bXBfYXJ5W2ldID0gT2JqZWN0SWRHZXREYXR1bShwcmVwX3N0 bXQtPnBsYW5zb3VyY2UtPnBhcmFtX29yaWd0YmxzW2ldKTsKKwkJCXZhbHVlc1s3XSA9IFBv aW50ZXJHZXREYXR1bShjb25zdHJ1Y3RfYXJyYXkodG1wX2FyeSwgbnVtX3BhcmFtcywgUkVH Q0xBU1NPSUQsIDQsIHRydWUsIFRZUEFMSUdOX0lOVCkpOworCisJCQl0bXBfYXJ5ID0gKERh dHVtICopIHBhbGxvYyhudW1fcGFyYW1zICogc2l6ZW9mKERhdHVtKSk7CisJCQlmb3IgKGlu dCBpID0gMDsgaSA8IG51bV9wYXJhbXM7IGkrKykKKwkJCQl0bXBfYXJ5W2ldID0gSW50MTZH ZXREYXR1bShwcmVwX3N0bXQtPnBsYW5zb3VyY2UtPnBhcmFtX29yaWdjb2xzW2ldKTsKKwkJ CXZhbHVlc1s4XSA9IFBvaW50ZXJHZXREYXR1bShjb25zdHJ1Y3RfYXJyYXkodG1wX2FyeSwg bnVtX3BhcmFtcywgSU5UMk9JRCwgMiwgdHJ1ZSwgVFlQQUxJR05fU0hPUlQpKTsKKwogCQkJ dHVwbGVzdG9yZV9wdXR2YWx1ZXMocnNpbmZvLT5zZXRSZXN1bHQsIHJzaW5mby0+c2V0RGVz YywKIAkJCQkJCQkJIHZhbHVlcywgbnVsbHMpOwogCQl9CkBAIC03MDQsMjYgKzcyOCwzIEBA IHBnX3ByZXBhcmVkX3N0YXRlbWVudChQR19GVU5DVElPTl9BUkdTKQogCiAJcmV0dXJuIChE YXR1bSkgMDsKIH0KLQotLyoKLSAqIFRoaXMgdXRpbGl0eSBmdW5jdGlvbiB0YWtlcyBhIEMg YXJyYXkgb2YgT2lkcywgYW5kIHJldHVybnMgYSBEYXR1bQotICogcG9pbnRpbmcgdG8gYSBv bmUtZGltZW5zaW9uYWwgUG9zdGdyZXMgYXJyYXkgb2YgcmVndHlwZXMuIEFuIGVtcHR5Ci0g KiBhcnJheSBpcyByZXR1cm5lZCBhcyBhIHplcm8tZWxlbWVudCBhcnJheSwgbm90IE5VTEwu Ci0gKi8KLXN0YXRpYyBEYXR1bQotYnVpbGRfcmVndHlwZV9hcnJheShPaWQgKnBhcmFtX3R5 cGVzLCBpbnQgbnVtX3BhcmFtcykKLXsKLQlEYXR1bQkgICAqdG1wX2FyeTsKLQlBcnJheVR5 cGUgICpyZXN1bHQ7Ci0JaW50CQkJaTsKLQotCXRtcF9hcnkgPSAoRGF0dW0gKikgcGFsbG9j KG51bV9wYXJhbXMgKiBzaXplb2YoRGF0dW0pKTsKLQotCWZvciAoaSA9IDA7IGkgPCBudW1f cGFyYW1zOyBpKyspCi0JCXRtcF9hcnlbaV0gPSBPYmplY3RJZEdldERhdHVtKHBhcmFtX3R5 cGVzW2ldKTsKLQotCS8qIFhYWDogdGhpcyBoYXJkY29kZXMgYXNzdW1wdGlvbnMgYWJvdXQg dGhlIHJlZ3R5cGUgdHlwZSAqLwotCXJlc3VsdCA9IGNvbnN0cnVjdF9hcnJheSh0bXBfYXJ5 LCBudW1fcGFyYW1zLCBSRUdUWVBFT0lELAotCQkJCQkJCSA0LCB0cnVlLCBUWVBBTElHTl9J TlQpOwotCXJldHVybiBQb2ludGVyR2V0RGF0dW0ocmVzdWx0KTsKLX0KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMKaW5kZXggMmRlMGViYWNlYy4uYTBhOWM2YjU5YSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJjYXRh bG9nL3BhcnRpdGlvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfYW0uaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX2F0dHJkZWYuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGVuY2tl eS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29sbGF0aW9uLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ19jb25zdHJhaW50LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19kZXBlbmQuaCIK QEAgLTkzMSw2ICs5MzIsNzYgQEAgRGVmaW5lUmVsYXRpb24oQ3JlYXRlU3RtdCAqc3RtdCwg Y2hhciByZWxraW5kLCBPaWQgb3duZXJJZCwKIAkJaWYgKGNvbERlZi0+Y29tcHJlc3Npb24p CiAJCQlhdHRyLT5hdHRjb21wcmVzc2lvbiA9IEdldEF0dHJpYnV0ZUNvbXByZXNzaW9uKGF0 dHItPmF0dHR5cGlkLAogCQkJCQkJCQkJCQkJCQkgICBjb2xEZWYtPmNvbXByZXNzaW9uKTsK KworCQlpZiAoY29sRGVmLT5lbmNyeXB0aW9uKQorCQl7CisJCQlMaXN0Q2VsbCAgICpsYzsK KwkJCWNoYXIJICAgKmNlayA9IE5VTEw7CisJCQlPaWQJCQljZWtvaWQ7CisJCQlib29sCQll bmNkZXQgPSBmYWxzZTsKKwkJCWludAkJCWFsZyA9IFBHX0NFS19BRUFEX0FFU18xMjhfQ0JD X0hNQUNfU0hBXzI1NjsKKworCQkJZm9yZWFjaChsYywgY29sRGVmLT5lbmNyeXB0aW9uKQor CQkJeworCQkJCURlZkVsZW0gICAgKmVsID0gbGZpcnN0X25vZGUoRGVmRWxlbSwgbGMpOwor CisJCQkJaWYgKHN0cmNtcChlbC0+ZGVmbmFtZSwgImNvbHVtbl9lbmNyeXB0aW9uX2tleSIp ID09IDApCisJCQkJCWNlayA9IHN0clZhbChsaW5pdGlhbChjYXN0Tm9kZShUeXBlTmFtZSwg ZWwtPmFyZyktPm5hbWVzKSk7CisJCQkJZWxzZSBpZiAoc3RyY21wKGVsLT5kZWZuYW1lLCAi ZW5jcnlwdGlvbl90eXBlIikgPT0gMCkKKwkJCQl7CisJCQkJCWNoYXIJICAgKnZhbCA9IHN0 clZhbChsaW5pdGlhbChjYXN0Tm9kZShUeXBlTmFtZSwgZWwtPmFyZyktPm5hbWVzKSk7CisK KwkJCQkJaWYgKHN0cmNtcCh2YWwsICJkZXRlcm1pbmlzdGljIikgPT0gMCkKKwkJCQkJCWVu Y2RldCA9IHRydWU7CisJCQkJCWVsc2UgaWYgKHN0cmNtcCh2YWwsICJyYW5kb21pemVkIikg PT0gMCkKKwkJCQkJCWVuY2RldCA9IGZhbHNlOworCQkJCQllbHNlCisJCQkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFM VUUpLAorCQkJCQkJCQllcnJtc2coInVucmVjb2duaXplZCBlbmNyeXB0aW9uIHR5cGU6ICVz IiwgdmFsKSk7CisJCQkJfQorCQkJCWVsc2UgaWYgKHN0cmNtcChlbC0+ZGVmbmFtZSwgImFs Z29yaXRobSIpID09IDApCisJCQkJeworCQkJCQljaGFyCSAgICp2YWwgPSBzdHJWYWwoZWwt PmFyZyk7CisKKwkJCQkJaWYgKHN0cmNtcCh2YWwsICJBRUFEX0FFU18xMjhfQ0JDX0hNQUNf U0hBXzI1NiIpID09IDApCisJCQkJCQlhbGcgPSBQR19DRUtfQUVBRF9BRVNfMTI4X0NCQ19I TUFDX1NIQV8yNTY7CisJCQkJCWVsc2UgaWYgKHN0cmNtcCh2YWwsICJBRUFEX0FFU18xOTJf Q0JDX0hNQUNfU0hBXzM4NCIpID09IDApCisJCQkJCQlhbGcgPSBQR19DRUtfQUVBRF9BRVNf MTkyX0NCQ19ITUFDX1NIQV8zODQ7CisJCQkJCWVsc2UgaWYgKHN0cmNtcCh2YWwsICJBRUFE X0FFU18yNTZfQ0JDX0hNQUNfU0hBXzM4NCIpID09IDApCisJCQkJCQlhbGcgPSBQR19DRUtf QUVBRF9BRVNfMjU2X0NCQ19ITUFDX1NIQV8zODQ7CisJCQkJCWVsc2UgaWYgKHN0cmNtcCh2 YWwsICJBRUFEX0FFU18yNTZfQ0JDX0hNQUNfU0hBXzUxMiIpID09IDApCisJCQkJCQlhbGcg PSBQR19DRUtfQUVBRF9BRVNfMjU2X0NCQ19ITUFDX1NIQV81MTI7CisJCQkJCWVsc2UKKwkJ CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BB UkFNRVRFUl9WQUxVRSksCisJCQkJCQkJCWVycm1zZygidW5yZWNvZ25pemVkIGVuY3J5cHRp b24gYWxnb3JpdGhtOiAlcyIsIHZhbCkpOworCQkJCX0KKwkJCQllbHNlCisJCQkJCWVyZXBv cnQoRVJST1IsCisJCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZB TFVFKSwKKwkJCQkJCQllcnJtc2coInVucmVjb2duaXplZCBjb2x1bW4gZW5jcnlwdGlvbiBw YXJhbWV0ZXI6ICVzIiwgZWwtPmRlZm5hbWUpKTsKKwkJCX0KKworCQkJaWYgKCFjZWspCisJ CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0NPTFVN Tl9ERUZJTklUSU9OKSwKKwkJCQkJCWVycm1zZygiY29sdW1uIGVuY3J5cHRpb24ga2V5IG11 c3QgYmUgc3BlY2lmaWVkIikpOworCisJCQljZWtvaWQgPSBHZXRTeXNDYWNoZU9pZDEoQ0VL TkFNRSwgQW51bV9wZ19jb2xlbmNrZXlfb2lkLCBQb2ludGVyR2V0RGF0dW0oY2VrKSk7CisJ CQlpZiAoIWNla29pZCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJD T0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCQkJZXJybXNnKCJjb2x1bW4gZW5jcnlwdGlv biBrZXkgXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwgY2VrKSk7CisKKwkJCWF0dHItPmF0dGNl ayA9IGNla29pZDsKKwkJCWF0dHItPmF0dHJlYWx0eXBpZCA9IGF0dHItPmF0dHR5cGlkOwor CQkJaWYgKGVuY2RldCkKKwkJCQlhdHRyLT5hdHR0eXBpZCA9IFBHX0VOQ1JZUFRFRF9ERVRP SUQ7CisJCQllbHNlCisJCQkJYXR0ci0+YXR0dHlwaWQgPSBQR19FTkNSWVBURURfUk5ET0lE OworCQkJYXR0ci0+YXR0ZW5jYWxnID0gYWxnOworCQl9CiAJfQogCiAJLyoKQEAgLTY4Mjks NiArNjkwMCw5IEBAIEFURXhlY0FkZENvbHVtbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFi bGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAlhdHRyaWJ1dGUuYXR0Z2VuZXJhdGVkID0g Y29sRGVmLT5nZW5lcmF0ZWQ7CiAJYXR0cmlidXRlLmF0dGlzZHJvcHBlZCA9IGZhbHNlOwog CWF0dHJpYnV0ZS5hdHRpc2xvY2FsID0gY29sRGVmLT5pc19sb2NhbDsKKwlhdHRyaWJ1dGUu YXR0Y2VrID0gMDsgLy8gVE9ETworCWF0dHJpYnV0ZS5hdHRyZWFsdHlwaWQgPSAwOyAvLyBU T0RPCisJYXR0cmlidXRlLmF0dGVuY2FsZyA9IDA7IC8vIFRPRE8KIAlhdHRyaWJ1dGUuYXR0 aW5oY291bnQgPSBjb2xEZWYtPmluaGNvdW50OwogCWF0dHJpYnV0ZS5hdHRjb2xsYXRpb24g PSBjb2xsT2lkOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCmluZGV4IDI5YmMyNjY2OWIuLmNkZTViMGUw ODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL3NwaS5jCkBAIC0yMjc5LDYgKzIyNzksOCBAQCBfU1BJX3ByZXBh cmVfcGxhbihjb25zdCBjaGFyICpzcmMsIFNQSVBsYW5QdHIgcGxhbikKIAkJCQkJCSAgIE5V TEwsCiAJCQkJCQkgICBwbGFuLT5hcmd0eXBlcywKIAkJCQkJCSAgIHBsYW4tPm5hcmdzLAor CQkJCQkJICAgTlVMTCwKKwkJCQkJCSAgIE5VTEwsCiAJCQkJCQkgICBwbGFuLT5wYXJzZXJT ZXR1cCwKIAkJCQkJCSAgIHBsYW4tPnBhcnNlclNldHVwQXJnLAogCQkJCQkJICAgcGxhbi0+ Y3Vyc29yX29wdGlvbnMsCkBAIC0yNTE2LDYgKzI1MTgsOCBAQCBfU1BJX2V4ZWN1dGVfcGxh bihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAog CQkJCQkJCSAgIE5VTEwsCiAJCQkJCQkJICAgcGxhbi0+YXJndHlwZXMsCiAJCQkJCQkJICAg cGxhbi0+bmFyZ3MsCisJCQkJCQkJICAgTlVMTCwKKwkJCQkJCQkgICBOVUxMLAogCQkJCQkJ CSAgIHBsYW4tPnBhcnNlclNldHVwLAogCQkJCQkJCSAgIHBsYW4tPnBhcnNlclNldHVwQXJn LAogCQkJCQkJCSAgIHBsYW4tPmN1cnNvcl9vcHRpb25zLApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3Mu YwppbmRleCA1MWQ2MzBmYTg5Li5jOTAxY2ZiYjg2IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9ub2Rlcy9jb3B5ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3Mu YwpAQCAtMzU1NSw2ICszNTU1LDcgQEAgX2NvcHlDb2x1bW5EZWYoY29uc3QgQ29sdW1uRGVm ICpmcm9tKQogCUNPUFlfU1RSSU5HX0ZJRUxEKGNvbG5hbWUpOwogCUNPUFlfTk9ERV9GSUVM RCh0eXBlTmFtZSk7CiAJQ09QWV9TVFJJTkdfRklFTEQoY29tcHJlc3Npb24pOworCUNPUFlf Tk9ERV9GSUVMRChlbmNyeXB0aW9uKTsKIAlDT1BZX1NDQUxBUl9GSUVMRChpbmhjb3VudCk7 CiAJQ09QWV9TQ0FMQVJfRklFTEQoaXNfbG9jYWwpOwogCUNPUFlfU0NBTEFSX0ZJRUxEKGlz X25vdF9udWxsKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3Mu YyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwppbmRleCBlNzQ3ZTE2NjdkLi42 OWEzYWRlZTdjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMK KysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCkBAIC0zMDQ1LDYgKzMwNDUs NyBAQCBfZXF1YWxDb2x1bW5EZWYoY29uc3QgQ29sdW1uRGVmICphLCBjb25zdCBDb2x1bW5E ZWYgKmIpCiAJQ09NUEFSRV9TVFJJTkdfRklFTEQoY29sbmFtZSk7CiAJQ09NUEFSRV9OT0RF X0ZJRUxEKHR5cGVOYW1lKTsKIAlDT01QQVJFX1NUUklOR19GSUVMRChjb21wcmVzc2lvbik7 CisJQ09NUEFSRV9OT0RFX0ZJRUxEKGVuY3J5cHRpb24pOwogCUNPTVBBUkVfU0NBTEFSX0ZJ RUxEKGluaGNvdW50KTsKIAlDT01QQVJFX1NDQUxBUl9GSUVMRChpc19sb2NhbCk7CiAJQ09N UEFSRV9TQ0FMQVJfRklFTEQoaXNfbm90X251bGwpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvbm9kZXMvbm9kZUZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpp bmRleCA0Y2IxNzQ0ZGE2Li44ZmJlMGY1ZjhmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9u b2Rlcy9ub2RlRnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpA QCAtNDI4OCw2ICs0Mjg4LDggQEAgcmF3X2V4cHJlc3Npb25fdHJlZV93YWxrZXIoTm9kZSAq bm9kZSwKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQkJaWYgKHdhbGtlcihjb2xkZWYtPmNvbXBy ZXNzaW9uLCBjb250ZXh0KSkKIAkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKHdhbGtlcihj b2xkZWYtPmVuY3J5cHRpb24sIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCQlp ZiAod2Fsa2VyKGNvbGRlZi0+cmF3X2RlZmF1bHQsIGNvbnRleHQpKQogCQkJCQlyZXR1cm4g dHJ1ZTsKIAkJCQlpZiAod2Fsa2VyKGNvbGRlZi0+Y29sbENsYXVzZSwgY29udGV4dCkpCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQv bm9kZXMvb3V0ZnVuY3MuYwppbmRleCBjZTEyOTE1NTkyLi4yYmZjMjU5ZTRlIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25v ZGVzL291dGZ1bmNzLmMKQEAgLTMxMTIsNiArMzExMiw3IEBAIF9vdXRDb2x1bW5EZWYoU3Ry aW5nSW5mbyBzdHIsIGNvbnN0IENvbHVtbkRlZiAqbm9kZSkKIAlXUklURV9TVFJJTkdfRklF TEQoY29sbmFtZSk7CiAJV1JJVEVfTk9ERV9GSUVMRCh0eXBlTmFtZSk7CiAJV1JJVEVfU1RS SU5HX0ZJRUxEKGNvbXByZXNzaW9uKTsKKwlXUklURV9OT0RFX0ZJRUxEKGVuY3J5cHRpb24p OwogCVdSSVRFX0lOVF9GSUVMRChpbmhjb3VudCk7CiAJV1JJVEVfQk9PTF9GSUVMRChpc19s b2NhbCk7CiAJV1JJVEVfQk9PTF9GSUVMRChpc19ub3RfbnVsbCk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5 emUuYwppbmRleCAxYmNiODc1NTA3Li5lZGM5ZmI0YTI4IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wYXJzZXIvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXpl LmMKQEAgLTE0NSw2ICsxNDUsNyBAQCBwYXJzZV9hbmFseXplX2ZpeGVkcGFyYW1zKFJhd1N0 bXQgKnBhcnNlVHJlZSwgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIFF1ZXJ5ICoKIHBhcnNl X2FuYWx5emVfdmFycGFyYW1zKFJhd1N0bXQgKnBhcnNlVHJlZSwgY29uc3QgY2hhciAqc291 cmNlVGV4dCwKIAkJCQkJCU9pZCAqKnBhcmFtVHlwZXMsIGludCAqbnVtUGFyYW1zLAorCQkJ CQkJT2lkICoqcGFyYW1PcmlnVGJscywgQXR0ck51bWJlciAqKnBhcmFtT3JpZ0NvbHMsCiAJ CQkJCQlRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudikKIHsKIAlQYXJzZVN0YXRlICpwc3Rh dGUgPSBtYWtlX3BhcnNlc3RhdGUoTlVMTCk7CkBAIC0xNTUsNyArMTU2LDcgQEAgcGFyc2Vf YW5hbHl6ZV92YXJwYXJhbXMoUmF3U3RtdCAqcGFyc2VUcmVlLCBjb25zdCBjaGFyICpzb3Vy Y2VUZXh0LAogCiAJcHN0YXRlLT5wX3NvdXJjZXRleHQgPSBzb3VyY2VUZXh0OwogCi0Jc2V0 dXBfcGFyc2VfdmFyaWFibGVfcGFyYW1ldGVycyhwc3RhdGUsIHBhcmFtVHlwZXMsIG51bVBh cmFtcyk7CisJc2V0dXBfcGFyc2VfdmFyaWFibGVfcGFyYW1ldGVycyhwc3RhdGUsIHBhcmFt VHlwZXMsIG51bVBhcmFtcywgcGFyYW1PcmlnVGJscywgcGFyYW1PcmlnQ29scyk7CiAKIAlw c3RhdGUtPnBfcXVlcnlFbnYgPSBxdWVyeUVudjsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggOTY5 YzljMTU4Zi4uYTkxOGVhZjQyNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC01OTYsNiArNTk2LDcg QEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUs IExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxub2RlPglUYWJsZUNvbnN0 cmFpbnQgVGFibGVMaWtlQ2xhdXNlCiAldHlwZSA8aXZhbD4JVGFibGVMaWtlT3B0aW9uTGlz dCBUYWJsZUxpa2VPcHRpb24KICV0eXBlIDxzdHI+CQljb2x1bW5fY29tcHJlc3Npb24gb3B0 X2NvbHVtbl9jb21wcmVzc2lvbgorJXR5cGUgPGxpc3Q+CW9wdF9jb2x1bW5fZW5jcnlwdGlv bgogJXR5cGUgPGxpc3Q+CUNvbFF1YWxMaXN0CiAldHlwZSA8bm9kZT4JQ29sQ29uc3RyYWlu dCBDb2xDb25zdHJhaW50RWxlbSBDb25zdHJhaW50QXR0cgogJXR5cGUgPGl2YWw+CWtleV9t YXRjaApAQCAtMzc3OCwxMyArMzc3OSwxNCBAQCBUeXBlZFRhYmxlRWxlbWVudDoKIAkJCXwg VGFibGVDb25zdHJhaW50CQkJCQl7ICQkID0gJDE7IH0KIAkJOwogCi1jb2x1bW5EZWY6CUNv bElkIFR5cGVuYW1lIG9wdF9jb2x1bW5fY29tcHJlc3Npb24gY3JlYXRlX2dlbmVyaWNfb3B0 aW9ucyBDb2xRdWFsTGlzdAorY29sdW1uRGVmOglDb2xJZCBUeXBlbmFtZSBvcHRfY29sdW1u X2NvbXByZXNzaW9uIG9wdF9jb2x1bW5fZW5jcnlwdGlvbiBjcmVhdGVfZ2VuZXJpY19vcHRp b25zIENvbFF1YWxMaXN0CiAJCQkJewogCQkJCQlDb2x1bW5EZWYgKm4gPSBtYWtlTm9kZShD b2x1bW5EZWYpOwogCiAJCQkJCW4tPmNvbG5hbWUgPSAkMTsKIAkJCQkJbi0+dHlwZU5hbWUg PSAkMjsKIAkJCQkJbi0+Y29tcHJlc3Npb24gPSAkMzsKKwkJCQkJbi0+ZW5jcnlwdGlvbiA9 ICQ0OwogCQkJCQluLT5pbmhjb3VudCA9IDA7CiAJCQkJCW4tPmlzX2xvY2FsID0gdHJ1ZTsK IAkJCQkJbi0+aXNfbm90X251bGwgPSBmYWxzZTsKQEAgLTM3OTMsOCArMzc5NSw4IEBAIGNv bHVtbkRlZjoJQ29sSWQgVHlwZW5hbWUgb3B0X2NvbHVtbl9jb21wcmVzc2lvbiBjcmVhdGVf Z2VuZXJpY19vcHRpb25zIENvbFF1YWxMCiAJCQkJCW4tPnJhd19kZWZhdWx0ID0gTlVMTDsK IAkJCQkJbi0+Y29va2VkX2RlZmF1bHQgPSBOVUxMOwogCQkJCQluLT5jb2xsT2lkID0gSW52 YWxpZE9pZDsKLQkJCQkJbi0+ZmR3b3B0aW9ucyA9ICQ0OwotCQkJCQlTcGxpdENvbFF1YWxM aXN0KCQ1LCAmbi0+Y29uc3RyYWludHMsICZuLT5jb2xsQ2xhdXNlLAorCQkJCQluLT5mZHdv cHRpb25zID0gJDU7CisJCQkJCVNwbGl0Q29sUXVhbExpc3QoJDYsICZuLT5jb25zdHJhaW50 cywgJm4tPmNvbGxDbGF1c2UsCiAJCQkJCQkJCQkgeXlzY2FubmVyKTsKIAkJCQkJbi0+bG9j YXRpb24gPSBAMTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwpAQCAtMzg1MSw2ICszODUzLDEx IEBAIG9wdF9jb2x1bW5fY29tcHJlc3Npb246CiAJCQl8IC8qRU1QVFkqLwkJCQkJCQkJeyAk JCA9IE5VTEw7IH0KIAkJOwogCitvcHRfY29sdW1uX2VuY3J5cHRpb246CisJCQlFTkNSWVBU RUQgV0lUSCAnKCcgZGVmX2xpc3QgJyknCQkJeyAkJCA9ICQ0OyB9CisJCQl8IC8qRU1QVFkq LwkJCQkJCQkJeyAkJCA9IE5VTEw7IH0KKwkJOworCiBDb2xRdWFsTGlzdDoKIAkJCUNvbFF1 YWxMaXN0IENvbENvbnN0cmFpbnQJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQyKTsgfQogCQkJ fCAvKkVNUFRZKi8JCQkJCQkJCXsgJCQgPSBOSUw7IH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9wYXJhbS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Bh cmFtLmMKaW5kZXggZjY2OGFiZmNiMy4uYzYyODc0NDRhOCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX3BhcmFtLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX3BhcmFtLmMKQEAgLTQ5LDYgKzQ5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgVmFyUGFyYW1T dGF0ZQogewogCU9pZAkJICAqKnBhcmFtVHlwZXM7CQkvKiBhcnJheSBvZiBwYXJhbWV0ZXIg dHlwZSBPSURzICovCiAJaW50CQkgICAqbnVtUGFyYW1zOwkJLyogbnVtYmVyIG9mIGFycmF5 IGVudHJpZXMgKi8KKwlPaWQJCSAgKipwYXJhbU9yaWdUYmxzOwkvKiB1bmRlcmx5aW5nIHRh YmxlcyAoMCBpZiBub25lKSAqLworCUF0dHJOdW1iZXIgKipwYXJhbU9yaWdDb2xzOwkvKiB1 bmRlcmx5aW5nIGNvbHVtbnMgKDAgaWYgbm9uZSkgKi8KIH0gVmFyUGFyYW1TdGF0ZTsKIAog c3RhdGljIE5vZGUgKmZpeGVkX3BhcmFtcmVmX2hvb2soUGFyc2VTdGF0ZSAqcHN0YXRlLCBQ YXJhbVJlZiAqcHJlZik7CkBAIC01Niw2ICs1OCw3IEBAIHN0YXRpYyBOb2RlICp2YXJpYWJs ZV9wYXJhbXJlZl9ob29rKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUGFyYW1SZWYgKnByZWYpOwog c3RhdGljIE5vZGUgKnZhcmlhYmxlX2NvZXJjZV9wYXJhbV9ob29rKFBhcnNlU3RhdGUgKnBz dGF0ZSwgUGFyYW0gKnBhcmFtLAogCQkJCQkJCQkJCU9pZCB0YXJnZXRUeXBlSWQsIGludDMy IHRhcmdldFR5cGVNb2QsCiAJCQkJCQkJCQkJaW50IGxvY2F0aW9uKTsKK3N0YXRpYyB2b2lk IHZhcmlhYmxlX3BhcmFtX2Fzc2lnbl9vcmlnX2hvb2soUGFyc2VTdGF0ZSAqcHN0YXRlLCBQ YXJhbSAqcGFyYW0sIE9pZCBvcmlndGJsLCBBdHRyTnVtYmVyIG9yaWdjb2wpOwogc3RhdGlj IGJvb2wgY2hlY2tfcGFyYW1ldGVyX3Jlc29sdXRpb25fd2Fsa2VyKE5vZGUgKm5vZGUsIFBh cnNlU3RhdGUgKnBzdGF0ZSk7CiBzdGF0aWMgYm9vbCBxdWVyeV9jb250YWluc19leHRlcm5f cGFyYW1zX3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KTsKIApAQCAtODEsMTUg Kzg0LDE5IEBAIHNldHVwX3BhcnNlX2ZpeGVkX3BhcmFtZXRlcnMoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogICovCiB2b2lkCiBzZXR1cF9wYXJzZV92YXJpYWJsZV9wYXJhbWV0ZXJzKFBhcnNl U3RhdGUgKnBzdGF0ZSwKLQkJCQkJCQkJT2lkICoqcGFyYW1UeXBlcywgaW50ICpudW1QYXJh bXMpCisJCQkJCQkJCU9pZCAqKnBhcmFtVHlwZXMsIGludCAqbnVtUGFyYW1zLAorCQkJCQkJ CQlPaWQgKipwYXJhbU9yaWdUYmxzLCBBdHRyTnVtYmVyICoqcGFyYW1PcmlnQ29scykKIHsK IAlWYXJQYXJhbVN0YXRlICpwYXJzdGF0ZSA9IHBhbGxvYyhzaXplb2YoVmFyUGFyYW1TdGF0 ZSkpOwogCiAJcGFyc3RhdGUtPnBhcmFtVHlwZXMgPSBwYXJhbVR5cGVzOwogCXBhcnN0YXRl LT5udW1QYXJhbXMgPSBudW1QYXJhbXM7CisJcGFyc3RhdGUtPnBhcmFtT3JpZ1RibHMgPSBw YXJhbU9yaWdUYmxzOworCXBhcnN0YXRlLT5wYXJhbU9yaWdDb2xzID0gcGFyYW1PcmlnQ29s czsKIAlwc3RhdGUtPnBfcmVmX2hvb2tfc3RhdGUgPSAodm9pZCAqKSBwYXJzdGF0ZTsKIAlw c3RhdGUtPnBfcGFyYW1yZWZfaG9vayA9IHZhcmlhYmxlX3BhcmFtcmVmX2hvb2s7CiAJcHN0 YXRlLT5wX2NvZXJjZV9wYXJhbV9ob29rID0gdmFyaWFibGVfY29lcmNlX3BhcmFtX2hvb2s7 CisJcHN0YXRlLT5wX3BhcmFtX2Fzc2lnbl9vcmlnX2hvb2sgPSB2YXJpYWJsZV9wYXJhbV9h c3NpZ25fb3JpZ19ob29rOwogfQogCiAvKgpAQCAtMTQ1LDE0ICsxNTIsMzYgQEAgdmFyaWFi bGVfcGFyYW1yZWZfaG9vayhQYXJzZVN0YXRlICpwc3RhdGUsIFBhcmFtUmVmICpwcmVmKQog CXsKIAkJLyogTmVlZCB0byBlbmxhcmdlIHBhcmFtIGFycmF5ICovCiAJCWlmICgqcGFyc3Rh dGUtPnBhcmFtVHlwZXMpCisJCXsKIAkJCSpwYXJzdGF0ZS0+cGFyYW1UeXBlcyA9IChPaWQg KikgcmVwYWxsb2MoKnBhcnN0YXRlLT5wYXJhbVR5cGVzLAogCQkJCQkJCQkJCQkJCSBwYXJh bW5vICogc2l6ZW9mKE9pZCkpOworCQkJaWYgKHBhcnN0YXRlLT5wYXJhbU9yaWdUYmxzKQor CQkJCSpwYXJzdGF0ZS0+cGFyYW1PcmlnVGJscyA9IHJlcGFsbG9jKCpwYXJzdGF0ZS0+cGFy YW1PcmlnVGJscywKKwkJCQkJCQkJCQkJCQlwYXJhbW5vICogc2l6ZW9mKE9pZCkpOworCQkJ aWYgKHBhcnN0YXRlLT5wYXJhbU9yaWdDb2xzKQorCQkJCSpwYXJzdGF0ZS0+cGFyYW1Pcmln Q29scyA9IHJlcGFsbG9jKCpwYXJzdGF0ZS0+cGFyYW1PcmlnQ29scywKKwkJCQkJCQkJCQkJ CQlwYXJhbW5vICogc2l6ZW9mKEF0dHJOdW1iZXIpKTsKKwkJfQogCQllbHNlCisJCXsKIAkJ CSpwYXJzdGF0ZS0+cGFyYW1UeXBlcyA9IChPaWQgKikgcGFsbG9jKHBhcmFtbm8gKiBzaXpl b2YoT2lkKSk7CisJCQlpZiAocGFyc3RhdGUtPnBhcmFtT3JpZ1RibHMpCisJCQkJKnBhcnN0 YXRlLT5wYXJhbU9yaWdUYmxzID0gcGFsbG9jKHBhcmFtbm8gKiBzaXplb2YoT2lkKSk7CisJ CQlpZiAocGFyc3RhdGUtPnBhcmFtT3JpZ0NvbHMpCisJCQkJKnBhcnN0YXRlLT5wYXJhbU9y aWdDb2xzID0gcGFsbG9jKHBhcmFtbm8gKiBzaXplb2YoQXR0ck51bWJlcikpOworCQl9CiAJ CS8qIFplcm8gb3V0IHRoZSBwcmV2aW91c2x5LXVucmVmZXJlbmNlZCBzbG90cyAqLwogCQlN ZW1TZXQoKnBhcnN0YXRlLT5wYXJhbVR5cGVzICsgKnBhcnN0YXRlLT5udW1QYXJhbXMsCiAJ CQkgICAwLAogCQkJICAgKHBhcmFtbm8gLSAqcGFyc3RhdGUtPm51bVBhcmFtcykgKiBzaXpl b2YoT2lkKSk7CisJCWlmIChwYXJzdGF0ZS0+cGFyYW1PcmlnVGJscykKKwkJCU1lbVNldCgq cGFyc3RhdGUtPnBhcmFtT3JpZ1RibHMgKyAqcGFyc3RhdGUtPm51bVBhcmFtcywKKwkJCQkg ICAwLAorCQkJCSAgIChwYXJhbW5vIC0gKnBhcnN0YXRlLT5udW1QYXJhbXMpICogc2l6ZW9m KE9pZCkpOworCQlpZiAocGFyc3RhdGUtPnBhcmFtT3JpZ0NvbHMpCisJCQlNZW1TZXQoKnBh cnN0YXRlLT5wYXJhbU9yaWdDb2xzICsgKnBhcnN0YXRlLT5udW1QYXJhbXMsCisJCQkJICAg MCwKKwkJCQkgICAocGFyYW1ubyAtICpwYXJzdGF0ZS0+bnVtUGFyYW1zKSAqIHNpemVvZihB dHRyTnVtYmVyKSk7CiAJCSpwYXJzdGF0ZS0+bnVtUGFyYW1zID0gcGFyYW1ubzsKIAl9CiAK QEAgLTI2MCw2ICsyODksMTggQEAgdmFyaWFibGVfY29lcmNlX3BhcmFtX2hvb2soUGFyc2VT dGF0ZSAqcHN0YXRlLCBQYXJhbSAqcGFyYW0sCiAJcmV0dXJuIE5VTEw7CiB9CiAKK3N0YXRp YyB2b2lkCit2YXJpYWJsZV9wYXJhbV9hc3NpZ25fb3JpZ19ob29rKFBhcnNlU3RhdGUgKnBz dGF0ZSwgUGFyYW0gKnBhcmFtLCBPaWQgb3JpZ3RibCwgQXR0ck51bWJlciBvcmlnY29sKQor eworCVZhclBhcmFtU3RhdGUgKnBhcnN0YXRlID0gKFZhclBhcmFtU3RhdGUgKikgcHN0YXRl LT5wX3JlZl9ob29rX3N0YXRlOworCWludAkJCXBhcmFtbm8gPSBwYXJhbS0+cGFyYW1pZDsK KworCWlmIChwYXJzdGF0ZS0+cGFyYW1PcmlnVGJscykKKwkJKCpwYXJzdGF0ZS0+cGFyYW1P cmlnVGJscylbcGFyYW1ubyAtIDFdID0gb3JpZ3RibDsKKwlpZiAocGFyc3RhdGUtPnBhcmFt T3JpZ0NvbHMpCisJCSgqcGFyc3RhdGUtPnBhcmFtT3JpZ0NvbHMpW3BhcmFtbm8gLSAxXSA9 IG9yaWdjb2w7Cit9CisKIC8qCiAgKiBDaGVjayBmb3IgY29uc2lzdGVudCBhc3NpZ25tZW50 IG9mIHZhcmlhYmxlIHBhcmFtZXRlcnMgYWZ0ZXIgY29tcGxldGlvbgogICogb2YgcGFyc2lu ZyB3aXRoIHBhcnNlX3ZhcmlhYmxlX3BhcmFtZXRlcnMuCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf dGFyZ2V0LmMKaW5kZXggMmExZDQ0YjgxMy4uYjk2NDA4ODA0NCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV90YXJnZXQuYwpAQCAtNTk1LDYgKzU5NSwxMiBAQCB0cmFuc2Zvcm1Bc3NpZ25l ZEV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBz dGF0ZSwgZXhwckxvY2F0aW9uKG9yaWdfZXhwcikpKSk7CiAJfQogCisJaWYgKElzQShleHBy LCBQYXJhbSkpCisJeworCQlpZiAocHN0YXRlLT5wX3BhcmFtX2Fzc2lnbl9vcmlnX2hvb2sp CisJCQlwc3RhdGUtPnBfcGFyYW1fYXNzaWduX29yaWdfaG9vayhwc3RhdGUsIGNhc3ROb2Rl KFBhcmFtLCBleHByKSwgUmVsYXRpb25HZXRSZWxpZChwc3RhdGUtPnBfdGFyZ2V0X3JlbGF0 aW9uKSwgYXR0cm5vKTsKKwl9CisKIAlwc3RhdGUtPnBfZXhwcl9raW5kID0gc3ZfZXhwcl9r aW5kOwogCiAJcmV0dXJuIGV4cHI7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9iYXNlYmFja3VwX2NvcHkuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2Jhc2Vi YWNrdXBfY29weS5jCmluZGV4IGNhYmIwNzcyNDAuLjI0ZjRhMTA5MWEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2Jhc2ViYWNrdXBfY29weS5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2Jhc2ViYWNrdXBfY29weS5jCkBAIC0zNTEsNiArMzUxLDgg QEAgU2VuZFhsb2dSZWNQdHJSZXN1bHQoWExvZ1JlY1B0ciBwdHIsIFRpbWVMaW5lSUQgdGxp KQogCXBxX3NlbmRpbnQxNigmYnVmLCAtMSk7CiAJcHFfc2VuZGludDMyKCZidWYsIDApOwog CXBxX3NlbmRpbnQxNigmYnVmLCAwKTsKKwlwcV9zZW5kaW50MzIoJmJ1ZiwgMCk7CisJcHFf c2VuZGludDE2KCZidWYsIDApOwogCiAJcHFfc2VuZHN0cmluZygmYnVmLCAidGxpIik7CiAJ cHFfc2VuZGludDMyKCZidWYsIDApOwkJLyogdGFibGUgb2lkICovCkBAIC0zNjQsNiArMzY2 LDkgQEAgU2VuZFhsb2dSZWNQdHJSZXN1bHQoWExvZ1JlY1B0ciBwdHIsIFRpbWVMaW5lSUQg dGxpKQogCXBxX3NlbmRpbnQxNigmYnVmLCAtMSk7CiAJcHFfc2VuZGludDMyKCZidWYsIDAp OwogCXBxX3NlbmRpbnQxNigmYnVmLCAwKTsKKwlwcV9zZW5kaW50MzIoJmJ1ZiwgMCk7CisJ cHFfc2VuZGludDE2KCZidWYsIDApOworCiAJcHFfZW5kbWVzc2FnZSgmYnVmKTsKIAogCS8q IERhdGEgcm93ICovCkBAIC00MDYsNiArNDExLDggQEAgU2VuZFRhYmxlc3BhY2VMaXN0KExp c3QgKnRhYmxlc3BhY2VzKQogCXBxX3NlbmRpbnQxNigmYnVmLCA0KTsJCS8qIHR5cGxlbiAq LwogCXBxX3NlbmRpbnQzMigmYnVmLCAwKTsJCS8qIHR5cG1vZCAqLwogCXBxX3NlbmRpbnQx NigmYnVmLCAwKTsJCS8qIGZvcm1hdCBjb2RlICovCisJcHFfc2VuZGludDMyKCZidWYsIDAp OworCXBxX3NlbmRpbnQxNigmYnVmLCAwKTsKIAogCS8qIFNlY29uZCBmaWVsZCAtIHNwY2xv Y2F0aW9uICovCiAJcHFfc2VuZHN0cmluZygmYnVmLCAic3BjbG9jYXRpb24iKTsKQEAgLTQx NSw2ICs0MjIsOCBAQCBTZW5kVGFibGVzcGFjZUxpc3QoTGlzdCAqdGFibGVzcGFjZXMpCiAJ cHFfc2VuZGludDE2KCZidWYsIC0xKTsKIAlwcV9zZW5kaW50MzIoJmJ1ZiwgMCk7CiAJcHFf c2VuZGludDE2KCZidWYsIDApOworCXBxX3NlbmRpbnQzMigmYnVmLCAwKTsKKwlwcV9zZW5k aW50MTYoJmJ1ZiwgMCk7CiAKIAkvKiBUaGlyZCBmaWVsZCAtIHNpemUgKi8KIAlwcV9zZW5k c3RyaW5nKCZidWYsICJzaXplIik7CkBAIC00MjQsNiArNDMzLDkgQEAgU2VuZFRhYmxlc3Bh Y2VMaXN0KExpc3QgKnRhYmxlc3BhY2VzKQogCXBxX3NlbmRpbnQxNigmYnVmLCA4KTsKIAlw cV9zZW5kaW50MzIoJmJ1ZiwgMCk7CiAJcHFfc2VuZGludDE2KCZidWYsIDApOworCXBxX3Nl bmRpbnQzMigmYnVmLCAwKTsKKwlwcV9zZW5kaW50MTYoJmJ1ZiwgMCk7CisKIAlwcV9lbmRt ZXNzYWdlKCZidWYpOwogCiAJZm9yZWFjaChsYywgdGFibGVzcGFjZXMpCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3dhbHNlbmRlci5jCmluZGV4IGU0MjY3MTcyMmEuLjcyMDBiNTUzMTggMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCkBAIC02MDcsNiArNjA3LDggQEAg U2VuZFRpbWVMaW5lSGlzdG9yeShUaW1lTGluZUhpc3RvcnlDbWQgKmNtZCkKIAlwcV9zZW5k aW50MTYoJmJ1ZiwgLTEpOwkJLyogdHlwbGVuICovCiAJcHFfc2VuZGludDMyKCZidWYsIDAp OwkJLyogdHlwbW9kICovCiAJcHFfc2VuZGludDE2KCZidWYsIDApOwkJLyogZm9ybWF0IGNv ZGUgKi8KKwlwcV9zZW5kaW50MzIoJmJ1ZiwgMCk7CisJcHFfc2VuZGludDE2KCZidWYsIDAp OwogCiAJLyogc2Vjb25kIGZpZWxkICovCiAJcHFfc2VuZHN0cmluZygmYnVmLCAiY29udGVu dCIpOyAvKiBjb2wgbmFtZSAqLwpAQCAtNjE2LDYgKzYxOCw5IEBAIFNlbmRUaW1lTGluZUhp c3RvcnkoVGltZUxpbmVIaXN0b3J5Q21kICpjbWQpCiAJcHFfc2VuZGludDE2KCZidWYsIC0x KTsJCS8qIHR5cGxlbiAqLwogCXBxX3NlbmRpbnQzMigmYnVmLCAwKTsJCS8qIHR5cG1vZCAq LwogCXBxX3NlbmRpbnQxNigmYnVmLCAwKTsJCS8qIGZvcm1hdCBjb2RlICovCisJcHFfc2Vu ZGludDMyKCZidWYsIDApOworCXBxX3NlbmRpbnQxNigmYnVmLCAwKTsKKwogCXBxX2VuZG1l c3NhZ2UoJmJ1Zik7CiAKIAkvKiBTZW5kIGEgRGF0YVJvdyBtZXNzYWdlICovCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bv c3RncmVzLmMKaW5kZXggOGI2YjViYmFhYS4uYTU3NDE5NDcwMSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdy ZXMuYwpAQCAtNzksNiArNzksNyBAQAogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAj aW5jbHVkZSAidXRpbHMvcHNfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5o IgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZW91 dC5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgogCkBAIC02ODAsNiArNjgxLDgg QEAgcGdfYW5hbHl6ZV9hbmRfcmV3cml0ZV92YXJwYXJhbXMoUmF3U3RtdCAqcGFyc2V0cmVl LAogCQkJCQkJCQkgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLAogCQkJCQkJCQkgT2lkICoq cGFyYW1UeXBlcywKIAkJCQkJCQkJIGludCAqbnVtUGFyYW1zLAorCQkJCQkJCQkgT2lkICoq cGFyYW1PcmlnVGJscywKKwkJCQkJCQkJIEF0dHJOdW1iZXIgKipwYXJhbU9yaWdDb2xzLAog CQkJCQkJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpCiB7CiAJUXVlcnkJICAgKnF1 ZXJ5OwpAQCAtNjk0LDcgKzY5Nyw3IEBAIHBnX2FuYWx5emVfYW5kX3Jld3JpdGVfdmFycGFy YW1zKFJhd1N0bXQgKnBhcnNldHJlZSwKIAkJUmVzZXRVc2FnZSgpOwogCiAJcXVlcnkgPSBw YXJzZV9hbmFseXplX3ZhcnBhcmFtcyhwYXJzZXRyZWUsIHF1ZXJ5X3N0cmluZywgcGFyYW1U eXBlcywgbnVtUGFyYW1zLAotCQkJCQkJCQkJcXVlcnlFbnYpOworCQkJCQkJCQkJcGFyYW1P cmlnVGJscywgcGFyYW1PcmlnQ29scywgcXVlcnlFbnYpOwogCiAJLyoKIAkgKiBDaGVjayBh bGwgcGFyYW1ldGVyIHR5cGVzIGdvdCBkZXRlcm1pbmVkLgpAQCAtMTM3MSw2ICsxMzc0LDgg QEAgZXhlY19wYXJzZV9tZXNzYWdlKGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywJLyogc3Ry aW5nIHRvIGV4ZWN1dGUgKi8KIAlib29sCQlpc19uYW1lZDsKIAlib29sCQlzYXZlX2xvZ19z dGF0ZW1lbnRfc3RhdHMgPSBsb2dfc3RhdGVtZW50X3N0YXRzOwogCWNoYXIJCW1zZWNfc3Ry WzMyXTsKKwlPaWQJCSAgICpwYXJhbU9yaWdUYmxzID0gcGFsbG9jKG51bVBhcmFtcyAqIHNp emVvZihPaWQpKTsKKwlBdHRyTnVtYmVyICpwYXJhbU9yaWdDb2xzID0gcGFsbG9jKG51bVBh cmFtcyAqIHNpemVvZihBdHRyTnVtYmVyKSk7CiAKIAkvKgogCSAqIFJlcG9ydCBxdWVyeSB0 byB2YXJpb3VzIG1vbml0b3JpbmcgZmFjaWxpdGllcy4KQEAgLTE0OTEsNiArMTQ5Niw4IEBA IGV4ZWNfcGFyc2VfbWVzc2FnZShjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsCS8qIHN0cmlu ZyB0byBleGVjdXRlICovCiAJCQkJCQkJCQkJCQkJCSAgcXVlcnlfc3RyaW5nLAogCQkJCQkJ CQkJCQkJCQkgICZwYXJhbVR5cGVzLAogCQkJCQkJCQkJCQkJCQkgICZudW1QYXJhbXMsCisJ CQkJCQkJCQkJCQkJCSAgJnBhcmFtT3JpZ1RibHMsCisJCQkJCQkJCQkJCQkJCSAgJnBhcmFt T3JpZ0NvbHMsCiAJCQkJCQkJCQkJCQkJCSAgTlVMTCk7CiAKIAkJLyogRG9uZSB3aXRoIHRo ZSBzbmFwc2hvdCB1c2VkIGZvciBwYXJzaW5nICovCkBAIC0xNTIxLDYgKzE1MjgsOCBAQCBl eGVjX3BhcnNlX21lc3NhZ2UoY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLAkvKiBzdHJpbmcg dG8gZXhlY3V0ZSAqLwogCQkJCQkgICB1bm5hbWVkX3N0bXRfY29udGV4dCwKIAkJCQkJICAg cGFyYW1UeXBlcywKIAkJCQkJICAgbnVtUGFyYW1zLAorCQkJCQkgICBwYXJhbU9yaWdUYmxz LAorCQkJCQkgICBwYXJhbU9yaWdDb2xzLAogCQkJCQkgICBOVUxMLAogCQkJCQkgICBOVUxM LAogCQkJCQkgICBDVVJTT1JfT1BUX1BBUkFMTEVMX09LLAkvKiBhbGxvdyBwYXJhbGxlbCBt b2RlICovCkBAIC0xODE4LDYgKzE4MjcsMTYgQEAgZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5n SW5mbyBpbnB1dF9tZXNzYWdlKQogCQkJZWxzZQogCQkJCXBmb3JtYXQgPSAwOwkvKiBkZWZh dWx0ID0gdGV4dCAqLwogCisJCQlpZiAoZ2V0X3R5cHR5cGUocHR5cGUpID09IFRZUFRZUEVf RU5DUllQVEVEKQorCQkJeworCQkJCWlmIChwZm9ybWF0ICYgMHhGMCkKKwkJCQkJcGZvcm1h dCAmPSB+MHhGMDsKKwkJCQllbHNlCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAorCQkJCQkJCSBlcnJtc2coInBh cmFtZXRlciBjb3JyZXNwb25kcyB0byBhbiBlbmNyeXB0ZWQgY29sdW1uLCBidXQgdGhlIHBh cmFtZXRlciB2YWx1ZSB3YXMgbm90IGVuY3J5cHRlZCIpKSk7CisJCQl9CisKIAkJCWlmIChw Zm9ybWF0ID09IDApCS8qIHRleHQgbW9kZSAqLwogCQkJewogCQkJCU9pZAkJCXR5cGlucHV0 OwpAQCAtMjYxNCw4ICsyNjMzLDQxIEBAIGV4ZWNfZGVzY3JpYmVfc3RhdGVtZW50X21lc3Nh Z2UoY29uc3QgY2hhciAqc3RtdF9uYW1lKQogCWZvciAoaW50IGkgPSAwOyBpIDwgcHNyYy0+ bnVtX3BhcmFtczsgaSsrKQogCXsKIAkJT2lkCQkJcHR5cGUgPSBwc3JjLT5wYXJhbV90eXBl c1tpXTsKKwkJT2lkCQkJcGNla2lkID0gSW52YWxpZE9pZDsKKwkJaW50CQkJcGNla2FsZyA9 IDA7CisJCWludDE2CQlwZmxhZ3MgPSAwOworCisJCWlmIChnZXRfdHlwdHlwZShwdHlwZSkg PT0gVFlQVFlQRV9FTkNSWVBURUQpCisJCXsKKwkJCU9pZAkJCXBvcmlndGJsID0gcHNyYy0+ cGFyYW1fb3JpZ3RibHNbaV07CisJCQlBdHRyTnVtYmVyCXBvcmlnY29sID0gcHNyYy0+cGFy YW1fb3JpZ2NvbHNbaV07CisJCQlIZWFwVHVwbGUJdHA7CisJCQlGb3JtX3BnX2F0dHJpYnV0 ZSBvcmlnX2F0dDsKKworCQkJaWYgKHBvcmlndGJsID09IEludmFsaWRPaWQgfHwgcG9yaWdj b2wgPD0gMCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJIGVycm1zZygicGFyYW1ldGVyICVkIGNv cnJlc3BvbmRzIHRvIGFuIGVuY3J5cHRlZCBjb2x1bW4sIGJ1dCBhbiB1bmRlcmx5aW5nIHRh YmxlIGFuZCBjb2x1bW4gY291bGQgbm90IGJlIGRldGVybWluZWQiLCBpKSkpOworCisJCQl0 cCA9IFNlYXJjaFN5c0NhY2hlMihBVFROVU0sIE9iamVjdElkR2V0RGF0dW0ocG9yaWd0Ymwp LCBJbnQxNkdldERhdHVtKHBvcmlnY29sKSk7CisJCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQo dHApKQorCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBhdHRyaWJ1 dGUgJWQgb2YgcmVsYXRpb24gJXUiLCBwb3JpZ2NvbCwgcG9yaWd0YmwpOworCQkJb3JpZ19h dHQgPSAoRm9ybV9wZ19hdHRyaWJ1dGUpIEdFVFNUUlVDVCh0cCk7CisJCQlwdHlwZSA9IG9y aWdfYXR0LT5hdHRyZWFsdHlwaWQ7CisJCQlwY2VraWQgPSBvcmlnX2F0dC0+YXR0Y2VrOwor CQkJcGNla2FsZyA9IG9yaWdfYXR0LT5hdHRlbmNhbGc7CisJCQlSZWxlYXNlU3lzQ2FjaGUo dHApOworCisJCQlpZiAocHNyYy0+cGFyYW1fdHlwZXNbaV0gPT0gUEdfRU5DUllQVEVEX0RF VE9JRCkKKwkJCQlwZmxhZ3MgfD0gMHgwMTsKKworCQkJTWF5YmVTZW5kQ29sdW1uRW5jcnlw dGlvbktleU1lc3NhZ2UocGNla2lkKTsKKwkJfQogCiAJCXBxX3NlbmRpbnQzMigmcm93X2Rl c2NyaXB0aW9uX2J1ZiwgKGludCkgcHR5cGUpOworCQlwcV9zZW5kaW50MzIoJnJvd19kZXNj cmlwdGlvbl9idWYsIChpbnQpIHBjZWtpZCk7CisJCXBxX3NlbmRpbnQxNigmcm93X2Rlc2Ny aXB0aW9uX2J1ZiwgcGNla2FsZyk7CisJCXBxX3NlbmRpbnQxNigmcm93X2Rlc2NyaXB0aW9u X2J1ZiwgcGZsYWdzKTsKIAl9CiAJcHFfZW5kbWVzc2FnZV9yZXVzZSgmcm93X2Rlc2NyaXB0 aW9uX2J1Zik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5j YWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKaW5kZXggMGQ2 YTI5NTY3NC4uZjY4OTNkZDhiNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcGxhbmNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hl LmMKQEAgLTM0MCw2ICszNDAsOCBAQCBDb21wbGV0ZUNhY2hlZFBsYW4oQ2FjaGVkUGxhblNv dXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkgICBNZW1vcnlDb250ZXh0IHF1ZXJ5dHJlZV9jb250 ZXh0LAogCQkJCSAgIE9pZCAqcGFyYW1fdHlwZXMsCiAJCQkJICAgaW50IG51bV9wYXJhbXMs CisJCQkJICAgT2lkICpwYXJhbV9vcmlndGJscywKKwkJCQkgICBBdHRyTnVtYmVyICpwYXJh bV9vcmlnY29scywKIAkJCQkgICBQYXJzZXJTZXR1cEhvb2sgcGFyc2VyU2V0dXAsCiAJCQkJ ICAgdm9pZCAqcGFyc2VyU2V0dXBBcmcsCiAJCQkJICAgaW50IGN1cnNvcl9vcHRpb25zLApA QCAtNDE5LDYgKzQyMSwxNCBAQCBDb21wbGV0ZUNhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJj ZSAqcGxhbnNvdXJjZSwKIAl7CiAJCXBsYW5zb3VyY2UtPnBhcmFtX3R5cGVzID0gKE9pZCAq KSBwYWxsb2MobnVtX3BhcmFtcyAqIHNpemVvZihPaWQpKTsKIAkJbWVtY3B5KHBsYW5zb3Vy Y2UtPnBhcmFtX3R5cGVzLCBwYXJhbV90eXBlcywgbnVtX3BhcmFtcyAqIHNpemVvZihPaWQp KTsKKworCQlwbGFuc291cmNlLT5wYXJhbV9vcmlndGJscyA9IChPaWQgKikgcGFsbG9jMChu dW1fcGFyYW1zICogc2l6ZW9mKE9pZCkpOworCQlpZiAocGFyYW1fb3JpZ3RibHMpCisJCQlt ZW1jcHkocGxhbnNvdXJjZS0+cGFyYW1fb3JpZ3RibHMsIHBhcmFtX29yaWd0YmxzLCBudW1f cGFyYW1zICogc2l6ZW9mKE9pZCkpOworCisJCXBsYW5zb3VyY2UtPnBhcmFtX29yaWdjb2xz ID0gKEF0dHJOdW1iZXIgKikgcGFsbG9jMChudW1fcGFyYW1zICogc2l6ZW9mKEF0dHJOdW1i ZXIpKTsKKwkJaWYgKHBhcmFtX29yaWdjb2xzKQorCQkJbWVtY3B5KHBsYW5zb3VyY2UtPnBh cmFtX29yaWdjb2xzLCBwYXJhbV9vcmlnY29scywgbnVtX3BhcmFtcyAqIHNpemVvZihBdHRy TnVtYmVyKSk7CiAJfQogCWVsc2UKIAkJcGxhbnNvdXJjZS0+cGFyYW1fdHlwZXMgPSBOVUxM OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMKaW5kZXggMTkxMmIxMjE0Ni4uOGZk ZmFmODM5ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jCkBAIC0yOSw3ICsy OSw5IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hdXRoX21lbWJlcnMuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX2F1dGhpZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY2FzdC5oIgor I2luY2x1ZGUgImNhdGFsb2cvcGdfY29sZW5ja2V5LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19jb2xsYXRpb24uaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbG1hc3RlcmtleS5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfY29uc3RyYWludC5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfY29udmVyc2lvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGF0YWJhc2UuaCIKQEAg LTI2Nyw2ICsyNjksMjQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjYWNoZWRlc2MgY2FjaGVp bmZvW10gPSB7CiAJCX0sCiAJCTI1NgogCX0sCisJeworCQlDb2x1bW5FbmNLZXlSZWxhdGlv bklkLAkvKiBDRUtOQU1FICovCisJCUNvbHVtbkVuY0tleU5hbWVJbmRleElkLAorCQkxLAor CQl7CisJCQlBbnVtX3BnX2NvbGVuY2tleV9jZWtuYW1lLAorCQl9LAorCQk4CisJfSwKKwl7 CisJCUNvbHVtbkVuY0tleVJlbGF0aW9uSWQsCS8qIENFS09JRCAqLworCQlDb2x1bW5FbmNL ZXlPaWRJbmRleElkLAorCQkxLAorCQl7CisJCQlBbnVtX3BnX2NvbGVuY2tleV9vaWQsCisJ CX0sCisJCTgKKwl9LAogCXtPcGVyYXRvckNsYXNzUmVsYXRpb25JZCwJLyogQ0xBQU1OQU1F TlNQICovCiAJCU9wY2xhc3NBbU5hbWVOc3BJbmRleElkLAogCQkzLApAQCAtMjg5LDYgKzMw OSwxNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNhY2hlZGVzYyBjYWNoZWluZm9bXSA9IHsK IAkJfSwKIAkJOAogCX0sCisJeworCQlDb2x1bW5NYXN0ZXJLZXlSZWxhdGlvbklkLAkvKiBD TUtPSUQgKi8KKwkJQ29sdW1uTWFzdGVyS2V5T2lkSW5kZXhJZCwKKwkJMSwKKwkJeworCQkJ QW51bV9wZ19jb2xtYXN0ZXJrZXlfb2lkLAorCQl9LAorCQk4CisJfSwKIAl7Q29sbGF0aW9u UmVsYXRpb25JZCwJCS8qIENPTExOQU1FRU5DTlNQICovCiAJCUNvbGxhdGlvbk5hbWVFbmNO c3BJbmRleElkLAogCQkzLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu YyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggN2NjOWM3MmU0OS4uNDk4ODli NjllNSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC04MDY4LDYgKzgwNjgsNyBAQCBnZXRUYWJsZUF0 dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRhYmxlcykK IAlpbnQJCQlpX3R5cHN0b3JhZ2U7CiAJaW50CQkJaV9hdHRpZGVudGl0eTsKIAlpbnQJCQlp X2F0dGdlbmVyYXRlZDsKKwlpbnQJCQlpX2F0dGNla25hbWU7CiAJaW50CQkJaV9hdHRpc2Ry b3BwZWQ7CiAJaW50CQkJaV9hdHRsZW47CiAJaW50CQkJaV9hdHRhbGlnbjsKQEAgLTgxNzcs MTcgKzgxNzgsMjQgQEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8g KnRibGluZm8sIGludCBudW1UYWJsZXMpCiAKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+ PSAxMjAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsCi0JCQkJCQkJICJhLmF0dGdl bmVyYXRlZFxuIik7CisJCQkJCQkJICJhLmF0dGdlbmVyYXRlZCxcbiIpOwogCWVsc2UKIAkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIocSwKLQkJCQkJCQkgIicnIEFTIGF0dGdlbmVyYXRlZFxu Iik7CisJCQkJCQkJICInJyBBUyBhdHRnZW5lcmF0ZWQsXG4iKTsKKworCWlmIChmb3V0LT5y ZW1vdGVWZXJzaW9uID49IDE1MDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwKKwkJ CQkJCQkgIihTRUxFQ1QgY2VrbmFtZSBGUk9NIHBnX2NvbGVuY2tleSBjZWsgV0hFUkUgY2Vr Lm9pZCA9IGEuYXR0Y2VrICkgQVMgYXR0Y2VrbmFtZVxuIik7CisJZWxzZQorCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cihxLAorCQkJCQkJCSAiTlVMTCBBUyBhdHRjZWtuYW1lXG4iKTsKIAog CS8qIG5lZWQgbGVmdCBqb2luIHRvIHBnX3R5cGUgdG8gbm90IGZhaWwgb24gZHJvcHBlZCBj b2x1bW5zIC4uLiAqLwogCWFwcGVuZFBRRXhwQnVmZmVyKHEsCiAJCQkJCSAgIkZST00gdW5u ZXN0KCclcyc6OnBnX2NhdGFsb2cub2lkW10pIEFTIHNyYyh0YmxvaWQpXG4iCiAJCQkJCSAg IkpPSU4gcGdfY2F0YWxvZy5wZ19hdHRyaWJ1dGUgYSBPTiAoc3JjLnRibG9pZCA9IGEuYXR0 cmVsaWQpICIKIAkJCQkJICAiTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfdHlwZSB0ICIKLQkJ CQkJICAiT04gKGEuYXR0dHlwaWQgPSB0Lm9pZClcbiIKKwkJCQkJICAiT04gKENBU0UgV0hF TiBhLmF0dHJlYWx0eXBpZCA8PiAwIFRIRU4gYS5hdHRyZWFsdHlwaWQgRUxTRSBhLmF0dHR5 cGlkIEVORCA9IHQub2lkKVxuIgogCQkJCQkgICJXSEVSRSBhLmF0dG51bSA+IDA6OnBnX2Nh dGFsb2cuaW50MlxuIgogCQkJCQkgICJPUkRFUiBCWSBhLmF0dHJlbGlkLCBhLmF0dG51bSIs CiAJCQkJCSAgdGJsb2lkcy0+ZGF0YSk7CkBAIC04MjA2LDYgKzgyMTQsNyBAQCBnZXRUYWJs ZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRhYmxl cykKIAlpX3R5cHN0b3JhZ2UgPSBQUWZudW1iZXIocmVzLCAidHlwc3RvcmFnZSIpOwogCWlf YXR0aWRlbnRpdHkgPSBQUWZudW1iZXIocmVzLCAiYXR0aWRlbnRpdHkiKTsKIAlpX2F0dGdl bmVyYXRlZCA9IFBRZm51bWJlcihyZXMsICJhdHRnZW5lcmF0ZWQiKTsKKwlpX2F0dGNla25h bWUgPSBQUWZudW1iZXIocmVzLCAiYXR0Y2VrbmFtZSIpOwogCWlfYXR0aXNkcm9wcGVkID0g UFFmbnVtYmVyKHJlcywgImF0dGlzZHJvcHBlZCIpOwogCWlfYXR0bGVuID0gUFFmbnVtYmVy KHJlcywgImF0dGxlbiIpOwogCWlfYXR0YWxpZ24gPSBQUWZudW1iZXIocmVzLCAiYXR0YWxp Z24iKTsKQEAgLTgyNjcsNiArODI3Niw3IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91 dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQl0YmluZm8tPnR5cHN0 b3JhZ2UgPSAoY2hhciAqKSBwZ19tYWxsb2MobnVtYXR0cyAqIHNpemVvZihjaGFyKSk7CiAJ CXRiaW5mby0+YXR0aWRlbnRpdHkgPSAoY2hhciAqKSBwZ19tYWxsb2MobnVtYXR0cyAqIHNp emVvZihjaGFyKSk7CiAJCXRiaW5mby0+YXR0Z2VuZXJhdGVkID0gKGNoYXIgKikgcGdfbWFs bG9jKG51bWF0dHMgKiBzaXplb2YoY2hhcikpOworCQl0YmluZm8tPmF0dGNla25hbWUgPSAo Y2hhciAqKikgcGdfbWFsbG9jKG51bWF0dHMgKiBzaXplb2YoY2hhciAqKSk7CiAJCXRiaW5m by0+YXR0aXNkcm9wcGVkID0gKGJvb2wgKikgcGdfbWFsbG9jKG51bWF0dHMgKiBzaXplb2Yo Ym9vbCkpOwogCQl0YmluZm8tPmF0dGxlbiA9IChpbnQgKikgcGdfbWFsbG9jKG51bWF0dHMg KiBzaXplb2YoaW50KSk7CiAJCXRiaW5mby0+YXR0YWxpZ24gPSAoY2hhciAqKSBwZ19tYWxs b2MobnVtYXR0cyAqIHNpemVvZihjaGFyKSk7CkBAIC04Mjk1LDYgKzgzMDUsMTAgQEAgZ2V0 VGFibGVBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBudW1U YWJsZXMpCiAJCQl0YmluZm8tPmF0dGlkZW50aXR5W2pdID0gKihQUWdldHZhbHVlKHJlcywg ciwgaV9hdHRpZGVudGl0eSkpOwogCQkJdGJpbmZvLT5hdHRnZW5lcmF0ZWRbal0gPSAqKFBR Z2V0dmFsdWUocmVzLCByLCBpX2F0dGdlbmVyYXRlZCkpOwogCQkJdGJpbmZvLT5uZWVkc19v dmVycmlkZSA9IHRiaW5mby0+bmVlZHNfb3ZlcnJpZGUgfHwgKHRiaW5mby0+YXR0aWRlbnRp dHlbal0gPT0gQVRUUklCVVRFX0lERU5USVRZX0FMV0FZUyk7CisJCQlpZiAoIVBRZ2V0aXNu dWxsKHJlcywgciwgaV9hdHRjZWtuYW1lKSkKKwkJCQl0YmluZm8tPmF0dGNla25hbWVbal0g PSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIHIsIGlfYXR0Y2VrbmFtZSkpOworCQkJZWxz ZQorCQkJCXRiaW5mby0+YXR0Y2VrbmFtZVtqXSA9IE5VTEw7CiAJCQl0YmluZm8tPmF0dGlz ZHJvcHBlZFtqXSA9IChQUWdldHZhbHVlKHJlcywgciwgaV9hdHRpc2Ryb3BwZWQpWzBdID09 ICd0Jyk7CiAJCQl0YmluZm8tPmF0dGxlbltqXSA9IGF0b2koUFFnZXR2YWx1ZShyZXMsIHIs IGlfYXR0bGVuKSk7CiAJCQl0YmluZm8tPmF0dGFsaWduW2pdID0gKihQUWdldHZhbHVlKHJl cywgciwgaV9hdHRhbGlnbikpOwpAQCAtMTUyNjUsNiArMTUyNzksMTIgQEAgZHVtcFRhYmxl U2NoZW1hKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFRhYmxlSW5mbyAqdGJpbmZvKQogCQkJCQkJ CQkJCSAgdGJpbmZvLT5hdHR0eXBuYW1lc1tqXSk7CiAJCQkJCX0KIAorCQkJCQlpZiAodGJp bmZvLT5hdHRjZWtuYW1lW2pdKQorCQkJCQl7CisJCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcihx LCAiIEVOQ1JZUFRFRCBXSVRIIChjb2x1bW5fZW5jcnlwdGlvbl9rZXkgPSAlcykiLAorCQkJ CQkJCQkJCSAgZm10SWQodGJpbmZvLT5hdHRjZWtuYW1lW2pdKSk7CisJCQkJCX0KKwogCQkJ CQlpZiAocHJpbnRfZGVmYXVsdCkKIAkJCQkJewogCQkJCQkJaWYgKHRiaW5mby0+YXR0Z2Vu ZXJhdGVkW2pdID09IEFUVFJJQlVURV9HRU5FUkFURURfU1RPUkVEKQpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgK aW5kZXggMWQyMWMyOTA2Zi4uMmMxNzZlZDEzYyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBAIC0zMzMs NiArMzMzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX3RhYmxlSW5mbwogCWJvb2wJICAgKmF0dGlz ZHJvcHBlZDsJLyogdHJ1ZSBpZiBhdHRyIGlzIGRyb3BwZWQ7IGRvbid0IGR1bXAgaXQgKi8K IAljaGFyCSAgICphdHRpZGVudGl0eTsKIAljaGFyCSAgICphdHRnZW5lcmF0ZWQ7CisJY2hh cgkgICoqYXR0Y2VrbmFtZTsKIAlpbnQJCSAgICphdHRsZW47CQkJLyogYXR0cmlidXRlIGxl bmd0aCwgdXNlZCBieSBiaW5hcnlfdXBncmFkZSAqLwogCWNoYXIJICAgKmF0dGFsaWduOwkJ LyogYXR0cmlidXRlIGFsaWduLCB1c2VkIGJ5IGJpbmFyeV91cGdyYWRlICovCiAJYm9vbAkg ICAqYXR0aXNsb2NhbDsJCS8qIHRydWUgaWYgYXR0ciBoYXMgbG9jYWwgZGVmaW5pdGlvbiAq LwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYyBiL3NyYy9iaW4vcHNxbC9j b21tYW5kLmMKaW5kZXggYjUxZDI4NzgwYi4uODE2ZmQxY2NmOCAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wc3FsL2NvbW1hbmQuYworKysgYi9zcmMvYmluL3BzcWwvY29tbWFuZC5jCkBAIC05 OCw2ICs5OCw3IEBAIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgcHJvY2Vzc19jb21tYW5kX2df b3B0aW9ucyhjaGFyICpmaXJzdF9vcHRpb24sCiAJCQkJCQkJCQkJCQkgYm9vbCBhY3RpdmVf YnJhbmNoLAogCQkJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKmNtZCk7CiBzdGF0aWMgYmFja3Ns YXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9nZGVzYyhQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUs IGJvb2wgYWN0aXZlX2JyYW5jaCk7CitzdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29t bWFuZF9nZW5jcihQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5j aCk7CiBzdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9nZXRlbnYoUHNxbFNj YW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsCiAJCQkJCQkJCQkJICAg Y29uc3QgY2hhciAqY21kKTsKIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5k X2dleGVjKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoKTsK QEAgLTM1MCw2ICszNTEsOCBAQCBleGVjX2NvbW1hbmQoY29uc3QgY2hhciAqY21kLAogCQlz dGF0dXMgPSBleGVjX2NvbW1hbmRfZyhzY2FuX3N0YXRlLCBhY3RpdmVfYnJhbmNoLCBjbWQp OwogCWVsc2UgaWYgKHN0cmNtcChjbWQsICJnZGVzYyIpID09IDApCiAJCXN0YXR1cyA9IGV4 ZWNfY29tbWFuZF9nZGVzYyhzY2FuX3N0YXRlLCBhY3RpdmVfYnJhbmNoKTsKKwllbHNlIGlm IChzdHJjbXAoY21kLCAiZ2VuY3IiKSA9PSAwKQorCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRf Z2VuY3Ioc2Nhbl9zdGF0ZSwgYWN0aXZlX2JyYW5jaCk7CiAJZWxzZSBpZiAoc3RyY21wKGNt ZCwgImdldGVudiIpID09IDApCiAJCXN0YXR1cyA9IGV4ZWNfY29tbWFuZF9nZXRlbnYoc2Nh bl9zdGF0ZSwgYWN0aXZlX2JyYW5jaCwgY21kKTsKIAllbHNlIGlmIChzdHJjbXAoY21kLCAi Z2V4ZWMiKSA9PSAwKQpAQCAtMTQ5OSw2ICsxNTAyLDM0IEBAIGV4ZWNfY29tbWFuZF9nZGVz YyhQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCkKIAlyZXR1 cm4gc3RhdHVzOwogfQogCisvKgorICogXGdlbmNyIC0tIHNlbmQgcXVlcnksIHdpdGggc3Vw cG9ydCBmb3IgcGFyYW1ldGVyIGVuY3J5cHRpb24KKyAqLworc3RhdGljIGJhY2tzbGFzaFJl c3VsdAorZXhlY19jb21tYW5kX2dlbmNyKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9v bCBhY3RpdmVfYnJhbmNoKQoreworCWJhY2tzbGFzaFJlc3VsdCBzdGF0dXMgPSBQU1FMX0NN RF9TS0lQX0xJTkU7CisJY2hhcgkgICAqYXA7CisKKwlwc2V0Lm51bV9wYXJhbXMgPSAwOwor CXBzZXQucGFyYW1zID0gTlVMTDsKKwl3aGlsZSAoKGFwID0gcHNxbF9zY2FuX3NsYXNoX29w dGlvbihzY2FuX3N0YXRlLAorCQkJCQkJCQkJCU9UX05PUk1BTCwgTlVMTCwgdHJ1ZSkpICE9 IE5VTEwpCisJeworCQlwc2V0Lm51bV9wYXJhbXMrKzsKKwkJcHNldC5wYXJhbXMgPSBwZ19y ZWFsbG9jKHBzZXQucGFyYW1zLCBwc2V0Lm51bV9wYXJhbXMgKiBzaXplb2YoY2hhciAqKSk7 CisJCXBzZXQucGFyYW1zW3BzZXQubnVtX3BhcmFtcyAtIDFdID0gYXA7CisJfQorCisJaWYg KGFjdGl2ZV9icmFuY2gpCisJeworCQlwc2V0LmdlbmNyX2ZsYWcgPSB0cnVlOworCQlzdGF0 dXMgPSBQU1FMX0NNRF9TRU5EOworCX0KKworCXJldHVybiBzdGF0dXM7Cit9CisKIC8qCiAg KiBcZ2V0ZW52IC0tIHNldCB2YXJpYWJsZSBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlCiAg Ki8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9jb21tb24uYyBiL3NyYy9iaW4vcHNxbC9j b21tb24uYwppbmRleCA5NzQ5NTljNTk1Li5hZWM1MmExZDA5IDEwMDY0NAotLS0gYS9zcmMv YmluL3BzcWwvY29tbW9uLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2NvbW1vbi5jCkBAIC0xMjg1 LDYgKzEyODUsMTQgQEAgU2VuZFF1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5KQogCS8qIHJlc2V0 IFxnZGVzYyB0cmlnZ2VyICovCiAJcHNldC5nZGVzY19mbGFnID0gZmFsc2U7CiAKKwkvKiBy ZXNldCBcZ2VuY3IgdHJpZ2dlciAqLworCXBzZXQuZ2VuY3JfZmxhZyA9IGZhbHNlOworCWZv ciAoaW50IGkgPSAwOyBpIDwgcHNldC5udW1fcGFyYW1zOyBpKyspCisJCXBnX2ZyZWUocHNl dC5wYXJhbXNbaV0pOworCXBnX2ZyZWUocHNldC5wYXJhbXMpOworCXBzZXQucGFyYW1zID0g TlVMTDsKKwlwc2V0Lm51bV9wYXJhbXMgPSAwOworCiAJLyogcmVzZXQgXGdleGVjIHRyaWdn ZXIgKi8KIAlwc2V0LmdleGVjX2ZsYWcgPSBmYWxzZTsKIApAQCAtMTQ0OSw3ICsxNDU3LDM1 IEBAIEV4ZWNRdWVyeUFuZFByb2Nlc3NSZXN1bHRzKGNvbnN0IGNoYXIgKnF1ZXJ5LCBkb3Vi bGUgKmVsYXBzZWRfbXNlYywgYm9vbCAqc3ZwdF9nCiAJaWYgKHRpbWluZykKIAkJSU5TVFJf VElNRV9TRVRfQ1VSUkVOVChiZWZvcmUpOwogCi0Jc3VjY2VzcyA9IFBRc2VuZFF1ZXJ5KHBz ZXQuZGIsIHF1ZXJ5KTsKKwlpZiAocHNldC5nZW5jcl9mbGFnKQorCXsKKwkJUEdyZXN1bHQg KnJlczEsICpyZXMyOworCisJCXJlczEgPSBQUXByZXBhcmUocHNldC5kYiwgIiIsIHF1ZXJ5 LCBwc2V0Lm51bV9wYXJhbXMsIE5VTEwpOworCQlpZiAoUFFyZXN1bHRTdGF0dXMocmVzMSkg IT0gUEdSRVNfQ09NTUFORF9PSykKKwkJeworCQkJcGdfbG9nX2luZm8oIiVzIiwgUFFlcnJv ck1lc3NhZ2UocHNldC5kYikpOworCQkJQ2xlYXJPclNhdmVSZXN1bHQocmVzMSk7CisJCQly ZXR1cm4gLTE7CisJCX0KKwkJUFFjbGVhcihyZXMxKTsKKworCQlyZXMyID0gUFFkZXNjcmli ZVByZXBhcmVkKHBzZXQuZGIsICIiKTsKKwkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlczIpICE9 IFBHUkVTX0NPTU1BTkRfT0spCisJCXsKKwkJCXBnX2xvZ19pbmZvKCIlcyIsIFBRZXJyb3JN ZXNzYWdlKHBzZXQuZGIpKTsKKwkJCUNsZWFyT3JTYXZlUmVzdWx0KHJlczIpOworCQkJcmV0 dXJuIC0xOworCQl9CisKKwkJc3VjY2VzcyA9IFBRc2VuZFF1ZXJ5UHJlcGFyZWQyKHBzZXQu ZGIsICIiLCBwc2V0Lm51bV9wYXJhbXMsIChjb25zdCBjaGFyICpjb25zdCopIHBzZXQucGFy YW1zLCBOVUxMLCBOVUxMLCBOVUxMLCAwLCByZXMyKTsKKworCQlQUWNsZWFyKHJlczIpOwor CX0KKwllbHNlCisJeworCQlzdWNjZXNzID0gUFFzZW5kUXVlcnkocHNldC5kYiwgcXVlcnkp OworCX0KIAogCWlmICghc3VjY2VzcykKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwv ZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IGQxYWU2OTkxNzEu LmI1ZmMzZDY2YzggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBi L3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC0xNDk4LDcgKzE0OTgsNyBAQCBkZXNjcmli ZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCWJvb2wJCXByaW50 VGFibGVJbml0aWFsaXplZCA9IGZhbHNlOwogCWludAkJCWk7CiAJY2hhcgkgICAqdmlld19k ZWYgPSBOVUxMOwotCWNoYXIJICAgKmhlYWRlcnNbMTJdOworCWNoYXIJICAgKmhlYWRlcnNb MTNdOwogCVBRRXhwQnVmZmVyRGF0YSB0aXRsZTsKIAlQUUV4cEJ1ZmZlckRhdGEgdG1wYnVm OwogCWludAkJCWNvbHM7CkBAIC0xNTE0LDYgKzE1MTQsNyBAQCBkZXNjcmliZU9uZVRhYmxl RGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJCWZkd29wdHNfY29sID0gLTEs CiAJCQkJYXR0c3RvcmFnZV9jb2wgPSAtMSwKIAkJCQlhdHRjb21wcmVzc2lvbl9jb2wgPSAt MSwKKwkJCQlhdHRjZWtuYW1lX2NvbCA9IC0xLAogCQkJCWF0dHN0YXR0YXJnZXRfY29sID0g LTEsCiAJCQkJYXR0ZGVzY3JfY29sID0gLTE7CiAJaW50CQkJbnVtcm93czsKQEAgLTE4MTMs NyArMTgxNCw3IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVt YW5hbWUsCiAJY29scyA9IDA7CiAJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIlNFTEVDVCBh LmF0dG5hbWUiKTsKIAlhdHRuYW1lX2NvbCA9IGNvbHMrKzsKLQlhcHBlbmRQUUV4cEJ1ZmZl clN0cigmYnVmLCAiLFxuICBwZ19jYXRhbG9nLmZvcm1hdF90eXBlKGEuYXR0dHlwaWQsIGEu YXR0dHlwbW9kKSIpOworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICIsXG4gIHBnX2Nh dGFsb2cuZm9ybWF0X3R5cGUoQ0FTRSBXSEVOIGEuYXR0cmVhbHR5cGlkIDw+IDAgVEhFTiBh LmF0dHJlYWx0eXBpZCBFTFNFIGEuYXR0dHlwaWQgRU5ELCBhLmF0dHR5cG1vZCkiKTsKIAlh dHR0eXBlX2NvbCA9IGNvbHMrKzsKIAogCWlmIChzaG93X2NvbHVtbl9kZXRhaWxzKQpAQCAt MTgyNyw3ICsxODI4LDcgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAq c2NoZW1hbmFtZSwKIAkJYXR0cmRlZl9jb2wgPSBjb2xzKys7CiAJCWF0dG5vdG51bGxfY29s ID0gY29scysrOwogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiLFxuICAoU0VMRUNU IGMuY29sbG5hbWUgRlJPTSBwZ19jYXRhbG9nLnBnX2NvbGxhdGlvbiBjLCBwZ19jYXRhbG9n LnBnX3R5cGUgdFxuIgotCQkJCQkJCSAiICAgV0hFUkUgYy5vaWQgPSBhLmF0dGNvbGxhdGlv biBBTkQgdC5vaWQgPSBhLmF0dHR5cGlkIEFORCBhLmF0dGNvbGxhdGlvbiA8PiB0LnR5cGNv bGxhdGlvbikgQVMgYXR0Y29sbGF0aW9uIik7CisJCQkJCQkJICIgICBXSEVSRSBjLm9pZCA9 IGEuYXR0Y29sbGF0aW9uIEFORCB0Lm9pZCA9IChDQVNFIFdIRU4gYS5hdHRyZWFsdHlwaWQg PD4gMCBUSEVOIGEuYXR0cmVhbHR5cGlkIEVMU0UgYS5hdHR0eXBpZCBFTkQpIEFORCBhLmF0 dGNvbGxhdGlvbiA8PiB0LnR5cGNvbGxhdGlvbikgQVMgYXR0Y29sbGF0aW9uIik7CiAJCWF0 dGNvbGxfY29sID0gY29scysrOwogCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxMDAwMDApCiAJ CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiLFxuICBhLmF0dGlkZW50aXR5Iik7CkBA IC0xODc4LDYgKzE4NzksMTUgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hh ciAqc2NoZW1hbmFtZSwKIAkJCWF0dGNvbXByZXNzaW9uX2NvbCA9IGNvbHMrKzsKIAkJfQog CisJCS8qIGVuY3J5cHRpb24gaW5mbyAqLworCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNTAw MDAgJiYKKwkJCSFwc2V0LmhpZGVfY29sdW1uX2VuY3J5cHRpb24gJiYKKwkJCSh0YWJsZWlu Zm8ucmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OKSkKKwkJeworCQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIoJmJ1ZiwgIixcbiAgKFNFTEVDVCBjZWtuYW1lIEZST00gcGdfY29sZW5ja2V5 IGNlayBXSEVSRSBjZWsub2lkID0gYS5hdHRjZWspIEFTIGF0dGNla25hbWUiKTsKKwkJCWF0 dGNla25hbWVfY29sID0gY29scysrOworCQl9CisKIAkJLyogc3RhdHMgdGFyZ2V0LCBpZiBy ZWxldmFudCB0byByZWxraW5kICovCiAJCWlmICh0YWJsZWluZm8ucmVsa2luZCA9PSBSRUxL SU5EX1JFTEFUSU9OIHx8CiAJCQl0YWJsZWluZm8ucmVsa2luZCA9PSBSRUxLSU5EX0lOREVY IHx8CkBAIC0yMDAxLDYgKzIwMTEsOCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25z dCBjaGFyICpzY2hlbWFuYW1lLAogCQloZWFkZXJzW2NvbHMrK10gPSBnZXR0ZXh0X25vb3Ao IlN0b3JhZ2UiKTsKIAlpZiAoYXR0Y29tcHJlc3Npb25fY29sID49IDApCiAJCWhlYWRlcnNb Y29scysrXSA9IGdldHRleHRfbm9vcCgiQ29tcHJlc3Npb24iKTsKKwlpZiAoYXR0Y2VrbmFt ZV9jb2wgPj0gMCkKKwkJaGVhZGVyc1tjb2xzKytdID0gZ2V0dGV4dF9ub29wKCJFbmNyeXB0 aW9uIik7CiAJaWYgKGF0dHN0YXR0YXJnZXRfY29sID49IDApCiAJCWhlYWRlcnNbY29scysr XSA9IGdldHRleHRfbm9vcCgiU3RhdHMgdGFyZ2V0Iik7CiAJaWYgKGF0dGRlc2NyX2NvbCA+ PSAwKQpAQCAtMjA5Myw2ICsyMTA1LDE3IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNv bnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQkJCQkJICBmYWxzZSwgZmFsc2UpOwogCQl9CiAK KwkJLyogQ29sdW1uIGVuY3J5cHRpb24gKi8KKwkJaWYgKGF0dGNla25hbWVfY29sID49IDAp CisJCXsKKwkJCWlmICghUFFnZXRpc251bGwocmVzLCBpLCBhdHRjZWtuYW1lX2NvbCkpCisJ CQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCBhdHRjZWtu YW1lX2NvbCksCisJCQkJCQkJCSAgZmFsc2UsIGZhbHNlKTsKKwkJCWVsc2UKKwkJCQlwcmlu dFRhYmxlQWRkQ2VsbCgmY29udCwgIiIsCisJCQkJCQkJCSAgZmFsc2UsIGZhbHNlKTsKKwkJ fQorCiAJCS8qIFN0YXRpc3RpY3MgdGFyZ2V0LCBpZiB0aGUgcmVsa2luZCBzdXBwb3J0cyB0 aGlzIGZlYXR1cmUgKi8KIAkJaWYgKGF0dHN0YXR0YXJnZXRfY29sID49IDApCiAJCQlwcmlu dFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIGF0dHN0YXR0YXJnZXRf Y29sKSwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9oZWxwLmMgYi9zcmMvYmluL3BzcWwv aGVscC5jCmluZGV4IGY4Y2UxYTA3MDYuLjlmNGZjZTI2ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcHNxbC9oZWxwLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2hlbHAuYwpAQCAtMTk1LDYgKzE5 NSw3IEBAIHNsYXNoVXNhZ2UodW5zaWduZWQgc2hvcnQgaW50IHBhZ2VyKQogCUhFTFAwKCIg IFxcZyBbKE9QVElPTlMpXSBbRklMRV0gIGV4ZWN1dGUgcXVlcnkgKGFuZCBzZW5kIHJlc3Vs dCB0byBmaWxlIG9yIHxwaXBlKTtcbiIKIAkJICAiICAgICAgICAgICAgICAgICAgICAgICAg IFxcZyB3aXRoIG5vIGFyZ3VtZW50cyBpcyBlcXVpdmFsZW50IHRvIGEgc2VtaWNvbG9uXG4i KTsKIAlIRUxQMCgiICBcXGdkZXNjICAgICAgICAgICAgICAgICBkZXNjcmliZSByZXN1bHQg b2YgcXVlcnksIHdpdGhvdXQgZXhlY3V0aW5nIGl0XG4iKTsKKwlIRUxQMCgiICBcXGdlbmNy IFtQQVJBTV0uLi4gICAgICBleGVjdXRlIHF1ZXJ5LCB3aXRoIHN1cHBvcnQgZm9yIHBhcmFt ZXRlciBlbmNyeXB0aW9uXG4iKTsKIAlIRUxQMCgiICBcXGdleGVjICAgICAgICAgICAgICAg ICBleGVjdXRlIHF1ZXJ5LCB0aGVuIGV4ZWN1dGUgZWFjaCB2YWx1ZSBpbiBpdHMgcmVzdWx0 XG4iKTsKIAlIRUxQMCgiICBcXGdzZXQgW1BSRUZJWF0gICAgICAgICBleGVjdXRlIHF1ZXJ5 IGFuZCBzdG9yZSByZXN1bHQgaW4gcHNxbCB2YXJpYWJsZXNcbiIpOwogCUhFTFAwKCIgIFxc Z3ggWyhPUFRJT05TKV0gW0ZJTEVdIGFzIFxcZywgYnV0IGZvcmNlcyBleHBhbmRlZCBvdXRw dXQgbW9kZVxuIik7CkBAIC00MTIsNiArNDEzLDggQEAgaGVscFZhcmlhYmxlcyh1bnNpZ25l ZCBzaG9ydCBpbnQgcGFnZXIpCiAJCSAgIiAgICB0cnVlIGlmIGxhc3QgcXVlcnkgZmFpbGVk LCBlbHNlIGZhbHNlXG4iKTsKIAlIRUxQMCgiICBGRVRDSF9DT1VOVFxuIgogCQkgICIgICAg dGhlIG51bWJlciBvZiByZXN1bHQgcm93cyB0byBmZXRjaCBhbmQgZGlzcGxheSBhdCBhIHRp bWUgKDAgPSB1bmxpbWl0ZWQpXG4iKTsKKwlIRUxQMCgiICBISURFX0NPTFVNTl9FTkNSWVBU SU9OXG4iCisJCSAgIiAgICBpZiBzZXQsIGNvbHVtbiBlbmNyeXB0aW9uIGRldGFpbHMgYXJl IG5vdCBkaXNwbGF5ZWRcbiIpOwogCUhFTFAwKCIgIEhJREVfVEFCTEVBTVxuIgogCQkgICIg ICAgaWYgc2V0LCB0YWJsZSBhY2Nlc3MgbWV0aG9kcyBhcmUgbm90IGRpc3BsYXllZFxuIik7 CiAJSEVMUDAoIiAgSElERV9UT0FTVF9DT01QUkVTU0lPTlxuIgpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wc3FsL3NldHRpbmdzLmggYi9zcmMvYmluL3BzcWwvc2V0dGluZ3MuaAppbmRleCAy Mzk5Y2ZmYTNmLi42MzY3MjlkZjFkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvc2V0dGlu Z3MuaAorKysgYi9zcmMvYmluL3BzcWwvc2V0dGluZ3MuaApAQCAtOTUsNiArOTUsMTAgQEAg dHlwZWRlZiBzdHJ1Y3QgX3BzcWxTZXR0aW5ncwogCiAJY2hhcgkgICAqZ3NldF9wcmVmaXg7 CS8qIG9uZS1zaG90IHByZWZpeCBhcmd1bWVudCBmb3IgXGdzZXQgKi8KIAlib29sCQlnZGVz Y19mbGFnOwkJLyogb25lLXNob3QgcmVxdWVzdCB0byBkZXNjcmliZSBxdWVyeSByZXN1bHQg Ki8KKwlib29sCQlnZW5jcl9mbGFnOwkJLyogb25lLXNob3QgcmVxdWVzdCB0byBzZW5kIHF1 ZXJ5IHdpdGggc3VwcG9ydAorCQkJCQkJCQkgKiBmb3IgcGFyYW1ldGVyIGVuY3J5cHRpb24g Ki8KKwlpbnQJCQludW1fcGFyYW1zOwkJLyogbnVtYmVyIG9mIHF1ZXJ5IHBhcmFtZXRlcnMg Ki8KKwljaGFyCSAgKipwYXJhbXM7CQkJLyogcXVlcnkgcGFyYW1ldGVycyAqLwogCWJvb2wJ CWdleGVjX2ZsYWc7CQkvKiBvbmUtc2hvdCByZXF1ZXN0IHRvIGV4ZWN1dGUgcXVlcnkgcmVz dWx0ICovCiAJYm9vbAkJY3Jvc3N0YWJfZmxhZzsJLyogb25lLXNob3QgcmVxdWVzdCB0byBj cm9zc3RhYiByZXN1bHQgKi8KIAljaGFyCSAgICpjdHZfYXJnc1s0XTsJLyogXGNyb3NzdGFi dmlldyBhcmd1bWVudHMgKi8KQEAgLTEzNCw2ICsxMzgsNyBAQCB0eXBlZGVmIHN0cnVjdCBf cHNxbFNldHRpbmdzCiAJYm9vbAkJcXVpZXQ7CiAJYm9vbAkJc2luZ2xlbGluZTsKIAlib29s CQlzaW5nbGVzdGVwOworCWJvb2wJCWhpZGVfY29sdW1uX2VuY3J5cHRpb247CiAJYm9vbAkJ aGlkZV9jb21wcmVzc2lvbjsKIAlib29sCQloaWRlX3RhYmxlYW07CiAJaW50CQkJZmV0Y2hf Y291bnQ7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvc3RhcnR1cC5jIGIvc3JjL2Jpbi9w c3FsL3N0YXJ0dXAuYwppbmRleCA3YzJmNTU1ZjE1Li5jOTU1MjIyYTUwIDEwMDY0NAotLS0g YS9zcmMvYmluL3BzcWwvc3RhcnR1cC5jCisrKyBiL3NyYy9iaW4vcHNxbC9zdGFydHVwLmMK QEAgLTExODgsNiArMTE4OCwxMyBAQCBoaWRlX2NvbXByZXNzaW9uX2hvb2soY29uc3QgY2hh ciAqbmV3dmFsKQogCQkJCQkJCSAmcHNldC5oaWRlX2NvbXByZXNzaW9uKTsKIH0KIAorc3Rh dGljIGJvb2wKK2hpZGVfY29sdW1uX2VuY3J5cHRpb25faG9vayhjb25zdCBjaGFyICpuZXd2 YWwpCit7CisJcmV0dXJuIFBhcnNlVmFyaWFibGVCb29sKG5ld3ZhbCwgIkhJREVfQ09MVU1O X0VOQ1JZUFRJT04iLAorCQkJCQkJCSAmcHNldC5oaWRlX2NvbHVtbl9lbmNyeXB0aW9uKTsK K30KKwogc3RhdGljIGJvb2wKIGhpZGVfdGFibGVhbV9ob29rKGNvbnN0IGNoYXIgKm5ld3Zh bCkKIHsKQEAgLTEyNTksNiArMTI2Niw5IEBAIEVzdGFibGlzaFZhcmlhYmxlU3BhY2Uodm9p ZCkKIAlTZXRWYXJpYWJsZUhvb2tzKHBzZXQudmFycywgIlNIT1dfQ09OVEVYVCIsCiAJCQkJ CSBzaG93X2NvbnRleHRfc3Vic3RpdHV0ZV9ob29rLAogCQkJCQkgc2hvd19jb250ZXh0X2hv b2spOworCVNldFZhcmlhYmxlSG9va3MocHNldC52YXJzLCAiSElERV9DT0xVTU5fRU5DUllQ VElPTiIsCisJCQkJCSBib29sX3N1YnN0aXR1dGVfaG9vaywKKwkJCQkJIGhpZGVfY29sdW1u X2VuY3J5cHRpb25faG9vayk7CiAJU2V0VmFyaWFibGVIb29rcyhwc2V0LnZhcnMsICJISURF X1RPQVNUX0NPTVBSRVNTSU9OIiwKIAkJCQkJIGJvb2xfc3Vic3RpdHV0ZV9ob29rLAogCQkJ CQkgaGlkZV9jb21wcmVzc2lvbl9ob29rKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYwppbmRleCBiZDQ0 YTFkNTVkLi5iNGFlODNhNTUxIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBs ZXRlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCkBAIC0xNjkyLDcgKzE2 OTIsNyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBp bnQgZW5kKQogCQkiXFxlY2hvIiwgIlxcZWRpdCIsICJcXGVmIiwgIlxcZWxpZiIsICJcXGVs c2UiLCAiXFxlbmNvZGluZyIsCiAJCSJcXGVuZGlmIiwgIlxcZXJydmVyYm9zZSIsICJcXGV2 IiwKIAkJIlxcZiIsCi0JCSJcXGciLCAiXFxnZGVzYyIsICJcXGdldGVudiIsICJcXGdleGVj IiwgIlxcZ3NldCIsICJcXGd4IiwKKwkJIlxcZyIsICJcXGdkZXNjIiwgIlxcZ2VuY3IiLCAi XFxnZXRlbnYiLCAiXFxnZXhlYyIsICJcXGdzZXQiLCAiXFxneCIsCiAJCSJcXGhlbHAiLCAi XFxodG1sIiwKIAkJIlxcaWYiLCAiXFxpbmNsdWRlIiwgIlxcaW5jbHVkZV9yZWxhdGl2ZSIs ICJcXGlyIiwKIAkJIlxcbGlzdCIsICJcXGxvX2ltcG9ydCIsICJcXGxvX2V4cG9ydCIsICJc XGxvX2xpc3QiLCAiXFxsb191bmxpbmsiLApkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMv bGlicHEvTWFrZWZpbGUgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9NYWtlZmlsZQppbmRleCBi NWZkNzJhNGFjLi41YTA2NWViODBiIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJw cS9NYWtlZmlsZQorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9NYWtlZmlsZQpAQCAtNTQs NiArNTQsNyBAQCBlbmRpZgogCiBpZmVxICgkKHdpdGhfc3NsKSxvcGVuc3NsKQogT0JKUyAr PSBcCisJZmUtZW5jcnlwdC1vcGVuc3NsLm8gXAogCWZlLXNlY3VyZS1vcGVuc3NsLm8KIGVu ZGlmCiAKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2V4cG9ydHMudHh0IGIv c3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQKaW5kZXggZThiY2M4ODM3MC4uZmFi YWQzOGFjMCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQK KysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQKQEAgLTE4NiwzICsxODYs NyBAQCBQUXBpcGVsaW5lU3RhdHVzICAgICAgICAgIDE4MwogUFFzZXRUcmFjZUZsYWdzICAg ICAgICAgICAxODQKIFBRbWJsZW5Cb3VuZGVkICAgICAgICAgICAgMTg1CiBQUXNlbmRGbHVz aFJlcXVlc3QgICAgICAgIDE4NgorUFFleGVjUHJlcGFyZWQyICAgICAgICAgICAxODcKK1BR c2VuZFF1ZXJ5UHJlcGFyZWQyICAgICAgMTg4CitQUWZpc2VuY3J5cHRlZCAgICAgICAgICAg IDE4OQorUFFwYXJhbWlzZW5jcnlwdGVkICAgICAgICAxOTAKZGlmZiAtLWdpdCBhL3NyYy9p bnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2Zl LWNvbm5lY3QuYwppbmRleCA2ZTkzNmJiZmYzLi42NTQ3Njg1ODZmIDEwMDY0NAotLS0gYS9z cmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMKKysrIGIvc3JjL2ludGVyZmFjZXMv bGlicHEvZmUtY29ubmVjdC5jCkBAIC0zNDQsNiArMzQ0LDEwIEBAIHN0YXRpYyBjb25zdCBp bnRlcm5hbFBRY29ubmluZm9PcHRpb24gUFFjb25uaW5mb09wdGlvbnNbXSA9IHsKIAkJIlRh cmdldC1TZXNzaW9uLUF0dHJzIiwgIiIsIDE1LCAvKiBzaXplb2YoInByZWZlci1zdGFuZGJ5 IikgPSAxNSAqLwogCW9mZnNldG9mKHN0cnVjdCBwZ19jb25uLCB0YXJnZXRfc2Vzc2lvbl9h dHRycyl9LAogCisJeyJjbWtsb29rdXAiLCAiUEdDTUtMT09LVVAiLCAiIiwgTlVMTCwKKwkJ IkNNSy1Mb29rdXAiLCAiIiwgNjQsCisJb2Zmc2V0b2Yoc3RydWN0IHBnX2Nvbm4sIGNta2xv b2t1cCl9LAorCiAJLyogVGVybWluYXRpbmcgZW50cnkgLS0tIE1VU1QgQkUgTEFTVCAqLwog CXtOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLAogCU5VTEwsIE5VTEwsIDB9CkBAIC00MTU1LDYg KzQxNTksMjIgQEAgZnJlZVBHY29ubihQR2Nvbm4gKmNvbm4pCiAJCWZyZWUoY29ubi0+Z3Nz bGliKTsKIAlpZiAoY29ubi0+Y29ubmlwKQogCQlmcmVlKGNvbm4tPmNvbm5pcCk7CisJZnJl ZShjb25uLT5jbWtsb29rdXApOworCWZvciAoaW50IGkgPSAwOyBpIDwgY29ubi0+bmNta3M7 IGkrKykKKwl7CisJCWZyZWUoY29ubi0+Y21rc1tpXS5jbWtuYW1lKTsKKwkJZnJlZShjb25u LT5jbWtzW2ldLmNta3JlYWxtKTsKKwl9CisJZnJlZShjb25uLT5jbWtzKTsKKwlmb3IgKGlu dCBpID0gMDsgaSA8IGNvbm4tPm5jZWtzOyBpKyspCisJeworCQlpZiAoY29ubi0+Y2Vrc1tp XS5jZWtkYXRhKQorCQl7CisJCQlleHBsaWNpdF9iemVybyhjb25uLT5jZWtzW2ldLmNla2Rh dGEsIGNvbm4tPmNla3NbaV0uY2VrZGF0YWxlbik7CisJCQlmcmVlKGNvbm4tPmNla3NbaV0u Y2VrZGF0YSk7CisJCX0KKwl9CisJZnJlZShjb25uLT5jZWtzKTsKIAkvKiBOb3RlIHRoYXQg Y29ubi0+UGZkZWJ1ZyBpcyBub3Qgb3VycyB0byBjbG9zZSBvciBmcmVlICovCiAJaWYgKGNv bm4tPndyaXRlX2Vycl9tc2cpCiAJCWZyZWUoY29ubi0+d3JpdGVfZXJyX21zZyk7CmRpZmYg LS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1lbmNyeXB0LW9wZW5zc2wuYyBiL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWVuY3J5cHQtb3BlbnNzbC5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjdlYmY5NjNhN2MKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1lbmNyeXB0LW9wZW5zc2wuYwpAQCAtMCwwICsx LDc1MyBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZmUtZW5jcnlwdC1vcGVu c3NsLmMKKyAqCSAgZW5jcnlwdGlvbiBzdXBwb3J0IHVzaW5nIE9wZW5TU0wKKyAqCisgKgor ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjIsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJl Z2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqCisgKiBJREVO VElGSUNBVElPTgorICoJICBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1lbmNyeXB0LW9wZW5z c2wuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0 Z3Jlc19mZS5oIgorCisjaW5jbHVkZSAiZmUtZW5jcnlwdC5oIgorI2luY2x1ZGUgImxpYnBx LWludC5oIgorCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xlbmNrZXkuaCIKKyNpbmNsdWRl ICJwb3J0L3BnX2Jzd2FwLmgiCisKKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorCisKKyNp ZmRlZiBURVNUX0VOQ1JZUFQKKworLyoKKyAqIFRlc3QgZGF0YSBmcm9tCisgKiA8aHR0cHM6 Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9kcmFmdC1tY2dyZXctYWVhZC1hZXMt Y2JjLWhtYWMtc2hhMi0wNSNzZWN0aW9uLTU+CisgKi8KKworLyoKKyAqIFRoZSBkaWZmZXJl bnQgdGVzdCBjYXNlcyBqdXN0IHVzZSBkaWZmZXJlbnQgcHJlZml4ZXMgb2YgSywgc28gb25l IGNvbnN0YW50CisgKiBpcyBlbm91Z2ggaGVyZS4KKyAqLworc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgS1tdID0geworCTB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDUs IDB4MDYsIDB4MDcsIDB4MDgsIDB4MDksIDB4MGEsIDB4MGIsIDB4MGMsIDB4MGQsIDB4MGUs IDB4MGYsCisJMHgxMCwgMHgxMSwgMHgxMiwgMHgxMywgMHgxNCwgMHgxNSwgMHgxNiwgMHgx NywgMHgxOCwgMHgxOSwgMHgxYSwgMHgxYiwgMHgxYywgMHgxZCwgMHgxZSwgMHgxZiwKKwkw eDIwLCAweDIxLCAweDIyLCAweDIzLCAweDI0LCAweDI1LCAweDI2LCAweDI3LCAweDI4LCAw eDI5LCAweDJhLCAweDJiLCAweDJjLCAweDJkLCAweDJlLCAweDJmLAorCTB4MzAsIDB4MzEs IDB4MzIsIDB4MzMsIDB4MzQsIDB4MzUsIDB4MzYsIDB4MzcsIDB4MzgsIDB4MzksIDB4M2Es IDB4M2IsIDB4M2MsIDB4M2QsIDB4M2UsIDB4M2YsCit9OworCitzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBQW10gPSB7CisJMHg0MSwgMHgyMCwgMHg2MywgMHg2OSwgMHg3MCwgMHg2 OCwgMHg2NSwgMHg3MiwgMHgyMCwgMHg3MywgMHg3OSwgMHg3MywgMHg3NCwgMHg2NSwgMHg2 ZCwgMHgyMCwKKwkweDZkLCAweDc1LCAweDczLCAweDc0LCAweDIwLCAweDZlLCAweDZmLCAw eDc0LCAweDIwLCAweDYyLCAweDY1LCAweDIwLCAweDcyLCAweDY1LCAweDcxLCAweDc1LAor CTB4NjksIDB4NzIsIDB4NjUsIDB4NjQsIDB4MjAsIDB4NzQsIDB4NmYsIDB4MjAsIDB4NjIs IDB4NjUsIDB4MjAsIDB4NzMsIDB4NjUsIDB4NjMsIDB4NzIsIDB4NjUsCisJMHg3NCwgMHgy YywgMHgyMCwgMHg2MSwgMHg2ZSwgMHg2NCwgMHgyMCwgMHg2OSwgMHg3NCwgMHgyMCwgMHg2 ZCwgMHg3NSwgMHg3MywgMHg3NCwgMHgyMCwgMHg2MiwKKwkweDY1LCAweDIwLCAweDYxLCAw eDYyLCAweDZjLCAweDY1LCAweDIwLCAweDc0LCAweDZmLCAweDIwLCAweDY2LCAweDYxLCAw eDZjLCAweDZjLCAweDIwLCAweDY5LAorCTB4NmUsIDB4NzQsIDB4NmYsIDB4MjAsIDB4NzQs IDB4NjgsIDB4NjUsIDB4MjAsIDB4NjgsIDB4NjEsIDB4NmUsIDB4NjQsIDB4NzMsIDB4MjAs IDB4NmYsIDB4NjYsCisJMHgyMCwgMHg3NCwgMHg2OCwgMHg2NSwgMHgyMCwgMHg2NSwgMHg2 ZSwgMHg2NSwgMHg2ZCwgMHg3OSwgMHgyMCwgMHg3NywgMHg2OSwgMHg3NCwgMHg2OCwgMHg2 ZiwKKwkweDc1LCAweDc0LCAweDIwLCAweDY5LCAweDZlLCAweDYzLCAweDZmLCAweDZlLCAw eDc2LCAweDY1LCAweDZlLCAweDY5LCAweDY1LCAweDZlLCAweDYzLCAweDY1LAorfTsKKwor c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgdGVzdF9JVltdID0geworCTB4MWEsIDB4ZjMs IDB4OGMsIDB4MmQsIDB4YzIsIDB4YjksIDB4NmYsIDB4ZmQsIDB4ZDgsIDB4NjYsIDB4OTQs IDB4MDksIDB4MjMsIDB4NDEsIDB4YmMsIDB4MDQsCit9OworCitzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciB0ZXN0X0FbXSA9IHsKKwkweDU0LCAweDY4LCAweDY1LCAweDIwLCAweDcz LCAweDY1LCAweDYzLCAweDZmLCAweDZlLCAweDY0LCAweDIwLCAweDcwLCAweDcyLCAweDY5 LCAweDZlLCAweDYzLAorCTB4NjksIDB4NzAsIDB4NmMsIDB4NjUsIDB4MjAsIDB4NmYsIDB4 NjYsIDB4MjAsIDB4NDEsIDB4NzUsIDB4NjcsIDB4NzUsIDB4NzMsIDB4NzQsIDB4NjUsIDB4 MjAsCisJMHg0YiwgMHg2NSwgMHg3MiwgMHg2MywgMHg2YiwgMHg2OCwgMHg2ZiwgMHg2Niwg MHg2NiwgMHg3MywKK307CisKKworI2RlZmluZSBsaWJwcV9nZXR0ZXh0KHgpICh4KQorCisj ZW5kaWYJCQkJCQkJLyogVEVTVF9FTkNSWVBUICovCisKKwordW5zaWduZWQgY2hhciAqCitk ZWNyeXB0X2Nla19mcm9tX2ZpbGUoUEdjb25uICpjb25uLCBGSUxFICpmcCwgaW50IGNta2Fs ZywKKwkJCQkJICBpbnQgZnJvbWxlbiwgY29uc3QgdW5zaWduZWQgY2hhciAqZnJvbSwKKwkJ CQkJICBpbnQgKnRvbGVuKQoreworCWNvbnN0IEVWUF9NRCAqbWQgPSBOVUxMOworCUVWUF9Q S0VZICAgKmtleSA9IE5VTEw7CisJUlNBCQkgICAqcnNhID0gTlVMTDsKKwlFVlBfUEtFWV9D VFggKmN0eCA9IE5VTEw7CisJdW5zaWduZWQgY2hhciAqb3V0ID0gTlVMTDsKKwlzaXplX3QJ CW91dGxlbjsKKworCXN3aXRjaCAoY21rYWxnKQorCXsKKwkJY2FzZSBQR19DTUtfUlNBRVNf T0FFUF9TSEFfMToKKwkJCW1kID0gRVZQX3NoYTEoKTsKKwkJCWJyZWFrOworCQljYXNlIFBH X0NNS19SU0FFU19PQUVQX1NIQV8yNTY6CisJCQltZCA9IEVWUF9zaGEyNTYoKTsKKwkJCWJy ZWFrOworCQlkZWZhdWx0OgorCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVz c2FnZSwKKwkJCQkJCQkgIGxpYnBxX2dldHRleHQoInVuc3VwcG9ydGVkIENNSyBhbGdvcml0 aG0gSUQ6ICVkXG4iKSwgY21rYWxnKTsKKwkJCWdvdG8gZmFpbDsKKwl9CisKKwlyc2EgPSBS U0FfbmV3KCk7CisJaWYgKCFyc2EpCisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ ZXJyb3JNZXNzYWdlLAorCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBub3QgYWxsb2Nh dGUgUlNBIHN0cnVjdHVyZTogJXNcbiIpLAorCQkJCQkJICBFUlJfcmVhc29uX2Vycm9yX3N0 cmluZyhFUlJfZ2V0X2Vycm9yKCkpKTsKKwkJZ290byBmYWlsOworCX0KKwlyc2EgPSBQRU1f cmVhZF9SU0FQcml2YXRlS2V5KGZwLCAmcnNhLCBOVUxMLCBOVUxMKTsKKwlpZiAoIXJzYSkK Kwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkg IGxpYnBxX2dldHRleHQoImNvdWxkIG5vdCByZWFkIFJTQSBwcml2YXRlIGtleTogJXNcbiIp LAorCQkJCQkJICBFUlJfcmVhc29uX2Vycm9yX3N0cmluZyhFUlJfZ2V0X2Vycm9yKCkpKTsK KwkJZ290byBmYWlsOworCX0KKworCWtleSA9IEVWUF9QS0VZX25ldygpOworCWlmICgha2V5 KQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJ CSAgbGlicHFfZ2V0dGV4dCgiY291bGQgbm90IGFsbG9jYXRlIHByaXZhdGUga2V5IHN0cnVj dHVyZTogJXNcbiIpLAorCQkJCQkJICBFUlJfcmVhc29uX2Vycm9yX3N0cmluZyhFUlJfZ2V0 X2Vycm9yKCkpKTsKKwkJZ290byBmYWlsOworCX0KKworCWlmICghRVZQX1BLRVlfYXNzaWdu X1JTQShrZXksIHJzYSkpCisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JN ZXNzYWdlLAorCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBub3QgYXNzaWduIHByaXZh dGUga2V5OiAlc1xuIiksCisJCQkJCQkgIEVSUl9yZWFzb25fZXJyb3Jfc3RyaW5nKEVSUl9n ZXRfZXJyb3IoKSkpOworCQlnb3RvIGZhaWw7CisJfQorCisJY3R4ID0gRVZQX1BLRVlfQ1RY X25ldyhrZXksIE5VTEwpOworCWlmICghY3R4KQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXIo JmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiY291bGQgbm90 IGFsbG9jYXRlIHB1YmxpYyBrZXkgYWxnb3JpdGhtIGNvbnRleHQ6ICVzXG4iKSwKKwkJCQkJ CSAgRVJSX3JlYXNvbl9lcnJvcl9zdHJpbmcoRVJSX2dldF9lcnJvcigpKSk7CisJCWdvdG8g ZmFpbDsKKwl9CisKKwlpZiAoRVZQX1BLRVlfZGVjcnlwdF9pbml0KGN0eCkgPD0gMCkKKwl7 CisJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkgIGxp YnBxX2dldHRleHQoImRlY3J5cHRpb24gaW5pdGlhbGl6YXRpb24gZmFpbGVkOiAlc1xuIiks CisJCQkJCQkgIEVSUl9yZWFzb25fZXJyb3Jfc3RyaW5nKEVSUl9nZXRfZXJyb3IoKSkpOwor CQlnb3RvIGZhaWw7CisJfQorCisJaWYgKEVWUF9QS0VZX0NUWF9zZXRfcnNhX3BhZGRpbmco Y3R4LCBSU0FfUEtDUzFfT0FFUF9QQURESU5HKSA8PSAwIHx8CisJCUVWUF9QS0VZX0NUWF9z ZXRfcnNhX21nZjFfbWQoY3R4LCBtZCkgPD0gMCB8fAorCQlFVlBfUEtFWV9DVFhfc2V0X3Jz YV9vYWVwX21kKGN0eCwgbWQpIDw9IDApCisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29u bi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBub3Qgc2V0 IFJTQSBwYXJhbWV0ZXI6ICVzXG4iKSwKKwkJCQkJCSAgRVJSX3JlYXNvbl9lcnJvcl9zdHJp bmcoRVJSX2dldF9lcnJvcigpKSk7CisJCWdvdG8gZmFpbDsKKwl9CisKKwlpZiAoRVZQX1BL RVlfZGVjcnlwdChjdHgsIE5VTEwsICZvdXRsZW4sIGZyb20sIGZyb21sZW4pIDw9IDApCisJ eworCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJICBs aWJwcV9nZXR0ZXh0KCJSU0EgZGVjcnlwdGlvbiBmYWlsZWQ6ICVzXG4iKSwKKwkJCQkJCSAg RVJSX3JlYXNvbl9lcnJvcl9zdHJpbmcoRVJSX2dldF9lcnJvcigpKSk7CisJCWdvdG8gZmFp bDsKKwl9CisKKwlvdXQgPSBtYWxsb2Mob3V0bGVuKTsKKwlpZiAoIW91dCkKKwl7CisJCWFw cGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkgIGxpYnBxX2dl dHRleHQoIm91dCBvZiBtZW1vcnlcbiIpKTsKKwkJZ290byBmYWlsOworCX0KKworCWlmIChF VlBfUEtFWV9kZWNyeXB0KGN0eCwgb3V0LCAmb3V0bGVuLCBmcm9tLCBmcm9tbGVuKSA8PSAw KQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJ CSAgbGlicHFfZ2V0dGV4dCgiUlNBIGRlY3J5cHRpb24gZmFpbGVkOiAlc1xuIiksCisJCQkJ CQkgIEVSUl9yZWFzb25fZXJyb3Jfc3RyaW5nKEVSUl9nZXRfZXJyb3IoKSkpOworCQlmcmVl KG91dCk7CisJCW91dCA9IE5VTEw7CisJCWdvdG8gZmFpbDsKKwl9CisKKwkqdG9sZW4gPSBv dXRsZW47CisKK2ZhaWw6CisJRVZQX1BLRVlfQ1RYX2ZyZWUoY3R4KTsKKwlFVlBfUEtFWV9m cmVlKGtleSk7CisKKwlyZXR1cm4gb3V0OworfQorCitzdGF0aWMgY29uc3QgRVZQX0NJUEhF UiAqCitwZ19jZWthbGdfdG9fb3BlbnNzbF9jaXBoZXIoaW50IGNla2FsZykKK3sKKwljb25z dCBFVlBfQ0lQSEVSICpjaXBoZXI7CisKKwlzd2l0Y2ggKGNla2FsZykKKwl7CisJCWNhc2Ug UEdfQ0VLX0FFQURfQUVTXzEyOF9DQkNfSE1BQ19TSEFfMjU2OgorCQkJY2lwaGVyID0gRVZQ X2Flc18xMjhfY2JjKCk7CisJCQlicmVhazsKKwkJY2FzZSBQR19DRUtfQUVBRF9BRVNfMTky X0NCQ19ITUFDX1NIQV8zODQ6CisJCQljaXBoZXIgPSBFVlBfYWVzXzE5Ml9jYmMoKTsKKwkJ CWJyZWFrOworCQljYXNlIFBHX0NFS19BRUFEX0FFU18yNTZfQ0JDX0hNQUNfU0hBXzM4NDoK KwkJY2FzZSBQR19DRUtfQUVBRF9BRVNfMjU2X0NCQ19ITUFDX1NIQV81MTI6CisJCQljaXBo ZXIgPSBFVlBfYWVzXzI1Nl9jYmMoKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJY2lw aGVyID0gTlVMTDsKKwl9CisKKwlyZXR1cm4gY2lwaGVyOworfQorCitzdGF0aWMgY29uc3Qg RVZQX01EICoKK3BnX2Nla2FsZ190b19vcGVuc3NsX21kKGludCBjZWthbGcpCit7CisJY29u c3QgRVZQX01EICptZDsKKworCXN3aXRjaCAoY2VrYWxnKQorCXsKKwkJY2FzZSBQR19DRUtf QUVBRF9BRVNfMTI4X0NCQ19ITUFDX1NIQV8yNTY6CisJCQltZCA9IEVWUF9zaGEyNTYoKTsK KwkJCWJyZWFrOworCQljYXNlIFBHX0NFS19BRUFEX0FFU18xOTJfQ0JDX0hNQUNfU0hBXzM4 NDoKKwkJY2FzZSBQR19DRUtfQUVBRF9BRVNfMjU2X0NCQ19ITUFDX1NIQV8zODQ6CisJCQlt ZCA9IEVWUF9zaGEzODQoKTsKKwkJCWJyZWFrOworCQljYXNlIFBHX0NFS19BRUFEX0FFU18y NTZfQ0JDX0hNQUNfU0hBXzUxMjoKKwkJCW1kID0gRVZQX3NoYTUxMigpOworCQkJYnJlYWs7 CisJCWRlZmF1bHQ6CisJCQltZCA9IE5VTEw7CisJfQorCisJcmV0dXJuIG1kOworfQorCitz dGF0aWMgaW50CittZF9rZXlfbGVuZ3RoKGNvbnN0IEVWUF9NRCAqbWQpCit7CisJaWYgKG1k ID09IEVWUF9zaGEyNTYoKSkKKwkJcmV0dXJuIDE2OworCWVsc2UgaWYgKG1kID09IEVWUF9z aGEzODQoKSkKKwkJcmV0dXJuIDI0OworCWVsc2UgaWYgKG1kID09IEVWUF9zaGE1MTIoKSkK KwkJcmV0dXJuIDMyOworCWVsc2UKKwkJcmV0dXJuIC0xOworfQorCitzdGF0aWMgaW50Citt ZF9oYXNoX2xlbmd0aChjb25zdCBFVlBfTUQgKm1kKQoreworCWlmIChtZCA9PSBFVlBfc2hh MjU2KCkpCisJCXJldHVybiAzMjsKKwllbHNlIGlmIChtZCA9PSBFVlBfc2hhMzg0KCkpCisJ CXJldHVybiA0ODsKKwllbHNlIGlmIChtZCA9PSBFVlBfc2hhNTEyKCkpCisJCXJldHVybiA2 NDsKKwllbHNlCisJCXJldHVybiAtMTsKK30KKworI2lmbmRlZiBURVNUX0VOQ1JZUFQKKyNk ZWZpbmUgUEdfQURfTEVOIDQKKyNlbHNlCisjZGVmaW5lIFBHX0FEX0xFTiBzaXplb2YodGVz dF9BKQorI2VuZGlmCisKK3N0YXRpYyBib29sCitnZXRfbWVzc2FnZV9hdXRoX3RhZyhjb25z dCBFVlBfTUQgKm1kLAorCQkJCQkgY29uc3QgdW5zaWduZWQgY2hhciAqbWFjX2tleSwgaW50 IG1hY19rZXlfbGVuLAorCQkJCQkgY29uc3QgdW5zaWduZWQgY2hhciAqZW5jciwgaW50IGVu Y3JsZW4sCisJCQkJCSBpbnQgY2VrYWxnLAorCQkJCQkgdW5zaWduZWQgY2hhciAqbWRfdmFs dWUsIHNpemVfdCAqbWRfbGVuX3AsCisJCQkJCSBjb25zdCBjaGFyICoqZXJybXNncCkKK3sK KwlzdGF0aWMgY2hhcgltc2didWZbMTAyNF07CisJRVZQX01EX0NUWCAqZXZwX21kX2N0eCA9 IE5VTEw7CisJRVZQX1BLRVkgICAqcGtleSA9IE5VTEw7CisJc2l6ZV90CQlidWZzaXplOwor CXVuc2lnbmVkIGNoYXIgKmJ1ZiA9IE5VTEw7CisJYm9vbAkJcmVzdWx0ID0gZmFsc2U7CisK KwlldnBfbWRfY3R4ID0gRVZQX01EX0NUWF9uZXcoKTsKKworCXBrZXkgPSBFVlBfUEtFWV9u ZXdfcmF3X3ByaXZhdGVfa2V5KEVWUF9QS0VZX0hNQUMsIE5VTEwsIG1hY19rZXksIG1hY19r ZXlfbGVuKTsKKwlpZiAoIXBrZXkpCisJeworCQlzbnByaW50Zihtc2didWYsIHNpemVvZiht c2didWYpLAorCQkJCSBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBub3QgYWxsb2NhdGUga2V5IGZv ciBITUFDOiAlcyIpLAorCQkJCSBFUlJfcmVhc29uX2Vycm9yX3N0cmluZyhFUlJfZ2V0X2Vy cm9yKCkpKTsKKwkJKmVycm1zZ3AgPSBtc2didWY7CisJCWdvdG8gZmFpbDsKKwl9CisKKwli dWZzaXplID0gUEdfQURfTEVOICsgZW5jcmxlbiArIHNpemVvZihpbnQ2NCk7CisJYnVmID0g bWFsbG9jKGJ1ZnNpemUpOworCWlmICghYnVmKQorCXsKKwkJKmVycm1zZ3AgPSBsaWJwcV9n ZXR0ZXh0KCJvdXQgb3V0IG1lbW9yeSIpOworCQlnb3RvIGZhaWw7CisJfQorI2lmbmRlZiBU RVNUX0VOQ1JZUFQKKwlidWZbMF0gPSAnUCc7CisJYnVmWzFdID0gJ0cnOworCSooaW50MTYg KikgKGJ1ZiArIDIpID0gcGdfaHRvbjE2KGNla2FsZyk7CisjZWxzZQorCW1lbWNweShidWYs IHRlc3RfQSwgc2l6ZW9mKHRlc3RfQSkpOworI2VuZGlmCisJbWVtY3B5KGJ1ZiArIFBHX0FE X0xFTiwgZW5jciwgZW5jcmxlbik7CisJKihpbnQ2NCAqKSAoYnVmICsgUEdfQURfTEVOICsg ZW5jcmxlbikgPSBwZ19odG9uNjQoUEdfQURfTEVOICogOCk7CisKKwlpZiAoIUVWUF9EaWdl c3RTaWduSW5pdChldnBfbWRfY3R4LCBOVUxMLCBtZCwgTlVMTCwgcGtleSkpCisJeworCQlz bnByaW50Zihtc2didWYsIHNpemVvZihtc2didWYpLAorCQkJCSBsaWJwcV9nZXR0ZXh0KCJk aWdlc3QgaW5pdGlhbGl6YXRpb24gZmFpbGVkOiAlcyIpLAorCQkJCSBFUlJfcmVhc29uX2Vy cm9yX3N0cmluZyhFUlJfZ2V0X2Vycm9yKCkpKTsKKwkJKmVycm1zZ3AgPSBtc2didWY7CisJ CWdvdG8gZmFpbDsKKwl9CisKKwlpZiAoIUVWUF9EaWdlc3RTaWduVXBkYXRlKGV2cF9tZF9j dHgsIGJ1ZiwgYnVmc2l6ZSkpCisJeworCQlzbnByaW50Zihtc2didWYsIHNpemVvZihtc2di dWYpLAorCQkJCSBsaWJwcV9nZXR0ZXh0KCJkaWdlc3Qgc2lnbmluZyBmYWlsZWQ6ICVzIiks CisJCQkJIEVSUl9yZWFzb25fZXJyb3Jfc3RyaW5nKEVSUl9nZXRfZXJyb3IoKSkpOworCQkq ZXJybXNncCA9IG1zZ2J1ZjsKKwkJZ290byBmYWlsOworCX0KKworCWlmICghRVZQX0RpZ2Vz dFNpZ25GaW5hbChldnBfbWRfY3R4LCBtZF92YWx1ZSwgbWRfbGVuX3ApKQorCXsKKwkJc25w cmludGYobXNnYnVmLCBzaXplb2YobXNnYnVmKSwKKwkJCQkgbGlicHFfZ2V0dGV4dCgiZGln ZXN0IHNpZ25pbmcgZmFpbGVkOiAlcyIpLAorCQkJCSBFUlJfcmVhc29uX2Vycm9yX3N0cmlu ZyhFUlJfZ2V0X2Vycm9yKCkpKTsKKwkJKmVycm1zZ3AgPSBtc2didWY7CisJCWdvdG8gZmFp bDsKKwl9CisJQXNzZXJ0KCptZF9sZW5fcCA9PSBtZF9oYXNoX2xlbmd0aChtZCkpOworCisJ LyogdHJ1bmNhdGUgb3V0cHV0IHRvIGhhbGYgdGhlIGxlbmd0aCwgcGVyIHNwZWMgKi8KKwkq bWRfbGVuX3AgLz0gMjsKKworCXJlc3VsdCA9IHRydWU7CitmYWlsOgorCWZyZWUoYnVmKTsK KwlFVlBfUEtFWV9mcmVlKHBrZXkpOworCUVWUF9NRF9DVFhfZnJlZShldnBfbWRfY3R4KTsK KwlyZXR1cm4gcmVzdWx0OworfQorCit1bnNpZ25lZCBjaGFyICoKK2RlY3J5cHRfdmFsdWUo UEdyZXN1bHQgKnJlcywgY29uc3QgUEdDRUsgKmNlaywgaW50IGNla2FsZywgY29uc3QgdW5z aWduZWQgY2hhciAqaW5wdXQsIGludCBpbnB1dGxlbiwgY29uc3QgY2hhciAqKmVycm1zZ3Ap Cit7CisJc3RhdGljIGNoYXIgbXNnYnVmWzEwMjRdOworCisJY29uc3QgdW5zaWduZWQgY2hh ciAqaXYgPSBOVUxMOworCXNpemVfdAkJaXZsZW47CisKKwljb25zdCBFVlBfQ0lQSEVSICpj aXBoZXI7CisJY29uc3QgRVZQX01EICptZDsKKwlFVlBfQ0lQSEVSX0NUWCAqZXZwX2NpcGhl cl9jdHggPSBOVUxMOworCWludAkJCWVuY19rZXlfbGVuOworCWludAkJCW1hY19rZXlfbGVu OworCWludAkJCWtleV9sZW47CisJY29uc3QgdW5zaWduZWQgY2hhciAqZW5jX2tleTsKKwlj b25zdCB1bnNpZ25lZCBjaGFyICptYWNfa2V5OworCXVuc2lnbmVkIGNoYXIgbWRfdmFsdWVb RVZQX01BWF9NRF9TSVpFXTsKKwlzaXplX3QJCW1kX2xlbiA9IHNpemVvZihtZF92YWx1ZSk7 CisJc2l6ZV90CQlidWZzaXplOworCXVuc2lnbmVkIGNoYXIgKmJ1ZiA9IE5VTEw7CisJdW5z aWduZWQgY2hhciAqZGVjcjsKKwlpbnQJCQlkZWNybGVuLAorCQkJCWRlY3JsZW4yOworCisJ dW5zaWduZWQgY2hhciAqcmVzdWx0ID0gTlVMTDsKKworCWNpcGhlciA9IHBnX2Nla2FsZ190 b19vcGVuc3NsX2NpcGhlcihjZWthbGcpOworCWlmICghY2lwaGVyKQorCXsKKwkJc25wcmlu dGYobXNnYnVmLCBzaXplb2YobXNnYnVmKSwKKwkJCQkgbGlicHFfZ2V0dGV4dCgidW5yZWNv Z25pemVkIGVuY3J5cHRpb24gYWxnb3JpdGhtIGlkZW50aWZpZXI6ICVkIiksIGNla2FsZyk7 CisJCSplcnJtc2dwID0gbXNnYnVmOworCQlnb3RvIGZhaWw7CisJfQorCisJbWQgPSBwZ19j ZWthbGdfdG9fb3BlbnNzbF9tZChjZWthbGcpOworCWlmICghbWQpCisJeworCQlzbnByaW50 Zihtc2didWYsIHNpemVvZihtc2didWYpLAorCQkJCSBsaWJwcV9nZXR0ZXh0KCJ1bnJlY29n bml6ZWQgZGlnZXN0IGFsZ29yaXRobSBpZGVudGlmaWVyOiAlZCIpLCBjZWthbGcpOworCQkq ZXJybXNncCA9IG1zZ2J1ZjsKKwkJZ290byBmYWlsOworCX0KKworCWV2cF9jaXBoZXJfY3R4 ID0gRVZQX0NJUEhFUl9DVFhfbmV3KCk7CisKKwlpZiAoIUVWUF9EZWNyeXB0SW5pdF9leChl dnBfY2lwaGVyX2N0eCwgY2lwaGVyLCBOVUxMLCBOVUxMLCBOVUxMKSkKKwl7CisJCXNucHJp bnRmKG1zZ2J1Ziwgc2l6ZW9mKG1zZ2J1ZiksCisJCQkJIGxpYnBxX2dldHRleHQoImRlY3J5 cHRpb24gaW5pdGlhbGl6YXRpb24gZmFpbGVkOiAlcyIpLAorCQkJCSBFUlJfcmVhc29uX2Vy cm9yX3N0cmluZyhFUlJfZ2V0X2Vycm9yKCkpKTsKKwkJKmVycm1zZ3AgPSBtc2didWY7CisJ CWdvdG8gZmFpbDsKKwl9CisKKwllbmNfa2V5X2xlbiA9IEVWUF9DSVBIRVJfQ1RYX2tleV9s ZW5ndGgoZXZwX2NpcGhlcl9jdHgpOworCW1hY19rZXlfbGVuID0gbWRfa2V5X2xlbmd0aCht ZCk7CisJa2V5X2xlbiA9IG1hY19rZXlfbGVuICsgZW5jX2tleV9sZW47CisKKwlpZiAoY2Vr LT5jZWtkYXRhbGVuICE9IGtleV9sZW4pCisJeworCQlzbnByaW50Zihtc2didWYsIHNpemVv Zihtc2didWYpLAorCQkJCSBsaWJwcV9nZXR0ZXh0KCJjb2x1bW4gZW5jcnlwdGlvbiBrZXkg aGFzIHdyb25nIGxlbmd0aCBmb3IgYWxnb3JpdGhtIChoYXM6ICV6dSwgcmVxdWlyZWQ6ICVk KSIpLAorCQkJCSBjZWstPmNla2RhdGFsZW4sIGtleV9sZW4pOworCQkqZXJybXNncCA9IG1z Z2J1ZjsKKwkJZ290byBmYWlsOworCX0KKworCWVuY19rZXkgPSBjZWstPmNla2RhdGEgKyBt YWNfa2V5X2xlbjsKKwltYWNfa2V5ID0gY2VrLT5jZWtkYXRhOworCisJaWYgKCFnZXRfbWVz c2FnZV9hdXRoX3RhZyhtZCwgbWFjX2tleSwgbWFjX2tleV9sZW4sCisJCQkJCQkJICBpbnB1 dCwgaW5wdXRsZW4gLSAobWRfaGFzaF9sZW5ndGgobWQpIC8gMiksCisJCQkJCQkJICBjZWth bGcsCisJCQkJCQkJICBtZF92YWx1ZSwgJm1kX2xlbiwKKwkJCQkJCQkgIGVycm1zZ3ApKQor CXsKKwkJZ290byBmYWlsOworCX0KKworCWlmIChtZW1jbXAoaW5wdXQgKyAoaW5wdXRsZW4g LSBtZF9sZW4pLCBtZF92YWx1ZSwgbWRfbGVuKSAhPSAwKQorCXsKKwkJKmVycm1zZ3AgPSBs aWJwcV9nZXR0ZXh0KCJNQUMgbWlzbWF0Y2giKTsKKwkJZ290byBmYWlsOworCX0KKworCWl2 bGVuID0gRVZQX0NJUEhFUl9DVFhfaXZfbGVuZ3RoKGV2cF9jaXBoZXJfY3R4KTsKKwlpdiA9 IGlucHV0OworCWlucHV0ICs9IGl2bGVuOworCWlucHV0bGVuIC09IGl2bGVuOworCWlmICgh RVZQX0RlY3J5cHRJbml0X2V4KGV2cF9jaXBoZXJfY3R4LCBOVUxMLCBOVUxMLCBlbmNfa2V5 LCBpdikpCisJeworCQlzbnByaW50Zihtc2didWYsIHNpemVvZihtc2didWYpLAorCQkJCSBs aWJwcV9nZXR0ZXh0KCJkZWNyeXB0aW9uIGluaXRpYWxpemF0aW9uIGZhaWxlZDogJXMiKSwK KwkJCQkgRVJSX3JlYXNvbl9lcnJvcl9zdHJpbmcoRVJSX2dldF9lcnJvcigpKSk7CisJCSpl cnJtc2dwID0gbXNnYnVmOworCQlnb3RvIGZhaWw7CisJfQorCisJYnVmc2l6ZSA9IGlucHV0 bGVuICsgRVZQX0NJUEhFUl9DVFhfYmxvY2tfc2l6ZShldnBfY2lwaGVyX2N0eCkgKyAxOwor I2lmbmRlZiBURVNUX0VOQ1JZUFQKKwlidWYgPSBwcVJlc3VsdEFsbG9jKHJlcywgYnVmc2l6 ZSwgZmFsc2UpOworI2Vsc2UKKwlidWYgPSBtYWxsb2MoYnVmc2l6ZSk7CisjZW5kaWYKKwlp ZiAoIWJ1ZikKKwl7CisJCSplcnJtc2dwID0gbGlicHFfZ2V0dGV4dCgib3V0IG91dCBtZW1v cnkiKTsKKwkJZ290byBmYWlsOworCX0KKwlkZWNyID0gYnVmOworCWlmICghRVZQX0RlY3J5 cHRVcGRhdGUoZXZwX2NpcGhlcl9jdHgsIGRlY3IsICZkZWNybGVuLCBpbnB1dCwgaW5wdXRs ZW4gLSBtZF9sZW4pKQorCXsKKwkJc25wcmludGYobXNnYnVmLCBzaXplb2YobXNnYnVmKSwK KwkJCQkgbGlicHFfZ2V0dGV4dCgiZGVjcnlwdGlvbiBmYWlsZWQ6ICVzIiksCisJCQkJIEVS Ul9yZWFzb25fZXJyb3Jfc3RyaW5nKEVSUl9nZXRfZXJyb3IoKSkpOworCQkqZXJybXNncCA9 IG1zZ2J1ZjsKKwkJZ290byBmYWlsOworCX0KKwlpZiAoIUVWUF9EZWNyeXB0RmluYWxfZXgo ZXZwX2NpcGhlcl9jdHgsIGRlY3IgKyBkZWNybGVuLCAmZGVjcmxlbjIpKQorCXsKKwkJc25w cmludGYobXNnYnVmLCBzaXplb2YobXNnYnVmKSwKKwkJCQkgbGlicHFfZ2V0dGV4dCgiZGVj cnlwdGlvbiBmYWlsZWQ6ICVzIiksCisJCQkJIEVSUl9yZWFzb25fZXJyb3Jfc3RyaW5nKEVS Ul9nZXRfZXJyb3IoKSkpOworCQkqZXJybXNncCA9IG1zZ2J1ZjsKKwkJZ290byBmYWlsOwor CX0KKwlkZWNybGVuICs9IGRlY3JsZW4yOworCUFzc2VydChkZWNybGVuIDwgYnVmc2l6ZSk7 CisJZGVjcltkZWNybGVuXSA9ICdcMCc7CisJcmVzdWx0ID0gZGVjcjsKKworZmFpbDoKKwlF VlBfQ0lQSEVSX0NUWF9mcmVlKGV2cF9jaXBoZXJfY3R4KTsKKworCXJldHVybiByZXN1bHQ7 Cit9CisKKyNpZm5kZWYgVEVTVF9FTkNSWVBUCitzdGF0aWMgYm9vbAorbWFrZV9zaXYoUEdj b25uICpjb25uLAorCQkgdW5zaWduZWQgY2hhciAqaXYsIHNpemVfdCBpdmxlbiwKKwkJIGNv bnN0IEVWUF9NRCAqbWQsCisJCSBjb25zdCB1bnNpZ25lZCBjaGFyICppdl9rZXksIGludCBp dl9rZXlfbGVuLAorCQkgY29uc3QgdW5zaWduZWQgY2hhciAqcGxhaW50ZXh0LCBpbnQgcGxh aW50ZXh0X2xlbikKK3sKKwlFVlBfTURfQ1RYICpldnBfbWRfY3R4ID0gTlVMTDsKKwlFVlBf UEtFWSAgICpwa2V5ID0gTlVMTDsKKwlib29sCQlyZXN1bHQgPSBmYWxzZTsKKworCWV2cF9t ZF9jdHggPSBFVlBfTURfQ1RYX25ldygpOworCisJcGtleSA9IEVWUF9QS0VZX25ld19yYXdf cHJpdmF0ZV9rZXkoRVZQX1BLRVlfSE1BQywgTlVMTCwgaXZfa2V5LCBpdl9rZXlfbGVuKTsK KwlpZiAoIXBrZXkpCisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNz YWdlLAorCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBub3QgYWxsb2NhdGUga2V5IGZv ciBITUFDOiAlc1xuIiksCisJCQkJCQkgIEVSUl9yZWFzb25fZXJyb3Jfc3RyaW5nKEVSUl9n ZXRfZXJyb3IoKSkpOworCQlnb3RvIGZhaWw7CisJfQorCisJaWYgKCFFVlBfRGlnZXN0U2ln bkluaXQoZXZwX21kX2N0eCwgTlVMTCwgbWQsIE5VTEwsIHBrZXkpKQorCXsKKwkJYXBwZW5k UFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0dGV4 dCgiZGlnZXN0IGluaXRpYWxpemF0aW9uIGZhaWxlZDogJXNcbiIpLAorCQkJCQkJICBFUlJf cmVhc29uX2Vycm9yX3N0cmluZyhFUlJfZ2V0X2Vycm9yKCkpKTsKKwkJZ290byBmYWlsOwor CX0KKworCWlmICghRVZQX0RpZ2VzdFNpZ25VcGRhdGUoZXZwX21kX2N0eCwgcGxhaW50ZXh0 LCBwbGFpbnRleHRfbGVuKSkKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJv ck1lc3NhZ2UsCisJCQkJCQkgIGxpYnBxX2dldHRleHQoImRpZ2VzdCBzaWduaW5nIGZhaWxl ZDogJXNcbiIpLAorCQkJCQkJICBFUlJfcmVhc29uX2Vycm9yX3N0cmluZyhFUlJfZ2V0X2Vy cm9yKCkpKTsKKwkJZ290byBmYWlsOworCX0KKworCWlmICghRVZQX0RpZ2VzdFNpZ25GaW5h bChldnBfbWRfY3R4LCBpdiwgJml2bGVuKSkKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyKCZj b25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkgIGxpYnBxX2dldHRleHQoImRpZ2VzdCBzaWdu aW5nIGZhaWxlZDogJXMiKSwKKwkJCQkJCSAgRVJSX3JlYXNvbl9lcnJvcl9zdHJpbmcoRVJS X2dldF9lcnJvcigpKSk7CisJCWdvdG8gZmFpbDsKKwl9CisJQXNzZXJ0KGl2bGVuID09IG1k X2hhc2hfbGVuZ3RoKG1kKSk7CisKKwlyZXN1bHQgPSB0cnVlOworZmFpbDoKKwlFVlBfUEtF WV9mcmVlKHBrZXkpOworCUVWUF9NRF9DVFhfZnJlZShldnBfbWRfY3R4KTsKKwlyZXR1cm4g cmVzdWx0OworfQorI2VuZGlmCQkJCQkJCS8qIFRFU1RfRU5DUllQVCAqLworCit1bnNpZ25l ZCBjaGFyICoKK2VuY3J5cHRfdmFsdWUoUEdjb25uICpjb25uLCBjb25zdCBQR0NFSyAqY2Vr LCBpbnQgY2VrYWxnLCBjb25zdCB1bnNpZ25lZCBjaGFyICp2YWx1ZSwgaW50ICpuYnl0ZXNw LCBib29sIGVuY19kZXQpCit7CisJaW50CQkJbmJ5dGVzID0gKm5ieXRlc3A7CisJdW5zaWdu ZWQgY2hhciBpdltFVlBfTUFYX0lWX0xFTkdUSF07CisJc2l6ZV90CQlpdmxlbjsKKwljb25z dCBFVlBfQ0lQSEVSICpjaXBoZXI7CisJY29uc3QgRVZQX01EICptZDsKKwlFVlBfQ0lQSEVS X0NUWCAqZXZwX2NpcGhlcl9jdHggPSBOVUxMOworCWludAkJCWVuY19rZXlfbGVuOworCWlu dAkJCW1hY19rZXlfbGVuOworCWludAkJCWtleV9sZW47CisJY29uc3QgdW5zaWduZWQgY2hh ciAqZW5jX2tleTsKKwljb25zdCB1bnNpZ25lZCBjaGFyICptYWNfa2V5OworCXNpemVfdAkJ YnVmc2l6ZTsKKwl1bnNpZ25lZCBjaGFyICpidWYgPSBOVUxMOworCXVuc2lnbmVkIGNoYXIg KmVuY3I7CisJaW50CQkJZW5jcmxlbiwKKwkJCQllbmNybGVuMjsKKworCWNvbnN0IGNoYXIg KmVycm1zZzsKKwl1bnNpZ25lZCBjaGFyIG1kX3ZhbHVlW0VWUF9NQVhfTURfU0laRV07CisJ c2l6ZV90CQltZF9sZW4gPSBzaXplb2YobWRfdmFsdWUpOworCXNpemVfdAkJYnVmMnNpemU7 CisJdW5zaWduZWQgY2hhciAqYnVmMiA9IE5VTEw7CisKKwl1bnNpZ25lZCBjaGFyICpyZXN1 bHQgPSBOVUxMOworCisJY2lwaGVyID0gcGdfY2VrYWxnX3RvX29wZW5zc2xfY2lwaGVyKGNl a2FsZyk7CisJaWYgKCFjaXBoZXIpCisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ ZXJyb3JNZXNzYWdlLAorCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJ1bnJlY29nbml6ZWQgZW5j cnlwdGlvbiBhbGdvcml0aG0gaWRlbnRpZmllcjogJWRcbiIpLCBjZWthbGcpOworCQlnb3Rv IGZhaWw7CisJfQorCisJbWQgPSBwZ19jZWthbGdfdG9fb3BlbnNzbF9tZChjZWthbGcpOwor CWlmICghbWQpCisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdl LAorCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJ1bnJlY29nbml6ZWQgZGlnZXN0IGFsZ29yaXRo bSBpZGVudGlmaWVyOiAlZFxuIiksIGNla2FsZyk7CisJCWdvdG8gZmFpbDsKKwl9CisKKwll dnBfY2lwaGVyX2N0eCA9IEVWUF9DSVBIRVJfQ1RYX25ldygpOworCisJaWYgKCFFVlBfRW5j cnlwdEluaXRfZXgoZXZwX2NpcGhlcl9jdHgsIGNpcGhlciwgTlVMTCwgTlVMTCwgTlVMTCkp CisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJ ICBsaWJwcV9nZXR0ZXh0KCJlbmNyeXB0aW9uIGluaXRpYWxpemF0aW9uIGZhaWxlZDogJXNc biIpLAorCQkJCQkJICBFUlJfcmVhc29uX2Vycm9yX3N0cmluZyhFUlJfZ2V0X2Vycm9yKCkp KTsKKwkJZ290byBmYWlsOworCX0KKworCWVuY19rZXlfbGVuID0gRVZQX0NJUEhFUl9DVFhf a2V5X2xlbmd0aChldnBfY2lwaGVyX2N0eCk7CisJbWFjX2tleV9sZW4gPSBtZF9rZXlfbGVu Z3RoKG1kKTsKKwlrZXlfbGVuID0gbWFjX2tleV9sZW4gKyBlbmNfa2V5X2xlbjsKKworCWlm IChjZWstPmNla2RhdGFsZW4gIT0ga2V5X2xlbikKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVy KCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkgIGxpYnBxX2dldHRleHQoImNvbHVtbiBl bmNyeXB0aW9uIGtleSBoYXMgd3JvbmcgbGVuZ3RoIGZvciBhbGdvcml0aG0gKGhhczogJXp1 LCByZXF1aXJlZDogJWQpXG4iKSwKKwkJCQkJCSAgY2VrLT5jZWtkYXRhbGVuLCBrZXlfbGVu KTsKKwkJZ290byBmYWlsOworCX0KKworCWVuY19rZXkgPSBjZWstPmNla2RhdGEgKyBtYWNf a2V5X2xlbjsKKwltYWNfa2V5ID0gY2VrLT5jZWtkYXRhOworCisJaXZsZW4gPSBFVlBfQ0lQ SEVSX0NUWF9pdl9sZW5ndGgoZXZwX2NpcGhlcl9jdHgpOworCUFzc2VydChpdmxlbiA8PSBz aXplb2YoaXYpKTsKKwlpZiAoZW5jX2RldCkKKyNpZm5kZWYgVEVTVF9FTkNSWVBUCisJCW1h a2Vfc2l2KGNvbm4sIGl2LCBpdmxlbiwgbWQsIG1hY19rZXksIG1hY19rZXlfbGVuLCB2YWx1 ZSwgbmJ5dGVzKTsKKyNlbHNlCisJCW1lbWNweShpdiwgdGVzdF9JViwgaXZsZW4pOworI2Vu ZGlmCisJZWxzZQorCQlwZ19zdHJvbmdfcmFuZG9tKGl2LCBpdmxlbik7CisJaWYgKCFFVlBf RW5jcnlwdEluaXRfZXgoZXZwX2NpcGhlcl9jdHgsIE5VTEwsIE5VTEwsIGVuY19rZXksIGl2 KSkKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJ CQkgIGxpYnBxX2dldHRleHQoImVuY3J5cHRpb24gaW5pdGlhbGl6YXRpb24gZmFpbGVkOiAl c1xuIiksCisJCQkJCQkgIEVSUl9yZWFzb25fZXJyb3Jfc3RyaW5nKEVSUl9nZXRfZXJyb3Io KSkpOworCQlnb3RvIGZhaWw7CisJfQorCisJYnVmc2l6ZSA9IGl2bGVuICsgKG5ieXRlcyAr IDIgKiBFVlBfQ0lQSEVSX0NUWF9ibG9ja19zaXplKGV2cF9jaXBoZXJfY3R4KSAtIDEpOwor CWJ1ZiA9IG1hbGxvYyhidWZzaXplKTsKKwlpZiAoIWJ1ZikKKwl7CisJCWFwcGVuZFBRRXhw QnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkgIGxpYnBxX2dldHRleHQoIm91 dCBvZiBtZW1vcnlcbiIpKTsKKwkJZ290byBmYWlsOworCX0KKwltZW1jcHkoYnVmLCBpdiwg aXZsZW4pOworCWVuY3IgPSBidWYgKyBpdmxlbjsKKwlpZiAoIUVWUF9FbmNyeXB0VXBkYXRl KGV2cF9jaXBoZXJfY3R4LCBlbmNyLCAmZW5jcmxlbiwgdmFsdWUsIG5ieXRlcykpCisJewor CQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJICBsaWJw cV9nZXR0ZXh0KCJlbmNyeXB0aW9uIGZhaWxlZDogJXNcbiIpLAorCQkJCQkJICBFUlJfcmVh c29uX2Vycm9yX3N0cmluZyhFUlJfZ2V0X2Vycm9yKCkpKTsKKwkJZ290byBmYWlsOworCX0K KwlpZiAoIUVWUF9FbmNyeXB0RmluYWxfZXgoZXZwX2NpcGhlcl9jdHgsIGVuY3IgKyBlbmNy bGVuLCAmZW5jcmxlbjIpKQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9y TWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiZW5jcnlwdGlvbiBmYWlsZWQ6ICVz XG4iKSwKKwkJCQkJCSAgRVJSX3JlYXNvbl9lcnJvcl9zdHJpbmcoRVJSX2dldF9lcnJvcigp KSk7CisJCWdvdG8gZmFpbDsKKwl9CisJZW5jcmxlbiArPSBlbmNybGVuMjsKKworCWVuY3Ig LT0gaXZsZW47CisJZW5jcmxlbiArPSBpdmxlbjsKKworCUFzc2VydChlbmNybGVuIDw9IGJ1 ZnNpemUpOworCisJaWYgKCFnZXRfbWVzc2FnZV9hdXRoX3RhZyhtZCwgbWFjX2tleSwgbWFj X2tleV9sZW4sCisJCQkJCQkJICBlbmNyLCBlbmNybGVuLAorCQkJCQkJCSAgY2VrYWxnLAor CQkJCQkJCSAgbWRfdmFsdWUsICZtZF9sZW4sCisJCQkJCQkJICAmZXJybXNnKSkKKwl7CisJ CWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsICIlc1xuIiwgZXJybXNn KTsKKwkJZ290byBmYWlsOworCX0KKworCWJ1ZjJzaXplID0gZW5jcmxlbiArIG1kX2xlbjsK KwlidWYyID0gbWFsbG9jKGJ1ZjJzaXplKTsKKwlpZiAoIWJ1ZjIpCisJeworCQlhcHBlbmRQ UUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJICBsaWJwcV9nZXR0ZXh0 KCJvdXQgb2YgbWVtb3J5XG4iKSk7CisJCWdvdG8gZmFpbDsKKwl9CisJbWVtY3B5KGJ1ZjIs IGVuY3IsIGVuY3JsZW4pOworCW1lbWNweShidWYyICsgZW5jcmxlbiwgbWRfdmFsdWUsIG1k X2xlbik7CisKKwlyZXN1bHQgPSBidWYyOworCW5ieXRlcyA9IGJ1ZjJzaXplOworCitmYWls OgorCWZyZWUoYnVmKTsKKwlFVlBfQ0lQSEVSX0NUWF9mcmVlKGV2cF9jaXBoZXJfY3R4KTsK KworCSpuYnl0ZXNwID0gbmJ5dGVzOworCXJldHVybiByZXN1bHQ7Cit9CisKKworLyoKKyAq IFJ1biB0ZXN0IGNhc2VzCisgKi8KKyNpZmRlZiBURVNUX0VOQ1JZUFQKKworc3RhdGljIHZv aWQKK2RlYnVnX3ByaW50X2hleChjb25zdCBjaGFyICpuYW1lLCBjb25zdCB1bnNpZ25lZCBj aGFyICp2YWwsIGludCBsZW4pCit7CisJcHJpbnRmKCIlcyA9IiwgbmFtZSk7CisJZm9yIChp bnQgaSA9IDA7IGkgPCBsZW47IGkrKykKKwl7CisJCWlmIChpICUgMTYgPT0gMCkKKwkJCXBy aW50ZigiXG4iKTsKKwkJZWxzZQorCQkJcHJpbnRmKCIgIik7CisJCXByaW50ZigiJTAyeCIs IHZhbFtpXSk7CisJfQorCXByaW50ZigiXG4iKTsKK30KKworc3RhdGljIHZvaWQKK3Rlc3Rf Y2FzZShpbnQgYWxnLCBjb25zdCB1bnNpZ25lZCBjaGFyICpLLCBzaXplX3QgS19sZW4sIGNv bnN0IHVuc2lnbmVkIGNoYXIgKlAsIHNpemVfdCBQX2xlbikKK3sKKwl1bnNpZ25lZCBjaGFy ICpDOworCWludAkJCW5ieXRlczsKKwlQR0NFSwkJY2VrOworCisJbmJ5dGVzID0gUF9sZW47 CisJY2VrLmNla2RhdGEgPSB1bmNvbnN0aWZ5KHVuc2lnbmVkIGNoYXIgKiwgSyk7CisJY2Vr LmNla2RhdGFsZW4gPSBLX2xlbjsKKworCUMgPSBlbmNyeXB0X3ZhbHVlKE5VTEwsICZjZWss IGFsZywgUCwgJm5ieXRlcywgdHJ1ZSk7CisJZGVidWdfcHJpbnRfaGV4KCJDIiwgQywgbmJ5 dGVzKTsKK30KKworaW50CittYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlwcmlu dGYoIjUuMVxuIik7CisJdGVzdF9jYXNlKFBHX0NFS19BRUFEX0FFU18xMjhfQ0JDX0hNQUNf U0hBXzI1NiwgSywgMzIsIFAsIHNpemVvZihQKSk7CisJcHJpbnRmKCI1LjJcbiIpOworCXRl c3RfY2FzZShQR19DRUtfQUVBRF9BRVNfMTkyX0NCQ19ITUFDX1NIQV8zODQsIEssIDQ4LCBQ LCBzaXplb2YoUCkpOworCXByaW50ZigiNS4zXG4iKTsKKwl0ZXN0X2Nhc2UoUEdfQ0VLX0FF QURfQUVTXzI1Nl9DQkNfSE1BQ19TSEFfMzg0LCBLLCA1NiwgUCwgc2l6ZW9mKFApKTsKKwlw cmludGYoIjUuNFxuIik7CisJdGVzdF9jYXNlKFBHX0NFS19BRUFEX0FFU18yNTZfQ0JDX0hN QUNfU0hBXzUxMiwgSywgNjQsIFAsIHNpemVvZihQKSk7CisKKwlyZXR1cm4gMDsKK30KKwor I2VuZGlmCQkJCQkJCS8qIFRFU1RfRU5DUllQVCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVy ZmFjZXMvbGlicHEvZmUtZW5jcnlwdC5oIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZW5j cnlwdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmIwMDkzZGM1 MjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1lbmNyeXB0 LmgKQEAgLTAsMCArMSwzMyBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZmUt ZW5jcnlwdC5oCisgKgorICogZW5jcnlwdGlvbiBzdXBwb3J0CisgKgorICogUG9ydGlvbnMg Q29weXJpZ2h0IChjKSAxOTk2LTIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhl IFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkg IHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWVuY3J5cHQuaAorICoKKyAqLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICovCisKKyNpZm5kZWYgRkVfRU5DUllQVF9ICisjZGVmaW5lIEZFX0VOQ1JZ UFRfSAorCisjaW5jbHVkZSAibGlicHEtZmUuaCIKKyNpbmNsdWRlICJsaWJwcS1pbnQuaCIK KworZXh0ZXJuIHVuc2lnbmVkIGNoYXIgKmRlY3J5cHRfY2VrX2Zyb21fZmlsZShQR2Nvbm4g KmNvbm4sIEZJTEUgKmZwLCBpbnQgY21rYWxnLAorCQkJCQkJCQkJCQlpbnQgZnJvbWxlbiwg Y29uc3QgdW5zaWduZWQgY2hhciAqZnJvbSwKKwkJCQkJCQkJCQkJaW50ICp0b2xlbik7CisK K2V4dGVybiB1bnNpZ25lZCBjaGFyICpkZWNyeXB0X3ZhbHVlKFBHcmVzdWx0ICpyZXMsIGNv bnN0IFBHQ0VLICpjZWssIGludCBjZWthbGcsCisJCQkJCQkJCQljb25zdCB1bnNpZ25lZCBj aGFyICppbnB1dCwgaW50IGlucHV0bGVuLAorCQkJCQkJCQkJY29uc3QgY2hhciAqKmVycm1z Z3ApOworCitleHRlcm4gdW5zaWduZWQgY2hhciAqZW5jcnlwdF92YWx1ZShQR2Nvbm4gKmNv bm4sIGNvbnN0IFBHQ0VLICpjZWssIGludCBjZWthbGcsCisJCQkJCQkJCQljb25zdCB1bnNp Z25lZCBjaGFyICp2YWx1ZSwgaW50ICpuYnl0ZXNwLCBib29sIGVuY19kZXQpOworCisjZW5k aWYJCQkJCQkJLyogRkVfRU5DUllQVF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNl cy9saWJwcS9mZS1leGVjLmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1leGVjLmMKaW5k ZXggOTE5Y2Y1NzQxZC4uZGI4ZGRlMWNiMCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMv bGlicHEvZmUtZXhlYy5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWV4ZWMuYwpA QCAtMjQsNiArMjQsOSBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCiAKKyNpbmNs dWRlICJjYXRhbG9nL3BnX2NvbGVuY2tleS5oIgorI2luY2x1ZGUgImNvbW1vbi9iYXNlNjQu aCIKKyNpbmNsdWRlICJmZS1lbmNyeXB0LmgiCiAjaW5jbHVkZSAibGlicHEtZmUuaCIKICNp bmNsdWRlICJsaWJwcS1pbnQuaCIKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgpAQCAtNzIs NyArNzUsOSBAQCBzdGF0aWMgaW50CVBRc2VuZFF1ZXJ5R3V0cyhQR2Nvbm4gKmNvbm4sCiAJ CQkJCQkJY29uc3QgY2hhciAqY29uc3QgKnBhcmFtVmFsdWVzLAogCQkJCQkJCWNvbnN0IGlu dCAqcGFyYW1MZW5ndGhzLAogCQkJCQkJCWNvbnN0IGludCAqcGFyYW1Gb3JtYXRzLAotCQkJ CQkJCWludCByZXN1bHRGb3JtYXQpOworCQkJCQkJCWNvbnN0IGludCAqcGFyYW1Gb3JjZUNv bHVtbkVuY3J5cHRpb25zLAorCQkJCQkJCWludCByZXN1bHRGb3JtYXQsCisJCQkJCQkJUEdy ZXN1bHQgKnBhcmFtRGVzYyk7CiBzdGF0aWMgdm9pZCBwYXJzZUlucHV0KFBHY29ubiAqY29u bik7CiBzdGF0aWMgUEdyZXN1bHQgKmdldENvcHlSZXN1bHQoUEdjb25uICpjb25uLCBFeGVj U3RhdHVzVHlwZSBjb3B5dHlwZSk7CiBzdGF0aWMgYm9vbCBQUWV4ZWNTdGFydChQR2Nvbm4g KmNvbm4pOwpAQCAtMTE4OSw2ICsxMTk0LDM4MSBAQCBwcVNhdmVQYXJhbWV0ZXJTdGF0dXMo UEdjb25uICpjb25uLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKIAl9 CiB9CiAKK2ludAorcHFTYXZlQ29sdW1uTWFzdGVyS2V5KFBHY29ubiAqY29ubiwgaW50IGtl eWlkLCBjb25zdCBjaGFyICprZXluYW1lLAorCQkJCQkgIGNvbnN0IGNoYXIgKmtleXJlYWxt KQoreworCWNoYXIJICAgKmtleW5hbWVfY29weTsKKwljaGFyCSAgICprZXlyZWFsbV9jb3B5 OworCWJvb2wJCWZvdW5kOworCisJa2V5bmFtZV9jb3B5ID0gc3RyZHVwKGtleW5hbWUpOwor CWlmICgha2V5bmFtZV9jb3B5KQorCQlyZXR1cm4gRU9GOworCWtleXJlYWxtX2NvcHkgPSBz dHJkdXAoa2V5cmVhbG0pOworCWlmICgha2V5cmVhbG1fY29weSkKKwl7CisJCWZyZWUoa2V5 bmFtZV9jb3B5KTsKKwkJcmV0dXJuIEVPRjsKKwl9CisKKwlmb3VuZCA9IGZhbHNlOworCWZv ciAoaW50IGkgPSAwOyBpIDwgY29ubi0+bmNta3M7IGkrKykKKwl7CisJCXN0cnVjdCBwZ19j bWsgKmNoZWNrY21rID0gJmNvbm4tPmNta3NbaV07CisKKwkJLyogcmVwbGFjZSBleGlzdGlu Zz8gKi8KKwkJaWYgKGNoZWNrY21rLT5jbWtpZCA9PSBrZXlpZCkKKwkJeworCQkJZnJlZShj aGVja2Ntay0+Y21rbmFtZSk7CisJCQlmcmVlKGNoZWNrY21rLT5jbWtyZWFsbSk7CisJCQlj aGVja2Ntay0+Y21rbmFtZSA9IGtleW5hbWVfY29weTsKKwkJCWNoZWNrY21rLT5jbWtyZWFs bSA9IGtleXJlYWxtX2NvcHk7CisJCQlmb3VuZCA9IHRydWU7CisJCQlicmVhazsKKwkJfQor CX0KKworCS8qIGFwcGVuZCBuZXc/ICovCisJaWYgKCFmb3VuZCkKKwl7CisJCWludAkJCW5l d25jbWtzOworCQlzdHJ1Y3QgcGdfY21rICpuZXdjbWtzOworCQlzdHJ1Y3QgcGdfY21rICpu ZXdjbWs7CisKKwkJbmV3bmNta3MgPSBjb25uLT5uY21rcyArIDE7CisJCWlmIChuZXduY21r cyA8PSAwKQorCQkJcmV0dXJuIEVPRjsKKwkJbmV3Y21rcyA9IHJlYWxsb2MoY29ubi0+Y21r cywgbmV3bmNta3MgKiBzaXplb2Yoc3RydWN0IHBnX2NtaykpOworCQlpZiAoIW5ld2Nta3Mp CisJCXsKKwkJCWZyZWUoa2V5bmFtZV9jb3B5KTsKKwkJCWZyZWUoa2V5cmVhbG1fY29weSk7 CisJCQlyZXR1cm4gRU9GOworCQl9CisKKwkJbmV3Y21rID0gJm5ld2Nta3NbbmV3bmNta3Mg LSAxXTsKKwkJbmV3Y21rLT5jbWtpZCA9IGtleWlkOworCQluZXdjbWstPmNta25hbWUgPSBr ZXluYW1lX2NvcHk7CisJCW5ld2Ntay0+Y21rcmVhbG0gPSBrZXlyZWFsbV9jb3B5OworCisJ CWNvbm4tPm5jbWtzID0gbmV3bmNta3M7CisJCWNvbm4tPmNta3MgPSBuZXdjbWtzOworCX0K KworCXJldHVybiAwOworfQorCisvKgorICogUmVwbGFjZSBwbGFjZWhvbGRlcnMgaW4gaW5w dXQgc3RyaW5nLiAgUmV0dXJuIHZhbHVlIG1hbGxvYydlZC4KKyAqLworc3RhdGljIGNoYXIg KgorcmVwbGFjZV9jbWtfcGxhY2Vob2xkZXJzKGNvbnN0IGNoYXIgKmluLCBjb25zdCBjaGFy ICpjbWtuYW1lLCBjb25zdCBjaGFyICpjbWtyZWFsbSwgaW50IGNta2FsZywgY29uc3QgY2hh ciAqYjY0ZGF0YSkKK3sKKwlQUUV4cEJ1ZmZlckRhdGEgYnVmOworCisJaW5pdFBRRXhwQnVm ZmVyKCZidWYpOworCisJZm9yIChjb25zdCBjaGFyICpwID0gaW47ICpwOyBwKyspCisJewor CQlpZiAocFswXSA9PSAnJScpCisJCXsKKwkJCXN3aXRjaCAocFsxXSkKKwkJCXsKKwkJCQlj YXNlICdhJzoKKwkJCQkJeworCQkJCQkJY29uc3QgY2hhciAqczsKKworCQkJCQkJc3dpdGNo IChjbWthbGcpCisJCQkJCQl7CisJCQkJCQkJY2FzZSBQR19DTUtfUlNBRVNfT0FFUF9TSEFf MToKKwkJCQkJCQkJcyA9ICJSU0FFU19PQUVQX1NIQV8xIjsKKwkJCQkJCQkJYnJlYWs7CisJ CQkJCQkJY2FzZSBQR19DTUtfUlNBRVNfT0FFUF9TSEFfMjU2OgorCQkJCQkJCQlzID0gIlJT QUVTX09BRVBfU0hBXzI1NiI7CisJCQkJCQkJCWJyZWFrOworCQkJCQkJCWRlZmF1bHQ6CisJ CQkJCQkJCXMgPSAiSU5WQUxJRCI7CisJCQkJCQl9CisJCQkJCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cigmYnVmLCBzKTsKKwkJCQkJfQorCQkJCQlwKys7CisJCQkJCWJyZWFrOworCQkJCWNh c2UgJ2InOgorCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCBiNjRkYXRhKTsKKwkJ CQkJcCsrOworCQkJCQlicmVhazsKKwkJCQljYXNlICdrJzoKKwkJCQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIoJmJ1ZiwgY21rbmFtZSk7CisJCQkJCXArKzsKKwkJCQkJYnJlYWs7CisJCQkJ Y2FzZSAncic6CisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsIGNta3JlYWxtKTsK KwkJCQkJcCsrOworCQkJCQlicmVhazsKKwkJCQlkZWZhdWx0OgorCQkJCQlhcHBlbmRQUUV4 cEJ1ZmZlckNoYXIoJmJ1ZiwgcFswXSk7CisJCQl9CisJCX0KKwkJZWxzZQorCQkJYXBwZW5k UFFFeHBCdWZmZXJDaGFyKCZidWYsIHBbMF0pOworCX0KKworCXJldHVybiBidWYuZGF0YTsK K30KKworI2lmbmRlZiBVU0VfU1NMCisvKgorICogRHVtbXkgaW1wbGVtZW50YXRpb24gZm9y IG5vbi1TU0wgYnVpbGRzCisgKi8KK3Vuc2lnbmVkIGNoYXIgKgorZGVjcnlwdF9jZWtfZnJv bV9maWxlKFBHY29ubiAqY29ubiwgRklMRSAqZnAsIGludCBjbWthbGcsCisJCQkJCSAgaW50 IGZyb21sZW4sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmZyb20sCisJCQkJCSAgaW50ICp0b2xl bikKK3sKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkg IGxpYnBxX2dldHRleHQoImNvbHVtbiBlbmNyeXB0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhp cyBidWlsZFxuIikpOworCXJldHVybiBOVUxMOworfQorI2VuZGlmCisKKy8qCisgKiBEZWNy eXB0IGEgQ0VLIHVzaW5nIHRoZSBnaXZlbiBDTUsuICBUaGUgY2lwaGVydGV4dCBpcyBwYXNz ZWQgaW4KKyAqICJmcm9tIiBhbmQgImZyb21sZW4iLiAgUmV0dXJuIHRoZSBkZWNyeXB0ZWQg dmFsdWUgaW4gYSBtYWxsb2MnZWQgYXJlYSwgaXRzCisgKiBsZW5ndGggdmlhICJ0b2xlbiIu ICBSZXR1cm4gTlVMTCBvbiBlcnJvcjsgYWRkIGVycm9yIG1lc3NhZ2VzIGRpcmVjdGx5IHRv CisgKiAiY29ubiIuCisgKi8KK3N0YXRpYyB1bnNpZ25lZCBjaGFyICoKK2RlY3J5cHRfY2Vr KFBHY29ubiAqY29ubiwgY29uc3QgUEdDTUsgKmNtaywgaW50IGNta2FsZywKKwkJCWludCBm cm9tbGVuLCBjb25zdCB1bnNpZ25lZCBjaGFyICpmcm9tLAorCQkJaW50ICp0b2xlbikKK3sK KwljaGFyCSAgICpjbWtsb29rdXA7CisJYm9vbAkJZm91bmQgPSBmYWxzZTsKKwl1bnNpZ25l ZCBjaGFyICpyZXN1bHQgPSBOVUxMOworCisJY21rbG9va3VwID0gc3RyZHVwKGNvbm4tPmNt a2xvb2t1cCA/IGNvbm4tPmNta2xvb2t1cCA6ICIiKTsKKworCWlmICghY21rbG9va3VwKQor CXsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwgbGlicHFfZ2V0 dGV4dCgib3V0IG9mIG1lbW9yeVxuIikpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwkvKgor CSAqIEFuYWx5emUgc2VtaWNvbG9uLXNlcGFyYXRlZCBsaXN0CisJICovCisJZm9yIChjaGFy ICpzID0gc3RydG9rKGNta2xvb2t1cCwgIjsiKTsgczsgcyA9IHN0cnRvayhOVUxMLCAiOyIp KQorCXsKKwkJY2hhcgkgICAqc2VwOworCisJCS8qIHNwbGl0IGZvdW5kIHRva2VuIGF0ICc9 JyAqLworCQlzZXAgPSBzdHJjaHIocywgJz0nKTsKKwkJaWYgKCFzZXApCisJCXsKKwkJCWFw cGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkJICBsaWJwcV9n ZXR0ZXh0KCJzeW50YXggZXJyb3IgaW4gQ01LIGxvb2t1cCBzcGVjaWZpY2F0aW9uLCBtaXNz aW5nIFwiJWNcIjogJXNcbiIpLCAnPScsIHMpOworCQkJYnJlYWs7CisJCX0KKworCQkvKiBt YXRjaGluZyByZWFsbT8gKi8KKwkJaWYgKHN0cm5jbXAocywgIioiLCBzZXAgLSBzKSA9PSAw IHx8IHN0cm5jbXAocywgY21rLT5jbWtyZWFsbSAsIHNlcCAtIHMpID09IDApCisJCXsKKwkJ CWNoYXIJICAgKnNlcDI7CisKKwkJCWZvdW5kID0gdHJ1ZTsKKworCQkJc2VwMiA9IHN0cmNo cihzZXAsICc6Jyk7CisJCQlpZiAoIXNlcDIpCisJCQl7CisJCQkJYXBwZW5kUFFFeHBCdWZm ZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJzeW50 YXggZXJyb3IgaW4gQ01LIGxvb2t1cCBzcGVjaWZpY2F0aW9uLCBtaXNzaW5nIFwiJWNcIjog JXNcbiIpLCAnOicsIHMpOworCQkJCWdvdG8gZmFpbDsKKwkJCX0KKworCQkJaWYgKHN0cm5j bXAoc2VwICsgMSwgImZpbGUiLCBzZXAyIC0gKHNlcCArIDEpKSA9PSAwKQorCQkJeworCQkJ CWNoYXIJICAgKmNta2ZpbGVuYW1lOworCQkJCUZJTEUJICAgKmZwOworCisJCQkJY21rZmls ZW5hbWUgPSByZXBsYWNlX2Nta19wbGFjZWhvbGRlcnMoc2VwMiArIDEsIGNtay0+Y21rbmFt ZSwgY21rLT5jbWtyZWFsbSwgY21rYWxnLCAiSU5WQUxJRCIpOworCQkJCWZwID0gZm9wZW4o Y21rZmlsZW5hbWUsICJyYiIpOworCQkJCWlmIChmcCkKKwkJCQl7CisJCQkJCXJlc3VsdCA9 IGRlY3J5cHRfY2VrX2Zyb21fZmlsZShjb25uLCBmcCwgY21rYWxnLCBmcm9tbGVuLCBmcm9t LCB0b2xlbik7CisJCQkJCWZjbG9zZShmcCk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJ CQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkJCQkg IGxpYnBxX2dldHRleHQoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiOiAlbVxuIiksIGNt a2ZpbGVuYW1lKTsKKwkJCQkJZnJlZShjbWtmaWxlbmFtZSk7CisJCQkJCWdvdG8gZmFpbDsK KwkJCQl9CisJCQkJZnJlZShjbWtmaWxlbmFtZSk7CisJCQl9CisJCQllbHNlIGlmIChzdHJu Y21wKHNlcCArIDEsICJydW4iLCBzZXAyIC0gKHNlcCArIDEpKSA9PSAwKQorCQkJeworCQkJ CWludAkJCWVuY2xlbjsKKwkJCQljaGFyCSAgICplbmM7CisJCQkJY2hhcgkgICAqY29tbWFu ZDsKKwkJCQlGSUxFCSAgICpmcDsKKwkJCQljaGFyCQlidWZbNDA5Nl07CisKKwkJCQllbmNs ZW4gPSBwZ19iNjRfZW5jX2xlbihmcm9tbGVuKTsKKwkJCQllbmMgPSBtYWxsb2MoZW5jbGVu ICsgMSk7CisJCQkJaWYgKCFlbmMpCisJCQkJeworCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigm Y29ubi0+ZXJyb3JNZXNzYWdlLCBsaWJwcV9nZXR0ZXh0KCJvdXQgb2YgbWVtb3J5XG4iKSk7 CisJCQkJCWdvdG8gZmFpbDsKKwkJCQl9CisJCQkJZW5jbGVuID0gcGdfYjY0X2VuY29kZSgo Y29uc3QgY2hhciAqKSBmcm9tLCBmcm9tbGVuLCBlbmMsIGVuY2xlbik7CisJCQkJaWYgKGVu Y2xlbiA8IDApCisJCQkJeworCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JN ZXNzYWdlLCBsaWJwcV9nZXR0ZXh0KCJiYXNlNjQgZW5jb2RpbmcgZmFpbGVkXG4iKSk7CisJ CQkJCWZyZWUoZW5jKTsKKwkJCQkJZ290byBmYWlsOworCQkJCX0KKwkJCQljb21tYW5kID0g cmVwbGFjZV9jbWtfcGxhY2Vob2xkZXJzKHNlcDIgKyAxLCBjbWstPmNta25hbWUsIGNtay0+ Y21rcmVhbG0sIGNta2FsZywgZW5jKTsKKwkJCQlmcmVlKGVuYyk7CisJCQkJZnAgPSBwb3Bl bihjb21tYW5kLCAiciIpOworCQkJCWZyZWUoY29tbWFuZCk7CisJCQkJaWYgKCFmcCkKKwkJ CQl7CisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJ CQkJCQkgIGxpYnBxX2dldHRleHQoImNvdWxkIG5vdCBydW4gY29tbWFuZCBcIiVzXCI6ICVt XG4iKSwgY29tbWFuZCk7CisJCQkJCWdvdG8gZmFpbDsKKwkJCQl9CisJCQkJaWYgKGZnZXRz KGJ1Ziwgc2l6ZW9mKGJ1ZiksIGZwKSkKKwkJCQl7CisJCQkJCWludAkJCWxpbmVsZW47CisJ CQkJCWludAkJCWRlY2xlbjsKKwkJCQkJY2hhcgkgICAqZGVjOworCisJCQkJCWxpbmVsZW4g PSBzdHJsZW4oYnVmKTsKKwkJCQkJaWYgKGJ1ZltsaW5lbGVuIC0gMV0gPT0gJ1xuJykKKwkJ CQkJeworCQkJCQkJYnVmW2xpbmVsZW4gLSAxXSA9ICdcMCc7CisJCQkJCQlsaW5lbGVuLS07 CisJCQkJCX0KKwkJCQkJZGVjbGVuID0gcGdfYjY0X2RlY19sZW4obGluZWxlbik7CisJCQkJ CWRlYyA9IG1hbGxvYyhkZWNsZW4pOworCQkJCQlpZiAoIWRlYykKKwkJCQkJeworCQkJCQkJ YXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwgbGlicHFfZ2V0dGV4dCgi b3V0IG9mIG1lbW9yeVxuIikpOworCQkJCQkJZ290byBmYWlsOworCQkJCQl9CisJCQkJCWRl Y2xlbiA9IHBnX2I2NF9kZWNvZGUoYnVmLCBsaW5lbGVuLCBkZWMsIGRlY2xlbik7CisJCQkJ CWlmIChkZWNsZW4gPCAwKQorCQkJCQl7CisJCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29u bi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiYmFzZTY0IGRl Y29kaW5nIGZhaWxlZFxuIikpOworCQkJCQkJZnJlZShkZWMpOworCQkJCQkJZ290byBmYWls OworCQkJCQl9CisJCQkJCXJlc3VsdCA9ICh1bnNpZ25lZCBjaGFyICopIGRlYzsKKwkJCQkJ KnRvbGVuID0gZGVjbGVuOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQlhcHBlbmRQ UUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJCQkJICBsaWJwcV9nZXR0 ZXh0KCJjb3VsZCBub3QgcmVhZCBmcm9tIGNvbW1hbmQ6ICVtXG4iKSk7CisJCQkJCXBjbG9z ZShmcCk7CisJCQkJCWdvdG8gZmFpbDsKKwkJCQl9CisJCQkJcGNsb3NlKGZwKTsKKwkJCX0K KwkJCWVsc2UKKwkJCXsKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNz YWdlLAorCQkJCQkJCQkgIGxpYnBxX2dldHRleHQoIkNNSyBsb29rdXAgc2NoZW1lIFwiJXNc IiBub3QgcmVjb2duaXplZFxuIiksIHNlcCArIDEpOworCQkJCWdvdG8gZmFpbDsKKwkJCX0K KwkJfQorCX0KKworCWlmICghZm91bmQpCisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29u bi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJubyBDTUsgbG9va3Vw IGZvdW5kIGZvciByZWFsbSBcIiVzXCJcbiIpLCBjbWstPmNta3JlYWxtKTsKKwl9CisKK2Zh aWw6CisJZnJlZShjbWtsb29rdXApOworCXJldHVybiByZXN1bHQ7Cit9CisKK2ludAorcHFT YXZlQ29sdW1uRW5jcnlwdGlvbktleShQR2Nvbm4gKmNvbm4sIGludCBrZXlpZCwgaW50IGNt a2lkLCBpbnQgY21rYWxnLCBjb25zdCB1bnNpZ25lZCBjaGFyICp2YWx1ZSwgaW50IGxlbikK K3sKKwlQR0NNSwkgICAqY21rID0gTlVMTDsKKwl1bnNpZ25lZCBjaGFyICpwbGFpbnZhbCA9 IE5VTEw7CisJaW50CQkJcGxhaW52YWxsZW4gPSAwOworCWJvb2wJCWZvdW5kOworCisJZm9y IChpbnQgaSA9IDA7IGkgPCBjb25uLT5uY21rczsgaSsrKQorCXsKKwkJaWYgKGNvbm4tPmNt a3NbaV0uY21raWQgPT0gY21raWQpCisJCXsKKwkJCWNtayA9ICZjb25uLT5jbWtzW2ldOwor CQkJYnJlYWs7CisJCX0KKwl9CisKKwlpZiAoIWNtaykKKwkJcmV0dXJuIEVPRjsKKworCXBs YWludmFsID0gZGVjcnlwdF9jZWsoY29ubiwgY21rLCBjbWthbGcsIGxlbiwgdmFsdWUsICZw bGFpbnZhbGxlbik7CisJaWYgKCFwbGFpbnZhbCkKKwkJcmV0dXJuIEVPRjsKKworCWZvdW5k ID0gZmFsc2U7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBjb25uLT5uY2VrczsgaSsrKQorCXsK KwkJc3RydWN0IHBnX2NlayAqY2hlY2tjZWsgPSAmY29ubi0+Y2Vrc1tpXTsKKworCQkvKiBy ZXBsYWNlIGV4aXN0aW5nPyAqLworCQlpZiAoY2hlY2tjZWstPmNla2lkID09IGtleWlkKQor CQl7CisJCQlmcmVlKGNoZWNrY2VrLT5jZWtkYXRhKTsKKwkJCWNoZWNrY2VrLT5jZWtkYXRh ID0gcGxhaW52YWw7CisJCQljaGVja2Nlay0+Y2VrZGF0YWxlbiA9IHBsYWludmFsbGVuOwor CQkJZm91bmQgPSB0cnVlOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwkvKiBhcHBlbmQgbmV3 PyAqLworCWlmICghZm91bmQpCisJeworCQlpbnQJCQluZXduY2VrczsKKwkJc3RydWN0IHBn X2NlayAqbmV3Y2VrczsKKwkJc3RydWN0IHBnX2NlayAqbmV3Y2VrOworCisJCW5ld25jZWtz ID0gY29ubi0+bmNla3MgKyAxOworCQlpZiAobmV3bmNla3MgPD0gMCkKKwkJeworCQkJZnJl ZShwbGFpbnZhbCk7CisJCQlyZXR1cm4gRU9GOworCQl9CisJCW5ld2Nla3MgPSByZWFsbG9j KGNvbm4tPmNla3MsIG5ld25jZWtzICogc2l6ZW9mKHN0cnVjdCBwZ19jZWspKTsKKwkJaWYg KCFuZXdjZWtzKQorCQl7CisJCQlmcmVlKHBsYWludmFsKTsKKwkJCXJldHVybiBFT0Y7CisJ CX0KKworCQluZXdjZWsgPSAmbmV3Y2Vrc1tuZXduY2VrcyAtIDFdOworCQluZXdjZWstPmNl a2lkID0ga2V5aWQ7CisJCW5ld2Nlay0+Y2VrZGF0YSA9IHBsYWludmFsOworCQluZXdjZWst PmNla2RhdGFsZW4gPSBwbGFpbnZhbGxlbjsKKworCQljb25uLT5uY2VrcyA9IG5ld25jZWtz OworCQljb25uLT5jZWtzID0gbmV3Y2VrczsKKwl9CisKKwlyZXR1cm4gMDsKK30KIAogLyoK ICAqIHBxUm93UHJvY2Vzc29yCkBAIC0xMjU0LDkgKzE2MzQsNTggQEAgcHFSb3dQcm9jZXNz b3IoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICoqZXJybXNncCkKIAkJfQogCQllbHNlCiAJ CXsKLQkJCWJvb2wJCWlzYmluYXJ5ID0gKHJlcy0+YXR0RGVzY3NbaV0uZm9ybWF0ICE9IDAp OworCQkJYm9vbAkJaXNiaW5hcnkgPSAoKHJlcy0+YXR0RGVzY3NbaV0uZm9ybWF0ICYgMHgw RikgIT0gMCk7CiAJCQljaGFyCSAgICp2YWw7CiAKKwkJCWlmIChyZXMtPmF0dERlc2NzW2ld LmNla2lkKQorCQkJeworI2lmZGVmIFVTRV9TU0wKKwkJCQlQR0NFSwkgICAqY2VrID0gTlVM TDsKKworCQkJCWZvciAoaW50IGogPSAwOyBqIDwgY29ubi0+bmNla3M7IGorKykKKwkJCQl7 CisJCQkJCWlmIChjb25uLT5jZWtzW2pdLmNla2lkID09IHJlcy0+YXR0RGVzY3NbaV0uY2Vr aWQpCisJCQkJCXsKKwkJCQkJCWNlayA9ICZjb25uLT5jZWtzW2pdOworCQkJCQkJYnJlYWs7 CisJCQkJCX0KKwkJCQl9CisJCQkJaWYgKCFjZWspCisJCQkJeworCQkJCQkqZXJybXNncCA9 IGxpYnBxX2dldHRleHQoImNvbHVtbiBlbmNyeXB0aW9uIGtleSBub3QgZm91bmQiKTsKKwkJ CQkJZ290byBmYWlsOworCQkJCX0KKworCQkJCWlmIChpc2JpbmFyeSkKKwkJCQl7CisJCQkJ CXZhbCA9IChjaGFyICopIGRlY3J5cHRfdmFsdWUocmVzLCBjZWssIHJlcy0+YXR0RGVzY3Nb aV0uY2VrYWxnLAorCQkJCQkJCQkJCQkJIChjb25zdCB1bnNpZ25lZCBjaGFyICopIGNvbHVt bnNbaV0udmFsdWUsIGNsZW4sIGVycm1zZ3ApOworCQkJCX0KKwkJCQllbHNlCisJCQkJewor CQkJCQl1bnNpZ25lZCBjaGFyICpidWY7CisJCQkJCXVuc2lnbmVkIGNoYXIgKmVuY2NvbHZh bDsKKwkJCQkJc2l6ZV90CQllbmNjb2x2YWxsZW47CisKKwkJCQkJYnVmID0gbWFsbG9jKGNs ZW4gKyAxKTsKKwkJCQkJbWVtY3B5KGJ1ZiwgY29sdW1uc1tpXS52YWx1ZSwgY2xlbik7CisJ CQkJCWJ1ZltjbGVuXSA9ICdcMCc7CisJCQkJCWVuY2NvbHZhbCA9IFBRdW5lc2NhcGVCeXRl YShidWYsICZlbmNjb2x2YWxsZW4pOworCQkJCQl2YWwgPSAoY2hhciAqKSBkZWNyeXB0X3Zh bHVlKHJlcywgY2VrLCByZXMtPmF0dERlc2NzW2ldLmNla2FsZywKKwkJCQkJCQkJCQkJCSBl bmNjb2x2YWwsIGVuY2NvbHZhbGxlbiwgZXJybXNncCk7CisJCQkJCWZyZWUoZW5jY29sdmFs KTsKKwkJCQkJZnJlZShidWYpOworCQkJCX0KKworCQkJCWlmICh2YWwgPT0gTlVMTCkKKwkJ CQkJZ290byBmYWlsOworI2Vsc2UKKwkJCQkqZXJybXNncCA9IGxpYnBxX2dldHRleHQoImNv bHVtbiBlbmNyeXB0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBidWlsZCIpOworCQkJCWdv dG8gZmFpbDsKKyNlbmRpZgorCQkJfQorCQkJZWxzZQorCQkJewogCQkJdmFsID0gKGNoYXIg KikgcHFSZXN1bHRBbGxvYyhyZXMsIGNsZW4gKyAxLCBpc2JpbmFyeSk7CiAJCQlpZiAodmFs ID09IE5VTEwpCiAJCQkJZ290byBmYWlsOwpAQCAtMTI2NCw2ICsxNjkzLDcgQEAgcHFSb3dQ cm9jZXNzb3IoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICoqZXJybXNncCkKIAkJCS8qIGNv cHkgYW5kIHplcm8tdGVybWluYXRlIHRoZSBkYXRhIChldmVuIGlmIGl0J3MgYmluYXJ5KSAq LwogCQkJbWVtY3B5KHZhbCwgY29sdW1uc1tpXS52YWx1ZSwgY2xlbik7CiAJCQl2YWxbY2xl bl0gPSAnXDAnOworCQkJfQogCiAJCQl0dXBbaV0ubGVuID0gY2xlbjsKIAkJCXR1cFtpXS52 YWx1ZSA9IHZhbDsKQEAgLTE1NjgsNyArMTk5OCw5IEBAIFBRc2VuZFF1ZXJ5UGFyYW1zKFBH Y29ubiAqY29ubiwKIAkJCQkJCSAgIHBhcmFtVmFsdWVzLAogCQkJCQkJICAgcGFyYW1MZW5n dGhzLAogCQkJCQkJICAgcGFyYW1Gb3JtYXRzLAotCQkJCQkJICAgcmVzdWx0Rm9ybWF0KTsK KwkJCQkJCSAgIE5VTEwsCisJCQkJCQkgICByZXN1bHRGb3JtYXQsCisJCQkJCQkgICBOVUxM KTsKIH0KIAogLyoKQEAgLTE2ODYsNiArMjExOCwyMCBAQCBQUXNlbmRRdWVyeVByZXBhcmVk KFBHY29ubiAqY29ubiwKIAkJCQkJY29uc3QgaW50ICpwYXJhbUxlbmd0aHMsCiAJCQkJCWNv bnN0IGludCAqcGFyYW1Gb3JtYXRzLAogCQkJCQlpbnQgcmVzdWx0Rm9ybWF0KQoreworCXJl dHVybiBQUXNlbmRRdWVyeVByZXBhcmVkMihjb25uLCBzdG10TmFtZSwgblBhcmFtcywgcGFy YW1WYWx1ZXMsIHBhcmFtTGVuZ3RocywgcGFyYW1Gb3JtYXRzLCBOVUxMLCByZXN1bHRGb3Jt YXQsIE5VTEwpOworfQorCitpbnQKK1BRc2VuZFF1ZXJ5UHJlcGFyZWQyKFBHY29ubiAqY29u biwKKwkJCQkJIGNvbnN0IGNoYXIgKnN0bXROYW1lLAorCQkJCQkgaW50IG5QYXJhbXMsCisJ CQkJCSBjb25zdCBjaGFyICpjb25zdCAqcGFyYW1WYWx1ZXMsCisJCQkJCSBjb25zdCBpbnQg KnBhcmFtTGVuZ3RocywKKwkJCQkJIGNvbnN0IGludCAqcGFyYW1Gb3JtYXRzLAorCQkJCQkg Y29uc3QgaW50ICpwYXJhbUZvcmNlQ29sdW1uRW5jcnlwdGlvbnMsCisJCQkJCSBpbnQgcmVz dWx0Rm9ybWF0LAorCQkJCQkgUEdyZXN1bHQgKnBhcmFtRGVzYykKIHsKIAlpZiAoIVBRc2Vu ZFF1ZXJ5U3RhcnQoY29ubiwgdHJ1ZSkpCiAJCXJldHVybiAwOwpAQCAtMTcxMyw3ICsyMTU5 LDkgQEAgUFFzZW5kUXVlcnlQcmVwYXJlZChQR2Nvbm4gKmNvbm4sCiAJCQkJCQkgICBwYXJh bVZhbHVlcywKIAkJCQkJCSAgIHBhcmFtTGVuZ3RocywKIAkJCQkJCSAgIHBhcmFtRm9ybWF0 cywKLQkJCQkJCSAgIHJlc3VsdEZvcm1hdCk7CisJCQkJCQkgICBwYXJhbUZvcmNlQ29sdW1u RW5jcnlwdGlvbnMsCisJCQkJCQkgICByZXN1bHRGb3JtYXQsCisJCQkJCQkgICBwYXJhbURl c2MpOwogfQogCiAvKgpAQCAtMTgxMiw3ICsyMjYwLDkgQEAgUFFzZW5kUXVlcnlHdXRzKFBH Y29ubiAqY29ubiwKIAkJCQljb25zdCBjaGFyICpjb25zdCAqcGFyYW1WYWx1ZXMsCiAJCQkJ Y29uc3QgaW50ICpwYXJhbUxlbmd0aHMsCiAJCQkJY29uc3QgaW50ICpwYXJhbUZvcm1hdHMs Ci0JCQkJaW50IHJlc3VsdEZvcm1hdCkKKwkJCQljb25zdCBpbnQgKnBhcmFtRm9yY2VDb2x1 bW5FbmNyeXB0aW9ucywKKwkJCQlpbnQgcmVzdWx0Rm9ybWF0LAorCQkJCVBHcmVzdWx0ICpw YXJhbURlc2MpCiB7CiAJaW50CQkJaTsKIAlQR2NtZFF1ZXVlRW50cnkgKmVudHJ5OwpAQCAt MTg1OSwxNCArMjMwOSw1MyBAQCBQUXNlbmRRdWVyeUd1dHMoUEdjb25uICpjb25uLAogCQlw cVB1dHMoc3RtdE5hbWUsIGNvbm4pIDwgMCkKIAkJZ290byBzZW5kRmFpbGVkOwogCisJLyog Q2hlY2sgZm9yY2UgY29sdW1uIGVuY3J5cHRpb24gKi8KKwlpZiAoblBhcmFtcyA+IDAgJiYg cGFyYW1Gb3JjZUNvbHVtbkVuY3J5cHRpb25zKQorCXsKKwkJZm9yIChpID0gMDsgaSA8IG5Q YXJhbXM7IGkrKykKKwkJeworCQkJaWYgKHBhcmFtRm9yY2VDb2x1bW5FbmNyeXB0aW9uc1tp XSkKKwkJCXsKKwkJCQlpZiAoIShwYXJhbURlc2MgJiYKKwkJCQkJICBwYXJhbURlc2MtPnBh cmFtRGVzY3MgJiYKKwkJCQkJICBwYXJhbURlc2MtPnBhcmFtRGVzY3NbaV0uY2VraWQpKQor CQkJCXsKKwkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwK KwkJCQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgicGFyYW1ldGVyIHdpdGggZm9yY2VkIGVuY3J5 cHRpb24gaXMgbm90IHRvIGJlIGVuY3J5cHRlZFxuIikpOworCQkJCQlnb3RvIHNlbmRGYWls ZWQ7CisJCQkJfQorCQkJfQorCQl9CisJfQorCiAJLyogU2VuZCBwYXJhbWV0ZXIgZm9ybWF0 cyAqLwotCWlmIChuUGFyYW1zID4gMCAmJiBwYXJhbUZvcm1hdHMpCisJaWYgKG5QYXJhbXMg PiAwICYmIChwYXJhbUZvcm1hdHMgfHwgKHBhcmFtRGVzYyAmJiBwYXJhbURlc2MtPnBhcmFt RGVzY3MpKSkKIAl7CiAJCWlmIChwcVB1dEludChuUGFyYW1zLCAyLCBjb25uKSA8IDApCiAJ CQlnb3RvIHNlbmRGYWlsZWQ7CisKIAkJZm9yIChpID0gMDsgaSA8IG5QYXJhbXM7IGkrKykK IAkJewotCQkJaWYgKHBxUHV0SW50KHBhcmFtRm9ybWF0c1tpXSwgMiwgY29ubikgPCAwKQor CQkJaW50CQkJZm9ybWF0ID0gcGFyYW1Gb3JtYXRzID8gcGFyYW1Gb3JtYXRzW2ldIDogMDsK KworCQkJaWYgKHBhcmFtRGVzYyAmJiBwYXJhbURlc2MtPnBhcmFtRGVzY3MpCisJCQl7CisJ CQkJUEdyZXNQYXJhbURlc2MgKnBkID0gJnBhcmFtRGVzYy0+cGFyYW1EZXNjc1tpXTsKKwor CQkJCWlmIChwZC0+Y2VraWQpCisJCQkJeworCQkJCQlpZiAoZm9ybWF0ICE9IDApCisJCQkJ CXsKKwkJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJ CQkJCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJmb3JtYXQgbXVzdCBiZSB0ZXh0IGZvciBlbmNy eXB0ZWQgcGFyYW1ldGVyXG4iKSk7CisJCQkJCQlnb3RvIHNlbmRGYWlsZWQ7CisJCQkJCX0K KwkJCQkJZm9ybWF0ID0gMTsKKwkJCQkJZm9ybWF0IHw9IDB4MTA7CisJCQkJfQorCQkJfQor CisJCQlpZiAocHFQdXRJbnQoZm9ybWF0LCAyLCBjb25uKSA8IDApCiAJCQkJZ290byBzZW5k RmFpbGVkOwogCQl9CiAJfQpAQCAtMTg4NSw2ICsyMzc0LDcgQEAgUFFzZW5kUXVlcnlHdXRz KFBHY29ubiAqY29ubiwKIAkJaWYgKHBhcmFtVmFsdWVzICYmIHBhcmFtVmFsdWVzW2ldKQog CQl7CiAJCQlpbnQJCQluYnl0ZXM7CisJCQljb25zdCBjaGFyICpwYXJhbVZhbHVlOwogCiAJ CQlpZiAocGFyYW1Gb3JtYXRzICYmIHBhcmFtRm9ybWF0c1tpXSAhPSAwKQogCQkJewpAQCAt MTkwMyw5ICsyMzkzLDU0IEBAIFBRc2VuZFF1ZXJ5R3V0cyhQR2Nvbm4gKmNvbm4sCiAJCQkJ LyogdGV4dCBwYXJhbWV0ZXIsIGRvIG5vdCB1c2UgcGFyYW1MZW5ndGhzICovCiAJCQkJbmJ5 dGVzID0gc3RybGVuKHBhcmFtVmFsdWVzW2ldKTsKIAkJCX0KKworCQkJcGFyYW1WYWx1ZSA9 IHBhcmFtVmFsdWVzW2ldOworCisJCQlpZiAocGFyYW1EZXNjICYmIHBhcmFtRGVzYy0+cGFy YW1EZXNjcyAmJiBwYXJhbURlc2MtPnBhcmFtRGVzY3NbaV0uY2VraWQpCisJCQl7CisjaWZk ZWYgVVNFX1NTTAorCQkJCWJvb2wJCWVuY19kZXQgPSAocGFyYW1EZXNjLT5wYXJhbURlc2Nz W2ldLmZsYWdzICYgMHgwMSkgIT0gMDsKKwkJCQlQR0NFSwkgICAqY2VrID0gTlVMTDsKKwkJ CQljaGFyCSAgICplbmNfcGFyYW1WYWx1ZTsKKwkJCQlpbnQJCQllbmNfbmJ5dGVzID0gbmJ5 dGVzOworCisJCQkJZm9yIChpbnQgaiA9IDA7IGogPCBjb25uLT5uY2VrczsgaisrKQorCQkJ CXsKKwkJCQkJaWYgKGNvbm4tPmNla3Nbal0uY2VraWQgPT0gcGFyYW1EZXNjLT5wYXJhbURl c2NzW2ldLmNla2lkKQorCQkJCQl7CisJCQkJCQljZWsgPSAmY29ubi0+Y2Vrc1tqXTsKKwkJ CQkJCWJyZWFrOworCQkJCQl9CisJCQkJfQorCQkJCWlmICghY2VrKQorCQkJCXsKKwkJCQkJ YXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCQkJCSAgbGli cHFfZ2V0dGV4dCgiY29sdW1uIGVuY3J5cHRpb24ga2V5IG5vdCBmb3VuZFxuIikpOworCQkJ CQlnb3RvIHNlbmRGYWlsZWQ7CisJCQkJfQorCisJCQkJZW5jX3BhcmFtVmFsdWUgPSAoY2hh ciAqKSBlbmNyeXB0X3ZhbHVlKGNvbm4sIGNlaywgcGFyYW1EZXNjLT5wYXJhbURlc2NzW2ld LmNla2FsZywKKwkJCQkJCQkJCQkJCQkJKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcGFyYW1W YWx1ZSwgJmVuY19uYnl0ZXMsIGVuY19kZXQpOworCQkJCWlmICghZW5jX3BhcmFtVmFsdWUp CisJCQkJCWdvdG8gc2VuZEZhaWxlZDsKKworCQkJCWlmIChwcVB1dEludChlbmNfbmJ5dGVz LCA0LCBjb25uKSA8IDAgfHwKKwkJCQkJcHFQdXRuY2hhcihlbmNfcGFyYW1WYWx1ZSwgZW5j X25ieXRlcywgY29ubikgPCAwKQorCQkJCQlnb3RvIHNlbmRGYWlsZWQ7CisKKwkJCQlmcmVl KGVuY19wYXJhbVZhbHVlKTsKKyNlbHNlCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4t PmVycm9yTWVzc2FnZSwKKwkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb2x1bW4gZW5jcnlw dGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnVpbGRcbiIpKTsKKwkJCQlnb3RvIHNlbmRG YWlsZWQ7CisjZW5kaWYKKwkJCX0KKwkJCWVsc2UKKwkJCXsKIAkJCWlmIChwcVB1dEludChu Ynl0ZXMsIDQsIGNvbm4pIDwgMCB8fAotCQkJCXBxUHV0bmNoYXIocGFyYW1WYWx1ZXNbaV0s IG5ieXRlcywgY29ubikgPCAwKQorCQkJCXBxUHV0bmNoYXIocGFyYW1WYWx1ZSwgbmJ5dGVz LCBjb25uKSA8IDApCiAJCQkJZ290byBzZW5kRmFpbGVkOworCQkJfQogCQl9CiAJCWVsc2UK IAkJewpAQCAtMjMzOCwxMiArMjg3MywyNyBAQCBQUWV4ZWNQcmVwYXJlZChQR2Nvbm4gKmNv bm4sCiAJCQkgICBjb25zdCBpbnQgKnBhcmFtTGVuZ3RocywKIAkJCSAgIGNvbnN0IGludCAq cGFyYW1Gb3JtYXRzLAogCQkJICAgaW50IHJlc3VsdEZvcm1hdCkKK3sKKwlyZXR1cm4gUFFl eGVjUHJlcGFyZWQyKGNvbm4sIHN0bXROYW1lLCBuUGFyYW1zLCBwYXJhbVZhbHVlcywgcGFy YW1MZW5ndGhzLCBwYXJhbUZvcm1hdHMsIE5VTEwsIHJlc3VsdEZvcm1hdCwgTlVMTCk7Cit9 CisKK1BHcmVzdWx0ICoKK1BRZXhlY1ByZXBhcmVkMihQR2Nvbm4gKmNvbm4sCisJCQkJY29u c3QgY2hhciAqc3RtdE5hbWUsCisJCQkJaW50IG5QYXJhbXMsCisJCQkJY29uc3QgY2hhciAq Y29uc3QgKnBhcmFtVmFsdWVzLAorCQkJCWNvbnN0IGludCAqcGFyYW1MZW5ndGhzLAorCQkJ CWNvbnN0IGludCAqcGFyYW1Gb3JtYXRzLAorCQkJCWNvbnN0IGludCAqcGFyYW1Gb3JjZUNv bHVtbkVuY3J5cHRpb25zLAorCQkJCWludCByZXN1bHRGb3JtYXQsCisJCQkJUEdyZXN1bHQg KnBhcmFtRGVzYykKIHsKIAlpZiAoIVBRZXhlY1N0YXJ0KGNvbm4pKQogCQlyZXR1cm4gTlVM TDsKLQlpZiAoIVBRc2VuZFF1ZXJ5UHJlcGFyZWQoY29ubiwgc3RtdE5hbWUsCi0JCQkJCQkJ IG5QYXJhbXMsIHBhcmFtVmFsdWVzLCBwYXJhbUxlbmd0aHMsCi0JCQkJCQkJIHBhcmFtRm9y bWF0cywgcmVzdWx0Rm9ybWF0KSkKKwlpZiAoIVBRc2VuZFF1ZXJ5UHJlcGFyZWQyKGNvbm4s IHN0bXROYW1lLAorCQkJCQkJCSAgblBhcmFtcywgcGFyYW1WYWx1ZXMsIHBhcmFtTGVuZ3Ro cywKKwkJCQkJCQkgIHBhcmFtRm9ybWF0cywgcGFyYW1Gb3JjZUNvbHVtbkVuY3J5cHRpb25z LAorCQkJCQkJCSAgcmVzdWx0Rm9ybWF0LCBwYXJhbURlc2MpKQogCQlyZXR1cm4gTlVMTDsK IAlyZXR1cm4gUFFleGVjRmluaXNoKGNvbm4pOwogfQpAQCAtMzYwNyw2ICs0MTU3LDE3IEBA IFBRZm1vZChjb25zdCBQR3Jlc3VsdCAqcmVzLCBpbnQgZmllbGRfbnVtKQogCQlyZXR1cm4g MDsKIH0KIAoraW50CitQUWZpc2VuY3J5cHRlZChjb25zdCBQR3Jlc3VsdCAqcmVzLCBpbnQg ZmllbGRfbnVtKQoreworCWlmICghY2hlY2tfZmllbGRfbnVtYmVyKHJlcywgZmllbGRfbnVt KSkKKwkJcmV0dXJuIGZhbHNlOworCWlmIChyZXMtPmF0dERlc2NzKQorCQlyZXR1cm4gKHJl cy0+YXR0RGVzY3NbZmllbGRfbnVtXS5jZWtpZCAhPSAwKTsKKwllbHNlCisJCXJldHVybiBm YWxzZTsKK30KKwogY2hhciAqCiBQUWNtZFN0YXR1cyhQR3Jlc3VsdCAqcmVzKQogewpAQCAt Mzc5Miw2ICs0MzUzLDE3IEBAIFBRcGFyYW10eXBlKGNvbnN0IFBHcmVzdWx0ICpyZXMsIGlu dCBwYXJhbV9udW0pCiAJCXJldHVybiBJbnZhbGlkT2lkOwogfQogCitpbnQKK1BRcGFyYW1p c2VuY3J5cHRlZChjb25zdCBQR3Jlc3VsdCAqcmVzLCBpbnQgcGFyYW1fbnVtKQoreworCWlm ICghY2hlY2tfcGFyYW1fbnVtYmVyKHJlcywgcGFyYW1fbnVtKSkKKwkJcmV0dXJuIGZhbHNl OworCWlmIChyZXMtPnBhcmFtRGVzY3MpCisJCXJldHVybiAocmVzLT5wYXJhbURlc2NzW3Bh cmFtX251bV0uY2VraWQgIT0gMCk7CisJZWxzZQorCQlyZXR1cm4gZmFsc2U7Cit9CisKIAog LyogUFFzZXRub25ibG9ja2luZzoKICAqCXNldHMgdGhlIFBHY29ubidzIGRhdGFiYXNlIGNv bm5lY3Rpb24gbm9uLWJsb2NraW5nIGlmIHRoZSBhcmcgaXMgdHJ1ZQpkaWZmIC0tZ2l0IGEv c3JjL2ludGVyZmFjZXMvbGlicHEvZmUtcHJvdG9jb2wzLmMgYi9zcmMvaW50ZXJmYWNlcy9s aWJwcS9mZS1wcm90b2NvbDMuYwppbmRleCAxMGM3NmRhZjZlLi45NDYxYzA0YmJlIDEwMDY0 NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1wcm90b2NvbDMuYworKysgYi9zcmMv aW50ZXJmYWNlcy9saWJwcS9mZS1wcm90b2NvbDMuYwpAQCAtNDUsNiArNDUsOCBAQCBzdGF0 aWMgaW50CWdldFJvd0Rlc2NyaXB0aW9ucyhQR2Nvbm4gKmNvbm4sIGludCBtc2dMZW5ndGgp Owogc3RhdGljIGludAlnZXRQYXJhbURlc2NyaXB0aW9ucyhQR2Nvbm4gKmNvbm4sIGludCBt c2dMZW5ndGgpOwogc3RhdGljIGludAlnZXRBbm90aGVyVHVwbGUoUEdjb25uICpjb25uLCBp bnQgbXNnTGVuZ3RoKTsKIHN0YXRpYyBpbnQJZ2V0UGFyYW1ldGVyU3RhdHVzKFBHY29ubiAq Y29ubik7CitzdGF0aWMgaW50CWdldENvbHVtbk1hc3RlcktleShQR2Nvbm4gKmNvbm4pOwor c3RhdGljIGludAlnZXRDb2x1bW5FbmNyeXB0aW9uS2V5KFBHY29ubiAqY29ubik7CiBzdGF0 aWMgaW50CWdldE5vdGlmeShQR2Nvbm4gKmNvbm4pOwogc3RhdGljIGludAlnZXRDb3B5U3Rh cnQoUEdjb25uICpjb25uLCBFeGVjU3RhdHVzVHlwZSBjb3B5dHlwZSk7CiBzdGF0aWMgaW50 CWdldFJlYWR5Rm9yUXVlcnkoUEdjb25uICpjb25uKTsKQEAgLTMxNSw2ICszMTcsMjIgQEAg cHFQYXJzZUlucHV0MyhQR2Nvbm4gKmNvbm4pCiAJCQkJCWlmIChwcUdldEludCgmKGNvbm4t PmJlX2tleSksIDQsIGNvbm4pKQogCQkJCQkJcmV0dXJuOwogCQkJCQlicmVhazsKKwkJCQlj YXNlICd5JzoJCS8qIENvbHVtbiBNYXN0ZXIgS2V5ICovCisJCQkJCWlmIChnZXRDb2x1bW5N YXN0ZXJLZXkoY29ubikpCisJCQkJCXsKKwkJCQkJCS8vIFRPRE86IHJldmlldyBlcnJvciBo YW5kbGluZyBoZXJlCisJCQkJCQlwcVNhdmVFcnJvclJlc3VsdChjb25uKTsKKwkJCQkJCXBx SW50ZXJuYWxOb3RpY2UoJmNvbm4tPm5vdGljZUhvb2tzLCAiJXMiLCBjb25uLT5lcnJvck1l c3NhZ2UuZGF0YSk7CisJCQkJCX0KKwkJCQkJYnJlYWs7CisJCQkJY2FzZSAnWSc6CQkvKiBD b2x1bW4gRW5jcnlwdGlvbiBLZXkgKi8KKwkJCQkJaWYgKGdldENvbHVtbkVuY3J5cHRpb25L ZXkoY29ubikpCisJCQkJCXsKKwkJCQkJCS8vIFRPRE86IHJldmlldyBlcnJvciBoYW5kbGlu ZyBoZXJlCisJCQkJCQlwcVNhdmVFcnJvclJlc3VsdChjb25uKTsKKwkJCQkJCXBxSW50ZXJu YWxOb3RpY2UoJmNvbm4tPm5vdGljZUhvb2tzLCAiJXMiLCBjb25uLT5lcnJvck1lc3NhZ2Uu ZGF0YSk7CisJCQkJCX0KKwkJCQkJYnJlYWs7CiAJCQkJY2FzZSAnVCc6CQkvKiBSb3cgRGVz Y3JpcHRpb24gKi8KIAkJCQkJaWYgKGNvbm4tPmVycm9yX3Jlc3VsdCB8fAogCQkJCQkJKGNv bm4tPnJlc3VsdCAhPSBOVUxMICYmCkBAIC01NzIsNiArNTkwLDggQEAgZ2V0Um93RGVzY3Jp cHRpb25zKFBHY29ubiAqY29ubiwgaW50IG1zZ0xlbmd0aCkKIAkJaW50CQkJdHlwbGVuOwog CQlpbnQJCQlhdHR0eXBtb2Q7CiAJCWludAkJCWZvcm1hdDsKKwkJaW50CQkJY2VraWQ7CisJ CWludAkJCWNla2FsZzsKIAogCQlpZiAocHFHZXRzKCZjb25uLT53b3JrQnVmZmVyLCBjb25u KSB8fAogCQkJcHFHZXRJbnQoJnRhYmxlaWQsIDQsIGNvbm4pIHx8CkBAIC01NzksNyArNTk5 LDkgQEAgZ2V0Um93RGVzY3JpcHRpb25zKFBHY29ubiAqY29ubiwgaW50IG1zZ0xlbmd0aCkK IAkJCXBxR2V0SW50KCZ0eXBpZCwgNCwgY29ubikgfHwKIAkJCXBxR2V0SW50KCZ0eXBsZW4s IDIsIGNvbm4pIHx8CiAJCQlwcUdldEludCgmYXR0dHlwbW9kLCA0LCBjb25uKSB8fAotCQkJ cHFHZXRJbnQoJmZvcm1hdCwgMiwgY29ubikpCisJCQlwcUdldEludCgmZm9ybWF0LCAyLCBj b25uKSB8fAorCQkJcHFHZXRJbnQoJmNla2lkLCA0LCBjb25uKSB8fAorCQkJcHFHZXRJbnQo JmNla2FsZywgMiwgY29ubikpCiAJCXsKIAkJCS8qIFdlIHNob3VsZCBub3QgcnVuIG91dCBv ZiBkYXRhIGhlcmUsIHNvIGNvbXBsYWluICovCiAJCQllcnJtc2cgPSBsaWJwcV9nZXR0ZXh0 KCJpbnN1ZmZpY2llbnQgZGF0YSBpbiBcIlRcIiBtZXNzYWdlIik7CkBAIC02MDcsOCArNjI5 LDEwIEBAIGdldFJvd0Rlc2NyaXB0aW9ucyhQR2Nvbm4gKmNvbm4sIGludCBtc2dMZW5ndGgp CiAJCXJlc3VsdC0+YXR0RGVzY3NbaV0udHlwaWQgPSB0eXBpZDsKIAkJcmVzdWx0LT5hdHRE ZXNjc1tpXS50eXBsZW4gPSB0eXBsZW47CiAJCXJlc3VsdC0+YXR0RGVzY3NbaV0uYXR0dHlw bW9kID0gYXR0dHlwbW9kOworCQlyZXN1bHQtPmF0dERlc2NzW2ldLmNla2lkID0gY2VraWQ7 CisJCXJlc3VsdC0+YXR0RGVzY3NbaV0uY2VrYWxnID0gY2VrYWxnOwogCi0JCWlmIChmb3Jt YXQgIT0gMSkKKwkJaWYgKChmb3JtYXQgJiAweDBGKSAhPSAxKQogCQkJcmVzdWx0LT5iaW5h cnkgPSAwOwogCX0KIApAQCAtNzEwLDEwICs3MzQsMjIgQEAgZ2V0UGFyYW1EZXNjcmlwdGlv bnMoUEdjb25uICpjb25uLCBpbnQgbXNnTGVuZ3RoKQogCWZvciAoaSA9IDA7IGkgPCBucGFy YW1zOyBpKyspCiAJewogCQlpbnQJCQl0eXBpZDsKKwkJaW50CQkJY2VraWQ7CisJCWludAkJ CWNla2FsZzsKKwkJaW50CQkJZmxhZ3M7CiAKIAkJaWYgKHBxR2V0SW50KCZ0eXBpZCwgNCwg Y29ubikpCiAJCQlnb3RvIG5vdF9lbm91Z2hfZGF0YTsKIAkJcmVzdWx0LT5wYXJhbURlc2Nz W2ldLnR5cGlkID0gdHlwaWQ7CisJCWlmIChwcUdldEludCgmY2VraWQsIDQsIGNvbm4pKQor CQkJZ290byBub3RfZW5vdWdoX2RhdGE7CisJCXJlc3VsdC0+cGFyYW1EZXNjc1tpXS5jZWtp ZCA9IGNla2lkOworCQlpZiAocHFHZXRJbnQoJmNla2FsZywgMiwgY29ubikpCisJCQlnb3Rv IG5vdF9lbm91Z2hfZGF0YTsKKwkJcmVzdWx0LT5wYXJhbURlc2NzW2ldLmNla2FsZyA9IGNl a2FsZzsKKwkJaWYgKHBxR2V0SW50KCZmbGFncywgMiwgY29ubikpCisJCQlnb3RvIG5vdF9l bm91Z2hfZGF0YTsKKwkJcmVzdWx0LT5wYXJhbURlc2NzW2ldLmZsYWdzID0gZmxhZ3M7CiAJ fQogCiAJLyogU3VjY2VzcyEgKi8KQEAgLTE0MzksNiArMTQ3NSw4OSBAQCBnZXRQYXJhbWV0 ZXJTdGF0dXMoUEdjb25uICpjb25uKQogCXJldHVybiAwOwogfQogCisvKgorICogQXR0ZW1w dCB0byByZWFkIGEgQ29sdW1uTWFzdGVyS2V5IG1lc3NhZ2UuCisgKiBFbnRyeTogJ3knIG1l c3NhZ2UgdHlwZSBhbmQgbGVuZ3RoIGhhdmUgYWxyZWFkeSBiZWVuIGNvbnN1bWVkLgorICog RXhpdDogcmV0dXJucyAwIGlmIHN1Y2Nlc3NmdWxseSBjb25zdW1lZCBtZXNzYWdlLgorICoJ CSByZXR1cm5zIEVPRiBpZiBub3QgZW5vdWdoIGRhdGEuCisgKi8KK3N0YXRpYyBpbnQKK2dl dENvbHVtbk1hc3RlcktleShQR2Nvbm4gKmNvbm4pCit7CisJaW50CQkJa2V5aWQ7CisJY2hh cgkgICAqa2V5bmFtZTsKKwljaGFyCSAgICprZXlyZWFsbTsKKwlpbnQJCQlyZXQ7CisKKwkv KiBHZXQgdGhlIGtleSBJRCAqLworCWlmIChwcUdldEludCgma2V5aWQsIDQsIGNvbm4pICE9 IDApCisJCXJldHVybiBFT0Y7CisJLyogR2V0IHRoZSBrZXkgbmFtZSAqLworCWlmIChwcUdl dHMoJmNvbm4tPndvcmtCdWZmZXIsIGNvbm4pICE9IDApCisJCXJldHVybiBFT0Y7CisJa2V5 bmFtZSA9IHN0cmR1cChjb25uLT53b3JrQnVmZmVyLmRhdGEpOworCWlmICgha2V5bmFtZSkK KwkJcmV0dXJuIEVPRjsKKwkvKiBHZXQgdGhlIGtleSByZWFsbSAqLworCWlmIChwcUdldHMo JmNvbm4tPndvcmtCdWZmZXIsIGNvbm4pICE9IDApCisJCXJldHVybiBFT0Y7CisJa2V5cmVh bG0gPSBzdHJkdXAoY29ubi0+d29ya0J1ZmZlci5kYXRhKTsKKwlpZiAoIWtleXJlYWxtKQor CQlyZXR1cm4gRU9GOworCS8qIEFuZCBzYXZlIGl0ICovCisJcmV0ID0gcHFTYXZlQ29sdW1u TWFzdGVyS2V5KGNvbm4sIGtleWlkLCBrZXluYW1lLCBrZXlyZWFsbSk7CisKKwlmcmVlKGtl eW5hbWUpOworCWZyZWUoa2V5cmVhbG0pOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAq IEF0dGVtcHQgdG8gcmVhZCBhIENvbHVtbkVuY3J5cHRpb25LZXkgbWVzc2FnZS4KKyAqIEVu dHJ5OiAnWScgbWVzc2FnZSB0eXBlIGFuZCBsZW5ndGggaGF2ZSBhbHJlYWR5IGJlZW4gY29u c3VtZWQuCisgKiBFeGl0OiByZXR1cm5zIDAgaWYgc3VjY2Vzc2Z1bGx5IGNvbnN1bWVkIG1l c3NhZ2UuCisgKgkJIHJldHVybnMgRU9GIGlmIG5vdCBlbm91Z2ggZGF0YS4KKyAqLworc3Rh dGljIGludAorZ2V0Q29sdW1uRW5jcnlwdGlvbktleShQR2Nvbm4gKmNvbm4pCit7CisJaW50 CQkJa2V5aWQ7CisJaW50CQkJY21raWQ7CisJaW50CQkJY21rYWxnOworCWNoYXIJICAgKmJ1 ZjsKKwlpbnQJCQl2YWxsZW47CisKKwkvKiBHZXQgdGhlIGtleSBJRCAqLworCWlmIChwcUdl dEludCgma2V5aWQsIDQsIGNvbm4pICE9IDApCisJCXJldHVybiBFT0Y7CisJLyogR2V0IHRo ZSBDTUsgSUQgKi8KKwlpZiAocHFHZXRJbnQoJmNta2lkLCA0LCBjb25uKSAhPSAwKQorCQly ZXR1cm4gRU9GOworCS8qIEdldCB0aGUgQ01LIGFsZ29yaXRobSAqLworCWlmIChwcUdldElu dCgmY21rYWxnLCAyLCBjb25uKSAhPSAwKQorCQlyZXR1cm4gRU9GOworCS8qIEdldCB0aGUg a2V5IGRhdGEgbGVuICovCisJaWYgKHBxR2V0SW50KCZ2YWxsZW4sIDQsIGNvbm4pICE9IDAp CisJCXJldHVybiBFT0Y7CisJLyogR2V0IHRoZSBrZXkgZGF0YSAqLworCWJ1ZiA9IG1hbGxv Yyh2YWxsZW4pOworCWlmICghYnVmKQorCQlyZXR1cm4gRU9GOworCWlmIChwcUdldG5jaGFy KGJ1ZiwgdmFsbGVuLCBjb25uKSAhPSAwKQorCXsKKwkJZnJlZShidWYpOworCQlyZXR1cm4g RU9GOworCX0KKwkvKiBBbmQgc2F2ZSBpdCAqLworCWlmIChwcVNhdmVDb2x1bW5FbmNyeXB0 aW9uS2V5KGNvbm4sIGtleWlkLCBjbWtpZCwgY21rYWxnLCAodW5zaWduZWQgY2hhciAqKSBi dWYsIHZhbGxlbikgIT0gMCkKKwl7CisJCWZyZWUoYnVmKTsKKwkJcmV0dXJuIEVPRjsKKwl9 CisJZnJlZShidWYpOworCXJldHVybiAwOworfQogCiAvKgogICogQXR0ZW1wdCB0byByZWFk IGEgTm90aWZ5IHJlc3BvbnNlIG1lc3NhZ2UuCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNl cy9saWJwcS9mZS10cmFjZS5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtdHJhY2UuYwpp bmRleCA1ZDY4Y2YyZWIzLi5lMDhjYmNmZjMzIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNl cy9saWJwcS9mZS10cmFjZS5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXRyYWNl LmMKQEAgLTQ1OCw3ICs0NTgsMTIgQEAgcHFUcmFjZU91dHB1dHQoRklMRSAqZiwgY29uc3Qg Y2hhciAqbWVzc2FnZSwgaW50ICpjdXJzb3IsIGJvb2wgcmVncmVzcykKIAluZmllbGRzID0g cHFUcmFjZU91dHB1dEludDE2KGYsIG1lc3NhZ2UsIGN1cnNvcik7CiAKIAlmb3IgKGludCBp ID0gMDsgaSA8IG5maWVsZHM7IGkrKykKKwl7CisJCXBxVHJhY2VPdXRwdXRJbnQzMihmLCBt ZXNzYWdlLCBjdXJzb3IsIHJlZ3Jlc3MpOwogCQlwcVRyYWNlT3V0cHV0SW50MzIoZiwgbWVz c2FnZSwgY3Vyc29yLCByZWdyZXNzKTsKKwkJcHFUcmFjZU91dHB1dEludDE2KGYsIG1lc3Nh Z2UsIGN1cnNvcik7CisJCXBxVHJhY2VPdXRwdXRJbnQxNihmLCBtZXNzYWdlLCBjdXJzb3Ip OworCX0KIH0KIAogLyogUm93RGVzY3JpcHRpb24gKi8KQEAgLTQ3OSw2ICs0ODQsOCBAQCBw cVRyYWNlT3V0cHV0VChGSUxFICpmLCBjb25zdCBjaGFyICptZXNzYWdlLCBpbnQgKmN1cnNv ciwgYm9vbCByZWdyZXNzKQogCQlwcVRyYWNlT3V0cHV0SW50MTYoZiwgbWVzc2FnZSwgY3Vy c29yKTsKIAkJcHFUcmFjZU91dHB1dEludDMyKGYsIG1lc3NhZ2UsIGN1cnNvciwgZmFsc2Up OwogCQlwcVRyYWNlT3V0cHV0SW50MTYoZiwgbWVzc2FnZSwgY3Vyc29yKTsKKwkJcHFUcmFj ZU91dHB1dEludDMyKGYsIG1lc3NhZ2UsIGN1cnNvciwgcmVncmVzcyk7CisJCXBxVHJhY2VP dXRwdXRJbnQxNihmLCBtZXNzYWdlLCBjdXJzb3IpOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEv c3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaCBiL3NyYy9pbnRlcmZhY2VzL2xpYnBx L2xpYnBxLWZlLmgKaW5kZXggNzk4NjQ0NWYxYS4uNDJmYmUwY2Q0OSAxMDA2NDQKLS0tIGEv c3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaAorKysgYi9zcmMvaW50ZXJmYWNlcy9s aWJwcS9saWJwcS1mZS5oCkBAIC0yNjcsNiArMjY3LDggQEAgdHlwZWRlZiBzdHJ1Y3QgcGdy ZXNBdHREZXNjCiAJT2lkCQkJdHlwaWQ7CQkJLyogdHlwZSBpZCAqLwogCWludAkJCXR5cGxl bjsJCQkvKiB0eXBlIHNpemUgKi8KIAlpbnQJCQlhdHR0eXBtb2Q7CQkvKiB0eXBlLXNwZWNp ZmljIG1vZGlmaWVyIGluZm8gKi8KKwlPaWQJCQljZWtpZDsKKwlpbnQJCQljZWthbGc7CiB9 IFBHcmVzQXR0RGVzYzsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDM4LDYgKzQ0MCwx NSBAQCBleHRlcm4gUEdyZXN1bHQgKlBRZXhlY1ByZXBhcmVkKFBHY29ubiAqY29ubiwKIAkJ CQkJCQkJY29uc3QgaW50ICpwYXJhbUxlbmd0aHMsCiAJCQkJCQkJCWNvbnN0IGludCAqcGFy YW1Gb3JtYXRzLAogCQkJCQkJCQlpbnQgcmVzdWx0Rm9ybWF0KTsKK2V4dGVybiBQR3Jlc3Vs dCAqUFFleGVjUHJlcGFyZWQyKFBHY29ubiAqY29ubiwKKwkJCQkJCQkJIGNvbnN0IGNoYXIg KnN0bXROYW1lLAorCQkJCQkJCQkgaW50IG5QYXJhbXMsCisJCQkJCQkJCSBjb25zdCBjaGFy ICpjb25zdCAqcGFyYW1WYWx1ZXMsCisJCQkJCQkJCSBjb25zdCBpbnQgKnBhcmFtTGVuZ3Ro cywKKwkJCQkJCQkJIGNvbnN0IGludCAqcGFyYW1Gb3JtYXRzLAorCQkJCQkJCQkgY29uc3Qg aW50ICpwYXJhbUZvcmNlQ29sdW1uRW5jcnlwdGlvbnMsCisJCQkJCQkJCSBpbnQgcmVzdWx0 Rm9ybWF0LAorCQkJCQkJCQkgUEdyZXN1bHQgKnBhcmFtRGVzYyk7CiAKIC8qIEludGVyZmFj ZSBmb3IgbXVsdGlwbGUtcmVzdWx0IG9yIGFzeW5jaHJvbm91cyBxdWVyaWVzICovCiAjZGVm aW5lIFBRX1FVRVJZX1BBUkFNX01BWF9MSU1JVCA2NTUzNQpAQCAtNDYxLDYgKzQ3MiwxNSBA QCBleHRlcm4gaW50CVBRc2VuZFF1ZXJ5UHJlcGFyZWQoUEdjb25uICpjb25uLAogCQkJCQkJ CQljb25zdCBpbnQgKnBhcmFtTGVuZ3RocywKIAkJCQkJCQkJY29uc3QgaW50ICpwYXJhbUZv cm1hdHMsCiAJCQkJCQkJCWludCByZXN1bHRGb3JtYXQpOworZXh0ZXJuIGludAlQUXNlbmRR dWVyeVByZXBhcmVkMihQR2Nvbm4gKmNvbm4sCisJCQkJCQkJCSBjb25zdCBjaGFyICpzdG10 TmFtZSwKKwkJCQkJCQkJIGludCBuUGFyYW1zLAorCQkJCQkJCQkgY29uc3QgY2hhciAqY29u c3QgKnBhcmFtVmFsdWVzLAorCQkJCQkJCQkgY29uc3QgaW50ICpwYXJhbUxlbmd0aHMsCisJ CQkJCQkJCSBjb25zdCBpbnQgKnBhcmFtRm9ybWF0cywKKwkJCQkJCQkJIGNvbnN0IGludCAq cGFyYW1Gb3JjZUNvbHVtbkVuY3J5cHRpb25zLAorCQkJCQkJCQkgaW50IHJlc3VsdEZvcm1h dCwKKwkJCQkJCQkJIFBHcmVzdWx0ICpwYXJhbURlc2MpOwogZXh0ZXJuIGludAlQUXNldFNp bmdsZVJvd01vZGUoUEdjb25uICpjb25uKTsKIGV4dGVybiBQR3Jlc3VsdCAqUFFnZXRSZXN1 bHQoUEdjb25uICpjb25uKTsKIApAQCAtNTMxLDYgKzU1MSw3IEBAIGV4dGVybiBpbnQJUFFm Zm9ybWF0KGNvbnN0IFBHcmVzdWx0ICpyZXMsIGludCBmaWVsZF9udW0pOwogZXh0ZXJuIE9p ZAlQUWZ0eXBlKGNvbnN0IFBHcmVzdWx0ICpyZXMsIGludCBmaWVsZF9udW0pOwogZXh0ZXJu IGludAlQUWZzaXplKGNvbnN0IFBHcmVzdWx0ICpyZXMsIGludCBmaWVsZF9udW0pOwogZXh0 ZXJuIGludAlQUWZtb2QoY29uc3QgUEdyZXN1bHQgKnJlcywgaW50IGZpZWxkX251bSk7Citl eHRlcm4gaW50CVBRZmlzZW5jcnlwdGVkKGNvbnN0IFBHcmVzdWx0ICpyZXMsIGludCBmaWVs ZF9udW0pOwogZXh0ZXJuIGNoYXIgKlBRY21kU3RhdHVzKFBHcmVzdWx0ICpyZXMpOwogZXh0 ZXJuIGNoYXIgKlBRb2lkU3RhdHVzKGNvbnN0IFBHcmVzdWx0ICpyZXMpOwkvKiBvbGQgYW5k IHVnbHkgKi8KIGV4dGVybiBPaWQJUFFvaWRWYWx1ZShjb25zdCBQR3Jlc3VsdCAqcmVzKTsJ LyogbmV3IGFuZCBpbXByb3ZlZCAqLwpAQCAtNTQwLDYgKzU2MSw3IEBAIGV4dGVybiBpbnQJ UFFnZXRsZW5ndGgoY29uc3QgUEdyZXN1bHQgKnJlcywgaW50IHR1cF9udW0sIGludCBmaWVs ZF9udW0pOwogZXh0ZXJuIGludAlQUWdldGlzbnVsbChjb25zdCBQR3Jlc3VsdCAqcmVzLCBp bnQgdHVwX251bSwgaW50IGZpZWxkX251bSk7CiBleHRlcm4gaW50CVBRbnBhcmFtcyhjb25z dCBQR3Jlc3VsdCAqcmVzKTsKIGV4dGVybiBPaWQJUFFwYXJhbXR5cGUoY29uc3QgUEdyZXN1 bHQgKnJlcywgaW50IHBhcmFtX251bSk7CitleHRlcm4gaW50CVBRcGFyYW1pc2VuY3J5cHRl ZChjb25zdCBQR3Jlc3VsdCAqcmVzLCBpbnQgcGFyYW1fbnVtKTsKIAogLyogRGVzY3JpYmUg cHJlcGFyZWQgc3RhdGVtZW50cyBhbmQgcG9ydGFscyAqLwogZXh0ZXJuIFBHcmVzdWx0ICpQ UWRlc2NyaWJlUHJlcGFyZWQoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpzdG10KTsKZGlm ZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWludC5oIGIvc3JjL2ludGVy ZmFjZXMvbGlicHEvbGlicHEtaW50LmgKaW5kZXggM2RiNmExN2RiNC4uMGE0YzAxMmFhNiAx MDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmgKKysrIGIvc3Jj L2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmgKQEAgLTExMSw2ICsxMTEsOSBAQCB1bmlv biBwZ3Jlc3VsdF9kYXRhCiB0eXBlZGVmIHN0cnVjdCBwZ3Jlc1BhcmFtRGVzYwogewogCU9p ZAkJCXR5cGlkOwkJCS8qIHR5cGUgaWQgKi8KKwlPaWQJCQljZWtpZDsKKwlpbnQJCQljZWth bGc7CisJaW50CQkJZmxhZ3M7CiB9IFBHcmVzUGFyYW1EZXNjOwogCiAvKgpAQCAtMzQwLDYg KzM0MywyNiBAQCB0eXBlZGVmIHN0cnVjdCBwZ19jb25uX2hvc3QKIAkJCQkJCQkJICogZm91 bmQgaW4gcGFzc3dvcmQgZmlsZS4gKi8KIH0gcGdfY29ubl9ob3N0OwogCisvKgorICogQ29s dW1uIGVuY3J5cHRpb24gc3VwcG9ydCBkYXRhCisgKi8KKworLyogY29sdW1uIG1hc3RlciBr ZXkgKi8KK3R5cGVkZWYgc3RydWN0IHBnX2NtaworeworCU9pZAkJCWNta2lkOworCWNoYXIJ ICAgKmNta25hbWU7CisJY2hhcgkgICAqY21rcmVhbG07Cit9IFBHQ01LOworCisvKiBjb2x1 bW4gZW5jcnlwdGlvbiBrZXkgKi8KK3R5cGVkZWYgc3RydWN0IHBnX2NlaworeworCU9pZAkJ CWNla2lkOworCXVuc2lnbmVkIGNoYXIgKmNla2RhdGE7CQkvKiAoZGVjcnlwdGVkKSAqLwor CXNpemVfdAkJY2VrZGF0YWxlbjsKK30gUEdDRUs7CisKIC8qCiAgKiBQR2Nvbm4gc3RvcmVz IGFsbCB0aGUgc3RhdGUgZGF0YSBhc3NvY2lhdGVkIHdpdGggYSBzaW5nbGUgY29ubmVjdGlv bgogICogdG8gYSBiYWNrZW5kLgpAQCAtMzkzLDYgKzQxNiw3IEBAIHN0cnVjdCBwZ19jb25u CiAJY2hhcgkgICAqc3NsX21pbl9wcm90b2NvbF92ZXJzaW9uOwkvKiBtaW5pbXVtIFRMUyBw cm90b2NvbCB2ZXJzaW9uICovCiAJY2hhcgkgICAqc3NsX21heF9wcm90b2NvbF92ZXJzaW9u OwkvKiBtYXhpbXVtIFRMUyBwcm90b2NvbCB2ZXJzaW9uICovCiAJY2hhcgkgICAqdGFyZ2V0 X3Nlc3Npb25fYXR0cnM7CS8qIGRlc2lyZWQgc2Vzc2lvbiBwcm9wZXJ0aWVzICovCisJY2hh cgkgICAqY21rbG9va3VwOwkJLyogQ01LIGxvb2t1cCBzcGVjaWZpY2F0aW9uICovCiAKIAkv KiBPcHRpb25hbCBmaWxlIHRvIHdyaXRlIHRyYWNlIGluZm8gdG8gKi8KIAlGSUxFCSAgICpQ ZmRlYnVnOwpAQCAtNDc1LDYgKzQ5OSwxMiBAQCBzdHJ1Y3QgcGdfY29ubgogCVBHQ29udGV4 dFZpc2liaWxpdHkgc2hvd19jb250ZXh0OwkvKiB3aGV0aGVyIHRvIHNob3cgQ09OVEVYVCBm aWVsZCAqLwogCVBHbG9iamZ1bmNzICpsb2JqZnVuY3M7CQkvKiBwcml2YXRlIHN0YXRlIGZv ciBsYXJnZS1vYmplY3QgYWNjZXNzIGZucyAqLwogCisJLyogQ29sdW1uIGVuY3J5cHRpb24g c3VwcG9ydCBkYXRhICovCisJaW50CQkJbmNta3M7CisJUEdDTUsJICAgKmNta3M7CisJaW50 CQkJbmNla3M7CisJUEdDRUsJICAgKmNla3M7CisKIAkvKiBCdWZmZXIgZm9yIGRhdGEgcmVj ZWl2ZWQgZnJvbSBiYWNrZW5kIGFuZCBub3QgeWV0IHByb2Nlc3NlZCAqLwogCWNoYXIJICAg KmluQnVmZmVyOwkJLyogY3VycmVudGx5IGFsbG9jYXRlZCBidWZmZXIgKi8KIAlpbnQJCQlp bkJ1ZlNpemU7CQkvKiBhbGxvY2F0ZWQgc2l6ZSBvZiBidWZmZXIgKi8KQEAgLTY3MCw2ICs3 MDAsMTAgQEAgZXh0ZXJuIHZvaWQgcHFTYXZlTWVzc2FnZUZpZWxkKFBHcmVzdWx0ICpyZXMs IGNoYXIgY29kZSwKIAkJCQkJCQkgICBjb25zdCBjaGFyICp2YWx1ZSk7CiBleHRlcm4gdm9p ZCBwcVNhdmVQYXJhbWV0ZXJTdGF0dXMoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpuYW1l LAogCQkJCQkJCQkgIGNvbnN0IGNoYXIgKnZhbHVlKTsKK2V4dGVybiBpbnQJcHFTYXZlQ29s dW1uTWFzdGVyS2V5KFBHY29ubiAqY29ubiwgaW50IGtleWlkLCBjb25zdCBjaGFyICprZXlu YW1lLAorCQkJCQkJCQkgIGNvbnN0IGNoYXIgKmtleXJlYWxtKTsKK2V4dGVybiBpbnQJcHFT YXZlQ29sdW1uRW5jcnlwdGlvbktleShQR2Nvbm4gKmNvbm4sIGludCBrZXlpZCwgaW50IGNt a2lkLCBpbnQgY21rYWxnLAorCQkJCQkJCQkJICBjb25zdCB1bnNpZ25lZCBjaGFyICp2YWx1 ZSwgaW50IGxlbik7CiBleHRlcm4gaW50CXBxUm93UHJvY2Vzc29yKFBHY29ubiAqY29ubiwg Y29uc3QgY2hhciAqKmVycm1zZ3ApOwogZXh0ZXJuIHZvaWQgcHFDb21tYW5kUXVldWVBZHZh bmNlKFBHY29ubiAqY29ubik7CiBleHRlcm4gaW50CVBRc2VuZFF1ZXJ5Q29udGludWUoUEdj b25uICpjb25uLCBjb25zdCBjaGFyICpxdWVyeSk7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJm YWNlcy9saWJwcS9ubHMubWsgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9ubHMubWsKaW5kZXgg MWY2MmJhMWI1Ny4uODQ0ZTA4NWU2ZCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGli cHEvbmxzLm1rCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL25scy5tawpAQCAtMSw2ICsx LDYgQEAKICMgc3JjL2ludGVyZmFjZXMvbGlicHEvbmxzLm1rCiBDQVRBTE9HX05BTUUgICAg ID0gbGlicHEKIEFWQUlMX0xBTkdVQUdFUyAgPSBjcyBkZSBlbCBlcyBmciBoZSBpdCBqYSBr byBwbCBwdF9CUiBydSBzdiB0ciB1ayB6aF9DTiB6aF9UVwotR0VUVEVYVF9GSUxFUyAgICA9 IGZlLWF1dGguYyBmZS1hdXRoLXNjcmFtLmMgZmUtY29ubmVjdC5jIGZlLWV4ZWMuYyBmZS1n c3NhcGktY29tbW9uLmMgZmUtbG9iai5jIGZlLW1pc2MuYyBmZS1wcm90b2NvbDMuYyBmZS1z ZWN1cmUuYyBmZS1zZWN1cmUtY29tbW9uLmMgZmUtc2VjdXJlLWdzc2FwaS5jIGZlLXNlY3Vy ZS1vcGVuc3NsLmMgd2luMzIuYyAuLi8uLi9wb3J0L3RocmVhZC5jCitHRVRURVhUX0ZJTEVT ICAgID0gZmUtYXV0aC5jIGZlLWF1dGgtc2NyYW0uYyBmZS1jb25uZWN0LmMgZmUtZW5jcnlw dC1vcGVuc3NsLmMgZmUtZXhlYy5jIGZlLWdzc2FwaS1jb21tb24uYyBmZS1sb2JqLmMgZmUt bWlzYy5jIGZlLXByb3RvY29sMy5jIGZlLXNlY3VyZS5jIGZlLXNlY3VyZS1jb21tb24uYyBm ZS1zZWN1cmUtZ3NzYXBpLmMgZmUtc2VjdXJlLW9wZW5zc2wuYyB3aW4zMi5jIC4uLy4uL3Bv cnQvdGhyZWFkLmMKIEdFVFRFWFRfVFJJR0dFUlMgPSBsaWJwcV9nZXR0ZXh0IHBxSW50ZXJu YWxOb3RpY2U6MgogR0VUVEVYVF9GTEFHUyAgICA9IGxpYnBxX2dldHRleHQ6MTpwYXNzLWMt Zm9ybWF0IHBxSW50ZXJuYWxOb3RpY2U6MjpjLWZvcm1hdApkaWZmIC0tZ2l0IGEvc3JjL2lu dGVyZmFjZXMvbGlicHEvdGVzdC8uZ2l0aWdub3JlIGIvc3JjL2ludGVyZmFjZXMvbGlicHEv dGVzdC8uZ2l0aWdub3JlCmluZGV4IDZiYTc4YWRiNjcuLjE4NDY1OTRlYzUgMTAwNjQ0Ci0t LSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL3Rlc3QvLmdpdGlnbm9yZQorKysgYi9zcmMvaW50 ZXJmYWNlcy9saWJwcS90ZXN0Ly5naXRpZ25vcmUKQEAgLTEsMiArMSwzIEBACisvbGlicHFf dGVzdF9lbmNyeXB0CiAvbGlicHFfdGVzdGNsaWVudAogL2xpYnBxX3VyaV9yZWdyZXNzCmRp ZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS90ZXN0L01ha2VmaWxlIGIvc3JjL2lu dGVyZmFjZXMvbGlicHEvdGVzdC9NYWtlZmlsZQppbmRleCAxZjc1YjczYjhjLi5jZjU0NmE2 MjU0IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS90ZXN0L01ha2VmaWxlCisr KyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL3Rlc3QvTWFrZWZpbGUKQEAgLTEyLDggKzEyLDE1 IEBAIG92ZXJyaWRlIENQUEZMQUdTIDo9IC1JJChsaWJwcV9zcmNkaXIpICQoQ1BQRkxBR1Mp CiBMREZMQUdTX0lOVEVSTkFMICs9ICQobGlicHFfcGdwb3J0KQogCiBQUk9HUyA9IGxpYnBx X3Rlc3RjbGllbnQgbGlicHFfdXJpX3JlZ3Jlc3MKK2lmZXEgKCQod2l0aF9zc2wpLG9wZW5z c2wpCitQUk9HUyArPSBsaWJwcV90ZXN0X2VuY3J5cHQKK2VuZGlmCisKIAogYWxsOiAkKFBS T0dTKQogCitsaWJwcV90ZXN0X2VuY3J5cHQ6IC4uL2ZlLWVuY3J5cHQtb3BlbnNzbC5jCisJ JChDQykgJChDUFBGTEFHUykgLURURVNUX0VOQ1JZUFQgJChDRkxBR1MpICReICQoTERGTEFH UykgJChMREZMQUdTX0VYKSAkKExJQlMpIC1vICRAJChYKQorCiBjbGVhbiBkaXN0Y2xlYW4g bWFpbnRhaW5lci1jbGVhbjoKIAlybSAtZiAkKFBST0dTKSAqLm8KZGlmZiAtLWdpdCBhL2Nv bnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQgYi9jb250cmli L3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CmluZGV4IDQ0NDU3Zjkz MGMuLmM1ZjMxNTMwOTQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVj dGVkL3Bvc3RncmVzX2Zkdy5vdXQKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0 ZWQvcG9zdGdyZXNfZmR3Lm91dApAQCAtOTUyOSw3ICs5NTI5LDcgQEAgRE8gJGQkCiAgICAg RU5EOwogJGQkOwogRVJST1I6ICBpbnZhbGlkIG9wdGlvbiAicGFzc3dvcmQiCi1ISU5UOiAg VmFsaWQgb3B0aW9ucyBpbiB0aGlzIGNvbnRleHQgYXJlOiBzZXJ2aWNlLCBwYXNzZmlsZSwg Y2hhbm5lbF9iaW5kaW5nLCBjb25uZWN0X3RpbWVvdXQsIGRibmFtZSwgaG9zdCwgaG9zdGFk ZHIsIHBvcnQsIG9wdGlvbnMsIGFwcGxpY2F0aW9uX25hbWUsIGtlZXBhbGl2ZXMsIGtlZXBh bGl2ZXNfaWRsZSwga2VlcGFsaXZlc19pbnRlcnZhbCwga2VlcGFsaXZlc19jb3VudCwgdGNw X3VzZXJfdGltZW91dCwgc3NsbW9kZSwgc3NsY29tcHJlc3Npb24sIHNzbGNlcnQsIHNzbGtl eSwgc3Nscm9vdGNlcnQsIHNzbGNybCwgc3NsY3JsZGlyLCBzc2xzbmksIHJlcXVpcmVwZWVy LCBzc2xfbWluX3Byb3RvY29sX3ZlcnNpb24sIHNzbF9tYXhfcHJvdG9jb2xfdmVyc2lvbiwg Z3NzZW5jbW9kZSwga3Jic3J2bmFtZSwgZ3NzbGliLCB0YXJnZXRfc2Vzc2lvbl9hdHRycywg dXNlX3JlbW90ZV9lc3RpbWF0ZSwgZmR3X3N0YXJ0dXBfY29zdCwgZmR3X3R1cGxlX2Nvc3Qs IGV4dGVuc2lvbnMsIHVwZGF0YWJsZSwgdHJ1bmNhdGFibGUsIGZldGNoX3NpemUsIGJhdGNo X3NpemUsIGFzeW5jX2NhcGFibGUsIHBhcmFsbGVsX2NvbW1pdCwga2VlcF9jb25uZWN0aW9u cworSElOVDogIFZhbGlkIG9wdGlvbnMgaW4gdGhpcyBjb250ZXh0IGFyZTogc2VydmljZSwg cGFzc2ZpbGUsIGNoYW5uZWxfYmluZGluZywgY29ubmVjdF90aW1lb3V0LCBkYm5hbWUsIGhv c3QsIGhvc3RhZGRyLCBwb3J0LCBvcHRpb25zLCBhcHBsaWNhdGlvbl9uYW1lLCBrZWVwYWxp dmVzLCBrZWVwYWxpdmVzX2lkbGUsIGtlZXBhbGl2ZXNfaW50ZXJ2YWwsIGtlZXBhbGl2ZXNf Y291bnQsIHRjcF91c2VyX3RpbWVvdXQsIHNzbG1vZGUsIHNzbGNvbXByZXNzaW9uLCBzc2xj ZXJ0LCBzc2xrZXksIHNzbHJvb3RjZXJ0LCBzc2xjcmwsIHNzbGNybGRpciwgc3Nsc25pLCBy ZXF1aXJlcGVlciwgc3NsX21pbl9wcm90b2NvbF92ZXJzaW9uLCBzc2xfbWF4X3Byb3RvY29s X3ZlcnNpb24sIGdzc2VuY21vZGUsIGtyYnNydm5hbWUsIGdzc2xpYiwgdGFyZ2V0X3Nlc3Np b25fYXR0cnMsIGNta2xvb2t1cCwgdXNlX3JlbW90ZV9lc3RpbWF0ZSwgZmR3X3N0YXJ0dXBf Y29zdCwgZmR3X3R1cGxlX2Nvc3QsIGV4dGVuc2lvbnMsIHVwZGF0YWJsZSwgdHJ1bmNhdGFi bGUsIGZldGNoX3NpemUsIGJhdGNoX3NpemUsIGFzeW5jX2NhcGFibGUsIHBhcmFsbGVsX2Nv bW1pdCwga2VlcF9jb25uZWN0aW9ucwogQ09OVEVYVDogIFNRTCBzdGF0ZW1lbnQgIkFMVEVS IFNFUlZFUiBsb29wYmFja19ub3B3IE9QVElPTlMgKEFERCBwYXNzd29yZCAnZHVtbXlwdycp IgogUEwvcGdTUUwgZnVuY3Rpb24gaW5saW5lX2NvZGVfYmxvY2sgbGluZSAzIGF0IEVYRUNV VEUKIC0tIElmIHdlIGFkZCBhIHBhc3N3b3JkIGZvciBvdXIgdXNlciBtYXBwaW5nIGluc3Rl YWQsIHdlIHNob3VsZCBnZXQgYSBkaWZmZXJlbnQKCmJhc2UtY29tbWl0OiBjMWQwMzNmY2I1 ZWNmMzA2MjQxY2Q3MjlkMWVkY2FhODQ2NDU2MzM1Ci0tIAoyLjM2LjEKCg== --------------ejJ9GM0PsaNfahd2MbmsRf69--