Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wi9Ue-0002Xc-09 for pgsql-hackers@arkaria.postgresql.org; Fri, 10 Jul 2026 11:34:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wi9Ub-00HTpp-0Z for pgsql-hackers@arkaria.postgresql.org; Fri, 10 Jul 2026 11:34:05 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wi9Ua-00HTph-0M for pgsql-hackers@lists.postgresql.org; Fri, 10 Jul 2026 11:34:05 +0000 Received: from mail-lj1-x22c.google.com ([2a00:1450:4864:20::22c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wi9UY-000000001WZ-0suf for pgsql-hackers@lists.postgresql.org; Fri, 10 Jul 2026 11:34:03 +0000 Received: by mail-lj1-x22c.google.com with SMTP id 38308e7fff4ca-39c9cbf0719so2828601fa.0 for ; Fri, 10 Jul 2026 04:34:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1783683239; cv=none; d=google.com; s=arc-20260327; b=q5kXVcXZ0WKrkn1V94pFu7DFXtR5Ims7DBT9m2z88I2XyoRC7Vg/KZfsSY3rzrYetk MNwX4cr72HkqdG6L5IegyCIU5rIngYUBAr+TUoB7CMOqQWoWfcr30qtd/m4zFPyMbB3y wJBpMsoAgODEK0SG4dX1W4ypMoM+rY1KbjjG6o+BaqiT4mIBNEmbxTJD0j3Kl5wL+kiY MeYcHGA9SxJ/EXetzVAScJdDuwYCHLW02jihV9GAzeOwbaYI9kW1UyRi+Q7auM3HspFO ZTVgarOibr2WvDhIh0aLcd+L28ldJP9JPvFXDuFEZ7wYyk2UvVXV7f4YkUO2aXfVWzVg CRhw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=grvkU/z4/a/H6Ap7xxl0GKdUTOAQhlmQMZCD+nAsgLM=; fh=7KQaYOjtLqgle936qYxvrUJX5N9o5PRaVpaL/bMvkd4=; b=DtTS7isF3dHRV0tEuPgY7z7nwp0BI41wJ09hBc0i+PPKdAToc3iSJRcUw0jUegDk3+ 0YFMpR6L0k3g6udjxRWPKW+4U2HBw/dhJkF0HO7/N8zAj4PDVeg1uwQoJLHWPIoDF9QP k6x7IwcRA39rAvg82fpdoreseUszKUt/Cfca66K1gx1qfXPyU1eiL5ErPctJSnlg8GkC OGQuTSY34qNzLmrxO/wStUY6UAixjGtQQaGu8+g68N/b9pUEn2fqK4RIh1wvkTZtywxz Ml+QQP0n0kierhh380QnqPnrhZuSxEZVXX3Y3cGRuGd5q/kp4qOVahcibaO5ADCkcP0g S0qg==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783683239; x=1784288039; darn=lists.postgresql.org; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:from:to:cc:subject:date:message-id:reply-to :content-type; bh=grvkU/z4/a/H6Ap7xxl0GKdUTOAQhlmQMZCD+nAsgLM=; b=SBXdyVPEYrRoCR9++R4iuPD9HW+HaU7eXaxwCqQJBs/RS7/JsN1KqmKjRpZpRsTRMc L4C0gTs4cMoZKxB8U/3p9BbvkpDGvAh4s8EzRAAtbHQ/FnrPrxziIM2z3OR8nKuJQC7k 7hI1txyzDjx3OkSRtioe6uW0qYwtV+Dqwi/HVyMIZgzJLPQQDwJHxeEPQtBO9Hma2pO2 8q+BFHHGSX4WWzrvy4gvWcqnJki69QU0L/WQa3ZaiCMj+OyyO7J1r9AZ+J/HyAAIuSaD OFGMRbw26AVinL1OGSamO50vq+0HRPmwckSnSmZt2zU5QhkpsbpUPTvWmxeNhlPx6ati GOOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783683239; x=1784288039; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=grvkU/z4/a/H6Ap7xxl0GKdUTOAQhlmQMZCD+nAsgLM=; b=SA1IJYPmxAg5Q2HLFxy5t0WHywKVjGF+jLXTCEmYt7U6ZaivC5QCGHqTB19WqwkVMX 8x/8i3Wq4T/KFF81C2OFKZF9LTKowiRuOO7LXt0lOeo5iHSwl3L+ZFCecglGMir5MQat KUDw6bulO3BKcw0xREcBxxNoAnBfSTiCRud75UhX6ZO1Gm17As/j0iNbG8B3xfeIJsBm p5fjLR4zl4uIUpxp//upWC4dbEkfYziQzDgCx/SrXKZBwKy5uFp6AxYYBsTJrHzcVB66 nRq1QmBqiIbPSyl2U0nf7+9maGj4RzMdfag7zGHWtfef9XG/r43xVTM5dpz730NPHdqT xX9w== X-Forwarded-Encrypted: i=1; AHgh+RqxdiMU3kmx+FuWw1upR2vMWITKKlefpW9KFx0vPdkhelKPFPlk8fMp4AY+BHcOZqVR9EIMT0g4W0mC63hq@lists.postgresql.org X-Gm-Message-State: AOJu0YylSGwzJMtwe/8bDDnx1yjA0bVsxduPYvrDxV22aldwoP5pG9fX 7E9MJyJOgaDRcs6DSTsSLKoVZaqSF79EmpG4fEVjSP9cvq2O5FI6RvrInK6yXrrnaw3n2b7Va9d l4VI5yf/UD1j1bLGG6c74h4F3XoVcJQ== X-Gm-Gg: AfdE7cl+s60xtc6vHnmSoVRONVPT+zbkTAHXGBQqk3BBKxenWtGgwjc8Klp0ZyEXr9B yocJnHjV1G5IuGH8x+HEvT3Kj/95I4kAKZE5vwyNS5vPRJPCbotEv8MT7QXCPMlVkj87mPXL9+h WRVkwUp9nS+6CEcYdeKSJ0WqGtrNqmPcL55vKb6FT0e3GqqRG8ies7HRBLsPFuUoQGv7tTpQq2J eGzC1LhcMddkwhmEllLEXhGwlSzI87i7lKn10M1CxsIb/gy1bVXRUdNZfIJdSc7fr6xKxuA5nrm nJE= X-Received: by 2002:a2e:978f:0:b0:39a:cfe9:2482 with SMTP id 38308e7fff4ca-39c79906cf4mr18147251fa.31.1783683238211; Fri, 10 Jul 2026 04:33:58 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Nisha Moond Date: Fri, 10 Jul 2026 17:03:43 +0530 X-Gm-Features: AVVi8CetsgD9IZMvIRLDBrY5YGxpPhBMuGMDX34-rETUGq2IHaRXv00Yk5dnifk Message-ID: Subject: Re: Support EXCEPT for TABLES IN SCHEMA publications To: shveta malik Cc: Peter Smith , Zsolt Parragi , pgsql-hackers@lists.postgresql.org, Amit Kapila Content-Type: multipart/mixed; boundary="000000000000ce52370656401dad" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000ce52370656401dad Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Jul 8, 2026 at 2:58=E2=80=AFPM shveta malik wrote: > > On Wed, Jul 8, 2026 at 2:22=E2=80=AFPM shveta malik wrote: > > > > Nisha, the patch (testing wise) is okay, but some code-optimization > > might help. I am stuck on reveiw of GetTopMostAncestorInPublication() > > and all its callers. > > Thanks, Shveta. > > 1) > > caller 1: pub_rf_contains_invalid_column(): > > > > It is not understood why pub_rf_contains_invalid_column() does not > > pass 'exceptPubids' to GetTopMostAncestorInPublication(). Perhaps a > > comment will help. IIUC, a parittion (for which we are trying to > > verify row-filter expression) can not co-exist in a subscription where > > its ROOT is already excluded. This assumption will be true once you > > address the issue of CREATE SUB (in [1]) sent in my previous email. > > After that, this will still need a comment. > > You're right. Neither pub_rf_contains_invalid_column() nor pub_contains_invalid_column() depends on GetTopMostAncestorInPublication(), since RelationBuildPublicationDesc() already prepares puboids after excluding GetRelationExcludedPublications(). This follows the same approach used for the FOR ALL TABLES case. With your suggestion below, the except_pubids argument is no longer needed, so I don't think any additional comments are necessary. > > 2) > > Both caller 2 (get_rel_sync_entry) and caller 3 > > (is_table_publishable_in_publication) are trying to see if partition > > should be considered as included in publication and thus are trying to > > see if ROOT is excluded. But the implementation is very different. > > > > The get_rel_sync_entry() does that by passing except_pubids to > > GetTopMostAncestorInPublication(). This except_pubids was computed for > > topmost ROOT of the parition in the caller and then it skips checking > > pg_pub_namepspace if given pubid is part of except_pubids arguement. > > > > While is_table_publishable_in_publication() does that by selecting > > topmost ancestor incuded in a given pubid using > > GetTopMostAncestorInPublication(), without consulting/computing > > except_pubids. And then later checks if the ancestor returned by > > GetTopMostAncestorInPublication() is in pg_publicaiton_rel with > > 'prexcept' true. > > > > IMO, GetTopMostAncestorInPublication() should itself be inclusive of > > logic where it filters out the table (does not return it as result) if > > ROOT is excluded. And even we should not be passing an argument for > > that (this is my initial thought). By making such a logic, we need not > > to bother about all > > the callers to see if caller has correct logic to deal with output of > > GetTopMostAncestorInPublication(). Can you think on this line and > > check the feasibility. > > > > I thought more on this. Do you think we can do this? > > GetTopMostAncestorInPublication() is already accepting a list of > ancestors in a ordered fashion, root at the end. We get root from this > ancestor list, check if root is in pg_publication_rel with > except=3Dtrue. If so, we skip the rest of the logic and return > InvalidOid from GetTopMostAncestorInPublication(). > > The 'except_pubids' argument is not required. Callers need not to have > special logic to send this arguement or to have extra-processing on > output as done by is_table_publishable_in_publication() currently. > Let me know if I have missed anything. The suggested optimization looks reasonable to me. I verified the test cases for both callers (2 and 3) and finalized the changes. During verification, I found it easy to miss cross-schema partition cases i.e., when the partition root is excluded from one schema while a child partition belongs to another included schema. To cover this, I added tests in patch 0001 that tests both get_rel_sync_entry() and is_table_publishable_in_publication(). Attached is the v20 patch set. -- Thanks, Nisha --000000000000ce52370656401dad Content-Type: application/octet-stream; name="v20-0001-Support-EXCEPT-clause-for-schema-level-publicati.patch" Content-Disposition: attachment; filename="v20-0001-Support-EXCEPT-clause-for-schema-level-publicati.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mretx89o0 RnJvbSBlODgyM2ZjYTJmOTg1MzBhNjI0ODMwN2ZhZGQ5NDhjODdlY2IwZjAzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBUdWUsIDE2IEp1biAyMDI2IDEwOjU4OjQ5ICswNTMwClN1YmplY3Q6IFtQQVRDSCB2 MjAgMS81XSBTdXBwb3J0IEVYQ0VQVCBjbGF1c2UgZm9yIHNjaGVtYS1sZXZlbCBwdWJsaWNhdGlv bnMKCkV4dGVuZCB0YWJsZSBleGNsdXNpb24gc3VwcG9ydCBpbiBwdWJsaWNhdGlvbnMgdG8gYWxs b3cgc3BlY2lmaWMKdGFibGVzIHRvIGJlIGV4Y2x1ZGVkIGZyb20gc2NoZW1hLWxldmVsIHB1Ymxp Y2F0aW9ucyB1c2luZyBhbgpFWENFUFQgY2xhdXNlIGluIENSRUFURSBQVUJMSUNBVElPTi4KClN1 cHBvcnRlZCBzeW50YXg6CkNSRUFURSBQVUJMSUNBVElPTiA8cHViPiBGT1IgVEFCTEVTIElOIFND SEVNQSBzIEVYQ0VQVCAoVEFCTEUgdDEsLi4uKTsKLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmMgICAgICAgIHwgMjY4ICsrKysrKysrKysrKysrKystLS0tCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyAgICAgIHwgMTg1ICsrKysrKysrKysrKyst CiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgIHwgIDExICsKIHNy Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgfCAgNTQgKysrLQogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyB8ICA0NiArKystCiBzcmMv YmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jICAgICAgICAgIHwgIDQxICsrLQogc3JjL2Jp bi9wc3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICAgICAgICAgICB8ICAxOCArKwogc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgICB8ICAzNSArKy0KIHNyYy9pbmNsdWRl L2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3B1YmxpY2F0aW9uLm91dCAgIHwgMjIxICsrKysrKysrKysrKysrKy0KIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCAgICAgICAgfCAxNDIgKysrKysrKysrKy0KIHNy Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwgICAgICAgfCAyMDggKysrKysrKysr KysrKystCiAxMyBmaWxlcyBjaGFuZ2VkLCAxMTQyIGluc2VydGlvbnMoKyksIDkxIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwppbmRleCAxZWM5NGM4NTFiMi4u MGJkY2MwN2M0MmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRp b24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKQEAgLTUzLDkg KzUzLDEwIEBAIHR5cGVkZWYgc3RydWN0CiAgKiBlcnJvciBpZiBub3QuCiAgKi8KIHN0YXRpYyB2 b2lkCi1jaGVja19wdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oUHVibGljYXRpb25SZWxJbmZvICpw cmkpCitjaGVja19wdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oUHVibGljYXRpb25SZWxJbmZvICpw cmksIE9pZCBwdWJpZCkKIHsKIAlSZWxhdGlvbgl0YXJnZXRyZWwgPSBwcmktPnJlbGF0aW9uOwor CU9pZAkJCXJlbGlkID0gUmVsYXRpb25HZXRSZWxpZCh0YXJnZXRyZWwpOwogCWNvbnN0IGNoYXIg KnJlbG5hbWU7CiAJY29uc3QgY2hhciAqZXJyb3Jtc2c7CiAKQEAgLTcwLDEyICs3MSw1NyBAQCBj aGVja19wdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oUHVibGljYXRpb25SZWxJbmZvICpwcmkpCiAJ CWVycm9ybXNnID0gZ2V0dGV4dF9ub29wKCJjYW5ub3QgYWRkIHJlbGF0aW9uIFwiJXNcIiB0byBw dWJsaWNhdGlvbiIpOwogCX0KIAotCS8qIElmIGluIEVYQ0VQVCBjbGF1c2UsIG11c3QgYmUgcm9v dCBwYXJ0aXRpb25lZCB0YWJsZSAqLwotCWlmIChwcmktPmV4Y2VwdCAmJiB0YXJnZXRyZWwtPnJk X3JlbC0+cmVsaXNwYXJ0aXRpb24pCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCi0JCQkJIGVycm1zZyhlcnJvcm1zZywgcmVs bmFtZSksCi0JCQkJIGVycmRldGFpbCgiVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBm b3IgaW5kaXZpZHVhbCBwYXJ0aXRpb25zLiIpKSk7CisJaWYgKHRhcmdldHJlbC0+cmRfcmVsLT5y ZWxpc3BhcnRpdGlvbikKKwl7CisJCWlmIChwcmktPmV4Y2VwdCkKKwkJeworCQkJLyogSWYgaW4g RVhDRVBUIGNsYXVzZSwgbXVzdCBiZSByb290IHBhcnRpdGlvbmVkIHRhYmxlICovCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVF KSwKKwkJCQkJIGVycm1zZyhlcnJvcm1zZywgcmVsbmFtZSksCisJCQkJCSBlcnJkZXRhaWwoIlRo aXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGluZGl2aWR1YWwgcGFydGl0aW9ucy4i KSkpOworCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIElmIG5vdCBpbiBFWENFUFQgY2xh dXNlLCBhIHBhcnRpdGlvbiBjYW5ub3QgYmUgaW5kZXBlbmRlbnRseQorCQkJICogaW5jbHVkZWQg d2hlbiBpdHMgcGFydGl0aW9uIHJvb3QgaXMgaW4gdGhpcyBwdWJsaWNhdGlvbidzCisJCQkgKiBF WENFUFQgbGlzdC4gIERvaW5nIHNvIHdvdWxkIGxlYXZlIHRoZSBjYXRhbG9nIGluY29uc2lzdGVu dAorCQkJICogKHJvb3QgZXhjbHVkZWQsIHBhcnRpdGlvbiBleHBsaWNpdGx5IGluY2x1ZGVkKSBh bmQgdGhlCisJCQkgKiBhbmNlc3Rvci1jYXNjYWRlIHJ1bGUgd291bGQgc2lsZW50bHkgb3ZlcnJp ZGUgdGhlIGluY2x1ZGUgYXQKKwkJCSAqIHJlcGxpY2F0aW9uIHRpbWUuCisJCQkgKgorCQkJICog T25seSB0aGUgcm9vdCBvZiBhIHBhcnRpdGlvbiBoaWVyYXJjaHkgY2FuIGV2ZXIgYXBwZWFyIGlu IGFuCisJCQkgKiBFWENFUFQgY2xhdXNlIChhIHBhcnRpdGlvbiBpdHNlbGYgaXMgcmVqZWN0ZWQg anVzdCBhYm92ZSksIHNvCisJCQkgKiBjaGVja2luZyBhbnkgaW50ZXJtZWRpYXRlIGFuY2VzdG9y IGNhbm5vdCBmaW5kIGEgbWF0Y2g7IHRoZQorCQkJICogcm9vdCBpcyB0aGUgb25seSBvbmUgd29y dGggYSBjYXRhbG9nIGxvb2t1cC4KKwkJCSAqLworCQkJT2lkCQkJcm9vdCA9IGxsYXN0X29pZChn ZXRfcGFydGl0aW9uX2FuY2VzdG9ycyhyZWxpZCkpOworCQkJSGVhcFR1cGxlCWF0dXA7CisKKwkJ CWF0dXAgPSBTZWFyY2hTeXNDYWNoZTIoUFVCTElDQVRJT05SRUxNQVAsCisJCQkJCQkJCSAgIE9i amVjdElkR2V0RGF0dW0ocm9vdCksCisJCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0ocHViaWQp KTsKKwkJCWlmIChIZWFwVHVwbGVJc1ZhbGlkKGF0dXApKQorCQkJeworCQkJCWJvb2wJCXJvb3Rf ZXhjZXB0ID0gKChGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RSVUNUKGF0dXApKS0+cHJl eGNlcHQ7CisKKwkJCQlSZWxlYXNlU3lzQ2FjaGUoYXR1cCk7CisKKwkJCQlpZiAocm9vdF9leGNl cHQpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNB VEVfT0JKRUNUKSwKKwkJCQkJCQkgZXJybXNnKCJjYW5ub3QgYWRkIHBhcnRpdGlvbiBcIiVzXCIg dG8gcHVibGljYXRpb24gXCIlc1wiIiwKKwkJCQkJCQkJCVJlbGF0aW9uR2V0UXVhbGlmaWVkUmVs YXRpb25OYW1lKHRhcmdldHJlbCksCisJCQkJCQkJCQlnZXRfcHVibGljYXRpb25fbmFtZShwdWJp ZCwgZmFsc2UpKSwKKwkJCQkJCQkgZXJyZGV0YWlsKCJBbmNlc3RvciBcIiVzXCIgb2YgcGFydGl0 aW9uIFwiJXNcIiBpcyBjdXJyZW50bHkgbGlzdGVkIGluIHRoZSBFWENFUFQgY2xhdXNlIG9mIHRo ZSBwdWJsaWNhdGlvbi4iLAorCQkJCQkJCQkJICAgcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIo Z2V0X25hbWVzcGFjZV9uYW1lKGdldF9yZWxfbmFtZXNwYWNlKHJvb3QpKSwKKwkJCQkJCQkJCQkJ CQkJCQkgIGdldF9yZWxfbmFtZShyb290KSksCisJCQkJCQkJCQkgICBSZWxhdGlvbkdldFF1YWxp ZmllZFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKKwkJCQkJCQkgZXJyaGludCgiQ2hhbmdlIEVY Q0VQVCBsaXN0IHVzaW5nIEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBTRVQgVEFCTEVTIElOIFNDSEVN QSAuLi4gRVhDRVBULiIpKSk7CisJCQl9CisJCX0KKwl9CiAKIAkvKiBNdXN0IGJlIGEgcmVndWxh ciBvciBwYXJ0aXRpb25lZCB0YWJsZSAqLwogCWlmIChSZWxhdGlvbkdldEZvcm0odGFyZ2V0cmVs KS0+cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OICYmCkBAIC0zNDAsMTkgKzM4NiwyMCBAQCBp c190YWJsZV9wdWJsaWNhdGlvbihPaWQgcHViaWQpCiAJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2Nh bihwdWJyZWxzcmVsLAogCQkJCQkJCSAgUHVibGljYXRpb25SZWxQcnB1YmlkSW5kZXhJZCwKIAkJ CQkJCQkgIHRydWUsIE5VTEwsIDEsICZzY2Fua2V5KTsKLQl0dXAgPSBzeXN0YWJsZV9nZXRuZXh0 KHNjYW4pOwotCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCi0JewotCQlGb3JtX3BnX3B1Ymxp Y2F0aW9uX3JlbCBwdWJyZWw7Ci0KLQkJcHVicmVsID0gKEZvcm1fcGdfcHVibGljYXRpb25fcmVs KSBHRVRTVFJVQ1QodHVwKTsKIAotCQkvKgotCQkgKiBGb3IgYW55IHB1YmxpY2F0aW9uLCBwZ19w dWJsaWNhdGlvbl9yZWwgY29udGFpbnMgZWl0aGVyIG9ubHkgRVhDRVBUCi0JCSAqIGVudHJpZXMg b3Igb25seSBleHBsaWNpdGx5IGluY2x1ZGVkIHRhYmxlcy4gVGhlcmVmb3JlLCBleGFtaW5pbmcK LQkJICogdGhlIGZpcnN0IHR1cGxlIGlzIHN1ZmZpY2llbnQgdG8gZGV0ZXJtaW5lIHRhYmxlIGlu Y2x1c2lvbi4KLQkJICovCi0JCXJlc3VsdCA9ICFwdWJyZWwtPnByZXhjZXB0OworCS8qCisJICog QSBwdWJsaWNhdGlvbiBjYW4gaG9sZCBib3RoIGV4cGxpY2l0LWluY2x1ZGUgKHByZXhjZXB0PWZh bHNlKSBhbmQKKwkgKiBFWENFUFQgKHByZXhjZXB0PXRydWUpIHJvd3MgZm9yIHRoZSBzYW1lIHB1 YmlkLiAgU2NhbiB1bnRpbCB3ZSBmaW5kIGFuCisJICogZXhwbGljaXQtaW5jbHVkZSByb3csIHJh dGhlciB0aGFuIHJlbHlpbmcgb24gdGhlIGZpcnN0IHJvdydzIHByZXhjZXB0CisJICogdmFsdWUu CisJICovCisJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQodHVwID0gc3lzdGFibGVfZ2V0bmV4dChz Y2FuKSkpCisJeworCQlpZiAoISgoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0 dXApKS0+cHJleGNlcHQpCisJCXsKKwkJCXJlc3VsdCA9IHRydWU7CisJCQlicmVhazsKKwkJfQog CX0KIAogCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CkBAIC00NTYsMTEgKzUwMywzOCBAQCBHZXRQ dWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMoTGlzdCAqcmVzdWx0LCBQdWJsaWNhdGlvblBhcnRP cHQgcHViX3BhcnRvcHQsCiAgKiBhbmNlc3RvciBpcyBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0Lgog ICovCiBPaWQKLUdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24oT2lkIHB1Ym9pZCwgTGlz dCAqYW5jZXN0b3JzLCBpbnQgKmFuY2VzdG9yX2xldmVsKQorR2V0VG9wTW9zdEFuY2VzdG9ySW5Q dWJsaWNhdGlvbihPaWQgcHVib2lkLCBMaXN0ICphbmNlc3RvcnMsCisJCQkJCQkJCWludCAqYW5j ZXN0b3JfbGV2ZWwpCiB7CiAJTGlzdENlbGwgICAqbGM7CiAJT2lkCQkJdG9wbW9zdF9yZWxpZCA9 IEludmFsaWRPaWQ7CiAJaW50CQkJbGV2ZWwgPSAwOworCUhlYXBUdXBsZQl0dXA7CisKKwlpZiAo YW5jZXN0b3JzID09IE5JTCkKKwkJcmV0dXJuIEludmFsaWRPaWQ7CisKKwkvKgorCSAqIElmIHRo ZSBwYXJ0aXRpb24gcm9vdCAodGhlIGxhc3QgZWxlbWVudCBvZiBhbmNlc3RvcnMpIGlzIGV4Y2x1 ZGVkIGZyb20KKwkgKiB0aGlzIHB1YmxpY2F0aW9uIHZpYSBpdHMgRVhDRVBUIGNsYXVzZSwgdGhl IHBhcnRpdGlvbiBpcyBub3QgcHVibGlzaGVkCisJICogdGhyb3VnaCB0aGlzIHB1YmxpY2F0aW9u IGF0IGFsbCwgc28gd2Ugc2hvcnQtY2lyY3VpdCBhbmQgcmV0dXJuCisJICogSW52YWxpZE9pZCB3 aXRob3V0IHdhbGtpbmcgdGhlIGFuY2VzdG9yIGxpc3QuICBPbmx5IHRoZSByb290IG9mIGEKKwkg KiBwYXJ0aXRpb24gaGllcmFyY2h5IGNhbiBldmVyIGFwcGVhciBpbiBhIHB1YmxpY2F0aW9uJ3Mg RVhDRVBUIGNsYXVzZSAoYQorCSAqIHBhcnRpdGlvbiBpdHNlbGYgaXMgcmVqZWN0ZWQgZnJvbSBF WENFUFQgZWxzZXdoZXJlKSwgc28gaXQncyB0aGUgb25seQorCSAqIG9uZSB3b3J0aCBhIGNhdGFs b2cgbG9va3VwLgorCSAqLworCXR1cCA9IFNlYXJjaFN5c0NhY2hlMihQVUJMSUNBVElPTlJFTE1B UCwKKwkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShsbGFzdF9vaWQoYW5jZXN0b3JzKSksCisJCQkJ CQkgIE9iamVjdElkR2V0RGF0dW0ocHVib2lkKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHVw KSkKKwl7CisJCWJvb2wJCXJvb3RfZXhjZXB0ID0gKChGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkg R0VUU1RSVUNUKHR1cCkpLT5wcmV4Y2VwdDsKKworCQlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKwor CQlpZiAocm9vdF9leGNlcHQpCisJCQlyZXR1cm4gSW52YWxpZE9pZDsKKwl9CiAKIAkvKgogCSAq IEZpbmQgdGhlICJ0b3Btb3N0IiBhbmNlc3RvciB0aGF0IGlzIGluIHRoaXMgcHVibGljYXRpb24u CkBAIC01NTUsMjEgKzYyOSwzNSBAQCBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1Ymlk LCBQdWJsaWNhdGlvblJlbEluZm8gKnByaSwKIAkgKiBkdXBsaWNhdGVzLCBpdCdzIGhlcmUganVz dCB0byBwcm92aWRlIG5pY2VyIGVycm9yIG1lc3NhZ2UgaW4gY29tbW9uCiAJICogY2FzZS4gVGhl IHJlYWwgcHJvdGVjdGlvbiBpcyB0aGUgdW5pcXVlIGtleSBvbiB0aGUgY2F0YWxvZy4KIAkgKi8K LQlpZiAoU2VhcmNoU3lzQ2FjaGVFeGlzdHMyKFBVQkxJQ0FUSU9OUkVMTUFQLCBPYmplY3RJZEdl dERhdHVtKHJlbGlkKSwKLQkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0ocHViaWQpKSkKKwl0dXAg PSBTZWFyY2hTeXNDYWNoZTIoUFVCTElDQVRJT05SRUxNQVAsIE9iamVjdElkR2V0RGF0dW0ocmVs aWQpLAorCQkJCQkJICBPYmplY3RJZEdldERhdHVtKHB1YmlkKSk7CisKKwlpZiAoSGVhcFR1cGxl SXNWYWxpZCh0dXApKQogCXsKKwkJYm9vbAkJaXNfZXhjZXB0ID0gKChGb3JtX3BnX3B1YmxpY2F0 aW9uX3JlbCkgR0VUU1RSVUNUKHR1cCkpLT5wcmV4Y2VwdDsKKworCQlSZWxlYXNlU3lzQ2FjaGUo dHVwKTsKIAkJdGFibGVfY2xvc2UocmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAogCQlpZiAoaWZf bm90X2V4aXN0cykKIAkJCXJldHVybiBJbnZhbGlkT2JqZWN0QWRkcmVzczsKIAotCQllcmVwb3J0 KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX09CSkVDVCksCi0JCQkJIGVy cm1zZygicmVsYXRpb24gXCIlc1wiIGlzIGFscmVhZHkgbWVtYmVyIG9mIHB1YmxpY2F0aW9uIFwi JXNcIiIsCi0JCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpLCBwdWItPm5h bWUpKSk7CisJCWlmIChpc19leGNlcHQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29k ZShFUlJDT0RFX0RVUExJQ0FURV9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJjYW5ub3QgYWRkIHRh YmxlIFwiJXNcIiB0byBwdWJsaWNhdGlvbiBcIiVzXCIiLAorCQkJCQkJCVJlbGF0aW9uR2V0UXVh bGlmaWVkUmVsYXRpb25OYW1lKHRhcmdldHJlbCksCisJCQkJCQkJcHViLT5uYW1lKSwKKwkJCQkJ IGVycmRldGFpbCgiVGhlIHRhYmxlIGlzIGN1cnJlbnRseSBsaXN0ZWQgaW4gdGhlIEVYQ0VQVCBj bGF1c2Ugb2YgdGhlIHB1YmxpY2F0aW9uLiIpLAorCQkJCQkgZXJyaGludCgiQ2hhbmdlIEVYQ0VQ VCBsaXN0IHVzaW5nIEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBTRVQgVEFCTEVTIElOIFNDSEVNQSAu Li4gRVhDRVBULiIpKSk7CisJCWVsc2UKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2Rl KEVSUkNPREVfRFVQTElDQVRFX09CSkVDVCksCisJCQkJCSBlcnJtc2coInJlbGF0aW9uIFwiJXNc IiBpcyBhbHJlYWR5IG1lbWJlciBvZiBwdWJsaWNhdGlvbiBcIiVzXCIiLAorCQkJCQkJCVJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCksIHB1Yi0+bmFtZSkpKTsKIAl9CiAKLQljaGVj a19wdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24ocHJpKTsKKwljaGVja19wdWJsaWNhdGlvbl9hZGRf cmVsYXRpb24ocHJpLCBwdWJpZCk7CiAKIAkvKiBWYWxpZGF0ZSBhbmQgdHJhbnNsYXRlIGNvbHVt biBuYW1lcyBpbnRvIGEgQml0bWFwc2V0IG9mIGF0dG51bXMuICovCiAJYXR0bnVtcyA9IHB1Yl9j b2xsaXN0X3ZhbGlkYXRlKHByaS0+cmVsYXRpb24sIHByaS0+Y29sdW1ucyk7CkBAIC05OTIsMTIg KzEwODAsMTMgQEAgR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1 YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKICAqIEdldHMgbGlzdCBvZiB0YWJsZSBvaWRz IHRoYXQgd2VyZSBzcGVjaWZpZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgZm9yIGEKICAqIHB1Ymxp Y2F0aW9uLgogICoKLSAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBGT1IgQUxMIFRBQkxFUyBw dWJsaWNhdGlvbnMuCisgKiBUaGlzIGlzIHVzZWQgZm9yIEZPUiBBTEwgVEFCTEVTIGFuZCBGT1Ig VEFCTEVTIElOIFNDSEVNQSBwdWJsaWNhdGlvbnMsCisgKiBib3RoIG9mIHdoaWNoIHN1cHBvcnQg RVhDRVBUIFRBQkxFLgogICovCiBMaXN0ICoKIEdldEV4Y2x1ZGVkUHVibGljYXRpb25UYWJsZXMo T2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCiB7Ci0JQXNzZXJ0KEdl dFB1YmxpY2F0aW9uKHB1YmlkKS0+YWxsdGFibGVzKTsKKwlBc3NlcnQoR2V0UHVibGljYXRpb24o cHViaWQpLT5hbGx0YWJsZXMgfHwgaXNfc2NoZW1hX3B1YmxpY2F0aW9uKHB1YmlkKSk7CiAKIAly ZXR1cm4gZ2V0X3B1YmxpY2F0aW9uX3JlbGF0aW9ucyhwdWJpZCwgcHViX3BhcnRvcHQsIHRydWUp OwogfQpAQCAtMTA1OSwxNSArMTE0OCwxNSBAQCBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhP aWQgcHViaWQsIGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KQogCVRhYmxlU2NhbkRlc2Mg c2NhbjsKIAlIZWFwVHVwbGUJdHVwbGU7CiAJTGlzdAkgICAqcmVzdWx0ID0gTklMOwotCUxpc3QJ ICAgKmV4Y2VwdGxpc3QgPSBOSUw7CisJTGlzdAkgICAqZXhjZXB0X3JlbGlkcyA9IE5JTDsKIAog CUFzc2VydCghKHJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSAmJiBwdWJ2aWFyb290KSk7CiAK IAkvKiBFWENFUFQgZmlsdGVyaW5nIGFwcGxpZXMgb25seSB0byByZWxhdGlvbnMsIG5vdCBzZXF1 ZW5jZXMgKi8KIAlpZiAocmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OKQotCQlleGNlcHRsaXN0 ID0gR2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxlcyhwdWJpZCwgcHVidmlhcm9vdCA/Ci0JCQkJ CQkJCQkJCQkgIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCA6Ci0JCQkJCQkJCQkJCQkgIFBVQkxJQ0FU SU9OX1BBUlRfTEVBRik7CisJCWV4Y2VwdF9yZWxpZHMgPSBHZXRFeGNsdWRlZFB1YmxpY2F0aW9u VGFibGVzKHB1YmlkLCBwdWJ2aWFyb290ID8KKwkJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFS VF9ST09UIDoKKwkJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9MRUFGKTsKIAogCWNsYXNz UmVsID0gdGFibGVfb3BlbihSZWxhdGlvblJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CiAK QEAgLTEwODUsNyArMTE3NCw3IEBAIEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJp ZCwgY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3QpCiAKIAkJaWYgKGlzX3B1Ymxpc2hhYmxl X2NsYXNzKHJlbGlkLCByZWxGb3JtKSAmJgogCQkJIShyZWxGb3JtLT5yZWxpc3BhcnRpdGlvbiAm JiBwdWJ2aWFyb290KSAmJgotCQkJIWxpc3RfbWVtYmVyX29pZChleGNlcHRsaXN0LCByZWxpZCkp CisJCQkhbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdF9yZWxpZHMsIHJlbGlkKSkKIAkJCXJlc3VsdCA9 IGxhcHBlbmRfb2lkKHJlc3VsdCwgcmVsaWQpOwogCX0KIApAQCAtMTEwNyw3ICsxMTk2LDcgQEAg R2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBjaGFyIHJlbGtpbmQsIGJvb2wg cHVidmlhcm9vdCkKIAogCQkJaWYgKGlzX3B1Ymxpc2hhYmxlX2NsYXNzKHJlbGlkLCByZWxGb3Jt KSAmJgogCQkJCSFyZWxGb3JtLT5yZWxpc3BhcnRpdGlvbiAmJgotCQkJCSFsaXN0X21lbWJlcl9v aWQoZXhjZXB0bGlzdCwgcmVsaWQpKQorCQkJCSFsaXN0X21lbWJlcl9vaWQoZXhjZXB0X3JlbGlk cywgcmVsaWQpKQogCQkJCXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwgcmVsaWQpOwogCQl9 CiAKQEAgLTEyNDIsMjIgKzEzMzEsNjggQEAgR2V0U2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMo T2lkIHNjaGVtYWlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCiAKIC8qCiAgKiBH ZXRzIHRoZSBsaXN0IG9mIGFsbCByZWxhdGlvbnMgcHVibGlzaGVkIGJ5IEZPUiBUQUJMRVMgSU4g U0NIRU1BCi0gKiBwdWJsaWNhdGlvbi4KKyAqIHB1YmxpY2F0aW9uLCBleGNsdWRpbmcgYW55IHRh YmxlcyBsaXN0ZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UuCiAgKi8KIExpc3QgKgogR2V0QWxsU2No ZW1hUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHVi X3BhcnRvcHQpCiB7CiAJTGlzdAkgICAqcmVzdWx0ID0gTklMOwogCUxpc3QJICAgKnB1YnNjaGVt YWxpc3QgPSBHZXRQdWJsaWNhdGlvblNjaGVtYXMocHViaWQpOworCUxpc3QJICAgKmV4Y2VwdF9y ZWxpZHMgPSBOSUw7CiAJTGlzdENlbGwgICAqY2VsbDsKIAorCS8qIGdldCB0aGUgbGlzdCBvZiB0 YWJsZXMgZXhjbHVkZWQgdmlhIEVYQ0VQVCBUQUJMRSBmb3IgdGhpcyBwdWJsaWNhdGlvbiAqLwor CWlmIChwdWJzY2hlbWFsaXN0ICE9IE5JTCkKKwkJZXhjZXB0X3JlbGlkcyA9IEdldEV4Y2x1ZGVk UHVibGljYXRpb25UYWJsZXMocHViaWQsIHB1Yl9wYXJ0b3B0KTsKKwogCWZvcmVhY2goY2VsbCwg cHVic2NoZW1hbGlzdCkKIAl7CiAJCU9pZAkJCXNjaGVtYWlkID0gbGZpcnN0X29pZChjZWxsKTsK IAkJTGlzdAkgICAqc2NoZW1hUmVscyA9IE5JTDsKIAogCQlzY2hlbWFSZWxzID0gR2V0U2NoZW1h UHVibGljYXRpb25SZWxhdGlvbnMoc2NoZW1haWQsIHB1Yl9wYXJ0b3B0KTsKLQkJcmVzdWx0ID0g bGlzdF9jb25jYXQocmVzdWx0LCBzY2hlbWFSZWxzKTsKKworCQlpZiAoZXhjZXB0X3JlbGlkcyAh PSBOSUwpCisJCXsKKwkJCS8qIGZpbHRlciBvdXQgYW55IHRhYmxlcyB0aGF0IGFwcGVhciBpbiB0 aGUgRVhDRVBUIGxpc3QgKi8KKwkJCUxpc3RDZWxsICAgKnJsYzsKKworCQkJZm9yZWFjaChybGMs IHNjaGVtYVJlbHMpCisJCQl7CisJCQkJT2lkCQkJcmVsaWQgPSBsZmlyc3Rfb2lkKHJsYyk7CisJ CQkJYm9vbAkJZXhjbHVkZWQgPSBsaXN0X21lbWJlcl9vaWQoZXhjZXB0X3JlbGlkcywgcmVsaWQp OworCisJCQkJLyoKKwkJCQkgKiBBIHBhcnRpdGlvbiB3aG9zZSBhbmNlc3RvciBpcyBpbiB0aGUg cHVibGljYXRpb24ncyBFWENFUFQKKwkJCQkgKiBsaXN0IGlzIGFsc28gZXhjbHVkZWQsIGV2ZW4g aWYgdGhlIHBhcnRpdGlvbiBpdHNlbGYgbGl2ZXMKKwkJCQkgKiBpbiBhIGRpZmZlcmVudCAoaW5j bHVkZWQpIHNjaGVtYS4gIEluZGl2aWR1YWwgcGFydGl0aW9ucworCQkJCSAqIGNhbm5vdCBhcHBl YXIgaW4gRVhDRVBULCBzbyBjYXNjYWRpbmcgZnJvbSB0aGUgcm9vdCBpcyB0aGUKKwkJCQkgKiBv bmx5IHdheSB0byBleGNsdWRlIGEgcGFydGl0aW9uOyB0aGlzIG1hdGNoZXMgdGhlIEFMTAorCQkJ CSAqIFRBQkxFUyBFWENFUFQgKFRBQkxFIHJvb3QpIGJlaGF2aW9yLgorCQkJCSAqLworCQkJCWlm ICghZXhjbHVkZWQgJiYgZ2V0X3JlbF9yZWxpc3BhcnRpdGlvbihyZWxpZCkpCisJCQkJeworCQkJ CQlMaXN0CSAgICphbmNlc3RvcnMgPSBnZXRfcGFydGl0aW9uX2FuY2VzdG9ycyhyZWxpZCk7CisJ CQkJCUxpc3RDZWxsICAgKmFsYzsKKworCQkJCQlmb3JlYWNoKGFsYywgYW5jZXN0b3JzKQorCQkJ CQl7CisJCQkJCQlpZiAobGlzdF9tZW1iZXJfb2lkKGV4Y2VwdF9yZWxpZHMsIGxmaXJzdF9vaWQo YWxjKSkpCisJCQkJCQl7CisJCQkJCQkJZXhjbHVkZWQgPSB0cnVlOworCQkJCQkJCWJyZWFrOwor CQkJCQkJfQorCQkJCQl9CisJCQkJCWxpc3RfZnJlZShhbmNlc3RvcnMpOworCQkJCX0KKworCQkJ CWlmICghZXhjbHVkZWQpCisJCQkJCXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwgcmVsaWQp OworCQkJfQorCQkJbGlzdF9mcmVlKHNjaGVtYVJlbHMpOworCQl9CisJCWVsc2UKKwkJCXJlc3Vs dCA9IGxpc3RfY29uY2F0KHJlc3VsdCwgc2NoZW1hUmVscyk7CiAJfQogCiAJcmV0dXJuIHJlc3Vs dDsKQEAgLTEzMzQsNiArMTQ2OSw3IEBAIGlzX3RhYmxlX3B1Ymxpc2hhYmxlX2luX3B1YmxpY2F0 aW9uKE9pZCByZWxpZCwgUHVibGljYXRpb24gKnB1YikKIHsKIAlib29sCQlyZWxpc3BhcnRpdGlv bjsKIAlMaXN0CSAgICphbmNlc3RvcnMgPSBOSUw7CisJSGVhcFR1cGxlCXR1cDsKIAogCS8qCiAJ ICogRm9yIG5vbi1wdWJ2aWFyb290IHB1YmxpY2F0aW9ucywgYSBwYXJ0aXRpb25lZCB0YWJsZSBp cyBuZXZlciB0aGUKQEAgLTEzOTAsMjAgKzE1MjYsNjAgQEAgaXNfdGFibGVfcHVibGlzaGFibGVf aW5fcHVibGljYXRpb24oT2lkIHJlbGlkLCBQdWJsaWNhdGlvbiAqcHViKQogCSAqIElmIGl0J3Mg ZmFsc2UsIHRoZSBwYXJ0aXRpb24gaXMgY292ZXJlZCBieSBpdHMgYW5jZXN0b3IncyBwcmVzZW5j ZSBpbgogCSAqIHRoZSBwdWJsaWNhdGlvbiwgaXQgc2hvdWxkIGJlIGluY2x1ZGVkIChyZXR1cm4g dHJ1ZSkuCiAJICovCi0JaWYgKHJlbGlzcGFydGl0aW9uICYmCi0JCU9pZElzVmFsaWQoR2V0VG9w TW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihwdWItPm9pZCwgYW5jZXN0b3JzLCBOVUxMKSkpCi0J CXJldHVybiAhcHViLT5wdWJ2aWFyb290OworCWlmIChyZWxpc3BhcnRpdGlvbikKKwl7CisJCUhl YXBUdXBsZQlyb290X3R1cDsKKworCQlpZiAoT2lkSXNWYWxpZChHZXRUb3BNb3N0QW5jZXN0b3JJ blB1YmxpY2F0aW9uKHB1Yi0+b2lkLCBhbmNlc3RvcnMsIE5VTEwpKSkKKwkJCXJldHVybiAhcHVi LT5wdWJ2aWFyb290OworCisJCS8qCisJCSAqIEdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRp b24oKSByZXR1cm5zIEludmFsaWRPaWQgYm90aCB3aGVuIG5vCisJCSAqIGFuY2VzdG9yIG1hdGNo ZWQgYXQgYWxsLCBhbmQgd2hlbiB0aGUgcm9vdCBpcyBleGNsdWRlZCB2aWEgRVhDRVBULgorCQkg KiBEaXNhbWJpZ3VhdGUgaGVyZTogaWYgdGhlIHJvb3QgaXMgZXhjbHVkZWQsIHRoZSBwYXJ0aXRp b24gaXMgbmV2ZXIKKwkJICogcHVibGlzaGVkIHRocm91Z2ggdGhpcyBwdWJsaWNhdGlvbiwgcmVn YXJkbGVzcyBvZiB3aGV0aGVyIHRoZQorCQkgKiBwYXJ0aXRpb24ncyBvd24gc2NoZW1hIGlzIHNl cGFyYXRlbHkgaW5jbHVkZWQuCisJCSAqLworCQlyb290X3R1cCA9IFNlYXJjaFN5c0NhY2hlMihQ VUJMSUNBVElPTlJFTE1BUCwKKwkJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShsbGFzdF9vaWQo YW5jZXN0b3JzKSksCisJCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0ocHViLT5vaWQpKTsKKwkJ aWYgKEhlYXBUdXBsZUlzVmFsaWQocm9vdF90dXApKQorCQl7CisJCQlib29sCQlyb290X2V4Y2Vw dCA9ICgoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVChyb290X3R1cCkpLT5wcmV4 Y2VwdDsKKworCQkJUmVsZWFzZVN5c0NhY2hlKHJvb3RfdHVwKTsKKwkJCWlmIChyb290X2V4Y2Vw dCkKKwkJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwl9CiAKIAkvKgogCSAqIENoZWNrIHdoZXRoZXIg dGhlIHRhYmxlIGlzIGV4cGxpY2l0bHkgcHVibGlzaGVkIHZpYSBwZ19wdWJsaWNhdGlvbl9yZWwK IAkgKiBvciBwZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UuCisJICoKKwkgKiBBIHBnX3B1YmxpY2F0 aW9uX3JlbCByb3cgd2l0aCBwcmV4Y2VwdD10cnVlIG1lYW5zIHRoZSB0YWJsZSBpcworCSAqIGV4 cGxpY2l0bHkgZXhjbHVkZWQgdmlhIEVYQ0VQVCBhbmQgbXVzdCBub3QgYmUgcmVwb3J0ZWQgYXMg cHVibGlzaGVkLAorCSAqIGV2ZW4gaWYgaXRzIHNjaGVtYSBpcyBvdGhlcndpc2UgaW5jbHVkZWQu ICBBIHJvdyB3aXRoIHByZXhjZXB0PWZhbHNlCisJICogbWVhbnMgaXQgaXMgZXhwbGljaXRseSBp bmNsdWRlZC4gIElmIG5vIHBnX3B1YmxpY2F0aW9uX3JlbCByb3cgZXhpc3RzLAorCSAqIHRoZSB0 YWJsZSBpcyBwdWJsaXNoZWQgaWZmIGl0cyBzY2hlbWEgYXBwZWFycyBpbgorCSAqIHBnX3B1Ymxp Y2F0aW9uX25hbWVzcGFjZS4KIAkgKi8KLQlyZXR1cm4gKFNlYXJjaFN5c0NhY2hlRXhpc3RzMihQ VUJMSUNBVElPTlJFTE1BUCwKLQkJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKHJlbGlkKSwKLQkJ CQkJCQkJICBPYmplY3RJZEdldERhdHVtKHB1Yi0+b2lkKSkgfHwKLQkJCVNlYXJjaFN5c0NhY2hl RXhpc3RzMihQVUJMSUNBVElPTk5BTUVTUEFDRU1BUCwKLQkJCQkJCQkJICBPYmplY3RJZEdldERh dHVtKGdldF9yZWxfbmFtZXNwYWNlKHJlbGlkKSksCi0JCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1 bShwdWItPm9pZCkpKTsKKworCXR1cCA9IFNlYXJjaFN5c0NhY2hlMihQVUJMSUNBVElPTlJFTE1B UCwKKwkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShyZWxpZCksCisJCQkJCQkgIE9iamVjdElkR2V0 RGF0dW0ocHViLT5vaWQpKTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCXsKKwkJYm9v bAkJaXNfZXhjZXB0OworCisJCWlzX2V4Y2VwdCA9ICgoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwp IEdFVFNUUlVDVCh0dXApKS0+cHJleGNlcHQ7CisJCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCQly ZXR1cm4gIWlzX2V4Y2VwdDsKKwl9CisKKwlyZXR1cm4gU2VhcmNoU3lzQ2FjaGVFeGlzdHMyKFBV QkxJQ0FUSU9OTkFNRVNQQUNFTUFQLAorCQkJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShnZXRfcmVs X25hbWVzcGFjZShyZWxpZCkpLAorCQkJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShwdWItPm9pZCkp OwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25j bWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwppbmRleCA0NDBh ZGIzNTZhZC4uOWE5MjJhNmRjYzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1 YmxpY2F0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21k cy5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNp bmNsdWRlICJjYXRhbG9nL29iamVjdGFjY2Vzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0 YWRkcmVzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGFydGl0aW9uLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ19kYXRhYmFzZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfaW5oZXJpdHMuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX25hbWVzcGFjZS5oIgpAQCAtNzEsNiArNzIsNyBAQCBzdGF0aWMg dm9pZCBQdWJsaWNhdGlvbkFkZFNjaGVtYXMoT2lkIHB1YmlkLCBMaXN0ICpzY2hlbWFzLCBib29s IGlmX25vdF9leGlzdHMsCiAJCQkJCQkJCSAgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpOwog c3RhdGljIHZvaWQgUHVibGljYXRpb25Ecm9wU2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVt YXMsIGJvb2wgbWlzc2luZ19vayk7CiBzdGF0aWMgY2hhciBkZWZHZXRHZW5lcmF0ZWRDb2xzT3B0 aW9uKERlZkVsZW0gKmRlZik7CitzdGF0aWMgdm9pZCBDaGVja0V4Y2VwdE5vdEluVGFibGVMaXN0 KExpc3QgKmV4Y2VwdF9yZWxzLCBMaXN0ICpleHBsaWNpdHJlbGlkcyk7CiAKIAogc3RhdGljIHZv aWQKQEAgLTE4MSw3ICsxODMsNyBAQCBwYXJzZV9wdWJsaWNhdGlvbl9vcHRpb25zKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKICAqLwogc3RhdGljIHZvaWQKIE9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRz KExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgUGFyc2VTdGF0ZSAqcHN0YXRlLAotCQkJCQkJICAgTGlz dCAqKnJlbHMsIExpc3QgKipleGNlcHRyZWxzLCBMaXN0ICoqc2NoZW1hcykKKwkJCQkJCSAgIExp c3QgKipyZWxzLCBMaXN0ICoqZXhjZXB0X3B1YnRhYmxlcywgTGlzdCAqKnNjaGVtYXMpCiB7CiAJ TGlzdENlbGwgICAqY2VsbDsKIAlQdWJsaWNhdGlvbk9ialNwZWMgKnB1Ym9iajsKQEAgLTIwMCw3 ICsyMDIsNyBAQCBPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhMaXN0ICpwdWJvYmpzcGVjX2xp c3QsIFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJewogCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9FWENF UFRfVEFCTEU6CiAJCQkJcHVib2JqLT5wdWJ0YWJsZS0+ZXhjZXB0ID0gdHJ1ZTsKLQkJCQkqZXhj ZXB0cmVscyA9IGxhcHBlbmQoKmV4Y2VwdHJlbHMsIHB1Ym9iai0+cHVidGFibGUpOworCQkJCSpl eGNlcHRfcHVidGFibGVzID0gbGFwcGVuZCgqZXhjZXB0X3B1YnRhYmxlcywgcHVib2JqLT5wdWJ0 YWJsZSk7CiAJCQkJYnJlYWs7CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX1RBQkxFOgogCQkJCXB1 Ym9iai0+cHVidGFibGUtPmV4Y2VwdCA9IGZhbHNlOwpAQCAtMjI0LDYgKzIyNiwzOCBAQCBPYmpl Y3RzSW5QdWJsaWNhdGlvblRvT2lkcyhMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIFBhcnNlU3RhdGUg KnBzdGF0ZSwKIAogCQkJCS8qIEZpbHRlciBvdXQgZHVwbGljYXRlcyBpZiB1c2VyIHNwZWNpZmll cyAic2NoMSwgc2NoMSIgKi8KIAkJCQkqc2NoZW1hcyA9IGxpc3RfYXBwZW5kX3VuaXF1ZV9vaWQo KnNjaGVtYXMsIHNjaGVtYWlkKTsKKworCQkJCS8qCisJCQkJICogUXVhbGlmeSB1bnF1YWxpZmll ZCBFWENFUFQgdGFibGUgbmFtZXMgd2l0aCB0aGUgcmVzb2x2ZWQKKwkJCQkgKiBjdXJyZW50IHNj aGVtYSBhbmQgcmVqZWN0IGFueSBleHBsaWNpdGx5IGNyb3NzLXNjaGVtYQorCQkJCSAqIGVudHJp ZXMuICBUaGlzIG1pcnJvcnMgdGhlIHBhcnNlLXRpbWUgaGFuZGxpbmcgZG9uZSBmb3IKKwkJCQkg KiBUQUJMRVNfSU5fU0NIRU1BIGluIHByZXByb2Nlc3NfcHVib2JqX2xpc3QoKSwgZGVmZXJyZWQg aGVyZQorCQkJCSAqIGJlY2F1c2UgQ1VSUkVOVF9TQ0hFTUEgaXMgbm90IGtub3duIHVudGlsIGV4 ZWN1dGlvbiB0aW1lLgorCQkJCSAqLworCQkJCWlmIChwdWJvYmotPmV4Y2VwdF90YWJsZXMgIT0g TklMKQorCQkJCXsKKwkJCQkJY2hhcgkgICAqY3VyX3NjaGVtYV9uYW1lID0gZ2V0X25hbWVzcGFj ZV9uYW1lKHNjaGVtYWlkKTsKKworCQkJCQlmb3JlYWNoX3B0cihQdWJsaWNhdGlvbk9ialNwZWMs IGVvYmosIHB1Ym9iai0+ZXhjZXB0X3RhYmxlcykKKwkJCQkJeworCQkJCQkJY29uc3QgY2hhciAq ZW9ial9zY2hlbWFuYW1lID0KKwkJCQkJCQllb2JqLT5wdWJ0YWJsZS0+cmVsYXRpb24tPnNjaGVt YW5hbWU7CisJCQkJCQljb25zdCBjaGFyICplb2JqX3JlbG5hbWUgPQorCQkJCQkJCWVvYmotPnB1 YnRhYmxlLT5yZWxhdGlvbi0+cmVsbmFtZTsKKworCQkJCQkJaWYgKGVvYmpfc2NoZW1hbmFtZSA9 PSBOVUxMKQorCQkJCQkJCWVvYmotPnB1YnRhYmxlLT5yZWxhdGlvbi0+c2NoZW1hbmFtZSA9IGN1 cl9zY2hlbWFfbmFtZTsKKwkJCQkJCWVsc2UgaWYgKHN0cmNtcChlb2JqX3NjaGVtYW5hbWUsIGN1 cl9zY2hlbWFfbmFtZSkgIT0gMCkKKwkJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkJZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCQkJZXJybXNn KCJ0YWJsZSBcIiVzXCIgaW4gRVhDRVBUIGNsYXVzZSBkb2VzIG5vdCBiZWxvbmcgdG8gc2NoZW1h IFwiJXNcIiIsCisJCQkJCQkJCQkJICAgcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIoZW9ial9z Y2hlbWFuYW1lLCBlb2JqX3JlbG5hbWUpLAorCQkJCQkJCQkJCSAgIGN1cl9zY2hlbWFfbmFtZSkp OworCisJCQkJCQkqZXhjZXB0X3B1YnRhYmxlcyA9IGxhcHBlbmQoKmV4Y2VwdF9wdWJ0YWJsZXMs CisJCQkJCQkJCQkJCQkJZW9iai0+cHVidGFibGUpOworCQkJCQl9CisJCQkJfQogCQkJCWJyZWFr OwogCQkJZGVmYXVsdDoKIAkJCQkvKiBzaG91bGRuJ3QgaGFwcGVuICovCkBAIC03NzAsNiArODA0 LDQ4IEBAIFRyYW5zZm9ybVB1YldoZXJlQ2xhdXNlcyhMaXN0ICp0YWJsZXMsIGNvbnN0IGNoYXIg KnF1ZXJ5U3RyaW5nLAogCX0KIH0KIAorLyoKKyAqIENoZWNrIHRoYXQgbm8gcmVsYXRpb24gaW4g ZXhjZXB0X3JlbHMgaXMgYWxzbyBwcmVzZW50IGluIGV4cGxpY2l0cmVsaWRzLAorICogdGhlIGxp c3Qgb2YgT0lEcyBhZGRlZCB0byB0aGUgcHVibGljYXRpb24gYnkgdGhlIGV4cGxpY2l0IFRBQkxF IGxpc3QuICBBCisgKiB0YWJsZSBjYW5ub3QgYmUgYm90aCBleHBsaWNpdGx5IHB1Ymxpc2hlZCBh bmQgZXhjbHVkZWQgaW4gdGhlIHNhbWUgRERMLgorICoKKyAqIEFsc28gY2hlY2sgdGhhdCBubyBy ZWxhdGlvbiBpbiBleHBsaWNpdHJlbGlkcyBpcyBhIHBhcnRpdGlvbiB3aG9zZQorICogcGFydGl0 aW9uIHJvb3QgaXMgaW4gZXhjZXB0X3JlbHM7IHRoYXQgd291bGQgbGVhdmUgdGhlIGNhdGFsb2cK KyAqIGluY29uc2lzdGVudCAocm9vdCBleGNsdWRlZCwgcGFydGl0aW9uIGV4cGxpY2l0bHkgaW5j bHVkZWQpIHdpdGggdGhlCisgKiBhbmNlc3Rvci1jYXNjYWRlIHJ1bGUgc2lsZW50bHkgb3ZlcnJp ZGluZyB0aGUgaW5jbHVkZSBhdCByZXBsaWNhdGlvbgorICogdGltZS4KKyAqLworc3RhdGljIHZv aWQKK0NoZWNrRXhjZXB0Tm90SW5UYWJsZUxpc3QoTGlzdCAqZXhjZXB0X3JlbHMsIExpc3QgKmV4 cGxpY2l0cmVsaWRzKQoreworCWZvcmVhY2hfb2lkKGV4cGxpY2l0cmVsaWQsIGV4cGxpY2l0cmVs aWRzKQorCXsKKwkJT2lkCQkJcm9vdCA9IEludmFsaWRPaWQ7CisKKwkJaWYgKGdldF9yZWxfcmVs aXNwYXJ0aXRpb24oZXhwbGljaXRyZWxpZCkpCisJCQlyb290ID0gbGxhc3Rfb2lkKGdldF9wYXJ0 aXRpb25fYW5jZXN0b3JzKGV4cGxpY2l0cmVsaWQpKTsKKworCQlmb3JlYWNoX3B0cihQdWJsaWNh dGlvblJlbEluZm8sIHByaSwgZXhjZXB0X3JlbHMpCisJCXsKKwkJCU9pZAkJCWV4Y2VwdHJlbGlk ID0gUmVsYXRpb25HZXRSZWxpZChwcmktPnJlbGF0aW9uKTsKKworCQkJaWYgKGV4Y2VwdHJlbGlk ID09IGV4cGxpY2l0cmVsaWQpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQllcnJtc2coInRhYmxlIFwiJXNc IiBjYW5ub3QgYmUgYm90aCBwdWJsaXNoZWQgYW5kIGV4Y2x1ZGVkIiwKKwkJCQkJCQkgICBSZWxh dGlvbkdldFF1YWxpZmllZFJlbGF0aW9uTmFtZShwcmktPnJlbGF0aW9uKSkpOworCisJCQlpZiAo T2lkSXNWYWxpZChyb290KSAmJiBleGNlcHRyZWxpZCA9PSByb290KQorCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJ CQkJCSBlcnJtc2coInBhcnRpdGlvbiBcIiVzXCIgY2Fubm90IGJlIGJvdGggcHVibGlzaGVkIGFu ZCBleGNsdWRlZCIsCisJCQkJCQkJCXF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKGdldF9uYW1l c3BhY2VfbmFtZShnZXRfcmVsX25hbWVzcGFjZShleHBsaWNpdHJlbGlkKSksCisJCQkJCQkJCQkJ CQkJCSAgIGdldF9yZWxfbmFtZShleHBsaWNpdHJlbGlkKSkpLAorCQkJCQkJIGVycmRldGFpbCgi QW5jZXN0b3IgXCIlc1wiIGlzIGFsc28gYmVpbmcgZXhjbHVkZWQgYnkgdGhpcyBzYW1lIGNvbW1h bmQuIiwKKwkJCQkJCQkJICAgUmVsYXRpb25HZXRRdWFsaWZpZWRSZWxhdGlvbk5hbWUocHJpLT5y ZWxhdGlvbikpKSk7CisJCX0KKwl9Cit9CiAKIC8qCiAgKiBHaXZlbiBhIGxpc3Qgb2YgdGFibGVz IHRoYXQgYXJlIGdvaW5nIHRvIGJlIGFkZGVkIHRvIGEgcHVibGljYXRpb24sCkBAIC04NDksNyAr OTI1LDcgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJs aWNhdGlvblN0bXQgKnN0bXQpCiAJY2hhcgkJcHVibGlzaF9nZW5lcmF0ZWRfY29sdW1uczsKIAlB Y2xSZXN1bHQJYWNscmVzdWx0OwogCUxpc3QJICAgKnJlbGF0aW9ucyA9IE5JTDsKLQlMaXN0CSAg ICpleGNlcHRyZWxhdGlvbnMgPSBOSUw7CisJTGlzdAkgICAqZXhjZXB0X3B1YnRhYmxlcyA9IE5J TDsKIAlMaXN0CSAgICpzY2hlbWFpZGxpc3QgPSBOSUw7CiAKIAkvKiBtdXN0IGhhdmUgQ1JFQVRF IHByaXZpbGVnZSBvbiBkYXRhYmFzZSAqLwpAQCAtOTM2LDE2ICsxMDEyLDE2IEBAIENyZWF0ZVB1 YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10 KQogCiAJLyogQXNzb2NpYXRlIG9iamVjdHMgd2l0aCB0aGUgcHVibGljYXRpb24uICovCiAJT2Jq ZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2JqZWN0cywgcHN0YXRlLCAmcmVsYXRp b25zLAotCQkJCQkJCSAgICZleGNlcHRyZWxhdGlvbnMsICZzY2hlbWFpZGxpc3QpOworCQkJCQkJ CSAgICZleGNlcHRfcHVidGFibGVzLCAmc2NoZW1haWRsaXN0KTsKIAogCWlmIChzdG10LT5mb3Jf YWxsX3RhYmxlcykKIAl7CiAJCS8qIFByb2Nlc3MgRVhDRVBUIHRhYmxlIGxpc3QgKi8KLQkJaWYg KGV4Y2VwdHJlbGF0aW9ucyAhPSBOSUwpCisJCWlmIChleGNlcHRfcHVidGFibGVzICE9IE5JTCkK IAkJewogCQkJTGlzdAkgICAqcmVsczsKIAotCQkJcmVscyA9IE9wZW5UYWJsZUxpc3QoZXhjZXB0 cmVsYXRpb25zKTsKKwkJCXJlbHMgPSBPcGVuVGFibGVMaXN0KGV4Y2VwdF9wdWJ0YWJsZXMpOwog CQkJUHVibGljYXRpb25BZGRUYWJsZXMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxMKTsKIAkJCUNs b3NlVGFibGVMaXN0KHJlbHMpOwogCQl9CkBAIC05NTksNiArMTAzNSw4IEBAIENyZWF0ZVB1Ymxp Y2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQog CX0KIAllbHNlIGlmICghc3RtdC0+Zm9yX2FsbF9zZXF1ZW5jZXMpCiAJeworCQlMaXN0CSAgICpl eHBsaWNpdHJlbGlkcyA9IE5JTDsKKwogCQkvKiBGT1IgVEFCTEVTIElOIFNDSEVNQSByZXF1aXJl cyBzdXBlcnVzZXIgKi8KIAkJaWYgKHNjaGVtYWlkbGlzdCAhPSBOSUwgJiYgIXN1cGVydXNlcigp KQogCQkJZXJlcG9ydChFUlJPUiwKQEAgLTk3Nyw2ICsxMDU1LDE5IEBAIENyZWF0ZVB1YmxpY2F0 aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCQkJ CQkJCQkJICAgc2NoZW1haWRsaXN0ICE9IE5JTCwKIAkJCQkJCQkJCSAgIHB1Ymxpc2hfdmlhX3Bh cnRpdGlvbl9yb290KTsKIAorCQkJLyoKKwkJCSAqIENvbGxlY3QgZXhwbGljaXQgdGFibGUgT0lE cyBub3csIGJlZm9yZSB3ZSBjbG9zZSB0aGUgcmVsYXRpb24KKwkJCSAqIGxpc3QsIHNvIHRoYXQg ZXhjZXB0LXRhYmxlIHZhbGlkYXRpb24gYmVsb3cgY2FuIGNoZWNrIGZvcgorCQkJICogY29udHJh ZGljdGlvbnMgd2l0aG91dCByZWx5aW5nIG9uIGEgY2F0YWxvZyBzY2FuIHRoYXQgbWlnaHQgbm90 CisJCQkgKiB5ZXQgc2VlIHRoZSBqdXN0LWluc2VydGVkIHJvd3MuCisJCQkgKi8KKwkJCWlmIChl eGNlcHRfcHVidGFibGVzICE9IE5JTCkKKwkJCXsKKwkJCQlmb3JlYWNoX3B0cihQdWJsaWNhdGlv blJlbEluZm8sIHByaSwgcmVscykKKwkJCQkJZXhwbGljaXRyZWxpZHMgPSBsYXBwZW5kX29pZChl eHBsaWNpdHJlbGlkcywKKwkJCQkJCQkJCQkJCSBSZWxhdGlvbkdldFJlbGlkKHByaS0+cmVsYXRp b24pKTsKKwkJCX0KKwogCQkJUHVibGljYXRpb25BZGRUYWJsZXMocHVib2lkLCByZWxzLCB0cnVl LCBOVUxMKTsKIAkJCUNsb3NlVGFibGVMaXN0KHJlbHMpOwogCQl9CkBAIC05ODksNiArMTA4MCwy NiBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0 aW9uU3RtdCAqc3RtdCkKIAkJCSAqLwogCQkJTG9ja1NjaGVtYUxpc3Qoc2NoZW1haWRsaXN0KTsK IAkJCVB1YmxpY2F0aW9uQWRkU2NoZW1hcyhwdWJvaWQsIHNjaGVtYWlkbGlzdCwgdHJ1ZSwgTlVM TCk7CisKKwkJCWlmIChleGNlcHRfcHVidGFibGVzICE9IE5JTCkKKwkJCXsKKwkJCQlMaXN0CSAg ICpleGNlcHRfcmVsczsKKworCQkJCWV4Y2VwdF9yZWxzID0gT3BlblRhYmxlTGlzdChleGNlcHRf cHVidGFibGVzKTsKKworCQkJCS8qCisJCQkJICogVmFsaWRhdGUgdGhhdCBlYWNoIGV4Y2x1ZGVk IHRhYmxlIGlzIG5vdCBhbHNvIGluIHRoZQorCQkJCSAqIGV4cGxpY2l0IHRhYmxlIGxpc3QgKHdo aWNoIHdvdWxkIGJlIGNvbnRyYWRpY3RvcnkpLCBhbmQKKwkJCQkgKiB0aGF0IG5vIGV4cGxpY2l0 IHBhcnRpdGlvbidzIHJvb3QgaXMgaW4gdGhlIGV4Y2VwdCBsaXN0LgorCQkJCSAqIFVzZSB0aGUg aW4tbWVtb3J5IGV4cGxpY2l0cmVsaWRzIGNvbGxlY3RlZCBhYm92ZSByYXRoZXIKKwkJCQkgKiB0 aGFuIHJlLXJlYWRpbmcgdGhlIGNhdGFsb2csIHdoaWNoIG1heSBub3QgeWV0IHNlZSB0aGUKKwkJ CQkgKiBqdXN0LWluc2VydGVkIHJvd3MuCisJCQkJICovCisJCQkJQ2hlY2tFeGNlcHROb3RJblRh YmxlTGlzdChleGNlcHRfcmVscywgZXhwbGljaXRyZWxpZHMpOworCisJCQkJUHVibGljYXRpb25B ZGRUYWJsZXMocHVib2lkLCBleGNlcHRfcmVscywgdHJ1ZSwgTlVMTCk7CisJCQkJQ2xvc2VUYWJs ZUxpc3QoZXhjZXB0X3JlbHMpOworCQkJfQogCQl9CiAJfQogCkBAIC0xNjgzLDEyICsxNzk0LDEy IEBAIEFsdGVyUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9u U3RtdCAqc3RtdCkKIAllbHNlCiAJewogCQlMaXN0CSAgICpyZWxhdGlvbnMgPSBOSUw7Ci0JCUxp c3QJICAgKmV4Y2VwdHJlbGF0aW9ucyA9IE5JTDsKKwkJTGlzdAkgICAqZXhjZXB0X3B1YnRhYmxl cyA9IE5JTDsKIAkJTGlzdAkgICAqc2NoZW1haWRsaXN0ID0gTklMOwogCQlPaWQJCQlwdWJpZCA9 IHB1YmZvcm0tPm9pZDsKIAogCQlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5wdWJv YmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCi0JCQkJCQkJCSAgICZleGNlcHRyZWxhdGlvbnMs ICZzY2hlbWFpZGxpc3QpOworCQkJCQkJCQkgICAmZXhjZXB0X3B1YnRhYmxlcywgJnNjaGVtYWlk bGlzdCk7CiAKIAkJQ2hlY2tBbHRlclB1YmxpY2F0aW9uKHN0bXQsIHR1cCwgcmVsYXRpb25zLCBz Y2hlbWFpZGxpc3QpOwogCkBAIC0xNzExLDcgKzE4MjIsNyBAQCBBbHRlclB1YmxpY2F0aW9uKFBh cnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCQkJCWVycm1z ZygicHVibGljYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKIAkJCQkJCSAgIHN0bXQtPnB1 Ym5hbWUpKTsKIAotCQlyZWxhdGlvbnMgPSBsaXN0X2NvbmNhdChyZWxhdGlvbnMsIGV4Y2VwdHJl bGF0aW9ucyk7CisJCXJlbGF0aW9ucyA9IGxpc3RfY29uY2F0KHJlbGF0aW9ucywgZXhjZXB0X3B1 YnRhYmxlcyk7CiAJCUFsdGVyUHVibGljYXRpb25UYWJsZXMoc3RtdCwgdHVwLCByZWxhdGlvbnMs IHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCSAgIHNjaGVtYWlkbGlzdCAhPSBOSUwpOwog CQlBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyhzdG10LCB0dXAsIHNjaGVtYWlkbGlzdCk7CkBAIC0x ODI5LDYgKzE5NDAsNjIgQEAgUmVtb3ZlUHVibGljYXRpb25TY2hlbWFCeUlkKE9pZCBwc29pZCkK IAl0YWJsZV9jbG9zZShyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwogfQogCisvKgorICogUmVtb3Zl IGFueSBFWENFUFQgY2xhdXNlIGVudHJpZXMgZm9yIGEgcmVsYXRpb24gZnJvbSBzY2hlbWEgcHVi bGljYXRpb25zLgorICogQ2FsbGVkIHdoZW4gYSB0YWJsZSBjaGFuZ2VzIHNjaGVtYSAoQUxURVIg VEFCTEUgLi4uIFNFVCBTQ0hFTUEpLCBzbyB0aGF0CisgKiBhIHNjaGVtYS1zY29wZWQgZXhjbHVz aW9uIGRvZXMgbm90IHNpbGVudGx5IGZvbGxvdyB0aGUgdGFibGUgdG8gaXRzIG5ldworICogc2No ZW1hLgorICovCit2b2lkCitSZW1vdmVTY2hlbWFQdWJFeGNlcHRGb3JSZWwoT2lkIHJlbGlkLCBP aWQgb2xkTnNwT2lkLCBPaWQgbmV3TnNwT2lkKQoreworCUxpc3QJICAgKnB1YmlkczsKKworCS8q CisJICogSWYgdGhlIHRhYmxlIGlzIG5vdCBhY3R1YWxseSBtb3ZpbmcgdG8gYSBkaWZmZXJlbnQg c2NoZW1hIChuby1vcCBBTFRFUgorCSAqIFRBQkxFIC4uLiBTRVQgU0NIRU1BIDxjdXJyZW50X3Nj aGVtYT4pLCB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLgorCSAqLworCWlmIChvbGROc3BPaWQgPT0g bmV3TnNwT2lkKQorCQlyZXR1cm47CisKKwlwdWJpZHMgPSBHZXRSZWxhdGlvbkV4Y2x1ZGVkUHVi bGljYXRpb25zKHJlbGlkKTsKKworCWZvcmVhY2hfb2lkKHB1YmlkLCBwdWJpZHMpCisJeworCQlP aWQJCQlwcm9pZDsKKworCQkvKgorCQkgKiBUaGlzIHByb2JsZW0gZG9lcyBub3QgYXBwbHkgdG8g Rk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb25zLCBiZWNhdXNlCisJCSAqIHRoZWlyIEVYQ0VQVCBj bGF1c2UgaXMgcHVibGljYXRpb24tc2NvcGVkLCBub3Qgc2NoZW1hLXNjb3BlZDogdGhlCisJCSAq IGV4Y2x1c2lvbiBzaG91bGQgcGVyc2lzdCByZWdhcmRsZXNzIG9mIHdoYXQgc2NoZW1hIHRoZSB0 YWJsZSBpcyBpbi4KKwkJICovCisJCWlmICghaXNfc2NoZW1hX3B1YmxpY2F0aW9uKHB1YmlkKSkK KwkJCWNvbnRpbnVlOworCisJCXByb2lkID0gR2V0U3lzQ2FjaGVPaWQyKFBVQkxJQ0FUSU9OUkVM TUFQLAorCQkJCQkJCQlBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9vaWQsCisJCQkJCQkJCU9iamVj dElkR2V0RGF0dW0ocmVsaWQpLAorCQkJCQkJCQlPYmplY3RJZEdldERhdHVtKHB1YmlkKSk7CisJ CWlmIChPaWRJc1ZhbGlkKHByb2lkKSkKKwkJeworCQkJT2JqZWN0QWRkcmVzcyBvYmo7CisKKwkJ CU9iamVjdEFkZHJlc3NTZXQob2JqLCBQdWJsaWNhdGlvblJlbFJlbGF0aW9uSWQsIHByb2lkKTsK KworCQkJZXJlcG9ydChERUJVRzIsCisJCQkJCWVycm1zZ19pbnRlcm5hbCgiYXV0by1yZW1vdmUg ZXhjbHVzaW9uIG9mIHRhYmxlIFwiJXMuJXNcIiBmcm9tIHB1YmxpY2F0aW9uIFwiJXNcIjogdGFi bGUgbW92ZWQgdG8gc2NoZW1hIFwiJXNcIiIsCisJCQkJCQkJCQlnZXRfbmFtZXNwYWNlX25hbWUo b2xkTnNwT2lkKSwKKwkJCQkJCQkJCWdldF9yZWxfbmFtZShyZWxpZCksCisJCQkJCQkJCQlnZXRf cHVibGljYXRpb25fbmFtZShwdWJpZCwgZmFsc2UpLAorCQkJCQkJCQkJZ2V0X25hbWVzcGFjZV9u YW1lKG5ld05zcE9pZCkpKTsKKworCQkJcGVyZm9ybURlbGV0aW9uKCZvYmosIERST1BfQ0FTQ0FE RSwgMCk7CisJCX0KKwl9CisKKwlsaXN0X2ZyZWUocHViaWRzKTsKK30KKwogLyoKICAqIE9wZW4g cmVsYXRpb25zIHNwZWNpZmllZCBieSBhIFB1YmxpY2F0aW9uVGFibGUgbGlzdC4KICAqIFRoZSBy ZXR1cm5lZCB0YWJsZXMgYXJlIGxvY2tlZCBpbiBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2sgbW9k ZSBpbiBvcmRlciB0bwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRz LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBjYjkzYzNlOTM1YS4u ZDhlMTk1OWVlNmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC02Myw2ICs2Myw3IEBA CiAjaW5jbHVkZSAiY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oIgogI2luY2x1ZGUgImNvbW1hbmRz L2V4dGVuc2lvbi5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3JlcGFjay5oIgorI2luY2x1ZGUgImNv bW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNlLmgi CiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVjbWRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFi bGVzcGFjZS5oIgpAQCAtMTk3NDUsNiArMTk3NDYsMTYgQEAgQWx0ZXJUYWJsZU5hbWVzcGFjZUlu dGVybmFsKFJlbGF0aW9uIHJlbCwgT2lkIG9sZE5zcE9pZCwgT2lkIG5zcE9pZCwKIAlBbHRlckNv bnN0cmFpbnROYW1lc3BhY2VzKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgb2xkTnNwT2lkLCBuc3BP aWQsCiAJCQkJCQkJICBmYWxzZSwgb2Jqc01vdmVkKTsKIAorCS8qCisJICogUmVtb3ZlIGFueSBF WENFUFQgY2xhdXNlIGVudHJpZXMgZm9yIHRoaXMgcmVsYXRpb24gZnJvbSBzY2hlbWEKKwkgKiBw dWJsaWNhdGlvbnMuICBBIHNjaGVtYS1zY29wZWQgZXhjbHVzaW9uIGlzIG5vIGxvbmdlciBtZWFu aW5nZnVsIG9uY2UKKwkgKiB0aGUgdGFibGUgbW92ZXMgdG8gYSBkaWZmZXJlbnQgc2NoZW1hLgor CSAqLworCWlmIChyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OIHx8CisJ CXJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCVJl bW92ZVNjaGVtYVB1YkV4Y2VwdEZvclJlbChSZWxhdGlvbkdldFJlbGlkKHJlbCksIG9sZE5zcE9p ZCwKKwkJCQkJCQkJCW5zcE9pZCk7CisKIAl0YWJsZV9jbG9zZShjbGFzc1JlbCwgUm93RXhjbHVz aXZlTG9jayk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9z cmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDllMDVhMzE0NzA3Li4yYThmOTk5ZDU4NiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55CkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNz LmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNl ci5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0ZXRp bWUuaCIKICNpbmNsdWRlICJ1dGlscy94bWwuaCIKIApAQCAtMTEyODMsNyArMTEyODQsNyBAQCBB bHRlck93bmVyU3RtdDogQUxURVIgQUdHUkVHQVRFIGFnZ3JlZ2F0ZV93aXRoX2FyZ3R5cGVzIE9X TkVSIFRPIFJvbGVTcGVjCiAgKiBwdWJfb2JqIGlzIG9uZSBvZjoKICAqCiAgKgkJVEFCTEUgdGFi bGUgWywgLi4uXQotICoJCVRBQkxFUyBJTiBTQ0hFTUEgc2NoZW1hIFssIC4uLl0KKyAqCQlUQUJM RVMgSU4gU0NIRU1BIHNjaGVtYSBbRVhDRVBUIChUQUJMRSB0YWJsZSBbLCAuLi5dICldIFssIC4u Ll0KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKQEAgLTExMzQzLDIzICsxMTM0NCwyNiBA QCBQdWJsaWNhdGlvbk9ialNwZWM6CiAJCQkJCSQkLT5wdWJ0YWJsZS0+Y29sdW1ucyA9ICQzOwog CQkJCQkkJC0+cHVidGFibGUtPndoZXJlQ2xhdXNlID0gJDQ7CiAJCQkJfQotCQkJfCBUQUJMRVMg SU5fUCBTQ0hFTUEgQ29sSWQKKwkJCXwgVEFCTEVTIElOX1AgU0NIRU1BIENvbElkIG9wdF9wdWJf ZXhjZXB0X2NsYXVzZQogCQkJCXsKIAkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNw ZWMpOwogCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9TQ0hF TUE7CiAJCQkJCSQkLT5uYW1lID0gJDQ7CisJCQkJCSQkLT5leGNlcHRfdGFibGVzID0gJDU7CiAJ CQkJCSQkLT5sb2NhdGlvbiA9IEA0OwogCQkJCX0KLQkJCXwgVEFCTEVTIElOX1AgU0NIRU1BIENV UlJFTlRfU0NIRU1BCisJCQl8IFRBQkxFUyBJTl9QIFNDSEVNQSBDVVJSRU5UX1NDSEVNQSBvcHRf cHViX2V4Y2VwdF9jbGF1c2UKIAkJCQl7CiAJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25P YmpTcGVjKTsKIAkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5f Q1VSX1NDSEVNQTsKKwkJCQkJJCQtPmV4Y2VwdF90YWJsZXMgPSAkNTsKIAkJCQkJJCQtPmxvY2F0 aW9uID0gQDQ7CiAJCQkJfQotCQkJfCBDb2xJZCBvcHRfY29sdW1uX2xpc3QgT3B0V2hlcmVDbGF1 c2UKKwkJCXwgQ29sSWQgb3B0X2NvbHVtbl9saXN0IE9wdFdoZXJlQ2xhdXNlIG9wdF9wdWJfZXhj ZXB0X2NsYXVzZQogCQkJCXsKIAkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMp OwogCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX0NPTlRJTlVBVElPTjsKKwkJ CQkJJCQtPmV4Y2VwdF90YWJsZXMgPSAkNDsKIAkJCQkJLyoKIAkJCQkJICogSWYgZWl0aGVyIGEg cm93IGZpbHRlciBvciBjb2x1bW4gbGlzdCBpcyBzcGVjaWZpZWQsIGNyZWF0ZQogCQkJCQkgKiBh IFB1YmxpY2F0aW9uVGFibGUgb2JqZWN0LgpAQCAtMTE0MDMsMTAgKzExNDA3LDExIEBAIFB1Ymxp Y2F0aW9uT2JqU3BlYzoKIAkJCQkJJCQtPnB1YnRhYmxlLT5jb2x1bW5zID0gJDI7CiAJCQkJCSQk LT5wdWJ0YWJsZS0+d2hlcmVDbGF1c2UgPSAkMzsKIAkJCQl9Ci0JCQl8IENVUlJFTlRfU0NIRU1B CisJCQl8IENVUlJFTlRfU0NIRU1BIG9wdF9wdWJfZXhjZXB0X2NsYXVzZQogCQkJCXsKIAkJCQkJ JCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOwogCQkJCQkkJC0+cHVib2JqdHlwZSA9 IFBVQkxJQ0FUSU9OT0JKX0NPTlRJTlVBVElPTjsKKwkJCQkJJCQtPmV4Y2VwdF90YWJsZXMgPSAk MjsKIAkJCQkJJCQtPmxvY2F0aW9uID0gQDE7CiAJCQkJfQogCQkJCTsKQEAgLTIwODczLDYgKzIw ODc4LDggQEAgcHJlcHJvY2Vzc19wdWJfYWxsX29ianR5cGVfbGlzdChMaXN0ICphbGxfb2JqZWN0 c19saXN0LCBMaXN0ICoqcHVib2JqZWN0cywKIC8qCiAgKiBQcm9jZXNzIHB1Ym9ianNwZWNfbGlz dCB0byBjaGVjayBmb3IgZXJyb3JzIGluIGFueSBvZiB0aGUgb2JqZWN0cyBhbmQKICAqIGNvbnZl cnQgUFVCTElDQVRJT05PQkpfQ09OVElOVUFUSU9OIGludG8gYXBwcm9wcmlhdGUgUHVibGljYXRp b25PYmpTcGVjVHlwZS4KKyAqIEFsc28gZmxhdHRlbnMgZXhjZXB0X3RhYmxlcyBmcm9tIFRBQkxF UyBJTiBTQ0hFTUEgbm9kZXMgaW50byB0aGUgbGlzdCBzbworICogdGhhdCBPYmplY3RzSW5QdWJs aWNhdGlvblRvT2lkcygpIHNlZXMgdGhlbSBhcyB0b3AtbGV2ZWwgRVhDRVBUX1RBQkxFIGVudHJp ZXMuCiAgKi8KIHN0YXRpYyB2b2lkCiBwcmVwcm9jZXNzX3B1Ym9ial9saXN0KExpc3QgKnB1Ym9i anNwZWNfbGlzdCwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCkBAIC0yMDkwMSw2ICsyMDkwOCwx MyBAQCBwcmVwcm9jZXNzX3B1Ym9ial9saXN0KExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgY29yZV95 eXNjYW5fdCB5eXNjYW5uZXIpCiAKIAkJaWYgKHB1Ym9iai0+cHVib2JqdHlwZSA9PSBQVUJMSUNB VElPTk9CSl9UQUJMRSkKIAkJeworCQkJLyogRVhDRVBUIGlzIG5vdCB2YWxpZCBmb3IgdGFibGUg b2JqZWN0cyAqLworCQkJaWYgKHB1Ym9iai0+ZXhjZXB0X3RhYmxlcyAhPSBOSUwpCisJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJ ZXJybXNnKCJFWENFUFQgaXMgbm90IGFsbG93ZWQgZm9yIFRBQkxFIHB1YmxpY2F0aW9uIG9iamVj dHMiKSwKKwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwdWJvYmotPmxvY2F0aW9uKSk7CisKIAkJ CS8qIHJlbGF0aW9uIG5hbWUgb3IgcHVidGFibGUgbXVzdCBiZSBzZXQgZm9yIHRoaXMgdHlwZSBv ZiBvYmplY3QgKi8KIAkJCWlmICghcHVib2JqLT5uYW1lICYmICFwdWJvYmotPnB1YnRhYmxlKQog CQkJCWVyZXBvcnQoRVJST1IsCkBAIC0yMDk0OSw2ICsyMDk2MywzNiBAQCBwcmVwcm9jZXNzX3B1 Ym9ial9saXN0KExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIp CiAJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkJCWVycm1zZygiaW52 YWxpZCBzY2hlbWEgbmFtZSIpLAogCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHB1Ym9iai0+bG9j YXRpb24pKTsKKworCQkJLyoKKwkJCSAqIEZvciBUQUJMRVNfSU5fU0NIRU1BLCBxdWFsaWZ5IHVu cXVhbGlmaWVkIEVYQ0VQVCB0YWJsZSBuYW1lcworCQkJICogd2l0aCB0aGUgcGFyZW50IHNjaGVt YSBhbmQgcmVqZWN0IGNyb3NzLXNjaGVtYSBlbnRyaWVzIGF0IHBhcnNlCisJCQkgKiB0aW1lLCB0 aGVuIGZsYXR0ZW4gaW50byB0aGUgdG9wLWxldmVsIGxpc3QuCisJCQkgKgorCQkJICogRm9yIFRB QkxFU19JTl9DVVJfU0NIRU1BIHRoZSBzY2hlbWEgbmFtZSBpcyBub3QgeWV0IGtub3duLCBzbwor CQkJICogc2tpcCBib3RoIHN0ZXBzIGhlcmU7IE9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKCkg d2lsbAorCQkJICogcXVhbGlmeSBuYW1lcyBhbmQgdmFsaWRhdGUgc2NoZW1hIG1lbWJlcnNoaXAg YXQgZXhlY3V0aW9uIHRpbWUuCisJCQkgKi8KKwkJCWlmIChwdWJvYmotPnB1Ym9ianR5cGUgPT0g UFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX1NDSEVNQSkKKwkJCXsKKwkJCQlmb3JlYWNoX3B0cihQ dWJsaWNhdGlvbk9ialNwZWMsIGVvYmosIHB1Ym9iai0+ZXhjZXB0X3RhYmxlcykKKwkJCQl7CisJ CQkJCWNvbnN0IGNoYXIgKmVvYmpfc2NoZW1hbmFtZSA9IGVvYmotPnB1YnRhYmxlLT5yZWxhdGlv bi0+c2NoZW1hbmFtZTsKKwkJCQkJY29uc3QgY2hhciAqZW9ial9yZWxuYW1lID0gZW9iai0+cHVi dGFibGUtPnJlbGF0aW9uLT5yZWxuYW1lOworCisJCQkJCWlmIChlb2JqX3NjaGVtYW5hbWUgPT0g TlVMTCkKKwkJCQkJCWVvYmotPnB1YnRhYmxlLT5yZWxhdGlvbi0+c2NoZW1hbmFtZSA9IHB1Ym9i ai0+bmFtZTsKKwkJCQkJZWxzZSBpZiAoc3RyY21wKGVvYmpfc2NoZW1hbmFtZSwgcHVib2JqLT5u YW1lKSAhPSAwKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RF X0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCQllcnJtc2coInRhYmxlIFwiJXNc IiBpbiBFWENFUFQgY2xhdXNlIGRvZXMgbm90IGJlbG9uZyB0byBzY2hlbWEgXCIlc1wiIiwKKwkJ CQkJCQkJCSAgIHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKGVvYmpfc2NoZW1hbmFtZSwgZW9i al9yZWxuYW1lKSwKKwkJCQkJCQkJCSAgIHB1Ym9iai0+bmFtZSksCisJCQkJCQkJCXBhcnNlcl9l cnJwb3NpdGlvbihlb2JqLT5sb2NhdGlvbikpOworCQkJCX0KKwkJCQlwdWJvYmpzcGVjX2xpc3Qg PSBsaXN0X2NvbmNhdChwdWJvYmpzcGVjX2xpc3QsIHB1Ym9iai0+ZXhjZXB0X3RhYmxlcyk7CisJ CQkJcHVib2JqLT5leGNlcHRfdGFibGVzID0gTklMOworCQkJfQogCQl9CiAKIAkJcHJldm9ianR5 cGUgPSBwdWJvYmotPnB1Ym9ianR5cGU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRw dXQvcGdvdXRwdXQuYwppbmRleCA0ZWNmY2JmZjdhYi4uOGQ1YTUzNGVkMWEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAtMjI2NSw2ICsyMjY1LDEx IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0 aW9uKQogCQkJCQlpbnQJCQlsZXZlbDsKIAkJCQkJTGlzdAkgICAqYW5jZXN0b3JzID0gZ2V0X3Bh cnRpdGlvbl9hbmNlc3RvcnMocmVsaWQpOwogCisJCQkJCS8qCisJCQkJCSAqIEdldFRvcE1vc3RB bmNlc3RvckluUHVibGljYXRpb24oKSBpdHNlbGYgc2tpcHMKKwkJCQkJICogc2NoZW1hLWJhc2Vk IGFuY2VzdG9yIG1hdGNoZXMgd2hlbiB0aGUgcGFydGl0aW9uIHJvb3QKKwkJCQkJICogaXMgZXhj bHVkZWQgdmlhIHRoaXMgcHVibGljYXRpb24ncyBFWENFUFQgY2xhdXNlLgorCQkJCQkgKi8KIAkJ CQkJYW5jZXN0b3IgPSBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1Yi0+b2lkLAog CQkJCQkJCQkJCQkJCQkJICAgYW5jZXN0b3JzLAogCQkJCQkJCQkJCQkJCQkJICAgJmxldmVsKTsK QEAgLTIyODAsMTAgKzIyODUsNDUgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAq ZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCQkJCX0KIAkJCQl9CiAKLQkJCQlpZiAobGlzdF9t ZW1iZXJfb2lkKHB1YmlkcywgcHViLT5vaWQpIHx8Ci0JCQkJCWxpc3RfbWVtYmVyX29pZChzY2hl bWFQdWJpZHMsIHB1Yi0+b2lkKSB8fAotCQkJCQlhbmNlc3Rvcl9wdWJsaXNoZWQpCisJCQkJaWYg KGxpc3RfbWVtYmVyX29pZChwdWJpZHMsIHB1Yi0+b2lkKSB8fCBhbmNlc3Rvcl9wdWJsaXNoZWQp CiAJCQkJCXB1Ymxpc2ggPSB0cnVlOworCQkJCWVsc2UgaWYgKGxpc3RfbWVtYmVyX29pZChzY2hl bWFQdWJpZHMsIHB1Yi0+b2lkKSkKKwkJCQl7CisJCQkJCU9pZAkJCXJvb3RfcmVsaWQ7CisJCQkJ CUhlYXBUdXBsZQl0dXA7CisJCQkJCWJvb2wJCWlzX2V4Y2VwdCA9IGZhbHNlOworCisJCQkJCS8q CisJCQkJCSAqIHNjaGVtYVB1YmlkcyBpcyByZWxpZCdzIG93biBzY2hlbWEsIGluZGVwZW5kZW50 IG9mIHRoZQorCQkJCQkgKiBhbmNlc3RvciB3YWxrIGFib3ZlIC0tIGEgcGFydGl0aW9uIGNhbiBs aXZlIGluIGEKKwkJCQkJICogZGlmZmVyZW50IHNjaGVtYSB0aGFuIGl0cyByb290LiAgU3RpbGwg bmVlZCB0byBjaGVjaworCQkJCQkgKiBmb3IgZXhjbHVzaW9uIGhlcmUsIHVzaW5nIHRoZSB0b3At bW9zdCBhbmNlc3RvciBzaW5jZQorCQkJCQkgKiBvbmx5IGEgcm9vdCAobm9uLXBhcnRpdGlvbikg dGFibGUgY2FuIGFwcGVhciBpbiBhbgorCQkJCQkgKiBFWENFUFQgY2xhdXNlLgorCQkJCQkgKi8K KwkJCQkJaWYgKGFtX3BhcnRpdGlvbikKKwkJCQkJeworCQkJCQkJTGlzdAkgICAqYW5jZXN0b3Jz ID0gZ2V0X3BhcnRpdGlvbl9hbmNlc3RvcnMocmVsaWQpOworCisJCQkJCQlyb290X3JlbGlkID0g bGxhc3Rfb2lkKGFuY2VzdG9ycyk7CisJCQkJCQlsaXN0X2ZyZWUoYW5jZXN0b3JzKTsKKwkJCQkJ fQorCQkJCQllbHNlCisJCQkJCQlyb290X3JlbGlkID0gcmVsaWQ7CisKKwkJCQkJdHVwID0gU2Vh cmNoU3lzQ2FjaGUyKFBVQkxJQ0FUSU9OUkVMTUFQLAorCQkJCQkJCQkJCSAgT2JqZWN0SWRHZXRE YXR1bShyb290X3JlbGlkKSwKKwkJCQkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0ocHViLT5vaWQp KTsKKworCQkJCQlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCQkJCQl7CisJCQkJCQlpc19l eGNlcHQgPSAoKEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1QodHVwKSktPnByZXhj ZXB0OworCQkJCQkJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisJCQkJCX0KKworCQkJCQlpZiAoIWlz X2V4Y2VwdCkKKwkJCQkJCXB1Ymxpc2ggPSB0cnVlOworCQkJCX0KIAkJCX0KIAogCQkJLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4IGZiNGUwNDJiZThhLi45MmZmODlmYTJhNCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCkBAIC01ODQ1LDE2ICs1ODQ1LDI5IEBAIFJl bGF0aW9uQnVpbGRQdWJsaWNhdGlvbkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9u RGVzYyAqcHViZGVzYykKIAkvKiBGZXRjaCB0aGUgcHVibGljYXRpb24gbWVtYmVyc2hpcCBpbmZv LiAqLwogCXB1Ym9pZHMgPSBHZXRSZWxhdGlvbkluY2x1ZGVkUHVibGljYXRpb25zKHJlbGlkKTsK IAlzY2hlbWFpZCA9IFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbGF0aW9uKTsKLQlwdWJvaWRzID0g bGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLCBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2No ZW1haWQpKTsKIAogCWlmIChyZWxhdGlvbi0+cmRfcmVsLT5yZWxpc3BhcnRpdGlvbikKIAl7Ci0J CU9pZAkJCWxhc3RfYW5jZXN0b3JfcmVsaWQ7Ci0KLQkJLyogQWRkIHB1YmxpY2F0aW9ucyB0aGF0 IHRoZSBhbmNlc3RvcnMgYXJlIGluIHRvby4gKi8KIAkJYW5jZXN0b3JzID0gZ2V0X3BhcnRpdGlv bl9hbmNlc3RvcnMocmVsaWQpOwotCQlsYXN0X2FuY2VzdG9yX3JlbGlkID0gbGxhc3Rfb2lkKGFu Y2VzdG9ycyk7CisJCWV4Y2VwdHB1Ym9pZHMgPSBHZXRSZWxhdGlvbkV4Y2x1ZGVkUHVibGljYXRp b25zKGxsYXN0X29pZChhbmNlc3RvcnMpKTsKKwl9CisJZWxzZQorCQlleGNlcHRwdWJvaWRzID0g R2V0UmVsYXRpb25FeGNsdWRlZFB1YmxpY2F0aW9ucyhyZWxpZCk7CiAKKwkvKgorCSAqIFN1YnRy YWN0IGV4Y2VwdHB1Ym9pZHMgZnJvbSB0aGUgc2NoZW1hLXB1YmxpY2F0aW9uIGNvbnRyaWJ1dGlv biBzbyB0aGF0CisJICogYSByZWxhdGlvbiBFWENFUFQnZCBmcm9tIGEgc2NoZW1hIHB1YmxpY2F0 aW9uIGRvZXMgbm90IGluaGVyaXQgdGhhdAorCSAqIHB1YmxpY2F0aW9uJ3MgcHViYWN0aW9ucy4g IFdpdGhvdXQgdGhpcyBmaWx0ZXIsCisJICogQ2hlY2tDbWRSZXBsaWNhSWRlbnRpdHkoKSB3b3Vs ZCBkZW1hbmQgUkVQTElDQSBJREVOVElUWSBmb3IKKwkgKiBVUERBVEUvREVMRVRFIGV2ZW4gb24g YSBleHBsaWNpdGx5IGV4Y2x1ZGVkIHRhYmxlLgorCSAqLworCXB1Ym9pZHMgPSBsaXN0X2NvbmNh dF91bmlxdWVfb2lkKHB1Ym9pZHMsCisJCQkJCQkJCQkgbGlzdF9kaWZmZXJlbmNlX29pZChHZXRT Y2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1haWQpLAorCQkJCQkJCQkJCQkJCQkgZXhjZXB0cHVib2lk cykpOworCisJaWYgKHJlbGF0aW9uLT5yZF9yZWwtPnJlbGlzcGFydGl0aW9uKQorCXsKKwkJLyog QWRkIHB1YmxpY2F0aW9ucyB0aGF0IHRoZSBhbmNlc3RvcnMgYXJlIGluIHRvby4gKi8KIAkJZm9y ZWFjaChsYywgYW5jZXN0b3JzKQogCQl7CiAJCQlPaWQJCQlhbmNlc3RvciA9IGxmaXJzdF9vaWQo bGMpOwpAQCAtNTg2MywyMyArNTg3Niw5IEBAIFJlbGF0aW9uQnVpbGRQdWJsaWNhdGlvbkRlc2Mo UmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVzYykKIAkJCQkJCQkJCQkJ IEdldFJlbGF0aW9uSW5jbHVkZWRQdWJsaWNhdGlvbnMoYW5jZXN0b3IpKTsKIAkJCXNjaGVtYWlk ID0gZ2V0X3JlbF9uYW1lc3BhY2UoYW5jZXN0b3IpOwogCQkJcHVib2lkcyA9IGxpc3RfY29uY2F0 X3VuaXF1ZV9vaWQocHVib2lkcywKLQkJCQkJCQkJCQkJIEdldFNjaGVtYVB1YmxpY2F0aW9ucyhz Y2hlbWFpZCkpOworCQkJCQkJCQkJCQkgbGlzdF9kaWZmZXJlbmNlX29pZChHZXRTY2hlbWFQdWJs aWNhdGlvbnMoc2NoZW1haWQpLAorCQkJCQkJCQkJCQkJCQkJCSBleGNlcHRwdWJvaWRzKSk7CiAJ CX0KLQotCQkvKgotCQkgKiBPbmx5IHRoZSB0b3AtbW9zdCBhbmNlc3RvciBjYW4gYXBwZWFyIGlu IHRoZSBFWENFUFQgY2xhdXNlLgotCQkgKiBUaGVyZWZvcmUsIGZvciBhIHBhcnRpdGlvbiwgZXhj bHVzaW9uIG11c3QgYmUgZXZhbHVhdGVkIGF0IHRoZQotCQkgKiB0b3AtbW9zdCBhbmNlc3Rvci4K LQkJICovCi0JCWV4Y2VwdHB1Ym9pZHMgPSBHZXRSZWxhdGlvbkV4Y2x1ZGVkUHVibGljYXRpb25z KGxhc3RfYW5jZXN0b3JfcmVsaWQpOwotCX0KLQllbHNlCi0JewotCQkvKgotCQkgKiBGb3IgYSBy ZWd1bGFyIHRhYmxlIG9yIGEgcm9vdCBwYXJ0aXRpb25lZCB0YWJsZSwgY2hlY2sgZXhjbHVzaW9u IG9uCi0JCSAqIHRhYmxlIGl0c2VsZi4KLQkJICovCi0JCWV4Y2VwdHB1Ym9pZHMgPSBHZXRSZWxh dGlvbkV4Y2x1ZGVkUHVibGljYXRpb25zKHJlbGlkKTsKIAl9CiAKIAlhbGx0YWJsZXNwdWJvaWRz ID0gR2V0QWxsVGFibGVzUHVibGljYXRpb25zKCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwv ZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IGZlZjg2YjRjY2EzLi43 MmU4ZjU4ZmMzZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3Jj L2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTY4MTUsNiArNjgxNSwyNCBAQCBkZXNjcmliZVB1Ymxp Y2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJCWlmICghYWRkRm9vdGVyVG9QdWJsaWNh dGlvbkRlc2MoJmJ1ZiwgXygiVGFibGVzIGZyb20gc2NoZW1hczoiKSwKIAkJCQkJCQkJCQkJCXRy dWUsICZjb250KSkKIAkJCQkJZ290byBlcnJvcl9yZXR1cm47CisKKwkJCQlpZiAocHNldC5zdmVy c2lvbiA+PSAxOTAwMDApCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBHZXQgdGFibGVzIGluIHRo ZSBFWENFUFQgY2xhdXNlIGZvciB0aGlzIHNjaGVtYQorCQkJCQkgKiBwdWJsaWNhdGlvbi4KKwkJ CQkJICovCisJCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJCQkgICJTRUxFQ1Qg Y29uY2F0KGMucmVsbmFtZXNwYWNlOjpyZWduYW1lc3BhY2UsICcuJywgYy5yZWxuYW1lKVxuIgor CQkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGNcbiIKKwkJCQkJCQkJCSAgIiAg ICAgSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwciBPTiBjLm9pZCA9IHByLnBy cmVsaWRcbiIKKwkJCQkJCQkJCSAgIldIRVJFIHByLnBycHViaWQgPSAnJXMnXG4iCisJCQkJCQkJ CQkgICIgIEFORCBwci5wcmV4Y2VwdFxuIgorCQkJCQkJCQkJICAiT1JERVIgQlkgMSIsIHB1Ymlk KTsKKwkJCQkJaWYgKCFhZGRGb290ZXJUb1B1YmxpY2F0aW9uRGVzYygmYnVmLCBfKCJFeGNlcHQg dGFibGVzOiIpLAorCQkJCQkJCQkJCQkJCXRydWUsICZjb250KSkKKwkJCQkJCWdvdG8gZXJyb3Jf cmV0dXJuOworCQkJCX0KIAkJCX0KIAkJfQogCQllbHNlCmRpZmYgLS1naXQgYS9zcmMvYmluL3Bz cWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5k ZXggNDllYTU4NGNkNGYuLjA2NzE2ODY5OWY2IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFi LWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0x MDY1LDYgKzEwNjUsMjQgQEAgc3RhdGljIGNvbnN0IFNjaGVtYVF1ZXJ5IFF1ZXJ5X2Zvcl90cmln Z2VyX29mX3RhYmxlID0gewogIlNFTEVDVCBuc3BuYW1lIEZST00gcGdfY2F0YWxvZy5wZ19uYW1l c3BhY2UgIlwKICIgV0hFUkUgbnNwbmFtZSBMSUtFICclcyciCiAKKyNkZWZpbmUgUXVlcnlfZm9y X2xpc3Rfb2ZfdGFibGVzX2luX3NjaGVtYSBcCisiU0VMRUNUIG4ubnNwbmFtZSB8fCAnLicgfHwg Yy5yZWxuYW1lICJcCisiICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYyAiXAorIiAgICAgICBK T0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4gT04gbi5vaWQgPSBjLnJlbG5hbWVzcGFjZSAi XAorIiBXSEVSRSBjLnJlbGtpbmQgSU4gKCIgQ3BwQXNTdHJpbmcyKFJFTEtJTkRfUkVMQVRJT04p ICIsICIgXAorCQkJCQkJQ3BwQXNTdHJpbmcyKFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpICIp ICJcCisiICAgQU5EIChuLm5zcG5hbWUgfHwgJy4nIHx8IGMucmVsbmFtZSkgTElLRSAnJXMnICJc CisiICAgQU5EIG4ubnNwbmFtZSA9ICclcyciCisKKyNkZWZpbmUgUXVlcnlfZm9yX2xpc3Rfb2Zf dGFibGVzX2luX2N1cnJlbnRfc2NoZW1hIFwKKyJTRUxFQ1QgYy5yZWxuYW1lICJcCisiICBGUk9N IHBnX2NhdGFsb2cucGdfY2xhc3MgYyAiXAorIiAgICAgICBKT0lOIHBnX2NhdGFsb2cucGdfbmFt ZXNwYWNlIG4gT04gbi5vaWQgPSBjLnJlbG5hbWVzcGFjZSAiXAorIiBXSEVSRSBjLnJlbGtpbmQg SU4gKCIgQ3BwQXNTdHJpbmcyKFJFTEtJTkRfUkVMQVRJT04pICIsICIgXAorCQkJCQkJQ3BwQXNT dHJpbmcyKFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpICIpICJcCisiICAgQU5EIGMucmVsbmFt ZSBMSUtFICclcycgIlwKKyIgICBBTkQgbi5uc3BuYW1lID0gcGdfY2F0YWxvZy5jdXJyZW50X3Nj aGVtYSgpIgorCiAvKiBVc2UgQ09NUExFVEVfV0lUSF9RVUVSWV9WRVJCQVRJTSB3aXRoIHRoZXNl IHF1ZXJpZXMgZm9yIEdVQyBuYW1lczogKi8KICNkZWZpbmUgUXVlcnlfZm9yX2xpc3Rfb2ZfYWx0 ZXJfc3lzdGVtX3NldF92YXJzIFwKICJTRUxFQ1QgcGdfY2F0YWxvZy5sb3dlcihuYW1lKSBGUk9N IHBnX2NhdGFsb2cucGdfc2V0dGluZ3MgIlwKQEAgLTM3NzQsOCArMzc5MiwyMSBAQCBtYXRjaF9w cmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAkJQ09NUExFVEVfV0lUSF9RVUVSWV9QTFVT KFF1ZXJ5X2Zvcl9saXN0X29mX3NjaGVtYXMKIAkJCQkJCQkJICIgQU5EIG5zcG5hbWUgTk9UIExJ S0UgRSdwZ1xcXFxfJSUnIiwKIAkJCQkJCQkJICJDVVJSRU5UX1NDSEVNQSIpOwotCWVsc2UgaWYg KE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxF UyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSkgJiYgKCFlbmRzX3dpdGgocHJldl93ZCwgJywn KSkpCi0JCUNPTVBMRVRFX1dJVEgoIldJVEggKCIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFU RSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hF TUEiLCBNYXRjaEFueSkgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQorCQlDT01QTEVURV9X SVRIKCJFWENFUFQgKCBUQUJMRSIsICJXSVRIICgiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVB VEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRVMiLCAiSU4iLCAiU0NI RU1BIiwgTWF0Y2hBbnksICJFWENFUFQiKSkKKwkJQ09NUExFVEVfV0lUSCgiKCBUQUJMRSIpOwor CWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9S IiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIsICIoIikpCisJ CUNPTVBMRVRFX1dJVEgoIlRBQkxFIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBV QkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIsICJD VVJSRU5UX1NDSEVNQSIsICJFWENFUFQiLCAiKCIsICJUQUJMRSIpKQorCQlDT01QTEVURV9XSVRI X1FVRVJZX1ZFUkJBVElNKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlc19pbl9jdXJyZW50X3NjaGVt YSk7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnks ICJGT1IiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIsIE1hdGNoQW55LCAiRVhDRVBUIiwgIigi LCAiVEFCTEUiKSkKKwl7CisJCXNldF9jb21wbGV0aW9uX3JlZmVyZW5jZShwcmV2NF93ZCk7CisJ CUNPTVBMRVRFX1dJVEhfUVVFUllfVkVSQkFUSU0oUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzX2lu X3NjaGVtYSk7CisJfQorCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIs IE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVY Q0VQVCIsICIoIiwgIlRBQkxFIiwgTWF0Y2hBbnlOKSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcs JykpCisJCUNPTVBMRVRFX1dJVEgoIikiKTsKIAkvKiBDb21wbGV0ZSAiQ1JFQVRFIFBVQkxJQ0FU SU9OIDxuYW1lPiBbLi4uXSBXSVRIIiAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQ VUJMSUNBVElPTiIsIE1hdGNoQW55TiwgIldJVEgiLCAiKCIpKQogCQlDT01QTEVURV9XSVRIKCJw dWJsaXNoIiwgInB1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnMiLCAicHVibGlzaF92aWFfcGFydGl0 aW9uX3Jvb3QiKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3B1YmxpY2F0aW9u Y21kcy5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgKaW5kZXggNGNm NDVjMTdjYzUuLmZiMTcwM2FhNjc1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9w dWJsaWNhdGlvbmNtZHMuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9wdWJsaWNhdGlvbmNt ZHMuaApAQCAtMjcsNiArMjcsOCBAQCBleHRlcm4gdm9pZCBBbHRlclB1YmxpY2F0aW9uKFBhcnNl U3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpOwogZXh0ZXJuIHZvaWQg UmVtb3ZlUHVibGljYXRpb25CeUlkKE9pZCBwdWJpZCk7CiBleHRlcm4gdm9pZCBSZW1vdmVQdWJs aWNhdGlvblJlbEJ5SWQoT2lkIHByb2lkKTsKIGV4dGVybiB2b2lkIFJlbW92ZVB1YmxpY2F0aW9u U2NoZW1hQnlJZChPaWQgcHNvaWQpOworZXh0ZXJuIHZvaWQgUmVtb3ZlU2NoZW1hUHViRXhjZXB0 Rm9yUmVsKE9pZCByZWxpZCwgT2lkIG9sZE5zcE9pZCwKKwkJCQkJCQkJCQlPaWQgbmV3TnNwT2lk KTsKIAogZXh0ZXJuIE9iamVjdEFkZHJlc3MgQWx0ZXJQdWJsaWNhdGlvbk93bmVyKGNvbnN0IGNo YXIgKm5hbWUsIE9pZCBuZXdPd25lcklkKTsKIGV4dGVybiB2b2lkIEFsdGVyUHVibGljYXRpb25P d25lcl9vaWQoT2lkIHB1YmlkLCBPaWQgbmV3T3duZXJJZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgK aW5kZXggNzdmNjlmOTQ2MDcuLjYzYWJjMGI2OTYwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBA IC00NTMyLDYgKzQ1MzIsOCBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvbk9ialNwZWMKIAlQ dWJsaWNhdGlvbk9ialNwZWNUeXBlIHB1Ym9ianR5cGU7CS8qIHR5cGUgb2YgdGhpcyBwdWJsaWNh dGlvbiBvYmplY3QgKi8KIAljaGFyCSAgICpuYW1lOwogCVB1YmxpY2F0aW9uVGFibGUgKnB1YnRh YmxlOworCUxpc3QJICAgKmV4Y2VwdF90YWJsZXM7CS8qIHRhYmxlcyBzcGVjaWZpZWQgaW4gdGhl IEVYQ0VQVCBjbGF1c2UgKGZvcgorCQkJCQkJCQkgKiBUQUJMRVMgSU4gU0NIRU1BKSAqLwogCVBh cnNlTG9jCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8K IH0gUHVibGljYXRpb25PYmpTcGVjOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3B1YmxpY2F0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGlj YXRpb24ub3V0CmluZGV4IDI5ZTU0YjIxNGEwLi4wNzI5ZTU0NjExNiAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKQEAgLTI3MCw2ICsyNzAsMTIgQEAgQ1JFQVRF IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMiBGT1IgQUxMIFRB QkxFUyBFWENFUFQgKHRlc3QKIEVSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgInRlc3Rw dWJfdGJsMSIKIExJTkUgMTogLi4uX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTIgRk9SIEFMTCBU QUJMRVMgRVhDRVBUICh0ZXN0cHViX3RiLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gZmFpbCAtIEVYQ0VQVCBpcyBu b3QgYWxsb3dlZCBmb3IgRk9SIFRBQkxFIHB1YmxpY2F0aW9ucworQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZXhjZXB0X2VycgorICAgIEZPUiBUQUJMRSB0ZXN0cHViX3RibDEsIHRlc3RwdWJf dGJsMiBFWENFUFQgKFRBQkxFIHRlc3RwdWJfdGJsMyk7CitFUlJPUjogIEVYQ0VQVCBpcyBub3Qg YWxsb3dlZCBmb3IgVEFCTEUgcHVibGljYXRpb24gb2JqZWN0cworTElORSAyOiAgICAgRk9SIFRB QkxFIHRlc3RwdWJfdGJsMSwgdGVzdHB1Yl90YmwyIEVYQ0VQVCAoVEFCTEUgdGVzdHAuLi4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gU0VUIEFMTCBUQUJMRVMvU0VRVUVOQ0VTCiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ3MCw3ICs0 NzYsMTU0IEBAIEhJTlQ6ICBDaGFuZ2UgdGhlIHB1YmxpY2F0aW9uJ3MgRVhDRVBUIGNsYXVzZSB1 c2luZyBBTFRFUiBQVUJMSUNBVElPTiAuLi4gU0VUIEFMCiBSRVNFVCBjbGllbnRfbWluX21lc3Nh Z2VzOwogRFJPUCBUQUJMRSB0ZXN0cHViX3Jvb3QsIHRlc3RwdWJfcGFydDEsIHRhYl9tYWluOwog RFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViODsKLS0tLSBUZXN0cyBmb3IgcHVibGljYXRpb25zIHdp dGggU0VRVUVOQ0VTCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKy0tIEVYQ0VQVCB0ZXN0cyBmb3IgVEFCTEVTIElOIFNDSEVNQQorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9 ICdFUlJPUic7CistLSBDcmVhdGUgdGFibGVzIGluIHB1Yl90ZXN0IGZvciB0aGVzZSB0ZXN0cwor Q1JFQVRFIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxIChhIGludCBwcmltYXJ5IGtleSwg YiB0ZXh0KTsKK0NSRUFURSBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMiAoeCBpbnQgcHJp bWFyeSBrZXksIHkgdGV4dCk7CistLSBDcmVhdGUgc2FtZS1uYW1lZCB0YWJsZXMgaW4gcHVibGlj IHRvIHZlcmlmeSB1bnF1YWxpZmllZCBFWENFUFQgZW50cmllcworLS0gYXJlIHF1YWxpZmllZCB3 aXRoIHRoZSBuYW1lZCBzY2hlbWEsIG5vdCBwdWJsaWMKK0NSRUFURSBUQUJMRSB0ZXN0cHViX25v cGsgKGZvbyBpbnQsIGJhciBpbnQpOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsX3MxIChhIGlu dCBwcmltYXJ5IGtleSwgYiB0ZXh0KTsKKy0tIEJhc2ljOiBleGNsdWRlIG9uZSB0YWJsZSBmcm9t IGEgc2NoZW1hIHB1YmxpY2F0aW9uCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFf ZXhjZXB0MQorICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUg cHViX3Rlc3QudGVzdHB1Yl90YmxfczEpOworXGRScCsgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MQorICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERlc2NyaXB0 aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8IAorVGFi bGVzIGZyb20gc2NoZW1hczoKKyAgICAicHViX3Rlc3QiCitFeGNlcHQgdGFibGVzOgorICAgICJw dWJfdGVzdC50ZXN0cHViX3RibF9zMSIKKworLS0gRXhjbHVkZSBtdWx0aXBsZSB0YWJsZXMgdXNp bmcgdW5xdWFsaWZpZWQgbmFtZXM7IHNhbWUtbmFtZWQgdGFibGVzIGV4aXN0IGluCistLSBwdWJs aWMgdG8gY29uZmlybSB1bnF1YWxpZmllZCBuYW1lcyByZXNvbHZlIHRvIHB1Yl90ZXN0LCBub3Qg cHVibGljCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MgorICAgIEZP UiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgdGVzdHB1Yl9ub3BrLCB0 ZXN0cHViX3RibF9zMSk7CitcZFJwKyB0ZXN0cHViX3NjaGVtYV9leGNlcHQyCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViX3NjaGVtYV9leGNlcHQyCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCitUYWJsZXMgZnJvbSBz Y2hlbWFzOgorICAgICJwdWJfdGVzdCIKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1Yl90ZXN0LnRl c3RwdWJfbm9wayIKKyAgICAicHViX3Rlc3QudGVzdHB1Yl90YmxfczEiCisKKy0tIGZhaWw6IEVY Q0VQVCB0YWJsZSBiZWxvbmdzIHRvIGEgZGlmZmVyZW50IHNjaGVtYQorQ1JFQVRFIFBVQkxJQ0FU SU9OIHRlc3RwdWJfZXhjZXB0X3dyb25nc2NoZW1hCisgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEg cHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJsaWMudGVzdHB1Yl90YmwxKTsKK0VSUk9SOiAgdGFi bGUgInB1YmxpYy50ZXN0cHViX3RibDEiIGluIEVYQ0VQVCBjbGF1c2UgZG9lcyBub3QgYmVsb25n IHRvIHNjaGVtYSAicHViX3Rlc3QiCitMSU5FIDI6ICAgICBGT1IgVEFCTEVTIElOIFNDSEVNQSBw dWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1YmxpYy50ZXN0cC4uLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBmYWlsOiBjcm9zcy1z Y2hlbWEgRVhDRVBUIG5vdCBhbGxvd2VkOyBlYWNoIEVYQ0VQVCBpcyBib3VuZCB0byBpdHMgaW1t ZWRpYXRlIHNjaGVtYQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X2Nyb3Nzc2No ZW1hCisgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QsIHB1YmxpYyBFWENFUFQgKFRB QkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLCBwdWJsaWMudGVzdHB1Yl90YmwxKTsKK0VSUk9S OiAgdGFibGUgInB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxIiBpbiBFWENFUFQgY2xhdXNlIGRvZXMg bm90IGJlbG9uZyB0byBzY2hlbWEgInB1YmxpYyIKK0xJTkUgMjogLi4uUiBUQUJMRVMgSU4gU0NI RU1BIHB1Yl90ZXN0LCBwdWJsaWMgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50Li4uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor LS0gTXVsdGlwbGUgc2NoZW1hcyBlYWNoIHdpdGggdGhlaXIgb3duIEVYQ0VQVCBjbGF1c2UKK0NS RUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYV9leGNlcHRfbXVsdGkKKyAgICBGT1IgVEFC TEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJs X3MxKSwKKyAgICAgICAgICAgICAgICAgIHB1YmxpYyBFWENFUFQgKFRBQkxFIHRlc3RwdWJfdGJs MSk7CitcZFJwKyB0ZXN0cHViX3NjaGVtYV9leGNlcHRfbXVsdGkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfc2No ZW1hX2V4Y2VwdF9tdWx0aQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8IAorVGFibGVzIGZyb20gc2NoZW1h czoKKyAgICAicHViX3Rlc3QiCisgICAgInB1YmxpYyIKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1 Yl90ZXN0LnRlc3RwdWJfdGJsX3MxIgorICAgICJwdWJsaWMudGVzdHB1Yl90YmwxIgorCistLSBB TFRFUiBUQUJMRSAuLi4gU0VUIFNDSEVNQSBvbiBhIHRhYmxlIGV4Y2x1ZGVkIGJ5IGEgc2NoZW1h IHB1YmxpY2F0aW9uOgorLS0gdGhlIHNjaGVtYS1zY29wZWQgZXhjbHVzaW9uIGlzIG5vIGxvbmdl ciBtZWFuaW5nZnVsIG9uY2UgdGhlIHRhYmxlIG1vdmVzCistLSBvdXQgb2YgaXRzIHNjaGVtYSwg c28gdGhlIGV4Y2x1c2lvbiBpcyBhdXRvLXJlbW92ZWQuCitDUkVBVEUgUFVCTElDQVRJT04gdGVz dHB1Yl9zY2hlbWFfZXhjZXB0X3NldHNjaAorICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90 ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczIpOworXGRScCsgdGVzdHB1 Yl9zY2hlbWFfZXhjZXB0X3NldHNjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0X3NldHNj aAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2Vz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNv bHVtbnMgfCBWaWEgcm9vdCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAg ICAgICAgICAgfCBmICAgICAgICB8IAorVGFibGVzIGZyb20gc2NoZW1hczoKKyAgICAicHViX3Rl c3QiCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJfdGVzdC50ZXN0cHViX3RibF9zMiIKKworQUxU RVIgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczIgU0VUIFNDSEVNQSBwdWJsaWM7CitcZFJw KyB0ZXN0cHViX3NjaGVtYV9leGNlcHRfc2V0c2NoCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3NjaGVtYV9leGNl cHRfc2V0c2NoCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBz ZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5l cmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYg ICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBu b25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCitUYWJsZXMgZnJvbSBzY2hlbWFzOgorICAg ICJwdWJfdGVzdCIKKworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYV9leGNlcHRfc2V0 c2NoOworLS0gUmVzdG9yZSBmb3IgZnVydGhlciB0ZXN0cworQUxURVIgVEFCTEUgcHVibGljLnRl c3RwdWJfdGJsX3MyIFNFVCBTQ0hFTUEgcHViX3Rlc3Q7CistLSBmYWlsOiB0YWJsZSBhcHBlYXJz IGluIGJvdGggdGhlIGV4cGxpY2l0IHRhYmxlIGxpc3QgYW5kIHRoZSBFWENFUFQgY2xhdXNlCitD UkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNlcHRfY29uZmxpY3QKKyAgICBGT1IgVEFCTEUg cHViX3Rlc3QudGVzdHB1Yl90YmxfczEsIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBU IChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSk7CitFUlJPUjogIHRhYmxlICJwdWJfdGVz dC50ZXN0cHViX3RibF9zMSIgY2Fubm90IGJlIGJvdGggcHVibGlzaGVkIGFuZCBleGNsdWRlZAor LS0gZmFpbDogbm9uZXhpc3RlbnQgdGFibGUgaW4gRVhDRVBUIGNsYXVzZQorQ1JFQVRFIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfZXhjZXB0X25vcmVsCisgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHVi X3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC5ub25leGlzdGVudF90YWJsZSk7CitFUlJPUjog IHJlbGF0aW9uICJwdWJfdGVzdC5ub25leGlzdGVudF90YWJsZSIgZG9lcyBub3QgZXhpc3QKKy0t IGZhaWw6IHBhcnRpdGlvbiBjYW5ub3QgYXBwZWFyIGluIEVYQ0VQVCBjbGF1c2U7IG9ubHkgcm9v dCB0YWJsZXMgYXJlIGFsbG93ZWQKK0NSRUFURSBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3BhcnRl ZF9zIChhIGludCkgUEFSVElUSU9OIEJZIExJU1QgKGEpOworQ1JFQVRFIFRBQkxFIHB1Yl90ZXN0 LnRlc3RwdWJfcGFydF9zIFBBUlRJVElPTiBPRiBwdWJfdGVzdC50ZXN0cHViX3BhcnRlZF9zIEZP UiBWQUxVRVMgSU4gKDEpOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X3BhcnRp dGlvbgorICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHVi X3Rlc3QudGVzdHB1Yl9wYXJ0X3MpOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSByZWxhdGlvbiAi cHViX3Rlc3QudGVzdHB1Yl9wYXJ0X3MiIGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgY2xhdXNl CitERVRBSUw6ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBpbmRpdmlkdWFs IHBhcnRpdGlvbnMuCistLSBmYWlsOiBwYXJ0aXRpb24gc3RpbGwgcmVqZWN0ZWQgZnJvbSBFWENF UFQgZXZlbiB3aGVuIGl0cyBvd24gcm9vdCBpcyBhbHNvCistLSBuYW1lZCBpbiB0aGUgc2FtZSBF WENFUFQgbGlzdAorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X3BhcnRpdGlvbl93 aXRoX3Jvb3QKKyAgICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxF IHB1Yl90ZXN0LnRlc3RwdWJfcGFydF9zLCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3BhcnRlZF9z KTsKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgcmVsYXRpb24gInB1Yl90ZXN0LnRlc3RwdWJfcGFy dF9zIiBpbiB0aGUgcHVibGljYXRpb24gRVhDRVBUIGNsYXVzZQorREVUQUlMOiAgVGhpcyBvcGVy YXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgaW5kaXZpZHVhbCBwYXJ0aXRpb25zLgorLS0gZmFp bDogVEFCTEUga2V5d29yZCBpcyByZXF1aXJlZCBmb3IgdGhlIGZpcnN0IGVudHJ5IGluIHRoZSBF WENFUFQgY2xhdXNlCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNlcHRfbm9rdworICAg IEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAodGVzdHB1Yl9ub3BrKTsKK0VS Uk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgInRlc3RwdWJfbm9wayIKK0xJTkUgMjogICAg IEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAodGVzdHB1Yl9ub3BrKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gZmFp bDogQUREIFRBQkxFIGZvciBhIHBhcnRpdGlvbiBpcyByZWplY3RlZCB3aGVuIGEgcGFydGl0aW9u IGFuY2VzdG9yCistLSBpcyBjdXJyZW50bHkgaW4gdGhlIHB1YmxpY2F0aW9uJ3MgRVhDRVBUIGxp c3QuCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNlcHRfYW5jZXN0b3IKKyAgICBGT1Ig VEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJf cGFydGVkX3MpOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNlcHRfYW5jZXN0b3IgQURE IFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfcGFydF9zOworRVJST1I6ICBjYW5ub3QgYWRkIHBhcnRp dGlvbiAicHViX3Rlc3QudGVzdHB1Yl9wYXJ0X3MiIHRvIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2V4 Y2VwdF9hbmNlc3RvciIKK0RFVEFJTDogIEFuY2VzdG9yICJwdWJfdGVzdC50ZXN0cHViX3BhcnRl ZF9zIiBvZiBwYXJ0aXRpb24gInB1Yl90ZXN0LnRlc3RwdWJfcGFydF9zIiBpcyBjdXJyZW50bHkg bGlzdGVkIGluIHRoZSBFWENFUFQgY2xhdXNlIG9mIHRoZSBwdWJsaWNhdGlvbi4KK0hJTlQ6ICBD aGFuZ2UgRVhDRVBUIGxpc3QgdXNpbmcgQUxURVIgUFVCTElDQVRJT04gLi4uIFNFVCBUQUJMRVMg SU4gU0NIRU1BIC4uLiBFWENFUFQuCitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X2Fu Y2VzdG9yOworLS0gZmFpbDogc2FtZSBjb250cmFkaWN0aW9uIChleHBsaWNpdCBwYXJ0aXRpb24g KyBFWENFUFQtZWQgYW5jZXN0b3IpLCBidXQKKy0tIGdpdmVuIGluIGEgc2luZ2xlIHN0YXRlbWVu dCBpbnN0ZWFkIG9mIHR3byBzZXBhcmF0ZSBvbmVzOyB0aGUgYW5jZXN0b3IncworLS0gRVhDRVBU IHJvdyBkb2Vzbid0IGV4aXN0IGluIHRoZSBjYXRhbG9nIHlldCB3aGVuIHRoZSBleHBsaWNpdCBw YXJ0aXRpb24gaXMKKy0tIHZhbGlkYXRlZCwgc28gdGhpcyBtdXN0IGJlIGNhdWdodCBieSBjb21w YXJpbmcgdGhlIGluLW1lbW9yeSBsaXN0cworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhj ZXB0X2FuY2VzdG9yX3NhbWVfY3JlYXRlCisgICAgRk9SIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJf cGFydF9zLAorICAgICAgIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBw dWJfdGVzdC50ZXN0cHViX3BhcnRlZF9zKTsKK0VSUk9SOiAgcGFydGl0aW9uICJwdWJfdGVzdC50 ZXN0cHViX3BhcnRfcyIgY2Fubm90IGJlIGJvdGggcHVibGlzaGVkIGFuZCBleGNsdWRlZAorREVU QUlMOiAgQW5jZXN0b3IgInB1Yl90ZXN0LnRlc3RwdWJfcGFydGVkX3MiIGlzIGFsc28gYmVpbmcg ZXhjbHVkZWQgYnkgdGhpcyBzYW1lIGNvbW1hbmQuCistLSBDbGVhbnVwCitSRVNFVCBjbGllbnRf bWluX21lc3NhZ2VzOworRFJPUCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSwgcHViX3Rl c3QudGVzdHB1Yl90YmxfczI7CitEUk9QIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfcGFydGVkX3Mg Q0FTQ0FERTsKK0RST1AgVEFCTEUgdGVzdHB1Yl9ub3BrLCB0ZXN0cHViX3RibF9zMTsKK0RST1Ag UFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MSwgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0 MiwgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0X211bHRpOworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBUZXN0cyBmb3IgcHVibGljYXRpb25zIHdpdGggU0VR VUVOQ0VTCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIENS RUFURSBTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwOwogQ1JFQVRFIFNFUVVFTkNFIHB1Yl90ZXN0 LnJlZ3Jlc3NfcHViX3NlcTE7CiAtLSBGT1IgQUxMIFNFUVVFTkNFUwpAQCAtMTk1Myw2ICsyMTA2 LDI3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBBREQgVEFCTEVTIElO IFNDSEVNQSBmb28sIGJhciAoYSwgYik7CiBFUlJPUjogIGNvbHVtbiBzcGVjaWZpY2F0aW9uIG5v dCBhbGxvd2VkIGZvciBzY2hlbWEKIExJTkUgMTogLi4uVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEg QUREIFRBQkxFUyBJTiBTQ0hFTUEgZm9vLCBiYXIgKGEsIGIpLi4uCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVhDRVBU IGNsYXVzZSB3aXRoIENVUlJFTlRfU0NIRU1BOiBjcm9zcy1zY2hlbWEgZW50cnkgbXVzdCBiZSBy ZWplY3RlZAorU0VUIHNlYXJjaF9wYXRoID0gcHViX3Rlc3QxOworLS0gcXVhbGlmaWVkIG5hbWUg ZnJvbSB3cm9uZyBzY2hlbWEgLT4gZXJyb3IKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2N1 cnNjaF9leGNlcHQgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgQ1VSUkVOVF9TQ0hFTUEgRVhDRVBUIChU QUJMRSBwdWJfdGVzdDIudGJsMSk7CitFUlJPUjogIHRhYmxlICJwdWJfdGVzdDIudGJsMSIgaW4g RVhDRVBUIGNsYXVzZSBkb2VzIG5vdCBiZWxvbmcgdG8gc2NoZW1hICJwdWJfdGVzdDEiCistLSB1 bnF1YWxpZmllZCBuYW1lIGltcGxpY2l0bHkgcXVhbGlmaWVkIHdpdGggY3VycmVudCBzY2hlbWEg KHB1Yl90ZXN0MS50YmwpCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVB VEUgUFVCTElDQVRJT04gdGVzdHB1Yl9jdXJzY2hfZXhjZXB0IEZPUiBUQUJMRVMgSU4gU0NIRU1B IENVUlJFTlRfU0NIRU1BIEVYQ0VQVCAoVEFCTEUgdGJsKTsKK1JFU0VUIGNsaWVudF9taW5fbWVz c2FnZXM7CitcZFJwKyB0ZXN0cHViX2N1cnNjaF9leGNlcHQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfY3Vy c2NoX2V4Y2VwdAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwg c2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2Vu ZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBm ICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg bm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8IAorVGFibGVzIGZyb20gc2NoZW1hczoKKyAg ICAicHViX3Rlc3QxIgorRXhjZXB0IHRhYmxlczoKKyAgICAicHViX3Rlc3QxLnRibCIKKworRFJP UCBQVUJMSUNBVElPTiB0ZXN0cHViX2N1cnNjaF9leGNlcHQ7CitSRVNFVCBzZWFyY2hfcGF0aDsK IC0tIGNsZWFudXAgcHViX3Rlc3QxIHNjaGVtYSBmb3IgaW52YWxpZGF0aW9uIHRlc3RzCiBBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViMl9mb3JzY2hlbWEgRFJPUCBUQUJMRVMgSU4gU0NIRU1BIHB1 Yl90ZXN0MTsKIERST1AgUFVCTElDQVRJT04gdGVzdHB1YjNfZm9yc2NoZW1hLCB0ZXN0cHViNF9m b3JzY2hlbWEsIHRlc3RwdWI1X2ZvcnNjaGVtYSwgdGVzdHB1YjZfZm9yc2NoZW1hLCB0ZXN0cHVi X2ZvcnRhYmxlOwpAQCAtMjMwNCw2ICsyNDc4LDcgQEAgRFJPUCBST0xFIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlcl9kdW1teTsKIC0tIFRlc3QgcGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxlcyh0ZXh0 W10sIG9pZCkgZnVuY3Rpb24KIENSRUFURSBTQ0hFTUEgZ3B0X3Rlc3Rfc2NoOwogQ1JFQVRFIFRB QkxFIGdwdF90ZXN0X3NjaC50Ymxfc2NoIChpZCBpbnQpOworQ1JFQVRFIFRBQkxFIGdwdF90ZXN0 X3NjaC50Ymxfc2NoMiAoaWQgaW50KTsKIENSRUFURSBUQUJMRSB0Ymxfbm9ybWFsIChpZCBpbnQp OwogQ1JFQVRFIFRBQkxFIHRibF9wYXJlbnQgKGlkMSBpbnQsIGlkMiBpbnQsIGlkMyBpbnQpIFBB UlRJVElPTiBCWSBSQU5HRSAoaWQxKTsKIENSRUFURSBUQUJMRSB0YmxfcGFydDEgUEFSVElUSU9O IE9GIHRibF9wYXJlbnQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOwpAQCAtMjMxNCw2ICsy NDg5LDcgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9hbGxfbm9fdmlhcm9vdCBGT1IgQUxMIFRB QkxFUyBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb24KIENSRUFURSBQVUJMSUNBVElPTiBwdWJf YWxsX2V4Y2VwdCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHRibF9wYXJlbnQsIGdwdF90 ZXN0X3NjaC50Ymxfc2NoKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUp OwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9hbGxfZXhjZXB0X25vX3ZpYXJvb3QgRk9SIEFMTCBU QUJMRVMgRVhDRVBUIChUQUJMRSB0YmxfcGFyZW50LCBncHRfdGVzdF9zY2gudGJsX3NjaCkgV0lU SCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZSk7CiBDUkVBVEUgUFVCTElDQVRJ T04gcHViX3NjaGVtYSBGT1IgVEFCTEVTIElOIFNDSEVNQSBncHRfdGVzdF9zY2g7CitDUkVBVEUg UFVCTElDQVRJT04gcHViX3NjaGVtYV9leGNlcHQgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgZ3B0X3Rl c3Rfc2NoIEVYQ0VQVCAoVEFCTEUgZ3B0X3Rlc3Rfc2NoLnRibF9zY2gpOwogQ1JFQVRFIFBVQkxJ Q0FUSU9OIHB1Yl9ub3JtYWwgRk9SIFRBQkxFIHRibF9ub3JtYWwgV0hFUkUgKGlkIDwgMTApOwog Q1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9wYXJ0X2xlYWYgRk9SIFRBQkxFIHRibF9wYXJ0MSBXSVRI IChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlKTsKIENSRUFURSBQVUJMSUNBVElP TiBwdWJfcGFydF9wYXJlbnQgRk9SIFRBQkxFIHRibF9wYXJlbnQgKGlkMSwgaWQyKSBXSEVSRSAo aWQxID0gMTApIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSk7CkBAIC0y NDY1LDYgKzI2NDEsNDQgQEAgU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHViX2FsbF9l eGNlcHRfbm9fdmlhcm9vdCddLCAndGJsX3BhcnQxJyk7IC0tIG5vIHIKIC0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLSstLS0tLS0KICgwIHJvd3MpCiAKKy0tIHRlc3QgZm9yIEVYQ0VQVCBjbGF1 c2Ugd2l0aCBzY2hlbWEgcHVibGljYXRpb24KK1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlb J3B1Yl9zY2hlbWFfZXhjZXB0J10sICdncHRfdGVzdF9zY2gudGJsX3NjaCcpOyAtLSBubyByZXN1 bHQgKGV4Y2x1ZGVkKQorIHB1Ym5hbWUgfCByZWxuYW1lIHwgYXR0cnMgfCBxdWFsIAorLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLQorKDAgcm93cykKKworU0VMRUNUICogRlJPTSB0 ZXN0X2dwdChBUlJBWVsncHViX3NjaGVtYV9leGNlcHQnXSwgJ2dwdF90ZXN0X3NjaC50Ymxfc2No MicpOyAtLSBvbmUgcm93IChpbmNsdWRlZCB2aWEgc2NoZW1hKQorICAgICAgcHVibmFtZSAgICAg IHwgcmVsbmFtZSAgfCBhdHRycyB8IHF1YWwgCistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLSstLS0tLS0KKyBwdWJfc2NoZW1hX2V4Y2VwdCB8IHRibF9zY2gyIHwgMSAgICAg fCAKKygxIHJvdykKKworLS0gdGVzdCBmb3IgRVhDRVBUIGNsYXVzZSB3aXRoIHNjaGVtYSBwdWJs aWNhdGlvbiwgd2hlcmUgdGhlIGV4Y2x1ZGVkIHJvb3QncworLS0gcGFydGl0aW9uIGxpdmVzIGlu IGEgZGlmZmVyZW50IHNjaGVtYSB0aGF0IGlzIHNlcGFyYXRlbHksIGZ1bGx5IGluY2x1ZGVkCist LSAobm8gRVhDRVBUKSBpbiB0aGUgc2FtZSBwdWJsaWNhdGlvbi4gIFRoZSByb290J3MgZXhjbHVz aW9uIG11c3QgY2FzY2FkZSB0bworLS0gdGhlIHBhcnRpdGlvbiByZWdhcmRsZXNzIG9mIHRoZSBw YXJ0aXRpb24ncyBvd24gc2NoZW1hIG1lbWJlcnNoaXAuCitDUkVBVEUgU0NIRU1BIGdwdF9jcm9z c19zY2gxOworQ1JFQVRFIFNDSEVNQSBncHRfY3Jvc3Nfc2NoMjsKK0NSRUFURSBUQUJMRSBncHRf Y3Jvc3Nfc2NoMS5jcm9vdCAoaWQgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGlkKTsKK0NSRUFU RSBUQUJMRSBncHRfY3Jvc3Nfc2NoMi5jcGFydDEgUEFSVElUSU9OIE9GIGdwdF9jcm9zc19zY2gx LmNyb290IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK1NFVCBjbGllbnRfbWluX21lc3Nh Z2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiBwdWJfY3Jvc3Nfc2NoZW1hX2V4Y2Vw dCBGT1IgVEFCTEVTIElOIFNDSEVNQSBncHRfY3Jvc3Nfc2NoMSBFWENFUFQgKFRBQkxFIGdwdF9j cm9zc19zY2gxLmNyb290KSwgVEFCTEVTIElOIFNDSEVNQSBncHRfY3Jvc3Nfc2NoMjsKK1JFU0VU IGNsaWVudF9taW5fbWVzc2FnZXM7CitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJf Y3Jvc3Nfc2NoZW1hX2V4Y2VwdCddLCAnZ3B0X2Nyb3NzX3NjaDEuY3Jvb3QnKTsgLS0gbm8gcmVz dWx0IChleGNsdWRlZCkKKyBwdWJuYW1lIHwgcmVsbmFtZSB8IGF0dHJzIHwgcXVhbCAKKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0KKygwIHJvd3MpCisKKy0tIG5vIHJlc3VsdCAo ZXhjbHVkZWQgdmlhIGNhc2NhZGluZyByb290IGV4Y2x1c2lvbiwgZXZlbiB0aG91Z2ggY3BhcnQx J3Mgb3duCistLSBzY2hlbWEgZ3B0X2Nyb3NzX3NjaDIgaXMgc2VwYXJhdGVseSwgZnVsbHkgaW5j bHVkZWQgd2l0aCBubyBFWENFUFQpCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJf Y3Jvc3Nfc2NoZW1hX2V4Y2VwdCddLCAnZ3B0X2Nyb3NzX3NjaDIuY3BhcnQxJyk7CisgcHVibmFt ZSB8IHJlbG5hbWUgfCBhdHRycyB8IHF1YWwgCistLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0r LS0tLS0tCisoMCByb3dzKQorCitEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9jcm9zc19zY2hlbWFfZXhj ZXB0OworRFJPUCBUQUJMRSBncHRfY3Jvc3Nfc2NoMi5jcGFydDEsIGdwdF9jcm9zc19zY2gxLmNy b290OworRFJPUCBTQ0hFTUEgZ3B0X2Nyb3NzX3NjaDEsIGdwdF9jcm9zc19zY2gyOwogLS0gdHdv IHJvd3Mgd2l0aCBkaWZmZXJlbnQgcm93IGZpbHRlcgogU0VMRUNUICogRlJPTSB0ZXN0X2dwdChB UlJBWVsncHViX2FsbCcsICdwdWJfbm9ybWFsJ10sICd0Ymxfbm9ybWFsJyk7CiAgIHB1Ym5hbWUg ICB8ICByZWxuYW1lICAgfCBhdHRycyB8ICAgcXVhbCAgICAKQEAgLTI1MTcsNiArMjczMSw3IEBA IERST1AgUFVCTElDQVRJT04gcHViX2FsbF9ub192aWFyb290OwogRFJPUCBQVUJMSUNBVElPTiBw dWJfYWxsX2V4Y2VwdDsKIERST1AgUFVCTElDQVRJT04gcHViX2FsbF9leGNlcHRfbm9fdmlhcm9v dDsKIERST1AgUFVCTElDQVRJT04gcHViX3NjaGVtYTsKK0RST1AgUFVCTElDQVRJT04gcHViX3Nj aGVtYV9leGNlcHQ7CiBEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9ub3JtYWw7CiBEUk9QIFBVQkxJQ0FU SU9OIHB1Yl9wYXJ0X2xlYWY7CiBEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9wYXJ0X3BhcmVudDsKQEAg LTI1MjUsNyArMjc0MCw5IEBAIERST1AgUFVCTElDQVRJT04gcHViX3BhcnRfcGFyZW50X2NoaWxk OwogRFJPUCBWSUVXIGdwdF90ZXN0X3ZpZXc7CiBEUk9QIFRBQkxFIHRibF9ub3JtYWwsIHRibF9w YXJlbnQsIHRibF9wYXJ0MTsKIERST1AgU0NIRU1BIGdwdF90ZXN0X3NjaCBDQVNDQURFOwotTk9U SUNFOiAgZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBncHRfdGVzdF9zY2gudGJsX3NjaAorTk9USUNF OiAgZHJvcCBjYXNjYWRlcyB0byAyIG90aGVyIG9iamVjdHMKK0RFVEFJTDogIGRyb3AgY2FzY2Fk ZXMgdG8gdGFibGUgZ3B0X3Rlc3Rfc2NoLnRibF9zY2gKK2Ryb3AgY2FzY2FkZXMgdG8gdGFibGUg Z3B0X3Rlc3Rfc2NoLnRibF9zY2gyCiAtLSBzdGFnZSBvYmplY3RzIGZvciBwZ19kdW1wIHRlc3Rz CiBDUkVBVEUgU0NIRU1BIHB1Ym1lIENSRUFURSBUQUJMRSB0MCAoYyBpbnQsIGQgaW50KSBDUkVB VEUgVEFCTEUgdDEgKGMgaW50KTsKIENSRUFURSBTQ0hFTUEgcHVibWUyIENSRUFURSBUQUJMRSB0 MCAoYyBpbnQsIGQgaW50KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1Ymxp Y2F0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAppbmRleCAw NDFlMTRhNGRlNi4uMDU1YjllOTdkYzEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3B1YmxpY2F0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5z cWwKQEAgLTEyMyw2ICsxMjMsOSBAQCBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0 YWJsZXNfZXhjZXB0dGFibGUxIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTAogXGQgdGVzdHB1 Yl90YmwxCiAtLSBmYWlsIC0gZmlyc3QgdGFibGUgaW4gdGhlIEVYQ0VQVCBsaXN0IHNob3VsZCB1 c2UgVEFCTEUga2V5d29yZAogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVz X2V4Y2VwdHRhYmxlMiBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKHRlc3RwdWJfdGJsMSwgdGVzdHB1 Yl90YmwyKTsKKy0tIGZhaWwgLSBFWENFUFQgaXMgbm90IGFsbG93ZWQgZm9yIEZPUiBUQUJMRSBw dWJsaWNhdGlvbnMKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9lcnIKKyAgICBG T1IgVEFCTEUgdGVzdHB1Yl90YmwxLCB0ZXN0cHViX3RibDIgRVhDRVBUIChUQUJMRSB0ZXN0cHVi X3RibDMpOwogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K IC0tIFNFVCBBTEwgVEFCTEVTL1NFUVVFTkNFUwpAQCAtMjIwLDcgKzIyMywxMDMgQEAgUkVTRVQg Y2xpZW50X21pbl9tZXNzYWdlczsKIERST1AgVEFCTEUgdGVzdHB1Yl9yb290LCB0ZXN0cHViX3Bh cnQxLCB0YWJfbWFpbjsKIERST1AgUFVCTElDQVRJT04gdGVzdHB1Yjg7CiAKLS0tLSBUZXN0cyBm b3IgcHVibGljYXRpb25zIHdpdGggU0VRVUVOQ0VTCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIEVYQ0VQVCB0ZXN0cyBmb3IgVEFCTEVTIElOIFNDSEVN QQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitTRVQgY2xp ZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CistLSBDcmVhdGUgdGFibGVzIGluIHB1Yl90ZXN0 IGZvciB0aGVzZSB0ZXN0cworQ1JFQVRFIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxIChh IGludCBwcmltYXJ5IGtleSwgYiB0ZXh0KTsKK0NSRUFURSBUQUJMRSBwdWJfdGVzdC50ZXN0cHVi X3RibF9zMiAoeCBpbnQgcHJpbWFyeSBrZXksIHkgdGV4dCk7CistLSBDcmVhdGUgc2FtZS1uYW1l ZCB0YWJsZXMgaW4gcHVibGljIHRvIHZlcmlmeSB1bnF1YWxpZmllZCBFWENFUFQgZW50cmllcwor LS0gYXJlIHF1YWxpZmllZCB3aXRoIHRoZSBuYW1lZCBzY2hlbWEsIG5vdCBwdWJsaWMKK0NSRUFU RSBUQUJMRSB0ZXN0cHViX25vcGsgKGZvbyBpbnQsIGJhciBpbnQpOworQ1JFQVRFIFRBQkxFIHRl c3RwdWJfdGJsX3MxIChhIGludCBwcmltYXJ5IGtleSwgYiB0ZXh0KTsKKworLS0gQmFzaWM6IGV4 Y2x1ZGUgb25lIHRhYmxlIGZyb20gYSBzY2hlbWEgcHVibGljYXRpb24KK0NSRUFURSBQVUJMSUNB VElPTiB0ZXN0cHViX3NjaGVtYV9leGNlcHQxCisgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHVi X3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSk7CitcZFJwKyB0ZXN0 cHViX3NjaGVtYV9leGNlcHQxCisKKy0tIEV4Y2x1ZGUgbXVsdGlwbGUgdGFibGVzIHVzaW5nIHVu cXVhbGlmaWVkIG5hbWVzOyBzYW1lLW5hbWVkIHRhYmxlcyBleGlzdCBpbgorLS0gcHVibGljIHRv IGNvbmZpcm0gdW5xdWFsaWZpZWQgbmFtZXMgcmVzb2x2ZSB0byBwdWJfdGVzdCwgbm90IHB1Ymxp YworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDIKKyAgICBGT1IgVEFC TEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHRlc3RwdWJfbm9waywgdGVzdHB1 Yl90YmxfczEpOworXGRScCsgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MgorCistLSBmYWlsOiBFWENF UFQgdGFibGUgYmVsb25ncyB0byBhIGRpZmZlcmVudCBzY2hlbWEKK0NSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViX2V4Y2VwdF93cm9uZ3NjaGVtYQorICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1 Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHVibGljLnRlc3RwdWJfdGJsMSk7CisKKy0tIGZhaWw6IGNy b3NzLXNjaGVtYSBFWENFUFQgbm90IGFsbG93ZWQ7IGVhY2ggRVhDRVBUIGlzIGJvdW5kIHRvIGl0 cyBpbW1lZGlhdGUgc2NoZW1hCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNlcHRfY3Jv c3NzY2hlbWEKKyAgICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCwgcHVibGljIEVYQ0VQ VCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEsIHB1YmxpYy50ZXN0cHViX3RibDEpOwor CistLSBNdWx0aXBsZSBzY2hlbWFzIGVhY2ggd2l0aCB0aGVpciBvd24gRVhDRVBUIGNsYXVzZQor Q1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdF9tdWx0aQorICAgIEZPUiBU QUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90 YmxfczEpLAorICAgICAgICAgICAgICAgICAgcHVibGljIEVYQ0VQVCAoVEFCTEUgdGVzdHB1Yl90 YmwxKTsKK1xkUnArIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdF9tdWx0aQorCistLSBBTFRFUiBUQUJM RSAuLi4gU0VUIFNDSEVNQSBvbiBhIHRhYmxlIGV4Y2x1ZGVkIGJ5IGEgc2NoZW1hIHB1YmxpY2F0 aW9uOgorLS0gdGhlIHNjaGVtYS1zY29wZWQgZXhjbHVzaW9uIGlzIG5vIGxvbmdlciBtZWFuaW5n ZnVsIG9uY2UgdGhlIHRhYmxlIG1vdmVzCistLSBvdXQgb2YgaXRzIHNjaGVtYSwgc28gdGhlIGV4 Y2x1c2lvbiBpcyBhdXRvLXJlbW92ZWQuCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hl bWFfZXhjZXB0X3NldHNjaAorICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQ VCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczIpOworXGRScCsgdGVzdHB1Yl9zY2hlbWFf ZXhjZXB0X3NldHNjaAorQUxURVIgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczIgU0VUIFND SEVNQSBwdWJsaWM7CitcZFJwKyB0ZXN0cHViX3NjaGVtYV9leGNlcHRfc2V0c2NoCitEUk9QIFBV QkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdF9zZXRzY2g7CistLSBSZXN0b3JlIGZvciBm dXJ0aGVyIHRlc3RzCitBTFRFUiBUQUJMRSBwdWJsaWMudGVzdHB1Yl90YmxfczIgU0VUIFNDSEVN QSBwdWJfdGVzdDsKKworLS0gZmFpbDogdGFibGUgYXBwZWFycyBpbiBib3RoIHRoZSBleHBsaWNp dCB0YWJsZSBsaXN0IGFuZCB0aGUgRVhDRVBUIGNsYXVzZQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRl c3RwdWJfZXhjZXB0X2NvbmZsaWN0CisgICAgRk9SIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJs X3MxLCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVz dHB1Yl90YmxfczEpOworCistLSBmYWlsOiBub25leGlzdGVudCB0YWJsZSBpbiBFWENFUFQgY2xh dXNlCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNlcHRfbm9yZWwKKyAgICBGT1IgVEFC TEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0Lm5vbmV4aXN0ZW50 X3RhYmxlKTsKKworLS0gZmFpbDogcGFydGl0aW9uIGNhbm5vdCBhcHBlYXIgaW4gRVhDRVBUIGNs YXVzZTsgb25seSByb290IHRhYmxlcyBhcmUgYWxsb3dlZAorQ1JFQVRFIFRBQkxFIHB1Yl90ZXN0 LnRlc3RwdWJfcGFydGVkX3MgKGEgaW50KSBQQVJUSVRJT04gQlkgTElTVCAoYSk7CitDUkVBVEUg VEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0X3MgUEFSVElUSU9OIE9GIHB1Yl90ZXN0LnRlc3Rw dWJfcGFydGVkX3MgRk9SIFZBTFVFUyBJTiAoMSk7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1 Yl9leGNlcHRfcGFydGl0aW9uCisgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhD RVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3BhcnRfcyk7CisKKy0tIGZhaWw6IHBhcnRpdGlv biBzdGlsbCByZWplY3RlZCBmcm9tIEVYQ0VQVCBldmVuIHdoZW4gaXRzIG93biByb290IGlzIGFs c28KKy0tIG5hbWVkIGluIHRoZSBzYW1lIEVYQ0VQVCBsaXN0CitDUkVBVEUgUFVCTElDQVRJT04g dGVzdHB1Yl9leGNlcHRfcGFydGl0aW9uX3dpdGhfcm9vdAorICAgIEZPUiBUQUJMRVMgSU4gU0NI RU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0X3MsIFRBQkxF IHB1Yl90ZXN0LnRlc3RwdWJfcGFydGVkX3MpOworCistLSBmYWlsOiBUQUJMRSBrZXl3b3JkIGlz IHJlcXVpcmVkIGZvciB0aGUgZmlyc3QgZW50cnkgaW4gdGhlIEVYQ0VQVCBjbGF1c2UKK0NSRUFU RSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9ub2t3CisgICAgRk9SIFRBQkxFUyBJTiBTQ0hF TUEgcHViX3Rlc3QgRVhDRVBUICh0ZXN0cHViX25vcGspOworCistLSBmYWlsOiBBREQgVEFCTEUg Zm9yIGEgcGFydGl0aW9uIGlzIHJlamVjdGVkIHdoZW4gYSBwYXJ0aXRpb24gYW5jZXN0b3IKKy0t IGlzIGN1cnJlbnRseSBpbiB0aGUgcHVibGljYXRpb24ncyBFWENFUFQgbGlzdC4KK0NSRUFURSBQ VUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9hbmNlc3RvcgorICAgIEZPUiBUQUJMRVMgSU4gU0NI RU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0ZWRfcyk7CitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9hbmNlc3RvciBBREQgVEFCTEUgcHViX3Rl c3QudGVzdHB1Yl9wYXJ0X3M7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X2FuY2Vz dG9yOworCistLSBmYWlsOiBzYW1lIGNvbnRyYWRpY3Rpb24gKGV4cGxpY2l0IHBhcnRpdGlvbiAr IEVYQ0VQVC1lZCBhbmNlc3RvciksIGJ1dAorLS0gZ2l2ZW4gaW4gYSBzaW5nbGUgc3RhdGVtZW50 IGluc3RlYWQgb2YgdHdvIHNlcGFyYXRlIG9uZXM7IHRoZSBhbmNlc3RvcidzCistLSBFWENFUFQg cm93IGRvZXNuJ3QgZXhpc3QgaW4gdGhlIGNhdGFsb2cgeWV0IHdoZW4gdGhlIGV4cGxpY2l0IHBh cnRpdGlvbiBpcworLS0gdmFsaWRhdGVkLCBzbyB0aGlzIG11c3QgYmUgY2F1Z2h0IGJ5IGNvbXBh cmluZyB0aGUgaW4tbWVtb3J5IGxpc3RzCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNl cHRfYW5jZXN0b3Jfc2FtZV9jcmVhdGUKKyAgICBGT1IgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9w YXJ0X3MsCisgICAgICAgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1 Yl90ZXN0LnRlc3RwdWJfcGFydGVkX3MpOworCistLSBDbGVhbnVwCitSRVNFVCBjbGllbnRfbWlu X21lc3NhZ2VzOworRFJPUCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSwgcHViX3Rlc3Qu dGVzdHB1Yl90YmxfczI7CitEUk9QIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfcGFydGVkX3MgQ0FT Q0FERTsKK0RST1AgVEFCTEUgdGVzdHB1Yl9ub3BrLCB0ZXN0cHViX3RibF9zMTsKK0RST1AgUFVC TElDQVRJT04gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MSwgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0Miwg dGVzdHB1Yl9zY2hlbWFfZXhjZXB0X211bHRpOworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIFRlc3RzIGZvciBwdWJsaWNhdGlvbnMgd2l0aCBTRVFV RU5DRVMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JF QVRFIFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTA7CiBDUkVBVEUgU0VRVUVOQ0UgcHViX3Rlc3Qu cmVncmVzc19wdWJfc2VxMTsKIApAQCAtMTE4OSw2ICsxMjg4LDE4IEBAIEFMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDEsIHB1 Yl90ZXN0MTsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBBREQgVEFCTEVT IElOIFNDSEVNQSBmb28gKGEsIGIpOwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2No ZW1hIEFERCBUQUJMRVMgSU4gU0NIRU1BIGZvbywgYmFyIChhLCBiKTsKIAorLS0gRVhDRVBUIGNs YXVzZSB3aXRoIENVUlJFTlRfU0NIRU1BOiBjcm9zcy1zY2hlbWEgZW50cnkgbXVzdCBiZSByZWpl Y3RlZAorU0VUIHNlYXJjaF9wYXRoID0gcHViX3Rlc3QxOworLS0gcXVhbGlmaWVkIG5hbWUgZnJv bSB3cm9uZyBzY2hlbWEgLT4gZXJyb3IKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2N1cnNj aF9leGNlcHQgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgQ1VSUkVOVF9TQ0hFTUEgRVhDRVBUIChUQUJM RSBwdWJfdGVzdDIudGJsMSk7CistLSB1bnF1YWxpZmllZCBuYW1lIGltcGxpY2l0bHkgcXVhbGlm aWVkIHdpdGggY3VycmVudCBzY2hlbWEgKHB1Yl90ZXN0MS50YmwpCitTRVQgY2xpZW50X21pbl9t ZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9jdXJzY2hfZXhj ZXB0IEZPUiBUQUJMRVMgSU4gU0NIRU1BIENVUlJFTlRfU0NIRU1BIEVYQ0VQVCAoVEFCTEUgdGJs KTsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitcZFJwKyB0ZXN0cHViX2N1cnNjaF9leGNl cHQKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9jdXJzY2hfZXhjZXB0OworUkVTRVQgc2VhcmNo X3BhdGg7CisKIC0tIGNsZWFudXAgcHViX3Rlc3QxIHNjaGVtYSBmb3IgaW52YWxpZGF0aW9uIHRl c3RzCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMl9mb3JzY2hlbWEgRFJPUCBUQUJMRVMgSU4g U0NIRU1BIHB1Yl90ZXN0MTsKIERST1AgUFVCTElDQVRJT04gdGVzdHB1YjNfZm9yc2NoZW1hLCB0 ZXN0cHViNF9mb3JzY2hlbWEsIHRlc3RwdWI1X2ZvcnNjaGVtYSwgdGVzdHB1YjZfZm9yc2NoZW1h LCB0ZXN0cHViX2ZvcnRhYmxlOwpAQCAtMTQ0Myw2ICsxNTU0LDcgQEAgRFJPUCBST0xFIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlcl9kdW1teTsKIC0tIFRlc3QgcGdfZ2V0X3B1YmxpY2F0aW9uX3Rh Ymxlcyh0ZXh0W10sIG9pZCkgZnVuY3Rpb24KIENSRUFURSBTQ0hFTUEgZ3B0X3Rlc3Rfc2NoOwog Q1JFQVRFIFRBQkxFIGdwdF90ZXN0X3NjaC50Ymxfc2NoIChpZCBpbnQpOworQ1JFQVRFIFRBQkxF IGdwdF90ZXN0X3NjaC50Ymxfc2NoMiAoaWQgaW50KTsKIENSRUFURSBUQUJMRSB0Ymxfbm9ybWFs IChpZCBpbnQpOwogQ1JFQVRFIFRBQkxFIHRibF9wYXJlbnQgKGlkMSBpbnQsIGlkMiBpbnQsIGlk MyBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaWQxKTsKIENSRUFURSBUQUJMRSB0YmxfcGFydDEg UEFSVElUSU9OIE9GIHRibF9wYXJlbnQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOwpAQCAt MTQ1NCw2ICsxNTY2LDcgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9hbGxfbm9fdmlhcm9vdCBG T1IgQUxMIFRBQkxFUyBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb24KIENSRUFURSBQVUJMSUNB VElPTiBwdWJfYWxsX2V4Y2VwdCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHRibF9wYXJl bnQsIGdwdF90ZXN0X3NjaC50Ymxfc2NoKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9v dCA9IHRydWUpOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9hbGxfZXhjZXB0X25vX3ZpYXJvb3Qg Rk9SIEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMRSB0YmxfcGFyZW50LCBncHRfdGVzdF9zY2gudGJs X3NjaCkgV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZSk7CiBDUkVBVEUg UFVCTElDQVRJT04gcHViX3NjaGVtYSBGT1IgVEFCTEVTIElOIFNDSEVNQSBncHRfdGVzdF9zY2g7 CitDUkVBVEUgUFVCTElDQVRJT04gcHViX3NjaGVtYV9leGNlcHQgRk9SIFRBQkxFUyBJTiBTQ0hF TUEgZ3B0X3Rlc3Rfc2NoIEVYQ0VQVCAoVEFCTEUgZ3B0X3Rlc3Rfc2NoLnRibF9zY2gpOwogQ1JF QVRFIFBVQkxJQ0FUSU9OIHB1Yl9ub3JtYWwgRk9SIFRBQkxFIHRibF9ub3JtYWwgV0hFUkUgKGlk IDwgMTApOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9wYXJ0X2xlYWYgRk9SIFRBQkxFIHRibF9w YXJ0MSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlKTsKIENSRUFURSBQ VUJMSUNBVElPTiBwdWJfcGFydF9wYXJlbnQgRk9SIFRBQkxFIHRibF9wYXJlbnQgKGlkMSwgaWQy KSBXSEVSRSAoaWQxID0gMTApIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1 ZSk7CkBAIC0xNTEwLDYgKzE2MjMsMzIgQEAgU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsn cHViX2FsbF9leGNlcHRfbm9fdmlhcm9vdCddLCAnZ3B0X3Rlc3Rfc2NoLnRibF9zY2gKIFNFTEVD VCAqIEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9hbGxfZXhjZXB0X25vX3ZpYXJvb3QnXSwgJ3Ri bF9wYXJlbnQnKTsgLS0gbm8gcmVzdWx0IChleGNsdWRlZCkKIFNFTEVDVCAqIEZST00gdGVzdF9n cHQoQVJSQVlbJ3B1Yl9hbGxfZXhjZXB0X25vX3ZpYXJvb3QnXSwgJ3RibF9wYXJ0MScpOyAtLSBu byByZXN1bHQKIAorLS0gdGVzdCBmb3IgRVhDRVBUIGNsYXVzZSB3aXRoIHNjaGVtYSBwdWJsaWNh dGlvbgorU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHViX3NjaGVtYV9leGNlcHQnXSwg J2dwdF90ZXN0X3NjaC50Ymxfc2NoJyk7IC0tIG5vIHJlc3VsdCAoZXhjbHVkZWQpCitTRUxFQ1Qg KiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfc2NoZW1hX2V4Y2VwdCddLCAnZ3B0X3Rlc3Rfc2No LnRibF9zY2gyJyk7IC0tIG9uZSByb3cgKGluY2x1ZGVkIHZpYSBzY2hlbWEpCisKKy0tIHRlc3Qg Zm9yIEVYQ0VQVCBjbGF1c2Ugd2l0aCBzY2hlbWEgcHVibGljYXRpb24sIHdoZXJlIHRoZSBleGNs dWRlZCByb290J3MKKy0tIHBhcnRpdGlvbiBsaXZlcyBpbiBhIGRpZmZlcmVudCBzY2hlbWEgdGhh dCBpcyBzZXBhcmF0ZWx5LCBmdWxseSBpbmNsdWRlZAorLS0gKG5vIEVYQ0VQVCkgaW4gdGhlIHNh bWUgcHVibGljYXRpb24uICBUaGUgcm9vdCdzIGV4Y2x1c2lvbiBtdXN0IGNhc2NhZGUgdG8KKy0t IHRoZSBwYXJ0aXRpb24gcmVnYXJkbGVzcyBvZiB0aGUgcGFydGl0aW9uJ3Mgb3duIHNjaGVtYSBt ZW1iZXJzaGlwLgorQ1JFQVRFIFNDSEVNQSBncHRfY3Jvc3Nfc2NoMTsKK0NSRUFURSBTQ0hFTUEg Z3B0X2Nyb3NzX3NjaDI7CitDUkVBVEUgVEFCTEUgZ3B0X2Nyb3NzX3NjaDEuY3Jvb3QgKGlkIGlu dCkgUEFSVElUSU9OIEJZIFJBTkdFIChpZCk7CitDUkVBVEUgVEFCTEUgZ3B0X2Nyb3NzX3NjaDIu Y3BhcnQxIFBBUlRJVElPTiBPRiBncHRfY3Jvc3Nfc2NoMS5jcm9vdCBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgxMCk7CisKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFU RSBQVUJMSUNBVElPTiBwdWJfY3Jvc3Nfc2NoZW1hX2V4Y2VwdCBGT1IgVEFCTEVTIElOIFNDSEVN QSBncHRfY3Jvc3Nfc2NoMSBFWENFUFQgKFRBQkxFIGdwdF9jcm9zc19zY2gxLmNyb290KSwgVEFC TEVTIElOIFNDSEVNQSBncHRfY3Jvc3Nfc2NoMjsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7 CisKK1NFTEVDVCAqIEZST00gdGVzdF9ncHQoQVJSQVlbJ3B1Yl9jcm9zc19zY2hlbWFfZXhjZXB0 J10sICdncHRfY3Jvc3Nfc2NoMS5jcm9vdCcpOyAtLSBubyByZXN1bHQgKGV4Y2x1ZGVkKQorLS0g bm8gcmVzdWx0IChleGNsdWRlZCB2aWEgY2FzY2FkaW5nIHJvb3QgZXhjbHVzaW9uLCBldmVuIHRo b3VnaCBjcGFydDEncyBvd24KKy0tIHNjaGVtYSBncHRfY3Jvc3Nfc2NoMiBpcyBzZXBhcmF0ZWx5 LCBmdWxseSBpbmNsdWRlZCB3aXRoIG5vIEVYQ0VQVCkKK1NFTEVDVCAqIEZST00gdGVzdF9ncHQo QVJSQVlbJ3B1Yl9jcm9zc19zY2hlbWFfZXhjZXB0J10sICdncHRfY3Jvc3Nfc2NoMi5jcGFydDEn KTsKKworRFJPUCBQVUJMSUNBVElPTiBwdWJfY3Jvc3Nfc2NoZW1hX2V4Y2VwdDsKK0RST1AgVEFC TEUgZ3B0X2Nyb3NzX3NjaDIuY3BhcnQxLCBncHRfY3Jvc3Nfc2NoMS5jcm9vdDsKK0RST1AgU0NI RU1BIGdwdF9jcm9zc19zY2gxLCBncHRfY3Jvc3Nfc2NoMjsKKwogLS0gdHdvIHJvd3Mgd2l0aCBk aWZmZXJlbnQgcm93IGZpbHRlcgogU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHViX2Fs bCcsICdwdWJfbm9ybWFsJ10sICd0Ymxfbm9ybWFsJyk7CiAKQEAgLTE1MzgsNiArMTY3Nyw3IEBA IERST1AgUFVCTElDQVRJT04gcHViX2FsbF9ub192aWFyb290OwogRFJPUCBQVUJMSUNBVElPTiBw dWJfYWxsX2V4Y2VwdDsKIERST1AgUFVCTElDQVRJT04gcHViX2FsbF9leGNlcHRfbm9fdmlhcm9v dDsKIERST1AgUFVCTElDQVRJT04gcHViX3NjaGVtYTsKK0RST1AgUFVCTElDQVRJT04gcHViX3Nj aGVtYV9leGNlcHQ7CiBEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9ub3JtYWw7CiBEUk9QIFBVQkxJQ0FU SU9OIHB1Yl9wYXJ0X2xlYWY7CiBEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9wYXJ0X3BhcmVudDsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwgYi9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsCmluZGV4IDhjNThkMjgyZWVlLi5lOWJjYTM1 NTRiMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbAor KysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsCkBAIC0yNCwxNCArMjQs MTcgQEAgbXkgJHJlc3VsdDsKIAogc3ViIHRlc3RfZXhjZXB0X3Jvb3RfcGFydGl0aW9uCiB7Ci0J bXkgKCRwdWJ2aWFyb290KSA9IEBfOworCW15ICgkcHVidmlhcm9vdCwgJHB1YnNxbCkgPSBAXzsK KwkkcHVic3FsIC8vPQorCSAgIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQgRk9SIEFM TCBUQUJMRVMgRVhDRVBUIChUQUJMRSByb290MSkiOworCSRwdWJzcWwgLj0gIiBXSVRIIChwdWJs aXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9ICRwdWJ2aWFyb290KSI7CiAKIAkjIElmIHRoZSByb290 IHBhcnRpdGlvbmVkIHRhYmxlIGlzIGluIHRoZSBFWENFUFQgY2xhdXNlLCBhbGwgaXRzCiAJIyBw YXJ0aXRpb25zIGFyZSBleGNsdWRlZCBmcm9tIHB1YmxpY2F0aW9uLCByZWdhcmRsZXNzIG9mIHRo ZQogCSMgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Qgc2V0dGluZy4KIAkkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKIAkJJ3Bvc3RncmVzJywgcXEoCi0JCUNSRUFURSBQVUJMSUNBVElPTiB0 YXBfcHViX3BhcnQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMRSByb290MSkgV0lUSCAocHVi bGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSAkcHVidmlhcm9vdCk7CisJCSRwdWJzcWw7CiAJCUlO U0VSVCBJTlRPIHJvb3QxIFZBTFVFUyAoMSksICgxMDEpOwogCSkpOwogCSRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLApAQCAtMjIzLDYgKzIyNiwyMDYgQEAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKAogdGVzdF9leGNlcHRfcm9vdF9wYXJ0aXRpb24oJ2ZhbHNlJyk7 CiB0ZXN0X2V4Y2VwdF9yb290X3BhcnRpdGlvbigndHJ1ZScpOwogCisjIFNhbWUgdmFsaWRhdGlv biB1c2luZyBUQUJMRVMgSU4gU0NIRU1BIGluc3RlYWQgb2YgRk9SIEFMTCBUQUJMRVMuCitteSAk c2NoZW1hX3B1YiA9CisgICJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0IEZPUiBUQUJM RVMgSU4gU0NIRU1BIHB1YmxpYyBFWENFUFQgKFRBQkxFIHB1YmxpYy5yb290MSkiOwordGVzdF9l eGNlcHRfcm9vdF9wYXJ0aXRpb24oJ2ZhbHNlJywgJHNjaGVtYV9wdWIpOwordGVzdF9leGNlcHRf cm9vdF9wYXJ0aXRpb24oJ3RydWUnLCAkc2NoZW1hX3B1Yik7CisKKyMgPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgRVhDRVBUIHRlc3QgY2FzZXMgZm9yIFRB QkxFUyBJTiBTQ0hFTUEKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKworIyBDcmVhdGUgYSBkZWRpY2F0ZWQgc2NoZW1hIHdpdGggdHdvIHRhYmxlczogb25l IHRvIGJlIHB1Ymxpc2hlZCBhbmQgb25lIHRvIGJlCisjIGV4Y2x1ZGVkLiAgQWxzbyBjcmVhdGUg aW5oZXJpdGVkIHRhYmxlcyB0byB2ZXJpZnkgT05MWSBzZW1hbnRpY3MuCiskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgU0NIRU1BIHNjaDE7CisJ Q1JFQVRFIFRBQkxFIHNjaDEudGFiX3B1Ymxpc2hlZCBBUyBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVz KDEsNSkgQVMgYTsKKwlDUkVBVEUgVEFCTEUgc2NoMS50YWJfZXhjbHVkZWQgQVMgU0VMRUNUIGdl bmVyYXRlX3NlcmllcygxLDUpIEFTIGE7CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFyZW50IChhIGlu dCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEuY2hpbGQgKGIgaW50KSBJTkhFUklUUyAoc2NoMS5wYXJl bnQpOworKSk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBx cSgKKwlDUkVBVEUgU0NIRU1BIHNjaDE7CisJQ1JFQVRFIFRBQkxFIHNjaDEudGFiX3B1Ymxpc2hl ZCAoYSBpbnQpOworCUNSRUFURSBUQUJMRSBzY2gxLnRhYl9leGNsdWRlZCAoYSBpbnQpOworCUNS RUFURSBUQUJMRSBzY2gxLnBhcmVudCAoYSBpbnQpOworCUNSRUFURSBUQUJMRSBzY2gxLmNoaWxk IChiIGludCkgSU5IRVJJVFMgKHNjaDEucGFyZW50KTsKKykpOworCisjIEJhc2ljIHRlc3Q6IGlu aXRpYWwgc3luYyByZXNwZWN0cyBFWENFUFQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gc2NoX3B1YiBGT1IgVEFCTEVTIElOIFND SEVNQSBzY2gxIEVYQ0VQVCAoVEFCTEUgc2NoMS50YWJfZXhjbHVkZWQpIgorKTsKKyRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHNj aF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiBzY2hfcHVi IgorKTsKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2Rl X3B1Ymxpc2hlciwgJ3NjaF9zdWInKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikgRlJPTSBzY2gxLnRhYl9w dWJsaXNoZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDUpLAorCSdUQUJMRVMgSU4gU0NIRU1BIEVYQ0VQ VDogaW5pdGlhbCBzeW5jIGNvcGllcyBpbmNsdWRlZCB0YWJsZScpOworJHJlc3VsdCA9CisgICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikg RlJPTSBzY2gxLnRhYl9leGNsdWRlZCIpOworaXMoJHJlc3VsdCwgcXEoMCksCisJJ1RBQkxFUyBJ TiBTQ0hFTUEgRVhDRVBUOiBpbml0aWFsIHN5bmMgc2tpcHMgZXhjbHVkZWQgdGFibGUnKTsKKwor IyBETUw6IG9ubHkgdGhlIGluY2x1ZGVkIHRhYmxlIHNob3VsZCBiZSByZXBsaWNhdGVkLgorJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJSU5TRVJUIElOVE8g c2NoMS50YWJfcHVibGlzaGVkIFZBTFVFUyAoNik7CisJSU5TRVJUIElOVE8gc2NoMS50YWJfZXhj bHVkZWQgVkFMVUVTICg2KTsKKykpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCdzY2hfc3ViJyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopIEZST00gc2NoMS50YWJfcHVibGlzaGVkIik7 CitpcygkcmVzdWx0LCBxcSg2KSwKKwknVEFCTEVTIElOIFNDSEVNQSBFWENFUFQ6IERNTCBvbiBp bmNsdWRlZCB0YWJsZSBpcyByZXBsaWNhdGVkJyk7CiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNjaDEu dGFiX2V4Y2x1ZGVkIik7CitpcygkcmVzdWx0LCBxcSgwKSwKKwknVEFCTEVTIElOIFNDSEVNQSBF WENFUFQ6IERNTCBvbiBleGNsdWRlZCB0YWJsZSBpcyBub3QgcmVwbGljYXRlZCcpOworCiskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHNj aF9zdWInKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFBV QkxJQ0FUSU9OIHNjaF9wdWInKTsKKworIyBJbmhlcml0ZWQgdGFibGVzOiBleGNsdWRpbmcgdGhl IHBhcmVudCAod2l0aG91dCBPTkxZKSBhbHNvIGV4Y2x1ZGVzIHRoZSBjaGlsZC4KKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElPTiBzY2hf cHViIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHNjaDEgRVhDRVBUIChUQUJMRSBzY2gxLnBhcmVudCki CispOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBT VUJTQ1JJUFRJT04gc2NoX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJ Q0FUSU9OIHNjaF9wdWIiCispOworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0 aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAnc2NoX3N1YicpOworCiskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyBzY2gxLmNoaWxkIFZBTFVFUyAo Z2VuZXJhdGVfc2VyaWVzKDEsNSksIGdlbmVyYXRlX3NlcmllcygxLDUpKSIKKyk7Ciskbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3NjaF9zdWInKTsKKworJHJlc3VsdCA9CisgICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZS T00gc2NoMS5jaGlsZCIpOworaXMoJHJlc3VsdCwgcXEoMCksCisJJ1RBQkxFUyBJTiBTQ0hFTUEg RVhDRVBUOiBleGNsdWRpbmcgcGFyZW50ICh3aXRob3V0IE9OTFkpIGFsc28gZXhjbHVkZXMgY2hp bGQnCispOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1Ag U1VCU0NSSVBUSU9OIHNjaF9zdWInKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHNjaF9wdWInKTsKKworIyBUZXN0IHRoYXQgRVhDRVBU IChUQUJMRSBPTkxZIHBhcmVudCkgZXhjbHVkZXMgb25seSB0aGUgcGFyZW50IGl0c2VsZiwgbm90 IGl0cworIyBjaGlsZC4gIFRydW5jYXRlIGNoaWxkIGZpcnN0IHNvIHJvd3MgZnJvbSB0aGUgcHJl dmlvdXMgdGVzdCBhcmUgbm90IGNvcGllZCBieQorIyB0aGUgaW5pdGlhbCB0YWJsZSBzeW5jIG9m IHRoZSBuZXh0IHN1YnNjcmlwdGlvbi4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICdUUlVOQ0FURSBzY2gxLmNoaWxkJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgJ1RSVU5DQVRFIHNjaDEuY2hpbGQnKTsKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElPTiBzY2hfcHViIEZPUiBU QUJMRVMgSU4gU0NIRU1BIHNjaDEgRVhDRVBUIChUQUJMRSBPTkxZIHNjaDEucGFyZW50KSIKKyk7 Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlND UklQVElPTiBzY2hfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJ T04gc2NoX3B1YiIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25f c3luYygkbm9kZV9wdWJsaXNoZXIsICdzY2hfc3ViJyk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHNjaDEuY2hpbGQgVkFMVUVTIChnZW5l cmF0ZV9zZXJpZXMoMSw1KSwgZ2VuZXJhdGVfc2VyaWVzKDEsNSkpIgorKTsKKyRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc2NoX3N1YicpOworCiskcmVzdWx0ID0KKyAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBz Y2gxLmNoaWxkIik7CitpcygkcmVzdWx0LCBxcSg1KSwKKwknVEFCTEVTIElOIFNDSEVNQSBFWENF UFQ6IE9OTFkgcGFyZW50IGluIEVYQ0VQVCBkb2VzIG5vdCBleGNsdWRlIGNoaWxkJyk7CisKKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJT04g c2NoX3N1YicpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1Ag UFVCTElDQVRJT04gc2NoX3B1YicpOworCisjIENsZWFudXAgc2NoZW1hIHRhYmxlcyBiZWZvcmUg dGhlIG11bHRpLXB1YmxpY2F0aW9uIHNlY3Rpb24uCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAnRFJPUCBTQ0hFTUEgc2NoMSBDQVNDQURFJyk7Ciskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU0NIRU1BIHNjaDEgQ0FTQ0FERScpOwor CisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEVYQ0VQ VCB0ZXN0IGNhc2VzIGZvciBUQUJMRVMgSU4gU0NIRU1BIHdpdGggYSBjcm9zcy1zY2hlbWEgcGFy dGl0aW9uCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisK KyMgQSBwYXJ0aXRpb24gY2FuIGxpdmUgaW4gYSBkaWZmZXJlbnQgc2NoZW1hIHRoYW4gaXRzIHBh cnRpdGlvbmVkIHJvb3QuICBJZgorIyB0aGUgcm9vdCBpcyBleGNsdWRlZCB2aWEgRVhDRVBUIHVu ZGVyIGl0cyBvd24gc2NoZW1hJ3MgY2xhdXNlLCB0aGUKKyMgZXhjbHVzaW9uIG11c3QgY2FzY2Fk ZSB0byBhbGwgaXRzIHBhcnRpdGlvbnMsIGV2ZW4gd2hlbiB0aGUgcGFydGl0aW9uJ3MKKyMgb3du IHNjaGVtYSBpcyBzZXBhcmF0ZWx5LCBmdWxseSBpbmNsdWRlZCAobm8gRVhDRVBUKSBpbiB0aGUg c2FtZQorIyBwdWJsaWNhdGlvbi4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0 Z3JlcycsIHFxKAorCUNSRUFURSBTQ0hFTUEgY3NjaDE7CisJQ1JFQVRFIFNDSEVNQSBjc2NoMjsK KwlDUkVBVEUgVEFCTEUgY3NjaDEuY3Jvb3QoYSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRShhKTsK KwlDUkVBVEUgVEFCTEUgY3NjaDIuY3BhcnQxIFBBUlRJVElPTiBPRiBjc2NoMS5jcm9vdCBGT1Ig VkFMVUVTIEZST00gKDApIFRPICgxMDApOworCUlOU0VSVCBJTlRPIGNzY2gxLmNyb290IFZBTFVF UyAoZ2VuZXJhdGVfc2VyaWVzKDEsNSkpOworKSk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgU0NIRU1BIGNzY2gxOworCUNSRUFURSBT Q0hFTUEgY3NjaDI7CisJQ1JFQVRFIFRBQkxFIGNzY2gxLmNyb290KGEgaW50KTsKKwlDUkVBVEUg VEFCTEUgY3NjaDIuY3BhcnQxKGEgaW50KTsKKykpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gY3Jvc3Nfc2NoX3B1YiBGT1Ig VEFCTEVTIElOIFNDSEVNQSBjc2NoMSBFWENFUFQgKFRBQkxFIGNzY2gxLmNyb290KSwgVEFCTEVT IElOIFNDSEVNQSBjc2NoMiIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiBjcm9zc19zY2hfc3ViIENPTk5FQ1RJT04gJyRw dWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gY3Jvc3Nfc2NoX3B1YiIKKyk7Ciskbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICdj cm9zc19zY2hfc3ViJyk7CisKKyMgQmFzZWxpbmU6IHRoZSByb290IGl0c2VsZiwgcHJlLXBvcHVs YXRlZCB3aXRoIHJvd3MgYmVmb3JlIHRoZSBzdWJzY3JpcHRpb24KKyMgd2FzIGNyZWF0ZWQsIGlz IGV4Y2x1ZGVkIGJ5IGl0cyBvd24gc2NoZW1hJ3MgRVhDRVBUIGNsYXVzZSAtLSBpbml0aWFsIHN5 bmMKKyMgbXVzdCBub3QgaGF2ZSBjb3BpZWQgaXQuCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBjc2NoMS5j cm9vdCIpOworaXMoJHJlc3VsdCwgcXEoMCksCisJJ1RBQkxFUyBJTiBTQ0hFTUEgRVhDRVBUOiBj cm9zcy1zY2hlbWEgcGFydGl0aW9uIHJvb3QgaXMgZXhjbHVkZWQgYnkgaW5pdGlhbCBzeW5jJwor KTsKKworIyBSZWdyZXNzaW9uIGNhc2U6IHRoZSBwYXJ0aXRpb24ncyBvd24gc2NoZW1hIChjc2No MikgaXMgc2VwYXJhdGVseSwgZnVsbHkKKyMgaW5jbHVkZWQgd2l0aCBubyBFWENFUFQsIGJ1dCB0 aGUgcm9vdCdzIGV4Y2x1c2lvbiBtdXN0IHN0aWxsIGNhc2NhZGUgdG8gaXQKKyMgLS0gaW5pdGlh bCBzeW5jIG11c3Qgbm90IGhhdmUgY29waWVkIHRoZSBwcmUtZXhpc3Rpbmcgcm93cyByb3V0ZWQg aW50byB0aGlzCisjIHBhcnRpdGlvbiB2aWEgdGhlIHJvb3QuCiskcmVzdWx0ID0KKyAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBj c2NoMi5jcGFydDEiKTsKK2lzKCRyZXN1bHQsIHFxKDApLAorCSdUQUJMRVMgSU4gU0NIRU1BIEVY Q0VQVDogY3Jvc3Mtc2NoZW1hIHBhcnRpdGlvbiBpcyBleGNsdWRlZCBieSBpbml0aWFsIHN5bmMg dmlhIGNhc2NhZGluZyByb290IGV4Y2x1c2lvbicKKyk7CisKKyMgSW5zZXJ0IGRpc3RpbmN0LCBp ZGVudGlmaWFibGUgZGF0YSBkaXJlY3RseSBpbnRvIHRoZSBwYXJ0aXRpb24gYW5kIHZlcmlmeQor IyBpdCBpcyBub3QgcmVwbGljYXRlZCBlaXRoZXIuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyBjc2NoMi5jcGFydDEgVkFMVUVTIChnZW5lcmF0 ZV9zZXJpZXMoMSw1KSkiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnY3Jv c3Nfc2NoX3N1YicpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBjc2NoMS5jcm9vdCIpOworaXMoJHJl c3VsdCwgcXEoMCksCisJJ1RBQkxFUyBJTiBTQ0hFTUEgRVhDRVBUOiBjcm9zcy1zY2hlbWEgcGFy dGl0aW9uIHJvb3QgcmVtYWlucyBleGNsdWRlZCBhZnRlciBETUwnCispOworJHJlc3VsdCA9Cisg ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCop IEZST00gY3NjaDIuY3BhcnQxIik7CitpcygkcmVzdWx0LCBxcSgwKSwKKwknVEFCTEVTIElOIFND SEVNQSBFWENFUFQ6IGNyb3NzLXNjaGVtYSBwYXJ0aXRpb24gcmVtYWlucyBleGNsdWRlZCBhZnRl ciBETUwgdmlhIGNhc2NhZGluZyByb290IGV4Y2x1c2lvbicKKyk7CisKKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJT04gY3Jvc3Nfc2NoX3N1 YicpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgUFVCTElD QVRJT04gY3Jvc3Nfc2NoX3B1YicpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgJ0RST1AgU0NIRU1BIGNzY2gxLCBjc2NoMiBDQVNDQURFJyk7Ciskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU0NIRU1BIGNzY2gxLCBjc2NoMiBDQVND QURFJyk7CisKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K ICMgVGVzdCB3aGVuIGEgc3Vic2NyaXB0aW9uIGlzIHN1YnNjcmliaW5nIHRvIG11bHRpcGxlIHB1 YmxpY2F0aW9ucwogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQpAQCAtMjU0LDYgKzQ1Nyw3IEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCURST1Ag UFVCTElDQVRJT04gdGFwX3B1YjI7CiAJVFJVTkNBVEUgdGFiMTsKICkpOworJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNVQlNDUklQVElPTiB0YXBfc3ViJyk7 CiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoVFJVTkNBVEUgdGFi MSkpOwogCiAjIE9LIHdoZW4gYSB0YWJsZSBpcyBleGNsdWRlZCBieSBwdWIxIEVYQ0VQVCBjbGF1 c2UsIGJ1dCBpdCBpcyBpbmNsdWRlZCBieSBwdWIyCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUp Cgo= --000000000000ce52370656401dad Content-Type: application/octet-stream; name="v20-0002-Restrict-conflicting-EXCEPT-lists-in-multi-schem.patch" Content-Disposition: attachment; filename="v20-0002-Restrict-conflicting-EXCEPT-lists-in-multi-schem.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mretxbg71 RnJvbSAzNDExMmRkMjNlNjJmYWU4MmZhZDllOTdiYTY3N2NjMmM1YWI2ZGU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBXZWQsIDggSnVsIDIwMjYgMTU6MDc6MjIgKzA1MzAKU3ViamVjdDogW1BBVENIIHYy MCAyLzVdIFJlc3RyaWN0IGNvbmZsaWN0aW5nIEVYQ0VQVCBsaXN0cyBpbiBtdWx0aS1zY2hlbWEK IHB1YmxpY2F0aW9ucwoKQWRkIFByb2Nlc3NTY2hlbWFFeGNlcHRUYWJsZXMoKSB0byBxdWFsaWZ5 IGVhY2ggbWVudGlvbidzIEVYQ0VQVAplbnRyaWVzLCBidWlsZCBhIHNvcnRlZCBzaWduYXR1cmUg cGVyIHNjaGVtYSBPSUQsIGFuZCBjb21wYXJlIGl0CmFnYWluc3QgYW55IHByaW9yIG1lbnRpb24g b2YgdGhlIHNhbWUgc2NoZW1hIGluIHRoZSBzYW1lIHN0YXRlbWVudCwKZXJyb3Jpbmcgb24gYSBt aXNtYXRjaC4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyAgICB8 IDEwMyArKysrKysrKysrKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAg ICAgICAgICAgICAgICB8ICAzNiArLS0tLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w dWJsaWNhdGlvbi5vdXQgfCAgMzggKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1Ymxp Y2F0aW9uLnNxbCAgICAgIHwgIDMxICsrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMTQ1IGluc2Vy dGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3B1YmxpY2F0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25j bWRzLmMKaW5kZXggOWE5MjJhNmRjYzMuLjBjM2M5MDVmN2VhIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9wdWJsaWNhdGlvbmNtZHMuYwpAQCAtNzMsNiArNzMsMTEgQEAgc3RhdGljIHZvaWQgUHVibGlj YXRpb25BZGRTY2hlbWFzKE9pZCBwdWJpZCwgTGlzdCAqc2NoZW1hcywgYm9vbCBpZl9ub3RfZXhp c3RzLAogc3RhdGljIHZvaWQgUHVibGljYXRpb25Ecm9wU2NoZW1hcyhPaWQgcHViaWQsIExpc3Qg KnNjaGVtYXMsIGJvb2wgbWlzc2luZ19vayk7CiBzdGF0aWMgY2hhciBkZWZHZXRHZW5lcmF0ZWRD b2xzT3B0aW9uKERlZkVsZW0gKmRlZik7CiBzdGF0aWMgdm9pZCBDaGVja0V4Y2VwdE5vdEluVGFi bGVMaXN0KExpc3QgKmV4Y2VwdF9yZWxzLCBMaXN0ICpleHBsaWNpdHJlbGlkcyk7CitzdGF0aWMg dm9pZCBQcm9jZXNzU2NoZW1hRXhjZXB0VGFibGVzKE9pZCBzY2hlbWFpZCwgY29uc3QgY2hhciAq c2NoZW1hX25hbWUsCisJCQkJCQkJCQkgIExpc3QgKmV4Y2VwdF90YWJsZXMsIFBhcnNlU3RhdGUg KnBzdGF0ZSwKKwkJCQkJCQkJCSAgYm9vbCBzY2hlbWFfcmVwZWF0ZWQsCisJCQkJCQkJCQkgIExp c3QgKipzY2hlbWFzX3dpdGhfZXhjZXB0LAorCQkJCQkJCQkJICBMaXN0ICoqZXhjZXB0X3B1YnRh Ymxlcyk7CiAKIAogc3RhdGljIHZvaWQKQEAgLTE3Nyw2ICsxODIsNTcgQEAgcGFyc2VfcHVibGlj YXRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJfQogfQogCisvKgorICogUXVhbGlm eSB1bnF1YWxpZmllZCBFWENFUFQgdGFibGUgbmFtZXMgd2l0aCBzY2hlbWFfbmFtZSwgcmVqZWN0 IGVudHJpZXMKKyAqIGV4cGxpY2l0bHkgcXVhbGlmaWVkIHdpdGggYSBkaWZmZXJlbnQgc2NoZW1h LCBhbmQgYXBwZW5kIHRoZSAobm93CisgKiBxdWFsaWZpZWQpIHRhYmxlcyB0byAqZXhjZXB0X3B1 YnRhYmxlcy4KKyAqCisgKiBBbHNvIHJlamVjdHMgYSByZXBlYXRlZCBtZW50aW9uIG9mIHRoZSBz YW1lIHNjaGVtYSBpbiB0aGUgc2FtZSBUQUJMRVMgSU4KKyAqIFNDSEVNQSBsaXN0IGlmIGVpdGhl ciBtZW50aW9uIHNwZWNpZmllcyBhIG5vbi1lbXB0eSBFWENFUFQgbGlzdCwgd2l0aG91dAorICog Y2hlY2tpbmcgd2hldGhlciB0aGUgdHdvIEVYQ0VQVCBsaXN0cyBhY3R1YWxseSBuYW1lIHRoZSBz YW1lIHRhYmxlcy4gVGhpcworICogbWlycm9ycyBPcGVuVGFibGVMaXN0KCkncyBoYW5kbGluZyBv ZiByZXBlYXRlZCB0YWJsZXMgd2l0aCBjb2x1bW4gbGlzdHMKKyAqIChlLmcuICJGT1IgVEFCTEUg dDEoYSksIHQxKGEpIiBpcyByZWplY3RlZCBldmVuIHRob3VnaCB0aGUgbGlzdHMgbWF0Y2gpOgor ICogdHdvIG1lbnRpb25zIG9mIHRoZSBzYW1lIHNjaGVtYSB3b3VsZG4ndCBoYXZlIGEgd2VsbC1k ZWZpbmVkIHNpbmdsZQorICogRVhDRVBUIGxpc3QgdG8gZW5mb3JjZSwgc28gaXQncyByZWplY3Rl ZCBhcyBjb25mbGljdGluZyBvciByZWR1bmRhbnQKKyAqIHJhdGhlciB0aGFuIHNpbGVudGx5IHVu aW9uZWQgb3IgY29tcGFyZWQgZm9yIGVxdWl2YWxlbmNlLgorICogKnNjaGVtYXNfd2l0aF9leGNl cHQgYWNjdW11bGF0ZXMgdGhlIE9JRHMgb2Ygc2NoZW1hcyBhbHJlYWR5IHNlZW4gd2l0aCBhCisg KiBub24tZW1wdHkgRVhDRVBUIGxpc3QgaW4gdGhpcyBzdGF0ZW1lbnQuCisgKi8KK3N0YXRpYyB2 b2lkCitQcm9jZXNzU2NoZW1hRXhjZXB0VGFibGVzKE9pZCBzY2hlbWFpZCwgY29uc3QgY2hhciAq c2NoZW1hX25hbWUsCisJCQkJCQkgIExpc3QgKmV4Y2VwdF90YWJsZXMsIFBhcnNlU3RhdGUgKnBz dGF0ZSwKKwkJCQkJCSAgYm9vbCBzY2hlbWFfcmVwZWF0ZWQsIExpc3QgKipzY2hlbWFzX3dpdGhf ZXhjZXB0LAorCQkJCQkJICBMaXN0ICoqZXhjZXB0X3B1YnRhYmxlcykKK3sKKwlpZiAoc2NoZW1h X3JlcGVhdGVkICYmCisJCShleGNlcHRfdGFibGVzICE9IE5JTCB8fCBsaXN0X21lbWJlcl9vaWQo KnNjaGVtYXNfd2l0aF9leGNlcHQsIHNjaGVtYWlkKSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ ZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9PQkpFQ1QpLAorCQkJCWVycm1zZygiY29uZmxpY3Rp bmcgb3IgcmVkdW5kYW50IEVYQ0VQVCBsaXN0cyBmb3Igc2NoZW1hIFwiJXNcIiIsCisJCQkJCSAg IHNjaGVtYV9uYW1lKSk7CisKKwlpZiAoZXhjZXB0X3RhYmxlcyAhPSBOSUwpCisJCSpzY2hlbWFz X3dpdGhfZXhjZXB0ID0gbGFwcGVuZF9vaWQoKnNjaGVtYXNfd2l0aF9leGNlcHQsIHNjaGVtYWlk KTsKKworCWZvcmVhY2hfcHRyKFB1YmxpY2F0aW9uT2JqU3BlYywgZW9iaiwgZXhjZXB0X3RhYmxl cykKKwl7CisJCWNvbnN0IGNoYXIgKmVvYmpfc2NoZW1hbmFtZSA9IGVvYmotPnB1YnRhYmxlLT5y ZWxhdGlvbi0+c2NoZW1hbmFtZTsKKwkJY29uc3QgY2hhciAqZW9ial9yZWxuYW1lID0gZW9iai0+ cHVidGFibGUtPnJlbGF0aW9uLT5yZWxuYW1lOworCisJCWlmIChlb2JqX3NjaGVtYW5hbWUgPT0g TlVMTCkKKwkJCWVvYmotPnB1YnRhYmxlLT5yZWxhdGlvbi0+c2NoZW1hbmFtZSA9IHBzdHJkdXAo c2NoZW1hX25hbWUpOworCQllbHNlIGlmIChzdHJjbXAoZW9ial9zY2hlbWFuYW1lLCBzY2hlbWFf bmFtZSkgIT0gMCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZB TElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJZXJybXNnKCJ0YWJsZSBcIiVzXCIgaW4gRVhD RVBUIGNsYXVzZSBkb2VzIG5vdCBiZWxvbmcgdG8gc2NoZW1hIFwiJXNcIiIsCisJCQkJCQkgICBx dW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihlb2JqX3NjaGVtYW5hbWUsIGVvYmpfcmVsbmFtZSks CisJCQkJCQkgICBzY2hlbWFfbmFtZSksCisJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUs IGVvYmotPmxvY2F0aW9uKSk7CisKKwkJKmV4Y2VwdF9wdWJ0YWJsZXMgPSBsYXBwZW5kKCpleGNl cHRfcHVidGFibGVzLCBlb2JqLT5wdWJ0YWJsZSk7CisJfQorfQorCiAvKgogICogQ29udmVydCB0 aGUgUHVibGljYXRpb25PYmpTcGVjVHlwZSBsaXN0IGludG8gc2NoZW1hIG9pZCBsaXN0IGFuZAog ICogUHVibGljYXRpb25UYWJsZSBsaXN0LgpAQCAtMTg3LDYgKzI0Myw3IEBAIE9iamVjdHNJblB1 YmxpY2F0aW9uVG9PaWRzKExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgUGFyc2VTdGF0ZSAqcHN0YXRl LAogewogCUxpc3RDZWxsICAgKmNlbGw7CiAJUHVibGljYXRpb25PYmpTcGVjICpwdWJvYmo7CisJ TGlzdAkgICAqc2NoZW1hc193aXRoX2V4Y2VwdCA9IE5JTDsKIAogCWlmICghcHVib2Jqc3BlY19s aXN0KQogCQlyZXR1cm47CkBAIC0xOTQsNyArMjUxLDkgQEAgT2JqZWN0c0luUHVibGljYXRpb25U b09pZHMoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBQYXJzZVN0YXRlICpwc3RhdGUsCiAJZm9yZWFj aChjZWxsLCBwdWJvYmpzcGVjX2xpc3QpCiAJewogCQlPaWQJCQlzY2hlbWFpZDsKKwkJY2hhcgkg ICAqc2NoZW1hX25hbWU7CiAJCUxpc3QJICAgKnNlYXJjaF9wYXRoOworCQlib29sCQlzY2hlbWFf cmVwZWF0ZWQ7CiAKIAkJcHVib2JqID0gKFB1YmxpY2F0aW9uT2JqU3BlYyAqKSBsZmlyc3QoY2Vs bCk7CiAKQEAgLTIxMCw5ICsyNjksMTYgQEAgT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoTGlz dCAqcHVib2Jqc3BlY19saXN0LCBQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJYnJlYWs7CiAJCQlj YXNlIFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9TQ0hFTUE6CiAJCQkJc2NoZW1haWQgPSBnZXRf bmFtZXNwYWNlX29pZChwdWJvYmotPm5hbWUsIGZhbHNlKTsKKwkJCQlzY2hlbWFfbmFtZSA9IHB1 Ym9iai0+bmFtZTsKKwkJCQlzY2hlbWFfcmVwZWF0ZWQgPSBsaXN0X21lbWJlcl9vaWQoKnNjaGVt YXMsIHNjaGVtYWlkKTsKIAogCQkJCS8qIEZpbHRlciBvdXQgZHVwbGljYXRlcyBpZiB1c2VyIHNw ZWNpZmllcyAic2NoMSwgc2NoMSIgKi8KIAkJCQkqc2NoZW1hcyA9IGxpc3RfYXBwZW5kX3VuaXF1 ZV9vaWQoKnNjaGVtYXMsIHNjaGVtYWlkKTsKKworCQkJCVByb2Nlc3NTY2hlbWFFeGNlcHRUYWJs ZXMoc2NoZW1haWQsIHNjaGVtYV9uYW1lLAorCQkJCQkJCQkJCSAgcHVib2JqLT5leGNlcHRfdGFi bGVzLCBwc3RhdGUsCisJCQkJCQkJCQkJICBzY2hlbWFfcmVwZWF0ZWQsICZzY2hlbWFzX3dpdGhf ZXhjZXB0LAorCQkJCQkJCQkJCSAgZXhjZXB0X3B1YnRhYmxlcyk7CiAJCQkJYnJlYWs7CiAJCQlj YXNlIFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9DVVJfU0NIRU1BOgogCQkJCXNlYXJjaF9wYXRo ID0gZmV0Y2hfc2VhcmNoX3BhdGgoZmFsc2UpOwpAQCAtMjIzLDQxICsyODksMTYgQEAgT2JqZWN0 c0luUHVibGljYXRpb25Ub09pZHMoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBQYXJzZVN0YXRlICpw c3RhdGUsCiAKIAkJCQlzY2hlbWFpZCA9IGxpbml0aWFsX29pZChzZWFyY2hfcGF0aCk7CiAJCQkJ bGlzdF9mcmVlKHNlYXJjaF9wYXRoKTsKKwkJCQlzY2hlbWFfbmFtZSA9IGdldF9uYW1lc3BhY2Vf bmFtZShzY2hlbWFpZCk7CisJCQkJc2NoZW1hX3JlcGVhdGVkID0gbGlzdF9tZW1iZXJfb2lkKCpz Y2hlbWFzLCBzY2hlbWFpZCk7CiAKIAkJCQkvKiBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgaWYgdXNl ciBzcGVjaWZpZXMgInNjaDEsIHNjaDEiICovCiAJCQkJKnNjaGVtYXMgPSBsaXN0X2FwcGVuZF91 bmlxdWVfb2lkKCpzY2hlbWFzLCBzY2hlbWFpZCk7CiAKLQkJCQkvKgotCQkJCSAqIFF1YWxpZnkg dW5xdWFsaWZpZWQgRVhDRVBUIHRhYmxlIG5hbWVzIHdpdGggdGhlIHJlc29sdmVkCi0JCQkJICog Y3VycmVudCBzY2hlbWEgYW5kIHJlamVjdCBhbnkgZXhwbGljaXRseSBjcm9zcy1zY2hlbWEKLQkJ CQkgKiBlbnRyaWVzLiAgVGhpcyBtaXJyb3JzIHRoZSBwYXJzZS10aW1lIGhhbmRsaW5nIGRvbmUg Zm9yCi0JCQkJICogVEFCTEVTX0lOX1NDSEVNQSBpbiBwcmVwcm9jZXNzX3B1Ym9ial9saXN0KCks IGRlZmVycmVkIGhlcmUKLQkJCQkgKiBiZWNhdXNlIENVUlJFTlRfU0NIRU1BIGlzIG5vdCBrbm93 biB1bnRpbCBleGVjdXRpb24gdGltZS4KLQkJCQkgKi8KLQkJCQlpZiAocHVib2JqLT5leGNlcHRf dGFibGVzICE9IE5JTCkKLQkJCQl7Ci0JCQkJCWNoYXIJICAgKmN1cl9zY2hlbWFfbmFtZSA9IGdl dF9uYW1lc3BhY2VfbmFtZShzY2hlbWFpZCk7Ci0KLQkJCQkJZm9yZWFjaF9wdHIoUHVibGljYXRp b25PYmpTcGVjLCBlb2JqLCBwdWJvYmotPmV4Y2VwdF90YWJsZXMpCi0JCQkJCXsKLQkJCQkJCWNv bnN0IGNoYXIgKmVvYmpfc2NoZW1hbmFtZSA9Ci0JCQkJCQkJZW9iai0+cHVidGFibGUtPnJlbGF0 aW9uLT5zY2hlbWFuYW1lOwotCQkJCQkJY29uc3QgY2hhciAqZW9ial9yZWxuYW1lID0KLQkJCQkJ CQllb2JqLT5wdWJ0YWJsZS0+cmVsYXRpb24tPnJlbG5hbWU7Ci0KLQkJCQkJCWlmIChlb2JqX3Nj aGVtYW5hbWUgPT0gTlVMTCkKLQkJCQkJCQllb2JqLT5wdWJ0YWJsZS0+cmVsYXRpb24tPnNjaGVt YW5hbWUgPSBjdXJfc2NoZW1hX25hbWU7Ci0JCQkJCQllbHNlIGlmIChzdHJjbXAoZW9ial9zY2hl bWFuYW1lLCBjdXJfc2NoZW1hX25hbWUpICE9IDApCi0JCQkJCQkJZXJlcG9ydChFUlJPUiwKLQkJ CQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKLQkJCQkJ CQkJCWVycm1zZygidGFibGUgXCIlc1wiIGluIEVYQ0VQVCBjbGF1c2UgZG9lcyBub3QgYmVsb25n IHRvIHNjaGVtYSBcIiVzXCIiLAotCQkJCQkJCQkJCSAgIHF1b3RlX3F1YWxpZmllZF9pZGVudGlm aWVyKGVvYmpfc2NoZW1hbmFtZSwgZW9ial9yZWxuYW1lKSwKLQkJCQkJCQkJCQkgICBjdXJfc2No ZW1hX25hbWUpKTsKLQotCQkJCQkJKmV4Y2VwdF9wdWJ0YWJsZXMgPSBsYXBwZW5kKCpleGNlcHRf cHVidGFibGVzLAotCQkJCQkJCQkJCQkJCWVvYmotPnB1YnRhYmxlKTsKLQkJCQkJfQotCQkJCX0K KwkJCQlQcm9jZXNzU2NoZW1hRXhjZXB0VGFibGVzKHNjaGVtYWlkLCBzY2hlbWFfbmFtZSwKKwkJ CQkJCQkJCQkgIHB1Ym9iai0+ZXhjZXB0X3RhYmxlcywgcHN0YXRlLAorCQkJCQkJCQkJCSAgc2No ZW1hX3JlcGVhdGVkLCAmc2NoZW1hc193aXRoX2V4Y2VwdCwKKwkJCQkJCQkJCQkgIGV4Y2VwdF9w dWJ0YWJsZXMpOwogCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQkvKiBzaG91bGRuJ3QgaGFw cGVuICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueQppbmRleCAyYThmOTk5ZDU4Ni4uNDM3NDE2ZjdjOTYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueQpAQCAtMjA4NzgsOCArMjA4NzgsMTAgQEAgcHJlcHJvY2Vzc19wdWJfYWxsX29ianR5cGVf bGlzdChMaXN0ICphbGxfb2JqZWN0c19saXN0LCBMaXN0ICoqcHVib2JqZWN0cywKIC8qCiAgKiBQ cm9jZXNzIHB1Ym9ianNwZWNfbGlzdCB0byBjaGVjayBmb3IgZXJyb3JzIGluIGFueSBvZiB0aGUg b2JqZWN0cyBhbmQKICAqIGNvbnZlcnQgUFVCTElDQVRJT05PQkpfQ09OVElOVUFUSU9OIGludG8g YXBwcm9wcmlhdGUgUHVibGljYXRpb25PYmpTcGVjVHlwZS4KLSAqIEFsc28gZmxhdHRlbnMgZXhj ZXB0X3RhYmxlcyBmcm9tIFRBQkxFUyBJTiBTQ0hFTUEgbm9kZXMgaW50byB0aGUgbGlzdCBzbwot ICogdGhhdCBPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcygpIHNlZXMgdGhlbSBhcyB0b3AtbGV2 ZWwgRVhDRVBUX1RBQkxFIGVudHJpZXMuCisgKiBUaGUgZXhjZXB0X3RhYmxlcyBhdHRhY2hlZCB0 byBUQUJMRVMgSU4gU0NIRU1BIG5vZGVzIGFyZSBsZWZ0IGluIHBsYWNlIGhlcmU7CisgKiBPYmpl Y3RzSW5QdWJsaWNhdGlvblRvT2lkcygpIHF1YWxpZmllcyB0aGVpciBuYW1lcywgdmFsaWRhdGVz IHNjaGVtYQorICogbWVtYmVyc2hpcCwgYW5kIG1lcmdlcyB0aGUgcXVhbGlmaWVkIHRhYmxlcyBp bnRvIGl0cyBleGNlcHRfcHVidGFibGVzCisgKiBvdXRwdXQgbGlzdCBvbmNlIHRoZSBzY2hlbWEg T0lEIGlzIGtub3duLgogICovCiBzdGF0aWMgdm9pZAogcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChM aXN0ICpwdWJvYmpzcGVjX2xpc3QsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQpAQCAtMjA5NjMs MzYgKzIwOTY1LDYgQEAgcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChMaXN0ICpwdWJvYmpzcGVjX2xp c3QsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRB WF9FUlJPUiksCiAJCQkJCQllcnJtc2coImludmFsaWQgc2NoZW1hIG5hbWUiKSwKIAkJCQkJCXBh cnNlcl9lcnJwb3NpdGlvbihwdWJvYmotPmxvY2F0aW9uKSk7Ci0KLQkJCS8qCi0JCQkgKiBGb3Ig VEFCTEVTX0lOX1NDSEVNQSwgcXVhbGlmeSB1bnF1YWxpZmllZCBFWENFUFQgdGFibGUgbmFtZXMK LQkJCSAqIHdpdGggdGhlIHBhcmVudCBzY2hlbWEgYW5kIHJlamVjdCBjcm9zcy1zY2hlbWEgZW50 cmllcyBhdCBwYXJzZQotCQkJICogdGltZSwgdGhlbiBmbGF0dGVuIGludG8gdGhlIHRvcC1sZXZl bCBsaXN0LgotCQkJICoKLQkJCSAqIEZvciBUQUJMRVNfSU5fQ1VSX1NDSEVNQSB0aGUgc2NoZW1h IG5hbWUgaXMgbm90IHlldCBrbm93biwgc28KLQkJCSAqIHNraXAgYm90aCBzdGVwcyBoZXJlOyBP YmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcygpIHdpbGwKLQkJCSAqIHF1YWxpZnkgbmFtZXMgYW5k IHZhbGlkYXRlIHNjaGVtYSBtZW1iZXJzaGlwIGF0IGV4ZWN1dGlvbiB0aW1lLgotCQkJICovCi0J CQlpZiAocHVib2JqLT5wdWJvYmp0eXBlID09IFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9TQ0hF TUEpCi0JCQl7Ci0JCQkJZm9yZWFjaF9wdHIoUHVibGljYXRpb25PYmpTcGVjLCBlb2JqLCBwdWJv YmotPmV4Y2VwdF90YWJsZXMpCi0JCQkJewotCQkJCQljb25zdCBjaGFyICplb2JqX3NjaGVtYW5h bWUgPSBlb2JqLT5wdWJ0YWJsZS0+cmVsYXRpb24tPnNjaGVtYW5hbWU7Ci0JCQkJCWNvbnN0IGNo YXIgKmVvYmpfcmVsbmFtZSA9IGVvYmotPnB1YnRhYmxlLT5yZWxhdGlvbi0+cmVsbmFtZTsKLQot CQkJCQlpZiAoZW9ial9zY2hlbWFuYW1lID09IE5VTEwpCi0JCQkJCQllb2JqLT5wdWJ0YWJsZS0+ cmVsYXRpb24tPnNjaGVtYW5hbWUgPSBwdWJvYmotPm5hbWU7Ci0JCQkJCWVsc2UgaWYgKHN0cmNt cChlb2JqX3NjaGVtYW5hbWUsIHB1Ym9iai0+bmFtZSkgIT0gMCkKLQkJCQkJCWVyZXBvcnQoRVJS T1IsCi0JCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwK LQkJCQkJCQkJZXJybXNnKCJ0YWJsZSBcIiVzXCIgaW4gRVhDRVBUIGNsYXVzZSBkb2VzIG5vdCBi ZWxvbmcgdG8gc2NoZW1hIFwiJXNcIiIsCi0JCQkJCQkJCQkgICBxdW90ZV9xdWFsaWZpZWRfaWRl bnRpZmllcihlb2JqX3NjaGVtYW5hbWUsIGVvYmpfcmVsbmFtZSksCi0JCQkJCQkJCQkgICBwdWJv YmotPm5hbWUpLAotCQkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oZW9iai0+bG9jYXRpb24pKTsK LQkJCQl9Ci0JCQkJcHVib2Jqc3BlY19saXN0ID0gbGlzdF9jb25jYXQocHVib2Jqc3BlY19saXN0 LCBwdWJvYmotPmV4Y2VwdF90YWJsZXMpOwotCQkJCXB1Ym9iai0+ZXhjZXB0X3RhYmxlcyA9IE5J TDsKLQkJCX0KIAkJfQogCiAJCXByZXZvYmp0eXBlID0gcHVib2JqLT5wdWJvYmp0eXBlOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAppbmRleCAwNzI5ZTU0NjExNi4u NWZiN2RlMmYwN2YgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGlj YXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0 CkBAIC01NDMsNiArNTQzLDE3IEBAIEV4Y2VwdCB0YWJsZXM6CiAgICAgInB1Yl90ZXN0LnRlc3Rw dWJfdGJsX3MxIgogICAgICJwdWJsaWMudGVzdHB1Yl90YmwxIgogCistLSBmYWlsOiBzYW1lIHNj aGVtYSByZXBlYXRlZCB3aXRoIHNhbWUgRVhDRVBUIGxpc3RzCitDUkVBVEUgUFVCTElDQVRJT04g dGVzdHB1Yl9zY2hlbWFfZXhjZXB0X2NvbmZsaWN0CisgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEg cHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSksCisgICAgICAg ICAgICAgICAgICBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3Mx KTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IEVYQ0VQVCBsaXN0cyBmb3Igc2No ZW1hICJwdWJfdGVzdCIKKy0tIGZhaWw6IHNhbWUgc2NoZW1hIHJlcGVhdGVkIHdpdGggY29uZmxp Y3Rpbmcgb3Igbm8gRVhDRVBUIGxpc3RzCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hl bWFfZXhjZXB0X2NvbmZsaWN0MgorICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVY Q0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEpLAorICAgICAgICAgICAgICAgICAg cHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMiksCisgICAgICAg ICAgICAgICAgICBwdWJfdGVzdDsKK0VSUk9SOiAgY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IEVY Q0VQVCBsaXN0cyBmb3Igc2NoZW1hICJwdWJfdGVzdCIKIC0tIEFMVEVSIFRBQkxFIC4uLiBTRVQg U0NIRU1BIG9uIGEgdGFibGUgZXhjbHVkZWQgYnkgYSBzY2hlbWEgcHVibGljYXRpb246CiAtLSB0 aGUgc2NoZW1hLXNjb3BlZCBleGNsdXNpb24gaXMgbm8gbG9uZ2VyIG1lYW5pbmdmdWwgb25jZSB0 aGUgdGFibGUgbW92ZXMKIC0tIG91dCBvZiBpdHMgc2NoZW1hLCBzbyB0aGUgZXhjbHVzaW9uIGlz IGF1dG8tcmVtb3ZlZC4KQEAgLTIxMTEsNiArMjEyMiw4IEBAIFNFVCBzZWFyY2hfcGF0aCA9IHB1 Yl90ZXN0MTsKIC0tIHF1YWxpZmllZCBuYW1lIGZyb20gd3Jvbmcgc2NoZW1hIC0+IGVycm9yCiBD UkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9jdXJzY2hfZXhjZXB0IEZPUiBUQUJMRVMgSU4gU0NI RU1BIENVUlJFTlRfU0NIRU1BIEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QyLnRibDEpOwogRVJST1I6 ICB0YWJsZSAicHViX3Rlc3QyLnRibDEiIGluIEVYQ0VQVCBjbGF1c2UgZG9lcyBub3QgYmVsb25n IHRvIHNjaGVtYSAicHViX3Rlc3QxIgorTElORSAxOiAuLi5GT1IgVEFCTEVTIElOIFNDSEVNQSBD VVJSRU5UX1NDSEVNQSBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0Mi4uLi4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiAtLSB1bnF1 YWxpZmllZCBuYW1lIGltcGxpY2l0bHkgcXVhbGlmaWVkIHdpdGggY3VycmVudCBzY2hlbWEgKHB1 Yl90ZXN0MS50YmwpCiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUg UFVCTElDQVRJT04gdGVzdHB1Yl9jdXJzY2hfZXhjZXB0IEZPUiBUQUJMRVMgSU4gU0NIRU1BIENV UlJFTlRfU0NIRU1BIEVYQ0VQVCAoVEFCTEUgdGJsKTsKQEAgLTIxMjYsNiArMjEzOSwzMSBAQCBF eGNlcHQgdGFibGVzOgogICAgICJwdWJfdGVzdDEudGJsIgogCiBEUk9QIFBVQkxJQ0FUSU9OIHRl c3RwdWJfY3Vyc2NoX2V4Y2VwdDsKKy0tIHN1Y2NlZWRzOiBDVVJSRU5UX1NDSEVNQSBhbmQgcHVi X3Rlc3QxIChzYW1lIHNjaGVtYSkKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsK K0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2N1cnNjaF9uYW1lZF9zYW1lCisgICAgRk9SIFRB QkxFUyBJTiBTQ0hFTUEgQ1VSUkVOVF9TQ0hFTUEsIHB1Yl90ZXN0MTsKK1JFU0VUIGNsaWVudF9t aW5fbWVzc2FnZXM7CitcZFJwKyB0ZXN0cHViX2N1cnNjaF9uYW1lZF9zYW1lCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1Yl9jdXJzY2hfbmFtZWRfc2FtZQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERlc2NyaXB0aW9uIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8IAorVGFibGVzIGZyb20g c2NoZW1hczoKKyAgICAicHViX3Rlc3QxIgorCitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfY3Vy c2NoX25hbWVkX3NhbWU7CistLSBmYWlsOiBDVVJSRU5UX1NDSEVNQSBhbmQgcHViX3Rlc3QxIChz YW1lIHNjaGVtYSkgaGF2ZQorLS0gY29uZmxpY3RpbmcgRVhDRVBUIGxpc3RzCitDUkVBVEUgUFVC TElDQVRJT04gdGVzdHB1Yl9jdXJzY2hfbmFtZWRfY29uZmxpY3QKKyAgICBGT1IgVEFCTEVTIElO IFNDSEVNQSBDVVJSRU5UX1NDSEVNQSBFWENFUFQgKFRBQkxFIHRibCksCisgICAgICAgICAgICAg ICAgICBwdWJfdGVzdDEgRVhDRVBUIChUQUJMRSB0YmwxKTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcg b3IgcmVkdW5kYW50IEVYQ0VQVCBsaXN0cyBmb3Igc2NoZW1hICJwdWJfdGVzdDEiCistLSBmYWls OiB0d28gQ1VSUkVOVF9TQ0hFTUEgbWVudGlvbnMgd2l0aCBjb25mbGljdGluZyBFWENFUFQgbGlz dHMKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2N1cnNjaF9jdXJzY2hfY29uZmxpY3QKKyAg ICBGT1IgVEFCTEVTIElOIFNDSEVNQSBDVVJSRU5UX1NDSEVNQSBFWENFUFQgKFRBQkxFIHRibCks CisgICAgICAgICAgICAgICAgICBDVVJSRU5UX1NDSEVNQSBFWENFUFQgKFRBQkxFIHRibDEpOwor RVJST1I6ICBjb25mbGljdGluZyBvciByZWR1bmRhbnQgRVhDRVBUIGxpc3RzIGZvciBzY2hlbWEg InB1Yl90ZXN0MSIKIFJFU0VUIHNlYXJjaF9wYXRoOwogLS0gY2xlYW51cCBwdWJfdGVzdDEgc2No ZW1hIGZvciBpbnZhbGlkYXRpb24gdGVzdHMKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIyX2Zv cnNjaGVtYSBEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cHVibGljYXRpb24uc3FsCmluZGV4IDA1NWI5ZTk3ZGMxLi4zNzU1MDMyYWQwMyAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbApAQCAtMjYwLDYgKzI2MCwxNyBAQCBDUkVBVEUgUFVC TElDQVRJT04gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0X211bHRpCiAgICAgICAgICAgICAgICAgICBw dWJsaWMgRVhDRVBUIChUQUJMRSB0ZXN0cHViX3RibDEpOwogXGRScCsgdGVzdHB1Yl9zY2hlbWFf ZXhjZXB0X211bHRpCiAKKy0tIGZhaWw6IHNhbWUgc2NoZW1hIHJlcGVhdGVkIHdpdGggc2FtZSBF WENFUFQgbGlzdHMKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYV9leGNlcHRfY29u ZmxpY3QKKyAgICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1 Yl90ZXN0LnRlc3RwdWJfdGJsX3MxKSwKKyAgICAgICAgICAgICAgICAgIHB1Yl90ZXN0IEVYQ0VQ VCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEpOworCistLSBmYWlsOiBzYW1lIHNjaGVt YSByZXBlYXRlZCB3aXRoIGNvbmZsaWN0aW5nIG9yIG5vIEVYQ0VQVCBsaXN0cworQ1JFQVRFIFBV QkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdF9jb25mbGljdDIKKyAgICBGT1IgVEFCTEVT IElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3Mx KSwKKyAgICAgICAgICAgICAgICAgIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVz dHB1Yl90YmxfczIpLAorICAgICAgICAgICAgICAgICAgcHViX3Rlc3Q7CisKIC0tIEFMVEVSIFRB QkxFIC4uLiBTRVQgU0NIRU1BIG9uIGEgdGFibGUgZXhjbHVkZWQgYnkgYSBzY2hlbWEgcHVibGlj YXRpb246CiAtLSB0aGUgc2NoZW1hLXNjb3BlZCBleGNsdXNpb24gaXMgbm8gbG9uZ2VyIG1lYW5p bmdmdWwgb25jZSB0aGUgdGFibGUgbW92ZXMKIC0tIG91dCBvZiBpdHMgc2NoZW1hLCBzbyB0aGUg ZXhjbHVzaW9uIGlzIGF1dG8tcmVtb3ZlZC4KQEAgLTEyOTgsNiArMTMwOSwyNiBAQCBDUkVBVEUg UFVCTElDQVRJT04gdGVzdHB1Yl9jdXJzY2hfZXhjZXB0IEZPUiBUQUJMRVMgSU4gU0NIRU1BIENV UlJFTlRfU0NIRU1BIEVYQwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3Rw dWJfY3Vyc2NoX2V4Y2VwdAogRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX2N1cnNjaF9leGNlcHQ7 CisKKy0tIHN1Y2NlZWRzOiBDVVJSRU5UX1NDSEVNQSBhbmQgcHViX3Rlc3QxIChzYW1lIHNjaGVt YSkKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViX2N1cnNjaF9uYW1lZF9zYW1lCisgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgQ1VS UkVOVF9TQ0hFTUEsIHB1Yl90ZXN0MTsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitcZFJw KyB0ZXN0cHViX2N1cnNjaF9uYW1lZF9zYW1lCitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfY3Vy c2NoX25hbWVkX3NhbWU7CisKKy0tIGZhaWw6IENVUlJFTlRfU0NIRU1BIGFuZCBwdWJfdGVzdDEg KHNhbWUgc2NoZW1hKSBoYXZlCistLSBjb25mbGljdGluZyBFWENFUFQgbGlzdHMKK0NSRUFURSBQ VUJMSUNBVElPTiB0ZXN0cHViX2N1cnNjaF9uYW1lZF9jb25mbGljdAorICAgIEZPUiBUQUJMRVMg SU4gU0NIRU1BIENVUlJFTlRfU0NIRU1BIEVYQ0VQVCAoVEFCTEUgdGJsKSwKKyAgICAgICAgICAg ICAgICAgIHB1Yl90ZXN0MSBFWENFUFQgKFRBQkxFIHRibDEpOworCistLSBmYWlsOiB0d28gQ1VS UkVOVF9TQ0hFTUEgbWVudGlvbnMgd2l0aCBjb25mbGljdGluZyBFWENFUFQgbGlzdHMKK0NSRUFU RSBQVUJMSUNBVElPTiB0ZXN0cHViX2N1cnNjaF9jdXJzY2hfY29uZmxpY3QKKyAgICBGT1IgVEFC TEVTIElOIFNDSEVNQSBDVVJSRU5UX1NDSEVNQSBFWENFUFQgKFRBQkxFIHRibCksCisgICAgICAg ICAgICAgICAgICBDVVJSRU5UX1NDSEVNQSBFWENFUFQgKFRBQkxFIHRibDEpOworCiBSRVNFVCBz ZWFyY2hfcGF0aDsKIAogLS0gY2xlYW51cCBwdWJfdGVzdDEgc2NoZW1hIGZvciBpbnZhbGlkYXRp b24gdGVzdHMKLS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --000000000000ce52370656401dad Content-Type: application/octet-stream; name="v20-0003-Add-EXCEPT-support-to-ALTER-PUBLICATION-ADD-TABL.patch" Content-Disposition: attachment; filename="v20-0003-Add-EXCEPT-support-to-ALTER-PUBLICATION-ADD-TABL.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mretxdk42 RnJvbSA4ZDU2NGJmNmIyNzliODBiMDUzMDk5MDNiODg2ZGQzMWQ0OTlmNWMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBXZWQsIDggSnVsIDIwMjYgMTc6MDk6MDYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYy MCAzLzVdIEFkZCBFWENFUFQgc3VwcG9ydCB0byBBTFRFUiBQVUJMSUNBVElPTiBBREQgVEFCTEVT IElOCiBTQ0hFTUEKCkV4dGVuZCB0aGUgRVhDRVBUIGNsYXVzZSBzdXBwb3J0IHRvIGFsbG93IHRh YmxlcyB0byBiZSBleGNsdWRlZCB3aGVuCmFkZGluZyBhIHNjaGVtYSB0byBhIHB1YmxpY2F0aW9u IHZpYSBBTFRFUiBQVUJMSUNBVElPTiAuLi4gQURELgoKU3ludGF4OgogIEFMVEVSIFBVQkxJQ0FU SU9OIHB1YiBBREQgVEFCTEVTIElOIFNDSEVNQSBzIEVYQ0VQVCAoVEFCTEUgcy50MSk7CgpTaW5j ZSBwZ19kdW1wIHVzZXMgQUxURVIgUFVCTElDQVRJT04gLi4uIEFERCwgc3VwcG9ydCBmb3IgaXQg aXMKaW5jbHVkZWQgaW4gdGhpcyBwYXRjaC4KLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1 YmxpY2F0aW9uLmMgICAgICB8IDE5ICsrKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNh dGlvbmNtZHMuYyAgICB8IDk4ICsrKysrKysrKysrKysrKysrKysrKystCiBzcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICB8IDMwICsrKysrKy0KIHNyYy9iaW4vcGdfZHVt cC90LzAwMl9wZ19kdW1wLnBsICAgICAgICAgIHwgMjQgKysrKysrCiBzcmMvYmluL3BzcWwvdGFi LWNvbXBsZXRlLmluLmMgICAgICAgICAgICB8IDE3ICsrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcHVibGljYXRpb24ub3V0IHwgNjYgKysrKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgICAgICB8IDUwICsrKysrKysrKysrLQogc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbCAgICAgfCAzMiArKysrKysrKwogOCBmaWxlcyBj aGFuZ2VkLCAzMjIgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IDBiZGNjMDdjNDJkLi4yMWY2NzlmOGFjMSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpAQCAtNzI5LDE1ICs3MjksMTggQEAgcHVibGlj YXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpwcmksCiAJ ICogaGVyZSwgYXMgQ3JlYXRlUHVibGljYXRpb24oKSBmdW5jdGlvbiBpbnZhbGlkYXRlcyBhbGwg cmVsYXRpb25zIGFzIHBhcnQKIAkgKiBvZiBkZWZpbmluZyBhIEZPUiBBTEwgVEFCTEVTIHB1Ymxp Y2F0aW9uLgogCSAqCi0JICogRm9yIEFMVEVSIFBVQkxJQ0FUSU9OLCBpbnZhbGlkYXRpb24gaXMg bmVlZGVkIG9ubHkgd2hlbiBhZGRpbmcgYW4KLQkgKiBFWENFUFQgdGFibGUgdG8gYSBwdWJsaWNh dGlvbiBhbHJlYWR5IG1hcmtlZCBhcyBBTEwgVEFCTEVTLiBGb3IKLQkgKiBwdWJsaWNhdGlvbnMg dGhhdCB3ZXJlIG9yaWdpbmFsbHkgZW1wdHkgb3IgZGVmaW5lZCBhcyBBTEwgU0VRVUVOQ0VTIGFu ZAotCSAqIGFyZSBiZWluZyBjb252ZXJ0ZWQgdG8gQUxMIFRBQkxFUywgaW52YWxpZGF0aW9uIGlz IHNraXBwZWQgaGVyZSwgYXMKLQkgKiBBbHRlclB1YmxpY2F0aW9uQWxsRmxhZ3MoKSBmdW5jdGlv biBpbnZhbGlkYXRlcyBhbGwgcmVsYXRpb25zIHdoaWxlCi0JICogbWFya2luZyB0aGUgcHVibGlj YXRpb24gYXMgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbi4KKwkgKiBGb3IgQUxURVIgUFVCTElDQVRJ T04sIGludmFsaWRhdGlvbiBpcyBuZWVkZWQgd2hlbiBhZGRpbmcgYW4gRVhDRVBUCisJICogdGFi bGUgdG8gZWl0aGVyIGEgRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb24gKHB1Yi0+YWxsdGFibGVz IGlzIHRydWUpCisJICogb3IgYSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWNhdGlvbiAoaXNf c2NoZW1hX3B1YmxpY2F0aW9uIGlzIHRydWUpLgorCSAqIFRoZSBleGNlcHRpb246IHdoZW4gYSBw dWJsaWNhdGlvbiBpcyBiZWluZyBjb252ZXJ0ZWQgdG8gRk9SIEFMTCBUQUJMRVMKKwkgKiAocHVi LT5hbGx0YWJsZXMgaXMgc3RpbGwgZmFsc2UgYXQgdGhpcyBwb2ludCksCisJICogQWx0ZXJQdWJs aWNhdGlvbkFsbEZsYWdzKCkgd2lsbCBwZXJmb3JtIGEgZnVsbCBpbnZhbGlkYXRpb24sIHNvIHdl IHNraXAKKwkgKiBpdCBoZXJlLgogCSAqLwotCWludmFsX2V4Y2VwdF90YWJsZSA9IChhbHRlcl9z dG10ICE9IE5VTEwpICYmIHB1Yi0+YWxsdGFibGVzICYmCi0JCShhbHRlcl9zdG10LT5mb3JfYWxs X3RhYmxlcyAmJiBwcmktPmV4Y2VwdCk7CisJaW52YWxfZXhjZXB0X3RhYmxlID0gKGFsdGVyX3N0 bXQgIT0gTlVMTCkgJiYgcHJpLT5leGNlcHQgJiYKKwkJKHB1Yi0+YWxsdGFibGVzCisJCSA/IGFs dGVyX3N0bXQtPmZvcl9hbGxfdGFibGVzCisJCSA6IGlzX3NjaGVtYV9wdWJsaWNhdGlvbihwdWJp ZCkpOwogCiAJaWYgKCFwcmktPmV4Y2VwdCB8fCBpbnZhbF9leGNlcHRfdGFibGUpCiAJewpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwppbmRleCAwYzNjOTA1ZjdlYS4uZTY0ODU4 MjdiMWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCkBAIC03MSw2ICs3 MSwxMyBAQCBzdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkRyb3BUYWJsZXMoT2lkIHB1YmlkLCBMaXN0 ICpyZWxzLCBib29sIG1pc3Npbmdfb2spOwogc3RhdGljIHZvaWQgUHVibGljYXRpb25BZGRTY2hl bWFzKE9pZCBwdWJpZCwgTGlzdCAqc2NoZW1hcywgYm9vbCBpZl9ub3RfZXhpc3RzLAogCQkJCQkJ CQkgIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KTsKIHN0YXRpYyB2b2lkIFB1YmxpY2F0aW9u RHJvcFNjaGVtYXMoT2lkIHB1YmlkLCBMaXN0ICpzY2hlbWFzLCBib29sIG1pc3Npbmdfb2spOwor c3RhdGljIHZvaWQgQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQg KnN0bXQsCisJCQkJCQkJCQlIZWFwVHVwbGUgdHVwLCBMaXN0ICpzY2hlbWFpZGxpc3QsCisJCQkJ CQkJCQlMaXN0ICpleGNlcHRfcHVidGFibGVzKTsKK3N0YXRpYyB2b2lkIEFsdGVyUHVibGljYXRp b25TY2hlbWFFeGNlcHRUYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCisJCQkJCQkJ CQkJCSAgIEhlYXBUdXBsZSB0dXAsCisJCQkJCQkJCQkJCSAgIExpc3QgKmV4Y2VwdF9wdWJ0YWJs ZXMsCisJCQkJCQkJCQkJCSAgIExpc3QgKnNjaGVtYWlkbGlzdCk7CiBzdGF0aWMgY2hhciBkZWZH ZXRHZW5lcmF0ZWRDb2xzT3B0aW9uKERlZkVsZW0gKmRlZik7CiBzdGF0aWMgdm9pZCBDaGVja0V4 Y2VwdE5vdEluVGFibGVMaXN0KExpc3QgKmV4Y2VwdF9yZWxzLCBMaXN0ICpleHBsaWNpdHJlbGlk cyk7CiBzdGF0aWMgdm9pZCBQcm9jZXNzU2NoZW1hRXhjZXB0VGFibGVzKE9pZCBzY2hlbWFpZCwg Y29uc3QgY2hhciAqc2NoZW1hX25hbWUsCkBAIC0xNTc3LDcgKzE1ODQsOCBAQCBBbHRlclB1Ymxp Y2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAog ICovCiBzdGF0aWMgdm9pZAogQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoQWx0ZXJQdWJsaWNhdGlv blN0bXQgKnN0bXQsCi0JCQkJCQlIZWFwVHVwbGUgdHVwLCBMaXN0ICpzY2hlbWFpZGxpc3QpCisJ CQkJCQlIZWFwVHVwbGUgdHVwLCBMaXN0ICpzY2hlbWFpZGxpc3QsCisJCQkJCQlMaXN0ICpleGNl cHRfcHVidGFibGVzKQogewogCUZvcm1fcGdfcHVibGljYXRpb24gcHViZm9ybSA9IChGb3JtX3Bn X3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKIApAQCAtMTY1NCw2ICsxNjYyLDg4IEBAIEFs dGVyUHVibGljYXRpb25TY2hlbWFzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogCQkgKi8K IAkJUHVibGljYXRpb25BZGRTY2hlbWFzKHB1YmZvcm0tPm9pZCwgc2NoZW1haWRsaXN0LCB0cnVl LCBzdG10KTsKIAl9CisKKwkvKgorCSAqIEluY3JlbWVudCB0aGUgY29tbWFuZCBjb3VudGVyIHNv IHRoYXQgaXNfc2NoZW1hX3B1YmxpY2F0aW9uKCkgaW4KKwkgKiBHZXRFeGNsdWRlZFB1YmxpY2F0 aW9uVGFibGVzKCkgY2FuIHNlZSB0aGUganVzdC1pbnNlcnRlZCBzY2hlbWEKKwkgKiByb3dzIHdo ZW4gQWx0ZXJQdWJsaWNhdGlvblNjaGVtYUV4Y2VwdFRhYmxlcyBydW5zIG5leHQuCisJICovCisJ aWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9BZGRPYmplY3RzIHx8IHN0bXQtPmFjdGlvbiA9PSBBUF9T ZXRPYmplY3RzKQorCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCisJQWx0ZXJQdWJsaWNh dGlvblNjaGVtYUV4Y2VwdFRhYmxlcyhzdG10LCB0dXAsIGV4Y2VwdF9wdWJ0YWJsZXMsIHNjaGVt YWlkbGlzdCk7Cit9CisKKy8qCisgKiBBbHRlciB0aGUgRVhDRVBUIGxpc3Qgb2YgYSBzY2hlbWEt bGV2ZWwgcHVibGljYXRpb24uCisgKgorICogQWRkcywgcmVtb3Zlcywgb3IgcmVwbGFjZXMgZXhj ZXB0LXRhYmxlIGVudHJpZXMgaW4gcGdfcHVibGljYXRpb25fcmVsCisgKiAocm93cyB3aXRoIHBy ZXhjZXB0ID0gdHJ1ZSkuICBUaGVzZSBlbnRyaWVzIHN1cHByZXNzIHB1YmxpY2F0aW9uIG9mIHRo ZQorICogbmFtZWQgdGFibGVzIHRoYXQgd291bGQgb3RoZXJ3aXNlIGJlIGNvdmVyZWQgYnkgYSBG T1IgVEFCTEVTIElOIFNDSEVNQQorICogY2xhdXNlLgorICovCitzdGF0aWMgdm9pZAorQWx0ZXJQ dWJsaWNhdGlvblNjaGVtYUV4Y2VwdFRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwK KwkJCQkJCQkgSGVhcFR1cGxlIHR1cCwgTGlzdCAqZXhjZXB0X3B1YnRhYmxlcywKKwkJCQkJCQkg TGlzdCAqc2NoZW1haWRsaXN0KQoreworCUZvcm1fcGdfcHVibGljYXRpb24gcHViZm9ybSA9IChG b3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKKwlPaWQJCQlwdWJpZCA9IHB1YmZv cm0tPm9pZDsKKworCS8qCisJICogTm90aGluZyB0byBkbyBpZiBubyBFWENFUFQgZW50cmllcy4K KwkgKi8KKwlpZiAoIWV4Y2VwdF9wdWJ0YWJsZXMpCisJCXJldHVybjsKKworCS8qCisJICogVGhp cyBmdW5jdGlvbiBoYW5kbGVzIEVYQ0VQVCBlbnRyaWVzIGZvciBzY2hlbWEtbGV2ZWwgcHVibGlj YXRpb25zCisJICogb25seS4gIEZvciBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbnMsIEVYQ0VQ VCBlbnRyaWVzIGFyZSBhbHJlYWR5CisJICogcHJvY2Vzc2VkIGJ5IEFsdGVyUHVibGljYXRpb25U YWJsZXMoKS4KKwkgKi8KKwlpZiAoc2NoZW1haWRsaXN0ID09IE5JTCAmJiAhaXNfc2NoZW1hX3B1 YmxpY2F0aW9uKHB1YmlkKSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBEcm9wcGluZyBhIHNjaGVt YSBmcm9tIGEgcHVibGljYXRpb24gcmVtb3ZlcyBhbGwgaXRzIEVYQ0VQVCBlbnRyaWVzIHZpYQor CSAqIGNhc2NhZGUuIFRoZSBjb25jZXB0IG9mICJkcm9wIGFsbCBzY2hlbWEgdGFibGVzIGZyb20g dGhlIHB1YmxpY2F0aW9uCisJICogRVhDRVBUIHRoZXNlIG9uZXMiIGlzIG5vdCBzdXBwb3J0ZWQu CisJICovCisJaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9Ecm9wT2JqZWN0cykKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJ IGVycm1zZygiRVhDRVBUIGNsYXVzZSBpcyBub3Qgc3VwcG9ydGVkIHdpdGggRFJPUCBpbiBBTFRF UiBQVUJMSUNBVElPTiIpKSk7CisKKwkvKgorCSAqIFhYWCBFWENFUFQgd2l0aCBTRVQgaXMgbm90 IGN1cnJlbnRseSBpbXBsZW1lbnRlZC4gIFdvcmthcm91bmQ6IERST1AgYW5kCisJICogcmUtQURE IHRoZSBzY2hlbWEgd2l0aCB0aGUgZGVzaXJlZCBFWENFUFQgbGlzdC4KKwkgKi8KKwlpZiAoc3Rt dC0+YWN0aW9uID09IEFQX1NldE9iamVjdHMpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coIkVYQ0VQVCBj bGF1c2UgaXMgbm90IHN1cHBvcnRlZCB3aXRoIFNFVCBpbiBBTFRFUiBQVUJMSUNBVElPTiIpLAor CQkJCSBlcnJoaW50KCJEcm9wIGFuZCByZS1hZGQgdGhlIHNjaGVtYSB3aXRoIHRoZSBkZXNpcmVk IEVYQ0VQVCBsaXN0LiIpKSk7CisKKwlpZiAoc3RtdC0+YWN0aW9uID09IEFQX0FkZE9iamVjdHMp CisJeworCQlMaXN0CSAgICpyZWxzOworCQlMaXN0CSAgICpleHBsaWNpdHJlbGlkczsKKworCQly ZWxzID0gT3BlblRhYmxlTGlzdChleGNlcHRfcHVidGFibGVzKTsKKworCQlleHBsaWNpdHJlbGlk cyA9IEdldEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsCisJCQkJCQkJCQkJCQkJ CSBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCisJCS8qCisJCSAqIFZhbGlkYXRlIHRoYXQgZWFj aCBleGNsdWRlZCB0YWJsZSBpcyBub3QgYWxzbyBpbiB0aGUgZXhwbGljaXQgdGFibGUKKwkJICog bGlzdCAod2hpY2ggd291bGQgYmUgY29udHJhZGljdG9yeSkuCisJCSAqLworCQlDaGVja0V4Y2Vw dE5vdEluVGFibGVMaXN0KHJlbHMsIGV4cGxpY2l0cmVsaWRzKTsKKworCQlQdWJsaWNhdGlvbkFk ZFRhYmxlcyhwdWJpZCwgcmVscywgZmFsc2UsIHN0bXQpOworCisJCUNsb3NlVGFibGVMaXN0KHJl bHMpOworCX0KIH0KIAogLyoKQEAgLTE4NjMsMTAgKzE5NTMsMTIgQEAgQWx0ZXJQdWJsaWNhdGlv bihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KQogCQkJCQll cnJtc2coInB1YmxpY2F0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCiAJCQkJCQkgICBzdG10 LT5wdWJuYW1lKSk7CiAKLQkJcmVsYXRpb25zID0gbGlzdF9jb25jYXQocmVsYXRpb25zLCBleGNl cHRfcHVidGFibGVzKTsKKwkJaWYgKHN0bXQtPmZvcl9hbGxfdGFibGVzKQorCQkJcmVsYXRpb25z ID0gbGlzdF9jb25jYXQocmVsYXRpb25zLCBleGNlcHRfcHVidGFibGVzKTsKKwogCQlBbHRlclB1 YmxpY2F0aW9uVGFibGVzKHN0bXQsIHR1cCwgcmVsYXRpb25zLCBwc3RhdGUtPnBfc291cmNldGV4 dCwKIAkJCQkJCQkgICBzY2hlbWFpZGxpc3QgIT0gTklMKTsKLQkJQWx0ZXJQdWJsaWNhdGlvblNj aGVtYXMoc3RtdCwgdHVwLCBzY2hlbWFpZGxpc3QpOworCQlBbHRlclB1YmxpY2F0aW9uU2NoZW1h cyhzdG10LCB0dXAsIHNjaGVtYWlkbGlzdCwgZXhjZXB0X3B1YnRhYmxlcyk7CiAJCUFsdGVyUHVi bGljYXRpb25BbGxGbGFncyhzdG10LCByZWwsIHR1cCk7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCA0 ZDY2MGQxNGI0Yy4uNDg3N2ZkNDU0NmMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNDk3Myw2ICs0OTczLDcg QEAgZHVtcFB1YmxpY2F0aW9uTmFtZXNwYWNlKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFB1YmxpY2F0 aW9uU2NoZW1hSW5mbyAqcHVic2luZm8pCiAJUHVibGljYXRpb25JbmZvICpwdWJpbmZvID0gcHVi c2luZm8tPnB1YmxpY2F0aW9uOwogCVBRRXhwQnVmZmVyIHF1ZXJ5OwogCWNoYXIJICAgKnRhZzsK Kwlib29sCQloYXNfZXhjZXB0ID0gZmFsc2U7CiAKIAkvKiBEbyBub3RoaW5nIGlmIG5vdCBkdW1w aW5nIHNjaGVtYSAqLwogCWlmICghZG9wdC0+ZHVtcFNjaGVtYSkKQEAgLTQ5ODMsNyArNDk4NCwz NCBAQCBkdW1wUHVibGljYXRpb25OYW1lc3BhY2UoQXJjaGl2ZSAqZm91dCwgY29uc3QgUHVibGlj YXRpb25TY2hlbWFJbmZvICpwdWJzaW5mbykKIAlxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7 CiAKIAlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIkFMVEVSIFBVQkxJQ0FUSU9OICVzICIsIGZt dElkKHB1YmluZm8tPmRvYmoubmFtZSkpOwotCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiQURE IFRBQkxFUyBJTiBTQ0hFTUEgJXM7XG4iLCBmbXRJZChzY2hlbWFpbmZvLT5kb2JqLm5hbWUpKTsK KwlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIkFERCBUQUJMRVMgSU4gU0NIRU1BICVzIiwgZm10 SWQoc2NoZW1haW5mby0+ZG9iai5uYW1lKSk7CisKKwkvKgorCSAqIEFwcGVuZCBFWENFUFQgY2xh dXNlIGZvciBhbnkgdGFibGVzIHRoYXQgYmVsb25nIHRvIHRoaXMgc2NoZW1hCisJICogYW5kIGFy ZSBleGNsdWRlZCBmcm9tIHRoZSBwdWJsaWNhdGlvbi4KKwkgKi8KKwlmb3IgKFNpbXBsZVB0ckxp c3RDZWxsICpjZWxsID0gcHViaW5mby0+ZXhjZXB0X3RhYmxlcy5oZWFkOyBjZWxsOyBjZWxsID0g Y2VsbC0+bmV4dCkKKwl7CisJCVRhYmxlSW5mbyAgKnRiaW5mbyA9IChUYWJsZUluZm8gKikgY2Vs bC0+cHRyOworCisJCWlmIChzdHJjbXAodGJpbmZvLT5kb2JqLm5hbWVzcGFjZS0+ZG9iai5uYW1l LCBzY2hlbWFpbmZvLT5kb2JqLm5hbWUpID09IDApCisJCXsKKwkJCWlmICghaGFzX2V4Y2VwdCkK KwkJCXsKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBFWENFUFQgKCIpOworCQkJ CWhhc19leGNlcHQgPSB0cnVlOworCQkJfQorCQkJZWxzZQorCQkJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKHF1ZXJ5LCAiLCAiKTsKKworCQkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJUQUJMRSBP TkxZICVzIiwgZm10SWQodGJpbmZvLT5kb2JqLm5hbWUpKTsKKwkJfQorCX0KKworCWlmIChoYXNf ZXhjZXB0KQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIikiKTsKKworCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LCAiO1xuIik7CiAKIAkvKgogCSAqIFRoZXJlIGlzIG5vIHBvaW50 IGluIGNyZWF0aW5nIGRyb3AgcXVlcnkgYXMgdGhlIGRyb3AgaXMgZG9uZSBieSBzY2hlbWEKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsIGIvc3JjL2Jpbi9wZ19k dW1wL3QvMDAyX3BnX2R1bXAucGwKaW5kZXggOTI1ODk0OGI1ODMuLmQxOGIzYjBkN2I5IDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAorKysgYi9zcmMvYmluL3Bn X2R1bXAvdC8wMDJfcGdfZHVtcC5wbApAQCAtMzI4Myw2ICszMjgzLDMwIEBAIG15ICV0ZXN0cyA9 ICgKIAkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCiAJ fSwKIAorCSdDUkVBVEUgUFVCTElDQVRJT04gcHViMTEnID0+IHsKKwkJY3JlYXRlX29yZGVyID0+ IDUwLAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0NSRUFURSBQVUJMSUNBVElPTiBwdWIxMSBGT1Ig VEFCTEVTIElOIFNDSEVNQSBkdW1wX3Rlc3QgRVhDRVBUIChUQUJMRSB0ZXN0X3RhYmxlKTsnLAor CQlyZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgUFVCTElDQVRJT04gcHViMTEgV0lUSCAocHVi bGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZScpO1xFCisJCQkuKj8KKwkJ CVxRQUxURVIgUFVCTElDQVRJT04gcHViMTEgQUREIFRBQkxFUyBJTiBTQ0hFTUEgZHVtcF90ZXN0 IEVYQ0VQVCAoVEFCTEUgT05MWSB0ZXN0X3RhYmxlKTtcRQorCQkJL3htcywKKwkJbGlrZSA9PiB7 ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJfSwKKworCSdDUkVBVEUg UFVCTElDQVRJT04gcHViMTInID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDUwLAorCQljcmVhdGVf c3FsID0+CisJCSAgJ0NSRUFURSBQVUJMSUNBVElPTiBwdWIxMiBGT1IgVEFCTEVTIElOIFNDSEVN QSBkdW1wX3Rlc3QgRVhDRVBUIChUQUJMRSB0ZXN0X3RhYmxlLCBkdW1wX3Rlc3QudGVzdF9zZWNv bmRfdGFibGUpOycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBQVUJMSUNBVElPTiBw dWIxMiBXSVRIIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJyk7 XEUKKwkJCS4qPworCQkJXFFBTFRFUiBQVUJMSUNBVElPTiBwdWIxMiBBREQgVEFCTEVTIElOIFND SEVNQSBkdW1wX3Rlc3QgRVhDRVBUIChUQUJMRSBPTkxZIHRlc3RfdGFibGUsIFRBQkxFIE9OTFkg dGVzdF9zZWNvbmRfdGFibGUpO1xFCisJCQkveG1zLAorCQlsaWtlID0+IHsgJWZ1bGxfcnVucywg c2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKKwl9LAorCiAJJ0NSRUFURSBTVUJTQ1JJUFRJT04g c3ViMScgPT4gewogCQljcmVhdGVfb3JkZXIgPT4gNTAsCiAJCWNyZWF0ZV9zcWwgPT4gJ0NSRUFU RSBTVUJTQ1JJUFRJT04gc3ViMQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IDA2NzE2ODY5OWY2 Li4yMzAwOWNhMmY0MCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5j CisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMjM1OSw2ICsyMzU5LDIz IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCQlDT01QTEVURV9XSVRI X1FVRVJZX1BMVVMoUXVlcnlfZm9yX2xpc3Rfb2Zfc2NoZW1hcwogCQkJCQkJCQkgIiBBTkQgbnNw bmFtZSBOT1QgTElLRSBFJ3BnXFxcXF8lJSciLAogCQkJCQkJCQkgIkNVUlJFTlRfU0NIRU1BIik7 CisJLyogQWZ0ZXIgYSBzaW5nbGUgc2NoZW1hIG5hbWUgaW4gQUREIGNvbnRleHQsIG9mZmVyIEVY Q0VQVCAoIFRBQkxFICovCisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04i LCBNYXRjaEFueSwgIkFERCIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnkpICYm CisJCQkgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQorCQlDT01QTEVURV9XSVRIKCJFWENFUFQg KCBUQUJMRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0 Y2hBbnksICJBREQiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIsIE1hdGNoQW55LCAiRVhDRVBU IikpCisJCUNPTVBMRVRFX1dJVEgoIiggVEFCTEUiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRF UiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hF TUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIsICIoIikpCisJCUNPTVBMRVRFX1dJVEgoIlRBQkxFIik7 CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFE RCIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgIkNVUlJFTlRfU0NIRU1BIiwgIkVYQ0VQVCIs ICIoIiwgIlRBQkxFIikpCisJCUNPTVBMRVRFX1dJVEhfUVVFUllfVkVSQkFUSU0oUXVlcnlfZm9y X2xpc3Rfb2ZfdGFibGVzX2luX2N1cnJlbnRfc2NoZW1hKTsKKwllbHNlIGlmIChNYXRjaGVzKCJB TFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREIiwgIlRBQkxFUyIsICJJTiIsICJT Q0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIsICIoIiwgIlRBQkxFIikpCisJeworCQlzZXRfY29t cGxldGlvbl9yZWZlcmVuY2UocHJldjRfd2QpOworCQlDT01QTEVURV9XSVRIX1FVRVJZX1ZFUkJB VElNKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlc19pbl9zY2hlbWEpOworCX0KKwllbHNlIGlmIChN YXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREIiwgIlRBQkxFUyIs ICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIsICIoIiwgIlRBQkxFIiwgTWF0Y2hB bnlOKSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEgoIikiKTsK IAkvKiBBTFRFUiBQVUJMSUNBVElPTiA8bmFtZT4gU0VUICggKi8KIAllbHNlIGlmIChNYXRjaGVz KCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCBNYXRjaEFueU4sICJTRVQiLCAiKCIp KQogCQlDT01QTEVURV9XSVRIKCJwdWJsaXNoIiwgInB1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnMi LCAicHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QiKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXggNWZiN2RlMmYwN2YuLjEzZGQzMzRkMmJhIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dApAQCAtNjI2LDEyICs2MjYsNzYg QEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X2FuY2VzdG9yX3NhbWVfY3JlYXRl CiAgICAgICAgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0 LnRlc3RwdWJfcGFydGVkX3MpOwogRVJST1I6ICBwYXJ0aXRpb24gInB1Yl90ZXN0LnRlc3RwdWJf cGFydF9zIiBjYW5ub3QgYmUgYm90aCBwdWJsaXNoZWQgYW5kIGV4Y2x1ZGVkCiBERVRBSUw6ICBB bmNlc3RvciAicHViX3Rlc3QudGVzdHB1Yl9wYXJ0ZWRfcyIgaXMgYWxzbyBiZWluZyBleGNsdWRl ZCBieSB0aGlzIHNhbWUgY29tbWFuZC4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorLS0gRVhDRVBUIHRlc3RzIGZvciBBTFRFUiBQVUJMSUNBVElPTgorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgUFVCTElD QVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQ7CistLSBmYWlsOiBub24tZXhpc3RpbmcgdGFibGUg aW4gRVhDRVBUIGNsYXVzZQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQg QUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC5ub25l eGlzdGVudF90YWJsZSk7CitFUlJPUjogIHJlbGF0aW9uICJwdWJfdGVzdC5ub25leGlzdGVudF90 YWJsZSIgZG9lcyBub3QgZXhpc3QKKy0tIGZhaWw6IEVYQ0VQVCB0YWJsZSBiZWxvbmdzIHRvIGEg ZGlmZmVyZW50IHNjaGVtYQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQg QUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJsaWMudGVzdHB1 Yl90YmwxKTsKK0VSUk9SOiAgdGFibGUgInB1YmxpYy50ZXN0cHViX3RibDEiIGluIEVYQ0VQVCBj bGF1c2UgZG9lcyBub3QgYmVsb25nIHRvIHNjaGVtYSAicHViX3Rlc3QiCitMSU5FIDE6IC4uLnhj ZXB0IEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHVibGljLnRl cy4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KKy0tIGZhaWw6IFRBQkxFIGtleXdvcmQgaXMgcmVxdWlyZWQgZm9yIHRoZSBm aXJzdCBlbnRyeSBpbiBFWENFUFQgY2xhdXNlCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2Fs dGVyX2V4Y2VwdCBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKHRlc3RwdWJf bm9wayk7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICJ0ZXN0cHViX25vcGsiCitM SU5FIDE6IC4uLmx0ZXJfZXhjZXB0IEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQ VCAodGVzdHB1Yl9uby4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIGZhaWw6IGV4YWN0IHNhbWUgdGFibGUgZ2l2ZW4g YXMgYm90aCBleHBsaWNpdGx5IHB1Ymxpc2hlZCBhbmQgZXhjbHVkZWQKKy0tIGluIGEgc2luZ2xl IEFMVEVSIC4uLiBBREQKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0Cisg ICAgQUREIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLAorICAgICAgIFRBQkxFUyBJTiBT Q0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSk7CitF UlJPUjogIHRhYmxlICJwdWJfdGVzdC50ZXN0cHViX3RibF9zMSIgY2Fubm90IGJlIGJvdGggcHVi bGlzaGVkIGFuZCBleGNsdWRlZAorLS0gZmFpbDogYWRkIGV4cGxpY2l0IHBhcnRpdGlvbiBhbmQg RVhDRVBUIGFuY2VzdG9yLCBnaXZlbiBpbiBhCistLSBzaW5nbGUgQUxURVIgLi4uIEFERCBzdGF0 ZW1lbnQKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisgICAgQUREIFRB QkxFIHB1Yl90ZXN0LnRlc3RwdWJfcGFydF9zLAorICAgICAgIFRBQkxFUyBJTiBTQ0hFTUEgcHVi X3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3BhcnRlZF9zKTsKK0VSUk9SOiAg cGFydGl0aW9uICJwdWJfdGVzdC50ZXN0cHViX3BhcnRfcyIgY2Fubm90IGJlIGJvdGggcHVibGlz aGVkIGFuZCBleGNsdWRlZAorREVUQUlMOiAgQW5jZXN0b3IgInB1Yl90ZXN0LnRlc3RwdWJfcGFy dGVkX3MiIGlzIGFsc28gYmVpbmcgZXhjbHVkZWQgYnkgdGhpcyBzYW1lIGNvbW1hbmQuCistLSBm YWlsOiBwYXJ0aXRpb24gc3RpbGwgcmVqZWN0ZWQgZnJvbSBFWENFUFQgZXZlbiB3aGVuIGl0cyBv d24gcm9vdCBpcyBhbHNvCistLSBuYW1lZCBpbiB0aGUgc2FtZSBFWENFUFQgbGlzdCwgdmlhIEFM VEVSIC4uLiBBREQKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisgICAg QUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0 cHViX3BhcnRfcywgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0ZWRfcyk7CitFUlJPUjogIGNh bm5vdCBzcGVjaWZ5IHJlbGF0aW9uICJwdWJfdGVzdC50ZXN0cHViX3BhcnRfcyIgaW4gdGhlIHB1 YmxpY2F0aW9uIEVYQ0VQVCBjbGF1c2UKK0RFVEFJTDogIFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBz dXBwb3J0ZWQgZm9yIGluZGl2aWR1YWwgcGFydGl0aW9ucy4KKy0tIGZhaWw6IHBhcnRpdGlvbiBh bHJlYWR5IGV4cGxpY2l0bHkgcHVibGlzaGVkLCB0aGVuIGl0cyByb290IGlzIEVYQ0VQVC1lZAor LS0gdmlhIGEgbGF0ZXIsIHNlcGFyYXRlIEFMVEVSIC4uLiBBREQKK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfYWx0ZXJfZXhjZXB0IEFERCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3BhcnRfczsK K0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IEFERCBUQUJMRVMgSU4gU0NI RU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0ZWRfcyk7CitF UlJPUjogIHBhcnRpdGlvbiAicHViX3Rlc3QudGVzdHB1Yl9wYXJ0X3MiIGNhbm5vdCBiZSBib3Ro IHB1Ymxpc2hlZCBhbmQgZXhjbHVkZWQKK0RFVEFJTDogIEFuY2VzdG9yICJwdWJfdGVzdC50ZXN0 cHViX3BhcnRlZF9zIiBpcyBhbHNvIGJlaW5nIGV4Y2x1ZGVkIGJ5IHRoaXMgc2FtZSBjb21tYW5k LgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgRFJPUCBUQUJMRSBwdWJf dGVzdC50ZXN0cHViX3BhcnRfczsKKy0tIGZhaWw6IHJvb3QgYWxyZWFkeSBleHBsaWNpdGx5IHB1 Ymxpc2hlZCwgdGhlbiBpdHMgcGFydGl0aW9uIGlzIHJlamVjdGVkCistLSBmcm9tIEVYQ0VQVCB2 aWEgYSBsYXRlciwgc2VwYXJhdGUgQUxURVIgLi4uIEFERCAocGFydGl0aW9ucyBjYW4gbmV2ZXIK Ky0tIGFwcGVhciBpbiBFWENFUFQsIGluZGVwZW5kZW50IG9mIHRoZSByb290J3Mgc3RhdGUpCitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBBREQgVEFCTEUgcHViX3Rlc3Qu dGVzdHB1Yl9wYXJ0ZWRfczsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0 IEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVz dHB1Yl9wYXJ0X3MpOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSByZWxhdGlvbiAicHViX3Rlc3Qu dGVzdHB1Yl9wYXJ0X3MiIGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgY2xhdXNlCitERVRBSUw6 ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBpbmRpdmlkdWFsIHBhcnRpdGlv bnMuCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBEUk9QIFRBQkxFIHB1 Yl90ZXN0LnRlc3RwdWJfcGFydGVkX3M7CistLSBBREQ6IHF1YWxpZmllZCBhbmQgdW5xdWFsaWZp ZWQgbmFtZXM7IHVucXVhbGlmaWVkIGlzIGltcGxpY2l0bHkgcXVhbGlmaWVkIHdpdGggdGhlIHNj aGVtYQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgQUREIFRBQkxFUyBJ TiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSwg dGVzdHB1Yl90YmxfczIpOworXGRScCsgdGVzdHB1Yl9hbHRlcl9leGNlcHQKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViX2FsdGVyX2V4Y2VwdAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERlc2NyaXB0aW9uIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8IAorVGFibGVzIGZyb20gc2No ZW1hczoKKyAgICAicHViX3Rlc3QiCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJfdGVzdC50ZXN0 cHViX3RibF9zMSIKKyAgICAicHViX3Rlc3QudGVzdHB1Yl90YmxfczIiCisKIC0tIENsZWFudXAK IFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBEUk9QIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJf dGJsX3MxLCBwdWJfdGVzdC50ZXN0cHViX3RibF9zMjsKIERST1AgVEFCTEUgcHViX3Rlc3QudGVz dHB1Yl9wYXJ0ZWRfcyBDQVNDQURFOwogRFJPUCBUQUJMRSB0ZXN0cHViX25vcGssIHRlc3RwdWJf dGJsX3MxOwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYV9leGNlcHQxLCB0ZXN0cHVi X3NjaGVtYV9leGNlcHQyLCB0ZXN0cHViX3NjaGVtYV9leGNlcHRfbXVsdGk7CitEUk9QIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDEsIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDIsIHRl c3RwdWJfc2NoZW1hX2V4Y2VwdF9tdWx0aSwgdGVzdHB1Yl9hbHRlcl9leGNlcHQ7CiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tIFRlc3RzIGZvciBwdWJs aWNhdGlvbnMgd2l0aCBTRVFVRU5DRVMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRp b24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCmluZGV4IDM3NTUw MzJhZDAzLi40ODAxY2NhYzExMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVi bGljYXRpb24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbApA QCAtMzIxLDEyICszMjEsNjAgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X2Fu Y2VzdG9yX3NhbWVfY3JlYXRlCiAgICAgRk9SIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfcGFydF9z LAogICAgICAgIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVz dC50ZXN0cHViX3BhcnRlZF9zKTsKIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCistLSBFWENFUFQgdGVzdHMgZm9yIEFMVEVSIFBVQkxJQ0FUSU9OCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBQVUJMSUNB VElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdDsKKworLS0gZmFpbDogbm9uLWV4aXN0aW5nIHRhYmxl IGluIEVYQ0VQVCBjbGF1c2UKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0 IEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3Qubm9u ZXhpc3RlbnRfdGFibGUpOworCistLSBmYWlsOiBFWENFUFQgdGFibGUgYmVsb25ncyB0byBhIGRp ZmZlcmVudCBzY2hlbWEKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IEFE RCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHVibGljLnRlc3RwdWJf dGJsMSk7CisKKy0tIGZhaWw6IFRBQkxFIGtleXdvcmQgaXMgcmVxdWlyZWQgZm9yIHRoZSBmaXJz dCBlbnRyeSBpbiBFWENFUFQgY2xhdXNlCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVy X2V4Y2VwdCBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKHRlc3RwdWJfbm9w ayk7CisKKy0tIGZhaWw6IGV4YWN0IHNhbWUgdGFibGUgZ2l2ZW4gYXMgYm90aCBleHBsaWNpdGx5 IHB1Ymxpc2hlZCBhbmQgZXhjbHVkZWQKKy0tIGluIGEgc2luZ2xlIEFMVEVSIC4uLiBBREQKK0FM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisgICAgQUREIFRBQkxFIHB1Yl90 ZXN0LnRlc3RwdWJfdGJsX3MxLAorICAgICAgIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhD RVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSk7CisKKy0tIGZhaWw6IGFkZCBleHBs aWNpdCBwYXJ0aXRpb24gYW5kIEVYQ0VQVCBhbmNlc3RvciwgZ2l2ZW4gaW4gYQorLS0gc2luZ2xl IEFMVEVSIC4uLiBBREQgc3RhdGVtZW50CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVy X2V4Y2VwdAorICAgIEFERCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3BhcnRfcywKKyAgICAgICBU QUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9w YXJ0ZWRfcyk7CisKKy0tIGZhaWw6IHBhcnRpdGlvbiBzdGlsbCByZWplY3RlZCBmcm9tIEVYQ0VQ VCBldmVuIHdoZW4gaXRzIG93biByb290IGlzIGFsc28KKy0tIG5hbWVkIGluIHRoZSBzYW1lIEVY Q0VQVCBsaXN0LCB2aWEgQUxURVIgLi4uIEFERAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9h bHRlcl9leGNlcHQKKyAgICBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRB QkxFIHB1Yl90ZXN0LnRlc3RwdWJfcGFydF9zLCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3BhcnRl ZF9zKTsKKworLS0gZmFpbDogcGFydGl0aW9uIGFscmVhZHkgZXhwbGljaXRseSBwdWJsaXNoZWQs IHRoZW4gaXRzIHJvb3QgaXMgRVhDRVBULWVkCistLSB2aWEgYSBsYXRlciwgc2VwYXJhdGUgQUxU RVIgLi4uIEFERAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgQUREIFRB QkxFIHB1Yl90ZXN0LnRlc3RwdWJfcGFydF9zOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9h bHRlcl9leGNlcHQgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBw dWJfdGVzdC50ZXN0cHViX3BhcnRlZF9zKTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0 ZXJfZXhjZXB0IERST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0X3M7CisKKy0tIGZhaWw6 IHJvb3QgYWxyZWFkeSBleHBsaWNpdGx5IHB1Ymxpc2hlZCwgdGhlbiBpdHMgcGFydGl0aW9uIGlz IHJlamVjdGVkCistLSBmcm9tIEVYQ0VQVCB2aWEgYSBsYXRlciwgc2VwYXJhdGUgQUxURVIgLi4u IEFERCAocGFydGl0aW9ucyBjYW4gbmV2ZXIKKy0tIGFwcGVhciBpbiBFWENFUFQsIGluZGVwZW5k ZW50IG9mIHRoZSByb290J3Mgc3RhdGUpCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVy X2V4Y2VwdCBBREQgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0ZWRfczsKK0FMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0 IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0X3MpOworQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgRFJPUCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3BhcnRl ZF9zOworCistLSBBREQ6IHF1YWxpZmllZCBhbmQgdW5xdWFsaWZpZWQgbmFtZXM7IHVucXVhbGlm aWVkIGlzIGltcGxpY2l0bHkgcXVhbGlmaWVkIHdpdGggdGhlIHNjaGVtYQorQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Qg RVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSwgdGVzdHB1Yl90YmxfczIpOwor XGRScCsgdGVzdHB1Yl9hbHRlcl9leGNlcHQKKwogLS0gQ2xlYW51cAogUkVTRVQgY2xpZW50X21p bl9tZXNzYWdlczsKIERST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEsIHB1Yl90ZXN0 LnRlc3RwdWJfdGJsX3MyOwogRFJPUCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3BhcnRlZF9zIENB U0NBREU7CiBEUk9QIFRBQkxFIHRlc3RwdWJfbm9waywgdGVzdHB1Yl90YmxfczE7Ci1EUk9QIFBV QkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDEsIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDIs IHRlc3RwdWJfc2NoZW1hX2V4Y2VwdF9tdWx0aTsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9z Y2hlbWFfZXhjZXB0MSwgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MiwgdGVzdHB1Yl9zY2hlbWFfZXhj ZXB0X211bHRpLCB0ZXN0cHViX2FsdGVyX2V4Y2VwdDsKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSBUZXN0cyBmb3IgcHVibGljYXRpb25zIHdpdGgg U0VRVUVOQ0VTCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0 LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbAppbmRleCBlOWJjYTM1 NTRiMS4uMjdlMzM2MjY3ZGIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAz N19leGNlcHQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbApA QCAtMzQ3LDYgKzM0NywzOCBAQCBpcygkcmVzdWx0LCBxcSg1KSwKICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJT04gc2NoX3N1YicpOwogJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgUFVCTElDQVRJT04gc2No X3B1YicpOwogCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CisjIEFMVEVSIFBVQkxJQ0FUSU9OIEVYQ0VQVCBmb3IgVEFCTEVTIElOIFNDSEVNQQorIyA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjIFRydW5jYXRlIHN1 YnNjcmliZXIgdGFibGVzIHRvIHJlbW92ZSBkYXRhIGFjY3VtdWxhdGVkIGZyb20gcHJldmlvdXMg dGVzdHMuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwknVFJVTkNB VEUgc2NoMS50YWJfcHVibGlzaGVkLCBzY2gxLnRhYl9leGNsdWRlZCwgc2NoMS5wYXJlbnQsIHNj aDEuY2hpbGQnKTsKKworIyBBREQ6IGFkZCBhIHNjaGVtYSB3aXRoIGFuIGV4Y2VwdGVkIHRhYmxl OyB2ZXJpZnkgdGhlIGV4Y2VwdCBlbnRyeSB0YWtlcyBlZmZlY3QuCiskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFBVQkxJQ0FUSU9OIHNjaF9wdWIiKTsKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFBVQkxJQ0FUSU9O IHNjaF9wdWIgQUREIFRBQkxFUyBJTiBTQ0hFTUEgc2NoMSBFWENFUFQgKFRBQkxFIHNjaDEudGFi X2V4Y2x1ZGVkKSIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQ1JFQVRFIFNVQlNDUklQVElPTiBzY2hfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29u bnN0cicgUFVCTElDQVRJT04gc2NoX3B1YiIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICdzY2hfc3ViJyk7CisKKyRyZXN1 bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNU IGNvdW50KCopIEZST00gc2NoMS50YWJfcHVibGlzaGVkIik7CitpcygkcmVzdWx0LCBxcSg2KSwK KwknQUxURVIgLi4uIEFERCBUQUJMRVMgSU4gU0NIRU1BIEVYQ0VQVDogaW5jbHVkZWQgdGFibGUg c3luY2VkJyk7CiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNjaDEudGFiX2V4Y2x1ZGVkIik7Citpcygk cmVzdWx0LCBxcSgwKSwKKwknQUxURVIgLi4uIEFERCBUQUJMRVMgSU4gU0NIRU1BIEVYQ0VQVDog ZXhjbHVkZWQgdGFibGUgbm90IHN5bmNlZCcpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHNjaF9zdWInKTsKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHNjaF9wdWInKTsK KwogIyBDbGVhbnVwIHNjaGVtYSB0YWJsZXMgYmVmb3JlIHRoZSBtdWx0aS1wdWJsaWNhdGlvbiBz ZWN0aW9uLgogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU0NI RU1BIHNjaDEgQ0FTQ0FERScpOwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICdEUk9QIFNDSEVNQSBzY2gxIENBU0NBREUnKTsKLS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1 NSkKCg== --000000000000ce52370656401dad Content-Type: application/octet-stream; name="v20-0004-Add-EXCEPT-support-to-ALTER-PUBLICATION-SET-TABL.patch" Content-Disposition: attachment; filename="v20-0004-Add-EXCEPT-support-to-ALTER-PUBLICATION-SET-TABL.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mretxfpz3 RnJvbSA1Njk1ZjY1NTM0M2I5OGZiZTU0MGNmOWRmNmM4NWNlM2U2MDQ3YzI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBUaHUsIDE4IEp1biAyMDI2IDExOjMyOjMyICswNTMwClN1YmplY3Q6IFtQQVRDSCB2 MjAgNC81XSBBZGQgRVhDRVBUIHN1cHBvcnQgdG8gQUxURVIgUFVCTElDQVRJT04gU0VUIFRBQkxF UyBJTgogU0NIRU1BCgpFeHRlbmQgQWx0ZXJQdWJsaWNhdGlvbkV4Y2VwdFRhYmxlcygpIHdpdGgg dGhlIEFQX1NldE9iamVjdHMgY2FzZSwKd2hpY2ggcmVkZWZpbmVzIHRoZSBwdWJsaWNhdGlvbiBh bmQgcmVwbGFjZXMgdGhlIGVudGlyZSBFWENFUFQgbGlzdC4KClN5bnRheDoKQUxURVIgUFVCTElD QVRJT04gcHViIFNFVCBUQUJMRVMgSU4gU0NIRU1BIHMgRVhDRVBUIChUQUJMRSB0MSk7CgpUaGlz IHBhdGNoIGFsc28gY2xlYW5zIHVwIEVYQ0VQVCBlbnRyaWVzIHdoZW4gYSBzY2hlbWEgaXMgZHJv cHBlZApmcm9tIHRoZSBwdWJsaWNhdGlvbi4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wdWJs aWNhdGlvbmNtZHMuYyAgICB8IDE4MSArKysrKysrKysrKysrKysrKysrLS0tCiBzcmMvYmluL3Bz cWwvdGFiLWNvbXBsZXRlLmluLmMgICAgICAgICAgICB8ICAxNyArKwogc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgfCAxMDkgKysrKysrKysrKysrKwogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsICAgICAgfCAgNDcgKysrKysrCiBzcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsICAgICB8ICA4NSArKysrKysrKysrCiA1IGZpbGVz IGNoYW5nZWQsIDQxNCBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCmluZGV4IGU2NDg1ODI3YjFjLi5iNDMxY2NmODAyYSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAgLTY3LDcgKzY3LDggQEAg c3RhdGljIHZvaWQgQ2xvc2VUYWJsZUxpc3QoTGlzdCAqcmVscyk7CiBzdGF0aWMgdm9pZCBMb2Nr U2NoZW1hTGlzdChMaXN0ICpzY2hlbWFsaXN0KTsKIHN0YXRpYyB2b2lkIFB1YmxpY2F0aW9uQWRk VGFibGVzKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBpZl9ub3RfZXhpc3RzLAogCQkJCQkJ CQkgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpOwotc3RhdGljIHZvaWQgUHVibGljYXRpb25E cm9wVGFibGVzKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBtaXNzaW5nX29rKTsKK3N0YXRp YyB2b2lkIFB1YmxpY2F0aW9uRHJvcFRhYmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wg bWlzc2luZ19vaywKKwkJCQkJCQkJICBib29sIGRlbGV0ZV9leGNsdWRlZCk7CiBzdGF0aWMgdm9p ZCBQdWJsaWNhdGlvbkFkZFNjaGVtYXMoT2lkIHB1YmlkLCBMaXN0ICpzY2hlbWFzLCBib29sIGlm X25vdF9leGlzdHMsCiAJCQkJCQkJCSAgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpOwogc3Rh dGljIHZvaWQgUHVibGljYXRpb25Ecm9wU2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMs IGJvb2wgbWlzc2luZ19vayk7CkBAIC0xNDI4LDcgKzE0MjksNyBAQCBBbHRlclB1YmxpY2F0aW9u VGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQlQdWJs aWNhdGlvbkFkZFRhYmxlcyhwdWJpZCwgcmVscywgZmFsc2UsIHN0bXQpOwogCX0KIAllbHNlIGlm IChzdG10LT5hY3Rpb24gPT0gQVBfRHJvcE9iamVjdHMpCi0JCVB1YmxpY2F0aW9uRHJvcFRhYmxl cyhwdWJpZCwgcmVscywgZmFsc2UpOworCQlQdWJsaWNhdGlvbkRyb3BUYWJsZXMocHViaWQsIHJl bHMsIGZhbHNlLCBmYWxzZSk7CiAJZWxzZQkJCQkJCS8qIEFQX1NldE9iamVjdHMgKi8KIAl7CiAJ CUxpc3QJICAgKm9sZHJlbGlkcyA9IE5JTDsKQEAgLTE1NjMsNyArMTU2NCw3IEBAIEFsdGVyUHVi bGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAs CiAJCX0KIAogCQkvKiBBbmQgZHJvcCB0aGVtLiAqLwotCQlQdWJsaWNhdGlvbkRyb3BUYWJsZXMo cHViaWQsIGRlbHJlbHMsIHRydWUpOworCQlQdWJsaWNhdGlvbkRyb3BUYWJsZXMocHViaWQsIGRl bHJlbHMsIHRydWUsIHRydWUpOwogCiAJCS8qCiAJCSAqIERvbid0IGJvdGhlciBjYWxjdWxhdGlu ZyB0aGUgZGlmZmVyZW5jZSBmb3IgYWRkaW5nLCB3ZSdsbCBjYXRjaCBhbmQKQEAgLTE2NjUsOCAr MTY2Niw4IEBAIEFsdGVyUHVibGljYXRpb25TY2hlbWFzKEFsdGVyUHVibGljYXRpb25TdG10ICpz dG10LAogCiAJLyoKIAkgKiBJbmNyZW1lbnQgdGhlIGNvbW1hbmQgY291bnRlciBzbyB0aGF0IGlz X3NjaGVtYV9wdWJsaWNhdGlvbigpIGluCi0JICogR2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxl cygpIGNhbiBzZWUgdGhlIGp1c3QtaW5zZXJ0ZWQgc2NoZW1hCi0JICogcm93cyB3aGVuIEFsdGVy UHVibGljYXRpb25TY2hlbWFFeGNlcHRUYWJsZXMgcnVucyBuZXh0LgorCSAqIEdldEV4Y2x1ZGVk UHVibGljYXRpb25UYWJsZXMoKSBjYW4gc2VlIHRoZSBqdXN0LWluc2VydGVkIHNjaGVtYSByb3dz CisJICogd2hlbiBBbHRlclB1YmxpY2F0aW9uU2NoZW1hRXhjZXB0VGFibGVzIHJ1bnMgbmV4dC4K IAkgKi8KIAlpZiAoc3RtdC0+YWN0aW9uID09IEFQX0FkZE9iamVjdHMgfHwgc3RtdC0+YWN0aW9u ID09IEFQX1NldE9iamVjdHMpCiAJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CkBAIC0xNjg0 LDE2ICsxNjg1LDE4IEBAIEFsdGVyUHVibGljYXRpb25TY2hlbWFzKEFsdGVyUHVibGljYXRpb25T dG10ICpzdG10LAogICovCiBzdGF0aWMgdm9pZAogQWx0ZXJQdWJsaWNhdGlvblNjaGVtYUV4Y2Vw dFRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKLQkJCQkJCQkgSGVhcFR1cGxlIHR1 cCwgTGlzdCAqZXhjZXB0X3B1YnRhYmxlcywKLQkJCQkJCQkgTGlzdCAqc2NoZW1haWRsaXN0KQor CQkJCQkJCQkgICBIZWFwVHVwbGUgdHVwLCBMaXN0ICpleGNlcHRfcHVidGFibGVzLAorCQkJCQkJ CQkgICBMaXN0ICpzY2hlbWFpZGxpc3QpCiB7CiAJRm9ybV9wZ19wdWJsaWNhdGlvbiBwdWJmb3Jt ID0gKEZvcm1fcGdfcHVibGljYXRpb24pIEdFVFNUUlVDVCh0dXApOwogCU9pZAkJCXB1YmlkID0g cHViZm9ybS0+b2lkOwogCiAJLyoKLQkgKiBOb3RoaW5nIHRvIGRvIGlmIG5vIEVYQ0VQVCBlbnRy aWVzLgorCSAqIE5vdGhpbmcgdG8gZG8gaWYgdGhlcmUgYXJlIG5vIEVYQ0VQVCBlbnRyaWVzLCB1 bmxlc3MgaGFuZGxpbmcgdGhlIFNFVAorCSAqIGNvbW1hbmQsIGJlY2F1c2UgaWYgdGhlIHVzZXIg aGFzIHJlbW92ZWQgYWxsIGV4Y2VwdGlvbnMgd2UgbmVlZCB0byBkcm9wCisJICogYW55IGV4aXN0 aW5nIG9uZXMuCiAJICovCi0JaWYgKCFleGNlcHRfcHVidGFibGVzKQorCWlmICghZXhjZXB0X3B1 YnRhYmxlcyAmJiBzdG10LT5hY3Rpb24gIT0gQVBfU2V0T2JqZWN0cykKIAkJcmV0dXJuOwogCiAJ LyoKQEAgLTE3MTQsMTYgKzE3MTcsNiBAQCBBbHRlclB1YmxpY2F0aW9uU2NoZW1hRXhjZXB0VGFi bGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVB VFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkgZXJybXNnKCJFWENFUFQgY2xhdXNlIGlzIG5vdCBz dXBwb3J0ZWQgd2l0aCBEUk9QIGluIEFMVEVSIFBVQkxJQ0FUSU9OIikpKTsKIAotCS8qCi0JICog WFhYIEVYQ0VQVCB3aXRoIFNFVCBpcyBub3QgY3VycmVudGx5IGltcGxlbWVudGVkLiAgV29ya2Fy b3VuZDogRFJPUCBhbmQKLQkgKiByZS1BREQgdGhlIHNjaGVtYSB3aXRoIHRoZSBkZXNpcmVkIEVY Q0VQVCBsaXN0LgotCSAqLwotCWlmIChzdG10LT5hY3Rpb24gPT0gQVBfU2V0T2JqZWN0cykKLQkJ ZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCi0JCQkJIGVycm1zZygiRVhDRVBUIGNsYXVzZSBpcyBub3Qgc3VwcG9ydGVkIHdpdGggU0VU IGluIEFMVEVSIFBVQkxJQ0FUSU9OIiksCi0JCQkJIGVycmhpbnQoIkRyb3AgYW5kIHJlLWFkZCB0 aGUgc2NoZW1hIHdpdGggdGhlIGRlc2lyZWQgRVhDRVBUIGxpc3QuIikpKTsKLQogCWlmIChzdG10 LT5hY3Rpb24gPT0gQVBfQWRkT2JqZWN0cykKIAl7CiAJCUxpc3QJICAgKnJlbHM7CkBAIC0xNzQy LDYgKzE3MzUsNzYgQEAgQWx0ZXJQdWJsaWNhdGlvblNjaGVtYUV4Y2VwdFRhYmxlcyhBbHRlclB1 YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAogCQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJpZCwgcmVs cywgZmFsc2UsIHN0bXQpOwogCisJCUNsb3NlVGFibGVMaXN0KHJlbHMpOworCX0KKwllbHNlCQkJ CQkJLyogQVBfU2V0T2JqZWN0cyAqLworCXsKKwkJTGlzdAkgICAqb2xkZXhjZXB0cmVsaWRzID0g TklMOworCQlMaXN0CSAgICpuZXdleGNlcHRyZWxpZHMgPSBOSUw7CisJCUxpc3QJICAgKmRlbHJl bGlkcyA9IE5JTDsKKwkJTGlzdAkgICAqcmVsczsKKwkJTGlzdAkgICAqZXhwbGljaXRyZWxpZHM7 CisKKwkJcmVscyA9IE9wZW5UYWJsZUxpc3QoZXhjZXB0X3B1YnRhYmxlcyk7CisKKwkJLyogQ29s bGVjdCBPSURzIG9mIHRoZSBkZXNpcmVkIG5ldyBFWENFUFQgbGlzdC4gKi8KKwkJZm9yZWFjaF9w dHIoUHVibGljYXRpb25SZWxJbmZvLCBwcmksIHJlbHMpCisJCQluZXdleGNlcHRyZWxpZHMgPSBs YXBwZW5kX29pZChuZXdleGNlcHRyZWxpZHMsCisJCQkJCQkJCQkJICBSZWxhdGlvbkdldFJlbGlk KHByaS0+cmVsYXRpb24pKTsKKworCQlleHBsaWNpdHJlbGlkcyA9IEdldEluY2x1ZGVkUHVibGlj YXRpb25SZWxhdGlvbnMocHViaWQsCisJCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX1JP T1QpOworCisJCS8qCisJCSAqIFZhbGlkYXRlIHRoYXQgbm8gZXhjbHVkZWQgdGFibGUgaXMgYWxz byBhbHJlYWR5IGV4cGxpY2l0bHkKKwkJICogcHVibGlzaGVkIChleGFjdCBtYXRjaCksIGFuZCB0 aGF0IG5vIGFscmVhZHktcHVibGlzaGVkIHBhcnRpdGlvbgorCQkgKiBoYXMgaXRzIHJvb3QgYW1v bmcgdGhlIHRhYmxlcyBiZWluZyBuZXdseSBleGNsdWRlZCBoZXJlLgorCQkgKi8KKwkJQ2hlY2tF eGNlcHROb3RJblRhYmxlTGlzdChyZWxzLCBleHBsaWNpdHJlbGlkcyk7CisKKwkJLyoKKwkJICog R2V0IHRoZSBjdXJyZW50IHNldCBvZiBFWENFUFQgZW50cmllcy4gIE9ubHkgRk9SIEFMTCBUQUJM RVMgYW5kCisJCSAqIHNjaGVtYS1sZXZlbCBwdWJsaWNhdGlvbnMgY2FuIGhhdmUgRVhDRVBUIGVu dHJpZXM7IGZvciBhbnkgb3RoZXIKKwkJICogcHVibGljYXRpb24gdHlwZSBvbGRleGNlcHRyZWxp ZHMgc3RheXMgTklMLgorCQkgKgorCQkgKiBOb3RlOiB3ZSBjaGVjayBpc19zY2hlbWFfcHVibGlj YXRpb24oKSBhZ2FpbnN0IHRoZSBjdXJyZW50IGNhdGFsb2cKKwkJICogc3RhdGUgKGJlZm9yZSBB bHRlclB1YmxpY2F0aW9uU2NoZW1hcyBoYXMgcnVuKSwgc28gaWYgdGhlIGNhbGxlciBpcworCQkg KiBkb2luZyBTRVQgVEFCTEUgdDEgdG8gY29udmVydCBhIHNjaGVtYSBwdWJsaWNhdGlvbiBpbnRv IGEgcGxhaW4KKwkJICogdGFibGUgcHVibGljYXRpb24sIGlzX3NjaGVtYV9wdWJsaWNhdGlvbigp IHN0aWxsIHJldHVybnMgdHJ1ZSBoZXJlLgorCQkgKiBUaGF0IGlzIGludGVudGlvbmFsOiBpdCBs ZXRzIHVzIGRpc2NvdmVyIGFuZCBjbGVhbiB1cCBhbnkgc3RhbGUKKwkJICogRVhDRVBUIGVudHJp ZXMgdGhhdCBiZWxvbmcgdG8gdGhlIG9sZCBzY2hlbWEgZGVmaW5pdGlvbi4KKwkJICovCisJCWlm IChHZXRQdWJsaWNhdGlvbihwdWJpZCktPmFsbHRhYmxlcyB8fCBpc19zY2hlbWFfcHVibGljYXRp b24ocHViaWQpKQorCQkJb2xkZXhjZXB0cmVsaWRzID0gR2V0RXhjbHVkZWRQdWJsaWNhdGlvblRh YmxlcyhwdWJpZCwKKwkJCQkJCQkJCQkJCQkJICAgUFVCTElDQVRJT05fUEFSVF9ST09UKTsKKwor CQkvKiBCdWlsZCBhIGxpc3Qgb2Ygb2xkIEVYQ0VQVCBlbnRyaWVzIG5vdCBwcmVzZW50IGluIHRo ZSBuZXcgbGlzdC4gKi8KKwkJZm9yZWFjaF9vaWQob2xkcmVsaWQsIG9sZGV4Y2VwdHJlbGlkcykK KwkJeworCQkJaWYgKCFsaXN0X21lbWJlcl9vaWQobmV3ZXhjZXB0cmVsaWRzLCBvbGRyZWxpZCkp CisJCQkJZGVscmVsaWRzID0gbGFwcGVuZF9vaWQoZGVscmVsaWRzLCBvbGRyZWxpZCk7CisJCX0K KworCQkvKiBEcm9wIG9sZCBFWENFUFQgZW50cmllcyBub3QgcHJlc2VudCBpbiB0aGUgbmV3IGxp c3QuICovCisJCWZvcmVhY2hfb2lkKHJlbGlkLCBkZWxyZWxpZHMpCisJCXsKKwkJCU9pZAkJCXBy b2lkOworCQkJT2JqZWN0QWRkcmVzcyBvYmo7CisKKwkJCXByb2lkID0gR2V0U3lzQ2FjaGVPaWQy KFBVQkxJQ0FUSU9OUkVMTUFQLAorCQkJCQkJCQkJQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfb2lk LAorCQkJCQkJCQkJT2JqZWN0SWRHZXREYXR1bShyZWxpZCksCisJCQkJCQkJCQlPYmplY3RJZEdl dERhdHVtKHB1YmlkKSk7CisJCQlpZiAoT2lkSXNWYWxpZChwcm9pZCkpCisJCQl7CisJCQkJT2Jq ZWN0QWRkcmVzc1NldChvYmosIFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCwgcHJvaWQpOworCQkJ CXBlcmZvcm1EZWxldGlvbigmb2JqLCBEUk9QX0NBU0NBREUsIDApOworCQkJfQorCQl9CisKKwkJ LyogQWRkIG5ldyBFWENFUFQgZW50cmllcywgc2tpcHBpbmcgYW55IGFscmVhZHkgcHJlc2VudC4g Ki8KKwkJUHVibGljYXRpb25BZGRUYWJsZXMocHViaWQsIHJlbHMsIHRydWUsIHN0bXQpOworCiAJ CUNsb3NlVGFibGVMaXN0KHJlbHMpOwogCX0KIH0KQEAgLTIzNjUsMzMgKzI0MjgsNjggQEAgUHVi bGljYXRpb25BZGRUYWJsZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIGlmX25vdF9leGlz dHMsCiAKIC8qCiAgKiBSZW1vdmUgbGlzdGVkIHRhYmxlcyBmcm9tIHRoZSBwdWJsaWNhdGlvbi4K KyAqCisgKiBkZWxldGVfZXhjbHVkZWQgY29udHJvbHMgaG93IEVYQ0VQVCAocHJleGNlcHQ9dHJ1 ZSkgcm93cyBhcmUgaGFuZGxlZDoKKyAqICAgdHJ1ZSAgLSBkZWxldGUgdGhlbSBzaWxlbnRseS4g IFVzZWQgYnkgdGhlIFNFVCBwYXRoIHRvIGNsZWFyIHN0YWxlCisgKiAgICAgICAgICAgRVhDRVBU IHJvd3MgdGhhdCBhcmUgYmVpbmcgcmVwbGFjZWQgYnkgYSBuZXcgRVhDRVBUIGxpc3QuCisgKiAg IGZhbHNlIC0gdHJlYXQgdGhlbSBhcyAibm90IGEgbWVtYmVyIi4gVXNlZCBieSBBTFRFUiAuLi4g RFJPUCBUQUJMRTogYW4KKyAqICAgICAgICAgICBFWENFUFQgZW50cnkgaXMgbm90IHNvbWV0aGlu ZyBEUk9QIFRBQkxFIGlzIGV4cGVjdGVkIHRvIHJlbW92ZS4KICAqLwogc3RhdGljIHZvaWQKLVB1 YmxpY2F0aW9uRHJvcFRhYmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgbWlzc2luZ19v aykKK1B1YmxpY2F0aW9uRHJvcFRhYmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgbWlz c2luZ19vaywKKwkJCQkJICBib29sIGRlbGV0ZV9leGNsdWRlZCkKIHsKIAlPYmplY3RBZGRyZXNz IG9iajsKIAlMaXN0Q2VsbCAgICpsYzsKLQlPaWQJCQlwcmlkOwogCiAJZm9yZWFjaChsYywgcmVs cykKIAl7CiAJCVB1YmxpY2F0aW9uUmVsSW5mbyAqcHVicmVsID0gKFB1YmxpY2F0aW9uUmVsSW5m byAqKSBsZmlyc3QobGMpOwogCQlSZWxhdGlvbglyZWwgPSBwdWJyZWwtPnJlbGF0aW9uOwogCQlP aWQJCQlyZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsKKwkJSGVhcFR1cGxlCXR1cDsKKwkJ Rm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwgcHVicmVsZm9ybTsKKwkJT2lkCQkJcHJpZCA9IEludmFs aWRPaWQ7CisJCWJvb2wJCWlzX2V4Y2VwdCA9IGZhbHNlOwogCiAJCWlmIChwdWJyZWwtPmNvbHVt bnMpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9S KSwKIAkJCQkJZXJybXNnKCJjb2x1bW4gbGlzdCBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgaW4gQUxU RVIgUFVCTElDQVRJT04gLi4uIERST1AiKSk7CiAKLQkJcHJpZCA9IEdldFN5c0NhY2hlT2lkMihQ VUJMSUNBVElPTlJFTE1BUCwgQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfb2lkLAotCQkJCQkJCSAg IE9iamVjdElkR2V0RGF0dW0ocmVsaWQpLAotCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0ocHVi aWQpKTsKLQkJaWYgKCFPaWRJc1ZhbGlkKHByaWQpKQorCQl0dXAgPSBTZWFyY2hTeXNDYWNoZTIo UFVCTElDQVRJT05SRUxNQVAsCisJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKHJlbGlkKSwKKwkJ CQkJCQkgIE9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsKKwkJaWYgKEhlYXBUdXBsZUlzVmFsaWQo dHVwKSkKKwkJeworCQkJcHVicmVsZm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VU U1RSVUNUKHR1cCk7CisJCQlpc19leGNlcHQgPSBwdWJyZWxmb3JtLT5wcmV4Y2VwdDsKKwkJCXBy aWQgPSBwdWJyZWxmb3JtLT5vaWQ7CisJCQlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKwkJfQorCisJ CS8qCisJCSAqIERST1AgVEFCTEUgb3BlcmF0ZXMgb25seSBvbiByZWd1bGFyIG1lbWJlciByb3dz LiAgQSBtaXNzaW5nIHJvdworCQkgKiBhbmQgYW4gRVhDRVBUIHJvdyBib3RoIG1lYW4gdGhlIHRh YmxlIGlzbid0IGN1cnJlbnRseSBwdWJsaXNoZWQsCisJCSAqIGJ1dCB3ZSBkaXN0aW5ndWlzaCB0 aGVtIHNvIHRoZSBFWENFUFQgY2FzZSBjYW4gY2FycnkgYSBoaW50CisJCSAqIHBvaW50aW5nIHRo ZSB1c2VyIGF0IHRoZSBFWENFUFQgbGlzdC4gIFRoZSBTRVQtY2xlYW51cCBjYWxsZXIKKwkJICog KGRlbGV0ZV9leGNsdWRlZCA9IHRydWUpIGludGVuZHMgdG8gcmVtb3ZlIEVYQ0VQVCByb3dzIGFu ZCBzbworCQkgKiBieXBhc3NlcyB0aGUgRVhDRVBUIGhhbGYgb2YgdGhpcyBjaGVjay4KKwkJICov CisJCWlmICghT2lkSXNWYWxpZChwcmlkKSB8fCAoaXNfZXhjZXB0ICYmICFkZWxldGVfZXhjbHVk ZWQpKQogCQl7CiAJCQlpZiAobWlzc2luZ19vaykKIAkJCQljb250aW51ZTsKIAorCQkJaWYgKGlz X2V4Y2VwdCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRF RklORURfT0JKRUNUKSwKKwkJCQkJCSBlcnJtc2coImNhbm5vdCBkcm9wIHRhYmxlIFwiJXNcIiBm cm9tIHB1YmxpY2F0aW9uIFwiJXNcIiIsCisJCQkJCQkJCVJlbGF0aW9uR2V0UXVhbGlmaWVkUmVs YXRpb25OYW1lKHJlbCksCisJCQkJCQkJCWdldF9wdWJsaWNhdGlvbl9uYW1lKHB1YmlkLCBmYWxz ZSkpLAorCQkJCQkJIGVycmRldGFpbCgiVGhlIHRhYmxlIGlzIGN1cnJlbnRseSBsaXN0ZWQgaW4g dGhlIEVYQ0VQVCBjbGF1c2Ugb2YgdGhlIHB1YmxpY2F0aW9uLiIpLAorCQkJCQkJIGVycmhpbnQo IlVzZSBBTFRFUiBQVUJMSUNBVElPTiAuLi4gU0VUIFRBQkxFUyBJTiBTQ0hFTUEgLi4uIEVYQ0VQ VCB0byBkcm9wIHRoZSB0YWJsZSBmcm9tIHRoZSBFWENFUFQgbGlzdC4iKSkpOworCiAJCQllcmVw b3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAogCQkJ CQkgZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgaXMgbm90IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9u IiwKQEAgLTI0NDcsNiArMjU0NSw3IEBAIFB1YmxpY2F0aW9uRHJvcFNjaGVtYXMoT2lkIHB1Ymlk LCBMaXN0ICpzY2hlbWFzLCBib29sIG1pc3Npbmdfb2spCiAJZm9yZWFjaChsYywgc2NoZW1hcykK IAl7CiAJCU9pZAkJCXNjaGVtYWlkID0gbGZpcnN0X29pZChsYyk7CisJCUxpc3QJICAgKmV4Y2Vw dF9yZWxpZHM7CiAKIAkJcHNpZCA9IEdldFN5c0NhY2hlT2lkMihQVUJMSUNBVElPTk5BTUVTUEFD RU1BUCwKIAkJCQkJCQkgICBBbnVtX3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZV9vaWQsCkBAIC0y NDYzLDggKzI1NjIsNDAgQEAgUHVibGljYXRpb25Ecm9wU2NoZW1hcyhPaWQgcHViaWQsIExpc3Qg KnNjaGVtYXMsIGJvb2wgbWlzc2luZ19vaykKIAkJCQkJCQlnZXRfbmFtZXNwYWNlX25hbWUoc2No ZW1haWQpKSkpOwogCQl9CiAKKwkJLyoKKwkJICogQ29sbGVjdCBFWENFUFQgZW50cmllcyBmb3Ig dGFibGVzIGJlbG9uZ2luZyB0byB0aGlzIHNjaGVtYSBiZWZvcmUKKwkJICogcmVtb3ZpbmcgdGhl IHNjaGVtYSBlbnRyeS4KKwkJICovCisJCWV4Y2VwdF9yZWxpZHMgPSBHZXRFeGNsdWRlZFB1Ymxp Y2F0aW9uVGFibGVzKHB1YmlkLCBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCiAJCU9iamVjdEFk ZHJlc3NTZXQob2JqLCBQdWJsaWNhdGlvbk5hbWVzcGFjZVJlbGF0aW9uSWQsIHBzaWQpOwogCQlw ZXJmb3JtRGVsZXRpb24oJm9iaiwgRFJPUF9DQVNDQURFLCAwKTsKKworCQkvKgorCQkgKiBEcm9w IGFueSBwcmV4Y2VwdCByb3dzIGZvciB0YWJsZXMgYmVsb25naW5nIHRvIHRoaXMgc2NoZW1hLiBU aGVzZQorCQkgKiByb3dzIGhhdmUgbm8gcGdfZGVwZW5kIGVudHJ5IHBvaW50aW5nIGF0IHRoZQor CQkgKiBwZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2Ugcm93LCBzbyB0aGV5IGFyZSBub3QgY2FzY2Fk ZWQgYnkgdGhlCisJCSAqIHBlcmZvcm1EZWxldGlvbigpIGNhbGwgYWJvdmUgYW5kIG11c3QgYmUg Y2xlYW5lZCB1cCBleHBsaWNpdGx5LgorCQkgKi8KKwkJZm9yZWFjaF9vaWQocmVsaWQsIGV4Y2Vw dF9yZWxpZHMpCisJCXsKKwkJCU9pZAkJCXByb2lkOworCisJCQlpZiAoZ2V0X3JlbF9uYW1lc3Bh Y2UocmVsaWQpICE9IHNjaGVtYWlkKQorCQkJCWNvbnRpbnVlOworCisJCQlwcm9pZCA9IEdldFN5 c0NhY2hlT2lkMihQVUJMSUNBVElPTlJFTE1BUCwKKwkJCQkJCQkJCUFudW1fcGdfcHVibGljYXRp b25fcmVsX29pZCwKKwkJCQkJCQkJCU9iamVjdElkR2V0RGF0dW0ocmVsaWQpLAorCQkJCQkJCQkJ T2JqZWN0SWRHZXREYXR1bShwdWJpZCkpOworCQkJaWYgKE9pZElzVmFsaWQocHJvaWQpKQorCQkJ eworCQkJCU9iamVjdEFkZHJlc3NTZXQob2JqLCBQdWJsaWNhdGlvblJlbFJlbGF0aW9uSWQsIHBy b2lkKTsKKwkJCQlwZXJmb3JtRGVsZXRpb24oJm9iaiwgRFJPUF9DQVNDQURFLCAwKTsKKwkJCX0K KwkJfQorCisJCWxpc3RfZnJlZShleGNlcHRfcmVsaWRzKTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuaW4uYwppbmRleCAyMzAwOWNhMmY0MC4uZGNkYzM4OTMxMTIgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmluLmMKQEAgLTIzNzYsNiArMjM3NiwyMyBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0 dGVybl9pZCwKIAl9CiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBN YXRjaEFueSwgIkFERCIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnksICJFWENF UFQiLCAiKCIsICJUQUJMRSIsIE1hdGNoQW55TikgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcp KQogCQlDT01QTEVURV9XSVRIKCIpIik7CisJLyogQWZ0ZXIgYSBzaW5nbGUgc2NoZW1hIG5hbWUg aW4gU0VUIGNvbnRleHQsIG9mZmVyIEVYQ0VQVCAoIFRBQkxFICovCisJZWxzZSBpZiAoTWF0Y2hl cygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIsICJUQUJMRVMiLCAiSU4i LCAiU0NIRU1BIiwgTWF0Y2hBbnkpICYmCisJCQkgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQor CQlDT01QTEVURV9XSVRIKCJFWENFUFQgKCBUQUJMRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFM VEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQiLCAiVEFCTEVTIiwgIklOIiwgIlND SEVNQSIsIE1hdGNoQW55LCAiRVhDRVBUIikpCisJCUNPTVBMRVRFX1dJVEgoIiggVEFCTEUiKTsK KwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiU0VU IiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIsICIoIikpCisJ CUNPTVBMRVRFX1dJVEgoIlRBQkxFIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVC TElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgIkNV UlJFTlRfU0NIRU1BIiwgIkVYQ0VQVCIsICIoIiwgIlRBQkxFIikpCisJCUNPTVBMRVRFX1dJVEhf UVVFUllfVkVSQkFUSU0oUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzX2luX2N1cnJlbnRfc2NoZW1h KTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAi U0VUIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIsICIoIiwg IlRBQkxFIikpCisJeworCQlzZXRfY29tcGxldGlvbl9yZWZlcmVuY2UocHJldjRfd2QpOworCQlD T01QTEVURV9XSVRIX1FVRVJZX1ZFUkJBVElNKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlc19pbl9z Y2hlbWEpOworCX0KKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1h dGNoQW55LCAiU0VUIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQ VCIsICIoIiwgIlRBQkxFIiwgTWF0Y2hBbnlOKSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcsJykp CisJCUNPTVBMRVRFX1dJVEgoIikiKTsKIAkvKiBBTFRFUiBQVUJMSUNBVElPTiA8bmFtZT4gU0VU ICggKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55 LCBNYXRjaEFueU4sICJTRVQiLCAiKCIpKQogCQlDT01QTEVURV9XSVRIKCJwdWJsaXNoIiwgInB1 Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnMiLCAicHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QiKTsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXggMTNkZDMzNGQy YmEuLmQwMDM3ZWQzZGE0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1 YmxpY2F0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9u Lm91dApAQCAtNjkwLDYgKzY5MCwxMTUgQEAgRXhjZXB0IHRhYmxlczoKICAgICAicHViX3Rlc3Qu dGVzdHB1Yl90YmxfczEiCiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MyIgogCistLSBTRVQ6 IHJlcGxhY2UgdGhlIGV4Y2VwdCBsaXN0IChrZWVwIHNhbWUgc2NoZW1hLCBkaWZmZXJlbnQgZXhj ZXB0IHRhYmxlKQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VUIFRB QkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3Ri bF9zMik7CitcZFJwKyB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfYWx0 ZXJfZXhjZXB0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBz ZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5l cmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYg ICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBu b25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCitUYWJsZXMgZnJvbSBzY2hlbWFzOgorICAg ICJwdWJfdGVzdCIKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1Yl90ZXN0LnRlc3RwdWJfdGJsX3My IgorCistLSBmYWlsOiB0YWJsZSBpbiBFWENFUFQgY2xhdXNlIGFsc28gYXBwZWFycyBpbiB0aGUg ZXhwbGljaXQgdGFibGUgbGlzdAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNl cHQgU0VUIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLCBUQUJMRVMgSU4gU0NIRU1BIHB1 Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEpOworRVJST1I6ICB0 YWJsZSAicHViX3Rlc3QudGVzdHB1Yl90YmxfczEiIGNhbm5vdCBiZSBib3RoIHB1Ymxpc2hlZCBh bmQgZXhjbHVkZWQKKy0tIGZhaWw6IGV4cGxpY2l0IHBhcnRpdGlvbiArIEVYQ0VQVC1lZCByb290 LCBnaXZlbiBpbiBhIHNpbmdsZSBTRVQgc3RhdGVtZW50CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX2FsdGVyX2V4Y2VwdCBTRVQgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0X3MsIFRBQkxF UyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3BhcnRl ZF9zKTsKK0VSUk9SOiAgcGFydGl0aW9uICJwdWJfdGVzdC50ZXN0cHViX3BhcnRfcyIgY2Fubm90 IGJlIGJvdGggcHVibGlzaGVkIGFuZCBleGNsdWRlZAorREVUQUlMOiAgQW5jZXN0b3IgInB1Yl90 ZXN0LnRlc3RwdWJfcGFydGVkX3MiIGlzIGFsc28gYmVpbmcgZXhjbHVkZWQgYnkgdGhpcyBzYW1l IGNvbW1hbmQuCistLSBmYWlsOiBleGNlcHQgdGFibGUncyBzY2hlbWEgKHB1YmxpYykgbm90IGlu IHRoZSBwdWJsaWNhdGlvbidzIHNjaGVtYSBsaXN0IChwdWJfdGVzdCkKK0FMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVY Q0VQVCAoVEFCTEUgcHVibGljLnRlc3RwdWJfdGJsMSk7CitFUlJPUjogIHRhYmxlICJwdWJsaWMu dGVzdHB1Yl90YmwxIiBpbiBFWENFUFQgY2xhdXNlIGRvZXMgbm90IGJlbG9uZyB0byBzY2hlbWEg InB1Yl90ZXN0IgorTElORSAxOiAuLi54Y2VwdCBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVz dCBFWENFUFQgKFRBQkxFIHB1YmxpYy50ZXMuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBTRVQ6IHVucXVhbGlmaWVk IG5hbWUgaW4gRVhDRVBUIGlzIGltcGxpY2l0bHkgcXVhbGlmaWVkIHdpdGggdGhlIHNjaGVtYQor QUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VUIFRBQkxFUyBJTiBTQ0hF TUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSB0ZXN0cHViX3RibF9zMSk7CitcZFJwKyB0ZXN0cHVi X2FsdGVyX2V4Y2VwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSBy b290IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYg ICAgICAgIHwgCitUYWJsZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJfdGVzdCIKK0V4Y2VwdCB0 YWJsZXM6CisgICAgInB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxIgorCistLSBTRVQgd2l0aG91dCBF WENFUFQgY2xlYXJzIHRoZSBleGlzdGluZyBleGNlcHQgbGlzdAorQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitcZFJw KyB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfYWx0ZXJfZXhjZXB0Cisg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1u cyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAg ICAgICB8IGYgICAgICAgIHwgCitUYWJsZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJfdGVzdCIK KworLS0gU0VUIHRvIGEgZGlmZmVyZW50IHNjaGVtYSByZW1vdmVzIG9sZCBzY2hlbWEncyBFWENF UFQgZW50cmllcworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VUIFRB QkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSB0ZXN0cHViX3RibF9zMSk7CitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBTRVQgVEFCTEVTIElOIFNDSEVN QSBwdWJsaWM7CitcZFJwKyB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJf YWx0ZXJfZXhjZXB0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFs bCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBH ZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCitUYWJsZXMgZnJvbSBzY2hlbWFzOgor ICAgICJwdWJsaWMiCisKKy0tIGZhaWw6IG5vbmV4aXN0ZW50IHRhYmxlIGluIEVYQ0VQVCBjbGF1 c2UgKFNFVCBwYXRoKQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VU IFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC5ub25leGlz dGVudF90YWJsZSk7CitFUlJPUjogIHJlbGF0aW9uICJwdWJfdGVzdC5ub25leGlzdGVudF90YWJs ZSIgZG9lcyBub3QgZXhpc3QKKy0tIFNFVDogbXVsdGlwbGUgc2NoZW1hcyBlYWNoIHdpdGggdGhl aXIgb3duIEVYQ0VQVCBjbGF1c2UKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhj ZXB0IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3Qu dGVzdHB1Yl90YmxfczEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBFWENFUFQgKFRBQkxFIHRlc3Rw dWJfdGJsMSk7CitcZFJwKyB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJf YWx0ZXJfZXhjZXB0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFs bCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBH ZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCitUYWJsZXMgZnJvbSBzY2hlbWFzOgor ICAgICJwdWJfdGVzdCIKKyAgICAicHVibGljIgorRXhjZXB0IHRhYmxlczoKKyAgICAicHViX3Rl c3QudGVzdHB1Yl90YmxfczEiCisgICAgInB1YmxpYy50ZXN0cHViX3RibDEiCisKKy0tIGZhaWw6 IEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBEUk9QIFRBQkxFIG9uIGFuIGV4Y2x1ZGVkIHRhYmxlIGlz IHJlamVjdGVkCistLSB3aXRoIGFuIEVYQ0VQVC1zcGVjaWZpYyBlcnJvci4KK0FMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IERST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90 YmxfczE7CitFUlJPUjogIGNhbm5vdCBkcm9wIHRhYmxlICJwdWJfdGVzdC50ZXN0cHViX3RibF9z MSIgZnJvbSBwdWJsaWNhdGlvbiAidGVzdHB1Yl9hbHRlcl9leGNlcHQiCitERVRBSUw6ICBUaGUg dGFibGUgaXMgY3VycmVudGx5IGxpc3RlZCBpbiB0aGUgRVhDRVBUIGNsYXVzZSBvZiB0aGUgcHVi bGljYXRpb24uCitISU5UOiAgVXNlIEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBTRVQgVEFCTEVTIElO IFNDSEVNQSAuLi4gRVhDRVBUIHRvIGRyb3AgdGhlIHRhYmxlIGZyb20gdGhlIEVYQ0VQVCBsaXN0 LgorLS0gdGhlIEVYQ0VQVCBlbnRyeSBpcyBzdGlsbCBwcmVzZW50IGFmdGVyIHRoZSByZWplY3Rl ZCBEUk9QIFRBQkxFCitcZFJwKyB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWJfYWx0ZXJfZXhjZXB0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg ICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCitUYWJsZXMgZnJvbSBzY2hlbWFz OgorICAgICJwdWJfdGVzdCIKKyAgICAicHVibGljIgorRXhjZXB0IHRhYmxlczoKKyAgICAicHVi X3Rlc3QudGVzdHB1Yl90YmxfczEiCisgICAgInB1YmxpYy50ZXN0cHViX3RibDEiCisKKy0tIGZh aWw6IEVYQ0VQVCBpcyBub3QgYWxsb3dlZCB3aXRoIERST1AKK0FMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfYWx0ZXJfZXhjZXB0IERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQg KFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MyKTsKK0VSUk9SOiAgRVhDRVBUIGNsYXVzZSBp cyBub3Qgc3VwcG9ydGVkIHdpdGggRFJPUCBpbiBBTFRFUiBQVUJMSUNBVElPTgorLS0gRFJPUCBU QUJMRVMgSU4gU0NIRU1BIHJlbW92ZXMgYXNzb2NpYXRlZCBFWENFUFQgZW50cmllcworQUxURVIg UFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgRFJPUCBUQUJMRVMgSU4gU0NIRU1BIHB1 Yl90ZXN0OworXGRScCsgdGVzdHB1Yl9hbHRlcl9leGNlcHQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2Fs dGVyX2V4Y2VwdAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwg c2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2Vu ZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBm ICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg bm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8IAorVGFibGVzIGZyb20gc2NoZW1hczoKKyAg ICAicHVibGljIgorRXhjZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKKwog LS0gQ2xlYW51cAogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIERST1AgVEFCTEUgcHViX3Rl c3QudGVzdHB1Yl90YmxfczEsIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MyOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvcHVibGljYXRpb24uc3FsCmluZGV4IDQ4MDFjY2FjMTEyLi45M2Q4MjdmMmIyYyAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbApAQCAtMzY5LDYgKzM2OSw1MyBAQCBBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBEUk9QIFRBQkxFIHB1Yl90ZXN0LnRlc3Rw dWJfcGFydGVkX3M7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBBREQg VEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJf dGJsX3MxLCB0ZXN0cHViX3RibF9zMik7CiBcZFJwKyB0ZXN0cHViX2FsdGVyX2V4Y2VwdAogCist LSBTRVQ6IHJlcGxhY2UgdGhlIGV4Y2VwdCBsaXN0IChrZWVwIHNhbWUgc2NoZW1hLCBkaWZmZXJl bnQgZXhjZXB0IHRhYmxlKQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQg U0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0 cHViX3RibF9zMik7CitcZFJwKyB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorCistLSBmYWlsOiB0YWJs ZSBpbiBFWENFUFQgY2xhdXNlIGFsc28gYXBwZWFycyBpbiB0aGUgZXhwbGljaXQgdGFibGUgbGlz dAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VUIFRBQkxFIHB1Yl90 ZXN0LnRlc3RwdWJfdGJsX3MxLCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFC TEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEpOworCistLSBmYWlsOiBleHBsaWNpdCBwYXJ0aXRp b24gKyBFWENFUFQtZWQgcm9vdCwgZ2l2ZW4gaW4gYSBzaW5nbGUgU0VUIHN0YXRlbWVudAorQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VUIFRBQkxFIHB1Yl90ZXN0LnRl c3RwdWJfcGFydF9zLCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHVi X3Rlc3QudGVzdHB1Yl9wYXJ0ZWRfcyk7CisKKy0tIGZhaWw6IGV4Y2VwdCB0YWJsZSdzIHNjaGVt YSAocHVibGljKSBub3QgaW4gdGhlIHB1YmxpY2F0aW9uJ3Mgc2NoZW1hIGxpc3QgKHB1Yl90ZXN0 KQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VUIFRBQkxFUyBJTiBT Q0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJsaWMudGVzdHB1Yl90YmwxKTsKKworLS0g U0VUOiB1bnF1YWxpZmllZCBuYW1lIGluIEVYQ0VQVCBpcyBpbXBsaWNpdGx5IHF1YWxpZmllZCB3 aXRoIHRoZSBzY2hlbWEKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IFNF VCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgdGVzdHB1Yl90YmxfczEp OworXGRScCsgdGVzdHB1Yl9hbHRlcl9leGNlcHQKKworLS0gU0VUIHdpdGhvdXQgRVhDRVBUIGNs ZWFycyB0aGUgZXhpc3RpbmcgZXhjZXB0IGxpc3QKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJf YWx0ZXJfZXhjZXB0IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworXGRScCsgdGVzdHB1 Yl9hbHRlcl9leGNlcHQKKworLS0gU0VUIHRvIGEgZGlmZmVyZW50IHNjaGVtYSByZW1vdmVzIG9s ZCBzY2hlbWEncyBFWENFUFQgZW50cmllcworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRl cl9leGNlcHQgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSB0ZXN0 cHViX3RibF9zMSk7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBTRVQg VEFCTEVTIElOIFNDSEVNQSBwdWJsaWM7CitcZFJwKyB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorCist LSBmYWlsOiBub25leGlzdGVudCB0YWJsZSBpbiBFWENFUFQgY2xhdXNlIChTRVQgcGF0aCkKK0FM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IFNFVCBUQUJMRVMgSU4gU0NIRU1B IHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3Qubm9uZXhpc3RlbnRfdGFibGUpOworCist LSBTRVQ6IG11bHRpcGxlIHNjaGVtYXMgZWFjaCB3aXRoIHRoZWlyIG93biBFWENFUFQgY2xhdXNl CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBTRVQgVEFCTEVTIElOIFND SEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwdWJsaWMgRVhDRVBUIChUQUJMRSB0ZXN0cHViX3RibDEpOworXGRScCsgdGVz dHB1Yl9hbHRlcl9leGNlcHQKKworLS0gZmFpbDogQUxURVIgUFVCTElDQVRJT04gLi4uIERST1Ag VEFCTEUgb24gYW4gZXhjbHVkZWQgdGFibGUgaXMgcmVqZWN0ZWQKKy0tIHdpdGggYW4gRVhDRVBU LXNwZWNpZmljIGVycm9yLgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQg RFJPUCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMTsKKy0tIHRoZSBFWENFUFQgZW50cnkg aXMgc3RpbGwgcHJlc2VudCBhZnRlciB0aGUgcmVqZWN0ZWQgRFJPUCBUQUJMRQorXGRScCsgdGVz dHB1Yl9hbHRlcl9leGNlcHQKKworLS0gZmFpbDogRVhDRVBUIGlzIG5vdCBhbGxvd2VkIHdpdGgg RFJPUAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgRFJPUCBUQUJMRVMg SU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczIp OworCistLSBEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgcmVtb3ZlcyBhc3NvY2lhdGVkIEVYQ0VQVCBl bnRyaWVzCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBEUk9QIFRBQkxF UyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitcZFJwKyB0ZXN0cHViX2FsdGVyX2V4Y2VwdAorCiAtLSBD bGVhbnVwCiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogRFJPUCBUQUJMRSBwdWJfdGVzdC50 ZXN0cHViX3RibF9zMSwgcHViX3Rlc3QudGVzdHB1Yl90YmxfczI7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDM3X2V4Y2VwdC5wbAppbmRleCAyN2UzMzYyNjdkYi4uMjUxYTg3OTgxYjQgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwKKysrIGIvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbApAQCAtMzc2LDYgKzM3Niw2MSBAQCAkcmVzdWx0 ID0KIGlzKCRyZXN1bHQsIHFxKDApLAogCSdBTFRFUiAuLi4gQUREIFRBQkxFUyBJTiBTQ0hFTUEg RVhDRVBUOiBleGNsdWRlZCB0YWJsZSBub3Qgc3luY2VkJyk7CiAKKyMgU0VUOiByZXBsYWNlIHRo ZSBleGNlcHQgbGlzdDsgdGFiX2V4Y2x1ZGVkIGlzIG5vdyBpbmNsdWRlZCBhbmQgdGFiX3B1Ymxp c2hlZCBpcyBleGNsdWRlZC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIkFMVEVSIFBVQkxJQ0FUSU9OIHNjaF9wdWIgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgc2NoMSBF WENFUFQgKFRBQkxFIHNjaDEudGFiX3B1Ymxpc2hlZCkiCispOworJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiBzY2hfc3ViIFJFRlJF U0ggUFVCTElDQVRJT04iKTsKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlv bl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3NjaF9zdWInKTsKKworJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJSU5TRVJUIElOVE8gc2NoMS50YWJfcHVibGlz aGVkIFZBTFVFUyAoNyk7CisJSU5TRVJUIElOVE8gc2NoMS50YWJfZXhjbHVkZWQgVkFMVUVTICg3 KTsKKykpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzY2hfc3ViJyk7CisK KyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki U0VMRUNUIGNvdW50KCopIEZST00gc2NoMS50YWJfZXhjbHVkZWQgV0hFUkUgYSA9IDciKTsKK2lz KCRyZXN1bHQsIHFxKDEpLAorCSdBTFRFUiAuLi4gU0VUIFRBQkxFUyBJTiBTQ0hFTUEgRVhDRVBU OiBuZXdseSBpbmNsdWRlZCB0YWJsZSBpcyByZXBsaWNhdGVkJworKTsKKyRyZXN1bHQgPQorICAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCop IEZST00gc2NoMS50YWJfcHVibGlzaGVkIFdIRVJFIGEgPSA3Iik7CitpcygkcmVzdWx0LCBxcSgw KSwKKwknQUxURVIgLi4uIFNFVCBUQUJMRVMgSU4gU0NIRU1BIEVYQ0VQVDogbm93LWV4Y2x1ZGVk IHRhYmxlIGlzIG5vdCByZXBsaWNhdGVkJworKTsKKworIyBTRVQgd2l0aG91dCBFWENFUFQ6IGNs ZWFycyB0aGUgZXhjZXB0IGxpc3Q7IGJvdGggdGFibGVzIGFyZSBub3cgcHVibGlzaGVkLgorJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgUFVCTElDQVRJT04g c2NoX3B1YiBTRVQgVEFCTEVTIElOIFNDSEVNQSBzY2gxIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHNjaF9zdWIgUkVGUkVT SCBQVUJMSUNBVElPTiIpOworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9u X3N5bmMoJG5vZGVfcHVibGlzaGVyLCAnc2NoX3N1YicpOworCiskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlJTlNFUlQgSU5UTyBzY2gxLnRhYl9wdWJsaXNo ZWQgVkFMVUVTICg4KTsKKwlJTlNFUlQgSU5UTyBzY2gxLnRhYl9leGNsdWRlZCBWQUxVRVMgKDgp OworKSk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3NjaF9zdWInKTsKKwor JHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJT RUxFQ1QgY291bnQoKikgRlJPTSBzY2gxLnRhYl9wdWJsaXNoZWQgV0hFUkUgYSA9IDgiKTsKK2lz KCRyZXN1bHQsIHFxKDEpLAorCSdBTFRFUiAuLi4gU0VUIFRBQkxFUyBJTiBTQ0hFTUEgKG5vIEVY Q0VQVCk6IHRhYl9wdWJsaXNoZWQgcmVwbGljYXRlZCBhZnRlciBleGNlcHQgbGlzdCBjbGVhcmVk JworKTsKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiU0VMRUNUIGNvdW50KCopIEZST00gc2NoMS50YWJfZXhjbHVkZWQgV0hFUkUgYSA9IDgi KTsKK2lzKCRyZXN1bHQsIHFxKDEpLAorCSdBTFRFUiAuLi4gU0VUIFRBQkxFUyBJTiBTQ0hFTUEg KG5vIEVYQ0VQVCk6IHRhYl9leGNsdWRlZCByZXBsaWNhdGVkIGFmdGVyIGV4Y2VwdCBsaXN0IGNs ZWFyZWQnCispOworCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RS T1AgU1VCU0NSSVBUSU9OIHNjaF9zdWInKTsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHNjaF9wdWInKTsKIApAQCAtNTE4LDYgKzU3Mywz NiBAQCAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU1VCU0NS SVBUSU9OIHRhcF9zdWInKTsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICdEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWIxJyk7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAnRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViMicpOwogCisjIE9LIHdoZW4g YSB0YWJsZSBpcyBleGNsdWRlZCBieSBhIFRBQkxFUyBJTiBTQ0hFTUEgRVhDRVBUIHB1YmxpY2F0 aW9uLAorIyBidXQgaXMgaW5jbHVkZWQgYnkgYW5vdGhlciBwdWJsaWNhdGlvbi4KKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdUUlVOQ0FURSB0YWIxJyk7Ciskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1RSVU5DQVRFIHRhYjEnKTsKKworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFBVQkxJ Q0FUSU9OIHRhcF9wdWIxIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpYyBFWENFUFQgKFRBQkxF IHB1YmxpYy50YWIxKTsKKwlDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YjIgRk9SIFRBQkxFIHRh YjE7CisJSU5TRVJUIElOVE8gdGFiMSBWQUxVRVMoMSk7CispKTsKKyRub2RlX3N1YnNjcmliZXIt PnBzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJ T04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gdGFwX3B1YjEsIHRhcF9wdWIyIgor KTsKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1 Ymxpc2hlciwgJ3RhcF9zdWInKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgcXEoSU5TRVJUIElOVE8gdGFiMSBWQUxVRVMoMikpKTsKKyRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1YicpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHRhYjEgT1JERVIgQlkg YSIpOworaXMoICRyZXN1bHQsIHFxKDEKKzIpLAorCSJUQUJMRVMgSU4gU0NIRU1BIEVYQ0VQVDog dGFibGUgZXhjbHVkZWQgaW4gc2NoZW1hIHB1YiBidXQgaW5jbHVkZWQgYnkgYW5vdGhlciBwdWIg aXMgcmVwbGljYXRlZCIKKyk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAnRFJPUCBTVUJTQ1JJUFRJT04gdGFwX3N1YicpOworJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgUFVCTElDQVRJT04gdGFwX3B1YjEnKTsKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWIy Jyk7CisKICRub2RlX3B1Ymxpc2hlci0+c3RvcCgnZmFzdCcpOwogCiBkb25lX3Rlc3RpbmcoKTsK LS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --000000000000ce52370656401dad Content-Type: application/octet-stream; name="v20-0005-Documentation-Patch.patch" Content-Disposition: attachment; filename="v20-0005-Documentation-Patch.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mretxhcy4 RnJvbSBhM2FlMmViM2FiNjRlZmEzZmYyZmNhNWUxYjAwZmU0MTc4YTQyMDVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBUaHUsIDE4IEp1biAyMDI2IDA5OjAzOjA4ICswNTMwClN1YmplY3Q6IFtQQVRDSCB2 MjAgNS81XSBEb2N1bWVudGF0aW9uIFBhdGNoCgotLS0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJl cGxpY2F0aW9uLnNnbWwgICAgfCAgMyArLQogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNh dGlvbi5zZ21sICB8IDU4ICsrKysrKysrKysrKysrKysrKysrKysrLQogZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfcHVibGljYXRpb24uc2dtbCB8IDQyICsrKysrKysrKysrKystLS0tCiAzIGZpbGVz IGNoYW5nZWQsIDkxIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9n aWNhbC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4IDY5MDU5OGJmZjk4Li40NmM5NDRiZWFlOCAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBAIC0xMTcsNyArMTE3LDggQEAKICAg IG9yIDxsaXRlcmFsPkZPUiBBTEwgU0VRVUVOQ0VTPC9saXRlcmFsPi4gVW5saWtlIHRhYmxlcywg c2VxdWVuY2VzIGNhbiBiZQogICAgc3luY2hyb25pemVkIGF0IGFueSB0aW1lLiBGb3IgbW9yZSBp bmZvcm1hdGlvbiwgc2VlCiAgICA8eHJlZiBsaW5rZW5kPSJsb2dpY2FsLXJlcGxpY2F0aW9uLXNl cXVlbmNlcyIvPi4gV2hlbiBhIHB1YmxpY2F0aW9uIGlzCi0gICBjcmVhdGVkIHdpdGggPGxpdGVy YWw+Rk9SIEFMTCBUQUJMRVM8L2xpdGVyYWw+LCBhIHRhYmxlIG9yIHNldCBvZiB0YWJsZXMgY2Fu CisgICBjcmVhdGVkIHdpdGggPGxpdGVyYWw+Rk9SIEFMTCBUQUJMRVM8L2xpdGVyYWw+IG9yCisg ICA8bGl0ZXJhbD5GT1IgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4sIGEgdGFibGUgb3Igc2V0 IG9mIHRhYmxlcyBjYW4KICAgIGJlIGV4cGxpY2l0bHkgZXhjbHVkZWQgZnJvbSBwdWJsaWNhdGlv biB1c2luZyB0aGUKICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJh bXMtZm9yLWV4Y2VwdC10YWJsZSI+PGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPjwvbGluaz4KICAg IGNsYXVzZS4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24u c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbAppbmRleCA1MjEx NGExNmEzOS4uMDM3ZGRmYTk0MDQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJf cHVibGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9u LnNnbWwKQEAgLTMxLDcgKzMxLDcgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKIDxwaHJhc2U+ d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX29iamVjdDwv cmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIAogICAgIFRBQkxFIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9hbmRfY29sdW1uczwvcmVwbGFjZWFibGU+IFssIC4u LiBdCi0gICAgVEFCTEVTIElOIFNDSEVNQSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IHwgQ1VSUkVOVF9TQ0hFTUEgfSBbLCAuLi4gXQor ICAgIFRBQkxFUyBJTiBTQ0hFTUEgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxl c19pbl9zY2hlbWE8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXQogCiA8cGhyYXNlPmFuZCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fYWxsX29iamVjdDwvcmVwbGFjZWFi bGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIApAQCAtNDcsNiArNDcsMTAgQEAgQUxURVIgUFVCTElD QVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBS RU5BTUUgVE8gPHIKIAogICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9v YmplY3Q8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNv bHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdIFsgV0hFUkUgKCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ICkgXQogCis8cGhy YXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVzX2luX3NjaGVtYTwv cmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgorCisgICAgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+c2NoZW1hX25hbWU8L3JlcGxhY2VhYmxlPiB8IENVUlJFTlRfU0NIRU1BIH0gWyBF WENFUFQgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhjZXB0X3RhYmxlX29iamVj dDwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQorCiA8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+ZXhjZXB0X3RhYmxlX29iamVjdDwvcmVwbGFjZWFibGU+IGlzOjwv cGhyYXNlPgogCiAgICAgVEFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxl X29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4uLiBdCkBAIC02OSw2ICs3Myw5IEBAIEFMVEVSIFBV QkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJs ZT4gUkVOQU1FIFRPIDxyCiAgICBUaGUgZmlyc3QgdHdvIHZhcmlhbnRzIG1vZGlmeSB3aGljaCB0 YWJsZXMvc2NoZW1hcyBhcmUgcGFydCBvZiB0aGUKICAgIHB1YmxpY2F0aW9uLiBUaGUgPGxpdGVy YWw+QUREPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+RFJPUDwvbGl0ZXJhbD4gY2xhdXNlcwogICAg d2lsbCBhZGQgYW5kIHJlbW92ZSBvbmUgb3IgbW9yZSB0YWJsZXMvc2NoZW1hcyBmcm9tIHRoZSBw dWJsaWNhdGlvbi4KKyAgIFRoZSA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVzZSBjYW4g YmUgdXNlZCB3aXRoCisgICA8bGl0ZXJhbD5BREQgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4g dG8gZXhjbHVkZSBzcGVjaWZpYyB0YWJsZXMgZnJvbSBhCisgICBzY2hlbWEtbGV2ZWwgcHVibGlj YXRpb24uCiAgIDwvcGFyYT4KIAogICA8cGFyYT4KQEAgLTkzLDcgKzEwMCwxMSBAQCBBTFRFUiBQ VUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFi bGU+IFJFTkFNRSBUTyA8cgogICAgdXNlZCB3aXRoIGEgcHVibGljYXRpb24gZGVmaW5lZCB3aXRo IDxsaXRlcmFsPkZPUiBUQUJMRTwvbGl0ZXJhbD4gb3IKICAgIDxsaXRlcmFsPkZPUiBUQUJMRVMg SU4gU0NIRU1BPC9saXRlcmFsPiwgcmVwbGFjZXMgdGhlIGxpc3Qgb2YgdGFibGVzL3NjaGVtYXMK ICAgIGluIHRoZSBwdWJsaWNhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgbGlzdDsgdGhlIGV4aXN0 aW5nIHRhYmxlcyBvciBzY2hlbWFzCi0gICB0aGF0IHdlcmUgcHJlc2VudCBpbiB0aGUgcHVibGlj YXRpb24gd2lsbCBiZSByZW1vdmVkLgorICAgdGhhdCB3ZXJlIHByZXNlbnQgaW4gdGhlIHB1Ymxp Y2F0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gIFdoZW4KKyAgIDxsaXRlcmFsPlNFVCBUQUJMRVMgSU4g U0NIRU1BPC9saXRlcmFsPiBpcyB1c2VkIHdpdGggYW4KKyAgIDxsaXRlcmFsPkVYQ0VQVDwvbGl0 ZXJhbD4gY2xhdXNlLCB0aGUgZXhjbHVkZWQgdGFibGVzIGZvciBlYWNoIHNjaGVtYSBhcmUKKyAg IHJlcGxhY2VkIHdpdGggdGhlIHNwZWNpZmllZCBsaXN0OyBpZiA8bGl0ZXJhbD5FWENFUFQ8L2xp dGVyYWw+IGlzIG9taXR0ZWQKKyAgIGZvciBhIHNjaGVtYSwgYW55IGV4aXN0aW5nIGV4Y2x1c2lv bnMgZm9yIHRoYXQgc2NoZW1hIGFyZSBjbGVhcmVkLgogICA8L3BhcmE+CiAKICAgPHBhcmE+CkBA IC0xOTgsNiArMjA5LDI3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAgICAgPC9saXN0aXRl bT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxs aXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFy YT4KKyAgICAgIFdoZW4gdXNlZCB3aXRoIDxsaXRlcmFsPkFERCBUQUJMRVMgSU4gU0NIRU1BPC9s aXRlcmFsPgorICAgICAgb3IgPGxpdGVyYWw+U0VUIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+ LCBzcGVjaWZpZXMKKyAgICAgIHRhYmxlcyB0byBiZSBleGNsdWRlZCBmcm9tIHRoZSBwdWJsaWNh dGlvbi4gIEVhY2ggbmFtZWQKKyAgICAgIHRhYmxlIG11c3QgYmVsb25nIHRvIHRoZSBzY2hlbWEg c3BlY2lmaWVkIGluIHRoZSBzYW1lCisgICAgICA8bGl0ZXJhbD5UQUJMRVMgSU4gU0NIRU1BPC9s aXRlcmFsPiBjbGF1c2UuICBUYWJsZSBuYW1lcyBtYXkgYmUKKyAgICAgIHNjaGVtYS1xdWFsaWZp ZWQgb3IgdW5xdWFsaWZpZWQ7IHVucXVhbGlmaWVkIG5hbWVzIGFyZSBpbXBsaWNpdGx5CisgICAg ICBxdWFsaWZpZWQgd2l0aCB0aGUgc2NoZW1hIG5hbWVkIGluIHRoZSBzYW1lIGNsYXVzZS4gIFNl ZQorICAgICAgPHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXB1YmxpY2F0aW9uIi8+IGZvciBmdXJ0 aGVyIGRldGFpbHMgb24gdGhlCisgICAgICBzZW1hbnRpY3Mgb2YgPGxpdGVyYWw+RVhDRVBUPC9s aXRlcmFsPi4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIERyb3BwaW5nIGEgdGFi bGUgYWx3YXlzIHJlbW92ZXMgaXQgZnJvbSB0aGUgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPgor ICAgICAgY2xhdXNlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlz dGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxsaXRlcmFsPlNFVCAoIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9wYXJhbWV0ZXI8L3JlcGxh Y2VhYmxlPiBbPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2Vh YmxlPl0gWywgLi4uIF0gKTwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpAQCAtMjg4 LDYgKzMyMCwyOCBAQCBBTFRFUiBQVUJMSUNBVElPTiBzYWxlc19wdWJsaWNhdGlvbiBBREQgVEFC TEVTIElOIFNDSEVNQSBtYXJrZXRpbmcsIHNhbGVzOwogPC9wcm9ncmFtbGlzdGluZz4KICAgPC9w YXJhPgogCisgIDxwYXJhPgorICAgQWRkIHNjaGVtYSA8c3RydWN0bmFtZT5zYWxlczwvc3RydWN0 bmFtZT4gdG8gdGhlIHB1YmxpY2F0aW9uCisgICA8c3RydWN0bmFtZT5zYWxlc19wdWJsaWNhdGlv bjwvc3RydWN0bmFtZT4sIGV4Y2x1ZGluZyB0aGUKKyAgIDxzdHJ1Y3RuYW1lPnNhbGVzLmludGVy bmFsPC9zdHJ1Y3RuYW1lPiBhbmQKKyAgIDxzdHJ1Y3RuYW1lPnNhbGVzLmRyYWZ0czwvc3RydWN0 bmFtZT4gdGFibGVzOgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgUFVCTElDQVRJT04gc2FsZXNf cHVibGljYXRpb24gQUREIFRBQkxFUyBJTiBTQ0hFTUEgc2FsZXMgRVhDRVBUIChUQUJMRSBpbnRl cm5hbCwgZHJhZnRzKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKworICA8cGFyYT4K KyAgIFJlcGxhY2UgdGhlIHNjaGVtYSBsaXN0IG9mIDxzdHJ1Y3RuYW1lPnNhbGVzX3B1YmxpY2F0 aW9uPC9zdHJ1Y3RuYW1lPiB3aXRoCisgICA8c3RydWN0bmFtZT5zYWxlczwvc3RydWN0bmFtZT4s IGV4Y2x1ZGluZyBvbmx5CisgICA8c3RydWN0bmFtZT5zYWxlcy5kcmFmdHM8L3N0cnVjdG5hbWU+ LiBPdGhlciB0aGFuCisgICA8c3RydWN0bmFtZT5zYWxlcy5kcmFmdHM8L3N0cnVjdG5hbWU+LCBh bnkgcHJldmlvdXNseSBleGNsdWRlZCB0YWJsZXMgZm9yIHNjaGVtYQorICAgPHN0cnVjdG5hbWU+ c2FsZXM8L3N0cnVjdG5hbWU+IGFyZSBubyBsb25nZXIgZXhjbHVkZWQuIEFueSBzY2hlbWFzIHBy ZXZpb3VzbHkgaW4KKyAgIDxzdHJ1Y3RuYW1lPnNhbGVzX3B1YmxpY2F0aW9uPC9zdHJ1Y3RuYW1l PiBhcmUgcmVtb3ZlZDoKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVSIFBVQkxJQ0FUSU9OIHNhbGVz X3B1YmxpY2F0aW9uIFNFVCBUQUJMRVMgSU4gU0NIRU1BIHNhbGVzIEVYQ0VQVCAoVEFCTEUgZHJh ZnRzKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKwogICA8cGFyYT4KICAgIEFkZCB0 YWJsZXMgPHN0cnVjdG5hbWU+dXNlcnM8L3N0cnVjdG5hbWU+LAogICAgPHN0cnVjdG5hbWU+ZGVw YXJ0bWVudHM8L3N0cnVjdG5hbWU+IGFuZCBzY2hlbWEKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9w dWJsaWNhdGlvbi5zZ21sCmluZGV4IDg1Y2ZjYWRkYWZhLi4yNmNiNTM2ZTkwYiAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCkBAIC0yOCw3ICsyOCw3IEBAIENSRUFU RSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFj ZWFibGU+CiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJs aWNhdGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKICAgICBU QUJMRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfYW5kX2NvbHVtbnM8L3Jl cGxhY2VhYmxlPiBbLCAuLi4gXQotICAgIFRBQkxFUyBJTiBTQ0hFTUEgeyA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+c2NoZW1hX25hbWU8L3JlcGxhY2VhYmxlPiB8IENVUlJFTlRfU0NI RU1BIH0gWywgLi4uIF0KKyAgICBUQUJMRVMgSU4gU0NIRU1BIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj50YWJsZXNfaW5fc2NoZW1hPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0KIAogPHBo cmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX2FsbF9v YmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKQEAgLTM5LDYgKzM5LDEw IEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFt ZTwvcmVwbGFjZWFibGU+CiAKICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFi bGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXSBbIFdIRVJFICggPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIF0KIAor PHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlc19pbl9zY2hl bWE8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KKworICAgIHsgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1NDSEVNQSB9 IFsgRVhDRVBUICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdF90YWJsZV9v YmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KKwogPHBocmFzZT5hbmQgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdF90YWJsZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBp czo8L3BocmFzZT4KIAogICAgIFRBQkxFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50 YWJsZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXQpAQCAtMTQyLDYgKzE0Niw4IEBAIENS RUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVw bGFjZWFibGU+CiAgICAgIDxwYXJhPgogICAgICAgTWFya3MgdGhlIHB1YmxpY2F0aW9uIGFzIG9u ZSB0aGF0IHJlcGxpY2F0ZXMgY2hhbmdlcyBmb3IgYWxsIHRhYmxlcyBpbgogICAgICAgdGhlIHNw ZWNpZmllZCBsaXN0IG9mIHNjaGVtYXMsIGluY2x1ZGluZyB0YWJsZXMgY3JlYXRlZCBpbiB0aGUg ZnV0dXJlLgorICAgICAgVGFibGVzIGxpc3RlZCBpbiB0aGUgPGxpdGVyYWw+RVhDRVBUPC9saXRl cmFsPiBjbGF1c2UgZm9yIGEgZ2l2ZW4gc2NoZW1hCisgICAgICBhcmUgZXhjbHVkZWQgZnJvbSB0 aGUgcHVibGljYXRpb24uCiAgICAgIDwvcGFyYT4KIAogICAgICA8cGFyYT4KQEAgLTE3Myw3ICsx NzksNyBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm5hbWU8L3JlcGxhY2VhYmxlPgogICAgICA8cGFyYT4KICAgICAgIE1hcmtzIHRoZSBwdWJsaWNh dGlvbiBhcyBvbmUgdGhhdCByZXBsaWNhdGVzIGNoYW5nZXMgZm9yIGFsbCB0YWJsZXMgaW4KICAg ICAgIHRoZSBkYXRhYmFzZSwgaW5jbHVkaW5nIHRhYmxlcyBjcmVhdGVkIGluIHRoZSBmdXR1cmUu IFRhYmxlcyBsaXN0ZWQgaW4KLSAgICAgIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4gY2xhdXNl IGFyZSBleGNsdWRlZCBmcm9tIHRoZSBwdWJsaWNhdGlvbi4KKyAgICAgIHRoZSA8bGl0ZXJhbD5F WENFUFQ8L2xpdGVyYWw+IGNsYXVzZSBhcmUgZXhjbHVkZWQgZnJvbSB0aGUgcHVibGljYXRpb24u CiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CkBAIC0x OTgsMTMgKzIwNCwyMSBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+ CiAgICAgICBUaGlzIGNsYXVzZSBzcGVjaWZpZXMgYSBsaXN0IG9mIHRhYmxlcyB0byBiZSBleGNs dWRlZCBmcm9tIHRoZQotICAgICAgcHVibGljYXRpb24uCisgICAgICBwdWJsaWNhdGlvbi4gSXQg Y2FuIGJlIHVzZWQgd2l0aCA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4gb3IKKyAg ICAgIDxsaXRlcmFsPkZPUiBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPi4gRm9yIDxsaXRlcmFs PkZPUiBUQUJMRVMgSU4KKyAgICAgIFNDSEVNQTwvbGl0ZXJhbD4sIHRoZSBleGNsdXNpb24gYXBw bGllcyBvbmx5IHRvIHRhYmxlcyBpbiB0aGUgc2NoZW1hCisgICAgICBhc3NvY2lhdGVkIHdpdGgg dGhlIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4uCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+ Ci0gICAgICBPbmNlIGEgdGFibGUgaXMgZXhjbHVkZWQsIHRoZSBleGNsdXNpb24gYXBwbGllcyB0 byB0aGF0IHRhYmxlCi0gICAgICByZWdhcmRsZXNzIG9mIGl0cyBuYW1lIG9yIHNjaGVtYS4gUmVu YW1pbmcgdGhlIHRhYmxlIG9yIG1vdmluZyBpdCB0bwotICAgICAgYW5vdGhlciBzY2hlbWEgdXNp bmcgPGNvbW1hbmQ+QUxURVIgVEFCTEUgLi4uIFNFVCBTQ0hFTUE8L2NvbW1hbmQ+IGRvZXMKLSAg ICAgIG5vdCByZW1vdmUgdGhlIGV4Y2x1c2lvbi4KKyAgICAgIE9uY2UgYSB0YWJsZSBpcyBleGNs dWRlZCB1bmRlciA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4sIHRoZQorICAgICAg ZXhjbHVzaW9uIGFwcGxpZXMgdG8gdGhhdCB0YWJsZSByZWdhcmRsZXNzIG9mIGl0cyBuYW1lIG9y IHNjaGVtYS4KKyAgICAgIFJlbmFtaW5nIHRoZSB0YWJsZSBvciBtb3ZpbmcgaXQgdG8gYW5vdGhl ciBzY2hlbWEgdXNpbmcKKyAgICAgIDxjb21tYW5kPkFMVEVSIFRBQkxFIC4uLiBTRVQgU0NIRU1B PC9jb21tYW5kPiBkb2VzIG5vdCByZW1vdmUgdGhlCisgICAgICBleGNsdXNpb24uIEhvd2V2ZXIs IGZvciA8bGl0ZXJhbD5GT1IgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4sIGJlY2F1c2UKKyAg ICAgIHRoZSA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGlzIHNjaGVtYS1zY29wZWQsIG1vdmlu ZyBhIHNjaGVtYS1leGNsdWRlZAorICAgICAgdGFibGUgdG8gYW5vdGhlciBzY2hlbWEgZG9lcyBy ZW1vdmUgdGhlIGV4Y2x1c2lvbjsgaWYgdGhlIHRhYmxlIGlzIGxhdGVyCisgICAgICBtb3ZlZCBi YWNrLCB0aGUgZXhjbHVzaW9uIGlzIG5vdCByZXN0b3JlZCBhbmQgbXVzdCBiZSByZS1lc3RhYmxp c2hlZAorICAgICAgd2l0aCA8Y29tbWFuZD5BTFRFUiBQVUJMSUNBVElPTjwvY29tbWFuZD4uCiAg ICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICBGb3IgaW5oZXJpdGVkIHRhYmxlcywgaWYg PGxpdGVyYWw+T05MWTwvbGl0ZXJhbD4gaXMgc3BlY2lmaWVkIGJlZm9yZSB0aGUKQEAgLTIxNiw4 ICsyMzAsOSBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAg Rm9yIHBhcnRpdGlvbmVkIHRhYmxlcywgb25seSB0aGUgcm9vdCBwYXJ0aXRpb25lZCB0YWJsZSBt YXkgYmUgc3BlY2lmaWVkCi0gICAgICBpbiA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+LiBEb2lu ZyBzbyBleGNsdWRlcyB0aGUgcm9vdCB0YWJsZSBhbmQKLSAgICAgIGFsbCBvZiBpdHMgcGFydGl0 aW9ucyBmcm9tIHJlcGxpY2F0aW9uLiBUaGUgb3B0aW9uYWwKKyAgICAgIGluIDxsaXRlcmFsPkVY Q0VQVDwvbGl0ZXJhbD4uIEV4Y2x1ZGluZyB0aGUgcm9vdCB0YWJsZSBhdXRvbWF0aWNhbGx5Cisg ICAgICBleGNsdWRlcyBhbGwgb2YgaXRzIHBhcnRpdGlvbnMgZnJvbSByZXBsaWNhdGlvbiwgaW5j bHVkaW5nIHRob3NlIGluCisgICAgICBzY2hlbWFzIHRoYXQgYXJlIG90aGVyd2lzZSBpbmNsdWRl ZCBpbiB0aGUgcHVibGljYXRpb24uIFRoZSBvcHRpb25hbAogICAgICAgPGxpdGVyYWw+T05MWTwv bGl0ZXJhbD4gYW5kIDxsaXRlcmFsPio8L2xpdGVyYWw+IGhhcyBubyBlZmZlY3QgZm9yCiAgICAg ICBwYXJ0aXRpb25lZCB0YWJsZXMuCiAgICAgIDwvcGFyYT4KQEAgLTUyMSw2ICs1MzYsMTUgQEAg Q1JFQVRFIFBVQkxJQ0FUSU9OIHByb2R1Y3Rpb25fcHVibGljYXRpb24gRk9SIFRBQkxFIHVzZXJz LCBkZXBhcnRtZW50cywgVEFCTEVTIEkKIENSRUFURSBQVUJMSUNBVElPTiBzYWxlc19wdWJsaWNh dGlvbiBGT1IgVEFCTEVTIElOIFNDSEVNQSBtYXJrZXRpbmcsIHNhbGVzOwogPC9wcm9ncmFtbGlz dGluZz48L3BhcmE+CiAKKyAgPHBhcmE+CisgICBDcmVhdGUgYSBwdWJsaWNhdGlvbiB0aGF0IHB1 Ymxpc2hlcyBhbGwgY2hhbmdlcyBmb3IgYWxsIHRoZSB0YWJsZXMgcHJlc2VudCBpbgorICAgdGhl IHNjaGVtYSA8c3RydWN0bmFtZT5zYWxlczwvc3RydWN0bmFtZT4sIGV4Y2VwdAorICAgPHN0cnVj dG5hbWU+aW50ZXJuYWw8L3N0cnVjdG5hbWU+IGFuZCA8c3RydWN0bmFtZT5kcmFmdHM8L3N0cnVj dG5hbWU+OgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHNhbGVzX2ZpbHRl cmVkIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHNhbGVzIEVYQ0VQVCAoVEFCTEUgaW50ZXJuYWwsIGRy YWZ0cyk7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKICAgPHBhcmE+CiAgICBDcmVh dGUgYSBwdWJsaWNhdGlvbiB0aGF0IHB1Ymxpc2hlcyBhbGwgY2hhbmdlcyBmb3IgdGFibGUgPHN0 cnVjdG5hbWU+dXNlcnM8L3N0cnVjdG5hbWU+LAogICAgYnV0IHJlcGxpY2F0ZXMgb25seSBjb2x1 bW5zIDxzdHJ1Y3RuYW1lPnVzZXJfaWQ8L3N0cnVjdG5hbWU+IGFuZAotLSAKMi41MC4xIChBcHBs ZSBHaXQtMTU1KQoK --000000000000ce52370656401dad--