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 1nRJYI-00043h-Ob for pgsql-hackers@arkaria.postgresql.org; Mon, 07 Mar 2022 20:01:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nRJYH-0003hW-Hk for pgsql-hackers@arkaria.postgresql.org; Mon, 07 Mar 2022 20:01:53 +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 1nRJWT-0006YD-5w for pgsql-hackers@lists.postgresql.org; Mon, 07 Mar 2022 20:00:01 +0000 Received: from new2-smtp.messagingengine.com ([66.111.4.224]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nRJWG-0004OP-LP for pgsql-hackers@lists.postgresql.org; Mon, 07 Mar 2022 20:00:00 +0000 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailnew.nyi.internal (Postfix) with ESMTP id 5F3DD580243; Mon, 7 Mar 2022 14:59:46 -0500 (EST) Received: from imap47 ([10.202.2.97]) by compute5.internal (MEProxy); Mon, 07 Mar 2022 14:59:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=p5SKldy1dbkX5hZIZ 8+pFLcKe0tNAkxmjift1D/CnGU=; b=H0xJAPG6qC+r7fZAy2xf3+lal2oqoJY/x 2Clf05a7OYUtvX5dtGtTTX+kKhQk8fzPb1ZmQtg12aEBpo9fECFMJDTueq2ZP+pr BRSidWcgWWMbtWMtKvZ3Pv6EbNizz61mtvMYrq8LZAb9YlScfovB1SS6jB7dnzAe z87Qe2Y0HAohaeW12ZSaMSaIBsai/mCbVGXAb//Y5tKMBgpEZVuCweyqZTG8OBtU rh5zt+i8TXBHuoJj2ZBvGJCTcDBWSxVCY833Y7uGXCHXmtOYmYX0gMVfC8GArBw7 awnlPwGJPeE/mJyChPDt/9U2NAwmdBYgw1r8nLCg3BZqThEfaEVsw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvvddruddugedgudefudcutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpefofgggkfgjfhffhffvufgtsehmtderreerreejnecuhfhrohhmpemllhhv rghrohgpjfgvrhhrvghrrgcuoegrlhhvhhgvrhhrvgesrghlvhhhrdhnohdqihhprdhorh hgqeenucggtffrrghtthgvrhhnpeetkedvieeluddvjeefjeffvdehjeevhfdugedtledt udeiuefhfeejvdejjefffeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmh grihhlfhhrohhmpegrlhhvhhgvrhhrvgesrghlvhhhrdhnohdqihhprdhorhhg X-ME-Proxy: Received: by mailuser.nyi.internal (Postfix, from userid 501) id DCEB22740108; Mon, 7 Mar 2022 14:59:45 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface User-Agent: Cyrus-JMAP/3.5.0-alpha0-4778-g14fba9972e-fm-20220217.001-g14fba997 Mime-Version: 1.0 Message-Id: <7d41dcb8-ca24-40e1-b361-e7ec889e9124@www.fastmail.com> In-Reply-To: <202202271735.4o6uyat2eh7w@alvherre.pgsql> References: <202202271735.4o6uyat2eh7w@alvherre.pgsql> Date: Mon, 07 Mar 2022 16:59:09 -0300 From: =?UTF-8?Q?=C3=81lvaro_Herrera?= To: "Andres Freund" Cc: "pgsql-hackers@lists.postgresql.org" , "Simon Riggs" , "Tomas Vondra" , "Zhihong Yu" , "Daniel Westermann" , "Amit Langote" , "Justin Pryzby" , "Japin Li" , "Erik Rijkers" , "Jaime Casanova" Subject: Re: support for MERGE Content-Type: multipart/mixed; boundary=527760f7189c4519b98de45ca6e90b9b List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --527760f7189c4519b98de45ca6e90b9b Content-Type: multipart/alternative; boundary=7e452b8f4081444590954f0cc8e5977a --7e452b8f4081444590954f0cc8e5977a Content-Type: text/plain I attach v13 here. This version includes a 0002 that's does the split of nodeModifyTable.c routines, then 0003 implements MERGE on top of that. 0001 is as before. --7e452b8f4081444590954f0cc8e5977a Content-Type: text/html
I attach v13 here.  This version includes a 0002 that's does the split of nodeModifyTable.c routines, then 0003 implements MERGE on top of that.  0001 is as before.
--7e452b8f4081444590954f0cc8e5977a-- --527760f7189c4519b98de45ca6e90b9b Content-Disposition: attachment;filename="v13-0001-Add-API-of-sorts-for-transaction-table-handling-.patch" Content-Type: text/x-patch; name="v13-0001-Add-API-of-sorts-for-transaction-table-handling-.patch" Content-Transfer-Encoding: BASE64 RnJvbSAyZGFhM2NjNGY0ZDAyNTUzNzU0ZWQ0MTM1YjZmZmEzNjFiNWZhODczIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbHZhcm8gSGVycmVyYSA8YWx2aGVycmVAYWx2aC5u by1pcC5vcmc+CkRhdGU6IFdlZCwgMiBGZWIgMjAyMiAxNjo1ODo1MSAtMDMwMApTdWJqZWN0 OiBbUEFUQ0ggdjEzIDEvM10gQWRkIEFQSSBvZiBzb3J0cyBmb3IgdHJhbnNhY3Rpb24gdGFi bGUgaGFuZGxpbmcgaW4KIHRyaWdnZXIuYwoKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90 cmlnZ2VyLmMgfCAxNjQgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiAxIGZp bGUgY2hhbmdlZCwgMTEyIGluc2VydGlvbnMoKyksIDUyIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RyaWdnZXIuYwppbmRleCAxYTljMWFjMjkwLi42OGFlMWU5M2NlIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdHJpZ2dlci5jCkBAIC05NCw2ICs5NCwxNiBAQCBzdGF0aWMgSGVhcFR1cGxl IEV4ZWNDYWxsVHJpZ2dlckZ1bmMoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLAogCQkJCQkJCQkJ IEZtZ3JJbmZvICpmaW5mbywKIAkJCQkJCQkJCSBJbnN0cnVtZW50YXRpb24gKmluc3RyLAog CQkJCQkJCQkJIE1lbW9yeUNvbnRleHQgcGVyX3R1cGxlX2NvbnRleHQpOworc3RhdGljIFR1 cGxlc3RvcmVzdGF0ZSAqQWZ0ZXJUcmlnZ2VyR2V0VHJhbnNpdGlvblRhYmxlKGludCBldmVu dCwKKwkJCQkJCQkJCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdCwKKwkJCQkJCQkJ CQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwKKwkJCQkJCQkJCQkJCQkgICBUcmFu c2l0aW9uQ2FwdHVyZVN0YXRlICp0cmFuc2l0aW9uX2NhcHR1cmUpOworc3RhdGljIHZvaWQg VHJhbnNpdGlvblRhYmxlQWRkVHVwbGUoRVN0YXRlICplc3RhdGUsCisJCQkJCQkJCQlUcmFu c2l0aW9uQ2FwdHVyZVN0YXRlICp0cmFuc2l0aW9uX2NhcHR1cmUsCisJCQkJCQkJCQlSZXN1 bHRSZWxJbmZvICpyZWxpbmZvLAorCQkJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKnNsb3QsCisJ CQkJCQkJCQlUdXBsZVRhYmxlU2xvdCAqb3JpZ2luYWxfaW5zZXJ0X3R1cGxlLAorCQkJCQkJ CQkJVHVwbGVzdG9yZXN0YXRlICp0dXBsZXN0b3JlKTsKIHN0YXRpYyB2b2lkIEFmdGVyVHJp Z2dlclNhdmVFdmVudChFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywK IAkJCQkJCQkJICBpbnQgZXZlbnQsIGJvb2wgcm93X3RyaWdnZXIsCiAJCQkJCQkJCSAgVHVw bGVUYWJsZVNsb3QgKm9sZHR1cCwgVHVwbGVUYWJsZVNsb3QgKm5ld3R1cCwKQEAgLTU2NTAs NiArNTY2MCw4NSBAQCBBZnRlclRyaWdnZXJQZW5kaW5nT25SZWwoT2lkIHJlbGlkKQogCXJl dHVybiBmYWxzZTsKIH0KIAorLyoKKyAqIEdldCB0aGUgdHJhbnNpdGlvbiB0YWJsZSBmb3Ig dGhlIGdpdmVuIGV2ZW50IGFuZCBkZXBlbmRpbmcgb24gd2hldGhlciB3ZSBhcmUKKyAqIHBy b2Nlc3NpbmcgdGhlIG9sZCBvciB0aGUgbmV3IHR1cGxlLgorICovCitzdGF0aWMgVHVwbGVz dG9yZXN0YXRlICoKK0FmdGVyVHJpZ2dlckdldFRyYW5zaXRpb25UYWJsZShpbnQgZXZlbnQs CisJCQkJCQkJICAgVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3QsCisJCQkJCQkJICAgVHVwbGVU YWJsZVNsb3QgKm5ld3Nsb3QsCisJCQkJCQkJICAgVHJhbnNpdGlvbkNhcHR1cmVTdGF0ZSAq dHJhbnNpdGlvbl9jYXB0dXJlKQoreworCVR1cGxlc3RvcmVzdGF0ZSAqdHVwbGVzdG9yZTsK Kwlib29sCQlkZWxldGVfb2xkX3RhYmxlID0gdHJhbnNpdGlvbl9jYXB0dXJlLT50Y3NfZGVs ZXRlX29sZF90YWJsZTsKKwlib29sCQl1cGRhdGVfb2xkX3RhYmxlID0gdHJhbnNpdGlvbl9j YXB0dXJlLT50Y3NfdXBkYXRlX29sZF90YWJsZTsKKwlib29sCQl1cGRhdGVfbmV3X3RhYmxl ID0gdHJhbnNpdGlvbl9jYXB0dXJlLT50Y3NfdXBkYXRlX25ld190YWJsZTsKKwlib29sCQlp bnNlcnRfbmV3X3RhYmxlID0gdHJhbnNpdGlvbl9jYXB0dXJlLT50Y3NfaW5zZXJ0X25ld190 YWJsZTsKKworCS8qCisJICogRm9yIElOU0VSVCBldmVudHMgTkVXIHNob3VsZCBiZSBub24t TlVMTCwgZm9yIERFTEVURSBldmVudHMgT0xECisJICogc2hvdWxkIGJlIG5vbi1OVUxMLCB3 aGVyZWFzIGZvciBVUERBVEUgZXZlbnRzIG5vcm1hbGx5IGJvdGggT0xEIGFuZAorCSAqIE5F VyBhcmUgbm9uLU5VTEwuICBCdXQgZm9yIFVQREFURSBldmVudHMgZmlyZWQgZm9yIGNhcHR1 cmluZworCSAqIHRyYW5zaXRpb24gdHVwbGVzIGR1cmluZyBVUERBVEUgcGFydGl0aW9uLWtl eSByb3cgbW92ZW1lbnQsIE9MRCBpcworCSAqIE5VTEwgd2hlbiB0aGUgZXZlbnQgaXMgZm9y IGEgcm93IGJlaW5nIGluc2VydGVkLCB3aGVyZWFzIE5FVyBpcworCSAqIE5VTEwgd2hlbiB0 aGUgZXZlbnQgaXMgZm9yIGEgcm93IGJlaW5nIGRlbGV0ZWQuCisJICovCisJQXNzZXJ0KCEo ZXZlbnQgPT0gVFJJR0dFUl9FVkVOVF9ERUxFVEUgJiYgZGVsZXRlX29sZF90YWJsZSAmJgor CQkJIFR1cElzTnVsbChvbGRzbG90KSkpOworCUFzc2VydCghKGV2ZW50ID09IFRSSUdHRVJf RVZFTlRfSU5TRVJUICYmIGluc2VydF9uZXdfdGFibGUgJiYKKwkJCSBUdXBJc051bGwobmV3 c2xvdCkpKTsKKworCUFzc2VydChUdXBJc051bGwob2xkc2xvdCkgXiBUdXBJc051bGwobmV3 c2xvdCkpOworCisJaWYgKCFUdXBJc051bGwob2xkc2xvdCkgJiYKKwkJKChldmVudCA9PSBU UklHR0VSX0VWRU5UX0RFTEVURSAmJiBkZWxldGVfb2xkX3RhYmxlKSB8fAorCQkgKGV2ZW50 ID09IFRSSUdHRVJfRVZFTlRfVVBEQVRFICYmIHVwZGF0ZV9vbGRfdGFibGUpKSkKKwkJdHVw bGVzdG9yZSA9IHRyYW5zaXRpb25fY2FwdHVyZS0+dGNzX3ByaXZhdGUtPm9sZF90dXBsZXN0 b3JlOworCWVsc2UgaWYgKCFUdXBJc051bGwobmV3c2xvdCkgJiYKKwkJCSAoKGV2ZW50ID09 IFRSSUdHRVJfRVZFTlRfSU5TRVJUICYmIGluc2VydF9uZXdfdGFibGUpIHx8CisJCQkgIChl dmVudCA9PSBUUklHR0VSX0VWRU5UX1VQREFURSAmJiB1cGRhdGVfbmV3X3RhYmxlKSkpCisJ CXR1cGxlc3RvcmUgPSB0cmFuc2l0aW9uX2NhcHR1cmUtPnRjc19wcml2YXRlLT5uZXdfdHVw bGVzdG9yZTsKKwllbHNlCisJCXR1cGxlc3RvcmUgPSBOVUxMOworCisJcmV0dXJuIHR1cGxl c3RvcmU7Cit9CisKKy8qCisgKiBBZGQgdGhlIGdpdmVuIGhlYXAgdHVwbGUgdG8gdGhlIGdp dmVuIHR1cGxlc3RvcmUsIGFwcGx5aW5nIHRoZSBjb252ZXJzaW9uCisgKiBtYXAgaWYgbmVj ZXNzYXJ5LgorICovCitzdGF0aWMgdm9pZAorVHJhbnNpdGlvblRhYmxlQWRkVHVwbGUoRVN0 YXRlICplc3RhdGUsCisJCQkJCQlUcmFuc2l0aW9uQ2FwdHVyZVN0YXRlICp0cmFuc2l0aW9u X2NhcHR1cmUsCisJCQkJCQlSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAorCQkJCQkJVHVwbGVU YWJsZVNsb3QgKnNsb3QsCisJCQkJCQlUdXBsZVRhYmxlU2xvdCAqb3JpZ2luYWxfaW5zZXJ0 X3R1cGxlLAorCQkJCQkJVHVwbGVzdG9yZXN0YXRlICp0dXBsZXN0b3JlKQoreworCVR1cGxl Q29udmVyc2lvbk1hcCAqbWFwOworCisJLyoKKwkgKiBOb3RoaW5nIG5lZWRzIHRvIGJlIGRv bmUgaWYgd2UgZG9uJ3QgaGF2ZSBhIHR1cGxlc3RvcmUuCisJICovCisJaWYgKHR1cGxlc3Rv cmUgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJaWYgKG9yaWdpbmFsX2luc2VydF90dXBsZSkK KwkJdHVwbGVzdG9yZV9wdXR0dXBsZXNsb3QodHVwbGVzdG9yZSwgb3JpZ2luYWxfaW5zZXJ0 X3R1cGxlKTsKKwllbHNlIGlmICgobWFwID0gRXhlY0dldENoaWxkVG9Sb290TWFwKHJlbGlu Zm8pKSAhPSBOVUxMKQorCXsKKwkJQWZ0ZXJUcmlnZ2Vyc1RhYmxlRGF0YSAqdGFibGUgPSB0 cmFuc2l0aW9uX2NhcHR1cmUtPnRjc19wcml2YXRlOworCQlUdXBsZVRhYmxlU2xvdCAqc3Rv cmVzbG90OworCisJCXN0b3Jlc2xvdCA9IEdldEFmdGVyVHJpZ2dlcnNTdG9yZVNsb3QodGFi bGUsIG1hcC0+b3V0ZGVzYyk7CisJCWV4ZWN1dGVfYXR0cl9tYXBfc2xvdChtYXAtPmF0dHJN YXAsIHNsb3QsIHN0b3Jlc2xvdCk7CisJCXR1cGxlc3RvcmVfcHV0dHVwbGVzbG90KHR1cGxl c3RvcmUsIHN0b3Jlc2xvdCk7CisJfQorCWVsc2UKKwkJdHVwbGVzdG9yZV9wdXR0dXBsZXNs b3QodHVwbGVzdG9yZSwgc2xvdCk7Cit9CiAKIC8qIC0tLS0tLS0tLS0KICAqIEFmdGVyVHJp Z2dlclNhdmVFdmVudCgpCkBAIC01NzA5LDY4ICs1Nzk4LDM5IEBAIEFmdGVyVHJpZ2dlclNh dmVFdmVudChFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKIAkgKi8K IAlpZiAocm93X3RyaWdnZXIgJiYgdHJhbnNpdGlvbl9jYXB0dXJlICE9IE5VTEwpCiAJewot CQlUdXBsZVRhYmxlU2xvdCAqb3JpZ2luYWxfaW5zZXJ0X3R1cGxlID0gdHJhbnNpdGlvbl9j YXB0dXJlLT50Y3Nfb3JpZ2luYWxfaW5zZXJ0X3R1cGxlOwotCQlUdXBsZUNvbnZlcnNpb25N YXAgKm1hcCA9IEV4ZWNHZXRDaGlsZFRvUm9vdE1hcChyZWxpbmZvKTsKLQkJYm9vbAkJZGVs ZXRlX29sZF90YWJsZSA9IHRyYW5zaXRpb25fY2FwdHVyZS0+dGNzX2RlbGV0ZV9vbGRfdGFi bGU7Ci0JCWJvb2wJCXVwZGF0ZV9vbGRfdGFibGUgPSB0cmFuc2l0aW9uX2NhcHR1cmUtPnRj c191cGRhdGVfb2xkX3RhYmxlOwotCQlib29sCQl1cGRhdGVfbmV3X3RhYmxlID0gdHJhbnNp dGlvbl9jYXB0dXJlLT50Y3NfdXBkYXRlX25ld190YWJsZTsKLQkJYm9vbAkJaW5zZXJ0X25l d190YWJsZSA9IHRyYW5zaXRpb25fY2FwdHVyZS0+dGNzX2luc2VydF9uZXdfdGFibGU7CiAK IAkJLyoKLQkJICogRm9yIElOU0VSVCBldmVudHMgTkVXIHNob3VsZCBiZSBub24tTlVMTCwg Zm9yIERFTEVURSBldmVudHMgT0xECi0JCSAqIHNob3VsZCBiZSBub24tTlVMTCwgd2hlcmVh cyBmb3IgVVBEQVRFIGV2ZW50cyBub3JtYWxseSBib3RoIE9MRCBhbmQKLQkJICogTkVXIGFy ZSBub24tTlVMTC4gIEJ1dCBmb3IgVVBEQVRFIGV2ZW50cyBmaXJlZCBmb3IgY2FwdHVyaW5n Ci0JCSAqIHRyYW5zaXRpb24gdHVwbGVzIGR1cmluZyBVUERBVEUgcGFydGl0aW9uLWtleSBy b3cgbW92ZW1lbnQsIE9MRCBpcwotCQkgKiBOVUxMIHdoZW4gdGhlIGV2ZW50IGlzIGZvciBh IHJvdyBiZWluZyBpbnNlcnRlZCwgd2hlcmVhcyBORVcgaXMKLQkJICogTlVMTCB3aGVuIHRo ZSBldmVudCBpcyBmb3IgYSByb3cgYmVpbmcgZGVsZXRlZC4KKwkJICogQ2FwdHVyZSB0aGUg b2xkIHR1cGxlIGluIHRoZSBhcHByb3ByaWF0ZSB0cmFuc2l0aW9uIHRhYmxlIGJhc2VkIG9u CisJCSAqIHRoZSBldmVudC4KIAkJICovCi0JCUFzc2VydCghKGV2ZW50ID09IFRSSUdHRVJf RVZFTlRfREVMRVRFICYmIGRlbGV0ZV9vbGRfdGFibGUgJiYKLQkJCQkgVHVwSXNOdWxsKG9s ZHNsb3QpKSk7Ci0JCUFzc2VydCghKGV2ZW50ID09IFRSSUdHRVJfRVZFTlRfSU5TRVJUICYm IGluc2VydF9uZXdfdGFibGUgJiYKLQkJCQkgVHVwSXNOdWxsKG5ld3Nsb3QpKSk7Ci0KLQkJ aWYgKCFUdXBJc051bGwob2xkc2xvdCkgJiYKLQkJCSgoZXZlbnQgPT0gVFJJR0dFUl9FVkVO VF9ERUxFVEUgJiYgZGVsZXRlX29sZF90YWJsZSkgfHwKLQkJCSAoZXZlbnQgPT0gVFJJR0dF Ul9FVkVOVF9VUERBVEUgJiYgdXBkYXRlX29sZF90YWJsZSkpKQorCQlpZiAoIVR1cElzTnVs bChvbGRzbG90KSkKIAkJewogCQkJVHVwbGVzdG9yZXN0YXRlICpvbGRfdHVwbGVzdG9yZTsK IAotCQkJb2xkX3R1cGxlc3RvcmUgPSB0cmFuc2l0aW9uX2NhcHR1cmUtPnRjc19wcml2YXRl LT5vbGRfdHVwbGVzdG9yZTsKLQotCQkJaWYgKG1hcCAhPSBOVUxMKQotCQkJewotCQkJCUFm dGVyVHJpZ2dlcnNUYWJsZURhdGEgKnRhYmxlID0gdHJhbnNpdGlvbl9jYXB0dXJlLT50Y3Nf cHJpdmF0ZTsKLQkJCQlUdXBsZVRhYmxlU2xvdCAqc3RvcmVzbG90OwotCi0JCQkJc3RvcmVz bG90ID0gR2V0QWZ0ZXJUcmlnZ2Vyc1N0b3JlU2xvdCh0YWJsZSwgbWFwLT5vdXRkZXNjKTsK LQkJCQlleGVjdXRlX2F0dHJfbWFwX3Nsb3QobWFwLT5hdHRyTWFwLCBvbGRzbG90LCBzdG9y ZXNsb3QpOwotCQkJCXR1cGxlc3RvcmVfcHV0dHVwbGVzbG90KG9sZF90dXBsZXN0b3JlLCBz dG9yZXNsb3QpOwotCQkJfQotCQkJZWxzZQotCQkJCXR1cGxlc3RvcmVfcHV0dHVwbGVzbG90 KG9sZF90dXBsZXN0b3JlLCBvbGRzbG90KTsKKwkJCW9sZF90dXBsZXN0b3JlID0gQWZ0ZXJU cmlnZ2VyR2V0VHJhbnNpdGlvblRhYmxlKGV2ZW50LAorCQkJCQkJCQkJCQkJCQkJb2xkc2xv dCwKKwkJCQkJCQkJCQkJCQkJCU5VTEwsCisJCQkJCQkJCQkJCQkJCQl0cmFuc2l0aW9uX2Nh cHR1cmUpOworCQkJVHJhbnNpdGlvblRhYmxlQWRkVHVwbGUoZXN0YXRlLCB0cmFuc2l0aW9u X2NhcHR1cmUsIHJlbGluZm8sCisJCQkJCQkJCQlvbGRzbG90LCBOVUxMLCBvbGRfdHVwbGVz dG9yZSk7CiAJCX0KLQkJaWYgKCFUdXBJc051bGwobmV3c2xvdCkgJiYKLQkJCSgoZXZlbnQg PT0gVFJJR0dFUl9FVkVOVF9JTlNFUlQgJiYgaW5zZXJ0X25ld190YWJsZSkgfHwKLQkJCSAo ZXZlbnQgPT0gVFJJR0dFUl9FVkVOVF9VUERBVEUgJiYgdXBkYXRlX25ld190YWJsZSkpKQor CisJCS8qCisJCSAqIENhcHR1cmUgdGhlIG5ldyB0dXBsZSBpbiB0aGUgYXBwcm9wcmlhdGUg dHJhbnNpdGlvbiB0YWJsZSBiYXNlZCBvbgorCQkgKiB0aGUgZXZlbnQuCisJCSAqLworCQlp ZiAoIVR1cElzTnVsbChuZXdzbG90KSkKIAkJewogCQkJVHVwbGVzdG9yZXN0YXRlICpuZXdf dHVwbGVzdG9yZTsKIAotCQkJbmV3X3R1cGxlc3RvcmUgPSB0cmFuc2l0aW9uX2NhcHR1cmUt PnRjc19wcml2YXRlLT5uZXdfdHVwbGVzdG9yZTsKLQotCQkJaWYgKG9yaWdpbmFsX2luc2Vy dF90dXBsZSAhPSBOVUxMKQotCQkJCXR1cGxlc3RvcmVfcHV0dHVwbGVzbG90KG5ld190dXBs ZXN0b3JlLAotCQkJCQkJCQkJCW9yaWdpbmFsX2luc2VydF90dXBsZSk7Ci0JCQllbHNlIGlm IChtYXAgIT0gTlVMTCkKLQkJCXsKLQkJCQlBZnRlclRyaWdnZXJzVGFibGVEYXRhICp0YWJs ZSA9IHRyYW5zaXRpb25fY2FwdHVyZS0+dGNzX3ByaXZhdGU7Ci0JCQkJVHVwbGVUYWJsZVNs b3QgKnN0b3Jlc2xvdDsKLQotCQkJCXN0b3Jlc2xvdCA9IEdldEFmdGVyVHJpZ2dlcnNTdG9y ZVNsb3QodGFibGUsIG1hcC0+b3V0ZGVzYyk7Ci0JCQkJZXhlY3V0ZV9hdHRyX21hcF9zbG90 KG1hcC0+YXR0ck1hcCwgbmV3c2xvdCwgc3RvcmVzbG90KTsKLQkJCQl0dXBsZXN0b3JlX3B1 dHR1cGxlc2xvdChuZXdfdHVwbGVzdG9yZSwgc3RvcmVzbG90KTsKLQkJCX0KLQkJCWVsc2UK LQkJCQl0dXBsZXN0b3JlX3B1dHR1cGxlc2xvdChuZXdfdHVwbGVzdG9yZSwgbmV3c2xvdCk7 CisJCQluZXdfdHVwbGVzdG9yZSA9IEFmdGVyVHJpZ2dlckdldFRyYW5zaXRpb25UYWJsZShl dmVudCwKKwkJCQkJCQkJCQkJCQkJCU5VTEwsCisJCQkJCQkJCQkJCQkJCQluZXdzbG90LAor CQkJCQkJCQkJCQkJCQkJdHJhbnNpdGlvbl9jYXB0dXJlKTsKKwkJCVRyYW5zaXRpb25UYWJs ZUFkZFR1cGxlKGVzdGF0ZSwgdHJhbnNpdGlvbl9jYXB0dXJlLCByZWxpbmZvLAorCQkJCQkJ CQkJbmV3c2xvdCwKKwkJCQkJCQkJCXRyYW5zaXRpb25fY2FwdHVyZS0+dGNzX29yaWdpbmFs X2luc2VydF90dXBsZSwKKwkJCQkJCQkJCW5ld190dXBsZXN0b3JlKTsKIAkJfQogCiAJCS8q Ci0tIAoyLjMwLjIKCg== --527760f7189c4519b98de45ca6e90b9b Content-Disposition: attachment;filename="v13-0002-split-ExecUpdate-ExecDelete-etc.patch" Content-Type: text/x-patch; name="v13-0002-split-ExecUpdate-ExecDelete-etc.patch" Content-Transfer-Encoding: BASE64 RnJvbSBhMjVmZGM1NmVhYzVhNjc2ZDI3YTk0OTU1YjVjZmMwOGU3YzE2MWJiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbHZhcm8gSGVycmVyYSA8YWx2aGVycmVAYWx2aC5u by1pcC5vcmc+CkRhdGU6IFN1biwgNiBNYXIgMjAyMiAxNzoxNTozMSAtMDMwMApTdWJqZWN0 OiBbUEFUQ0ggdjEzIDIvM10gc3BsaXQgRXhlY1VwZGF0ZSAvIEV4ZWNEZWxldGUgZXRjCgot LS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIHwgNzMyICsrKysr KysrKysrKysrKy0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0NDYgaW5zZXJ0aW9ucygr KSwgMjg2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRh YmxlLmMKaW5kZXggNWVjNjk5YTliZC4uYzczNzJmMjgxYyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTYwLDYgKzYwLDQ4IEBAIHR5cGVkZWYgc3Ry dWN0IE1UVGFyZ2V0UmVsTG9va3VwCiAJaW50CQkJcmVsYXRpb25JbmRleDsJLyogcmVsJ3Mg aW5kZXggaW4gcmVzdWx0UmVsSW5mb1tdIGFycmF5ICovCiB9IE1UVGFyZ2V0UmVsTG9va3Vw OwogCisvKgorICogQ29udGV4dCBzdHJ1Y3QgZm9yIGEgTW9kaWZ5VGFibGUgb3BlcmF0aW9u LCBjb250YWluaW5nIGJhc2ljIGV4ZWN1dGlvbiBzdGF0ZQorICogYW5kIHNvbWUgb3V0cHV0 IGRhdGEuCisgKi8KK3R5cGVkZWYgc3RydWN0IE1vZGlmeVRhYmxlQ29udGV4dAoreworCS8q IE9wZXJhdGlvbiBzdGF0ZSAqLworCU1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGU7CisJRVBR U3RhdGUgICAqZXBxc3RhdGU7CisJRVN0YXRlCSAgICplc3RhdGU7CisKKwkvKiBTbG90IGNv bnRhaW5pbmcgdHVwbGUgb2J0YWluZWQgZnJvbSBzdWJwbGFuLCBmb3IgUkVUVVJOSU5HICov CisJVHVwbGVUYWJsZVNsb3QgKnBsYW5TbG90OworCisJLyogb3V0cHV0ICovCisJVE1fRmFp bHVyZURhdGEgdG1mZDsJCS8qIHN0b2NrIGZhaWx1cmUgZGF0YSAqLworCisJLyoKKwkgKiBU aGUgdHVwbGUgcHJvZHVjZWQgYnkgRXZhbFBsYW5RdWFsIHRvIHJldHJ5IGZyb20sIGlmIGEg Y3Jvc3MtcGFydGl0aW9uCisJICogVVBEQVRFIHJlcXVpcmVzIGl0CisJICovCisJVHVwbGVU YWJsZVNsb3QgKnJldHJ5U2xvdDsKKworCS8qCisJICogVGhlIHR1cGxlIHByb2plY3RlZCBi eSB0aGUgSU5TRVJUJ3MgUkVUVVJOSU5HIGNsYXVzZSwgd2hlbiBkb2luZyBhCisJICogY3Jv c3MtcGFydGl0aW9uIFVQREFURQorCSAqLworCVR1cGxlVGFibGVTbG90ICppbnNlcnRQcm9q ZWN0ZWRUdXBsZTsKKwlMb2NrVHVwbGVNb2RlIGxvY2ttb2RlOwkJLyogdHVwbGUgbG9jayBt b2RlICovCit9IE1vZGlmeVRhYmxlQ29udGV4dDsKKworLyoKKyAqIENvbnRleHQgc3RydWN0 IGNvbnRhaW5pbmcgb3V0cHV0IGRhdGEgc3BlY2lmaWMgdG8gVVBEQVRFIG9wZXJhdGlvbnMu CisgKi8KK3R5cGVkZWYgc3RydWN0IFVwZGF0ZUNvbnRleHQKK3sKKwlib29sCQl1cGRhdGVk OwkJLyogd2FzIHR1cGxlIHVwZGF0ZWQ/ICovCisJYm9vbAkJdXBkYXRlSW5kZXhlczsJLyog aW5kZXggdXBkYXRlIHJlcXVpcmVkPyAqLworCWJvb2wJCWNyb3NzUGFydFVwZGF0ZTsJLyog d2FzIGl0IGEgY3Jvc3MtcGFydGl0aW9uIHVwZGF0ZT8gKi8KK30gVXBkYXRlQ29udGV4dDsK KworCiBzdGF0aWMgdm9pZCBFeGVjQmF0Y2hJbnNlcnQoTW9kaWZ5VGFibGVTdGF0ZSAqbXRz dGF0ZSwKIAkJCQkJCQlSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJCQkJCVR1 cGxlVGFibGVTbG90ICoqc2xvdHMsCkBAIC02NywxMiArMTA5LDEwIEBAIHN0YXRpYyB2b2lk IEV4ZWNCYXRjaEluc2VydChNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLAogCQkJCQkJCWlu dCBudW1TbG90cywKIAkJCQkJCQlFU3RhdGUgKmVzdGF0ZSwKIAkJCQkJCQlib29sIGNhblNl dFRhZyk7Ci1zdGF0aWMgYm9vbCBFeGVjT25Db25mbGljdFVwZGF0ZShNb2RpZnlUYWJsZVN0 YXRlICptdHN0YXRlLAorc3RhdGljIGJvb2wgRXhlY09uQ29uZmxpY3RVcGRhdGUoTW9kaWZ5 VGFibGVDb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkgUmVzdWx0UmVsSW5mbyAqcmVzdWx0 UmVsSW5mbywKIAkJCQkJCQkJIEl0ZW1Qb2ludGVyIGNvbmZsaWN0VGlkLAotCQkJCQkJCQkg VHVwbGVUYWJsZVNsb3QgKnBsYW5TbG90LAogCQkJCQkJCQkgVHVwbGVUYWJsZVNsb3QgKmV4 Y2x1ZGVkU2xvdCwKLQkJCQkJCQkJIEVTdGF0ZSAqZXN0YXRlLAogCQkJCQkJCQkgYm9vbCBj YW5TZXRUYWcsCiAJCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqKnJldHVybmluZyk7CiBzdGF0 aWMgVHVwbGVUYWJsZVNsb3QgKkV4ZWNQcmVwYXJlVHVwbGVSb3V0aW5nKE1vZGlmeVRhYmxl U3RhdGUgKm10c3RhdGUsCkBAIC01ODAsNyArNjIwLDcgQEAgRXhlY0dldFVwZGF0ZU5ld1R1 cGxlKFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCiAgKgkJcmVsYXRpb25zLgogICoKICAqCQlz bG90IGNvbnRhaW5zIHRoZSBuZXcgdHVwbGUgdmFsdWUgdG8gYmUgc3RvcmVkLgotICoJCXBs YW5TbG90IGlzIHRoZSBvdXRwdXQgb2YgdGhlIE1vZGlmeVRhYmxlJ3Mgc3VicGxhbjsgd2Ug dXNlIGl0CisgKgkJY29udGV4dC0+cGxhblNsb3QgaXMgdGhlIG91dHB1dCBvZiB0aGUgTW9k aWZ5VGFibGUncyBzdWJwbGFuOyB3ZSB1c2UgaXQKICAqCQl0byBhY2Nlc3MgImp1bmsiIGNv bHVtbnMgdGhhdCBhcmUgbm90IGdvaW5nIHRvIGJlIHN0b3JlZC4KICAqCiAgKgkJUmV0dXJu cyBSRVRVUk5JTkcgcmVzdWx0IGlmIGFueSwgb3RoZXJ3aXNlIE5VTEwuCkBAIC01OTEsMTUg KzYzMSwxNiBAQCBFeGVjR2V0VXBkYXRlTmV3VHVwbGUoUmVzdWx0UmVsSW5mbyAqcmVsaW5m bywKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqLwogc3RhdGljIFR1cGxlVGFibGVTbG90ICoKLUV4ZWNJ bnNlcnQoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKK0V4ZWNJbnNlcnQoTW9kaWZ5VGFi bGVDb250ZXh0ICpjb250ZXh0LAogCQkgICBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZv LAogCQkgICBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKLQkJICAgVHVwbGVUYWJsZVNsb3QgKnBs YW5TbG90LAotCQkgICBFU3RhdGUgKmVzdGF0ZSwKIAkJICAgYm9vbCBjYW5TZXRUYWcpCiB7 CisJTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSA9IGNvbnRleHQtPm10c3RhdGU7CisJRVN0 YXRlCSAgICplc3RhdGUgPSBjb250ZXh0LT5lc3RhdGU7CiAJUmVsYXRpb24JcmVzdWx0UmVs YXRpb25EZXNjOwogCUxpc3QJICAgKnJlY2hlY2tJbmRleGVzID0gTklMOworCVR1cGxlVGFi bGVTbG90ICpwbGFuU2xvdCA9IGNvbnRleHQtPnBsYW5TbG90OwogCVR1cGxlVGFibGVTbG90 ICpyZXN1bHQgPSBOVUxMOwogCVRyYW5zaXRpb25DYXB0dXJlU3RhdGUgKmFyX2luc2VydF90 cmlnX3RjczsKIAlNb2RpZnlUYWJsZSAqbm9kZSA9IChNb2RpZnlUYWJsZSAqKSBtdHN0YXRl LT5wcy5wbGFuOwpAQCAtODUwLDkgKzg5MSw5IEBAIEV4ZWNJbnNlcnQoTW9kaWZ5VGFibGVT dGF0ZSAqbXRzdGF0ZSwKIAkJCQkJICovCiAJCQkJCVR1cGxlVGFibGVTbG90ICpyZXR1cm5p bmcgPSBOVUxMOwogCi0JCQkJCWlmIChFeGVjT25Db25mbGljdFVwZGF0ZShtdHN0YXRlLCBy ZXN1bHRSZWxJbmZvLAotCQkJCQkJCQkJCQkgJmNvbmZsaWN0VGlkLCBwbGFuU2xvdCwgc2xv dCwKLQkJCQkJCQkJCQkJIGVzdGF0ZSwgY2FuU2V0VGFnLCAmcmV0dXJuaW5nKSkKKwkJCQkJ aWYgKEV4ZWNPbkNvbmZsaWN0VXBkYXRlKGNvbnRleHQsIHJlc3VsdFJlbEluZm8sCisJCQkJ CQkJCQkJCSAmY29uZmxpY3RUaWQsIHNsb3QsIGNhblNldFRhZywKKwkJCQkJCQkJCQkJICZy ZXR1cm5pbmcpKQogCQkJCQl7CiAJCQkJCQlJbnN0ckNvdW50VHVwbGVzMigmbXRzdGF0ZS0+ cHMsIDEpOwogCQkJCQkJcmV0dXJuIHJldHVybmluZzsKQEAgLTEwNTUsNiArMTA5Niw5MyBA QCBFeGVjQmF0Y2hJbnNlcnQoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKIAkJZXN0YXRl LT5lc19wcm9jZXNzZWQgKz0gbnVtSW5zZXJ0ZWQ7CiB9CiAKKy8qCisgKiBFeGVjRGVsZXRl UHJvbG9ndWUgLS0gc3Vicm91dGluZSBmb3IgRXhlY0RlbGV0ZQorICoKKyAqIFByZXBhcmUg ZXhlY3V0b3Igc3RhdGUgZm9yIERFTEVURS4gIEFjdHVhbGx5LCB0aGUgb25seSB0aGluZyB3 ZSBoYXZlIHRvIGRvCisgKiBoZXJlIGlzIGV4ZWN1dGUgQkVGT1JFIFJPVyB0cmlnZ2Vycy4g IFdlIHJldHVybiBmYWxzZSBpZiBvbmUgb2YgdGhlbSBtYWtlcworICogdGhlIGRlbGV0ZSBh IG5vLW9wOyBvdGhlcndpc2UsIHJldHVybiB0cnVlLgorICovCitzdGF0aWMgYm9vbAorRXhl Y0RlbGV0ZVByb2xvZ3VlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVzdWx0UmVs SW5mbyAqcmVzdWx0UmVsSW5mbywKKwkJCQkgICBJdGVtUG9pbnRlciB0dXBsZWlkLCBIZWFw VHVwbGUgb2xkdHVwbGUsCisJCQkJICAgVHVwbGVUYWJsZVNsb3QgKiplcHFyZXR1cm5zbG90 KQoreworCS8qIEJFRk9SRSBST1cgREVMRVRFIFRyaWdnZXJzICovCisJaWYgKHJlc3VsdFJl bEluZm8tPnJpX1RyaWdEZXNjICYmCisJCXJlc3VsdFJlbEluZm8tPnJpX1RyaWdEZXNjLT50 cmlnX2RlbGV0ZV9iZWZvcmVfcm93KQorCXsKKwkJaWYgKCFFeGVjQlJEZWxldGVUcmlnZ2Vy cyhjb250ZXh0LT5lc3RhdGUsIGNvbnRleHQtPmVwcXN0YXRlLAorCQkJCQkJCQkgIHJlc3Vs dFJlbEluZm8sIHR1cGxlaWQsIG9sZHR1cGxlLAorCQkJCQkJCQkgIGVwcXJldHVybnNsb3Qp KQorCQkJLyogc29tZSB0cmlnZ2VyIG1hZGUgdGhlIGRlbGV0ZSBhIG5vLW9wOyBsZXQgY2Fs bGVyIGtub3cgKi8KKwkJCXJldHVybiBmYWxzZTsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30K KworLyoKKyAqIEV4ZWNEZWxldGVBY3QgLS0gc3Vicm91dGluZSBmb3IgRXhlY0RlbGV0ZQor ICoKKyAqIEFjdHVhbGx5IGRlbGV0ZSB0aGUgdHVwbGUsIHdoZW4gb3BlcmF0aW5nIG9uIGEg cGxhaW4gb3IgcGFydGl0aW9uZWQgdGFibGUuCisgKgorICogQ2FsbGVyIGlzIGluIGNoYXJn ZSBvZiBkb2luZyBFdmFsUGxhblF1YWwgYXMgbmVjZXNzYXJ5CisgKi8KK3N0YXRpYyBUTV9S ZXN1bHQKK0V4ZWNEZWxldGVBY3QoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1 bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAorCQkJICBJdGVtUG9pbnRlciB0dXBsZWlkLCBi b29sIGNoYW5naW5nUGFydCkKK3sKKwlFU3RhdGUJICAgKmVzdGF0ZSA9IGNvbnRleHQtPmVz dGF0ZTsKKworCXJldHVybiB0YWJsZV90dXBsZV9kZWxldGUocmVzdWx0UmVsSW5mby0+cmlf UmVsYXRpb25EZXNjLCB0dXBsZWlkLAorCQkJCQkJCSAgZXN0YXRlLT5lc19vdXRwdXRfY2lk LAorCQkJCQkJCSAgZXN0YXRlLT5lc19zbmFwc2hvdCwKKwkJCQkJCQkgIGVzdGF0ZS0+ZXNf Y3Jvc3NjaGVja19zbmFwc2hvdCwKKwkJCQkJCQkgIHRydWUgLyogd2FpdCBmb3IgY29tbWl0 ICovICwKKwkJCQkJCQkgICZjb250ZXh0LT50bWZkLAorCQkJCQkJCSAgY2hhbmdpbmdQYXJ0 KTsKK30KKworLyoKKyAqIEV4ZWNEZWxldGVFcGlsb2d1ZSAtLSBzdWJyb3V0aW5lIGZvciBF eGVjRGVsZXRlCisgKgorICogQ2xvc2luZyBzdGVwcyBvZiB0dXBsZSBkZWxldGlvbjsgdGhp cyBpbnZva2VzIEFGVEVSIEZPUiBFQUNIIFJPVyB0cmlnZ2VycywKKyAqIGluY2x1ZGluZyB0 aGUgVVBEQVRFIHRyaWdnZXJzIGlmIHRoZXJlIHdhcyBhIGNyb3NzLXBhcnRpdGlvbiB0dXBs ZSBtb3ZlLgorICovCitzdGF0aWMgdm9pZAorRXhlY0RlbGV0ZUVwaWxvZ3VlKE1vZGlmeVRh YmxlQ29udGV4dCAqY29udGV4dCwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKKwkJ CQkgICBJdGVtUG9pbnRlciB0dXBsZWlkLCBIZWFwVHVwbGUgb2xkdHVwbGUpCit7CisJTW9k aWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSA9IGNvbnRleHQtPm10c3RhdGU7CisJRVN0YXRlCSAg ICplc3RhdGUgPSBjb250ZXh0LT5lc3RhdGU7CisJVHJhbnNpdGlvbkNhcHR1cmVTdGF0ZSAq YXJfZGVsZXRlX3RyaWdfdGNzOworCisJLyoKKwkgKiBJZiB0aGlzIGRlbGV0ZSBpcyB0aGUg cmVzdWx0IG9mIGEgcGFydGl0aW9uIGtleSB1cGRhdGUgdGhhdCBtb3ZlZCB0aGUKKwkgKiB0 dXBsZSB0byBhIG5ldyBwYXJ0aXRpb24sIHB1dCB0aGlzIHJvdyBpbnRvIHRoZSB0cmFuc2l0 aW9uIE9MRCBUQUJMRSwKKwkgKiBpZiB0aGVyZSBpcyBvbmUuIFdlIG5lZWQgdG8gZG8gdGhp cyBzZXBhcmF0ZWx5IGZvciBERUxFVEUgYW5kIElOU0VSVAorCSAqIGJlY2F1c2UgdGhleSBo YXBwZW4gb24gZGlmZmVyZW50IHRhYmxlcy4KKwkgKi8KKwlhcl9kZWxldGVfdHJpZ190Y3Mg PSBtdHN0YXRlLT5tdF90cmFuc2l0aW9uX2NhcHR1cmU7CisJaWYgKG10c3RhdGUtPm9wZXJh dGlvbiA9PSBDTURfVVBEQVRFICYmIG10c3RhdGUtPm10X3RyYW5zaXRpb25fY2FwdHVyZSAm JgorCQltdHN0YXRlLT5tdF90cmFuc2l0aW9uX2NhcHR1cmUtPnRjc191cGRhdGVfb2xkX3Rh YmxlKQorCXsKKwkJRXhlY0FSVXBkYXRlVHJpZ2dlcnMoZXN0YXRlLCByZXN1bHRSZWxJbmZv LCB0dXBsZWlkLCBvbGR0dXBsZSwKKwkJCQkJCQkgTlVMTCwgTlVMTCwgbXRzdGF0ZS0+bXRf dHJhbnNpdGlvbl9jYXB0dXJlKTsKKworCQkvKgorCQkgKiBXZSd2ZSBhbHJlYWR5IGNhcHR1 cmVkIHRoZSBORVcgVEFCTEUgcm93LCBzbyBtYWtlIHN1cmUgYW55IEFSCisJCSAqIERFTEVU RSB0cmlnZ2VyIGZpcmVkIGJlbG93IGRvZXNuJ3QgY2FwdHVyZSBpdCBhZ2Fpbi4KKwkJICov CisJCWFyX2RlbGV0ZV90cmlnX3RjcyA9IE5VTEw7CisJfQorCisJLyogQUZURVIgUk9XIERF TEVURSBUcmlnZ2VycyAqLworCUV4ZWNBUkRlbGV0ZVRyaWdnZXJzKGVzdGF0ZSwgcmVzdWx0 UmVsSW5mbywgdHVwbGVpZCwgb2xkdHVwbGUsCisJCQkJCQkgYXJfZGVsZXRlX3RyaWdfdGNz KTsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNEZWxldGUKICAqCkBAIC0xMDc4LDQw ICsxMjA2LDMwIEBAIEV4ZWNCYXRjaEluc2VydChNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRl LAogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogICovCiBzdGF0aWMgVHVwbGVUYWJsZVNsb3QgKgotRXhlY0Rl bGV0ZShNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLAorRXhlY0RlbGV0ZShNb2RpZnlUYWJs ZUNvbnRleHQgKmNvbnRleHQsCiAJCSAgIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8s CiAJCSAgIEl0ZW1Qb2ludGVyIHR1cGxlaWQsCiAJCSAgIEhlYXBUdXBsZSBvbGR0dXBsZSwK LQkJICAgVHVwbGVUYWJsZVNsb3QgKnBsYW5TbG90LAotCQkgICBFUFFTdGF0ZSAqZXBxc3Rh dGUsCi0JCSAgIEVTdGF0ZSAqZXN0YXRlLAogCQkgICBib29sIHByb2Nlc3NSZXR1cm5pbmcs Ci0JCSAgIGJvb2wgY2FuU2V0VGFnLAogCQkgICBib29sIGNoYW5naW5nUGFydCwKKwkJICAg Ym9vbCBjYW5TZXRUYWcsCiAJCSAgIGJvb2wgKnR1cGxlRGVsZXRlZCwKIAkJICAgVHVwbGVU YWJsZVNsb3QgKiplcHFyZXR1cm5zbG90KQogeworCUVTdGF0ZQkgICAqZXN0YXRlID0gY29u dGV4dC0+ZXN0YXRlOwogCVJlbGF0aW9uCXJlc3VsdFJlbGF0aW9uRGVzYyA9IHJlc3VsdFJl bEluZm8tPnJpX1JlbGF0aW9uRGVzYzsKLQlUTV9SZXN1bHQJcmVzdWx0OwotCVRNX0ZhaWx1 cmVEYXRhIHRtZmQ7CiAJVHVwbGVUYWJsZVNsb3QgKnNsb3QgPSBOVUxMOwotCVRyYW5zaXRp b25DYXB0dXJlU3RhdGUgKmFyX2RlbGV0ZV90cmlnX3RjczsKKwlUTV9SZXN1bHQJcmVzdWx0 OwogCiAJaWYgKHR1cGxlRGVsZXRlZCkKIAkJKnR1cGxlRGVsZXRlZCA9IGZhbHNlOwogCi0J LyogQkVGT1JFIFJPVyBERUxFVEUgVHJpZ2dlcnMgKi8KLQlpZiAocmVzdWx0UmVsSW5mby0+ cmlfVHJpZ0Rlc2MgJiYKLQkJcmVzdWx0UmVsSW5mby0+cmlfVHJpZ0Rlc2MtPnRyaWdfZGVs ZXRlX2JlZm9yZV9yb3cpCi0JewotCQlib29sCQlkb2RlbGV0ZTsKLQotCQlkb2RlbGV0ZSA9 IEV4ZWNCUkRlbGV0ZVRyaWdnZXJzKGVzdGF0ZSwgZXBxc3RhdGUsIHJlc3VsdFJlbEluZm8s Ci0JCQkJCQkJCQkJdHVwbGVpZCwgb2xkdHVwbGUsIGVwcXJldHVybnNsb3QpOwotCi0JCWlm ICghZG9kZWxldGUpCQkJLyogImRvIG5vdGhpbmciICovCi0JCQlyZXR1cm4gTlVMTDsKLQl9 CisJLyoKKwkgKiBQcmVwYXJlIGZvciB0aGUgZGVsZXRlLiAgVGhpcyBpbmNsdWRlcyBCRUZP UkUgUk9XIHRyaWdnZXJzLCBzbyB3ZSdyZQorCSAqIGRvbmUgaWYgaXQgc2F5cyB3ZSBhcmUu CisJICovCisJaWYgKCFFeGVjRGVsZXRlUHJvbG9ndWUoY29udGV4dCwgcmVzdWx0UmVsSW5m bywgdHVwbGVpZCwgb2xkdHVwbGUsIGVwcXJldHVybnNsb3QpKQorCQlyZXR1cm4gTlVMTDsK IAogCS8qIElOU1RFQUQgT0YgUk9XIERFTEVURSBUcmlnZ2VycyAqLwogCWlmIChyZXN1bHRS ZWxJbmZvLT5yaV9UcmlnRGVzYyAmJgpAQCAtMTEzNyw3ICsxMjU1LDcgQEAgRXhlY0RlbGV0 ZShNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLAogCQlzbG90ID0gcmVzdWx0UmVsSW5mby0+ cmlfRmR3Um91dGluZS0+RXhlY0ZvcmVpZ25EZWxldGUoZXN0YXRlLAogCQkJCQkJCQkJCQkJ CQkJICAgcmVzdWx0UmVsSW5mbywKIAkJCQkJCQkJCQkJCQkJCSAgIHNsb3QsCi0JCQkJCQkJ CQkJCQkJCQkgICBwbGFuU2xvdCk7CisJCQkJCQkJCQkJCQkJCQkgICBjb250ZXh0LT5wbGFu U2xvdCk7CiAKIAkJaWYgKHNsb3QgPT0gTlVMTCkJCS8qICJkbyBub3RoaW5nIiAqLwogCQkJ cmV0dXJuIE5VTEw7CkBAIC0xMTYzLDEzICsxMjgxLDcgQEAgRXhlY0RlbGV0ZShNb2RpZnlU YWJsZVN0YXRlICptdHN0YXRlLAogCQkgKiBtb2RlIHRyYW5zYWN0aW9ucy4KIAkJICovCiBs ZGVsZXRlOjsKLQkJcmVzdWx0ID0gdGFibGVfdHVwbGVfZGVsZXRlKHJlc3VsdFJlbGF0aW9u RGVzYywgdHVwbGVpZCwKLQkJCQkJCQkJCWVzdGF0ZS0+ZXNfb3V0cHV0X2NpZCwKLQkJCQkJ CQkJCWVzdGF0ZS0+ZXNfc25hcHNob3QsCi0JCQkJCQkJCQllc3RhdGUtPmVzX2Nyb3NzY2hl Y2tfc25hcHNob3QsCi0JCQkJCQkJCQl0cnVlIC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAsCi0J CQkJCQkJCQkmdG1mZCwKLQkJCQkJCQkJCWNoYW5naW5nUGFydCk7CisJCXJlc3VsdCA9IEV4 ZWNEZWxldGVBY3QoY29udGV4dCwgcmVzdWx0UmVsSW5mbywgdHVwbGVpZCwgY2hhbmdpbmdQ YXJ0KTsKIAogCQlzd2l0Y2ggKHJlc3VsdCkKIAkJewpAQCAtMTE5OSw3ICsxMzExLDcgQEAg bGRlbGV0ZTo7CiAJCQkJICogY2FuIHJlLWV4ZWN1dGUgdGhlIERFTEVURSBhbmQgdGhlbiBy ZXR1cm4gTlVMTCB0byBjYW5jZWwKIAkJCQkgKiB0aGUgb3V0ZXIgZGVsZXRlLgogCQkJCSAq LwotCQkJCWlmICh0bWZkLmNtYXggIT0gZXN0YXRlLT5lc19vdXRwdXRfY2lkKQorCQkJCWlm IChjb250ZXh0LT50bWZkLmNtYXggIT0gZXN0YXRlLT5lc19vdXRwdXRfY2lkKQogCQkJCQll cmVwb3J0KEVSUk9SLAogCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfVFJJR0dFUkVEX0RBVEFf Q0hBTkdFX1ZJT0xBVElPTiksCiAJCQkJCQkJIGVycm1zZygidHVwbGUgdG8gYmUgZGVsZXRl ZCB3YXMgYWxyZWFkeSBtb2RpZmllZCBieSBhbiBvcGVyYXRpb24gdHJpZ2dlcmVkIGJ5IHRo ZSBjdXJyZW50IGNvbW1hbmQiKSwKQEAgLTEyMjUsOCArMTMzNyw4IEBAIGxkZWxldGU6Owog CQkJCQkgKiBBbHJlYWR5IGtub3cgdGhhdCB3ZSdyZSBnb2luZyB0byBuZWVkIHRvIGRvIEVQ USwgc28KIAkJCQkJICogZmV0Y2ggdHVwbGUgZGlyZWN0bHkgaW50byB0aGUgcmlnaHQgc2xv dC4KIAkJCQkJICovCi0JCQkJCUV2YWxQbGFuUXVhbEJlZ2luKGVwcXN0YXRlKTsKLQkJCQkJ aW5wdXRzbG90ID0gRXZhbFBsYW5RdWFsU2xvdChlcHFzdGF0ZSwgcmVzdWx0UmVsYXRpb25E ZXNjLAorCQkJCQlFdmFsUGxhblF1YWxCZWdpbihjb250ZXh0LT5lcHFzdGF0ZSk7CisJCQkJ CWlucHV0c2xvdCA9IEV2YWxQbGFuUXVhbFNsb3QoY29udGV4dC0+ZXBxc3RhdGUsIHJlc3Vs dFJlbGF0aW9uRGVzYywKIAkJCQkJCQkJCQkJCSByZXN1bHRSZWxJbmZvLT5yaV9SYW5nZVRh YmxlSW5kZXgpOwogCiAJCQkJCXJlc3VsdCA9IHRhYmxlX3R1cGxlX2xvY2socmVzdWx0UmVs YXRpb25EZXNjLCB0dXBsZWlkLApAQCAtMTIzNCwxMyArMTM0NiwxMyBAQCBsZGVsZXRlOjsK IAkJCQkJCQkJCQkJICBpbnB1dHNsb3QsIGVzdGF0ZS0+ZXNfb3V0cHV0X2NpZCwKIAkJCQkJ CQkJCQkJICBMb2NrVHVwbGVFeGNsdXNpdmUsIExvY2tXYWl0QmxvY2ssCiAJCQkJCQkJCQkJ CSAgVFVQTEVfTE9DS19GTEFHX0ZJTkRfTEFTVF9WRVJTSU9OLAotCQkJCQkJCQkJCQkgICZ0 bWZkKTsKKwkJCQkJCQkJCQkJICAmY29udGV4dC0+dG1mZCk7CiAKIAkJCQkJc3dpdGNoIChy ZXN1bHQpCiAJCQkJCXsKIAkJCQkJCWNhc2UgVE1fT2s6Ci0JCQkJCQkJQXNzZXJ0KHRtZmQu dHJhdmVyc2VkKTsKLQkJCQkJCQllcHFzbG90ID0gRXZhbFBsYW5RdWFsKGVwcXN0YXRlLAor CQkJCQkJCUFzc2VydChjb250ZXh0LT50bWZkLnRyYXZlcnNlZCk7CisJCQkJCQkJZXBxc2xv dCA9IEV2YWxQbGFuUXVhbChjb250ZXh0LT5lcHFzdGF0ZSwKIAkJCQkJCQkJCQkJCSAgIHJl c3VsdFJlbGF0aW9uRGVzYywKIAkJCQkJCQkJCQkJCSAgIHJlc3VsdFJlbEluZm8tPnJpX1Jh bmdlVGFibGVJbmRleCwKIAkJCQkJCQkJCQkJCSAgIGlucHV0c2xvdCk7CkBAIC0xMjczLDcg KzEzODUsNyBAQCBsZGVsZXRlOjsKIAkJCQkJCQkgKiBTZWUgYWxzbyBUTV9TZWxmTW9kaWZp ZWQgcmVzcG9uc2UgdG8KIAkJCQkJCQkgKiB0YWJsZV90dXBsZV9kZWxldGUoKSBhYm92ZS4K IAkJCQkJCQkgKi8KLQkJCQkJCQlpZiAodG1mZC5jbWF4ICE9IGVzdGF0ZS0+ZXNfb3V0cHV0 X2NpZCkKKwkJCQkJCQlpZiAoY29udGV4dC0+dG1mZC5jbWF4ICE9IGVzdGF0ZS0+ZXNfb3V0 cHV0X2NpZCkKIAkJCQkJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCQkJCQkoZXJyY29kZShF UlJDT0RFX1RSSUdHRVJFRF9EQVRBX0NIQU5HRV9WSU9MQVRJT04pLAogCQkJCQkJCQkJCSBl cnJtc2coInR1cGxlIHRvIGJlIGRlbGV0ZWQgd2FzIGFscmVhZHkgbW9kaWZpZWQgYnkgYW4g b3BlcmF0aW9uIHRyaWdnZXJlZCBieSB0aGUgY3VycmVudCBjb21tYW5kIiksCkBAIC0xMzM2 LDMzICsxNDQ4LDcgQEAgbGRlbGV0ZTo7CiAJaWYgKHR1cGxlRGVsZXRlZCkKIAkJKnR1cGxl RGVsZXRlZCA9IHRydWU7CiAKLQkvKgotCSAqIElmIHRoaXMgZGVsZXRlIGlzIHRoZSByZXN1 bHQgb2YgYSBwYXJ0aXRpb24ga2V5IHVwZGF0ZSB0aGF0IG1vdmVkIHRoZQotCSAqIHR1cGxl IHRvIGEgbmV3IHBhcnRpdGlvbiwgcHV0IHRoaXMgcm93IGludG8gdGhlIHRyYW5zaXRpb24g T0xEIFRBQkxFLAotCSAqIGlmIHRoZXJlIGlzIG9uZS4gV2UgbmVlZCB0byBkbyB0aGlzIHNl cGFyYXRlbHkgZm9yIERFTEVURSBhbmQgSU5TRVJUCi0JICogYmVjYXVzZSB0aGV5IGhhcHBl biBvbiBkaWZmZXJlbnQgdGFibGVzLgotCSAqLwotCWFyX2RlbGV0ZV90cmlnX3RjcyA9IG10 c3RhdGUtPm10X3RyYW5zaXRpb25fY2FwdHVyZTsKLQlpZiAobXRzdGF0ZS0+b3BlcmF0aW9u ID09IENNRF9VUERBVEUgJiYgbXRzdGF0ZS0+bXRfdHJhbnNpdGlvbl9jYXB0dXJlCi0JCSYm IG10c3RhdGUtPm10X3RyYW5zaXRpb25fY2FwdHVyZS0+dGNzX3VwZGF0ZV9vbGRfdGFibGUp Ci0JewotCQlFeGVjQVJVcGRhdGVUcmlnZ2Vycyhlc3RhdGUsIHJlc3VsdFJlbEluZm8sCi0J CQkJCQkJIHR1cGxlaWQsCi0JCQkJCQkJIG9sZHR1cGxlLAotCQkJCQkJCSBOVUxMLAotCQkJ CQkJCSBOVUxMLAotCQkJCQkJCSBtdHN0YXRlLT5tdF90cmFuc2l0aW9uX2NhcHR1cmUpOwot Ci0JCS8qCi0JCSAqIFdlJ3ZlIGFscmVhZHkgY2FwdHVyZWQgdGhlIE5FVyBUQUJMRSByb3cs IHNvIG1ha2Ugc3VyZSBhbnkgQVIKLQkJICogREVMRVRFIHRyaWdnZXIgZmlyZWQgYmVsb3cg ZG9lc24ndCBjYXB0dXJlIGl0IGFnYWluLgotCQkgKi8KLQkJYXJfZGVsZXRlX3RyaWdfdGNz ID0gTlVMTDsKLQl9Ci0KLQkvKiBBRlRFUiBST1cgREVMRVRFIFRyaWdnZXJzICovCi0JRXhl Y0FSRGVsZXRlVHJpZ2dlcnMoZXN0YXRlLCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLCBvbGR0 dXBsZSwKLQkJCQkJCSBhcl9kZWxldGVfdHJpZ190Y3MpOworCUV4ZWNEZWxldGVFcGlsb2d1 ZShjb250ZXh0LCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLCBvbGR0dXBsZSk7CiAKIAkvKiBQ cm9jZXNzIFJFVFVSTklORyBpZiBwcmVzZW50IGFuZCBpZiByZXF1ZXN0ZWQgKi8KIAlpZiAo cHJvY2Vzc1JldHVybmluZyAmJiByZXN1bHRSZWxJbmZvLT5yaV9wcm9qZWN0UmV0dXJuaW5n KQpAQCAtMTM5Myw3ICsxNDc5LDcgQEAgbGRlbGV0ZTo7CiAJCQl9CiAJCX0KIAotCQlyc2xv dCA9IEV4ZWNQcm9jZXNzUmV0dXJuaW5nKHJlc3VsdFJlbEluZm8sIHNsb3QsIHBsYW5TbG90 KTsKKwkJcnNsb3QgPSBFeGVjUHJvY2Vzc1JldHVybmluZyhyZXN1bHRSZWxJbmZvLCBzbG90 LCBjb250ZXh0LT5wbGFuU2xvdCk7CiAKIAkJLyoKIAkJICogQmVmb3JlIHJlbGVhc2luZyB0 aGUgdGFyZ2V0IHR1cGxlIGFnYWluLCBtYWtlIHN1cmUgcnNsb3QgaGFzIGEKQEAgLTE0Mjcs MjEgKzE1MTMsMjAgQEAgbGRlbGV0ZTo7CiAgKiBhbmQgY2FsbCB0aGlzIGZ1bmN0aW9uIGFn YWluIG9yIHBlcmZvcm0gYSByZWd1bGFyIHVwZGF0ZSBhY2NvcmRpbmdseS4KICAqLwogc3Rh dGljIGJvb2wKLUV4ZWNDcm9zc1BhcnRpdGlvblVwZGF0ZShNb2RpZnlUYWJsZVN0YXRlICpt dHN0YXRlLAorRXhlY0Nyb3NzUGFydGl0aW9uVXBkYXRlKE1vZGlmeVRhYmxlQ29udGV4dCAq Y29udGV4dCwKIAkJCQkJCSBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJCQkJ IEl0ZW1Qb2ludGVyIHR1cGxlaWQsIEhlYXBUdXBsZSBvbGR0dXBsZSwKLQkJCQkJCSBUdXBs ZVRhYmxlU2xvdCAqc2xvdCwgVHVwbGVUYWJsZVNsb3QgKnBsYW5TbG90LAotCQkJCQkJIEVQ UVN0YXRlICplcHFzdGF0ZSwgYm9vbCBjYW5TZXRUYWcsCi0JCQkJCQkgVHVwbGVUYWJsZVNs b3QgKipyZXRyeV9zbG90LAotCQkJCQkJIFR1cGxlVGFibGVTbG90ICoqaW5zZXJ0ZWRfdHVw bGUpCisJCQkJCQkgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCisJCQkJCQkgYm9vbCBjYW5TZXRU YWcsIFVwZGF0ZUNvbnRleHQgKnVwZGF0ZUN4dCkKIHsKKwlNb2RpZnlUYWJsZVN0YXRlICpt dHN0YXRlID0gY29udGV4dC0+bXRzdGF0ZTsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IG10c3Rh dGUtPnBzLnN0YXRlOwogCVR1cGxlQ29udmVyc2lvbk1hcCAqdHVwY29udl9tYXA7CiAJYm9v bAkJdHVwbGVfZGVsZXRlZDsKIAlUdXBsZVRhYmxlU2xvdCAqZXBxc2xvdCA9IE5VTEw7CiAK LQkqaW5zZXJ0ZWRfdHVwbGUgPSBOVUxMOwotCSpyZXRyeV9zbG90ID0gTlVMTDsKKwljb250 ZXh0LT5pbnNlcnRQcm9qZWN0ZWRUdXBsZSA9IE5VTEw7CisJY29udGV4dC0+cmV0cnlTbG90 ID0gTlVMTDsKIAogCS8qCiAJICogRGlzYWxsb3cgYW4gSU5TRVJUIE9OIENPTkZMSUNUIERP IFVQREFURSB0aGF0IGNhdXNlcyB0aGUgb3JpZ2luYWwgcm93CkBAIC0xNDg4LDExICsxNTcz LDExIEBAIEV4ZWNDcm9zc1BhcnRpdGlvblVwZGF0ZShNb2RpZnlUYWJsZVN0YXRlICptdHN0 YXRlLAogCSAqIFJvdyBtb3ZlbWVudCwgcGFydCAxLiAgRGVsZXRlIHRoZSB0dXBsZSwgYnV0 IHNraXAgUkVUVVJOSU5HIHByb2Nlc3NpbmcuCiAJICogV2Ugd2FudCB0byByZXR1cm4gcm93 cyBmcm9tIElOU0VSVC4KIAkgKi8KLQlFeGVjRGVsZXRlKG10c3RhdGUsIHJlc3VsdFJlbElu Zm8sIHR1cGxlaWQsIG9sZHR1cGxlLCBwbGFuU2xvdCwKLQkJCSAgIGVwcXN0YXRlLCBlc3Rh dGUsCisJRXhlY0RlbGV0ZShjb250ZXh0LCByZXN1bHRSZWxJbmZvLAorCQkJICAgdHVwbGVp ZCwgb2xkdHVwbGUsCiAJCQkgICBmYWxzZSwJCQkvKiBwcm9jZXNzUmV0dXJuaW5nICovCi0J CQkgICBmYWxzZSwJCQkvKiBjYW5TZXRUYWcgKi8KIAkJCSAgIHRydWUsCQkJLyogY2hhbmdp bmdQYXJ0ICovCisJCQkgICBmYWxzZSwJCQkvKiBjYW5TZXRUYWcgKi8KIAkJCSAgICZ0dXBs ZV9kZWxldGVkLCAmZXBxc2xvdCk7CiAKIAkvKgpAQCAtMTUzOCwxMSArMTYyMywxNCBAQCBF eGVjQ3Jvc3NQYXJ0aXRpb25VcGRhdGUoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKIAkJ CQkJCQkJCQkJICAgU25hcHNob3RBbnksCiAJCQkJCQkJCQkJCSAgIG9sZFNsb3QpKQogCQkJ CWVsb2coRVJST1IsICJmYWlsZWQgdG8gZmV0Y2ggdHVwbGUgYmVpbmcgdXBkYXRlZCIpOwot CQkJKnJldHJ5X3Nsb3QgPSBFeGVjR2V0VXBkYXRlTmV3VHVwbGUocmVzdWx0UmVsSW5mbywg ZXBxc2xvdCwKLQkJCQkJCQkJCQkJCW9sZFNsb3QpOworCQkJLyogYW5kIHByb2plY3QgdG8g Y3JlYXRlIGEgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBuZXcgdHVwbGUgKi8KKwkJCWNvbnRl eHQtPnJldHJ5U2xvdCA9CisJCQkJRXhlY0dldFVwZGF0ZU5ld1R1cGxlKHJlc3VsdFJlbElu Zm8sIGVwcXNsb3QsIG9sZFNsb3QpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAJfQorCWVs c2UKKwkJdXBkYXRlQ3h0LT51cGRhdGVkID0gdHJ1ZTsKIAogCS8qCiAJICogcmVzdWx0UmVs SW5mbyBpcyBvbmUgb2YgdGhlIHBlci1yZWxhdGlvbiByZXN1bHRSZWxJbmZvcy4gIFNvIHdl IHNob3VsZApAQCAtMTU1Niw4ICsxNjQ0LDggQEAgRXhlY0Nyb3NzUGFydGl0aW9uVXBkYXRl KE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsCiAJCQkJCQkJCQkgbXRzdGF0ZS0+bXRfcm9v dF90dXBsZV9zbG90KTsKIAogCS8qIFR1cGxlIHJvdXRpbmcgc3RhcnRzIGZyb20gdGhlIHJv b3QgdGFibGUuICovCi0JKmluc2VydGVkX3R1cGxlID0gRXhlY0luc2VydChtdHN0YXRlLCBt dHN0YXRlLT5yb290UmVzdWx0UmVsSW5mbywgc2xvdCwKLQkJCQkJCQkJIHBsYW5TbG90LCBl c3RhdGUsIGNhblNldFRhZyk7CisJY29udGV4dC0+aW5zZXJ0UHJvamVjdGVkVHVwbGUgPQor CQlFeGVjSW5zZXJ0KGNvbnRleHQsIG10c3RhdGUtPnJvb3RSZXN1bHRSZWxJbmZvLCBzbG90 LCBjYW5TZXRUYWcpOwogCiAJLyoKIAkgKiBSZXNldCB0aGUgdHJhbnNpdGlvbiBzdGF0ZSB0 aGF0IG1heSBwb3NzaWJseSBoYXZlIGJlZW4gd3JpdHRlbiBieQpAQCAtMTU3MCw2ICsxNjU4 LDIxMSBAQCBFeGVjQ3Jvc3NQYXJ0aXRpb25VcGRhdGUoTW9kaWZ5VGFibGVTdGF0ZSAqbXRz dGF0ZSwKIAlyZXR1cm4gdHJ1ZTsKIH0KIAorLyoKKyAqIEV4ZWNVcGRhdGVQcm9sb2d1ZSAt LSBzdWJyb3V0aW5lIGZvciBFeGVjVXBkYXRlCisgKgorICogUHJlcGFyZSBleGVjdXRvciBz dGF0ZSBmb3IgVVBEQVRFLiAgVGhpcyBpbmNsdWRlcyBydW5uaW5nIEJFRk9SRSBST1cKKyAq IHRyaWdnZXJzLCB3aGljaCBjb3VsZCAiYWJvcnQiIHRoZSBVUERBVEUuICBXZSByZXR1cm4g ZmFsc2UgaWYgb25lIG9mIHRoZW0KKyAqIG1ha2VzIHRoZSB1cGRhdGUgYSBuby1vcDsgb3Ro ZXJ3aXNlLCByZXR1cm4gdHJ1ZS4KKyAqLworc3RhdGljIGJvb2wKK0V4ZWNVcGRhdGVQcm9s b2d1ZShNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsIFJlc3VsdFJlbEluZm8gKnJlc3Vs dFJlbEluZm8sCisJCQkJICAgSXRlbVBvaW50ZXIgdHVwbGVpZCwgSGVhcFR1cGxlIG9sZHR1 cGxlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKK3sKKwlSZWxhdGlvbglyZXN1bHRSZWxhdGlv bkRlc2MgPSByZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2M7CisKKwlFeGVjTWF0ZXJp YWxpemVTbG90KHNsb3QpOworCisJLyoKKwkgKiBPcGVuIHRoZSB0YWJsZSdzIGluZGV4ZXMs IGlmIHdlIGhhdmUgbm90IGRvbmUgc28gYWxyZWFkeSwgc28gdGhhdCB3ZQorCSAqIGNhbiBh ZGQgbmV3IGluZGV4IGVudHJpZXMgZm9yIHRoZSB1cGRhdGVkIHR1cGxlLgorCSAqLworCWlm IChyZXN1bHRSZWxhdGlvbkRlc2MtPnJkX3JlbC0+cmVsaGFzaW5kZXggJiYKKwkJcmVzdWx0 UmVsSW5mby0+cmlfSW5kZXhSZWxhdGlvbkRlc2NzID09IE5VTEwpCisJCUV4ZWNPcGVuSW5k aWNlcyhyZXN1bHRSZWxJbmZvLCBmYWxzZSk7CisKKwkvKiBCRUZPUkUgUk9XIFVQREFURSBU cmlnZ2VycyAqLworCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9UcmlnRGVzYyAmJgorCQlyZXN1 bHRSZWxJbmZvLT5yaV9UcmlnRGVzYy0+dHJpZ191cGRhdGVfYmVmb3JlX3JvdykKKwl7CisJ CWlmICghRXhlY0JSVXBkYXRlVHJpZ2dlcnMoY29udGV4dC0+ZXN0YXRlLCBjb250ZXh0LT5l cHFzdGF0ZSwKKwkJCQkJCQkJICByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLCBvbGR0dXBsZSwg c2xvdCkpCisJCQkvKiBzb21lIHRyaWdnZXIgbWFkZSB0aGUgdXBkYXRlIGEgbm8tb3A7IGxl dCBjYWxsZXIga25vdyAqLworCQkJcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVybiB0cnVl OworfQorCisvKgorICogRXhlY1VwZGF0ZVByZXBhcmVTbG90IC0tIHN1YnJvdXRpbmUgZm9y IEV4ZWNVcGRhdGUKKyAqCisgKiBBcHBseSB0aGUgZmluYWwgbW9kaWZpY2F0aW9ucyB0byB0 aGUgdHVwbGUgc2xvdCBiZWZvcmUgdGhlIHVwZGF0ZS4KKyAqLworc3RhdGljIHZvaWQKK0V4 ZWNVcGRhdGVQcmVwYXJlU2xvdChSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAorCQkJ CQkgIFR1cGxlVGFibGVTbG90ICpzbG90LAorCQkJCQkgIEVTdGF0ZSAqZXN0YXRlKQorewor CVJlbGF0aW9uCXJlc3VsdFJlbGF0aW9uRGVzYyA9IHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0 aW9uRGVzYzsKKworCS8qCisJICogQ29uc3RyYWludHMgYW5kIEdFTkVSQVRFRCBleHByZXNz aW9ucyBtaWdodCByZWZlcmVuY2UgdGhlIHRhYmxlb2lkCisJICogY29sdW1uLCBzbyAocmUt KWluaXRpYWxpemUgdHRzX3RhYmxlT2lkIGJlZm9yZSBldmFsdWF0aW5nIHRoZW0uCisJICov CisJc2xvdC0+dHRzX3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChyZXN1bHRSZWxhdGlv bkRlc2MpOworCisJLyoKKwkgKiBDb21wdXRlIHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1ucwor CSAqLworCWlmIChyZXN1bHRSZWxhdGlvbkRlc2MtPnJkX2F0dC0+Y29uc3RyICYmCisJCXJl c3VsdFJlbGF0aW9uRGVzYy0+cmRfYXR0LT5jb25zdHItPmhhc19nZW5lcmF0ZWRfc3RvcmVk KQorCQlFeGVjQ29tcHV0ZVN0b3JlZEdlbmVyYXRlZChyZXN1bHRSZWxJbmZvLCBlc3RhdGUs IHNsb3QsCisJCQkJCQkJCSAgIENNRF9VUERBVEUpOworfQorCisvKgorICogRXhlY1VwZGF0 ZUFjdCAtLSBzdWJyb3V0aW5lIGZvciBFeGVjVXBkYXRlCisgKgorICogQWN0dWFsbHkgdXBk YXRlIHRoZSB0dXBsZSwgd2hlbiBvcGVyYXRpbmcgb24gYSBwbGFpbiBvciBwYXJ0aXRpb25l ZCB0YWJsZS4KKyAqCisgKiBDYWxsZXIgaXMgaW4gY2hhcmdlIG9mIGRvaW5nIEV2YWxQbGFu UXVhbCBhcyBuZWNlc3NhcnksIGFuZCBvZiBrZWVwaW5nCisgKiBpbmRleGVzIGN1cnJlbnQg Zm9yIHRoZSB1cGRhdGUuCisgKi8KK3N0YXRpYyBUTV9SZXN1bHQKK0V4ZWNVcGRhdGVBY3Qo TW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJ bmZvLAorCQkJICBJdGVtUG9pbnRlciB0dXBsZWlkLCBIZWFwVHVwbGUgb2xkdHVwbGUsIFR1 cGxlVGFibGVTbG90ICpzbG90LAorCQkJICBib29sIGNhblNldFRhZywgVXBkYXRlQ29udGV4 dCAqdXBkYXRlQ3h0KQoreworCUVTdGF0ZQkgICAqZXN0YXRlID0gY29udGV4dC0+ZXN0YXRl OworCVJlbGF0aW9uCXJlc3VsdFJlbGF0aW9uRGVzYyA9IHJlc3VsdFJlbEluZm8tPnJpX1Jl bGF0aW9uRGVzYzsKKwlib29sCQlwYXJ0aXRpb25fY29uc3RyYWludF9mYWlsZWQ7CisJVE1f UmVzdWx0CXJlc3VsdDsKKworCS8qCisJICogSWYgd2UgZ2VuZXJhdGUgYSBuZXcgY2FuZGlk YXRlIHR1cGxlIGFmdGVyIEV2YWxQbGFuUXVhbCB0ZXN0aW5nLCB3ZQorCSAqIG11c3QgbG9v cCBiYWNrIGhlcmUgYW5kIHJlY2hlY2sgYW55IFJMUyBwb2xpY2llcyBhbmQgY29uc3RyYWlu dHMuIChXZQorCSAqIGRvbid0IG5lZWQgdG8gcmVkbyB0cmlnZ2VycywgaG93ZXZlci4gIElm IHRoZXJlIGFyZSBhbnkgQkVGT1JFIHRyaWdnZXJzCisJICogdGhlbiB0cmlnZ2VyLmMgd2ls bCBoYXZlIGRvbmUgdGFibGVfdHVwbGVfbG9jayB0byBsb2NrIHRoZSBjb3JyZWN0CisJICog dHVwbGUsIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byBkbyB0aGVtIGFnYWluLikKKwkgKi8KK2xy ZXBsYWNlOjsKKworCS8qIGVuc3VyZSBzbG90IGlzIGluZGVwZW5kZW50LCBjb25zaWRlciBl LmcuIEVQUSAqLworCUV4ZWNNYXRlcmlhbGl6ZVNsb3Qoc2xvdCk7CisKKwkvKgorCSAqIElm IHBhcnRpdGlvbiBjb25zdHJhaW50IGZhaWxzLCB0aGlzIHJvdyBtaWdodCBnZXQgbW92ZWQg dG8gYW5vdGhlcgorCSAqIHBhcnRpdGlvbiwgaW4gd2hpY2ggY2FzZSB3ZSBzaG91bGQgY2hl Y2sgdGhlIFJMUyBDSEVDSyBwb2xpY3kganVzdAorCSAqIGJlZm9yZSBpbnNlcnRpbmcgaW50 byB0aGUgbmV3IHBhcnRpdGlvbiwgcmF0aGVyIHRoYW4gZG9pbmcgaXQgaGVyZS4KKwkgKiBU aGlzIGlzIGJlY2F1c2UgYSB0cmlnZ2VyIG9uIHRoYXQgcGFydGl0aW9uIG1pZ2h0IGFnYWlu IGNoYW5nZSB0aGUgcm93LgorCSAqIFNvIHNraXAgdGhlIFdDTyBjaGVja3MgaWYgdGhlIHBh cnRpdGlvbiBjb25zdHJhaW50IGZhaWxzLgorCSAqLworCXBhcnRpdGlvbl9jb25zdHJhaW50 X2ZhaWxlZCA9CisJCXJlc3VsdFJlbGF0aW9uRGVzYy0+cmRfcmVsLT5yZWxpc3BhcnRpdGlv biAmJgorCQkhRXhlY1BhcnRpdGlvbkNoZWNrKHJlc3VsdFJlbEluZm8sIHNsb3QsIGVzdGF0 ZSwgZmFsc2UpOworCisJLyogQ2hlY2sgYW55IFJMUyBVUERBVEUgV0lUSCBDSEVDSyBwb2xp Y2llcyAqLworCWlmICghcGFydGl0aW9uX2NvbnN0cmFpbnRfZmFpbGVkICYmCisJCXJlc3Vs dFJlbEluZm8tPnJpX1dpdGhDaGVja09wdGlvbnMgIT0gTklMKQorCXsKKwkJLyoKKwkJICog RXhlY1dpdGhDaGVja09wdGlvbnMoKSB3aWxsIHNraXAgYW55IFdDT3Mgd2hpY2ggYXJlIG5v dCBvZiB0aGUga2luZAorCQkgKiB3ZSBhcmUgbG9va2luZyBmb3IgYXQgdGhpcyBwb2ludC4K KwkJICovCisJCUV4ZWNXaXRoQ2hlY2tPcHRpb25zKFdDT19STFNfVVBEQVRFX0NIRUNLLAor CQkJCQkJCSByZXN1bHRSZWxJbmZvLCBzbG90LCBlc3RhdGUpOworCX0KKworCS8qCisJICog SWYgYSBwYXJ0aXRpb24gY2hlY2sgZmFpbGVkLCB0cnkgdG8gbW92ZSB0aGUgcm93IGludG8g dGhlIHJpZ2h0CisJICogcGFydGl0aW9uLgorCSAqLworCWlmIChwYXJ0aXRpb25fY29uc3Ry YWludF9mYWlsZWQpCisJeworCQlib29sCQlyZXRyeTsKKworCQkvKgorCQkgKiBFeGVjQ3Jv c3NQYXJ0aXRpb25VcGRhdGUgd2lsbCBmaXJzdCBERUxFVEUgdGhlIHJvdyBmcm9tIHRoZQor CQkgKiBwYXJ0aXRpb24gaXQncyBjdXJyZW50bHkgaW4gYW5kIHRoZW4gaW5zZXJ0IGl0IGJh Y2sgaW50byB0aGUgcm9vdAorCQkgKiB0YWJsZSwgd2hpY2ggd2lsbCByZS1yb3V0ZSBpdCB0 byB0aGUgY29ycmVjdCBwYXJ0aXRpb24uIFRoZSBmaXJzdAorCQkgKiBwYXJ0IG1heSBoYXZl IHRvIGJlIHJlcGVhdGVkIGlmIGl0IGlzIGRldGVjdGVkIHRoYXQgdGhlIHR1cGxlIHdlJ3Jl CisJCSAqIHRyeWluZyB0byBtb3ZlIGhhcyBiZWVuIGNvbmN1cnJlbnRseSB1cGRhdGVkLgor CQkgKi8KKwkJcmV0cnkgPSAhRXhlY0Nyb3NzUGFydGl0aW9uVXBkYXRlKGNvbnRleHQsIHJl c3VsdFJlbEluZm8sCisJCQkJCQkJCQkJICB0dXBsZWlkLCBvbGR0dXBsZSwgc2xvdCwKKwkJ CQkJCQkJCQkgIGNhblNldFRhZywgdXBkYXRlQ3h0KTsKKwkJaWYgKHJldHJ5KQorCQl7CisJ CQlzbG90ID0gY29udGV4dC0+cmV0cnlTbG90OworCQkJZ290byBscmVwbGFjZTsKKwkJfQor CisJCXVwZGF0ZUN4dC0+Y3Jvc3NQYXJ0VXBkYXRlID0gdHJ1ZTsKKwkJcmV0dXJuIFRNX09r OworCX0KKworCS8qCisJICogQ2hlY2sgdGhlIGNvbnN0cmFpbnRzIG9mIHRoZSB0dXBsZS4g IFdlJ3ZlIGFscmVhZHkgY2hlY2tlZCB0aGUKKwkgKiBwYXJ0aXRpb24gY29uc3RyYWludCBh Ym92ZTsgaG93ZXZlciwgd2UgbXVzdCBzdGlsbCBlbnN1cmUgdGhlIHR1cGxlCisJICogcGFz c2VzIGFsbCBvdGhlciBjb25zdHJhaW50cywgc28gd2Ugd2lsbCBjYWxsIEV4ZWNDb25zdHJh aW50cygpIGFuZAorCSAqIGhhdmUgaXQgdmFsaWRhdGUgYWxsIHJlbWFpbmluZyBjaGVja3Mu CisJICovCisJaWYgKHJlc3VsdFJlbGF0aW9uRGVzYy0+cmRfYXR0LT5jb25zdHIpCisJCUV4 ZWNDb25zdHJhaW50cyhyZXN1bHRSZWxJbmZvLCBzbG90LCBlc3RhdGUpOworCisJLyoKKwkg KiByZXBsYWNlIHRoZSBoZWFwIHR1cGxlCisJICoKKwkgKiBOb3RlOiBpZiBlc19jcm9zc2No ZWNrX3NuYXBzaG90IGlzbid0IEludmFsaWRTbmFwc2hvdCwgd2UgY2hlY2sgdGhhdAorCSAq IHRoZSByb3cgdG8gYmUgdXBkYXRlZCBpcyB2aXNpYmxlIHRvIHRoYXQgc25hcHNob3QsIGFu ZCB0aHJvdyBhCisJICogY2FuJ3Qtc2VyaWFsaXplIGVycm9yIGlmIG5vdC4gVGhpcyBpcyBh IHNwZWNpYWwtY2FzZSBiZWhhdmlvciBuZWVkZWQKKwkgKiBmb3IgcmVmZXJlbnRpYWwgaW50 ZWdyaXR5IHVwZGF0ZXMgaW4gdHJhbnNhY3Rpb24tc25hcHNob3QgbW9kZQorCSAqIHRyYW5z YWN0aW9ucy4KKwkgKi8KKwlyZXN1bHQgPSB0YWJsZV90dXBsZV91cGRhdGUocmVzdWx0UmVs YXRpb25EZXNjLCB0dXBsZWlkLCBzbG90LAorCQkJCQkJCQllc3RhdGUtPmVzX291dHB1dF9j aWQsCisJCQkJCQkJCWVzdGF0ZS0+ZXNfc25hcHNob3QsCisJCQkJCQkJCWVzdGF0ZS0+ZXNf Y3Jvc3NjaGVja19zbmFwc2hvdCwKKwkJCQkJCQkJdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQg Ki8gLAorCQkJCQkJCQkmY29udGV4dC0+dG1mZCwgJmNvbnRleHQtPmxvY2ttb2RlLAorCQkJ CQkJCQkmdXBkYXRlQ3h0LT51cGRhdGVJbmRleGVzKTsKKwlpZiAocmVzdWx0ID09IFRNX09r KQorCQl1cGRhdGVDeHQtPnVwZGF0ZWQgPSB0cnVlOworCisJcmV0dXJuIHJlc3VsdDsKK30K Kworc3RhdGljIHZvaWQKK0V4ZWNVcGRhdGVFcGlsb2d1ZShNb2RpZnlUYWJsZUNvbnRleHQg KmNvbnRleHQsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCisJCQkJICAgSXRlbVBv aW50ZXIgdHVwbGVpZCwgSGVhcFR1cGxlIG9sZHR1cGxlLCBUdXBsZVRhYmxlU2xvdCAqc2xv dCwKKwkJCQkgICBMaXN0ICpyZWNoZWNrSW5kZXhlcykKK3sKKwlNb2RpZnlUYWJsZVN0YXRl ICptdHN0YXRlID0gY29udGV4dC0+bXRzdGF0ZTsKKworCS8qIEFGVEVSIFJPVyBVUERBVEUg VHJpZ2dlcnMgKi8KKwlFeGVjQVJVcGRhdGVUcmlnZ2Vycyhjb250ZXh0LT5lc3RhdGUsIHJl c3VsdFJlbEluZm8sCisJCQkJCQkgdHVwbGVpZCwgb2xkdHVwbGUsIHNsb3QsCisJCQkJCQkg cmVjaGVja0luZGV4ZXMsCisJCQkJCQkgbXRzdGF0ZS0+b3BlcmF0aW9uID09IENNRF9JTlNF UlQgPworCQkJCQkJIG10c3RhdGUtPm10X29jX3RyYW5zaXRpb25fY2FwdHVyZSA6CisJCQkJ CQkgbXRzdGF0ZS0+bXRfdHJhbnNpdGlvbl9jYXB0dXJlKTsKKworCS8qCisJICogQ2hlY2sg YW55IFdJVEggQ0hFQ0sgT1BUSU9OIGNvbnN0cmFpbnRzIGZyb20gcGFyZW50IHZpZXdzLiAg V2UgYXJlCisJICogcmVxdWlyZWQgdG8gZG8gdGhpcyBhZnRlciB0ZXN0aW5nIGFsbCBjb25z dHJhaW50cyBhbmQgdW5pcXVlbmVzcworCSAqIHZpb2xhdGlvbnMgcGVyIHRoZSBTUUwgc3Bl Yywgc28gd2UgZG8gaXQgYWZ0ZXIgYWN0dWFsbHkgdXBkYXRpbmcgdGhlCisJICogcmVjb3Jk IGluIHRoZSBoZWFwIGFuZCBhbGwgaW5kZXhlcy4KKwkgKgorCSAqIEV4ZWNXaXRoQ2hlY2tP cHRpb25zKCkgd2lsbCBza2lwIGFueSBXQ09zIHdoaWNoIGFyZSBub3Qgb2YgdGhlIGtpbmQg d2UKKwkgKiBhcmUgbG9va2luZyBmb3IgYXQgdGhpcyBwb2ludC4KKwkgKi8KKwlpZiAocmVz dWx0UmVsSW5mby0+cmlfV2l0aENoZWNrT3B0aW9ucyAhPSBOSUwpCisJCUV4ZWNXaXRoQ2hl Y2tPcHRpb25zKFdDT19WSUVXX0NIRUNLLCByZXN1bHRSZWxJbmZvLAorCQkJCQkJCSBzbG90 LCBjb250ZXh0LT5lc3RhdGUpOworfQorCisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjVXBk YXRlCiAgKgpAQCAtMTU5OCwyMCArMTg5MSwxNSBAQCBFeGVjQ3Jvc3NQYXJ0aXRpb25VcGRh dGUoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogc3Rh dGljIFR1cGxlVGFibGVTbG90ICoKLUV4ZWNVcGRhdGUoTW9kaWZ5VGFibGVTdGF0ZSAqbXRz dGF0ZSwKLQkJICAgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKLQkJICAgSXRlbVBv aW50ZXIgdHVwbGVpZCwKLQkJICAgSGVhcFR1cGxlIG9sZHR1cGxlLAotCQkgICBUdXBsZVRh YmxlU2xvdCAqc2xvdCwKLQkJICAgVHVwbGVUYWJsZVNsb3QgKnBsYW5TbG90LAotCQkgICBF UFFTdGF0ZSAqZXBxc3RhdGUsCi0JCSAgIEVTdGF0ZSAqZXN0YXRlLAorRXhlY1VwZGF0ZShN b2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbElu Zm8sCisJCSAgIEl0ZW1Qb2ludGVyIHR1cGxlaWQsIEhlYXBUdXBsZSBvbGR0dXBsZSwgVHVw bGVUYWJsZVNsb3QgKnNsb3QsCiAJCSAgIGJvb2wgY2FuU2V0VGFnKQogeworCUVTdGF0ZQkg ICAqZXN0YXRlID0gY29udGV4dC0+ZXN0YXRlOwogCVJlbGF0aW9uCXJlc3VsdFJlbGF0aW9u RGVzYyA9IHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYzsKLQlUTV9SZXN1bHQJcmVz dWx0OwotCVRNX0ZhaWx1cmVEYXRhIHRtZmQ7CisJVXBkYXRlQ29udGV4dCB1cGRhdGVDeHQg PSB7MH07CiAJTGlzdAkgICAqcmVjaGVja0luZGV4ZXMgPSBOSUw7CisJVE1fUmVzdWx0CXJl c3VsdDsKIAogCS8qCiAJICogYWJvcnQgdGhlIG9wZXJhdGlvbiBpZiBub3QgcnVubmluZyB0 cmFuc2FjdGlvbnMKQEAgLTE2MTksMjQgKzE5MDcsMTIgQEAgRXhlY1VwZGF0ZShNb2RpZnlU YWJsZVN0YXRlICptdHN0YXRlLAogCWlmIChJc0Jvb3RzdHJhcFByb2Nlc3NpbmdNb2RlKCkp CiAJCWVsb2coRVJST1IsICJjYW5ub3QgVVBEQVRFIGR1cmluZyBib290c3RyYXAiKTsKIAot CUV4ZWNNYXRlcmlhbGl6ZVNsb3Qoc2xvdCk7Ci0KIAkvKgotCSAqIE9wZW4gdGhlIHRhYmxl J3MgaW5kZXhlcywgaWYgd2UgaGF2ZSBub3QgZG9uZSBzbyBhbHJlYWR5LCBzbyB0aGF0IHdl Ci0JICogY2FuIGFkZCBuZXcgaW5kZXggZW50cmllcyBmb3IgdGhlIHVwZGF0ZWQgdHVwbGUu CisJICogUHJlcGFyZSBmb3IgdGhlIHVwZGF0ZS4gIFRoaXMgaW5jbHVkZXMgQkVGT1JFIFJP VyB0cmlnZ2Vycywgc28gd2UncmUKKwkgKiBkb25lIGlmIGl0IHNheXMgd2UgYXJlLgogCSAq LwotCWlmIChyZXN1bHRSZWxhdGlvbkRlc2MtPnJkX3JlbC0+cmVsaGFzaW5kZXggJiYKLQkJ cmVzdWx0UmVsSW5mby0+cmlfSW5kZXhSZWxhdGlvbkRlc2NzID09IE5VTEwpCi0JCUV4ZWNP cGVuSW5kaWNlcyhyZXN1bHRSZWxJbmZvLCBmYWxzZSk7Ci0KLQkvKiBCRUZPUkUgUk9XIFVQ REFURSBUcmlnZ2VycyAqLwotCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9UcmlnRGVzYyAmJgot CQlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnRGVzYy0+dHJpZ191cGRhdGVfYmVmb3JlX3JvdykK LQl7Ci0JCWlmICghRXhlY0JSVXBkYXRlVHJpZ2dlcnMoZXN0YXRlLCBlcHFzdGF0ZSwgcmVz dWx0UmVsSW5mbywKLQkJCQkJCQkJICB0dXBsZWlkLCBvbGR0dXBsZSwgc2xvdCkpCi0JCQly ZXR1cm4gTlVMTDsJCS8qICJkbyBub3RoaW5nIiAqLwotCX0KKwlpZiAoIUV4ZWNVcGRhdGVQ cm9sb2d1ZShjb250ZXh0LCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLCBvbGR0dXBsZSwgc2xv dCkpCisJCXJldHVybiBOVUxMOwogCiAJLyogSU5TVEVBRCBPRiBST1cgVVBEQVRFIFRyaWdn ZXJzICovCiAJaWYgKHJlc3VsdFJlbEluZm8tPnJpX1RyaWdEZXNjICYmCkBAIC0xNjQ4LDE5 ICsxOTI0LDcgQEAgRXhlY1VwZGF0ZShNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLAogCX0K IAllbHNlIGlmIChyZXN1bHRSZWxJbmZvLT5yaV9GZHdSb3V0aW5lKQogCXsKLQkJLyoKLQkJ ICogR0VORVJBVEVEIGV4cHJlc3Npb25zIG1pZ2h0IHJlZmVyZW5jZSB0aGUgdGFibGVvaWQg Y29sdW1uLCBzbwotCQkgKiAocmUtKWluaXRpYWxpemUgdHRzX3RhYmxlT2lkIGJlZm9yZSBl dmFsdWF0aW5nIHRoZW0uCi0JCSAqLwotCQlzbG90LT50dHNfdGFibGVPaWQgPSBSZWxhdGlv bkdldFJlbGlkKHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYyk7Ci0KLQkJLyoKLQkJ ICogQ29tcHV0ZSBzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbnMKLQkJICovCi0JCWlmIChyZXN1 bHRSZWxhdGlvbkRlc2MtPnJkX2F0dC0+Y29uc3RyICYmCi0JCQlyZXN1bHRSZWxhdGlvbkRl c2MtPnJkX2F0dC0+Y29uc3RyLT5oYXNfZ2VuZXJhdGVkX3N0b3JlZCkKLQkJCUV4ZWNDb21w dXRlU3RvcmVkR2VuZXJhdGVkKHJlc3VsdFJlbEluZm8sIGVzdGF0ZSwgc2xvdCwKLQkJCQkJ CQkJCSAgIENNRF9VUERBVEUpOworCQlFeGVjVXBkYXRlUHJlcGFyZVNsb3QocmVzdWx0UmVs SW5mbywgc2xvdCwgZXN0YXRlKTsKIAogCQkvKgogCQkgKiB1cGRhdGUgaW4gZm9yZWlnbiB0 YWJsZTogbGV0IHRoZSBGRFcgZG8gaXQKQEAgLTE2NjgsNyArMTkzMiw3IEBAIEV4ZWNVcGRh dGUoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKIAkJc2xvdCA9IHJlc3VsdFJlbEluZm8t PnJpX0Zkd1JvdXRpbmUtPkV4ZWNGb3JlaWduVXBkYXRlKGVzdGF0ZSwKIAkJCQkJCQkJCQkJ CQkJCSAgIHJlc3VsdFJlbEluZm8sCiAJCQkJCQkJCQkJCQkJCQkgICBzbG90LAotCQkJCQkJ CQkJCQkJCQkJICAgcGxhblNsb3QpOworCQkJCQkJCQkJCQkJCQkJICAgY29udGV4dC0+cGxh blNsb3QpOwogCiAJCWlmIChzbG90ID09IE5VTEwpCQkvKiAiZG8gbm90aGluZyIgKi8KIAkJ CXJldHVybiBOVUxMOwpAQCAtMTY4MiwxMTQgKzE5NDYsMjEgQEAgRXhlY1VwZGF0ZShNb2Rp ZnlUYWJsZVN0YXRlICptdHN0YXRlLAogCX0KIAllbHNlCiAJewotCQlMb2NrVHVwbGVNb2Rl IGxvY2ttb2RlOwotCQlib29sCQlwYXJ0aXRpb25fY29uc3RyYWludF9mYWlsZWQ7Ci0JCWJv b2wJCXVwZGF0ZV9pbmRleGVzOworCQkvKiBGaWxsIGluIHRoZSBzbG90IGFwcHJvcHJpYXRl bHkgKi8KKwkJRXhlY1VwZGF0ZVByZXBhcmVTbG90KHJlc3VsdFJlbEluZm8sIHNsb3QsIGVz dGF0ZSk7CisKK3JlZG9fYWN0OgorCQkvKiBYWFggcmVpbml0IC0+Y3Jvc3NQYXJ0VXBkYXRl IGhlcmU/ICovCisJCXJlc3VsdCA9IEV4ZWNVcGRhdGVBY3QoY29udGV4dCwgcmVzdWx0UmVs SW5mbywgdHVwbGVpZCwgb2xkdHVwbGUsIHNsb3QsCisJCQkJCQkJICAgY2FuU2V0VGFnLCAm dXBkYXRlQ3h0KTsKIAogCQkvKgotCQkgKiBDb25zdHJhaW50cyBhbmQgR0VORVJBVEVEIGV4 cHJlc3Npb25zIG1pZ2h0IHJlZmVyZW5jZSB0aGUgdGFibGVvaWQKLQkJICogY29sdW1uLCBz byAocmUtKWluaXRpYWxpemUgdHRzX3RhYmxlT2lkIGJlZm9yZSBldmFsdWF0aW5nIHRoZW0u CisJCSAqIElmIEV4ZWNVcGRhdGVBY3QgcmVwb3J0cyB0aGF0IGEgY3Jvc3MtcGFydGl0aW9u IHVwZGF0ZSB3YXMgZG9uZSwKKwkJICogdGhlbiB0aGUgcmV0dXJuaW5nIHR1cGxlIGhhcyBi ZWVuIHByb2plY3RlZCBhbmQgdGhlcmUncyBub3RoaW5nCisJCSAqIGVsc2UgZm9yIHVzIHRv IGRvLgogCQkgKi8KLQkJc2xvdC0+dHRzX3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChy ZXN1bHRSZWxhdGlvbkRlc2MpOwotCi0JCS8qCi0JCSAqIENvbXB1dGUgc3RvcmVkIGdlbmVy YXRlZCBjb2x1bW5zCi0JCSAqLwotCQlpZiAocmVzdWx0UmVsYXRpb25EZXNjLT5yZF9hdHQt PmNvbnN0ciAmJgotCQkJcmVzdWx0UmVsYXRpb25EZXNjLT5yZF9hdHQtPmNvbnN0ci0+aGFz X2dlbmVyYXRlZF9zdG9yZWQpCi0JCQlFeGVjQ29tcHV0ZVN0b3JlZEdlbmVyYXRlZChyZXN1 bHRSZWxJbmZvLCBlc3RhdGUsIHNsb3QsCi0JCQkJCQkJCQkgICBDTURfVVBEQVRFKTsKLQot CQkvKgotCQkgKiBDaGVjayBhbnkgUkxTIFVQREFURSBXSVRIIENIRUNLIHBvbGljaWVzCi0J CSAqCi0JCSAqIElmIHdlIGdlbmVyYXRlIGEgbmV3IGNhbmRpZGF0ZSB0dXBsZSBhZnRlciBF dmFsUGxhblF1YWwgdGVzdGluZywgd2UKLQkJICogbXVzdCBsb29wIGJhY2sgaGVyZSBhbmQg cmVjaGVjayBhbnkgUkxTIHBvbGljaWVzIGFuZCBjb25zdHJhaW50cy4KLQkJICogKFdlIGRv bid0IG5lZWQgdG8gcmVkbyB0cmlnZ2VycywgaG93ZXZlci4gIElmIHRoZXJlIGFyZSBhbnkg QkVGT1JFCi0JCSAqIHRyaWdnZXJzIHRoZW4gdHJpZ2dlci5jIHdpbGwgaGF2ZSBkb25lIHRh YmxlX3R1cGxlX2xvY2sgdG8gbG9jayB0aGUKLQkJICogY29ycmVjdCB0dXBsZSwgc28gdGhl cmUncyBubyBuZWVkIHRvIGRvIHRoZW0gYWdhaW4uKQotCQkgKi8KLWxyZXBsYWNlOjsKLQot CQkvKiBlbnN1cmUgc2xvdCBpcyBpbmRlcGVuZGVudCwgY29uc2lkZXIgZS5nLiBFUFEgKi8K LQkJRXhlY01hdGVyaWFsaXplU2xvdChzbG90KTsKLQotCQkvKgotCQkgKiBJZiBwYXJ0aXRp b24gY29uc3RyYWludCBmYWlscywgdGhpcyByb3cgbWlnaHQgZ2V0IG1vdmVkIHRvIGFub3Ro ZXIKLQkJICogcGFydGl0aW9uLCBpbiB3aGljaCBjYXNlIHdlIHNob3VsZCBjaGVjayB0aGUg UkxTIENIRUNLIHBvbGljeSBqdXN0Ci0JCSAqIGJlZm9yZSBpbnNlcnRpbmcgaW50byB0aGUg bmV3IHBhcnRpdGlvbiwgcmF0aGVyIHRoYW4gZG9pbmcgaXQgaGVyZS4KLQkJICogVGhpcyBp cyBiZWNhdXNlIGEgdHJpZ2dlciBvbiB0aGF0IHBhcnRpdGlvbiBtaWdodCBhZ2FpbiBjaGFu Z2UgdGhlCi0JCSAqIHJvdy4gIFNvIHNraXAgdGhlIFdDTyBjaGVja3MgaWYgdGhlIHBhcnRp dGlvbiBjb25zdHJhaW50IGZhaWxzLgotCQkgKi8KLQkJcGFydGl0aW9uX2NvbnN0cmFpbnRf ZmFpbGVkID0KLQkJCXJlc3VsdFJlbGF0aW9uRGVzYy0+cmRfcmVsLT5yZWxpc3BhcnRpdGlv biAmJgotCQkJIUV4ZWNQYXJ0aXRpb25DaGVjayhyZXN1bHRSZWxJbmZvLCBzbG90LCBlc3Rh dGUsIGZhbHNlKTsKLQotCQlpZiAoIXBhcnRpdGlvbl9jb25zdHJhaW50X2ZhaWxlZCAmJgot CQkJcmVzdWx0UmVsSW5mby0+cmlfV2l0aENoZWNrT3B0aW9ucyAhPSBOSUwpCi0JCXsKLQkJ CS8qCi0JCQkgKiBFeGVjV2l0aENoZWNrT3B0aW9ucygpIHdpbGwgc2tpcCBhbnkgV0NPcyB3 aGljaCBhcmUgbm90IG9mIHRoZQotCQkJICoga2luZCB3ZSBhcmUgbG9va2luZyBmb3IgYXQg dGhpcyBwb2ludC4KLQkJCSAqLwotCQkJRXhlY1dpdGhDaGVja09wdGlvbnMoV0NPX1JMU19V UERBVEVfQ0hFQ0ssCi0JCQkJCQkJCSByZXN1bHRSZWxJbmZvLCBzbG90LCBlc3RhdGUpOwot CQl9Ci0KLQkJLyoKLQkJICogSWYgYSBwYXJ0aXRpb24gY2hlY2sgZmFpbGVkLCB0cnkgdG8g bW92ZSB0aGUgcm93IGludG8gdGhlIHJpZ2h0Ci0JCSAqIHBhcnRpdGlvbi4KLQkJICovCi0J CWlmIChwYXJ0aXRpb25fY29uc3RyYWludF9mYWlsZWQpCi0JCXsKLQkJCVR1cGxlVGFibGVT bG90ICppbnNlcnRlZF90dXBsZSwKLQkJCQkJICAgKnJldHJ5X3Nsb3Q7Ci0JCQlib29sCQly ZXRyeTsKLQotCQkJLyoKLQkJCSAqIEV4ZWNDcm9zc1BhcnRpdGlvblVwZGF0ZSB3aWxsIGZp cnN0IERFTEVURSB0aGUgcm93IGZyb20gdGhlCi0JCQkgKiBwYXJ0aXRpb24gaXQncyBjdXJy ZW50bHkgaW4gYW5kIHRoZW4gaW5zZXJ0IGl0IGJhY2sgaW50byB0aGUKLQkJCSAqIHJvb3Qg dGFibGUsIHdoaWNoIHdpbGwgcmUtcm91dGUgaXQgdG8gdGhlIGNvcnJlY3QgcGFydGl0aW9u LgotCQkJICogVGhlIGZpcnN0IHBhcnQgbWF5IGhhdmUgdG8gYmUgcmVwZWF0ZWQgaWYgaXQg aXMgZGV0ZWN0ZWQgdGhhdAotCQkJICogdGhlIHR1cGxlIHdlJ3JlIHRyeWluZyB0byBtb3Zl IGhhcyBiZWVuIGNvbmN1cnJlbnRseSB1cGRhdGVkLgotCQkJICovCi0JCQlyZXRyeSA9ICFF eGVjQ3Jvc3NQYXJ0aXRpb25VcGRhdGUobXRzdGF0ZSwgcmVzdWx0UmVsSW5mbywgdHVwbGVp ZCwKLQkJCQkJCQkJCQkJICBvbGR0dXBsZSwgc2xvdCwgcGxhblNsb3QsCi0JCQkJCQkJCQkJ CSAgZXBxc3RhdGUsIGNhblNldFRhZywKLQkJCQkJCQkJCQkJICAmcmV0cnlfc2xvdCwgJmlu c2VydGVkX3R1cGxlKTsKLQkJCWlmIChyZXRyeSkKLQkJCXsKLQkJCQlzbG90ID0gcmV0cnlf c2xvdDsKLQkJCQlnb3RvIGxyZXBsYWNlOwotCQkJfQotCi0JCQlyZXR1cm4gaW5zZXJ0ZWRf dHVwbGU7Ci0JCX0KLQotCQkvKgotCQkgKiBDaGVjayB0aGUgY29uc3RyYWludHMgb2YgdGhl IHR1cGxlLiAgV2UndmUgYWxyZWFkeSBjaGVja2VkIHRoZQotCQkgKiBwYXJ0aXRpb24gY29u c3RyYWludCBhYm92ZTsgaG93ZXZlciwgd2UgbXVzdCBzdGlsbCBlbnN1cmUgdGhlIHR1cGxl Ci0JCSAqIHBhc3NlcyBhbGwgb3RoZXIgY29uc3RyYWludHMsIHNvIHdlIHdpbGwgY2FsbCBF eGVjQ29uc3RyYWludHMoKSBhbmQKLQkJICogaGF2ZSBpdCB2YWxpZGF0ZSBhbGwgcmVtYWlu aW5nIGNoZWNrcy4KLQkJICovCi0JCWlmIChyZXN1bHRSZWxhdGlvbkRlc2MtPnJkX2F0dC0+ Y29uc3RyKQotCQkJRXhlY0NvbnN0cmFpbnRzKHJlc3VsdFJlbEluZm8sIHNsb3QsIGVzdGF0 ZSk7Ci0KLQkJLyoKLQkJICogcmVwbGFjZSB0aGUgaGVhcCB0dXBsZQotCQkgKgotCQkgKiBO b3RlOiBpZiBlc19jcm9zc2NoZWNrX3NuYXBzaG90IGlzbid0IEludmFsaWRTbmFwc2hvdCwg d2UgY2hlY2sKLQkJICogdGhhdCB0aGUgcm93IHRvIGJlIHVwZGF0ZWQgaXMgdmlzaWJsZSB0 byB0aGF0IHNuYXBzaG90LCBhbmQgdGhyb3cgYQotCQkgKiBjYW4ndC1zZXJpYWxpemUgZXJy b3IgaWYgbm90LiBUaGlzIGlzIGEgc3BlY2lhbC1jYXNlIGJlaGF2aW9yCi0JCSAqIG5lZWRl ZCBmb3IgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IHVwZGF0ZXMgaW4gdHJhbnNhY3Rpb24tc25h cHNob3QKLQkJICogbW9kZSB0cmFuc2FjdGlvbnMuCi0JCSAqLwotCQlyZXN1bHQgPSB0YWJs ZV90dXBsZV91cGRhdGUocmVzdWx0UmVsYXRpb25EZXNjLCB0dXBsZWlkLCBzbG90LAotCQkJ CQkJCQkJZXN0YXRlLT5lc19vdXRwdXRfY2lkLAotCQkJCQkJCQkJZXN0YXRlLT5lc19zbmFw c2hvdCwKLQkJCQkJCQkJCWVzdGF0ZS0+ZXNfY3Jvc3NjaGVja19zbmFwc2hvdCwKLQkJCQkJ CQkJCXRydWUgLyogd2FpdCBmb3IgY29tbWl0ICovICwKLQkJCQkJCQkJCSZ0bWZkLCAmbG9j a21vZGUsICZ1cGRhdGVfaW5kZXhlcyk7CisJCWlmICh1cGRhdGVDeHQuY3Jvc3NQYXJ0VXBk YXRlKQorCQkJcmV0dXJuIGNvbnRleHQtPmluc2VydFByb2plY3RlZFR1cGxlOwogCiAJCXN3 aXRjaCAocmVzdWx0KQogCQl7CkBAIC0xODE4LDcgKzE5ODksNyBAQCBscmVwbGFjZTo7CiAJ CQkJICogY2FuIHJlLWV4ZWN1dGUgdGhlIFVQREFURSAoYXNzdW1pbmcgaXQgY2FuIGZpZ3Vy ZSBvdXQgaG93KQogCQkJCSAqIGFuZCB0aGVuIHJldHVybiBOVUxMIHRvIGNhbmNlbCB0aGUg b3V0ZXIgdXBkYXRlLgogCQkJCSAqLwotCQkJCWlmICh0bWZkLmNtYXggIT0gZXN0YXRlLT5l c19vdXRwdXRfY2lkKQorCQkJCWlmIChjb250ZXh0LT50bWZkLmNtYXggIT0gZXN0YXRlLT5l c19vdXRwdXRfY2lkKQogCQkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJCShlcnJjb2RlKEVS UkNPREVfVFJJR0dFUkVEX0RBVEFfQ0hBTkdFX1ZJT0xBVElPTiksCiAJCQkJCQkJIGVycm1z ZygidHVwbGUgdG8gYmUgdXBkYXRlZCB3YXMgYWxyZWFkeSBtb2RpZmllZCBieSBhbiBvcGVy YXRpb24gdHJpZ2dlcmVkIGJ5IHRoZSBjdXJyZW50IGNvbW1hbmQiKSwKQEAgLTE4NDUsMjIg KzIwMTYsMjIgQEAgbHJlcGxhY2U6OwogCQkJCQkgKiBBbHJlYWR5IGtub3cgdGhhdCB3ZSdy ZSBnb2luZyB0byBuZWVkIHRvIGRvIEVQUSwgc28KIAkJCQkJICogZmV0Y2ggdHVwbGUgZGly ZWN0bHkgaW50byB0aGUgcmlnaHQgc2xvdC4KIAkJCQkJICovCi0JCQkJCWlucHV0c2xvdCA9 IEV2YWxQbGFuUXVhbFNsb3QoZXBxc3RhdGUsIHJlc3VsdFJlbGF0aW9uRGVzYywKKwkJCQkJ aW5wdXRzbG90ID0gRXZhbFBsYW5RdWFsU2xvdChjb250ZXh0LT5lcHFzdGF0ZSwgcmVzdWx0 UmVsYXRpb25EZXNjLAogCQkJCQkJCQkJCQkJIHJlc3VsdFJlbEluZm8tPnJpX1JhbmdlVGFi bGVJbmRleCk7CiAKIAkJCQkJcmVzdWx0ID0gdGFibGVfdHVwbGVfbG9jayhyZXN1bHRSZWxh dGlvbkRlc2MsIHR1cGxlaWQsCiAJCQkJCQkJCQkJCSAgZXN0YXRlLT5lc19zbmFwc2hvdCwK IAkJCQkJCQkJCQkJICBpbnB1dHNsb3QsIGVzdGF0ZS0+ZXNfb3V0cHV0X2NpZCwKLQkJCQkJ CQkJCQkJICBsb2NrbW9kZSwgTG9ja1dhaXRCbG9jaywKKwkJCQkJCQkJCQkJICBjb250ZXh0 LT5sb2NrbW9kZSwgTG9ja1dhaXRCbG9jaywKIAkJCQkJCQkJCQkJICBUVVBMRV9MT0NLX0ZM QUdfRklORF9MQVNUX1ZFUlNJT04sCi0JCQkJCQkJCQkJCSAgJnRtZmQpOworCQkJCQkJCQkJ CQkgICZjb250ZXh0LT50bWZkKTsKIAogCQkJCQlzd2l0Y2ggKHJlc3VsdCkKIAkJCQkJewog CQkJCQkJY2FzZSBUTV9PazoKLQkJCQkJCQlBc3NlcnQodG1mZC50cmF2ZXJzZWQpOworCQkJ CQkJCUFzc2VydChjb250ZXh0LT50bWZkLnRyYXZlcnNlZCk7CiAKLQkJCQkJCQllcHFzbG90 ID0gRXZhbFBsYW5RdWFsKGVwcXN0YXRlLAorCQkJCQkJCWVwcXNsb3QgPSBFdmFsUGxhblF1 YWwoY29udGV4dC0+ZXBxc3RhdGUsCiAJCQkJCQkJCQkJCQkgICByZXN1bHRSZWxhdGlvbkRl c2MsCiAJCQkJCQkJCQkJCQkgICByZXN1bHRSZWxJbmZvLT5yaV9SYW5nZVRhYmxlSW5kZXgs CiAJCQkJCQkJCQkJCQkgICBpbnB1dHNsb3QpOwpAQCAtMTg3MCw3ICsyMDQxLDggQEAgbHJl cGxhY2U6OwogCiAJCQkJCQkJLyogTWFrZSBzdXJlIHJpX29sZFR1cGxlU2xvdCBpcyBpbml0 aWFsaXplZC4gKi8KIAkJCQkJCQlpZiAodW5saWtlbHkoIXJlc3VsdFJlbEluZm8tPnJpX3By b2plY3ROZXdJbmZvVmFsaWQpKQotCQkJCQkJCQlFeGVjSW5pdFVwZGF0ZVByb2plY3Rpb24o bXRzdGF0ZSwgcmVzdWx0UmVsSW5mbyk7CisJCQkJCQkJCUV4ZWNJbml0VXBkYXRlUHJvamVj dGlvbihjb250ZXh0LT5tdHN0YXRlLAorCQkJCQkJCQkJCQkJCQkgcmVzdWx0UmVsSW5mbyk7 CiAKIAkJCQkJCQkvKiBGZXRjaCB0aGUgbW9zdCByZWNlbnQgdmVyc2lvbiBvZiBvbGQgdHVw bGUuICovCiAJCQkJCQkJb2xkU2xvdCA9IHJlc3VsdFJlbEluZm8tPnJpX29sZFR1cGxlU2xv dDsKQEAgLTE4ODEsNyArMjA1Myw3IEBAIGxyZXBsYWNlOjsKIAkJCQkJCQkJZWxvZyhFUlJP UiwgImZhaWxlZCB0byBmZXRjaCB0dXBsZSBiZWluZyB1cGRhdGVkIik7CiAJCQkJCQkJc2xv dCA9IEV4ZWNHZXRVcGRhdGVOZXdUdXBsZShyZXN1bHRSZWxJbmZvLAogCQkJCQkJCQkJCQkJ CQkgZXBxc2xvdCwgb2xkU2xvdCk7Ci0JCQkJCQkJZ290byBscmVwbGFjZTsKKwkJCQkJCQln b3RvIHJlZG9fYWN0OwogCiAJCQkJCQljYXNlIFRNX0RlbGV0ZWQ6CiAJCQkJCQkJLyogdHVw bGUgYWxyZWFkeSBkZWxldGVkOyBub3RoaW5nIHRvIGRvICovCkBAIC0xOTAwLDcgKzIwNzIs NyBAQCBscmVwbGFjZTo7CiAJCQkJCQkJICogU2VlIGFsc28gVE1fU2VsZk1vZGlmaWVkIHJl c3BvbnNlIHRvCiAJCQkJCQkJICogdGFibGVfdHVwbGVfdXBkYXRlKCkgYWJvdmUuCiAJCQkJ CQkJICovCi0JCQkJCQkJaWYgKHRtZmQuY21heCAhPSBlc3RhdGUtPmVzX291dHB1dF9jaWQp CisJCQkJCQkJaWYgKGNvbnRleHQtPnRtZmQuY21heCAhPSBlc3RhdGUtPmVzX291dHB1dF9j aWQpCiAJCQkJCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkJCQkJKGVycmNvZGUoRVJSQ09E RV9UUklHR0VSRURfREFUQV9DSEFOR0VfVklPTEFUSU9OKSwKIAkJCQkJCQkJCQkgZXJybXNn KCJ0dXBsZSB0byBiZSB1cGRhdGVkIHdhcyBhbHJlYWR5IG1vZGlmaWVkIGJ5IGFuIG9wZXJh dGlvbiB0cmlnZ2VyZWQgYnkgdGhlIGN1cnJlbnQgY29tbWFuZCIpLApAQCAtMTkzMiw3ICsy MTA0LDcgQEAgbHJlcGxhY2U6OwogCQl9CiAKIAkJLyogaW5zZXJ0IGluZGV4IGVudHJpZXMg Zm9yIHR1cGxlIGlmIG5lY2Vzc2FyeSAqLwotCQlpZiAocmVzdWx0UmVsSW5mby0+cmlfTnVt SW5kaWNlcyA+IDAgJiYgdXBkYXRlX2luZGV4ZXMpCisJCWlmIChyZXN1bHRSZWxJbmZvLT5y aV9OdW1JbmRpY2VzID4gMCAmJiB1cGRhdGVDeHQudXBkYXRlSW5kZXhlcykKIAkJCXJlY2hl Y2tJbmRleGVzID0gRXhlY0luc2VydEluZGV4VHVwbGVzKHJlc3VsdFJlbEluZm8sCiAJCQkJ CQkJCQkJCQkgICBzbG90LCBlc3RhdGUsIHRydWUsIGZhbHNlLAogCQkJCQkJCQkJCQkJICAg TlVMTCwgTklMKTsKQEAgLTE5NDEsMzAgKzIxMTMsMTQgQEAgbHJlcGxhY2U6OwogCWlmIChj YW5TZXRUYWcpCiAJCShlc3RhdGUtPmVzX3Byb2Nlc3NlZCkrKzsKIAotCS8qIEFGVEVSIFJP VyBVUERBVEUgVHJpZ2dlcnMgKi8KLQlFeGVjQVJVcGRhdGVUcmlnZ2Vycyhlc3RhdGUsIHJl c3VsdFJlbEluZm8sIHR1cGxlaWQsIG9sZHR1cGxlLCBzbG90LAotCQkJCQkJIHJlY2hlY2tJ bmRleGVzLAotCQkJCQkJIG10c3RhdGUtPm9wZXJhdGlvbiA9PSBDTURfSU5TRVJUID8KLQkJ CQkJCSBtdHN0YXRlLT5tdF9vY190cmFuc2l0aW9uX2NhcHR1cmUgOgotCQkJCQkJIG10c3Rh dGUtPm10X3RyYW5zaXRpb25fY2FwdHVyZSk7CisJRXhlY1VwZGF0ZUVwaWxvZ3VlKGNvbnRl eHQsIHJlc3VsdFJlbEluZm8sIHR1cGxlaWQsIG9sZHR1cGxlLCBzbG90LAorCQkJCQkgICBy ZWNoZWNrSW5kZXhlcyk7CiAKIAlsaXN0X2ZyZWUocmVjaGVja0luZGV4ZXMpOwogCi0JLyoK LQkgKiBDaGVjayBhbnkgV0lUSCBDSEVDSyBPUFRJT04gY29uc3RyYWludHMgZnJvbSBwYXJl bnQgdmlld3MuICBXZSBhcmUKLQkgKiByZXF1aXJlZCB0byBkbyB0aGlzIGFmdGVyIHRlc3Rp bmcgYWxsIGNvbnN0cmFpbnRzIGFuZCB1bmlxdWVuZXNzCi0JICogdmlvbGF0aW9ucyBwZXIg dGhlIFNRTCBzcGVjLCBzbyB3ZSBkbyBpdCBhZnRlciBhY3R1YWxseSB1cGRhdGluZyB0aGUK LQkgKiByZWNvcmQgaW4gdGhlIGhlYXAgYW5kIGFsbCBpbmRleGVzLgotCSAqCi0JICogRXhl Y1dpdGhDaGVja09wdGlvbnMoKSB3aWxsIHNraXAgYW55IFdDT3Mgd2hpY2ggYXJlIG5vdCBv ZiB0aGUga2luZCB3ZQotCSAqIGFyZSBsb29raW5nIGZvciBhdCB0aGlzIHBvaW50LgotCSAq LwotCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9XaXRoQ2hlY2tPcHRpb25zICE9IE5JTCkKLQkJ RXhlY1dpdGhDaGVja09wdGlvbnMoV0NPX1ZJRVdfQ0hFQ0ssIHJlc3VsdFJlbEluZm8sIHNs b3QsIGVzdGF0ZSk7Ci0KIAkvKiBQcm9jZXNzIFJFVFVSTklORyBpZiBwcmVzZW50ICovCiAJ aWYgKHJlc3VsdFJlbEluZm8tPnJpX3Byb2plY3RSZXR1cm5pbmcpCi0JCXJldHVybiBFeGVj UHJvY2Vzc1JldHVybmluZyhyZXN1bHRSZWxJbmZvLCBzbG90LCBwbGFuU2xvdCk7CisJCXJl dHVybiBFeGVjUHJvY2Vzc1JldHVybmluZyhyZXN1bHRSZWxJbmZvLCBzbG90LCBjb250ZXh0 LT5wbGFuU2xvdCk7CiAKIAlyZXR1cm4gTlVMTDsKIH0KQEAgLTE5ODEsMTUgKzIxMzcsMTQg QEAgbHJlcGxhY2U6OwogICogdGhlIGNhbGxlciBtdXN0IHJldHJ5IHRoZSBJTlNFUlQgZnJv bSBzY3JhdGNoLgogICovCiBzdGF0aWMgYm9vbAotRXhlY09uQ29uZmxpY3RVcGRhdGUoTW9k aWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKK0V4ZWNPbkNvbmZsaWN0VXBkYXRlKE1vZGlmeVRh YmxlQ29udGV4dCAqY29udGV4dCwKIAkJCQkJIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbElu Zm8sCiAJCQkJCSBJdGVtUG9pbnRlciBjb25mbGljdFRpZCwKLQkJCQkJIFR1cGxlVGFibGVT bG90ICpwbGFuU2xvdCwKIAkJCQkJIFR1cGxlVGFibGVTbG90ICpleGNsdWRlZFNsb3QsCi0J CQkJCSBFU3RhdGUgKmVzdGF0ZSwKIAkJCQkJIGJvb2wgY2FuU2V0VGFnLAogCQkJCQkgVHVw bGVUYWJsZVNsb3QgKipyZXR1cm5pbmcpCiB7CisJTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0 ZSA9IGNvbnRleHQtPm10c3RhdGU7CiAJRXhwckNvbnRleHQgKmVjb250ZXh0ID0gbXRzdGF0 ZS0+cHMucHNfRXhwckNvbnRleHQ7CiAJUmVsYXRpb24JcmVsYXRpb24gPSByZXN1bHRSZWxJ bmZvLT5yaV9SZWxhdGlvbkRlc2M7CiAJRXhwclN0YXRlICAqb25Db25mbGljdFNldFdoZXJl ID0gcmVzdWx0UmVsSW5mby0+cmlfb25Db25mbGljdC0+b2NfV2hlcmVDbGF1c2U7CkBAIC0y MDAyLDcgKzIxNTcsNyBAQCBFeGVjT25Db25mbGljdFVwZGF0ZShNb2RpZnlUYWJsZVN0YXRl ICptdHN0YXRlLAogCWJvb2wJCWlzbnVsbDsKIAogCS8qIERldGVybWluZSBsb2NrIG1vZGUg dG8gdXNlICovCi0JbG9ja21vZGUgPSBFeGVjVXBkYXRlTG9ja01vZGUoZXN0YXRlLCByZXN1 bHRSZWxJbmZvKTsKKwlsb2NrbW9kZSA9IEV4ZWNVcGRhdGVMb2NrTW9kZShjb250ZXh0LT5l c3RhdGUsIHJlc3VsdFJlbEluZm8pOwogCiAJLyoKIAkgKiBMb2NrIHR1cGxlIGZvciB1cGRh dGUuICBEb24ndCBmb2xsb3cgdXBkYXRlcyB3aGVuIHR1cGxlIGNhbm5vdCBiZQpAQCAtMjAx MSw4ICsyMTY2LDggQEAgRXhlY09uQ29uZmxpY3RVcGRhdGUoTW9kaWZ5VGFibGVTdGF0ZSAq bXRzdGF0ZSwKIAkgKiB0cnVlIGFueW1vcmUuCiAJICovCiAJdGVzdCA9IHRhYmxlX3R1cGxl X2xvY2socmVsYXRpb24sIGNvbmZsaWN0VGlkLAotCQkJCQkJCWVzdGF0ZS0+ZXNfc25hcHNo b3QsCi0JCQkJCQkJZXhpc3RpbmcsIGVzdGF0ZS0+ZXNfb3V0cHV0X2NpZCwKKwkJCQkJCQlj b250ZXh0LT5lc3RhdGUtPmVzX3NuYXBzaG90LAorCQkJCQkJCWV4aXN0aW5nLCBjb250ZXh0 LT5lc3RhdGUtPmVzX291dHB1dF9jaWQsCiAJCQkJCQkJbG9ja21vZGUsIExvY2tXYWl0Qmxv Y2ssIDAsCiAJCQkJCQkJJnRtZmQpOwogCXN3aXRjaCAodGVzdCkKQEAgLTIxMTksNyArMjI3 NCw3IEBAIEV4ZWNPbkNvbmZsaWN0VXBkYXRlKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUs CiAJICogc25hcHNob3QuICBUaGlzIGlzIGluIGxpbmUgd2l0aCB0aGUgd2F5IFVQREFURSBk ZWFscyB3aXRoIG5ld2VyIHR1cGxlCiAJICogdmVyc2lvbnMuCiAJICovCi0JRXhlY0NoZWNr VHVwbGVWaXNpYmxlKGVzdGF0ZSwgcmVsYXRpb24sIGV4aXN0aW5nKTsKKwlFeGVjQ2hlY2tU dXBsZVZpc2libGUoY29udGV4dC0+ZXN0YXRlLCByZWxhdGlvbiwgZXhpc3RpbmcpOwogCiAJ LyoKIAkgKiBNYWtlIHR1cGxlIGFuZCBhbnkgbmVlZGVkIGpvaW4gdmFyaWFibGVzIGF2YWls YWJsZSB0byBFeGVjUXVhbCBhbmQKQEAgLTIxNzQsMTAgKzIzMjksOSBAQCBFeGVjT25Db25m bGljdFVwZGF0ZShNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLAogCSAqLwogCiAJLyogRXhl Y3V0ZSBVUERBVEUgd2l0aCBwcm9qZWN0aW9uICovCi0JKnJldHVybmluZyA9IEV4ZWNVcGRh dGUobXRzdGF0ZSwgcmVzdWx0UmVsSW5mbywgY29uZmxpY3RUaWQsIE5VTEwsCisJKnJldHVy bmluZyA9IEV4ZWNVcGRhdGUoY29udGV4dCwgcmVzdWx0UmVsSW5mbywKKwkJCQkJCQljb25m bGljdFRpZCwgTlVMTCwKIAkJCQkJCQlyZXN1bHRSZWxJbmZvLT5yaV9vbkNvbmZsaWN0LT5v Y19Qcm9qU2xvdCwKLQkJCQkJCQlwbGFuU2xvdCwKLQkJCQkJCQkmbXRzdGF0ZS0+bXRfZXBx c3RhdGUsIG10c3RhdGUtPnBzLnN0YXRlLAogCQkJCQkJCWNhblNldFRhZyk7CiAKIAkvKgpA QCAtMjM0OSw2ICsyNTAzLDcgQEAgc3RhdGljIFR1cGxlVGFibGVTbG90ICoKIEV4ZWNNb2Rp ZnlUYWJsZShQbGFuU3RhdGUgKnBzdGF0ZSkKIHsKIAlNb2RpZnlUYWJsZVN0YXRlICpub2Rl ID0gY2FzdE5vZGUoTW9kaWZ5VGFibGVTdGF0ZSwgcHN0YXRlKTsKKwlNb2RpZnlUYWJsZUNv bnRleHQgY29udGV4dDsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IG5vZGUtPnBzLnN0YXRlOwog CUNtZFR5cGUJCW9wZXJhdGlvbiA9IG5vZGUtPm9wZXJhdGlvbjsKIAlSZXN1bHRSZWxJbmZv ICpyZXN1bHRSZWxJbmZvOwpAQCAtMjM1NiwxMCArMjUxMSwxMCBAQCBFeGVjTW9kaWZ5VGFi bGUoUGxhblN0YXRlICpwc3RhdGUpCiAJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CiAJVHVwbGVU YWJsZVNsb3QgKnBsYW5TbG90OwogCVR1cGxlVGFibGVTbG90ICpvbGRTbG90OwotCUl0ZW1Q b2ludGVyIHR1cGxlaWQ7CiAJSXRlbVBvaW50ZXJEYXRhIHR1cGxlX2N0aWQ7CiAJSGVhcFR1 cGxlRGF0YSBvbGR0dXBkYXRhOwogCUhlYXBUdXBsZQlvbGR0dXBsZTsKKwlJdGVtUG9pbnRl ciB0dXBsZWlkOwogCVBhcnRpdGlvblR1cGxlUm91dGluZyAqcHJvdXRlID0gbm9kZS0+bXRf cGFydGl0aW9uX3R1cGxlX3JvdXRpbmc7CiAJTGlzdAkgICAqcmVsaW5mb3MgPSBOSUw7CiAJ TGlzdENlbGwgICAqbGM7CkBAIC0yNDAwLDYgKzI1NTUsMTEgQEAgRXhlY01vZGlmeVRhYmxl KFBsYW5TdGF0ZSAqcHN0YXRlKQogCXJlc3VsdFJlbEluZm8gPSBub2RlLT5yZXN1bHRSZWxJ bmZvICsgbm9kZS0+bXRfbGFzdFJlc3VsdEluZGV4OwogCXN1YnBsYW5zdGF0ZSA9IG91dGVy UGxhblN0YXRlKG5vZGUpOwogCisJLyogU2V0IGdsb2JhbCBjb250ZXh0ICovCisJY29udGV4 dC5tdHN0YXRlID0gbm9kZTsKKwljb250ZXh0LmVwcXN0YXRlID0gJm5vZGUtPm10X2VwcXN0 YXRlOworCWNvbnRleHQuZXN0YXRlID0gZXN0YXRlOworCiAJLyoKIAkgKiBGZXRjaCByb3dz IGZyb20gc3VicGxhbiwgYW5kIGV4ZWN1dGUgdGhlIHJlcXVpcmVkIHRhYmxlIG1vZGlmaWNh dGlvbgogCSAqIGZvciBlYWNoIHJvdy4KQEAgLTI1NTEsNiArMjcxMSwxMCBAQCBFeGVjTW9k aWZ5VGFibGUoUGxhblN0YXRlICpwc3RhdGUpCiAJCQl9CiAJCX0KIAorCQkvKiBjb21wbGV0 ZSBjb250ZXh0IHNldHVwICovCisJCWNvbnRleHQucGxhblNsb3QgPSBwbGFuU2xvdDsKKwkJ Y29udGV4dC5sb2NrbW9kZSA9IDA7CisKIAkJc3dpdGNoIChvcGVyYXRpb24pCiAJCXsKIAkJ CWNhc2UgQ01EX0lOU0VSVDoKQEAgLTI1NTgsOCArMjcyMiw4IEBAIEV4ZWNNb2RpZnlUYWJs ZShQbGFuU3RhdGUgKnBzdGF0ZSkKIAkJCQlpZiAodW5saWtlbHkoIXJlc3VsdFJlbEluZm8t PnJpX3Byb2plY3ROZXdJbmZvVmFsaWQpKQogCQkJCQlFeGVjSW5pdEluc2VydFByb2plY3Rp b24obm9kZSwgcmVzdWx0UmVsSW5mbyk7CiAJCQkJc2xvdCA9IEV4ZWNHZXRJbnNlcnROZXdU dXBsZShyZXN1bHRSZWxJbmZvLCBwbGFuU2xvdCk7Ci0JCQkJc2xvdCA9IEV4ZWNJbnNlcnQo bm9kZSwgcmVzdWx0UmVsSW5mbywgc2xvdCwgcGxhblNsb3QsCi0JCQkJCQkJCSAgZXN0YXRl LCBub2RlLT5jYW5TZXRUYWcpOworCQkJCXNsb3QgPSBFeGVjSW5zZXJ0KCZjb250ZXh0LCBy ZXN1bHRSZWxJbmZvLCBzbG90LAorCQkJCQkJCQkgIG5vZGUtPmNhblNldFRhZyk7CiAJCQkJ YnJlYWs7CiAJCQljYXNlIENNRF9VUERBVEU6CiAJCQkJLyogSW5pdGlhbGl6ZSBwcm9qZWN0 aW9uIGluZm8gaWYgZmlyc3QgdGltZSBmb3IgdGhpcyB0YWJsZSAqLwpAQCAtMjU4MSw3ICsy NzQ1LDYgQEAgRXhlY01vZGlmeVRhYmxlKFBsYW5TdGF0ZSAqcHN0YXRlKQogCQkJCQkvKiBG ZXRjaCB0aGUgbW9zdCByZWNlbnQgdmVyc2lvbiBvZiBvbGQgdHVwbGUuICovCiAJCQkJCVJl bGF0aW9uCXJlbGF0aW9uID0gcmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjOwogCi0J CQkJCUFzc2VydCh0dXBsZWlkICE9IE5VTEwpOwogCQkJCQlpZiAoIXRhYmxlX3R1cGxlX2Zl dGNoX3Jvd192ZXJzaW9uKHJlbGF0aW9uLCB0dXBsZWlkLAogCQkJCQkJCQkJCQkJCSAgIFNu YXBzaG90QW55LAogCQkJCQkJCQkJCQkJCSAgIG9sZFNsb3QpKQpAQCAtMjU5MSwxOCArMjc1 NCwxNSBAQCBFeGVjTW9kaWZ5VGFibGUoUGxhblN0YXRlICpwc3RhdGUpCiAJCQkJCQkJCQkJ CSBvbGRTbG90KTsKIAogCQkJCS8qIE5vdyBhcHBseSB0aGUgdXBkYXRlLiAqLwotCQkJCXNs b3QgPSBFeGVjVXBkYXRlKG5vZGUsIHJlc3VsdFJlbEluZm8sIHR1cGxlaWQsIG9sZHR1cGxl LCBzbG90LAotCQkJCQkJCQkgIHBsYW5TbG90LCAmbm9kZS0+bXRfZXBxc3RhdGUsIGVzdGF0 ZSwKLQkJCQkJCQkJICBub2RlLT5jYW5TZXRUYWcpOworCQkJCXNsb3QgPSBFeGVjVXBkYXRl KCZjb250ZXh0LCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLCBvbGR0dXBsZSwKKwkJCQkJCQkJ ICBzbG90LCBub2RlLT5jYW5TZXRUYWcpOwogCQkJCWJyZWFrOworCiAJCQljYXNlIENNRF9E RUxFVEU6Ci0JCQkJc2xvdCA9IEV4ZWNEZWxldGUobm9kZSwgcmVzdWx0UmVsSW5mbywgdHVw bGVpZCwgb2xkdHVwbGUsCi0JCQkJCQkJCSAgcGxhblNsb3QsICZub2RlLT5tdF9lcHFzdGF0 ZSwgZXN0YXRlLAotCQkJCQkJCQkgIHRydWUsIC8qIHByb2Nlc3NSZXR1cm5pbmcgKi8KLQkJ CQkJCQkJICBub2RlLT5jYW5TZXRUYWcsCi0JCQkJCQkJCSAgZmFsc2UsCS8qIGNoYW5naW5n UGFydCAqLwotCQkJCQkJCQkgIE5VTEwsIE5VTEwpOworCQkJCXNsb3QgPSBFeGVjRGVsZXRl KCZjb250ZXh0LCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLCBvbGR0dXBsZSwKKwkJCQkJCQkJ ICB0cnVlLCBmYWxzZSwgbm9kZS0+Y2FuU2V0VGFnLCBOVUxMLCBOVUxMKTsKIAkJCQlicmVh azsKKwogCQkJZGVmYXVsdDoKIAkJCQllbG9nKEVSUk9SLCAidW5rbm93biBvcGVyYXRpb24i KTsKIAkJCQlicmVhazsKQEAgLTI4MDAsOCArMjk2MCw4IEBAIEV4ZWNJbml0TW9kaWZ5VGFi bGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQl9 CiAKIAkJLyogSW5pdGlhbGl6ZSB0aGUgdXNlc0Zkd0RpcmVjdE1vZGlmeSBmbGFnICovCi0J CXJlc3VsdFJlbEluZm8tPnJpX3VzZXNGZHdEaXJlY3RNb2RpZnkgPSBibXNfaXNfbWVtYmVy KGksCi0JCQkJCQkJCQkJCQkJCQkgIG5vZGUtPmZkd0RpcmVjdE1vZGlmeVBsYW5zKTsKKwkJ cmVzdWx0UmVsSW5mby0+cmlfdXNlc0Zkd0RpcmVjdE1vZGlmeSA9CisJCQlibXNfaXNfbWVt YmVyKGksIG5vZGUtPmZkd0RpcmVjdE1vZGlmeVBsYW5zKTsKIAogCQkvKgogCQkgKiBWZXJp ZnkgcmVzdWx0IHJlbGF0aW9uIGlzIGEgdmFsaWQgdGFyZ2V0IGZvciB0aGUgY3VycmVudCBv cGVyYXRpb24KLS0gCjIuMzAuMgoK --527760f7189c4519b98de45ca6e90b9b Content-Disposition: attachment;filename="v13-0003-MERGE-SQL-Command-following-SQL-2016.patch" Content-Type: text/x-patch; name="v13-0003-MERGE-SQL-Command-following-SQL-2016.patch" Content-Transfer-Encoding: BASE64 RnJvbSA3ZDk0MTc5ZDhiMGI1YWNjOTIyMDI0OTM0NDY3MDAzZDE3OTRhMjg3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbHZhcm8gSGVycmVyYSA8YWx2aGVycmVAYWx2aC5u by1pcC5vcmc+CkRhdGU6IE1vbiwgNyBNYXIgMjAyMiAxMTowNjozNCAtMDMwMApTdWJqZWN0 OiBbUEFUQ0ggdjEzIDMvM10gTUVSR0UgU1FMIENvbW1hbmQgZm9sbG93aW5nIFNRTDoyMDE2 Ck1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1V VEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpNRVJHRSBwZXJmb3JtcyBh Y3Rpb25zIHRoYXQgbW9kaWZ5IHJvd3MgaW4gdGhlIHRhcmdldCB0YWJsZSB1c2luZyBhCnNv dXJjZSB0YWJsZSBvciBxdWVyeS4gTUVSR0UgcHJvdmlkZXMgYSBzaW5nbGUgU1FMIHN0YXRl bWVudCB0aGF0IGNhbgpjb25kaXRpb25hbGx5IElOU0VSVC9VUERBVEUvREVMRVRFIHJvd3Mg LS0gYSB0YXNrIHRoYXQgd291bGQgb3RoZXJ3aXNlCnJlcXVpcmUgbXVsdGlwbGUgUEwgc3Rh dGVtZW50cy4gIEZvciBleGFtcGxlLAoKTUVSR0UgSU5UTyB0YXJnZXQgQVMgdApVU0lORyBz b3VyY2UgQVMgcwpPTiB0LnRpZCA9IHMuc2lkCldIRU4gTUFUQ0hFRCBBTkQgdC5iYWxhbmNl ID4gcy5kZWx0YSBUSEVOCiAgVVBEQVRFIFNFVCBiYWxhbmNlID0gdC5iYWxhbmNlIC0gcy5k ZWx0YQpXSEVOIE1BVENIRUQgVEhFTgogIERFTEVURQpXSEVOIE5PVCBNQVRDSEVEIEFORCBz LmRlbHRhID4gMCBUSEVOCiAgSU5TRVJUIFZBTFVFUyAocy5zaWQsIHMuZGVsdGEpCldIRU4g Tk9UIE1BVENIRUQgVEhFTgogIERPIE5PVEhJTkc7CgpNRVJHRSB3b3JrcyB3aXRoIHJlZ3Vs YXIgYW5kIHBhcnRpdGlvbmVkIHRhYmxlcywgaW5jbHVkaW5nIGNvbHVtbiBhbmQKcm93IHNl Y3VyaXR5IGVuZm9yY2VtZW50LCBhcyB3ZWxsIGFzIHN1cHBvcnQgZm9yIHJvdywgc3RhdGVt ZW50IGFuZAp0cmFuc2l0aW9uIHRyaWdnZXJzLgoKTUVSR0UgaXMgb3B0aW1pemVkIGZvciBP TFRQIGFuZCBpcyBwYXJhbWV0ZXJpemFibGUsIHRob3VnaCBhbHNvIHVzZWZ1bApmb3IgbGFy Z2Ugc2NhbGUgRVRML0VMVC4gTUVSR0UgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgaW4g cHJlZmVyZW5jZQp0byBleGlzdGluZyBzaW5nbGUgU1FMIGNvbW1hbmRzIGZvciBJTlNFUlQs IFVQREFURSBvciBERUxFVEUgc2luY2UgdGhlcmUKaXMgc29tZSBvdmVyaGVhZC4gIE1FUkdF IGNhbiBiZSB1c2VkIHN0YXRpY2FsbHkgZnJvbSBQTC9wZ1NRTC4KCk1FUkdFIGRvZXMgbm90 IHlldCBzdXBwb3J0IGluaGVyaXRhbmNlLCB3cml0ZSBydWxlcywgUkVUVVJOSU5HIGNsYXVz ZXMsCnVwZGF0YWJsZSB2aWV3cyBvciBmb3JlaWduIHRhYmxlcy4gIE1FUkdFIGZvbGxvd3Mg U1FMIFN0YW5kYXJkIHBlciB0aGUKbW9zdCByZWNlbnQgU1FMOjIwMTYuCgpJbmNsdWRlcyBm dWxsIHRlc3RzIGFuZCBkb2N1bWVudGF0aW9uLCBpbmNsdWRpbmcgZnVsbCBpc29sYXRpb24g dGVzdHMgdG8KZGVtb25zdHJhdGUgdGhlIGNvbmN1cnJlbnQgYmVoYXZpb3IuCgpBdXRob3I6 IFNpbW9uIFJpZ2dzIDxzaW1vbi5yaWdnc0BlbnRlcnByaXNlZGIuY29tPgpBdXRob3I6IFBh dmFuIERlb2xhc2VlIDxwYXZhbi5kZW9sYXNlZUBnbWFpbC5jb20+CkF1dGhvcjogQW1pdCBM YW5nb3RlIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KQXV0aG9yOiDDgWx2YXJvIEhlcnJl cmEgPGFsdmhlcnJlQGFsdmgubm8taXAub3JnPgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0 Z3IuZXMvbS9DQU5QOCtqS2l0QlNyQjdvVGdUOUNZMmkxT2JmT3QzNnowWE1yYVFjK1hyejhR QjBuWEFAbWFpbC5nbWFpbC5jb20KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9D QUgyLVd6a0pkQnV4ajlQTz0yUWFPOS0zaDN4R2JRUFozNGtKSD1IdWtSZWt3TS1HWmdAbWFp bC5nbWFpbC5jb20KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS8yMDIwMTIzMTEz NDczNi5HQTI1MzkyQGFsdmhlcnJlLnBnc3FsCi0tLQogY29udHJpYi90ZXN0X2RlY29kaW5n L2V4cGVjdGVkL2RkbC5vdXQgICAgICAgIHwgICA0NiArCiBjb250cmliL3Rlc3RfZGVjb2Rp bmcvc3FsL2RkbC5zcWwgICAgICAgICAgICAgfCAgIDE2ICsKIGRvYy9zcmMvc2dtbC9saWJw cS5zZ21sICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDggKy0KIGRvYy9zcmMvc2dtbC9t dmNjLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzQgKy0KIGRvYy9zcmMvc2dt bC9wbHBnc3FsLnNnbWwgICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKy0KIGRvYy9zcmMv c2dtbC9yZWYvYWxsZmlsZXMuc2dtbCAgICAgICAgICAgICAgICB8ICAgIDEgKwogZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfcG9saWN5LnNnbWwgICAgICAgICAgIHwgICAyMyArLQogZG9j L3NyYy9zZ21sL3JlZi9pbnNlcnQuc2dtbCAgICAgICAgICAgICAgICAgIHwgICAxMSArLQog ZG9jL3NyYy9zZ21sL3JlZi9tZXJnZS5zZ21sICAgICAgICAgICAgICAgICAgIHwgIDYzMCAr KysrKysKIGRvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbCAgICAgICAgICAgICAgICAgICB8 ICAgIDEgKwogZG9jL3NyYy9zZ21sL3RyaWdnZXIuc2dtbCAgICAgICAgICAgICAgICAgICAg IHwgICAyMiArCiBzcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQgICAgICAg ICAgfCAgICA2ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAg ICAgICAgfCAgIDM1ICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyAgICAgICAg ICAgICAgICB8ICAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jICAgICAg ICAgICAgICAgIHwgIDE2NiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FICAgICAg ICAgICAgICAgICAgIHwgICAxMyArCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5j ICAgICAgICAgICAgICAgfCAgIDE2ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uYyAgICAgICAgICB8ICAxMTMgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNS ZXBsaWNhdGlvbi5jICAgICAgICB8ICAgIDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNb2RpZnlUYWJsZS5jICAgICAgICB8ICA5MDcgKysrKysrKystCiBzcmMvYmFja2VuZC9l eGVjdXRvci9zcGkuYyAgICAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9iYWNrZW5k L25vZGVzL2NvcHlmdW5jcy5jICAgICAgICAgICAgICAgICB8ICAgNTcgKwogc3JjL2JhY2tl bmQvbm9kZXMvZXF1YWxmdW5jcy5jICAgICAgICAgICAgICAgIHwgICA1MSArCiBzcmMvYmFj a2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyAgICAgICAgICAgICAgICAgfCAgIDYxICstCiBzcmMv YmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jICAgICAgICAgICAgICAgICAgfCAgIDM3ICsKIHNy Yy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAgICAgICAgICAgICB8ICAgNDQgKwog c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jICAgICAgIHwgICAxNSAr LQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgICAgICAgIHwgICA2 NCArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jICAgICAgICAgIHwg ICA2NCArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcGpvaW50cmVlLmMgICAg IHwgICA5MSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwdGxpc3QuYyAgICAg ICAgfCAgIDM5ICsKIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYyAg ICAgICB8ICAgMTkgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMg ICAgICAgICB8ICAgMTEgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQu YyAgICAgICAgICB8ICAgIDQgKwogc3JjL2JhY2tlbmQvcGFyc2VyL01ha2VmaWxlICAgICAg ICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jICAg ICAgICAgICAgICAgICAgfCAgIDIwICstCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAg ICAgICAgICAgICAgICAgICAgfCAgMTY1ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf YWdnLmMgICAgICAgICAgICAgICAgfCAgIDEwICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9jbGF1c2UuYyAgICAgICAgICAgICB8ICAgMjEgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9jb2xsYXRlLmMgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX2V4cHIuYyAgICAgICAgICAgICAgIHwgICAgNCArCiBzcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfZnVuYy5jICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9tZXJnZS5jICAgICAgICAgICAgICB8ICA0MTUgKysrKwogc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMgICAgICAgICAgIHwgICAyMyArLQogc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jICAgICAgICAgICAgIHwgICAgMyArLQogc3Jj L2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jICAgICAgICAgIHwgICA0MSArLQog c3JjL2JhY2tlbmQvcmV3cml0ZS9yb3dzZWN1cml0eS5jICAgICAgICAgICAgIHwgIDEwNiAr LQogc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyAgICAgICAgICAgICAgICAgICAgIHwgICAg MyArCiBzcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyAgICAgICAgICAgICAgICAgICAgfCAg IDE2ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8 ICAgIDkgKy0KIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyAgICAgICAgICAgICAgICAg ICB8ICAgODAgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaCAgICAgICAgICAg ICAgICB8ICAgIDcgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaCAgICAg ICAgICAgICB8ICAgIDcgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJs ZS5oICAgICAgICB8ICAgIDQgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3Ivc3BpLmggICAgICAg ICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAg ICAgICAgICAgICAgICAgfCAgIDM3ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oICAg ICAgICAgICAgICAgICAgICAgfCAgICA3ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmggICAgICAgICAgICAgICAgfCAgIDU3ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRo bm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgICA2ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9w bGFubm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgICA3ICstCiBzcmMvaW5jbHVkZS9vcHRp bWl6ZXIvcGF0aG5vZGUuaCAgICAgICAgICAgICAgfCAgICAyICstCiBzcmMvaW5jbHVkZS9v cHRpbWl6ZXIvcHJlcC5oICAgICAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRl L3BhcnNlci9hbmFseXplLmggICAgICAgICAgICAgICAgICB8ICAgIDUgKwogc3JjL2luY2x1 ZGUvcGFyc2VyL2t3bGlzdC5oICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBzcmMvaW5j bHVkZS9wYXJzZXIvcGFyc2VfY2xhdXNlLmggICAgICAgICAgICAgfCAgICA0ICstCiBzcmMv aW5jbHVkZS9wYXJzZXIvcGFyc2VfbWVyZ2UuaCAgICAgICAgICAgICAgfCAgIDIxICsKIHNy Yy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggICAgICAgICAgICAgICB8ICAgIDUgKy0K IHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5oICAgICAgICAgICB8ICAgIDMg Ky0KIHNyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5oICAgICAgICAgICAgICAgICB8ICAg IDEgKwogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZXhlYy5jICAgICAgICAgICAgICAgIHwg ICAgOSArLQogc3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYyAgICAgICAgICAgICAgICAg IHwgICAgNyArLQogc3JjL3BsL3BscGdzcWwvc3JjL3BsX2dyYW0ueSAgICAgICAgICAgICAg ICAgIHwgICAgOCArCiBzcmMvcGwvcGxwZ3NxbC9zcmMvcGxfdW5yZXNlcnZlZF9rd2xpc3Qu aCAgICAgfCAgICAxICsKIHNyYy9wbC9wbHBnc3FsL3NyYy9wbHBnc3FsLmggICAgICAgICAg ICAgICAgICB8ICAgIDIgKy0KIHNyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9tZXJnZS1k ZWxldGUub3V0ICB8ICAxMTcgKysKIC4uLi9leHBlY3RlZC9tZXJnZS1pbnNlcnQtdXBkYXRl Lm91dCAgICAgICAgICB8ICAgOTQgKwogLi4uL2V4cGVjdGVkL21lcmdlLW1hdGNoLXJlY2hl Y2sub3V0ICAgICAgICAgIHwgIDExNiArKwogc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVk L21lcmdlLXVwZGF0ZS5vdXQgIHwgIDI4NSArKysKIHNyYy90ZXN0L2lzb2xhdGlvbi9pc29s YXRpb25fc2NoZWR1bGUgICAgICAgICB8ICAgIDQgKwogc3JjL3Rlc3QvaXNvbGF0aW9uL3Nw ZWNzL21lcmdlLWRlbGV0ZS5zcGVjICAgIHwgICA1MCArCiAuLi4vaXNvbGF0aW9uL3NwZWNz L21lcmdlLWluc2VydC11cGRhdGUuc3BlYyAgfCAgIDUxICsKIC4uLi9pc29sYXRpb24vc3Bl Y3MvbWVyZ2UtbWF0Y2gtcmVjaGVjay5zcGVjICB8ICAgNzcgKwogc3JjL3Rlc3QvaXNvbGF0 aW9uL3NwZWNzL21lcmdlLXVwZGF0ZS5zcGVjICAgIHwgIDE1NiArKwogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9pZGVudGl0eS5vdXQgICAgICAgIHwgICA1NCArCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL21lcmdlLm91dCAgICAgICAgICAgfCAxNzExICsrKysrKysrKysr KysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ByaXZpbGVnZXMub3V0ICAgICAg fCAgIDk4ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcm93c2VjdXJpdHkub3V0ICAg ICB8ICAxODIgKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0ICAgICAg ICAgICB8ICAgMzIgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90cmlnZ2Vycy5vdXQg ICAgICAgIHwgICA0OCArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGgub3V0ICAg ICAgICAgICAgfCAgMTMzICsrCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl ICAgICAgICAgICAgfCAgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9pZGVudGl0eS5z cWwgICAgICAgICAgICAgfCAgIDQ2ICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL21lcmdlLnNx bCAgICAgICAgICAgICAgICB8IDExODkgKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9wcml2aWxlZ2VzLnNxbCAgICAgICAgICAgfCAgMTA4ICsrCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9yb3dzZWN1cml0eS5zcWwgICAgICAgICAgfCAgMTU2ICsrCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9ydWxlcy5zcWwgICAgICAgICAgICAgICAgfCAgIDMzICsKIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3RyaWdnZXJzLnNxbCAgICAgICAgICAgICB8ICAgNDcgKwogc3JjL3Rl c3QvcmVncmVzcy9zcWwvd2l0aC5zcWwgICAgICAgICAgICAgICAgIHwgICA1NiArCiBzcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgICA0ICsKIDk5 IGZpbGVzIGNoYW5nZWQsIDg0MDEgaW5zZXJ0aW9ucygrKSwgMTkxIGRlbGV0aW9ucygtKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRvYy9zcmMvc2dtbC9yZWYvbWVyZ2Uuc2dtbAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9tZXJnZS5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX21lcmdlLmgKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvbWVyZ2UtZGVsZXRlLm91 dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9tZXJn ZS1pbnNlcnQtdXBkYXRlLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xh dGlvbi9leHBlY3RlZC9tZXJnZS1tYXRjaC1yZWNoZWNrLm91dAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9tZXJnZS11cGRhdGUub3V0CiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL21lcmdlLWRlbGV0ZS5z cGVjCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL21lcmdl LWluc2VydC11cGRhdGUuc3BlYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xh dGlvbi9zcGVjcy9tZXJnZS1tYXRjaC1yZWNoZWNrLnNwZWMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvbWVyZ2UtdXBkYXRlLnNwZWMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21lcmdlLm91dAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL21lcmdlLnNxbAoKZGlmZiAtLWdp dCBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9kZGwub3V0IGIvY29udHJpYi90 ZXN0X2RlY29kaW5nL2V4cGVjdGVkL2RkbC5vdXQKaW5kZXggODI4OTgyMDFjYS4uN2FhMzdi OWNmMiAxMDA2NDQKLS0tIGEvY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL2RkbC5v dXQKKysrIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL2RkbC5vdXQKQEAgLTE5 Miw2ICsxOTIsNTIgQEAgU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2No YW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsICdpbmMKICBDT01NSVQKICgz MyByb3dzKQogCistLSBNRVJHRSBzdXBwb3J0CitCRUdJTjsKK01FUkdFIElOVE8gcmVwbGlj YXRpb25fZXhhbXBsZSB0CisJVVNJTkcgKFNFTEVDVCBpIGFzIGlkLCBpIGFzIGRhdGEsIGkg YXMgbnVtIEZST00gZ2VuZXJhdGVfc2VyaWVzKC0yMCwgNSkgaSkgcworCU9OIHQuaWQgPSBz LmlkCisJV0hFTiBNQVRDSEVEIEFORCB0LmlkIDwgMCBUSEVOCisJCVVQREFURSBTRVQgc29t ZW51bSA9IHNvbWVudW0gKyAxCisJV0hFTiBNQVRDSEVEIEFORCB0LmlkID49IDAgVEhFTgor CQlERUxFVEUKKwlXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwkJSU5TRVJUIFZBTFVFUyAocy4q KTsKK0NPTU1JVDsKKy8qIGRpc3BsYXkgcmVzdWx0cyAqLworU0VMRUNUIGRhdGEgRlJPTSBw Z19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5V TEwsICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEJFR0lOCisgdGFibGUgcHVibGljLnJlcGxpY2F0 aW9uX2V4YW1wbGU6IElOU0VSVDogaWRbaW50ZWdlcl06LTIwIHNvbWVkYXRhW2ludGVnZXJd Oi0yMCBzb21lbnVtW2ludGVnZXJdOi0yMCB6YXBob2QxW2ludGVnZXJdOm51bGwgemFwaG9k MltpbnRlZ2VyXTpudWxsCisgdGFibGUgcHVibGljLnJlcGxpY2F0aW9uX2V4YW1wbGU6IElO U0VSVDogaWRbaW50ZWdlcl06LTE5IHNvbWVkYXRhW2ludGVnZXJdOi0xOSBzb21lbnVtW2lu dGVnZXJdOi0xOSB6YXBob2QxW2ludGVnZXJdOm51bGwgemFwaG9kMltpbnRlZ2VyXTpudWxs CisgdGFibGUgcHVibGljLnJlcGxpY2F0aW9uX2V4YW1wbGU6IElOU0VSVDogaWRbaW50ZWdl cl06LTE4IHNvbWVkYXRhW2ludGVnZXJdOi0xOCBzb21lbnVtW2ludGVnZXJdOi0xOCB6YXBo b2QxW2ludGVnZXJdOm51bGwgemFwaG9kMltpbnRlZ2VyXTpudWxsCisgdGFibGUgcHVibGlj LnJlcGxpY2F0aW9uX2V4YW1wbGU6IElOU0VSVDogaWRbaW50ZWdlcl06LTE3IHNvbWVkYXRh W2ludGVnZXJdOi0xNyBzb21lbnVtW2ludGVnZXJdOi0xNyB6YXBob2QxW2ludGVnZXJdOm51 bGwgemFwaG9kMltpbnRlZ2VyXTpudWxsCisgdGFibGUgcHVibGljLnJlcGxpY2F0aW9uX2V4 YW1wbGU6IElOU0VSVDogaWRbaW50ZWdlcl06LTE2IHNvbWVkYXRhW2ludGVnZXJdOi0xNiBz b21lbnVtW2ludGVnZXJdOi0xNiB6YXBob2QxW2ludGVnZXJdOm51bGwgemFwaG9kMltpbnRl Z2VyXTpudWxsCisgdGFibGUgcHVibGljLnJlcGxpY2F0aW9uX2V4YW1wbGU6IFVQREFURTog aWRbaW50ZWdlcl06LTE1IHNvbWVkYXRhW2ludGVnZXJdOi0xNSBzb21lbnVtW2ludGVnZXJd Oi0xNCB6YXBob2QxW2ludGVnZXJdOm51bGwgemFwaG9kMltpbnRlZ2VyXTpudWxsCisgdGFi bGUgcHVibGljLnJlcGxpY2F0aW9uX2V4YW1wbGU6IFVQREFURTogaWRbaW50ZWdlcl06LTE0 IHNvbWVkYXRhW2ludGVnZXJdOi0xNCBzb21lbnVtW2ludGVnZXJdOi0xMyB6YXBob2QxW2lu dGVnZXJdOm51bGwgemFwaG9kMltpbnRlZ2VyXTpudWxsCisgdGFibGUgcHVibGljLnJlcGxp Y2F0aW9uX2V4YW1wbGU6IFVQREFURTogaWRbaW50ZWdlcl06LTEzIHNvbWVkYXRhW2ludGVn ZXJdOi0xMyBzb21lbnVtW2ludGVnZXJdOi0xMiB6YXBob2QxW2ludGVnZXJdOm51bGwgemFw aG9kMltpbnRlZ2VyXTpudWxsCisgdGFibGUgcHVibGljLnJlcGxpY2F0aW9uX2V4YW1wbGU6 IFVQREFURTogaWRbaW50ZWdlcl06LTEyIHNvbWVkYXRhW2ludGVnZXJdOi0xMiBzb21lbnVt W2ludGVnZXJdOi0xMSB6YXBob2QxW2ludGVnZXJdOm51bGwgemFwaG9kMltpbnRlZ2VyXTpu dWxsCisgdGFibGUgcHVibGljLnJlcGxpY2F0aW9uX2V4YW1wbGU6IFVQREFURTogaWRbaW50 ZWdlcl06LTExIHNvbWVkYXRhW2ludGVnZXJdOi0xMSBzb21lbnVtW2ludGVnZXJdOi0xMCB6 YXBob2QxW2ludGVnZXJdOm51bGwgemFwaG9kMltpbnRlZ2VyXTpudWxsCisgdGFibGUgcHVi bGljLnJlcGxpY2F0aW9uX2V4YW1wbGU6IFVQREFURTogaWRbaW50ZWdlcl06LTEwIHNvbWVk YXRhW2ludGVnZXJdOi0xMCBzb21lbnVtW2ludGVnZXJdOi05IHphcGhvZDFbaW50ZWdlcl06 bnVsbCB6YXBob2QyW2ludGVnZXJdOm51bGwKKyB0YWJsZSBwdWJsaWMucmVwbGljYXRpb25f ZXhhbXBsZTogVVBEQVRFOiBpZFtpbnRlZ2VyXTotOSBzb21lZGF0YVtpbnRlZ2VyXTotOSBz b21lbnVtW2ludGVnZXJdOi04IHphcGhvZDFbaW50ZWdlcl06bnVsbCB6YXBob2QyW2ludGVn ZXJdOm51bGwKKyB0YWJsZSBwdWJsaWMucmVwbGljYXRpb25fZXhhbXBsZTogVVBEQVRFOiBp ZFtpbnRlZ2VyXTotOCBzb21lZGF0YVtpbnRlZ2VyXTotOCBzb21lbnVtW2ludGVnZXJdOi03 IHphcGhvZDFbaW50ZWdlcl06bnVsbCB6YXBob2QyW2ludGVnZXJdOm51bGwKKyB0YWJsZSBw dWJsaWMucmVwbGljYXRpb25fZXhhbXBsZTogVVBEQVRFOiBpZFtpbnRlZ2VyXTotNyBzb21l ZGF0YVtpbnRlZ2VyXTotNyBzb21lbnVtW2ludGVnZXJdOi02IHphcGhvZDFbaW50ZWdlcl06 bnVsbCB6YXBob2QyW2ludGVnZXJdOm51bGwKKyB0YWJsZSBwdWJsaWMucmVwbGljYXRpb25f ZXhhbXBsZTogVVBEQVRFOiBpZFtpbnRlZ2VyXTotNiBzb21lZGF0YVtpbnRlZ2VyXTotNiBz b21lbnVtW2ludGVnZXJdOi01IHphcGhvZDFbaW50ZWdlcl06bnVsbCB6YXBob2QyW2ludGVn ZXJdOm51bGwKKyB0YWJsZSBwdWJsaWMucmVwbGljYXRpb25fZXhhbXBsZTogVVBEQVRFOiBp ZFtpbnRlZ2VyXTotNSBzb21lZGF0YVtpbnRlZ2VyXTotNSBzb21lbnVtW2ludGVnZXJdOi00 IHphcGhvZDFbaW50ZWdlcl06bnVsbCB6YXBob2QyW2ludGVnZXJdOm51bGwKKyB0YWJsZSBw dWJsaWMucmVwbGljYXRpb25fZXhhbXBsZTogVVBEQVRFOiBpZFtpbnRlZ2VyXTotNCBzb21l ZGF0YVtpbnRlZ2VyXTotNCBzb21lbnVtW2ludGVnZXJdOi0zIHphcGhvZDFbaW50ZWdlcl06 bnVsbCB6YXBob2QyW2ludGVnZXJdOm51bGwKKyB0YWJsZSBwdWJsaWMucmVwbGljYXRpb25f ZXhhbXBsZTogVVBEQVRFOiBpZFtpbnRlZ2VyXTotMyBzb21lZGF0YVtpbnRlZ2VyXTotMyBz b21lbnVtW2ludGVnZXJdOi0yIHphcGhvZDFbaW50ZWdlcl06bnVsbCB6YXBob2QyW2ludGVn ZXJdOm51bGwKKyB0YWJsZSBwdWJsaWMucmVwbGljYXRpb25fZXhhbXBsZTogVVBEQVRFOiBp ZFtpbnRlZ2VyXTotMiBzb21lZGF0YVtpbnRlZ2VyXTotMiBzb21lbnVtW2ludGVnZXJdOi0x IHphcGhvZDFbaW50ZWdlcl06bnVsbCB6YXBob2QyW2ludGVnZXJdOm51bGwKKyB0YWJsZSBw dWJsaWMucmVwbGljYXRpb25fZXhhbXBsZTogVVBEQVRFOiBpZFtpbnRlZ2VyXTotMSBzb21l ZGF0YVtpbnRlZ2VyXTotMSBzb21lbnVtW2ludGVnZXJdOjAgemFwaG9kMVtpbnRlZ2VyXTpu dWxsIHphcGhvZDJbaW50ZWdlcl06bnVsbAorIHRhYmxlIHB1YmxpYy5yZXBsaWNhdGlvbl9l eGFtcGxlOiBERUxFVEU6IGlkW2ludGVnZXJdOjAKKyB0YWJsZSBwdWJsaWMucmVwbGljYXRp b25fZXhhbXBsZTogREVMRVRFOiBpZFtpbnRlZ2VyXToxCisgdGFibGUgcHVibGljLnJlcGxp Y2F0aW9uX2V4YW1wbGU6IERFTEVURTogaWRbaW50ZWdlcl06MgorIHRhYmxlIHB1YmxpYy5y ZXBsaWNhdGlvbl9leGFtcGxlOiBERUxFVEU6IGlkW2ludGVnZXJdOjMKKyB0YWJsZSBwdWJs aWMucmVwbGljYXRpb25fZXhhbXBsZTogREVMRVRFOiBpZFtpbnRlZ2VyXTo0CisgdGFibGUg cHVibGljLnJlcGxpY2F0aW9uX2V4YW1wbGU6IERFTEVURTogaWRbaW50ZWdlcl06NQorIENP TU1JVAorKDI4IHJvd3MpCisKIENSRUFURSBUQUJMRSB0cl91bmlxdWUoaWQyIHNlcmlhbCB1 bmlxdWUgTk9UIE5VTEwsIGRhdGEgaW50KTsKIElOU0VSVCBJTlRPIHRyX3VuaXF1ZShkYXRh KSBWQUxVRVMoMTApOwogQUxURVIgVEFCTEUgdHJfdW5pcXVlIFJFTkFNRSBUTyB0cl9wa2V5 OwpkaWZmIC0tZ2l0IGEvY29udHJpYi90ZXN0X2RlY29kaW5nL3NxbC9kZGwuc3FsIGIvY29u dHJpYi90ZXN0X2RlY29kaW5nL3NxbC9kZGwuc3FsCmluZGV4IGY2Nzc0NjBkMzQuLjhjZWI1 ZTk0MDUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwvZGRsLnNxbAor KysgYi9jb250cmliL3Rlc3RfZGVjb2Rpbmcvc3FsL2RkbC5zcWwKQEAgLTkzLDYgKzkzLDIy IEBAIENPTU1JVDsKIC8qIGRpc3BsYXkgcmVzdWx0cyAqLwogU0VMRUNUIGRhdGEgRlJPTSBw Z19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5V TEwsICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnKTsKIAor LS0gTUVSR0Ugc3VwcG9ydAorQkVHSU47CitNRVJHRSBJTlRPIHJlcGxpY2F0aW9uX2V4YW1w bGUgdAorCVVTSU5HIChTRUxFQ1QgaSBhcyBpZCwgaSBhcyBkYXRhLCBpIGFzIG51bSBGUk9N IGdlbmVyYXRlX3NlcmllcygtMjAsIDUpIGkpIHMKKwlPTiB0LmlkID0gcy5pZAorCVdIRU4g TUFUQ0hFRCBBTkQgdC5pZCA8IDAgVEhFTgorCQlVUERBVEUgU0VUIHNvbWVudW0gPSBzb21l bnVtICsgMQorCVdIRU4gTUFUQ0hFRCBBTkQgdC5pZCA+PSAwIFRIRU4KKwkJREVMRVRFCisJ V0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJCUlOU0VSVCBWQUxVRVMgKHMuKik7CitDT01NSVQ7 CisKKy8qIGRpc3BsYXkgcmVzdWx0cyAqLworU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2Fs X3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNs dWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnKTsKKwogQ1JFQVRFIFRB QkxFIHRyX3VuaXF1ZShpZDIgc2VyaWFsIHVuaXF1ZSBOT1QgTlVMTCwgZGF0YSBpbnQpOwog SU5TRVJUIElOVE8gdHJfdW5pcXVlKGRhdGEpIFZBTFVFUygxMCk7CiBBTFRFUiBUQUJMRSB0 cl91bmlxdWUgUkVOQU1FIFRPIHRyX3BrZXk7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv bGlicHEuc2dtbCBiL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sCmluZGV4IDM5OThiMTc4MWIu LjVmY2ZiMjlhNTUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sCkBAIC00MTI1LDkgKzQxMjUsMTEgQEAgY2hhciAq UFFjbWRUdXBsZXMoUEdyZXN1bHQgKnJlcyk7CiAgICAgICAgPHN0cnVjdG5hbWU+UEdyZXN1 bHQ8L3N0cnVjdG5hbWU+LiBUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIHVzZWQgZm9sbG93 aW5nCiAgICAgICAgdGhlIGV4ZWN1dGlvbiBvZiBhIDxjb21tYW5kPlNFTEVDVDwvY29tbWFu ZD4sIDxjb21tYW5kPkNSRUFURSBUQUJMRSBBUzwvY29tbWFuZD4sCiAgICAgICAgPGNvbW1h bmQ+SU5TRVJUPC9jb21tYW5kPiwgPGNvbW1hbmQ+VVBEQVRFPC9jb21tYW5kPiwgPGNvbW1h bmQ+REVMRVRFPC9jb21tYW5kPiwKLSAgICAgICA8Y29tbWFuZD5NT1ZFPC9jb21tYW5kPiwg PGNvbW1hbmQ+RkVUQ0g8L2NvbW1hbmQ+LCBvciA8Y29tbWFuZD5DT1BZPC9jb21tYW5kPiBz dGF0ZW1lbnQsCi0gICAgICAgb3IgYW4gPGNvbW1hbmQ+RVhFQ1VURTwvY29tbWFuZD4gb2Yg YSBwcmVwYXJlZCBxdWVyeSB0aGF0IGNvbnRhaW5zIGFuCi0gICAgICAgPGNvbW1hbmQ+SU5T RVJUPC9jb21tYW5kPiwgPGNvbW1hbmQ+VVBEQVRFPC9jb21tYW5kPiwgb3IgPGNvbW1hbmQ+ REVMRVRFPC9jb21tYW5kPiBzdGF0ZW1lbnQuCisgICAgICAgPGNvbW1hbmQ+TUVSR0U8L2Nv bW1hbmQ+LCA8Y29tbWFuZD5NT1ZFPC9jb21tYW5kPiwgPGNvbW1hbmQ+RkVUQ0g8L2NvbW1h bmQ+LAorICAgICAgIG9yIDxjb21tYW5kPkNPUFk8L2NvbW1hbmQ+IHN0YXRlbWVudCwgb3Ig YW4gPGNvbW1hbmQ+RVhFQ1VURTwvY29tbWFuZD4gb2YgYQorICAgICAgIHByZXBhcmVkIHF1 ZXJ5IHRoYXQgY29udGFpbnMgYW4gPGNvbW1hbmQ+SU5TRVJUPC9jb21tYW5kPiwKKyAgICAg ICA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+LCA8Y29tbWFuZD5ERUxFVEU8L2NvbW1hbmQ+ CisgICAgICAgb3IgPGNvbW1hbmQ+TUVSR0U8L2NvbW1hbmQ+IHN0YXRlbWVudC4KICAgICAg ICBJZiB0aGUgY29tbWFuZCB0aGF0IGdlbmVyYXRlZCB0aGUgPHN0cnVjdG5hbWU+UEdyZXN1 bHQ8L3N0cnVjdG5hbWU+IHdhcyBhbnl0aGluZwogICAgICAgIGVsc2UsIDx4cmVmIGxpbmtl bmQ9ImxpYnBxLVBRY21kVHVwbGVzIi8+IHJldHVybnMgYW4gZW1wdHkgc3RyaW5nLiBUaGUg Y2FsbGVyCiAgICAgICAgc2hvdWxkIG5vdCBmcmVlIHRoZSByZXR1cm4gdmFsdWUgZGlyZWN0 bHkuIEl0IHdpbGwgYmUgZnJlZWQgd2hlbgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL212 Y2Muc2dtbCBiL2RvYy9zcmMvc2dtbC9tdmNjLnNnbWwKaW5kZXggNmM5NGY2YTk0Mi4uNzJl YzUwNjc1ZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL212Y2Muc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvbXZjYy5zZ21sCkBAIC00MjIsNiArNDIyLDM3IEBAIENPTU1JVDsKICAgICA8 bGl0ZXJhbD4xMTwvbGl0ZXJhbD4sIHdoaWNoIG5vIGxvbmdlciBtYXRjaGVzIHRoZSBjcml0 ZXJpYS4KICAgIDwvcGFyYT4KIAorICAgPHBhcmE+CisgICAgPGNvbW1hbmQ+TUVSR0U8L2Nv bW1hbmQ+IGFsbG93cyB0aGUgdXNlciB0byBzcGVjaWZ5IHZhcmlvdXMKKyAgICBjb21iaW5h dGlvbnMgb2YgPGNvbW1hbmQ+SU5TRVJUPC9jb21tYW5kPiwgPGNvbW1hbmQ+VVBEQVRFPC9j b21tYW5kPgorICAgIG9yIDxjb21tYW5kPkRFTEVURTwvY29tbWFuZD4gc3ViY29tbWFuZHMu IEEgPGNvbW1hbmQ+TUVSR0U8L2NvbW1hbmQ+CisgICAgY29tbWFuZCB3aXRoIGJvdGggPGNv bW1hbmQ+SU5TRVJUPC9jb21tYW5kPiBhbmQgPGNvbW1hbmQ+VVBEQVRFPC9jb21tYW5kPgor ICAgIHN1YmNvbW1hbmRzIGxvb2tzIHNpbWlsYXIgdG8gPGNvbW1hbmQ+SU5TRVJUPC9jb21t YW5kPiB3aXRoIGFuCisgICAgPGxpdGVyYWw+T04gQ09ORkxJQ1QgRE8gVVBEQVRFPC9saXRl cmFsPiBjbGF1c2UgYnV0IGRvZXMgbm90CisgICAgZ3VhcmFudGVlIHRoYXQgZWl0aGVyIDxj b21tYW5kPklOU0VSVDwvY29tbWFuZD4gb3IKKyAgICA8Y29tbWFuZD5VUERBVEU8L2NvbW1h bmQ+IHdpbGwgb2NjdXIuCisgICAgSWYgTUVSR0UgYXR0ZW1wdHMgYW4gPGNvbW1hbmQ+VVBE QVRFPC9jb21tYW5kPiBvcgorICAgIDxjb21tYW5kPkRFTEVURTwvY29tbWFuZD4gYW5kIHRo ZSByb3cgaXMgY29uY3VycmVudGx5IHVwZGF0ZWQgYnV0CisgICAgdGhlIGpvaW4gY29uZGl0 aW9uIHN0aWxsIHBhc3NlcyBmb3IgdGhlIGN1cnJlbnQgdGFyZ2V0IGFuZCB0aGUKKyAgICBj dXJyZW50IHNvdXJjZSB0dXBsZSwgdGhlbiA8Y29tbWFuZD5NRVJHRTwvY29tbWFuZD4gd2ls bCBiZWhhdmUKKyAgICB0aGUgc2FtZSBhcyB0aGUgPGNvbW1hbmQ+VVBEQVRFPC9jb21tYW5k PiBvcgorICAgIDxjb21tYW5kPkRFTEVURTwvY29tbWFuZD4gY29tbWFuZHMgYW5kIHBlcmZv cm0gaXRzIGFjdGlvbiBvbiB0aGUKKyAgICB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIHJvdy4g IEhvd2V2ZXIsIGJlY2F1c2UgPGNvbW1hbmQ+TUVSR0U8L2NvbW1hbmQ+CisgICAgY2FuIHNw ZWNpZnkgc2V2ZXJhbCBhY3Rpb25zIGFuZCB0aGV5IGNhbiBiZSBjb25kaXRpb25hbCwgdGhl CisgICAgY29uZGl0aW9ucyBmb3IgZWFjaCBhY3Rpb24gYXJlIHJlLWV2YWx1YXRlZCBvbiB0 aGUgdXBkYXRlZCB2ZXJzaW9uIG9mCisgICAgdGhlIHJvdywgc3RhcnRpbmcgZnJvbSB0aGUg Zmlyc3QgYWN0aW9uLCBldmVuIGlmIHRoZSBhY3Rpb24gdGhhdCBoYWQKKyAgICBvcmlnaW5h bGx5IG1hdGNoZWQgYXBwZWFycyBsYXRlciBpbiB0aGUgbGlzdCBvZiBhY3Rpb25zLgorICAg IE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUgcm93IGlzIGNvbmN1cnJlbnRseSB1cGRhdGVk IG9yIGRlbGV0ZWQgc28KKyAgICB0aGF0IHRoZSBqb2luIGNvbmRpdGlvbiBmYWlscywgdGhl biA8Y29tbWFuZD5NRVJHRTwvY29tbWFuZD4gd2lsbAorICAgIGV2YWx1YXRlIHRoZSBjb25k aXRpb24ncyA8bGl0ZXJhbD5OT1QgTUFUQ0hFRDwvbGl0ZXJhbD4gYWN0aW9ucyBuZXh0LAor ICAgIGFuZCBleGVjdXRlIHRoZSBmaXJzdCBvbmUgdGhhdCBzdWNjZWVkcy4KKyAgICBJZiA8 Y29tbWFuZD5NRVJHRTwvY29tbWFuZD4gYXR0ZW1wdHMgYW4gPGNvbW1hbmQ+SU5TRVJUPC9j b21tYW5kPgorICAgIGFuZCBhIHVuaXF1ZSBpbmRleCBpcyBwcmVzZW50IGFuZCBhIGR1cGxp Y2F0ZSByb3cgaXMgY29uY3VycmVudGx5CisgICAgaW5zZXJ0ZWQsIHRoZW4gYSB1bmlxdWVu ZXNzIHZpb2xhdGlvbiBpcyByYWlzZWQuCisgICAgPGNvbW1hbmQ+TUVSR0U8L2NvbW1hbmQ+ IGRvZXMgbm90IGF0dGVtcHQgdG8gYXZvaWQgdGhlCisgICAgPGxpdGVyYWw+RVJST1I8L2xp dGVyYWw+IGJ5IGV4ZWN1dGluZyBhbiA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+LgorICAg PC9wYXJhPgorCiAgICA8cGFyYT4KICAgICBCZWNhdXNlIFJlYWQgQ29tbWl0dGVkIG1vZGUg c3RhcnRzIGVhY2ggY29tbWFuZCB3aXRoIGEgbmV3IHNuYXBzaG90CiAgICAgdGhhdCBpbmNs dWRlcyBhbGwgdHJhbnNhY3Rpb25zIGNvbW1pdHRlZCB1cCB0byB0aGF0IGluc3RhbnQsCkBA IC05MjQsNyArOTU1LDggQEAgRVJST1I6ICBjb3VsZCBub3Qgc2VyaWFsaXplIGFjY2VzcyBk dWUgdG8gcmVhZC93cml0ZSBkZXBlbmRlbmNpZXMgYW1vbmcgdHJhbnNhY3QKIAogICAgICAg ICA8cGFyYT4KICAgICAgICAgIFRoZSBjb21tYW5kcyA8Y29tbWFuZD5VUERBVEU8L2NvbW1h bmQ+LAotICAgICAgICAgPGNvbW1hbmQ+REVMRVRFPC9jb21tYW5kPiwgYW5kIDxjb21tYW5k PklOU0VSVDwvY29tbWFuZD4KKyAgICAgICAgIDxjb21tYW5kPkRFTEVURTwvY29tbWFuZD4s IDxjb21tYW5kPklOU0VSVDwvY29tbWFuZD4gYW5kCisgICAgICAgICA8Y29tbWFuZD5NRVJH RTwvY29tbWFuZD4KICAgICAgICAgIGFjcXVpcmUgdGhpcyBsb2NrIG1vZGUgb24gdGhlIHRh cmdldCB0YWJsZSAoaW4gYWRkaXRpb24gdG8KICAgICAgICAgIDxsaXRlcmFsPkFDQ0VTUyBT SEFSRTwvbGl0ZXJhbD4gbG9ja3Mgb24gYW55IG90aGVyIHJlZmVyZW5jZWQKICAgICAgICAg IHRhYmxlcykuICBJbiBnZW5lcmFsLCB0aGlzIGxvY2sgbW9kZSB3aWxsIGJlIGFjcXVpcmVk IGJ5IGFueQpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3BscGdzcWwuc2dtbCBiL2RvYy9z cmMvc2dtbC9wbHBnc3FsLnNnbWwKaW5kZXggZTVjMTM1NmQ4Yy4uN2ViYzY1OTNmMSAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3BscGdzcWwuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv cGxwZ3NxbC5zZ21sCkBAIC0xMzg4LDcgKzEzODgsNyBAQCBFWEVDVVRFIGZvcm1hdCgnU0VM RUNUIGNvdW50KCopIEZST00gJUkgJwogICAgICBBbm90aGVyIHJlc3RyaWN0aW9uIG9uIHBh cmFtZXRlciBzeW1ib2xzIGlzIHRoYXQgdGhleSBvbmx5IHdvcmsgaW4KICAgICAgb3B0aW1p emFibGUgU1FMIGNvbW1hbmRzCiAgICAgICg8Y29tbWFuZD5TRUxFQ1Q8L2NvbW1hbmQ+LCA8 Y29tbWFuZD5JTlNFUlQ8L2NvbW1hbmQ+LCA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+LAot ICAgICA8Y29tbWFuZD5ERUxFVEU8L2NvbW1hbmQ+LCBhbmQgY2VydGFpbiBjb21tYW5kcyBj b250YWluaW5nIG9uZSBvZiB0aGVzZSkuCisgICAgIDxjb21tYW5kPkRFTEVURTwvY29tbWFu ZD4sIDxjb21tYW5kPk1FUkdFPC9jb21tYW5kPiwgYW5kIGNlcnRhaW4gY29tbWFuZHMgY29u dGFpbmluZyBvbmUgb2YgdGhlc2UpLgogICAgICBJbiBvdGhlciBzdGF0ZW1lbnQKICAgICAg dHlwZXMgKGdlbmVyaWNhbGx5IGNhbGxlZCB1dGlsaXR5IHN0YXRlbWVudHMpLCB5b3UgbXVz dCBpbnNlcnQKICAgICAgdmFsdWVzIHRleHR1YWxseSBldmVuIGlmIHRoZXkgYXJlIGp1c3Qg ZGF0YSB2YWx1ZXMuCkBAIC0xNjY2LDcgKzE2NjYsOCBAQCBHRVQgRElBR05PU1RJQ1MgaW50 ZWdlcl92YXIgPSBST1dfQ09VTlQ7CiAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAg ICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgPGNvbW1hbmQ+ VVBEQVRFPC9jb21tYW5kPiwgPGNvbW1hbmQ+SU5TRVJUPC9jb21tYW5kPiwgYW5kIDxjb21t YW5kPkRFTEVURTwvY29tbWFuZD4KKyAgICAgICAgICAgIDxjb21tYW5kPlVQREFURTwvY29t bWFuZD4sIDxjb21tYW5kPklOU0VSVDwvY29tbWFuZD4sIDxjb21tYW5kPkRFTEVURTwvY29t bWFuZD4sCisgICAgICAgICAgICBhbmQgPGNvbW1hbmQ+TUVSR0U8L2NvbW1hbmQ+CiAgICAg ICAgICAgICBzdGF0ZW1lbnRzIHNldCA8bGl0ZXJhbD5GT1VORDwvbGl0ZXJhbD4gdHJ1ZSBp ZiBhdCBsZWFzdCBvbmUKICAgICAgICAgICAgIHJvdyBpcyBhZmZlY3RlZCwgZmFsc2UgaWYg bm8gcm93IGlzIGFmZmVjdGVkLgogICAgICAgICAgICA8L3BhcmE+CmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsbGZp bGVzLnNnbWwKaW5kZXggZDY3MjcwY2NjMy4uNzIzOWI0MDI4MSAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWxs ZmlsZXMuc2dtbApAQCAtMTU5LDYgKzE1OSw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxl IHNnbWwgc291cmNlIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5LgogPCFFTlRJVFkgbG9hZCAg ICAgICAgICAgICAgIFNZU1RFTSAibG9hZC5zZ21sIj4KIDwhRU5USVRZIGxvY2sgICAgICAg ICAgICAgICBTWVNURU0gImxvY2suc2dtbCI+CiA8IUVOVElUWSBtb3ZlICAgICAgICAgICAg ICAgU1lTVEVNICJtb3ZlLnNnbWwiPgorPCFFTlRJVFkgbWVyZ2UgICAgICAgICAgICAgIFNZ U1RFTSAibWVyZ2Uuc2dtbCI+CiA8IUVOVElUWSBub3RpZnkgICAgICAgICAgICAgU1lTVEVN ICJub3RpZnkuc2dtbCI+CiA8IUVOVElUWSBwcmVwYXJlICAgICAgICAgICAgU1lTVEVNICJw cmVwYXJlLnNnbWwiPgogPCFFTlRJVFkgcHJlcGFyZVRyYW5zYWN0aW9uIFNZU1RFTSAicHJl cGFyZV90cmFuc2FjdGlvbi5zZ21sIj4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX3BvbGljeS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcG9saWN5LnNn bWwKaW5kZXggOWY1MzIwNjhlNi4uZjQ1ODgyODE0ZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfcG9saWN5LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfcG9saWN5LnNnbWwKQEAgLTU1LDcgKzU1LDggQEAgQ1JFQVRFIFBPTElDWSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IE9OIDxyZXBsYWNl YWJsZQogICA8L3BhcmE+CiAKICAgPHBhcmE+Ci0gICBGb3IgPGNvbW1hbmQ+SU5TRVJUPC9j b21tYW5kPiBhbmQgPGNvbW1hbmQ+VVBEQVRFPC9jb21tYW5kPiBzdGF0ZW1lbnRzLAorICAg Rm9yIDxjb21tYW5kPklOU0VSVDwvY29tbWFuZD4sIDxjb21tYW5kPlVQREFURTwvY29tbWFu ZD4sIGFuZAorICAgPGNvbW1hbmQ+TUVSR0U8L2NvbW1hbmQ+IHN0YXRlbWVudHMsCiAgICA8 bGl0ZXJhbD5XSVRIIENIRUNLPC9saXRlcmFsPiBleHByZXNzaW9ucyBhcmUgZW5mb3JjZWQg YWZ0ZXIKICAgIDxsaXRlcmFsPkJFRk9SRTwvbGl0ZXJhbD4gdHJpZ2dlcnMgYXJlIGZpcmVk LCBhbmQgYmVmb3JlIGFueSBhY3R1YWwgZGF0YQogICAgbW9kaWZpY2F0aW9ucyBhcmUgbWFk ZS4gIFRodXMgYSA8bGl0ZXJhbD5CRUZPUkUgUk9XPC9saXRlcmFsPiB0cmlnZ2VyIG1heQpA QCAtMjgxLDcgKzI4Miw5IEBAIENSRUFURSBQT0xJQ1kgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBPTiA8cmVwbGFjZWFibGUKICAgICAgIDxs aXN0aXRlbT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFVzaW5nIDxsaXRlcmFsPklOU0VS VDwvbGl0ZXJhbD4gZm9yIGEgcG9saWN5IG1lYW5zIHRoYXQgaXQgd2lsbCBhcHBseQotICAg ICAgICAgdG8gPGxpdGVyYWw+SU5TRVJUPC9saXRlcmFsPiBjb21tYW5kcy4gIFJvd3MgYmVp bmcgaW5zZXJ0ZWQgdGhhdCBkbworICAgICAgICAgdG8gPGxpdGVyYWw+SU5TRVJUPC9saXRl cmFsPiBjb21tYW5kcyBhbmQgPGxpdGVyYWw+TUVSR0U8L2xpdGVyYWw+CisgICAgICAgICBj b21tYW5kcyB0aGF0IGNvbnRhaW4gPGxpdGVyYWw+SU5TRVJUPC9saXRlcmFsPiBhY3Rpb25z LgorICAgICAgICAgUm93cyBiZWluZyBpbnNlcnRlZCB0aGF0IGRvCiAgICAgICAgICBub3Qg cGFzcyB0aGlzIHBvbGljeSB3aWxsIHJlc3VsdCBpbiBhIHBvbGljeSB2aW9sYXRpb24gZXJy b3IsIGFuZCB0aGUKICAgICAgICAgIGVudGlyZSA8bGl0ZXJhbD5JTlNFUlQ8L2xpdGVyYWw+ IGNvbW1hbmQgd2lsbCBiZSBhYm9ydGVkLgogICAgICAgICAgQW4gPGxpdGVyYWw+SU5TRVJU PC9saXRlcmFsPiBwb2xpY3kgY2Fubm90IGhhdmUKQEAgLTMwNSw3ICszMDgsOSBAQCBDUkVB VEUgUE9MSUNZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNl YWJsZT4gT04gPHJlcGxhY2VhYmxlCiAgICAgICAgICB0byA8bGl0ZXJhbD5VUERBVEU8L2xp dGVyYWw+LCA8bGl0ZXJhbD5TRUxFQ1QgRk9SIFVQREFURTwvbGl0ZXJhbD4KICAgICAgICAg IGFuZCA8bGl0ZXJhbD5TRUxFQ1QgRk9SIFNIQVJFPC9saXRlcmFsPiBjb21tYW5kcywgYXMg d2VsbCBhcwogICAgICAgICAgYXV4aWxpYXJ5IDxsaXRlcmFsPk9OIENPTkZMSUNUIERPIFVQ REFURTwvbGl0ZXJhbD4gY2xhdXNlcyBvZgotICAgICAgICAgPGxpdGVyYWw+SU5TRVJUPC9s aXRlcmFsPiBjb21tYW5kcy4gIFNpbmNlIDxsaXRlcmFsPlVQREFURTwvbGl0ZXJhbD4KKyAg ICAgICAgIDxsaXRlcmFsPklOU0VSVDwvbGl0ZXJhbD4gY29tbWFuZHMuCisgICAgICAgICA8 bGl0ZXJhbD5NRVJHRTwvbGl0ZXJhbD4gY29tbWFuZHMgY29udGFpbmluZyA8bGl0ZXJhbD5V UERBVEU8L2xpdGVyYWw+CisgICAgICAgICBhY3Rpb25zIGFyZSBhZmZlY3RlZCBhcyB3ZWxs LiAgU2luY2UgPGxpdGVyYWw+VVBEQVRFPC9saXRlcmFsPgogICAgICAgICAgaW52b2x2ZXMg cHVsbGluZyBhbiBleGlzdGluZyByZWNvcmQgYW5kIHJlcGxhY2luZyBpdCB3aXRoIGEgbmV3 CiAgICAgICAgICBtb2RpZmllZCByZWNvcmQsIDxsaXRlcmFsPlVQREFURTwvbGl0ZXJhbD4K ICAgICAgICAgIHBvbGljaWVzIGFjY2VwdCBib3RoIGEgPGxpdGVyYWw+VVNJTkc8L2xpdGVy YWw+IGV4cHJlc3Npb24gYW5kCkBAIC00MzUsNyArNDQwLDcgQEAgQ1JFQVRFIFBPTElDWSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IE9OIDxy ZXBsYWNlYWJsZQogICAgICAgIDxlbnRyeT4mbWRhc2g7PC9lbnRyeT4KICAgICAgIDwvcm93 PgogICAgICAgPHJvdz4KLSAgICAgICA8ZW50cnk+PGNvbW1hbmQ+SU5TRVJUPC9jb21tYW5k PjwvZW50cnk+CisgICAgICAgPGVudHJ5Pjxjb21tYW5kPklOU0VSVDwvY29tbWFuZD4gLyA8 Y29tbWFuZD5NRVJHRSAuLi4gVEhFTiBJTlNFUlQ8L2NvbW1hbmQ+PC9lbnRyeT4KICAgICAg ICA8ZW50cnk+Jm1kYXNoOzwvZW50cnk+CiAgICAgICAgPGVudHJ5Pk5ldyByb3c8L2VudHJ5 PgogICAgICAgIDxlbnRyeT4mbWRhc2g7PC9lbnRyeT4KQEAgLTQ1OSw3ICs0NjQsNyBAQCBD UkVBVEUgUE9MSUNZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBs YWNlYWJsZT4gT04gPHJlcGxhY2VhYmxlCiAgICAgICAgPGVudHJ5PiZtZGFzaDs8L2VudHJ5 PgogICAgICAgPC9yb3c+CiAgICAgICA8cm93PgotICAgICAgIDxlbnRyeT48Y29tbWFuZD5V UERBVEU8L2NvbW1hbmQ+PC9lbnRyeT4KKyAgICAgICA8ZW50cnk+PGNvbW1hbmQ+VVBEQVRF PC9jb21tYW5kPiAvIDxjb21tYW5kPk1FUkdFIC4uLiBUSEVOIFVQREFURTwvY29tbWFuZD48 L2VudHJ5PgogICAgICAgIDxlbnRyeT4KICAgICAgICAgRXhpc3RpbmcgJmFtcDsgbmV3IHJv d3MgPGZvb3Rub3RlcmVmIGxpbmtlbmQ9InJscy1zZWxlY3QtcHJpdiIvPgogICAgICAgIDwv ZW50cnk+CkBAIC02MTEsNiArNjE2LDE0IEBAIEFORAogICAgb3duZXIncyByaWdodHMgYW5k IGFueSBwb2xpY2llcyB3aGljaCBhcHBseSB0byB0aGUgdmlldyBvd25lci4KICAgPC9wYXJh PgogCisgIDxwYXJhPgorICAgTm8gc2VwYXJhdGUgcG9saWN5IGV4aXN0cyBmb3IgPGNvbW1h bmQ+TUVSR0U8L2NvbW1hbmQ+LiBJbnN0ZWFkLCB0aGUgcG9saWNpZXMKKyAgIGRlZmluZWQg Zm9yIDxjb21tYW5kPlNFTEVDVDwvY29tbWFuZD4sIDxjb21tYW5kPklOU0VSVDwvY29tbWFu ZD4sCisgICA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+IGFuZCA8Y29tbWFuZD5ERUxFVEU8 L2NvbW1hbmQ+IGFyZSBhcHBsaWVkCisgICB3aGlsZSBleGVjdXRpbmcgPGNvbW1hbmQ+TUVS R0U8L2NvbW1hbmQ+LCBkZXBlbmRpbmcgb24gdGhlIGFjdGlvbnMgdGhhdCBhcmUKKyAgIHBl cmZvcm1lZC4KKyAgPC9wYXJhPgorCiAgIDxwYXJhPgogICAgQWRkaXRpb25hbCBkaXNjdXNz aW9uIGFuZCBwcmFjdGljYWwgZXhhbXBsZXMgY2FuIGJlIGZvdW5kCiAgICBpbiA8eHJlZiBs aW5rZW5kPSJkZGwtcm93c2VjdXJpdHkiLz4uCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmL2luc2VydC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9pbnNlcnQuc2dtbAppbmRleCAy OTczYjcyYjgxLi5hZDYxZDc1N2FmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2lu c2VydC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvaW5zZXJ0LnNnbWwKQEAgLTU4OSw2 ICs1ODksMTMgQEAgSU5TRVJUIDxyZXBsYWNlYWJsZT5vaWQ8L3JlcGxhY2VhYmxlPiA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y291bnQ8L3JlcGwKICAgIGlzIGEgcGFydGl0 aW9uLCBhbiBlcnJvciB3aWxsIG9jY3VyIGlmIG9uZSBvZiB0aGUgaW5wdXQgcm93cyB2aW9s YXRlcwogICAgdGhlIHBhcnRpdGlvbiBjb25zdHJhaW50LgogICA8L3BhcmE+CisKKyAgPHBh cmE+CisgICBZb3UgbWF5IGFsc28gd2lzaCB0byBjb25zaWRlciB1c2luZyA8Y29tbWFuZD5N RVJHRTwvY29tbWFuZD4sIHNpbmNlIHRoYXQKKyAgIGFsbG93cyBtaXhpbmcgPGNvbW1hbmQ+ SU5TRVJUPC9jb21tYW5kPiwgPGNvbW1hbmQ+VVBEQVRFPC9jb21tYW5kPiBhbmQKKyAgIDxj b21tYW5kPkRFTEVURTwvY29tbWFuZD4gd2l0aGluIGEgc2luZ2xlIHN0YXRlbWVudC4KKyAg IFNlZSA8eHJlZiBsaW5rZW5kPSJzcWwtbWVyZ2UiLz4uCisgIDwvcGFyYT4KICA8L3JlZnNl Y3QxPgogCiAgPHJlZnNlY3QxPgpAQCAtNzU5LDcgKzc2Niw5IEBAIElOU0VSVCBJTlRPIGRp c3RyaWJ1dG9ycyAoZGlkLCBkbmFtZSkgVkFMVUVTICgxMCwgJ0NvbnJhZCBJbnRlcm5hdGlv bmFsJykKICAgIEFsc28sIHRoZSBjYXNlIGluCiAgICB3aGljaCBhIGNvbHVtbiBuYW1lIGxp c3QgaXMgb21pdHRlZCwgYnV0IG5vdCBhbGwgdGhlIGNvbHVtbnMgYXJlCiAgICBmaWxsZWQg ZnJvbSB0aGUgPGxpdGVyYWw+VkFMVUVTPC9saXRlcmFsPiBjbGF1c2Ugb3IgPHJlcGxhY2Vh YmxlPnF1ZXJ5PC9yZXBsYWNlYWJsZT4sCi0gICBpcyBkaXNhbGxvd2VkIGJ5IHRoZSBzdGFu ZGFyZC4KKyAgIGlzIGRpc2FsbG93ZWQgYnkgdGhlIHN0YW5kYXJkLiBJZiB5b3UgcHJlZmVy IGEgbW9yZSBTUUwgU3RhbmRhcmQKKyAgIGNvbmZvcm1pbmcgc3RhdGVtZW50IHRoYW4gPGxp dGVyYWw+T04gQ09ORkxJQ1Q8L2xpdGVyYWw+LCBzZWUKKyAgIDx4cmVmIGxpbmtlbmQ9InNx bC1tZXJnZSIvPi4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL3JlZi9tZXJnZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9tZXJnZS5zZ21sCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjczNzc4NjY2ZTkKLS0tIC9k ZXYvbnVsbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL21lcmdlLnNnbWwKQEAgLTAsMCArMSw2 MzAgQEAKKzwhLS0KK2RvYy9zcmMvc2dtbC9yZWYvbWVyZ2Uuc2dtbAorUG9zdGdyZVNRTCBk b2N1bWVudGF0aW9uCistLT4KKworPHJlZmVudHJ5IGlkPSJzcWwtbWVyZ2UiPgorCisgPHJl Zm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPk1FUkdFPC9yZWZlbnRyeXRpdGxlPgorICA8bWFu dm9sbnVtPjc8L21hbnZvbG51bT4KKyAgPHJlZm1pc2NpbmZvPlNRTCAtIExhbmd1YWdlIFN0 YXRlbWVudHM8L3JlZm1pc2NpbmZvPgorIDwvcmVmbWV0YT4KKworIDxyZWZuYW1lZGl2Pgor ICA8cmVmbmFtZT5NRVJHRTwvcmVmbmFtZT4KKyAgPHJlZnB1cnBvc2U+aW5zZXJ0LCB1cGRh dGUsIG9yIGRlbGV0ZSByb3dzIG9mIGEgdGFibGUgYmFzZWQgdXBvbiBzb3VyY2UgZGF0YTwv cmVmcHVycG9zZT4KKyA8L3JlZm5hbWVkaXY+CisKKyA8cmVmc3lub3BzaXNkaXY+Cis8c3lu b3BzaXM+CitbIFdJVEggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPndpdGhfcXVl cnk8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0KK01FUkdFIElOVE8gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnRhcmdldF90YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyBbIEFT IF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhcmdldF9hbGlhczwvcmVwbGFj ZWFibGU+IF0KK1VTSU5HIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3Nv dXJjZTwvcmVwbGFjZWFibGU+CitPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ am9pbl9jb25kaXRpb248L3JlcGxhY2VhYmxlPgorPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPndoZW5fY2xhdXNlPC9yZXBsYWNlYWJsZT4gWy4uLl0KKword2hlcmUgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRhdGFfc291cmNlPC9yZXBsYWNlYWJsZT4gaXMK KworeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c291cmNlX3RhYmxlX25hbWU8 L3JlcGxhY2VhYmxlPiB8CisgICggc291cmNlX3F1ZXJ5ICkKK30KK1sgWyBBUyBdIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zb3VyY2VfYWxpYXM8L3JlcGxhY2VhYmxlPiBd CisKK2FuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2hlbl9jbGF1c2U8L3Jl cGxhY2VhYmxlPiBpcworCit7IFdIRU4gTUFUQ0hFRCBbIEFORCA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+Y29uZGl0aW9uPC9yZXBsYWNlYWJsZT4gXSBUSEVOIHsgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm1lcmdlX3VwZGF0ZTwvcmVwbGFjZWFibGU+IHwg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm1lcmdlX2RlbGV0ZTwvcmVwbGFjZWFi bGU+IHwgRE8gTk9USElORyB9IHwKKyAgV0hFTiBOT1QgTUFUQ0hFRCBbIEFORCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29uZGl0aW9uPC9yZXBsYWNlYWJsZT4gXSBUSEVO IHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm1lcmdlX2luc2VydDwvcmVwbGFj ZWFibGU+IHwgRE8gTk9USElORyB9Cit9CisKK2FuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+bWVyZ2VfaW5zZXJ0PC9yZXBsYWNlYWJsZT4gaXMKKworSU5TRVJUIFsoIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+ IFssIC4uLl0gKV0KK1sgT1ZFUlJJRElORyB7IFNZU1RFTSB8IFVTRVIgfSBWQUxVRSBdCit7 IFZBTFVFUyAoIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248 L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQgfSBbLCAuLi5dICkgfCBERUZBVUxUIFZBTFVFUyB9 CisKK2FuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bWVyZ2VfdXBkYXRlPC9y ZXBsYWNlYWJsZT4gaXMKKworVVBEQVRFIFNFVCB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+ID0geyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9IHwK KyAgICAgICAgICAgICAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f bmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSA9ICggeyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9IFssIC4u Ll0gKQorICAgICAgICAgICB9IFssIC4uLl0KKworYW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5tZXJnZV9kZWxldGU8L3JlcGxhY2VhYmxlPiBpcworCitERUxFVEUKKzwv c3lub3BzaXM+CisgPC9yZWZzeW5vcHNpc2Rpdj4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxl PkRlc2NyaXB0aW9uPC90aXRsZT4KKworICA8cGFyYT4KKyAgIDxjb21tYW5kPk1FUkdFPC9j b21tYW5kPiBwZXJmb3JtcyBhY3Rpb25zIHRoYXQgbW9kaWZ5IHJvd3MgaW4gdGhlCisgICA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFyZ2V0X3RhYmxlX25hbWU8L3JlcGxh Y2VhYmxlPiwKKyAgIHVzaW5nIHRoZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ ZGF0YV9zb3VyY2U8L3JlcGxhY2VhYmxlPi4KKyAgIDxjb21tYW5kPk1FUkdFPC9jb21tYW5k PiBwcm92aWRlcyBhIHNpbmdsZSA8YWNyb255bT5TUUw8L2Fjcm9ueW0+CisgICBzdGF0ZW1l bnQgdGhhdCBjYW4gY29uZGl0aW9uYWxseSA8Y29tbWFuZD5JTlNFUlQ8L2NvbW1hbmQ+LAor ICAgPGNvbW1hbmQ+VVBEQVRFPC9jb21tYW5kPiBvciA8Y29tbWFuZD5ERUxFVEU8L2NvbW1h bmQ+IHJvd3MsIGEgdGFzaworICAgdGhhdCB3b3VsZCBvdGhlcndpc2UgcmVxdWlyZSBtdWx0 aXBsZSBwcm9jZWR1cmFsIGxhbmd1YWdlIHN0YXRlbWVudHMuCisgIDwvcGFyYT4KKworICA8 cGFyYT4KKyAgIEZpcnN0LCB0aGUgPGNvbW1hbmQ+TUVSR0U8L2NvbW1hbmQ+IGNvbW1hbmQg cGVyZm9ybXMgYSBqb2luCisgICBmcm9tIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5kYXRhX3NvdXJjZTwvcmVwbGFjZWFibGU+IHRvCisgICA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+dGFyZ2V0X3RhYmxlX25hbWU8L3JlcGxhY2VhYmxlPgorICAgcHJvZHVj aW5nIHplcm8gb3IgbW9yZSBjYW5kaWRhdGUgY2hhbmdlIHJvd3MuICBGb3IgZWFjaCBjYW5k aWRhdGUgY2hhbmdlCisgICByb3csIHRoZSBzdGF0dXMgb2YgPGxpdGVyYWw+TUFUQ0hFRDwv bGl0ZXJhbD4gb3IgPGxpdGVyYWw+Tk9UIE1BVENIRUQ8L2xpdGVyYWw+CisgICBpcyBzZXQg anVzdCBvbmNlLCBhZnRlciB3aGljaCA8bGl0ZXJhbD5XSEVOPC9saXRlcmFsPiBjbGF1c2Vz IGFyZSBldmFsdWF0ZWQKKyAgIGluIHRoZSBvcmRlciBzcGVjaWZpZWQuICBGb3IgZWFjaCBj YW5kaWRhdGUgY2hhbmdlIHJvdywgdGhlIGZpcnN0IGNsYXVzZSB0bworICAgZXZhbHVhdGUg YXMgdHJ1ZSBpcyBleGVjdXRlZC4gIE5vIG1vcmUgdGhhbiBvbmUgPGxpdGVyYWw+V0hFTjwv bGl0ZXJhbD4KKyAgIGNsYXVzZSBpcyBleGVjdXRlZCBmb3IgYW55IGNhbmRpZGF0ZSBjaGFu Z2Ugcm93LiAgCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIDxjb21tYW5kPk1FUkdFPC9j b21tYW5kPiBhY3Rpb25zIGhhdmUgdGhlIHNhbWUgZWZmZWN0IGFzCisgICByZWd1bGFyIDxj b21tYW5kPlVQREFURTwvY29tbWFuZD4sIDxjb21tYW5kPklOU0VSVDwvY29tbWFuZD4sIG9y CisgICA8Y29tbWFuZD5ERUxFVEU8L2NvbW1hbmQ+IGNvbW1hbmRzIG9mIHRoZSBzYW1lIG5h bWVzLiBUaGUgc3ludGF4IG9mCisgICB0aG9zZSBjb21tYW5kcyBpcyBkaWZmZXJlbnQsIG5v dGFibHkgdGhhdCB0aGVyZSBpcyBubyA8bGl0ZXJhbD5XSEVSRTwvbGl0ZXJhbD4KKyAgIGNs YXVzZSBhbmQgbm8gdGFibGUgbmFtZSBpcyBzcGVjaWZpZWQuICBBbGwgYWN0aW9ucyByZWZl ciB0byB0aGUKKyAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YXJnZXRfdGFi bGVfbmFtZTwvcmVwbGFjZWFibGU+LAorICAgdGhvdWdoIG1vZGlmaWNhdGlvbnMgdG8gb3Ro ZXIgdGFibGVzIG1heSBiZSBtYWRlIHVzaW5nIHRyaWdnZXJzLgorICA8L3BhcmE+CisKKyAg PHBhcmE+CisgICBXaGVuIDxsaXRlcmFsPkRPIE5PVEhJTkc8L2xpdGVyYWw+IGlzIHNwZWNp ZmllZCwgdGhlIHNvdXJjZSByb3cgaXMKKyAgIHNraXBwZWQuIFNpbmNlIGFjdGlvbnMgYXJl IGV2YWx1YXRlZCBpbiB0aGVpciBzcGVjaWZpZWQgb3JkZXIsIDxsaXRlcmFsPkRPCisgICBO T1RISU5HPC9saXRlcmFsPiBjYW4gYmUgaGFuZHkgdG8gc2tpcCBub24taW50ZXJlc3Rpbmcg c291cmNlIHJvd3MgYmVmb3JlCisgICBtb3JlIGZpbmUtZ3JhaW5lZCBoYW5kbGluZy4KKyAg PC9wYXJhPgorCisgIDxwYXJhPgorICAgVGhlcmUgaXMgbm8gc2VwYXJhdGUgPGxpdGVyYWw+ TUVSR0U8L2xpdGVyYWw+IHByaXZpbGVnZS4KKyAgIElmIHlvdSBzcGVjaWZ5IGFuIHVwZGF0 ZSBhY3Rpb24sIHlvdSBtdXN0IGhhdmUgdGhlCisgICA8bGl0ZXJhbD5VUERBVEU8L2xpdGVy YWw+IHByaXZpbGVnZSBvbiB0aGUgY29sdW1uKHMpCisgICBvZiB0aGUgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnRhcmdldF90YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4KKyAg IHRoYXQgYXJlIHJlZmVycmVkIHRvIGluIHRoZSA8bGl0ZXJhbD5TRVQ8L2xpdGVyYWw+IGNs YXVzZS4KKyAgIElmIHlvdSBzcGVjaWZ5IGFuIGluc2VydCBhY3Rpb24sIHlvdSBtdXN0IGhh dmUgdGhlIDxsaXRlcmFsPklOU0VSVDwvbGl0ZXJhbD4KKyAgIHByaXZpbGVnZSBvbiB0aGUg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhcmdldF90YWJsZV9uYW1lPC9yZXBs YWNlYWJsZT4uCisgICBJZiB5b3Ugc3BlY2lmeSBhbiBkZWxldGUgYWN0aW9uLCB5b3UgbXVz dCBoYXZlIHRoZSA8bGl0ZXJhbD5ERUxFVEU8L2xpdGVyYWw+CisgICBwcml2aWxlZ2Ugb24g dGhlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YXJnZXRfdGFibGVfbmFtZTwv cmVwbGFjZWFibGU+LgorICAgUHJpdmlsZWdlcyBhcmUgdGVzdGVkIG9uY2UgYXQgc3RhdGVt ZW50IHN0YXJ0IGFuZCBhcmUgY2hlY2tlZAorICAgd2hldGhlciBvciBub3QgcGFydGljdWxh ciA8bGl0ZXJhbD5XSEVOPC9saXRlcmFsPiBjbGF1c2VzIGFyZSBleGVjdXRlZC4KKyAgIFlv dSB3aWxsIHJlcXVpcmUgdGhlIDxsaXRlcmFsPlNFTEVDVDwvbGl0ZXJhbD4gcHJpdmlsZWdl IG9uIHRoZQorICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRhdGFfc291cmNl PC9yZXBsYWNlYWJsZT4gYW5kIGFueSBjb2x1bW4ocykKKyAgIG9mIHRoZSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+dGFyZ2V0X3RhYmxlX25hbWU8L3JlcGxhY2VhYmxlPgor ICAgcmVmZXJyZWQgdG8gaW4gYSA8bGl0ZXJhbD5jb25kaXRpb248L2xpdGVyYWw+LgorICA8 L3BhcmE+CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5NRVJHRTwvY29tbWFuZD4gaXMgbm90 IHN1cHBvcnRlZCBpZiB0aGUKKyAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50 YXJnZXRfdGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IGlzIGEKKyAgIG1hdGVyaWFsaXplZCB2 aWV3LCBmb3JlaWduIHRhYmxlIG9yIGlmIGl0IGhhcyBhbnkKKyAgIDxsaXRlcmFsPlJVTEVz PC9saXRlcmFsPiBkZWZpbmVkIG9uIGl0LgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKwor IDxyZWZzZWN0MT4KKyAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgorCisgIDx2YXJpYWJs ZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj50YXJnZXRfdGFibGVfbmFtZTwvcmVwbGFjZWFibGU+PC90ZXJtPgor ICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgbmFtZSAob3B0aW9uYWxs eSBzY2hlbWEtcXVhbGlmaWVkKSBvZiB0aGUgdGFyZ2V0IHRhYmxlIHRvIG1lcmdlIGludG8u CisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisK KyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnRhcmdldF9hbGlhczwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRl bT4KKyAgICAgPHBhcmE+CisgICAgICBBIHN1YnN0aXR1dGUgbmFtZSBmb3IgdGhlIHRhcmdl dCB0YWJsZS4gV2hlbiBhbiBhbGlhcyBpcworICAgICAgcHJvdmlkZWQsIGl0IGNvbXBsZXRl bHkgaGlkZXMgdGhlIGFjdHVhbCBuYW1lIG9mIHRoZSB0YWJsZS4gIEZvcgorICAgICAgZXhh bXBsZSwgZ2l2ZW4gPGxpdGVyYWw+TUVSR0UgSU5UTyBmb28gQVMgZjwvbGl0ZXJhbD4sIHRo ZSByZW1haW5kZXIgb2YgdGhlCisgICAgICA8Y29tbWFuZD5NRVJHRTwvY29tbWFuZD4gc3Rh dGVtZW50IG11c3QgcmVmZXIgdG8gdGhpcyB0YWJsZSBhcworICAgICAgPGxpdGVyYWw+Zjwv bGl0ZXJhbD4gbm90IDxsaXRlcmFsPmZvbzwvbGl0ZXJhbD4uCisgICAgIDwvcGFyYT4KKyAg ICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+ CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNvdXJjZV90YWJs ZV9uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFy YT4KKyAgICAgIFRoZSBuYW1lIChvcHRpb25hbGx5IHNjaGVtYS1xdWFsaWZpZWQpIG9mIHRo ZSBzb3VyY2UgdGFibGUsIHZpZXcgb3IKKyAgICAgIHRyYW5zaXRpb24gdGFibGUuCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2 YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnNvdXJjZV9xdWVyeTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAg ICAgPHBhcmE+CisgICAgICBBIHF1ZXJ5ICg8Y29tbWFuZD5TRUxFQ1Q8L2NvbW1hbmQ+IHN0 YXRlbWVudCBvciA8Y29tbWFuZD5WQUxVRVM8L2NvbW1hbmQ+CisgICAgICBzdGF0ZW1lbnQp IHRoYXQgc3VwcGxpZXMgdGhlIHJvd3MgdG8gYmUgbWVyZ2VkIGludG8gdGhlCisgICAgICA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFyZ2V0X3RhYmxlX25hbWU8L3JlcGxh Y2VhYmxlPi4KKyAgICAgIFJlZmVyIHRvIHRoZSA8eHJlZiBsaW5rZW5kPSJzcWwtc2VsZWN0 Ii8+CisgICAgICBzdGF0ZW1lbnQgb3IgPHhyZWYgbGlua2VuZD0ic3FsLXZhbHVlcyIvPgor ICAgICAgc3RhdGVtZW50IGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBzeW50YXguCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2 YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnNvdXJjZV9hbGlhczwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAg ICAgPHBhcmE+CisgICAgICBBIHN1YnN0aXR1dGUgbmFtZSBmb3IgdGhlIGRhdGEgc291cmNl LiBXaGVuIGFuIGFsaWFzIGlzCisgICAgICBwcm92aWRlZCwgaXQgY29tcGxldGVseSBoaWRl cyB0aGUgYWN0dWFsIG5hbWUgb2YgdGhlIHRhYmxlIG9yIHRoZSBmYWN0CisgICAgICB0aGF0 IGEgcXVlcnkgd2FzIGlzc3VlZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+Cisg ICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+am9pbl9jb25kaXRpb248L3JlcGxhY2VhYmxl PjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmpvaW5fY29uZGl0aW9uPC9yZXBsYWNlYWJsZT4gaXMK KyAgICAgIGFuIGV4cHJlc3Npb24gcmVzdWx0aW5nIGluIGEgdmFsdWUgb2YgdHlwZQorICAg ICAgPHR5cGU+Ym9vbGVhbjwvdHlwZT4gKHNpbWlsYXIgdG8gYSA8bGl0ZXJhbD5XSEVSRTwv bGl0ZXJhbD4KKyAgICAgIGNsYXVzZSkgdGhhdCBzcGVjaWZpZXMgd2hpY2ggcm93cyBpbiB0 aGUgCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGF0YV9zb3VyY2U8 L3JlcGxhY2VhYmxlPgorICAgICAgbWF0Y2ggcm93cyBpbiB0aGUKKyAgICAgIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YXJnZXRfdGFibGVfbmFtZTwvcmVwbGFjZWFibGU+ LgorICAgICA8L3BhcmE+CisgICAgIDx3YXJuaW5nPgorICAgICAgPHBhcmE+CisgICAgICAg T25seSBjb2x1bW5zIGZyb20gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhcmdl dF90YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICB0aGF0IGF0dGVtcHQgdG8gbWF0 Y2ggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRhdGFfc291cmNlPC9yZXBsYWNl YWJsZT4KKyAgICAgICByb3dzIHNob3VsZCBhcHBlYXIgaW4gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmpvaW5fY29uZGl0aW9uPC9yZXBsYWNlYWJsZT4uCisgICAgICAgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmpvaW5fY29uZGl0aW9uPC9yZXBsYWNlYWJs ZT4gc3ViZXhwcmVzc2lvbnMgdGhhdAorICAgICAgIG9ubHkgcmVmZXJlbmNlIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YXJnZXRfdGFibGVfbmFtZTwvcmVwbGFjZWFibGU+ CisgICAgICAgY29sdW1ucyBjYW4gYWZmZWN0IHdoaWNoIGFjdGlvbiBpcyB0YWtlbiwgb2Z0 ZW4gaW4gc3VycHJpc2luZyB3YXlzLgorICAgICAgPC9wYXJhPgorICAgICA8L3dhcm5pbmc+ CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVu dHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53aGVuX2Ns YXVzZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+ CisgICAgICBBdCBsZWFzdCBvbmUgPGxpdGVyYWw+V0hFTjwvbGl0ZXJhbD4gY2xhdXNlIGlz IHJlcXVpcmVkLgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgSWYgdGhlIDxs aXRlcmFsPldIRU48L2xpdGVyYWw+IGNsYXVzZSBzcGVjaWZpZXMgPGxpdGVyYWw+V0hFTiBN QVRDSEVEPC9saXRlcmFsPgorICAgICAgYW5kIHRoZSBjYW5kaWRhdGUgY2hhbmdlIHJvdyBt YXRjaGVzIGEgcm93IGluIHRoZQorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnRhcmdldF90YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4sCisgICAgICB0aGUgPGxpdGVy YWw+V0hFTjwvbGl0ZXJhbD4gY2xhdXNlIGlzIGV4ZWN1dGVkIGlmIHRoZQorICAgICAgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbmRpdGlvbjwvcmVwbGFjZWFibGU+IGlz CisgICAgICBhYnNlbnQgb3IgaXQgZXZhbHVhdGVzIHRvIDxsaXRlcmFsPnRydWU8L2xpdGVy YWw+LgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgQ29udmVyc2VseSwgaWYg dGhlIDxsaXRlcmFsPldIRU48L2xpdGVyYWw+IGNsYXVzZSBzcGVjaWZpZXMKKyAgICAgIDxs aXRlcmFsPldIRU4gTk9UIE1BVENIRUQ8L2xpdGVyYWw+CisgICAgICBhbmQgdGhlIGNhbmRp ZGF0ZSBjaGFuZ2Ugcm93IGRvZXMgbm90IG1hdGNoIGEgcm93IGluIHRoZQorICAgICAgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhcmdldF90YWJsZV9uYW1lPC9yZXBsYWNl YWJsZT4sCisgICAgICB0aGUgPGxpdGVyYWw+V0hFTjwvbGl0ZXJhbD4gY2xhdXNlIGlzIGV4 ZWN1dGVkIGlmIHRoZQorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNv bmRpdGlvbjwvcmVwbGFjZWFibGU+IGlzCisgICAgICBhYnNlbnQgb3IgaXQgZXZhbHVhdGVz IHRvIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0 aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0 ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25kaXRpb248L3JlcGxhY2Vh YmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgQW4gZXhw cmVzc2lvbiB0aGF0IHJldHVybnMgYSB2YWx1ZSBvZiB0eXBlIDx0eXBlPmJvb2xlYW48L3R5 cGU+LgorICAgICAgSWYgdGhpcyBleHByZXNzaW9uIGZvciBhIDxsaXRlcmFsPldIRU48L2xp dGVyYWw+IGNsYXVzZQorICAgICAgcmV0dXJucyA8bGl0ZXJhbD50cnVlPC9saXRlcmFsPiwg dGhlbiB0aGUgYWN0aW9uIGZvciB0aGF0IGNsYXVzZQorICAgICAgaXMgZXhlY3V0ZWQgZm9y IHRoYXQgcm93LgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgQSBjb25kaXRp b24gb24gYSA8bGl0ZXJhbD5XSEVOIE1BVENIRUQ8L2xpdGVyYWw+IGNsYXVzZSBjYW4gcmVm ZXIgdG8gY29sdW1ucworICAgICAgaW4gYm90aCB0aGUgc291cmNlIGFuZCB0aGUgdGFyZ2V0 IHJlbGF0aW9ucy4gQSBjb25kaXRpb24gb24gYQorICAgICAgPGxpdGVyYWw+V0hFTiBOT1Qg TUFUQ0hFRDwvbGl0ZXJhbD4gY2xhdXNlIGNhbiBvbmx5IHJlZmVyIHRvIGNvbHVtbnMgZnJv bQorICAgICAgdGhlIHNvdXJjZSByZWxhdGlvbiwgc2luY2UgYnkgZGVmaW5pdGlvbiB0aGVy ZSBpcyBubyBtYXRjaGluZyB0YXJnZXQgcm93LgorICAgICAgT25seSB0aGUgc3lzdGVtIGF0 dHJpYnV0ZXMgZnJvbSB0aGUgdGFyZ2V0IHRhYmxlIGFyZSBhY2Nlc3NpYmxlLgorICAgICA8 L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFy bGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5t ZXJnZV9pbnNlcnQ8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAg IDxwYXJhPgorICAgICAgVGhlIHNwZWNpZmljYXRpb24gb2YgYW4gPGxpdGVyYWw+SU5TRVJU PC9saXRlcmFsPiBhY3Rpb24gdGhhdCBpbnNlcnRzCisgICAgICBvbmUgcm93IGludG8gdGhl IHRhcmdldCB0YWJsZS4KKyAgICAgIFRoZSB0YXJnZXQgY29sdW1uIG5hbWVzIGNhbiBiZSBs aXN0ZWQgaW4gYW55IG9yZGVyLiBJZiBubyBsaXN0IG9mCisgICAgICBjb2x1bW4gbmFtZXMg aXMgZ2l2ZW4gYXQgYWxsLCB0aGUgZGVmYXVsdCBpcyBhbGwgdGhlIGNvbHVtbnMgb2YgdGhl CisgICAgICB0YWJsZSBpbiB0aGVpciBkZWNsYXJlZCBvcmRlci4KKyAgICAgPC9wYXJhPgor ICAgICA8cGFyYT4KKyAgICAgIEVhY2ggY29sdW1uIG5vdCBwcmVzZW50IGluIHRoZSBleHBs aWNpdCBvciBpbXBsaWNpdCBjb2x1bW4gbGlzdCB3aWxsIGJlCisgICAgICBmaWxsZWQgd2l0 aCBhIGRlZmF1bHQgdmFsdWUsIGVpdGhlciBpdHMgZGVjbGFyZWQgZGVmYXVsdCB2YWx1ZQor ICAgICAgb3IgbnVsbCBpZiB0aGVyZSBpcyBub25lLgorICAgICA8L3BhcmE+CisgICAgIDxw YXJhPgorICAgICAgSWYgdGhlIGV4cHJlc3Npb24gZm9yIGFueSBjb2x1bW4gaXMgbm90IG9m IHRoZSBjb3JyZWN0IGRhdGEgdHlwZSwKKyAgICAgIGF1dG9tYXRpYyB0eXBlIGNvbnZlcnNp b24gd2lsbCBiZSBhdHRlbXB0ZWQuCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAg ICBJZiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFyZ2V0X3RhYmxlX25hbWU8 L3JlcGxhY2VhYmxlPgorICAgICAgaXMgYSBwYXJ0aXRpb25lZCB0YWJsZSwgZWFjaCByb3cg aXMgcm91dGVkIHRvIHRoZSBhcHByb3ByaWF0ZSBwYXJ0aXRpb24KKyAgICAgIGFuZCBpbnNl cnRlZCBpbnRvIGl0LgorICAgICAgSWYgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnRhcmdldF90YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgIGlzIGEgcGFydGl0aW9u LCBhbiBlcnJvciB3aWxsIG9jY3VyIGlmIGFueSBpbnB1dCByb3cgdmlvbGF0ZXMgdGhlCisg ICAgICBwYXJ0aXRpb24gY29uc3RyYWludC4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4K KyAgICAgIENvbHVtbiBuYW1lcyBtYXkgbm90IGJlIHNwZWNpZmllZCBtb3JlIHRoYW4gb25j ZS4KKyAgICAgIDxjb21tYW5kPklOU0VSVDwvY29tbWFuZD4gYWN0aW9ucyBjYW5ub3QgY29u dGFpbiBzdWItc2VsZWN0cy4gCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBP bmx5IG9uZSA8bGl0ZXJhbD5WQUxVRVM8L2xpdGVyYWw+IGNsYXVzZSBjYW4gYmUgc3BlY2lm aWVkLgorICAgICAgVGhlIDxsaXRlcmFsPlZBTFVFUzwvbGl0ZXJhbD4gY2xhdXNlIGNhbiBv bmx5IHJlZmVyIHRvIGNvbHVtbnMgZnJvbQorICAgICAgdGhlIHNvdXJjZSByZWxhdGlvbiwg c2luY2UgYnkgZGVmaW5pdGlvbiB0aGVyZSBpcyBubyBtYXRjaGluZyB0YXJnZXQgcm93Lgor ICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisg ICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5tZXJnZV91cGRhdGU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+ CisgICAgIDxwYXJhPgorICAgICAgVGhlIHNwZWNpZmljYXRpb24gb2YgYW4gPGxpdGVyYWw+ VVBEQVRFPC9saXRlcmFsPiBhY3Rpb24gdGhhdCB1cGRhdGVzCisgICAgICB0aGUgY3VycmVu dCByb3cgb2YgdGhlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YXJnZXRfdGFi bGVfbmFtZTwvcmVwbGFjZWFibGU+LgorICAgICAgQ29sdW1uIG5hbWVzIG1heSBub3QgYmUg c3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlLgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgor ICAgICAgTmVpdGhlciBhIHRhYmxlIG5hbWUgbm9yIGEgPGxpdGVyYWw+V0hFUkU8L2xpdGVy YWw+IGNsYXVzZSBhcmUgYWxsb3dlZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+ CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bWVyZ2VfZGVsZXRlPC9yZXBsYWNlYWJs ZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFNwZWNpZmll cyBhIDxsaXRlcmFsPkRFTEVURTwvbGl0ZXJhbD4gYWN0aW9uIHRoYXQgZGVsZXRlcyB0aGUg Y3VycmVudCByb3cKKyAgICAgIG9mIHRoZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+dGFyZ2V0X3RhYmxlX25hbWU8L3JlcGxhY2VhYmxlPi4KKyAgICAgIERvIG5vdCBpbmNs dWRlIHRoZSB0YWJsZSBuYW1lIG9yIGFueSBvdGhlciBjbGF1c2VzLCBhcyB5b3Ugd291bGQg bm9ybWFsbHkKKyAgICAgIGRvIHdpdGggYSA8eHJlZiBsaW5rZW5kPSJzcWwtZGVsZXRlIi8+ IGNvbW1hbmQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0 ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAg PGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lIG9mIGEgY29sdW1uIGlu IHRoZSA8cmVwbGFjZWFibGUKKyAgICAgIGNsYXNzPSJwYXJhbWV0ZXIiPnRhcmdldF90YWJs ZV9uYW1lPC9yZXBsYWNlYWJsZT4uICBUaGUgY29sdW1uIG5hbWUKKyAgICAgIGNhbiBiZSBx dWFsaWZpZWQgd2l0aCBhIHN1YmZpZWxkIG5hbWUgb3IgYXJyYXkgc3Vic2NyaXB0LCBpZgor ICAgICAgbmVlZGVkLiAgKEluc2VydGluZyBpbnRvIG9ubHkgc29tZSBmaWVsZHMgb2YgYSBj b21wb3NpdGUKKyAgICAgIGNvbHVtbiBsZWF2ZXMgdGhlIG90aGVyIGZpZWxkcyBudWxsLikK KyAgICAgIERvIG5vdCBpbmNsdWRlIHRoZSB0YWJsZSdzIG5hbWUgaW4gdGhlIHNwZWNpZmlj YXRpb24KKyAgICAgIG9mIGEgdGFyZ2V0IGNvbHVtbi4KKyAgICAgPC9wYXJhPgorICAgIDwv bGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAg ICA8dGVybT48bGl0ZXJhbD5PVkVSUklESU5HIFNZU1RFTSBWQUxVRTwvbGl0ZXJhbD48L3Rl cm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFdpdGhvdXQgdGhpcyBj bGF1c2UsIGl0IGlzIGFuIGVycm9yIHRvIHNwZWNpZnkgYW4gZXhwbGljaXQgdmFsdWUKKyAg ICAgIChvdGhlciB0aGFuIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+KSBmb3IgYW4gaWRl bnRpdHkgY29sdW1uIGRlZmluZWQKKyAgICAgIGFzIDxsaXRlcmFsPkdFTkVSQVRFRCBBTFdB WVM8L2xpdGVyYWw+LiAgVGhpcyBjbGF1c2Ugb3ZlcnJpZGVzIHRoYXQKKyAgICAgIHJlc3Ry aWN0aW9uLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVu dHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPk9WRVJSSURJ TkcgVVNFUiBWQUxVRTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8 cGFyYT4KKyAgICAgIElmIHRoaXMgY2xhdXNlIGlzIHNwZWNpZmllZCwgdGhlbiBhbnkgdmFs dWVzIHN1cHBsaWVkIGZvciBpZGVudGl0eQorICAgICAgY29sdW1ucyBkZWZpbmVkIGFzIDxs aXRlcmFsPkdFTkVSQVRFRCBCWSBERUZBVUxUPC9saXRlcmFsPiBhcmUgaWdub3JlZAorICAg ICAgYW5kIHRoZSBkZWZhdWx0IHNlcXVlbmNlLWdlbmVyYXRlZCB2YWx1ZXMgYXJlIGFwcGxp ZWQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+ CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+REVGQVVMVCBWQUxV RVM8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAg ICBBbGwgY29sdW1ucyB3aWxsIGJlIGZpbGxlZCB3aXRoIHRoZWlyIGRlZmF1bHQgdmFsdWVz LgorICAgICAgKEFuIDxsaXRlcmFsPk9WRVJSSURJTkc8L2xpdGVyYWw+IGNsYXVzZSBpcyBu b3QgcGVybWl0dGVkIGluIHRoaXMKKyAgICAgIGZvcm0uKQorICAgICA8L3BhcmE+CisgICAg PC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5Pgor ICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9y ZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAg IEFuIGV4cHJlc3Npb24gdG8gYXNzaWduIHRvIHRoZSBjb2x1bW4uICBJZiB1c2VkIGluIGEK KyAgICAgIDxsaXRlcmFsPldIRU4gTUFUQ0hFRDwvbGl0ZXJhbD4gY2xhdXNlLCB0aGUgZXhw cmVzc2lvbiBjYW4gdXNlIHZhbHVlcworICAgICAgZnJvbSB0aGUgb3JpZ2luYWwgcm93IGlu IHRoZSB0YXJnZXQgdGFibGUsIGFuZCB2YWx1ZXMgZnJvbSB0aGUKKyAgICAgIDxsaXRlcmFs PmRhdGFfc291cmNlPC9saXRlcmFsPiByb3cuCisgICAgICBJZiB1c2VkIGluIGEgPGxpdGVy YWw+V0hFTiBOT1QgTUFUQ0hFRDwvbGl0ZXJhbD4gY2xhdXNlLCB0aGUKKyAgICAgIGV4cHJl c3Npb24gY2FuIHVzZSB2YWx1ZXMgZnJvbSB0aGUgPGxpdGVyYWw+ZGF0YV9zb3VyY2U8L2xp dGVyYWw+LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVu dHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPkRFRkFVTFQ8 L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBT ZXQgdGhlIGNvbHVtbiB0byBpdHMgZGVmYXVsdCB2YWx1ZSAod2hpY2ggd2lsbCBiZSA8bGl0 ZXJhbD5OVUxMPC9saXRlcmFsPgorICAgICAgaWYgbm8gc3BlY2lmaWMgZGVmYXVsdCBleHBy ZXNzaW9uIGhhcyBiZWVuIGFzc2lnbmVkIHRvIGl0KS4KKyAgICAgPC9wYXJhPgorICAgIDwv bGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAg ICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2l0aF9xdWVyeTwvcmVw bGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBU aGUgPGxpdGVyYWw+V0lUSDwvbGl0ZXJhbD4gY2xhdXNlIGFsbG93cyB5b3UgdG8gc3BlY2lm eSBvbmUgb3IgbW9yZQorICAgICAgc3VicXVlcmllcyB0aGF0IGNhbiBiZSByZWZlcmVuY2Vk IGJ5IG5hbWUgaW4gdGhlIDxjb21tYW5kPk1FUkdFPC9jb21tYW5kPgorICAgICAgcXVlcnku IFNlZSA8eHJlZiBsaW5rZW5kPSJxdWVyaWVzLXdpdGgiLz4gYW5kIDx4cmVmIGxpbmtlbmQ9 InNxbC1zZWxlY3QiLz4KKyAgICAgIGZvciBkZXRhaWxzLgorICAgICA8L3BhcmE+CisgICAg PC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgIDwvdmFyaWFibGVsaXN0Pgor IDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5PdXRwdXRzPC90aXRsZT4K KworICA8cGFyYT4KKyAgIE9uIHN1Y2Nlc3NmdWwgY29tcGxldGlvbiwgYSA8Y29tbWFuZD5N RVJHRTwvY29tbWFuZD4gY29tbWFuZCByZXR1cm5zIGEgY29tbWFuZAorICAgdGFnIG9mIHRo ZSBmb3JtCis8c2NyZWVuPgorTUVSR0UgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnRvdGFsLWNvdW50PC9yZXBsYWNlYWJsZT4KKzwvc2NyZWVuPgorICAgVGhlIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj50b3RhbC1jb3VudDwvcmVwbGFjZWFibGU+IGlzIHRo ZSB0b3RhbAorICAgbnVtYmVyIG9mIHJvd3MgY2hhbmdlZCAod2hldGhlciBpbnNlcnRlZCwg dXBkYXRlZCwgb3IgZGVsZXRlZCkuCisgICBJZiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dG90YWwtY291bnQ8L3JlcGxhY2VhYmxlPiBpcyAwLCBubyByb3dzCisgICB3ZXJl IGNoYW5nZWQgaW4gYW55IHdheS4KKyAgPC9wYXJhPgorCisgPC9yZWZzZWN0MT4KKworIDxy ZWZzZWN0MT4KKyAgPHRpdGxlPkV4ZWN1dGlvbjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBU aGUgZm9sbG93aW5nIHN0ZXBzIHRha2UgcGxhY2UgZHVyaW5nIHRoZSBleGVjdXRpb24gb2YK KyAgIDxjb21tYW5kPk1FUkdFPC9jb21tYW5kPi4KKyAgICA8b3JkZXJlZGxpc3Q+CisgICAg IDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFBlcmZvcm0gYW55IDxsaXRlcmFs PkJFRk9SRSBTVEFURU1FTlQ8L2xpdGVyYWw+IHRyaWdnZXJzIGZvciBhbGwKKyAgICAgICBh Y3Rpb25zIHNwZWNpZmllZCwgd2hldGhlciBvciBub3QgdGhlaXIgPGxpdGVyYWw+V0hFTjwv bGl0ZXJhbD4KKyAgICAgICBjbGF1c2VzIG1hdGNoLgorICAgICAgPC9wYXJhPgorICAgICA8 L2xpc3RpdGVtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBQZXJm b3JtIGEgam9pbiBmcm9tIHNvdXJjZSB0byB0YXJnZXQgdGFibGUuCisgICAgICAgVGhlIHJl c3VsdGluZyBxdWVyeSB3aWxsIGJlIG9wdGltaXplZCBub3JtYWxseSBhbmQgd2lsbCBwcm9k dWNlCisgICAgICAgYSBzZXQgb2YgY2FuZGlkYXRlIGNoYW5nZSByb3dzLiBGb3IgZWFjaCBj YW5kaWRhdGUgY2hhbmdlIHJvdywKKyAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgIDxs aXN0aXRlbT4KKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIEV2YWx1YXRlIHdoZXRoZXIg ZWFjaCByb3cgaXMgPGxpdGVyYWw+TUFUQ0hFRDwvbGl0ZXJhbD4gb3IKKyAgICAgICAgICA8 bGl0ZXJhbD5OT1QgTUFUQ0hFRDwvbGl0ZXJhbD4uCisgICAgICAgICA8L3BhcmE+CisgICAg ICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgIDxwYXJhPgor ICAgICAgICAgIFRlc3QgZWFjaCA8bGl0ZXJhbD5XSEVOPC9saXRlcmFsPiBjb25kaXRpb24g aW4gdGhlIG9yZGVyCisgICAgICAgICAgc3BlY2lmaWVkIHVudGlsIG9uZSByZXR1cm5zIHRy dWUuCisgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxs aXN0aXRlbT4KKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIFdoZW4gYSBjb25kaXRpb24g cmV0dXJucyB0cnVlLCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgYWN0aW9ucworICAgICAgICAg IDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBh cmE+CisgICAgICAgICAgICAgUGVyZm9ybSBhbnkgPGxpdGVyYWw+QkVGT1JFIFJPVzwvbGl0 ZXJhbD4gdHJpZ2dlcnMgdGhhdCBmaXJlCisgICAgICAgICAgICAgZm9yIHRoZSBhY3Rpb24n cyBldmVudCB0eXBlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICA8L2xpc3Rp dGVtPgorICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAg ICAgICAgICBQZXJmb3JtIHRoZSBzcGVjaWZpZWQgYWN0aW9uLCBpbnZva2luZyBhbnkgY2hl Y2sgY29uc3RyYWludHMgb24gdGhlCisgICAgICAgICAgICAgdGFyZ2V0IHRhYmxlLgorICAg ICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICA8 bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICBQZXJmb3JtIGFu eSA8bGl0ZXJhbD5BRlRFUiBST1c8L2xpdGVyYWw+IHRyaWdnZXJzIHRoYXQgZmlyZSBmb3IK KyAgICAgICAgICAgICB0aGUgYWN0aW9uJ3MgZXZlbnQgdHlwZS4KKyAgICAgICAgICAgIDwv cGFyYT4KKyAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICA8L29yZGVyZWRsaXN0 PgorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgIDwvb3Jk ZXJlZGxpc3Q+CisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgIDxsaXN0 aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFBlcmZvcm0gYW55IDxsaXRlcmFsPkFGVEVS IFNUQVRFTUVOVDwvbGl0ZXJhbD4gdHJpZ2dlcnMgZm9yIGFjdGlvbnMKKyAgICAgICBzcGVj aWZpZWQsIHdoZXRoZXIgb3Igbm90IHRoZXkgYWN0dWFsbHkgb2NjdXIuICBUaGlzIGlzIHNp bWlsYXIgdG8gdGhlCisgICAgICAgYmVoYXZpb3Igb2YgYW4gPGNvbW1hbmQ+VVBEQVRFPC9j b21tYW5kPiBzdGF0ZW1lbnQgdGhhdCBtb2RpZmllcyBubyByb3dzLgorICAgICAgPC9wYXJh PgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvb3JkZXJlZGxpc3Q+CisgICBJbiBzdW1tYXJ5 LCBzdGF0ZW1lbnQgdHJpZ2dlcnMgZm9yIGFuIGV2ZW50IHR5cGUgKHNheSwKKyAgIDxjb21t YW5kPklOU0VSVDwvY29tbWFuZD4pIHdpbGwgYmUgZmlyZWQgd2hlbmV2ZXIgd2UKKyAgIDxl bXBoYXNpcz5zcGVjaWZ5PC9lbXBoYXNpcz4gYW4gYWN0aW9uIG9mIHRoYXQga2luZC4KKyAg IEluIGNvbnRyYXN0LCByb3ctbGV2ZWwgdHJpZ2dlcnMgd2lsbCBmaXJlIG9ubHkgZm9yIHRo ZSBzcGVjaWZpYyBldmVudCB0eXBlCisgICBiZWluZyA8ZW1waGFzaXM+ZXhlY3V0ZWQ8L2Vt cGhhc2lzPi4KKyAgIFNvIGEgPGNvbW1hbmQ+TUVSR0U8L2NvbW1hbmQ+IGNvbW1hbmQgbWln aHQgZmlyZSBzdGF0ZW1lbnQgdHJpZ2dlcnMgZm9yIGJvdGgKKyAgIDxjb21tYW5kPlVQREFU RTwvY29tbWFuZD4gYW5kIDxjb21tYW5kPklOU0VSVDwvY29tbWFuZD4sIGV2ZW4gdGhvdWdo IG9ubHkKKyAgIDxjb21tYW5kPlVQREFURTwvY29tbWFuZD4gcm93IHRyaWdnZXJzIHdlcmUg ZmlyZWQuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFlvdSBzaG91bGQgZW5zdXJlIHRo YXQgdGhlIGpvaW4gcHJvZHVjZXMgYXQgbW9zdCBvbmUgY2FuZGlkYXRlIGNoYW5nZSByb3cK KyAgIGZvciBlYWNoIHRhcmdldCByb3cuICBJbiBvdGhlciB3b3JkcywgYSB0YXJnZXQgcm93 IHNob3VsZG4ndCBqb2luIHRvIG1vcmUKKyAgIHRoYW4gb25lIGRhdGEgc291cmNlIHJvdy4g IElmIGl0IGRvZXMsIHRoZW4gb25seSBvbmUgb2YgdGhlIGNhbmRpZGF0ZSBjaGFuZ2UKKyAg IHJvd3Mgd2lsbCBiZSB1c2VkIHRvIG1vZGlmeSB0aGUgdGFyZ2V0IHJvdzsgbGF0ZXIgYXR0 ZW1wdHMgdG8gbW9kaWZ5IHRoZQorICAgcm93IHdpbGwgY2F1c2UgYW4gZXJyb3IuCisgICBU aGlzIGNhbiBhbHNvIG9jY3VyIGlmIHJvdyB0cmlnZ2VycyBtYWtlIGNoYW5nZXMgdG8gdGhl IHRhcmdldCB0YWJsZQorICAgYW5kIHRoZSByb3dzIHNvIG1vZGlmaWVkIGFyZSB0aGVuIHN1 YnNlcXVlbnRseSBhbHNvIG1vZGlmaWVkIGJ5CisgICA8Y29tbWFuZD5NRVJHRTwvY29tbWFu ZD4uCisgICBJZiB0aGUgcmVwZWF0ZWQgYWN0aW9uIGlzIGFuIDxjb21tYW5kPklOU0VSVDwv Y29tbWFuZD4sIHRoaXMgd2lsbAorICAgY2F1c2UgYSB1bmlxdWVuZXNzIHZpb2xhdGlvbiwg d2hpbGUgYSByZXBlYXRlZCA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+CisgICBvciA8Y29t bWFuZD5ERUxFVEU8L2NvbW1hbmQ+IHdpbGwgY2F1c2UgYSBjYXJkaW5hbGl0eSB2aW9sYXRp b247IHRoZQorICAgbGF0dGVyIGJlaGF2aW9yIGlzIHJlcXVpcmVkIGJ5IHRoZSA8YWNyb255 bT5TUUw8L2Fjcm9ueW0+IHN0YW5kYXJkLgorICAgVGhpcyBkaWZmZXJzIGZyb20gaGlzdG9y aWNhbCA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+CisgICBiZWhhdmlv ciBvZiBqb2lucyBpbiA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+IGFuZAorICAgPGNvbW1h bmQ+REVMRVRFPC9jb21tYW5kPiBzdGF0ZW1lbnRzIHdoZXJlIHNlY29uZCBhbmQgc3Vic2Vx dWVudAorICAgYXR0ZW1wdHMgdG8gbW9kaWZ5IHRoZSBzYW1lIHJvdyBhcmUgc2ltcGx5IGln bm9yZWQuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIElmIGEgPGxpdGVyYWw+V0hFTjwv bGl0ZXJhbD4gY2xhdXNlIG9taXRzIGFuIDxsaXRlcmFsPkFORDwvbGl0ZXJhbD4KKyAgIHN1 Yi1jbGF1c2UsIGl0IGJlY29tZXMgdGhlIGZpbmFsIHJlYWNoYWJsZSBjbGF1c2Ugb2YgdGhh dAorICAga2luZCAoPGxpdGVyYWw+TUFUQ0hFRDwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+Tk9U IE1BVENIRUQ8L2xpdGVyYWw+KS4KKyAgIElmIGEgbGF0ZXIgPGxpdGVyYWw+V0hFTjwvbGl0 ZXJhbD4gY2xhdXNlIG9mIHRoYXQga2luZAorICAgaXMgc3BlY2lmaWVkIGl0IHdvdWxkIGJl IHByb3ZhYmx5IHVucmVhY2hhYmxlIGFuZCBhbiBlcnJvciBpcyByYWlzZWQuCisgICBJZiBu byBmaW5hbCByZWFjaGFibGUgY2xhdXNlIGlzIHNwZWNpZmllZCBvZiBlaXRoZXIga2luZCwg aXQgaXMKKyAgIHBvc3NpYmxlIHRoYXQgbm8gYWN0aW9uIHdpbGwgYmUgdGFrZW4gZm9yIGEg Y2FuZGlkYXRlIGNoYW5nZSByb3cuCisgIDwvcGFyYT4KKworIDwvcmVmc2VjdDE+CisgPHJl ZnNlY3QxPgorICA8dGl0bGU+Tm90ZXM8L3RpdGxlPgorCisgIDxwYXJhPgorICAgVGhlIG9y ZGVyIGluIHdoaWNoIHJvd3MgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBkYXRhIHNvdXJjZSBp cworICAgaW5kZXRlcm1pbmF0ZSBieSBkZWZhdWx0LgorICAgQSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+c291cmNlX3F1ZXJ5PC9yZXBsYWNlYWJsZT4gY2FuIGJlCisgICB1 c2VkIHRvIHNwZWNpZnkgYSBjb25zaXN0ZW50IG9yZGVyaW5nLCBpZiByZXF1aXJlZCwgd2hp Y2ggbWlnaHQgYmUKKyAgIG5lZWRlZCB0byBhdm9pZCBkZWFkbG9ja3MgYmV0d2VlbiBjb25j dXJyZW50IHRyYW5zYWN0aW9ucy4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVGhlcmUg aXMgbm8gPGxpdGVyYWw+UkVUVVJOSU5HPC9saXRlcmFsPiBjbGF1c2Ugd2l0aAorICAgPGNv bW1hbmQ+TUVSR0U8L2NvbW1hbmQ+LiAgQWN0aW9ucyBvZiA8Y29tbWFuZD5JTlNFUlQ8L2Nv bW1hbmQ+LAorICAgPGNvbW1hbmQ+VVBEQVRFPC9jb21tYW5kPiBhbmQgPGNvbW1hbmQ+REVM RVRFPC9jb21tYW5kPiBjYW5ub3QgY29udGFpbgorICAgPGxpdGVyYWw+UkVUVVJOSU5HPC9s aXRlcmFsPiBvciA8bGl0ZXJhbD5XSVRIPC9saXRlcmFsPiBjbGF1c2VzLgorICA8L3BhcmE+ CisKKyAgPHRpcD4KKyAgIDxwYXJhPgorICAgIFlvdSBtYXkgYWxzbyB3aXNoIHRvIGNvbnNp ZGVyIHVzaW5nIDxjb21tYW5kPklOU0VSVCAuLi4gT04gQ09ORkxJQ1Q8L2NvbW1hbmQ+Cisg ICAgYXMgYW4gYWx0ZXJuYXRpdmUgc3RhdGVtZW50IHdoaWNoIG9mZmVycyB0aGUgYWJpbGl0 eSB0byBydW4gYW4KKyAgICA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+IGlmIGEgY29uY3Vy cmVudCA8Y29tbWFuZD5JTlNFUlQ8L2NvbW1hbmQ+CisgICAgb2NjdXJzLiAgVGhlcmUgYXJl IGEgdmFyaWV0eSBvZiBkaWZmZXJlbmNlcyBhbmQgcmVzdHJpY3Rpb25zIGJldHdlZW4KKyAg ICB0aGUgdHdvIHN0YXRlbWVudCB0eXBlcyBhbmQgdGhleSBhcmUgbm90IGludGVyY2hhbmdl YWJsZS4KKyAgIDwvcGFyYT4KKyAgPC90aXA+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0 MT4KKyAgPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFBlcmZvcm0g bWFpbnRlbmFuY2Ugb24gPGxpdGVyYWw+Q3VzdG9tZXJBY2NvdW50czwvbGl0ZXJhbD4gYmFz ZWQKKyAgIHVwb24gbmV3IDxsaXRlcmFsPlRyYW5zYWN0aW9uczwvbGl0ZXJhbD4uCisKKzxw cm9ncmFtbGlzdGluZz4KK01FUkdFIElOVE8gQ3VzdG9tZXJBY2NvdW50IENBCitVU0lORyBS ZWNlbnRUcmFuc2FjdGlvbnMgVAorT04gVC5DdXN0b21lcklkID0gQ0EuQ3VzdG9tZXJJZAor V0hFTiBNQVRDSEVEIFRIRU4KKyAgVVBEQVRFIFNFVCBCYWxhbmNlID0gQmFsYW5jZSArIFRy YW5zYWN0aW9uVmFsdWUKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgorICBJTlNFUlQgKEN1c3Rv bWVySWQsIEJhbGFuY2UpCisgIFZBTFVFUyAoVC5DdXN0b21lcklkLCBULlRyYW5zYWN0aW9u VmFsdWUpOworPC9wcm9ncmFtbGlzdGluZz4KKworICAgbm90aWNlIHRoYXQgdGhpcyB3b3Vs ZCBiZSBleGFjdGx5IGVxdWl2YWxlbnQgdG8gdGhlIGZvbGxvd2luZworICAgc3RhdGVtZW50 IGJlY2F1c2UgdGhlIDxsaXRlcmFsPk1BVENIRUQ8L2xpdGVyYWw+IHJlc3VsdCBkb2VzIG5v dCBjaGFuZ2UKKyAgIGR1cmluZyBleGVjdXRpb24KKworPHByb2dyYW1saXN0aW5nPgorTUVS R0UgSU5UTyBDdXN0b21lckFjY291bnQgQ0EKK1VTSU5HIChTZWxlY3QgQ3VzdG9tZXJJZCwg VHJhbnNhY3Rpb25WYWx1ZSBGcm9tIFJlY2VudFRyYW5zYWN0aW9ucykgQVMgVAorT04gQ0Eu Q3VzdG9tZXJJZCA9IFQuQ3VzdG9tZXJJZAorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisgIElO U0VSVCAoQ3VzdG9tZXJJZCwgQmFsYW5jZSkKKyAgVkFMVUVTIChULkN1c3RvbWVySWQsIFQu VHJhbnNhY3Rpb25WYWx1ZSkKK1dIRU4gTUFUQ0hFRCBUSEVOCisgIFVQREFURSBTRVQgQmFs YW5jZSA9IEJhbGFuY2UgKyBUcmFuc2FjdGlvblZhbHVlOworPC9wcm9ncmFtbGlzdGluZz4K KyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgQXR0ZW1wdCB0byBpbnNlcnQgYSBuZXcgc3Rv Y2sgaXRlbSBhbG9uZyB3aXRoIHRoZSBxdWFudGl0eSBvZiBzdG9jay4gSWYKKyAgIHRoZSBp dGVtIGFscmVhZHkgZXhpc3RzLCBpbnN0ZWFkIHVwZGF0ZSB0aGUgc3RvY2sgY291bnQgb2Yg dGhlIGV4aXN0aW5nCisgICBpdGVtLiBEb24ndCBhbGxvdyBlbnRyaWVzIHRoYXQgaGF2ZSB6 ZXJvIHN0b2NrLgorPHByb2dyYW1saXN0aW5nPgorTUVSR0UgSU5UTyB3aW5lcyB3CitVU0lO RyB3aW5lX3N0b2NrX2NoYW5nZXMgcworT04gcy53aW5lbmFtZSA9IHcud2luZW5hbWUKK1dI RU4gTk9UIE1BVENIRUQgQU5EIHMuc3RvY2tfZGVsdGEgPiAwIFRIRU4KKyAgSU5TRVJUIFZB TFVFUyhzLndpbmVuYW1lLCBzLnN0b2NrX2RlbHRhKQorV0hFTiBNQVRDSEVEIEFORCB3LnN0 b2NrICsgcy5zdG9ja19kZWx0YSA+IDAgVEhFTgorICBVUERBVEUgU0VUIHN0b2NrID0gdy5z dG9jayArIHMuc3RvY2tfZGVsdGE7CitXSEVOIE1BVENIRUQgVEhFTgorICBERUxFVEU7Cis8 L3Byb2dyYW1saXN0aW5nPgorCisgICBUaGUgPGxpdGVyYWw+d2luZV9zdG9ja19jaGFuZ2Vz PC9saXRlcmFsPiB0YWJsZSBtaWdodCBiZSwgZm9yIGV4YW1wbGUsIGEKKyAgIHRlbXBvcmFy eSB0YWJsZSByZWNlbnRseSBsb2FkZWQgaW50byB0aGUgZGF0YWJhc2UuCisgIDwvcGFyYT4K KworIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5Db21wYXRpYmlsaXR5 PC90aXRsZT4KKyAgIDxwYXJhPgorICAgIFRoaXMgY29tbWFuZCBjb25mb3JtcyB0byB0aGUg PGFjcm9ueW0+U1FMPC9hY3JvbnltPiBzdGFuZGFyZC4KKyAgPC9wYXJhPgorICAgPHBhcmE+ CisgICAgVGhlIFdJVEggY2xhdXNlIGFuZCA8bGl0ZXJhbD5ETyBOT1RISU5HPC9saXRlcmFs PiBhY3Rpb24gYXJlIGV4dGVuc2lvbnMgdG8KKyAgICB0aGUgPGFjcm9ueW0+U1FMPC9hY3Jv bnltPiBzdGFuZGFyZC4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5Pgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sIGIvZG9jL3NyYy9zZ21s L3JlZmVyZW5jZS5zZ21sCmluZGV4IGRhNDIxZmYyNGUuLmEzYjc0M2U4YzEgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm ZXJlbmNlLnNnbWwKQEAgLTE4Niw2ICsxODYsNyBAQAogICAgJmxpc3RlbjsKICAgICZsb2Fk OwogICAgJmxvY2s7CisgICAmbWVyZ2U7CiAgICAmbW92ZTsKICAgICZub3RpZnk7CiAgICAm cHJlcGFyZTsKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC90cmlnZ2VyLnNnbWwgYi9kb2Mv c3JjL3NnbWwvdHJpZ2dlci5zZ21sCmluZGV4IDdlMjY1NDQ5M2IuLjI2NjJiZTI0M2YgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC90cmlnZ2VyLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3RyaWdnZXIuc2dtbApAQCAtMTkyLDYgKzE5MiwyOCBAQAogICAgIHdpbGwgYmUgZmlyZWQu CiAgICA8L3BhcmE+CiAKKyAgIDxwYXJhPgorICAgIE5vIHNlcGFyYXRlIHRyaWdnZXJzIGFy ZSBkZWZpbmVkIGZvciA8Y29tbWFuZD5NRVJHRTwvY29tbWFuZD4uIEluc3RlYWQsCisgICAg c3RhdGVtZW50LWxldmVsIG9yIHJvdy1sZXZlbCA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+ LAorICAgIDxjb21tYW5kPkRFTEVURTwvY29tbWFuZD4gYW5kIDxjb21tYW5kPklOU0VSVDwv Y29tbWFuZD4gdHJpZ2dlcnMgYXJlIGZpcmVkCisgICAgZGVwZW5kaW5nIG9uIChmb3Igc3Rh dGVtZW50LWxldmVsIHRyaWdnZXJzKSB3aGF0IGFjdGlvbnMgYXJlIHNwZWNpZmllZCBpbgor ICAgIHRoZSA8Y29tbWFuZD5NRVJHRTwvY29tbWFuZD4gcXVlcnkgYW5kIChmb3Igcm93LWxl dmVsIHRyaWdnZXJzKSB3aGF0CisgICAgYWN0aW9ucyBhcmUgcGVyZm9ybWVkLgorICAgPC9w YXJhPgorCisgICA8cGFyYT4KKyAgICBXaGlsZSBydW5uaW5nIGEgPGNvbW1hbmQ+TUVSR0U8 L2NvbW1hbmQ+IGNvbW1hbmQsIHN0YXRlbWVudC1sZXZlbAorICAgIDxsaXRlcmFsPkJFRk9S RTwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPkFGVEVSPC9saXRlcmFsPiB0cmlnZ2VycyBhcmUK KyAgICBmaXJlZCBmb3IgZXZlbnRzIHNwZWNpZmllZCBpbiB0aGUgYWN0aW9ucyBvZiB0aGUg PGNvbW1hbmQ+TUVSR0U8L2NvbW1hbmQ+CisgICAgY29tbWFuZCwgaXJyZXNwZWN0aXZlIG9m IHdoZXRoZXIgb3Igbm90IHRoZSBhY3Rpb24gaXMgdWx0aW1hdGVseSBwZXJmb3JtZWQuCisg ICAgVGhpcyBpcyB0aGUgc2FtZSBhcyBhbiA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+IHN0 YXRlbWVudCB0aGF0IHVwZGF0ZXMKKyAgICBubyByb3dzLCB5ZXQgc3RhdGVtZW50LWxldmVs IHRyaWdnZXJzIGFyZSBmaXJlZC4KKyAgICBUaGUgcm93LWxldmVsIHRyaWdnZXJzIGFyZSBm aXJlZCBvbmx5IHdoZW4gYSByb3cgaXMgYWN0dWFsbHkgdXBkYXRlZCwKKyAgICBpbnNlcnRl ZCBvciBkZWxldGVkLiBTbyBpdCdzIHBlcmZlY3RseSBsZWdhbCB0aGF0IHdoaWxlIHN0YXRl bWVudC1sZXZlbAorICAgIHRyaWdnZXJzIGFyZSBmaXJlZCBmb3IgY2VydGFpbiB0eXBlcyBv ZiBhY3Rpb24sIG5vIHJvdy1sZXZlbCB0cmlnZ2VycworICAgIGFyZSBmaXJlZCBmb3IgdGhl IHNhbWUga2luZCBvZiBhY3Rpb24uCisgICA8L3BhcmE+CisKICAgIDxwYXJhPgogICAgIFRy aWdnZXIgZnVuY3Rpb25zIGludm9rZWQgYnkgcGVyLXN0YXRlbWVudCB0cmlnZ2VycyBzaG91 bGQgYWx3YXlzCiAgICAgcmV0dXJuIDxzeW1ib2w+TlVMTDwvc3ltYm9sPi4gVHJpZ2dlciBm dW5jdGlvbnMgaW52b2tlZCBieSBwZXItcm93CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j YXRhbG9nL3NxbF9mZWF0dXJlcy50eHQgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0 dXJlcy50eHQKaW5kZXggMDk3ZDljNDc4NC4uZDRjYjgxMjhmZiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0CisrKyBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvc3FsX2ZlYXR1cmVzLnR4dApAQCAtMjQwLDkgKzI0MCw5IEBAIEYzMTEJU2NoZW1h IGRlZmluaXRpb24gc3RhdGVtZW50CTAyCUNSRUFURSBUQUJMRSBmb3IgcGVyc2lzdGVudCBi YXNlIHRhYmxlcwlZRVMKIEYzMTEJU2NoZW1hIGRlZmluaXRpb24gc3RhdGVtZW50CTAzCUNS RUFURSBWSUVXCVlFUwkKIEYzMTEJU2NoZW1hIGRlZmluaXRpb24gc3RhdGVtZW50CTA0CUNS RUFURSBWSUVXOiBXSVRIIENIRUNLIE9QVElPTglZRVMJCiBGMzExCVNjaGVtYSBkZWZpbml0 aW9uIHN0YXRlbWVudAkwNQlHUkFOVCBzdGF0ZW1lbnQJWUVTCQotRjMxMglNRVJHRSBzdGF0 ZW1lbnQJCQlOTwljb25zaWRlciBJTlNFUlQgLi4uIE9OIENPTkZMSUNUIERPIFVQREFURQot RjMxMwlFbmhhbmNlZCBNRVJHRSBzdGF0ZW1lbnQJCQlOTwkKLUYzMTQJTUVSR0Ugc3RhdGVt ZW50IHdpdGggREVMRVRFIGJyYW5jaAkJCU5PCQorRjMxMglNRVJHRSBzdGF0ZW1lbnQJCQlZ RVMJYWxzbyBjb25zaWRlciBJTlNFUlQgLi4uIE9OIENPTkZMSUNUIERPIFVQREFURQorRjMx MwlFbmhhbmNlZCBNRVJHRSBzdGF0ZW1lbnQJCQlZRVMJCitGMzE0CU1FUkdFIHN0YXRlbWVu dCB3aXRoIERFTEVURSBicmFuY2gJCQlZRVMJCiBGMzIxCVVzZXIgYXV0aG9yaXphdGlvbgkJ CVlFUwkKIEYzNDEJVXNhZ2UgdGFibGVzCQkJWUVTCQogRjM2MQlTdWJwcm9ncmFtIHN1cHBv cnQJCQlZRVMJCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggZGU4MTM3OWRhMy4uOGRj NjY2MTg3OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtMTE4OCw2ICsxMTg4LDkg QEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywK IAkJCQljYXNlIENNRF9ERUxFVEU6CiAJCQkJCXBuYW1lID0gb3BlcmF0aW9uID0gIkRlbGV0 ZSI7CiAJCQkJCWJyZWFrOworCQkJCWNhc2UgQ01EX01FUkdFOgorCQkJCQlwbmFtZSA9IG9w ZXJhdGlvbiA9ICJNZXJnZSI7CisJCQkJCWJyZWFrOwogCQkJCWRlZmF1bHQ6CiAJCQkJCXBu YW1lID0gIj8/PyI7CiAJCQkJCWJyZWFrOwpAQCAtMzg3Nyw2ICszODgwLDExIEBAIHNob3df bW9kaWZ5dGFibGVfaW5mbyhNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLCBMaXN0ICphbmNl c3RvcnMsCiAJCQlvcGVyYXRpb24gPSAiRGVsZXRlIjsKIAkJCWZvcGVyYXRpb24gPSAiRm9y ZWlnbiBEZWxldGUiOwogCQkJYnJlYWs7CisJCWNhc2UgQ01EX01FUkdFOgorCQkJb3BlcmF0 aW9uID0gIk1lcmdlIjsKKwkJCS8qIFhYWCB1bnN1cHBvcnRlZCBmb3Igbm93LCBidXQgYXZv aWQgY29tcGlsZXIgbm9pc2UgKi8KKwkJCWZvcGVyYXRpb24gPSAiRm9yZWlnbiBNZXJnZSI7 CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCW9wZXJhdGlvbiA9ICI/Pz8iOwogCQkJZm9w ZXJhdGlvbiA9ICJGb3JlaWduID8/PyI7CkBAIC0zOTk5LDYgKzQwMDcsMzMgQEAgc2hvd19t b2RpZnl0YWJsZV9pbmZvKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsIExpc3QgKmFuY2Vz dG9ycywKIAkJCQkJCQkJIG90aGVyX3BhdGgsIDAsIGVzKTsKIAkJfQogCX0KKwllbHNlIGlm IChub2RlLT5vcGVyYXRpb24gPT0gQ01EX01FUkdFKQorCXsKKwkJLyogRVhQTEFJTiBBTkFM WVpFIGRpc3BsYXkgb2YgdHVwbGVzIHByb2Nlc3NlZCAqLworCQlpZiAoZXMtPmFuYWx5emUg JiYgbXRzdGF0ZS0+cHMuaW5zdHJ1bWVudCkKKwkJeworCQkJZG91YmxlCQl0b3RhbDsKKwkJ CWRvdWJsZQkJaW5zZXJ0X3BhdGg7CisJCQlkb3VibGUJCXVwZGF0ZV9wYXRoOworCQkJZG91 YmxlCQlkZWxldGVfcGF0aDsKKwkJCWRvdWJsZQkJc2tpcHBlZF9wYXRoOworCisJCQlJbnN0 ckVuZExvb3Aob3V0ZXJQbGFuU3RhdGUobXRzdGF0ZSktPmluc3RydW1lbnQpOworCisJCQkv KiBjb3VudCB0aGUgbnVtYmVyIG9mIHNvdXJjZSByb3dzICovCisJCQl0b3RhbCA9IG91dGVy UGxhblN0YXRlKG10c3RhdGUpLT5pbnN0cnVtZW50LT5udHVwbGVzOworCQkJaW5zZXJ0X3Bh dGggPSBtdHN0YXRlLT5wcy5pbnN0cnVtZW50LT5uZmlsdGVyZWQxOworCQkJdXBkYXRlX3Bh dGggPSBtdHN0YXRlLT5wcy5pbnN0cnVtZW50LT5uZmlsdGVyZWQyOworCQkJZGVsZXRlX3Bh dGggPSBtdHN0YXRlLT5wcy5pbnN0cnVtZW50LT5uZmlsdGVyZWQzOworCQkJc2tpcHBlZF9w YXRoID0gdG90YWwgLSBpbnNlcnRfcGF0aCAtIHVwZGF0ZV9wYXRoIC0gZGVsZXRlX3BhdGg7 CisJCQlBc3NlcnQoc2tpcHBlZF9wYXRoID49IDApOworCisJCQlFeHBsYWluUHJvcGVydHlG bG9hdCgiVHVwbGVzIEluc2VydGVkIiwgTlVMTCwgaW5zZXJ0X3BhdGgsIDAsIGVzKTsKKwkJ CUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KCJUdXBsZXMgVXBkYXRlZCIsIE5VTEwsIHVwZGF0ZV9w YXRoLCAwLCBlcyk7CisJCQlFeHBsYWluUHJvcGVydHlGbG9hdCgiVHVwbGVzIERlbGV0ZWQi LCBOVUxMLCBkZWxldGVfcGF0aCwgMCwgZXMpOworCQkJRXhwbGFpblByb3BlcnR5RmxvYXQo IlR1cGxlcyBTa2lwcGVkIiwgTlVMTCwgc2tpcHBlZF9wYXRoLCAwLCBlcyk7CisJCX0KKwl9 CiAKIAlpZiAobGFiZWx0YXJnZXRzKQogCQlFeHBsYWluQ2xvc2VHcm91cCgiVGFyZ2V0IFRh YmxlcyIsICJUYXJnZXQgVGFibGVzIiwgZmFsc2UsIGVzKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBh cmUuYwppbmRleCBkY2UzMGFlZDZjLi44ZGVkZTkxYTI3IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJl cGFyZS5jCkBAIC0xNDIsNiArMTQyLDcgQEAgUHJlcGFyZVF1ZXJ5KFBhcnNlU3RhdGUgKnBz dGF0ZSwgUHJlcGFyZVN0bXQgKnN0bXQsCiAJCWNhc2UgQ01EX0lOU0VSVDoKIAkJY2FzZSBD TURfVVBEQVRFOgogCQljYXNlIENNRF9ERUxFVEU6CisJCWNhc2UgQ01EX01FUkdFOgogCQkJ LyogT0sgKi8KIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5j CmluZGV4IDY4YWUxZTkzY2UuLjk1ZTYxNmMzNjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2Vy LmMKQEAgLTg0LDcgKzg0LDggQEAgc3RhdGljIGJvb2wgR2V0VHVwbGVGb3JUcmlnZ2VyKEVT dGF0ZSAqZXN0YXRlLAogCQkJCQkJCSAgIEl0ZW1Qb2ludGVyIHRpZCwKIAkJCQkJCQkgICBM b2NrVHVwbGVNb2RlIGxvY2ttb2RlLAogCQkJCQkJCSAgIFR1cGxlVGFibGVTbG90ICpvbGRz bG90LAotCQkJCQkJCSAgIFR1cGxlVGFibGVTbG90ICoqbmV3U2xvdCk7CisJCQkJCQkJICAg VHVwbGVUYWJsZVNsb3QgKipuZXdTbG90LAorCQkJCQkJCSAgIFRNX0ZhaWx1cmVEYXRhICp0 bWZwZCk7CiBzdGF0aWMgYm9vbCBUcmlnZ2VyRW5hYmxlZChFU3RhdGUgKmVzdGF0ZSwgUmVz dWx0UmVsSW5mbyAqcmVsaW5mbywKIAkJCQkJCSAgIFRyaWdnZXIgKnRyaWdnZXIsIFRyaWdn ZXJFdmVudCBldmVudCwKIAkJCQkJCSAgIEJpdG1hcHNldCAqbW9kaWZpZWRDb2xzLApAQCAt MjY5OCw3ICsyNjk5LDggQEAgRXhlY0JSRGVsZXRlVHJpZ2dlcnMoRVN0YXRlICplc3RhdGUs IEVQUVN0YXRlICplcHFzdGF0ZSwKIAkJCQkJIFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCiAJ CQkJCSBJdGVtUG9pbnRlciB0dXBsZWlkLAogCQkJCQkgSGVhcFR1cGxlIGZkd190cmlndHVw bGUsCi0JCQkJCSBUdXBsZVRhYmxlU2xvdCAqKmVwcXNsb3QpCisJCQkJCSBUdXBsZVRhYmxl U2xvdCAqKmVwcXNsb3QsCisJCQkJCSBUTV9GYWlsdXJlRGF0YSAqdG1mZCkKIHsKIAlUdXBs ZVRhYmxlU2xvdCAqc2xvdCA9IEV4ZWNHZXRUcmlnZ2VyT2xkU2xvdChlc3RhdGUsIHJlbGlu Zm8pOwogCVRyaWdnZXJEZXNjICp0cmlnZGVzYyA9IHJlbGluZm8tPnJpX1RyaWdEZXNjOwpA QCAtMjcxNCw3ICsyNzE2LDggQEAgRXhlY0JSRGVsZXRlVHJpZ2dlcnMoRVN0YXRlICplc3Rh dGUsIEVQUVN0YXRlICplcHFzdGF0ZSwKIAkJVHVwbGVUYWJsZVNsb3QgKmVwcXNsb3RfY2Fu ZGlkYXRlID0gTlVMTDsKIAogCQlpZiAoIUdldFR1cGxlRm9yVHJpZ2dlcihlc3RhdGUsIGVw cXN0YXRlLCByZWxpbmZvLCB0dXBsZWlkLAotCQkJCQkJCQlMb2NrVHVwbGVFeGNsdXNpdmUs IHNsb3QsICZlcHFzbG90X2NhbmRpZGF0ZSkpCisJCQkJCQkJCUxvY2tUdXBsZUV4Y2x1c2l2 ZSwgc2xvdCwgJmVwcXNsb3RfY2FuZGlkYXRlLAorCQkJCQkJCQl0bWZkKSkKIAkJCXJldHVy biBmYWxzZTsKIAogCQkvKgpAQCAtMjcyOSw3ICsyNzMyLDYgQEAgRXhlY0JSRGVsZXRlVHJp Z2dlcnMoRVN0YXRlICplc3RhdGUsIEVQUVN0YXRlICplcHFzdGF0ZSwKIAkJfQogCiAJCXRy aWd0dXBsZSA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xvdCwgdHJ1ZSwgJnNob3VsZF9m cmVlKTsKLQogCX0KIAllbHNlCiAJewpAQCAtMjc5OSw2ICsyODAxLDcgQEAgRXhlY0FSRGVs ZXRlVHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCiAJ CQkJCQkJICAgdHVwbGVpZCwKIAkJCQkJCQkgICBMb2NrVHVwbGVFeGNsdXNpdmUsCiAJCQkJ CQkJICAgc2xvdCwKKwkJCQkJCQkgICBOVUxMLAogCQkJCQkJCSAgIE5VTEwpOwogCQllbHNl CiAJCQlFeGVjRm9yY2VTdG9yZUhlYXBUdXBsZShmZHdfdHJpZ3R1cGxlLCBzbG90LCBmYWxz ZSk7CkBAIC0yOTM1LDcgKzI5MzgsOCBAQCBFeGVjQlJVcGRhdGVUcmlnZ2VycyhFU3RhdGUg KmVzdGF0ZSwgRVBRU3RhdGUgKmVwcXN0YXRlLAogCQkJCQkgUmVzdWx0UmVsSW5mbyAqcmVs aW5mbywKIAkJCQkJIEl0ZW1Qb2ludGVyIHR1cGxlaWQsCiAJCQkJCSBIZWFwVHVwbGUgZmR3 X3RyaWd0dXBsZSwKLQkJCQkJIFR1cGxlVGFibGVTbG90ICpuZXdzbG90KQorCQkJCQkgVHVw bGVUYWJsZVNsb3QgKm5ld3Nsb3QsCisJCQkJCSBUTV9GYWlsdXJlRGF0YSAqdG1mZCkKIHsK IAlUcmlnZ2VyRGVzYyAqdHJpZ2Rlc2MgPSByZWxpbmZvLT5yaV9UcmlnRGVzYzsKIAlUdXBs ZVRhYmxlU2xvdCAqb2xkc2xvdCA9IEV4ZWNHZXRUcmlnZ2VyT2xkU2xvdChlc3RhdGUsIHJl bGluZm8pOwpAQCAtMjk1OCw3ICsyOTYyLDggQEAgRXhlY0JSVXBkYXRlVHJpZ2dlcnMoRVN0 YXRlICplc3RhdGUsIEVQUVN0YXRlICplcHFzdGF0ZSwKIAogCQkvKiBnZXQgYSBjb3B5IG9m IHRoZSBvbi1kaXNrIHR1cGxlIHdlIGFyZSBwbGFubmluZyB0byB1cGRhdGUgKi8KIAkJaWYg KCFHZXRUdXBsZUZvclRyaWdnZXIoZXN0YXRlLCBlcHFzdGF0ZSwgcmVsaW5mbywgdHVwbGVp ZCwKLQkJCQkJCQkJbG9ja21vZGUsIG9sZHNsb3QsICZlcHFzbG90X2NhbmRpZGF0ZSkpCisJ CQkJCQkJCWxvY2ttb2RlLCBvbGRzbG90LCAmZXBxc2xvdF9jYW5kaWRhdGUsCisJCQkJCQkJ CXRtZmQpKQogCQkJcmV0dXJuIGZhbHNlOwkJLyogY2FuY2VsIHRoZSB1cGRhdGUgYWN0aW9u ICovCiAKIAkJLyoKQEAgLTMwOTIsNiArMzA5Nyw3IEBAIEV4ZWNBUlVwZGF0ZVRyaWdnZXJz KEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogCQkJCQkJCSAgIHR1 cGxlaWQsCiAJCQkJCQkJICAgTG9ja1R1cGxlRXhjbHVzaXZlLAogCQkJCQkJCSAgIG9sZHNs b3QsCisJCQkJCQkJICAgTlVMTCwKIAkJCQkJCQkgICBOVUxMKTsKIAkJZWxzZSBpZiAoZmR3 X3RyaWd0dXBsZSAhPSBOVUxMKQogCQkJRXhlY0ZvcmNlU3RvcmVIZWFwVHVwbGUoZmR3X3Ry aWd0dXBsZSwgb2xkc2xvdCwgZmFsc2UpOwpAQCAtMzIzOSw3ICszMjQ1LDggQEAgR2V0VHVw bGVGb3JUcmlnZ2VyKEVTdGF0ZSAqZXN0YXRlLAogCQkJCSAgIEl0ZW1Qb2ludGVyIHRpZCwK IAkJCQkgICBMb2NrVHVwbGVNb2RlIGxvY2ttb2RlLAogCQkJCSAgIFR1cGxlVGFibGVTbG90 ICpvbGRzbG90LAotCQkJCSAgIFR1cGxlVGFibGVTbG90ICoqZXBxc2xvdCkKKwkJCQkgICBU dXBsZVRhYmxlU2xvdCAqKmVwcXNsb3QsCisJCQkJICAgVE1fRmFpbHVyZURhdGEgKnRtZmRw KQogewogCVJlbGF0aW9uCXJlbGF0aW9uID0gcmVsaW5mby0+cmlfUmVsYXRpb25EZXNjOwog CkBAIC0zMjY1LDYgKzMyNzIsMTAgQEAgR2V0VHVwbGVGb3JUcmlnZ2VyKEVTdGF0ZSAqZXN0 YXRlLAogCQkJCQkJCQlsb2NrZmxhZ3MsCiAJCQkJCQkJCSZ0bWZkKTsKIAorCQkvKiBMZXQg dGhlIGNhbGxlciBrbm93IGFib3V0IHRoZSBzdGF0dXMgb2YgdGhpcyBvcGVyYXRpb24gKi8K KwkJaWYgKHRtZmRwKQorCQkJKnRtZmRwID0gdG1mZDsKKwogCQlzd2l0Y2ggKHRlc3QpCiAJ CXsKIAkJCWNhc2UgVE1fU2VsZk1vZGlmaWVkOgpAQCAtMzc2Miw4ICszNzczLDIzIEBAIHN0 cnVjdCBBZnRlclRyaWdnZXJzVGFibGVEYXRhCiAJYm9vbAkJYmVmb3JlX3RyaWdfZG9uZTsJ LyogZGlkIHdlIGFscmVhZHkgcXVldWUgQlMgdHJpZ2dlcnM/ICovCiAJYm9vbAkJYWZ0ZXJf dHJpZ19kb25lOwkvKiBkaWQgd2UgYWxyZWFkeSBxdWV1ZSBBUyB0cmlnZ2Vycz8gKi8KIAlB ZnRlclRyaWdnZXJFdmVudExpc3QgYWZ0ZXJfdHJpZ19ldmVudHM7CS8qIGlmIHNvLCBzYXZl ZCBsaXN0IHBvaW50ZXIgKi8KLQlUdXBsZXN0b3Jlc3RhdGUgKm9sZF90dXBsZXN0b3JlOwkv KiAib2xkIiB0cmFuc2l0aW9uIHRhYmxlLCBpZiBhbnkgKi8KLQlUdXBsZXN0b3Jlc3RhdGUg Km5ld190dXBsZXN0b3JlOwkvKiAibmV3IiB0cmFuc2l0aW9uIHRhYmxlLCBpZiBhbnkgKi8K KworCS8qCisJICogV2UgbWFpbnRhaW4gc2VwYXJhdGUgdHJhbnNpdGlvbiB0YWJsZXMgZm9y IFVQREFURS9JTlNFUlQvREVMRVRFIHNpbmNlCisJICogTUVSR0UgY2FuIHJ1biBhbGwgdGhy ZWUgYWN0aW9ucyBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQuIE5vdGUgdGhhdCBVUERBVEUKKwkg KiBuZWVkcyBib3RoIG9sZCBhbmQgbmV3IHRyYW5zaXRpb24gdGFibGVzIHdoZXJlYXMgSU5T RVJUIG5lZWRzIG9ubHkgbmV3LAorCSAqIGFuZCBERUxFVEUgbmVlZHMgb25seSBvbGQuCisJ ICovCisKKwkvKiAib2xkIiB0cmFuc2l0aW9uIHRhYmxlIGZvciBVUERBVEUsIGlmIGFueSAq LworCVR1cGxlc3RvcmVzdGF0ZSAqb2xkX3VwZF90dXBsZXN0b3JlOworCS8qICJuZXciIHRy YW5zaXRpb24gdGFibGUgZm9yIFVQREFURSwgaWYgYW55ICovCisJVHVwbGVzdG9yZXN0YXRl ICpuZXdfdXBkX3R1cGxlc3RvcmU7CisJLyogIm9sZCIgdHJhbnNpdGlvbiB0YWJsZSBmb3Ig REVMRVRFLCBpZiBhbnkgKi8KKwlUdXBsZXN0b3Jlc3RhdGUgKm9sZF9kZWxfdHVwbGVzdG9y ZTsKKwkvKiAibmV3IiB0cmFuc2l0aW9uIHRhYmxlIElOU0VSVCwgaWYgYW55ICovCisJVHVw bGVzdG9yZXN0YXRlICpuZXdfaW5zX3R1cGxlc3RvcmU7CisKIAlUdXBsZVRhYmxlU2xvdCAq c3RvcmVzbG90OwkvKiBmb3IgY29udmVydGluZyB0byB0dXBsZXN0b3JlJ3MgZm9ybWF0ICov CiB9OwogCkBAIC00MjQ0LDEzICs0MjcwLDE5IEBAIEFmdGVyVHJpZ2dlckV4ZWN1dGUoRVN0 YXRlICplc3RhdGUsCiAJewogCQlpZiAoTG9jVHJpZ2dlckRhdGEudGdfdHJpZ2dlci0+dGdv bGR0YWJsZSkKIAkJewotCQkJTG9jVHJpZ2dlckRhdGEudGdfb2xkdGFibGUgPSBldnRzaGFy ZWQtPmF0c190YWJsZS0+b2xkX3R1cGxlc3RvcmU7CisJCQlpZiAoVFJJR0dFUl9GSVJFRF9C WV9VUERBVEUoZXZ0c2hhcmVkLT5hdHNfZXZlbnQpKQorCQkJCUxvY1RyaWdnZXJEYXRhLnRn X29sZHRhYmxlID0gZXZ0c2hhcmVkLT5hdHNfdGFibGUtPm9sZF91cGRfdHVwbGVzdG9yZTsK KwkJCWVsc2UKKwkJCQlMb2NUcmlnZ2VyRGF0YS50Z19vbGR0YWJsZSA9IGV2dHNoYXJlZC0+ YXRzX3RhYmxlLT5vbGRfZGVsX3R1cGxlc3RvcmU7CiAJCQlldnRzaGFyZWQtPmF0c190YWJs ZS0+Y2xvc2VkID0gdHJ1ZTsKIAkJfQogCiAJCWlmIChMb2NUcmlnZ2VyRGF0YS50Z190cmln Z2VyLT50Z25ld3RhYmxlKQogCQl7Ci0JCQlMb2NUcmlnZ2VyRGF0YS50Z19uZXd0YWJsZSA9 IGV2dHNoYXJlZC0+YXRzX3RhYmxlLT5uZXdfdHVwbGVzdG9yZTsKKwkJCWlmIChUUklHR0VS X0ZJUkVEX0JZX0lOU0VSVChldnRzaGFyZWQtPmF0c19ldmVudCkpCisJCQkJTG9jVHJpZ2dl ckRhdGEudGdfbmV3dGFibGUgPSBldnRzaGFyZWQtPmF0c190YWJsZS0+bmV3X2luc190dXBs ZXN0b3JlOworCQkJZWxzZQorCQkJCUxvY1RyaWdnZXJEYXRhLnRnX25ld3RhYmxlID0gZXZ0 c2hhcmVkLT5hdHNfdGFibGUtPm5ld191cGRfdHVwbGVzdG9yZTsKIAkJCWV2dHNoYXJlZC0+ YXRzX3RhYmxlLT5jbG9zZWQgPSB0cnVlOwogCQl9CiAJfQpAQCAtNDYzOSw4ICs0NjcxLDEw IEBAIFRyYW5zaXRpb25DYXB0dXJlU3RhdGUgKgogTWFrZVRyYW5zaXRpb25DYXB0dXJlU3Rh dGUoVHJpZ2dlckRlc2MgKnRyaWdkZXNjLCBPaWQgcmVsaWQsIENtZFR5cGUgY21kVHlwZSkK IHsKIAlUcmFuc2l0aW9uQ2FwdHVyZVN0YXRlICpzdGF0ZTsKLQlib29sCQluZWVkX29sZCwK LQkJCQluZWVkX25ldzsKKwlib29sCQluZWVkX29sZF91cGQsCisJCQkJbmVlZF9uZXdfdXBk LAorCQkJCW5lZWRfb2xkX2RlbCwKKwkJCQluZWVkX25ld19pbnM7CiAJQWZ0ZXJUcmlnZ2Vy c1RhYmxlRGF0YSAqdGFibGU7CiAJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAJUmVzb3VyY2VP d25lciBzYXZlUmVzb3VyY2VPd25lcjsKQEAgLTQ2NTIsMjMgKzQ2ODYsMzEgQEAgTWFrZVRy YW5zaXRpb25DYXB0dXJlU3RhdGUoVHJpZ2dlckRlc2MgKnRyaWdkZXNjLCBPaWQgcmVsaWQs IENtZFR5cGUgY21kVHlwZSkKIAlzd2l0Y2ggKGNtZFR5cGUpCiAJewogCQljYXNlIENNRF9J TlNFUlQ6Ci0JCQluZWVkX29sZCA9IGZhbHNlOwotCQkJbmVlZF9uZXcgPSB0cmlnZGVzYy0+ dHJpZ19pbnNlcnRfbmV3X3RhYmxlOworCQkJbmVlZF9vbGRfdXBkID0gbmVlZF9vbGRfZGVs ID0gbmVlZF9uZXdfdXBkID0gZmFsc2U7CisJCQluZWVkX25ld19pbnMgPSB0cmlnZGVzYy0+ dHJpZ19pbnNlcnRfbmV3X3RhYmxlOwogCQkJYnJlYWs7CiAJCWNhc2UgQ01EX1VQREFURToK LQkJCW5lZWRfb2xkID0gdHJpZ2Rlc2MtPnRyaWdfdXBkYXRlX29sZF90YWJsZTsKLQkJCW5l ZWRfbmV3ID0gdHJpZ2Rlc2MtPnRyaWdfdXBkYXRlX25ld190YWJsZTsKKwkJCW5lZWRfb2xk X3VwZCA9IHRyaWdkZXNjLT50cmlnX3VwZGF0ZV9vbGRfdGFibGU7CisJCQluZWVkX25ld191 cGQgPSB0cmlnZGVzYy0+dHJpZ191cGRhdGVfbmV3X3RhYmxlOworCQkJbmVlZF9vbGRfZGVs ID0gbmVlZF9uZXdfaW5zID0gZmFsc2U7CiAJCQlicmVhazsKIAkJY2FzZSBDTURfREVMRVRF OgotCQkJbmVlZF9vbGQgPSB0cmlnZGVzYy0+dHJpZ19kZWxldGVfb2xkX3RhYmxlOwotCQkJ bmVlZF9uZXcgPSBmYWxzZTsKKwkJCW5lZWRfb2xkX2RlbCA9IHRyaWdkZXNjLT50cmlnX2Rl bGV0ZV9vbGRfdGFibGU7CisJCQluZWVkX29sZF91cGQgPSBuZWVkX25ld191cGQgPSBuZWVk X25ld19pbnMgPSBmYWxzZTsKKwkJCWJyZWFrOworCQljYXNlIENNRF9NRVJHRToKKwkJCW5l ZWRfb2xkX3VwZCA9IHRyaWdkZXNjLT50cmlnX3VwZGF0ZV9vbGRfdGFibGU7CisJCQluZWVk X25ld191cGQgPSB0cmlnZGVzYy0+dHJpZ191cGRhdGVfbmV3X3RhYmxlOworCQkJbmVlZF9v bGRfZGVsID0gdHJpZ2Rlc2MtPnRyaWdfZGVsZXRlX29sZF90YWJsZTsKKwkJCW5lZWRfbmV3 X2lucyA9IHRyaWdkZXNjLT50cmlnX2luc2VydF9uZXdfdGFibGU7CiAJCQlicmVhazsKIAkJ ZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIENtZFR5cGU6ICVkIiwgKGlu dCkgY21kVHlwZSk7Ci0JCQluZWVkX29sZCA9IG5lZWRfbmV3ID0gZmFsc2U7CS8qIGtlZXAg Y29tcGlsZXIgcXVpZXQgKi8KKwkJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KKwkJCW5l ZWRfb2xkX3VwZCA9IG5lZWRfbmV3X3VwZCA9IG5lZWRfb2xkX2RlbCA9IG5lZWRfbmV3X2lu cyA9IGZhbHNlOwogCQkJYnJlYWs7CiAJfQotCWlmICghbmVlZF9vbGQgJiYgIW5lZWRfbmV3 KQorCWlmICghbmVlZF9vbGRfdXBkICYmICFuZWVkX25ld191cGQgJiYgIW5lZWRfbmV3X2lu cyAmJiAhbmVlZF9vbGRfZGVsKQogCQlyZXR1cm4gTlVMTDsKIAogCS8qIENoZWNrIHN0YXRl LCBsaWtlIEFmdGVyVHJpZ2dlclNhdmVFdmVudC4gKi8KQEAgLTQ2OTgsMTAgKzQ3NDAsMTQg QEAgTWFrZVRyYW5zaXRpb25DYXB0dXJlU3RhdGUoVHJpZ2dlckRlc2MgKnRyaWdkZXNjLCBP aWQgcmVsaWQsIENtZFR5cGUgY21kVHlwZSkKIAlzYXZlUmVzb3VyY2VPd25lciA9IEN1cnJl bnRSZXNvdXJjZU93bmVyOwogCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gQ3VyVHJhbnNhY3Rp b25SZXNvdXJjZU93bmVyOwogCi0JaWYgKG5lZWRfb2xkICYmIHRhYmxlLT5vbGRfdHVwbGVz dG9yZSA9PSBOVUxMKQotCQl0YWJsZS0+b2xkX3R1cGxlc3RvcmUgPSB0dXBsZXN0b3JlX2Jl Z2luX2hlYXAoZmFsc2UsIGZhbHNlLCB3b3JrX21lbSk7Ci0JaWYgKG5lZWRfbmV3ICYmIHRh YmxlLT5uZXdfdHVwbGVzdG9yZSA9PSBOVUxMKQotCQl0YWJsZS0+bmV3X3R1cGxlc3RvcmUg PSB0dXBsZXN0b3JlX2JlZ2luX2hlYXAoZmFsc2UsIGZhbHNlLCB3b3JrX21lbSk7CisJaWYg KG5lZWRfb2xkX3VwZCAmJiB0YWJsZS0+b2xkX3VwZF90dXBsZXN0b3JlID09IE5VTEwpCisJ CXRhYmxlLT5vbGRfdXBkX3R1cGxlc3RvcmUgPSB0dXBsZXN0b3JlX2JlZ2luX2hlYXAoZmFs c2UsIGZhbHNlLCB3b3JrX21lbSk7CisJaWYgKG5lZWRfbmV3X3VwZCAmJiB0YWJsZS0+bmV3 X3VwZF90dXBsZXN0b3JlID09IE5VTEwpCisJCXRhYmxlLT5uZXdfdXBkX3R1cGxlc3RvcmUg PSB0dXBsZXN0b3JlX2JlZ2luX2hlYXAoZmFsc2UsIGZhbHNlLCB3b3JrX21lbSk7CisJaWYg KG5lZWRfb2xkX2RlbCAmJiB0YWJsZS0+b2xkX2RlbF90dXBsZXN0b3JlID09IE5VTEwpCisJ CXRhYmxlLT5vbGRfZGVsX3R1cGxlc3RvcmUgPSB0dXBsZXN0b3JlX2JlZ2luX2hlYXAoZmFs c2UsIGZhbHNlLCB3b3JrX21lbSk7CisJaWYgKG5lZWRfbmV3X2lucyAmJiB0YWJsZS0+bmV3 X2luc190dXBsZXN0b3JlID09IE5VTEwpCisJCXRhYmxlLT5uZXdfaW5zX3R1cGxlc3RvcmUg PSB0dXBsZXN0b3JlX2JlZ2luX2hlYXAoZmFsc2UsIGZhbHNlLCB3b3JrX21lbSk7CiAKIAlD dXJyZW50UmVzb3VyY2VPd25lciA9IHNhdmVSZXNvdXJjZU93bmVyOwogCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjeHQpOwpAQCAtNDg5MCwxMiArNDkzNiwyMCBAQCBBZnRlclRyaWdn ZXJGcmVlUXVlcnkoQWZ0ZXJUcmlnZ2Vyc1F1ZXJ5RGF0YSAqcXMpCiAJewogCQlBZnRlclRy aWdnZXJzVGFibGVEYXRhICp0YWJsZSA9IChBZnRlclRyaWdnZXJzVGFibGVEYXRhICopIGxm aXJzdChsYyk7CiAKLQkJdHMgPSB0YWJsZS0+b2xkX3R1cGxlc3RvcmU7Ci0JCXRhYmxlLT5v bGRfdHVwbGVzdG9yZSA9IE5VTEw7CisJCXRzID0gdGFibGUtPm9sZF91cGRfdHVwbGVzdG9y ZTsKKwkJdGFibGUtPm9sZF91cGRfdHVwbGVzdG9yZSA9IE5VTEw7CiAJCWlmICh0cykKIAkJ CXR1cGxlc3RvcmVfZW5kKHRzKTsKLQkJdHMgPSB0YWJsZS0+bmV3X3R1cGxlc3RvcmU7Ci0J CXRhYmxlLT5uZXdfdHVwbGVzdG9yZSA9IE5VTEw7CisJCXRzID0gdGFibGUtPm5ld191cGRf dHVwbGVzdG9yZTsKKwkJdGFibGUtPm5ld191cGRfdHVwbGVzdG9yZSA9IE5VTEw7CisJCWlm ICh0cykKKwkJCXR1cGxlc3RvcmVfZW5kKHRzKTsKKwkJdHMgPSB0YWJsZS0+b2xkX2RlbF90 dXBsZXN0b3JlOworCQl0YWJsZS0+b2xkX2RlbF90dXBsZXN0b3JlID0gTlVMTDsKKwkJaWYg KHRzKQorCQkJdHVwbGVzdG9yZV9lbmQodHMpOworCQl0cyA9IHRhYmxlLT5uZXdfaW5zX3R1 cGxlc3RvcmU7CisJCXRhYmxlLT5uZXdfaW5zX3R1cGxlc3RvcmUgPSBOVUxMOwogCQlpZiAo dHMpCiAJCQl0dXBsZXN0b3JlX2VuZCh0cyk7CiAJCWlmICh0YWJsZS0+c3RvcmVzbG90KQpA QCAtNTY3MCwzNyArNTcyNCw0NiBAQCBBZnRlclRyaWdnZXJHZXRUcmFuc2l0aW9uVGFibGUo aW50IGV2ZW50LAogCQkJCQkJCSAgIFR1cGxlVGFibGVTbG90ICpuZXdzbG90LAogCQkJCQkJ CSAgIFRyYW5zaXRpb25DYXB0dXJlU3RhdGUgKnRyYW5zaXRpb25fY2FwdHVyZSkKIHsKLQlU dXBsZXN0b3Jlc3RhdGUgKnR1cGxlc3RvcmU7CisJVHVwbGVzdG9yZXN0YXRlICp0dXBsZXN0 b3JlID0gTlVMTDsKIAlib29sCQlkZWxldGVfb2xkX3RhYmxlID0gdHJhbnNpdGlvbl9jYXB0 dXJlLT50Y3NfZGVsZXRlX29sZF90YWJsZTsKIAlib29sCQl1cGRhdGVfb2xkX3RhYmxlID0g dHJhbnNpdGlvbl9jYXB0dXJlLT50Y3NfdXBkYXRlX29sZF90YWJsZTsKIAlib29sCQl1cGRh dGVfbmV3X3RhYmxlID0gdHJhbnNpdGlvbl9jYXB0dXJlLT50Y3NfdXBkYXRlX25ld190YWJs ZTsKIAlib29sCQlpbnNlcnRfbmV3X3RhYmxlID0gdHJhbnNpdGlvbl9jYXB0dXJlLT50Y3Nf aW5zZXJ0X25ld190YWJsZTsKIAogCS8qCi0JICogRm9yIElOU0VSVCBldmVudHMgTkVXIHNo b3VsZCBiZSBub24tTlVMTCwgZm9yIERFTEVURSBldmVudHMgT0xECi0JICogc2hvdWxkIGJl IG5vbi1OVUxMLCB3aGVyZWFzIGZvciBVUERBVEUgZXZlbnRzIG5vcm1hbGx5IGJvdGggT0xE IGFuZAotCSAqIE5FVyBhcmUgbm9uLU5VTEwuICBCdXQgZm9yIFVQREFURSBldmVudHMgZmly ZWQgZm9yIGNhcHR1cmluZwotCSAqIHRyYW5zaXRpb24gdHVwbGVzIGR1cmluZyBVUERBVEUg cGFydGl0aW9uLWtleSByb3cgbW92ZW1lbnQsIE9MRCBpcwotCSAqIE5VTEwgd2hlbiB0aGUg ZXZlbnQgaXMgZm9yIGEgcm93IGJlaW5nIGluc2VydGVkLCB3aGVyZWFzIE5FVyBpcwotCSAq IE5VTEwgd2hlbiB0aGUgZXZlbnQgaXMgZm9yIGEgcm93IGJlaW5nIGRlbGV0ZWQuCisJICog Rm9yIElOU0VSVCBldmVudHMsIE5FVyBzaG91bGQgYmUgbm9uLU5VTEw7IGZvciBERUxFVEUg ZXZlbnRzLCBPTEQKKwkgKiBzaG91bGQgYmUgbm9uLU5VTEw7IGZvciBVUERBVEUgZXZlbnRz LCBub3JtYWxseSBib3RoIE9MRCBhbmQgTkVXIGFyZQorCSAqIG5vbi1OVUxMIC0tIGJ1dCBm b3IgVVBEQVRFIGV2ZW50cyBmaXJlZCBmb3IgY2FwdHVyaW5nIHRyYW5zaXRpb24gdHVwbGVz CisJICogZHVyaW5nIFVQREFURSBwYXJ0aXRpb24ta2V5IHJvdyBtb3ZlbWVudCwgT0xEIGlz IE5VTEwgd2hlbiB0aGUgZXZlbnQgaXMKKwkgKiBmb3IgYSByb3cgYmVpbmcgaW5zZXJ0ZWQs IHdoZXJlYXMgTkVXIGlzIE5VTEwgd2hlbiB0aGUgZXZlbnQgaXMgZm9yIGEKKwkgKiByb3cg YmVpbmcgZGVsZXRlZC4KIAkgKi8KIAlBc3NlcnQoIShldmVudCA9PSBUUklHR0VSX0VWRU5U X0RFTEVURSAmJiBkZWxldGVfb2xkX3RhYmxlICYmCiAJCQkgVHVwSXNOdWxsKG9sZHNsb3Qp KSk7CiAJQXNzZXJ0KCEoZXZlbnQgPT0gVFJJR0dFUl9FVkVOVF9JTlNFUlQgJiYgaW5zZXJ0 X25ld190YWJsZSAmJgogCQkJIFR1cElzTnVsbChuZXdzbG90KSkpOwogCi0JQXNzZXJ0KFR1 cElzTnVsbChvbGRzbG90KSBeIFR1cElzTnVsbChuZXdzbG90KSk7CisJLyoKKwkgKiBXZSdy ZSBjYWxsZWQgZWl0aGVyIGZvciB0aGUgTkVXIG9yIHRoZSBPTEQgdHVwbGVzLCBidXQgbm90 IGJvdGggYXQgdGhlCisJICogc2FtZSB0aW1lLgorCSAqLworCUFzc2VydCgob2xkc2xvdCAh PSBOVUxMKSBeIChuZXdzbG90ICE9IE5VTEwpKTsKIAotCWlmICghVHVwSXNOdWxsKG9sZHNs b3QpICYmCi0JCSgoZXZlbnQgPT0gVFJJR0dFUl9FVkVOVF9ERUxFVEUgJiYgZGVsZXRlX29s ZF90YWJsZSkgfHwKLQkJIChldmVudCA9PSBUUklHR0VSX0VWRU5UX1VQREFURSAmJiB1cGRh dGVfb2xkX3RhYmxlKSkpCi0JCXR1cGxlc3RvcmUgPSB0cmFuc2l0aW9uX2NhcHR1cmUtPnRj c19wcml2YXRlLT5vbGRfdHVwbGVzdG9yZTsKLQllbHNlIGlmICghVHVwSXNOdWxsKG5ld3Ns b3QpICYmCi0JCQkgKChldmVudCA9PSBUUklHR0VSX0VWRU5UX0lOU0VSVCAmJiBpbnNlcnRf bmV3X3RhYmxlKSB8fAotCQkJICAoZXZlbnQgPT0gVFJJR0dFUl9FVkVOVF9VUERBVEUgJiYg dXBkYXRlX25ld190YWJsZSkpKQotCQl0dXBsZXN0b3JlID0gdHJhbnNpdGlvbl9jYXB0dXJl LT50Y3NfcHJpdmF0ZS0+bmV3X3R1cGxlc3RvcmU7Ci0JZWxzZQotCQl0dXBsZXN0b3JlID0g TlVMTDsKKwlpZiAob2xkc2xvdCAhPSBOVUxMKQorCXsKKwkJaWYgKGV2ZW50ID09IFRSSUdH RVJfRVZFTlRfREVMRVRFICYmIGRlbGV0ZV9vbGRfdGFibGUpCisJCQl0dXBsZXN0b3JlID0g dHJhbnNpdGlvbl9jYXB0dXJlLT50Y3NfcHJpdmF0ZS0+b2xkX2RlbF90dXBsZXN0b3JlOwor CQllbHNlIGlmIChldmVudCA9PSBUUklHR0VSX0VWRU5UX1VQREFURSAmJiB1cGRhdGVfb2xk X3RhYmxlKQorCQkJdHVwbGVzdG9yZSA9IHRyYW5zaXRpb25fY2FwdHVyZS0+dGNzX3ByaXZh dGUtPm9sZF91cGRfdHVwbGVzdG9yZTsKKwl9CisKKwlpZiAobmV3c2xvdCAhPSBOVUxMKQor CXsKKwkJaWYgKGV2ZW50ID09IFRSSUdHRVJfRVZFTlRfSU5TRVJUICYmIGluc2VydF9uZXdf dGFibGUpCisJCQl0dXBsZXN0b3JlID0gdHJhbnNpdGlvbl9jYXB0dXJlLT50Y3NfcHJpdmF0 ZS0+bmV3X2luc190dXBsZXN0b3JlOworCQllbHNlIGlmIChldmVudCA9PSBUUklHR0VSX0VW RU5UX1VQREFURSAmJiB1cGRhdGVfbmV3X3RhYmxlKQorCQkJdHVwbGVzdG9yZSA9IHRyYW5z aXRpb25fY2FwdHVyZS0+dGNzX3ByaXZhdGUtPm5ld191cGRfdHVwbGVzdG9yZTsKKwl9CiAK IAlyZXR1cm4gdHVwbGVzdG9yZTsKIH0KQEAgLTU3OTgsNiArNTg2MSw3IEBAIEFmdGVyVHJp Z2dlclNhdmVFdmVudChFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywK IAkgKi8KIAlpZiAocm93X3RyaWdnZXIgJiYgdHJhbnNpdGlvbl9jYXB0dXJlICE9IE5VTEwp CiAJeworCQlUdXBsZVRhYmxlU2xvdCAqb3JpZ2luYWxfaW5zZXJ0X3R1cGxlID0gdHJhbnNp dGlvbl9jYXB0dXJlLT50Y3Nfb3JpZ2luYWxfaW5zZXJ0X3R1cGxlOwogCiAJCS8qCiAJCSAq IENhcHR1cmUgdGhlIG9sZCB0dXBsZSBpbiB0aGUgYXBwcm9wcmlhdGUgdHJhbnNpdGlvbiB0 YWJsZSBiYXNlZCBvbgpAQCAtNTgyOCwxNyArNTg5MiwxNSBAQCBBZnRlclRyaWdnZXJTYXZl RXZlbnQoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCiAJCQkJCQkJ CQkJCQkJCQluZXdzbG90LAogCQkJCQkJCQkJCQkJCQkJdHJhbnNpdGlvbl9jYXB0dXJlKTsK IAkJCVRyYW5zaXRpb25UYWJsZUFkZFR1cGxlKGVzdGF0ZSwgdHJhbnNpdGlvbl9jYXB0dXJl LCByZWxpbmZvLAotCQkJCQkJCQkJbmV3c2xvdCwKLQkJCQkJCQkJCXRyYW5zaXRpb25fY2Fw dHVyZS0+dGNzX29yaWdpbmFsX2luc2VydF90dXBsZSwKLQkJCQkJCQkJCW5ld190dXBsZXN0 b3JlKTsKKwkJCQkJCQkJCW5ld3Nsb3QsIG9yaWdpbmFsX2luc2VydF90dXBsZSwgbmV3X3R1 cGxlc3RvcmUpOwogCQl9CiAKIAkJLyoKIAkJICogSWYgdHJhbnNpdGlvbiB0YWJsZXMgYXJl IHRoZSBvbmx5IHJlYXNvbiB3ZSdyZSBoZXJlLCByZXR1cm4uIEFzCiAJCSAqIG1lbnRpb25l ZCBhYm92ZSwgd2UgY2FuIGFsc28gYmUgaGVyZSBkdXJpbmcgdXBkYXRlIHR1cGxlIHJvdXRp bmcgaW4KIAkJICogcHJlc2VuY2Ugb2YgdHJhbnNpdGlvbiB0YWJsZXMsIGluIHdoaWNoIGNh c2UgdGhpcyBmdW5jdGlvbiBpcwotCQkgKiBjYWxsZWQgc2VwYXJhdGVseSBmb3Igb2xkdHVw IGFuZCBuZXd0dXAsIHNvIHdlIGV4cGVjdCBleGFjdGx5IG9uZQotCQkgKiBvZiB0aGVtIHRv IGJlIE5VTEwuCisJCSAqIGNhbGxlZCBzZXBhcmF0ZWx5IGZvciBPTEQgYW5kIE5FVywgc28g d2UgZXhwZWN0IGV4YWN0bHkgb25lIG9mIHRoZW0KKwkJICogdG8gYmUgTlVMTC4KIAkJICov CiAJCWlmICh0cmlnZGVzYyA9PSBOVUxMIHx8CiAJCQkoZXZlbnQgPT0gVFJJR0dFUl9FVkVO VF9ERUxFVEUgJiYgIXRyaWdkZXNjLT50cmlnX2RlbGV0ZV9hZnRlcl9yb3cpIHx8CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUgYi9zcmMvYmFja2VuZC9leGVj dXRvci9SRUFETUUKaW5kZXggYmY1ZTcwODYwZC4uNTc2N2MyOTE4YiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L1JFQURNRQpAQCAtNDEsNiArNDEsMTkgQEAgYmUgdXNlZCBmb3Igb3RoZXIgdGFibGUgdHlw ZXMuKSAgRm9yIERFTEVURSwgdGhlIHBsYW4gdHJlZSBuZWVkIG9ubHkgZGVsaXZlcgoganVu ayByb3ctaWRlbnRpdHkgY29sdW1uKHMpLCBhbmQgdGhlIE1vZGlmeVRhYmxlIG5vZGUgdmlz aXRzIGVhY2ggb2YgdGhvc2UKIHJvd3MgYW5kIG1hcmtzIHRoZSByb3cgZGVsZXRlZC4KIAor TUVSR0UgcnVucyBvbmUgZ2VuZXJpYyBwbGFuIHRoYXQgcmV0dXJucyBjYW5kaWRhdGUgY2hh bmdlIHJvd3MuIEVhY2ggcm93Citjb25zaXN0cyBvZiB0aGUgb3V0cHV0IG9mIHRoZSBkYXRh LXNvdXJjZSB0YWJsZSBvciBxdWVyeSwgcGx1cyBDVElEIGFuZAorKGlmIHRoZSB0YXJnZXQg dGFibGUgaXMgcGFydGl0aW9uZWQpIFRBQkxFT0lEIGp1bmsgY29sdW1ucy4gIElmIHRoZSB0 YXJnZXQKK3RhYmxlIGNvbnRhaW5zIGEgbWF0Y2hpbmcgcm93LCB0aGUgQ1RJRCBqdW5rIGNv bHVtbiBpZGVudGlmaWVzIHRoZSBtYXRjaGluZwordHVwbGUgYW5kIHdlIGV2YWx1YXRlIFdI RU4gTUFUQ0hFRCBhY3Rpb25zLiBJZiBhIG1hdGNoaW5nIHR1cGxlIGlzIG5vdAorZm91bmQs IHRoZW4gQ1RJRCBjb2x1bW4gaXMgTlVMTCBhbmQgd2UgZXZhbHVhdGUgV0hFTiBOT1QgTUFU Q0hFRCBhY3Rpb25zLgorT25jZSB3ZSBrbm93IHdoaWNoIGFjdGlvbiB0byBleGVjdXRlLCB3 ZSBmb3JtIHRoZSBmaW5hbCByZXN1bHQgcm93IGFuZAorYXBwbHkgb25seSB0aG9zZSBjaGFu Z2VzLiAgSWYgV0hFTiBNQVRDSEVEIHJldHVybnMgYSByb3cgdGhhdCBpcyBjb25jdXJyZW50 bHkKK3VwZGF0ZWQgb3IgZGVsZXRlZCwgRXZhbFBsYW5RdWFsIChzZWUgYmVsb3cpIGlzIHVz ZWQgdG8gZmluZCB0aGUgbGF0ZXN0Cit2ZXJzaW9uIG9mIHRoZSByb3csIGFuZCB0aGF0IGlz IHJlLWZldGNoZWQ7IGlmIGl0IGV4aXN0cywgdGhlIHNlYXJjaCBmb3IgYQorV0hFTiBNQVRD SEVEIGNsYXVzZSB0byB1c2Ugc3RhcnRzIGF0IHRoZSB0b3AuICBJZiBpdCBkb2Vzbid0LCB0 aGVuIFdIRU4gTk9UCitNQVRDSEVEIGFjdGlvbnMgYXJlIGV2YWx1YXRlZC4KKwogWFhYIGEg Z3JlYXQgZGVhbCBtb3JlIGRvY3VtZW50YXRpb24gbmVlZHMgdG8gYmUgd3JpdHRlbiBoZXJl Li4uCiAKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggNTQ5ZDllYjY5Ni4uZjYw OGZiODQxYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC0yMzIsNiArMjMyLDcg QEAgc3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVm bGFncykKIAkJY2FzZSBDTURfSU5TRVJUOgogCQljYXNlIENNRF9ERUxFVEU6CiAJCWNhc2Ug Q01EX1VQREFURToKKwkJY2FzZSBDTURfTUVSR0U6CiAJCQllc3RhdGUtPmVzX291dHB1dF9j aWQgPSBHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpOwogCQkJYnJlYWs7CiAKQEAgLTEyNDMs NiArMTI0NCw4IEBAIEluaXRSZXN1bHRSZWxJbmZvKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJl bEluZm8sCiAJcmVzdWx0UmVsSW5mby0+cmlfUmV0dXJuaW5nU2xvdCA9IE5VTEw7CiAJcmVz dWx0UmVsSW5mby0+cmlfVHJpZ09sZFNsb3QgPSBOVUxMOwogCXJlc3VsdFJlbEluZm8tPnJp X1RyaWdOZXdTbG90ID0gTlVMTDsKKwlyZXN1bHRSZWxJbmZvLT5yaV9tYXRjaGVkTWVyZ2VB Y3Rpb24gPSBOSUw7CisJcmVzdWx0UmVsSW5mby0+cmlfbm90TWF0Y2hlZE1lcmdlQWN0aW9u ID0gTklMOwogCiAJLyoKIAkgKiBPbmx5IEV4ZWNJbml0UGFydGl0aW9uSW5mbygpIGFuZCBF eGVjSW5pdFBhcnRpdGlvbkRpc3BhdGNoSW5mbygpIHBhc3MKQEAgLTIwNjAsNiArMjA2Mywx OSBAQCBFeGVjV2l0aENoZWNrT3B0aW9ucyhXQ09LaW5kIGtpbmQsIFJlc3VsdFJlbEluZm8g KnJlc3VsdFJlbEluZm8sCiAJCQkJCQkJCSBlcnJtc2coIm5ldyByb3cgdmlvbGF0ZXMgcm93 LWxldmVsIHNlY3VyaXR5IHBvbGljeSBmb3IgdGFibGUgXCIlc1wiIiwKIAkJCQkJCQkJCQl3 Y28tPnJlbG5hbWUpKSk7CiAJCQkJCWJyZWFrOworCQkJCWNhc2UgV0NPX1JMU19NRVJHRV9V UERBVEVfQ0hFQ0s6CisJCQkJY2FzZSBXQ09fUkxTX01FUkdFX0RFTEVURV9DSEVDSzoKKwkJ CQkJaWYgKHdjby0+cG9sbmFtZSAhPSBOVUxMKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkJ CQkJIGVycm1zZygidGFyZ2V0IHJvdyB2aW9sYXRlcyByb3ctbGV2ZWwgc2VjdXJpdHkgcG9s aWN5IFwiJXNcIiAoVVNJTkcgZXhwcmVzc2lvbikgZm9yIHRhYmxlIFwiJXNcIiIsCisJCQkJ CQkJCQkJd2NvLT5wb2xuYW1lLCB3Y28tPnJlbG5hbWUpKSk7CisJCQkJCWVsc2UKKwkJCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5U X1BSSVZJTEVHRSksCisJCQkJCQkJCSBlcnJtc2coInRhcmdldCByb3cgdmlvbGF0ZXMgcm93 LWxldmVsIHNlY3VyaXR5IHBvbGljeSAoVVNJTkcgZXhwcmVzc2lvbikgZm9yIHRhYmxlIFwi JXNcIiIsCisJCQkJCQkJCQkJd2NvLT5yZWxuYW1lKSkpOworCQkJCQlicmVhazsKIAkJCQlj YXNlIFdDT19STFNfQ09ORkxJQ1RfQ0hFQ0s6CiAJCQkJCWlmICh3Y28tPnBvbG5hbWUgIT0g TlVMTCkKIAkJCQkJCWVyZXBvcnQoRVJST1IsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFy dGl0aW9uLmMKaW5kZXggOTBlZDE0ODVkMS4uYWNhNDJjYTViOCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgImNh dGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCIK ICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL25v ZGVNb2RpZnlUYWJsZS5oIgogI2luY2x1ZGUgImZvcmVpZ24vZmR3YXBpLmgiCiAjaW5jbHVk ZSAibWIvcGdfd2NoYXIuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKQEAgLTE4Miw2ICsx ODMsNyBAQCBzdGF0aWMgY2hhciAqRXhlY0J1aWxkU2xvdFBhcnRpdGlvbktleURlc2NyaXB0 aW9uKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCQkJCSAgYm9vbCAqaXNudWxsLAogCQkJCQkJ CQkJCQkJICBpbnQgbWF4ZmllbGRsZW4pOwogc3RhdGljIExpc3QgKmFkanVzdF9wYXJ0aXRp b25fY29sbm9zKExpc3QgKmNvbG5vcywgUmVzdWx0UmVsSW5mbyAqbGVhZl9wYXJ0X3JyaSk7 CitzdGF0aWMgTGlzdCAqYWRqdXN0X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFwKExpc3Qg KmNvbG5vcywgQXR0ck1hcCAqYXR0ck1hcCk7CiBzdGF0aWMgdm9pZCBFeGVjSW5pdFBydW5p bmdDb250ZXh0KFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJICAg TGlzdCAqcHJ1bmluZ19zdGVwcywKIAkJCQkJCQkJICAgUGFydGl0aW9uRGVzYyBwYXJ0ZGVz YywKQEAgLTg1Myw2ICs4NTUsOTkgQEAgRXhlY0luaXRQYXJ0aXRpb25JbmZvKE1vZGlmeVRh YmxlU3RhdGUgKm10c3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCQlsYXBwZW5kKGVzdGF0ZS0+ ZXNfdHVwbGVfcm91dGluZ19yZXN1bHRfcmVsYXRpb25zLAogCQkJCWxlYWZfcGFydF9ycmkp OwogCisJLyoKKwkgKiBJbml0aWFsaXplIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgcGFydGl0 aW9uIHRoYXQncyBuZWVkZWQgdG8gaGFuZGxlCisJICogTUVSR0UuICBXZSB0YWtlIHRoZSAi Zmlyc3QiIHJlc3VsdCByZWxhdGlvbidzIG1lcmdlQWN0aW9uTGlzdCBhcworCSAqIHJlZmVy ZW5jZSBhbmQgbWFrZSBjb3B5IGZvciB0aGlzIHJlbGF0aW9uLCBjb252ZXJ0aW5nIHN0dWZm IHRoYXQKKwkgKiByZWZlcmVuY2VzIGF0dHJpYnV0ZSBudW1iZXJzIHRvIG1hdGNoIHRoaXMg cmVsYXRpb24ncy4KKwkgKgorCSAqIFRoaXMgZHVwbGljYXRlcyBtdWNoIG9mIHRoZSBsb2dp YyBpbiBFeGVjSW5pdE1lcmdlKCksIHNvIHNvbWV0aGluZworCSAqIGNoYW5nZXMgdGhlcmUs IGxvb2sgaGVyZSB0b28uCisJICovCisJaWYgKG5vZGUgJiYgbm9kZS0+b3BlcmF0aW9uID09 IENNRF9NRVJHRSkKKwl7CisJCUxpc3QJICAgKmZpcnN0TWVyZ2VBY3Rpb25MaXN0ID0gbGlu aXRpYWwobm9kZS0+bWVyZ2VBY3Rpb25MaXN0cyk7CisJCUxpc3RDZWxsICAgKmxjOworCQlF eHByQ29udGV4dCAqZWNvbnRleHQgPSBtdHN0YXRlLT5wcy5wc19FeHByQ29udGV4dDsKKwor CQlpZiAocGFydF9hdHRtYXAgPT0gTlVMTCkKKwkJCXBhcnRfYXR0bWFwID0KKwkJCQlidWls ZF9hdHRybWFwX2J5X25hbWUoUmVsYXRpb25HZXREZXNjcihwYXJ0cmVsKSwKKwkJCQkJCQkJ CSAgUmVsYXRpb25HZXREZXNjcihmaXJzdFJlc3VsdFJlbCkpOworCisJCWlmICh1bmxpa2Vs eSghbGVhZl9wYXJ0X3JyaS0+cmlfcHJvamVjdE5ld0luZm9WYWxpZCkpCisJCQlFeGVjSW5p dE1lcmdlVHVwbGVTbG90cyhtdHN0YXRlLCBsZWFmX3BhcnRfcnJpKTsKKworCQlmb3JlYWNo KGxjLCBmaXJzdE1lcmdlQWN0aW9uTGlzdCkKKwkJeworCQkJLyogTWFrZSBhIGNvcHkgZm9y IHRoaXMgcmVsYXRpb24gdG8gYmUgc2FmZS4gICovCisJCQlNZXJnZUFjdGlvbiAqYWN0aW9u ID0gY29weU9iamVjdChsZmlyc3QobGMpKTsKKwkJCU1lcmdlQWN0aW9uU3RhdGUgKmFjdGlv bl9zdGF0ZTsKKwkJCUxpc3QJICAqKmxpc3Q7CisKKwkJCS8qIEdlbmVyYXRlIHRoZSBhY3Rp b24ncyBzdGF0ZSBmb3IgdGhpcyByZWxhdGlvbiAqLworCQkJYWN0aW9uX3N0YXRlID0gbWFr ZU5vZGUoTWVyZ2VBY3Rpb25TdGF0ZSk7CisJCQlhY3Rpb25fc3RhdGUtPm1hc19hY3Rpb24g PSBhY3Rpb247CisKKwkJCS8qIEFuZCBwdXQgdGhlIGFjdGlvbiBpbiB0aGUgYXBwcm9wcmlh dGUgbGlzdCAqLworCQkJaWYgKGFjdGlvbi0+bWF0Y2hlZCkKKwkJCQlsaXN0ID0gJmxlYWZf cGFydF9ycmktPnJpX21hdGNoZWRNZXJnZUFjdGlvbjsKKwkJCWVsc2UKKwkJCQlsaXN0ID0g JmxlYWZfcGFydF9ycmktPnJpX25vdE1hdGNoZWRNZXJnZUFjdGlvbjsKKwkJCSpsaXN0ID0g bGFwcGVuZCgqbGlzdCwgYWN0aW9uX3N0YXRlKTsKKworCQkJc3dpdGNoIChhY3Rpb24tPmNv bW1hbmRUeXBlKQorCQkJeworCQkJCWNhc2UgQ01EX0lOU0VSVDoKKworCQkJCQkvKgorCQkJ CQkgKiBFeGVjQ2hlY2tQbGFuT3V0cHV0KCkgYWxyZWFkeSBkb25lIG9uIHRoZSB0YXJnZXRs aXN0CisJCQkJCSAqIHdoZW4gImZpcnN0IiByZXN1bHQgcmVsYXRpb24gaW5pdGlhbGl6ZWQg YW5kIGl0IGlzIHNhbWUKKwkJCQkJICogZm9yIGFsbCByZXN1bHQgcmVsYXRpb25zLgorCQkJ CQkgKi8KKwkJCQkJYWN0aW9uX3N0YXRlLT5tYXNfcHJvaiA9CisJCQkJCQlFeGVjQnVpbGRQ cm9qZWN0aW9uSW5mbyhhY3Rpb24tPnRhcmdldExpc3QsIGVjb250ZXh0LAorCQkJCQkJCQkJ CQkJbGVhZl9wYXJ0X3JyaS0+cmlfbmV3VHVwbGVTbG90LAorCQkJCQkJCQkJCQkJJm10c3Rh dGUtPnBzLAorCQkJCQkJCQkJCQkJUmVsYXRpb25HZXREZXNjcihwYXJ0cmVsKSk7CisJCQkJ CWJyZWFrOworCQkJCWNhc2UgQ01EX1VQREFURToKKworCQkJCQkvKgorCQkJCQkgKiBDb252 ZXJ0IHVwZGF0ZUNvbG5vcyBmcm9tICJmaXJzdCIgcmVzdWx0IHJlbGF0aW9uCisJCQkJCSAq IGF0dHJpYnV0ZSBudW1iZXJzIHRvIHRoaXMgcmVzdWx0IHJlbCdzLgorCQkJCQkgKi8KKwkJ CQkJaWYgKHBhcnRfYXR0bWFwKQorCQkJCQkJYWN0aW9uLT51cGRhdGVDb2xub3MgPQorCQkJ CQkJCWFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21hcChhY3Rpb24tPnVwZGF0ZUNv bG5vcywKKwkJCQkJCQkJCQkJCQkJCSAgcGFydF9hdHRtYXApOworCQkJCQlhY3Rpb25fc3Rh dGUtPm1hc19wcm9qID0KKwkJCQkJCUV4ZWNCdWlsZFVwZGF0ZVByb2plY3Rpb24oYWN0aW9u LT50YXJnZXRMaXN0LAorCQkJCQkJCQkJCQkJICB0cnVlLAorCQkJCQkJCQkJCQkJICBhY3Rp b24tPnVwZGF0ZUNvbG5vcywKKwkJCQkJCQkJCQkJCSAgUmVsYXRpb25HZXREZXNjcihsZWFm X3BhcnRfcnJpLT5yaV9SZWxhdGlvbkRlc2MpLAorCQkJCQkJCQkJCQkJICBlY29udGV4dCwK KwkJCQkJCQkJCQkJCSAgbGVhZl9wYXJ0X3JyaS0+cmlfbmV3VHVwbGVTbG90LAorCQkJCQkJ CQkJCQkJICBOVUxMKTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBDTURfREVMRVRFOgorCQkJ CQlicmVhazsKKworCQkJCWRlZmF1bHQ6CisJCQkJCWVsb2coRVJST1IsICJ1bmtub3duIGFj dGlvbiBpbiBNRVJHRSBXSEVOIGNsYXVzZSIpOworCQkJfQorCisJCQkvKiBmb3VuZF93aG9s ZV9yb3cgaW50ZW50aW9uYWxseSBpZ25vcmVkLiAqLworCQkJYWN0aW9uLT5xdWFsID0KKwkJ CQltYXBfdmFyaWFibGVfYXR0bm9zKGFjdGlvbi0+cXVhbCwKKwkJCQkJCQkJCWZpcnN0VmFy bm8sIDAsCisJCQkJCQkJCQlwYXJ0X2F0dG1hcCwKKwkJCQkJCQkJCVJlbGF0aW9uR2V0Rm9y bShwYXJ0cmVsKS0+cmVsdHlwZSwKKwkJCQkJCQkJCSZmb3VuZF93aG9sZV9yb3cpOworCQkJ YWN0aW9uX3N0YXRlLT5tYXNfd2hlbnF1YWwgPQorCQkJCUV4ZWNJbml0UXVhbCgoTGlzdCAq KSBhY3Rpb24tPnF1YWwsICZtdHN0YXRlLT5wcyk7CisJCX0KKwl9CiAJTWVtb3J5Q29udGV4 dFN3aXRjaFRvKG9sZGN4dCk7CiAKIAlyZXR1cm4gbGVhZl9wYXJ0X3JyaTsKQEAgLTE0MzMs MTMgKzE1MjgsMjMgQEAgRXhlY0J1aWxkU2xvdFBhcnRpdGlvbktleURlc2NyaXB0aW9uKFJl bGF0aW9uIHJlbCwKIHN0YXRpYyBMaXN0ICoKIGFkanVzdF9wYXJ0aXRpb25fY29sbm9zKExp c3QgKmNvbG5vcywgUmVzdWx0UmVsSW5mbyAqbGVhZl9wYXJ0X3JyaSkKIHsKLQlMaXN0CSAg ICpuZXdfY29sbm9zID0gTklMOwogCVR1cGxlQ29udmVyc2lvbk1hcCAqbWFwID0gRXhlY0dl dENoaWxkVG9Sb290TWFwKGxlYWZfcGFydF9ycmkpOwotCUF0dHJNYXAgICAgKmF0dHJNYXA7 CisKKwlyZXR1cm4gYWRqdXN0X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFwKGNvbG5vcywg bWFwLT5hdHRyTWFwKTsKK30KKworLyoKKyAqIGFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3Vz aW5nX21hcAorICoJCUxpa2UgYWRqdXN0X3BhcnRpdGlvbl9jb2xub3MsIGJ1dCB1c2VzIGEg Y2FsbGVyLXN1cHBsaWVkIG1hcCBpbnN0ZWFkCisgKgkJb2YgYXNzdW1pbmcgdG8gbWFwIGZy b20gdGhlICJyb290IiByZXN1bHQgcmVsYXRpb24uCisgKi8KK3N0YXRpYyBMaXN0ICoKK2Fk anVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21hcChMaXN0ICpjb2xub3MsIEF0dHJNYXAg KmF0dHJNYXApCit7CisJTGlzdAkgICAqbmV3X2NvbG5vcyA9IE5JTDsKIAlMaXN0Q2VsbCAg ICpsYzsKIAotCUFzc2VydChtYXAgIT0gTlVMTCk7CQkvKiBlbHNlIHdlIHNob3VsZG4ndCBi ZSBoZXJlICovCi0JYXR0ck1hcCA9IG1hcC0+YXR0ck1hcDsKKwlBc3NlcnQoYXR0ck1hcCAh PSBOVUxMKTsJLyogZWxzZSB3ZSBzaG91bGRuJ3QgYmUgaGVyZSAqLwogCiAJZm9yZWFjaChs YywgY29sbm9zKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNS ZXBsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMK aW5kZXggZGUxMDZkNzY3ZC4uMTZiMjc5NDg1MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1JlcGxpY2F0aW9uLmMKQEAgLTQ4Niw3ICs0ODYsNyBAQCBFeGVjU2ltcGxlUmVsYXRp b25VcGRhdGUoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJcmVzdWx0UmVsSW5m by0+cmlfVHJpZ0Rlc2MtPnRyaWdfdXBkYXRlX2JlZm9yZV9yb3cpCiAJewogCQlpZiAoIUV4 ZWNCUlVwZGF0ZVRyaWdnZXJzKGVzdGF0ZSwgZXBxc3RhdGUsIHJlc3VsdFJlbEluZm8sCi0J CQkJCQkJCSAgdGlkLCBOVUxMLCBzbG90KSkKKwkJCQkJCQkJICB0aWQsIE5VTEwsIHNsb3Qs IE5VTEwpKQogCQkJc2tpcF90dXBsZSA9IHRydWU7CS8qICJkbyBub3RoaW5nIiAqLwogCX0K IApAQCAtNTQ2LDcgKzU0Niw3IEBAIEV4ZWNTaW1wbGVSZWxhdGlvbkRlbGV0ZShSZXN1bHRS ZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnRGVzYy0+ dHJpZ19kZWxldGVfYmVmb3JlX3JvdykKIAl7CiAJCXNraXBfdHVwbGUgPSAhRXhlY0JSRGVs ZXRlVHJpZ2dlcnMoZXN0YXRlLCBlcHFzdGF0ZSwgcmVzdWx0UmVsSW5mbywKLQkJCQkJCQkJ CQkgICB0aWQsIE5VTEwsIE5VTEwpOworCQkJCQkJCQkJCSAgIHRpZCwgTlVMTCwgTlVMTCwg TlVMTCk7CiAKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVN b2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMK aW5kZXggYzczNzJmMjgxYy4uNjI3Y2QzNGJiMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1vZGlmeVRhYmxlLmMKQEAgLTc0LDYgKzc0LDE5IEBAIHR5cGVkZWYgc3RydWN0IE1v ZGlmeVRhYmxlQ29udGV4dAogCS8qIFNsb3QgY29udGFpbmluZyB0dXBsZSBvYnRhaW5lZCBm cm9tIHN1YnBsYW4sIGZvciBSRVRVUk5JTkcgKi8KIAlUdXBsZVRhYmxlU2xvdCAqcGxhblNs b3Q7CiAKKwkvKiBVUERBVEUgc3BlY2lmaWMgKi8KKwkvKgorCSAqIER1cmluZyBFdmFsUGxh blF1YWwsIHByb2plY3QgYW5kIHJldHVybiB0aGUgbmV3IHZlcnNpb24gb2YgdGhlIG5ldwor CSAqIHR1cGxlCisJICovCisJVHVwbGVUYWJsZVNsb3QgKiAoKkdldFVwZGF0ZU5ld1R1cGxl KSAoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKKwkJCQkJCQkJCQkgICBUdXBsZVRh YmxlU2xvdCAqZXBxc2xvdCwKKwkJCQkJCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqb2xkU2xv dCwKKwkJCQkJCQkJCQkgICBNZXJnZUFjdGlvblN0YXRlICpyZWxhY3Rpb24pOworCisJLyog TUVSR0Ugc3BlY2lmaWMgKi8KKwlNZXJnZUFjdGlvblN0YXRlICpyZWxhY3Rpb247IC8qIE1F UkdFIGFjdGlvbiBpbiBwcm9ncmVzcyAqLworCiAJLyogb3V0cHV0ICovCiAJVE1fRmFpbHVy ZURhdGEgdG1mZDsJCS8qIHN0b2NrIGZhaWx1cmUgZGF0YSAqLwogCkBAIC0xMjIsNiArMTM1 LDE5IEBAIHN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqRXhlY1ByZXBhcmVUdXBsZVJvdXRpbmco TW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKIAkJCQkJCQkJCQkJICAgVHVwbGVUYWJsZVNs b3QgKnNsb3QsCiAJCQkJCQkJCQkJCSAgIFJlc3VsdFJlbEluZm8gKipwYXJ0UmVsSW5mbyk7 CiAKK3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAqRXhlY01lcmdlKE1vZGlmeVRhYmxlQ29udGV4 dCAqY29udGV4dCwKKwkJCQkJCQkJIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCisJ CQkJCQkJCSBib29sIGNhblNldFRhZyk7CitzdGF0aWMgdm9pZCBFeGVjSW5pdE1lcmdlKE1v ZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsIEVTdGF0ZSAqZXN0YXRlKTsKK3N0YXRpYyBib29s IEV4ZWNNZXJnZU1hdGNoZWQoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LAorCQkJCQkJ CSBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAorCQkJCQkJCSBJdGVtUG9pbnRlciB0 dXBsZWlkLAorCQkJCQkJCSBib29sIGNhblNldFRhZyk7CitzdGF0aWMgdm9pZCBFeGVjTWVy Z2VOb3RNYXRjaGVkKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKKwkJCQkJCQkJUmVz dWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKKwkJCQkJCQkJYm9vbCBjYW5TZXRUYWcpOwor CisKIC8qCiAgKiBWZXJpZnkgdGhhdCB0aGUgdHVwbGVzIHRvIGJlIHByb2R1Y2VkIGJ5IElO U0VSVCBtYXRjaCB0aGUKICAqIHRhcmdldCByZWxhdGlvbidzIHJvd3R5cGUKQEAgLTU5Miwx MCArNjE4LDExIEBAIEV4ZWNHZXRJbnNlcnROZXdUdXBsZShSZXN1bHRSZWxJbmZvICpyZWxp bmZvLAogICogVGhlIHN1YnBsYW4gdHVwbGUgbWlnaHQgYWxzbyBjb250YWluIGp1bmsgY29s dW1ucywgd2hpY2ggYXJlIGlnbm9yZWQuCiAgKiBOb3RlIHRoYXQgdGhlIHByb2plY3Rpb24g YWxzbyBlbnN1cmVzIHdlIGhhdmUgYSBzbG90IG9mIHRoZSByaWdodCB0eXBlLgogICovCi1U dXBsZVRhYmxlU2xvdCAqCi1FeGVjR2V0VXBkYXRlTmV3VHVwbGUoUmVzdWx0UmVsSW5mbyAq cmVsaW5mbywKLQkJCQkJICBUdXBsZVRhYmxlU2xvdCAqcGxhblNsb3QsCi0JCQkJCSAgVHVw bGVUYWJsZVNsb3QgKm9sZFNsb3QpCitzdGF0aWMgVHVwbGVUYWJsZVNsb3QgKgoraW50ZXJu YWxHZXRVcGRhdGVOZXdUdXBsZShSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAorCQkJCQkJICBU dXBsZVRhYmxlU2xvdCAqcGxhblNsb3QsCisJCQkJCQkgIFR1cGxlVGFibGVTbG90ICpvbGRT bG90LAorCQkJCQkJICBNZXJnZUFjdGlvblN0YXRlICpyZWxhY3Rpb24pCiB7CiAJUHJvamVj dGlvbkluZm8gKm5ld1Byb2ogPSByZWxpbmZvLT5yaV9wcm9qZWN0TmV3OwogCUV4cHJDb250 ZXh0ICplY29udGV4dDsKQEAgLTYxMSw2ICs2MzgsMTcgQEAgRXhlY0dldFVwZGF0ZU5ld1R1 cGxlKFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCiAJcmV0dXJuIEV4ZWNQcm9qZWN0KG5ld1By b2opOwogfQogCisvKgorICogQXMgYWJvdmUsIHdpdGggYSBzaW1wbGlmaWVkIEFQSSwgc28g dGhhdCBpdCBjYW4gYmUgY2FsbGVkIGZyb20gdGhlIG91dHNpZGUKKyAqLworVHVwbGVUYWJs ZVNsb3QgKgorRXhlY0dldFVwZGF0ZU5ld1R1cGxlKFJlc3VsdFJlbEluZm8gKnJlbGluZm8s CisJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKnBsYW5TbG90LAorCQkJCQkgIFR1cGxlVGFibGVT bG90ICpvbGRTbG90KQoreworCXJldHVybiBpbnRlcm5hbEdldFVwZGF0ZU5ld1R1cGxlKHJl bGluZm8sIHBsYW5TbG90LCBvbGRTbG90LCBOVUxMKTsKK30KKwogCiAvKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAgKgkJRXhlY0luc2VydApAQCAtODI1LDkgKzg2MywxNyBAQCBFeGVjSW5zZXJ0KE1vZGlm eVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAkJICogcGFydGl0aW9uLCB3ZSBzaG91bGQgaW5z dGVhZCBjaGVjayBVUERBVEUgcG9saWNpZXMsIGJlY2F1c2Ugd2UgYXJlCiAJCSAqIGV4ZWN1 dGluZyBwb2xpY2llcyBkZWZpbmVkIG9uIHRoZSB0YXJnZXQgdGFibGUsIGFuZCBub3QgdGhv c2UKIAkJICogZGVmaW5lZCBvbiB0aGUgY2hpbGQgcGFydGl0aW9ucy4KKwkJICoKKwkJICog SWYgd2UncmUgcnVubmluZyBNRVJHRSwgd2UgcmVmZXIgdG8gdGhlIGFjdGlvbiB0aGF0IHdl J3JlIGV4ZWN1dGluZworCQkgKiB0byBrbm93IGlmIHdlJ3JlIGRvaW5nIGFuIElOU0VSVCBv ciBVUERBVEUgdG8gYSBwYXJ0aXRpb24gdGFibGUuCiAJCSAqLwotCQl3Y29fa2luZCA9ICht dHN0YXRlLT5vcGVyYXRpb24gPT0gQ01EX1VQREFURSkgPwotCQkJV0NPX1JMU19VUERBVEVf Q0hFQ0sgOiBXQ09fUkxTX0lOU0VSVF9DSEVDSzsKKwkJaWYgKG10c3RhdGUtPm9wZXJhdGlv biA9PSBDTURfVVBEQVRFKQorCQkJd2NvX2tpbmQgPSBXQ09fUkxTX1VQREFURV9DSEVDSzsK KwkJZWxzZSBpZiAobXRzdGF0ZS0+b3BlcmF0aW9uID09IENNRF9NRVJHRSkKKwkJCXdjb19r aW5kID0gKGNvbnRleHQtPnJlbGFjdGlvbi0+bWFzX2FjdGlvbi0+Y29tbWFuZFR5cGUgPT0g Q01EX1VQREFURSkgPworCQkJCVdDT19STFNfVVBEQVRFX0NIRUNLIDogV0NPX1JMU19JTlNF UlRfQ0hFQ0s7CisJCWVsc2UKKwkJCXdjb19raW5kID0gV0NPX1JMU19JTlNFUlRfQ0hFQ0s7 CiAKIAkJLyoKIAkJICogRXhlY1dpdGhDaGVja09wdGlvbnMoKSB3aWxsIHNraXAgYW55IFdD T3Mgd2hpY2ggYXJlIG5vdCBvZiB0aGUga2luZApAQCAtMTExNCw3ICsxMTYwLDcgQEAgRXhl Y0RlbGV0ZVByb2xvZ3VlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVzdWx0UmVs SW5mbyAqcmVzdWx0UmVsSW5mbywKIAl7CiAJCWlmICghRXhlY0JSRGVsZXRlVHJpZ2dlcnMo Y29udGV4dC0+ZXN0YXRlLCBjb250ZXh0LT5lcHFzdGF0ZSwKIAkJCQkJCQkJICByZXN1bHRS ZWxJbmZvLCB0dXBsZWlkLCBvbGR0dXBsZSwKLQkJCQkJCQkJICBlcHFyZXR1cm5zbG90KSkK KwkJCQkJCQkJICBlcHFyZXR1cm5zbG90LCBOVUxMKSkKIAkJCS8qIHNvbWUgdHJpZ2dlciBt YWRlIHRoZSBkZWxldGUgYSBuby1vcDsgbGV0IGNhbGxlciBrbm93ICovCiAJCQlyZXR1cm4g ZmFsc2U7CiAJfQpAQCAtMTIwMCw3ICsxMjQ2LDcgQEAgRXhlY0RlbGV0ZUVwaWxvZ3VlKE1v ZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5m bywKICAqCQl3aGV0aGVyIHRoZSB0dXBsZSBpcyBhY3R1YWxseSBkZWxldGVkLCBjYWxsZXJz IGNhbiB1c2UgaXQgdG8KICAqCQlkZWNpZGUgd2hldGhlciB0byBjb250aW51ZSB0aGUgb3Bl cmF0aW9uLiAgV2hlbiB0aGlzIERFTEVURSBpcyBhCiAgKgkJcGFydCBvZiBhbiBVUERBVEUg b2YgcGFydGl0aW9uLWtleSwgdGhlbiB0aGUgc2xvdCByZXR1cm5lZCBieQotICoJCUV2YWxQ bGFuUXVhbCgpIGlzIHBhc3NlZCBiYWNrIHVzaW5nIG91dHB1dCBwYXJhbWV0ZXIgZXBxc2xv dC4KKyAqCQlFdmFsUGxhblF1YWwoKSBpcyBwYXNzZWQgYmFjayB1c2luZyBvdXRwdXQgcGFy YW1ldGVyIGVwcXJldHVybnNsb3QuCiAgKgogICoJCVJldHVybnMgUkVUVVJOSU5HIHJlc3Vs dCBpZiBhbnksIG90aGVyd2lzZSBOVUxMLgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTQyMiw3ICsx NDY4LDEzIEBAIGxkZWxldGU6OwogCQkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJCShlcnJj b2RlKEVSUkNPREVfVF9SX1NFUklBTElaQVRJT05fRkFJTFVSRSksCiAJCQkJCQkJIGVycm1z ZygiY291bGQgbm90IHNlcmlhbGl6ZSBhY2Nlc3MgZHVlIHRvIGNvbmN1cnJlbnQgZGVsZXRl IikpKTsKLQkJCQkvKiB0dXBsZSBhbHJlYWR5IGRlbGV0ZWQ7IG5vdGhpbmcgdG8gZG8gKi8K KworCQkJCS8qCisJCQkJICogdHVwbGUgYWxyZWFkeSBkZWxldGVkOyBub3RoaW5nIHRvIGRv LiBCdXQgTUVSR0UgbWlnaHQgd2FudAorCQkJCSAqIHRvIGhhbmRsZSBpdCBkaWZmZXJlbnRs eS4gV2UndmUgYWxyZWFkeSBmaWxsZWQtaW4KKwkJCQkgKiBhY3Rpb25JbmZvIHdpdGggc3Vm ZmljaWVudCBpbmZvcm1hdGlvbiBmb3IgTUVSR0UgdG8gbG9vaworCQkJCSAqIGF0LgorCQkJ CSAqLwogCQkJCXJldHVybiBOVUxMOwogCiAJCQlkZWZhdWx0OgpAQCAtMTYyNSw3ICsxNjc3 LDggQEAgRXhlY0Nyb3NzUGFydGl0aW9uVXBkYXRlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29u dGV4dCwKIAkJCQllbG9nKEVSUk9SLCAiZmFpbGVkIHRvIGZldGNoIHR1cGxlIGJlaW5nIHVw ZGF0ZWQiKTsKIAkJCS8qIGFuZCBwcm9qZWN0IHRvIGNyZWF0ZSBhIGN1cnJlbnQgdmVyc2lv biBvZiB0aGUgbmV3IHR1cGxlICovCiAJCQljb250ZXh0LT5yZXRyeVNsb3QgPQotCQkJCUV4 ZWNHZXRVcGRhdGVOZXdUdXBsZShyZXN1bHRSZWxJbmZvLCBlcHFzbG90LCBvbGRTbG90KTsK KwkJCQljb250ZXh0LT5HZXRVcGRhdGVOZXdUdXBsZShyZXN1bHRSZWxJbmZvLCBlcHFzbG90 LCBvbGRTbG90LAorCQkJCQkJCQkJCSAgIGNvbnRleHQtPnJlbGFjdGlvbik7CiAJCQlyZXR1 cm4gZmFsc2U7CiAJCX0KIAl9CkBAIC0xNjg2LDcgKzE3MzksOCBAQCBFeGVjVXBkYXRlUHJv bG9ndWUoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1bHRSZWxJbmZvICpyZXN1 bHRSZWxJbmZvLAogCQlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnRGVzYy0+dHJpZ191cGRhdGVf YmVmb3JlX3JvdykKIAl7CiAJCWlmICghRXhlY0JSVXBkYXRlVHJpZ2dlcnMoY29udGV4dC0+ ZXN0YXRlLCBjb250ZXh0LT5lcHFzdGF0ZSwKLQkJCQkJCQkJICByZXN1bHRSZWxJbmZvLCB0 dXBsZWlkLCBvbGR0dXBsZSwgc2xvdCkpCisJCQkJCQkJCSAgcmVzdWx0UmVsSW5mbywgdHVw bGVpZCwgb2xkdHVwbGUsIHNsb3QsCisJCQkJCQkJCSAgJmNvbnRleHQtPnRtZmQpKQogCQkJ Lyogc29tZSB0cmlnZ2VyIG1hZGUgdGhlIHVwZGF0ZSBhIG5vLW9wOyBsZXQgY2FsbGVyIGtu b3cgKi8KIAkJCXJldHVybiBmYWxzZTsKIAl9CkBAIC0xODg3LDYgKzE5NDEsOSBAQCBFeGVj VXBkYXRlRXBpbG9ndWUoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1bHRSZWxJ bmZvICpyZXN1bHRSZWxJbmZvLAogICoJCXRvIGFjY2VzcyB2YWx1ZXMgZnJvbSBvdGhlciBp bnB1dCB0YWJsZXMgKGZvciBSRVRVUk5JTkcpLAogICoJCXJvdy1JRCBqdW5rIGNvbHVtbnMs IGV0Yy4KICAqCisgKgkJYWN0aW9uSW5mbyBpcyBwYXNzZWQgYnkgTUVSR0UgdG8gb2J0YWlu IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqCQlhYm91dCB0aGUgcmVzdWx0cyBvZiB0aGUg b3BlcmF0aW9uLgorICoKICAqCQlSZXR1cm5zIFJFVFVSTklORyByZXN1bHQgaWYgYW55LCBv dGhlcndpc2UgTlVMTC4KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwpAQCAtMjE5MCw5ICsyMjQ3LDkg QEAgRXhlY09uQ29uZmxpY3RVcGRhdGUoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LAog CQkJICogdG8gYnJlYWsuCiAJCQkgKgogCQkJICogSXQgaXMgdGhlIHVzZXIncyByZXNwb25z aWJpbGl0eSB0byBwcmV2ZW50IHRoaXMgc2l0dWF0aW9uIGZyb20KLQkJCSAqIG9jY3Vycmlu Zy4gIFRoZXNlIHByb2JsZW1zIGFyZSB3aHkgU1FMLTIwMDMgc2ltaWxhcmx5IHNwZWNpZmll cwotCQkJICogdGhhdCBmb3IgU1FMIE1FUkdFLCBhbiBleGNlcHRpb24gbXVzdCBiZSByYWlz ZWQgaW4gdGhlIGV2ZW50IG9mCi0JCQkgKiBhbiBhdHRlbXB0IHRvIHVwZGF0ZSB0aGUgc2Ft ZSByb3cgdHdpY2UuCisJCQkgKiBvY2N1cnJpbmcuICBUaGVzZSBwcm9ibGVtcyBhcmUgd2h5 IFNRTCBTdGFuZGFyZCBzaW1pbGFybHkKKwkJCSAqIHNwZWNpZmllcyB0aGF0IGZvciBTUUwg TUVSR0UsIGFuIGV4Y2VwdGlvbiBtdXN0IGJlIHJhaXNlZCBpbgorCQkJICogdGhlIGV2ZW50 IG9mIGFuIGF0dGVtcHQgdG8gdXBkYXRlIHRoZSBzYW1lIHJvdyB0d2ljZS4KIAkJCSAqLwog CQkJeG1pbkRhdHVtID0gc2xvdF9nZXRzeXNhdHRyKGV4aXN0aW5nLAogCQkJCQkJCQkJCU1p blRyYW5zYWN0aW9uSWRBdHRyaWJ1dGVOdW1iZXIsCkBAIC0yMjAzLDcgKzIyNjAsOSBAQCBF eGVjT25Db25mbGljdFVwZGF0ZShNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsCiAJCQlp ZiAoVHJhbnNhY3Rpb25JZElzQ3VycmVudFRyYW5zYWN0aW9uSWQoeG1pbikpCiAJCQkJZXJl cG9ydChFUlJPUiwKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVfQ0FSRElOQUxJVFlfVklPTEFU SU9OKSwKLQkJCQkJCSBlcnJtc2coIk9OIENPTkZMSUNUIERPIFVQREFURSBjb21tYW5kIGNh bm5vdCBhZmZlY3Qgcm93IGEgc2Vjb25kIHRpbWUiKSwKKwkJCQkJCSAvKi0gdHJhbnNsYXRv cjogJXMgaXMgYSBTUUwgY29tbWFuZCBuYW1lICovCisJCQkJCQkgZXJybXNnKCIlcyBjb21t YW5kIGNhbm5vdCBhZmZlY3Qgcm93IGEgc2Vjb25kIHRpbWUiLAorCQkJCQkJCQkiT04gQ09O RkxJQ1QgRE8gVVBEQVRFIiksCiAJCQkJCQkgZXJyaGludCgiRW5zdXJlIHRoYXQgbm8gcm93 cyBwcm9wb3NlZCBmb3IgaW5zZXJ0aW9uIHdpdGhpbiB0aGUgc2FtZSBjb21tYW5kIGhhdmUg ZHVwbGljYXRlIGNvbnN0cmFpbmVkIHZhbHVlcy4iKSkpOwogCiAJCQkvKiBUaGlzIHNob3Vs ZG4ndCBoYXBwZW4gKi8KQEAgLTIzNDMsNiArMjQwMiw3MzggQEAgRXhlY09uQ29uZmxpY3RV cGRhdGUoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LAogCXJldHVybiB0cnVlOwogfQog CisvKgorICogUGVyZm9ybSBNRVJHRS4KKyAqLworc3RhdGljIFR1cGxlVGFibGVTbG90ICoK K0V4ZWNNZXJnZShNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsIFJlc3VsdFJlbEluZm8g KnJlc3VsdFJlbEluZm8sIGJvb2wgY2FuU2V0VGFnKQoreworCU1vZGlmeVRhYmxlU3RhdGUg Km10c3RhdGUgPSBjb250ZXh0LT5tdHN0YXRlOworCUV4cHJDb250ZXh0ICplY29udGV4dCA9 IG10c3RhdGUtPnBzLnBzX0V4cHJDb250ZXh0OworCWJvb2wJCW1hdGNoZWQgPSBmYWxzZTsK KwlJdGVtUG9pbnRlckRhdGEgdHVwbGVfY3RpZDsKKwlJdGVtUG9pbnRlcgl0dXBsZWlkOwor CURhdHVtCQlkYXR1bTsKKwlib29sCQlpc051bGw7CisKKwkvKgorCSAqIFJlc2V0IHBlci10 dXBsZSBtZW1vcnkgY29udGV4dCB0byBmcmVlIGFueSBleHByZXNzaW9uIGV2YWx1YXRpb24K KwkgKiBzdG9yYWdlIGFsbG9jYXRlZCBpbiB0aGUgcHJldmlvdXMgY3ljbGUuCisJICovCisJ UmVzZXRFeHByQ29udGV4dChlY29udGV4dCk7CisKKwkvKgorCSAqIFdlIHJ1biBhIEpPSU4g YmV0d2VlbiB0aGUgdGFyZ2V0IHJlbGF0aW9uIGFuZCB0aGUgc291cmNlIHJlbGF0aW9uIHRv CisJICogZmluZCBhIHNldCBvZiBjYW5kaWRhdGUgc291cmNlIHJvd3MgdGhhdCBoYXZlIGEg bWF0Y2hpbmcgcm93IGluIHRoZQorCSAqIHRhcmdldCB0YWJsZSBhbmQgYSBzZXQgb2YgY2Fu ZGlkYXRlIHNvdXJjZSByb3dzIHRoYXQgZG8gbm90IGhhdmUgYQorCSAqIG1hdGNoaW5nIHJv dyBpbiB0aGUgdGFyZ2V0IHRhYmxlLiBJZiB0aGUgam9pbiByZXR1cm5zIGEgdHVwbGUgd2l0 aCB0aGUKKwkgKiB0YXJnZXQgcmVsYXRpb24ncyByb3ctSUQgc2V0LCB0aGF0IGltcGxpZXMg dGhhdCB0aGUgam9pbiBmb3VuZCBhCisJICogbWF0Y2hpbmcgcm93IGZvciB0aGUgZ2l2ZW4g c291cmNlIHR1cGxlLiBUaGlzIGNhc2UgdHJpZ2dlcnMgdGhlIFdIRU4KKwkgKiBNQVRDSEVE IGNsYXVzZSBvZiB0aGUgTUVSR0UuIFdoZXJlYXMgYSBOVUxMIGluIHRoZSB0YXJnZXQgcmVs YXRpb24ncworCSAqIHJvdy1JRCBjb2x1bW4gaW5kaWNhdGVzIGEgTk9UIE1BVENIRUQgY2Fz ZS4KKwkgKi8KKwlkYXR1bSA9IEV4ZWNHZXRKdW5rQXR0cmlidXRlKGNvbnRleHQtPnBsYW5T bG90LAorCQkJCQkJCQkgcmVzdWx0UmVsSW5mby0+cmlfUm93SWRBdHRObywKKwkJCQkJCQkJ ICZpc051bGwpOworCisJaWYgKCFpc051bGwpCisJeworCQltYXRjaGVkID0gdHJ1ZTsKKwkJ dHVwbGVpZCA9IChJdGVtUG9pbnRlcikgRGF0dW1HZXRQb2ludGVyKGRhdHVtKTsKKwkJdHVw bGVfY3RpZCA9ICp0dXBsZWlkOwkvKiBiZSBzdXJlIHdlIGRvbid0IGZyZWUgY3RpZCEhICov CisJCXR1cGxlaWQgPSAmdHVwbGVfY3RpZDsKKwl9CisJZWxzZQorCXsKKwkJbWF0Y2hlZCA9 IGZhbHNlOworCQkvKiB3ZSBkb24ndCBuZWVkIHRoaXMgZm9yIE5PVCBNQVRDSEVEIGFjdGlv bnMgKi8KKwkJdHVwbGVpZCA9IE5VTEw7CisJfQorCisJLyotLS0tLQorCSAqIElmIHdlIGFy ZSBkZWFsaW5nIHdpdGggYSBXSEVOIE1BVENIRUQgY2FzZSwgd2UgZXhlY3V0ZSB0aGUgZmly c3QKKwkgKiBhY3Rpb24gZm9yIHdoaWNoIHRoZSBhZGRpdGlvbmFsIFdIRU4gTUFUQ0hFRCBB TkQgcXVhbHMgcGFzcy4KKwkgKiBJZiBhbiBhY3Rpb24gd2l0aG91dCBxdWFscyBpcyBmb3Vu ZCwgdGhhdCBhY3Rpb24gaXMgZXhlY3V0ZWQuCisJICoKKwkgKiBTaW1pbGFybHksIGlmIHdl IGFyZSBkZWFsaW5nIHdpdGggV0hFTiBOT1QgTUFUQ0hFRCBjYXNlLCB3ZSBsb29rIGF0CisJ ICogdGhlIGdpdmVuIFdIRU4gTk9UIE1BVENIRUQgYWN0aW9ucyBpbiBzZXF1ZW5jZSB1bnRp bCBvbmUgcGFzc2VzLgorCSAqCisJICogVGhpbmdzIGdldCBpbnRlcmVzdGluZyBpbiBjYXNl IG9mIGNvbmN1cnJlbnQgdXBkYXRlL2RlbGV0ZSBvZiB0aGUKKwkgKiB0YXJnZXQgdHVwbGUu IFN1Y2ggY29uY3VycmVudCB1cGRhdGUvZGVsZXRlIGlzIGRldGVjdGVkIHdoaWxlIHdlIGFy ZQorCSAqIGV4ZWN1dGluZyBhIFdIRU4gTUFUQ0hFRCBhY3Rpb24uCisJICoKKwkgKiBBIGNv bmN1cnJlbnQgdXBkYXRlIGNhbjoKKwkgKgorCSAqIDEuIG1vZGlmeSB0aGUgdGFyZ2V0IHR1 cGxlIHNvIHRoYXQgaXQgbm8gbG9uZ2VyIHNhdGlzZmllcyB0aGUKKwkgKiAgICBhZGRpdGlv bmFsIHF1YWxzIGF0dGFjaGVkIHRvIHRoZSBjdXJyZW50IFdIRU4gTUFUQ0hFRCBhY3Rpb24K KwkgKgorCSAqICAgIEluIHRoaXMgY2FzZSwgd2UgYXJlIHN0aWxsIGRlYWxpbmcgd2l0aCBh IFdIRU4gTUFUQ0hFRCBjYXNlLgorCSAqICAgIEluIHRoaXMgY2FzZSwgd2UgcmVjaGVjayB0 aGUgbGlzdCBvZiBXSEVOIE1BVENIRUQgYWN0aW9ucyBmcm9tCisJICogICAgdGhlIHN0YXJ0 IGFuZCBjaG9vc2UgdGhlIGZpcnN0IG9uZSB0aGF0IHNhdGlzZmllcyB0aGUgbmV3IHRhcmdl dAorCSAqICAgIHR1cGxlLgorCSAqCisJICogMi4gbW9kaWZ5IHRoZSB0YXJnZXQgdHVwbGUg c28gdGhhdCB0aGUgam9pbiBxdWFscyBubyBsb25nZXIgcGFzcyBhbmQKKwkgKiAgICBoZW5j ZSB0aGUgc291cmNlIHR1cGxlIG5vIGxvbmdlciBoYXMgYSBtYXRjaC4KKwkgKgorCSAqICAg IEluIHRoaXMgY2FzZSwgdGhlIHNvdXJjZSB0dXBsZSBubyBsb25nZXIgbWF0Y2hlcyB0aGUg dGFyZ2V0IHR1cGxlLAorCSAqICAgIHNvIHdlIG5vdyBpbnN0ZWFkIGZpbmQgYSBxdWFsaWZ5 aW5nIFdIRU4gTk9UIE1BVENIRUQgYWN0aW9uIHRvCisJICogICAgZXhlY3V0ZS4KKwkgKgor CSAqIFhYWCBIbW1tLCB3aGF0IGlmIHRoZSB1cGRhdGVkIHR1cGxlIHdvdWxkIG5vdyBtYXRj aCBvbmUgdGhhdCB3YXMKKwkgKiBjb25zaWRlcmVkIE5PVCBNQVRDSEVEIHNvIGZhcj8KKwkg KgorCSAqIEEgY29uY3VycmVudCBkZWxldGUgY2hhbmdlcyBhIFdIRU4gTUFUQ0hFRCBjYXNl IHRvIFdIRU4gTk9UIE1BVENIRUQuCisJICoKKwkgKiBFeGVjTWVyZ2VNYXRjaGVkIHRha2Vz IGNhcmUgb2YgZm9sbG93aW5nIHRoZSB1cGRhdGUgY2hhaW4gYW5kCisJICogcmUtZmluZGlu ZyB0aGUgcXVhbGlmeWluZyBXSEVOIE1BVENIRUQgYWN0aW9uLCBhcyBsb25nIGFzIHRoZSB1 cGRhdGVkCisJICogdGFyZ2V0IHR1cGxlIHN0aWxsIHNhdGlzZmllcyB0aGUgam9pbiBxdWFs cywgaS5lLiwgaXQgcmVtYWlucyBhIFdIRU4KKwkgKiBNQVRDSEVEIGNhc2UuIElmIHRoZSB0 dXBsZSBnZXRzIGRlbGV0ZWQgb3IgdGhlIGpvaW4gcXVhbHMgZmFpbCwgaXQKKwkgKiByZXR1 cm5zIGFuZCB3ZSB0cnkgRXhlY01lcmdlTm90TWF0Y2hlZC4gR2l2ZW4gdGhhdCBFeGVjTWVy Z2VNYXRjaGVkCisJICogYWx3YXlzIG1ha2UgcHJvZ3Jlc3MgYnkgZm9sbG93aW5nIHRoZSB1 cGRhdGUgY2hhaW4gYW5kIHdlIG5ldmVyIHN3aXRjaAorCSAqIGZyb20gRXhlY01lcmdlTm90 TWF0Y2hlZCB0byBFeGVjTWVyZ2VNYXRjaGVkLCB0aGVyZSBpcyBubyByaXNrIG9mIGEKKwkg KiBsaXZlbG9jay4KKwkgKi8KKwlpZiAobWF0Y2hlZCkKKwkJbWF0Y2hlZCA9IEV4ZWNNZXJn ZU1hdGNoZWQoY29udGV4dCwgcmVzdWx0UmVsSW5mbywgdHVwbGVpZCwgY2FuU2V0VGFnKTsK KworCS8qCisJICogRWl0aGVyIHdlIHdlcmUgZGVhbGluZyB3aXRoIGEgTk9UIE1BVENIRUQg dHVwbGUgb3IgRXhlY01lcmdlTWF0Y2hlZCgpCisJICogcmV0dXJuZWQgImZhbHNlIiwgaW5k aWNhdGluZyB0aGUgcHJldmlvdXNseSBNQVRDSEVEIHR1cGxlIG5vIGxvbmdlcgorCSAqIG1h dGNoZXMuCisJICovCisJaWYgKCFtYXRjaGVkKQorCQlFeGVjTWVyZ2VOb3RNYXRjaGVkKGNv bnRleHQsIHJlc3VsdFJlbEluZm8sIGNhblNldFRhZyk7CisKKwkvKiBObyBSRVRVUk5JTkcg c3VwcG9ydCB5ZXQgKi8KKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFR1cGxlVGFibGVT bG90ICoKK21lcmdlR2V0VXBkYXRlTmV3VHVwbGUoUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywK KwkJCQkgVHVwbGVUYWJsZVNsb3QgKnBsYW5TbG90LAorCQkJCSBUdXBsZVRhYmxlU2xvdCAq b2xkU2xvdCwKKwkJCQkgTWVyZ2VBY3Rpb25TdGF0ZSAqcmVsYWN0aW9uKQoreworCUV4cHJD b250ZXh0ICplY29udGV4dCA9IHJlbGFjdGlvbi0+bWFzX3Byb2otPnBpX2V4cHJDb250ZXh0 OworCisJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gb2xkU2xvdDsKKwllY29udGV4dC0+ ZWN4dF9pbm5lcnR1cGxlID0gcGxhblNsb3Q7CisKKwlyZXR1cm4gRXhlY1Byb2plY3QocmVs YWN0aW9uLT5tYXNfcHJvaik7Cit9CisKKy8qCisgKiBDaGVjayBhbmQgZXhlY3V0ZSB0aGUg Zmlyc3QgcXVhbGlmeWluZyBNQVRDSEVEIGFjdGlvbi4gVGhlIGN1cnJlbnQgdGFyZ2V0Cisg KiB0dXBsZSBpcyBpZGVudGlmaWVkIGJ5IHR1cGxlaWQuCisgKgorICogV2Ugc3RhcnQgZnJv bSB0aGUgZmlyc3QgV0hFTiBNQVRDSEVEIGFjdGlvbiBhbmQgY2hlY2sgaWYgdGhlIFdIRU4g cXVhbHMKKyAqIHBhc3MsIGlmIGFueS4gSWYgdGhlIFdIRU4gcXVhbHMgZm9yIHRoZSBmaXJz dCBhY3Rpb24gZG8gbm90IHBhc3MsIHdlCisgKiBjaGVjayB0aGUgc2Vjb25kLCB0aGVuIHRo ZSB0aGlyZCBhbmQgc28gb24uIElmIHdlIHJlYWNoIHRvIHRoZSBlbmQsIG5vCisgKiBhY3Rp b24gaXMgdGFrZW4gYW5kIHdlIHJldHVybiB0cnVlLCBpbmRpY2F0aW5nIHRoYXQgbm8gZnVy dGhlciBhY3Rpb24gaXMKKyAqIHJlcXVpcmVkIGZvciB0aGlzIHR1cGxlLgorICoKKyAqIElm IHdlIGRvIGZpbmQgYSBxdWFsaWZ5aW5nIGFjdGlvbiwgdGhlbiB3ZSBhdHRlbXB0IHRvIGV4 ZWN1dGUgdGhlIGFjdGlvbi4KKyAqCisgKiBJZiB0aGUgdHVwbGUgaXMgY29uY3VycmVudGx5 IHVwZGF0ZWQsIEV2YWxQbGFuUXVhbCBpcyBydW4gd2l0aCB0aGUgdXBkYXRlZAorICogdHVw bGUgdG8gcmVjaGVjayB0aGUgam9pbiBxdWFscy4gTm90ZSB0aGF0IHRoZSBhZGRpdGlvbmFs IHF1YWxzIGFzc29jaWF0ZWQKKyAqIHdpdGggaW5kaXZpZHVhbCBhY3Rpb25zIGFyZSBldmFs dWF0ZWQgYnkgdGhpcyByb3V0aW5lIHZpYSBFeGVjUXVhbCwgd2hpbGUKKyAqIEV2YWxQbGFu UXVhbCBjaGVja3MgZm9yIHRoZSBqb2luIHF1YWxzLiBJZiBFdmFsUGxhblF1YWwgdGVsbHMg dXMgdGhhdCB0aGUKKyAqIHVwZGF0ZWQgdHVwbGUgc3RpbGwgcGFzc2VzIHRoZSBqb2luIHF1 YWxzLCB0aGVuIHdlIHJlc3RhcnQgZnJvbSB0aGUgZmlyc3QKKyAqIGFjdGlvbiB0byBsb29r IGZvciBhIHF1YWxpZnlpbmcgYWN0aW9uLiBPdGhlcndpc2UsIHdlIHJldHVybiBmYWxzZSAt LQorICogbWVhbmluZyB0aGF0IGEgTk9UIE1BVENIRUQgYWN0aW9uIG11c3Qgbm93IGJlIGV4 ZWN1dGVkIGZvciB0aGUgY3VycmVudAorICogc291cmNlIHR1cGxlLgorICovCitzdGF0aWMg Ym9vbAorRXhlY01lcmdlTWF0Y2hlZChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsIFJl c3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCisJCQkJIEl0ZW1Qb2ludGVyIHR1cGxlaWQs IGJvb2wgY2FuU2V0VGFnKQoreworCU1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUgPSBjb250 ZXh0LT5tdHN0YXRlOworCVR1cGxlVGFibGVTbG90ICpuZXdzbG90OworCUVTdGF0ZQkgICAq ZXN0YXRlID0gY29udGV4dC0+ZXN0YXRlOworCUV4cHJDb250ZXh0ICplY29udGV4dCA9IG10 c3RhdGUtPnBzLnBzX0V4cHJDb250ZXh0OworCWJvb2wJCWlzTnVsbDsKKwlFUFFTdGF0ZSAg ICplcHFzdGF0ZSA9ICZtdHN0YXRlLT5tdF9lcHFzdGF0ZTsKKwlMaXN0Q2VsbCAgICpsOwor CisJLyoKKwkgKiBJZiB0aGVyZSBhcmUgbm8gV0hFTiBNQVRDSEVEIGFjdGlvbnMsIHdlIGFy ZSBkb25lLgorCSAqLworCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9tYXRjaGVkTWVyZ2VBY3Rp b24gPT0gTklMKQorCQlyZXR1cm4gdHJ1ZTsKKworCS8qCisJICogTWFrZSB0dXBsZSBhbmQg YW55IG5lZWRlZCBqb2luIHZhcmlhYmxlcyBhdmFpbGFibGUgdG8gRXhlY1F1YWwgYW5kCisJ ICogRXhlY1Byb2plY3QuIFRoZSB0YXJnZXQncyBleGlzdGluZyB0dXBsZSBpcyBpbnN0YWxs ZWQgaW4gdGhlIHNjYW50dXBsZS4KKwkgKiBBZ2FpbiwgdGhpcyB0YXJnZXQgcmVsYXRpb24n cyBzbG90IGlzIHJlcXVpcmVkIG9ubHkgaW4gdGhlIGNhc2Ugb2YgYQorCSAqIE1BVENIRUQg dHVwbGUgYW5kIFVQREFURS9ERUxFVEUgYWN0aW9ucy4KKwkgKi8KKwllY29udGV4dC0+ZWN4 dF9zY2FudHVwbGUgPSByZXN1bHRSZWxJbmZvLT5yaV9vbGRUdXBsZVNsb3Q7CisJZWNvbnRl eHQtPmVjeHRfaW5uZXJ0dXBsZSA9IGNvbnRleHQtPnBsYW5TbG90OworCWVjb250ZXh0LT5l Y3h0X291dGVydHVwbGUgPSBOVUxMOworCitsbWVyZ2VfbWF0Y2hlZDo7CisKKwkvKgorCSAq IFRoaXMgcm91dGluZSBpcyBvbmx5IGludm9rZWQgZm9yIG1hdGNoZWQgcm93cywgYW5kIHdl IG11c3QgaGF2ZSBmb3VuZAorCSAqIHRoZSB0dXBsZWlkIG9mIHRoZSB0YXJnZXQgcm93IGlu IHRoYXQgY2FzZTsgZmV0Y2ggdGhhdCB0dXBsZS4KKwkgKgorCSAqIFdlIHVzZSBTbmFwc2hv dEFueSBmb3IgdGhpcyBiZWNhdXNlIHdlIG1pZ2h0IGdldCBjYWxsZWQgYWdhaW4gYWZ0ZXIK KwkgKiBFdmFsUGxhblF1YWwgcmV0dXJucyB1cyBhIG5ldyB0dXBsZSwgd2hpY2ggbWF5IG5v dCBiZSB2aXNpYmxlIHRvIG91cgorCSAqIE1WQ0Mgc25hcHNob3QuCisJICovCisKKwlpZiAo IXRhYmxlX3R1cGxlX2ZldGNoX3Jvd192ZXJzaW9uKHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0 aW9uRGVzYywKKwkJCQkJCQkJCSAgIHR1cGxlaWQsCisJCQkJCQkJCQkgICBTbmFwc2hvdEFu eSwKKwkJCQkJCQkJCSAgIHJlc3VsdFJlbEluZm8tPnJpX29sZFR1cGxlU2xvdCkpCisJCWVs b2coRVJST1IsICJmYWlsZWQgdG8gZmV0Y2ggdGhlIHRhcmdldCB0dXBsZSIpOworCisJZm9y ZWFjaChsLCByZXN1bHRSZWxJbmZvLT5yaV9tYXRjaGVkTWVyZ2VBY3Rpb24pCisJeworCQlN ZXJnZUFjdGlvblN0YXRlICpyZWxhY3Rpb24gPSAoTWVyZ2VBY3Rpb25TdGF0ZSAqKSBsZmly c3QobCk7CisJCUNtZFR5cGUJCWNvbW1hbmRUeXBlID0gcmVsYWN0aW9uLT5tYXNfYWN0aW9u LT5jb21tYW5kVHlwZTsKKwkJTGlzdAkgICAqcmVjaGVja0luZGV4ZXMgPSBOSUw7CisJCVRN X1Jlc3VsdAlyZXN1bHQ7CisJCVVwZGF0ZUNvbnRleHQgdXBkYXRlQ3h0ID0gezB9OworCisJ CS8qCisJCSAqIFRlc3QgY29uZGl0aW9uLCBpZiBhbnkuCisJCSAqCisJCSAqIEluIHRoZSBh YnNlbmNlIG9mIGFueSBjb25kaXRpb24sIHdlIHBlcmZvcm0gdGhlIGFjdGlvbgorCQkgKiB1 bmNvbmRpdGlvbmFsbHkgKG5vIG5lZWQgdG8gY2hlY2sgc2VwYXJhdGVseSBzaW5jZSBFeGVj UXVhbCgpIHdpbGwKKwkJICogcmV0dXJuIHRydWUgaWYgdGhlcmUgYXJlIG5vIGNvbmRpdGlv bnMgdG8gZXZhbHVhdGUpLgorCQkgKi8KKwkJaWYgKCFFeGVjUXVhbChyZWxhY3Rpb24tPm1h c193aGVucXVhbCwgZWNvbnRleHQpKQorCQkJY29udGludWU7CisKKwkJLyoKKwkJICogQ2hl Y2sgaWYgdGhlIGV4aXN0aW5nIHRhcmdldCB0dXBsZSBtZWV0cyB0aGUgVVNJTkcgY2hlY2tz IG9mCisJCSAqIFVQREFURS9ERUxFVEUgUkxTIHBvbGljaWVzLiBJZiB0aG9zZSBjaGVja3Mg ZmFpbCwgd2UgdGhyb3cgYW4KKwkJICogZXJyb3IuCisJCSAqCisJCSAqIFRoZSBXSVRIIENI RUNLIHF1YWxzIGFyZSBhcHBsaWVkIGluIEV4ZWNVcGRhdGUoKSBhbmQgaGVuY2Ugd2UgbmVl ZAorCQkgKiBub3QgZG8gYW55dGhpbmcgc3BlY2lhbCB0byBoYW5kbGUgdGhlbS4KKwkJICoK KwkJICogTk9URTogV2UgbXVzdCBkbyB0aGlzIGFmdGVyIFdIRU4gcXVhbHMgYXJlIGV2YWx1 YXRlZCwgc28gdGhhdCB3ZQorCQkgKiBjaGVjayBwb2xpY2llcyBvbmx5IHdoZW4gdGhleSBt YXR0ZXIuCisJCSAqLworCQlpZiAocmVzdWx0UmVsSW5mby0+cmlfV2l0aENoZWNrT3B0aW9u cykKKwkJeworCQkJRXhlY1dpdGhDaGVja09wdGlvbnMoY29tbWFuZFR5cGUgPT0gQ01EX1VQ REFURSA/CisJCQkJCQkJCSBXQ09fUkxTX01FUkdFX1VQREFURV9DSEVDSyA6IFdDT19STFNf TUVSR0VfREVMRVRFX0NIRUNLLAorCQkJCQkJCQkgcmVzdWx0UmVsSW5mbywKKwkJCQkJCQkJ IHJlc3VsdFJlbEluZm8tPnJpX29sZFR1cGxlU2xvdCwKKwkJCQkJCQkJIGNvbnRleHQtPm10 c3RhdGUtPnBzLnN0YXRlKTsKKwkJfQorCisJCS8qIFBlcmZvcm0gc3RhdGVkIGFjdGlvbiAq LworCQlzd2l0Y2ggKGNvbW1hbmRUeXBlKQorCQl7CisJCQljYXNlIENNRF9VUERBVEU6CisK KwkJCQkvKgorCQkJCSAqIFByb2plY3QgdGhlIG91dHB1dCB0dXBsZSwgYW5kIHVzZSB0aGF0 IHRvIHVwZGF0ZSB0aGUgdGFibGUuCisJCQkJICogV2UgZG9uJ3QgbmVlZCB0byBmaWx0ZXIg b3V0IGp1bmsgYXR0cmlidXRlcywgYmVjYXVzZSB0aGUKKwkJCQkgKiBVUERBVEUgYWN0aW9u J3MgdGFyZ2V0bGlzdCBkb2Vzbid0IGhhdmUgYW55LgorCQkJCSAqLworCQkJCW5ld3Nsb3Qg PSBFeGVjUHJvamVjdChyZWxhY3Rpb24tPm1hc19wcm9qKTsKKworCQkJCWNvbnRleHQtPnJl bGFjdGlvbiA9IHJlbGFjdGlvbjsKKwkJCQljb250ZXh0LT5HZXRVcGRhdGVOZXdUdXBsZSA9 IG1lcmdlR2V0VXBkYXRlTmV3VHVwbGU7CisKKwkJCQlFeGVjVXBkYXRlUHJvbG9ndWUoY29u dGV4dCwgcmVzdWx0UmVsSW5mbywKKwkJCQkJCQkJICAgdHVwbGVpZCwgTlVMTCwgbmV3c2xv dCk7CisJCQkJRXhlY1VwZGF0ZVByZXBhcmVTbG90KHJlc3VsdFJlbEluZm8sIG5ld3Nsb3Qs IGNvbnRleHQtPmVzdGF0ZSk7CisJCQkJcmVzdWx0ID0gRXhlY1VwZGF0ZUFjdChjb250ZXh0 LCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLCBOVUxMLAorCQkJCQkJCQkJICAgbmV3c2xvdCwg bXRzdGF0ZS0+Y2FuU2V0VGFnLCAmdXBkYXRlQ3h0KTsKKwkJCQlicmVhazsKKworCQkJY2Fz ZSBDTURfREVMRVRFOgorCQkJCWNvbnRleHQtPnJlbGFjdGlvbiA9IHJlbGFjdGlvbjsKKwor CQkJCUV4ZWNEZWxldGVQcm9sb2d1ZShjb250ZXh0LCByZXN1bHRSZWxJbmZvLCB0dXBsZWlk LCBOVUxMLCBOVUxMKTsKKwkJCQlyZXN1bHQgPSBFeGVjRGVsZXRlQWN0KGNvbnRleHQsIHJl c3VsdFJlbEluZm8sIHR1cGxlaWQsIGZhbHNlKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBD TURfTk9USElORzoKKwkJCQkvKiBEb2luZyBub3RoaW5nIGlzIGFsd2F5cyBPSyAqLworCQkJ CXJlc3VsdCA9IFRNX09rOworCQkJCWJyZWFrOworCisJCQlkZWZhdWx0OgorCQkJCWVsb2co RVJST1IsICJ1bmtub3duIGFjdGlvbiBpbiBNRVJHRSBXSEVOIE1BVENIRUQgY2xhdXNlIik7 CisJCX0KKworCQlzd2l0Y2ggKHJlc3VsdCkKKwkJeworCQkJY2FzZSBUTV9PazoKKwkJCQkv KiBhbGwgZ29vZCAqLworCQkJCWJyZWFrOworCisJCQljYXNlIFRNX1NlbGZNb2RpZmllZDoK KwkJCQkvKgorCQkJCSAqIFRoZSBTUUwgc3RhbmRhcmQgZGlzYWxsb3dzIHRoaXMgZm9yIE1F UkdFLgorCQkJCSAqLworCQkJCWlmIChUcmFuc2FjdGlvbklkSXNDdXJyZW50VHJhbnNhY3Rp b25JZChjb250ZXh0LT50bWZkLnhtYXgpKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJ CShlcnJjb2RlKEVSUkNPREVfQ0FSRElOQUxJVFlfVklPTEFUSU9OKSwKKwkJCQkJCQkgLyot IHRyYW5zbGF0b3I6ICVzIGlzIGEgU1FMIGNvbW1hbmQgbmFtZSAqLworCQkJCQkJCSBlcnJt c2coIiVzIGNvbW1hbmQgY2Fubm90IGFmZmVjdCByb3cgYSBzZWNvbmQgdGltZSIsCisJCQkJ CQkJCQkiTUVSR0UiKSwKKwkJCQkJCQkgZXJyaGludCgiRW5zdXJlIHRoYXQgbm90IG1vcmUg dGhhbiBvbmUgc291cmNlIHJvdyBtYXRjaGVzIGFueSBvbmUgdGFyZ2V0IHJvdy4iKSkpOwor CQkJCS8qIFRoaXMgc2hvdWxkbid0IGhhcHBlbiAqLworCQkJCWVsb2coRVJST1IsICJhdHRl bXB0ZWQgdG8gdXBkYXRlIG9yIGRlbGV0ZSBpbnZpc2libGUgdHVwbGUiKTsKKwkJCQlicmVh azsKKworCQkJY2FzZSBUTV9JbnZpc2libGU6CisKKwkJCQkvKgorCQkJCSAqIFRoaXMgc3Rh dGUgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQgc2luY2UgdGhlIHVuZGVybHlpbmcKKwkJCQkg KiBKT0lOIHJ1bnMgd2l0aCBhIE1WQ0Mgc25hcHNob3QgYW5kIEV2YWxQbGFuUXVhbCBydW5z CisJCQkJICogd2l0aCBhIGRpcnR5IHNuYXBzaG90LiBTbyBzdWNoIGEgcm93IHNob3VsZCBo YXZlIG5ldmVyCisJCQkJICogYmVlbiByZXR1cm5lZCBmb3IgTUVSR0UuCisJCQkJICovCisJ CQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgaW52aXNpYmxlIHR1cGxlIik7CisJCQkJYnJl YWs7CisKKwkJCWNhc2UgVE1fRGVsZXRlZDoKKwkJCQlpZiAoY29tbWFuZFR5cGUgPT0gQ01E X1VQREFURSkKKwkJCQl7CisJCQkJCWlmIChJc29sYXRpb25Vc2VzWGFjdFNuYXBzaG90KCkp CisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1RfUl9T RVJJQUxJWkFUSU9OX0ZBSUxVUkUpLAorCQkJCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qgc2Vy aWFsaXplIGFjY2VzcyBkdWUgdG8gY29uY3VycmVudCBkZWxldGUiKSkpOworCisJCQkJCS8q CisJCQkJCSAqIHR1cGxlIGFscmVhZHkgZGVsZXRlZDsgbm90aGluZyB0byBkby4gQnV0IE1F UkdFIG1pZ2h0IHdhbnQKKwkJCQkJICogdG8gaGFuZGxlIGl0IGRpZmZlcmVudGx5LiBXZSd2 ZSBhbHJlYWR5IGZpbGxlZC1pbiB0bWZkcAorCQkJCQkgKiB3aXRoIHN1ZmZpY2llbnQgaW5m b3JtYXRpb24gZm9yIE1FUkdFIHRvIGxvb2sgYXQuCisJCQkJCSAqLworCQkJCQlyZXR1cm4g TlVMTDsKKwkJCQl9CisKKwkJCQkvKiBmYWxsIHRocm91Z2ggKi8KKwkJCWNhc2UgVE1fVXBk YXRlZDoKKworCQkJCS8qCisJCQkJICogVGhlIHRhcmdldCB0dXBsZSB3YXMgY29uY3VycmVu dGx5IHVwZGF0ZWQvZGVsZXRlZCBieQorCQkJCSAqIHNvbWUgb3RoZXIgdHJhbnNhY3Rpb24u CisJCQkJICoKKwkJCQkgKiBJZiB0aGUgY3VycmVudCB0dXBsZSBpcyB0aGUgbGFzdCB0dXBs ZSBpbiB0aGUgdXBkYXRlCisJCQkJICogY2hhaW4sIHRoZW4gd2Uga25vdyB0aGF0IHRoZSB0 dXBsZSB3YXMgY29uY3VycmVudGx5CisJCQkJICogZGVsZXRlZC4gSnVzdCByZXR1cm4gYW5k IGxldCB0aGUgY2FsbGVyIHRyeSBOT1QgTUFUQ0hFRAorCQkJCSAqIGFjdGlvbnMuCisJCQkJ ICoKKwkJCQkgKiBJZiB0aGUgY3VycmVudCB0dXBsZSB3YXMgY29uY3VycmVudGx5IHVwZGF0 ZWQsIHRoZW4gd2UKKwkJCQkgKiBtdXN0IHJ1biB0aGUgRXZhbFBsYW5RdWFsKCkgd2l0aCB0 aGUgbmV3IHZlcnNpb24gb2YgdGhlCisJCQkJICogdHVwbGUuIElmIEV2YWxQbGFuUXVhbCgp IGRvZXMgbm90IHJldHVybiBhIHR1cGxlLCB0aGVuCisJCQkJICogd2Ugc3dpdGNoIHRvIHRo ZSBOT1QgTUFUQ0hFRCBsaXN0IG9mIGFjdGlvbnMuIElmIGl0CisJCQkJICogZG9lcyByZXR1 cm4gYSB0dXBsZSBhbmQgdGhlIGpvaW4gcXVhbCBpcyBzdGlsbAorCQkJCSAqIHNhdGlzZmll ZCwgdGhlbiB3ZSBqdXN0IG5lZWQgdG8gcmVjaGVjayB0aGUgTUFUQ0hFRAorCQkJCSAqIGFj dGlvbnMsIHN0YXJ0aW5nIGZyb20gdGhlIHRvcCwgYW5kIGV4ZWN1dGUgdGhlIGZpcnN0CisJ CQkJICogcXVhbGlmeWluZyBhY3Rpb24uCisJCQkJICovCisJCQkJaWYgKCFJdGVtUG9pbnRl ckVxdWFscyh0dXBsZWlkLCAmY29udGV4dC0+dG1mZC5jdGlkKSkKKwkJCQl7CisJCQkJCVJl bGF0aW9uCXJlc3VsdFJlbGF0aW9uRGVzYyA9IHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9u RGVzYzsKKwkJCQkJVHVwbGVUYWJsZVNsb3QgKmVwcXNsb3QsCisJCQkJCQkJCSAgICppbnB1 dHNsb3Q7CisJCQkJCUxvY2tUdXBsZU1vZGUgbG9ja21vZGUgPSBFeGVjVXBkYXRlTG9ja01v ZGUoZXN0YXRlLCByZXN1bHRSZWxJbmZvKTsKKworCQkJCQlpbnB1dHNsb3QgPSBFdmFsUGxh blF1YWxTbG90KGVwcXN0YXRlLCByZXN1bHRSZWxhdGlvbkRlc2MsCisJCQkJCQkJCQkJCQkg cmVzdWx0UmVsSW5mby0+cmlfUmFuZ2VUYWJsZUluZGV4KTsKKworCQkJCQlyZXN1bHQgPSB0 YWJsZV90dXBsZV9sb2NrKHJlc3VsdFJlbGF0aW9uRGVzYywgdHVwbGVpZCwKKwkJCQkJCQkJ CQkJICBlc3RhdGUtPmVzX3NuYXBzaG90LAorCQkJCQkJCQkJCQkgIGlucHV0c2xvdCwgZXN0 YXRlLT5lc19vdXRwdXRfY2lkLAorCQkJCQkJCQkJCQkgIGxvY2ttb2RlLCBMb2NrV2FpdEJs b2NrLAorCQkJCQkJCQkJCQkgIFRVUExFX0xPQ0tfRkxBR19GSU5EX0xBU1RfVkVSU0lPTiwK KwkJCQkJCQkJCQkJICAmY29udGV4dC0+dG1mZCk7CisJCQkJCXN3aXRjaCAocmVzdWx0KQor CQkJCQl7CisJCQkJCQljYXNlIFRNX09rOgorCQkJCQkJCWVwcXNsb3QgPSBFdmFsUGxhblF1 YWwoZXBxc3RhdGUsCisJCQkJCQkJCQkJCQkgICByZXN1bHRSZWxhdGlvbkRlc2MsCisJCQkJ CQkJCQkJCQkgICByZXN1bHRSZWxJbmZvLT5yaV9SYW5nZVRhYmxlSW5kZXgsCisJCQkJCQkJ CQkJCQkgICBpbnB1dHNsb3QpOworCisJCQkJCQkJLyoKKwkJCQkJCQkgKiBJZiB3ZSBnb3Qg bm8gdHVwbGUsIG9yIHRoZSB0dXBsZSB3ZSBnZXQgaGFzCisJCQkJCQkJICogYSBOVUxMIGN0 aWQsIGdvIGJhY2sgdG8gY2FsbGVyOiB0aGlzIG9uZSBpcworCQkJCQkJCSAqIG5vdCBhIE1B VENIRUQgdHVwbGUgYW55bW9yZSwgc28gdGhleSBjYW4KKwkJCQkJCQkgKiByZXRyeSB3aXRo IE5PVCBNQVRDSEVEIGFjdGlvbnMuCisJCQkJCQkJICovCisJCQkJCQkJaWYgKFR1cElzTnVs bChlcHFzbG90KSkKKwkJCQkJCQkJcmV0dXJuIGZhbHNlOworCisJCQkJCQkJKHZvaWQpIEV4 ZWNHZXRKdW5rQXR0cmlidXRlKGVwcXNsb3QsCisJCQkJCQkJCQkJCQkJCXJlc3VsdFJlbElu Zm8tPnJpX1Jvd0lkQXR0Tm8sCisJCQkJCQkJCQkJCQkJCSZpc051bGwpOworCQkJCQkJCWlm IChpc051bGwpCisJCQkJCQkJCXJldHVybiBmYWxzZTsKKworCQkJCQkJCS8qCisJCQkJCQkJ ICogV2hlbiBhIHR1cGxlIHdhcyB1cGRhdGVkIGFuZCBtaWdyYXRlZCB0bworCQkJCQkJCSAq IGFub3RoZXIgcGFydGl0aW9uIGNvbmN1cnJlbnRseSwgdGhlIGN1cnJlbnQKKwkJCQkJCQkg KiBNRVJHRSBpbXBsZW1lbnRhdGlvbiBjYW4ndCBmb2xsb3cuICBUaGVyZSdzCisJCQkJCQkJ ICogcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGhhbmRsZSB0aGlzIGNhc2UsCisJCQkJCQkJ ICogYnV0IGl0J2QgcmVxdWlyZSByZWNvZ25pemluZyB0aGUgcmVsYXRpb24KKwkJCQkJCQkg KiB0byB3aGljaCB0aGUgdHVwbGUgbW92ZWQsIGFuZCBzZXR0aW5nIG91cgorCQkJCQkJCSAq IGN1cnJlbnQgcmVzdWx0UmVsSW5mbyB0byB0aGF0LgorCQkJCQkJCSAqLworCQkJCQkJCWlm IChJdGVtUG9pbnRlckluZGljYXRlc01vdmVkUGFydGl0aW9ucygmY29udGV4dC0+dG1mZC5j dGlkKSkKKwkJCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJCQkoZXJyY29kZShFUlJD T0RFX1RfUl9TRVJJQUxJWkFUSU9OX0ZBSUxVUkUpLAorCQkJCQkJCQkJCSBlcnJtc2coInR1 cGxlIHRvIGJlIGRlbGV0ZWQgd2FzIGFscmVhZHkgbW92ZWQgdG8gYW5vdGhlciBwYXJ0aXRp b24gZHVlIHRvIGNvbmN1cnJlbnQgdXBkYXRlIikpKTsKKworCQkJCQkJCS8qCisJCQkJCQkJ ICogQSBub24tTlVMTCBjdGlkIG1lYW5zIHRoYXQgd2UgYXJlIHN0aWxsCisJCQkJCQkJICog ZGVhbGluZyB3aXRoIE1BVENIRUQgY2FzZS4gUmVzdGFydCB0aGUgbG9vcAorCQkJCQkJCSAq IHNvIHRoYXQgd2UgYXBwbHkgYWxsIHRoZSBNQVRDSEVEIHJ1bGVzCisJCQkJCQkJICogYWdh aW4sIHRvIGVuc3VyZSB0aGF0IHRoZSBmaXJzdCBxdWFsaWZ5aW5nCisJCQkJCQkJICogV0hF TiBNQVRDSEVEIGFjdGlvbiBpcyBleGVjdXRlZC4KKwkJCQkJCQkgKgorCQkJCQkJCSAqIFVw ZGF0ZSB0dXBsZWlkIHRvIHRoYXQgb2YgdGhlIG5ldworCQkJCQkJCSAqIHR1cGxlLCBmb3Ig dGhlIHJlZmV0Y2ggd2UgZG8gYXQgdGhlIHRvcC4KKwkJCQkJCQkgKi8KKwkJCQkJCQlJdGVt UG9pbnRlckNvcHkoJmNvbnRleHQtPnRtZmQuY3RpZCwgdHVwbGVpZCk7CisJCQkJCQkJZ290 byBsbWVyZ2VfbWF0Y2hlZDsKKworCQkJCQkJY2FzZSBUTV9EZWxldGVkOgorCisJCQkJCQkJ LyoKKwkJCQkJCQkgKiB0dXBsZSBhbHJlYWR5IGRlbGV0ZWQ7IHRlbGwgY2FsbGVyIHRvIHJ1 bgorCQkJCQkJCSAqIE5PVCBNQVRDSEVEIGFjdGlvbnMKKwkJCQkJCQkgKi8KKwkJCQkJCQly ZXR1cm4gZmFsc2U7CisKKwkJCQkJCWNhc2UgVE1fU2VsZk1vZGlmaWVkOgorCisJCQkJCQkJ LyoKKwkJCQkJCQkgKiBUaGlzIGNhbiBiZSByZWFjaGVkIHdoZW4gZm9sbG93aW5nIGFuCisJ CQkJCQkJICogdXBkYXRlIGNoYWluIGZyb20gYSB0dXBsZSB1cGRhdGVkIGJ5CisJCQkJCQkJ ICogYW5vdGhlciBzZXNzaW9uLCByZWFjaGluZyBhIHR1cGxlIHRoYXQgd2FzCisJCQkJCQkJ ICogYWxyZWFkeSB1cGRhdGVkIGluIHRoaXMgdHJhbnNhY3Rpb24uIElmCisJCQkJCQkJICog cHJldmlvdXNseSBtb2RpZmllZCBieSB0aGlzIGNvbW1hbmQsIGlnbm9yZQorCQkJCQkJCSAq IHRoZSByZWR1bmRhbnQgdXBkYXRlLCBvdGhlcndpc2UgZXJyb3Igb3V0LgorCQkJCQkJCSAq CisJCQkJCQkJICogU2VlIGFsc28gcmVzcG9uc2UgdG8gVE1fU2VsZk1vZGlmaWVkIGluCisJ CQkJCQkJICogRXhlY1VwZGF0ZSgpLgorCQkJCQkJCSAqLworCQkJCQkJCWlmIChjb250ZXh0 LT50bWZkLmNtYXggIT0gZXN0YXRlLT5lc19vdXRwdXRfY2lkKQorCQkJCQkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfVFJJR0dFUkVEX0RBVEFfQ0hB TkdFX1ZJT0xBVElPTiksCisJCQkJCQkJCQkJIGVycm1zZygidHVwbGUgdG8gYmUgdXBkYXRl ZCBvciBkZWxldGVkIHdhcyBhbHJlYWR5IG1vZGlmaWVkIGJ5IGFuIG9wZXJhdGlvbiB0cmln Z2VyZWQgYnkgdGhlIGN1cnJlbnQgY29tbWFuZCIpLAorCQkJCQkJCQkJCSBlcnJoaW50KCJD b25zaWRlciB1c2luZyBhbiBBRlRFUiB0cmlnZ2VyIGluc3RlYWQgb2YgYSBCRUZPUkUgdHJp Z2dlciB0byBwcm9wYWdhdGUgY2hhbmdlcyB0byBvdGhlciByb3dzLiIpKSk7CisJCQkJCQkJ cmV0dXJuIGZhbHNlOworCisJCQkJCQlkZWZhdWx0OgorCQkJCQkJCS8qIHNlZSB0YWJsZV90 dXBsZV9sb2NrIGNhbGwgaW4gRXhlY0RlbGV0ZSgpICovCisJCQkJCQkJZWxvZyhFUlJPUiwg InVuZXhwZWN0ZWQgdGFibGVfdHVwbGVfbG9jayBzdGF0dXM6ICV1IiwKKwkJCQkJCQkJIHJl c3VsdCk7CisJCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJCQl9CisJCQkJfQorCisJCQkJLyoK KwkJCQkgKiBUZWxsIHRoZSBjYWxsZXIgYWJvdXQgdGhlIHVwZGF0ZWQgVElELCByZXN0b3Jl IHRoZQorCQkJCSAqIHN0YXRlIGJhY2sgYW5kIHJldHVybi4KKwkJCQkgKi8KKwkJCQlJdGVt UG9pbnRlckNvcHkoJmNvbnRleHQtPnRtZmQuY3RpZCwgdHVwbGVpZCk7CisJCQkJcmV0dXJu IGZhbHNlOworCisJCQlkZWZhdWx0OgorCQkJCWJyZWFrOworCQl9CisKKwkJaWYgKGNvbW1h bmRUeXBlID09IENNRF9VUERBVEUgJiYgdXBkYXRlQ3h0LnVwZGF0ZWQpCisJCXsKKwkJCWlm IChyZXN1bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2VzID4gMCAmJiB1cGRhdGVDeHQudXBkYXRl SW5kZXhlcykKKwkJCQlyZWNoZWNrSW5kZXhlcyA9CisJCQkJCUV4ZWNJbnNlcnRJbmRleFR1 cGxlcyhyZXN1bHRSZWxJbmZvLAorCQkJCQkJCQkJCSAgbmV3c2xvdCwKKwkJCQkJCQkJCQkg IGVzdGF0ZSwKKwkJCQkJCQkJCQkgIHRydWUsIGZhbHNlLAorCQkJCQkJCQkJCSAgTlVMTCwg TklMKTsKKworCQkJRXhlY1VwZGF0ZUVwaWxvZ3VlKGNvbnRleHQsIHJlc3VsdFJlbEluZm8s IHR1cGxlaWQsIE5VTEwsIG5ld3Nsb3QsCisJCQkJCQkJICAgcmVjaGVja0luZGV4ZXMpOwor CQkJaWYgKGNhblNldFRhZykKKwkJCQkoZXN0YXRlLT5lc19wcm9jZXNzZWQpKys7CisJCQlJ bnN0ckNvdW50RmlsdGVyZWQyKCZtdHN0YXRlLT5wcywgMSk7CisJCX0KKworCQlpZiAoY29t bWFuZFR5cGUgPT0gQ01EX0RFTEVURSkKKwkJeworCQkJRXhlY0RlbGV0ZUVwaWxvZ3VlKGNv bnRleHQsIHJlc3VsdFJlbEluZm8sIHR1cGxlaWQsIE5VTEwpOworCQkJaWYgKGNhblNldFRh ZykKKwkJCQkoZXN0YXRlLT5lc19wcm9jZXNzZWQpKys7CisJCQlJbnN0ckNvdW50RmlsdGVy ZWQzKCZtdHN0YXRlLT5wcywgMSk7CisJCX0KKworCQkvKgorCQkgKiBXZSd2ZSBhY3RpdmF0 ZWQgb25lIG9mIHRoZSBXSEVOIGNsYXVzZXMsIHNvIHdlIGRvbid0IHNlYXJjaAorCQkgKiBm dXJ0aGVyLiBUaGlzIGlzIHJlcXVpcmVkIGJlaGF2aW91ciwgbm90IGFuIG9wdGltaXphdGlv bi4KKwkJICovCisJCWJyZWFrOworCX0KKworCS8qCisJICogU3VjY2Vzc2Z1bGx5IGV4ZWN1 dGVkIGFuIGFjdGlvbiBvciBubyBxdWFsaWZ5aW5nIGFjdGlvbiB3YXMgZm91bmQuCisJICov CisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBFeGVjdXRlIHRoZSBmaXJzdCBxdWFsaWZ5 aW5nIE5PVCBNQVRDSEVEIGFjdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK0V4ZWNNZXJnZU5v dE1hdGNoZWQoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1bHRSZWxJbmZvICpy ZXN1bHRSZWxJbmZvLAorCQkJCQlib29sIGNhblNldFRhZykKK3sKKwlNb2RpZnlUYWJsZVN0 YXRlICptdHN0YXRlID0gY29udGV4dC0+bXRzdGF0ZTsKKwlFeHByQ29udGV4dCAqZWNvbnRl eHQgPSBtdHN0YXRlLT5wcy5wc19FeHByQ29udGV4dDsKKwlMaXN0CSAgICphY3Rpb25TdGF0 ZXMgPSBOSUw7CisJTGlzdENlbGwgICAqbDsKKworCS8qCisJICogRm9yIElOU0VSVCBhY3Rp b25zLCB0aGUgcm9vdCByZWxhdGlvbidzIG1lcmdlIGFjdGlvbiBpcyBPSyBzaW5jZSB0aGUK KwkgKiBJTlNFUlQncyB0YXJnZXRsaXN0IGFuZCB0aGUgV0hFTiBjb25kaXRpb25zIGNhbiBv bmx5IHJlZmVyIHRvIHRoZQorCSAqIHNvdXJjZSByZWxhdGlvbiBhbmQgaGVuY2UgaXQgZG9l cyBub3QgbWF0dGVyIHdoaWNoIHJlc3VsdCByZWxhdGlvbiB3ZQorCSAqIHdvcmsgd2l0aC4K KwkgKgorCSAqIFhYWCBkb2VzIHRoaXMgbWVhbiB0aGF0IHdlIGNhbiBhdm9pZCBjcmVhdGlu ZyBjb3BpZXMgb2YgYWN0aW9uU3RhdGVzIG9uCisJICogcGFydGl0aW9uZWQgdGFibGVzLCBm b3Igbm90LW1hdGNoZWQgYWN0aW9ucz8KKwkgKi8KKwlhY3Rpb25TdGF0ZXMgPSByZXN1bHRS ZWxJbmZvLT5yaV9ub3RNYXRjaGVkTWVyZ2VBY3Rpb247CisKKwkvKgorCSAqIE1ha2Ugc291 cmNlIHR1cGxlIGF2YWlsYWJsZSB0byBFeGVjUXVhbCBhbmQgRXhlY1Byb2plY3QuIFdlIGRv bid0IG5lZWQKKwkgKiB0aGUgdGFyZ2V0IHR1cGxlLCBzaW5jZSB0aGUgV0hFTiBxdWFscyBh bmQgdGFyZ2V0bGlzdCBjYW4ndCByZWZlciB0bworCSAqIHRoZSB0YXJnZXQgY29sdW1ucy4K KwkgKi8KKwllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBOVUxMOworCWVjb250ZXh0LT5l Y3h0X2lubmVydHVwbGUgPSBjb250ZXh0LT5wbGFuU2xvdDsKKwllY29udGV4dC0+ZWN4dF9v dXRlcnR1cGxlID0gTlVMTDsKKworCWZvcmVhY2gobCwgYWN0aW9uU3RhdGVzKQorCXsKKwkJ TWVyZ2VBY3Rpb25TdGF0ZSAqYWN0aW9uID0gKE1lcmdlQWN0aW9uU3RhdGUgKikgbGZpcnN0 KGwpOworCQlDbWRUeXBlCQljb21tYW5kVHlwZSA9IGFjdGlvbi0+bWFzX2FjdGlvbi0+Y29t bWFuZFR5cGU7CisJCVR1cGxlVGFibGVTbG90ICpuZXdzbG90OworCisJCS8qCisJCSAqIFRl c3QgY29uZGl0aW9uLCBpZiBhbnkuCisJCSAqCisJCSAqIEluIHRoZSBhYnNlbmNlIG9mIGFu eSBjb25kaXRpb24sIHdlIHBlcmZvcm0gdGhlIGFjdGlvbgorCQkgKiB1bmNvbmRpdGlvbmFs bHkgKG5vIG5lZWQgdG8gY2hlY2sgc2VwYXJhdGVseSBzaW5jZSBFeGVjUXVhbCgpIHdpbGwK KwkJICogcmV0dXJuIHRydWUgaWYgdGhlcmUgYXJlIG5vIGNvbmRpdGlvbnMgdG8gZXZhbHVh dGUpLgorCQkgKi8KKwkJaWYgKCFFeGVjUXVhbChhY3Rpb24tPm1hc193aGVucXVhbCwgZWNv bnRleHQpKQorCQkJY29udGludWU7CisKKwkJLyogUGVyZm9ybSBzdGF0ZWQgYWN0aW9uICov CisJCXN3aXRjaCAoY29tbWFuZFR5cGUpCisJCXsKKwkJCWNhc2UgQ01EX0lOU0VSVDoKKwor CQkJCS8qCisJCQkJICogUHJvamVjdCB0aGUgdHVwbGUuICBJbiBjYXNlIG9mIGEgcGFydGl0 aW9uZWQgdGFibGUsIHRoZQorCQkJCSAqIHByb2plY3Rpb24gd2FzIGFscmVhZHkgYnVpbHQg dG8gdXNlIHRoZSByb290J3MgZGVzY3JpcHRvciwKKwkJCQkgKiBzbyB3ZSBkb24ndCBuZWVk IHRvIG1hcCB0aGUgdHVwbGUgaGVyZS4KKwkJCQkgKi8KKwkJCQluZXdzbG90ID0gRXhlY1By b2plY3QoYWN0aW9uLT5tYXNfcHJvaik7CisJCQkJY29udGV4dC0+cmVsYWN0aW9uID0gYWN0 aW9uOworCisJCQkJKHZvaWQpIEV4ZWNJbnNlcnQoY29udGV4dCwgbXRzdGF0ZS0+cm9vdFJl c3VsdFJlbEluZm8sIG5ld3Nsb3QsCisJCQkJCQkJCSAgY2FuU2V0VGFnKTsKKwkJCQlJbnN0 ckNvdW50RmlsdGVyZWQxKCZtdHN0YXRlLT5wcywgMSk7CisJCQkJYnJlYWs7CisJCQljYXNl IENNRF9OT1RISU5HOgorCQkJCS8qIERvIG5vdGhpbmcgKi8KKwkJCQlicmVhazsKKwkJCWRl ZmF1bHQ6CisJCQkJZWxvZyhFUlJPUiwgInVua25vd24gYWN0aW9uIGluIE1FUkdFIFdIRU4g Tk9UIE1BVENIRUQgY2xhdXNlIik7CisJCX0KKworCQkvKgorCQkgKiBXZSd2ZSBhY3RpdmF0 ZWQgb25lIG9mIHRoZSBXSEVOIGNsYXVzZXMsIHNvIHdlIGRvbid0IHNlYXJjaAorCQkgKiBm dXJ0aGVyLiBUaGlzIGlzIHJlcXVpcmVkIGJlaGF2aW91ciwgbm90IGFuIG9wdGltaXphdGlv bi4KKwkJICovCisJCWJyZWFrOworCX0KK30KKwordm9pZAorRXhlY0luaXRNZXJnZShNb2Rp ZnlUYWJsZVN0YXRlICptdHN0YXRlLCBFU3RhdGUgKmVzdGF0ZSkKK3sKKwlNb2RpZnlUYWJs ZSAqbm9kZSA9IChNb2RpZnlUYWJsZSAqKSBtdHN0YXRlLT5wcy5wbGFuOworCVJlc3VsdFJl bEluZm8gKnJvb3RSZWxJbmZvID0gbXRzdGF0ZS0+cm9vdFJlc3VsdFJlbEluZm87CisJUmVz dWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbzsKKwlFeHByQ29udGV4dCAqZWNvbnRleHQ7CisJ TGlzdENlbGwgICAqbGM7CisJaW50CQkJaTsKKworCWlmIChub2RlLT5tZXJnZUFjdGlvbkxp c3RzID09IE5JTCkKKwkJcmV0dXJuOworCisJbXRzdGF0ZS0+bXRfbWVyZ2Vfc3ViY29tbWFu ZHMgPSAwOworCisJaWYgKG10c3RhdGUtPnBzLnBzX0V4cHJDb250ZXh0ID09IE5VTEwpCisJ CUV4ZWNBc3NpZ25FeHByQ29udGV4dChlc3RhdGUsICZtdHN0YXRlLT5wcyk7CisJZWNvbnRl eHQgPSBtdHN0YXRlLT5wcy5wc19FeHByQ29udGV4dDsKKworCS8qCisJICogQ3JlYXRlIGEg TWVyZ2VBY3Rpb25TdGF0ZSBmb3IgZWFjaCBhY3Rpb24gb24gdGhlIG1lcmdlQWN0aW9uTGlz dCBhbmQKKwkgKiBhZGQgaXQgdG8gZWl0aGVyIGEgbGlzdCBvZiBtYXRjaGVkIGFjdGlvbnMg b3Igbm90LW1hdGNoZWQgYWN0aW9ucy4KKwkgKgorCSAqIFNpbWlsYXIgbG9naWMgYXBwZWFy cyBpbiBFeGVjSW5pdFBhcnRpdGlvbkluZm8oKSwgc28gaWYgY2hhbmdpbmcKKwkgKiBhbnl0 aGluZyBoZXJlLCBkbyBzbyB0aGVyZSB0b28uCisJICovCisJaSA9IDA7CisJZm9yZWFjaChs Yywgbm9kZS0+bWVyZ2VBY3Rpb25MaXN0cykKKwl7CisJCUxpc3QJICAgKm1lcmdlQWN0aW9u TGlzdCA9IGxmaXJzdChsYyk7CisJCVR1cGxlRGVzYwlyZWxhdGlvbkRlc2M7CisJCUxpc3RD ZWxsICAgKmw7CisKKwkJcmVzdWx0UmVsSW5mbyA9IG10c3RhdGUtPnJlc3VsdFJlbEluZm8g KyBpOworCQlpKys7CisJCXJlbGF0aW9uRGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVzdWx0 UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjKTsKKworCQkvKiBpbml0aWFsaXplIHNsb3RzIGZv ciBNRVJHRSBmZXRjaGVzIGZyb20gdGhpcyByZWwgKi8KKwkJaWYgKHVubGlrZWx5KCFyZXN1 bHRSZWxJbmZvLT5yaV9wcm9qZWN0TmV3SW5mb1ZhbGlkKSkKKwkJCUV4ZWNJbml0TWVyZ2VU dXBsZVNsb3RzKG10c3RhdGUsIHJlc3VsdFJlbEluZm8pOworCisJCWZvcmVhY2gobCwgbWVy Z2VBY3Rpb25MaXN0KQorCQl7CisJCQlNZXJnZUFjdGlvbiAqYWN0aW9uID0gKE1lcmdlQWN0 aW9uICopIGxmaXJzdChsKTsKKwkJCU1lcmdlQWN0aW9uU3RhdGUgKmFjdGlvbl9zdGF0ZTsK KwkJCVR1cGxlVGFibGVTbG90ICp0Z3RzbG90OworCQkJVHVwbGVEZXNjCXRndGRlc2M7CisJ CQlMaXN0CSAgKipsaXN0OworCisJCQkvKgorCQkJICogQnVpbGQgYWN0aW9uIG1lcmdlIHN0 YXRlIGZvciB0aGlzIHJlbC4gIChGb3IgcGFydGl0aW9ucywKKwkJCSAqIGVxdWl2YWxlbnQg Y29kZSBleGlzdHMgaW4gRXhlY0luaXRQYXJ0aXRpb25JbmZvLikKKwkJCSAqLworCQkJYWN0 aW9uX3N0YXRlID0gbWFrZU5vZGUoTWVyZ2VBY3Rpb25TdGF0ZSk7CisJCQlhY3Rpb25fc3Rh dGUtPm1hc19hY3Rpb24gPSBhY3Rpb247CisJCQlhY3Rpb25fc3RhdGUtPm1hc193aGVucXVh bCA9IEV4ZWNJbml0UXVhbCgoTGlzdCAqKSBhY3Rpb24tPnF1YWwsCisJCQkJCQkJCQkJCQkJ ICAmbXRzdGF0ZS0+cHMpOworCisJCQkvKgorCQkJICogV2UgY3JlYXRlIHR3byBsaXN0cyAt IG9uZSBmb3IgV0hFTiBNQVRDSEVEIGFjdGlvbnMgYW5kIG9uZSBmb3IKKwkJCSAqIFdIRU4g Tk9UIE1BVENIRUQgYWN0aW9ucyAtIGFuZCBzdGljayB0aGUgTWVyZ2VBY3Rpb25TdGF0ZSBp bnRvCisJCQkgKiB0aGUgYXBwcm9wcmlhdGUgbGlzdC4KKwkJCSAqLworCQkJaWYgKGFjdGlv bl9zdGF0ZS0+bWFzX2FjdGlvbi0+bWF0Y2hlZCkKKwkJCQlsaXN0ID0gJnJlc3VsdFJlbElu Zm8tPnJpX21hdGNoZWRNZXJnZUFjdGlvbjsKKwkJCWVsc2UKKwkJCQlsaXN0ID0gJnJlc3Vs dFJlbEluZm8tPnJpX25vdE1hdGNoZWRNZXJnZUFjdGlvbjsKKwkJCSpsaXN0ID0gbGFwcGVu ZCgqbGlzdCwgYWN0aW9uX3N0YXRlKTsKKworCQkJc3dpdGNoIChhY3Rpb24tPmNvbW1hbmRU eXBlKQorCQkJeworCQkJCWNhc2UgQ01EX0lOU0VSVDoKKwkJCQkJRXhlY0NoZWNrUGxhbk91 dHB1dChyb290UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLAorCQkJCQkJCQkJCWFjdGlvbi0+ dGFyZ2V0TGlzdCk7CisKKwkJCQkJLyoKKwkJCQkJICogSWYgdGhlIE1FUkdFIHRhcmdldHMg YSBwYXJ0aXRpb25lZCB0YWJsZSwgYW55IElOU0VSVAorCQkJCQkgKiBhY3Rpb25zIG11c3Qg YmUgcm91dGVkIHRocm91Z2ggaXQsIG5vdCB0aGUgY2hpbGQKKwkJCQkJICogcmVsYXRpb25z LiBJbml0aWFsaXplIHRoZSByb3V0aW5nIHN0cnVjdCBhbmQgdGhlIHJvb3QKKwkJCQkJICog dGFibGUncyAibmV3IiB0dXBsZSBzbG90IGZvciB0aGF0LCBpZiBub3QgYWxyZWFkeSBkb25l LgorCQkJCQkgKiBUaGUgcHJvamVjdGlvbiB3ZSBwcmVwYXJlLCBmb3IgYWxsIHJlbGF0aW9u cywgdXNlcyB0aGUKKwkJCQkJICogcm9vdCByZWxhdGlvbiBkZXNjcmlwdG9yLCBhbmQgdGFy Z2V0cyB0aGUgcGxhbidzIHJvb3QKKwkJCQkJICogc2xvdC4gIChUaGlzIGlzIGNvbnNpc3Rl bnQgd2l0aCB0aGUgZmFjdCB0aGF0IHdlCisJCQkJCSAqIGNoZWNrZWQgdGhlIHBsYW4gb3V0 cHV0IHRvIG1hdGNoIHRoZSByb290IHJlbGF0aW9uLAorCQkJCQkgKiBhYm92ZS4pCisJCQkJ CSAqLworCQkJCQlpZiAocm9vdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYy0+cmRfcmVsLT5y ZWxraW5kID09CisJCQkJCQlSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCQkJCQl7CisJ CQkJCQlpZiAobXRzdGF0ZS0+bXRfcGFydGl0aW9uX3R1cGxlX3JvdXRpbmcgPT0gTlVMTCkK KwkJCQkJCXsKKwkJCQkJCQkvKgorCQkJCQkJCSAqIEluaXRpYWxpemUgcGxhbnN0YXRlIGZv ciByb3V0aW5nIGlmIG5vdCBhbHJlYWR5CisJCQkJCQkJICogZG9uZS4KKwkJCQkJCQkgKgor CQkJCQkJCSAqIE5vdGUgdGhhdCB0aGUgc2xvdCBpcyBtYW5hZ2VkIGFzIGEgc3RhbmRhbG9u ZQorCQkJCQkJCSAqIHNsb3QgYmVsb25naW5nIHRvIE1vZGlmeVRhYmxlU3RhdGUsIHNvIHdl IHBhc3MKKwkJCQkJCQkgKiBOVUxMIGZvciB0aGUgMm5kIGFyZ3VtZW50LgorCQkJCQkJCSAq LworCQkJCQkJCW10c3RhdGUtPm10X3Jvb3RfdHVwbGVfc2xvdCA9CisJCQkJCQkJCXRhYmxl X3Nsb3RfY3JlYXRlKHJvb3RSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2MsCisJCQkJCQkJCQkJ CQkgIE5VTEwpOworCQkJCQkJCW10c3RhdGUtPm10X3BhcnRpdGlvbl90dXBsZV9yb3V0aW5n ID0KKwkJCQkJCQkJRXhlY1NldHVwUGFydGl0aW9uVHVwbGVSb3V0aW5nKGVzdGF0ZSwKKwkJ CQkJCQkJCQkJCQkJCSAgIHJvb3RSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2MpOworCQkJCQkJ fQorCQkJCQkJdGd0c2xvdCA9IG10c3RhdGUtPm10X3Jvb3RfdHVwbGVfc2xvdDsKKwkJCQkJ CXRndGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJvb3RSZWxJbmZvLT5yaV9SZWxhdGlvbkRl c2MpOworCQkJCQl9CisJCQkJCWVsc2UKKwkJCQkJeworCQkJCQkJLyogbm90IHBhcnRpdGlv bmVkPyB1c2UgdGhlIHN0b2NrIHJlbGF0aW9uIGFuZCBzbG90ICovCisJCQkJCQl0Z3RzbG90 ID0gcmVzdWx0UmVsSW5mby0+cmlfbmV3VHVwbGVTbG90OworCQkJCQkJdGd0ZGVzYyA9IFJl bGF0aW9uR2V0RGVzY3IocmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjKTsKKwkJCQkJ fQorCisJCQkJCWFjdGlvbl9zdGF0ZS0+bWFzX3Byb2ogPQorCQkJCQkJRXhlY0J1aWxkUHJv amVjdGlvbkluZm8oYWN0aW9uLT50YXJnZXRMaXN0LCBlY29udGV4dCwKKwkJCQkJCQkJCQkJ CXRndHNsb3QsCisJCQkJCQkJCQkJCQkmbXRzdGF0ZS0+cHMsCisJCQkJCQkJCQkJCQl0Z3Rk ZXNjKTsKKworCQkJCQltdHN0YXRlLT5tdF9tZXJnZV9zdWJjb21tYW5kcyB8PSBNRVJHRV9J TlNFUlQ7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgQ01EX1VQREFURToKKwkJCQkJYWN0aW9u X3N0YXRlLT5tYXNfcHJvaiA9CisJCQkJCQlFeGVjQnVpbGRVcGRhdGVQcm9qZWN0aW9uKGFj dGlvbi0+dGFyZ2V0TGlzdCwKKwkJCQkJCQkJCQkJCSAgdHJ1ZSwKKwkJCQkJCQkJCQkJCSAg YWN0aW9uLT51cGRhdGVDb2xub3MsCisJCQkJCQkJCQkJCQkgIHJlbGF0aW9uRGVzYywKKwkJ CQkJCQkJCQkJCSAgZWNvbnRleHQsCisJCQkJCQkJCQkJCQkgIHJlc3VsdFJlbEluZm8tPnJp X25ld1R1cGxlU2xvdCwKKwkJCQkJCQkJCQkJCSAgJm10c3RhdGUtPnBzKTsKKwkJCQkJbXRz dGF0ZS0+bXRfbWVyZ2Vfc3ViY29tbWFuZHMgfD0gTUVSR0VfVVBEQVRFOworCQkJCQlicmVh azsKKwkJCQljYXNlIENNRF9ERUxFVEU6CisJCQkJCW10c3RhdGUtPm10X21lcmdlX3N1YmNv bW1hbmRzIHw9IE1FUkdFX0RFTEVURTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBDTURfTk9U SElORzoKKwkJCQkJYnJlYWs7CisJCQkJZGVmYXVsdDoKKwkJCQkJZWxvZyhFUlJPUiwgInVu a25vd24gb3BlcmF0aW9uIik7CisJCQkJCWJyZWFrOworCQkJfQorCQl9CisJfQorfQorCisv KgorICogSW5pdGlhbGl6ZXMgdGhlIHR1cGxlIHNsb3RzIGluIGEgUmVzdWx0UmVsSW5mbyBm b3IgYW55IE1FUkdFIGFjdGlvbi4KKyAqCisgKiBXZSBtYXJrICdwcm9qZWN0TmV3SW5mb1Zh bGlkJyBldmVuIHRob3VnaCB0aGUgcHJvamVjdGlvbnMgYXJlIG5vdAorICogaW5pdGlhbGl6 ZWQgaGVyZS4KKyAqLwordm9pZAorRXhlY0luaXRNZXJnZVR1cGxlU2xvdHMoTW9kaWZ5VGFi bGVTdGF0ZSAqbXRzdGF0ZSwKKwkJCQkJCVJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8p Cit7CisJRVN0YXRlCSAgICplc3RhdGUgPSBtdHN0YXRlLT5wcy5zdGF0ZTsKKworCUFzc2Vy dCghcmVzdWx0UmVsSW5mby0+cmlfcHJvamVjdE5ld0luZm9WYWxpZCk7CisKKwlyZXN1bHRS ZWxJbmZvLT5yaV9vbGRUdXBsZVNsb3QgPQorCQl0YWJsZV9zbG90X2NyZWF0ZShyZXN1bHRS ZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2MsCisJCQkJCQkgICZlc3RhdGUtPmVzX3R1cGxlVGFi bGUpOworCXJlc3VsdFJlbEluZm8tPnJpX25ld1R1cGxlU2xvdCA9CisJCXRhYmxlX3Nsb3Rf Y3JlYXRlKHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYywKKwkJCQkJCSAgJmVzdGF0 ZS0+ZXNfdHVwbGVUYWJsZSk7CisJcmVzdWx0UmVsSW5mby0+cmlfcHJvamVjdE5ld0luZm9W YWxpZCA9IHRydWU7Cit9CiAKIC8qCiAgKiBQcm9jZXNzIEJFRk9SRSBFQUNIIFNUQVRFTUVO VCB0cmlnZ2VycwpAQCAtMjM2Nyw2ICszMTU4LDE0IEBAIGZpcmVCU1RyaWdnZXJzKE1vZGlm eVRhYmxlU3RhdGUgKm5vZGUpCiAJCWNhc2UgQ01EX0RFTEVURToKIAkJCUV4ZWNCU0RlbGV0 ZVRyaWdnZXJzKG5vZGUtPnBzLnN0YXRlLCByZXN1bHRSZWxJbmZvKTsKIAkJCWJyZWFrOwor CQljYXNlIENNRF9NRVJHRToKKwkJCWlmIChub2RlLT5tdF9tZXJnZV9zdWJjb21tYW5kcyAm IE1FUkdFX0lOU0VSVCkKKwkJCQlFeGVjQlNJbnNlcnRUcmlnZ2Vycyhub2RlLT5wcy5zdGF0 ZSwgcmVzdWx0UmVsSW5mbyk7CisJCQlpZiAobm9kZS0+bXRfbWVyZ2Vfc3ViY29tbWFuZHMg JiBNRVJHRV9VUERBVEUpCisJCQkJRXhlY0JTVXBkYXRlVHJpZ2dlcnMobm9kZS0+cHMuc3Rh dGUsIHJlc3VsdFJlbEluZm8pOworCQkJaWYgKG5vZGUtPm10X21lcmdlX3N1YmNvbW1hbmRz ICYgTUVSR0VfREVMRVRFKQorCQkJCUV4ZWNCU0RlbGV0ZVRyaWdnZXJzKG5vZGUtPnBzLnN0 YXRlLCByZXN1bHRSZWxJbmZvKTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhF UlJPUiwgInVua25vd24gb3BlcmF0aW9uIik7CiAJCQlicmVhazsKQEAgLTI0MDAsNiArMzE5 OSwxNyBAQCBmaXJlQVNUcmlnZ2VycyhNb2RpZnlUYWJsZVN0YXRlICpub2RlKQogCQkJRXhl Y0FTRGVsZXRlVHJpZ2dlcnMobm9kZS0+cHMuc3RhdGUsIHJlc3VsdFJlbEluZm8sCiAJCQkJ CQkJCSBub2RlLT5tdF90cmFuc2l0aW9uX2NhcHR1cmUpOwogCQkJYnJlYWs7CisJCWNhc2Ug Q01EX01FUkdFOgorCQkJaWYgKG5vZGUtPm10X21lcmdlX3N1YmNvbW1hbmRzICYgTUVSR0Vf REVMRVRFKQorCQkJCUV4ZWNBU0RlbGV0ZVRyaWdnZXJzKG5vZGUtPnBzLnN0YXRlLCByZXN1 bHRSZWxJbmZvLAorCQkJCQkJCQkJIG5vZGUtPm10X3RyYW5zaXRpb25fY2FwdHVyZSk7CisJ CQlpZiAobm9kZS0+bXRfbWVyZ2Vfc3ViY29tbWFuZHMgJiBNRVJHRV9VUERBVEUpCisJCQkJ RXhlY0FTVXBkYXRlVHJpZ2dlcnMobm9kZS0+cHMuc3RhdGUsIHJlc3VsdFJlbEluZm8sCisJ CQkJCQkJCQkgbm9kZS0+bXRfdHJhbnNpdGlvbl9jYXB0dXJlKTsKKwkJCWlmIChub2RlLT5t dF9tZXJnZV9zdWJjb21tYW5kcyAmIE1FUkdFX0lOU0VSVCkKKwkJCQlFeGVjQVNJbnNlcnRU cmlnZ2Vycyhub2RlLT5wcy5zdGF0ZSwgcmVzdWx0UmVsSW5mbywKKwkJCQkJCQkJCSBub2Rl LT5tdF90cmFuc2l0aW9uX2NhcHR1cmUpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQll bG9nKEVSUk9SLCAidW5rbm93biBvcGVyYXRpb24iKTsKIAkJCWJyZWFrOwpAQCAtMjYwMiw3 ICszNDEyLDI4IEBAIEV4ZWNNb2RpZnlUYWJsZShQbGFuU3RhdGUgKnBzdGF0ZSkKIAkJCWRh dHVtID0gRXhlY0dldEp1bmtBdHRyaWJ1dGUocGxhblNsb3QsIG5vZGUtPm10X3Jlc3VsdE9p ZEF0dG5vLAogCQkJCQkJCQkJCSAmaXNOdWxsKTsKIAkJCWlmIChpc051bGwpCisJCQl7CisJ CQkJLyoKKwkJCQkgKiBGb3IgY29tbWFuZHMgb3RoZXIgdGhhbiBNRVJHRSwgYW55IHR1cGxl cyBoYXZpbmcgSW52YWxpZE9pZAorCQkJCSAqIGZvciB0YWJsZW9pZCBhcmUgZXJyb3JzLiAg Rm9yIE1FUkdFLCB3ZSBtYXkgbmVlZCB0byBoYW5kbGUKKwkJCQkgKiB0aGVtIGFzIFdIRU4g Tk9UIE1BVENIRUQgY2xhdXNlcyBpZiBhbnksIHNvIGRvIHRoYXQuCisJCQkJICoKKwkJCQkg KiBOb3RlIHRoYXQgd2UgdXNlIHRoZSBub2RlJ3MgdG9wbGV2ZWwgcmVzdWx0UmVsSW5mbywg bm90IGFueQorCQkJCSAqIHNwZWNpZmljIHBhcnRpdGlvbidzLgorCQkJCSAqLworCQkJCWlm IChvcGVyYXRpb24gPT0gQ01EX01FUkdFKQorCQkJCXsKKwkJCQkJRXZhbFBsYW5RdWFsU2V0 U2xvdCgmbm9kZS0+bXRfZXBxc3RhdGUsIHBsYW5TbG90KTsKKworCQkJCQljb250ZXh0LnBs YW5TbG90ID0gcGxhblNsb3Q7CisJCQkJCWNvbnRleHQubG9ja21vZGUgPSAwOworCisJCQkJ CUV4ZWNNZXJnZSgmY29udGV4dCwgbm9kZS0+cmVzdWx0UmVsSW5mbywgbm9kZS0+Y2FuU2V0 VGFnKTsKKwkJCQkJY29udGludWU7CisJCQkJfQorCiAJCQkJZWxvZyhFUlJPUiwgInRhYmxl b2lkIGlzIE5VTEwiKTsKKwkJCX0KIAkJCXJlc3VsdG9pZCA9IERhdHVtR2V0T2JqZWN0SWQo ZGF0dW0pOwogCiAJCQkvKiBJZiBpdCdzIG5vdCB0aGUgc2FtZSBhcyBsYXN0IHRpbWUsIHdl IG5lZWQgdG8gbG9jYXRlIHRoZSByZWwgKi8KQEAgLTI3NTAsOCArMzU4MSw5IEBAIEV4ZWNN b2RpZnlUYWJsZShQbGFuU3RhdGUgKnBzdGF0ZSkKIAkJCQkJCQkJCQkJCQkgICBvbGRTbG90 KSkKIAkJCQkJCWVsb2coRVJST1IsICJmYWlsZWQgdG8gZmV0Y2ggdHVwbGUgYmVpbmcgdXBk YXRlZCIpOwogCQkJCX0KLQkJCQlzbG90ID0gRXhlY0dldFVwZGF0ZU5ld1R1cGxlKHJlc3Vs dFJlbEluZm8sIHBsYW5TbG90LAotCQkJCQkJCQkJCQkgb2xkU2xvdCk7CisJCQkJc2xvdCA9 IGludGVybmFsR2V0VXBkYXRlTmV3VHVwbGUocmVzdWx0UmVsSW5mbywgcGxhblNsb3QsCisJ CQkJCQkJCQkJCQkgb2xkU2xvdCwgTlVMTCk7CisJCQkJY29udGV4dC5HZXRVcGRhdGVOZXdU dXBsZSA9IGludGVybmFsR2V0VXBkYXRlTmV3VHVwbGU7CiAKIAkJCQkvKiBOb3cgYXBwbHkg dGhlIHVwZGF0ZS4gKi8KIAkJCQlzbG90ID0gRXhlY1VwZGF0ZSgmY29udGV4dCwgcmVzdWx0 UmVsSW5mbywgdHVwbGVpZCwgb2xkdHVwbGUsCkBAIC0yNzYzLDYgKzM1OTUsMTAgQEAgRXhl Y01vZGlmeVRhYmxlKFBsYW5TdGF0ZSAqcHN0YXRlKQogCQkJCQkJCQkgIHRydWUsIGZhbHNl LCBub2RlLT5jYW5TZXRUYWcsIE5VTEwsIE5VTEwpOwogCQkJCWJyZWFrOwogCisJCQljYXNl IENNRF9NRVJHRToKKwkJCQlzbG90ID0gRXhlY01lcmdlKCZjb250ZXh0LCByZXN1bHRSZWxJ bmZvLCBub2RlLT5jYW5TZXRUYWcpOworCQkJCWJyZWFrOworCiAJCQlkZWZhdWx0OgogCQkJ CWVsb2coRVJST1IsICJ1bmtub3duIG9wZXJhdGlvbiIpOwogCQkJCWJyZWFrOwpAQCAtMjk5 OSwxMiArMzgzNSwxMyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2Rl LCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJfQogCiAJCS8qCi0JCSAqIEZvciBV UERBVEUvREVMRVRFLCBmaW5kIHRoZSBhcHByb3ByaWF0ZSBqdW5rIGF0dHIgbm93LCBlaXRo ZXIgYQotCQkgKiAnY3RpZCcgb3IgJ3dob2xlcm93JyBhdHRyaWJ1dGUgZGVwZW5kaW5nIG9u IHJlbGtpbmQuICBGb3IgZm9yZWlnbgorCQkgKiBGb3IgVVBEQVRFL0RFTEVURS9NRVJHRSwg ZmluZCB0aGUgYXBwcm9wcmlhdGUganVuayBhdHRyIG5vdywgZWl0aGVyCisJCSAqIGEgJ2N0 aWQnIG9yICd3aG9sZXJvdycgYXR0cmlidXRlIGRlcGVuZGluZyBvbiByZWxraW5kLiAgRm9y IGZvcmVpZ24KIAkJICogdGFibGVzLCB0aGUgRkRXIG1pZ2h0IGhhdmUgY3JlYXRlZCBhZGRp dGlvbmFsIGp1bmsgYXR0cihzKSwgYnV0CiAJCSAqIHRob3NlIGFyZSBubyBjb25jZXJuIG9m IG91cnMuCiAJCSAqLwotCQlpZiAob3BlcmF0aW9uID09IENNRF9VUERBVEUgfHwgb3BlcmF0 aW9uID09IENNRF9ERUxFVEUpCisJCWlmIChvcGVyYXRpb24gPT0gQ01EX1VQREFURSB8fCBv cGVyYXRpb24gPT0gQ01EX0RFTEVURSB8fAorCQkJb3BlcmF0aW9uID09IENNRF9NRVJHRSkK IAkJewogCQkJY2hhcgkJcmVsa2luZDsKIApAQCAtMzAyMCwyMCArMzg1NywyOSBAQCBFeGVj SW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50 IGVmbGFncykKIAkJCX0KIAkJCWVsc2UgaWYgKHJlbGtpbmQgPT0gUkVMS0lORF9GT1JFSUdO X1RBQkxFKQogCQkJeworCQkJCS8qCisJCQkJICogV2UgZG9uJ3Qgc3VwcG9ydCBNRVJHRSB3 aXRoIGZvcmVpZ24gdGFibGVzIGZvciBub3cuICAoSXQncworCQkJCSAqIHByb2JsZW1hdGlj IGJlY2F1c2UgdGhlIGltcGxlbWVudGF0aW9uIHVzZXMgQ1RJRC4pCisJCQkJICovCisJCQkJ QXNzZXJ0KG9wZXJhdGlvbiAhPSBDTURfTUVSR0UpOworCiAJCQkJLyoKIAkJCQkgKiBXaGVu IHRoZXJlIGlzIGEgcm93LWxldmVsIHRyaWdnZXIsIHRoZXJlIHNob3VsZCBiZSBhCiAJCQkJ ICogd2hvbGVyb3cgYXR0cmlidXRlLiAgV2UgYWxzbyByZXF1aXJlIGl0IHRvIGJlIHByZXNl bnQgaW4KLQkJCQkgKiBVUERBVEUsIHNvIHdlIGNhbiBnZXQgdGhlIHZhbHVlcyBvZiB1bmNo YW5nZWQgY29sdW1ucy4KKwkJCQkgKiBVUERBVEUgYW5kIE1FUkdFLCBzbyB3ZSBjYW4gZ2V0 IHRoZSB2YWx1ZXMgb2YgdW5jaGFuZ2VkCisJCQkJICogY29sdW1ucy4KIAkJCQkgKi8KIAkJ CQlyZXN1bHRSZWxJbmZvLT5yaV9Sb3dJZEF0dE5vID0KIAkJCQkJRXhlY0ZpbmRKdW5rQXR0 cmlidXRlSW5UbGlzdChzdWJwbGFuLT50YXJnZXRsaXN0LAogCQkJCQkJCQkJCQkJICJ3aG9s ZXJvdyIpOwotCQkJCWlmIChtdHN0YXRlLT5vcGVyYXRpb24gPT0gQ01EX1VQREFURSAmJgor CQkJCWlmICgobXRzdGF0ZS0+b3BlcmF0aW9uID09IENNRF9VUERBVEUgfHwgbXRzdGF0ZS0+ b3BlcmF0aW9uID09IENNRF9NRVJHRSkgJiYKIAkJCQkJIUF0dHJpYnV0ZU51bWJlcklzVmFs aWQocmVzdWx0UmVsSW5mby0+cmlfUm93SWRBdHRObykpCiAJCQkJCWVsb2coRVJST1IsICJj b3VsZCBub3QgZmluZCBqdW5rIHdob2xlcm93IGNvbHVtbiIpOwogCQkJfQogCQkJZWxzZQog CQkJeworCQkJCS8qIE5vIHN1cHBvcnQgZm9yIE1FUkdFICovCisJCQkJQXNzZXJ0KG9wZXJh dGlvbiAhPSBDTURfTUVSR0UpOwogCQkJCS8qIE90aGVyIHZhbGlkIHRhcmdldCByZWxraW5k cyBtdXN0IHByb3ZpZGUgd2hvbGVyb3cgKi8KIAkJCQlyZXN1bHRSZWxJbmZvLT5yaV9Sb3dJ ZEF0dE5vID0KIAkJCQkJRXhlY0ZpbmRKdW5rQXR0cmlidXRlSW5UbGlzdChzdWJwbGFuLT50 YXJnZXRsaXN0LApAQCAtMzA0NSwxMCArMzg5MSwxMCBAQCBFeGVjSW5pdE1vZGlmeVRhYmxl KE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAl9CiAK IAkvKgotCSAqIElmIHRoaXMgaXMgYW4gaW5oZXJpdGVkIHVwZGF0ZS9kZWxldGUsIHRoZXJl IHdpbGwgYmUgYSBqdW5rIGF0dHJpYnV0ZQotCSAqIG5hbWVkICJ0YWJsZW9pZCIgcHJlc2Vu dCBpbiB0aGUgc3VicGxhbidzIHRhcmdldGxpc3QuICBJdCB3aWxsIGJlIHVzZWQKLQkgKiB0 byBpZGVudGlmeSB0aGUgcmVzdWx0IHJlbGF0aW9uIGZvciBhIGdpdmVuIHR1cGxlIHRvIGJl Ci0JICogdXBkYXRlZC9kZWxldGVkLgorCSAqIElmIHRoaXMgaXMgYW4gaW5oZXJpdGVkIHVw ZGF0ZS9kZWxldGUvbWVyZ2UsIHRoZXJlIHdpbGwgYmUgYSBqdW5rCisJICogYXR0cmlidXRl IG5hbWVkICJ0YWJsZW9pZCIgcHJlc2VudCBpbiB0aGUgc3VicGxhbidzIHRhcmdldGxpc3Qu ICBJdAorCSAqIHdpbGwgYmUgdXNlZCB0byBpZGVudGlmeSB0aGUgcmVzdWx0IHJlbGF0aW9u IGZvciBhIGdpdmVuIHR1cGxlIHRvIGJlCisJICogdXBkYXRlZC9kZWxldGVkL21lcmdlZC4K IAkgKi8KIAltdHN0YXRlLT5tdF9yZXN1bHRPaWRBdHRubyA9CiAJCUV4ZWNGaW5kSnVua0F0 dHJpYnV0ZUluVGxpc3Qoc3VicGxhbi0+dGFyZ2V0bGlzdCwgInRhYmxlb2lkIik7CkBAIC0z MDYxLDggKzM5MDcsOSBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2Rl LCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCS8qCiAJICogQnVpbGQgc3RhdGUg Zm9yIHR1cGxlIHJvdXRpbmcgaWYgaXQncyBhIHBhcnRpdGlvbmVkIElOU0VSVC4gIEFuIFVQ REFURQotCSAqIG1pZ2h0IG5lZWQgdGhpcyB0b28sIGJ1dCBvbmx5IGlmIGl0IGFjdHVhbGx5 IG1vdmVzIHR1cGxlcyBiZXR3ZWVuCi0JICogcGFydGl0aW9uczsgaW4gdGhhdCBjYXNlIHNl dHVwIGlzIGRvbmUgYnkgRXhlY0Nyb3NzUGFydGl0aW9uVXBkYXRlLgorCSAqIG9yIE1FUkdF IG1pZ2h0IG5lZWQgdGhpcyB0b28sIGJ1dCBvbmx5IGlmIGl0IGFjdHVhbGx5IG1vdmVzIHR1 cGxlcworCSAqIGJldHdlZW4gcGFydGl0aW9uczsgaW4gdGhhdCBjYXNlIHNldHVwIGlzIGRv bmUgYnkKKwkgKiBFeGVjQ3Jvc3NQYXJ0aXRpb25VcGRhdGUuCiAJICovCiAJaWYgKHJlbC0+ cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgJiYKIAkJb3Bl cmF0aW9uID09IENNRF9JTlNFUlQpCkBAIC0zMjMxLDYgKzQwNzgsMTAgQEAgRXhlY0luaXRN b2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJCWFyb3dtYXJrcyA9IGxhcHBlbmQoYXJvd21hcmtzLCBhZXJtKTsKIAl9CiAKKwkv KiBGb3IgYSBNRVJHRSBjb21tYW5kLCBpbml0aWFsaXplIGl0cyBzdGF0ZSAqLworCWlmICht dHN0YXRlLT5vcGVyYXRpb24gPT0gQ01EX01FUkdFKQorCQlFeGVjSW5pdE1lcmdlKG10c3Rh dGUsIGVzdGF0ZSk7CisKIAlFdmFsUGxhblF1YWxTZXRQbGFuKCZtdHN0YXRlLT5tdF9lcHFz dGF0ZSwgc3VicGxhbiwgYXJvd21hcmtzKTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9zcGkuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCmluZGV4 IGE4MmU5ODY2NjcuLjA0MmE1ZjhiMGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL3NwaS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCkBAIC0yODgxLDYg KzI4ODEsOSBAQCBfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJl X3RyaWdnZXJzLCB1aW50NjQgdGNvdW50KQogCQkJZWxzZQogCQkJCXJlcyA9IFNQSV9PS19V UERBVEU7CiAJCQlicmVhazsKKwkJY2FzZSBDTURfTUVSR0U6CisJCQlyZXMgPSBTUElfT0tf TUVSR0U7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCXJldHVybiBTUElfRVJST1JfT1BV TktOT1dOOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5j IGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKaW5kZXggZDRmODQ1NWEyYi4uMjM0 YTcwMTA0NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKKysr IGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKQEAgLTIyOCw2ICsyMjgsNyBAQCBf Y29weU1vZGlmeVRhYmxlKGNvbnN0IE1vZGlmeVRhYmxlICpmcm9tKQogCUNPUFlfTk9ERV9G SUVMRChvbkNvbmZsaWN0V2hlcmUpOwogCUNPUFlfU0NBTEFSX0ZJRUxEKGV4Y2xSZWxSVEkp OwogCUNPUFlfTk9ERV9GSUVMRChleGNsUmVsVGxpc3QpOworCUNPUFlfTk9ERV9GSUVMRCht ZXJnZUFjdGlvbkxpc3RzKTsKIAogCXJldHVybiBuZXdub2RlOwogfQpAQCAtMjI5OCw2ICsy Mjk5LDIyIEBAIF9jb3B5T25Db25mbGljdEV4cHIoY29uc3QgT25Db25mbGljdEV4cHIgKmZy b20pCiAJcmV0dXJuIG5ld25vZGU7CiB9CiAKK3N0YXRpYyBNZXJnZUFjdGlvbiAqCitfY29w eU1lcmdlQWN0aW9uKGNvbnN0IE1lcmdlQWN0aW9uICpmcm9tKQoreworCU1lcmdlQWN0aW9u ICpuZXdub2RlID0gbWFrZU5vZGUoTWVyZ2VBY3Rpb24pOworCisJQ09QWV9TQ0FMQVJfRklF TEQobWF0Y2hlZCk7CisJQ09QWV9TQ0FMQVJfRklFTEQoY29tbWFuZFR5cGUpOworCUNPUFlf U0NBTEFSX0ZJRUxEKG92ZXJyaWRlKTsKKwlDT1BZX05PREVfRklFTEQocXVhbCk7CisJQ09Q WV9OT0RFX0ZJRUxEKHRhcmdldExpc3QpOworCUNPUFlfTk9ERV9GSUVMRCh1cGRhdGVDb2xu b3MpOworCisJcmV0dXJuIG5ld25vZGU7Cit9CisKKwogLyogKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoJCQkJ CQlwYXRobm9kZXMuaCBjb3B5IGZ1bmN0aW9ucwogICoKQEAgLTMyMDIsNiArMzIxOSw4IEBA IF9jb3B5UXVlcnkoY29uc3QgUXVlcnkgKmZyb20pCiAJQ09QWV9OT0RFX0ZJRUxEKHNldE9w ZXJhdGlvbnMpOwogCUNPUFlfTk9ERV9GSUVMRChjb25zdHJhaW50RGVwcyk7CiAJQ09QWV9O T0RFX0ZJRUxEKHdpdGhDaGVja09wdGlvbnMpOworCUNPUFlfTk9ERV9GSUVMRChtZXJnZUFj dGlvbkxpc3QpOworCUNPUFlfU0NBTEFSX0ZJRUxEKG1lcmdlVXNlT3V0ZXJKb2luKTsKIAlD T1BZX0xPQ0FUSU9OX0ZJRUxEKHN0bXRfbG9jYXRpb24pOwogCUNPUFlfU0NBTEFSX0ZJRUxE KHN0bXRfbGVuKTsKIApAQCAtMzI2NSw2ICszMjg0LDM1IEBAIF9jb3B5VXBkYXRlU3RtdChj b25zdCBVcGRhdGVTdG10ICpmcm9tKQogCXJldHVybiBuZXdub2RlOwogfQogCitzdGF0aWMg TWVyZ2VTdG10ICoKK19jb3B5TWVyZ2VTdG10KGNvbnN0IE1lcmdlU3RtdCAqZnJvbSkKK3sK KwlNZXJnZVN0bXQgICpuZXdub2RlID0gbWFrZU5vZGUoTWVyZ2VTdG10KTsKKworCUNPUFlf Tk9ERV9GSUVMRChyZWxhdGlvbik7CisJQ09QWV9OT0RFX0ZJRUxEKHNvdXJjZV9yZWxhdGlv bik7CisJQ09QWV9OT0RFX0ZJRUxEKGpvaW5fY29uZGl0aW9uKTsKKwlDT1BZX05PREVfRklF TEQobWVyZ2VXaGVuQ2xhdXNlcyk7CisJQ09QWV9OT0RFX0ZJRUxEKHdpdGhDbGF1c2UpOwor CisJcmV0dXJuIG5ld25vZGU7Cit9CisKK3N0YXRpYyBNZXJnZVdoZW5DbGF1c2UgKgorX2Nv cHlNZXJnZVdoZW5DbGF1c2UoY29uc3QgTWVyZ2VXaGVuQ2xhdXNlICpmcm9tKQoreworCU1l cmdlV2hlbkNsYXVzZSAqbmV3bm9kZSA9IG1ha2VOb2RlKE1lcmdlV2hlbkNsYXVzZSk7CisK KwlDT1BZX1NDQUxBUl9GSUVMRChtYXRjaGVkKTsKKwlDT1BZX1NDQUxBUl9GSUVMRChjb21t YW5kVHlwZSk7CisJQ09QWV9OT0RFX0ZJRUxEKGNvbmRpdGlvbik7CisJQ09QWV9OT0RFX0ZJ RUxEKHRhcmdldExpc3QpOworCUNPUFlfTk9ERV9GSUVMRChjb2xzKTsKKwlDT1BZX05PREVf RklFTEQodmFsdWVzKTsKKwlDT1BZX1NDQUxBUl9GSUVMRChvdmVycmlkZSk7CisJcmV0dXJu IG5ld25vZGU7Cit9CisKIHN0YXRpYyBTZWxlY3RTdG10ICoKIF9jb3B5U2VsZWN0U3RtdChj b25zdCBTZWxlY3RTdG10ICpmcm9tKQogewpAQCAtNTM1MCw2ICs1Mzk4LDkgQEAgY29weU9i amVjdEltcGwoY29uc3Qgdm9pZCAqZnJvbSkKIAkJY2FzZSBUX09uQ29uZmxpY3RFeHByOgog CQkJcmV0dmFsID0gX2NvcHlPbkNvbmZsaWN0RXhwcihmcm9tKTsKIAkJCWJyZWFrOworCQlj YXNlIFRfTWVyZ2VBY3Rpb246CisJCQlyZXR2YWwgPSBfY29weU1lcmdlQWN0aW9uKGZyb20p OworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBSRUxBVElPTiBOT0RFUwpAQCAtNTQzMyw2 ICs1NDg0LDEyIEBAIGNvcHlPYmplY3RJbXBsKGNvbnN0IHZvaWQgKmZyb20pCiAJCWNhc2Ug VF9VcGRhdGVTdG10OgogCQkJcmV0dmFsID0gX2NvcHlVcGRhdGVTdG10KGZyb20pOwogCQkJ YnJlYWs7CisJCWNhc2UgVF9NZXJnZVN0bXQ6CisJCQlyZXR2YWwgPSBfY29weU1lcmdlU3Rt dChmcm9tKTsKKwkJCWJyZWFrOworCQljYXNlIFRfTWVyZ2VXaGVuQ2xhdXNlOgorCQkJcmV0 dmFsID0gX2NvcHlNZXJnZVdoZW5DbGF1c2UoZnJvbSk7CisJCQlicmVhazsKIAkJY2FzZSBU X1NlbGVjdFN0bXQ6CiAJCQlyZXR2YWwgPSBfY29weVNlbGVjdFN0bXQoZnJvbSk7CiAJCQli cmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYyBiL3Ny Yy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwppbmRleCBmMTAwMmFmZTdhLi41ZTFmZjAy YTU1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKKysrIGIv c3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCkBAIC04NDEsNiArODQxLDIwIEBAIF9l cXVhbE9uQ29uZmxpY3RFeHByKGNvbnN0IE9uQ29uZmxpY3RFeHByICphLCBjb25zdCBPbkNv bmZsaWN0RXhwciAqYikKIAlyZXR1cm4gdHJ1ZTsKIH0KIAorCitzdGF0aWMgYm9vbAorX2Vx dWFsTWVyZ2VBY3Rpb24oY29uc3QgTWVyZ2VBY3Rpb24gKmEsIGNvbnN0IE1lcmdlQWN0aW9u ICpiKQoreworCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKG1hdGNoZWQpOworCUNPTVBBUkVfU0NB TEFSX0ZJRUxEKGNvbW1hbmRUeXBlKTsKKwlDT01QQVJFX1NDQUxBUl9GSUVMRChvdmVycmlk ZSk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHF1YWwpOworCUNPTVBBUkVfTk9ERV9GSUVMRCh0 YXJnZXRMaXN0KTsKKwlDT01QQVJFX05PREVfRklFTEQodXBkYXRlQ29sbm9zKTsKKworCXJl dHVybiB0cnVlOworfQorCiAvKgogICogU3R1ZmYgZnJvbSBwYXRobm9kZXMuaAogICovCkBA IC0xMDExLDYgKzEwMjUsOCBAQCBfZXF1YWxRdWVyeShjb25zdCBRdWVyeSAqYSwgY29uc3Qg UXVlcnkgKmIpCiAJQ09NUEFSRV9OT0RFX0ZJRUxEKHNldE9wZXJhdGlvbnMpOwogCUNPTVBB UkVfTk9ERV9GSUVMRChjb25zdHJhaW50RGVwcyk7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKHdp dGhDaGVja09wdGlvbnMpOworCUNPTVBBUkVfTk9ERV9GSUVMRChtZXJnZUFjdGlvbkxpc3Qp OworCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKG1lcmdlVXNlT3V0ZXJKb2luKTsKIAlDT01QQVJF X0xPQ0FUSU9OX0ZJRUxEKHN0bXRfbG9jYXRpb24pOwogCUNPTVBBUkVfU0NBTEFSX0ZJRUxE KHN0bXRfbGVuKTsKIApAQCAtMTA2Niw2ICsxMDgyLDMyIEBAIF9lcXVhbFVwZGF0ZVN0bXQo Y29uc3QgVXBkYXRlU3RtdCAqYSwgY29uc3QgVXBkYXRlU3RtdCAqYikKIAlyZXR1cm4gdHJ1 ZTsKIH0KIAorc3RhdGljIGJvb2wKK19lcXVhbE1lcmdlU3RtdChjb25zdCBNZXJnZVN0bXQg KmEsIGNvbnN0IE1lcmdlU3RtdCAqYikKK3sKKwlDT01QQVJFX05PREVfRklFTEQocmVsYXRp b24pOworCUNPTVBBUkVfTk9ERV9GSUVMRChzb3VyY2VfcmVsYXRpb24pOworCUNPTVBBUkVf Tk9ERV9GSUVMRChqb2luX2NvbmRpdGlvbik7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKG1lcmdl V2hlbkNsYXVzZXMpOworCUNPTVBBUkVfTk9ERV9GSUVMRCh3aXRoQ2xhdXNlKTsKKworCXJl dHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbAorX2VxdWFsTWVyZ2VXaGVuQ2xhdXNlKGNv bnN0IE1lcmdlV2hlbkNsYXVzZSAqYSwgY29uc3QgTWVyZ2VXaGVuQ2xhdXNlICpiKQorewor CUNPTVBBUkVfU0NBTEFSX0ZJRUxEKG1hdGNoZWQpOworCUNPTVBBUkVfU0NBTEFSX0ZJRUxE KGNvbW1hbmRUeXBlKTsKKwlDT01QQVJFX05PREVfRklFTEQoY29uZGl0aW9uKTsKKwlDT01Q QVJFX05PREVfRklFTEQodGFyZ2V0TGlzdCk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKGNvbHMp OworCUNPTVBBUkVfTk9ERV9GSUVMRCh2YWx1ZXMpOworCUNPTVBBUkVfU0NBTEFSX0ZJRUxE KG92ZXJyaWRlKTsKKworCXJldHVybiB0cnVlOworfQorCiBzdGF0aWMgYm9vbAogX2VxdWFs U2VsZWN0U3RtdChjb25zdCBTZWxlY3RTdG10ICphLCBjb25zdCBTZWxlY3RTdG10ICpiKQog ewpAQCAtMzM1NSw2ICszMzk3LDkgQEAgZXF1YWwoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9p ZCAqYikKIAkJY2FzZSBUX09uQ29uZmxpY3RFeHByOgogCQkJcmV0dmFsID0gX2VxdWFsT25D b25mbGljdEV4cHIoYSwgYik7CiAJCQlicmVhazsKKwkJY2FzZSBUX01lcmdlQWN0aW9uOgor CQkJcmV0dmFsID0gX2VxdWFsTWVyZ2VBY3Rpb24oYSwgYik7CisJCQlicmVhazsKIAkJY2Fz ZSBUX0pvaW5FeHByOgogCQkJcmV0dmFsID0gX2VxdWFsSm9pbkV4cHIoYSwgYik7CiAJCQli cmVhazsKQEAgLTM0MjgsNiArMzQ3MywxMiBAQCBlcXVhbChjb25zdCB2b2lkICphLCBjb25z dCB2b2lkICpiKQogCQljYXNlIFRfVXBkYXRlU3RtdDoKIAkJCXJldHZhbCA9IF9lcXVhbFVw ZGF0ZVN0bXQoYSwgYik7CiAJCQlicmVhazsKKwkJY2FzZSBUX01lcmdlU3RtdDoKKwkJCXJl dHZhbCA9IF9lcXVhbE1lcmdlU3RtdChhLCBiKTsKKwkJCWJyZWFrOworCQljYXNlIFRfTWVy Z2VXaGVuQ2xhdXNlOgorCQkJcmV0dmFsID0gX2VxdWFsTWVyZ2VXaGVuQ2xhdXNlKGEsIGIp OworCQkJYnJlYWs7CiAJCWNhc2UgVF9TZWxlY3RTdG10OgogCQkJcmV0dmFsID0gX2VxdWFs U2VsZWN0U3RtdChhLCBiKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv bm9kZXMvbm9kZUZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwppbmRl eCA0N2QwNTY0ZmEyLi4yZTQwMGQ3OWUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rl cy9ub2RlRnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpAQCAt MjI1NCw2ICsyMjU0LDE2IEBAIGV4cHJlc3Npb25fdHJlZV93YWxrZXIoTm9kZSAqbm9kZSwK IAkJCQkJcmV0dXJuIHRydWU7CiAJCQl9CiAJCQlicmVhazsKKwkJY2FzZSBUX01lcmdlQWN0 aW9uOgorCQkJeworCQkJCU1lcmdlQWN0aW9uICphY3Rpb24gPSAoTWVyZ2VBY3Rpb24gKikg bm9kZTsKKworCQkJCWlmICh3YWxrZXIoYWN0aW9uLT50YXJnZXRMaXN0LCBjb250ZXh0KSkK KwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKHdhbGtlcihhY3Rpb24tPnF1YWwsIGNvbnRl eHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfUGFy dGl0aW9uUHJ1bmVTdGVwT3A6CiAJCQl7CiAJCQkJUGFydGl0aW9uUHJ1bmVTdGVwT3AgKm9w c3RlcCA9IChQYXJ0aXRpb25QcnVuZVN0ZXBPcCAqKSBub2RlOwpAQCAtMjM5Miw2ICsyNDAy LDggQEAgcXVlcnlfdHJlZV93YWxrZXIoUXVlcnkgKnF1ZXJ5LAogCQlyZXR1cm4gdHJ1ZTsK IAlpZiAod2Fsa2VyKChOb2RlICopIHF1ZXJ5LT5vbkNvbmZsaWN0LCBjb250ZXh0KSkKIAkJ cmV0dXJuIHRydWU7CisJaWYgKHdhbGtlcigoTm9kZSAqKSBxdWVyeS0+bWVyZ2VBY3Rpb25M aXN0LCBjb250ZXh0KSkKKwkJcmV0dXJuIHRydWU7CiAJaWYgKHdhbGtlcigoTm9kZSAqKSBx dWVyeS0+cmV0dXJuaW5nTGlzdCwgY29udGV4dCkpCiAJCXJldHVybiB0cnVlOwogCWlmICh3 YWxrZXIoKE5vZGUgKikgcXVlcnktPmpvaW50cmVlLCBjb250ZXh0KSkKQEAgLTMxODAsNiAr MzE5MiwxOCBAQCBleHByZXNzaW9uX3RyZWVfbXV0YXRvcihOb2RlICpub2RlLAogCQkJCXJl dHVybiAoTm9kZSAqKSBuZXdub2RlOwogCQkJfQogCQkJYnJlYWs7CisJCWNhc2UgVF9NZXJn ZUFjdGlvbjoKKwkJCXsKKwkJCQlNZXJnZUFjdGlvbiAqYWN0aW9uID0gKE1lcmdlQWN0aW9u ICopIG5vZGU7CisJCQkJTWVyZ2VBY3Rpb24gKm5ld25vZGU7CisKKwkJCQlGTEFUQ09QWShu ZXdub2RlLCBhY3Rpb24sIE1lcmdlQWN0aW9uKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+cXVh bCwgYWN0aW9uLT5xdWFsLCBOb2RlICopOworCQkJCU1VVEFURShuZXdub2RlLT50YXJnZXRM aXN0LCBhY3Rpb24tPnRhcmdldExpc3QsIExpc3QgKik7CisKKwkJCQlyZXR1cm4gKE5vZGUg KikgbmV3bm9kZTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfUGFydGl0aW9uUHJ1bmVT dGVwT3A6CiAJCQl7CiAJCQkJUGFydGl0aW9uUHJ1bmVTdGVwT3AgKm9wc3RlcCA9IChQYXJ0 aXRpb25QcnVuZVN0ZXBPcCAqKSBub2RlOwpAQCAtMzM1Nyw2ICszMzgxLDcgQEAgcXVlcnlf dHJlZV9tdXRhdG9yKFF1ZXJ5ICpxdWVyeSwKIAlNVVRBVEUocXVlcnktPnRhcmdldExpc3Qs IHF1ZXJ5LT50YXJnZXRMaXN0LCBMaXN0ICopOwogCU1VVEFURShxdWVyeS0+d2l0aENoZWNr T3B0aW9ucywgcXVlcnktPndpdGhDaGVja09wdGlvbnMsIExpc3QgKik7CiAJTVVUQVRFKHF1 ZXJ5LT5vbkNvbmZsaWN0LCBxdWVyeS0+b25Db25mbGljdCwgT25Db25mbGljdEV4cHIgKik7 CisJTVVUQVRFKHF1ZXJ5LT5tZXJnZUFjdGlvbkxpc3QsIHF1ZXJ5LT5tZXJnZUFjdGlvbkxp c3QsIExpc3QgKik7CiAJTVVUQVRFKHF1ZXJ5LT5yZXR1cm5pbmdMaXN0LCBxdWVyeS0+cmV0 dXJuaW5nTGlzdCwgTGlzdCAqKTsKIAlNVVRBVEUocXVlcnktPmpvaW50cmVlLCBxdWVyeS0+ am9pbnRyZWUsIEZyb21FeHByICopOwogCU1VVEFURShxdWVyeS0+c2V0T3BlcmF0aW9ucywg cXVlcnktPnNldE9wZXJhdGlvbnMsIE5vZGUgKik7CkBAIC0zNTQ5LDkgKzM1NzQsOSBAQCBx dWVyeV9vcl9leHByZXNzaW9uX3RyZWVfbXV0YXRvcihOb2RlICpub2RlLAogICogYm91bmRh cmllczogd2UgZGVzY2VuZCB0byBldmVyeXRoaW5nIHRoYXQncyBwb3NzaWJseSBpbnRlcmVz dGluZy4KICAqCiAgKiBDdXJyZW50bHksIHRoZSBub2RlIHR5cGUgY292ZXJhZ2UgaGVyZSBl eHRlbmRzIG9ubHkgdG8gRE1MIHN0YXRlbWVudHMKLSAqIChTRUxFQ1QvSU5TRVJUL1VQREFU RS9ERUxFVEUpIGFuZCBub2RlcyB0aGF0IGNhbiBhcHBlYXIgaW4gdGhlbSwgYmVjYXVzZQot ICogdGhpcyBpcyB1c2VkIG1haW5seSBkdXJpbmcgYW5hbHlzaXMgb2YgQ1RFcywgYW5kIG9u bHkgRE1MIHN0YXRlbWVudHMgY2FuCi0gKiBhcHBlYXIgaW4gQ1RFcy4KKyAqIChTRUxFQ1Qv SU5TRVJUL1VQREFURS9ERUxFVEUvTUVSR0UpIGFuZCBub2RlcyB0aGF0IGNhbiBhcHBlYXIg aW4gdGhlbSwKKyAqIGJlY2F1c2UgdGhpcyBpcyB1c2VkIG1haW5seSBkdXJpbmcgYW5hbHlz aXMgb2YgQ1RFcywgYW5kIG9ubHkgRE1MCisgKiBzdGF0ZW1lbnRzIGNhbiBhcHBlYXIgaW4g Q1RFcy4KICAqLwogYm9vbAogcmF3X2V4cHJlc3Npb25fdHJlZV93YWxrZXIoTm9kZSAqbm9k ZSwKQEAgLTM3MzEsNiArMzc1NiwzNiBAQCByYXdfZXhwcmVzc2lvbl90cmVlX3dhbGtlcihO b2RlICpub2RlLAogCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNl IFRfTWVyZ2VTdG10OgorCQkJeworCQkJCU1lcmdlU3RtdCAgKnN0bXQgPSAoTWVyZ2VTdG10 ICopIG5vZGU7CisKKwkJCQlpZiAod2Fsa2VyKHN0bXQtPnJlbGF0aW9uLCBjb250ZXh0KSkK KwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKHdhbGtlcihzdG10LT5zb3VyY2VfcmVsYXRp b24sIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAod2Fsa2VyKHN0bXQt PmpvaW5fY29uZGl0aW9uLCBjb250ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYg KHdhbGtlcihzdG10LT5tZXJnZVdoZW5DbGF1c2VzLCBjb250ZXh0KSkKKwkJCQkJcmV0dXJu IHRydWU7CisJCQkJaWYgKHdhbGtlcihzdG10LT53aXRoQ2xhdXNlLCBjb250ZXh0KSkKKwkJ CQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBUX01lcmdlV2hlbkNs YXVzZToKKwkJCXsKKwkJCQlNZXJnZVdoZW5DbGF1c2UgKm1lcmdlV2hlbkNsYXVzZSA9IChN ZXJnZVdoZW5DbGF1c2UgKikgbm9kZTsKKworCQkJCWlmICh3YWxrZXIobWVyZ2VXaGVuQ2xh dXNlLT5jb25kaXRpb24sIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAo d2Fsa2VyKG1lcmdlV2hlbkNsYXVzZS0+dGFyZ2V0TGlzdCwgY29udGV4dCkpCisJCQkJCXJl dHVybiB0cnVlOworCQkJCWlmICh3YWxrZXIobWVyZ2VXaGVuQ2xhdXNlLT5jb2xzLCBjb250 ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKHdhbGtlcihtZXJnZVdoZW5DbGF1 c2UtPnZhbHVlcywgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJl YWs7CiAJCWNhc2UgVF9TZWxlY3RTdG10OgogCQkJewogCQkJCVNlbGVjdFN0bXQgKnN0bXQg PSAoU2VsZWN0U3RtdCAqKSBub2RlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMv b3V0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKaW5kZXggNmJkYWQ0 NjJjNy4uNzU0OWIyN2IzOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVu Y3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCkBAIC00MjksNiArNDI5 LDIxIEBAIF9vdXRNb2RpZnlUYWJsZShTdHJpbmdJbmZvIHN0ciwgY29uc3QgTW9kaWZ5VGFi bGUgKm5vZGUpCiAJV1JJVEVfTk9ERV9GSUVMRChvbkNvbmZsaWN0V2hlcmUpOwogCVdSSVRF X1VJTlRfRklFTEQoZXhjbFJlbFJUSSk7CiAJV1JJVEVfTk9ERV9GSUVMRChleGNsUmVsVGxp c3QpOworCVdSSVRFX05PREVfRklFTEQobWVyZ2VBY3Rpb25MaXN0cyk7Cit9CisKK3N0YXRp YyB2b2lkCitfb3V0TWVyZ2VXaGVuQ2xhdXNlKFN0cmluZ0luZm8gc3RyLCBjb25zdCBNZXJn ZVdoZW5DbGF1c2UgKm5vZGUpCit7CisJV1JJVEVfTk9ERV9UWVBFKCJNRVJHRVdIRU5DTEFV U0UiKTsKKworCVdSSVRFX0JPT0xfRklFTEQobWF0Y2hlZCk7CisJV1JJVEVfRU5VTV9GSUVM RChjb21tYW5kVHlwZSwgQ21kVHlwZSk7CisJV1JJVEVfTk9ERV9GSUVMRChjb25kaXRpb24p OworCVdSSVRFX05PREVfRklFTEQodGFyZ2V0TGlzdCk7CisJV1JJVEVfTk9ERV9GSUVMRChj b2xzKTsKKwlXUklURV9OT0RFX0ZJRUxEKHZhbHVlcyk7CisJV1JJVEVfRU5VTV9GSUVMRChv dmVycmlkZSwgT3ZlcnJpZGluZ0tpbmQpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTc1MSw2 ICsxNzY2LDE5IEBAIF9vdXRPbkNvbmZsaWN0RXhwcihTdHJpbmdJbmZvIHN0ciwgY29uc3Qg T25Db25mbGljdEV4cHIgKm5vZGUpCiAJV1JJVEVfTk9ERV9GSUVMRChleGNsUmVsVGxpc3Qp OwogfQogCitzdGF0aWMgdm9pZAorX291dE1lcmdlQWN0aW9uKFN0cmluZ0luZm8gc3RyLCBj b25zdCBNZXJnZUFjdGlvbiAqbm9kZSkKK3sKKwlXUklURV9OT0RFX1RZUEUoIk1FUkdFQUNU SU9OIik7CisKKwlXUklURV9CT09MX0ZJRUxEKG1hdGNoZWQpOworCVdSSVRFX0VOVU1fRklF TEQoY29tbWFuZFR5cGUsIENtZFR5cGUpOworCVdSSVRFX0VOVU1fRklFTEQob3ZlcnJpZGUs IE92ZXJyaWRpbmdLaW5kKTsKKwlXUklURV9OT0RFX0ZJRUxEKHF1YWwpOworCVdSSVRFX05P REVfRklFTEQodGFyZ2V0TGlzdCk7CisJV1JJVEVfTk9ERV9GSUVMRCh1cGRhdGVDb2xub3Mp OworfQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKglTdHVmZiBmcm9tIHBh dGhub2Rlcy5oLgpAQCAtMjIwNSw2ICsyMjMzLDcgQEAgX291dE1vZGlmeVRhYmxlUGF0aChT dHJpbmdJbmZvIHN0ciwgY29uc3QgTW9kaWZ5VGFibGVQYXRoICpub2RlKQogCVdSSVRFX05P REVfRklFTEQocm93TWFya3MpOwogCVdSSVRFX05PREVfRklFTEQob25jb25mbGljdCk7CiAJ V1JJVEVfSU5UX0ZJRUxEKGVwcVBhcmFtKTsKKwlXUklURV9OT0RFX0ZJRUxEKG1lcmdlQWN0 aW9uTGlzdHMpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMzA5OCw2ICszMTI3LDggQEAgX291 dFF1ZXJ5KFN0cmluZ0luZm8gc3RyLCBjb25zdCBRdWVyeSAqbm9kZSkKIAlXUklURV9OT0RF X0ZJRUxEKHNldE9wZXJhdGlvbnMpOwogCVdSSVRFX05PREVfRklFTEQoY29uc3RyYWludERl cHMpOwogCVdSSVRFX05PREVfRklFTEQod2l0aENoZWNrT3B0aW9ucyk7CisJV1JJVEVfTk9E RV9GSUVMRChtZXJnZUFjdGlvbkxpc3QpOworCVdSSVRFX0JPT0xfRklFTEQobWVyZ2VVc2VP dXRlckpvaW4pOwogCVdSSVRFX0xPQ0FUSU9OX0ZJRUxEKHN0bXRfbG9jYXRpb24pOwogCVdS SVRFX0lOVF9GSUVMRChzdG10X2xlbik7CiB9CkBAIC0zODgwLDYgKzM5MTEsOSBAQCBvdXRO b2RlKFN0cmluZ0luZm8gc3RyLCBjb25zdCB2b2lkICpvYmopCiAJCQljYXNlIFRfTW9kaWZ5 VGFibGU6CiAJCQkJX291dE1vZGlmeVRhYmxlKHN0ciwgb2JqKTsKIAkJCQlicmVhazsKKwkJ CWNhc2UgVF9NZXJnZVdoZW5DbGF1c2U6CisJCQkJX291dE1lcmdlV2hlbkNsYXVzZShzdHIs IG9iaik7CisJCQkJYnJlYWs7CiAJCQljYXNlIFRfQXBwZW5kOgogCQkJCV9vdXRBcHBlbmQo c3RyLCBvYmopOwogCQkJCWJyZWFrOwpAQCAtNDE3Nyw2ICs0MjExLDkgQEAgb3V0Tm9kZShT dHJpbmdJbmZvIHN0ciwgY29uc3Qgdm9pZCAqb2JqKQogCQkJY2FzZSBUX09uQ29uZmxpY3RF eHByOgogCQkJCV9vdXRPbkNvbmZsaWN0RXhwcihzdHIsIG9iaik7CiAJCQkJYnJlYWs7CisJ CQljYXNlIFRfTWVyZ2VBY3Rpb246CisJCQkJX291dE1lcmdlQWN0aW9uKHN0ciwgb2JqKTsK KwkJCQlicmVhazsKIAkJCWNhc2UgVF9QYXRoOgogCQkJCV9vdXRQYXRoKHN0ciwgb2JqKTsK IAkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5j IGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKaW5kZXggM2Y2OGY3YzE4ZC4uZDNj YTVmMGU0NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKKysr IGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKQEAgLTI4Myw2ICsyODMsOCBAQCBf cmVhZFF1ZXJ5KHZvaWQpCiAJUkVBRF9OT0RFX0ZJRUxEKHNldE9wZXJhdGlvbnMpOwogCVJF QURfTk9ERV9GSUVMRChjb25zdHJhaW50RGVwcyk7CiAJUkVBRF9OT0RFX0ZJRUxEKHdpdGhD aGVja09wdGlvbnMpOworCVJFQURfTk9ERV9GSUVMRChtZXJnZUFjdGlvbkxpc3QpOworCVJF QURfQk9PTF9GSUVMRChtZXJnZVVzZU91dGVySm9pbik7CiAJUkVBRF9MT0NBVElPTl9GSUVM RChzdG10X2xvY2F0aW9uKTsKIAlSRUFEX0lOVF9GSUVMRChzdG10X2xlbik7CiAKQEAgLTEz ODksNiArMTM5MSwyNCBAQCBfcmVhZE9uQ29uZmxpY3RFeHByKHZvaWQpCiAJUkVBRF9ET05F KCk7CiB9CiAKKy8qCisgKiBfcmVhZE1lcmdlQWN0aW9uCisgKi8KK3N0YXRpYyBNZXJnZUFj dGlvbiAqCitfcmVhZE1lcmdlQWN0aW9uKHZvaWQpCit7CisJUkVBRF9MT0NBTFMoTWVyZ2VB Y3Rpb24pOworCisJUkVBRF9CT09MX0ZJRUxEKG1hdGNoZWQpOworCVJFQURfRU5VTV9GSUVM RChjb21tYW5kVHlwZSwgQ21kVHlwZSk7CisJUkVBRF9FTlVNX0ZJRUxEKG92ZXJyaWRlLCBP dmVycmlkaW5nS2luZCk7CisJUkVBRF9OT0RFX0ZJRUxEKHF1YWwpOworCVJFQURfTk9ERV9G SUVMRCh0YXJnZXRMaXN0KTsKKwlSRUFEX05PREVfRklFTEQodXBkYXRlQ29sbm9zKTsKKwor CVJFQURfRE9ORSgpOworfQorCiAvKgogICoJU3R1ZmYgZnJvbSBwYXRobm9kZXMuaC4KICAq CkBAIC0xNzAwLDYgKzE3MjAsMjYgQEAgX3JlYWRNb2RpZnlUYWJsZSh2b2lkKQogCVJFQURf Tk9ERV9GSUVMRChvbkNvbmZsaWN0V2hlcmUpOwogCVJFQURfVUlOVF9GSUVMRChleGNsUmVs UlRJKTsKIAlSRUFEX05PREVfRklFTEQoZXhjbFJlbFRsaXN0KTsKKwlSRUFEX05PREVfRklF TEQobWVyZ2VBY3Rpb25MaXN0cyk7CisKKwlSRUFEX0RPTkUoKTsKK30KKworLyoKKyAqIF9y ZWFkTWVyZ2VXaGVuQ2xhdXNlCisgKi8KK3N0YXRpYyBNZXJnZVdoZW5DbGF1c2UgKgorX3Jl YWRNZXJnZVdoZW5DbGF1c2Uodm9pZCkKK3sKKwlSRUFEX0xPQ0FMUyhNZXJnZVdoZW5DbGF1 c2UpOworCisJUkVBRF9CT09MX0ZJRUxEKG1hdGNoZWQpOworCVJFQURfRU5VTV9GSUVMRChj b21tYW5kVHlwZSwgQ21kVHlwZSk7CisJUkVBRF9OT0RFX0ZJRUxEKGNvbmRpdGlvbik7CisJ UkVBRF9OT0RFX0ZJRUxEKHRhcmdldExpc3QpOworCVJFQURfTk9ERV9GSUVMRChjb2xzKTsK KwlSRUFEX05PREVfRklFTEQodmFsdWVzKTsKKwlSRUFEX0VOVU1fRklFTEQob3ZlcnJpZGUs IE92ZXJyaWRpbmdLaW5kKTsKIAogCVJFQURfRE9ORSgpOwogfQpAQCAtMjg0NCw2ICsyODg0 LDggQEAgcGFyc2VOb2RlU3RyaW5nKHZvaWQpCiAJCXJldHVybl92YWx1ZSA9IF9yZWFkRnJv bUV4cHIoKTsKIAllbHNlIGlmIChNQVRDSCgiT05DT05GTElDVEVYUFIiLCAxNCkpCiAJCXJl dHVybl92YWx1ZSA9IF9yZWFkT25Db25mbGljdEV4cHIoKTsKKwllbHNlIGlmIChNQVRDSCgi TUVSR0VBQ1RJT04iLCAxMSkpCisJCXJldHVybl92YWx1ZSA9IF9yZWFkTWVyZ2VBY3Rpb24o KTsKIAllbHNlIGlmIChNQVRDSCgiQVBQRU5EUkVMSU5GTyIsIDEzKSkKIAkJcmV0dXJuX3Zh bHVlID0gX3JlYWRBcHBlbmRSZWxJbmZvKCk7CiAJZWxzZSBpZiAoTUFUQ0goIlJBTkdFVEJM RU5UUlkiLCAxMykpCkBAIC0yODY4LDYgKzI5MTAsOCBAQCBwYXJzZU5vZGVTdHJpbmcodm9p ZCkKIAkJcmV0dXJuX3ZhbHVlID0gX3JlYWRQcm9qZWN0U2V0KCk7CiAJZWxzZSBpZiAoTUFU Q0goIk1PRElGWVRBQkxFIiwgMTEpKQogCQlyZXR1cm5fdmFsdWUgPSBfcmVhZE1vZGlmeVRh YmxlKCk7CisJZWxzZSBpZiAoTUFUQ0goIk1FUkdFV0hFTkNMQVVTRSIsIDE1KSkKKwkJcmV0 dXJuX3ZhbHVlID0gX3JlYWRNZXJnZVdoZW5DbGF1c2UoKTsKIAllbHNlIGlmIChNQVRDSCgi QVBQRU5EIiwgNikpCiAJCXJldHVybl92YWx1ZSA9IF9yZWFkQXBwZW5kKCk7CiAJZWxzZSBp ZiAoTUFUQ0goIk1FUkdFQVBQRU5EIiwgMTEpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vY3JlYXRlcGxhbi5jCmluZGV4IGZhMDY5YTIxN2MuLjE3OWM4N2M2NzEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYworKysgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKQEAgLTMxMCw3ICszMTAsOCBA QCBzdGF0aWMgTW9kaWZ5VGFibGUgKm1ha2VfbW9kaWZ5dGFibGUoUGxhbm5lckluZm8gKnJv b3QsIFBsYW4gKnN1YnBsYW4sCiAJCQkJCQkJCQkgTGlzdCAqcmVzdWx0UmVsYXRpb25zLAog CQkJCQkJCQkJIExpc3QgKnVwZGF0ZUNvbG5vc0xpc3RzLAogCQkJCQkJCQkJIExpc3QgKndp dGhDaGVja09wdGlvbkxpc3RzLCBMaXN0ICpyZXR1cm5pbmdMaXN0cywKLQkJCQkJCQkJCSBM aXN0ICpyb3dNYXJrcywgT25Db25mbGljdEV4cHIgKm9uY29uZmxpY3QsIGludCBlcHFQYXJh bSk7CisJCQkJCQkJCQkgTGlzdCAqcm93TWFya3MsIE9uQ29uZmxpY3RFeHByICpvbmNvbmZs aWN0LAorCQkJCQkJCQkJIExpc3QgKm1lcmdlQWN0aW9uTGlzdCwgaW50IGVwcVBhcmFtKTsK IHN0YXRpYyBHYXRoZXJNZXJnZSAqY3JlYXRlX2dhdGhlcl9tZXJnZV9wbGFuKFBsYW5uZXJJ bmZvICpyb290LAogCQkJCQkJCQkJCQkgR2F0aGVyTWVyZ2VQYXRoICpiZXN0X3BhdGgpOwog CkBAIC0yNzc1LDYgKzI3NzYsNyBAQCBjcmVhdGVfbW9kaWZ5dGFibGVfcGxhbihQbGFubmVy SW5mbyAqcm9vdCwgTW9kaWZ5VGFibGVQYXRoICpiZXN0X3BhdGgpCiAJCQkJCQkJYmVzdF9w YXRoLT5yZXR1cm5pbmdMaXN0cywKIAkJCQkJCQliZXN0X3BhdGgtPnJvd01hcmtzLAogCQkJ CQkJCWJlc3RfcGF0aC0+b25jb25mbGljdCwKKwkJCQkJCQliZXN0X3BhdGgtPm1lcmdlQWN0 aW9uTGlzdHMsCiAJCQkJCQkJYmVzdF9wYXRoLT5lcHFQYXJhbSk7CiAKIAljb3B5X2dlbmVy aWNfcGF0aF9pbmZvKCZwbGFuLT5wbGFuLCAmYmVzdF9wYXRoLT5wYXRoKTsKQEAgLTY5MjQs NyArNjkyNiw4IEBAIG1ha2VfbW9kaWZ5dGFibGUoUGxhbm5lckluZm8gKnJvb3QsIFBsYW4g KnN1YnBsYW4sCiAJCQkJIExpc3QgKnJlc3VsdFJlbGF0aW9ucywKIAkJCQkgTGlzdCAqdXBk YXRlQ29sbm9zTGlzdHMsCiAJCQkJIExpc3QgKndpdGhDaGVja09wdGlvbkxpc3RzLCBMaXN0 ICpyZXR1cm5pbmdMaXN0cywKLQkJCQkgTGlzdCAqcm93TWFya3MsIE9uQ29uZmxpY3RFeHBy ICpvbmNvbmZsaWN0LCBpbnQgZXBxUGFyYW0pCisJCQkJIExpc3QgKnJvd01hcmtzLCBPbkNv bmZsaWN0RXhwciAqb25jb25mbGljdCwKKwkJCQkgTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywg aW50IGVwcVBhcmFtKQogewogCU1vZGlmeVRhYmxlICpub2RlID0gbWFrZU5vZGUoTW9kaWZ5 VGFibGUpOwogCUxpc3QJICAgKmZkd19wcml2YXRlX2xpc3Q7CkBAIC02OTMyLDkgKzY5MzUs MTAgQEAgbWFrZV9tb2RpZnl0YWJsZShQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAqc3VicGxh biwKIAlMaXN0Q2VsbCAgICpsYzsKIAlpbnQJCQlpOwogCi0JQXNzZXJ0KG9wZXJhdGlvbiA9 PSBDTURfVVBEQVRFID8KLQkJICAgbGlzdF9sZW5ndGgocmVzdWx0UmVsYXRpb25zKSA9PSBs aXN0X2xlbmd0aCh1cGRhdGVDb2xub3NMaXN0cykgOgotCQkgICB1cGRhdGVDb2xub3NMaXN0 cyA9PSBOSUwpOworCUFzc2VydChvcGVyYXRpb24gPT0gQ01EX01FUkdFIHx8CisJCSAgIChv cGVyYXRpb24gPT0gQ01EX1VQREFURSA/CisJCQlsaXN0X2xlbmd0aChyZXN1bHRSZWxhdGlv bnMpID09IGxpc3RfbGVuZ3RoKHVwZGF0ZUNvbG5vc0xpc3RzKSA6CisJCQl1cGRhdGVDb2xu b3NMaXN0cyA9PSBOSUwpKTsKIAlBc3NlcnQod2l0aENoZWNrT3B0aW9uTGlzdHMgPT0gTklM IHx8CiAJCSAgIGxpc3RfbGVuZ3RoKHJlc3VsdFJlbGF0aW9ucykgPT0gbGlzdF9sZW5ndGgo d2l0aENoZWNrT3B0aW9uTGlzdHMpKTsKIAlBc3NlcnQocmV0dXJuaW5nTGlzdHMgPT0gTklM IHx8CkBAIC02OTkyLDYgKzY5OTYsNyBAQCBtYWtlX21vZGlmeXRhYmxlKFBsYW5uZXJJbmZv ICpyb290LCBQbGFuICpzdWJwbGFuLAogCW5vZGUtPndpdGhDaGVja09wdGlvbkxpc3RzID0g d2l0aENoZWNrT3B0aW9uTGlzdHM7CiAJbm9kZS0+cmV0dXJuaW5nTGlzdHMgPSByZXR1cm5p bmdMaXN0czsKIAlub2RlLT5yb3dNYXJrcyA9IHJvd01hcmtzOworCW5vZGUtPm1lcmdlQWN0 aW9uTGlzdHMgPSBtZXJnZUFjdGlvbkxpc3RzOwogCW5vZGUtPmVwcVBhcmFtID0gZXBxUGFy YW07CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxh bm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IGJk MDlmODVhZWEuLjU0N2ZkYTIwYTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFu bmVyLmMKQEAgLTY0OSw2ICs2NDksMTEgQEAgc3VicXVlcnlfcGxhbm5lcihQbGFubmVyR2xv YmFsICpnbG9iLCBRdWVyeSAqcGFyc2UsCiAJaWYgKHBhcnNlLT5jdGVMaXN0KQogCQlTU19w cm9jZXNzX2N0ZXMocm9vdCk7CiAKKwkvKgorCSAqIElmIGl0J3MgYSBNRVJHRSBjb21tYW5k LCB0cmFuc2Zvcm0gdGhlIGpvaW5saXN0IGFzIGFwcHJvcHJpYXRlLgorCSAqLworCXRyYW5z Zm9ybV9NRVJHRV90b19qb2luKHBhcnNlKTsKKwogCS8qCiAJICogSWYgdGhlIEZST00gY2xh dXNlIGlzIGVtcHR5LCByZXBsYWNlIGl0IHdpdGggYSBkdW1teSBSVEVfUkVTVUxUIFJURSwg c28KIAkgKiB0aGF0IHdlIGRvbid0IG5lZWQgc28gbWFueSBzcGVjaWFsIGNhc2VzIHRvIGRl YWwgd2l0aCB0aGF0IHNpdHVhdGlvbi4KQEAgLTg0OSw2ICs4NTQsMjAgQEAgc3VicXVlcnlf cGxhbm5lcihQbGFubmVyR2xvYmFsICpnbG9iLCBRdWVyeSAqcGFyc2UsCiAJCS8qIGV4Y2xS ZWxUbGlzdCBjb250YWlucyBvbmx5IFZhcnMsIHNvIG5vIHByZXByb2Nlc3NpbmcgbmVlZGVk ICovCiAJfQogCisJZm9yZWFjaChsLCBwYXJzZS0+bWVyZ2VBY3Rpb25MaXN0KQorCXsKKwkJ TWVyZ2VBY3Rpb24gKmFjdGlvbiA9IChNZXJnZUFjdGlvbiAqKSBsZmlyc3QobCk7CisKKwkJ YWN0aW9uLT50YXJnZXRMaXN0ID0gKExpc3QgKikKKwkJCXByZXByb2Nlc3NfZXhwcmVzc2lv bihyb290LAorCQkJCQkJCQkgIChOb2RlICopIGFjdGlvbi0+dGFyZ2V0TGlzdCwKKwkJCQkJ CQkJICBFWFBSS0lORF9UQVJHRVQpOworCQlhY3Rpb24tPnF1YWwgPQorCQkJcHJlcHJvY2Vz c19leHByZXNzaW9uKHJvb3QsCisJCQkJCQkJCSAgKE5vZGUgKikgYWN0aW9uLT5xdWFsLAor CQkJCQkJCQkgIEVYUFJLSU5EX1FVQUwpOworCX0KKwogCXJvb3QtPmFwcGVuZF9yZWxfbGlz dCA9IChMaXN0ICopCiAJCXByZXByb2Nlc3NfZXhwcmVzc2lvbihyb290LCAoTm9kZSAqKSBy b290LT5hcHBlbmRfcmVsX2xpc3QsCiAJCQkJCQkJICBFWFBSS0lORF9BUFBJTkZPKTsKQEAg LTE3MTQsNyArMTczMyw3IEBAIGdyb3VwaW5nX3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3Qs IGRvdWJsZSB0dXBsZV9mcmFjdGlvbikKIAkJfQogCiAJCS8qCi0JCSAqIElmIHRoaXMgaXMg YW4gSU5TRVJUL1VQREFURS9ERUxFVEUsIGFkZCB0aGUgTW9kaWZ5VGFibGUgbm9kZS4KKwkJ ICogSWYgdGhpcyBpcyBhbiBJTlNFUlQvVVBEQVRFL0RFTEVURS9NRVJHRSwgYWRkIHRoZSBN b2RpZnlUYWJsZSBub2RlLgogCQkgKi8KIAkJaWYgKHBhcnNlLT5jb21tYW5kVHlwZSAhPSBD TURfU0VMRUNUKQogCQl7CkBAIC0xNzIzLDYgKzE3NDIsNyBAQCBncm91cGluZ19wbGFubmVy KFBsYW5uZXJJbmZvICpyb290LCBkb3VibGUgdHVwbGVfZnJhY3Rpb24pCiAJCQlMaXN0CSAg ICp1cGRhdGVDb2xub3NMaXN0cyA9IE5JTDsKIAkJCUxpc3QJICAgKndpdGhDaGVja09wdGlv bkxpc3RzID0gTklMOwogCQkJTGlzdAkgICAqcmV0dXJuaW5nTGlzdHMgPSBOSUw7CisJCQlM aXN0CSAgICptZXJnZUFjdGlvbkxpc3RzID0gTklMOwogCQkJTGlzdAkgICAqcm93TWFya3M7 CiAKIAkJCWlmIChibXNfbWVtYmVyc2hpcChyb290LT5hbGxfcmVzdWx0X3JlbGlkcykgPT0g Qk1TX01VTFRJUExFKQpAQCAtMTc4OSw2ICsxODA5LDQzIEBAIGdyb3VwaW5nX3BsYW5uZXIo UGxhbm5lckluZm8gKnJvb3QsIGRvdWJsZSB0dXBsZV9mcmFjdGlvbikKIAkJCQkJCXJldHVy bmluZ0xpc3RzID0gbGFwcGVuZChyZXR1cm5pbmdMaXN0cywKIAkJCQkJCQkJCQkJCSByZXR1 cm5pbmdMaXN0KTsKIAkJCQkJfQorCQkJCQlpZiAocGFyc2UtPm1lcmdlQWN0aW9uTGlzdCkK KwkJCQkJeworCQkJCQkJTGlzdENlbGwgICAqbDsKKwkJCQkJCUxpc3QJICAgKm1lcmdlQWN0 aW9uTGlzdCA9IE5JTDsKKworCQkJCQkJLyoKKwkJCQkJCSAqIENvcHkgTWVyZ2VBY3Rpb25z IGFuZCB0cmFuc2xhdGUgc3R1ZmYgdGhhdAorCQkJCQkJICogcmVmZXJlbmNlcyBhdHRyaWJ1 dGUgbnVtYmVycy4KKwkJCQkJCSAqLworCQkJCQkJZm9yZWFjaChsLCBwYXJzZS0+bWVyZ2VB Y3Rpb25MaXN0KQorCQkJCQkJeworCQkJCQkJCU1lcmdlQWN0aW9uICphY3Rpb24gPSBsZmly c3QobCksCisJCQkJCQkJCQkgICAqbGVhZl9hY3Rpb24gPSBjb3B5T2JqZWN0KGFjdGlvbik7 CisKKwkJCQkJCQlsZWFmX2FjdGlvbi0+cXVhbCA9CisJCQkJCQkJCWFkanVzdF9hcHBlbmRy ZWxfYXR0cnNfbXVsdGlsZXZlbChyb290LAorCQkJCQkJCQkJCQkJCQkJCSAgKE5vZGUgKikg YWN0aW9uLT5xdWFsLAorCQkJCQkJCQkJCQkJCQkJCSAgdGhpc19yZXN1bHRfcmVsLT5yZWxp ZHMsCisJCQkJCQkJCQkJCQkJCQkJICB0b3BfcmVzdWx0X3JlbC0+cmVsaWRzKTsKKwkJCQkJ CQlsZWFmX2FjdGlvbi0+dGFyZ2V0TGlzdCA9IChMaXN0ICopCisJCQkJCQkJCWFkanVzdF9h cHBlbmRyZWxfYXR0cnNfbXVsdGlsZXZlbChyb290LAorCQkJCQkJCQkJCQkJCQkJCSAgKE5v ZGUgKikgYWN0aW9uLT50YXJnZXRMaXN0LAorCQkJCQkJCQkJCQkJCQkJCSAgdGhpc19yZXN1 bHRfcmVsLT5yZWxpZHMsCisJCQkJCQkJCQkJCQkJCQkJICB0b3BfcmVzdWx0X3JlbC0+cmVs aWRzKTsKKwkJCQkJCQlpZiAobGVhZl9hY3Rpb24tPmNvbW1hbmRUeXBlID09IENNRF9VUERB VEUpCisJCQkJCQkJCWxlYWZfYWN0aW9uLT51cGRhdGVDb2xub3MgPQorCQkJCQkJCQkJYWRq dXN0X2luaGVyaXRlZF9hdHRudW1zX211bHRpbGV2ZWwocm9vdCwKKwkJCQkJCQkJCQkJCQkJ CQkJCWFjdGlvbi0+dXBkYXRlQ29sbm9zLAorCQkJCQkJCQkJCQkJCQkJCQkJdGhpc19yZXN1 bHRfcmVsLT5yZWxpZCwKKwkJCQkJCQkJCQkJCQkJCQkJCXRvcF9yZXN1bHRfcmVsLT5yZWxp ZCk7CisJCQkJCQkJbWVyZ2VBY3Rpb25MaXN0ID0gbGFwcGVuZChtZXJnZUFjdGlvbkxpc3Qs CisJCQkJCQkJCQkJCQkJICBsZWFmX2FjdGlvbik7CisJCQkJCQl9CisKKwkJCQkJCW1lcmdl QWN0aW9uTGlzdHMgPSBsYXBwZW5kKG1lcmdlQWN0aW9uTGlzdHMsCisJCQkJCQkJCQkJCQkg ICBtZXJnZUFjdGlvbkxpc3QpOworCQkJCQl9CiAJCQkJfQogCiAJCQkJaWYgKHJlc3VsdFJl bGF0aW9ucyA9PSBOSUwpCkBAIC0xODExLDYgKzE4NjgsOCBAQCBncm91cGluZ19wbGFubmVy KFBsYW5uZXJJbmZvICpyb290LCBkb3VibGUgdHVwbGVfZnJhY3Rpb24pCiAJCQkJCQl3aXRo Q2hlY2tPcHRpb25MaXN0cyA9IGxpc3RfbWFrZTEocGFyc2UtPndpdGhDaGVja09wdGlvbnMp OwogCQkJCQlpZiAocGFyc2UtPnJldHVybmluZ0xpc3QpCiAJCQkJCQlyZXR1cm5pbmdMaXN0 cyA9IGxpc3RfbWFrZTEocGFyc2UtPnJldHVybmluZ0xpc3QpOworCQkJCQlpZiAocGFyc2Ut Pm1lcmdlQWN0aW9uTGlzdCkKKwkJCQkJCW1lcmdlQWN0aW9uTGlzdHMgPSBsaXN0X21ha2Ux KHBhcnNlLT5tZXJnZUFjdGlvbkxpc3QpOwogCQkJCX0KIAkJCX0KIAkJCWVsc2UKQEAgLTE4 MjMsNiArMTg4Miw4IEBAIGdyb3VwaW5nX3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3QsIGRv dWJsZSB0dXBsZV9mcmFjdGlvbikKIAkJCQkJd2l0aENoZWNrT3B0aW9uTGlzdHMgPSBsaXN0 X21ha2UxKHBhcnNlLT53aXRoQ2hlY2tPcHRpb25zKTsKIAkJCQlpZiAocGFyc2UtPnJldHVy bmluZ0xpc3QpCiAJCQkJCXJldHVybmluZ0xpc3RzID0gbGlzdF9tYWtlMShwYXJzZS0+cmV0 dXJuaW5nTGlzdCk7CisJCQkJaWYgKHBhcnNlLT5tZXJnZUFjdGlvbkxpc3QpCisJCQkJCW1l cmdlQWN0aW9uTGlzdHMgPSBsaXN0X21ha2UxKHBhcnNlLT5tZXJnZUFjdGlvbkxpc3QpOwog CQkJfQogCiAJCQkvKgpAQCAtMTg1OSw2ICsxOTIwLDcgQEAgZ3JvdXBpbmdfcGxhbm5lcihQ bGFubmVySW5mbyAqcm9vdCwgZG91YmxlIHR1cGxlX2ZyYWN0aW9uKQogCQkJCQkJCQkJCXJl dHVybmluZ0xpc3RzLAogCQkJCQkJCQkJCXJvd01hcmtzLAogCQkJCQkJCQkJCXBhcnNlLT5v bkNvbmZsaWN0LAorCQkJCQkJCQkJCW1lcmdlQWN0aW9uTGlzdHMsCiAJCQkJCQkJCQkJYXNz aWduX3NwZWNpYWxfZXhlY19wYXJhbShyb290KSk7CiAJCX0KIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vc2V0cmVmcy5jCmluZGV4IGE3YjExYjdmMDMuLmJmNGM3MjJjMDIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYworKysgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKQEAgLTk1Miw2ICs5NTIsNyBAQCBz ZXRfcGxhbl9yZWZzKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpwbGFuLCBpbnQgcnRvZmZz ZXQpCiAJCWNhc2UgVF9Nb2RpZnlUYWJsZToKIAkJCXsKIAkJCQlNb2RpZnlUYWJsZSAqc3Bs YW4gPSAoTW9kaWZ5VGFibGUgKikgcGxhbjsKKwkJCQlQbGFuCSAgICpzdWJwbGFuID0gb3V0 ZXJQbGFuKHNwbGFuKTsKIAogCQkJCUFzc2VydChzcGxhbi0+cGxhbi50YXJnZXRsaXN0ID09 IE5JTCk7CiAJCQkJQXNzZXJ0KHNwbGFuLT5wbGFuLnF1YWwgPT0gTklMKTsKQEAgLTk2Myw3 ICs5NjQsNiBAQCBzZXRfcGxhbl9yZWZzKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpwbGFu LCBpbnQgcnRvZmZzZXQpCiAJCQkJaWYgKHNwbGFuLT5yZXR1cm5pbmdMaXN0cykKIAkJCQl7 CiAJCQkJCUxpc3QJICAgKm5ld1JMID0gTklMOwotCQkJCQlQbGFuCSAgICpzdWJwbGFuID0g b3V0ZXJQbGFuKHNwbGFuKTsKIAkJCQkJTGlzdENlbGwgICAqbGNybCwKIAkJCQkJCQkgICAq bGNycjsKIApAQCAtMTAzMCw2ICsxMDMwLDY4IEBAIHNldF9wbGFuX3JlZnMoUGxhbm5lcklu Zm8gKnJvb3QsIFBsYW4gKnBsYW4sIGludCBydG9mZnNldCkKIAkJCQkJCWZpeF9zY2FuX2xp c3Qocm9vdCwgc3BsYW4tPmV4Y2xSZWxUbGlzdCwgcnRvZmZzZXQsIDEpOwogCQkJCX0KIAor CQkJCS8qCisJCQkJICogVGhlIE1FUkdFIHN0YXRlbWVudCBwcm9kdWNlcyB0aGUgdGFyZ2V0 IHJvd3MgYnkgcGVyZm9ybWluZworCQkJCSAqIGEgcmlnaHQgam9pbiBiZXR3ZWVuIHRoZSB0 YXJnZXQgcmVsYXRpb24gYW5kIHRoZSBzb3VyY2UKKwkJCQkgKiByZWxhdGlvbiAod2hpY2gg Y291bGQgYmUgYSBwbGFpbiByZWxhdGlvbiBvciBhIHN1YnF1ZXJ5KS4KKwkJCQkgKiBUaGUg SU5TRVJUIGFuZCBVUERBVEUgYWN0aW9ucyBvZiB0aGUgTUVSR0Ugc3RhdGVtZW50CisJCQkJ ICogcmVxdWlyZSBhY2Nlc3MgdG8gdGhlIGNvbHVtbnMgZnJvbSB0aGUgc291cmNlIHJlbGF0 aW9uLiBXZQorCQkJCSAqIGFycmFuZ2UgdGhpbmdzIHNvIHRoYXQgdGhlIHNvdXJjZSByZWxh dGlvbiBhdHRyaWJ1dGVzIGFyZQorCQkJCSAqIGF2YWlsYWJsZSBhcyBJTk5FUl9WQVIgYW5k IHRoZSB0YXJnZXQgcmVsYXRpb24gYXR0cmlidXRlcworCQkJCSAqIGFyZSBhdmFpbGFibGUg ZnJvbSB0aGUgc2NhbiB0dXBsZS4KKwkJCQkgKi8KKwkJCQlpZiAoc3BsYW4tPm1lcmdlQWN0 aW9uTGlzdHMgIT0gTklMKQorCQkJCXsKKwkJCQkJTGlzdENlbGwgICAqbGNhLAorCQkJCQkJ CSAgICpsY3I7CisKKwkJCQkJLyoKKwkJCQkJICogRml4IHRoZSB0YXJnZXRMaXN0IG9mIGlu ZGl2aWR1YWwgYWN0aW9uIG5vZGVzIHNvIHRoYXQKKwkJCQkJICogdGhlIHNvLWNhbGxlZCAi c291cmNlIHJlbGF0aW9uIiBWYXJzIGFyZSByZWZlcmVuY2VkIGFzCisJCQkJCSAqIElOTkVS X1ZBUi4gIE5vdGUgdGhhdCBmb3IgdGhpcyB0byB3b3JrIGNvcnJlY3RseSBkdXJpbmcKKwkJ CQkJICogZXhlY3V0aW9uLCB0aGUgZWN4dF9pbm5lcnR1cGxlIG11c3QgYmUgc2V0IHRvIHRo ZSB0dXBsZQorCQkJCQkgKiBvYnRhaW5lZCBieSBleGVjdXRpbmcgdGhlIHN1YnBsYW4sIHdo aWNoIGlzIHdoYXQKKwkJCQkJICogY29uc3RpdHV0ZXMgdGhlICJzb3VyY2UgcmVsYXRpb24i LgorCQkJCQkgKgorCQkJCQkgKiBXZSBsZWF2ZSB0aGUgVmFycyBmcm9tIHRoZSByZXN1bHQg cmVsYXRpb24gKGkuZS4gdGhlCisJCQkJCSAqIHRhcmdldCByZWxhdGlvbikgdW5jaGFuZ2Vk IGkuZS4gdGhvc2UgVmFycyB3b3VsZCBiZQorCQkJCQkgKiBwaWNrZWQgZnJvbSB0aGUgc2Nh biBzbG90LiBTbyBkdXJpbmcgZXhlY3V0aW9uLCB3ZSBtdXN0CisJCQkJCSAqIGVuc3VyZSB0 aGF0IGVjeHRfc2NhbnR1cGxlIGlzIHNldHVwIGNvcnJlY3RseSB0byByZWZlcgorCQkJCQkg KiB0byB0aGUgdHVwbGUgZnJvbSB0aGUgdGFyZ2V0IHJlbGF0aW9uLgorCQkJCQkgKi8KKwkJ CQkJaW5kZXhlZF90bGlzdCAqaXRsaXN0OworCisJCQkJCWl0bGlzdCA9IGJ1aWxkX3RsaXN0 X2luZGV4KHN1YnBsYW4tPnRhcmdldGxpc3QpOworCisJCQkJCWZvcmJvdGgobGNhLCBzcGxh bi0+bWVyZ2VBY3Rpb25MaXN0cywKKwkJCQkJCQlsY3IsIHNwbGFuLT5yZXN1bHRSZWxhdGlv bnMpCisJCQkJCXsKKwkJCQkJCUxpc3QJICAgKm1lcmdlQWN0aW9uTGlzdCA9IGxmaXJzdChs Y2EpOworCQkJCQkJSW5kZXgJCXJlc3VsdHJlbCA9IGxmaXJzdF9pbnQobGNyKTsKKworCQkJ CQkJZm9yZWFjaChsLCBtZXJnZUFjdGlvbkxpc3QpCisJCQkJCQl7CisJCQkJCQkJTWVyZ2VB Y3Rpb24gKmFjdGlvbiA9IChNZXJnZUFjdGlvbiAqKSBsZmlyc3QobCk7CisKKwkJCQkJCQkv KiBGaXggdGFyZ2V0TGlzdCBvZiBlYWNoIGFjdGlvbi4gKi8KKwkJCQkJCQlhY3Rpb24tPnRh cmdldExpc3QgPSBmaXhfam9pbl9leHByKHJvb3QsCisJCQkJCQkJCQkJCQkJCQkgICBhY3Rp b24tPnRhcmdldExpc3QsCisJCQkJCQkJCQkJCQkJCQkgICBOVUxMLCBpdGxpc3QsCisJCQkJ CQkJCQkJCQkJCQkgICByZXN1bHRyZWwsCisJCQkJCQkJCQkJCQkJCQkgICBydG9mZnNldCwK KwkJCQkJCQkJCQkJCQkJCSAgIE5VTV9FWEVDX1RMSVNUKHBsYW4pKTsKKworCQkJCQkJCS8q IEZpeCBxdWFscyB0b28uICovCisJCQkJCQkJYWN0aW9uLT5xdWFsID0gKE5vZGUgKikgZml4 X2pvaW5fZXhwcihyb290LAorCQkJCQkJCQkJCQkJCQkJCSAgKExpc3QgKikgYWN0aW9uLT5x dWFsLAorCQkJCQkJCQkJCQkJCQkJCSAgTlVMTCwgaXRsaXN0LAorCQkJCQkJCQkJCQkJCQkJ CSAgcmVzdWx0cmVsLAorCQkJCQkJCQkJCQkJCQkJCSAgcnRvZmZzZXQsCisJCQkJCQkJCQkJ CQkJCQkJICBOVU1fRVhFQ19RVUFMKHBsYW4pKTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0K KwogCQkJCXNwbGFuLT5ub21pbmFsUmVsYXRpb24gKz0gcnRvZmZzZXQ7CiAJCQkJaWYgKHNw bGFuLT5yb290UmVsYXRpb24pCiAJCQkJCXNwbGFuLT5yb290UmVsYXRpb24gKz0gcnRvZmZz ZXQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwam9pbnRy ZWUuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXBqb2ludHJlZS5jCmluZGV4 IDI4MjU4OWRlYzguLjRlMWNjNjU0ZjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGlt aXplci9wcmVwL3ByZXBqb2ludHJlZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9w cmVwL3ByZXBqb2ludHJlZS5jCkBAIC0xMzIsNiArMTMyLDg2IEBAIHN0YXRpYyB2b2lkIGZp eF9hcHBlbmRfcmVsX3JlbGlkcyhMaXN0ICphcHBlbmRfcmVsX2xpc3QsIGludCB2YXJubywK IHN0YXRpYyBOb2RlICpmaW5kX2pvaW50cmVlX25vZGVfZm9yX3JlbChOb2RlICpqdG5vZGUs IGludCByZWxpZCk7CiAKIAorLyoKKyAqIHRyYW5zZm9ybV9NRVJHRV90b19qb2luCisgKgkJ UmVwbGFjZSBhIE1FUkdFJ3Mgam9pbnRyZWUgdG8gYWxzbyBpbmNsdWRlIHRoZSB0YXJnZXQg cmVsYXRpb24uCisgKi8KK3ZvaWQKK3RyYW5zZm9ybV9NRVJHRV90b19qb2luKFF1ZXJ5ICpw YXJzZSkKK3sKKwlSYW5nZVRibEVudHJ5ICpqb2lucnRlOworCUpvaW5FeHByICAgKmpvaW5l eHByOworCUpvaW5UeXBlCWpvaW50eXBlOworCWludAkJCWpvaW5ydGk7CisJTGlzdAkgICAq dmFyczsKKworCWlmIChwYXJzZS0+Y29tbWFuZFR5cGUgIT0gQ01EX01FUkdFKQorCQlyZXR1 cm47CisKKwkvKiBYWFggcHJvYmFibHkgYm9ndXMgKi8KKwl2YXJzID0gTklMOworCisJLyoK KwkgKiBXaGVuIGFueSBXSEVOIE5PVCBNQVRDSEVEIFRIRU4gSU5TRVJUIGNsYXVzZXMgZXhp c3QsIHdlIG5lZWQgdG8gdXNlIGFuCisJICogb3V0ZXIgam9pbiBzbyB0aGF0IHdlIHByb2Nl c3MgYWxsIHVubWF0Y2hlZCB0dXBsZXMgZnJvbSB0aGUgc291cmNlCisJICogcmVsYXRpb24u ICBJZiBub25lIGV4aXN0LCB3ZSBjYW4gdXNlIGFuIGlubmVyIGpvaW4uCisJICovCisJaWYg KHBhcnNlLT5tZXJnZVVzZU91dGVySm9pbikKKwkJam9pbnR5cGUgPSBKT0lOX1JJR0hUOwor CWVsc2UKKwkJam9pbnR5cGUgPSBKT0lOX0lOTkVSOworCisJLyogTWFudWZhY3R1cmUgYSBq b2luIFJURSB0byB1c2UuICovCisJam9pbnJ0ZSA9IG1ha2VOb2RlKFJhbmdlVGJsRW50cnkp OworCWpvaW5ydGUtPnJ0ZWtpbmQgPSBSVEVfSk9JTjsKKwlqb2lucnRlLT5qb2ludHlwZSA9 IGpvaW50eXBlOworCWpvaW5ydGUtPmpvaW5tZXJnZWRjb2xzID0gMDsKKwlqb2lucnRlLT5q b2luYWxpYXN2YXJzID0gdmFyczsKKwlqb2lucnRlLT5qb2lubGVmdGNvbHMgPSBOSUw7CS8q IE1FUkdFIGRvZXMgbm90IGFsbG93IEpPSU4gVVNJTkcgKi8KKwlqb2lucnRlLT5qb2lucmln aHRjb2xzID0gTklMOwkvKiBkaXR0byAqLworCWpvaW5ydGUtPmpvaW5fdXNpbmdfYWxpYXMg PSBOVUxMOworCisJam9pbnJ0ZS0+YWxpYXMgPSBOVUxMOworCWpvaW5ydGUtPmVyZWYgPSBt YWtlQWxpYXMoIipNRVJHRSoiLCBOSUwpOworCWpvaW5ydGUtPmxhdGVyYWwgPSBmYWxzZTsK Kwlqb2lucnRlLT5pbmggPSBmYWxzZTsKKwlqb2lucnRlLT5pbkZyb21DbCA9IHRydWU7CisJ am9pbnJ0ZS0+cmVxdWlyZWRQZXJtcyA9IDA7CisJam9pbnJ0ZS0+Y2hlY2tBc1VzZXIgPSBJ bnZhbGlkT2lkOworCWpvaW5ydGUtPnNlbGVjdGVkQ29scyA9IE5VTEw7CisJam9pbnJ0ZS0+ aW5zZXJ0ZWRDb2xzID0gTlVMTDsKKwlqb2lucnRlLT51cGRhdGVkQ29scyA9IE5VTEw7CisJ am9pbnJ0ZS0+ZXh0cmFVcGRhdGVkQ29scyA9IE5VTEw7CisJam9pbnJ0ZS0+c2VjdXJpdHlR dWFscyA9IE5JTDsKKworCS8qCisJICogQWRkIGNvbXBsZXRlZCBSVEUgdG8gcHN0YXRlJ3Mg cmFuZ2UgdGFibGUgbGlzdCwgc28gdGhhdCB3ZSBrbm93IGl0cworCSAqIGluZGV4LgorCSAq LworCXBhcnNlLT5ydGFibGUgPSBsYXBwZW5kKHBhcnNlLT5ydGFibGUsIGpvaW5ydGUpOwor CWpvaW5ydGkgPSBsaXN0X2xlbmd0aChwYXJzZS0+cnRhYmxlKTsKKworCS8qCisJICogQ3Jl YXRlIGEgSk9JTiBiZXR3ZWVuIHRoZSB0YXJnZXQgYW5kIHRoZSBzb3VyY2UgcmVsYXRpb24u CisJICovCisJam9pbmV4cHIgPSBtYWtlTm9kZShKb2luRXhwcik7CisJam9pbmV4cHItPmpv aW50eXBlID0gam9pbnR5cGU7CisJam9pbmV4cHItPmlzTmF0dXJhbCA9IGZhbHNlOworCWpv aW5leHByLT5sYXJnID0gKE5vZGUgKikgbWFrZU5vZGUoUmFuZ2VUYmxSZWYpOworCSgoUmFu Z2VUYmxSZWYgKikgam9pbmV4cHItPmxhcmcpLT5ydGluZGV4ID0gcGFyc2UtPnJlc3VsdFJl bGF0aW9uOworCWpvaW5leHByLT5yYXJnID0gbGluaXRpYWwocGFyc2UtPmpvaW50cmVlLT5m cm9tbGlzdCk7CS8qIG9yaWdpbmFsIGpvaW4gKi8KKwlqb2luZXhwci0+dXNpbmdDbGF1c2Ug PSBOSUw7CisJam9pbmV4cHItPmpvaW5fdXNpbmdfYWxpYXMgPSBOVUxMOworCS8qIFRoZSBx dWFscyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBqb2ludHJlZSBhbmQgaW50byB0aGlzIHNwZWNp ZmljIGpvaW4gKi8KKwlqb2luZXhwci0+cXVhbHMgPSBwYXJzZS0+am9pbnRyZWUtPnF1YWxz OworCWpvaW5leHByLT5hbGlhcyA9IE5VTEw7CisJam9pbmV4cHItPnJ0aW5kZXggPSBqb2lu cnRpOworCisJLyogTWFrZSB0aGUgbmV3IGpvaW4gYmUgdGhlIHNvbGUgZW50cnkgaW4gdGhl IHF1ZXJ5J3Mgam9pbnRyZWUgKi8KKwlwYXJzZS0+am9pbnRyZWUtPmZyb21saXN0ID0gbGlz dF9tYWtlMShqb2luZXhwcik7CisJcGFyc2UtPmpvaW50cmVlLT5xdWFscyA9IE5VTEw7Cit9 CisKIC8qCiAgKiByZXBsYWNlX2VtcHR5X2pvaW50cmVlCiAgKgkJSWYgdGhlIFF1ZXJ5J3Mg am9pbnRyZWUgaXMgZW1wdHksIHJlcGxhY2UgaXQgd2l0aCBhIGR1bW15IFJURV9SRVNVTFQK QEAgLTIwNTgsNiArMjEzOCwxNyBAQCBwZXJmb3JtX3B1bGx1cF9yZXBsYWNlX3ZhcnMoUGxh bm5lckluZm8gKnJvb3QsCiAJCSAqIGNhbid0IGNvbnRhaW4gYW55IHJlZmVyZW5jZXMgdG8g YSBzdWJxdWVyeS4KIAkJICovCiAJfQorCWlmIChwYXJzZS0+bWVyZ2VBY3Rpb25MaXN0KQor CXsKKwkJZm9yZWFjaChsYywgcGFyc2UtPm1lcmdlQWN0aW9uTGlzdCkKKwkJeworCQkJTWVy Z2VBY3Rpb24gKmFjdGlvbiA9IGxmaXJzdChsYyk7CisKKwkJCWFjdGlvbi0+cXVhbCA9IHB1 bGx1cF9yZXBsYWNlX3ZhcnMoYWN0aW9uLT5xdWFsLCBydmNvbnRleHQpOworCQkJYWN0aW9u LT50YXJnZXRMaXN0ID0gKExpc3QgKikKKwkJCQlwdWxsdXBfcmVwbGFjZV92YXJzKChOb2Rl ICopIGFjdGlvbi0+dGFyZ2V0TGlzdCwgcnZjb250ZXh0KTsKKwkJfQorCX0KIAlyZXBsYWNl X3ZhcnNfaW5fam9pbnRyZWUoKE5vZGUgKikgcGFyc2UtPmpvaW50cmVlLCBydmNvbnRleHQs CiAJCQkJCQkJIGxvd2VzdF9udWxsaW5nX291dGVyX2pvaW4pOwogCUFzc2VydChwYXJzZS0+ c2V0T3BlcmF0aW9ucyA9PSBOVUxMKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGlt aXplci9wcmVwL3ByZXB0bGlzdC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJl cHRsaXN0LmMKaW5kZXggOTVlODJjZjk1OC4uYjUzMzc3OGEwMSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcHRsaXN0LmMKKysrIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3ByZXAvcHJlcHRsaXN0LmMKQEAgLTEyNCw2ICsxMjQsNDMgQEAgcHJlcHJv Y2Vzc190YXJnZXRsaXN0KFBsYW5uZXJJbmZvICpyb290KQogCQl0bGlzdCA9IHJvb3QtPnBy b2Nlc3NlZF90bGlzdDsKIAl9CiAKKwkvKgorCSAqIEZvciBNRVJHRSB3ZSBuZWVkIHRvIGhh bmRsZSB0aGUgdGFyZ2V0IGxpc3QgZm9yIHRoZSB0YXJnZXQgcmVsYXRpb24sCisJICogYW5k IGFsc28gdGFyZ2V0IGxpc3QgZm9yIGVhY2ggYWN0aW9uIChvbmx5IElOU0VSVC9VUERBVEUg bWF0dGVyKS4KKwkgKi8KKwlpZiAoY29tbWFuZF90eXBlID09IENNRF9NRVJHRSkKKwl7CisJ CUxpc3RDZWxsICAgKmw7CisKKwkJLyoKKwkJICogRm9yIE1FUkdFLCBhZGQgYW55IGp1bmsg Y29sdW1uKHMpIG5lZWRlZCB0byBhbGxvdyB0aGUgZXhlY3V0b3IgdG8KKwkJICogaWRlbnRp ZnkgdGhlIHJvd3MgdG8gYmUgaW5zZXJ0ZWQgb3IgdXBkYXRlZC4KKwkJICovCisJCXJvb3Qt PnByb2Nlc3NlZF90bGlzdCA9IHRsaXN0OworCQlhZGRfcm93X2lkZW50aXR5X2NvbHVtbnMo cm9vdCwgcmVzdWx0X3JlbGF0aW9uLAorCQkJCQkJCQkgdGFyZ2V0X3J0ZSwgdGFyZ2V0X3Jl bGF0aW9uKTsKKworCQl0bGlzdCA9IHJvb3QtPnByb2Nlc3NlZF90bGlzdDsKKworCQkvKgor CQkgKiBGb3IgTUVSR0UsIGhhbmRsZSB0YXJnZXRsaXN0IG9mIGVhY2ggTWVyZ2VBY3Rpb24g c2VwYXJhdGVseS4gR2l2ZQorCQkgKiB0aGUgc2FtZSB0cmVhdG1lbnQgdG8gTWVyZ2VBY3Rp b24tPnRhcmdldExpc3QgYXMgd2Ugd291bGQgaGF2ZQorCQkgKiBnaXZlbiB0byBhIHJlZ3Vs YXIgSU5TRVJULiAgRm9yIFVQREFURSwgY29sbGVjdCB0aGUgY29sdW1uIG51bWJlcnMKKwkJ ICogYmVpbmcgbW9kaWZpZWQuCisJCSAqLworCQlmb3JlYWNoKGwsIHBhcnNlLT5tZXJnZUFj dGlvbkxpc3QpCisJCXsKKwkJCU1lcmdlQWN0aW9uICphY3Rpb24gPSAoTWVyZ2VBY3Rpb24g KikgbGZpcnN0KGwpOworCisJCQlpZiAoYWN0aW9uLT5jb21tYW5kVHlwZSA9PSBDTURfSU5T RVJUKQorCQkJCWFjdGlvbi0+dGFyZ2V0TGlzdCA9IGV4cGFuZF9pbnNlcnRfdGFyZ2V0bGlz dChhY3Rpb24tPnRhcmdldExpc3QsCisJCQkJCQkJCQkJCQkJCQkgIHRhcmdldF9yZWxhdGlv bik7CisJCQllbHNlIGlmIChhY3Rpb24tPmNvbW1hbmRUeXBlID09IENNRF9VUERBVEUpCisJ CQkJYWN0aW9uLT51cGRhdGVDb2xub3MgPQorCQkJCQlleHRyYWN0X3VwZGF0ZV90YXJnZXRs aXN0X2NvbG5vcyhhY3Rpb24tPnRhcmdldExpc3QpOworCQl9CisJfQorCiAJLyoKIAkgKiBB ZGQgbmVjZXNzYXJ5IGp1bmsgY29sdW1ucyBmb3Igcm93bWFya2VkIHJlbHMuICBUaGVzZSB2 YWx1ZXMgYXJlIG5lZWRlZAogCSAqIGZvciBsb2NraW5nIG9mIHJlbHMgc2VsZWN0ZWQgRk9S IFVQREFURS9TSEFSRSwgYW5kIHRvIGRvIEV2YWxQbGFuUXVhbApAQCAtMzM3LDYgKzM3NCw4 IEBAIGV4cGFuZF9pbnNlcnRfdGFyZ2V0bGlzdChMaXN0ICp0bGlzdCwgUmVsYXRpb24gcmVs KQogCQkJICogY29uc3RyYWludHMgdGhhdCBtaWdodCBleGlzdCAtLS0gdGhpcyBpcyB0byBj YXRjaCBkb21haW4gTk9UCiAJCQkgKiBOVUxMLgogCQkJICoKKwkJCSAqIFhYWCBTaG91bGQg dGhpcyBleHBsYWluIHdoeSBNRVJHRSBoYXMgdGhlIHNhbWUgbG9naWMgYXMgVVBEQVRFPwor CQkJICoKIAkJCSAqIFdoZW4gZ2VuZXJhdGluZyBhIE5VTEwgY29uc3RhbnQgZm9yIGEgZHJv cHBlZCBjb2x1bW4sIHdlIGxhYmVsCiAJCQkgKiBpdCBJTlQ0IChhbnkgb3RoZXIgZ3VhcmFu dGVlZC10by1leGlzdCBkYXRhdHlwZSB3b3VsZCBkbyBhcwogCQkJICogd2VsbCkuIFdlIGNh bid0IGxhYmVsIGl0IHdpdGggdGhlIGRyb3BwZWQgY29sdW1uJ3MgZGF0YXR5cGUKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYyBiL3NyYy9i YWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYwppbmRleCAyZjA2ZmE3NDNjLi45 ZDRiYjQ3MDI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBl bmRpbmZvLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5j CkBAIC03NzQsOCArNzc0LDggQEAgYWRkX3Jvd19pZGVudGl0eV92YXIoUGxhbm5lckluZm8g KnJvb3QsIFZhciAqb3JpZ192YXIsCiAJQXNzZXJ0KG9yaWdfdmFyLT52YXJsZXZlbHN1cCA9 PSAwKTsKIAogCS8qCi0JICogSWYgd2UncmUgZG9pbmcgbm9uLWluaGVyaXRlZCBVUERBVEUv REVMRVRFLCB0aGVyZSdzIGxpdHRsZSBuZWVkIGZvcgotCSAqIFJPV0lEX1ZBUiBzaGVuYW5p Z2Fucy4gIEp1c3Qgc2hvdmUgdGhlIHByZXNlbnRlZCBWYXIgaW50byB0aGUKKwkgKiBJZiB3 ZSdyZSBkb2luZyBub24taW5oZXJpdGVkIFVQREFURS9ERUxFVEUvTUVSR0UsIHRoZXJlJ3Mg bGl0dGxlIG5lZWQKKwkgKiBmb3IgUk9XSURfVkFSIHNoZW5hbmlnYW5zLiAgSnVzdCBzaG92 ZSB0aGUgcHJlc2VudGVkIFZhciBpbnRvIHRoZQogCSAqIHByb2Nlc3NlZF90bGlzdCwgYW5k IHdlJ3JlIGRvbmUuCiAJICovCiAJaWYgKHJ0aW5kZXggPT0gcm9vdC0+cGFyc2UtPnJlc3Vs dFJlbGF0aW9uKQpAQCAtODYyLDE0ICs4NjIsMTYgQEAgYWRkX3Jvd19pZGVudGl0eV9jb2x1 bW5zKFBsYW5uZXJJbmZvICpyb290LCBJbmRleCBydGluZGV4LAogCWNoYXIJCXJlbGtpbmQg PSB0YXJnZXRfcmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZDsKIAlWYXIJCSAgICp2YXI7CiAK LQlBc3NlcnQoY29tbWFuZFR5cGUgPT0gQ01EX1VQREFURSB8fCBjb21tYW5kVHlwZSA9PSBD TURfREVMRVRFKTsKKwlBc3NlcnQoY29tbWFuZFR5cGUgPT0gQ01EX1VQREFURSB8fCBjb21t YW5kVHlwZSA9PSBDTURfREVMRVRFIHx8IGNvbW1hbmRUeXBlID09IENNRF9NRVJHRSk7CiAK LQlpZiAocmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OIHx8CisJaWYgKGNvbW1hbmRUeXBl ID09IENNRF9NRVJHRSB8fAorCQlyZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04gfHwKIAkJ cmVsa2luZCA9PSBSRUxLSU5EX01BVFZJRVcgfHwKIAkJcmVsa2luZCA9PSBSRUxLSU5EX1BB UlRJVElPTkVEX1RBQkxFKQogCXsKIAkJLyoKLQkJICogRW1pdCBDVElEIHNvIHRoYXQgZXhl Y3V0b3IgY2FuIGZpbmQgdGhlIHJvdyB0byB1cGRhdGUgb3IgZGVsZXRlLgorCQkgKiBFbWl0 IENUSUQgc28gdGhhdCBleGVjdXRvciBjYW4gZmluZCB0aGUgcm93IHRvIG1lcmdlLCB1cGRh dGUgb3IKKwkJICogZGVsZXRlLgogCQkgKi8KIAkJdmFyID0gbWFrZVZhcihydGluZGV4LAog CQkJCQkgIFNlbGZJdGVtUG9pbnRlckF0dHJpYnV0ZU51bWJlciwKQEAgLTk0Miw4ICs5NDQs MTEgQEAgZGlzdHJpYnV0ZV9yb3dfaWRlbnRpdHlfdmFycyhQbGFubmVySW5mbyAqcm9vdCkK IAlSZWxPcHRJbmZvICp0YXJnZXRfcmVsOwogCUxpc3RDZWxsICAgKmxjOwogCi0JLyogVGhl cmUncyBub3RoaW5nIHRvIGRvIGlmIHRoaXMgaXNuJ3QgYW4gaW5oZXJpdGVkIFVQREFURS9E RUxFVEUuICovCi0JaWYgKHBhcnNlLT5jb21tYW5kVHlwZSAhPSBDTURfVVBEQVRFICYmIHBh cnNlLT5jb21tYW5kVHlwZSAhPSBDTURfREVMRVRFKQorCS8qCisJICogVGhlcmUncyBub3Ro aW5nIHRvIGRvIGlmIHRoaXMgaXNuJ3QgYW4gaW5oZXJpdGVkIFVQREFURS9ERUxFVEUvTUVS R0UuCisJICovCisJaWYgKHBhcnNlLT5jb21tYW5kVHlwZSAhPSBDTURfVVBEQVRFICYmIHBh cnNlLT5jb21tYW5kVHlwZSAhPSBDTURfREVMRVRFICYmCisJCXBhcnNlLT5jb21tYW5kVHlw ZSAhPSBDTURfTUVSR0UpCiAJewogCQlBc3NlcnQocm9vdC0+cm93X2lkZW50aXR5X3ZhcnMg PT0gTklMKTsKIAkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3V0aWwvcGF0aG5vZGUuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2Rl LmMKaW5kZXggNWMzMmM5NmI3MS4uOTlkZjc2YjZiNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvdXRpbC9wYXRobm9kZS5jCkBAIC0zNjIwLDYgKzM2MjAsNyBAQCBjcmVhdGVfbG9ja3Jv d3NfcGF0aChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogICogJ3Jvd01h cmtzJyBpcyBhIGxpc3Qgb2YgUGxhblJvd01hcmtzIChub24tbG9ja2luZyBvbmx5KQogICog J29uY29uZmxpY3QnIGlzIHRoZSBPTiBDT05GTElDVCBjbGF1c2UsIG9yIE5VTEwKICAqICdl cHFQYXJhbScgaXMgdGhlIElEIG9mIFBhcmFtIGZvciBFdmFsUGxhblF1YWwgcmUtZXZhbAor ICogJ21lcmdlQWN0aW9uTGlzdHMnIGlzIGEgbGlzdCBvZiBsaXN0cyBvZiBNRVJHRSBhY3Rp b25zIChvbmUgcGVyIHJlbCkKICAqLwogTW9kaWZ5VGFibGVQYXRoICoKIGNyZWF0ZV9tb2Rp Znl0YWJsZV9wYXRoKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCkBAIC0z NjMxLDEzICszNjMyLDE0IEBAIGNyZWF0ZV9tb2RpZnl0YWJsZV9wYXRoKFBsYW5uZXJJbmZv ICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJCQkJCQlMaXN0ICp1cGRhdGVDb2xub3NMaXN0 cywKIAkJCQkJCUxpc3QgKndpdGhDaGVja09wdGlvbkxpc3RzLCBMaXN0ICpyZXR1cm5pbmdM aXN0cywKIAkJCQkJCUxpc3QgKnJvd01hcmtzLCBPbkNvbmZsaWN0RXhwciAqb25jb25mbGlj dCwKLQkJCQkJCWludCBlcHFQYXJhbSkKKwkJCQkJCUxpc3QgKm1lcmdlQWN0aW9uTGlzdHMs IGludCBlcHFQYXJhbSkKIHsKIAlNb2RpZnlUYWJsZVBhdGggKnBhdGhub2RlID0gbWFrZU5v ZGUoTW9kaWZ5VGFibGVQYXRoKTsKIAotCUFzc2VydChvcGVyYXRpb24gPT0gQ01EX1VQREFU RSA/Ci0JCSAgIGxpc3RfbGVuZ3RoKHJlc3VsdFJlbGF0aW9ucykgPT0gbGlzdF9sZW5ndGgo dXBkYXRlQ29sbm9zTGlzdHMpIDoKLQkJICAgdXBkYXRlQ29sbm9zTGlzdHMgPT0gTklMKTsK KwlBc3NlcnQob3BlcmF0aW9uID09IENNRF9NRVJHRSB8fAorCQkgICAob3BlcmF0aW9uID09 IENNRF9VUERBVEUgPworCQkJbGlzdF9sZW5ndGgocmVzdWx0UmVsYXRpb25zKSA9PSBsaXN0 X2xlbmd0aCh1cGRhdGVDb2xub3NMaXN0cykgOgorCQkJdXBkYXRlQ29sbm9zTGlzdHMgPT0g TklMKSk7CiAJQXNzZXJ0KHdpdGhDaGVja09wdGlvbkxpc3RzID09IE5JTCB8fAogCQkgICBs aXN0X2xlbmd0aChyZXN1bHRSZWxhdGlvbnMpID09IGxpc3RfbGVuZ3RoKHdpdGhDaGVja09w dGlvbkxpc3RzKSk7CiAJQXNzZXJ0KHJldHVybmluZ0xpc3RzID09IE5JTCB8fApAQCAtMzY5 Nyw2ICszNjk5LDcgQEAgY3JlYXRlX21vZGlmeXRhYmxlX3BhdGgoUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKnJlbCwKIAlwYXRobm9kZS0+cm93TWFya3MgPSByb3dNYXJrczsK IAlwYXRobm9kZS0+b25jb25mbGljdCA9IG9uY29uZmxpY3Q7CiAJcGF0aG5vZGUtPmVwcVBh cmFtID0gZXBxUGFyYW07CisJcGF0aG5vZGUtPm1lcmdlQWN0aW9uTGlzdHMgPSBtZXJnZUFj dGlvbkxpc3RzOwogCiAJcmV0dXJuIHBhdGhub2RlOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3V0aWwvcGxhbmNhdC5jCmluZGV4IGE1MDAyYWQ4OTUuLmRmOTdiNzk5MTcgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYworKysgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKQEAgLTIxNjcsNiArMjE2NywxMCBAQCBo YXNfcm93X3RyaWdnZXJzKFBsYW5uZXJJbmZvICpyb290LCBJbmRleCBydGksIENtZFR5cGUg ZXZlbnQpCiAJCQkJIHRyaWdEZXNjLT50cmlnX2RlbGV0ZV9iZWZvcmVfcm93KSkKIAkJCQly ZXN1bHQgPSB0cnVlOwogCQkJYnJlYWs7CisJCQkvKiBUaGVyZSBpcyBubyBzZXBhcmF0ZSBl dmVudCBmb3IgTUVSR0UsIG9ubHkgSU5TRVJUL1VQREFURS9ERUxFVEUgKi8KKwkJY2FzZSBD TURfTUVSR0U6CisJCQlyZXN1bHQgPSBmYWxzZTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0Ogog CQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBDbWRUeXBlOiAlZCIsIChpbnQpIGV2ZW50 KTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL01ha2VmaWxl IGIvc3JjL2JhY2tlbmQvcGFyc2VyL01ha2VmaWxlCmluZGV4IDVkZGI5YTkyZjAuLjlmMWM0 MDIyYmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9NYWtlZmlsZQorKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvTWFrZWZpbGUKQEAgLTIzLDYgKzIzLDcgQEAgT0JKUyA9IFwK IAlwYXJzZV9lbnIubyBcCiAJcGFyc2VfZXhwci5vIFwKIAlwYXJzZV9mdW5jLm8gXAorCXBh cnNlX21lcmdlLm8gXAogCXBhcnNlX25vZGUubyBcCiAJcGFyc2Vfb3Blci5vIFwKIAlwYXJz ZV9wYXJhbS5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMg Yi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCmluZGV4IDE5ZDk3ZmU3MzEuLjM2NGI1 OTUxMGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKKysrIGIv c3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwpAQCAtMzksNiArMzksNyBAQAogI2luY2x1 ZGUgInBhcnNlci9wYXJzZV9jdGUuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfZXhwci5o IgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9mdW5jLmgiCisjaW5jbHVkZSAicGFyc2VyL3Bh cnNlX21lcmdlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX29wZXIuaCIKICNpbmNsdWRl ICJwYXJzZXIvcGFyc2VfcGFyYW0uaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRp b24uaCIKQEAgLTYwLDkgKzYxLDYgQEAgcG9zdF9wYXJzZV9hbmFseXplX2hvb2tfdHlwZSBw b3N0X3BhcnNlX2FuYWx5emVfaG9vayA9IE5VTEw7CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9y bU9wdGlvbmFsU2VsZWN0SW50byhQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKnBhcnNlVHJl ZSk7CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybURlbGV0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBEZWxldGVTdG10ICpzdG10KTsKIHN0YXRpYyBRdWVyeSAqdHJhbnNmb3JtSW5zZXJ0 U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIEluc2VydFN0bXQgKnN0bXQpOwotc3RhdGljIExp c3QgKnRyYW5zZm9ybUluc2VydFJvdyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmV4cHJs aXN0LAotCQkJCQkJCQlMaXN0ICpzdG10Y29scywgTGlzdCAqaWNvbHVtbnMsIExpc3QgKmF0 dHJub3MsCi0JCQkJCQkJCWJvb2wgc3RyaXBfaW5kaXJlY3Rpb24pOwogc3RhdGljIE9uQ29u ZmxpY3RFeHByICp0cmFuc2Zvcm1PbkNvbmZsaWN0Q2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIAkJCQkJCQkJCQkJCSBPbkNvbmZsaWN0Q2xhdXNlICpvbkNvbmZsaWN0Q2xhdXNlKTsK IHN0YXRpYyBpbnQJY291bnRfcm93ZXhwcl9jb2x1bW5zKFBhcnNlU3RhdGUgKnBzdGF0ZSwg Tm9kZSAqZXhwcik7CkBAIC03Niw4ICs3NCw2IEBAIHN0YXRpYyB2b2lkIGRldGVybWluZVJl Y3Vyc2l2ZUNvbFR5cGVzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIHN0YXRpYyBRdWVyeSAqdHJh bnNmb3JtUmV0dXJuU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFJldHVyblN0bXQgKnN0bXQp Owogc3RhdGljIFF1ZXJ5ICp0cmFuc2Zvcm1VcGRhdGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0 ZSwgVXBkYXRlU3RtdCAqc3RtdCk7CiBzdGF0aWMgTGlzdCAqdHJhbnNmb3JtUmV0dXJuaW5n TGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnJldHVybmluZ0xpc3QpOwotc3RhdGlj IExpc3QgKnRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLAot CQkJCQkJCQkJICAgTGlzdCAqdGFyZ2V0TGlzdCk7CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9y bVBMQXNzaWduU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQlQTEFzc2lnblN0 bXQgKnN0bXQpOwogc3RhdGljIFF1ZXJ5ICp0cmFuc2Zvcm1EZWNsYXJlQ3Vyc29yU3RtdChQ YXJzZVN0YXRlICpwc3RhdGUsCkBAIC0yODksNiArMjg1LDcgQEAgdHJhbnNmb3JtU3RtdChQ YXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKnBhcnNlVHJlZSkKIAkJY2FzZSBUX0luc2VydFN0 bXQ6CiAJCWNhc2UgVF9VcGRhdGVTdG10OgogCQljYXNlIFRfRGVsZXRlU3RtdDoKKwkJY2Fz ZSBUX01lcmdlU3RtdDoKIAkJCSh2b2lkKSB0ZXN0X3Jhd19leHByZXNzaW9uX2NvdmVyYWdl KHBhcnNlVHJlZSwgTlVMTCk7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKQEAgLTMxMyw2ICsz MTAsMTAgQEAgdHJhbnNmb3JtU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKnBhcnNl VHJlZSkKIAkJCXJlc3VsdCA9IHRyYW5zZm9ybVVwZGF0ZVN0bXQocHN0YXRlLCAoVXBkYXRl U3RtdCAqKSBwYXJzZVRyZWUpOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX01lcmdlU3RtdDoK KwkJCXJlc3VsdCA9IHRyYW5zZm9ybU1lcmdlU3RtdChwc3RhdGUsIChNZXJnZVN0bXQgKikg cGFyc2VUcmVlKTsKKwkJCWJyZWFrOworCiAJCWNhc2UgVF9TZWxlY3RTdG10OgogCQkJewog CQkJCVNlbGVjdFN0bXQgKm4gPSAoU2VsZWN0U3RtdCAqKSBwYXJzZVRyZWU7CkBAIC0zOTcs NiArMzk4LDcgQEAgYW5hbHl6ZV9yZXF1aXJlc19zbmFwc2hvdChSYXdTdG10ICpwYXJzZVRy ZWUpCiAJCWNhc2UgVF9JbnNlcnRTdG10OgogCQljYXNlIFRfRGVsZXRlU3RtdDoKIAkJY2Fz ZSBUX1VwZGF0ZVN0bXQ6CisJCWNhc2UgVF9NZXJnZVN0bXQ6CiAJCWNhc2UgVF9TZWxlY3RT dG10OgogCQljYXNlIFRfUExBc3NpZ25TdG10OgogCQkJcmVzdWx0ID0gdHJ1ZTsKQEAgLTkx NSw3ICs5MTcsNyBAQCB0cmFuc2Zvcm1JbnNlcnRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwg SW5zZXJ0U3RtdCAqc3RtdCkKICAqIGF0dHJub3M6IGludGVnZXIgY29sdW1uIG51bWJlcnMg KG11c3QgYmUgc2FtZSBsZW5ndGggYXMgaWNvbHVtbnMpCiAgKiBzdHJpcF9pbmRpcmVjdGlv bjogaWYgdHJ1ZSwgcmVtb3ZlIGFueSBmaWVsZC9hcnJheSBhc3NpZ25tZW50IG5vZGVzCiAg Ki8KLXN0YXRpYyBMaXN0ICoKK0xpc3QgKgogdHJhbnNmb3JtSW5zZXJ0Um93KFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTGlzdCAqZXhwcmxpc3QsCiAJCQkJICAgTGlzdCAqc3RtdGNvbHMsIExp c3QgKmljb2x1bW5zLCBMaXN0ICphdHRybm9zLAogCQkJCSAgIGJvb2wgc3RyaXBfaW5kaXJl Y3Rpb24pCkBAIC0xNTUyLDcgKzE1NTQsNyBAQCB0cmFuc2Zvcm1WYWx1ZXNDbGF1c2UoUGFy c2VTdGF0ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpzdG10KQogCSAqIEdlbmVyYXRlIGEgdGFy Z2V0bGlzdCBhcyB0aG91Z2ggZXhwYW5kaW5nICIqIgogCSAqLwogCUFzc2VydChwc3RhdGUt PnBfbmV4dF9yZXNubyA9PSAxKTsKLQlxcnktPnRhcmdldExpc3QgPSBleHBhbmROU0l0ZW1B dHRycyhwc3RhdGUsIG5zaXRlbSwgMCwgLTEpOworCXFyeS0+dGFyZ2V0TGlzdCA9IGV4cGFu ZE5TSXRlbUF0dHJzKHBzdGF0ZSwgbnNpdGVtLCAwLCB0cnVlLCAtMSk7CiAKIAkvKgogCSAq IFRoZSBncmFtbWFyIGFsbG93cyBhdHRhY2hpbmcgT1JERVIgQlksIExJTUlULCBhbmQgRk9S IFVQREFURSB0byBhCkBAIC0yMzc3LDkgKzIzNzksOSBAQCB0cmFuc2Zvcm1VcGRhdGVTdG10 KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVXBkYXRlU3RtdCAqc3RtdCkKIAogLyoKICAqIHRyYW5z Zm9ybVVwZGF0ZVRhcmdldExpc3QgLQotICoJaGFuZGxlIFNFVCBjbGF1c2UgaW4gVVBEQVRF L0lOU0VSVCAuLi4gT04gQ09ORkxJQ1QgVVBEQVRFCisgKgloYW5kbGUgU0VUIGNsYXVzZSBp biBVUERBVEUvTUVSR0UvSU5TRVJUIC4uLiBPTiBDT05GTElDVCBVUERBVEUKICAqLwotc3Rh dGljIExpc3QgKgorTGlzdCAqCiB0cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0KFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTGlzdCAqb3JpZ1RsaXN0KQogewogCUxpc3QJICAgKnRsaXN0ID0gTklM OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkKaW5kZXggYTAzYjMzYjUzYi4uZWMzNDEyM2M3ZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55CkBAIC0yNzgsNiArMjc4LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVW aWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsK IAlzdHJ1Y3QgU2VsZWN0TGltaXQJKnNlbGVjdGxpbWl0OwogCVNldFF1YW50aWZpZXIJIHNl dHF1YW50aWZpZXI7CiAJc3RydWN0IEdyb3VwQ2xhdXNlICAqZ3JvdXBjbGF1c2U7CisJTWVy Z2VXaGVuQ2xhdXNlCQkqbWVyZ2V3aGVuOwogCXN0cnVjdCBLZXlBY3Rpb25zCSprZXlhY3Rp b25zOwogCXN0cnVjdCBLZXlBY3Rpb24JKmtleWFjdGlvbjsKIH0KQEAgLTMwNyw3ICszMDgs NyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFt ZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQlEcm9wVHJhbnNmb3JtU3RtdAog CQlEcm9wVXNlck1hcHBpbmdTdG10IEV4cGxhaW5TdG10IEZldGNoU3RtdAogCQlHcmFudFN0 bXQgR3JhbnRSb2xlU3RtdCBJbXBvcnRGb3JlaWduU2NoZW1hU3RtdCBJbmRleFN0bXQgSW5z ZXJ0U3RtdAotCQlMaXN0ZW5TdG10IExvYWRTdG10IExvY2tTdG10IE5vdGlmeVN0bXQgRXhw bGFpbmFibGVTdG10IFByZXBhcmFibGVTdG10CisJCUxpc3RlblN0bXQgTG9hZFN0bXQgTG9j a1N0bXQgTWVyZ2VTdG10IE5vdGlmeVN0bXQgRXhwbGFpbmFibGVTdG10IFByZXBhcmFibGVT dG10CiAJCUNyZWF0ZUZ1bmN0aW9uU3RtdCBBbHRlckZ1bmN0aW9uU3RtdCBSZWluZGV4U3Rt dCBSZW1vdmVBZ2dyU3RtdAogCQlSZW1vdmVGdW5jU3RtdCBSZW1vdmVPcGVyU3RtdCBSZW5h bWVTdG10IFJldHVyblN0bXQgUmV2b2tlU3RtdCBSZXZva2VSb2xlU3RtdAogCQlSdWxlQWN0 aW9uU3RtdCBSdWxlQWN0aW9uU3RtdE9yRW1wdHkgUnVsZVN0bXQKQEAgLTQ0Niw3ICs0NDcs NyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFt ZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQkJCXRyYW5zZm9ybV9lbGVtZW50 X2xpc3QgdHJhbnNmb3JtX3R5cGVfbGlzdAogCQkJCVRyaWdnZXJUcmFuc2l0aW9ucyBUcmln Z2VyUmVmZXJlbmNpbmcKIAkJCQl2YWN1dW1fcmVsYXRpb25fbGlzdCBvcHRfdmFjdXVtX3Jl bGF0aW9uX2xpc3QKLQkJCQlkcm9wX29wdGlvbl9saXN0IHB1Yl9vYmpfbGlzdAorCQkJCWRy b3Bfb3B0aW9uX2xpc3QgcHViX29ial9saXN0IG1lcmdlX3ZhbHVlc19jbGF1c2UKIAogJXR5 cGUgPG5vZGU+CW9wdF9yb3V0aW5lX2JvZHkKICV0eXBlIDxncm91cGNsYXVzZT4gZ3JvdXBf Y2xhdXNlCkBAIC01MDYsNiArNTA3LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVW aWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsK ICV0eXBlIDxpc3RtdD4JaW5zZXJ0X3Jlc3QKICV0eXBlIDxpbmZlcj4Jb3B0X2NvbmZfZXhw cgogJXR5cGUgPG9uY29uZmxpY3Q+IG9wdF9vbl9jb25mbGljdAorJXR5cGUgPG1lcmdld2hl bj4JbWVyZ2VfaW5zZXJ0IG1lcmdlX3VwZGF0ZSBtZXJnZV9kZWxldGUKIAogJXR5cGUgPHZz ZXRzdG10PiBnZW5lcmljX3NldCBzZXRfcmVzdCBzZXRfcmVzdF9tb3JlIGdlbmVyaWNfcmVz ZXQgcmVzZXRfcmVzdAogCQkJCSBTZXRSZXNldENsYXVzZSBGdW5jdGlvblNldFJlc2V0Q2xh dXNlCkBAIC02MzUsNiArNjM3LDkgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3 U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0 eXBlIDxkZWZlbHQ+CQloYXNoX3BhcnRib3VuZF9lbGVtCiAKIAorJXR5cGUgPG5vZGU+CW1l cmdlX3doZW5fY2xhdXNlIG9wdF9tZXJnZV93aGVuX2FuZF9jb25kaXRpb24KKyV0eXBlIDxs aXN0PgltZXJnZV93aGVuX2xpc3QKKwogLyoKICAqIE5vbi1rZXl3b3JkIHRva2VuIHR5cGVz LiAgVGhlc2UgYXJlIGhhcmQtd2lyZWQgaW50byB0aGUgImZsZXgiIGxleGVyLgogICogVGhl eSBtdXN0IGJlIGxpc3RlZCBmaXJzdCBzbyB0aGF0IHRoZWlyIG51bWVyaWMgY29kZXMgZG8g bm90IGRlcGVuZCBvbgpAQCAtNzA1LDcgKzcxMCw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVj dXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpx dWVyeSk7CiAJTEVBRElORyBMRUFLUFJPT0YgTEVBU1QgTEVGVCBMRVZFTCBMSUtFIExJTUlU IExJU1RFTiBMT0FEIExPQ0FMCiAJTE9DQUxUSU1FIExPQ0FMVElNRVNUQU1QIExPQ0FUSU9O IExPQ0tfUCBMT0NLRUQgTE9HR0VECiAKLQlNQVBQSU5HIE1BVENIIE1BVEVSSUFMSVpFRCBN QVhWQUxVRSBNRVRIT0QgTUlOVVRFX1AgTUlOVkFMVUUgTU9ERSBNT05USF9QIE1PVkUKKwlN QVBQSU5HIE1BVENIIE1BVENIRUQgTUFURVJJQUxJWkVEIE1BWFZBTFVFIE1FUkdFIE1FVEhP RAorCU1JTlVURV9QIE1JTlZBTFVFIE1PREUgTU9OVEhfUCBNT1ZFCiAKIAlOQU1FX1AgTkFN RVMgTkFUSU9OQUwgTkFUVVJBTCBOQ0hBUiBORVcgTkVYVCBORkMgTkZEIE5GS0MgTkZLRCBO TyBOT05FCiAJTk9STUFMSVpFIE5PUk1BTElaRUQKQEAgLTEwMjYsNiArMTAzMiw3IEBAIHN0 bXQ6CiAJCQl8IFJlZnJlc2hNYXRWaWV3U3RtdAogCQkJfCBMb2FkU3RtdAogCQkJfCBMb2Nr U3RtdAorCQkJfCBNZXJnZVN0bXQKIAkJCXwgTm90aWZ5U3RtdAogCQkJfCBQcmVwYXJlU3Rt dAogCQkJfCBSZWFzc2lnbk93bmVkU3RtdApAQCAtMTEwNDYsNiArMTEwNTMsNyBAQCBFeHBs YWluYWJsZVN0bXQ6CiAJCQl8IEluc2VydFN0bXQKIAkJCXwgVXBkYXRlU3RtdAogCQkJfCBE ZWxldGVTdG10CisJCQl8IE1lcmdlU3RtdAogCQkJfCBEZWNsYXJlQ3Vyc29yU3RtdAogCQkJ fCBDcmVhdGVBc1N0bXQKIAkJCXwgQ3JlYXRlTWF0Vmlld1N0bXQKQEAgLTExMDc5LDYgKzEx MDg3LDcgQEAgUHJlcGFyYWJsZVN0bXQ6CiAJCQl8IEluc2VydFN0bXQKIAkJCXwgVXBkYXRl U3RtdAogCQkJfCBEZWxldGVTdG10CQkJCQkvKiBieSBkZWZhdWx0IGFsbCBhcmUgJCQ9JDEg Ki8KKwkJCXwgTWVyZ2VTdG10CiAJCTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBA IC0xMTQ2Myw2ICsxMTQ3MiwxNTIgQEAgc2V0X3RhcmdldF9saXN0OgogCQk7CiAKIAorLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCisgKgorICoJCVFVRVJZOgorICoJCQkJTUVSR0UgU1RB VEVNRU5UUworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworTWVyZ2VTdG10Ogor CQkJb3B0X3dpdGhfY2xhdXNlIE1FUkdFIElOVE8gcmVsYXRpb25fZXhwcl9vcHRfYWxpYXMK KwkJCVVTSU5HIHRhYmxlX3JlZgorCQkJT04gYV9leHByCisJCQltZXJnZV93aGVuX2xpc3QK KwkJCQl7CisJCQkJCU1lcmdlU3RtdCAqbSA9IG1ha2VOb2RlKE1lcmdlU3RtdCk7CisKKwkJ CQkJbS0+d2l0aENsYXVzZSA9ICQxOworCQkJCQltLT5yZWxhdGlvbiA9ICQ0OworCQkJCQlt LT5zb3VyY2VfcmVsYXRpb24gPSAkNjsKKwkJCQkJbS0+am9pbl9jb25kaXRpb24gPSAkODsK KwkJCQkJbS0+bWVyZ2VXaGVuQ2xhdXNlcyA9ICQ5OworCisJCQkJCSQkID0gKE5vZGUgKilt OworCQkJCX0KKwkJCTsKKworCittZXJnZV93aGVuX2xpc3Q6CisJCQltZXJnZV93aGVuX2Ns YXVzZQkJCQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsgfQorCQkJfCBtZXJnZV93aGVuX2xp c3QgbWVyZ2Vfd2hlbl9jbGF1c2UJCXsgJCQgPSBsYXBwZW5kKCQxLCQyKTsgfQorCQkJOwor CittZXJnZV93aGVuX2NsYXVzZToKKwkJCVdIRU4gTUFUQ0hFRCBvcHRfbWVyZ2Vfd2hlbl9h bmRfY29uZGl0aW9uIFRIRU4gbWVyZ2VfdXBkYXRlCisJCQkJeworCQkJCQkkNS0+bWF0Y2hl ZCA9IHRydWU7CisJCQkJCSQ1LT5jb21tYW5kVHlwZSA9IENNRF9VUERBVEU7CisJCQkJCSQ1 LT5jb25kaXRpb24gPSAkMzsKKworCQkJCQkkJCA9IChOb2RlICopICQ1OworCQkJCX0KKwkJ CXwgV0hFTiBNQVRDSEVEIG9wdF9tZXJnZV93aGVuX2FuZF9jb25kaXRpb24gVEhFTiBtZXJn ZV9kZWxldGUKKwkJCQl7CisJCQkJCU1lcmdlV2hlbkNsYXVzZSAqbSA9IG1ha2VOb2RlKE1l cmdlV2hlbkNsYXVzZSk7CisKKwkJCQkJbS0+bWF0Y2hlZCA9IHRydWU7CisJCQkJCW0tPmNv bW1hbmRUeXBlID0gQ01EX0RFTEVURTsKKwkJCQkJbS0+Y29uZGl0aW9uID0gJDM7CisKKwkJ CQkJJCQgPSAoTm9kZSAqKW07CisJCQkJfQorCQkJfCBXSEVOIE1BVENIRUQgb3B0X21lcmdl X3doZW5fYW5kX2NvbmRpdGlvbiBUSEVOIERPIE5PVEhJTkcKKwkJCQl7CisJCQkJCU1lcmdl V2hlbkNsYXVzZSAqbSA9IG1ha2VOb2RlKE1lcmdlV2hlbkNsYXVzZSk7CisKKwkJCQkJbS0+ bWF0Y2hlZCA9IHRydWU7CisJCQkJCW0tPmNvbW1hbmRUeXBlID0gQ01EX05PVEhJTkc7CisJ CQkJCW0tPmNvbmRpdGlvbiA9ICQzOworCisJCQkJCSQkID0gKE5vZGUgKiltOworCQkJCX0K KwkJCXwgV0hFTiBOT1QgTUFUQ0hFRCBvcHRfbWVyZ2Vfd2hlbl9hbmRfY29uZGl0aW9uIFRI RU4gbWVyZ2VfaW5zZXJ0CisJCQkJeworCQkJCQkkNi0+bWF0Y2hlZCA9IGZhbHNlOworCQkJ CQkkNi0+Y29tbWFuZFR5cGUgPSBDTURfSU5TRVJUOworCQkJCQkkNi0+Y29uZGl0aW9uID0g JDQ7CisKKwkJCQkJJCQgPSAoTm9kZSAqKSAkNjsKKwkJCQl9CisJCQl8IFdIRU4gTk9UIE1B VENIRUQgb3B0X21lcmdlX3doZW5fYW5kX2NvbmRpdGlvbiBUSEVOIERPIE5PVEhJTkcKKwkJ CQl7CisJCQkJCU1lcmdlV2hlbkNsYXVzZSAqbSA9IG1ha2VOb2RlKE1lcmdlV2hlbkNsYXVz ZSk7CisKKwkJCQkJbS0+bWF0Y2hlZCA9IGZhbHNlOworCQkJCQltLT5jb21tYW5kVHlwZSA9 IENNRF9OT1RISU5HOworCQkJCQltLT5jb25kaXRpb24gPSAkNDsKKworCQkJCQkkJCA9IChO b2RlICopbTsKKwkJCQl9CisJCQk7CisKK29wdF9tZXJnZV93aGVuX2FuZF9jb25kaXRpb246 CisJCQlBTkQgYV9leHByIAkJCQl7ICQkID0gJDI7IH0KKwkJCXwgCQkJIAkJCXsgJCQgPSBO VUxMOyB9CisJCQk7CisKK21lcmdlX2RlbGV0ZToKKwkJCURFTEVURV9QIAkJCQl7ICQkID0g TlVMTDsgfQorCQkJOworCittZXJnZV91cGRhdGU6CisJCQlVUERBVEUgU0VUIHNldF9jbGF1 c2VfbGlzdAorCQkJCXsKKwkJCQkJTWVyZ2VXaGVuQ2xhdXNlICpuID0gbWFrZU5vZGUoTWVy Z2VXaGVuQ2xhdXNlKTsKKwkJCQkJbi0+dGFyZ2V0TGlzdCA9ICQzOworCisJCQkJCSQkID0g bjsKKwkJCQl9CisJCQk7CisKK21lcmdlX2luc2VydDoKKwkJCUlOU0VSVCBtZXJnZV92YWx1 ZXNfY2xhdXNlCisJCQkJeworCQkJCQlNZXJnZVdoZW5DbGF1c2UgKm4gPSBtYWtlTm9kZShN ZXJnZVdoZW5DbGF1c2UpOworCQkJCQluLT5jb2xzID0gTklMOworCQkJCQluLT52YWx1ZXMg PSAkMjsKKwkJCQkJJCQgPSBuOworCQkJCX0KKwkJCXwgSU5TRVJUIE9WRVJSSURJTkcgb3Zl cnJpZGVfa2luZCBWQUxVRV9QIG1lcmdlX3ZhbHVlc19jbGF1c2UKKwkJCQl7CisJCQkJCU1l cmdlV2hlbkNsYXVzZSAqbiA9IG1ha2VOb2RlKE1lcmdlV2hlbkNsYXVzZSk7CisJCQkJCW4t PmNvbHMgPSBOSUw7CisJCQkJCW4tPm92ZXJyaWRlID0gJDM7CisJCQkJCW4tPnZhbHVlcyA9 ICQ1OworCQkJCQkkJCA9IG47CisJCQkJfQorCQkJfCBJTlNFUlQgJygnIGluc2VydF9jb2x1 bW5fbGlzdCAnKScgbWVyZ2VfdmFsdWVzX2NsYXVzZQorCQkJCXsKKwkJCQkJTWVyZ2VXaGVu Q2xhdXNlICpuID0gbWFrZU5vZGUoTWVyZ2VXaGVuQ2xhdXNlKTsKKwkJCQkJbi0+Y29scyA9 ICQzOworCQkJCQluLT52YWx1ZXMgPSAkNTsKKwkJCQkJJCQgPSBuOworCQkJCX0KKwkJCXwg SU5TRVJUICcoJyBpbnNlcnRfY29sdW1uX2xpc3QgJyknIE9WRVJSSURJTkcgb3ZlcnJpZGVf a2luZCBWQUxVRV9QIG1lcmdlX3ZhbHVlc19jbGF1c2UKKwkJCQl7CisJCQkJCU1lcmdlV2hl bkNsYXVzZSAqbiA9IG1ha2VOb2RlKE1lcmdlV2hlbkNsYXVzZSk7CisJCQkJCW4tPmNvbHMg PSAkMzsKKwkJCQkJbi0+b3ZlcnJpZGUgPSAkNjsKKwkJCQkJbi0+dmFsdWVzID0gJDg7CisJ CQkJCSQkID0gbjsKKwkJCQl9CisJCQl8IElOU0VSVCBERUZBVUxUIFZBTFVFUworCQkJCXsK KwkJCQkJTWVyZ2VXaGVuQ2xhdXNlICpuID0gbWFrZU5vZGUoTWVyZ2VXaGVuQ2xhdXNlKTsK KwkJCQkJbi0+Y29scyA9IE5JTDsKKwkJCQkJbi0+dmFsdWVzID0gTklMOworCQkJCQkkJCA9 IG47CisJCQkJfQorCQkJOworCittZXJnZV92YWx1ZXNfY2xhdXNlOgorCQkJVkFMVUVTICco JyBleHByX2xpc3QgJyknCisJCQkJeworCQkJCQkkJCA9ICQzOworCQkJCX0KKwkJCTsKKwog LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICoJCVFVRVJZOgpAQCAtMTU4MTQsOCAr MTU5NjksMTAgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBMT0dHRUQKIAkJCXwgTUFQ UElORwogCQkJfCBNQVRDSAorCQkJfCBNQVRDSEVECiAJCQl8IE1BVEVSSUFMSVpFRAogCQkJ fCBNQVhWQUxVRQorCQkJfCBNRVJHRQogCQkJfCBNRVRIT0QKIAkJCXwgTUlOVVRFX1AKIAkJ CXwgTUlOVkFMVUUKQEAgLTE2MzgxLDggKzE2NTM4LDEwIEBAIGJhcmVfbGFiZWxfa2V5d29y ZDoKIAkJCXwgTE9HR0VECiAJCQl8IE1BUFBJTkcKIAkJCXwgTUFUQ0gKKwkJCXwgTUFUQ0hF RAogCQkJfCBNQVRFUklBTElaRUQKIAkJCXwgTUFYVkFMVUUKKwkJCXwgTUVSR0UKIAkJCXwg TUVUSE9ECiAJCQl8IE1JTlZBTFVFCiAJCQl8IE1PREUKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9hZ2cuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cu YwppbmRleCBkZWQwYTE0ZDcyLi4zZWY5ZThlZTVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfYWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Fn Zy5jCkBAIC00MzMsNiArNDMzLDEzIEBAIGNoZWNrX2FnZ2xldmVsc19hbmRfY29uc3RyYWlu dHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByKQogCQljYXNlIEVYUFJfS0lORF9V UERBVEVfU09VUkNFOgogCQljYXNlIEVYUFJfS0lORF9VUERBVEVfVEFSR0VUOgogCQkJZXJy a2luZCA9IHRydWU7CisJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfTUVSR0VfV0hFTjoK KwkJCWlmIChpc0FnZykKKwkJCQllcnIgPSBfKCJhZ2dyZWdhdGUgZnVuY3Rpb25zIGFyZSBu b3QgYWxsb3dlZCBpbiBNRVJHRSBXSEVOIGNvbmRpdGlvbnMiKTsKKwkJCWVsc2UKKwkJCQll cnIgPSBfKCJncm91cGluZyBvcGVyYXRpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBNRVJHRSBX SEVOIGNvbmRpdGlvbnMiKTsKKwogCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0dST1VQ X0JZOgogCQkJZXJya2luZCA9IHRydWU7CkBAIC04NzksNiArODg2LDkgQEAgdHJhbnNmb3Jt V2luZG93RnVuY0NhbGwoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dGdW5jICp3ZnVuYywK IAkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1RBUkdFVDoKIAkJCWVycmtpbmQgPSB0cnVlOwog CQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX01FUkdFX1dIRU46CisJCQllcnIgPSBfKCJ3 aW5kb3cgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBNRVJHRSBXSEVOIGNvbmRpdGlv bnMiKTsKKwkJCWJyZWFrOwogCQljYXNlIEVYUFJfS0lORF9HUk9VUF9CWToKIAkJCWVycmtp bmQgPSB0cnVlOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfY2xhdXNlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNlLmMKaW5k ZXggZDhiMTRiYTdjZC4uYTAzNDhlMjMyYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2NsYXVzZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1 c2UuYwpAQCAtNzIsOSArNzIsNiBAQCBzdGF0aWMgVGFibGVTYW1wbGVDbGF1c2UgKnRyYW5z Zm9ybVJhbmdlVGFibGVTYW1wbGUoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJCQkJ CVJhbmdlVGFibGVTYW1wbGUgKnJ0cyk7CiBzdGF0aWMgUGFyc2VOYW1lc3BhY2VJdGVtICpn ZXROU0l0ZW1Gb3JTcGVjaWFsUmVsYXRpb25UeXBlcyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CQkJCQkJCQkJCQkJCQlSYW5nZVZhciAqcnYpOwotc3RhdGljIE5vZGUgKnRyYW5zZm9ybUZy b21DbGF1c2VJdGVtKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbiwKLQkJCQkJCQkJCSBQ YXJzZU5hbWVzcGFjZUl0ZW0gKip0b3BfbnNpdGVtLAotCQkJCQkJCQkJIExpc3QgKipuYW1l c3BhY2UpOwogc3RhdGljIFZhciAqYnVpbGRWYXJGcm9tTlNDb2x1bW4oUGFyc2VOYW1lc3Bh Y2VDb2x1bW4gKm5zY29sKTsKIHN0YXRpYyBOb2RlICpidWlsZE1lcmdlZEpvaW5WYXIoUGFy c2VTdGF0ZSAqcHN0YXRlLCBKb2luVHlwZSBqb2ludHlwZSwKIAkJCQkJCQkJVmFyICpsX2Nv bHZhciwgVmFyICpyX2NvbHZhcik7CkBAIC0xMDQ1LDE0ICsxMDQyLDE0IEBAIGdldE5TSXRl bUZvclNwZWNpYWxSZWxhdGlvblR5cGVzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmFuZ2VWYXIg KnJ2KQogICogam9pbnRyZWUgaXRlbS4gIChUaGlzIGlzIG9ubHkgdXNlZCBkdXJpbmcgaW50 ZXJuYWwgcmVjdXJzaW9uLCBub3QgYnkKICAqIG91dHNpZGUgY2FsbGVycy4pCiAgKgotICog Km5hbWVzcGFjZTogcmVjZWl2ZXMgYSBMaXN0IG9mIFBhcnNlTmFtZXNwYWNlSXRlbXMgZm9y IHRoZSBSVEVzIGV4cG9zZWQKKyAqICpmbmFtZXNwYWNlOiByZWNlaXZlcyBhIExpc3Qgb2Yg UGFyc2VOYW1lc3BhY2VJdGVtcyBmb3IgdGhlIFJURXMgZXhwb3NlZAogICogYXMgdGFibGUv Y29sdW1uIG5hbWVzIGJ5IHRoaXMgaXRlbS4gIChUaGUgbGF0ZXJhbF9vbmx5IGZsYWdzIGlu IHRoZXNlIGl0ZW1zCiAgKiBhcmUgaW5kZXRlcm1pbmF0ZSBhbmQgc2hvdWxkIGJlIGV4cGxp Y2l0bHkgc2V0IGJ5IHRoZSBjYWxsZXIgYmVmb3JlIHVzZS4pCiAgKi8KLXN0YXRpYyBOb2Rl ICoKK05vZGUgKgogdHJhbnNmb3JtRnJvbUNsYXVzZUl0ZW0oUGFyc2VTdGF0ZSAqcHN0YXRl LCBOb2RlICpuLAogCQkJCQkJUGFyc2VOYW1lc3BhY2VJdGVtICoqdG9wX25zaXRlbSwKLQkJ CQkJCUxpc3QgKipuYW1lc3BhY2UpCisJCQkJCQlMaXN0ICoqZm5hbWVzcGFjZSkKIHsKIAlp ZiAoSXNBKG4sIFJhbmdlVmFyKSkKIAl7CkBAIC0xMDY5LDcgKzEwNjYsNyBAQCB0cmFuc2Zv cm1Gcm9tQ2xhdXNlSXRlbShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKm4sCiAJCQluc2l0 ZW0gPSB0cmFuc2Zvcm1UYWJsZUVudHJ5KHBzdGF0ZSwgcnYpOwogCiAJCSp0b3BfbnNpdGVt ID0gbnNpdGVtOwotCQkqbmFtZXNwYWNlID0gbGlzdF9tYWtlMShuc2l0ZW0pOworCQkqZm5h bWVzcGFjZSA9IGxpc3RfbWFrZTEobnNpdGVtKTsKIAkJcnRyID0gbWFrZU5vZGUoUmFuZ2VU YmxSZWYpOwogCQlydHItPnJ0aW5kZXggPSBuc2l0ZW0tPnBfcnRpbmRleDsKIAkJcmV0dXJu IChOb2RlICopIHJ0cjsKQEAgLTEwODIsNyArMTA3OSw3IEBAIHRyYW5zZm9ybUZyb21DbGF1 c2VJdGVtKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbiwKIAogCQluc2l0ZW0gPSB0cmFu c2Zvcm1SYW5nZVN1YnNlbGVjdChwc3RhdGUsIChSYW5nZVN1YnNlbGVjdCAqKSBuKTsKIAkJ KnRvcF9uc2l0ZW0gPSBuc2l0ZW07Ci0JCSpuYW1lc3BhY2UgPSBsaXN0X21ha2UxKG5zaXRl bSk7CisJCSpmbmFtZXNwYWNlID0gbGlzdF9tYWtlMShuc2l0ZW0pOwogCQlydHIgPSBtYWtl Tm9kZShSYW5nZVRibFJlZik7CiAJCXJ0ci0+cnRpbmRleCA9IG5zaXRlbS0+cF9ydGluZGV4 OwogCQlyZXR1cm4gKE5vZGUgKikgcnRyOwpAQCAtMTA5NSw3ICsxMDkyLDcgQEAgdHJhbnNm b3JtRnJvbUNsYXVzZUl0ZW0oUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpuLAogCiAJCW5z aXRlbSA9IHRyYW5zZm9ybVJhbmdlRnVuY3Rpb24ocHN0YXRlLCAoUmFuZ2VGdW5jdGlvbiAq KSBuKTsKIAkJKnRvcF9uc2l0ZW0gPSBuc2l0ZW07Ci0JCSpuYW1lc3BhY2UgPSBsaXN0X21h a2UxKG5zaXRlbSk7CisJCSpmbmFtZXNwYWNlID0gbGlzdF9tYWtlMShuc2l0ZW0pOwogCQly dHIgPSBtYWtlTm9kZShSYW5nZVRibFJlZik7CiAJCXJ0ci0+cnRpbmRleCA9IG5zaXRlbS0+ cF9ydGluZGV4OwogCQlyZXR1cm4gKE5vZGUgKikgcnRyOwpAQCAtMTEwOCw3ICsxMTA1LDcg QEAgdHJhbnNmb3JtRnJvbUNsYXVzZUl0ZW0oUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpu LAogCiAJCW5zaXRlbSA9IHRyYW5zZm9ybVJhbmdlVGFibGVGdW5jKHBzdGF0ZSwgKFJhbmdl VGFibGVGdW5jICopIG4pOwogCQkqdG9wX25zaXRlbSA9IG5zaXRlbTsKLQkJKm5hbWVzcGFj ZSA9IGxpc3RfbWFrZTEobnNpdGVtKTsKKwkJKmZuYW1lc3BhY2UgPSBsaXN0X21ha2UxKG5z aXRlbSk7CiAJCXJ0ciA9IG1ha2VOb2RlKFJhbmdlVGJsUmVmKTsKIAkJcnRyLT5ydGluZGV4 ID0gbnNpdGVtLT5wX3J0aW5kZXg7CiAJCXJldHVybiAoTm9kZSAqKSBydHI7CkBAIC0xMTIy LDcgKzExMTksNyBAQCB0cmFuc2Zvcm1Gcm9tQ2xhdXNlSXRlbShQYXJzZVN0YXRlICpwc3Rh dGUsIE5vZGUgKm4sCiAKIAkJLyogUmVjdXJzaXZlbHkgdHJhbnNmb3JtIHRoZSBjb250YWlu ZWQgcmVsYXRpb24gKi8KIAkJcmVsID0gdHJhbnNmb3JtRnJvbUNsYXVzZUl0ZW0ocHN0YXRl LCBydHMtPnJlbGF0aW9uLAotCQkJCQkJCQkJICB0b3BfbnNpdGVtLCBuYW1lc3BhY2UpOwor CQkJCQkJCQkJICB0b3BfbnNpdGVtLCBmbmFtZXNwYWNlKTsKIAkJcnRlID0gKCp0b3BfbnNp dGVtKS0+cF9ydGU7CiAJCS8qIFdlIG9ubHkgc3VwcG9ydCB0aGlzIG9uIHBsYWluIHJlbGF0 aW9ucyBhbmQgbWF0dmlld3MgKi8KIAkJaWYgKHJ0ZS0+cnRla2luZCAhPSBSVEVfUkVMQVRJ T04gfHwKQEAgLTE1NTAsNyArMTU0Nyw3IEBAIHRyYW5zZm9ybUZyb21DbGF1c2VJdGVtKFBh cnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbiwKIAkJbnNpdGVtLT5wX2xhdGVyYWxfb2sgPSB0 cnVlOwogCiAJCSp0b3BfbnNpdGVtID0gbnNpdGVtOwotCQkqbmFtZXNwYWNlID0gbGFwcGVu ZChteV9uYW1lc3BhY2UsIG5zaXRlbSk7CisJCSpmbmFtZXNwYWNlID0gbGFwcGVuZChteV9u YW1lc3BhY2UsIG5zaXRlbSk7CiAKIAkJcmV0dXJuIChOb2RlICopIGo7CiAJfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYyBiL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9jb2xsYXRlLmMKaW5kZXggNmM3OTNiNzJlYy4uNzU4MmZhYWJiMyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYworKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY29sbGF0ZS5jCkBAIC00ODUsNiArNDg1LDcgQEAg YXNzaWduX2NvbGxhdGlvbnNfd2Fsa2VyKE5vZGUgKm5vZGUsIGFzc2lnbl9jb2xsYXRpb25z X2NvbnRleHQgKmNvbnRleHQpCiAJCWNhc2UgVF9Gcm9tRXhwcjoKIAkJY2FzZSBUX09uQ29u ZmxpY3RFeHByOgogCQljYXNlIFRfU29ydEdyb3VwQ2xhdXNlOgorCQljYXNlIFRfTWVyZ2VB Y3Rpb246CiAJCQkodm9pZCkgZXhwcmVzc2lvbl90cmVlX3dhbGtlcihub2RlLAogCQkJCQkJ CQkJCSAgYXNzaWduX2NvbGxhdGlvbnNfd2Fsa2VyLAogCQkJCQkJCQkJCSAgKHZvaWQgKikg JmxvY2NvbnRleHQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4 cHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXggMWMwOWVhMjRj ZC4uMWU0MTlkNjM2OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4 cHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBAIC00ODIsNiAr NDgyLDcgQEAgdHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1u UmVmICpjcmVmKQogCQljYXNlIEVYUFJfS0lORF9JTlNFUlRfVEFSR0VUOgogCQljYXNlIEVY UFJfS0lORF9VUERBVEVfU09VUkNFOgogCQljYXNlIEVYUFJfS0lORF9VUERBVEVfVEFSR0VU OgorCQljYXNlIEVYUFJfS0lORF9NRVJHRV9XSEVOOgogCQljYXNlIEVYUFJfS0lORF9HUk9V UF9CWToKIAkJY2FzZSBFWFBSX0tJTkRfT1JERVJfQlk6CiAJCWNhc2UgRVhQUl9LSU5EX0RJ U1RJTkNUX09OOgpAQCAtMTcxNyw2ICsxNzE4LDcgQEAgdHJhbnNmb3JtU3ViTGluayhQYXJz ZVN0YXRlICpwc3RhdGUsIFN1YkxpbmsgKnN1YmxpbmspCiAJCWNhc2UgRVhQUl9LSU5EX0lO U0VSVF9UQVJHRVQ6CiAJCWNhc2UgRVhQUl9LSU5EX1VQREFURV9TT1VSQ0U6CiAJCWNhc2Ug RVhQUl9LSU5EX1VQREFURV9UQVJHRVQ6CisJCWNhc2UgRVhQUl9LSU5EX01FUkdFX1dIRU46 CiAJCWNhc2UgRVhQUl9LSU5EX0dST1VQX0JZOgogCQljYXNlIEVYUFJfS0lORF9PUkRFUl9C WToKIAkJY2FzZSBFWFBSX0tJTkRfRElTVElOQ1RfT046CkBAIC0zMDQ0LDYgKzMwNDYsOCBA QCBQYXJzZUV4cHJLaW5kTmFtZShQYXJzZUV4cHJLaW5kIGV4cHJLaW5kKQogCQljYXNlIEVY UFJfS0lORF9VUERBVEVfU09VUkNFOgogCQljYXNlIEVYUFJfS0lORF9VUERBVEVfVEFSR0VU OgogCQkJcmV0dXJuICJVUERBVEUiOworCQljYXNlIEVYUFJfS0lORF9NRVJHRV9XSEVOOgor CQkJcmV0dXJuICJNRVJHRSBXSEVOIjsKIAkJY2FzZSBFWFBSX0tJTkRfR1JPVVBfQlk6CiAJ CQlyZXR1cm4gIkdST1VQIEJZIjsKIAkJY2FzZSBFWFBSX0tJTkRfT1JERVJfQlk6CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2Z1bmMuYwppbmRleCBkOTE5NTFlMWY2Li5mNzFhNjgyY2Q2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKQEAgLTI2MTEsNiArMjYxMSw5IEBAIGNoZWNrX3Ny Zl9jYWxsX3BsYWNlbWVudChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmxhc3Rfc3JmLCBp bnQgbG9jYXRpb24pCiAJCQkvKiBva2F5LCBzaW5jZSB3ZSBwcm9jZXNzIHRoaXMgbGlrZSBh IFNFTEVDVCB0bGlzdCAqLwogCQkJcHN0YXRlLT5wX2hhc1RhcmdldFNSRnMgPSB0cnVlOwog CQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX01FUkdFX1dIRU46CisJCQllcnIgPSBfKCJz ZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gTUVSR0UgV0hFTiBj b25kaXRpb25zIik7CisJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRfQ0hFQ0tfQ09OU1RS QUlOVDoKIAkJY2FzZSBFWFBSX0tJTkRfRE9NQUlOX0NIRUNLOgogCQkJZXJyID0gXygic2V0 LXJldHVybmluZyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIGNoZWNrIGNvbnN0cmFp bnRzIik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfbWVyZ2UuYyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9tZXJnZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLjNkMTcxZTIwYTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfbWVyZ2UuYwpAQCAtMCwwICsxLDQxNSBAQAorLyotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKgorICogcGFyc2VfbWVyZ2UuYworICoJICBoYW5kbGUgbWVy Z2Utc3RhdGVtZW50IGluIHBhcnNlcgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykg MTk5Ni0yMDIyLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9y dGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9m IENhbGlmb3JuaWEKKyAqCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX21lcmdlLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq LworCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImFjY2Vzcy9zeXNhdHRy LmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNz LmgiCisjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCisjaW5jbHVkZSAicGFyc2VyL2Fu YWx5emUuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY29sbGF0ZS5oIgorI2luY2x1ZGUg InBhcnNlci9wYXJzZXRyZWUuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VyLmgiCisjaW5j bHVkZSAicGFyc2VyL3BhcnNlX2NsYXVzZS5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9j dGUuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfZXhwci5oIgorI2luY2x1ZGUgInBhcnNl ci9wYXJzZV9tZXJnZS5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9yZWxhdGlvbi5oIgor I2luY2x1ZGUgInBhcnNlci9wYXJzZV90YXJnZXQuaCIKKyNpbmNsdWRlICJ1dGlscy9yZWwu aCIKKyNpbmNsdWRlICJ1dGlscy9yZWxjYWNoZS5oIgorCitzdGF0aWMgdm9pZCBzZXROYW1l c3BhY2VGb3JNZXJnZVdoZW4oUGFyc2VTdGF0ZSAqcHN0YXRlLAorCQkJCQkJCQkJIE1lcmdl V2hlbkNsYXVzZSAqbWVyZ2VXaGVuQ2xhdXNlLAorCQkJCQkJCQkJIEluZGV4IHRhcmdldFJU SSwKKwkJCQkJCQkJCSBJbmRleCBzb3VyY2VSVEkpOworc3RhdGljIHZvaWQgc2V0TmFtZXNw YWNlVmlzaWJpbGl0eUZvclJURShMaXN0ICpuYW1lc3BhY2UsIFJhbmdlVGJsRW50cnkgKnJ0 ZSwKKwkJCQkJCQkJCQkgYm9vbCByZWxfdmlzaWJsZSwKKwkJCQkJCQkJCQkgYm9vbCBjb2xz X3Zpc2libGUpOworCisvKgorICogTWFrZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIHRvIHRoZSBu YW1lc3BhY2UgdmlzaWJpbGl0eSB3aGlsZSB0cmFuc2Zvcm1pbmcKKyAqIGluZGl2aWR1YWwg YWN0aW9uJ3MgcXVhbHMgYW5kIHRhcmdldGxpc3QgZXhwcmVzc2lvbnMuIEluIHBhcnRpY3Vs YXIsIGZvcgorICogSU5TRVJUIGFjdGlvbnMgd2UgbXVzdCBvbmx5IHNlZSB0aGUgc291cmNl IHJlbGF0aW9uIChzaW5jZSBJTlNFUlQgYWN0aW9uIGlzCisgKiBpbnZva2VkIGZvciBOT1Qg TUFUQ0hFRCB0dXBsZXMgYW5kIGhlbmNlIHRoZXJlIGlzIG5vIHRhcmdldCB0dXBsZSB0byBk ZWFsCisgKiB3aXRoKS4gT24gdGhlIG90aGVyIGhhbmQsIFVQREFURSBhbmQgREVMRVRFIGFj dGlvbnMgY2FuIHNlZSBib3RoIHNvdXJjZSBhbmQKKyAqIHRhcmdldCByZWxhdGlvbnMuCisg KgorICogQWxzbywgc2luY2UgdGhlIGludGVybmFsIGpvaW4gbm9kZSBjYW4gaGlkZSB0aGUg c291cmNlIGFuZCB0YXJnZXQKKyAqIHJlbGF0aW9ucywgd2UgbXVzdCBleHBsaWNpdGx5IG1h a2UgdGhlIHJlc3BlY3RpdmUgcmVsYXRpb24gYXMgdmlzaWJsZSBzbworICogdGhhdCBjb2x1 bW5zIGNhbiBiZSByZWZlcmVuY2VkIHVucXVhbGlmaWVkIGZyb20gdGhlc2UgcmVsYXRpb25z LgorICovCitzdGF0aWMgdm9pZAorc2V0TmFtZXNwYWNlRm9yTWVyZ2VXaGVuKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTWVyZ2VXaGVuQ2xhdXNlICptZXJnZVdoZW5DbGF1c2UsCisJCQkJCQkg SW5kZXggdGFyZ2V0UlRJLCBJbmRleCBzb3VyY2VSVEkpCit7CisJUmFuZ2VUYmxFbnRyeSAq dGFyZ2V0UmVsUlRFLAorCQkJICAgKnNvdXJjZVJlbFJURTsKKworCXRhcmdldFJlbFJURSA9 IHJ0X2ZldGNoKHRhcmdldFJUSSwgcHN0YXRlLT5wX3J0YWJsZSk7CisJc291cmNlUmVsUlRF ID0gcnRfZmV0Y2goc291cmNlUlRJLCBwc3RhdGUtPnBfcnRhYmxlKTsKKworCWlmIChtZXJn ZVdoZW5DbGF1c2UtPm1hdGNoZWQpCisJeworCQlBc3NlcnQobWVyZ2VXaGVuQ2xhdXNlLT5j b21tYW5kVHlwZSA9PSBDTURfVVBEQVRFIHx8CisJCQkgICBtZXJnZVdoZW5DbGF1c2UtPmNv bW1hbmRUeXBlID09IENNRF9ERUxFVEUgfHwKKwkJCSAgIG1lcmdlV2hlbkNsYXVzZS0+Y29t bWFuZFR5cGUgPT0gQ01EX05PVEhJTkcpOworCisJCS8qIE1BVENIRUQgYWN0aW9ucyBjYW4g c2VlIGJvdGggdGFyZ2V0IGFuZCBzb3VyY2UgcmVsYXRpb25zLiAqLworCQlzZXROYW1lc3Bh Y2VWaXNpYmlsaXR5Rm9yUlRFKHBzdGF0ZS0+cF9uYW1lc3BhY2UsCisJCQkJCQkJCQkgdGFy Z2V0UmVsUlRFLCB0cnVlLCB0cnVlKTsKKwkJc2V0TmFtZXNwYWNlVmlzaWJpbGl0eUZvclJU RShwc3RhdGUtPnBfbmFtZXNwYWNlLAorCQkJCQkJCQkJIHNvdXJjZVJlbFJURSwgdHJ1ZSwg dHJ1ZSk7CisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIE5PVCBNQVRDSEVEIGFjdGlvbnMg Y2FuJ3Qgc2VlIHRhcmdldCByZWxhdGlvbiwgYnV0IHRoZXkgY2FuIHNlZQorCQkgKiBzb3Vy Y2UgcmVsYXRpb24uCisJCSAqLworCQlBc3NlcnQobWVyZ2VXaGVuQ2xhdXNlLT5jb21tYW5k VHlwZSA9PSBDTURfSU5TRVJUIHx8CisJCQkgICBtZXJnZVdoZW5DbGF1c2UtPmNvbW1hbmRU eXBlID09IENNRF9OT1RISU5HKTsKKwkJc2V0TmFtZXNwYWNlVmlzaWJpbGl0eUZvclJURShw c3RhdGUtPnBfbmFtZXNwYWNlLAorCQkJCQkJCQkJIHRhcmdldFJlbFJURSwgZmFsc2UsIGZh bHNlKTsKKwkJc2V0TmFtZXNwYWNlVmlzaWJpbGl0eUZvclJURShwc3RhdGUtPnBfbmFtZXNw YWNlLAorCQkJCQkJCQkJIHNvdXJjZVJlbFJURSwgdHJ1ZSwgdHJ1ZSk7CisJfQorfQorCisv KgorICogdHJhbnNmb3JtTWVyZ2VTdG10IC0KKyAqCSAgdHJhbnNmb3JtcyBhIE1FUkdFIHN0 YXRlbWVudAorICovCitRdWVyeSAqCit0cmFuc2Zvcm1NZXJnZVN0bXQoUGFyc2VTdGF0ZSAq cHN0YXRlLCBNZXJnZVN0bXQgKnN0bXQpCit7CisJUXVlcnkJICAgKnFyeSA9IG1ha2VOb2Rl KFF1ZXJ5KTsKKwlMaXN0Q2VsbCAgICpsOworCUFjbE1vZGUJCXRhcmdldFBlcm1zID0gQUNM X05PX1JJR0hUUzsKKwlib29sCQlpc190ZXJtaW5hbFsyXTsKKwlJbmRleAkJc291cmNlUlRJ OworCUxpc3QJICAgKm1lcmdlQWN0aW9uTGlzdDsKKwlOb2RlCSAgICpqb2luRXhwcjsKKwlQ YXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbTsKKworCS8qIFRoZXJlIGNhbid0IGJlIGFueSBv dXRlciBXSVRIIHRvIHdvcnJ5IGFib3V0ICovCisJQXNzZXJ0KHBzdGF0ZS0+cF9jdGVuYW1l c3BhY2UgPT0gTklMKTsKKworCXFyeS0+Y29tbWFuZFR5cGUgPSBDTURfTUVSR0U7CisJcXJ5 LT5oYXNSZWN1cnNpdmUgPSBmYWxzZTsKKworCS8qIHByb2Nlc3MgdGhlIFdJVEggY2xhdXNl IGluZGVwZW5kZW50bHkgb2YgYWxsIGVsc2UgKi8KKwlpZiAoc3RtdC0+d2l0aENsYXVzZSkK Kwl7CisJCWlmIChzdG10LT53aXRoQ2xhdXNlLT5yZWN1cnNpdmUpCisJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCSBlcnJt c2coIldJVEggUkVDVVJTSVZFIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIE1FUkdFIHN0YXRlbWVu dCIpKSk7CisKKwkJcXJ5LT5jdGVMaXN0ID0gdHJhbnNmb3JtV2l0aENsYXVzZShwc3RhdGUs IHN0bXQtPndpdGhDbGF1c2UpOworCQlxcnktPmhhc01vZGlmeWluZ0NURSA9IHBzdGF0ZS0+ cF9oYXNNb2RpZnlpbmdDVEU7CisJfQorCisJLyoKKwkgKiBDaGVjayBXSEVOIGNsYXVzZXMg Zm9yIHBlcm1pc3Npb25zIGFuZCBzYW5pdHkKKwkgKi8KKwlpc190ZXJtaW5hbFswXSA9IGZh bHNlOworCWlzX3Rlcm1pbmFsWzFdID0gZmFsc2U7CisJZm9yZWFjaChsLCBzdG10LT5tZXJn ZVdoZW5DbGF1c2VzKQorCXsKKwkJTWVyZ2VXaGVuQ2xhdXNlICptZXJnZVdoZW5DbGF1c2Ug PSAoTWVyZ2VXaGVuQ2xhdXNlICopIGxmaXJzdChsKTsKKwkJaW50CQkJd2hlbl90eXBlID0g KG1lcmdlV2hlbkNsYXVzZS0+bWF0Y2hlZCA/IDAgOiAxKTsKKworCQkvKgorCQkgKiBDb2xs ZWN0IGFjdGlvbiB0eXBlcyBzbyB3ZSBjYW4gY2hlY2sgdGFyZ2V0IHBlcm1pc3Npb25zCisJ CSAqLworCQlzd2l0Y2ggKG1lcmdlV2hlbkNsYXVzZS0+Y29tbWFuZFR5cGUpCisJCXsKKwkJ CWNhc2UgQ01EX0lOU0VSVDoKKwkJCQl0YXJnZXRQZXJtcyB8PSBBQ0xfSU5TRVJUOworCQkJ CWJyZWFrOworCQkJY2FzZSBDTURfVVBEQVRFOgorCQkJCXRhcmdldFBlcm1zIHw9IEFDTF9V UERBVEU7CisJCQkJYnJlYWs7CisJCQljYXNlIENNRF9ERUxFVEU6CisJCQkJdGFyZ2V0UGVy bXMgfD0gQUNMX0RFTEVURTsKKwkJCQlicmVhazsKKwkJCWNhc2UgQ01EX05PVEhJTkc6CisJ CQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1bmtub3duIGFjdGlv biBpbiBNRVJHRSBXSEVOIGNsYXVzZSIpOworCQl9CisKKwkJLyoKKwkJICogQ2hlY2sgZm9y IHVucmVhY2hhYmxlIFdIRU4gY2xhdXNlcworCQkgKi8KKwkJaWYgKG1lcmdlV2hlbkNsYXVz ZS0+Y29uZGl0aW9uID09IE5VTEwpCisJCQlpc190ZXJtaW5hbFt3aGVuX3R5cGVdID0gdHJ1 ZTsKKwkJZWxzZSBpZiAoaXNfdGVybWluYWxbd2hlbl90eXBlXSkKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJIGVycm1z ZygidW5yZWFjaGFibGUgV0hFTiBjbGF1c2Ugc3BlY2lmaWVkIGFmdGVyIHVuY29uZGl0aW9u YWwgV0hFTiBjbGF1c2UiKSkpOworCX0KKworCS8qIFNldCB1cCB0aGUgTUVSR0UgdGFyZ2V0 IHRhYmxlLiAqLworCXFyeS0+cmVzdWx0UmVsYXRpb24gPSBzZXRUYXJnZXRUYWJsZShwc3Rh dGUsIHN0bXQtPnJlbGF0aW9uLAorCQkJCQkJCQkJCSBzdG10LT5yZWxhdGlvbi0+aW5oLAor CQkJCQkJCQkJCSBmYWxzZSwgdGFyZ2V0UGVybXMpOworCisJLyoKKwkgKiBNRVJHRSBpcyB1 bnN1cHBvcnRlZCBpbiB2YXJpb3VzIGNhc2VzCisJICovCisJaWYgKHBzdGF0ZS0+cF90YXJn ZXRfcmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OICYmCisJ CXBzdGF0ZS0+cF90YXJnZXRfcmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5E X1BBUlRJVElPTkVEX1RBQkxFKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgZXhl Y3V0ZSBNRVJHRSBvbiByZWxhdGlvbiBcIiVzXCIiLAorCQkJCQkJUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUocHN0YXRlLT5wX3RhcmdldF9yZWxhdGlvbikpLAorCQkJCSBlcnJkZXRhaWxf cmVsa2luZF9ub3Rfc3VwcG9ydGVkKHBzdGF0ZS0+cF90YXJnZXRfcmVsYXRpb24tPnJkX3Jl bC0+cmVsa2luZCkpKTsKKwlpZiAocHN0YXRlLT5wX3RhcmdldF9yZWxhdGlvbi0+cmRfcmVs LT5yZWxoYXNydWxlcykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiY2Fubm90IGV4ZWN1dGUg TUVSR0Ugb24gcmVsYXRpb24gXCIlc1wiIiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHBzdGF0ZS0+cF90YXJnZXRfcmVsYXRpb24pKSwKKwkJCQkgZXJyZGV0YWlsKCJNRVJH RSBpcyBub3Qgc3VwcG9ydGVkIGZvciByZWxhdGlvbnMgd2l0aCBydWxlcy4iKSkpOworCisJ LyogTm93IHRyYW5zZm9ybSB0aGUgc291cmNlIHJlbGF0aW9uIHRvIHByb2R1Y2UgdGhlIHNv dXJjZSBSVEUuICovCisJdHJhbnNmb3JtRnJvbUNsYXVzZShwc3RhdGUsCisJCQkJCQlsaXN0 X21ha2UxKHN0bXQtPnNvdXJjZV9yZWxhdGlvbikpOworCXNvdXJjZVJUSSA9IGxpc3RfbGVu Z3RoKHBzdGF0ZS0+cF9ydGFibGUpOworCW5zaXRlbSA9IEdldE5TSXRlbUJ5UmFuZ2VUYWJs ZVBvc24ocHN0YXRlLCBzb3VyY2VSVEksIDApOworCisJLyoKKwkgKiBDaGVjayB0aGF0IHRo ZSB0YXJnZXQgdGFibGUgZG9lc24ndCBjb25mbGljdCB3aXRoIHRoZSBzb3VyY2UgdGFibGUu CisJICogVGhpcyB3b3VsZCB0eXBpY2FsbHkgYmUgYSBjaGVja05hbWVTcGFjZUNvbmZsaWN0 cyBjYWxsLCBidXQgd2Ugd2FudAorCSAqIGEgbW9yZSBzcGVjaWZpYyBlcnJvciBtZXNzYWdl LgorCSAqLworCWlmIChzdHJjbXAocHN0YXRlLT5wX3RhcmdldF9uc2l0ZW0tPnBfbmFtZXMt PmFsaWFzbmFtZSwKKwkJCSAgIG5zaXRlbS0+cF9uYW1lcy0+YWxpYXNuYW1lKSA9PSAwKQor CQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfQUxJQVMp LAorCQkJCWVycm1zZygibmFtZSBcIiVzXCIgc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlIiwK KwkJCQkJICAgcHN0YXRlLT5wX3RhcmdldF9uc2l0ZW0tPnBfbmFtZXMtPmFsaWFzbmFtZSks CisJCQkJZXJyZGV0YWlsKCJUaGUgbmFtZSBpcyB1c2VkIGJvdGggYXMgTUVSR0UgdGFyZ2V0 IHRhYmxlIGFuZCBkYXRhIHNvdXJjZS4iKSk7CisKKwlxcnktPnRhcmdldExpc3QgPSBleHBh bmROU0l0ZW1BdHRycyhwc3RhdGUsIG5zaXRlbSwgMCwgZmFsc2UsCisJCQkJCQkJCQkJZXhw ckxvY2F0aW9uKHN0bXQtPnNvdXJjZV9yZWxhdGlvbikpOworCisJcXJ5LT5ydGFibGUgPSBw c3RhdGUtPnBfcnRhYmxlOworCisJLyoKKwkgKiBUcmFuc2Zvcm0gdGhlIGpvaW4gY29uZGl0 aW9uLiAgVGhpcyBpbmNsdWRlcyByZWZlcmVuY2VzIHRvIHRoZSB0YXJnZXQKKwkgKiBzaWRl LCBzbyBhZGQgdGhhdCB0byB0aGUgbmFtZXNwYWNlLgorCSAqLworCWFkZE5TSXRlbVRvUXVl cnkocHN0YXRlLCBwc3RhdGUtPnBfdGFyZ2V0X25zaXRlbSwgZmFsc2UsIHRydWUsIHRydWUp OworCWpvaW5FeHByID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIHN0bXQtPmpvaW5fY29uZGl0 aW9uLAorCQkJCQkJCSBFWFBSX0tJTkRfSk9JTl9PTik7CisKKwkvKgorCSAqIENyZWF0ZSB0 aGUgdGVtcG9yYXJ5IHF1ZXJ5J3Mgam9pbnRyZWUgdXNpbmcgdGhlIGpvaW5saXN0IHdlIGJ1 aWx0IHVzaW5nCisJICoganVzdCB0aGUgc291cmNlIHJlbGF0aW9uOyB0aGUgdGFyZ2V0IHJl bGF0aW9uIGlzIG5vdCBpbmNsdWRlZC4gIFRoZQorCSAqIHF1YWxzIHdlIHVzZSBhcmUgdGhl IGpvaW4gY29uZGl0aW9ucyB0byB0aGUgbWVyZ2UgdGFyZ2V0LiAgVGhlIGpvaW4KKwkgKiB3 aWxsIGJlIGNvbnN0cnVjdGVkIGZ1bGx5IGJ5IHRyYW5zZm9ybV9NRVJHRV90b19qb2luLgor CSAqLworCXFyeS0+am9pbnRyZWUgPSBtYWtlRnJvbUV4cHIocHN0YXRlLT5wX2pvaW5saXN0 LCBqb2luRXhwcik7CisKKwkvKgorCSAqIFdlIG5vdyBoYXZlIGEgZ29vZCBxdWVyeSBzaGFw ZSwgc28gbm93IGxvb2sgYXQgdGhlIFdIRU4gY29uZGl0aW9ucyBhbmQKKwkgKiBhY3Rpb24g dGFyZ2V0bGlzdHMuCisJICoKKwkgKiBPdmVyYWxsLCB0aGUgTUVSR0UgUXVlcnkncyB0YXJn ZXRsaXN0IGlzIE5JTC4KKwkgKgorCSAqIEVhY2ggaW5kaXZpZHVhbCBhY3Rpb24gaGFzIGl0 cyBvd24gdGFyZ2V0bGlzdCB0aGF0IG5lZWRzIHNlcGFyYXRlCisJICogdHJhbnNmb3JtYXRp b24uIFRoZXNlIHRyYW5zZm9ybXMgZG9uJ3QgZG8gYW55dGhpbmcgdG8gdGhlIG92ZXJhbGwK KwkgKiB0YXJnZXRsaXN0LCBzaW5jZSB0aGF0IGlzIG9ubHkgdXNlZCBmb3IgcmVzanVuayBj b2x1bW5zLgorCSAqCisJICogV2UgY2FuIHJlZmVyZW5jZSBhbnkgY29sdW1uIGluIFRhcmdl dCBvciBTb3VyY2UsIHdoaWNoIGlzIE9LIGJlY2F1c2UKKwkgKiBib3RoIG9mIHRob3NlIGFs cmVhZHkgaGF2ZSBSVEVzLiBUaGVyZSBpcyBub3RoaW5nIGxpa2UgdGhlIEVYQ0xVREVECisJ ICogcHNldWRvLXJlbGF0aW9uIGZvciBJTlNFUlQgT04gQ09ORkxJQ1QuCisJICovCisJbWVy Z2VBY3Rpb25MaXN0ID0gTklMOworCWZvcmVhY2gobCwgc3RtdC0+bWVyZ2VXaGVuQ2xhdXNl cykKKwl7CisJCU1lcmdlV2hlbkNsYXVzZSAqbWVyZ2VXaGVuQ2xhdXNlID0gbGZpcnN0X25v ZGUoTWVyZ2VXaGVuQ2xhdXNlLCBsKTsKKwkJTWVyZ2VBY3Rpb24gKmFjdGlvbjsKKworCQlh Y3Rpb24gPSBtYWtlTm9kZShNZXJnZUFjdGlvbik7CisJCWFjdGlvbi0+Y29tbWFuZFR5cGUg PSBtZXJnZVdoZW5DbGF1c2UtPmNvbW1hbmRUeXBlOworCQlhY3Rpb24tPm1hdGNoZWQgPSBt ZXJnZVdoZW5DbGF1c2UtPm1hdGNoZWQ7CisKKwkJLyogVXNlIGFuIG91dGVyIGpvaW4gaWYg YW55IElOU0VSVCBhY3Rpb25zIGV4aXN0IGluIHRoZSBjb21tYW5kLiAqLworCQlpZiAoYWN0 aW9uLT5jb21tYW5kVHlwZSA9PSBDTURfSU5TRVJUKQorCQkJcXJ5LT5tZXJnZVVzZU91dGVy Sm9pbiA9IHRydWU7CisKKwkJLyoKKwkJICogU2V0IG5hbWVzcGFjZSBmb3IgdGhlIHNwZWNp ZmljIGFjdGlvbi4gVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlCisJCSAqIGFuYWx5emluZyB0 aGUgV0hFTiBxdWFscyBhbmQgdGhlIGFjdGlvbiB0YXJnZXRsaXN0LgorCQkgKi8KKwkJc2V0 TmFtZXNwYWNlRm9yTWVyZ2VXaGVuKHBzdGF0ZSwgbWVyZ2VXaGVuQ2xhdXNlLAorCQkJCQkJ CQkgcXJ5LT5yZXN1bHRSZWxhdGlvbiwKKwkJCQkJCQkJIHNvdXJjZVJUSSk7CisKKwkJLyoK KwkJICogVHJhbnNmb3JtIHRoZSBXSEVOIGNvbmRpdGlvbi4KKwkJICoKKwkJICogTm90ZSB0 aGF0IHRoZXNlIHF1YWxzIGFyZSBOT1QgYWRkZWQgdG8gdGhlIGpvaW4gcXVhbHM7IGluc3Rl YWQgdGhleQorCQkgKiBhcmUgZXZhbHVhdGVkIHNlcGFyYXRlbHkgZHVyaW5nIGV4ZWN1dGlv biB0byBkZWNpZGUgd2hpY2ggb2YgdGhlCisJCSAqIFdIRU4gTUFUQ0hFRCBvciBXSEVOIE5P VCBNQVRDSEVEIGFjdGlvbnMgdG8gZXhlY3V0ZS4KKwkJICovCisJCWFjdGlvbi0+cXVhbCA9 IHRyYW5zZm9ybVdoZXJlQ2xhdXNlKHBzdGF0ZSwgbWVyZ2VXaGVuQ2xhdXNlLT5jb25kaXRp b24sCisJCQkJCQkJCQkJCUVYUFJfS0lORF9NRVJHRV9XSEVOLCAiV0hFTiIpOworCisJCS8q CisJCSAqIFRyYW5zZm9ybSB0YXJnZXQgbGlzdHMgZm9yIGVhY2ggSU5TRVJUIGFuZCBVUERB VEUgYWN0aW9uIHN0bXQKKwkJICovCisJCXN3aXRjaCAoYWN0aW9uLT5jb21tYW5kVHlwZSkK KwkJeworCQkJY2FzZSBDTURfSU5TRVJUOgorCQkJCXsKKwkJCQkJTGlzdAkgICAqZXhwckxp c3QgPSBOSUw7CisJCQkJCUxpc3RDZWxsICAgKmxjOworCQkJCQlSYW5nZVRibEVudHJ5ICpy dGU7CisJCQkJCUxpc3RDZWxsICAgKmljb2xzOworCQkJCQlMaXN0Q2VsbCAgICphdHRub3M7 CisJCQkJCUxpc3QJICAgKmljb2x1bW5zOworCQkJCQlMaXN0CSAgICphdHRybm9zOworCisJ CQkJCXBzdGF0ZS0+cF9pc19pbnNlcnQgPSB0cnVlOworCisJCQkJCWljb2x1bW5zID0gY2hl Y2tJbnNlcnRUYXJnZXRzKHBzdGF0ZSwKKwkJCQkJCQkJCQkJCSAgbWVyZ2VXaGVuQ2xhdXNl LT5jb2xzLAorCQkJCQkJCQkJCQkJICAmYXR0cm5vcyk7CisJCQkJCUFzc2VydChsaXN0X2xl bmd0aChpY29sdW1ucykgPT0gbGlzdF9sZW5ndGgoYXR0cm5vcykpOworCisJCQkJCWFjdGlv bi0+b3ZlcnJpZGUgPSBtZXJnZVdoZW5DbGF1c2UtPm92ZXJyaWRlOworCisJCQkJCS8qCisJ CQkJCSAqIEhhbmRsZSBJTlNFUlQgbXVjaCBsaWtlIGluIHRyYW5zZm9ybUluc2VydFN0bXQK KwkJCQkJICovCisJCQkJCWlmIChtZXJnZVdoZW5DbGF1c2UtPnZhbHVlcyA9PSBOSUwpCisJ CQkJCXsKKwkJCQkJCS8qCisJCQkJCQkgKiBXZSBoYXZlIElOU0VSVCAuLi4gREVGQVVMVCBW QUxVRVMuICBXZSBjYW4gaGFuZGxlCisJCQkJCQkgKiB0aGlzIGNhc2UgYnkgZW1pdHRpbmcg YW4gZW1wdHkgdGFyZ2V0bGlzdCAtLS0gYWxsCisJCQkJCQkgKiBjb2x1bW5zIHdpbGwgYmUg ZGVmYXVsdGVkIHdoZW4gdGhlIHBsYW5uZXIgZXhwYW5kcworCQkJCQkJICogdGhlIHRhcmdl dGxpc3QuCisJCQkJCQkgKi8KKwkJCQkJCWV4cHJMaXN0ID0gTklMOworCQkJCQl9CisJCQkJ CWVsc2UKKwkJCQkJeworCQkJCQkJLyoKKwkJCQkJCSAqIFByb2Nlc3MgSU5TRVJUIC4uLiBW QUxVRVMgd2l0aCBhIHNpbmdsZSBWQUxVRVMKKwkJCQkJCSAqIHN1Ymxpc3QuICBXZSB0cmVh dCB0aGlzIGNhc2Ugc2VwYXJhdGVseSBmb3IKKwkJCQkJCSAqIGVmZmljaWVuY3kuICBUaGUg c3VibGlzdCBpcyBqdXN0IGNvbXB1dGVkIGRpcmVjdGx5CisJCQkJCQkgKiBhcyB0aGUgUXVl cnkncyB0YXJnZXRsaXN0LCB3aXRoIG5vIFZBTFVFUyBSVEUuICBTbworCQkJCQkJICogaXQg d29ya3MganVzdCBsaWtlIGEgU0VMRUNUIHdpdGhvdXQgYW55IEZST00uCisJCQkJCQkgKi8K KworCQkJCQkJLyoKKwkJCQkJCSAqIERvIGJhc2ljIGV4cHJlc3Npb24gdHJhbnNmb3JtYXRp b24gKHNhbWUgYXMgYSBST1coKQorCQkJCQkJICogZXhwciwgYnV0IGFsbG93IFNldFRvRGVm YXVsdCBhdCB0b3AgbGV2ZWwpCisJCQkJCQkgKi8KKwkJCQkJCWV4cHJMaXN0ID0gdHJhbnNm b3JtRXhwcmVzc2lvbkxpc3QocHN0YXRlLAorCQkJCQkJCQkJCQkJCQkgICBtZXJnZVdoZW5D bGF1c2UtPnZhbHVlcywKKwkJCQkJCQkJCQkJCQkJICAgRVhQUl9LSU5EX1ZBTFVFU19TSU5H TEUsCisJCQkJCQkJCQkJCQkJCSAgIHRydWUpOworCisJCQkJCQkvKiBQcmVwYXJlIHJvdyBm b3IgYXNzaWdubWVudCB0byB0YXJnZXQgdGFibGUgKi8KKwkJCQkJCWV4cHJMaXN0ID0gdHJh bnNmb3JtSW5zZXJ0Um93KHBzdGF0ZSwgZXhwckxpc3QsCisJCQkJCQkJCQkJCQkJICBtZXJn ZVdoZW5DbGF1c2UtPmNvbHMsCisJCQkJCQkJCQkJCQkJICBpY29sdW1ucywgYXR0cm5vcywK KwkJCQkJCQkJCQkJCQkgIGZhbHNlKTsKKwkJCQkJfQorCisJCQkJCS8qCisJCQkJCSAqIEdl bmVyYXRlIGFjdGlvbidzIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBjb21wdXRlZCBsaXN0CisJ CQkJCSAqIG9mIGV4cHJlc3Npb25zLiBBbHNvLCBtYXJrIGFsbCB0aGUgdGFyZ2V0IGNvbHVt bnMgYXMKKwkJCQkJICogbmVlZGluZyBpbnNlcnQgcGVybWlzc2lvbnMuCisJCQkJCSAqLwor CQkJCQlydGUgPSBwc3RhdGUtPnBfdGFyZ2V0X25zaXRlbS0+cF9ydGU7CisJCQkJCWZvcnRo cmVlKGxjLCBleHByTGlzdCwgaWNvbHMsIGljb2x1bW5zLCBhdHRub3MsIGF0dHJub3MpCisJ CQkJCXsKKwkJCQkJCUV4cHIJICAgKmV4cHIgPSAoRXhwciAqKSBsZmlyc3QobGMpOworCQkJ CQkJUmVzVGFyZ2V0ICAqY29sID0gbGZpcnN0X25vZGUoUmVzVGFyZ2V0LCBpY29scyk7CisJ CQkJCQlBdHRyTnVtYmVyCWF0dHJfbnVtID0gKEF0dHJOdW1iZXIpIGxmaXJzdF9pbnQoYXR0 bm9zKTsKKwkJCQkJCVRhcmdldEVudHJ5ICp0bGU7CisKKwkJCQkJCXRsZSA9IG1ha2VUYXJn ZXRFbnRyeShleHByLAorCQkJCQkJCQkJCQkgIGF0dHJfbnVtLAorCQkJCQkJCQkJCQkgIGNv bC0+bmFtZSwKKwkJCQkJCQkJCQkJICBmYWxzZSk7CisJCQkJCQlhY3Rpb24tPnRhcmdldExp c3QgPSBsYXBwZW5kKGFjdGlvbi0+dGFyZ2V0TGlzdCwgdGxlKTsKKworCQkJCQkJcnRlLT5p bnNlcnRlZENvbHMgPQorCQkJCQkJCWJtc19hZGRfbWVtYmVyKHJ0ZS0+aW5zZXJ0ZWRDb2xz LAorCQkJCQkJCQkJCSAgIGF0dHJfbnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0 ZU51bWJlcik7CisJCQkJCX0KKwkJCQl9CisJCQkJYnJlYWs7CisJCQljYXNlIENNRF9VUERB VEU6CisJCQkJeworCQkJCQlwc3RhdGUtPnBfaXNfaW5zZXJ0ID0gZmFsc2U7CisJCQkJCWFj dGlvbi0+dGFyZ2V0TGlzdCA9CisJCQkJCQl0cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0KHBz dGF0ZSwKKwkJCQkJCQkJCQkJCSAgbWVyZ2VXaGVuQ2xhdXNlLT50YXJnZXRMaXN0KTsKKwkJ CQl9CisJCQkJYnJlYWs7CisJCQljYXNlIENNRF9ERUxFVEU6CisJCQkJYnJlYWs7CisKKwkJ CWNhc2UgQ01EX05PVEhJTkc6CisJCQkJYWN0aW9uLT50YXJnZXRMaXN0ID0gTklMOworCQkJ CWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAidW5rbm93biBhY3Rpb24g aW4gTUVSR0UgV0hFTiBjbGF1c2UiKTsKKwkJfQorCisJCW1lcmdlQWN0aW9uTGlzdCA9IGxh cHBlbmQobWVyZ2VBY3Rpb25MaXN0LCBhY3Rpb24pOworCX0KKworCXFyeS0+bWVyZ2VBY3Rp b25MaXN0ID0gbWVyZ2VBY3Rpb25MaXN0OworCisJLyogUkVUVVJOSU5HIGNvdWxkIHBvdGVu dGlhbGx5IGJlIGFkZGVkIGluIHRoZSBmdXR1cmUsIGJ1dCBub3QgaW4gU1FMIFN0ZCAqLwor CXFyeS0+cmV0dXJuaW5nTGlzdCA9IE5VTEw7CisKKwlxcnktPmhhc1RhcmdldFNSRnMgPSBm YWxzZTsKKwlxcnktPmhhc1N1YkxpbmtzID0gcHN0YXRlLT5wX2hhc1N1YkxpbmtzOworCisJ YXNzaWduX3F1ZXJ5X2NvbGxhdGlvbnMocHN0YXRlLCBxcnkpOworCisJcmV0dXJuIHFyeTsK K30KKworc3RhdGljIHZvaWQKK3NldE5hbWVzcGFjZVZpc2liaWxpdHlGb3JSVEUoTGlzdCAq bmFtZXNwYWNlLCBSYW5nZVRibEVudHJ5ICpydGUsCisJCQkJCQkJIGJvb2wgcmVsX3Zpc2li bGUsCisJCQkJCQkJIGJvb2wgY29sc192aXNpYmxlKQoreworCUxpc3RDZWxsICAgKmxjOwor CisJZm9yZWFjaChsYywgbmFtZXNwYWNlKQorCXsKKwkJUGFyc2VOYW1lc3BhY2VJdGVtICpu c2l0ZW0gPSAoUGFyc2VOYW1lc3BhY2VJdGVtICopIGxmaXJzdChsYyk7CisKKwkJaWYgKG5z aXRlbS0+cF9ydGUgPT0gcnRlKQorCQl7CisJCQluc2l0ZW0tPnBfcmVsX3Zpc2libGUgPSBy ZWxfdmlzaWJsZTsKKwkJCW5zaXRlbS0+cF9jb2xzX3Zpc2libGUgPSBjb2xzX3Zpc2libGU7 CisJCQlicmVhazsKKwkJfQorCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9u LmMKaW5kZXggY2I5ZTE3N2I1ZS4uN2VmYTVmMTVkNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX3JlbGF0aW9uLmMKQEAgLTcwMSw2ICs3MDEsMTcgQEAgc2Nhbk5TSXRlbUZvckNvbHVt bihQYXJzZVN0YXRlICpwc3RhdGUsIFBhcnNlTmFtZXNwYWNlSXRlbSAqbnNpdGVtLAogCQkJ CQkJY29sbmFtZSksCiAJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9u KSkpOwogCisJLyoKKwkgKiBJbiBhIE1FUkdFIFdIRU4gY29uZGl0aW9uLCBubyBzeXN0ZW0g Y29sdW1uIGlzIGFsbG93ZWQgZXhjZXB0IHRhYmxlT2lkCisJICovCisJaWYgKHBzdGF0ZS0+ cF9leHByX2tpbmQgPT0gRVhQUl9LSU5EX01FUkdFX1dIRU4gJiYKKwkJYXR0bnVtIDwgSW52 YWxpZEF0dHJOdW1iZXIgJiYgYXR0bnVtICE9IFRhYmxlT2lkQXR0cmlidXRlTnVtYmVyKQor CQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9DT0xVTU5f UkVGRVJFTkNFKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgdXNlIHN5c3RlbSBjb2x1bW4gXCIl c1wiIGluIE1FUkdFIFdIRU4gY29uZGl0aW9uIiwKKwkJCQkJCWNvbG5hbWUpLAorCQkJCSBw YXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKKwogCS8qIEZvdW5kIGEg dmFsaWQgbWF0Y2gsIHNvIGJ1aWxkIGEgVmFyICovCiAJaWYgKGF0dG51bSA+IEludmFsaWRB dHRyTnVtYmVyKQogCXsKQEAgLTMwOTUsMTEgKzMxMDYsMTIgQEAgZXhwYW5kTlNJdGVtVmFy cyhQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbSwKICAqCSAgZm9yIHRoZSBhdHRyaWJ1dGVz IG9mIHRoZSBuc2l0ZW0KICAqCiAgKiBwc3RhdGUtPnBfbmV4dF9yZXNubyBkZXRlcm1pbmVz IHRoZSByZXNub3MgYXNzaWduZWQgdG8gdGhlIFRMRXMuCi0gKiBUaGUgcmVmZXJlbmNlZCBj b2x1bW5zIGFyZSBtYXJrZWQgYXMgcmVxdWlyaW5nIFNFTEVDVCBhY2Nlc3MuCisgKiBUaGUg cmVmZXJlbmNlZCBjb2x1bW5zIGFyZSBtYXJrZWQgYXMgcmVxdWlyaW5nIFNFTEVDVCBhY2Nl c3MsIGlmCisgKiBjYWxsZXIgcmVxdWVzdHMgdGhhdC4KICAqLwogTGlzdCAqCiBleHBhbmRO U0l0ZW1BdHRycyhQYXJzZVN0YXRlICpwc3RhdGUsIFBhcnNlTmFtZXNwYWNlSXRlbSAqbnNp dGVtLAotCQkJCSAgaW50IHN1YmxldmVsc191cCwgaW50IGxvY2F0aW9uKQorCQkJCSAgaW50 IHN1YmxldmVsc191cCwgYm9vbCByZXF1aXJlX2NvbF9wcml2cywgaW50IGxvY2F0aW9uKQog ewogCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IG5zaXRlbS0+cF9ydGU7CiAJTGlzdAkgICAqbmFt ZXMsCkBAIC0zMTMzLDggKzMxNDUsMTEgQEAgZXhwYW5kTlNJdGVtQXR0cnMoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbSwKIAkJCQkJCQkgZmFsc2Up OwogCQl0ZV9saXN0ID0gbGFwcGVuZCh0ZV9saXN0LCB0ZSk7CiAKLQkJLyogUmVxdWlyZSBy ZWFkIGFjY2VzcyB0byBlYWNoIGNvbHVtbiAqLwotCQltYXJrVmFyRm9yU2VsZWN0UHJpdihw c3RhdGUsIHZhcm5vZGUpOworCQlpZiAocmVxdWlyZV9jb2xfcHJpdnMpCisJCXsKKwkJCS8q IFJlcXVpcmUgcmVhZCBhY2Nlc3MgdG8gZWFjaCBjb2x1bW4gKi8KKwkJCW1hcmtWYXJGb3JT ZWxlY3RQcml2KHBzdGF0ZSwgdmFybm9kZSk7CisJCX0KIAl9CiAKIAlBc3NlcnQobmFtZSA9 PSBOVUxMICYmIHZhciA9PSBOVUxMKTsJLyogbGlzdHMgbm90IHRoZSBzYW1lIGxlbmd0aD8g Ki8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYyBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwppbmRleCAwNTllZWI5ZTk0Li5jNjgy N2Y5Mjg1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMK KysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCkBAIC0xMzA4LDYgKzEz MDgsNyBAQCBFeHBhbmRBbGxUYWJsZXMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBpbnQgbG9jYXRp b24pCiAJCQkJCQkJIGV4cGFuZE5TSXRlbUF0dHJzKHBzdGF0ZSwKIAkJCQkJCQkJCQkJICAg bnNpdGVtLAogCQkJCQkJCQkJCQkgICAwLAorCQkJCQkJCQkJCQkgICB0cnVlLAogCQkJCQkJ CQkJCQkgICBsb2NhdGlvbikpOwogCX0KIApAQCAtMTM3MCw3ICsxMzcxLDcgQEAgRXhwYW5k U2luZ2xlVGFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQYXJzZU5hbWVzcGFjZUl0ZW0gKm5z aXRlbSwKIAlpZiAobWFrZV90YXJnZXRfZW50cnkpCiAJewogCQkvKiBleHBhbmROU0l0ZW1B dHRycyBoYW5kbGVzIHBlcm1pc3Npb25zIG1hcmtpbmcgKi8KLQkJcmV0dXJuIGV4cGFuZE5T SXRlbUF0dHJzKHBzdGF0ZSwgbnNpdGVtLCBzdWJsZXZlbHNfdXAsIGxvY2F0aW9uKTsKKwkJ cmV0dXJuIGV4cGFuZE5TSXRlbUF0dHJzKHBzdGF0ZSwgbnNpdGVtLCBzdWJsZXZlbHNfdXAs IHRydWUsIGxvY2F0aW9uKTsKIAl9CiAJZWxzZQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3 cml0ZUhhbmRsZXIuYwppbmRleCAzZDgyMTM4Y2IzLi5iNjEzOTkyZGZkIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tl bmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCkBAIC0xNjQzLDYgKzE2NDMsMTAgQEAgbWF0 Y2hMb2NrcyhDbWRUeXBlIGV2ZW50LAogCWlmIChydWxlbG9ja3MgPT0gTlVMTCkKIAkJcmV0 dXJuIE5JTDsKIAorCS8qIE5vIHJ1bGUgc3VwcG9ydCBmb3IgTUVSR0UgKi8KKwlpZiAocGFy c2V0cmVlLT5jb21tYW5kVHlwZSA9PSBDTURfTUVSR0UpCisJCXJldHVybiBOSUw7CisKIAlp ZiAocGFyc2V0cmVlLT5jb21tYW5kVHlwZSAhPSBDTURfU0VMRUNUKQogCXsKIAkJaWYgKHBh cnNldHJlZS0+cmVzdWx0UmVsYXRpb24gIT0gdmFybm8pCkBAIC0zNjY1LDggKzM2NjksOCBA QCBSZXdyaXRlUXVlcnkoUXVlcnkgKnBhcnNldHJlZSwgTGlzdCAqcmV3cml0ZV9ldmVudHMp CiAJfQogCiAJLyoKLQkgKiBJZiB0aGUgc3RhdGVtZW50IGlzIGFuIGluc2VydCwgdXBkYXRl LCBvciBkZWxldGUsIGFkanVzdCBpdHMgdGFyZ2V0bGlzdAotCSAqIGFzIG5lZWRlZCwgYW5k IHRoZW4gZmlyZSBJTlNFUlQvVVBEQVRFL0RFTEVURSBydWxlcyBvbiBpdC4KKwkgKiBJZiB0 aGUgc3RhdGVtZW50IGlzIGFuIGluc2VydCwgdXBkYXRlLCBkZWxldGUsIG9yIG1lcmdlLCBh ZGp1c3QgaXRzCisJICogdGFyZ2V0bGlzdCBhcyBuZWVkZWQsIGFuZCB0aGVuIGZpcmUgSU5T RVJUL1VQREFURS9ERUxFVEUgcnVsZXMgb24gaXQuCiAJICoKIAkgKiBTRUxFQ1QgcnVsZXMg YXJlIGhhbmRsZWQgbGF0ZXIgd2hlbiB3ZSBoYXZlIGFsbCB0aGUgcXVlcmllcyB0aGF0IHNo b3VsZAogCSAqIGdldCBleGVjdXRlZC4gIEFsc28sIHV0aWxpdGllcyBhcmVuJ3QgcmV3cml0 dGVuIGF0IGFsbCAoZG8gd2Ugc3RpbGwKQEAgLTM3NjQsNiArMzc2OCw3IEBAIFJld3JpdGVR dWVyeShRdWVyeSAqcGFyc2V0cmVlLCBMaXN0ICpyZXdyaXRlX2V2ZW50cykKIAkJfQogCQll bHNlIGlmIChldmVudCA9PSBDTURfVVBEQVRFKQogCQl7CisJCQlBc3NlcnQocGFyc2V0cmVl LT5vdmVycmlkZSA9PSBPVkVSUklESU5HX05PVF9TRVQpOwogCQkJcGFyc2V0cmVlLT50YXJn ZXRMaXN0ID0KIAkJCQlyZXdyaXRlVGFyZ2V0TGlzdElVKHBhcnNldHJlZS0+dGFyZ2V0TGlz dCwKIAkJCQkJCQkJCXBhcnNldHJlZS0+Y29tbWFuZFR5cGUsCkBAIC0zNzc0LDYgKzM3Nzks MzggQEAgUmV3cml0ZVF1ZXJ5KFF1ZXJ5ICpwYXJzZXRyZWUsIExpc3QgKnJld3JpdGVfZXZl bnRzKQogCQkJLyogQWxzbyBwb3B1bGF0ZSBleHRyYVVwZGF0ZWRDb2xzIChmb3IgZ2VuZXJh dGVkIGNvbHVtbnMpICovCiAJCQlmaWxsX2V4dHJhVXBkYXRlZENvbHMocnRfZW50cnksIHJ0 X2VudHJ5X3JlbGF0aW9uKTsKIAkJfQorCQllbHNlIGlmIChldmVudCA9PSBDTURfTUVSR0Up CisJCXsKKwkJCUFzc2VydChwYXJzZXRyZWUtPm92ZXJyaWRlID09IE9WRVJSSURJTkdfTk9U X1NFVCk7CisKKwkJCS8qCisJCQkgKiBSZXdyaXRlIGVhY2ggYWN0aW9uIHRhcmdldGxpc3Qg c2VwYXJhdGVseQorCQkJICovCisJCQlmb3JlYWNoKGxjMSwgcGFyc2V0cmVlLT5tZXJnZUFj dGlvbkxpc3QpCisJCQl7CisJCQkJTWVyZ2VBY3Rpb24gKmFjdGlvbiA9IChNZXJnZUFjdGlv biAqKSBsZmlyc3QobGMxKTsKKworCQkJCXN3aXRjaCAoYWN0aW9uLT5jb21tYW5kVHlwZSkK KwkJCQl7CisJCQkJCWNhc2UgQ01EX05PVEhJTkc6CisJCQkJCWNhc2UgQ01EX0RFTEVURToJ LyogTm90aGluZyB0byBkbyBoZXJlICovCisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBDTURf VVBEQVRFOgorCQkJCQljYXNlIENNRF9JTlNFUlQ6CisJCQkJCQkvKiBYWFggaXMgaXQgcG9z c2libGUgdG8gaGF2ZSBhIFZBTFVFUyBjbGF1c2U/ICovCisJCQkJCQlhY3Rpb24tPnRhcmdl dExpc3QgPQorCQkJCQkJCXJld3JpdGVUYXJnZXRMaXN0SVUoYWN0aW9uLT50YXJnZXRMaXN0 LAorCQkJCQkJCQkJCQkJYWN0aW9uLT5jb21tYW5kVHlwZSwKKwkJCQkJCQkJCQkJCWFjdGlv bi0+b3ZlcnJpZGUsCisJCQkJCQkJCQkJCQlydF9lbnRyeV9yZWxhdGlvbiwKKwkJCQkJCQkJ CQkJCU5VTEwsIDAsIE5VTEwpOworCQkJCQkJYnJlYWs7CisJCQkJCWRlZmF1bHQ6CisJCQkJ CQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGNvbW1hbmRUeXBlOiAlZCIsIGFjdGlvbi0+ Y29tbWFuZFR5cGUpOworCQkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCQl9CiAJCWVsc2Ug aWYgKGV2ZW50ID09IENNRF9ERUxFVEUpCiAJCXsKIAkJCS8qIE5vdGhpbmcgdG8gZG8gaGVy ZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yb3dzZWN1cml0eS5jIGIv c3JjL2JhY2tlbmQvcmV3cml0ZS9yb3dzZWN1cml0eS5jCmluZGV4IGYwYTA0NmQ2NWEuLmEw Y2NiYTQyNDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcm93c2VjdXJpdHku YworKysgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jvd3NlY3VyaXR5LmMKQEAgLTIzMiwxNSAr MjMyLDE3IEBAIGdldF9yb3dfc2VjdXJpdHlfcG9saWNpZXMoUXVlcnkgKnJvb3QsIFJhbmdl VGJsRW50cnkgKnJ0ZSwgaW50IHJ0X2luZGV4LAogCQkJCQkJICAgaGFzU3ViTGlua3MpOwog CiAJLyoKLQkgKiBTaW1pbGFyIHRvIGFib3ZlLCBkdXJpbmcgYW4gVVBEQVRFIG9yIERFTEVU RSwgaWYgU0VMRUNUIHJpZ2h0cyBhcmUgYWxzbwotCSAqIHJlcXVpcmVkIChlZzogd2hlbiBh IFJFVFVSTklORyBjbGF1c2UgZXhpc3RzLCBvciB0aGUgdXNlciBoYXMgcHJvdmlkZWQKLQkg KiBhIFdIRVJFIGNsYXVzZSB3aGljaCBpbnZvbHZlcyBjb2x1bW5zIGZyb20gdGhlIHJlbGF0 aW9uKSwgd2UgY29sbGVjdCB1cAotCSAqIENNRF9TRUxFQ1QgcG9saWNpZXMgYW5kIGFkZCB0 aGVtIHZpYSBhZGRfc2VjdXJpdHlfcXVhbHMgZmlyc3QuCisJICogU2ltaWxhciB0byBhYm92 ZSwgZHVyaW5nIGFuIFVQREFURSwgREVMRVRFLCBvciBNRVJHRSwgaWYgU0VMRUNUIHJpZ2h0 cworCSAqIGFyZSBhbHNvIHJlcXVpcmVkIChlZzogd2hlbiBhIFJFVFVSTklORyBjbGF1c2Ug ZXhpc3RzLCBvciB0aGUgdXNlciBoYXMKKwkgKiBwcm92aWRlZCBhIFdIRVJFIGNsYXVzZSB3 aGljaCBpbnZvbHZlcyBjb2x1bW5zIGZyb20gdGhlIHJlbGF0aW9uKSwgd2UKKwkgKiBjb2xs ZWN0IHVwIENNRF9TRUxFQ1QgcG9saWNpZXMgYW5kIGFkZCB0aGVtIHZpYSBhZGRfc2VjdXJp dHlfcXVhbHMKKwkgKiBmaXJzdC4KIAkgKgogCSAqIFRoaXMgd2F5LCB3ZSBmaWx0ZXIgb3V0 IGFueSByZWNvcmRzIHdoaWNoIGFyZSBub3QgdmlzaWJsZSB0aHJvdWdoIGFuCiAJICogQUxM IG9yIFNFTEVDVCBVU0lORyBwb2xpY3kuCiAJICovCi0JaWYgKChjb21tYW5kVHlwZSA9PSBD TURfVVBEQVRFIHx8IGNvbW1hbmRUeXBlID09IENNRF9ERUxFVEUpICYmCisJaWYgKChjb21t YW5kVHlwZSA9PSBDTURfVVBEQVRFIHx8IGNvbW1hbmRUeXBlID09IENNRF9ERUxFVEUgfHwK KwkJIGNvbW1hbmRUeXBlID09IENNRF9NRVJHRSkgJiYKIAkJcnRlLT5yZXF1aXJlZFBlcm1z ICYgQUNMX1NFTEVDVCkKIAl7CiAJCUxpc3QJICAgKnNlbGVjdF9wZXJtaXNzaXZlX3BvbGlj aWVzOwpAQCAtMzgwLDYgKzM4Miw5MiBAQCBnZXRfcm93X3NlY3VyaXR5X3BvbGljaWVzKFF1 ZXJ5ICpyb290LCBSYW5nZVRibEVudHJ5ICpydGUsIGludCBydF9pbmRleCwKIAkJfQogCX0K IAorCS8qCisJICogRk9SIE1FUkdFLCB3ZSBmZXRjaCBwb2xpY2llcyBmb3IgVVBEQVRFLCBE RUxFVEUgYW5kIElOU0VSVCAoYW5kIEFMTCkKKwkgKiBhbmQgc2V0IHRoZW0gdXAgc28gdGhh dCB3ZSBjYW4gZW5mb3JjZSB0aGUgYXBwcm9wcmlhdGUgcG9saWN5IGRlcGVuZGluZworCSAq IG9uIHRoZSBmaW5hbCBhY3Rpb24gd2UgdGFrZS4KKwkgKgorCSAqIFdlIGFscmVhZHkgZmV0 Y2hlZCB0aGUgU0VMRUNUIHBvbGljaWVzIGFib3ZlLgorCSAqCisJICogV2UgZG9uJ3QgcHVz aCB0aGUgVVBEQVRFL0RFTEVURSBVU0lORyBxdWFscyB0byB0aGUgUlRFIGJlY2F1c2Ugd2Ug ZG9uJ3QKKwkgKiByZWFsbHkgd2FudCB0byBhcHBseSB0aGVtIHdoaWxlIHNjYW5uaW5nIHRo ZSByZWxhdGlvbiBzaW5jZSB3ZSBkb24ndAorCSAqIGtub3cgd2hldGhlciB3ZSB3aWxsIGJl IGRvaW5nIGFuIFVQREFURSBvciBhIERFTEVURSBhdCB0aGUgZW5kLiBXZSBhcHBseQorCSAq IHRoZSByZXNwZWN0aXZlIHBvbGljeSBvbmNlIHdlIGRlY2lkZSB0aGUgZmluYWwgYWN0aW9u IG9uIHRoZSB0YXJnZXQKKwkgKiB0dXBsZS4KKwkgKgorCSAqIFhYWCBXZSBhcmUgc2V0dGlu ZyB1cCBVU0lORyBxdWFscyBhcyBXSVRIIENIRUNLLiBJZiBSTFMgcHJvaGliaXRzCisJICog VVBEQVRFL0RFTEVURSBvbiB0aGUgdGFyZ2V0IHJvdywgd2Ugc2hhbGwgdGhyb3cgYW4gZXJy b3IgaW5zdGVhZCBvZgorCSAqIHNpbGVudGx5IGlnbm9yaW5nIHRoZSByb3cuIFRoaXMgaXMg ZGlmZmVyZW50IHRoYW4gaG93IG5vcm1hbAorCSAqIFVQREFURS9ERUxFVEUgd29ya3MgYW5k IG1vcmUgaW4gbGluZSB3aXRoIElOU0VSVCBPTiBDT05GTElDVCBETyBVUERBVEUKKwkgKiBo YW5kbGluZy4KKwkgKi8KKwlpZiAoY29tbWFuZFR5cGUgPT0gQ01EX01FUkdFKQorCXsKKwkJ TGlzdAkgICAqbWVyZ2VfcGVybWlzc2l2ZV9wb2xpY2llczsKKwkJTGlzdAkgICAqbWVyZ2Vf cmVzdHJpY3RpdmVfcG9saWNpZXM7CisKKwkJLyoKKwkJICogRmV0Y2ggdGhlIFVQREFURSBw b2xpY2llcyBhbmQgc2V0IHRoZW0gdXAgdG8gZXhlY3V0ZSBvbiB0aGUKKwkJICogZXhpc3Rp bmcgdGFyZ2V0IHJvdyBiZWZvcmUgZG9pbmcgVVBEQVRFLgorCQkgKi8KKwkJZ2V0X3BvbGlj aWVzX2Zvcl9yZWxhdGlvbihyZWwsIENNRF9VUERBVEUsIHVzZXJfaWQsCisJCQkJCQkJCSAg Jm1lcmdlX3Blcm1pc3NpdmVfcG9saWNpZXMsCisJCQkJCQkJCSAgJm1lcmdlX3Jlc3RyaWN0 aXZlX3BvbGljaWVzKTsKKworCQkvKgorCQkgKiBXQ09fUkxTX01FUkdFX1VQREFURV9DSEVD SyBpcyB1c2VkIHRvIGNoZWNrIFVQREFURSBVU0lORyBxdWFscyBvbgorCQkgKiB0aGUgZXhp c3RpbmcgdGFyZ2V0IHJvdy4KKwkJICovCisJCWFkZF93aXRoX2NoZWNrX29wdGlvbnMocmVs LCBydF9pbmRleCwKKwkJCQkJCQkgICBXQ09fUkxTX01FUkdFX1VQREFURV9DSEVDSywKKwkJ CQkJCQkgICBtZXJnZV9wZXJtaXNzaXZlX3BvbGljaWVzLAorCQkJCQkJCSAgIG1lcmdlX3Jl c3RyaWN0aXZlX3BvbGljaWVzLAorCQkJCQkJCSAgIHdpdGhDaGVja09wdGlvbnMsCisJCQkJ CQkJICAgaGFzU3ViTGlua3MsCisJCQkJCQkJICAgdHJ1ZSk7CisKKwkJLyoKKwkJICogU2Ft ZSB3aXRoIERFTEVURSBwb2xpY2llcy4KKwkJICovCisJCWdldF9wb2xpY2llc19mb3JfcmVs YXRpb24ocmVsLCBDTURfREVMRVRFLCB1c2VyX2lkLAorCQkJCQkJCQkgICZtZXJnZV9wZXJt aXNzaXZlX3BvbGljaWVzLAorCQkJCQkJCQkgICZtZXJnZV9yZXN0cmljdGl2ZV9wb2xpY2ll cyk7CisKKwkJYWRkX3dpdGhfY2hlY2tfb3B0aW9ucyhyZWwsIHJ0X2luZGV4LAorCQkJCQkJ CSAgIFdDT19STFNfTUVSR0VfREVMRVRFX0NIRUNLLAorCQkJCQkJCSAgIG1lcmdlX3Blcm1p c3NpdmVfcG9saWNpZXMsCisJCQkJCQkJICAgbWVyZ2VfcmVzdHJpY3RpdmVfcG9saWNpZXMs CisJCQkJCQkJICAgd2l0aENoZWNrT3B0aW9ucywKKwkJCQkJCQkgICBoYXNTdWJMaW5rcywK KwkJCQkJCQkgICB0cnVlKTsKKworCQkvKgorCQkgKiBObyBzcGVjaWFsIGhhbmRsaW5nIGlz IHJlcXVpcmVkIGZvciBJTlNFUlQgcG9saWNpZXMuIFRoZXkgd2lsbCBiZQorCQkgKiBjaGVj a2VkIGFuZCBlbmZvcmNlZCBkdXJpbmcgRXhlY0luc2VydCgpLiBCdXQgd2UgbXVzdCBhZGQg dGhlbSB0bworCQkgKiB3aXRoQ2hlY2tPcHRpb25zLgorCQkgKi8KKwkJZ2V0X3BvbGljaWVz X2Zvcl9yZWxhdGlvbihyZWwsIENNRF9JTlNFUlQsIHVzZXJfaWQsCisJCQkJCQkJCSAgJm1l cmdlX3Blcm1pc3NpdmVfcG9saWNpZXMsCisJCQkJCQkJCSAgJm1lcmdlX3Jlc3RyaWN0aXZl X3BvbGljaWVzKTsKKworCQlhZGRfd2l0aF9jaGVja19vcHRpb25zKHJlbCwgcnRfaW5kZXgs CisJCQkJCQkJICAgV0NPX1JMU19JTlNFUlRfQ0hFQ0ssCisJCQkJCQkJICAgbWVyZ2VfcGVy bWlzc2l2ZV9wb2xpY2llcywKKwkJCQkJCQkgICBtZXJnZV9yZXN0cmljdGl2ZV9wb2xpY2ll cywKKwkJCQkJCQkgICB3aXRoQ2hlY2tPcHRpb25zLAorCQkJCQkJCSAgIGhhc1N1Ykxpbmtz LAorCQkJCQkJCSAgIGZhbHNlKTsKKworCQkvKiBFbmZvcmNlIHRoZSBXSVRIIENIRUNLIGNs YXVzZXMgb2YgdGhlIFVQREFURSBwb2xpY2llcyAqLworCQlhZGRfd2l0aF9jaGVja19vcHRp b25zKHJlbCwgcnRfaW5kZXgsCisJCQkJCQkJICAgV0NPX1JMU19VUERBVEVfQ0hFQ0ssCisJ CQkJCQkJICAgbWVyZ2VfcGVybWlzc2l2ZV9wb2xpY2llcywKKwkJCQkJCQkgICBtZXJnZV9y ZXN0cmljdGl2ZV9wb2xpY2llcywKKwkJCQkJCQkgICB3aXRoQ2hlY2tPcHRpb25zLAorCQkJ CQkJCSAgIGhhc1N1YkxpbmtzLAorCQkJCQkJCSAgIGZhbHNlKTsKKwl9CisKIAl0YWJsZV9j bG9zZShyZWwsIE5vTG9jayk7CiAKIAkvKgpAQCAtNDQ0LDYgKzUzMiwxNCBAQCBnZXRfcG9s aWNpZXNfZm9yX3JlbGF0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLCBDbWRUeXBlIGNtZCwgT2lk IHVzZXJfaWQsCiAJCQkJCWlmIChwb2xpY3ktPnBvbGNtZCA9PSBBQ0xfREVMRVRFX0NIUikK IAkJCQkJCWNtZF9tYXRjaGVzID0gdHJ1ZTsKIAkJCQkJYnJlYWs7CisJCQkJY2FzZSBDTURf TUVSR0U6CisKKwkJCQkJLyoKKwkJCQkJICogV2UgZG8gbm90IHN1cHBvcnQgYSBzZXBhcmF0 ZSBwb2xpY3kgZm9yIE1FUkdFIGNvbW1hbmQuCisJCQkJCSAqIEluc3RlYWQgaXQgZGVyaXZl cyBmcm9tIHRoZSBwb2xpY2llcyBkZWZpbmVkIGZvciBvdGhlcgorCQkJCQkgKiBjb21tYW5k cy4KKwkJCQkJICovCisJCQkJCWJyZWFrOwogCQkJCWRlZmF1bHQ6CiAJCQkJCWVsb2coRVJS T1IsICJ1bnJlY29nbml6ZWQgcG9saWN5IGNvbW1hbmQgdHlwZSAlZCIsCiAJCQkJCQkgKGlu dCkgY21kKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgYi9zcmMv YmFja2VuZC90Y29wL3BxdWVyeS5jCmluZGV4IDVmOTA3ODMxYTMuLjVhYTVhMzUwZjMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQv dGNvcC9wcXVlcnkuYwpAQCAtMTc4LDYgKzE3OCw5IEBAIFByb2Nlc3NRdWVyeShQbGFubmVk U3RtdCAqcGxhbiwKIAkJCWNhc2UgQ01EX0RFTEVURToKIAkJCQlTZXRRdWVyeUNvbXBsZXRp b24ocWMsIENNRFRBR19ERUxFVEUsIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQp OwogCQkJCWJyZWFrOworCQkJY2FzZSBDTURfTUVSR0U6CisJCQkJU2V0UXVlcnlDb21wbGV0 aW9uKHFjLCBDTURUQUdfTUVSR0UsIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQp OworCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMs IENNRFRBR19VTktOT1dOLCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKIAkJ CQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3Jj L2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKaW5kZXggMzc4MGM2ZTgxMi4uZjM2NGE5Yjg4YSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKKysrIGIvc3JjL2JhY2tl bmQvdGNvcC91dGlsaXR5LmMKQEAgLTExMyw2ICsxMTMsNyBAQCBDb21tYW5kSXNSZWFkT25s eShQbGFubmVkU3RtdCAqcHN0bXQpCiAJCWNhc2UgQ01EX1VQREFURToKIAkJY2FzZSBDTURf SU5TRVJUOgogCQljYXNlIENNRF9ERUxFVEU6CisJCWNhc2UgQ01EX01FUkdFOgogCQkJcmV0 dXJuIGZhbHNlOwogCQljYXNlIENNRF9VVElMSVRZOgogCQkJLyogRm9yIG5vdywgdHJlYXQg YWxsIHV0aWxpdHkgY29tbWFuZHMgYXMgcmVhZC93cml0ZSAqLwpAQCAtMjEyNCw2ICsyMTI1 LDggQEAgUXVlcnlSZXR1cm5zVHVwbGVzKFF1ZXJ5ICpwYXJzZXRyZWUpCiAJCWNhc2UgQ01E X1NFTEVDVDoKIAkJCS8qIHJldHVybnMgdHVwbGVzICovCiAJCQlyZXR1cm4gdHJ1ZTsKKwkJ Y2FzZSBDTURfTUVSR0U6CisJCQlyZXR1cm4gZmFsc2U7CiAJCWNhc2UgQ01EX0lOU0VSVDoK IAkJY2FzZSBDTURfVVBEQVRFOgogCQljYXNlIENNRF9ERUxFVEU6CkBAIC0yMzY1LDYgKzIz NjgsMTAgQEAgQ3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQl0YWcgPSBD TURUQUdfVVBEQVRFOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX01lcmdlU3RtdDoKKwkJCXRh ZyA9IENNRFRBR19NRVJHRTsKKwkJCWJyZWFrOworCiAJCWNhc2UgVF9TZWxlY3RTdG10Ogog CQkJdGFnID0gQ01EVEFHX1NFTEVDVDsKIAkJCWJyZWFrOwpAQCAtMzEyNSw2ICszMTMyLDkg QEAgQ3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQkJCWNhc2UgQ01EX0RF TEVURToKIAkJCQkJCXRhZyA9IENNRFRBR19ERUxFVEU7CiAJCQkJCQlicmVhazsKKwkJCQkJ Y2FzZSBDTURfTUVSR0U6CisJCQkJCQl0YWcgPSBDTURUQUdfTUVSR0U7CisJCQkJCQlicmVh azsKIAkJCQkJY2FzZSBDTURfVVRJTElUWToKIAkJCQkJCXRhZyA9IENyZWF0ZUNvbW1hbmRU YWcoc3RtdC0+dXRpbGl0eVN0bXQpOwogCQkJCQkJYnJlYWs7CkBAIC0zMTg1LDYgKzMxOTUs OSBAQCBDcmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNldHJlZSkKIAkJCQkJY2FzZSBDTURf REVMRVRFOgogCQkJCQkJdGFnID0gQ01EVEFHX0RFTEVURTsKIAkJCQkJCWJyZWFrOworCQkJ CQljYXNlIENNRF9NRVJHRToKKwkJCQkJCXRhZyA9IENNRFRBR19NRVJHRTsKKwkJCQkJCWJy ZWFrOwogCQkJCQljYXNlIENNRF9VVElMSVRZOgogCQkJCQkJdGFnID0gQ3JlYXRlQ29tbWFu ZFRhZyhzdG10LT51dGlsaXR5U3RtdCk7CiAJCQkJCQlicmVhazsKQEAgLTMyMzMsNiArMzI0 Niw3IEBAIEdldENvbW1hbmRMb2dMZXZlbChOb2RlICpwYXJzZXRyZWUpCiAJCWNhc2UgVF9J bnNlcnRTdG10OgogCQljYXNlIFRfRGVsZXRlU3RtdDoKIAkJY2FzZSBUX1VwZGF0ZVN0bXQ6 CisJCWNhc2UgVF9NZXJnZVN0bXQ6CiAJCQlsZXYgPSBMT0dTVE1UX01PRDsKIAkJCWJyZWFr OwogCkBAIC0zNjgyLDYgKzM2OTYsNyBAQCBHZXRDb21tYW5kTG9nTGV2ZWwoTm9kZSAqcGFy c2V0cmVlKQogCQkJCQljYXNlIENNRF9VUERBVEU6CiAJCQkJCWNhc2UgQ01EX0lOU0VSVDoK IAkJCQkJY2FzZSBDTURfREVMRVRFOgorCQkJCQljYXNlIENNRF9NRVJHRToKIAkJCQkJCWxl diA9IExPR1NUTVRfTU9EOwogCQkJCQkJYnJlYWs7CiAKQEAgLTM3MTIsNiArMzcyNyw3IEBA IEdldENvbW1hbmRMb2dMZXZlbChOb2RlICpwYXJzZXRyZWUpCiAJCQkJCWNhc2UgQ01EX1VQ REFURToKIAkJCQkJY2FzZSBDTURfSU5TRVJUOgogCQkJCQljYXNlIENNRF9ERUxFVEU6CisJ CQkJCWNhc2UgQ01EX01FUkdFOgogCQkJCQkJbGV2ID0gTE9HU1RNVF9NT0Q7CiAJCQkJCQli cmVhazsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IGIxNjUyNmU2NWUu LmRkYjdmZDg5M2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRp bHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTQ5MzQs NiArNDkzNCw4IEBAIHNldF9kZXBhcnNlX3BsYW4oZGVwYXJzZV9uYW1lc3BhY2UgKmRwbnMs IFBsYW4gKnBsYW4pCiAJICogRm9yIGEgV29ya1RhYmxlU2NhbiwgbG9jYXRlIHRoZSBwYXJl bnQgUmVjdXJzaXZlVW5pb24gcGxhbiBub2RlIGFuZCB1c2UKIAkgKiB0aGF0IGFzIElOTkVS IHJlZmVyZW50LgogCSAqCisJICogRm9yIE1FUkdFLCBtYWtlIHRoZSBpbm5lciB0bGlzdCBw b2ludCB0byB0aGUgbWVyZ2Ugc291cmNlIHRsaXN0LCB3aGljaAorCSAqIGlzIHNhbWUgYXMg dGhlIHRhcmdldGxpc3QgdGhhdCB0aGUgTW9kaWZ5VGFibGUncyBzb3VyY2UgcGxhbiBwcm92 aWRlcy4KIAkgKiBGb3IgT04gQ09ORkxJQ1QgLi4gVVBEQVRFIHdlIGp1c3QgbmVlZCB0aGUg aW5uZXIgdGxpc3QgdG8gcG9pbnQgdG8gdGhlCiAJICogZXhjbHVkZWQgZXhwcmVzc2lvbidz IHRsaXN0LiAoU2ltaWxhciB0byB0aGUgU3VicXVlcnlTY2FuIHdlIGRvbid0IHdhbnQKIAkg KiB0byByZXVzZSBPVVRFUiwgaXQncyB1c2VkIGZvciBSRVRVUk5JTkcgaW4gc29tZSBtb2Rp ZnkgdGFibGUgY2FzZXMsCkBAIC00OTUzLDcgKzQ5NTUsMTIgQEAgc2V0X2RlcGFyc2VfcGxh bihkZXBhcnNlX25hbWVzcGFjZSAqZHBucywgUGxhbiAqcGxhbikKIAkJZHBucy0+aW5uZXJf cGxhbiA9IGlubmVyUGxhbihwbGFuKTsKIAogCWlmIChJc0EocGxhbiwgTW9kaWZ5VGFibGUp KQotCQlkcG5zLT5pbm5lcl90bGlzdCA9ICgoTW9kaWZ5VGFibGUgKikgcGxhbiktPmV4Y2xS ZWxUbGlzdDsKKwl7CisJCWlmICgoKE1vZGlmeVRhYmxlICopIHBsYW4pLT5vcGVyYXRpb24g PT0gQ01EX01FUkdFKQorCQkJZHBucy0+aW5uZXJfdGxpc3QgPSBkcG5zLT5vdXRlcl9wbGFu LT50YXJnZXRsaXN0OworCQllbHNlCisJCQlkcG5zLT5pbm5lcl90bGlzdCA9ICgoTW9kaWZ5 VGFibGUgKikgcGxhbiktPmV4Y2xSZWxUbGlzdDsKKwl9CiAJZWxzZSBpZiAoZHBucy0+aW5u ZXJfcGxhbikKIAkJZHBucy0+aW5uZXJfdGxpc3QgPSBkcG5zLT5pbm5lcl9wbGFuLT50YXJn ZXRsaXN0OwogCWVsc2UKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUu YyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYwppbmRleCA2OTU3NTY3MjY0Li5jNjQ0 M2ViZTcwIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKKysrIGIv c3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCkBAIC04MDIsNiArODAyLDI4IEBAIHN0YXRp YyBjb25zdCBTY2hlbWFRdWVyeSBRdWVyeV9mb3JfbGlzdF9vZl91cGRhdGFibGVzID0gewog CS5yZXN1bHQgPSAiYy5yZWxuYW1lIiwKIH07CiAKKy8qIFJlbGF0aW9ucyBzdXBwb3J0aW5n IE1FUkdFICovCitzdGF0aWMgY29uc3QgU2NoZW1hUXVlcnkgUXVlcnlfZm9yX2xpc3Rfb2Zf bWVyZ2V0YXJnZXRzID0geworCS8qIG1pbl9zZXJ2ZXJfdmVyc2lvbiAqLworCTE1MDAwMCwK KwkvKiBjYXRuYW1lICovCisJInBnX2NhdGFsb2cucGdfY2xhc3MgYyIsCisJLyogc2VsY29u ZGl0aW9uICovCisJImMucmVsa2luZCBJTiAoIiBDcHBBc1N0cmluZzIoUkVMS0lORF9SRUxB VElPTikgIiwgIgorCUNwcEFzU3RyaW5nMihSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKSAi KSBBTkQgIgorCSJjLnJlbGhhc3J1bGVzID0gZmFsc2UgQU5EICIKKwkiKGMucmVsaGFzc3Vi Y2xhc3MgPSBmYWxzZSBPUiAiCisJIiBjLnJlbGtpbmQgPSAiIENwcEFzU3RyaW5nMihSRUxL SU5EX1BBUlRJVElPTkVEX1RBQkxFKSAiKSIsCisJLyogdmlzY29uZGl0aW9uICovCisJInBn X2NhdGFsb2cucGdfdGFibGVfaXNfdmlzaWJsZShjLm9pZCkiLAorCS8qIG5hbWVzcGFjZSAq LworCSJjLnJlbG5hbWVzcGFjZSIsCisJLyogcmVzdWx0ICovCisJInBnX2NhdGFsb2cucXVv dGVfaWRlbnQoYy5yZWxuYW1lKSIsCisJLyogcXVhbHJlc3VsdCAqLworCU5VTEwKK307CisK IC8qIFJlbGF0aW9ucyBzdXBwb3J0aW5nIFNFTEVDVCAqLwogc3RhdGljIGNvbnN0IFNjaGVt YVF1ZXJ5IFF1ZXJ5X2Zvcl9saXN0X29mX3NlbGVjdGFibGVzID0gewogCS5jYXRuYW1lID0g InBnX2NhdGFsb2cucGdfY2xhc3MgYyIsCkBAIC0xNjMxLDcgKzE2NTMsNyBAQCBwc3FsX2Nv bXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkiQ09N TUVOVCIsICJDT01NSVQiLCAiQ09QWSIsICJDUkVBVEUiLCAiREVBTExPQ0FURSIsICJERUNM QVJFIiwKIAkJIkRFTEVURSBGUk9NIiwgIkRJU0NBUkQiLCAiRE8iLCAiRFJPUCIsICJFTkQi LCAiRVhFQ1VURSIsICJFWFBMQUlOIiwKIAkJIkZFVENIIiwgIkdSQU5UIiwgIklNUE9SVCBG T1JFSUdOIFNDSEVNQSIsICJJTlNFUlQgSU5UTyIsICJMSVNURU4iLCAiTE9BRCIsICJMT0NL IiwKLQkJIk1PVkUiLCAiTk9USUZZIiwgIlBSRVBBUkUiLAorCQkiTUVSR0UiLCAiTU9WRSIs ICJOT1RJRlkiLCAiUFJFUEFSRSIsCiAJCSJSRUFTU0lHTiIsICJSRUZSRVNIIE1BVEVSSUFM SVpFRCBWSUVXIiwgIlJFSU5ERVgiLCAiUkVMRUFTRSIsCiAJCSJSRVNFVCIsICJSRVZPS0Ui LCAiUk9MTEJBQ0siLAogCQkiU0FWRVBPSU5UIiwgIlNFQ1VSSVRZIExBQkVMIiwgIlNFTEVD VCIsICJTRVQiLCAiU0hPVyIsICJTVEFSVCIsCkBAIC0zNTc2LDcgKzM1OTgsNyBAQCBwc3Fs X2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogICov CiAJZWxzZSBpZiAoTWF0Y2hlcygiRVhQTEFJTiIpKQogCQlDT01QTEVURV9XSVRIKCJTRUxF Q1QiLCAiSU5TRVJUIElOVE8iLCAiREVMRVRFIEZST00iLCAiVVBEQVRFIiwgIkRFQ0xBUkUi LAotCQkJCQkgICJFWEVDVVRFIiwgIkFOQUxZWkUiLCAiVkVSQk9TRSIpOworCQkJCQkgICJN RVJHRSIsICJFWEVDVVRFIiwgIkFOQUxZWkUiLCAiVkVSQk9TRSIpOwogCWVsc2UgaWYgKEhl YWRNYXRjaGVzKCJFWFBMQUlOIiwgIigqIikgJiYKIAkJCSAhSGVhZE1hdGNoZXMoIkVYUExB SU4iLCAiKCopIikpCiAJewpAQCAtMzU5NSwxMiArMzYxNywxMiBAQCBwc3FsX2NvbXBsZXRp b24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCX0KIAllbHNlIGlm IChNYXRjaGVzKCJFWFBMQUlOIiwgIkFOQUxZWkUiKSkKIAkJQ09NUExFVEVfV0lUSCgiU0VM RUNUIiwgIklOU0VSVCBJTlRPIiwgIkRFTEVURSBGUk9NIiwgIlVQREFURSIsICJERUNMQVJF IiwKLQkJCQkJICAiRVhFQ1VURSIsICJWRVJCT1NFIik7CisJCQkJCSAgIk1FUkdFIiwgIkVY RUNVVEUiLCAiVkVSQk9TRSIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkVYUExBSU4iLCAiKCop IikgfHwKIAkJCSBNYXRjaGVzKCJFWFBMQUlOIiwgIlZFUkJPU0UiKSB8fAogCQkJIE1hdGNo ZXMoIkVYUExBSU4iLCAiQU5BTFlaRSIsICJWRVJCT1NFIikpCiAJCUNPTVBMRVRFX1dJVEgo IlNFTEVDVCIsICJJTlNFUlQgSU5UTyIsICJERUxFVEUgRlJPTSIsICJVUERBVEUiLCAiREVD TEFSRSIsCi0JCQkJCSAgIkVYRUNVVEUiKTsKKwkJCQkJICAiTUVSR0UiLCAiRVhFQ1VURSIp OwogCiAvKiBGRVRDSCAmJiBNT1ZFICovCiAKQEAgLTM4NjIsNiArMzg4NCw5IEBAIHBzcWxf Y29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCUNP TVBMRVRFX1dJVEgoIk9QVElPTlMgKCIpOwogCiAvKiBJTlNFUlQgLS0tIGNhbiBiZSBpbnNp ZGUgRVhQTEFJTiwgUlVMRSwgZXRjICovCisJLyogQ29tcGxldGUgTk9UIE1BVENIRUQgVEhF TiBJTlNFUlQgKi8KKwllbHNlIGlmIChUYWlsTWF0Y2hlcygiTk9UIiwgIk1BVENIRUQiLCAi VEhFTiIsICJJTlNFUlQiKSkKKwkJQ09NUExFVEVfV0lUSCgiVkFMVUVTIiwgIigiKTsKIAkv KiBDb21wbGV0ZSBJTlNFUlQgd2l0aCAiSU5UTyIgKi8KIAllbHNlIGlmIChUYWlsTWF0Y2hl cygiSU5TRVJUIikpCiAJCUNPTVBMRVRFX1dJVEgoIklOVE8iKTsKQEAgLTM5MzcsNiArMzk2 Miw1MyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBp bnQgZW5kKQogCWVsc2UgaWYgKEhlYWRNYXRjaGVzKCJMT0NLIikgJiYgVGFpbE1hdGNoZXMo IklOIiwgIlNIQVJFIikpCiAJCUNPTVBMRVRFX1dJVEgoIk1PREUiLCAiUk9XIEVYQ0xVU0lW RSBNT0RFIiwKIAkJCQkJICAiVVBEQVRFIEVYQ0xVU0lWRSBNT0RFIik7CisvKiBNRVJHRSAt LS0gY2FuIGJlIGluc2lkZSBFWFBMQUlOICovCisJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIk1F UkdFIikpCisJCUNPTVBMRVRFX1dJVEgoIklOVE8iKTsKKwllbHNlIGlmIChUYWlsTWF0Y2hl cygiTUVSR0UiLCAiSU5UTyIpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVy eV9mb3JfbGlzdF9vZl9tZXJnZXRhcmdldHMpOworCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJN RVJHRSIsICJJTlRPIiwgTWF0Y2hBbnkpKQorCQlDT01QTEVURV9XSVRIKCJVU0lORyIsICJB UyIpOworCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJNRVJHRSIsICJJTlRPIiwgTWF0Y2hBbnks ICJVU0lORyIpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlz dF9vZl90YWJsZXMpOworCS8qIHdpdGggW0FTXSBhbGlhcyAqLworCWVsc2UgaWYgKFRhaWxN YXRjaGVzKCJNRVJHRSIsICJJTlRPIiwgTWF0Y2hBbnksICJBUyIsIE1hdGNoQW55KSkKKwkJ Q09NUExFVEVfV0lUSCgiVVNJTkciKTsKKwllbHNlIGlmIChUYWlsTWF0Y2hlcygiTUVSR0Ui LCAiSU5UTyIsIE1hdGNoQW55LCBNYXRjaEFueSkpCisJCUNPTVBMRVRFX1dJVEgoIlVTSU5H Iik7CisJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIk1FUkdFIiwgIklOVE8iLCBNYXRjaEFueSwg IkFTIiwgTWF0Y2hBbnksICJVU0lORyIpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVS WShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXMpOworCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJN RVJHRSIsICJJTlRPIiwgTWF0Y2hBbnksIE1hdGNoQW55LCAiVVNJTkciKSkKKwkJQ09NUExF VEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzKTsKKwkvKiBP TiAqLworCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJNRVJHRSIsICJJTlRPIiwgTWF0Y2hBbnks ICJVU0lORyIsIE1hdGNoQW55KSkKKwkJQ09NUExFVEVfV0lUSCgiT04iKTsKKwllbHNlIGlm IChUYWlsTWF0Y2hlcygiSU5UTyIsIE1hdGNoQW55LCAiQVMiLCBNYXRjaEFueSwgIlVTSU5H IiwgTWF0Y2hBbnksICJBUyIsIE1hdGNoQW55KSkKKwkJQ09NUExFVEVfV0lUSCgiT04iKTsK KwllbHNlIGlmIChUYWlsTWF0Y2hlcygiSU5UTyIsIE1hdGNoQW55LCBNYXRjaEFueSwgIlVT SU5HIiwgTWF0Y2hBbnksIE1hdGNoQW55KSkKKwkJQ09NUExFVEVfV0lUSCgiT04iKTsKKwkv KiBPTiBjb25kaXRpb24gKi8KKwllbHNlIGlmIChUYWlsTWF0Y2hlcygiSU5UTyIsIE1hdGNo QW55LCAiVVNJTkciLCBNYXRjaEFueSwgIk9OIikpCisJCUNPTVBMRVRFX1dJVEhfQVRUUihw cmV2NF93ZCk7CisJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIklOVE8iLCBNYXRjaEFueSwgIkFT IiwgTWF0Y2hBbnksICJVU0lORyIsIE1hdGNoQW55LCAiQVMiLCBNYXRjaEFueSwgIk9OIikp CisJCUNPTVBMRVRFX1dJVEhfQVRUUihwcmV2OF93ZCk7CisJZWxzZSBpZiAoVGFpbE1hdGNo ZXMoIklOVE8iLCBNYXRjaEFueSwgTWF0Y2hBbnksICJVU0lORyIsIE1hdGNoQW55LCBNYXRj aEFueSwgIk9OIikpCisJCUNPTVBMRVRFX1dJVEhfQVRUUihwcmV2Nl93ZCk7CisJLyogV0hF TiBbTk9UXSBNQVRDSEVEICovCisJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIlVTSU5HIiwgTWF0 Y2hBbnksICJPTiIsIE1hdGNoQW55KSkKKwkJQ09NUExFVEVfV0lUSCgiV0hFTiBNQVRDSEVE IiwgIldIRU4gTk9UIE1BVENIRUQiKTsKKwllbHNlIGlmIChUYWlsTWF0Y2hlcygiVVNJTkci LCBNYXRjaEFueSwgIkFTIiwgTWF0Y2hBbnksICJPTiIsIE1hdGNoQW55KSkKKwkJQ09NUExF VEVfV0lUSCgiV0hFTiBNQVRDSEVEIiwgIldIRU4gTk9UIE1BVENIRUQiKTsKKwllbHNlIGlm IChUYWlsTWF0Y2hlcygiVVNJTkciLCBNYXRjaEFueSwgTWF0Y2hBbnksICJPTiIsIE1hdGNo QW55KSkKKwkJQ09NUExFVEVfV0lUSCgiV0hFTiBNQVRDSEVEIiwgIldIRU4gTk9UIE1BVENI RUQiKTsKKwllbHNlIGlmIChUYWlsTWF0Y2hlcygiV0hFTiIsICJNQVRDSEVEIikpCisJCUNP TVBMRVRFX1dJVEgoIlRIRU4iLCAiQU5EIik7CisJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIldI RU4iLCAiTk9UIiwgIk1BVENIRUQiKSkKKwkJQ09NUExFVEVfV0lUSCgiVEhFTiIsICJBTkQi KTsKKwllbHNlIGlmIChUYWlsTWF0Y2hlcygiV0hFTiIsICJNQVRDSEVEIiwgIlRIRU4iKSkK KwkJQ09NUExFVEVfV0lUSCgiVVBEQVRFIiwgIkRFTEVURSIpOworCWVsc2UgaWYgKFRhaWxN YXRjaGVzKCJXSEVOIiwgIk5PVCIsICJNQVRDSEVEIiwgIlRIRU4iKSkKKwkJQ09NUExFVEVf V0lUSCgiSU5TRVJUIiwgIkRPIE5PVEhJTkciKTsKIAogCS8qIENvbXBsZXRlIExPQ0sgW1RB QkxFXSBbT05MWV0gPHRhYmxlPiBbSU4gbG9ja21vZGUgTU9ERV0gd2l0aCAiTk9XQUlUIiAq LwogCWVsc2UgaWYgKEhlYWRNYXRjaGVzKCJMT0NLIikgJiYgVGFpbE1hdGNoZXMoIk1PREUi KSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaCBiL3NyYy9p bmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaAppbmRleCBlMTI3MTQyMGU1Li5lZDM1MWE2NTNj IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmgKKysrIGIvc3Jj L2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oCkBAIC0xMyw2ICsxMyw3IEBACiAjaWZuZGVm IFRSSUdHRVJfSAogI2RlZmluZSBUUklHR0VSX0gKIAorI2luY2x1ZGUgImFjY2Vzcy90YWJs ZWFtLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhZGRyZXNzLmgiCiAjaW5jbHVkZSAi bm9kZXMvZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgpAQCAt MjA5LDcgKzIxMCw4IEBAIGV4dGVybiBib29sIEV4ZWNCUkRlbGV0ZVRyaWdnZXJzKEVTdGF0 ZSAqZXN0YXRlLAogCQkJCQkJCQkgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKIAkJCQkJCQkJ IEl0ZW1Qb2ludGVyIHR1cGxlaWQsCiAJCQkJCQkJCSBIZWFwVHVwbGUgZmR3X3RyaWd0dXBs ZSwKLQkJCQkJCQkJIFR1cGxlVGFibGVTbG90ICoqZXBxc2xvdCk7CisJCQkJCQkJCSBUdXBs ZVRhYmxlU2xvdCAqKmVwcXNsb3QsCisJCQkJCQkJCSBUTV9GYWlsdXJlRGF0YSAqdG1mZHAp OwogZXh0ZXJuIHZvaWQgRXhlY0FSRGVsZXRlVHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsCiAJ CQkJCQkJCSBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogCQkJCQkJCQkgSXRlbVBvaW50ZXIg dHVwbGVpZCwKQEAgLTIyOCw3ICsyMzAsOCBAQCBleHRlcm4gYm9vbCBFeGVjQlJVcGRhdGVU cmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwKIAkJCQkJCQkJIFJlc3VsdFJlbEluZm8gKnJlbGlu Zm8sCiAJCQkJCQkJCSBJdGVtUG9pbnRlciB0dXBsZWlkLAogCQkJCQkJCQkgSGVhcFR1cGxl IGZkd190cmlndHVwbGUsCi0JCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqc2xvdCk7CisJCQkJ CQkJCSBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKKwkJCQkJCQkJIFRNX0ZhaWx1cmVEYXRhICp0 bWZkcCk7CiBleHRlcm4gdm9pZCBFeGVjQVJVcGRhdGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0 ZSwKIAkJCQkJCQkJIFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCiAJCQkJCQkJCSBJdGVtUG9p bnRlciB0dXBsZWlkLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1 bWVudC5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCmluZGV4IDFiNzE1 N2JkZDEuLjRmYzM2Y2E3ZmEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2lu c3RydW1lbnQuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmgKQEAg LTgyLDggKzgyLDExIEBAIHR5cGVkZWYgc3RydWN0IEluc3RydW1lbnRhdGlvbgogCWRvdWJs ZQkJbnR1cGxlczsJCS8qIHRvdGFsIHR1cGxlcyBwcm9kdWNlZCAqLwogCWRvdWJsZQkJbnR1 cGxlczI7CQkvKiBzZWNvbmRhcnkgbm9kZS1zcGVjaWZpYyB0dXBsZSBjb3VudGVyICovCiAJ ZG91YmxlCQlubG9vcHM7CQkJLyogIyBvZiBydW4gY3ljbGVzIGZvciB0aGlzIG5vZGUgKi8K LQlkb3VibGUJCW5maWx0ZXJlZDE7CQkvKiAjIG9mIHR1cGxlcyByZW1vdmVkIGJ5IHNjYW5x dWFsIG9yIGpvaW5xdWFsICovCi0JZG91YmxlCQluZmlsdGVyZWQyOwkJLyogIyBvZiB0dXBs ZXMgcmVtb3ZlZCBieSAib3RoZXIiIHF1YWxzICovCisJZG91YmxlCQluZmlsdGVyZWQxOwkJ LyogIyB0dXBsZXMgcmVtb3ZlZCBieSBzY2FucXVhbCBvciBqb2lucXVhbCBPUgorCQkJCQkJ CQkgKiAjIHR1cGxlcyBpbnNlcnRlZCBieSBNRVJHRSAqLworCWRvdWJsZQkJbmZpbHRlcmVk MjsJCS8qICMgdHVwbGVzIHJlbW92ZWQgYnkgIm90aGVyIiBxdWFscyBPUiAjCisJCQkJCQkJ CSAqIHR1cGxlcyB1cGRhdGVkIGJ5IE1FUkdFICovCisJZG91YmxlCQluZmlsdGVyZWQzOwkJ LyogIyB0dXBsZXMgZGVsZXRlZCBieSBNRVJHRSAqLwogCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdl OwkJLyogdG90YWwgYnVmZmVyIHVzYWdlICovCiAJV2FsVXNhZ2UJd2FsdXNhZ2U7CQkvKiB0 b3RhbCBXQUwgdXNhZ2UgKi8KIH0gSW5zdHJ1bWVudGF0aW9uOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmggYi9zcmMvaW5jbHVkZS9leGVj dXRvci9ub2RlTW9kaWZ5VGFibGUuaAppbmRleCAxZDIyNWJjODhkLi4wZjVkM2JjMTkwIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuaAorKysg Yi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuaApAQCAtMTMsNiArMTMs NyBAQAogI2lmbmRlZiBOT0RFTU9ESUZZVEFCTEVfSAogI2RlZmluZSBOT0RFTU9ESUZZVEFC TEVfSAogCisjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRlICJub2Rlcy9l eGVjbm9kZXMuaCIKIAogZXh0ZXJuIHZvaWQgRXhlY0NvbXB1dGVTdG9yZWRHZW5lcmF0ZWQo UmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKQEAgLTIzLDQgKzI0LDcgQEAgZXh0ZXJu IE1vZGlmeVRhYmxlU3RhdGUgKkV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLAogZXh0ZXJuIHZvaWQgRXhlY0VuZE1vZGlmeVRhYmxlKE1v ZGlmeVRhYmxlU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1JlU2Nhbk1vZGlmeVRh YmxlKE1vZGlmeVRhYmxlU3RhdGUgKm5vZGUpOwogCitleHRlcm4gdm9pZCBFeGVjSW5pdE1l cmdlVHVwbGVTbG90cyhNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLAorCQkJCQkJCQkJUmVz dWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbyk7CisKICNlbmRpZgkJCQkJCQkvKiBOT0RFTU9E SUZZVEFCTEVfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivc3BpLmgg Yi9zcmMvaW5jbHVkZS9leGVjdXRvci9zcGkuaAppbmRleCA2ZWMzODUxNDQ0Li5iMmMwYzc0 ODZjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9zcGkuaAorKysgYi9zcmMv aW5jbHVkZS9leGVjdXRvci9zcGkuaApAQCAtOTYsNiArOTYsNyBAQCB0eXBlZGVmIHN0cnVj dCBfU1BJX3BsYW4gKlNQSVBsYW5QdHI7CiAjZGVmaW5lIFNQSV9PS19SRUxfUkVHSVNURVIJ CTE1CiAjZGVmaW5lIFNQSV9PS19SRUxfVU5SRUdJU1RFUgkxNgogI2RlZmluZSBTUElfT0tf VERfUkVHSVNURVIJCTE3CisjZGVmaW5lIFNQSV9PS19NRVJHRQkJCTE4CiAKICNkZWZpbmUg U1BJX09QVF9OT05BVE9NSUMJCSgxIDw8IDApCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5k ZXggZGQ5NWRjNDBjNy4uZjQ4NzNhY2I5NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAg LTM4OSw2ICszODksMjMgQEAgdHlwZWRlZiBzdHJ1Y3QgT25Db25mbGljdFNldFN0YXRlCiAJ RXhwclN0YXRlICAqb2NfV2hlcmVDbGF1c2U7IC8qIHN0YXRlIGZvciB0aGUgV0hFUkUgY2xh dXNlICovCiB9IE9uQ29uZmxpY3RTZXRTdGF0ZTsKIAorCisvKiAtLS0tLS0tLS0tLS0tLS0t CisgKgkgTWVyZ2VBY3Rpb25TdGF0ZSBpbmZvcm1hdGlvbgorICoKKyAqCUdsb2JhbCBpbmZv IGZvciBhIE1FUkdFIGFjdGlvbi4KKyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAqLwordHlwZWRl ZiBzdHJ1Y3QgTWVyZ2VBY3Rpb25TdGF0ZQoreworCU5vZGVUYWcJCXR5cGU7CisKKwlNZXJn ZUFjdGlvbiAqbWFzX2FjdGlvbjsJLyogYXNzb2NpYXRlZCBNZXJnZUFjdGlvbiBub2RlICov CisJUHJvamVjdGlvbkluZm8gKm1hc19wcm9qOwkvKiBwcm9qZWN0aW9uIG9mIHRoZSBhY3Rp b24ncyB0YXJnZXRsaXN0IGZvcgorCQkJCQkJCQkgKiB0aGlzIHJlbCAqLworCUV4cHJTdGF0 ZSAgKm1hc193aGVucXVhbDsJLyogV0hFTiBbTk9UXSBNQVRDSEVEIEFORCBjb25kaXRpb25z ICovCit9IE1lcmdlQWN0aW9uU3RhdGU7CisKIC8qCiAgKiBSZXN1bHRSZWxJbmZvCiAgKgpA QCAtNTAwLDYgKzUxNywxMCBAQCB0eXBlZGVmIHN0cnVjdCBSZXN1bHRSZWxJbmZvCiAJLyog T04gQ09ORkxJQ1QgZXZhbHVhdGlvbiBzdGF0ZSAqLwogCU9uQ29uZmxpY3RTZXRTdGF0ZSAq cmlfb25Db25mbGljdDsKIAorCS8qIGZvciBNRVJHRSwgbGlzdHMgb2YgTWVyZ2VBY3Rpb25T dGF0ZSAqLworCUxpc3QJICAgKnJpX21hdGNoZWRNZXJnZUFjdGlvbjsKKwlMaXN0CSAgICpy aV9ub3RNYXRjaGVkTWVyZ2VBY3Rpb247CisKIAkvKiBwYXJ0aXRpb24gY2hlY2sgZXhwcmVz c2lvbiBzdGF0ZSAoTlVMTCBpZiBub3Qgc2V0IHVwIHlldCkgKi8KIAlFeHByU3RhdGUgICpy aV9QYXJ0aXRpb25DaGVja0V4cHI7CiAKQEAgLTEwODMsNiArMTEwNCwxMSBAQCB0eXBlZGVm IHN0cnVjdCBQbGFuU3RhdGUKIAkJaWYgKCgoUGxhblN0YXRlICopKG5vZGUpKS0+aW5zdHJ1 bWVudCkgXAogCQkJKChQbGFuU3RhdGUgKikobm9kZSkpLT5pbnN0cnVtZW50LT5uZmlsdGVy ZWQyICs9IChkZWx0YSk7IFwKIAl9IHdoaWxlKDApCisjZGVmaW5lIEluc3RyQ291bnRGaWx0 ZXJlZDMobm9kZSwgZGVsdGEpIFwKKwlkbyB7IFwKKwkJaWYgKCgoUGxhblN0YXRlICopKG5v ZGUpKS0+aW5zdHJ1bWVudCkgXAorCQkJKChQbGFuU3RhdGUgKikobm9kZSkpLT5pbnN0cnVt ZW50LT5uZmlsdGVyZWQzICs9IChkZWx0YSk7IFwKKwl9IHdoaWxlKDApCiAKIC8qCiAgKiBF UFFTdGF0ZSBpcyBzdGF0ZSBmb3IgZXhlY3V0aW5nIGFuIEV2YWxQbGFuUXVhbCByZWNoZWNr IG9uIGEgY2FuZGlkYXRlCkBAIC0xMTg0LDYgKzEyMTAsMTIgQEAgdHlwZWRlZiBzdHJ1Y3Qg UHJvamVjdFNldFN0YXRlCiAJTWVtb3J5Q29udGV4dCBhcmdjb250ZXh0OwkvKiBjb250ZXh0 IGZvciBTUkYgYXJndW1lbnRzICovCiB9IFByb2plY3RTZXRTdGF0ZTsKIAorCisvKiBmbGFn cyBmb3IgbXRfbWVyZ2Vfc3ViY29tbWFuZHMgKi8KKyNkZWZpbmUgTUVSR0VfSU5TRVJUCTB4 MDEKKyNkZWZpbmUgTUVSR0VfVVBEQVRFCTB4MDIKKyNkZWZpbmUgTUVSR0VfREVMRVRFCTB4 MDQKKwogLyogLS0tLS0tLS0tLS0tLS0tLQogICoJIE1vZGlmeVRhYmxlU3RhdGUgaW5mb3Jt YXRpb24KICAqIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTExOTEsNyArMTIyMyw3IEBAIHR5cGVk ZWYgc3RydWN0IFByb2plY3RTZXRTdGF0ZQogdHlwZWRlZiBzdHJ1Y3QgTW9kaWZ5VGFibGVT dGF0ZQogewogCVBsYW5TdGF0ZQlwczsJCQkJLyogaXRzIGZpcnN0IGZpZWxkIGlzIE5vZGVU YWcgKi8KLQlDbWRUeXBlCQlvcGVyYXRpb247CQkvKiBJTlNFUlQsIFVQREFURSwgb3IgREVM RVRFICovCisJQ21kVHlwZQkJb3BlcmF0aW9uOwkJLyogSU5TRVJULCBVUERBVEUsIERFTEVU RSBvciBNRVJHRSAqLwogCWJvb2wJCWNhblNldFRhZzsJCS8qIGRvIHdlIHNldCB0aGUgY29t bWFuZCB0YWcvZXNfcHJvY2Vzc2VkPyAqLwogCWJvb2wJCW10X2RvbmU7CQkvKiBhcmUgd2Ug ZG9uZT8gKi8KIAlpbnQJCQltdF9ucmVsczsJCS8qIG51bWJlciBvZiBlbnRyaWVzIGluIHJl c3VsdFJlbEluZm9bXSAqLwpAQCAtMTIzMyw2ICsxMjY1LDkgQEAgdHlwZWRlZiBzdHJ1Y3Qg TW9kaWZ5VGFibGVTdGF0ZQogCiAJLyogY29udHJvbHMgdHJhbnNpdGlvbiB0YWJsZSBwb3B1 bGF0aW9uIGZvciBJTlNFUlQuLi5PTiBDT05GTElDVCBVUERBVEUgKi8KIAlzdHJ1Y3QgVHJh bnNpdGlvbkNhcHR1cmVTdGF0ZSAqbXRfb2NfdHJhbnNpdGlvbl9jYXB0dXJlOworCisJLyog RmxhZ3Mgc2hvd2luZyB3aGljaCBzdWJjb21tYW5kcyBhcmUgcHJlc2VudCBJTlMvVVBEL0RF TC9ETyBOT1RISU5HICovCisJaW50CQkJbXRfbWVyZ2Vfc3ViY29tbWFuZHM7CiB9IE1vZGlm eVRhYmxlU3RhdGU7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL25vZGVzL25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCmluZGV4 IDVkMDc1ZjBjMzQuLjk5MWYxOWUzZDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVz L25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaApAQCAtMTA0LDYgKzEw NCw3IEBAIHR5cGVkZWYgZW51bSBOb2RlVGFnCiAJVF9QbGFuU3RhdGUsCiAJVF9SZXN1bHRT dGF0ZSwKIAlUX1Byb2plY3RTZXRTdGF0ZSwKKwlUX01lcmdlQWN0aW9uU3RhdGUsCiAJVF9N b2RpZnlUYWJsZVN0YXRlLAogCVRfQXBwZW5kU3RhdGUsCiAJVF9NZXJnZUFwcGVuZFN0YXRl LApAQCAtMjc5LDYgKzI4MCw3IEBAIHR5cGVkZWYgZW51bSBOb2RlVGFnCiAJVF9Sb2xsdXBE YXRhLAogCVRfR3JvdXBpbmdTZXREYXRhLAogCVRfU3RhdGlzdGljRXh0SW5mbywKKwlUX01l cmdlQWN0aW9uLAogCiAJLyoKIAkgKiBUQUdTIEZPUiBNRU1PUlkgTk9ERVMgKG1lbW5vZGVz LmgpCkBAIC0zMTcsNiArMzE5LDcgQEAgdHlwZWRlZiBlbnVtIE5vZGVUYWcKIAlUX0luc2Vy dFN0bXQsCiAJVF9EZWxldGVTdG10LAogCVRfVXBkYXRlU3RtdCwKKwlUX01lcmdlU3RtdCwK IAlUX1NlbGVjdFN0bXQsCiAJVF9SZXR1cm5TdG10LAogCVRfUExBc3NpZ25TdG10LApAQCAt NDgxLDYgKzQ4NCw3IEBAIHR5cGVkZWYgZW51bSBOb2RlVGFnCiAJVF9DVEVTZWFyY2hDbGF1 c2UsCiAJVF9DVEVDeWNsZUNsYXVzZSwKIAlUX0NvbW1vblRhYmxlRXhwciwKKwlUX01lcmdl V2hlbkNsYXVzZSwKIAlUX1JvbGVTcGVjLAogCVRfVHJpZ2dlclRyYW5zaXRpb24sCiAJVF9Q YXJ0aXRpb25FbGVtLApAQCAtNjg2LDcgKzY5MCw4IEBAIHR5cGVkZWYgZW51bSBDbWRUeXBl CiAJQ01EX1NFTEVDVCwJCQkJCS8qIHNlbGVjdCBzdG10ICovCiAJQ01EX1VQREFURSwJCQkJ CS8qIHVwZGF0ZSBzdG10ICovCiAJQ01EX0lOU0VSVCwJCQkJCS8qIGluc2VydCBzdG10ICov Ci0JQ01EX0RFTEVURSwKKwlDTURfREVMRVRFLAkJCQkJLyogZGVsZXRlIHN0bXQgKi8KKwlD TURfTUVSR0UsCQkJCQkvKiBtZXJnZSBzdG10ICovCiAJQ01EX1VUSUxJVFksCQkJCS8qIGNt ZHMgbGlrZSBjcmVhdGUsIGRlc3Ryb3ksIGNvcHksIHZhY3V1bSwKIAkJCQkJCQkJICogZXRj LiAqLwogCUNNRF9OT1RISU5HCQkJCQkvKiBkdW1teSBjb21tYW5kIGZvciBpbnN0ZWFkIG5v dGhpbmcgcnVsZXMKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCAxNjE3NzAyZDlkLi42 MzQzOGJlN2M3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC00MCw3ICs0MCw3IEBA IHR5cGVkZWYgZW51bSBPdmVycmlkaW5nS2luZAogdHlwZWRlZiBlbnVtIFF1ZXJ5U291cmNl CiB7CiAJUVNSQ19PUklHSU5BTCwJCQkJLyogb3JpZ2luYWwgcGFyc2V0cmVlIChleHBsaWNp dCBxdWVyeSkgKi8KLQlRU1JDX1BBUlNFUiwJCQkJLyogYWRkZWQgYnkgcGFyc2UgYW5hbHlz aXMgKG5vdyB1bnVzZWQpICovCisJUVNSQ19QQVJTRVIsCQkJCS8qIGFkZGVkIGJ5IHBhcnNl IGFuYWx5c2lzIGluIE1FUkdFICovCiAJUVNSQ19JTlNURUFEX1JVTEUsCQkJLyogYWRkZWQg YnkgdW5jb25kaXRpb25hbCBJTlNURUFEIHJ1bGUgKi8KIAlRU1JDX1FVQUxfSU5TVEVBRF9S VUxFLAkJLyogYWRkZWQgYnkgY29uZGl0aW9uYWwgSU5TVEVBRCBydWxlICovCiAJUVNSQ19O T05fSU5TVEVBRF9SVUxFCQkvKiBhZGRlZCBieSBub24tSU5TVEVBRCBydWxlICovCkBAIC0x MTcsNyArMTE3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnkKIHsKIAlOb2RlVGFnCQl0eXBl OwogCi0JQ21kVHlwZQkJY29tbWFuZFR5cGU7CS8qIHNlbGVjdHxpbnNlcnR8dXBkYXRlfGRl bGV0ZXx1dGlsaXR5ICovCisJQ21kVHlwZQkJY29tbWFuZFR5cGU7CS8qIHNlbGVjdHxpbnNl cnR8dXBkYXRlfGRlbGV0ZXxtZXJnZXx1dGlsaXR5ICovCiAKIAlRdWVyeVNvdXJjZSBxdWVy eVNvdXJjZTsJLyogd2hlcmUgZGlkIEkgY29tZSBmcm9tPyAqLwogCkBAIC0xMjgsNyArMTI4 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnkKIAlOb2RlCSAgICp1dGlsaXR5U3RtdDsJLyog bm9uLW51bGwgaWYgY29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJVFkgKi8KIAogCWludAkJCXJl c3VsdFJlbGF0aW9uOyAvKiBydGFibGUgaW5kZXggb2YgdGFyZ2V0IHJlbGF0aW9uIGZvcgot CQkJCQkJCQkgKiBJTlNFUlQvVVBEQVRFL0RFTEVURTsgMCBmb3IgU0VMRUNUICovCisJCQkJ CQkJCSAqIElOU0VSVC9VUERBVEUvREVMRVRFL01FUkdFOyAwIGZvciBTRUxFQ1QgKi8KIAog CWJvb2wJCWhhc0FnZ3M7CQkvKiBoYXMgYWdncmVnYXRlcyBpbiB0bGlzdCBvciBoYXZpbmdR dWFsICovCiAJYm9vbAkJaGFzV2luZG93RnVuY3M7IC8qIGhhcyB3aW5kb3cgZnVuY3Rpb25z IGluIHRsaXN0ICovCkBAIC0xNDUsNyArMTQ1LDExIEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5 CiAJTGlzdAkgICAqY3RlTGlzdDsJCS8qIFdJVEggbGlzdCAob2YgQ29tbW9uVGFibGVFeHBy J3MpICovCiAKIAlMaXN0CSAgICpydGFibGU7CQkJLyogbGlzdCBvZiByYW5nZSB0YWJsZSBl bnRyaWVzICovCi0JRnJvbUV4cHIgICAqam9pbnRyZWU7CQkvKiB0YWJsZSBqb2luIHRyZWUg KEZST00gYW5kIFdIRVJFIGNsYXVzZXMpICovCisJRnJvbUV4cHIgICAqam9pbnRyZWU7CQkv KiB0YWJsZSBqb2luIHRyZWUgKEZST00gYW5kIFdIRVJFIGNsYXVzZXMpOworCQkJCQkJCQkg KiBhbHNvIFVTSU5HIGNsYXVzZSBmb3IgTUVSR0UgKi8KKworCUxpc3QJICAgKm1lcmdlQWN0 aW9uTGlzdDsJLyogbGlzdCBvZiBhY3Rpb25zIGZvciBNRVJHRSAob25seSkgKi8KKwlib29s CQltZXJnZVVzZU91dGVySm9pbjsJLyogd2hldGhlciB0byB1c2Ugb3V0ZXIgam9pbiAqLwog CiAJTGlzdAkgICAqdGFyZ2V0TGlzdDsJCS8qIHRhcmdldCBsaXN0IChvZiBUYXJnZXRFbnRy eSkgKi8KIApAQCAtMTIxOSw3ICsxMjIzLDkgQEAgdHlwZWRlZiBlbnVtIFdDT0tpbmQKIAlX Q09fVklFV19DSEVDSywJCQkJLyogV0NPIG9uIGFuIGF1dG8tdXBkYXRhYmxlIHZpZXcgKi8K IAlXQ09fUkxTX0lOU0VSVF9DSEVDSywJCS8qIFJMUyBJTlNFUlQgV0lUSCBDSEVDSyBwb2xp Y3kgKi8KIAlXQ09fUkxTX1VQREFURV9DSEVDSywJCS8qIFJMUyBVUERBVEUgV0lUSCBDSEVD SyBwb2xpY3kgKi8KLQlXQ09fUkxTX0NPTkZMSUNUX0NIRUNLCQkvKiBSTFMgT04gQ09ORkxJ Q1QgRE8gVVBEQVRFIFVTSU5HIHBvbGljeSAqLworCVdDT19STFNfQ09ORkxJQ1RfQ0hFQ0ss CQkvKiBSTFMgT04gQ09ORkxJQ1QgRE8gVVBEQVRFIFVTSU5HIHBvbGljeSAqLworCVdDT19S TFNfTUVSR0VfVVBEQVRFX0NIRUNLLCAvKiBSTFMgTUVSR0UgVVBEQVRFIFVTSU5HIHBvbGlj eSAqLworCVdDT19STFNfTUVSR0VfREVMRVRFX0NIRUNLCS8qIFJMUyBNRVJHRSBERUxFVEUg VVNJTkcgcG9saWN5ICovCiB9IFdDT0tpbmQ7CiAKIHR5cGVkZWYgc3RydWN0IFdpdGhDaGVj a09wdGlvbgpAQCAtMTYyOCw2ICsxNjM0LDQ3IEBAIHR5cGVkZWYgc3RydWN0IFVwZGF0ZVN0 bXQKIAlXaXRoQ2xhdXNlICp3aXRoQ2xhdXNlOwkJLyogV0lUSCBjbGF1c2UgKi8KIH0gVXBk YXRlU3RtdDsKIAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCU1lcmdlIFN0YXRl bWVudAorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit0eXBlZGVmIHN0cnVjdCBN ZXJnZVN0bXQKK3sKKwlOb2RlVGFnCQl0eXBlOworCVJhbmdlVmFyICAgKnJlbGF0aW9uOwkJ LyogdGFyZ2V0IHJlbGF0aW9uIHRvIG1lcmdlIGludG8gKi8KKwlOb2RlCSAgICpzb3VyY2Vf cmVsYXRpb247CS8qIHNvdXJjZSByZWxhdGlvbiAqLworCU5vZGUJICAgKmpvaW5fY29uZGl0 aW9uOyAvKiBqb2luIGNvbmRpdGlvbiBiZXR3ZWVuIHNvdXJjZSBhbmQgdGFyZ2V0ICovCisJ TGlzdAkgICAqbWVyZ2VXaGVuQ2xhdXNlczsJLyogbGlzdCBvZiBNZXJnZVdoZW5DbGF1c2Uo ZXMpICovCisJV2l0aENsYXVzZSAqd2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICovCit9 IE1lcmdlU3RtdDsKKwordHlwZWRlZiBzdHJ1Y3QgTWVyZ2VXaGVuQ2xhdXNlCit7CisJTm9k ZVRhZwkJdHlwZTsKKwlib29sCQltYXRjaGVkOwkJLyogdHJ1ZT1NQVRDSEVELCBmYWxzZT1O T1QgTUFUQ0hFRCAqLworCUNtZFR5cGUJCWNvbW1hbmRUeXBlOwkvKiBJTlNFUlQvVVBEQVRF L0RFTEVURS9ETyBOT1RISU5HICovCisJTm9kZQkgICAqY29uZGl0aW9uOwkJLyogV0hFTiBj b25kaXRpb25zIChyYXcgcGFyc2VyKSAqLworCUxpc3QJICAgKnRhcmdldExpc3Q7CQkvKiBJ TlNFUlQvVVBEQVRFIHRhcmdldGxpc3QgKi8KKwkvKiB0aGUgZm9sbG93aW5nIG1lbWJlcnMg YXJlIG9ubHkgdXNlZnVsIGZvciBJTlNFUlQgYWN0aW9uICovCisJTGlzdAkgICAqY29sczsJ CQkvKiBvcHRpb25hbDogbmFtZXMgb2YgdGhlIHRhcmdldCBjb2x1bW5zICovCisJTGlzdAkg ICAqdmFsdWVzOwkJCS8qIFZBTFVFUyB0byBJTlNFUlQsIG9yIE5VTEwgKi8KKwlPdmVycmlk aW5nS2luZCBvdmVycmlkZTsJLyogT1ZFUlJJRElORyBjbGF1c2UgKi8KK30gTWVyZ2VXaGVu Q2xhdXNlOworCisvKgorICogV0hFTiBbTk9UXSBNQVRDSEVEIFRIRU4gYWN0aW9uIGluZm8K KyAqLwordHlwZWRlZiBzdHJ1Y3QgTWVyZ2VBY3Rpb24KK3sKKwlOb2RlVGFnCQl0eXBlOwor CWJvb2wJCW1hdGNoZWQ7CQkvKiB0cnVlPU1BVENIRUQsIGZhbHNlPU5PVCBNQVRDSEVEICov CisJT3ZlcnJpZGluZ0tpbmQgb3ZlcnJpZGU7CS8qIE9WRVJSSURJTkcgY2xhdXNlICovCisJ Tm9kZQkgICAqcXVhbDsJCQkvKiB0cmFuc2Zvcm1lZCBXSEVOIGNvbmRpdGlvbnMgKi8KKwlD bWRUeXBlCQljb21tYW5kVHlwZTsJLyogSU5TRVJUL1VQREFURS9ERUxFVEUvRE8gTk9USElO RyAqLworCUxpc3QJICAgKnRhcmdldExpc3Q7CQkvKiB0aGUgdGFyZ2V0IGxpc3QgKG9mIFRh cmdldEVudHJ5KSAqLworCUxpc3QJICAgKnVwZGF0ZUNvbG5vczsJLyogdGFyZ2V0IGF0dHJp YnV0ZSBudW1iZXJzIG9mIGFuIFVQREFURSAqLworfSBNZXJnZUFjdGlvbjsKKwogLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCVNlbGVjdCBTdGF0ZW1lbnQKICAqCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVz L3BhdGhub2Rlcy5oCmluZGV4IDFmMzg0NWIzZmUuLjEwOTJjODc0MzQgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVz L3BhdGhub2Rlcy5oCkBAIC0xODc1LDcgKzE4NzUsNyBAQCB0eXBlZGVmIHN0cnVjdCBMb2Nr Um93c1BhdGgKIH0gTG9ja1Jvd3NQYXRoOwogCiAvKgotICogTW9kaWZ5VGFibGVQYXRoIHJl cHJlc2VudHMgcGVyZm9ybWluZyBJTlNFUlQvVVBEQVRFL0RFTEVURSBtb2RpZmljYXRpb25z CisgKiBNb2RpZnlUYWJsZVBhdGggcmVwcmVzZW50cyBwZXJmb3JtaW5nIElOU0VSVC9VUERB VEUvREVMRVRFL01FUkdFCiAgKgogICogV2UgcmVwcmVzZW50IG1vc3QgdGhpbmdzIHRoYXQg d2lsbCBiZSBpbiB0aGUgTW9kaWZ5VGFibGUgcGxhbiBub2RlCiAgKiBsaXRlcmFsbHksIGV4 Y2VwdCB3ZSBoYXZlIGEgY2hpbGQgUGF0aCBub3QgUGxhbi4gIEJ1dCBhbmFseXNpcyBvZiB0 aGUKQEAgLTE4ODUsNyArMTg4NSw3IEBAIHR5cGVkZWYgc3RydWN0IE1vZGlmeVRhYmxlUGF0 aAogewogCVBhdGgJCXBhdGg7CiAJUGF0aAkgICAqc3VicGF0aDsJCS8qIFBhdGggcHJvZHVj aW5nIHNvdXJjZSBkYXRhICovCi0JQ21kVHlwZQkJb3BlcmF0aW9uOwkJLyogSU5TRVJULCBV UERBVEUsIG9yIERFTEVURSAqLworCUNtZFR5cGUJCW9wZXJhdGlvbjsJCS8qIElOU0VSVCwg VVBEQVRFLCBERUxFVEUgb3IgTUVSR0UgKi8KIAlib29sCQljYW5TZXRUYWc7CQkvKiBkbyB3 ZSBzZXQgdGhlIGNvbW1hbmQgdGFnL2VzX3Byb2Nlc3NlZD8gKi8KIAlJbmRleAkJbm9taW5h bFJlbGF0aW9uOwkvKiBQYXJlbnQgUlQgaW5kZXggZm9yIHVzZSBvZiBFWFBMQUlOICovCiAJ SW5kZXgJCXJvb3RSZWxhdGlvbjsJLyogUm9vdCBSVCBpbmRleCwgaWYgdGFyZ2V0IGlzIHBh cnRpdGlvbmVkICovCkBAIC0xODk3LDYgKzE4OTcsOCBAQCB0eXBlZGVmIHN0cnVjdCBNb2Rp ZnlUYWJsZVBhdGgKIAlMaXN0CSAgICpyb3dNYXJrczsJCS8qIFBsYW5Sb3dNYXJrcyAobm9u LWxvY2tpbmcgb25seSkgKi8KIAlPbkNvbmZsaWN0RXhwciAqb25jb25mbGljdDsgLyogT04g Q09ORkxJQ1QgY2xhdXNlLCBvciBOVUxMICovCiAJaW50CQkJZXBxUGFyYW07CQkvKiBJRCBv ZiBQYXJhbSBmb3IgRXZhbFBsYW5RdWFsIHJlLWV2YWwgKi8KKwlMaXN0CSAgICptZXJnZUFj dGlvbkxpc3RzOwkvKiBwZXItdGFyZ2V0LXRhYmxlIGxpc3RzIG9mIGFjdGlvbnMgZm9yCisJ CQkJCQkJCQkgKiBNRVJHRSAqLwogfSBNb2RpZnlUYWJsZVBhdGg7CiAKIC8qCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVz L3BsYW5ub2Rlcy5oCmluZGV4IDBiNTE4Y2U2YjIuLmFhNzEyY2VhNzEgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVz L3BsYW5ub2Rlcy5oCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAibGliL3N0cmluZ2lu Zm8uaCIKICNpbmNsdWRlICJub2Rlcy9iaXRtYXBzZXQuaCIKICNpbmNsdWRlICJub2Rlcy9s b2Nrb3B0aW9ucy5oIgorI2luY2x1ZGUgIm5vZGVzL3BhcnNlbm9kZXMuaCIKICNpbmNsdWRl ICJub2Rlcy9wcmltbm9kZXMuaCIKIAogCkBAIC00Myw3ICs0NCw3IEBAIHR5cGVkZWYgc3Ry dWN0IFBsYW5uZWRTdG10CiB7CiAJTm9kZVRhZwkJdHlwZTsKIAotCUNtZFR5cGUJCWNvbW1h bmRUeXBlOwkvKiBzZWxlY3R8aW5zZXJ0fHVwZGF0ZXxkZWxldGV8dXRpbGl0eSAqLworCUNt ZFR5cGUJCWNvbW1hbmRUeXBlOwkvKiBzZWxlY3R8aW5zZXJ0fHVwZGF0ZXxkZWxldGV8bWVy Z2V8dXRpbGl0eSAqLwogCiAJdWludDY0CQlxdWVyeUlkOwkJLyogcXVlcnkgaWRlbnRpZmll ciAoY29waWVkIGZyb20gUXVlcnkpICovCiAKQEAgLTIxNyw3ICsyMTgsNyBAQCB0eXBlZGVm IHN0cnVjdCBQcm9qZWN0U2V0CiB0eXBlZGVmIHN0cnVjdCBNb2RpZnlUYWJsZQogewogCVBs YW4JCXBsYW47Ci0JQ21kVHlwZQkJb3BlcmF0aW9uOwkJLyogSU5TRVJULCBVUERBVEUsIG9y IERFTEVURSAqLworCUNtZFR5cGUJCW9wZXJhdGlvbjsJCS8qIElOU0VSVCwgVVBEQVRFLCBE RUxFVEUgb3IgTUVSR0UgKi8KIAlib29sCQljYW5TZXRUYWc7CQkvKiBkbyB3ZSBzZXQgdGhl IGNvbW1hbmQgdGFnL2VzX3Byb2Nlc3NlZD8gKi8KIAlJbmRleAkJbm9taW5hbFJlbGF0aW9u OwkvKiBQYXJlbnQgUlQgaW5kZXggZm9yIHVzZSBvZiBFWFBMQUlOICovCiAJSW5kZXgJCXJv b3RSZWxhdGlvbjsJLyogUm9vdCBSVCBpbmRleCwgaWYgdGFyZ2V0IGlzIHBhcnRpdGlvbmVk ICovCkBAIC0yMzcsNiArMjM4LDggQEAgdHlwZWRlZiBzdHJ1Y3QgTW9kaWZ5VGFibGUKIAlO b2RlCSAgICpvbkNvbmZsaWN0V2hlcmU7CS8qIFdIRVJFIGZvciBPTiBDT05GTElDVCBVUERB VEUgKi8KIAlJbmRleAkJZXhjbFJlbFJUSTsJCS8qIFJUSSBvZiB0aGUgRVhDTFVERUQgcHNl dWRvIHJlbGF0aW9uICovCiAJTGlzdAkgICAqZXhjbFJlbFRsaXN0OwkvKiB0bGlzdCBvZiB0 aGUgRVhDTFVERUQgcHNldWRvIHJlbGF0aW9uICovCisJTGlzdAkgICAqbWVyZ2VBY3Rpb25M aXN0czsJLyogcGVyLXRhcmdldC10YWJsZSBsaXN0cyBvZiBhY3Rpb25zIGZvcgorCQkJCQkJ CQkJICogTUVSR0UgKi8KIH0gTW9kaWZ5VGFibGU7CiAKIHN0cnVjdCBQYXJ0aXRpb25QcnVu ZUluZm87CQkvKiBmb3J3YXJkIHJlZmVyZW5jZSB0byBzdHJ1Y3QgYmVsb3cgKi8KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oIGIvc3JjL2luY2x1ZGUv b3B0aW1pemVyL3BhdGhub2RlLmgKaW5kZXggNjIwZWVkYTJkNi4uNmVjYTU0N2FmOCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKKysrIGIvc3JjL2lu Y2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKQEAgLTI3Niw3ICsyNzYsNyBAQCBleHRlcm4g TW9kaWZ5VGFibGVQYXRoICpjcmVhdGVfbW9kaWZ5dGFibGVfcGF0aChQbGFubmVySW5mbyAq cm9vdCwKIAkJCQkJCQkJCQkJCUxpc3QgKnVwZGF0ZUNvbG5vc0xpc3RzLAogCQkJCQkJCQkJ CQkJTGlzdCAqd2l0aENoZWNrT3B0aW9uTGlzdHMsIExpc3QgKnJldHVybmluZ0xpc3RzLAog CQkJCQkJCQkJCQkJTGlzdCAqcm93TWFya3MsIE9uQ29uZmxpY3RFeHByICpvbmNvbmZsaWN0 LAotCQkJCQkJCQkJCQkJaW50IGVwcVBhcmFtKTsKKwkJCQkJCQkJCQkJCUxpc3QgKm1lcmdl QWN0aW9uTGlzdHMsIGludCBlcHFQYXJhbSk7CiBleHRlcm4gTGltaXRQYXRoICpjcmVhdGVf bGltaXRfcGF0aChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQkJCQkJ CQkJUGF0aCAqc3VicGF0aCwKIAkJCQkJCQkJCU5vZGUgKmxpbWl0T2Zmc2V0LCBOb2RlICps aW1pdENvdW50LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3ByZXAuaCBi L3NyYy9pbmNsdWRlL29wdGltaXplci9wcmVwLmgKaW5kZXggMDA2YjRkMDJjMy4uMmIxMWZm MWQxZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3ByZXAuaAorKysgYi9z cmMvaW5jbHVkZS9vcHRpbWl6ZXIvcHJlcC5oCkBAIC0yMSw2ICsyMSw3IEBACiAvKgogICog cHJvdG90eXBlcyBmb3IgcHJlcGpvaW50cmVlLmMKICAqLworZXh0ZXJuIHZvaWQgdHJhbnNm b3JtX01FUkdFX3RvX2pvaW4oUXVlcnkgKnBhcnNlKTsKIGV4dGVybiB2b2lkIHJlcGxhY2Vf ZW1wdHlfam9pbnRyZWUoUXVlcnkgKnBhcnNlKTsKIGV4dGVybiB2b2lkIHB1bGxfdXBfc3Vi bGlua3MoUGxhbm5lckluZm8gKnJvb3QpOwogZXh0ZXJuIHZvaWQgcHJlcHJvY2Vzc19mdW5j dGlvbl9ydGVzKFBsYW5uZXJJbmZvICpyb290KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3BhcnNlci9hbmFseXplLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvYW5hbHl6ZS5oCmluZGV4 IGVkOTg5YmIxNDEuLjc2MzFmODRjMzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNl ci9hbmFseXplLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaApAQCAtMzQs NiArMzQsMTEgQEAgZXh0ZXJuIFF1ZXJ5ICpwYXJzZV9zdWJfYW5hbHl6ZShOb2RlICpwYXJz ZVRyZWUsIFBhcnNlU3RhdGUgKnBhcmVudFBhcnNlU3RhdGUsCiAJCQkJCQkJCWJvb2wgbG9j a2VkX2Zyb21fcGFyZW50LAogCQkJCQkJCQlib29sIHJlc29sdmVfdW5rbm93bnMpOwogCitl eHRlcm4gTGlzdCAqdHJhbnNmb3JtSW5zZXJ0Um93KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlz dCAqZXhwcmxpc3QsCisJCQkJCQkJCUxpc3QgKnN0bXRjb2xzLCBMaXN0ICppY29sdW1ucywg TGlzdCAqYXR0cm5vcywKKwkJCQkJCQkJYm9vbCBzdHJpcF9pbmRpcmVjdGlvbik7CitleHRl cm4gTGlzdCAqdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChQYXJzZVN0YXRlICpwc3RhdGUs CisJCQkJCQkJCQkgICBMaXN0ICp0YXJnZXRMaXN0KTsKIGV4dGVybiBRdWVyeSAqdHJhbnNm b3JtVG9wTGV2ZWxTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmF3U3RtdCAqcGFyc2VUcmVl KTsKIGV4dGVybiBRdWVyeSAqdHJhbnNmb3JtU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIE5v ZGUgKnBhcnNlVHJlZSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xp c3QuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCBiY2VmN2VlZDJmLi4y ZmExNjA0ZTcwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysr IGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC0yNTEsOCArMjUxLDEwIEBAIFBH X0tFWVdPUkQoImxvY2tlZCIsIExPQ0tFRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgibG9nZ2VkIiwgTE9HR0VELCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJtYXBwaW5nIiwgTUFQUElORywgVU5SRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgibWF0Y2giLCBNQVRDSCwgVU5S RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgibWF0Y2hlZCIsIE1B VENIRUQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoIm1h dGVyaWFsaXplZCIsIE1BVEVSSUFMSVpFRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgibWF4dmFsdWUiLCBNQVhWQUxVRSwgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgibWVyZ2UiLCBNRVJHRSwgVU5SRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgibWV0aG9kIiwgTUVUSE9ELCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJtaW51dGUiLCBN SU5VVEVfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBBU19MQUJFTCkKIFBHX0tFWVdPUkQoIm1p bnZhbHVlIiwgTUlOVkFMVUUsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9jbGF1c2UuaCBiL3NyYy9pbmNs dWRlL3BhcnNlci9wYXJzZV9jbGF1c2UuaAppbmRleCAyNDk1YzMwMDM0Li4wNDdjNDFjZDBi IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfY2xhdXNlLmgKKysrIGIv c3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2NsYXVzZS5oCkBAIC0xOSw3ICsxOSw5IEBACiBl eHRlcm4gdm9pZCB0cmFuc2Zvcm1Gcm9tQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlz dCAqZnJtTGlzdCk7CiBleHRlcm4gaW50CXNldFRhcmdldFRhYmxlKFBhcnNlU3RhdGUgKnBz dGF0ZSwgUmFuZ2VWYXIgKnJlbGF0aW9uLAogCQkJCQkJICAgYm9vbCBpbmgsIGJvb2wgYWxz b1NvdXJjZSwgQWNsTW9kZSByZXF1aXJlZFBlcm1zKTsKLQorZXh0ZXJuIE5vZGUgKnRyYW5z Zm9ybUZyb21DbGF1c2VJdGVtKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbiwKKwkJCQkJ CQkJCSBQYXJzZU5hbWVzcGFjZUl0ZW0gKip0b3BfbnNpdGVtLAorCQkJCQkJCQkJIExpc3Qg KipmbmFtZXNwYWNlKTsKIGV4dGVybiBOb2RlICp0cmFuc2Zvcm1XaGVyZUNsYXVzZShQYXJz ZVN0YXRlICpwc3RhdGUsIE5vZGUgKmNsYXVzZSwKIAkJCQkJCQkJICBQYXJzZUV4cHJLaW5k IGV4cHJLaW5kLCBjb25zdCBjaGFyICpjb25zdHJ1Y3ROYW1lKTsKIGV4dGVybiBOb2RlICp0 cmFuc2Zvcm1MaW1pdENsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmNsYXVzZSwK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9tZXJnZS5oIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL3BhcnNlX21lcmdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uMWExYmFhMWY0OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRl L3BhcnNlci9wYXJzZV9tZXJnZS5oCkBAIC0wLDAgKzEsMjEgQEAKKy8qLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICoKKyAqIHBhcnNlX21lcmdlLmgKKyAqCQloYW5kbGUgTUVSR0Ugc3RhdGVt ZW50IGluIHBhcnNlcgorICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYt MjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25z IENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxp Zm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX21lcmdlLmgKKyAqCisg Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBQQVJTRV9NRVJHRV9ICisjZGVm aW5lIFBBUlNFX01FUkdFX0gKKworI2luY2x1ZGUgInBhcnNlci9wYXJzZV9ub2RlLmgiCisK K2V4dGVybiBRdWVyeSAqdHJhbnNmb3JtTWVyZ2VTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwg TWVyZ2VTdG10ICpzdG10KTsKKworI2VuZGlmCQkJCQkJCS8qIFBBUlNFX01FUkdFX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggYi9zcmMvaW5j bHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCmluZGV4IDhjODU5ZDBkMGUuLmNmOWM3NTkwMjUg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIvc3Jj L2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaApAQCAtNTUsNiArNTUsNyBAQCB0eXBlZGVm IGVudW0gUGFyc2VFeHByS2luZAogCUVYUFJfS0lORF9JTlNFUlRfVEFSR0VULAkvKiBJTlNF UlQgdGFyZ2V0IGxpc3QgaXRlbSAqLwogCUVYUFJfS0lORF9VUERBVEVfU09VUkNFLAkvKiBV UERBVEUgYXNzaWdubWVudCBzb3VyY2UgaXRlbSAqLwogCUVYUFJfS0lORF9VUERBVEVfVEFS R0VULAkvKiBVUERBVEUgYXNzaWdubWVudCB0YXJnZXQgaXRlbSAqLworCUVYUFJfS0lORF9N RVJHRV9XSEVOLAkJLyogTUVSR0UgV0hFTiBbTk9UXSBNQVRDSEVEIGNvbmRpdGlvbiAqLwog CUVYUFJfS0lORF9HUk9VUF9CWSwJCQkvKiBHUk9VUCBCWSAqLwogCUVYUFJfS0lORF9PUkRF Ul9CWSwJCQkvKiBPUkRFUiBCWSAqLwogCUVYUFJfS0lORF9ESVNUSU5DVF9PTiwJCS8qIERJ U1RJTkNUIE9OICovCkBAIC0xMzUsNyArMTM2LDcgQEAgdHlwZWRlZiBOb2RlICooKkNvZXJj ZVBhcmFtSG9vaykgKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUGFyYW0gKnBhcmFtLAogICogcF9w YXJlbnRfY3RlOiBDb21tb25UYWJsZUV4cHIgdGhhdCBpbW1lZGlhdGVseSBjb250YWlucyB0 aGUgY3VycmVudCBxdWVyeSwKICAqIGlmIGFueS4KICAqCi0gKiBwX3RhcmdldF9yZWxhdGlv bjogdGFyZ2V0IHJlbGF0aW9uLCBpZiBxdWVyeSBpcyBJTlNFUlQsIFVQREFURSwgb3IgREVM RVRFLgorICogcF90YXJnZXRfcmVsYXRpb246IHRhcmdldCByZWxhdGlvbiwgaWYgcXVlcnkg aXMgSU5TRVJUL1VQREFURS9ERUxFVEUvTUVSR0UKICAqCiAgKiBwX3RhcmdldF9uc2l0ZW06 IHRhcmdldCByZWxhdGlvbidzIFBhcnNlTmFtZXNwYWNlSXRlbS4KICAqCkBAIC0xODksNyAr MTkwLDcgQEAgc3RydWN0IFBhcnNlU3RhdGUKIAlMaXN0CSAgICpwX2N0ZW5hbWVzcGFjZTsg LyogY3VycmVudCBuYW1lc3BhY2UgZm9yIGNvbW1vbiB0YWJsZSBleHBycyAqLwogCUxpc3QJ ICAgKnBfZnV0dXJlX2N0ZXM7CS8qIGNvbW1vbiB0YWJsZSBleHBycyBub3QgeWV0IGluIG5h bWVzcGFjZSAqLwogCUNvbW1vblRhYmxlRXhwciAqcF9wYXJlbnRfY3RlOwkvKiB0aGlzIHF1 ZXJ5J3MgY29udGFpbmluZyBDVEUgKi8KLQlSZWxhdGlvbglwX3RhcmdldF9yZWxhdGlvbjsJ LyogSU5TRVJUL1VQREFURS9ERUxFVEUgdGFyZ2V0IHJlbCAqLworCVJlbGF0aW9uCXBfdGFy Z2V0X3JlbGF0aW9uOwkvKiBJTlNFUlQvVVBEQVRFL0RFTEVURS9NRVJHRSB0YXJnZXQgcmVs ICovCiAJUGFyc2VOYW1lc3BhY2VJdGVtICpwX3RhcmdldF9uc2l0ZW07CS8qIHRhcmdldCBy ZWwncyBOU0l0ZW0sIG9yIE5VTEwgKi8KIAlib29sCQlwX2lzX2luc2VydDsJLyogcHJvY2Vz cyBhc3NpZ25tZW50IGxpa2UgSU5TRVJUIG5vdCBVUERBVEUgKi8KIAlMaXN0CSAgICpwX3dp bmRvd2RlZnM7CS8qIHJhdyByZXByZXNlbnRhdGlvbnMgb2Ygd2luZG93IGNsYXVzZXMgKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5oIGIvc3Jj L2luY2x1ZGUvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgKaW5kZXggMDZkYzI3OTk1Yi4uZGUy MWMzYzY0OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3JlbGF0aW9u LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgKQEAgLTExMyw3 ICsxMTMsOCBAQCBleHRlcm4gTGlzdCAqZXhwYW5kTlNJdGVtVmFycyhQYXJzZU5hbWVzcGFj ZUl0ZW0gKm5zaXRlbSwKIAkJCQkJCQkgIGludCBzdWJsZXZlbHNfdXAsIGludCBsb2NhdGlv biwKIAkJCQkJCQkgIExpc3QgKipjb2xuYW1lcyk7CiBleHRlcm4gTGlzdCAqZXhwYW5kTlNJ dGVtQXR0cnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRl bSwKLQkJCQkJCQkgICBpbnQgc3VibGV2ZWxzX3VwLCBpbnQgbG9jYXRpb24pOworCQkJCQkJ CSAgIGludCBzdWJsZXZlbHNfdXAsIGJvb2wgcmVxdWlyZV9jb2xfcHJpdnMsCisJCQkJCQkJ ICAgaW50IGxvY2F0aW9uKTsKIGV4dGVybiBpbnQJYXR0bmFtZUF0dE51bShSZWxhdGlvbiBy ZCwgY29uc3QgY2hhciAqYXR0bmFtZSwgYm9vbCBzeXNDb2xPSyk7CiBleHRlcm4gY29uc3Qg TmFtZURhdGEgKmF0dG51bUF0dE5hbWUoUmVsYXRpb24gcmQsIGludCBhdHRpZCk7CiBleHRl cm4gT2lkCWF0dG51bVR5cGVJZChSZWxhdGlvbiByZCwgaW50IGF0dGlkKTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5oIGIvc3JjL2luY2x1ZGUvdGNvcC9j bWR0YWdsaXN0LmgKaW5kZXggNGJjN2RkZjQxMC4uMmIxMTYzY2UzMyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvdGNvcC9j bWR0YWdsaXN0LmgKQEAgLTE4Niw2ICsxODYsNyBAQCBQR19DTURUQUcoQ01EVEFHX0lOU0VS VCwgIklOU0VSVCIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKIFBHX0NNRFRBRyhDTURUQUdfTElT VEVOLCAiTElTVEVOIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdf TE9BRCwgIkxPQUQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19M T0NLX1RBQkxFLCAiTE9DSyBUQUJMRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURU QUcoQ01EVEFHX01FUkdFLCAiTUVSR0UiLCBmYWxzZSwgZmFsc2UsIHRydWUpCiBQR19DTURU QUcoQ01EVEFHX01PVkUsICJNT1ZFIiwgZmFsc2UsIGZhbHNlLCB0cnVlKQogUEdfQ01EVEFH KENNRFRBR19OT1RJRlksICJOT1RJRlkiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01E VEFHKENNRFRBR19QUkVQQVJFLCAiUFJFUEFSRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCmRp ZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1leGVjLmMgYi9zcmMvaW50ZXJm YWNlcy9saWJwcS9mZS1leGVjLmMKaW5kZXggMGMzOWJjOWFiZi4uNzhjZmY0NDc1YyAxMDA2 NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZXhlYy5jCisrKyBiL3NyYy9pbnRl cmZhY2VzL2xpYnBxL2ZlLWV4ZWMuYwpAQCAtMzY3MCw5ICszNjcwLDkgQEAgUFFvaWRWYWx1 ZShjb25zdCBQR3Jlc3VsdCAqcmVzKQogCiAvKgogICogUFFjbWRUdXBsZXMgLQotICoJSWYg dGhlIGxhc3QgY29tbWFuZCB3YXMgSU5TRVJUL1VQREFURS9ERUxFVEUvTU9WRS9GRVRDSC9D T1BZLCByZXR1cm4KLSAqCWEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBpbnNl cnRlZC9hZmZlY3RlZCB0dXBsZXMuIElmIG5vdCwKLSAqCXJldHVybiAiIi4KKyAqCUlmIHRo ZSBsYXN0IGNvbW1hbmQgd2FzIElOU0VSVC9VUERBVEUvREVMRVRFL01FUkdFL01PVkUvRkVU Q0gvQ09QWSwKKyAqCXJldHVybiBhIHN0cmluZyBjb250YWluaW5nIHRoZSBudW1iZXIgb2Yg aW5zZXJ0ZWQvYWZmZWN0ZWQgdHVwbGVzLgorICoJSWYgbm90LCByZXR1cm4gIiIuCiAgKgog ICoJWFhYOiB0aGlzIHNob3VsZCBwcm9iYWJseSByZXR1cm4gYW4gaW50CiAgKi8KQEAgLTM2 OTksNyArMzY5OSw4IEBAIFBRY21kVHVwbGVzKFBHcmVzdWx0ICpyZXMpCiAJCQkgc3RybmNt cChyZXMtPmNtZFN0YXR1cywgIkRFTEVURSAiLCA3KSA9PSAwIHx8CiAJCQkgc3RybmNtcChy ZXMtPmNtZFN0YXR1cywgIlVQREFURSAiLCA3KSA9PSAwKQogCQlwID0gcmVzLT5jbWRTdGF0 dXMgKyA3OwotCWVsc2UgaWYgKHN0cm5jbXAocmVzLT5jbWRTdGF0dXMsICJGRVRDSCAiLCA2 KSA9PSAwKQorCWVsc2UgaWYgKHN0cm5jbXAocmVzLT5jbWRTdGF0dXMsICJGRVRDSCAiLCA2 KSA9PSAwIHx8CisJCQkgc3RybmNtcChyZXMtPmNtZFN0YXR1cywgIk1FUkdFICIsIDYpID09 IDApCiAJCXAgPSByZXMtPmNtZFN0YXR1cyArIDY7CiAJZWxzZSBpZiAoc3RybmNtcChyZXMt PmNtZFN0YXR1cywgIk1PVkUgIiwgNSkgPT0gMCB8fAogCQkJIHN0cm5jbXAocmVzLT5jbWRT dGF0dXMsICJDT1BZICIsIDUpID09IDApCmRpZmYgLS1naXQgYS9zcmMvcGwvcGxwZ3NxbC9z cmMvcGxfZXhlYy5jIGIvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYwppbmRleCA5MTUx MzkzNzhlLi4wMDMyOGZkZGNmIDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxf ZXhlYy5jCisrKyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMKQEAgLTQxOTQsNyAr NDE5NCw3IEBAIGV4ZWNfc3RtdF9leGVjc3FsKFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUs CiAKIAkvKgogCSAqIE9uIHRoZSBmaXJzdCBjYWxsIGZvciB0aGlzIHN0YXRlbWVudCBnZW5l cmF0ZSB0aGUgcGxhbiwgYW5kIGRldGVjdAotCSAqIHdoZXRoZXIgdGhlIHN0YXRlbWVudCBp cyBJTlNFUlQvVVBEQVRFL0RFTEVURQorCSAqIHdoZXRoZXIgdGhlIHN0YXRlbWVudCBpcyBJ TlNFUlQvVVBEQVRFL0RFTEVURS9NRVJHRQogCSAqLwogCWlmIChleHByLT5wbGFuID09IE5V TEwpCiAJCWV4ZWNfcHJlcGFyZV9wbGFuKGVzdGF0ZSwgZXhwciwgQ1VSU09SX09QVF9QQVJB TExFTF9PSyk7CkBAIC00MjE2LDcgKzQyMTYsOCBAQCBleGVjX3N0bXRfZXhlY3NxbChQTHBn U1FMX2V4ZWNzdGF0ZSAqZXN0YXRlLAogCQkJICovCiAJCQlpZiAocGxhbnNvdXJjZS0+Y29t bWFuZFRhZyA9PSBDTURUQUdfSU5TRVJUIHx8CiAJCQkJcGxhbnNvdXJjZS0+Y29tbWFuZFRh ZyA9PSBDTURUQUdfVVBEQVRFIHx8Ci0JCQkJcGxhbnNvdXJjZS0+Y29tbWFuZFRhZyA9PSBD TURUQUdfREVMRVRFKQorCQkJCXBsYW5zb3VyY2UtPmNvbW1hbmRUYWcgPT0gQ01EVEFHX0RF TEVURSB8fAorCQkJCXBsYW5zb3VyY2UtPmNvbW1hbmRUYWcgPT0gQ01EVEFHX01FUkdFKQog CQkJewogCQkJCXN0bXQtPm1vZF9zdG10ID0gdHJ1ZTsKIAkJCQlicmVhazsKQEAgLTQyNzYs NiArNDI3Nyw3IEBAIGV4ZWNfc3RtdF9leGVjc3FsKFBMcGdTUUxfZXhlY3N0YXRlICplc3Rh dGUsCiAJCWNhc2UgU1BJX09LX0lOU0VSVF9SRVRVUk5JTkc6CiAJCWNhc2UgU1BJX09LX1VQ REFURV9SRVRVUk5JTkc6CiAJCWNhc2UgU1BJX09LX0RFTEVURV9SRVRVUk5JTkc6CisJCWNh c2UgU1BJX09LX01FUkdFOgogCQkJQXNzZXJ0KHN0bXQtPm1vZF9zdG10KTsKIAkJCWV4ZWNf c2V0X2ZvdW5kKGVzdGF0ZSwgKFNQSV9wcm9jZXNzZWQgIT0gMCkpOwogCQkJYnJlYWs7CkBA IC00NDU3LDYgKzQ0NTksNyBAQCBleGVjX3N0bXRfZHluZXhlY3V0ZShQTHBnU1FMX2V4ZWNz dGF0ZSAqZXN0YXRlLAogCQljYXNlIFNQSV9PS19JTlNFUlRfUkVUVVJOSU5HOgogCQljYXNl IFNQSV9PS19VUERBVEVfUkVUVVJOSU5HOgogCQljYXNlIFNQSV9PS19ERUxFVEVfUkVUVVJO SU5HOgorCQljYXNlIFNQSV9PS19NRVJHRToKIAkJY2FzZSBTUElfT0tfVVRJTElUWToKIAkJ Y2FzZSBTUElfT0tfUkVXUklUVEVOOgogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvcGwv cGxwZ3NxbC9zcmMvcGxfZ3JhbS55IGIvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2dyYW0ueQpp bmRleCA5NTRjMmRmMzMxLi4xMWU4NmMxNjA5IDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZ3Nx bC9zcmMvcGxfZ3JhbS55CisrKyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9ncmFtLnkKQEAg LTMwNiw2ICszMDYsNyBAQCBzdGF0aWMJdm9pZAkJCWNoZWNrX3JhaXNlX3BhcmFtZXRlcnMo UExwZ1NRTF9zdG10X3JhaXNlICpzdG10KTsKICV0b2tlbiA8a2V5d29yZD4JS19MQVNUCiAl dG9rZW4gPGtleXdvcmQ+CUtfTE9HCiAldG9rZW4gPGtleXdvcmQ+CUtfTE9PUAorJXRva2Vu IDxrZXl3b3JkPglLX01FUkdFCiAldG9rZW4gPGtleXdvcmQ+CUtfTUVTU0FHRQogJXRva2Vu IDxrZXl3b3JkPglLX01FU1NBR0VfVEVYVAogJXRva2VuIDxrZXl3b3JkPglLX01PVkUKQEAg LTIwMDAsNiArMjAwMSwxMCBAQCBzdG10X2V4ZWNzcWwJOiBLX0lNUE9SVAogCQkJCQl7CiAJ CQkJCQkkJCA9IG1ha2VfZXhlY3NxbF9zdG10KEtfSU5TRVJULCBAMSk7CiAJCQkJCX0KKwkJ CQl8IEtfTUVSR0UKKwkJCQkJeworCQkJCQkJJCQgPSBtYWtlX2V4ZWNzcWxfc3RtdChLX01F UkdFLCBAMSk7CisJCQkJCX0KIAkJCQl8IFRfV09SRAogCQkJCQl7CiAJCQkJCQlpbnQJCQl0 b2s7CkBAIC0yNTM3LDYgKzI1NDIsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQJOgogCQkJCXwg S19JUwogCQkJCXwgS19MQVNUCiAJCQkJfCBLX0xPRworCQkJCXwgS19NRVJHRQogCQkJCXwg S19NRVNTQUdFCiAJCQkJfCBLX01FU1NBR0VfVEVYVAogCQkJCXwgS19NT1ZFCkBAIC0zMDAw LDYgKzMwMDYsOCBAQCBtYWtlX2V4ZWNzcWxfc3RtdChpbnQgZmlyc3R0b2tlbiwgaW50IGxv Y2F0aW9uKQogCQl7CiAJCQlpZiAocHJldl90b2sgPT0gS19JTlNFUlQpCiAJCQkJY29udGlu dWU7CQkvKiBJTlNFUlQgSU5UTyBpcyBub3QgYW4gSU5UTy10YXJnZXQgKi8KKwkJCWlmIChw cmV2X3RvayA9PSBLX01FUkdFKQorCQkJCWNvbnRpbnVlOwkJLyogTUVSR0UgSU5UTyBpcyBu b3QgYW4gSU5UTy10YXJnZXQgKi8KIAkJCWlmIChmaXJzdHRva2VuID09IEtfSU1QT1JUKQog CQkJCWNvbnRpbnVlOwkJLyogSU1QT1JUIC4uLiBJTlRPIGlzIG5vdCBhbiBJTlRPLXRhcmdl dCAqLwogCQkJaWYgKGhhdmVfaW50bykKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3FsL3Ny Yy9wbF91bnJlc2VydmVkX2t3bGlzdC5oIGIvc3JjL3BsL3BscGdzcWwvc3JjL3BsX3VucmVz ZXJ2ZWRfa3dsaXN0LmgKaW5kZXggMWM2ODQyMDMzMS4uZWUyYmUxYjIxMiAxMDA2NDQKLS0t IGEvc3JjL3BsL3BscGdzcWwvc3JjL3BsX3VucmVzZXJ2ZWRfa3dsaXN0LmgKKysrIGIvc3Jj L3BsL3BscGdzcWwvc3JjL3BsX3VucmVzZXJ2ZWRfa3dsaXN0LmgKQEAgLTcwLDYgKzcwLDcg QEAgUEdfS0VZV09SRCgiaW5zZXJ0IiwgS19JTlNFUlQpCiBQR19LRVlXT1JEKCJpcyIsIEtf SVMpCiBQR19LRVlXT1JEKCJsYXN0IiwgS19MQVNUKQogUEdfS0VZV09SRCgibG9nIiwgS19M T0cpCitQR19LRVlXT1JEKCJtZXJnZSIsIEtfTUVSR0UpCiBQR19LRVlXT1JEKCJtZXNzYWdl IiwgS19NRVNTQUdFKQogUEdfS0VZV09SRCgibWVzc2FnZV90ZXh0IiwgS19NRVNTQUdFX1RF WFQpCiBQR19LRVlXT1JEKCJtb3ZlIiwgS19NT1ZFKQpkaWZmIC0tZ2l0IGEvc3JjL3BsL3Bs cGdzcWwvc3JjL3BscGdzcWwuaCBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbHBnc3FsLmgKaW5k ZXggMThhNGY2YzdkMy4uODEzYzMyYzcwZiAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscGdzcWwv c3JjL3BscGdzcWwuaAorKysgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxwZ3NxbC5oCkBAIC04 OTMsNyArODkzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUExwZ1NRTF9zdG10X2V4ZWNzcWwKIAlp bnQJCQlsaW5lbm87CiAJdW5zaWduZWQgaW50IHN0bXRpZDsKIAlQTHBnU1FMX2V4cHIgKnNx bHN0bXQ7Ci0JYm9vbAkJbW9kX3N0bXQ7CQkvKiBpcyB0aGUgc3RtdCBJTlNFUlQvVVBEQVRF L0RFTEVURT8gKi8KKwlib29sCQltb2Rfc3RtdDsJCS8qIGlzIHRoZSBzdG10IElOU0VSVC9V UERBVEUvREVMRVRFL01FUkdFPyAqLwogCWJvb2wJCW1vZF9zdG10X3NldDsJLyogaXMgbW9k X3N0bXQgdmFsaWQgeWV0PyAqLwogCWJvb2wJCWludG87CQkJLyogSU5UTyBzdXBwbGllZD8g Ki8KIAlib29sCQlzdHJpY3Q7CQkJLyogSU5UTyBTVFJJQ1QgZmxhZyAqLwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL21lcmdlLWRlbGV0ZS5vdXQgYi9zcmMv dGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvbWVyZ2UtZGVsZXRlLm91dApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5iMmJlZmE4ZTE2Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL21lcmdlLWRlbGV0ZS5vdXQKQEAgLTAs MCArMSwxMTcgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25zCisKK3N0YXJ0 aW5nIHBlcm11dGF0aW9uOiBkZWxldGUgYzEgc2VsZWN0MiBjMgorc3RlcCBkZWxldGU6IERF TEVURSBGUk9NIHRhcmdldCB0IFdIRVJFIHQua2V5ID0gMTsKK3N0ZXAgYzE6IENPTU1JVDsK K3N0ZXAgc2VsZWN0MjogU0VMRUNUICogRlJPTSB0YXJnZXQ7CitrZXl8dmFsCistLS0rLS0t CisoMCByb3dzKQorCitzdGVwIGMyOiBDT01NSVQ7CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9u OiBtZXJnZV9kZWxldGUgYzEgc2VsZWN0MiBjMgorc3RlcCBtZXJnZV9kZWxldGU6IE1FUkdF IElOVE8gdGFyZ2V0IHQgVVNJTkcgKFNFTEVDVCAxIGFzIGtleSkgcyBPTiBzLmtleSA9IHQu a2V5IFdIRU4gTUFUQ0hFRCBUSEVOIERFTEVURTsKK3N0ZXAgYzE6IENPTU1JVDsKK3N0ZXAg c2VsZWN0MjogU0VMRUNUICogRlJPTSB0YXJnZXQ7CitrZXl8dmFsCistLS0rLS0tCisoMCBy b3dzKQorCitzdGVwIGMyOiBDT01NSVQ7CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBkZWxl dGUgYzEgdXBkYXRlMSBzZWxlY3QyIGMyCitzdGVwIGRlbGV0ZTogREVMRVRFIEZST00gdGFy Z2V0IHQgV0hFUkUgdC5rZXkgPSAxOworc3RlcCBjMTogQ09NTUlUOworc3RlcCB1cGRhdGUx OiBVUERBVEUgdGFyZ2V0IHQgU0VUIHZhbCA9IHQudmFsIHx8ICcgdXBkYXRlZCBieSB1cGRh dGUxJyBXSEVSRSB0LmtleSA9IDE7CitzdGVwIHNlbGVjdDI6IFNFTEVDVCAqIEZST00gdGFy Z2V0Owora2V5fHZhbAorLS0tKy0tLQorKDAgcm93cykKKworc3RlcCBjMjogQ09NTUlUOwor CitzdGFydGluZyBwZXJtdXRhdGlvbjogbWVyZ2VfZGVsZXRlIGMxIHVwZGF0ZTEgc2VsZWN0 MiBjMgorc3RlcCBtZXJnZV9kZWxldGU6IE1FUkdFIElOVE8gdGFyZ2V0IHQgVVNJTkcgKFNF TEVDVCAxIGFzIGtleSkgcyBPTiBzLmtleSA9IHQua2V5IFdIRU4gTUFUQ0hFRCBUSEVOIERF TEVURTsKK3N0ZXAgYzE6IENPTU1JVDsKK3N0ZXAgdXBkYXRlMTogVVBEQVRFIHRhcmdldCB0 IFNFVCB2YWwgPSB0LnZhbCB8fCAnIHVwZGF0ZWQgYnkgdXBkYXRlMScgV0hFUkUgdC5rZXkg PSAxOworc3RlcCBzZWxlY3QyOiBTRUxFQ1QgKiBGUk9NIHRhcmdldDsKK2tleXx2YWwKKy0t LSstLS0KKygwIHJvd3MpCisKK3N0ZXAgYzI6IENPTU1JVDsKKworc3RhcnRpbmcgcGVybXV0 YXRpb246IGRlbGV0ZSBjMSBtZXJnZTIgc2VsZWN0MiBjMgorc3RlcCBkZWxldGU6IERFTEVU RSBGUk9NIHRhcmdldCB0IFdIRVJFIHQua2V5ID0gMTsKK3N0ZXAgYzE6IENPTU1JVDsKK3N0 ZXAgbWVyZ2UyOiBNRVJHRSBJTlRPIHRhcmdldCB0IFVTSU5HIChTRUxFQ1QgMSBhcyBrZXks ICdtZXJnZTJhJyBhcyB2YWwpIHMgT04gcy5rZXkgPSB0LmtleSBXSEVOIE5PVCBNQVRDSEVE IFRIRU4gSU5TRVJUIFZBTFVFUyAocy5rZXksIHMudmFsKSBXSEVOIE1BVENIRUQgVEhFTiBV UERBVEUgc2V0IGtleSA9IHQua2V5ICsgMSwgdmFsID0gdC52YWwgfHwgJyB1cGRhdGVkIGJ5 ICcgfHwgcy52YWw7CitzdGVwIHNlbGVjdDI6IFNFTEVDVCAqIEZST00gdGFyZ2V0Owora2V5 fHZhbCAgICAKKy0tLSstLS0tLS0tCisgIDF8bWVyZ2UyYQorKDEgcm93KQorCitzdGVwIGMy OiBDT01NSVQ7CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBtZXJnZV9kZWxldGUgYzEgbWVy Z2UyIHNlbGVjdDIgYzIKK3N0ZXAgbWVyZ2VfZGVsZXRlOiBNRVJHRSBJTlRPIHRhcmdldCB0 IFVTSU5HIChTRUxFQ1QgMSBhcyBrZXkpIHMgT04gcy5rZXkgPSB0LmtleSBXSEVOIE1BVENI RUQgVEhFTiBERUxFVEU7CitzdGVwIGMxOiBDT01NSVQ7CitzdGVwIG1lcmdlMjogTUVSR0Ug SU5UTyB0YXJnZXQgdCBVU0lORyAoU0VMRUNUIDEgYXMga2V5LCAnbWVyZ2UyYScgYXMgdmFs KSBzIE9OIHMua2V5ID0gdC5rZXkgV0hFTiBOT1QgTUFUQ0hFRCBUSEVOIElOU0VSVCBWQUxV RVMgKHMua2V5LCBzLnZhbCkgV0hFTiBNQVRDSEVEIFRIRU4gVVBEQVRFIHNldCBrZXkgPSB0 LmtleSArIDEsIHZhbCA9IHQudmFsIHx8ICcgdXBkYXRlZCBieSAnIHx8IHMudmFsOworc3Rl cCBzZWxlY3QyOiBTRUxFQ1QgKiBGUk9NIHRhcmdldDsKK2tleXx2YWwgICAgCistLS0rLS0t LS0tLQorICAxfG1lcmdlMmEKKygxIHJvdykKKworc3RlcCBjMjogQ09NTUlUOworCitzdGFy dGluZyBwZXJtdXRhdGlvbjogZGVsZXRlIHVwZGF0ZTEgYzEgc2VsZWN0MiBjMgorc3RlcCBk ZWxldGU6IERFTEVURSBGUk9NIHRhcmdldCB0IFdIRVJFIHQua2V5ID0gMTsKK3N0ZXAgdXBk YXRlMTogVVBEQVRFIHRhcmdldCB0IFNFVCB2YWwgPSB0LnZhbCB8fCAnIHVwZGF0ZWQgYnkg dXBkYXRlMScgV0hFUkUgdC5rZXkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIGMxOiBDT01N SVQ7CitzdGVwIHVwZGF0ZTE6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzZWxlY3QyOiBTRUxF Q1QgKiBGUk9NIHRhcmdldDsKK2tleXx2YWwKKy0tLSstLS0KKygwIHJvd3MpCisKK3N0ZXAg YzI6IENPTU1JVDsKKworc3RhcnRpbmcgcGVybXV0YXRpb246IG1lcmdlX2RlbGV0ZSB1cGRh dGUxIGMxIHNlbGVjdDIgYzIKK3N0ZXAgbWVyZ2VfZGVsZXRlOiBNRVJHRSBJTlRPIHRhcmdl dCB0IFVTSU5HIChTRUxFQ1QgMSBhcyBrZXkpIHMgT04gcy5rZXkgPSB0LmtleSBXSEVOIE1B VENIRUQgVEhFTiBERUxFVEU7CitzdGVwIHVwZGF0ZTE6IFVQREFURSB0YXJnZXQgdCBTRVQg dmFsID0gdC52YWwgfHwgJyB1cGRhdGVkIGJ5IHVwZGF0ZTEnIFdIRVJFIHQua2V5ID0gMTsg PHdhaXRpbmcgLi4uPgorc3RlcCBjMTogQ09NTUlUOworc3RlcCB1cGRhdGUxOiA8Li4uIGNv bXBsZXRlZD4KK3N0ZXAgc2VsZWN0MjogU0VMRUNUICogRlJPTSB0YXJnZXQ7CitrZXl8dmFs CistLS0rLS0tCisoMCByb3dzKQorCitzdGVwIGMyOiBDT01NSVQ7CisKK3N0YXJ0aW5nIHBl cm11dGF0aW9uOiBkZWxldGUgbWVyZ2UyIGMxIHNlbGVjdDIgYzIKK3N0ZXAgZGVsZXRlOiBE RUxFVEUgRlJPTSB0YXJnZXQgdCBXSEVSRSB0LmtleSA9IDE7CitzdGVwIG1lcmdlMjogTUVS R0UgSU5UTyB0YXJnZXQgdCBVU0lORyAoU0VMRUNUIDEgYXMga2V5LCAnbWVyZ2UyYScgYXMg dmFsKSBzIE9OIHMua2V5ID0gdC5rZXkgV0hFTiBOT1QgTUFUQ0hFRCBUSEVOIElOU0VSVCBW QUxVRVMgKHMua2V5LCBzLnZhbCkgV0hFTiBNQVRDSEVEIFRIRU4gVVBEQVRFIHNldCBrZXkg PSB0LmtleSArIDEsIHZhbCA9IHQudmFsIHx8ICcgdXBkYXRlZCBieSAnIHx8IHMudmFsOyA8 d2FpdGluZyAuLi4+CitzdGVwIGMxOiBDT01NSVQ7CitzdGVwIG1lcmdlMjogPC4uLiBjb21w bGV0ZWQ+CitzdGVwIHNlbGVjdDI6IFNFTEVDVCAqIEZST00gdGFyZ2V0Owora2V5fHZhbCAg ICAKKy0tLSstLS0tLS0tCisgIDF8bWVyZ2UyYQorKDEgcm93KQorCitzdGVwIGMyOiBDT01N SVQ7CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBtZXJnZV9kZWxldGUgbWVyZ2UyIGMxIHNl bGVjdDIgYzIKK3N0ZXAgbWVyZ2VfZGVsZXRlOiBNRVJHRSBJTlRPIHRhcmdldCB0IFVTSU5H IChTRUxFQ1QgMSBhcyBrZXkpIHMgT04gcy5rZXkgPSB0LmtleSBXSEVOIE1BVENIRUQgVEhF TiBERUxFVEU7CitzdGVwIG1lcmdlMjogTUVSR0UgSU5UTyB0YXJnZXQgdCBVU0lORyAoU0VM RUNUIDEgYXMga2V5LCAnbWVyZ2UyYScgYXMgdmFsKSBzIE9OIHMua2V5ID0gdC5rZXkgV0hF TiBOT1QgTUFUQ0hFRCBUSEVOIElOU0VSVCBWQUxVRVMgKHMua2V5LCBzLnZhbCkgV0hFTiBN QVRDSEVEIFRIRU4gVVBEQVRFIHNldCBrZXkgPSB0LmtleSArIDEsIHZhbCA9IHQudmFsIHx8 ICcgdXBkYXRlZCBieSAnIHx8IHMudmFsOyA8d2FpdGluZyAuLi4+CitzdGVwIGMxOiBDT01N SVQ7CitzdGVwIG1lcmdlMjogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHNlbGVjdDI6IFNFTEVD VCAqIEZST00gdGFyZ2V0Owora2V5fHZhbCAgICAKKy0tLSstLS0tLS0tCisgIDF8bWVyZ2Uy YQorKDEgcm93KQorCitzdGVwIGMyOiBDT01NSVQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9p c29sYXRpb24vZXhwZWN0ZWQvbWVyZ2UtaW5zZXJ0LXVwZGF0ZS5vdXQgYi9zcmMvdGVzdC9p c29sYXRpb24vZXhwZWN0ZWQvbWVyZ2UtaW5zZXJ0LXVwZGF0ZS5vdXQKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZWU4YjNjNGU5ZgotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9tZXJnZS1pbnNlcnQtdXBkYXRlLm91 dApAQCAtMCwwICsxLDk0IEBACitQYXJzZWQgdGVzdCBzcGVjIHdpdGggMiBzZXNzaW9ucwor CitzdGFydGluZyBwZXJtdXRhdGlvbjogbWVyZ2UxIGMxIHNlbGVjdDIgYzIKK3N0ZXAgbWVy Z2UxOiBNRVJHRSBJTlRPIHRhcmdldCB0IFVTSU5HIChTRUxFQ1QgMSBhcyBrZXksICdtZXJn ZTEnIGFzIHZhbCkgcyBPTiBzLmtleSA9IHQua2V5IFdIRU4gTk9UIE1BVENIRUQgVEhFTiBJ TlNFUlQgVkFMVUVTIChzLmtleSwgcy52YWwpIFdIRU4gTUFUQ0hFRCBUSEVOIFVQREFURSBz ZXQgdmFsID0gdC52YWwgfHwgJyB1cGRhdGVkIGJ5IG1lcmdlMSc7CitzdGVwIGMxOiBDT01N SVQ7CitzdGVwIHNlbGVjdDI6IFNFTEVDVCAqIEZST00gdGFyZ2V0Owora2V5fHZhbCAgIAor LS0tKy0tLS0tLQorICAxfG1lcmdlMQorKDEgcm93KQorCitzdGVwIGMyOiBDT01NSVQ7CisK K3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBtZXJnZTEgYzEgbWVyZ2UyIHNlbGVjdDIgYzIKK3N0 ZXAgbWVyZ2UxOiBNRVJHRSBJTlRPIHRhcmdldCB0IFVTSU5HIChTRUxFQ1QgMSBhcyBrZXks ICdtZXJnZTEnIGFzIHZhbCkgcyBPTiBzLmtleSA9IHQua2V5IFdIRU4gTk9UIE1BVENIRUQg VEhFTiBJTlNFUlQgVkFMVUVTIChzLmtleSwgcy52YWwpIFdIRU4gTUFUQ0hFRCBUSEVOIFVQ REFURSBzZXQgdmFsID0gdC52YWwgfHwgJyB1cGRhdGVkIGJ5IG1lcmdlMSc7CitzdGVwIGMx OiBDT01NSVQ7CitzdGVwIG1lcmdlMjogTUVSR0UgSU5UTyB0YXJnZXQgdCBVU0lORyAoU0VM RUNUIDEgYXMga2V5LCAnbWVyZ2UyJyBhcyB2YWwpIHMgT04gcy5rZXkgPSB0LmtleSBXSEVO IE5PVCBNQVRDSEVEIFRIRU4gSU5TRVJUIFZBTFVFUyAocy5rZXksIHMudmFsKSBXSEVOIE1B VENIRUQgVEhFTiBVUERBVEUgc2V0IHZhbCA9IHQudmFsIHx8ICcgdXBkYXRlZCBieSBtZXJn ZTInOworc3RlcCBzZWxlY3QyOiBTRUxFQ1QgKiBGUk9NIHRhcmdldDsKK2tleXx2YWwgICAg ICAgICAgICAgICAgICAgICAKKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMXxt ZXJnZTEgdXBkYXRlZCBieSBtZXJnZTIKKygxIHJvdykKKworc3RlcCBjMjogQ09NTUlUOwor CitzdGFydGluZyBwZXJtdXRhdGlvbjogaW5zZXJ0MSBtZXJnZTIgYzEgc2VsZWN0MiBjMgor c3RlcCBpbnNlcnQxOiBJTlNFUlQgSU5UTyB0YXJnZXQgVkFMVUVTICgxLCAnaW5zZXJ0MScp Oworc3RlcCBtZXJnZTI6IE1FUkdFIElOVE8gdGFyZ2V0IHQgVVNJTkcgKFNFTEVDVCAxIGFz IGtleSwgJ21lcmdlMicgYXMgdmFsKSBzIE9OIHMua2V5ID0gdC5rZXkgV0hFTiBOT1QgTUFU Q0hFRCBUSEVOIElOU0VSVCBWQUxVRVMgKHMua2V5LCBzLnZhbCkgV0hFTiBNQVRDSEVEIFRI RU4gVVBEQVRFIHNldCB2YWwgPSB0LnZhbCB8fCAnIHVwZGF0ZWQgYnkgbWVyZ2UyJzsgPHdh aXRpbmcgLi4uPgorc3RlcCBjMTogQ09NTUlUOworc3RlcCBtZXJnZTI6IDwuLi4gY29tcGxl dGVkPgorRVJST1I6ICBkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSBjb25z dHJhaW50ICJ0YXJnZXRfcGtleSIKK3N0ZXAgc2VsZWN0MjogU0VMRUNUICogRlJPTSB0YXJn ZXQ7CitFUlJPUjogIGN1cnJlbnQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCwgY29tbWFuZHMg aWdub3JlZCB1bnRpbCBlbmQgb2YgdHJhbnNhY3Rpb24gYmxvY2sKK3N0ZXAgYzI6IENPTU1J VDsKKworc3RhcnRpbmcgcGVybXV0YXRpb246IG1lcmdlMSBtZXJnZTIgYzEgc2VsZWN0MiBj Mgorc3RlcCBtZXJnZTE6IE1FUkdFIElOVE8gdGFyZ2V0IHQgVVNJTkcgKFNFTEVDVCAxIGFz IGtleSwgJ21lcmdlMScgYXMgdmFsKSBzIE9OIHMua2V5ID0gdC5rZXkgV0hFTiBOT1QgTUFU Q0hFRCBUSEVOIElOU0VSVCBWQUxVRVMgKHMua2V5LCBzLnZhbCkgV0hFTiBNQVRDSEVEIFRI RU4gVVBEQVRFIHNldCB2YWwgPSB0LnZhbCB8fCAnIHVwZGF0ZWQgYnkgbWVyZ2UxJzsKK3N0 ZXAgbWVyZ2UyOiBNRVJHRSBJTlRPIHRhcmdldCB0IFVTSU5HIChTRUxFQ1QgMSBhcyBrZXks ICdtZXJnZTInIGFzIHZhbCkgcyBPTiBzLmtleSA9IHQua2V5IFdIRU4gTk9UIE1BVENIRUQg VEhFTiBJTlNFUlQgVkFMVUVTIChzLmtleSwgcy52YWwpIFdIRU4gTUFUQ0hFRCBUSEVOIFVQ REFURSBzZXQgdmFsID0gdC52YWwgfHwgJyB1cGRhdGVkIGJ5IG1lcmdlMic7IDx3YWl0aW5n IC4uLj4KK3N0ZXAgYzE6IENPTU1JVDsKK3N0ZXAgbWVyZ2UyOiA8Li4uIGNvbXBsZXRlZD4K K0VSUk9SOiAgZHVwbGljYXRlIGtleSB2YWx1ZSB2aW9sYXRlcyB1bmlxdWUgY29uc3RyYWlu dCAidGFyZ2V0X3BrZXkiCitzdGVwIHNlbGVjdDI6IFNFTEVDVCAqIEZST00gdGFyZ2V0Owor RVJST1I6ICBjdXJyZW50IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQsIGNvbW1hbmRzIGlnbm9y ZWQgdW50aWwgZW5kIG9mIHRyYW5zYWN0aW9uIGJsb2NrCitzdGVwIGMyOiBDT01NSVQ7CisK K3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBtZXJnZTEgbWVyZ2UyIGExIHNlbGVjdDIgYzIKK3N0 ZXAgbWVyZ2UxOiBNRVJHRSBJTlRPIHRhcmdldCB0IFVTSU5HIChTRUxFQ1QgMSBhcyBrZXks ICdtZXJnZTEnIGFzIHZhbCkgcyBPTiBzLmtleSA9IHQua2V5IFdIRU4gTk9UIE1BVENIRUQg VEhFTiBJTlNFUlQgVkFMVUVTIChzLmtleSwgcy52YWwpIFdIRU4gTUFUQ0hFRCBUSEVOIFVQ REFURSBzZXQgdmFsID0gdC52YWwgfHwgJyB1cGRhdGVkIGJ5IG1lcmdlMSc7CitzdGVwIG1l cmdlMjogTUVSR0UgSU5UTyB0YXJnZXQgdCBVU0lORyAoU0VMRUNUIDEgYXMga2V5LCAnbWVy Z2UyJyBhcyB2YWwpIHMgT04gcy5rZXkgPSB0LmtleSBXSEVOIE5PVCBNQVRDSEVEIFRIRU4g SU5TRVJUIFZBTFVFUyAocy5rZXksIHMudmFsKSBXSEVOIE1BVENIRUQgVEhFTiBVUERBVEUg c2V0IHZhbCA9IHQudmFsIHx8ICcgdXBkYXRlZCBieSBtZXJnZTInOyA8d2FpdGluZyAuLi4+ CitzdGVwIGExOiBBQk9SVDsKK3N0ZXAgbWVyZ2UyOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAg c2VsZWN0MjogU0VMRUNUICogRlJPTSB0YXJnZXQ7CitrZXl8dmFsICAgCistLS0rLS0tLS0t CisgIDF8bWVyZ2UyCisoMSByb3cpCisKK3N0ZXAgYzI6IENPTU1JVDsKKworc3RhcnRpbmcg cGVybXV0YXRpb246IGRlbGV0ZTEgaW5zZXJ0MSBjMSBtZXJnZTIgc2VsZWN0MiBjMgorc3Rl cCBkZWxldGUxOiBERUxFVEUgRlJPTSB0YXJnZXQgV0hFUkUga2V5ID0gMTsKK3N0ZXAgaW5z ZXJ0MTogSU5TRVJUIElOVE8gdGFyZ2V0IFZBTFVFUyAoMSwgJ2luc2VydDEnKTsKK3N0ZXAg YzE6IENPTU1JVDsKK3N0ZXAgbWVyZ2UyOiBNRVJHRSBJTlRPIHRhcmdldCB0IFVTSU5HIChT RUxFQ1QgMSBhcyBrZXksICdtZXJnZTInIGFzIHZhbCkgcyBPTiBzLmtleSA9IHQua2V5IFdI RU4gTk9UIE1BVENIRUQgVEhFTiBJTlNFUlQgVkFMVUVTIChzLmtleSwgcy52YWwpIFdIRU4g TUFUQ0hFRCBUSEVOIFVQREFURSBzZXQgdmFsID0gdC52YWwgfHwgJyB1cGRhdGVkIGJ5IG1l cmdlMic7CitzdGVwIHNlbGVjdDI6IFNFTEVDVCAqIEZST00gdGFyZ2V0Owora2V5fHZhbCAg ICAgICAgICAgICAgICAgICAgICAKKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg IDF8aW5zZXJ0MSB1cGRhdGVkIGJ5IG1lcmdlMgorKDEgcm93KQorCitzdGVwIGMyOiBDT01N SVQ7CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBkZWxldGUxIGluc2VydDEgbWVyZ2UyIGMx IHNlbGVjdDIgYzIKK3N0ZXAgZGVsZXRlMTogREVMRVRFIEZST00gdGFyZ2V0IFdIRVJFIGtl eSA9IDE7CitzdGVwIGluc2VydDE6IElOU0VSVCBJTlRPIHRhcmdldCBWQUxVRVMgKDEsICdp bnNlcnQxJyk7CitzdGVwIG1lcmdlMjogTUVSR0UgSU5UTyB0YXJnZXQgdCBVU0lORyAoU0VM RUNUIDEgYXMga2V5LCAnbWVyZ2UyJyBhcyB2YWwpIHMgT04gcy5rZXkgPSB0LmtleSBXSEVO IE5PVCBNQVRDSEVEIFRIRU4gSU5TRVJUIFZBTFVFUyAocy5rZXksIHMudmFsKSBXSEVOIE1B VENIRUQgVEhFTiBVUERBVEUgc2V0IHZhbCA9IHQudmFsIHx8ICcgdXBkYXRlZCBieSBtZXJn ZTInOyA8d2FpdGluZyAuLi4+CitzdGVwIGMxOiBDT01NSVQ7CitzdGVwIG1lcmdlMjogPC4u LiBjb21wbGV0ZWQ+CitFUlJPUjogIGR1cGxpY2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5p cXVlIGNvbnN0cmFpbnQgInRhcmdldF9wa2V5Igorc3RlcCBzZWxlY3QyOiBTRUxFQ1QgKiBG Uk9NIHRhcmdldDsKK0VSUk9SOiAgY3VycmVudCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkLCBj b21tYW5kcyBpZ25vcmVkIHVudGlsIGVuZCBvZiB0cmFuc2FjdGlvbiBibG9jaworc3RlcCBj MjogQ09NTUlUOworCitzdGFydGluZyBwZXJtdXRhdGlvbjogZGVsZXRlMSBpbnNlcnQxIG1l cmdlMmkgYzEgc2VsZWN0MiBjMgorc3RlcCBkZWxldGUxOiBERUxFVEUgRlJPTSB0YXJnZXQg V0hFUkUga2V5ID0gMTsKK3N0ZXAgaW5zZXJ0MTogSU5TRVJUIElOVE8gdGFyZ2V0IFZBTFVF UyAoMSwgJ2luc2VydDEnKTsKK3N0ZXAgbWVyZ2UyaTogTUVSR0UgSU5UTyB0YXJnZXQgdCBV U0lORyAoU0VMRUNUIDEgYXMga2V5LCAnbWVyZ2UyJyBhcyB2YWwpIHMgT04gcy5rZXkgPSB0 LmtleSBXSEVOIE1BVENIRUQgVEhFTiBVUERBVEUgc2V0IHZhbCA9IHQudmFsIHx8ICcgdXBk YXRlZCBieSBtZXJnZTInOworc3RlcCBjMTogQ09NTUlUOworc3RlcCBzZWxlY3QyOiBTRUxF Q1QgKiBGUk9NIHRhcmdldDsKK2tleXx2YWwgICAgCistLS0rLS0tLS0tLQorICAxfGluc2Vy dDEKKygxIHJvdykKKworc3RlcCBjMjogQ09NTUlUOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv aXNvbGF0aW9uL2V4cGVjdGVkL21lcmdlLW1hdGNoLXJlY2hlY2sub3V0IGIvc3JjL3Rlc3Qv aXNvbGF0aW9uL2V4cGVjdGVkL21lcmdlLW1hdGNoLXJlY2hlY2sub3V0Cm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjgxODNmNTJjZTAKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvbWVyZ2UtbWF0Y2gtcmVjaGVjay5v dXQKQEAgLTAsMCArMSwxMTYgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25z CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiB1cGRhdGUxIG1lcmdlX3N0YXR1cyBjMiBzZWxl Y3QxIGMxCitzdGVwIHVwZGF0ZTE6IFVQREFURSB0YXJnZXQgdCBTRVQgYmFsYW5jZSA9IGJh bGFuY2UgKyAxMCwgdmFsID0gdC52YWwgfHwgJyB1cGRhdGVkIGJ5IHVwZGF0ZTEnIFdIRVJF IHQua2V5ID0gMTsKK3N0ZXAgbWVyZ2Vfc3RhdHVzOiAKKyAgTUVSR0UgSU5UTyB0YXJnZXQg dAorICBVU0lORyAoU0VMRUNUIDEgYXMga2V5KSBzCisgIE9OIHMua2V5ID0gdC5rZXkKKyAg V0hFTiBNQVRDSEVEIEFORCBzdGF0dXMgPSAnczEnIFRIRU4KKwlVUERBVEUgU0VUIHN0YXR1 cyA9ICdzMicsIHZhbCA9IHQudmFsIHx8ICcgd2hlbjEnCisgIFdIRU4gTUFUQ0hFRCBBTkQg c3RhdHVzID0gJ3MyJyBUSEVOCisJVVBEQVRFIFNFVCBzdGF0dXMgPSAnczMnLCB2YWwgPSB0 LnZhbCB8fCAnIHdoZW4yJworICBXSEVOIE1BVENIRUQgQU5EIHN0YXR1cyA9ICdzMycgVEhF TgorCVVQREFURSBTRVQgc3RhdHVzID0gJ3M0JywgdmFsID0gdC52YWwgfHwgJyB3aGVuMyc7 CisgPHdhaXRpbmcgLi4uPgorc3RlcCBjMjogQ09NTUlUOworc3RlcCBtZXJnZV9zdGF0dXM6 IDwuLi4gY29tcGxldGVkPgorc3RlcCBzZWxlY3QxOiBTRUxFQ1QgKiBGUk9NIHRhcmdldDsK K2tleXxiYWxhbmNlfHN0YXR1c3x2YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LSstLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMXwg ICAgMTcwfHMyICAgIHxzZXR1cCB1cGRhdGVkIGJ5IHVwZGF0ZTEgd2hlbjEKKygxIHJvdykK Kworc3RlcCBjMTogQ09NTUlUOworCitzdGFydGluZyBwZXJtdXRhdGlvbjogdXBkYXRlMiBt ZXJnZV9zdGF0dXMgYzIgc2VsZWN0MSBjMQorc3RlcCB1cGRhdGUyOiBVUERBVEUgdGFyZ2V0 IHQgU0VUIHN0YXR1cyA9ICdzMicsIHZhbCA9IHQudmFsIHx8ICcgdXBkYXRlZCBieSB1cGRh dGUyJyBXSEVSRSB0LmtleSA9IDE7CitzdGVwIG1lcmdlX3N0YXR1czogCisgIE1FUkdFIElO VE8gdGFyZ2V0IHQKKyAgVVNJTkcgKFNFTEVDVCAxIGFzIGtleSkgcworICBPTiBzLmtleSA9 IHQua2V5CisgIFdIRU4gTUFUQ0hFRCBBTkQgc3RhdHVzID0gJ3MxJyBUSEVOCisJVVBEQVRF IFNFVCBzdGF0dXMgPSAnczInLCB2YWwgPSB0LnZhbCB8fCAnIHdoZW4xJworICBXSEVOIE1B VENIRUQgQU5EIHN0YXR1cyA9ICdzMicgVEhFTgorCVVQREFURSBTRVQgc3RhdHVzID0gJ3Mz JywgdmFsID0gdC52YWwgfHwgJyB3aGVuMicKKyAgV0hFTiBNQVRDSEVEIEFORCBzdGF0dXMg PSAnczMnIFRIRU4KKwlVUERBVEUgU0VUIHN0YXR1cyA9ICdzNCcsIHZhbCA9IHQudmFsIHx8 ICcgd2hlbjMnOworIDx3YWl0aW5nIC4uLj4KK3N0ZXAgYzI6IENPTU1JVDsKK3N0ZXAgbWVy Z2Vfc3RhdHVzOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgc2VsZWN0MTogU0VMRUNUICogRlJP TSB0YXJnZXQ7CitrZXl8YmFsYW5jZXxzdGF0dXN8dmFsICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0rLS0tLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgIDF8ICAgIDE2MHxzMyAgICB8c2V0dXAgdXBkYXRlZCBieSB1cGRhdGUyIHdoZW4y CisoMSByb3cpCisKK3N0ZXAgYzE6IENPTU1JVDsKKworc3RhcnRpbmcgcGVybXV0YXRpb246 IHVwZGF0ZTMgbWVyZ2Vfc3RhdHVzIGMyIHNlbGVjdDEgYzEKK3N0ZXAgdXBkYXRlMzogVVBE QVRFIHRhcmdldCB0IFNFVCBzdGF0dXMgPSAnczMnLCB2YWwgPSB0LnZhbCB8fCAnIHVwZGF0 ZWQgYnkgdXBkYXRlMycgV0hFUkUgdC5rZXkgPSAxOworc3RlcCBtZXJnZV9zdGF0dXM6IAor ICBNRVJHRSBJTlRPIHRhcmdldCB0CisgIFVTSU5HIChTRUxFQ1QgMSBhcyBrZXkpIHMKKyAg T04gcy5rZXkgPSB0LmtleQorICBXSEVOIE1BVENIRUQgQU5EIHN0YXR1cyA9ICdzMScgVEhF TgorCVVQREFURSBTRVQgc3RhdHVzID0gJ3MyJywgdmFsID0gdC52YWwgfHwgJyB3aGVuMScK KyAgV0hFTiBNQVRDSEVEIEFORCBzdGF0dXMgPSAnczInIFRIRU4KKwlVUERBVEUgU0VUIHN0 YXR1cyA9ICdzMycsIHZhbCA9IHQudmFsIHx8ICcgd2hlbjInCisgIFdIRU4gTUFUQ0hFRCBB TkQgc3RhdHVzID0gJ3MzJyBUSEVOCisJVVBEQVRFIFNFVCBzdGF0dXMgPSAnczQnLCB2YWwg PSB0LnZhbCB8fCAnIHdoZW4zJzsKKyA8d2FpdGluZyAuLi4+CitzdGVwIGMyOiBDT01NSVQ7 CitzdGVwIG1lcmdlX3N0YXR1czogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHNlbGVjdDE6IFNF TEVDVCAqIEZST00gdGFyZ2V0Owora2V5fGJhbGFuY2V8c3RhdHVzfHZhbCAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tKy0tLS0tLS0rLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICAxfCAgICAxNjB8czQgICAgfHNldHVwIHVwZGF0ZWQgYnkgdXBk YXRlMyB3aGVuMworKDEgcm93KQorCitzdGVwIGMxOiBDT01NSVQ7CisKK3N0YXJ0aW5nIHBl cm11dGF0aW9uOiB1cGRhdGU1IG1lcmdlX3N0YXR1cyBjMiBzZWxlY3QxIGMxCitzdGVwIHVw ZGF0ZTU6IFVQREFURSB0YXJnZXQgdCBTRVQgc3RhdHVzID0gJ3M1JywgdmFsID0gdC52YWwg fHwgJyB1cGRhdGVkIGJ5IHVwZGF0ZTUnIFdIRVJFIHQua2V5ID0gMTsKK3N0ZXAgbWVyZ2Vf c3RhdHVzOiAKKyAgTUVSR0UgSU5UTyB0YXJnZXQgdAorICBVU0lORyAoU0VMRUNUIDEgYXMg a2V5KSBzCisgIE9OIHMua2V5ID0gdC5rZXkKKyAgV0hFTiBNQVRDSEVEIEFORCBzdGF0dXMg PSAnczEnIFRIRU4KKwlVUERBVEUgU0VUIHN0YXR1cyA9ICdzMicsIHZhbCA9IHQudmFsIHx8 ICcgd2hlbjEnCisgIFdIRU4gTUFUQ0hFRCBBTkQgc3RhdHVzID0gJ3MyJyBUSEVOCisJVVBE QVRFIFNFVCBzdGF0dXMgPSAnczMnLCB2YWwgPSB0LnZhbCB8fCAnIHdoZW4yJworICBXSEVO IE1BVENIRUQgQU5EIHN0YXR1cyA9ICdzMycgVEhFTgorCVVQREFURSBTRVQgc3RhdHVzID0g J3M0JywgdmFsID0gdC52YWwgfHwgJyB3aGVuMyc7CisgPHdhaXRpbmcgLi4uPgorc3RlcCBj MjogQ09NTUlUOworc3RlcCBtZXJnZV9zdGF0dXM6IDwuLi4gY29tcGxldGVkPgorc3RlcCBz ZWxlY3QxOiBTRUxFQ1QgKiBGUk9NIHRhcmdldDsKK2tleXxiYWxhbmNlfHN0YXR1c3x2YWwg ICAgICAgICAgICAgICAgICAgICAKKy0tLSstLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAgMXwgICAgMTYwfHM1ICAgIHxzZXR1cCB1cGRhdGVkIGJ5IHVwZGF0 ZTUKKygxIHJvdykKKworc3RlcCBjMTogQ09NTUlUOworCitzdGFydGluZyBwZXJtdXRhdGlv bjogdXBkYXRlX2JhbDEgbWVyZ2VfYmFsIGMyIHNlbGVjdDEgYzEKK3N0ZXAgdXBkYXRlX2Jh bDE6IFVQREFURSB0YXJnZXQgdCBTRVQgYmFsYW5jZSA9IDUwLCB2YWwgPSB0LnZhbCB8fCAn IHVwZGF0ZWQgYnkgdXBkYXRlX2JhbDEnIFdIRVJFIHQua2V5ID0gMTsKK3N0ZXAgbWVyZ2Vf YmFsOiAKKyAgTUVSR0UgSU5UTyB0YXJnZXQgdAorICBVU0lORyAoU0VMRUNUIDEgYXMga2V5 KSBzCisgIE9OIHMua2V5ID0gdC5rZXkKKyAgV0hFTiBNQVRDSEVEIEFORCBiYWxhbmNlIDwg MTAwIFRIRU4KKwlVUERBVEUgU0VUIGJhbGFuY2UgPSBiYWxhbmNlICogMiwgdmFsID0gdC52 YWwgfHwgJyB3aGVuMScKKyAgV0hFTiBNQVRDSEVEIEFORCBiYWxhbmNlIDwgMjAwIFRIRU4K KwlVUERBVEUgU0VUIGJhbGFuY2UgPSBiYWxhbmNlICogNCwgdmFsID0gdC52YWwgfHwgJyB3 aGVuMicKKyAgV0hFTiBNQVRDSEVEIEFORCBiYWxhbmNlIDwgMzAwIFRIRU4KKwlVUERBVEUg U0VUIGJhbGFuY2UgPSBiYWxhbmNlICogOCwgdmFsID0gdC52YWwgfHwgJyB3aGVuMyc7Cisg PHdhaXRpbmcgLi4uPgorc3RlcCBjMjogQ09NTUlUOworc3RlcCBtZXJnZV9iYWw6IDwuLi4g Y29tcGxldGVkPgorc3RlcCBzZWxlY3QxOiBTRUxFQ1QgKiBGUk9NIHRhcmdldDsKK2tleXxi YWxhbmNlfHN0YXR1c3x2YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0r LS0tLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAx fCAgICAxMDB8czEgICAgfHNldHVwIHVwZGF0ZWQgYnkgdXBkYXRlX2JhbDEgd2hlbjEKKygx IHJvdykKKworc3RlcCBjMTogQ09NTUlUOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0 aW9uL2V4cGVjdGVkL21lcmdlLXVwZGF0ZS5vdXQgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhw ZWN0ZWQvbWVyZ2UtdXBkYXRlLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwLi5lY2NhMGY0OTYyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvaXNvbGF0 aW9uL2V4cGVjdGVkL21lcmdlLXVwZGF0ZS5vdXQKQEAgLTAsMCArMSwyODUgQEAKK3VudXNl ZCBzdGVwIG5hbWU6IHBhX21lcmdlMworUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDIgc2Vzc2lv bnMKKworc3RhcnRpbmcgcGVybXV0YXRpb246IG1lcmdlMSBjMSBzZWxlY3QyIGMyCitzdGVw IG1lcmdlMTogCisgIE1FUkdFIElOVE8gdGFyZ2V0IHQKKyAgVVNJTkcgKFNFTEVDVCAxIGFz IGtleSwgJ21lcmdlMScgYXMgdmFsKSBzCisgIE9OIHMua2V5ID0gdC5rZXkKKyAgV0hFTiBO T1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIFZBTFVFUyAocy5rZXksIHMudmFsKQorICBXSEVO IE1BVENIRUQgVEhFTgorICAgIFVQREFURSBzZXQga2V5ID0gdC5rZXkgKyAxLCB2YWwgPSB0 LnZhbCB8fCAnIHVwZGF0ZWQgYnkgJyB8fCBzLnZhbDsKKworc3RlcCBjMTogQ09NTUlUOwor c3RlcCBzZWxlY3QyOiBTRUxFQ1QgKiBGUk9NIHRhcmdldDsKK2tleXx2YWwgICAgICAgICAg ICAgICAgICAgICAKKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMnxzZXR1cDEg dXBkYXRlZCBieSBtZXJnZTEKKygxIHJvdykKKworc3RlcCBjMjogQ09NTUlUOworCitzdGFy dGluZyBwZXJtdXRhdGlvbjogbWVyZ2UxIGMxIG1lcmdlMmEgc2VsZWN0MiBjMgorc3RlcCBt ZXJnZTE6IAorICBNRVJHRSBJTlRPIHRhcmdldCB0CisgIFVTSU5HIChTRUxFQ1QgMSBhcyBr ZXksICdtZXJnZTEnIGFzIHZhbCkgcworICBPTiBzLmtleSA9IHQua2V5CisgIFdIRU4gTk9U IE1BVENIRUQgVEhFTgorCUlOU0VSVCBWQUxVRVMgKHMua2V5LCBzLnZhbCkKKyAgV0hFTiBN QVRDSEVEIFRIRU4KKyAgICBVUERBVEUgc2V0IGtleSA9IHQua2V5ICsgMSwgdmFsID0gdC52 YWwgfHwgJyB1cGRhdGVkIGJ5ICcgfHwgcy52YWw7CisKK3N0ZXAgYzE6IENPTU1JVDsKK3N0 ZXAgbWVyZ2UyYTogCisgIE1FUkdFIElOVE8gdGFyZ2V0IHQKKyAgVVNJTkcgKFNFTEVDVCAx IGFzIGtleSwgJ21lcmdlMmEnIGFzIHZhbCkgcworICBPTiBzLmtleSA9IHQua2V5CisgIFdI RU4gTk9UIE1BVENIRUQgVEhFTgorCUlOU0VSVCBWQUxVRVMgKHMua2V5LCBzLnZhbCkKKyAg V0hFTiBNQVRDSEVEIFRIRU4KKwlVUERBVEUgc2V0IGtleSA9IHQua2V5ICsgMSwgdmFsID0g dC52YWwgfHwgJyB1cGRhdGVkIGJ5ICcgfHwgcy52YWw7CisKK3N0ZXAgc2VsZWN0MjogU0VM RUNUICogRlJPTSB0YXJnZXQ7CitrZXl8dmFsICAgICAgICAgICAgICAgICAgICAgCistLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIDJ8c2V0dXAxIHVwZGF0ZWQgYnkgbWVyZ2Ux CisgIDF8bWVyZ2UyYSAgICAgICAgICAgICAgICAgCisoMiByb3dzKQorCitzdGVwIGMyOiBD T01NSVQ7CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBtZXJnZTEgbWVyZ2UyYSBjMSBzZWxl Y3QyIGMyCitzdGVwIG1lcmdlMTogCisgIE1FUkdFIElOVE8gdGFyZ2V0IHQKKyAgVVNJTkcg KFNFTEVDVCAxIGFzIGtleSwgJ21lcmdlMScgYXMgdmFsKSBzCisgIE9OIHMua2V5ID0gdC5r ZXkKKyAgV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIFZBTFVFUyAocy5rZXksIHMu dmFsKQorICBXSEVOIE1BVENIRUQgVEhFTgorICAgIFVQREFURSBzZXQga2V5ID0gdC5rZXkg KyAxLCB2YWwgPSB0LnZhbCB8fCAnIHVwZGF0ZWQgYnkgJyB8fCBzLnZhbDsKKworc3RlcCBt ZXJnZTJhOiAKKyAgTUVSR0UgSU5UTyB0YXJnZXQgdAorICBVU0lORyAoU0VMRUNUIDEgYXMg a2V5LCAnbWVyZ2UyYScgYXMgdmFsKSBzCisgIE9OIHMua2V5ID0gdC5rZXkKKyAgV0hFTiBO T1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIFZBTFVFUyAocy5rZXksIHMudmFsKQorICBXSEVO IE1BVENIRUQgVEhFTgorCVVQREFURSBzZXQga2V5ID0gdC5rZXkgKyAxLCB2YWwgPSB0LnZh bCB8fCAnIHVwZGF0ZWQgYnkgJyB8fCBzLnZhbDsKKyA8d2FpdGluZyAuLi4+CitzdGVwIGMx OiBDT01NSVQ7CitzdGVwIG1lcmdlMmE6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzZWxlY3Qy OiBTRUxFQ1QgKiBGUk9NIHRhcmdldDsKK2tleXx2YWwgICAgICAgICAgICAgICAgICAgICAK Ky0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMnxzZXR1cDEgdXBkYXRlZCBieSBt ZXJnZTEKKyAgMXxtZXJnZTJhICAgICAgICAgICAgICAgICAKKygyIHJvd3MpCisKK3N0ZXAg YzI6IENPTU1JVDsKKworc3RhcnRpbmcgcGVybXV0YXRpb246IG1lcmdlMSBtZXJnZTJhIGEx IHNlbGVjdDIgYzIKK3N0ZXAgbWVyZ2UxOiAKKyAgTUVSR0UgSU5UTyB0YXJnZXQgdAorICBV U0lORyAoU0VMRUNUIDEgYXMga2V5LCAnbWVyZ2UxJyBhcyB2YWwpIHMKKyAgT04gcy5rZXkg PSB0LmtleQorICBXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgVkFMVUVTIChzLmtl eSwgcy52YWwpCisgIFdIRU4gTUFUQ0hFRCBUSEVOCisgICAgVVBEQVRFIHNldCBrZXkgPSB0 LmtleSArIDEsIHZhbCA9IHQudmFsIHx8ICcgdXBkYXRlZCBieSAnIHx8IHMudmFsOworCitz dGVwIG1lcmdlMmE6IAorICBNRVJHRSBJTlRPIHRhcmdldCB0CisgIFVTSU5HIChTRUxFQ1Qg MSBhcyBrZXksICdtZXJnZTJhJyBhcyB2YWwpIHMKKyAgT04gcy5rZXkgPSB0LmtleQorICBX SEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgVkFMVUVTIChzLmtleSwgcy52YWwpCisg IFdIRU4gTUFUQ0hFRCBUSEVOCisJVVBEQVRFIHNldCBrZXkgPSB0LmtleSArIDEsIHZhbCA9 IHQudmFsIHx8ICcgdXBkYXRlZCBieSAnIHx8IHMudmFsOworIDx3YWl0aW5nIC4uLj4KK3N0 ZXAgYTE6IEFCT1JUOworc3RlcCBtZXJnZTJhOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgc2Vs ZWN0MjogU0VMRUNUICogRlJPTSB0YXJnZXQ7CitrZXl8dmFsICAgICAgICAgICAgICAgICAg ICAgIAorLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMnxzZXR1cDEgdXBkYXRl ZCBieSBtZXJnZTJhCisoMSByb3cpCisKK3N0ZXAgYzI6IENPTU1JVDsKKworc3RhcnRpbmcg cGVybXV0YXRpb246IG1lcmdlMSBtZXJnZTJiIGMxIHNlbGVjdDIgYzIKK3N0ZXAgbWVyZ2Ux OiAKKyAgTUVSR0UgSU5UTyB0YXJnZXQgdAorICBVU0lORyAoU0VMRUNUIDEgYXMga2V5LCAn bWVyZ2UxJyBhcyB2YWwpIHMKKyAgT04gcy5rZXkgPSB0LmtleQorICBXSEVOIE5PVCBNQVRD SEVEIFRIRU4KKwlJTlNFUlQgVkFMVUVTIChzLmtleSwgcy52YWwpCisgIFdIRU4gTUFUQ0hF RCBUSEVOCisgICAgVVBEQVRFIHNldCBrZXkgPSB0LmtleSArIDEsIHZhbCA9IHQudmFsIHx8 ICcgdXBkYXRlZCBieSAnIHx8IHMudmFsOworCitzdGVwIG1lcmdlMmI6IAorICBNRVJHRSBJ TlRPIHRhcmdldCB0CisgIFVTSU5HIChTRUxFQ1QgMSBhcyBrZXksICdtZXJnZTJiJyBhcyB2 YWwpIHMKKyAgT04gcy5rZXkgPSB0LmtleQorICBXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJ TlNFUlQgVkFMVUVTIChzLmtleSwgcy52YWwpCisgIFdIRU4gTUFUQ0hFRCBBTkQgdC5rZXkg PCAyIFRIRU4KKwlVUERBVEUgc2V0IGtleSA9IHQua2V5ICsgMSwgdmFsID0gdC52YWwgfHwg JyB1cGRhdGVkIGJ5ICcgfHwgcy52YWw7CisgPHdhaXRpbmcgLi4uPgorc3RlcCBjMTogQ09N TUlUOworc3RlcCBtZXJnZTJiOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgc2VsZWN0MjogU0VM RUNUICogRlJPTSB0YXJnZXQ7CitrZXl8dmFsICAgICAgICAgICAgICAgICAgICAgCistLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIDJ8c2V0dXAxIHVwZGF0ZWQgYnkgbWVyZ2Ux CisgIDF8bWVyZ2UyYiAgICAgICAgICAgICAgICAgCisoMiByb3dzKQorCitzdGVwIGMyOiBD T01NSVQ7CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBtZXJnZTEgbWVyZ2UyYyBjMSBzZWxl Y3QyIGMyCitzdGVwIG1lcmdlMTogCisgIE1FUkdFIElOVE8gdGFyZ2V0IHQKKyAgVVNJTkcg KFNFTEVDVCAxIGFzIGtleSwgJ21lcmdlMScgYXMgdmFsKSBzCisgIE9OIHMua2V5ID0gdC5r ZXkKKyAgV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIFZBTFVFUyAocy5rZXksIHMu dmFsKQorICBXSEVOIE1BVENIRUQgVEhFTgorICAgIFVQREFURSBzZXQga2V5ID0gdC5rZXkg KyAxLCB2YWwgPSB0LnZhbCB8fCAnIHVwZGF0ZWQgYnkgJyB8fCBzLnZhbDsKKworc3RlcCBt ZXJnZTJjOiAKKyAgTUVSR0UgSU5UTyB0YXJnZXQgdAorICBVU0lORyAoU0VMRUNUIDEgYXMg a2V5LCAnbWVyZ2UyYycgYXMgdmFsKSBzCisgIE9OIHMua2V5ID0gdC5rZXkgQU5EIHQua2V5 IDwgMgorICBXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgVkFMVUVTIChzLmtleSwg cy52YWwpCisgIFdIRU4gTUFUQ0hFRCBUSEVOCisJVVBEQVRFIHNldCBrZXkgPSB0LmtleSAr IDEsIHZhbCA9IHQudmFsIHx8ICcgdXBkYXRlZCBieSAnIHx8IHMudmFsOworIDx3YWl0aW5n IC4uLj4KK3N0ZXAgYzE6IENPTU1JVDsKK3N0ZXAgbWVyZ2UyYzogPC4uLiBjb21wbGV0ZWQ+ CitzdGVwIHNlbGVjdDI6IFNFTEVDVCAqIEZST00gdGFyZ2V0Owora2V5fHZhbCAgICAgICAg ICAgICAgICAgICAgIAorLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAyfHNldHVw MSB1cGRhdGVkIGJ5IG1lcmdlMQorICAxfG1lcmdlMmMgICAgICAgICAgICAgICAgIAorKDIg cm93cykKKworc3RlcCBjMjogQ09NTUlUOworCitzdGFydGluZyBwZXJtdXRhdGlvbjogcGFf bWVyZ2UxIHBhX21lcmdlMmEgYzEgcGFfc2VsZWN0MiBjMgorc3RlcCBwYV9tZXJnZTE6IAor ICBNRVJHRSBJTlRPIHBhX3RhcmdldCB0CisgIFVTSU5HIChTRUxFQ1QgMSBhcyBrZXksICdw YV9tZXJnZTEnIGFzIHZhbCkgcworICBPTiBzLmtleSA9IHQua2V5CisgIFdIRU4gTk9UIE1B VENIRUQgVEhFTgorCUlOU0VSVCBWQUxVRVMgKHMua2V5LCBzLnZhbCkKKyAgV0hFTiBNQVRD SEVEIFRIRU4KKyAgICBVUERBVEUgc2V0IHZhbCA9IHQudmFsIHx8ICcgdXBkYXRlZCBieSAn IHx8IHMudmFsOworCitzdGVwIHBhX21lcmdlMmE6IAorICBNRVJHRSBJTlRPIHBhX3Rhcmdl dCB0CisgIFVTSU5HIChTRUxFQ1QgMSBhcyBrZXksICdwYV9tZXJnZTJhJyBhcyB2YWwpIHMK KyAgT04gcy5rZXkgPSB0LmtleQorICBXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQg VkFMVUVTIChzLmtleSwgcy52YWwpCisgIFdIRU4gTUFUQ0hFRCBUSEVOCisJVVBEQVRFIHNl dCBrZXkgPSB0LmtleSArIDEsIHZhbCA9IHQudmFsIHx8ICcgdXBkYXRlZCBieSAnIHx8IHMu dmFsOworIDx3YWl0aW5nIC4uLj4KK3N0ZXAgYzE6IENPTU1JVDsKK3N0ZXAgcGFfbWVyZ2Uy YTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHBhX3NlbGVjdDI6IFNFTEVDVCAqIEZST00gcGFf dGFyZ2V0Owora2V5fHZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAgMnxpbml0aWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorICAyfGluaXRpYWwgdXBkYXRlZCBieSBwYV9tZXJnZTEgdXBkYXRl ZCBieSBwYV9tZXJnZTJhCisoMiByb3dzKQorCitzdGVwIGMyOiBDT01NSVQ7CisKK3N0YXJ0 aW5nIHBlcm11dGF0aW9uOiBwYV9tZXJnZTIgcGFfbWVyZ2UyYSBjMSBwYV9zZWxlY3QyIGMy CitzdGVwIHBhX21lcmdlMjogCisgIE1FUkdFIElOVE8gcGFfdGFyZ2V0IHQKKyAgVVNJTkcg KFNFTEVDVCAxIGFzIGtleSwgJ3BhX21lcmdlMicgYXMgdmFsKSBzCisgIE9OIHMua2V5ID0g dC5rZXkKKyAgV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIFZBTFVFUyAocy5rZXks IHMudmFsKQorICBXSEVOIE1BVENIRUQgVEhFTgorICAgIFVQREFURSBzZXQga2V5ID0gdC5r ZXkgKyAxLCB2YWwgPSB0LnZhbCB8fCAnIHVwZGF0ZWQgYnkgJyB8fCBzLnZhbDsKKworc3Rl cCBwYV9tZXJnZTJhOiAKKyAgTUVSR0UgSU5UTyBwYV90YXJnZXQgdAorICBVU0lORyAoU0VM RUNUIDEgYXMga2V5LCAncGFfbWVyZ2UyYScgYXMgdmFsKSBzCisgIE9OIHMua2V5ID0gdC5r ZXkKKyAgV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIFZBTFVFUyAocy5rZXksIHMu dmFsKQorICBXSEVOIE1BVENIRUQgVEhFTgorCVVQREFURSBzZXQga2V5ID0gdC5rZXkgKyAx LCB2YWwgPSB0LnZhbCB8fCAnIHVwZGF0ZWQgYnkgJyB8fCBzLnZhbDsKKyA8d2FpdGluZyAu Li4+CitzdGVwIGMxOiBDT01NSVQ7CitzdGVwIHBhX21lcmdlMmE6IDwuLi4gY29tcGxldGVk PgorRVJST1I6ICB0dXBsZSB0byBiZSBsb2NrZWQgd2FzIGFscmVhZHkgbW92ZWQgdG8gYW5v dGhlciBwYXJ0aXRpb24gZHVlIHRvIGNvbmN1cnJlbnQgdXBkYXRlCitzdGVwIHBhX3NlbGVj dDI6IFNFTEVDVCAqIEZST00gcGFfdGFyZ2V0OworRVJST1I6ICBjdXJyZW50IHRyYW5zYWN0 aW9uIGlzIGFib3J0ZWQsIGNvbW1hbmRzIGlnbm9yZWQgdW50aWwgZW5kIG9mIHRyYW5zYWN0 aW9uIGJsb2NrCitzdGVwIGMyOiBDT01NSVQ7CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBw YV9tZXJnZTIgYzEgcGFfbWVyZ2UyYSBwYV9zZWxlY3QyIGMyCitzdGVwIHBhX21lcmdlMjog CisgIE1FUkdFIElOVE8gcGFfdGFyZ2V0IHQKKyAgVVNJTkcgKFNFTEVDVCAxIGFzIGtleSwg J3BhX21lcmdlMicgYXMgdmFsKSBzCisgIE9OIHMua2V5ID0gdC5rZXkKKyAgV0hFTiBOT1Qg TUFUQ0hFRCBUSEVOCisJSU5TRVJUIFZBTFVFUyAocy5rZXksIHMudmFsKQorICBXSEVOIE1B VENIRUQgVEhFTgorICAgIFVQREFURSBzZXQga2V5ID0gdC5rZXkgKyAxLCB2YWwgPSB0LnZh bCB8fCAnIHVwZGF0ZWQgYnkgJyB8fCBzLnZhbDsKKworc3RlcCBjMTogQ09NTUlUOworc3Rl cCBwYV9tZXJnZTJhOiAKKyAgTUVSR0UgSU5UTyBwYV90YXJnZXQgdAorICBVU0lORyAoU0VM RUNUIDEgYXMga2V5LCAncGFfbWVyZ2UyYScgYXMgdmFsKSBzCisgIE9OIHMua2V5ID0gdC5r ZXkKKyAgV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIFZBTFVFUyAocy5rZXksIHMu dmFsKQorICBXSEVOIE1BVENIRUQgVEhFTgorCVVQREFURSBzZXQga2V5ID0gdC5rZXkgKyAx LCB2YWwgPSB0LnZhbCB8fCAnIHVwZGF0ZWQgYnkgJyB8fCBzLnZhbDsKKworc3RlcCBwYV9z ZWxlY3QyOiBTRUxFQ1QgKiBGUk9NIHBhX3RhcmdldDsKK2tleXx2YWwgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAxfHBh X21lcmdlMmEgICAgICAgICAgICAgICAgICAKKyAgMnxpbml0aWFsICAgICAgICAgICAgICAg ICAgICAgCisgIDJ8aW5pdGlhbCB1cGRhdGVkIGJ5IHBhX21lcmdlMgorKDMgcm93cykKKwor c3RlcCBjMjogQ09NTUlUOworCitzdGFydGluZyBwZXJtdXRhdGlvbjogcGFfbWVyZ2UxIHBh X21lcmdlMmJfd2hlbiBjMSBwYV9zZWxlY3QyIGMyCitzdGVwIHBhX21lcmdlMTogCisgIE1F UkdFIElOVE8gcGFfdGFyZ2V0IHQKKyAgVVNJTkcgKFNFTEVDVCAxIGFzIGtleSwgJ3BhX21l cmdlMScgYXMgdmFsKSBzCisgIE9OIHMua2V5ID0gdC5rZXkKKyAgV0hFTiBOT1QgTUFUQ0hF RCBUSEVOCisJSU5TRVJUIFZBTFVFUyAocy5rZXksIHMudmFsKQorICBXSEVOIE1BVENIRUQg VEhFTgorICAgIFVQREFURSBzZXQgdmFsID0gdC52YWwgfHwgJyB1cGRhdGVkIGJ5ICcgfHwg cy52YWw7CisKK3N0ZXAgcGFfbWVyZ2UyYl93aGVuOiAKKyAgTUVSR0UgSU5UTyBwYV90YXJn ZXQgdAorICBVU0lORyAoU0VMRUNUIDEgYXMga2V5LCAncGFfbWVyZ2UyYl93aGVuJyBhcyB2 YWwpIHMKKyAgT04gcy5rZXkgPSB0LmtleQorICBXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJ TlNFUlQgVkFMVUVTIChzLmtleSwgcy52YWwpCisgIFdIRU4gTUFUQ0hFRCBBTkQgdC52YWwg bGlrZSAnaW5pdGlhbCUnIFRIRU4KKwlVUERBVEUgc2V0IGtleSA9IHQua2V5ICsgMSwgdmFs ID0gdC52YWwgfHwgJyB1cGRhdGVkIGJ5ICcgfHwgcy52YWw7CisgPHdhaXRpbmcgLi4uPgor c3RlcCBjMTogQ09NTUlUOworc3RlcCBwYV9tZXJnZTJiX3doZW46IDwuLi4gY29tcGxldGVk Pgorc3RlcCBwYV9zZWxlY3QyOiBTRUxFQ1QgKiBGUk9NIHBhX3RhcmdldDsKK2tleXx2YWwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAyfGluaXRpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKyAgMnxpbml0aWFsIHVwZGF0ZWQgYnkgcGFfbWVyZ2UxIHVwZGF0ZWQg YnkgcGFfbWVyZ2UyYl93aGVuCisoMiByb3dzKQorCitzdGVwIGMyOiBDT01NSVQ7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlIGIvc3JjL3Rl c3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQppbmRleCAwZGFlNDgzZTgyLi4yNmM0 MDZiNDI5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVk dWxlCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKQEAgLTQ1 LDYgKzQ1LDEwIEBAIHRlc3Q6IGluc2VydC1jb25mbGljdC1kby11cGRhdGUKIHRlc3Q6IGlu c2VydC1jb25mbGljdC1kby11cGRhdGUtMgogdGVzdDogaW5zZXJ0LWNvbmZsaWN0LWRvLXVw ZGF0ZS0zCiB0ZXN0OiBpbnNlcnQtY29uZmxpY3Qtc3BlY2NvbmZsaWN0Cit0ZXN0OiBtZXJn ZS1pbnNlcnQtdXBkYXRlCit0ZXN0OiBtZXJnZS1kZWxldGUKK3Rlc3Q6IG1lcmdlLXVwZGF0 ZQordGVzdDogbWVyZ2UtbWF0Y2gtcmVjaGVjawogdGVzdDogZGVsZXRlLWFib3J0LXNhdmVw dAogdGVzdDogZGVsZXRlLWFib3J0LXNhdmVwdC0yCiB0ZXN0OiBhYm9ydGVkLWtleXJldm9r ZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL21lcmdlLWRlbGV0ZS5z cGVjIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL21lcmdlLWRlbGV0ZS5zcGVjCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjBlNzA1MzI3MGUKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvbWVyZ2UtZGVsZXRlLnNwZWMK QEAgLTAsMCArMSw1MCBAQAorIyBNRVJHRSBERUxFVEUKKyMKKyMgVGhpcyB0ZXN0IGxvb2tz IGF0IHRoZSBpbnRlcmFjdGlvbnMgaW52b2x2aW5nIGNvbmN1cnJlbnQgZGVsZXRlcworIyBj b21wYXJpbmcgdGhlIGJlaGF2aW9yIG9mIE1FUkdFLCBERUxFVEUgYW5kIFVQREFURQorCitz ZXR1cAoreworICBDUkVBVEUgVEFCTEUgdGFyZ2V0IChrZXkgaW50IHByaW1hcnkga2V5LCB2 YWwgdGV4dCk7CisgIElOU0VSVCBJTlRPIHRhcmdldCBWQUxVRVMgKDEsICdzZXR1cDEnKTsK K30KKwordGVhcmRvd24KK3sKKyAgRFJPUCBUQUJMRSB0YXJnZXQ7Cit9CisKK3Nlc3Npb24g InMxIgorc2V0dXAKK3sKKyAgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFQUQgQ09NTUlUVEVE OworfQorc3RlcCAiZGVsZXRlIiB7IERFTEVURSBGUk9NIHRhcmdldCB0IFdIRVJFIHQua2V5 ID0gMTsgfQorc3RlcCAibWVyZ2VfZGVsZXRlIiB7IE1FUkdFIElOVE8gdGFyZ2V0IHQgVVNJ TkcgKFNFTEVDVCAxIGFzIGtleSkgcyBPTiBzLmtleSA9IHQua2V5IFdIRU4gTUFUQ0hFRCBU SEVOIERFTEVURTsgfQorc3RlcCAiYzEiIHsgQ09NTUlUOyB9CisKK3Nlc3Npb24gInMyIgor c2V0dXAKK3sKKyAgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFQUQgQ09NTUlUVEVEOworfQor c3RlcCAidXBkYXRlMSIgeyBVUERBVEUgdGFyZ2V0IHQgU0VUIHZhbCA9IHQudmFsIHx8ICcg dXBkYXRlZCBieSB1cGRhdGUxJyBXSEVSRSB0LmtleSA9IDE7IH0KK3N0ZXAgIm1lcmdlMiIg eyBNRVJHRSBJTlRPIHRhcmdldCB0IFVTSU5HIChTRUxFQ1QgMSBhcyBrZXksICdtZXJnZTJh JyBhcyB2YWwpIHMgT04gcy5rZXkgPSB0LmtleSBXSEVOIE5PVCBNQVRDSEVEIFRIRU4gSU5T RVJUIFZBTFVFUyAocy5rZXksIHMudmFsKSBXSEVOIE1BVENIRUQgVEhFTiBVUERBVEUgc2V0 IGtleSA9IHQua2V5ICsgMSwgdmFsID0gdC52YWwgfHwgJyB1cGRhdGVkIGJ5ICcgfHwgcy52 YWw7IH0KK3N0ZXAgInNlbGVjdDIiIHsgU0VMRUNUICogRlJPTSB0YXJnZXQ7IH0KK3N0ZXAg ImMyIiB7IENPTU1JVDsgfQorCisjIEJhc2ljIGVmZmVjdHMKK3Blcm11dGF0aW9uICJkZWxl dGUiICJjMSIgInNlbGVjdDIiICJjMiIKK3Blcm11dGF0aW9uICJtZXJnZV9kZWxldGUiICJj MSIgInNlbGVjdDIiICJjMiIKKworIyBPbmUgYWZ0ZXIgdGhlIG90aGVyLCBubyBjb25jdXJy ZW5jeQorcGVybXV0YXRpb24gImRlbGV0ZSIgImMxIiAidXBkYXRlMSIgInNlbGVjdDIiICJj MiIKK3Blcm11dGF0aW9uICJtZXJnZV9kZWxldGUiICJjMSIgInVwZGF0ZTEiICJzZWxlY3Qy IiAiYzIiCitwZXJtdXRhdGlvbiAiZGVsZXRlIiAiYzEiICJtZXJnZTIiICJzZWxlY3QyIiAi YzIiCitwZXJtdXRhdGlvbiAibWVyZ2VfZGVsZXRlIiAiYzEiICJtZXJnZTIiICJzZWxlY3Qy IiAiYzIiCisKKyMgTm93IHdpdGggY29uY3VycmVuY3kKK3Blcm11dGF0aW9uICJkZWxldGUi ICJ1cGRhdGUxIiAiYzEiICJzZWxlY3QyIiAiYzIiCitwZXJtdXRhdGlvbiAibWVyZ2VfZGVs ZXRlIiAidXBkYXRlMSIgImMxIiAic2VsZWN0MiIgImMyIgorcGVybXV0YXRpb24gImRlbGV0 ZSIgIm1lcmdlMiIgImMxIiAic2VsZWN0MiIgImMyIgorcGVybXV0YXRpb24gIm1lcmdlX2Rl bGV0ZSIgIm1lcmdlMiIgImMxIiAic2VsZWN0MiIgImMyIgpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvaXNvbGF0aW9uL3NwZWNzL21lcmdlLWluc2VydC11cGRhdGUuc3BlYyBiL3NyYy90ZXN0 L2lzb2xhdGlvbi9zcGVjcy9tZXJnZS1pbnNlcnQtdXBkYXRlLnNwZWMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMWJmMWVkNDYxZAotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9tZXJnZS1pbnNlcnQtdXBkYXRlLnNwZWMK QEAgLTAsMCArMSw1MSBAQAorIyBNRVJHRSBJTlNFUlQgVVBEQVRFCisjCisjIFRoaXMgbG9v a3MgYXQgaG93IHdlIGhhbmRsZSBjb25jdXJyZW50IElOU0VSVHMsIGlsbHVzdHJhdGluZyBo b3cgdGhlCisjIGJlaGF2aW9yIGRpZmZlcnMgZnJvbSBJTlNFUlQgLi4uIE9OIENPTkZMSUNU CisKK3NldHVwCit7CisgIENSRUFURSBUQUJMRSB0YXJnZXQgKGtleSBpbnQgcHJpbWFyeSBr ZXksIHZhbCB0ZXh0KTsKK30KKwordGVhcmRvd24KK3sKKyAgRFJPUCBUQUJMRSB0YXJnZXQ7 Cit9CisKK3Nlc3Npb24gInMxIgorc2V0dXAKK3sKKyAgQkVHSU4gSVNPTEFUSU9OIExFVkVM IFJFQUQgQ09NTUlUVEVEOworfQorc3RlcCAibWVyZ2UxIiB7IE1FUkdFIElOVE8gdGFyZ2V0 IHQgVVNJTkcgKFNFTEVDVCAxIGFzIGtleSwgJ21lcmdlMScgYXMgdmFsKSBzIE9OIHMua2V5 ID0gdC5rZXkgV0hFTiBOT1QgTUFUQ0hFRCBUSEVOIElOU0VSVCBWQUxVRVMgKHMua2V5LCBz LnZhbCkgV0hFTiBNQVRDSEVEIFRIRU4gVVBEQVRFIHNldCB2YWwgPSB0LnZhbCB8fCAnIHVw ZGF0ZWQgYnkgbWVyZ2UxJzsgfQorc3RlcCAiZGVsZXRlMSIgeyBERUxFVEUgRlJPTSB0YXJn ZXQgV0hFUkUga2V5ID0gMTsgfQorc3RlcCAiaW5zZXJ0MSIgeyBJTlNFUlQgSU5UTyB0YXJn ZXQgVkFMVUVTICgxLCAnaW5zZXJ0MScpOyB9CitzdGVwICJjMSIgeyBDT01NSVQ7IH0KK3N0 ZXAgImExIiB7IEFCT1JUOyB9CisKK3Nlc3Npb24gInMyIgorc2V0dXAKK3sKKyAgQkVHSU4g SVNPTEFUSU9OIExFVkVMIFJFQUQgQ09NTUlUVEVEOworfQorc3RlcCAibWVyZ2UyIiB7IE1F UkdFIElOVE8gdGFyZ2V0IHQgVVNJTkcgKFNFTEVDVCAxIGFzIGtleSwgJ21lcmdlMicgYXMg dmFsKSBzIE9OIHMua2V5ID0gdC5rZXkgV0hFTiBOT1QgTUFUQ0hFRCBUSEVOIElOU0VSVCBW QUxVRVMgKHMua2V5LCBzLnZhbCkgV0hFTiBNQVRDSEVEIFRIRU4gVVBEQVRFIHNldCB2YWwg PSB0LnZhbCB8fCAnIHVwZGF0ZWQgYnkgbWVyZ2UyJzsgfQorCitzdGVwICJtZXJnZTJpIiB7 IE1FUkdFIElOVE8gdGFyZ2V0IHQgVVNJTkcgKFNFTEVDVCAxIGFzIGtleSwgJ21lcmdlMicg YXMgdmFsKSBzIE9OIHMua2V5ID0gdC5rZXkgV0hFTiBNQVRDSEVEIFRIRU4gVVBEQVRFIHNl dCB2YWwgPSB0LnZhbCB8fCAnIHVwZGF0ZWQgYnkgbWVyZ2UyJzsgfQorCitzdGVwICJzZWxl Y3QyIiB7IFNFTEVDVCAqIEZST00gdGFyZ2V0OyB9CitzdGVwICJjMiIgeyBDT01NSVQ7IH0K KworIyBCYXNpYyBlZmZlY3RzCitwZXJtdXRhdGlvbiAibWVyZ2UxIiAiYzEiICJzZWxlY3Qy IiAiYzIiCitwZXJtdXRhdGlvbiAibWVyZ2UxIiAiYzEiICJtZXJnZTIiICJzZWxlY3QyIiAi YzIiCisKKyMgY2hlY2sgY29uY3VycmVudCBpbnNlcnRzCitwZXJtdXRhdGlvbiAiaW5zZXJ0 MSIgIm1lcmdlMiIgImMxIiAic2VsZWN0MiIgImMyIgorcGVybXV0YXRpb24gIm1lcmdlMSIg Im1lcmdlMiIgImMxIiAic2VsZWN0MiIgImMyIgorcGVybXV0YXRpb24gIm1lcmdlMSIgIm1l cmdlMiIgImExIiAic2VsZWN0MiIgImMyIgorCisjIGNoZWNrIGhvdyB3ZSBoYW5kbGUgd2hl biB2aXNpYmxlIHJvdyBoYXMgYmVlbiBjb25jdXJyZW50bHkgZGVsZXRlZCwgdGhlbiBzYW1l IGtleSByZS1pbnNlcnRlZAorcGVybXV0YXRpb24gImRlbGV0ZTEiICJpbnNlcnQxIiAiYzEi ICJtZXJnZTIiICJzZWxlY3QyIiAiYzIiCitwZXJtdXRhdGlvbiAiZGVsZXRlMSIgImluc2Vy dDEiICJtZXJnZTIiICJjMSIgInNlbGVjdDIiICJjMiIKK3Blcm11dGF0aW9uICJkZWxldGUx IiAiaW5zZXJ0MSIgIm1lcmdlMmkiICJjMSIgInNlbGVjdDIiICJjMiIKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9tZXJnZS1tYXRjaC1yZWNoZWNrLnNwZWMgYi9z cmMvdGVzdC9pc29sYXRpb24vc3BlY3MvbWVyZ2UtbWF0Y2gtcmVjaGVjay5zcGVjCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmQ1NjQwMGE2YTIKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvbWVyZ2UtbWF0Y2gtcmVjaGVj ay5zcGVjCkBAIC0wLDAgKzEsNzcgQEAKKyMgTUVSR0UgTUFUQ0hFRCBSRUNIRUNLCisjCisj IFRoaXMgdGVzdCBsb29rcyBhdCB3aGF0IGhhcHBlbnMgd2hlbiB3ZSBoYXZlIGNvbXBsZXgK KyMgV0hFTiBNQVRDSEVEIEFORCBjb25kaXRpb25zIGFuZCBhIGNvbmN1cnJlbnQgVVBEQVRF IGNhdXNlcyBhCisjIHJlY2hlY2sgb2YgdGhlIEFORCBjb25kaXRpb24gb24gdGhlIG5ldyBy b3cKKworc2V0dXAKK3sKKyAgQ1JFQVRFIFRBQkxFIHRhcmdldCAoa2V5IGludCBwcmltYXJ5 IGtleSwgYmFsYW5jZSBpbnRlZ2VyLCBzdGF0dXMgdGV4dCwgdmFsIHRleHQpOworICBJTlNF UlQgSU5UTyB0YXJnZXQgVkFMVUVTICgxLCAxNjAsICdzMScsICdzZXR1cCcpOworfQorCit0 ZWFyZG93bgoreworICBEUk9QIFRBQkxFIHRhcmdldDsKK30KKworc2Vzc2lvbiAiczEiCitz ZXR1cAoreworICBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVBRCBDT01NSVRURUQ7Cit9Citz dGVwICJtZXJnZV9zdGF0dXMiCit7CisgIE1FUkdFIElOVE8gdGFyZ2V0IHQKKyAgVVNJTkcg KFNFTEVDVCAxIGFzIGtleSkgcworICBPTiBzLmtleSA9IHQua2V5CisgIFdIRU4gTUFUQ0hF RCBBTkQgc3RhdHVzID0gJ3MxJyBUSEVOCisJVVBEQVRFIFNFVCBzdGF0dXMgPSAnczInLCB2 YWwgPSB0LnZhbCB8fCAnIHdoZW4xJworICBXSEVOIE1BVENIRUQgQU5EIHN0YXR1cyA9ICdz MicgVEhFTgorCVVQREFURSBTRVQgc3RhdHVzID0gJ3MzJywgdmFsID0gdC52YWwgfHwgJyB3 aGVuMicKKyAgV0hFTiBNQVRDSEVEIEFORCBzdGF0dXMgPSAnczMnIFRIRU4KKwlVUERBVEUg U0VUIHN0YXR1cyA9ICdzNCcsIHZhbCA9IHQudmFsIHx8ICcgd2hlbjMnOworfQorCitzdGVw ICJtZXJnZV9iYWwiCit7CisgIE1FUkdFIElOVE8gdGFyZ2V0IHQKKyAgVVNJTkcgKFNFTEVD VCAxIGFzIGtleSkgcworICBPTiBzLmtleSA9IHQua2V5CisgIFdIRU4gTUFUQ0hFRCBBTkQg YmFsYW5jZSA8IDEwMCBUSEVOCisJVVBEQVRFIFNFVCBiYWxhbmNlID0gYmFsYW5jZSAqIDIs IHZhbCA9IHQudmFsIHx8ICcgd2hlbjEnCisgIFdIRU4gTUFUQ0hFRCBBTkQgYmFsYW5jZSA8 IDIwMCBUSEVOCisJVVBEQVRFIFNFVCBiYWxhbmNlID0gYmFsYW5jZSAqIDQsIHZhbCA9IHQu dmFsIHx8ICcgd2hlbjInCisgIFdIRU4gTUFUQ0hFRCBBTkQgYmFsYW5jZSA8IDMwMCBUSEVO CisJVVBEQVRFIFNFVCBiYWxhbmNlID0gYmFsYW5jZSAqIDgsIHZhbCA9IHQudmFsIHx8ICcg d2hlbjMnOworfQorCitzdGVwICJzZWxlY3QxIiB7IFNFTEVDVCAqIEZST00gdGFyZ2V0OyB9 CitzdGVwICJjMSIgeyBDT01NSVQ7IH0KKworc2Vzc2lvbiAiczIiCitzZXR1cAoreworICBC RUdJTiBJU09MQVRJT04gTEVWRUwgUkVBRCBDT01NSVRURUQ7Cit9CitzdGVwICJ1cGRhdGUx IiB7IFVQREFURSB0YXJnZXQgdCBTRVQgYmFsYW5jZSA9IGJhbGFuY2UgKyAxMCwgdmFsID0g dC52YWwgfHwgJyB1cGRhdGVkIGJ5IHVwZGF0ZTEnIFdIRVJFIHQua2V5ID0gMTsgfQorc3Rl cCAidXBkYXRlMiIgeyBVUERBVEUgdGFyZ2V0IHQgU0VUIHN0YXR1cyA9ICdzMicsIHZhbCA9 IHQudmFsIHx8ICcgdXBkYXRlZCBieSB1cGRhdGUyJyBXSEVSRSB0LmtleSA9IDE7IH0KK3N0 ZXAgInVwZGF0ZTMiIHsgVVBEQVRFIHRhcmdldCB0IFNFVCBzdGF0dXMgPSAnczMnLCB2YWwg PSB0LnZhbCB8fCAnIHVwZGF0ZWQgYnkgdXBkYXRlMycgV0hFUkUgdC5rZXkgPSAxOyB9Citz dGVwICJ1cGRhdGU1IiB7IFVQREFURSB0YXJnZXQgdCBTRVQgc3RhdHVzID0gJ3M1JywgdmFs ID0gdC52YWwgfHwgJyB1cGRhdGVkIGJ5IHVwZGF0ZTUnIFdIRVJFIHQua2V5ID0gMTsgfQor c3RlcCAidXBkYXRlX2JhbDEiIHsgVVBEQVRFIHRhcmdldCB0IFNFVCBiYWxhbmNlID0gNTAs IHZhbCA9IHQudmFsIHx8ICcgdXBkYXRlZCBieSB1cGRhdGVfYmFsMScgV0hFUkUgdC5rZXkg PSAxOyB9CitzdGVwICJjMiIgeyBDT01NSVQ7IH0KKworIyBtZXJnZV9zdGF0dXMgc2VlcyBj b25jdXJyZW50bHkgdXBkYXRlZCByb3cgYW5kIHJlY2hlY2tzIFdIRU4gY29uZGl0aW9ucywg YnV0IHJlY2hlY2sgcGFzc2VzIGFuZCBmaW5hbCBzdGF0dXMgPSAnczInCitwZXJtdXRhdGlv biAidXBkYXRlMSIgIm1lcmdlX3N0YXR1cyIgImMyIiAic2VsZWN0MSIgImMxIgorCisjIG1l cmdlX3N0YXR1cyBzZWVzIGNvbmN1cnJlbnRseSB1cGRhdGVkIHJvdyBhbmQgcmVjaGVja3Mg V0hFTiBjb25kaXRpb25zLCByZWNoZWNrIGZhaWxzLCBzbyBmaW5hbCBzdGF0dXMgPSAnczMn IG5vdCAnczInCitwZXJtdXRhdGlvbiAidXBkYXRlMiIgIm1lcmdlX3N0YXR1cyIgImMyIiAi c2VsZWN0MSIgImMxIgorCisjIG1lcmdlX3N0YXR1cyBzZWVzIGNvbmN1cnJlbnRseSB1cGRh dGVkIHJvdyBhbmQgcmVjaGVja3MgV0hFTiBjb25kaXRpb25zLCByZWNoZWNrIGZhaWxzLCBz byBmaW5hbCBzdGF0dXMgPSAnczQnIG5vdCAnczInCitwZXJtdXRhdGlvbiAidXBkYXRlMyIg Im1lcmdlX3N0YXR1cyIgImMyIiAic2VsZWN0MSIgImMxIgorCisjIG1lcmdlX3N0YXR1cyBz ZWVzIGNvbmN1cnJlbnRseSB1cGRhdGVkIHJvdyBhbmQgcmVjaGVja3MgV0hFTiBjb25kaXRp b25zLCByZWNoZWNrIGZhaWxzLCBidXQgd2Ugc2tpcCB1cGRhdGUgYW5kIE1FUkdFIGRvZXMg bm90aGluZworcGVybXV0YXRpb24gInVwZGF0ZTUiICJtZXJnZV9zdGF0dXMiICJjMiIgInNl bGVjdDEiICJjMSIKKworIyBtZXJnZV9iYWwgc2VlcyBjb25jdXJyZW50bHkgdXBkYXRlZCBy b3cgYW5kIHJlY2hlY2tzIFdIRU4gY29uZGl0aW9ucywgcmVjaGVjayBmYWlscywgc28gZmlu YWwgYmFsYW5jZSA9IDEwMCBub3QgNjQwCitwZXJtdXRhdGlvbiAidXBkYXRlX2JhbDEiICJt ZXJnZV9iYWwiICJjMiIgInNlbGVjdDEiICJjMSIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lz b2xhdGlvbi9zcGVjcy9tZXJnZS11cGRhdGUuc3BlYyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9z cGVjcy9tZXJnZS11cGRhdGUuc3BlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwLi45NWRjYTUwYTVlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvaXNvbGF0 aW9uL3NwZWNzL21lcmdlLXVwZGF0ZS5zcGVjCkBAIC0wLDAgKzEsMTU2IEBACisjIE1FUkdF IFVQREFURQorIworIyBUaGlzIHRlc3QgZXhlcmNpc2VzIGF0eXBpY2FsIGNhc2VzCisjIDEu IFVQREFURXMgb2YgUEtzIHRoYXQgY2hhbmdlIHRoZSBqb2luIGluIHRoZSBPTiBjbGF1c2UK KyMgMi4gVVBEQVRFcyB3aXRoIFdIRU4gY29uZGl0aW9ucyB0aGF0IHdvdWxkIGZhaWwgYWZ0 ZXIgY29uY3VycmVudCB1cGRhdGUKKyMgMy4gVVBEQVRFcyB3aXRoIGV4dHJhIE9OIGNvbmRp dGlvbnMgdGhhdCB3b3VsZCBmYWlsIGFmdGVyIGNvbmN1cnJlbnQgdXBkYXRlCisKK3NldHVw Cit7CisgIENSRUFURSBUQUJMRSB0YXJnZXQgKGtleSBpbnQgcHJpbWFyeSBrZXksIHZhbCB0 ZXh0KTsKKyAgSU5TRVJUIElOVE8gdGFyZ2V0IFZBTFVFUyAoMSwgJ3NldHVwMScpOworCisg IENSRUFURSBUQUJMRSBwYV90YXJnZXQgKGtleSBpbnRlZ2VyLCB2YWwgdGV4dCkKKwkgIFBB UlRJVElPTiBCWSBMSVNUIChrZXkpOworICBDUkVBVEUgVEFCTEUgcGFydDEgKGtleSBpbnRl Z2VyLCB2YWwgdGV4dCk7CisgIENSRUFURSBUQUJMRSBwYXJ0MiAodmFsIHRleHQsIGtleSBp bnRlZ2VyKTsKKyAgQ1JFQVRFIFRBQkxFIHBhcnQzIChrZXkgaW50ZWdlciwgdmFsIHRleHQp OworCisgIEFMVEVSIFRBQkxFIHBhX3RhcmdldCBBVFRBQ0ggUEFSVElUSU9OIHBhcnQxIEZP UiBWQUxVRVMgSU4gKDEsNCk7CisgIEFMVEVSIFRBQkxFIHBhX3RhcmdldCBBVFRBQ0ggUEFS VElUSU9OIHBhcnQyIEZPUiBWQUxVRVMgSU4gKDIsNSw2KTsKKyAgQUxURVIgVEFCTEUgcGFf dGFyZ2V0IEFUVEFDSCBQQVJUSVRJT04gcGFydDMgREVGQVVMVDsKKworICBJTlNFUlQgSU5U TyBwYV90YXJnZXQgVkFMVUVTICgxLCAnaW5pdGlhbCcpOworICBJTlNFUlQgSU5UTyBwYV90 YXJnZXQgVkFMVUVTICgyLCAnaW5pdGlhbCcpOworfQorCit0ZWFyZG93bgoreworICBEUk9Q IFRBQkxFIHRhcmdldDsKKyAgRFJPUCBUQUJMRSBwYV90YXJnZXQgQ0FTQ0FERTsKK30KKwor c2Vzc2lvbiAiczEiCitzZXR1cAoreworICBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVBRCBD T01NSVRURUQ7Cit9CitzdGVwICJtZXJnZTEiCit7CisgIE1FUkdFIElOVE8gdGFyZ2V0IHQK KyAgVVNJTkcgKFNFTEVDVCAxIGFzIGtleSwgJ21lcmdlMScgYXMgdmFsKSBzCisgIE9OIHMu a2V5ID0gdC5rZXkKKyAgV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIFZBTFVFUyAo cy5rZXksIHMudmFsKQorICBXSEVOIE1BVENIRUQgVEhFTgorICAgIFVQREFURSBzZXQga2V5 ID0gdC5rZXkgKyAxLCB2YWwgPSB0LnZhbCB8fCAnIHVwZGF0ZWQgYnkgJyB8fCBzLnZhbDsK K30KK3N0ZXAgInBhX21lcmdlMSIKK3sKKyAgTUVSR0UgSU5UTyBwYV90YXJnZXQgdAorICBV U0lORyAoU0VMRUNUIDEgYXMga2V5LCAncGFfbWVyZ2UxJyBhcyB2YWwpIHMKKyAgT04gcy5r ZXkgPSB0LmtleQorICBXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgVkFMVUVTIChz LmtleSwgcy52YWwpCisgIFdIRU4gTUFUQ0hFRCBUSEVOCisgICAgVVBEQVRFIHNldCB2YWwg PSB0LnZhbCB8fCAnIHVwZGF0ZWQgYnkgJyB8fCBzLnZhbDsKK30KK3N0ZXAgInBhX21lcmdl MiIKK3sKKyAgTUVSR0UgSU5UTyBwYV90YXJnZXQgdAorICBVU0lORyAoU0VMRUNUIDEgYXMg a2V5LCAncGFfbWVyZ2UyJyBhcyB2YWwpIHMKKyAgT04gcy5rZXkgPSB0LmtleQorICBXSEVO IE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgVkFMVUVTIChzLmtleSwgcy52YWwpCisgIFdI RU4gTUFUQ0hFRCBUSEVOCisgICAgVVBEQVRFIHNldCBrZXkgPSB0LmtleSArIDEsIHZhbCA9 IHQudmFsIHx8ICcgdXBkYXRlZCBieSAnIHx8IHMudmFsOworfQorc3RlcCAicGFfbWVyZ2Uz IgoreworICBNRVJHRSBJTlRPIHBhX3RhcmdldCB0CisgIFVTSU5HIChTRUxFQ1QgMSBhcyBr ZXksICdwYV9tZXJnZTInIGFzIHZhbCkgcworICBPTiBzLmtleSA9IHQua2V5CisgIFdIRU4g Tk9UIE1BVENIRUQgVEhFTgorCUlOU0VSVCBWQUxVRVMgKHMua2V5LCBzLnZhbCkKKyAgV0hF TiBNQVRDSEVEIFRIRU4KKyAgICBVUERBVEUgc2V0IHZhbCA9ICdwcmVmaXggJyB8fCB0LnZh bDsKK30KK3N0ZXAgImMxIiB7IENPTU1JVDsgfQorc3RlcCAiYTEiIHsgQUJPUlQ7IH0KKwor c2Vzc2lvbiAiczIiCitzZXR1cAoreworICBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVBRCBD T01NSVRURUQ7Cit9CitzdGVwICJtZXJnZTJhIgoreworICBNRVJHRSBJTlRPIHRhcmdldCB0 CisgIFVTSU5HIChTRUxFQ1QgMSBhcyBrZXksICdtZXJnZTJhJyBhcyB2YWwpIHMKKyAgT04g cy5rZXkgPSB0LmtleQorICBXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgVkFMVUVT IChzLmtleSwgcy52YWwpCisgIFdIRU4gTUFUQ0hFRCBUSEVOCisJVVBEQVRFIHNldCBrZXkg PSB0LmtleSArIDEsIHZhbCA9IHQudmFsIHx8ICcgdXBkYXRlZCBieSAnIHx8IHMudmFsOwor fQorc3RlcCAibWVyZ2UyYiIKK3sKKyAgTUVSR0UgSU5UTyB0YXJnZXQgdAorICBVU0lORyAo U0VMRUNUIDEgYXMga2V5LCAnbWVyZ2UyYicgYXMgdmFsKSBzCisgIE9OIHMua2V5ID0gdC5r ZXkKKyAgV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIFZBTFVFUyAocy5rZXksIHMu dmFsKQorICBXSEVOIE1BVENIRUQgQU5EIHQua2V5IDwgMiBUSEVOCisJVVBEQVRFIHNldCBr ZXkgPSB0LmtleSArIDEsIHZhbCA9IHQudmFsIHx8ICcgdXBkYXRlZCBieSAnIHx8IHMudmFs OworfQorc3RlcCAibWVyZ2UyYyIKK3sKKyAgTUVSR0UgSU5UTyB0YXJnZXQgdAorICBVU0lO RyAoU0VMRUNUIDEgYXMga2V5LCAnbWVyZ2UyYycgYXMgdmFsKSBzCisgIE9OIHMua2V5ID0g dC5rZXkgQU5EIHQua2V5IDwgMgorICBXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQg VkFMVUVTIChzLmtleSwgcy52YWwpCisgIFdIRU4gTUFUQ0hFRCBUSEVOCisJVVBEQVRFIHNl dCBrZXkgPSB0LmtleSArIDEsIHZhbCA9IHQudmFsIHx8ICcgdXBkYXRlZCBieSAnIHx8IHMu dmFsOworfQorc3RlcCAicGFfbWVyZ2UyYSIKK3sKKyAgTUVSR0UgSU5UTyBwYV90YXJnZXQg dAorICBVU0lORyAoU0VMRUNUIDEgYXMga2V5LCAncGFfbWVyZ2UyYScgYXMgdmFsKSBzCisg IE9OIHMua2V5ID0gdC5rZXkKKyAgV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIFZB TFVFUyAocy5rZXksIHMudmFsKQorICBXSEVOIE1BVENIRUQgVEhFTgorCVVQREFURSBzZXQg a2V5ID0gdC5rZXkgKyAxLCB2YWwgPSB0LnZhbCB8fCAnIHVwZGF0ZWQgYnkgJyB8fCBzLnZh bDsKK30KKyMgTUVSR0UgcHJvY2VlZHMgb25seSBpZiAndmFsJyB1bmNoYW5nZWQKK3N0ZXAg InBhX21lcmdlMmJfd2hlbiIKK3sKKyAgTUVSR0UgSU5UTyBwYV90YXJnZXQgdAorICBVU0lO RyAoU0VMRUNUIDEgYXMga2V5LCAncGFfbWVyZ2UyYl93aGVuJyBhcyB2YWwpIHMKKyAgT04g cy5rZXkgPSB0LmtleQorICBXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgVkFMVUVT IChzLmtleSwgcy52YWwpCisgIFdIRU4gTUFUQ0hFRCBBTkQgdC52YWwgbGlrZSAnaW5pdGlh bCUnIFRIRU4KKwlVUERBVEUgc2V0IGtleSA9IHQua2V5ICsgMSwgdmFsID0gdC52YWwgfHwg JyB1cGRhdGVkIGJ5ICcgfHwgcy52YWw7Cit9CitzdGVwICJzZWxlY3QyIiB7IFNFTEVDVCAq IEZST00gdGFyZ2V0OyB9CitzdGVwICJwYV9zZWxlY3QyIiB7IFNFTEVDVCAqIEZST00gcGFf dGFyZ2V0OyB9CitzdGVwICJjMiIgeyBDT01NSVQ7IH0KKworIyBCYXNpYyBlZmZlY3RzCitw ZXJtdXRhdGlvbiAibWVyZ2UxIiAiYzEiICJzZWxlY3QyIiAiYzIiCisKKyMgT25lIGFmdGVy IHRoZSBvdGhlciwgbm8gY29uY3VycmVuY3kKK3Blcm11dGF0aW9uICJtZXJnZTEiICJjMSIg Im1lcmdlMmEiICJzZWxlY3QyIiAiYzIiCisKKyMgTm93IHdpdGggY29uY3VycmVuY3kKK3Bl cm11dGF0aW9uICJtZXJnZTEiICJtZXJnZTJhIiAiYzEiICJzZWxlY3QyIiAiYzIiCitwZXJt dXRhdGlvbiAibWVyZ2UxIiAibWVyZ2UyYSIgImExIiAic2VsZWN0MiIgImMyIgorcGVybXV0 YXRpb24gIm1lcmdlMSIgIm1lcmdlMmIiICJjMSIgInNlbGVjdDIiICJjMiIKK3Blcm11dGF0 aW9uICJtZXJnZTEiICJtZXJnZTJjIiAiYzEiICJzZWxlY3QyIiAiYzIiCitwZXJtdXRhdGlv biAicGFfbWVyZ2UxIiAicGFfbWVyZ2UyYSIgImMxIiAicGFfc2VsZWN0MiIgImMyIgorcGVy bXV0YXRpb24gInBhX21lcmdlMiIgInBhX21lcmdlMmEiICJjMSIgInBhX3NlbGVjdDIiICJj MiIgIyBmYWlscworcGVybXV0YXRpb24gInBhX21lcmdlMiIgImMxIiAicGFfbWVyZ2UyYSIg InBhX3NlbGVjdDIiICJjMiIgIyBzdWNjZWVkcworI3Blcm11dGF0aW9uICJwYV9tZXJnZTMi ICJwYV9tZXJnZTJiX3doZW4iICJjMSIgInBhX3NlbGVjdDIiICJjMiIgIyBXSEVOIG5vdCBz YXRpc2ZpZWQgYnkgdXBkYXRlZCB0dXBsZQorcGVybXV0YXRpb24gInBhX21lcmdlMSIgInBh X21lcmdlMmJfd2hlbiIgImMxIiAicGFfc2VsZWN0MiIgImMyIiAjIFdIRU4gc2F0aXNmaWVk IGJ5IHVwZGF0ZWQgdHVwbGUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvaWRlbnRpdHkub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pZGVudGl0eS5v dXQKaW5kZXggOTk4MTE1NzBiNy4uNWYwM2Q4ZTE0ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9pZGVudGl0eS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9pZGVudGl0eS5vdXQKQEAgLTU2MCwzICs1NjAsNTcgQEAgQ1JFQVRFIFRBQkxF IGl0ZXN0MTUgKGlkIGludGVnZXIgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSBOT1Qg TlVMTCk7CiBEUk9QIFRBQkxFIGl0ZXN0MTU7CiBDUkVBVEUgVEFCTEUgaXRlc3QxNSAoaWQg aW50ZWdlciBOT1QgTlVMTCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZKTsKIERST1Ag VEFCTEUgaXRlc3QxNTsKKy0tIE1FUkdFIHRlc3RzCitDUkVBVEUgVEFCTEUgaXRlc3QxNSAo YSBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSwgYiB0ZXh0KTsKK0NSRUFURSBU QUJMRSBpdGVzdDE2IChhIGludCBHRU5FUkFURUQgQlkgREVGQVVMVCBBUyBJREVOVElUWSwg YiB0ZXh0KTsKK01FUkdFIElOVE8gaXRlc3QxNSB0CitVU0lORyAoU0VMRUNUIDEwIEFTIHNf YSwgJ2luc2VydGVkIGJ5IG1lcmdlJyBBUyBzX2IpIHMKK09OIHQuYSA9IHMuc19hCitXSEVO IE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgKGEsIGIpIFZBTFVFUyAocy5zX2EsIHMuc19i KTsKK0VSUk9SOiAgY2Fubm90IGluc2VydCBhIG5vbi1ERUZBVUxUIHZhbHVlIGludG8gY29s dW1uICJhIgorREVUQUlMOiAgQ29sdW1uICJhIiBpcyBhbiBpZGVudGl0eSBjb2x1bW4gZGVm aW5lZCBhcyBHRU5FUkFURUQgQUxXQVlTLgorSElOVDogIFVzZSBPVkVSUklESU5HIFNZU1RF TSBWQUxVRSB0byBvdmVycmlkZS4KKy0tIFVzZWQgdG8gZmFpbCwgYnV0IG5vdyBpdCB3b3Jr cyBhbmQgaWdub3JlcyB0aGUgdXNlciBzdXBwbGllZCB2YWx1ZQorTUVSR0UgSU5UTyBpdGVz dDE1IHQKK1VTSU5HIChTRUxFQ1QgMjAgQVMgc19hLCAnaW5zZXJ0ZWQgYnkgbWVyZ2UnIEFT IHNfYikgcworT04gdC5hID0gcy5zX2EKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCUlOU0VS VCAoYSwgYikgT1ZFUlJJRElORyBVU0VSIFZBTFVFIFZBTFVFUyAocy5zX2EsIHMuc19iKTsK K01FUkdFIElOVE8gaXRlc3QxNSB0CitVU0lORyAoU0VMRUNUIDMwIEFTIHNfYSwgJ2luc2Vy dGVkIGJ5IG1lcmdlJyBBUyBzX2IpIHMKK09OIHQuYSA9IHMuc19hCitXSEVOIE5PVCBNQVRD SEVEIFRIRU4KKwlJTlNFUlQgKGEsIGIpIE9WRVJSSURJTkcgU1lTVEVNIFZBTFVFIFZBTFVF UyAocy5zX2EsIHMuc19iKTsKK01FUkdFIElOVE8gaXRlc3QxNiB0CitVU0lORyAoU0VMRUNU IDEwIEFTIHNfYSwgJ2luc2VydGVkIGJ5IG1lcmdlJyBBUyBzX2IpIHMKK09OIHQuYSA9IHMu c19hCitXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgKGEsIGIpIFZBTFVFUyAocy5z X2EsIHMuc19iKTsKK01FUkdFIElOVE8gaXRlc3QxNiB0CitVU0lORyAoU0VMRUNUIDIwIEFT IHNfYSwgJ2luc2VydGVkIGJ5IG1lcmdlJyBBUyBzX2IpIHMKK09OIHQuYSA9IHMuc19hCitX SEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgKGEsIGIpIE9WRVJSSURJTkcgVVNFUiBW QUxVRSBWQUxVRVMgKHMuc19hLCBzLnNfYik7CitNRVJHRSBJTlRPIGl0ZXN0MTYgdAorVVNJ TkcgKFNFTEVDVCAzMCBBUyBzX2EsICdpbnNlcnRlZCBieSBtZXJnZScgQVMgc19iKSBzCitP TiB0LmEgPSBzLnNfYQorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIChhLCBiKSBP VkVSUklESU5HIFNZU1RFTSBWQUxVRSBWQUxVRVMgKHMuc19hLCBzLnNfYik7CitTRUxFQ1Qg KiBGUk9NIGl0ZXN0MTU7CisgYSAgfCAgICAgICAgIGIgICAgICAgICAKKy0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLQorICAxIHwgaW5zZXJ0ZWQgYnkgbWVyZ2UKKyAzMCB8IGluc2VydGVk IGJ5IG1lcmdlCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIGl0ZXN0MTY7CisgYSAgfCAg ICAgICAgIGIgICAgICAgICAKKy0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEwIHwgaW5z ZXJ0ZWQgYnkgbWVyZ2UKKyAgMSB8IGluc2VydGVkIGJ5IG1lcmdlCisgMzAgfCBpbnNlcnRl ZCBieSBtZXJnZQorKDMgcm93cykKKworRFJPUCBUQUJMRSBpdGVzdDE1OworRFJPUCBUQUJM RSBpdGVzdDE2OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9tZXJn ZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21lcmdlLm91dApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi44MjE5ZDY4NDE4Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9tZXJnZS5vdXQKQEAgLTAsMCArMSwx NzExIEBACistLQorLS0gTUVSR0UKKy0tCistLVxzZXQgVkVSQk9TSVRZIHZlcmJvc2UKKy0t c2V0IGRlYnVnX3ByaW50X3Jld3JpdHRlbiA9IHRydWU7CistLXNldCBkZWJ1Z19wcmludF9w YXJzZSA9IHRydWU7CistLXNldCBkZWJ1Z19wcmludF9wcmV0dHkgPSB0cnVlOworQ1JFQVRF IFVTRVIgbWVyZ2VfcHJpdnM7CitDUkVBVEUgVVNFUiBtZXJnZV9ub19wcml2czsKK0RST1Ag VEFCTEUgSUYgRVhJU1RTIHRhcmdldDsKK05PVElDRTogIHRhYmxlICJ0YXJnZXQiIGRvZXMg bm90IGV4aXN0LCBza2lwcGluZworRFJPUCBUQUJMRSBJRiBFWElTVFMgc291cmNlOworTk9U SUNFOiAgdGFibGUgInNvdXJjZSIgZG9lcyBub3QgZXhpc3QsIHNraXBwaW5nCitDUkVBVEUg VEFCTEUgdGFyZ2V0ICh0aWQgaW50ZWdlciwgYmFsYW5jZSBpbnRlZ2VyKTsKK0NSRUFURSBU QUJMRSBzb3VyY2UgKHNpZCBpbnRlZ2VyLCBkZWx0YSBpbnRlZ2VyKTsgLS1ubyBpbmRleAor SU5TRVJUIElOVE8gdGFyZ2V0IFZBTFVFUyAoMSwgMTApOworSU5TRVJUIElOVE8gdGFyZ2V0 IFZBTFVFUyAoMiwgMjApOworSU5TRVJUIElOVE8gdGFyZ2V0IFZBTFVFUyAoMywgMzApOwor U0VMRUNUIHQuY3RpZCBpcyBub3QgbnVsbCBhcyBtYXRjaGVkLCB0LiosIHMuKiBGUk9NIHNv dXJjZSBzIEZVTEwgT1VURVIgSk9JTiB0YXJnZXQgdCBPTiBzLnNpZCA9IHQudGlkIE9SREVS IEJZIHQudGlkLCBzLnNpZDsKKyBtYXRjaGVkIHwgdGlkIHwgYmFsYW5jZSB8IHNpZCB8IGRl bHRhIAorLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLSstLS0tLSstLS0tLS0tCisgdCAgICAg ICB8ICAgMSB8ICAgICAgMTAgfCAgICAgfCAgICAgIAorIHQgICAgICAgfCAgIDIgfCAgICAg IDIwIHwgICAgIHwgICAgICAKKyB0ICAgICAgIHwgICAzIHwgICAgICAzMCB8ICAgICB8ICAg ICAgCisoMyByb3dzKQorCitBTFRFUiBUQUJMRSB0YXJnZXQgT1dORVIgVE8gbWVyZ2VfcHJp dnM7CitBTFRFUiBUQUJMRSBzb3VyY2UgT1dORVIgVE8gbWVyZ2VfcHJpdnM7CitDUkVBVEUg VEFCTEUgdGFyZ2V0MiAodGlkIGludGVnZXIsIGJhbGFuY2UgaW50ZWdlcik7CitDUkVBVEUg VEFCTEUgc291cmNlMiAoc2lkIGludGVnZXIsIGRlbHRhIGludGVnZXIpOworQUxURVIgVEFC TEUgdGFyZ2V0MiBPV05FUiBUTyBtZXJnZV9ub19wcml2czsKK0FMVEVSIFRBQkxFIHNvdXJj ZTIgT1dORVIgVE8gbWVyZ2Vfbm9fcHJpdnM7CitHUkFOVCBJTlNFUlQgT04gdGFyZ2V0IFRP IG1lcmdlX25vX3ByaXZzOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiBtZXJnZV9wcml2 czsKK0VYUExBSU4gKENPU1RTIE9GRikKK01FUkdFIElOVE8gdGFyZ2V0IHQKK1VTSU5HIHNv dXJjZSBBUyBzCitPTiB0LnRpZCA9IHMuc2lkCitXSEVOIE1BVENIRUQgVEhFTgorCURFTEVU RTsKKyAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBNZXJnZSBvbiB0YXJnZXQgdAor ICAgLT4gIE1lcmdlIEpvaW4KKyAgICAgICAgIE1lcmdlIENvbmQ6ICh0LnRpZCA9IHMuc2lk KQorICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0LnRpZAor ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHRhcmdldCB0CisgICAgICAgICAtPiAg U29ydAorICAgICAgICAgICAgICAgU29ydCBLZXk6IHMuc2lkCisgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gc291cmNlIHMKKyg5IHJvd3MpCisKKy0tCistLSBFcnJvcnMKKy0t CitNRVJHRSBJTlRPIHRhcmdldCB0IFJBTkRPTVdPUkQKK1VTSU5HIHNvdXJjZSBBUyBzCitP TiB0LnRpZCA9IHMuc2lkCitXSEVOIE1BVENIRUQgVEhFTgorCVVQREFURSBTRVQgYmFsYW5j ZSA9IDA7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICJSQU5ET01XT1JEIgor TElORSAxOiBNRVJHRSBJTlRPIHRhcmdldCB0IFJBTkRPTVdPUkQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeCistLSBNQVRDSEVEL0lOU0VSVCBlcnJvcgorTUVSR0UgSU5UTyB0 YXJnZXQgdAorVVNJTkcgc291cmNlIEFTIHMKK09OIHQudGlkID0gcy5zaWQKK1dIRU4gTUFU Q0hFRCBUSEVOCisJSU5TRVJUIERFRkFVTFQgVkFMVUVTOworRVJST1I6ICBzeW50YXggZXJy b3IgYXQgb3IgbmVhciAiSU5TRVJUIgorTElORSA1OiAgSU5TRVJUIERFRkFVTFQgVkFMVUVT OworICAgICAgICAgXgorLS0gaW5jb3JyZWN0bHkgc3BlY2lmeWluZyBJTlRPIHRhcmdldAor TUVSR0UgSU5UTyB0YXJnZXQgdAorVVNJTkcgc291cmNlIEFTIHMKK09OIHQudGlkID0gcy5z aWQKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCUlOU0VSVCBJTlRPIHRhcmdldCBERUZBVUxU IFZBTFVFUzsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIklOVE8iCitMSU5F IDU6ICBJTlNFUlQgSU5UTyB0YXJnZXQgREVGQVVMVCBWQUxVRVM7CisgICAgICAgICAgICAg ICAgXgorLS0gTXVsdGlwbGUgVkFMVUVTIGNsYXVzZQorTUVSR0UgSU5UTyB0YXJnZXQgdAor VVNJTkcgc291cmNlIEFTIHMKK09OIHQudGlkID0gcy5zaWQKK1dIRU4gTk9UIE1BVENIRUQg VEhFTgorCUlOU0VSVCBWQUxVRVMgKDEsMSksICgyLDIpOworRVJST1I6ICBzeW50YXggZXJy b3IgYXQgb3IgbmVhciAiLCIKK0xJTkUgNTogIElOU0VSVCBWQUxVRVMgKDEsMSksICgyLDIp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIFNFTEVDVCBxdWVyeSBmb3Ig SU5TRVJUCitNRVJHRSBJTlRPIHRhcmdldCB0CitVU0lORyBzb3VyY2UgQVMgcworT04gdC50 aWQgPSBzLnNpZAorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIFNFTEVDVCAoMSwg MSk7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICJTRUxFQ1QiCitMSU5FIDU6 ICBJTlNFUlQgU0VMRUNUICgxLCAxKTsKKyAgICAgICAgICAgICAgICBeCistLSBOT1QgTUFU Q0hFRC9VUERBVEUKK01FUkdFIElOVE8gdGFyZ2V0IHQKK1VTSU5HIHNvdXJjZSBBUyBzCitP TiB0LnRpZCA9IHMuc2lkCitXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlVUERBVEUgU0VUIGJh bGFuY2UgPSAwOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiVVBEQVRFIgor TElORSA1OiAgVVBEQVRFIFNFVCBiYWxhbmNlID0gMDsKKyAgICAgICAgIF4KKy0tIFVQREFU RSB0YWJsZW5hbWUKK01FUkdFIElOVE8gdGFyZ2V0IHQKK1VTSU5HIHNvdXJjZSBBUyBzCitP TiB0LnRpZCA9IHMuc2lkCitXSEVOIE1BVENIRUQgVEhFTgorCVVQREFURSB0YXJnZXQgU0VU IGJhbGFuY2UgPSAwOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAidGFyZ2V0 IgorTElORSA1OiAgVVBEQVRFIHRhcmdldCBTRVQgYmFsYW5jZSA9IDA7CisgICAgICAgICAg ICAgICAgXgorLS0gc291cmNlIGFuZCB0YXJnZXQgbmFtZXMgdGhlIHNhbWUKK01FUkdFIElO VE8gdGFyZ2V0CitVU0lORyB0YXJnZXQKK09OIHRpZCA9IHRpZAorV0hFTiBNQVRDSEVEIFRI RU4gRE8gTk9USElORzsKK0VSUk9SOiAgbmFtZSAidGFyZ2V0IiBzcGVjaWZpZWQgbW9yZSB0 aGFuIG9uY2UKK0RFVEFJTDogIFRoZSBuYW1lIGlzIHVzZWQgYm90aCBhcyBNRVJHRSB0YXJn ZXQgdGFibGUgYW5kIGRhdGEgc291cmNlLgorLS0gdW5zdXBwb3J0ZWQgcmVsYXRpb24gdHlw ZXMKKy0tIHZpZXcKK0NSRUFURSBWSUVXIHR2IEFTIFNFTEVDVCAqIEZST00gdGFyZ2V0Owor TUVSR0UgSU5UTyB0diB0CitVU0lORyBzb3VyY2UgcworT04gdC50aWQgPSBzLnNpZAorV0hF TiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIERFRkFVTFQgVkFMVUVTOworRVJST1I6ICBj YW5ub3QgZXhlY3V0ZSBNRVJHRSBvbiByZWxhdGlvbiAidHYiCitERVRBSUw6ICBUaGlzIG9w ZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB2aWV3cy4KK0RST1AgVklFVyB0djsKKy0t IG1hdGVyaWFsaXplZCB2aWV3CitDUkVBVEUgTUFURVJJQUxJWkVEIFZJRVcgbXYgQVMgU0VM RUNUICogRlJPTSB0YXJnZXQ7CitNRVJHRSBJTlRPIG12IHQKK1VTSU5HIHNvdXJjZSBzCitP TiB0LnRpZCA9IHMuc2lkCitXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgREVGQVVM VCBWQUxVRVM7CitFUlJPUjogIGNhbm5vdCBleGVjdXRlIE1FUkdFIG9uIHJlbGF0aW9uICJt diIKK0RFVEFJTDogIFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIG1hdGVy aWFsaXplZCB2aWV3cy4KK0RST1AgTUFURVJJQUxJWkVEIFZJRVcgbXY7CistLSBwZXJtaXNz aW9ucworTUVSR0UgSU5UTyB0YXJnZXQKK1VTSU5HIHNvdXJjZTIKK09OIHRhcmdldC50aWQg PSBzb3VyY2UyLnNpZAorV0hFTiBNQVRDSEVEIFRIRU4KKwlVUERBVEUgU0VUIGJhbGFuY2Ug PSAwOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3IgdGFibGUgc291cmNlMgorR1JB TlQgSU5TRVJUIE9OIHRhcmdldCBUTyBtZXJnZV9ub19wcml2czsKK1NFVCBTRVNTSU9OIEFV VEhPUklaQVRJT04gbWVyZ2Vfbm9fcHJpdnM7CitNRVJHRSBJTlRPIHRhcmdldAorVVNJTkcg c291cmNlMgorT04gdGFyZ2V0LnRpZCA9IHNvdXJjZTIuc2lkCitXSEVOIE1BVENIRUQgVEhF TgorCVVQREFURSBTRVQgYmFsYW5jZSA9IDA7CitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVk IGZvciB0YWJsZSB0YXJnZXQKK0dSQU5UIFVQREFURSBPTiB0YXJnZXQyIFRPIG1lcmdlX3By aXZzOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiBtZXJnZV9wcml2czsKK01FUkdFIElO VE8gdGFyZ2V0MgorVVNJTkcgc291cmNlCitPTiB0YXJnZXQyLnRpZCA9IHNvdXJjZS5zaWQK K1dIRU4gTUFUQ0hFRCBUSEVOCisJREVMRVRFOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmll ZCBmb3IgdGFibGUgdGFyZ2V0MgorTUVSR0UgSU5UTyB0YXJnZXQyCitVU0lORyBzb3VyY2UK K09OIHRhcmdldDIudGlkID0gc291cmNlLnNpZAorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJ SU5TRVJUIERFRkFVTFQgVkFMVUVTOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Ig dGFibGUgdGFyZ2V0MgorLS0gY2hlY2sgaWYgdGhlIHRhcmdldCBjYW4gYmUgYWNjZXNzZWQg ZnJvbSBzb3VyY2UgcmVsYXRpb24gc3VicXVlcnk7IHdlIHNob3VsZAorLS0gbm90IGJlIGFi bGUgdG8gZG8gc28KK01FUkdFIElOVE8gdGFyZ2V0IHQKK1VTSU5HIChTRUxFQ1QgKiBGUk9N IHNvdXJjZSBXSEVSRSB0LnRpZCA+IHNpZCkgcworT04gdC50aWQgPSBzLnNpZAorV0hFTiBO T1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIERFRkFVTFQgVkFMVUVTOworRVJST1I6ICBpbnZh bGlkIHJlZmVyZW5jZSB0byBGUk9NLWNsYXVzZSBlbnRyeSBmb3IgdGFibGUgInQiCitMSU5F IDI6IFVTSU5HIChTRUxFQ1QgKiBGUk9NIHNvdXJjZSBXSEVSRSB0LnRpZCA+IHNpZCkgcwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIFRo ZXJlIGlzIGFuIGVudHJ5IGZvciB0YWJsZSAidCIsIGJ1dCBpdCBjYW5ub3QgYmUgcmVmZXJl bmNlZCBmcm9tIHRoaXMgcGFydCBvZiB0aGUgcXVlcnkuCistLQorLS0gaW5pdGlhbCB0ZXN0 cworLS0KKy0tIHplcm8gcm93cyBpbiBzb3VyY2UgaGFzIG5vIGVmZmVjdAorTUVSR0UgSU5U TyB0YXJnZXQKK1VTSU5HIHNvdXJjZQorT04gdGFyZ2V0LnRpZCA9IHNvdXJjZS5zaWQKK1dI RU4gTUFUQ0hFRCBUSEVOCisJVVBEQVRFIFNFVCBiYWxhbmNlID0gMDsKK01FUkdFIElOVE8g dGFyZ2V0IHQKK1VTSU5HIHNvdXJjZSBBUyBzCitPTiB0LnRpZCA9IHMuc2lkCitXSEVOIE1B VENIRUQgVEhFTgorCVVQREFURSBTRVQgYmFsYW5jZSA9IDA7CitNRVJHRSBJTlRPIHRhcmdl dCB0CitVU0lORyBzb3VyY2UgQVMgcworT04gdC50aWQgPSBzLnNpZAorV0hFTiBNQVRDSEVE IFRIRU4KKwlERUxFVEU7CitCRUdJTjsKK01FUkdFIElOVE8gdGFyZ2V0IHQKK1VTSU5HIHNv dXJjZSBBUyBzCitPTiB0LnRpZCA9IHMuc2lkCitXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJ TlNFUlQgREVGQVVMVCBWQUxVRVM7CitST0xMQkFDSzsKKy0tIGluc2VydCBzb21lIG5vbi1t YXRjaGluZyBzb3VyY2Ugcm93cyB0byB3b3JrIGZyb20KK0lOU0VSVCBJTlRPIHNvdXJjZSBW QUxVRVMgKDQsIDQwKTsKK1NFTEVDVCAqIEZST00gc291cmNlIE9SREVSIEJZIHNpZDsKKyBz aWQgfCBkZWx0YSAKKy0tLS0tKy0tLS0tLS0KKyAgIDQgfCAgICA0MAorKDEgcm93KQorCitT RUxFQ1QgKiBGUk9NIHRhcmdldCBPUkRFUiBCWSB0aWQ7CisgdGlkIHwgYmFsYW5jZSAKKy0t LS0tKy0tLS0tLS0tLQorICAgMSB8ICAgICAgMTAKKyAgIDIgfCAgICAgIDIwCisgICAzIHwg ICAgICAzMAorKDMgcm93cykKKworTUVSR0UgSU5UTyB0YXJnZXQgdAorVVNJTkcgc291cmNl IEFTIHMKK09OIHQudGlkID0gcy5zaWQKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCURPIE5P VEhJTkc7CitNRVJHRSBJTlRPIHRhcmdldCB0CitVU0lORyBzb3VyY2UgQVMgcworT04gdC50 aWQgPSBzLnNpZAorV0hFTiBNQVRDSEVEIFRIRU4KKwlVUERBVEUgU0VUIGJhbGFuY2UgPSAw OworTUVSR0UgSU5UTyB0YXJnZXQgdAorVVNJTkcgc291cmNlIEFTIHMKK09OIHQudGlkID0g cy5zaWQKK1dIRU4gTUFUQ0hFRCBUSEVOCisJREVMRVRFOworQkVHSU47CitNRVJHRSBJTlRP IHRhcmdldCB0CitVU0lORyBzb3VyY2UgQVMgcworT04gdC50aWQgPSBzLnNpZAorV0hFTiBO T1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIERFRkFVTFQgVkFMVUVTOworU0VMRUNUICogRlJP TSB0YXJnZXQgT1JERVIgQlkgdGlkOworIHRpZCB8IGJhbGFuY2UgCistLS0tLSstLS0tLS0t LS0KKyAgIDEgfCAgICAgIDEwCisgICAyIHwgICAgICAyMAorICAgMyB8ICAgICAgMzAKKyAg ICAgfCAgICAgICAgCisoNCByb3dzKQorCitST0xMQkFDSzsKKy0tIGluZGV4IHBsYW5zCitJ TlNFUlQgSU5UTyB0YXJnZXQgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxMDAwLDI1MDApLCAw OworQUxURVIgVEFCTEUgdGFyZ2V0IEFERCBQUklNQVJZIEtFWSAodGlkKTsKK0FOQUxZWkUg dGFyZ2V0OworRVhQTEFJTiAoQ09TVFMgT0ZGKQorTUVSR0UgSU5UTyB0YXJnZXQgdAorVVNJ Tkcgc291cmNlIEFTIHMKK09OIHQudGlkID0gcy5zaWQKK1dIRU4gTUFUQ0hFRCBUSEVOCisJ VVBEQVRFIFNFVCBiYWxhbmNlID0gMDsKKyAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBNZXJnZSBvbiB0YXJnZXQgdAorICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgSGFzaCBD b25kOiAocy5zaWQgPSB0LnRpZCkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzb3VyY2Ug cworICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0 YXJnZXQgdAorKDYgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorTUVSR0UgSU5UTyB0 YXJnZXQgdAorVVNJTkcgc291cmNlIEFTIHMKK09OIHQudGlkID0gcy5zaWQKK1dIRU4gTUFU Q0hFRCBUSEVOCisJREVMRVRFOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE1l cmdlIG9uIHRhcmdldCB0CisgICAtPiAgSGFzaCBKb2luCisgICAgICAgICBIYXNoIENvbmQ6 IChzLnNpZCA9IHQudGlkKQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNvdXJjZSBzCisg ICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHRhcmdl dCB0CisoNiByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitNRVJHRSBJTlRPIHRhcmdl dCB0CitVU0lORyBzb3VyY2UgQVMgcworT04gdC50aWQgPSBzLnNpZAorV0hFTiBOT1QgTUFU Q0hFRCBUSEVOCisJSU5TRVJUIFZBTFVFUyAoNCwgTlVMTCk7CisgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgTWVyZ2Ugb24gdGFyZ2V0IHQKKyAgIC0+ICBIYXNoIExlZnQgSm9p bgorICAgICAgICAgSGFzaCBDb25kOiAocy5zaWQgPSB0LnRpZCkKKyAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBzb3VyY2UgcworICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiB0YXJnZXQgdAorKDYgcm93cykKKworREVMRVRFIEZST00gdGFy Z2V0IFdIRVJFIHRpZCA+IDEwMDsKK0FOQUxZWkUgdGFyZ2V0OworLS0gaW5zZXJ0IHNvbWUg bWF0Y2hpbmcgc291cmNlIHJvd3MgdG8gd29yayBmcm9tCitJTlNFUlQgSU5UTyBzb3VyY2Ug VkFMVUVTICgyLCA1KTsKK0lOU0VSVCBJTlRPIHNvdXJjZSBWQUxVRVMgKDMsIDIwKTsKK1NF TEVDVCAqIEZST00gc291cmNlIE9SREVSIEJZIHNpZDsKKyBzaWQgfCBkZWx0YSAKKy0tLS0t Ky0tLS0tLS0KKyAgIDIgfCAgICAgNQorICAgMyB8ICAgIDIwCisgICA0IHwgICAgNDAKKygz IHJvd3MpCisKK1NFTEVDVCAqIEZST00gdGFyZ2V0IE9SREVSIEJZIHRpZDsKKyB0aWQgfCBi YWxhbmNlIAorLS0tLS0rLS0tLS0tLS0tCisgICAxIHwgICAgICAxMAorICAgMiB8ICAgICAg MjAKKyAgIDMgfCAgICAgIDMwCisoMyByb3dzKQorCistLSBlcXVpdmFsZW50IG9mIGFuIFVQ REFURSBqb2luCitCRUdJTjsKK01FUkdFIElOVE8gdGFyZ2V0IHQKK1VTSU5HIHNvdXJjZSBB UyBzCitPTiB0LnRpZCA9IHMuc2lkCitXSEVOIE1BVENIRUQgVEhFTgorCVVQREFURSBTRVQg YmFsYW5jZSA9IDA7CitTRUxFQ1QgKiBGUk9NIHRhcmdldCBPUkRFUiBCWSB0aWQ7CisgdGlk IHwgYmFsYW5jZSAKKy0tLS0tKy0tLS0tLS0tLQorICAgMSB8ICAgICAgMTAKKyAgIDIgfCAg ICAgICAwCisgICAzIHwgICAgICAgMAorKDMgcm93cykKKworUk9MTEJBQ0s7CistLSBlcXVp dmFsZW50IG9mIGEgREVMRVRFIGpvaW4KK0JFR0lOOworTUVSR0UgSU5UTyB0YXJnZXQgdAor VVNJTkcgc291cmNlIEFTIHMKK09OIHQudGlkID0gcy5zaWQKK1dIRU4gTUFUQ0hFRCBUSEVO CisJREVMRVRFOworU0VMRUNUICogRlJPTSB0YXJnZXQgT1JERVIgQlkgdGlkOworIHRpZCB8 IGJhbGFuY2UgCistLS0tLSstLS0tLS0tLS0KKyAgIDEgfCAgICAgIDEwCisoMSByb3cpCisK K1JPTExCQUNLOworQkVHSU47CitNRVJHRSBJTlRPIHRhcmdldCB0CitVU0lORyBzb3VyY2Ug QVMgcworT04gdC50aWQgPSBzLnNpZAorV0hFTiBNQVRDSEVEIFRIRU4KKwlETyBOT1RISU5H OworU0VMRUNUICogRlJPTSB0YXJnZXQgT1JERVIgQlkgdGlkOworIHRpZCB8IGJhbGFuY2Ug CistLS0tLSstLS0tLS0tLS0KKyAgIDEgfCAgICAgIDEwCisgICAyIHwgICAgICAyMAorICAg MyB8ICAgICAgMzAKKygzIHJvd3MpCisKK1JPTExCQUNLOworQkVHSU47CitNRVJHRSBJTlRP IHRhcmdldCB0CitVU0lORyBzb3VyY2UgQVMgcworT04gdC50aWQgPSBzLnNpZAorV0hFTiBO T1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIFZBTFVFUyAoNCwgTlVMTCk7CitTRUxFQ1QgKiBG Uk9NIHRhcmdldCBPUkRFUiBCWSB0aWQ7CisgdGlkIHwgYmFsYW5jZSAKKy0tLS0tKy0tLS0t LS0tLQorICAgMSB8ICAgICAgMTAKKyAgIDIgfCAgICAgIDIwCisgICAzIHwgICAgICAzMAor ICAgNCB8ICAgICAgICAKKyg0IHJvd3MpCisKK1JPTExCQUNLOworLS0gZHVwbGljYXRlIHNv dXJjZSByb3cgY2F1c2VzIG11bHRpcGxlIHRhcmdldCByb3cgdXBkYXRlIEVSUk9SCitJTlNF UlQgSU5UTyBzb3VyY2UgVkFMVUVTICgyLCA1KTsKK1NFTEVDVCAqIEZST00gc291cmNlIE9S REVSIEJZIHNpZDsKKyBzaWQgfCBkZWx0YSAKKy0tLS0tKy0tLS0tLS0KKyAgIDIgfCAgICAg NQorICAgMiB8ICAgICA1CisgICAzIHwgICAgMjAKKyAgIDQgfCAgICA0MAorKDQgcm93cykK KworU0VMRUNUICogRlJPTSB0YXJnZXQgT1JERVIgQlkgdGlkOworIHRpZCB8IGJhbGFuY2Ug CistLS0tLSstLS0tLS0tLS0KKyAgIDEgfCAgICAgIDEwCisgICAyIHwgICAgICAyMAorICAg MyB8ICAgICAgMzAKKygzIHJvd3MpCisKK0JFR0lOOworTUVSR0UgSU5UTyB0YXJnZXQgdAor VVNJTkcgc291cmNlIEFTIHMKK09OIHQudGlkID0gcy5zaWQKK1dIRU4gTUFUQ0hFRCBUSEVO CisJVVBEQVRFIFNFVCBiYWxhbmNlID0gMDsKK0VSUk9SOiAgTUVSR0UgY29tbWFuZCBjYW5u b3QgYWZmZWN0IHJvdyBhIHNlY29uZCB0aW1lCitISU5UOiAgRW5zdXJlIHRoYXQgbm90IG1v cmUgdGhhbiBvbmUgc291cmNlIHJvdyBtYXRjaGVzIGFueSBvbmUgdGFyZ2V0IHJvdy4KK1JP TExCQUNLOworQkVHSU47CitNRVJHRSBJTlRPIHRhcmdldCB0CitVU0lORyBzb3VyY2UgQVMg cworT04gdC50aWQgPSBzLnNpZAorV0hFTiBNQVRDSEVEIFRIRU4KKwlERUxFVEU7CitFUlJP UjogIE1FUkdFIGNvbW1hbmQgY2Fubm90IGFmZmVjdCByb3cgYSBzZWNvbmQgdGltZQorSElO VDogIEVuc3VyZSB0aGF0IG5vdCBtb3JlIHRoYW4gb25lIHNvdXJjZSByb3cgbWF0Y2hlcyBh bnkgb25lIHRhcmdldCByb3cuCitST0xMQkFDSzsKKy0tIGNvcnJlY3Qgc291cmNlIGRhdGEK K0RFTEVURSBGUk9NIHNvdXJjZSBXSEVSRSBzaWQgPSAyOworSU5TRVJUIElOVE8gc291cmNl IFZBTFVFUyAoMiwgNSk7CitTRUxFQ1QgKiBGUk9NIHNvdXJjZSBPUkRFUiBCWSBzaWQ7Cisg c2lkIHwgZGVsdGEgCistLS0tLSstLS0tLS0tCisgICAyIHwgICAgIDUKKyAgIDMgfCAgICAy MAorICAgNCB8ICAgIDQwCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRhcmdldCBPUkRF UiBCWSB0aWQ7CisgdGlkIHwgYmFsYW5jZSAKKy0tLS0tKy0tLS0tLS0tLQorICAgMSB8ICAg ICAgMTAKKyAgIDIgfCAgICAgIDIwCisgICAzIHwgICAgICAzMAorKDMgcm93cykKKworLS0g cmVtb3ZlIGNvbnN0cmFpbnRzCithbHRlciB0YWJsZSB0YXJnZXQgZHJvcCBDT05TVFJBSU5U IHRhcmdldF9wa2V5OworYWx0ZXIgdGFibGUgdGFyZ2V0IGFsdGVyIGNvbHVtbiB0aWQgZHJv cCBub3QgbnVsbDsKKy0tIG11bHRpcGxlIGFjdGlvbnMKK0JFR0lOOworTUVSR0UgSU5UTyB0 YXJnZXQgdAorVVNJTkcgc291cmNlIEFTIHMKK09OIHQudGlkID0gcy5zaWQKK1dIRU4gTk9U IE1BVENIRUQgVEhFTgorCUlOU0VSVCBWQUxVRVMgKDQsIDQpCitXSEVOIE1BVENIRUQgVEhF TgorCVVQREFURSBTRVQgYmFsYW5jZSA9IDA7CitTRUxFQ1QgKiBGUk9NIHRhcmdldCBPUkRF UiBCWSB0aWQ7CisgdGlkIHwgYmFsYW5jZSAKKy0tLS0tKy0tLS0tLS0tLQorICAgMSB8ICAg ICAgMTAKKyAgIDIgfCAgICAgICAwCisgICAzIHwgICAgICAgMAorICAgNCB8ICAgICAgIDQK Kyg0IHJvd3MpCisKK1JPTExCQUNLOworLS0gc2hvdWxkIGJlIGVxdWl2YWxlbnQKK0JFR0lO OworTUVSR0UgSU5UTyB0YXJnZXQgdAorVVNJTkcgc291cmNlIEFTIHMKK09OIHQudGlkID0g cy5zaWQKK1dIRU4gTUFUQ0hFRCBUSEVOCisJVVBEQVRFIFNFVCBiYWxhbmNlID0gMAorV0hF TiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIFZBTFVFUyAoNCwgNCk7CitTRUxFQ1QgKiBG Uk9NIHRhcmdldCBPUkRFUiBCWSB0aWQ7CisgdGlkIHwgYmFsYW5jZSAKKy0tLS0tKy0tLS0t LS0tLQorICAgMSB8ICAgICAgMTAKKyAgIDIgfCAgICAgICAwCisgICAzIHwgICAgICAgMAor ICAgNCB8ICAgICAgIDQKKyg0IHJvd3MpCisKK1JPTExCQUNLOworLS0gY29sdW1uIHJlZmVy ZW5jZXMKKy0tIGRvIGEgc2ltcGxlIGVxdWl2YWxlbnQgb2YgYW4gVVBEQVRFIGpvaW4KK0JF R0lOOworTUVSR0UgSU5UTyB0YXJnZXQgdAorVVNJTkcgc291cmNlIEFTIHMKK09OIHQudGlk ID0gcy5zaWQKK1dIRU4gTUFUQ0hFRCBUSEVOCisJVVBEQVRFIFNFVCBiYWxhbmNlID0gdC5i YWxhbmNlICsgcy5kZWx0YTsKK1NFTEVDVCAqIEZST00gdGFyZ2V0IE9SREVSIEJZIHRpZDsK KyB0aWQgfCBiYWxhbmNlIAorLS0tLS0rLS0tLS0tLS0tCisgICAxIHwgICAgICAxMAorICAg MiB8ICAgICAgMjUKKyAgIDMgfCAgICAgIDUwCisoMyByb3dzKQorCitST0xMQkFDSzsKKy0t IGRvIGEgc2ltcGxlIGVxdWl2YWxlbnQgb2YgYW4gSU5TRVJUIFNFTEVDVAorQkVHSU47CitN RVJHRSBJTlRPIHRhcmdldCB0CitVU0lORyBzb3VyY2UgQVMgcworT04gdC50aWQgPSBzLnNp ZAorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIFZBTFVFUyAocy5zaWQsIHMuZGVs dGEpOworU0VMRUNUICogRlJPTSB0YXJnZXQgT1JERVIgQlkgdGlkOworIHRpZCB8IGJhbGFu Y2UgCistLS0tLSstLS0tLS0tLS0KKyAgIDEgfCAgICAgIDEwCisgICAyIHwgICAgICAyMAor ICAgMyB8ICAgICAgMzAKKyAgIDQgfCAgICAgIDQwCisoNCByb3dzKQorCitST0xMQkFDSzsK Ky0tIGFuZCBhZ2FpbiB3aXRoIGV4cGxpY2l0bHkgaWRlbnRpZmllZCBjb2x1bW4gbGlzdAor QkVHSU47CitNRVJHRSBJTlRPIHRhcmdldCB0CitVU0lORyBzb3VyY2UgQVMgcworT04gdC50 aWQgPSBzLnNpZAorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUICh0aWQsIGJhbGFu Y2UpIFZBTFVFUyAocy5zaWQsIHMuZGVsdGEpOworU0VMRUNUICogRlJPTSB0YXJnZXQgT1JE RVIgQlkgdGlkOworIHRpZCB8IGJhbGFuY2UgCistLS0tLSstLS0tLS0tLS0KKyAgIDEgfCAg ICAgIDEwCisgICAyIHwgICAgICAyMAorICAgMyB8ICAgICAgMzAKKyAgIDQgfCAgICAgIDQw CisoNCByb3dzKQorCitST0xMQkFDSzsKKy0tIGFuZCBhZ2FpbiB3aXRoIGEgc3VidGxlIGVy cm9yOiByZWZlcnJpbmcgdG8gbm9uLWV4aXN0ZW50IHRhcmdldCByb3cgZm9yIE5PVCBNQVRD SEVECitNRVJHRSBJTlRPIHRhcmdldCB0CitVU0lORyBzb3VyY2UgQVMgcworT04gdC50aWQg PSBzLnNpZAorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUICh0aWQsIGJhbGFuY2Up IFZBTFVFUyAodC50aWQsIHMuZGVsdGEpOworRVJST1I6ICBpbnZhbGlkIHJlZmVyZW5jZSB0 byBGUk9NLWNsYXVzZSBlbnRyeSBmb3IgdGFibGUgInQiCitMSU5FIDU6ICBJTlNFUlQgKHRp ZCwgYmFsYW5jZSkgVkFMVUVTICh0LnRpZCwgcy5kZWx0YSk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgVGhlcmUgaXMgYW4gZW50cnkgZm9y IHRhYmxlICJ0IiwgYnV0IGl0IGNhbm5vdCBiZSByZWZlcmVuY2VkIGZyb20gdGhpcyBwYXJ0 IG9mIHRoZSBxdWVyeS4KKy0tIGFuZCBhZ2FpbiB3aXRoIGEgY29uc3RhbnQgT04gY2xhdXNl CitCRUdJTjsKK01FUkdFIElOVE8gdGFyZ2V0IHQKK1VTSU5HIHNvdXJjZSBBUyBzCitPTiAo U0VMRUNUIHRydWUpCitXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgKHRpZCwgYmFs YW5jZSkgVkFMVUVTICh0LnRpZCwgcy5kZWx0YSk7CitFUlJPUjogIGludmFsaWQgcmVmZXJl bmNlIHRvIEZST00tY2xhdXNlIGVudHJ5IGZvciB0YWJsZSAidCIKK0xJTkUgNTogIElOU0VS VCAodGlkLCBiYWxhbmNlKSBWQUxVRVMgKHQudGlkLCBzLmRlbHRhKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBUaGVyZSBpcyBhbiBlbnRy eSBmb3IgdGFibGUgInQiLCBidXQgaXQgY2Fubm90IGJlIHJlZmVyZW5jZWQgZnJvbSB0aGlz IHBhcnQgb2YgdGhlIHF1ZXJ5LgorU0VMRUNUICogRlJPTSB0YXJnZXQgT1JERVIgQlkgdGlk OworRVJST1I6ICBjdXJyZW50IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQsIGNvbW1hbmRzIGln bm9yZWQgdW50aWwgZW5kIG9mIHRyYW5zYWN0aW9uIGJsb2NrCitST0xMQkFDSzsKKy0tIG5v dyB0aGUgY2xhc3NpYyBVUFNFUlQKK0JFR0lOOworTUVSR0UgSU5UTyB0YXJnZXQgdAorVVNJ Tkcgc291cmNlIEFTIHMKK09OIHQudGlkID0gcy5zaWQKK1dIRU4gTUFUQ0hFRCBUSEVOCisJ VVBEQVRFIFNFVCBiYWxhbmNlID0gdC5iYWxhbmNlICsgcy5kZWx0YQorV0hFTiBOT1QgTUFU Q0hFRCBUSEVOCisJSU5TRVJUIFZBTFVFUyAocy5zaWQsIHMuZGVsdGEpOworU0VMRUNUICog RlJPTSB0YXJnZXQgT1JERVIgQlkgdGlkOworIHRpZCB8IGJhbGFuY2UgCistLS0tLSstLS0t LS0tLS0KKyAgIDEgfCAgICAgIDEwCisgICAyIHwgICAgICAyNQorICAgMyB8ICAgICAgNTAK KyAgIDQgfCAgICAgIDQwCisoNCByb3dzKQorCitST0xMQkFDSzsKKy0tIHVucmVhY2hhYmxl IFdIRU4gY2xhdXNlIHNob3VsZCBFUlJPUgorQkVHSU47CitNRVJHRSBJTlRPIHRhcmdldCB0 CitVU0lORyBzb3VyY2UgQVMgcworT04gdC50aWQgPSBzLnNpZAorV0hFTiBNQVRDSEVEIFRI RU4gLyogVGVybWluYWwgV0hFTiBjbGF1c2UgZm9yIE1BVENIRUQgKi8KKwlERUxFVEUKK1dI RU4gTUFUQ0hFRCBBTkQgcy5kZWx0YSA+IDAgVEhFTgorCVVQREFURSBTRVQgYmFsYW5jZSA9 IHQuYmFsYW5jZSAtIHMuZGVsdGE7CitFUlJPUjogIHVucmVhY2hhYmxlIFdIRU4gY2xhdXNl IHNwZWNpZmllZCBhZnRlciB1bmNvbmRpdGlvbmFsIFdIRU4gY2xhdXNlCitST0xMQkFDSzsK Ky0tIGNvbmRpdGlvbmFsIFdIRU4gY2xhdXNlCitDUkVBVEUgVEFCTEUgd3FfdGFyZ2V0ICh0 aWQgaW50ZWdlciBub3QgbnVsbCwgYmFsYW5jZSBpbnRlZ2VyIERFRkFVTFQgLTEpOworQ1JF QVRFIFRBQkxFIHdxX3NvdXJjZSAoYmFsYW5jZSBpbnRlZ2VyLCBzaWQgaW50ZWdlcik7CitJ TlNFUlQgSU5UTyB3cV9zb3VyY2UgKHNpZCwgYmFsYW5jZSkgVkFMVUVTICgxLCAxMDApOwor QkVHSU47CistLSB0cnkgYSBzaW1wbGUgSU5TRVJUIHdpdGggZGVmYXVsdCB2YWx1ZXMgZmly c3QKK01FUkdFIElOVE8gd3FfdGFyZ2V0IHQKK1VTSU5HIHdxX3NvdXJjZSBzIE9OIHQudGlk ID0gcy5zaWQKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCUlOU0VSVCAodGlkKSBWQUxVRVMg KHMuc2lkKTsKK1NFTEVDVCAqIEZST00gd3FfdGFyZ2V0OworIHRpZCB8IGJhbGFuY2UgCist LS0tLSstLS0tLS0tLS0KKyAgIDEgfCAgICAgIC0xCisoMSByb3cpCisKK1JPTExCQUNLOwor LS0gdGhpcyB0aW1lIHdpdGggYSBGQUxTRSBjb25kaXRpb24KK01FUkdFIElOVE8gd3FfdGFy Z2V0IHQKK1VTSU5HIHdxX3NvdXJjZSBzIE9OIHQudGlkID0gcy5zaWQKK1dIRU4gTk9UIE1B VENIRUQgQU5EIEZBTFNFIFRIRU4KKwlJTlNFUlQgKHRpZCkgVkFMVUVTIChzLnNpZCk7CitT RUxFQ1QgKiBGUk9NIHdxX3RhcmdldDsKKyB0aWQgfCBiYWxhbmNlIAorLS0tLS0rLS0tLS0t LS0tCisoMCByb3dzKQorCistLSB0aGlzIHRpbWUgd2l0aCBhbiBhY3R1YWwgY29uZGl0aW9u IHdoaWNoIHJldHVybnMgZmFsc2UKK01FUkdFIElOVE8gd3FfdGFyZ2V0IHQKK1VTSU5HIHdx X3NvdXJjZSBzIE9OIHQudGlkID0gcy5zaWQKK1dIRU4gTk9UIE1BVENIRUQgQU5EIHMuYmFs YW5jZSA8PiAxMDAgVEhFTgorCUlOU0VSVCAodGlkKSBWQUxVRVMgKHMuc2lkKTsKK1NFTEVD VCAqIEZST00gd3FfdGFyZ2V0OworIHRpZCB8IGJhbGFuY2UgCistLS0tLSstLS0tLS0tLS0K KygwIHJvd3MpCisKK0JFR0lOOworLS0gYW5kIG5vdyB3aXRoIGEgY29uZGl0aW9uIHdoaWNo IHJldHVybnMgdHJ1ZQorTUVSR0UgSU5UTyB3cV90YXJnZXQgdAorVVNJTkcgd3Ffc291cmNl IHMgT04gdC50aWQgPSBzLnNpZAorV0hFTiBOT1QgTUFUQ0hFRCBBTkQgcy5iYWxhbmNlID0g MTAwIFRIRU4KKwlJTlNFUlQgKHRpZCkgVkFMVUVTIChzLnNpZCk7CitTRUxFQ1QgKiBGUk9N IHdxX3RhcmdldDsKKyB0aWQgfCBiYWxhbmNlIAorLS0tLS0rLS0tLS0tLS0tCisgICAxIHwg ICAgICAtMQorKDEgcm93KQorCitST0xMQkFDSzsKKy0tIGNvbmRpdGlvbnMgaW4gdGhlIE5P VCBNQVRDSEVEIGNsYXVzZSBjYW4gb25seSByZWZlciB0byBzb3VyY2UgY29sdW1ucworQkVH SU47CitNRVJHRSBJTlRPIHdxX3RhcmdldCB0CitVU0lORyB3cV9zb3VyY2UgcyBPTiB0LnRp ZCA9IHMuc2lkCitXSEVOIE5PVCBNQVRDSEVEIEFORCB0LmJhbGFuY2UgPSAxMDAgVEhFTgor CUlOU0VSVCAodGlkKSBWQUxVRVMgKHMuc2lkKTsKK0VSUk9SOiAgaW52YWxpZCByZWZlcmVu Y2UgdG8gRlJPTS1jbGF1c2UgZW50cnkgZm9yIHRhYmxlICJ0IgorTElORSAzOiBXSEVOIE5P VCBNQVRDSEVEIEFORCB0LmJhbGFuY2UgPSAxMDAgVEhFTgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCitISU5UOiAgVGhlcmUgaXMgYW4gZW50cnkgZm9yIHRhYmxlICJ0Iiwg YnV0IGl0IGNhbm5vdCBiZSByZWZlcmVuY2VkIGZyb20gdGhpcyBwYXJ0IG9mIHRoZSBxdWVy eS4KK1NFTEVDVCAqIEZST00gd3FfdGFyZ2V0OworRVJST1I6ICBjdXJyZW50IHRyYW5zYWN0 aW9uIGlzIGFib3J0ZWQsIGNvbW1hbmRzIGlnbm9yZWQgdW50aWwgZW5kIG9mIHRyYW5zYWN0 aW9uIGJsb2NrCitST0xMQkFDSzsKK01FUkdFIElOVE8gd3FfdGFyZ2V0IHQKK1VTSU5HIHdx X3NvdXJjZSBzIE9OIHQudGlkID0gcy5zaWQKK1dIRU4gTk9UIE1BVENIRUQgQU5EIHMuYmFs YW5jZSA9IDEwMCBUSEVOCisJSU5TRVJUICh0aWQpIFZBTFVFUyAocy5zaWQpOworU0VMRUNU ICogRlJPTSB3cV90YXJnZXQ7CisgdGlkIHwgYmFsYW5jZSAKKy0tLS0tKy0tLS0tLS0tLQor ICAgMSB8ICAgICAgLTEKKygxIHJvdykKKworLS0gY29uZGl0aW9ucyBpbiBNQVRDSEVEIGNs YXVzZSBjYW4gcmVmZXIgdG8gYm90aCBzb3VyY2UgYW5kIHRhcmdldAorU0VMRUNUICogRlJP TSB3cV9zb3VyY2U7CisgYmFsYW5jZSB8IHNpZCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAx MDAgfCAgIDEKKygxIHJvdykKKworTUVSR0UgSU5UTyB3cV90YXJnZXQgdAorVVNJTkcgd3Ff c291cmNlIHMgT04gdC50aWQgPSBzLnNpZAorV0hFTiBNQVRDSEVEIEFORCBzLmJhbGFuY2Ug PSAxMDAgVEhFTgorCVVQREFURSBTRVQgYmFsYW5jZSA9IHQuYmFsYW5jZSArIHMuYmFsYW5j ZTsKK1NFTEVDVCAqIEZST00gd3FfdGFyZ2V0OworIHRpZCB8IGJhbGFuY2UgCistLS0tLSst LS0tLS0tLS0KKyAgIDEgfCAgICAgIDk5CisoMSByb3cpCisKK01FUkdFIElOVE8gd3FfdGFy Z2V0IHQKK1VTSU5HIHdxX3NvdXJjZSBzIE9OIHQudGlkID0gcy5zaWQKK1dIRU4gTUFUQ0hF RCBBTkQgdC5iYWxhbmNlID0gMTAwIFRIRU4KKwlVUERBVEUgU0VUIGJhbGFuY2UgPSB0LmJh bGFuY2UgKyBzLmJhbGFuY2U7CitTRUxFQ1QgKiBGUk9NIHdxX3RhcmdldDsKKyB0aWQgfCBi YWxhbmNlIAorLS0tLS0rLS0tLS0tLS0tCisgICAxIHwgICAgICA5OQorKDEgcm93KQorCist LSBjaGVjayBpZiBBTkQgd29ya3MKK01FUkdFIElOVE8gd3FfdGFyZ2V0IHQKK1VTSU5HIHdx X3NvdXJjZSBzIE9OIHQudGlkID0gcy5zaWQKK1dIRU4gTUFUQ0hFRCBBTkQgdC5iYWxhbmNl ID0gOTkgQU5EIHMuYmFsYW5jZSA+IDEwMCBUSEVOCisJVVBEQVRFIFNFVCBiYWxhbmNlID0g dC5iYWxhbmNlICsgcy5iYWxhbmNlOworU0VMRUNUICogRlJPTSB3cV90YXJnZXQ7CisgdGlk IHwgYmFsYW5jZSAKKy0tLS0tKy0tLS0tLS0tLQorICAgMSB8ICAgICAgOTkKKygxIHJvdykK KworTUVSR0UgSU5UTyB3cV90YXJnZXQgdAorVVNJTkcgd3Ffc291cmNlIHMgT04gdC50aWQg PSBzLnNpZAorV0hFTiBNQVRDSEVEIEFORCB0LmJhbGFuY2UgPSA5OSBBTkQgcy5iYWxhbmNl ID0gMTAwIFRIRU4KKwlVUERBVEUgU0VUIGJhbGFuY2UgPSB0LmJhbGFuY2UgKyBzLmJhbGFu Y2U7CitTRUxFQ1QgKiBGUk9NIHdxX3RhcmdldDsKKyB0aWQgfCBiYWxhbmNlIAorLS0tLS0r LS0tLS0tLS0tCisgICAxIHwgICAgIDE5OQorKDEgcm93KQorCistLSBjaGVjayBpZiBPUiB3 b3JrcworTUVSR0UgSU5UTyB3cV90YXJnZXQgdAorVVNJTkcgd3Ffc291cmNlIHMgT04gdC50 aWQgPSBzLnNpZAorV0hFTiBNQVRDSEVEIEFORCB0LmJhbGFuY2UgPSA5OSBPUiBzLmJhbGFu Y2UgPiAxMDAgVEhFTgorCVVQREFURSBTRVQgYmFsYW5jZSA9IHQuYmFsYW5jZSArIHMuYmFs YW5jZTsKK1NFTEVDVCAqIEZST00gd3FfdGFyZ2V0OworIHRpZCB8IGJhbGFuY2UgCistLS0t LSstLS0tLS0tLS0KKyAgIDEgfCAgICAgMTk5CisoMSByb3cpCisKK01FUkdFIElOVE8gd3Ff dGFyZ2V0IHQKK1VTSU5HIHdxX3NvdXJjZSBzIE9OIHQudGlkID0gcy5zaWQKK1dIRU4gTUFU Q0hFRCBBTkQgdC5iYWxhbmNlID0gMTk5IE9SIHMuYmFsYW5jZSA+IDEwMCBUSEVOCisJVVBE QVRFIFNFVCBiYWxhbmNlID0gdC5iYWxhbmNlICsgcy5iYWxhbmNlOworU0VMRUNUICogRlJP TSB3cV90YXJnZXQ7CisgdGlkIHwgYmFsYW5jZSAKKy0tLS0tKy0tLS0tLS0tLQorICAgMSB8 ICAgICAyOTkKKygxIHJvdykKKworLS0gY2hlY2sgaWYgc3VicXVlcmllcyB3b3JrIGluIHRo ZSBjb25kaXRpb25zPworTUVSR0UgSU5UTyB3cV90YXJnZXQgdAorVVNJTkcgd3Ffc291cmNl IHMgT04gdC50aWQgPSBzLnNpZAorV0hFTiBNQVRDSEVEIEFORCB0LmJhbGFuY2UgPiAoU0VM RUNUIG1heChiYWxhbmNlKSBGUk9NIHRhcmdldCkgVEhFTgorCVVQREFURSBTRVQgYmFsYW5j ZSA9IHQuYmFsYW5jZSArIHMuYmFsYW5jZTsKKy0tIGNoZWNrIGlmIHdlIGNhbiBhY2Nlc3Mg c3lzdGVtIGNvbHVtbnMgaW4gdGhlIGNvbmRpdGlvbnMKK01FUkdFIElOVE8gd3FfdGFyZ2V0 IHQKK1VTSU5HIHdxX3NvdXJjZSBzIE9OIHQudGlkID0gcy5zaWQKK1dIRU4gTUFUQ0hFRCBB TkQgdC54bWluID0gdC54bWF4IFRIRU4KKwlVUERBVEUgU0VUIGJhbGFuY2UgPSB0LmJhbGFu Y2UgKyBzLmJhbGFuY2U7CitFUlJPUjogIGNhbm5vdCB1c2Ugc3lzdGVtIGNvbHVtbiAieG1p biIgaW4gTUVSR0UgV0hFTiBjb25kaXRpb24KK0xJTkUgMzogV0hFTiBNQVRDSEVEIEFORCB0 LnhtaW4gPSB0LnhtYXggVEhFTgorICAgICAgICAgICAgICAgICAgICAgICAgIF4KK01FUkdF IElOVE8gd3FfdGFyZ2V0IHQKK1VTSU5HIHdxX3NvdXJjZSBzIE9OIHQudGlkID0gcy5zaWQK K1dIRU4gTUFUQ0hFRCBBTkQgdC50YWJsZW9pZCA+PSAwIFRIRU4KKwlVUERBVEUgU0VUIGJh bGFuY2UgPSB0LmJhbGFuY2UgKyBzLmJhbGFuY2U7CitTRUxFQ1QgKiBGUk9NIHdxX3Rhcmdl dDsKKyB0aWQgfCBiYWxhbmNlIAorLS0tLS0rLS0tLS0tLS0tCisgICAxIHwgICAgIDQ5OQor KDEgcm93KQorCistLSB0ZXN0IHByZXZlbnRpbmcgV0hFTiBjb25kaXRpb25zIGZyb20gd3Jp dGluZyB0byB0aGUgZGF0YWJhc2UKK2NyZWF0ZSBvciByZXBsYWNlIGZ1bmN0aW9uIG1lcmdl X3doZW5fYW5kX3dyaXRlKCkgcmV0dXJucyBib29sZWFuCitsYW5ndWFnZSBwbHBnc3FsIGFz CiskJAorQkVHSU4KKwlJTlNFUlQgSU5UTyB0YXJnZXQgVkFMVUVTICgxMDAsIDEwMCk7CisJ UkVUVVJOIFRSVUU7CitFTkQ7CiskJDsKK0JFR0lOOworTUVSR0UgSU5UTyB3cV90YXJnZXQg dAorVVNJTkcgd3Ffc291cmNlIHMgT04gdC50aWQgPSBzLnNpZAorV0hFTiBNQVRDSEVEIEFO RCAobWVyZ2Vfd2hlbl9hbmRfd3JpdGUoKSkgVEhFTgorCVVQREFURSBTRVQgYmFsYW5jZSA9 IHQuYmFsYW5jZSArIHMuYmFsYW5jZTsKK1JPTExCQUNLOworZHJvcCBmdW5jdGlvbiBtZXJn ZV93aGVuX2FuZF93cml0ZSgpOworRFJPUCBUQUJMRSB3cV90YXJnZXQsIHdxX3NvdXJjZTsK Ky0tIHRlc3QgdHJpZ2dlcnMKK2NyZWF0ZSBvciByZXBsYWNlIGZ1bmN0aW9uIG1lcmdlX3Ry aWdmdW5jICgpIHJldHVybnMgdHJpZ2dlcgorbGFuZ3VhZ2UgcGxwZ3NxbCBhcworJCQKK0JF R0lOCisJUkFJU0UgTk9USUNFICclICUgJSB0cmlnZ2VyJywgVEdfV0hFTiwgVEdfT1AsIFRH X0xFVkVMOworCUlGIChUR19XSEVOID0gJ0JFRk9SRScgQU5EIFRHX0xFVkVMID0gJ1JPVycp IFRIRU4KKwkJSUYgKFRHX09QID0gJ0RFTEVURScpIFRIRU4KKwkJCVJFVFVSTiBPTEQ7CisJ CUVMU0UKKwkJCVJFVFVSTiBORVc7CisJCUVORCBJRjsKKwlFTFNFCisJCVJFVFVSTiBOVUxM OworCUVORCBJRjsKK0VORDsKKyQkOworQ1JFQVRFIFRSSUdHRVIgbWVyZ2VfYnNpIEJFRk9S RSBJTlNFUlQgT04gdGFyZ2V0IEZPUiBFQUNIIFNUQVRFTUVOVCBFWEVDVVRFIFBST0NFRFVS RSBtZXJnZV90cmlnZnVuYyAoKTsKK0NSRUFURSBUUklHR0VSIG1lcmdlX2JzdSBCRUZPUkUg VVBEQVRFIE9OIHRhcmdldCBGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VURSBQUk9DRURVUkUg bWVyZ2VfdHJpZ2Z1bmMgKCk7CitDUkVBVEUgVFJJR0dFUiBtZXJnZV9ic2QgQkVGT1JFIERF TEVURSBPTiB0YXJnZXQgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VEVVJFIG1l cmdlX3RyaWdmdW5jICgpOworQ1JFQVRFIFRSSUdHRVIgbWVyZ2VfYXNpIEFGVEVSIElOU0VS VCBPTiB0YXJnZXQgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VEVVJFIG1lcmdl X3RyaWdmdW5jICgpOworQ1JFQVRFIFRSSUdHRVIgbWVyZ2VfYXN1IEFGVEVSIFVQREFURSBP TiB0YXJnZXQgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VEVVJFIG1lcmdlX3Ry aWdmdW5jICgpOworQ1JFQVRFIFRSSUdHRVIgbWVyZ2VfYXNkIEFGVEVSIERFTEVURSBPTiB0 YXJnZXQgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VEVVJFIG1lcmdlX3RyaWdm dW5jICgpOworQ1JFQVRFIFRSSUdHRVIgbWVyZ2VfYnJpIEJFRk9SRSBJTlNFUlQgT04gdGFy Z2V0IEZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSBtZXJnZV90cmlnZnVuYyAoKTsK K0NSRUFURSBUUklHR0VSIG1lcmdlX2JydSBCRUZPUkUgVVBEQVRFIE9OIHRhcmdldCBGT1Ig RUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgbWVyZ2VfdHJpZ2Z1bmMgKCk7CitDUkVBVEUg VFJJR0dFUiBtZXJnZV9icmQgQkVGT1JFIERFTEVURSBPTiB0YXJnZXQgRk9SIEVBQ0ggUk9X IEVYRUNVVEUgUFJPQ0VEVVJFIG1lcmdlX3RyaWdmdW5jICgpOworQ1JFQVRFIFRSSUdHRVIg bWVyZ2VfYXJpIEFGVEVSIElOU0VSVCBPTiB0YXJnZXQgRk9SIEVBQ0ggUk9XIEVYRUNVVEUg UFJPQ0VEVVJFIG1lcmdlX3RyaWdmdW5jICgpOworQ1JFQVRFIFRSSUdHRVIgbWVyZ2VfYXJ1 IEFGVEVSIFVQREFURSBPTiB0YXJnZXQgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJF IG1lcmdlX3RyaWdmdW5jICgpOworQ1JFQVRFIFRSSUdHRVIgbWVyZ2VfYXJkIEFGVEVSIERF TEVURSBPTiB0YXJnZXQgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIG1lcmdlX3Ry aWdmdW5jICgpOworLS0gbm93IHRoZSBjbGFzc2ljIFVQU0VSVCwgd2l0aCBhIERFTEVURQor QkVHSU47CitVUERBVEUgdGFyZ2V0IFNFVCBiYWxhbmNlID0gMCBXSEVSRSB0aWQgPSAzOwor Tk9USUNFOiAgQkVGT1JFIFVQREFURSBTVEFURU1FTlQgdHJpZ2dlcgorTk9USUNFOiAgQkVG T1JFIFVQREFURSBST1cgdHJpZ2dlcgorTk9USUNFOiAgQUZURVIgVVBEQVRFIFJPVyB0cmln Z2VyCitOT1RJQ0U6ICBBRlRFUiBVUERBVEUgU1RBVEVNRU5UIHRyaWdnZXIKKy0tRVhQTEFJ TiAoQU5BTFlaRSBPTiwgQ09TVFMgT0ZGLCBTVU1NQVJZIE9GRiwgVElNSU5HIE9GRikKK01F UkdFIElOVE8gdGFyZ2V0IHQKK1VTSU5HIHNvdXJjZSBBUyBzCitPTiB0LnRpZCA9IHMuc2lk CitXSEVOIE1BVENIRUQgQU5EIHQuYmFsYW5jZSA+IHMuZGVsdGEgVEhFTgorCVVQREFURSBT RVQgYmFsYW5jZSA9IHQuYmFsYW5jZSAtIHMuZGVsdGEKK1dIRU4gTUFUQ0hFRCBUSEVOCisJ REVMRVRFCitXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgVkFMVUVTIChzLnNpZCwg cy5kZWx0YSk7CitOT1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFNUQVRFTUVOVCB0cmlnZ2VyCitO T1RJQ0U6ICBCRUZPUkUgVVBEQVRFIFNUQVRFTUVOVCB0cmlnZ2VyCitOT1RJQ0U6ICBCRUZP UkUgREVMRVRFIFNUQVRFTUVOVCB0cmlnZ2VyCitOT1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFJP VyB0cmlnZ2VyCitOT1RJQ0U6ICBCRUZPUkUgREVMRVRFIFJPVyB0cmlnZ2VyCitOT1RJQ0U6 ICBCRUZPUkUgVVBEQVRFIFJPVyB0cmlnZ2VyCitOT1RJQ0U6ICBBRlRFUiBJTlNFUlQgUk9X IHRyaWdnZXIKK05PVElDRTogIEFGVEVSIERFTEVURSBST1cgdHJpZ2dlcgorTk9USUNFOiAg QUZURVIgVVBEQVRFIFJPVyB0cmlnZ2VyCitOT1RJQ0U6ICBBRlRFUiBERUxFVEUgU1RBVEVN RU5UIHRyaWdnZXIKK05PVElDRTogIEFGVEVSIFVQREFURSBTVEFURU1FTlQgdHJpZ2dlcgor Tk9USUNFOiAgQUZURVIgSU5TRVJUIFNUQVRFTUVOVCB0cmlnZ2VyCitTRUxFQ1QgKiBGUk9N IHRhcmdldCBPUkRFUiBCWSB0aWQ7CisgdGlkIHwgYmFsYW5jZSAKKy0tLS0tKy0tLS0tLS0t LQorICAgMSB8ICAgICAgMTAKKyAgIDIgfCAgICAgIDE1CisgICA0IHwgICAgICA0MAorKDMg cm93cykKKworUk9MTEJBQ0s7CistLSB0ZXN0IGZyb20gUEwvcGdTUUwKKy0tIG1ha2Ugc3Vy ZSBNRVJHRSBJTlRPIGlzbid0IGludGVycHJldGVkIHRvIG1lYW4gcmV0dXJuaW5nIHZhcmlh YmxlcyBsaWtlIFNFTEVDVCBJTlRPCitCRUdJTjsKK0RPIExBTkdVQUdFIHBscGdzcWwgJCQK K0JFR0lOCitNRVJHRSBJTlRPIHRhcmdldCB0CitVU0lORyBzb3VyY2UgQVMgcworT04gdC50 aWQgPSBzLnNpZAorV0hFTiBNQVRDSEVEIEFORCB0LmJhbGFuY2UgPiBzLmRlbHRhIFRIRU4K KwlVUERBVEUgU0VUIGJhbGFuY2UgPSB0LmJhbGFuY2UgLSBzLmRlbHRhOworRU5EOworJCQ7 CitOT1RJQ0U6ICBCRUZPUkUgVVBEQVRFIFNUQVRFTUVOVCB0cmlnZ2VyCitOT1RJQ0U6ICBC RUZPUkUgVVBEQVRFIFJPVyB0cmlnZ2VyCitOT1RJQ0U6ICBCRUZPUkUgVVBEQVRFIFJPVyB0 cmlnZ2VyCitOT1RJQ0U6ICBBRlRFUiBVUERBVEUgUk9XIHRyaWdnZXIKK05PVElDRTogIEFG VEVSIFVQREFURSBST1cgdHJpZ2dlcgorTk9USUNFOiAgQUZURVIgVVBEQVRFIFNUQVRFTUVO VCB0cmlnZ2VyCitST0xMQkFDSzsKKy0tc291cmNlIGNvbnN0YW50cworQkVHSU47CitNRVJH RSBJTlRPIHRhcmdldCB0CitVU0lORyAoU0VMRUNUIDkgQVMgc2lkLCA1NyBBUyBkZWx0YSkg QVMgcworT04gdC50aWQgPSBzLnNpZAorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJU ICh0aWQsIGJhbGFuY2UpIFZBTFVFUyAocy5zaWQsIHMuZGVsdGEpOworTk9USUNFOiAgQkVG T1JFIElOU0VSVCBTVEFURU1FTlQgdHJpZ2dlcgorTk9USUNFOiAgQkVGT1JFIElOU0VSVCBS T1cgdHJpZ2dlcgorTk9USUNFOiAgQUZURVIgSU5TRVJUIFJPVyB0cmlnZ2VyCitOT1RJQ0U6 ICBBRlRFUiBJTlNFUlQgU1RBVEVNRU5UIHRyaWdnZXIKK1NFTEVDVCAqIEZST00gdGFyZ2V0 IE9SREVSIEJZIHRpZDsKKyB0aWQgfCBiYWxhbmNlIAorLS0tLS0rLS0tLS0tLS0tCisgICAx IHwgICAgICAxMAorICAgMiB8ICAgICAgMjAKKyAgIDMgfCAgICAgIDMwCisgICA5IHwgICAg ICA1NworKDQgcm93cykKKworUk9MTEJBQ0s7CistLXNvdXJjZSBxdWVyeQorQkVHSU47CitN RVJHRSBJTlRPIHRhcmdldCB0CitVU0lORyAoU0VMRUNUIHNpZCwgZGVsdGEgRlJPTSBzb3Vy Y2UgV0hFUkUgZGVsdGEgPiAwKSBBUyBzCitPTiB0LnRpZCA9IHMuc2lkCitXSEVOIE5PVCBN QVRDSEVEIFRIRU4KKwlJTlNFUlQgKHRpZCwgYmFsYW5jZSkgVkFMVUVTIChzLnNpZCwgcy5k ZWx0YSk7CitOT1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFNUQVRFTUVOVCB0cmlnZ2VyCitOT1RJ Q0U6ICBCRUZPUkUgSU5TRVJUIFJPVyB0cmlnZ2VyCitOT1RJQ0U6ICBBRlRFUiBJTlNFUlQg Uk9XIHRyaWdnZXIKK05PVElDRTogIEFGVEVSIElOU0VSVCBTVEFURU1FTlQgdHJpZ2dlcgor U0VMRUNUICogRlJPTSB0YXJnZXQgT1JERVIgQlkgdGlkOworIHRpZCB8IGJhbGFuY2UgCist LS0tLSstLS0tLS0tLS0KKyAgIDEgfCAgICAgIDEwCisgICAyIHwgICAgICAyMAorICAgMyB8 ICAgICAgMzAKKyAgIDQgfCAgICAgIDQwCisoNCByb3dzKQorCitST0xMQkFDSzsKK0JFR0lO OworTUVSR0UgSU5UTyB0YXJnZXQgdAorVVNJTkcgKFNFTEVDVCBzaWQsIGRlbHRhIGFzIG5l d25hbWUgRlJPTSBzb3VyY2UgV0hFUkUgZGVsdGEgPiAwKSBBUyBzCitPTiB0LnRpZCA9IHMu c2lkCitXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgKHRpZCwgYmFsYW5jZSkgVkFM VUVTIChzLnNpZCwgcy5uZXduYW1lKTsKK05PVElDRTogIEJFRk9SRSBJTlNFUlQgU1RBVEVN RU5UIHRyaWdnZXIKK05PVElDRTogIEJFRk9SRSBJTlNFUlQgUk9XIHRyaWdnZXIKK05PVElD RTogIEFGVEVSIElOU0VSVCBST1cgdHJpZ2dlcgorTk9USUNFOiAgQUZURVIgSU5TRVJUIFNU QVRFTUVOVCB0cmlnZ2VyCitTRUxFQ1QgKiBGUk9NIHRhcmdldCBPUkRFUiBCWSB0aWQ7Cisg dGlkIHwgYmFsYW5jZSAKKy0tLS0tKy0tLS0tLS0tLQorICAgMSB8ICAgICAgMTAKKyAgIDIg fCAgICAgIDIwCisgICAzIHwgICAgICAzMAorICAgNCB8ICAgICAgNDAKKyg0IHJvd3MpCisK K1JPTExCQUNLOworLS1zZWxmLW1lcmdlCitCRUdJTjsKK01FUkdFIElOVE8gdGFyZ2V0IHQx CitVU0lORyB0YXJnZXQgdDIKK09OIHQxLnRpZCA9IHQyLnRpZAorV0hFTiBNQVRDSEVEIFRI RU4KKwlVUERBVEUgU0VUIGJhbGFuY2UgPSB0MS5iYWxhbmNlICsgdDIuYmFsYW5jZQorV0hF TiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIFZBTFVFUyAodDIudGlkLCB0Mi5iYWxhbmNl KTsKK05PVElDRTogIEJFRk9SRSBJTlNFUlQgU1RBVEVNRU5UIHRyaWdnZXIKK05PVElDRTog IEJFRk9SRSBVUERBVEUgU1RBVEVNRU5UIHRyaWdnZXIKK05PVElDRTogIEJFRk9SRSBVUERB VEUgUk9XIHRyaWdnZXIKK05PVElDRTogIEJFRk9SRSBVUERBVEUgUk9XIHRyaWdnZXIKK05P VElDRTogIEJFRk9SRSBVUERBVEUgUk9XIHRyaWdnZXIKK05PVElDRTogIEFGVEVSIFVQREFU RSBST1cgdHJpZ2dlcgorTk9USUNFOiAgQUZURVIgVVBEQVRFIFJPVyB0cmlnZ2VyCitOT1RJ Q0U6ICBBRlRFUiBVUERBVEUgUk9XIHRyaWdnZXIKK05PVElDRTogIEFGVEVSIFVQREFURSBT VEFURU1FTlQgdHJpZ2dlcgorTk9USUNFOiAgQUZURVIgSU5TRVJUIFNUQVRFTUVOVCB0cmln Z2VyCitTRUxFQ1QgKiBGUk9NIHRhcmdldCBPUkRFUiBCWSB0aWQ7CisgdGlkIHwgYmFsYW5j ZSAKKy0tLS0tKy0tLS0tLS0tLQorICAgMSB8ICAgICAgMjAKKyAgIDIgfCAgICAgIDQwCisg ICAzIHwgICAgICA2MAorKDMgcm93cykKKworUk9MTEJBQ0s7CitCRUdJTjsKK01FUkdFIElO VE8gdGFyZ2V0IHQKK1VTSU5HIChTRUxFQ1QgdGlkIGFzIHNpZCwgYmFsYW5jZSBhcyBkZWx0 YSBGUk9NIHRhcmdldCBXSEVSRSBiYWxhbmNlID4gMCkgQVMgcworT04gdC50aWQgPSBzLnNp ZAorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUICh0aWQsIGJhbGFuY2UpIFZBTFVF UyAocy5zaWQsIHMuZGVsdGEpOworTk9USUNFOiAgQkVGT1JFIElOU0VSVCBTVEFURU1FTlQg dHJpZ2dlcgorTk9USUNFOiAgQUZURVIgSU5TRVJUIFNUQVRFTUVOVCB0cmlnZ2VyCitTRUxF Q1QgKiBGUk9NIHRhcmdldCBPUkRFUiBCWSB0aWQ7CisgdGlkIHwgYmFsYW5jZSAKKy0tLS0t Ky0tLS0tLS0tLQorICAgMSB8ICAgICAgMTAKKyAgIDIgfCAgICAgIDIwCisgICAzIHwgICAg ICAzMAorKDMgcm93cykKKworUk9MTEJBQ0s7CitCRUdJTjsKK01FUkdFIElOVE8gdGFyZ2V0 IHQKK1VTSU5HCisoU0VMRUNUIHNpZCwgbWF4KGRlbHRhKSBBUyBkZWx0YQorIEZST00gc291 cmNlCisgR1JPVVAgQlkgc2lkCisgSEFWSU5HIGNvdW50KCopID0gMQorIE9SREVSIEJZIHNp ZCBBU0MpIEFTIHMKK09OIHQudGlkID0gcy5zaWQKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgor CUlOU0VSVCAodGlkLCBiYWxhbmNlKSBWQUxVRVMgKHMuc2lkLCBzLmRlbHRhKTsKK05PVElD RTogIEJFRk9SRSBJTlNFUlQgU1RBVEVNRU5UIHRyaWdnZXIKK05PVElDRTogIEJFRk9SRSBJ TlNFUlQgUk9XIHRyaWdnZXIKK05PVElDRTogIEFGVEVSIElOU0VSVCBST1cgdHJpZ2dlcgor Tk9USUNFOiAgQUZURVIgSU5TRVJUIFNUQVRFTUVOVCB0cmlnZ2VyCitTRUxFQ1QgKiBGUk9N IHRhcmdldCBPUkRFUiBCWSB0aWQ7CisgdGlkIHwgYmFsYW5jZSAKKy0tLS0tKy0tLS0tLS0t LQorICAgMSB8ICAgICAgMTAKKyAgIDIgfCAgICAgIDIwCisgICAzIHwgICAgICAzMAorICAg NCB8ICAgICAgNDAKKyg0IHJvd3MpCisKK1JPTExCQUNLOworLS0gcGxwZ3NxbCBwYXJhbWV0 ZXJzIGFuZCByZXN1bHRzCitCRUdJTjsKK0NSRUFURSBGVU5DVElPTiBtZXJnZV9mdW5jIChw X2lkIGludGVnZXIsIHBfYmFsIGludGVnZXIpCitSRVRVUk5TIElOVEVHRVIKK0xBTkdVQUdF IHBscGdzcWwKK0FTICQkCitERUNMQVJFCisgcmVzdWx0IGludGVnZXI7CitCRUdJTgorTUVS R0UgSU5UTyB0YXJnZXQgdAorVVNJTkcgKFNFTEVDVCBwX2lkIEFTIHNpZCkgQVMgcworT04g dC50aWQgPSBzLnNpZAorV0hFTiBNQVRDSEVEIFRIRU4KKwlVUERBVEUgU0VUIGJhbGFuY2Ug PSB0LmJhbGFuY2UgLSBwX2JhbDsKK0lGIEZPVU5EIFRIRU4KKwlHRVQgRElBR05PU1RJQ1Mg cmVzdWx0IDo9IFJPV19DT1VOVDsKK0VORCBJRjsKK1JFVFVSTiByZXN1bHQ7CitFTkQ7Cisk JDsKK1NFTEVDVCBtZXJnZV9mdW5jKDMsIDQpOworTk9USUNFOiAgQkVGT1JFIFVQREFURSBT VEFURU1FTlQgdHJpZ2dlcgorTk9USUNFOiAgQkVGT1JFIFVQREFURSBST1cgdHJpZ2dlcgor Tk9USUNFOiAgQUZURVIgVVBEQVRFIFJPVyB0cmlnZ2VyCitOT1RJQ0U6ICBBRlRFUiBVUERB VEUgU1RBVEVNRU5UIHRyaWdnZXIKKyBtZXJnZV9mdW5jIAorLS0tLS0tLS0tLS0tCisgICAg ICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHRhcmdldCBPUkRFUiBCWSB0aWQ7 CisgdGlkIHwgYmFsYW5jZSAKKy0tLS0tKy0tLS0tLS0tLQorICAgMSB8ICAgICAgMTAKKyAg IDIgfCAgICAgIDIwCisgICAzIHwgICAgICAyNgorKDMgcm93cykKKworUk9MTEJBQ0s7Cist LSBQUkVQQVJFCitCRUdJTjsKK3ByZXBhcmUgZm9vbSBhcyBtZXJnZSBpbnRvIHRhcmdldCB0 IHVzaW5nIChzZWxlY3QgMSBhcyBzaWQpIHMgb24gKHQudGlkID0gcy5zaWQpIHdoZW4gbWF0 Y2hlZCB0aGVuIHVwZGF0ZSBzZXQgYmFsYW5jZSA9IDE7CitleGVjdXRlIGZvb207CitOT1RJ Q0U6ICBCRUZPUkUgVVBEQVRFIFNUQVRFTUVOVCB0cmlnZ2VyCitOT1RJQ0U6ICBCRUZPUkUg VVBEQVRFIFJPVyB0cmlnZ2VyCitOT1RJQ0U6ICBBRlRFUiBVUERBVEUgUk9XIHRyaWdnZXIK K05PVElDRTogIEFGVEVSIFVQREFURSBTVEFURU1FTlQgdHJpZ2dlcgorU0VMRUNUICogRlJP TSB0YXJnZXQgT1JERVIgQlkgdGlkOworIHRpZCB8IGJhbGFuY2UgCistLS0tLSstLS0tLS0t LS0KKyAgIDEgfCAgICAgICAxCisgICAyIHwgICAgICAyMAorICAgMyB8ICAgICAgMzAKKygz IHJvd3MpCisKK1JPTExCQUNLOworQkVHSU47CitQUkVQQVJFIGZvb20yIChpbnRlZ2VyLCBp bnRlZ2VyKSBBUworTUVSR0UgSU5UTyB0YXJnZXQgdAorVVNJTkcgKFNFTEVDVCAxKSBzCitP TiB0LnRpZCA9ICQxCitXSEVOIE1BVENIRUQgVEhFTgorVVBEQVRFIFNFVCBiYWxhbmNlID0g JDI7CistLUVYUExBSU4gKEFOQUxZWkUgT04sIENPU1RTIE9GRiwgU1VNTUFSWSBPRkYsIFRJ TUlORyBPRkYpCitleGVjdXRlIGZvb20yICgxLCAxKTsKK05PVElDRTogIEJFRk9SRSBVUERB VEUgU1RBVEVNRU5UIHRyaWdnZXIKK05PVElDRTogIEJFRk9SRSBVUERBVEUgUk9XIHRyaWdn ZXIKK05PVElDRTogIEFGVEVSIFVQREFURSBST1cgdHJpZ2dlcgorTk9USUNFOiAgQUZURVIg VVBEQVRFIFNUQVRFTUVOVCB0cmlnZ2VyCitTRUxFQ1QgKiBGUk9NIHRhcmdldCBPUkRFUiBC WSB0aWQ7CisgdGlkIHwgYmFsYW5jZSAKKy0tLS0tKy0tLS0tLS0tLQorICAgMSB8ICAgICAg IDEKKyAgIDIgfCAgICAgIDIwCisgICAzIHwgICAgICAzMAorKDMgcm93cykKKworUk9MTEJB Q0s7CistLSBzdWJxdWVyaWVzIGluIHNvdXJjZSByZWxhdGlvbgorQ1JFQVRFIFRBQkxFIHNx X3RhcmdldCAodGlkIGludGVnZXIgTk9UIE5VTEwsIGJhbGFuY2UgaW50ZWdlcik7CitDUkVB VEUgVEFCTEUgc3Ffc291cmNlIChkZWx0YSBpbnRlZ2VyLCBzaWQgaW50ZWdlciwgYmFsYW5j ZSBpbnRlZ2VyIERFRkFVTFQgMCk7CitJTlNFUlQgSU5UTyBzcV90YXJnZXQodGlkLCBiYWxh bmNlKSBWQUxVRVMgKDEsMTAwKSwgKDIsMjAwKSwgKDMsMzAwKTsKK0lOU0VSVCBJTlRPIHNx X3NvdXJjZShzaWQsIGRlbHRhKSBWQUxVRVMgKDEsMTApLCAoMiwyMCksICg0LDQwKTsKK0JF R0lOOworTUVSR0UgSU5UTyBzcV90YXJnZXQgdAorVVNJTkcgKFNFTEVDVCAqIEZST00gc3Ff c291cmNlKSBzCitPTiB0aWQgPSBzaWQKK1dIRU4gTUFUQ0hFRCBBTkQgdC5iYWxhbmNlID4g ZGVsdGEgVEhFTgorCVVQREFURSBTRVQgYmFsYW5jZSA9IHQuYmFsYW5jZSArIGRlbHRhOwor U0VMRUNUICogRlJPTSBzcV90YXJnZXQ7CisgdGlkIHwgYmFsYW5jZSAKKy0tLS0tKy0tLS0t LS0tLQorICAgMyB8ICAgICAzMDAKKyAgIDEgfCAgICAgMTEwCisgICAyIHwgICAgIDIyMAor KDMgcm93cykKKworUk9MTEJBQ0s7CistLSB0cnkgYSB2aWV3CitDUkVBVEUgVklFVyB2IEFT IFNFTEVDVCAqIEZST00gc3Ffc291cmNlIFdIRVJFIHNpZCA8IDI7CitCRUdJTjsKK01FUkdF IElOVE8gc3FfdGFyZ2V0CitVU0lORyB2CitPTiB0aWQgPSBzaWQKK1dIRU4gTUFUQ0hFRCBU SEVOCisgICAgVVBEQVRFIFNFVCBiYWxhbmNlID0gdi5iYWxhbmNlICsgZGVsdGE7CitTRUxF Q1QgKiBGUk9NIHNxX3RhcmdldDsKKyB0aWQgfCBiYWxhbmNlIAorLS0tLS0rLS0tLS0tLS0t CisgICAyIHwgICAgIDIwMAorICAgMyB8ICAgICAzMDAKKyAgIDEgfCAgICAgIDEwCisoMyBy b3dzKQorCitST0xMQkFDSzsKKy0tIGFtYmlndW91cyByZWZlcmVuY2UgdG8gYSBjb2x1bW4K K0JFR0lOOworTUVSR0UgSU5UTyBzcV90YXJnZXQKK1VTSU5HIHYKK09OIHRpZCA9IHNpZAor V0hFTiBNQVRDSEVEIEFORCB0aWQgPiAyIFRIRU4KKyAgICBVUERBVEUgU0VUIGJhbGFuY2Ug PSBiYWxhbmNlICsgZGVsdGEKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCUlOU0VSVCAoYmFs YW5jZSwgdGlkKSBWQUxVRVMgKGJhbGFuY2UgKyBkZWx0YSwgc2lkKQorV0hFTiBNQVRDSEVE IEFORCB0aWQgPCAyIFRIRU4KKwlERUxFVEU7CitFUlJPUjogIGNvbHVtbiByZWZlcmVuY2Ug ImJhbGFuY2UiIGlzIGFtYmlndW91cworTElORSA1OiAgICAgVVBEQVRFIFNFVCBiYWxhbmNl ID0gYmFsYW5jZSArIGRlbHRhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CitST0xMQkFDSzsKK0JFR0lOOworSU5TRVJUIElOVE8gc3Ffc291cmNlIChzaWQsIGJhbGFu Y2UsIGRlbHRhKSBWQUxVRVMgKC0xLCAtMSwgLTEwKTsKK01FUkdFIElOVE8gc3FfdGFyZ2V0 IHQKK1VTSU5HIHYKK09OIHRpZCA9IHNpZAorV0hFTiBNQVRDSEVEIEFORCB0aWQgPiAyIFRI RU4KKyAgICBVUERBVEUgU0VUIGJhbGFuY2UgPSB0LmJhbGFuY2UgKyBkZWx0YQorV0hFTiBO T1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIChiYWxhbmNlLCB0aWQpIFZBTFVFUyAoYmFsYW5j ZSArIGRlbHRhLCBzaWQpCitXSEVOIE1BVENIRUQgQU5EIHRpZCA8IDIgVEhFTgorCURFTEVU RTsKK1NFTEVDVCAqIEZST00gc3FfdGFyZ2V0OworIHRpZCB8IGJhbGFuY2UgCistLS0tLSst LS0tLS0tLS0KKyAgIDIgfCAgICAgMjAwCisgICAzIHwgICAgIDMwMAorICAtMSB8ICAgICAt MTEKKygzIHJvd3MpCisKK1JPTExCQUNLOworLS0gQ1RFcworQkVHSU47CitJTlNFUlQgSU5U TyBzcV9zb3VyY2UgKHNpZCwgYmFsYW5jZSwgZGVsdGEpIFZBTFVFUyAoLTEsIC0xLCAtMTAp OworV0lUSCB0YXJncSBBUyAoCisJU0VMRUNUICogRlJPTSB2CispCitNRVJHRSBJTlRPIHNx X3RhcmdldCB0CitVU0lORyB2CitPTiB0aWQgPSBzaWQKK1dIRU4gTUFUQ0hFRCBBTkQgdGlk ID4gMiBUSEVOCisgICAgVVBEQVRFIFNFVCBiYWxhbmNlID0gdC5iYWxhbmNlICsgZGVsdGEK K1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCUlOU0VSVCAoYmFsYW5jZSwgdGlkKSBWQUxVRVMg KGJhbGFuY2UgKyBkZWx0YSwgc2lkKQorV0hFTiBNQVRDSEVEIEFORCB0aWQgPCAyIFRIRU4K KwlERUxFVEU7CitST0xMQkFDSzsKKy0tIFJFVFVSTklORworQkVHSU47CitJTlNFUlQgSU5U TyBzcV9zb3VyY2UgKHNpZCwgYmFsYW5jZSwgZGVsdGEpIFZBTFVFUyAoLTEsIC0xLCAtMTAp OworTUVSR0UgSU5UTyBzcV90YXJnZXQgdAorVVNJTkcgdgorT04gdGlkID0gc2lkCitXSEVO IE1BVENIRUQgQU5EIHRpZCA+IDIgVEhFTgorICAgIFVQREFURSBTRVQgYmFsYW5jZSA9IHQu YmFsYW5jZSArIGRlbHRhCitXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgKGJhbGFu Y2UsIHRpZCkgVkFMVUVTIChiYWxhbmNlICsgZGVsdGEsIHNpZCkKK1dIRU4gTUFUQ0hFRCBB TkQgdGlkIDwgMiBUSEVOCisJREVMRVRFCitSRVRVUk5JTkcgKjsKK0VSUk9SOiAgc3ludGF4 IGVycm9yIGF0IG9yIG5lYXIgIlJFVFVSTklORyIKK0xJTkUgMTA6IFJFVFVSTklORyAqOwor ICAgICAgICAgXgorUk9MTEJBQ0s7CistLSBFWFBMQUlOCitDUkVBVEUgVEFCTEUgZXhfbXRh cmdldCAoYSBpbnQsIGIgaW50KTsKK0NSRUFURSBUQUJMRSBleF9tc291cmNlIChhIGludCwg YiBpbnQpOworSU5TRVJUIElOVE8gZXhfbXRhcmdldCBTRUxFQ1QgaSwgaSoxMCBGUk9NIGdl bmVyYXRlX3NlcmllcygxLDEwMCwyKSBpOworSU5TRVJUIElOVE8gZXhfbXNvdXJjZSBTRUxF Q1QgaSwgaSoxMCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCwxKSBpOworLS0gb25seSB1 cGRhdGVzCistLUVYUExBSU4gKEFOQUxZWkUgT04sIENPU1RTIE9GRiwgU1VNTUFSWSBPRkYs IFRJTUlORyBPRkYpCitNRVJHRSBJTlRPIGV4X210YXJnZXQgdCBVU0lORyBleF9tc291cmNl IHMgT04gdC5hID0gcy5hCitXSEVOIE1BVENIRUQgVEhFTgorCVVQREFURSBTRVQgYiA9IHQu YiArIDE7CistLSBvbmx5IHVwZGF0ZXMgdG8gc2VsZWN0ZWQgdHVwbGVzCistLUVYUExBSU4g KEFOQUxZWkUgT04sIENPU1RTIE9GRiwgU1VNTUFSWSBPRkYsIFRJTUlORyBPRkYpCitNRVJH RSBJTlRPIGV4X210YXJnZXQgdCBVU0lORyBleF9tc291cmNlIHMgT04gdC5hID0gcy5hCitX SEVOIE1BVENIRUQgQU5EIHQuYSA8IDEwIFRIRU4KKwlVUERBVEUgU0VUIGIgPSB0LmIgKyAx OworLS0gdXBkYXRlcyArIGRlbGV0ZXMKKy0tRVhQTEFJTiAoQU5BTFlaRSBPTiwgQ09TVFMg T0ZGLCBTVU1NQVJZIE9GRiwgVElNSU5HIE9GRikKK01FUkdFIElOVE8gZXhfbXRhcmdldCB0 IFVTSU5HIGV4X21zb3VyY2UgcyBPTiB0LmEgPSBzLmEKK1dIRU4gTUFUQ0hFRCBBTkQgdC5h IDwgMTAgVEhFTgorCVVQREFURSBTRVQgYiA9IHQuYiArIDEKK1dIRU4gTUFUQ0hFRCBBTkQg dC5hID49IDEwIEFORCB0LmEgPD0gMjAgVEhFTgorCURFTEVURTsKKy0tIG9ubHkgaW5zZXJ0 cworLS1FWFBMQUlOIChBTkFMWVpFIE9OLCBDT1NUUyBPRkYsIFNVTU1BUlkgT0ZGLCBUSU1J TkcgT0ZGKQorTUVSR0UgSU5UTyBleF9tdGFyZ2V0IHQgVVNJTkcgZXhfbXNvdXJjZSBzIE9O IHQuYSA9IHMuYQorV0hFTiBOT1QgTUFUQ0hFRCBBTkQgcy5hIDwgMTAgVEhFTgorCUlOU0VS VCBWQUxVRVMgKGEsIGIpOworLS0gYWxsIHRocmVlCistLUVYUExBSU4gKEFOQUxZWkUgT04s IENPU1RTIE9GRiwgU1VNTUFSWSBPRkYsIFRJTUlORyBPRkYpCitNRVJHRSBJTlRPIGV4X210 YXJnZXQgdCBVU0lORyBleF9tc291cmNlIHMgT04gdC5hID0gcy5hCitXSEVOIE1BVENIRUQg QU5EIHQuYSA8IDEwIFRIRU4KKwlVUERBVEUgU0VUIGIgPSB0LmIgKyAxCitXSEVOIE1BVENI RUQgQU5EIHQuYSA+PSAzMCBBTkQgdC5hIDw9IDQwIFRIRU4KKwlERUxFVEUKK1dIRU4gTk9U IE1BVENIRUQgQU5EIHMuYSA8IDIwIFRIRU4KKwlJTlNFUlQgVkFMVUVTIChhLCBiKTsKK0RS T1AgVEFCTEUgZXhfbXNvdXJjZSwgZXhfbXRhcmdldDsKKy0tIFN1YnF1ZXJpZXMKK0JFR0lO OworTUVSR0UgSU5UTyBzcV90YXJnZXQgdAorVVNJTkcgdgorT04gdGlkID0gc2lkCitXSEVO IE1BVENIRUQgVEhFTgorICAgIFVQREFURSBTRVQgYmFsYW5jZSA9IChTRUxFQ1QgY291bnQo KikgRlJPTSBzcV90YXJnZXQpOworU0VMRUNUICogRlJPTSBzcV90YXJnZXQgV0hFUkUgdGlk ID0gMTsKKyB0aWQgfCBiYWxhbmNlIAorLS0tLS0rLS0tLS0tLS0tCisgICAxIHwgICAgICAg MworKDEgcm93KQorCitST0xMQkFDSzsKK0JFR0lOOworTUVSR0UgSU5UTyBzcV90YXJnZXQg dAorVVNJTkcgdgorT04gdGlkID0gc2lkCitXSEVOIE1BVENIRUQgQU5EIChTRUxFQ1QgY291 bnQoKikgPiAwIEZST00gc3FfdGFyZ2V0KSBUSEVOCisgICAgVVBEQVRFIFNFVCBiYWxhbmNl ID0gNDI7CitTRUxFQ1QgKiBGUk9NIHNxX3RhcmdldCBXSEVSRSB0aWQgPSAxOworIHRpZCB8 IGJhbGFuY2UgCistLS0tLSstLS0tLS0tLS0KKyAgIDEgfCAgICAgIDQyCisoMSByb3cpCisK K1JPTExCQUNLOworQkVHSU47CitNRVJHRSBJTlRPIHNxX3RhcmdldCB0CitVU0lORyB2CitP TiB0aWQgPSBzaWQgQU5EIChTRUxFQ1QgY291bnQoKikgPiAwIEZST00gc3FfdGFyZ2V0KQor V0hFTiBNQVRDSEVEIFRIRU4KKyAgICBVUERBVEUgU0VUIGJhbGFuY2UgPSA0MjsKK1NFTEVD VCAqIEZST00gc3FfdGFyZ2V0IFdIRVJFIHRpZCA9IDE7CisgdGlkIHwgYmFsYW5jZSAKKy0t LS0tKy0tLS0tLS0tLQorICAgMSB8ICAgICAgNDIKKygxIHJvdykKKworUk9MTEJBQ0s7CitE Uk9QIFRBQkxFIHNxX3RhcmdldCwgc3Ffc291cmNlIENBU0NBREU7CitOT1RJQ0U6ICBkcm9w IGNhc2NhZGVzIHRvIHZpZXcgdgorQ1JFQVRFIFRBQkxFIHBhX3RhcmdldCAodGlkIGludGVn ZXIsIGJhbGFuY2UgZmxvYXQsIHZhbCB0ZXh0KQorCVBBUlRJVElPTiBCWSBMSVNUICh0aWQp OworQ1JFQVRFIFRBQkxFIHBhcnQxIFBBUlRJVElPTiBPRiBwYV90YXJnZXQgRk9SIFZBTFVF UyBJTiAoMSw0KTsKK0NSRUFURSBUQUJMRSBwYXJ0MiBQQVJUSVRJT04gT0YgcGFfdGFyZ2V0 IEZPUiBWQUxVRVMgSU4gKDIsNSw2KTsKK0NSRUFURSBUQUJMRSBwYXJ0MyBQQVJUSVRJT04g T0YgcGFfdGFyZ2V0IEZPUiBWQUxVRVMgSU4gKDMsOCw5KTsKK0NSRUFURSBUQUJMRSBwYXJ0 NCBQQVJUSVRJT04gT0YgcGFfdGFyZ2V0IERFRkFVTFQ7CitDUkVBVEUgVEFCTEUgcGFfc291 cmNlIChzaWQgaW50ZWdlciwgZGVsdGEgZmxvYXQpOworLS0gaW5zZXJ0IG1hbnkgcm93cyB0 byB0aGUgc291cmNlIHRhYmxlCitJTlNFUlQgSU5UTyBwYV9zb3VyY2UgU0VMRUNUIGlkLCBp ZCAqIDEwICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDE0KSBBUyBpZDsKKy0tIGluc2VydCBh IGZldyByb3dzIGluIHRoZSB0YXJnZXQgdGFibGUgKG9kZCBudW1iZXJlZCB0aWQpCitJTlNF UlQgSU5UTyBwYV90YXJnZXQgU0VMRUNUIGlkLCBpZCAqIDEwMCwgJ2luaXRpYWwnIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsMTQsMikgQVMgaWQ7CistLSB0cnkgc2ltcGxlIE1FUkdFCitC RUdJTjsKK01FUkdFIElOVE8gcGFfdGFyZ2V0IHQKKyAgVVNJTkcgcGFfc291cmNlIHMKKyAg T04gdC50aWQgPSBzLnNpZAorICBXSEVOIE1BVENIRUQgVEhFTgorICAgIFVQREFURSBTRVQg YmFsYW5jZSA9IGJhbGFuY2UgKyBkZWx0YSwgdmFsID0gdmFsIHx8ICcgdXBkYXRlZCBieSBt ZXJnZScKKyAgV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisgICAgSU5TRVJUIFZBTFVFUyAoc2lk LCBkZWx0YSwgJ2luc2VydGVkIGJ5IG1lcmdlJyk7CitTRUxFQ1QgKiBGUk9NIHBhX3Rhcmdl dCBPUkRFUiBCWSB0aWQ7CisgdGlkIHwgYmFsYW5jZSB8ICAgICAgICAgICB2YWwgICAgICAg ICAgICAKKy0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg MSB8ICAgICAxMTAgfCBpbml0aWFsIHVwZGF0ZWQgYnkgbWVyZ2UKKyAgIDIgfCAgICAgIDIw IHwgaW5zZXJ0ZWQgYnkgbWVyZ2UKKyAgIDMgfCAgICAgMzMwIHwgaW5pdGlhbCB1cGRhdGVk IGJ5IG1lcmdlCisgICA0IHwgICAgICA0MCB8IGluc2VydGVkIGJ5IG1lcmdlCisgICA1IHwg ICAgIDU1MCB8IGluaXRpYWwgdXBkYXRlZCBieSBtZXJnZQorICAgNiB8ICAgICAgNjAgfCBp bnNlcnRlZCBieSBtZXJnZQorICAgNyB8ICAgICA3NzAgfCBpbml0aWFsIHVwZGF0ZWQgYnkg bWVyZ2UKKyAgIDggfCAgICAgIDgwIHwgaW5zZXJ0ZWQgYnkgbWVyZ2UKKyAgIDkgfCAgICAg OTkwIHwgaW5pdGlhbCB1cGRhdGVkIGJ5IG1lcmdlCisgIDEwIHwgICAgIDEwMCB8IGluc2Vy dGVkIGJ5IG1lcmdlCisgIDExIHwgICAgMTIxMCB8IGluaXRpYWwgdXBkYXRlZCBieSBtZXJn ZQorICAxMiB8ICAgICAxMjAgfCBpbnNlcnRlZCBieSBtZXJnZQorICAxMyB8ICAgIDE0MzAg fCBpbml0aWFsIHVwZGF0ZWQgYnkgbWVyZ2UKKyAgMTQgfCAgICAgMTQwIHwgaW5zZXJ0ZWQg YnkgbWVyZ2UKKygxNCByb3dzKQorCitST0xMQkFDSzsKKy0tIHNhbWUgd2l0aCBhIGNvbnN0 YW50IHF1YWwKK0JFR0lOOworTUVSR0UgSU5UTyBwYV90YXJnZXQgdAorICBVU0lORyBwYV9z b3VyY2UgcworICBPTiB0LnRpZCA9IHMuc2lkIEFORCB0aWQgPSAxCisgIFdIRU4gTUFUQ0hF RCBUSEVOCisgICAgVVBEQVRFIFNFVCBiYWxhbmNlID0gYmFsYW5jZSArIGRlbHRhLCB2YWwg PSB2YWwgfHwgJyB1cGRhdGVkIGJ5IG1lcmdlJworICBXSEVOIE5PVCBNQVRDSEVEIFRIRU4K KyAgICBJTlNFUlQgVkFMVUVTIChzaWQsIGRlbHRhLCAnaW5zZXJ0ZWQgYnkgbWVyZ2UnKTsK K1NFTEVDVCAqIEZST00gcGFfdGFyZ2V0IE9SREVSIEJZIHRpZDsKKyB0aWQgfCBiYWxhbmNl IHwgICAgICAgICAgIHZhbCAgICAgICAgICAgIAorLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgICAxIHwgICAgIDExMCB8IGluaXRpYWwgdXBkYXRlZCBi eSBtZXJnZQorICAgMiB8ICAgICAgMjAgfCBpbnNlcnRlZCBieSBtZXJnZQorICAgMyB8ICAg ICAgMzAgfCBpbnNlcnRlZCBieSBtZXJnZQorICAgMyB8ICAgICAzMDAgfCBpbml0aWFsCisg ICA0IHwgICAgICA0MCB8IGluc2VydGVkIGJ5IG1lcmdlCisgICA1IHwgICAgIDUwMCB8IGlu aXRpYWwKKyAgIDUgfCAgICAgIDUwIHwgaW5zZXJ0ZWQgYnkgbWVyZ2UKKyAgIDYgfCAgICAg IDYwIHwgaW5zZXJ0ZWQgYnkgbWVyZ2UKKyAgIDcgfCAgICAgNzAwIHwgaW5pdGlhbAorICAg NyB8ICAgICAgNzAgfCBpbnNlcnRlZCBieSBtZXJnZQorICAgOCB8ICAgICAgODAgfCBpbnNl cnRlZCBieSBtZXJnZQorICAgOSB8ICAgICAgOTAgfCBpbnNlcnRlZCBieSBtZXJnZQorICAg OSB8ICAgICA5MDAgfCBpbml0aWFsCisgIDEwIHwgICAgIDEwMCB8IGluc2VydGVkIGJ5IG1l cmdlCisgIDExIHwgICAgMTEwMCB8IGluaXRpYWwKKyAgMTEgfCAgICAgMTEwIHwgaW5zZXJ0 ZWQgYnkgbWVyZ2UKKyAgMTIgfCAgICAgMTIwIHwgaW5zZXJ0ZWQgYnkgbWVyZ2UKKyAgMTMg fCAgICAxMzAwIHwgaW5pdGlhbAorICAxMyB8ICAgICAxMzAgfCBpbnNlcnRlZCBieSBtZXJn ZQorICAxNCB8ICAgICAxNDAgfCBpbnNlcnRlZCBieSBtZXJnZQorKDIwIHJvd3MpCisKK1JP TExCQUNLOworLS0gdHJ5IHVwZGF0aW5nIHRoZSBwYXJ0aXRpb24ga2V5IGNvbHVtbgorQkVH SU47CitNRVJHRSBJTlRPIHBhX3RhcmdldCB0CisgIFVTSU5HIHBhX3NvdXJjZSBzCisgIE9O IHQudGlkID0gcy5zaWQKKyAgV0hFTiBNQVRDSEVEIFRIRU4KKyAgICBVUERBVEUgU0VUIHRp ZCA9IHRpZCArIDEsIGJhbGFuY2UgPSBiYWxhbmNlICsgZGVsdGEsIHZhbCA9IHZhbCB8fCAn IHVwZGF0ZWQgYnkgbWVyZ2UnCisgIFdIRU4gTk9UIE1BVENIRUQgVEhFTgorICAgIElOU0VS VCBWQUxVRVMgKHNpZCwgZGVsdGEsICdpbnNlcnRlZCBieSBtZXJnZScpOworU0VMRUNUICog RlJPTSBwYV90YXJnZXQgT1JERVIgQlkgdGlkOworIHRpZCB8IGJhbGFuY2UgfCAgICAgICAg ICAgdmFsICAgICAgICAgICAgCistLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAgIDIgfCAgICAgMTEwIHwgaW5pdGlhbCB1cGRhdGVkIGJ5IG1lcmdlCisg ICAyIHwgICAgICAyMCB8IGluc2VydGVkIGJ5IG1lcmdlCisgICA0IHwgICAgICA0MCB8IGlu c2VydGVkIGJ5IG1lcmdlCisgICA0IHwgICAgIDMzMCB8IGluaXRpYWwgdXBkYXRlZCBieSBt ZXJnZQorICAgNiB8ICAgICA1NTAgfCBpbml0aWFsIHVwZGF0ZWQgYnkgbWVyZ2UKKyAgIDYg fCAgICAgIDYwIHwgaW5zZXJ0ZWQgYnkgbWVyZ2UKKyAgIDggfCAgICAgIDgwIHwgaW5zZXJ0 ZWQgYnkgbWVyZ2UKKyAgIDggfCAgICAgNzcwIHwgaW5pdGlhbCB1cGRhdGVkIGJ5IG1lcmdl CisgIDEwIHwgICAgIDk5MCB8IGluaXRpYWwgdXBkYXRlZCBieSBtZXJnZQorICAxMCB8ICAg ICAxMDAgfCBpbnNlcnRlZCBieSBtZXJnZQorICAxMiB8ICAgIDEyMTAgfCBpbml0aWFsIHVw ZGF0ZWQgYnkgbWVyZ2UKKyAgMTIgfCAgICAgMTIwIHwgaW5zZXJ0ZWQgYnkgbWVyZ2UKKyAg MTQgfCAgICAxNDMwIHwgaW5pdGlhbCB1cGRhdGVkIGJ5IG1lcmdlCisgIDE0IHwgICAgIDE0 MCB8IGluc2VydGVkIGJ5IG1lcmdlCisoMTQgcm93cykKKworUk9MTEJBQ0s7CitEUk9QIFRB QkxFIHBhX3RhcmdldCBDQVNDQURFOworLS0gVGhlIHRhcmdldCB0YWJsZSBpcyBwYXJ0aXRp b25lZCBpbiB0aGUgc2FtZSB3YXksIGJ1dCB0aGlzIHRpbWUgYnkgYXR0YWNoaW5nCistLSBw YXJ0aXRpb25zIHdoaWNoIGhhdmUgY29sdW1ucyBpbiBkaWZmZXJlbnQgb3JkZXIsIGRyb3Bw ZWQgY29sdW1ucyBldGMuCitDUkVBVEUgVEFCTEUgcGFfdGFyZ2V0ICh0aWQgaW50ZWdlciwg YmFsYW5jZSBmbG9hdCwgdmFsIHRleHQpCisJUEFSVElUSU9OIEJZIExJU1QgKHRpZCk7CitD UkVBVEUgVEFCTEUgcGFydDEgKHRpZCBpbnRlZ2VyLCBiYWxhbmNlIGZsb2F0LCB2YWwgdGV4 dCk7CitDUkVBVEUgVEFCTEUgcGFydDIgKGJhbGFuY2UgZmxvYXQsIHRpZCBpbnRlZ2VyLCB2 YWwgdGV4dCk7CitDUkVBVEUgVEFCTEUgcGFydDMgKHRpZCBpbnRlZ2VyLCBiYWxhbmNlIGZs b2F0LCB2YWwgdGV4dCk7CitDUkVBVEUgVEFCTEUgcGFydDQgKGV4dHJhaWQgdGV4dCwgdGlk IGludGVnZXIsIGJhbGFuY2UgZmxvYXQsIHZhbCB0ZXh0KTsKK0FMVEVSIFRBQkxFIHBhcnQ0 IERST1AgQ09MVU1OIGV4dHJhaWQ7CitBTFRFUiBUQUJMRSBwYV90YXJnZXQgQVRUQUNIIFBB UlRJVElPTiBwYXJ0MSBGT1IgVkFMVUVTIElOICgxLDQpOworQUxURVIgVEFCTEUgcGFfdGFy Z2V0IEFUVEFDSCBQQVJUSVRJT04gcGFydDIgRk9SIFZBTFVFUyBJTiAoMiw1LDYpOworQUxU RVIgVEFCTEUgcGFfdGFyZ2V0IEFUVEFDSCBQQVJUSVRJT04gcGFydDMgRk9SIFZBTFVFUyBJ TiAoMyw4LDkpOworQUxURVIgVEFCTEUgcGFfdGFyZ2V0IEFUVEFDSCBQQVJUSVRJT04gcGFy dDQgREVGQVVMVDsKKy0tIGluc2VydCBhIGZldyByb3dzIGluIHRoZSB0YXJnZXQgdGFibGUg KG9kZCBudW1iZXJlZCB0aWQpCitJTlNFUlQgSU5UTyBwYV90YXJnZXQgU0VMRUNUIGlkLCBp ZCAqIDEwMCwgJ2luaXRpYWwnIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTQsMikgQVMgaWQ7 CistLSB0cnkgc2ltcGxlIE1FUkdFCitCRUdJTjsKK01FUkdFIElOVE8gcGFfdGFyZ2V0IHQK KyAgVVNJTkcgcGFfc291cmNlIHMKKyAgT04gdC50aWQgPSBzLnNpZAorICBXSEVOIE1BVENI RUQgVEhFTgorICAgIFVQREFURSBTRVQgYmFsYW5jZSA9IGJhbGFuY2UgKyBkZWx0YSwgdmFs ID0gdmFsIHx8ICcgdXBkYXRlZCBieSBtZXJnZScKKyAgV0hFTiBOT1QgTUFUQ0hFRCBUSEVO CisgICAgSU5TRVJUIFZBTFVFUyAoc2lkLCBkZWx0YSwgJ2luc2VydGVkIGJ5IG1lcmdlJyk7 CitTRUxFQ1QgKiBGUk9NIHBhX3RhcmdldCBPUkRFUiBCWSB0aWQ7CisgdGlkIHwgYmFsYW5j ZSB8ICAgICAgICAgICB2YWwgICAgICAgICAgICAKKy0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgMSB8ICAgICAxMTAgfCBpbml0aWFsIHVwZGF0ZWQg YnkgbWVyZ2UKKyAgIDIgfCAgICAgIDIwIHwgaW5zZXJ0ZWQgYnkgbWVyZ2UKKyAgIDMgfCAg ICAgMzMwIHwgaW5pdGlhbCB1cGRhdGVkIGJ5IG1lcmdlCisgICA0IHwgICAgICA0MCB8IGlu c2VydGVkIGJ5IG1lcmdlCisgICA1IHwgICAgIDU1MCB8IGluaXRpYWwgdXBkYXRlZCBieSBt ZXJnZQorICAgNiB8ICAgICAgNjAgfCBpbnNlcnRlZCBieSBtZXJnZQorICAgNyB8ICAgICA3 NzAgfCBpbml0aWFsIHVwZGF0ZWQgYnkgbWVyZ2UKKyAgIDggfCAgICAgIDgwIHwgaW5zZXJ0 ZWQgYnkgbWVyZ2UKKyAgIDkgfCAgICAgOTkwIHwgaW5pdGlhbCB1cGRhdGVkIGJ5IG1lcmdl CisgIDEwIHwgICAgIDEwMCB8IGluc2VydGVkIGJ5IG1lcmdlCisgIDExIHwgICAgMTIxMCB8 IGluaXRpYWwgdXBkYXRlZCBieSBtZXJnZQorICAxMiB8ICAgICAxMjAgfCBpbnNlcnRlZCBi eSBtZXJnZQorICAxMyB8ICAgIDE0MzAgfCBpbml0aWFsIHVwZGF0ZWQgYnkgbWVyZ2UKKyAg MTQgfCAgICAgMTQwIHwgaW5zZXJ0ZWQgYnkgbWVyZ2UKKygxNCByb3dzKQorCitST0xMQkFD SzsKKy0tIHNhbWUgd2l0aCBhIGNvbnN0YW50IHF1YWwKK0JFR0lOOworTUVSR0UgSU5UTyBw YV90YXJnZXQgdAorICBVU0lORyBwYV9zb3VyY2UgcworICBPTiB0LnRpZCA9IHMuc2lkIEFO RCB0aWQgSU4gKDEsIDUpCisgIFdIRU4gTUFUQ0hFRCBBTkQgdGlkICUgNSA9IDAgVEhFTiBE RUxFVEUKKyAgV0hFTiBNQVRDSEVEIFRIRU4KKyAgICBVUERBVEUgU0VUIGJhbGFuY2UgPSBi YWxhbmNlICsgZGVsdGEsIHZhbCA9IHZhbCB8fCAnIHVwZGF0ZWQgYnkgbWVyZ2UnCisgIFdI RU4gTk9UIE1BVENIRUQgVEhFTgorICAgIElOU0VSVCBWQUxVRVMgKHNpZCwgZGVsdGEsICdp bnNlcnRlZCBieSBtZXJnZScpOworU0VMRUNUICogRlJPTSBwYV90YXJnZXQgT1JERVIgQlkg dGlkOworIHRpZCB8IGJhbGFuY2UgfCAgICAgICAgICAgdmFsICAgICAgICAgICAgCistLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIDEgfCAgICAgMTEw IHwgaW5pdGlhbCB1cGRhdGVkIGJ5IG1lcmdlCisgICAyIHwgICAgICAyMCB8IGluc2VydGVk IGJ5IG1lcmdlCisgICAzIHwgICAgICAzMCB8IGluc2VydGVkIGJ5IG1lcmdlCisgICAzIHwg ICAgIDMwMCB8IGluaXRpYWwKKyAgIDQgfCAgICAgIDQwIHwgaW5zZXJ0ZWQgYnkgbWVyZ2UK KyAgIDYgfCAgICAgIDYwIHwgaW5zZXJ0ZWQgYnkgbWVyZ2UKKyAgIDcgfCAgICAgNzAwIHwg aW5pdGlhbAorICAgNyB8ICAgICAgNzAgfCBpbnNlcnRlZCBieSBtZXJnZQorICAgOCB8ICAg ICAgODAgfCBpbnNlcnRlZCBieSBtZXJnZQorICAgOSB8ICAgICA5MDAgfCBpbml0aWFsCisg ICA5IHwgICAgICA5MCB8IGluc2VydGVkIGJ5IG1lcmdlCisgIDEwIHwgICAgIDEwMCB8IGlu c2VydGVkIGJ5IG1lcmdlCisgIDExIHwgICAgIDExMCB8IGluc2VydGVkIGJ5IG1lcmdlCisg IDExIHwgICAgMTEwMCB8IGluaXRpYWwKKyAgMTIgfCAgICAgMTIwIHwgaW5zZXJ0ZWQgYnkg bWVyZ2UKKyAgMTMgfCAgICAxMzAwIHwgaW5pdGlhbAorICAxMyB8ICAgICAxMzAgfCBpbnNl cnRlZCBieSBtZXJnZQorICAxNCB8ICAgICAxNDAgfCBpbnNlcnRlZCBieSBtZXJnZQorKDE4 IHJvd3MpCisKK1JPTExCQUNLOworLS0gdHJ5IHVwZGF0aW5nIHRoZSBwYXJ0aXRpb24ga2V5 IGNvbHVtbgorQkVHSU47CitNRVJHRSBJTlRPIHBhX3RhcmdldCB0CisgIFVTSU5HIHBhX3Nv dXJjZSBzCisgIE9OIHQudGlkID0gcy5zaWQKKyAgV0hFTiBNQVRDSEVEIFRIRU4KKyAgICBV UERBVEUgU0VUIHRpZCA9IHRpZCArIDEsIGJhbGFuY2UgPSBiYWxhbmNlICsgZGVsdGEsIHZh bCA9IHZhbCB8fCAnIHVwZGF0ZWQgYnkgbWVyZ2UnCisgIFdIRU4gTk9UIE1BVENIRUQgVEhF TgorICAgIElOU0VSVCBWQUxVRVMgKHNpZCwgZGVsdGEsICdpbnNlcnRlZCBieSBtZXJnZScp OworU0VMRUNUICogRlJPTSBwYV90YXJnZXQgT1JERVIgQlkgdGlkOworIHRpZCB8IGJhbGFu Y2UgfCAgICAgICAgICAgdmFsICAgICAgICAgICAgCistLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIDIgfCAgICAgMTEwIHwgaW5pdGlhbCB1cGRhdGVk IGJ5IG1lcmdlCisgICAyIHwgICAgICAyMCB8IGluc2VydGVkIGJ5IG1lcmdlCisgICA0IHwg ICAgICA0MCB8IGluc2VydGVkIGJ5IG1lcmdlCisgICA0IHwgICAgIDMzMCB8IGluaXRpYWwg dXBkYXRlZCBieSBtZXJnZQorICAgNiB8ICAgICA1NTAgfCBpbml0aWFsIHVwZGF0ZWQgYnkg bWVyZ2UKKyAgIDYgfCAgICAgIDYwIHwgaW5zZXJ0ZWQgYnkgbWVyZ2UKKyAgIDggfCAgICAg IDgwIHwgaW5zZXJ0ZWQgYnkgbWVyZ2UKKyAgIDggfCAgICAgNzcwIHwgaW5pdGlhbCB1cGRh dGVkIGJ5IG1lcmdlCisgIDEwIHwgICAgIDk5MCB8IGluaXRpYWwgdXBkYXRlZCBieSBtZXJn ZQorICAxMCB8ICAgICAxMDAgfCBpbnNlcnRlZCBieSBtZXJnZQorICAxMiB8ICAgIDEyMTAg fCBpbml0aWFsIHVwZGF0ZWQgYnkgbWVyZ2UKKyAgMTIgfCAgICAgMTIwIHwgaW5zZXJ0ZWQg YnkgbWVyZ2UKKyAgMTQgfCAgICAxNDMwIHwgaW5pdGlhbCB1cGRhdGVkIGJ5IG1lcmdlCisg IDE0IHwgICAgIDE0MCB8IGluc2VydGVkIGJ5IG1lcmdlCisoMTQgcm93cykKKworUk9MTEJB Q0s7CitEUk9QIFRBQkxFIHBhX3NvdXJjZTsKK0RST1AgVEFCTEUgcGFfdGFyZ2V0IENBU0NB REU7CistLSBTdWItcGFydGl0aW9uaW5nCitDUkVBVEUgVEFCTEUgcGFfdGFyZ2V0IChsb2d0 cyB0aW1lc3RhbXAsIHRpZCBpbnRlZ2VyLCBiYWxhbmNlIGZsb2F0LCB2YWwgdGV4dCkKKwlQ QVJUSVRJT04gQlkgUkFOR0UgKGxvZ3RzKTsKK0NSRUFURSBUQUJMRSBwYXJ0X20wMSBQQVJU SVRJT04gT0YgcGFfdGFyZ2V0CisJRk9SIFZBTFVFUyBGUk9NICgnMjAxNy0wMS0wMScpIFRP ICgnMjAxNy0wMi0wMScpCisJUEFSVElUSU9OIEJZIExJU1QgKHRpZCk7CitDUkVBVEUgVEFC TEUgcGFydF9tMDFfb2RkIFBBUlRJVElPTiBPRiBwYXJ0X20wMQorCUZPUiBWQUxVRVMgSU4g KDEsMyw1LDcsOSk7CitDUkVBVEUgVEFCTEUgcGFydF9tMDFfZXZlbiBQQVJUSVRJT04gT0Yg cGFydF9tMDEKKwlGT1IgVkFMVUVTIElOICgyLDQsNiw4KTsKK0NSRUFURSBUQUJMRSBwYXJ0 X20wMiBQQVJUSVRJT04gT0YgcGFfdGFyZ2V0CisJRk9SIFZBTFVFUyBGUk9NICgnMjAxNy0w Mi0wMScpIFRPICgnMjAxNy0wMy0wMScpCisJUEFSVElUSU9OIEJZIExJU1QgKHRpZCk7CitD UkVBVEUgVEFCTEUgcGFydF9tMDJfb2RkIFBBUlRJVElPTiBPRiBwYXJ0X20wMgorCUZPUiBW QUxVRVMgSU4gKDEsMyw1LDcsOSk7CitDUkVBVEUgVEFCTEUgcGFydF9tMDJfZXZlbiBQQVJU SVRJT04gT0YgcGFydF9tMDIKKwlGT1IgVkFMVUVTIElOICgyLDQsNiw4KTsKK0NSRUFURSBU QUJMRSBwYV9zb3VyY2UgKHNpZCBpbnRlZ2VyLCBkZWx0YSBmbG9hdCk7CistLSBpbnNlcnQg bWFueSByb3dzIHRvIHRoZSBzb3VyY2UgdGFibGUKK0lOU0VSVCBJTlRPIHBhX3NvdXJjZSBT RUxFQ1QgaWQsIGlkICogMTAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTQpIEFTIGlkOwor LS0gaW5zZXJ0IGEgZmV3IHJvd3MgaW4gdGhlIHRhcmdldCB0YWJsZSAob2RkIG51bWJlcmVk IHRpZCkKK0lOU0VSVCBJTlRPIHBhX3RhcmdldCBTRUxFQ1QgJzIwMTctMDEtMzEnLCBpZCwg aWQgKiAxMDAsICdpbml0aWFsJyBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDksMykgQVMgaWQ7 CitJTlNFUlQgSU5UTyBwYV90YXJnZXQgU0VMRUNUICcyMDE3LTAyLTI4JywgaWQsIGlkICog MTAwLCAnaW5pdGlhbCcgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMiw5LDMpIEFTIGlkOworLS0g dHJ5IHNpbXBsZSBNRVJHRQorQkVHSU47CitNRVJHRSBJTlRPIHBhX3RhcmdldCB0CisgIFVT SU5HIChTRUxFQ1QgJzIwMTctMDEtMTUnIEFTIHNsb2d0cywgKiBGUk9NIHBhX3NvdXJjZSBX SEVSRSBzaWQgPCAxMCkgcworICBPTiB0LnRpZCA9IHMuc2lkCisgIFdIRU4gTUFUQ0hFRCBU SEVOCisgICAgVVBEQVRFIFNFVCBiYWxhbmNlID0gYmFsYW5jZSArIGRlbHRhLCB2YWwgPSB2 YWwgfHwgJyB1cGRhdGVkIGJ5IG1lcmdlJworICBXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKyAg ICBJTlNFUlQgVkFMVUVTIChzbG9ndHM6OnRpbWVzdGFtcCwgc2lkLCBkZWx0YSwgJ2luc2Vy dGVkIGJ5IG1lcmdlJyk7CitTRUxFQ1QgKiBGUk9NIHBhX3RhcmdldCBPUkRFUiBCWSB0aWQ7 CisgICAgICAgICAgbG9ndHMgICAgICAgICAgIHwgdGlkIHwgYmFsYW5jZSB8ICAgICAgICAg ICB2YWwgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFR1ZSBKYW4gMzEgMDA6MDA6 MDAgMjAxNyB8ICAgMSB8ICAgICAxMTAgfCBpbml0aWFsIHVwZGF0ZWQgYnkgbWVyZ2UKKyBU dWUgRmViIDI4IDAwOjAwOjAwIDIwMTcgfCAgIDIgfCAgICAgMjIwIHwgaW5pdGlhbCB1cGRh dGVkIGJ5IG1lcmdlCisgU3VuIEphbiAxNSAwMDowMDowMCAyMDE3IHwgICAzIHwgICAgICAz MCB8IGluc2VydGVkIGJ5IG1lcmdlCisgVHVlIEphbiAzMSAwMDowMDowMCAyMDE3IHwgICA0 IHwgICAgIDQ0MCB8IGluaXRpYWwgdXBkYXRlZCBieSBtZXJnZQorIFR1ZSBGZWIgMjggMDA6 MDA6MDAgMjAxNyB8ICAgNSB8ICAgICA1NTAgfCBpbml0aWFsIHVwZGF0ZWQgYnkgbWVyZ2UK KyBTdW4gSmFuIDE1IDAwOjAwOjAwIDIwMTcgfCAgIDYgfCAgICAgIDYwIHwgaW5zZXJ0ZWQg YnkgbWVyZ2UKKyBUdWUgSmFuIDMxIDAwOjAwOjAwIDIwMTcgfCAgIDcgfCAgICAgNzcwIHwg aW5pdGlhbCB1cGRhdGVkIGJ5IG1lcmdlCisgVHVlIEZlYiAyOCAwMDowMDowMCAyMDE3IHwg ICA4IHwgICAgIDg4MCB8IGluaXRpYWwgdXBkYXRlZCBieSBtZXJnZQorIFN1biBKYW4gMTUg MDA6MDA6MDAgMjAxNyB8ICAgOSB8ICAgICAgOTAgfCBpbnNlcnRlZCBieSBtZXJnZQorKDkg cm93cykKKworUk9MTEJBQ0s7CitEUk9QIFRBQkxFIHBhX3NvdXJjZTsKK0RST1AgVEFCTEUg cGFfdGFyZ2V0IENBU0NBREU7CistLSBzb21lIGNvbXBsZXggam9pbnMgb24gdGhlIHNvdXJj ZSBzaWRlCitDUkVBVEUgVEFCTEUgY2pfdGFyZ2V0ICh0aWQgaW50ZWdlciwgYmFsYW5jZSBm bG9hdCwgdmFsIHRleHQpOworQ1JFQVRFIFRBQkxFIGNqX3NvdXJjZTEgKHNpZDEgaW50ZWdl ciwgc2NhdCBpbnRlZ2VyLCBkZWx0YSBpbnRlZ2VyKTsKK0NSRUFURSBUQUJMRSBjal9zb3Vy Y2UyIChzaWQyIGludGVnZXIsIHN2YWwgdGV4dCk7CitJTlNFUlQgSU5UTyBjal9zb3VyY2Ux IFZBTFVFUyAoMSwgMTAsIDEwMCk7CitJTlNFUlQgSU5UTyBjal9zb3VyY2UxIFZBTFVFUyAo MSwgMjAsIDIwMCk7CitJTlNFUlQgSU5UTyBjal9zb3VyY2UxIFZBTFVFUyAoMiwgMjAsIDMw MCk7CitJTlNFUlQgSU5UTyBjal9zb3VyY2UxIFZBTFVFUyAoMywgMTAsIDQwMCk7CitJTlNF UlQgSU5UTyBjal9zb3VyY2UyIFZBTFVFUyAoMSwgJ2luaXRpYWwgc291cmNlMicpOworSU5T RVJUIElOVE8gY2pfc291cmNlMiBWQUxVRVMgKDIsICdpbml0aWFsIHNvdXJjZTInKTsKK0lO U0VSVCBJTlRPIGNqX3NvdXJjZTIgVkFMVUVTICgzLCAnaW5pdGlhbCBzb3VyY2UyJyk7Cist LSBzb3VyY2UgcmVsYXRpb24gaXMgYW4gdW5hbGlhc2VkIGpvaW4KK01FUkdFIElOVE8gY2pf dGFyZ2V0IHQKK1VTSU5HIGNqX3NvdXJjZTEgczEKKwlJTk5FUiBKT0lOIGNqX3NvdXJjZTIg czIgT04gc2lkMSA9IHNpZDIKK09OIHQudGlkID0gc2lkMQorV0hFTiBOT1QgTUFUQ0hFRCBU SEVOCisJSU5TRVJUIFZBTFVFUyAoc2lkMSwgZGVsdGEsIHN2YWwpOworLS0gdHJ5IGFjY2Vz c2luZyBjb2x1bW5zIGZyb20gZWl0aGVyIHNpZGUgb2YgdGhlIHNvdXJjZSBqb2luCitNRVJH RSBJTlRPIGNqX3RhcmdldCB0CitVU0lORyBjal9zb3VyY2UyIHMyCisJSU5ORVIgSk9JTiBj al9zb3VyY2UxIHMxIE9OIHNpZDEgPSBzaWQyIEFORCBzY2F0ID0gMjAKK09OIHQudGlkID0g c2lkMQorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIFZBTFVFUyAoc2lkMiwgZGVs dGEsIHN2YWwpCitXSEVOIE1BVENIRUQgVEhFTgorCURFTEVURTsKKy0tIHNvbWUgc2ltcGxl IGV4cHJlc3Npb25zIGluIElOU0VSVCB0YXJnZXRsaXN0CitNRVJHRSBJTlRPIGNqX3Rhcmdl dCB0CitVU0lORyBjal9zb3VyY2UyIHMyCisJSU5ORVIgSk9JTiBjal9zb3VyY2UxIHMxIE9O IHNpZDEgPSBzaWQyCitPTiB0LnRpZCA9IHNpZDEKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgor CUlOU0VSVCBWQUxVRVMgKHNpZDIsIGRlbHRhICsgc2NhdCwgc3ZhbCkKK1dIRU4gTUFUQ0hF RCBUSEVOCisJVVBEQVRFIFNFVCB2YWwgPSB2YWwgfHwgJyB1cGRhdGVkIGJ5IG1lcmdlJzsK K01FUkdFIElOVE8gY2pfdGFyZ2V0IHQKK1VTSU5HIGNqX3NvdXJjZTIgczIKKwlJTk5FUiBK T0lOIGNqX3NvdXJjZTEgczEgT04gc2lkMSA9IHNpZDIgQU5EIHNjYXQgPSAyMAorT04gdC50 aWQgPSBzaWQxCitXSEVOIE1BVENIRUQgVEhFTgorCVVQREFURSBTRVQgdmFsID0gdmFsIHx8 ICcgJyB8fCBkZWx0YTo6dGV4dDsKK1NFTEVDVCAqIEZST00gY2pfdGFyZ2V0OworIHRpZCB8 IGJhbGFuY2UgfCAgICAgICAgICAgICAgIHZhbCAgICAgICAgICAgICAgICAKKy0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAzIHwgICAg IDQwMCB8IGluaXRpYWwgc291cmNlMiB1cGRhdGVkIGJ5IG1lcmdlCisgICAxIHwgICAgIDIy MCB8IGluaXRpYWwgc291cmNlMiAyMDAKKyAgIDEgfCAgICAgMTEwIHwgaW5pdGlhbCBzb3Vy Y2UyIDIwMAorICAgMiB8ICAgICAzMjAgfCBpbml0aWFsIHNvdXJjZTIgMzAwCisoNCByb3dz KQorCitBTFRFUiBUQUJMRSBjal9zb3VyY2UxIFJFTkFNRSBDT0xVTU4gc2lkMSBUTyBzaWQ7 CitBTFRFUiBUQUJMRSBjal9zb3VyY2UyIFJFTkFNRSBDT0xVTU4gc2lkMiBUTyBzaWQ7CitU UlVOQ0FURSBjal90YXJnZXQ7CitNRVJHRSBJTlRPIGNqX3RhcmdldCB0CitVU0lORyBjal9z b3VyY2UxIHMxCisJSU5ORVIgSk9JTiBjal9zb3VyY2UyIHMyIE9OIHMxLnNpZCA9IHMyLnNp ZAorT04gdC50aWQgPSBzMS5zaWQKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCUlOU0VSVCBW QUxVRVMgKHMyLnNpZCwgZGVsdGEsIHN2YWwpOworRFJPUCBUQUJMRSBjal9zb3VyY2UyLCBj al9zb3VyY2UxLCBjal90YXJnZXQ7CistLSBGdW5jdGlvbiBzY2FucworQ1JFQVRFIFRBQkxF IGZzX3RhcmdldCAoYSBpbnQsIGIgaW50LCBjIHRleHQpOworTUVSR0UgSU5UTyBmc190YXJn ZXQgdAorVVNJTkcgZ2VuZXJhdGVfc2VyaWVzKDEsMTAwLDEpIEFTIGlkCitPTiB0LmEgPSBp ZAorV0hFTiBNQVRDSEVEIFRIRU4KKwlVUERBVEUgU0VUIGIgPSBiICsgaWQKK1dIRU4gTk9U IE1BVENIRUQgVEhFTgorCUlOU0VSVCBWQUxVRVMgKGlkLCAtMSk7CitNRVJHRSBJTlRPIGZz X3RhcmdldCB0CitVU0lORyBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAsMikgQVMgaWQKK09OIHQu YSA9IGlkCitXSEVOIE1BVENIRUQgVEhFTgorCVVQREFURSBTRVQgYiA9IGIgKyBpZCwgYyA9 ICd1cGRhdGVkICd8fCBpZC4qOjp0ZXh0CitXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNF UlQgVkFMVUVTIChpZCwgLTEsICdpbnNlcnRlZCAnIHx8IGlkLio6OnRleHQpOworU0VMRUNU IGNvdW50KCopIEZST00gZnNfdGFyZ2V0OworIGNvdW50IAorLS0tLS0tLQorICAgMTAwCiso MSByb3cpCisKK0RST1AgVEFCTEUgZnNfdGFyZ2V0OworLS0gU0VSSUFMSVpBQkxFIHRlc3QK Ky0tIGhhbmRsZWQgaW4gaXNvbGF0aW9uIHRlc3RzCistLSBJbmhlcml0YW5jZS1iYXNlZCBw YXJ0aXRpb25pbmcKK0NSRUFURSBUQUJMRSBtZWFzdXJlbWVudCAoCisgICAgY2l0eV9pZCAg ICAgICAgIGludCBub3QgbnVsbCwKKyAgICBsb2dkYXRlICAgICAgICAgZGF0ZSBub3QgbnVs bCwKKyAgICBwZWFrdGVtcCAgICAgICAgaW50LAorICAgIHVuaXRzYWxlcyAgICAgICBpbnQK Kyk7CitDUkVBVEUgVEFCTEUgbWVhc3VyZW1lbnRfeTIwMDZtMDIgKAorICAgIENIRUNLICgg bG9nZGF0ZSA+PSBEQVRFICcyMDA2LTAyLTAxJyBBTkQgbG9nZGF0ZSA8IERBVEUgJzIwMDYt MDMtMDEnICkKKykgSU5IRVJJVFMgKG1lYXN1cmVtZW50KTsKK0NSRUFURSBUQUJMRSBtZWFz dXJlbWVudF95MjAwNm0wMyAoCisgICAgQ0hFQ0sgKCBsb2dkYXRlID49IERBVEUgJzIwMDYt MDMtMDEnIEFORCBsb2dkYXRlIDwgREFURSAnMjAwNi0wNC0wMScgKQorKSBJTkhFUklUUyAo bWVhc3VyZW1lbnQpOworQ1JFQVRFIFRBQkxFIG1lYXN1cmVtZW50X3kyMDA3bTAxICgKKyAg ICBmaWxsZXIgICAgICAgICAgdGV4dCwKKyAgICBwZWFrdGVtcCAgICAgICAgaW50LAorICAg IGxvZ2RhdGUgICAgICAgICBkYXRlIG5vdCBudWxsLAorICAgIGNpdHlfaWQgICAgICAgICBp bnQgbm90IG51bGwsCisgICAgdW5pdHNhbGVzICAgICAgIGludAorICAgIENIRUNLICggbG9n ZGF0ZSA+PSBEQVRFICcyMDA3LTAxLTAxJyBBTkQgbG9nZGF0ZSA8IERBVEUgJzIwMDctMDIt MDEnKQorKTsKK0FMVEVSIFRBQkxFIG1lYXN1cmVtZW50X3kyMDA3bTAxIERST1AgQ09MVU1O IGZpbGxlcjsKK0FMVEVSIFRBQkxFIG1lYXN1cmVtZW50X3kyMDA3bTAxIElOSEVSSVQgbWVh c3VyZW1lbnQ7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBtZWFzdXJlbWVudF9pbnNl cnRfdHJpZ2dlcigpCitSRVRVUk5TIFRSSUdHRVIgQVMgJCQKK0JFR0lOCisgICAgSUYgKCBO RVcubG9nZGF0ZSA+PSBEQVRFICcyMDA2LTAyLTAxJyBBTkQKKyAgICAgICAgIE5FVy5sb2dk YXRlIDwgREFURSAnMjAwNi0wMy0wMScgKSBUSEVOCisgICAgICAgIElOU0VSVCBJTlRPIG1l YXN1cmVtZW50X3kyMDA2bTAyIFZBTFVFUyAoTkVXLiopOworICAgIEVMU0lGICggTkVXLmxv Z2RhdGUgPj0gREFURSAnMjAwNi0wMy0wMScgQU5ECisgICAgICAgICAgICBORVcubG9nZGF0 ZSA8IERBVEUgJzIwMDYtMDQtMDEnICkgVEhFTgorICAgICAgICBJTlNFUlQgSU5UTyBtZWFz dXJlbWVudF95MjAwNm0wMyBWQUxVRVMgKE5FVy4qKTsKKyAgICBFTFNJRiAoIE5FVy5sb2dk YXRlID49IERBVEUgJzIwMDctMDEtMDEnIEFORAorICAgICAgICAgICAgTkVXLmxvZ2RhdGUg PCBEQVRFICcyMDA3LTAyLTAxJyApIFRIRU4KKyAgICAgICAgSU5TRVJUIElOVE8gbWVhc3Vy ZW1lbnRfeTIwMDdtMDEgKGNpdHlfaWQsIGxvZ2RhdGUsIHBlYWt0ZW1wLCB1bml0c2FsZXMp CisgICAgICAgICAgICBWQUxVRVMgKE5FVy4qKTsKKyAgICBFTFNFCisgICAgICAgIFJBSVNF IEVYQ0VQVElPTiAnRGF0ZSBvdXQgb2YgcmFuZ2UuICBGaXggdGhlIG1lYXN1cmVtZW50X2lu c2VydF90cmlnZ2VyKCkgZnVuY3Rpb24hJzsKKyAgICBFTkQgSUY7CisgICAgUkVUVVJOIE5V TEw7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsIDsKK0NSRUFURSBUUklHR0VSIGluc2Vy dF9tZWFzdXJlbWVudF90cmlnZ2VyCisgICAgQkVGT1JFIElOU0VSVCBPTiBtZWFzdXJlbWVu dAorICAgIEZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSBtZWFzdXJlbWVudF9pbnNl cnRfdHJpZ2dlcigpOworSU5TRVJUIElOVE8gbWVhc3VyZW1lbnQgVkFMVUVTICgxLCAnMjAw Ni0wMi0xMCcsIDM1LCAxMCk7CitJTlNFUlQgSU5UTyBtZWFzdXJlbWVudCBWQUxVRVMgKDEs ICcyMDA2LTAyLTE2JywgNDUsIDIwKTsKK0lOU0VSVCBJTlRPIG1lYXN1cmVtZW50IFZBTFVF UyAoMSwgJzIwMDYtMDMtMTcnLCAyNSwgMTApOworSU5TRVJUIElOVE8gbWVhc3VyZW1lbnQg VkFMVUVTICgxLCAnMjAwNi0wMy0yNycsIDE1LCA0MCk7CitJTlNFUlQgSU5UTyBtZWFzdXJl bWVudCBWQUxVRVMgKDEsICcyMDA3LTAxLTE1JywgMTAsIDEwKTsKK0lOU0VSVCBJTlRPIG1l YXN1cmVtZW50IFZBTFVFUyAoMSwgJzIwMDctMDEtMTcnLCAxMCwgMTApOworU0VMRUNUIHRh Ymxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIG1lYXN1cmVtZW50IE9SREVSIEJZIGNpdHlfaWQs IGxvZ2RhdGU7CisgICAgICAgdGFibGVvaWQgICAgICAgfCBjaXR5X2lkIHwgIGxvZ2RhdGUg ICB8IHBlYWt0ZW1wIHwgdW5pdHNhbGVzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBtZWFzdXJlbWVu dF95MjAwNm0wMiB8ICAgICAgIDEgfCAwMi0xMC0yMDA2IHwgICAgICAgMzUgfCAgICAgICAg MTAKKyBtZWFzdXJlbWVudF95MjAwNm0wMiB8ICAgICAgIDEgfCAwMi0xNi0yMDA2IHwgICAg ICAgNDUgfCAgICAgICAgMjAKKyBtZWFzdXJlbWVudF95MjAwNm0wMyB8ICAgICAgIDEgfCAw My0xNy0yMDA2IHwgICAgICAgMjUgfCAgICAgICAgMTAKKyBtZWFzdXJlbWVudF95MjAwNm0w MyB8ICAgICAgIDEgfCAwMy0yNy0yMDA2IHwgICAgICAgMTUgfCAgICAgICAgNDAKKyBtZWFz dXJlbWVudF95MjAwN20wMSB8ICAgICAgIDEgfCAwMS0xNS0yMDA3IHwgICAgICAgMTAgfCAg ICAgICAgMTAKKyBtZWFzdXJlbWVudF95MjAwN20wMSB8ICAgICAgIDEgfCAwMS0xNy0yMDA3 IHwgICAgICAgMTAgfCAgICAgICAgMTAKKyg2IHJvd3MpCisKK0NSRUFURSBUQUJMRSBuZXdf bWVhc3VyZW1lbnQgKExJS0UgbWVhc3VyZW1lbnQpOworSU5TRVJUIElOVE8gbmV3X21lYXN1 cmVtZW50IFZBTFVFUyAoMSwgJzIwMDYtMDMtMDEnLCAyMCwgMTApOworSU5TRVJUIElOVE8g bmV3X21lYXN1cmVtZW50IFZBTFVFUyAoMSwgJzIwMDYtMDItMTYnLCA1MCwgMTApOworSU5T RVJUIElOVE8gbmV3X21lYXN1cmVtZW50IFZBTFVFUyAoMiwgJzIwMDYtMDItMTAnLCAyMCwg MjApOworSU5TRVJUIElOVE8gbmV3X21lYXN1cmVtZW50IFZBTFVFUyAoMSwgJzIwMDYtMDMt MjcnLCBOVUxMLCBOVUxMKTsKK0lOU0VSVCBJTlRPIG5ld19tZWFzdXJlbWVudCBWQUxVRVMg KDEsICcyMDA3LTAxLTE3JywgTlVMTCwgTlVMTCk7CitJTlNFUlQgSU5UTyBuZXdfbWVhc3Vy ZW1lbnQgVkFMVUVTICgxLCAnMjAwNy0wMS0xNScsIDUsIE5VTEwpOworSU5TRVJUIElOVE8g bmV3X21lYXN1cmVtZW50IFZBTFVFUyAoMSwgJzIwMDctMDEtMTYnLCAxMCwgMTApOworTUVS R0UgaW50byBtZWFzdXJlbWVudCBtCisgVVNJTkcgbmV3X21lYXN1cmVtZW50IG5tIE9OCisg ICAgICAobS5jaXR5X2lkID0gbm0uY2l0eV9pZCBhbmQgbS5sb2dkYXRlPW5tLmxvZ2RhdGUp CitXSEVOIE1BVENIRUQgQU5EIG5tLnBlYWt0ZW1wIElTIE5VTEwgVEhFTiBERUxFVEUKK1dI RU4gTUFUQ0hFRCBUSEVOIFVQREFURQorICAgICBTRVQgcGVha3RlbXAgPSBncmVhdGVzdCht LnBlYWt0ZW1wLCBubS5wZWFrdGVtcCksCisgICAgICAgIHVuaXRzYWxlcyA9IG0udW5pdHNh bGVzICsgY29hbGVzY2Uobm0udW5pdHNhbGVzLCAwKQorV0hFTiBOT1QgTUFUQ0hFRCBUSEVO IElOU0VSVAorICAgICAoY2l0eV9pZCwgbG9nZGF0ZSwgcGVha3RlbXAsIHVuaXRzYWxlcykK KyAgIFZBTFVFUyAoY2l0eV9pZCwgbG9nZGF0ZSwgcGVha3RlbXAsIHVuaXRzYWxlcyk7CitT RUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gbWVhc3VyZW1lbnQgT1JERVIgQlkg Y2l0eV9pZCwgbG9nZGF0ZTsKKyAgICAgICB0YWJsZW9pZCAgICAgICB8IGNpdHlfaWQgfCAg bG9nZGF0ZSAgIHwgcGVha3RlbXAgfCB1bml0c2FsZXMgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIG1l YXN1cmVtZW50X3kyMDA2bTAyIHwgICAgICAgMSB8IDAyLTEwLTIwMDYgfCAgICAgICAzNSB8 ICAgICAgICAxMAorIG1lYXN1cmVtZW50X3kyMDA2bTAyIHwgICAgICAgMSB8IDAyLTE2LTIw MDYgfCAgICAgICA1MCB8ICAgICAgICAzMAorIG1lYXN1cmVtZW50X3kyMDA2bTAzIHwgICAg ICAgMSB8IDAzLTAxLTIwMDYgfCAgICAgICAyMCB8ICAgICAgICAxMAorIG1lYXN1cmVtZW50 X3kyMDA2bTAzIHwgICAgICAgMSB8IDAzLTE3LTIwMDYgfCAgICAgICAyNSB8ICAgICAgICAx MAorIG1lYXN1cmVtZW50X3kyMDA3bTAxIHwgICAgICAgMSB8IDAxLTE1LTIwMDcgfCAgICAg ICAxMCB8ICAgICAgICAxMAorIG1lYXN1cmVtZW50X3kyMDA3bTAxIHwgICAgICAgMSB8IDAx LTE2LTIwMDcgfCAgICAgICAxMCB8ICAgICAgICAxMAorIG1lYXN1cmVtZW50X3kyMDA2bTAy IHwgICAgICAgMiB8IDAyLTEwLTIwMDYgfCAgICAgICAyMCB8ICAgICAgICAyMAorKDcgcm93 cykKKworRFJPUCBUQUJMRSBtZWFzdXJlbWVudCwgbmV3X21lYXN1cmVtZW50IENBU0NBREU7 CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIDMgb3RoZXIgb2JqZWN0cworREVUQUlMOiAg ZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBtZWFzdXJlbWVudF95MjAwNm0wMgorZHJvcCBjYXNj YWRlcyB0byB0YWJsZSBtZWFzdXJlbWVudF95MjAwNm0wMworZHJvcCBjYXNjYWRlcyB0byB0 YWJsZSBtZWFzdXJlbWVudF95MjAwN20wMQorRFJPUCBGVU5DVElPTiBtZWFzdXJlbWVudF9p bnNlcnRfdHJpZ2dlcigpOworLS0gcHJlcGFyZQorUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFU SU9OOworRFJPUCBUQUJMRSB0YXJnZXQsIHRhcmdldDI7CitEUk9QIFRBQkxFIHNvdXJjZSwg c291cmNlMjsKK0RST1AgRlVOQ1RJT04gbWVyZ2VfdHJpZ2Z1bmMoKTsKK0RST1AgVVNFUiBt ZXJnZV9wcml2czsKK0RST1AgVVNFUiBtZXJnZV9ub19wcml2czsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3ByaXZpbGVnZXMub3V0CmluZGV4IDI5MWUyMWQ3YTYuLjhiNGIwMzlj NmEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wcml2aWxlZ2VzLm91dApAQCAt Njk5LDYgKzY5OSwxMDQgQEAgU0VMRUNUIGF0ZXN0NiBGUk9NIGF0ZXN0NjsgLS0gb2sKICgw IHJvd3MpCiAKIENPUFkgYXRlc3Q2IFRPIHN0ZG91dDsgLS0gb2sKKy0tIHRlc3QgY29sdW1u IHByaXZpbGVnZXMgd2l0aCBNRVJHRQorU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdy ZXNzX3ByaXZfdXNlcjE7CitDUkVBVEUgVEFCTEUgbXRhcmdldCAoYSBpbnQsIGIgdGV4dCk7 CitDUkVBVEUgVEFCTEUgbXNvdXJjZSAoYSBpbnQsIGIgdGV4dCk7CitJTlNFUlQgSU5UTyBt dGFyZ2V0IFZBTFVFUyAoMSwgJ2luaXQxJyksICgyLCAnaW5pdDInKTsKK0lOU0VSVCBJTlRP IG1zb3VyY2UgVkFMVUVTICgxLCAnc291cmNlMScpLCAoMiwgJ3NvdXJjZTInKSwgKDMsICdz b3VyY2UzJyk7CitHUkFOVCBTRUxFQ1QgKGEpIE9OIG1zb3VyY2UgVE8gcmVncmVzc19wcml2 X3VzZXI0OworR1JBTlQgU0VMRUNUIChhKSBPTiBtdGFyZ2V0IFRPIHJlZ3Jlc3NfcHJpdl91 c2VyNDsKK0dSQU5UIElOU0VSVCAoYSxiKSBPTiBtdGFyZ2V0IFRPIHJlZ3Jlc3NfcHJpdl91 c2VyNDsKK0dSQU5UIFVQREFURSAoYikgT04gbXRhcmdldCBUTyByZWdyZXNzX3ByaXZfdXNl cjQ7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyNDsKKy0t CistLSB0ZXN0IHNvdXJjZSBwcml2aWxlZ2VzCistLQorLS0gZmFpbCAobm8gU0VMRUNUIHBy aXYgb24gcy5iKQorTUVSR0UgSU5UTyBtdGFyZ2V0IHQgVVNJTkcgbXNvdXJjZSBzIE9OIHQu YSA9IHMuYQorV0hFTiBNQVRDSEVEIFRIRU4KKwlVUERBVEUgU0VUIGIgPSBzLmIKK1dIRU4g Tk9UIE1BVENIRUQgVEhFTgorCUlOU0VSVCBWQUxVRVMgKGEsIE5VTEwpOworRVJST1I6ICBw ZXJtaXNzaW9uIGRlbmllZCBmb3IgdGFibGUgbXNvdXJjZQorLS0gZmFpbCAocy5iIHVzZWQg aW4gdGhlIElOU0VSVGVkIHZhbHVlcykKK01FUkdFIElOVE8gbXRhcmdldCB0IFVTSU5HIG1z b3VyY2UgcyBPTiB0LmEgPSBzLmEKK1dIRU4gTUFUQ0hFRCBUSEVOCisJVVBEQVRFIFNFVCBi ID0gJ3gnCitXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgVkFMVUVTIChhLCBiKTsK K0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHRhYmxlIG1zb3VyY2UKKy0tIGZhaWwg KHMuYiB1c2VkIGluIHRoZSBXSEVOIHF1YWxzKQorTUVSR0UgSU5UTyBtdGFyZ2V0IHQgVVNJ TkcgbXNvdXJjZSBzIE9OIHQuYSA9IHMuYQorV0hFTiBNQVRDSEVEIEFORCBzLmIgPSAneCcg VEhFTgorCVVQREFURSBTRVQgYiA9ICd4JworV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5T RVJUIFZBTFVFUyAoYSwgTlVMTCk7CitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciB0 YWJsZSBtc291cmNlCistLSB0aGlzIHNob3VsZCBiZSBvayBzaW5jZSBvbmx5IHMuYSBpcyBh Y2Nlc3NlZAorQkVHSU47CitNRVJHRSBJTlRPIG10YXJnZXQgdCBVU0lORyBtc291cmNlIHMg T04gdC5hID0gcy5hCitXSEVOIE1BVENIRUQgVEhFTgorCVVQREFURSBTRVQgYiA9ICdvaycK K1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCUlOU0VSVCBWQUxVRVMgKGEsIE5VTEwpOworUk9M TEJBQ0s7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsK K0dSQU5UIFNFTEVDVCAoYikgT04gbXNvdXJjZSBUTyByZWdyZXNzX3ByaXZfdXNlcjQ7CitT RVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyNDsKKy0tIHNob3Vs ZCBub3cgYmUgb2sKK0JFR0lOOworTUVSR0UgSU5UTyBtdGFyZ2V0IHQgVVNJTkcgbXNvdXJj ZSBzIE9OIHQuYSA9IHMuYQorV0hFTiBNQVRDSEVEIFRIRU4KKwlVUERBVEUgU0VUIGIgPSBz LmIKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCUlOU0VSVCBWQUxVRVMgKGEsIGIpOworUk9M TEJBQ0s7CistLQorLS0gdGVzdCB0YXJnZXQgcHJpdmlsZWdlcworLS0KKy0tIGZhaWwgKG5v IFNFTEVDVCBwcml2IG9uIHQuYikKK01FUkdFIElOVE8gbXRhcmdldCB0IFVTSU5HIG1zb3Vy Y2UgcyBPTiB0LmEgPSBzLmEKK1dIRU4gTUFUQ0hFRCBUSEVOCisJVVBEQVRFIFNFVCBiID0g dC5iCitXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgVkFMVUVTIChhLCBOVUxMKTsK K0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHRhYmxlIG10YXJnZXQKKy0tIGZhaWwg KG5vIFVQREFURSBvbiB0LmEpCitNRVJHRSBJTlRPIG10YXJnZXQgdCBVU0lORyBtc291cmNl IHMgT04gdC5hID0gcy5hCitXSEVOIE1BVENIRUQgVEhFTgorCVVQREFURSBTRVQgYiA9IHMu YiwgYSA9IHQuYSArIDEKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCUlOU0VSVCBWQUxVRVMg KGEsIGIpOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3IgdGFibGUgbXRhcmdldAor LS0gZmFpbCAobm8gU0VMRUNUIG9uIHQuYikKK01FUkdFIElOVE8gbXRhcmdldCB0IFVTSU5H IG1zb3VyY2UgcyBPTiB0LmEgPSBzLmEKK1dIRU4gTUFUQ0hFRCBBTkQgdC5iIElTIE5PVCBO VUxMIFRIRU4KKwlVUERBVEUgU0VUIGIgPSBzLmIKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgor CUlOU0VSVCBWQUxVRVMgKGEsIGIpOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Ig dGFibGUgbXRhcmdldAorLS0gb2sKK0JFR0lOOworTUVSR0UgSU5UTyBtdGFyZ2V0IHQgVVNJ TkcgbXNvdXJjZSBzIE9OIHQuYSA9IHMuYQorV0hFTiBNQVRDSEVEIFRIRU4KKwlVUERBVEUg U0VUIGIgPSBzLmI7CitST0xMQkFDSzsKKy0tIGZhaWwgKG5vIERFTEVURSkKK01FUkdFIElO VE8gbXRhcmdldCB0IFVTSU5HIG1zb3VyY2UgcyBPTiB0LmEgPSBzLmEKK1dIRU4gTUFUQ0hF RCBBTkQgdC5iIElTIE5PVCBOVUxMIFRIRU4KKwlERUxFVEU7CitFUlJPUjogIHBlcm1pc3Np b24gZGVuaWVkIGZvciB0YWJsZSBtdGFyZ2V0CistLSBncmFudCBkZWxldGUgcHJpdmlsZWdl cworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjE7CitHUkFO VCBERUxFVEUgT04gbXRhcmdldCBUTyByZWdyZXNzX3ByaXZfdXNlcjQ7CistLSBzaG91bGQg YmUgb2sgbm93CitCRUdJTjsKK01FUkdFIElOVE8gbXRhcmdldCB0IFVTSU5HIG1zb3VyY2Ug cyBPTiB0LmEgPSBzLmEKK1dIRU4gTUFUQ0hFRCBBTkQgdC5iIElTIE5PVCBOVUxMIFRIRU4K KwlERUxFVEU7CitST0xMQkFDSzsKIC0tIGNoZWNrIGVycm9yIHJlcG9ydGluZyB3aXRoIGNv bHVtbiBwcml2cwogU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNl cjE7CiBDUkVBVEUgVEFCTEUgdDEgKGMxIGludCwgYzIgaW50LCBjMyBpbnQgY2hlY2sgKGMz IDwgNSksIHByaW1hcnkga2V5IChjMSwgYzIpKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcm93c2VjdXJpdHkub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9yb3dzZWN1cml0eS5vdXQKaW5kZXggODkzOTdlNDFmMC4uZjAyYjRlMzE1MyAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yb3dzZWN1cml0eS5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yb3dzZWN1cml0eS5vdXQKQEAgLTIxMTcs NiArMjExNywxODggQEAgRVJST1I6ICBuZXcgcm93IHZpb2xhdGVzIHJvdy1sZXZlbCBzZWN1 cml0eSBwb2xpY3kgKFVTSU5HIGV4cHJlc3Npb24pIGZvciB0YWJsZQogSU5TRVJUIElOVE8g ZG9jdW1lbnQgVkFMVUVTICgxLCAoU0VMRUNUIGNpZCBmcm9tIGNhdGVnb3J5IFdIRVJFIGNu YW1lID0gJ25vdmVsJyksIDEsICdyZWdyZXNzX3Jsc19ib2InLCAnbXkgZmlyc3Qgbm92ZWwn KQogICAgIE9OIENPTkZMSUNUIChkaWQpIERPIFVQREFURSBTRVQgZGF1dGhvciA9ICdyZWdy ZXNzX3Jsc19jYXJvbCc7CiBFUlJPUjogIG5ldyByb3cgdmlvbGF0ZXMgcm93LWxldmVsIHNl Y3VyaXR5IHBvbGljeSBmb3IgdGFibGUgImRvY3VtZW50IgorLS0KKy0tIE1FUkdFCistLQor UkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworRFJPUCBQT0xJQ1kgcDNfd2l0aF9hbGwg T04gZG9jdW1lbnQ7CitBTFRFUiBUQUJMRSBkb2N1bWVudCBBREQgQ09MVU1OIGRub3RlcyB0 ZXh0IERFRkFVTFQgJyc7CistLSBhbGwgZG9jdW1lbnRzIGFyZSByZWFkYWJsZQorQ1JFQVRF IFBPTElDWSBwMSBPTiBkb2N1bWVudCBGT1IgU0VMRUNUIFVTSU5HICh0cnVlKTsKKy0tIG9u ZSBtYXkgaW5zZXJ0IGRvY3VtZW50cyBvbmx5IGF1dGhvcmVkIGJ5IHRoZW0KK0NSRUFURSBQ T0xJQ1kgcDIgT04gZG9jdW1lbnQgRk9SIElOU0VSVCBXSVRIIENIRUNLIChkYXV0aG9yID0g Y3VycmVudF91c2VyKTsKKy0tIG9uZSBtYXkgb25seSB1cGRhdGUgZG9jdW1lbnRzIGluICdu b3ZlbCcgY2F0ZWdvcnkKK0NSRUFURSBQT0xJQ1kgcDMgT04gZG9jdW1lbnQgRk9SIFVQREFU RQorICBVU0lORyAoY2lkID0gKFNFTEVDVCBjaWQgZnJvbSBjYXRlZ29yeSBXSEVSRSBjbmFt ZSA9ICdub3ZlbCcpKQorICBXSVRIIENIRUNLIChkYXV0aG9yID0gY3VycmVudF91c2VyKTsK Ky0tIG9uZSBtYXkgb25seSBkZWxldGUgZG9jdW1lbnRzIGluICdtYW5nYScgY2F0ZWdvcnkK K0NSRUFURSBQT0xJQ1kgcDQgT04gZG9jdW1lbnQgRk9SIERFTEVURQorICBVU0lORyAoY2lk ID0gKFNFTEVDVCBjaWQgZnJvbSBjYXRlZ29yeSBXSEVSRSBjbmFtZSA9ICdtYW5nYScpKTsK K1NFTEVDVCAqIEZST00gZG9jdW1lbnQ7CisgZGlkIHwgY2lkIHwgZGxldmVsIHwgICAgICBk YXV0aG9yICAgICAgfCAgICAgICAgICAgICAgZHRpdGxlICAgICAgICAgICAgICB8IGRub3Rl cyAKKy0tLS0tKy0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorICAgMSB8ICAxMSB8ICAgICAg MSB8IHJlZ3Jlc3NfcmxzX2JvYiAgIHwgbXkgZmlyc3Qgbm92ZWwgICAgICAgICAgICAgICAg ICAgfCAKKyAgIDMgfCAgMjIgfCAgICAgIDIgfCByZWdyZXNzX3Jsc19ib2IgICB8IG15IHNj aWVuY2UgZmljdGlvbiAgICAgICAgICAgICAgIHwgCisgICA0IHwgIDQ0IHwgICAgICAxIHwg cmVncmVzc19ybHNfYm9iICAgfCBteSBmaXJzdCBtYW5nYSAgICAgICAgICAgICAgICAgICB8 IAorICAgNSB8ICA0NCB8ICAgICAgMiB8IHJlZ3Jlc3NfcmxzX2JvYiAgIHwgbXkgc2Vjb25k IG1hbmdhICAgICAgICAgICAgICAgICAgfCAKKyAgIDYgfCAgMjIgfCAgICAgIDEgfCByZWdy ZXNzX3Jsc19jYXJvbCB8IGdyZWF0IHNjaWVuY2UgZmljdGlvbiAgICAgICAgICAgIHwgCisg ICA3IHwgIDMzIHwgICAgICAyIHwgcmVncmVzc19ybHNfY2Fyb2wgfCBncmVhdCB0ZWNobm9s b2d5IGJvb2sgICAgICAgICAgICB8IAorICAgOCB8ICA0NCB8ICAgICAgMSB8IHJlZ3Jlc3Nf cmxzX2Nhcm9sIHwgZ3JlYXQgbWFuZ2EgICAgICAgICAgICAgICAgICAgICAgfCAKKyAgIDkg fCAgMjIgfCAgICAgIDEgfCByZWdyZXNzX3Jsc19kYXZlICB8IGF3ZXNvbWUgc2NpZW5jZSBm aWN0aW9uICAgICAgICAgIHwgCisgIDEwIHwgIDMzIHwgICAgICAyIHwgcmVncmVzc19ybHNf ZGF2ZSAgfCBhd2Vzb21lIHRlY2hub2xvZ3kgYm9vayAgICAgICAgICB8IAorICAxMSB8ICAz MyB8ICAgICAgMSB8IHJlZ3Jlc3NfcmxzX2Nhcm9sIHwgaG9nZSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAKKyAgMzMgfCAgMjIgfCAgICAgIDEgfCByZWdyZXNzX3Jsc19ib2Ig ICB8IG9rYXkgc2NpZW5jZSBmaWN0aW9uICAgICAgICAgICAgIHwgCisgICAyIHwgIDExIHwg ICAgICAyIHwgcmVncmVzc19ybHNfYm9iICAgfCBteSBmaXJzdCBub3ZlbCAgICAgICAgICAg ICAgICAgICB8IAorICA3OCB8ICAzMyB8ICAgICAgMSB8IHJlZ3Jlc3NfcmxzX2JvYiAgIHwg c29tZSB0ZWNobm9sb2d5IG5vdmVsICAgICAgICAgICAgfCAKKyAgNzkgfCAgMzMgfCAgICAg IDEgfCByZWdyZXNzX3Jsc19ib2IgICB8IHRlY2hub2xvZ3kgYm9vaywgY2FuIG9ubHkgaW5z ZXJ0IHwgCisoMTQgcm93cykKKworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNz X3Jsc19ib2I7CistLSBGYWlscywgc2luY2UgdXBkYXRlIHZpb2xhdGVzIFdJVEggQ0hFQ0sg cXVhbCBvbiBkYXV0aG9yCitNRVJHRSBJTlRPIGRvY3VtZW50IGQKK1VTSU5HIChTRUxFQ1Qg MSBhcyBzZGlkKSBzCitPTiBkaWQgPSBzLnNkaWQKK1dIRU4gTUFUQ0hFRCBUSEVOCisJVVBE QVRFIFNFVCBkbm90ZXMgPSBkbm90ZXMgfHwgJyBub3RlcyBhZGRlZCBieSBtZXJnZTEgJywg ZGF1dGhvciA9ICdyZWdyZXNzX3Jsc19hbGljZSc7CitFUlJPUjogIG5ldyByb3cgdmlvbGF0 ZXMgcm93LWxldmVsIHNlY3VyaXR5IHBvbGljeSBmb3IgdGFibGUgImRvY3VtZW50IgorLS0g U2hvdWxkIGJlIE9LIHNpbmNlIFVTSU5HIGFuZCBXSVRIIENIRUNLIHF1YWxzIHBhc3MKK01F UkdFIElOVE8gZG9jdW1lbnQgZAorVVNJTkcgKFNFTEVDVCAxIGFzIHNkaWQpIHMKK09OIGRp ZCA9IHMuc2RpZAorV0hFTiBNQVRDSEVEIFRIRU4KKwlVUERBVEUgU0VUIGRub3RlcyA9IGRu b3RlcyB8fCAnIG5vdGVzIGFkZGVkIGJ5IG1lcmdlMiAnOworLS0gRXZlbiB3aGVuIGRhdXRo b3IgaXMgdXBkYXRlZCBleHBsaWNpdGx5LCBidXQgdG8gdGhlIGV4aXN0aW5nIHZhbHVlCitN RVJHRSBJTlRPIGRvY3VtZW50IGQKK1VTSU5HIChTRUxFQ1QgMSBhcyBzZGlkKSBzCitPTiBk aWQgPSBzLnNkaWQKK1dIRU4gTUFUQ0hFRCBUSEVOCisJVVBEQVRFIFNFVCBkbm90ZXMgPSBk bm90ZXMgfHwgJyBub3RlcyBhZGRlZCBieSBtZXJnZTMgJywgZGF1dGhvciA9ICdyZWdyZXNz X3Jsc19ib2InOworLS0gVGhlcmUgaXMgYSBNQVRDSCBmb3IgZGlkID0gMywgYnV0IFVQREFU RSdzIFVTSU5HIHF1YWwgZG9lcyBub3QgYWxsb3cKKy0tIHVwZGF0aW5nIGFuIGl0ZW0gaW4g Y2F0ZWdvcnkgJ3NjaWVuY2UgZmljdGlvbicKK01FUkdFIElOVE8gZG9jdW1lbnQgZAorVVNJ TkcgKFNFTEVDVCAzIGFzIHNkaWQpIHMKK09OIGRpZCA9IHMuc2RpZAorV0hFTiBNQVRDSEVE IFRIRU4KKwlVUERBVEUgU0VUIGRub3RlcyA9IGRub3RlcyB8fCAnIG5vdGVzIGFkZGVkIGJ5 IG1lcmdlICc7CitFUlJPUjogIHRhcmdldCByb3cgdmlvbGF0ZXMgcm93LWxldmVsIHNlY3Vy aXR5IHBvbGljeSAoVVNJTkcgZXhwcmVzc2lvbikgZm9yIHRhYmxlICJkb2N1bWVudCIKKy0t IFRoZSBzYW1lIHRoaW5nIHdpdGggREVMRVRFIGFjdGlvbiwgYnV0IGZhaWxzIGFnYWluIGJl Y2F1c2Ugbm8gcGVybWlzc2lvbnMKKy0tIHRvIGRlbGV0ZSBpdGVtcyBpbiAnc2NpZW5jZSBm aWN0aW9uJyBjYXRlZ29yeSB0aGF0IGRpZCAzIGJlbG9uZ3MgdG8uCitNRVJHRSBJTlRPIGRv Y3VtZW50IGQKK1VTSU5HIChTRUxFQ1QgMyBhcyBzZGlkKSBzCitPTiBkaWQgPSBzLnNkaWQK K1dIRU4gTUFUQ0hFRCBUSEVOCisJREVMRVRFOworRVJST1I6ICB0YXJnZXQgcm93IHZpb2xh dGVzIHJvdy1sZXZlbCBzZWN1cml0eSBwb2xpY3kgKFVTSU5HIGV4cHJlc3Npb24pIGZvciB0 YWJsZSAiZG9jdW1lbnQiCistLSBEb2N1bWVudCB3aXRoIGRpZCA0IGJlbG9uZ3MgdG8gJ21h bmdhJyBjYXRlZ29yeSB3aGljaCBpcyBhbGxvd2VkIGZvcgorLS0gZGVsZXRpb24uIEJ1dCB0 aGlzIGZhaWxzIGJlY2F1c2UgdGhlIFVQREFURSBhY3Rpb24gaXMgbWF0Y2hlZCBmaXJzdCBh bmQKKy0tIFVQREFURSBwb2xpY3kgZG9lcyBub3QgYWxsb3cgdXBkYXRpb24gaW4gdGhlIGNh dGVnb3J5LgorTUVSR0UgSU5UTyBkb2N1bWVudCBkCitVU0lORyAoU0VMRUNUIDQgYXMgc2Rp ZCkgcworT04gZGlkID0gcy5zZGlkCitXSEVOIE1BVENIRUQgQU5EIGRub3RlcyA9ICcnIFRI RU4KKwlVUERBVEUgU0VUIGRub3RlcyA9IGRub3RlcyB8fCAnIG5vdGVzIGFkZGVkIGJ5IG1l cmdlICcKK1dIRU4gTUFUQ0hFRCBUSEVOCisJREVMRVRFOworRVJST1I6ICB0YXJnZXQgcm93 IHZpb2xhdGVzIHJvdy1sZXZlbCBzZWN1cml0eSBwb2xpY3kgKFVTSU5HIGV4cHJlc3Npb24p IGZvciB0YWJsZSAiZG9jdW1lbnQiCistLSBVUERBVEUgYWN0aW9uIGlzIG5vdCBtYXRjaGVk IHRoaXMgdGltZSBiZWNhdXNlIG9mIHRoZSBXSEVOIHF1YWwuCistLSBERUxFVEUgc3RpbGwg ZmFpbHMgYmVjYXVzZSByb2xlIHJlZ3Jlc3NfcmxzX2JvYiBkb2VzIG5vdCBoYXZlIFNFTEVD VAorLS0gcHJpdmlsZWdlcyBvbiAnbWFuZ2EnIGNhdGVnb3J5IHJvdyBpbiB0aGUgY2F0ZWdv cnkgdGFibGUuCitNRVJHRSBJTlRPIGRvY3VtZW50IGQKK1VTSU5HIChTRUxFQ1QgNCBhcyBz ZGlkKSBzCitPTiBkaWQgPSBzLnNkaWQKK1dIRU4gTUFUQ0hFRCBBTkQgZG5vdGVzIDw+ICcn IFRIRU4KKwlVUERBVEUgU0VUIGRub3RlcyA9IGRub3RlcyB8fCAnIG5vdGVzIGFkZGVkIGJ5 IG1lcmdlICcKK1dIRU4gTUFUQ0hFRCBUSEVOCisJREVMRVRFOworRVJST1I6ICB0YXJnZXQg cm93IHZpb2xhdGVzIHJvdy1sZXZlbCBzZWN1cml0eSBwb2xpY3kgKFVTSU5HIGV4cHJlc3Np b24pIGZvciB0YWJsZSAiZG9jdW1lbnQiCitTRUxFQ1QgKiBGUk9NIGRvY3VtZW50IFdIRVJF IGRpZCA9IDQ7CisgZGlkIHwgY2lkIHwgZGxldmVsIHwgICAgIGRhdXRob3IgICAgIHwgICAg IGR0aXRsZSAgICAgfCBkbm90ZXMgCistLS0tLSstLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgICA0IHwgIDQ0IHwgICAgICAx IHwgcmVncmVzc19ybHNfYm9iIHwgbXkgZmlyc3QgbWFuZ2EgfCAKKygxIHJvdykKKworLS0g U3dpdGNoIHRvIHJlZ3Jlc3NfcmxzX2Nhcm9sIHJvbGUgYW5kIHRyeSB0aGUgREVMRVRFIGFn YWluLiBJdCBzaG91bGQgc3VjY2VlZAorLS0gdGhpcyB0aW1lCitSRVNFVCBTRVNTSU9OIEFV VEhPUklaQVRJT047CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcmxzX2Nh cm9sOworTUVSR0UgSU5UTyBkb2N1bWVudCBkCitVU0lORyAoU0VMRUNUIDQgYXMgc2RpZCkg cworT04gZGlkID0gcy5zZGlkCitXSEVOIE1BVENIRUQgQU5EIGRub3RlcyA8PiAnJyBUSEVO CisJVVBEQVRFIFNFVCBkbm90ZXMgPSBkbm90ZXMgfHwgJyBub3RlcyBhZGRlZCBieSBtZXJn ZSAnCitXSEVOIE1BVENIRUQgVEhFTgorCURFTEVURTsKKy0tIFN3aXRjaCBiYWNrIHRvIHJl Z3Jlc3NfcmxzX2JvYiByb2xlCitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CitTRVQg U0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcmxzX2JvYjsKKy0tIFRyeSBJTlNFUlQg YWN0aW9uLiBUaGlzIGZhaWxzIGJlY2F1c2Ugd2UgYXJlIHRyeWluZyB0byBpbnNlcnQKKy0t IGRhdXRob3IgPSByZWdyZXNzX3Jsc19kYXZlIGFuZCBJTlNFUlQncyBXSVRIIENIRUNLIGRv ZXMgbm90IGFsbG93CistLSB0aGF0CitNRVJHRSBJTlRPIGRvY3VtZW50IGQKK1VTSU5HIChT RUxFQ1QgMTIgYXMgc2RpZCkgcworT04gZGlkID0gcy5zZGlkCitXSEVOIE1BVENIRUQgVEhF TgorCURFTEVURQorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIFZBTFVFUyAoMTIs IDExLCAxLCAncmVncmVzc19ybHNfZGF2ZScsICdhbm90aGVyIG5vdmVsJyk7CitFUlJPUjog IG5ldyByb3cgdmlvbGF0ZXMgcm93LWxldmVsIHNlY3VyaXR5IHBvbGljeSBmb3IgdGFibGUg ImRvY3VtZW50IgorLS0gVGhpcyBzaG91bGQgYmUgZmluZQorTUVSR0UgSU5UTyBkb2N1bWVu dCBkCitVU0lORyAoU0VMRUNUIDEyIGFzIHNkaWQpIHMKK09OIGRpZCA9IHMuc2RpZAorV0hF TiBNQVRDSEVEIFRIRU4KKwlERUxFVEUKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCUlOU0VS VCBWQUxVRVMgKDEyLCAxMSwgMSwgJ3JlZ3Jlc3NfcmxzX2JvYicsICdhbm90aGVyIG5vdmVs Jyk7CistLSBvaworTUVSR0UgSU5UTyBkb2N1bWVudCBkCitVU0lORyAoU0VMRUNUIDEgYXMg c2RpZCkgcworT04gZGlkID0gcy5zZGlkCitXSEVOIE1BVENIRUQgVEhFTgorCVVQREFURSBT RVQgZG5vdGVzID0gZG5vdGVzIHx8ICcgbm90ZXMgYWRkZWQgYnkgbWVyZ2U0ICcKK1dIRU4g Tk9UIE1BVENIRUQgVEhFTgorCUlOU0VSVCBWQUxVRVMgKDEyLCAxMSwgMSwgJ3JlZ3Jlc3Nf cmxzX2JvYicsICdhbm90aGVyIG5vdmVsJyk7CistLSBkcm9wIGFuZCBjcmVhdGUgYSBuZXcg U0VMRUNUIHBvbGljeSB3aGljaCBwcmV2ZW50cyB1cyBmcm9tIHJlYWRpbmcKKy0tIGFueSBk b2N1bWVudCBleGNlcHQgd2l0aCBjYXRlZ29yeSAnbWFnbmEnCitSRVNFVCBTRVNTSU9OIEFV VEhPUklaQVRJT047CitEUk9QIFBPTElDWSBwMSBPTiBkb2N1bWVudDsKK0NSRUFURSBQT0xJ Q1kgcDEgT04gZG9jdW1lbnQgRk9SIFNFTEVDVAorICBVU0lORyAoY2lkID0gKFNFTEVDVCBj aWQgZnJvbSBjYXRlZ29yeSBXSEVSRSBjbmFtZSA9ICdtYW5nYScpKTsKK1NFVCBTRVNTSU9O IEFVVEhPUklaQVRJT04gcmVncmVzc19ybHNfYm9iOworLS0gTUVSR0UgY2FuIG5vIGxvbmdl ciBzZWUgdGhlIG1hdGNoaW5nIHJvdyBhbmQgaGVuY2UgYXR0ZW1wdHMgdGhlCistLSBOT1Qg TUFUQ0hFRCBhY3Rpb24sIHdoaWNoIHJlc3VsdHMgaW4gdW5pcXVlIGtleSB2aW9sYXRpb24K K01FUkdFIElOVE8gZG9jdW1lbnQgZAorVVNJTkcgKFNFTEVDVCAxIGFzIHNkaWQpIHMKK09O IGRpZCA9IHMuc2RpZAorV0hFTiBNQVRDSEVEIFRIRU4KKwlVUERBVEUgU0VUIGRub3RlcyA9 IGRub3RlcyB8fCAnIG5vdGVzIGFkZGVkIGJ5IG1lcmdlNSAnCitXSEVOIE5PVCBNQVRDSEVE IFRIRU4KKwlJTlNFUlQgVkFMVUVTICgxMiwgMTEsIDEsICdyZWdyZXNzX3Jsc19ib2InLCAn YW5vdGhlciBub3ZlbCcpOworRVJST1I6ICBkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVz IHVuaXF1ZSBjb25zdHJhaW50ICJkb2N1bWVudF9wa2V5IgorUkVTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OOworLS0gZHJvcCB0aGUgcmVzdHJpY3RpdmUgU0VMRUNUIHBvbGljeSBzbyB0 aGF0IHdlIGNhbiBsb29rIGF0IHRoZQorLS0gZmluYWwgc3RhdGUgb2YgdGhlIHRhYmxlCitE Uk9QIFBPTElDWSBwMSBPTiBkb2N1bWVudDsKKy0tIEp1c3QgY2hlY2sgZXZlcnl0aGluZyB3 ZW50IHBlciBwbGFuCitTRUxFQ1QgKiBGUk9NIGRvY3VtZW50OworIGRpZCB8IGNpZCB8IGRs ZXZlbCB8ICAgICAgZGF1dGhvciAgICAgIHwgICAgICAgICAgICAgIGR0aXRsZSAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG5vdGVzICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLSstLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAgIDMgfCAgMjIgfCAgICAgIDIgfCByZWdyZXNzX3Jsc19ib2IgICB8 IG15IHNjaWVuY2UgZmljdGlvbiAgICAgICAgICAgICAgIHwgCisgICA1IHwgIDQ0IHwgICAg ICAyIHwgcmVncmVzc19ybHNfYm9iICAgfCBteSBzZWNvbmQgbWFuZ2EgICAgICAgICAgICAg ICAgICB8IAorICAgNiB8ICAyMiB8ICAgICAgMSB8IHJlZ3Jlc3NfcmxzX2Nhcm9sIHwgZ3Jl YXQgc2NpZW5jZSBmaWN0aW9uICAgICAgICAgICAgfCAKKyAgIDcgfCAgMzMgfCAgICAgIDIg fCByZWdyZXNzX3Jsc19jYXJvbCB8IGdyZWF0IHRlY2hub2xvZ3kgYm9vayAgICAgICAgICAg IHwgCisgICA4IHwgIDQ0IHwgICAgICAxIHwgcmVncmVzc19ybHNfY2Fyb2wgfCBncmVhdCBt YW5nYSAgICAgICAgICAgICAgICAgICAgICB8IAorICAgOSB8ICAyMiB8ICAgICAgMSB8IHJl Z3Jlc3NfcmxzX2RhdmUgIHwgYXdlc29tZSBzY2llbmNlIGZpY3Rpb24gICAgICAgICAgfCAK KyAgMTAgfCAgMzMgfCAgICAgIDIgfCByZWdyZXNzX3Jsc19kYXZlICB8IGF3ZXNvbWUgdGVj aG5vbG9neSBib29rICAgICAgICAgIHwgCisgIDExIHwgIDMzIHwgICAgICAxIHwgcmVncmVz c19ybHNfY2Fyb2wgfCBob2dlICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IAorICAz MyB8ICAyMiB8ICAgICAgMSB8IHJlZ3Jlc3NfcmxzX2JvYiAgIHwgb2theSBzY2llbmNlIGZp Y3Rpb24gICAgICAgICAgICAgfCAKKyAgIDIgfCAgMTEgfCAgICAgIDIgfCByZWdyZXNzX3Js c19ib2IgICB8IG15IGZpcnN0IG5vdmVsICAgICAgICAgICAgICAgICAgIHwgCisgIDc4IHwg IDMzIHwgICAgICAxIHwgcmVncmVzc19ybHNfYm9iICAgfCBzb21lIHRlY2hub2xvZ3kgbm92 ZWwgICAgICAgICAgICB8IAorICA3OSB8ICAzMyB8ICAgICAgMSB8IHJlZ3Jlc3NfcmxzX2Jv YiAgIHwgdGVjaG5vbG9neSBib29rLCBjYW4gb25seSBpbnNlcnQgfCAKKyAgMTIgfCAgMTEg fCAgICAgIDEgfCByZWdyZXNzX3Jsc19ib2IgICB8IGFub3RoZXIgbm92ZWwgICAgICAgICAg ICAgICAgICAgIHwgCisgICAxIHwgIDExIHwgICAgICAxIHwgcmVncmVzc19ybHNfYm9iICAg fCBteSBmaXJzdCBub3ZlbCAgICAgICAgICAgICAgICAgICB8ICBub3RlcyBhZGRlZCBieSBt ZXJnZTIgIG5vdGVzIGFkZGVkIGJ5IG1lcmdlMyAgbm90ZXMgYWRkZWQgYnkgbWVyZ2U0IAor KDE0IHJvd3MpCisKIC0tCiAtLSBST0xFL0dST1VQCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3J1bGVzLm91dAppbmRleCBhYzQ2ODU2OGExLi40ZTQ5NWE0NmE0IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMzQ2Myw2ICszNDYzLDM4IEBAIENSRUFU RSBSVUxFIHJ1bGVzX3BhcnRlZF90YWJsZV9pbnNlcnQgQVMgT04gSU5TRVJUIHRvIHJ1bGVz X3BhcnRlZF90YWJsZQogQUxURVIgUlVMRSBydWxlc19wYXJ0ZWRfdGFibGVfaW5zZXJ0IE9O IHJ1bGVzX3BhcnRlZF90YWJsZSBSRU5BTUUgVE8gcnVsZXNfcGFydGVkX3RhYmxlX2luc2Vy dF9yZWRpcmVjdDsKIERST1AgVEFCTEUgcnVsZXNfcGFydGVkX3RhYmxlOwogLS0KKy0tIHRl c3QgTUVSR0UKKy0tCitDUkVBVEUgVEFCTEUgcnVsZV9tZXJnZTEgKGEgaW50LCBiIHRleHQp OworQ1JFQVRFIFRBQkxFIHJ1bGVfbWVyZ2UyIChhIGludCwgYiB0ZXh0KTsKK0NSRUFURSBS VUxFIHJ1bGUxIEFTIE9OIElOU0VSVCBUTyBydWxlX21lcmdlMQorCURPIElOU1RFQUQgSU5T RVJUIElOVE8gcnVsZV9tZXJnZTIgVkFMVUVTIChORVcuKik7CitDUkVBVEUgUlVMRSBydWxl MiBBUyBPTiBVUERBVEUgVE8gcnVsZV9tZXJnZTEKKwlETyBJTlNURUFEIFVQREFURSBydWxl X21lcmdlMiBTRVQgYSA9IE5FVy5hLCBiID0gTkVXLmIKKwlXSEVSRSBhID0gT0xELmE7CitD UkVBVEUgUlVMRSBydWxlMyBBUyBPTiBERUxFVEUgVE8gcnVsZV9tZXJnZTEKKwlETyBJTlNU RUFEIERFTEVURSBGUk9NIHJ1bGVfbWVyZ2UyIFdIRVJFIGEgPSBPTEQuYTsKKy0tIE1FUkdF IG5vdCBzdXBwb3J0ZWQgZm9yIHRhYmxlIHdpdGggcnVsZXMKK01FUkdFIElOVE8gcnVsZV9t ZXJnZTEgdCBVU0lORyAoU0VMRUNUIDEgQVMgYSkgcworCU9OIHQuYSA9IHMuYQorCVdIRU4g TUFUQ0hFRCBBTkQgdC5hIDwgMiBUSEVOCisJCVVQREFURSBTRVQgYiA9IGIgfHwgJyB1cGRh dGVkIGJ5IG1lcmdlJworCVdIRU4gTUFUQ0hFRCBBTkQgdC5hID4gMiBUSEVOCisJCURFTEVU RQorCVdIRU4gTk9UIE1BVENIRUQgVEhFTgorCQlJTlNFUlQgVkFMVUVTIChzLmEsICcnKTsK K0VSUk9SOiAgY2Fubm90IGV4ZWN1dGUgTUVSR0Ugb24gcmVsYXRpb24gInJ1bGVfbWVyZ2Ux IgorREVUQUlMOiAgTUVSR0UgaXMgbm90IHN1cHBvcnRlZCBmb3IgcmVsYXRpb25zIHdpdGgg cnVsZXMuCistLSBzaG91bGQgYmUgb2sgd2l0aCB0aGUgb3RoZXIgdGFibGUgdGhvdWdoCitN RVJHRSBJTlRPIHJ1bGVfbWVyZ2UyIHQgVVNJTkcgKFNFTEVDVCAxIEFTIGEpIHMKKwlPTiB0 LmEgPSBzLmEKKwlXSEVOIE1BVENIRUQgQU5EIHQuYSA8IDIgVEhFTgorCQlVUERBVEUgU0VU IGIgPSBiIHx8ICcgdXBkYXRlZCBieSBtZXJnZScKKwlXSEVOIE1BVENIRUQgQU5EIHQuYSA+ IDIgVEhFTgorCQlERUxFVEUKKwlXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwkJSU5TRVJUIFZB TFVFUyAocy5hLCAnJyk7CistLQogLS0gVGVzdCBlbmFibGluZy9kaXNhYmxpbmcKIC0tCiBD UkVBVEUgVEFCTEUgcnVsZXRlc3QxIChhIGludCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3RyaWdnZXJzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvdHJpZ2dlcnMub3V0CmluZGV4IGQzZTAyY2E2M2IuLmNkODEyMzM2ZjIgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHJpZ2dlcnMub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHJpZ2dlcnMub3V0CkBAIC0zMjg0LDYgKzMyODQsNTQg QEAgZGVsZXRlIGZyb20gc2VsZl9yZWYgd2hlcmUgYSA9IDE7CiBOT1RJQ0U6ICB0cmlnZ2Vy X2Z1bmMoc2VsZl9yZWYpIGNhbGxlZDogYWN0aW9uID0gREVMRVRFLCB3aGVuID0gQkVGT1JF LCBsZXZlbCA9IFNUQVRFTUVOVAogTk9USUNFOiAgdHJpZ2dlciA9IHNlbGZfcmVmX3NfdHJp Zywgb2xkIHRhYmxlID0gKDEsKSwgKDIsMSksICgzLDIpLCAoNCwzKQogZHJvcCB0YWJsZSBz ZWxmX3JlZjsKKy0tCistLSB0ZXN0IHRyYW5zaXRpb24gdGFibGVzIHdpdGggTUVSR0UKKy0t CitjcmVhdGUgdGFibGUgbWVyZ2VfdGFyZ2V0X3RhYmxlIChhIGludCBwcmltYXJ5IGtleSwg YiB0ZXh0KTsKK2NyZWF0ZSB0cmlnZ2VyIG1lcmdlX3RhcmdldF90YWJsZV9pbnNlcnRfdHJp ZworICBhZnRlciBpbnNlcnQgb24gbWVyZ2VfdGFyZ2V0X3RhYmxlIHJlZmVyZW5jaW5nIG5l dyB0YWJsZSBhcyBuZXdfdGFibGUKKyAgZm9yIGVhY2ggc3RhdGVtZW50IGV4ZWN1dGUgcHJv Y2VkdXJlIGR1bXBfaW5zZXJ0KCk7CitjcmVhdGUgdHJpZ2dlciBtZXJnZV90YXJnZXRfdGFi bGVfdXBkYXRlX3RyaWcKKyAgYWZ0ZXIgdXBkYXRlIG9uIG1lcmdlX3RhcmdldF90YWJsZSBy ZWZlcmVuY2luZyBvbGQgdGFibGUgYXMgb2xkX3RhYmxlIG5ldyB0YWJsZSBhcyBuZXdfdGFi bGUKKyAgZm9yIGVhY2ggc3RhdGVtZW50IGV4ZWN1dGUgcHJvY2VkdXJlIGR1bXBfdXBkYXRl KCk7CitjcmVhdGUgdHJpZ2dlciBtZXJnZV90YXJnZXRfdGFibGVfZGVsZXRlX3RyaWcKKyAg YWZ0ZXIgZGVsZXRlIG9uIG1lcmdlX3RhcmdldF90YWJsZSByZWZlcmVuY2luZyBvbGQgdGFi bGUgYXMgb2xkX3RhYmxlCisgIGZvciBlYWNoIHN0YXRlbWVudCBleGVjdXRlIHByb2NlZHVy ZSBkdW1wX2RlbGV0ZSgpOworY3JlYXRlIHRhYmxlIG1lcmdlX3NvdXJjZV90YWJsZSAoYSBp bnQsIGIgdGV4dCk7CitpbnNlcnQgaW50byBtZXJnZV9zb3VyY2VfdGFibGUKKyAgdmFsdWVz ICgxLCAnaW5pdGlhbDEnKSwgKDIsICdpbml0aWFsMicpLAorCQkgKDMsICdpbml0aWFsMycp LCAoNCwgJ2luaXRpYWw0Jyk7CittZXJnZSBpbnRvIG1lcmdlX3RhcmdldF90YWJsZSB0Cit1 c2luZyBtZXJnZV9zb3VyY2VfdGFibGUgcworb24gdC5hID0gcy5hCit3aGVuIG5vdCBtYXRj aGVkIHRoZW4KKyAgaW5zZXJ0IHZhbHVlcyAoYSwgYik7CitOT1RJQ0U6ICB0cmlnZ2VyID0g bWVyZ2VfdGFyZ2V0X3RhYmxlX2luc2VydF90cmlnLCBuZXcgdGFibGUgPSAoMSxpbml0aWFs MSksICgyLGluaXRpYWwyKSwgKDMsaW5pdGlhbDMpLCAoNCxpbml0aWFsNCkKK21lcmdlIGlu dG8gbWVyZ2VfdGFyZ2V0X3RhYmxlIHQKK3VzaW5nIG1lcmdlX3NvdXJjZV90YWJsZSBzCitv biB0LmEgPSBzLmEKK3doZW4gbWF0Y2hlZCBhbmQgcy5hIDw9IDIgdGhlbgorCXVwZGF0ZSBz ZXQgYiA9IHQuYiB8fCAnIHVwZGF0ZWQgYnkgbWVyZ2UnCit3aGVuIG1hdGNoZWQgYW5kIHMu YSA+IDIgdGhlbgorCWRlbGV0ZQord2hlbiBub3QgbWF0Y2hlZCB0aGVuCisgIGluc2VydCB2 YWx1ZXMgKGEsIGIpOworTk9USUNFOiAgdHJpZ2dlciA9IG1lcmdlX3RhcmdldF90YWJsZV9k ZWxldGVfdHJpZywgb2xkIHRhYmxlID0gKDMsaW5pdGlhbDMpLCAoNCxpbml0aWFsNCkKK05P VElDRTogIHRyaWdnZXIgPSBtZXJnZV90YXJnZXRfdGFibGVfdXBkYXRlX3RyaWcsIG9sZCB0 YWJsZSA9ICgxLGluaXRpYWwxKSwgKDIsaW5pdGlhbDIpLCBuZXcgdGFibGUgPSAoMSwiaW5p dGlhbDEgdXBkYXRlZCBieSBtZXJnZSIpLCAoMiwiaW5pdGlhbDIgdXBkYXRlZCBieSBtZXJn ZSIpCitOT1RJQ0U6ICB0cmlnZ2VyID0gbWVyZ2VfdGFyZ2V0X3RhYmxlX2luc2VydF90cmln LCBuZXcgdGFibGUgPSA8TlVMTD4KK21lcmdlIGludG8gbWVyZ2VfdGFyZ2V0X3RhYmxlIHQK K3VzaW5nIG1lcmdlX3NvdXJjZV90YWJsZSBzCitvbiB0LmEgPSBzLmEKK3doZW4gbWF0Y2hl ZCBhbmQgcy5hIDw9IDIgdGhlbgorCXVwZGF0ZSBzZXQgYiA9IHQuYiB8fCAnIHVwZGF0ZWQg YWdhaW4gYnkgbWVyZ2UnCit3aGVuIG1hdGNoZWQgYW5kIHMuYSA+IDIgdGhlbgorCWRlbGV0 ZQord2hlbiBub3QgbWF0Y2hlZCB0aGVuCisgIGluc2VydCB2YWx1ZXMgKGEsIGIpOworTk9U SUNFOiAgdHJpZ2dlciA9IG1lcmdlX3RhcmdldF90YWJsZV9kZWxldGVfdHJpZywgb2xkIHRh YmxlID0gPE5VTEw+CitOT1RJQ0U6ICB0cmlnZ2VyID0gbWVyZ2VfdGFyZ2V0X3RhYmxlX3Vw ZGF0ZV90cmlnLCBvbGQgdGFibGUgPSAoMSwiaW5pdGlhbDEgdXBkYXRlZCBieSBtZXJnZSIp LCAoMiwiaW5pdGlhbDIgdXBkYXRlZCBieSBtZXJnZSIpLCBuZXcgdGFibGUgPSAoMSwiaW5p dGlhbDEgdXBkYXRlZCBieSBtZXJnZSB1cGRhdGVkIGFnYWluIGJ5IG1lcmdlIiksICgyLCJp bml0aWFsMiB1cGRhdGVkIGJ5IG1lcmdlIHVwZGF0ZWQgYWdhaW4gYnkgbWVyZ2UiKQorTk9U SUNFOiAgdHJpZ2dlciA9IG1lcmdlX3RhcmdldF90YWJsZV9pbnNlcnRfdHJpZywgbmV3IHRh YmxlID0gKDMsaW5pdGlhbDMpLCAoNCxpbml0aWFsNCkKK2Ryb3AgdGFibGUgbWVyZ2Vfc291 cmNlX3RhYmxlLCBtZXJnZV90YXJnZXRfdGFibGU7CiAtLSBjbGVhbnVwCiBkcm9wIGZ1bmN0 aW9uIGR1bXBfaW5zZXJ0KCk7CiBkcm9wIGZ1bmN0aW9uIGR1bXBfdXBkYXRlKCk7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGgub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC93aXRoLm91dAppbmRleCBmZjc2YWQ0ZDZlLi43YzZkZTdjYzA3 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGgub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aC5vdXQKQEAgLTI3NjcsNiArMjc2Nywx MzkgQEAgUkVUVVJOSU5HIGssIHY7CiAoMCByb3dzKQogCiBEUk9QIFRBQkxFIHdpdGh6Owor LS0gV0lUSCByZWZlcmVuY2VkIGJ5IE1FUkdFIHN0YXRlbWVudAorQ1JFQVRFIFRBQkxFIG0g QVMgU0VMRUNUIGkgQVMgaywgKGkgfHwgJyB2Jyk6OnRleHQgdiBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAxNiwgMykgaTsKK0FMVEVSIFRBQkxFIG0gQUREIFVOSVFVRSAoayk7CitXSVRI IFJFQ1VSU0lWRSBjdGVfYmFzaWMgQVMgKFNFTEVDVCAxIGEsICdjdGVfYmFzaWMgdmFsJyBi KQorTUVSR0UgSU5UTyBtIFVTSU5HIChzZWxlY3QgMCBrLCAnbWVyZ2Ugc291cmNlIFN1YlBs YW4nIHYpIG8gT04gbS5rPW8uaworV0hFTiBNQVRDSEVEIFRIRU4gVVBEQVRFIFNFVCB2ID0g KFNFTEVDVCBiIHx8ICcgbWVyZ2UgdXBkYXRlJyBGUk9NIGN0ZV9iYXNpYyBXSEVSRSBjdGVf YmFzaWMuYSA9IG0uayBMSU1JVCAxKQorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOIElOU0VSVCBW QUxVRVMoby5rLCBvLnYpOworRVJST1I6ICBXSVRIIFJFQ1VSU0lWRSBpcyBub3Qgc3VwcG9y dGVkIGZvciBNRVJHRSBzdGF0ZW1lbnQKKy0tIEJhc2ljOgorV0lUSCBjdGVfYmFzaWMgQVMg TUFURVJJQUxJWkVEIChTRUxFQ1QgMSBhLCAnY3RlX2Jhc2ljIHZhbCcgYikKK01FUkdFIElO VE8gbSBVU0lORyAoc2VsZWN0IDAgaywgJ21lcmdlIHNvdXJjZSBTdWJQbGFuJyB2IG9mZnNl dCAwKSBvIE9OIG0uaz1vLmsKK1dIRU4gTUFUQ0hFRCBUSEVOIFVQREFURSBTRVQgdiA9IChT RUxFQ1QgYiB8fCAnIG1lcmdlIHVwZGF0ZScgRlJPTSBjdGVfYmFzaWMgV0hFUkUgY3RlX2Jh c2ljLmEgPSBtLmsgTElNSVQgMSkKK1dIRU4gTk9UIE1BVENIRUQgVEhFTiBJTlNFUlQgVkFM VUVTKG8uaywgby52KTsKKy0tIEV4YW1pbmUKK1NFTEVDVCAqIEZST00gbSB3aGVyZSBrID0g MDsKKyBrIHwgICAgICAgICAgdiAgICAgICAgICAgCistLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIDAgfCBtZXJnZSBzb3VyY2UgU3ViUGxhbgorKDEgcm93KQorCistLSBTZWUgRVhQ TEFJTiBvdXRwdXQgZm9yIHNhbWUgcXVlcnk6CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpCitXSVRIIGN0ZV9iYXNpYyBBUyBNQVRFUklBTElaRUQgKFNFTEVDVCAxIGEsICdjdGVf YmFzaWMgdmFsJyBiKQorTUVSR0UgSU5UTyBtIFVTSU5HIChzZWxlY3QgMCBrLCAnbWVyZ2Ug c291cmNlIFN1YlBsYW4nIHYgb2Zmc2V0IDApIG8gT04gbS5rPW8uaworV0hFTiBNQVRDSEVE IFRIRU4gVVBEQVRFIFNFVCB2ID0gKFNFTEVDVCBiIHx8ICcgbWVyZ2UgdXBkYXRlJyBGUk9N IGN0ZV9iYXNpYyBXSEVSRSBjdGVfYmFzaWMuYSA9IG0uayBMSU1JVCAxKQorV0hFTiBOT1Qg TUFUQ0hFRCBUSEVOIElOU0VSVCBWQUxVRVMoby5rLCBvLnYpOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIE1lcmdlIG9uIHB1YmxpYy5tCisgICBDVEUgY3RlX2Jhc2ljCisgICAgIC0+ ICBSZXN1bHQKKyAgICAgICAgICAgT3V0cHV0OiAxLCAnY3RlX2Jhc2ljIHZhbCc6OnRleHQK KyAgIC0+ICBIYXNoIFJpZ2h0IEpvaW4KKyAgICAgICAgIE91dHB1dDogKDApLCAoJ21lcmdl IHNvdXJjZSBTdWJQbGFuJzo6dGV4dCksIG0uY3RpZAorICAgICAgICAgSGFzaCBDb25kOiAo bS5rID0gKDApKQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5tCisgICAgICAg ICAgICAgICBPdXRwdXQ6IG0uY3RpZCwgbS5rCisgICAgICAgICAtPiAgSGFzaAorICAgICAg ICAgICAgICAgT3V0cHV0OiAoMCksICgnbWVyZ2Ugc291cmNlIFN1YlBsYW4nOjp0ZXh0KQor ICAgICAgICAgICAgICAgLT4gIFJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiAwLCAnbWVyZ2Ugc291cmNlIFN1YlBsYW4nOjp0ZXh0CisgICBTdWJQbGFuIDIKKyAgICAg LT4gIExpbWl0CisgICAgICAgICAgIE91dHB1dDogKChjdGVfYmFzaWMuYiB8fCAnIG1lcmdl IHVwZGF0ZSc6OnRleHQpKQorICAgICAgICAgICAtPiAgQ1RFIFNjYW4gb24gY3RlX2Jhc2lj CisgICAgICAgICAgICAgICAgIE91dHB1dDogKGN0ZV9iYXNpYy5iIHx8ICcgbWVyZ2UgdXBk YXRlJzo6dGV4dCkKKyAgICAgICAgICAgICAgICAgRmlsdGVyOiAoY3RlX2Jhc2ljLmEgPSBt LmspCisoMTkgcm93cykKKworLS0gSW5pdFBsYW4KK1dJVEggY3RlX2luaXQgQVMgTUFURVJJ QUxJWkVEIChTRUxFQ1QgMSBhLCAnY3RlX2luaXQgdmFsJyBiKQorTUVSR0UgSU5UTyBtIFVT SU5HIChzZWxlY3QgMSBrLCAnbWVyZ2Ugc291cmNlIEluaXRQbGFuJyB2IG9mZnNldCAwKSBv IE9OIG0uaz1vLmsKK1dIRU4gTUFUQ0hFRCBUSEVOIFVQREFURSBTRVQgdiA9IChTRUxFQ1Qg YiB8fCAnIG1lcmdlIHVwZGF0ZScgRlJPTSBjdGVfaW5pdCBXSEVSRSBhID0gMSBMSU1JVCAx KQorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOIElOU0VSVCBWQUxVRVMoby5rLCBvLnYpOworLS0g RXhhbWluZQorU0VMRUNUICogRlJPTSBtIHdoZXJlIGsgPSAxOworIGsgfCAgICAgICAgICAg ICB2ICAgICAgICAgICAgIAorLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEg fCBjdGVfaW5pdCB2YWwgbWVyZ2UgdXBkYXRlCisoMSByb3cpCisKKy0tIFNlZSBFWFBMQUlO IG91dHB1dCBmb3Igc2FtZSBxdWVyeToKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikK K1dJVEggY3RlX2luaXQgQVMgTUFURVJJQUxJWkVEIChTRUxFQ1QgMSBhLCAnY3RlX2luaXQg dmFsJyBiKQorTUVSR0UgSU5UTyBtIFVTSU5HIChzZWxlY3QgMSBrLCAnbWVyZ2Ugc291cmNl IEluaXRQbGFuJyB2IG9mZnNldCAwKSBvIE9OIG0uaz1vLmsKK1dIRU4gTUFUQ0hFRCBUSEVO IFVQREFURSBTRVQgdiA9IChTRUxFQ1QgYiB8fCAnIG1lcmdlIHVwZGF0ZScgRlJPTSBjdGVf aW5pdCBXSEVSRSBhID0gMSBMSU1JVCAxKQorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOIElOU0VS VCBWQUxVRVMoby5rLCBvLnYpOworICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBNZXJnZSBvbiBw dWJsaWMubQorICAgQ1RFIGN0ZV9pbml0CisgICAgIC0+ICBSZXN1bHQKKyAgICAgICAgICAg T3V0cHV0OiAxLCAnY3RlX2luaXQgdmFsJzo6dGV4dAorICAgSW5pdFBsYW4gMiAocmV0dXJu cyAkMSkKKyAgICAgLT4gIExpbWl0CisgICAgICAgICAgIE91dHB1dDogKChjdGVfaW5pdC5i IHx8ICcgbWVyZ2UgdXBkYXRlJzo6dGV4dCkpCisgICAgICAgICAgIC0+ICBDVEUgU2NhbiBv biBjdGVfaW5pdAorICAgICAgICAgICAgICAgICBPdXRwdXQ6IChjdGVfaW5pdC5iIHx8ICcg bWVyZ2UgdXBkYXRlJzo6dGV4dCkKKyAgICAgICAgICAgICAgICAgRmlsdGVyOiAoY3RlX2lu aXQuYSA9IDEpCisgICAtPiAgSGFzaCBSaWdodCBKb2luCisgICAgICAgICBPdXRwdXQ6ICgx KSwgKCdtZXJnZSBzb3VyY2UgSW5pdFBsYW4nOjp0ZXh0KSwgbS5jdGlkCisgICAgICAgICBI YXNoIENvbmQ6IChtLmsgPSAoMSkpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGlj Lm0KKyAgICAgICAgICAgICAgIE91dHB1dDogbS5jdGlkLCBtLmsKKyAgICAgICAgIC0+ICBI YXNoCisgICAgICAgICAgICAgICBPdXRwdXQ6ICgxKSwgKCdtZXJnZSBzb3VyY2UgSW5pdFBs YW4nOjp0ZXh0KQorICAgICAgICAgICAgICAgLT4gIFJlc3VsdAorICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiAxLCAnbWVyZ2Ugc291cmNlIEluaXRQbGFuJzo6dGV4dAorKDE5IHJv d3MpCisKKy0tIE1FUkdFIHNvdXJjZSBjb21lcyBmcm9tIENURToKK1dJVEggbWVyZ2Vfc291 cmNlX2N0ZSBBUyBNQVRFUklBTElaRUQgKFNFTEVDVCAxNSBhLCAnbWVyZ2Vfc291cmNlX2N0 ZSB2YWwnIGIpCitNRVJHRSBJTlRPIG0gVVNJTkcgKHNlbGVjdCAqIGZyb20gbWVyZ2Vfc291 cmNlX2N0ZSkgbyBPTiBtLms9by5hCitXSEVOIE1BVENIRUQgVEhFTiBVUERBVEUgU0VUIHYg PSAoU0VMRUNUIGIgfHwgbWVyZ2Vfc291cmNlX2N0ZS4qOjp0ZXh0IHx8ICcgbWVyZ2UgdXBk YXRlJyBGUk9NIG1lcmdlX3NvdXJjZV9jdGUgV0hFUkUgYSA9IDE1KQorV0hFTiBOT1QgTUFU Q0hFRCBUSEVOIElOU0VSVCBWQUxVRVMoby5hLCBvLmIgfHwgKFNFTEVDVCBtZXJnZV9zb3Vy Y2VfY3RlLio6OnRleHQgfHwgJyBtZXJnZSBpbnNlcnQnIEZST00gbWVyZ2Vfc291cmNlX2N0 ZSkpOworLS0gRXhhbWluZQorU0VMRUNUICogRlJPTSBtIHdoZXJlIGsgPSAxNTsKKyBrICB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxNSB8IG1lcmdlX3NvdXJjZV9jdGUgdmFsKDE1 LCJtZXJnZV9zb3VyY2VfY3RlIHZhbCIpIG1lcmdlIGluc2VydAorKDEgcm93KQorCistLSBT ZWUgRVhQTEFJTiBvdXRwdXQgZm9yIHNhbWUgcXVlcnk6CitFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpCitXSVRIIG1lcmdlX3NvdXJjZV9jdGUgQVMgTUFURVJJQUxJWkVEIChTRUxF Q1QgMTUgYSwgJ21lcmdlX3NvdXJjZV9jdGUgdmFsJyBiKQorTUVSR0UgSU5UTyBtIFVTSU5H IChzZWxlY3QgKiBmcm9tIG1lcmdlX3NvdXJjZV9jdGUpIG8gT04gbS5rPW8uYQorV0hFTiBN QVRDSEVEIFRIRU4gVVBEQVRFIFNFVCB2ID0gKFNFTEVDVCBiIHx8IG1lcmdlX3NvdXJjZV9j dGUuKjo6dGV4dCB8fCAnIG1lcmdlIHVwZGF0ZScgRlJPTSBtZXJnZV9zb3VyY2VfY3RlIFdI RVJFIGEgPSAxNSkKK1dIRU4gTk9UIE1BVENIRUQgVEhFTiBJTlNFUlQgVkFMVUVTKG8uYSwg by5iIHx8IChTRUxFQ1QgbWVyZ2Vfc291cmNlX2N0ZS4qOjp0ZXh0IHx8ICcgbWVyZ2UgaW5z ZXJ0JyBGUk9NIG1lcmdlX3NvdXJjZV9jdGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIE1lcmdlIG9uIHB1YmxpYy5tCisgICBDVEUgbWVyZ2Vf c291cmNlX2N0ZQorICAgICAtPiAgUmVzdWx0CisgICAgICAgICAgIE91dHB1dDogMTUsICdt ZXJnZV9zb3VyY2VfY3RlIHZhbCc6OnRleHQKKyAgIEluaXRQbGFuIDIgKHJldHVybnMgJDEp CisgICAgIC0+ICBDVEUgU2NhbiBvbiBtZXJnZV9zb3VyY2VfY3RlIG1lcmdlX3NvdXJjZV9j dGVfMQorICAgICAgICAgICBPdXRwdXQ6ICgobWVyZ2Vfc291cmNlX2N0ZV8xLmIgfHwgKG1l cmdlX3NvdXJjZV9jdGVfMS4qKTo6dGV4dCkgfHwgJyBtZXJnZSB1cGRhdGUnOjp0ZXh0KQor ICAgICAgICAgICBGaWx0ZXI6IChtZXJnZV9zb3VyY2VfY3RlXzEuYSA9IDE1KQorICAgSW5p dFBsYW4gMyAocmV0dXJucyAkMikKKyAgICAgLT4gIENURSBTY2FuIG9uIG1lcmdlX3NvdXJj ZV9jdGUgbWVyZ2Vfc291cmNlX2N0ZV8yCisgICAgICAgICAgIE91dHB1dDogKChtZXJnZV9z b3VyY2VfY3RlXzIuKik6OnRleHQgfHwgJyBtZXJnZSBpbnNlcnQnOjp0ZXh0KQorICAgLT4g IEhhc2ggUmlnaHQgSm9pbgorICAgICAgICAgT3V0cHV0OiBtZXJnZV9zb3VyY2VfY3RlLmEs IG1lcmdlX3NvdXJjZV9jdGUuYiwgbS5jdGlkCisgICAgICAgICBIYXNoIENvbmQ6IChtLmsg PSBtZXJnZV9zb3VyY2VfY3RlLmEpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGlj Lm0KKyAgICAgICAgICAgICAgIE91dHB1dDogbS5jdGlkLCBtLmsKKyAgICAgICAgIC0+ICBI YXNoCisgICAgICAgICAgICAgICBPdXRwdXQ6IG1lcmdlX3NvdXJjZV9jdGUuYSwgbWVyZ2Vf c291cmNlX2N0ZS5iCisgICAgICAgICAgICAgICAtPiAgQ1RFIFNjYW4gb24gbWVyZ2Vfc291 cmNlX2N0ZQorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiBtZXJnZV9zb3VyY2VfY3Rl LmEsIG1lcmdlX3NvdXJjZV9jdGUuYgorKDIwIHJvd3MpCisKK0RST1AgVEFCTEUgbTsKIC0t IGNoZWNrIHRoYXQgcnVuIHRvIGNvbXBsZXRpb24gaGFwcGVucyBpbiBwcm9wZXIgb3JkZXJp bmcKIFRSVU5DQVRFIFRBQkxFIHk7CiBJTlNFUlQgSU5UTyB5IFNFTEVDVCBnZW5lcmF0ZV9z ZXJpZXMoMSwgMyk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCA2ZDhm NTI0YWU5Li4wMTNjN2RhYWI1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUK QEAgLTg2LDcgKzg2LDcgQEAgdGVzdDogYnJpbl9ibG9vbSBicmluX211bHRpCiAjIHBzcWwg ZGVwZW5kcyBvbiBjcmVhdGVfYW0KICMgYW11dGlscyBkZXBlbmRzIG9uIGdlb21ldHJ5LCBj cmVhdGVfaW5kZXhfc3BnaXN0LCBoYXNoX2luZGV4LCBicmluCiAjIC0tLS0tLS0tLS0KLXRl c3Q6IGNyZWF0ZV90YWJsZV9saWtlIGFsdGVyX2dlbmVyaWMgYWx0ZXJfb3BlcmF0b3IgbWlz YyBhc3luYyBkYnNpemUgbWlzY19mdW5jdGlvbnMgc3lzdmlld3MgdHNyZiB0aWQgdGlkc2Nh biB0aWRyYW5nZXNjYW4gY29sbGF0ZS5pY3UudXRmOCBpbmNyZW1lbnRhbF9zb3J0IGNyZWF0 ZV9yb2xlCit0ZXN0OiBjcmVhdGVfdGFibGVfbGlrZSBhbHRlcl9nZW5lcmljIGFsdGVyX29w ZXJhdG9yIG1pc2MgYXN5bmMgZGJzaXplIG1lcmdlIG1pc2NfZnVuY3Rpb25zIHN5c3ZpZXdz IHRzcmYgdGlkIHRpZHNjYW4gdGlkcmFuZ2VzY2FuIGNvbGxhdGUuaWN1LnV0ZjggaW5jcmVt ZW50YWxfc29ydCBjcmVhdGVfcm9sZQogCiAjIGNvbGxhdGUuKi51dGY4IHRlc3RzIGNhbm5v dCBiZSBydW4gaW4gcGFyYWxsZWwgd2l0aCBlYWNoIG90aGVyCiB0ZXN0OiBydWxlcyBwc3Fs IHBzcWxfY3Jvc3N0YWIgYW11dGlscyBzdGF0c19leHQgY29sbGF0ZS5saW51eC51dGY4CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pZGVudGl0eS5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9pZGVudGl0eS5zcWwKaW5kZXggNTI4MDBmMjY1Yy4uOWI4ZGIyZTRh MyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaWRlbnRpdHkuc3FsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2lkZW50aXR5LnNxbApAQCAtMzU1LDMgKzM1NSw0OSBA QCBDUkVBVEUgVEFCTEUgaXRlc3QxNSAoaWQgaW50ZWdlciBHRU5FUkFURUQgQUxXQVlTIEFT IElERU5USVRZIE5PVCBOVUxMKTsKIERST1AgVEFCTEUgaXRlc3QxNTsKIENSRUFURSBUQUJM RSBpdGVzdDE1IChpZCBpbnRlZ2VyIE5PVCBOVUxMIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURF TlRJVFkpOwogRFJPUCBUQUJMRSBpdGVzdDE1OworCistLSBNRVJHRSB0ZXN0cworQ1JFQVRF IFRBQkxFIGl0ZXN0MTUgKGEgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFksIGIg dGV4dCk7CitDUkVBVEUgVEFCTEUgaXRlc3QxNiAoYSBpbnQgR0VORVJBVEVEIEJZIERFRkFV TFQgQVMgSURFTlRJVFksIGIgdGV4dCk7CisKK01FUkdFIElOVE8gaXRlc3QxNSB0CitVU0lO RyAoU0VMRUNUIDEwIEFTIHNfYSwgJ2luc2VydGVkIGJ5IG1lcmdlJyBBUyBzX2IpIHMKK09O IHQuYSA9IHMuc19hCitXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgKGEsIGIpIFZB TFVFUyAocy5zX2EsIHMuc19iKTsKKworLS0gVXNlZCB0byBmYWlsLCBidXQgbm93IGl0IHdv cmtzIGFuZCBpZ25vcmVzIHRoZSB1c2VyIHN1cHBsaWVkIHZhbHVlCitNRVJHRSBJTlRPIGl0 ZXN0MTUgdAorVVNJTkcgKFNFTEVDVCAyMCBBUyBzX2EsICdpbnNlcnRlZCBieSBtZXJnZScg QVMgc19iKSBzCitPTiB0LmEgPSBzLnNfYQorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5T RVJUIChhLCBiKSBPVkVSUklESU5HIFVTRVIgVkFMVUUgVkFMVUVTIChzLnNfYSwgcy5zX2Ip OworCitNRVJHRSBJTlRPIGl0ZXN0MTUgdAorVVNJTkcgKFNFTEVDVCAzMCBBUyBzX2EsICdp bnNlcnRlZCBieSBtZXJnZScgQVMgc19iKSBzCitPTiB0LmEgPSBzLnNfYQorV0hFTiBOT1Qg TUFUQ0hFRCBUSEVOCisJSU5TRVJUIChhLCBiKSBPVkVSUklESU5HIFNZU1RFTSBWQUxVRSBW QUxVRVMgKHMuc19hLCBzLnNfYik7CisKK01FUkdFIElOVE8gaXRlc3QxNiB0CitVU0lORyAo U0VMRUNUIDEwIEFTIHNfYSwgJ2luc2VydGVkIGJ5IG1lcmdlJyBBUyBzX2IpIHMKK09OIHQu YSA9IHMuc19hCitXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgKGEsIGIpIFZBTFVF UyAocy5zX2EsIHMuc19iKTsKKworTUVSR0UgSU5UTyBpdGVzdDE2IHQKK1VTSU5HIChTRUxF Q1QgMjAgQVMgc19hLCAnaW5zZXJ0ZWQgYnkgbWVyZ2UnIEFTIHNfYikgcworT04gdC5hID0g cy5zX2EKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCUlOU0VSVCAoYSwgYikgT1ZFUlJJRElO RyBVU0VSIFZBTFVFIFZBTFVFUyAocy5zX2EsIHMuc19iKTsKKworTUVSR0UgSU5UTyBpdGVz dDE2IHQKK1VTSU5HIChTRUxFQ1QgMzAgQVMgc19hLCAnaW5zZXJ0ZWQgYnkgbWVyZ2UnIEFT IHNfYikgcworT04gdC5hID0gcy5zX2EKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCUlOU0VS VCAoYSwgYikgT1ZFUlJJRElORyBTWVNURU0gVkFMVUUgVkFMVUVTIChzLnNfYSwgcy5zX2Ip OworCitTRUxFQ1QgKiBGUk9NIGl0ZXN0MTU7CitTRUxFQ1QgKiBGUk9NIGl0ZXN0MTY7CitE Uk9QIFRBQkxFIGl0ZXN0MTU7CitEUk9QIFRBQkxFIGl0ZXN0MTY7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9tZXJnZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9t ZXJnZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNDJiMTUw Nzg1ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL21lcmdlLnNx bApAQCAtMCwwICsxLDExODkgQEAKKy0tCistLSBNRVJHRQorLS0KKy0tXHNldCBWRVJCT1NJ VFkgdmVyYm9zZQorCistLXNldCBkZWJ1Z19wcmludF9yZXdyaXR0ZW4gPSB0cnVlOworLS1z ZXQgZGVidWdfcHJpbnRfcGFyc2UgPSB0cnVlOworLS1zZXQgZGVidWdfcHJpbnRfcHJldHR5 ID0gdHJ1ZTsKKworCitDUkVBVEUgVVNFUiBtZXJnZV9wcml2czsKK0NSRUFURSBVU0VSIG1l cmdlX25vX3ByaXZzOworRFJPUCBUQUJMRSBJRiBFWElTVFMgdGFyZ2V0OworRFJPUCBUQUJM RSBJRiBFWElTVFMgc291cmNlOworQ1JFQVRFIFRBQkxFIHRhcmdldCAodGlkIGludGVnZXIs IGJhbGFuY2UgaW50ZWdlcik7CitDUkVBVEUgVEFCTEUgc291cmNlIChzaWQgaW50ZWdlciwg ZGVsdGEgaW50ZWdlcik7IC0tbm8gaW5kZXgKK0lOU0VSVCBJTlRPIHRhcmdldCBWQUxVRVMg KDEsIDEwKTsKK0lOU0VSVCBJTlRPIHRhcmdldCBWQUxVRVMgKDIsIDIwKTsKK0lOU0VSVCBJ TlRPIHRhcmdldCBWQUxVRVMgKDMsIDMwKTsKK1NFTEVDVCB0LmN0aWQgaXMgbm90IG51bGwg YXMgbWF0Y2hlZCwgdC4qLCBzLiogRlJPTSBzb3VyY2UgcyBGVUxMIE9VVEVSIEpPSU4gdGFy Z2V0IHQgT04gcy5zaWQgPSB0LnRpZCBPUkRFUiBCWSB0LnRpZCwgcy5zaWQ7CisKK0FMVEVS IFRBQkxFIHRhcmdldCBPV05FUiBUTyBtZXJnZV9wcml2czsKK0FMVEVSIFRBQkxFIHNvdXJj ZSBPV05FUiBUTyBtZXJnZV9wcml2czsKKworQ1JFQVRFIFRBQkxFIHRhcmdldDIgKHRpZCBp bnRlZ2VyLCBiYWxhbmNlIGludGVnZXIpOworQ1JFQVRFIFRBQkxFIHNvdXJjZTIgKHNpZCBp bnRlZ2VyLCBkZWx0YSBpbnRlZ2VyKTsKKworQUxURVIgVEFCTEUgdGFyZ2V0MiBPV05FUiBU TyBtZXJnZV9ub19wcml2czsKK0FMVEVSIFRBQkxFIHNvdXJjZTIgT1dORVIgVE8gbWVyZ2Vf bm9fcHJpdnM7CisKK0dSQU5UIElOU0VSVCBPTiB0YXJnZXQgVE8gbWVyZ2Vfbm9fcHJpdnM7 CisKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gbWVyZ2VfcHJpdnM7CisKK0VYUExBSU4g KENPU1RTIE9GRikKK01FUkdFIElOVE8gdGFyZ2V0IHQKK1VTSU5HIHNvdXJjZSBBUyBzCitP TiB0LnRpZCA9IHMuc2lkCitXSEVOIE1BVENIRUQgVEhFTgorCURFTEVURTsKKworLS0KKy0t IEVycm9ycworLS0KK01FUkdFIElOVE8gdGFyZ2V0IHQgUkFORE9NV09SRAorVVNJTkcgc291 cmNlIEFTIHMKK09OIHQudGlkID0gcy5zaWQKK1dIRU4gTUFUQ0hFRCBUSEVOCisJVVBEQVRF IFNFVCBiYWxhbmNlID0gMDsKKy0tIE1BVENIRUQvSU5TRVJUIGVycm9yCitNRVJHRSBJTlRP IHRhcmdldCB0CitVU0lORyBzb3VyY2UgQVMgcworT04gdC50aWQgPSBzLnNpZAorV0hFTiBN QVRDSEVEIFRIRU4KKwlJTlNFUlQgREVGQVVMVCBWQUxVRVM7CistLSBpbmNvcnJlY3RseSBz cGVjaWZ5aW5nIElOVE8gdGFyZ2V0CitNRVJHRSBJTlRPIHRhcmdldCB0CitVU0lORyBzb3Vy Y2UgQVMgcworT04gdC50aWQgPSBzLnNpZAorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5T RVJUIElOVE8gdGFyZ2V0IERFRkFVTFQgVkFMVUVTOworLS0gTXVsdGlwbGUgVkFMVUVTIGNs YXVzZQorTUVSR0UgSU5UTyB0YXJnZXQgdAorVVNJTkcgc291cmNlIEFTIHMKK09OIHQudGlk ID0gcy5zaWQKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCUlOU0VSVCBWQUxVRVMgKDEsMSks ICgyLDIpOworLS0gU0VMRUNUIHF1ZXJ5IGZvciBJTlNFUlQKK01FUkdFIElOVE8gdGFyZ2V0 IHQKK1VTSU5HIHNvdXJjZSBBUyBzCitPTiB0LnRpZCA9IHMuc2lkCitXSEVOIE5PVCBNQVRD SEVEIFRIRU4KKwlJTlNFUlQgU0VMRUNUICgxLCAxKTsKKy0tIE5PVCBNQVRDSEVEL1VQREFU RQorTUVSR0UgSU5UTyB0YXJnZXQgdAorVVNJTkcgc291cmNlIEFTIHMKK09OIHQudGlkID0g cy5zaWQKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCVVQREFURSBTRVQgYmFsYW5jZSA9IDA7 CistLSBVUERBVEUgdGFibGVuYW1lCitNRVJHRSBJTlRPIHRhcmdldCB0CitVU0lORyBzb3Vy Y2UgQVMgcworT04gdC50aWQgPSBzLnNpZAorV0hFTiBNQVRDSEVEIFRIRU4KKwlVUERBVEUg dGFyZ2V0IFNFVCBiYWxhbmNlID0gMDsKKy0tIHNvdXJjZSBhbmQgdGFyZ2V0IG5hbWVzIHRo ZSBzYW1lCitNRVJHRSBJTlRPIHRhcmdldAorVVNJTkcgdGFyZ2V0CitPTiB0aWQgPSB0aWQK K1dIRU4gTUFUQ0hFRCBUSEVOIERPIE5PVEhJTkc7CisKKy0tIHVuc3VwcG9ydGVkIHJlbGF0 aW9uIHR5cGVzCistLSB2aWV3CitDUkVBVEUgVklFVyB0diBBUyBTRUxFQ1QgKiBGUk9NIHRh cmdldDsKK01FUkdFIElOVE8gdHYgdAorVVNJTkcgc291cmNlIHMKK09OIHQudGlkID0gcy5z aWQKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCUlOU0VSVCBERUZBVUxUIFZBTFVFUzsKK0RS T1AgVklFVyB0djsKKworLS0gbWF0ZXJpYWxpemVkIHZpZXcKK0NSRUFURSBNQVRFUklBTEla RUQgVklFVyBtdiBBUyBTRUxFQ1QgKiBGUk9NIHRhcmdldDsKK01FUkdFIElOVE8gbXYgdAor VVNJTkcgc291cmNlIHMKK09OIHQudGlkID0gcy5zaWQKK1dIRU4gTk9UIE1BVENIRUQgVEhF TgorCUlOU0VSVCBERUZBVUxUIFZBTFVFUzsKK0RST1AgTUFURVJJQUxJWkVEIFZJRVcgbXY7 CisKKy0tIHBlcm1pc3Npb25zCisKK01FUkdFIElOVE8gdGFyZ2V0CitVU0lORyBzb3VyY2Uy CitPTiB0YXJnZXQudGlkID0gc291cmNlMi5zaWQKK1dIRU4gTUFUQ0hFRCBUSEVOCisJVVBE QVRFIFNFVCBiYWxhbmNlID0gMDsKKworR1JBTlQgSU5TRVJUIE9OIHRhcmdldCBUTyBtZXJn ZV9ub19wcml2czsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gbWVyZ2Vfbm9fcHJpdnM7 CisKK01FUkdFIElOVE8gdGFyZ2V0CitVU0lORyBzb3VyY2UyCitPTiB0YXJnZXQudGlkID0g c291cmNlMi5zaWQKK1dIRU4gTUFUQ0hFRCBUSEVOCisJVVBEQVRFIFNFVCBiYWxhbmNlID0g MDsKKworR1JBTlQgVVBEQVRFIE9OIHRhcmdldDIgVE8gbWVyZ2VfcHJpdnM7CitTRVQgU0VT U0lPTiBBVVRIT1JJWkFUSU9OIG1lcmdlX3ByaXZzOworCitNRVJHRSBJTlRPIHRhcmdldDIK K1VTSU5HIHNvdXJjZQorT04gdGFyZ2V0Mi50aWQgPSBzb3VyY2Uuc2lkCitXSEVOIE1BVENI RUQgVEhFTgorCURFTEVURTsKKworTUVSR0UgSU5UTyB0YXJnZXQyCitVU0lORyBzb3VyY2UK K09OIHRhcmdldDIudGlkID0gc291cmNlLnNpZAorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJ SU5TRVJUIERFRkFVTFQgVkFMVUVTOworCistLSBjaGVjayBpZiB0aGUgdGFyZ2V0IGNhbiBi ZSBhY2Nlc3NlZCBmcm9tIHNvdXJjZSByZWxhdGlvbiBzdWJxdWVyeTsgd2Ugc2hvdWxkCist LSBub3QgYmUgYWJsZSB0byBkbyBzbworTUVSR0UgSU5UTyB0YXJnZXQgdAorVVNJTkcgKFNF TEVDVCAqIEZST00gc291cmNlIFdIRVJFIHQudGlkID4gc2lkKSBzCitPTiB0LnRpZCA9IHMu c2lkCitXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgREVGQVVMVCBWQUxVRVM7CisK Ky0tCistLSBpbml0aWFsIHRlc3RzCistLQorLS0gemVybyByb3dzIGluIHNvdXJjZSBoYXMg bm8gZWZmZWN0CitNRVJHRSBJTlRPIHRhcmdldAorVVNJTkcgc291cmNlCitPTiB0YXJnZXQu dGlkID0gc291cmNlLnNpZAorV0hFTiBNQVRDSEVEIFRIRU4KKwlVUERBVEUgU0VUIGJhbGFu Y2UgPSAwOworCitNRVJHRSBJTlRPIHRhcmdldCB0CitVU0lORyBzb3VyY2UgQVMgcworT04g dC50aWQgPSBzLnNpZAorV0hFTiBNQVRDSEVEIFRIRU4KKwlVUERBVEUgU0VUIGJhbGFuY2Ug PSAwOworTUVSR0UgSU5UTyB0YXJnZXQgdAorVVNJTkcgc291cmNlIEFTIHMKK09OIHQudGlk ID0gcy5zaWQKK1dIRU4gTUFUQ0hFRCBUSEVOCisJREVMRVRFOworQkVHSU47CitNRVJHRSBJ TlRPIHRhcmdldCB0CitVU0lORyBzb3VyY2UgQVMgcworT04gdC50aWQgPSBzLnNpZAorV0hF TiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIERFRkFVTFQgVkFMVUVTOworUk9MTEJBQ0s7 CisKKy0tIGluc2VydCBzb21lIG5vbi1tYXRjaGluZyBzb3VyY2Ugcm93cyB0byB3b3JrIGZy b20KK0lOU0VSVCBJTlRPIHNvdXJjZSBWQUxVRVMgKDQsIDQwKTsKK1NFTEVDVCAqIEZST00g c291cmNlIE9SREVSIEJZIHNpZDsKK1NFTEVDVCAqIEZST00gdGFyZ2V0IE9SREVSIEJZIHRp ZDsKKworTUVSR0UgSU5UTyB0YXJnZXQgdAorVVNJTkcgc291cmNlIEFTIHMKK09OIHQudGlk ID0gcy5zaWQKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCURPIE5PVEhJTkc7CitNRVJHRSBJ TlRPIHRhcmdldCB0CitVU0lORyBzb3VyY2UgQVMgcworT04gdC50aWQgPSBzLnNpZAorV0hF TiBNQVRDSEVEIFRIRU4KKwlVUERBVEUgU0VUIGJhbGFuY2UgPSAwOworTUVSR0UgSU5UTyB0 YXJnZXQgdAorVVNJTkcgc291cmNlIEFTIHMKK09OIHQudGlkID0gcy5zaWQKK1dIRU4gTUFU Q0hFRCBUSEVOCisJREVMRVRFOworQkVHSU47CitNRVJHRSBJTlRPIHRhcmdldCB0CitVU0lO RyBzb3VyY2UgQVMgcworT04gdC50aWQgPSBzLnNpZAorV0hFTiBOT1QgTUFUQ0hFRCBUSEVO CisJSU5TRVJUIERFRkFVTFQgVkFMVUVTOworU0VMRUNUICogRlJPTSB0YXJnZXQgT1JERVIg QlkgdGlkOworUk9MTEJBQ0s7CisKKy0tIGluZGV4IHBsYW5zCitJTlNFUlQgSU5UTyB0YXJn ZXQgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxMDAwLDI1MDApLCAwOworQUxURVIgVEFCTEUg dGFyZ2V0IEFERCBQUklNQVJZIEtFWSAodGlkKTsKK0FOQUxZWkUgdGFyZ2V0OworCitFWFBM QUlOIChDT1NUUyBPRkYpCitNRVJHRSBJTlRPIHRhcmdldCB0CitVU0lORyBzb3VyY2UgQVMg cworT04gdC50aWQgPSBzLnNpZAorV0hFTiBNQVRDSEVEIFRIRU4KKwlVUERBVEUgU0VUIGJh bGFuY2UgPSAwOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorTUVSR0UgSU5UTyB0YXJnZXQgdAor VVNJTkcgc291cmNlIEFTIHMKK09OIHQudGlkID0gcy5zaWQKK1dIRU4gTUFUQ0hFRCBUSEVO CisJREVMRVRFOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorTUVSR0UgSU5UTyB0YXJnZXQgdAor VVNJTkcgc291cmNlIEFTIHMKK09OIHQudGlkID0gcy5zaWQKK1dIRU4gTk9UIE1BVENIRUQg VEhFTgorCUlOU0VSVCBWQUxVRVMgKDQsIE5VTEwpOworREVMRVRFIEZST00gdGFyZ2V0IFdI RVJFIHRpZCA+IDEwMDsKK0FOQUxZWkUgdGFyZ2V0OworCistLSBpbnNlcnQgc29tZSBtYXRj aGluZyBzb3VyY2Ugcm93cyB0byB3b3JrIGZyb20KK0lOU0VSVCBJTlRPIHNvdXJjZSBWQUxV RVMgKDIsIDUpOworSU5TRVJUIElOVE8gc291cmNlIFZBTFVFUyAoMywgMjApOworU0VMRUNU ICogRlJPTSBzb3VyY2UgT1JERVIgQlkgc2lkOworU0VMRUNUICogRlJPTSB0YXJnZXQgT1JE RVIgQlkgdGlkOworCistLSBlcXVpdmFsZW50IG9mIGFuIFVQREFURSBqb2luCitCRUdJTjsK K01FUkdFIElOVE8gdGFyZ2V0IHQKK1VTSU5HIHNvdXJjZSBBUyBzCitPTiB0LnRpZCA9IHMu c2lkCitXSEVOIE1BVENIRUQgVEhFTgorCVVQREFURSBTRVQgYmFsYW5jZSA9IDA7CitTRUxF Q1QgKiBGUk9NIHRhcmdldCBPUkRFUiBCWSB0aWQ7CitST0xMQkFDSzsKKworLS0gZXF1aXZh bGVudCBvZiBhIERFTEVURSBqb2luCitCRUdJTjsKK01FUkdFIElOVE8gdGFyZ2V0IHQKK1VT SU5HIHNvdXJjZSBBUyBzCitPTiB0LnRpZCA9IHMuc2lkCitXSEVOIE1BVENIRUQgVEhFTgor CURFTEVURTsKK1NFTEVDVCAqIEZST00gdGFyZ2V0IE9SREVSIEJZIHRpZDsKK1JPTExCQUNL OworCitCRUdJTjsKK01FUkdFIElOVE8gdGFyZ2V0IHQKK1VTSU5HIHNvdXJjZSBBUyBzCitP TiB0LnRpZCA9IHMuc2lkCitXSEVOIE1BVENIRUQgVEhFTgorCURPIE5PVEhJTkc7CitTRUxF Q1QgKiBGUk9NIHRhcmdldCBPUkRFUiBCWSB0aWQ7CitST0xMQkFDSzsKKworQkVHSU47CitN RVJHRSBJTlRPIHRhcmdldCB0CitVU0lORyBzb3VyY2UgQVMgcworT04gdC50aWQgPSBzLnNp ZAorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIFZBTFVFUyAoNCwgTlVMTCk7CitT RUxFQ1QgKiBGUk9NIHRhcmdldCBPUkRFUiBCWSB0aWQ7CitST0xMQkFDSzsKKworLS0gZHVw bGljYXRlIHNvdXJjZSByb3cgY2F1c2VzIG11bHRpcGxlIHRhcmdldCByb3cgdXBkYXRlIEVS Uk9SCitJTlNFUlQgSU5UTyBzb3VyY2UgVkFMVUVTICgyLCA1KTsKK1NFTEVDVCAqIEZST00g c291cmNlIE9SREVSIEJZIHNpZDsKK1NFTEVDVCAqIEZST00gdGFyZ2V0IE9SREVSIEJZIHRp ZDsKK0JFR0lOOworTUVSR0UgSU5UTyB0YXJnZXQgdAorVVNJTkcgc291cmNlIEFTIHMKK09O IHQudGlkID0gcy5zaWQKK1dIRU4gTUFUQ0hFRCBUSEVOCisJVVBEQVRFIFNFVCBiYWxhbmNl ID0gMDsKK1JPTExCQUNLOworCitCRUdJTjsKK01FUkdFIElOVE8gdGFyZ2V0IHQKK1VTSU5H IHNvdXJjZSBBUyBzCitPTiB0LnRpZCA9IHMuc2lkCitXSEVOIE1BVENIRUQgVEhFTgorCURF TEVURTsKK1JPTExCQUNLOworCistLSBjb3JyZWN0IHNvdXJjZSBkYXRhCitERUxFVEUgRlJP TSBzb3VyY2UgV0hFUkUgc2lkID0gMjsKK0lOU0VSVCBJTlRPIHNvdXJjZSBWQUxVRVMgKDIs IDUpOworU0VMRUNUICogRlJPTSBzb3VyY2UgT1JERVIgQlkgc2lkOworU0VMRUNUICogRlJP TSB0YXJnZXQgT1JERVIgQlkgdGlkOworCistLSByZW1vdmUgY29uc3RyYWludHMKK2FsdGVy IHRhYmxlIHRhcmdldCBkcm9wIENPTlNUUkFJTlQgdGFyZ2V0X3BrZXk7CithbHRlciB0YWJs ZSB0YXJnZXQgYWx0ZXIgY29sdW1uIHRpZCBkcm9wIG5vdCBudWxsOworCistLSBtdWx0aXBs ZSBhY3Rpb25zCitCRUdJTjsKK01FUkdFIElOVE8gdGFyZ2V0IHQKK1VTSU5HIHNvdXJjZSBB UyBzCitPTiB0LnRpZCA9IHMuc2lkCitXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQg VkFMVUVTICg0LCA0KQorV0hFTiBNQVRDSEVEIFRIRU4KKwlVUERBVEUgU0VUIGJhbGFuY2Ug PSAwOworU0VMRUNUICogRlJPTSB0YXJnZXQgT1JERVIgQlkgdGlkOworUk9MTEJBQ0s7CisK Ky0tIHNob3VsZCBiZSBlcXVpdmFsZW50CitCRUdJTjsKK01FUkdFIElOVE8gdGFyZ2V0IHQK K1VTSU5HIHNvdXJjZSBBUyBzCitPTiB0LnRpZCA9IHMuc2lkCitXSEVOIE1BVENIRUQgVEhF TgorCVVQREFURSBTRVQgYmFsYW5jZSA9IDAKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCUlO U0VSVCBWQUxVRVMgKDQsIDQpOworU0VMRUNUICogRlJPTSB0YXJnZXQgT1JERVIgQlkgdGlk OworUk9MTEJBQ0s7CisKKy0tIGNvbHVtbiByZWZlcmVuY2VzCistLSBkbyBhIHNpbXBsZSBl cXVpdmFsZW50IG9mIGFuIFVQREFURSBqb2luCitCRUdJTjsKK01FUkdFIElOVE8gdGFyZ2V0 IHQKK1VTSU5HIHNvdXJjZSBBUyBzCitPTiB0LnRpZCA9IHMuc2lkCitXSEVOIE1BVENIRUQg VEhFTgorCVVQREFURSBTRVQgYmFsYW5jZSA9IHQuYmFsYW5jZSArIHMuZGVsdGE7CitTRUxF Q1QgKiBGUk9NIHRhcmdldCBPUkRFUiBCWSB0aWQ7CitST0xMQkFDSzsKKworLS0gZG8gYSBz aW1wbGUgZXF1aXZhbGVudCBvZiBhbiBJTlNFUlQgU0VMRUNUCitCRUdJTjsKK01FUkdFIElO VE8gdGFyZ2V0IHQKK1VTSU5HIHNvdXJjZSBBUyBzCitPTiB0LnRpZCA9IHMuc2lkCitXSEVO IE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgVkFMVUVTIChzLnNpZCwgcy5kZWx0YSk7CitT RUxFQ1QgKiBGUk9NIHRhcmdldCBPUkRFUiBCWSB0aWQ7CitST0xMQkFDSzsKKworLS0gYW5k IGFnYWluIHdpdGggZXhwbGljaXRseSBpZGVudGlmaWVkIGNvbHVtbiBsaXN0CitCRUdJTjsK K01FUkdFIElOVE8gdGFyZ2V0IHQKK1VTSU5HIHNvdXJjZSBBUyBzCitPTiB0LnRpZCA9IHMu c2lkCitXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgKHRpZCwgYmFsYW5jZSkgVkFM VUVTIChzLnNpZCwgcy5kZWx0YSk7CitTRUxFQ1QgKiBGUk9NIHRhcmdldCBPUkRFUiBCWSB0 aWQ7CitST0xMQkFDSzsKKworLS0gYW5kIGFnYWluIHdpdGggYSBzdWJ0bGUgZXJyb3I6IHJl ZmVycmluZyB0byBub24tZXhpc3RlbnQgdGFyZ2V0IHJvdyBmb3IgTk9UIE1BVENIRUQKK01F UkdFIElOVE8gdGFyZ2V0IHQKK1VTSU5HIHNvdXJjZSBBUyBzCitPTiB0LnRpZCA9IHMuc2lk CitXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgKHRpZCwgYmFsYW5jZSkgVkFMVUVT ICh0LnRpZCwgcy5kZWx0YSk7CisKKy0tIGFuZCBhZ2FpbiB3aXRoIGEgY29uc3RhbnQgT04g Y2xhdXNlCitCRUdJTjsKK01FUkdFIElOVE8gdGFyZ2V0IHQKK1VTSU5HIHNvdXJjZSBBUyBz CitPTiAoU0VMRUNUIHRydWUpCitXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgKHRp ZCwgYmFsYW5jZSkgVkFMVUVTICh0LnRpZCwgcy5kZWx0YSk7CitTRUxFQ1QgKiBGUk9NIHRh cmdldCBPUkRFUiBCWSB0aWQ7CitST0xMQkFDSzsKKworLS0gbm93IHRoZSBjbGFzc2ljIFVQ U0VSVAorQkVHSU47CitNRVJHRSBJTlRPIHRhcmdldCB0CitVU0lORyBzb3VyY2UgQVMgcwor T04gdC50aWQgPSBzLnNpZAorV0hFTiBNQVRDSEVEIFRIRU4KKwlVUERBVEUgU0VUIGJhbGFu Y2UgPSB0LmJhbGFuY2UgKyBzLmRlbHRhCitXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNF UlQgVkFMVUVTIChzLnNpZCwgcy5kZWx0YSk7CitTRUxFQ1QgKiBGUk9NIHRhcmdldCBPUkRF UiBCWSB0aWQ7CitST0xMQkFDSzsKKworLS0gdW5yZWFjaGFibGUgV0hFTiBjbGF1c2Ugc2hv dWxkIEVSUk9SCitCRUdJTjsKK01FUkdFIElOVE8gdGFyZ2V0IHQKK1VTSU5HIHNvdXJjZSBB UyBzCitPTiB0LnRpZCA9IHMuc2lkCitXSEVOIE1BVENIRUQgVEhFTiAvKiBUZXJtaW5hbCBX SEVOIGNsYXVzZSBmb3IgTUFUQ0hFRCAqLworCURFTEVURQorV0hFTiBNQVRDSEVEIEFORCBz LmRlbHRhID4gMCBUSEVOCisJVVBEQVRFIFNFVCBiYWxhbmNlID0gdC5iYWxhbmNlIC0gcy5k ZWx0YTsKK1JPTExCQUNLOworCistLSBjb25kaXRpb25hbCBXSEVOIGNsYXVzZQorQ1JFQVRF IFRBQkxFIHdxX3RhcmdldCAodGlkIGludGVnZXIgbm90IG51bGwsIGJhbGFuY2UgaW50ZWdl ciBERUZBVUxUIC0xKTsKK0NSRUFURSBUQUJMRSB3cV9zb3VyY2UgKGJhbGFuY2UgaW50ZWdl ciwgc2lkIGludGVnZXIpOworCitJTlNFUlQgSU5UTyB3cV9zb3VyY2UgKHNpZCwgYmFsYW5j ZSkgVkFMVUVTICgxLCAxMDApOworCitCRUdJTjsKKy0tIHRyeSBhIHNpbXBsZSBJTlNFUlQg d2l0aCBkZWZhdWx0IHZhbHVlcyBmaXJzdAorTUVSR0UgSU5UTyB3cV90YXJnZXQgdAorVVNJ Tkcgd3Ffc291cmNlIHMgT04gdC50aWQgPSBzLnNpZAorV0hFTiBOT1QgTUFUQ0hFRCBUSEVO CisJSU5TRVJUICh0aWQpIFZBTFVFUyAocy5zaWQpOworU0VMRUNUICogRlJPTSB3cV90YXJn ZXQ7CitST0xMQkFDSzsKKworLS0gdGhpcyB0aW1lIHdpdGggYSBGQUxTRSBjb25kaXRpb24K K01FUkdFIElOVE8gd3FfdGFyZ2V0IHQKK1VTSU5HIHdxX3NvdXJjZSBzIE9OIHQudGlkID0g cy5zaWQKK1dIRU4gTk9UIE1BVENIRUQgQU5EIEZBTFNFIFRIRU4KKwlJTlNFUlQgKHRpZCkg VkFMVUVTIChzLnNpZCk7CitTRUxFQ1QgKiBGUk9NIHdxX3RhcmdldDsKKworLS0gdGhpcyB0 aW1lIHdpdGggYW4gYWN0dWFsIGNvbmRpdGlvbiB3aGljaCByZXR1cm5zIGZhbHNlCitNRVJH RSBJTlRPIHdxX3RhcmdldCB0CitVU0lORyB3cV9zb3VyY2UgcyBPTiB0LnRpZCA9IHMuc2lk CitXSEVOIE5PVCBNQVRDSEVEIEFORCBzLmJhbGFuY2UgPD4gMTAwIFRIRU4KKwlJTlNFUlQg KHRpZCkgVkFMVUVTIChzLnNpZCk7CitTRUxFQ1QgKiBGUk9NIHdxX3RhcmdldDsKKworQkVH SU47CistLSBhbmQgbm93IHdpdGggYSBjb25kaXRpb24gd2hpY2ggcmV0dXJucyB0cnVlCitN RVJHRSBJTlRPIHdxX3RhcmdldCB0CitVU0lORyB3cV9zb3VyY2UgcyBPTiB0LnRpZCA9IHMu c2lkCitXSEVOIE5PVCBNQVRDSEVEIEFORCBzLmJhbGFuY2UgPSAxMDAgVEhFTgorCUlOU0VS VCAodGlkKSBWQUxVRVMgKHMuc2lkKTsKK1NFTEVDVCAqIEZST00gd3FfdGFyZ2V0OworUk9M TEJBQ0s7CisKKy0tIGNvbmRpdGlvbnMgaW4gdGhlIE5PVCBNQVRDSEVEIGNsYXVzZSBjYW4g b25seSByZWZlciB0byBzb3VyY2UgY29sdW1ucworQkVHSU47CitNRVJHRSBJTlRPIHdxX3Rh cmdldCB0CitVU0lORyB3cV9zb3VyY2UgcyBPTiB0LnRpZCA9IHMuc2lkCitXSEVOIE5PVCBN QVRDSEVEIEFORCB0LmJhbGFuY2UgPSAxMDAgVEhFTgorCUlOU0VSVCAodGlkKSBWQUxVRVMg KHMuc2lkKTsKK1NFTEVDVCAqIEZST00gd3FfdGFyZ2V0OworUk9MTEJBQ0s7CisKK01FUkdF IElOVE8gd3FfdGFyZ2V0IHQKK1VTSU5HIHdxX3NvdXJjZSBzIE9OIHQudGlkID0gcy5zaWQK K1dIRU4gTk9UIE1BVENIRUQgQU5EIHMuYmFsYW5jZSA9IDEwMCBUSEVOCisJSU5TRVJUICh0 aWQpIFZBTFVFUyAocy5zaWQpOworU0VMRUNUICogRlJPTSB3cV90YXJnZXQ7CisKKy0tIGNv bmRpdGlvbnMgaW4gTUFUQ0hFRCBjbGF1c2UgY2FuIHJlZmVyIHRvIGJvdGggc291cmNlIGFu ZCB0YXJnZXQKK1NFTEVDVCAqIEZST00gd3Ffc291cmNlOworTUVSR0UgSU5UTyB3cV90YXJn ZXQgdAorVVNJTkcgd3Ffc291cmNlIHMgT04gdC50aWQgPSBzLnNpZAorV0hFTiBNQVRDSEVE IEFORCBzLmJhbGFuY2UgPSAxMDAgVEhFTgorCVVQREFURSBTRVQgYmFsYW5jZSA9IHQuYmFs YW5jZSArIHMuYmFsYW5jZTsKK1NFTEVDVCAqIEZST00gd3FfdGFyZ2V0OworCitNRVJHRSBJ TlRPIHdxX3RhcmdldCB0CitVU0lORyB3cV9zb3VyY2UgcyBPTiB0LnRpZCA9IHMuc2lkCitX SEVOIE1BVENIRUQgQU5EIHQuYmFsYW5jZSA9IDEwMCBUSEVOCisJVVBEQVRFIFNFVCBiYWxh bmNlID0gdC5iYWxhbmNlICsgcy5iYWxhbmNlOworU0VMRUNUICogRlJPTSB3cV90YXJnZXQ7 CisKKy0tIGNoZWNrIGlmIEFORCB3b3JrcworTUVSR0UgSU5UTyB3cV90YXJnZXQgdAorVVNJ Tkcgd3Ffc291cmNlIHMgT04gdC50aWQgPSBzLnNpZAorV0hFTiBNQVRDSEVEIEFORCB0LmJh bGFuY2UgPSA5OSBBTkQgcy5iYWxhbmNlID4gMTAwIFRIRU4KKwlVUERBVEUgU0VUIGJhbGFu Y2UgPSB0LmJhbGFuY2UgKyBzLmJhbGFuY2U7CitTRUxFQ1QgKiBGUk9NIHdxX3RhcmdldDsK KworTUVSR0UgSU5UTyB3cV90YXJnZXQgdAorVVNJTkcgd3Ffc291cmNlIHMgT04gdC50aWQg PSBzLnNpZAorV0hFTiBNQVRDSEVEIEFORCB0LmJhbGFuY2UgPSA5OSBBTkQgcy5iYWxhbmNl ID0gMTAwIFRIRU4KKwlVUERBVEUgU0VUIGJhbGFuY2UgPSB0LmJhbGFuY2UgKyBzLmJhbGFu Y2U7CitTRUxFQ1QgKiBGUk9NIHdxX3RhcmdldDsKKworLS0gY2hlY2sgaWYgT1Igd29ya3MK K01FUkdFIElOVE8gd3FfdGFyZ2V0IHQKK1VTSU5HIHdxX3NvdXJjZSBzIE9OIHQudGlkID0g cy5zaWQKK1dIRU4gTUFUQ0hFRCBBTkQgdC5iYWxhbmNlID0gOTkgT1Igcy5iYWxhbmNlID4g MTAwIFRIRU4KKwlVUERBVEUgU0VUIGJhbGFuY2UgPSB0LmJhbGFuY2UgKyBzLmJhbGFuY2U7 CitTRUxFQ1QgKiBGUk9NIHdxX3RhcmdldDsKKworTUVSR0UgSU5UTyB3cV90YXJnZXQgdAor VVNJTkcgd3Ffc291cmNlIHMgT04gdC50aWQgPSBzLnNpZAorV0hFTiBNQVRDSEVEIEFORCB0 LmJhbGFuY2UgPSAxOTkgT1Igcy5iYWxhbmNlID4gMTAwIFRIRU4KKwlVUERBVEUgU0VUIGJh bGFuY2UgPSB0LmJhbGFuY2UgKyBzLmJhbGFuY2U7CitTRUxFQ1QgKiBGUk9NIHdxX3Rhcmdl dDsKKworLS0gY2hlY2sgaWYgc3VicXVlcmllcyB3b3JrIGluIHRoZSBjb25kaXRpb25zPwor TUVSR0UgSU5UTyB3cV90YXJnZXQgdAorVVNJTkcgd3Ffc291cmNlIHMgT04gdC50aWQgPSBz LnNpZAorV0hFTiBNQVRDSEVEIEFORCB0LmJhbGFuY2UgPiAoU0VMRUNUIG1heChiYWxhbmNl KSBGUk9NIHRhcmdldCkgVEhFTgorCVVQREFURSBTRVQgYmFsYW5jZSA9IHQuYmFsYW5jZSAr IHMuYmFsYW5jZTsKKworLS0gY2hlY2sgaWYgd2UgY2FuIGFjY2VzcyBzeXN0ZW0gY29sdW1u cyBpbiB0aGUgY29uZGl0aW9ucworTUVSR0UgSU5UTyB3cV90YXJnZXQgdAorVVNJTkcgd3Ff c291cmNlIHMgT04gdC50aWQgPSBzLnNpZAorV0hFTiBNQVRDSEVEIEFORCB0LnhtaW4gPSB0 LnhtYXggVEhFTgorCVVQREFURSBTRVQgYmFsYW5jZSA9IHQuYmFsYW5jZSArIHMuYmFsYW5j ZTsKKworTUVSR0UgSU5UTyB3cV90YXJnZXQgdAorVVNJTkcgd3Ffc291cmNlIHMgT04gdC50 aWQgPSBzLnNpZAorV0hFTiBNQVRDSEVEIEFORCB0LnRhYmxlb2lkID49IDAgVEhFTgorCVVQ REFURSBTRVQgYmFsYW5jZSA9IHQuYmFsYW5jZSArIHMuYmFsYW5jZTsKK1NFTEVDVCAqIEZS T00gd3FfdGFyZ2V0OworCistLSB0ZXN0IHByZXZlbnRpbmcgV0hFTiBjb25kaXRpb25zIGZy b20gd3JpdGluZyB0byB0aGUgZGF0YWJhc2UKK2NyZWF0ZSBvciByZXBsYWNlIGZ1bmN0aW9u IG1lcmdlX3doZW5fYW5kX3dyaXRlKCkgcmV0dXJucyBib29sZWFuCitsYW5ndWFnZSBwbHBn c3FsIGFzCiskJAorQkVHSU4KKwlJTlNFUlQgSU5UTyB0YXJnZXQgVkFMVUVTICgxMDAsIDEw MCk7CisJUkVUVVJOIFRSVUU7CitFTkQ7CiskJDsKKworQkVHSU47CitNRVJHRSBJTlRPIHdx X3RhcmdldCB0CitVU0lORyB3cV9zb3VyY2UgcyBPTiB0LnRpZCA9IHMuc2lkCitXSEVOIE1B VENIRUQgQU5EIChtZXJnZV93aGVuX2FuZF93cml0ZSgpKSBUSEVOCisJVVBEQVRFIFNFVCBi YWxhbmNlID0gdC5iYWxhbmNlICsgcy5iYWxhbmNlOworUk9MTEJBQ0s7Citkcm9wIGZ1bmN0 aW9uIG1lcmdlX3doZW5fYW5kX3dyaXRlKCk7CisKK0RST1AgVEFCTEUgd3FfdGFyZ2V0LCB3 cV9zb3VyY2U7CisKKy0tIHRlc3QgdHJpZ2dlcnMKK2NyZWF0ZSBvciByZXBsYWNlIGZ1bmN0 aW9uIG1lcmdlX3RyaWdmdW5jICgpIHJldHVybnMgdHJpZ2dlcgorbGFuZ3VhZ2UgcGxwZ3Nx bCBhcworJCQKK0JFR0lOCisJUkFJU0UgTk9USUNFICclICUgJSB0cmlnZ2VyJywgVEdfV0hF TiwgVEdfT1AsIFRHX0xFVkVMOworCUlGIChUR19XSEVOID0gJ0JFRk9SRScgQU5EIFRHX0xF VkVMID0gJ1JPVycpIFRIRU4KKwkJSUYgKFRHX09QID0gJ0RFTEVURScpIFRIRU4KKwkJCVJF VFVSTiBPTEQ7CisJCUVMU0UKKwkJCVJFVFVSTiBORVc7CisJCUVORCBJRjsKKwlFTFNFCisJ CVJFVFVSTiBOVUxMOworCUVORCBJRjsKK0VORDsKKyQkOworQ1JFQVRFIFRSSUdHRVIgbWVy Z2VfYnNpIEJFRk9SRSBJTlNFUlQgT04gdGFyZ2V0IEZPUiBFQUNIIFNUQVRFTUVOVCBFWEVD VVRFIFBST0NFRFVSRSBtZXJnZV90cmlnZnVuYyAoKTsKK0NSRUFURSBUUklHR0VSIG1lcmdl X2JzdSBCRUZPUkUgVVBEQVRFIE9OIHRhcmdldCBGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VU RSBQUk9DRURVUkUgbWVyZ2VfdHJpZ2Z1bmMgKCk7CitDUkVBVEUgVFJJR0dFUiBtZXJnZV9i c2QgQkVGT1JFIERFTEVURSBPTiB0YXJnZXQgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUg UFJPQ0VEVVJFIG1lcmdlX3RyaWdmdW5jICgpOworQ1JFQVRFIFRSSUdHRVIgbWVyZ2VfYXNp IEFGVEVSIElOU0VSVCBPTiB0YXJnZXQgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgUFJP Q0VEVVJFIG1lcmdlX3RyaWdmdW5jICgpOworQ1JFQVRFIFRSSUdHRVIgbWVyZ2VfYXN1IEFG VEVSIFVQREFURSBPTiB0YXJnZXQgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VE VVJFIG1lcmdlX3RyaWdmdW5jICgpOworQ1JFQVRFIFRSSUdHRVIgbWVyZ2VfYXNkIEFGVEVS IERFTEVURSBPTiB0YXJnZXQgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VEVVJF IG1lcmdlX3RyaWdmdW5jICgpOworQ1JFQVRFIFRSSUdHRVIgbWVyZ2VfYnJpIEJFRk9SRSBJ TlNFUlQgT04gdGFyZ2V0IEZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSBtZXJnZV90 cmlnZnVuYyAoKTsKK0NSRUFURSBUUklHR0VSIG1lcmdlX2JydSBCRUZPUkUgVVBEQVRFIE9O IHRhcmdldCBGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgbWVyZ2VfdHJpZ2Z1bmMg KCk7CitDUkVBVEUgVFJJR0dFUiBtZXJnZV9icmQgQkVGT1JFIERFTEVURSBPTiB0YXJnZXQg Rk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIG1lcmdlX3RyaWdmdW5jICgpOworQ1JF QVRFIFRSSUdHRVIgbWVyZ2VfYXJpIEFGVEVSIElOU0VSVCBPTiB0YXJnZXQgRk9SIEVBQ0gg Uk9XIEVYRUNVVEUgUFJPQ0VEVVJFIG1lcmdlX3RyaWdmdW5jICgpOworQ1JFQVRFIFRSSUdH RVIgbWVyZ2VfYXJ1IEFGVEVSIFVQREFURSBPTiB0YXJnZXQgRk9SIEVBQ0ggUk9XIEVYRUNV VEUgUFJPQ0VEVVJFIG1lcmdlX3RyaWdmdW5jICgpOworQ1JFQVRFIFRSSUdHRVIgbWVyZ2Vf YXJkIEFGVEVSIERFTEVURSBPTiB0YXJnZXQgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VE VVJFIG1lcmdlX3RyaWdmdW5jICgpOworCistLSBub3cgdGhlIGNsYXNzaWMgVVBTRVJULCB3 aXRoIGEgREVMRVRFCitCRUdJTjsKK1VQREFURSB0YXJnZXQgU0VUIGJhbGFuY2UgPSAwIFdI RVJFIHRpZCA9IDM7CistLUVYUExBSU4gKEFOQUxZWkUgT04sIENPU1RTIE9GRiwgU1VNTUFS WSBPRkYsIFRJTUlORyBPRkYpCitNRVJHRSBJTlRPIHRhcmdldCB0CitVU0lORyBzb3VyY2Ug QVMgcworT04gdC50aWQgPSBzLnNpZAorV0hFTiBNQVRDSEVEIEFORCB0LmJhbGFuY2UgPiBz LmRlbHRhIFRIRU4KKwlVUERBVEUgU0VUIGJhbGFuY2UgPSB0LmJhbGFuY2UgLSBzLmRlbHRh CitXSEVOIE1BVENIRUQgVEhFTgorCURFTEVURQorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJ SU5TRVJUIFZBTFVFUyAocy5zaWQsIHMuZGVsdGEpOworU0VMRUNUICogRlJPTSB0YXJnZXQg T1JERVIgQlkgdGlkOworUk9MTEJBQ0s7CisKKy0tIHRlc3QgZnJvbSBQTC9wZ1NRTAorLS0g bWFrZSBzdXJlIE1FUkdFIElOVE8gaXNuJ3QgaW50ZXJwcmV0ZWQgdG8gbWVhbiByZXR1cm5p bmcgdmFyaWFibGVzIGxpa2UgU0VMRUNUIElOVE8KK0JFR0lOOworRE8gTEFOR1VBR0UgcGxw Z3NxbCAkJAorQkVHSU4KK01FUkdFIElOVE8gdGFyZ2V0IHQKK1VTSU5HIHNvdXJjZSBBUyBz CitPTiB0LnRpZCA9IHMuc2lkCitXSEVOIE1BVENIRUQgQU5EIHQuYmFsYW5jZSA+IHMuZGVs dGEgVEhFTgorCVVQREFURSBTRVQgYmFsYW5jZSA9IHQuYmFsYW5jZSAtIHMuZGVsdGE7CitF TkQ7CiskJDsKK1JPTExCQUNLOworCistLXNvdXJjZSBjb25zdGFudHMKK0JFR0lOOworTUVS R0UgSU5UTyB0YXJnZXQgdAorVVNJTkcgKFNFTEVDVCA5IEFTIHNpZCwgNTcgQVMgZGVsdGEp IEFTIHMKK09OIHQudGlkID0gcy5zaWQKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCUlOU0VS VCAodGlkLCBiYWxhbmNlKSBWQUxVRVMgKHMuc2lkLCBzLmRlbHRhKTsKK1NFTEVDVCAqIEZS T00gdGFyZ2V0IE9SREVSIEJZIHRpZDsKK1JPTExCQUNLOworCistLXNvdXJjZSBxdWVyeQor QkVHSU47CitNRVJHRSBJTlRPIHRhcmdldCB0CitVU0lORyAoU0VMRUNUIHNpZCwgZGVsdGEg RlJPTSBzb3VyY2UgV0hFUkUgZGVsdGEgPiAwKSBBUyBzCitPTiB0LnRpZCA9IHMuc2lkCitX SEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgKHRpZCwgYmFsYW5jZSkgVkFMVUVTIChz LnNpZCwgcy5kZWx0YSk7CitTRUxFQ1QgKiBGUk9NIHRhcmdldCBPUkRFUiBCWSB0aWQ7CitS T0xMQkFDSzsKKworQkVHSU47CitNRVJHRSBJTlRPIHRhcmdldCB0CitVU0lORyAoU0VMRUNU IHNpZCwgZGVsdGEgYXMgbmV3bmFtZSBGUk9NIHNvdXJjZSBXSEVSRSBkZWx0YSA+IDApIEFT IHMKK09OIHQudGlkID0gcy5zaWQKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCUlOU0VSVCAo dGlkLCBiYWxhbmNlKSBWQUxVRVMgKHMuc2lkLCBzLm5ld25hbWUpOworU0VMRUNUICogRlJP TSB0YXJnZXQgT1JERVIgQlkgdGlkOworUk9MTEJBQ0s7CisKKy0tc2VsZi1tZXJnZQorQkVH SU47CitNRVJHRSBJTlRPIHRhcmdldCB0MQorVVNJTkcgdGFyZ2V0IHQyCitPTiB0MS50aWQg PSB0Mi50aWQKK1dIRU4gTUFUQ0hFRCBUSEVOCisJVVBEQVRFIFNFVCBiYWxhbmNlID0gdDEu YmFsYW5jZSArIHQyLmJhbGFuY2UKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCUlOU0VSVCBW QUxVRVMgKHQyLnRpZCwgdDIuYmFsYW5jZSk7CitTRUxFQ1QgKiBGUk9NIHRhcmdldCBPUkRF UiBCWSB0aWQ7CitST0xMQkFDSzsKKworQkVHSU47CitNRVJHRSBJTlRPIHRhcmdldCB0CitV U0lORyAoU0VMRUNUIHRpZCBhcyBzaWQsIGJhbGFuY2UgYXMgZGVsdGEgRlJPTSB0YXJnZXQg V0hFUkUgYmFsYW5jZSA+IDApIEFTIHMKK09OIHQudGlkID0gcy5zaWQKK1dIRU4gTk9UIE1B VENIRUQgVEhFTgorCUlOU0VSVCAodGlkLCBiYWxhbmNlKSBWQUxVRVMgKHMuc2lkLCBzLmRl bHRhKTsKK1NFTEVDVCAqIEZST00gdGFyZ2V0IE9SREVSIEJZIHRpZDsKK1JPTExCQUNLOwor CitCRUdJTjsKK01FUkdFIElOVE8gdGFyZ2V0IHQKK1VTSU5HCisoU0VMRUNUIHNpZCwgbWF4 KGRlbHRhKSBBUyBkZWx0YQorIEZST00gc291cmNlCisgR1JPVVAgQlkgc2lkCisgSEFWSU5H IGNvdW50KCopID0gMQorIE9SREVSIEJZIHNpZCBBU0MpIEFTIHMKK09OIHQudGlkID0gcy5z aWQKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCUlOU0VSVCAodGlkLCBiYWxhbmNlKSBWQUxV RVMgKHMuc2lkLCBzLmRlbHRhKTsKK1NFTEVDVCAqIEZST00gdGFyZ2V0IE9SREVSIEJZIHRp ZDsKK1JPTExCQUNLOworCistLSBwbHBnc3FsIHBhcmFtZXRlcnMgYW5kIHJlc3VsdHMKK0JF R0lOOworQ1JFQVRFIEZVTkNUSU9OIG1lcmdlX2Z1bmMgKHBfaWQgaW50ZWdlciwgcF9iYWwg aW50ZWdlcikKK1JFVFVSTlMgSU5URUdFUgorTEFOR1VBR0UgcGxwZ3NxbAorQVMgJCQKK0RF Q0xBUkUKKyByZXN1bHQgaW50ZWdlcjsKK0JFR0lOCitNRVJHRSBJTlRPIHRhcmdldCB0CitV U0lORyAoU0VMRUNUIHBfaWQgQVMgc2lkKSBBUyBzCitPTiB0LnRpZCA9IHMuc2lkCitXSEVO IE1BVENIRUQgVEhFTgorCVVQREFURSBTRVQgYmFsYW5jZSA9IHQuYmFsYW5jZSAtIHBfYmFs OworSUYgRk9VTkQgVEhFTgorCUdFVCBESUFHTk9TVElDUyByZXN1bHQgOj0gUk9XX0NPVU5U OworRU5EIElGOworUkVUVVJOIHJlc3VsdDsKK0VORDsKKyQkOworU0VMRUNUIG1lcmdlX2Z1 bmMoMywgNCk7CitTRUxFQ1QgKiBGUk9NIHRhcmdldCBPUkRFUiBCWSB0aWQ7CitST0xMQkFD SzsKKworLS0gUFJFUEFSRQorQkVHSU47CitwcmVwYXJlIGZvb20gYXMgbWVyZ2UgaW50byB0 YXJnZXQgdCB1c2luZyAoc2VsZWN0IDEgYXMgc2lkKSBzIG9uICh0LnRpZCA9IHMuc2lkKSB3 aGVuIG1hdGNoZWQgdGhlbiB1cGRhdGUgc2V0IGJhbGFuY2UgPSAxOworZXhlY3V0ZSBmb29t OworU0VMRUNUICogRlJPTSB0YXJnZXQgT1JERVIgQlkgdGlkOworUk9MTEJBQ0s7CisKK0JF R0lOOworUFJFUEFSRSBmb29tMiAoaW50ZWdlciwgaW50ZWdlcikgQVMKK01FUkdFIElOVE8g dGFyZ2V0IHQKK1VTSU5HIChTRUxFQ1QgMSkgcworT04gdC50aWQgPSAkMQorV0hFTiBNQVRD SEVEIFRIRU4KK1VQREFURSBTRVQgYmFsYW5jZSA9ICQyOworLS1FWFBMQUlOIChBTkFMWVpF IE9OLCBDT1NUUyBPRkYsIFNVTU1BUlkgT0ZGLCBUSU1JTkcgT0ZGKQorZXhlY3V0ZSBmb29t MiAoMSwgMSk7CitTRUxFQ1QgKiBGUk9NIHRhcmdldCBPUkRFUiBCWSB0aWQ7CitST0xMQkFD SzsKKworLS0gc3VicXVlcmllcyBpbiBzb3VyY2UgcmVsYXRpb24KKworQ1JFQVRFIFRBQkxF IHNxX3RhcmdldCAodGlkIGludGVnZXIgTk9UIE5VTEwsIGJhbGFuY2UgaW50ZWdlcik7CitD UkVBVEUgVEFCTEUgc3Ffc291cmNlIChkZWx0YSBpbnRlZ2VyLCBzaWQgaW50ZWdlciwgYmFs YW5jZSBpbnRlZ2VyIERFRkFVTFQgMCk7CisKK0lOU0VSVCBJTlRPIHNxX3RhcmdldCh0aWQs IGJhbGFuY2UpIFZBTFVFUyAoMSwxMDApLCAoMiwyMDApLCAoMywzMDApOworSU5TRVJUIElO VE8gc3Ffc291cmNlKHNpZCwgZGVsdGEpIFZBTFVFUyAoMSwxMCksICgyLDIwKSwgKDQsNDAp OworCitCRUdJTjsKK01FUkdFIElOVE8gc3FfdGFyZ2V0IHQKK1VTSU5HIChTRUxFQ1QgKiBG Uk9NIHNxX3NvdXJjZSkgcworT04gdGlkID0gc2lkCitXSEVOIE1BVENIRUQgQU5EIHQuYmFs YW5jZSA+IGRlbHRhIFRIRU4KKwlVUERBVEUgU0VUIGJhbGFuY2UgPSB0LmJhbGFuY2UgKyBk ZWx0YTsKK1NFTEVDVCAqIEZST00gc3FfdGFyZ2V0OworUk9MTEJBQ0s7CisKKy0tIHRyeSBh IHZpZXcKK0NSRUFURSBWSUVXIHYgQVMgU0VMRUNUICogRlJPTSBzcV9zb3VyY2UgV0hFUkUg c2lkIDwgMjsKKworQkVHSU47CitNRVJHRSBJTlRPIHNxX3RhcmdldAorVVNJTkcgdgorT04g dGlkID0gc2lkCitXSEVOIE1BVENIRUQgVEhFTgorICAgIFVQREFURSBTRVQgYmFsYW5jZSA9 IHYuYmFsYW5jZSArIGRlbHRhOworU0VMRUNUICogRlJPTSBzcV90YXJnZXQ7CitST0xMQkFD SzsKKworLS0gYW1iaWd1b3VzIHJlZmVyZW5jZSB0byBhIGNvbHVtbgorQkVHSU47CitNRVJH RSBJTlRPIHNxX3RhcmdldAorVVNJTkcgdgorT04gdGlkID0gc2lkCitXSEVOIE1BVENIRUQg QU5EIHRpZCA+IDIgVEhFTgorICAgIFVQREFURSBTRVQgYmFsYW5jZSA9IGJhbGFuY2UgKyBk ZWx0YQorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIChiYWxhbmNlLCB0aWQpIFZB TFVFUyAoYmFsYW5jZSArIGRlbHRhLCBzaWQpCitXSEVOIE1BVENIRUQgQU5EIHRpZCA8IDIg VEhFTgorCURFTEVURTsKK1JPTExCQUNLOworCitCRUdJTjsKK0lOU0VSVCBJTlRPIHNxX3Nv dXJjZSAoc2lkLCBiYWxhbmNlLCBkZWx0YSkgVkFMVUVTICgtMSwgLTEsIC0xMCk7CitNRVJH RSBJTlRPIHNxX3RhcmdldCB0CitVU0lORyB2CitPTiB0aWQgPSBzaWQKK1dIRU4gTUFUQ0hF RCBBTkQgdGlkID4gMiBUSEVOCisgICAgVVBEQVRFIFNFVCBiYWxhbmNlID0gdC5iYWxhbmNl ICsgZGVsdGEKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCUlOU0VSVCAoYmFsYW5jZSwgdGlk KSBWQUxVRVMgKGJhbGFuY2UgKyBkZWx0YSwgc2lkKQorV0hFTiBNQVRDSEVEIEFORCB0aWQg PCAyIFRIRU4KKwlERUxFVEU7CitTRUxFQ1QgKiBGUk9NIHNxX3RhcmdldDsKK1JPTExCQUNL OworCistLSBDVEVzCitCRUdJTjsKK0lOU0VSVCBJTlRPIHNxX3NvdXJjZSAoc2lkLCBiYWxh bmNlLCBkZWx0YSkgVkFMVUVTICgtMSwgLTEsIC0xMCk7CitXSVRIIHRhcmdxIEFTICgKKwlT RUxFQ1QgKiBGUk9NIHYKKykKK01FUkdFIElOVE8gc3FfdGFyZ2V0IHQKK1VTSU5HIHYKK09O IHRpZCA9IHNpZAorV0hFTiBNQVRDSEVEIEFORCB0aWQgPiAyIFRIRU4KKyAgICBVUERBVEUg U0VUIGJhbGFuY2UgPSB0LmJhbGFuY2UgKyBkZWx0YQorV0hFTiBOT1QgTUFUQ0hFRCBUSEVO CisJSU5TRVJUIChiYWxhbmNlLCB0aWQpIFZBTFVFUyAoYmFsYW5jZSArIGRlbHRhLCBzaWQp CitXSEVOIE1BVENIRUQgQU5EIHRpZCA8IDIgVEhFTgorCURFTEVURTsKK1JPTExCQUNLOwor CistLSBSRVRVUk5JTkcKK0JFR0lOOworSU5TRVJUIElOVE8gc3Ffc291cmNlIChzaWQsIGJh bGFuY2UsIGRlbHRhKSBWQUxVRVMgKC0xLCAtMSwgLTEwKTsKK01FUkdFIElOVE8gc3FfdGFy Z2V0IHQKK1VTSU5HIHYKK09OIHRpZCA9IHNpZAorV0hFTiBNQVRDSEVEIEFORCB0aWQgPiAy IFRIRU4KKyAgICBVUERBVEUgU0VUIGJhbGFuY2UgPSB0LmJhbGFuY2UgKyBkZWx0YQorV0hF TiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIChiYWxhbmNlLCB0aWQpIFZBTFVFUyAoYmFs YW5jZSArIGRlbHRhLCBzaWQpCitXSEVOIE1BVENIRUQgQU5EIHRpZCA8IDIgVEhFTgorCURF TEVURQorUkVUVVJOSU5HICo7CitST0xMQkFDSzsKKworLS0gRVhQTEFJTgorQ1JFQVRFIFRB QkxFIGV4X210YXJnZXQgKGEgaW50LCBiIGludCk7CitDUkVBVEUgVEFCTEUgZXhfbXNvdXJj ZSAoYSBpbnQsIGIgaW50KTsKK0lOU0VSVCBJTlRPIGV4X210YXJnZXQgU0VMRUNUIGksIGkq MTAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAsMikgaTsKK0lOU0VSVCBJTlRPIGV4X21z b3VyY2UgU0VMRUNUIGksIGkqMTAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAsMSkgaTsK KworLS0gb25seSB1cGRhdGVzCistLUVYUExBSU4gKEFOQUxZWkUgT04sIENPU1RTIE9GRiwg U1VNTUFSWSBPRkYsIFRJTUlORyBPRkYpCitNRVJHRSBJTlRPIGV4X210YXJnZXQgdCBVU0lO RyBleF9tc291cmNlIHMgT04gdC5hID0gcy5hCitXSEVOIE1BVENIRUQgVEhFTgorCVVQREFU RSBTRVQgYiA9IHQuYiArIDE7CisKKy0tIG9ubHkgdXBkYXRlcyB0byBzZWxlY3RlZCB0dXBs ZXMKKy0tRVhQTEFJTiAoQU5BTFlaRSBPTiwgQ09TVFMgT0ZGLCBTVU1NQVJZIE9GRiwgVElN SU5HIE9GRikKK01FUkdFIElOVE8gZXhfbXRhcmdldCB0IFVTSU5HIGV4X21zb3VyY2UgcyBP TiB0LmEgPSBzLmEKK1dIRU4gTUFUQ0hFRCBBTkQgdC5hIDwgMTAgVEhFTgorCVVQREFURSBT RVQgYiA9IHQuYiArIDE7CisKKy0tIHVwZGF0ZXMgKyBkZWxldGVzCistLUVYUExBSU4gKEFO QUxZWkUgT04sIENPU1RTIE9GRiwgU1VNTUFSWSBPRkYsIFRJTUlORyBPRkYpCitNRVJHRSBJ TlRPIGV4X210YXJnZXQgdCBVU0lORyBleF9tc291cmNlIHMgT04gdC5hID0gcy5hCitXSEVO IE1BVENIRUQgQU5EIHQuYSA8IDEwIFRIRU4KKwlVUERBVEUgU0VUIGIgPSB0LmIgKyAxCitX SEVOIE1BVENIRUQgQU5EIHQuYSA+PSAxMCBBTkQgdC5hIDw9IDIwIFRIRU4KKwlERUxFVEU7 CisKKy0tIG9ubHkgaW5zZXJ0cworLS1FWFBMQUlOIChBTkFMWVpFIE9OLCBDT1NUUyBPRkYs IFNVTU1BUlkgT0ZGLCBUSU1JTkcgT0ZGKQorTUVSR0UgSU5UTyBleF9tdGFyZ2V0IHQgVVNJ TkcgZXhfbXNvdXJjZSBzIE9OIHQuYSA9IHMuYQorV0hFTiBOT1QgTUFUQ0hFRCBBTkQgcy5h IDwgMTAgVEhFTgorCUlOU0VSVCBWQUxVRVMgKGEsIGIpOworCistLSBhbGwgdGhyZWUKKy0t RVhQTEFJTiAoQU5BTFlaRSBPTiwgQ09TVFMgT0ZGLCBTVU1NQVJZIE9GRiwgVElNSU5HIE9G RikKK01FUkdFIElOVE8gZXhfbXRhcmdldCB0IFVTSU5HIGV4X21zb3VyY2UgcyBPTiB0LmEg PSBzLmEKK1dIRU4gTUFUQ0hFRCBBTkQgdC5hIDwgMTAgVEhFTgorCVVQREFURSBTRVQgYiA9 IHQuYiArIDEKK1dIRU4gTUFUQ0hFRCBBTkQgdC5hID49IDMwIEFORCB0LmEgPD0gNDAgVEhF TgorCURFTEVURQorV0hFTiBOT1QgTUFUQ0hFRCBBTkQgcy5hIDwgMjAgVEhFTgorCUlOU0VS VCBWQUxVRVMgKGEsIGIpOworCitEUk9QIFRBQkxFIGV4X21zb3VyY2UsIGV4X210YXJnZXQ7 CisKKy0tIFN1YnF1ZXJpZXMKK0JFR0lOOworTUVSR0UgSU5UTyBzcV90YXJnZXQgdAorVVNJ TkcgdgorT04gdGlkID0gc2lkCitXSEVOIE1BVENIRUQgVEhFTgorICAgIFVQREFURSBTRVQg YmFsYW5jZSA9IChTRUxFQ1QgY291bnQoKikgRlJPTSBzcV90YXJnZXQpOworU0VMRUNUICog RlJPTSBzcV90YXJnZXQgV0hFUkUgdGlkID0gMTsKK1JPTExCQUNLOworCitCRUdJTjsKK01F UkdFIElOVE8gc3FfdGFyZ2V0IHQKK1VTSU5HIHYKK09OIHRpZCA9IHNpZAorV0hFTiBNQVRD SEVEIEFORCAoU0VMRUNUIGNvdW50KCopID4gMCBGUk9NIHNxX3RhcmdldCkgVEhFTgorICAg IFVQREFURSBTRVQgYmFsYW5jZSA9IDQyOworU0VMRUNUICogRlJPTSBzcV90YXJnZXQgV0hF UkUgdGlkID0gMTsKK1JPTExCQUNLOworCitCRUdJTjsKK01FUkdFIElOVE8gc3FfdGFyZ2V0 IHQKK1VTSU5HIHYKK09OIHRpZCA9IHNpZCBBTkQgKFNFTEVDVCBjb3VudCgqKSA+IDAgRlJP TSBzcV90YXJnZXQpCitXSEVOIE1BVENIRUQgVEhFTgorICAgIFVQREFURSBTRVQgYmFsYW5j ZSA9IDQyOworU0VMRUNUICogRlJPTSBzcV90YXJnZXQgV0hFUkUgdGlkID0gMTsKK1JPTExC QUNLOworCitEUk9QIFRBQkxFIHNxX3RhcmdldCwgc3Ffc291cmNlIENBU0NBREU7CisKK0NS RUFURSBUQUJMRSBwYV90YXJnZXQgKHRpZCBpbnRlZ2VyLCBiYWxhbmNlIGZsb2F0LCB2YWwg dGV4dCkKKwlQQVJUSVRJT04gQlkgTElTVCAodGlkKTsKKworQ1JFQVRFIFRBQkxFIHBhcnQx IFBBUlRJVElPTiBPRiBwYV90YXJnZXQgRk9SIFZBTFVFUyBJTiAoMSw0KTsKK0NSRUFURSBU QUJMRSBwYXJ0MiBQQVJUSVRJT04gT0YgcGFfdGFyZ2V0IEZPUiBWQUxVRVMgSU4gKDIsNSw2 KTsKK0NSRUFURSBUQUJMRSBwYXJ0MyBQQVJUSVRJT04gT0YgcGFfdGFyZ2V0IEZPUiBWQUxV RVMgSU4gKDMsOCw5KTsKK0NSRUFURSBUQUJMRSBwYXJ0NCBQQVJUSVRJT04gT0YgcGFfdGFy Z2V0IERFRkFVTFQ7CisKK0NSRUFURSBUQUJMRSBwYV9zb3VyY2UgKHNpZCBpbnRlZ2VyLCBk ZWx0YSBmbG9hdCk7CistLSBpbnNlcnQgbWFueSByb3dzIHRvIHRoZSBzb3VyY2UgdGFibGUK K0lOU0VSVCBJTlRPIHBhX3NvdXJjZSBTRUxFQ1QgaWQsIGlkICogMTAgIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsMTQpIEFTIGlkOworLS0gaW5zZXJ0IGEgZmV3IHJvd3MgaW4gdGhlIHRh cmdldCB0YWJsZSAob2RkIG51bWJlcmVkIHRpZCkKK0lOU0VSVCBJTlRPIHBhX3RhcmdldCBT RUxFQ1QgaWQsIGlkICogMTAwLCAnaW5pdGlhbCcgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwx NCwyKSBBUyBpZDsKKworLS0gdHJ5IHNpbXBsZSBNRVJHRQorQkVHSU47CitNRVJHRSBJTlRP IHBhX3RhcmdldCB0CisgIFVTSU5HIHBhX3NvdXJjZSBzCisgIE9OIHQudGlkID0gcy5zaWQK KyAgV0hFTiBNQVRDSEVEIFRIRU4KKyAgICBVUERBVEUgU0VUIGJhbGFuY2UgPSBiYWxhbmNl ICsgZGVsdGEsIHZhbCA9IHZhbCB8fCAnIHVwZGF0ZWQgYnkgbWVyZ2UnCisgIFdIRU4gTk9U IE1BVENIRUQgVEhFTgorICAgIElOU0VSVCBWQUxVRVMgKHNpZCwgZGVsdGEsICdpbnNlcnRl ZCBieSBtZXJnZScpOworU0VMRUNUICogRlJPTSBwYV90YXJnZXQgT1JERVIgQlkgdGlkOwor Uk9MTEJBQ0s7CisKKy0tIHNhbWUgd2l0aCBhIGNvbnN0YW50IHF1YWwKK0JFR0lOOworTUVS R0UgSU5UTyBwYV90YXJnZXQgdAorICBVU0lORyBwYV9zb3VyY2UgcworICBPTiB0LnRpZCA9 IHMuc2lkIEFORCB0aWQgPSAxCisgIFdIRU4gTUFUQ0hFRCBUSEVOCisgICAgVVBEQVRFIFNF VCBiYWxhbmNlID0gYmFsYW5jZSArIGRlbHRhLCB2YWwgPSB2YWwgfHwgJyB1cGRhdGVkIGJ5 IG1lcmdlJworICBXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKyAgICBJTlNFUlQgVkFMVUVTIChz aWQsIGRlbHRhLCAnaW5zZXJ0ZWQgYnkgbWVyZ2UnKTsKK1NFTEVDVCAqIEZST00gcGFfdGFy Z2V0IE9SREVSIEJZIHRpZDsKK1JPTExCQUNLOworCistLSB0cnkgdXBkYXRpbmcgdGhlIHBh cnRpdGlvbiBrZXkgY29sdW1uCitCRUdJTjsKK01FUkdFIElOVE8gcGFfdGFyZ2V0IHQKKyAg VVNJTkcgcGFfc291cmNlIHMKKyAgT04gdC50aWQgPSBzLnNpZAorICBXSEVOIE1BVENIRUQg VEhFTgorICAgIFVQREFURSBTRVQgdGlkID0gdGlkICsgMSwgYmFsYW5jZSA9IGJhbGFuY2Ug KyBkZWx0YSwgdmFsID0gdmFsIHx8ICcgdXBkYXRlZCBieSBtZXJnZScKKyAgV0hFTiBOT1Qg TUFUQ0hFRCBUSEVOCisgICAgSU5TRVJUIFZBTFVFUyAoc2lkLCBkZWx0YSwgJ2luc2VydGVk IGJ5IG1lcmdlJyk7CitTRUxFQ1QgKiBGUk9NIHBhX3RhcmdldCBPUkRFUiBCWSB0aWQ7CitS T0xMQkFDSzsKKworRFJPUCBUQUJMRSBwYV90YXJnZXQgQ0FTQ0FERTsKKworLS0gVGhlIHRh cmdldCB0YWJsZSBpcyBwYXJ0aXRpb25lZCBpbiB0aGUgc2FtZSB3YXksIGJ1dCB0aGlzIHRp bWUgYnkgYXR0YWNoaW5nCistLSBwYXJ0aXRpb25zIHdoaWNoIGhhdmUgY29sdW1ucyBpbiBk aWZmZXJlbnQgb3JkZXIsIGRyb3BwZWQgY29sdW1ucyBldGMuCitDUkVBVEUgVEFCTEUgcGFf dGFyZ2V0ICh0aWQgaW50ZWdlciwgYmFsYW5jZSBmbG9hdCwgdmFsIHRleHQpCisJUEFSVElU SU9OIEJZIExJU1QgKHRpZCk7CisKK0NSRUFURSBUQUJMRSBwYXJ0MSAodGlkIGludGVnZXIs IGJhbGFuY2UgZmxvYXQsIHZhbCB0ZXh0KTsKK0NSRUFURSBUQUJMRSBwYXJ0MiAoYmFsYW5j ZSBmbG9hdCwgdGlkIGludGVnZXIsIHZhbCB0ZXh0KTsKK0NSRUFURSBUQUJMRSBwYXJ0MyAo dGlkIGludGVnZXIsIGJhbGFuY2UgZmxvYXQsIHZhbCB0ZXh0KTsKK0NSRUFURSBUQUJMRSBw YXJ0NCAoZXh0cmFpZCB0ZXh0LCB0aWQgaW50ZWdlciwgYmFsYW5jZSBmbG9hdCwgdmFsIHRl eHQpOworQUxURVIgVEFCTEUgcGFydDQgRFJPUCBDT0xVTU4gZXh0cmFpZDsKKworQUxURVIg VEFCTEUgcGFfdGFyZ2V0IEFUVEFDSCBQQVJUSVRJT04gcGFydDEgRk9SIFZBTFVFUyBJTiAo MSw0KTsKK0FMVEVSIFRBQkxFIHBhX3RhcmdldCBBVFRBQ0ggUEFSVElUSU9OIHBhcnQyIEZP UiBWQUxVRVMgSU4gKDIsNSw2KTsKK0FMVEVSIFRBQkxFIHBhX3RhcmdldCBBVFRBQ0ggUEFS VElUSU9OIHBhcnQzIEZPUiBWQUxVRVMgSU4gKDMsOCw5KTsKK0FMVEVSIFRBQkxFIHBhX3Rh cmdldCBBVFRBQ0ggUEFSVElUSU9OIHBhcnQ0IERFRkFVTFQ7CisKKy0tIGluc2VydCBhIGZl dyByb3dzIGluIHRoZSB0YXJnZXQgdGFibGUgKG9kZCBudW1iZXJlZCB0aWQpCitJTlNFUlQg SU5UTyBwYV90YXJnZXQgU0VMRUNUIGlkLCBpZCAqIDEwMCwgJ2luaXRpYWwnIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsMTQsMikgQVMgaWQ7CisKKy0tIHRyeSBzaW1wbGUgTUVSR0UKK0JF R0lOOworTUVSR0UgSU5UTyBwYV90YXJnZXQgdAorICBVU0lORyBwYV9zb3VyY2UgcworICBP TiB0LnRpZCA9IHMuc2lkCisgIFdIRU4gTUFUQ0hFRCBUSEVOCisgICAgVVBEQVRFIFNFVCBi YWxhbmNlID0gYmFsYW5jZSArIGRlbHRhLCB2YWwgPSB2YWwgfHwgJyB1cGRhdGVkIGJ5IG1l cmdlJworICBXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKyAgICBJTlNFUlQgVkFMVUVTIChzaWQs IGRlbHRhLCAnaW5zZXJ0ZWQgYnkgbWVyZ2UnKTsKK1NFTEVDVCAqIEZST00gcGFfdGFyZ2V0 IE9SREVSIEJZIHRpZDsKK1JPTExCQUNLOworCistLSBzYW1lIHdpdGggYSBjb25zdGFudCBx dWFsCitCRUdJTjsKK01FUkdFIElOVE8gcGFfdGFyZ2V0IHQKKyAgVVNJTkcgcGFfc291cmNl IHMKKyAgT04gdC50aWQgPSBzLnNpZCBBTkQgdGlkIElOICgxLCA1KQorICBXSEVOIE1BVENI RUQgQU5EIHRpZCAlIDUgPSAwIFRIRU4gREVMRVRFCisgIFdIRU4gTUFUQ0hFRCBUSEVOCisg ICAgVVBEQVRFIFNFVCBiYWxhbmNlID0gYmFsYW5jZSArIGRlbHRhLCB2YWwgPSB2YWwgfHwg JyB1cGRhdGVkIGJ5IG1lcmdlJworICBXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKyAgICBJTlNF UlQgVkFMVUVTIChzaWQsIGRlbHRhLCAnaW5zZXJ0ZWQgYnkgbWVyZ2UnKTsKK1NFTEVDVCAq IEZST00gcGFfdGFyZ2V0IE9SREVSIEJZIHRpZDsKK1JPTExCQUNLOworCistLSB0cnkgdXBk YXRpbmcgdGhlIHBhcnRpdGlvbiBrZXkgY29sdW1uCitCRUdJTjsKK01FUkdFIElOVE8gcGFf dGFyZ2V0IHQKKyAgVVNJTkcgcGFfc291cmNlIHMKKyAgT04gdC50aWQgPSBzLnNpZAorICBX SEVOIE1BVENIRUQgVEhFTgorICAgIFVQREFURSBTRVQgdGlkID0gdGlkICsgMSwgYmFsYW5j ZSA9IGJhbGFuY2UgKyBkZWx0YSwgdmFsID0gdmFsIHx8ICcgdXBkYXRlZCBieSBtZXJnZScK KyAgV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisgICAgSU5TRVJUIFZBTFVFUyAoc2lkLCBkZWx0 YSwgJ2luc2VydGVkIGJ5IG1lcmdlJyk7CitTRUxFQ1QgKiBGUk9NIHBhX3RhcmdldCBPUkRF UiBCWSB0aWQ7CitST0xMQkFDSzsKKworRFJPUCBUQUJMRSBwYV9zb3VyY2U7CitEUk9QIFRB QkxFIHBhX3RhcmdldCBDQVNDQURFOworCistLSBTdWItcGFydGl0aW9uaW5nCitDUkVBVEUg VEFCTEUgcGFfdGFyZ2V0IChsb2d0cyB0aW1lc3RhbXAsIHRpZCBpbnRlZ2VyLCBiYWxhbmNl IGZsb2F0LCB2YWwgdGV4dCkKKwlQQVJUSVRJT04gQlkgUkFOR0UgKGxvZ3RzKTsKKworQ1JF QVRFIFRBQkxFIHBhcnRfbTAxIFBBUlRJVElPTiBPRiBwYV90YXJnZXQKKwlGT1IgVkFMVUVT IEZST00gKCcyMDE3LTAxLTAxJykgVE8gKCcyMDE3LTAyLTAxJykKKwlQQVJUSVRJT04gQlkg TElTVCAodGlkKTsKK0NSRUFURSBUQUJMRSBwYXJ0X20wMV9vZGQgUEFSVElUSU9OIE9GIHBh cnRfbTAxCisJRk9SIFZBTFVFUyBJTiAoMSwzLDUsNyw5KTsKK0NSRUFURSBUQUJMRSBwYXJ0 X20wMV9ldmVuIFBBUlRJVElPTiBPRiBwYXJ0X20wMQorCUZPUiBWQUxVRVMgSU4gKDIsNCw2 LDgpOworQ1JFQVRFIFRBQkxFIHBhcnRfbTAyIFBBUlRJVElPTiBPRiBwYV90YXJnZXQKKwlG T1IgVkFMVUVTIEZST00gKCcyMDE3LTAyLTAxJykgVE8gKCcyMDE3LTAzLTAxJykKKwlQQVJU SVRJT04gQlkgTElTVCAodGlkKTsKK0NSRUFURSBUQUJMRSBwYXJ0X20wMl9vZGQgUEFSVElU SU9OIE9GIHBhcnRfbTAyCisJRk9SIFZBTFVFUyBJTiAoMSwzLDUsNyw5KTsKK0NSRUFURSBU QUJMRSBwYXJ0X20wMl9ldmVuIFBBUlRJVElPTiBPRiBwYXJ0X20wMgorCUZPUiBWQUxVRVMg SU4gKDIsNCw2LDgpOworCitDUkVBVEUgVEFCTEUgcGFfc291cmNlIChzaWQgaW50ZWdlciwg ZGVsdGEgZmxvYXQpOworLS0gaW5zZXJ0IG1hbnkgcm93cyB0byB0aGUgc291cmNlIHRhYmxl CitJTlNFUlQgSU5UTyBwYV9zb3VyY2UgU0VMRUNUIGlkLCBpZCAqIDEwICBGUk9NIGdlbmVy YXRlX3NlcmllcygxLDE0KSBBUyBpZDsKKy0tIGluc2VydCBhIGZldyByb3dzIGluIHRoZSB0 YXJnZXQgdGFibGUgKG9kZCBudW1iZXJlZCB0aWQpCitJTlNFUlQgSU5UTyBwYV90YXJnZXQg U0VMRUNUICcyMDE3LTAxLTMxJywgaWQsIGlkICogMTAwLCAnaW5pdGlhbCcgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSw5LDMpIEFTIGlkOworSU5TRVJUIElOVE8gcGFfdGFyZ2V0IFNFTEVD VCAnMjAxNy0wMi0yOCcsIGlkLCBpZCAqIDEwMCwgJ2luaXRpYWwnIEZST00gZ2VuZXJhdGVf c2VyaWVzKDIsOSwzKSBBUyBpZDsKKworLS0gdHJ5IHNpbXBsZSBNRVJHRQorQkVHSU47CitN RVJHRSBJTlRPIHBhX3RhcmdldCB0CisgIFVTSU5HIChTRUxFQ1QgJzIwMTctMDEtMTUnIEFT IHNsb2d0cywgKiBGUk9NIHBhX3NvdXJjZSBXSEVSRSBzaWQgPCAxMCkgcworICBPTiB0LnRp ZCA9IHMuc2lkCisgIFdIRU4gTUFUQ0hFRCBUSEVOCisgICAgVVBEQVRFIFNFVCBiYWxhbmNl ID0gYmFsYW5jZSArIGRlbHRhLCB2YWwgPSB2YWwgfHwgJyB1cGRhdGVkIGJ5IG1lcmdlJwor ICBXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKyAgICBJTlNFUlQgVkFMVUVTIChzbG9ndHM6OnRp bWVzdGFtcCwgc2lkLCBkZWx0YSwgJ2luc2VydGVkIGJ5IG1lcmdlJyk7CitTRUxFQ1QgKiBG Uk9NIHBhX3RhcmdldCBPUkRFUiBCWSB0aWQ7CitST0xMQkFDSzsKKworRFJPUCBUQUJMRSBw YV9zb3VyY2U7CitEUk9QIFRBQkxFIHBhX3RhcmdldCBDQVNDQURFOworCistLSBzb21lIGNv bXBsZXggam9pbnMgb24gdGhlIHNvdXJjZSBzaWRlCisKK0NSRUFURSBUQUJMRSBjal90YXJn ZXQgKHRpZCBpbnRlZ2VyLCBiYWxhbmNlIGZsb2F0LCB2YWwgdGV4dCk7CitDUkVBVEUgVEFC TEUgY2pfc291cmNlMSAoc2lkMSBpbnRlZ2VyLCBzY2F0IGludGVnZXIsIGRlbHRhIGludGVn ZXIpOworQ1JFQVRFIFRBQkxFIGNqX3NvdXJjZTIgKHNpZDIgaW50ZWdlciwgc3ZhbCB0ZXh0 KTsKK0lOU0VSVCBJTlRPIGNqX3NvdXJjZTEgVkFMVUVTICgxLCAxMCwgMTAwKTsKK0lOU0VS VCBJTlRPIGNqX3NvdXJjZTEgVkFMVUVTICgxLCAyMCwgMjAwKTsKK0lOU0VSVCBJTlRPIGNq X3NvdXJjZTEgVkFMVUVTICgyLCAyMCwgMzAwKTsKK0lOU0VSVCBJTlRPIGNqX3NvdXJjZTEg VkFMVUVTICgzLCAxMCwgNDAwKTsKK0lOU0VSVCBJTlRPIGNqX3NvdXJjZTIgVkFMVUVTICgx LCAnaW5pdGlhbCBzb3VyY2UyJyk7CitJTlNFUlQgSU5UTyBjal9zb3VyY2UyIFZBTFVFUyAo MiwgJ2luaXRpYWwgc291cmNlMicpOworSU5TRVJUIElOVE8gY2pfc291cmNlMiBWQUxVRVMg KDMsICdpbml0aWFsIHNvdXJjZTInKTsKKworLS0gc291cmNlIHJlbGF0aW9uIGlzIGFuIHVu YWxpYXNlZCBqb2luCitNRVJHRSBJTlRPIGNqX3RhcmdldCB0CitVU0lORyBjal9zb3VyY2Ux IHMxCisJSU5ORVIgSk9JTiBjal9zb3VyY2UyIHMyIE9OIHNpZDEgPSBzaWQyCitPTiB0LnRp ZCA9IHNpZDEKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCUlOU0VSVCBWQUxVRVMgKHNpZDEs IGRlbHRhLCBzdmFsKTsKKworLS0gdHJ5IGFjY2Vzc2luZyBjb2x1bW5zIGZyb20gZWl0aGVy IHNpZGUgb2YgdGhlIHNvdXJjZSBqb2luCitNRVJHRSBJTlRPIGNqX3RhcmdldCB0CitVU0lO RyBjal9zb3VyY2UyIHMyCisJSU5ORVIgSk9JTiBjal9zb3VyY2UxIHMxIE9OIHNpZDEgPSBz aWQyIEFORCBzY2F0ID0gMjAKK09OIHQudGlkID0gc2lkMQorV0hFTiBOT1QgTUFUQ0hFRCBU SEVOCisJSU5TRVJUIFZBTFVFUyAoc2lkMiwgZGVsdGEsIHN2YWwpCitXSEVOIE1BVENIRUQg VEhFTgorCURFTEVURTsKKworLS0gc29tZSBzaW1wbGUgZXhwcmVzc2lvbnMgaW4gSU5TRVJU IHRhcmdldGxpc3QKK01FUkdFIElOVE8gY2pfdGFyZ2V0IHQKK1VTSU5HIGNqX3NvdXJjZTIg czIKKwlJTk5FUiBKT0lOIGNqX3NvdXJjZTEgczEgT04gc2lkMSA9IHNpZDIKK09OIHQudGlk ID0gc2lkMQorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIFZBTFVFUyAoc2lkMiwg ZGVsdGEgKyBzY2F0LCBzdmFsKQorV0hFTiBNQVRDSEVEIFRIRU4KKwlVUERBVEUgU0VUIHZh bCA9IHZhbCB8fCAnIHVwZGF0ZWQgYnkgbWVyZ2UnOworCitNRVJHRSBJTlRPIGNqX3Rhcmdl dCB0CitVU0lORyBjal9zb3VyY2UyIHMyCisJSU5ORVIgSk9JTiBjal9zb3VyY2UxIHMxIE9O IHNpZDEgPSBzaWQyIEFORCBzY2F0ID0gMjAKK09OIHQudGlkID0gc2lkMQorV0hFTiBNQVRD SEVEIFRIRU4KKwlVUERBVEUgU0VUIHZhbCA9IHZhbCB8fCAnICcgfHwgZGVsdGE6OnRleHQ7 CisKK1NFTEVDVCAqIEZST00gY2pfdGFyZ2V0OworCitBTFRFUiBUQUJMRSBjal9zb3VyY2Ux IFJFTkFNRSBDT0xVTU4gc2lkMSBUTyBzaWQ7CitBTFRFUiBUQUJMRSBjal9zb3VyY2UyIFJF TkFNRSBDT0xVTU4gc2lkMiBUTyBzaWQ7CisKK1RSVU5DQVRFIGNqX3RhcmdldDsKKworTUVS R0UgSU5UTyBjal90YXJnZXQgdAorVVNJTkcgY2pfc291cmNlMSBzMQorCUlOTkVSIEpPSU4g Y2pfc291cmNlMiBzMiBPTiBzMS5zaWQgPSBzMi5zaWQKK09OIHQudGlkID0gczEuc2lkCitX SEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgVkFMVUVTIChzMi5zaWQsIGRlbHRhLCBz dmFsKTsKKworRFJPUCBUQUJMRSBjal9zb3VyY2UyLCBjal9zb3VyY2UxLCBjal90YXJnZXQ7 CisKKy0tIEZ1bmN0aW9uIHNjYW5zCitDUkVBVEUgVEFCTEUgZnNfdGFyZ2V0IChhIGludCwg YiBpbnQsIGMgdGV4dCk7CitNRVJHRSBJTlRPIGZzX3RhcmdldCB0CitVU0lORyBnZW5lcmF0 ZV9zZXJpZXMoMSwxMDAsMSkgQVMgaWQKK09OIHQuYSA9IGlkCitXSEVOIE1BVENIRUQgVEhF TgorCVVQREFURSBTRVQgYiA9IGIgKyBpZAorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5T RVJUIFZBTFVFUyAoaWQsIC0xKTsKKworTUVSR0UgSU5UTyBmc190YXJnZXQgdAorVVNJTkcg Z2VuZXJhdGVfc2VyaWVzKDEsMTAwLDIpIEFTIGlkCitPTiB0LmEgPSBpZAorV0hFTiBNQVRD SEVEIFRIRU4KKwlVUERBVEUgU0VUIGIgPSBiICsgaWQsIGMgPSAndXBkYXRlZCAnfHwgaWQu Kjo6dGV4dAorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIFZBTFVFUyAoaWQsIC0x LCAnaW5zZXJ0ZWQgJyB8fCBpZC4qOjp0ZXh0KTsKKworU0VMRUNUIGNvdW50KCopIEZST00g ZnNfdGFyZ2V0OworRFJPUCBUQUJMRSBmc190YXJnZXQ7CisKKy0tIFNFUklBTElaQUJMRSB0 ZXN0CistLSBoYW5kbGVkIGluIGlzb2xhdGlvbiB0ZXN0cworCistLSBJbmhlcml0YW5jZS1i YXNlZCBwYXJ0aXRpb25pbmcKK0NSRUFURSBUQUJMRSBtZWFzdXJlbWVudCAoCisgICAgY2l0 eV9pZCAgICAgICAgIGludCBub3QgbnVsbCwKKyAgICBsb2dkYXRlICAgICAgICAgZGF0ZSBu b3QgbnVsbCwKKyAgICBwZWFrdGVtcCAgICAgICAgaW50LAorICAgIHVuaXRzYWxlcyAgICAg ICBpbnQKKyk7CitDUkVBVEUgVEFCTEUgbWVhc3VyZW1lbnRfeTIwMDZtMDIgKAorICAgIENI RUNLICggbG9nZGF0ZSA+PSBEQVRFICcyMDA2LTAyLTAxJyBBTkQgbG9nZGF0ZSA8IERBVEUg JzIwMDYtMDMtMDEnICkKKykgSU5IRVJJVFMgKG1lYXN1cmVtZW50KTsKK0NSRUFURSBUQUJM RSBtZWFzdXJlbWVudF95MjAwNm0wMyAoCisgICAgQ0hFQ0sgKCBsb2dkYXRlID49IERBVEUg JzIwMDYtMDMtMDEnIEFORCBsb2dkYXRlIDwgREFURSAnMjAwNi0wNC0wMScgKQorKSBJTkhF UklUUyAobWVhc3VyZW1lbnQpOworQ1JFQVRFIFRBQkxFIG1lYXN1cmVtZW50X3kyMDA3bTAx ICgKKyAgICBmaWxsZXIgICAgICAgICAgdGV4dCwKKyAgICBwZWFrdGVtcCAgICAgICAgaW50 LAorICAgIGxvZ2RhdGUgICAgICAgICBkYXRlIG5vdCBudWxsLAorICAgIGNpdHlfaWQgICAg ICAgICBpbnQgbm90IG51bGwsCisgICAgdW5pdHNhbGVzICAgICAgIGludAorICAgIENIRUNL ICggbG9nZGF0ZSA+PSBEQVRFICcyMDA3LTAxLTAxJyBBTkQgbG9nZGF0ZSA8IERBVEUgJzIw MDctMDItMDEnKQorKTsKK0FMVEVSIFRBQkxFIG1lYXN1cmVtZW50X3kyMDA3bTAxIERST1Ag Q09MVU1OIGZpbGxlcjsKK0FMVEVSIFRBQkxFIG1lYXN1cmVtZW50X3kyMDA3bTAxIElOSEVS SVQgbWVhc3VyZW1lbnQ7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIG1lYXN1cmVt ZW50X2luc2VydF90cmlnZ2VyKCkKK1JFVFVSTlMgVFJJR0dFUiBBUyAkJAorQkVHSU4KKyAg ICBJRiAoIE5FVy5sb2dkYXRlID49IERBVEUgJzIwMDYtMDItMDEnIEFORAorICAgICAgICAg TkVXLmxvZ2RhdGUgPCBEQVRFICcyMDA2LTAzLTAxJyApIFRIRU4KKyAgICAgICAgSU5TRVJU IElOVE8gbWVhc3VyZW1lbnRfeTIwMDZtMDIgVkFMVUVTIChORVcuKik7CisgICAgRUxTSUYg KCBORVcubG9nZGF0ZSA+PSBEQVRFICcyMDA2LTAzLTAxJyBBTkQKKyAgICAgICAgICAgIE5F Vy5sb2dkYXRlIDwgREFURSAnMjAwNi0wNC0wMScgKSBUSEVOCisgICAgICAgIElOU0VSVCBJ TlRPIG1lYXN1cmVtZW50X3kyMDA2bTAzIFZBTFVFUyAoTkVXLiopOworICAgIEVMU0lGICgg TkVXLmxvZ2RhdGUgPj0gREFURSAnMjAwNy0wMS0wMScgQU5ECisgICAgICAgICAgICBORVcu bG9nZGF0ZSA8IERBVEUgJzIwMDctMDItMDEnICkgVEhFTgorICAgICAgICBJTlNFUlQgSU5U TyBtZWFzdXJlbWVudF95MjAwN20wMSAoY2l0eV9pZCwgbG9nZGF0ZSwgcGVha3RlbXAsIHVu aXRzYWxlcykKKyAgICAgICAgICAgIFZBTFVFUyAoTkVXLiopOworICAgIEVMU0UKKyAgICAg ICAgUkFJU0UgRVhDRVBUSU9OICdEYXRlIG91dCBvZiByYW5nZS4gIEZpeCB0aGUgbWVhc3Vy ZW1lbnRfaW5zZXJ0X3RyaWdnZXIoKSBmdW5jdGlvbiEnOworICAgIEVORCBJRjsKKyAgICBS RVRVUk4gTlVMTDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWwgOworQ1JFQVRFIFRSSUdH RVIgaW5zZXJ0X21lYXN1cmVtZW50X3RyaWdnZXIKKyAgICBCRUZPUkUgSU5TRVJUIE9OIG1l YXN1cmVtZW50CisgICAgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIG1lYXN1cmVt ZW50X2luc2VydF90cmlnZ2VyKCk7CitJTlNFUlQgSU5UTyBtZWFzdXJlbWVudCBWQUxVRVMg KDEsICcyMDA2LTAyLTEwJywgMzUsIDEwKTsKK0lOU0VSVCBJTlRPIG1lYXN1cmVtZW50IFZB TFVFUyAoMSwgJzIwMDYtMDItMTYnLCA0NSwgMjApOworSU5TRVJUIElOVE8gbWVhc3VyZW1l bnQgVkFMVUVTICgxLCAnMjAwNi0wMy0xNycsIDI1LCAxMCk7CitJTlNFUlQgSU5UTyBtZWFz dXJlbWVudCBWQUxVRVMgKDEsICcyMDA2LTAzLTI3JywgMTUsIDQwKTsKK0lOU0VSVCBJTlRP IG1lYXN1cmVtZW50IFZBTFVFUyAoMSwgJzIwMDctMDEtMTUnLCAxMCwgMTApOworSU5TRVJU IElOVE8gbWVhc3VyZW1lbnQgVkFMVUVTICgxLCAnMjAwNy0wMS0xNycsIDEwLCAxMCk7CisK K1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBtZWFzdXJlbWVudCBPUkRFUiBC WSBjaXR5X2lkLCBsb2dkYXRlOworCitDUkVBVEUgVEFCTEUgbmV3X21lYXN1cmVtZW50IChM SUtFIG1lYXN1cmVtZW50KTsKK0lOU0VSVCBJTlRPIG5ld19tZWFzdXJlbWVudCBWQUxVRVMg KDEsICcyMDA2LTAzLTAxJywgMjAsIDEwKTsKK0lOU0VSVCBJTlRPIG5ld19tZWFzdXJlbWVu dCBWQUxVRVMgKDEsICcyMDA2LTAyLTE2JywgNTAsIDEwKTsKK0lOU0VSVCBJTlRPIG5ld19t ZWFzdXJlbWVudCBWQUxVRVMgKDIsICcyMDA2LTAyLTEwJywgMjAsIDIwKTsKK0lOU0VSVCBJ TlRPIG5ld19tZWFzdXJlbWVudCBWQUxVRVMgKDEsICcyMDA2LTAzLTI3JywgTlVMTCwgTlVM TCk7CitJTlNFUlQgSU5UTyBuZXdfbWVhc3VyZW1lbnQgVkFMVUVTICgxLCAnMjAwNy0wMS0x NycsIE5VTEwsIE5VTEwpOworSU5TRVJUIElOVE8gbmV3X21lYXN1cmVtZW50IFZBTFVFUyAo MSwgJzIwMDctMDEtMTUnLCA1LCBOVUxMKTsKK0lOU0VSVCBJTlRPIG5ld19tZWFzdXJlbWVu dCBWQUxVRVMgKDEsICcyMDA3LTAxLTE2JywgMTAsIDEwKTsKKworTUVSR0UgaW50byBtZWFz dXJlbWVudCBtCisgVVNJTkcgbmV3X21lYXN1cmVtZW50IG5tIE9OCisgICAgICAobS5jaXR5 X2lkID0gbm0uY2l0eV9pZCBhbmQgbS5sb2dkYXRlPW5tLmxvZ2RhdGUpCitXSEVOIE1BVENI RUQgQU5EIG5tLnBlYWt0ZW1wIElTIE5VTEwgVEhFTiBERUxFVEUKK1dIRU4gTUFUQ0hFRCBU SEVOIFVQREFURQorICAgICBTRVQgcGVha3RlbXAgPSBncmVhdGVzdChtLnBlYWt0ZW1wLCBu bS5wZWFrdGVtcCksCisgICAgICAgIHVuaXRzYWxlcyA9IG0udW5pdHNhbGVzICsgY29hbGVz Y2Uobm0udW5pdHNhbGVzLCAwKQorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOIElOU0VSVAorICAg ICAoY2l0eV9pZCwgbG9nZGF0ZSwgcGVha3RlbXAsIHVuaXRzYWxlcykKKyAgIFZBTFVFUyAo Y2l0eV9pZCwgbG9nZGF0ZSwgcGVha3RlbXAsIHVuaXRzYWxlcyk7CisKK1NFTEVDVCB0YWJs ZW9pZDo6cmVnY2xhc3MsICogRlJPTSBtZWFzdXJlbWVudCBPUkRFUiBCWSBjaXR5X2lkLCBs b2dkYXRlOworRFJPUCBUQUJMRSBtZWFzdXJlbWVudCwgbmV3X21lYXN1cmVtZW50IENBU0NB REU7CitEUk9QIEZVTkNUSU9OIG1lYXN1cmVtZW50X2luc2VydF90cmlnZ2VyKCk7CisKKy0t IHByZXBhcmUKKworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworRFJPUCBUQUJMRSB0 YXJnZXQsIHRhcmdldDI7CitEUk9QIFRBQkxFIHNvdXJjZSwgc291cmNlMjsKK0RST1AgRlVO Q1RJT04gbWVyZ2VfdHJpZ2Z1bmMoKTsKK0RST1AgVVNFUiBtZXJnZV9wcml2czsKK0RST1Ag VVNFUiBtZXJnZV9ub19wcml2czsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3ByaXZpbGVnZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHJpdmlsZWdlcy5zcWwK aW5kZXggYzhjNTQ1YjY0Yy4uMzIyODU3Mjg4MCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcHJpdmlsZWdlcy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHJp dmlsZWdlcy5zcWwKQEAgLTQ1OSw2ICs0NTksMTE0IEBAIFVQREFURSBhdGVzdDUgU0VUIG9u ZSA9IDE7IC0tIGZhaWwKIFNFTEVDVCBhdGVzdDYgRlJPTSBhdGVzdDY7IC0tIG9rCiBDT1BZ IGF0ZXN0NiBUTyBzdGRvdXQ7IC0tIG9rCiAKKy0tIHRlc3QgY29sdW1uIHByaXZpbGVnZXMg d2l0aCBNRVJHRQorU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNl cjE7CitDUkVBVEUgVEFCTEUgbXRhcmdldCAoYSBpbnQsIGIgdGV4dCk7CitDUkVBVEUgVEFC TEUgbXNvdXJjZSAoYSBpbnQsIGIgdGV4dCk7CitJTlNFUlQgSU5UTyBtdGFyZ2V0IFZBTFVF UyAoMSwgJ2luaXQxJyksICgyLCAnaW5pdDInKTsKK0lOU0VSVCBJTlRPIG1zb3VyY2UgVkFM VUVTICgxLCAnc291cmNlMScpLCAoMiwgJ3NvdXJjZTInKSwgKDMsICdzb3VyY2UzJyk7CisK K0dSQU5UIFNFTEVDVCAoYSkgT04gbXNvdXJjZSBUTyByZWdyZXNzX3ByaXZfdXNlcjQ7CitH UkFOVCBTRUxFQ1QgKGEpIE9OIG10YXJnZXQgVE8gcmVncmVzc19wcml2X3VzZXI0OworR1JB TlQgSU5TRVJUIChhLGIpIE9OIG10YXJnZXQgVE8gcmVncmVzc19wcml2X3VzZXI0OworR1JB TlQgVVBEQVRFIChiKSBPTiBtdGFyZ2V0IFRPIHJlZ3Jlc3NfcHJpdl91c2VyNDsKKworU0VU IFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjQ7CisKKy0tCistLSB0 ZXN0IHNvdXJjZSBwcml2aWxlZ2VzCistLQorCistLSBmYWlsIChubyBTRUxFQ1QgcHJpdiBv biBzLmIpCitNRVJHRSBJTlRPIG10YXJnZXQgdCBVU0lORyBtc291cmNlIHMgT04gdC5hID0g cy5hCitXSEVOIE1BVENIRUQgVEhFTgorCVVQREFURSBTRVQgYiA9IHMuYgorV0hFTiBOT1Qg TUFUQ0hFRCBUSEVOCisJSU5TRVJUIFZBTFVFUyAoYSwgTlVMTCk7CisKKy0tIGZhaWwgKHMu YiB1c2VkIGluIHRoZSBJTlNFUlRlZCB2YWx1ZXMpCitNRVJHRSBJTlRPIG10YXJnZXQgdCBV U0lORyBtc291cmNlIHMgT04gdC5hID0gcy5hCitXSEVOIE1BVENIRUQgVEhFTgorCVVQREFU RSBTRVQgYiA9ICd4JworV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJSU5TRVJUIFZBTFVFUyAo YSwgYik7CisKKy0tIGZhaWwgKHMuYiB1c2VkIGluIHRoZSBXSEVOIHF1YWxzKQorTUVSR0Ug SU5UTyBtdGFyZ2V0IHQgVVNJTkcgbXNvdXJjZSBzIE9OIHQuYSA9IHMuYQorV0hFTiBNQVRD SEVEIEFORCBzLmIgPSAneCcgVEhFTgorCVVQREFURSBTRVQgYiA9ICd4JworV0hFTiBOT1Qg TUFUQ0hFRCBUSEVOCisJSU5TRVJUIFZBTFVFUyAoYSwgTlVMTCk7CisKKy0tIHRoaXMgc2hv dWxkIGJlIG9rIHNpbmNlIG9ubHkgcy5hIGlzIGFjY2Vzc2VkCitCRUdJTjsKK01FUkdFIElO VE8gbXRhcmdldCB0IFVTSU5HIG1zb3VyY2UgcyBPTiB0LmEgPSBzLmEKK1dIRU4gTUFUQ0hF RCBUSEVOCisJVVBEQVRFIFNFVCBiID0gJ29rJworV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJ SU5TRVJUIFZBTFVFUyAoYSwgTlVMTCk7CitST0xMQkFDSzsKKworU0VUIFNFU1NJT04gQVVU SE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjE7CitHUkFOVCBTRUxFQ1QgKGIpIE9OIG1z b3VyY2UgVE8gcmVncmVzc19wcml2X3VzZXI0OworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElP TiByZWdyZXNzX3ByaXZfdXNlcjQ7CisKKy0tIHNob3VsZCBub3cgYmUgb2sKK0JFR0lOOwor TUVSR0UgSU5UTyBtdGFyZ2V0IHQgVVNJTkcgbXNvdXJjZSBzIE9OIHQuYSA9IHMuYQorV0hF TiBNQVRDSEVEIFRIRU4KKwlVUERBVEUgU0VUIGIgPSBzLmIKK1dIRU4gTk9UIE1BVENIRUQg VEhFTgorCUlOU0VSVCBWQUxVRVMgKGEsIGIpOworUk9MTEJBQ0s7CisKKy0tCistLSB0ZXN0 IHRhcmdldCBwcml2aWxlZ2VzCistLQorCistLSBmYWlsIChubyBTRUxFQ1QgcHJpdiBvbiB0 LmIpCitNRVJHRSBJTlRPIG10YXJnZXQgdCBVU0lORyBtc291cmNlIHMgT04gdC5hID0gcy5h CitXSEVOIE1BVENIRUQgVEhFTgorCVVQREFURSBTRVQgYiA9IHQuYgorV0hFTiBOT1QgTUFU Q0hFRCBUSEVOCisJSU5TRVJUIFZBTFVFUyAoYSwgTlVMTCk7CisKKy0tIGZhaWwgKG5vIFVQ REFURSBvbiB0LmEpCitNRVJHRSBJTlRPIG10YXJnZXQgdCBVU0lORyBtc291cmNlIHMgT04g dC5hID0gcy5hCitXSEVOIE1BVENIRUQgVEhFTgorCVVQREFURSBTRVQgYiA9IHMuYiwgYSA9 IHQuYSArIDEKK1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCUlOU0VSVCBWQUxVRVMgKGEsIGIp OworCistLSBmYWlsIChubyBTRUxFQ1Qgb24gdC5iKQorTUVSR0UgSU5UTyBtdGFyZ2V0IHQg VVNJTkcgbXNvdXJjZSBzIE9OIHQuYSA9IHMuYQorV0hFTiBNQVRDSEVEIEFORCB0LmIgSVMg Tk9UIE5VTEwgVEhFTgorCVVQREFURSBTRVQgYiA9IHMuYgorV0hFTiBOT1QgTUFUQ0hFRCBU SEVOCisJSU5TRVJUIFZBTFVFUyAoYSwgYik7CisKKy0tIG9rCitCRUdJTjsKK01FUkdFIElO VE8gbXRhcmdldCB0IFVTSU5HIG1zb3VyY2UgcyBPTiB0LmEgPSBzLmEKK1dIRU4gTUFUQ0hF RCBUSEVOCisJVVBEQVRFIFNFVCBiID0gcy5iOworUk9MTEJBQ0s7CisKKy0tIGZhaWwgKG5v IERFTEVURSkKK01FUkdFIElOVE8gbXRhcmdldCB0IFVTSU5HIG1zb3VyY2UgcyBPTiB0LmEg PSBzLmEKK1dIRU4gTUFUQ0hFRCBBTkQgdC5iIElTIE5PVCBOVUxMIFRIRU4KKwlERUxFVEU7 CisKKy0tIGdyYW50IGRlbGV0ZSBwcml2aWxlZ2VzCitTRVQgU0VTU0lPTiBBVVRIT1JJWkFU SU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKK0dSQU5UIERFTEVURSBPTiBtdGFyZ2V0IFRPIHJl Z3Jlc3NfcHJpdl91c2VyNDsKKy0tIHNob3VsZCBiZSBvayBub3cKK0JFR0lOOworTUVSR0Ug SU5UTyBtdGFyZ2V0IHQgVVNJTkcgbXNvdXJjZSBzIE9OIHQuYSA9IHMuYQorV0hFTiBNQVRD SEVEIEFORCB0LmIgSVMgTk9UIE5VTEwgVEhFTgorCURFTEVURTsKK1JPTExCQUNLOworCiAt LSBjaGVjayBlcnJvciByZXBvcnRpbmcgd2l0aCBjb2x1bW4gcHJpdnMKIFNFVCBTRVNTSU9O IEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIxOwogQ1JFQVRFIFRBQkxFIHQxIChj MSBpbnQsIGMyIGludCwgYzMgaW50IGNoZWNrIChjMyA8IDUpLCBwcmltYXJ5IGtleSAoYzEs IGMyKSk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9yb3dzZWN1cml0eS5z cWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9yb3dzZWN1cml0eS5zcWwKaW5kZXggNDRkZWI0 MmJhZC4uNmViZTNhNWQzMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcm93 c2VjdXJpdHkuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jvd3NlY3VyaXR5LnNx bApAQCAtODEwLDYgKzgxMCwxNjIgQEAgSU5TRVJUIElOVE8gZG9jdW1lbnQgVkFMVUVTICg0 LCAoU0VMRUNUIGNpZCBmcm9tIGNhdGVnb3J5IFdIRVJFIGNuYW1lID0gJ25vdmVsJykKIElO U0VSVCBJTlRPIGRvY3VtZW50IFZBTFVFUyAoMSwgKFNFTEVDVCBjaWQgZnJvbSBjYXRlZ29y eSBXSEVSRSBjbmFtZSA9ICdub3ZlbCcpLCAxLCAncmVncmVzc19ybHNfYm9iJywgJ215IGZp cnN0IG5vdmVsJykKICAgICBPTiBDT05GTElDVCAoZGlkKSBETyBVUERBVEUgU0VUIGRhdXRo b3IgPSAncmVncmVzc19ybHNfY2Fyb2wnOwogCistLQorLS0gTUVSR0UKKy0tCitSRVNFVCBT RVNTSU9OIEFVVEhPUklaQVRJT047CitEUk9QIFBPTElDWSBwM193aXRoX2FsbCBPTiBkb2N1 bWVudDsKKworQUxURVIgVEFCTEUgZG9jdW1lbnQgQUREIENPTFVNTiBkbm90ZXMgdGV4dCBE RUZBVUxUICcnOworLS0gYWxsIGRvY3VtZW50cyBhcmUgcmVhZGFibGUKK0NSRUFURSBQT0xJ Q1kgcDEgT04gZG9jdW1lbnQgRk9SIFNFTEVDVCBVU0lORyAodHJ1ZSk7CistLSBvbmUgbWF5 IGluc2VydCBkb2N1bWVudHMgb25seSBhdXRob3JlZCBieSB0aGVtCitDUkVBVEUgUE9MSUNZ IHAyIE9OIGRvY3VtZW50IEZPUiBJTlNFUlQgV0lUSCBDSEVDSyAoZGF1dGhvciA9IGN1cnJl bnRfdXNlcik7CistLSBvbmUgbWF5IG9ubHkgdXBkYXRlIGRvY3VtZW50cyBpbiAnbm92ZWwn IGNhdGVnb3J5CitDUkVBVEUgUE9MSUNZIHAzIE9OIGRvY3VtZW50IEZPUiBVUERBVEUKKyAg VVNJTkcgKGNpZCA9IChTRUxFQ1QgY2lkIGZyb20gY2F0ZWdvcnkgV0hFUkUgY25hbWUgPSAn bm92ZWwnKSkKKyAgV0lUSCBDSEVDSyAoZGF1dGhvciA9IGN1cnJlbnRfdXNlcik7CistLSBv bmUgbWF5IG9ubHkgZGVsZXRlIGRvY3VtZW50cyBpbiAnbWFuZ2EnIGNhdGVnb3J5CitDUkVB VEUgUE9MSUNZIHA0IE9OIGRvY3VtZW50IEZPUiBERUxFVEUKKyAgVVNJTkcgKGNpZCA9IChT RUxFQ1QgY2lkIGZyb20gY2F0ZWdvcnkgV0hFUkUgY25hbWUgPSAnbWFuZ2EnKSk7CisKK1NF TEVDVCAqIEZST00gZG9jdW1lbnQ7CisKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVn cmVzc19ybHNfYm9iOworCistLSBGYWlscywgc2luY2UgdXBkYXRlIHZpb2xhdGVzIFdJVEgg Q0hFQ0sgcXVhbCBvbiBkYXV0aG9yCitNRVJHRSBJTlRPIGRvY3VtZW50IGQKK1VTSU5HIChT RUxFQ1QgMSBhcyBzZGlkKSBzCitPTiBkaWQgPSBzLnNkaWQKK1dIRU4gTUFUQ0hFRCBUSEVO CisJVVBEQVRFIFNFVCBkbm90ZXMgPSBkbm90ZXMgfHwgJyBub3RlcyBhZGRlZCBieSBtZXJn ZTEgJywgZGF1dGhvciA9ICdyZWdyZXNzX3Jsc19hbGljZSc7CisKKy0tIFNob3VsZCBiZSBP SyBzaW5jZSBVU0lORyBhbmQgV0lUSCBDSEVDSyBxdWFscyBwYXNzCitNRVJHRSBJTlRPIGRv Y3VtZW50IGQKK1VTSU5HIChTRUxFQ1QgMSBhcyBzZGlkKSBzCitPTiBkaWQgPSBzLnNkaWQK K1dIRU4gTUFUQ0hFRCBUSEVOCisJVVBEQVRFIFNFVCBkbm90ZXMgPSBkbm90ZXMgfHwgJyBu b3RlcyBhZGRlZCBieSBtZXJnZTIgJzsKKworLS0gRXZlbiB3aGVuIGRhdXRob3IgaXMgdXBk YXRlZCBleHBsaWNpdGx5LCBidXQgdG8gdGhlIGV4aXN0aW5nIHZhbHVlCitNRVJHRSBJTlRP IGRvY3VtZW50IGQKK1VTSU5HIChTRUxFQ1QgMSBhcyBzZGlkKSBzCitPTiBkaWQgPSBzLnNk aWQKK1dIRU4gTUFUQ0hFRCBUSEVOCisJVVBEQVRFIFNFVCBkbm90ZXMgPSBkbm90ZXMgfHwg JyBub3RlcyBhZGRlZCBieSBtZXJnZTMgJywgZGF1dGhvciA9ICdyZWdyZXNzX3Jsc19ib2In OworCistLSBUaGVyZSBpcyBhIE1BVENIIGZvciBkaWQgPSAzLCBidXQgVVBEQVRFJ3MgVVNJ TkcgcXVhbCBkb2VzIG5vdCBhbGxvdworLS0gdXBkYXRpbmcgYW4gaXRlbSBpbiBjYXRlZ29y eSAnc2NpZW5jZSBmaWN0aW9uJworTUVSR0UgSU5UTyBkb2N1bWVudCBkCitVU0lORyAoU0VM RUNUIDMgYXMgc2RpZCkgcworT04gZGlkID0gcy5zZGlkCitXSEVOIE1BVENIRUQgVEhFTgor CVVQREFURSBTRVQgZG5vdGVzID0gZG5vdGVzIHx8ICcgbm90ZXMgYWRkZWQgYnkgbWVyZ2Ug JzsKKworLS0gVGhlIHNhbWUgdGhpbmcgd2l0aCBERUxFVEUgYWN0aW9uLCBidXQgZmFpbHMg YWdhaW4gYmVjYXVzZSBubyBwZXJtaXNzaW9ucworLS0gdG8gZGVsZXRlIGl0ZW1zIGluICdz Y2llbmNlIGZpY3Rpb24nIGNhdGVnb3J5IHRoYXQgZGlkIDMgYmVsb25ncyB0by4KK01FUkdF IElOVE8gZG9jdW1lbnQgZAorVVNJTkcgKFNFTEVDVCAzIGFzIHNkaWQpIHMKK09OIGRpZCA9 IHMuc2RpZAorV0hFTiBNQVRDSEVEIFRIRU4KKwlERUxFVEU7CisKKy0tIERvY3VtZW50IHdp dGggZGlkIDQgYmVsb25ncyB0byAnbWFuZ2EnIGNhdGVnb3J5IHdoaWNoIGlzIGFsbG93ZWQg Zm9yCistLSBkZWxldGlvbi4gQnV0IHRoaXMgZmFpbHMgYmVjYXVzZSB0aGUgVVBEQVRFIGFj dGlvbiBpcyBtYXRjaGVkIGZpcnN0IGFuZAorLS0gVVBEQVRFIHBvbGljeSBkb2VzIG5vdCBh bGxvdyB1cGRhdGlvbiBpbiB0aGUgY2F0ZWdvcnkuCitNRVJHRSBJTlRPIGRvY3VtZW50IGQK K1VTSU5HIChTRUxFQ1QgNCBhcyBzZGlkKSBzCitPTiBkaWQgPSBzLnNkaWQKK1dIRU4gTUFU Q0hFRCBBTkQgZG5vdGVzID0gJycgVEhFTgorCVVQREFURSBTRVQgZG5vdGVzID0gZG5vdGVz IHx8ICcgbm90ZXMgYWRkZWQgYnkgbWVyZ2UgJworV0hFTiBNQVRDSEVEIFRIRU4KKwlERUxF VEU7CisKKy0tIFVQREFURSBhY3Rpb24gaXMgbm90IG1hdGNoZWQgdGhpcyB0aW1lIGJlY2F1 c2Ugb2YgdGhlIFdIRU4gcXVhbC4KKy0tIERFTEVURSBzdGlsbCBmYWlscyBiZWNhdXNlIHJv bGUgcmVncmVzc19ybHNfYm9iIGRvZXMgbm90IGhhdmUgU0VMRUNUCistLSBwcml2aWxlZ2Vz IG9uICdtYW5nYScgY2F0ZWdvcnkgcm93IGluIHRoZSBjYXRlZ29yeSB0YWJsZS4KK01FUkdF IElOVE8gZG9jdW1lbnQgZAorVVNJTkcgKFNFTEVDVCA0IGFzIHNkaWQpIHMKK09OIGRpZCA9 IHMuc2RpZAorV0hFTiBNQVRDSEVEIEFORCBkbm90ZXMgPD4gJycgVEhFTgorCVVQREFURSBT RVQgZG5vdGVzID0gZG5vdGVzIHx8ICcgbm90ZXMgYWRkZWQgYnkgbWVyZ2UgJworV0hFTiBN QVRDSEVEIFRIRU4KKwlERUxFVEU7CisKK1NFTEVDVCAqIEZST00gZG9jdW1lbnQgV0hFUkUg ZGlkID0gNDsKKworLS0gU3dpdGNoIHRvIHJlZ3Jlc3NfcmxzX2Nhcm9sIHJvbGUgYW5kIHRy eSB0aGUgREVMRVRFIGFnYWluLiBJdCBzaG91bGQgc3VjY2VlZAorLS0gdGhpcyB0aW1lCitS RVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9O IHJlZ3Jlc3NfcmxzX2Nhcm9sOworCitNRVJHRSBJTlRPIGRvY3VtZW50IGQKK1VTSU5HIChT RUxFQ1QgNCBhcyBzZGlkKSBzCitPTiBkaWQgPSBzLnNkaWQKK1dIRU4gTUFUQ0hFRCBBTkQg ZG5vdGVzIDw+ICcnIFRIRU4KKwlVUERBVEUgU0VUIGRub3RlcyA9IGRub3RlcyB8fCAnIG5v dGVzIGFkZGVkIGJ5IG1lcmdlICcKK1dIRU4gTUFUQ0hFRCBUSEVOCisJREVMRVRFOworCist LSBTd2l0Y2ggYmFjayB0byByZWdyZXNzX3Jsc19ib2Igcm9sZQorUkVTRVQgU0VTU0lPTiBB VVRIT1JJWkFUSU9OOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3Jsc19i b2I7CisKKy0tIFRyeSBJTlNFUlQgYWN0aW9uLiBUaGlzIGZhaWxzIGJlY2F1c2Ugd2UgYXJl IHRyeWluZyB0byBpbnNlcnQKKy0tIGRhdXRob3IgPSByZWdyZXNzX3Jsc19kYXZlIGFuZCBJ TlNFUlQncyBXSVRIIENIRUNLIGRvZXMgbm90IGFsbG93CistLSB0aGF0CitNRVJHRSBJTlRP IGRvY3VtZW50IGQKK1VTSU5HIChTRUxFQ1QgMTIgYXMgc2RpZCkgcworT04gZGlkID0gcy5z ZGlkCitXSEVOIE1BVENIRUQgVEhFTgorCURFTEVURQorV0hFTiBOT1QgTUFUQ0hFRCBUSEVO CisJSU5TRVJUIFZBTFVFUyAoMTIsIDExLCAxLCAncmVncmVzc19ybHNfZGF2ZScsICdhbm90 aGVyIG5vdmVsJyk7CisKKy0tIFRoaXMgc2hvdWxkIGJlIGZpbmUKK01FUkdFIElOVE8gZG9j dW1lbnQgZAorVVNJTkcgKFNFTEVDVCAxMiBhcyBzZGlkKSBzCitPTiBkaWQgPSBzLnNkaWQK K1dIRU4gTUFUQ0hFRCBUSEVOCisJREVMRVRFCitXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwlJ TlNFUlQgVkFMVUVTICgxMiwgMTEsIDEsICdyZWdyZXNzX3Jsc19ib2InLCAnYW5vdGhlciBu b3ZlbCcpOworCistLSBvaworTUVSR0UgSU5UTyBkb2N1bWVudCBkCitVU0lORyAoU0VMRUNU IDEgYXMgc2RpZCkgcworT04gZGlkID0gcy5zZGlkCitXSEVOIE1BVENIRUQgVEhFTgorCVVQ REFURSBTRVQgZG5vdGVzID0gZG5vdGVzIHx8ICcgbm90ZXMgYWRkZWQgYnkgbWVyZ2U0ICcK K1dIRU4gTk9UIE1BVENIRUQgVEhFTgorCUlOU0VSVCBWQUxVRVMgKDEyLCAxMSwgMSwgJ3Jl Z3Jlc3NfcmxzX2JvYicsICdhbm90aGVyIG5vdmVsJyk7CisKKy0tIGRyb3AgYW5kIGNyZWF0 ZSBhIG5ldyBTRUxFQ1QgcG9saWN5IHdoaWNoIHByZXZlbnRzIHVzIGZyb20gcmVhZGluZwor LS0gYW55IGRvY3VtZW50IGV4Y2VwdCB3aXRoIGNhdGVnb3J5ICdtYWduYScKK1JFU0VUIFNF U1NJT04gQVVUSE9SSVpBVElPTjsKK0RST1AgUE9MSUNZIHAxIE9OIGRvY3VtZW50OworQ1JF QVRFIFBPTElDWSBwMSBPTiBkb2N1bWVudCBGT1IgU0VMRUNUCisgIFVTSU5HIChjaWQgPSAo U0VMRUNUIGNpZCBmcm9tIGNhdGVnb3J5IFdIRVJFIGNuYW1lID0gJ21hbmdhJykpOworCitT RVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcmxzX2JvYjsKKworLS0gTUVSR0Ug Y2FuIG5vIGxvbmdlciBzZWUgdGhlIG1hdGNoaW5nIHJvdyBhbmQgaGVuY2UgYXR0ZW1wdHMg dGhlCistLSBOT1QgTUFUQ0hFRCBhY3Rpb24sIHdoaWNoIHJlc3VsdHMgaW4gdW5pcXVlIGtl eSB2aW9sYXRpb24KK01FUkdFIElOVE8gZG9jdW1lbnQgZAorVVNJTkcgKFNFTEVDVCAxIGFz IHNkaWQpIHMKK09OIGRpZCA9IHMuc2RpZAorV0hFTiBNQVRDSEVEIFRIRU4KKwlVUERBVEUg U0VUIGRub3RlcyA9IGRub3RlcyB8fCAnIG5vdGVzIGFkZGVkIGJ5IG1lcmdlNSAnCitXSEVO IE5PVCBNQVRDSEVEIFRIRU4KKwlJTlNFUlQgVkFMVUVTICgxMiwgMTEsIDEsICdyZWdyZXNz X3Jsc19ib2InLCAnYW5vdGhlciBub3ZlbCcpOworCitSRVNFVCBTRVNTSU9OIEFVVEhPUkla QVRJT047CistLSBkcm9wIHRoZSByZXN0cmljdGl2ZSBTRUxFQ1QgcG9saWN5IHNvIHRoYXQg d2UgY2FuIGxvb2sgYXQgdGhlCistLSBmaW5hbCBzdGF0ZSBvZiB0aGUgdGFibGUKK0RST1Ag UE9MSUNZIHAxIE9OIGRvY3VtZW50OworLS0gSnVzdCBjaGVjayBldmVyeXRoaW5nIHdlbnQg cGVyIHBsYW4KK1NFTEVDVCAqIEZST00gZG9jdW1lbnQ7CisKIC0tCiAtLSBST0xFL0dST1VQ CiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnVsZXMuc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcnVsZXMuc3FsCmluZGV4IDhiZGFiNmRlYzMuLmE3ZGZkODY4 YjIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3J1bGVzLnNxbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9ydWxlcy5zcWwKQEAgLTEyMzIsNiArMTIzMiwzOSBAQCBD UkVBVEUgUlVMRSBydWxlc19wYXJ0ZWRfdGFibGVfaW5zZXJ0IEFTIE9OIElOU0VSVCB0byBy dWxlc19wYXJ0ZWRfdGFibGUKIEFMVEVSIFJVTEUgcnVsZXNfcGFydGVkX3RhYmxlX2luc2Vy dCBPTiBydWxlc19wYXJ0ZWRfdGFibGUgUkVOQU1FIFRPIHJ1bGVzX3BhcnRlZF90YWJsZV9p bnNlcnRfcmVkaXJlY3Q7CiBEUk9QIFRBQkxFIHJ1bGVzX3BhcnRlZF90YWJsZTsKIAorLS0K Ky0tIHRlc3QgTUVSR0UKKy0tCitDUkVBVEUgVEFCTEUgcnVsZV9tZXJnZTEgKGEgaW50LCBi IHRleHQpOworQ1JFQVRFIFRBQkxFIHJ1bGVfbWVyZ2UyIChhIGludCwgYiB0ZXh0KTsKK0NS RUFURSBSVUxFIHJ1bGUxIEFTIE9OIElOU0VSVCBUTyBydWxlX21lcmdlMQorCURPIElOU1RF QUQgSU5TRVJUIElOVE8gcnVsZV9tZXJnZTIgVkFMVUVTIChORVcuKik7CitDUkVBVEUgUlVM RSBydWxlMiBBUyBPTiBVUERBVEUgVE8gcnVsZV9tZXJnZTEKKwlETyBJTlNURUFEIFVQREFU RSBydWxlX21lcmdlMiBTRVQgYSA9IE5FVy5hLCBiID0gTkVXLmIKKwlXSEVSRSBhID0gT0xE LmE7CitDUkVBVEUgUlVMRSBydWxlMyBBUyBPTiBERUxFVEUgVE8gcnVsZV9tZXJnZTEKKwlE TyBJTlNURUFEIERFTEVURSBGUk9NIHJ1bGVfbWVyZ2UyIFdIRVJFIGEgPSBPTEQuYTsKKwor LS0gTUVSR0Ugbm90IHN1cHBvcnRlZCBmb3IgdGFibGUgd2l0aCBydWxlcworTUVSR0UgSU5U TyBydWxlX21lcmdlMSB0IFVTSU5HIChTRUxFQ1QgMSBBUyBhKSBzCisJT04gdC5hID0gcy5h CisJV0hFTiBNQVRDSEVEIEFORCB0LmEgPCAyIFRIRU4KKwkJVVBEQVRFIFNFVCBiID0gYiB8 fCAnIHVwZGF0ZWQgYnkgbWVyZ2UnCisJV0hFTiBNQVRDSEVEIEFORCB0LmEgPiAyIFRIRU4K KwkJREVMRVRFCisJV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisJCUlOU0VSVCBWQUxVRVMgKHMu YSwgJycpOworCistLSBzaG91bGQgYmUgb2sgd2l0aCB0aGUgb3RoZXIgdGFibGUgdGhvdWdo CitNRVJHRSBJTlRPIHJ1bGVfbWVyZ2UyIHQgVVNJTkcgKFNFTEVDVCAxIEFTIGEpIHMKKwlP TiB0LmEgPSBzLmEKKwlXSEVOIE1BVENIRUQgQU5EIHQuYSA8IDIgVEhFTgorCQlVUERBVEUg U0VUIGIgPSBiIHx8ICcgdXBkYXRlZCBieSBtZXJnZScKKwlXSEVOIE1BVENIRUQgQU5EIHQu YSA+IDIgVEhFTgorCQlERUxFVEUKKwlXSEVOIE5PVCBNQVRDSEVEIFRIRU4KKwkJSU5TRVJU IFZBTFVFUyAocy5hLCAnJyk7CisKIC0tCiAtLSBUZXN0IGVuYWJsaW5nL2Rpc2FibGluZwog LS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RyaWdnZXJzLnNxbCBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3RyaWdnZXJzLnNxbAppbmRleCA0Y2MwOTYyNjVkLi44M2Nk MDBmNTRmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC90cmlnZ2Vycy5zcWwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJpZ2dlcnMuc3FsCkBAIC0yNDM5LDYgKzI0 MzksNTMgQEAgZGVsZXRlIGZyb20gc2VsZl9yZWYgd2hlcmUgYSA9IDE7CiAKIGRyb3AgdGFi bGUgc2VsZl9yZWY7CiAKKy0tCistLSB0ZXN0IHRyYW5zaXRpb24gdGFibGVzIHdpdGggTUVS R0UKKy0tCitjcmVhdGUgdGFibGUgbWVyZ2VfdGFyZ2V0X3RhYmxlIChhIGludCBwcmltYXJ5 IGtleSwgYiB0ZXh0KTsKK2NyZWF0ZSB0cmlnZ2VyIG1lcmdlX3RhcmdldF90YWJsZV9pbnNl cnRfdHJpZworICBhZnRlciBpbnNlcnQgb24gbWVyZ2VfdGFyZ2V0X3RhYmxlIHJlZmVyZW5j aW5nIG5ldyB0YWJsZSBhcyBuZXdfdGFibGUKKyAgZm9yIGVhY2ggc3RhdGVtZW50IGV4ZWN1 dGUgcHJvY2VkdXJlIGR1bXBfaW5zZXJ0KCk7CitjcmVhdGUgdHJpZ2dlciBtZXJnZV90YXJn ZXRfdGFibGVfdXBkYXRlX3RyaWcKKyAgYWZ0ZXIgdXBkYXRlIG9uIG1lcmdlX3RhcmdldF90 YWJsZSByZWZlcmVuY2luZyBvbGQgdGFibGUgYXMgb2xkX3RhYmxlIG5ldyB0YWJsZSBhcyBu ZXdfdGFibGUKKyAgZm9yIGVhY2ggc3RhdGVtZW50IGV4ZWN1dGUgcHJvY2VkdXJlIGR1bXBf dXBkYXRlKCk7CitjcmVhdGUgdHJpZ2dlciBtZXJnZV90YXJnZXRfdGFibGVfZGVsZXRlX3Ry aWcKKyAgYWZ0ZXIgZGVsZXRlIG9uIG1lcmdlX3RhcmdldF90YWJsZSByZWZlcmVuY2luZyBv bGQgdGFibGUgYXMgb2xkX3RhYmxlCisgIGZvciBlYWNoIHN0YXRlbWVudCBleGVjdXRlIHBy b2NlZHVyZSBkdW1wX2RlbGV0ZSgpOworCitjcmVhdGUgdGFibGUgbWVyZ2Vfc291cmNlX3Rh YmxlIChhIGludCwgYiB0ZXh0KTsKK2luc2VydCBpbnRvIG1lcmdlX3NvdXJjZV90YWJsZQor ICB2YWx1ZXMgKDEsICdpbml0aWFsMScpLCAoMiwgJ2luaXRpYWwyJyksCisJCSAoMywgJ2lu aXRpYWwzJyksICg0LCAnaW5pdGlhbDQnKTsKKworbWVyZ2UgaW50byBtZXJnZV90YXJnZXRf dGFibGUgdAordXNpbmcgbWVyZ2Vfc291cmNlX3RhYmxlIHMKK29uIHQuYSA9IHMuYQord2hl biBub3QgbWF0Y2hlZCB0aGVuCisgIGluc2VydCB2YWx1ZXMgKGEsIGIpOworCittZXJnZSBp bnRvIG1lcmdlX3RhcmdldF90YWJsZSB0Cit1c2luZyBtZXJnZV9zb3VyY2VfdGFibGUgcwor b24gdC5hID0gcy5hCit3aGVuIG1hdGNoZWQgYW5kIHMuYSA8PSAyIHRoZW4KKwl1cGRhdGUg c2V0IGIgPSB0LmIgfHwgJyB1cGRhdGVkIGJ5IG1lcmdlJword2hlbiBtYXRjaGVkIGFuZCBz LmEgPiAyIHRoZW4KKwlkZWxldGUKK3doZW4gbm90IG1hdGNoZWQgdGhlbgorICBpbnNlcnQg dmFsdWVzIChhLCBiKTsKKworbWVyZ2UgaW50byBtZXJnZV90YXJnZXRfdGFibGUgdAordXNp bmcgbWVyZ2Vfc291cmNlX3RhYmxlIHMKK29uIHQuYSA9IHMuYQord2hlbiBtYXRjaGVkIGFu ZCBzLmEgPD0gMiB0aGVuCisJdXBkYXRlIHNldCBiID0gdC5iIHx8ICcgdXBkYXRlZCBhZ2Fp biBieSBtZXJnZScKK3doZW4gbWF0Y2hlZCBhbmQgcy5hID4gMiB0aGVuCisJZGVsZXRlCit3 aGVuIG5vdCBtYXRjaGVkIHRoZW4KKyAgaW5zZXJ0IHZhbHVlcyAoYSwgYik7CisKK2Ryb3Ag dGFibGUgbWVyZ2Vfc291cmNlX3RhYmxlLCBtZXJnZV90YXJnZXRfdGFibGU7CisKIC0tIGNs ZWFudXAKIGRyb3AgZnVuY3Rpb24gZHVtcF9pbnNlcnQoKTsKIGRyb3AgZnVuY3Rpb24gZHVt cF91cGRhdGUoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGguc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aC5zcWwKaW5kZXggZTQ4MjE3NzU1Ny4uZjFl YTNhZTIyZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aC5zcWwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aC5zcWwKQEAgLTEyNzAsNiArMTI3MCw2MiBA QCBSRVRVUk5JTkcgaywgdjsKIAogRFJPUCBUQUJMRSB3aXRoejsKIAorLS0gV0lUSCByZWZl cmVuY2VkIGJ5IE1FUkdFIHN0YXRlbWVudAorQ1JFQVRFIFRBQkxFIG0gQVMgU0VMRUNUIGkg QVMgaywgKGkgfHwgJyB2Jyk6OnRleHQgdiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxNiwg MykgaTsKK0FMVEVSIFRBQkxFIG0gQUREIFVOSVFVRSAoayk7CisKK1dJVEggUkVDVVJTSVZF IGN0ZV9iYXNpYyBBUyAoU0VMRUNUIDEgYSwgJ2N0ZV9iYXNpYyB2YWwnIGIpCitNRVJHRSBJ TlRPIG0gVVNJTkcgKHNlbGVjdCAwIGssICdtZXJnZSBzb3VyY2UgU3ViUGxhbicgdikgbyBP TiBtLms9by5rCitXSEVOIE1BVENIRUQgVEhFTiBVUERBVEUgU0VUIHYgPSAoU0VMRUNUIGIg fHwgJyBtZXJnZSB1cGRhdGUnIEZST00gY3RlX2Jhc2ljIFdIRVJFIGN0ZV9iYXNpYy5hID0g bS5rIExJTUlUIDEpCitXSEVOIE5PVCBNQVRDSEVEIFRIRU4gSU5TRVJUIFZBTFVFUyhvLmss IG8udik7CisKKy0tIEJhc2ljOgorV0lUSCBjdGVfYmFzaWMgQVMgTUFURVJJQUxJWkVEIChT RUxFQ1QgMSBhLCAnY3RlX2Jhc2ljIHZhbCcgYikKK01FUkdFIElOVE8gbSBVU0lORyAoc2Vs ZWN0IDAgaywgJ21lcmdlIHNvdXJjZSBTdWJQbGFuJyB2IG9mZnNldCAwKSBvIE9OIG0uaz1v LmsKK1dIRU4gTUFUQ0hFRCBUSEVOIFVQREFURSBTRVQgdiA9IChTRUxFQ1QgYiB8fCAnIG1l cmdlIHVwZGF0ZScgRlJPTSBjdGVfYmFzaWMgV0hFUkUgY3RlX2Jhc2ljLmEgPSBtLmsgTElN SVQgMSkKK1dIRU4gTk9UIE1BVENIRUQgVEhFTiBJTlNFUlQgVkFMVUVTKG8uaywgby52KTsK Ky0tIEV4YW1pbmUKK1NFTEVDVCAqIEZST00gbSB3aGVyZSBrID0gMDsKKworLS0gU2VlIEVY UExBSU4gb3V0cHV0IGZvciBzYW1lIHF1ZXJ5OgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKQorV0lUSCBjdGVfYmFzaWMgQVMgTUFURVJJQUxJWkVEIChTRUxFQ1QgMSBhLCAnY3Rl X2Jhc2ljIHZhbCcgYikKK01FUkdFIElOVE8gbSBVU0lORyAoc2VsZWN0IDAgaywgJ21lcmdl IHNvdXJjZSBTdWJQbGFuJyB2IG9mZnNldCAwKSBvIE9OIG0uaz1vLmsKK1dIRU4gTUFUQ0hF RCBUSEVOIFVQREFURSBTRVQgdiA9IChTRUxFQ1QgYiB8fCAnIG1lcmdlIHVwZGF0ZScgRlJP TSBjdGVfYmFzaWMgV0hFUkUgY3RlX2Jhc2ljLmEgPSBtLmsgTElNSVQgMSkKK1dIRU4gTk9U IE1BVENIRUQgVEhFTiBJTlNFUlQgVkFMVUVTKG8uaywgby52KTsKKworLS0gSW5pdFBsYW4K K1dJVEggY3RlX2luaXQgQVMgTUFURVJJQUxJWkVEIChTRUxFQ1QgMSBhLCAnY3RlX2luaXQg dmFsJyBiKQorTUVSR0UgSU5UTyBtIFVTSU5HIChzZWxlY3QgMSBrLCAnbWVyZ2Ugc291cmNl IEluaXRQbGFuJyB2IG9mZnNldCAwKSBvIE9OIG0uaz1vLmsKK1dIRU4gTUFUQ0hFRCBUSEVO IFVQREFURSBTRVQgdiA9IChTRUxFQ1QgYiB8fCAnIG1lcmdlIHVwZGF0ZScgRlJPTSBjdGVf aW5pdCBXSEVSRSBhID0gMSBMSU1JVCAxKQorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOIElOU0VS VCBWQUxVRVMoby5rLCBvLnYpOworLS0gRXhhbWluZQorU0VMRUNUICogRlJPTSBtIHdoZXJl IGsgPSAxOworCistLSBTZWUgRVhQTEFJTiBvdXRwdXQgZm9yIHNhbWUgcXVlcnk6CitFWFBM QUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitXSVRIIGN0ZV9pbml0IEFTIE1BVEVSSUFMSVpF RCAoU0VMRUNUIDEgYSwgJ2N0ZV9pbml0IHZhbCcgYikKK01FUkdFIElOVE8gbSBVU0lORyAo c2VsZWN0IDEgaywgJ21lcmdlIHNvdXJjZSBJbml0UGxhbicgdiBvZmZzZXQgMCkgbyBPTiBt Lms9by5rCitXSEVOIE1BVENIRUQgVEhFTiBVUERBVEUgU0VUIHYgPSAoU0VMRUNUIGIgfHwg JyBtZXJnZSB1cGRhdGUnIEZST00gY3RlX2luaXQgV0hFUkUgYSA9IDEgTElNSVQgMSkKK1dI RU4gTk9UIE1BVENIRUQgVEhFTiBJTlNFUlQgVkFMVUVTKG8uaywgby52KTsKKworLS0gTUVS R0Ugc291cmNlIGNvbWVzIGZyb20gQ1RFOgorV0lUSCBtZXJnZV9zb3VyY2VfY3RlIEFTIE1B VEVSSUFMSVpFRCAoU0VMRUNUIDE1IGEsICdtZXJnZV9zb3VyY2VfY3RlIHZhbCcgYikKK01F UkdFIElOVE8gbSBVU0lORyAoc2VsZWN0ICogZnJvbSBtZXJnZV9zb3VyY2VfY3RlKSBvIE9O IG0uaz1vLmEKK1dIRU4gTUFUQ0hFRCBUSEVOIFVQREFURSBTRVQgdiA9IChTRUxFQ1QgYiB8 fCBtZXJnZV9zb3VyY2VfY3RlLio6OnRleHQgfHwgJyBtZXJnZSB1cGRhdGUnIEZST00gbWVy Z2Vfc291cmNlX2N0ZSBXSEVSRSBhID0gMTUpCitXSEVOIE5PVCBNQVRDSEVEIFRIRU4gSU5T RVJUIFZBTFVFUyhvLmEsIG8uYiB8fCAoU0VMRUNUIG1lcmdlX3NvdXJjZV9jdGUuKjo6dGV4 dCB8fCAnIG1lcmdlIGluc2VydCcgRlJPTSBtZXJnZV9zb3VyY2VfY3RlKSk7CistLSBFeGFt aW5lCitTRUxFQ1QgKiBGUk9NIG0gd2hlcmUgayA9IDE1OworCistLSBTZWUgRVhQTEFJTiBv dXRwdXQgZm9yIHNhbWUgcXVlcnk6CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitX SVRIIG1lcmdlX3NvdXJjZV9jdGUgQVMgTUFURVJJQUxJWkVEIChTRUxFQ1QgMTUgYSwgJ21l cmdlX3NvdXJjZV9jdGUgdmFsJyBiKQorTUVSR0UgSU5UTyBtIFVTSU5HIChzZWxlY3QgKiBm cm9tIG1lcmdlX3NvdXJjZV9jdGUpIG8gT04gbS5rPW8uYQorV0hFTiBNQVRDSEVEIFRIRU4g VVBEQVRFIFNFVCB2ID0gKFNFTEVDVCBiIHx8IG1lcmdlX3NvdXJjZV9jdGUuKjo6dGV4dCB8 fCAnIG1lcmdlIHVwZGF0ZScgRlJPTSBtZXJnZV9zb3VyY2VfY3RlIFdIRVJFIGEgPSAxNSkK K1dIRU4gTk9UIE1BVENIRUQgVEhFTiBJTlNFUlQgVkFMVUVTKG8uYSwgby5iIHx8IChTRUxF Q1QgbWVyZ2Vfc291cmNlX2N0ZS4qOjp0ZXh0IHx8ICcgbWVyZ2UgaW5zZXJ0JyBGUk9NIG1l cmdlX3NvdXJjZV9jdGUpKTsKKworRFJPUCBUQUJMRSBtOworCiAtLSBjaGVjayB0aGF0IHJ1 biB0byBjb21wbGV0aW9uIGhhcHBlbnMgaW4gcHJvcGVyIG9yZGVyaW5nCiAKIFRSVU5DQVRF IFRBQkxFIHk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGQ5YjgzZjc0NGYu LjFlNmI0NGVhM2YgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xNDQwLDYg KzE0NDAsOCBAQCBNZW1vcnlDb250ZXh0Q291bnRlcnMKIE1lbW9yeUNvbnRleHREYXRhCiBN ZW1vcnlDb250ZXh0TWV0aG9kcwogTWVtb3J5U3RhdHNQcmludEZ1bmMKK01lcmdlQWN0aW9u CitNZXJnZUFjdGlvblN0YXRlCiBNZXJnZUFwcGVuZAogTWVyZ2VBcHBlbmRQYXRoCiBNZXJn ZUFwcGVuZFN0YXRlCkBAIC0xNDQ4LDYgKzE0NTAsOCBAQCBNZXJnZUpvaW5DbGF1c2UKIE1l cmdlSm9pblN0YXRlCiBNZXJnZVBhdGgKIE1lcmdlU2NhblNlbENhY2hlCitNZXJnZVN0bXQK K01lcmdlV2hlbkNsYXVzZQogTWV0YUNvbW1hbmQKIE1pbk1heEFnZ0luZm8KIE1pbk1heEFn Z1BhdGgKLS0gCjIuMzAuMgoK --527760f7189c4519b98de45ca6e90b9b--