Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qA6kK-0007Zq-1K for pgsql-hackers@arkaria.postgresql.org; Fri, 16 Jun 2023 10:32:00 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1qA6kI-0002tM-Hi for pgsql-hackers@arkaria.postgresql.org; Fri, 16 Jun 2023 10:31:58 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qA6kH-0002mH-MQ for pgsql-hackers@lists.postgresql.org; Fri, 16 Jun 2023 10:31:58 +0000 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qA6kB-002kxf-IJ for pgsql-hackers@lists.postgresql.org; Fri, 16 Jun 2023 10:31:56 +0000 Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-31122c346f4so261311f8f.3 for ; Fri, 16 Jun 2023 03:31:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686911510; x=1689503510; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=vimRot7pM9cg366MYMgAKseWk5+fp00dy6vT2TeRe84=; b=nSqPDXys2VqJIJwIZBnE6CpgjUCFJ5QOkQvprSk8KZX9wHYq4K9aQBkcY7hrugvC9g alLAs9lZgFU0L+TmxwtSsjHmUXvu6BCHNj8avOcK/wVIAGP3tv+yDtE1fxs8zF7JxB4E IApWFkyiFmN7cjmPe3lHCNvMbyv+BUeS6MHWjsKKcLusisY1IG5tDd9ePYloR+IGrdLp f4lAsCsKAhrIyUMnsK4ydpUdJfRoN+X7AZuXics7Mdek/F7uGAs83sSslXTNzb1x09q3 yFCfAxtzm7V3QDemEFTw1byGdAFAqn2Js14RP+JzsMSAmpPadMxgZKByQlI0AN9fi5/U ilGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686911510; x=1689503510; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=vimRot7pM9cg366MYMgAKseWk5+fp00dy6vT2TeRe84=; b=UmoK3DM11VbJtI2/9YOKq+HoLtXIFpMHOMo+GQaopwQdXtdgMvAWYg/uQU2lP4ArXE uUxJ0RIyiafQ5uoT3sTYIWCEVx1xpdMCmCTRrtSJVC8mwQ9hjfsEwPToK1MnNbKB54nD dieuEv8+ZJtXtxn1AzukCvbGfHHLh7OGKhdjtVZ8a/ffu+frPofxzbO8lHcjj8HrjOQs cxKLuHQzf5abAUMRQPSzOzKjwzfTJcjibZbcIGdn45T/LRU783chbtDyhpJ80wKn03qt 8aFEhDvi7xjau78Hkf5Cumonf9RNXdbUQxFSoNXBoL79D0qTTaOkTsmD8iKhcjwA83Xa IWKA== X-Gm-Message-State: AC+VfDzMeOiq7J3Pw9X9s3G78yRhn9wQzAcyh2wmBBjoqQSm/VPlbWo/ fLuShIduWT8Q+EwkWIZdc8iqAiVNtEvx7MgKiXw= X-Google-Smtp-Source: ACHHUZ6ka7jnsH1E2Ij4qj8eojFGW5X6yVcBJU4UAn2C+LG6Kbv6w4nafwoDwfmRutSBhef/9GLGcBkY0jBOCAME6dA= X-Received: by 2002:adf:e6c4:0:b0:30f:b7be:4089 with SMTP id y4-20020adfe6c4000000b0030fb7be4089mr1204138wrm.3.1686911509456; Fri, 16 Jun 2023 03:31:49 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: shveta malik Date: Fri, 16 Jun 2023 16:01:37 +0530 Message-ID: Subject: Re: Support logical replication of DDLs To: Michael Paquier Cc: Amit Kapila , "Wei Wang (Fujitsu)" , "Yu Shi (Fujitsu)" , vignesh C , "Zhijie Hou (Fujitsu)" , Ajin Cherian , Runqi Tian , Peter Smith , Tom Lane , li jie , Dilip Kumar , Alvaro Herrera , Masahiko Sawada , Japin Li , rajesh singarapu , PostgreSQL Hackers , Zheng Li , shveta malik Content-Type: multipart/mixed; boundary="0000000000004a587505fe3cb10a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000004a587505fe3cb10a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Jun 14, 2023 at 3:26=E2=80=AFAM Michael Paquier wrote: > > On Tue, Jun 13, 2023 at 06:49:42PM +0530, Amit Kapila wrote: > > We have to choose one of the approaches between 0001 and 0008. I feel > > we don't need an intermediate ObjTree representation as that adds > > overhead and an additional layer which is not required. As mentioned > > in my previous email I think as a first step we should merge 0001 and > > 0008 and avoid having an additional ObjTree layer unless you or others > > feel we need it. I think that will reduce the overall patch size and > > help us to focus on one of the approaches. > > Similar impression here. I found ObjTree actually confusing compared > to the JSON blobs generated. > +1 Please find the new set of patches. It has below changes: Patch-set Structure related changes to make it more organised: 1) Object-tree removal code (patch 0008 earlier) is now merged to patch 0001. Now there is no reference of object-tree in the code. 2) Subscription tap-test for DDL Replication (patch 0006 earlier) is now merged to patch 0003 (DDL Replication one), as it was a single file change and thus seems more apt to be part of the DDL-Rep patch. 3) test_ddl_deparse_regress module (patch 0004 earlier) is now pulled out for the time being. Rest of the changes: 1) CTAS and SELECT INTO support removal. Initial draft aims to support create,drop and alter-table first. 2) Doc compilation issue fix for 'doc/src/sgml/logical-replication.sgml'. 3) Verbose option removal. Current patch now WAL logs only the information needed to construct the original DDL statement. Missing clauses are not part of the final DDL string. I will upload support for 'expanded' on/off in the next version. 4) Some code refactoring and optimization. With these changes, I hope the patch-set is somewhat easier to review. thanks Shveta --0000000000004a587505fe3cb10a Content-Type: application/octet-stream; name="0001-Deparser-for-Table-DDL-commands-and-exten-2023_06_16.patch" Content-Disposition: attachment; filename="0001-Deparser-for-Table-DDL-commands-and-exten-2023_06_16.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_liyf2xdw0 RnJvbSA5N2Y2YmQ5M2M0ZTNmY2ZlMzcwZmUzYjFjMzk0NjgzNTk4ZjE3NzI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMjIgTWF5IDIwMjMgMDg6MzY6NDkgKzA1MzAKU3ViamVjdDogW1BBVENIIDEv NF0gRGVwYXJzZXIgZm9yIFRhYmxlIERETCBjb21tYW5kcyBhbmQgZXh0ZW5kaW5nIGV2ZW50CiB0 cmlnZ2VycwoKVGhpcyBwYXRjaCBjb25zdHJ1Y3RzIEpTT04gYmxvYnMgcmVwcmVzZW50aW5nIERE TCBjb21tYW5kcywgd2hpY2ggY2FuCmxhdGVyIGJlIHJlLXByb2Nlc3NlZCBpbnRvIHBsYWluIHN0 cmluZ3MgYnkgd2VsbC1kZWZpbmVkIHNwcmludGYtbGlrZQpleHBhbnNpb24uIFRoZXNlIEpTT04g b2JqZWN0cyBhcmUgaW50ZW5kZWQgdG8gYWxsb3cgZm9yIG1hY2hpbmUtZWRpdGluZyBvZgp0aGUg Y29tbWFuZHMsIGJ5IHJlcGxhY2luZyBjZXJ0YWluIG5vZGVzIHdpdGhpbiB0aGUgb2JqZWN0cy4K Ck11Y2ggb2YgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBvdXRwdXQgYmxvYiBhY3R1YWxseSBjb21l cyBmcm9tIHN5c3RlbQpjYXRhbG9ncywgbm90IGZyb20gdGhlIGNvbW1hbmQgcGFyc2Ugbm9kZSwg YXMgaXQgaXMgaW1wb3NzaWJsZSB0byByZWxpYWJseQpjb25zdHJ1Y3QgYSBmdWxseS1zcGVjaWZp ZWQgY29tbWFuZCAoaS5lLiBvbmUgbm90IGRlcGVuZGVudCBvbiBzZWFyY2hfcGF0aApldGMpIGxv b2tpbmcgb25seSBhdCB0aGUgcGFyc2Ugbm9kZS4KClRoaXMgcHJvdmlkZXMgYSBiYXNlIGZvciBs b2dpY2FsIHJlcGxpY2F0aW9uIG9mIERETCBzdGF0ZW1lbnRzLiBDdXJyZW50bHksCnRoZSBwYXRj aCBoYXMgc3VwcG9ydCBmb3I6CgpDUkVBVEUvQUxURVIvRFJPUCBUQUJMRQotLS0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL01ha2VmaWxlICAgICAgICB8ICAgIDIgKwogc3JjL2JhY2tlbmQvY29tbWFu ZHMvZGRsZGVwYXJzZS5jICAgIHwgMzI4MyArKysrKysrKysrKysrKysrKysrKysrKysrKwogc3Jj L2JhY2tlbmQvY29tbWFuZHMvZGRsanNvbi5jICAgICAgIHwgIDc1OSArKysrKysKIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYyB8ICAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFu ZHMvbWVzb24uYnVpbGQgICAgIHwgICAgMiArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5j ZS5jICAgICAgfCAgIDQzICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICB8 ICAgIDMgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICB8ICAgIDEgKwog c3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgICAgICAgICAgIHwgICAxNyArCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvZm9ybWF0X3R5cGUuYyAgfCAgMTA4ICstCiBzcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMgICAgfCAgIDMyICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0ICAgICAgfCAgICA3ICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmggICAgICB8 ICAgIDkgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmggICAgIHwgICAgMiArCiBz cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRl L3Rjb3AvZGRsZGVwYXJzZS5oICAgICAgICB8ICAgMjIgKwogc3JjL2luY2x1ZGUvdGNvcC91dGls aXR5LmggICAgICAgICAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS91dGlscy9idWlsdGlucy5oICAg ICAgICAgfCAgICA1ICsKIHNyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oICAgICAgICB8ICAg MTAgKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgIHwgICAgMiArCiAyMCBm aWxlcyBjaGFuZ2VkLCA0Mjk1IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbGRlcGFyc2UuYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbGpzb24uYwogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy9pbmNsdWRlL3Rjb3AvZGRsZGVwYXJzZS5oCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQppbmRl eCA0OGY3MzQ4ZjkxLi4wNzZhYzRlYjMxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQpAQCAtMjksNiAr MjksOCBAQCBPQkpTID0gXAogCWNvcHl0by5vIFwKIAljcmVhdGVhcy5vIFwKIAlkYmNvbW1hbmRz Lm8gXAorCWRkbGRlcGFyc2UubyBcCisJZGRsanNvbi5vIFwKIAlkZWZpbmUubyBcCiAJZGlzY2Fy ZC5vIFwKIAlkcm9wY21kcy5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Rk bGRlcGFyc2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbGRlcGFyc2UuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi42YzcxNzM5MDM2Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsZGVwYXJzZS5jCkBAIC0wLDAgKzEsMzI4MyBAQAor LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZGRsZGVwYXJzZS5jCisgKgkgIEZ1bmN0aW9ucyB0 byBjb252ZXJ0IHV0aWxpdHkgY29tbWFuZHMgdG8gbWFjaGluZS1wYXJzZWFibGUKKyAqCSAgcmVw cmVzZW50YXRpb24KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMywgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAo YykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICog Tk9URVMKKyAqCisgKiBUaGlzIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgSlNPTiBibG9icyByZXBy ZXNlbnRpbmcgRERMIGNvbW1hbmRzLCB3aGljaCBjYW4KKyAqIGxhdGVyIGJlIHJlLXByb2Nlc3Nl ZCBpbnRvIHBsYWluIHN0cmluZ3MgYnkgd2VsbC1kZWZpbmVkIHNwcmludGYtbGlrZQorICogZXhw YW5zaW9uLiAgVGhlc2UgSlNPTiBvYmplY3RzIGFyZSBpbnRlbmRlZCB0byBhbGxvdyBmb3IgbWFj aGluZS1lZGl0aW5nIG9mCisgKiB0aGUgY29tbWFuZHMsIGJ5IHJlcGxhY2luZyBjZXJ0YWluIG5v ZGVzIHdpdGhpbiB0aGUgb2JqZWN0cy4KKyAqCisgKiBNdWNoIG9mIHRoZSBpbmZvcm1hdGlvbiBp biB0aGUgb3V0cHV0IGJsb2IgYWN0dWFsbHkgY29tZXMgZnJvbSBzeXN0ZW0KKyAqIGNhdGFsb2dz LCBub3QgZnJvbSB0aGUgY29tbWFuZCBwYXJzZSBub2RlLCBhcyBpdCBpcyBpbXBvc3NpYmxlIHRv IHJlbGlhYmx5CisgKiBjb25zdHJ1Y3QgYSBmdWxseS1zcGVjaWZpZWQgY29tbWFuZCAoaS5lLiBv bmUgbm90IGRlcGVuZGVudCBvbiBzZWFyY2hfcGF0aAorICogZXRjKSBsb29raW5nIG9ubHkgYXQg dGhlIHBhcnNlIG5vZGUuCisgKgorICogRGVwYXJzZWQgSnNvbmJWYWx1ZSBpcyBjcmVhdGVkIGJ5 IHVzaW5nOgorICogCW5ld19qc29uYl9WQSB3aGVyZSB0aGUga2V5LXZhbHVlIHBhaXJzIGNvbXBv c2luZyBhbiBqc29uYiBvYmplY3QgY2FuIGJlCisgKiAJZGVyaXZlZCB1c2luZyB0aGUgcGFzc2Vk IHZhcmlhYmxlIGFyZ3VtZW50cy4gSW4gb3JkZXIgdG8gc3VjY2Vzc2Z1bGx5CisgKiAgY29uc3Ry dWN0IG9uZSBrZXk6dmFsdWUgcGFpciwgYSBzZXQgb2YgdGhyZWUgYXJndW1lbnRzIGNvbnNpc3Rp bmcgb2YgYSBuYW1lCisgKiAJKHN0cmluZyksIHR5cGUgKGZyb20gdGhlIGpidlR5cGUgZW51bSkg YW5kIHZhbHVlIG11c3QgYmUgc3VwcGxpZWQuIEl0IGNhbgorICogIHRha2UgbXVsdGlwbGUgc3Vj aCBzZXRzIGFuZCBjb25zdHJ1Y3QgbXVsdGlwbGUga2V5LXZhbHVlIHBhaXJzIGFuZCBhcHBlbmQK KyAqICB0aG9zZSB0byBvdXRwdXQgcGFyc2Utc3RhdGUuCisgKgorICogSURFTlRJRklDQVRJT04K KyAqCSAgc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsZGVwYXJzZS5jCisgKgorICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiYWNjZXNzL2Ft YXBpLmgiCisjaW5jbHVkZSAiYWNjZXNzL3JlbGF0aW9uLmgiCisjaW5jbHVkZSAiYWNjZXNzL3Rh YmxlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9n L3BnX2NvbGxhdGlvbi5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfY29uc3RyYWludC5oIgorI2lu Y2x1ZGUgImNhdGFsb2cvcGdfZGVwZW5kLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19pbmhlcml0 cy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9wZ19wcm9jLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiY29t bWFuZHMvZGVmcmVtLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2VxdWVuY2UuaCIKKyNpbmNsdWRl ICJjb21tYW5kcy90YWJsZXNwYWNlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVjbWRzLmgi CisjaW5jbHVkZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIK KyNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgiCisjaW5jbHVkZSAidGNvcC9kZGxk ZXBhcnNlLmgiCisjaW5jbHVkZSAidGNvcC91dGlsaXR5LmgiCisjaW5jbHVkZSAidXRpbHMvYnVp bHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgorI2luY2x1ZGUgInV0aWxzL2d1 Yy5oIgorI2luY2x1ZGUgInV0aWxzL2pzb25iLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hl LmgiCisjaW5jbHVkZSAidXRpbHMvcmVsLmgiCisjaW5jbHVkZSAidXRpbHMvcnVsZXV0aWxzLmgi CisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKworLyogRXN0aW1hdGVkIGxlbmd0aCBvZiB0 aGUgZ2VuZXJhdGVkIGpzb25iIHN0cmluZyAqLworI2RlZmluZSBKU09OQl9FU1RJTUFURURfTEVO IDEyOAorCisvKgorICogUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdp dmVuIFJFTFBFUlNJU1RFTkNFIHZhbHVlLgorICovCitzdGF0aWMgY2hhciAqCitnZXRfcGVyc2lz dGVuY2Vfc3RyKGNoYXIgcGVyc2lzdGVuY2UpCit7CisJc3dpdGNoIChwZXJzaXN0ZW5jZSkKKwl7 CisJCWNhc2UgUkVMUEVSU0lTVEVOQ0VfVEVNUDoKKwkJCXJldHVybiAiVEVNUE9SQVJZIjsKKwkJ Y2FzZSBSRUxQRVJTSVNURU5DRV9VTkxPR0dFRDoKKwkJCXJldHVybiAiVU5MT0dHRUQiOworCQlj YXNlIFJFTFBFUlNJU1RFTkNFX1BFUk1BTkVOVDoKKwkJCXJldHVybiAiIjsKKwkJZGVmYXVsdDoK KwkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIHBlcnNpc3RlbmNlIG1hcmtpbmcgJWMiLAorCQkJ CSBwZXJzaXN0ZW5jZSk7CisJCQlyZXR1cm4gIiI7CQkJLyogbWFrZSBjb21waWxlciBoYXBweSAq LworCX0KK30KKworLyoKKyAqIE9idGFpbiB0aGUgZGVwYXJzZWQgZGVmYXVsdCB2YWx1ZSBmb3Ig dGhlIGdpdmVuIGNvbHVtbiBvZiB0aGUgZ2l2ZW4gdGFibGUuCisgKgorICogQ2FsbGVyIG11c3Qg aGF2ZSBzZXQgYSBjb3JyZWN0IGRlcGFyc2UgY29udGV4dCBhbmQgbXVzdCBlbnN1cmUgdGhhdCB0 aGUKKyAqIHBhc3NlZCBhdHRyaWJ1dGUgaGFzIGEgZGVmYXVsdCB2YWx1ZS4KKyAqLworc3RhdGlj IGNoYXIgKgorUmVsYXRpb25HZXRDb2x1bW5EZWZhdWx0KFJlbGF0aW9uIHJlbCwgQXR0ck51bWJl ciBhdHRubywgTGlzdCAqZHBjb250ZXh0KQoreworCU5vZGUJICAgKmRlZnZhbDsKKwljaGFyCSAg ICpkZWZzdHI7CisKKwlkZWZ2YWwgPSBidWlsZF9jb2x1bW5fZGVmYXVsdChyZWwsIGF0dG5vKTsK KwlBc3NlcnQoZGVmdmFsICE9IE5VTEwpOworCisJZGVmc3RyID0gZGVwYXJzZV9leHByZXNzaW9u KGRlZnZhbCwgZHBjb250ZXh0LCBmYWxzZSwgZmFsc2UpOworCisJcmV0dXJuIGRlZnN0cjsKK30K KworLyoKKyAqIE9idGFpbiB0aGUgZGVwYXJzZWQgcGFydGl0aW9uIGJvdW5kIGV4cHJlc3Npb24g Zm9yIHRoZSBnaXZlbiB0YWJsZS4KKyAqLworc3RhdGljIGNoYXIgKgorUmVsYXRpb25HZXRQYXJ0 aXRpb25Cb3VuZChPaWQgcmVsaWQpCit7CisJRGF0dW0JCWRlcGFyc2VkOworCURhdHVtCQlib3Vu ZDsKKwlib29sCQlpc251bGw7CisJSGVhcFR1cGxlCXR1cGxlOworCisJdHVwbGUgPSBTZWFyY2hT eXNDYWNoZTEoUkVMT0lELCByZWxpZCk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkK KwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHJlbGF0aW9uIHdpdGggT0lE ICV1IiwgcmVsaWQpOworCisJYm91bmQgPSBTeXNDYWNoZUdldEF0dHIoUkVMT0lELCB0dXBsZSwK KwkJCQkJCQlBbnVtX3BnX2NsYXNzX3JlbHBhcnRib3VuZCwKKwkJCQkJCQkmaXNudWxsKTsKKwor CWRlcGFyc2VkID0gRGlyZWN0RnVuY3Rpb25DYWxsMihwZ19nZXRfZXhwciwKKwkJCQkJCQkJICAg Q1N0cmluZ0dldFRleHREYXR1bShUZXh0RGF0dW1HZXRDU3RyaW5nKGJvdW5kKSksCisJCQkJCQkJ CSAgIHJlbGlkKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CisKKwlyZXR1cm4gVGV4dERh dHVtR2V0Q1N0cmluZyhkZXBhcnNlZCk7Cit9CisKKy8qCisgKiBJbnNlcnQgSnNvbmJWYWx1ZSBr ZXkgdG8gdGhlIG91dHB1dCBwYXJzZSBzdGF0ZS4KKyAqLworc3RhdGljIHZvaWQKK2luc2VydF9q c29uYl9rZXkoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgY2hhciAqbmFtZSkKK3sKKwlKc29uYlZh bHVlCWtleTsKKworCS8qIFB1c2ggdGhlIGtleSAqLworCWtleS50eXBlID0gamJ2U3RyaW5nOwor CWtleS52YWwuc3RyaW5nLnZhbCA9IG5hbWU7CisJa2V5LnZhbC5zdHJpbmcubGVuID0gc3RybGVu KG5hbWUpOworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0tFWSwgJmtleSk7Cit9CisKKy8q CisgKiBJbnNlcnQgdGhlIGZvcm1hdCBzdHJpbmcgdG8gdGhlIG91dHB1dCBwYXJzZSBzdGF0ZS4K KyAqLworc3RhdGljIHZvaWQKK2ZtdF90b19qc29uYl9lbGVtZW50KEpzb25iUGFyc2VTdGF0ZSAq c3RhdGUsIGNoYXIgKmZtdFN0cikKK3sKKwlKc29uYlZhbHVlCXZhbDsKKworCUFzc2VydChmbXRT dHIpOworCisJLyogUHVzaCB0aGUga2V5IGZpcnN0ICovCisJaW5zZXJ0X2pzb25iX2tleShzdGF0 ZSwgImZtdCIpOworCisJLyogUHVzaCB0aGUgdmFsdWUgbm93ICovCisJdmFsLnR5cGUgPSBqYnZT dHJpbmc7CisJdmFsLnZhbC5zdHJpbmcudmFsID0gcHN0cmR1cChmbXRTdHIpOworCXZhbC52YWwu c3RyaW5nLmxlbiA9IHN0cmxlbihmbXRTdHIpOworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pC X1ZBTFVFLCAmdmFsKTsKK30KKworLyoKKyAqIEFwcGVuZCBuZXcganNvbmIga2V5OnZhbHVlIHBh aXJzIHRvIHRoZSBvdXRwdXQgcGFyc2Ugc3RhdGUgLS0gdmFyYXJncworICogZnVuY3Rpb24KKyAq CisgKiBBcmd1bWVudHM6CisgKiAic3RhdGUiOiB0aGUgb3V0cHV0IGpzb25iIHN0YXRlIHdoZXJl IGVhY2gga2V5LXZhbHVlIHBhaXIgaXMgcHVzaGVkLgorICoKKyAqICJwYXJlbnRLZXkiOiB0aGUg a2V5IGNvcnJlc3BvbmRpbmcgdG8gd2hpY2ggdmFsdWUtb2JqZWN0IHdpdGggZ2l2ZW4KKyAqIGtl eTp2YWx1ZSBwYWlycyB3aWxsIGJlIGNyZWF0ZWQuIFRoZSBOVUxMIHZhbHVlIGluZGljYXRlcyBj YWxsZXIgd2lsbAorICogdGFrZSBjYXJlIG9mIGluc2VydGluZyBpdC4KKyAqCisgKiAiZm10Ijog ImZtdCIgc3RyaW5nIGZvciBjdXJyZW50IG9iamVjdC4KKyAqCisgKiAiY3JlYXRlQ2hpbGRPYmoi OiBib29sIHRvIHRlbGwgaWYgb2JqZWN0IGNyZWF0aW9uIG5lZWRzIHRvIGJlIGRvbmUgZm9yCisg KiBnaXZlbiBrZXk6dmFsdWUgcGFpcnM7IGZhbHNlIHZhbHVlIGluZGljYXRlcyBjYWxsZXIgd2ls bCB0YWtlIGNhcmUgb2YKKyAqIG9iamVjdC1jcmVhdGlvbiBhbmQgaGVyZSB3ZSBqdXN0IG5lZWQg dG8gYWRkIGtleS12YWx1ZSBwYWlycyB0byBhbHJlYWR5CisgKiBjcmVhdGVkIG9iamVjdC4KKyAq CisgKiAibnVtb2JqcyI6IGl0IGluZGljYXRlcyB0aGUgbnVtYmVyIG9mIGtleTp2YWx1ZSBwYWly cyB0byBhcHBlbmQ7CisgKiBmb3IgZWFjaCBvbmUsIGEgbmFtZSAoc3RyaW5nKSwgdHlwZSAoZnJv bSB0aGUgamJ2VHlwZSBlbnVtKSBhbmQgdmFsdWUgbXVzdAorICogYmUgc3VwcGxpZWQuICBUaGUg dmFsdWUgbXVzdCBtYXRjaCB0aGUgdHlwZSBnaXZlbjsgZm9yIGluc3RhbmNlLCBqYnZCb29sCisg KiByZXF1aXJlcyBhbiBib29sLCBqYnZTdHJpbmcgcmVxdWlyZXMgYSBjaGFyICogYW5kIHNvIG9u LgorICogRWFjaCBlbGVtZW50IHR5cGUgbXVzdCBtYXRjaCB0aGUgY29udmVyc2lvbiBzcGVjaWZp ZXIgZ2l2ZW4gaW4gdGhlIGZvcm1hdAorICogc3RyaW5nLCBhcyBkZXNjcmliZWQgaW4gZGRsX2Rl cGFyc2VfZXhwYW5kX2NvbW1hbmQuCisgKgorICogTm90ZSB3ZSBkb24ndCBoYXZlIHRoZSBsdXh1 cnkgb2Ygc3ByaW50Zi1saWtlIGNvbXBpbGVyIHdhcm5pbmdzIGZvcgorICogbWFsZm9ybWVkIGFy Z3VtZW50IGxpc3RzLgorICovCitzdGF0aWMgSnNvbmJWYWx1ZSAqCituZXdfanNvbmJfVkEoSnNv bmJQYXJzZVN0YXRlICpzdGF0ZSwgY2hhciAqcGFyZW50S2V5LCBjaGFyICpmbXQsCisJCQkgYm9v bCBjcmVhdGVDaGlsZE9iaiwgaW50IG51bW9ianMsLi4uKQoreworCXZhX2xpc3QJCWFyZ3M7CisJ aW50CQkJaTsKKwlKc29uYlZhbHVlCXZhbDsKKwlKc29uYlZhbHVlICp2YWx1ZSA9IE5VTEw7CisK KwkvKgorCSAqIEluc2VydCBwYXJlbnQga2V5IGZvciB3aGljaCB3ZSBhcmUgZ29pbmcgdG8gY3Jl YXRlIHZhbHVlIG9iamVjdCBoZXJlLgorCSAqLworCWlmIChwYXJlbnRLZXkpCisJCWluc2VydF9q c29uYl9rZXkoc3RhdGUsIHBhcmVudEtleSk7CisKKwkvKiBTZXQgdXAgdGhlIHRvcGxldmVsIG9i amVjdCBpZiBub3QgaW5zdHJ1Y3RlZCBvdGhlcndpc2UgKi8KKwlpZiAoY3JlYXRlQ2hpbGRPYmop CisJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisKKwkv KiBTZXQgdXAgdGhlICJmbXQiICovCisJaWYgKGZtdCkKKwkJZm10X3RvX2pzb25iX2VsZW1lbnQo c3RhdGUsIGZtdCk7CisKKwkvKiBBbmQgcHJvY2VzcyB0aGUgZ2l2ZW4gdmFyYXJncyAqLworCXZh X3N0YXJ0KGFyZ3MsIG51bW9ianMpOworCisJZm9yIChpID0gMDsgaSA8IG51bW9ianM7IGkrKykK Kwl7CisJCWNoYXIJICAgKm5hbWU7CisJCWVudW0gamJ2VHlwZSB0eXBlOworCisJCW5hbWUgPSB2 YV9hcmcoYXJncywgY2hhciAqKTsKKwkJdHlwZSA9IHZhX2FyZyhhcmdzLCBlbnVtIGpidlR5cGUp OworCisJCS8qIFB1c2ggdGhlIGtleSBmaXJzdCAqLworCQlpbnNlcnRfanNvbmJfa2V5KHN0YXRl LCBuYW1lKTsKKworCQkvKgorCQkgKiBGb3IgYWxsIHBhcmFtIHR5cGVzIG90aGVyIHRoYW4gamJ2 TnVsbCwgdGhlcmUgbXVzdCBiZSBhIHZhbHVlIGluCisJCSAqIHRoZSB2YXJhcmdzLiBGZXRjaCBp dCBhbmQgYWRkIHRoZSBmdWxseSBmb3JtZWQgc3Vib2JqZWN0IGludG8gdGhlCisJCSAqIG1haW4g b2JqZWN0LgorCQkgKi8KKwkJc3dpdGNoICh0eXBlKQorCQl7CisJCQljYXNlIGpidk51bGw6CisJ CQkJLyogTnVsbCBwYXJhbXMgZG9uJ3QgaGF2ZSBhIHZhbHVlIChvYnZpb3VzbHkpICovCisJCQkJ dmFsLnR5cGUgPSBqYnZOdWxsOworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX1ZBTFVF LCAmdmFsKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBqYnZCb29sOgorCQkJCS8qIFB1c2ggdGhl IGJvb2wgdmFsdWUgKi8KKwkJCQl2YWwudHlwZSA9IGpidkJvb2w7CisJCQkJdmFsLnZhbC5ib29s ZWFuID0gdmFfYXJnKGFyZ3MsIGludCk7CisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJf VkFMVUUsICZ2YWwpOworCQkJCWJyZWFrOworCisJCQljYXNlIGpidlN0cmluZzoKKwkJCQkvKiBQ dXNoIHRoZSBzdHJpbmcgdmFsdWUgKi8KKwkJCQl2YWwudHlwZSA9IGpidlN0cmluZzsKKwkJCQl2 YWwudmFsLnN0cmluZy52YWwgPSBwc3RyZHVwKHZhX2FyZyhhcmdzLCBjaGFyICopKTsKKwkJCQl2 YWwudmFsLnN0cmluZy5sZW4gPSBzdHJsZW4odmFsLnZhbC5zdHJpbmcudmFsKTsKKwkJCQlwdXNo SnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9WQUxVRSwgJnZhbCk7CisJCQkJYnJlYWs7CisKKwkJCWNh c2UgamJ2TnVtZXJpYzoKKwkJCQkvKiBQdXNoIHRoZSBudW1lcmljIHZhbHVlICovCisJCQkJdmFs LnR5cGUgPSBqYnZOdW1lcmljOworCQkJCXZhbC52YWwubnVtZXJpYyA9IChOdW1lcmljKQorCQkJ CQlEYXR1bUdldE51bWVyaWMoRGlyZWN0RnVuY3Rpb25DYWxsMSgKKwkJCQkJCQkJCQkJCQkJaW50 OF9udW1lcmljLAorCQkJCQkJCQkJCQkJCQl2YV9hcmcoYXJncywgaW50KSkpOworCisJCQkJcHVz aEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfVkFMVUUsICZ2YWwpOworCQkJCWJyZWFrOworCisJCQlk ZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgamJ2VHlwZSAlZCIsIHR5cGUp OworCQl9CisJfQorCisJdmFfZW5kKGFyZ3MpOworCisJaWYgKGNyZWF0ZUNoaWxkT2JqKQorCQl2 YWx1ZSA9IHB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCisJ cmV0dXJuIHZhbHVlOworfQorCisvKgorICogQSBoZWxwZXIgcm91dGluZSB0byBpbnNlcnQganNv bmIgZm9yIHR5cElkIHRvIHRoZSBvdXRwdXQgcGFyc2Ugc3RhdGUuCisgKi8KK3N0YXRpYyB2b2lk CituZXdfanNvbmJfZm9yX3R5cGUoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgY2hhciAqcGFyZW50 S2V5LAorCQkJCSAgIE9pZCB0eXBJZCwgaW50MzIgdHlwbW9kKQoreworCU9pZAkJCXR5cG5zcGlk OworCWNoYXIJICAgKnR5cGVfbnNwOworCWNoYXIJICAgKnR5cGVfbmFtZSA9IE5VTEw7CisJY2hh cgkgICAqdHlwbW9kc3RyOworCWJvb2wJCXR5cGVfYXJyYXk7CisKKwlBc3NlcnQocGFyZW50S2V5 KTsKKworCWZvcm1hdF90eXBlX2RldGFpbGVkKHR5cElkLCB0eXBtb2QsICZ0eXBuc3BpZCwgJnR5 cGVfbmFtZSwgJnR5cG1vZHN0ciwKKwkJCQkJCSAmdHlwZV9hcnJheSk7CisKKwlpZiAoT2lkSXNW YWxpZCh0eXBuc3BpZCkpCisJCXR5cGVfbnNwID0gZ2V0X25hbWVzcGFjZV9uYW1lX29yX3RlbXAo dHlwbnNwaWQpOworCWVsc2UKKwkJdHlwZV9uc3AgPSBwc3RyZHVwKCIiKTsKKworCW5ld19qc29u Yl9WQShzdGF0ZSwgcGFyZW50S2V5LCBOVUxMLCB0cnVlLCA0LAorCQkJCSAic2NoZW1hbmFtZSIs IGpidlN0cmluZywgdHlwZV9uc3AsCisJCQkJICJ0eXBlbmFtZSIsIGpidlN0cmluZywgdHlwZV9u YW1lLAorCQkJCSAidHlwbW9kIiwgamJ2U3RyaW5nLCB0eXBtb2RzdHIsCisJCQkJICJ0eXBhcnJh eSIsIGpidkJvb2wsIHR5cGVfYXJyYXkpOworfQorCisvKgorICogQSBoZWxwZXIgcm91dGluZSB0 byBzZXQgdXAgbmFtZTogc2NoZW1hbmFtZSwgb2JqbmFtZQorICoKKyAqIEVsZW1lbnRzICJzY2hl bWFfbmFtZSIgYW5kICJvYmpfbmFtZSIgYXJlIHNldC4gIElmIHRoZSBuYW1lc3BhY2UgT0lECisg KiBjb3JyZXNwb25kcyB0byBhIHRlbXAgc2NoZW1hLCB0aGF0J3Mgc2V0IHRvICJwZ190ZW1wIi4K KyAqCisgKiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRob3NlIHR3byBlbGVtZW50IHR5cGVzIGlz IHdoZXRoZXIgdGhlIG9ial9uYW1lIHdpbGwKKyAqIGJlIHF1b3RlZCBhcyBhbiBpZGVudGlmaWVy IG9yIG5vdCwgd2hpY2ggaXMgbm90IHNvbWV0aGluZyB0aGF0IHRoaXMgcm91dGluZQorICogY29u Y2VybnMgaXRzZWxmIHdpdGg7IHRoYXQgd2lsbCBiZSB1cCB0byB0aGUgZXhwYW5kIGZ1bmN0aW9u LgorICovCitzdGF0aWMgdm9pZAorbmV3X2pzb25iX2Zvcl9xdWFsbmFtZShKc29uYlBhcnNlU3Rh dGUgKnN0YXRlLCBPaWQgbnNwaWQsIGNoYXIgKm9iak5hbWUsCisJCQkJCSAgIGNoYXIgKmtleU5h bWUsIGJvb2wgY3JlYXRlT2JqZWN0KQoreworCWNoYXIJICAgKm5hbWVzcGFjZTsKKworCWlmIChp c0FueVRlbXBOYW1lc3BhY2UobnNwaWQpKQorCQluYW1lc3BhY2UgPSBwc3RyZHVwKCJwZ190ZW1w Iik7CisJZWxzZQorCQluYW1lc3BhY2UgPSBnZXRfbmFtZXNwYWNlX25hbWUobnNwaWQpOworCisJ LyogUHVzaCB0aGUga2V5IGZpcnN0ICovCisJaWYgKGtleU5hbWUpCisJCWluc2VydF9qc29uYl9r ZXkoc3RhdGUsIGtleU5hbWUpOworCisJbmV3X2pzb25iX1ZBKHN0YXRlLCBOVUxMLCBOVUxMLCBj cmVhdGVPYmplY3QsIDIsCisJCQkJICJzY2hlbWFuYW1lIiwgamJ2U3RyaW5nLCBuYW1lc3BhY2Us CisJCQkJICJvYmpuYW1lIiwgamJ2U3RyaW5nLCBvYmpOYW1lKTsKK30KKworLyoKKyAqIEEgaGVs cGVyIHJvdXRpbmUgdG8gc2V0IHVwIG5hbWU6ICdzY2hlbWFuYW1lLCBvYmpuYW1lJyB3aGVyZSB0 aGUgb2JqZWN0IGlzCisgKiBzcGVjaWZpZWQgYnkgY2xhc3NJZCBhbmQgb2JqSWQuCisgKi8KK3N0 YXRpYyB2b2lkCituZXdfanNvbmJfZm9yX3F1YWxuYW1lX2lkKEpzb25iUGFyc2VTdGF0ZSAqc3Rh dGUsIE9pZCBjbGFzc0lkLCBPaWQgb2JqZWN0SWQsCisJCQkJCQkgIGNoYXIgKmtleU5hbWUsIGJv b2wgY3JlYXRlT2JqZWN0KQoreworCVJlbGF0aW9uCWNhdGFsb2c7CisJSGVhcFR1cGxlCWNhdG9i ajsKKwlEYXR1bQkJb2JqX25zcDsKKwlEYXR1bQkJb2JqX25hbWU7CisJQXR0ck51bWJlcglBbnVt X25hbWU7CisJQXR0ck51bWJlcglBbnVtX25hbWVzcGFjZTsKKwlBdHRyTnVtYmVyCUFudW1fb2lk ID0gZ2V0X29iamVjdF9hdHRudW1fb2lkKGNsYXNzSWQpOworCWJvb2wJCWlzbnVsbDsKKworCWNh dGFsb2cgPSB0YWJsZV9vcGVuKGNsYXNzSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwljYXRvYmog PSBnZXRfY2F0YWxvZ19vYmplY3RfYnlfb2lkKGNhdGFsb2csIEFudW1fb2lkLCBvYmplY3RJZCk7 CisJaWYgKCFjYXRvYmopCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBv YmplY3Qgd2l0aCBPSUQgJXUgb2YgY2F0YWxvZyBcIiVzXCIiLAorCQkJIG9iamVjdElkLCBSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShjYXRhbG9nKSk7CisJQW51bV9uYW1lID0gZ2V0X29iamVjdF9h dHRudW1fbmFtZShjbGFzc0lkKTsKKwlBbnVtX25hbWVzcGFjZSA9IGdldF9vYmplY3RfYXR0bnVt X25hbWVzcGFjZShjbGFzc0lkKTsKKworCW9ial9uc3AgPSBoZWFwX2dldGF0dHIoY2F0b2JqLCBB bnVtX25hbWVzcGFjZSwgUmVsYXRpb25HZXREZXNjcihjYXRhbG9nKSwKKwkJCQkJCSAgICZpc251 bGwpOworCWlmIChpc251bGwpCisJCWVsb2coRVJST1IsICJudWxsIG5hbWVzcGFjZSBmb3Igb2Jq ZWN0ICV1Iiwgb2JqZWN0SWQpOworCisJb2JqX25hbWUgPSBoZWFwX2dldGF0dHIoY2F0b2JqLCBB bnVtX25hbWUsIFJlbGF0aW9uR2V0RGVzY3IoY2F0YWxvZyksCisJCQkJCQkJJmlzbnVsbCk7CisJ aWYgKGlzbnVsbCkKKwkJZWxvZyhFUlJPUiwgIm51bGwgYXR0cmlidXRlIG5hbWUgZm9yIG9iamVj dCAldSIsIG9iamVjdElkKTsKKworCW5ld19qc29uYl9mb3JfcXVhbG5hbWUoc3RhdGUsIERhdHVt R2V0T2JqZWN0SWQob2JqX25zcCksCisJCQkJCQkgICBOYW1lU3RyKCpEYXR1bUdldE5hbWUob2Jq X25hbWUpKSwKKwkJCQkJCSAgIGtleU5hbWUsIGNyZWF0ZU9iamVjdCk7CisJdGFibGVfY2xvc2Uo Y2F0YWxvZywgQWNjZXNzU2hhcmVMb2NrKTsKK30KKworLyoKKyAqIEEgaGVscGVyIHJvdXRpbmUg dG8gaW5zZXJ0IGtleTp2YWx1ZSB3aGVyZSB2YWx1ZSBpcyBhcnJheSBvZiBxdWFsbmFtZSB0bwor ICogdGhlIG91dHB1dCBwYXJzZSBzdGF0ZS4KKyAqLworc3RhdGljIHZvaWQKK25ld19qc29uYkFy cmF5X2Zvcl9xdWFsbmFtZV9pZChKc29uYlBhcnNlU3RhdGUgKnN0YXRlLAorCQkJCQkJCSAgIGNo YXIgKmtleW5hbWUsIExpc3QgKmFycmF5KQoreworCUxpc3RDZWxsICAgKmxjOworCisJLyogUHVz aCB0aGUga2V5IGZpcnN0ICovCisJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwga2V5bmFtZSk7CisK KwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9BUlJBWSwgTlVMTCk7CisKKwkvKiBQ dXNoIHRoZSBhcnJheSBlbGVtZW50cyBub3cgKi8KKwlmb3JlYWNoKGxjLCBhcnJheSkKKwkJbmV3 X2pzb25iX2Zvcl9xdWFsbmFtZV9pZChzdGF0ZSwgUmVsYXRpb25SZWxhdGlvbklkLCBsZmlyc3Rf b2lkKGxjKSwKKwkJCQkJCQkJICBOVUxMLCB0cnVlKTsKKworCXB1c2hKc29uYlZhbHVlKCZzdGF0 ZSwgV0pCX0VORF9BUlJBWSwgTlVMTCk7Cit9CisKKy8qCisgKiBBIGhlbHBlciByb3V0aW5lIHRv IGluc2VydCBjb2xsYXRlIG9iamVjdCBmb3IgY29sdW1uCisgKiBkZWZpbml0aW9uIHRvIHRoZSBv dXRwdXQgcGFyc2Ugc3RhdGUuCisgKi8KK3N0YXRpYyB2b2lkCitpbnNlcnRfY29sbGF0ZV9vYmpl Y3QoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgY2hhciAqcGFyZW50S2V5LCBjaGFyICpmbXQsCisJ CQkJCSAgT2lkIGNsYXNzSWQsIE9pZCBvYmplY3RJZCwgY2hhciAqa2V5KQoreworCS8qCisJICog SW5zZXJ0IHBhcmVudCBrZXkgZm9yIHdoaWNoIHdlIGFyZSBnb2luZyB0byBjcmVhdGUgdmFsdWUg b2JqZWN0IGhlcmUuCisJICovCisJaWYgKHBhcmVudEtleSkKKwkJaW5zZXJ0X2pzb25iX2tleShz dGF0ZSwgcGFyZW50S2V5KTsKKworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09C SkVDVCwgTlVMTCk7CisKKwlmbXRfdG9fanNvbmJfZWxlbWVudChzdGF0ZSwgZm10KTsKKworCS8q IHB1c2ggb2JqZWN0IG5vdyAqLworCW5ld19qc29uYl9mb3JfcXVhbG5hbWVfaWQoc3RhdGUsIGNs YXNzSWQsIG9iamVjdElkLCBrZXksIHRydWUpOworCisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBX SkJfRU5EX09CSkVDVCwgTlVMTCk7Cit9CisKKy8qCisgKiBBIGhlbHBlciByb3V0aW5lIHRvIGlu c2VydCBpZGVudGl0eSBvYmplY3QgZm9yIHRoZSB0YWJsZSBkZWZpbml0aW9uCisgKiB0byB0aGUg b3V0cHV0IHBhcnNlIHN0YXRlLgorICovCitzdGF0aWMgdm9pZAoraW5zZXJ0X2lkZW50aXR5X29i amVjdChKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBPaWQgbnNwaWQsIGNoYXIgKnJlbG5hbWUpCit7 CisJbmV3X2pzb25iX2Zvcl9xdWFsbmFtZShzdGF0ZSwgbnNwaWQsIHJlbG5hbWUsICJpZGVudGl0 eSIsIHRydWUpOworfQorCisvKgorICogRGVwYXJzZSB0aGUgc2VxdWVuY2UgQ0FDSEUgb3B0aW9u IHRvIEpzb25iCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIFNFVCBDQUNIRSAle3ZhbHVlfXMK KyAqIE9SCisgKiBDQUNIRSAle3ZhbHVlfQorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK2RlcGFy c2VfU2VxX0NhY2hlX3RvSnNvbmIoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgRm9ybV9wZ19zZXF1 ZW5jZSBzZXFkYXRhLAorCQkJCQkJICBib29sIGFsdGVyX3RhYmxlKQoreworCWNoYXIJICAgKmZt dDsKKworCWZtdCA9IGFsdGVyX3RhYmxlID8gIlNFVCBDQUNIRSAle3ZhbHVlfXMiIDogIkNBQ0hF ICV7dmFsdWV9cyI7CisKKwluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEwsIGZtdCwgdHJ1ZSwgMiwK KwkJCQkgImNsYXVzZSIsIGpidlN0cmluZywgImNhY2hlIiwKKwkJCQkgInZhbHVlIiwgamJ2U3Ry aW5nLAorCQkJCSBwc3ByaW50ZihJTlQ2NF9GT1JNQVQsIHNlcWRhdGEtPnNlcWNhY2hlKSk7Cit9 CisKKy8qCisgKiBEZXBhcnNlIHRoZSBzZXF1ZW5jZSBDWUNMRSBvcHRpb24gdG8gSnNvbmIuCisg KgorICogVmVyYm9zZSBzeW50YXgKKyAqIFNFVCAle25vfXMgQ1lDTEUKKyAqIE9SCisgKiAle25v fXMgQ1lDTEUKKyAqLworc3RhdGljIGlubGluZSB2b2lkCitkZXBhcnNlX1NlcV9DeWNsZV90b0pz b25iKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIEZvcm1fcGdfc2VxdWVuY2Ugc2VxZGF0YSwKKwkJ CQkJCSAgYm9vbCBhbHRlcl90YWJsZSkKK3sKKwljaGFyCSAgICpmbXQ7CisKKwlmbXQgPSBhbHRl cl90YWJsZSA/ICJTRVQgJXtub31zIENZQ0xFIiA6ICIle25vfXMgQ1lDTEUiOworCisJbmV3X2pz b25iX1ZBKHN0YXRlLCBOVUxMLCBmbXQsIHRydWUsIDIsCisJCQkJICJjbGF1c2UiLCBqYnZTdHJp bmcsICJjeWNsZSIsCisJCQkJICJubyIsIGpidlN0cmluZywgc2VxZGF0YS0+c2VxY3ljbGUgPwor CQkJCSAiIiA6ICJOTyIpOworfQorCisvKgorICogRGVwYXJzZSB0aGUgc2VxdWVuY2UgSU5DUkVN RU5UIEJZIG9wdGlvbiB0byBKc29uYgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBTRVQgSU5D UkVNRU5UIEJZICV7dmFsdWV9cworICogT1IKKyAqIElOQ1JFTUVOVCBCWSAle3ZhbHVlfXMKKyAq Lworc3RhdGljIGlubGluZSB2b2lkCitkZXBhcnNlX1NlcV9JbmNyZW1lbnRCeV90b0pzb25iKEpz b25iUGFyc2VTdGF0ZSAqc3RhdGUsCisJCQkJCQkJCUZvcm1fcGdfc2VxdWVuY2Ugc2VxZGF0YSwg Ym9vbCBhbHRlcl90YWJsZSkKK3sKKwljaGFyCSAgICpmbXQ7CisKKwlmbXQgPSBhbHRlcl90YWJs ZSA/ICJTRVQgSU5DUkVNRU5UIEJZICV7dmFsdWV9cyIKKwkJOiAiSU5DUkVNRU5UIEJZICV7dmFs dWV9cyI7CisKKwluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEwsIGZtdCwgdHJ1ZSwgMiwKKwkJCQkg ImNsYXVzZSIsIGpidlN0cmluZywgInNlcWluY3JlbWVudCIsCisJCQkJICJ2YWx1ZSIsIGpidlN0 cmluZywKKwkJCQkgcHNwcmludGYoSU5UNjRfRk9STUFULCBzZXFkYXRhLT5zZXFpbmNyZW1lbnQp KTsKK30KKworLyoKKyAqIERlcGFyc2UgdGhlIHNlcXVlbmNlIE1BWFZBTFVFIG9wdGlvbiB0byBK c29uYi4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogU0VUIE1BWFZBTFVFICV7dmFsdWV9cwor ICogT1IKKyAqIE1BWFZBTFVFICV7dmFsdWV9cworICovCitzdGF0aWMgaW5saW5lIHZvaWQKK2Rl cGFyc2VfU2VxX01heHZhbHVlX3RvSnNvbmIoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwKKwkJCQkJ CQkgRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhLCBib29sIGFsdGVyX3RhYmxlKQoreworCWNoYXIJ ICAgKmZtdDsKKworCWZtdCA9IGFsdGVyX3RhYmxlID8gIlNFVCBNQVhWQUxVRSAle3ZhbHVlfXMi IDogIk1BWFZBTFVFICV7dmFsdWV9cyI7CisKKwluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEwsIGZt dCwgdHJ1ZSwgMiwKKwkJCQkgImNsYXVzZSIsIGpidlN0cmluZywgIm1heHZhbHVlIiwKKwkJCQkg InZhbHVlIiwgamJ2U3RyaW5nLAorCQkJCSBwc3ByaW50ZihJTlQ2NF9GT1JNQVQsIHNlcWRhdGEt PnNlcW1heCkpOworfQorCisvKgorICogRGVwYXJzZSB0aGUgc2VxdWVuY2UgTUlOVkFMVUUgb3B0 aW9uIHRvIEpzb25iCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIFNFVCBNSU5WQUxVRSAle3Zh bHVlfXMKKyAqIE9SCisgKiBNSU5WQUxVRSAle3ZhbHVlfXMKKyAqLworc3RhdGljIGlubGluZSB2 b2lkCitkZXBhcnNlX1NlcV9NaW52YWx1ZV90b0pzb25iKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUs CisJCQkJCQkJIEZvcm1fcGdfc2VxdWVuY2Ugc2VxZGF0YSwgYm9vbCBhbHRlcl90YWJsZSkKK3sK KwljaGFyCSAgICpmbXQ7CisKKwlmbXQgPSBhbHRlcl90YWJsZSA/ICJTRVQgTUlOVkFMVUUgJXt2 YWx1ZX1zIiA6ICJNSU5WQUxVRSAle3ZhbHVlfXMiOworCisJbmV3X2pzb25iX1ZBKHN0YXRlLCBO VUxMLCBmbXQsIHRydWUsIDIsCisJCQkJICJjbGF1c2UiLCBqYnZTdHJpbmcsICJtaW52YWx1ZSIs CisJCQkJICJ2YWx1ZSIsIGpidlN0cmluZywKKwkJCQkgcHNwcmludGYoSU5UNjRfRk9STUFULCBz ZXFkYXRhLT5zZXFtaW4pKTsKK30KKworLyoKKyAqIERlcGFyc2UgdGhlIHNlcXVlbmNlIE9XTkVE IEJZIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIE9XTkVEIEJZICV7b3duZXJ9 RAorICovCitzdGF0aWMgdm9pZAorZGVwYXJzZV9TZXFfT3duZWRCeV90b0pzb25iKEpzb25iUGFy c2VTdGF0ZSAqc3RhdGUsIE9pZCBzZXF1ZW5jZUlkLAorCQkJCQkJCWJvb2wgYWx0ZXJfdGFibGUp Cit7CisJUmVsYXRpb24JZGVwUmVsOworCVN5c1NjYW5EZXNjIHNjYW47CisJU2NhbktleURhdGEg a2V5c1szXTsKKwlIZWFwVHVwbGUJdHVwbGU7CisJYm9vbAkJZWxlbV9mb3VuZCBQR19VU0VEX0ZP Ul9BU1NFUlRTX09OTFkgPSBmYWxzZTsKKworCWRlcFJlbCA9IHRhYmxlX29wZW4oRGVwZW5kUmVs YXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlTY2FuS2V5SW5pdCgma2V5c1swXSwKKwkJCQlB bnVtX3BnX2RlcGVuZF9jbGFzc2lkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURF USwKKwkJCQlPYmplY3RJZEdldERhdHVtKFJlbGF0aW9uUmVsYXRpb25JZCkpOworCVNjYW5LZXlJ bml0KCZrZXlzWzFdLAorCQkJCUFudW1fcGdfZGVwZW5kX29iamlkLAorCQkJCUJURXF1YWxTdHJh dGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKHNlcXVlbmNlSWQpKTsK KwlTY2FuS2V5SW5pdCgma2V5c1syXSwKKwkJCQlBbnVtX3BnX2RlcGVuZF9vYmpzdWJpZCwKKwkJ CQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfSU5UNEVRLAorCQkJCUludDMyR2V0RGF0dW0oMCkp OworCisJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihkZXBSZWwsIERlcGVuZERlcGVuZGVySW5k ZXhJZCwgdHJ1ZSwKKwkJCQkJCQkgIE5VTEwsIDMsIGtleXMpOworCXdoaWxlIChIZWFwVHVwbGVJ c1ZhbGlkKHR1cGxlID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJeworCQlPaWQJCQlvd25l cklkOworCQlGb3JtX3BnX2RlcGVuZCBkZXBmb3JtOworCQljaGFyCSAgICpjb2xuYW1lOworCisJ CWRlcGZvcm0gPSAoRm9ybV9wZ19kZXBlbmQpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkJLyogT25s eSBjb25zaWRlciBBVVRPIGRlcGVuZGVuY2llcyBvbiBwZ19jbGFzcyAqLworCQlpZiAoZGVwZm9y bS0+ZGVwdHlwZSAhPSBERVBFTkRFTkNZX0FVVE8pCisJCQljb250aW51ZTsKKwkJaWYgKGRlcGZv cm0tPnJlZmNsYXNzaWQgIT0gUmVsYXRpb25SZWxhdGlvbklkKQorCQkJY29udGludWU7CisJCWlm IChkZXBmb3JtLT5yZWZvYmpzdWJpZCA8PSAwKQorCQkJY29udGludWU7CisKKwkJb3duZXJJZCA9 IGRlcGZvcm0tPnJlZm9iamlkOworCQljb2xuYW1lID0gZ2V0X2F0dG5hbWUob3duZXJJZCwgZGVw Zm9ybS0+cmVmb2Jqc3ViaWQsIGZhbHNlKTsKKworCQkvKiBtYXJrIHRoZSBiZWdpbiBvZiBvd25l cidzIGRlZmluaXRpb24gb2JqZWN0ICovCisJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JF R0lOX09CSkVDVCwgTlVMTCk7CisKKwkJbmV3X2pzb25iX1ZBKHN0YXRlLCBOVUxMLCAiT1dORUQg QlkgJXtvd25lcn1EIiwgZmFsc2UsIDEsCisJCQkJCSAiY2xhdXNlIiwgamJ2U3RyaW5nLCAib3du ZWQiKTsKKworCQkvKiBvd25lciBrZXkgKi8KKwkJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgIm93 bmVyIik7CisKKwkJLyogb3duZXIgdmFsdWUgYmVnaW4gKi8KKwkJcHVzaEpzb25iVmFsdWUoJnN0 YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKworCQluZXdfanNvbmJfZm9yX3F1YWxuYW1l X2lkKHN0YXRlLCBSZWxhdGlvblJlbGF0aW9uSWQsCisJCQkJCQkJCSAgb3duZXJJZCwgTlVMTCwg ZmFsc2UpOworCQluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEwsIE5VTEwsIGZhbHNlLCAxLCAiYXR0 cm5hbWUiLAorCQkJCQkgamJ2U3RyaW5nLCBjb2xuYW1lKTsKKworCQkvKiBvd25lciB2YWx1ZSBl bmQgKi8KKwkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisK KwkJLyogbWFyayB0aGUgZW5kIG9mIG93bmVyJ3MgZGVmaW5pdGlvbiBvYmplY3QgKi8KKwkJcHVz aEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisKKyNpZmRlZiBVU0Vf QVNTRVJUX0NIRUNLSU5HCisJCWVsZW1fZm91bmQgPSB0cnVlOworI2VuZGlmCisJfQorCisJc3lz dGFibGVfZW5kc2NhbihzY2FuKTsKKwlyZWxhdGlvbl9jbG9zZShkZXBSZWwsIEFjY2Vzc1NoYXJl TG9jayk7CisKKwkvKgorCSAqIElmIHRoZXJlJ3Mgbm8gb3duZXIgY29sdW1uLCBhc3NlcnQuIFRo ZSBjYWxsZXIgbXVzdCBoYXZlIGNoZWNrZWQKKwkgKiBwcmVzZW5jZSBvZiBvd25lZF9ieSBlbGVt ZW50IGJlZm9yZSBpbnZva2luZyB0aGlzLgorCSAqLworCUFzc2VydChlbGVtX2ZvdW5kKTsKK30K KworLyoKKyAqIERlcGFyc2UgdGhlIHNlcXVlbmNlIFNUQVJUIFdJVEggb3B0aW9uIHRvIEpzb25i LgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBTRVQgU1RBUlQgV0lUSCAle3ZhbHVlfXMKKyAq IE9SCisgKiBTVEFSVCBXSVRIICV7dmFsdWV9cworICovCitzdGF0aWMgaW5saW5lIHZvaWQKK2Rl cGFyc2VfU2VxX1N0YXJ0d2l0aF90b0pzb25iKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsCisJCQkJ CQkJICBGb3JtX3BnX3NlcXVlbmNlIHNlcWRhdGEsIGJvb2wgYWx0ZXJfdGFibGUpCit7CisJY2hh cgkgICAqZm10OworCisJZm10ID0gYWx0ZXJfdGFibGUgPyAiU0VUIFNUQVJUIFdJVEggJXt2YWx1 ZX1zIiA6ICJTVEFSVCBXSVRIICV7dmFsdWV9cyI7CisKKwluZXdfanNvbmJfVkEoc3RhdGUsIE5V TEwsIGZtdCwgdHJ1ZSwgMiwKKwkJCQkgImNsYXVzZSIsIGpidlN0cmluZywgInN0YXJ0IiwKKwkJ CQkgInZhbHVlIiwgamJ2U3RyaW5nLAorCQkJCSBwc3ByaW50ZihJTlQ2NF9GT1JNQVQsIHNlcWRh dGEtPnNlcXN0YXJ0KSk7Cit9CisKKy8qCisgKiBEZXBhcnNlIHRoZSBzZXF1ZW5jZSBSRVNUQVJU IG9wdGlvbiB0byBKc29uYgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBSRVNUQVJUICV7dmFs dWV9cworICovCitzdGF0aWMgaW5saW5lIHZvaWQKK2RlcGFyc2VfU2VxX1Jlc3RhcnRfdG9Kc29u YihKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBpbnQ2NCBsYXN0X3ZhbHVlKQoreworCW5ld19qc29u Yl9WQShzdGF0ZSwgTlVMTCwgIlJFU1RBUlQgJXt2YWx1ZX1zIiwgdHJ1ZSwgMiwKKwkJCQkgImNs YXVzZSIsIGpidlN0cmluZywgInJlc3RhcnQiLAorCQkJCSAidmFsdWUiLCBqYnZTdHJpbmcsCisJ CQkJIHBzcHJpbnRmKElOVDY0X0ZPUk1BVCwgbGFzdF92YWx1ZSkpOworfQorCisvKgorICogRGVw YXJzZSB0aGUgc2VxdWVuY2UgQVMgb3B0aW9uLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBB UyAle3NlcXR5cGV9VAorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK2RlcGFyc2VfU2VxX0FzX3Rv SnNvbmIoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhKQor eworCVN0cmluZ0luZm9EYXRhIGZtdFN0cjsKKworCWluaXRTdHJpbmdJbmZvKCZmbXRTdHIpOwor CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIkFTIik7CisKKwlwdXNoSnNvbmJWYWx1 ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCisJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZygmZm10U3RyLCAiICV7c2VxdHlwZX1UIik7CisKKwkvKiBQdXNoIHRoZSB2YWx1ZSBmb3Ig c2VxdHlwZSAqLworCW5ld19qc29uYl9mb3JfdHlwZShzdGF0ZSwgInNlcXR5cGUiLCBzZXFkYXRh LT5zZXF0eXBpZCwgLTEpOworCisJLyogV2UgaGF2ZSBmdWxsIGZtdCBieSBub3csIHNvIGFkZCBq c29uYiBlbGVtZW50IGZvciB0aGF0ICovCisJZm10X3RvX2pzb25iX2VsZW1lbnQoc3RhdGUsIGZt dFN0ci5kYXRhKTsKKworCXBmcmVlKGZtdFN0ci5kYXRhKTsKKworCXB1c2hKc29uYlZhbHVlKCZz dGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworfQorCisvKgorICogRGVwYXJzZSB0aGUgZGVm aW5pdGlvbiBvZiBjb2x1bW4gaWRlbnRpdHkgdG8gSnNvbmIuCisgKgorICogVmVyYm9zZSBzeW50 YXgKKyAqIFNFVCBHRU5FUkFURUQgJXtvcHRpb259cyAle2lkZW50aXR5X3R5cGV9cyAle3NlcV9k ZWZpbml0aW9uOiB9cworICogCU9SCisgKiBHRU5FUkFURUQgJXtvcHRpb259cyBBUyBJREVOVElU WSAle2lkZW50aXR5X3R5cGV9cyAoICV7c2VxX2RlZmluaXRpb246IH1zICkKKyAqLworc3RhdGlj IHZvaWQKK2RlcGFyc2VfQ29sdW1uSWRlbnRpdHlfdG9Kc29uYihKc29uYlBhcnNlU3RhdGUgKnN0 YXRlLCBjaGFyICpwYXJlbnRLZXksCisJCQkJCQkJICAgT2lkIHNlcXJlbGlkLCBjaGFyIGlkZW50 aXR5LCBib29sIGFsdGVyX3RhYmxlKQoreworCUZvcm1fcGdfc2VxdWVuY2Ugc2VxZm9ybTsKKwlT ZXF1ZW5jZV92YWx1ZXMgKnNlcXZhbHVlczsKKwljaGFyCSAgICppZGVudGZtdDsKKwlTdHJpbmdJ bmZvRGF0YSBmbXRTdHI7CisKKwlpbml0U3RyaW5nSW5mbygmZm10U3RyKTsKKworCS8qCisJICog SW5zZXJ0IHBhcmVudCBrZXkgZm9yIHdoaWNoIHdlIGFyZSBnb2luZyB0byBjcmVhdGUgdmFsdWUg b2JqZWN0IGhlcmUuCisJICovCisJaWYgKHBhcmVudEtleSkKKwkJaW5zZXJ0X2pzb25iX2tleShz dGF0ZSwgcGFyZW50S2V5KTsKKworCS8qIGNyZWF0ZSBvYmplY3Qgbm93IGZvciB2YWx1ZSBvZiBp ZGVudGl0eV9jb2x1bW4gKi8KKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpF Q1QsIE5VTEwpOworCisJLyogaWRlbnRpdHlfdHlwZSBvYmplY3QgY3JlYXRpb24gKi8KKwlpZGVu dGZtdCA9IGFsdGVyX3RhYmxlID8gIlNFVCBHRU5FUkFURUQgJXtvcHRpb259cyIgOgorCQkiR0VO RVJBVEVEICV7b3B0aW9ufXMgQVMgSURFTlRJVFkiOworCisJaWYgKGlkZW50aXR5ID09IEFUVFJJ QlVURV9JREVOVElUWV9BTFdBWVMgfHwKKwkJaWRlbnRpdHkgPT0gQVRUUklCVVRFX0lERU5USVRZ X0JZX0RFRkFVTFQpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIle2lk ZW50aXR5X3R5cGV9cyIpOworCQluZXdfanNvbmJfVkEoc3RhdGUsICJpZGVudGl0eV90eXBlIiwg aWRlbnRmbXQsIHRydWUsIDEsCisJCQkJCSAib3B0aW9uIiwgamJ2U3RyaW5nLAorCQkJCQkgKGlk ZW50aXR5ID09IEFUVFJJQlVURV9JREVOVElUWV9BTFdBWVMgPworCQkJCQkgICJBTFdBWVMiIDog IkJZIERFRkFVTFQiKSk7CisJfQorCisJLyogc2VxX2RlZmluaXRpb24gYXJyYXkgb2JqZWN0IGNy ZWF0aW9uICovCisJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgInNlcV9kZWZpbml0aW9uIik7CisK KwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsIGFsdGVyX3RhYmxlID8gIiAle3NlcV9k ZWZpbml0aW9uOiB9cyIgOgorCQkJCQkJICAgIiAoICV7c2VxX2RlZmluaXRpb246IH1zICkiKTsK KworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX0FSUkFZLCBOVUxMKTsKKworCXNl cXZhbHVlcyA9IGdldF9zZXF1ZW5jZV92YWx1ZXMoc2VxcmVsaWQpOworCXNlcWZvcm0gPSBzZXF2 YWx1ZXMtPnNlcWZvcm07CisKKwkvKiBEZWZpbml0aW9uIGVsZW1lbnRzICovCisJZGVwYXJzZV9T ZXFfQ2FjaGVfdG9Kc29uYihzdGF0ZSwgc2VxZm9ybSwgYWx0ZXJfdGFibGUpOworCWRlcGFyc2Vf U2VxX0N5Y2xlX3RvSnNvbmIoc3RhdGUsIHNlcWZvcm0sIGFsdGVyX3RhYmxlKTsKKwlkZXBhcnNl X1NlcV9JbmNyZW1lbnRCeV90b0pzb25iKHN0YXRlLCBzZXFmb3JtLCBhbHRlcl90YWJsZSk7CisJ ZGVwYXJzZV9TZXFfTWludmFsdWVfdG9Kc29uYihzdGF0ZSwgc2VxZm9ybSwgYWx0ZXJfdGFibGUp OworCWRlcGFyc2VfU2VxX01heHZhbHVlX3RvSnNvbmIoc3RhdGUsIHNlcWZvcm0sIGFsdGVyX3Rh YmxlKTsKKwlkZXBhcnNlX1NlcV9TdGFydHdpdGhfdG9Kc29uYihzdGF0ZSwgc2VxZm9ybSwgYWx0 ZXJfdGFibGUpOworCWRlcGFyc2VfU2VxX1Jlc3RhcnRfdG9Kc29uYihzdGF0ZSwgc2VxdmFsdWVz LT5sYXN0X3ZhbHVlKTsKKwkvKiBXZSBwdXJwb3NlZnVsbHkgZG8gbm90IGVtaXQgT1dORUQgQlkg aGVyZSAqLworCisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX0FSUkFZLCBOVUxMKTsK KworCS8qIFdlIGhhdmUgZnVsbCBmbXQgYnkgbm93LCBzbyBhZGQganNvbmIgZWxlbWVudCBmb3Ig dGhhdCAqLworCWZtdF90b19qc29uYl9lbGVtZW50KHN0YXRlLCBmbXRTdHIuZGF0YSk7CisKKwlw ZnJlZShmbXRTdHIuZGF0YSk7CisKKwkvKiBlbmQgb2YgaWRlbmRpdHlfY29sdW1uIG9iamVjdCAq LworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworfQorCisv KgorICogRGVwYXJzZSBhIENvbHVtbkRlZiBub2RlIHdpdGhpbiBhIHJlZ3VsYXIgKG5vbi10eXBl ZCkgdGFibGUgY3JlYXRpb24uCisgKgorICogTk9UIE5VTEwgY29uc3RyYWludHMgaW4gdGhlIGNv bHVtbiBkZWZpbml0aW9uIGFyZSBlbWl0dGVkIGRpcmVjdGx5IGluIHRoZQorICogY29sdW1uIGRl ZmluaXRpb24gYnkgdGhpcyByb3V0aW5lOyBvdGhlciBjb25zdHJhaW50cyBtdXN0IGJlIGVtaXR0 ZWQKKyAqIGVsc2V3aGVyZSAodGhlIGluZm8gaW4gdGhlIHBhcnNlIG5vZGUgaXMgaW5jb21wbGV0 ZSBhbnl3YXkpLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiAiJXtuYW1lfUkgJXtjb2x0eXBl fVQgU1RPUkFHRSAle2NvbHN0b3JhZ2V9cyAle2NvbXByZXNzaW9ufXMgJXtjb2xsYXRpb259cwor ICogICV7bm90X251bGx9cyAle2RlZmF1bHR9cyAle2lkZW50aXR5X2NvbHVtbn1zICV7Z2VuZXJh dGVkX2NvbHVtbn1zIgorICovCitzdGF0aWMgdm9pZAorZGVwYXJzZV9Db2x1bW5EZWZfdG9Kc29u YihKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCSAgTGlz dCAqZHBjb250ZXh0LCBib29sIGNvbXBvc2l0ZSwgQ29sdW1uRGVmICpjb2xkZWYsCisJCQkJCQkg IGJvb2wgaXNfYWx0ZXIpCit7CisJT2lkCQkJcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0 aW9uKTsKKwlIZWFwVHVwbGUJYXR0clR1cDsKKwlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyRm9ybTsK KwlPaWQJCQl0eXBpZDsKKwlpbnQzMgkJdHlwbW9kOworCU9pZAkJCXR5cGNvbGxhdGlvbjsKKwli b29sCQlzYXdfbm90bnVsbDsKKwlMaXN0Q2VsbCAgICpjZWxsOworCVN0cmluZ0luZm9EYXRhIGZt dFN0cjsKKworCWluaXRTdHJpbmdJbmZvKCZmbXRTdHIpOworCisJLyoKKwkgKiBJbmhlcml0ZWQg Y29sdW1ucyB3aXRob3V0IGxvY2FsIGRlZmluaXRpb25zIHNob3VsZCBiZSBza2lwcGVkLgorCSAq IFdlIGRvbid0IHdhbnQgdGhvc2UgdG8gYmUgcGFydCBvZiBmaW5hbCBzdHJpbmcuCisJICovCisJ aWYgKCFjb2xkZWYtPmlzX2xvY2FsKQorCQlyZXR1cm47CisKKwlhdHRyVHVwID0gU2VhcmNoU3lz Q2FjaGVBdHROYW1lKHJlbGlkLCBjb2xkZWYtPmNvbG5hbWUpOworCWlmICghSGVhcFR1cGxlSXNW YWxpZChhdHRyVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBmaW5kIGNhY2hlIGVudHJ5 IGZvciBjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uICV1IiwKKwkJCSBjb2xkZWYtPmNvbG5hbWUs IHJlbGlkKTsKKwlhdHRyRm9ybSA9IChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RSVUNUKGF0dHJU dXApOworCisJZ2V0X2F0dHR5cGV0eXBtb2Rjb2xsKHJlbGlkLCBhdHRyRm9ybS0+YXR0bnVtLAor CQkJCQkJICAmdHlwaWQsICZ0eXBtb2QsICZ0eXBjb2xsYXRpb24pOworCisJLyogc3RhcnQgbWFr aW5nIGNvbHVtbiBvYmplY3QgKi8KKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9P QkpFQ1QsIE5VTEwpOworCisJLyogY3JlYXRlIG5hbWUgYW5kIHR5cGUgZWxlbWVudHMgZm9yIGNv bHVtbiAqLworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIiV7bmFtZX1JIik7CisJ bmV3X2pzb25iX1ZBKHN0YXRlLCBOVUxMLCBOVUxMLCBmYWxzZSwgMiwKKwkJCQkgIm5hbWUiLCBq YnZTdHJpbmcsIGNvbGRlZi0+Y29sbmFtZSwKKwkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJjb2x1 bW4iKTsKKworCS8qCisJICogY3JlYXRlIGNvbHR5cGUgb2JqZWN0IGhhdmluZyA0IGVsZW1lbnRz OiBzY2hlbWFuYW1lLCB0eXBlbmFtZSwgdHlwZW1vZCwKKwkgKiB0eXBlYXJyYXkKKwkgKi8KKwlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgJXtjb2x0eXBlfVQiKTsKKwluZXdfanNv bmJfZm9yX3R5cGUoc3RhdGUsICJjb2x0eXBlIiwgdHlwaWQsIHR5cG1vZCk7CisKKwkvKiBTVE9S QUdFIGNsYXVzZSAqLworCWlmICghY29tcG9zaXRlKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZygmZm10U3RyLCAiIFNUT1JBR0UgJXtjb2xzdG9yYWdlfXMiKTsKKwkJbmV3X2pzb25iX1ZB KHN0YXRlLCBOVUxMLCBOVUxMLCBmYWxzZSwgMSwKKwkJCQkJICJjb2xzdG9yYWdlIiwgamJ2U3Ry aW5nLAorCQkJCQkgc3RvcmFnZV9uYW1lKGF0dHJGb3JtLT5hdHRzdG9yYWdlKSk7CisJfQorCisJ LyogQ09NUFJFU1NJT04gY2xhdXNlICovCisJaWYgKGNvbGRlZi0+Y29tcHJlc3Npb24pCisJewor CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgJXtjb21wcmVzc2lvbn1zIik7CisJ CW5ld19qc29uYl9WQShzdGF0ZSwgImNvbXByZXNzaW9uIiwKKwkJCQkJICJDT01QUkVTU0lPTiAl e2NvbXByZXNzaW9uX21ldGhvZH1JIiwgdHJ1ZSwgMSwKKwkJCQkJICJjb21wcmVzc2lvbl9tZXRo b2QiLCBqYnZTdHJpbmcsIGNvbGRlZi0+Y29tcHJlc3Npb24pOworCX0KKworCS8qIENPTExBVEUg Y2xhdXNlICovCisJaWYgKE9pZElzVmFsaWQodHlwY29sbGF0aW9uKSkKKwl7CisJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIiAle2NvbGxhdGlvbn1zIik7CisJCWluc2VydF9jb2xs YXRlX29iamVjdChzdGF0ZSwgImNvbGxhdGlvbiIsCisJCQkJCQkJICAiQ09MTEFURSAle2NvbGxh dGlvbl9uYW1lfUQiLAorCQkJCQkJCSAgQ29sbGF0aW9uUmVsYXRpb25JZCwgdHlwY29sbGF0aW9u LAorCQkJCQkJCSAgImNvbGxhdGlvbl9uYW1lIik7CisJfQorCisJaWYgKCFjb21wb3NpdGUpCisJ eworCQlPaWQJCQlzZXFyZWxpZCA9IEludmFsaWRPaWQ7CisKKwkJLyoKKwkJICogRW1pdCBhIE5P VCBOVUxMIGRlY2xhcmF0aW9uIGlmIG5lY2Vzc2FyeS4gIE5vdGUgdGhhdCB3ZSBjYW5ub3QKKwkJ ICogdHJ1c3QgcGdfYXR0cmlidXRlLmF0dG5vdG51bGwgaGVyZSwgYmVjYXVzZSB0aGF0IGJpdCBp cyBhbHNvIHNldAorCQkgKiB3aGVuIHByaW1hcnkga2V5cyBhcmUgc3BlY2lmaWVkOyB3ZSBtdXN0 IG5vdCBlbWl0IGEgTk9UIE5VTEwKKwkJICogY29uc3RyYWludCBpbiB0aGF0IGNhc2UsIHVubGVz cyBleHBsaWNpdGx5IHNwZWNpZmllZC4gIFRoZXJlZm9yZSwKKwkJICogd2Ugc2NhbiB0aGUgbGlz dCBvZiBjb25zdHJhaW50cyBhdHRhY2hlZCB0byB0aGlzIGNvbHVtbiB0bworCQkgKiBkZXRlcm1p bmUgd2hldGhlciB3ZSBuZWVkIHRvIGVtaXQgYW55dGhpbmcuIChGb3J0dW5hdGVseSwgTk9UIE5V TEwKKwkJICogY29uc3RyYWludHMgY2Fubm90IGJlIHRhYmxlIGNvbnN0cmFpbnRzLikKKwkJICoK KwkJICogSW4gdGhlIEFMVEVSIFRBQkxFIGNhc2VzLCB3ZSBhbHNvIGFkZCBhIE5PVCBOVUxMIGlm IHRoZSBjb2xEZWYgaXMKKwkJICogbWFya2VkIGlzX25vdF9udWxsLgorCQkgKi8KKwkJc2F3X25v dG51bGwgPSBmYWxzZTsKKwkJZm9yZWFjaChjZWxsLCBjb2xkZWYtPmNvbnN0cmFpbnRzKQorCQl7 CisJCQlDb25zdHJhaW50ICpjb25zdHIgPSAoQ29uc3RyYWludCAqKSBsZmlyc3QoY2VsbCk7CisK KwkJCWlmIChjb25zdHItPmNvbnR5cGUgPT0gQ09OU1RSX05PVE5VTEwpCisJCQl7CisJCQkJc2F3 X25vdG51bGwgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisKKwkJaWYgKGlzX2FsdGVy ICYmIGNvbGRlZi0+aXNfbm90X251bGwpCisJCQlzYXdfbm90bnVsbCA9IHRydWU7CisKKwkJLyog Tk9UIE5VTEwgKi8KKwkJaWYgKHNhd19ub3RudWxsKQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKCZmbXRTdHIsICIgJXtub3RfbnVsbH1zIik7CisJCQluZXdfanNvbmJfVkEoc3RhdGUs IE5VTEwsIE5VTEwsIGZhbHNlLCAxLAorCQkJCQkJICJub3RfbnVsbCIsIGpidlN0cmluZywgIk5P VCBOVUxMIik7CisJCX0KKworCisJCS8qIERFRkFVTFQgKi8KKwkJaWYgKGF0dHJGb3JtLT5hdHRo YXNkZWYgJiYKKwkJCWNvbGRlZi0+Z2VuZXJhdGVkICE9IEFUVFJJQlVURV9HRU5FUkFURURfU1RP UkVEKQorCQl7CisJCQljaGFyCSAgICpkZWZzdHI7CisKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoJmZtdFN0ciwgIiAle2RlZmF1bHR9cyIpOworCisJCQlkZWZzdHIgPSBSZWxhdGlvbkdldENv bHVtbkRlZmF1bHQocmVsYXRpb24sIGF0dHJGb3JtLT5hdHRudW0sCisJCQkJCQkJCQkJCSAgZHBj b250ZXh0KTsKKwkJCW5ld19qc29uYl9WQShzdGF0ZSwgImRlZmF1bHQiLCAiREVGQVVMVCAle2Rl ZmF1bHR9cyIsIHRydWUsIDEsCisJCQkJCQkgImRlZmF1bHQiLCBqYnZTdHJpbmcsIGRlZnN0cik7 CisJCX0KKworCQkvKiBJREVOVElUWSBDT0xVTU4gKi8KKwkJaWYgKGNvbGRlZi0+aWRlbnRpdHkp CisJCXsKKwkJCS8qCisJCQkgKiBGb3IgaWRlbnRpdHkgY29sdW1uLCBmaW5kIHRoZSBzZXF1ZW5j ZSBvd25lZCBieSBjb2x1bW4gaW4gb3JkZXIKKwkJCSAqIHRvIGRlcGFyc2UgdGhlIGNvbHVtbiBk ZWZpbml0aW9uLgorCQkJICovCisJCQlzZXFyZWxpZCA9IGdldElkZW50aXR5U2VxdWVuY2UocmVs aWQsIGF0dHJGb3JtLT5hdHRudW0sIHRydWUpOworCQkJaWYgKE9pZElzVmFsaWQoc2VxcmVsaWQp ICYmIGNvbGRlZi0+aWRlbnRpdHlTZXF1ZW5jZSkKKwkJCQlzZXFyZWxpZCA9IFJhbmdlVmFyR2V0 UmVsaWQoY29sZGVmLT5pZGVudGl0eVNlcXVlbmNlLAorCQkJCQkJCQkJCQlOb0xvY2ssIGZhbHNl KTsKKworCQkJaWYgKE9pZElzVmFsaWQoc2VxcmVsaWQpKQorCQkJeworCQkJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoJmZtdFN0ciwgIiAle2lkZW50aXR5X2NvbHVtbn1zIik7CisJCQkJZGVwYXJz ZV9Db2x1bW5JZGVudGl0eV90b0pzb25iKHN0YXRlLCAiaWRlbnRpdHlfY29sdW1uIiwKKwkJCQkJ CQkJCQkJICAgc2VxcmVsaWQsCisJCQkJCQkJCQkJCSAgIGNvbGRlZi0+aWRlbnRpdHksIGlzX2Fs dGVyKTsKKwkJCX0KKwkJfQorCisKKwkJLyogR0VORVJBVEVEIENPTFVNTiBFWFBSRVNTSU9OICov CisJCWlmIChjb2xkZWYtPmdlbmVyYXRlZCA9PSBBVFRSSUJVVEVfR0VORVJBVEVEX1NUT1JFRCkK KwkJeworCQkJY2hhcgkgICAqZGVmc3RyOworCisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZm bXRTdHIsICIgJXtnZW5lcmF0ZWRfY29sdW1ufXMiKTsKKwkJCWRlZnN0ciA9IFJlbGF0aW9uR2V0 Q29sdW1uRGVmYXVsdChyZWxhdGlvbiwgYXR0ckZvcm0tPmF0dG51bSwKKwkJCQkJCQkJCQkJICBk cGNvbnRleHQpOworCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAiZ2VuZXJhdGVkX2NvbHVtbiIsCisJ CQkJCQkgIkdFTkVSQVRFRCBBTFdBWVMgQVMgKCV7Z2VuZXJhdGlvbl9leHByfXMpIFNUT1JFRCIs CisJCQkJCQkgdHJ1ZSwgMSwKKwkJCQkJCSAiZ2VuZXJhdGlvbl9leHByIiwgamJ2U3RyaW5nLCBk ZWZzdHIpOworCQl9CisJfQorCisJUmVsZWFzZVN5c0NhY2hlKGF0dHJUdXApOworCisJLyogV2Ug aGF2ZSBmdWxsIGZtdCBieSBub3csIHNvIGFkZCBqc29uYiBlbGVtZW50IGZvciB0aGF0ICovCisJ Zm10X3RvX2pzb25iX2VsZW1lbnQoc3RhdGUsIGZtdFN0ci5kYXRhKTsKKworCXBmcmVlKGZtdFN0 ci5kYXRhKTsKKworCS8qIG1hcmsgdGhlIGVuZCBvZiBvbmUgY29sdW1uIG9iamVjdCAqLworCXB1 c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworfQorCisvKgorICog SGVscGVyIGZvciBkZXBhcnNlX0NvbHVtbkRlZl90eXBlZF90b0pzb25iKCkKKyAqCisgKiBSZXR1 cm5zIHRydWUgaWYgd2UgbmVlZCB0byBkZXBhcnNlIGEgQ29sdW1uRGVmIG5vZGUgd2l0aGluIGEg dHlwZWQKKyAqIHRhYmxlIGNyZWF0aW9uLgorICovCitzdGF0aWMgYm9vbAorZGVwYXJzZV9Db2xE ZWZfdHlwZWRfbmVlZGVkKFJlbGF0aW9uIHJlbGF0aW9uLCBDb2x1bW5EZWYgKmNvbGRlZiwKKwkJ CQkJCQlGb3JtX3BnX2F0dHJpYnV0ZSAqYXRGb3JtT3V0LCBib29sICpub3RudWxsKQoreworCU9p ZAkJCXJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbik7CisJSGVhcFR1cGxlCWF0dHJU dXA7CisJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ckZvcm07CisJT2lkCQkJdHlwaWQ7CisJaW50MzIJ CXR5cG1vZDsKKwlPaWQJCQl0eXBjb2xsYXRpb247CisJYm9vbAkJc2F3X25vdG51bGw7CisJTGlz dENlbGwgICAqY2VsbDsKKworCWF0dHJUdXAgPSBTZWFyY2hTeXNDYWNoZUF0dE5hbWUocmVsaWQs IGNvbGRlZi0+Y29sbmFtZSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGF0dHJUdXApKQorCQll bG9nKEVSUk9SLCAiY291bGQgbm90IGZpbmQgY2FjaGUgZW50cnkgZm9yIGNvbHVtbiBcIiVzXCIg b2YgcmVsYXRpb24gJXUiLAorCQkJIGNvbGRlZi0+Y29sbmFtZSwgcmVsaWQpOworCisJYXR0ckZv cm0gPSAoRm9ybV9wZ19hdHRyaWJ1dGUpIEdFVFNUUlVDVChhdHRyVHVwKTsKKworCWlmIChhdEZv cm1PdXQpCisJCSphdEZvcm1PdXQgPSBhdHRyRm9ybTsKKworCWdldF9hdHR0eXBldHlwbW9kY29s bChyZWxpZCwgYXR0ckZvcm0tPmF0dG51bSwKKwkJCQkJCSAgJnR5cGlkLCAmdHlwbW9kLCAmdHlw Y29sbGF0aW9uKTsKKworCS8qCisJICogU2VhcmNoIGZvciBhIE5PVCBOVUxMIGRlY2xhcmF0aW9u LiBBcyBpbiBkZXBhcnNlX0NvbHVtbkRlZiwgd2UgcmVseSBvbgorCSAqIGZpbmRpbmcgYSBjb25z dHJhaW50IG9uIHRoZSBjb2x1bW4gcmF0aGVyIHRoYW4gY29sZGVmLT5pc19ub3RfbnVsbC4KKwkg KiAoVGhpcyByb3V0aW5lIGlzIG5ldmVyIHVzZWQgZm9yIEFMVEVSIGNhc2VzLikKKwkgKi8KKwlz YXdfbm90bnVsbCA9IGZhbHNlOworCWZvcmVhY2goY2VsbCwgY29sZGVmLT5jb25zdHJhaW50cykK Kwl7CisJCUNvbnN0cmFpbnQgKmNvbnN0ciA9IChDb25zdHJhaW50ICopIGxmaXJzdChjZWxsKTsK KworCQlpZiAoY29uc3RyLT5jb250eXBlID09IENPTlNUUl9OT1ROVUxMKQorCQl7CisJCQlzYXdf bm90bnVsbCA9IHRydWU7CisJCQlicmVhazsKKwkJfQorCX0KKworCWlmIChub3RudWxsKQorCQkq bm90bnVsbCA9IHNhd19ub3RudWxsOworCisJaWYgKCFzYXdfbm90bnVsbCAmJiAhYXR0ckZvcm0t PmF0dGhhc2RlZikKKwl7CisJCVJlbGVhc2VTeXNDYWNoZShhdHRyVHVwKTsKKwkJcmV0dXJuIGZh bHNlOworCX0KKworCVJlbGVhc2VTeXNDYWNoZShhdHRyVHVwKTsKKwlyZXR1cm4gdHJ1ZTsKK30K KworLyoKKyAqIERlcGFyc2UgYSBDb2x1bW5EZWYgbm9kZSB3aXRoaW4gYSB0eXBlZCB0YWJsZSBj cmVhdGlvbi4gVGhpcyBpcyBzaW1wbGVyCisgKiB0aGFuIHRoZSByZWd1bGFyIGNhc2UsIGJlY2F1 c2Ugd2UgZG9uJ3QgaGF2ZSB0byBlbWl0IHRoZSB0eXBlIGRlY2xhcmF0aW9uLAorICogY29sbGF0 aW9uLCBvciBkZWZhdWx0LiBIZXJlIHdlIG9ubHkgcmV0dXJuIHNvbWV0aGluZyBpZiB0aGUgY29s dW1uIGlzIGJlaW5nCisgKiBkZWNsYXJlZCBOT1QgTlVMTC4KKyAqCisgKiBBcyBpbiBkZXBhcnNl X0NvbHVtbkRlZiwgYW55IG90aGVyIGNvbnN0cmFpbnQgaXMgcHJvY2Vzc2VkIGVsc2V3aGVyZS4K KyAqCisgKiBWZXJib3NlIHN5bnRheAorICogJXtuYW1lfUkgV0lUSCBPUFRJT05TICV7bm90X251 bGx9cyAle2RlZmF1bHR9cy4KKyAqLworc3RhdGljIHZvaWQKK2RlcGFyc2VfQ29sdW1uRGVmX3R5 cGVkX3RvSnNvbmIoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgUmVsYXRpb24gcmVsYXRpb24sCisJ CQkJCQkJCUxpc3QgKmRwY29udGV4dCwgQ29sdW1uRGVmICpjb2xkZWYpCit7CisJYm9vbAkJbmVl ZGVkOworCUZvcm1fcGdfYXR0cmlidXRlIGF0dHJGb3JtOworCWJvb2wJCXNhd19ub3RudWxsOwor CVN0cmluZ0luZm9EYXRhIGZtdFN0cjsKKworCWluaXRTdHJpbmdJbmZvKCZmbXRTdHIpOworCisJ bmVlZGVkID0gZGVwYXJzZV9Db2xEZWZfdHlwZWRfbmVlZGVkKHJlbGF0aW9uLCBjb2xkZWYsCisJ CQkJCQkJCQkJICZhdHRyRm9ybSwgJnNhd19ub3RudWxsKTsKKwlpZiAoIW5lZWRlZCkKKwkJcmV0 dXJuOworCisJLyogc3RhcnQgbWFraW5nIGNvbHVtbiBvYmplY3QgKi8KKwlwdXNoSnNvbmJWYWx1 ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCisJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZygmZm10U3RyLCAiJXtuYW1lfUkgV0lUSCBPUFRJT05TICV7bm90X251bGx9cyAiKTsKKwor CS8qIEluc2VydCBUWVBFLCBOQU1FIGFuZCBOT1RfTlVMTCBlbGVtZW50cyAqLworCW5ld19qc29u Yl9WQShzdGF0ZSwgTlVMTCwgTlVMTCwgZmFsc2UsIDMsCisJCQkJICJ0eXBlIiwgamJ2U3RyaW5n LCAiY29sdW1uIiwKKwkJCQkgIm5hbWUiLCBqYnZTdHJpbmcsIGNvbGRlZi0+Y29sbmFtZSwKKwkJ CQkgIm5vdF9udWxsIiwgamJ2U3RyaW5nLCBzYXdfbm90bnVsbCA/ICJOT1QgTlVMTCIgOiAiIik7 CisKKwkvKiBERUZBVUxUICovCisJaWYgKGF0dHJGb3JtLT5hdHRoYXNkZWYpCisJeworCQljaGFy CSAgICpkZWZzdHI7CisKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3RyLCAiICV7ZGVm YXVsdH1zIik7CisJCWRlZnN0ciA9IFJlbGF0aW9uR2V0Q29sdW1uRGVmYXVsdChyZWxhdGlvbiwg YXR0ckZvcm0tPmF0dG51bSwKKwkJCQkJCQkJCQkgIGRwY29udGV4dCk7CisJCW5ld19qc29uYl9W QShzdGF0ZSwgImRlZmF1bHQiLCAiREVGQVVMVCAle2RlZmF1bHR9cyIsIHRydWUsIDEsCisJCQkJ CSAiZGVmYXVsdCIsIGpidlN0cmluZywgZGVmc3RyKTsKKwl9CisKKwkvKiBXZSBoYXZlIGZ1bGwg Zm10IGJ5IG5vdywgc28gYWRkIGpzb25iIGVsZW1lbnQgZm9yIHRoYXQgKi8KKwlmbXRfdG9fanNv bmJfZWxlbWVudChzdGF0ZSwgZm10U3RyLmRhdGEpOworCisJcGZyZWUoZm10U3RyLmRhdGEpOwor CisJLyogbWFyayB0aGUgZW5kIG9mIGNvbHVtbiBvYmplY3QgKi8KKwlwdXNoSnNvbmJWYWx1ZSgm c3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKworCS8qIEdlbmVyYXRlZCBjb2x1bW5zIGFy ZSBub3Qgc3VwcG9ydGVkIG9uIHR5cGVkIHRhYmxlcywgc28gd2UgYXJlIGRvbmUgKi8KK30KKwor LyoKKyAqIEhlbHBlciByb3V0aW5lIGZvciB0YWJsZV9lbGVtX3ByZXNlbnQoKQorICoKKyAqIFJl dHVybnMgdHJ1ZSBpZiBhdC1sZWFzdCBvbmUgbG9jYWwgY29sdW1uIGlzIHByZXNlbnQKKyAqIChp LmUuIG5vdCBpbmhlcml0ZWQpLgorICovCitzdGF0aWMgYm9vbAordGFibGVfZWxlbV9wcmVzZW50 X2NvbChSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqdGFibGVFbGVtZW50cywgYm9vbCB0eXBlZCkK K3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIHRhYmxlRWxlbWVudHMpCisJewor CQlOb2RlCSAgICplbHQgPSAoTm9kZSAqKSBsZmlyc3QobGMpOworCisJCXN3aXRjaCAobm9kZVRh ZyhlbHQpKQorCQl7CisJCQljYXNlIFRfQ29sdW1uRGVmOgorCQkJCXsKKwkJCQkJaWYgKHR5cGVk KQorCQkJCQl7CisJCQkJCQlpZiAoZGVwYXJzZV9Db2xEZWZfdHlwZWRfbmVlZGVkKHJlbGF0aW9u LAorCQkJCQkJCQkJCQkJCQkoKENvbHVtbkRlZiAqKSBlbHQpLAorCQkJCQkJCQkJCQkJCQlOVUxM LCBOVUxMKSkKKwkJCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQkJfQorCQkJCQllbHNlCisJCQkJCXsK KwkJCQkJCWlmICgoKENvbHVtbkRlZiAqKSBlbHQpLT5pc19sb2NhbCkKKwkJCQkJCQlyZXR1cm4g dHJ1ZTsKKwkJCQkJfQorCQkJCX0KKwkJCQlicmVhazsKKwkJCWNhc2UgVF9Db25zdHJhaW50Ogor CQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBub2RlIHR5 cGUgJWQiLCBub2RlVGFnKGVsdCkpOworCQl9CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCisv KgorICogSGVscGVyIHJvdXRpbmUgZm9yIHRhYmxlX2VsZW1fcHJlc2VudCgpCisgKgorICogUmV0 dXJucyB0cnVlIGlmIGF0LWxlYXN0IG9uZSBjb25zdHJhaW50IGlzIHByZXNlbnQuCisgKgorICog Tm90ZSB0aGF0IENPTlNUUkFJTlRfRk9SRUlHTiBjb25zdHJhaW50cyBhcmUgYWx3YXlzIGlnbm9y ZWQuCisgKi8KK3N0YXRpYyBib29sCit0YWJsZV9lbGVtX3ByZXNlbnRfY29uc3QoT2lkIHJlbGF0 aW9uSWQpCit7CisJUmVsYXRpb24JY29uUmVsOworCVNjYW5LZXlEYXRhIGtleTsKKwlTeXNTY2Fu RGVzYyBzY2FuOworCUhlYXBUdXBsZQl0dXBsZTsKKwlib29sCQliY29uc3QgPSBmYWxzZTsKKwor CUFzc2VydChPaWRJc1ZhbGlkKHJlbGF0aW9uSWQpKTsKKworCS8qCisJICogU2NhbiBwZ19jb25z dHJhaW50IHRvIGZldGNoIGFsbCBjb25zdHJhaW50cyBsaW5rZWQgdG8gdGhlIGdpdmVuCisJICog cmVsYXRpb24uCisJICovCisJY29uUmVsID0gdGFibGVfb3BlbihDb25zdHJhaW50UmVsYXRpb25J ZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlTY2FuS2V5SW5pdCgma2V5LCBBbnVtX3BnX2NvbnN0cmFp bnRfY29ucmVsaWQsIEJURXF1YWxTdHJhdGVneU51bWJlciwKKwkJCQlGX09JREVRLCBPYmplY3RJ ZEdldERhdHVtKHJlbGF0aW9uSWQpKTsKKwlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKGNvblJl bCwgQ29uc3RyYWludFJlbGlkVHlwaWROYW1lSW5kZXhJZCwgdHJ1ZSwKKwkJCQkJCQkgIE5VTEws IDEsICZrZXkpOworCisJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQodHVwbGUgPSBzeXN0YWJsZV9n ZXRuZXh0KHNjYW4pKSkKKwl7CisJCUZvcm1fcGdfY29uc3RyYWludCBjb25zdHJGb3JtOworCisJ CWNvbnN0ckZvcm0gPSAoRm9ybV9wZ19jb25zdHJhaW50KSBHRVRTVFJVQ1QodHVwbGUpOworCisJ CXN3aXRjaCAoY29uc3RyRm9ybS0+Y29udHlwZSkKKwkJeworCQkJY2FzZSBDT05TVFJBSU5UX0NI RUNLOgorCQkJY2FzZSBDT05TVFJBSU5UX1BSSU1BUlk6CisJCQljYXNlIENPTlNUUkFJTlRfVU5J UVVFOgorCQkJY2FzZSBDT05TVFJBSU5UX0VYQ0xVU0lPTjoKKwkJCQkvKiBObyBuZWVkIHRvIGRl cGFyc2UgY29uc3RyYWludHMgaW5oZXJpdGVkIGZyb20gcGFyZW50IHRhYmxlICovCisJCQkJaWYg KE9pZElzVmFsaWQoY29uc3RyRm9ybS0+Y29ucGFyZW50aWQpKQorCQkJCQljb250aW51ZTsKKwor CQkJCWJjb25zdCA9IHRydWU7CisJCQkJYnJlYWs7CisJCQljYXNlIENPTlNUUkFJTlRfRk9SRUlH TjoKKwkJCQljb250aW51ZTsJCS8qIG5vdCBoZXJlICovCisJCQlkZWZhdWx0OgorCQkJCWVsb2co RVJST1IsICJ1bnJlY29nbml6ZWQgY29uc3RyYWludCB0eXBlIik7CisJCX0KKwl9CisKKwlzeXN0 YWJsZV9lbmRzY2FuKHNjYW4pOworCXRhYmxlX2Nsb3NlKGNvblJlbCwgQWNjZXNzU2hhcmVMb2Nr KTsKKworCXJldHVybiBiY29uc3Q7Cit9CisKKy8qCisgKiBTdWJyb3V0aW5lIGZvciBDUkVBVEUg VEFCTEUgZGVwYXJzaW5nLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiBhdC1sZWFzdCBvbmUgbG9j YWwgY29sdW1uIG9yIGNvbnN0cmFpbnQgaXMgcHJlc2VudC4KKyAqLworc3RhdGljIGJvb2wKK3Rh YmxlX2VsZW1fcHJlc2VudChPaWQgcmVsYXRpb25JZCwgUmVsYXRpb24gcmVsYXRpb24sCisJCQkJ ICAgTGlzdCAqdGFibGVFbGVtZW50cywgYm9vbCB0eXBlZCkKK3sKKwlib29sCQl0ZWxlbXMgPSBm YWxzZTsKKworCXRlbGVtcyA9IHRhYmxlX2VsZW1fcHJlc2VudF9jb2wocmVsYXRpb24sIHRhYmxl RWxlbWVudHMsIHR5cGVkKTsKKworCWlmICghdGVsZW1zKQorCQl0ZWxlbXMgPSB0YWJsZV9lbGVt X3ByZXNlbnRfY29uc3QocmVsYXRpb25JZCk7CisKKwlyZXR1cm4gdGVsZW1zOworfQorCisvKgor ICogU3Vicm91dGluZSBmb3IgQ1JFQVRFIFRBQkxFIGRlcGFyc2luZy4KKyAqCisgKiBEZWFsIHdp dGggYWxsIHRoZSB0YWJsZSBlbGVtZW50cyAoY29sdW1ucyBhbmQgY29uc3RyYWludHMpLgorICoK KyAqIE5vdGUgd2UgaWdub3JlIGNvbnN0cmFpbnRzIGluIHRoZSBwYXJzZSBub2RlIGhlcmU7IHRo ZXkgYXJlIGV4dHJhY3RlZCBmcm9tCisgKiBzeXN0ZW0gY2F0YWxvZ3MgaW5zdGVhZC4KKyAqLwor c3RhdGljIHZvaWQKK2RlcGFyc2VfVGFibGVFbGVtc19Ub0pzb25iKEpzb25iUGFyc2VTdGF0ZSAq c3RhdGUsIFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJICAgTGlzdCAqdGFibGVFbGVtZW50cywg TGlzdCAqZHBjb250ZXh0LAorCQkJCQkJICAgYm9vbCB0eXBlZCwgYm9vbCBjb21wb3NpdGUpCit7 CisJTGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNoKGxjLCB0YWJsZUVsZW1lbnRzKQorCXsKKwkJ Tm9kZQkgICAqZWx0ID0gKE5vZGUgKikgbGZpcnN0KGxjKTsKKworCQlzd2l0Y2ggKG5vZGVUYWco ZWx0KSkKKwkJeworCQkJY2FzZSBUX0NvbHVtbkRlZjoKKwkJCQl7CisJCQkJCWlmICh0eXBlZCkK KwkJCQkJCWRlcGFyc2VfQ29sdW1uRGVmX3R5cGVkX3RvSnNvbmIoc3RhdGUsIHJlbGF0aW9uLAor CQkJCQkJCQkJCQkJCQlkcGNvbnRleHQsCisJCQkJCQkJCQkJCQkJCShDb2x1bW5EZWYgKikgZWx0 KTsKKwkJCQkJZWxzZQorCQkJCQkJZGVwYXJzZV9Db2x1bW5EZWZfdG9Kc29uYihzdGF0ZSwgcmVs YXRpb24sIGRwY29udGV4dCwKKwkJCQkJCQkJCQkJCSAgY29tcG9zaXRlLCAoQ29sdW1uRGVmICop IGVsdCwKKwkJCQkJCQkJCQkJCSAgZmFsc2UpOworCQkJCX0KKwkJCQlicmVhazsKKwkJCWNhc2Ug VF9Db25zdHJhaW50OgorCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAi aW52YWxpZCBub2RlIHR5cGUgJWQiLCBub2RlVGFnKGVsdCkpOworCQl9CisJfQorfQorCisvKgor ICogU3Vicm91dGluZSBmb3IgQ1JFQVRFIFRBQkxFIGRlcGFyc2luZy4KKyAqCisgKiBEZXBhcnNl IHRoZSBJTkhFUklUUyByZWxhdGlvbnMuCisgKgorICogR2l2ZW4gYSB0YWJsZSBPSUQsIHJldHVy biBhIHNjaGVtYS1xdWFsaWZpZWQgdGFibGUgbGlzdCByZXByZXNlbnRpbmcKKyAqIHRoZSBwYXJl bnQgdGFibGVzLgorICovCitzdGF0aWMgTGlzdCAqCitkZXBhcnNlX0luaFJlbHNfVG9Kc29uYihP aWQgb2JqZWN0SWQpCit7CisJTGlzdAkgICAqcGFyZW50cyA9IE5JTDsKKwlSZWxhdGlvbglpbmhS ZWw7CisJU3lzU2NhbkRlc2Mgc2NhbjsKKwlTY2FuS2V5RGF0YSBrZXk7CisJSGVhcFR1cGxlCXR1 cGxlOworCisJaW5oUmVsID0gdGFibGVfb3BlbihJbmhlcml0c1JlbGF0aW9uSWQsIFJvd0V4Y2x1 c2l2ZUxvY2spOworCisJU2NhbktleUluaXQoJmtleSwKKwkJCQlBbnVtX3BnX2luaGVyaXRzX2lu aHJlbGlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJ ZEdldERhdHVtKG9iamVjdElkKSk7CisKKwlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKGluaFJl bCwgSW5oZXJpdHNSZWxpZFNlcW5vSW5kZXhJZCwKKwkJCQkJCQkgIHRydWUsIE5VTEwsIDEsICZr ZXkpOworCisJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQodHVwbGUgPSBzeXN0YWJsZV9nZXRuZXh0 KHNjYW4pKSkKKwl7CisJCUZvcm1fcGdfaW5oZXJpdHMgZm9ybUluaCA9IChGb3JtX3BnX2luaGVy aXRzKSBHRVRTVFJVQ1QodHVwbGUpOworCisJCXBhcmVudHMgPSBsYXBwZW5kX29pZChwYXJlbnRz LCBmb3JtSW5oLT5pbmhwYXJlbnQpOworCX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJ dGFibGVfY2xvc2UoaW5oUmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXJldHVybiBwYXJlbnRz OworfQorCisvKgorICogU3Vicm91dGluZSBmb3IgQ1JFQVRFIFRBQkxFIGRlcGFyc2luZy4KKyAq CisgKiBHaXZlbiBhIHRhYmxlIE9JRCwgb2J0YWluIGl0cyBjb25zdHJhaW50cyBhbmQgYXBwZW5k IHRoZW0gdG8gdGhlIGdpdmVuCisgKiBKc29uYlBhcnNlU3RhdGUuCisgKgorICogVGhpcyB3b3Jr cyBmb3IgdHlwZWQgdGFibGVzLCByZWd1bGFyIHRhYmxlcy4KKyAqCisgKiBOb3RlIHRoYXQgQ09O U1RSQUlOVF9GT1JFSUdOIGNvbnN0cmFpbnRzIGFyZSBhbHdheXMgaWdub3JlZC4KKyAqLworc3Rh dGljIHZvaWQKK2RlcGFyc2VfQ29uc3RyYWludHNfVG9Kc29uYihKc29uYlBhcnNlU3RhdGUgKnN0 YXRlLCBPaWQgcmVsYXRpb25JZCkKK3sKKwlSZWxhdGlvbgljb25SZWw7CisJU2NhbktleURhdGEg a2V5OworCVN5c1NjYW5EZXNjIHNjYW47CisJSGVhcFR1cGxlCXR1cGxlOworCisJQXNzZXJ0KE9p ZElzVmFsaWQocmVsYXRpb25JZCkpOworCisJLyoKKwkgKiBTY2FuIHBnX2NvbnN0cmFpbnQgdG8g ZmV0Y2ggYWxsIGNvbnN0cmFpbnRzIGxpbmtlZCB0byB0aGUgZ2l2ZW4KKwkgKiByZWxhdGlvbi4K KwkgKi8KKwljb25SZWwgPSB0YWJsZV9vcGVuKENvbnN0cmFpbnRSZWxhdGlvbklkLCBBY2Nlc3NT aGFyZUxvY2spOworCVNjYW5LZXlJbml0KCZrZXksIEFudW1fcGdfY29uc3RyYWludF9jb25yZWxp ZCwgQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLAorCQkJCUZfT0lERVEsIE9iamVjdElkR2V0RGF0dW0o cmVsYXRpb25JZCkpOworCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4oY29uUmVsLCBDb25zdHJh aW50UmVsaWRUeXBpZE5hbWVJbmRleElkLCB0cnVlLAorCQkJCQkJCSAgTlVMTCwgMSwgJmtleSk7 CisKKwkvKgorCSAqIEZvciBlYWNoIGNvbnN0cmFpbnQsIGFkZCBhIG5vZGUgdG8gdGhlIGxpc3Qg b2YgdGFibGUgZWxlbWVudHMuICBJbgorCSAqIHRoZXNlIG5vZGVzIHdlIGluY2x1ZGUgbm90IG9u bHkgdGhlIHByaW50YWJsZSBpbmZvcm1hdGlvbiAoImZtdCIpLCBidXQKKwkgKiBhbHNvIHNlcGFy YXRlIGF0dHJpYnV0ZXMgdG8gaW5kaWNhdGUgdGhlIHR5cGUgb2YgY29uc3RyYWludCwgZm9yCisJ ICogYXV0b21hdGljIHByb2Nlc3NpbmcuCisJICovCisJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQo dHVwbGUgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkKKwl7CisJCUZvcm1fcGdfY29uc3RyYWlu dCBjb25zdHJGb3JtOworCQljaGFyCSAgICpjb250eXBlOworCQlTdHJpbmdJbmZvRGF0YSBmbXRT dHI7CisKKwkJY29uc3RyRm9ybSA9IChGb3JtX3BnX2NvbnN0cmFpbnQpIEdFVFNUUlVDVCh0dXBs ZSk7CisKKwkJc3dpdGNoIChjb25zdHJGb3JtLT5jb250eXBlKQorCQl7CisJCQljYXNlIENPTlNU UkFJTlRfQ0hFQ0s6CisJCQkJY29udHlwZSA9ICJjaGVjayI7CisJCQkJYnJlYWs7CisJCQljYXNl IENPTlNUUkFJTlRfRk9SRUlHTjoKKwkJCQljb250aW51ZTsJCS8qIG5vdCBoZXJlICovCisJCQlj YXNlIENPTlNUUkFJTlRfUFJJTUFSWToKKwkJCQljb250eXBlID0gInByaW1hcnkga2V5IjsKKwkJ CQlicmVhazsKKwkJCWNhc2UgQ09OU1RSQUlOVF9VTklRVUU6CisJCQkJY29udHlwZSA9ICJ1bmlx dWUiOworCQkJCWJyZWFrOworCQkJY2FzZSBDT05TVFJBSU5UX0VYQ0xVU0lPTjoKKwkJCQljb250 eXBlID0gImV4Y2x1c2lvbiI7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJS T1IsICJ1bnJlY29nbml6ZWQgY29uc3RyYWludCB0eXBlIik7CisJCX0KKworCQkvKiBObyBuZWVk IHRvIGRlcGFyc2UgY29uc3RyYWludHMgaW5oZXJpdGVkIGZyb20gcGFyZW50IHRhYmxlLiAqLwor CQlpZiAoT2lkSXNWYWxpZChjb25zdHJGb3JtLT5jb25wYXJlbnRpZCkpCisJCQljb250aW51ZTsK KworCQkvKgorCQkgKiAidHlwZSIgYW5kICJjb250eXBlIiBhcmUgbm90IHBhcnQgb2YgdGhlIHBy aW50YWJsZSBvdXRwdXQsIGJ1dCBhcmUKKwkJICogdXNlZnVsIHRvIHByb2dyYW1tYXRpY2FsbHkg ZGlzdGluZ3Vpc2ggdGhlc2UgZnJvbSBjb2x1bW5zIGFuZCBhbW9uZworCQkgKiBkaWZmZXJlbnQg Y29uc3RyYWludCB0eXBlcy4KKwkJICoKKwkJICogWFhYIGl0IG1pZ2h0IGJlIHVzZWZ1bCB0byBh bHNvIGxpc3QgdGhlIGNvbHVtbiBuYW1lcyBpbiBhIFBLLCBldGMuCisJCSAqLworCQlpbml0U3Ry aW5nSW5mbygmZm10U3RyKTsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3RyLCAiQ09O U1RSQUlOVCAle25hbWV9SSAle2RlZmluaXRpb259cyIpOworCQlwdXNoSnNvbmJWYWx1ZSgmc3Rh dGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCisJCW5ld19qc29uYl9WQShzdGF0ZSwgTlVM TCwgTlVMTCwgZmFsc2UsIDQsCisJCQkJCSAidHlwZSIsIGpidlN0cmluZywgImNvbnN0cmFpbnQi LAorCQkJCQkgImNvbnR5cGUiLCBqYnZTdHJpbmcsIGNvbnR5cGUsCisJCQkJCSAibmFtZSIsIGpi dlN0cmluZywgTmFtZVN0cihjb25zdHJGb3JtLT5jb25uYW1lKSwKKwkJCQkJICJkZWZpbml0aW9u IiwgamJ2U3RyaW5nLAorCQkJCQkgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfc3RyaW5nKGNvbnN0ckZv cm0tPm9pZCkpOworCisJCWlmIChjb25zdHJGb3JtLT5jb25pbmRpZCAmJgorCQkJKGNvbnN0ckZv cm0tPmNvbnR5cGUgPT0gQ09OU1RSQUlOVF9QUklNQVJZIHx8CisJCQkgY29uc3RyRm9ybS0+Y29u dHlwZSA9PSBDT05TVFJBSU5UX1VOSVFVRSB8fAorCQkJIGNvbnN0ckZvcm0tPmNvbnR5cGUgPT0g Q09OU1RSQUlOVF9FWENMVVNJT04pKQorCQl7CisJCQlPaWQJCQl0YmxzcGMgPSBnZXRfcmVsX3Rh Ymxlc3BhY2UoY29uc3RyRm9ybS0+Y29uaW5kaWQpOworCisJCQlpZiAoT2lkSXNWYWxpZCh0Ymxz cGMpKQorCQkJeworCQkJCWNoYXIJICAgKnRibHNwY25hbWUgPSBnZXRfdGFibGVzcGFjZV9uYW1l KHRibHNwYyk7CisKKwkJCQlpZiAoIXRibHNwY25hbWUpCisJCQkJCWVsb2coRVJST1IsICJjYWNo ZSBsb29rdXAgZmFpbGVkIGZvciB0YWJsZXNwYWNlICV1IiwKKwkJCQkJCSB0YmxzcGMpOworCisJ CQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3RyLAorCQkJCQkJCQkJICAgIiBVU0lORyBJ TkRFWCBUQUJMRVNQQUNFICV7dGJsc3BjfXMiKTsKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIE5V TEwsIE5VTEwsIGZhbHNlLCAxLAorCQkJCQkJCSAidGJsc3BjIiwgamJ2U3RyaW5nLCB0YmxzcGNu YW1lKTsKKwkJCX0KKwkJfQorCisJCS8qIFdlIGhhdmUgZnVsbCBmbXQgYnkgbm93LCBzbyBhZGQg anNvbmIgZWxlbWVudCBmb3IgdGhhdCAqLworCQlmbXRfdG9fanNvbmJfZWxlbWVudChzdGF0ZSwg Zm10U3RyLmRhdGEpOworCisJCXBmcmVlKGZtdFN0ci5kYXRhKTsKKworCQlwdXNoSnNvbmJWYWx1 ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwl9CisKKwlzeXN0YWJsZV9lbmRzY2Fu KHNjYW4pOworCXRhYmxlX2Nsb3NlKGNvblJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKK30KKworLyoK KyAqIFN1YnJvdXRpbmUgZm9yIENSRUFURSBUQUJMRSBkZXBhcnNpbmcuCisgKgorICogSW5zZXJ0 IGNvbHVtbnMgYW5kIGNvbnN0cmFpbnRzIGVsZW1lbnRzIGluIG91dHB1dCBKc29uYlBhcnNlU3Rh dGUKKyAqIFJldHVybnMgdHJ1ZSBpZiBlbGVtZW50cyBhcmUgaW5zZXJ0ZWQKKyAqLworc3RhdGlj IGJvb2wKK2luc2VydF90YWJsZV9lbGVtZW50cyhKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBTdHJp bmdJbmZvIGZtdFN0ciwKKwkJCQkJICBSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqdGFibGVFbHRz LCBMaXN0ICpkcGNvbnRleHQsCisJCQkJCSAgT2lkIG9iamVjdElkLCBib29sIHR5cGVkLCBib29s IGNvbXBvc2l0ZSkKK3sKKwlib29sCQl0ZWxlbXMgPSBmYWxzZTsKKworCXRlbGVtcyA9IHRhYmxl X2VsZW1fcHJlc2VudChvYmplY3RJZCwgcmVsYXRpb24sIHRhYmxlRWx0cywgdHlwZWQpOworCisJ aWYgKHRlbGVtcykKKwl7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoZm10U3RyLCAiICgle3Rh YmxlX2VsZW1lbnRzOiwgfXMpIik7CisJCWluc2VydF9qc29uYl9rZXkoc3RhdGUsICJ0YWJsZV9l bGVtZW50cyIpOworCisJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX0FSUkFZLCBO VUxMKTsKKworCQkvKgorCQkgKiBQcm9jZXNzIHRhYmxlIGVsZW1lbnRzOiBjb2x1bW4gZGVmaW5p dGlvbnMgYW5kIGNvbnN0cmFpbnRzLiAgT25seQorCQkgKiB0aGUgY29sdW1uIGRlZmluaXRpb25z IGFyZSBvYnRhaW5lZCBmcm9tIHRoZSBwYXJzZSBub2RlIGl0c2VsZi4gIFRvCisJCSAqIGdldCBj b25zdHJhaW50cyB3ZSByZWx5IG9uIHBnX2NvbnN0cmFpbnQsIGJlY2F1c2UgdGhlIHBhcnNlIG5v ZGUKKwkJICogbWlnaHQgYmUgbWlzc2luZyBzb21lIHRoaW5ncyBzdWNoIGFzIHRoZSBuYW1lIG9m IHRoZSBjb25zdHJhaW50cy4KKwkJICovCisJCWRlcGFyc2VfVGFibGVFbGVtc19Ub0pzb25iKHN0 YXRlLCByZWxhdGlvbiwgdGFibGVFbHRzLCBkcGNvbnRleHQsCisJCQkJCQkJCSAgIHR5cGVkLAkv KiB0eXBlZCB0YWJsZSAqLworCQkJCQkJCQkgICBjb21wb3NpdGUpOwkvKiBub3QgY29tcG9zaXRl ICovCisKKwkJZGVwYXJzZV9Db25zdHJhaW50c19Ub0pzb25iKHN0YXRlLCBvYmplY3RJZCk7CisK KwkJLyogZW5kIG9mIHRhYmxlX2VsZW1lbnRzIGFycmF5ICovCisJCXB1c2hKc29uYlZhbHVlKCZz dGF0ZSwgV0pCX0VORF9BUlJBWSwgTlVMTCk7CisJfQorCisJcmV0dXJuIHRlbGVtczsKK30KKwor LyoKKyAqIERlcGFyc2UgRGVmRWxlbXMsIGFzIHVzZWQgYnkgQ3JlYXRlIFRhYmxlCisgKgorICog VmVyYm9zZSBzeW50YXgKKyAqICV7bGFiZWx9cyA9ICV7dmFsdWV9TAorICovCitzdGF0aWMgdm9p ZAorZGVwYXJzZV9EZWZFbGVtX1RvSnNvbmIoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgRGVmRWxl bSAqZWxlbSwgYm9vbCBpc19yZXNldCkKK3sKKwlTdHJpbmdJbmZvRGF0YSBmbXRTdHI7CisJU3Ry aW5nSW5mb0RhdGEgbGFiZWxmbXQ7CisKKwlpbml0U3RyaW5nSW5mbygmZm10U3RyKTsKKworCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIiV7bGFiZWx9cyIpOworCXB1c2hKc29uYlZh bHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisKKwkvKiBMQUJFTCAqLworCWlu aXRTdHJpbmdJbmZvKCZsYWJlbGZtdCk7CisKKwlpbnNlcnRfanNvbmJfa2V5KHN0YXRlLCAibGFi ZWwiKTsKKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOwor CisJaWYgKGVsZW0tPmRlZm5hbWVzcGFjZSAhPSBOVUxMKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5m b1N0cmluZygmbGFiZWxmbXQsICIle3NjaGVtYX1JLiIpOworCQluZXdfanNvbmJfVkEoc3RhdGUs IE5VTEwsIE5VTEwsIGZhbHNlLCAxLAorCQkJCQkgInNjaGVtYSIsIGpidlN0cmluZywgZWxlbS0+ ZGVmbmFtZXNwYWNlKTsKKwl9CisKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZsYWJlbGZtdCwg IiV7bGFiZWx9SSIpOworCW5ld19qc29uYl9WQShzdGF0ZSwgTlVMTCwgTlVMTCwgZmFsc2UsIDEs CisJCQkJICJsYWJlbCIsIGpidlN0cmluZywgZWxlbS0+ZGVmbmFtZSk7CisKKwlmbXRfdG9fanNv bmJfZWxlbWVudChzdGF0ZSwgbGFiZWxmbXQuZGF0YSk7CisJcGZyZWUobGFiZWxmbXQuZGF0YSk7 CisKKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKworCS8q IFZBTFVFICovCisJaWYgKCFpc19yZXNldCkKKwl7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco JmZtdFN0ciwgIiA9ICV7dmFsdWV9TCIpOworCQluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEwsIE5V TEwsIGZhbHNlLCAxLCAidmFsdWUiLCBqYnZTdHJpbmcsCisJCQkJCSBlbGVtLT5hcmcgPyBkZWZH ZXRTdHJpbmcoZWxlbSkgOgorCQkJCQkgZGVmR2V0Qm9vbGVhbihlbGVtKSA/ICJ0cnVlIiA6ICJm YWxzZSIpOworCX0KKworCWZtdF90b19qc29uYl9lbGVtZW50KHN0YXRlLCBmbXRTdHIuZGF0YSk7 CisJcGZyZWUoZm10U3RyLmRhdGEpOworCisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5E X09CSkVDVCwgTlVMTCk7Cit9CisKKy8qCisgKiBEZXBhcnNlIFNFVC9SRVNFVCBhcyB1c2VkIGJ5 CisgKiBBTFRFUiBUQUJMRSAuLi4gQUxURVIgQ09MVU1OIC4uLiBTRVQvUkVTRVQgKC4uLikKKyAq CisgKiBWZXJib3NlIHN5bnRheAorICogQUxURVIgQ09MVU1OICV7Y29sdW1ufUkgUkVTRVR8U0VU ICgle29wdGlvbnM6LCB9cykKKyAqLworc3RhdGljIHZvaWQKK2RlcGFyc2VfQ29sdW1uU2V0T3B0 aW9uc19Ub0pzb25iKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIEFsdGVyVGFibGVDbWQgKnN1YmNt ZCkKK3sKKwlMaXN0Q2VsbCAgICpjZWxsOworCWJvb2wJCWlzX3Jlc2V0ID0gc3ViY21kLT5zdWJ0 eXBlID09IEFUX1Jlc2V0T3B0aW9uczsKKwlib29sCQllbGVtX2ZvdW5kIFBHX1VTRURfRk9SX0FT U0VSVFNfT05MWSA9IGZhbHNlOworCisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5f T0JKRUNULCBOVUxMKTsKKwluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEwsICJBTFRFUiBDT0xVTU4g JXtjb2x1bW59SSAle29wdGlvbn1zIgorCQkJCSAiICgle29wdGlvbnM6LCB9cykiLCBmYWxzZSwg MiwKKwkJCQkgImNvbHVtbiIsIGpidlN0cmluZywgc3ViY21kLT5uYW1lLAorCQkJCSAib3B0aW9u IiwgamJ2U3RyaW5nLCBpc19yZXNldCA/ICJSRVNFVCIgOiAiU0VUIik7CisKKwlpbnNlcnRfanNv bmJfa2V5KHN0YXRlLCAib3B0aW9ucyIpOworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JF R0lOX0FSUkFZLCBOVUxMKTsKKworCWZvcmVhY2goY2VsbCwgKExpc3QgKikgc3ViY21kLT5kZWYp CisJeworCQlEZWZFbGVtICAgICplbGVtOworCisJCWVsZW0gPSAoRGVmRWxlbSAqKSBsZmlyc3Qo Y2VsbCk7CisJCWRlcGFyc2VfRGVmRWxlbV9Ub0pzb25iKHN0YXRlLCBlbGVtLCBpc19yZXNldCk7 CisKKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCisJCWVsZW1fZm91bmQgPSB0cnVlOworI2Vu ZGlmCisJfQorCisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX0FSUkFZLCBOVUxMKTsK KworCUFzc2VydChlbGVtX2ZvdW5kKTsKKworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VO RF9PQkpFQ1QsIE5VTEwpOworfQorCisvKgorICogRGVwYXJzZSBTRVQvUkVTRVQgYXMgdXNlZCBi eSBBTFRFUiBUQUJMRSAuLi4gU0VUL1JFU0VUICguLi4pCisgKgorICogVmVyYm9zZSBzeW50YXgK KyAqIFJFU0VUfFNFVCAoJXtvcHRpb25zOiwgfXMpCisgKi8KK3N0YXRpYyB2b2lkCitkZXBhcnNl X1JlbFNldE9wdGlvbnNfdG9Kc29uYihKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBBbHRlclRhYmxl Q21kICpzdWJjbWQpCit7CisJTGlzdENlbGwgICAqY2VsbDsKKwlib29sCQlpc19yZXNldCA9IHN1 YmNtZC0+c3VidHlwZSA9PSBBVF9SZXNldFJlbE9wdGlvbnM7CisJYm9vbAkJZWxlbV9mb3VuZCBQ R19VU0VEX0ZPUl9BU1NFUlRTX09OTFkgPSBmYWxzZTsKKworCXB1c2hKc29uYlZhbHVlKCZzdGF0 ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJbmV3X2pzb25iX1ZBKHN0YXRlLCBOVUxMLCAi JXtzZXRfcmVzZXR9cyAoJXtvcHRpb25zOiwgfXMpIiwgZmFsc2UsIDEsCisJCQkJICJzZXRfcmVz ZXQiLCBqYnZTdHJpbmcsIGlzX3Jlc2V0ID8gIlJFU0VUIiA6ICJTRVQiKTsKKworCS8qIGluc2Vy dCBvcHRpb25zIGFycmF5ICovCisJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgIm9wdGlvbnMiKTsK KworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX0FSUkFZLCBOVUxMKTsKKworCWZv cmVhY2goY2VsbCwgKExpc3QgKikgc3ViY21kLT5kZWYpCisJeworCQlEZWZFbGVtICAgICplbGVt OworCisJCWVsZW0gPSAoRGVmRWxlbSAqKSBsZmlyc3QoY2VsbCk7CisJCWRlcGFyc2VfRGVmRWxl bV9Ub0pzb25iKHN0YXRlLCBlbGVtLCBpc19yZXNldCk7CisKKyNpZmRlZiBVU0VfQVNTRVJUX0NI RUNLSU5HCisJCWVsZW1fZm91bmQgPSB0cnVlOworI2VuZGlmCisJfQorCisJcHVzaEpzb25iVmFs dWUoJnN0YXRlLCBXSkJfRU5EX0FSUkFZLCBOVUxMKTsKKworCUFzc2VydChlbGVtX2ZvdW5kKTsK KworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworfQorCisv KgorICogRGVwYXJzZSBXSVRIIGNsYXVzZSwgYXMgdXNlZCBieSBDcmVhdGUgVGFibGUuCisgKi8K K3N0YXRpYyB2b2lkCitkZXBhcnNlX3dpdGhPYmpfVG9Kc29uYihKc29uYlBhcnNlU3RhdGUgKnN0 YXRlLCBjaGFyICpwYXJlbnRLZXksCisJCQkJCQljaGFyICpmbXQsIENyZWF0ZVN0bXQgKm5vZGUp Cit7CisJTGlzdENlbGwgICAqY2VsbDsKKworCS8qCisJICogSW5zZXJ0IHBhcmVudCBrZXkgZm9y IHdoaWNoIHdlIGFyZSBnb2luZyB0byBjcmVhdGUgdmFsdWUgb2JqZWN0IGhlcmUuCisJICovCisJ aWYgKHBhcmVudEtleSkKKwkJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgcGFyZW50S2V5KTsKKwor CS8qIHdpdGhfY2xhdXNlJ3MgdmFsdWUgaXMgYW4gb2JqZWN0ICovCisJcHVzaEpzb25iVmFsdWUo JnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwlmbXRfdG9fanNvbmJfZWxlbWVudChz dGF0ZSwgZm10KTsKKworCS8qIFdJVEggKi8KKwlpbnNlcnRfanNvbmJfa2V5KHN0YXRlLCAid2l0 aCIpOworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX0FSUkFZLCBOVUxMKTsKKwor CS8qIGFkZCBlbGVtZW50cyB0byBhcnJheSAqLworCWZvcmVhY2goY2VsbCwgbm9kZS0+b3B0aW9u cykKKwl7CisJCURlZkVsZW0gICAgKm9wdCA9IChEZWZFbGVtICopIGxmaXJzdChjZWxsKTsKKwor CQlkZXBhcnNlX0RlZkVsZW1fVG9Kc29uYihzdGF0ZSwgb3B0LCBmYWxzZSk7CisJfQorCisJLyog d2l0aCdzIGFycmF5IGVuZCAqLworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9BUlJB WSwgTlVMTCk7CisKKwkvKiB3aXRoX2NsYXVzZSdzIG9iamVjdCBlbmQgKi8KKwlwdXNoSnNvbmJW YWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKK30KKworLyoKKyAqIERlcGFyc2Ug YSBDcmVhdGVTdG10IChDUkVBVEUgVEFCTEUpLgorICoKKyAqIEdpdmVuIGEgdGFibGUgT0lEIGFu ZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBKc29uYlZhbHVlCisgKiBy ZXByZXNlbnRpbmcgdGhlIGNyZWF0aW9uIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50YXgK KyAqIENSRUFURSAle3BlcnNpc3RlbmNlfXMgVEFCTEUgJXtpZl9ub3RfZXhpc3RzfXMgJXtpZGVu dGl0eX1EIFtPRgorICogJXtvZl90eXBlfVQgfCBQQVJUSVRJT04gT0YgJXtwYXJlbnRfaWRlbnRp dHl9RF0gJXt0YWJsZV9lbGVtZW50c31zCisgKiAle2luaGVyaXRzfXMgJXtwYXJ0aXRpb25fYnl9 cyAle2FjY2Vzc19tZXRob2R9cyAle3dpdGhfY2xhdXNlfXMKKyAqICV7dGFibGVzcGFjZX1zCisg Ki8KK3N0YXRpYyBKc29uYiAqCitkZXBhcnNlX0NyZWF0ZVN0bXQoT2lkIG9iamVjdElkLCBOb2Rl ICpwYXJzZXRyZWUpCit7CisJQ3JlYXRlU3RtdCAqbm9kZSA9IChDcmVhdGVTdG10ICopIHBhcnNl dHJlZTsKKwlSZWxhdGlvbglyZWxhdGlvbiA9IHJlbGF0aW9uX29wZW4ob2JqZWN0SWQsIEFjY2Vz c1NoYXJlTG9jayk7CisJT2lkCQkJbnNwaWQgPSByZWxhdGlvbi0+cmRfcmVsLT5yZWxuYW1lc3Bh Y2U7CisJY2hhcgkgICAqcmVsbmFtZSA9IFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9u KTsKKwlMaXN0CSAgICpkcGNvbnRleHQ7CisJU3RyaW5nSW5mb0RhdGEgZm10U3RyOworCUpzb25i UGFyc2VTdGF0ZSAqc3RhdGUgPSBOVUxMOworCUpzb25iVmFsdWUgKnZhbHVlOworCisJaW5pdFN0 cmluZ0luZm8oJmZtdFN0cik7CisKKwkvKiBtYXJrIHRoZSBiZWdpbiBvZiBST09UIG9iamVjdCBh bmQgc3RhcnQgYWRkaW5nIGVsZW1lbnRzIHRvIGl0LiAqLworCXB1c2hKc29uYlZhbHVlKCZzdGF0 ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisKKwkvKiBQRVJTSVNURU5DRSAqLworCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIkNSRUFURSAle3BlcnNpc3RlbmNlfXMgVEFCTEUi KTsKKwluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEwsIE5VTEwsIGZhbHNlLCAxLAorCQkJCSAicGVy c2lzdGVuY2UiLCBqYnZTdHJpbmcsCisJCQkJIGdldF9wZXJzaXN0ZW5jZV9zdHIocmVsYXRpb24t PnJkX3JlbC0+cmVscGVyc2lzdGVuY2UpKTsKKworCS8qIElGIE5PVCBFWElTVFMgKi8KKwlpZiAo bm9kZS0+aWZfbm90X2V4aXN0cykKKwl7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN0 ciwgIiAle2lmX25vdF9leGlzdHN9cyIpOworCQluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEwsIE5V TEwsIGZhbHNlLCAxLAorCQkJCQkgImlmX25vdF9leGlzdHMiLCBqYnZTdHJpbmcsICJJRiBOT1Qg RVhJU1RTIik7CisJfQorCisJLyogSURFTlRJVFkgKi8KKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5n KCZmbXRTdHIsICIgJXtpZGVudGl0eX1EIik7CisJaW5zZXJ0X2lkZW50aXR5X29iamVjdChzdGF0 ZSwgbnNwaWQsIHJlbG5hbWUpOworCisJZHBjb250ZXh0ID0gZGVwYXJzZV9jb250ZXh0X2ZvcihS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbiksCisJCQkJCQkJCQlvYmplY3RJZCk7CisK KwkvKgorCSAqIFRBQkxFLUVMRU1FTlRTIGFycmF5IGNyZWF0aW9uCisJICoKKwkgKiBUeXBlZCB0 YWJsZXMgYW5kIHBhcnRpdGlvbnMgdXNlIGEgc2xpZ2h0bHkgZGlmZmVyZW50IGZvcm1hdCBzdHJp bmc6IHdlCisJICogbXVzdCBub3QgcHV0IHRhYmxlX2VsZW1lbnRzIHdpdGggcGFyZW50cyBkaXJl Y3RseSBpbiB0aGUgZm10IHN0cmluZywKKwkgKiBiZWNhdXNlIGlmIHRoZXJlIGFyZSBubyBvcHRp b25zIHRoZSBwYXJlbnRoZXNlcyBtdXN0IG5vdCBiZSBlbWl0dGVkOworCSAqIGFuZCBhbHNvLCB0 eXBlZCB0YWJsZXMgZG8gbm90IGFsbG93IGZvciBpbmhlcml0YW5jZS4KKwkgKi8KKwlpZiAobm9k ZS0+b2ZUeXBlbmFtZSB8fCBub2RlLT5wYXJ0Ym91bmQpCisJeworCQkvKiBJbnNlcnQgdGhlICJv ZiB0eXBlIiBvciAicGFydGl0aW9uIG9mIiBjbGF1c2Ugd2hpY2hldmVyIHByZXNlbnQgKi8KKwkJ aWYgKG5vZGUtPm9mVHlwZW5hbWUpCisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZt dFN0ciwgIiBPRiAle29mX3R5cGV9VCIpOworCQkJbmV3X2pzb25iX2Zvcl90eXBlKHN0YXRlLCAi b2ZfdHlwZSIsCisJCQkJCQkJICAgcmVsYXRpb24tPnJkX3JlbC0+cmVsb2Z0eXBlLCAtMSk7CisJ CX0KKwkJZWxzZQorCQl7CisJCQlMaXN0CSAgICpwYXJlbnRzOworCQkJT2lkCQkJb2JqaWQ7CisK KwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIiBQQVJUSVRJT04gT0YgJXtwYXJl bnRfaWRlbnRpdHl9RCIpOworCQkJcGFyZW50cyA9IGRlcGFyc2VfSW5oUmVsc19Ub0pzb25iKG9i amVjdElkKTsKKwkJCW9iamlkID0gbGluaXRpYWxfb2lkKHBhcmVudHMpOworCQkJQXNzZXJ0KGxp c3RfbGVuZ3RoKHBhcmVudHMpID09IDEpOworCQkJbmV3X2pzb25iX2Zvcl9xdWFsbmFtZV9pZChz dGF0ZSwgUmVsYXRpb25SZWxhdGlvbklkLAorCQkJCQkJCQkJICBvYmppZCwgInBhcmVudF9pZGVu dGl0eSIsIHRydWUpOworCQl9CisKKwkJLyoKKwkJICogV2UgY2FuJ3QgcHV0IHRhYmxlIGVsZW1l bnRzIGRpcmVjdGx5IGluIHRoZSBmbXQgc3RyaW5nIGFzIGFuIGFycmF5CisJCSAqIHN1cnJvdW5k ZWQgYnkgcGFyZW50aGVzZXMgaGVyZSwgYmVjYXVzZSBhbiBlbXB0eSBjbGF1c2Ugd291bGQgY2F1 c2UKKwkJICogYSBzeW50YXggZXJyb3IuICBUaGVyZWZvcmUsIHdlIGZpcnN0IGNoZWNrIHRoZSBw cmVzZW5jZSBhbmQgdGhlbgorCQkgKiBhZGQgdGhlIGVsZW1lbnRzLiBUaGlzIGZ1bmN0aW9uIGNh bGwgdGFrZXMgY2FyZSBvZiBib3RoIHRoZSBjaGVjaworCQkgKiBhbmQgYWRkaXRpb24uCisJCSAq LworCQlpbnNlcnRfdGFibGVfZWxlbWVudHMoc3RhdGUsICZmbXRTdHIsIHJlbGF0aW9uLAorCQkJ CQkJCSAgbm9kZS0+dGFibGVFbHRzLCBkcGNvbnRleHQsIG9iamVjdElkLAorCQkJCQkJCSAgdHJ1 ZSwgCS8qIHR5cGVkIHRhYmxlICovCisJCQkJCQkJICBmYWxzZSk7CS8qIG5vdCBjb21wb3NpdGUg Ki8KKwl9CisJZWxzZQorCXsKKwkJTGlzdAkgICAqaW5ocmVsYXRpb25zOworCQlib29sCQl0ZWxl bXMgPSBmYWxzZTsKKworCQkvKgorCQkgKiBUaGVyZSBpcyBubyBuZWVkIHRvIHByb2Nlc3MgTElL RSBjbGF1c2VzIHNlcGFyYXRlbHk7IHRoZXkgaGF2ZQorCQkgKiBhbHJlYWR5IGJlZW4gdHJhbnNm b3JtZWQgaW50byBjb2x1bW5zIGFuZCBjb25zdHJhaW50cy4KKwkJICovCisKKwkJLyoKKwkJICog Q2hlY2sgaWYgdGFibGUgZWxlbWVudHMgYXJlIHByZXNlbnQsIGlmIHNvLCBhZGQgdGhlbS4gVGhp cyBmdW5jdGlvbgorCQkgKiBjYWxsIHRha2VzIGNhcmUgb2YgYm90aCB0aGUgY2hlY2sgYW5kIGFk ZGl0aW9uLgorCQkgKi8KKwkJdGVsZW1zID0gaW5zZXJ0X3RhYmxlX2VsZW1lbnRzKHN0YXRlLCAm Zm10U3RyLCByZWxhdGlvbiwKKwkJCQkJCQkJCSAgIG5vZGUtPnRhYmxlRWx0cywgZHBjb250ZXh0 LCBvYmplY3RJZCwKKwkJCQkJCQkJCSAgIGZhbHNlLAkvKiBub3QgdHlwZWQgdGFibGUgKi8KKwkJ CQkJCQkJCSAgIGZhbHNlKTsJLyogbm90IGNvbXBvc2l0ZSAqLworCisJCS8qCisJCSAqIElmIG5v IHRhYmxlIGVsZW1lbnRzIGFkZGVkLCB0aGVuIGFkZCBlbXB0eSAiKCkiIG5lZWRlZCBmb3IgJ2lu aGVyaXQnCisJCSAqIGNyZWF0ZSB0YWJsZSBzeW50YXguIEV4YW1wbGU6IENSRUFURSBUQUJMRSB0 MSAoKSBJTkhFUklUUyAodDApOworCQkgKi8KKwkJaWYgKCF0ZWxlbXMpCisJCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgKCkiKTsKKworCQkvKgorCQkgKiBBZGQgaW5oZXJpdGFu Y2Ugc3BlY2lmaWNhdGlvbi4gIFdlIGNhbm5vdCBzaW1wbHkgc2NhbiB0aGUgbGlzdCBvZgorCQkg KiBwYXJlbnRzIGZyb20gdGhlIHBhcnNlciBub2RlLCBiZWNhdXNlIHRoYXQgbWF5IGxhY2sgdGhl IGFjdHVhbAorCQkgKiBxdWFsaWZpZWQgbmFtZXMgb2YgdGhlIHBhcmVudCByZWxhdGlvbnMuICBS YXRoZXIgdGhhbiB0cnlpbmcgdG8KKwkJICogcmUtcmVzb2x2ZSB0aGVtIGZyb20gdGhlIGluZm9y bWF0aW9uIGluIHRoZSBwYXJzZSBub2RlLCBpdCBzZWVtcworCQkgKiBtb3JlIGFjY3VyYXRlIGFu ZCBjb252ZW5pZW50IHRvIGdyYWIgaXQgZnJvbSBwZ19pbmhlcml0cy4KKwkJICovCisJCWlmIChu b2RlLT5pbmhSZWxhdGlvbnMgIT0gTklMKQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5n KCZmbXRTdHIsICIgJXtpbmhlcml0c31zIik7CisJCQlpbnNlcnRfanNvbmJfa2V5KHN0YXRlLCAi aW5oZXJpdHMiKTsKKworCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNU LCBOVUxMKTsKKworCQkJZm10X3RvX2pzb25iX2VsZW1lbnQoc3RhdGUsICJJTkhFUklUUyAoJXtw YXJlbnRzOiwgfUQpIik7CisJCQlpbmhyZWxhdGlvbnMgPSBkZXBhcnNlX0luaFJlbHNfVG9Kc29u YihvYmplY3RJZCk7CisKKwkJCW5ld19qc29uYkFycmF5X2Zvcl9xdWFsbmFtZV9pZChzdGF0ZSwg InBhcmVudHMiLCBpbmhyZWxhdGlvbnMpOworCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJf RU5EX09CSkVDVCwgTlVMTCk7CisJCX0KKwl9CisKKwkvKiBGT1IgVkFMVUVTIGNsYXVzZSAqLwor CWlmIChub2RlLT5wYXJ0Ym91bmQpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRT dHIsICIgJXtwYXJ0aXRpb25fYm91bmR9cyIpOworCisJCS8qCisJCSAqIEdldCBwZ19jbGFzcy5y ZWxwYXJ0Ym91bmQuIFdlIGNhbm5vdCB1c2UgcGFydGJvdW5kIGluIHRoZSBwYXJzZXRyZWUKKwkJ ICogZGlyZWN0bHkgYXMgaXQncyB0aGUgb3JpZ2luYWwgcGFydGJvdW5kIGV4cHJlc3Npb24gd2hp Y2ggaGF2ZW4ndAorCQkgKiBiZWVuIHRyYW5zZm9ybWVkLgorCQkgKi8KKwkJbmV3X2pzb25iX1ZB KHN0YXRlLCBOVUxMLCBOVUxMLCBmYWxzZSwgMSwKKwkJCQkJICJwYXJ0aXRpb25fYm91bmQiLCBq YnZTdHJpbmcsCisJCQkJCSBSZWxhdGlvbkdldFBhcnRpdGlvbkJvdW5kKG9iamVjdElkKSk7CisJ fQorCisJLyogUEFSVElUSU9OIEJZIGNsYXVzZSAqLworCWlmIChyZWxhdGlvbi0+cmRfcmVsLT5y ZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJeworCQlhcHBlbmRTdHJpbmdJ bmZvU3RyaW5nKCZmbXRTdHIsICIgJXtwYXJ0aXRpb25fYnl9cyIpOworCQluZXdfanNvbmJfVkEo c3RhdGUsICJwYXJ0aXRpb25fYnkiLAorCQkJCQkgIlBBUlRJVElPTiBCWSAle2RlZmluaXRpb259 cyIsIHRydWUsIDEsCisJCQkJCSAiZGVmaW5pdGlvbiIsIGpidlN0cmluZywKKwkJCQkJIHBnX2dl dF9wYXJ0a2V5ZGVmX3N0cmluZyhvYmplY3RJZCkpOworCX0KKworCS8qIFVTSU5HIGNsYXVzZSAq LworCWlmIChub2RlLT5hY2Nlc3NNZXRob2QpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5n KCZmbXRTdHIsICIgJXthY2Nlc3NfbWV0aG9kfXMiKTsKKwkJbmV3X2pzb25iX1ZBKHN0YXRlLCAi YWNjZXNzX21ldGhvZCIsICJVU0lORyAle2FjY2Vzc19tZXRob2R9SSIsCisJCQkJCSB0cnVlLCAx LAorCQkJCQkgImFjY2Vzc19tZXRob2QiLCBqYnZTdHJpbmcsIG5vZGUtPmFjY2Vzc01ldGhvZCk7 CisJfQorCisJLyogV0lUSCBjbGF1c2UgKi8KKwlpZiAobm9kZS0+b3B0aW9ucykKKwl7CisJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIiAle3dpdGhfY2xhdXNlfXMiKTsKKwkJZGVw YXJzZV93aXRoT2JqX1RvSnNvbmIoc3RhdGUsICJ3aXRoX2NsYXVzZSIsCisJCQkJCQkJCSJXSVRI ICgle3dpdGg6LCB9cykiLCBub2RlKTsKKwl9CisKKwkvKiBUQUJMRVNQQUNFICovCisJaWYgKG5v ZGUtPnRhYmxlc3BhY2VuYW1lKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3Ry LCAiICV7dGFibGVzcGFjZX1zIik7CisJCW5ld19qc29uYl9WQShzdGF0ZSwgInRhYmxlc3BhY2Ui LAorCQkJCQkgIlRBQkxFU1BBQ0UgJXt0YWJsZXNwYWNlfUkiLCB0cnVlLCAxLAorCQkJCQkgInRh Ymxlc3BhY2UiLCBqYnZTdHJpbmcsIG5vZGUtPnRhYmxlc3BhY2VuYW1lKTsKKwl9CisKKwlyZWxh dGlvbl9jbG9zZShyZWxhdGlvbiwgQWNjZXNzU2hhcmVMb2NrKTsKKworCS8qIFdlIGhhdmUgZnVs bCBmbXQgYnkgbm93LCBzbyBhZGQganNvbmIgZWxlbWVudCBmb3IgdGhhdCAqLworCWZtdF90b19q c29uYl9lbGVtZW50KHN0YXRlLCBmbXRTdHIuZGF0YSk7CisKKwlwZnJlZShmbXRTdHIuZGF0YSk7 CisKKwkvKiBNYXJrIHRoZSBlbmQgb2YgUk9PVCBvYmplY3QgKi8KKwl2YWx1ZSA9IHB1c2hKc29u YlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCisJcmV0dXJuIEpzb25iVmFs dWVUb0pzb25iKHZhbHVlKTsKK30KKworLyoKKyAqIERlcGFyc2UgYSBEcm9wU3RtdCAoRFJPUCBU QUJMRSkuCisgKgorICogR2l2ZW4gYW4gb2JqZWN0IGlkZW50aXR5IGFuZCB0aGUgcGFyc2UgdHJl ZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybgorICoganNvbmIgc3RyaW5nIHJlcHJlc2VudGluZyB0 aGUgZHJvcCBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBEUk9QICV7b2JqdHlw ZX1zICV7Y29uY3VycmVudGx5fXMgJXtpZl9leGlzdHN9cyAle29iamlkZW50aXR5fXMgJXtjYXNj YWRlfXMKKyAqLworY2hhciAqCitkZXBhcnNlX2Ryb3BfdGFibGUoY29uc3QgY2hhciAqb2JqaWRl bnRpdHksIGNvbnN0IGNoYXIgKm9iamVjdHR5cGUsCisJCQkJICAgTm9kZSAqcGFyc2V0cmVlKQor eworCURyb3BTdG10ICAgKm5vZGUgPSAoRHJvcFN0bXQgKikgcGFyc2V0cmVlOworCVN0cmluZ0lu Zm9EYXRhIGZtdFN0cjsKKwlKc29uYlZhbHVlICpqc29uYnZhbDsKKwlKc29uYgkgICAqanNvbmI7 CisJU3RyaW5nSW5mb0RhdGEgc3RyOworCUpzb25iUGFyc2VTdGF0ZSAqc3RhdGUgPSBOVUxMOwor CisJaW5pdFN0cmluZ0luZm8oJnN0cik7CisJaW5pdFN0cmluZ0luZm8oJmZtdFN0cik7CisKKwkv KiBtYXJrIHRoZSBiZWdpbiBvZiBST09UIG9iamVjdCBhbmQgc3RhcnQgYWRkaW5nIGVsZW1lbnRz IHRvIGl0LiAqLworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVM TCk7CisKKwkvKiBTdGFydCBjb25zdHJ1Y3RpbmcgZm10IHN0cmluZyAqLworCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoJmZtdFN0ciwgIkRST1AgJXtvYmp0eXBlfXMiKTsKKworCisJLyogT0JKVFlQ RSAqLworCW5ld19qc29uYl9WQShzdGF0ZSwgTlVMTCwgTlVMTCwgZmFsc2UsIDEsCisJCQkJICJv Ymp0eXBlIiwgamJ2U3RyaW5nLCBvYmplY3R0eXBlKTsKKworCS8qIENPTkNVUlJFTlRMWSAqLwor CWlmIChub2RlLT5jb25jdXJyZW50KQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10 U3RyLCAiICV7Y29uY3VycmVudGx5fXMiKTsKKwkJbmV3X2pzb25iX1ZBKHN0YXRlLCBOVUxMLCBO VUxMLAorCQkJCQkgZmFsc2UsIDEsICJjb25jdXJyZW50bHkiLCBqYnZTdHJpbmcsICJDT05DVVJS RU5UTFkiKTsKKwl9CisKKwkvKiBJRiBFWElTVFMgKi8KKwlpZiAobm9kZS0+bWlzc2luZ19vaykK Kwl7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIiAle2lmX2V4aXN0c31zIik7 CisJCW5ld19qc29uYl9WQShzdGF0ZSwgTlVMTCwgTlVMTCwKKwkJCQkJIGZhbHNlLCAxLCAiaWZf ZXhpc3RzIiwgamJ2U3RyaW5nLCAiSUYgRVhJU1RTIik7CisJfQorCisJLyogSURFTlRJVFkgKi8K KwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgJXtvYmppZGVudGl0eX1zIik7CisJ bmV3X2pzb25iX1ZBKHN0YXRlLCBOVUxMLCBOVUxMLAorCQkJCSBmYWxzZSwgMSwgIm9iamlkZW50 aXR5IiwgamJ2U3RyaW5nLCBvYmppZGVudGl0eSk7CisKKwkvKiBDQVNDQURFICovCisJaWYgKG5v ZGUtPmJlaGF2aW9yID09IERST1BfQ0FTQ0FERSkKKwl7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoJmZtdFN0ciwgIiAle2Nhc2NhZGV9cyIpOworCQluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEws IE5VTEwsCisJCQkJCSBmYWxzZSwgMSwgImNhc2NhZGUiLCBqYnZTdHJpbmcsICJDQVNDQURFIik7 CisJfQorCisJLyogV2UgaGF2ZSBmdWxsIGZtdCBieSBub3csIHNvIGFkZCBqc29uYiBlbGVtZW50 IGZvciB0aGF0ICovCisJZm10X3RvX2pzb25iX2VsZW1lbnQoc3RhdGUsIGZtdFN0ci5kYXRhKTsK KwlwZnJlZShmbXRTdHIuZGF0YSk7CisKKwlqc29uYnZhbCA9IHB1c2hKc29uYlZhbHVlKCZzdGF0 ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCisJanNvbmIgPSBKc29uYlZhbHVlVG9Kc29uYihq c29uYnZhbCk7CisJcmV0dXJuIEpzb25iVG9DU3RyaW5nKCZzdHIsICZqc29uYi0+cm9vdCwgSlNP TkJfRVNUSU1BVEVEX0xFTik7Cit9CisKKy8qCisgKiBEZXBhcnNlIGFsbCB0aGUgY29sbGVjdGVk IHN1YmNvbW1hbmRzIGFuZCByZXR1cm4ganNvbmIgc3RyaW5nIHJlcHJlc2VudGluZworICogdGhl IGFsdGVyIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIEFMVEVSICV7b2JqdHlw ZX1zICV7b25seX1zICV7aWRlbnRpdHl9RCAle3N1YmNtZHM6LCB9cworICovCitzdGF0aWMgSnNv bmIgKgorZGVwYXJzZV9BbHRlclRhYmxlU3RtdChDb2xsZWN0ZWRDb21tYW5kICpjbWQpCit7CisJ TGlzdAkgICAqZHBjb250ZXh0OworCVJlbGF0aW9uCXJlbDsKKwlMaXN0Q2VsbCAgICpjZWxsOwor CWNvbnN0IGNoYXIgKnJlbHR5cGU7CisJT2lkCQkJcmVsSWQgPSBjbWQtPmQuYWx0ZXJUYWJsZS5v YmplY3RJZDsKKwlBbHRlclRhYmxlU3RtdCAqc3RtdCA9IE5VTEw7CisJU3RyaW5nSW5mb0RhdGEg Zm10U3RyOworCUpzb25iUGFyc2VTdGF0ZSAqc3RhdGUgPSBOVUxMOworCWJvb2wJCXN1YkNtZEFy cmF5ID0gZmFsc2U7CisJSnNvbmJWYWx1ZSAqdmFsdWU7CisKKwlBc3NlcnQoY21kLT50eXBlID09 IFNDVF9BbHRlclRhYmxlKTsKKwlzdG10ID0gKEFsdGVyVGFibGVTdG10ICopIGNtZC0+cGFyc2V0 cmVlOworCisJQXNzZXJ0KElzQShzdG10LCBBbHRlclRhYmxlU3RtdCkgfHwgSXNBKHN0bXQsIEFs dGVyVGFibGVNb3ZlQWxsU3RtdCkpOworCisJaW5pdFN0cmluZ0luZm8oJmZtdFN0cik7CisJcHVz aEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKworCS8qCisJICog QUxURVIgVEFCTEUgc3ViY29tbWFuZHMgZ2VuZXJhdGVkIGZvciBUYWJsZUxpa2VDbGF1c2UgaXMg cHJvY2Vzc2VkIGluCisJICogdGhlIHRvcCBsZXZlbCBDUkVBVEUgVEFCTEUgY29tbWFuZDsgcmV0 dXJuIGVtcHR5IGhlcmUuCisJICovCisJaWYgKElzQShzdG10LCBBbHRlclRhYmxlU3RtdCkgJiYg c3RtdC0+dGFibGVfbGlrZSkKKwkJcmV0dXJuIE5VTEw7CisKKwlyZWwgPSByZWxhdGlvbl9vcGVu KHJlbElkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJc3dpdGNoIChyZWwtPnJkX3JlbC0+cmVsa2lu ZCkKKwl7CisJCWNhc2UgUkVMS0lORF9SRUxBVElPTjoKKwkJY2FzZSBSRUxLSU5EX1BBUlRJVElP TkVEX1RBQkxFOgorCQkJcmVsdHlwZSA9ICJUQUJMRSI7CisJCQlicmVhazsKKwkJY2FzZSBSRUxL SU5EX0lOREVYOgorCQljYXNlIFJFTEtJTkRfUEFSVElUSU9ORURfSU5ERVg6CisJCWNhc2UgUkVM S0lORF9WSUVXOgorCQljYXNlIFJFTEtJTkRfQ09NUE9TSVRFX1RZUEU6CisJCWNhc2UgUkVMS0lO RF9GT1JFSUdOX1RBQkxFOgorCQljYXNlIFJFTEtJTkRfTUFUVklFVzoKKwkJCS8qIHVuc3VwcG9y dGVkIHJlbGtpbmQgKi8KKwkJCXRhYmxlX2Nsb3NlKHJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJ CXJldHVybiBOVUxMOworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBy ZWxraW5kICVkIiwgcmVsLT5yZF9yZWwtPnJlbGtpbmQpOworCX0KKworCisJZHBjb250ZXh0ID0g ZGVwYXJzZV9jb250ZXh0X2ZvcihSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCByZWxJZCk7 CisKKwkvKiBTdGFydCBjb25zdHJ1Y3RpbmcgZm10IHN0cmluZyAqLworCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoJmZtdFN0ciwgIkFMVEVSICV7b2JqdHlwZX1zICV7b25seX1zICV7aWRlbnRpdHl9 RCAiKTsKKworCW5ld19qc29uYl9WQShzdGF0ZSwgTlVMTCwgTlVMTCwgZmFsc2UsIDIsCisJCQkJ ICJvYmp0eXBlIiwgamJ2U3RyaW5nLCByZWx0eXBlLAorCQkJCSAib25seSIsIGpidlN0cmluZywg c3RtdC0+cmVsYXRpb24tPmluaCA/ICIiIDogIk9OTFkiKTsKKworCWluc2VydF9pZGVudGl0eV9v YmplY3Qoc3RhdGUsIHJlbC0+cmRfcmVsLT5yZWxuYW1lc3BhY2UsCisJCQkJCQkgICBSZWxhdGlv bkdldFJlbGF0aW9uTmFtZShyZWwpKTsKKworCWZvcmVhY2goY2VsbCwgY21kLT5kLmFsdGVyVGFi bGUuc3ViY21kcykKKwl7CisJCUNvbGxlY3RlZEFUU3ViY21kICpzdWIgPSAoQ29sbGVjdGVkQVRT dWJjbWQgKikgbGZpcnN0KGNlbGwpOworCQlBbHRlclRhYmxlQ21kICpzdWJjbWQgPSAoQWx0ZXJU YWJsZUNtZCAqKSBzdWItPnBhcnNldHJlZTsKKworCQlBc3NlcnQoSXNBKHN1YmNtZCwgQWx0ZXJU YWJsZUNtZCkpOworCisJCS8qCisJCSAqIFNraXAgZGVwYXJzZSBvZiB0aGUgc3ViY29tbWFuZCBp ZiB0aGUgb2JqZWN0SWQgZG9lc24ndCBtYXRjaCB0aGUKKwkJICogdGFyZ2V0IHJlbGF0aW9uIElE LiBJdCBjYW4gaGFwcGVuIGZvciBpbmhlcml0ZWQgdGFibGVzIHdoZW4KKwkJICogc3ViY29tbWFu ZHMgZm9yIGluaGVyaXRlZCB0YWJsZXMgYW5kIHRoZSBwYXJlbnQgdGFibGUgYXJlIGJvdGgKKwkJ ICogY29sbGVjdGVkIGluIHRoZSBBTFRFUiBUQUJMRSBjb21tYW5kIGZvciB0aGUgcGFyZW50IHRh YmxlLgorCQkgKi8KKwkJaWYgKHN1YmNtZC0+c3VidHlwZSAhPSBBVF9BdHRhY2hQYXJ0aXRpb24g JiYKKwkJCXN1Yi0+YWRkcmVzcy5vYmplY3RJZCAhPSByZWxJZCAmJgorCQkJaGFzX3N1cGVyY2xh c3Moc3ViLT5hZGRyZXNzLm9iamVjdElkKSkKKwkJCWNvbnRpbnVlOworCisJCS8qIE1hcmsgdGhl IGJlZ2luIG9mIHN1YmNtZHMgYXJyYXkgKi8KKwkJaWYgKCFzdWJDbWRBcnJheSkKKwkJeworCQkJ aW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgInN1YmNtZHMiKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoJmZtdFN0ciwgIiV7c3ViY21kczosIH1zIik7CisJCQlwdXNoSnNvbmJWYWx1ZSgmc3Rh dGUsIFdKQl9CRUdJTl9BUlJBWSwgTlVMTCk7CisJCQlzdWJDbWRBcnJheSA9IHRydWU7CisJCX0K KworCQlzd2l0Y2ggKHN1YmNtZC0+c3VidHlwZSkKKwkJeworCQkJY2FzZSBBVF9BZGRDb2x1bW46 CisJCQkJLyogWFhYIG5lZWQgdG8gc2V0IHRoZSAicmVjdXJzZSIgYml0IHNvbWV3aGVyZT8gKi8K KwkJCQlBc3NlcnQoSXNBKHN1YmNtZC0+ZGVmLCBDb2x1bW5EZWYpKTsKKworCQkJCXB1c2hKc29u YlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCQkJbmV3X2pzb25iX1ZB KHN0YXRlLCBOVUxMLAorCQkJCQkJCSAiQUREICV7b2JqdHlwZX1zICV7aWZfbm90X2V4aXN0c31z ICV7ZGVmaW5pdGlvbn1zIiwKKwkJCQkJCQkgZmFsc2UsIDMsCisJCQkJCQkJICJvYmp0eXBlIiwg amJ2U3RyaW5nLCAiQ09MVU1OIiwKKwkJCQkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJhZGQgY29s dW1uIiwKKwkJCQkJCQkgImlmX25vdF9leGlzdHMiLCBqYnZTdHJpbmcsCisJCQkJCQkJIHN1YmNt ZC0+bWlzc2luZ19vayA/ICJJRiBOT1QgRVhJU1RTIiA6ICIiKTsKKworCQkJCS8qIFB1c2ggZGVm aW5pdGlvbiBrZXktdmFsdWUgcGFpciAqLworCQkJCWluc2VydF9qc29uYl9rZXkoc3RhdGUsICJk ZWZpbml0aW9uIik7CisJCQkJZGVwYXJzZV9Db2x1bW5EZWZfdG9Kc29uYihzdGF0ZSwgcmVsLCBk cGNvbnRleHQsCisJCQkJCQkJCQkJICBmYWxzZSwgKENvbHVtbkRlZiAqKSBzdWJjbWQtPmRlZiwK KwkJCQkJCQkJCQkgIHRydWUpOworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9P QkpFQ1QsIE5VTEwpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0FkZEluZGV4Q29uc3RyYWlu dDoKKwkJCQl7CisJCQkJCUluZGV4U3RtdCAgKmlzdG10OworCQkJCQlSZWxhdGlvbglpZHg7CisJ CQkJCU9pZAkJCWNvbk9pZCA9IHN1Yi0+YWRkcmVzcy5vYmplY3RJZDsKKworCQkJCQlBc3NlcnQo SXNBKHN1YmNtZC0+ZGVmLCBJbmRleFN0bXQpKTsKKwkJCQkJaXN0bXQgPSAoSW5kZXhTdG10ICop IHN1YmNtZC0+ZGVmOworCisJCQkJCUFzc2VydChpc3RtdC0+aXNjb25zdHJhaW50ICYmIGlzdG10 LT51bmlxdWUpOworCisJCQkJCWlkeCA9IHJlbGF0aW9uX29wZW4oaXN0bXQtPmluZGV4T2lkLCBB Y2Nlc3NTaGFyZUxvY2spOworCisJCQkJCS8qCisJCQkJCSAqIFZlcmJvc2Ugc3ludGF4CisJCQkJ CSAqCisJCQkJCSAqIEFERCBDT05TVFJBSU5UICV7bmFtZX1JICV7Y29uc3RyYWludF90eXBlfXMg VVNJTkcgSU5ERVgKKwkJCQkJICogJWluZGV4X25hbWV9SSAle2RlZmVycmFibGV9cyAle2luaXRf ZGVmZXJyZWR9cworCQkJCQkgKi8KKwkJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCBOVUxMLAorCQkJ CQkJCQkgIkFERCBDT05TVFJBSU5UICV7bmFtZX1JICV7Y29uc3RyYWludF90eXBlfXMiCisJCQkJ CQkJCSAiIFVTSU5HIElOREVYICV7aW5kZXhfbmFtZX1JICV7ZGVmZXJyYWJsZX1zIgorCQkJCQkJ CQkgIiAle2luaXRfZGVmZXJyZWR9cyIsIHRydWUsIDYsCisJCQkJCQkJCSAidHlwZSIsIGpidlN0 cmluZywgImFkZCBjb25zdHJhaW50IHVzaW5nIGluZGV4IiwKKwkJCQkJCQkJICJuYW1lIiwgamJ2 U3RyaW5nLCBnZXRfY29uc3RyYWludF9uYW1lKGNvbk9pZCksCisJCQkJCQkJCSAiY29uc3RyYWlu dF90eXBlIiwgamJ2U3RyaW5nLAorCQkJCQkJCQkgaXN0bXQtPnByaW1hcnkgPyAiUFJJTUFSWSBL RVkiIDogIlVOSVFVRSIsCisJCQkJCQkJCSAiaW5kZXhfbmFtZSIsIGpidlN0cmluZywKKwkJCQkJ CQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGlkeCksCisJCQkJCQkJCSAiZGVmZXJyYWJsZSIs IGpidlN0cmluZywKKwkJCQkJCQkJIGlzdG10LT5kZWZlcnJhYmxlID8gIkRFRkVSUkFCTEUiIDoK KwkJCQkJCQkJICJOT1QgREVGRVJSQUJMRSIsCisJCQkJCQkJCSAiaW5pdF9kZWZlcnJlZCIsIGpi dlN0cmluZywKKwkJCQkJCQkJIGlzdG10LT5pbml0ZGVmZXJyZWQgPyAiSU5JVElBTExZIERFRkVS UkVEIiA6CisJCQkJCQkJCSAiSU5JVElBTExZIElNTUVESUFURSIpOworCQkJCQlyZWxhdGlvbl9j bG9zZShpZHgsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCWNhc2Ug QVRfUmVBZGRJbmRleDoKKwkJCWNhc2UgQVRfUmVBZGRDb25zdHJhaW50OgorCQkJY2FzZSBBVF9S ZUFkZERvbWFpbkNvbnN0cmFpbnQ6CisJCQljYXNlIEFUX1JlQWRkQ29tbWVudDoKKwkJCWNhc2Ug QVRfUmVwbGFjZVJlbE9wdGlvbnM6CisJCQljYXNlIEFUX0NoZWNrTm90TnVsbDoKKwkJCWNhc2Ug QVRfUmVBZGRTdGF0aXN0aWNzOgorCQkJCS8qIFN1YnR5cGVzIHVzZWQgZm9yIGludGVybmFsIG9w ZXJhdGlvbnM7IG5vdGhpbmcgdG8gZG8gaGVyZSAqLworCQkJCWJyZWFrOworCisJCQljYXNlIEFU X0NvbHVtbkRlZmF1bHQ6CisJCQkJaWYgKHN1YmNtZC0+ZGVmID09IE5VTEwpCisJCQkJCW5ld19q c29uYl9WQShzdGF0ZSwgTlVMTCwKKwkJCQkJCQkJICJBTFRFUiBDT0xVTU4gJXtjb2x1bW59SSBE Uk9QIERFRkFVTFQiLCB0cnVlLCAyLAorCQkJCQkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJkcm9w IGRlZmF1bHQiLAorCQkJCQkJCQkgImNvbHVtbiIsIGpidlN0cmluZywgc3ViY21kLT5uYW1lKTsK KwkJCQllbHNlCisJCQkJeworCQkJCQlMaXN0CSAgICpkcGNvbnRleHRfcmVsOworCQkJCQlIZWFw VHVwbGUJYXR0cnR1cDsKKwkJCQkJQXR0ck51bWJlcglhdHRubzsKKworCQkJCQlkcGNvbnRleHRf cmVsID0gZGVwYXJzZV9jb250ZXh0X2ZvcigKKwkJCQkJCQkJCQkJCQkJUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUocmVsKSwKKwkJCQkJCQkJCQkJCQkJUmVsYXRpb25HZXRSZWxpZChyZWwpKTsKKwkJ CQkJYXR0cnR1cCA9IFNlYXJjaFN5c0NhY2hlQXR0TmFtZShSZWxhdGlvbkdldFJlbGlkKHJlbCks CisJCQkJCQkJCQkJCQkJc3ViY21kLT5uYW1lKTsKKwkJCQkJYXR0bm8gPSAoKEZvcm1fcGdfYXR0 cmlidXRlKSBHRVRTVFJVQ1QoYXR0cnR1cCkpLT5hdHRudW07CisKKwkJCQkJbmV3X2pzb25iX1ZB KHN0YXRlLCBOVUxMLAorCQkJCQkJCQkgIkFMVEVSIENPTFVNTiAle2NvbHVtbn1JIFNFVCBERUZB VUxUIgorCQkJCQkJCQkgIiAle2RlZmluaXRpb259cyIsIHRydWUsIDMsCisJCQkJCQkJCSAidHlw ZSIsIGpidlN0cmluZywgInNldCBkZWZhdWx0IiwKKwkJCQkJCQkJICJjb2x1bW4iLCBqYnZTdHJp bmcsIHN1YmNtZC0+bmFtZSwKKwkJCQkJCQkJICJkZWZpbml0aW9uIiwgamJ2U3RyaW5nLAorCQkJ CQkJCQkgUmVsYXRpb25HZXRDb2x1bW5EZWZhdWx0KHJlbCwgYXR0bm8sCisJCQkJCQkJCQkJCQkJ CSAgZHBjb250ZXh0X3JlbCkpOworCQkJCQlSZWxlYXNlU3lzQ2FjaGUoYXR0cnR1cCk7CisJCQkJ fQorCisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRHJvcE5vdE51bGw6CisJCQkJbmV3X2pzb25i X1ZBKHN0YXRlLCBOVUxMLAorCQkJCQkJCSAiQUxURVIgQ09MVU1OICV7Y29sdW1ufUkgRFJPUCBO T1QgTlVMTCIsIHRydWUsIDIsCisJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAiZHJvcCBub3Qg bnVsbCIsCisJCQkJCQkJICJjb2x1bW4iLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJCQkJ YnJlYWs7CisKKwkJCWNhc2UgQVRfRm9yY2VSb3dTZWN1cml0eToKKwkJCQluZXdfanNvbmJfVkEo c3RhdGUsIE5VTEwsCisJCQkJCQkJICJGT1JDRSBST1cgTEVWRUwgU0VDVVJJVFkiLCB0cnVlLCAw KTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9Ob0ZvcmNlUm93U2VjdXJpdHk6CisJCQkJbmV3 X2pzb25iX1ZBKHN0YXRlLCBOVUxMLAorCQkJCQkJCSAiTk8gRk9SQ0UgUk9XIExFVkVMIFNFQ1VS SVRZIiwgdHJ1ZSwgMCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfU2V0Tm90TnVsbDoKKwkJ CQluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEwsCisJCQkJCQkJICJBTFRFUiBDT0xVTU4gJXtjb2x1 bW59SSBTRVQgTk9UIE5VTEwiLCB0cnVlLCAyLAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywg InNldCBub3QgbnVsbCIsCisJCQkJCQkJICJjb2x1bW4iLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFt ZSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRHJvcEV4cHJlc3Npb246CisJCQkJbmV3X2pz b25iX1ZBKHN0YXRlLCBOVUxMLAorCQkJCQkJCSAiQUxURVIgQ09MVU1OICV7Y29sdW1ufUkgRFJP UCBFWFBSRVNTSU9OIgorCQkJCQkJCSAiICV7aWZfZXhpc3RzfXMiLCB0cnVlLCAzLAorCQkJCQkJ CSAidHlwZSIsIGpidlN0cmluZywgImRyb3AgZXhwcmVzc2lvbiIsCisJCQkJCQkJICJjb2x1bW4i LCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSwKKwkJCQkJCQkgImlmX2V4aXN0cyIsIGpidlN0cmlu ZywKKwkJCQkJCQkgc3ViY21kLT5taXNzaW5nX29rID8gIklGIEVYSVNUUyIgOiAiIik7CisJCQkJ YnJlYWs7CisKKwkJCWNhc2UgQVRfU2V0U3RhdGlzdGljczoKKwkJCQlBc3NlcnQoSXNBKHN1YmNt ZC0+ZGVmLCBJbnRlZ2VyKSk7CisJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCBOVUxMLAorCQkJCQkJ CSAiQUxURVIgQ09MVU1OICV7Y29sdW1ufUkgU0VUIFNUQVRJU1RJQ1MiCisJCQkJCQkJICIgJXtz dGF0aXN0aWNzfW4iLCB0cnVlLCAzLAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywgInNldCBz dGF0aXN0aWNzIiwKKwkJCQkJCQkgImNvbHVtbiIsIGpidlN0cmluZywgc3ViY21kLT5uYW1lLAor CQkJCQkJCSAic3RhdGlzdGljcyIsIGpidk51bWVyaWMsCisJCQkJCQkJIGludFZhbCgoSW50ZWdl ciAqKSBzdWJjbWQtPmRlZikpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX1NldE9wdGlvbnM6 CisJCQljYXNlIEFUX1Jlc2V0T3B0aW9uczoKKwkJCQlkZXBhcnNlX0NvbHVtblNldE9wdGlvbnNf VG9Kc29uYihzdGF0ZSwgc3ViY21kKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9TZXRTdG9y YWdlOgorCQkJCUFzc2VydChJc0Eoc3ViY21kLT5kZWYsIFN0cmluZykpOworCQkJCW5ld19qc29u Yl9WQShzdGF0ZSwgTlVMTCwKKwkJCQkJCQkgIkFMVEVSIENPTFVNTiAle2NvbHVtbn1JIFNFVCBT VE9SQUdFIgorCQkJCQkJCSAiICV7c3RvcmFnZX1zIiwgdHJ1ZSwgMywKKwkJCQkJCQkgInR5cGUi LCBqYnZTdHJpbmcsICJzZXQgc3RvcmFnZSIsCisJCQkJCQkJICJjb2x1bW4iLCBqYnZTdHJpbmcs IHN1YmNtZC0+bmFtZSwKKwkJCQkJCQkgInN0b3JhZ2UiLCBqYnZTdHJpbmcsCisJCQkJCQkJIHN0 clZhbCgoU3RyaW5nICopIHN1YmNtZC0+ZGVmKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRf U2V0Q29tcHJlc3Npb246CisJCQkJQXNzZXJ0KElzQShzdWJjbWQtPmRlZiwgU3RyaW5nKSk7CisJ CQkJbmV3X2pzb25iX1ZBKHN0YXRlLCBOVUxMLAorCQkJCQkJCSAiQUxURVIgQ09MVU1OICV7Y29s dW1ufUkgU0VUIENPTVBSRVNTSU9OIgorCQkJCQkJCSAiICV7Y29tcHJlc3Npb25fbWV0aG9kfXMi LCB0cnVlLCAzLAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywgInNldCBjb21wcmVzc2lvbiIs CisJCQkJCQkJICJjb2x1bW4iLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSwKKwkJCQkJCQkgImNv bXByZXNzaW9uX21ldGhvZCIsIGpidlN0cmluZywKKwkJCQkJCQkgc3RyVmFsKChTdHJpbmcgKikg c3ViY21kLT5kZWYpKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9Ecm9wQ29sdW1uOgorCQkJ CXsKKwkJCQkJU3RyaW5nSW5mb0RhdGEgZm10U3ViOworCisJCQkJCWluaXRTdHJpbmdJbmZvKCZm bXRTdWIpOworCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdWIsICJEUk9QICV7b2Jq dHlwZX1zIgorCQkJCQkJCQkJCSAgICIgJXtpZl9leGlzdHN9cyAle2NvbHVtbn1JIik7CisKKwkJ CQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJCQkJ bmV3X2pzb25iX1ZBKHN0YXRlLCBOVUxMLAorCQkJCQkJCQkgTlVMTCwgZmFsc2UsIDQsCisJCQkJ CQkJCSAib2JqdHlwZSIsIGpidlN0cmluZywgIkNPTFVNTiIsCisJCQkJCQkJCSAidHlwZSIsIGpi dlN0cmluZywgImRyb3AgY29sdW1uIiwKKwkJCQkJCQkJICJpZl9leGlzdHMiLCBqYnZTdHJpbmcs CisJCQkJCQkJCSBzdWJjbWQtPm1pc3Npbmdfb2sgPyAiSUYgRVhJU1RTIiA6ICIiLAorCQkJCQkJ CQkgImNvbHVtbiIsIGpidlN0cmluZywgc3ViY21kLT5uYW1lKTsKKworCQkJCQlpZiAoc3ViY21k LT5iZWhhdmlvciA9PSBEUk9QX0NBU0NBREUpCisJCQkJCXsKKwkJCQkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoJmZtdFN1YiwgIiAle2Nhc2NhZGV9cyIpOworCQkJCQkJbmV3X2pzb25iX1ZBKHN0 YXRlLCBOVUxMLCBOVUxMLCBmYWxzZSwgMSwKKwkJCQkJCQkJCSAiY2FzY2FkZSIsIGpidlN0cmlu ZywgIkNBU0NBREUiKTsKKwkJCQkJfQorCisJCQkJCS8qIFdlIGhhdmUgZnVsbCBmbXQgYnkgbm93 LCBzbyBhZGQganNvbmIgZWxlbWVudCBmb3IgdGhhdCAqLworCQkJCQlmbXRfdG9fanNvbmJfZWxl bWVudChzdGF0ZSwgZm10U3ViLmRhdGEpOworCisJCQkJCXBmcmVlKGZtdFN1Yi5kYXRhKTsKKwor CQkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKworCQkJ CQlicmVhazsKKwkJCQl9CisJCQljYXNlIEFUX0FkZEluZGV4OgorCQkJCXsKKwkJCQkJT2lkCQkJ aWR4T2lkID0gc3ViLT5hZGRyZXNzLm9iamVjdElkOworCQkJCQlJbmRleFN0bXQgICppc3RtdCBQ R19VU0VEX0ZPUl9BU1NFUlRTX09OTFkgPQorCQkJCQkJKEluZGV4U3RtdCAqKSBzdWJjbWQtPmRl ZjsKKwkJCQkJUmVsYXRpb24JaWR4OworCQkJCQljb25zdCBjaGFyICppZHhuYW1lOworCQkJCQlP aWQJCQljb25zdHJPaWQ7CisKKwkJCQkJQXNzZXJ0KElzQShzdWJjbWQtPmRlZiwgSW5kZXhTdG10 KSk7CisJCQkJCUFzc2VydChpc3RtdC0+aXNjb25zdHJhaW50KTsKKworCQkJCQlpZHggPSByZWxh dGlvbl9vcGVuKGlkeE9pZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCQkJaWR4bmFtZSA9IFJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKGlkeCk7CisKKwkJCQkJY29uc3RyT2lkID0gZ2V0X3JlbGF0aW9u X2NvbnN0cmFpbnRfb2lkKAorCQkJCQkJCQkJCQkJCQkJY21kLT5kLmFsdGVyVGFibGUub2JqZWN0 SWQsCisJCQkJCQkJCQkJCQkJCQlpZHhuYW1lLCBmYWxzZSk7CisKKwkJCQkJbmV3X2pzb25iX1ZB KHN0YXRlLCBOVUxMLAorCQkJCQkJCQkgIkFERCBDT05TVFJBSU5UICV7bmFtZX1JICV7ZGVmaW5p dGlvbn1zIiwKKwkJCQkJCQkJIHRydWUsIDMsCisJCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywg ImFkZCBjb25zdHJhaW50IiwKKwkJCQkJCQkJICJuYW1lIiwgamJ2U3RyaW5nLCBpZHhuYW1lLAor CQkJCQkJCQkgImRlZmluaXRpb24iLCBqYnZTdHJpbmcsCisJCQkJCQkJCSBwZ19nZXRfY29uc3Ry YWludGRlZl9zdHJpbmcoY29uc3RyT2lkKSk7CisKKwkJCQkJcmVsYXRpb25fY2xvc2UoaWR4LCBB Y2Nlc3NTaGFyZUxvY2spOworCQkJCX0KKwkJCQlicmVhazsKKwkJCWNhc2UgQVRfQWRkQ29uc3Ry YWludDoKKwkJCQl7CisJCQkJCS8qIFhYWCBuZWVkIHRvIHNldCB0aGUgInJlY3Vyc2UiIGJpdCBz b21ld2hlcmU/ICovCisJCQkJCU9pZAkJCWNvbnN0ck9pZCA9IHN1Yi0+YWRkcmVzcy5vYmplY3RJ ZDsKKworCQkJCQkvKiBTa2lwIGFkZGluZyBjb25zdHJhaW50IGZvciBpbmhlcml0cyB0YWJsZSBz dWIgY29tbWFuZCAqLworCQkJCQlpZiAoIU9pZElzVmFsaWQoY29uc3RyT2lkKSkKKwkJCQkJCWNv bnRpbnVlOworCisJCQkJCUFzc2VydChJc0Eoc3ViY21kLT5kZWYsIENvbnN0cmFpbnQpKTsKKwor CQkJCQluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEwsCisJCQkJCQkJCSAiQUREIENPTlNUUkFJTlQg JXtuYW1lfUkgJXtkZWZpbml0aW9ufXMiLAorCQkJCQkJCQkgdHJ1ZSwgMywKKwkJCQkJCQkJICJ0 eXBlIiwgamJ2U3RyaW5nLCAiYWRkIGNvbnN0cmFpbnQiLAorCQkJCQkJCQkgIm5hbWUiLCBqYnZT dHJpbmcsIGdldF9jb25zdHJhaW50X25hbWUoY29uc3RyT2lkKSwKKwkJCQkJCQkJICJkZWZpbml0 aW9uIiwgamJ2U3RyaW5nLAorCQkJCQkJCQkgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfc3RyaW5nKGNv bnN0ck9pZCkpOworCQkJCX0KKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9BbHRlckNvbnN0cmFp bnQ6CisJCQkJeworCQkJCQlPaWQJCQljb25PaWQgPSBzdWItPmFkZHJlc3Mub2JqZWN0SWQ7CisJ CQkJCUNvbnN0cmFpbnQgKmMgPSAoQ29uc3RyYWludCAqKSBzdWJjbWQtPmRlZjsKKworCQkJCQkv KiBJZiBubyBjb25zdHJhaW50IHdhcyBhbHRlcmVkLCBzaWxlbnRseSBza2lwIGl0ICovCisJCQkJ CWlmICghT2lkSXNWYWxpZChjb25PaWQpKQorCQkJCQkJYnJlYWs7CisKKwkJCQkJQXNzZXJ0KElz QShjLCBDb25zdHJhaW50KSk7CisKKwkJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCBOVUxMLAorCQkJ CQkJCQkgIkFMVEVSIENPTlNUUkFJTlQgJXtuYW1lfUkgJXtkZWZlcnJhYmxlfXMiCisJCQkJCQkJ CSAiICV7aW5pdF9kZWZlcnJlZH1zIiwgdHJ1ZSwgNCwKKwkJCQkJCQkJICJ0eXBlIiwgamJ2U3Ry aW5nLCAiYWx0ZXIgY29uc3RyYWludCIsCisJCQkJCQkJCSAibmFtZSIsIGpidlN0cmluZywgZ2V0 X2NvbnN0cmFpbnRfbmFtZShjb25PaWQpLAorCQkJCQkJCQkgImRlZmVycmFibGUiLCBqYnZTdHJp bmcsCisJCQkJCQkJCSBjLT5kZWZlcnJhYmxlID8gIkRFRkVSUkFCTEUiIDogIk5PVCBERUZFUlJB QkxFIiwKKwkJCQkJCQkJICJpbml0X2RlZmVycmVkIiwgamJ2U3RyaW5nLAorCQkJCQkJCQkgYy0+ aW5pdGRlZmVycmVkID8gIklOSVRJQUxMWSBERUZFUlJFRCIgOgorCQkJCQkJCQkgIklOSVRJQUxM WSBJTU1FRElBVEUiKTsKKwkJCQl9CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfVmFsaWRhdGVD b25zdHJhaW50OgorCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgTlVMTCwKKwkJCQkJCQkgIlZBTElE QVRFIENPTlNUUkFJTlQgJXtjb25zdHJhaW50fUkiLCB0cnVlLCAyLAorCQkJCQkJCSAidHlwZSIs IGpidlN0cmluZywgInZhbGlkYXRlIGNvbnN0cmFpbnQiLAorCQkJCQkJCSAiY29uc3RyYWludCIs IGpidlN0cmluZywgc3ViY21kLT5uYW1lKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9Ecm9w Q29uc3RyYWludDoKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEwsCisJCQkJCQkJICJEUk9Q IENPTlNUUkFJTlQgJXtpZl9leGlzdHN9cyAle2NvbnN0cmFpbnR9SSIKKwkJCQkJCQkgIiAle2Nh c2NhZGV9cyIsIHRydWUsIDQsCisJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAiZHJvcCBjb25z dHJhaW50IiwKKwkJCQkJCQkgImlmX2V4aXN0cyIsIGpidlN0cmluZywKKwkJCQkJCQkgc3ViY21k LT5taXNzaW5nX29rID8gIklGIEVYSVNUUyIgOiAiIiwKKwkJCQkJCQkgImNvbnN0cmFpbnQiLCBq YnZTdHJpbmcsIHN1YmNtZC0+bmFtZSwKKwkJCQkJCQkgImNhc2NhZGUiLCBqYnZTdHJpbmcsCisJ CQkJCQkJIHN1YmNtZC0+YmVoYXZpb3IgPT0gRFJPUF9DQVNDQURFID8gIkNBU0NBREUiIDogIiIp OworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0FsdGVyQ29sdW1uVHlwZToKKwkJCQl7CisJCQkJ CVR1cGxlRGVzYwl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWwpOworCQkJCQlGb3JtX3Bn X2F0dHJpYnV0ZSBhdHQ7CisJCQkJCUNvbHVtbkRlZiAgKmRlZjsKKwkJCQkJU3RyaW5nSW5mb0Rh dGEgZm10U3ViOworCisJCQkJCWluaXRTdHJpbmdJbmZvKCZmbXRTdWIpOworCisJCQkJCWF0dCA9 ICYodHVwZGVzYy0+YXR0cnNbc3ViLT5hZGRyZXNzLm9iamVjdFN1YklkIC0gMV0pOworCQkJCQlk ZWYgPSAoQ29sdW1uRGVmICopIHN1YmNtZC0+ZGVmOworCQkJCQlBc3NlcnQoSXNBKGRlZiwgQ29s dW1uRGVmKSk7CisKKwkJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNU LCBOVUxMKTsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3ViLCAiQUxURVIgQ09M VU1OICV7Y29sdW1ufUkiCisJCQkJCQkJCQkJICAgIiBTRVQgREFUQSBUWVBFICV7ZGF0YXR5cGV9 VCIpOworCQkJCQluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEwsCisJCQkJCQkJCSBOVUxMLCBmYWxz ZSwgMiwKKwkJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAiYWx0ZXIgY29sdW1uIHR5cGUiLAor CQkJCQkJCQkgImNvbHVtbiIsIGpidlN0cmluZywgc3ViY21kLT5uYW1lKTsKKworCQkJCQluZXdf anNvbmJfZm9yX3R5cGUoc3RhdGUsICJkYXRhdHlwZSIsCisJCQkJCQkJCQkgICBhdHQtPmF0dHR5 cGlkLCBhdHQtPmF0dHR5cG1vZCk7CisKKwkJCQkJLyogQWRkIGEgQ09MTEFURSBjbGF1c2UsIGlm IG5lZWRlZCAqLworCQkJCQlpZiAoT2lkSXNWYWxpZChhdHQtPmF0dGNvbGxhdGlvbikpCisJCQkJ CXsKKwkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN1YiwgIiAle2NvbGxhdGlvbn1z Iik7CisJCQkJCQlpbnNlcnRfY29sbGF0ZV9vYmplY3Qoc3RhdGUsICJjb2xsYXRpb24iLAorCQkJ CQkJCQkJCQkgICJDT0xMQVRFICV7bmFtZX1EIiwKKwkJCQkJCQkJCQkJICBDb2xsYXRpb25SZWxh dGlvbklkLAorCQkJCQkJCQkJCQkgIGF0dC0+YXR0Y29sbGF0aW9uLCAibmFtZSIpOworCQkJCQl9 CisKKwkJCQkJLyoKKwkJCQkJICogSWYgdGhlcmUncyBhIFVTSU5HIGNsYXVzZSwgdHJhbnNmb3Jt QWx0ZXJUYWJsZVN0bXQgcmFuCisJCQkJCSAqIGl0IHRocm91Z2ggdHJhbnNmb3JtRXhwciBhbmQg c3RvcmVkIHRoZSByZXN1bHRpbmcgbm9kZQorCQkJCQkgKiBpbiBjb29rZWRfZGVmYXVsdCwgd2hp Y2ggd2UgY2FuIHVzZSBoZXJlLgorCQkJCQkgKi8KKwkJCQkJaWYgKGRlZi0+cmF3X2RlZmF1bHQp CisJCQkJCXsKKwkJCQkJCURhdHVtCQlkZXBhcnNlZDsKKwkJCQkJCWNoYXIJICAgKmRlZmV4cHI7 CisJCQkJCQlMaXN0CSAgICpleHBycyA9IE5JTDsKKworCQkJCQkJZXhwcnMgPSBsYXBwZW5kKGV4 cHJzLCBkZWYtPmNvb2tlZF9kZWZhdWx0KTsKKwkJCQkJCWRlZmV4cHIgPSBub2RlVG9TdHJpbmco ZGVmLT5jb29rZWRfZGVmYXVsdCk7CisJCQkJCQlkZXBhcnNlZCA9IERpcmVjdEZ1bmN0aW9uQ2Fs bDIocGdfZ2V0X2V4cHIsCisJCQkJCQkJCQkJCQkJICAgQ1N0cmluZ0dldFRleHREYXR1bShkZWZl eHByKSwKKwkJCQkJCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGlkKHJlbCkpOworCQkJCQkJYXBw ZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3ViLCAiICV7dXNpbmd9cyIpOworCQkJCQkJbmV3X2pz b25iX1ZBKHN0YXRlLCAidXNpbmciLCAiVVNJTkcgJXtleHByZXNzaW9ufXMiLAorCQkJCQkJCQkJ IHRydWUsIDEsCisJCQkJCQkJCQkgImV4cHJlc3Npb24iLCBqYnZTdHJpbmcsCisJCQkJCQkJCQkg VGV4dERhdHVtR2V0Q1N0cmluZyhkZXBhcnNlZCkpOworCQkJCQl9CisKKwkJCQkJLyogV2UgaGF2 ZSBmdWxsIGZtdCBieSBub3csIHNvIGFkZCBqc29uYiBlbGVtZW50IGZvciB0aGF0ICovCisJCQkJ CWZtdF90b19qc29uYl9lbGVtZW50KHN0YXRlLCBmbXRTdWIuZGF0YSk7CisKKwkJCQkJcGZyZWUo Zm10U3ViLmRhdGEpOworCQkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNU LCBOVUxMKTsKKwkJCQl9CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfQ2hhbmdlT3duZXI6CisJ CQkJbmV3X2pzb25iX1ZBKHN0YXRlLCBOVUxMLAorCQkJCQkJCSAiT1dORVIgVE8gJXtvd25lcn1J IiwgdHJ1ZSwgMiwKKwkJCQkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJjaGFuZ2Ugb3duZXIiLAor CQkJCQkJCSAib3duZXIiLCBqYnZTdHJpbmcsCisJCQkJCQkJIGdldF9yb2xlc3BlY19uYW1lKHN1 YmNtZC0+bmV3b3duZXIpKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9DbHVzdGVyT246CisJ CQkJbmV3X2pzb25iX1ZBKHN0YXRlLCBOVUxMLAorCQkJCQkJCSAiQ0xVU1RFUiBPTiAle2luZGV4 fUkiLCB0cnVlLCAyLAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywgImNsdXN0ZXIgb24iLAor CQkJCQkJCSAiaW5kZXgiLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJCQkJYnJlYWs7CisK KworCQkJY2FzZSBBVF9Ecm9wQ2x1c3RlcjoKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEws CisJCQkJCQkJICJTRVQgV0lUSE9VVCBDTFVTVEVSIiwgdHJ1ZSwgMSwKKwkJCQkJCQkgInR5cGUi LCBqYnZTdHJpbmcsICJzZXQgd2l0aG91dCBjbHVzdGVyIik7CisJCQkJYnJlYWs7CisKKwkJCWNh c2UgQVRfU2V0TG9nZ2VkOgorCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgTlVMTCwKKwkJCQkJCQkg IlNFVCBMT0dHRUQiLCB0cnVlLCAxLAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywgInNldCBs b2dnZWQiKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9TZXRVbkxvZ2dlZDoKKwkJCQluZXdf anNvbmJfVkEoc3RhdGUsIE5VTEwsCisJCQkJCQkJICJTRVQgVU5MT0dHRUQiLCB0cnVlLCAxLAor CQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywgInNldCB1bmxvZ2dlZCIpOworCQkJCWJyZWFrOwor CisJCQljYXNlIEFUX0Ryb3BPaWRzOgorCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgTlVMTCwKKwkJ CQkJCQkgIlNFVCBXSVRIT1VUIE9JRFMiLCB0cnVlLCAxLAorCQkJCQkJCSAidHlwZSIsIGpidlN0 cmluZywgInNldCB3aXRob3V0IG9pZHMiKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9TZXRB Y2Nlc3NNZXRob2Q6CisJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCBOVUxMLAorCQkJCQkJCSAiU0VU IEFDQ0VTUyBNRVRIT0QgJXthY2Nlc3NfbWV0aG9kfUkiLCB0cnVlLCAyLAorCQkJCQkJCSAidHlw ZSIsIGpidlN0cmluZywgInNldCBhY2Nlc3MgbWV0aG9kIiwKKwkJCQkJCQkgImFjY2Vzc19tZXRo b2QiLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRf U2V0VGFibGVTcGFjZToKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEwsCisJCQkJCQkJICJT RVQgVEFCTEVTUEFDRSAle3RhYmxlc3BhY2V9SSIsIHRydWUsIDIsCisJCQkJCQkJICJ0eXBlIiwg amJ2U3RyaW5nLCAic2V0IHRhYmxlc3BhY2UiLAorCQkJCQkJCSAidGFibGVzcGFjZSIsIGpidlN0 cmluZywgc3ViY21kLT5uYW1lKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9TZXRSZWxPcHRp b25zOgorCQkJY2FzZSBBVF9SZXNldFJlbE9wdGlvbnM6CisJCQkJZGVwYXJzZV9SZWxTZXRPcHRp b25zX3RvSnNvbmIoc3RhdGUsIHN1YmNtZCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRW5h YmxlVHJpZzoKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEwsCisJCQkJCQkJICJFTkFCTEUg VFJJR0dFUiAle3RyaWdnZXJ9SSIsIHRydWUsIDIsCisJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5n LCAiZW5hYmxlIHRyaWdnZXIiLAorCQkJCQkJCSAidHJpZ2dlciIsIGpidlN0cmluZywgc3ViY21k LT5uYW1lKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9FbmFibGVBbHdheXNUcmlnOgorCQkJ CW5ld19qc29uYl9WQShzdGF0ZSwgTlVMTCwKKwkJCQkJCQkgIkVOQUJMRSBBTFdBWVMgVFJJR0dF UiAle3RyaWdnZXJ9SSIsIHRydWUsIDIsCisJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAiZW5h YmxlIGFsd2F5cyB0cmlnZ2VyIiwKKwkJCQkJCQkgInRyaWdnZXIiLCBqYnZTdHJpbmcsIHN1YmNt ZC0+bmFtZSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRW5hYmxlUmVwbGljYVRyaWc6CisJ CQkJbmV3X2pzb25iX1ZBKHN0YXRlLCBOVUxMLAorCQkJCQkJCSAiRU5BQkxFIFJFUExJQ0EgVFJJ R0dFUiAle3RyaWdnZXJ9SSIsIHRydWUsIDIsCisJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAi ZW5hYmxlIHJlcGxpY2EgdHJpZ2dlciIsCisJCQkJCQkJICJ0cmlnZ2VyIiwgamJ2U3RyaW5nLCBz dWJjbWQtPm5hbWUpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0Rpc2FibGVUcmlnOgorCQkJ CW5ld19qc29uYl9WQShzdGF0ZSwgTlVMTCwKKwkJCQkJCQkgIkRJU0FCTEUgVFJJR0dFUiAle3Ry aWdnZXJ9SSIsIHRydWUsIDIsCisJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAiZGlzYWJsZSB0 cmlnZ2VyIiwKKwkJCQkJCQkgInRyaWdnZXIiLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJ CQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRW5hYmxlVHJpZ0FsbDoKKwkJCQluZXdfanNvbmJfVkEo c3RhdGUsIE5VTEwsCisJCQkJCQkJICJFTkFCTEUgVFJJR0dFUiBBTEwiLCB0cnVlLCAxLAorCQkJ CQkJCSAidHlwZSIsIGpidlN0cmluZywgImVuYWJsZSB0cmlnZ2VyIGFsbCIpOworCQkJCWJyZWFr OworCisJCQljYXNlIEFUX0Rpc2FibGVUcmlnQWxsOgorCQkJCW5ld19qc29uYl9WQShzdGF0ZSwg TlVMTCwKKwkJCQkJCQkgIkRJU0FCTEUgVFJJR0dFUiBBTEwiLCB0cnVlLCAxLAorCQkJCQkJCSAi dHlwZSIsIGpidlN0cmluZywgImRpc2FibGUgdHJpZ2dlciBhbGwiKTsKKwkJCQlicmVhazsKKwor CQkJY2FzZSBBVF9FbmFibGVUcmlnVXNlcjoKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEws CisJCQkJCQkJICJFTkFCTEUgVFJJR0dFUiBVU0VSIiwgdHJ1ZSwgMSwKKwkJCQkJCQkgInR5cGUi LCBqYnZTdHJpbmcsICJlbmFibGUgdHJpZ2dlciB1c2VyIik7CisJCQkJYnJlYWs7CisKKwkJCWNh c2UgQVRfRGlzYWJsZVRyaWdVc2VyOgorCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgTlVMTCwKKwkJ CQkJCQkgIkRJU0FCTEUgVFJJR0dFUiBVU0VSIiwgdHJ1ZSwgMSwKKwkJCQkJCQkgInR5cGUiLCBq YnZTdHJpbmcsICJkaXNhYmxlIHRyaWdnZXIgdXNlciIpOworCQkJCWJyZWFrOworCisJCQljYXNl IEFUX0VuYWJsZVJ1bGU6CisJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCBOVUxMLAorCQkJCQkJCSAi RU5BQkxFIFJVTEUgJXtydWxlfUkiLCB0cnVlLCAyLAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmlu ZywgImVuYWJsZSBydWxlIiwKKwkJCQkJCQkgInJ1bGUiLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFt ZSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRW5hYmxlQWx3YXlzUnVsZToKKwkJCQluZXdf anNvbmJfVkEoc3RhdGUsIE5VTEwsCisJCQkJCQkJICJFTkFCTEUgQUxXQVlTIFJVTEUgJXtydWxl fUkiLCB0cnVlLCAyLAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywgImVuYWJsZSBhbHdheXMg cnVsZSIsCisJCQkJCQkJICJydWxlIiwgamJ2U3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCQkJCWJy ZWFrOworCisJCQljYXNlIEFUX0VuYWJsZVJlcGxpY2FSdWxlOgorCQkJCW5ld19qc29uYl9WQShz dGF0ZSwgTlVMTCwKKwkJCQkJCQkgIkVOQUJMRSBSRVBMSUNBIFJVTEUgJXtydWxlfUkiLCB0cnVl LCAyLAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywgImVuYWJsZSByZXBsaWNhIHJ1bGUiLAor CQkJCQkJCSAicnVsZSIsIGpidlN0cmluZywgc3ViY21kLT5uYW1lKTsKKwkJCQlicmVhazsKKwor CQkJY2FzZSBBVF9EaXNhYmxlUnVsZToKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEwsCisJ CQkJCQkJICJESVNBQkxFIFJVTEUgJXtydWxlfUkiLCB0cnVlLCAyLAorCQkJCQkJCSAidHlwZSIs IGpidlN0cmluZywgImRpc2FibGUgcnVsZSIsCisJCQkJCQkJICJydWxlIiwgamJ2U3RyaW5nLCBz dWJjbWQtPm5hbWUpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0FkZEluaGVyaXQ6CisJCQkJ cHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJCQluZXdf anNvbmJfVkEoc3RhdGUsIE5VTEwsCisJCQkJCQkJICJJTkhFUklUICV7cGFyZW50fUQiLCBmYWxz ZSwgMSwKKwkJCQkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJpbmhlcml0Iik7CisJCQkJbmV3X2pz b25iX2Zvcl9xdWFsbmFtZV9pZChzdGF0ZSwgUmVsYXRpb25SZWxhdGlvbklkLAorCQkJCQkJCQkJ CSAgc3ViLT5hZGRyZXNzLm9iamVjdElkLCAicGFyZW50IiwgdHJ1ZSk7CisJCQkJcHVzaEpzb25i VmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJYnJlYWs7CisKKwkJCWNh c2UgQVRfRHJvcEluaGVyaXQ6CisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5f T0JKRUNULCBOVUxMKTsKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEwsCisJCQkJCQkJICJO TyBJTkhFUklUICV7cGFyZW50fUQiLCBmYWxzZSwgMSwKKwkJCQkJCQkgInR5cGUiLCBqYnZTdHJp bmcsICJkcm9wIGluaGVyaXQiKTsKKwkJCQluZXdfanNvbmJfZm9yX3F1YWxuYW1lX2lkKHN0YXRl LCBSZWxhdGlvblJlbGF0aW9uSWQsCisJCQkJCQkJCQkJICBzdWItPmFkZHJlc3Mub2JqZWN0SWQs ICJwYXJlbnQiLCB0cnVlKTsKKwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JK RUNULCBOVUxMKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9BZGRPZjoKKwkJCQlwdXNoSnNv bmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCQkJCW5ld19qc29uYl9W QShzdGF0ZSwgTlVMTCwKKwkJCQkJCQkgIk9GICV7dHlwZV9vZn1UIiwgZmFsc2UsIDEsCisJCQkJ CQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAiYWRkIG9mIik7CisJCQkJbmV3X2pzb25iX2Zvcl90eXBl KHN0YXRlLCAidHlwZV9vZiIsIHN1Yi0+YWRkcmVzcy5vYmplY3RJZCwgLTEpOworCQkJCXB1c2hK c29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCQkJCWJyZWFrOworCisJ CQljYXNlIEFUX0Ryb3BPZjoKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEwsCisJCQkJCQkJ ICJOT1QgT0YiLCB0cnVlLCAxLAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywgIm5vdCBvZiIp OworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX1JlcGxpY2FJZGVudGl0eToKKwkJCQlwdXNoSnNv bmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCQkJCW5ld19qc29uYl9W QShzdGF0ZSwgTlVMTCwKKwkJCQkJCQkgIlJFUExJQ0EgSURFTlRJVFkgJXtpZGVudH1zIiwgZmFs c2UsIDEsCisJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAicmVwbGljYSBpZGVudGl0eSIpOwor CQkJCXN3aXRjaCAoKChSZXBsaWNhSWRlbnRpdHlTdG10ICopIHN1YmNtZC0+ZGVmKS0+aWRlbnRp dHlfdHlwZSkKKwkJCQl7CisJCQkJCWNhc2UgUkVQTElDQV9JREVOVElUWV9ERUZBVUxUOgorCQkJ CQkJbmV3X2pzb25iX1ZBKHN0YXRlLCBOVUxMLCBOVUxMLAorCQkJCQkJCQkJIGZhbHNlLCAxLCAi aWRlbnQiLCBqYnZTdHJpbmcsICJERUZBVUxUIik7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBS RVBMSUNBX0lERU5USVRZX0ZVTEw6CisJCQkJCQluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEwsIE5V TEwsCisJCQkJCQkJCQkgZmFsc2UsIDEsICJpZGVudCIsIGpidlN0cmluZywgIkZVTEwiKTsKKwkJ CQkJCWJyZWFrOworCQkJCQljYXNlIFJFUExJQ0FfSURFTlRJVFlfTk9USElORzoKKwkJCQkJCW5l d19qc29uYl9WQShzdGF0ZSwgTlVMTCwgTlVMTCwKKwkJCQkJCQkJCSBmYWxzZSwgMSwgImlkZW50 IiwgamJ2U3RyaW5nLCAiTk9USElORyIpOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgUkVQTElD QV9JREVOVElUWV9JTkRFWDoKKwkJCQkJCWluc2VydF9qc29uYl9rZXkoc3RhdGUsICJpZGVudCIp OworCQkJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCBOVUxMLCAiVVNJTkcgSU5ERVggJXtpbmRleH1J IiwKKwkJCQkJCQkJCSB0cnVlLCAxLAorCQkJCQkJCQkJICJpbmRleCIsIGpidlN0cmluZywKKwkJ CQkJCQkJCSAoKFJlcGxpY2FJZGVudGl0eVN0bXQgKikgc3ViY21kLT5kZWYpLT5uYW1lKTsKKwkJ CQkJCWJyZWFrOworCQkJCX0KKwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JK RUNULCBOVUxMKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9FbmFibGVSb3dTZWN1cml0eToK KwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEwsCisJCQkJCQkJICJFTkFCTEUgUk9XIExFVkVM IFNFQ1VSSVRZIiwgdHJ1ZSwgMSwKKwkJCQkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJlbmFibGUg cm93IHNlY3VyaXR5Iik7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRGlzYWJsZVJvd1NlY3Vy aXR5OgorCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgTlVMTCwKKwkJCQkJCQkgIkRJU0FCTEUgUk9X IExFVkVMIFNFQ1VSSVRZIiwgdHJ1ZSwgMSwKKwkJCQkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJk aXNhYmxlIHJvdyBzZWN1cml0eSIpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0F0dGFjaFBh cnRpdGlvbjoKKwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5V TEwpOworCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgTlVMTCwKKwkJCQkJCQkgIkFUVEFDSCBQQVJU SVRJT04gJXtwYXJ0aXRpb25faWRlbnRpdHl9RCIKKwkJCQkJCQkgIiAle3BhcnRpdGlvbl9ib3Vu ZH1zIiwgZmFsc2UsIDEsCisJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAiYXR0YWNoIHBhcnRp dGlvbiIpOworCQkJCW5ld19qc29uYl9mb3JfcXVhbG5hbWVfaWQoc3RhdGUsIFJlbGF0aW9uUmVs YXRpb25JZCwKKwkJCQkJCQkJCQkgIHN1Yi0+YWRkcmVzcy5vYmplY3RJZCwKKwkJCQkJCQkJCQkg ICJwYXJ0aXRpb25faWRlbnRpdHkiLCB0cnVlKTsKKworCQkJCWlmIChyZWwtPnJkX3JlbC0+cmVs a2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCQkJCQluZXdfanNvbmJfVkEoc3Rh dGUsIE5VTEwsIE5VTEwsIGZhbHNlLCAxLAorCQkJCQkJCQkgInBhcnRpdGlvbl9ib3VuZCIsIGpi dlN0cmluZywKKwkJCQkJCQkJIFJlbGF0aW9uR2V0UGFydGl0aW9uQm91bmQoc3ViLT5hZGRyZXNz Lm9iamVjdElkKSk7CisJCQkJZWxzZQorCQkJCQluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEwsIE5V TEwsIGZhbHNlLCAxLAorCQkJCQkJCQkgInBhcnRpdGlvbl9ib3VuZCIsIGpidlN0cmluZywgIiIp OworCisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisK KwkJCQlicmVhazsKKwkJCWNhc2UgQVRfRGV0YWNoUGFydGl0aW9uOgorCQkJCXsKKwkJCQkJUGFy dGl0aW9uQ21kICpjbWQ7CisKKwkJCQkJQXNzZXJ0KElzQShzdWJjbWQtPmRlZiwgUGFydGl0aW9u Q21kKSk7CisJCQkJCWNtZCA9IChQYXJ0aXRpb25DbWQgKikgc3ViY21kLT5kZWY7CisKKwkJCQkJ cHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJCQkJbmV3 X2pzb25iX1ZBKHN0YXRlLCBOVUxMLCAiREVUQUNIIFBBUlRJVElPTiIKKwkJCQkJCQkJICIgJXtw YXJ0aXRpb25faWRlbnRpdHl9RCAle2NvbmN1cnJlbnR9cyIsCisJCQkJCQkJCSBmYWxzZSwgMiwK KwkJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAiZGV0YWNoIHBhcnRpdGlvbiIsCisJCQkJCQkJ CSAiY29uY3VycmVudCIsIGpidlN0cmluZywKKwkJCQkJCQkJIGNtZC0+Y29uY3VycmVudCA/ICJD T05DVVJSRU5UTFkiIDogIiIpOworCQkJCQluZXdfanNvbmJfZm9yX3F1YWxuYW1lX2lkKHN0YXRl LCBSZWxhdGlvblJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCSAgc3ViLT5hZGRyZXNzLm9iamVjdElk LAorCQkJCQkJCQkJCQkgICJwYXJ0aXRpb25faWRlbnRpdHkiLCB0cnVlKTsKKwkJCQkJcHVzaEpz b25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJCWJyZWFrOworCQkJ CX0KKwkJCWNhc2UgQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU6CisJCQkJcHVzaEpzb25iVmFs dWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJCQluZXdfanNvbmJfVkEoc3Rh dGUsIE5VTEwsICJERVRBQ0ggUEFSVElUSU9OIgorCQkJCQkJCSAiICV7cGFydGl0aW9uX2lkZW50 aXR5fUQgRklOQUxJWkUiLAorCQkJCQkJCSBmYWxzZSwgMSwKKwkJCQkJCQkgInR5cGUiLCBqYnZT dHJpbmcsICJkZXRhY2ggcGFydGl0aW9uIGZpbmFsaXplIik7CisKKwkJCQluZXdfanNvbmJfZm9y X3F1YWxuYW1lX2lkKHN0YXRlLCBSZWxhdGlvblJlbGF0aW9uSWQsCisJCQkJCQkJCQkJICBzdWIt PmFkZHJlc3Mub2JqZWN0SWQsCisJCQkJCQkJCQkJICAicGFydGl0aW9uX2lkZW50aXR5IiwgdHJ1 ZSk7CisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJ CQkJYnJlYWs7CisJCQljYXNlIEFUX0FkZElkZW50aXR5OgorCQkJCXsKKwkJCQkJQXR0ck51bWJl cglhdHRudW07CisJCQkJCU9pZAkJCXNlcV9yZWxpZDsKKwkJCQkJQ29sdW1uRGVmICAqY29sZGVm ID0gKENvbHVtbkRlZiAqKSBzdWJjbWQtPmRlZjsKKwkJCQkJU3RyaW5nSW5mb0RhdGEgZm10U3Vi OworCisJCQkJCWluaXRTdHJpbmdJbmZvKCZmbXRTdWIpOworCisJCQkJCXB1c2hKc29uYlZhbHVl KCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisKKwkJCQkJYXBwZW5kU3RyaW5nSW5m b1N0cmluZygmZm10U3ViLCAiQUxURVIgQ09MVU1OICV7Y29sdW1ufUkiKTsKKwkJCQkJbmV3X2pz b25iX1ZBKHN0YXRlLCBOVUxMLCBOVUxMLCBmYWxzZSwgMiwKKwkJCQkJCQkJICJ0eXBlIiwgamJ2 U3RyaW5nLCAiYWRkIGlkZW50aXR5IiwKKwkJCQkJCQkJICJjb2x1bW4iLCBqYnZTdHJpbmcsIHN1 YmNtZC0+bmFtZSk7CisKKwkJCQkJYXR0bnVtID0gZ2V0X2F0dG51bShSZWxhdGlvbkdldFJlbGlk KHJlbCksIHN1YmNtZC0+bmFtZSk7CisJCQkJCXNlcV9yZWxpZCA9IGdldElkZW50aXR5U2VxdWVu Y2UoUmVsYXRpb25HZXRSZWxpZChyZWwpLAorCQkJCQkJCQkJCQkJCWF0dG51bSwgdHJ1ZSk7CisK KwkJCQkJaWYgKE9pZElzVmFsaWQoc2VxX3JlbGlkKSkKKwkJCQkJeworCQkJCQkJaW5zZXJ0X2pz b25iX2tleShzdGF0ZSwgImRlZmluaXRpb24iKTsKKworCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZygmZm10U3ViLCAiICV7ZGVmaW5pdGlvbn1zIik7CisKKwkJCQkJCS8qIGluc2VydCBkZWZp bml0aW9uJ3MgdmFsdWUgbm93ICovCisJCQkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9C RUdJTl9PQkpFQ1QsIE5VTEwpOworCisJCQkJCQlmbXRfdG9fanNvbmJfZWxlbWVudChzdGF0ZSwg IkFERCAle2lkZW50aXR5X2NvbHVtbn1zIik7CisKKwkJCQkJCS8qIGluc2VydCBpZGVudGl0eV9j b2x1bW4gKi8KKwkJCQkJCWRlcGFyc2VfQ29sdW1uSWRlbnRpdHlfdG9Kc29uYihzdGF0ZSwgImlk ZW50aXR5X2NvbHVtbiIsCisJCQkJCQkJCQkJCQkJICAgc2VxX3JlbGlkLAorCQkJCQkJCQkJCQkJ CSAgIGNvbGRlZi0+aWRlbnRpdHksIGZhbHNlKTsKKworCQkJCQkJLyogbWFyayBkZWZpbml0aW9u J3MgdmFsdWUgZW5kICovCisJCQkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JK RUNULCBOVUxMKTsKKwkJCQkJfQorCisJCQkJCS8qIFdlIGhhdmUgZnVsbCBmbXQgYnkgbm93LCBz byBhZGQganNvbmIgZWxlbWVudCBmb3IgdGhhdCAqLworCQkJCQlmbXRfdG9fanNvbmJfZWxlbWVu dChzdGF0ZSwgZm10U3ViLmRhdGEpOworCisJCQkJCXBmcmVlKGZtdFN1Yi5kYXRhKTsKKworCQkJ CQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwkJCQl9CisJ CQkJYnJlYWs7CisJCQljYXNlIEFUX1NldElkZW50aXR5OgorCQkJCXsKKwkJCQkJRGVmRWxlbSAg ICAqZGVmZWw7CisJCQkJCWNoYXIJCWlkZW50aXR5ID0gMDsKKwkJCQkJQXR0ck51bWJlcglhdHRu dW07CisJCQkJCU9pZAkJCXNlcV9yZWxpZDsKKwkJCQkJU3RyaW5nSW5mb0RhdGEgZm10U3ViOwor CisJCQkJCWluaXRTdHJpbmdJbmZvKCZmbXRTdWIpOworCisJCQkJCXB1c2hKc29uYlZhbHVlKCZz dGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZygmZm10U3ViLCAiQUxURVIgQ09MVU1OICV7Y29sdW1ufUkiKTsKKwkJCQkJbmV3X2pzb25i X1ZBKHN0YXRlLCBOVUxMLCBOVUxMLCBmYWxzZSwgMiwKKwkJCQkJCQkJICJ0eXBlIiwgamJ2U3Ry aW5nLCAic2V0IGlkZW50aXR5IiwKKwkJCQkJCQkJICJjb2x1bW4iLCBqYnZTdHJpbmcsIHN1YmNt ZC0+bmFtZSk7CisKKwkJCQkJaWYgKHN1YmNtZC0+ZGVmKQorCQkJCQl7CisJCQkJCQlMaXN0CSAg ICpkZWYgPSAoTGlzdCAqKSBzdWJjbWQtPmRlZjsKKworCQkJCQkJQXNzZXJ0KElzQShzdWJjbWQt PmRlZiwgTGlzdCkpOworCisJCQkJCQlkZWZlbCA9IGxpbml0aWFsX25vZGUoRGVmRWxlbSwgZGVm KTsKKwkJCQkJCWlkZW50aXR5ID0gZGVmR2V0SW50MzIoZGVmZWwpOworCQkJCQl9CisKKwkJCQkJ YXR0bnVtID0gZ2V0X2F0dG51bShSZWxhdGlvbkdldFJlbGlkKHJlbCksIHN1YmNtZC0+bmFtZSk7 CisJCQkJCXNlcV9yZWxpZCA9IGdldElkZW50aXR5U2VxdWVuY2UoUmVsYXRpb25HZXRSZWxpZChy ZWwpLAorCQkJCQkJCQkJCQkJCWF0dG51bSwgdHJ1ZSk7CisKKwkJCQkJaWYgKE9pZElzVmFsaWQo c2VxX3JlbGlkKSkKKwkJCQkJeworCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3Vi LCAiICV7ZGVmaW5pdGlvbn1zIik7CisJCQkJCQlkZXBhcnNlX0NvbHVtbklkZW50aXR5X3RvSnNv bmIoc3RhdGUsICJkZWZpbml0aW9uIiwKKwkJCQkJCQkJCQkJCQkgICBzZXFfcmVsaWQsIGlkZW50 aXR5LAorCQkJCQkJCQkJCQkJCSAgIHRydWUpOworCQkJCQl9CisKKwkJCQkJLyogV2UgaGF2ZSBm dWxsIGZtdCBieSBub3csIHNvIGFkZCBqc29uYiBlbGVtZW50IGZvciB0aGF0ICovCisJCQkJCWZt dF90b19qc29uYl9lbGVtZW50KHN0YXRlLCBmbXRTdWIuZGF0YSk7CisKKwkJCQkJcGZyZWUoZm10 U3ViLmRhdGEpOworCQkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBO VUxMKTsKKworCQkJCQlicmVhazsKKwkJCQl9CisJCQljYXNlIEFUX0Ryb3BJZGVudGl0eToKKwkJ CQl7CisJCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgTlVMTCwgIkFMVEVSIENPTFVNTiAle2NvbHVt bn1JIERST1AiCisJCQkJCQkJCSAiIElERU5USVRZICV7aWZfZXhpc3RzfXMiLCB0cnVlLCAzLAor CQkJCQkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJkcm9wIGlkZW50aXR5IiwKKwkJCQkJCQkJICJj b2x1bW4iLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSwKKwkJCQkJCQkJICJpZl9leGlzdHMiLCBq YnZTdHJpbmcsIHN1YmNtZC0+bWlzc2luZ19vayA/CisJCQkJCQkJCSAiSUYgRVhJU1RTIiA6ICIi KTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJZGVmYXVsdDoKKwkJCQllbG9nKFdBUk5JTkcsICJ1 bnN1cHBvcnRlZCBhbHRlciB0YWJsZSBzdWJ0eXBlICVkIiwKKwkJCQkJIHN1YmNtZC0+c3VidHlw ZSk7CisJCQkJYnJlYWs7CisJCX0KKwl9CisKKwl0YWJsZV9jbG9zZShyZWwsIEFjY2Vzc1NoYXJl TG9jayk7CisKKwkvKiBpZiBzdWJjbWRzIGFycmF5IGlzIG5vdCBldmVuIGNyZWF0ZWQgb3IgaGFz IDAgZWxlbWVudHMsIHJldHVybiBOVUxMICovCisJaWYgKCFzdWJDbWRBcnJheSB8fAorCQkoKHN0 YXRlLT5jb250VmFsLnR5cGUgPT0gamJ2QXJyYXkpICYmCisJCSAoc3RhdGUtPmNvbnRWYWwudmFs LmFycmF5Lm5FbGVtcyA9PSAwKSkpCisJeworCQlwZnJlZShmbXRTdHIuZGF0YSk7CisJCXJldHVy biBOVUxMOworCX0KKworCS8qIE1hcmsgdGhlIGVuZCBvZiBzdWJjbWRzIGFycmF5ICovCisJcHVz aEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX0FSUkFZLCBOVUxMKTsKKworCS8qIFdlIGhhdmUg ZnVsbCBmbXQgYnkgbm93LCBzbyBhZGQganNvbmIgZWxlbWVudCBmb3IgdGhhdCAqLworCWZtdF90 b19qc29uYl9lbGVtZW50KHN0YXRlLCBmbXRTdHIuZGF0YSk7CisKKwlwZnJlZShmbXRTdHIuZGF0 YSk7CisKKwkvKiBNYXJrIHRoZSBlbmQgb2YgUk9PVCBvYmplY3QgKi8KKwl2YWx1ZSA9IHB1c2hK c29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCisJcmV0dXJuIEpzb25i VmFsdWVUb0pzb25iKHZhbHVlKTsKK30KKworLyoKKyAqIERlcGFyc2UgYSBDcmVhdGVTZXFTdG10 LgorICoKKyAqIEdpdmVuIGEgc2VxdWVuY2UgT0lEIGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNy ZWF0ZWQgaXQsIHJldHVybiBKc29uYgorICogcmVwcmVzZW50aW5nIHRoZSBjcmVhdGlvbiBjb21t YW5kLgorICoKKyAqIE5vdGU6IFdlIG5lZWQgdG8gZGVwYXJzZSB0aGUgQ1JFQVRFIFNFUVVFTkNF IGNvbW1hbmQgZm9yIHRoZSBUQUJMRQorICogY29tbWFuZHMuIEZvciBleGFtcGxlLCBXaGVuIGNy ZWF0aW5nIGEgdGFibGUsIGlmIHdlIHNwZWNpZnkgYSBjb2x1bW4gYXMgYQorICogc2VxdWVuY2Ug dHlwZSwgdGhlbiB3ZSB3aWxsIGNyZWF0ZSBhIHNlcXVlbmNlIGZvciB0aGF0IGNvbHVtbiBhbmQg c2V0IHRoYXQKKyAqIHNlcXVlbmNlIE9XTkVEIEJZIHRoZSB0YWJsZS4KKyAqCisgKiBWZXJib3Nl IHN5bnRheAorICogQ1JFQVRFICV7cGVyc2lzdGVuY2V9cyBTRVFVRU5DRSAle2lkZW50aXR5fUQg JXtkZWZpbml0aW9uOiB9cworICovCitzdGF0aWMgSnNvbmIgKgorZGVwYXJzZV9DcmVhdGVTZXFT dG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCVJlbGF0aW9uCXJlbGF0aW9u OworCUZvcm1fcGdfc2VxdWVuY2Ugc2VxZm9ybTsKKwlTZXF1ZW5jZV92YWx1ZXMgKnNlcXZhbHVl czsKKwlDcmVhdGVTZXFTdG10ICpjcmVhdGVTZXFTdG10ID0gKENyZWF0ZVNlcVN0bXQgKikgcGFy c2V0cmVlOworCUpzb25iUGFyc2VTdGF0ZSAqc3RhdGUgPSBOVUxMOworCUpzb25iVmFsdWUgKnZh bHVlOworCisJLyoKKwkgKiBPbmx5IHN1cHBvcnQgc2VxdWVuY2UgZm9yIElERU5USVRZIENPTFVN TiBvdXRwdXQgc2VwYXJhdGVseSAodmlhIENSRUFURQorCSAqIFRBQkxFIG9yIEFMVEVSIFRBQkxF KS4gT3RoZXJ3aXNlLCByZXR1cm4gZW1wdHkgaGVyZS4KKwkgKi8KKwlpZiAoY3JlYXRlU2VxU3Rt dC0+Zm9yX2lkZW50aXR5KQorCQlyZXR1cm4gTlVMTDsKKworCXJlbGF0aW9uID0gcmVsYXRpb25f b3BlbihvYmplY3RJZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCS8qIG1hcmsgdGhlIHN0YXJ0IG9m IFJPT1Qgb2JqZWN0ICovCisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNU LCBOVUxMKTsKKworCW5ld19qc29uYl9WQShzdGF0ZSwgTlVMTCwgIkNSRUFURSAle3BlcnNpc3Rl bmNlfXMgU0VRVUVOQ0UiCisJCQkJICIgJXtpZl9ub3RfZXhpc3RzfXMgJXtpZGVudGl0eX1EICV7 ZGVmaW5pdGlvbjogfXMiLAorCQkJCSBmYWxzZSwgMiwKKwkJCQkgInBlcnNpc3RlbmNlIiwgamJ2 U3RyaW5nLAorCQkJCSBnZXRfcGVyc2lzdGVuY2Vfc3RyKHJlbGF0aW9uLT5yZF9yZWwtPnJlbHBl cnNpc3RlbmNlKSwKKwkJCQkgImlmX25vdF9leGlzdHMiLCBqYnZTdHJpbmcsCisJCQkJIGNyZWF0 ZVNlcVN0bXQtPmlmX25vdF9leGlzdHMgPyAiSUYgTk9UIEVYSVNUUyIgOiAiIik7CisKKwlpbnNl cnRfaWRlbnRpdHlfb2JqZWN0KHN0YXRlLCByZWxhdGlvbi0+cmRfcmVsLT5yZWxuYW1lc3BhY2Us CisJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpOworCXJlbGF0aW9u X2Nsb3NlKHJlbGF0aW9uLCBBY2Nlc3NTaGFyZUxvY2spOworCisJc2VxdmFsdWVzID0gZ2V0X3Nl cXVlbmNlX3ZhbHVlcyhvYmplY3RJZCk7CisJc2VxZm9ybSA9IHNlcXZhbHVlcy0+c2VxZm9ybTsK KworCS8qIHNlcXVlbmNlIGRlZmluaXRpb24gYXJyYXkgb2JqZWN0IGNyZWF0aW9uLCBwdXNoIHRo ZSBrZXkgZmlyc3QgKi8KKwlpbnNlcnRfanNvbmJfa2V5KHN0YXRlLCAiZGVmaW5pdGlvbiIpOwor CisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fQVJSQVksIE5VTEwpOworCisJLyog RGVmaW5pdGlvbiBlbGVtZW50cyAqLworCWRlcGFyc2VfU2VxX0NhY2hlX3RvSnNvbmIoc3RhdGUs IHNlcWZvcm0sIGZhbHNlKTsKKwlkZXBhcnNlX1NlcV9DeWNsZV90b0pzb25iKHN0YXRlLCBzZXFm b3JtLCBmYWxzZSk7CisJZGVwYXJzZV9TZXFfSW5jcmVtZW50QnlfdG9Kc29uYihzdGF0ZSwgc2Vx Zm9ybSwgZmFsc2UpOworCWRlcGFyc2VfU2VxX01pbnZhbHVlX3RvSnNvbmIoc3RhdGUsIHNlcWZv cm0sIGZhbHNlKTsKKwlkZXBhcnNlX1NlcV9NYXh2YWx1ZV90b0pzb25iKHN0YXRlLCBzZXFmb3Jt LCBmYWxzZSk7CisJZGVwYXJzZV9TZXFfU3RhcnR3aXRoX3RvSnNvbmIoc3RhdGUsIHNlcWZvcm0s IGZhbHNlKTsKKwlkZXBhcnNlX1NlcV9SZXN0YXJ0X3RvSnNvbmIoc3RhdGUsIHNlcXZhbHVlcy0+ bGFzdF92YWx1ZSk7CisJZGVwYXJzZV9TZXFfQXNfdG9Kc29uYihzdGF0ZSwgc2VxZm9ybSk7CisJ LyogV2UgcHVycG9zZWZ1bGx5IGRvIG5vdCBlbWl0IE9XTkVEIEJZIGhlcmUgKi8KKworCS8qIG1h cmsgdGhlIGVuZCBvZiBzZXF1ZW5jZSBkZWZpbml0aW9uIGFycmF5ICovCisJcHVzaEpzb25iVmFs dWUoJnN0YXRlLCBXSkJfRU5EX0FSUkFZLCBOVUxMKTsKKworCS8qIG1hcmsgdGhlIGVuZCBvZiBS T09UIG9iamVjdCAqLworCXZhbHVlID0gcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09C SkVDVCwgTlVMTCk7CisKKwlyZXR1cm4gSnNvbmJWYWx1ZVRvSnNvbmIodmFsdWUpOworfQorCisv KgorICogRGVwYXJzZSBhbiBBbHRlclNlcVN0bXQuCisgKgorICogR2l2ZW4gYSBzZXF1ZW5jZSBP SUQgYW5kIGEgcGFyc2UgdHJlZSB0aGF0IG1vZGlmaWVkIGl0LCByZXR1cm4gSnNvbmIKKyAqIHJl cHJlc2VudGluZyB0aGUgYWx0ZXIgY29tbWFuZC4KKyAqCisgKiBOb3RlOiBXZSBuZWVkIHRvIGRl cGFyc2UgdGhlIEFMVEVSIFNFUVVFTkNFIGNvbW1hbmQgZm9yIHRoZSBUQUJMRSBjb21tYW5kcy4K KyAqIEZvciBleGFtcGxlLCBXaGVuIGNyZWF0aW5nIGEgdGFibGUsIGlmIHdlIHNwZWNpZnkgYSBj b2x1bW4gYXMgYSBzZXF1ZW5jZQorICogdHlwZSwgdGhlbiB3ZSB3aWxsIGNyZWF0ZSBhIHNlcXVl bmNlIGZvciB0aGF0IGNvbHVtbiBhbmQgc2V0IHRoYXQgc2VxdWVuY2UKKyAqIE9XTkVEIEJZIHRo ZSB0YWJsZS4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQUxURVIgU0VRVUVOQ0UgJXtpZGVu dGl0eX1EICV7ZGVmaW5pdGlvbjogfXMKKyAqLworc3RhdGljIEpzb25iICoKK2RlcGFyc2VfQWx0 ZXJTZXFTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCVJlbGF0aW9uCXJl bGF0aW9uOworCUxpc3RDZWxsICAgKmNlbGw7CisJRm9ybV9wZ19zZXF1ZW5jZSBzZXFmb3JtOwor CVNlcXVlbmNlX3ZhbHVlcyAqc2VxdmFsdWVzOworCUFsdGVyU2VxU3RtdCAqYWx0ZXJTZXFTdG10 ID0gKEFsdGVyU2VxU3RtdCAqKSBwYXJzZXRyZWU7CisJSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSA9 IE5VTEw7CisJSnNvbmJWYWx1ZSAqdmFsdWU7CisKKwkvKgorCSAqIFNlcXVlbmNlIGZvciBJREVO VElUWSBDT0xVTU4gb3V0cHV0IHNlcGFyYXRlbHkgKHZpYSBDUkVBVEUgVEFCTEUgb3IKKwkgKiBB TFRFUiBUQUJMRSk7IHJldHVybiBlbXB0eSBoZXJlLgorCSAqLworCWlmIChhbHRlclNlcVN0bXQt PmZvcl9pZGVudGl0eSkKKwkJcmV0dXJuIE5VTEw7CisKKwlyZWxhdGlvbiA9IHJlbGF0aW9uX29w ZW4ob2JqZWN0SWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkvKiBtYXJrIHRoZSBzdGFydCBvZiBS T09UIG9iamVjdCAqLworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwg TlVMTCk7CisKKwluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEwsICJBTFRFUiBTRVFVRU5DRSAle2lk ZW50aXR5fUQgJXtkZWZpbml0aW9uOiB9cyIsCisJCQkJIGZhbHNlLCAwKTsKKworCWluc2VydF9p ZGVudGl0eV9vYmplY3Qoc3RhdGUsIHJlbGF0aW9uLT5yZF9yZWwtPnJlbG5hbWVzcGFjZSwKKwkJ CQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9uKSk7CisJcmVsYXRpb25fY2xv c2UocmVsYXRpb24sIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlzZXF2YWx1ZXMgPSBnZXRfc2VxdWVu Y2VfdmFsdWVzKG9iamVjdElkKTsKKwlzZXFmb3JtID0gc2VxdmFsdWVzLT5zZXFmb3JtOworCisJ Lyogc2VxdWVuY2UgZGVmaW5pdGlvbiBhcnJheSBvYmplY3QgY3JlYXRpb24sIHB1c2ggdGhlIGtl eSBmaXJzdCAqLworCWluc2VydF9qc29uYl9rZXkoc3RhdGUsICJkZWZpbml0aW9uIik7CisKKwkv KiBtYXJrIHRoZSBzdGFydCBvZiBzZXF1ZW5jZSBkZWZpbml0aW9uIGFycmF5ICovCisJcHVzaEpz b25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fQVJSQVksIE5VTEwpOworCisJZm9yZWFjaChjZWxs LCAoKEFsdGVyU2VxU3RtdCAqKSBwYXJzZXRyZWUpLT5vcHRpb25zKQorCXsKKwkJRGVmRWxlbSAg ICAqZWxlbSA9IChEZWZFbGVtICopIGxmaXJzdChjZWxsKTsKKworCQlpZiAoc3RyY21wKGVsZW0t PmRlZm5hbWUsICJjYWNoZSIpID09IDApCisJCQlkZXBhcnNlX1NlcV9DYWNoZV90b0pzb25iKHN0 YXRlLCBzZXFmb3JtLCBmYWxzZSk7CisJCWVsc2UgaWYgKHN0cmNtcChlbGVtLT5kZWZuYW1lLCAi Y3ljbGUiKSA9PSAwKQorCQkJZGVwYXJzZV9TZXFfQ3ljbGVfdG9Kc29uYihzdGF0ZSwgc2VxZm9y bSwgZmFsc2UpOworCQllbHNlIGlmIChzdHJjbXAoZWxlbS0+ZGVmbmFtZSwgImluY3JlbWVudCIp ID09IDApCisJCQlkZXBhcnNlX1NlcV9JbmNyZW1lbnRCeV90b0pzb25iKHN0YXRlLCBzZXFmb3Jt LCBmYWxzZSk7CisJCWVsc2UgaWYgKHN0cmNtcChlbGVtLT5kZWZuYW1lLCAibWludmFsdWUiKSA9 PSAwKQorCQkJZGVwYXJzZV9TZXFfTWludmFsdWVfdG9Kc29uYihzdGF0ZSwgc2VxZm9ybSwgZmFs c2UpOworCQllbHNlIGlmIChzdHJjbXAoZWxlbS0+ZGVmbmFtZSwgIm1heHZhbHVlIikgPT0gMCkK KwkJCWRlcGFyc2VfU2VxX01heHZhbHVlX3RvSnNvbmIoc3RhdGUsIHNlcWZvcm0sIGZhbHNlKTsK KwkJZWxzZSBpZiAoc3RyY21wKGVsZW0tPmRlZm5hbWUsICJzdGFydCIpID09IDApCisJCQlkZXBh cnNlX1NlcV9TdGFydHdpdGhfdG9Kc29uYihzdGF0ZSwgc2VxZm9ybSwgZmFsc2UpOworCQllbHNl IGlmIChzdHJjbXAoZWxlbS0+ZGVmbmFtZSwgInJlc3RhcnQiKSA9PSAwKQorCQkJZGVwYXJzZV9T ZXFfUmVzdGFydF90b0pzb25iKHN0YXRlLCBzZXF2YWx1ZXMtPmxhc3RfdmFsdWUpOworCQllbHNl IGlmIChzdHJjbXAoZWxlbS0+ZGVmbmFtZSwgIm93bmVkX2J5IikgPT0gMCkKKwkJCWRlcGFyc2Vf U2VxX093bmVkQnlfdG9Kc29uYihzdGF0ZSwgb2JqZWN0SWQsIGZhbHNlKTsKKwkJZWxzZSBpZiAo c3RyY21wKGVsZW0tPmRlZm5hbWUsICJhcyIpID09IDApCisJCQlkZXBhcnNlX1NlcV9Bc190b0pz b25iKHN0YXRlLCBzZXFmb3JtKTsKKwkJZWxzZQorCQkJZWxvZyhFUlJPUiwgImludmFsaWQgc2Vx dWVuY2Ugb3B0aW9uICVzIiwgZWxlbS0+ZGVmbmFtZSk7CisJfQorCisJLyogbWFyayB0aGUgZW5k IG9mIHNlcXVlbmNlIGRlZmluaXRpb24gYXJyYXkgKi8KKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUs IFdKQl9FTkRfQVJSQVksIE5VTEwpOworCisJLyogbWFyayB0aGUgZW5kIG9mIFJPT1Qgb2JqZWN0 ICovCisJdmFsdWUgPSBwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxM KTsKKworCXJldHVybiBKc29uYlZhbHVlVG9Kc29uYih2YWx1ZSk7Cit9CisKKy8qCisgKiBEZXBh cnNlIGEgUmVuYW1lU3RtdC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQUxURVIgJXtvYmp0 eXBlfXMgJXtpZl9leGlzdHN9cyAle2lkZW50aXR5fUQgUkVOQU1FIFRPICV7bmV3bmFtZX1JCisg KiBPUgorICogQUxURVIgVEFCTEUgJXtvbmx5fXMgJXtpZGVudGl0eX1EIFJFTkFNRSBDT05TVFJB SU5UICV7b2xkbmFtZX1JCisgKiBUTyAle25ld25hbWV9SQorICogT1IKKyAqIEFMVEVSICV7b2Jq dHlwZX1zICV7aWZfZXhpc3RzfXMgJXtvbmx5fXMgJXtpZGVudGl0eX1EIFJFTkFNRSBDT0xVTU4K KyAqICV7Y29sbmFtZX1JIFRPICV7bmV3bmFtZX1JICV7Y2FzY2FkZX1zCisgKi8KKworc3RhdGlj IEpzb25iICoKK2RlcGFyc2VfUmVuYW1lU3RtdChPYmplY3RBZGRyZXNzIGFkZHJlc3MsIE5vZGUg KnBhcnNldHJlZSkKK3sKKwlSZW5hbWVTdG10ICpub2RlID0gKFJlbmFtZVN0bXQgKikgcGFyc2V0 cmVlOworCVJlbGF0aW9uCXJlbGF0aW9uOworCU9pZAkJCXNjaGVtYUlkOworCUpzb25iUGFyc2VT dGF0ZSAqc3RhdGUgPSBOVUxMOworCUpzb25iVmFsdWUgKnZhbHVlOworCisJLyoKKwkgKiBJbiBh biBBTFRFUiAuLiBSRU5BTUUgY29tbWFuZCwgd2UgZG9uJ3QgaGF2ZSB0aGUgb3JpZ2luYWwgbmFt ZSBvZiB0aGUKKwkgKiBvYmplY3QgaW4gc3lzdGVtIGNhdGFsb2dzOiBzaW5jZSB3ZSBpbnNwZWN0 IHRoZW0gYWZ0ZXIgdGhlIGNvbW1hbmQgaGFzCisJICogZXhlY3V0ZWQsIHRoZSBvbGQgbmFtZSBp cyBhbHJlYWR5IGdvbmUuICBUaGVyZWZvcmUsIHdlIGV4dHJhY3QgaXQgZnJvbQorCSAqIHRoZSBw YXJzZSBub2RlLiAgTm90ZSB3ZSBzdGlsbCBleHRyYWN0IHRoZSBzY2hlbWEgbmFtZSBmcm9tIHRo ZSBjYXRhbG9nCisJICogKGl0IG1pZ2h0IG5vdCBiZSBwcmVzZW50IGluIHRoZSBwYXJzZSBub2Rl KTsgaXQgY2Fubm90IHBvc3NpYmx5IGhhdmUKKwkgKiBjaGFuZ2VkIGFueXdheS4KKwkgKi8KKwlz d2l0Y2ggKG5vZGUtPnJlbmFtZVR5cGUpCisJeworCQljYXNlIE9CSkVDVF9UQUJMRToKKwkJCXJl bGF0aW9uID0gcmVsYXRpb25fb3BlbihhZGRyZXNzLm9iamVjdElkLCBBY2Nlc3NTaGFyZUxvY2sp OworCQkJc2NoZW1hSWQgPSBSZWxhdGlvbkdldE5hbWVzcGFjZShyZWxhdGlvbik7CisKKwkJCXB1 c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCQluZXdfanNv bmJfVkEoc3RhdGUsIE5VTEwsCisJCQkJCQkgIkFMVEVSICV7b2JqdHlwZX1zICV7aWZfZXhpc3Rz fXMgJXtpZGVudGl0eX1EIgorCQkJCQkJICIgUkVOQU1FIFRPICV7bmV3bmFtZX1JIiwgZmFsc2Us IDMsCisJCQkJCQkgIm9ianR5cGUiLCBqYnZTdHJpbmcsCisJCQkJCQkgc3RyaW5naWZ5X29ianR5 cGUobm9kZS0+cmVuYW1lVHlwZSksCisJCQkJCQkgImlmX2V4aXN0cyIsIGpidlN0cmluZywKKwkJ CQkJCSBub2RlLT5taXNzaW5nX29rID8gIklGIEVYSVNUUyIgOiAiIiwKKwkJCQkJCSAibmV3bmFt ZSIsIGpidlN0cmluZywgbm9kZS0+bmV3bmFtZSk7CisKKwkJCWluc2VydF9pZGVudGl0eV9vYmpl Y3Qoc3RhdGUsIHNjaGVtYUlkLCBub2RlLT5yZWxhdGlvbi0+cmVsbmFtZSk7CisJCQl2YWx1ZSA9 IHB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCisJCQlyZWxh dGlvbl9jbG9zZShyZWxhdGlvbiwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCWJyZWFrOworCisJCWNh c2UgT0JKRUNUX1RBQkNPTlNUUkFJTlQ6CisJCQl7CisJCQkJSGVhcFR1cGxlCWNvbnN0cnR1cDsK KwkJCQlGb3JtX3BnX2NvbnN0cmFpbnQgY29uc3Rmb3JtOworCisJCQkJY29uc3RydHVwID0gU2Vh cmNoU3lzQ2FjaGUxKENPTlNUUk9JRCwKKwkJCQkJCQkJCQkJT2JqZWN0SWRHZXREYXR1bShhZGRy ZXNzLm9iamVjdElkKSk7CisJCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGNvbnN0cnR1cCkpCisJ CQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBjb25zdHJhaW50IHdpdGgg T0lEICV1IiwKKwkJCQkJCSBhZGRyZXNzLm9iamVjdElkKTsKKwkJCQljb25zdGZvcm0gPSAoRm9y bV9wZ19jb25zdHJhaW50KSBHRVRTVFJVQ1QoY29uc3RydHVwKTsKKworCQkJCXB1c2hKc29uYlZh bHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCQkJbmV3X2pzb25iX1ZBKHN0 YXRlLCBOVUxMLAorCQkJCQkJCSAiQUxURVIgVEFCTEUgJXtvbmx5fXMgJXtpZGVudGl0eX1EIFJF TkFNRSIKKwkJCQkJCQkgIiBDT05TVFJBSU5UICV7b2xkbmFtZX1JIFRPICV7bmV3bmFtZX1JIiwK KwkJCQkJCQkgZmFsc2UsIDMsCisJCQkJCQkJICJvbmx5IiwgamJ2U3RyaW5nLAorCQkJCQkJCSBu b2RlLT5yZWxhdGlvbi0+aW5oID8gIiIgOiAiT05MWSIsCisJCQkJCQkJICJvbGRuYW1lIiwgamJ2 U3RyaW5nLCBub2RlLT5zdWJuYW1lLAorCQkJCQkJCSAibmV3bmFtZSIsIGpidlN0cmluZywgbm9k ZS0+bmV3bmFtZSk7CisKKwkJCQluZXdfanNvbmJfZm9yX3F1YWxuYW1lX2lkKHN0YXRlLCBSZWxh dGlvblJlbGF0aW9uSWQsCisJCQkJCQkJCQkJICBjb25zdGZvcm0tPmNvbnJlbGlkLCAiaWRlbnRp dHkiLCB0cnVlKTsKKwkJCQl2YWx1ZSA9IHB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9P QkpFQ1QsIE5VTEwpOworCisJCQkJUmVsZWFzZVN5c0NhY2hlKGNvbnN0cnR1cCk7CisJCQl9CisJ CQlicmVhazsKKworCQljYXNlIE9CSkVDVF9DT0xVTU46CisJCQl7CisJCQkJU3RyaW5nSW5mb0Rh dGEgZm10U3RyOworCisJCQkJaW5pdFN0cmluZ0luZm8oJmZtdFN0cik7CisKKwkJCQlyZWxhdGlv biA9IHJlbGF0aW9uX29wZW4oYWRkcmVzcy5vYmplY3RJZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJ CQlzY2hlbWFJZCA9IFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbGF0aW9uKTsKKworCQkJCXB1c2hK c29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisKKwkJCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICJBTFRFUiAle29ianR5cGV9cyIpOworCisJCQkJbmV3 X2pzb25iX1ZBKHN0YXRlLCBOVUxMLCBOVUxMLCBmYWxzZSwgMSwKKwkJCQkJCQkgIm9ianR5cGUi LCBqYnZTdHJpbmcsCisJCQkJCQkJIHN0cmluZ2lmeV9vYmp0eXBlKG5vZGUtPnJlbGF0aW9uVHlw ZSkpOworCisJCQkJLyogQ29tcG9zaXRlIHR5cGVzIGRvIG5vdCBzdXBwb3J0IElGIEVYSVNUUyAq LworCQkJCWlmIChub2RlLT5yZW5hbWVUeXBlID09IE9CSkVDVF9DT0xVTU4pCisJCQkJeworCQkJ CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgJXtpZl9leGlzdHN9cyIpOworCQkJ CQluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEwsIE5VTEwsIGZhbHNlLCAxLAorCQkJCQkJCQkgImlm X2V4aXN0cyIsIGpidlN0cmluZywKKwkJCQkJCQkJIG5vZGUtPm1pc3Npbmdfb2sgPyAiSUYgRVhJ U1RTIiA6ICIiKTsKKwkJCQl9CisKKwkJCQlpZiAoIW5vZGUtPnJlbGF0aW9uLT5pbmgpCisJCQkJ eworCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgJXtvbmx5fXMiKTsKKwkJ CQkJbmV3X2pzb25iX1ZBKHN0YXRlLCBOVUxMLCBOVUxMLCBmYWxzZSwgMSwKKwkJCQkJCQkJICJv bmx5IiwgamJ2U3RyaW5nLCAiT05MWSIpOworCQkJCX0KKworCQkJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoJmZtdFN0ciwgIiAle2lkZW50aXR5fUQgUkVOQU1FIENPTFVNTiIKKwkJCQkJCQkJCSAg ICIgJXtjb2xuYW1lfUkgVE8gJXtuZXduYW1lfUkiKTsKKwkJCQlpbnNlcnRfaWRlbnRpdHlfb2Jq ZWN0KHN0YXRlLCBzY2hlbWFJZCwgbm9kZS0+cmVsYXRpb24tPnJlbG5hbWUpOworCQkJCW5ld19q c29uYl9WQShzdGF0ZSwgTlVMTCwgTlVMTCwgZmFsc2UsIDIsCisJCQkJCQkJICJjb2xuYW1lIiwg amJ2U3RyaW5nLCBub2RlLT5zdWJuYW1lLAorCQkJCQkJCSAibmV3bmFtZSIsIGpidlN0cmluZywg bm9kZS0+bmV3bmFtZSk7CisKKwkJCQlpZiAobm9kZS0+cmVuYW1lVHlwZSA9PSBPQkpFQ1RfQVRU UklCVVRFKQorCQkJCXsKKworCQkJCQlpZiAobm9kZS0+YmVoYXZpb3IgPT0gRFJPUF9DQVNDQURF KQorCQkJCQl7CisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgJXtjYXNj YWRlfXMiKTsKKwkJCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgTlVMTCwgTlVMTCwgZmFsc2UsIDEs CisJCQkJCQkJCQkgImNhc2NhZGUiLCBqYnZTdHJpbmcsICJDQVNDQURFIik7CisJCQkJCX0KKwkJ CQl9CisKKwkJCQkvKiBXZSBoYXZlIGZ1bGwgZm10IGJ5IG5vdywgc28gYWRkIGpzb25iIGVsZW1l bnQgZm9yIHRoYXQgKi8KKwkJCQlmbXRfdG9fanNvbmJfZWxlbWVudChzdGF0ZSwgZm10U3RyLmRh dGEpOworCisJCQkJcGZyZWUoZm10U3RyLmRhdGEpOworCisJCQkJdmFsdWUgPSBwdXNoSnNvbmJW YWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKworCQkJCXJlbGF0aW9uX2Nsb3Nl KHJlbGF0aW9uLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCWJyZWFrOworCQkJfQorCisJCWRlZmF1 bHQ6CisJCQllbG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQgb2JqZWN0IHR5cGUgJWQiLCBub2RlLT5y ZW5hbWVUeXBlKTsKKwl9CisKKwlyZXR1cm4gSnNvbmJWYWx1ZVRvSnNvbmIodmFsdWUpOworfQor CisvKgorICogRGVwYXJzZSBhbiBBbHRlck9iamVjdFNjaGVtYVN0bXQgKEFMVEVSIFRBQkxFLi4u IFNFVCBTQ0hFTUEgY29tbWFuZCkKKyAqCisgKiBHaXZlbiB0aGUgb2JqZWN0KHRhYmxlKSBhZGRy ZXNzIGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybgorICogSnNvbmIg cmVwcmVzZW50aW5nIHRoZSBhbHRlciBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4Cisg KiBBTFRFUiAle29ianR5cGV9cyAle2lkZW50aXR5fXMgU0VUIFNDSEVNQSAle25ld3NjaGVtYX1J CisgKi8KK3N0YXRpYyBKc29uYiAqCitkZXBhcnNlX0FsdGVyT2JqZWN0U2NoZW1hU3RtdChPYmpl Y3RBZGRyZXNzIGFkZHJlc3MsIE5vZGUgKnBhcnNldHJlZSwKKwkJCQkJCQkgIE9iamVjdEFkZHJl c3Mgb2xkX3NjaGVtYSkKK3sKKwlBbHRlck9iamVjdFNjaGVtYVN0bXQgKm5vZGUgPSAoQWx0ZXJP YmplY3RTY2hlbWFTdG10ICopIHBhcnNldHJlZTsKKwljaGFyCSAgICppZGVudGl0eTsKKwljaGFy CSAgICpuZXdfc2NoZW1hID0gbm9kZS0+bmV3c2NoZW1hOworCWNoYXIJICAgKm9sZF9zY2huYW1l OworCWNoYXIJICAgKmlkZW50OworCUpzb25iUGFyc2VTdGF0ZSAqc3RhdGUgPSBOVUxMOworCUpz b25iVmFsdWUgKnZhbHVlOworCisJLyoKKwkgKiBTaW5jZSB0aGUgY29tbWFuZCBoYXMgYWxyZWFk eSB0YWtlbiBwbGFjZSBmcm9tIHRoZSBwb2ludCBvZiB2aWV3IG9mCisJICogY2F0YWxvZ3MsIGdl dE9iamVjdElkZW50aXR5IHJldHVybnMgdGhlIG9iamVjdCBuYW1lIHdpdGggdGhlIGFscmVhZHkK KwkgKiBjaGFuZ2VkIHNjaGVtYS4gIFRoZSBvdXRwdXQgb2Ygb3VyIGRlcGFyc2luZyBtdXN0IHJl dHVybiB0aGUgb3JpZ2luYWwKKwkgKiBzY2hlbWEgbmFtZSwgaG93ZXZlciwgc28gd2UgY2hvcCB0 aGUgc2NoZW1hIG5hbWUgb2ZmIHRoZSBpZGVudGl0eQorCSAqIHN0cmluZyBhbmQgdGhlbiBwcmVw ZW5kIHRoZSBxdW90ZWQgc2NoZW1hIG5hbWUuCisJICoKKwkgKiBYWFggVGhpcyBpcyBwcmV0dHkg Y2x1bmt5LiBDYW4gd2UgZG8gYmV0dGVyPworCSAqLworCWlkZW50aXR5ID0gZ2V0T2JqZWN0SWRl bnRpdHkoJmFkZHJlc3MsIGZhbHNlKTsKKwlvbGRfc2NobmFtZSA9IGdldF9uYW1lc3BhY2VfbmFt ZShvbGRfc2NoZW1hLm9iamVjdElkKTsKKwlpZiAoIW9sZF9zY2huYW1lKQorCQllbG9nKEVSUk9S LCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igc2NoZW1hIHdpdGggT0lEICV1IiwKKwkJCSBvbGRf c2NoZW1hLm9iamVjdElkKTsKKworCWlkZW50ID0gcHNwcmludGYoIiVzJXMiLCBxdW90ZV9pZGVu dGlmaWVyKG9sZF9zY2huYW1lKSwKKwkJCQkJIGlkZW50aXR5ICsgc3RybGVuKHF1b3RlX2lkZW50 aWZpZXIobmV3X3NjaGVtYSkpKTsKKworCXZhbHVlID0gbmV3X2pzb25iX1ZBKHN0YXRlLCBOVUxM LAorCQkJCQkJICJBTFRFUiAle29ianR5cGV9cyAle2lkZW50aXR5fXMgU0VUIFNDSEVNQSIKKwkJ CQkJCSAiICV7bmV3c2NoZW1hfUkiLCB0cnVlLCAzLAorCQkJCQkJICJvYmp0eXBlIiwgamJ2U3Ry aW5nLAorCQkJCQkJIHN0cmluZ2lmeV9vYmp0eXBlKG5vZGUtPm9iamVjdFR5cGUpLAorCQkJCQkJ ICJpZGVudGl0eSIsIGpidlN0cmluZywgaWRlbnQsCisJCQkJCQkgIm5ld3NjaGVtYSIsIGpidlN0 cmluZywgbmV3X3NjaGVtYSk7CisJcmV0dXJuIEpzb25iVmFsdWVUb0pzb25iKHZhbHVlKTsKK30K KworLyoKKyAqIEhhbmRsZSBkZXBhcnNpbmcgb2Ygc2ltcGxlIGNvbW1hbmRzLgorICoKKyAqIFRo aXMgZnVuY3Rpb24gc2hvdWxkIGNvdmVyIGFsbCBjYXNlcyBoYW5kbGVkIGluIFByb2Nlc3NVdGls aXR5U2xvdy4KKyAqLworc3RhdGljIEpzb25iICoKK2RlcGFyc2Vfc2ltcGxlX2NvbW1hbmQoQ29s bGVjdGVkQ29tbWFuZCAqY21kKQoreworCU9pZAkJCW9iamVjdElkOworCU5vZGUJICAgKnBhcnNl dHJlZTsKKworCUFzc2VydChjbWQtPnR5cGUgPT0gU0NUX1NpbXBsZSk7CisKKwlwYXJzZXRyZWUg PSBjbWQtPnBhcnNldHJlZTsKKwlvYmplY3RJZCA9IGNtZC0+ZC5zaW1wbGUuYWRkcmVzcy5vYmpl Y3RJZDsKKworCWlmIChjbWQtPmluX2V4dGVuc2lvbiAmJiAobm9kZVRhZyhwYXJzZXRyZWUpICE9 IFRfQ3JlYXRlRXh0ZW5zaW9uU3RtdCkpCisJCXJldHVybiBOVUxMOworCisJLyogVGhpcyBzd2l0 Y2ggbmVlZHMgdG8gaGFuZGxlIGV2ZXJ5dGhpbmcgdGhhdCBQcm9jZXNzVXRpbGl0eVNsb3cgZG9l cyAqLworCXN3aXRjaCAobm9kZVRhZyhwYXJzZXRyZWUpKQorCXsKKwkJY2FzZSBUX0FsdGVyT2Jq ZWN0U2NoZW1hU3RtdDoKKwkJCXJldHVybiBkZXBhcnNlX0FsdGVyT2JqZWN0U2NoZW1hU3RtdChj bWQtPmQuc2ltcGxlLmFkZHJlc3MsCisJCQkJCQkJCQkJCQkgcGFyc2V0cmVlLAorCQkJCQkJCQkJ CQkJIGNtZC0+ZC5zaW1wbGUuc2Vjb25kYXJ5T2JqZWN0KTsKKworCQljYXNlIFRfQWx0ZXJTZXFT dG10OgorCQkJcmV0dXJuIGRlcGFyc2VfQWx0ZXJTZXFTdG10KG9iamVjdElkLCBwYXJzZXRyZWUp OworCisJCWNhc2UgVF9DcmVhdGVTZXFTdG10OgorCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlU2Vx U3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQ3JlYXRlU3RtdDoKKwkJCXJl dHVybiBkZXBhcnNlX0NyZWF0ZVN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CisJCWNhc2UgVF9S ZW5hbWVTdG10OgorCQkJcmV0dXJuIGRlcGFyc2VfUmVuYW1lU3RtdChjbWQtPmQuc2ltcGxlLmFk ZHJlc3MsIHBhcnNldHJlZSk7CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coTE9HLCAidW5yZWNvZ25p emVkIG5vZGUgdHlwZSBpbiBkZXBhcnNlIGNvbW1hbmQ6ICVkIiwKKwkJCQkgKGludCkgbm9kZVRh ZyhwYXJzZXRyZWUpKTsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIFdvcmtob3Jz ZSB0byBkZXBhcnNlIGEgQ29sbGVjdGVkQ29tbWFuZC4KKyAqLworY2hhciAqCitkZXBhcnNlX3V0 aWxpdHlfY29tbWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQpCit7CisJT3ZlcnJpZGVTZWFyY2hQ YXRoICpvdmVycmlkZVBhdGg7CisJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CisJTWVtb3J5Q29udGV4 dCB0bXBjeHQ7CisJY2hhcgkgICAqY29tbWFuZCA9IE5VTEw7CisJU3RyaW5nSW5mb0RhdGEgc3Ry OworCUpzb25iCSAgICpqc29uYjsKKworCS8qCisJICogQWxsb2NhdGUgZXZlcnl0aGluZyBkb25l IGJ5IHRoZSBkZXBhcnNpbmcgcm91dGluZXMgaW50byBhIHRlbXAgY29udGV4dCwKKwkgKiB0byBh dm9pZCBoYXZpbmcgdG8gc3ByaW5rbGUgdGhlbSB3aXRoIG1lbW9yeSBoYW5kbGluZyBjb2RlLCBi dXQKKwkgKiBhbGxvY2F0ZSB0aGUgb3V0cHV0IFN0cmluZ0luZm8gYmVmb3JlIHN3aXRjaGluZy4K KwkgKi8KKwlpbml0U3RyaW5nSW5mbygmc3RyKTsKKwl0bXBjeHQgPSBBbGxvY1NldENvbnRleHRD cmVhdGUoQ3VycmVudE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCSAgICJkZXBhcnNlIGN0eCIsCisJ CQkJCQkJCSAgIEFMTE9DU0VUX0RFRkFVTFRfTUlOU0laRSwKKwkJCQkJCQkJICAgQUxMT0NTRVRf REVGQVVMVF9JTklUU0laRSwKKwkJCQkJCQkJICAgQUxMT0NTRVRfREVGQVVMVF9NQVhTSVpFKTsK KwlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8odG1wY3h0KTsKKworCS8qCisJICogTWFu eSByb3V0aW5lcyB1bmRlcmx5aW5nIHRoaXMgb25lIHdpbGwgaW52b2tlIHJ1bGV1dGlscy5jIGZ1 bmN0aW9uYWxpdHkKKwkgKiB0byBvYnRhaW4gZGVwYXJzZWQgdmVyc2lvbnMgb2YgZXhwcmVzc2lv bnMuICBJbiBzdWNoIHJlc3VsdHMsIHdlIHdhbnQKKwkgKiBhbGwgb2JqZWN0IG5hbWVzIHRvIGJl IHF1YWxpZmllZCwgc28gdGhhdCByZXN1bHRzIGFyZSAicG9ydGFibGUiIHRvCisJICogZW52aXJv bm1lbnRzIHdpdGggZGlmZmVyZW50IHNlYXJjaF9wYXRoIHNldHRpbmdzLiAgUmF0aGVyIHRoYW4K KwkgKiBpbmplY3Rpbmcgd2hhdCB3b3VsZCBiZSByZXBldGl0aXZlIGNhbGxzIHRvIG92ZXJyaWRl IHNlYXJjaCBwYXRoIGFsbAorCSAqIG92ZXIgdGhlIHBsYWNlLCB3ZSBkbyBpdCBjZW50cmFsbHkg aGVyZS4KKwkgKi8KKwlvdmVycmlkZVBhdGggPSBHZXRPdmVycmlkZVNlYXJjaFBhdGgoQ3VycmVu dE1lbW9yeUNvbnRleHQpOworCW92ZXJyaWRlUGF0aC0+c2NoZW1hcyA9IE5JTDsKKwlvdmVycmlk ZVBhdGgtPmFkZENhdGFsb2cgPSBmYWxzZTsKKwlvdmVycmlkZVBhdGgtPmFkZFRlbXAgPSB0cnVl OworCVB1c2hPdmVycmlkZVNlYXJjaFBhdGgob3ZlcnJpZGVQYXRoKTsKKworCXN3aXRjaCAoY21k LT50eXBlKQorCXsKKwkJY2FzZSBTQ1RfU2ltcGxlOgorCQkJanNvbmIgPSBkZXBhcnNlX3NpbXBs ZV9jb21tYW5kKGNtZCk7CisJCQlicmVhazsKKwkJY2FzZSBTQ1RfQWx0ZXJUYWJsZToKKwkJCWpz b25iID0gZGVwYXJzZV9BbHRlclRhYmxlU3RtdChjbWQpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6 CisJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBkZXBhcnNlIG5vZGUgdHlwZSAlZCIsIGNtZC0+ dHlwZSk7CisJfQorCisJUG9wT3ZlcnJpZGVTZWFyY2hQYXRoKCk7CisKKwlpZiAoanNvbmIpCisJ CWNvbW1hbmQgPSBKc29uYlRvQ1N0cmluZygmc3RyLCAmanNvbmItPnJvb3QsIEpTT05CX0VTVElN QVRFRF9MRU4pOworCisJLyoKKwkgKiBDbGVhbiB1cC4gIE5vdGUgdGhhdCBzaW5jZSB3ZSBjcmVh dGVkIHRoZSBTdHJpbmdJbmZvIGluIHRoZSBjYWxsZXIncworCSAqIGNvbnRleHQsIHRoZSBvdXRw dXQgc3RyaW5nIGlzIG5vdCBkZWxldGVkIGhlcmUuCisJICovCisJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGN4dCk7CisJTWVtb3J5Q29udGV4dERlbGV0ZSh0bXBjeHQpOworCisJcmV0dXJuIGNv bW1hbmQ7Cit9CisKKy8qCisgKiBHaXZlbiBhIENvbGxlY3RlZENvbW1hbmQsIHJldHVybiBhIEpT T04gcmVwcmVzZW50YXRpb24gb2YgaXQuCisgKgorICogVGhlIGNvbW1hbmQgaXMgZXhwYW5kZWQg ZnVsbHkgc28gdGhhdCB0aGVyZSBhcmUgbm8gYW1iaWd1aXRpZXMgZXZlbiBpbiB0aGUKKyAqIGZh Y2Ugb2Ygc2VhcmNoX3BhdGggY2hhbmdlcy4KKyAqLworRGF0dW0KK2RkbF9kZXBhcnNlX3RvX2pz b24oUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlDb2xsZWN0ZWRDb21tYW5kICpjbWQgPSAoQ29sbGVj dGVkQ29tbWFuZCAqKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKwljaGFyCSAgICpjb21tYW5kOwor CisJY29tbWFuZCA9IGRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKGNtZCk7CisKKwlpZiAoY29tbWFu ZCkKKwkJUEdfUkVUVVJOX1RFWFRfUChjc3RyaW5nX3RvX3RleHQoY29tbWFuZCkpOworCisJUEdf UkVUVVJOX05VTEwoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbGpz b24uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbGpzb24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwLi5kNWM5NjhiN2MxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZGRsanNvbi5jCkBAIC0wLDAgKzEsNzU5IEBACisvKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqCisgKiBkZGxqc29uLmMKKyAqCSAgSlNPTiBjb2RlIHJlbGF0ZWQgdG8gRERMIGNv bW1hbmQgZGVwYXJzaW5nCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjMs IFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmln aHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoK KyAqIE5PVEVTCisgKgorICogRWFjaCBKU09OQiBvYmplY3QgaXMgc3VwcG9zZWQgdG8gaGF2ZSBh ICJmbXQiIHdoaWNoIHdpbGwgdGVsbCBleHBhbnNpb24KKyAqIHJvdXRpbmVzIGhvdyBKU09OQiBj YW4gYmUgZXhwYW5kZWQgdG8gY29uc3RydWN0IGRkbCBjb21tYW5kLiBPbmUgZXhhbXBsZQorICog c25pcHBldCBmcm9tIEpTT05CIG9iamVjdCBmb3IgJ0FMVEVSIFRBQkxFIHNhbGVzIEFERCBjb2wx IGludCc6CisgKgorICogeyAqMS1sZXZlbCoKKyAqICAgImZtdCI6ICJBTFRFUiAle29ianR5cGV9 cyAle29ubHl9cyAle2lkZW50aXR5fUQgJXtzdWJjbWRzOiwgfXMiLAorICogICAib25seSI6ICIi LAorICogICJvYmp0eXBlIjogIlRBQkxFIiwKKyAqICAiaWRlbnRpdHkiOiB7Im9iam5hbWUiOiAi c2FsZXMiLCAic2NoZW1hbmFtZSI6ICJwdWJsaWMifQorICogICJzdWJjbWRzIjogWworICogICAg ICB7ICoyLWxldmVsKgorICogICAgICAgICAgImZtdCI6ICJBREQgJXtvYmp0eXBlfXMgJXtpZl9u b3RfZXhpc3RzfXMgJXtkZWZpbml0aW9ufXMiLAorICogICAgICAgICAgInR5cGUiOiAiYWRkIGNv bHVtbiIsCisgKiAgICAgICAgICAib2JqdHlwZSI6ICJDT0xVTU4iLAorICogICAgICAgICAgImRl ZmluaXRpb24iOiB7fQorICogICAgICAgICAgIC4uLgorICogICAgICB9CisgKiAgICAgIC4uLgor ICogfQorICoKKyAqIEZyb20gYWJvdmUsIHdlIGNhbiBzZWUgZGlmZmVyZW50IGtleS12YWx1ZSBw YWlycy4KKyAqIGxldmVsLTEgcmVwcmVzZW50cyBST09UIG9iamVjdCB3aXRoICdmbXQnLCAnb25s eScsICdvYmp0eXBlJywnaWRlbnRpdHknLAorICogJ3N1YmNtZHMnIGFzIHRoZSBrZXlzIHdpdGgg dGhlIHZhbHVlcyBhcHBlbmRlZCBhZnRlciAiOiIgd2l0aCBlYWNoIGtleS4KKyAqIFZhbHVlIGNh biBiZSBzdHJpbmcsIGJvb2wsIG51bWVyaWMsIGFycmF5IG9yIGFueSBuZXN0ZWQgb2JqZWN0LiAg QXMgYW4KKyAqIGV4YW1wbGUsICJvYmp0eXBlIiBoYXMgc3RyaW5nIHZhbHVlIHdoaWxlICJzdWJj bWRzIiBoYXMgbmVzdGVkLW9iamVjdAorICogYXMgaXRzIHZhbHVlIHdoaWNoIGNhbiBmdXJ0aGVy IGhhdmUgbXVsdGlwbGUga2V5LXZhbHVlIHBhaXJzLgorICoKKyAqIFRoZSB2YWx1ZSBvZiAiZm10 IiB0ZWxscyB1cyBob3cgdGhlIGV4cGFuc2lvbiB3aWxsIGJlIGNhcnJpZWQgb24uIFRoZQorICog dmFsdWUgb2YgImZtdCIgIG1heSBjb250YWluIHplcm8gb3IgbW9yZSAlLWVzY2FwZXMsIHdoaWNo IGNvbnNpc3Qgb2Yga2V5CisgKiBuYW1lIGVuY2xvc2VkIGluIHsgfSwgZm9sbG93ZWQgYnkgYSBj b252ZXJzaW9uIHNwZWNpZmllciB3aGljaCB0ZWxscyB1cworICogaG93IHRoZSB2YWx1ZSBmb3Ig dGhhdCBwYXJ0aWN1bGFyIGtleSBzaG91bGQgYmUgZXhwYW5kZWQuCisgKiBQb3NzaWJsZSBjb252 ZXJzaW9uIHNwZWNpZmllcnMgYXJlOgorICogJSAgICAgICAgICAgIGV4cGFuZCB0byBhIGxpdGVy YWwgJQorICogSSAgICAgICAgICAgIGV4cGFuZCBhcyBhIHNpbmdsZSwgbm9uLXF1YWxpZmllZCBp ZGVudGlmaWVyCisgKiBEICAgICAgICAgICAgZXhwYW5kIGFzIGEgcG9zc2libHktcXVhbGlmaWVk IGlkZW50aWZpZXIKKyAqIFQgICAgICAgICAgICBleHBhbmQgYXMgYSB0eXBlIG5hbWUKKyAqIEwg ICAgICAgICAgICBleHBhbmQgYXMgYSBzdHJpbmcgbGl0ZXJhbCAocXVvdGUgdXNpbmcgc2luZ2xl IHF1b3RlcykKKyAqIHMgICAgICAgICAgICBleHBhbmQgYXMgYSBzaW1wbGUgc3RyaW5nIChubyBx dW90aW5nKQorICogbiAgICAgICAgICAgIGV4cGFuZCBhcyBhIHNpbXBsZSBudW1iZXIgKG5vIHF1 b3RpbmcpCisgKgorICogSW4gb3JkZXIgdG8gYnVpbGQgYSBEREwgY29tbWFuZCwgaXQgd2lsbCBm aXJzdCBleHRyYWN0ICJmbXQiIG5vZGUgaW4KKyAqIGpzb25iIHN0cmluZyBhbmQgd2lsbCByZWFk IGVhY2gga2V5IG5hbWUgZW5jbG9zZWQgaW4geyB9IGluIGZtdC1zdHJpbmcKKyAqIGFuZCB3aWxs IHJlcGxhY2UgaXQgd2l0aCBpdHMgdmFsdWUuIEZvciBlYWNoIG5hbWUgbWVudGlvbmVkIGluIHsg fSBpbgorICogZm10IHN0cmluZywgdGhlcmUgbXVzdCBiZSBhIGtleS12YWx1ZSBwYWlyLCBpbiBh YnNlbmNlIG9mIHdoaWNoLCB0aGUKKyAqIGV4cGFuc2lvbiB3aWxsIGVycm9yIG91dC4gV2hpbGUg ZG9pbmcgdGhpcyBleHBhbnNpb24sIGl0IHdpbGwgY29uc2lkZXIKKyAqIHRoZSBjb252ZXJzaW9u LXNwZWNpZmllciBtYWludGFpbmVkIHdpdGggZWFjaCBrZXkgaW4gZm10IHN0cmluZyB0byBmaWd1 cmUKKyAqIG91dCBob3cgdmFsdWUgc2hvdWxkIGFjdHVhbGx5IGJlIHJlcHJlc2VudGVkLiBUaGlz IGlzIGhvdyBEREwgY29tbWFuZCBjYW4KKyAqIGJlIGNvbnN0cnVjdGVkIGJhY2sgZnJvbSB0aGUg anNvbmItc3RyaW5nLgorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL2RkbGpzb24uYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaW5jbHVkZSAi cG9zdGdyZXMuaCIKKworI2luY2x1ZGUgInRjb3AvZGRsZGVwYXJzZS5oIgorI2luY2x1ZGUgInV0 aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvanNvbmIuaCIKKworCisjZGVmaW5lIEFE VkFOQ0VfUEFSU0VfUE9JTlRFUihwdHIsZW5kX3B0cikgXAorCWRvIHsgXAorCQlpZiAoKysocHRy KSA+PSAoZW5kX3B0cikpIFwKKwkJCWVyZXBvcnQoRVJST1IsIFwKKwkJCQkJZXJyY29kZShFUlJD T0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwgXAorCQkJCQllcnJtc2coInVudGVybWluYXRl ZCBmb3JtYXQgc3BlY2lmaWVyIikpOyBcCisJfSB3aGlsZSAoMCkKKworLyoKKyAqIENvbnZlcnNp b24gc3BlY2lmaWVyIHdoaWNoIGRldGVybWluZXMgaG93IHRvIGV4cGFuZCB0aGUgSlNPTiBlbGVt ZW50CisgKiBpbnRvIGEgc3RyaW5nLgorICovCit0eXBlZGVmIGVudW0KK3sKKwlTcGVjRG90dGVk TmFtZSwKKwlTcGVjSWRlbnRpZmllciwKKwlTcGVjTnVtYmVyLAorCVNwZWNTdHJpbmcsCisJU3Bl Y1N0cmluZ0xpdGVyYWwsCisJU3BlY1R5cGVOYW1lCit9IGNvbnZTcGVjaWZpZXI7CisKKy8qCisg KiBBIHRlcm5hcnkgdmFsdWUgdGhhdCByZXByZXNlbnRzIGEgYm9vbGVhbiB0eXBlIEpzb25iVmFs dWUuCisgKi8KK3R5cGVkZWYgZW51bQoreworCXR2X2Fic2VudCwKKwl0dl90cnVlLAorCXR2X2Zh bHNlCit9CQkJanNvbl90cml2YWx1ZTsKKworc3RhdGljIGJvb2wgZXhwYW5kX29uZV9qc29uYl9l bGVtZW50KFN0cmluZ0luZm8gYnVmLCBjaGFyICpwYXJhbSwKKwkJCQkJCQkJCSBKc29uYlZhbHVl ICpqc29udmFsLCBjb252U3BlY2lmaWVyIHNwZWNpZmllciwKKwkJCQkJCQkJCSBjb25zdCBjaGFy ICpmbXQpOworc3RhdGljIHZvaWQgZXhwYW5kX2pzb25iX2FycmF5KFN0cmluZ0luZm8gYnVmLCBj aGFyICpwYXJhbSwKKwkJCQkJCQkgICBKc29uYlZhbHVlICpqc29uYXJyLCBjaGFyICphcnJheXNl cCwKKwkJCQkJCQkgICBjb252U3BlY2lmaWVyIHNwZWNpZmllciwgY29uc3QgY2hhciAqZm10KTsK K3N0YXRpYyB2b2lkIGZtdHN0cl9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOworCisvKgorICog R2l2ZW4gYSBKc29uYkNvbnRhaW5lciwgZmluZCB0aGUgSnNvbmJWYWx1ZSB3aXRoIHRoZSBnaXZl biBrZXkgbmFtZSBpbiBpdC4KKyAqIElmIGl0J3Mgb2YgYSB0eXBlIG90aGVyIHRoYW4gamJ2Qm9v bCwgYW4gZXJyb3IgaXMgcmFpc2VkLiBJZiBpdCBkb2Vzbid0CisgKiBleGlzdCwgdHZfYWJzZW50 IGlzIHJldHVybmVkOyBvdGhlcndpc2UgcmV0dXJuIHRoZSBhY3R1YWwganNvbl90cml2YWx1ZS4K KyAqLworc3RhdGljIGpzb25fdHJpdmFsdWUKK2ZpbmRfYm9vbF9pbl9qc29uYmNvbnRhaW5lcihK c29uYkNvbnRhaW5lciAqY29udGFpbmVyLCBjaGFyICprZXluYW1lKQoreworCUpzb25iVmFsdWUJ a2V5OworCUpzb25iVmFsdWUgKnZhbHVlOworCWpzb25fdHJpdmFsdWUgcmVzdWx0OworCisJa2V5 LnR5cGUgPSBqYnZTdHJpbmc7CisJa2V5LnZhbC5zdHJpbmcudmFsID0ga2V5bmFtZTsKKwlrZXku dmFsLnN0cmluZy5sZW4gPSBzdHJsZW4oa2V5bmFtZSk7CisJdmFsdWUgPSBmaW5kSnNvbmJWYWx1 ZUZyb21Db250YWluZXIoY29udGFpbmVyLAorCQkJCQkJCQkJCUpCX0ZPQkpFQ1QsICZrZXkpOwor CWlmICh2YWx1ZSA9PSBOVUxMKQorCQlyZXR1cm4gdHZfYWJzZW50OworCWlmICh2YWx1ZS0+dHlw ZSAhPSBqYnZCb29sKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZB TElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJZXJybXNnKCJlbGVtZW50IFwiJXNcIiBpcyBub3Qg b2YgdHlwZSBib29sZWFuIiwga2V5bmFtZSkpOworCXJlc3VsdCA9IHZhbHVlLT52YWwuYm9vbGVh biA/IHR2X3RydWUgOiB0dl9mYWxzZTsKKwlwZnJlZSh2YWx1ZSk7CisKKwlyZXR1cm4gcmVzdWx0 OworfQorCisvKgorICogR2l2ZW4gYSBKc29uYkNvbnRhaW5lciwgZmluZCB0aGUgSnNvbmJWYWx1 ZSB3aXRoIHRoZSBnaXZlbiBrZXkgbmFtZSBpbiBpdC4KKyAqIElmIGl0J3Mgb2YgYSB0eXBlIG90 aGVyIHRoYW4gamJ2U3RyaW5nLCBhbiBlcnJvciBpcyByYWlzZWQuICBJZiBpdCBkb2Vzbid0Cisg KiBleGlzdCwgYW4gZXJyb3IgaXMgcmFpc2VkIHVubGVzcyBtaXNzaW5nX29rOyBvdGhlcndpc2Ug cmV0dXJuIE5VTEwuCisgKgorICogSWYgaXQgZXhpc3RzIGFuZCBpcyBhIHN0cmluZywgYSBmcmVz aGx5IHBhbGxvYydlZCBjb3B5IGlzIHJldHVybmVkLgorICoKKyAqIElmICpsZW5ndGggaXMgbm90 IE5VTEwsIGl0IGlzIHNldCB0byB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcuCisgKi8KK3N0YXRp YyBjaGFyICoKK2ZpbmRfc3RyaW5nX2luX2pzb25iY29udGFpbmVyKEpzb25iQ29udGFpbmVyICpj b250YWluZXIsIGNoYXIgKmtleW5hbWUsCisJCQkJCQkJICBib29sIG1pc3Npbmdfb2ssIGludCAq bGVuZ3RoKQoreworCUpzb25iVmFsdWUJa2V5OworCUpzb25iVmFsdWUgKnZhbHVlOworCWNoYXIJ ICAgKnN0cjsKKworCS8qIFhYWCB2ZXJpZnkgdGhhdCB0aGlzIGlzIGFuIG9iamVjdCwgbm90IGFu IGFycmF5ICovCisKKwlrZXkudHlwZSA9IGpidlN0cmluZzsKKwlrZXkudmFsLnN0cmluZy52YWwg PSBrZXluYW1lOworCWtleS52YWwuc3RyaW5nLmxlbiA9IHN0cmxlbihrZXluYW1lKTsKKwl2YWx1 ZSA9IGZpbmRKc29uYlZhbHVlRnJvbUNvbnRhaW5lcihjb250YWluZXIsCisJCQkJCQkJCQkJSkJf Rk9CSkVDVCwgJmtleSk7CisJaWYgKHZhbHVlID09IE5VTEwpCisJeworCQlpZiAobWlzc2luZ19v aykKKwkJCXJldHVybiBOVUxMOworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09E RV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJZXJybXNnKCJtaXNzaW5nIGVsZW1lbnQg XCIlc1wiIGluIEpTT04gb2JqZWN0Iiwga2V5bmFtZSkpOworCX0KKworCWlmICh2YWx1ZS0+dHlw ZSAhPSBqYnZTdHJpbmcpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lO VkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQllcnJtc2coImVsZW1lbnQgXCIlc1wiIGlzIG5v dCBvZiB0eXBlIHN0cmluZyIsIGtleW5hbWUpKTsKKworCXN0ciA9IHBuc3RyZHVwKHZhbHVlLT52 YWwuc3RyaW5nLnZhbCwgdmFsdWUtPnZhbC5zdHJpbmcubGVuKTsKKwlpZiAobGVuZ3RoKQorCQkq bGVuZ3RoID0gdmFsdWUtPnZhbC5zdHJpbmcubGVuOworCXBmcmVlKHZhbHVlKTsKKwlyZXR1cm4g c3RyOworfQorCisvKgorICogUmVjdXJzaXZlIGhlbHBlciBmb3IgZGVwYXJzZV9kZGxfanNvbl90 b19zdHJpbmcuCisgKgorICogRmluZCB0aGUgImZtdCIgZWxlbWVudCBpbiB0aGUgZ2l2ZW4gY29u dGFpbmVyLCBhbmQgZXhwYW5kIGl0IGludG8gdGhlCisgKiBwcm92aWRlZCBTdHJpbmdJbmZvLgor ICovCitzdGF0aWMgdm9pZAorZXhwYW5kX2ZtdF9yZWN1cnNpdmUoU3RyaW5nSW5mbyBidWYsIEpz b25iQ29udGFpbmVyICpjb250YWluZXIpCit7CisJSnNvbmJWYWx1ZQlrZXk7CisJSnNvbmJWYWx1 ZSAqdmFsdWU7CisJY29uc3QgY2hhciAqY3A7CisJY29uc3QgY2hhciAqc3RhcnRfcHRyOworCWNv bnN0IGNoYXIgKmVuZF9wdHI7CisJaW50CQkJbGVuOworCisJc3RhcnRfcHRyID0gZmluZF9zdHJp bmdfaW5fanNvbmJjb250YWluZXIoY29udGFpbmVyLCAiZm10IiwgZmFsc2UsICZsZW4pOworCWVu ZF9wdHIgPSBzdGFydF9wdHIgKyBsZW47CisKKwlmb3IgKGNwID0gc3RhcnRfcHRyOyBjcCA8IGVu ZF9wdHI7IGNwKyspCisJeworCQljb252U3BlY2lmaWVyIHNwZWNpZmllcjsKKwkJYm9vbAkJaXNf YXJyYXkgPSBmYWxzZTsKKwkJY2hhcgkgICAqcGFyYW0gPSBOVUxMOworCQljaGFyCSAgICphcnJh eXNlcCA9IE5VTEw7CisKKwkJaWYgKCpjcCAhPSAnJScpCisJCXsKKwkJCWFwcGVuZFN0cmluZ0lu Zm9DaGFyTWFjcm8oYnVmLCAqY3ApOworCQkJY29udGludWU7CisJCX0KKworCQlBRFZBTkNFX1BB UlNFX1BPSU5URVIoY3AsIGVuZF9wdHIpOworCisJCS8qIEVhc3kgY2FzZTogJSUgb3V0cHV0cyBh IHNpbmdsZSAlICovCisJCWlmICgqY3AgPT0gJyUnKQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZv Q2hhck1hY3JvKGJ1ZiwgKmNwKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyoKKwkJICogU2Nh biB0aGUgbWFuZGF0b3J5IGVsZW1lbnQgbmFtZS4gIEFsbG93IGZvciBhbiBhcnJheSBzZXBhcmF0 b3IKKwkJICogKHdoaWNoIG1heSBiZSB0aGUgZW1wdHkgc3RyaW5nKSB0byBiZSBzcGVjaWZpZWQg YWZ0ZXIgYSBjb2xvbi4KKwkJICovCisJCWlmICgqY3AgPT0gJ3snKQorCQl7CisJCQlTdHJpbmdJ bmZvRGF0YSBwYXJidWY7CisJCQlTdHJpbmdJbmZvRGF0YSBhcnJheXNlcGJ1ZjsKKwkJCVN0cmlu Z0luZm8JYXBwZW5kVG87CisKKwkJCWluaXRTdHJpbmdJbmZvKCZwYXJidWYpOworCQkJYXBwZW5k VG8gPSAmcGFyYnVmOworCisJCQlBRFZBTkNFX1BBUlNFX1BPSU5URVIoY3AsIGVuZF9wdHIpOwor CQkJd2hpbGUgKGNwIDwgZW5kX3B0cikKKwkJCXsKKwkJCQlpZiAoKmNwID09ICc6JykKKwkJCQl7 CisJCQkJCS8qCisJCQkJCSAqIEZvdW5kIGFycmF5IHNlcGFyYXRvciBkZWxpbWl0ZXI7IGVsZW1l bnQgbmFtZSBpcyBub3cKKwkJCQkJICogY29tcGxldGUsIHN0YXJ0IGZpbGxpbmcgdGhlIHNlcGFy YXRvci4KKwkJCQkJICovCisJCQkJCWluaXRTdHJpbmdJbmZvKCZhcnJheXNlcGJ1Zik7CisJCQkJ CWFwcGVuZFRvID0gJmFycmF5c2VwYnVmOworCQkJCQlpc19hcnJheSA9IHRydWU7CisJCQkJCUFE VkFOQ0VfUEFSU0VfUE9JTlRFUihjcCwgZW5kX3B0cik7CisJCQkJCWNvbnRpbnVlOworCQkJCX0K KworCQkJCWlmICgqY3AgPT0gJ30nKQorCQkJCXsKKwkJCQkJQURWQU5DRV9QQVJTRV9QT0lOVEVS KGNwLCBlbmRfcHRyKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJCWFwcGVuZFN0cmluZ0luZm9D aGFyTWFjcm8oYXBwZW5kVG8sICpjcCk7CisJCQkJQURWQU5DRV9QQVJTRV9QT0lOVEVSKGNwLCBl bmRfcHRyKTsKKwkJCX0KKwkJCXBhcmFtID0gcGFyYnVmLmRhdGE7CisJCQlpZiAoaXNfYXJyYXkp CisJCQkJYXJyYXlzZXAgPSBhcnJheXNlcGJ1Zi5kYXRhOworCQl9CisJCWlmIChwYXJhbSA9PSBO VUxMKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFS QU1FVEVSX1ZBTFVFKSwKKwkJCQkJZXJybXNnKCJtaXNzaW5nIGNvbnZlcnNpb24gbmFtZSBpbiBj b252ZXJzaW9uIHNwZWNpZmllciIpKTsKKworCQlzd2l0Y2ggKCpjcCkKKwkJeworCQkJY2FzZSAn SSc6CisJCQkJc3BlY2lmaWVyID0gU3BlY0lkZW50aWZpZXI7CisJCQkJYnJlYWs7CisJCQljYXNl ICdEJzoKKwkJCQlzcGVjaWZpZXIgPSBTcGVjRG90dGVkTmFtZTsKKwkJCQlicmVhazsKKwkJCWNh c2UgJ3MnOgorCQkJCXNwZWNpZmllciA9IFNwZWNTdHJpbmc7CisJCQkJYnJlYWs7CisJCQljYXNl ICdMJzoKKwkJCQlzcGVjaWZpZXIgPSBTcGVjU3RyaW5nTGl0ZXJhbDsKKwkJCQlicmVhazsKKwkJ CWNhc2UgJ1QnOgorCQkJCXNwZWNpZmllciA9IFNwZWNUeXBlTmFtZTsKKwkJCQlicmVhazsKKwkJ CWNhc2UgJ24nOgorCQkJCXNwZWNpZmllciA9IFNwZWNOdW1iZXI7CisJCQkJYnJlYWs7CisJCQlk ZWZhdWx0OgorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJZXJybXNnKCJpbnZhbGlkIGNvbnZlcnNpb24gc3Bl Y2lmaWVyIFwiJWNcIiIsICpjcCkpOworCQl9CisKKwkJLyoKKwkJICogT2J0YWluIHRoZSBlbGVt ZW50IHRvIGJlIGV4cGFuZGVkLgorCQkgKi8KKwkJa2V5LnR5cGUgPSBqYnZTdHJpbmc7CisJCWtl eS52YWwuc3RyaW5nLnZhbCA9IHBhcmFtOworCQlrZXkudmFsLnN0cmluZy5sZW4gPSBzdHJsZW4o cGFyYW0pOworCisJCXZhbHVlID0gZmluZEpzb25iVmFsdWVGcm9tQ29udGFpbmVyKGNvbnRhaW5l ciwgSkJfRk9CSkVDVCwgJmtleSk7CisJCUFzc2VydCh2YWx1ZSAhPSBOVUxMKTsKKworCQkvKgor CQkgKiBFeHBhbmQgdGhlIGRhdGEgKHBvc3NpYmx5IGFuIGFycmF5KSBpbnRvIHRoZSBvdXRwdXQg U3RyaW5nSW5mby4KKwkJICovCisJCWlmIChpc19hcnJheSkKKwkJCWV4cGFuZF9qc29uYl9hcnJh eShidWYsIHBhcmFtLCB2YWx1ZSwgYXJyYXlzZXAsIHNwZWNpZmllciwgc3RhcnRfcHRyKTsKKwkJ ZWxzZQorCQkJZXhwYW5kX29uZV9qc29uYl9lbGVtZW50KGJ1ZiwgcGFyYW0sIHZhbHVlLCBzcGVj aWZpZXIsIHN0YXJ0X3B0cik7CisKKwkJcGZyZWUodmFsdWUpOworCX0KK30KKworLyoKKyAqIEV4 cGFuZCBhIGpzb24gdmFsdWUgYXMgYSBxdW90ZWQgaWRlbnRpZmllci4gIFRoZSB2YWx1ZSBtdXN0 IGJlIG9mIHR5cGUgc3RyaW5nLgorICovCitzdGF0aWMgdm9pZAorZXhwYW5kX2pzb252YWxfaWRl bnRpZmllcihTdHJpbmdJbmZvIGJ1ZiwgSnNvbmJWYWx1ZSAqanNvbnZhbCkKK3sKKwljaGFyCSAg ICpzdHI7CisKKwlBc3NlcnQoanNvbnZhbC0+dHlwZSA9PSBqYnZTdHJpbmcpOworCisJc3RyID0g cG5zdHJkdXAoanNvbnZhbC0+dmFsLnN0cmluZy52YWwsIGpzb252YWwtPnZhbC5zdHJpbmcubGVu KTsKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgcXVvdGVfaWRlbnRpZmllcihzdHIpKTsK KwlwZnJlZShzdHIpOworfQorCisvKgorICogRXhwYW5kIGEganNvbiB2YWx1ZSBhcyBhIGRvdC1z ZXBhcmF0ZWQtbmFtZS4gIFRoZSB2YWx1ZSBtdXN0IGJlIG9mIHR5cGUKKyAqIGJpbmFyeSBhbmQg bWF5IGNvbnRhaW4gZWxlbWVudHMgInNjaGVtYW5hbWUiIChvcHRpb25hbCksICJvYmpuYW1lIgor ICogKG1hbmRhdG9yeSksICJhdHRybmFtZSIgKG9wdGlvbmFsKS4gIERvdWJsZSBxdW90ZXMgYXJl IGFkZGVkIHRvIGVhY2ggZWxlbWVudAorICogYXMgbmVjZXNzYXJ5LCBhbmQgZG90IHNlcGFyYXRv cnMgd2hlcmUgbmVlZGVkLgorICoKKyAqIE9uZSBkYXkgd2UgbWlnaHQgbmVlZCBhICJjYXRhbG9n IiBlbGVtZW50IGFzIHdlbGwsIGJ1dCBubyBjdXJyZW50IHVzZSBjYXNlCisgKiBuZWVkcyB0aGF0 LgorICovCitzdGF0aWMgdm9pZAorZXhwYW5kX2pzb252YWxfZG90dGVkbmFtZShTdHJpbmdJbmZv IGJ1ZiwgSnNvbmJWYWx1ZSAqanNvbnZhbCkKK3sKKwljaGFyCSAgICpzdHI7CisJSnNvbmJDb250 YWluZXIgKmRhdGEgPSBqc29udmFsLT52YWwuYmluYXJ5LmRhdGE7CisKKwlBc3NlcnQoanNvbnZh bC0+dHlwZSA9PSBqYnZCaW5hcnkpOworCisJc3RyID0gZmluZF9zdHJpbmdfaW5fanNvbmJjb250 YWluZXIoZGF0YSwgInNjaGVtYW5hbWUiLCB0cnVlLCBOVUxMKTsKKwlpZiAoc3RyKQorCXsKKwkJ YXBwZW5kU3RyaW5nSW5mbyhidWYsICIlcy4iLCBxdW90ZV9pZGVudGlmaWVyKHN0cikpOworCQlw ZnJlZShzdHIpOworCX0KKworCXN0ciA9IGZpbmRfc3RyaW5nX2luX2pzb25iY29udGFpbmVyKGRh dGEsICJvYmpuYW1lIiwgZmFsc2UsIE5VTEwpOworCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXMi LCBxdW90ZV9pZGVudGlmaWVyKHN0cikpOworCXBmcmVlKHN0cik7CisKKwlzdHIgPSBmaW5kX3N0 cmluZ19pbl9qc29uYmNvbnRhaW5lcihkYXRhLCAiYXR0cm5hbWUiLCB0cnVlLCBOVUxMKTsKKwlp ZiAoc3RyKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIuJXMiLCBxdW90ZV9pZGVudGlm aWVyKHN0cikpOworCQlwZnJlZShzdHIpOworCX0KK30KKworLyoKKyAqIEV4cGFuZCBhIEpTT04g dmFsdWUgYXMgYSB0eXBlIG5hbWUuCisgKi8KK3N0YXRpYyB2b2lkCitleHBhbmRfanNvbnZhbF90 eXBlbmFtZShTdHJpbmdJbmZvIGJ1ZiwgSnNvbmJWYWx1ZSAqanNvbnZhbCkKK3sKKwljaGFyCSAg ICpzY2hlbWEgPSBOVUxMOworCWNoYXIJICAgKnR5cGVuYW1lID0gTlVMTDsKKwljaGFyCSAgICp0 eXBtb2RzdHIgPSBOVUxMOworCWpzb25fdHJpdmFsdWUgaXNfYXJyYXk7CisJY2hhcgkgICAqYXJy YXlfZGVjb3I7CisJSnNvbmJDb250YWluZXIgKmRhdGEgPSBqc29udmFsLT52YWwuYmluYXJ5LmRh dGE7CisKKwkvKgorCSAqIFdlIG9taXQgc2NoZW1hLXF1YWxpZnlpbmcgdGhlIG91dHB1dCBuYW1l IGlmIHRoZSBzY2hlbWEgZWxlbWVudCBpcworCSAqIGVpdGhlciB0aGUgZW1wdHkgc3RyaW5nIG9y IE5VTEw7IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhvc2UgdHdvIGNhc2VzCisJICogaXMgdGhh dCBpbiB0aGUgbGF0dGVyIHdlIHF1b3RlIHRoZSB0eXBlIG5hbWUsIGluIHRoZSBmb3JtZXIgd2Ug ZG9uJ3QuCisJICogVGhpcyBhbGxvd3MgZm9yIHR5cGVzIHdpdGggc3BlY2lhbCB0eXBtb2QgbmVl ZHMsIHN1Y2ggYXMgaW50ZXJ2YWwgYW5kCisJICogdGltZXN0YW1wIChzZWUgZm9ybWF0X3R5cGVf ZGV0YWlsZWQpLCB3aGlsZSBhdCB0aGUgc2FtZSB0aW1lIGFsbG93aW5nCisJICogZm9yIHRoZSBz Y2hlbWEgbmFtZSB0byBiZSBvbWl0dGVkIGZyb20gdHlwZSBuYW1lcyB0aGF0IHJlcXVpcmUgcXVv dGVzCisJICogYnV0IGFyZSB0byBiZSBvYnRhaW5lZCBmcm9tIGEgdXNlciBzY2hlbWEuCisJICov CisKKwlzY2hlbWEgPSBmaW5kX3N0cmluZ19pbl9qc29uYmNvbnRhaW5lcihkYXRhLCAic2NoZW1h bmFtZSIsIHRydWUsIE5VTEwpOworCXR5cGVuYW1lID0gZmluZF9zdHJpbmdfaW5fanNvbmJjb250 YWluZXIoZGF0YSwgInR5cGVuYW1lIiwgZmFsc2UsIE5VTEwpOworCXR5cG1vZHN0ciA9IGZpbmRf c3RyaW5nX2luX2pzb25iY29udGFpbmVyKGRhdGEsICJ0eXBtb2QiLCB0cnVlLCBOVUxMKTsKKwlp c19hcnJheSA9IGZpbmRfYm9vbF9pbl9qc29uYmNvbnRhaW5lcihkYXRhLCAidHlwYXJyYXkiKTsK Kwlzd2l0Y2ggKGlzX2FycmF5KQorCXsKKwkJY2FzZSB0dl90cnVlOgorCQkJYXJyYXlfZGVjb3Ig PSAiW10iOworCQkJYnJlYWs7CisKKwkJY2FzZSB0dl9mYWxzZToKKwkJCWFycmF5X2RlY29yID0g IiI7CisJCQlicmVhazsKKworCQljYXNlIHR2X2Fic2VudDoKKwkJZGVmYXVsdDoKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSks CisJCQkJCWVycm1zZygibWlzc2luZyB0eXBhcnJheSBlbGVtZW50IikpOworCX0KKworCWlmIChz Y2hlbWEgPT0gTlVMTCkKKwkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIlcyIsIHF1b3RlX2lkZW50 aWZpZXIodHlwZW5hbWUpKTsKKwllbHNlIGlmIChzY2hlbWFbMF0gPT0gJ1wwJykKKwkJYXBwZW5k U3RyaW5nSW5mbyhidWYsICIlcyIsIHR5cGVuYW1lKTsJLyogU3BlY2lhbCB0eXBtb2QgbmVlZHMg Ki8KKwllbHNlCisJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXMuJXMiLCBxdW90ZV9pZGVudGlm aWVyKHNjaGVtYSksCisJCQkJCQkgcXVvdGVfaWRlbnRpZmllcih0eXBlbmFtZSkpOworCisJYXBw ZW5kU3RyaW5nSW5mbyhidWYsICIlcyVzIiwgdHlwbW9kc3RyID8gdHlwbW9kc3RyIDogIiIsIGFy cmF5X2RlY29yKTsKKworCWlmIChzY2hlbWEpCisJCXBmcmVlKHNjaGVtYSk7CisJaWYgKHR5cGVu YW1lKQorCQlwZnJlZSh0eXBlbmFtZSk7CisJaWYgKHR5cG1vZHN0cikKKwkJcGZyZWUodHlwbW9k c3RyKTsKK30KKworLyoKKyAqIEV4cGFuZCBhIEpTT04gdmFsdWUgYXMgYSBzdHJpbmcuICBUaGUg dmFsdWUgbXVzdCBiZSBvZiB0eXBlIHN0cmluZyBvciBvZgorICogdHlwZSBCaW5hcnkuICBJbiB0 aGUgbGF0dGVyIGNhc2UsIGl0IG11c3QgY29udGFpbiBhICJmbXQiIGVsZW1lbnQgd2hpY2ggd2ls bAorICogYmUgcmVjdXJzaXZlbHkgZXhwYW5kZWQ7IGFsc28sIGlmIHRoZSBvYmplY3QgY29udGFp bnMgYW4gZWxlbWVudCAicHJlc2VudCIKKyAqIGFuZCBpdCBpcyBzZXQgdG8gZmFsc2UsIHRoZSBl eHBhbnNpb24gaXMgdGhlIGVtcHR5IHN0cmluZy4KKyAqCisgKiBSZXR1cm5zIGZhbHNlIGlmIG5v IGFjdHVhbCBleHBhbnNpb24gd2FzIG1hZGUgZHVlIHRvIHRoZSAicHJlc2VudCIgZmxhZworICog YmVpbmcgc2V0IHRvICJmYWxzZSIuCisgKgorICogVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSB0 byBjaGVjayBqc29udmFsIGlzIG9mIHR5cGUgamJ2U3RyaW5nIG9yIGpidkJpbmFyeS4KKyAqLwor c3RhdGljIGJvb2wKK2V4cGFuZF9qc29udmFsX3N0cmluZyhTdHJpbmdJbmZvIGJ1ZiwgSnNvbmJW YWx1ZSAqanNvbnZhbCkKK3sKKwlib29sIGV4cGFuZGVkID0gZmFsc2U7CisKKwlBc3NlcnQoKGpz b252YWwtPnR5cGUgPT0gamJ2U3RyaW5nKSB8fCAoanNvbnZhbC0+dHlwZSA9PSBqYnZCaW5hcnkp KTsKKworCWlmIChqc29udmFsLT50eXBlID09IGpidlN0cmluZykKKwl7CisJCWFwcGVuZEJpbmFy eVN0cmluZ0luZm8oYnVmLCBqc29udmFsLT52YWwuc3RyaW5nLnZhbCwKKwkJCQkJCQkgICBqc29u dmFsLT52YWwuc3RyaW5nLmxlbik7CisJCWV4cGFuZGVkID0gdHJ1ZTsKKwl9CisJZWxzZSBpZiAo anNvbnZhbC0+dHlwZSA9PSBqYnZCaW5hcnkpCisJeworCQlqc29uX3RyaXZhbHVlIHByZXNlbnQ7 CisKKwkJcHJlc2VudCA9IGZpbmRfYm9vbF9pbl9qc29uYmNvbnRhaW5lcihqc29udmFsLT52YWwu YmluYXJ5LmRhdGEsCisJCQkJCQkJCQkJCSAgInByZXNlbnQiKTsKKworCQkvKgorCQkgKiBJZiAi cHJlc2VudCIgaXMgc2V0IHRvIGZhbHNlLCB0aGlzIGVsZW1lbnQgZXhwYW5kcyB0byBlbXB0eTsK KwkJICogb3RoZXJ3aXNlIChlaXRoZXIgdHJ1ZSBvciBhYnNlbnQpLCBleHBhbmQgImZtdCIuCisJ CSAqLworCQlpZiAocHJlc2VudCAhPSB0dl9mYWxzZSkKKwkJeworCQkJZXhwYW5kX2ZtdF9yZWN1 cnNpdmUoYnVmLCBqc29udmFsLT52YWwuYmluYXJ5LmRhdGEpOworCQkJZXhwYW5kZWQgPSB0cnVl OworCQl9CisJfQorCisJcmV0dXJuIGV4cGFuZGVkOworfQorCisvKgorICogRXhwYW5kIGEgSlNP TiB2YWx1ZSBhcyBhIHN0cmluZyBsaXRlcmFsLgorICovCitzdGF0aWMgdm9pZAorZXhwYW5kX2pz b252YWxfc3RybGl0KFN0cmluZ0luZm8gYnVmLCBKc29uYlZhbHVlICpqc29udmFsKQoreworCWNo YXIJICAgKnN0cjsKKwlTdHJpbmdJbmZvRGF0YSBkcWRlbGltOworCXN0YXRpYyBjb25zdCBjaGFy IGRxc3VmZml4ZXNbXSA9ICJfWFlaWllYXyI7CisJaW50CQkJZHFuZXh0Y2hhciA9IDA7CisKKwlB c3NlcnQoanNvbnZhbC0+dHlwZSA9PSBqYnZTdHJpbmcpOworCisJc3RyID0gcG5zdHJkdXAoanNv bnZhbC0+dmFsLnN0cmluZy52YWwsIGpzb252YWwtPnZhbC5zdHJpbmcubGVuKTsKKworCS8qIEVh c3kgY2FzZTogaWYgdGhlcmUgYXJlIG5vICcgYW5kIG5vIFwsIGp1c3QgdXNlIGEgc2luZ2xlIHF1 b3RlICovCisJaWYgKHN0cnBicmsoc3RyLCAiXCdcXCIpID09IE5VTEwpCisJeworCQlhcHBlbmRT dHJpbmdJbmZvKGJ1ZiwgIiclcyciLCBzdHIpOworCQlwZnJlZShzdHIpOworCQlyZXR1cm47CisJ fQorCisJLyogT3RoZXJ3aXNlIG5lZWQgdG8gZmluZCBhIHVzZWZ1bCBkb2xsYXItcXVvdGUgZGVs aW1pdGVyICovCisJaW5pdFN0cmluZ0luZm8oJmRxZGVsaW0pOworCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoJmRxZGVsaW0sICIkIik7CisJd2hpbGUgKHN0cnN0cihzdHIsIGRxZGVsaW0uZGF0YSkg IT0gTlVMTCkKKwl7CisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZkcWRlbGltLCBkcXN1ZmZpeGVz W2RxbmV4dGNoYXIrK10pOworCQlkcW5leHRjaGFyID0gZHFuZXh0Y2hhciAlIChzaXplb2YoZHFz dWZmaXhlcykgLSAxKTsKKwl9CisJLyogQWRkIHRyYWlsaW5nICQgKi8KKwlhcHBlbmRTdHJpbmdJ bmZvQ2hhcigmZHFkZWxpbSwgJyQnKTsKKworCS8qIEFuZCBmaW5hbGx5IHByb2R1Y2UgdGhlIHF1 b3RlZCBsaXRlcmFsIGludG8gdGhlIG91dHB1dCBTdHJpbmdJbmZvICovCisJYXBwZW5kU3RyaW5n SW5mbyhidWYsICIlcyVzJXMiLCBkcWRlbGltLmRhdGEsIHN0ciwgZHFkZWxpbS5kYXRhKTsKKwlw ZnJlZShkcWRlbGltLmRhdGEpOworCXBmcmVlKHN0cik7Cit9CisKKy8qCisgKiBFeHBhbmQgYSBK U09OIHZhbHVlIGFzIGFuIGludGVnZXIgcXVhbnRpdHkuCisgKi8KK3N0YXRpYyB2b2lkCitleHBh bmRfanNvbnZhbF9udW1iZXIoU3RyaW5nSW5mbyBidWYsIEpzb25iVmFsdWUgKmpzb252YWwpCit7 CisJY2hhcgkgICAqc3RyZGF0dW07CisKKwlBc3NlcnQoanNvbnZhbC0+dHlwZSA9PSBqYnZOdW1l cmljKTsKKworCXN0cmRhdHVtID0gRGF0dW1HZXRDU3RyaW5nKERpcmVjdEZ1bmN0aW9uQ2FsbDEo bnVtZXJpY19vdXQsCisJCQkJCQkJCQkJCQkgICBOdW1lcmljR2V0RGF0dW0oanNvbnZhbC0+dmFs Lm51bWVyaWMpKSk7CisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIHN0cmRhdHVtKTsKKwlw ZnJlZShzdHJkYXR1bSk7Cit9CisKKy8qCisgKiBFeHBhbmQgb25lIEpTT04gZWxlbWVudCBpbnRv IHRoZSBvdXRwdXQgU3RyaW5nSW5mbyBhY2NvcmRpbmcgdG8gdGhlCisgKiBjb252ZXJzaW9uIHNw ZWNpZmllci4gIFRoZSBlbGVtZW50IHR5cGUgaXMgdmFsaWRhdGVkLCBhbmQgYW4gZXJyb3IgaXMg cmFpc2VkCisgKiBpZiBpdCBkb2Vzbid0IG1hdGNoIHdoYXQgd2UgZXhwZWN0IGZvciB0aGUgY29u dmVyc2lvbiBzcGVjaWZpZXIuCisgKgorICogUmV0dXJucyB0cnVlLCBleGNlcHQgZm9yIHRoZSBm b3JtYXR0ZWQgc3RyaW5nIGNhc2UgaWYgbm8gYWN0dWFsIGV4cGFuc2lvbgorICogd2FzIG1hZGUg KGR1ZSB0byB0aGUgInByZXNlbnQiIGZsYWcgYmVpbmcgc2V0IHRvICJmYWxzZSIpLgorICovCitz dGF0aWMgYm9vbAorZXhwYW5kX29uZV9qc29uYl9lbGVtZW50KFN0cmluZ0luZm8gYnVmLCBjaGFy ICpwYXJhbSwgSnNvbmJWYWx1ZSAqanNvbnZhbCwKKwkJCQkJCSBjb252U3BlY2lmaWVyIHNwZWNp ZmllciwgY29uc3QgY2hhciAqZm10KQoreworCWJvb2wJCXN0cmluZ19leHBhbmRlZCA9IHRydWU7 CisJRXJyb3JDb250ZXh0Q2FsbGJhY2sgc3FsZXJyY29udGV4dDsKKworCS8qIElmIHdlIHdlcmUg Z2l2ZW4gYSBmb3JtYXQgc3RyaW5nLCBzZXR1cCBhbiBlcmVwb3J0KCkgY29udGV4dCBjYWxsYmFj ayAqLworCWlmIChmbXQpCisJeworCQlzcWxlcnJjb250ZXh0LmNhbGxiYWNrID0gZm10c3RyX2Vy cm9yX2NhbGxiYWNrOworCQlzcWxlcnJjb250ZXh0LmFyZyA9ICh2b2lkICopIGZtdDsKKwkJc3Fs ZXJyY29udGV4dC5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CisJCWVycm9yX2NvbnRl eHRfc3RhY2sgPSAmc3FsZXJyY29udGV4dDsKKwl9CisKKwlpZiAoIWpzb252YWwpCisJCWVyZXBv cnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwK KwkJCQllcnJtc2coImVsZW1lbnQgXCIlc1wiIG5vdCBmb3VuZCIsIHBhcmFtKSk7CisKKwlzd2l0 Y2ggKHNwZWNpZmllcikKKwl7CisJCWNhc2UgU3BlY0lkZW50aWZpZXI6CisJCQlpZiAoanNvbnZh bC0+dHlwZSAhPSBqYnZTdHJpbmcpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUo RVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQllcnJtc2coImV4cGVjdGVk IEpTT04gc3RyaW5nIGZvciAlJUkgZWxlbWVudCBcIiVzXCIsIGdvdCAlZCIsCisJCQkJCQkJICAg cGFyYW0sIGpzb252YWwtPnR5cGUpKTsKKwkJCWV4cGFuZF9qc29udmFsX2lkZW50aWZpZXIoYnVm LCBqc29udmFsKTsKKwkJCWJyZWFrOworCisJCWNhc2UgU3BlY0RvdHRlZE5hbWU6CisJCQlpZiAo anNvbnZhbC0+dHlwZSAhPSBqYnZCaW5hcnkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQllcnJtc2coImV4 cGVjdGVkIEpTT04gc3RydWN0IGZvciAlJUQgZWxlbWVudCBcIiVzXCIsIGdvdCAlZCIsCisJCQkJ CQkJICAgcGFyYW0sIGpzb252YWwtPnR5cGUpKTsKKwkJCWV4cGFuZF9qc29udmFsX2RvdHRlZG5h bWUoYnVmLCBqc29udmFsKTsKKwkJCWJyZWFrOworCisJCWNhc2UgU3BlY1N0cmluZzoKKwkJCWlm IChqc29udmFsLT50eXBlICE9IGpidlN0cmluZyAmJgorCQkJCWpzb252YWwtPnR5cGUgIT0gamJ2 QmluYXJ5KQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJZXJybXNnKCJleHBlY3RlZCBKU09OIHN0cmluZyBv ciBzdHJ1Y3QgZm9yICUlcyBlbGVtZW50IFwiJXNcIiwgZ290ICVkIiwKKwkJCQkJCQkgICBwYXJh bSwganNvbnZhbC0+dHlwZSkpOworCQkJc3RyaW5nX2V4cGFuZGVkID0gZXhwYW5kX2pzb252YWxf c3RyaW5nKGJ1ZiwganNvbnZhbCk7CisJCQlicmVhazsKKworCQljYXNlIFNwZWNTdHJpbmdMaXRl cmFsOgorCQkJaWYgKGpzb252YWwtPnR5cGUgIT0gamJ2U3RyaW5nKQorCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJ CQkJZXJybXNnKCJleHBlY3RlZCBKU09OIHN0cmluZyBmb3IgJSVMIGVsZW1lbnQgXCIlc1wiLCBn b3QgJWQiLAorCQkJCQkJCSAgIHBhcmFtLCBqc29udmFsLT50eXBlKSk7CisJCQlleHBhbmRfanNv bnZhbF9zdHJsaXQoYnVmLCBqc29udmFsKTsKKwkJCWJyZWFrOworCisJCWNhc2UgU3BlY1R5cGVO YW1lOgorCQkJaWYgKGpzb252YWwtPnR5cGUgIT0gamJ2QmluYXJ5KQorCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJ CQkJZXJybXNnKCJleHBlY3RlZCBKU09OIHN0cnVjdCBmb3IgJSVUIGVsZW1lbnQgXCIlc1wiLCBn b3QgJWQiLAorCQkJCQkJCSAgIHBhcmFtLCBqc29udmFsLT50eXBlKSk7CisJCQlleHBhbmRfanNv bnZhbF90eXBlbmFtZShidWYsIGpzb252YWwpOworCQkJYnJlYWs7CisKKwkJY2FzZSBTcGVjTnVt YmVyOgorCQkJaWYgKGpzb252YWwtPnR5cGUgIT0gamJ2TnVtZXJpYykKKwkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJ CQkJCWVycm1zZygiZXhwZWN0ZWQgSlNPTiBudW1lcmljIGZvciAlJW4gZWxlbWVudCBcIiVzXCIs IGdvdCAlZCIsCisJCQkJCQkJICAgcGFyYW0sIGpzb252YWwtPnR5cGUpKTsKKwkJCWV4cGFuZF9q c29udmFsX251bWJlcihidWYsIGpzb252YWwpOworCQkJYnJlYWs7CisJfQorCisJaWYgKGZtdCkK KwkJZXJyb3JfY29udGV4dF9zdGFjayA9IHNxbGVycmNvbnRleHQucHJldmlvdXM7CisKKwlyZXR1 cm4gc3RyaW5nX2V4cGFuZGVkOworfQorCisvKgorICogSXRlcmF0ZSBvbiB0aGUgZWxlbWVudHMg b2YgYSBKU09OIGFycmF5LCBleHBhbmRpbmcgZWFjaCBvbmUgaW50byB0aGUgb3V0cHV0CisgKiBT dHJpbmdJbmZvIHBlciB0aGUgZ2l2ZW4gY29udmVyc2lvbiBzcGVjaWZpZXIsIHNlcGFyYXRlZCBi eSB0aGUgZ2l2ZW4KKyAqIHNlcGFyYXRvci4KKyAqLworc3RhdGljIHZvaWQKK2V4cGFuZF9qc29u Yl9hcnJheShTdHJpbmdJbmZvIGJ1ZiwgY2hhciAqcGFyYW0sCisJCQkJICAgSnNvbmJWYWx1ZSAq anNvbmFyciwgY2hhciAqYXJyYXlzZXAsIGNvbnZTcGVjaWZpZXIgc3BlY2lmaWVyLAorCQkJCSAg IGNvbnN0IGNoYXIgKmZtdCkKK3sKKwlFcnJvckNvbnRleHRDYWxsYmFjayBzcWxlcnJjb250ZXh0 OworCUpzb25iQ29udGFpbmVyICpjb250YWluZXI7CisJSnNvbmJJdGVyYXRvciAqaXQ7CisJSnNv bmJWYWx1ZQl2OworCWludAkJCXR5cGU7CisJYm9vbAkJZmlyc3QgPSB0cnVlOworCVN0cmluZ0lu Zm9EYXRhIGFycmF5ZWxlbTsKKworCS8qIElmIHdlIHdlcmUgZ2l2ZW4gYSBmb3JtYXQgc3RyaW5n LCBzZXR1cCBhbiBlcmVwb3J0KCkgY29udGV4dCBjYWxsYmFjayAqLworCWlmIChmbXQpCisJewor CQlzcWxlcnJjb250ZXh0LmNhbGxiYWNrID0gZm10c3RyX2Vycm9yX2NhbGxiYWNrOworCQlzcWxl cnJjb250ZXh0LmFyZyA9ICh2b2lkICopIGZtdDsKKwkJc3FsZXJyY29udGV4dC5wcmV2aW91cyA9 IGVycm9yX2NvbnRleHRfc3RhY2s7CisJCWVycm9yX2NvbnRleHRfc3RhY2sgPSAmc3FsZXJyY29u dGV4dDsKKwl9CisKKwlpZiAoIWpzb25hcnIpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQllcnJtc2coImVsZW1lbnQg XCIlc1wiIG5vdCBmb3VuZCIsIHBhcmFtKSk7CisKKwlpZiAoanNvbmFyci0+dHlwZSAhPSBqYnZC aW5hcnkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFS QU1FVEVSX1ZBTFVFKSwKKwkJCQllcnJtc2coImVsZW1lbnQgXCIlc1wiIGlzIG5vdCBhIEpTT04g YXJyYXkiLCBwYXJhbSkpOworCisJY29udGFpbmVyID0ganNvbmFyci0+dmFsLmJpbmFyeS5kYXRh OworCWlmICghSnNvbkNvbnRhaW5lcklzQXJyYXkoY29udGFpbmVyKSkKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCWVy cm1zZygiZWxlbWVudCBcIiVzXCIgaXMgbm90IGEgSlNPTiBhcnJheSIsIHBhcmFtKSk7CisKKwlp bml0U3RyaW5nSW5mbygmYXJyYXllbGVtKTsKKworCWl0ID0gSnNvbmJJdGVyYXRvckluaXQoY29u dGFpbmVyKTsKKwl3aGlsZSAoKHR5cGUgPSBKc29uYkl0ZXJhdG9yTmV4dCgmaXQsICZ2LCB0cnVl KSkgIT0gV0pCX0RPTkUpCisJeworCQlpZiAodHlwZSA9PSBXSkJfRUxFTSkKKwkJeworCQkJcmVz ZXRTdHJpbmdJbmZvKCZhcnJheWVsZW0pOworCisJCQlpZiAoZXhwYW5kX29uZV9qc29uYl9lbGVt ZW50KCZhcnJheWVsZW0sIHBhcmFtLCAmdiwgc3BlY2lmaWVyLCBOVUxMKSkKKwkJCXsKKwkJCQlp ZiAoIWZpcnN0KQorCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgYXJyYXlzZXApOwor CisJCQkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbyhidWYsIGFycmF5ZWxlbS5kYXRhLCBhcnJheWVs ZW0ubGVuKTsKKwkJCQlmaXJzdCA9IGZhbHNlOworCQkJfQorCQl9CisJfQorCisJaWYgKGZtdCkK KwkJZXJyb3JfY29udGV4dF9zdGFjayA9IHNxbGVycmNvbnRleHQucHJldmlvdXM7Cit9CisKKy8q CisgKiBXb3JraG9yc2UgZm9yIGRkbF9kZXBhcnNlX2V4cGFuZF9jb21tYW5kLgorICovCitjaGFy ICoKK2RlcGFyc2VfZGRsX2pzb25fdG9fc3RyaW5nKGNoYXIgKmpzb25fc3RyKQoreworCURhdHVt CQlkOworCUpzb25iCSAgICpqc29uYjsKKwlTdHJpbmdJbmZvCWJ1ZiA9IChTdHJpbmdJbmZvKSBw YWxsb2MwKHNpemVvZihTdHJpbmdJbmZvRGF0YSkpOworCisJaW5pdFN0cmluZ0luZm8oYnVmKTsK KworCWQgPSBEaXJlY3RGdW5jdGlvbkNhbGwxKGpzb25iX2luLCBQb2ludGVyR2V0RGF0dW0oanNv bl9zdHIpKTsKKwlqc29uYiA9IChKc29uYiAqKSBEYXR1bUdldFBvaW50ZXIoZCk7CisKKwlleHBh bmRfZm10X3JlY3Vyc2l2ZShidWYsICZqc29uYi0+cm9vdCk7CisKKwlyZXR1cm4gYnVmLT5kYXRh OworfQorCisvKi0tLS0tLQorICogUmV0dXJucyBhIGZvcm1hdHRlZCBzdHJpbmcgZnJvbSBhIEpT T04gb2JqZWN0LgorICoKKyAqIFRoZSBzdGFydGluZyBwb2ludCBpcyB0aGUgZWxlbWVudCBuYW1l ZCAiZm10IiAod2hpY2ggbXVzdCBiZSBhIHN0cmluZykuCisgKiBUaGlzIGZvcm1hdCBzdHJpbmcg bWF5IGNvbnRhaW4gemVybyBvciBtb3JlICUtZXNjYXBlcywgd2hpY2ggY29uc2lzdCBvZiBhbgor ICogZWxlbWVudCBuYW1lIGVuY2xvc2VkIGluIHsgfSwgcG9zc2libHkgZm9sbG93ZWQgYnkgYSBj b252ZXJzaW9uIG1vZGlmaWVyLAorICogZm9sbG93ZWQgYnkgYSBjb252ZXJzaW9uIHNwZWNpZmll ci4gIFBvc3NpYmxlIGNvbnZlcnNpb24gc3BlY2lmaWVycyBhcmU6CisgKgorICogJQkJZXhwYW5k IHRvIGEgbGl0ZXJhbCAlCisgKiBJCQlleHBhbmQgYXMgYSBzaW5nbGUsIG5vbi1xdWFsaWZpZWQg aWRlbnRpZmllcgorICogRAkJZXhwYW5kIGFzIGEgcG9zc2libHktcXVhbGlmaWVkIGlkZW50aWZp ZXIKKyAqIFQJCWV4cGFuZCBhcyBhIHR5cGUgbmFtZQorICogTAkJZXhwYW5kIGFzIGEgc3RyaW5n IGxpdGVyYWwgKHF1b3RlIHVzaW5nIHNpbmdsZSBxdW90ZXMpCisgKiBzCQlleHBhbmQgYXMgYSBz aW1wbGUgc3RyaW5nIChubyBxdW90aW5nKQorICogbgkJZXhwYW5kIGFzIGEgc2ltcGxlIG51bWJl ciAobm8gcXVvdGluZykKKyAqCisgKiBUaGUgZWxlbWVudCBuYW1lIG1heSBoYXZlIGFuIG9wdGlv bmFsIHNlcGFyYXRvciBzcGVjaWZpY2F0aW9uIHByZWNlZGVkCisgKiBieSBhIGNvbG9uLiAgSXRz IHByZXNlbmNlIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IGlzIGV4cGVjdGVkIHRvIGJlCisg KiBhbiBhcnJheTsgdGhlIHNwZWNpZmllZCBzZXBhcmF0b3IgaXMgdXNlZCB0byBqb2luIHRoZSBh cnJheSBlbGVtZW50cy4KKyAqCisgKiBUaGUgYWN0dWFsIGNvbnZlcnNpb24gb2Ygc2luZ2xlIEpT T04gZWxlbWVudCBpbnRvIHN0cmluZyBhY2NvcmRpbmcgdG8KKyAqIGFib3ZlIGNvbnZlcnNpb24g c3BlY2lmaWVycyB0YWtlcyBwbGFjZSBpbiBleHBhbmRfb25lX2pzb25iX2VsZW1lbnQoKQorICot LS0tLS0KKyAqLworRGF0dW0KK2RkbF9kZXBhcnNlX2V4cGFuZF9jb21tYW5kKFBHX0ZVTkNUSU9O X0FSR1MpCit7CisJdGV4dAkgICAqanNvbiA9IFBHX0dFVEFSR19URVhUX1AoMCk7CisJY2hhcgkg ICAqanNvbl9zdHI7CisKKwlqc29uX3N0ciA9IHRleHRfdG9fY3N0cmluZyhqc29uKTsKKworCVBH X1JFVFVSTl9URVhUX1AoY3N0cmluZ190b190ZXh0KGRlcGFyc2VfZGRsX2pzb25fdG9fc3RyaW5n KGpzb25fc3RyKSkpOworfQorCisvKgorICogRXJyb3IgY29udGV4dCBjYWxsYmFjayBmb3IgSlNP TiBmb3JtYXQgc3RyaW5nIGV4cGFuc2lvbi4KKyAqCisgKiBYWFg6IGluZGljYXRlIHdoaWNoIGVs ZW1lbnQgd2UncmUgZXhwYW5kaW5nLCBpZiBhcHBsaWNhYmxlLgorICovCitzdGF0aWMgdm9pZAor Zm10c3RyX2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykKK3sKKwllcnJjb250ZXh0KCJ3aGlsZSBl eHBhbmRpbmcgZm9ybWF0IHN0cmluZyBcIiVzXCIiLCAoY2hhciAqKSBhcmcpOworfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCmluZGV4IGQ0YjAwZDFhODIuLjRkNDhlNDkwZWQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfZnVuYy5oIgogI2luY2x1 ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInRjb3AvZGRsZGVwYXJzZS5oIgogI2luY2x1ZGUgInRj b3AvZGVwYXJzZV91dGlsaXR5LmgiCiAjaW5jbHVkZSAidGNvcC91dGlsaXR5LmgiCiAjaW5jbHVk ZSAidXRpbHMvYWNsLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5i dWlsZCBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxkCmluZGV4IDQyY2NlZDllYmUu Ljk1MzllNTNiYWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxk CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxkCkBAIC0xNyw2ICsxNyw4IEBA IGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAgJ2NvcHl0by5jJywKICAgJ2NyZWF0ZWFzLmMn LAogICAnZGJjb21tYW5kcy5jJywKKyAgJ2RkbGRlcGFyc2UuYycsCisgICdkZGxqc29uLmMnLAog ICAnZGVmaW5lLmMnLAogICAnZGlzY2FyZC5jJywKICAgJ2Ryb3BjbWRzLmMnLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3NlcXVlbmNlLmMKaW5kZXggZWYwMTQ0OTY3OC4uNGJiNzMxZDVmZiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9z ZXF1ZW5jZS5jCkBAIC0xNzA3LDYgKzE3MDcsNDkgQEAgcHJvY2Vzc19vd25lZF9ieShSZWxhdGlv biBzZXFyZWwsIExpc3QgKm93bmVkX2J5LCBib29sIGZvcl9pZGVudGl0eSkKIAkJcmVsYXRpb25f Y2xvc2UodGFibGVyZWwsIE5vTG9jayk7CiB9CiAKKy8qCisgKiBSZXR1cm4gc2VxdWVuY2UgcGFy YW1ldGVycywgZGV0YWlsZWQKKyAqLworU2VxdWVuY2VfdmFsdWVzICoKK2dldF9zZXF1ZW5jZV92 YWx1ZXMoT2lkIHNlcXVlbmNlSWQpCit7CisJQnVmZmVyICAgICAgYnVmOworCVNlcVRhYmxlICAg IGVsbTsKKwlSZWxhdGlvbiAgICBzZXFyZWw7CisJSGVhcFR1cGxlCXNlcXR1cGxlOworCUhlYXBU dXBsZURhdGEgc2VxdHVwbGVkYXRhOworCUZvcm1fcGdfc2VxdWVuY2Ugc2VxZm9ybTsKKwlGb3Jt X3BnX3NlcXVlbmNlX2RhdGEgc2VxOworCVNlcXVlbmNlX3ZhbHVlcyAqc2VxdmFsdWVzOworCisJ c2VxdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoU0VRUkVMSUQsIHNlcXVlbmNlSWQpOworCWlmICgh SGVhcFR1cGxlSXNWYWxpZChzZXF0dXBsZSkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAg ZmFpbGVkIGZvciBzZXF1ZW5jZSAldSIsIHNlcXVlbmNlSWQpOworCXNlcWZvcm0gPSAoRm9ybV9w Z19zZXF1ZW5jZSkgR0VUU1RSVUNUKHNlcXR1cGxlKTsKKworCVJlbGVhc2VTeXNDYWNoZShzZXF0 dXBsZSk7CisKKwkvKiBPcGVuIGFuZCBsb2NrIHNlcXVlbmNlICovCisJaW5pdF9zZXF1ZW5jZShz ZXF1ZW5jZUlkLCAmZWxtLCAmc2VxcmVsKTsKKworCWlmIChwZ19jbGFzc19hY2xjaGVjayhzZXF1 ZW5jZUlkLCBHZXRVc2VySWQoKSwKKwkJQUNMX1NFTEVDVCB8IEFDTF9VU0FHRSkgIT0gQUNMQ0hF Q0tfT0spCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVO VF9QUklWSUxFR0UpLAorCQkJCWVycm1zZygicGVybWlzc2lvbiBkZW5pZWQgZm9yIHNlcXVlbmNl ICVzIiwKKwkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoc2VxcmVsKSkpOworCisJc2Vx ID0gcmVhZF9zZXFfdHVwbGUoc2VxcmVsLCAmYnVmLCAmc2VxdHVwbGVkYXRhKTsKKworCXNlcXZh bHVlcyA9IChTZXF1ZW5jZV92YWx1ZXMgKikgcGFsbG9jKHNpemVvZihTZXF1ZW5jZV92YWx1ZXMp KTsKKwlzZXF2YWx1ZXMtPmxhc3RfdmFsdWUgPSBzZXEtPmxhc3RfdmFsdWU7CisJc2VxdmFsdWVz LT5zZXFmb3JtID0gc2VxZm9ybTsKKworCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmKTsKKwlyZWxh dGlvbl9jbG9zZShzZXFyZWwsIE5vTG9jayk7CisKKwlyZXR1cm4gc2VxdmFsdWVzOworfQogCiAv KgogICogUmV0dXJuIHNlcXVlbmNlIHBhcmFtZXRlcnMgaW4gYSBsaXN0IG9mIHRoZSBmb3JtIGNy ZWF0ZWQgYnkgdGhlIHBhcnNlci4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Rh YmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggNGQ0OWQ3 MGMzMy4uYzE1ZTk0M2YxZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTYwMCw3ICs2 MDAsNiBAQCBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNTZXRDb21wcmVzc2lvbihSZWxhdGlv biByZWwsCiAJCQkJCQkJCQkJICBjb25zdCBjaGFyICpjb2x1bW4sIE5vZGUgKm5ld1ZhbHVlLCBM T0NLTU9ERSBsb2NrbW9kZSk7CiAKIHN0YXRpYyB2b2lkIGluZGV4X2NvcHlfZGF0YShSZWxhdGlv biByZWwsIFJlbEZpbGVMb2NhdG9yIG5ld3Jsb2NhdG9yKTsKLXN0YXRpYyBjb25zdCBjaGFyICpz dG9yYWdlX25hbWUoY2hhciBjKTsKIAogc3RhdGljIHZvaWQgUmFuZ2VWYXJDYWxsYmFja0ZvckRy b3BSZWxhdGlvbihjb25zdCBSYW5nZVZhciAqcmVsLCBPaWQgcmVsT2lkLAogCQkJCQkJCQkJCQlP aWQgb2xkUmVsT2lkLCB2b2lkICphcmcpOwpAQCAtMjI2Niw3ICsyMjY1LDcgQEAgdHJ1bmNhdGVf Y2hlY2tfYWN0aXZpdHkoUmVsYXRpb24gcmVsKQogICogc3RvcmFnZV9uYW1lCiAgKgkgIHJldHVy bnMgdGhlIG5hbWUgY29ycmVzcG9uZGluZyB0byBhIHR5cHN0b3JhZ2UvYXR0c3RvcmFnZSBlbnVt IHZhbHVlCiAgKi8KLXN0YXRpYyBjb25zdCBjaGFyICoKK2NoYXIgKgogc3RvcmFnZV9uYW1lKGNo YXIgYykKIHsKIAlzd2l0Y2ggKGMpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwppbmRleCBk Njc1ODBmYzc3Li43NTM0NTZlY2JjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKQEAg LTEzOTMsNiArMTM5Myw3IEBAIGV4cGFuZFRhYmxlTGlrZUNsYXVzZShSYW5nZVZhciAqaGVhcFJl bCwgVGFibGVMaWtlQ2xhdXNlICp0YWJsZV9saWtlX2NsYXVzZSkKIAkJYXRjbWQtPmNtZHMgPSBh dHN1YmNtZHM7CiAJCWF0Y21kLT5vYmp0eXBlID0gT0JKRUNUX1RBQkxFOwogCQlhdGNtZC0+bWlz c2luZ19vayA9IGZhbHNlOworCQlhdGNtZC0+dGFibGVfbGlrZSA9IHRydWU7CiAJCXJlc3VsdCA9 IGxjb25zKGF0Y21kLCByZXN1bHQpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNv cC91dGlsaXR5LmMgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwppbmRleCAzMGI1MWJmNGQz Li5jMGY3ZjI5NzQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYworKysg Yi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwpAQCAtMjIwNiw2ICsyMjA2LDIzIEBAIFV0aWxp dHlDb250YWluc1F1ZXJ5KE5vZGUgKnBhcnNldHJlZSkKIAl9CiB9CiAKKy8qCisgKiBzdHJpbmdp Znlfb2JqdHlwZQorICogCQlSZXR1cm4gdGhlIGdpdmVuIG9iamVjdCB0eXBlIGFzIGEgc3RyaW5n LgorICovCitjb25zdCBjaGFyICoKK3N0cmluZ2lmeV9vYmp0eXBlKE9iamVjdFR5cGUgb2JqdHlw ZSkKK3sKKwlzd2l0Y2ggKG9ianR5cGUpCisJeworCQljYXNlIE9CSkVDVF9UQUJMRToKKwkJCXJl dHVybiAiVEFCTEUiOworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVuc3VwcG9ydGVkIG9i amVjdCB0eXBlICVkIiwgb2JqdHlwZSk7CisJfQorCisJcmV0dXJuICI/Pz8iOwkJCQkvKiBrZWVw IGNvbXBpbGVyIHF1aWV0ICovCit9CiAKIC8qCiAgKiBBbHRlck9iamVjdFR5cGVDb21tYW5kVGFn CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZm9ybWF0X3R5cGUuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9mb3JtYXRfdHlwZS5jCmluZGV4IDEyNDAyYTA2MzcuLjQzMTgxMjk1 NTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXRfdHlwZS5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXRfdHlwZS5jCkBAIC0yNyw4ICsyNyw2IEBACiAj aW5jbHVkZSAidXRpbHMvbnVtZXJpYy5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAK LXN0YXRpYyBjaGFyICpwcmludFR5cG1vZChjb25zdCBjaGFyICp0eXBuYW1lLCBpbnQzMiB0eXBt b2QsIE9pZCB0eXBtb2RvdXQpOwotCiAKIC8qCiAgKiBTUUwgZnVuY3Rpb246IGZvcm1hdF90eXBl KHR5cGVfb2lkLCB0eXBlbW9kKQpAQCAtMzI5LDYgKzMyNywxMTAgQEAgZm9ybWF0X3R5cGVfZXh0 ZW5kZWQoT2lkIHR5cGVfb2lkLCBpbnQzMiB0eXBlbW9kLCBiaXRzMTYgZmxhZ3MpCiAJcmV0dXJu IGJ1ZjsKIH0KIAorLyoKKyAqIFNpbWlsYXIgdG8gZm9ybWF0X3R5cGVfZXh0ZW5kZWQsIGV4Y2Vw dCB3ZSByZXR1cm4gZWFjaCBiaXQgb2YgaW5mb3JtYXRpb24KKyAqIHNlcGFyYXRlbHk6CisgKgor ICogLSBuc3BpZCBpcyB0aGUgc2NoZW1hIE9JRC4gIEZvciBjZXJ0YWluIFNRTC1zdGFuZGFyZCB0 eXBlcyB3aGljaCBoYXZlIHdlaXJkCisgKiAgIHR5cG1vZCBydWxlcywgd2UgcmV0dXJuIEludmFs aWRPaWQ7IHRoZSBjYWxsZXIgaXMgZXhwZWN0ZWQgdG8gbm90IHNjaGVtYS0KKyAqICAgcXVhbGlm eSB0aGUgbmFtZSBub3IgYWRkIHF1b3RlcyB0byB0aGUgdHlwZSBuYW1lIGluIHRoaXMgY2FzZS4K KyAqCisgKiAtIHR5cG5hbWUgaXMgc2V0IHRvIHRoZSB0eXBlIG5hbWUsIHdpdGhvdXQgcXVvdGVz CisgKgorICogLSB0eXBlbW9kc3RyIGlzIHNldCB0byB0aGUgdHlwZW1vZCwgaWYgYW55LCBhcyBh IHN0cmluZyB3aXRoIHBhcmVudGhlc2VzCisgKgorICogLSB0eXBhcnJheSBpbmRpY2F0ZXMgd2hl dGhlciBbXXMgbXVzdCBiZSBhZGRlZAorICoKKyAqIFdlIGRvbid0IHRyeSB0byBkZWNvZGUgdHlw ZSBuYW1lcyB0byB0aGVpciBzdGFuZGFyZC1tYW5kYXRlZCBuYW1lcywgZXhjZXB0CisgKiBpbiB0 aGUgY2FzZXMgb2YgdHlwZXMgd2l0aCB1bnVzdWFsIHR5cG1vZCBydWxlcy4KKyAqLwordm9pZAor Zm9ybWF0X3R5cGVfZGV0YWlsZWQoT2lkIHR5cGVfb2lkLCBpbnQzMiB0eXBlbW9kLAorCQkJCQkg T2lkICpuc3BpZCwgY2hhciAqKnR5cG5hbWUsIGNoYXIgKip0eXBlbW9kc3RyLAorCQkJCQkgYm9v bCAqdHlwZWFycmF5KQoreworCUhlYXBUdXBsZQl0dXBsZTsKKwlGb3JtX3BnX3R5cGUgdHlwZWZv cm07CisJT2lkCQkJYXJyYXlfYmFzZV90eXBlOworCisJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEo VFlQRU9JRCwgT2JqZWN0SWRHZXREYXR1bSh0eXBlX29pZCkpOworCWlmICghSGVhcFR1cGxlSXNW YWxpZCh0dXBsZSkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciB0eXBl IHdpdGggT0lEICV1IiwgdHlwZV9vaWQpOworCisJdHlwZWZvcm0gPSAoRm9ybV9wZ190eXBlKSBH RVRTVFJVQ1QodHVwbGUpOworCisJLyoKKwkgKiBXZSBzd2l0Y2ggb3VyIGF0dGVudGlvbiB0byB0 aGUgYXJyYXkgZWxlbWVudCB0eXBlIGZvciBjZXJ0YWluIGNhc2VzLgorCSAqIENoZWNrIGlmIGl0 J3MgYSAidHJ1ZSIgYXJyYXkgdHlwZS4gIFBzZXVkby1hcnJheSB0eXBlcyBzdWNoIGFzICJuYW1l IgorCSAqIHNob3VsZG4ndCBnZXQgZGVjb25zdHJ1Y3RlZC4gIEFsc28gY2hlY2sgdGhlIHRvYXN0 IHByb3BlcnR5LCBhbmQgZG9uJ3QKKwkgKiBkZWNvbnN0cnVjdCAicGxhaW4gc3RvcmFnZSIgYXJy YXkgdHlwZXMgLS0tIHRoaXMgaXMgYmVjYXVzZSB3ZSBkb24ndAorCSAqIHdhbnQgdG8gc2hvdyBv aWR2ZWN0b3IgYXMgb2lkW10uCisJICovCisJYXJyYXlfYmFzZV90eXBlID0gdHlwZWZvcm0tPnR5 cGVsZW07CisKKwkqdHlwZWFycmF5ID0gKElzVHJ1ZUFycmF5VHlwZSh0eXBlZm9ybSkgJiYgdHlw ZWZvcm0tPnR5cHN0b3JhZ2UgIT0gVFlQU1RPUkFHRV9QTEFJTik7CisKKwlpZiAoKnR5cGVhcnJh eSkKKwl7CisJCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CisJCXR1cGxlID0gU2VhcmNoU3lzQ2Fj aGUxKFRZUEVPSUQsIE9iamVjdElkR2V0RGF0dW0oYXJyYXlfYmFzZV90eXBlKSk7CisJCWlmICgh SGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3IgdHlwZSB3aXRoIE9JRCAldSIsIHR5cGVfb2lkKTsKKworCQl0eXBlZm9ybSA9IChG b3JtX3BnX3R5cGUpIEdFVFNUUlVDVCh0dXBsZSk7CisJCXR5cGVfb2lkID0gYXJyYXlfYmFzZV90 eXBlOworCX0KKworCS8qCisJICogU3BlY2lhbC1jYXNlIGNyb2NrIGZvciB0eXBlcyB3aXRoIHN0 cmFuZ2UgdHlwbW9kIHJ1bGVzIHdoZXJlIHdlIHB1dAorCSAqIHR5cGVtb2QgYXQgdGhlIG1pZGRs ZSBvZiBuYW1lIChlLmcuIFRJTUUoNikgd2l0aCB0aW1lIHpvbmUpLiBXZSBjYW5ub3QKKwkgKiBz Y2hlbWEtcXVhbGlmeSBub3IgYWRkIHF1b3RlcyB0byB0aGUgdHlwZSBuYW1lIGluIHRoZXNlIGNh c2VzLgorCSAqLworCSpuc3BpZCA9IEludmFsaWRPaWQ7CisKKwlzd2l0Y2ggKHR5cGVfb2lkKQor CXsKKwkJY2FzZSBUSU1FT0lEOgorCQkJKnR5cG5hbWUgPSBwc3RyZHVwKCJUSU1FIik7CisJCQli cmVhazsKKwkJY2FzZSBUSU1FU1RBTVBPSUQ6CisJCQkqdHlwbmFtZSA9IHBzdHJkdXAoIlRJTUVT VEFNUCIpOworCQkJYnJlYWs7CisJCWNhc2UgVElNRVNUQU1QVFpPSUQ6CisJCQlpZiAodHlwZW1v ZCA8IDApCisJCQkJKnR5cG5hbWUgPSBwc3RyZHVwKCJUSU1FU1RBTVAgV0lUSCBUSU1FIFpPTkUi KTsKKwkJCWVsc2UKKwkJCQkvKiBvdGhlcndpc2UsIFdJVEggVFogaXMgYWRkZWQgYnkgdHlwbW9k LiAqLworCQkJCSp0eXBuYW1lID0gcHN0cmR1cCgiVElNRVNUQU1QIik7CisJCQlicmVhazsKKwkJ Y2FzZSBJTlRFUlZBTE9JRDoKKwkJCSp0eXBuYW1lID0gcHN0cmR1cCgiSU5URVJWQUwiKTsKKwkJ CWJyZWFrOworCQljYXNlIFRJTUVUWk9JRDoKKwkJCWlmICh0eXBlbW9kIDwgMCkKKwkJCQkqdHlw bmFtZSA9IHBzdHJkdXAoIlRJTUUgV0lUSCBUSU1FIFpPTkUiKTsKKwkJCWVsc2UKKwkJCQkvKiBv dGhlcndpc2UsIFdJVEggVFogaXMgYWRkZWQgYnkgdHlwbW9kLiAqLworCQkJCSp0eXBuYW1lID0g cHN0cmR1cCgiVElNRSIpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisKKwkJCS8qCisJCQkgKiBO byBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgaXMgcmVxdWlyZWQgZm9yIG90aGVyIHR5cGVzLCBzbyBn ZXQKKwkJCSAqIHRoZSB0eXBlIG5hbWUgYW5kIHNjaGVtYSBkaXJlY3RseSBmcm9tIHRoZSBjYXRh bG9nLgorCQkJICovCisJCQkqbnNwaWQgPSB0eXBlZm9ybS0+dHlwbmFtZXNwYWNlOworCQkJKnR5 cG5hbWUgPSBwc3RyZHVwKE5hbWVTdHIodHlwZWZvcm0tPnR5cG5hbWUpKTsKKwl9CisKKwlpZiAo dHlwZW1vZCA+PSAwKQorCQkqdHlwZW1vZHN0ciA9IHByaW50VHlwbW9kKCIiLCB0eXBlbW9kLCB0 eXBlZm9ybS0+dHlwbW9kb3V0KTsKKwllbHNlCisJCSp0eXBlbW9kc3RyID0gcHN0cmR1cCgiIik7 CisKKwlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOworfQorCiAvKgogICogVGhpcyB2ZXJzaW9uIGlz IGZvciB1c2Ugd2l0aGluIHRoZSBiYWNrZW5kIGluIGVycm9yIG1lc3NhZ2VzLCBldGMuCiAgKiBP bmUgZGlmZmVyZW5jZSBpcyB0aGF0IGl0IHdpbGwgZmFpbCBmb3IgYW4gaW52YWxpZCB0eXBlLgpA QCAtMzYzLDcgKzQ2NSw3IEBAIGZvcm1hdF90eXBlX3dpdGhfdHlwZW1vZChPaWQgdHlwZV9vaWQs IGludDMyIHR5cGVtb2QpCiAvKgogICogQWRkIHR5cG1vZCBkZWNvcmF0aW9uIHRvIHRoZSBiYXNp YyB0eXBlIG5hbWUKICAqLwotc3RhdGljIGNoYXIgKgorY2hhciAqCiBwcmludFR5cG1vZChjb25z dCBjaGFyICp0eXBuYW1lLCBpbnQzMiB0eXBtb2QsIE9pZCB0eXBtb2RvdXQpCiB7CiAJY2hhcgkg ICAqcmVzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IGQzYTk3M2Q4NmIuLmI4NzI5 ZDhlM2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTUxLDcgKzUxLDYgQEAKICNp bmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2Fn Zy5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9mdW5jLmgiCi0jaW5jbHVkZSAicGFyc2VyL3Bh cnNlX25vZGUuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2Vfb3Blci5oIgogI2luY2x1ZGUgInBh cnNlci9wYXJzZV9yZWxhdGlvbi5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZXIuaCIKQEAgLTUw MSwyMiArNTAwLDE1IEBAIHN0YXRpYyB2b2lkIGdldF9mcm9tX2NsYXVzZV9jb2xkZWZsaXN0KFJh bmdlVGJsRnVuY3Rpb24gKnJ0ZnVuYywKIAkJCQkJCQkJCSAgIGRlcGFyc2VfY29udGV4dCAqY29u dGV4dCk7CiBzdGF0aWMgdm9pZCBnZXRfdGFibGVzYW1wbGVfZGVmKFRhYmxlU2FtcGxlQ2xhdXNl ICp0YWJsZXNhbXBsZSwKIAkJCQkJCQkJZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KTsKLXN0YXRp YyB2b2lkIGdldF9vcGNsYXNzX25hbWUoT2lkIG9wY2xhc3MsIE9pZCBhY3R1YWxfZGF0YXR5cGUs Ci0JCQkJCQkJIFN0cmluZ0luZm8gYnVmKTsKIHN0YXRpYyBOb2RlICpwcm9jZXNzSW5kaXJlY3Rp b24oTm9kZSAqbm9kZSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KTsKIHN0YXRpYyB2b2lkIHBy aW50U3Vic2NyaXB0cyhTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwgZGVwYXJzZV9jb250ZXh0ICpj b250ZXh0KTsKIHN0YXRpYyBjaGFyICpnZXRfcmVsYXRpb25fbmFtZShPaWQgcmVsaWQpOwogc3Rh dGljIGNoYXIgKmdlbmVyYXRlX3JlbGF0aW9uX25hbWUoT2lkIHJlbGlkLCBMaXN0ICpuYW1lc3Bh Y2VzKTsKIHN0YXRpYyBjaGFyICpnZW5lcmF0ZV9xdWFsaWZpZWRfcmVsYXRpb25fbmFtZShPaWQg cmVsaWQpOwotc3RhdGljIGNoYXIgKmdlbmVyYXRlX2Z1bmN0aW9uX25hbWUoT2lkIGZ1bmNpZCwg aW50IG5hcmdzLAotCQkJCQkJCQkJTGlzdCAqYXJnbmFtZXMsIE9pZCAqYXJndHlwZXMsCi0JCQkJ CQkJCQlib29sIGhhc192YXJpYWRpYywgYm9vbCAqdXNlX3ZhcmlhZGljX3AsCi0JCQkJCQkJCQlQ YXJzZUV4cHJLaW5kIHNwZWNpYWxfZXhwcmtpbmQpOwogc3RhdGljIGNoYXIgKmdlbmVyYXRlX29w ZXJhdG9yX25hbWUoT2lkIG9wZXJpZCwgT2lkIGFyZzEsIE9pZCBhcmcyKTsKIHN0YXRpYyB2b2lk IGFkZF9jYXN0X3RvKFN0cmluZ0luZm8gYnVmLCBPaWQgdHlwaWQpOwogc3RhdGljIGNoYXIgKmdl bmVyYXRlX3F1YWxpZmllZF90eXBlX25hbWUoT2lkIHR5cGlkKTsKIHN0YXRpYyB0ZXh0ICpzdHJp bmdfdG9fdGV4dChjaGFyICpzdHIpOwotc3RhdGljIGNoYXIgKmZsYXR0ZW5fcmVsb3B0aW9ucyhP aWQgcmVsaWQpOwogc3RhdGljIHZvaWQgZ2V0X3JlbG9wdGlvbnMoU3RyaW5nSW5mbyBidWYsIERh dHVtIHJlbG9wdGlvbnMpOwogCiAjZGVmaW5lIG9ubHlfbWFya2VyKHJ0ZSkgICgocnRlKS0+aW5o ID8gIiIgOiAiT05MWSAiKQpAQCAtMTkwMSw2ICsxODkzLDE0IEBAIHBnX2dldF9wYXJ0a2V5ZGVm X2NvbHVtbnMoT2lkIHJlbGlkLCBib29sIHByZXR0eSkKIAlyZXR1cm4gcGdfZ2V0X3BhcnRrZXlk ZWZfd29ya2VyKHJlbGlkLCBwcmV0dHlGbGFncywgdHJ1ZSwgZmFsc2UpOwogfQogCisvKiBJbnRl cm5hbCB2ZXJzaW9uIHRoYXQgcmVwb3J0cyB0aGUgZnVsbCBwYXJ0aXRpb24ga2V5IGRlZmluaXRp b24gKi8KK2NoYXIgKgorcGdfZ2V0X3BhcnRrZXlkZWZfc3RyaW5nKE9pZCByZWxpZCkKK3sKKwly ZXR1cm4gcGdfZ2V0X3BhcnRrZXlkZWZfd29ya2VyKHJlbGlkLCBHRVRfUFJFVFRZX0ZMQUdTKGZh bHNlKSwgZmFsc2UsCisJCQkJCQkJCQlmYWxzZSk7Cit9CisKIC8qCiAgKiBJbnRlcm5hbCB3b3Jr aG9yc2UgdG8gZGVjb21waWxlIGEgcGFydGl0aW9uIGtleSBkZWZpbml0aW9uLgogICovCkBAIC0y MTQ4LDYgKzIxNDgsMTYgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfZXh0KFBHX0ZVTkNUSU9OX0FS R1MpCiAJUEdfUkVUVVJOX1RFWFRfUChzdHJpbmdfdG9fdGV4dChyZXMpKTsKIH0KIAorLyoKKyAq IEludGVybmFsIHZlcnNpb24gdGhhdCByZXR1cm5zIHRoZSBkZWZpbml0aW9uIG9mIGEgQ09OU1RS QUlOVCBjb21tYW5kCisgKi8KK2NoYXIgKgorcGdfZ2V0X2NvbnN0cmFpbnRkZWZfc3RyaW5nKE9p ZCBjb25zdHJhaW50SWQpCit7CisJcmV0dXJuIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihj b25zdHJhaW50SWQsIGZhbHNlLAorCQkJCQkJCQkJICAgR0VUX1BSRVRUWV9GTEFHUyhmYWxzZSks IGZhbHNlKTsKK30KKwogLyoKICAqIEludGVybmFsIHZlcnNpb24gdGhhdCByZXR1cm5zIGEgZnVs bCBBTFRFUiBUQUJMRSAuLi4gQUREIENPTlNUUkFJTlQgY29tbWFuZAogICovCkBAIC0xMTc1OCw3 ICsxMTc2OCw3IEBAIGdldF90YWJsZXNhbXBsZV9kZWYoVGFibGVTYW1wbGVDbGF1c2UgKnRhYmxl c2FtcGxlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCiAgKiBhY3R1YWxfZGF0YXR5cGUuICAo SWYgeW91IGRvbid0IHdhbnQgdGhpcyBiZWhhdmlvciwganVzdCBwYXNzCiAgKiBJbnZhbGlkT2lk IGZvciBhY3R1YWxfZGF0YXR5cGUuKQogICovCi1zdGF0aWMgdm9pZAordm9pZAogZ2V0X29wY2xh c3NfbmFtZShPaWQgb3BjbGFzcywgT2lkIGFjdHVhbF9kYXRhdHlwZSwKIAkJCQkgU3RyaW5nSW5m byBidWYpCiB7CkBAIC0xMjE1Miw3ICsxMjE2Miw3IEBAIGdlbmVyYXRlX3F1YWxpZmllZF9yZWxh dGlvbl9uYW1lKE9pZCByZWxpZCkKICAqCiAgKiBUaGUgcmVzdWx0IGluY2x1ZGVzIGFsbCBuZWNl c3NhcnkgcXVvdGluZyBhbmQgc2NoZW1hLXByZWZpeGluZy4KICAqLwotc3RhdGljIGNoYXIgKgor Y2hhciAqCiBnZW5lcmF0ZV9mdW5jdGlvbl9uYW1lKE9pZCBmdW5jaWQsIGludCBuYXJncywgTGlz dCAqYXJnbmFtZXMsIE9pZCAqYXJndHlwZXMsCiAJCQkJCSAgIGJvb2wgaGFzX3ZhcmlhZGljLCBi b29sICp1c2VfdmFyaWFkaWNfcCwKIAkJCQkJICAgUGFyc2VFeHByS2luZCBzcGVjaWFsX2V4cHJr aW5kKQpAQCAtMTI1MzgsNyArMTI1NDgsNyBAQCBnZXRfcmVsb3B0aW9ucyhTdHJpbmdJbmZvIGJ1 ZiwgRGF0dW0gcmVsb3B0aW9ucykKIC8qCiAgKiBHZW5lcmF0ZSBhIEMgc3RyaW5nIHJlcHJlc2Vu dGluZyBhIHJlbGF0aW9uJ3MgcmVsb3B0aW9ucywgb3IgTlVMTCBpZiBub25lLgogICovCi1zdGF0 aWMgY2hhciAqCitjaGFyICoKIGZsYXR0ZW5fcmVsb3B0aW9ucyhPaWQgcmVsaWQpCiB7CiAJY2hh cgkgICAqcmVzdWx0ID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDY5OTYwNzM5 ODkuLjc2ZmYyM2I3NzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtMTIwNDMsNCArMTIw NDMsMTEgQEAKICAgcHJvbmFtZSA9PiAnYW55X3ZhbHVlX3RyYW5zZm4nLCBwcm9yZXR0eXBlID0+ ICdhbnllbGVtZW50JywKICAgcHJvYXJndHlwZXMgPT4gJ2FueWVsZW1lbnQgYW55ZWxlbWVudCcs IHByb3NyYyA9PiAnYW55X3ZhbHVlX3RyYW5zZm4nIH0sCiAKK3sgb2lkID0+ICc0NjQyJywgZGVz Y3IgPT4gJ2RlcGFyc2UgdGhlIERETCBjb21tYW5kIGludG8gYSBKU09OIGZvcm1hdCBzdHJpbmcn LAorICBwcm9uYW1lID0+ICdkZGxfZGVwYXJzZV90b19qc29uJywgcHJvcmV0dHlwZSA9PiAndGV4 dCcsCisgIHByb2FyZ3R5cGVzID0+ICdwZ19kZGxfY29tbWFuZCcsIHByb3NyYyA9PiAnZGRsX2Rl cGFyc2VfdG9fanNvbicgfSwKK3sgb2lkID0+ICc0NjQzJywgZGVzY3IgPT4gJ2V4cGFuZCBKU09O IGZvcm1hdCBEREwgdG8gYSBwbGFpbiB0ZXh0IERETCBjb21tYW5kJywKKyAgcHJvbmFtZSA9PiAn ZGRsX2RlcGFyc2VfZXhwYW5kX2NvbW1hbmQnLCBwcm9yZXR0eXBlID0+ICd0ZXh0JywKKyAgcHJv YXJndHlwZXMgPT4gJ3RleHQnLCBwcm9zcmMgPT4gJ2RkbF9kZXBhcnNlX2V4cGFuZF9jb21tYW5k JyB9LAorCiBdCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5jZS5oIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvc2VxdWVuY2UuaAppbmRleCA3ZGI3YjNkYTdiLi5jMGEzOTU5 NmFjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5jZS5oCisrKyBiL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmgKQEAgLTE1LDYgKzE1LDcgQEAKIAogI2luY2x1 ZGUgImFjY2Vzcy94bG9ncmVhZGVyLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhZGRyZXNz LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19zZXF1ZW5jZS5oIgogI2luY2x1ZGUgImZtZ3IuaCIK ICNpbmNsdWRlICJsaWIvc3RyaW5naW5mby5oIgogI2luY2x1ZGUgIm5vZGVzL3BhcnNlbm9kZXMu aCIKQEAgLTUxLDkgKzUyLDE3IEBAIHR5cGVkZWYgc3RydWN0IHhsX3NlcV9yZWMKIAkvKiBTRVFV RU5DRSBUVVBMRSBEQVRBIEZPTExPV1MgQVQgVEhFIEVORCAqLwogfSB4bF9zZXFfcmVjOwogCisv KiBJbmZvcm1hdGlvbiBuZWVkZWQgdG8gZGVmaW5lIGEgc2VxdWVuY2UuICovCit0eXBlZGVmIHN0 cnVjdCBTZXF1ZW5jZV92YWx1ZXMKK3sKKwlGb3JtX3BnX3NlcXVlbmNlIHNlcWZvcm07CisJaW50 NjQJCWxhc3RfdmFsdWU7Cit9IFNlcXVlbmNlX3ZhbHVlczsKKwogZXh0ZXJuIGludDY0IG5leHR2 YWxfaW50ZXJuYWwoT2lkIHJlbGlkLCBib29sIGNoZWNrX3Blcm1pc3Npb25zKTsKIGV4dGVybiBE YXR1bSBuZXh0dmFsKFBHX0ZVTkNUSU9OX0FSR1MpOwogZXh0ZXJuIExpc3QgKnNlcXVlbmNlX29w dGlvbnMoT2lkIHJlbGlkKTsKK2V4dGVybiBTZXF1ZW5jZV92YWx1ZXMgKmdldF9zZXF1ZW5jZV92 YWx1ZXMoT2lkIHNlcXVlbmNlSWQpOwogCiBleHRlcm4gT2JqZWN0QWRkcmVzcyBEZWZpbmVTZXF1 ZW5jZShQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVNlcVN0bXQgKnNlcSk7CiBleHRlcm4gT2Jq ZWN0QWRkcmVzcyBBbHRlclNlcXVlbmNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJTZXFTdG10 ICpzdG10KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmgKaW5kZXggMTdiOTQwNDkzNy4uNWEwODJl NTdlYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmgKKysrIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmgKQEAgLTEwNiw0ICsxMDYsNiBAQCBleHRl cm4gdm9pZCBSYW5nZVZhckNhbGxiYWNrT3duc1JlbGF0aW9uKGNvbnN0IFJhbmdlVmFyICpyZWxh dGlvbiwKIGV4dGVybiBib29sIFBhcnRDb25zdHJhaW50SW1wbGllZEJ5UmVsQ29uc3RyYWludChS ZWxhdGlvbiBzY2FucmVsLAogCQkJCQkJCQkJCQkJIExpc3QgKnBhcnRDb25zdHJhaW50KTsKIAor ZXh0ZXJuIGNoYXIgKnN0b3JhZ2VfbmFtZShjaGFyIGMpOworCiAjZW5kaWYJCQkJCQkJLyogVEFC TEVDTURTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBi L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBiM2JlYzkwZTUyLi5iOGFiOGRh ZTZjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0yMTY3LDYgKzIxNjcsNyBAQCB0eXBlZGVm IHN0cnVjdCBBbHRlclRhYmxlU3RtdAogCUxpc3QJICAgKmNtZHM7CQkJLyogbGlzdCBvZiBzdWJj b21tYW5kcyAqLwogCU9iamVjdFR5cGUJb2JqdHlwZTsJCS8qIHR5cGUgb2Ygb2JqZWN0ICovCiAJ Ym9vbAkJbWlzc2luZ19vazsJCS8qIHNraXAgZXJyb3IgaWYgdGFibGUgbWlzc2luZyAqLworCWJv b2wJCXRhYmxlX2xpa2U7CQkvKiBpbnRlcm5hbGx5IGdlbmVyYXRlZCBmb3IgVGFibGVMaWtlQ2xh dXNlICovCiB9IEFsdGVyVGFibGVTdG10OwogCiB0eXBlZGVmIGVudW0gQWx0ZXJUYWJsZVR5cGUK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvZGRsZGVwYXJzZS5oIGIvc3JjL2luY2x1ZGUv dGNvcC9kZGxkZXBhcnNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u OGIzNjlmZDhjNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvZGRsZGVwYXJz ZS5oCkBAIC0wLDAgKzEsMjIgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGRkbGRlcGFy c2UuaAorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIzLCBQb3N0Z3JlU1FM IEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0 LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBzcmMvaW5j bHVkZS90Y29wL2RkbGRlcGFyc2UuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZu ZGVmIERETF9ERVBBUlNFX0gKKyNkZWZpbmUgRERMX0RFUEFSU0VfSAorCisjaW5jbHVkZSAidGNv cC9kZXBhcnNlX3V0aWxpdHkuaCIKKworZXh0ZXJuIGNoYXIgKmRlcGFyc2VfdXRpbGl0eV9jb21t YW5kKENvbGxlY3RlZENvbW1hbmQgKmNtZCk7CitleHRlcm4gY2hhciAqZGVwYXJzZV9kZGxfanNv bl90b19zdHJpbmcoY2hhciAqanNvbmIpOworZXh0ZXJuIGNoYXIgKmRlcGFyc2VfZHJvcF90YWJs ZShjb25zdCBjaGFyICpvYmppZGVudGl0eSwgY29uc3QgY2hhciAqb2JqZWN0dHlwZSwKKwkJCQkJ CQkJICBOb2RlICpwYXJzZXRyZWUpOworCisjZW5kaWYJCQkJCQkJLyogRERMX0RFUEFSU0VfSCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdGNvcC91dGlsaXR5LmggYi9zcmMvaW5jbHVkZS90 Y29wL3V0aWxpdHkuaAppbmRleCA1OWU2NGFlYTA3Li4yMmNlM2UxYjZmIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS90Y29wL3V0aWxpdHkuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL3V0aWxpdHku aApAQCAtOTksNiArOTksOCBAQCBleHRlcm4gUXVlcnkgKlV0aWxpdHlDb250YWluc1F1ZXJ5KE5v ZGUgKnBhcnNldHJlZSk7CiAKIGV4dGVybiBDb21tYW5kVGFnIENyZWF0ZUNvbW1hbmRUYWcoTm9k ZSAqcGFyc2V0cmVlKTsKIAorZXh0ZXJuIGNvbnN0IGNoYXIgKnN0cmluZ2lmeV9vYmp0eXBlKE9i amVjdFR5cGUgb2JqdHlwZSk7CisKIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqCiBDcmVhdGVD b21tYW5kTmFtZShOb2RlICpwYXJzZXRyZWUpCiB7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91 dGlscy9idWlsdGlucy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRpbnMuaAppbmRleCAyZjhi NDZkNmRhLi5jZmRhMjk5ZGVlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9idWlsdGlu cy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2J1aWx0aW5zLmgKQEAgLTEyNCw5ICsxMjQsMTQg QEAgZXh0ZXJuIERhdHVtIG51bWVyaWNfZmxvYXQ4X25vX292ZXJmbG93KFBHX0ZVTkNUSU9OX0FS R1MpOwogI2RlZmluZSBGT1JNQVRfVFlQRV9JTlZBTElEX0FTX05VTEwJMHgwOAkvKiBOVUxMIGlm IHVuZGVmaW5lZCAqLwogZXh0ZXJuIGNoYXIgKmZvcm1hdF90eXBlX2V4dGVuZGVkKE9pZCB0eXBl X29pZCwgaW50MzIgdHlwZW1vZCwgYml0czE2IGZsYWdzKTsKIAorZXh0ZXJuIHZvaWQgZm9ybWF0 X3R5cGVfZGV0YWlsZWQoT2lkIHR5cGVfb2lkLCBpbnQzMiB0eXBlbW9kLAorCQkJCQkJCQkgIE9p ZCAqbnNwaWQsIGNoYXIgKip0eXBuYW1lLAorCQkJCQkJCQkgIGNoYXIgKip0eXBlbW9kc3RyLCBi b29sICp0eXBlYXJyYXkpOworCiBleHRlcm4gY2hhciAqZm9ybWF0X3R5cGVfYmUoT2lkIHR5cGVf b2lkKTsKIGV4dGVybiBjaGFyICpmb3JtYXRfdHlwZV9iZV9xdWFsaWZpZWQoT2lkIHR5cGVfb2lk KTsKIGV4dGVybiBjaGFyICpmb3JtYXRfdHlwZV93aXRoX3R5cGVtb2QoT2lkIHR5cGVfb2lkLCBp bnQzMiB0eXBlbW9kKTsKK2V4dGVybiBjaGFyICpwcmludFR5cG1vZChjb25zdCBjaGFyICp0eXBu YW1lLCBpbnQzMiB0eXBtb2QsIE9pZCB0eXBtb2RvdXQpOwogCiBleHRlcm4gaW50MzIgdHlwZV9t YXhpbXVtX3NpemUoT2lkIHR5cGVfb2lkLCBpbnQzMiB0eXBlbW9kKTsKIApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmggYi9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRp bHMuaAppbmRleCBiMDA2ZDlkNDc1Li5mZDFkODVmYzhkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS91dGlscy9ydWxldXRpbHMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaApA QCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgIm5vZGVzL25vZGVzLmgiCiAjaW5jbHVkZSAibm9k ZXMvcGFyc2Vub2Rlcy5oIgogI2luY2x1ZGUgIm5vZGVzL3BnX2xpc3QuaCIKKyNpbmNsdWRlICJw YXJzZXIvcGFyc2Vfbm9kZS5oIgogCiBzdHJ1Y3QgUGxhbjsJCQkJCS8qIGF2b2lkIGluY2x1ZGlu ZyBwbGFubm9kZXMuaCBoZXJlICovCiBzdHJ1Y3QgUGxhbm5lZFN0bXQ7CkBAIC0zMSw5ICszMiwx MSBAQCBleHRlcm4gY2hhciAqcGdfZ2V0X2luZGV4ZGVmX2NvbHVtbnNfZXh0ZW5kZWQoT2lkIGlu ZGV4cmVsaWQsCiBleHRlcm4gY2hhciAqcGdfZ2V0X3F1ZXJ5ZGVmKFF1ZXJ5ICpxdWVyeSwgYm9v bCBwcmV0dHkpOwogCiBleHRlcm4gY2hhciAqcGdfZ2V0X3BhcnRrZXlkZWZfY29sdW1ucyhPaWQg cmVsaWQsIGJvb2wgcHJldHR5KTsKK2V4dGVybiBjaGFyICpwZ19nZXRfcGFydGtleWRlZl9zdHJp bmcoT2lkIHJlbGlkKTsKIGV4dGVybiBjaGFyICpwZ19nZXRfcGFydGNvbnN0cmRlZl9zdHJpbmco T2lkIHBhcnRpdGlvbklkLCBjaGFyICphbGlhc25hbWUpOwogCiBleHRlcm4gY2hhciAqcGdfZ2V0 X2NvbnN0cmFpbnRkZWZfY29tbWFuZChPaWQgY29uc3RyYWludElkKTsKK2V4dGVybiBjaGFyICpw Z19nZXRfY29uc3RyYWludGRlZl9zdHJpbmcoT2lkIGNvbnN0cmFpbnRJZCk7CiBleHRlcm4gY2hh ciAqZGVwYXJzZV9leHByZXNzaW9uKE5vZGUgKmV4cHIsIExpc3QgKmRwY29udGV4dCwKIAkJCQkJ CQkJYm9vbCBmb3JjZXByZWZpeCwgYm9vbCBzaG93aW1wbGljaXQpOwogZXh0ZXJuIExpc3QgKmRl cGFyc2VfY29udGV4dF9mb3IoY29uc3QgY2hhciAqYWxpYXNuYW1lLCBPaWQgcmVsaWQpOwpAQCAt NDUsNyArNDgsMTQgQEAgZXh0ZXJuIExpc3QgKnNlbGVjdF9ydGFibGVfbmFtZXNfZm9yX2V4cGxh aW4oTGlzdCAqcnRhYmxlLAogCQkJCQkJCQkJCQkgQml0bWFwc2V0ICpyZWxzX3VzZWQpOwogZXh0 ZXJuIGNoYXIgKmdlbmVyYXRlX2NvbGxhdGlvbl9uYW1lKE9pZCBjb2xsaWQpOwogZXh0ZXJuIGNo YXIgKmdlbmVyYXRlX29wY2xhc3NfbmFtZShPaWQgb3BjbGFzcyk7CitleHRlcm4gY2hhciAqZ2Vu ZXJhdGVfZnVuY3Rpb25fbmFtZShPaWQgZnVuY2lkLCBpbnQgbmFyZ3MsIExpc3QgKmFyZ25hbWVz LAorCQkJCQkJCQkJT2lkICphcmd0eXBlcywgYm9vbCBoYXNfdmFyaWFkaWMsCisJCQkJCQkJCQli b29sICp1c2VfdmFyaWFkaWNfcCwKKwkJCQkJCQkJCVBhcnNlRXhwcktpbmQgc3BlY2lhbF9leHBy a2luZCk7CiBleHRlcm4gY2hhciAqZ2V0X3JhbmdlX3BhcnRib3VuZF9zdHJpbmcoTGlzdCAqYm91 bmRfZGF0dW1zKTsKK2V4dGVybiB2b2lkIGdldF9vcGNsYXNzX25hbWUoT2lkIG9wY2xhc3MsIE9p ZCBhY3R1YWxfZGF0YXR5cGUsCisJCQkJCQkJIFN0cmluZ0luZm8gYnVmKTsKK2V4dGVybiBjaGFy ICpmbGF0dGVuX3JlbG9wdGlvbnMoT2lkIHJlbGlkKTsKIAogZXh0ZXJuIGNoYXIgKnBnX2dldF9z dGF0aXN0aWNzb2JqZGVmX3N0cmluZyhPaWQgc3RhdGV4dGlkKTsKIApkaWZmIC0tZ2l0IGEvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdAppbmRleCAyNjA4NTQ3NDdiLi43YzhhZTdmZTdiIDEwMDY0NAotLS0gYS9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdApAQCAtMzIyMiw2ICszMjIyLDcgQEAgY29uZmlnX3Zhcl92YWx1ZQogY29udGFpbl9h Z2dzX29mX2xldmVsX2NvbnRleHQKIGNvbnRhaW5fcGxhY2Vob2xkZXJfcmVmZXJlbmNlc19jb250 ZXh0CiBjb252ZXJ0X3Rlc3RleHByX2NvbnRleHQKK2NvbnZTcGVjaWZpZXIKIGNvcHlfZGF0YV9k ZXN0X2NiCiBjb3B5X2RhdGFfc291cmNlX2NiCiBjb3JlX1lZU1RZUEUKQEAgLTM0MjUsNiArMzQy Niw3IEBAIGpzb25fbWFuaWZlc3RfcGVyd2FscmFuZ2VfY2FsbGJhY2sKIGpzb25fb2ZpZWxkX2Fj dGlvbgoganNvbl9zY2FsYXJfYWN0aW9uCiBqc29uX3N0cnVjdF9hY3Rpb24KK2pzb25fdHJpdmFs dWUKIGtleUVudHJ5RGF0YQoga2V5X3QKIGxjbENvbnRleHQKLS0gCjIuMzQuMQoK --0000000000004a587505fe3cb10a Content-Type: application/octet-stream; name="0002-Enhance-the-event-trigger-to-support-DDL--2023_06_16.patch" Content-Disposition: attachment; filename="0002-Enhance-the-event-trigger-to-support-DDL--2023_06_16.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_liyf2xe41 RnJvbSAwYTFkMmYwZjY4ODYwYzZkN2UzY2M1Mjg2OWUzYWYxMTRhZmQyNzI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IFRodSwgMTUgSnVuIDIwMjMgMTQ6MTU6MjYgKzA1MzAKU3ViamVjdDogW1BBVENIIDIv NF0gRW5oYW5jZSB0aGUgZXZlbnQgdHJpZ2dlciB0byBzdXBwb3J0IERETCBkZXBhcnNpbmcKCkFM VEVSIFRBQkxFIGNhbiBoYXZlIG11bHRpcGxlIHN1YmNvbW1hbmRzIHdoaWNoIG1pZ2h0IGluY2x1 ZGUgRFJPUCBDT0xVTU4KY29tbWFuZCBhbmQgQUxURVIgVFlQRSByZWZlcnJpbmcgdGhlIGRyb3Ag Y29sdW1uIGluIFVTSU5HIGV4cHJlc3Npb24uIEFzIHRoZQpkcm9wcGVkIGNvbHVtbiBjYW5ub3Qg YmUgYWNjZXNzZWQgYWZ0ZXIgdGhlIGV4ZWN1dGlvbiBvZiBEUk9QIENPTFVNTiwgYSBzcGVjaWFs CnRyaWdnZXIgaXMgYWRkZWQgdG8gaGFuZGxlIHRoaXMgY2FzZSBiZWZvcmUgdGhlIGRyb3AgY29s dW1uIGlzIGV4ZWN1dGVkLgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbGRlcGFyc2UuYyAg ICB8ICAxMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jIHwgMTg4ICsr KysrKysrKysrKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRz LmMgICAgIHwgIDEwICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmggfCAg NDYgKysrKysrLQogc3JjL2luY2x1ZGUvdGNvcC9kZXBhcnNlX3V0aWxpdHkuaCAgIHwgICAyICsK IDUgZmlsZXMgY2hhbmdlZCwgMjA1IGluc2VydGlvbnMoKyksIDUzIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbGRlcGFyc2UuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2RkbGRlcGFyc2UuYwppbmRleCA2YzcxNzM5MDM2Li43NjBjZTlkYzkzIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxkZXBhcnNlLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvZGRsZGVwYXJzZS5jCkBAIC0yMzU1LDIwICsyMzU1LDEyIEBAIGRlcGFyc2Vf QWx0ZXJUYWJsZVN0bXQoQ29sbGVjdGVkQ29tbWFuZCAqY21kKQogCQkJCQkgKi8KIAkJCQkJaWYg KGRlZi0+cmF3X2RlZmF1bHQpCiAJCQkJCXsKLQkJCQkJCURhdHVtCQlkZXBhcnNlZDsKLQkJCQkJ CWNoYXIJICAgKmRlZmV4cHI7Ci0JCQkJCQlMaXN0CSAgICpleHBycyA9IE5JTDsKLQotCQkJCQkJ ZXhwcnMgPSBsYXBwZW5kKGV4cHJzLCBkZWYtPmNvb2tlZF9kZWZhdWx0KTsKLQkJCQkJCWRlZmV4 cHIgPSBub2RlVG9TdHJpbmcoZGVmLT5jb29rZWRfZGVmYXVsdCk7Ci0JCQkJCQlkZXBhcnNlZCA9 IERpcmVjdEZ1bmN0aW9uQ2FsbDIocGdfZ2V0X2V4cHIsCi0JCQkJCQkJCQkJCQkJICAgQ1N0cmlu Z0dldFRleHREYXR1bShkZWZleHByKSwKLQkJCQkJCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGlk KHJlbCkpOwogCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3ViLCAiICV7dXNpbmd9 cyIpOwogCQkJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAidXNpbmciLCAiVVNJTkcgJXtleHByZXNz aW9ufXMiLAogCQkJCQkJCQkJIHRydWUsIDEsCiAJCQkJCQkJCQkgImV4cHJlc3Npb24iLCBqYnZT dHJpbmcsCi0JCQkJCQkJCQkgVGV4dERhdHVtR2V0Q1N0cmluZyhkZXBhcnNlZCkpOworCQkJCQkJ CQkJIHN1Yi0+dXNpbmdleHByKTsKKwogCQkJCQl9CiAKIAkJCQkJLyogV2UgaGF2ZSBmdWxsIGZt dCBieSBub3csIHNvIGFkZCBqc29uYiBlbGVtZW50IGZvciB0aGF0ICovCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9ldmVudF90cmlnZ2VyLmMKaW5kZXggNGQ0OGU0OTBlZC4uOGMyYTQ5NGRjYiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgImxp Yi9pbGlzdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJz ZV9mdW5jLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlci5oIgogI2luY2x1ZGUgInBnc3RhdC5o IgogI2luY2x1ZGUgInRjb3AvZGRsZGVwYXJzZS5oIgogI2luY2x1ZGUgInRjb3AvZGVwYXJzZV91 dGlsaXR5LmgiCkBAIC00OSw0NSArNTAsNyBAQAogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2lu Y2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAKLXR5cGVkZWYgc3RydWN0IEV2ZW50VHJpZ2dlclF1 ZXJ5U3RhdGUKLXsKLQkvKiBtZW1vcnkgY29udGV4dCBmb3IgdGhpcyBzdGF0ZSdzIG9iamVjdHMg Ki8KLQlNZW1vcnlDb250ZXh0IGN4dDsKLQotCS8qIHNxbF9kcm9wICovCi0Jc2xpc3RfaGVhZAlT UUxEcm9wTGlzdDsKLQlib29sCQlpbl9zcWxfZHJvcDsKLQotCS8qIHRhYmxlX3Jld3JpdGUgKi8K LQlPaWQJCQl0YWJsZV9yZXdyaXRlX29pZDsJLyogSW52YWxpZE9pZCwgb3Igc2V0IGZvciB0YWJs ZV9yZXdyaXRlCi0JCQkJCQkJCQkgKiBldmVudCAqLwotCWludAkJCXRhYmxlX3Jld3JpdGVfcmVh c29uOwkvKiBBVF9SRVdSSVRFIHJlYXNvbiAqLwotCi0JLyogU3VwcG9ydCBmb3IgY29tbWFuZCBj b2xsZWN0aW9uICovCi0JYm9vbAkJY29tbWFuZENvbGxlY3Rpb25JbmhpYml0ZWQ7Ci0JQ29sbGVj dGVkQ29tbWFuZCAqY3VycmVudENvbW1hbmQ7Ci0JTGlzdAkgICAqY29tbWFuZExpc3Q7CS8qIGxp c3Qgb2YgQ29sbGVjdGVkQ29tbWFuZDsgc2VlCi0JCQkJCQkJCSAqIGRlcGFyc2VfdXRpbGl0eS5o ICovCi0Jc3RydWN0IEV2ZW50VHJpZ2dlclF1ZXJ5U3RhdGUgKnByZXZpb3VzOwotfSBFdmVudFRy aWdnZXJRdWVyeVN0YXRlOwotCi1zdGF0aWMgRXZlbnRUcmlnZ2VyUXVlcnlTdGF0ZSAqY3VycmVu dEV2ZW50VHJpZ2dlclN0YXRlID0gTlVMTDsKLQotLyogU3VwcG9ydCBmb3IgZHJvcHBlZCBvYmpl Y3RzICovCi10eXBlZGVmIHN0cnVjdCBTUUxEcm9wT2JqZWN0Ci17Ci0JT2JqZWN0QWRkcmVzcyBh ZGRyZXNzOwotCWNvbnN0IGNoYXIgKnNjaGVtYW5hbWU7Ci0JY29uc3QgY2hhciAqb2JqbmFtZTsK LQljb25zdCBjaGFyICpvYmppZGVudGl0eTsKLQljb25zdCBjaGFyICpvYmplY3R0eXBlOwotCUxp c3QJICAgKmFkZHJuYW1lczsKLQlMaXN0CSAgICphZGRyYXJnczsKLQlib29sCQlvcmlnaW5hbDsK LQlib29sCQlub3JtYWw7Ci0JYm9vbAkJaXN0ZW1wOwotCXNsaXN0X25vZGUJbmV4dDsKLX0gU1FM RHJvcE9iamVjdDsKK0V2ZW50VHJpZ2dlclF1ZXJ5U3RhdGUgKmN1cnJlbnRFdmVudFRyaWdnZXJT dGF0ZSA9IE5VTEw7CiAKIHN0YXRpYyB2b2lkIEFsdGVyRXZlbnRUcmlnZ2VyT3duZXJfaW50ZXJu YWwoUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJCQlIZWFwVHVwbGUgdHVwLApAQCAtMTUzOCw2ICsx NTAxLDcgQEAgRXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZVN0YXJ0KE5vZGUgKnBhcnNldHJlZSkKIAog CWNvbW1hbmQtPmQuYWx0ZXJUYWJsZS5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOwogCWNv bW1hbmQtPmQuYWx0ZXJUYWJsZS5vYmplY3RJZCA9IEludmFsaWRPaWQ7CisJY29tbWFuZC0+ZC5h bHRlclRhYmxlLnJld3JpdGUgPSBmYWxzZTsKIAljb21tYW5kLT5kLmFsdGVyVGFibGUuc3ViY21k cyA9IE5JTDsKIAljb21tYW5kLT5wYXJzZXRyZWUgPSBjb3B5T2JqZWN0KHBhcnNldHJlZSk7CiAK QEAgLTE1NzEsNyArMTUzNSw3IEBAIEV2ZW50VHJpZ2dlckFsdGVyVGFibGVSZWxpZChPaWQgb2Jq ZWN0SWQpCiAgKiBpbnRlcm5hbGx5LCBzbyB0aGF0J3MgYWxsIHRoYXQgdGhpcyBjb2RlIG5lZWRz IHRvIGhhbmRsZSBhdCB0aGUgbW9tZW50LgogICovCiB2b2lkCi1FdmVudFRyaWdnZXJDb2xsZWN0 QWx0ZXJUYWJsZVN1YmNtZChOb2RlICpzdWJjbWQsIE9iamVjdEFkZHJlc3MgYWRkcmVzcykKK0V2 ZW50VHJpZ2dlckNvbGxlY3RBbHRlclRhYmxlU3ViY21kKE5vZGUgKnN1YmNtZCwgT2JqZWN0QWRk cmVzcyBhZGRyZXNzLCBib29sIHJld3JpdGUpCiB7CiAJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAJ Q29sbGVjdGVkQVRTdWJjbWQgKm5ld3N1YjsKQEAgLTE1OTEsMTIgKzE1NTUsMTU2IEBAIEV2ZW50 VHJpZ2dlckNvbGxlY3RBbHRlclRhYmxlU3ViY21kKE5vZGUgKnN1YmNtZCwgT2JqZWN0QWRkcmVz cyBhZGRyZXNzKQogCW5ld3N1Yi0+YWRkcmVzcyA9IGFkZHJlc3M7CiAJbmV3c3ViLT5wYXJzZXRy ZWUgPSBjb3B5T2JqZWN0KHN1YmNtZCk7CiAKKwljdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1 cnJlbnRDb21tYW5kLT5kLmFsdGVyVGFibGUucmV3cml0ZSB8PSByZXdyaXRlOwogCWN1cnJlbnRF dmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVudENvbW1hbmQtPmQuYWx0ZXJUYWJsZS5zdWJjbWRzID0K IAkJbGFwcGVuZChjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1cnJlbnRDb21tYW5kLT5kLmFs dGVyVGFibGUuc3ViY21kcywgbmV3c3ViKTsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRj eHQpOwogfQogCisvKgorICogRXZlbnRUcmlnZ2VyQWx0ZXJUeXBlU3RhcnQKKyAqCQlTYXZlIGRh dGEgYWJvdXQgYSBzaW5nbGUgcGFydCBvZiBhbiBBTFRFUiBUWVBFLgorICoKKyAqIEFMVEVSIFRB QkxFIGNhbiBoYXZlIG11bHRpcGxlIHN1YmNvbW1hbmRzIHdoaWNoIG1pZ2h0IGluY2x1ZGUgRFJP UCBDT0xVTU4KKyAqIGNvbW1hbmQgYW5kIEFMVEVSIFRZUEUgcmVmZXJyaW5nIHRoZSBkcm9wIGNv bHVtbiBpbiBVU0lORyBleHByZXNzaW9uLgorICogQXMgdGhlIGRyb3BwZWQgY29sdW1uIGNhbm5v dCBiZSBhY2Nlc3NlZCBhZnRlciB0aGUgZXhlY3V0aW9uIG9mIERST1AgQ09MVU1OLAorICogYSBz cGVjaWFsIHRyaWdnZXIgaXMgcmVxdWlyZWQgdG8gaGFuZGxlIHRoaXMgY2FzZSBiZWZvcmUgdGhl IGRyb3AgY29sdW1uIGlzCisgKiBleGVjdXRlZC4KKyAqLwordm9pZAorRXZlbnRUcmlnZ2VyQWx0 ZXJUeXBlU3RhcnQoQWx0ZXJUYWJsZUNtZCAqc3ViY21kLCBSZWxhdGlvbiByZWwpCit7CisJTWVt b3J5Q29udGV4dCBvbGRjeHQ7CisJQ29sbGVjdGVkQVRTdWJjbWQgKm5ld3N1YjsKKwlDb2x1bW5E ZWYgICpkZWY7CisJUmVsYXRpb24JYXR0cmVsYXRpb247CisJSGVhcFR1cGxlCWhlYXBUdXA7CisJ Rm9ybV9wZ19hdHRyaWJ1dGUgYXR0VHVwOworCUF0dHJOdW1iZXIJYXR0bnVtOworCU9iamVjdEFk ZHJlc3MgYWRkcmVzczsKKworCS8qIGlnbm9yZSBpZiBldmVudCB0cmlnZ2VyIGNvbnRleHQgbm90 IHNldCwgb3IgY29sbGVjdGlvbiBkaXNhYmxlZCAqLworCWlmICghY3VycmVudEV2ZW50VHJpZ2dl clN0YXRlIHx8CisJCWN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y29tbWFuZENvbGxlY3Rpb25J bmhpYml0ZWQpCisJCXJldHVybjsKKworCUFzc2VydChJc0Eoc3ViY21kLCBBbHRlclRhYmxlQ21k KSk7CisJQXNzZXJ0KHN1YmNtZC0+c3VidHlwZSA9PSBBVF9BbHRlckNvbHVtblR5cGUpOworCUFz c2VydChjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1cnJlbnRDb21tYW5kICE9IE5VTEwpOwor CUFzc2VydChPaWRJc1ZhbGlkKGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVudENvbW1h bmQtPmQuYWx0ZXJUYWJsZS5vYmplY3RJZCkpOworCisJZGVmID0gKENvbHVtbkRlZiAqKSBzdWJj bWQtPmRlZjsKKwlBc3NlcnQoSXNBKGRlZiwgQ29sdW1uRGVmKSk7CisKKwlvbGRjeHQgPSBNZW1v cnlDb250ZXh0U3dpdGNoVG8oY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jeHQpOworCisJbmV3 c3ViID0gcGFsbG9jKHNpemVvZihDb2xsZWN0ZWRBVFN1YmNtZCkpOworCW5ld3N1Yi0+cGFyc2V0 cmVlID0gKE5vZGUgKiljb3B5T2JqZWN0KHN1YmNtZCk7CisKKwlhdHRyZWxhdGlvbiA9IHRhYmxl X29wZW4oQXR0cmlidXRlUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwkvKiBMb29r IHVwIHRoZSB0YXJnZXQgY29sdW1uICovCisJaGVhcFR1cCA9IFNlYXJjaFN5c0NhY2hlQ29weUF0 dE5hbWUoUmVsYXRpb25HZXRSZWxpZChyZWwpLCBzdWJjbWQtPm5hbWUpOworCWlmICghSGVhcFR1 cGxlSXNWYWxpZChoZWFwVHVwKSkgLyogc2hvdWxkbid0IGhhcHBlbiAqLworCQllcmVwb3J0KEVS Uk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfQ09MVU1OKSwKKwkJCQllcnJtc2co ImNvbHVtbiBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJ ICAgc3ViY21kLT5uYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSk7CisJYXR0VHVw ID0gKEZvcm1fcGdfYXR0cmlidXRlKSBHRVRTVFJVQ1QoaGVhcFR1cCk7CisJYXR0bnVtID0gYXR0 VHVwLT5hdHRudW07CisKKwlPYmplY3RBZGRyZXNzU3ViU2V0KGFkZHJlc3MsIFJlbGF0aW9uUmVs YXRpb25JZCwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsaWQocmVsKSwgYXR0bnVtKTsKKwloZWFwX2Zy ZWV0dXBsZShoZWFwVHVwKTsKKwl0YWJsZV9jbG9zZShhdHRyZWxhdGlvbiwgUm93RXhjbHVzaXZl TG9jayk7CisJbmV3c3ViLT5hZGRyZXNzID0gYWRkcmVzczsKKworCWlmIChkZWYtPnJhd19kZWZh dWx0KQorCXsKKwkJT3ZlcnJpZGVTZWFyY2hQYXRoICpvdmVycmlkZVBhdGg7CisJCWNoYXIJICAg KmRlZmV4cHI7CisKKwkJLyoKKwkJICogV2Ugd2FudCBhbGwgb2JqZWN0IG5hbWVzIHRvIGJlIHF1 YWxpZmllZCB3aGVuIGRlcGFyc2luZyB0aGUKKwkJICogZXhwcmVzc2lvbiwgc28gdGhhdCByZXN1 bHRzIGFyZSAicG9ydGFibGUiIHRvIGVudmlyb25tZW50cyB3aXRoCisJCSAqIGRpZmZlcmVudCBz ZWFyY2hfcGF0aCBzZXR0aW5ncy4gUmF0aGVyIHRoYW4gaW5qZWN0IHdoYXQgd291bGQgYmUKKwkJ ICogcmVwZXRpdGl2ZSBjYWxscyB0byBvdmVycmlkZSBzZWFyY2ggcGF0aCBhbGwgb3ZlciB0aGUg cGxhY2UsIHdlIGRvCisJCSAqIGl0IGNlbnRyYWxseSBoZXJlLgorCQkgKi8KKwkJb3ZlcnJpZGVQ YXRoID0gR2V0T3ZlcnJpZGVTZWFyY2hQYXRoKEN1cnJlbnRNZW1vcnlDb250ZXh0KTsKKwkJb3Zl cnJpZGVQYXRoLT5zY2hlbWFzID0gTklMOworCQlvdmVycmlkZVBhdGgtPmFkZENhdGFsb2cgPSBm YWxzZTsKKwkJb3ZlcnJpZGVQYXRoLT5hZGRUZW1wID0gdHJ1ZTsKKwkJUHVzaE92ZXJyaWRlU2Vh cmNoUGF0aChvdmVycmlkZVBhdGgpOworCisJCWRlZmV4cHIgPSBub2RlVG9TdHJpbmcoZGVmLT5j b29rZWRfZGVmYXVsdCk7CisJCW5ld3N1Yi0+dXNpbmdleHByID0gVGV4dERhdHVtR2V0Q1N0cmlu ZyhEaXJlY3RGdW5jdGlvbkNhbGwyKHBnX2dldF9leHByLAorCQkJCQkJCQkJCQkJCQkJCQlDU3Ry aW5nR2V0VGV4dERhdHVtKGRlZmV4cHIpLAorCQkJCQkJCQkJCQkJCQkJCQlSZWxhdGlvbkdldFJl bGlkKHJlbCkpKTsKKworCQlQb3BPdmVycmlkZVNlYXJjaFBhdGgoKTsKKwl9CisJZWxzZQorCQlu ZXdzdWItPnVzaW5nZXhwciA9IE5VTEw7CisKKwljdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1 cnJlbnRDb21tYW5kLT5kLmFsdGVyVGFibGUuc3ViY21kcyA9CisJCWxhcHBlbmQoY3VycmVudEV2 ZW50VHJpZ2dlclN0YXRlLT5jdXJyZW50Q29tbWFuZC0+ZC5hbHRlclRhYmxlLnN1YmNtZHMsIG5l d3N1Yik7CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKK30KKworLyoKKyAqIEV2 ZW50VHJpZ2dlckFsdGVyVHlwZUVuZAorICoJCUZpbmlzaCB1cCBzYXZpbmcgYW4gQUxURVIgVFlQ RSBjb21tYW5kLCBhbmQgYWRkIGl0IHRvIGNvbW1hbmQgbGlzdC4KKyAqLwordm9pZAorRXZlbnRU cmlnZ2VyQWx0ZXJUeXBlRW5kKE5vZGUgKnN1YmNtZCwgT2JqZWN0QWRkcmVzcyBhZGRyZXNzLCBi b29sIHJld3JpdGUpCit7CisJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CisJQ29sbGVjdGVkQVRTdWJj bWQgKm5ld3N1YjsKKwlMaXN0Q2VsbCAgICpjZWxsOworCUNvbGxlY3RlZENvbW1hbmQgKmNtZDsK KwlBbHRlclRhYmxlQ21kICphbHRzdWJjbWQgPSAoQWx0ZXJUYWJsZUNtZCAqKXN1YmNtZDsKKwor CS8qIGlnbm9yZSBpZiBldmVudCB0cmlnZ2VyIGNvbnRleHQgbm90IHNldCwgb3IgY29sbGVjdGlv biBkaXNhYmxlZCAqLworCWlmICghY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlIHx8CisJCWN1cnJl bnRFdmVudFRyaWdnZXJTdGF0ZS0+Y29tbWFuZENvbGxlY3Rpb25JbmhpYml0ZWQpCisJCXJldHVy bjsKKworCWNtZCA9IGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVudENvbW1hbmQ7CisK KwlBc3NlcnQoSXNBKHN1YmNtZCwgQWx0ZXJUYWJsZUNtZCkpOworCUFzc2VydChjbWQgIT0gTlVM TCk7CisJQXNzZXJ0KE9pZElzVmFsaWQoY21kLT5kLmFsdGVyVGFibGUub2JqZWN0SWQpKTsKKwor CWZvcmVhY2goY2VsbCwgY21kLT5kLmFsdGVyVGFibGUuc3ViY21kcykKKwl7CisJCUNvbGxlY3Rl ZEFUU3ViY21kICpzdWIgPSAoQ29sbGVjdGVkQVRTdWJjbWQgKikgbGZpcnN0KGNlbGwpOworCQlB bHRlclRhYmxlQ21kICpjb2xsY21kID0gKEFsdGVyVGFibGVDbWQgKikgc3ViLT5wYXJzZXRyZWU7 CisKKwkJaWYgKGNvbGxjbWQtPnN1YnR5cGUgPT0gYWx0c3ViY21kLT5zdWJ0eXBlICYmCisJCQlh ZGRyZXNzLmNsYXNzSWQgPT0gc3ViLT5hZGRyZXNzLmNsYXNzSWQgJiYKKwkJCWFkZHJlc3Mub2Jq ZWN0SWQgPT0gc3ViLT5hZGRyZXNzLm9iamVjdElkICYmCisJCQlhZGRyZXNzLm9iamVjdFN1Yklk ID09IHN1Yi0+YWRkcmVzcy5vYmplY3RTdWJJZCkKKwkJeworCQkJY21kLT5kLmFsdGVyVGFibGUu cmV3cml0ZSB8PSByZXdyaXRlOworCQkJcmV0dXJuOworCQl9CisJfQorCisJb2xkY3h0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3h0KTsKKworCW5l d3N1YiA9IHBhbGxvYyhzaXplb2YoQ29sbGVjdGVkQVRTdWJjbWQpKTsKKwluZXdzdWItPmFkZHJl c3MgPSBhZGRyZXNzOworCW5ld3N1Yi0+cGFyc2V0cmVlID0gY29weU9iamVjdChzdWJjbWQpOwor CisJY21kLT5kLmFsdGVyVGFibGUucmV3cml0ZSB8PSByZXdyaXRlOworCWNtZC0+ZC5hbHRlclRh YmxlLnN1YmNtZHMgPSBsYXBwZW5kKGNtZC0+ZC5hbHRlclRhYmxlLnN1YmNtZHMsIG5ld3N1Yik7 CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKK30KKwogLyoKICAqIEV2ZW50VHJp Z2dlckFsdGVyVGFibGVFbmQKICAqCQlGaW5pc2ggdXAgc2F2aW5nIGFuIEFMVEVSIFRBQkxFIGNv bW1hbmQsIGFuZCBhZGQgaXQgdG8gY29tbWFuZCBsaXN0LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YwppbmRleCBjMTVlOTQzZjFkLi5kMGU2NDliYWFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YwpAQCAtNDc0Miw2ICs0NzQyLDkgQEAgQVRQcmVwQ21kKExpc3QgKip3cXVldWUsIFJlbGF0aW9u IHJlbCwgQWx0ZXJUYWJsZUNtZCAqY21kLAogCQkJY21kID0gQVRQYXJzZVRyYW5zZm9ybUNtZCh3 cXVldWUsIHRhYiwgcmVsLCBjbWQsIHJlY3Vyc2UsIGxvY2ttb2RlLAogCQkJCQkJCQkJICBBVF9Q QVNTX1VOU0VULCBjb250ZXh0KTsKIAkJCUFzc2VydChjbWQgIT0gTlVMTCk7CisKKwkJCUV2ZW50 VHJpZ2dlckFsdGVyVHlwZVN0YXJ0KGNtZCwgcmVsKTsKKwogCQkJLyogUGVyZm9ybXMgb3duIHJl Y3Vyc2lvbiAqLwogCQkJQVRQcmVwQWx0ZXJDb2x1bW5UeXBlKHdxdWV1ZSwgdGFiLCByZWwsIHJl Y3Vyc2UsIHJlY3Vyc2luZywgY21kLAogCQkJCQkJCQkgIGxvY2ttb2RlLCBjb250ZXh0KTsKQEAg LTUwMTMsNiArNTAxNiw3IEBAIEFURXhlY0NtZChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJ bmZvICp0YWIsCiB7CiAJT2JqZWN0QWRkcmVzcyBhZGRyZXNzID0gSW52YWxpZE9iamVjdEFkZHJl c3M7CiAJUmVsYXRpb24JcmVsID0gdGFiLT5yZWw7CisJYm9vbAkJY29tbWFuZENvbGxlY3RlZCA9 IGZhbHNlOwogCiAJc3dpdGNoIChjbWQtPnN1YnR5cGUpCiAJewpAQCAtNTEzNiw2ICs1MTQwLDgg QEAgQVRFeGVjQ21kKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJY2Fz ZSBBVF9BbHRlckNvbHVtblR5cGU6CS8qIEFMVEVSIENPTFVNTiBUWVBFICovCiAJCQkvKiBwYXJz ZSB0cmFuc2Zvcm1hdGlvbiB3YXMgZG9uZSBlYXJsaWVyICovCiAJCQlhZGRyZXNzID0gQVRFeGVj QWx0ZXJDb2x1bW5UeXBlKHRhYiwgcmVsLCBjbWQsIGxvY2ttb2RlKTsKKwkJCUV2ZW50VHJpZ2dl ckFsdGVyVHlwZUVuZCgoTm9kZSAqKSBjbWQsIGFkZHJlc3MsIHRhYi0+cmV3cml0ZSk7CisJCQlj b21tYW5kQ29sbGVjdGVkID0gdHJ1ZTsKIAkJCWJyZWFrOwogCQljYXNlIEFUX0FsdGVyQ29sdW1u R2VuZXJpY09wdGlvbnM6CS8qIEFMVEVSIENPTFVNTiBPUFRJT05TICovCiAJCQlhZGRyZXNzID0K QEAgLTUzMDgsOCArNTMxNCw4IEBAIEFURXhlY0NtZChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFi bGVJbmZvICp0YWIsCiAJLyoKIAkgKiBSZXBvcnQgdGhlIHN1YmNvbW1hbmQgdG8gaW50ZXJlc3Rl ZCBldmVudCB0cmlnZ2Vycy4KIAkgKi8KLQlpZiAoY21kKQotCQlFdmVudFRyaWdnZXJDb2xsZWN0 QWx0ZXJUYWJsZVN1YmNtZCgoTm9kZSAqKSBjbWQsIGFkZHJlc3MpOworCWlmIChjbWQgJiYgIWNv bW1hbmRDb2xsZWN0ZWQpCisJCUV2ZW50VHJpZ2dlckNvbGxlY3RBbHRlclRhYmxlU3ViY21kKChO b2RlICopIGNtZCwgYWRkcmVzcywgdGFiLT5yZXdyaXRlKTsKIAogCS8qCiAJICogQnVtcCB0aGUg Y29tbWFuZCBjb3VudGVyIHRvIGVuc3VyZSB0aGUgbmV4dCBzdWJjb21tYW5kIGluIHRoZSBzZXF1 ZW5jZQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oCmluZGV4IDVlZDZlY2U1NTUuLjI4 YjM0ODZiOWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIu aAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmgKQEAgLTE2LDYgKzE2 LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL2RlcGVuZGVuY3kuaCIKICNpbmNsdWRlICJjYXRhbG9n L29iamVjdGFkZHJlc3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2V2ZW50X3RyaWdnZXIuaCIK KyNpbmNsdWRlICJsaWIvaWxpc3QuaCIKICNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCiAj aW5jbHVkZSAidGNvcC9jbWR0YWcuaCIKICNpbmNsdWRlICJ0Y29wL2RlcGFyc2VfdXRpbGl0eS5o IgpAQCAtMjksNiArMzAsNDQgQEAgdHlwZWRlZiBzdHJ1Y3QgRXZlbnRUcmlnZ2VyRGF0YQogCUNv bW1hbmRUYWcJdGFnOwogfSBFdmVudFRyaWdnZXJEYXRhOwogCit0eXBlZGVmIHN0cnVjdCBFdmVu dFRyaWdnZXJRdWVyeVN0YXRlCit7CisJLyogbWVtb3J5IGNvbnRleHQgZm9yIHRoaXMgc3RhdGUn cyBvYmplY3RzICovCisJTWVtb3J5Q29udGV4dCBjeHQ7CisKKwkvKiBzcWxfZHJvcCAqLworCXNs aXN0X2hlYWQJU1FMRHJvcExpc3Q7CisJYm9vbAkJaW5fc3FsX2Ryb3A7CisKKwkvKiB0YWJsZV9y ZXdyaXRlICovCisJT2lkCQkJdGFibGVfcmV3cml0ZV9vaWQ7CS8qIEludmFsaWRPaWQsIG9yIHNl dCBmb3IgdGFibGVfcmV3cml0ZQorCQkJCQkJCQkJICogZXZlbnQgKi8KKwlpbnQJCQl0YWJsZV9y ZXdyaXRlX3JlYXNvbjsJLyogQVRfUkVXUklURSByZWFzb24gKi8KKworCS8qIFN1cHBvcnQgZm9y IGNvbW1hbmQgY29sbGVjdGlvbiAqLworCWJvb2wJCWNvbW1hbmRDb2xsZWN0aW9uSW5oaWJpdGVk OworCUNvbGxlY3RlZENvbW1hbmQgKmN1cnJlbnRDb21tYW5kOworCUxpc3QJICAgKmNvbW1hbmRM aXN0OwkvKiBsaXN0IG9mIENvbGxlY3RlZENvbW1hbmQ7IHNlZQorCQkJCQkJCQkgKiBkZXBhcnNl X3V0aWxpdHkuaCAqLworCXN0cnVjdCBFdmVudFRyaWdnZXJRdWVyeVN0YXRlICpwcmV2aW91czsK K30gRXZlbnRUcmlnZ2VyUXVlcnlTdGF0ZTsKKworLyogU3VwcG9ydCBmb3IgZHJvcHBlZCBvYmpl Y3RzICovCit0eXBlZGVmIHN0cnVjdCBTUUxEcm9wT2JqZWN0Cit7CisJT2JqZWN0QWRkcmVzcyBh ZGRyZXNzOworCWNvbnN0IGNoYXIgKnNjaGVtYW5hbWU7CisJY29uc3QgY2hhciAqb2JqbmFtZTsK Kwljb25zdCBjaGFyICpvYmppZGVudGl0eTsKKwljb25zdCBjaGFyICpvYmplY3R0eXBlOworCUxp c3QJICAgKmFkZHJuYW1lczsKKwlMaXN0CSAgICphZGRyYXJnczsKKwlib29sCQlvcmlnaW5hbDsK Kwlib29sCQlub3JtYWw7CisJYm9vbAkJaXN0ZW1wOworCXNsaXN0X25vZGUJbmV4dDsKK30gU1FM RHJvcE9iamVjdDsKKwogI2RlZmluZSBBVF9SRVdSSVRFX0FMVEVSX1BFUlNJU1RFTkNFCTB4MDEK ICNkZWZpbmUgQVRfUkVXUklURV9ERUZBVUxUX1ZBTAkJCTB4MDIKICNkZWZpbmUgQVRfUkVXUklU RV9DT0xVTU5fUkVXUklURQkJMHgwNApAQCAtNzEsNyArMTEwLDEyIEBAIGV4dGVybiB2b2lkIEV2 ZW50VHJpZ2dlckNvbGxlY3RTaW1wbGVDb21tYW5kKE9iamVjdEFkZHJlc3MgYWRkcmVzcywKIGV4 dGVybiB2b2lkIEV2ZW50VHJpZ2dlckFsdGVyVGFibGVTdGFydChOb2RlICpwYXJzZXRyZWUpOwog ZXh0ZXJuIHZvaWQgRXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZVJlbGlkKE9pZCBvYmplY3RJZCk7CiBl eHRlcm4gdm9pZCBFdmVudFRyaWdnZXJDb2xsZWN0QWx0ZXJUYWJsZVN1YmNtZChOb2RlICpzdWJj bWQsCi0JCQkJCQkJCQkJCQlPYmplY3RBZGRyZXNzIGFkZHJlc3MpOworCQkJCQkJCQkJCQkJT2Jq ZWN0QWRkcmVzcyBhZGRyZXNzLAorCQkJCQkJCQkJCQkJYm9vbCByZXdyaXRlKTsKKworZXh0ZXJu IHZvaWQgRXZlbnRUcmlnZ2VyQWx0ZXJUeXBlU3RhcnQoQWx0ZXJUYWJsZUNtZCAqc3ViY21kLCBS ZWxhdGlvbiByZWwpOworZXh0ZXJuIHZvaWQgRXZlbnRUcmlnZ2VyQWx0ZXJUeXBlRW5kKE5vZGUg KnN1YmNtZCwgT2JqZWN0QWRkcmVzcyBhZGRyZXNzLAorCQkJCQkJCQkJIGJvb2wgcmV3cml0ZSk7 CiBleHRlcm4gdm9pZCBFdmVudFRyaWdnZXJBbHRlclRhYmxlRW5kKHZvaWQpOwogCiBleHRlcm4g dm9pZCBFdmVudFRyaWdnZXJDb2xsZWN0R3JhbnQoSW50ZXJuYWxHcmFudCAqaXN0bXQpOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvdGNvcC9kZXBhcnNlX3V0aWxpdHkuaCBiL3NyYy9pbmNsdWRl L3Rjb3AvZGVwYXJzZV91dGlsaXR5LmgKaW5kZXggYjU4NTgxMGI5YS4uMTgzMWVjOWFhZSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9kZXBhcnNlX3V0aWxpdHkuaAorKysgYi9zcmMvaW5j bHVkZS90Y29wL2RlcGFyc2VfdXRpbGl0eS5oCkBAIC0zOSw2ICszOSw3IEBAIHR5cGVkZWYgc3Ry dWN0IENvbGxlY3RlZEFUU3ViY21kCiB7CiAJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOwkJLyogYWZm ZWN0ZWQgY29sdW1uLCBjb25zdHJhaW50LCBpbmRleCwgLi4uICovCiAJTm9kZQkgICAqcGFyc2V0 cmVlOworCWNoYXIJICAgKnVzaW5nZXhwcjsKIH0gQ29sbGVjdGVkQVRTdWJjbWQ7CiAKIHR5cGVk ZWYgc3RydWN0IENvbGxlY3RlZENvbW1hbmQKQEAgLTYyLDYgKzYzLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgQ29sbGVjdGVkQ29tbWFuZAogCQl7CiAJCQlPaWQJCQlvYmplY3RJZDsKIAkJCU9pZAkJCWNs YXNzSWQ7CisJCQlib29sCQlyZXdyaXRlOwogCQkJTGlzdAkgICAqc3ViY21kczsKIAkJfQkJCWFs dGVyVGFibGU7CiAKLS0gCjIuMzQuMQoK --0000000000004a587505fe3cb10a Content-Type: application/octet-stream; name="0004-Apply-the-DDL-change-as-that-same-user-th-2023_06_16.patch" Content-Disposition: attachment; filename="0004-Apply-the-DDL-change-as-that-same-user-th-2023_06_16.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_liyf2xe53 RnJvbSA2MTBlMGIwODRlMzIyOWM1NzNkYjk3YTk1N2Y3ODI3NjM4ZWUwNTRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMTYgSnVuIDIwMjMgMDk6Mzk6MzUgKzA1MzAKU3ViamVjdDogW1BBVENIIDQv NF0gQXBwbHkgdGhlIERETCBjaGFuZ2UgYXMgdGhhdCBzYW1lIHVzZXIgdGhhdCBleGVjdXRlZCB0 aGUKIERETCBvbiBwdWJsaXNoZXIKCjEuIENoYW5nZSBldmVudCB0cmlnZ2VyIGZ1bmN0aW9ucyB0 byBjb2xsZWN0IHRoZSBjdXJyZW50IHJvbGUgaW4KQ29sbGVjdGVkQ29tbWFuZC4KCjIuIENoYW5n ZSBEZXBhcnNlciBmdW5jdGlvbiBkZXBhcnNlX3V0aWxpdHlfY29tbWFuZCB0byBlbmNvZGUgb3du ZXIgcm9sZSBpbiB0aGUKdG9wLWxldmVsIGVsZW1lbnQgc3VjaCBhcyB7bXlvd25lcjpyb2xlX25h bWUsIGZtdDouLi4sIGlkZW50aXR5Oi4uLn0gb2YgdGhlCmRlcGFyc2VkIGpzb25iIG91dHB1dCBm b3IgY29tbWFuZHMgdGhhdCBjcmVhdGUgZGF0YWJhc2Ugb2JqZWN0cy4gQWxzbyBjaGFuZ2UKZnVu Y3Rpb24gZGVwYXJzZV9kZGxfanNvbl90b19zdHJpbmcgdG8gcmV0cmlldmUgdGhlIG15b3duZXIg ZWxlbWVudCBmcm9tIGEKanNvbmIgc3RyaW5nLgoKMy4gSW50cm9kdWNlIGEgbmV3IHN1YnNjcmlw dGlvbiBvcHRpb24gbWF0Y2hfZGRsX293bmVyOiB3aGVuIHR1cm5lZCBvbiwgdGhlCmFwcGx5IHdv cmtlciB3aWxsIGFwcGx5IERETCBtZXNzYWdlcyBpbiB0aGUgcm9sZSByZXRyaWV2ZWQgZnJvbSB0 aGUgIm15b3duZXIiCmZpZWxkIG9mIHRoZSBkZXBhcnNlZCBqc29uYiBzdHJpbmcuIFRoZSBkZWZh dWx0IHZhbHVlIG9mIG1hdGNoX2RkbF9vd25lciBpcyBvbi4KLS0tCiBzcmMvYmFja2VuZC9jYXRh bG9nL3BnX3N1YnNjcmlwdGlvbi5jICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5k cy9kZGxkZXBhcnNlLmMgICAgICAgICAgICB8ICA0MyArKysrKy0KIHNyYy9iYWNrZW5kL2NvbW1h bmRzL2RkbGpzb24uYyAgICAgICAgICAgICAgIHwgIDI1ICsrLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXZlbnRfdHJpZ2dlci5jICAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv c3Vic2NyaXB0aW9uY21kcy5jICAgICAgfCAgMjggKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9kZGx0cmlnZ2VyLmMgfCAgIDYgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYyAgICAgfCAgMTQgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMg ICAgICAgICAgICAgICAgICAgIHwgIDEzICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAg ICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAg ICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRp b24uaCAgICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvdGNvcC9kZGxkZXBhcnNlLmggICAgICAg ICAgICAgICAgfCAgMTEgKy0KIHNyYy9pbmNsdWRlL3Rjb3AvZGVwYXJzZV91dGlsaXR5LmggICAg ICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91 dCAgIHwgMTUyICsrKysrKysrKy0tLS0tLS0tLS0KIDE0IGZpbGVzIGNoYW5nZWQsIDIxNyBpbnNl cnRpb25zKCspLCA5NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX3N1YnNjcmlwdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRp b24uYwppbmRleCBkMDdmODhjZTI4Li4yZDgyZmJmYWQyIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf c3Vic2NyaXB0aW9uLmMKQEAgLTczLDYgKzczLDcgQEAgR2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJp ZCwgYm9vbCBtaXNzaW5nX29rKQogCXN1Yi0+ZGlzYWJsZW9uZXJyID0gc3ViZm9ybS0+c3ViZGlz YWJsZW9uZXJyOwogCXN1Yi0+cGFzc3dvcmRyZXF1aXJlZCA9IHN1YmZvcm0tPnN1YnBhc3N3b3Jk cmVxdWlyZWQ7CiAJc3ViLT5ydW5hc293bmVyID0gc3ViZm9ybS0+c3VicnVuYXNvd25lcjsKKwlz dWItPm1hdGNoZGRsb3duZXIgPSBzdWJmb3JtLT5zdWJtYXRjaGRkbG93bmVyOwogCiAJLyogR2V0 IGNvbm5pbmZvICovCiAJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKFNVQlNDUklQVElP Tk9JRCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbGRlcGFyc2UuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2RkbGRlcGFyc2UuYwppbmRleCA0ODY2MDg1NDIyLi4zMGNkZTMy ZmFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxkZXBhcnNlLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsZGVwYXJzZS5jCkBAIC0zMTIsNiArMzEyLDE4IEBAIG5l d19qc29uYl9WQShKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBjaGFyICpwYXJlbnRLZXksIGNoYXIg KmZtdCwKIAlyZXR1cm4gdmFsdWU7CiB9CiAKKy8qCisgKiBQcm9jZXNzIHRoZSByb2xlIHN0cmlu ZyBpbnRvIHRoZSBvdXRwdXQgcGFyc2Ugc3RhdGUuCisgKi8KK3N0YXRpYyB2b2lkCityb2xlX3Rv X2pzb25iX2VsZW1lbnQoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgY2hhciAqb3duZXIpCit7CisJ aWYgKG93bmVyID09IE5VTEwpCisJCXJldHVybjsKKworCW5ld19qc29uYl9WQShzdGF0ZSwgTlVM TCwgTlVMTCwgZmFsc2UsIDEsICJteW93bmVyIiwgamJ2U3RyaW5nLCBvd25lcik7Cit9CisKIC8q CiAgKiBBIGhlbHBlciByb3V0aW5lIHRvIGluc2VydCBqc29uYiBmb3IgdHlwSWQgdG8gdGhlIG91 dHB1dCBwYXJzZSBzdGF0ZS4KICAqLwpAQCAtMTY3NSw3ICsxNjg3LDcgQEAgZGVwYXJzZV93aXRo T2JqX1RvSnNvbmIoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgY2hhciAqcGFyZW50S2V5LAogICog JXt0YWJsZXNwYWNlfXMKICAqLwogc3RhdGljIEpzb25iICoKLWRlcGFyc2VfQ3JlYXRlU3RtdChP aWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK2RlcGFyc2VfQ3JlYXRlU3RtdChPaWQgb2Jq ZWN0SWQsIE5vZGUgKnBhcnNldHJlZSwgY2hhciAqb3duZXIpCiB7CiAJQ3JlYXRlU3RtdCAqbm9k ZSA9IChDcmVhdGVTdG10ICopIHBhcnNldHJlZTsKIAlSZWxhdGlvbglyZWxhdGlvbiA9IHJlbGF0 aW9uX29wZW4ob2JqZWN0SWQsIEFjY2Vzc1NoYXJlTG9jayk7CkBAIC0xNjkxLDYgKzE3MDMsOSBA QCBkZXBhcnNlX0NyZWF0ZVN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCiAJLyog bWFyayB0aGUgYmVnaW4gb2YgUk9PVCBvYmplY3QgYW5kIHN0YXJ0IGFkZGluZyBlbGVtZW50cyB0 byBpdC4gKi8KIAlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwp OwogCisJLyogY3JlYXRlIG93bmVyIGpzb25iIGVsZW1lbnQgKi8KKwlyb2xlX3RvX2pzb25iX2Vs ZW1lbnQoc3RhdGUsIG93bmVyKTsKKwogCS8qIFBFUlNJU1RFTkNFICovCiAJYXBwZW5kU3RyaW5n SW5mb1N0cmluZygmZm10U3RyLCAiQ1JFQVRFICV7cGVyc2lzdGVuY2V9cyBUQUJMRSIpOwogCW5l d19qc29uYl9WQShzdGF0ZSwgTlVMTCwgTlVMTCwgZmFsc2UsIDEsCkBAIC0yODUwLDcgKzI4NjUs NyBAQCBkZXBhcnNlX0FsdGVyVGFibGVTdG10KENvbGxlY3RlZENvbW1hbmQgKmNtZCwgZGRsX2Rl cGFyc2VfY29udGV4dCAqIGNvbnRleHQpCiAgKiBDUkVBVEUgJXtwZXJzaXN0ZW5jZX1zIFNFUVVF TkNFICV7aWRlbnRpdHl9RCAle2RlZmluaXRpb246IH1zCiAgKi8KIHN0YXRpYyBKc29uYiAqCi1k ZXBhcnNlX0NyZWF0ZVNlcVN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCitkZXBh cnNlX0NyZWF0ZVNlcVN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUsIGNoYXIgKm93 bmVyKQogewogCVJlbGF0aW9uCXJlbGF0aW9uOwogCUZvcm1fcGdfc2VxdWVuY2Ugc2VxZm9ybTsK QEAgLTI4NzEsNiArMjg4Niw5IEBAIGRlcGFyc2VfQ3JlYXRlU2VxU3RtdChPaWQgb2JqZWN0SWQs IE5vZGUgKnBhcnNldHJlZSkKIAkvKiBtYXJrIHRoZSBzdGFydCBvZiBST09UIG9iamVjdCAqLwog CXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CiAKKwkvKiBj cmVhdGUgb3duZXIganNvbmIgZWxlbWVudCAqLworCXJvbGVfdG9fanNvbmJfZWxlbWVudChzdGF0 ZSwgb3duZXIpOworCiAJbmV3X2pzb25iX1ZBKHN0YXRlLCBOVUxMLCAiQ1JFQVRFICV7cGVyc2lz dGVuY2V9cyBTRVFVRU5DRSIKIAkJCQkgIiAle2lmX25vdF9leGlzdHN9cyAle2lkZW50aXR5fUQg JXtkZWZpbml0aW9uOiB9cyIsCiAJCQkJIGZhbHNlLCAyLApAQCAtMjkyNiw3ICsyOTQ0LDcgQEAg ZGVwYXJzZV9DcmVhdGVTZXFTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQogICog QUxURVIgU0VRVUVOQ0UgJXtpZGVudGl0eX1EICV7ZGVmaW5pdGlvbjogfXMKICAqLwogc3RhdGlj IEpzb25iICoKLWRlcGFyc2VfQWx0ZXJTZXFTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0 cmVlKQorZGVwYXJzZV9BbHRlclNlcVN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUs IGNoYXIgKm93bmVyKQogewogCVJlbGF0aW9uCXJlbGF0aW9uOwogCUxpc3RDZWxsICAgKmNlbGw7 CkBAIC0yOTQ4LDYgKzI5NjYsOSBAQCBkZXBhcnNlX0FsdGVyU2VxU3RtdChPaWQgb2JqZWN0SWQs IE5vZGUgKnBhcnNldHJlZSkKIAkvKiBtYXJrIHRoZSBzdGFydCBvZiBST09UIG9iamVjdCAqLwog CXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CiAKKwkvKiBj cmVhdGUgb3duZXIganNvbmIgZWxlbWVudCAqLworCXJvbGVfdG9fanNvbmJfZWxlbWVudChzdGF0 ZSwgb3duZXIpOworCiAJbmV3X2pzb25iX1ZBKHN0YXRlLCBOVUxMLCAiQUxURVIgU0VRVUVOQ0Ug JXtpZGVudGl0eX1EICV7ZGVmaW5pdGlvbjogfXMiLAogCQkJCSBmYWxzZSwgMCk7CiAKQEAgLTMy MDUsMTAgKzMyMjYsMTEgQEAgZGVwYXJzZV9BbHRlck9iamVjdFNjaGVtYVN0bXQoT2JqZWN0QWRk cmVzcyBhZGRyZXNzLCBOb2RlICpwYXJzZXRyZWUsCiAgKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBj b3ZlciBhbGwgY2FzZXMgaGFuZGxlZCBpbiBQcm9jZXNzVXRpbGl0eVNsb3cuCiAgKi8KIHN0YXRp YyBKc29uYiAqCi1kZXBhcnNlX3NpbXBsZV9jb21tYW5kKENvbGxlY3RlZENvbW1hbmQgKmNtZCkK K2RlcGFyc2Vfc2ltcGxlX2NvbW1hbmQoQ29sbGVjdGVkQ29tbWFuZCAqY21kLCBkZGxfZGVwYXJz ZV9jb250ZXh0ICogY29udGV4dCkKIHsKIAlPaWQJCQlvYmplY3RJZDsKIAlOb2RlCSAgICpwYXJz ZXRyZWU7CisJY2hhcgkgICAqb3duZXIgPSBjb250ZXh0LT5pbmNsdWRlX293bmVyID8gY21kLT5y b2xlIDogTlVMTDsKIAogCUFzc2VydChjbWQtPnR5cGUgPT0gU0NUX1NpbXBsZSk7CiAKQEAgLTMy MjIsMTkgKzMyNDQsMjEgQEAgZGVwYXJzZV9zaW1wbGVfY29tbWFuZChDb2xsZWN0ZWRDb21tYW5k ICpjbWQpCiAJc3dpdGNoIChub2RlVGFnKHBhcnNldHJlZSkpCiAJewogCQljYXNlIFRfQWx0ZXJP YmplY3RTY2hlbWFTdG10OgorCQkJY29udGV4dC0+aW5jbHVkZV9vd25lciA9IGZhbHNlOwogCQkJ cmV0dXJuIGRlcGFyc2VfQWx0ZXJPYmplY3RTY2hlbWFTdG10KGNtZC0+ZC5zaW1wbGUuYWRkcmVz cywKIAkJCQkJCQkJCQkJCSBwYXJzZXRyZWUsCiAJCQkJCQkJCQkJCQkgY21kLT5kLnNpbXBsZS5z ZWNvbmRhcnlPYmplY3QpOwogCiAJCWNhc2UgVF9BbHRlclNlcVN0bXQ6Ci0JCQlyZXR1cm4gZGVw YXJzZV9BbHRlclNlcVN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CisJCQlyZXR1cm4gZGVwYXJz ZV9BbHRlclNlcVN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSwgb3duZXIpOwogCiAJCWNhc2UgVF9D cmVhdGVTZXFTdG10OgotCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlU2VxU3RtdChvYmplY3RJZCwg cGFyc2V0cmVlKTsKKwkJCXJldHVybiBkZXBhcnNlX0NyZWF0ZVNlcVN0bXQob2JqZWN0SWQsIHBh cnNldHJlZSwgb3duZXIpOwogCiAJCWNhc2UgVF9DcmVhdGVTdG10OgotCQkJcmV0dXJuIGRlcGFy c2VfQ3JlYXRlU3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKwkJCXJldHVybiBkZXBhcnNlX0Ny ZWF0ZVN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSwgb3duZXIpOwogCQljYXNlIFRfUmVuYW1lU3Rt dDoKKwkJCWNvbnRleHQtPmluY2x1ZGVfb3duZXIgPSBmYWxzZTsKIAkJCXJldHVybiBkZXBhcnNl X1JlbmFtZVN0bXQoY21kLT5kLnNpbXBsZS5hZGRyZXNzLCBwYXJzZXRyZWUpOwogCiAJCWRlZmF1 bHQ6CkBAIC0zMjg4LDEwICszMzEyLDExIEBAIGRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKENvbGxl Y3RlZENvbW1hbmQgKmNtZCwgZGRsX2RlcGFyc2VfY29udGV4dCAqY29udGV4dCkKIAlzd2l0Y2gg KGNtZC0+dHlwZSkKIAl7CiAJCWNhc2UgU0NUX1NpbXBsZToKLQkJCWpzb25iID0gZGVwYXJzZV9z aW1wbGVfY29tbWFuZChjbWQpOworCQkJanNvbmIgPSBkZXBhcnNlX3NpbXBsZV9jb21tYW5kKGNt ZCwgY29udGV4dCk7CiAJCQlicmVhazsKIAkJY2FzZSBTQ1RfQWx0ZXJUYWJsZToKIAkJCWpzb25i ID0gZGVwYXJzZV9BbHRlclRhYmxlU3RtdChjbWQsIGNvbnRleHQpOworCQkJY29udGV4dC0+aW5j bHVkZV9vd25lciA9IGZhbHNlOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9S LCAidW5leHBlY3RlZCBkZXBhcnNlIG5vZGUgdHlwZSAlZCIsIGNtZC0+dHlwZSk7CkBAIC0zMzI1 LDYgKzMzNTAsOCBAQCBkZGxfZGVwYXJzZV90b19qc29uKFBHX0ZVTkNUSU9OX0FSR1MpCiAJY2hh cgkgICAqY29tbWFuZDsKIAlkZGxfZGVwYXJzZV9jb250ZXh0IGNvbnRleHQ7CiAKKwljb250ZXh0 LmluY2x1ZGVfb3duZXIgPSBmYWxzZTsKKwogCS8qCiAJICogSW5pdGlhbGl6ZSB0aGUgbWF4X3Zv bGF0aWxpdHkgZmxhZyB0byBQUk9WT0xBVElMRV9JTU1VVEFCTEUsIHdoaWNoIGlzCiAJICogdGhl IG1pbmltdW0gdm9sYXRpbGl0eSBsZXZlbC4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2RkbGpzb24uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbGpzb24uYwppbmRleCBkNWM5 NjhiN2MxLi5lZmIwYjYxNTJmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxq c29uLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsanNvbi5jCkBAIC02OTYsNyArNjk2 LDcgQEAgZXhwYW5kX2pzb25iX2FycmF5KFN0cmluZ0luZm8gYnVmLCBjaGFyICpwYXJhbSwKICAq IFdvcmtob3JzZSBmb3IgZGRsX2RlcGFyc2VfZXhwYW5kX2NvbW1hbmQuCiAgKi8KIGNoYXIgKgot ZGVwYXJzZV9kZGxfanNvbl90b19zdHJpbmcoY2hhciAqanNvbl9zdHIpCitkZXBhcnNlX2RkbF9q c29uX3RvX3N0cmluZyhjaGFyICpqc29uX3N0ciwgY2hhcioqIG93bmVyKQogewogCURhdHVtCQlk OwogCUpzb25iCSAgICpqc29uYjsKQEAgLTcwNyw2ICs3MDcsMjcgQEAgZGVwYXJzZV9kZGxfanNv bl90b19zdHJpbmcoY2hhciAqanNvbl9zdHIpCiAJZCA9IERpcmVjdEZ1bmN0aW9uQ2FsbDEoanNv bmJfaW4sIFBvaW50ZXJHZXREYXR1bShqc29uX3N0cikpOwogCWpzb25iID0gKEpzb25iICopIERh dHVtR2V0UG9pbnRlcihkKTsKIAorCWlmIChvd25lciAhPSBOVUxMKQorCXsKKwkJY29uc3QgY2hh ciAqa2V5ID0gIm15b3duZXIiOworCQlKc29uYlZhbHVlICp2YWx1ZTsKKworCQl2YWx1ZSA9IGdl dEtleUpzb25WYWx1ZUZyb21Db250YWluZXIoJmpzb25iLT5yb290LCBrZXksIHN0cmxlbihrZXkp LCBOVUxMKTsKKwkJaWYgKHZhbHVlKQorCQl7CisJCQljaGFyICpzdHI7CisKKwkJCS8qIHZhbHVl LT52YWwuc3RyaW5nLnZhbCBtYXkgbm90IGJlIE5VTEwgdGVybWluYXRlZCAqLworCQkJc3RyID0g cGFsbG9jKHZhbHVlLT52YWwuc3RyaW5nLmxlbiArIDEpOworCQkJbWVtY3B5KHN0ciwgdmFsdWUt PnZhbC5zdHJpbmcudmFsLCB2YWx1ZS0+dmFsLnN0cmluZy5sZW4pOworCQkJc3RyW3ZhbHVlLT52 YWwuc3RyaW5nLmxlbl0gPSAnXDAnOworCQkJKm93bmVyID0gc3RyOworCQl9CisJCWVsc2UKKwkJ CS8qIG15b3duZXIgaXMgbm90IGdpdmVuIGluIHRoaXMganNvbmIsIGUuZy4gZm9yIERyb3AgQ29t bWFuZHMgKi8KKwkJCSpvd25lciA9IE5VTEw7CisJfQorCiAJZXhwYW5kX2ZtdF9yZWN1cnNpdmUo YnVmLCAmanNvbmItPnJvb3QpOwogCiAJcmV0dXJuIGJ1Zi0+ZGF0YTsKQEAgLTc0NCw3ICs3NjUs NyBAQCBkZGxfZGVwYXJzZV9leHBhbmRfY29tbWFuZChQR19GVU5DVElPTl9BUkdTKQogCiAJanNv bl9zdHIgPSB0ZXh0X3RvX2NzdHJpbmcoanNvbik7CiAKLQlQR19SRVRVUk5fVEVYVF9QKGNzdHJp bmdfdG9fdGV4dChkZXBhcnNlX2RkbF9qc29uX3RvX3N0cmluZyhqc29uX3N0cikpKTsKKwlQR19S RVRVUk5fVEVYVF9QKGNzdHJpbmdfdG9fdGV4dChkZXBhcnNlX2RkbF9qc29uX3RvX3N0cmluZyhq c29uX3N0ciwgTlVMTCkpKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2V2ZW50X3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIu YwppbmRleCAxNWUyNDNjYTdlLi4wMWUwZDU5YjkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9ldmVudF90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRf dHJpZ2dlci5jCkBAIC0xNDg4LDYgKzE0ODgsNyBAQCBFdmVudFRyaWdnZXJDb2xsZWN0U2ltcGxl Q29tbWFuZChPYmplY3RBZGRyZXNzIGFkZHJlc3MsCiAKIAljb21tYW5kLT50eXBlID0gU0NUX1Np bXBsZTsKIAljb21tYW5kLT5pbl9leHRlbnNpb24gPSBjcmVhdGluZ19leHRlbnNpb247CisJY29t bWFuZC0+cm9sZSA9IEdldFVzZXJOYW1lRnJvbUlkKEdldFVzZXJJZCgpLCBmYWxzZSk7CiAKIAlj b21tYW5kLT5kLnNpbXBsZS5hZGRyZXNzID0gYWRkcmVzczsKIAljb21tYW5kLT5kLnNpbXBsZS5z ZWNvbmRhcnlPYmplY3QgPSBzZWNvbmRhcnlPYmplY3Q7CkBAIC0xNTI0LDYgKzE1MjUsNyBAQCBF dmVudFRyaWdnZXJBbHRlclRhYmxlU3RhcnQoTm9kZSAqcGFyc2V0cmVlKQogCiAJY29tbWFuZC0+ dHlwZSA9IFNDVF9BbHRlclRhYmxlOwogCWNvbW1hbmQtPmluX2V4dGVuc2lvbiA9IGNyZWF0aW5n X2V4dGVuc2lvbjsKKwljb21tYW5kLT5yb2xlID0gR2V0VXNlck5hbWVGcm9tSWQoR2V0VXNlcklk KCksIGZhbHNlKTsKIAogCWNvbW1hbmQtPmQuYWx0ZXJUYWJsZS5jbGFzc0lkID0gUmVsYXRpb25S ZWxhdGlvbklkOwogCWNvbW1hbmQtPmQuYWx0ZXJUYWJsZS5vYmplY3RJZCA9IEludmFsaWRPaWQ7 CkBAIC0xODA3LDYgKzE4MDksNyBAQCBFdmVudFRyaWdnZXJDb2xsZWN0R3JhbnQoSW50ZXJuYWxH cmFudCAqaXN0bXQpCiAJY29tbWFuZCA9IHBhbGxvYyhzaXplb2YoQ29sbGVjdGVkQ29tbWFuZCkp OwogCWNvbW1hbmQtPnR5cGUgPSBTQ1RfR3JhbnQ7CiAJY29tbWFuZC0+aW5fZXh0ZW5zaW9uID0g Y3JlYXRpbmdfZXh0ZW5zaW9uOworCWNvbW1hbmQtPnJvbGUgPSBHZXRVc2VyTmFtZUZyb21JZChH ZXRVc2VySWQoKSwgZmFsc2UpOwogCWNvbW1hbmQtPmQuZ3JhbnQuaXN0bXQgPSBpY29weTsKIAlj b21tYW5kLT5wYXJzZXRyZWUgPSBOVUxMOwogCkBAIC0xODM4LDYgKzE4NDEsNyBAQCBFdmVudFRy aWdnZXJDb2xsZWN0QWx0ZXJPcEZhbShBbHRlck9wRmFtaWx5U3RtdCAqc3RtdCwgT2lkIG9wZmFt b2lkLAogCWNvbW1hbmQgPSBwYWxsb2Moc2l6ZW9mKENvbGxlY3RlZENvbW1hbmQpKTsKIAljb21t YW5kLT50eXBlID0gU0NUX0FsdGVyT3BGYW1pbHk7CiAJY29tbWFuZC0+aW5fZXh0ZW5zaW9uID0g Y3JlYXRpbmdfZXh0ZW5zaW9uOworCWNvbW1hbmQtPnJvbGUgPSBHZXRVc2VyTmFtZUZyb21JZChH ZXRVc2VySWQoKSwgZmFsc2UpOwogCU9iamVjdEFkZHJlc3NTZXQoY29tbWFuZC0+ZC5vcGZhbS5h ZGRyZXNzLAogCQkJCQkgT3BlcmF0b3JGYW1pbHlSZWxhdGlvbklkLCBvcGZhbW9pZCk7CiAJY29t bWFuZC0+ZC5vcGZhbS5vcGVyYXRvcnMgPSBvcGVyYXRvcnM7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9z dWJzY3JpcHRpb25jbWRzLmMKaW5kZXggMWM4OGMyYmNjYi4uYjEwNjU1MDZlYSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtNzEsNiArNzEsNyBAQAogI2RlZmlu ZSBTVUJPUFRfUlVOX0FTX09XTkVSCQkJMHgwMDAwMTAwMAogI2RlZmluZSBTVUJPUFRfTFNOCQkJ CQkweDAwMDAyMDAwCiAjZGVmaW5lIFNVQk9QVF9PUklHSU4JCQkJMHgwMDAwNDAwMAorI2RlZmlu ZSBTVUJPUFRfTUFUQ0hfRERMX09XTkVSCQkweDAwMDA4MDAwCiAKIC8qIGNoZWNrIGlmIHRoZSAn dmFsJyBoYXMgJ2JpdHMnIHNldCAqLwogI2RlZmluZSBJc1NldCh2YWwsIGJpdHMpICAoKCh2YWwp ICYgKGJpdHMpKSA9PSAoYml0cykpCkBAIC05NSw2ICs5Niw3IEBAIHR5cGVkZWYgc3RydWN0IFN1 Yk9wdHMKIAlib29sCQlkaXNhYmxlb25lcnI7CiAJYm9vbAkJcGFzc3dvcmRyZXF1aXJlZDsKIAli b29sCQlydW5hc293bmVyOworCWJvb2wJCW1hdGNoZGRsb3duZXI7CiAJY2hhcgkgICAqb3JpZ2lu OwogCVhMb2dSZWNQdHIJbHNuOwogfSBTdWJPcHRzOwpAQCAtMTU3LDYgKzE1OSw4IEBAIHBhcnNl X3N1YnNjcmlwdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRp b25zLAogCQlvcHRzLT5ydW5hc293bmVyID0gZmFsc2U7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9v cHRzLCBTVUJPUFRfT1JJR0lOKSkKIAkJb3B0cy0+b3JpZ2luID0gcHN0cmR1cChMT0dJQ0FMUkVQ X09SSUdJTl9BTlkpOworCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX01BVENIX0RE TF9PV05FUikpCisJCW9wdHMtPm1hdGNoZGRsb3duZXIgPSB0cnVlOwogCiAJLyogUGFyc2Ugb3B0 aW9ucyAqLwogCWZvcmVhY2gobGMsIHN0bXRfb3B0aW9ucykKQEAgLTM1Myw2ICszNTcsMTUgQEAg cGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpzdG10 X29wdGlvbnMsCiAJCQlvcHRzLT5zcGVjaWZpZWRfb3B0cyB8PSBTVUJPUFRfTFNOOwogCQkJb3B0 cy0+bHNuID0gbHNuOwogCQl9CisJCWVsc2UgaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJP UFRfTUFUQ0hfRERMX09XTkVSKSAmJgorCQkJCSBzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJtYXRj aF9kZGxfb3duZXIiKSA9PSAwKQorCQl7CisJCQlpZiAoSXNTZXQob3B0cy0+c3BlY2lmaWVkX29w dHMsIFNVQk9QVF9NQVRDSF9ERExfT1dORVIpKQorCQkJCWVycm9yQ29uZmxpY3RpbmdEZWZFbGVt KGRlZmVsLCBwc3RhdGUpOworCisJCQlvcHRzLT5zcGVjaWZpZWRfb3B0cyB8PSBTVUJPUFRfTUFU Q0hfRERMX09XTkVSOworCQkJb3B0cy0+bWF0Y2hkZGxvd25lciA9IGRlZkdldEJvb2xlYW4oZGVm ZWwpOworCQl9CiAJCWVsc2UKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNP REVfU1lOVEFYX0VSUk9SKSwKQEAgLTU5MSw3ICs2MDQsOCBAQCBDcmVhdGVTdWJzY3JpcHRpb24o UGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQkJCQkg IFNVQk9QVF9TWU5DSFJPTk9VU19DT01NSVQgfCBTVUJPUFRfQklOQVJZIHwKIAkJCQkJICBTVUJP UFRfU1RSRUFNSU5HIHwgU1VCT1BUX1RXT1BIQVNFX0NPTU1JVCB8CiAJCQkJCSAgU1VCT1BUX0RJ U0FCTEVfT05fRVJSIHwgU1VCT1BUX1BBU1NXT1JEX1JFUVVJUkVEIHwKLQkJCQkJICBTVUJPUFRf UlVOX0FTX09XTkVSIHwgU1VCT1BUX09SSUdJTik7CisJCQkJCSAgU1VCT1BUX1JVTl9BU19PV05F UiB8IFNVQk9QVF9NQVRDSF9ERExfT1dORVIgfAorCQkJCQkgIFNVQk9QVF9PUklHSU4pOwogCXBh cnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKHBzdGF0ZSwgc3RtdC0+b3B0aW9ucywgc3VwcG9ydGVk X29wdHMsICZvcHRzKTsKIAogCS8qCkBAIC03MTAsNiArNzI0LDcgQEAgQ3JlYXRlU3Vic2NyaXB0 aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJ cHVibGljYXRpb25MaXN0VG9BcnJheShwdWJsaWNhdGlvbnMpOwogCXZhbHVlc1tBbnVtX3BnX3N1 YnNjcmlwdGlvbl9zdWJvcmlnaW4gLSAxXSA9CiAJCUNTdHJpbmdHZXRUZXh0RGF0dW0ob3B0cy5v cmlnaW4pOworCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJtYXRjaGRkbG93bmVyIC0g MV0gPSBCb29sR2V0RGF0dW0ob3B0cy5tYXRjaGRkbG93bmVyKTsKIAogCXR1cCA9IGhlYXBfZm9y bV90dXBsZShSZWxhdGlvbkdldERlc2NyKHJlbCksIHZhbHVlcywgbnVsbHMpOwogCkBAIC0xMTMy LDcgKzExNDcsOCBAQCBBbHRlclN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVy U3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQkJCQkJICBTVUJPUFRfU1lOQ0hST05PVVNfQ09N TUlUIHwgU1VCT1BUX0JJTkFSWSB8CiAJCQkJCQkJCSAgU1VCT1BUX1NUUkVBTUlORyB8IFNVQk9Q VF9ESVNBQkxFX09OX0VSUiB8CiAJCQkJCQkJCSAgU1VCT1BUX1BBU1NXT1JEX1JFUVVJUkVEIHwK LQkJCQkJCQkJICBTVUJPUFRfUlVOX0FTX09XTkVSIHwgU1VCT1BUX09SSUdJTik7CisJCQkJCQkJ CSAgU1VCT1BUX1JVTl9BU19PV05FUiB8IFNVQk9QVF9NQVRDSF9ERExfT1dORVIgfAorCQkJCQkJ CQkgIFNVQk9QVF9PUklHSU4pOwogCiAJCQkJcGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMocHN0 YXRlLCBzdG10LT5vcHRpb25zLAogCQkJCQkJCQkJCSAgIHN1cHBvcnRlZF9vcHRzLCAmb3B0cyk7 CkBAIC0xMjExLDYgKzEyMjcsMTQgQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0 YXRlLCBBbHRlclN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJCXJlcGxhY2VzW0FudW1fcGdf c3Vic2NyaXB0aW9uX3N1Ym9yaWdpbiAtIDFdID0gdHJ1ZTsKIAkJCQl9CiAKKwkJCQlpZiAoSXNT ZXQob3B0cy5zcGVjaWZpZWRfb3B0cywgU1VCT1BUX01BVENIX0RETF9PV05FUikpCisJCQkJewor CQkJCQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VibWF0Y2hkZGxvd25lciAtIDFdCisJ CQkJCQk9IEJvb2xHZXREYXR1bShvcHRzLm1hdGNoZGRsb3duZXIpOworCQkJCQlyZXBsYWNlc1tB bnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJtYXRjaGRkbG93bmVyIC0gMV0KKwkJCQkJCT0gdHJ1ZTsK KwkJCQl9CisKIAkJCQl1cGRhdGVfdHVwbGUgPSB0cnVlOwogCQkJCWJyZWFrOwogCQkJfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGx0cmlnZ2VyLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbHRyaWdnZXIuYwppbmRleCA2NzQwZDA3 NGZiLi40MGRmMGY2YzUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2RkbHRyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Rk bHRyaWdnZXIuYwpAQCAtMTU4LDYgKzE1OCw4IEBAIHB1YmxpY2F0aW9uX2RlcGFyc2VfdGFibGVf cmV3cml0ZShQR19GVU5DVElPTl9BUkdTKQogCQlkZGxfZGVwYXJzZV9jb250ZXh0IGNvbnRleHQ7 CiAJCWNoYXIJICAgKmpzb25fc3RyaW5nOwogCisJCWNvbnRleHQuaW5jbHVkZV9vd25lciA9IHRy dWU7CisKIAkJLyoKIAkJICogSW5pdGlhbGl6ZSB0aGUgbWF4X3ZvbGF0aWxpdHkgZmxhZyB0byBQ Uk9WT0xBVElMRV9JTU1VVEFCTEUsIHdoaWNoIGlzCiAJCSAqIHRoZSBtaW5pbXVtIHZvbGF0aWxp dHkgbGV2ZWwuCkBAIC0yNDksNiArMjUxLDggQEAgcHVibGljYXRpb25fZGVwYXJzZV9kZGxfY29t bWFuZF9lbmQoUEdfRlVOQ1RJT05fQVJHUykKIAkJCWRkbF9kZXBhcnNlX2NvbnRleHQgY29udGV4 dDsKIAkJCWNoYXIJICAgKmpzb25fc3RyaW5nOwogCisJCQljb250ZXh0LmluY2x1ZGVfb3duZXIg PSB0cnVlOworCiAJCQkvKgogCQkJICogSW5pdGlhbGl6ZSB0aGUgbWF4X3ZvbGF0aWxpdHkgZmxh ZyB0byBQUk9WT0xBVElMRV9JTU1VVEFCTEUsIHdoaWNoIGlzCiAJCQkgKiB0aGUgbWluaW11bSB2 b2xhdGlsaXR5IGxldmVsLgpAQCAtMzI4LDYgKzMzMiw4IEBAIHB1YmxpY2F0aW9uX2RlcGFyc2Vf dGFibGVfaW5pdF93cml0ZShQR19GVU5DVElPTl9BUkdTKQogCXsKIAkJY2hhcgkgICAqanNvbl9z dHJpbmc7CiAKKwkJY29udGV4dC5pbmNsdWRlX293bmVyID0gdHJ1ZTsKKwogCQkvKgogCQkgKiBJ bml0aWFsaXplIHRoZSBtYXhfdm9sYXRpbGl0eSBmbGFnIHRvIFBST1ZPTEFUSUxFX0lNTVVUQUJM RSwgd2hpY2ggaXMKIAkJICogdGhlIG1pbmltdW0gdm9sYXRpbGl0eSBsZXZlbC4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDVkMmNkY2U1ZWMuLmMyMzNhMzY1 YmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMzM0NCwx MSArMzM0NCwxMyBAQCBhcHBseV9oYW5kbGVfZGRsKFN0cmluZ0luZm8gcykKIAljb25zdCBjaGFy ICpwcmVmaXggPSBOVUxMOwogCWNoYXIJICAgKm1lc3NhZ2UgPSBOVUxMOwogCWNoYXIJICAgKmRk bF9jb21tYW5kOworCWNoYXIJICAgKm93bmVyOwogCVNpemUJCXN6OwogCUxpc3QJICAgKnBhcnNl dHJlZV9saXN0OwogCUxpc3RDZWxsICAgKnBhcnNldHJlZV9pdGVtOwogCURlc3RSZWNlaXZlciAq cmVjZWl2ZXI7CiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCVVzZXJDb250ZXh0CQl1Y3h0 OwogCWNvbnN0IGNoYXIgKnNhdmVfZGVidWdfcXVlcnlfc3RyaW5nID0gZGVidWdfcXVlcnlfc3Ry aW5nOwogCiAJbWVzc2FnZSA9IGxvZ2ljYWxyZXBfcmVhZF9kZGwocywgJmxzbiwgJnByZWZpeCwg JnN6KTsKQEAgLTMzNjMsOSArMzM2NSwxNiBAQCBhcHBseV9oYW5kbGVfZGRsKFN0cmluZ0luZm8g cykKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseU1lc3NhZ2VDb250ZXh0KTsKIAotCWRk bF9jb21tYW5kID0gZGVwYXJzZV9kZGxfanNvbl90b19zdHJpbmcobWVzc2FnZSk7CisJZGRsX2Nv bW1hbmQgPSBkZXBhcnNlX2RkbF9qc29uX3RvX3N0cmluZyhtZXNzYWdlLCAmb3duZXIpOwogCWRl YnVnX3F1ZXJ5X3N0cmluZyA9IGRkbF9jb21tYW5kOwogCisJLyoKKwkgKiBJZiByZXF1ZXN0ZWQs IHNldCB0aGUgY3VycmVudCByb2xlIHRvIHRoZSBvd25lciB0aGF0IGV4ZWN1dGVkIHRoZQorCSAq IGNvbW1hbmQgb24gdGhlIHB1YmxpY2F0aW9uIHNlcnZlci4KKwkgKi8KKwlpZiAoTXlTdWJzY3Jp cHRpb24tPm1hdGNoZGRsb3duZXIgJiYgb3duZXIpCisJCVN3aXRjaFRvVW50cnVzdGVkVXNlcihn ZXRfcm9sZV9vaWQob3duZXIsIGZhbHNlKSwgJnVjeHQpOworCiAJLyogRGVzdE5vbmUgZm9yIGxv Z2ljYWwgcmVwbGljYXRpb24gKi8KIAlyZWNlaXZlciA9IENyZWF0ZURlc3RSZWNlaXZlcihEZXN0 Tm9uZSk7CiAJcGFyc2V0cmVlX2xpc3QgPSBwZ19wYXJzZV9xdWVyeShkZGxfY29tbWFuZCk7CkBA IC0zNDYwLDYgKzM0NjksOSBAQCBhcHBseV9oYW5kbGVfZGRsKFN0cmluZ0luZm8gcykKIAkJTWVt b3J5Q29udGV4dERlbGV0ZShwZXJfcGFyc2V0cmVlX2NvbnRleHQpOwogCX0KIAorCWlmIChNeVN1 YnNjcmlwdGlvbi0+bWF0Y2hkZGxvd25lciAmJiBvd25lcikKKwkJUmVzdG9yZVVzZXJDb250ZXh0 KCZ1Y3h0KTsKKwogCWRlYnVnX3F1ZXJ5X3N0cmluZyA9IHNhdmVfZGVidWdfcXVlcnlfc3RyaW5n OwogCiAJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDMzNDcyNmNk MGQuLmM3YmMyODc4MzYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysr IGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNDYwNyw2ICs0NjA3LDcgQEAgZ2V0U3Vi c2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KQogCWludAkJCWlfc3VicHVibGljYXRpb25zOwogCWlu dAkJCWlfc3ViYmluYXJ5OwogCWludAkJCWlfc3VicGFzc3dvcmRyZXF1aXJlZDsKKwlpbnQJCQlp X3N1Ym1hdGNoZGRsb3duZXI7CiAJaW50CQkJaSwKIAkJCQludHVwczsKIApAQCAtNDY2MSwxMSAr NDY2MiwxMyBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJaWYgKGZvdXQtPnJl bW90ZVZlcnNpb24gPj0gMTYwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJ CQkJCQkgIiBzLnN1Ym9yaWdpbixcbiIKLQkJCQkJCQkgIiBzLnN1YnBhc3N3b3JkcmVxdWlyZWRc biIpOworCQkJCQkJCSAiIHMuc3VicGFzc3dvcmRyZXF1aXJlZCxcbiIKKwkJCQkJCQkgIiBzLnN1 Ym1hdGNoZGRsb3duZXJcbiIpOwogCWVsc2UKIAkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksCiAJ CQkJCQkgICIgJyVzJyBBUyBzdWJvcmlnaW4sXG4iCi0JCQkJCQkgICIgJ3QnIEFTIHN1YnBhc3N3 b3JkcmVxdWlyZWRcbiIsCisJCQkJCQkgICIgJ3QnIEFTIHN1YnBhc3N3b3JkcmVxdWlyZWQsXG4i CisJCQkJCQkgICIgZmFsc2UgQVMgc3VibWF0Y2hkZGxvd25lclxuIiwKIAkJCQkJCSAgTE9HSUNB TFJFUF9PUklHSU5fQU5ZKTsKIAogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LApAQCAtNDY5 NSw2ICs0Njk4LDcgQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KQogCWlfc3ViZGlz YWJsZW9uZXJyID0gUFFmbnVtYmVyKHJlcywgInN1YmRpc2FibGVvbmVyciIpOwogCWlfc3Vib3Jp Z2luID0gUFFmbnVtYmVyKHJlcywgInN1Ym9yaWdpbiIpOwogCWlfc3VicGFzc3dvcmRyZXF1aXJl ZCA9IFBRZm51bWJlcihyZXMsICJzdWJwYXNzd29yZHJlcXVpcmVkIik7CisJaV9zdWJtYXRjaGRk bG93bmVyID0gUFFmbnVtYmVyKHJlcywgInN1Ym1hdGNoZGRsb3duZXIiKTsKIAogCXN1YmluZm8g PSBwZ19tYWxsb2MobnR1cHMgKiBzaXplb2YoU3Vic2NyaXB0aW9uSW5mbykpOwogCkBAIC00NzI3 LDYgKzQ3MzEsOCBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJCXN1YmluZm9b aV0uc3Vib3JpZ2luID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3N1Ym9yaWdpbikp OwogCQlzdWJpbmZvW2ldLnN1YnBhc3N3b3JkcmVxdWlyZWQgPQogCQkJcGdfc3RyZHVwKFBRZ2V0 dmFsdWUocmVzLCBpLCBpX3N1YnBhc3N3b3JkcmVxdWlyZWQpKTsKKwkJc3ViaW5mb1tpXS5zdWJt YXRjaGRkbG93bmVyID0KKwkJCXBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9zdWJtYXRj aGRkbG93bmVyKSk7CiAKIAkJLyogRGVjaWRlIHdoZXRoZXIgd2Ugd2FudCB0byBkdW1wIGl0ICov CiAJCXNlbGVjdER1bXBhYmxlT2JqZWN0KCYoc3ViaW5mb1tpXS5kb2JqKSwgZm91dCk7CkBAIC00 ODA1LDYgKzQ4MTEsOSBAQCBkdW1wU3Vic2NyaXB0aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFN1 YnNjcmlwdGlvbkluZm8gKnN1YmluZm8pCiAJaWYgKHBnX3N0cmNhc2VjbXAoc3ViaW5mby0+c3Vi b3JpZ2luLCBMT0dJQ0FMUkVQX09SSUdJTl9BTlkpICE9IDApCiAJCWFwcGVuZFBRRXhwQnVmZmVy KHF1ZXJ5LCAiLCBvcmlnaW4gPSAlcyIsIHN1YmluZm8tPnN1Ym9yaWdpbik7CiAKKwlpZiAoc3Ry Y21wKHN1YmluZm8tPnN1Ym1hdGNoZGRsb3duZXIsICJmIikgPT0gMCkKKwkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksICIsIG1hdGNoX2RkbF9vd25lciA9IGZhbHNlIik7CisKIAlpZiAoc3Ry Y21wKHN1YmluZm8tPnN1YnN5bmNjb21taXQsICJvZmYiKSAhPSAwKQogCQlhcHBlbmRQUUV4cEJ1 ZmZlcihxdWVyeSwgIiwgc3luY2hyb25vdXNfY29tbWl0ID0gJXMiLCBmbXRJZChzdWJpbmZvLT5z dWJzeW5jY29tbWl0KSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgg Yi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IDc2NzNkMTUzYWEuLjc3NTJlOTRiNmEg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuaApAQCAtNjY2LDYgKzY2Niw3IEBAIHR5cGVkZWYgc3RydWN0IF9TdWJzY3Jp cHRpb25JbmZvCiAJY2hhcgkgICAqc3Vic3luY2NvbW1pdDsKIAljaGFyCSAgICpzdWJwdWJsaWNh dGlvbnM7CiAJY2hhcgkgICAqc3VicGFzc3dvcmRyZXF1aXJlZDsKKwljaGFyCSAgICpzdWJtYXRj aGRkbG93bmVyOwogfSBTdWJzY3JpcHRpb25JbmZvOwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCA3NTBlYTE5 ZGMxLi5kYWFjY2IyNjYzIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysg Yi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtNjUwNSw3ICs2NTA1LDcgQEAgZGVzY3JpYmVT dWJzY3JpcHRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkKIAlQR3Jlc3Vs dCAgICpyZXM7CiAJcHJpbnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKIAlzdGF0aWMgY29u c3QgYm9vbCB0cmFuc2xhdGVfY29sdW1uc1tdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl LAotCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz ZSwgZmFsc2UsIGZhbHNlfTsKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2V9OwogCiAJaWYgKHBzZXQuc3Zl cnNpb24gPCAxMDAwMDApCiAJewpAQCAtNjU2NCwxMCArNjU2NCwxMiBAQCBkZXNjcmliZVN1YnNj cmlwdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlKQogCQkJYXBwZW5kUFFF eHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkgICIsIHN1Ym9yaWdpbiBBUyBcIiVzXCJcbiIKIAkJCQkJ CQkgICIsIHN1YnBhc3N3b3JkcmVxdWlyZWQgQVMgXCIlc1wiXG4iCi0JCQkJCQkJICAiLCBzdWJy dW5hc293bmVyIEFTIFwiJXNcIlxuIiwKKwkJCQkJCQkgICIsIHN1YnJ1bmFzb3duZXIgQVMgXCIl c1wiXG4iCisJCQkJCQkJICAiLCBzdWJtYXRjaGRkbG93bmVyIEFTIFwiJXNcIlxuIiwKIAkJCQkJ CQkgIGdldHRleHRfbm9vcCgiT3JpZ2luIiksCiAJCQkJCQkJICBnZXR0ZXh0X25vb3AoIlBhc3N3 b3JkIHJlcXVpcmVkIiksCi0JCQkJCQkJICBnZXR0ZXh0X25vb3AoIlJ1biBhcyBvd25lcj8iKSk7 CisJCQkJCQkJICBnZXR0ZXh0X25vb3AoIlJ1biBhcyBvd25lcj8iKSwKKwkJCQkJCQkgIGdldHRl eHRfbm9vcCgiTWF0Y2ggRERMIG93bmVyIikpOwogCiAJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYs CiAJCQkJCQkgICIsICBzdWJzeW5jY29tbWl0IEFTIFwiJXNcIlxuIgpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfc3Vic2NyaXB0aW9uLmgKaW5kZXggMWQ0MGVlYmM3OC4uYzk5Y2EyYjUwOSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBAIC05Myw2ICs5Myw5IEBAIENBVEFMT0cocGdf c3Vic2NyaXB0aW9uLDYxMDAsU3Vic2NyaXB0aW9uUmVsYXRpb25JZCkgQktJX1NIQVJFRF9SRUxB VElPTiBCS0lfUk9XCiAJYm9vbAkJc3VicnVuYXNvd25lcjsJLyogVHJ1ZSBpZiByZXBsaWNhdGlv biBzaG91bGQgZXhlY3V0ZSBhcyB0aGUKIAkJCQkJCQkJICogc3Vic2NyaXB0aW9uIG93bmVyICov CiAKKwlib29sCQlzdWJtYXRjaGRkbG93bmVyOwkvKiBUcnVlIGlmIHJlcGxpY2F0ZWQgb2JqZWN0 cyBieSBEREwgcmVwbGljYXRpb24KKwkJCQkJCQkJCSAqIHNob3VsZCBtYXRjaCB0aGUgb3JpZ2lu YWwgb3duZXIgb24gdGhlIHB1Ymxpc2hlciAqLworCiAjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkv KiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIAkvKiBDb25uZWN0aW9uIHN0 cmluZyB0byB0aGUgcHVibGlzaGVyICovCiAJdGV4dAkJc3ViY29ubmluZm8gQktJX0ZPUkNFX05P VF9OVUxMOwpAQCAtMTQ0LDYgKzE0Nyw4IEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgog CUxpc3QJICAgKnB1YmxpY2F0aW9uczsJLyogTGlzdCBvZiBwdWJsaWNhdGlvbiBuYW1lcyB0byBz dWJzY3JpYmUgdG8gKi8KIAljaGFyCSAgICpvcmlnaW47CQkJLyogT25seSBwdWJsaXNoIGRhdGEg b3JpZ2luYXRpbmcgZnJvbSB0aGUKIAkJCQkJCQkJICogc3BlY2lmaWVkIG9yaWdpbiAqLworCWJv b2wJCW1hdGNoZGRsb3duZXI7ICAvKiBJbmRpY2F0ZXMgaWYgcmVwbGljYXRlZCBvYmplY3RzIGJ5 IERETCByZXBsaWNhdGlvbgorCQkJCQkJCQkgKiBzaG91bGQgbWF0Y2ggdGhlIG9yaWdpbmFsIG93 bmVyIG9uIHRoZSBwdWJsaXNoZXIgKi8KIH0gU3Vic2NyaXB0aW9uOwogCiAvKiBEaXNhbGxvdyBz dHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvdGNvcC9kZGxkZXBhcnNlLmggYi9zcmMvaW5jbHVkZS90Y29wL2RkbGRlcGFyc2UuaApp bmRleCBjYWVmYjAzYmY2Li4zZjExMWJjMTU0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS90Y29w L2RkbGRlcGFyc2UuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL2RkbGRlcGFyc2UuaApAQCAtMTYs MTMgKzE2LDIyIEBACiAvKiBDb250ZXh0IGluZm8gbmVlZGVkIGZvciBkZXBhcnNpbmcgZGRsIGNv bW1hbmQgKi8KIHR5cGVkZWYgc3RydWN0CiB7CisJLyoKKwkgKiBpbmNsdWRlX293bmVyIGluZGlj YXRlcyBpZiB0aGUgb3duZXIvcm9sZSBvZiB0aGUgY29tbWFuZCBzaG91bGQgYmUKKwkgKiBpbmNs dWRlZCBpbiB0aGUgZGVwYXJzZWQgSnNvbiBvdXRwdXQuIEl0IGlzIHNldCB0byBmYWxzZSBmb3Ig YW55IGNvbW1hbmRzCisJICogdGhhdCBkb24ndCBDUkVBVEUgZGF0YWJhc2Ugb2JqZWN0cyAoQUxU RVIgY29tbWFuZHMgZm9yIGV4YW1wbGUpLCB0aGlzIGlzCisJICogdG8gYXZvaWQgZW5jb2Rpbmcg YW5kIHNlbmRpbmcgdGhlIG93bmVyIHRvIGRvd25zdHJlYW0gZm9yIHJlcGxheSBhcyBpdCBpcwor CSAqIHVubmVjZXNzYXJ5IGZvciBzdWNoIGNvbW1hbmRzLgorCSAqLworCWJvb2wJCWluY2x1ZGVf b3duZXI7CisKIAkvKiBUaGUgbWF4aW11bSB2b2xhdGlsaXR5IG9mIGZ1bmN0aW9ucyBpbiBleHBy ZXNzaW9ucyBvZiBhIERETCBjb21tYW5kLiAqLwogCWNoYXIJCW1heF92b2xhdGlsaXR5OwogfQkJ CWRkbF9kZXBhcnNlX2NvbnRleHQ7CiAKIGV4dGVybiBjaGFyICpkZXBhcnNlX3V0aWxpdHlfY29t bWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQsCiAJCQkJCQkJCQkgZGRsX2RlcGFyc2VfY29udGV4 dCAqIGNvbnRleHQpOwotZXh0ZXJuIGNoYXIgKmRlcGFyc2VfZGRsX2pzb25fdG9fc3RyaW5nKGNo YXIgKmpzb25iKTsKK2V4dGVybiBjaGFyICpkZXBhcnNlX2RkbF9qc29uX3RvX3N0cmluZyhjaGFy ICpqc29uYiwgY2hhcioqIG93bmVyKTsKIGV4dGVybiBjaGFyICpkZXBhcnNlX2Ryb3BfdGFibGUo Y29uc3QgY2hhciAqb2JqaWRlbnRpdHksIGNvbnN0IGNoYXIgKm9iamVjdHR5cGUsCiAJCQkJCQkJ CU5vZGUgKnBhcnNldHJlZSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvZGVwYXJz ZV91dGlsaXR5LmggYi9zcmMvaW5jbHVkZS90Y29wL2RlcGFyc2VfdXRpbGl0eS5oCmluZGV4IDE4 MzFlYzlhYWUuLjFmOWNjOTUzYzYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvZGVwYXJz ZV91dGlsaXR5LmgKKysrIGIvc3JjL2luY2x1ZGUvdGNvcC9kZXBhcnNlX3V0aWxpdHkuaApAQCAt NDcsNiArNDcsNyBAQCB0eXBlZGVmIHN0cnVjdCBDb2xsZWN0ZWRDb21tYW5kCiAJQ29sbGVjdGVk Q29tbWFuZFR5cGUgdHlwZTsKIAogCWJvb2wJCWluX2V4dGVuc2lvbjsKKwljaGFyCSAgICpyb2xl OwogCU5vZGUJICAgKnBhcnNldHJlZTsKIAogCXVuaW9uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3N1YnNjcmlwdGlvbi5vdXQKaW5kZXggM2MxYTA4NjllYy4uNjMwZjk0ZGE3MSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dApAQCAtMTE2LDE4ICsxMTYs MTggQEAgQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI0IENPTk5FQ1RJT04gJ2Ri bmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFUKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2Fz IGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCiBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGlj YXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5h YmxlIHRoZSBzdWJzY3JpcHRpb24sIGFuZCByZWZyZXNoIHRoZSBzdWJzY3JpcHRpb24uCiBcZFJz KyByZWdyZXNzX3Rlc3RzdWI0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgIE5hbWUgICAgICAgfCAg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5 IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmln aW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBTeW5jaHJvbm91cyBjb21t aXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0g cmVncmVzc190ZXN0c3ViNCB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IG5vbmUgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAg ICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAv MAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFz c3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hy b25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCist LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1 YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAg ICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBub25lICAgfCB0ICAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgfCBvZmYgICAg ICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykK IAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjQgU0VUIChvcmlnaW4gPSBhbnkp OwogXGRScysgcmVncmVzc190ZXN0c3ViNAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgICBOYW1lICAg ICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8 IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9y IHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgU3luY2hyb25v dXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQotIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAg ICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICAgTmFtZSAgICAgICB8ICAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkg fCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdp biB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IE1hdGNoIERETCBvd25lciB8 IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAg TFNOIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWI0IHwgcmVn cmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8 IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAg IHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgIHwg b2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAo MSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjM7CkBAIC0xNDUsMTAg KzE0NSwxMCBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04g J2Zvb2Jhcic7CiBFUlJPUjogIGludmFsaWQgY29ubmVjdGlvbiBzdHJpbmcgc3ludGF4OiBtaXNz aW5nICI9IiBhZnRlciAiZm9vYmFyIiBpbiBjb25uZWN0aW9uIGluZm8gc3RyaW5nCiAKIFxkUnMr Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qg b2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28t cGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVp cmVkIHwgUnVuIGFzIG93bmVyPyB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5p bmZvICAgICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJl Z3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAg fCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAg ICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAg ICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5h YmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1p dCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBh cyBvd25lcj8gfCBNYXRjaCBEREwgb3duZXIgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAg ICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgfCB0ICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YiBTRVQgUFVCTElDQVRJT04gdGVzdHB1YjIsIHRlc3RwdWIzIFdJVEggKHJl ZnJlc2ggPSBmYWxzZSk7CkBAIC0xNTYsMTAgKzE1NiwxMCBAQCBBTFRFUiBTVUJTQ1JJUFRJT04g cmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIn OwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9ICdu ZXduYW1lJyk7CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAocGFzc3dv cmRfcmVxdWlyZWQgPSBmYWxzZSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBO YW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVi bGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERp c2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25l cj8gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwg U2tpcCBMU04gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19z dWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAg IHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkg ICAgfCBmICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAg ICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8wCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1 YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBU d28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJl cXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IE1hdGNoIERETCBvd25lciB8IFN5bmNocm9ub3VzIGNv bW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1 YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAg fCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAg ICB8IGYgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAwLzAK ICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHBhc3N3 b3JkX3JlcXVpcmVkID0gdHJ1ZSk7CkBAIC0xNzQsMTAgKzE3NCwxMCBAQCBFUlJPUjogIHVucmVj b2duaXplZCBzdWJzY3JpcHRpb24gcGFyYW1ldGVyOiAiY3JlYXRlX3Nsb3QiCiAtLSBvawogQUxU RVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTS0lQIChsc24gPSAnMC8xMjM0NScpOwog XGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBP d25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8 IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2lu IHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgU3luY2hyb25vdXMgY29tbWl0 IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAg ICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAg ICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0MiB8IDAvMTIzNDUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAg TmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1 YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBE aXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3du ZXI/IHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENv bm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBm ICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAg IHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMTIzNDUKICgxIHJvdykKIAogLS0g b2sgLSB3aXRoIGxzbiA9IE5PTkUKQEAgLTE4NiwxMCArMTg2LDEwIEBAIEFMVEVSIFNVQlNDUklQ VElPTiByZWdyZXNzX3Rlc3RzdWIgU0tJUCAobHNuID0gTk9ORSk7CiBBTFRFUiBTVUJTQ1JJUFRJ T04gcmVncmVzc190ZXN0c3ViIFNLSVAgKGxzbiA9ICcwLzAnKTsKIEVSUk9SOiAgaW52YWxpZCBX QUwgbG9jYXRpb24gKExTTik6IDAvMAogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAg TmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1 YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBE aXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3du ZXI/IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8 IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nf c3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAg ICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55 ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAg ICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBz dWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwg VHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCBy ZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBNYXRjaCBEREwgb3duZXIgfCBTeW5jaHJvbm91cyBj b21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19z dWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAg IHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkg ICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8w CiAoMSByb3cpCiAKIEJFR0lOOwpAQCAtMjIxLDEwICsyMjEsMTAgQEAgQUxURVIgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfdGVzdHN1Yl9mb28gU0VUIChzeW5jaHJvbm91c19jb21taXQgPSBmb29iYXIp OwogRVJST1I6ICBpbnZhbGlkIHZhbHVlIGZvciBwYXJhbWV0ZXIgInN5bmNocm9ub3VzX2NvbW1p dCI6ICJmb29iYXIiCiBISU5UOiAgQXZhaWxhYmxlIHZhbHVlczogbG9jYWwsIHJlbW90ZV93cml0 ZSwgcmVtb3RlX2FwcGx5LCBvbiwgb2ZmLgogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0g ICAgICAgIE5hbWUgICAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVk IHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBj b21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBS dW4gYXMgb3duZXI/IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAg ICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3Rz dWJfZm9vIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIs dGVzdHB1YjN9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAg fCBsb2NhbCAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8w CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgICBOYW1lICAgICAgICAgfCAg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAg fCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJv ciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IE1hdGNoIERE TCBvd25lciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAgICAgICAg ICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg cmVncmVzc190ZXN0c3ViX2ZvbyB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgIHwgbG9jYWwgICAgICAgICAgICAgIHwgZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMAogKDEgcm93KQogCiAtLSByZW5hbWUgYmFj ayB0byBrZWVwIHRoZSByZXN0IHNpbXBsZQpAQCAtMjUzLDE5ICsyNTMsMTkgQEAgQ1JFQVRFIFNV QlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0JyBQVUIKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBp cyBub3QgY29ubmVjdGVkCiBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0 IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3Jp cHRpb24sIGFuZCByZWZyZXNoIHRoZSBzdWJzY3JpcHRpb24uCiBcZFJzKwotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlv bnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxl ZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8 IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBv d25lcj8gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAg fCBTa2lwIExTTiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgdCAgICAgIHwgb2ZmICAgICAgIHwg ZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBO YW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNh dGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9u IGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgTWF0 Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAg ICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190 ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0g ICB8IHQgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAg ICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAg ICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIg U0VUIChiaW5hcnkgPSBmYWxzZSk7CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3Vi IFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5h bWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0 aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24g ZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBTeW5j aHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAK LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwg ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFy eSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3Jp Z2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgTWF0Y2ggRERMIG93bmVy IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tp cCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVn cmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8 IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAg IHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgIHwg b2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAo MSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKQEAgLTI3NywyNyAr Mjc3LDI3IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04g J2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCCiBXQVJOSU5HOiAgc3Vic2NyaXB0aW9u IHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZAogSElOVDogIFRvIGluaXRpYXRlIHJl cGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3Qs IGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQgcmVmcmVzaCB0aGUgc3Vic2NyaXB0aW9uLgog XGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8 IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQg cmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAg Q29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3Vi IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYg ICAgICB8IG9uICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg YW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgb2ZmICAgICAgICAg ICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vi c2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAg fCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2Ug Y29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwg UnVuIGFzIG93bmVyPyB8IE1hdGNoIERETCBvd25lciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAg ICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBm ICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBkICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICB8IHQgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJ T04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gcGFyYWxsZWwpOwogXGRScysKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBz dWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFz ZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQg fCBSdW4gYXMgb3duZXI/IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8g ICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVz c19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBh cmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwg dCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9u cworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVk IHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwg RGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93 bmVyPyB8IE1hdGNoIERETCBvd25lciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENv bm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAg ICB8IHQgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNz X2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVz c190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gZmFsc2UpOwogQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogXGRScysKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRp b25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJs ZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQg fCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMg b3duZXI/IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAg IHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3Jp cHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8 IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAg ICAgICAgICAgfCBmICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAg TmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGlj YXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBv biBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IE1h dGNoIERETCBvd25lciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAg ICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf dGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9 ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAg ICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAg ICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3Rl eGlzdCB8IDAvMAogKDEgcm93KQogCiAtLSBmYWlsIC0gcHVibGljYXRpb24gYWxyZWFkeSBleGlz dHMKQEAgLTMxMiwxMCArMzEyLDEwIEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3Rz dWIgQUREIFBVQkxJQ0FUSU9OIHRlc3RwdWIxLCB0ZXN0cHViMiBXSVRIIChyZWZyCiBBTFRFUiBT VUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIEFERCBQVUJMSUNBVElPTiB0ZXN0cHViMSwgdGVz dHB1YjIgV0lUSCAocmVmcmVzaCA9IGZhbHNlKTsKIEVSUk9SOiAgcHVibGljYXRpb24gInRlc3Rw dWIxIiBpcyBhbHJlYWR5IGluIHN1YnNjcmlwdGlvbiAicmVncmVzc190ZXN0c3ViIgogXGRScysK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICAgICAgUHVibGljYXRpb24gICAgICAgICB8IEJp bmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwg T3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgU3luY2hyb25vdXMg Y29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9u X3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIsdGVzdHB1YjEsdGVzdHB1YjJ9IHwgZiAgICAgIHwg b2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAg fCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1 YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgRW5hYmxlZCB8ICAgICAgICAgUHVibGljYXRpb24gICAgICAgICB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFz c3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hy b25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCist LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1 YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIsdGVzdHB1 YjEsdGVzdHB1YjJ9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgfCB0ICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogLS0gZmFpbCAtIHB1YmxpY2F0aW9uIHVz ZWQgbW9yZSB0aGFuIG9uY2UKQEAgLTMzMCwxMCArMzMwLDEwIEBAIEVSUk9SOiAgcHVibGljYXRp b24gInRlc3RwdWIzIiBpcyBub3QgaW4gc3Vic2NyaXB0aW9uICJyZWdyZXNzX3Rlc3RzdWIiCiAt LSBvayAtIGRlbGV0ZSBwdWJsaWNhdGlvbnMKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rl c3RzdWIgRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMSwgdGVzdHB1YjIgV0lUSCAocmVmcmVzaCA9 IGZhbHNlKTsKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBT dHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8 IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IFN5bmNocm9ub3VzIGNvbW1pdCB8 ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jl c3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3Rw dWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IG9m ZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwg VHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCBy ZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBNYXRjaCBEREwgb3duZXIgfCBTeW5jaHJvbm91cyBj b21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlv bl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAg ICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogRFJPUCBT VUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViOwpAQCAtMzY5LDEwICszNjksMTAgQEAgQ1JFQVRF IFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0JyBQVUIKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1 dCBpcyBub3QgY29ubmVjdGVkCiBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBt dXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJz Y3JpcHRpb24sIGFuZCByZWZyZXNoIHRoZSBzdWJzY3JpcHRpb24uCiBcZFJzKwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5h YmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1p dCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBh cyBvd25lcj8gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAg ICAgfCBTa2lwIExTTiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNj cmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAg IHwgcCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9 cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAg ICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJs aWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxl IG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwg TWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8g ICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVz c190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1 Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAg ICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25v dGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIC0tZmFpbCAtIGFsdGVyIG9mIHR3b19waGFzZSBvcHRp b24gbm90IHN1cHBvcnRlZC4KQEAgLTM4MSwxMCArMzgxLDEwIEBAIEVSUk9SOiAgdW5yZWNvZ25p emVkIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXI6ICJ0d29fcGhhc2UiCiAtLSBidXQgY2FuIGFsdGVy IHN0cmVhbWluZyB3aGVuIHR3b19waGFzZSBlbmFibGVkCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gdHJ1ZSk7CiBcZFJzKwotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlv bnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxl ZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8 IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBv d25lcj8gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAg fCBTa2lwIExTTiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwg cCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBO YW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNh dGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9u IGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgTWF0 Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAg ICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190 ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0g ICB8IGYgICAgICB8IG9uICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAg ICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAg ICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIg U0VUIChzbG90X25hbWUgPSBOT05FKTsKQEAgLTM5NCwxMCArMzk0LDEwIEBAIENSRUFURSBTVUJT Q1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCcgUFVCCiBXQVJOSU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMg bm90IGNvbm5lY3RlZAogSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBt YW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0 aW9uLCBhbmQgcmVmcmVzaCB0aGUgc3Vic2NyaXB0aW9uLgogXGRScysKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25z Ci0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBE aXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3du ZXI/IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwg U2tpcCBMU04gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8IHAg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jl c3NfZG9lc25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFt ZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRp b24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBl cnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IE1hdGNo IERETCBvd25lciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAg ICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVz dHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAg fCBmICAgICAgfCBvbiAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAg ICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNF VCAoc2xvdF9uYW1lID0gTk9ORSk7CkBAIC00MTAsMTggKzQxMCwxOCBAQCBDUkVBVEUgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QnIFBVQgogV0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5v dCBjb25uZWN0ZWQKIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFu dWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlv biwgYW5kIHJlZnJlc2ggdGhlIHN1YnNjcmlwdGlvbi4KIFxkUnMrCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwot ICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwg UHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlz YWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVy PyB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNr aXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9u X3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAg ICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNz X2RvZXNub3RleGlzdCB8IDAvMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUg ICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9u IHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJy b3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBNYXRjaCBE REwgb3duZXIgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAg ICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwg ZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgICAg ICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qg fCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQg KGRpc2FibGVfb25fZXJyb3IgPSB0cnVlKTsKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAg TmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGlj YXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBv biBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IFN5 bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNO IAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAg ICAgICAgIHwgdCAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCB8IDAvMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAg fCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmlu YXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBP cmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBNYXRjaCBEREwgb3du ZXIgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBT a2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCBy ZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAg IHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgfCBhbnkg ICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAK ICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3Rf bmFtZSA9IE5PTkUpOwotLSAKMi4zNC4xCgo= --0000000000004a587505fe3cb10a Content-Type: application/octet-stream; name="0003-DDL-replication-for-Table-DDL-commands-2023_06_16.patch" Content-Disposition: attachment; filename="0003-DDL-replication-for-Table-DDL-commands-2023_06_16.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_liyf2xe42 RnJvbSAyN2U4NGE2YTdmNDE1MzQwMWM1N2VjZTI0N2QxYWY0ZjIwYTM0NTJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMTYgSnVuIDIwMjMgMDk6MzM6NTMgKzA1MzAKU3ViamVjdDogW1BBVENIIDMv NF0gRERMIHJlcGxpY2F0aW9uIGZvciBUYWJsZSBEREwgY29tbWFuZHMKCk9WRVJWSUVXCi0tLS0t LS0tCjEpIFRvIHN1cHBvcnQgRERMIHJlcGxpY2F0aW9uLCB3ZSB1c2UgdGhlIGV2ZW50IHRyaWdn ZXIgYW5kIERETCBkZXBhcnNpbmcKZmFjaWxpdGllcy4gRHVyaW5nIENSRUFURSBQVUJMSUNBVElP TiB3ZSByZWdpc3RlciBhICdjb21tYW5kIGVuZCcgdHJpZ2dlciB0aGF0CmRlcGFyc2VzIHRoZSBE REwgKGlmIHRoZSBEREwgaXMgYW5ub3RhdGVkIGFzIGRkbHJlcGxvayBmb3IgRERMIHJlcGxpY2F0 aW9uIGluCmNtZHRhZ2xpc3QuaCkgYXMgYSBKU09OIGJsb2IsIGFuZCBXQUwgbG9ncyBpdC4gVGhl IGV2ZW50IHRyaWdnZXIgaXMgYXV0b21hdGljYWxseQpyZW1vdmVkIGF0IHRoZSB0aW1lIG9mIERS T1AgUFVCTElDQVRJT04uIFRoZSBXQUxTZW5kZXIgZGVjb2RlcyB0aGUgV0FMIGFuZCBzZW5kcwpp dCBkb3duc3RyZWFtIHNpbWlsYXIgdG8gb3RoZXIgRE1MIGNvbW1hbmRzLiBUaGUgc3Vic2NyaWJl ciB0aGVuIGNvbnZlcnRzIEpTT04KYmFjayB0byB0aGUgRERMIGNvbW1hbmQgc3RyaW5nIGFuZCBl eGVjdXRlcyBpdC4gSW4gdGhlIHN1YnNjcmliZXIsIHdlIGFsc28gYWRkCnRoZSBuZXdseSBhZGRl ZCByZWwgdG8gcGdfc3Vic2NyaXB0aW9uX3JlbCBzbyB0aGF0IHRoZSBETUwgY2hhbmdlcyBvbiB0 aGUgbmV3CnRhYmxlIGNhbiBiZSByZXBsaWNhdGVkIHdpdGhvdXQgaGF2aW5nIHRvIG1hbnVhbGx5 IHJ1bgoiQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFBVQkxJQ0FUSU9OIi4KCjIpIEFk ZCBzdWJzY3JpcHRpb24gdGFwIHRlc3QgZm9yIERETCByZXBsaWNhdGlvbiBmb3IgVEFCTEUgcmVs YXRlZCBjb21tYW5kcy4KCkZvciBub24tcmV3cml0ZSBBTFRFUiBvYmplY3QgY29tbWFuZCBhbmQg Q1JFQVRFIG9iamVjdCBjb21tYW5kOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KV2UgZGVwYXJzZSB0aGUgY29tbWFuZCBhdCBk ZGxfY29tbWFuZF9lbmQgZXZlbnQgdHJpZ2dlciBhbmQgV0FMIGxvZyB0aGUKZGVwYXJzZWQgSlNP TiBzdHJpbmcuIFRoZSBXQUxTZW5kZXIgZGVjb2RlcyB0aGUgV0FMIGFuZCBzZW5kcyBpdCB0bwpz dWJzY3JpYmVyIGlmIHRoZSBjcmVhdGVkL2FsdGVyZWQgdGFibGUgaXMgcHVibGlzaGVkLgoKRm9y IERST1Agb2JqZWN0OgotLS0tLS0tLS0tLS0tLS0tClRoZSAnY29tbWFuZCBzdGFydCcgZXZlbnQg aGFuZGxlciBsb2dzIGEgZGRsIG1lc3NhZ2Ugd2l0aCB0aGUgcmVsaWRzIG9mCnRoZSB0YWJsZXMg dGhhdCBhcmUgZHJvcHBlZCB3aGljaCB0aGUgb3V0cHV0IHBsdWdpbiAocGdvdXRwdXQpIHN0b3Jl cyBpbgppdHMgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmUgYWZ0ZXIgdmVyaWZ5aW5nIHRoYXQgaXQg aXMgZm9yIGEgdGFibGUgdGhhdCBpcwpwYXJ0IG9mIHRoZSBwdWJsaWNhdGlvbi4gTGF0ZXIgdGhl ICdjb21tYW5kIGVuZCcgZXZlbnQgaGFuZGxlciBzZW5kcyB0aGUKYWN0dWFsIGRyb3AgbWVzc2Fn ZS4gT24gcmVjZWl2aW5nIHRoZSAnY29tbWFuZCBlbmQnLCBwZ291dHB1dCBzZW5kcyB0aGUKRFJP UCBjb21tYW5kIG9ubHkgaWYgaXQgaXMgZm9yIG9uZSBvZiB0aGUgcmVsaWRzIG1hcmtlZCBmb3Ig ZGVsZXRpb24uCgpUaGUgcmVhc29uIHdlIGhhdmUgdG8gZG8gdGhpcyBpcyBiZWNhdXNlLCBvbmNl IHRoZSBsb2dpY2FsIGRlY29kZXIKcmVjZWl2ZXMgdGhlICdjb21tYW5kIGVuZCcgbWVzc2FnZSwg IHRoZSByZWxpZCBvZiB0aGUgdGFibGUgaXMgbm8gbG9uZ2VyCnZhbGlkIGFzIGl0IGhhcyBiZWVu IGRlbGV0ZWQgYXMgcGFydCBvZiBpbnZhbGlkYXRpb25zIHJlY2VpdmVkIGZvciB0aGUKZHJvcCB0 YWJsZSBjb21tYW5kLiBJdCBpcyBubyBsb25nZXIgcG9zc2libGUgdG8gdmVyaWZ5IGlmIHRoZSB0 YWJsZSBpcwpwYXJ0IG9mIHRoZSBwdWJsaWNhdGlvbiBsaXN0IG9yIG5vdC4gVG8gbWFrZSB0aGlz IHBvc3NpYmxlLCB0d28gbW9yZSBlbGVtZW50cwphcmUgYWRkZWQgdG8gdGhlIGRkbCB4bG9nIGFu ZCBkZGwgbWVzc2FnZSwgKHJlbGlkIGFuZCBjbWR0eXBlKS4KCldlIGNvdWxkIGhhdmUgYWxzbyBo YW5kbGVkIGFsbCB0aGlzIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUsIGJ1dAp0aGF0IHdvdWxkIG1l YW4gc2VuZGluZyBzcHVyaW91cyBkZGwgbWVzc2FnZXMgZm9yIHRhYmxlcyB0aGF0IGFyZSBub3Qg cGFydApvZiB0aGUgcHVibGljYXRpb24uCgpGb3IgdGFibGVfcmV3cml0ZSBBTFRFUiBUQUJMRSBj b21tYW5kOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFeGVjdXRpbmcg YSBub24taW1tdXRhYmxlIGV4cHJlc3Npb24gZHVyaW5nIHRoZSB0YWJsZSByZXdyaXRlIHBoYXNl IGlzIG5vdAphbGxvd2VkLCBhcyBpdCBtYXkgcmVzdWx0IGluIGRpZmZlcmVudCBkYXRhIGJldHdl ZW4gcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyLgpXaGlsZSBzb21lIG1heSBzdWdnZXN0IGNvbnZl cnRpbmcgdGhlIHJld3JpdGUgaW5zZXJ0cyB0byB1cGRhdGVzIGFuZCByZXBsaWNhdGUKdGhlbSBh ZnRlIHRoZSBkZGwgY29tbWFuZCB0byBtYWludGFpbiBkYXRhIGNvbnNpc3RlbmN5LiBCdXQgaXQg ZG9lc24ndCB3b3JrIGlmCnRoZSByZXBsaWNhIGlkZW50aXR5IGNvbHVtbiBpcyBhbHRlcmVkIGlu IHRoZSBjb21tYW5kLiBUaGlzIGlzIGJlY2F1c2UgdGhlCnJld3JpdGUgaW5zZXJ0cyBkbyBub3Qg Y29udGFpbiB0aGUgb2xkIHZhbHVlcyBhbmQgdGhlcmVmb3JlIGNhbm5vdCBiZSBjb252ZXJ0ZWQK dG8gdXBkYXRlLgoKTElNSVQ6CkNvbW1hbmRzIGNvbnRhaW4gdm9sYXRpbGUgZnVuY3Rpb25zIGFy ZSBub3QgYWxsb3dlZC4gQmVjYXVzZQppdCdzIHBvc3NpYmxlIHRoZSBmdW5jdGlvbnMgY29udGFp biBEREwvRE1MIGluIHdoaWNoIGNhc2UgdGhlc2Ugb3BlcmF0aW9ucwp3aWxsIGJlIGV4ZWN1dGVk IHR3aWNlIGFuZCBjYXVzZSBkdXBsaWNhdGUgZGF0YS4gSW4gYWRkaXRpb24sIHdlIGRvbid0IGtu b3cKd2hldGhlciB0aGUgdGFibGVzIGJlaW5nIGFjY2Vzc2VkIGJ5IHRoZXNlIERETC9ETUwgYXJl IHB1Ymxpc2hlZCBvciBub3QuIFNvCmJsaW5kbHkgYWxsb3dpbmcgc3VjaCBmdW5jdGlvbnMgY2Fu IGFsbG93IHVuaW50ZW5kZWQgY2xhdXNlcyBsaWtlIHRoZSB0YWJsZXMKYWNjZXNzZWQgaW4gdGhv c2UgZnVuY3Rpb25zIG1heSBub3QgZXZlbiBleGlzdCBvbiB0aGUgc3Vic2NyaWJlci4KLS0tCiBj b250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvZGRsLm91dCAgICAgICAgfCAgMjcgKysKIGNv bnRyaWIvdGVzdF9kZWNvZGluZy9zcWwvZGRsLnNxbCAgICAgICAgICAgICB8ICAgNiArCiBjb250 cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNvZGluZy5jICAgICAgICAgfCAgNDggKysKIGRvYy9z cmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAgOSArCiBkb2Mvc3Jj L3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAgfCAxNzQgKysrKysrKysKIHNy Yy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9NYWtlZmlsZSAgICAgICAgICB8ICAgMSArCiAuLi4v YWNjZXNzL3JtZ3JkZXNjL2xvZ2ljYWxkZGxtc2dkZXNjLmMgICAgICAgfCAgNTIgKysrCiBzcmMv YmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbWVzb24uYnVpbGQgICAgICAgfCAgIDEgKwogc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vcm1nci5jICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9hbHRlci5jICAgICAgICAgICAgICAgICAgfCAgMTcgKwogc3JjL2JhY2tlbmQv Y29tbWFuZHMvZGRsZGVwYXJzZS5jICAgICAgICAgICAgIHwgIDg5ICsrKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYyAgICAgICAgICB8ICA1NiArKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jICAgICAgICB8IDIyOCArKysrKysrKystCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlICAgICAgfCAgIDIgKwogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGxtZXNzYWdlLmMgIHwgIDgzICsrKysKIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsdHJpZ2dlci5jICB8IDM0OSArKysrKysrKysr KysrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgICAgICB8ICA0 MSArKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMgICAgIHwgIDk3 ICsrKy0KIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jICAgICAgICB8ICAy NCArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkICAgfCAgIDIg Kwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jICAgICAgIHwgIDQzICsr CiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgICAgICAgfCAxMzUgKysr KysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAxOTEg KysrKysrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgICB8 IDI1MSArKysrKysrKy0tLQogc3JjL2JhY2tlbmQvdGNvcC9jbWR0YWcuYyAgICAgICAgICAgICAg ICAgICAgIHwgIDI2ICstCiBzcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyAgICAgICAgICAgICAg ICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAg ICAgICB8ICAgMSArCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAg ICAgfCAgMjYgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggICAgICAgICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCAgICAgICAgICAgICAg fCAgIDIgKy0KIHNyYy9iaW4vcGdfd2FsZHVtcC8uZ2l0aWdub3JlICAgICAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvYmluL3BnX3dhbGR1bXAvcm1ncmRlc2MuYyAgICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDIx ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvcm1ncmxpc3QuaCAgICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19ldmVudF90cmlnZ2VyLmggICAgICAgIHwgICAxICsK IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8ICAyMCArCiBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggICAgICAgICAgfCAgMjkgKy0KIHNy Yy9pbmNsdWRlL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCAgICAgICAgICB8ICAgOCArLQogc3Jj L2luY2x1ZGUvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmggICAgICAgIHwgIDE0ICsKIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaCAgICAgICAgICB8ICA2MCArKysKIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL2RlY29kZS5oICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCAgICAgICAgfCAgIDQgKwogc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vb3V0cHV0X3BsdWdpbi5oICAgICAgIHwgIDI3ICsrCiBzcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oICAgICAgIHwgIDM5ICsrCiBzcmMvaW5jbHVkZS90 Y29wL2NtZHRhZy5oICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL3Rj b3AvY21kdGFnbGlzdC5oICAgICAgICAgICAgICAgICB8IDM4NiArKysrKysrKy0tLS0tLS0tCiBz cmMvaW5jbHVkZS90Y29wL2RkbGRlcGFyc2UuaCAgICAgICAgICAgICAgICAgfCAgMTUgKy0KIHNy Yy9pbmNsdWRlL3V0aWxzL3JlbC5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0ICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0ICAgICB8IDQyMCArKysrKysrKyst LS0tLS0tLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCAgICAgICAgICAgICB8 ICAgMSArCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDM0X2RkbF9yZXBsaWNhdGlvbi5wbCAgICAgfCAz NzQgKysrKysrKysrKysrKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAg ICAgICAgICAgIHwgICA2ICsKIDU1IGZpbGVzIGNoYW5nZWQsIDI5MDQgaW5zZXJ0aW9ucygrKSwg NTI0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vzcy9y bWdyZGVzYy9sb2dpY2FsZGRsbXNnZGVzYy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGxtZXNzYWdlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbHRyaWdnZXIuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNF9kZGxfcmVwbGljYXRpb24ucGwKCmRp ZmYgLS1naXQgYS9jb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvZGRsLm91dCBiL2NvbnRy aWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9kZGwub3V0CmluZGV4IGQ1NWZiM2E2NjcuLmMxY2Yz OGQ0ZmEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9kZGwub3V0 CisrKyBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9kZGwub3V0CkBAIC04MzEsNiAr ODMxLDMzIEBAIFNFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdy ZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLCBOVUxMLCAnaW5jCiAtLS0tLS0KICgwIHJvd3MpCiAKKy0t IHRlc3QgcGdfbG9naWNhbF9lbWl0X2RkbF9tZXNzYWdlIHdpdGggYSBwcmFjdGljYWwgcGF5bG9h ZAorU0VMRUNUICdkZGwgbXNnMScgRlJPTSBwZ19sb2dpY2FsX2VtaXRfZGRsX21lc3NhZ2UoJ2Rk bCBtc2cxJywgMTYzOTQsIDEsICdtc2cxJyk7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgZGRs IG1zZzEKKygxIHJvdykKKworU0VMRUNUICdkZGwgbXNnMicgRlJPTSBwZ19sb2dpY2FsX2VtaXRf ZGRsX21lc3NhZ2UoJ2RkbCBtc2cyJywgMTYzOTQsIDEsICd7ImZtdCI6ICJDUkVBVEUgU0NIRU1B ICV7aWZfbm90X2V4aXN0c31zICV7bmFtZX1JICV7YXV0aG9yaXphdGlvbn1zIiwgIm5hbWUiOiAi Zm9vIiwgImF1dGhvcml6YXRpb24iOiB7ImZtdCI6ICJBVVRIT1JJWkFUSU9OICV7YXV0aG9yaXph dGlvbl9yb2xlfUkiLCAicHJlc2VudCI6IGZhbHNlLCAiYXV0aG9yaXphdGlvbl9yb2xlIjogbnVs bH0sICJpZl9ub3RfZXhpc3RzIjogIiJ9Jyk7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgZGRs IG1zZzIKKygxIHJvdykKKworU0VMRUNUICdkZGwgbXNnMycgRlJPTSBwZ19sb2dpY2FsX2VtaXRf ZGRsX21lc3NhZ2UoJ2RkbCBtc2czJywgMTYzOTQsIDEsICd7ImZtdCI6ICJDUkVBVEUgJXtwZXJz aXN0ZW5jZX1zIFRBQkxFICV7aWZfbm90X2V4aXN0c31zICV7aWRlbnRpdHl9RCAoJXt0YWJsZV9l bGVtZW50czosIH1zKSAle2luaGVyaXRzfXMgJXt0YWJsZXNwYWNlfXMgJXtvbl9jb21taXR9cyAl e3BhcnRpdGlvbl9ieX1zICV7YWNjZXNzX21ldGhvZH1zICV7d2l0aF9jbGF1c2V9cyIsICJpZGVu dGl0eSI6IHsib2JqbmFtZSI6ICJmb28iLCAic2NoZW1hbmFtZSI6ICJlbGVtZW50X3Rlc3QifSwg ImluaGVyaXRzIjogeyJmbXQiOiAiSU5IRVJJVFMgKCV7cGFyZW50czosIH1EKSIsICJwYXJlbnRz IjogbnVsbCwgInByZXNlbnQiOiBmYWxzZX0sICJvbl9jb21taXQiOiB7ImZtdCI6ICJPTiBDT01N SVQgJXtvbl9jb21taXRfdmFsdWV9cyIsICJwcmVzZW50IjogZmFsc2UsICJvbl9jb21taXRfdmFs dWUiOiBudWxsfSwgInRhYmxlc3BhY2UiOiB7ImZtdCI6ICJUQUJMRVNQQUNFICV7dGFibGVzcGFj ZX1JIiwgInByZXNlbnQiOiBmYWxzZSwgInRhYmxlc3BhY2UiOiBudWxsfSwgInBlcnNpc3RlbmNl IjogIiIsICJ3aXRoX2NsYXVzZSI6IHsiZm10IjogIldJVEgiLCAicHJlc2VudCI6IGZhbHNlfSwg InBhcnRpdGlvbl9ieSI6IHsiZm10IjogIlBBUlRJVElPTiBCWSAle2RlZmluaXRpb259cyIsICJw cmVzZW50IjogZmFsc2UsICJkZWZpbml0aW9uIjogbnVsbH0sICJhY2Nlc3NfbWV0aG9kIjogeyJm bXQiOiAiVVNJTkcgJXthY2Nlc3NfbWV0aG9kfUkiLCAicHJlc2VudCI6IGZhbHNlLCAiYWNjZXNz X21ldGhvZCI6IG51bGx9LCAiaWZfbm90X2V4aXN0cyI6ICIiLCAidGFibGVfZWxlbWVudHMiOiBb eyJmbXQiOiAiJXtuYW1lfUkgJXtjb2x0eXBlfVQgU1RPUkFHRSAle2NvbHN0b3JhZ2V9cyAle2Nv bXByZXNzaW9ufXMgJXtjb2xsYXRpb259cyAle25vdF9udWxsfXMgJXtkZWZhdWx0fXMgJXtnZW5l cmF0ZWRfY29sdW1ufXMiLCAibmFtZSI6ICJpZCIsICJ0eXBlIjogImNvbHVtbiIsICJjb2x0eXBl IjogeyJ0eXBtb2QiOiAiIiwgInR5cGFycmF5IjogZmFsc2UsICJ0eXBlbmFtZSI6ICJpbnQ0Iiwg InNjaGVtYW5hbWUiOiAicGdfY2F0YWxvZyJ9LCAiZGVmYXVsdCI6IHsiZm10IjogIkRFRkFVTFQi LCAicHJlc2VudCI6IGZhbHNlfSwgIm5vdF9udWxsIjogIiIsICJjb2xsYXRpb24iOiB7ImZtdCI6 ICJDT0xMQVRFIiwgInByZXNlbnQiOiBmYWxzZX0sICJjb2xzdG9yYWdlIjogInBsYWluIiwgImNv bXByZXNzaW9uIjogeyJmbXQiOiAiQ09NUFJFU1NJT04gJXtjb21wcmVzc2lvbl9tZXRob2R9SSIs ICJwcmVzZW50IjogZmFsc2UsICJjb21wcmVzc2lvbl9tZXRob2QiOiBudWxsfSwgImdlbmVyYXRl ZF9jb2x1bW4iOiB7ImZtdCI6ICJHRU5FUkFURUQgQUxXQVlTIEFTIiwgInByZXNlbnQiOiBmYWxz ZX19XX19Jyk7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgZGRsIG1zZzMKKygxIHJvdykKKwor U0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25f c2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3Rz JywgJzEnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgRERMIG1lc3NhZ2U6IHByZWZpeDogZGRsIG1zZzEsIHJlbGlkOiAxNjM5NCwgY21kdHlwZTog RHJvcCwgc3o6IDQgY29udGVudDogbXNnMQorIERETCBtZXNzYWdlOiBwcmVmaXg6IGRkbCBtc2cy LCByZWxpZDogMTYzOTQsIGNtZHR5cGU6IERyb3AsIHN6OiAyMTcgY29udGVudDogeyJmbXQiOiAi Q1JFQVRFIFNDSEVNQSAle2lmX25vdF9leGlzdHN9cyAle25hbWV9SSAle2F1dGhvcml6YXRpb259 cyIsICJuYW1lIjogImZvbyIsICJhdXRob3JpemF0aW9uIjogeyJmbXQiOiAiQVVUSE9SSVpBVElP TiAle2F1dGhvcml6YXRpb25fcm9sZX1JIiwgInByZXNlbnQiOiBmYWxzZSwgImF1dGhvcml6YXRp b25fcm9sZSI6IG51bGx9LCAiaWZfbm90X2V4aXN0cyI6ICIifQorIERETCBtZXNzYWdlOiBwcmVm aXg6IGRkbCBtc2czLCByZWxpZDogMTYzOTQsIGNtZHR5cGU6IERyb3AsIHN6OiAxMzk2IGNvbnRl bnQ6IHsiZm10IjogIkNSRUFURSAle3BlcnNpc3RlbmNlfXMgVEFCTEUgJXtpZl9ub3RfZXhpc3Rz fXMgJXtpZGVudGl0eX1EICgle3RhYmxlX2VsZW1lbnRzOiwgfXMpICV7aW5oZXJpdHN9cyAle3Rh Ymxlc3BhY2V9cyAle29uX2NvbW1pdH1zICV7cGFydGl0aW9uX2J5fXMgJXthY2Nlc3NfbWV0aG9k fXMgJXt3aXRoX2NsYXVzZX1zIiwgImlkZW50aXR5IjogeyJvYmpuYW1lIjogImZvbyIsICJzY2hl bWFuYW1lIjogImVsZW1lbnRfdGVzdCJ9LCAiaW5oZXJpdHMiOiB7ImZtdCI6ICJJTkhFUklUUyAo JXtwYXJlbnRzOiwgfUQpIiwgInBhcmVudHMiOiBudWxsLCAicHJlc2VudCI6IGZhbHNlfSwgIm9u X2NvbW1pdCI6IHsiZm10IjogIk9OIENPTU1JVCAle29uX2NvbW1pdF92YWx1ZX1zIiwgInByZXNl bnQiOiBmYWxzZSwgIm9uX2NvbW1pdF92YWx1ZSI6IG51bGx9LCAidGFibGVzcGFjZSI6IHsiZm10 IjogIlRBQkxFU1BBQ0UgJXt0YWJsZXNwYWNlfUkiLCAicHJlc2VudCI6IGZhbHNlLCAidGFibGVz cGFjZSI6IG51bGx9LCAicGVyc2lzdGVuY2UiOiAiIiwgIndpdGhfY2xhdXNlIjogeyJmbXQiOiAi V0lUSCIsICJwcmVzZW50IjogZmFsc2V9LCAicGFydGl0aW9uX2J5IjogeyJmbXQiOiAiUEFSVElU SU9OIEJZICV7ZGVmaW5pdGlvbn1zIiwgInByZXNlbnQiOiBmYWxzZSwgImRlZmluaXRpb24iOiBu dWxsfSwgImFjY2Vzc19tZXRob2QiOiB7ImZtdCI6ICJVU0lORyAle2FjY2Vzc19tZXRob2R9SSIs ICJwcmVzZW50IjogZmFsc2UsICJhY2Nlc3NfbWV0aG9kIjogbnVsbH0sICJpZl9ub3RfZXhpc3Rz IjogIiIsICJ0YWJsZV9lbGVtZW50cyI6IFt7ImZtdCI6ICIle25hbWV9SSAle2NvbHR5cGV9VCBT VE9SQUdFICV7Y29sc3RvcmFnZX1zICV7Y29tcHJlc3Npb259cyAle2NvbGxhdGlvbn1zICV7bm90 X251bGx9cyAle2RlZmF1bHR9cyAle2dlbmVyYXRlZF9jb2x1bW59cyIsICJuYW1lIjogImlkIiwg InR5cGUiOiAiY29sdW1uIiwgImNvbHR5cGUiOiB7InR5cG1vZCI6ICIiLCAidHlwYXJyYXkiOiBm YWxzZSwgInR5cGVuYW1lIjogImludDQiLCAic2NoZW1hbmFtZSI6ICJwZ19jYXRhbG9nIn0sICJk ZWZhdWx0IjogeyJmbXQiOiAiREVGQVVMVCIsICJwcmVzZW50IjogZmFsc2V9LCAibm90X251bGwi OiAiIiwgImNvbGxhdGlvbiI6IHsiZm10IjogIkNPTExBVEUiLCAicHJlc2VudCI6IGZhbHNlfSwg ImNvbHN0b3JhZ2UiOiAicGxhaW4iLCAiY29tcHJlc3Npb24iOiB7ImZtdCI6ICJDT01QUkVTU0lP TiAle2NvbXByZXNzaW9uX21ldGhvZH1JIiwgInByZXNlbnQiOiBmYWxzZSwgImNvbXByZXNzaW9u X21ldGhvZCI6IG51bGx9LCAiZ2VuZXJhdGVkX2NvbHVtbiI6IHsiZm10IjogIkdFTkVSQVRFRCBB TFdBWVMgQVMiLCAicHJlc2VudCI6IGZhbHNlfX1dfX0KKygzIHJvd3MpCisKIFNFTEVDVCBwZ19k cm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ3JlZ3Jlc3Npb25fc2xvdCcpOwogIHBnX2Ryb3BfcmVwbGlj YXRpb25fc2xvdCAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9jb250 cmliL3Rlc3RfZGVjb2Rpbmcvc3FsL2RkbC5zcWwgYi9jb250cmliL3Rlc3RfZGVjb2Rpbmcvc3Fs L2RkbC5zcWwKaW5kZXggNTcyODVhODI4Yy4uNTkyYmM4OWQ5NiAxMDA2NDQKLS0tIGEvY29udHJp Yi90ZXN0X2RlY29kaW5nL3NxbC9kZGwuc3FsCisrKyBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9z cWwvZGRsLnNxbApAQCAtNDMxLDYgKzQzMSwxMiBAQCBTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2lj YWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwgJ2luYwog LS0gZG9uZSwgZnJlZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QKIFNFTEVDVCBkYXRhIEZST00g cGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLCBOVUxM LCAnaW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7CiAKKy0tIHRl c3QgcGdfbG9naWNhbF9lbWl0X2RkbF9tZXNzYWdlIHdpdGggYSBwcmFjdGljYWwgcGF5bG9hZAor U0VMRUNUICdkZGwgbXNnMScgRlJPTSBwZ19sb2dpY2FsX2VtaXRfZGRsX21lc3NhZ2UoJ2RkbCBt c2cxJywgMTYzOTQsIDEsICdtc2cxJyk7CitTRUxFQ1QgJ2RkbCBtc2cyJyBGUk9NIHBnX2xvZ2lj YWxfZW1pdF9kZGxfbWVzc2FnZSgnZGRsIG1zZzInLCAxNjM5NCwgMSwgJ3siZm10IjogIkNSRUFU RSBTQ0hFTUEgJXtpZl9ub3RfZXhpc3RzfXMgJXtuYW1lfUkgJXthdXRob3JpemF0aW9ufXMiLCAi bmFtZSI6ICJmb28iLCAiYXV0aG9yaXphdGlvbiI6IHsiZm10IjogIkFVVEhPUklaQVRJT04gJXth dXRob3JpemF0aW9uX3JvbGV9SSIsICJwcmVzZW50IjogZmFsc2UsICJhdXRob3JpemF0aW9uX3Jv bGUiOiBudWxsfSwgImlmX25vdF9leGlzdHMiOiAiIn0nKTsKK1NFTEVDVCAnZGRsIG1zZzMnIEZS T00gcGdfbG9naWNhbF9lbWl0X2RkbF9tZXNzYWdlKCdkZGwgbXNnMycsIDE2Mzk0LCAxLCAneyJm bXQiOiAiQ1JFQVRFICV7cGVyc2lzdGVuY2V9cyBUQUJMRSAle2lmX25vdF9leGlzdHN9cyAle2lk ZW50aXR5fUQgKCV7dGFibGVfZWxlbWVudHM6LCB9cykgJXtpbmhlcml0c31zICV7dGFibGVzcGFj ZX1zICV7b25fY29tbWl0fXMgJXtwYXJ0aXRpb25fYnl9cyAle2FjY2Vzc19tZXRob2R9cyAle3dp dGhfY2xhdXNlfXMiLCAiaWRlbnRpdHkiOiB7Im9iam5hbWUiOiAiZm9vIiwgInNjaGVtYW5hbWUi OiAiZWxlbWVudF90ZXN0In0sICJpbmhlcml0cyI6IHsiZm10IjogIklOSEVSSVRTICgle3BhcmVu dHM6LCB9RCkiLCAicGFyZW50cyI6IG51bGwsICJwcmVzZW50IjogZmFsc2V9LCAib25fY29tbWl0 IjogeyJmbXQiOiAiT04gQ09NTUlUICV7b25fY29tbWl0X3ZhbHVlfXMiLCAicHJlc2VudCI6IGZh bHNlLCAib25fY29tbWl0X3ZhbHVlIjogbnVsbH0sICJ0YWJsZXNwYWNlIjogeyJmbXQiOiAiVEFC TEVTUEFDRSAle3RhYmxlc3BhY2V9SSIsICJwcmVzZW50IjogZmFsc2UsICJ0YWJsZXNwYWNlIjog bnVsbH0sICJwZXJzaXN0ZW5jZSI6ICIiLCAid2l0aF9jbGF1c2UiOiB7ImZtdCI6ICJXSVRIIiwg InByZXNlbnQiOiBmYWxzZX0sICJwYXJ0aXRpb25fYnkiOiB7ImZtdCI6ICJQQVJUSVRJT04gQlkg JXtkZWZpbml0aW9ufXMiLCAicHJlc2VudCI6IGZhbHNlLCAiZGVmaW5pdGlvbiI6IG51bGx9LCAi YWNjZXNzX21ldGhvZCI6IHsiZm10IjogIlVTSU5HICV7YWNjZXNzX21ldGhvZH1JIiwgInByZXNl bnQiOiBmYWxzZSwgImFjY2Vzc19tZXRob2QiOiBudWxsfSwgImlmX25vdF9leGlzdHMiOiAiIiwg InRhYmxlX2VsZW1lbnRzIjogW3siZm10IjogIiV7bmFtZX1JICV7Y29sdHlwZX1UIFNUT1JBR0Ug JXtjb2xzdG9yYWdlfXMgJXtjb21wcmVzc2lvbn1zICV7Y29sbGF0aW9ufXMgJXtub3RfbnVsbH1z ICV7ZGVmYXVsdH1zICV7Z2VuZXJhdGVkX2NvbHVtbn1zIiwgIm5hbWUiOiAiaWQiLCAidHlwZSI6 ICJjb2x1bW4iLCAiY29sdHlwZSI6IHsidHlwbW9kIjogIiIsICJ0eXBhcnJheSI6IGZhbHNlLCAi dHlwZW5hbWUiOiAiaW50NCIsICJzY2hlbWFuYW1lIjogInBnX2NhdGFsb2cifSwgImRlZmF1bHQi OiB7ImZtdCI6ICJERUZBVUxUIiwgInByZXNlbnQiOiBmYWxzZX0sICJub3RfbnVsbCI6ICIiLCAi Y29sbGF0aW9uIjogeyJmbXQiOiAiQ09MTEFURSIsICJwcmVzZW50IjogZmFsc2V9LCAiY29sc3Rv cmFnZSI6ICJwbGFpbiIsICJjb21wcmVzc2lvbiI6IHsiZm10IjogIkNPTVBSRVNTSU9OICV7Y29t cHJlc3Npb25fbWV0aG9kfUkiLCAicHJlc2VudCI6IGZhbHNlLCAiY29tcHJlc3Npb25fbWV0aG9k IjogbnVsbH0sICJnZW5lcmF0ZWRfY29sdW1uIjogeyJmbXQiOiAiR0VORVJBVEVEIEFMV0FZUyBB UyIsICJwcmVzZW50IjogZmFsc2V9fV19fScpOworU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2Fs X3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRl LXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnKTsKKwogU0VMRUNUIHBnX2Ryb3Bf cmVwbGljYXRpb25fc2xvdCgncmVncmVzc2lvbl9zbG90Jyk7CiAKIC8qIGNoZWNrIHRoYXQgdGhl IHNsb3QgaXMgZ29uZSAqLwpkaWZmIC0tZ2l0IGEvY29udHJpYi90ZXN0X2RlY29kaW5nL3Rlc3Rf ZGVjb2RpbmcuYyBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy90ZXN0X2RlY29kaW5nLmMKaW5kZXgg MTJkMWQwNTA1ZC4uOTI4NmY5NzI1OCAxMDA2NDQKLS0tIGEvY29udHJpYi90ZXN0X2RlY29kaW5n L3Rlc3RfZGVjb2RpbmcuYworKysgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNvZGlu Zy5jCkBAIC0xNCw5ICsxNCwxMSBAQAogCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAK KyNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgiCiAjaW5jbHVkZSAicmVwbGljYXRp b24vbG9naWNhbC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5oIgogCisjaW5jbHVk ZSAidGNvcC9kZGxkZXBhcnNlLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNs dWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgpAQCAt NzIsNiArNzQsMTIgQEAgc3RhdGljIHZvaWQgcGdfZGVjb2RlX21lc3NhZ2UoTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4LAogCQkJCQkJCSAgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLCBYTG9nUmVj UHRyIGxzbiwKIAkJCQkJCQkgIGJvb2wgdHJhbnNhY3Rpb25hbCwgY29uc3QgY2hhciAqcHJlZml4 LAogCQkJCQkJCSAgU2l6ZSBzeiwgY29uc3QgY2hhciAqbWVzc2FnZSk7CitzdGF0aWMgdm9pZCBw Z19kZWNvZGVfZGRsX21lc3NhZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAorCQkJCQkJ CQkgIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJICBYTG9nUmVjUHRyIG1lc3NhZ2Vf bHNuLAorCQkJCQkJCQkgIGNvbnN0IGNoYXIgKnByZWZpeCwgT2lkIHJlbGlkLAorCQkJCQkJCQkg IERlcGFyc2VkQ29tbWFuZFR5cGUgY21kdHlwZSwKKwkJCQkJCQkJICBTaXplIHN6LCBjb25zdCBj aGFyICptZXNzYWdlKTsKIHN0YXRpYyBib29sIHBnX2RlY29kZV9maWx0ZXJfcHJlcGFyZShMb2dp Y2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCB4aWQsCiAJ CQkJCQkJCQkgY29uc3QgY2hhciAqZ2lkKTsKQEAgLTEzNSw2ICsxNDMsNyBAQCBfUEdfb3V0cHV0 X3BsdWdpbl9pbml0KE91dHB1dFBsdWdpbkNhbGxiYWNrcyAqY2IpCiAJY2ItPmZpbHRlcl9ieV9v cmlnaW5fY2IgPSBwZ19kZWNvZGVfZmlsdGVyOwogCWNiLT5zaHV0ZG93bl9jYiA9IHBnX2RlY29k ZV9zaHV0ZG93bjsKIAljYi0+bWVzc2FnZV9jYiA9IHBnX2RlY29kZV9tZXNzYWdlOworCWNiLT5k ZGxfY2IgPSBwZ19kZWNvZGVfZGRsX21lc3NhZ2U7CiAJY2ItPmZpbHRlcl9wcmVwYXJlX2NiID0g cGdfZGVjb2RlX2ZpbHRlcl9wcmVwYXJlOwogCWNiLT5iZWdpbl9wcmVwYXJlX2NiID0gcGdfZGVj b2RlX2JlZ2luX3ByZXBhcmVfdHhuOwogCWNiLT5wcmVwYXJlX2NiID0gcGdfZGVjb2RlX3ByZXBh cmVfdHhuOwpAQCAtNzUwLDYgKzc1OSw0NSBAQCBwZ19kZWNvZGVfbWVzc2FnZShMb2dpY2FsRGVj b2RpbmdDb250ZXh0ICpjdHgsCiAJT3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVlKTsKIH0KIAor c3RhdGljIHZvaWQKK3BnX2RlY29kZV9kZGxfbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0 ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJICBYTG9nUmVjUHRyIG1lc3NhZ2Vf bHNuLCBjb25zdCBjaGFyICpwcmVmaXgsIE9pZCByZWxpZCwKKwkJCQkJICBEZXBhcnNlZENvbW1h bmRUeXBlIGNtZHR5cGUsIFNpemUgc3osIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCit7CisJT3V0cHV0 UGx1Z2luUHJlcGFyZVdyaXRlKGN0eCwgdHJ1ZSk7CisJYXBwZW5kU3RyaW5nSW5mbyhjdHgtPm91 dCwgIkRETCBtZXNzYWdlOiBwcmVmaXg6ICVzLCByZWxpZDogJXUsICIsCisJCQkJCSBwcmVmaXgs IHJlbGlkKTsKKworCXN3aXRjaChjbWR0eXBlKQorCXsKKwljYXNlIERDVF9TaW1wbGVDbWQ6CisJ CWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQsICJjbWR0eXBlOiBTaW1wbGUsICIpOworCQlicmVh azsKKwljYXNlIERDVF9UYWJsZURyb3BTdGFydDoKKwkJYXBwZW5kU3RyaW5nSW5mbyhjdHgtPm91 dCwgImNtZHR5cGU6IERyb3Agc3RhcnQsICIpOworCQlicmVhazsKKwljYXNlIERDVF9UYWJsZURy b3BFbmQ6CisJCWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQsICJjbWR0eXBlOiBEcm9wIGVuZCwg Iik7CisJCWJyZWFrOworCWNhc2UgRENUX1RhYmxlQWx0ZXI6CisJCWFwcGVuZFN0cmluZ0luZm8o Y3R4LT5vdXQsICJjbWR0eXBlOiBBbHRlciB0YWJsZSwgIik7CisJCWJyZWFrOworCWNhc2UgRENU X09iamVjdENyZWF0ZToKKwkJYXBwZW5kU3RyaW5nSW5mbyhjdHgtPm91dCwgImNtZHR5cGU6IENy ZWF0ZSwgIik7CisJCWJyZWFrOworCWNhc2UgRENUX09iamVjdERyb3A6CisJCWFwcGVuZFN0cmlu Z0luZm8oY3R4LT5vdXQsICJjbWR0eXBlOiBEcm9wLCAiKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoK KwkJYXBwZW5kU3RyaW5nSW5mbyhjdHgtPm91dCwgImNtZHR5cGU6IEludmFsaWQsICIpOworCQli cmVhazsKKwl9CisKKwlhcHBlbmRTdHJpbmdJbmZvKGN0eC0+b3V0LCAic3o6ICV6dSBjb250ZW50 OiAiLCBzeik7CisJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbyhjdHgtPm91dCwgbWVzc2FnZSwgc3op OworCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7Cit9CisKIHN0YXRpYyB2b2lkCiBwZ19k ZWNvZGVfc3RyZWFtX3N0YXJ0KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJICAg UmVvcmRlckJ1ZmZlclRYTiAqdHhuKQpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dz LnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCBlZDMyY2EwMzQ5Li4zNTY4 ZDA3MGFiIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtMzg2Myw2ICszODYzLDE1IEBAIFNDUkFNLVNIQS0y NTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJl cGxhY2VhYmxlPiZsCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAg PHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xl PSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmV2dGlzaW50ZXJuYWw8 L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBh cmE+CisgICAgICAgVHJ1ZSBpZiB0aGUgZXZlbnQgdHJpZ2dlciBpcyBpbnRlcm5hbGx5IGdlbmVy YXRlZC4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93Pgog ICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVt bl9kZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+ZXZ0dGFnczwvc3RydWN0ZmllbGQ+ IDx0eXBlPnRleHRbXTwvdHlwZT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJl cGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCmlu ZGV4IDU5Y2Y5MmU2YTkuLmExZGE4YmRkNDcgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dp Y2FsLXJlcGxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRp b24uc2dtbApAQCAtMTQ1Nyw2ICsxNDU3LDE4MCBAQCB0ZXN0X3N1Yj0jIFNFTEVDVCAqIEZST00g dDEgT1JERVIgQlkgaWQ7CiAKICA8L3NlY3QxPgogCisgPHNlY3QxIGlkPSJsb2dpY2FsLXJlcGxp Y2F0aW9uLWRkbCI+CisgIDx0aXRsZT5EREwgUmVwbGljYXRpb248L3RpdGxlPgorICA8cGFyYT4K KyAgICBEYXRhIERlZmluaXRpb24gTGFuZ3VhZ2UgKERETCkgY29tbWFuZHMgY2FuIGJlIHJlcGxp Y2F0ZWQgdXNpbmcgbG9naWNhbCByZXBsaWNhdGlvbi4KKyAgICBXaGVuIGVuYWJsZWQgdGhpcyBm ZWF0dXJlIGF1dG9tYXRpY2FsbHkgcmVwbGljYXRlcyBzdXBwb3J0ZWQgRERMIGNvbW1hbmRzCisg ICAgdGhhdCBhcmUgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIG9uIGEgcHVibGlzaGVyIHRvIGEgc3Vi c2NyaWJlci4gVGhpcyBpcworICAgIGVzcGVjaWFsbHkgdXNlZnVsIGlmIHlvdSBoYXZlIG1hbnkg c2NoZW1hIGNoYW5nZXMgb3ZlciB0aW1lIHRoYXQgbmVlZCByZXBsaWNhdGlvbi4KKyAgPC9wYXJh PgorCisgIDxwYXJhPgorICAgIEZvciBleGFtcGxlLCBhIENSRUFURSBUQUJMRSBjb21tYW5kIGV4 ZWN1dGVkIG9uIHRoZSBwdWJsaXNoZXIgZ2V0cworICAgIFdBTC1sb2dnZWQsIGFuZCBmb3J3YXJk ZWQgdG8gdGhlIHN1YnNjcmliZXIgdG8gcmVwbGF5OyB0aGVuIGFuIGltcGxpY2l0ICJBTFRFUgor ICAgIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBQVUJMSUNBVElPTiIgaXMgcGVyZm9ybWVkIG9u IHRoZSBzdWJzY3JpYmVyIGRhdGFiYXNlIHNvIGFueQorICAgIGZvbGxvd2luZyBETUwgY2hhbmdl cyBvbiB0aGUgbmV3IHRhYmxlIGNhbiBiZSByZXBsaWNhdGVkLgorICA8L3BhcmE+CisKKyAgPHBh cmE+CisgICAgRERMIHJlcGxpY2F0aW9uIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQsIGl0IGNhbiBi ZSBlbmFibGVkIHVzaW5nIHRoZSBkZGwgUFVCTElDQVRJT04KKyAgICBvcHRpb24uIFRoaXMgb3B0 aW9uIGN1cnJlbnRseSBoYXMgb25lIGxldmVsIGFuZCBpcyBvbmx5IGFsbG93ZWQgdG8gYmUgc2V0 IGlmIHRoZQorICAgIFBVQkxJQ0FUSU9OIGlzIEZPUiBBTEwgVEFCTEVTIG9yIEZPUiBUQUJMRVMg SU4gU0NIRU1BLgorICA8L3BhcmE+CisKKyAgPGl0ZW1pemVkbGlzdD4KKyAgICA8bGlzdGl0ZW0+ CisgICAgICA8cGFyYT4KKyAgICAgICAgdGFibGU6IHRoaXMgb3B0aW9uIGVuYWJsZXMgcmVwbGlj YXRpb24gb2YgVGFibGUgRERMIGNvbW1hbmRzLAorICAgICAgICB3aGljaCBpbmNsdWRlOgorICAg ICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxw YXJhPgorICAgICAgICAgICAgICBDUkVBVEUvQUxURVIvRFJPUCBUQUJMRQorICAgICAgICAgICAg PC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgICAgICA8bGlzdGl0ZW0+Cisg ICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgQ1JFQVRFIFRBQkxFIEFTCisgICAgICAg ICAgICA8L3BhcmE+CisgICAgICAgICAgPC9saXN0aXRlbT4KKworICAgICAgICA8L2l0ZW1pemVk bGlzdD4KKyAgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICA8L2l0ZW1pemVkbGlzdD4K KworICA8c2VjdDIgaWQ9ImRkbC1yZXBsaWNhdGlvbi1vcHRpb24tZXhhbXBsZXMiPgorICAgIDx0 aXRsZT5FeGFtcGxlcyAtIFNldHVwIERETCBSZXBsaWNhdGlvbiBvbiB0aGUgUHVibGlzaGVyPC90 aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgRW5hYmxlIFRBQkxFIERETCByZXBsaWNhdGlvbiBm b3IgYW4gZXhpc3RpbmcgUFVCTElDQVRJT046Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBQVUJM SUNBVElPTiBteXB1YiBTRVQgKGRkbCA9ICd0YWJsZScpOworPC9wcm9ncmFtbGlzdGluZz48L3Bh cmE+CisKKyAgPC9zZWN0Mj4KKworICA8c2VjdDIgaWQ9ImRkbC1yZXBsaWNhdGlvbi1zdXBwb3J0 ZWQtY29tbWFuZHMiPgorICAgIDx0aXRsZT5TdXBwb3J0ZWQgRERMIGNvbW1hbmRzPC90aXRsZT4K KworICAgIDxwYXJhPgorICAgICAgVGhlIERETCBjb21tYW5kcyBzdXBwb3J0ZWQgZm9yIGxvZ2lj YWwgcmVwbGljYXRpb24gYXJlIFRhYmxlIERETCBjb21tYW5kcywKKyAgICAgIGluY2x1ZGUgPGxp dGVyYWw+QUxURVIgVEFCTEU8L2xpdGVyYWw+LCA8bGl0ZXJhbD5DUkVBVEUgVEFCTEU8L2xpdGVy YWw+LAorICAgICAgPGxpdGVyYWw+Q1JFQVRFIFRBQkxFIEFTPC9saXRlcmFsPiwgYW5kIDxsaXRl cmFsPkRST1AgVEFCTEU8L2xpdGVyYWw+LgorICAgICAgT3RoZXIgb2JqZWN0IGNvbW1hbmRzIGFu ZCBnbG9iYWwgY29tbWFuZHMgYXJlIGN1cnJlbnRseSBub3QKKyAgICAgIHN1cHBvcnRlZCBmb3Ig cmVwbGljYXRpb24uIEdsb2JhbCBjb21tYW5kcyBjYW4gYmUgZXhlY3V0ZWQgYXQgYW55CisgICAg ICBkYXRhYmFzZSwgaW5jbHVkZSBST0xFIHN0YXRlbWVudHMsIERhdGFiYXNlIHN0YXRlbWVudHMs IFRhYmxlU3BhY2UKKyAgICAgIHN0YXRlbWVudHMgYW5kIHNvbWUgb2YgdGhlIEdyYW50U3RtdC9S ZXZva2VTdG10IGlmIHRoZSB0YXJnZXQgb2JqZWN0IGlzIGEKKyAgICAgIGdsb2JhbCBvYmplY3Qu IFRlbXBvcmFyeSBhbmQgdW5sb2dnZWQgdGFibGUgd2lsbCBub3QgYmUgcmVwbGljYXRlZC4gVXNl cgorICAgICAgc2hvdWxkIHRha2UgY2FyZSB3aGVuIGNyZWF0aW5nIHRoZXNlIG9iamVjdHMgYXMg dGhlc2Ugb2JqZWN0cyBtaWdodCBiZQorICAgICAgcmVxdWlyZWQgYnkgdGhlIG9iamVjdHMgdGhh dCBhcmUgcmVwbGljYXRlZCAoZm9yIGV4YW1wbGUgY3JlYXRpb24gb2YKKyAgICAgIHRhYmxlcyB0 aGF0IG1pZ2h0IHJlZmVyIHRvIGFuIHVzZXItY3JlYXRlZCB0YWJsZXNwYWNlIHdpbGwgZmFpbCBp biB0aGUKKyAgICAgIHN1YnNjcmliZXIgaWYgdGhlIHVzZXIgY3JlYXRlZCB0YWJsZXNwYWNlcyBk byBub3QgZXhpc3Qgb24gdGhlCisgICAgICBzdWJzY3JpYmVyKS4KKyAgICA8L3BhcmE+CisgIDwv c2VjdDI+CisKKyAgPHNlY3QyIGlkPSJkZGwtcmVwbGljYXRpb24tZGRsLWRlcGFyc2VyIj4KKyAg ICA8dGl0bGU+RERMIERlcGFyc2VyPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIFRoZSBEREwg ZGVwYXJzZXIgdXRpbGl0eSBpcyBpbnZva2VkIGR1cmluZyB0aGUgcmVwbGljYXRpb24gb2YgRERM cy4gVGhlIERETAorICAgICAgZGVwYXJzZXIgaXMgY2FwYWJsZSBvZiBjb252ZXJ0aW5nIGEgRERM IGNvbW1hbmQgaW50byBmb3JtYXR0ZWQgSlNPTiBibG9iLCB3aXRoCisgICAgICB0aGUgbmVjZXNz YXJ5IGluZm9ybWF0aW9uIHRvIHJlY29uc3RydWN0IHRoZSBEREwgY29tbWFuZHMgYXQgdGhlIGRl c3RpbmF0aW9uLiBUaGUKKyAgICAgIGJlbmVmaXRzIG9mIHVzaW5nIHRoZSBkZXBhcnNlciBvdXRw dXQgY29tcGFyZWQgdG8gdGhlIG9yaWdpbmFsIGNvbW1hbmQgc3RyaW5nCisgICAgICBpbmNsdWRl OgorICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxw YXJhPgorICAgICAgICAgICAgRXZlcnkgZGF0YWJhc2Ugb2JqZWN0IGluIHRoZSBkZXBhcnNlZCBv dXRwdXQgaXMgc2NoZW1hLXF1YWxpZmllZCwgc28gdGhhdAorICAgICAgICAgICAgdGhlcmUgYXJl IG5vIGFtYmlndWl0aWVzIGV2ZW4gaW4gdGhlIGZhY2Ugb2Ygc2VhcmNoX3BhdGggY2hhbmdlcy4K KyAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgICAgPGxpc3Rp dGVtPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIHN0cnVjdHVyZWQgSlNPTiBh bmQgdGhlIGZvcm1hdHRlZCBvdXRwdXQgbWFrZXMgaXQgcG9zc2libGUgZm9yCisgICAgICAgICAg ICBtYWNoaW5lIGVkaXRpbmcuIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiB0aGUgc3Vic2NyaWJlciBp cyBvbiBhIGRpZmZlcmVudAorICAgICAgICAgICAgUEcgdmVyc2lvbiBhbmQgaGFzIGNlcnRhaW4g RERMIHN5bnRheCBkaWZmZXJlbmNlcyB3aGljaCBuZWVkIHRvIGJlCisgICAgICAgICAgICByZXNv bHZlZCBiZWZvcmUgYXBwbHkuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVt PgorCisgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAg ICAgIFRoZSBEREwgZGVwYXJzZXIgZXhwb3NlcyB0d28gU1FMIGZ1bmN0aW9uczoKKyAgICAgIDxp dGVtaXplZGxpc3Q+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAg ICAgICAgIGRkbF9kZXBhcnNlX3RvX2pzb246IGdpdmVuIGEgQ29sbGVjdGVkQ29tbWFuZCBmcm9t IGV2ZW50IHRyaWdnZXIsCisgICAgICAgICAgICByZXR1cm5zIGEgSlNPTiByZXByZXNlbnRhdGlv biBvZiBpdC4gVGhlIGNvbW1hbmQgaXMgZXhwYW5kZWQgZnVsbHkKKyAgICAgICAgICAgIHNvIHRo YXQgdGhlcmUgYXJlIG5vIGFtYmlndWl0aWVzIGV2ZW4gaW4gdGhlIGZhY2Ugb2Ygc2VhcmNoX3Bh dGgKKyAgICAgICAgICAgIGNoYW5nZXMuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xp c3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisKKyAgICAgIDxpdGVtaXplZGxpc3Q+Cisg ICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIGRkbF9kZXBh cnNlX2V4cGFuZF9jb21tYW5kOiBFeHBhbmQgSlNPTiBmb3JtYXQgRERMIGdlbmVyYXRlZCBieQor ICAgICAgICAgICAgZGRsX2RlcGFyc2VfdG9fanNvbiB0byBhIHBsYWluIERETCBjb21tYW5kLgor ICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRs aXN0PgorICAgIDwvcGFyYT4KKyAgPC9zZWN0Mj4KKworICA8c2VjdDIgaWQ9ImRkbC1yZXBsaWNh dGlvbi1kZGwtcmVzdHJpY3Rpb25zIj4KKyAgICA8dGl0bGU+RERMIFJlcGxpY2F0aW9uIFJlc3Ry aWN0aW9uczwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgICBEREwgcmVwbGljYXRpb24gY3VycmVu dGx5IGhhcyB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9ucy4KKyAgICAgIDxpdGVtaXplZGxpc3Q+ CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxjb21t YW5kPkFMVEVSIFRBQkxFPC9jb21tYW5kPiBjb21tYW5kIHdoaWNoIHVzZXMgdm9sYXRpbGUgZnVu Y3Rpb25zCisgICAgICAgICAgICBpcyBub3QgYWxsb3dlZC4KKyAgICAgICAgICA8L3BhcmE+Cisg ICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4K KyAgICAgICAgICAgIEluIDxsaXRlcmFsPkFERCBDT0xVTU4gLi4uIERFRkFVTFQ8L2xpdGVyYWw+ IGNsYXVzZSBhbmQKKyAgICAgICAgICAgIDxsaXRlcmFsPkFMVEVSIENPTFVNTiBUWVBFPC9saXRl cmFsPiBjbGF1c2Ugb2YgPGNvbW1hbmQ+QUxURVIKKyAgICAgICAgICAgIFRBQkxFPC9jb21tYW5k PiBjb21tYW5kLCB0aGUgZnVuY3Rpb25zIGFuZCBvcGVyYXRvcnMgdXNlZCBpbgorICAgICAgICAg ICAgZXhwcmVzc2lvbiBtdXN0IGJlIGltbXV0YWJsZS4KKyAgICAgICAgICA8L3BhcmE+CisgICAg ICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAg ICA8cGFyYT4KKyAgICAgIFRoZSBsYXR0ZXIgY2FzZSBjYW4gYmUgd29ya2VkIGFyb3VuZC4KKyAg ICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4K KyAgICAgICAgICAgIFRvIGFkZCBhIGNvbHVtbiB3aXRoIGEgbm9uLWltbXV0YWJsZSBkZWZhdWx0 IHZhbHVlLCBmaXJzdCBhZGQgYQorICAgICAgICAgICAgY29sdW1uIHdpdGhvdXQgYSBkZWZhdWx0 IHZhbHVlLCB0aGVuIHNldCBhIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBuZXcKKyAgICAgICAgICAg IGNvbHVtbiwgYW5kIHVwZGF0ZSB0aGUgdmFsdWUgb2YgdGhlIG5ldyBjb2x1bW4gZm9yIGV4aXN0 aW5nIHJvd3MuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAg ICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyBjaGFuZ2UgdGhl IGNvbHVtbiB0eXBlLCBmaXJzdCBhZGQgYSBuZXcgY29sdW1uIG9mIHRoZSBkZXNpcmVkCisgICAg ICAgICAgICB0eXBlLCB0aGVuIHVwZGF0ZSB0aGUgbmV3IGNvbHVtbiB2YWx1ZSB3aXRoIHRoZSBv bGQgY29sdW1uIHZhbHVlLAorICAgICAgICAgICAgYW5kIGZpbm5hbGx5IGRyb3AgdGhlIG9sZCBj b2x1bW4gYW5kIHJlbmFtZSB0aGUgbmV3IGNvbHVtbiB0byB0aGUKKyAgICAgICAgICAgIG9sZCBj b2x1bW4uCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9p dGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorICA8L3NlY3QyPgorCisgPC9zZWN0MT4KKwogIDxz ZWN0MSBpZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1jb25mbGljdHMiPgogICA8dGl0bGU+Q29uZmxp Y3RzPC90aXRsZT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL01h a2VmaWxlIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL01ha2VmaWxlCmluZGV4IGNkOTVl ZWMzN2YuLmZkNjdmMDQ0ZTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVz Yy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvTWFrZWZpbGUKQEAg LTE4LDYgKzE4LDcgQEAgT0JKUyA9IFwKIAlnaXN0ZGVzYy5vIFwKIAloYXNoZGVzYy5vIFwKIAlo ZWFwZGVzYy5vIFwKKwlsb2dpY2FsZGRsbXNnZGVzYy5vIFwKIAlsb2dpY2FsbXNnZGVzYy5vIFwK IAlteGFjdGRlc2MubyBcCiAJbmJ0ZGVzYy5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9ybWdyZGVzYy9sb2dpY2FsZGRsbXNnZGVzYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Jt Z3JkZXNjL2xvZ2ljYWxkZGxtc2dkZXNjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uNWY1OGUwZmU1MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9ybWdyZGVzYy9sb2dpY2FsZGRsbXNnZGVzYy5jCkBAIC0wLDAgKzEsNTIgQEAKKy8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICoKKyAqIGxvZ2ljYWxkZGxtc2dkZXNjLmMKKyAqCSAgcm1nciBkZXNjcmlw dG9yIHJvdXRpbmVzIGZvciByZXBsaWNhdGlvbi9sb2dpY2FsL2RkbG1lc3NhZ2UuYworICoKKyAq IFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxNS0yMDIzLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZl bG9wbWVudCBHcm91cAorICoKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2Vu ZC9hY2Nlc3Mvcm1ncmRlc2MvbG9naWNhbGRkbG1zZ2Rlc2MuYworICoKKyAqLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgInJlcGxpY2F0aW9u L2RkbG1lc3NhZ2UuaCIKKwordm9pZAorbG9naWNhbGRkbG1zZ19kZXNjKFN0cmluZ0luZm8gYnVm LCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKK3sKKwljaGFyCSAgICpyZWMgPSBYTG9nUmVjR2V0 RGF0YShyZWNvcmQpOworCXVpbnQ4CQlpbmZvID0gWExvZ1JlY0dldEluZm8ocmVjb3JkKSAmIH5Y TFJfSU5GT19NQVNLOworCisJaWYgKGluZm8gPT0gWExPR19MT0dJQ0FMX0RETF9NRVNTQUdFKQor CXsKKwkJeGxfbG9naWNhbF9kZGxfbWVzc2FnZSAqeGxyZWMgPSAoeGxfbG9naWNhbF9kZGxfbWVz c2FnZSAqKSByZWM7CisJCWNoYXIJICAgKnByZWZpeCA9IHhscmVjLT5tZXNzYWdlOworCQljaGFy CSAgICptZXNzYWdlID0geGxyZWMtPm1lc3NhZ2UgKyB4bHJlYy0+cHJlZml4X3NpemU7CisJCWNo YXIJICAgKnNlcCA9ICIiOworCisJCUFzc2VydChwcmVmaXhbeGxyZWMtPnByZWZpeF9zaXplIC0g MV0gPT0gJ1wwJyk7CisKKwkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJwcmVmaXggXCIlc1wiOyBw YXlsb2FkICglenUgYnl0ZXMpOiAiLAorCQkJCQkJIHByZWZpeCwgeGxyZWMtPm1lc3NhZ2Vfc2l6 ZSk7CisJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAicmVsaWQgJXUgY21kdHlwZSAldSIsIHhscmVj LT5yZWxpZCwgeGxyZWMtPmNtZHR5cGUpOworCQkvKiBXcml0ZSBtZXNzYWdlIHBheWxvYWQgYXMg YSBzZXJpZXMgb2YgaGV4IGJ5dGVzICovCisJCWZvciAoaW50IGNudCA9IDA7IGNudCA8IHhscmVj LT5tZXNzYWdlX3NpemU7IGNudCsrKQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiVz JTAyWCIsIHNlcCwgKHVuc2lnbmVkIGNoYXIpIG1lc3NhZ2VbY250XSk7CisJCQlzZXAgPSAiICI7 CisJCX0KKwl9Cit9CisKK2NvbnN0IGNoYXIgKgorbG9naWNhbGRkbG1zZ19pZGVudGlmeSh1aW50 OCBpbmZvKQoreworCWlmICgoaW5mbyAmIH5YTFJfSU5GT19NQVNLKSA9PSBYTE9HX0xPR0lDQUxf RERMX01FU1NBR0UpCisJCXJldHVybiAiRERMIjsKKworCXJldHVybiBOVUxMOworfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3JtZ3JkZXNjL21lc29uLmJ1aWxkCmluZGV4IGY3NmU4N2UyZDcuLjYxNGZkN2Mx YWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9tZXNvbi5idWlsZAor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbWVzb24uYnVpbGQKQEAgLTExLDYgKzEx LDcgQEAgcm1ncl9kZXNjX3NvdXJjZXMgPSBmaWxlcygKICAgJ2dpc3RkZXNjLmMnLAogICAnaGFz aGRlc2MuYycsCiAgICdoZWFwZGVzYy5jJywKKyAgJ2xvZ2ljYWxkZGxtc2dkZXNjLmMnLAogICAn bG9naWNhbG1zZ2Rlc2MuYycsCiAgICdteGFjdGRlc2MuYycsCiAgICduYnRkZXNjLmMnLApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcm1nci5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vcm1nci5jCmluZGV4IDdkNjdlZGE1ZjcuLjY3OGU4MWFlMDEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3JtZ3IuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS9ybWdyLmMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJmbWdy LmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1 ZGUgInJlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZWNv ZGUuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9tZXNzYWdlLmgiCiAjaW5jbHVkZSAicmVwbGlj YXRpb24vb3JpZ2luLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggYzQ4 OGI2MzcwYi4uZDhhNTk0MDE0MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpA QCAtMTAyOCw2ICsxMDI4LDcgQEAgR2V0UHVibGljYXRpb24oT2lkIHB1YmlkKQogCXB1Yi0+cHVi YWN0aW9ucy5wdWJ1cGRhdGUgPSBwdWJmb3JtLT5wdWJ1cGRhdGU7CiAJcHViLT5wdWJhY3Rpb25z LnB1YmRlbGV0ZSA9IHB1YmZvcm0tPnB1YmRlbGV0ZTsKIAlwdWItPnB1YmFjdGlvbnMucHVidHJ1 bmNhdGUgPSBwdWJmb3JtLT5wdWJ0cnVuY2F0ZTsKKwlwdWItPnB1YmFjdGlvbnMucHViZGRsX3Rh YmxlID0gcHViZm9ybS0+cHViZGRsX3RhYmxlOwogCXB1Yi0+cHVidmlhcm9vdCA9IHB1YmZvcm0t PnB1YnZpYXJvb3Q7CiAKIAlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jCmlu ZGV4IGU5NWRjMzFiZGUuLjIzNDM1Yzk5MTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2FsdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYwpAQCAtMzA4LDYg KzMwOCwyMyBAQCBBbHRlck9iamVjdFJlbmFtZV9pbnRlcm5hbChSZWxhdGlvbiByZWwsIE9pZCBv YmplY3RJZCwgY29uc3QgY2hhciAqbmV3X25hbWUpCiAJCS8qIFdha2UgdXAgcmVsYXRlZCByZXBs aWNhdGlvbiB3b3JrZXJzIHRvIGhhbmRsZSB0aGlzIGNoYW5nZSBxdWlja2x5ICovCiAJCUxvZ2lj YWxSZXBXb3JrZXJzV2FrZXVwQXRDb21taXQob2JqZWN0SWQpOwogCX0KKwllbHNlIGlmIChjbGFz c0lkID09IEV2ZW50VHJpZ2dlclJlbGF0aW9uSWQpCisJeworCQlGb3JtX3BnX2V2ZW50X3RyaWdn ZXIgZXZ0Rm9ybSA9IChGb3JtX3BnX2V2ZW50X3RyaWdnZXIpIEdFVFNUUlVDVChvbGR0dXApOwor CisJCWlmIChTZWFyY2hTeXNDYWNoZUV4aXN0czEoRVZFTlRUUklHR0VSTkFNRSwgQ1N0cmluZ0dl dERhdHVtKG5ld19uYW1lKSkpCisJCQlyZXBvcnRfbmFtZV9jb25mbGljdChjbGFzc0lkLCBuZXdf bmFtZSk7CisKKwkJLyoKKwkJICogRXZlbnQgdHJpZ2dlcnMgY3JlYXRlZCBpbnRlcm5hbGx5IGFy ZSBub3QgYWxsb3dlZCB0byBiZSBhbHRlcmVkIGJ5CisJCSAqIHVzZXIuCisJCSAqLworCQlpZiAo ZXZ0Rm9ybS0+ZXZ0aXNpbnRlcm5hbCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCisJCQkJCSBlcnJtc2coInBlcm1pc3Np b24gZGVuaWVkOiBcIiVzXCIgaXMgYSBzeXN0ZW0gZXZlbnQgdHJpZ2dlciIsCisJCQkJCQkJTmFt ZVN0cihldnRGb3JtLT5ldnRuYW1lKSkpKTsKKwl9CiAJZWxzZSBpZiAobmFtZUNhY2hlSWQgPj0g MCkKIAl7CiAJCWlmIChPaWRJc1ZhbGlkKG5hbWVzcGFjZUlkKSkKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2RkbGRlcGFyc2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbGRl cGFyc2UuYwppbmRleCA3NjBjZTlkYzkzLi40ODY2MDg1NDIyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9kZGxkZXBhcnNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRs ZGVwYXJzZS5jCkBAIC02Niw2ICs2NiwyNiBAQAogLyogRXN0aW1hdGVkIGxlbmd0aCBvZiB0aGUg Z2VuZXJhdGVkIGpzb25iIHN0cmluZyAqLwogI2RlZmluZSBKU09OQl9FU1RJTUFURURfTEVOIDEy OAogCisvKgorICogTWFyayB0aGUgbWF4X3ZvbGF0aWxpdHkgZmxhZyBmb3IgYW4gZXhwcmVzc2lv biBpbiB0aGUgY29tbWFuZC4KKyAqLworc3RhdGljIHZvaWQKK21hcmtfZnVuY3Rpb25fdm9sYXRp bGUoZGRsX2RlcGFyc2VfY29udGV4dCAqIGNvbnRleHQsIE5vZGUgKmV4cHIpCit7CisJaWYgKGNv bnRleHQtPm1heF92b2xhdGlsaXR5ID09IFBST1ZPTEFUSUxFX1ZPTEFUSUxFKQorCQlyZXR1cm47 CisKKwlpZiAoY29udGFpbl92b2xhdGlsZV9mdW5jdGlvbnMoZXhwcikpCisJeworCQljb250ZXh0 LT5tYXhfdm9sYXRpbGl0eSA9IFBST1ZPTEFUSUxFX1ZPTEFUSUxFOworCQlyZXR1cm47CisJfQor CisJaWYgKGNvbnRleHQtPm1heF92b2xhdGlsaXR5ID09IFBST1ZPTEFUSUxFX0lNTVVUQUJMRSAm JgorCQljb250YWluX211dGFibGVfZnVuY3Rpb25zKGV4cHIpKQorCQljb250ZXh0LT5tYXhfdm9s YXRpbGl0eSA9IFBST1ZPTEFUSUxFX1NUQUJMRTsKK30KKwogLyoKICAqIFJldHVybiB0aGUgc3Ry aW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBSRUxQRVJTSVNURU5DRSB2YWx1ZS4KICAq LwpAQCAtOTQsNyArMTE0LDggQEAgZ2V0X3BlcnNpc3RlbmNlX3N0cihjaGFyIHBlcnNpc3RlbmNl KQogICogcGFzc2VkIGF0dHJpYnV0ZSBoYXMgYSBkZWZhdWx0IHZhbHVlLgogICovCiBzdGF0aWMg Y2hhciAqCi1SZWxhdGlvbkdldENvbHVtbkRlZmF1bHQoUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVy IGF0dG5vLCBMaXN0ICpkcGNvbnRleHQpCitSZWxhdGlvbkdldENvbHVtbkRlZmF1bHQoUmVsYXRp b24gcmVsLCBBdHRyTnVtYmVyIGF0dG5vLCBMaXN0ICpkcGNvbnRleHQsCisJCQkJCQkgTm9kZSAq KmV4cHIpCiB7CiAJTm9kZQkgICAqZGVmdmFsOwogCWNoYXIJICAgKmRlZnN0cjsKQEAgLTEwNCw2 ICsxMjUsMTAgQEAgUmVsYXRpb25HZXRDb2x1bW5EZWZhdWx0KFJlbGF0aW9uIHJlbCwgQXR0ck51 bWJlciBhdHRubywgTGlzdCAqZHBjb250ZXh0KQogCiAJZGVmc3RyID0gZGVwYXJzZV9leHByZXNz aW9uKGRlZnZhbCwgZHBjb250ZXh0LCBmYWxzZSwgZmFsc2UpOwogCisJLyogQ29sbGVjdCB0aGUg ZXhwcmVzc2lvbiBmb3IgbGF0ZXIgcmVwbGljYXRpb24gc2FmZXR5IGNoZWNrcyAqLworCWlmIChl eHByKQorCQkqZXhwciA9IGRlZnZhbDsKKwogCXJldHVybiBkZWZzdHI7CiB9CiAKQEAgLTgwMCw3 ICs4MjUsNyBAQCBkZXBhcnNlX0NvbHVtbklkZW50aXR5X3RvSnNvbmIoSnNvbmJQYXJzZVN0YXRl ICpzdGF0ZSwgY2hhciAqcGFyZW50S2V5LAogc3RhdGljIHZvaWQKIGRlcGFyc2VfQ29sdW1uRGVm X3RvSnNvbmIoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgUmVsYXRpb24gcmVsYXRpb24sCiAJCQkJ CQkgIExpc3QgKmRwY29udGV4dCwgYm9vbCBjb21wb3NpdGUsIENvbHVtbkRlZiAqY29sZGVmLAot CQkJCQkJICBib29sIGlzX2FsdGVyKQorCQkJCQkJICBib29sIGlzX2FsdGVyLCBOb2RlICoqZXhw cikKIHsKIAlPaWQJCQlyZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOwogCUhlYXBU dXBsZQlhdHRyVHVwOwpAQCAtOTIzLDcgKzk0OCw3IEBAIGRlcGFyc2VfQ29sdW1uRGVmX3RvSnNv bmIoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgUmVsYXRpb24gcmVsYXRpb24sCiAJCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgJXtkZWZhdWx0fXMiKTsKIAogCQkJZGVmc3RyID0g UmVsYXRpb25HZXRDb2x1bW5EZWZhdWx0KHJlbGF0aW9uLCBhdHRyRm9ybS0+YXR0bnVtLAotCQkJ CQkJCQkJCQkgIGRwY29udGV4dCk7CisJCQkJCQkJCQkJCSAgZHBjb250ZXh0LCBleHByKTsKIAkJ CW5ld19qc29uYl9WQShzdGF0ZSwgImRlZmF1bHQiLCAiREVGQVVMVCAle2RlZmF1bHR9cyIsIHRy dWUsIDEsCiAJCQkJCQkgImRlZmF1bHQiLCBqYnZTdHJpbmcsIGRlZnN0cik7CiAJCX0KQEAgLTk1 Nyw3ICs5ODIsNyBAQCBkZXBhcnNlX0NvbHVtbkRlZl90b0pzb25iKEpzb25iUGFyc2VTdGF0ZSAq c3RhdGUsIFJlbGF0aW9uIHJlbGF0aW9uLAogCiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZm bXRTdHIsICIgJXtnZW5lcmF0ZWRfY29sdW1ufXMiKTsKIAkJCWRlZnN0ciA9IFJlbGF0aW9uR2V0 Q29sdW1uRGVmYXVsdChyZWxhdGlvbiwgYXR0ckZvcm0tPmF0dG51bSwKLQkJCQkJCQkJCQkJICBk cGNvbnRleHQpOworCQkJCQkJCQkJCQkgIGRwY29udGV4dCwgZXhwcik7CiAJCQluZXdfanNvbmJf VkEoc3RhdGUsICJnZW5lcmF0ZWRfY29sdW1uIiwKIAkJCQkJCSAiR0VORVJBVEVEIEFMV0FZUyBB UyAoJXtnZW5lcmF0aW9uX2V4cHJ9cykgU1RPUkVEIiwKIAkJCQkJCSB0cnVlLCAxLApAQCAtMTA4 Myw3ICsxMTA4LDcgQEAgZGVwYXJzZV9Db2x1bW5EZWZfdHlwZWRfdG9Kc29uYihKc29uYlBhcnNl U3RhdGUgKnN0YXRlLCBSZWxhdGlvbiByZWxhdGlvbiwKIAogCQlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKCZmbXRTdHIsICIgJXtkZWZhdWx0fXMiKTsKIAkJZGVmc3RyID0gUmVsYXRpb25HZXRDb2x1 bW5EZWZhdWx0KHJlbGF0aW9uLCBhdHRyRm9ybS0+YXR0bnVtLAotCQkJCQkJCQkJCSAgZHBjb250 ZXh0KTsKKwkJCQkJCQkJCQkgIGRwY29udGV4dCwgTlVMTCk7CiAJCW5ld19qc29uYl9WQShzdGF0 ZSwgImRlZmF1bHQiLCAiREVGQVVMVCAle2RlZmF1bHR9cyIsIHRydWUsIDEsCiAJCQkJCSAiZGVm YXVsdCIsIGpidlN0cmluZywgZGVmc3RyKTsKIAl9CkBAIC0xMjUwLDcgKzEyNzUsNyBAQCBkZXBh cnNlX1RhYmxlRWxlbXNfVG9Kc29uYihKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBSZWxhdGlvbiBy ZWxhdGlvbiwKIAkJCQkJZWxzZQogCQkJCQkJZGVwYXJzZV9Db2x1bW5EZWZfdG9Kc29uYihzdGF0 ZSwgcmVsYXRpb24sIGRwY29udGV4dCwKIAkJCQkJCQkJCQkJCSAgY29tcG9zaXRlLCAoQ29sdW1u RGVmICopIGVsdCwKLQkJCQkJCQkJCQkJCSAgZmFsc2UpOworCQkJCQkJCQkJCQkJICBmYWxzZSwg TlVMTCk7CiAJCQkJfQogCQkJCWJyZWFrOwogCQkJY2FzZSBUX0NvbnN0cmFpbnQ6CkBAIC0xOTIy LDEyICsxOTQ3LDEzIEBAIGRlcGFyc2VfZHJvcF90YWJsZShjb25zdCBjaGFyICpvYmppZGVudGl0 eSwgY29uc3QgY2hhciAqb2JqZWN0dHlwZSwKICAqIEFMVEVSICV7b2JqdHlwZX1zICV7b25seX1z ICV7aWRlbnRpdHl9RCAle3N1YmNtZHM6LCB9cwogICovCiBzdGF0aWMgSnNvbmIgKgotZGVwYXJz ZV9BbHRlclRhYmxlU3RtdChDb2xsZWN0ZWRDb21tYW5kICpjbWQpCitkZXBhcnNlX0FsdGVyVGFi bGVTdG10KENvbGxlY3RlZENvbW1hbmQgKmNtZCwgZGRsX2RlcGFyc2VfY29udGV4dCAqIGNvbnRl eHQpCiB7CiAJTGlzdAkgICAqZHBjb250ZXh0OwogCVJlbGF0aW9uCXJlbDsKIAlMaXN0Q2VsbCAg ICpjZWxsOwogCWNvbnN0IGNoYXIgKnJlbHR5cGU7CisJTm9kZQkgICAqZXhwciA9IE5VTEw7CiAJ T2lkCQkJcmVsSWQgPSBjbWQtPmQuYWx0ZXJUYWJsZS5vYmplY3RJZDsKIAlBbHRlclRhYmxlU3Rt dCAqc3RtdCA9IE5VTEw7CiAJU3RyaW5nSW5mb0RhdGEgZm10U3RyOwpAQCAtMjAzMSw3ICsyMDU3 LDkgQEAgZGVwYXJzZV9BbHRlclRhYmxlU3RtdChDb2xsZWN0ZWRDb21tYW5kICpjbWQpCiAJCQkJ aW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgImRlZmluaXRpb24iKTsKIAkJCQlkZXBhcnNlX0NvbHVt bkRlZl90b0pzb25iKHN0YXRlLCByZWwsIGRwY29udGV4dCwKIAkJCQkJCQkJCQkgIGZhbHNlLCAo Q29sdW1uRGVmICopIHN1YmNtZC0+ZGVmLAotCQkJCQkJCQkJCSAgdHJ1ZSk7CisJCQkJCQkJCQkJ ICB0cnVlLCAmZXhwcik7CisJCQkJbWFya19mdW5jdGlvbl92b2xhdGlsZShjb250ZXh0LCBleHBy KTsKKwogCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOwog CQkJCWJyZWFrOwogCkBAIC0yMTA5LDcgKzIxMzcsOCBAQCBkZXBhcnNlX0FsdGVyVGFibGVTdG10 KENvbGxlY3RlZENvbW1hbmQgKmNtZCkKIAkJCQkJCQkJICJjb2x1bW4iLCBqYnZTdHJpbmcsIHN1 YmNtZC0+bmFtZSwKIAkJCQkJCQkJICJkZWZpbml0aW9uIiwgamJ2U3RyaW5nLAogCQkJCQkJCQkg UmVsYXRpb25HZXRDb2x1bW5EZWZhdWx0KHJlbCwgYXR0bm8sCi0JCQkJCQkJCQkJCQkJCSAgZHBj b250ZXh0X3JlbCkpOworCQkJCQkJCQkJCQkJCQkgIGRwY29udGV4dF9yZWwsCisJCQkJCQkJCQkJ CQkJCSAgTlVMTCkpOwogCQkJCQlSZWxlYXNlU3lzQ2FjaGUoYXR0cnR1cCk7CiAJCQkJfQogCkBA IC0yMjU0LDEyICsyMjgzLDQwIEBAIGRlcGFyc2VfQWx0ZXJUYWJsZVN0bXQoQ29sbGVjdGVkQ29t bWFuZCAqY21kKQogCQkJCXsKIAkJCQkJLyogWFhYIG5lZWQgdG8gc2V0IHRoZSAicmVjdXJzZSIg Yml0IHNvbWV3aGVyZT8gKi8KIAkJCQkJT2lkCQkJY29uc3RyT2lkID0gc3ViLT5hZGRyZXNzLm9i amVjdElkOworCQkJCQlib29sCQlpc251bGw7CisJCQkJCUhlYXBUdXBsZQl0dXA7CisJCQkJCURh dHVtCQl2YWw7CisJCQkJCUNvbnN0cmFpbnQgKmNvbnN0cjsKIAogCQkJCQkvKiBTa2lwIGFkZGlu ZyBjb25zdHJhaW50IGZvciBpbmhlcml0cyB0YWJsZSBzdWIgY29tbWFuZCAqLwogCQkJCQlpZiAo IU9pZElzVmFsaWQoY29uc3RyT2lkKSkKIAkJCQkJCWNvbnRpbnVlOwogCiAJCQkJCUFzc2VydChJ c0Eoc3ViY21kLT5kZWYsIENvbnN0cmFpbnQpKTsKKwkJCQkJY29uc3RyID0gY2FzdE5vZGUoQ29u c3RyYWludCwgc3ViY21kLT5kZWYpOworCisJCQkJCWlmICghY29uc3RyLT5za2lwX3ZhbGlkYXRp b24pCisJCQkJCXsKKwkJCQkJCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShDT05TVFJPSUQsIE9iamVj dElkR2V0RGF0dW0oY29uc3RyT2lkKSk7CisKKwkJCQkJCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHR1 cCkpCisJCQkJCQl7CisJCQkJCQkJY2hhcgkgICAqY29uYmluOworCisJCQkJCQkJLyogRmV0Y2gg Y29uc3RyYWludCBleHByZXNzaW9uIGluIHBhcnNldHJlZSBmb3JtICovCisJCQkJCQkJdmFsID0g U3lzQ2FjaGVHZXRBdHRyKENPTlNUUk9JRCwgdHVwLAorCQkJCQkJCQkJCQkJICBBbnVtX3BnX2Nv bnN0cmFpbnRfY29uYmluLCAmaXNudWxsKTsKKworCQkJCQkJCWlmICghaXNudWxsKQorCQkJCQkJ CXsKKwkJCQkJCQkJY29uYmluID0gVGV4dERhdHVtR2V0Q1N0cmluZyh2YWwpOworCQkJCQkJCQll eHByID0gc3RyaW5nVG9Ob2RlKGNvbmJpbik7CisJCQkJCQkJCW1hcmtfZnVuY3Rpb25fdm9sYXRp bGUoY29udGV4dCwgZXhwcik7CisJCQkJCQkJfQorCisJCQkJCQkJUmVsZWFzZVN5c0NhY2hlKHR1 cCk7CisJCQkJCQl9CisJCQkJCX0KIAogCQkJCQluZXdfanNvbmJfVkEoc3RhdGUsIE5VTEwsCiAJ CQkJCQkJCSAiQUREIENPTlNUUkFJTlQgJXtuYW1lfUkgJXtkZWZpbml0aW9ufXMiLApAQCAtMjM2 MCw2ICsyNDE3LDcgQEAgZGVwYXJzZV9BbHRlclRhYmxlU3RtdChDb2xsZWN0ZWRDb21tYW5kICpj bWQpCiAJCQkJCQkJCQkgdHJ1ZSwgMSwKIAkJCQkJCQkJCSAiZXhwcmVzc2lvbiIsIGpidlN0cmlu ZywKIAkJCQkJCQkJCSBzdWItPnVzaW5nZXhwcik7CisJCQkJCQltYXJrX2Z1bmN0aW9uX3ZvbGF0 aWxlKGNvbnRleHQsIGRlZi0+Y29va2VkX2RlZmF1bHQpOwogCiAJCQkJCX0KIApAQCAtMzE5MSw3 ICszMjQ5LDcgQEAgZGVwYXJzZV9zaW1wbGVfY29tbWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQp CiAgKiBXb3JraG9yc2UgdG8gZGVwYXJzZSBhIENvbGxlY3RlZENvbW1hbmQuCiAgKi8KIGNoYXIg KgotZGVwYXJzZV91dGlsaXR5X2NvbW1hbmQoQ29sbGVjdGVkQ29tbWFuZCAqY21kKQorZGVwYXJz ZV91dGlsaXR5X2NvbW1hbmQoQ29sbGVjdGVkQ29tbWFuZCAqY21kLCBkZGxfZGVwYXJzZV9jb250 ZXh0ICpjb250ZXh0KQogewogCU92ZXJyaWRlU2VhcmNoUGF0aCAqb3ZlcnJpZGVQYXRoOwogCU1l bW9yeUNvbnRleHQgb2xkY3h0OwpAQCAtMzIzMyw3ICszMjkxLDcgQEAgZGVwYXJzZV91dGlsaXR5 X2NvbW1hbmQoQ29sbGVjdGVkQ29tbWFuZCAqY21kKQogCQkJanNvbmIgPSBkZXBhcnNlX3NpbXBs ZV9jb21tYW5kKGNtZCk7CiAJCQlicmVhazsKIAkJY2FzZSBTQ1RfQWx0ZXJUYWJsZToKLQkJCWpz b25iID0gZGVwYXJzZV9BbHRlclRhYmxlU3RtdChjbWQpOworCQkJanNvbmIgPSBkZXBhcnNlX0Fs dGVyVGFibGVTdG10KGNtZCwgY29udGV4dCk7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVs b2coRVJST1IsICJ1bmV4cGVjdGVkIGRlcGFyc2Ugbm9kZSB0eXBlICVkIiwgY21kLT50eXBlKTsK QEAgLTMyNjUsOCArMzMyMywxNSBAQCBkZGxfZGVwYXJzZV90b19qc29uKFBHX0ZVTkNUSU9OX0FS R1MpCiB7CiAJQ29sbGVjdGVkQ29tbWFuZCAqY21kID0gKENvbGxlY3RlZENvbW1hbmQgKikgUEdf R0VUQVJHX1BPSU5URVIoMCk7CiAJY2hhcgkgICAqY29tbWFuZDsKKwlkZGxfZGVwYXJzZV9jb250 ZXh0IGNvbnRleHQ7CisKKwkvKgorCSAqIEluaXRpYWxpemUgdGhlIG1heF92b2xhdGlsaXR5IGZs YWcgdG8gUFJPVk9MQVRJTEVfSU1NVVRBQkxFLCB3aGljaCBpcworCSAqIHRoZSBtaW5pbXVtIHZv bGF0aWxpdHkgbGV2ZWwuCisJICovCisJY29udGV4dC5tYXhfdm9sYXRpbGl0eSA9IFBST1ZPTEFU SUxFX0lNTVVUQUJMRTsKIAotCWNvbW1hbmQgPSBkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChjbWQp OworCWNvbW1hbmQgPSBkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChjbWQsICZjb250ZXh0KTsKIAog CWlmIChjb21tYW5kKQogCQlQR19SRVRVUk5fVEVYVF9QKGNzdHJpbmdfdG9fdGV4dChjb21tYW5k KSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKaW5kZXggOGMyYTQ5NGRjYi4uMTVl MjQzY2E3ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwpAQCAtNTgsNyArNTgs NyBAQCBzdGF0aWMgdm9pZCBBbHRlckV2ZW50VHJpZ2dlck93bmVyX2ludGVybmFsKFJlbGF0aW9u IHJlbCwKIHN0YXRpYyB2b2lkIGVycm9yX2R1cGxpY2F0ZV9maWx0ZXJfdmFyaWFibGUoY29uc3Qg Y2hhciAqZGVmbmFtZSk7CiBzdGF0aWMgRGF0dW0gZmlsdGVyX2xpc3RfdG9fYXJyYXkoTGlzdCAq ZmlsdGVybGlzdCk7CiBzdGF0aWMgT2lkCWluc2VydF9ldmVudF90cmlnZ2VyX3R1cGxlKGNvbnN0 IGNoYXIgKnRyaWduYW1lLCBjb25zdCBjaGFyICpldmVudG5hbWUsCi0JCQkJCQkJCQkgICBPaWQg ZXZ0T3duZXIsIE9pZCBmdW5jb2lkLCBMaXN0ICp0YWdsaXN0KTsKKwkJCQkJCQkJCSAgIE9pZCBl dnRPd25lciwgT2lkIGZ1bmNvaWQsIExpc3QgKnRhZ2xpc3QsIGJvb2wgaXNfaW50ZXJuYWwpOwog c3RhdGljIHZvaWQgdmFsaWRhdGVfZGRsX3RhZ3MoY29uc3QgY2hhciAqZmlsdGVydmFyLCBMaXN0 ICp0YWdsaXN0KTsKIHN0YXRpYyB2b2lkIHZhbGlkYXRlX3RhYmxlX3Jld3JpdGVfdGFncyhjb25z dCBjaGFyICpmaWx0ZXJ2YXIsIExpc3QgKnRhZ2xpc3QpOwogc3RhdGljIHZvaWQgRXZlbnRUcmln Z2VySW52b2tlKExpc3QgKmZuX29pZF9saXN0LCBFdmVudFRyaWdnZXJEYXRhICp0cmlnZGF0YSk7 CkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpzdHJpbmdpZnlfYWRlZnByaXZz X29ianR5cGUoT2JqZWN0VHlwZSBvYmp0eXBlKTsKICAqIENyZWF0ZSBhbiBldmVudCB0cmlnZ2Vy LgogICovCiBPaWQKLUNyZWF0ZUV2ZW50VHJpZ2dlcihDcmVhdGVFdmVudFRyaWdTdG10ICpzdG10 KQorQ3JlYXRlRXZlbnRUcmlnZ2VyKENyZWF0ZUV2ZW50VHJpZ1N0bXQgKnN0bXQsIGJvb2wgaXNf aW50ZXJuYWwpCiB7CiAJSGVhcFR1cGxlCXR1cGxlOwogCU9pZAkJCWZ1bmNvaWQ7CkBAIC05MSwx MCArOTEsMTAgQEAgQ3JlYXRlRXZlbnRUcmlnZ2VyKENyZWF0ZUV2ZW50VHJpZ1N0bXQgKnN0bXQp CiAJCQkJIGVycmhpbnQoIk11c3QgYmUgc3VwZXJ1c2VyIHRvIGNyZWF0ZSBhbiBldmVudCB0cmln Z2VyLiIpKSk7CiAKIAkvKiBWYWxpZGF0ZSBldmVudCBuYW1lLiAqLwotCWlmIChzdHJjbXAoc3Rt dC0+ZXZlbnRuYW1lLCAiZGRsX2NvbW1hbmRfc3RhcnQiKSAhPSAwICYmCi0JCXN0cmNtcChzdG10 LT5ldmVudG5hbWUsICJkZGxfY29tbWFuZF9lbmQiKSAhPSAwICYmCi0JCXN0cmNtcChzdG10LT5l dmVudG5hbWUsICJzcWxfZHJvcCIpICE9IDAgJiYKLQkJc3RyY21wKHN0bXQtPmV2ZW50bmFtZSwg InRhYmxlX3Jld3JpdGUiKSAhPSAwKQorCWlmIChzdHJjbXAoc3RtdC0+ZXZlbnRuYW1lLCBUUklH X0RETF9DTURfU1RBUlQpICE9IDAgJiYKKwkJc3RyY21wKHN0bXQtPmV2ZW50bmFtZSwgVFJJR19E RExfQ01EX0VORCkgIT0gMCAmJgorCQlzdHJjbXAoc3RtdC0+ZXZlbnRuYW1lLCBUUklHX1RCTF9D TURfRFJPUCkgIT0gMCAmJgorCQlzdHJjbXAoc3RtdC0+ZXZlbnRuYW1lLCBUUklHX1RCTF9SRVdS SVRFKSAhPSAwKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFY X0VSUk9SKSwKIAkJCQkgZXJybXNnKCJ1bnJlY29nbml6ZWQgZXZlbnQgbmFtZSBcIiVzXCIiLApA QCAtMTE4LDEyICsxMTgsMTIgQEAgQ3JlYXRlRXZlbnRUcmlnZ2VyKENyZWF0ZUV2ZW50VHJpZ1N0 bXQgKnN0bXQpCiAJfQogCiAJLyogVmFsaWRhdGUgdGFnIGxpc3QsIGlmIGFueS4gKi8KLQlpZiAo KHN0cmNtcChzdG10LT5ldmVudG5hbWUsICJkZGxfY29tbWFuZF9zdGFydCIpID09IDAgfHwKLQkJ IHN0cmNtcChzdG10LT5ldmVudG5hbWUsICJkZGxfY29tbWFuZF9lbmQiKSA9PSAwIHx8Ci0JCSBz dHJjbXAoc3RtdC0+ZXZlbnRuYW1lLCAic3FsX2Ryb3AiKSA9PSAwKQorCWlmICgoc3RyY21wKHN0 bXQtPmV2ZW50bmFtZSwgVFJJR19ERExfQ01EX1NUQVJUKSA9PSAwIHx8CisJCSBzdHJjbXAoc3Rt dC0+ZXZlbnRuYW1lLCBUUklHX0RETF9DTURfRU5EKSA9PSAwIHx8CisJCSBzdHJjbXAoc3RtdC0+ ZXZlbnRuYW1lLCBUUklHX1RCTF9DTURfRFJPUCkgPT0gMCkKIAkJJiYgdGFncyAhPSBOVUxMKQog CQl2YWxpZGF0ZV9kZGxfdGFncygidGFnIiwgdGFncyk7Ci0JZWxzZSBpZiAoc3RyY21wKHN0bXQt PmV2ZW50bmFtZSwgInRhYmxlX3Jld3JpdGUiKSA9PSAwCisJZWxzZSBpZiAoc3RyY21wKHN0bXQt PmV2ZW50bmFtZSwgVFJJR19UQkxfUkVXUklURSkgPT0gMAogCQkJICYmIHRhZ3MgIT0gTlVMTCkK IAkJdmFsaWRhdGVfdGFibGVfcmV3cml0ZV90YWdzKCJ0YWciLCB0YWdzKTsKIApAQCAtMTQ5LDcg KzE0OSw3IEBAIENyZWF0ZUV2ZW50VHJpZ2dlcihDcmVhdGVFdmVudFRyaWdTdG10ICpzdG10KQog CiAJLyogSW5zZXJ0IGNhdGFsb2cgZW50cmllcy4gKi8KIAlyZXR1cm4gaW5zZXJ0X2V2ZW50X3Ry aWdnZXJfdHVwbGUoc3RtdC0+dHJpZ25hbWUsIHN0bXQtPmV2ZW50bmFtZSwKLQkJCQkJCQkJCSAg ZXZ0b3duZXIsIGZ1bmNvaWQsIHRhZ3MpOworCQkJCQkJCQkJICBldnRvd25lciwgZnVuY29pZCwg dGFncywgaXNfaW50ZXJuYWwpOwogfQogCiAvKgpAQCAtMjE4LDcgKzIxOCw3IEBAIGVycm9yX2R1 cGxpY2F0ZV9maWx0ZXJfdmFyaWFibGUoY29uc3QgY2hhciAqZGVmbmFtZSkKICAqLwogc3RhdGlj IE9pZAogaW5zZXJ0X2V2ZW50X3RyaWdnZXJfdHVwbGUoY29uc3QgY2hhciAqdHJpZ25hbWUsIGNv bnN0IGNoYXIgKmV2ZW50bmFtZSwgT2lkIGV2dE93bmVyLAotCQkJCQkJICAgT2lkIGZ1bmNvaWQs IExpc3QgKnRhZ2xpc3QpCisJCQkJCQkgICBPaWQgZnVuY29pZCwgTGlzdCAqdGFnbGlzdCwgYm9v bCBpc19pbnRlcm5hbCkKIHsKIAlSZWxhdGlvbgl0Z3JlbDsKIAlPaWQJCQl0cmlnb2lkOwpAQCAt MjQ2LDYgKzI0Niw3IEBAIGluc2VydF9ldmVudF90cmlnZ2VyX3R1cGxlKGNvbnN0IGNoYXIgKnRy aWduYW1lLCBjb25zdCBjaGFyICpldmVudG5hbWUsIE9pZCBldnRPCiAJdmFsdWVzW0FudW1fcGdf ZXZlbnRfdHJpZ2dlcl9ldnRmb2lkIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKGZ1bmNvaWQpOwog CXZhbHVlc1tBbnVtX3BnX2V2ZW50X3RyaWdnZXJfZXZ0ZW5hYmxlZCAtIDFdID0KIAkJQ2hhckdl dERhdHVtKFRSSUdHRVJfRklSRVNfT05fT1JJR0lOKTsKKwl2YWx1ZXNbQW51bV9wZ19ldmVudF90 cmlnZ2VyX2V2dGlzaW50ZXJuYWwgLSAxXSA9IEJvb2xHZXREYXR1bShpc19pbnRlcm5hbCk7CiAJ aWYgKHRhZ2xpc3QgPT0gTklMKQogCQludWxsc1tBbnVtX3BnX2V2ZW50X3RyaWdnZXJfZXZ0dGFn cyAtIDFdID0gdHJ1ZTsKIAllbHNlCkBAIC01MjQsNiArNTI1LDcgQEAgRXZlbnRUcmlnZ2VyQ29t bW9uU2V0dXAoTm9kZSAqcGFyc2V0cmVlLAogCUxpc3QJICAgKmNhY2hlbGlzdDsKIAlMaXN0Q2Vs bCAgICpsYzsKIAlMaXN0CSAgICpydW5saXN0ID0gTklMOworCWludAkJCXB1Yl9kZXBhcnNlX2Z1 bmNfY250ID0gMDsKIAogCS8qCiAJICogV2Ugd2FudCB0aGUgbGlzdCBvZiBjb21tYW5kIHRhZ3Mg Zm9yIHdoaWNoIHRoaXMgcHJvY2VkdXJlIGlzIGFjdHVhbGx5CkBAIC01NzMsNiArNTc1LDEyIEBA IEV2ZW50VHJpZ2dlckNvbW1vblNldHVwKE5vZGUgKnBhcnNldHJlZSwKIAkgKiBvbmNlIHdlIGRv IGFueXRoaW5nIGF0IGFsbCB0aGF0IHRvdWNoZXMgdGhlIGNhdGFsb2dzLCBhbiBpbnZhbGlkYXRp b24KIAkgKiBtaWdodCBsZWF2ZSBjYWNoZWxpc3QgcG9pbnRpbmcgYXQgZ2FyYmFnZSwgc28gd2Ug bXVzdCBkbyB0aGlzIGJlZm9yZSB3ZQogCSAqIGNhbiBkbyBtdWNoIGVsc2UuCisJICoKKwkgKiBT cGVjaWFsIGhhbmRsaW5nIGZvciBldmVudCB0cmlnZ2VycyBjcmVhdGVkIGFzIHBhcnQgb2YgcHVi bGljYXRpb25zLgorCSAqIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBwdWJsaWNhdGlvbnMgd2hpY2gg cHVibGlzaCBkZGxzLCBvbmx5IG9uZSBzZXQgb2YgdGhlCisJICogZXZlbnQgdHJpZ2dlciBmdW5j dGlvbnMgbmVlZCB0byBiZSBpbnZva2VkLiBUaGUgZGRsIGRlcGFyc2UgZXZlbnQgdHJpZ2dlcnMK KwkgKiB3cml0ZSB0byBXQUwsIHNvIG5vIG5lZWQgdG8gZHVwbGljYXRlIGl0IGFzIGFsbCB3YWxz ZW5kZXJzIHdpbGwgcmVhZCB0aGUgc2FtZQorCSAqIFdBTC4KIAkgKi8KIAlmb3JlYWNoKGxjLCBj YWNoZWxpc3QpCiAJewpAQCAtNTgwLDggKzU4OCwyNiBAQCBFdmVudFRyaWdnZXJDb21tb25TZXR1 cChOb2RlICpwYXJzZXRyZWUsCiAKIAkJaWYgKGZpbHRlcl9ldmVudF90cmlnZ2VyKHRhZywgaXRl bSkpCiAJCXsKLQkJCS8qIFdlIG11c3QgcGxhbiB0byBmaXJlIHRoaXMgdHJpZ2dlci4gKi8KLQkJ CXJ1bmxpc3QgPSBsYXBwZW5kX29pZChydW5saXN0LCBpdGVtLT5mbm9pZCk7CisJCQlzdGF0aWMg Y29uc3QgY2hhciAqdHJpZ2dlcl9mdW5jX3ByZWZpeCA9ICJwdWJsaWNhdGlvbl9kZXBhcnNlXyVz IjsKKwkJCWNoYXIJCXRyaWdnZXJfZnVuY19uYW1lW05BTUVEQVRBTEVOXTsKKwkJCU9pZAkJCXB1 Yl9mdW5jb2lkOworCQkJTGlzdCAJCSpwdWJfZnVuY25hbWU7CisKKwkJCS8qIEdldCBmdW5jdGlv biBvaWQgb2YgdGhlIHB1YmxpY2F0aW9uJ3MgZGRsIGRlcGFyc2UgZXZlbnQgdHJpZ2dlciAqLwor CQkJc25wcmludGYodHJpZ2dlcl9mdW5jX25hbWUsIHNpemVvZih0cmlnZ2VyX2Z1bmNfbmFtZSks IHRyaWdnZXJfZnVuY19wcmVmaXgsCisJCQkJCSBldmVudHN0cik7CisJCQlwdWJfZnVuY25hbWUg PSBTeXN0ZW1GdW5jTmFtZSh0cmlnZ2VyX2Z1bmNfbmFtZSk7CisJCQlwdWJfZnVuY29pZCA9IExv b2t1cEZ1bmNOYW1lKHB1Yl9mdW5jbmFtZSwgMCwgTlVMTCwgdHJ1ZSk7CisKKwkJCWlmIChpdGVt LT5mbm9pZCA9PSBwdWJfZnVuY29pZCkKKwkJCXsKKwkJCQkvKiBPbmx5IHRoZSBmaXJzdCBkZGwg ZGVwYXJzZSBldmVudCB0cmlnZ2VyIG5lZWRzIHRvIGJlIGludm9rZWQgKi8KKwkJCQlpZiAocHVi X2RlcGFyc2VfZnVuY19jbnQrKyA9PSAwKQorCQkJCQlydW5saXN0ID0gbGFwcGVuZF9vaWQocnVu bGlzdCwgaXRlbS0+Zm5vaWQpOworCQkJfQorCQkJZWxzZQorCQkJCXJ1bmxpc3QgPSBsYXBwZW5k X29pZChydW5saXN0LCBpdGVtLT5mbm9pZCk7CisKIAkJfQogCX0KIApAQCAtNjI3LDcgKzY1Myw3 IEBAIEV2ZW50VHJpZ2dlckRETENvbW1hbmRTdGFydChOb2RlICpwYXJzZXRyZWUpCiAKIAlydW5s aXN0ID0gRXZlbnRUcmlnZ2VyQ29tbW9uU2V0dXAocGFyc2V0cmVlLAogCQkJCQkJCQkJICBFVlRf RERMQ29tbWFuZFN0YXJ0LAotCQkJCQkJCQkJICAiZGRsX2NvbW1hbmRfc3RhcnQiLAorCQkJCQkJ CQkJICBUUklHX0RETF9DTURfU1RBUlQsCiAJCQkJCQkJCQkgICZ0cmlnZGF0YSk7CiAJaWYgKHJ1 bmxpc3QgPT0gTklMKQogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21k cy5jCmluZGV4IGY0YmE1NzI2OTcuLjc1N2U4NjhhMDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1 YmxpY2F0aW9uY21kcy5jCkBAIC0zOCwxMCArMzgsMTIgQEAKICNpbmNsdWRlICJjb21tYW5kcy9w dWJsaWNhdGlvbmNtZHMuaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCiAjaW5jbHVkZSAibWlzY2Fk bWluLmgiCisjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9k ZUZ1bmNzLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NsYXVzZS5oIgogI2luY2x1ZGUgInBh cnNlci9wYXJzZV9jb2xsYXRlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgi CisjaW5jbHVkZSAicGFyc2VyL3BhcnNlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgog I2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCkBAIC04NSwx OCArODcsMjEgQEAgcGFyc2VfcHVibGljYXRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUs CiAJCQkJCQkgIGJvb2wgKnB1Ymxpc2hfZ2l2ZW4sCiAJCQkJCQkgIFB1YmxpY2F0aW9uQWN0aW9u cyAqcHViYWN0aW9ucywKIAkJCQkJCSAgYm9vbCAqcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Rf Z2l2ZW4sCi0JCQkJCQkgIGJvb2wgKnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KQorCQkJCQkJ ICBib29sICpwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCwKKwkJCQkJCSAgYm9vbCAqZGRsX3R5 cGVfZ2l2ZW4pCiB7CiAJTGlzdENlbGwgICAqbGM7CiAKIAkqcHVibGlzaF9naXZlbiA9IGZhbHNl OwogCSpwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdF9naXZlbiA9IGZhbHNlOworCSpkZGxfdHlw ZV9naXZlbiA9IGZhbHNlOwogCiAJLyogZGVmYXVsdHMgKi8KIAlwdWJhY3Rpb25zLT5wdWJpbnNl cnQgPSB0cnVlOwogCXB1YmFjdGlvbnMtPnB1YnVwZGF0ZSA9IHRydWU7CiAJcHViYWN0aW9ucy0+ cHViZGVsZXRlID0gdHJ1ZTsKIAlwdWJhY3Rpb25zLT5wdWJ0cnVuY2F0ZSA9IHRydWU7CisJcHVi YWN0aW9ucy0+cHViZGRsX3RhYmxlID0gZmFsc2U7CiAJKnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9y b290ID0gZmFsc2U7CiAKIAkvKiBQYXJzZSBvcHRpb25zICovCkBAIC0xNTgsNiArMTYzLDQyIEBA IHBhcnNlX3B1YmxpY2F0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJKnB1Ymxp c2hfdmlhX3BhcnRpdGlvbl9yb290X2dpdmVuID0gdHJ1ZTsKIAkJCSpwdWJsaXNoX3ZpYV9wYXJ0 aXRpb25fcm9vdCA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOwogCQl9CisJCWVsc2UgaWYgKHN0cmNt cChkZWZlbC0+ZGVmbmFtZSwgImRkbCIpID09IDApCisJCXsKKwkJCWNoYXIJICAgKmRkbF90eXBl czsKKwkJCUxpc3QJICAgKmRkbF90eXBlX2xpc3Q7CisJCQlMaXN0Q2VsbCAgICpsYzI7CisKKwkJ CWlmICgqZGRsX3R5cGVfZ2l2ZW4pCisJCQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWws IHBzdGF0ZSk7CisKKwkJCS8qCisJCQkgKiBJZiBkZGwgb3B0aW9uIHdhcyBnaXZlbiBvbmx5IHRo ZSBleHBsaWNpdGx5IGxpc3RlZCBkZGwgdHlwZXMKKwkJCSAqIHNob3VsZCBiZSBwdWJsaXNoZWQu CisJCQkgKi8KKwkJCXB1YmFjdGlvbnMtPnB1YmRkbF90YWJsZSA9IGZhbHNlOworCisJCQkqZGRs X3R5cGVfZ2l2ZW4gPSB0cnVlOworCQkJZGRsX3R5cGVzID0gZGVmR2V0U3RyaW5nKGRlZmVsKTsK KworCQkJaWYgKCFTcGxpdElkZW50aWZpZXJTdHJpbmcoZGRsX3R5cGVzLCAnLCcsICZkZGxfdHlw ZV9saXN0KSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRB WF9FUlJPUiksCisJCQkJCQllcnJtc2coImludmFsaWQgbGlzdCBzeW50YXggZm9yIFwiZGRsXCIg b3B0aW9uIikpOworCisJCQkvKiBQcm9jZXNzIHRoZSBvcHRpb24gbGlzdC4gKi8KKwkJCWZvcmVh Y2gobGMyLCBkZGxfdHlwZV9saXN0KQorCQkJeworCQkJCWNoYXIJICAgKmRkbF9vcHQgPSAoY2hh ciAqKSBsZmlyc3QobGMyKTsKKworCQkJCWlmIChzdHJjbXAoZGRsX29wdCwgInRhYmxlIikgPT0g MCkKKwkJCQkJcHViYWN0aW9ucy0+cHViZGRsX3RhYmxlID0gdHJ1ZTsKKwkJCQllbHNlCisJCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJ CQkJCQkJZXJybXNnKCJ1bnJlY29nbml6ZWQgXCJkZGxcIiB2YWx1ZTogXCIlc1wiIiwgZGRsX29w dCkpOworCQkJfQorCQl9CiAJCWVsc2UKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKQEAgLTcyOCw2ICs3NjksMTMwIEBAIENoZWNrUHViUmVs YXRpb25Db2x1bW5MaXN0KGNoYXIgKnB1Ym5hbWUsIExpc3QgKnRhYmxlcywKIAl9CiB9CiAKKy8q CisgKiBIZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIGFuIGV2ZW50IHRyaWdnZXIgZm9yIERETCBy ZXBsaWNhdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK0NyZWF0ZURETFJlcGxpY2FFdmVudFRyaWdn ZXIoY2hhciAqZXZlbnRuYW1lLCBMaXN0ICpjb21tYW5kcywgT2lkIHB1Ym9pZCkKK3sKKwlMaXN0 CSAgICp0YWdzID0gTklMOworCUxpc3RDZWxsICAgKmxjOworCU9pZAkJCXRyaWdnZXJfaWQ7CisJ T2JqZWN0QWRkcmVzcyByZWZlcmVuY2VkOworCU9iamVjdEFkZHJlc3MgcHViYWRkcmVzczsKKwlD cmVhdGVFdmVudFRyaWdTdG10ICpkZGxfdHJpZ2dlcjsKKwljaGFyCQl0cmlnZ2VyX25hbWVbTkFN RURBVEFMRU5dOworCWNoYXIJCXRyaWdnZXJfZnVuY19uYW1lW05BTUVEQVRBTEVOXTsKKwlzdGF0 aWMgY29uc3QgY2hhciAqdHJpZ2dlcl9mdW5jX2Zvcm1hdCA9ICJwdWJsaWNhdGlvbl9kZXBhcnNl XyVzIjsKKworCWRkbF90cmlnZ2VyID0gbWFrZU5vZGUoQ3JlYXRlRXZlbnRUcmlnU3RtdCk7CisK KwlzbnByaW50Zih0cmlnZ2VyX25hbWUsIHNpemVvZih0cmlnZ2VyX25hbWUpLCBQVUJfRVZFTlRf VFJJR19GT1JNQVQsCisJCQkgZXZlbnRuYW1lLCBwdWJvaWQpOworCXNucHJpbnRmKHRyaWdnZXJf ZnVuY19uYW1lLCBzaXplb2YodHJpZ2dlcl9mdW5jX25hbWUpLCB0cmlnZ2VyX2Z1bmNfZm9ybWF0 LAorCQkJIGV2ZW50bmFtZSk7CisKKwlkZGxfdHJpZ2dlci0+dHJpZ25hbWUgPSBwc3RyZHVwKHRy aWdnZXJfbmFtZSk7CisJZGRsX3RyaWdnZXItPmV2ZW50bmFtZSA9IGV2ZW50bmFtZTsKKwlkZGxf dHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSh0cmlnZ2VyX2Z1bmNfbmFtZSk7CisK Kwlmb3JlYWNoKGxjLCBjb21tYW5kcykKKwl7CisJCUNvbW1hbmRUYWcgY21kdGFnID0gbGZpcnN0 X2ludChsYyk7CisJCVN0cmluZwkgICAqdGFnID0gbWFrZVN0cmluZyhwc3RyZHVwKEdldENvbW1h bmRUYWdOYW1lKGNtZHRhZykpKTsKKworCQl0YWdzID0gbGFwcGVuZCh0YWdzLCB0YWcpOworCX0K KworCWRkbF90cmlnZ2VyLT53aGVuY2xhdXNlID0gbGlzdF9tYWtlMShtYWtlRGVmRWxlbSgidGFn IiwgKE5vZGUgKikgdGFncywgLTEpKTsKKworCXRyaWdnZXJfaWQgPSBDcmVhdGVFdmVudFRyaWdn ZXIoZGRsX3RyaWdnZXIsIHRydWUpOworCisJT2JqZWN0QWRkcmVzc1NldChwdWJhZGRyZXNzLCBQ dWJsaWNhdGlvblJlbGF0aW9uSWQsIHB1Ym9pZCk7CisKKwkvKgorCSAqIFJlZ2lzdGVyIHRoZSBl dmVudCB0cmlnZ2VyIGFzIGludGVybmFsbHkgZGVwZW5kZW50IG9uIHRoZSBwdWJsaWNhdGlvbi4K KwkgKi8KKwlPYmplY3RBZGRyZXNzU2V0KHJlZmVyZW5jZWQsIEV2ZW50VHJpZ2dlclJlbGF0aW9u SWQsIHRyaWdnZXJfaWQpOworCXJlY29yZERlcGVuZGVuY3lPbigmcmVmZXJlbmNlZCwgJnB1YmFk ZHJlc3MsIERFUEVOREVOQ1lfSU5URVJOQUwpOworfQorCisvKgorICogSWYgRERMIHJlcGxpY2F0 aW9uIGlzIGVuYWJsZWQsIGNyZWF0ZSBldmVudCB0cmlnZ2VycyB0byBjYXB0dXJlIGFuZCBsb2cg YW55CisgKiByZWxldmFudCBldmVudHMuCisgKi8KK3N0YXRpYyB2b2lkCitDcmVhdGVERExSZXBs aWNhRXZlbnRUcmlnZ2VycyhQdWJsaWNhdGlvbkFjdGlvbnMgcHViYWN0aW9ucywgT2lkIHB1Ym9p ZCkKK3sKKwlMaXN0CSAgICpzdGFydF9jb21tYW5kcyA9IE5JTDsKKwlMaXN0CSAgICpyZXdyaXRl X2NvbW1hbmRzID0gTklMOworCUxpc3QJICAgKmVuZF9jb21tYW5kcyA9IE5JTDsKKworCWlmICgh cHViYWN0aW9ucy5wdWJkZGxfdGFibGUpCisJCXJldHVybjsKKworCXN0YXJ0X2NvbW1hbmRzID0g bGFwcGVuZF9pbnQoc3RhcnRfY29tbWFuZHMsIENNRFRBR19EUk9QX1RBQkxFKTsKKwlyZXdyaXRl X2NvbW1hbmRzID0gbGFwcGVuZF9pbnQocmV3cml0ZV9jb21tYW5kcywgQ01EVEFHX0FMVEVSX1RB QkxFKTsKKworCWVuZF9jb21tYW5kcyA9IGxhcHBlbmRfaW50KGVuZF9jb21tYW5kcywgQ01EVEFH X0NSRUFURV9UQUJMRSk7CisJZW5kX2NvbW1hbmRzID0gbGFwcGVuZF9pbnQoZW5kX2NvbW1hbmRz LCBDTURUQUdfQUxURVJfVEFCTEUpOworCWVuZF9jb21tYW5kcyA9IGxhcHBlbmRfaW50KGVuZF9j b21tYW5kcywgQ01EVEFHX0RST1BfVEFCTEUpOworCisJLyogQ3JlYXRlIHRoZSBkZGxfY29tbWFu ZF9zdGFydCBldmVudCB0cmlnZ2VyICovCisJaWYgKHN0YXJ0X2NvbW1hbmRzICE9IE5JTCkKKwkJ Q3JlYXRlRERMUmVwbGljYUV2ZW50VHJpZ2dlcihQVUJfVFJJR19ERExfQ01EX1NUQVJULCBzdGFy dF9jb21tYW5kcywgcHVib2lkKTsKKworCS8qIENyZWF0ZSB0aGUgdGFibGVfcmV3cml0ZSBldmVu dCB0cmlnZ2VyICovCisJaWYgKHJld3JpdGVfY29tbWFuZHMgIT0gTklMKQorCQlDcmVhdGVERExS ZXBsaWNhRXZlbnRUcmlnZ2VyKFBVQl9UUklHX1RCTF9SRVdSSVRFLCByZXdyaXRlX2NvbW1hbmRz LCBwdWJvaWQpOworCisJLyogQ3JlYXRlIHRoZSBkZGxfY29tbWFuZF9lbmQgZXZlbnQgdHJpZ2dl ciAqLworCWlmIChlbmRfY29tbWFuZHMgIT0gTklMKQorCQlDcmVhdGVERExSZXBsaWNhRXZlbnRU cmlnZ2VyKFBVQl9UUklHX0RETF9DTURfRU5ELCBlbmRfY29tbWFuZHMsIHB1Ym9pZCk7Cit9CisK Ky8qCisgKiBIZWxwZXIgZnVuY3Rpb24gdG8gZHJvcCBhbiBldmVudCB0cmlnZ2VyIGZvciBEREwg cmVwbGljYXRpb24uCisgKi8KK3N0YXRpYyB2b2lkCitEcm9wRERMUmVwbGljYUV2ZW50VHJpZ2dl cihjaGFyICpldmVudG5hbWUsIE9pZCBwdWJvaWQpCit7CisJY2hhcgkJCXRyaWdnZXJfbmFtZVtO QU1FREFUQUxFTl07CisJT2lkCQkJCWV2dG9pZDsKKwlPYmplY3RBZGRyZXNzCW9iajsKKworCXNu cHJpbnRmKHRyaWdnZXJfbmFtZSwgc2l6ZW9mKHRyaWdnZXJfbmFtZSksIFBVQl9FVkVOVF9UUklH X0ZPUk1BVCwKKwkJCSBldmVudG5hbWUsIHB1Ym9pZCk7CisKKwlldnRvaWQgPSBnZXRfZXZlbnRf dHJpZ2dlcl9vaWQodHJpZ2dlcl9uYW1lLCB0cnVlKTsKKwlpZiAoIU9pZElzVmFsaWQoZXZ0b2lk KSkKKwkJcmV0dXJuOworCisJZGVsZXRlRGVwZW5kZW5jeVJlY29yZHNGb3JDbGFzcyhFdmVudFRy aWdnZXJSZWxhdGlvbklkLCBldnRvaWQsCisJCQkJCQkJCQlQdWJsaWNhdGlvblJlbGF0aW9uSWQs CisJCQkJCQkJCQlERVBFTkRFTkNZX0lOVEVSTkFMKTsKKworCS8qCisJICogRW5zdXJlIHRoYXQg dGhlIGRlcGVuZGVuY3kgcmVtb3ZhbCBpcyB2aXNpYmxlLCBzbyB0aGF0IHdlIGNhbiBkcm9wIHRo ZQorCSAqIGV2ZW50IHRyaWdnZXIuCisJICovCisJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsK KworCU9iamVjdEFkZHJlc3NTZXQob2JqLCBFdmVudFRyaWdnZXJSZWxhdGlvbklkLCBldnRvaWQp OworCXBlcmZvcm1EZWxldGlvbigmb2JqLCBEUk9QX1JFU1RSSUNULCBQRVJGT1JNX0RFTEVUSU9O X0lOVEVSTkFMKTsKK30KKworLyoKKyAqIERyb3AgYWxsIHRoZSBldmVudCB0cmlnZ2VycyB3aGlj aCBhcmUgdXNlZCBmb3IgRERMIHJlcGxpY2F0aW9uLgorICovCitzdGF0aWMgdm9pZAorRHJvcERE TFJlcGxpY2FFdmVudFRyaWdnZXJzKE9pZCBwdWJvaWQpCit7CisJRHJvcERETFJlcGxpY2FFdmVu dFRyaWdnZXIoVFJJR19ERExfQ01EX1NUQVJULCBwdWJvaWQpOworCURyb3BERExSZXBsaWNhRXZl bnRUcmlnZ2VyKFRSSUdfRERMX0NNRF9FTkQsIHB1Ym9pZCk7CisJRHJvcERETFJlcGxpY2FFdmVu dFRyaWdnZXIoVFJJR19UQkxfUkVXUklURSwgcHVib2lkKTsKK30KKwogLyoKICAqIENyZWF0ZSBu ZXcgcHVibGljYXRpb24uCiAgKi8KQEAgLTc0MSw2ICs5MDYsNyBAQCBDcmVhdGVQdWJsaWNhdGlv bihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAlEYXR1 bQkJdmFsdWVzW05hdHRzX3BnX3B1YmxpY2F0aW9uXTsKIAlIZWFwVHVwbGUJdHVwOwogCWJvb2wJ CXB1Ymxpc2hfZ2l2ZW47CisJYm9vbAkJZGRsX3R5cGVfZ2l2ZW47CiAJUHVibGljYXRpb25BY3Rp b25zIHB1YmFjdGlvbnM7CiAJYm9vbAkJcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3RfZ2l2ZW47 CiAJYm9vbAkJcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Q7CkBAIC03ODMsNyArOTQ5LDggQEAg Q3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0 bXQgKnN0bXQpCiAJCQkJCQkJICBzdG10LT5vcHRpb25zLAogCQkJCQkJCSAgJnB1Ymxpc2hfZ2l2 ZW4sICZwdWJhY3Rpb25zLAogCQkJCQkJCSAgJnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290X2dp dmVuLAotCQkJCQkJCSAgJnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKKwkJCQkJCQkgICZw dWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCwKKwkJCQkJCQkgICZkZGxfdHlwZV9naXZlbik7CiAK IAlwdWJvaWQgPSBHZXROZXdPaWRXaXRoSW5kZXgocmVsLCBQdWJsaWNhdGlvbk9iamVjdEluZGV4 SWQsCiAJCQkJCQkJCUFudW1fcGdfcHVibGljYXRpb25fb2lkKTsKQEAgLTc5OCw2ICs5NjUsOCBA QCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9u U3RtdCAqc3RtdCkKIAkJQm9vbEdldERhdHVtKHB1YmFjdGlvbnMucHViZGVsZXRlKTsKIAl2YWx1 ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJ0cnVuY2F0ZSAtIDFdID0KIAkJQm9vbEdldERhdHVt KHB1YmFjdGlvbnMucHVidHJ1bmNhdGUpOworCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1 YmRkbF90YWJsZSAtIDFdID0KKwlCb29sR2V0RGF0dW0ocHViYWN0aW9ucy5wdWJkZGxfdGFibGUp OwogCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YnZpYXJvb3QgLSAxXSA9CiAJCUJvb2xH ZXREYXR1bShwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CiAKQEAgLTgzNSw2ICsxMDA0LDEx IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRp b25TdG10ICpzdG10KQogCQl7CiAJCQlMaXN0CSAgICpyZWxzOwogCisJCQlpZiAocHViYWN0aW9u cy5wdWJkZGxfdGFibGUpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09E RV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQllcnJtc2coIkRETCByZXBsaWNhdGlv biBpcyBvbmx5IHN1cHBvcnRlZCBpbiBGT1IgQUxMIFRBQkxFUyBvciBGT1IgVEFCTEVTIElOIFND SEVNQSBwdWJsaWNhdGlvbnMiKSk7CisKIAkJCXJlbHMgPSBPcGVuVGFibGVMaXN0KHJlbGF0aW9u cyk7CiAJCQlUcmFuc2Zvcm1QdWJXaGVyZUNsYXVzZXMocmVscywgcHN0YXRlLT5wX3NvdXJjZXRl eHQsCiAJCQkJCQkJCQkgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwpAQCAtODU4LDYgKzEw MzIsMTEgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJs aWNhdGlvblN0bXQgKnN0bXQpCiAJCX0KIAl9CiAKKwkvKgorCSAqIENyZWF0ZSBldmVudCB0cmln Z2VycyB0byBhbGxvdyBsb2dnaW5nIG9mIERETCBzdGF0ZW1lbnRzLgorCSAqLworCUNyZWF0ZURE TFJlcGxpY2FFdmVudFRyaWdnZXJzKHB1YmFjdGlvbnMsIHB1Ym9pZCk7CisKIAl0YWJsZV9jbG9z ZShyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCiAJSW52b2tlT2JqZWN0UG9zdENyZWF0ZUhvb2so UHVibGljYXRpb25SZWxhdGlvbklkLCBwdWJvaWQsIDApOwpAQCAtODgyLDYgKzEwNjEsNyBAQCBB bHRlclB1YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRp b25TdG10ICpzdG10LAogCWJvb2wJCXJlcGxhY2VzW05hdHRzX3BnX3B1YmxpY2F0aW9uXTsKIAlE YXR1bQkJdmFsdWVzW05hdHRzX3BnX3B1YmxpY2F0aW9uXTsKIAlib29sCQlwdWJsaXNoX2dpdmVu OworCWJvb2wJCWRkbF90eXBlX2dpdmVuOwogCVB1YmxpY2F0aW9uQWN0aW9ucyBwdWJhY3Rpb25z OwogCWJvb2wJCXB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290X2dpdmVuOwogCWJvb2wJCXB1Ymxp c2hfdmlhX3BhcnRpdGlvbl9yb290OwpAQCAtODkwLDEzICsxMDcwLDE0IEBAIEFsdGVyUHVibGlj YXRpb25PcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0 bXQsCiAJTGlzdAkgICAqcm9vdF9yZWxpZHMgPSBOSUw7CiAJTGlzdENlbGwgICAqbGM7CiAKKwlw dWJmb3JtID0gKEZvcm1fcGdfcHVibGljYXRpb24pIEdFVFNUUlVDVCh0dXApOworCiAJcGFyc2Vf cHVibGljYXRpb25fb3B0aW9ucyhwc3RhdGUsCiAJCQkJCQkJICBzdG10LT5vcHRpb25zLAogCQkJ CQkJCSAgJnB1Ymxpc2hfZ2l2ZW4sICZwdWJhY3Rpb25zLAogCQkJCQkJCSAgJnB1Ymxpc2hfdmlh X3BhcnRpdGlvbl9yb290X2dpdmVuLAotCQkJCQkJCSAgJnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9y b290KTsKLQotCXB1YmZvcm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlvbikgR0VUU1RSVUNUKHR1cCk7 CisJCQkJCQkJICAmcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QsCisJCQkJCQkJICAmZGRsX3R5 cGVfZ2l2ZW4pOwogCiAJLyoKIAkgKiBJZiB0aGUgcHVibGljYXRpb24gZG9lc24ndCBwdWJsaXNo IGNoYW5nZXMgdmlhIHRoZSByb290IHBhcnRpdGlvbmVkCkBAIC05NzgsNiArMTE1OSwxOCBAQCBB bHRlclB1YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRp b25TdG10ICpzdG10LAogCQl9CiAJfQogCisJaWYgKGRkbF90eXBlX2dpdmVuICYmIHB1YmFjdGlv bnMucHViZGRsX3RhYmxlKQorCXsKKwkJaWYgKHJvb3RfcmVsaWRzID09IE5JTCkKKwkJCXJvb3Rf cmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLAorCQkJCQkJCQkJ CQkJICBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCisJCWlmIChyb290X3JlbGlkcykKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxV RSksCisJCQkJCWVycm1zZygiRERMIHJlcGxpY2F0aW9uIGlzIG9ubHkgc3VwcG9ydGVkIGluIEZP UiBBTEwgVEFCTEVTIG9yIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpY2F0aW9ucyIpKTsKKwl9 CisKIAkvKiBFdmVyeXRoaW5nIG9rLCBmb3JtIGEgbmV3IHR1cGxlLiAqLwogCW1lbXNldCh2YWx1 ZXMsIDAsIHNpemVvZih2YWx1ZXMpKTsKIAltZW1zZXQobnVsbHMsIGZhbHNlLCBzaXplb2YobnVs bHMpKTsKQEAgLTk5OCw2ICsxMTkxLDE5IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25zKFBhcnNl U3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCXJlcGxhY2VzW0Fu dW1fcGdfcHVibGljYXRpb25fcHVidHJ1bmNhdGUgLSAxXSA9IHRydWU7CiAJfQogCisJaWYgKGRk bF90eXBlX2dpdmVuKQorCXsKKwkJLyogUmVjcmVhdGUgdGhlIGV2ZW50IHRyaWdnZXJzIGlmIHRo ZSBkZGwgb3B0aW9uIGlzIGNoYW5nZWQuICovCisJCWlmIChwdWJmb3JtLT5wdWJkZGxfdGFibGUg IT0gcHViYWN0aW9ucy5wdWJkZGxfdGFibGUpCisJCXsKKwkJCURyb3BERExSZXBsaWNhRXZlbnRU cmlnZ2VycyhwdWJmb3JtLT5vaWQpOworCQkJQ3JlYXRlRERMUmVwbGljYUV2ZW50VHJpZ2dlcnMo cHViYWN0aW9ucywgcHViZm9ybS0+b2lkKTsKKwkJfQorCisJCXZhbHVlc1tBbnVtX3BnX3B1Ymxp Y2F0aW9uX3B1YmRkbF90YWJsZSAtIDFdID0gQm9vbEdldERhdHVtKHB1YmFjdGlvbnMucHViZGRs X3RhYmxlKTsKKwkJcmVwbGFjZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJkZGxfdGFibGUgLSAx XSA9IHRydWU7CisJfQorCiAJaWYgKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290X2dpdmVuKQog CXsKIAkJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcHVidmlhcm9vdCAtIDFdID0gQm9vbEdl dERhdHVtKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKQEAgLTExMDMsNiArMTMwOSwxMiBA QCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFw VHVwbGUgdHVwLAogCiAJaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9BZGRPYmplY3RzKQogCXsKKwkJ aWYgKHB1YmZvcm0tPnB1YmRkbF90YWJsZSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCWVycm1zZygiY2Fubm90 IGFkZCB0YWJsZSB0byBwdWJsaWNhdGlvbiBcIiVzXCIgaWYgRERMIHJlcGxpY2F0aW9uIGlzIGVu YWJsZWQiLAorCQkJCQkJICAgc3RtdC0+cHVibmFtZSkpOworCiAJCVRyYW5zZm9ybVB1YldoZXJl Q2xhdXNlcyhyZWxzLCBxdWVyeVN0cmluZywgcHViZm9ybS0+cHVidmlhcm9vdCk7CiAKIAkJcHVi bGlzaF9zY2hlbWEgfD0gaXNfc2NoZW1hX3B1YmxpY2F0aW9uKHB1YmlkKTsKQEAgLTExMjEsNiAr MTMzMywxMiBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpz dG10LCBIZWFwVHVwbGUgdHVwLAogCQlMaXN0CSAgICpkZWxyZWxzID0gTklMOwogCQlMaXN0Q2Vs bCAgICpvbGRsYzsKIAorCQlpZiAocHViZm9ybS0+cHViZGRsX3RhYmxlKQorCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJ CQkJZXJybXNnKCJjYW5ub3QgYWRkIHRhYmxlIHRvIHB1YmxpY2F0aW9uIFwiJXNcIiBpZiBEREwg cmVwbGljYXRpb24gaXMgZW5hYmxlZCIsCisJCQkJCQkgICBzdG10LT5wdWJuYW1lKSk7CisKIAkJ VHJhbnNmb3JtUHViV2hlcmVDbGF1c2VzKHJlbHMsIHF1ZXJ5U3RyaW5nLCBwdWJmb3JtLT5wdWJ2 aWFyb290KTsKIAogCQlDaGVja1B1YlJlbGF0aW9uQ29sdW1uTGlzdChzdG10LT5wdWJuYW1lLCBy ZWxzLCBwdWJsaXNoX3NjaGVtYSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2Vm aWxlCmluZGV4IDJkYzI1ZTM3YmIuLmI3OWRkZDhjZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9NYWtlZmlsZQpAQCAtMTYsNiArMTYsOCBAQCBvdmVycmlkZSBDUFBGTEFHUyA6 PSAtSSQoc3JjZGlyKSAkKENQUEZMQUdTKQogCiBPQkpTID0gXAogCWFwcGx5cGFyYWxsZWx3b3Jr ZXIubyBcCisJZGRsbWVzc2FnZS5vIFwKKwlkZGx0cmlnZ2VyLm8gXAogCWRlY29kZS5vIFwKIAls YXVuY2hlci5vIFwKIAlsb2dpY2FsLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9kZGxtZXNzYWdlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2RkbG1lc3NhZ2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4z ZjE0NGRlMzk1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9kZGxtZXNzYWdlLmMKQEAgLTAsMCArMSw4MyBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KgorICogZGRsbWVzc2FnZS5jCisgKgkgIExvZ2ljYWwgRERMIG1lc3NhZ2VzLgorICoKKyAqIENv cHlyaWdodCAoYykgMjAyMywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAq CisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2RkbG1lc3NhZ2UuYworICoKKyAqIE5PVEVTCisgKgorICogTG9naWNhbCBEREwgbWVzc2FnZXMg YWxsb3cgWExPRyBsb2dnaW5nIG9mIERETCBjb21tYW5kIHN0cmluZ3MgdGhhdAorICogZ2V0IHBh c3NlZCB0byB0aGUgbG9naWNhbCBkZWNvZGluZyBwbHVnaW4uIEluIG5vcm1hbCBYTE9HIHByb2Nl c3NpbmcgdGhleQorICogYXJlIHNhbWUgYXMgTk9PUC4KKyAqCisgKiBVbmxpa2UgZ2VuZXJpYyBs b2dpY2FsIG1lc3NhZ2VzLCB0aGVzZSBEREwgbWVzc2FnZXMgaGF2ZSBvbmx5IHRyYW5zYWN0aW9u YWwKKyAqIG1vZGUuIE5vdGUgYnkgZGVmYXVsdCBERExzIGluIFBvc3RncmVTUUwgYXJlIHRyYW5z YWN0aW9uYWwuCisgKgorICogVGhlc2UgbWVzc2FnZXMgYXJlIHBhcnQgb2YgY3VycmVudCB0cmFu c2FjdGlvbiBhbmQgd2lsbCBiZSBzZW50IHRvCisgKiBkZWNvZGluZyBwbHVnaW4gc2ltaWxhciB0 byBETUwgb3BlcmF0aW9ucy4KKyAqCisgKiBFdmVyeSBtZXNzYWdlIGluY2x1ZGVzIGEgcHJlZml4 IHRvIGF2b2lkIGNvbmZsaWN0cyBiZXR3ZWVuIGRpZmZlcmVudCBkZWNvZGluZworICogcGx1Z2lu cy4gUGx1Z2luIGF1dGhvcnMgbXVzdCB0YWtlIHNwZWNpYWwgY2FyZSB0byB1c2UgYSB1bmlxdWUg cHJlZml4IChlLmcgb25lCisgKiBpZGVhIGlzIHRvIGluY2x1ZGUgdGhlIG5hbWUgb2YgdGhlIGV4 dGVuc2lvbikuCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9zdGdy ZXMuaCIKKworI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dp bnNlcnQuaCIKKyNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgorI2luY2x1ZGUgIm1pc2Nh ZG1pbi5oIgorI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgorI2luY2x1ZGUgInJlcGxpY2F0 aW9uL2xvZ2ljYWwuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgiCisjaW5j bHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKworLyoKKyAqIFdyaXRlIGxvZ2ljYWwgZGVjb2Rpbmcg RERMIG1lc3NhZ2UgaW50byBYTG9nLgorICovCitYTG9nUmVjUHRyCitMb2dMb2dpY2FsRERMTWVz c2FnZShjb25zdCBjaGFyICpwcmVmaXgsIE9pZCByZWxpZCwgRGVwYXJzZWRDb21tYW5kVHlwZSBj bWR0eXBlLAorCQkJCQkgY29uc3QgY2hhciAqbWVzc2FnZSwgc2l6ZV90IHNpemUpCit7CisJeGxf bG9naWNhbF9kZGxfbWVzc2FnZSB4bHJlYzsKKworCSAvKiBFbnN1cmUgd2UgaGF2ZSBhIHZhbGlk IHRyYW5zYWN0aW9uIGlkLiAqLworCUFzc2VydChJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CisJR2V0 Q3VycmVudFRyYW5zYWN0aW9uSWQoKTsKKworCXhscmVjLmRiSWQgPSBNeURhdGFiYXNlSWQ7CisJ LyogVHJhaWxpbmcgemVybyBpcyBjcml0aWNhbDsgc2VlIGxvZ2ljYWxkZGxtc2dfZGVzYyAqLwor CXhscmVjLnByZWZpeF9zaXplID0gc3RybGVuKHByZWZpeCkgKyAxOworCXhscmVjLm1lc3NhZ2Vf c2l6ZSA9IHNpemU7CisJeGxyZWMucmVsaWQgPSByZWxpZDsKKwl4bHJlYy5jbWR0eXBlID0gY21k dHlwZTsKKworCVhMb2dCZWdpbkluc2VydCgpOworCVhMb2dSZWdpc3RlckRhdGEoKGNoYXIgKikg JnhscmVjLCBTaXplT2ZMb2dpY2FsRERMTWVzc2FnZSk7CisJWExvZ1JlZ2lzdGVyRGF0YSh1bmNv bnN0aWZ5KGNoYXIgKiwgcHJlZml4KSwgeGxyZWMucHJlZml4X3NpemUpOworCVhMb2dSZWdpc3Rl ckRhdGEodW5jb25zdGlmeShjaGFyICosIG1lc3NhZ2UpLCBzaXplKTsKKworCS8qIEFsbG93IG9y aWdpbiBmaWx0ZXJpbmcgKi8KKwlYTG9nU2V0UmVjb3JkRmxhZ3MoWExPR19JTkNMVURFX09SSUdJ Tik7CisKKwlyZXR1cm4gWExvZ0luc2VydChSTV9MT0dJQ0FMRERMTVNHX0lELCBYTE9HX0xPR0lD QUxfRERMX01FU1NBR0UpOworfQorCisvKgorICogUmVkbyBpcyBiYXNpY2FsbHkganVzdCBub29w IGZvciBsb2dpY2FsIGRlY29kaW5nIERETCBtZXNzYWdlcy4KKyAqLwordm9pZAorbG9naWNhbGRk bG1zZ19yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQoreworCXVpbnQ4CQlpbmZvID0gWExv Z1JlY0dldEluZm8ocmVjb3JkKSAmIH5YTFJfSU5GT19NQVNLOworCisJaWYgKGluZm8gIT0gWExP R19MT0dJQ0FMX0RETF9NRVNTQUdFKQorCQllbG9nKFBBTklDLCAibG9naWNhbGRkbG1zZ19yZWRv OiB1bmtub3duIG9wIGNvZGUgJXUiLCBpbmZvKTsKKworCS8qIFRoaXMgaXMgb25seSBpbnRlcmVz dGluZyBmb3IgbG9naWNhbCBkZWNvZGluZywgc2VlIGRlY29kZS5jLiAqLworfQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGx0cmlnZ2VyLmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbHRyaWdnZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwLi42NzQwZDA3NGZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGx0cmlnZ2VyLmMKQEAgLTAsMCArMSwzNDkgQEAK Ky8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGRkbHRyaWdnZXIuYworICoJICBMb2dpY2FsIERE TCB0cmlnZ2Vycy4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMjMsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGx0cmlnZ2VyLmMKKyAqCisgKiBOT1RFUworICoKKyAq IERlcGFyc2UgdGhlIGRkbCBjb21tYW5kIGFuZCBsb2cgaXQuCisgKgorICogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJhY2Nlc3Mv dGFibGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2NsYXNzLmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9wZ19wcm9jLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oIgorI2luY2x1 ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJsaWIvaWxpc3QuaCIKKyNpbmNsdWRlICJyZXBsaWNh dGlvbi9kZGxtZXNzYWdlLmgiCisjaW5jbHVkZSAidGNvcC9kZGxkZXBhcnNlLmgiCisjaW5jbHVk ZSAidXRpbHMvZm1ncnByb3Rvcy5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorCitl eHRlcm4gRXZlbnRUcmlnZ2VyUXVlcnlTdGF0ZSAqY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlOwor CisKKy8qCisgKiBDaGVjayBpZiB0aGUgY29tbWFuZCBjYW4gYmUgcHVibGlzaGVkLgorICoKKyAq IFhYWCBFeGVjdXRpbmcgYSBub24taW1tdXRhYmxlIGV4cHJlc3Npb24gZHVyaW5nIHRoZSB0YWJs ZSByZXdyaXRlIHBoYXNlIGlzCisgKiBub3QgYWxsb3dlZCwgYXMgaXQgbWF5IHJlc3VsdCBpbiBk aWZmZXJlbnQgZGF0YSBiZXR3ZWVuIHB1Ymxpc2hlciBhbmQKKyAqIHN1YnNjcmliZXIuIFdoaWxl IHNvbWUgbWF5IHN1Z2dlc3QgY29udmVydGluZyB0aGUgcmV3cml0ZSBpbnNlcnRzIHRvIHVwZGF0 ZXMKKyAqIGFuZCByZXBsaWNhdGUgdGhlbSBhZnRlciB0aGUgZGRsIGNvbW1hbmQgdG8gbWFpbnRh aW4gZGF0YSBjb25zaXN0ZW5jeSwgYnV0IGl0CisgKiBkb2Vzbid0IHdvcmsgaWYgdGhlIHJlcGxp Y2EgaWRlbnRpdHkgY29sdW1uIGlzIGFsdGVyZWQgaW4gdGhlIGNvbW1hbmQuIFRoaXMKKyAqIGlz IGJlY2F1c2UgdGhlIHJld3JpdGUgaW5zZXJ0cyBkbyBub3QgY29udGFpbiB0aGUgb2xkIHZhbHVl cyBhbmQgdGhlcmVmb3JlCisgKiBjYW5ub3QgYmUgY29udmVydGVkIHRvIHVwZGF0ZS4KKyAqCisg KiBBcGFydCBmcm9tIHRoYXQsIGNvbW1hbmRzIGNvbnRhaW5pbmcgdm9sYXRpbGUgZnVuY3Rpb25z IGFyZSBub3QgYWxsb3dlZC4gQmVjYXVzZQorICogaXQncyBwb3NzaWJsZSB0aGUgZnVuY3Rpb25z IGNvbnRhaW4gRERML0RNTCBpbiB3aGljaCBjYXNlIHRoZXNlIG9wZXJhdGlvbnMKKyAqIHdpbGwg YmUgZXhlY3V0ZWQgdHdpY2UgYW5kIGNhdXNlIGR1cGxpY2F0ZSBkYXRhLiBJbiBhZGRpdGlvbiwg d2UgZG9uJ3Qga25vdworICogd2hldGhlciB0aGUgdGFibGVzIGJlaW5nIGFjY2Vzc2VkIGJ5IHRo ZXNlIERETC9ETUwgYXJlIHB1Ymxpc2hlZCBvciBub3QuIFNvCisgKiBibGluZGx5IGFsbG93aW5n IHN1Y2ggZnVuY3Rpb25zIGNhbiBhbGxvdyB1bmludGVuZGVkIGNsYXVzZXMgbGlrZSB0aGUgdGFi bGVzCisgKiBhY2Nlc3NlZCBpbiB0aG9zZSBmdW5jdGlvbnMgbWF5IG5vdCBldmVuIGV4aXN0IG9u IHRoZSBzdWJzY3JpYmVyLgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfY29tbWFuZF9wdWJsaXNo YWJsZShkZGxfZGVwYXJzZV9jb250ZXh0IGNvbnRleHQsIGJvb2wgaXNfcmV3cml0ZSkKK3sKKwor CWlmIChpc19yZXdyaXRlICYmIGNvbnRleHQubWF4X3ZvbGF0aWxpdHkgIT0gUFJPVk9MQVRJTEVf SU1NVVRBQkxFKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9PQkpFQ1Rf Tk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJZXJybXNnKCJjYW5ub3QgcmV3cml0ZSB0 YWJsZSBpZiB0aGlzIGNvbW1hbmQgY29udGFpbnMgbXV0YWJsZSBmdW5jdGlvbiBiZWNhdXNlIGl0 IGNhbm5vdCBiZSByZXBsaWNhdGVkIGluIERETCByZXBsaWNhdGlvbiIpKTsKKworCWlmIChjb250 ZXh0Lm1heF92b2xhdGlsaXR5ID09IFBST1ZPTEFUSUxFX1ZPTEFUSUxFKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFU RSksCisJCQkJZXJybXNnKCJjYW5ub3QgdXNlIHZvbGF0aWxlIGZ1bmN0aW9uIGluIHRoaXMgY29t bWFuZCBiZWNhdXNlIGl0IGNhbm5vdCBiZSByZXBsaWNhdGVkIGluIERETCByZXBsaWNhdGlvbiIp KTsKK30KKworLyoKKyAqIERlcGFyc2UgdGhlIGRkbCBjb21tYW5kIGFuZCBsb2cgaXQgcHJpb3Ig dG8KKyAqIGV4ZWN1dGlvbi4gQ3VycmVudGx5IG9ubHkgdXNlZCBmb3IgRFJPUCBUQUJMRSBjb21t YW5kCisgKiBzbyB0aGF0IGNhdGFsb2cgY2FuIGJlIGFjY2Vzc2VkIGJlZm9yZSBiZWluZyBkZWxl dGVkLgorICogVGhpcyBpcyB0byBjaGVjayBpZiB0aGUgdGFibGUgaXMgcGFydCBvZiB0aGUgcHVi bGljYXRpb24KKyAqIG9yIG5vdC4KKyAqLworRGF0dW0KK3B1YmxpY2F0aW9uX2RlcGFyc2VfZGRs X2NvbW1hbmRfc3RhcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlFdmVudFRyaWdnZXJEYXRhICp0 cmlnZGF0YTsKKwljaGFyCSAgICpjb21tYW5kID0gcHNwcmludGYoIkRyb3AgdGFibGUgY29tbWFu ZCBzdGFydCIpOworCURyb3BTdG10ICAgKnN0bXQ7CisJTGlzdENlbGwgICAqY2VsbDE7CisKKwlp ZiAoIUNBTExFRF9BU19FVkVOVF9UUklHR0VSKGZjaW5mbykpCisJCWVsb2coRVJST1IsICJub3Qg ZmlyZWQgYnkgZXZlbnQgdHJpZ2dlciBtYW5hZ2VyIik7CisKKwl0cmlnZGF0YSA9IChFdmVudFRy aWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dDsKKwlzdG10ID0gKERyb3BTdG10ICopIHRyaWdk YXRhLT5wYXJzZXRyZWU7CisKKwkvKiBFeHRyYWN0IHRoZSByZWxpZCBmcm9tIHRoZSBwYXJzZSB0 cmVlICovCisJZm9yZWFjaChjZWxsMSwgc3RtdC0+b2JqZWN0cykKKwl7CisJCWNoYXIJCXJlbHBl cnNpc3Q7CisJCU5vZGUJICAgKm9iamVjdCA9IGxmaXJzdChjZWxsMSk7CisJCU9iamVjdEFkZHJl c3MgYWRkcmVzczsKKwkJUmVsYXRpb24JcmVsYXRpb24gPSBOVUxMOworCisJCWFkZHJlc3MgPSBn ZXRfb2JqZWN0X2FkZHJlc3Moc3RtdC0+cmVtb3ZlVHlwZSwKKwkJCQkJCQkJCSBvYmplY3QsCisJ CQkJCQkJCQkgJnJlbGF0aW9uLAorCQkJCQkJCQkJIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssCisJCQkJ CQkJCQkgdHJ1ZSk7CisKKwkJLyogT2JqZWN0IGRvZXMgbm90IGV4aXN0LCBub3RoaW5nIHRvIGRv ICovCisJCWlmICghcmVsYXRpb24pCisJCQljb250aW51ZTsKKworCQlyZWxwZXJzaXN0ID0gZ2V0 X3JlbF9wZXJzaXN0ZW5jZShhZGRyZXNzLm9iamVjdElkKTsKKworCQkvKgorCQkgKiBEbyBub3Qg Z2VuZXJhdGUgd2FsIGxvZyBmb3IgY29tbWFuZHMgd2hvc2UgdGFyZ2V0IHRhYmxlIGlzIGEKKwkJ ICogdGVtcG9yYXJ5IG9yIHVubG9nZ2VkIHRhYmxlLgorCQkgKgorCQkgKiBYWFggV2UgbWF5IGdl bmVyYXRlIHdhbCBsb2dzIGZvciB1bmxvZ2dlZCB0YWJsZXMgaW4gdGhlIGZ1dHVyZSBzbworCQkg KiB0aGF0IHVubG9nZ2VkIHRhYmxlcyBjYW4gYWxzbyBiZSBjcmVhdGVkIGFuZCBhbHRlcmVkIG9u IHRoZQorCQkgKiBzdWJzY3JpYmVyIHNpZGUuIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gZGly ZWN0bHkgcmVwbGF5IHRoZSBTRVQKKwkJICogTE9HR0VEIGNvbW1hbmQgYW5kIHRoZSBpbmNvbWlu ZyByZXdyaXRlIG1lc3NhZ2Ugd2l0aG91dCBjcmVhdGluZyBhCisJCSAqIG5ldyB0YWJsZS4KKwkJ ICovCisJCWlmIChyZWxwZXJzaXN0ID09IFJFTFBFUlNJU1RFTkNFX1BFUk1BTkVOVCkKKwkJCUxv Z0xvZ2ljYWxERExNZXNzYWdlKCJkZXBhcnNlIiwgYWRkcmVzcy5vYmplY3RJZCwgRENUX1RhYmxl RHJvcFN0YXJ0LAorCQkJCQkJCQkgY29tbWFuZCwgc3RybGVuKGNvbW1hbmQpICsgMSk7CisKKwkJ dGFibGVfY2xvc2UocmVsYXRpb24sIE5vTG9jayk7CisJfQorCXJldHVybiBQb2ludGVyR2V0RGF0 dW0oTlVMTCk7Cit9CisKKy8qCisgKiBwdWJsaWNhdGlvbl9kZXBhcnNlX3RhYmxlX3Jld3JpdGUK KyAqCisgKiBEZXBhcnNlIHRoZSBkZGwgdGFibGUgcmV3cml0ZSBjb21tYW5kIGFuZCBsb2cgaXQu CisgKi8KK0RhdHVtCitwdWJsaWNhdGlvbl9kZXBhcnNlX3RhYmxlX3Jld3JpdGUoUEdfRlVOQ1RJ T05fQVJHUykKK3sKKwljaGFyCQlyZWxwZXJzaXN0OworCUNvbGxlY3RlZENvbW1hbmQgKmNtZDsK KworCWlmICghQ0FMTEVEX0FTX0VWRU5UX1RSSUdHRVIoZmNpbmZvKSkKKwkJZWxvZyhFUlJPUiwg Im5vdCBmaXJlZCBieSBldmVudCB0cmlnZ2VyIG1hbmFnZXIiKTsKKworCWNtZCA9IGN1cnJlbnRF dmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVudENvbW1hbmQ7CisKKwlBc3NlcnQoY21kICYmIGNtZC0+ ZC5hbHRlclRhYmxlLnJld3JpdGUpOworCisJcmVscGVyc2lzdCA9IGdldF9yZWxfcGVyc2lzdGVu Y2UoY21kLT5kLmFsdGVyVGFibGUub2JqZWN0SWQpOworCisJLyoKKwkgKiBEbyBub3QgZ2VuZXJh dGUgd2FsIGxvZyBmb3IgY29tbWFuZHMgd2hvc2UgdGFyZ2V0IHRhYmxlIGlzIGEgdGVtcG9yYXJ5 CisJICogb3IgdW5sb2dnZWQgdGFibGUuCisJICoKKwkgKiBYWFggV2UgbWF5IGdlbmVyYXRlIHdh bCBsb2dzIGZvciB1bmxvZ2dlZCB0YWJsZXMgaW4gdGhlIGZ1dHVyZSBzbyB0aGF0CisJICogdW5s b2dnZWQgdGFibGVzIGNhbiBhbHNvIGJlIGNyZWF0ZWQgYW5kIGFsdGVyZWQgb24gdGhlIHN1YnNj cmliZXIgc2lkZS4KKwkgKiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGRpcmVjdGx5IHJlcGxh eSB0aGUgU0VUIExPR0dFRCBjb21tYW5kIGFuZCB0aGUKKwkgKiBpbmNvbWluZyByZXdyaXRlIG1l c3NhZ2Ugd2l0aG91dCBjcmVhdGluZyBhIG5ldyB0YWJsZS4KKwkgKi8KKwlpZiAocmVscGVyc2lz dCA9PSBSRUxQRVJTSVNURU5DRV9QRVJNQU5FTlQpCisJeworCQlkZGxfZGVwYXJzZV9jb250ZXh0 IGNvbnRleHQ7CisJCWNoYXIJICAgKmpzb25fc3RyaW5nOworCisJCS8qCisJCSAqIEluaXRpYWxp emUgdGhlIG1heF92b2xhdGlsaXR5IGZsYWcgdG8gUFJPVk9MQVRJTEVfSU1NVVRBQkxFLCB3aGlj aCBpcworCQkgKiB0aGUgbWluaW11bSB2b2xhdGlsaXR5IGxldmVsLgorCQkgKi8KKwkJY29udGV4 dC5tYXhfdm9sYXRpbGl0eSA9IFBST1ZPTEFUSUxFX0lNTVVUQUJMRTsKKworCQkvKiBEZXBhcnNl IHRoZSBEREwgY29tbWFuZCBhbmQgV0FMIGxvZyBpdCB0byBhbGxvdyBkZWNvZGluZyBvZiB0aGUg c2FtZS4gKi8KKwkJanNvbl9zdHJpbmcgPSBkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChjbWQsICZj b250ZXh0KTsKKworCQlpZiAoanNvbl9zdHJpbmcgIT0gTlVMTCkKKwkJeworCQkJY2hlY2tfY29t bWFuZF9wdWJsaXNoYWJsZShjb250ZXh0LCB0cnVlKTsKKwkJCUxvZ0xvZ2ljYWxERExNZXNzYWdl KCJkZXBhcnNlIiwgY21kLT5kLmFsdGVyVGFibGUub2JqZWN0SWQsIERDVF9UYWJsZUFsdGVyLAor CQkJCQkJCQkganNvbl9zdHJpbmcsIHN0cmxlbihqc29uX3N0cmluZykgKyAxKTsKKwkJfQorCX0K KworCXJldHVybiBQb2ludGVyR2V0RGF0dW0oTlVMTCk7Cit9CisKKy8qCisgKiBEZXBhcnNlIHRo ZSBkZGwgY29tbWFuZCBhbmQgbG9nIGl0LiBUaGlzIGZ1bmN0aW9uCisgKiBpcyBjYWxsZWQgYWZ0 ZXIgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgY29tbWFuZCBidXQgYmVmb3JlIHRoZQorICogdHJhbnNh Y3Rpb24gY29tbWl0cy4KKyAqLworRGF0dW0KK3B1YmxpY2F0aW9uX2RlcGFyc2VfZGRsX2NvbW1h bmRfZW5kKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJTGlzdENlbGwgICAqbGM7CisJc2xpc3RfaXRl cglpdGVyOworCU9pZAkJCXJlbGlkOworCWNoYXIJCXJlbGtpbmQ7CisKKwlpZiAoIUNBTExFRF9B U19FVkVOVF9UUklHR0VSKGZjaW5mbykpCisJCWVsb2coRVJST1IsICJub3QgZmlyZWQgYnkgZXZl bnQgdHJpZ2dlciBtYW5hZ2VyIik7CisKKwlmb3JlYWNoKGxjLCBjdXJyZW50RXZlbnRUcmlnZ2Vy U3RhdGUtPmNvbW1hbmRMaXN0KQorCXsKKwkJY2hhcgkJcmVscGVyc2lzdCA9IFJFTFBFUlNJU1RF TkNFX1BFUk1BTkVOVDsKKwkJQ29sbGVjdGVkQ29tbWFuZCAqY21kID0gbGZpcnN0KGxjKTsKKwkJ RGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlOworCisJCS8qIFJld3JpdGUgRERMIGhhcyBiZWVu IGhhbmRsZWQgaW4gdGFibGVfcmV3cml0ZSB0cmlnZ2VyICovCisJCWlmIChjbWQtPmQuYWx0ZXJU YWJsZS5yZXdyaXRlKQorCQl7CisJCQlSZW5hbWVTdG10ICpyZW5hbWVTdG10ID0gKFJlbmFtZVN0 bXQgKikgY21kLT5wYXJzZXRyZWU7CisKKwkJCWlmIChyZW5hbWVTdG10ICYmIHJlbmFtZVN0bXQt PnJlbGF0aW9uVHlwZSAhPSBPQkpFQ1RfVFlQRSAmJgorCQkJCXJlbmFtZVN0bXQtPnJlbGF0aW9u VHlwZSAhPSBPQkpFQ1RfVEFCTEUpCisJCQkJY29udGludWU7CisJCX0KKworCQlpZiAoY21kLT50 eXBlID09IFNDVF9TaW1wbGUgJiYKKwkJCSFPaWRJc1ZhbGlkKGNtZC0+ZC5zaW1wbGUuYWRkcmVz cy5vYmplY3RJZCkpCisJCQljb250aW51ZTsKKworCQlpZiAoY21kLT50eXBlID09IFNDVF9BbHRl clRhYmxlKQorCQl7CisJCQlyZWxpZCA9IGNtZC0+ZC5hbHRlclRhYmxlLm9iamVjdElkOworCQkJ Y21kdHlwZSA9IERDVF9UYWJsZUFsdGVyOworCQl9CisJCWVsc2UKKwkJeworCQkJLyogT25seSBT Q1RfU2ltcGxlIGZvciBub3cgKi8KKwkJCXJlbGlkID0gY21kLT5kLnNpbXBsZS5hZGRyZXNzLm9i amVjdElkOworCQkJY21kdHlwZSA9IERDVF9TaW1wbGVDbWQ7CisJCX0KKworCQlyZWxraW5kID0g Z2V0X3JlbF9yZWxraW5kKHJlbGlkKTsKKwkJaWYgKHJlbGtpbmQpCisJCQlyZWxwZXJzaXN0ID0g Z2V0X3JlbF9wZXJzaXN0ZW5jZShyZWxpZCk7CisKKwkJLyoKKwkJICogRG8gbm90IGdlbmVyYXRl IHdhbCBsb2cgZm9yIGNvbW1hbmRzIHdob3NlIHRhcmdldCB0YWJsZSBpcyBhCisJCSAqIHRlbXBv cmFyeSBvciB1bmxvZ2dlZCB0YWJsZS4KKwkJICoKKwkJICogWFhYIFdlIG1heSBnZW5lcmF0ZSB3 YWwgbG9ncyBmb3IgdW5sb2dnZWQgdGFibGVzIGluIHRoZSBmdXR1cmUgc28KKwkJICogdGhhdCB1 bmxvZ2dlZCB0YWJsZXMgY2FuIGFsc28gYmUgY3JlYXRlZCBhbmQgYWx0ZXJlZCBvbiB0aGUKKwkJ ICogc3Vic2NyaWJlciBzaWRlLiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGRpcmVjdGx5IHJl cGxheSB0aGUgU0VUCisJCSAqIExPR0dFRCBjb21tYW5kIGFuZCB0aGUgaW5jb21pbmcgcmV3cml0 ZSBtZXNzYWdlIHdpdGhvdXQgY3JlYXRpbmcgYQorCQkgKiBuZXcgdGFibGUuCisJCSAqLworCQlp ZiAocmVscGVyc2lzdCA9PSBSRUxQRVJTSVNURU5DRV9QRVJNQU5FTlQpCisJCXsKKwkJCS8qCisJ CQkgKiBEZXBhcnNlIHRoZSBEREwgY29tbWFuZCBhbmQgV0FMIGxvZyBpdCB0byBhbGxvdyBkZWNv ZGluZyBvZiB0aGUKKwkJCSAqIHNhbWUuCisJCQkgKi8KKwkJCWRkbF9kZXBhcnNlX2NvbnRleHQg Y29udGV4dDsKKwkJCWNoYXIJICAgKmpzb25fc3RyaW5nOworCisJCQkvKgorCQkJICogSW5pdGlh bGl6ZSB0aGUgbWF4X3ZvbGF0aWxpdHkgZmxhZyB0byBQUk9WT0xBVElMRV9JTU1VVEFCTEUsIHdo aWNoIGlzCisJCQkgKiB0aGUgbWluaW11bSB2b2xhdGlsaXR5IGxldmVsLgorCQkJICovCisJCQlj b250ZXh0Lm1heF92b2xhdGlsaXR5ID0gUFJPVk9MQVRJTEVfSU1NVVRBQkxFOworCisJCQlqc29u X3N0cmluZyA9IGRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKGNtZCwgJmNvbnRleHQpOworCisJCQlp ZiAoanNvbl9zdHJpbmcgIT0gTlVMTCkKKwkJCXsKKwkJCQljaGVja19jb21tYW5kX3B1Ymxpc2hh YmxlKGNvbnRleHQsIGZhbHNlKTsKKwkJCQlMb2dMb2dpY2FsRERMTWVzc2FnZSgiZGVwYXJzZSIs IHJlbGlkLCBjbWR0eXBlLCBqc29uX3N0cmluZywKKwkJCQkJCQkJCSBzdHJsZW4oanNvbl9zdHJp bmcpICsgMSk7CisJCQl9CisJCX0KKwl9CisKKwkvKiBEcm9wIGNvbW1hbmRzIGFyZSBub3QgcGFy dCBjb21tYW5kbGlzdCBidXQgaGFuZGxlZCBoZXJlIGFzIHBhcnQgb2YgU1FMRHJvcExpc3QgKi8K KwlzbGlzdF9mb3JlYWNoKGl0ZXIsICYoY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5TUUxEcm9w TGlzdCkpCisJeworCQlTUUxEcm9wT2JqZWN0ICpvYmo7CisJCUV2ZW50VHJpZ2dlckRhdGEgKnRy aWdkYXRhOworCisJCXRyaWdkYXRhID0gKEV2ZW50VHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250 ZXh0OworCisJCW9iaiA9IHNsaXN0X2NvbnRhaW5lcihTUUxEcm9wT2JqZWN0LCBuZXh0LCBpdGVy LmN1cik7CisKKwkJaWYgKCFvYmotPm9yaWdpbmFsKQorCQkJY29udGludWU7CisKKwkJaWYgKHN0 cmNtcChvYmotPm9iamVjdHR5cGUsICJ0YWJsZSIpID09IDApCisJCXsKKwkJCURlcGFyc2VkQ29t bWFuZFR5cGUgY21kdHlwZSA9IERDVF9UYWJsZURyb3BFbmQ7CisJCQljaGFyCSpjb21tYW5kOwor CisJCQljb21tYW5kID0gZGVwYXJzZV9kcm9wX3RhYmxlKG9iai0+b2JqaWRlbnRpdHksIG9iai0+ b2JqZWN0dHlwZSwKKwkJCQkJCQkJCSAgIHRyaWdkYXRhLT5wYXJzZXRyZWUpOworCQkJaWYgKGNv bW1hbmQpCisJCQkJTG9nTG9naWNhbERETE1lc3NhZ2UoImRlcGFyc2UiLCBvYmotPmFkZHJlc3Mu b2JqZWN0SWQsIGNtZHR5cGUsCisJCQkJCQkJCQkgY29tbWFuZCwgc3RybGVuKGNvbW1hbmQpICsg MSk7CisJCX0KKwl9CisKKwlyZXR1cm4gUG9pbnRlckdldERhdHVtKE5VTEwpOworfQorCisvKgor ICogcHVibGljYXRpb25fZGVwYXJzZV90YWJsZV9pbml0X3dyaXRlCisgKgorICogRGVwYXJzZSB0 aGUgZGRsIHRhYmxlIGNyZWF0ZSBjb21tYW5kIGFuZCBsb2cgaXQuCisgKi8KK0RhdHVtCitwdWJs aWNhdGlvbl9kZXBhcnNlX3RhYmxlX2luaXRfd3JpdGUoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlj aGFyCQlyZWxwZXJzaXN0OworCUNvbGxlY3RlZENvbW1hbmQgKmNtZDsKKwlkZGxfZGVwYXJzZV9j b250ZXh0IGNvbnRleHQ7CisKKwlpZiAoIUNBTExFRF9BU19FVkVOVF9UUklHR0VSKGZjaW5mbykp CisJCWVsb2coRVJST1IsICJub3QgZmlyZWQgYnkgZXZlbnQgdHJpZ2dlciBtYW5hZ2VyIik7CisK KwljbWQgPSBjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1cnJlbnRDb21tYW5kOworCUFzc2Vy dChjbWQpOworCisJcmVscGVyc2lzdCA9IGdldF9yZWxfcGVyc2lzdGVuY2UoY21kLT5kLnNpbXBs ZS5hZGRyZXNzLm9iamVjdElkKTsKKworCS8qCisJICogRG8gbm90IGdlbmVyYXRlIHdhbCBsb2cg Zm9yIGNvbW1hbmRzIHdob3NlIHRhcmdldCB0YWJsZSBpcyBhIHRlbXBvcmFyeQorCSAqIHRhYmxl LgorCSAqCisJICogV2Ugd2lsbCBnZW5lcmF0ZSB3YWwgbG9ncyBmb3IgdW5sb2dnZWQgdGFibGVz IHNvIHRoYXQgdW5sb2dnZWQgdGFibGVzCisJICogY2FuIGFsc28gYmUgY3JlYXRlZCBhbmQgYWx0 ZXJlZCBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBUaGlzIG1ha2VzIGl0CisJICogcG9zc2libGUg dG8gZGlyZWN0bHkgcmVwbGF5IHRoZSBTRVQgTE9HR0VEIGNvbW1hbmQgYW5kIHRoZSBpbmNvbWlu ZworCSAqIHJld3JpdGUgbWVzc2FnZSB3aXRob3V0IGNyZWF0aW5nIGEgbmV3IHRhYmxlLgorCSAq LworCWlmIChyZWxwZXJzaXN0ID09IFJFTFBFUlNJU1RFTkNFX1BFUk1BTkVOVCkKKwl7CisJCWNo YXIJICAgKmpzb25fc3RyaW5nOworCisJCS8qCisJCSAqIEluaXRpYWxpemUgdGhlIG1heF92b2xh dGlsaXR5IGZsYWcgdG8gUFJPVk9MQVRJTEVfSU1NVVRBQkxFLCB3aGljaCBpcworCQkgKiB0aGUg bWluaW11bSB2b2xhdGlsaXR5IGxldmVsLgorCQkgKi8KKwkJY29udGV4dC5tYXhfdm9sYXRpbGl0 eSA9IFBST1ZPTEFUSUxFX0lNTVVUQUJMRTsKKworCQkvKiBEZXBhcnNlIHRoZSBEREwgY29tbWFu ZCBhbmQgV0FMIGxvZyBpdCB0byBhbGxvdyBkZWNvZGluZyBvZiB0aGUgc2FtZS4gKi8KKwkJanNv bl9zdHJpbmcgPSBkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChjbWQsICZjb250ZXh0KTsKKworCQlp ZiAoanNvbl9zdHJpbmcgIT0gTlVMTCkKKwkJeworCQkJY2hlY2tfY29tbWFuZF9wdWJsaXNoYWJs ZShjb250ZXh0LCBmYWxzZSk7CisJCQlMb2dMb2dpY2FsRERMTWVzc2FnZSgiZGVwYXJzZSIsIGNt ZC0+ZC5zaW1wbGUuYWRkcmVzcy5vYmplY3RJZCwgRENUX1NpbXBsZUNtZCwKKwkJCQkJCQkJIGpz b25fc3RyaW5nLCBzdHJsZW4oanNvbl9zdHJpbmcpICsgMSk7CisJCX0KKwl9CisKKwlyZXR1cm4g UG9pbnRlckdldERhdHVtKE5VTEwpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9kZWNvZGUuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv ZGVjb2RlLmMKaW5kZXggZDkxMDU1YTQ0MC4uYjIyYmJjZDE1YSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiYWNj ZXNzL3hsb2d1dGlscy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29udHJvbC5oIgogI2luY2x1 ZGUgInJlcGxpY2F0aW9uL2RlY29kZS5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2RkbG1lc3Nh Z2UuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsLmgiCiAjaW5jbHVkZSAicmVwbGlj YXRpb24vbWVzc2FnZS5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5oIgpAQCAtNjQx LDYgKzY0Miw0NiBAQCBsb2dpY2FsbXNnX2RlY29kZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpj dHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZikKIAkJCQkJCQkgIG1lc3NhZ2UtPm1lc3NhZ2UgKyBt ZXNzYWdlLT5wcmVmaXhfc2l6ZSk7CiB9CiAKKy8qCisgKiBIYW5kbGUgcm1nciBMT0dJQ0FMRERM TVNHX0lEIHJlY29yZHMgZm9yIERlY29kZVJlY29yZEludG9SZW9yZGVyQnVmZmVyKCkuCisgKi8K K3ZvaWQKK2xvZ2ljYWxkZGxfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExv Z1JlY29yZEJ1ZmZlciAqYnVmKQoreworCVNuYXBCdWlsZCAgKmJ1aWxkZXIgPSBjdHgtPnNuYXBz aG90X2J1aWxkZXI7CisJWExvZ1JlYWRlclN0YXRlICpyID0gYnVmLT5yZWNvcmQ7CisJVHJhbnNh Y3Rpb25JZCB4aWQgPSBYTG9nUmVjR2V0WGlkKHIpOworCXVpbnQ4CQlpbmZvID0gWExvZ1JlY0dl dEluZm8ocikgJiB+WExSX0lORk9fTUFTSzsKKwlSZXBPcmlnaW5JZCBvcmlnaW5faWQgPSBYTG9n UmVjR2V0T3JpZ2luKHIpOworCXhsX2xvZ2ljYWxfZGRsX21lc3NhZ2UgKm1lc3NhZ2U7CisKKwlp ZiAoaW5mbyAhPSBYTE9HX0xPR0lDQUxfRERMX01FU1NBR0UpCisJCWVsb2coRVJST1IsICJ1bmV4 cGVjdGVkIFJNX0xPR0lDQUxERExNU0dfSUQgcmVjb3JkIHR5cGU6ICV1IiwgaW5mbyk7CisKKwlS ZW9yZGVyQnVmZmVyUHJvY2Vzc1hpZChjdHgtPnJlb3JkZXIsIFhMb2dSZWNHZXRYaWQociksIGJ1 Zi0+b3JpZ3B0cik7CisKKwkvKgorCSAqIElmIHdlIGRvbid0IGhhdmUgc25hcHNob3Qgb3Igd2Ug YXJlIGp1c3QgZmFzdC1mb3J3YXJkaW5nLCB0aGVyZSBpcyBubworCSAqIHBvaW50IGluIGRlY29k aW5nIGRkbCBtZXNzYWdlcy4KKwkgKi8KKwlpZiAoU25hcEJ1aWxkQ3VycmVudFN0YXRlKGJ1aWxk ZXIpIDwgU05BUEJVSUxEX0ZVTExfU05BUFNIT1QgfHwKKwkJY3R4LT5mYXN0X2ZvcndhcmQpCisJ CXJldHVybjsKKworCW1lc3NhZ2UgPSAoeGxfbG9naWNhbF9kZGxfbWVzc2FnZSAqKSBYTG9nUmVj R2V0RGF0YShyKTsKKworCWlmIChtZXNzYWdlLT5kYklkICE9IGN0eC0+c2xvdC0+ZGF0YS5kYXRh YmFzZSB8fAorCQlGaWx0ZXJCeU9yaWdpbihjdHgsIG9yaWdpbl9pZCkpCisJCXJldHVybjsKKwor CWlmIChTbmFwQnVpbGRQcm9jZXNzQ2hhbmdlKGJ1aWxkZXIsIHhpZCwgYnVmLT5vcmlncHRyKSkK KwkJUmVvcmRlckJ1ZmZlclF1ZXVlRERMTWVzc2FnZShjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5l bmRwdHIsCisJCQkJCQkJCQkgbWVzc2FnZS0+bWVzc2FnZSwgLyogZmlyc3QgcGFydCBvZiBtZXNz YWdlIGlzIHByZWZpeCAqLworCQkJCQkJCQkJIG1lc3NhZ2UtPm1lc3NhZ2Vfc2l6ZSwKKwkJCQkJ CQkJCSBtZXNzYWdlLT5tZXNzYWdlICsgbWVzc2FnZS0+cHJlZml4X3NpemUsCisJCQkJCQkJCQkg bWVzc2FnZS0+cmVsaWQsIG1lc3NhZ2UtPmNtZHR5cGUpOworfQorCiAvKgogICogQ29uc29saWRh dGVkIGNvbW1pdCByZWNvcmQgaGFuZGxpbmcgYmV0d2VlbiB0aGUgZGlmZmVyZW50IGZvcm0gb2Yg Y29tbWl0CiAgKiByZWNvcmRzLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9sb2dpY2FsLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2lj YWwuYwppbmRleCA0MTI0M2QwMTg3Li4xZDk5ZmFjMTE2IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2xvZ2ljYWwuYwpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgImZtZ3Iu aCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRl ICJyZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vZGVjb2Rl LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgogI2luY2x1ZGUgInJlcGxpY2F0 aW9uL29yaWdpbi5oIgpAQCAtNzMsNiArNzQsMTAgQEAgc3RhdGljIHZvaWQgdHJ1bmNhdGVfY2Jf d3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogc3Rh dGljIHZvaWQgbWVzc2FnZV9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVy QnVmZmVyVFhOICp0eG4sCiAJCQkJCQkJICAgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwgYm9vbCB0 cmFuc2FjdGlvbmFsLAogCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnByZWZpeCwgU2l6ZSBtZXNzYWdl X3NpemUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworc3RhdGljIHZvaWQgZGRsX2NiX3dyYXBwZXIo UmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJICBY TG9nUmVjUHRyIG1lc3NhZ2VfbHNuLCBjb25zdCBjaGFyICpwcmVmaXgsCisJCQkJCQkJCSAgT2lk IHJlbGlkLCBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJCQkJCQkJCSAgU2l6ZSBtZXNz YWdlX3NpemUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogCiAvKiBzdHJlYW1pbmcgY2FsbGJhY2tz ICovCiBzdGF0aWMgdm9pZCBzdHJlYW1fc3RhcnRfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpj YWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLApAQCAtOTAsNiArOTUsMTEgQEAgc3RhdGljIHZv aWQgc3RyZWFtX2NoYW5nZV9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVy QnVmZmVyVFhOICp0eG4KIHN0YXRpYyB2b2lkIHN0cmVhbV9tZXNzYWdlX2NiX3dyYXBwZXIoUmVv cmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkJCQkJCSAgWExv Z1JlY1B0ciBtZXNzYWdlX2xzbiwgYm9vbCB0cmFuc2FjdGlvbmFsLAogCQkJCQkJCQkJICBjb25z dCBjaGFyICpwcmVmaXgsIFNpemUgbWVzc2FnZV9zaXplLCBjb25zdCBjaGFyICptZXNzYWdlKTsK K3N0YXRpYyB2b2lkIHN0cmVhbV9kZGxfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwg UmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkJCQkJCSBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNu LAorCQkJCQkJCQkJCSBjb25zdCBjaGFyICpwcmVmaXgsCisJCQkJCQkJCQkJIE9pZCByZWxpZCwg RGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLAorCQkJCQkJCQkJCSBTaXplIG1lc3NhZ2Vfc2l6 ZSwgY29uc3QgY2hhciAqbWVzc2FnZSk7CiBzdGF0aWMgdm9pZCBzdHJlYW1fdHJ1bmNhdGVfY2Jf d3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJ CQkJCQkJICAgaW50IG5yZWxhdGlvbnMsIFJlbGF0aW9uIHJlbGF0aW9uc1tdLCBSZW9yZGVyQnVm ZmVyQ2hhbmdlICpjaGFuZ2UpOwogCkBAIC0yMjEsMTAgKzIzMSwxMSBAQCBTdGFydHVwRGVjb2Rp bmdDb250ZXh0KExpc3QgKm91dHB1dF9wbHVnaW5fb3B0aW9ucywKIAljdHgtPnJlb3JkZXItPmFw cGx5X3RydW5jYXRlID0gdHJ1bmNhdGVfY2Jfd3JhcHBlcjsKIAljdHgtPnJlb3JkZXItPmNvbW1p dCA9IGNvbW1pdF9jYl93cmFwcGVyOwogCWN0eC0+cmVvcmRlci0+bWVzc2FnZSA9IG1lc3NhZ2Vf Y2Jfd3JhcHBlcjsKKwljdHgtPnJlb3JkZXItPmRkbCA9IGRkbF9jYl93cmFwcGVyOwogCiAJLyoK IAkgKiBUbyBzdXBwb3J0IHN0cmVhbWluZywgd2UgcmVxdWlyZSBzdGFydC9zdG9wL2Fib3J0L2Nv bW1pdC9jaGFuZ2UKLQkgKiBjYWxsYmFja3MuIFRoZSBtZXNzYWdlIGFuZCB0cnVuY2F0ZSBjYWxs YmFja3MgYXJlIG9wdGlvbmFsLCBzaW1pbGFyIHRvCisJICogY2FsbGJhY2tzLiBUaGUgbWVzc2Fn ZSwgZGRsIGFuZCB0cnVuY2F0ZSBjYWxsYmFja3MgYXJlIG9wdGlvbmFsLCBzaW1pbGFyIHRvCiAJ ICogcmVndWxhciBvdXRwdXQgcGx1Z2lucy4gV2UgaG93ZXZlciBlbmFibGUgc3RyZWFtaW5nIHdo ZW4gYXQgbGVhc3Qgb25lCiAJICogb2YgdGhlIG1ldGhvZHMgaXMgZW5hYmxlZCBzbyB0aGF0IHdl IGNhbiBlYXNpbHkgaWRlbnRpZnkgbWlzc2luZwogCSAqIG1ldGhvZHMuCkBAIC0yMzcsMTIgKzI0 OCwxMyBAQCBTdGFydHVwRGVjb2RpbmdDb250ZXh0KExpc3QgKm91dHB1dF9wbHVnaW5fb3B0aW9u cywKIAkJKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9jb21taXRfY2IgIT0gTlVMTCkgfHwKIAkJKGN0 eC0+Y2FsbGJhY2tzLnN0cmVhbV9jaGFuZ2VfY2IgIT0gTlVMTCkgfHwKIAkJKGN0eC0+Y2FsbGJh Y2tzLnN0cmVhbV9tZXNzYWdlX2NiICE9IE5VTEwpIHx8CisJCShjdHgtPmNhbGxiYWNrcy5zdHJl YW1fZGRsX2NiICE9IE5VTEwpIHx8CiAJCShjdHgtPmNhbGxiYWNrcy5zdHJlYW1fdHJ1bmNhdGVf Y2IgIT0gTlVMTCk7CiAKIAkvKgogCSAqIHN0cmVhbWluZyBjYWxsYmFja3MKIAkgKgotCSAqIHN0 cmVhbV9tZXNzYWdlIGFuZCBzdHJlYW1fdHJ1bmNhdGUgY2FsbGJhY2tzIGFyZSBvcHRpb25hbCwg c28gd2UgZG8gbm90CisJICogc3RyZWFtX21lc3NhZ2UsIHN0cmVhbV9kZGwgYW5kIHN0cmVhbV90 cnVuY2F0ZSBjYWxsYmFja3MgYXJlIG9wdGlvbmFsLCBzbyB3ZSBkbyBub3QKIAkgKiBmYWlsIHdp dGggRVJST1Igd2hlbiBtaXNzaW5nLCBidXQgdGhlIHdyYXBwZXJzIHNpbXBseSBkbyBub3RoaW5n LiBXZQogCSAqIG11c3Qgc2V0IHRoZSBSZW9yZGVyQnVmZmVyIGNhbGxiYWNrcyB0byBzb21ldGhp bmcsIG90aGVyd2lzZSB0aGUgY2FsbHMKIAkgKiBmcm9tIHRoZXJlIHdpbGwgY3Jhc2ggKHdlIGRv bid0IHdhbnQgdG8gbW92ZSB0aGUgY2hlY2tzIHRoZXJlKS4KQEAgLTI1NCw2ICsyNjYsNyBAQCBT dGFydHVwRGVjb2RpbmdDb250ZXh0KExpc3QgKm91dHB1dF9wbHVnaW5fb3B0aW9ucywKIAljdHgt PnJlb3JkZXItPnN0cmVhbV9jb21taXQgPSBzdHJlYW1fY29tbWl0X2NiX3dyYXBwZXI7CiAJY3R4 LT5yZW9yZGVyLT5zdHJlYW1fY2hhbmdlID0gc3RyZWFtX2NoYW5nZV9jYl93cmFwcGVyOwogCWN0 eC0+cmVvcmRlci0+c3RyZWFtX21lc3NhZ2UgPSBzdHJlYW1fbWVzc2FnZV9jYl93cmFwcGVyOwor CWN0eC0+cmVvcmRlci0+c3RyZWFtX2RkbCA9IHN0cmVhbV9kZGxfY2Jfd3JhcHBlcjsKIAljdHgt PnJlb3JkZXItPnN0cmVhbV90cnVuY2F0ZSA9IHN0cmVhbV90cnVuY2F0ZV9jYl93cmFwcGVyOwog CiAKQEAgLTEyNjAsNiArMTI3Myw0NCBAQCBtZXNzYWdlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZl ciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAllcnJvcl9jb250ZXh0X3N0YWNrID0g ZXJyY2FsbGJhY2sucHJldmlvdXM7CiB9CiAKK3N0YXRpYyB2b2lkCitkZGxfY2Jfd3JhcHBlcihS ZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkgIFhMb2dS ZWNQdHIgbWVzc2FnZV9sc24sCisJCQkJCSAgY29uc3QgY2hhciAqcHJlZml4LCBPaWQgcmVsaWQs IERlcGFyc2VkQ29tbWFuZFR5cGUgY21kdHlwZSwKKwkJCQkJICBTaXplIG1lc3NhZ2Vfc2l6ZSwK KwkJCQkJICBjb25zdCBjaGFyICptZXNzYWdlKQoreworCUxvZ2ljYWxEZWNvZGluZ0NvbnRleHQg KmN0eCA9IGNhY2hlLT5wcml2YXRlX2RhdGE7CisJTG9naWNhbEVycm9yQ2FsbGJhY2tTdGF0ZSBz dGF0ZTsKKwlFcnJvckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFjazsKKworCUFzc2VydCghY3R4 LT5mYXN0X2ZvcndhcmQpOworCisJaWYgKGN0eC0+Y2FsbGJhY2tzLmRkbF9jYiA9PSBOVUxMKQor CQlyZXR1cm47CisKKwkvKiBQdXNoIGNhbGxiYWNrICsgaW5mbyBvbiB0aGUgZXJyb3IgY29udGV4 dCBzdGFjayAqLworCXN0YXRlLmN0eCA9IGN0eDsKKwlzdGF0ZS5jYWxsYmFja19uYW1lID0gImRk bCI7CisJc3RhdGUucmVwb3J0X2xvY2F0aW9uID0gbWVzc2FnZV9sc247CisJZXJyY2FsbGJhY2su Y2FsbGJhY2sgPSBvdXRwdXRfcGx1Z2luX2Vycm9yX2NhbGxiYWNrOworCWVycmNhbGxiYWNrLmFy ZyA9ICh2b2lkICopICZzdGF0ZTsKKwllcnJjYWxsYmFjay5wcmV2aW91cyA9IGVycm9yX2NvbnRl eHRfc3RhY2s7CisJZXJyb3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxsYmFjazsKKworCS8qIHNl dCBvdXRwdXQgc3RhdGUgKi8KKwljdHgtPmFjY2VwdF93cml0ZXMgPSB0cnVlOworCWN0eC0+d3Jp dGVfeGlkID0gdHhuLT54aWQ7CisJY3R4LT53cml0ZV9sb2NhdGlvbiA9IG1lc3NhZ2VfbHNuOwor CisJLyogZG8gdGhlIGFjdHVhbCB3b3JrOiBjYWxsIGNhbGxiYWNrICovCisJY3R4LT5jYWxsYmFj a3MuZGRsX2NiKGN0eCwgdHhuLCBtZXNzYWdlX2xzbiwgcHJlZml4LCByZWxpZCwgY21kdHlwZSwK KwkJCQkJCQkJIG1lc3NhZ2Vfc2l6ZSwgbWVzc2FnZSk7CisKKwkvKiBQb3AgdGhlIGVycm9yIGNv bnRleHQgc3RhY2sgKi8KKwllcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyY2FsbGJhY2sucHJldmlv dXM7Cit9CisKIHN0YXRpYyB2b2lkCiBzdHJlYW1fc3RhcnRfY2Jfd3JhcHBlcihSZW9yZGVyQnVm ZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCQkJWExvZ1JlY1B0ciBmaXJz dF9sc24pCkBAIC0xNTc1LDYgKzE2MjYsNDggQEAgc3RyZWFtX21lc3NhZ2VfY2Jfd3JhcHBlcihS ZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCWVycm9yX2NvbnRl eHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKIH0KIAorc3RhdGljIHZvaWQKK3N0cmVh bV9kZGxfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAq dHhuLAorCQkJCQkJCSBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLAorCQkJCQkJCSBjb25zdCBjaGFy ICpwcmVmaXgsIE9pZCByZWxpZCwgRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLAorCQkJCQkJ CSBTaXplIG1lc3NhZ2Vfc2l6ZSwKKwkJCQkJCQkgY29uc3QgY2hhciAqbWVzc2FnZSkKK3sKKwlM b2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHggPSBjYWNoZS0+cHJpdmF0ZV9kYXRhOworCUxvZ2lj YWxFcnJvckNhbGxiYWNrU3RhdGUgc3RhdGU7CisJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2Fs bGJhY2s7CisKKwlBc3NlcnQoIWN0eC0+ZmFzdF9mb3J3YXJkKTsKKworCS8qIFdlJ3JlIG9ubHkg c3VwcG9zZWQgdG8gY2FsbCB0aGlzIHdoZW4gc3RyZWFtaW5nIGlzIHN1cHBvcnRlZC4gKi8KKwlB c3NlcnQoY3R4LT5zdHJlYW1pbmcpOworCisJLyogdGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbCAq LworCWlmIChjdHgtPmNhbGxiYWNrcy5zdHJlYW1fZGRsX2NiID09IE5VTEwpCisJCXJldHVybjsK KworCS8qIFB1c2ggY2FsbGJhY2sgKyBpbmZvIG9uIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrICov CisJc3RhdGUuY3R4ID0gY3R4OworCXN0YXRlLmNhbGxiYWNrX25hbWUgPSAic3RyZWFtX2RkbCI7 CisJc3RhdGUucmVwb3J0X2xvY2F0aW9uID0gbWVzc2FnZV9sc247CisJZXJyY2FsbGJhY2suY2Fs bGJhY2sgPSBvdXRwdXRfcGx1Z2luX2Vycm9yX2NhbGxiYWNrOworCWVycmNhbGxiYWNrLmFyZyA9 ICh2b2lkICopICZzdGF0ZTsKKwllcnJjYWxsYmFjay5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRf c3RhY2s7CisJZXJyb3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxsYmFjazsKKworCS8qIHNldCBv dXRwdXQgc3RhdGUgKi8KKwljdHgtPmFjY2VwdF93cml0ZXMgPSB0cnVlOworCWN0eC0+d3JpdGVf eGlkID0gdHhuLT54aWQ7CisJY3R4LT53cml0ZV9sb2NhdGlvbiA9IG1lc3NhZ2VfbHNuOworCisJ LyogZG8gdGhlIGFjdHVhbCB3b3JrOiBjYWxsIGNhbGxiYWNrICovCisJY3R4LT5jYWxsYmFja3Mu c3RyZWFtX2RkbF9jYihjdHgsIHR4biwgbWVzc2FnZV9sc24sIHByZWZpeCwgcmVsaWQsCisJCQkJ CQkJCQkJY21kdHlwZSwgbWVzc2FnZV9zaXplLCBtZXNzYWdlKTsKKworCS8qIFBvcCB0aGUgZXJy b3IgY29udGV4dCBzdGFjayAqLworCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5w cmV2aW91czsKK30KKwogc3RhdGljIHZvaWQKIHN0cmVhbV90cnVuY2F0ZV9jYl93cmFwcGVyKFJl b3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJCQkgICBpbnQg bnJlbGF0aW9ucywgUmVsYXRpb24gcmVsYXRpb25zW10sCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYwppbmRleCA1NWEyNGMwMmM5Li5iZWNlY2MzZjkz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5j cy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMK QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRl ICJyZXBsaWNhdGlvbi9kZWNvZGUuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsLmgi CisjaW5jbHVkZSAicmVwbGljYXRpb24vZGRsbWVzc2FnZS5oIgogI2luY2x1ZGUgInJlcGxpY2F0 aW9uL21lc3NhZ2UuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAidXRpbHMv YXJyYXkuaCIKQEAgLTM3NSwzICszNzYsMjYgQEAgcGdfbG9naWNhbF9lbWl0X21lc3NhZ2VfdGV4 dChQR19GVU5DVElPTl9BUkdTKQogCS8qIGJ5dGVhIGFuZCB0ZXh0IGFyZSBjb21wYXRpYmxlICov CiAJcmV0dXJuIHBnX2xvZ2ljYWxfZW1pdF9tZXNzYWdlX2J5dGVhKGZjaW5mbyk7CiB9CisKKy8q CisgKiBTUUwgZnVuY3Rpb24gZm9yIHdyaXRpbmcgbG9naWNhbCBkZWNvZGluZyBEREwgbWVzc2Fn ZSBpbnRvIFdBTC4KKyAqLworRGF0dW0KK3BnX2xvZ2ljYWxfZW1pdF9kZGxfbWVzc2FnZV9ieXRl YShQR19GVU5DVElPTl9BUkdTKQoreworCWNoYXIJICAgKnByZWZpeCA9IHRleHRfdG9fY3N0cmlu ZyhQR19HRVRBUkdfVEVYVF9QUCgwKSk7CisJT2lkCQkJcmVsaWQgPSBQR19HRVRBUkdfT0lEKDEp OworCURlcGFyc2VkQ29tbWFuZFR5cGUgY21kdHlwZSA9IFBHX0dFVEFSR19JTlQxNigyKTsKKwlj aGFyCSAgICpkYXRhID0gdGV4dF90b19jc3RyaW5nKFBHX0dFVEFSR19URVhUX1BQKDMpKTsKKwlY TG9nUmVjUHRyCWxzbjsKKworCWxzbiA9IExvZ0xvZ2ljYWxERExNZXNzYWdlKHByZWZpeCwgcmVs aWQsIGNtZHR5cGUsIGRhdGEsIHN0cmxlbihkYXRhKSk7CisJUEdfUkVUVVJOX0xTTihsc24pOwor fQorCitEYXR1bQorcGdfbG9naWNhbF9lbWl0X2RkbF9tZXNzYWdlX3RleHQoUEdfRlVOQ1RJT05f QVJHUykKK3sKKwkvKiBieXRlYSBhbmQgdGV4dCBhcmUgY29tcGF0aWJsZSAqLworCXJldHVybiBw Z19sb2dpY2FsX2VtaXRfZGRsX21lc3NhZ2VfYnl0ZWEoZmNpbmZvKTsKK30KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkCmluZGV4IGQ0OGNkNGM1OTAuLjA1ZTc3 NTY5N2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbWVzb24u YnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZApA QCAtMiw2ICsyLDggQEAKIAogYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAogICAnYXBwbHlwYXJh bGxlbHdvcmtlci5jJywKKyAgJ2RkbG1lc3NhZ2UuYycsCisgICdkZGx0cmlnZ2VyLmMnLAogICAn ZGVjb2RlLmMnLAogICAnbGF1bmNoZXIuYycsCiAgICdsb2dpY2FsLmMnLApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9wcm90by5jCmluZGV4IGYzMDg3MTMyNzUuLjdlYzNiNzE2NjIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKQEAgLTY2Myw2ICs2NjMsNDcg QEAgbG9naWNhbHJlcF93cml0ZV9tZXNzYWdlKFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklk IHhpZCwgWExvZ1JlY1B0ciBsc24sCiAJcHFfc2VuZGJ5dGVzKG91dCwgbWVzc2FnZSwgc3opOwog fQogCisvKgorICogUmVhZCBEREwgZnJvbSBzdHJlYW0KKyAqLworY2hhciAqCitsb2dpY2FscmVw X3JlYWRfZGRsKFN0cmluZ0luZm8gaW4sIFhMb2dSZWNQdHIgKmxzbiwKKwkJCQkJCSAgIGNvbnN0 IGNoYXIgKipwcmVmaXgsCisJCQkJCQkgICBTaXplICpzeikKK3sKKwl1aW50OCBmbGFnczsKKwlj aGFyICptc2c7CisKKwlmbGFncyA9IHBxX2dldG1zZ2ludChpbiwgMSk7CisJaWYgKGZsYWdzICE9 IDApCisJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgZmxhZ3MgJXUgaW4gZGRsIG1lc3NhZ2Ui LCBmbGFncyk7CisKKwkqbHNuID0gcHFfZ2V0bXNnaW50NjQoaW4pOworCSpwcmVmaXggPSBwcV9n ZXRtc2dzdHJpbmcoaW4pOworCSpzeiA9IHBxX2dldG1zZ2ludChpbiwgNCk7CisJbXNnID0gKGNo YXIgKikgcHFfZ2V0bXNnYnl0ZXMoaW4sICpzeik7CisKKwlyZXR1cm4gbXNnOworfQorCisvKgor ICogV3JpdGUgRERMIHRvIHN0cmVhbQorICovCit2b2lkCitsb2dpY2FscmVwX3dyaXRlX2RkbChT dHJpbmdJbmZvIG91dCwgWExvZ1JlY1B0ciBsc24sCisJCQkJCQkJY29uc3QgY2hhciAqcHJlZml4 LCBTaXplIHN6LCBjb25zdCBjaGFyICptZXNzYWdlKQoreworCXVpbnQ4CQlmbGFncyA9IDA7CisK KwlwcV9zZW5kYnl0ZShvdXQsIExPR0lDQUxfUkVQX01TR19EREwpOworCisJcHFfc2VuZGludDgo b3V0LCBmbGFncyk7CisJcHFfc2VuZGludDY0KG91dCwgbHNuKTsKKwlwcV9zZW5kc3RyaW5nKG91 dCwgcHJlZml4KTsKKwlwcV9zZW5kaW50MzIob3V0LCBzeik7CisJcHFfc2VuZGJ5dGVzKG91dCwg bWVzc2FnZSwgc3opOworfQorCiAvKgogICogV3JpdGUgcmVsYXRpb24gZGVzY3JpcHRpb24gdG8g dGhlIG91dHB1dCBzdHJlYW0uCiAgKi8KQEAgLTEyMzgsNiArMTI3OSw4IEBAIGxvZ2ljYWxyZXBf bWVzc2FnZV90eXBlKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbikKIAkJCXJldHVybiAiVFlQRSI7 CiAJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX01FU1NBR0U6CiAJCQlyZXR1cm4gIk1FU1NBR0UiOwor CQljYXNlIExPR0lDQUxfUkVQX01TR19EREw6CisJCQlyZXR1cm4gIkRETCI7CiAJCWNhc2UgTE9H SUNBTF9SRVBfTVNHX0JFR0lOX1BSRVBBUkU6CiAJCQlyZXR1cm4gIkJFR0lOIFBSRVBBUkUiOwog CQljYXNlIExPR0lDQUxfUkVQX01TR19QUkVQQVJFOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwppbmRleCAyNmQyNTJiZDg3Li5kMjEwNDJlNzI1 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZm ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIu YwpAQCAtOTQsNiArOTQsNyBAQAogI2luY2x1ZGUgImxpYi9iaW5hcnloZWFwLmgiCiAjaW5jbHVk ZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicmVwbGljYXRp b24vZGRsbWVzc2FnZS5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWwuaCIKICNpbmNs dWRlICJyZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24v c2xvdC5oIgpAQCAtNTE2LDYgKzUxNywxNCBAQCBSZW9yZGVyQnVmZmVyUmV0dXJuQ2hhbmdlKFJl b3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyQ2hhbmdlICpjaGFuZ2UsCiAJCQkJcGZyZWUo Y2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlKTsKIAkJCWNoYW5nZS0+ZGF0YS5tc2cubWVzc2FnZSA9 IE5VTEw7CiAJCQlicmVhazsKKwkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfRERMOgorCQkJ aWYgKGNoYW5nZS0+ZGF0YS5kZGwucHJlZml4ICE9IE5VTEwpCisJCQkJcGZyZWUoY2hhbmdlLT5k YXRhLmRkbC5wcmVmaXgpOworCQkJY2hhbmdlLT5kYXRhLmRkbC5wcmVmaXggPSBOVUxMOworCQkJ aWYgKGNoYW5nZS0+ZGF0YS5kZGwubWVzc2FnZSAhPSBOVUxMKQorCQkJCXBmcmVlKGNoYW5nZS0+ ZGF0YS5kZGwubWVzc2FnZSk7CisJCQljaGFuZ2UtPmRhdGEuZGRsLm1lc3NhZ2UgPSBOVUxMOwor CQkJYnJlYWs7CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0lOVkFMSURBVElPTjoKIAkJ CWlmIChjaGFuZ2UtPmRhdGEuaW52YWwuaW52YWxpZGF0aW9ucykKIAkJCQlwZnJlZShjaGFuZ2Ut PmRhdGEuaW52YWwuaW52YWxpZGF0aW9ucyk7CkBAIC04OTUsNiArOTA0LDM2IEBAIFJlb3JkZXJC dWZmZXJRdWV1ZU1lc3NhZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAog CX0KIH0KIAorLyoKKyAqIEEgdHJhbnNhY3Rpb25hbCBEREwgbWVzc2FnZSBpcyBxdWV1ZWQgdG8g YmUgcHJvY2Vzc2VkIHVwb24gY29tbWl0LgorICovCit2b2lkCitSZW9yZGVyQnVmZmVyUXVldWVE RExNZXNzYWdlKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKKwkJCQkJCQkg WExvZ1JlY1B0ciBsc24sIGNvbnN0IGNoYXIgKnByZWZpeCwKKwkJCQkJCQkgU2l6ZSBtZXNzYWdl X3NpemUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsCisJCQkJCQkJIE9pZCByZWxpZCwgRGVwYXJzZWRD b21tYW5kVHlwZSBjbWR0eXBlKQoreworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwlSZW9y ZGVyQnVmZmVyQ2hhbmdlICpjaGFuZ2U7CisKKwlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQo eGlkKSk7CisKKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHJiLT5jb250ZXh0 KTsKKworCWNoYW5nZSA9IFJlb3JkZXJCdWZmZXJHZXRDaGFuZ2UocmIpOworCWNoYW5nZS0+YWN0 aW9uID0gUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0RETDsKKwljaGFuZ2UtPmRhdGEuZGRsLnByZWZp eCA9IHBzdHJkdXAocHJlZml4KTsKKwljaGFuZ2UtPmRhdGEuZGRsLnJlbGlkID0gcmVsaWQ7CisJ Y2hhbmdlLT5kYXRhLmRkbC5jbWR0eXBlID0gY21kdHlwZTsKKwljaGFuZ2UtPmRhdGEuZGRsLm1l c3NhZ2Vfc2l6ZSA9IG1lc3NhZ2Vfc2l6ZTsKKwljaGFuZ2UtPmRhdGEuZGRsLm1lc3NhZ2UgPSBw YWxsb2MobWVzc2FnZV9zaXplKTsKKwltZW1jcHkoY2hhbmdlLT5kYXRhLmRkbC5tZXNzYWdlLCBt ZXNzYWdlLCBtZXNzYWdlX3NpemUpOworCisJUmVvcmRlckJ1ZmZlclF1ZXVlQ2hhbmdlKHJiLCB4 aWQsIGxzbiwgY2hhbmdlLCBmYWxzZSk7CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29u dGV4dCk7Cit9CisKIC8qCiAgKiBBc3NlcnRUWE5Mc25PcmRlcgogICoJCVZlcmlmeSBMU04gb3Jk ZXJpbmcgb2YgdHJhbnNhY3Rpb24gbGlzdHMgaW4gdGhlIHJlb3JkZXJidWZmZXIKQEAgLTE5OTcs NiArMjAzNiwyOSBAQCBSZW9yZGVyQnVmZmVyQXBwbHlNZXNzYWdlKFJlb3JkZXJCdWZmZXIgKnJi LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJCWNoYW5nZS0+ZGF0YS5tc2cubWVzc2FnZSk7 CiB9CiAKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIFJlb3JkZXJCdWZmZXJQcm9jZXNzVFhO IGZvciBhcHBseWluZyB0aGUgRERMIG1lc3NhZ2UuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAor UmVvcmRlckJ1ZmZlckFwcGx5RERMTWVzc2FnZShSZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1 ZmZlclRYTiAqdHhuLAorCQkJCQkJCSBSZW9yZGVyQnVmZmVyQ2hhbmdlICpjaGFuZ2UsIGJvb2wg c3RyZWFtaW5nKQoreworCWlmIChzdHJlYW1pbmcpCisJCXJiLT5zdHJlYW1fZGRsKHJiLCB0eG4s IGNoYW5nZS0+bHNuLAorCQkJCQkJCSAgY2hhbmdlLT5kYXRhLmRkbC5wcmVmaXgsCisJCQkJCQkJ ICBjaGFuZ2UtPmRhdGEuZGRsLnJlbGlkLAorCQkJCQkJCSAgY2hhbmdlLT5kYXRhLmRkbC5jbWR0 eXBlLAorCQkJCQkJCSAgY2hhbmdlLT5kYXRhLmRkbC5tZXNzYWdlX3NpemUsCisJCQkJCQkJICBj aGFuZ2UtPmRhdGEuZGRsLm1lc3NhZ2UpOworCWVsc2UKKwkJcmItPmRkbChyYiwgdHhuLCBjaGFu Z2UtPmxzbiwKKwkJCQkJICAgY2hhbmdlLT5kYXRhLmRkbC5wcmVmaXgsCisJCQkJCSAgIGNoYW5n ZS0+ZGF0YS5kZGwucmVsaWQsCisJCQkJCSAgIGNoYW5nZS0+ZGF0YS5kZGwuY21kdHlwZSwKKwkJ CQkJICAgY2hhbmdlLT5kYXRhLmRkbC5tZXNzYWdlX3NpemUsCisJCQkJCSAgIGNoYW5nZS0+ZGF0 YS5kZGwubWVzc2FnZSk7Cit9CisKIC8qCiAgKiBGdW5jdGlvbiB0byBzdG9yZSB0aGUgY29tbWFu ZCBpZCBhbmQgc25hcHNob3QgYXQgdGhlIGVuZCBvZiB0aGUgY3VycmVudAogICogc3RyZWFtIHNv IHRoYXQgd2UgY2FuIHJldXNlIHRoZSBzYW1lIHdoaWxlIHNlbmRpbmcgdGhlIG5leHQgc3RyZWFt LgpAQCAtMjM3OSw2ICsyNDQxLDEwIEBAIFJlb3JkZXJCdWZmZXJQcm9jZXNzVFhOKFJlb3JkZXJC dWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJCVJlb3JkZXJCdWZmZXJBcHBs eU1lc3NhZ2UocmIsIHR4biwgY2hhbmdlLCBzdHJlYW1pbmcpOwogCQkJCQlicmVhazsKIAorCQkJ CWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0RETDoKKwkJCQkJUmVvcmRlckJ1ZmZlckFwcGx5 RERMTWVzc2FnZShyYiwgdHhuLCBjaGFuZ2UsIHN0cmVhbWluZyk7CisJCQkJCWJyZWFrOworCiAJ CQkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5WQUxJREFUSU9OOgogCQkJCQkvKiBFeGVj dXRlIHRoZSBpbnZhbGlkYXRpb24gbWVzc2FnZXMgbG9jYWxseSAqLwogCQkJCQlSZW9yZGVyQnVm ZmVyRXhlY3V0ZUludmFsaWRhdGlvbnMoY2hhbmdlLT5kYXRhLmludmFsLm5pbnZhbGlkYXRpb25z LApAQCAtMzgzNSw2ICszOTAxLDM5IEBAIFJlb3JkZXJCdWZmZXJTZXJpYWxpemVDaGFuZ2UoUmVv cmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkJICAgY2hhbmdlLT5k YXRhLm1zZy5tZXNzYWdlX3NpemUpOwogCQkJCWRhdGEgKz0gY2hhbmdlLT5kYXRhLm1zZy5tZXNz YWdlX3NpemU7CiAKKwkJCQlicmVhazsKKwkJCX0KKwkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFO R0VfRERMOgorCQkJeworCQkJCWNoYXIJICAgKmRhdGE7CisJCQkJU2l6ZQkJcHJlZml4X3NpemUg PSBzdHJsZW4oY2hhbmdlLT5kYXRhLmRkbC5wcmVmaXgpICsgMTsKKworCQkJCXN6ICs9IHByZWZp eF9zaXplICsgY2hhbmdlLT5kYXRhLmRkbC5tZXNzYWdlX3NpemUgKworCQkJCQlzaXplb2YoU2l6 ZSkgKyBzaXplb2YoT2lkKSArIHNpemVvZihEZXBhcnNlZENvbW1hbmRUeXBlKSArIHNpemVvZihT aXplKTsKKwkJCQlSZW9yZGVyQnVmZmVyU2VyaWFsaXplUmVzZXJ2ZShyYiwgc3opOworCisJCQkJ ZGF0YSA9ICgoY2hhciAqKSByYi0+b3V0YnVmKSArIHNpemVvZihSZW9yZGVyQnVmZmVyRGlza0No YW5nZSk7CisKKwkJCQkvKiBtaWdodCBoYXZlIGJlZW4gcmVhbGxvY2F0ZWQgYWJvdmUgKi8KKwkJ CQlvbmRpc2sgPSAoUmVvcmRlckJ1ZmZlckRpc2tDaGFuZ2UgKikgcmItPm91dGJ1ZjsKKworCQkJ CS8qIHdyaXRlIHRoZSBwcmVmaXgsIHJlbGlkIGFuZCBjbWR0eXBlIGluY2x1ZGluZyB0aGUgc2l6 ZSAqLworCQkJCW1lbWNweShkYXRhLCAmcHJlZml4X3NpemUsIHNpemVvZihTaXplKSk7CisJCQkJ ZGF0YSArPSBzaXplb2YoU2l6ZSk7CisJCQkJbWVtY3B5KGRhdGEsICZjaGFuZ2UtPmRhdGEuZGRs LnJlbGlkLCBzaXplb2YoT2lkKSk7CisJCQkJZGF0YSArPSBzaXplb2YoT2lkKTsKKwkJCQltZW1j cHkoZGF0YSwgJmNoYW5nZS0+ZGF0YS5kZGwuY21kdHlwZSwgc2l6ZW9mKERlcGFyc2VkQ29tbWFu ZFR5cGUpKTsKKwkJCQlkYXRhICs9IHNpemVvZihEZXBhcnNlZENvbW1hbmRUeXBlKTsKKwkJCQlt ZW1jcHkoZGF0YSwgY2hhbmdlLT5kYXRhLmRkbC5wcmVmaXgsIHByZWZpeF9zaXplKTsKKwkJCQlk YXRhICs9IHByZWZpeF9zaXplOworCisJCQkJLyogd3JpdGUgdGhlIG1lc3NhZ2UgaW5jbHVkaW5n IHRoZSBzaXplICovCisJCQkJbWVtY3B5KGRhdGEsICZjaGFuZ2UtPmRhdGEuZGRsLm1lc3NhZ2Vf c2l6ZSwgc2l6ZW9mKFNpemUpKTsKKwkJCQlkYXRhICs9IHNpemVvZihTaXplKTsKKwkJCQltZW1j cHkoZGF0YSwgY2hhbmdlLT5kYXRhLmRkbC5tZXNzYWdlLAorCQkJCQkgICBjaGFuZ2UtPmRhdGEu ZGRsLm1lc3NhZ2Vfc2l6ZSk7CisJCQkJZGF0YSArPSBjaGFuZ2UtPmRhdGEuZGRsLm1lc3NhZ2Vf c2l6ZTsKKwogCQkJCWJyZWFrOwogCQkJfQogCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9J TlZBTElEQVRJT046CkBAIC00MTQ5LDYgKzQyNDgsMTUgQEAgUmVvcmRlckJ1ZmZlckNoYW5nZVNp emUoUmVvcmRlckJ1ZmZlckNoYW5nZSAqY2hhbmdlKQogCQkJCXN6ICs9IHByZWZpeF9zaXplICsg Y2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlX3NpemUgKwogCQkJCQlzaXplb2YoU2l6ZSkgKyBzaXpl b2YoU2l6ZSk7CiAKKwkJCQlicmVhazsKKwkJCX0KKwkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFO R0VfRERMOgorCQkJeworCQkJCVNpemUJCXByZWZpeF9zaXplID0gc3RybGVuKGNoYW5nZS0+ZGF0 YS5kZGwucHJlZml4KSArIDE7CisKKwkJCQlzeiArPSBwcmVmaXhfc2l6ZSArIGNoYW5nZS0+ZGF0 YS5kZGwubWVzc2FnZV9zaXplICsKKwkJCQkJc2l6ZW9mKFNpemUpICsgc2l6ZW9mKFNpemUpICsg c2l6ZW9mKE9pZCkgKyBzaXplb2YoRGVwYXJzZWRDb21tYW5kVHlwZSk7CisKIAkJCQlicmVhazsK IAkJCX0KIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5WQUxJREFUSU9OOgpAQCAtNDQy Niw2ICs0NTM0LDMzIEBAIFJlb3JkZXJCdWZmZXJSZXN0b3JlQ2hhbmdlKFJlb3JkZXJCdWZmZXIg KnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJCSAgIGNoYW5nZS0+ZGF0YS5tc2cubWVz c2FnZV9zaXplKTsKIAkJCQlkYXRhICs9IGNoYW5nZS0+ZGF0YS5tc2cubWVzc2FnZV9zaXplOwog CisJCQkJYnJlYWs7CisJCQl9CisJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0RETDoKKwkJ CXsKKwkJCQlTaXplCQlwcmVmaXhfc2l6ZTsKKworCQkJCS8qIHJlYWQgcHJlZml4ICovCisJCQkJ bWVtY3B5KCZwcmVmaXhfc2l6ZSwgZGF0YSwgc2l6ZW9mKFNpemUpKTsKKwkJCQlkYXRhICs9IHNp emVvZihTaXplKTsKKwkJCQltZW1jcHkoJmNoYW5nZS0+ZGF0YS5kZGwucmVsaWQsIGRhdGEsIHNp emVvZihPaWQpKTsKKwkJCQlkYXRhICs9IHNpemVvZihPaWQpOworCQkJCW1lbWNweSgmY2hhbmdl LT5kYXRhLmRkbC5jbWR0eXBlLCBkYXRhLCBzaXplb2YoRGVwYXJzZWRDb21tYW5kVHlwZSkpOwor CQkJCWRhdGEgKz0gc2l6ZW9mKERlcGFyc2VkQ29tbWFuZFR5cGUpOworCQkJCWNoYW5nZS0+ZGF0 YS5kZGwucHJlZml4ID0gTWVtb3J5Q29udGV4dEFsbG9jKHJiLT5jb250ZXh0LCBwcmVmaXhfc2l6 ZSk7CisJCQkJbWVtY3B5KGNoYW5nZS0+ZGF0YS5kZGwucHJlZml4LCBkYXRhLCBwcmVmaXhfc2l6 ZSk7CisJCQkJQXNzZXJ0KGNoYW5nZS0+ZGF0YS5kZGwucHJlZml4W3ByZWZpeF9zaXplIC0gMV0g PT0gJ1wwJyk7CisJCQkJZGF0YSArPSBwcmVmaXhfc2l6ZTsKKworCQkJCS8qIHJlYWQgdGhlIG1l c3NhZ2UgKi8KKwkJCQltZW1jcHkoJmNoYW5nZS0+ZGF0YS5tc2cubWVzc2FnZV9zaXplLCBkYXRh LCBzaXplb2YoU2l6ZSkpOworCQkJCWRhdGEgKz0gc2l6ZW9mKFNpemUpOworCQkJCWNoYW5nZS0+ ZGF0YS5tc2cubWVzc2FnZSA9IE1lbW9yeUNvbnRleHRBbGxvYyhyYi0+Y29udGV4dCwKKwkJCQkJ CQkJCQkJCQkJCSAgY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlX3NpemUpOworCQkJCW1lbWNweShj aGFuZ2UtPmRhdGEubXNnLm1lc3NhZ2UsIGRhdGEsCisJCQkJCSAgIGNoYW5nZS0+ZGF0YS5tc2cu bWVzc2FnZV9zaXplKTsKKwkJCQlkYXRhICs9IGNoYW5nZS0+ZGF0YS5tc2cubWVzc2FnZV9zaXpl OworCiAJCQkJYnJlYWs7CiAJCQl9CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0lOVkFM SURBVElPTjoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29y a2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDBl ZTc2NGQ2OGYuLjVkMmNkY2U1ZWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93 b3JrZXIuYwpAQCAtMTY2LDYgKzE2Niw3IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5j bHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5o IgorI2luY2x1ZGUgInBhcnNlci9hbmFseXplLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3Jl bGF0aW9uLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dv cmtlci5oIgpAQCAtMTkxLDcgKzE5MiwxMCBAQAogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgog I2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5Lmgi CisjaW5jbHVkZSAidGNvcC9kZGxkZXBhcnNlLmgiCisjaW5jbHVkZSAidGNvcC9wcXVlcnkuaCIK ICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCisjaW5jbHVkZSAidGNvcC91dGlsaXR5LmgiCiAj aW5jbHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNs dWRlICJ1dGlscy9jYXRjYWNoZS5oIgpAQCAtMzI3Nyw2ICszMjgxLDE4OSBAQCBhcHBseV9oYW5k bGVfdHJ1bmNhdGUoU3RyaW5nSW5mbyBzKQogCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CiB9CiAK Ky8qCisgKiBIYW5kbGUgQ1JFQVRFIFRBQkxFIGNvbW1hbmQKKyAqCisgKiBDYWxsIEFkZFN1YnNj cmlwdGlvblJlbFN0YXRlIGZvciBDUkVBVEUgVEFCTEUgY29tbWFuZCB0byBzZXQgdGhlIHJlbHN0 YXRlIHRvCisgKiBTVUJSRUxfU1RBVEVfUkVBRFkgc28gRE1MIGNoYW5nZXMgb24gdGhpcyBuZXcg dGFibGUgY2FuIGJlIHJlcGxpY2F0ZWQgd2l0aG91dAorICogaGF2aW5nIHRvIG1hbnVhbGx5IHJ1 biAiQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFBVQkxJQ0FUSU9OIgorICovCitzdGF0 aWMgdm9pZAorcG9zdHByb2Nlc3NfZGRsX2NyZWF0ZV90YWJsZShSYXdTdG10ICpjb21tYW5kKQor eworCUNvbW1hbmRUYWcJY29tbWFuZFRhZzsKKwlSYW5nZVZhciAgICpydiA9IE5VTEw7CisJT2lk CQkJcmVsaWQ7CisJT2lkCQkJcmVsbmFtZXNwYWNlX29pZCA9IEludmFsaWRPaWQ7CisJQ3JlYXRl U3RtdCAqY3N0bXQ7CisJY2hhcgkgICAqc2NoZW1hbmFtZSA9IE5VTEw7CisJY2hhcgkgICAqcmVs bmFtZSA9IE5VTEw7CisKKwljb21tYW5kVGFnID0gQ3JlYXRlQ29tbWFuZFRhZygoTm9kZSAqKSBj b21tYW5kKTsKKworCWlmIChjb21tYW5kVGFnICE9IENNRFRBR19DUkVBVEVfVEFCTEUpCisJCXJl dHVybjsKKworCWNzdG10ID0gKENyZWF0ZVN0bXQgKikgY29tbWFuZC0+c3RtdDsKKwlydiA9IGNz dG10LT5yZWxhdGlvbjsKKwlpZiAoIXJ2KQorCQlyZXR1cm47CisKKwlzY2hlbWFuYW1lID0gcnYt PnNjaGVtYW5hbWU7CisJcmVsbmFtZSA9IHJ2LT5yZWxuYW1lOworCisJaWYgKHNjaGVtYW5hbWUg IT0gTlVMTCkKKwkJcmVsbmFtZXNwYWNlX29pZCA9IGdldF9uYW1lc3BhY2Vfb2lkKHNjaGVtYW5h bWUsIGZhbHNlKTsKKworCWlmIChPaWRJc1ZhbGlkKHJlbG5hbWVzcGFjZV9vaWQpKQorCQlyZWxp ZCA9IGdldF9yZWxuYW1lX3JlbGlkKHJlbG5hbWUsIHJlbG5hbWVzcGFjZV9vaWQpOworCWVsc2UK KwkJcmVsaWQgPSBSZWxuYW1lR2V0UmVsaWQocmVsbmFtZSk7CisKKwlpZiAoT2lkSXNWYWxpZChy ZWxpZCkpCisJeworCQlBZGRTdWJzY3JpcHRpb25SZWxTdGF0ZShNeVN1YnNjcmlwdGlvbi0+b2lk LCByZWxpZCwKKwkJCQkJCQkJU1VCUkVMX1NUQVRFX1JFQURZLAorCQkJCQkJCQlJbnZhbGlkWExv Z1JlY1B0cik7CisJCWVyZXBvcnQoREVCVUcxLAorCQkJCShlcnJtc2dfaW50ZXJuYWwoInRhYmxl IFwiJXNcIiBhZGRlZCB0byBzdWJzY3JpcHRpb24gXCIlc1wiIiwKKwkJCQkJCQkJIHJlbG5hbWUs IE15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCX0KK30KKworLyoKKyAqIEhhbmRsZSBEREwgY29t bWFuZHMKKyAqCisgKiBIYW5kbGUgRERMIHJlcGxpY2F0aW9uIG1lc3NhZ2VzLiBDb252ZXJ0IHRo ZSBqc29uIHN0cmluZyBpbnRvIGEgcXVlcnkKKyAqIHN0cmluZyBhbmQgcnVuIGl0IHRocm91Z2gg dGhlIHF1ZXJ5IHBvcnRhbC4KKyAqLworc3RhdGljIHZvaWQKK2FwcGx5X2hhbmRsZV9kZGwoU3Ry aW5nSW5mbyBzKQoreworCVhMb2dSZWNQdHIJbHNuOworCWNvbnN0IGNoYXIgKnByZWZpeCA9IE5V TEw7CisJY2hhcgkgICAqbWVzc2FnZSA9IE5VTEw7CisJY2hhcgkgICAqZGRsX2NvbW1hbmQ7CisJ U2l6ZQkJc3o7CisJTGlzdAkgICAqcGFyc2V0cmVlX2xpc3Q7CisJTGlzdENlbGwgICAqcGFyc2V0 cmVlX2l0ZW07CisJRGVzdFJlY2VpdmVyICpyZWNlaXZlcjsKKwlNZW1vcnlDb250ZXh0IG9sZGNv bnRleHQ7CisJY29uc3QgY2hhciAqc2F2ZV9kZWJ1Z19xdWVyeV9zdHJpbmcgPSBkZWJ1Z19xdWVy eV9zdHJpbmc7CisKKwltZXNzYWdlID0gbG9naWNhbHJlcF9yZWFkX2RkbChzLCAmbHNuLCAmcHJl Zml4LCAmc3opOworCisJU2V0Q3VycmVudFN0YXRlbWVudFN0YXJ0VGltZXN0YW1wKCk7CisKKwlp ZiAoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKQorCXsKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKKwkJbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbigpOworCX0KKworCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhBcHBseU1lc3NhZ2VDb250ZXh0KTsKKworCWRkbF9jb21tYW5kID0gZGVwYXJzZV9k ZGxfanNvbl90b19zdHJpbmcobWVzc2FnZSk7CisJZGVidWdfcXVlcnlfc3RyaW5nID0gZGRsX2Nv bW1hbmQ7CisKKwkvKiBEZXN0Tm9uZSBmb3IgbG9naWNhbCByZXBsaWNhdGlvbiAqLworCXJlY2Vp dmVyID0gQ3JlYXRlRGVzdFJlY2VpdmVyKERlc3ROb25lKTsKKwlwYXJzZXRyZWVfbGlzdCA9IHBn X3BhcnNlX3F1ZXJ5KGRkbF9jb21tYW5kKTsKKworCWZvcmVhY2gocGFyc2V0cmVlX2l0ZW0sIHBh cnNldHJlZV9saXN0KQorCXsKKwkJTGlzdAkgICAqcGxhbnRyZWVfbGlzdDsKKwkJTGlzdAkgICAq cXVlcnl0cmVlX2xpc3Q7CisJCVJhd1N0bXQgICAgKmNvbW1hbmQgPSAoUmF3U3RtdCAqKSBsZmly c3QocGFyc2V0cmVlX2l0ZW0pOworCQlDb21tYW5kVGFnCWNvbW1hbmRUYWc7CisJCU1lbW9yeUNv bnRleHQgcGVyX3BhcnNldHJlZV9jb250ZXh0ID0gTlVMTDsKKwkJUG9ydGFsCQlwb3J0YWw7CisJ CWJvb2wJCXNuYXBzaG90X3NldCA9IGZhbHNlOworCisJCWNvbW1hbmRUYWcgPSBDcmVhdGVDb21t YW5kVGFnKChOb2RlICopIGNvbW1hbmQpOworCisJCS8qIElmIHdlIGdvdCBhIGNhbmNlbCBzaWdu YWwgaW4gcGFyc2luZyBvciBwcmlvciBjb21tYW5kLCBxdWl0ICovCisJCUNIRUNLX0ZPUl9JTlRF UlJVUFRTKCk7CisKKwkJLyoKKwkJICogU2V0IHVwIGEgc25hcHNob3QgaWYgcGFyc2UgYW5hbHlz aXMvcGxhbm5pbmcgd2lsbCBuZWVkIG9uZS4KKwkJICovCisJCWlmIChhbmFseXplX3JlcXVpcmVz X3NuYXBzaG90KGNvbW1hbmQpKQorCQl7CisJCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNh Y3Rpb25TbmFwc2hvdCgpKTsKKwkJCXNuYXBzaG90X3NldCA9IHRydWU7CisJCX0KKworCQkvKgor CQkgKiBXZSBkbyB0aGUgd29yayBmb3IgZWFjaCBwYXJzZXRyZWUgaW4gYSBzaG9ydC1saXZlZCBj b250ZXh0LCB0bworCQkgKiBsaW1pdCB0aGUgbWVtb3J5IHVzZWQgd2hlbiB0aGVyZSBhcmUgbWFu eSBjb21tYW5kcyBpbiB0aGUgc3RyaW5nLgorCQkgKi8KKwkJcGVyX3BhcnNldHJlZV9jb250ZXh0 ID0KKwkJCUFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKKwkJCQkJ CQkJICAiZXhlY3V0ZV9zcWxfc3RyaW5nIHBlci1zdGF0ZW1lbnQgY29udGV4dCIsCisJCQkJCQkJ CSAgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0 U3dpdGNoVG8ocGVyX3BhcnNldHJlZV9jb250ZXh0KTsKKworCQlxdWVyeXRyZWVfbGlzdCA9IHBn X2FuYWx5emVfYW5kX3Jld3JpdGVfZml4ZWRwYXJhbXMoY29tbWFuZCwKKwkJCQkJCQkJCQkJCQkJ CWRkbF9jb21tYW5kLAorCQkJCQkJCQkJCQkJCQkJTlVMTCwgMCwgTlVMTCk7CisKKwkJcGxhbnRy ZWVfbGlzdCA9IHBnX3BsYW5fcXVlcmllcyhxdWVyeXRyZWVfbGlzdCwgZGRsX2NvbW1hbmQsIDAs IE5VTEwpOworCisJCS8qIERvbmUgd2l0aCB0aGUgc25hcHNob3QgdXNlZCBmb3IgcGFyc2luZy9w bGFubmluZyAqLworCQlpZiAoc25hcHNob3Rfc2V0KQorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsK KworCQlwb3J0YWwgPSBDcmVhdGVQb3J0YWwoImxvZ2ljYWwgcmVwbGljYXRpb24iLCB0cnVlLCB0 cnVlKTsKKworCQkvKgorCQkgKiBXZSBkb24ndCBoYXZlIHRvIGNvcHkgYW55dGhpbmcgaW50byB0 aGUgcG9ydGFsLCBiZWNhdXNlIGV2ZXJ5dGhpbmcKKwkJICogd2UgYXJlIHBhc3NpbmcgaGVyZSBp cyBpbiBBcHBseU1lc3NhZ2VDb250ZXh0IG9yIHRoZQorCQkgKiBwZXJfcGFyc2V0cmVlX2NvbnRl eHQsIGFuZCBzbyB3aWxsIG91dGxpdmUgdGhlIHBvcnRhbCBhbnl3YXkuCisJCSAqLworCQlQb3J0 YWxEZWZpbmVRdWVyeShwb3J0YWwsCisJCQkJCQkgIE5VTEwsCisJCQkJCQkgIGRkbF9jb21tYW5k LAorCQkJCQkJICBjb21tYW5kVGFnLAorCQkJCQkJICBwbGFudHJlZV9saXN0LAorCQkJCQkJICBO VUxMKTsKKworCQkvKgorCQkgKiBTdGFydCB0aGUgcG9ydGFsLiAgTm8gcGFyYW1ldGVycyBoZXJl LgorCQkgKi8KKwkJUG9ydGFsU3RhcnQocG9ydGFsLCBOVUxMLCAwLCBJbnZhbGlkU25hcHNob3Qp OworCisJCS8qCisJCSAqIFN3aXRjaCBiYWNrIHRvIHRyYW5zYWN0aW9uIGNvbnRleHQgZm9yIGV4 ZWN1dGlvbi4KKwkJICovCisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwor CQkodm9pZCkgUG9ydGFsUnVuKHBvcnRhbCwKKwkJCQkJCSBGRVRDSF9BTEwsCisJCQkJCQkgdHJ1 ZSwKKwkJCQkJCSB0cnVlLAorCQkJCQkJIHJlY2VpdmVyLAorCQkJCQkJIHJlY2VpdmVyLAorCQkJ CQkJIE5VTEwpOworCisJCVBvcnRhbERyb3AocG9ydGFsLCBmYWxzZSk7CisKKwkJQ29tbWFuZENv dW50ZXJJbmNyZW1lbnQoKTsKKworCQkvKgorCQkgKiBUYWJsZSBjcmVhdGVkIGJ5IERETCByZXBs aWNhdGlvbiAoZGF0YWJhc2UgbGV2ZWwpIGlzIGF1dG9tYXRpY2FsbHkKKwkJICogYWRkZWQgdG8g dGhlIHN1YnNjcmlwdGlvbiBoZXJlLgorCQkgKi8KKwkJcG9zdHByb2Nlc3NfZGRsX2NyZWF0ZV90 YWJsZShjb21tYW5kKTsKKworCQkvKiBOb3cgd2UgbWF5IGRyb3AgdGhlIHBlci1wYXJzZXRyZWUg Y29udGV4dCwgaWYgb25lIHdhcyBjcmVhdGVkLiAqLworCQlNZW1vcnlDb250ZXh0RGVsZXRlKHBl cl9wYXJzZXRyZWVfY29udGV4dCk7CisJfQorCisJZGVidWdfcXVlcnlfc3RyaW5nID0gc2F2ZV9k ZWJ1Z19xdWVyeV9zdHJpbmc7CisKKwlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworfQogCiAv KgogICogTG9naWNhbCByZXBsaWNhdGlvbiBwcm90b2NvbCBtZXNzYWdlIGRpc3BhdGNoZXIuCkBA IC0zMzQyLDYgKzM1MjksMTAgQEAgYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKQogCQkJICov CiAJCQlicmVhazsKIAorCQljYXNlIExPR0lDQUxfUkVQX01TR19EREw6CisJCQlhcHBseV9oYW5k bGVfZGRsKHMpOworCQkJYnJlYWs7CisKIAkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NU QVJUOgogCQkJYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChzKTsKIAkJCWJyZWFrOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggYjA4Y2E1NTA0MS4u YWY2MzRiMjViYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQv cGdvdXRwdXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1 dC5jCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9y ZWwuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImNv bW1hbmRzL2RlZnJlbS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oIgog I2luY2x1ZGUgImNvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaCIKICNpbmNsdWRlICJleGVjdXRv ci9leGVjdXRvci5oIgogI2luY2x1ZGUgImZtZ3IuaCIKQEAgLTU1LDYgKzU2LDExIEBAIHN0YXRp YyB2b2lkIHBnb3V0cHV0X21lc3NhZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJ CQkJCSBSZW9yZGVyQnVmZmVyVFhOICp0eG4sIFhMb2dSZWNQdHIgbWVzc2FnZV9sc24sCiAJCQkJ CQkJIGJvb2wgdHJhbnNhY3Rpb25hbCwgY29uc3QgY2hhciAqcHJlZml4LAogCQkJCQkJCSBTaXpl IHN6LCBjb25zdCBjaGFyICptZXNzYWdlKTsKK3N0YXRpYyB2b2lkIHBnb3V0cHV0X2RkbChMb2dp Y2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCisJCQkJCQkgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLCBY TG9nUmVjUHRyIG1lc3NhZ2VfbHNuLAorCQkJCQkJIGNvbnN0IGNoYXIgKnByZWZpeCwgT2lkIHJl bGlkLAorCQkJCQkJIERlcGFyc2VkQ29tbWFuZFR5cGUgY21kdHlwZSwKKwkJCQkJCSBTaXplIHN6 LCBjb25zdCBjaGFyICptZXNzYWdlKTsKIHN0YXRpYyBib29sIHBnb3V0cHV0X29yaWdpbl9maWx0 ZXIoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkJCQkgICBSZXBPcmlnaW5JZCBv cmlnaW5faWQpOwogc3RhdGljIHZvaWQgcGdvdXRwdXRfYmVnaW5fcHJlcGFyZV90eG4oTG9naWNh bERlY29kaW5nQ29udGV4dCAqY3R4LApAQCAtMjA3LDYgKzIxMywxMyBAQCB0eXBlZGVmIHN0cnVj dCBSZWxhdGlvblN5bmNFbnRyeQogdHlwZWRlZiBzdHJ1Y3QgUEdPdXRwdXRUeG5EYXRhCiB7CiAJ Ym9vbAkJc2VudF9iZWdpbl90eG47IC8qIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIEJFR0lOIGhh cyBiZWVuIHNlbnQgKi8KKwkvKgorCSAqIE1haW50YWluIGxpc3Qgb2YgZGVsZXRlZCBvaWRzIHdo aWNoIGFyZSBhZGRlZCBhdCBjb21tYW5kIHN0YXJ0LgorCSAqIFRoaXMgaXMgcmVxdWlyZWQgYmVj YXVzZSBhdCBjb21tYW5kIGVuZCB3aGVuIHRoZSBhY3R1YWwgY29tbWFuZCBpcyBzZW50CisJICog dGhlIGNhdGFsb2dzIGhhdmUgYmVlbiBtb2RpZmllZCBhbmQgaXQgaXMgbm90IHBvc3NpYmxlIHRv IGtub3cgaWYgdGhlIG9pZAorCSAqIHdhcyByZWZlcnJpbmcgdG8gYW4gb2JqZWN0IHRoYXQgd2Fz IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9uLgorCSAqLworCUxpc3QJICAgKmRlbGV0ZWRfcmVsaWRz OyAvKiBtYWludGFpbiBsaXN0IG9mIGRlbGV0ZWQgdGFibGUgb2lkcyAqLwogfSBQR091dHB1dFR4 bkRhdGE7CiAKIC8qIE1hcCB1c2VkIHRvIHJlbWVtYmVyIHdoaWNoIHJlbGF0aW9uIHNjaGVtYXMg d2Ugc2VudC4gKi8KQEAgLTI1NCw2ICsyNjcsNyBAQCBfUEdfb3V0cHV0X3BsdWdpbl9pbml0KE91 dHB1dFBsdWdpbkNhbGxiYWNrcyAqY2IpCiAJY2ItPmNoYW5nZV9jYiA9IHBnb3V0cHV0X2NoYW5n ZTsKIAljYi0+dHJ1bmNhdGVfY2IgPSBwZ291dHB1dF90cnVuY2F0ZTsKIAljYi0+bWVzc2FnZV9j YiA9IHBnb3V0cHV0X21lc3NhZ2U7CisJY2ItPmRkbF9jYiA9IHBnb3V0cHV0X2RkbDsKIAljYi0+ Y29tbWl0X2NiID0gcGdvdXRwdXRfY29tbWl0X3R4bjsKIAogCWNiLT5iZWdpbl9wcmVwYXJlX2Ni ID0gcGdvdXRwdXRfYmVnaW5fcHJlcGFyZV90eG47CkBAIC0yNzAsNiArMjg0LDcgQEAgX1BHX291 dHB1dF9wbHVnaW5faW5pdChPdXRwdXRQbHVnaW5DYWxsYmFja3MgKmNiKQogCWNiLT5zdHJlYW1f Y29tbWl0X2NiID0gcGdvdXRwdXRfc3RyZWFtX2NvbW1pdDsKIAljYi0+c3RyZWFtX2NoYW5nZV9j YiA9IHBnb3V0cHV0X2NoYW5nZTsKIAljYi0+c3RyZWFtX21lc3NhZ2VfY2IgPSBwZ291dHB1dF9t ZXNzYWdlOworCWNiLT5zdHJlYW1fZGRsX2NiID0gcGdvdXRwdXRfZGRsOwogCWNiLT5zdHJlYW1f dHJ1bmNhdGVfY2IgPSBwZ291dHB1dF90cnVuY2F0ZTsKIAkvKiB0cmFuc2FjdGlvbiBzdHJlYW1p bmcgLSB0d28tcGhhc2UgY29tbWl0ICovCiAJY2ItPnN0cmVhbV9wcmVwYXJlX2NiID0gcGdvdXRw dXRfc3RyZWFtX3ByZXBhcmVfdHhuOwpAQCAtNTA1LDYgKzUyMCw3IEBAIHBnb3V0cHV0X3N0YXJ0 dXAoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBPdXRwdXRQbHVnaW5PcHRpb25zICpvcHQs CiAKIAkJLyogSW5pdCBwdWJsaWNhdGlvbiBzdGF0ZS4gKi8KIAkJZGF0YS0+cHVibGljYXRpb25z ID0gTklMOworCQlkYXRhLT5kZWxldGVkX3JlbGlkcyA9IE5JTDsKIAkJcHVibGljYXRpb25zX3Zh bGlkID0gZmFsc2U7CiAKIAkJLyoKQEAgLTUzMyw2ICs1NDksMzQgQEAgcGdvdXRwdXRfc3RhcnR1 cChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIE91dHB1dFBsdWdpbk9wdGlvbnMgKm9wdCwK IAl9CiB9CiAKKy8qIEluaXRpYWxpemUgdGhlIHBlci10cmFuc2FjdGlvbiBwcml2YXRlIGRhdGEg Zm9yIHRoZSBnaXZlbiB0cmFuc2FjdGlvbi4gKi8KK3N0YXRpYyB2b2lkCitpbml0X3R4bl9kYXRh KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuKQorewor CVBHT3V0cHV0VHhuRGF0YSAqdHhuZGF0YTsKKworCWlmICh0eG4tPm91dHB1dF9wbHVnaW5fcHJp dmF0ZSAhPSBOVUxMKQorCQlyZXR1cm47CisKKwl0eG5kYXRhID0gTWVtb3J5Q29udGV4dEFsbG9j WmVybyhjdHgtPmNvbnRleHQsIHNpemVvZihQR091dHB1dFR4bkRhdGEpKTsKKworCXR4bi0+b3V0 cHV0X3BsdWdpbl9wcml2YXRlID0gdHhuZGF0YTsKK30KKworLyogQ2xlYW4gdXAgdGhlIHBlci10 cmFuc2FjdGlvbiBwcml2YXRlIGRhdGEgZm9yIHRoZSBnaXZlbiB0cmFuc2FjdGlvbi4gKi8KK3N0 YXRpYyB2b2lkCitjbGVhbl90eG5fZGF0YShSZW9yZGVyQnVmZmVyVFhOICp0eG4pCit7CisJUEdP dXRwdXRUeG5EYXRhICp0eG5kYXRhID0gKFBHT3V0cHV0VHhuRGF0YSAqKSB0eG4tPm91dHB1dF9w bHVnaW5fcHJpdmF0ZTsKKworCWlmICh0eG5kYXRhID09IE5VTEwpCisJCXJldHVybjsKKworCWxp c3RfZnJlZSh0eG5kYXRhLT5kZWxldGVkX3JlbGlkcyk7CisJcGZyZWUodHhuZGF0YSk7CisJdHhu LT5vdXRwdXRfcGx1Z2luX3ByaXZhdGUgPSBOVUxMOworfQorCiAvKgogICogQkVHSU4gY2FsbGJh Y2suCiAgKgpAQCAtNTQ2LDEwICs1OTAsNyBAQCBwZ291dHB1dF9zdGFydHVwKExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwgT3V0cHV0UGx1Z2luT3B0aW9ucyAqb3B0LAogc3RhdGljIHZvaWQK IHBnb3V0cHV0X2JlZ2luX3R4bihMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJC dWZmZXJUWE4gKnR4bikKIHsKLQlQR091dHB1dFR4bkRhdGEgKnR4bmRhdGEgPSBNZW1vcnlDb250 ZXh0QWxsb2NaZXJvKGN0eC0+Y29udGV4dCwKLQkJCQkJCQkJCQkJCQkgIHNpemVvZihQR091dHB1 dFR4bkRhdGEpKTsKLQotCXR4bi0+b3V0cHV0X3BsdWdpbl9wcml2YXRlID0gdHhuZGF0YTsKKwlp bml0X3R4bl9kYXRhKGN0eCwgdHhuKTsKIH0KIAogLyoKQEAgLTU5NCw4ICs2MzUsNyBAQCBwZ291 dHB1dF9jb21taXRfdHhuKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZl clRYTiAqdHhuLAogCSAqLwogCXNlbnRfYmVnaW5fdHhuID0gdHhuZGF0YS0+c2VudF9iZWdpbl90 eG47CiAJT3V0cHV0UGx1Z2luVXBkYXRlUHJvZ3Jlc3MoY3R4LCAhc2VudF9iZWdpbl90eG4pOwot CXBmcmVlKHR4bmRhdGEpOwotCXR4bi0+b3V0cHV0X3BsdWdpbl9wcml2YXRlID0gTlVMTDsKKwlj bGVhbl90eG5fZGF0YSh0eG4pOwogCiAJaWYgKCFzZW50X2JlZ2luX3R4bikKIAl7CkBAIC02Mzcs NiArNjc3LDggQEAgcGdvdXRwdXRfcHJlcGFyZV90eG4oTG9naWNhbERlY29kaW5nQ29udGV4dCAq Y3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJT3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRlKGN0 eCwgdHJ1ZSk7CiAJbG9naWNhbHJlcF93cml0ZV9wcmVwYXJlKGN0eC0+b3V0LCB0eG4sIHByZXBh cmVfbHNuKTsKIAlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOworCisJY2xlYW5fdHhuX2Rh dGEodHhuKTsKIH0KIAogLyoKQEAgLTE2NjUsNiArMTcwNywxMDcgQEAgcGdvdXRwdXRfbWVzc2Fn ZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAlP dXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOwogfQogCisvKiBDaGVjayBpZiB0aGUgZ2l2ZW4g b2JqZWN0IGlzIHB1Ymxpc2hlZC4gKi8KK3N0YXRpYyBib29sCitpc19vYmplY3RfcHVibGlzaGVk KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgT2lkIG9iamlkKQoreworCVJlbGF0aW9uCXJl bGF0aW9uID0gTlVMTDsKKwlSZWxhdGlvblN5bmNFbnRyeSAqcmVsZW50cnk7CisJUEdPdXRwdXRE YXRhICpkYXRhID0gKFBHT3V0cHV0RGF0YSAqKSBjdHgtPm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsK KworCS8qIEZpcnN0IGNoZWNrIHRoZSBEREwgY29tbWFuZCBmaWx0ZXIuICovCisJc3dpdGNoIChn ZXRfcmVsX3JlbGtpbmQob2JqaWQpKQorCXsKKwkJY2FzZSBSRUxLSU5EX1JFTEFUSU9OOgorCQlj YXNlIFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEU6CisJCQlyZWxhdGlvbiA9IFJlbGF0aW9uSWRH ZXRSZWxhdGlvbihvYmppZCk7CisJCQlyZWxlbnRyeSA9IGdldF9yZWxfc3luY19lbnRyeShkYXRh LCByZWxhdGlvbik7CisJCQlSZWxhdGlvbkNsb3NlKHJlbGF0aW9uKTsKKworCQkJLyogT25seSBz ZW5kIHRoaXMgZGRsIGlmIHdlIHB1Ymxpc2ggZGRsIG1lc3NhZ2UuICovCisJCQlpZiAocmVsZW50 cnktPnB1YmFjdGlvbnMucHViZGRsX3RhYmxlKQorCQkJCXJldHVybiB0cnVlOworCisJCQlicmVh azsKKwkJZGVmYXVsdDoKKwkJCS8qIHVuc3VwcG9ydGVkIG9iamVjdHMgKi8KKwkJCXJldHVybiBm YWxzZTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qCisgKiBTZW5kIHRoZSBkZWNvZGVk IERETCBtZXNzYWdlLgorICovCitzdGF0aWMgdm9pZAorcGdvdXRwdXRfZGRsKExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJIFhMb2dSZWNQdHIg bWVzc2FnZV9sc24sCisJCQkgY29uc3QgY2hhciAqcHJlZml4LCBPaWQgcmVsaWQsIERlcGFyc2Vk Q29tbWFuZFR5cGUgY21kdHlwZSwKKwkJCSBTaXplIHN6LCBjb25zdCBjaGFyICptZXNzYWdlKQor eworCVBHT3V0cHV0VHhuRGF0YSAqdHhuZGF0YSA9IChQR091dHB1dFR4bkRhdGEgKikgdHhuLT5v dXRwdXRfcGx1Z2luX3ByaXZhdGU7CisKKwkvKgorCSAqIENoZWNrIGlmIHRoZSBnaXZlbiBvYmpl Y3QgaXMgcHVibGlzaGVkLiBOb3RlIHRoYXQgZm9yIGRyb3BwZWQgb2JqZWN0cywKKwkgKiB3ZSBj YW5ub3QgZ2V0IHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBjYXRhbG9nLCBzbyB3 ZSBza2lwIHRoZQorCSAqIGNoZWNrIGZvciB0aGVtLgorCSAqLworCWlmIChjbWR0eXBlICE9IERD VF9UYWJsZURyb3BFbmQgJiYgIWlzX29iamVjdF9wdWJsaXNoZWQoY3R4LCByZWxpZCkpCisJCXJl dHVybjsKKworCXN3aXRjaCAoY21kdHlwZSkKKwl7CisJCWNhc2UgRENUX1RhYmxlRHJvcFN0YXJ0 OgorCQkJeworCQkJCU1lbW9yeUNvbnRleHQJb2xkY3R4OworCisJCQkJaW5pdF90eG5fZGF0YShj dHgsIHR4bik7CisKKwkJCQl0eG5kYXRhID0gKFBHT3V0cHV0VHhuRGF0YSAqKSB0eG4tPm91dHB1 dF9wbHVnaW5fcHJpdmF0ZTsKKworCQkJCS8qCisJCQkJICogT24gRFJPUCBzdGFydCwgYWRkIHRo ZSByZWxpZCB0byBhIGRlbGV0ZWRfcmVsaWQgbGlzdCBpZiB0aGUKKwkJCQkgKiByZWxpZCBpcyBw YXJ0IG9mIGEgcHVibGljYXRpb24gdGhhdCBzdXBwb3J0cyBkZGwKKwkJCQkgKiBwdWJsaWNhdGlv bi4gV2UgbmVlZCB0aGlzIGJlY2F1c2Ugb24gRFJPUCBlbmQsIHRoZSByZWxpZAorCQkJCSAqIHdp bGwgbm8gbG9uZ2VyIGJlIHZhbGlkLiBMYXRlciBvbiBEcm9wIGVuZCwgdmVyaWZ5IHRoYXQgdGhl CisJCQkJICogZHJvcCBpcyBmb3IgYSByZWxpZCB0aGF0IGlzIG9uIHRoZSBkZWxldGVkX3JpZCBs aXN0LCBhbmQKKwkJCQkgKiBvbmx5IHRoZW4gc2VuZCB0aGUgZGRsIG1lc3NhZ2UuCisJCQkJICov CisJCQkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGN0eC0+Y29udGV4dCk7CisJCQkJ dHhuZGF0YS0+ZGVsZXRlZF9yZWxpZHMgPSBsYXBwZW5kX29pZCh0eG5kYXRhLT5kZWxldGVkX3Jl bGlkcywKKwkJCQkJCQkJCQkJCQkgIHJlbGlkKTsKKwkJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY3R4KTsKKwkJCX0KKwkJCXJldHVybjsKKworCQljYXNlIERDVF9UYWJsZURyb3BFbmQ6CisJ CQlpZiAoIWxpc3RfbWVtYmVyX29pZCh0eG5kYXRhLT5kZWxldGVkX3JlbGlkcywgcmVsaWQpKQor CQkJCXJldHVybjsKKworCQkJdHhuZGF0YS0+ZGVsZXRlZF9yZWxpZHMgPSBsaXN0X2RlbGV0ZV9v aWQodHhuZGF0YS0+ZGVsZXRlZF9yZWxpZHMsCisJCQkJCQkJCQkJCQkJICByZWxpZCk7CisJCQli cmVhazsKKworCQljYXNlIERDVF9UYWJsZUFsdGVyOgorCQljYXNlIERDVF9TaW1wbGVDbWQ6CisJ CQkvKiBkbyBub3RoaW5nICovCisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJP UiwgInVuc3VwcG9ydGVkIHR5cGUgJWQiLCBjbWR0eXBlKTsKKwkJCWJyZWFrOworCX0KKworCS8q IFNlbmQgQkVHSU4gaWYgd2UgaGF2ZW4ndCB5ZXQgKi8KKwlpZiAodHhuZGF0YSAmJiAhdHhuZGF0 YS0+c2VudF9iZWdpbl90eG4pCisJCXBnb3V0cHV0X3NlbmRfYmVnaW4oY3R4LCB0eG4pOworCisJ T3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRlKGN0eCwgdHJ1ZSk7CisJbG9naWNhbHJlcF93cml0ZV9k ZGwoY3R4LT5vdXQsIG1lc3NhZ2VfbHNuLCBwcmVmaXgsIHN6LCBtZXNzYWdlKTsKKwlPdXRwdXRQ bHVnaW5Xcml0ZShjdHgsIHRydWUpOworfQorCiAvKgogICogUmV0dXJuIHRydWUgaWYgdGhlIGRh dGEgaXMgYXNzb2NpYXRlZCB3aXRoIGFuIG9yaWdpbiBhbmQgdGhlIHVzZXIgaGFzCiAgKiByZXF1 ZXN0ZWQgdGhlIGNoYW5nZXMgdGhhdCBkb24ndCBoYXZlIGFuIG9yaWdpbiwgZmFsc2Ugb3RoZXJ3 aXNlLgpAQCAtMTgxMyw2ICsxOTU2LDcgQEAgcGdvdXRwdXRfc3RyZWFtX2Fib3J0KHN0cnVjdCBM b2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJT3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVl KTsKIAogCWNsZWFudXBfcmVsX3N5bmNfY2FjaGUodG9wdHhuLT54aWQsIGZhbHNlKTsKKwljbGVh bl90eG5fZGF0YSh0eG4pOwogfQogCiAvKgpAQCAtMTgzOCw2ICsxOTgyLDcgQEAgcGdvdXRwdXRf c3RyZWFtX2NvbW1pdChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCU91dHB1 dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7CiAKIAljbGVhbnVwX3JlbF9zeW5jX2NhY2hlKHR4bi0+ eGlkLCB0cnVlKTsKKwljbGVhbl90eG5fZGF0YSh0eG4pOwogfQogCiAvKgpAQCAtMTg1Niw2ICsy MDAxLDggQEAgcGdvdXRwdXRfc3RyZWFtX3ByZXBhcmVfdHhuKExvZ2ljYWxEZWNvZGluZ0NvbnRl eHQgKmN0eCwKIAlPdXRwdXRQbHVnaW5QcmVwYXJlV3JpdGUoY3R4LCB0cnVlKTsKIAlsb2dpY2Fs cmVwX3dyaXRlX3N0cmVhbV9wcmVwYXJlKGN0eC0+b3V0LCB0eG4sIHByZXBhcmVfbHNuKTsKIAlP dXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOworCisJY2xlYW5fdHhuX2RhdGEodHhuKTsKIH0K IAogLyoKQEAgLTE5NzIsOCArMjExOSw3IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERh dGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQllbnRyeS0+cmVwbGljYXRlX3ZhbGlkID0g ZmFsc2U7CiAJCWVudHJ5LT5zY2hlbWFfc2VudCA9IGZhbHNlOwogCQllbnRyeS0+c3RyZWFtZWRf dHhucyA9IE5JTDsKLQkJZW50cnktPnB1YmFjdGlvbnMucHViaW5zZXJ0ID0gZW50cnktPnB1YmFj dGlvbnMucHVidXBkYXRlID0KLQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSA9IGVudHJ5 LT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlID0gZmFsc2U7CisJCW1lbXNldCgmZW50cnktPnB1YmFj dGlvbnMsIDAsIHNpemVvZihlbnRyeS0+cHViYWN0aW9ucykpOwogCQllbnRyeS0+bmV3X3Nsb3Qg PSBOVUxMOwogCQllbnRyeS0+b2xkX3Nsb3QgPSBOVUxMOwogCQltZW1zZXQoZW50cnktPmV4cHJz dGF0ZSwgMCwgc2l6ZW9mKGVudHJ5LT5leHByc3RhdGUpKTsKQEAgLTIwMjcsMTAgKzIxNzMsNyBA QCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlv bikKIAkJZW50cnktPnN0cmVhbWVkX3R4bnMgPSBOSUw7CiAJCWJtc19mcmVlKGVudHJ5LT5jb2x1 bW5zKTsKIAkJZW50cnktPmNvbHVtbnMgPSBOVUxMOwotCQllbnRyeS0+cHViYWN0aW9ucy5wdWJp bnNlcnQgPSBmYWxzZTsKLQkJZW50cnktPnB1YmFjdGlvbnMucHVidXBkYXRlID0gZmFsc2U7Ci0J CWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSA9IGZhbHNlOwotCQllbnRyeS0+cHViYWN0aW9u cy5wdWJ0cnVuY2F0ZSA9IGZhbHNlOworCQltZW1zZXQoJmVudHJ5LT5wdWJhY3Rpb25zLCAwLCBz aXplb2YoZW50cnktPnB1YmFjdGlvbnMpKTsKIAogCQkvKgogCQkgKiBUdXBsZSBzbG90cyBjbGVh bnVwcy4gKFdpbGwgYmUgcmVidWlsdCBsYXRlciBpZiBuZWVkZWQpLgpAQCAtMjEyOSw1MyArMjI3 Miw2MSBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiBy ZWxhdGlvbikKIAkJCQkJcHVibGlzaCA9IHRydWU7CiAJCQl9CiAKLQkJCS8qCi0JCQkgKiBJZiB0 aGUgcmVsYXRpb24gaXMgdG8gYmUgcHVibGlzaGVkLCBkZXRlcm1pbmUgYWN0aW9ucyB0bwotCQkJ ICogcHVibGlzaCwgYW5kIGxpc3Qgb2YgY29sdW1ucywgaWYgYXBwcm9wcmlhdGUuCi0JCQkgKgot CQkJICogRG9uJ3QgcHVibGlzaCBjaGFuZ2VzIGZvciBwYXJ0aXRpb25lZCB0YWJsZXMsIGJlY2F1 c2UKLQkJCSAqIHB1Ymxpc2hpbmcgdGhvc2Ugb2YgaXRzIHBhcnRpdGlvbnMgc3VmZmljZXMsIHVu bGVzcyBwYXJ0aXRpb24KLQkJCSAqIGNoYW5nZXMgd29uJ3QgYmUgcHVibGlzaGVkIGR1ZSB0byBw dWJ2aWFyb290IGJlaW5nIHNldC4KLQkJCSAqLwotCQkJaWYgKHB1Ymxpc2ggJiYKLQkJCQkocmVs a2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFIHx8IHB1Yi0+cHVidmlhcm9vdCkpCisJ CQlpZiAocHVibGlzaCkKIAkJCXsKLQkJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJpbnNlcnQgfD0g cHViLT5wdWJhY3Rpb25zLnB1Ymluc2VydDsKLQkJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJ1cGRh dGUgfD0gcHViLT5wdWJhY3Rpb25zLnB1YnVwZGF0ZTsKLQkJCQllbnRyeS0+cHViYWN0aW9ucy5w dWJkZWxldGUgfD0gcHViLT5wdWJhY3Rpb25zLnB1YmRlbGV0ZTsKLQkJCQllbnRyeS0+cHViYWN0 aW9ucy5wdWJ0cnVuY2F0ZSB8PSBwdWItPnB1YmFjdGlvbnMucHVidHJ1bmNhdGU7Ci0KIAkJCQkv KgotCQkJCSAqIFdlIHdhbnQgdG8gcHVibGlzaCB0aGUgY2hhbmdlcyBhcyB0aGUgdG9wLW1vc3Qg YW5jZXN0b3IKLQkJCQkgKiBhY3Jvc3MgYWxsIHB1YmxpY2F0aW9ucy4gU28gd2UgbmVlZCB0byBj aGVjayBpZiB0aGUgYWxyZWFkeQotCQkJCSAqIGNhbGN1bGF0ZWQgbGV2ZWwgaXMgaGlnaGVyIHRo YW4gdGhlIG5ldyBvbmUuIElmIHllcywgd2UgY2FuCi0JCQkJICogaWdub3JlIHRoZSBuZXcgdmFs dWUgKGFzIGl0J3MgYSBjaGlsZCkuIE90aGVyd2lzZSB0aGUgbmV3Ci0JCQkJICogdmFsdWUgaXMg YW4gYW5jZXN0b3IsIHNvIHdlIGtlZXAgaXQuCisJCQkJICogVGhlIGJlaGF2aW9yIG9mIERETCBs b2dpY2FsIHJlcGxpY2F0aW9uIGlzIHVucmVsYXRlZCB0bworCQkJCSAqIHB1YnZpYXJvb3QuCiAJ CQkJICovCi0JCQkJaWYgKHB1Ymxpc2hfYW5jZXN0b3JfbGV2ZWwgPiBhbmNlc3Rvcl9sZXZlbCkK LQkJCQkJY29udGludWU7CisJCQkJZW50cnktPnB1YmFjdGlvbnMucHViZGRsX3RhYmxlIHw9IHB1 Yi0+cHViYWN0aW9ucy5wdWJkZGxfdGFibGU7CiAKIAkJCQkvKgotCQkJCSAqIElmIHdlIGZvdW5k IGFuIGFuY2VzdG9yIGhpZ2hlciB1cCBpbiB0aGUgdHJlZSwgZGlzY2FyZCB0aGUKLQkJCQkgKiBs aXN0IG9mIHB1YmxpY2F0aW9ucyB0aHJvdWdoIHdoaWNoIHdlIHJlcGxpY2F0ZSBpdCwgYW5kIHVz ZQotCQkJCSAqIHRoZSBuZXcgYW5jZXN0b3IuCisJCQkJICogSWYgdGhlIHJlbGF0aW9uIGlzIHRv IGJlIHB1Ymxpc2hlZCwgZGV0ZXJtaW5lIGFjdGlvbnMgdG8KKwkJCQkgKiBwdWJsaXNoLCBhbmQg bGlzdCBvZiBjb2x1bW5zLCBpZiBhcHByb3ByaWF0ZS4KKwkJCQkgKgorCQkJCSAqIERvbid0IHB1 Ymxpc2ggY2hhbmdlcyBmb3IgcGFydGl0aW9uZWQgdGFibGVzLCBiZWNhdXNlCisJCQkJICogcHVi bGlzaGluZyB0aG9zZSBvZiBpdHMgcGFydGl0aW9ucyBzdWZmaWNlcywgdW5sZXNzIHBhcnRpdGlv bgorCQkJCSAqIGNoYW5nZXMgd29uJ3QgYmUgcHVibGlzaGVkIGR1ZSB0byBwdWJ2aWFyb290IGJl aW5nIHNldC4KIAkJCQkgKi8KLQkJCQlpZiAocHVibGlzaF9hbmNlc3Rvcl9sZXZlbCA8IGFuY2Vz dG9yX2xldmVsKQorCQkJCWlmIChyZWxraW5kICE9IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUg fHwgcHViLT5wdWJ2aWFyb290KQogCQkJCXsKLQkJCQkJcHVibGlzaF9hc19yZWxpZCA9IHB1Yl9y ZWxpZDsKLQkJCQkJcHVibGlzaF9hbmNlc3Rvcl9sZXZlbCA9IGFuY2VzdG9yX2xldmVsOworCQkJ CQllbnRyeS0+cHViYWN0aW9ucy5wdWJpbnNlcnQgfD0gcHViLT5wdWJhY3Rpb25zLnB1Ymluc2Vy dDsKKwkJCQkJZW50cnktPnB1YmFjdGlvbnMucHVidXBkYXRlIHw9IHB1Yi0+cHViYWN0aW9ucy5w dWJ1cGRhdGU7CisJCQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSB8PSBwdWItPnB1YmFj dGlvbnMucHViZGVsZXRlOworCQkJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSB8PSBw dWItPnB1YmFjdGlvbnMucHVidHJ1bmNhdGU7CiAKLQkJCQkJLyogcmVzZXQgdGhlIHB1YmxpY2F0 aW9uIGxpc3QgZm9yIHRoaXMgcmVsYXRpb24gKi8KLQkJCQkJcmVsX3B1YmxpY2F0aW9ucyA9IE5J TDsKLQkJCQl9Ci0JCQkJZWxzZQotCQkJCXsKLQkJCQkJLyogU2FtZSBhbmNlc3RvciBsZXZlbCwg aGFzIHRvIGJlIHRoZSBzYW1lIE9JRC4gKi8KLQkJCQkJQXNzZXJ0KHB1Ymxpc2hfYXNfcmVsaWQg PT0gcHViX3JlbGlkKTsKLQkJCQl9CisJCQkJCS8qCisJCQkJCSAqIFdlIHdhbnQgdG8gcHVibGlz aCB0aGUgY2hhbmdlcyBhcyB0aGUgdG9wLW1vc3QgYW5jZXN0b3IKKwkJCQkJICogYWNyb3NzIGFs bCBwdWJsaWNhdGlvbnMuIFNvIHdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGFscmVhZHkKKwkJCQkJ ICogY2FsY3VsYXRlZCBsZXZlbCBpcyBoaWdoZXIgdGhhbiB0aGUgbmV3IG9uZS4gSWYgeWVzLCB3 ZSBjYW4KKwkJCQkJICogaWdub3JlIHRoZSBuZXcgdmFsdWUgKGFzIGl0J3MgYSBjaGlsZCkuIE90 aGVyd2lzZSB0aGUgbmV3CisJCQkJCSAqIHZhbHVlIGlzIGFuIGFuY2VzdG9yLCBzbyB3ZSBrZWVw IGl0LgorCQkJCQkgKi8KKwkJCQkJaWYgKHB1Ymxpc2hfYW5jZXN0b3JfbGV2ZWwgPiBhbmNlc3Rv cl9sZXZlbCkKKwkJCQkJCWNvbnRpbnVlOworCisJCQkJCS8qCisJCQkJCSAqIElmIHdlIGZvdW5k IGFuIGFuY2VzdG9yIGhpZ2hlciB1cCBpbiB0aGUgdHJlZSwgZGlzY2FyZCB0aGUKKwkJCQkJICog bGlzdCBvZiBwdWJsaWNhdGlvbnMgdGhyb3VnaCB3aGljaCB3ZSByZXBsaWNhdGUgaXQsIGFuZCB1 c2UKKwkJCQkJICogdGhlIG5ldyBhbmNlc3Rvci4KKwkJCQkJICovCisJCQkJCWlmIChwdWJsaXNo X2FuY2VzdG9yX2xldmVsIDwgYW5jZXN0b3JfbGV2ZWwpCisJCQkJCXsKKwkJCQkJCXB1Ymxpc2hf YXNfcmVsaWQgPSBwdWJfcmVsaWQ7CisJCQkJCQlwdWJsaXNoX2FuY2VzdG9yX2xldmVsID0gYW5j ZXN0b3JfbGV2ZWw7CisKKwkJCQkJCS8qIHJlc2V0IHRoZSBwdWJsaWNhdGlvbiBsaXN0IGZvciB0 aGlzIHJlbGF0aW9uICovCisJCQkJCQlyZWxfcHVibGljYXRpb25zID0gTklMOworCQkJCQl9CisJ CQkJCWVsc2UKKwkJCQkJeworCQkJCQkJLyogU2FtZSBhbmNlc3RvciBsZXZlbCwgaGFzIHRvIGJl IHRoZSBzYW1lIE9JRC4gKi8KKwkJCQkJCUFzc2VydChwdWJsaXNoX2FzX3JlbGlkID09IHB1Yl9y ZWxpZCk7CisJCQkJCX0KIAotCQkJCS8qIFRyYWNrIHB1YmxpY2F0aW9ucyBmb3IgdGhpcyBhbmNl c3Rvci4gKi8KLQkJCQlyZWxfcHVibGljYXRpb25zID0gbGFwcGVuZChyZWxfcHVibGljYXRpb25z LCBwdWIpOworCQkJCQkvKiBUcmFjayBwdWJsaWNhdGlvbnMgZm9yIHRoaXMgYW5jZXN0b3IuICov CisJCQkJCXJlbF9wdWJsaWNhdGlvbnMgPSBsYXBwZW5kKHJlbF9wdWJsaWNhdGlvbnMsIHB1Yik7 CisJCQkJfQogCQkJfQogCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvY21kdGFn LmMgYi9zcmMvYmFja2VuZC90Y29wL2NtZHRhZy5jCmluZGV4IDRiZDcxM2EwYjQuLmEzMWIwNjFl YjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvY21kdGFnLmMKKysrIGIvc3JjL2JhY2tl bmQvdGNvcC9jbWR0YWcuYwpAQCAtMjYsMTAgKzI2LDExIEBAIHR5cGVkZWYgc3RydWN0IENvbW1h bmRUYWdCZWhhdmlvcgogCWNvbnN0IGJvb2wJdGFibGVfcmV3cml0ZV9vazsKIAljb25zdCBib29s CWRpc3BsYXlfcm93Y291bnQ7CS8qIHNob3VsZCB0aGUgbnVtYmVyIG9mIHJvd3MgYWZmZWN0ZWQg YmUKIAkJCQkJCQkJCSAqIHNob3duIGluIHRoZSBjb21tYW5kIGNvbXBsZXRpb24gc3RyaW5nICov CisJY29uc3QgYm9vbAlkZGxfcmVwbGljYXRpb25fb2s7CiB9IENvbW1hbmRUYWdCZWhhdmlvcjsK IAotI2RlZmluZSBQR19DTURUQUcodGFnLCBuYW1lLCBldnRyZ29rLCByd3Jvaywgcm93Y250KSBc Ci0JeyBuYW1lLCAodWludDgpIChzaXplb2YobmFtZSkgLSAxKSwgZXZ0cmdvaywgcndyb2ssIHJv d2NudCB9LAorI2RlZmluZSBQR19DTURUQUcodGFnLCBuYW1lLCBldnRyZ29rLCByd3Jvaywgcm93 Y250LCBkZGxfcmVwbF9vaykgXAorCXsgbmFtZSwgKHVpbnQ4KSAoc2l6ZW9mKG5hbWUpIC0gMSks IGV2dHJnb2ssIHJ3cm9rLCByb3djbnQsIGRkbF9yZXBsX29rIH0sCiAKIHN0YXRpYyBjb25zdCBD b21tYW5kVGFnQmVoYXZpb3IgdGFnX2JlaGF2aW9yW0NPTU1BTkRfVEFHX05FWFRUQUddID0gewog I2luY2x1ZGUgInRjb3AvY21kdGFnbGlzdC5oIgpAQCAtNTcsNiArNTgsMjEgQEAgR2V0Q29tbWFu ZFRhZ05hbWVBbmRMZW4oQ29tbWFuZFRhZyBjb21tYW5kVGFnLCBTaXplICpsZW4pCiAJcmV0dXJu IHRhZ19iZWhhdmlvcltjb21tYW5kVGFnXS5uYW1lOwogfQogCitDb21tYW5kVGFnICoKK0dldENv bW1hbmRUYWdzRm9yRERMUmVwbChpbnQgKm5jb21tYW5kcykKK3sKKwlDb21tYW5kVGFnICpkZGxy ZXBsX2NvbW1hbmRzID0gcGFsbG9jMChDT01NQU5EX1RBR19ORVhUVEFHICogc2l6ZW9mKENvbW1h bmRUYWcpKTsKKwkqbmNvbW1hbmRzID0gMDsKKworCWZvcihpbnQgaSA9IDA7IGkgPCBDT01NQU5E X1RBR19ORVhUVEFHOyBpKyspCisJeworCQlpZiAodGFnX2JlaGF2aW9yW2ldLmRkbF9yZXBsaWNh dGlvbl9vaykKKwkJCWRkbHJlcGxfY29tbWFuZHNbKCpuY29tbWFuZHMpKytdID0gKENvbW1hbmRU YWcpIGk7CisJfQorCisJcmV0dXJuIGRkbHJlcGxfY29tbWFuZHM7Cit9CisKIGJvb2wKIGNvbW1h bmRfdGFnX2Rpc3BsYXlfcm93Y291bnQoQ29tbWFuZFRhZyBjb21tYW5kVGFnKQogewpAQCAtNzUs NiArOTEsMTIgQEAgY29tbWFuZF90YWdfdGFibGVfcmV3cml0ZV9vayhDb21tYW5kVGFnIGNvbW1h bmRUYWcpCiAJcmV0dXJuIHRhZ19iZWhhdmlvcltjb21tYW5kVGFnXS50YWJsZV9yZXdyaXRlX29r OwogfQogCitib29sCitjb21tYW5kX3RhZ19kZGxfcmVwbGljYXRpb25fb2soQ29tbWFuZFRhZyBj b21tYW5kVGFnKQoreworCXJldHVybiB0YWdfYmVoYXZpb3JbY29tbWFuZFRhZ10uZGRsX3JlcGxp Y2F0aW9uX29rOworfQorCiAvKgogICogU2VhcmNoIENvbW1hbmRUYWcgYnkgbmFtZQogICoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNvcC91 dGlsaXR5LmMKaW5kZXggYzBmN2YyOTc0Ny4uNzY2N2I5ZTM0YiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdGNvcC91dGlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKQEAg LTg5NSw3ICs4OTUsNyBAQCBzdGFuZGFyZF9Qcm9jZXNzVXRpbGl0eShQbGFubmVkU3RtdCAqcHN0 bXQsCiAKIAkJY2FzZSBUX0NyZWF0ZUV2ZW50VHJpZ1N0bXQ6CiAJCQkvKiBubyBldmVudCB0cmln Z2VycyBvbiBldmVudCB0cmlnZ2VycyAqLwotCQkJQ3JlYXRlRXZlbnRUcmlnZ2VyKChDcmVhdGVF dmVudFRyaWdTdG10ICopIHBhcnNldHJlZSk7CisJCQlDcmVhdGVFdmVudFRyaWdnZXIoKENyZWF0 ZUV2ZW50VHJpZ1N0bXQgKikgcGFyc2V0cmVlLCBmYWxzZSk7CiAJCQlicmVhazsKIAogCQljYXNl IFRfQWx0ZXJFdmVudFRyaWdTdG10OgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcmVsY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKaW5kZXgg OGEwODQ2M2MyYi4uZjMwMjJmMDhjMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCkBA IC01NzIwLDYgKzU3MjAsNyBAQCBSZWxhdGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9u IHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2MpCiAJCXB1YmRlc2MtPnB1YmFjdGlv bnMucHVidXBkYXRlIHw9IHB1YmZvcm0tPnB1YnVwZGF0ZTsKIAkJcHViZGVzYy0+cHViYWN0aW9u cy5wdWJkZWxldGUgfD0gcHViZm9ybS0+cHViZGVsZXRlOwogCQlwdWJkZXNjLT5wdWJhY3Rpb25z LnB1YnRydW5jYXRlIHw9IHB1YmZvcm0tPnB1YnRydW5jYXRlOworCQlwdWJkZXNjLT5wdWJhY3Rp b25zLnB1YmRkbF90YWJsZSB8PSBwdWJmb3JtLT5wdWJkZGxfdGFibGU7CiAKIAkJLyoKIAkJICog Q2hlY2sgaWYgYWxsIGNvbHVtbnMgcmVmZXJlbmNlZCBpbiB0aGUgZmlsdGVyIGV4cHJlc3Npb24g YXJlIHBhcnQKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDVkYWIxYmE5ZWEuLjMzNDcyNmNkMGQgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYwpAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfbGFyZ2VvYmplY3Rf ZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfbGFyZ2VvYmplY3RfbWV0YWRhdGFfZC5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfcHJvY19kLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNh dGlvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ190cmlnZ2VyX2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGVfZC5oIgpA QCAtNDA0Nyw2ICs0MDQ4LDcgQEAgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQsIGludCAq bnVtUHVibGljYXRpb25zKQogCWludAkJCWlfcHVidXBkYXRlOwogCWludAkJCWlfcHViZGVsZXRl OwogCWludAkJCWlfcHVidHJ1bmNhdGU7CisJaW50CQkJaV9wdWJkZGxfdGFibGU7CiAJaW50CQkJ aV9wdWJ2aWFyb290OwogCWludAkJCWksCiAJCQkJbnR1cHM7CkBAIC00MDYyLDIzICs0MDY0LDI5 IEBAIGdldFB1YmxpY2F0aW9ucyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVB1YmxpY2F0aW9ucykK IAlyZXNldFBRRXhwQnVmZmVyKHF1ZXJ5KTsKIAogCS8qIEdldCB0aGUgcHVibGljYXRpb25zLiAq LwotCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDEzMDAwMCkKKwlpZiAoZm91dC0+cmVtb3Rl VmVyc2lvbiA+PSAxNjAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJ CSAiU0VMRUNUIHAudGFibGVvaWQsIHAub2lkLCBwLnB1Ym5hbWUsICIKIAkJCQkJCQkgInAucHVi b3duZXIsICIKLQkJCQkJCQkgInAucHViYWxsdGFibGVzLCBwLnB1Ymluc2VydCwgcC5wdWJ1cGRh dGUsIHAucHViZGVsZXRlLCBwLnB1YnRydW5jYXRlLCBwLnB1YnZpYXJvb3QgIgorCQkJCQkJCSAi cC5wdWJhbGx0YWJsZXMsIHAucHViaW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUsIHAu cHVidHJ1bmNhdGUsIHAucHViZGRsX3RhYmxlLCBwLnB1YnZpYXJvb3QgIgorCQkJCQkJCSAiRlJP TSBwZ19wdWJsaWNhdGlvbiBwIik7CisJZWxzZSBpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAx MzAwMDApCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJCSAiU0VMRUNUIHAu dGFibGVvaWQsIHAub2lkLCBwLnB1Ym5hbWUsICIKKwkJCQkJCQkgInAucHVib3duZXIsICIKKwkJ CQkJCQkgInAucHViYWxsdGFibGVzLCBwLnB1Ymluc2VydCwgcC5wdWJ1cGRhdGUsIHAucHViZGVs ZXRlLCBwLnB1YnRydW5jYXRlLCBmYWxzZSBhcyBwLnB1YmRkbF90YWJsZSwgcC5wdWJ2aWFyb290 ICIKIAkJCQkJCQkgIkZST00gcGdfcHVibGljYXRpb24gcCIpOwogCWVsc2UgaWYgKGZvdXQtPnJl bW90ZVZlcnNpb24gPj0gMTEwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJ CQkJCQkgIlNFTEVDVCBwLnRhYmxlb2lkLCBwLm9pZCwgcC5wdWJuYW1lLCAiCiAJCQkJCQkJICJw LnB1Ym93bmVyLCAiCi0JCQkJCQkJICJwLnB1YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVi dXBkYXRlLCBwLnB1YmRlbGV0ZSwgcC5wdWJ0cnVuY2F0ZSwgZmFsc2UgQVMgcHVidmlhcm9vdCAi CisJCQkJCQkJICJwLnB1YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1 YmRlbGV0ZSwgcC5wdWJ0cnVuY2F0ZSwgZmFsc2UgYXMgcC5wdWJkZGxfdGFibGUsIGZhbHNlIEFT IHB1YnZpYXJvb3QgIgogCQkJCQkJCSAiRlJPTSBwZ19wdWJsaWNhdGlvbiBwIik7CiAJZWxzZQog CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgIlNFTEVDVCBwLnRhYmxlb2lk LCBwLm9pZCwgcC5wdWJuYW1lLCAiCiAJCQkJCQkJICJwLnB1Ym93bmVyLCAiCi0JCQkJCQkJICJw LnB1YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1YmRlbGV0ZSwgZmFs c2UgQVMgcHVidHJ1bmNhdGUsIGZhbHNlIEFTIHB1YnZpYXJvb3QgIgorCQkJCQkJCSAicC5wdWJh bGx0YWJsZXMsIHAucHViaW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUsIGZhbHNlIEFT IHB1YnRydW5jYXRlLCBmYWxzZSBhcyBwLnB1YmRkbF90YWJsZSwgZmFsc2UgQVMgcHVidmlhcm9v dCAiCiAJCQkJCQkJICJGUk9NIHBnX3B1YmxpY2F0aW9uIHAiKTsKIAogCXJlcyA9IEV4ZWN1dGVT cWxRdWVyeShmb3V0LCBxdWVyeS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKQEAgLTQwOTQsNiAr NDEwMiw3IEBAIGdldFB1YmxpY2F0aW9ucyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVB1YmxpY2F0 aW9ucykKIAlpX3B1YnVwZGF0ZSA9IFBRZm51bWJlcihyZXMsICJwdWJ1cGRhdGUiKTsKIAlpX3B1 YmRlbGV0ZSA9IFBRZm51bWJlcihyZXMsICJwdWJkZWxldGUiKTsKIAlpX3B1YnRydW5jYXRlID0g UFFmbnVtYmVyKHJlcywgInB1YnRydW5jYXRlIik7CisJaV9wdWJkZGxfdGFibGUgPSBQUWZudW1i ZXIocmVzLCAicHViZGRsX3RhYmxlIik7CiAJaV9wdWJ2aWFyb290ID0gUFFmbnVtYmVyKHJlcywg InB1YnZpYXJvb3QiKTsKIAogCXB1YmluZm8gPSBwZ19tYWxsb2MobnR1cHMgKiBzaXplb2YoUHVi bGljYXRpb25JbmZvKSk7CkBAIC00MTE3LDYgKzQxMjYsOCBAQCBnZXRQdWJsaWNhdGlvbnMoQXJj aGl2ZSAqZm91dCwgaW50ICpudW1QdWJsaWNhdGlvbnMpCiAJCQkoc3RyY21wKFBRZ2V0dmFsdWUo cmVzLCBpLCBpX3B1YmRlbGV0ZSksICJ0IikgPT0gMCk7CiAJCXB1YmluZm9baV0ucHVidHJ1bmNh dGUgPQogCQkJKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9wdWJ0cnVuY2F0ZSksICJ0Iikg PT0gMCk7CisJCXB1YmluZm9baV0ucHViZGRsX3RhYmxlID0KKwkJCShzdHJjbXAoUFFnZXR2YWx1 ZShyZXMsIGksIGlfcHViZGRsX3RhYmxlKSwgInQiKSA9PSAwKTsKIAkJcHViaW5mb1tpXS5wdWJ2 aWFyb290ID0KIAkJCShzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcHVidmlhcm9vdCksICJ0 IikgPT0gMCk7CiAKQEAgLTQxOTYsNyArNDIwNywxMCBAQCBkdW1wUHVibGljYXRpb24oQXJjaGl2 ZSAqZm91dCwgY29uc3QgUHVibGljYXRpb25JbmZvICpwdWJpbmZvKQogCQlmaXJzdCA9IGZhbHNl OwogCX0KIAotCWFwcGVuZFBRRXhwQnVmZmVyQ2hhcihxdWVyeSwgJ1wnJyk7CisJYXBwZW5kUFFF eHBCdWZmZXJTdHIocXVlcnksICInIik7CisKKwlpZiAocHViaW5mby0+cHViZGRsX3RhYmxlKQor CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgZGRsID0gJ3RhYmxlJyIpOwogCiAJaWYg KHB1YmluZm8tPnB1YnZpYXJvb3QpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBw dWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUiKTsKQEAgLTc5OTIsNiArODAwNiw3IEBA IGdldEV2ZW50VHJpZ2dlcnMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1FdmVudFRyaWdnZXJzKQog CiAJcXVlcnkgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOwogCisJLypTa2lwIGludGVybmFsbHkgY3Jl YXRlZCBldmVudCB0cmlnZ2VycyBieSBjaGVja2luZyBldnRpc2ludGVybmFsICovCiAJYXBwZW5k UFFFeHBCdWZmZXJTdHIocXVlcnksCiAJCQkJCQkgIlNFTEVDVCBlLnRhYmxlb2lkLCBlLm9pZCwg ZXZ0bmFtZSwgZXZ0ZW5hYmxlZCwgIgogCQkJCQkJICJldnRldmVudCwgZXZ0b3duZXIsICIKQEAg LTgwMDAsNiArODAxNSw3IEBAIGdldEV2ZW50VHJpZ2dlcnMoQXJjaGl2ZSAqZm91dCwgaW50ICpu dW1FdmVudFRyaWdnZXJzKQogCQkJCQkJICIgZnJvbSB1bm5lc3QoZXZ0dGFncykgYXMgdCh4KSks ICcsICcpIGFzIGV2dHRhZ3MsICIKIAkJCQkJCSAiZS5ldnRmb2lkOjpyZWdwcm9jIGFzIGV2dGZu YW1lICIKIAkJCQkJCSAiRlJPTSBwZ19ldmVudF90cmlnZ2VyIGUgIgorCQkJCQkJICJXSEVSRSBO T1QgZS5ldnRpc2ludGVybmFsICIKIAkJCQkJCSAiT1JERVIgQlkgZS5vaWQiKTsKIAogCXJlcyA9 IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBxdWVyeS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5oCmluZGV4IGJjOGYyZWMzNmQuLjc2NzNkMTUzYWEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNjIx LDYgKzYyMSw3IEBAIHR5cGVkZWYgc3RydWN0IF9QdWJsaWNhdGlvbkluZm8KIAlib29sCQlwdWJ1 cGRhdGU7CiAJYm9vbAkJcHViZGVsZXRlOwogCWJvb2wJCXB1YnRydW5jYXRlOworCWJvb2wJCXB1 YmRkbF90YWJsZTsKIAlib29sCQlwdWJ2aWFyb290OwogfSBQdWJsaWNhdGlvbkluZm87CiAKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsIGIvc3JjL2Jpbi9wZ19k dW1wL3QvMDAyX3BnX2R1bXAucGwKaW5kZXggMTU4NTIxODhjNC4uNWFjYmZhZWI4YiAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKKysrIGIvc3JjL2Jpbi9wZ19k dW1wL3QvMDAyX3BnX2R1bXAucGwKQEAgLTI5MTIsNyArMjkxMiw3IEBAIG15ICV0ZXN0cyA9ICgK IAkJY3JlYXRlX29yZGVyID0+IDUwLAogCQljcmVhdGVfc3FsID0+ICdDUkVBVEUgUFVCTElDQVRJ T04gcHViMgogCQkJCQkJIEZPUiBBTEwgVEFCTEVTCi0JCQkJCQkgV0lUSCAocHVibGlzaCA9IFwn XCcpOycsCisJCQkJCQkgV0lUSCAocHVibGlzaCA9IFwnXCcsIGRkbCA9IFwnXCcpOycsCiAJCXJl Z2V4cCA9PiBxci9eCiAJCQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWIyIEZPUiBBTEwgVEFCTEVT IFdJVEggKHB1Ymxpc2ggPSAnJyk7XEUKIAkJCS94bSwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf d2FsZHVtcC8uZ2l0aWdub3JlIGIvc3JjL2Jpbi9wZ193YWxkdW1wLy5naXRpZ25vcmUKaW5kZXgg ZWM1MWY0MWM3Ni4uNGRmNTY2MGI1MSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wLy5n aXRpZ25vcmUKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wLy5naXRpZ25vcmUKQEAgLTEwLDYgKzEw LDcgQEAKIC9naXN0ZGVzYy5jCiAvaGFzaGRlc2MuYwogL2hlYXBkZXNjLmMKKy9sb2dpY2FsZGRs bXNnZGVzYy5jCiAvbG9naWNhbG1zZ2Rlc2MuYwogL214YWN0ZGVzYy5jCiAvbmJ0ZGVzYy5jCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvcm1ncmRlc2MuYyBiL3NyYy9iaW4vcGdfd2Fs ZHVtcC9ybWdyZGVzYy5jCmluZGV4IDZiOGMxN2JiNGMuLmRhZjE3MzAyNTIgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfd2FsZHVtcC9ybWdyZGVzYy5jCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9y bWdyZGVzYy5jCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvZGJjb21tYW5k c194bG9nLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2VxdWVuY2UuaCIKICNpbmNsdWRlICJjb21t YW5kcy90YWJsZXNwYWNlLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vZGRsbWVzc2FnZS5oIgog I2luY2x1ZGUgInJlcGxpY2F0aW9uL21lc3NhZ2UuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9v cmlnaW4uaCIKICNpbmNsdWRlICJybWdyZGVzYy5oIgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCA5MzI1YTQ2YjhmLi43 NTBlYTE5ZGMxIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMv YmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtNjE4MCw3ICs2MTgwLDcgQEAgbGlzdFB1YmxpY2F0aW9u cyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCVBRRXhwQnVmZmVyRGF0YSBidWY7CiAJUEdyZXN1bHQg ICAqcmVzOwogCXByaW50UXVlcnlPcHQgbXlvcHQgPSBwc2V0LnBvcHQ7Ci0Jc3RhdGljIGNvbnN0 IGJvb2wgdHJhbnNsYXRlX2NvbHVtbnNbXSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2V9OworCXN0YXRpYyBjb25zdCBib29sIHRyYW5zbGF0 ZV9jb2x1bW5zW10gPSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2V9OwogCiAJaWYgKHBzZXQuc3ZlcnNpb24gPCAxMDAw MDApCiAJewpAQCAtNjIwNyw2ICs2MjA3LDEwIEBAIGxpc3RQdWJsaWNhdGlvbnMoY29uc3QgY2hh ciAqcGF0dGVybikKIAkJCQkJICBnZXR0ZXh0X25vb3AoIkluc2VydHMiKSwKIAkJCQkJICBnZXR0 ZXh0X25vb3AoIlVwZGF0ZXMiKSwKIAkJCQkJICBnZXR0ZXh0X25vb3AoIkRlbGV0ZXMiKSk7CisJ aWYgKHBzZXQuc3ZlcnNpb24gPj0gMTYwMDAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAor CQkJCQkJICAiLFxuICBwdWJkZGxfdGFibGUgQVMgXCIlc1wiIiwKKwkJCQkJCSAgZ2V0dGV4dF9u b29wKCJUYWJsZSBERExzIikpOwogCWlmIChwc2V0LnN2ZXJzaW9uID49IDExMDAwMCkKIAkJYXBw ZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCSAgIixcbiAgcHVidHJ1bmNhdGUgQVMgXCIlc1wi IiwKQEAgLTYzMDUsNiArNjMwOSw3IEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIg KnBhdHRlcm4pCiAJUEdyZXN1bHQgICAqcmVzOwogCWJvb2wJCWhhc19wdWJ0cnVuY2F0ZTsKIAli b29sCQloYXNfcHVidmlhcm9vdDsKKwlib29sCQloYXNfcHViZGRsOwogCiAJUFFFeHBCdWZmZXJE YXRhIHRpdGxlOwogCXByaW50VGFibGVDb250ZW50IGNvbnQ7CkBAIC02MzE5LDYgKzYzMjQsNyBA QCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQlyZXR1cm4gdHJ1 ZTsKIAl9CiAKKwloYXNfcHViZGRsID0gIChwc2V0LnN2ZXJzaW9uID49IDE2MDAwMCk7CiAJaGFz X3B1YnRydW5jYXRlID0gKHBzZXQuc3ZlcnNpb24gPj0gMTEwMDAwKTsKIAloYXNfcHVidmlhcm9v dCA9IChwc2V0LnN2ZXJzaW9uID49IDEzMDAwMCk7CiAKQEAgLTYzMjgsNiArNjMzNCw5IEBAIGRl c2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCQkJCSAgIlNFTEVDVCBv aWQsIHB1Ym5hbWUsXG4iCiAJCQkJCSAgIiAgcGdfY2F0YWxvZy5wZ19nZXRfdXNlcmJ5aWQocHVi b3duZXIpIEFTIG93bmVyLFxuIgogCQkJCQkgICIgIHB1YmFsbHRhYmxlcywgcHViaW5zZXJ0LCBw dWJ1cGRhdGUsIHB1YmRlbGV0ZSIpOworCWlmIChoYXNfcHViZGRsKQorCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cigmYnVmLAorCQkJCQkJCSAiLCBwdWJkZGxfdGFibGUiKTsKIAlpZiAoaGFzX3B1YnRy dW5jYXRlKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLAogCQkJCQkJCSAiLCBwdWJ0cnVu Y2F0ZSIpOwpAQCAtNjM4MSw2ICs2MzkwLDggQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3Qg Y2hhciAqcGF0dGVybikKIAkJYm9vbAkJcHViYWxsdGFibGVzID0gc3RyY21wKFBRZ2V0dmFsdWUo cmVzLCBpLCAzKSwgInQiKSA9PSAwOwogCQlwcmludFRhYmxlT3B0IG15b3B0ID0gcHNldC5wb3B0 LnRvcHQ7CiAKKwkJaWYgKGhhc19wdWJkZGwpCisJCQluY29scysrOwogCQlpZiAoaGFzX3B1YnRy dW5jYXRlKQogCQkJbmNvbHMrKzsKIAkJaWYgKGhhc19wdWJ2aWFyb290KQpAQCAtNjM5NSw2ICs2 NDA2LDggQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJcHJp bnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4dF9ub29wKCJJbnNlcnRzIiksIHRydWUsIGFs aWduKTsKIAkJcHJpbnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4dF9ub29wKCJVcGRhdGVz IiksIHRydWUsIGFsaWduKTsKIAkJcHJpbnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4dF9u b29wKCJEZWxldGVzIiksIHRydWUsIGFsaWduKTsKKwkJaWYgKGhhc19wdWJkZGwpCisJCQlwcmlu dFRhYmxlQWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0X25vb3AoIlRhYmxlIERETHMiKSwgdHJ1ZSwg YWxpZ24pOwogCQlpZiAoaGFzX3B1YnRydW5jYXRlKQogCQkJcHJpbnRUYWJsZUFkZEhlYWRlcigm Y29udCwgZ2V0dGV4dF9ub29wKCJUcnVuY2F0ZXMiKSwgdHJ1ZSwgYWxpZ24pOwogCQlpZiAoaGFz X3B1YnZpYXJvb3QpCkBAIC02NDA1LDEwICs2NDE4LDEyIEBAIGRlc2NyaWJlUHVibGljYXRpb25z KGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZh bHVlKHJlcywgaSwgNCksIGZhbHNlLCBmYWxzZSk7CiAJCXByaW50VGFibGVBZGRDZWxsKCZjb250 LCBQUWdldHZhbHVlKHJlcywgaSwgNSksIGZhbHNlLCBmYWxzZSk7CiAJCXByaW50VGFibGVBZGRD ZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgNiksIGZhbHNlLCBmYWxzZSk7Ci0JCWlmICho YXNfcHVidHJ1bmNhdGUpCisJCWlmIChoYXNfcHViZGRsKQogCQkJcHJpbnRUYWJsZUFkZENlbGwo JmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCA3KSwgZmFsc2UsIGZhbHNlKTsKLQkJaWYgKGhhc19w dWJ2aWFyb290KQorCQlpZiAoaGFzX3B1YnRydW5jYXRlKQogCQkJcHJpbnRUYWJsZUFkZENlbGwo JmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCA4KSwgZmFsc2UsIGZhbHNlKTsKKwkJaWYgKGhhc19w dWJ2aWFyb290KQorCQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBp LCA5KSwgZmFsc2UsIGZhbHNlKTsKIAogCQlpZiAoIXB1YmFsbHRhYmxlcykKIAkJewpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JtZ3JsaXN0LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv cm1ncmxpc3QuaAppbmRleCA0NjNiY2I2N2M1Li5hYmNiZTk3NTkzIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9hY2Nlc3Mvcm1ncmxpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvcm1ncmxp c3QuaApAQCAtNDcsMyArNDcsNCBAQCBQR19STUdSKFJNX0NPTU1JVF9UU19JRCwgIkNvbW1pdFRz IiwgY29tbWl0X3RzX3JlZG8sIGNvbW1pdF90c19kZXNjLCBjb21taXRfdHNfaQogUEdfUk1HUihS TV9SRVBMT1JJR0lOX0lELCAiUmVwbGljYXRpb25PcmlnaW4iLCByZXBsb3JpZ2luX3JlZG8sIHJl cGxvcmlnaW5fZGVzYywgcmVwbG9yaWdpbl9pZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TCkKIFBHX1JNR1IoUk1fR0VORVJJQ19JRCwgIkdlbmVyaWMiLCBnZW5lcmljX3JlZG8sIGdlbmVy aWNfZGVzYywgZ2VuZXJpY19pZGVudGlmeSwgTlVMTCwgTlVMTCwgZ2VuZXJpY19tYXNrLCBOVUxM KQogUEdfUk1HUihSTV9MT0dJQ0FMTVNHX0lELCAiTG9naWNhbE1lc3NhZ2UiLCBsb2dpY2FsbXNn X3JlZG8sIGxvZ2ljYWxtc2dfZGVzYywgbG9naWNhbG1zZ19pZGVudGlmeSwgTlVMTCwgTlVMTCwg TlVMTCwgbG9naWNhbG1zZ19kZWNvZGUpCitQR19STUdSKFJNX0xPR0lDQUxERExNU0dfSUQsICJM b2dpY2FsRERMTWVzc2FnZSIsIGxvZ2ljYWxkZGxtc2dfcmVkbywgbG9naWNhbGRkbG1zZ19kZXNj LCBsb2dpY2FsZGRsbXNnX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBOVUxMLCBsb2dpY2FsZGRsX2Rl Y29kZSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZXZlbnRfdHJpZ2dlci5o IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19ldmVudF90cmlnZ2VyLmgKaW5kZXggZTMwNTUwZjZl MS4uZjhmMDBlODhmYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19ldmVudF90 cmlnZ2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19ldmVudF90cmlnZ2VyLmgKQEAg LTM2LDYgKzM2LDcgQEAgQ0FUQUxPRyhwZ19ldmVudF90cmlnZ2VyLDM0NjYsRXZlbnRUcmlnZ2Vy UmVsYXRpb25JZCkKIAkJCQkJCQkJCQkJCSAqIGNhbGxlZCAqLwogCWNoYXIJCWV2dGVuYWJsZWQ7 CQkvKiB0cmlnZ2VyJ3MgZmlyaW5nIGNvbmZpZ3VyYXRpb24gV1JUCiAJCQkJCQkJCSAqIHNlc3Np b25fcmVwbGljYXRpb25fcm9sZSAqLworCWJvb2wJCWV2dGlzaW50ZXJuYWw7CS8qIHRyaWdnZXIg aXMgc3lzdGVtLWdlbmVyYXRlZCAqLwogCiAjaWZkZWYgQ0FUQUxPR19WQVJMRU4KIAl0ZXh0CQll dnR0YWdzWzFdOwkJLyogY29tbWFuZCBUQUdzIHRoaXMgZXZlbnQgdHJpZ2dlciB0YXJnZXRzICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCA3NmZmMjNiNzc5Li4wMTQxMTZmZjllIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTExMTQ1LDYgKzExMTQ1LDE0IEBACiAgIHByb25hbWUg PT4gJ3BnX2xvZ2ljYWxfZW1pdF9tZXNzYWdlJywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9wYXJh bGxlbCA9PiAndScsCiAgIHByb3JldHR5cGUgPT4gJ3BnX2xzbicsIHByb2FyZ3R5cGVzID0+ICdi b29sIHRleHQgYnl0ZWEnLAogICBwcm9zcmMgPT4gJ3BnX2xvZ2ljYWxfZW1pdF9tZXNzYWdlX2J5 dGVhJyB9LAoreyBvaWQgPT4gJzM4MTMnLCBkZXNjciA9PiAnZW1pdCBhIHRleHR1YWwgbG9naWNh bCBkZWNvZGluZyBtZXNzYWdlJywKKyAgcHJvbmFtZSA9PiAncGdfbG9naWNhbF9lbWl0X2RkbF9t ZXNzYWdlJywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9wYXJhbGxlbCA9PiAndScsCisgIHByb3Jl dHR5cGUgPT4gJ3BnX2xzbicsIHByb2FyZ3R5cGVzID0+ICdib29sIHRleHQgdGV4dCcsCisgIHBy b3NyYyA9PiAncGdfbG9naWNhbF9lbWl0X2RkbF9tZXNzYWdlX3RleHQnIH0sCit7IG9pZCA9PiAn MzgxNCcsIGRlc2NyID0+ICdlbWl0IGEgYmluYXJ5IGxvZ2ljYWwgZGVjb2RpbmcgbWVzc2FnZScs CisgIHByb25hbWUgPT4gJ3BnX2xvZ2ljYWxfZW1pdF9kZGxfbWVzc2FnZScsIHByb3ZvbGF0aWxl ID0+ICd2JywgcHJvcGFyYWxsZWwgPT4gJ3UnLAorICBwcm9yZXR0eXBlID0+ICdwZ19sc24nLCBw cm9hcmd0eXBlcyA9PiAndGV4dCByZWdjbGFzcyBpbnQ0IHRleHQnLAorICBwcm9zcmMgPT4gJ3Bn X2xvZ2ljYWxfZW1pdF9kZGxfbWVzc2FnZV9ieXRlYScgfSwKIAogIyBldmVudCB0cmlnZ2Vycwog eyBvaWQgPT4gJzM1NjYnLCBkZXNjciA9PiAnbGlzdCBvYmplY3RzIGRyb3BwZWQgYnkgdGhlIGN1 cnJlbnQgY29tbWFuZCcsCkBAIC0xMjA0OSw1ICsxMjA1NywxNyBAQAogeyBvaWQgPT4gJzQ2NDMn LCBkZXNjciA9PiAnZXhwYW5kIEpTT04gZm9ybWF0IERETCB0byBhIHBsYWluIHRleHQgRERMIGNv bW1hbmQnLAogICBwcm9uYW1lID0+ICdkZGxfZGVwYXJzZV9leHBhbmRfY29tbWFuZCcsIHByb3Jl dHR5cGUgPT4gJ3RleHQnLAogICBwcm9hcmd0eXBlcyA9PiAndGV4dCcsIHByb3NyYyA9PiAnZGRs X2RlcGFyc2VfZXhwYW5kX2NvbW1hbmQnIH0sCit7IG9pZCA9PiAnNDY0NCcsIGRlc2NyID0+ICd0 cmlnZ2VyIGZvciBkZGwgY29tbWFuZCBkZXBhcnNlIGVuZCcsCisgIHByb25hbWUgPT4gJ3B1Ymxp Y2F0aW9uX2RlcGFyc2VfZGRsX2NvbW1hbmRfZW5kJywgcHJvcmV0dHlwZSA9PiAnZXZlbnRfdHJp Z2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ3B1YmxpY2F0aW9uX2RlcGFy c2VfZGRsX2NvbW1hbmRfZW5kJyB9LAoreyBvaWQgPT4gJzQ2NDUnLCBkZXNjciA9PiAndHJpZ2dl ciBmb3IgZGRsIGNvbW1hbmQgZGVwYXJzZSBzdGFydCcsCisgIHByb25hbWUgPT4gJ3B1YmxpY2F0 aW9uX2RlcGFyc2VfZGRsX2NvbW1hbmRfc3RhcnQnLCBwcm9yZXR0eXBlID0+ICdldmVudF90cmln Z2VyJywKKyAgcHJvYXJndHlwZXMgPT4gJycsIHByb3NyYyA9PiAncHVibGljYXRpb25fZGVwYXJz ZV9kZGxfY29tbWFuZF9zdGFydCcgfSwKK3sgb2lkID0+ICc0NjQ2JywgZGVzY3IgPT4gJ3RyaWdn ZXIgZm9yIGRkbCBjb21tYW5kIGRlcGFyc2UgdGFibGUgcmV3cml0ZScsCisgIHByb25hbWUgPT4g J3B1YmxpY2F0aW9uX2RlcGFyc2VfdGFibGVfcmV3cml0ZScsIHByb3JldHR5cGUgPT4gJ2V2ZW50 X3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdwdWJsaWNhdGlvbl9k ZXBhcnNlX3RhYmxlX3Jld3JpdGUnIH0sCit7IG9pZCA9PiAnNDY0NycsIGRlc2NyID0+ICd0cmln Z2VyIGZvciBkZGwgY29tbWFuZCBkZXBhcnNlIHRhYmxlIGluaXQnLAorICBwcm9uYW1lID0+ICdw dWJsaWNhdGlvbl9kZXBhcnNlX3RhYmxlX2luaXRfd3JpdGUnLCBwcm9yZXR0eXBlID0+ICdldmVu dF90cmlnZ2VyJywKKyAgcHJvYXJndHlwZXMgPT4gJycsIHByb3NyYyA9PiAncHVibGljYXRpb25f ZGVwYXJzZV90YWJsZV9pbml0X3dyaXRlJyB9LAogCiBdCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uLmgKaW5kZXggNmVjYWEyYTAxZS4uMzAzZjU0MTJkOCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHVibGljYXRpb24uaApAQCAtMTgsOCArMTgsMTYgQEAKICNkZWZpbmUgUEdfUFVCTElDQVRJ T05fSAogCiAjaW5jbHVkZSAiY2F0YWxvZy9nZW5ia2kuaCIKLSNpbmNsdWRlICJjYXRhbG9nL29i amVjdGFkZHJlc3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uX2QuaCIKKyNp bmNsdWRlICJub2Rlcy9wZ19saXN0LmgiCisKKy8qIFB1YmxpY2F0aW9uIHRyaWdnZXIgZXZlbnRz ICovCisjZGVmaW5lIFBVQl9UUklHX0RETF9DTURfU1RBUlQgImRkbF9jb21tYW5kX3N0YXJ0Igor I2RlZmluZSBQVUJfVFJJR19ERExfQ01EX0VORCAiZGRsX2NvbW1hbmRfZW5kIgorI2RlZmluZSBQ VUJfVFJJR19UQkxfUkVXUklURSAidGFibGVfcmV3cml0ZSIKKworLyogUHVibGljYXRpb24gZXZl bnQgdHJpZ2dlciBwcmVmaXggKi8KKyNkZWZpbmUgUFVCX0VWRU5UX1RSSUdfRk9STUFUICJwZ19k ZXBhcnNlX3RyaWdfJXNfJXUiCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqCQlwZ19wdWJsaWNh dGlvbiBkZWZpbml0aW9uLiAgY3BwIHR1cm5zIHRoaXMgaW50bwpAQCAtNTQsNiArNjIsOSBAQCBD QVRBTE9HKHBnX3B1YmxpY2F0aW9uLDYxMDQsUHVibGljYXRpb25SZWxhdGlvbklkKQogCiAJLyog dHJ1ZSBpZiBwYXJ0aXRpb24gY2hhbmdlcyBhcmUgcHVibGlzaGVkIHVzaW5nIHJvb3Qgc2NoZW1h ICovCiAJYm9vbAkJcHVidmlhcm9vdDsKKworCS8qIHRydWUgaWYgdGFibGUgZGRscyBhcmUgcHVi bGlzaGVkICovCisJYm9vbAkJcHViZGRsX3RhYmxlOwogfSBGb3JtRGF0YV9wZ19wdWJsaWNhdGlv bjsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQpAQCAtNzIsNiArODMsNyBAQCB0eXBlZGVmIHN0cnVj dCBQdWJsaWNhdGlvbkFjdGlvbnMKIAlib29sCQlwdWJ1cGRhdGU7CiAJYm9vbAkJcHViZGVsZXRl OwogCWJvb2wJCXB1YnRydW5jYXRlOworCWJvb2wJCXB1YmRkbF90YWJsZTsKIH0gUHVibGljYXRp b25BY3Rpb25zOwogCiB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvbkRlc2MKQEAgLTEwMywxMyAr MTE1LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb24KIAlQdWJsaWNhdGlvbkFjdGlvbnMg cHViYWN0aW9uczsKIH0gUHVibGljYXRpb247CiAKLXR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9u UmVsSW5mbwotewotCVJlbGF0aW9uCXJlbGF0aW9uOwotCU5vZGUJICAgKndoZXJlQ2xhdXNlOwot CUxpc3QJICAgKmNvbHVtbnM7Ci19IFB1YmxpY2F0aW9uUmVsSW5mbzsKLQogZXh0ZXJuIFB1Ymxp Y2F0aW9uICpHZXRQdWJsaWNhdGlvbihPaWQgcHViaWQpOwogZXh0ZXJuIFB1YmxpY2F0aW9uICpH ZXRQdWJsaWNhdGlvbkJ5TmFtZShjb25zdCBjaGFyICpwdWJuYW1lLCBib29sIG1pc3Npbmdfb2sp OwogZXh0ZXJuIExpc3QgKkdldFJlbGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxpZCk7CkBAIC0x NDUsMTQgKzE1MCw2IEBAIGV4dGVybiBMaXN0ICpHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlv bnMoTGlzdCAqcmVzdWx0LAogZXh0ZXJuIE9pZAlHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0 aW9uKE9pZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9ycywKIAkJCQkJCQkJCQkJaW50ICphbmNlc3Rv cl9sZXZlbCk7CiAKLWV4dGVybiBib29sIGlzX3B1Ymxpc2hhYmxlX3JlbGF0aW9uKFJlbGF0aW9u IHJlbCk7CiBleHRlcm4gYm9vbCBpc19zY2hlbWFfcHVibGljYXRpb24oT2lkIHB1YmlkKTsKLWV4 dGVybiBPYmplY3RBZGRyZXNzIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1 YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAotCQkJCQkJCQkJCQkgIGJvb2wgaWZfbm90X2V4aXN0cyk7 Ci1leHRlcm4gT2JqZWN0QWRkcmVzcyBwdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwg T2lkIHNjaGVtYWlkLAotCQkJCQkJCQkJCQlib29sIGlmX25vdF9leGlzdHMpOwotCi1leHRlcm4g Qml0bWFwc2V0ICpwdWJfY29sbGlzdF90b19iaXRtYXBzZXQoQml0bWFwc2V0ICpjb2x1bW5zLCBE YXR1bSBwdWJjb2xzLAotCQkJCQkJCQkJCSAgIE1lbW9yeUNvbnRleHQgbWN4dCk7CiAKICNlbmRp ZgkJCQkJCQkvKiBQR19QVUJMSUNBVElPTl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j b21tYW5kcy9ldmVudF90cmlnZ2VyLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9ldmVudF90cmln Z2VyLmgKaW5kZXggMjhiMzQ4NmI5ZS4uMzkyNzAzMWEyZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V2 ZW50X3RyaWdnZXIuaApAQCAtNzMsNiArNzMsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgU1FMRHJvcE9i amVjdAogI2RlZmluZSBBVF9SRVdSSVRFX0NPTFVNTl9SRVdSSVRFCQkweDA0CiAjZGVmaW5lIEFU X1JFV1JJVEVfQUNDRVNTX01FVEhPRAkJMHgwOAogCisvKiBUcmlnZ2VyIGV2ZW50cyAqLworI2Rl ZmluZSBUUklHX0RETF9DTURfU1RBUlQgImRkbF9jb21tYW5kX3N0YXJ0IgorI2RlZmluZSBUUklH X0RETF9DTURfRU5EICJkZGxfY29tbWFuZF9lbmQiCisjZGVmaW5lIFRSSUdfVEJMX1JFV1JJVEUg InRhYmxlX3Jld3JpdGUiCisjZGVmaW5lIFRSSUdfVEJMX0NNRF9EUk9QICJzcWxfZHJvcCIKKwog LyoKICAqIEV2ZW50VHJpZ2dlckRhdGEgaXMgdGhlIG5vZGUgdHlwZSB0aGF0IGlzIHBhc3NlZCBh cyBmbWdyICJjb250ZXh0IiBpbmZvCiAgKiB3aGVuIGEgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRo ZSBldmVudCB0cmlnZ2VyIG1hbmFnZXIuCkBAIC04MCw3ICs4Niw3IEBAIHR5cGVkZWYgc3RydWN0 IFNRTERyb3BPYmplY3QKICNkZWZpbmUgQ0FMTEVEX0FTX0VWRU5UX1RSSUdHRVIoZmNpbmZvKSBc CiAJKChmY2luZm8pLT5jb250ZXh0ICE9IE5VTEwgJiYgSXNBKChmY2luZm8pLT5jb250ZXh0LCBF dmVudFRyaWdnZXJEYXRhKSkKIAotZXh0ZXJuIE9pZAlDcmVhdGVFdmVudFRyaWdnZXIoQ3JlYXRl RXZlbnRUcmlnU3RtdCAqc3RtdCk7CitleHRlcm4gT2lkCUNyZWF0ZUV2ZW50VHJpZ2dlcihDcmVh dGVFdmVudFRyaWdTdG10ICpzdG10LCBib29sIGlzX2ludGVybmFsKTsKIGV4dGVybiBPaWQJZ2V0 X2V2ZW50X3RyaWdnZXJfb2lkKGNvbnN0IGNoYXIgKnRyaWduYW1lLCBib29sIG1pc3Npbmdfb2sp OwogCiBleHRlcm4gT2lkCUFsdGVyRXZlbnRUcmlnZ2VyKEFsdGVyRXZlbnRUcmlnU3RtdCAqc3Rt dCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaCBi L3NyYy9pbmNsdWRlL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oCmluZGV4IDcwZDVlMzY4MGEu LmEzZmNhOWU2NGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3B1YmxpY2F0aW9u Y21kcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oCkBAIC0y Miw2ICsyMiwxMyBAQAogLyogU2FtZSBhcyBNQVhOVU1NRVNTQUdFUyBpbiBzaW52YWxhZHQuYyAq LwogI2RlZmluZSBNQVhfUkVMQ0FDSEVfSU5WQUxfTVNHUyA0MDk2CiAKK3R5cGVkZWYgc3RydWN0 IFB1YmxpY2F0aW9uUmVsSW5mbworeworCVJlbGF0aW9uCXJlbGF0aW9uOworCU5vZGUJICAgKndo ZXJlQ2xhdXNlOworCUxpc3QJICAgKmNvbHVtbnM7Cit9IFB1YmxpY2F0aW9uUmVsSW5mbzsKKwog ZXh0ZXJuIE9iamVjdEFkZHJlc3MgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRl LCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpOwogZXh0ZXJuIHZvaWQgQWx0ZXJQdWJsaWNh dGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KTsKIGV4 dGVybiB2b2lkIFJlbW92ZVB1YmxpY2F0aW9uQnlJZChPaWQgcHViaWQpOwpAQCAtMzUsNSArNDIs MTIgQEAgZXh0ZXJuIGJvb2wgcHViX3JmX2NvbnRhaW5zX2ludmFsaWRfY29sdW1uKE9pZCBwdWJp ZCwgUmVsYXRpb24gcmVsYXRpb24sCiAJCQkJCQkJCQkJICAgTGlzdCAqYW5jZXN0b3JzLCBib29s IHB1YnZpYXJvb3QpOwogZXh0ZXJuIGJvb2wgcHViX2NvbGxpc3RfY29udGFpbnNfaW52YWxpZF9j b2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJCQkJCQkJCUxpc3QgKmFu Y2VzdG9ycywgYm9vbCBwdWJ2aWFyb290KTsKK2V4dGVybiBCaXRtYXBzZXQgKnB1Yl9jb2xsaXN0 X3RvX2JpdG1hcHNldChCaXRtYXBzZXQgKmNvbHVtbnMsIERhdHVtIHB1YmNvbHMsCisJCQkJCQkJ CQkJICAgTWVtb3J5Q29udGV4dCBtY3h0KTsKK2V4dGVybiBPYmplY3RBZGRyZXNzIHB1YmxpY2F0 aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAorCQkJ CQkJCQkJCQkgIGJvb2wgaWZfbm90X2V4aXN0cyk7CitleHRlcm4gT2JqZWN0QWRkcmVzcyBwdWJs aWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwgT2lkIHNjaGVtYWlkLAorCQkJCQkJCQkJCQli b29sIGlmX25vdF9leGlzdHMpOworZXh0ZXJuIGJvb2wgaXNfcHVibGlzaGFibGVfcmVsYXRpb24o UmVsYXRpb24gcmVsKTsKIAogI2VuZGlmCQkJCQkJCS8qIFBVQkxJQ0FUSU9OQ01EU19IICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmggYi9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uZTUzMGVhNmQyNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL2RkbG1lc3NhZ2UuaApAQCAtMCwwICsxLDYwIEBACisvKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqIGRkbG1lc3NhZ2UuaAorICoJICAgRXhwb3J0cyBmcm9tIHJlcGxpY2F0aW9uL2xvZ2lj YWwvZGRsbWVzc2FnZS5jCisgKgorICogQ29weXJpZ2h0IChjKSAyMDIzLCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2Rk bG1lc3NhZ2UuaAorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgUEdfTE9HSUNBTF9E RExfTUVTU0FHRV9ICisjZGVmaW5lIFBHX0xPR0lDQUxfRERMX01FU1NBR0VfSAorCisjaW5jbHVk ZSAiYWNjZXNzL3hsb2cuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKKyNpbmNsdWRl ICJhY2Nlc3MveGxvZ3JlYWRlci5oIgorI2luY2x1ZGUgIm5vZGVzL25vZGVzLmgiCisKKworLyoK KyAqIFN1cHBvcnQgZm9yIGtlZXBpbmcgdHJhY2sgb2YgZGVwYXJzZWQgY29tbWFuZHMuCisgKi8K K3R5cGVkZWYgZW51bSBEZXBhcnNlZENvbW1hbmRUeXBlCit7CisJRENUX09iamVjdENyZWF0ZSwK KwlEQ1RfT2JqZWN0RHJvcCwKKwlEQ1RfU2ltcGxlQ21kLAorCURDVF9UYWJsZUFsdGVyLAorCURD VF9UYWJsZURyb3BFbmQsCisJRENUX1RhYmxlRHJvcFN0YXJ0Cit9IERlcGFyc2VkQ29tbWFuZFR5 cGU7CisKKy8qCisgKiBHZW5lcmljIGxvZ2ljYWwgZGVjb2RpbmcgRERMIG1lc3NhZ2Ugd2FsIHJl Y29yZC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgeGxfbG9naWNhbF9kZGxfbWVzc2FnZQoreworCU9p ZAkJCWRiSWQ7CQkJLyogZGF0YWJhc2UgT2lkIGVtaXR0ZWQgZnJvbSAqLworCVNpemUJCXByZWZp eF9zaXplOwkvKiBsZW5ndGggb2YgcHJlZml4IGluY2x1ZGluZyBudWxsIHRlcm1pbmF0b3IgKi8K KwlPaWQJCQlyZWxpZDsJCQkvKiBpZCBvZiB0aGUgdGFibGUgKi8KKwlEZXBhcnNlZENvbW1hbmRU eXBlIGNtZHR5cGU7CS8qIHR5cGUgb2Ygc3FsIGNvbW1hbmQgKi8KKwlTaXplCQltZXNzYWdlX3Np emU7CS8qIHNpemUgb2YgdGhlIG1lc3NhZ2UgKi8KKworCS8qCisJICogcGF5bG9hZCwgaW5jbHVk aW5nIG51bGwtdGVybWluYXRlZCBwcmVmaXggb2YgbGVuZ3RoIHByZWZpeF9zaXplCisJICovCisJ Y2hhcgkJbWVzc2FnZVtGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOworfSB4bF9sb2dpY2FsX2RkbF9t ZXNzYWdlOworCisjZGVmaW5lIFNpemVPZkxvZ2ljYWxERExNZXNzYWdlCShvZmZzZXRvZih4bF9s b2dpY2FsX2RkbF9tZXNzYWdlLCBtZXNzYWdlKSkKKworZXh0ZXJuIFhMb2dSZWNQdHIgTG9nTG9n aWNhbERETE1lc3NhZ2UoY29uc3QgY2hhciAqcHJlZml4LCBPaWQgcmVsaWQsIERlcGFyc2VkQ29t bWFuZFR5cGUgY21kdHlwZSwKKwkJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKmRkbF9tZXNzYWdlLCBz aXplX3Qgc2l6ZSk7CisKKy8qIFJNR1IgQVBJKi8KKyNkZWZpbmUgWExPR19MT0dJQ0FMX0RETF9N RVNTQUdFCTB4MDAKK3ZvaWQJCWxvZ2ljYWxkZGxtc2dfcmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJl Y29yZCk7Cit2b2lkCQlsb2dpY2FsZGRsbXNnX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFk ZXJTdGF0ZSAqcmVjb3JkKTsKK2NvbnN0IGNoYXIgKmxvZ2ljYWxkZGxtc2dfaWRlbnRpZnkodWlu dDggaW5mbyk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v ZGVjb2RlLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZWNvZGUuaAppbmRleCAxNGZhOTIx YWI0Li5jOWFjNzA4ZDMyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZWNv ZGUuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZWNvZGUuaApAQCAtMjcsNiArMjcs NyBAQCBleHRlcm4gdm9pZCBoZWFwMl9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4 LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpOwogZXh0ZXJuIHZvaWQgeGFjdF9kZWNvZGUoTG9naWNh bERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpOwogZXh0ZXJuIHZv aWQgc3RhbmRieV9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3Jk QnVmZmVyICpidWYpOwogZXh0ZXJuIHZvaWQgbG9naWNhbG1zZ19kZWNvZGUoTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpOworZXh0ZXJuIHZvaWQgbG9n aWNhbGRkbF9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVm ZmVyICpidWYpOwogCiBleHRlcm4gdm9pZCBMb2dpY2FsRGVjb2RpbmdQcm9jZXNzUmVjb3JkKExv Z2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJCQkJCQkgWExvZ1JlYWRlclN0YXRlICpy ZWNvcmQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3Rv LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaAppbmRleCAwZWEyZGY1 MDg4Li41ZmIzYmFhZWIxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dp Y2FscHJvdG8uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaApA QCAtNjYsNiArNjYsNyBAQCB0eXBlZGVmIGVudW0gTG9naWNhbFJlcE1zZ1R5cGUKIAlMT0dJQ0FM X1JFUF9NU0dfUkVMQVRJT04gPSAnUicsCiAJTE9HSUNBTF9SRVBfTVNHX1RZUEUgPSAnWScsCiAJ TE9HSUNBTF9SRVBfTVNHX01FU1NBR0UgPSAnTScsCisJTE9HSUNBTF9SRVBfTVNHX0RETCA9ICdM JywKIAlMT0dJQ0FMX1JFUF9NU0dfQkVHSU5fUFJFUEFSRSA9ICdiJywKIAlMT0dJQ0FMX1JFUF9N U0dfUFJFUEFSRSA9ICdQJywKIAlMT0dJQ0FMX1JFUF9NU0dfQ09NTUlUX1BSRVBBUkVEID0gJ0sn LApAQCAtMjQ2LDYgKzI0Nyw5IEBAIGV4dGVybiBMaXN0ICpsb2dpY2FscmVwX3JlYWRfdHJ1bmNh dGUoU3RyaW5nSW5mbyBpbiwKIAkJCQkJCQkJCSAgYm9vbCAqY2FzY2FkZSwgYm9vbCAqcmVzdGFy dF9zZXFzKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfbWVzc2FnZShTdHJpbmdJbmZv IG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAogCQkJCQkJCQkJIGJvb2wg dHJhbnNhY3Rpb25hbCwgY29uc3QgY2hhciAqcHJlZml4LCBTaXplIHN6LCBjb25zdCBjaGFyICpt ZXNzYWdlKTsKK2V4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfZGRsKFN0cmluZ0luZm8gb3V0 LCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkJCQkJCQljb25zdCBjaGFyICpwcmVmaXgsIFNpemUgc3os IGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworZXh0ZXJuIGNoYXIgKmxvZ2ljYWxyZXBfcmVhZF9kZGwo U3RyaW5nSW5mbyBpbiwgWExvZ1JlY1B0ciAqbHNuLCBjb25zdCBjaGFyICoqcHJlZml4LCBTaXpl ICpzeik7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3JlbChTdHJpbmdJbmZvIG91dCwg VHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJCSBSZWxhdGlvbiByZWwsIEJpdG1hcHNldCAqY29s dW1ucyk7CiBleHRlcm4gTG9naWNhbFJlcFJlbGF0aW9uICpsb2dpY2FscmVwX3JlYWRfcmVsKFN0 cmluZ0luZm8gaW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3V0cHV0 X3BsdWdpbi5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3V0cHV0X3BsdWdpbi5oCmluZGV4 IDNhYzY3MjkzODYuLjJhZDk2ZDM3NGEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL291dHB1dF9wbHVnaW4uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vdXRwdXRf cGx1Z2luLmgKQEAgLTkwLDYgKzkwLDE4IEBAIHR5cGVkZWYgdm9pZCAoKkxvZ2ljYWxEZWNvZGVN ZXNzYWdlQ0IpIChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkJCQkJ CVNpemUgbWVzc2FnZV9zaXplLAogCQkJCQkJCQkJCWNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogCisv KgorICogQ2FsbGJhY2sgZm9yIHRoZSBsb2dpY2FsIGRlY29kaW5nIERETCBtZXNzYWdlcy4KKyAq LwordHlwZWRlZiB2b2lkICgqTG9naWNhbERlY29kZURETE1lc3NhZ2VDQikgKHN0cnVjdCBMb2dp Y2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCisJCQkJCQkJCQkJICAgUmVvcmRlckJ1ZmZlclRYTiAq dHhuLAorCQkJCQkJCQkJCSAgIFhMb2dSZWNQdHIgbWVzc2FnZV9sc24sCisJCQkJCQkJCQkJICAg Y29uc3QgY2hhciAqcHJlZml4LAorCQkJCQkJCQkJCSAgIE9pZCByZWxpZCwKKwkJCQkJCQkJCQkg ICBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJCQkJCQkJCQkJICAgU2l6ZSBtZXNzYWdl X3NpemUsCisJCQkJCQkJCQkJICAgY29uc3QgY2hhciAqbWVzc2FnZSk7CisKIC8qCiAgKiBGaWx0 ZXIgY2hhbmdlcyBieSBvcmlnaW4uCiAgKi8KQEAgLTIwMSw2ICsyMTMsMTkgQEAgdHlwZWRlZiB2 b2lkICgqTG9naWNhbERlY29kZVN0cmVhbU1lc3NhZ2VDQikgKHN0cnVjdCBMb2dpY2FsRGVjb2Rp bmdDb250ZXh0ICpjdHgKIAkJCQkJCQkJCQkJICBTaXplIG1lc3NhZ2Vfc2l6ZSwKIAkJCQkJCQkJ CQkJICBjb25zdCBjaGFyICptZXNzYWdlKTsKIAorLyoKKyAqIENhbGxiYWNrIGZvciBzdHJlYW1p bmcgbG9naWNhbCBkZWNvZGluZyBEREwgbWVzc2FnZXMgZnJvbSBpbi1wcm9ncmVzcworICogdHJh bnNhY3Rpb25zLgorICovCit0eXBlZGVmIHZvaWQgKCpMb2dpY2FsRGVjb2RlU3RyZWFtRERMTWVz c2FnZUNCKSAoc3RydWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKKwkJCQkJCQkJCQkJ CSBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJCQkJCQkgWExvZ1JlY1B0ciBtZXNzYWdl X2xzbiwKKwkJCQkJCQkJCQkJCSBjb25zdCBjaGFyICpwcmVmaXgsCisJCQkJCQkJCQkJCQkgT2lk IHJlbGlkLAorCQkJCQkJCQkJCQkJIERlcGFyc2VkQ29tbWFuZFR5cGUgY21kdHlwZSwKKwkJCQkJ CQkJCQkJCSBTaXplIG1lc3NhZ2Vfc2l6ZSwKKwkJCQkJCQkJCQkJCSBjb25zdCBjaGFyICptZXNz YWdlKTsKKwogLyoKICAqIENhbGxiYWNrIGZvciBzdHJlYW1pbmcgdHJ1bmNhdGVzIGZyb20gaW4t cHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLgogICovCkBAIC0yMjEsNiArMjQ2LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgT3V0cHV0UGx1Z2luQ2FsbGJhY2tzCiAJTG9naWNhbERlY29kZVRydW5jYXRlQ0IgdHJ1 bmNhdGVfY2I7CiAJTG9naWNhbERlY29kZUNvbW1pdENCIGNvbW1pdF9jYjsKIAlMb2dpY2FsRGVj b2RlTWVzc2FnZUNCIG1lc3NhZ2VfY2I7CisJTG9naWNhbERlY29kZURETE1lc3NhZ2VDQiBkZGxf Y2I7CiAJTG9naWNhbERlY29kZUZpbHRlckJ5T3JpZ2luQ0IgZmlsdGVyX2J5X29yaWdpbl9jYjsK IAlMb2dpY2FsRGVjb2RlU2h1dGRvd25DQiBzaHV0ZG93bl9jYjsKIApAQCAtMjM5LDYgKzI2NSw3 IEBAIHR5cGVkZWYgc3RydWN0IE91dHB1dFBsdWdpbkNhbGxiYWNrcwogCUxvZ2ljYWxEZWNvZGVT dHJlYW1Db21taXRDQiBzdHJlYW1fY29tbWl0X2NiOwogCUxvZ2ljYWxEZWNvZGVTdHJlYW1DaGFu Z2VDQiBzdHJlYW1fY2hhbmdlX2NiOwogCUxvZ2ljYWxEZWNvZGVTdHJlYW1NZXNzYWdlQ0Igc3Ry ZWFtX21lc3NhZ2VfY2I7CisJTG9naWNhbERlY29kZVN0cmVhbURETE1lc3NhZ2VDQiBzdHJlYW1f ZGRsX2NiOwogCUxvZ2ljYWxEZWNvZGVTdHJlYW1UcnVuY2F0ZUNCIHN0cmVhbV90cnVuY2F0ZV9j YjsKIH0gT3V0cHV0UGx1Z2luQ2FsbGJhY2tzOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9wZ291dHB1dC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQu aAppbmRleCBiNGE4MDE1NDAzLi5hMmNmOTliNGU0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9wZ291dHB1dC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0 cHV0LmgKQEAgLTI1LDYgKzI1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUEdPdXRwdXREYXRhCiAJdWlu dDMyCQlwcm90b2NvbF92ZXJzaW9uOwogCUxpc3QJICAgKnB1YmxpY2F0aW9uX25hbWVzOwogCUxp c3QJICAgKnB1YmxpY2F0aW9uczsKKwlMaXN0CSAgICpkZWxldGVkX3JlbGlkczsKIAlib29sCQli aW5hcnk7CiAJY2hhcgkJc3RyZWFtaW5nOwogCWJvb2wJCW1lc3NhZ2VzOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCmluZGV4IDFiOWRiMjJhY2IuLjJiMzdjOTZjMWYgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAorKysgYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKQEAgLTExLDYgKzExLDggQEAK IAogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJsaWIvaWxpc3Qu aCIKKyNpbmNsdWRlICJub2Rlcy9ub2Rlcy5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2RkbG1l c3NhZ2UuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NpbnZhbC5oIgogI2luY2x1ZGUgInV0aWxzL2hz ZWFyY2guaCIKICNpbmNsdWRlICJ1dGlscy9yZWxjYWNoZS5oIgpAQCAtNjYsNiArNjgsNyBAQCB0 eXBlZGVmIGVudW0gUmVvcmRlckJ1ZmZlckNoYW5nZVR5cGUKIAlSRU9SREVSX0JVRkZFUl9DSEFO R0VfVVBEQVRFLAogCVJFT1JERVJfQlVGRkVSX0NIQU5HRV9ERUxFVEUsCiAJUkVPUkRFUl9CVUZG RVJfQ0hBTkdFX01FU1NBR0UsCisJUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0RETCwKIAlSRU9SREVS X0JVRkZFUl9DSEFOR0VfSU5WQUxJREFUSU9OLAogCVJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlRF Uk5BTF9TTkFQU0hPVCwKIAlSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5URVJOQUxfQ09NTUFORF9J RCwKQEAgLTEzOSw2ICsxNDIsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVvcmRlckJ1ZmZlckNoYW5n ZQogCQkJY2hhcgkgICAqbWVzc2FnZTsKIAkJfQkJCW1zZzsKIAorCQkvKiBEREwgKi8KKwkJc3Ry dWN0CisJCXsKKwkJCWNoYXIJICAgKnByZWZpeDsKKwkJCVNpemUJCW1lc3NhZ2Vfc2l6ZTsKKwkJ CWNoYXIJICAgKm1lc3NhZ2U7CisJCQlPaWQJCQlyZWxpZDsKKwkJCURlcGFyc2VkQ29tbWFuZFR5 cGUgY21kdHlwZTsKKwkJfQkJCWRkbDsKKwogCQkvKiBOZXcgc25hcHNob3QsIHNldCB3aGVuIGFj dGlvbiA9PSAqX0lOVEVSTkFMX1NOQVBTSE9UICovCiAJCVNuYXBzaG90CXNuYXBzaG90OwogCkBA IC00NzAsNiArNDgzLDE2IEBAIHR5cGVkZWYgdm9pZCAoKlJlb3JkZXJCdWZmZXJNZXNzYWdlQ0Ip IChSZW9yZGVyQnVmZmVyICpyYiwKIAkJCQkJCQkJCQljb25zdCBjaGFyICpwcmVmaXgsIFNpemUg c3osCiAJCQkJCQkJCQkJY29uc3QgY2hhciAqbWVzc2FnZSk7CiAKKy8qIERETCBtZXNzYWdlIGNh bGxiYWNrIHNpZ25hdHVyZSAqLwordHlwZWRlZiB2b2lkICgqUmVvcmRlckJ1ZmZlckRETE1lc3Nh Z2VDQikgKFJlb3JkZXJCdWZmZXIgKnJiLAorCQkJCQkJCQkJCSAgIFJlb3JkZXJCdWZmZXJUWE4g KnR4biwKKwkJCQkJCQkJCQkgICBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLAorCQkJCQkJCQkJCSAg IGNvbnN0IGNoYXIgKnByZWZpeCwKKwkJCQkJCQkJCQkgICBPaWQgcmVsaWQsCisJCQkJCQkJCQkJ ICAgRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLAorCQkJCQkJCQkJCSAgIFNpemUgc3osCisJ CQkJCQkJCQkJICAgY29uc3QgY2hhciAqbWVzc2FnZSk7CisKIC8qIGJlZ2luIHByZXBhcmUgY2Fs bGJhY2sgc2lnbmF0dXJlICovCiB0eXBlZGVmIHZvaWQgKCpSZW9yZGVyQnVmZmVyQmVnaW5QcmVw YXJlQ0IpIChSZW9yZGVyQnVmZmVyICpyYiwKIAkJCQkJCQkJCQkJIFJlb3JkZXJCdWZmZXJUWE4g KnR4bik7CkBAIC01MzYsNiArNTU5LDE3IEBAIHR5cGVkZWYgdm9pZCAoKlJlb3JkZXJCdWZmZXJT dHJlYW1NZXNzYWdlQ0IpICgKIAkJCQkJCQkJCQkJICBjb25zdCBjaGFyICpwcmVmaXgsIFNpemUg c3osCiAJCQkJCQkJCQkJCSAgY29uc3QgY2hhciAqbWVzc2FnZSk7CiAKKy8qIHN0cmVhbSBEREwg bWVzc2FnZSBjYWxsYmFjayBzaWduYXR1cmUgKi8KK3R5cGVkZWYgdm9pZCAoKlJlb3JkZXJCdWZm ZXJTdHJlYW1ERExNZXNzYWdlQ0IpICgKKwkJCQkJCQkJCQkJCSBSZW9yZGVyQnVmZmVyICpyYiwK KwkJCQkJCQkJCQkJCSBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJCQkJCQkgWExvZ1Jl Y1B0ciBtZXNzYWdlX2xzbiwKKwkJCQkJCQkJCQkJCSBjb25zdCBjaGFyICpwcmVmaXgsCisJCQkJ CQkJCQkJCQkgT2lkIHJlbGlkLAorCQkJCQkJCQkJCQkJIERlcGFyc2VkQ29tbWFuZFR5cGUgY21k dHlwZSwKKwkJCQkJCQkJCQkJCSBTaXplIHN6LAorCQkJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKm1l c3NhZ2UpOworCiAvKiBzdHJlYW0gdHJ1bmNhdGUgY2FsbGJhY2sgc2lnbmF0dXJlICovCiB0eXBl ZGVmIHZvaWQgKCpSZW9yZGVyQnVmZmVyU3RyZWFtVHJ1bmNhdGVDQikgKAogCQkJCQkJCQkJCQkg ICBSZW9yZGVyQnVmZmVyICpyYiwKQEAgLTU5Miw2ICs2MjYsNyBAQCBzdHJ1Y3QgUmVvcmRlckJ1 ZmZlcgogCVJlb3JkZXJCdWZmZXJBcHBseVRydW5jYXRlQ0IgYXBwbHlfdHJ1bmNhdGU7CiAJUmVv cmRlckJ1ZmZlckNvbW1pdENCIGNvbW1pdDsKIAlSZW9yZGVyQnVmZmVyTWVzc2FnZUNCIG1lc3Nh Z2U7CisJUmVvcmRlckJ1ZmZlckRETE1lc3NhZ2VDQiBkZGw7CiAKIAkvKgogCSAqIENhbGxiYWNr cyB0byBiZSBjYWxsZWQgd2hlbiBzdHJlYW1pbmcgYSB0cmFuc2FjdGlvbiBhdCBwcmVwYXJlIHRp bWUuCkBAIC02MTEsNiArNjQ2LDcgQEAgc3RydWN0IFJlb3JkZXJCdWZmZXIKIAlSZW9yZGVyQnVm ZmVyU3RyZWFtQ29tbWl0Q0Igc3RyZWFtX2NvbW1pdDsKIAlSZW9yZGVyQnVmZmVyU3RyZWFtQ2hh bmdlQ0Igc3RyZWFtX2NoYW5nZTsKIAlSZW9yZGVyQnVmZmVyU3RyZWFtTWVzc2FnZUNCIHN0cmVh bV9tZXNzYWdlOworCVJlb3JkZXJCdWZmZXJTdHJlYW1ERExNZXNzYWdlQ0Igc3RyZWFtX2RkbDsK IAlSZW9yZGVyQnVmZmVyU3RyZWFtVHJ1bmNhdGVDQiBzdHJlYW1fdHJ1bmNhdGU7CiAKIAkvKgpA QCAtNjk2LDYgKzczMiw5IEBAIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJRdWV1ZU1lc3NhZ2Uo UmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCQkJICBTbmFwc2hv dCBzbmFwLCBYTG9nUmVjUHRyIGxzbiwKIAkJCQkJCQkJCSAgYm9vbCB0cmFuc2FjdGlvbmFsLCBj b25zdCBjaGFyICpwcmVmaXgsCiAJCQkJCQkJCQkgIFNpemUgbWVzc2FnZV9zaXplLCBjb25zdCBj aGFyICptZXNzYWdlKTsKK2V4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJRdWV1ZURETE1lc3NhZ2Uo UmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklkLCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkJCQkJ CQkgY29uc3QgY2hhciAqcHJlZml4LCBTaXplIG1lc3NhZ2Vfc2l6ZSwKKwkJCQkJCQkJCQkgY29u c3QgY2hhciAqbWVzc2FnZSwgT2lkIHJlbGlkLCBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUp OwogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckNvbW1pdChSZW9yZGVyQnVmZmVyICpyYiwgVHJh bnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJCVhMb2dSZWNQdHIgY29tbWl0X2xzbiwgWExvZ1JlY1B0 ciBlbmRfbHNuLAogCQkJCQkJCQlUaW1lc3RhbXBUeiBjb21taXRfdGltZSwgUmVwT3JpZ2luSWQg b3JpZ2luX2lkLCBYTG9nUmVjUHRyIG9yaWdpbl9sc24pOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvdGNvcC9jbWR0YWcuaCBiL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnLmgKaW5kZXggMWU3NTE0 ZGNmZi4uMzJjY2MxNTZkMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWcuaAor KysgYi9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZy5oCkBAIC0xNiw3ICsxNiw3IEBACiAvKiBidWZm ZXIgc2l6ZSByZXF1aXJlZCBmb3IgY29tbWFuZCBjb21wbGV0aW9uIHRhZ3MgKi8KICNkZWZpbmUg Q09NUExFVElPTl9UQUdfQlVGU0laRQk2NAogCi0jZGVmaW5lIFBHX0NNRFRBRyh0YWcsIG5hbWUs IGV2dHJnb2ssIHJ3cm9rLCByb3djbnQpIFwKKyNkZWZpbmUgUEdfQ01EVEFHKHRhZywgbmFtZSwg ZXZ0cmdvaywgcndyb2ssIHJvd2NudCwgZGRsX3JlcGxfb2spIFwKIAl0YWcsCiAKIHR5cGVkZWYg ZW51bSBDb21tYW5kVGFnCkBAIC01Myw5ICs1MywxMSBAQCBDb3B5UXVlcnlDb21wbGV0aW9uKFF1 ZXJ5Q29tcGxldGlvbiAqZHN0LCBjb25zdCBRdWVyeUNvbXBsZXRpb24gKnNyYykKIGV4dGVybiB2 b2lkIEluaXRpYWxpemVRdWVyeUNvbXBsZXRpb24oUXVlcnlDb21wbGV0aW9uICpxYyk7CiBleHRl cm4gY29uc3QgY2hhciAqR2V0Q29tbWFuZFRhZ05hbWUoQ29tbWFuZFRhZyBjb21tYW5kVGFnKTsK IGV4dGVybiBjb25zdCBjaGFyICpHZXRDb21tYW5kVGFnTmFtZUFuZExlbihDb21tYW5kVGFnIGNv bW1hbmRUYWcsIFNpemUgKmxlbik7CitleHRlcm4gQ29tbWFuZFRhZyAqR2V0Q29tbWFuZFRhZ3NG b3JERExSZXBsKGludCAqbmNvbW1hbmRzKTsKIGV4dGVybiBib29sIGNvbW1hbmRfdGFnX2Rpc3Bs YXlfcm93Y291bnQoQ29tbWFuZFRhZyBjb21tYW5kVGFnKTsKIGV4dGVybiBib29sIGNvbW1hbmRf dGFnX2V2ZW50X3RyaWdnZXJfb2soQ29tbWFuZFRhZyBjb21tYW5kVGFnKTsKIGV4dGVybiBib29s IGNvbW1hbmRfdGFnX3RhYmxlX3Jld3JpdGVfb2soQ29tbWFuZFRhZyBjb21tYW5kVGFnKTsKK2V4 dGVybiBib29sIGNvbW1hbmRfdGFnX2RkbF9yZXBsaWNhdGlvbl9vayhDb21tYW5kVGFnIGNvbW1h bmRUYWcpOwogZXh0ZXJuIENvbW1hbmRUYWcgR2V0Q29tbWFuZFRhZ0VudW0oY29uc3QgY2hhciAq Y29tbWFuZG5hbWUpOwogZXh0ZXJuIFNpemUgQnVpbGRRdWVyeUNvbXBsZXRpb25TdHJpbmcoY2hh ciAqYnVmZiwgY29uc3QgUXVlcnlDb21wbGV0aW9uICpxYywKIAkJCQkJCQkJCSAgIGJvb2wgbmFt ZW9ubHkpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmggYi9zcmMv aW5jbHVkZS90Y29wL2NtZHRhZ2xpc3QuaAppbmRleCBlNzM4YWMxYzA5Li43ZjQ0YTE1MGViIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xpc3QuaAorKysgYi9zcmMvaW5jbHVk ZS90Y29wL2NtZHRhZ2xpc3QuaApAQCAtMjMsMTk2ICsyMywxOTYgQEAKICAqIHRleHR1YWwgbmFt ZSwgc28gdGhhdCB3ZSBjYW4gYnNlYXJjaCBvbiBpdDsgc2VlIEdldENvbW1hbmRUYWdFbnVtKCku CiAgKi8KIAotLyogc3ltYm9sIG5hbWUsIHRleHR1YWwgbmFtZSwgZXZlbnRfdHJpZ2dlcl9vaywg dGFibGVfcmV3cml0ZV9vaywgcm93Y291bnQgKi8KLVBHX0NNRFRBRyhDTURUQUdfVU5LTk9XTiwg Ij8/PyIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX0FDQ0VT U19NRVRIT0QsICJBTFRFUiBBQ0NFU1MgTUVUSE9EIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdf Q01EVEFHKENNRFRBR19BTFRFUl9BR0dSRUdBVEUsICJBTFRFUiBBR0dSRUdBVEUiLCB0cnVlLCBm YWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX0NBU1QsICJBTFRFUiBDQVNUIiwg dHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9DT0xMQVRJT04sICJB TFRFUiBDT0xMQVRJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FM VEVSX0NPTlNUUkFJTlQsICJBTFRFUiBDT05TVFJBSU5UIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQot UEdfQ01EVEFHKENNRFRBR19BTFRFUl9DT05WRVJTSU9OLCAiQUxURVIgQ09OVkVSU0lPTiIsIHRy dWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfREFUQUJBU0UsICJBTFRF UiBEQVRBQkFTRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVS X0RFRkFVTFRfUFJJVklMRUdFUywgIkFMVEVSIERFRkFVTFQgUFJJVklMRUdFUyIsIHRydWUsIGZh bHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfRE9NQUlOLCAiQUxURVIgRE9NQUlO IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9FVkVOVF9UUklH R0VSLCAiQUxURVIgRVZFTlQgVFJJR0dFUiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURU QUcoQ01EVEFHX0FMVEVSX0VYVEVOU0lPTiwgIkFMVEVSIEVYVEVOU0lPTiIsIHRydWUsIGZhbHNl LCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfRk9SRUlHTl9EQVRBX1dSQVBQRVIsICJB TFRFUiBGT1JFSUdOIERBVEEgV1JBUFBFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRB RyhDTURUQUdfQUxURVJfRk9SRUlHTl9UQUJMRSwgIkFMVEVSIEZPUkVJR04gVEFCTEUiLCB0cnVl LCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX0ZVTkNUSU9OLCAiQUxURVIg RlVOQ1RJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX0lO REVYLCAiQUxURVIgSU5ERVgiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFH X0FMVEVSX0xBTkdVQUdFLCAiQUxURVIgTEFOR1VBR0UiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1Q R19DTURUQUcoQ01EVEFHX0FMVEVSX0xBUkdFX09CSkVDVCwgIkFMVEVSIExBUkdFIE9CSkVDVCIs IHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfTUFURVJJQUxJWkVE X1ZJRVcsICJBTFRFUiBNQVRFUklBTElaRUQgVklFVyIsIHRydWUsIHRydWUsIGZhbHNlKQotUEdf Q01EVEFHKENNRFRBR19BTFRFUl9PUEVSQVRPUiwgIkFMVEVSIE9QRVJBVE9SIiwgdHJ1ZSwgZmFs c2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9PUEVSQVRPUl9DTEFTUywgIkFMVEVS IE9QRVJBVE9SIENMQVNTIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19B TFRFUl9PUEVSQVRPUl9GQU1JTFksICJBTFRFUiBPUEVSQVRPUiBGQU1JTFkiLCB0cnVlLCBmYWxz ZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1BPTElDWSwgIkFMVEVSIFBPTElDWSIs IHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfUFJPQ0VEVVJFLCAi QUxURVIgUFJPQ0VEVVJFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19B TFRFUl9QVUJMSUNBVElPTiwgIkFMVEVSIFBVQkxJQ0FUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl KQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9ST0xFLCAiQUxURVIgUk9MRSIsIGZhbHNlLCBmYWxz ZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1JPVVRJTkUsICJBTFRFUiBST1VUSU5F IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9SVUxFLCAiQUxU RVIgUlVMRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfU0NI RU1BLCAiQUxURVIgU0NIRU1BIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRB R19BTFRFUl9TRVFVRU5DRSwgIkFMVEVSIFNFUVVFTkNFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQot UEdfQ01EVEFHKENNRFRBR19BTFRFUl9TRVJWRVIsICJBTFRFUiBTRVJWRVIiLCB0cnVlLCBmYWxz ZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1NUQVRJU1RJQ1MsICJBTFRFUiBTVEFU SVNUSUNTIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9TVUJT Q1JJUFRJT04sICJBTFRFUiBTVUJTQ1JJUFRJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19D TURUQUcoQ01EVEFHX0FMVEVSX1NZU1RFTSwgIkFMVEVSIFNZU1RFTSIsIGZhbHNlLCBmYWxzZSwg ZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1RBQkxFLCAiQUxURVIgVEFCTEUiLCB0cnVl LCB0cnVlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfVEFCTEVTUEFDRSwgIkFMVEVS IFRBQkxFU1BBQ0UiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRF Ul9URVhUX1NFQVJDSF9DT05GSUdVUkFUSU9OLCAiQUxURVIgVEVYVCBTRUFSQ0ggQ09ORklHVVJB VElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfVEVYVF9T RUFSQ0hfRElDVElPTkFSWSwgIkFMVEVSIFRFWFQgU0VBUkNIIERJQ1RJT05BUlkiLCB0cnVlLCBm YWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1RFWFRfU0VBUkNIX1BBUlNFUiwg IkFMVEVSIFRFWFQgU0VBUkNIIFBBUlNFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRB RyhDTURUQUdfQUxURVJfVEVYVF9TRUFSQ0hfVEVNUExBVEUsICJBTFRFUiBURVhUIFNFQVJDSCBU RU1QTEFURSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfVFJB TlNGT1JNLCAiQUxURVIgVFJBTlNGT1JNIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFH KENNRFRBR19BTFRFUl9UUklHR0VSLCAiQUxURVIgVFJJR0dFUiIsIHRydWUsIGZhbHNlLCBmYWxz ZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfVFlQRSwgIkFMVEVSIFRZUEUiLCB0cnVlLCB0cnVl LCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfVVNFUl9NQVBQSU5HLCAiQUxURVIgVVNF UiBNQVBQSU5HIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9W SUVXLCAiQUxURVIgVklFVyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf QU5BTFlaRSwgIkFOQUxZWkUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRB R19CRUdJTiwgIkJFR0lOIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf Q0FMTCwgIkNBTEwiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DSEVD S1BPSU5ULCAiQ0hFQ0tQT0lOVCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01E VEFHX0NMT1NFLCAiQ0xPU0UiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRB R19DTE9TRV9DVVJTT1IsICJDTE9TRSBDVVJTT1IiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdf Q01EVEFHKENNRFRBR19DTE9TRV9DVVJTT1JfQUxMLCAiQ0xPU0UgQ1VSU09SIEFMTCIsIGZhbHNl LCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NMVVNURVIsICJDTFVTVEVSIiwgZmFs c2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ09NTUVOVCwgIkNPTU1FTlQiLCB0 cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NPTU1JVCwgIkNPTU1JVCIsIGZh bHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NPTU1JVF9QUkVQQVJFRCwgIkNP TU1JVCBQUkVQQVJFRCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NP UFksICJDT1BZIiwgZmFsc2UsIGZhbHNlLCB0cnVlKQotUEdfQ01EVEFHKENNRFRBR19DT1BZX0ZS T00sICJDT1BZIEZST00iLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19D UkVBVEVfQUNDRVNTX01FVEhPRCwgIkNSRUFURSBBQ0NFU1MgTUVUSE9EIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfQUdHUkVHQVRFLCAiQ1JFQVRFIEFHR1JF R0FURSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0NBU1Qs ICJDUkVBVEUgQ0FTVCIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JF QVRFX0NPTExBVElPTiwgIkNSRUFURSBDT0xMQVRJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1Q R19DTURUQUcoQ01EVEFHX0NSRUFURV9DT05TVFJBSU5ULCAiQ1JFQVRFIENPTlNUUkFJTlQiLCB0 cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9DT05WRVJTSU9OLCAi Q1JFQVRFIENPTlZFUlNJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFH X0NSRUFURV9EQVRBQkFTRSwgIkNSRUFURSBEQVRBQkFTRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2Up Ci1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9ET01BSU4sICJDUkVBVEUgRE9NQUlOIiwgdHJ1ZSwg ZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfRVZFTlRfVFJJR0dFUiwgIkNS RUFURSBFVkVOVCBUUklHR0VSIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfQ1JFQVRFX0VYVEVOU0lPTiwgIkNSRUFURSBFWFRFTlNJT04iLCB0cnVlLCBmYWxzZSwgZmFs c2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9GT1JFSUdOX0RBVEFfV1JBUFBFUiwgIkNSRUFU RSBGT1JFSUdOIERBVEEgV1JBUFBFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhD TURUQUdfQ1JFQVRFX0ZPUkVJR05fVEFCTEUsICJDUkVBVEUgRk9SRUlHTiBUQUJMRSIsIHRydWUs IGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0ZVTkNUSU9OLCAiQ1JFQVRF IEZVTkNUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVf SU5ERVgsICJDUkVBVEUgSU5ERVgiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01E VEFHX0NSRUFURV9MQU5HVUFHRSwgIkNSRUFURSBMQU5HVUFHRSIsIHRydWUsIGZhbHNlLCBmYWxz ZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX01BVEVSSUFMSVpFRF9WSUVXLCAiQ1JFQVRFIE1B VEVSSUFMSVpFRCBWSUVXIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19D UkVBVEVfT1BFUkFUT1IsICJDUkVBVEUgT1BFUkFUT1IiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1Q R19DTURUQUcoQ01EVEFHX0NSRUFURV9PUEVSQVRPUl9DTEFTUywgIkNSRUFURSBPUEVSQVRPUiBD TEFTUyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX09QRVJB VE9SX0ZBTUlMWSwgIkNSRUFURSBPUEVSQVRPUiBGQU1JTFkiLCB0cnVlLCBmYWxzZSwgZmFsc2Up Ci1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9QT0xJQ1ksICJDUkVBVEUgUE9MSUNZIiwgdHJ1ZSwg ZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfUFJPQ0VEVVJFLCAiQ1JFQVRF IFBST0NFRFVSRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRF X1BVQkxJQ0FUSU9OLCAiQ1JFQVRFIFBVQkxJQ0FUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQot UEdfQ01EVEFHKENNRFRBR19DUkVBVEVfUk9MRSwgIkNSRUFURSBST0xFIiwgZmFsc2UsIGZhbHNl LCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1JPVVRJTkUsICJDUkVBVEUgUk9VVElO RSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1JVTEUsICJD UkVBVEUgUlVMRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRF X1NDSEVNQSwgIkNSRUFURSBTQ0hFTUEiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUco Q01EVEFHX0NSRUFURV9TRVFVRU5DRSwgIkNSRUFURSBTRVFVRU5DRSIsIHRydWUsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1NFUlZFUiwgIkNSRUFURSBTRVJWRVIiLCB0 cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9TVEFUSVNUSUNTLCAi Q1JFQVRFIFNUQVRJU1RJQ1MiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFH X0NSRUFURV9TVUJTQ1JJUFRJT04sICJDUkVBVEUgU1VCU0NSSVBUSU9OIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVEFCTEUsICJDUkVBVEUgVEFCTEUiLCB0 cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9UQUJMRV9BUywgIkNS RUFURSBUQUJMRSBBUyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JF QVRFX1RBQkxFU1BBQ0UsICJDUkVBVEUgVEFCTEVTUEFDRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2Up Ci1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9URVhUX1NFQVJDSF9DT05GSUdVUkFUSU9OLCAiQ1JF QVRFIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19D TURUQUcoQ01EVEFHX0NSRUFURV9URVhUX1NFQVJDSF9ESUNUSU9OQVJZLCAiQ1JFQVRFIFRFWFQg U0VBUkNIIERJQ1RJT05BUlkiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFH X0NSRUFURV9URVhUX1NFQVJDSF9QQVJTRVIsICJDUkVBVEUgVEVYVCBTRUFSQ0ggUEFSU0VSIiwg dHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVEVYVF9TRUFSQ0hf VEVNUExBVEUsICJDUkVBVEUgVEVYVCBTRUFSQ0ggVEVNUExBVEUiLCB0cnVlLCBmYWxzZSwgZmFs c2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9UUkFOU0ZPUk0sICJDUkVBVEUgVFJBTlNGT1JN IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVFJJR0dFUiwg IkNSRUFURSBUUklHR0VSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19D UkVBVEVfVFlQRSwgIkNSRUFURSBUWVBFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFH KENNRFRBR19DUkVBVEVfVVNFUl9NQVBQSU5HLCAiQ1JFQVRFIFVTRVIgTUFQUElORyIsIHRydWUs IGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1ZJRVcsICJDUkVBVEUgVklF VyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfREVBTExPQ0FURSwgIkRF QUxMT0NBVEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19ERUFMTE9D QVRFX0FMTCwgIkRFQUxMT0NBVEUgQUxMIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRB RyhDTURUQUdfREVDTEFSRV9DVVJTT1IsICJERUNMQVJFIENVUlNPUiIsIGZhbHNlLCBmYWxzZSwg ZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RFTEVURSwgIkRFTEVURSIsIGZhbHNlLCBmYWxzZSwg dHJ1ZSkKLVBHX0NNRFRBRyhDTURUQUdfRElTQ0FSRCwgIkRJU0NBUkQiLCBmYWxzZSwgZmFsc2Us IGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19ESVNDQVJEX0FMTCwgIkRJU0NBUkQgQUxMIiwgZmFs c2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRElTQ0FSRF9QTEFOUywgIkRJU0NB UkQgUExBTlMiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19ESVNDQVJE X1NFUVVFTkNFUywgIkRJU0NBUkQgU0VRVUVOQ0VTIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBH X0NNRFRBRyhDTURUQUdfRElTQ0FSRF9URU1QLCAiRElTQ0FSRCBURU1QIiwgZmFsc2UsIGZhbHNl LCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRE8sICJETyIsIGZhbHNlLCBmYWxzZSwgZmFsc2Up Ci1QR19DTURUQUcoQ01EVEFHX0RST1BfQUNDRVNTX01FVEhPRCwgIkRST1AgQUNDRVNTIE1FVEhP RCIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9BR0dSRUdBVEUs ICJEUk9QIEFHR1JFR0FURSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf RFJPUF9DQVNULCAiRFJPUCBDQVNUIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENN RFRBR19EUk9QX0NPTExBVElPTiwgIkRST1AgQ09MTEFUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl KQotUEdfQ01EVEFHKENNRFRBR19EUk9QX0NPTlNUUkFJTlQsICJEUk9QIENPTlNUUkFJTlQiLCB0 cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfQ09OVkVSU0lPTiwgIkRS T1AgQ09OVkVSU0lPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJP UF9EQVRBQkFTRSwgIkRST1AgREFUQUJBU0UiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01E VEFHKENNRFRBR19EUk9QX0RPTUFJTiwgIkRST1AgRE9NQUlOIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl KQotUEdfQ01EVEFHKENNRFRBR19EUk9QX0VWRU5UX1RSSUdHRVIsICJEUk9QIEVWRU5UIFRSSUdH RVIiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX0VYVEVOU0lP TiwgIkRST1AgRVhURU5TSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRB R19EUk9QX0ZPUkVJR05fREFUQV9XUkFQUEVSLCAiRFJPUCBGT1JFSUdOIERBVEEgV1JBUFBFUiIs IHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9GT1JFSUdOX1RBQkxF LCAiRFJPUCBGT1JFSUdOIFRBQkxFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENN RFRBR19EUk9QX0ZVTkNUSU9OLCAiRFJPUCBGVU5DVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkK LVBHX0NNRFRBRyhDTURUQUdfRFJPUF9JTkRFWCwgIkRST1AgSU5ERVgiLCB0cnVlLCBmYWxzZSwg ZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfTEFOR1VBR0UsICJEUk9QIExBTkdVQUdFIiwg dHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX01BVEVSSUFMSVpFRF9W SUVXLCAiRFJPUCBNQVRFUklBTElaRUQgVklFVyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NN RFRBRyhDTURUQUdfRFJPUF9PUEVSQVRPUiwgIkRST1AgT1BFUkFUT1IiLCB0cnVlLCBmYWxzZSwg ZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfT1BFUkFUT1JfQ0xBU1MsICJEUk9QIE9QRVJB VE9SIENMQVNTIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX09Q RVJBVE9SX0ZBTUlMWSwgIkRST1AgT1BFUkFUT1IgRkFNSUxZIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl KQotUEdfQ01EVEFHKENNRFRBR19EUk9QX09XTkVELCAiRFJPUCBPV05FRCIsIHRydWUsIGZhbHNl LCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9QT0xJQ1ksICJEUk9QIFBPTElDWSIsIHRy dWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9QUk9DRURVUkUsICJEUk9Q IFBST0NFRFVSRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9Q VUJMSUNBVElPTiwgIkRST1AgUFVCTElDQVRJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19D TURUQUcoQ01EVEFHX0RST1BfUk9MRSwgIkRST1AgUk9MRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2Up Ci1QR19DTURUQUcoQ01EVEFHX0RST1BfUk9VVElORSwgIkRST1AgUk9VVElORSIsIHRydWUsIGZh bHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9SVUxFLCAiRFJPUCBSVUxFIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX1NDSEVNQSwgIkRST1AgU0NI RU1BIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX1NFUVVFTkNF LCAiRFJPUCBTRVFVRU5DRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf RFJPUF9TRVJWRVIsICJEUk9QIFNFUlZFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRB RyhDTURUQUdfRFJPUF9TVEFUSVNUSUNTLCAiRFJPUCBTVEFUSVNUSUNTIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX1NVQlNDUklQVElPTiwgIkRST1AgU1VCU0NS SVBUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX1RBQkxF LCAiRFJPUCBUQUJMRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJP UF9UQUJMRVNQQUNFLCAiRFJPUCBUQUJMRVNQQUNFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBH X0NNRFRBRyhDTURUQUdfRFJPUF9URVhUX1NFQVJDSF9DT05GSUdVUkFUSU9OLCAiRFJPUCBURVhU IFNFQVJDSCBDT05GSUdVUkFUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENN RFRBR19EUk9QX1RFWFRfU0VBUkNIX0RJQ1RJT05BUlksICJEUk9QIFRFWFQgU0VBUkNIIERJQ1RJ T05BUlkiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfVEVYVF9T RUFSQ0hfUEFSU0VSLCAiRFJPUCBURVhUIFNFQVJDSCBQQVJTRVIiLCB0cnVlLCBmYWxzZSwgZmFs c2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfVEVYVF9TRUFSQ0hfVEVNUExBVEUsICJEUk9QIFRF WFQgU0VBUkNIIFRFTVBMQVRFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRB R19EUk9QX1RSQU5TRk9STSwgIkRST1AgVFJBTlNGT1JNIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQot UEdfQ01EVEFHKENNRFRBR19EUk9QX1RSSUdHRVIsICJEUk9QIFRSSUdHRVIiLCB0cnVlLCBmYWxz ZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfVFlQRSwgIkRST1AgVFlQRSIsIHRydWUs IGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9VU0VSX01BUFBJTkcsICJEUk9Q IFVTRVIgTUFQUElORyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJP UF9WSUVXLCAiRFJPUCBWSUVXIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRB R19FWEVDVVRFLCAiRVhFQ1VURSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01E VEFHX0VYUExBSU4sICJFWFBMQUlOIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhD TURUQUdfRkVUQ0gsICJGRVRDSCIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKLVBHX0NNRFRBRyhDTURU QUdfR1JBTlQsICJHUkFOVCIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf R1JBTlRfUk9MRSwgIkdSQU5UIFJPTEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFH KENNRFRBR19JTVBPUlRfRk9SRUlHTl9TQ0hFTUEsICJJTVBPUlQgRk9SRUlHTiBTQ0hFTUEiLCB0 cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0lOU0VSVCwgIklOU0VSVCIsIGZh bHNlLCBmYWxzZSwgdHJ1ZSkKLVBHX0NNRFRBRyhDTURUQUdfTElTVEVOLCAiTElTVEVOIiwgZmFs c2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfTE9BRCwgIkxPQUQiLCBmYWxzZSwg ZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19MT0NLX1RBQkxFLCAiTE9DSyBUQUJMRSIs IGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX01FUkdFLCAiTUVSR0UiLCBm YWxzZSwgZmFsc2UsIHRydWUpCi1QR19DTURUQUcoQ01EVEFHX01PVkUsICJNT1ZFIiwgZmFsc2Us IGZhbHNlLCB0cnVlKQotUEdfQ01EVEFHKENNRFRBR19OT1RJRlksICJOT1RJRlkiLCBmYWxzZSwg ZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19QUkVQQVJFLCAiUFJFUEFSRSIsIGZhbHNl LCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1BSRVBBUkVfVFJBTlNBQ1RJT04sICJQ UkVQQVJFIFRSQU5TQUNUSU9OIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfUkVBU1NJR05fT1dORUQsICJSRUFTU0lHTiBPV05FRCIsIGZhbHNlLCBmYWxzZSwgZmFsc2Up Ci1QR19DTURUQUcoQ01EVEFHX1JFRlJFU0hfTUFURVJJQUxJWkVEX1ZJRVcsICJSRUZSRVNIIE1B VEVSSUFMSVpFRCBWSUVXIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19S RUlOREVYLCAiUkVJTkRFWCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFH X1JFTEVBU0UsICJSRUxFQVNFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfUkVTRVQsICJSRVNFVCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFH X1JFVk9LRSwgIlJFVk9LRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf UkVWT0tFX1JPTEUsICJSRVZPS0UgUk9MRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURU QUcoQ01EVEFHX1JPTExCQUNLLCAiUk9MTEJBQ0siLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdf Q01EVEFHKENNRFRBR19ST0xMQkFDS19QUkVQQVJFRCwgIlJPTExCQUNLIFBSRVBBUkVEIiwgZmFs c2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfU0FWRVBPSU5ULCAiU0FWRVBPSU5U IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfU0VDVVJJVFlfTEFCRUws ICJTRUNVUklUWSBMQUJFTCIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf U0VMRUNULCAiU0VMRUNUIiwgZmFsc2UsIGZhbHNlLCB0cnVlKQotUEdfQ01EVEFHKENNRFRBR19T RUxFQ1RfRk9SX0tFWV9TSEFSRSwgIlNFTEVDVCBGT1IgS0VZIFNIQVJFIiwgZmFsc2UsIGZhbHNl LCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfU0VMRUNUX0ZPUl9OT19LRVlfVVBEQVRFLCAiU0VM RUNUIEZPUiBOTyBLRVkgVVBEQVRFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhD TURUQUdfU0VMRUNUX0ZPUl9TSEFSRSwgIlNFTEVDVCBGT1IgU0hBUkUiLCBmYWxzZSwgZmFsc2Us IGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19TRUxFQ1RfRk9SX1VQREFURSwgIlNFTEVDVCBGT1Ig VVBEQVRFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfU0VMRUNUX0lO VE8sICJTRUxFQ1QgSU5UTyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf U0VULCAiU0VUIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfU0VUX0NP TlNUUkFJTlRTLCAiU0VUIENPTlNUUkFJTlRTIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NN RFRBRyhDTURUQUdfU0hPVywgIlNIT1ciLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFH KENNRFRBR19TVEFSVF9UUkFOU0FDVElPTiwgIlNUQVJUIFRSQU5TQUNUSU9OIiwgZmFsc2UsIGZh bHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfVFJVTkNBVEVfVEFCTEUsICJUUlVOQ0FURSBU QUJMRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1VOTElTVEVOLCAi VU5MSVNURU4iLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19VUERBVEUs ICJVUERBVEUiLCBmYWxzZSwgZmFsc2UsIHRydWUpCi1QR19DTURUQUcoQ01EVEFHX1ZBQ1VVTSwg IlZBQ1VVTSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCisvKiBzeW1ib2wgbmFtZSwgdGV4dHVhbCBu YW1lLCBldmVudF90cmlnZ2VyX29rLCB0YWJsZV9yZXdyaXRlX29rLCByb3djb3VudCwgZGRsX3Jl cGxfb2sgKi8KK1BHX0NNRFRBRyhDTURUQUdfVU5LTk9XTiwgIj8/PyIsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9BQ0NFU1NfTUVUSE9ELCAiQUxU RVIgQUNDRVNTIE1FVEhPRCIsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUco Q01EVEFHX0FMVEVSX0FHR1JFR0FURSwgIkFMVEVSIEFHR1JFR0FURSIsIHRydWUsIGZhbHNlLCBm YWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfQ0FTVCwgIkFMVEVSIENBU1QiLCB0 cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX0NPTExBVElP TiwgIkFMVEVSIENPTExBVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRB RyhDTURUQUdfQUxURVJfQ09OU1RSQUlOVCwgIkFMVEVSIENPTlNUUkFJTlQiLCB0cnVlLCBmYWxz ZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9DT05WRVJTSU9OLCAiQUxU RVIgQ09OVkVSU0lPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURU QUdfQUxURVJfREFUQUJBU0UsICJBTFRFUiBEQVRBQkFTRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2Us IGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9ERUZBVUxUX1BSSVZJTEVHRVMsICJBTFRF UiBERUZBVUxUIFBSSVZJTEVHRVMiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURU QUcoQ01EVEFHX0FMVEVSX0RPTUFJTiwgIkFMVEVSIERPTUFJTiIsIHRydWUsIGZhbHNlLCBmYWxz ZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfRVZFTlRfVFJJR0dFUiwgIkFMVEVSIEVW RU5UIFRSSUdHRVIiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURU QUdfQUxURVJfRVhURU5TSU9OLCAiQUxURVIgRVhURU5TSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl LCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9GT1JFSUdOX0RBVEFfV1JBUFBFUiwgIkFM VEVSIEZPUkVJR04gREFUQSBXUkFQUEVSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdf Q01EVEFHKENNRFRBR19BTFRFUl9GT1JFSUdOX1RBQkxFLCAiQUxURVIgRk9SRUlHTiBUQUJMRSIs IHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfRlVOQ1RJ T04sICJBTFRFUiBGVU5DVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRB RyhDTURUQUdfQUxURVJfSU5ERVgsICJBTFRFUiBJTkRFWCIsIHRydWUsIGZhbHNlLCBmYWxzZSwg dHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfTEFOR1VBR0UsICJBTFRFUiBMQU5HVUFHRSIs IHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfTEFSR0Vf T0JKRUNULCAiQUxURVIgTEFSR0UgT0JKRUNUIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkK K1BHX0NNRFRBRyhDTURUQUdfQUxURVJfTUFURVJJQUxJWkVEX1ZJRVcsICJBTFRFUiBNQVRFUklB TElaRUQgVklFVyIsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19B TFRFUl9PUEVSQVRPUiwgIkFMVEVSIE9QRVJBVE9SIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVl KQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9PUEVSQVRPUl9DTEFTUywgIkFMVEVSIE9QRVJBVE9S IENMQVNTIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRF Ul9PUEVSQVRPUl9GQU1JTFksICJBTFRFUiBPUEVSQVRPUiBGQU1JTFkiLCB0cnVlLCBmYWxzZSwg ZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1BPTElDWSwgIkFMVEVSIFBPTElD WSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfUFJP Q0VEVVJFLCAiQUxURVIgUFJPQ0VEVVJFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdf Q01EVEFHKENNRFRBR19BTFRFUl9QVUJMSUNBVElPTiwgIkFMVEVSIFBVQkxJQ0FUSU9OIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9ST0xFLCAiQUxU RVIgUk9MRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19B TFRFUl9ST1VUSU5FLCAiQUxURVIgUk9VVElORSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkK K1BHX0NNRFRBRyhDTURUQUdfQUxURVJfUlVMRSwgIkFMVEVSIFJVTEUiLCB0cnVlLCBmYWxzZSwg ZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1NDSEVNQSwgIkFMVEVSIFNDSEVN QSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfU0VR VUVOQ0UsICJBTFRFUiBTRVFVRU5DRSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NN RFRBRyhDTURUQUdfQUxURVJfU0VSVkVSLCAiQUxURVIgU0VSVkVSIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9TVEFUSVNUSUNTLCAiQUxURVIgU1RB VElTVElDUyIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxU RVJfU1VCU0NSSVBUSU9OLCAiQUxURVIgU1VCU0NSSVBUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl LCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfU1lTVEVNLCAiQUxURVIgU1lTVEVNIiwg ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1RBQkxF LCAiQUxURVIgVEFCTEUiLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURU QUdfQUxURVJfVEFCTEVTUEFDRSwgIkFMVEVSIFRBQkxFU1BBQ0UiLCBmYWxzZSwgZmFsc2UsIGZh bHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfVEVYVF9TRUFSQ0hfQ09ORklHVVJB VElPTiwgIkFMVEVSIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04iLCB0cnVlLCBmYWxzZSwgZmFs c2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1RFWFRfU0VBUkNIX0RJQ1RJT05BUlks ICJBTFRFUiBURVhUIFNFQVJDSCBESUNUSU9OQVJZIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVl KQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9URVhUX1NFQVJDSF9QQVJTRVIsICJBTFRFUiBURVhU IFNFQVJDSCBQQVJTRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01E VEFHX0FMVEVSX1RFWFRfU0VBUkNIX1RFTVBMQVRFLCAiQUxURVIgVEVYVCBTRUFSQ0ggVEVNUExB VEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1RS QU5TRk9STSwgIkFMVEVSIFRSQU5TRk9STSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQ R19DTURUQUcoQ01EVEFHX0FMVEVSX1RSSUdHRVIsICJBTFRFUiBUUklHR0VSIiwgdHJ1ZSwgZmFs c2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9UWVBFLCAiQUxURVIgVFlQ RSIsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9VU0VS X01BUFBJTkcsICJBTFRFUiBVU0VSIE1BUFBJTkciLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUp CitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1ZJRVcsICJBTFRFUiBWSUVXIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTkFMWVpFLCAiQU5BTFlaRSIsIGZhbHNl LCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19CRUdJTiwgIkJFR0lOIiwg ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0NBTEwsICJDQUxM IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0NIRUNLUE9J TlQsICJDSEVDS1BPSU5UIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUco Q01EVEFHX0NMT1NFLCAiQ0xPU0UiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NN RFRBRyhDTURUQUdfQ0xPU0VfQ1VSU09SLCAiQ0xPU0UgQ1VSU09SIiwgZmFsc2UsIGZhbHNlLCBm YWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0NMT1NFX0NVUlNPUl9BTEwsICJDTE9TRSBD VVJTT1IgQUxMIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFH X0NMVVNURVIsICJDTFVTVEVSIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURU QUcoQ01EVEFHX0NPTU1FTlQsICJDT01NRU5UIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQor UEdfQ01EVEFHKENNRFRBR19DT01NSVQsICJDT01NSVQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm YWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ09NTUlUX1BSRVBBUkVELCAiQ09NTUlUIFBSRVBBUkVE IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0NPUFksICJD T1BZIiwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ09QWV9G Uk9NLCAiQ09QWSBGUk9NIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUco Q01EVEFHX0NSRUFURV9BQ0NFU1NfTUVUSE9ELCAiQ1JFQVRFIEFDQ0VTUyBNRVRIT0QiLCB0cnVl LCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9BR0dSRUdBVEUs ICJDUkVBVEUgQUdHUkVHQVRFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFH KENNRFRBR19DUkVBVEVfQ0FTVCwgIkNSRUFURSBDQVNUIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0 cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfQ09MTEFUSU9OLCAiQ1JFQVRFIENPTExBVElP TiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0NP TlNUUkFJTlQsICJDUkVBVEUgQ09OU1RSQUlOVCIsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2Up CitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9DT05WRVJTSU9OLCAiQ1JFQVRFIENPTlZFUlNJT04i LCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9EQVRB QkFTRSwgIkNSRUFURSBEQVRBQkFTRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdf Q01EVEFHKENNRFRBR19DUkVBVEVfRE9NQUlOLCAiQ1JFQVRFIERPTUFJTiIsIHRydWUsIGZhbHNl LCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0VWRU5UX1RSSUdHRVIsICJD UkVBVEUgRVZFTlQgVFJJR0dFUiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01E VEFHKENNRFRBR19DUkVBVEVfRVhURU5TSU9OLCAiQ1JFQVRFIEVYVEVOU0lPTiIsIHRydWUsIGZh bHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0ZPUkVJR05fREFUQV9X UkFQUEVSLCAiQ1JFQVRFIEZPUkVJR04gREFUQSBXUkFQUEVSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl LCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfRk9SRUlHTl9UQUJMRSwgIkNSRUFURSBG T1JFSUdOIFRBQkxFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRB R19DUkVBVEVfRlVOQ1RJT04sICJDUkVBVEUgRlVOQ1RJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2Us IHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9JTkRFWCwgIkNSRUFURSBJTkRFWCIsIHRy dWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0xBTkdVQUdF LCAiQ1JFQVRFIExBTkdVQUdFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFH KENNRFRBR19DUkVBVEVfTUFURVJJQUxJWkVEX1ZJRVcsICJDUkVBVEUgTUFURVJJQUxJWkVEIFZJ RVciLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9P UEVSQVRPUiwgIkNSRUFURSBPUEVSQVRPUiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BH X0NNRFRBRyhDTURUQUdfQ1JFQVRFX09QRVJBVE9SX0NMQVNTLCAiQ1JFQVRFIE9QRVJBVE9SIENM QVNTIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVf T1BFUkFUT1JfRkFNSUxZLCAiQ1JFQVRFIE9QRVJBVE9SIEZBTUlMWSIsIHRydWUsIGZhbHNlLCBm YWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1BPTElDWSwgIkNSRUFURSBQT0xJ Q1kiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9Q Uk9DRURVUkUsICJDUkVBVEUgUFJPQ0VEVVJFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQor UEdfQ01EVEFHKENNRFRBR19DUkVBVEVfUFVCTElDQVRJT04sICJDUkVBVEUgUFVCTElDQVRJT04i LCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9ST0xF LCAiQ1JFQVRFIFJPTEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhD TURUQUdfQ1JFQVRFX1JPVVRJTkUsICJDUkVBVEUgUk9VVElORSIsIHRydWUsIGZhbHNlLCBmYWxz ZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9SVUxFLCAiQ1JFQVRFIFJVTEUiLCB0 cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9TQ0hFTUEs ICJDUkVBVEUgU0NIRU1BIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENN RFRBR19DUkVBVEVfU0VRVUVOQ0UsICJDUkVBVEUgU0VRVUVOQ0UiLCB0cnVlLCBmYWxzZSwgZmFs c2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9TRVJWRVIsICJDUkVBVEUgU0VSVkVS IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfU1RB VElTVElDUywgIkNSRUFURSBTVEFUSVNUSUNTIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQor UEdfQ01EVEFHKENNRFRBR19DUkVBVEVfU1VCU0NSSVBUSU9OLCAiQ1JFQVRFIFNVQlNDUklQVElP TiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9U QUJMRSwgIkNSRUFURSBUQUJMRSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRB RyhDTURUQUdfQ1JFQVRFX1RBQkxFX0FTLCAiQ1JFQVRFIFRBQkxFIEFTIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RBQkxFU1BBQ0UsICJDUkVB VEUgVEFCTEVTUEFDRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENN RFRBR19DUkVBVEVfVEVYVF9TRUFSQ0hfQ09ORklHVVJBVElPTiwgIkNSRUFURSBURVhUIFNFQVJD SCBDT05GSUdVUkFUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENN RFRBR19DUkVBVEVfVEVYVF9TRUFSQ0hfRElDVElPTkFSWSwgIkNSRUFURSBURVhUIFNFQVJDSCBE SUNUSU9OQVJZIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19D UkVBVEVfVEVYVF9TRUFSQ0hfUEFSU0VSLCAiQ1JFQVRFIFRFWFQgU0VBUkNIIFBBUlNFUiIsIHRy dWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RFWFRfU0VB UkNIX1RFTVBMQVRFLCAiQ1JFQVRFIFRFWFQgU0VBUkNIIFRFTVBMQVRFIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVFJBTlNGT1JNLCAiQ1JFQVRF IFRSQU5TRk9STSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdf Q1JFQVRFX1RSSUdHRVIsICJDUkVBVEUgVFJJR0dFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1 ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RZUEUsICJDUkVBVEUgVFlQRSIsIHRydWUsIGZh bHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1VTRVJfTUFQUElORywg IkNSRUFURSBVU0VSIE1BUFBJTkciLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURU QUcoQ01EVEFHX0NSRUFURV9WSUVXLCAiQ1JFQVRFIFZJRVciLCB0cnVlLCBmYWxzZSwgZmFsc2Us IHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RFQUxMT0NBVEUsICJERUFMTE9DQVRFIiwgZmFsc2Us IGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0RFQUxMT0NBVEVfQUxMLCAi REVBTExPQ0FURSBBTEwiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhD TURUQUdfREVDTEFSRV9DVVJTT1IsICJERUNMQVJFIENVUlNPUiIsIGZhbHNlLCBmYWxzZSwgZmFs c2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19ERUxFVEUsICJERUxFVEUiLCBmYWxzZSwgZmFs c2UsIHRydWUsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19ESVNDQVJELCAiRElTQ0FSRCIsIGZh bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19ESVNDQVJEX0FMTCwg IkRJU0NBUkQgQUxMIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01E VEFHX0RJU0NBUkRfUExBTlMsICJESVNDQVJEIFBMQU5TIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg ZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0RJU0NBUkRfU0VRVUVOQ0VTLCAiRElTQ0FSRCBTRVFV RU5DRVMiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfRElT Q0FSRF9URU1QLCAiRElTQ0FSRCBURU1QIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQ R19DTURUQUcoQ01EVEFHX0RPLCAiRE8iLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BH X0NNRFRBRyhDTURUQUdfRFJPUF9BQ0NFU1NfTUVUSE9ELCAiRFJPUCBBQ0NFU1MgTUVUSE9EIiwg dHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX0FHR1JFR0FU RSwgIkRST1AgQUdHUkVHQVRFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFH KENNRFRBR19EUk9QX0NBU1QsICJEUk9QIENBU1QiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUp CitQR19DTURUQUcoQ01EVEFHX0RST1BfQ09MTEFUSU9OLCAiRFJPUCBDT0xMQVRJT04iLCB0cnVl LCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfQ09OU1RSQUlOVCwg IkRST1AgQ09OU1RSQUlOVCIsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUco Q01EVEFHX0RST1BfQ09OVkVSU0lPTiwgIkRST1AgQ09OVkVSU0lPTiIsIHRydWUsIGZhbHNlLCBm YWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9EQVRBQkFTRSwgIkRST1AgREFUQUJB U0UiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9E T01BSU4sICJEUk9QIERPTUFJTiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRB RyhDTURUQUdfRFJPUF9FVkVOVF9UUklHR0VSLCAiRFJPUCBFVkVOVCBUUklHR0VSIiwgZmFsc2Us IGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0RST1BfRVhURU5TSU9OLCAi RFJPUCBFWFRFTlNJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01E VEFHX0RST1BfRk9SRUlHTl9EQVRBX1dSQVBQRVIsICJEUk9QIEZPUkVJR04gREFUQSBXUkFQUEVS IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX0ZPUkVJ R05fVEFCTEUsICJEUk9QIEZPUkVJR04gVEFCTEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUp CitQR19DTURUQUcoQ01EVEFHX0RST1BfRlVOQ1RJT04sICJEUk9QIEZVTkNUSU9OIiwgdHJ1ZSwg ZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX0lOREVYLCAiRFJPUCBJ TkRFWCIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9M QU5HVUFHRSwgIkRST1AgTEFOR1VBR0UiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19D TURUQUcoQ01EVEFHX0RST1BfTUFURVJJQUxJWkVEX1ZJRVcsICJEUk9QIE1BVEVSSUFMSVpFRCBW SUVXIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX09Q RVJBVE9SLCAiRFJPUCBPUEVSQVRPUiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NN RFRBRyhDTURUQUdfRFJPUF9PUEVSQVRPUl9DTEFTUywgIkRST1AgT1BFUkFUT1IgQ0xBU1MiLCB0 cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfT1BFUkFUT1Jf RkFNSUxZLCAiRFJPUCBPUEVSQVRPUiBGQU1JTFkiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUp CitQR19DTURUQUcoQ01EVEFHX0RST1BfT1dORUQsICJEUk9QIE9XTkVEIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9QT0xJQ1ksICJEUk9QIFBPTElD WSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9QUk9D RURVUkUsICJEUk9QIFBST0NFRFVSRSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NN RFRBRyhDTURUQUdfRFJPUF9QVUJMSUNBVElPTiwgIkRST1AgUFVCTElDQVRJT04iLCB0cnVlLCBm YWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfUk9MRSwgIkRST1AgUk9M RSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1JP VVRJTkUsICJEUk9QIFJPVVRJTkUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURU QUcoQ01EVEFHX0RST1BfUlVMRSwgIkRST1AgUlVMRSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1 ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9TQ0hFTUEsICJEUk9QIFNDSEVNQSIsIHRydWUsIGZh bHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9TRVFVRU5DRSwgIkRST1Ag U0VRVUVOQ0UiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RS T1BfU0VSVkVSLCAiRFJPUCBTRVJWRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19D TURUQUcoQ01EVEFHX0RST1BfU1RBVElTVElDUywgIkRST1AgU1RBVElTVElDUyIsIHRydWUsIGZh bHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9TVUJTQ1JJUFRJT04sICJE Uk9QIFNVQlNDUklQVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUco Q01EVEFHX0RST1BfVEFCTEUsICJEUk9QIFRBQkxFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVl KQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1RBQkxFU1BBQ0UsICJEUk9QIFRBQkxFU1BBQ0UiLCBm YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9URVhUX1NF QVJDSF9DT05GSUdVUkFUSU9OLCAiRFJPUCBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1RFWFRfU0VBUkNI X0RJQ1RJT05BUlksICJEUk9QIFRFWFQgU0VBUkNIIERJQ1RJT05BUlkiLCB0cnVlLCBmYWxzZSwg ZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfVEVYVF9TRUFSQ0hfUEFSU0VSLCAi RFJPUCBURVhUIFNFQVJDSCBQQVJTRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19D TURUQUcoQ01EVEFHX0RST1BfVEVYVF9TRUFSQ0hfVEVNUExBVEUsICJEUk9QIFRFWFQgU0VBUkNI IFRFTVBMQVRFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19E Uk9QX1RSQU5TRk9STSwgIkRST1AgVFJBTlNGT1JNIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVl KQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1RSSUdHRVIsICJEUk9QIFRSSUdHRVIiLCB0cnVlLCBm YWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfVFlQRSwgIkRST1AgVFlQ RSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9VU0VS X01BUFBJTkcsICJEUk9QIFVTRVIgTUFQUElORyIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkK K1BHX0NNRFRBRyhDTURUQUdfRFJPUF9WSUVXLCAiRFJPUCBWSUVXIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19FWEVDVVRFLCAiRVhFQ1VURSIsIGZhbHNlLCBm YWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19FWFBMQUlOLCAiRVhQTEFJTiIs IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19GRVRDSCwgIkZF VENIIiwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfR1JBTlQs ICJHUkFOVCIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfR1JB TlRfUk9MRSwgIkdSQU5UIFJPTEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NN RFRBRyhDTURUQUdfSU1QT1JUX0ZPUkVJR05fU0NIRU1BLCAiSU1QT1JUIEZPUkVJR04gU0NIRU1B IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19JTlNFUlQsICJJ TlNFUlQiLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19MSVNU RU4sICJMSVNURU4iLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURU QUdfTE9BRCwgIkxPQUQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhD TURUQUdfTE9DS19UQUJMRSwgIkxPQ0sgVEFCTEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz ZSkKK1BHX0NNRFRBRyhDTURUQUdfTUVSR0UsICJNRVJHRSIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwg ZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX01PVkUsICJNT1ZFIiwgZmFsc2UsIGZhbHNlLCB0cnVl LCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfTk9USUZZLCAiTk9USUZZIiwgZmFsc2UsIGZhbHNl LCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1BSRVBBUkUsICJQUkVQQVJFIiwgZmFs c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1BSRVBBUkVfVFJBTlNB Q1RJT04sICJQUkVQQVJFIFRSQU5TQUNUSU9OIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Up CitQR19DTURUQUcoQ01EVEFHX1JFQVNTSUdOX09XTkVELCAiUkVBU1NJR04gT1dORUQiLCBmYWxz ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfUkVGUkVTSF9NQVRFUklB TElaRURfVklFVywgIlJFRlJFU0ggTUFURVJJQUxJWkVEIFZJRVciLCB0cnVlLCBmYWxzZSwgZmFs c2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX1JFSU5ERVgsICJSRUlOREVYIiwgZmFsc2UsIGZh bHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1JFTEVBU0UsICJSRUxFQVNFIiwg ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1JFU0VULCAiUkVT RVQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfUkVWT0tF LCAiUkVWT0tFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19S RVZPS0VfUk9MRSwgIlJFVk9LRSBST0xFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQ R19DTURUQUcoQ01EVEFHX1JPTExCQUNLLCAiUk9MTEJBQ0siLCBmYWxzZSwgZmFsc2UsIGZhbHNl LCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfUk9MTEJBQ0tfUFJFUEFSRUQsICJST0xMQkFDSyBQ UkVQQVJFRCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19T QVZFUE9JTlQsICJTQVZFUE9JTlQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NN RFRBRyhDTURUQUdfU0VDVVJJVFlfTEFCRUwsICJTRUNVUklUWSBMQUJFTCIsIHRydWUsIGZhbHNl LCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfU0VMRUNULCAiU0VMRUNUIiwgZmFsc2Us IGZhbHNlLCB0cnVlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfU0VMRUNUX0ZPUl9LRVlfU0hB UkUsICJTRUxFQ1QgRk9SIEtFWSBTSEFSRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQor UEdfQ01EVEFHKENNRFRBR19TRUxFQ1RfRk9SX05PX0tFWV9VUERBVEUsICJTRUxFQ1QgRk9SIE5P IEtFWSBVUERBVEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURU QUdfU0VMRUNUX0ZPUl9TSEFSRSwgIlNFTEVDVCBGT1IgU0hBUkUiLCBmYWxzZSwgZmFsc2UsIGZh bHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfU0VMRUNUX0ZPUl9VUERBVEUsICJTRUxFQ1Qg Rk9SIFVQREFURSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRB R19TRUxFQ1RfSU5UTywgIlNFTEVDVCBJTlRPIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkK K1BHX0NNRFRBRyhDTURUQUdfU0VULCAiU0VUIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Up CitQR19DTURUQUcoQ01EVEFHX1NFVF9DT05TVFJBSU5UUywgIlNFVCBDT05TVFJBSU5UUyIsIGZh bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19TSE9XLCAiU0hPVyIs IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19TVEFSVF9UUkFO U0FDVElPTiwgIlNUQVJUIFRSQU5TQUNUSU9OIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Up CitQR19DTURUQUcoQ01EVEFHX1RSVU5DQVRFX1RBQkxFLCAiVFJVTkNBVEUgVEFCTEUiLCBmYWxz ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfVU5MSVNURU4sICJVTkxJ U1RFTiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19VUERB VEUsICJVUERBVEUiLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRB R19WQUNVVU0sICJWQUNVVU0iLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3Rjb3AvZGRsZGVwYXJzZS5oIGIvc3JjL2luY2x1ZGUvdGNvcC9kZGxk ZXBhcnNlLmgKaW5kZXggOGIzNjlmZDhjNS4uY2FlZmIwM2JmNiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvdGNvcC9kZGxkZXBhcnNlLmgKKysrIGIvc3JjL2luY2x1ZGUvdGNvcC9kZGxkZXBhcnNl LmgKQEAgLTIsOCArMiw3IEBACiAgKgogICogZGRsZGVwYXJzZS5oCiAgKgotICogUG9ydGlvbnMg Q29weXJpZ2h0IChjKSAxOTk2LTIwMjMsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZl cnNpdHkgb2YgQ2FsaWZvcm5pYQorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDIzLCBQb3N0 Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAogICoKICAqIHNyYy9pbmNsdWRlL3Rjb3Av ZGRsZGVwYXJzZS5oCiAgKgpAQCAtMTQsOSArMTMsMTcgQEAKIAogI2luY2x1ZGUgInRjb3AvZGVw YXJzZV91dGlsaXR5LmgiCiAKLWV4dGVybiBjaGFyICpkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChD b2xsZWN0ZWRDb21tYW5kICpjbWQpOworLyogQ29udGV4dCBpbmZvIG5lZWRlZCBmb3IgZGVwYXJz aW5nIGRkbCBjb21tYW5kICovCit0eXBlZGVmIHN0cnVjdAoreworCS8qIFRoZSBtYXhpbXVtIHZv bGF0aWxpdHkgb2YgZnVuY3Rpb25zIGluIGV4cHJlc3Npb25zIG9mIGEgRERMIGNvbW1hbmQuICov CisJY2hhcgkJbWF4X3ZvbGF0aWxpdHk7Cit9CQkJZGRsX2RlcGFyc2VfY29udGV4dDsKKworZXh0 ZXJuIGNoYXIgKmRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKENvbGxlY3RlZENvbW1hbmQgKmNtZCwK KwkJCQkJCQkJCSBkZGxfZGVwYXJzZV9jb250ZXh0ICogY29udGV4dCk7CiBleHRlcm4gY2hhciAq ZGVwYXJzZV9kZGxfanNvbl90b19zdHJpbmcoY2hhciAqanNvbmIpOwogZXh0ZXJuIGNoYXIgKmRl cGFyc2VfZHJvcF90YWJsZShjb25zdCBjaGFyICpvYmppZGVudGl0eSwgY29uc3QgY2hhciAqb2Jq ZWN0dHlwZSwKLQkJCQkJCQkJICBOb2RlICpwYXJzZXRyZWUpOworCQkJCQkJCQlOb2RlICpwYXJz ZXRyZWUpOwogCiAjZW5kaWYJCQkJCQkJLyogRERMX0RFUEFSU0VfSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAppbmRleCAx NDI2YTM1M2NkLi5hNjU2ZjViZDdjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yZWwu aAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaApAQCAtMTcsMTAgKzE3LDEyIEBACiAjaW5j bHVkZSAiYWNjZXNzL3R1cGRlc2MuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZy5oIgogI2luY2x1 ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgorI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY2xhc3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2lu ZGV4LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIgogI2luY2x1ZGUgIm5v ZGVzL2JpdG1hcHNldC5oIgorI2luY2x1ZGUgIm5vZGVzL2xvY2tvcHRpb25zLmgiCiAjaW5jbHVk ZSAicGFydGl0aW9uaW5nL3BhcnRkZWZzLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9wcnMybG9jay5o IgogI2luY2x1ZGUgInN0b3JhZ2UvYmxvY2suaCIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcHNxbC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0 CmluZGV4IDhmOTMwMjgzNjMuLjAwOGY2MTBkMTEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcHNxbC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3Fs Lm91dApAQCAtNjIyMyw5ICs2MjIzLDkgQEAgTGlzdCBvZiBzY2hlbWFzCiAoMCByb3dzKQogCiBc ZFJwICJuby5zdWNoLnB1YmxpY2F0aW9uIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiBwdWJsaWNhdGlvbnMKLSBOYW1lIHwgT3duZXIgfCBBbGwgdGFibGVzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0rLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiBwdWJsaWNhdGlvbnMKKyBOYW1lIHwgT3duZXIgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0t LS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCiAoMCByb3dzKQogCiBcZFJzICJuby5z dWNoLnN1YnNjcmlwdGlvbiIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cHVibGljYXRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5v dXQKaW5kZXggNjlkYzZjZmQ4NS4uNmE1YWYyZmQzZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wdWJsaWNhdGlvbi5vdXQKQEAgLTMwLDIwICszMCwyMCBAQCBFUlJPUjogIGNvbmZsaWN0 aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zCiBMSU5FIDE6IC4uLnViX3h4eCBXSVRIIChwdWJsaXNo X3ZpYV9wYXJ0aXRpb25fcm9vdCA9ICd0cnVlJywgcHVibGlzaF92aS4uLgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIFxkUnAK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHB1 YmxpY2F0aW9ucwotICAgICAgICBOYW1lICAgICAgICB8ICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gdGVzdHBpYl9pbnNfdHJ1bmN0IHwgcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAg ICB8IGYKLSB0ZXN0cHViX2RlZmF1bHQgICAgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0 IG9mIHB1YmxpY2F0aW9ucworICAgICAgICBOYW1lICAgICAgICB8ICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJs ZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB0ZXN0cGliX2lu c190cnVuY3QgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAg ICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICB8IGYKKyB0ZXN0 cHViX2RlZmF1bHQgICAgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg ZiAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICB8IGYK ICgyIHJvd3MpCiAKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGVmYXVsdCBTRVQgKHB1Ymxp c2ggPSAnaW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZScpOwogXGRScAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCi0gICAgICAg IE5hbWUgICAgICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSB0ZXN0 cGliX2luc190cnVuY3QgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg dCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgotIHRlc3RwdWJfZGVm YXVsdCAgICB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCisg ICAgICAgIE5hbWUgICAgICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHRlc3RwaWJfaW5zX3RydW5jdCB8IHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAg ICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgIHwgZgorIHRlc3RwdWJfZGVmYXVsdCAgICB8IHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgIHwgZgogKDIgcm93cykKIAogLS0tIGFk ZGluZyB0YWJsZXMKQEAgLTg3LDEwICs4NywxMCBAQCBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2Vz OwogLS0gc2hvdWxkIGJlIGFibGUgdG8gYWRkIHNjaGVtYSB0byAnRk9SIFRBQkxFJyBwdWJsaWNh dGlvbgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBBREQgVEFCTEVTIElOIFND SEVNQSBwdWJfdGVzdDsKIFxkUnArIHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQorICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICB8 IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKIFRhYmxl cyBmcm9tIHNjaGVtYXM6CkBAIC05OSwyMCArOTksMjAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoK IC0tIHNob3VsZCBiZSBhYmxlIHRvIGRyb3Agc2NoZW1hIGZyb20gJ0ZPUiBUQUJMRScgcHVibGlj YXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgRFJPUCBUQUJMRVMgSU4g U0NIRU1BIHB1Yl90ZXN0OwogXGRScCsgdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCi0gICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAg IHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl90YmwxIgogCiAt LSBzaG91bGQgYmUgYWJsZSB0byBzZXQgc2NoZW1hIHRvICdGT1IgVEFCTEUnIHB1YmxpY2F0aW9u CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIFNFVCBUQUJMRVMgSU4gU0NIRU1B IHB1Yl90ZXN0OwogXGRScCsgdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCi0gICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K LSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCisgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRh YmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgIHwgdCAg ICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QiCiAKQEAgLTEy MywxMCArMTIzLDEwIEBAIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBGT1Ig VEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv cl90Ymxfc2NoZW1hIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0LCBUQUJMRSBwdWJfdGVz dC50ZXN0cHViX25vcGs7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsgdGVzdHB1 Yl9mb3JfdGJsX3NjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICAgIHwgZgog VGFibGVzOgogICAgICJwdWJfdGVzdC50ZXN0cHViX25vcGsiCiBUYWJsZXMgZnJvbSBzY2hlbWFz OgpAQCAtMTQ0LDEwICsxNDQsMTAgQEAgTElORSAxOiAuLi5DQVRJT04gdGVzdHB1Yl9wYXJzZXJ0 c3QgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgZm9vLCB0ZXN0LmZvbzsKIC0tIHNob3VsZCBiZSBhYmxl IHRvIGFkZCBhIHRhYmxlIG9mIHRoZSBzYW1lIHNjaGVtYSB0byB0aGUgc2NoZW1hIHB1YmxpY2F0 aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBBREQgVEFCTEUgcHViX3Rl c3QudGVzdHB1Yl9ub3BrOwogXGRScCsgdGVzdHB1Yl9mb3JzY2hlbWEKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVtYQotICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWEKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAg ICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfbm9wayIK IFRhYmxlcyBmcm9tIHNjaGVtYXM6CkBAIC0xNTYsMTAgKzE1NiwxMCBAQCBUYWJsZXMgZnJvbSBz Y2hlbWFzOgogLS0gc2hvdWxkIGJlIGFibGUgdG8gZHJvcCB0aGUgdGFibGUKIEFMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIERST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9ub3Br OwogXGRScCsgdGVzdHB1Yl9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERM cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgICAg fCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdCIKIApAQCAtMTcwLDEwICsx NzAsMTAgQEAgRVJST1I6ICByZWxhdGlvbiAidGVzdHB1Yl9ub3BrIiBpcyBub3QgcGFydCBvZiB0 aGUgcHVibGljYXRpb24KIC0tIHNob3VsZCBiZSBhYmxlIHRvIHNldCB0YWJsZSB0byBzY2hlbWEg cHVibGljYXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIFNFVCBUQUJM RSBwdWJfdGVzdC50ZXN0cHViX25vcGs7CiBcZFJwKyB0ZXN0cHViX2ZvcnNjaGVtYQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2NoZW1hCi0g ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVtYQor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg ZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHViX3Rlc3QudGVzdHB1 Yl9ub3BrIgogCkBAIC0xOTUsMTAgKzE5NSwxMCBAQCBQdWJsaWNhdGlvbnM6CiAgICAgInRlc3Rw dWJfZm9yYWxsdGFibGVzIgogCiBcZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxlcwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JhbGx0YWJsZXMKLSAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcmFsbHRhYmxlcwor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwg ZiAgICAgICAgICB8IGYgICAgICAgICB8IGYKICgxIHJvdykKIAogRFJPUCBUQUJMRSB0ZXN0cHVi X3RibDI7CkBAIC0yMTAsMTkgKzIxMCwxOSBAQCBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjMg Rk9SIFRBQkxFIHRlc3RwdWJfdGJsMzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNCBGT1Ig VEFCTEUgT05MWSB0ZXN0cHViX3RibDM7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRS cCsgdGVzdHB1YjMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWIzCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1YjMKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Ymxp Yy50ZXN0cHViX3RibDMiCiAgICAgInB1YmxpYy50ZXN0cHViX3RibDNhIgogCiBcZFJwKyB0ZXN0 cHViNAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1YjQKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi NAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3Rw dWJfdGJsMyIKIApAQCAtMjQzLDEwICsyNDMsMTAgQEAgVVBEQVRFIHRlc3RwdWJfcGFydGVkMSBT RVQgYSA9IDE7CiAtLSBvbmx5IHBhcmVudCBpcyBsaXN0ZWQgYXMgYmVpbmcgaW4gcHVibGljYXRp b24sIG5vdCB0aGUgcGFydGl0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnBhcnRl ZCBBREQgVEFCTEUgdGVzdHB1Yl9wYXJ0ZWQ7CiBcZFJwKyB0ZXN0cHViX2ZvcnBhcnRlZAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ycGFydGVk Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnBhcnRl ZAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3Rw dWJfcGFydGVkIgogCkBAIC0yNjEsMTAgKzI2MSwxMCBAQCBBTFRFUiBUQUJMRSB0ZXN0cHViX3Bh cnRlZCBERVRBQ0ggUEFSVElUSU9OIHRlc3RwdWJfcGFydGVkMTsKIFVQREFURSB0ZXN0cHViX3Bh cnRlZDEgU0VUIGEgPSAxOwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JwYXJ0ZWQgU0VU IChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUpOwogXGRScCsgdGVzdHB1Yl9mb3Jw YXJ0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi X2ZvcnBhcnRlZAotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 Yl9mb3JwYXJ0ZWQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgICAgfCB0CiBUYWJsZXM6CiAgICAgInB1 YmxpYy50ZXN0cHViX3BhcnRlZCIKIApAQCAtMjkzLDEwICsyOTMsMTAgQEAgU0VUIGNsaWVudF9t aW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IEZPUiBU QUJMRSB0ZXN0cHViX3JmX3RibDEsIHRlc3RwdWJfcmZfdGJsMiBXSEVSRSAoYyA8PiAndGVzdCcg QU5EIGQgPCA1KSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCcpOwogUkVTRVQgY2xpZW50X21pbl9t ZXNzYWdlczsKIFxkUnArIHRlc3RwdWI1Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEg cm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8 IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWI1CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgIHwgZgogVGFibGVz OgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwxIgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90 YmwyIiBXSEVSRSAoKGMgPD4gJ3Rlc3QnOjp0ZXh0KSBBTkQgKGQgPCA1KSkKQEAgLTMwOSwxMCAr MzA5LDEwIEBAIFRhYmxlczoKIAogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjUgQUREIFRBQkxF IHRlc3RwdWJfcmZfdGJsMyBXSEVSRSAoZSA+IDEwMDAgQU5EIGUgPCAyMDAwKTsKIFxkUnArIHRl c3RwdWI1Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViNQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWI1CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAg ICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVz dHB1Yl9yZl90YmwxIgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwyIiBXSEVSRSAoKGMgPD4g J3Rlc3QnOjp0ZXh0KSBBTkQgKGQgPCA1KSkKQEAgLTMyOCwxMCArMzI4LDEwIEBAIFB1YmxpY2F0 aW9uczoKIAogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjUgRFJPUCBUQUJMRSB0ZXN0cHViX3Jm X3RibDI7CiBcZFJwKyB0ZXN0cHViNQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1YjUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBm ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViNQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoK ICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMSIKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJs MyIgV0hFUkUgKChlID4gMTAwMCkgQU5EIChlIDwgMjAwMCkpCkBAIC0zMzksMTAgKzMzOSwxMCBA QCBUYWJsZXM6CiAtLSByZW1vdmUgdGVzdHB1Yl9yZl90YmwxIGFuZCBhZGQgdGVzdHB1Yl9yZl90 YmwzIGFnYWluIChhbm90aGVyIFdIRVJFIGV4cHJlc3Npb24pCiBBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViNSBTRVQgVEFCTEUgdGVzdHB1Yl9yZl90YmwzIFdIRVJFIChlID4gMzAwIEFORCBlIDwg NTAwKTsKIFxkUnArIHRlc3RwdWI1Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViNQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYg ICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWI1CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg ZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgIHwgZgogVGFibGVzOgog ICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwzIiBXSEVSRSAoKGUgPiAzMDApIEFORCAoZSA8IDUw MCkpCiAKQEAgLTM3NSwxMCArMzc1LDEwIEBAIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VS Uk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3N5bnRheDEgRk9SIFRBQkxFIHRlc3Rw dWJfcmZfdGJsMSwgT05MWSB0ZXN0cHViX3JmX3RibDMgV0hFUkUgKGUgPCA5OTkpIFdJVEggKHB1 Ymxpc2ggPSAnaW5zZXJ0Jyk7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsgdGVz dHB1Yl9zeW50YXgxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWJfc3ludGF4MQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAg ICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWJfc3ludGF4MQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYg ICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAg ICAicHVibGljLnRlc3RwdWJfcmZfdGJsMSIKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMyIg V0hFUkUgKGUgPCA5OTkpCkBAIC0zODgsMTAgKzM4OCwxMCBAQCBTRVQgY2xpZW50X21pbl9tZXNz YWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9zeW50YXgyIEZPUiBU QUJMRSB0ZXN0cHViX3JmX3RibDEsIHRlc3RwdWJfcmZfc2NoZW1hMS50ZXN0cHViX3JmX3RibDUg V0hFUkUgKGggPCA5OTkpIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0Jyk7CiBSRVNFVCBjbGllbnRf bWluX21lc3NhZ2VzOwogXGRScCsgdGVzdHB1Yl9zeW50YXgyCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfc3ludGF4MgotICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ci0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAg ICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfc3ludGF4MgorICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU YWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgICB8IGYg ICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMSIKICAgICAi dGVzdHB1Yl9yZl9zY2hlbWExLnRlc3RwdWJfcmZfdGJsNSIgV0hFUkUgKGggPCA5OTkpCkBAIC01 MDYsMTAgKzUwNiwxMCBAQCBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjYgRk9SIFRBQkxFUyBJ TiBTQ0hFTUEgdGVzdHB1Yl9yZl9zY2hlbWEyOwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjYg U0VUIFRBQkxFUyBJTiBTQ0hFTUEgdGVzdHB1Yl9yZl9zY2hlbWEyLCBUQUJMRSB0ZXN0cHViX3Jm X3NjaGVtYTIudGVzdHB1Yl9yZl90Ymw2IFdIRVJFIChpIDwgOTkpOwogUkVTRVQgY2xpZW50X21p bl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWI2Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNgotICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI2CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVu Y2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFi bGVzOgogICAgICJ0ZXN0cHViX3JmX3NjaGVtYTIudGVzdHB1Yl9yZl90Ymw2IiBXSEVSRSAoaSA8 IDk5KQogVGFibGVzIGZyb20gc2NoZW1hczoKQEAgLTcyMywxMCArNzIzLDEwIEBAIENSRUFURSBQ VUJMSUNBVElPTiB0ZXN0cHViX3RhYmxlX2lucyBXSVRIIChwdWJsaXNoID0gJ2luc2VydCwgdHJ1 bmNhdGUnKTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViX3RhYmxlX2lucyBBREQgVEFCTEUgdGVzdHB1Yl90Ymw1IChhKTsJCS0tIG9rCiBcZFJw KyB0ZXN0cHViX3RhYmxlX2lucwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWJfdGFibGVfaW5zCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwg dCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViX3RhYmxlX2lucworICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAg ICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRh YmxlczoKICAgICAicHVibGljLnRlc3RwdWJfdGJsNSIgKGEpCiAKQEAgLTkwMCwxMCArOTAwLDEw IEBAIENSRUFURSBUQUJMRSB0ZXN0cHViX3RibF9ib3RoX2ZpbHRlcnMgKGEgaW50LCBiIGludCwg YyBpbnQsIFBSSU1BUlkgS0VZIChhLGMpKTsKIEFMVEVSIFRBQkxFIHRlc3RwdWJfdGJsX2JvdGhf ZmlsdGVycyBSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIHRlc3RwdWJfdGJsX2JvdGhfZmls dGVyc19wa2V5OwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9ib3RoX2ZpbHRlcnMgQUREIFRB QkxFIHRlc3RwdWJfdGJsX2JvdGhfZmlsdGVycyAoYSxjKSBXSEVSRSAoYyAhPSAxKTsKIFxkUnAr IHRlc3RwdWJfYm90aF9maWx0ZXJzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViX2JvdGhfZmlsdGVycwotICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWJfYm90aF9maWx0ZXJzCisgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMg fCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICAgIHwg ZgogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl90YmxfYm90aF9maWx0ZXJzIiAoYSwgYykg V0hFUkUgKGMgPD4gMSkKIApAQCAtMTEwOCwxMCArMTEwOCwxMCBAQCBFUlJPUjogIHJlbGF0aW9u ICJ0ZXN0cHViX3RibDEiIGlzIGFscmVhZHkgbWVtYmVyIG9mIHB1YmxpY2F0aW9uICJ0ZXN0cHVi X2ZvcnRibAogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGJsIEZPUiBUQUJMRSB0ZXN0 cHViX3RibDE7CiBFUlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcnRibCIgYWxyZWFkeSBl eGlzdHMKIFxkUnArIHRlc3RwdWJfZm9ydGJsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRibAotICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGJsCisgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMg fCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICAgIHwg ZgogVGFibGVzOgogICAgICJwdWJfdGVzdC50ZXN0cHViX25vcGsiCiAgICAgInB1YmxpYy50ZXN0 cHViX3RibDEiCkBAIC0xMTQ5LDEwICsxMTQ5LDEwIEBAIFB1YmxpY2F0aW9uczoKICAgICAidGVz dHB1Yl9mb3J0YmwiCiAKIFxkUnArIHRlc3RwdWJfZGVmYXVsdAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2RlZmF1bHQKLSAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2RlZmF1bHQKKyAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgfCBm ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfbm9wayIKICAgICAi cHVibGljLnRlc3RwdWJfdGJsMSIKQEAgLTEyMzAsMTAgKzEyMzAsMTAgQEAgUkVWT0tFIENSRUFU RSBPTiBEQVRBQkFTRSByZWdyZXNzaW9uIEZST00gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMjsK IERST1AgVEFCTEUgdGVzdHB1Yl9wYXJ0ZWQ7CiBEUk9QIFRBQkxFIHRlc3RwdWJfdGJsMTsKIFxk UnArIHRlc3RwdWJfZGVmYXVsdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViX2RlZmF1bHQKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBm ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViX2RlZmF1bHQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgfCBmCiAoMSBy b3cpCiAKIC0tIGZhaWwgLSBtdXN0IGJlIG93bmVyIG9mIHB1YmxpY2F0aW9uCkBAIC0xMjQzLDIw ICsxMjQzLDIwIEBAIEVSUk9SOiAgbXVzdCBiZSBvd25lciBvZiBwdWJsaWNhdGlvbiB0ZXN0cHVi X2RlZmF1bHQKIFJFU0VUIFJPTEU7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2RlZmF1bHQg UkVOQU1FIFRPIHRlc3RwdWJfZm9vOwogXGRScCB0ZXN0cHViX2ZvbwotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCi0gICAgTmFt ZSAgICAgfCAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gdGVzdHB1Yl9mb28gfCByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCisgICAgTmFtZSAgICAgfCAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB0ZXN0 cHViX2ZvbyB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgIHwgZgogKDEgcm93 KQogCiAtLSByZW5hbWUgYmFjayB0byBrZWVwIHRoZSByZXN0IHNpbXBsZQogQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9mb28gUkVOQU1FIFRPIHRlc3RwdWJfZGVmYXVsdDsKIEFMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfZGVmYXVsdCBPV05FUiBUTyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIy OwogXGRScCB0ZXN0cHViX2RlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHRlc3RwdWJfZGVmYXVsdCB8IHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlcjIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCisgICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCisgdGVzdHB1Yl9kZWZhdWx0IHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMiB8IGYg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgIHwgZiAg ICAgICAgIHwgZgogKDEgcm93KQogCiAtLSBhZGRpbmcgc2NoZW1hcyBhbmQgdGFibGVzCkBAIC0x MjcyLDE5ICsxMjcyLDE5IEBAIENSRUFURSBUQUJMRSAiQ1VSUkVOVF9TQ0hFTUEiLiJDVVJSRU5U X1NDSEVNQSIoaWQgaW50KTsKIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKIENS RUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEg cHViX3Rlc3QxOwogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICB8 IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKIAog Q1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIyX2ZvcnNjaGVtYSBGT1IgVEFCTEVTIElOIFNDSEVN QSBwdWJfdGVzdDEsIHB1Yl90ZXN0MiwgcHViX3Rlc3QzOwogXGRScCsgdGVzdHB1YjJfZm9yc2No ZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjJf Zm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIy X2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVt YXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtMTI5OCw0NCArMTI5OCw0 NCBAQCBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjZfZm9yc2NoZW1hIEZPUiBUQUJMRVMgSU4g U0NIRU1BICJDVVJSRU5UX1NDSEVNQSIsIENVUgogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJf Zm9ydGFibGUgRk9SIFRBQkxFICJDVVJSRU5UX1NDSEVNQSIuIkNVUlJFTlRfU0NIRU1BIjsKIFJF U0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViM19mb3JzY2hlbWEKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViM19mb3JzY2hlbWEK LSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjNfZm9yc2NoZW1h CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCBmICAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAi cHVibGljIgogCiBcZFJwKyB0ZXN0cHViNF9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNF9mb3JzY2hlbWEKLSAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjRfZm9yc2NoZW1hCisgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgIHwg dCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAiQ1VSUkVOVF9TQ0hFTUEi CiAKIFxkUnArIHRlc3RwdWI1X2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1X2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUg RERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAg ICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJDVVJSRU5UX1NDSEVNQSIKICAgICAi cHVibGljIgogCiBcZFJwKyB0ZXN0cHViNl9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjZfZm9yc2NoZW1hCisgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgIHwg dCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAiQ1VSUkVOVF9TQ0hFTUEi CiAgICAgInB1YmxpYyIKIAogXGRScCsgdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCi0gICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAg IHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJDVVJSRU5UX1NDSEVNQS5DVVJSRU5UX1ND SEVNQSIKIApAQCAtMTM2OSwxMCArMTM2OSwxMCBAQCBFUlJPUjogIHNjaGVtYSAidGVzdHB1Yl92 aWV3IiBkb2VzIG5vdCBleGlzdAogLS0gZHJvcHBpbmcgdGhlIHNjaGVtYSBzaG91bGQgcmVmbGVj dCB0aGUgY2hhbmdlIGluIHB1YmxpY2F0aW9uCiBEUk9QIFNDSEVNQSBwdWJfdGVzdDM7CiBcZFJw KyB0ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1YjJfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICAgIHwgZgog VGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVzdDIiCkBA IC0xMzgwLDIwICsxMzgwLDIwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAtLSByZW5hbWluZyB0 aGUgc2NoZW1hIHNob3VsZCByZWZsZWN0IHRoZSBjaGFuZ2UgaW4gcHVibGljYXRpb24KIEFMVEVS IFNDSEVNQSBwdWJfdGVzdDEgUkVOQU1FIHRvIHB1Yl90ZXN0MV9yZW5hbWVkOwogXGRScCsgdGVz dHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWIyX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxl cyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MV9yZW5hbWVkIgogICAgICJwdWJfdGVzdDIi CiAKIEFMVEVSIFNDSEVNQSBwdWJfdGVzdDFfcmVuYW1lZCBSRU5BTUUgdG8gcHViX3Rlc3QxOwog XGRScCsgdGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWIyX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExz IHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgICB8 IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3Qy IgpAQCAtMTQwMSwxMCArMTQwMSwxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogLS0gYWx0ZXIg cHVibGljYXRpb24gYWRkIHNjaGVtYQogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2No ZW1hIEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MjsKIFxkUnArIHRlc3RwdWIxX2ZvcnNj aGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIx X2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi MV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hl bWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTE0MTMsMTAgKzE0MTMs MTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2Zv cnNjaGVtYSBBREQgVEFCTEVTIElOIFNDSEVNQSBub25fZXhpc3RlbnRfc2NoZW1hOwogRVJST1I6 ICBzY2hlbWEgIm5vbl9leGlzdGVudF9zY2hlbWEiIGRvZXMgbm90IGV4aXN0CiBcZFJwKyB0ZXN0 cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVz IGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVzdDIiCkBAIC0xNDI1 LDEwICsxNDI1LDEwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiBBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViMV9mb3JzY2hlbWEgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwogRVJST1I6 ICBzY2hlbWEgInB1Yl90ZXN0MSIgaXMgYWxyZWFkeSBtZW1iZXIgb2YgcHVibGljYXRpb24gInRl c3RwdWIxX2ZvcnNjaGVtYSIKIFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAg ICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVz dDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTE0MzYsMTAgKzE0MzYsMTAgQEAgVGFibGVzIGZyb20g c2NoZW1hczoKIC0tIGFsdGVyIHB1YmxpY2F0aW9uIGRyb3Agc2NoZW1hCiBBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgRFJPUCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MjsK IFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERM cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgICAg fCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKQEAgLTE0NDcsMTAg KzE0NDcsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWIxX2ZvcnNjaGVtYSBEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QyOwogRVJST1I6ICB0 YWJsZXMgZnJvbSBzY2hlbWEgInB1Yl90ZXN0MiIgYXJlIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWNh dGlvbgogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJs ZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAg ICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKIApAQCAtMTQ1 OCwyOSArMTQ1OCwyOSBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogQUxURVIgUFVCTElDQVRJT04g dGVzdHB1YjFfZm9yc2NoZW1hIERST1AgVEFCTEVTIElOIFNDSEVNQSBub25fZXhpc3RlbnRfc2No ZW1hOwogRVJST1I6ICBzY2hlbWEgIm5vbl9leGlzdGVudF9zY2hlbWEiIGRvZXMgbm90IGV4aXN0 CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERE THMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICAg IHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogCiAtLSBkcm9wIGFs bCBzY2hlbWFzCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgRFJPUCBUQUJM RVMgSU4gU0NIRU1BIHB1Yl90ZXN0MTsKIFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQot ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEK KyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IGYgICAgICAgICAgfCB0ICAgICAgICAgfCBmCiAoMSByb3cpCiAKIC0tIGFsdGVyIHB1YmxpY2F0 aW9uIHNldCBtdWx0aXBsZSBzY2hlbWEKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNj aGVtYSBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDEsIHB1Yl90ZXN0MjsKIFxkUnArIHRl c3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJs ZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTE0 ODksMTAgKzE0ODksMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIEFMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWIxX2ZvcnNjaGVtYSBTRVQgVEFCTEVTIElOIFNDSEVNQSBub25fZXhpc3RlbnRfc2No ZW1hOwogRVJST1I6ICBzY2hlbWEgIm5vbl9leGlzdGVudF9zY2hlbWEiIGRvZXMgbm90IGV4aXN0 CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERE THMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICAg IHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVz dDIiCkBAIC0xNTAxLDEwICsxNTAxLDEwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAtLSByZW1v dmluZyB0aGUgZHVwbGljYXRlIHNjaGVtYXMKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2Zv cnNjaGVtYSBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDEsIHB1Yl90ZXN0MTsKIFxkUnAr IHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEg cm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBU YWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKQEAgLTE1ODMsMTggKzE1ODMs MTggQEAgU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FU SU9OIHRlc3RwdWIzX2ZvcnNjaGVtYTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJw KyB0ZXN0cHViM19mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViM19mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1YjNfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICAgIHwgZgog KDEgcm93KQogCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViM19mb3JzY2hlbWEgU0VUIFRBQkxF UyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwogXGRScCsgdGVzdHB1YjNfZm9yc2NoZW1hCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjNfZm9yc2NoZW1hCi0g ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzX2ZvcnNjaGVtYQor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg ZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1 Yl90ZXN0MSIKIApAQCAtMTYwNCwyMCArMTYwNCwyMCBAQCBDUkVBVEUgUFVCTElDQVRJT04gdGVz dHB1Yl9mb3JzY2hlbWFfZm9ydGFibGUgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxLCBU QQogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGVfZm9yc2NoZW1hIEZPUiBUQUJM RSBwdWJfdGVzdDIudGJsMSwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CiBSRVNFVCBjbGll bnRfbWluX21lc3NhZ2VzOwogXGRScCsgdGVzdHB1Yl9mb3JzY2hlbWFfZm9ydGFibGUKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2NoZW1hX2ZvcnRh YmxlCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWFf Zm9ydGFibGUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Yl90 ZXN0Mi50YmwxIgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogCiBcZFJw KyB0ZXN0cHViX2ZvcnRhYmxlX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlX2ZvcnNjaGVtYQorICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICB8 IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHViX3Rlc3QyLnRibDEiCiBUYWJsZXMgZnJv bSBzY2hlbWFzOgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxk IGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCmluZGV4IGJkNjczYTlkNjguLjdk ZmNjMTM4OTkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAor KysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQKQEAgLTQwLDYgKzQwLDcgQEAg dGVzdHMgKz0gewogICAgICAgJ3QvMDMxX2NvbHVtbl9saXN0LnBsJywKICAgICAgICd0LzAzMl9z dWJzY3JpYmVfdXNlX2luZGV4LnBsJywKICAgICAgICd0LzAzM19ydW5fYXNfdGFibGVfb3duZXIu cGwnLAorICAgICAgJ3QvMDM0X2RkbF9yZXBsaWNhdGlvbi5wbCcsCiAgICAgICAndC8xMDBfYnVn cy5wbCcsCiAgICAgXSwKICAgfSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAzNF9kZGxfcmVwbGljYXRpb24ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzRfZGRs X3JlcGxpY2F0aW9uLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmYy MzlkNjk2OTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzRf ZGRsX3JlcGxpY2F0aW9uLnBsCkBAIC0wLDAgKzEsMzc0IEBACisjIENvcHlyaWdodCAoYykgMjAy MiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyMgUmVncmVzc2lvbiB0ZXN0 cyBmb3IgbG9naWNhbCByZXBsaWNhdGlvbiBvZiBERExzCisjCit1c2Ugc3RyaWN0OwordXNlIHdh cm5pbmdzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworbXkgJG5vZGVfcHVibGlzaGVyID0gUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKKyRub2RlX3B1Ymxpc2hl ci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9wdWJsaXNoZXIt PnN0YXJ0OworCitteSAkbm9kZV9zdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl ci0+bmV3KCdzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5pbml0KGFsbG93c19zdHJl YW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCitteSAkZGRs ID0gIkNSRUFURSBUQUJMRSB0ZXN0X3JlcChpZCBpbnQgcHJpbWFyeSBrZXksIG5hbWUgdmFyY2hh ciwgdmFsdWUgaW50ZWdlcik7IjsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICRkZGwpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VS VCBJTlRPIHRlc3RfcmVwIFZBTFVFUyAoMSwgJ2RhdGExJywgMSk7Iik7Ciskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJGRkbCk7CisKK215ICRwdWJsaXNoZXJfY29ubnN0 ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElPTiBt eXB1YiBGT1IgQUxMIFRBQkxFUyB3aXRoIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxl dGUnLCBkZGwgPSAndGFibGUnKTsiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIG15c3ViIENPTk5FQ1RJT04gJyRwdWJsaXNo ZXJfY29ubnN0cicgUFVCTElDQVRJT04gbXlwdWI7Iik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJ215c3ViJyk7CisKKyMgTWFrZSBzdXJlIHdlIGhhdmUgZnVsbHkgc3luY2hy b25pemVkIHRoZSB0YWJsZS4KKyMgVGhpcyBwcmV2ZW50cyBBTFRFUiBUQUJMRSBjb21tYW5kIGJl bG93IGZyb20gYmVpbmcgZXhlY3V0ZWQgZHVyaW5nIHRhYmxlIHN5bmNocm9uaXphdGlvbi4KKyRu b2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKyAgICJTRUxFQ1Qg Q09VTlQoMSkgPSAwIEZST00gcGdfc3Vic2NyaXB0aW9uX3JlbCBzciBXSEVSRSBzci5zcnN1YnN0 YXRlIE5PVCBJTiAoJ3MnLCAncicpIEFORCBzci5zcnJlbGlkID0gJ3Rlc3RfcmVwJzo6cmVnY2xh c3MiCispOworCisjIFRlc3QgQUxURVIgVEFCTEUgQURECiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF9yZXAgQUREIGM0IGludDsiKTsKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3Jl cCBWQUxVRVMgKDIsICdkYXRhMicsIDIsIDIpOyIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCdteXN1YicpOworbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF9yZXAgV0hFUkUgYzQg PSAyOyIpOworaXMoJHJlc3VsdCwgcXEoMSksICdBTFRFUiB0ZXN0X3JlcCBBREQgcmVwbGljYXRl ZCcpOworCisjIFRlc3QgQUxURVIgVEFCTEUgRFJPUAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRlc3RfcmVwIERST1AgYzQ7Iik7Ciskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF9yZXAgd2hl cmUgaWQgPSAyOyIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1Yicp OworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VM RUNUIGNvdW50KCopIGZyb20gdGVzdF9yZXA7Iik7CitpcygkcmVzdWx0LCBxcSgxKSwgJ0FMVEVS IHRlc3RfcmVwIERST1AgcmVwbGljYXRlZCcpOworCisjIFRlc3QgQUxURVIgVEFCTEUgQUxURVIg VFlQRQorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxF IHRlc3RfcmVwIEFMVEVSIHZhbHVlIFRZUEUgdmFyY2hhciIpOworJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfcmVwIFZBTFVFUyAoMywgJ2Rh dGEzJywgJzMnKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWIn KTsKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfcmVwIFdIRVJFIHZhbHVlID0gJzMnOyIpOworaXMoJHJl c3VsdCwgcXEoMSksICdBTFRFUiB0ZXN0X3JlcCBBTFRFUiBDT0xVTU4gVFlQRSByZXBsaWNhdGVk Jyk7CisKKyMgVGVzdCBBTFRFUiBUQUJMRSBBTFRFUiBTRVQgREVGQVVMVAorIyBDaGVjayBpZiB3 ZSBoYXZlIHRoZSBkZWZhdWx0IHZhbHVlIGFmdGVyIHRoZSBkaXJlY3QgaW5zZXJ0IHRvIHN1YnNj cmliZXIgbm9kZS4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJBTFRF UiBUQUJMRSB0ZXN0X3JlcCBBTFRFUiBDT0xVTU4gdmFsdWUgU0VUIERFRkFVTFQgJ2ZvbyciKTsK KyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF9yZXAgVkFMVUVT ICg0LCAnZGF0YTQnKTsiKTsKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIlNFTEVDVCB2YWx1ZSBGUk9NIHRlc3RfcmVwIFdIRVJFIGlkID0gNDsiKTsK K2lzKCRyZXN1bHQsICdmb28nLCAnQUxURVIgdGVzdF9yZXAgQUxURVIgU0VUIERFRkFVTFQgcmVw bGljYXRlZCcpOworCisjIFRlc3QgQUxURVIgVEFCTEUgQUxURVIgRFJPUCBERUZBVUxUCisjIENo ZWNrIGlmIHdlIGRvbid0IGhhdmUgdGhlIGRlZmF1bHQgdmFsdWUgcHJldmlvdXNseSBkZWZpbmVk LgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRl c3RfcmVwIEFMVEVSIENPTFVNTiB2YWx1ZSBEUk9QIERFRkFVTFQ7Iik7Ciskbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3ViJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfcmVwIFZBTFVFUyAoNSwgJ2RhdGE1Jyk7 Iik7CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgdmFsdWUgSVMgTlVMTCBGUk9NIHRlc3RfcmVwIFdIRVJFIGlkID0gNTsiKTsKK2lzKCRy ZXN1bHQsIHEodCksICdBTFRFUiB0ZXN0X3JlcCBBTFRFUiBEUk9QIERFRkFVTFQgcmVwbGljYXRl ZCcpOworCisjIFRlc3QgQUxURVIgVEFCTEUgQUxURVIgU0VUIE5PVCBOVUxMCisjIFJlbW92ZSB0 aGUgZXhpc3RpbmcgcmVjb3JkIHRoYXQgY29udGFpbnMgbnVsbCB2YWx1ZSBmaXJzdC4KK215ICgk c3Rkb3V0LCAkc3RkZXJyKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiREVMRVRFIEZST00gdGVzdF9yZXAgV0hFUkUgaWQgPSA1OyIpOworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRlc3RfcmVwIEFMVEVSIHZhbHVl IFNFVCBOT1QgTlVMTDsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnbXlz dWInKTsKKyRub2RlX3N1YnNjcmliZXItPnBzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRl c3RfcmVwIFZBTFVFUyAoNiwgJ2RhdGE2Jyk7IiwKKwkJCQkJICAgb25fZXJyb3Jfc3RvcCA9PiAw LAorCQkJCQkgICBzdGRlcnIgPT4gXCRzdGRlcnIsCisJCQkJCSAgIHN0ZG91dCA9PiBcJHN0ZG91 dCk7Ciskc3RkZXJyID1+IC9FUlJPUjogIG51bGwgdmFsdWUgaW4gY29sdW1uIFwidmFsdWVcIiBv ZiByZWxhdGlvbiBcInRlc3RfcmVwXCIgdmlvbGF0ZXMgbm90LW51bGwgY29uc3RyYWludC8KKyAg b3IgZGllICJmYWlsZWQgdG8gcmVwbGljYXRlIEFMVEVSIFRBQkxFIEFMVEVSIFNFVCBOT1QgTlVM TCI7CisKKyMgVGVzdCBBTFRFUiBUQUJMRSBBTFRFUiBEUk9QIE5PVCBOVUxMCiskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF9yZXAgQUxURVIg dmFsdWUgRFJPUCBOT1QgTlVMTDsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgnbXlzdWInKTsKKyMgSW5zZXJ0IHNhbWUgZGF0YSB0aGF0IGhhcyBOVUxMIHZhbHVlLiBUaGlz IGZhaWxlZCBiZWZvcmUgYnV0IG5vdyBzaG91bGQgc3VjY2VlZC4KKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF9yZXAgVkFMVUVTICg2LCAn ZGF0YTYnKTsiKTsKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIlNFTEVDVCB2YWx1ZSBJUyBOVUxMIEZST00gdGVzdF9yZXAgV0hFUkUgaWQgPSA2OyIp OworaXMoJHJlc3VsdCwgcSh0KSwgIkFMVEVSIHRlc3RfcmVwIEFMVEVSIERST1AgTk9UIE5VTEwg cmVwbGljYXRlZCIpOworCisjIFRlc3QgQUxURVIgVEFCTEUgU0VUIFVOTE9HR0VECiskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQUxURVIgVEFCTEUgdGVzdF9yZXAgU0VU IFVOTE9HR0VEOycpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1Yicp OworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRl c3RfcmVwIFZBTFVFUyAoNywgJ2RhdGE3JywgJzcnKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfcmVwIFdIRVJFIGlk ID0gNzsiKTsKK2lzKCRyZXN1bHQsIHFxKDApLCAnQUxURVIgdGVzdF9yZXAgU0VUIFVOTE9HR0VE IHJlcGxpY2F0ZWQnKTsKKworIyBUZXN0IEFMVEVSIFRBQkxFIFNFVCBMT0dHRUQKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdBTFRFUiBUQUJMRSB0ZXN0X3JlcCBTRVQg TE9HR0VEOycpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOwor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3Rf cmVwIFZBTFVFUyAoOCwgJ2RhdGE4JywgJzgnKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgnbXlzdWInKTsKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfcmVwIFdIRVJFIGlkID0g ODsiKTsKK2lzKCRyZXN1bHQsIHFxKDEpLCAnQUxURVIgdGVzdF9yZXAgU0VUIExPR0dFRCByZXBs aWNhdGVkJyk7CisKKyMgVGVzdCBDUkVBVEUgVEFCTEUgYW5kIERNTCBjaGFuZ2VzCiskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRtcCAoYSBpbnQs IGIgdmFyY2hhcik7Iik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3Vi Jyk7CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgY291bnQoKikgZnJvbSBwZ190YWJsZXMgd2hlcmUgdGFibGVuYW1lID0gJ3RtcCc7Iik7 CitpcygkcmVzdWx0LCBxcSgxKSwgJ0NSRUFURSB0bXAgaXMgcmVwbGljYXRlZCcpOworJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRtcCB2YWx1ZXMg KDEsICdhJykiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNF UlQgSU5UTyB0bXAgdmFsdWVzICgyLCAnYicpIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJ215c3ViJyk7CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgZnJvbSB0bXA7Iik7CitpcygkcmVzdWx0LCBx cSgyKSwgJ0RNTCBDaGFuZ2VzIHRvIHRtcCBhcmUgcmVwbGljYXRlZCcpOworCisjIFRlc3QgQ1JF QVRFIFRBQkxFIElOSEVSSVRTCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiQ1JFQVRFIFRBQkxFIHRtcDIgKGMzIGludCkgSU5IRVJJVFMgKHRtcCk7Iik7Ciskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdG1wMiBWQUxVRVMg KDEsICdhJywgMSk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3Vi Jyk7CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgY291bnQoKikgZnJvbSBwZ190YWJsZXMgd2hlcmUgdGFibGVuYW1lID0gJ3RtcDInOyIp OworaXMoJHJlc3VsdCwgcXEoMSksICdDUkVBVEUgVEFCTEUgSU5IRVJJVFMgaXMgcmVwbGljYXRl ZCcpOworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIGNvdW50KCopIGZyb20gdG1wMjsiKTsKK2lzKCRyZXN1bHQsIHFxKDEpLCAnaW5zZXJ0 aW5nIHNvbWUgZGF0YSB0byBpbmhlcml0ZWQgdGFibGUgcmVwbGljYXRlZCcpOworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgVEFCTEUgdG1wMiIpOworCisjIFRl c3QgQ1JFQVRFIFRBQkxFIExJS0UKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJDUkVBVEUgVEFCTEUgdG1wMyAoYzMgaW50LCBMSUtFIHRtcCk7Iik7Ciskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdG1wMyBWQUxVRVMgKDEs IDEsICdhJyk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3ViJyk7 CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgY291bnQoKikgZnJvbSBwZ190YWJsZXMgd2hlcmUgdGFibGVuYW1lID0gJ3RtcDMnOyIpOwor aXMoJHJlc3VsdCwgcXEoMSksICdDUkVBVEUgVEFCTEUgTElLRSByZXBsaWNhdGVkJyk7CiskcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291 bnQoKikgZnJvbSB0bXAzOyIpOworaXMoJHJlc3VsdCwgcXEoMSksICdpbnNlcnQgc29tZSBkYXRh IHRvIGEgdGFibGUgZGVmaW5lZCB3aXRoIExJS0UgcmVwbGljYXRlZCcpOworJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgVEFCTEUgdG1wMyIpOworCisjIFRlc3Qg RFJPUCBUQUJMRQorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1Ag VEFCTEUgdG1wOyIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1Yicp OworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VM RUNUIGNvdW50KCopIGZyb20gcGdfdGFibGVzIHdoZXJlIHRhYmxlbmFtZSA9ICd0bXAnOyIpOwor aXMoJHJlc3VsdCwgcXEoMCksICdUQUJMRSB0bXAgaXMgZHJvcHBlZCcpOworCisjIFRlc3QgQ1JF QVRFIFRBQkxFIElGIE5PVCBFWElTVFMKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyB0bXAgKGlkIGludCk7Iik7Ciskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdG1wIFZBTFVF UyAoMSk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3ViJyk7Cisk cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg Y291bnQoKikgZnJvbSBwZ190YWJsZXMgd2hlcmUgdGFibGVuYW1lID0gJ3RtcCc7Iik7Citpcygk cmVzdWx0LCBxcSgxKSwgJ0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIHJlcGxpY2F0ZWQnKTsK KyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCBjb3VudCgqKSBmcm9tIHRtcDsiKTsKK2lzKCRyZXN1bHQsIHFxKDEpLCAnaW5zZXJ0aW5nIGRh dGEgdG8gYSB0YWJsZSByZXBsaWNhdGVkJyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiRFJPUCBUQUJMRSB0bXAiKTsKKworIyBUZXN0IENSRUFURSBUQUJMRSBJRiBO T1QgRVhJU1RTIChjaGVjayBpZiB3ZSBza2lwIHRvIGNyZWF0ZSBhIHRhYmxlCisjIHdoZW4gd2Ug aGF2ZSB0aGUgdGFibGUgb24gdGhlIHN1YnNjcmliZXIgaW4gYWR2YW5jZSwgYW5kIGlmIHdlIHN1 Y2NlZWQKKyMgaW4gcmVwbGljYXRpbmcgY2hhbmdlcy4pCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0bXAgKGlkIGludCk7Iik7Ciskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElT VFMgdG1wIChpZCBpbnQpOyIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIklOU0VSVCBJTlRPIHRtcCBWQUxVRVMgKDEpOyIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCdteXN1YicpOworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIGZyb20gdG1wOyIpOworaXMoJHJlc3Vs dCwgcXEoMSksICdDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyByZXBsaWNhdGVkJyk7Ciskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBUQUJMRSB0bXAiKTsKKwor IyBUZXN0IENSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIChjaGVjayBpZiB3ZSBza2lwIHRvIGNy ZWF0ZSBhIHRhYmxlCisjIHdoZW4gd2UgaGF2ZSB0aGUgdGFibGUgb24gdGhlIHB1Ymxpc2hlciwg YnV0IG5vdCBvbiB0aGUgc3Vic2NyaWJlci4pCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRtcCAoaWQgaW50KTsiKTsKKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyB0bXAg KGlkIGludCk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5T RVJUIElOVE8gdG1wIFZBTFVFUyAoMSk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJ215c3ViJyk7CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgZnJvbSB0bXA7Iik7CitpcygkcmVzdWx0LCBxcSgx KSwgJ0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIHJlcGxpY2F0ZWQnKTsKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFRBQkxFIHRtcCIpOworCisjIFRlc3Qg Q1JFQVRFIFRBQkxFIHdpdGggY29sbGF0ZQorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIkNSRUFURSBUQUJMRSB0bXAgKG5hbWUgdGV4dCBDT0xMQVRFIFwiQ1wiKTsiKTsK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0bXAg VkFMVUVTICgnZm9vJyk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ215 c3ViJyk7CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgY29sbGF0aW9uX25hbWUgRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEuY29sdW1ucyBX SEVSRSB0YWJsZV9uYW1lID0gJ3RtcCc7Iik7CitpcygkcmVzdWx0LCBxcShDKSwgJ0NSRUFURSBU QUJMRSB3aXRoIGNvbGxhdGUgcmVwbGljYXRlZCcpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkRST1AgVEFCTEUgdG1wIik7CisKKyMgVGVzdCBDUkVBVEUgVEFCTEUg d2l0aCBuYW1lZCBjb25zdHJhaW50Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiQ1JFQVRFIFRBQkxFIHRtcCAoaWQgaW50IENPTlNUUkFJTlQgXCJtdXN0IGJlIGJpZ2dl ciB0aGFuIDEwXCIgQ0hFQ0sgKGlkID4gMTApKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgnbXlzdWInKTsKKyRub2RlX3N1YnNjcmliZXItPnBzcWwoJ3Bvc3RncmVzJywg IklOU0VSVCBJTlRPIHRtcCBWQUxVRVMgKDEpOyIsCisJCQkJCSAgIG9uX2Vycm9yX3N0b3AgPT4g MCwKKwkJCQkJICAgc3RkZXJyID0+IFwkc3RkZXJyLAorCQkJCQkgICBzdGRvdXQgPT4gXCRzdGRv dXQpOworJHN0ZGVyciA9fiAvRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAidG1wIiB2aW9s YXRlcyBjaGVjayBjb25zdHJhaW50ICJtdXN0IGJlIGJpZ2dlciB0aGFuIDEwIi8KKyAgb3IgZGll ICJmYWlsZWQgdG8gcmVwbGljYXRlIG5hbWVkIGNvbnN0cmFpbnQgYXQgY3JlYXRpbmcgdGFibGUi OworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgVEFCTEUgdG1w OyIpOworCisjIFRlc3QgQ1JFQVRFIFRBQkxFIHdpdGggdmFyaW91cyB0eXBlcyBvZiBjb25zdHJh aW50cy4KKyMgTk9UIE5VTEwgY29uc3RyYWludAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0bXAgKGlkIGludCwgbmFtZSB0ZXh0IE5PVCBOVUxM KTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKyRub2Rl X3N1YnNjcmliZXItPnBzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRtcCBWQUxVRVMgKDEp OyIsCisJCQkJCSAgIG9uX2Vycm9yX3N0b3AgPT4gMCwKKwkJCQkJICAgc3RkZXJyID0+IFwkc3Rk ZXJyLAorCQkJCQkgICBzdGRvdXQgPT4gXCRzdGRvdXQpOworJHN0ZGVyciA9fiAvRVJST1I6ICBu dWxsIHZhbHVlIGluIGNvbHVtbiAibmFtZSIgb2YgcmVsYXRpb24gInRtcCIgdmlvbGF0ZXMgbm90 LW51bGwgY29uc3RyYWludC8KKyAgb3IgZGllICJmYWlsZWQgdG8gcmVwbGljYXRlIG5vbiBudWxs IGNvbnN0cmFpbnQgYXQgY3JlYXRpbmcgdGFibGUiOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkRST1AgVEFCTEUgdG1wOyIpOworCisjIE5VTEwgY29uc3RyYWludAor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0bXAg KGlkIGludCwgbmFtZSB0ZXh0IE5VTEwpOyIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCdteXN1YicpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJJTlNFUlQgSU5UTyB0bXAgVkFMVUVTICgxKTsiKTsKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBuYW1lIElTIE5VTEwgRlJPTSB0bXA7 Iik7CitpcygkcmVzdWx0LCBxcSh0KSwgIkNSRUFURSBUQUJMRSB3aXRoIE5VTEwgY29uc3RyYWlu dCByZXBsaWNhdGVkIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi RFJPUCBUQUJMRSB0bXAiKTsKKworIyBDSEVDSyBjb25zdHJhaW50Ciskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRtcCAoaWQgaW50LCBwcm9kdWN0 X2FtZSB0ZXh0LCBwcmljZSBpbnQgQ0hFQ0sgKHByaWNlID4gMCkpOyIpOworJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOworJG5vZGVfc3Vic2NyaWJlci0+cHNxbCgn cG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdG1wIFZBTFVFUyAoMSwgJ2ZvbycsIC0xMDApOyIsCisJ CQkJCSAgIG9uX2Vycm9yX3N0b3AgPT4gMCwKKwkJCQkJICAgc3RkZXJyID0+IFwkc3RkZXJyLAor CQkJCQkgICBzdGRvdXQgPT4gXCRzdGRvdXQpOworJHN0ZGVyciA9fiAvRVJST1I6ICBuZXcgcm93 IGZvciByZWxhdGlvbiAidG1wIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJ0bXBfcHJpY2Vf Y2hlY2siLworICBvciBkaWUgImZhaWxlZCB0byByZXBsaWNhdGUgQ0hFQ0sgY29uc3RyYWludCI7 Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBUQUJMRSB0bXA7 Iik7CisKKyMgREVGQVVMVAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IkNSRUFURSBUQUJMRSB0bXAgKGlkIGludCwgbmFtZSB0ZXh0IERFRkFVTFQgJ2ZvbycpOyIpOwor JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOworJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0bXAgVkFMVUVTICgxKTsi KTsKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBuYW1lIGZyb20gdG1wOyIpOworaXMoJHJlc3VsdCwgcXEoZm9vKSwgIkNSRUFURSBUQUJM RSB3aXRoIGRlZmF1bHQgdmFsdWUgcmVwbGljYXRlZCIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgVEFCTEUgdG1wIik7CisKKyMgVU5JUVVFIGNvbnN0cmFp bnQKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUg dG1wIChpZCBpbnQgVU5JUVVFKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJJTlNFUlQgSU5UTyB0bXAgVkFMVUVTICgxKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKyRub2RlX3N1YnNjcmliZXItPnBzcWwoJ3Bvc3Rn cmVzJywgIklOU0VSVCBJTlRPIHRtcCBWQUxVRVMgKDEpOyIsCisJCQkJCSAgIG9uX2Vycm9yX3N0 b3AgPT4gMCwKKwkJCQkJICAgc3RkZXJyID0+IFwkc3RkZXJyLAorCQkJCQkgICBzdGRvdXQgPT4g XCRzdGRvdXQpOworJHN0ZGVyciA9fiAvRVJST1I6ICBkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xh dGVzIHVuaXF1ZSBjb25zdHJhaW50ICJ0bXBfaWRfa2V5Ii8KKyAgb3IgZGllICJmYWlsZWQgdG8g cmVwbGljYXRlIGNvbnN0cmFpbnQgYXQgY3JlYXRpbmcgdGFibGUiOworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgVEFCTEUgdG1wOyIpOworCisjIFBSSU1BUlkg S0VZCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxF IHRtcCAoaWQgaW50IFBSSU1BUlkgS0VZLCBuYW1lIHRleHQpOyIpOworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRtcCBWQUxVRVMgKDEsICdmb28n KTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKyRub2Rl X3N1YnNjcmliZXItPnBzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRtcCBWQUxVRVMgKDEs ICdiYXInKTsiLAorCQkJCQkgICBvbl9lcnJvcl9zdG9wID0+IDAsCisJCQkJCSAgIHN0ZGVyciA9 PiBcJHN0ZGVyciwKKwkJCQkJICAgc3Rkb3V0ID0+IFwkc3Rkb3V0KTsKKyRzdGRlcnIgPX4gL0VS Uk9SOiAgZHVwbGljYXRlIGtleSB2YWx1ZSB2aW9sYXRlcyB1bmlxdWUgY29uc3RyYWludCAidG1w X3BrZXkiLworICBvciBkaWUgImZhaWxlZCB0byByZXBsaWNhdGUgcHJpbWFyeSBrZXkgYXQgY3Jl YXRpbmcgdGFibGUiOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRS T1AgVEFCTEUgdG1wOyIpOworCisjIEVYQ0xVREUKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgY2lyY2xlcyAoYyBjaXJjbGUsIEVYQ0xVREUgVVNJ TkcgZ2lzdCAoYyBXSVRIICYmKSk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiSU5TRVJUIElOVE8gY2lyY2xlcyBWQUxVRVMgKCc8KDEsIDEpLCAxPic6OmNpcmNs ZSk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3ViJyk7Ciskbm9k ZV9zdWJzY3JpYmVyLT5wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyBjaXJjbGVzIFZBTFVF UyAoJzwoMSwgMSksIDE+Jzo6Y2lyY2xlKTsiLAorCQkJCQkgICBvbl9lcnJvcl9zdG9wID0+IDAs CisJCQkJCSAgIHN0ZGVyciA9PiBcJHN0ZGVyciwKKwkJCQkJICAgc3Rkb3V0ID0+IFwkc3Rkb3V0 KTsKKyRzdGRlcnIgPX4gL0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4 Y2x1c2lvbiBjb25zdHJhaW50ICJjaXJjbGVzX2NfZXhjbCIvCisgIG9yIGRpZSAiZmFpbGVkIHRv IHJlcGxpY2F0ZSBFWENMVURFIGF0IGNyZWF0aW5nIHRhYmxlIjsKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFRBQkxFIGNpcmNsZXMiKTsKKworIyBSRUZFUkVO Q0VTCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxF IHByb2R1Y3QgKGlkIGludCBQUklNQVJZIEtFWSwgbmFtZSB0ZXh0KTsiKTsKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyBwcm9kdWN0IFZBTFVFUyAo MSwgJ2ZvbycpOyIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklO U0VSVCBJTlRPIHByb2R1Y3QgVkFMVUVTICgyLCAnYmFyJyk7Iik7Ciskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIG9yZGVycyAob3JkZXJfaWQgaW50 IFBSSU1BUlkgS0VZLCBwcm9kdWN0X2lkIGludCBSRUZFUkVOQ0VTIHByb2R1Y3QgKGlkKSkiKTsK KyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKyRub2RlX3N1YnNj cmliZXItPnBzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIG9yZGVycyBWQUxVRVMgKDEsIDEw KSIsCisJCQkJCSAgIG9uX2Vycm9yX3N0b3AgPT4gMCwKKwkJCQkJICAgc3RkZXJyID0+IFwkc3Rk ZXJyLAorCQkJCQkgICBzdGRvdXQgPT4gXCRzdGRvdXQpOworJHN0ZGVyciA9fiAvRVJST1I6ICBp bnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJvcmRlcnMiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNv bnN0cmFpbnQgIm9yZGVyc19wcm9kdWN0X2lkX2ZrZXkiLworICBvciBkaWUgImZhaWxlZCB0byBy ZXBsaWNhdGUgUkVGRVJFTkNFUyBhdCBjcmVhdGluZyB0YWJsZSI7Ciskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBUQUJMRSBvcmRlcnMiKTsKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFRBQkxFIHByb2R1Y3QiKTsKKworIyBE RUZFUlJBQkxFCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRF IFRBQkxFIHRtcCAoaWQgaW50IFBSSU1BUlkgS0VZIERFRkVSUkFCTEUsIG5hbWUgdGV4dCk7Iik7 Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdG1w IFZBTFVFUyAoMSwgJ2ZvbycpOyIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIklOU0VSVCBJTlRPIHRtcCBWQUxVRVMgKDIsICdiYXInKTsiKTsKKyRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKyMgUXVpY2sgY2hlY2sgb2YgZGVmZXJy YWJsZSBjbGF1c2UKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVVBE QVRFIHRtcCBTRVQgaWQgPSBpZCArIDE7Iik7CisjIEFsc28sIGV4ZWN1dGUgYSB0ZXN0IHRoYXQg c2hvdWxkIGZhaWwgZm9yIElOSVRJQUxMWSBJTU1FRElBVEUodGhlIGRlZmF1bHQpCiskbm9kZV9z dWJzY3JpYmVyLT5wc3FsKCdwb3N0Z3JlcycsIHFxKAorQkVHSU47CitVUERBVEUgdG1wIFNFVCBp ZCA9IGlkICsgMTsKK0lOU0VSVCBJTlRPIHRtcCBWQUxVRVMgKDMsICdmb29iYXInKTsKK0RFTEVU RSBGUk9NIHRtcCBXSEVSRSBpZCA9IDM7CitDT01NSVQ7CispLCBvbl9lcnJvcl9zdG9wID0+IDAs IHN0ZGVyciA9PiBcJHN0ZGVyciwgc3Rkb3V0ID0+IFwkc3Rkb3V0KTsKKyRzdGRlcnIgPX4gL0VS Uk9SOiAgZHVwbGljYXRlIGtleSB2YWx1ZSB2aW9sYXRlcyB1bmlxdWUgY29uc3RyYWludCAidG1w X3BrZXkiLworICBvciBkaWUgImZhaWxlZCB0byByZXBsaWNhdGUgREVGRVJSQUJMRSBhdCBjcmVh dGluZyB0YWJsZSI7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJP UCBUQUJMRSB0bXA7Iik7CisKKyMgTk9UIERFRkVSUkFCTEUKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdG1wIChpZCBpbnQgUFJJTUFSWSBLRVkg Tk9UIERFRkVSUkFCTEUsIG5hbWUgdGV4dCk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdG1wIFZBTFVFUyAoMSwgJ2ZvbycpOyIpOworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRtcCBWQUxV RVMgKDIsICdiYXInKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnbXlz dWInKTsKKyRub2RlX3N1YnNjcmliZXItPnBzcWwoJ3Bvc3RncmVzJywgIlVQREFURSB0bXAgU0VU IGlkID0gaWQgKyAxOyIsCisJCQkJCSAgIG9uX2Vycm9yX3N0b3AgPT4gMCwKKwkJCQkJICAgc3Rk ZXJyID0+IFwkc3RkZXJyLAorCQkJCQkgICBzdGRvdXQgPT4gXCRzdGRvdXQpOworJHN0ZGVyciA9 fiAvRVJST1I6ICBkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50 ICJ0bXBfcGtleSIvCisgIG9yIGRpZSAiZmFpbGVkIHRvIHJlcGxpY2F0ZSBOT1QgREVGRVJSQUJM RSBhdCBjcmVhdGluZyB0YWJsZSI7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiRFJPUCBUQUJMRSB0bXA7Iik7CisKKyMgREVGRVJSQUJMRSBhbmQgSU5JVElBTExZIERF RkVSUkVECiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRB QkxFIHRtcCAoaWQgaW50IFBSSU1BUlkgS0VZIERFRkVSUkFCTEUgSU5JVElBTExZIERFRkVSUkVE LCBuYW1lIHRleHQpOyIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IklOU0VSVCBJTlRPIHRtcCBWQUxVRVMgKDEsICdmb28nKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0bXAgVkFMVUVTICgyLCAnYmFyJyk7 Iik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3ViJyk7CisjIFF1aWNr IGNoZWNrIG9mIGRlZmVycmFibGUgY2xhdXNlCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIlVQREFURSB0bXAgU0VUIGlkID0gaWQgKyAxOyIpOworIyBBbHNvLCBleGVj dXRlIGEgdGVzdCB0aGF0IHNob3VsZCBzdWNjZWVkIGZvciBJTklUSUFMTFkgREVGRVJSRUQKKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKK0JFR0lOOworVVBEQVRF IHRtcCBTRVQgaWQgPSBpZCArIDE7CitJTlNFUlQgSU5UTyB0bXAgVkFMVUVTICgzLCAnZm9vYmFy Jyk7CitERUxFVEUgRlJPTSB0bXAgV0hFUkUgaWQgPSAzOworQ09NTUlUOworKSk7Ciskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBUQUJMRSB0bXA7Iik7CisKKyMg VGVzdCBDUkVBVEUgVEFCTEUgd2l0aCB0YWJsZSBjb25zdHJhaW50CisjIFdlIHdpbGwgc2V0IHR3 byBjaGVja3MgYW5kIGNvbmR1Y3QgdHdvIGluc2VydHMgdGhhdCBzaG91bGQgZmFpbCByZXNwZWN0 aXZlbHkuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUg VEFCTEUgdG1wIChwcmljZSBpbnQsIGRpc2NvdW50ZWRfcHJpY2UgaW50LCBDSEVDSyAoZGlzY291 bnRlZF9wcmljZSA+IDAgQU5EIHByaWNlID4gZGlzY291bnRlZF9wcmljZSkpOyIpOworJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOworJG5vZGVfc3Vic2NyaWJlci0+ cHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdG1wIFZBTFVFUyAoMTAwLCAwKTsiLAorCQkJ CQkgICBvbl9lcnJvcl9zdG9wID0+IDAsCisJCQkJCSAgIHN0ZGVyciA9PiBcJHN0ZGVyciwKKwkJ CQkJICAgc3Rkb3V0ID0+IFwkc3Rkb3V0KTsKKyRzdGRlcnIgPX4gL0VSUk9SOiAgbmV3IHJvdyBm b3IgcmVsYXRpb24gInRtcCIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAidG1wX2NoZWNrIi8K KyAgb3IgZGllICJmYWlsZWQgdG8gcmVwbGljYXRlIHRhYmxlIGNvbnN0cmFpbnQgKGZpcnN0IGNv bmRpdGlvbikgYXQgY3JlYXRpbmcgdGFibGUiOworJG5vZGVfc3Vic2NyaWJlci0+cHNxbCgncG9z dGdyZXMnLCAiSU5TRVJUIElOVE8gdG1wIFZBTFVFUyAoNTAsIDEwMCk7IiwKKwkJCQkJICAgb25f ZXJyb3Jfc3RvcCA9PiAwLAorCQkJCQkgICBzdGRlcnIgPT4gXCRzdGRlcnIsCisJCQkJCSAgIHN0 ZG91dCA9PiBcJHN0ZG91dCk7Ciskc3RkZXJyID1+IC9FUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0 aW9uICJ0bXAiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInRtcF9jaGVjayIvCisgIG9yIGRp ZSAiZmFpbGVkIHRvIHJlcGxpY2F0ZSB0YWJsZSBjb25zdHJhaW50IChzZWNvbmQgY29uZGl0aW9u KSBhdCBjcmVhdGluZyB0YWJsZSI7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiRFJPUCBUQUJMRSB0bXA7Iik7CisKKyMgVGVzdCBDUkVBVEUgVEFCTEUgV0lUSCBzdHJv cmFnZV9wYXJhbWV0ZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJD UkVBVEUgVEFCTEUgdG1wIChpZCBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA4MCk7Iik7Ciskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdG1wIFZBTFVF UyAoMSk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3ViJyk7Cisk bm9kZV9zdWJzY3JpYmVyLT5wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcmVsb3B0aW9ucyBGUk9N IHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAndG1wJzsiLAorCQkJCQkgICBvbl9lcnJvcl9zdG9w ID0+IDAsCisJCQkJCSAgIHN0ZGVyciA9PiBcJHN0ZGVyciwKKwkJCQkJICAgc3Rkb3V0ID0+IFwk c3Rkb3V0KTsKKyRzdGRvdXQgPX4gL3tmaWxsZmFjdG9yPTgwfS8KKyAgb3IgZGllICJmYWlsZWQg dG8gcmVwbGljYXRlIHN0b3JhZ2Ugb3B0aW9uIjsKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBmcm9tIHRtcDsiKTsKK2lz KCRyZXN1bHQsIHFxKDEpLCAnQ1JFQVRFIFRBQkxFIHdpdGggc3RvcmFnZV9wYXJhbWV0ZXIgcmVw bGljYXRlZCcpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1Ag VEFCTEUgdG1wOyIpOworCitwYXNzICJEREwgcmVwbGljYXRpb24gdGVzdHMgcGFzc2VkOiI7CisK KyRub2RlX3N1YnNjcmliZXItPnN0b3A7Ciskbm9kZV9wdWJsaXNoZXItPnN0b3A7CisKK2RvbmVf dGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3Qg Yi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA3YzhhZTdmZTdiLi5lYjFm OTM0ZWUzIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysg Yi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNTY2LDYgKzU2Niw3IEBAIERl ZkVsZW1BY3Rpb24KIERlZmF1bHRBQ0xJbmZvCiBEZWZpbmVTdG10CiBEZWxldGVTdG10CitEZXBh cnNlZENvbW1hbmRUeXBlCiBEZXBlbmRlbmN5R2VuZXJhdG9yCiBEZXBlbmRlbmN5R2VuZXJhdG9y RGF0YQogRGVwZW5kZW5jeVR5cGUKQEAgLTE0NjEsNiArMTQ2Miw3IEBAIExvZ2ljYWxEZWNvZGVC ZWdpblByZXBhcmVDQgogTG9naWNhbERlY29kZUNoYW5nZUNCCiBMb2dpY2FsRGVjb2RlQ29tbWl0 Q0IKIExvZ2ljYWxEZWNvZGVDb21taXRQcmVwYXJlZENCCitMb2dpY2FsRGVjb2RlRERMTWVzc2Fn ZUNCCiBMb2dpY2FsRGVjb2RlRmlsdGVyQnlPcmlnaW5DQgogTG9naWNhbERlY29kZUZpbHRlclBy ZXBhcmVDQgogTG9naWNhbERlY29kZU1lc3NhZ2VDQgpAQCAtMTQ3MSw2ICsxNDczLDcgQEAgTG9n aWNhbERlY29kZVN0YXJ0dXBDQgogTG9naWNhbERlY29kZVN0cmVhbUFib3J0Q0IKIExvZ2ljYWxE ZWNvZGVTdHJlYW1DaGFuZ2VDQgogTG9naWNhbERlY29kZVN0cmVhbUNvbW1pdENCCitMb2dpY2Fs RGVjb2RlU3RyZWFtRERMTWVzc2FnZUNCCiBMb2dpY2FsRGVjb2RlU3RyZWFtTWVzc2FnZUNCCiBM b2dpY2FsRGVjb2RlU3RyZWFtUHJlcGFyZUNCCiBMb2dpY2FsRGVjb2RlU3RyZWFtU3RhcnRDQgpA QCAtMjMxNCw2ICsyMzE3LDcgQEAgUmVvcmRlckJ1ZmZlckNoYW5nZQogUmVvcmRlckJ1ZmZlckNo YW5nZVR5cGUKIFJlb3JkZXJCdWZmZXJDb21taXRDQgogUmVvcmRlckJ1ZmZlckNvbW1pdFByZXBh cmVkQ0IKK1Jlb3JkZXJCdWZmZXJERExNZXNzYWdlQ0IKIFJlb3JkZXJCdWZmZXJEaXNrQ2hhbmdl CiBSZW9yZGVyQnVmZmVySXRlclRYTkVudHJ5CiBSZW9yZGVyQnVmZmVySXRlclRYTlN0YXRlCkBA IC0yMzIzLDYgKzIzMjcsNyBAQCBSZW9yZGVyQnVmZmVyUm9sbGJhY2tQcmVwYXJlZENCCiBSZW9y ZGVyQnVmZmVyU3RyZWFtQWJvcnRDQgogUmVvcmRlckJ1ZmZlclN0cmVhbUNoYW5nZUNCCiBSZW9y ZGVyQnVmZmVyU3RyZWFtQ29tbWl0Q0IKK1Jlb3JkZXJCdWZmZXJTdHJlYW1ERExNZXNzYWdlQ0IK IFJlb3JkZXJCdWZmZXJTdHJlYW1NZXNzYWdlQ0IKIFJlb3JkZXJCdWZmZXJTdHJlYW1QcmVwYXJl Q0IKIFJlb3JkZXJCdWZmZXJTdHJlYW1TdGFydENCCkBAIC0zOTE2LDYgKzM5MjEsNyBAQCB4bF9o ZWFwX3Zpc2libGUKIHhsX2ludmFsaWRfcGFnZQogeGxfaW52YWxpZF9wYWdlX2tleQogeGxfaW52 YWxpZGF0aW9ucworeGxfbG9naWNhbF9kZGxfbWVzc2FnZQogeGxfbG9naWNhbF9tZXNzYWdlCiB4 bF9tdWx0aV9pbnNlcnRfdHVwbGUKIHhsX211bHRpeGFjdF9jcmVhdGUKLS0gCjIuMzQuMQoK --0000000000004a587505fe3cb10a--