Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fClYF-0001Uo-W3 for pgsql-hackers@arkaria.postgresql.org; Sun, 29 Apr 2018 12:35:36 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fClYC-0001kQ-JZ for pgsql-hackers@arkaria.postgresql.org; Sun, 29 Apr 2018 12:35:32 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fClYC-0001kG-4T for pgsql-hackers@lists.postgresql.org; Sun, 29 Apr 2018 12:35:32 +0000 Received: from mail-wm0-x243.google.com ([2a00:1450:400c:c09::243]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1fClY4-00037C-A2 for pgsql-hackers@postgresql.org; Sun, 29 Apr 2018 12:35:31 +0000 Received: by mail-wm0-x243.google.com with SMTP id o78so10096757wmg.0 for ; Sun, 29 Apr 2018 05:35:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=lWtTskj0n8SU7vGMiEWtNkApQxRrWste/vh0LA45cJI=; b=I191myjIqi0BlwZ6DKRni9nqlPs9t4L9WPWSx4qp9H09XOHqrR390sp38wqQJ4VT7j 0PuAZo83JmnuPsSgsoZCp6TR2xrM5ZVQyJGHhYtzt36485TLIIESvmgGL/JcfoGIURSP ilifKpYPy5q7aSPhQfXaYStNIhi75ULxqW3i3XqePn3qlMvkS2yHiMWZNXEq1t3syb4l sXcgxHNxw07TFw97xZZDhlm6wUdnp5UfAdruxXshSqxS7Hk0b/DJSUotNEARHY/GGjAV U++jdltYeMyKgT7V/cagpxmt7pEi/boPBL255MHqREUdB3tiQk6TQjQ361P2iUIhtBDv 1uaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=lWtTskj0n8SU7vGMiEWtNkApQxRrWste/vh0LA45cJI=; b=Vhb2J7oHbARhhRwN88jtRAb2hW+Qnd1xYqoklYz11gGm6AwZKNSIQGde1tXvYg2Xwx WUWBs2/9LJPn7mUZr4JSg0z2igfZRodJdR+NAHkguwtaZn2U5tYhy5mlH7l465AJ32eQ F/QUC1kmCsuKECTS2LA1+YyqbOWkoYfMxGNTzByeBIKvkT2wuzwyAgl396MFdvq6gmKH 0CERaQ26TWUY3T6ytdTRIP9c8MOREJABGFZarltlzKiXDL4qmdWouBRcwRb23h9n3sXr cq+GCPujnBs25bkQOSfNSdbAd2tQzswDVDIlD7CRiR1ZvOR7KuaWEygA1fRiblIjQVYj gk8Q== X-Gm-Message-State: ALQs6tD1W5H3XtcR0n/SWii1aCQvewiYYcsGAZduFDlcJ1zn6HEZeXGA /S3TS27KdIRp6pPn3uwhTwggoV30sRlk9lw8JKs= X-Google-Smtp-Source: AB8JxZo7xoBUbGe3k++V7NlMonfrz7yWzOg+RJl/xFjOzsie0kkghetP0PGCkCTdZKVPgmM1O1adcKKjIb3Lm4xSxJo= X-Received: by 10.28.144.75 with SMTP id s72mr5186890wmd.85.1525005322475; Sun, 29 Apr 2018 05:35:22 -0700 (PDT) MIME-Version: 1.0 Received: by 10.223.155.26 with HTTP; Sun, 29 Apr 2018 05:34:41 -0700 (PDT) In-Reply-To: References: <20180417141410.GA7917@zakirov.localdomain> <20180418113710.GA8232@zakirov.localdomain> From: Pavel Stehule Date: Sun, 29 Apr 2018 14:34:41 +0200 Message-ID: Subject: Re: [HACKERS] proposal: schema variables To: Arthur Zakirov Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="001a114732e0870f7f056afbf897" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --001a114732e0870f7f056afbf897 Content-Type: multipart/alternative; boundary="001a114732e0870f7b056afbf895" --001a114732e0870f7b056afbf895 Content-Type: text/plain; charset="UTF-8" Hi I am sending rebased patch to master Regards Pavel --001a114732e0870f7b056afbf895 Content-Type: text/html; charset="UTF-8"
Hi

I am sending rebased patch to master

Regards

Pavel
--001a114732e0870f7b056afbf895-- --001a114732e0870f7f056afbf897 Content-Type: application/octet-stream; name=schema-variables-poc-180429-01-diff Content-Disposition: attachment; filename=schema-variables-poc-180429-01-diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_jgksras41 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKaW5kZXggMjY5ODRiNmNiYS4uZTM0NzNhMTE5YiAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK QEAgLTE4NDAsNyArMTg0MCw4IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVy YXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAgICAgICAgPGxp dGVyYWw+bTwvbGl0ZXJhbD4gPSBtYXRlcmlhbGl6ZWQgdmlldywKICAgICAgICA8bGl0ZXJhbD5j PC9saXRlcmFsPiA9IGNvbXBvc2l0ZSB0eXBlLAogICAgICAgIDxsaXRlcmFsPmY8L2xpdGVyYWw+ ID0gZm9yZWlnbiB0YWJsZSwKLSAgICAgICA8bGl0ZXJhbD5wPC9saXRlcmFsPiA9IHBhcnRpdGlv bmVkIHRhYmxlCisgICAgICAgPGxpdGVyYWw+cDwvbGl0ZXJhbD4gPSBwYXJ0aXRpb25lZCB0YWJs ZSwKKyAgICAgICA8bGl0ZXJhbD5WPC9saXRlcmFsPiA9IHNjaGVtYSB2YXJpYWJsZQogICAgICAg PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNn bWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCmluZGV4IDUzYTQwZGRlZWMuLjkyODQ4ZGVhZDIg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1 bmMuc2dtbApAQCAtMTU4ODMsNiArMTU4ODMsODMgQEAgU0VMRUNUICogRlJPTSBwZ19sc19kaXIo Jy4nKSBXSVRIIE9SRElOQUxJVFkgQVMgdChscyxuKTsKIAogIDwvc2VjdDE+CiAKKyA8c2VjdDEg aWQ9ImZ1bmN0aW9ucy1zY2hlbWF2YXIiPgorICA8dGl0bGU+U2NoZW1hIFZhcmlhYmxlIEZ1bmN0 aW9uczwvdGl0bGU+CisKKyAgPGluZGV4dGVybSB6b25lPSJmdW5jdGlvbnMtc2NoZW1hdmFyIj4K KyAgIDxwcmltYXJ5PlNjaGVtYSBWYXJpYWJsZSBGdW5jdGlvbnM8L3ByaW1hcnk+CisgICA8c2Vj b25kYXJ5PmZ1bmN0aW9uczwvc2Vjb25kYXJ5PgorICA8L2luZGV4dGVybT4KKworICA8aW5kZXh0 ZXJtPgorICAgPHByaW1hcnk+Z2V0X3NjaGVtYV92YXJpYWJsZTwvcHJpbWFyeT4KKyAgPC9pbmRl eHRlcm0+CisKKyAgPGluZGV4dGVybT4KKyAgIDxwcmltYXJ5PnNldF9zY2hlbWFfdmFyaWFibGU8 L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAgVGhlc2UgZnVuY3Rpb25z IGFsbG93IHJlYWRpbmcgYW5kIHdyaXRpbmcgc2NoZW1hIHZhcmlhYmxlcyB2YWx1ZXMuCisgICBJ ZiB0aGUgc2NoZW1hIHZhcmlhYmxlIHJlZmVyZW5jZWQgZG9lcyBub3QgZXhpc3QgKGNyZWF0ZWQg dXNpbmcgPHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXZhcmlhYmxlIi8+KQorICAgdGhlc2UgZnVu Y3Rpb25zIHdpbGwgKGRvIHNvbWV0aGluZy4uLikuCisgIDwvcGFyYT4KKworICA8dGFibGUgaWQ9 ImZ1bmN0aW9ucy1zY2hlbWF2YXItdGFiIj4KKyAgIDx0aXRsZT5GdW5jdGlvbnMgZm9yIGFjY2Vz cyB0byBzY2hlbWEgdmFyaWFibGVzPC90aXRsZT4KKyAgIDx0Z3JvdXAgY29scz0iNCI+CisgICAg PHRoZWFkPgorICAgICA8cm93PgorICAgICAgPGVudHJ5PkZ1bmN0aW9uPC9lbnRyeT4KKyAgICAg IDxlbnRyeT5Bcmd1bWVudCBUeXBlPC9lbnRyeT4KKyAgICAgIDxlbnRyeT5SZXR1cm4gVHlwZTwv ZW50cnk+CisgICAgICA8ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5PgorICAgICA8L3Jvdz4KKyAg ICA8L3RoZWFkPgorICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJh bD48ZnVuY3Rpb24+Z2V0X3NjaGVtYV92YXJpYWJsZSg8cGFyYW1ldGVyPnZhcmlhYmxlPC9wYXJh bWV0ZXI+LCA8cGFyYW1ldGVyPmV4cGVjdGVkIHR5cGU8L3BhcmFtZXRlcj4pPC9mdW5jdGlvbj48 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5yZWdjbGFzczwvdHlwZT4sIDx0 eXBlPmFueWVsZW1lbnQ8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5hbnllbGVt ZW50PC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAgICAgUmV0dXJucyB2YWx1ZSBv ZiBzY2hlbWEgdmFyaWFibGUgY29udmVydGVkIHRvIGV4cGVjdGVkIHR5cGUuCisgICAgICA8L2Vu dHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPjxm dW5jdGlvbj5zZXRfc2NoZW1hX3ZhcmlhYmxlKDxwYXJhbWV0ZXI+dmFyaWFibGU8L3BhcmFtZXRl cj4sIDxwYXJhbWV0ZXI+dmFsdWU8L3BhcmFtZXRlcj4pPC9mdW5jdGlvbj48L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5yZWdjbGFzczwvdHlwZT4sIDx0eXBlPmFueWVsZW1l bnQ8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT52b2lkPC90eXBlPjwvZW50cnk+ CisgICAgICA8ZW50cnk+CisgICAgICAgU2V0cyB0aGUgdmFsdWUgb2Ygc2NoZW1hIHZhcmlhYmxl IHRvIHZhbHVlLCBhZnRlciBjb252ZXJ0aW5nIHRoZSBpbnB1dCB0byB0aGUgY29ycmVjdCB0eXBl LgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICA8L3Rib2R5PgorICAgPC90Z3Jv dXA+CisgIDwvdGFibGU+CisgIDxwYXJhPgorICBBbiBleGFtcGxlOgorCis8cHJvZ3JhbWxpc3Rp bmc+CitDUkVBVEUgVEVNUCBWQVJJQUJMRSBmb28gQVMgbnVtZXJpYzsKK1NFTEVDVCBzZXRfc2No ZW1hX3ZhcmlhYmxlKCdmb28nLCAzNDUuNDQ1KTsKKyBzZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBnZXRfc2NoZW1hX3Zhcmlh YmxlKCdmb28nLCBudWxsOjpudW1lcmljKTsKKworIGdldF9zY2hlbWFfdmFyaWFibGUgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAzNDUuNDQ1CisoMSByb3cpCis8L3Byb2dy YW1saXN0aW5nPgorICA8L3BhcmE+CisKKyA8L3NlY3QxPgorCiAgPHNlY3QxIGlkPSJmdW5jdGlv bnMtaW5mbyI+CiAgIDx0aXRsZT5TeXN0ZW0gSW5mb3JtYXRpb24gRnVuY3Rpb25zPC90aXRsZT4K IApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi9hbGxmaWxlcy5zZ21sCmluZGV4IGM4MWM4N2VmNDEuLmE3M2FkMDFkNDEgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv cmVmL2FsbGZpbGVzLnNnbWwKQEAgLTk5LDYgKzk5LDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2Fi bGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSBjcmVhdGVU eXBlICAgICAgICAgU1lTVEVNICJjcmVhdGVfdHlwZS5zZ21sIj4KIDwhRU5USVRZIGNyZWF0ZVVz ZXIgICAgICAgICBTWVNURU0gImNyZWF0ZV91c2VyLnNnbWwiPgogPCFFTlRJVFkgY3JlYXRlVXNl ck1hcHBpbmcgIFNZU1RFTSAiY3JlYXRlX3VzZXJfbWFwcGluZy5zZ21sIj4KKzwhRU5USVRZIGNy ZWF0ZVZhcmlhYmxlICAgICBTWVNURU0gImNyZWF0ZV92YXJpYWJsZS5zZ21sIj4KIDwhRU5USVRZ IGNyZWF0ZVZpZXcgICAgICAgICBTWVNURU0gImNyZWF0ZV92aWV3LnNnbWwiPgogPCFFTlRJVFkg ZGVhbGxvY2F0ZSAgICAgICAgIFNZU1RFTSAiZGVhbGxvY2F0ZS5zZ21sIj4KIDwhRU5USVRZIGRl Y2xhcmUgICAgICAgICAgICBTWVNURU0gImRlY2xhcmUuc2dtbCI+CkBAIC0xNDcsNiArMTQ4LDcg QEAgQ29tcGxldGUgbGlzdCBvZiB1c2FibGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJl Y3RvcnkuCiA8IUVOVElUWSBkcm9wVHlwZSAgICAgICAgICAgU1lTVEVNICJkcm9wX3R5cGUuc2dt bCI+CiA8IUVOVElUWSBkcm9wVXNlciAgICAgICAgICAgU1lTVEVNICJkcm9wX3VzZXIuc2dtbCI+ CiA8IUVOVElUWSBkcm9wVXNlck1hcHBpbmcgICAgU1lTVEVNICJkcm9wX3VzZXJfbWFwcGluZy5z Z21sIj4KKzwhRU5USVRZIGRyb3BWYXJpYWJsZSAgICAgICBTWVNURU0gImRyb3BfdmFyaWFibGUu c2dtbCI+CiA8IUVOVElUWSBkcm9wVmlldyAgICAgICAgICAgU1lTVEVNICJkcm9wX3ZpZXcuc2dt bCI+CiA8IUVOVElUWSBlbmQgICAgICAgICAgICAgICAgU1lTVEVNICJlbmQuc2dtbCI+CiA8IUVO VElUWSBleGVjdXRlICAgICAgICAgICAgU1lTVEVNICJleGVjdXRlLnNnbWwiPgpAQCAtMTU1LDYg KzE1Nyw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291cmNlIGZpbGVzIGluIHRo aXMgZGlyZWN0b3J5LgogPCFFTlRJVFkgZ3JhbnQgICAgICAgICAgICAgIFNZU1RFTSAiZ3JhbnQu c2dtbCI+CiA8IUVOVElUWSBpbXBvcnRGb3JlaWduU2NoZW1hIFNZU1RFTSAiaW1wb3J0X2ZvcmVp Z25fc2NoZW1hLnNnbWwiPgogPCFFTlRJVFkgaW5zZXJ0ICAgICAgICAgICAgIFNZU1RFTSAiaW5z ZXJ0LnNnbWwiPgorPCFFTlRJVFkgbGV0ICAgICAgICAgICAgICAgIFNZU1RFTSAibGV0LnNnbWwi PgogPCFFTlRJVFkgbGlzdGVuICAgICAgICAgICAgIFNZU1RFTSAibGlzdGVuLnNnbWwiPgogPCFF TlRJVFkgbG9hZCAgICAgICAgICAgICAgIFNZU1RFTSAibG9hZC5zZ21sIj4KIDwhRU5USVRZIGxv Y2sgICAgICAgICAgICAgICBTWVNURU0gImxvY2suc2dtbCI+CmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV92YXJpYWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf dmFyaWFibGUuc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wMjA1 ZTQzNjVhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdmFyaWFi bGUuc2dtbApAQCAtMCwwICsxLDE0OSBAQAorPCEtLQorZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf dmFyaWFibGUuc2dtbAorUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCistLT4KKworPHJlZmVudHJ5 IGlkPSJzcWwtY3JlYXRldmFyaWFibGUiPgorIDxpbmRleHRlcm0gem9uZT0ic3FsLWNyZWF0ZXZh cmlhYmxlIj4KKyAgPHByaW1hcnk+Q1JFQVRFIFZBUklBQkxFPC9wcmltYXJ5PgorIDwvaW5kZXh0 ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPkNSRUFURSBWQVJJQUJMRTwvcmVm ZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5T UUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8 cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+Q1JFQVRFIFZBUklBQkxFPC9yZWZuYW1lPgorICA8cmVm cHVycG9zZT5kZWZpbmUgYSBuZXcgcGVybWlzc2lvbmVkIHR5cGVkIHNjaGVtYSB2YXJpYWJsZTwv cmVmcHVycG9zZT4KKyA8L3JlZm5hbWVkaXY+CisKKyA8cmVmc3lub3BzaXNkaXY+Cis8c3lub3Bz aXM+CitDUkVBVEUgVkFSSUFCTEUgWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+IF0KKzwvc3lub3BzaXM+CisgPC9y ZWZzeW5vcHNpc2Rpdj4KKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+ CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5DUkVBVEUgVkFSSUFCTEU8L2NvbW1hbmQ+IGNyZWF0 ZXMgYSBuZXcgc2NoZW1hIHZhcmlhYmxlLgorICAgVGhlc2UgdmFyaWFibGVzIGFyZSBzY2FsYXIg dHlwZWQsIG5vbi10cmFuc2FjdGlvbmFsLCBhbmQsIGxpa2UgcmVsYXRpb25zLAorICAgZXhpc3Qg d2l0aGluIGEgc2NoZW1hIHdpdGggYWNjZXNzIGNvbnRyb2xsZWQgdmlhCisgICA8Y29tbWFuZD5H UkFOVDwvY29tbWFuZD4gYW5kIDxjb21tYW5kPlJFVk9LRTwvY29tbWFuZD4uCisgIDwvcGFyYT4K KworICA8cGFyYT4KKyAgIFRoZSB2YWx1ZSBvZiBhIHNjaGVtYSB2YXJpYWJsZSBpcyBzZXNzaW9u LWxvY2FsLiBSZXRyaWV2aW5nCisgICBhIHZhcmlhYmxlJ3MgdmFsdWUgd2lsbCByZXR1cm4gTlVM TCB1bmxlc3MgaXRzIHZhbHVlIGhhcyBiZWVuIHNldAorICAgdG8gc29tZXRoaW5nIGVsc2UgaW4g dGhlIGN1cnJlbnQgc2Vzc2lvbi4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgUmV0cmlldmFs IGlzIGRvbmUgdmlhIHRoZSA8ZnVuY3Rpb24+Z2V0X3NjaGVtYV92YXJpYWJsZTwvZnVuY3Rpb24+ ZHVueHJpb24gb3IgdGhlIFNRTAorICAgY29tbWFuZCA8Y29tbWFuZD5TRUxFQ1Q8L2NvbW1hbmQ+ LiAgU2V0dGluZyBvZiB2YWx1ZXMgaXMgZG9uZSB2aWEgdGhlCisgICA8ZnVuY3Rpb24+c2V0X3Nj aGVtYV92YXJpYWJsZTwvZnVuY3Rpb24+IGZ1bmN0aW9uIG9yIHRoZSBTUUwgY29tbWFuZAorICAg PGNvbW1hbmQ+TEVUPC9jb21tYW5kPi4KKyAgIE5vdGFibHksIHdoaWxlIHNjaGVtYSB2YXJpYWJs ZXMgYXJlIGluIG1hbnkgd2F5cyBhIGtpbmQgb2YgdGFibGUgeW91IGNhbm5vdCB1c2UKKyAgIDxj b21tYW5kPlVQREFURTwvY29tbWFuZD4gb24gdGhlbS4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgor ICAgRm9yIHB1cnBvc2VzIG9mIG5hbWUgdW5pcXVlbmVzcyByZWxhdGlvbi1saWtlIG9iamVjdHMg KGUuZy4sIHRhYmxlcywgaW5kZXhlcykKKyAgIHdpdGhpbiB0aGUgc2FtZSBzY2hlbWEgYXJlIGNv bnNpZGVyZWQuICBpLmUuLCB5b3UgY2Fubm90IGdpdmUgYSB0YWJsZSBhbmQgYQorICAgc2NoZW1h IHZhcmlhYmxlIHRoZSBzYW1lIG5hbWUuICBUaGlzIGlzIGEgY29uc2VxdWVuY2Ugb2YgdGhlbSBi ZWluZyB0cmVhdGVkCisgICBsaWtlIHJlbGF0aW9ucyBmb3IgcHVycG9zZXMgb2YgPGNvbW1hbmQ+ U0VMRUNUPC9jb21tYW5kPi4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+ CisgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0PgorICAgPHZh cmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5JRiBOT1QgRVhJU1RTPC9saXRlcmFsPjwv dGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgRG8gbm90IHRocm93IGFu IGVycm9yIGlmIHRoZSBuYW1lIGFscmVhZHkgZXhpc3RzLiBBIG5vdGljZSBpcyBpc3N1ZWQgaW4g dGhpcyBjYXNlLgorICAgICAgTm90ZSB0aGF0IHR5cGUgb2YgdGhlIHZhcmlhYmxlIGlzIG5vdCBj b25zaWRlcmVkLCBub3IgY291bGQgaXQgYmUgc2luY2UgdGhlIG5hbWVzcGFjZQorICAgICAgc2Vh cmNoZWQgY29udGFpbnMgbm9uLXZhcmlhYmxlIG9iamVjdHMuCisgICAgIDwvcGFyYT4KKyAgICA8 L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAg PHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPjwv dGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIG5hbWUgKG9wdGlv bmFsbHkgc2NoZW1hLXF1YWxpZmllZCkgb2YgdGhlIHZhcmlhYmxlIHRvIGJlIGNyZWF0ZWQuCisg ICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2 YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRh dGFfdHlwZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+ CisgICAgICBUaGUgbmFtZSAob3B0aW9uYWxseSBzY2hlbWEtcXVhbGlmaWVkKSBvZiB0aGUgZGF0 YSB0eXBlIG9mIHRoZSB2YXJpYWJsZSB0byBiZSBjcmVhdGVkLgorICAgICA8L3BhcmE+CisgICAg PC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKyA8L3Jl ZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Tm90ZXM8L3RpdGxlPgorCisgIDxwYXJh PgorICAgVXNlIDxjb21tYW5kPkRST1AgVkFSSUFCTEU8L2NvbW1hbmQ+IHRvIHJlbW92ZSBhIHZh cmlhYmxlLgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxl PkV4YW1wbGVzPC90aXRsZT4KKworICA8cGFyYT4KKyAgIENyZWF0ZSBhbiBpbnRlZ2VyIHZhcmlh YmxlIDxsaXRlcmFsPnZhcjE8L2xpdGVyYWw+OgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFZB UklBQkxFIHZhcjEgQVMgaW50ZWdlcjsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKwor ICA8cGFyYT4KKyAgIFNldCB0aGlzIHZhcmlhYmxlJ3MgdmFsdWU7IHRoZW4gcmV0cmlldmUgaXQg Y29udmVydGVkIHRvIG51bWVyaWMuCis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgVkFSSUFCTEUK K3Bvc3RncmVzPSMgc2VsZWN0IHNldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCAxMCk7Cisgc2V0 X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitw b3N0Z3Jlcz0jIHNlbGVjdCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVsbDo6bnVtZXJp Yyk7CisgZ2V0X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAgICAgMTAKKygxIHJvdykKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKyA8 L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Q29tcGF0aWJpbGl0eTwvdGl0bGU+ CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5DUkVBVEUgVkFSSUFCTEU8L2NvbW1hbmQ+IGlzIGEg UG9zdGdyZVNRTCBmZWF0dXJlLgorICAgPCEtLSBUaGUgY2hvaWNlIG9mIHdvcmRpbmcgaGVyZSBz ZWVtcyB0byBiZSBsZWZ0IHRvIHBlcnNvbmFsIHByZWZlcmVuY2UuLi4gLS0+CisgIDwvcGFyYT4K KyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+U2VlIEFsc288L3RpdGxlPgor CisgIDxzaW1wbGVsaXN0IHR5cGU9ImlubGluZSI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9 InNxbC1kcm9wdmFyaWFibGUiLz48L21lbWJlcj4KKyAgPC9zaW1wbGVsaXN0PgorIDwvcmVmc2Vj dDE+CisKKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Rpc2NhcmQu c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvZGlzY2FyZC5zZ21sCmluZGV4IDZiOTA5YjcyMzIuLjM5 NTQ1M2JiYTAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvZGlzY2FyZC5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9yZWYvZGlzY2FyZC5zZ21sCkBAIC0yMSw3ICsyMSw3IEBAIFBvc3RncmVT UUwgZG9jdW1lbnRhdGlvbgogCiAgPHJlZnN5bm9wc2lzZGl2PgogPHN5bm9wc2lzPgotRElTQ0FS RCB7IEFMTCB8IFBMQU5TIHwgU0VRVUVOQ0VTIHwgVEVNUE9SQVJZIHwgVEVNUCB9CitESVNDQVJE IHsgQUxMIHwgUExBTlMgfCBTRVFVRU5DRVMgfCBURU1QT1JBUlkgfCBURU1QIHwgVkFSSUFCTEVT fQogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2PgogCkBAIC03NSw2ICs3NSwxNiBAQCBE SVNDQVJEIHsgQUxMIHwgUExBTlMgfCBTRVFVRU5DRVMgfCBURU1QT1JBUlkgfCBURU1QIH0KICAg ICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+Cisg ICAgPHRlcm0+PGxpdGVyYWw+VkFSSUFCTEVTPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0 ZW0+CisgICAgIDxwYXJhPgorICAgICAgU2V0cyB0aGUgdmFsdWUgb2YgYWxsIHNjaGVtYSB2YXJp YWJsZXMgdG8gTlVMTC4KKyAgICAgIDwhLS0gV2hhdCBoYXBwZW5zIHRvIHRlbXBvcmFyeSBzY2hl bWEgdmFyaWFibGVzIC0tPgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFy bGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxsaXRlcmFsPkFMTDwv bGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3JlZi9kcm9wX3ZhcmlhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2Ryb3BfdmFyaWFibGUu c2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wNjEzMGZkNTEwCi0t LSAvZGV2L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3ZhcmlhYmxlLnNnbWwKQEAg LTAsMCArMSw5MiBAQAorPCEtLQorZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3ZhcmlhYmxlLnNnbWwK K1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWRyb3B2 YXJpYWJsZSI+CisgPGluZGV4dGVybSB6b25lPSJzcWwtZHJvcHZhcmlhYmxlIj4KKyAgPHByaW1h cnk+RFJPUCBWQVJJQUJMRTwvcHJpbWFyeT4KKyA8L2luZGV4dGVybT4KKworIDxyZWZtZXRhPgor ICA8cmVmZW50cnl0aXRsZT5EUk9QIFZBUklBQkxFPC9yZWZlbnRyeXRpdGxlPgorICA8bWFudm9s bnVtPjc8L21hbnZvbG51bT4KKyAgPHJlZm1pc2NpbmZvPlNRTCAtIExhbmd1YWdlIFN0YXRlbWVu dHM8L3JlZm1pc2NpbmZvPgorIDwvcmVmbWV0YT4KKworIDxyZWZuYW1lZGl2PgorICA8cmVmbmFt ZT5EUk9QIFZBUklBQkxFPC9yZWZuYW1lPgorICA8cmVmcHVycG9zZT5yZW1vdmUgYSBzY2hlbWEg dmFyaWFibGU8L3JlZnB1cnBvc2U+CisgPC9yZWZuYW1lZGl2PgorCisgPHJlZnN5bm9wc2lzZGl2 PgorPHN5bm9wc2lzPgorRFJPUCBWQVJJQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBbIENBU0NBREUgfCBS RVNUUklDVCBdCis8L3N5bm9wc2lzPgorIDwvcmVmc3lub3BzaXNkaXY+CisKKyA8cmVmc2VjdDE+ CisgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5E Uk9QIFZBUklBQkxFPC9jb21tYW5kPiByZW1vdmVzIGEgc2NoZW1hIHZhcmlhYmxlLgorICAgQSB2 YXJpYWJsZSBjYW4gb25seSBiZSBkcm9wcGVkIGJ5IGl0cyBvd25lciBvciBhIHN1cGVydXNlci4K KyAgIDwhLS0gdGhpcyB3b3VsZCBzdWdnZXN0IHRoYXQgd2UgbmVlZCBhbiBhbHRlciB2YXJpYWJs ZSBvd25lciB0byBjb21tYW5kIC0tPgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZz ZWN0MT4KKyAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgorCisgIDx2YXJpYWJsZWxpc3Q+Cisg ICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPklGIEVYSVNUUzwvbGl0ZXJhbD48 L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIERvIG5vdCB0aHJvdyBh biBlcnJvciBpZiB0aGUgdmFyaWFibGUgZG9lcyBub3QgZXhpc3QuIEEgbm90aWNlIGlzIGlzc3Vl ZAorICAgICAgaW4gdGhpcyBjYXNlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxp c3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lIChvcHRpb25hbGx5IHNjaGVtYS1x dWFsaWZpZWQpIG9mIGEgc2NoZW1hIHZhcmlhYmxlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0 aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKyA8L3JlZnNlY3Qx PgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorCisgIDxwYXJhPgor ICAgVG8gcmVtb3ZlIHRoZSBzY2hlbWEgdmFyaWFibGUgPGxpdGVyYWw+dmFyMTwvbGl0ZXJhbD46 CisKKzxwcm9ncmFtbGlzdGluZz4KK0RST1AgVkFSSUFCTEUgdmFyMTsKKzwvcHJvZ3JhbWxpc3Rp bmc+PC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5Db21wYXRp YmlsaXR5PC90aXRsZT4KKworICA8cGFyYT4KKyAgIDxjb21tYW5kPkRST1AgVkFSSUFCTEU8L2Nv bW1hbmQ+IGlzIHByb3ByaWV0YXJ5IFBvc3RncmVTUUwgY29tbWFuZC4KKyAgIDwhLS0gY3JlYXRl IHZhcmlhYmxlIGlzIGEgIlBvc3RncmVTUUwgZmVhdHVyZSIsCisgICAgICAgIHRoaXMgaXMgYSAi cHJvcHJpZXRhcnkgUG9zdGdyZVNRTCBjb21tYW5kIiAuLi4gLS0+CisgIDwvcGFyYT4KKyA8L3Jl ZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+U2VlIEFsc288L3RpdGxlPgorCisgIDxz aW1wbGVsaXN0IHR5cGU9ImlubGluZSI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9InNxbC1j cmVhdGV2YXJpYWJsZSIvPjwvbWVtYmVyPgorICA8L3NpbXBsZWxpc3Q+CisgPC9yZWZzZWN0MT4K KworPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvZ3JhbnQuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvZ3JhbnQuc2dtbAppbmRleCBmZjY0YzdhM2JhLi4wMDYzNjRlYmU1 IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2dyYW50LnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZi9ncmFudC5zZ21sCkBAIC03OSw2ICs3OSwxMiBAQCBHUkFOVCB7IFVTQUdFIHwgQUxM IFsgUFJJVklMRUdFUyBdIH0KICAgICBPTiBUWVBFIDxyZXBsYWNlYWJsZT50eXBlX25hbWU8L3Jl cGxhY2VhYmxlPiBbLCAuLi5dCiAgICAgVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnJvbGVfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gWyBXSVRIIEdSQU5UIE9Q VElPTiBdCiAKK0dSQU5UIHsgeyBTRUxFQ1QgfCBVUERBVEUgfQorICAgIFssIC4uLl0gfCBBTEwg WyBQUklWSUxFR0VTIF0gfQorICAgIE9OIHsgVkFSSUFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnZhcmlhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisgICAgICAgICB8 IEFMTCBWQVJJQUJMRVMgSU4gU0NIRU1BIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5z Y2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gfQorICAgIFRPIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5d IFsgV0lUSCBHUkFOVCBPUFRJT04gXQorCiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBjYW4gYmU6PC9w aHJhc2U+CiAKICAgICBbIEdST1VQIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJv bGVfbmFtZTwvcmVwbGFjZWFibGU+CkBAIC0xNjcsNiArMTczLDcgQEAgR1JBTlQgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gVE8g PHJlcGxhY2UKICAgIGZvcmVpZ24gc2VydmVycywKICAgIGxhcmdlIG9iamVjdHMsCiAgICBzY2hl bWFzLAorICAgc2NoZW1hIHZhcmlhYmxlcywKICAgIG9yIHRhYmxlc3BhY2VzLgogICAgRm9yIG90 aGVyIHR5cGVzIG9mIG9iamVjdHMsIHRoZSBkZWZhdWx0IHByaXZpbGVnZXMKICAgIGdyYW50ZWQg dG8gPGxpdGVyYWw+UFVCTElDPC9saXRlcmFsPiBhcmUgYXMgZm9sbG93czoKQEAgLTIwNCw2ICsy MTEsOCBAQCBHUkFOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9uYW1lPC9y ZXBsYWNlYWJsZT4gWywgLi4uXSBUTyA8cmVwbGFjZQogICAgICAgIEZvciBzZXF1ZW5jZXMsIHRo aXMgcHJpdmlsZWdlIGFsc28gYWxsb3dzIHRoZSB1c2Ugb2YgdGhlCiAgICAgICAgPGZ1bmN0aW9u PmN1cnJ2YWw8L2Z1bmN0aW9uPiBmdW5jdGlvbi4KICAgICAgICBGb3IgbGFyZ2Ugb2JqZWN0cywg dGhpcyBwcml2aWxlZ2UgYWxsb3dzIHRoZSBvYmplY3QgdG8gYmUgcmVhZC4KKyAgICAgICBGb3Ig c2NoZW1hIHZhcmlhYmxlcywgdGhpcyBwcml2aWxlZ2UgYWxsb3dzIHRoZSA8ZnVuY3Rpb24+Z2V0 X3NjaGVtYV92YXJpYWJsZTwvZnVuY3Rpb24+CisgICAgICAgdG8gcmVhZCB0aGUgdmFyaWFibGUn cyB2YWx1ZS4KICAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3Rl bnRyeT4KQEAgLTIzOSw2ICsyNDgsOSBAQCBHUkFOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBUTyA8cmVwbGFjZQogICAgICAg IDxmdW5jdGlvbj5zZXR2YWw8L2Z1bmN0aW9uPiBmdW5jdGlvbnMuCiAgICAgICAgRm9yIGxhcmdl IG9iamVjdHMsIHRoaXMgcHJpdmlsZWdlIGFsbG93cyB3cml0aW5nIG9yIHRydW5jYXRpbmcgdGhl CiAgICAgICAgb2JqZWN0LgorICAgICAgIEZvciBzY2hlbWEgdmFyaWFibGVzLCB0aGlzIHByaXZp bGVnZSBhbGxvd3MgPGNvbW1hbmQ+TEVUPC9jb21tYW5kPgorICAgICAgIGFuZCA8ZnVuY3Rpb24+ c2V0X3NjaGVtYV92YXJpYWJsZTwvZnVuY3Rpb24+IHRvIG1vZGlmeSB0aGUgc2NoZW1hIHZhcmlh YmxlJ3MKKyAgICAgICB2YWx1ZS4KICAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KICAg ICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2xldC5zZ21sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLmU4YmYzZjZkZDQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2xldC5zZ21sCkBAIC0wLDAgKzEsOTAgQEAKKzwhLS0KK2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNn bWwKK1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWxl dCI+CisgPGluZGV4dGVybSB6b25lPSJzcWwtbGV0Ij4KKyAgPHByaW1hcnk+TEVUPC9wcmltYXJ5 PgorIDwvaW5kZXh0ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPkxFVDwvcmVm ZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5T UUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8 cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+TEVUPC9yZWZuYW1lPgorICA8cmVmcHVycG9zZT5jaGFu Z2UgYSBzY2hlbWEgdmFyaWFibGUncyB2YWx1ZTwvcmVmcHVycG9zZT4KKyA8L3JlZm5hbWVkaXY+ CisKKyA8cmVmc3lub3BzaXNkaXY+Cis8c3lub3BzaXM+CitMRVQgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnNjaGVtYV92YXJpYWJsZTwvcmVwbGFjZWFibGU+ID0gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnNxbF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4KKzwvc3lub3Bz aXM+CisgPC9yZWZzeW5vcHNpc2Rpdj4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkRlc2NyaXB0 aW9uPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFRoZSA8Y29tbWFuZD5MRVQ8L2NvbW1hbmQ+IGNv bW1hbmQgdXBkYXRlcyB0aGUgc3BlY2lmaWVkIHNjaGVtYSB2YXJpYWJsZScgdmFsdWUuCisgIDwv cGFyYT4KKworIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5QYXJhbWV0ZXJz PC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVy bT48bGl0ZXJhbD5zY2hlbWFfdmFyaWFibGU8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRl bT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgbmFtZSBvZiBzY2hlbWEgdmFyaWFibGUuCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJs aXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+c3FsIGV4cHJlc3Npb248L2xpdGVyYWw+PC90 ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBBbiBTUUwgZXhwcmVzc2lv biwgdGhlIHJlc3VsdCBpcyBjYXN0IHRvIHRoZSBzY2hlbWEgdmFyaWFibGUncyB0eXBlLgorICAg ICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3Zhcmlh YmxlbGlzdD4KKworICA8cGFyYT4KKyAgIEV4YW1wbGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVB VEUgVkFSSUFCTEUgbXl2YXIgQVMgaW50ZWdlcjsKK0xFVCBteXZhciA9IDEwOworTEVUIG15dmFy ID0gKFNFTEVDVCBzdW0odmFsKSBGUk9NIHRhYik7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3Bh cmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkNvbXBhdGliaWxpdHk8 L3RpdGxlPgorCisgIDxwYXJhPgorICAgPCEtLSB0aGlzIGZlZWxzIGxpa2UgaXQgbmVlZHMgdG8g YmUgbW9yZSBzcGVjaWZpYywKKyAgICAgICAgYnV0IEkgZG9uJ3Qga25vdyBlbm91Z2ggdG8gbWFr ZSBpdCBzbyAtLT4KKyAgIDxsaXRlcmFsPkxFVDwvbGl0ZXJhbD4gZXh0ZW5kcyBzeW50YXggZGVm aW5lZCBpbiB0aGUgU1FMCisgICBzdGFuZGFyZC4gVGhlIHN0YW5kYXJkIGtub3dzIDxsaXRlcmFs PlNFVDwvbGl0ZXJhbD4gY29tbWFuZCwKKyAgIHRoYXQgaXMgdXNlZCBmb3IgZGlmZmVyZW50IHB1 cnBvdXNlIGluIFBvc3RncmVTUUwuCisgIDwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNl Y3QxPgorICA8dGl0bGU+U2VlIEFsc288L3RpdGxlPgorCisgIDxzaW1wbGVsaXN0IHR5cGU9Imlu bGluZSI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGV2YXJpYWJsZSIvPjwv bWVtYmVyPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtZHJvcHZhcmlhYmxlIi8+PC9t ZW1iZXI+CisgIDwvc2ltcGxlbGlzdD4KKyA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcmV2b2tlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3Jl dm9rZS5zZ21sCmluZGV4IDcwMTgyMDJmMTQuLjczNzc4ZjAxZjkgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvcmV2b2tlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZXZva2Uuc2dt bApAQCAtMTA4LDYgKzEwOCwxNCBAQCBSRVZPS0UgWyBHUkFOVCBPUFRJT04gRk9SIF0KIFJFVk9L RSBbIEFETUlOIE9QVElPTiBGT1IgXQogICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5yb2xlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIEZST00gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0KICAgICBbIENBU0NB REUgfCBSRVNUUklDVCBdCisKK1JFVk9LRSBbIEdSQU5UIE9QVElPTiBGT1IgXQorICAgIHsgeyBT RUxFQ1QgfCBVUERBVEUgfQorICAgIFssIC4uLl0gfCBBTEwgWyBQUklWSUxFR0VTIF0gfQorICAg IE9OIHsgVkFSSUFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhcmlhYmxlX25h bWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisgICAgICAgICB8IEFMTCBWQVJJQUJMRVMgSU4gU0NI RU1BIDxyZXBsYWNlYWJsZT5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gfQorICAg IEZST00geyBbIEdST1VQIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFt ZTwvcmVwbGFjZWFibGU+IHwgUFVCTElDIH0gWywgLi4uXQorICAgIFsgQ0FTQ0FERSB8IFJFU1RS SUNUIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sCmlu ZGV4IDczZWYyMTJjMDguLmMzYzVkOWQxMDYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWZl cmVuY2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKQEAgLTEyNyw2ICsx MjcsNyBAQAogICAgJmNyZWF0ZVR5cGU7CiAgICAmY3JlYXRlVXNlcjsKICAgICZjcmVhdGVVc2Vy TWFwcGluZzsKKyAgICZjcmVhdGVWYXJpYWJsZTsKICAgICZjcmVhdGVWaWV3OwogICAgJmRlYWxs b2NhdGU7CiAgICAmZGVjbGFyZTsKQEAgLTE3NSw2ICsxNzYsNyBAQAogICAgJmRyb3BUeXBlOwog ICAgJmRyb3BVc2VyOwogICAgJmRyb3BVc2VyTWFwcGluZzsKKyAgICZkcm9wVmFyaWFibGU7CiAg ICAmZHJvcFZpZXc7CiAgICAmZW5kOwogICAgJmV4ZWN1dGU7CkBAIC0xODMsNiArMTg1LDcgQEAK ICAgICZncmFudDsKICAgICZpbXBvcnRGb3JlaWduU2NoZW1hOwogICAgJmluc2VydDsKKyAgICZs ZXQ7CiAgICAmbGlzdGVuOwogICAgJmxvYWQ7CiAgICAmbG9jazsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCmlu ZGV4IDU3OGU0YzY1OTIuLjY5ZWExNmU2YTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvYWNsY2hrLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYwpAQCAtMjg0LDYg KzI4NCw5IEBAIHJlc3RyaWN0X2FuZF9jaGVja19ncmFudChib29sIGlzX2dyYW50LCBBY2xNb2Rl IGF2YWlsX2dvcHRpb25zLCBib29sIGFsbF9wcml2cywKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJ CXdob2xlX21hc2sgPSBBQ0xfQUxMX1JJR0hUU19UWVBFOwogCQkJYnJlYWs7CisJCWNhc2UgT0JK RUNUX1ZBUklBQkxFOgorCQkJd2hvbGVfbWFzayA9IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOwor CQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9iamVj dCB0eXBlOiAlZCIsIG9ianR5cGUpOwogCQkJLyogbm90IHJlYWNoZWQsIGJ1dCBrZWVwIGNvbXBp bGVyIHF1aWV0ICovCkBAIC01MDcsNiArNTEwLDEwIEBAIEV4ZWN1dGVHcmFudFN0bXQoR3JhbnRT dG10ICpzdG10KQogCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19GT1JFSUdOX1NF UlZFUjsKIAkJCWVycm9ybXNnID0gZ2V0dGV4dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBl ICVzIGZvciBmb3JlaWduIHNlcnZlciIpOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklB QkxFOgorCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWVy cm9ybXNnID0gZ2V0dGV4dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBzY2hl bWEgdmFyaWFibGUiKTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVu cmVjb2duaXplZCBHcmFudFN0bXQub2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBzdG10LT5vYmp0 eXBlKTsKQEAgLTU3Nyw2ICs1ODQsNyBAQCBFeGVjR3JhbnRTdG10X29pZHMoSW50ZXJuYWxHcmFu dCAqaXN0bXQpCiAJewogCQljYXNlIE9CSkVDVF9UQUJMRToKIAkJY2FzZSBPQkpFQ1RfU0VRVUVO Q0U6CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJRXhlY0dyYW50X1JlbGF0aW9uKGlzdG10 KTsKIAkJCWJyZWFrOwogCQljYXNlIE9CSkVDVF9EQVRBQkFTRToKQEAgLTY0Niw2ICs2NTQsNyBA QCBvYmplY3ROYW1lc1RvT2lkcyhPYmplY3RUeXBlIG9ianR5cGUsIExpc3QgKm9iam5hbWVzKQog CXsKIAkJY2FzZSBPQkpFQ1RfVEFCTEU6CiAJCWNhc2UgT0JKRUNUX1NFUVVFTkNFOgorCQljYXNl IE9CSkVDVF9WQVJJQUJMRToKIAkJCWZvcmVhY2goY2VsbCwgb2JqbmFtZXMpCiAJCQl7CiAJCQkJ UmFuZ2VWYXIgICAqcmVsdmFyID0gKFJhbmdlVmFyICopIGxmaXJzdChjZWxsKTsKQEAgLTEwMTgs NiArMTAyNywxMCBAQCBFeGVjQWx0ZXJEZWZhdWx0UHJpdmlsZWdlc1N0bXQoUGFyc2VTdGF0ZSAq cHN0YXRlLCBBbHRlckRlZmF1bHRQcml2aWxlZ2VzU3RtdCAqcwogCQkJYWxsX3ByaXZpbGVnZXMg PSBBQ0xfQUxMX1JJR0hUU19TQ0hFTUE7CiAJCQllcnJvcm1zZyA9IGdldHRleHRfbm9vcCgiaW52 YWxpZCBwcml2aWxlZ2UgdHlwZSAlcyBmb3Igc2NoZW1hIik7CiAJCQlicmVhazsKKwkJY2FzZSBP QkpFQ1RfVkFSSUFCTEU6CisJCQlhbGxfcHJpdmlsZWdlcyA9IEFDTF9BTExfUklHSFRTX1ZBUklB QkxFOworCQkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImludmFsaWQgcHJpdmlsZWdlIHR5cGUg JXMgZm9yIHNjaGVtYSB2YXJpYWJsZSIpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9n KEVSUk9SLCAidW5yZWNvZ25pemVkIEdyYW50U3RtdC5vYmp0eXBlOiAlZCIsCiAJCQkJIChpbnQp IGFjdGlvbi0+b2JqdHlwZSk7CkBAIC0xMjE1LDYgKzEyMjgsMTIgQEAgU2V0RGVmYXVsdEFDTChJ bnRlcm5hbERlZmF1bHRBQ0wgKmlhY2xzKQogCQkJCXRoaXNfcHJpdmlsZWdlcyA9IEFDTF9BTExf UklHSFRTX1NDSEVNQTsKIAkJCWJyZWFrOwogCisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJ b2JqdHlwZSA9IERFRkFDTE9CSl9WQVJJQUJMRTsKKwkJCWlmIChpYWNscy0+YWxsX3ByaXZzICYm IHRoaXNfcHJpdmlsZWdlcyA9PSBBQ0xfTk9fUklHSFRTKQorCQkJCXRoaXNfcHJpdmlsZWdlcyA9 IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWVs b2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBpYWNscy0+ b2JqdHlwZSk7CkBAIC0xNDQxLDYgKzE0NjAsOSBAQCBSZW1vdmVSb2xlRnJvbU9iamVjdEFDTChP aWQgcm9sZWlkLCBPaWQgY2xhc3NpZCwgT2lkIG9iamlkKQogCQkJY2FzZSBERUZBQ0xPQkpfTkFN RVNQQUNFOgogCQkJCWlhY2xzLm9ianR5cGUgPSBPQkpFQ1RfU0NIRU1BOwogCQkJCWJyZWFrOwor CQkJY2FzZSBERUZBQ0xPQkpfVkFSSUFCTEU6CisJCQkJaWFjbHMub2JqdHlwZSA9IE9CSkVDVF9W QVJJQUJMRTsKKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJLyogU2hvdWxkbid0IGdldCBo ZXJlICovCiAJCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgZGVmYXVsdCBBQ0wgdHlwZTogJWQi LApAQCAtMTYxMiw4ICsxNjM0LDkgQEAgZXhwYW5kX2FsbF9jb2xfcHJpdmlsZWdlcyhPaWQgdGFi bGVfb2lkLCBGb3JtX3BnX2NsYXNzIGNsYXNzRm9ybSwKIAkJaWYgKGN1cnJfYXR0ID09IE9iamVj dElkQXR0cmlidXRlTnVtYmVyICYmICFjbGFzc0Zvcm0tPnJlbGhhc29pZHMpCiAJCQljb250aW51 ZTsKIAotCQkvKiBWaWV3cyBkb24ndCBoYXZlIGFueSBzeXN0ZW0gY29sdW1ucyBhdCBhbGwgKi8K LQkJaWYgKGNsYXNzRm9ybS0+cmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcgJiYgY3Vycl9hdHQgPCAw KQorCQkvKiBWaWV3cyBhbmQgdmFyaWFibGVzIGRvbid0IGhhdmUgYW55IHN5c3RlbSBjb2x1bW5z IGF0IGFsbCAqLworCQlpZiAoKGNsYXNzRm9ybS0+cmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcgIHx8 IGNsYXNzRm9ybS0+cmVsa2luZCA9PSBSRUxLSU5EX1ZBUklBQkxFKSAmJgorCQkJY3Vycl9hdHQg PCAwKQogCQkJY29udGludWU7CiAKIAkJYXR0VHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIoQVRUTlVN LApAQCAtMzQ1Niw2ICszNDc5LDkgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVzdWx0IGFjbGVyciwg T2JqZWN0VHlwZSBvYmp0eXBlLAogCQkJCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJCQkJbXNnID0g Z2V0dGV4dF9ub29wKCJwZXJtaXNzaW9uIGRlbmllZCBmb3IgdHlwZSAlcyIpOwogCQkJCQkJYnJl YWs7CisJCQkJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29w KCJwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHZhcmlhYmxlICVzIik7CisJCQkJCQlicmVh azsKIAkJCQkJY2FzZSBPQkpFQ1RfVklFVzoKIAkJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgicGVy bWlzc2lvbiBkZW5pZWQgZm9yIHZpZXcgJXMiKTsKIAkJCQkJCWJyZWFrOwpAQCAtMzU2Niw2ICsz NTkyLDkgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVzdWx0IGFjbGVyciwgT2JqZWN0VHlwZSBvYmp0 eXBlLAogCQkJCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJt dXN0IGJlIG93bmVyIG9mIHR5cGUgJXMiKTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNlIE9CSkVD VF9WQVJJQUJMRToKKwkJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgibXVzdCBiZSBvd25lciBvZiBz Y2hlbWEgdmFyaWFibGUgJXMiKTsKKwkJCQkJCWJyZWFrOwogCQkJCQljYXNlIE9CSkVDVF9WSUVX OgogCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJtdXN0IGJlIG93bmVyIG9mIHZpZXcgJXMiKTsK IAkJCQkJCWJyZWFrOwpAQCAtMzY4Miw2ICszNzExLDcgQEAgcGdfYWNsbWFzayhPYmplY3RUeXBl IG9ianR5cGUsIE9pZCB0YWJsZV9vaWQsIEF0dHJOdW1iZXIgYXR0bnVtLCBPaWQgcm9sZWlkLAog CQkJCXBnX2F0dHJpYnV0ZV9hY2xtYXNrKHRhYmxlX29pZCwgYXR0bnVtLCByb2xlaWQsIG1hc2ss IGhvdyk7CiAJCWNhc2UgT0JKRUNUX1RBQkxFOgogCQljYXNlIE9CSkVDVF9TRVFVRU5DRToKKwkJ Y2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCQlyZXR1cm4gcGdfY2xhc3NfYWNsbWFzayh0YWJsZV9v aWQsIHJvbGVpZCwgbWFzaywgaG93KTsKIAkJY2FzZSBPQkpFQ1RfREFUQUJBU0U6CiAJCQlyZXR1 cm4gcGdfZGF0YWJhc2VfYWNsbWFzayh0YWJsZV9vaWQsIHJvbGVpZCwgbWFzaywgaG93KTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9oZWFwLmMKaW5kZXggMzk4MTNkZTk5MS4uZjFhY2MwYWE3MCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKQEAg LTI5NCw2ICsyOTQsNyBAQCBoZWFwX2NyZWF0ZShjb25zdCBjaGFyICpyZWxuYW1lLAogCXN3aXRj aCAocmVsa2luZCkKIAl7CiAJCWNhc2UgUkVMS0lORF9WSUVXOgorCQljYXNlIFJFTEtJTkRfVkFS SUFCTEU6CiAJCWNhc2UgUkVMS0lORF9DT01QT1NJVEVfVFlQRToKIAkJY2FzZSBSRUxLSU5EX0ZP UkVJR05fVEFCTEU6CiAJCWNhc2UgUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRToKQEAgLTQzMSw3 ICs0MzIsOCBAQCBDaGVja0F0dHJpYnV0ZU5hbWVzVHlwZXMoVHVwbGVEZXNjIHR1cGRlc2MsIGNo YXIgcmVsa2luZCwKIAkgKiBTa2lwIHRoaXMgZm9yIGEgdmlldyBvciB0eXBlIHJlbGF0aW9uLCBz aW5jZSB0aG9zZSBkb24ndCBoYXZlIHN5c3RlbQogCSAqIGF0dHJpYnV0ZXMuCiAJICovCi0JaWYg KHJlbGtpbmQgIT0gUkVMS0lORF9WSUVXICYmIHJlbGtpbmQgIT0gUkVMS0lORF9DT01QT1NJVEVf VFlQRSkKKwlpZiAocmVsa2luZCAhPSBSRUxLSU5EX1ZJRVcgJiYgcmVsa2luZCAhPSBSRUxLSU5E X0NPTVBPU0lURV9UWVBFICYmCisJCXJlbGtpbmQgIT0gUkVMS0lORF9WQVJJQUJMRSkKIAl7CiAJ CWZvciAoaSA9IDA7IGkgPCBuYXR0czsgaSsrKQogCQl7CkBAIC03MjAsNyArNzIyLDggQEAgQWRk TmV3QXR0cmlidXRlVHVwbGVzKE9pZCBuZXdfcmVsX29pZCwKIAkgKiBhbGwgZm9yIGEgdmlldyBv ciB0eXBlIHJlbGF0aW9uLiAgV2UgZG9uJ3QgYm90aGVyIHdpdGggbWFraW5nIGRhdGF0eXBlCiAJ ICogZGVwZW5kZW5jaWVzIGhlcmUsIHNpbmNlIHByZXN1bWFibHkgYWxsIHRoZXNlIHR5cGVzIGFy ZSBwaW5uZWQuCiAJICovCi0JaWYgKHJlbGtpbmQgIT0gUkVMS0lORF9WSUVXICYmIHJlbGtpbmQg IT0gUkVMS0lORF9DT01QT1NJVEVfVFlQRSkKKwlpZiAocmVsa2luZCAhPSBSRUxLSU5EX1ZJRVcg JiYgcmVsa2luZCAhPSBSRUxLSU5EX0NPTVBPU0lURV9UWVBFICYmCisJCXJlbGtpbmQgIT0gUkVM S0lORF9WQVJJQUJMRSkKIAl7CiAJCWZvciAoaSA9IDA7IGkgPCAoaW50KSBsZW5ndGhvZihTeXNB dHQpOyBpKyspCiAJCXsKQEAgLTEwNzMsNyArMTA3Niw5IEBAIGhlYXBfY3JlYXRlX3dpdGhfY2F0 YWxvZyhjb25zdCBjaGFyICpyZWxuYW1lLAogCWlmIChleGlzdGluZ19yZWxpZCAhPSBJbnZhbGlk T2lkKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RB QkxFKSwKLQkJCQkgZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLCByZWxu YW1lKSkpOworCQkJCSBlcnJtc2coIiVzIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsCisJCQkJCQly ZWxraW5kID09IFJFTEtJTkRfVkFSSUFCTEUgPyAidmFyaWFibGUiIDogInJlbGF0aW9uIiwKKwkJ CQkJCXJlbG5hbWUpKSk7CiAKIAkvKgogCSAqIFNpbmNlIHdlIGFyZSBnb2luZyB0byBjcmVhdGUg YSByb3d0eXBlIGFzIHdlbGwsIGFsc28gY2hlY2sgZm9yCkBAIC0xMTE0LDcgKzExMTksNyBAQCBo ZWFwX2NyZWF0ZV93aXRoX2NhdGFsb2coY29uc3QgY2hhciAqcmVsbmFtZSwKIAkJCShyZWxraW5k ID09IFJFTEtJTkRfUkVMQVRJT04gfHwgcmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFIHx8CiAJ CQkgcmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcgfHwgcmVsa2luZCA9PSBSRUxLSU5EX01BVFZJRVcg fHwKIAkJCSByZWxraW5kID09IFJFTEtJTkRfQ09NUE9TSVRFX1RZUEUgfHwgcmVsa2luZCA9PSBS RUxLSU5EX0ZPUkVJR05fVEFCTEUgfHwKLQkJCSByZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9O RURfVEFCTEUpKQorCQkJIHJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSB8fCBy ZWxraW5kID09IFJFTEtJTkRfVkFSSUFCTEUpKQogCQl7CiAJCQlpZiAoIU9pZElzVmFsaWQoYmlu YXJ5X3VwZ3JhZGVfbmV4dF9oZWFwX3BnX2NsYXNzX29pZCkpCiAJCQkJZXJlcG9ydChFUlJPUiwK QEAgLTExNTYsNiArMTE2MSwxMCBAQCBoZWFwX2NyZWF0ZV93aXRoX2NhdGFsb2coY29uc3QgY2hh ciAqcmVsbmFtZSwKIAkJCQlyZWxhY2wgPSBnZXRfdXNlcl9kZWZhdWx0X2FjbChPQkpFQ1RfU0VR VUVOQ0UsIG93bmVyaWQsCiAJCQkJCQkJCQkJCSAgcmVsbmFtZXNwYWNlKTsKIAkJCQlicmVhazsK KwkJCWNhc2UgUkVMS0lORF9WQVJJQUJMRToKKwkJCQlyZWxhY2wgPSBnZXRfdXNlcl9kZWZhdWx0 X2FjbChPQkpFQ1RfVkFSSUFCTEUsIG93bmVyaWQsCisJCQkJCQkJCQkJCSAgcmVsbmFtZXNwYWNl KTsKKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJcmVsYWNsID0gTlVMTDsKIAkJCQlicmVh azsKQEAgLTExODksMTQgKzExOTgsMTYgQEAgaGVhcF9jcmVhdGVfd2l0aF9jYXRhbG9nKGNvbnN0 IGNoYXIgKnJlbG5hbWUsCiAJICogRGVjaWRlIHdoZXRoZXIgdG8gY3JlYXRlIGFuIGFycmF5IHR5 cGUgb3ZlciB0aGUgcmVsYXRpb24ncyByb3d0eXBlLiBXZQogCSAqIGRvIG5vdCBjcmVhdGUgYW55 IGFycmF5IHR5cGVzIGZvciBzeXN0ZW0gY2F0YWxvZ3MgKGllLCB0aG9zZSBtYWRlCiAJICogZHVy aW5nIGluaXRkYikuIFdlIGRvIG5vdCBjcmVhdGUgdGhlbSB3aGVyZSB0aGUgdXNlIG9mIGEgcmVs YXRpb24gYXMKLQkgKiBzdWNoIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbDogdG9hc3QgdGFi bGVzLCBzZXF1ZW5jZXMgYW5kIGluZGV4ZXMuCisJICogc3VjaCBpcyBhbiBpbXBsZW1lbnRhdGlv biBkZXRhaWw6IHRvYXN0IHRhYmxlcywgc2VxdWVuY2VzLCBpbmRleGVzIGFuZAorCSAqIHZhcmlh Ymxlcy4KIAkgKi8KIAlpZiAoSXNVbmRlclBvc3RtYXN0ZXIgJiYgKHJlbGtpbmQgPT0gUkVMS0lO RF9SRUxBVElPTiB8fAogCQkJCQkJCSAgcmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcgfHwKIAkJCQkJ CQkgIHJlbGtpbmQgPT0gUkVMS0lORF9NQVRWSUVXIHx8CiAJCQkJCQkJICByZWxraW5kID09IFJF TEtJTkRfRk9SRUlHTl9UQUJMRSB8fAogCQkJCQkJCSAgcmVsa2luZCA9PSBSRUxLSU5EX0NPTVBP U0lURV9UWVBFIHx8Ci0JCQkJCQkJICByZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFC TEUpKQorCQkJCQkJCSAgcmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFIHx8CisJ CQkJCQkJICByZWxraW5kID09IFJFTEtJTkRfVkFSSUFCTEUpKQogCQluZXdfYXJyYXlfb2lkID0g QXNzaWduVHlwZUFycmF5T2lkKCk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9vYmplY3RhZGRyZXNzLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3Mu YwppbmRleCBlZjNlYTY0YmQwLi5mNzRmMjdjOGUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j YXRhbG9nL29iamVjdGFkZHJlc3MuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFk ZHJlc3MuYwpAQCAtNTE5LDYgKzUxOSw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2JqZWN0X3R5 cGVfbWFwCiAJewogCQkic2VxdWVuY2UiLCBPQkpFQ1RfU0VRVUVOQ0UKIAl9LAorCXsKKwkJInZh cmlhYmxlIiwgT0JKRUNUX1ZBUklBQkxFCisJfSwKIAl7CiAJCSJ0b2FzdCB0YWJsZSIsIC0xCiAJ fSwJCQkJCQkJLyogdW5tYXBwZWQgKi8KQEAgLTgyMyw2ICs4MjYsNyBAQCBnZXRfb2JqZWN0X2Fk ZHJlc3MoT2JqZWN0VHlwZSBvYmp0eXBlLCBOb2RlICpvYmplY3QsCiAJCQljYXNlIE9CSkVDVF9W SUVXOgogCQkJY2FzZSBPQkpFQ1RfTUFUVklFVzoKIAkJCWNhc2UgT0JKRUNUX0ZPUkVJR05fVEFC TEU6CisJCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJCQlhZGRyZXNzID0KIAkJCQkJZ2V0X3Jl bGF0aW9uX2J5X3F1YWxpZmllZF9uYW1lKG9ianR5cGUsIGNhc3ROb2RlKExpc3QsIG9iamVjdCks CiAJCQkJCQkJCQkJCQkgICAmcmVsYXRpb24sIGxvY2ttb2RlLApAQCAtMTI1OSw2ICsxMjYzLDE0 IEBAIGdldF9yZWxhdGlvbl9ieV9xdWFsaWZpZWRfbmFtZShPYmplY3RUeXBlIG9ianR5cGUsIExp c3QgKm9iamVjdCwKIAkJCQkJCSBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBmb3JlaWduIHRhYmxl IiwKIAkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKSkpOwogCQkJYnJl YWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJaWYgKHJlbGF0aW9uLT5yZF9yZWwtPnJl bGtpbmQgIT0gUkVMS0lORF9WQVJJQUJMRSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJCQkgZXJybXNnKCJcIiVzXCIg aXMgbm90IGEgc2NoZW1hIHZhcmlhYmxlIiwKKwkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUocmVsYXRpb24pKSkpOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1Is ICJ1bnJlY29nbml6ZWQgb2JqdHlwZTogJWQiLCAoaW50KSBvYmp0eXBlKTsKIAkJCWJyZWFrOwpA QCAtMTg0OCw2ICsxODYwLDggQEAgZ2V0X29iamVjdF9hZGRyZXNzX2RlZmFjbChMaXN0ICpvYmpl Y3QsIGJvb2wgbWlzc2luZ19vaykKIAkJY2FzZSBERUZBQ0xPQkpfTkFNRVNQQUNFOgogCQkJb2Jq dHlwZV9zdHIgPSAic2NoZW1hcyI7CiAJCQlicmVhazsKKwkJY2FzZSBERUZBQ0xPQkpfVkFSSUFC TEU6CisJCQlvYmp0eXBlX3N0ciA9ICJ2YXJpYWJsZXMiOwogCQlkZWZhdWx0OgogCQkJZXJlcG9y dChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSks CkBAIC0yMTEwLDYgKzIxMjQsNyBAQCBwZ19nZXRfb2JqZWN0X2FkZHJlc3MoUEdfRlVOQ1RJT05f QVJHUykKIAl7CiAJCWNhc2UgT0JKRUNUX1RBQkxFOgogCQljYXNlIE9CSkVDVF9TRVFVRU5DRToK KwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCWNhc2UgT0JKRUNUX1ZJRVc6CiAJCWNhc2UgT0JK RUNUX01BVFZJRVc6CiAJCWNhc2UgT0JKRUNUX0lOREVYOgpAQCAtMjIzNCw2ICsyMjQ5LDcgQEAg Y2hlY2tfb2JqZWN0X293bmVyc2hpcChPaWQgcm9sZWlkLCBPYmplY3RUeXBlIG9ianR5cGUsIE9i amVjdEFkZHJlc3MgYWRkcmVzcywKIAkJY2FzZSBPQkpFQ1RfSU5ERVg6CiAJCWNhc2UgT0JKRUNU X1NFUVVFTkNFOgogCQljYXNlIE9CSkVDVF9UQUJMRToKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6 CiAJCWNhc2UgT0JKRUNUX1ZJRVc6CiAJCWNhc2UgT0JKRUNUX01BVFZJRVc6CiAJCWNhc2UgT0JK RUNUX0ZPUkVJR05fVEFCTEU6CkBAIC0zMzAxLDYgKzMzMTcsMTEgQEAgZ2V0T2JqZWN0RGVzY3Jp cHRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0KQogCQkJCQkJCQkJCSBfKCJkZWZhdWx0 IHByaXZpbGVnZXMgb24gbmV3IHNjaGVtYXMgYmVsb25naW5nIHRvIHJvbGUgJXMiKSwKIAkJCQkJ CQkJCQkgR2V0VXNlck5hbWVGcm9tSWQoZGVmYWNsLT5kZWZhY2xyb2xlLCBmYWxzZSkpOwogCQkJ CQkJYnJlYWs7CisJCQkJCWNhc2UgREVGQUNMT0JKX1ZBUklBQkxFOgorCQkJCQkJYXBwZW5kU3Ry aW5nSW5mbygmYnVmZmVyLAorCQkJCQkJCQkJCSBfKCJkZWZhdWx0IHByaXZpbGVnZXMgb24gbmV3 IHNjaGVtYSB2YXJpYWJsZXMgYmVsb25naW5nIHRvIHJvbGUgJXMiKSwKKwkJCQkJCQkJCQkgR2V0 VXNlck5hbWVGcm9tSWQoZGVmYWNsLT5kZWZhY2xyb2xlLCBmYWxzZSkpOworCQkJCQkJYnJlYWs7 CiAJCQkJCWRlZmF1bHQ6CiAJCQkJCQkvKiBzaG91bGRuJ3QgZ2V0IGhlcmUgKi8KIAkJCQkJCWFw cGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwKQEAgLTM1MDQsNiArMzUyNSwxMCBAQCBnZXRSZWxhdGlv bkRlc2NyaXB0aW9uKFN0cmluZ0luZm8gYnVmZmVyLCBPaWQgcmVsaWQpCiAJCQlhcHBlbmRTdHJp bmdJbmZvKGJ1ZmZlciwgXygic2VxdWVuY2UgJXMiKSwKIAkJCQkJCQkgcmVsbmFtZSk7CiAJCQli cmVhazsKKwkJY2FzZSBSRUxLSU5EX1ZBUklBQkxFOgorCQkJYXBwZW5kU3RyaW5nSW5mbyhidWZm ZXIsIF8oInZhcmlhYmxlICVzIiksCisJCQkJCQkJIHJlbG5hbWUpOworCQkJYnJlYWs7CiAJCWNh c2UgUkVMS0lORF9UT0FTVFZBTFVFOgogCQkJYXBwZW5kU3RyaW5nSW5mbyhidWZmZXIsIF8oInRv YXN0IHRhYmxlICVzIiksCiAJCQkJCQkJIHJlbG5hbWUpOwpAQCAtNDgzMiw2ICs0ODU3LDEwIEBA IGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJ CQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLAogCQkJCQkJCQkJCQkgICAiIG9uIHNj aGVtYXMiKTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNlIERFRkFDTE9CSl9WQVJJQUJMRToKKwkJ CQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwKKwkJCQkJCQkJCQkJICAgIiBvbiBz Y2hlbWEgdmFyaWFibGVzIik7CisJCQkJCQlicmVhazsKIAkJCQl9CiAKIAkJCQlpZiAob2JqbmFt ZSkKQEAgLTUxMjQsNiArNTE1Myw4IEBAIGdldF9yZWxraW5kX29ianR5cGUoY2hhciByZWxraW5k KQogCQkJcmV0dXJuIE9CSkVDVF9JTkRFWDsKIAkJY2FzZSBSRUxLSU5EX1NFUVVFTkNFOgogCQkJ cmV0dXJuIE9CSkVDVF9TRVFVRU5DRTsKKwkJY2FzZSBSRUxLSU5EX1ZBUklBQkxFOgorCQkJcmV0 dXJuIE9CSkVDVF9WQVJJQUJMRTsKIAkJY2FzZSBSRUxLSU5EX1ZJRVc6CiAJCQlyZXR1cm4gT0JK RUNUX1ZJRVc7CiAJCWNhc2UgUkVMS0lORF9NQVRWSUVXOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQppbmRl eCA0YTZjOTllMDkwLi41NzQ3MjcyYzlhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQpAQCAtMTgsNyAr MTgsNyBAQCBPQkpTID0gYW1jbWRzLm8gYWdncmVnYXRlY21kcy5vIGFsdGVyLm8gYW5hbHl6ZS5v IGFzeW5jLm8gY2x1c3Rlci5vIGNvbW1lbnQubyBcCiAJZXZlbnRfdHJpZ2dlci5vIGV4cGxhaW4u byBleHRlbnNpb24ubyBmb3JlaWduY21kcy5vIGZ1bmN0aW9uY21kcy5vIFwKIAlpbmRleGNtZHMu byBsb2NrY21kcy5vIG1hdHZpZXcubyBvcGVyYXRvcmNtZHMubyBvcGNsYXNzY21kcy5vIFwKIAlw b2xpY3kubyBwb3J0YWxjbWRzLm8gcHJlcGFyZS5vIHByb2NsYW5nLm8gcHVibGljYXRpb25jbWRz Lm8gXAotCXNjaGVtYWNtZHMubyBzZWNsYWJlbC5vIHNlcXVlbmNlLm8gc3RhdHNjbWRzLm8gc3Vi c2NyaXB0aW9uY21kcy5vIFwKKwlzY2hlbWFjbWRzLm8gc2NoZW1hdmFyLm8gc2VjbGFiZWwubyBz ZXF1ZW5jZS5vIHN0YXRzY21kcy5vIHN1YnNjcmlwdGlvbmNtZHMubyBcCiAJdGFibGVjbWRzLm8g dGFibGVzcGFjZS5vIHRyaWdnZXIubyB0c2VhcmNoY21kcy5vIHR5cGVjbWRzLm8gdXNlci5vIFwK IAl2YWN1dW0ubyB2YWN1dW1sYXp5Lm8gdmFyaWFibGUubyB2aWV3Lm8KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVy LmMKaW5kZXggZWZmMzI1Y2M3ZC4uOGE0MDcxYzkyNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvYWx0ZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jCkBAIC0z NDgsNiArMzQ4LDcgQEAgRXhlY1JlbmFtZVN0bXQoUmVuYW1lU3RtdCAqc3RtdCkKIAkJY2FzZSBP QkpFQ1RfTUFUVklFVzoKIAkJY2FzZSBPQkpFQ1RfSU5ERVg6CiAJCWNhc2UgT0JKRUNUX0ZPUkVJ R05fVEFCTEU6CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJcmV0dXJuIFJlbmFtZVJlbGF0 aW9uKHN0bXQpOwogCiAJCWNhc2UgT0JKRUNUX0NPTFVNTjoKQEAgLTQ3OCw2ICs0NzksNyBAQCBF eGVjQWx0ZXJPYmplY3RTY2hlbWFTdG10KEFsdGVyT2JqZWN0U2NoZW1hU3RtdCAqc3RtdCwKIAkJ Y2FzZSBPQkpFQ1RfVEFCTEU6CiAJCWNhc2UgT0JKRUNUX1ZJRVc6CiAJCWNhc2UgT0JKRUNUX01B VFZJRVc6CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJYWRkcmVzcyA9IEFsdGVyVGFibGVO YW1lc3BhY2Uoc3RtdCwKIAkJCQkJCQkJCQkgIG9sZFNjaGVtYUFkZHIgPyAmb2xkTnNwT2lkIDog TlVMTCk7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbW1l bnQuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbW1lbnQuYwppbmRleCAyZjJlNjliNGE4Li5m NGEzY2FlNmI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb21tZW50LmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29tbWVudC5jCkBAIC04Myw3ICs4Myw3IEBAIENvbW1l bnRPYmplY3QoQ29tbWVudFN0bXQgKnN0bXQpCiAKIAkJCS8qCiAJCQkgKiBBbGxvdyBjb21tZW50 cyBvbmx5IG9uIGNvbHVtbnMgb2YgdGFibGVzLCB2aWV3cywgbWF0ZXJpYWxpemVkCi0JCQkgKiB2 aWV3cywgY29tcG9zaXRlIHR5cGVzLCBhbmQgZm9yZWlnbiB0YWJsZXMgKHdoaWNoIGFyZSB0aGUg b25seQorCQkJICogdmlld3MsIGNvbXBvc2l0ZSB0eXBlcywgdmFyaWFibGVzIGFuZCBmb3JlaWdu IHRhYmxlcyAod2hpY2ggYXJlIHRoZSBvbmx5CiAJCQkgKiByZWxraW5kcyBmb3Igd2hpY2ggcGdf ZHVtcCB3aWxsIGR1bXAgcGVyLWNvbHVtbiBjb21tZW50cykuICBJbgogCQkJICogcGFydGljdWxh ciB3ZSB3aXNoIHRvIGRpc2FsbG93IGNvbW1lbnRzIG9uIGluZGV4IGNvbHVtbnMsCiAJCQkgKiBi ZWNhdXNlIHRoZSBuYW1pbmcgb2YgYW4gaW5kZXgncyBjb2x1bW5zIG1heSBjaGFuZ2UgYWNyb3Nz IFBHCkBAIC05NSwxMCArOTUsMTEgQEAgQ29tbWVudE9iamVjdChDb21tZW50U3RtdCAqc3RtdCkK IAkJCQlyZWxhdGlvbi0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfTUFUVklFVyAmJgogCQkJ CXJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9DT01QT1NJVEVfVFlQRSAmJgog CQkJCXJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9GT1JFSUdOX1RBQkxFICYm Ci0JCQkJcmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RB QkxFKQorCQkJCXJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05F RF9UQUJMRSAmJgorCQkJCXJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9WQVJJ QUJMRSkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19P QkpFQ1RfVFlQRSksCi0JCQkJCQkgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgdGFibGUsIHZpZXcs IG1hdGVyaWFsaXplZCB2aWV3LCBjb21wb3NpdGUgdHlwZSwgb3IgZm9yZWlnbiB0YWJsZSIsCisJ CQkJCQkgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgdGFibGUsIHZpZXcsIG1hdGVyaWFsaXplZCB2 aWV3LCBjb21wb3NpdGUgdHlwZSwgc2NoZW1hIHZhcmlhYmxlIG9yIGZvcmVpZ24gdGFibGUiLAog CQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpKSk7CiAJCQlicmVhazsK IAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwppbmRleCA3NzBjNzVmZTJjLi41Y2Q4YThlNDJjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weS5jCkBAIC0xNTAzLDYgKzE1MDMsOSBAQCBCZWdpbkNvcHkoUGFyc2VTdGF0 ZSAqcHN0YXRlLAogCiAJCUFzc2VydChxdWVyeS0+dXRpbGl0eVN0bXQgPT0gTlVMTCk7CiAKKwkJ LyogRG9uJ3QgZXhwZWN0IExFVCBzdG10IGhlcmUsIGlzIG5vdCBwb3NzaWJsZSB0byBkbyB3cml0 ZSBpdCAqLworCQlBc3NlcnQocXVlcnktPmNvbW1hbmRUeXBlICE9IENNRF9MRVQpOworCiAJCS8q CiAJCSAqIFNpbWlsYXJseSB0aGUgZ3JhbW1hciBkb2Vzbid0IGVuZm9yY2UgdGhlIHByZXNlbmNl IG9mIGEgUkVUVVJOSU5HCiAJCSAqIGNsYXVzZSwgYnV0IHRoaXMgaXMgcmVxdWlyZWQgaGVyZS4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Rpc2NhcmQuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2Rpc2NhcmQuYwppbmRleCAwMWE5OTljMmFjLi43YWE3ZDgzNWY4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kaXNjYXJkLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvZGlzY2FyZC5jCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvYXN5 bmMuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kaXNjYXJkLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv cHJlcGFyZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhci5oIgogI2luY2x1ZGUgImNv bW1hbmRzL3NlcXVlbmNlLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRp bHMvcG9ydGFsLmgiCkBAIC0yNSw3ICsyNiw3IEBACiBzdGF0aWMgdm9pZCBEaXNjYXJkQWxsKGJv b2wgaXNUb3BMZXZlbCk7CiAKIC8qCi0gKiBESVNDQVJEIHsgQUxMIHwgU0VRVUVOQ0VTIHwgVEVN UCB8IFBMQU5TIH0KKyAqIERJU0NBUkQgeyBBTEwgfCBTRVFVRU5DRVMgfCBURU1QIHwgUExBTlMg fCBWQVJJQUJMRVN9CiAgKi8KIHZvaWQKIERpc2NhcmRDb21tYW5kKERpc2NhcmRTdG10ICpzdG10 LCBib29sIGlzVG9wTGV2ZWwpCkBAIC00OCw2ICs0OSwxMCBAQCBEaXNjYXJkQ29tbWFuZChEaXNj YXJkU3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKQogCQkJUmVzZXRUZW1wVGFibGVOYW1lc3Bh Y2UoKTsKIAkJCWJyZWFrOwogCisJCWNhc2UgRElTQ0FSRF9WQVJJQUJMRVM6CisJCQlSZXNldFNj aGVtYVZhcmlhYmxlc0NhY2hlKCk7CisJCQlicmVhazsKKwogCQlkZWZhdWx0OgogCQkJZWxvZyhF UlJPUiwgInVucmVjb2duaXplZCBESVNDQVJEIHRhcmdldDogJWQiLCBzdG10LT50YXJnZXQpOwog CX0KQEAgLTc1LDQgKzgwLDUgQEAgRGlzY2FyZEFsbChib29sIGlzVG9wTGV2ZWwpCiAJUmVzZXRQ bGFuQ2FjaGUoKTsKIAlSZXNldFRlbXBUYWJsZU5hbWVzcGFjZSgpOwogCVJlc2V0U2VxdWVuY2VD YWNoZXMoKTsKKwlSZXNldFNjaGVtYVZhcmlhYmxlc0NhY2hlKCk7CiB9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9ldmVudF90cmlnZ2VyLmMKaW5kZXggZWVjYzg1ZDE0ZS4uNjI3OTllZDI4NCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwpAQCAtMTI2LDYgKzEyNiw3IEBAIHN0YXRpYyBldmVu dF90cmlnZ2VyX3N1cHBvcnRfZGF0YSBldmVudF90cmlnZ2VyX3N1cHBvcnRbXSA9IHsKIAl7IlRF WFQgU0VBUkNIIFRFTVBMQVRFIiwgdHJ1ZX0sCiAJeyJUWVBFIiwgdHJ1ZX0sCiAJeyJVU0VSIE1B UFBJTkciLCB0cnVlfSwKKwl7IlZBUklBQkxFIiwgdHJ1ZX0sCiAJeyJWSUVXIiwgdHJ1ZX0sCiAJ e05VTEwsIGZhbHNlfQogfTsKQEAgLTExNDYsNiArMTE0Nyw3IEBAIEV2ZW50VHJpZ2dlclN1cHBv cnRzT2JqZWN0VHlwZShPYmplY3RUeXBlIG9idHlwZSkKIAkJY2FzZSBPQkpFQ1RfVFNURU1QTEFU RToKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJY2FzZSBPQkpFQ1RfVVNFUl9NQVBQSU5HOgorCQlj YXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJY2FzZSBPQkpFQ1RfVklFVzoKIAkJCXJldHVybiB0cnVl OwogCkBAIC0yMjQ0LDYgKzIyNDYsOCBAQCBzdHJpbmdpZnlfZ3JhbnRfb2JqdHlwZShPYmplY3RU eXBlIG9ianR5cGUpCiAJCQlyZXR1cm4gIlRBQkxFU1BBQ0UiOwogCQljYXNlIE9CSkVDVF9UWVBF OgogCQkJcmV0dXJuICJUWVBFIjsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlyZXR1cm4g IlZBUklBQkxFIjsKIAkJCS8qIHRoZXNlIGN1cnJlbnRseSBhcmVuJ3QgdXNlZCAqLwogCQljYXNl IE9CSkVDVF9BQ0NFU1NfTUVUSE9EOgogCQljYXNlIE9CSkVDVF9BR0dSRUdBVEU6CkBAIC0yMzI2 LDYgKzIzMzAsOCBAQCBzdHJpbmdpZnlfYWRlZnByaXZzX29ianR5cGUoT2JqZWN0VHlwZSBvYmp0 eXBlKQogCQkJcmV0dXJuICJUQUJMRVNQQUNFUyI7CiAJCWNhc2UgT0JKRUNUX1RZUEU6CiAJCQly ZXR1cm4gIlRZUEVTIjsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlyZXR1cm4gIlZBUklB QkxFUyI7CiAJCQkvKiB0aGVzZSBjdXJyZW50bHkgYXJlbid0IHVzZWQgKi8KIAkJY2FzZSBPQkpF Q1RfQUNDRVNTX01FVEhPRDoKIAkJY2FzZSBPQkpFQ1RfQUdHUkVHQVRFOgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhw bGFpbi5jCmluZGV4IGUxYTYyYTFiY2UuLmZjNDQ2OWNiNmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu LmMKQEAgLTk0Niw2ICs5NDYsOSBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwg TGlzdCAqYW5jZXN0b3JzLAogCQkJCWNhc2UgQ01EX0RFTEVURToKIAkJCQkJcG5hbWUgPSBvcGVy YXRpb24gPSAiRGVsZXRlIjsKIAkJCQkJYnJlYWs7CisJCQkJY2FzZSBDTURfTEVUOgorCQkJCQlw bmFtZSA9IG9wZXJhdGlvbiA9ICJMZXQiOworCQkJCQlicmVhazsKIAkJCQlkZWZhdWx0OgogCQkJ CQlwbmFtZSA9ICI/Pz8iOwogCQkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCBi OTQ1YjE1NTZhLi5hNjk0NzFlOTI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9w cmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCkBAIC0xNTEsNiAr MTUxLDcgQEAgUHJlcGFyZVF1ZXJ5KFByZXBhcmVTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVy eVN0cmluZywKIAkJY2FzZSBDTURfSU5TRVJUOgogCQljYXNlIENNRF9VUERBVEU6CiAJCWNhc2Ug Q01EX0RFTEVURToKKwkJY2FzZSBDTURfTEVUOgogCQkJLyogT0sgKi8KIAkJCWJyZWFrOwogCQlk ZWZhdWx0OgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2NoZW1hdmFyLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9zY2hlbWF2YXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwLi43ZGRmOTE3MDhmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvc2NoZW1hdmFyLmMKQEAgLTAsMCArMSwxMjc5IEBACisvKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqCisgKiBzY2hlbWF2YXIuYworICoJICBQb3N0Z3JlU1FMIHNlc3Npb24gdmFyaWFibGUg c3VwcG9ydCBjb2RlLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDE4LCBQ b3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0 IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisg KgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvY29tbWFuZHMvc2NoZW1hdmFy LmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisj aW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiZnVuY2FwaS5oIgorCisjaW5jbHVkZSAi YWNjZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCisjaW5jbHVk ZSAiY2F0YWxvZy9vYmplY3RhZGRyZXNzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2Uu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2Nhc3QuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2Ns YXNzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMv ZGVmcmVtLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVjbWRzLmgiCisjaW5jbHVkZSAiY29t bWFuZHMvc2NoZW1hdmFyLmgiCisjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCisjaW5jbHVk ZSAib3B0aW1pemVyL3BsYW5uZXIuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY29lcmNlLmgi CisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3R5cGUuaCIKKyNpbmNsdWRlICJyZXdyaXRlL3Jld3Jp dGVIYW5kbGVyLmgiCisjaW5jbHVkZSAidXRpbHMvYWNsLmgiCisjaW5jbHVkZSAidXRpbHMvYnVp bHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgorI2luY2x1ZGUgInV0aWxzL2hzZWFy Y2guaCIKKyNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNo ZS5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvcmVsLmgi CisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5o IgorCisvKgorICogVGhpcyBzY2hlbWEgdmFyaWFibGUgY2FjaGUgbWl4ZXMgdGhlIGNhY2hlIGFu ZCBzdG9yYWdlcyBiZWhhdmUuIFRoYXQgaXMgbm90CisgKiBjb3JyZWN0IGFuZCBpdCBpcyBwcm9i bGVtYXRpYywgd2hlbiB2YXJpYWJsZSBpcyByZW1vdmVkLiBUaGUgb3duIHN0b3JhZ2UKKyAqIGJh c2VkIG9uIHN0b3JhZ2UgbWFuYWdlciBjYW4gYmUgaW1wbGVtZW50ZWQsIFJlbEZpbGVOb2RlIGNh biBiZSBkZWZpbmVkIGFuZAorICogbWVjaGFuaXNtIGJhc2VkIG9uIFBlbmRpbmdSZWxEZWxldGUg c3RydWN0IGNhbiBiZSB1c2VkLiBUaGlzIGlzIGEgYXJndW1lbnQKKyAqIGZvciBpbXBsZW1lbnRh dGlvbiBzY2hlbWEgdmFyaWFibGVzIGJhc2VkIG9uIHBnX2NsYXNzLgorICogQWx0ZXJuYXRpdmUg c29sdXRpb24gY2FuIGJlIGRldGVjdGlvbiBvZiBzY2hlbWEgY2hhbmdlcyBhbmQgcmVjaGVjayBh dCBhbmQKKyAqIG9mIHRyYW5zYWN0aW9uLgorICovCit0eXBlZGVmIHN0cnVjdCBTY2hlbWFWYXJE YXRhCit7CisJT2lkCQkJdmFyaWQ7CQkJLyogcGdfY2xhc3MgT0lEIG9mIHRoaXMgc2VxdWVuY2Ug KGhhc2gga2V5KSAqLworCU9pZAkJCXR5cGlkOwkJCS8qIE9JRCBvZiB0aGUgZGF0YSB0eXBlICov CisJaW50MzIJCXR5cG1vZDsKKwlpbnQxNgkJdHlwbGVuOworCWJvb2wJCXR5cGJ5dmFsOworCWJv b2wJCWlzbnVsbDsKKwlib29sCQlmcmVldmFsOworCURhdHVtCQl2YWx1ZTsKKwlib29sCQlpc19y b3d0eXBlOwkJLyogdHJ1ZSB3aGVuIHZhcmlhYmxlIGlzIGNvbXBvc2l0ZSAqLworfSBTY2hlbWFW YXJEYXRhOworCit0eXBlZGVmIFNjaGVtYVZhckRhdGEgKlNjaGVtYVZhcjsKKworc3RhdGljIEhU QUIgKnNjaGVtYXZhcmhhc2h0YWIgPSBOVUxMOwkJLyogaGFzaCB0YWJsZSBmb3Igc2Vzc2lvbiB2 YXJpYWJsZXMgKi8KK3N0YXRpYyBNZW1vcnlDb250ZXh0IFNjaGVtYVZhck1lbW9yeUNvbnRleHQg PSBOVUxMOworCitzdGF0aWMgRGF0dW0gZGF0dW1DYXN0KERhdHVtIHZhbHVlLAorCQkJCQkJICBP aWQgdGFyZ2V0X3R5cGlkLCBpbnQgdGFyZ2V0X3R5cG1vZCwKKwkJCQkJCSAgT2lkIHNvdXJjZV90 eXBpZCwgaW50IHNvdXJjZV90eXBtb2QpOworCitzdGF0aWMgYm9vbAlmaXJzdF90aW1lID0gdHJ1 ZTsKK3N0YXRpYyBib29sCWNhY2hlX2lzX3ZhbGlkID0gdHJ1ZTsKKworc3RhdGljIHZvaWQgSW52 YWxpZGF0ZVNjaGVtYVZhckNhY2hlQ2FsbGJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWlu dDMyIGhhc2h2YWx1ZSk7CitzdGF0aWMgdm9pZCBjcmVhdGVfc2NoZW1hdmFyX2hhc2h0YWJsZSh2 b2lkKTsKKworLyoganVzdCBtYXJrIGNhY2hlIHRvIHJlY2hlY2sgKi8KK3N0YXRpYyB2b2lkCitJ bnZhbGlkYXRlU2NoZW1hVmFyQ2FjaGVDYWxsYmFjayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1 aW50MzIgaGFzaHZhbHVlKQoreworCS8qCisJICogYmVjYXVzZSB0aGlzIGNhY2hlIGhvbGRzIHZh bHVlcyBvZiBzY2hlbWEgdmFyaWFibGVzLCB0aGVuCisJICogdGhlIGNvbnRlbnQgY2Fubm90IGJl IHJlbW92ZWQgaW4gdGhpcyBtb21lbXQuIFdlIHNob3VsZCB0bworCSAqIHdhaXQgb24gdHJhbnNh Y3Rpb24gZW5kLgorCSAqLworCWNhY2hlX2lzX3ZhbGlkID0gZmFsc2U7Cit9CisKKy8qCisgKiBD YXN0IGRhdHVtCisgKi8KK3N0YXRpYyBEYXR1bQorZGF0dW1DYXN0KERhdHVtIHZhbHVlLAorCQkg IE9pZCB0YXJnZXRfdHlwaWQsIGludCB0YXJnZXRfdHlwbW9kLAorCQkgIE9pZCBzb3VyY2VfdHlw aWQsIGludCBzb3VyY2VfdHlwbW9kKQoreworCUNvZXJjaW9uUGF0aFR5cGUgY3BhdGh0eXBlOwor CU9pZAkJY2Z1bmNpZDsKKwlEYXR1bQlyZXN1bHQgPSAoRGF0dW0pIDA7CisJYm9vbAlpc19iaW5h cnlfY2FzdCA9IGZhbHNlOworCisJaWYgKHRhcmdldF90eXBpZCAhPSBzb3VyY2VfdHlwaWQpCisJ eworCQljcGF0aHR5cGUgPSBmaW5kX2NvZXJjaW9uX3BhdGh3YXkodGFyZ2V0X3R5cGlkLCBzb3Vy Y2VfdHlwaWQsCisJCQkJCQkJCQkJCUNPRVJDSU9OX0VYUExJQ0lULAorCQkJCQkJCQkJCQkmY2Z1 bmNpZCk7CisKKwkJaWYgKGNwYXRodHlwZSA9PSBDT0VSQ0lPTl9QQVRIX05PTkUpCisJCQllbG9n KEVSUk9SLCAiY291bGQgbm90IGZpbmQgY2FzdCBmcm9tICVzIHRvICVzIiwKKwkJCQkJCWZvcm1h dF90eXBlX2JlKHNvdXJjZV90eXBpZCksCisJCQkJCQlmb3JtYXRfdHlwZV9iZSh0YXJnZXRfdHlw aWQpKTsKKworCQlpZiAoY3BhdGh0eXBlID09IENPRVJDSU9OX1BBVEhfUkVMQUJFTFRZUEUpCisJ CXsKKwkJCXJlc3VsdCA9IHZhbHVlOworCQkJaXNfYmluYXJ5X2Nhc3QgPSB0cnVlOworCQl9CisJ CWVsc2UgaWYgKGNwYXRodHlwZSA9PSBDT0VSQ0lPTl9QQVRIX0NPRVJDRVZJQUlPKQorCQl7CisJ CQlPaWQJCW91dGZ1bmM7CisJCQlPaWQJCWluZnVuYzsKKwkJCU9pZAkJaW9wYXJhbTsKKwkJCWJv b2wJaXNWYXJsZW5hOworCQkJY2hhcgkqc3RyOworCisJCQlnZXRUeXBlT3V0cHV0SW5mbyhzb3Vy Y2VfdHlwaWQsICZvdXRmdW5jLCAmaXNWYXJsZW5hKTsKKwkJCXN0ciA9IE9pZE91dHB1dEZ1bmN0 aW9uQ2FsbChvdXRmdW5jLCB2YWx1ZSk7CisKKwkJCWdldFR5cGVJbnB1dEluZm8odGFyZ2V0X3R5 cGlkLCAmaW5mdW5jLCAmaW9wYXJhbSk7CisJCQlyZXN1bHQgPSBPaWRJbnB1dEZ1bmN0aW9uQ2Fs bChpbmZ1bmMsIHN0ciwgaW9wYXJhbSwgLTEpOworCQl9CisJCWVsc2UgaWYgKGNwYXRodHlwZSA9 PSBDT0VSQ0lPTl9QQVRIX0ZVTkMpCisJCXsKKwkJCXJlc3VsdCA9IE9pZEZ1bmN0aW9uQ2FsbDMo Y2Z1bmNpZCwKKwkJCQkJCQl2YWx1ZSwKKwkJCQkJCQlJbnQzMkdldERhdHVtKHRhcmdldF90eXBt b2QpLAorCQkJCQkJCUJvb2xHZXREYXR1bShmYWxzZSkpOworCQl9CisJfQorCWVsc2UKKwl7CisJ CXJlc3VsdCA9IHZhbHVlOworCQlpc19iaW5hcnlfY2FzdCA9IHRydWU7CisJfQorCisJaWYgKHRh cmdldF90eXBtb2QgPCAxIHx8ICh0YXJnZXRfdHlwbW9kID09IHNvdXJjZV90eXBtb2QgJiYgaXNf YmluYXJ5X2Nhc3QpKQorCQlyZXR1cm4gcmVzdWx0OworCisJY3BhdGh0eXBlID0gZmluZF90eXBt b2RfY29lcmNpb25fZnVuY3Rpb24odGFyZ2V0X3R5cGlkLCAmY2Z1bmNpZCk7CisJaWYgKGNwYXRo dHlwZSA9PSBDT0VSQ0lPTl9QQVRIX0ZVTkMpCisJeworCQlyZXN1bHQgPSBPaWRGdW5jdGlvbkNh bGwzKGNmdW5jaWQsCisJCQkJCQkJCQkJCXJlc3VsdCwKKwkJCQkJCQkJCQkJSW50MzJHZXREYXR1 bSh0YXJnZXRfdHlwbW9kKSwKKwkJCQkJCQkJCQkJQm9vbEdldERhdHVtKGZhbHNlKSk7CisJfQor CisJcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGJvb2wKK3N2X2dldF90eXBfdHlwbW9kKEZv cm1fcGdfY2xhc3MgY2xhc3Nmb3JtLCBPaWQgKnR5cCwgaW50MzIgKnR5cG1vZCkKK3sKKwlpZiAo Y2xhc3Nmb3JtLT5yZWxraW5kICE9IFJFTEtJTkRfVkFSSUFCTEUpCisJCXJldHVybiBmYWxzZTsK KworCWlmIChjbGFzc2Zvcm0tPnJlbG9mdHlwZSAhPSBJbnZhbGlkT2lkKQorCXsKKwkJT2lkCQl0 eXBvaWQgPSBjbGFzc2Zvcm0tPnJlbG9mdHlwZTsKKworCQlpZiAoZ2V0X3R5cHR5cGUodHlwb2lk KSA9PSBUWVBUWVBFX0NPTVBPU0lURSkKKwkJeworCQkJKnR5cCA9IGNsYXNzZm9ybS0+cmVsb2Z0 eXBlOworCQkJKnR5cG1vZCA9IC0xOworCQl9CisJCWVsc2UKKwkJeworCQkJVHVwbGVEZXNjCXR1 cGRlc2M7CisJCQlSZWxhdGlvbglyZWw7CisJCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyU3RydWN0 OworCisJCQkvKiBmaW5kIGZpcnN0IGZpZWxkICovCisJCQlyZWwgPSByZWxhdGlvbl9vcGVuKHR5 cGVpZFR5cGVSZWxpZChjbGFzc2Zvcm0tPnJlbHR5cGUpLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJ dHVwZGVzYyA9IENyZWF0ZVR1cGxlRGVzY0NvcHkoUmVsYXRpb25HZXREZXNjcihyZWwpKTsKKwor CQkJYXR0clN0cnVjdCA9IFR1cGxlRGVzY0F0dHIodHVwZGVzYywgMCk7CisKKwkJCSp0eXAgPSBh dHRyU3RydWN0LT5hdHR0eXBpZDsKKwkJCSp0eXBtb2QgPSBhdHRyU3RydWN0LT5hdHR0eXBtb2Q7 CisKKwkJCUZyZWVUdXBsZURlc2ModHVwZGVzYyk7CisJCQlyZWxhdGlvbl9jbG9zZShyZWwsIEFj Y2Vzc1NoYXJlTG9jayk7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJKnR5cCA9IGNsYXNzZm9ybS0+ cmVsdHlwZTsKKwkJKnR5cG1vZCA9IC0xOworCX0KKworCXJldHVybiB0cnVlOworfQorCit2b2lk CitzY2hlbWF2YXJfZ2V0X3R5cF90eXBtb2QoT2lkIHZhcmlkLCBPaWQgKnR5cCwgaW50MzIgKnR5 cG1vZCkKK3sKKwlIZWFwVHVwbGUJdHA7CisJRm9ybV9wZ19jbGFzcwljbGFzc2Zvcm07CisKKwkv KiBub3csIHR5cGUgaW5mbyBmb3Igc2NoZW1hIHZhcmlhYmxlIGlzIGNvbGxlY3RlZCAqLworCXRw ID0gU2VhcmNoU3lzQ2FjaGUxKFJFTE9JRCwgT2JqZWN0SWRHZXREYXR1bSh2YXJpZCkpOworCWlm ICghSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFp bGQgZm9yIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCisJY2xhc3Nmb3JtID0gKEZvcm1fcGdfY2xh c3MpIEdFVFNUUlVDVCh0cCk7CisKKwlpZiAoIXN2X2dldF90eXBfdHlwbW9kKGNsYXNzZm9ybSwg dHlwLCB0eXBtb2QpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfV1JP TkdfT0JKRUNUX1RZUEUpLAorCQkJCSBlcnJtc2coIm9iamVjdCAldSBpcyBub3QgYSBzY2hlbWEg dmFyaWFibGUiLCB2YXJpZCkpKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0cCk7Cit9CisKK2Jvb2wK K2lzX3NjaGVtYXZhcihPaWQgdmFyaWQsIGJvb2wgKmlzX3Jvd3R5cGUpCit7CisJSGVhcFR1cGxl CXRwOworCUZvcm1fcGdfY2xhc3MJY2xhc3Nmb3JtOworCWJvb2wJCXJlc3VsdDsKKwlPaWQJCQl0 eXA7CisJaW50MzIJCXR5cG1vZDsKKworCWlmICghT2lkSXNWYWxpZCh2YXJpZCkpCisJCXJldHVy biBmYWxzZTsKKworCS8qIG5vdywgdHlwZSBpbmZvIGZvciBzY2hlbWEgdmFyaWFibGUgaXMgY29s bGVjdGVkICovCisJdHAgPSBTZWFyY2hTeXNDYWNoZTEoUkVMT0lELCBPYmplY3RJZEdldERhdHVt KHZhcmlkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwkJZWxvZyhFUlJPUiwgImNh Y2hlIGxvb2t1cCBmYWlsZCBmb3IgdmFyaWFibGUgJXUiLCB2YXJpZCk7CisKKwljbGFzc2Zvcm0g PSAoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHRwKTsKKworCXJlc3VsdCA9IHN2X2dldF90eXBf dHlwbW9kKGNsYXNzZm9ybSwgJnR5cCwgJnR5cG1vZCk7CisKKwlpZiAocmVzdWx0ICYmIGlzX3Jv d3R5cGUpCisJCSppc19yb3d0eXBlID0gdHlwZV9pc19yb3d0eXBlKHR5cCk7CisKKwlSZWxlYXNl U3lzQ2FjaGUodHApOworCisJcmV0dXJuIHJlc3VsdDsKK30KKworCitzdGF0aWMgU2NoZW1hVmFy CitQcmVwYXJlU2NoZW1hVmFyKE9pZCB2YXJpZCkKK3sKKwlTY2hlbWFWYXIJdmFyOworCWJvb2wJ CWZvdW5kOworCisJaWYgKHNjaGVtYXZhcmhhc2h0YWIgPT0gTlVMTCkKKwkJY3JlYXRlX3NjaGVt YXZhcl9oYXNodGFibGUoKTsKKworCXZhciA9IChTY2hlbWFWYXIpIGhhc2hfc2VhcmNoKHNjaGVt YXZhcmhhc2h0YWIsICZ2YXJpZCwKKwkJCQkJCQkJCQkJICBIQVNIX0VOVEVSLCAmZm91bmQpOwor CWlmICghZm91bmQpCisJeworCQlSZWxhdGlvbglyZWw7CisJCVR1cGxlRGVzYwlkZXNjOworCQlp bnQJCQluYXR0czsKKwkJRGF0dW0JICAgKnZhbHVlczsKKwkJYm9vbAkgICAqbnVsbHM7CisJCUVT dGF0ZQkgICAqZXN0YXRlID0gTlVMTDsKKwkJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0ID0gTlVM TDsKKwkJaW50CQkJbm5vdG51bGxzID0gMDsKKwkJaW50CQlpOworCisJCXZhci0+dmFyaWQgPSB2 YXJpZDsKKworCQlzY2hlbWF2YXJfZ2V0X3R5cF90eXBtb2QodmFyaWQsICZ2YXItPnR5cGlkLCAm dmFyLT50eXBtb2QpOworCQlnZXRfdHlwbGVuYnl2YWwodmFyLT50eXBpZCwgJnZhci0+dHlwbGVu LCAmdmFyLT50eXBieXZhbCk7CisKKwkJdmFyLT5pc19yb3d0eXBlID0gdHlwZV9pc19yb3d0eXBl KHZhci0+dHlwaWQpOworCisJCS8qIHByZXBhcmUgZGVmYXVsdCB2YWx1ZSAqLworCQlyZWwgPSBy ZWxhdGlvbl9vcGVuKHZhcmlkLCBBY2Nlc3NTaGFyZUxvY2spOworCQlkZXNjID0gUmVsYXRpb25H ZXREZXNjcihyZWwpOworCQluYXR0cyA9IGRlc2MtPm5hdHRzOworCisJCWVzdGF0ZSA9IENyZWF0 ZUV4ZWN1dG9yU3RhdGUoKTsKKwkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhl c3RhdGUtPmVzX3F1ZXJ5X2N4dCk7CisKKwkJdmFsdWVzID0gKERhdHVtICopIHBhbGxvYzAobmF0 dHMgKiBzaXplb2YoRGF0dW0pKTsKKwkJbnVsbHMgPSAoYm9vbCAqKSBwYWxsb2MwKG5hdHRzICog c2l6ZW9mKGJvb2wpKTsKKworCQlmb3IgKGkgPSAwOyBpIDwgbmF0dHM7IGkrKykKKwkJeworCQkJ RXhwcgkgICAqZGVmZXhwcjsKKwkJCUV4cHJTdGF0ZSAgKmRlZmV4cHJzOworCisJCQlpZiAoVHVw bGVEZXNjQXR0cihkZXNjLCBpKS0+YXR0aXNkcm9wcGVkKQorCQkJeworCQkJCW51bGxzW2ldID0g dHJ1ZTsKKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJZGVmZXhwciA9IChFeHByICopIGJ1aWxk X2NvbHVtbl9kZWZhdWx0KHJlbCwgaSArIDEpOworCQkJaWYgKGRlZmV4cHIgIT0gTlVMTCkKKwkJ CXsKKwkJCQlkZWZleHByID0gZXhwcmVzc2lvbl9wbGFubmVyKGRlZmV4cHIpOworCQkJCWRlZmV4 cHJzID0gRXhlY0luaXRFeHByKGRlZmV4cHIsIE5VTEwpOworCisJCQkJdmFsdWVzW2ldID0gRXhl Y0V2YWxFeHByU3dpdGNoQ29udGV4dChkZWZleHBycywgR2V0UGVyVHVwbGVFeHByQ29udGV4dChl c3RhdGUpLCAmbnVsbHNbaV0pOworCQkJCWlmICghbnVsbHNbaV0pCisJCQkJCW5ub3RudWxscysr OworCQkJfQorCQkJZWxzZQorCQkJCW51bGxzW2ldID0gdHJ1ZTsKKwkJfQorCisJCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCQlpZiAobm5vdG51bGxzID4gMCkKKwkJewor CQkJRGF0dW0JCXZhbHVlOworCisJCQlpZiAodmFyLT5pc19yb3d0eXBlKQorCQkJeworCQkJCUhl YXBUdXBsZQl0dXBsZTsKKworCQkJCXR1cGxlID0gaGVhcF9mb3JtX3R1cGxlKGRlc2MsIHZhbHVl cywgbnVsbHMpOworCQkJCXZhbHVlID0gSGVhcFR1cGxlSGVhZGVyR2V0RGF0dW0oKEhlYXBUdXBs ZUhlYWRlcikgdHVwbGUtPnRfZGF0YSk7CisJCQl9CisJCQllbHNlCisJCQkJdmFsdWUgPSB2YWx1 ZXNbMF07CisKKwkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhTY2hlbWFWYXJNZW1vcnlDb250ZXh0 KTsKKwkJCXZhci0+dmFsdWUgPSBkYXR1bUNvcHkodmFsdWUsIHZhci0+dHlwYnl2YWwsIHZhci0+ dHlwbGVuKTsKKwkJCXZhci0+aXNudWxsID0gZmFsc2U7CisJCQl2YXItPmZyZWV2YWwgPSB2YXIt PnZhbHVlICE9IHZhbHVlc1swXTsKKworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4 dCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQl2YXItPnZhbHVlID0gKERhdHVtKSAwOworCQkJdmFy LT5pc251bGwgPSB0cnVlOworCQkJdmFyLT5mcmVldmFsID0gZmFsc2U7CisJCX0KKworCQlGcmVl RXhlY3V0b3JTdGF0ZShlc3RhdGUpOworCQlyZWxhdGlvbl9jbG9zZShyZWwsIEFjY2Vzc1NoYXJl TG9jayk7CisJfQorCisJcmV0dXJuIHZhcjsKK30KKworLyoKKyAqIFdhaXQgb24gY29tbWl0IG9y IHJvbGxiYWNrIGFuZCBjbGVhbiB2YWx1ZXMgdGhhdCBtaXNzIGVudHJ5IGluIHN5c3RlbQorICog Y2F0YWxvZy4gSXQgaXMgdGVtcG9yYXJ5IHNvbHV0aW9uIChhbHRob3VnaCBpdCBpcyB3b3JraW5n KS4gU3RvcmFnZSBtYW5hZ2VyCisgKiBiYXNlZCBzb2x1dGlvbiB3aWxsIGJlIGJldHRlciwgYnV0 IGl0IGlzIG5vdCBuZWNlc3NhcnkgZm9yIHRoaXMgUG9DLgorICoKKyAqIHJlbW92ZXMgdW5jb21t aXR0ZWQgb3IgZHJvcHBlZCBzY2hlbWEgdmFyaWFibGVzLCBzbyBldmVudCBjYW4gYmUgaWdub3Jl ZC4KKyAqLworc3RhdGljIHZvaWQKK3JlY2hlY2tfc2NoZW1hX3ZhcmlhYmxlcyhYYWN0RXZlbnQg ZXZlbnQsIHZvaWQgKmFyZykKK3sKKwlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOworCVNjaGVtYVZh cgkJdmFyOworCisJaWYgKGNhY2hlX2lzX3ZhbGlkIHx8IHNjaGVtYXZhcmhhc2h0YWIgPT0gTlVM TCB8fCAhSXNUcmFuc2FjdGlvblN0YXRlKCkpCisJCXJldHVybjsKKworCWhhc2hfc2VxX2luaXQo JnN0YXR1cywgc2NoZW1hdmFyaGFzaHRhYik7CisKKwl3aGlsZSAoKHZhciA9IChTY2hlbWFWYXIp IGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwl7CisJCUhlYXBUdXBsZQl0cCA9 IEludmFsaWRPaWQ7CisKKwkJdHAgPSBTZWFyY2hTeXNDYWNoZTEoUkVMT0lELCBPYmplY3RJZEdl dERhdHVtKHZhci0+dmFyaWQpKTsKKwkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwkJewor CQkJZWxvZyhERUJVRzEsICJ2YXJpYWJsZSAlZCBpcyByZW1vdmVkIGZyb20gY2FjaGUiLCB2YXIt PnZhcmlkKTsKKworCQkJaWYgKHZhci0+ZnJlZXZhbCkKKwkJCXsKKwkJCQlwZnJlZShEYXR1bUdl dFBvaW50ZXIodmFyLT52YWx1ZSkpOworCQkJCXZhci0+ZnJlZXZhbCA9IGZhbHNlOworCQkJfQor CisJCQlpZiAoaGFzaF9zZWFyY2goc2NoZW1hdmFyaGFzaHRhYiwKKwkJCQkJCQkJKHZvaWQgKikg JnZhci0+dmFyaWQsCisJCQkJCQkJCUhBU0hfUkVNT1ZFLAorCQkJCQkJCQlOVUxMKSA9PSBOVUxM KQorCQkJCWVsb2coRVJST1IsICJoYXNoIHRhYmxlIGNvcnJ1cHRlZCIpOworCQl9CisJCWVsc2UK KwkJCVJlbGVhc2VTeXNDYWNoZSh0cCk7CisJfQorCWNhY2hlX2lzX3ZhbGlkID0gdHJ1ZTsKK30K KworLyoKKyAqIERlZmluZVNlc3Npb25WYXJpYWJsZQorICoJCQkJQ3JlYXRlcyBhIG5ldyB2YXJp YWJsZSByZWxhdGVkIHJlbGF0aW9uCisgKi8KK09iamVjdEFkZHJlc3MKK0RlZmluZVNjaGVtYVZh cmlhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU2NoZW1hVmFyU3RtdCAqdmFyKQorewor CUNyZWF0ZVN0bXQgKnN0bXQgPSBtYWtlTm9kZShDcmVhdGVTdG10KTsKKwlPaWQJCQl0eXBvaWQ7 CisJT2lkCQkJdmFyb2lkOworCU9iamVjdEFkZHJlc3MgYWRkcmVzczsKKwlib29sCQljcmVhdGVf Y2FzdDsKKworCS8qCisJICogSWYgaWZfbm90X2V4aXN0cyB3YXMgZ2l2ZW4gYW5kIGEgcmVsYXRp b24gd2l0aCB0aGUgc2FtZSBuYW1lIGFscmVhZHkKKwkgKiBleGlzdHMsIGJhaWwgb3V0LiAoTm90 ZTogd2UgbmVlZG4ndCBjaGVjayB0aGlzIHdoZW4gbm90IGlmX25vdF9leGlzdHMsCisJICogYmVj YXVzZSBEZWZpbmVSZWxhdGlvbiB3aWxsIGNvbXBsYWluIGFueXdheS4pCisJICovCisJaWYgKHZh ci0+aWZfbm90X2V4aXN0cykKKwl7CisJCVJhbmdlVmFyR2V0QW5kQ2hlY2tDcmVhdGlvbk5hbWVz cGFjZSh2YXItPnZhcmlhYmxlLCBOb0xvY2ssICZ2YXJvaWQpOworCQlpZiAoT2lkSXNWYWxpZCh2 YXJvaWQpKQorCQl7CisJCQllcmVwb3J0KE5PVElDRSwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9E VVBMSUNBVEVfVEFCTEUpLAorCQkJCQkgZXJybXNnKCJ2YXJpYWJsZSBcIiVzXCIgYWxyZWFkeSBl eGlzdHMsIHNraXBwaW5nIiwKKwkJCQkJCQl2YXItPnZhcmlhYmxlLT5yZWxuYW1lKSkpOworCQkJ cmV0dXJuIEludmFsaWRPYmplY3RBZGRyZXNzOworCQl9CisJfQorCisJLyoKKwkgKiBWYXJpYWJs ZSBjYW4gYmUgZGVmaW5lZCBieSB0eXBlIChzY2FsYXIsIGNvbXBvc2l0ZSkgb3IgYnkKKwkgKiBm aWVsZCBsaXN0LiBXaGVuIGlzIGRlZmluZWQgYnkgZmllbGQgbGlzdCwgd2Ugc2hvdWxkIHRvIGNy ZWF0ZQorCSAqIG5ldyB0eXBlIHJlbGF0ZWQgdG8gdGhpcyB2YXJpYWJsZS4KKwkgKi8KKwlpZiAo dmFyLT50eXBlTmFtZSAhPSBOVUxMKQorCXsKKwkJT2lkCQl0eXByZWxpZDsKKworCQlBc3NlcnQo dmFyLT5maWVsZHMgPT0gTklMKTsKKworCQl0eXBvaWQgPSBMb29rdXBUeXBlTmFtZU9pZChwc3Rh dGUsIHZhci0+dHlwZU5hbWUsIGZhbHNlKTsKKworCQlpZiAoZ2V0X3R5cHR5cGUodHlwb2lkKSA9 PSBUWVBUWVBFX1BTRVVETykKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkgZXJybXNnKCJ2YXJpYWJsZSBjYW5ub3QgYmUg JXMiLAorCQkJCQkJCWZvcm1hdF90eXBlX2JlKHZhcm9pZCkpKSk7CisKKwkJdHlwcmVsaWQgPSB0 eXBlaWRUeXBlUmVsaWQodHlwb2lkKTsKKworCQlpZiAoIU9pZElzVmFsaWQodHlwcmVsaWQpKQor CQl7CisJCQkvKgorCQkJICogd2hlbiB2YXJpYWJsZSB0eXBlIGlzIG5vdCBjb21wb3NpdGUgdHlw ZSwgd2Ugc2hvdWxkIHRvIGNyZWF0ZQorCQkJICogYXV4IGNvbXBvc2l0ZSB0eXBlLgorCQkJICov CisJCQlDb2x1bW5EZWYgKmNvbGRlZiA9IG1ha2VOb2RlKENvbHVtbkRlZik7CisKKwkJCWNvbGRl Zi0+aW5oY291bnQgPSAwOworCQkJY29sZGVmLT5pc19sb2NhbCA9IHRydWU7CisJCQljb2xkZWYt PmlzX25vdF9udWxsID0gZmFsc2U7CisJCQljb2xkZWYtPmlzX2Zyb21fdHlwZSA9IGZhbHNlOwor CQkJY29sZGVmLT5zdG9yYWdlID0gMDsKKwkJCWNvbGRlZi0+cmF3X2RlZmF1bHQgPSB2YXItPmRl ZmV4cHI7CisJCQljb2xkZWYtPmNvb2tlZF9kZWZhdWx0ID0gTlVMTDsKKwkJCWNvbGRlZi0+Y29s bENsYXVzZSA9IE5VTEw7CisJCQljb2xkZWYtPmNvbGxPaWQgPSBJbnZhbGlkT2lkOworCQkJY29s ZGVmLT5jb25zdHJhaW50cyA9IE5JTDsKKwkJCWNvbGRlZi0+bG9jYXRpb24gPSAtMTsKKworCQkJ LyogVXNlIGltcGxpdCBuYW1lIHNhbWUgbGlrZSB2YXJpYWJsZSBuYW1lICovCisJCQljb2xkZWYt PmNvbG5hbWUgPSB2YXItPnZhcmlhYmxlLT5yZWxuYW1lOworCQkJY29sZGVmLT50eXBlTmFtZSA9 IHZhci0+dHlwZU5hbWU7CisKKwkJCXN0bXQtPnRhYmxlRWx0cyA9IGxhcHBlbmQoc3RtdC0+dGFi bGVFbHRzLCBjb2xkZWYpOworCisJCQljcmVhdGVfY2FzdCA9IGZhbHNlOworCQl9CisJCWVsc2UK KwkJeworCQkJVHVwbGVEZXNjCXR1cGRlc2M7CisJCQlSZWxhdGlvbglyZWw7CisJCQlpbnQJCQlp OworCisJCQlyZWwgPSByZWxhdGlvbl9vcGVuKHR5cHJlbGlkLCBBY2Nlc3NTaGFyZUxvY2spOwor CQkJdHVwZGVzYyA9IENyZWF0ZVR1cGxlRGVzY0NvcHkoUmVsYXRpb25HZXREZXNjcihyZWwpKTsK KworCQkJZm9yIChpID0gMDsgaSA8IHR1cGRlc2MtPm5hdHRzOyBpKyspCisJCQl7CisJCQkJRm9y bV9wZ19hdHRyaWJ1dGUgYXR0clN0cnVjdCA9IFR1cGxlRGVzY0F0dHIodHVwZGVzYywgaSk7CisK KwkJCQlpZiAoIWF0dHJTdHJ1Y3QtPmF0dGlzZHJvcHBlZCkKKwkJCQl7CisJCQkJCUNvbHVtbkRl ZiAqY29sZGVmID0gbWFrZU5vZGUoQ29sdW1uRGVmKTsKKworCQkJCQljb2xkZWYtPmluaGNvdW50 ID0gMDsKKwkJCQkJY29sZGVmLT5pc19sb2NhbCA9IHRydWU7CisJCQkJCWNvbGRlZi0+aXNfbm90 X251bGwgPSBmYWxzZTsKKwkJCQkJY29sZGVmLT5pc19mcm9tX3R5cGUgPSBmYWxzZTsKKwkJCQkJ Y29sZGVmLT5zdG9yYWdlID0gMDsKKwkJCQkJY29sZGVmLT5yYXdfZGVmYXVsdCA9IE5VTEw7CisJ CQkJCWNvbGRlZi0+Y29va2VkX2RlZmF1bHQgPSBOVUxMOworCQkJCQljb2xkZWYtPmNvbGxDbGF1 c2UgPSBOVUxMOworCQkJCQljb2xkZWYtPmNvbGxPaWQgPSBJbnZhbGlkT2lkOworCQkJCQljb2xk ZWYtPmNvbnN0cmFpbnRzID0gTklMOworCQkJCQljb2xkZWYtPmxvY2F0aW9uID0gLTE7CisKKwkJ CQkJY29sZGVmLT5jb2xuYW1lID0gcHN0cmR1cChOYW1lU3RyKGF0dHJTdHJ1Y3QtPmF0dG5hbWUp KTsKKwkJCQkJY29sZGVmLT50eXBlTmFtZSA9IG1ha2VUeXBlTmFtZUZyb21PaWQoYXR0clN0cnVj dC0+YXR0dHlwaWQsCisJCQkJCQkJCQkJCQkJCSAgIGF0dHJTdHJ1Y3QtPmF0dHR5cG1vZCk7CisK KwkJCQkJc3RtdC0+dGFibGVFbHRzID0gbGFwcGVuZChzdG10LT50YWJsZUVsdHMsIGNvbGRlZik7 CisJCQkJfQorCQkJfQorCisJCQlGcmVlVHVwbGVEZXNjKHR1cGRlc2MpOworCQkJcmVsYXRpb25f Y2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCQljcmVhdGVfY2FzdCA9IHRydWU7CisJ CX0KKwl9CisJZWxzZQorCXsKKwkJQXNzZXJ0KHZhci0+dHlwZU5hbWUgPT0gTlVMTCk7CisJCUFz c2VydCh2YXItPmZpZWxkcyAhPSBOSUwpOworCisJCXN0bXQtPnRhYmxlRWx0cyA9IHZhci0+Zmll bGRzOworCisJCWNyZWF0ZV9jYXN0ID0gZmFsc2U7CisJfQorCisJc3RtdC0+cmVsYXRpb24gPSB2 YXItPnZhcmlhYmxlOworCXN0bXQtPmluaFJlbGF0aW9ucyA9IE5JTDsKKwlzdG10LT5jb25zdHJh aW50cyA9IE5JTDsKKwlzdG10LT5vcHRpb25zID0gTklMOworCXN0bXQtPm9uY29tbWl0ID0gT05D T01NSVRfTk9PUDsKKwlzdG10LT50YWJsZXNwYWNlbmFtZSA9IE5VTEw7CisJc3RtdC0+aWZfbm90 X2V4aXN0cyA9IHZhci0+aWZfbm90X2V4aXN0czsKKworCS8qCisJICogU2NoZW1hIHZhcmlhYmxl cyB1c2VzIHJlbHR5cGUgYW5kIHJlbG9mdHlwZSBmaWVsZHMuIFRoZSByZWx0eXBlIGlzCisJICog Y29tcG9zaXRlIGFsd2F5cyBmb3Igc2NhbGFyIGFuZCBub24gc2NhbGFyIHZhcmlhYmxlcy4gSXQg aXMgdXNlZCB3aGVuCisJICogd2UgbmVlZCBhIHZhcmlhYmxlJ3MgdHVwbGUgZGVzY3JpcHJpb24u IFdoZW4gdmFyaWFibGUgdHlwZSBpcyBjb21wb3NpdGUsCisJICogdGhlbiBpcyByZWZlcmVuY2Vk IHdpdGhvdXQgY2hhbmdlLiBTY2FsYXIgdmFyaWFibGUgViBpcyB0cmFuc2xhdGVkIHRvCisJICog Y29tcG9zaXRlIHR5cGUgKHZfbmFtZSB2X3R5cGUpLgorCSAqIFRoZSByZWx0eXBlIGlzIGFsd2F5 cyBjb21wb3NpdGUgLSBzZWUgY2F0YWxvZy9oZWFwLmMgQWRkTmV3UmVsYXRpb25UeXBlLAorCSAq IGJ1dCBmb3Igc2NoZW1hIHZhcmlhYmxlcyBiYXNlZCBvbiBzb21lIHR5cGUgaXMgdGhpcyBiZWhh dmUgdW53YW50ZWQuCisJICogdmFyaWFibGUgdHlwZSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIGJh c2UgdHlwZS4gU28gaW4gdGhpcyBjYXNlIGlzIGJldHRlcgorCSAqIGRlZmluZSByZWx0eXBlIGFz IGRvbWFpbiBvZiBiYXNlIHR5cGUuIEJ1dCB0aGlzIGNoYW5nZSBicmVhayBjb25zaXN0ZW5jeQor CSAqIG9mIHJlbHR5cGUgLSBzbyBJIGNoYW5nZWQgbm90aGluZyBhbmQgaW1wbGljaXRseSBnZW5l cmF0ZSBuZWNlc3NhcnkgY2FzdHMuCisJICovCisJc3RtdC0+b2ZUeXBlbmFtZSA9IHZhci0+dHlw ZU5hbWU7CisKKwlhZGRyZXNzID0gRGVmaW5lUmVsYXRpb24oc3RtdCwgUkVMS0lORF9WQVJJQUJM RSwgSW52YWxpZE9pZCwgTlVMTCwgTlVMTCk7CisJQXNzZXJ0KGFkZHJlc3Mub2JqZWN0SWQgIT0g SW52YWxpZE9pZCk7CisKKwlpZiAoY3JlYXRlX2Nhc3QpCisJeworCQlPYmplY3RBZGRyZXNzIGMx LCBjMiwgcmVmZXJlbmNlZF90MSwgcmVmZXJlbmNlZF90MjsKKwkJVHlwZU5hbWUgKnQxID0gdmFy LT50eXBlTmFtZTsKKwkJVHlwZU5hbWUgKnQyID0gbWFrZVR5cGVOYW1lRnJvbU9pZChnZXRfcmVs X3R5cGVfaWQoYWRkcmVzcy5vYmplY3RJZCksIC0xKTsKKworCQkvKgorCQkgKiBUaGlzIGlzIHVn bHkgcGFydCAtIGJ1dCBJIHNob3VsZCB0byB0ZWFjaCBQb3N0Z3Jlcywgc28gdDEgYW5kIHQyIHR5 cGVzCisJCSAqIGFyZSBjYXN0YWJsZS4gVW5mb3J0dW5hdGVsbHksIENyZWF0ZUNhc3QgY2Fubm90 IHRvIGNoYW5nZSBkZXBlbmRlbmN5LAorCQkgKiBzbyBmcmVzaCBkZXBlbmRlbmN5IHNob3VsZCBi ZSByZW1vdmVkIGFuZCByZWNyZWF0ZWQgd2l0aCBERVBFTkRFTkNZX0FVVE8KKwkJICogZmxhZy4g SW4gdGhpcyBjYXNlLCB3ZSBhcmUgc3VyZSBzbyBib3RoIHR5cGVzIGFyZSBjb21wb3NpdGUsIHNv IG1heWJlIGxlc3MKKwkJICogdWdseSBjYW4gYmUgdXNlIHJlbHR5cGUgYXMgZG9tYWluIHR5cGUg b2YgYmFzZSB0eXBlIGluc3RlYWQgY29weS4KKwkJICovCisJCUNyZWF0ZUNhc3RTdG10ICpuID0g bWFrZU5vZGUoQ3JlYXRlQ2FzdFN0bXQpOworCisJCW4tPnNvdXJjZXR5cGUgPSB0MTsKKwkJbi0+ dGFyZ2V0dHlwZSA9IHQyOworCQluLT5mdW5jID0gTlVMTDsKKwkJbi0+Y29udGV4dCA9IENPRVJD SU9OX0lNUExJQ0lUOworCQluLT5pbm91dCA9IHRydWU7CisKKwkJYzEgPSBDcmVhdGVDYXN0KG4p OworCisJCW4tPnNvdXJjZXR5cGUgPSB0MjsKKwkJbi0+dGFyZ2V0dHlwZSA9IHQxOworCisJCWMy ID0gQ3JlYXRlQ2FzdChuKTsKKworCQlkZWxldGVEZXBlbmRlbmN5UmVjb3Jkc0ZvcihDYXN0UmVs YXRpb25JZCwgYzEub2JqZWN0SWQsIGZhbHNlKTsKKwkJZGVsZXRlRGVwZW5kZW5jeVJlY29yZHNG b3IoQ2FzdFJlbGF0aW9uSWQsIGMyLm9iamVjdElkLCBmYWxzZSk7CisKKwkJcmVmZXJlbmNlZF90 MS5jbGFzc0lkID0gVHlwZVJlbGF0aW9uSWQ7CisJCXJlZmVyZW5jZWRfdDEub2JqZWN0SWQgPSBn ZXRfcmVsX3R5cGVfaWQoYWRkcmVzcy5vYmplY3RJZCk7CisJCXJlZmVyZW5jZWRfdDEub2JqZWN0 U3ViSWQgPSAwOworCisJCXJlZmVyZW5jZWRfdDIuY2xhc3NJZCA9IFR5cGVSZWxhdGlvbklkOwor CQlyZWZlcmVuY2VkX3QyLm9iamVjdElkID0gTG9va3VwVHlwZU5hbWVPaWQocHN0YXRlLCB2YXIt PnR5cGVOYW1lLCBmYWxzZSk7CisJCXJlZmVyZW5jZWRfdDIub2JqZWN0U3ViSWQgPSAwOworCisJ CXJlY29yZERlcGVuZGVuY3lPbigmYzEsICZyZWZlcmVuY2VkX3QxLCBERVBFTkRFTkNZX0FVVE8p OworCQlyZWNvcmREZXBlbmRlbmN5T24oJmMxLCAmcmVmZXJlbmNlZF90MiwgREVQRU5ERU5DWV9B VVRPKTsKKwkJcmVjb3JkRGVwZW5kZW5jeU9uKCZjMiwgJnJlZmVyZW5jZWRfdDEsIERFUEVOREVO Q1lfQVVUTyk7CisJCXJlY29yZERlcGVuZGVuY3lPbigmYzIsICZyZWZlcmVuY2VkX3QyLCBERVBF TkRFTkNZX0FVVE8pOworCX0KKworCXJldHVybiBhZGRyZXNzOworfQorCisvKgorICogSW1wbGVt ZW50YXRpb24gb2Ygc2NoZW1hdmFyIGNhY2hlLiBJdCBpcyBxdWVzdGlvbiBpZiBpdCBzaG91bGQg YmUgaW4gdGhpcyBwbGFjZSwgb3IKKyAqIGl0IHNob3VsZCBiZSBzdG9yYWdlIHJlbGF0ZWQgb3Ig Y2FjaGUgcmVsYXRlZCBwbGFjZT8gQnV0IGZvciB0aGlzIG1vbWVudCAoUG9DKSBpdAorICogY2Fu IGJlIGhlcmUuIENhY2hlIGlzIGltcGxlbWVudGVkIGFzIGhhc2ggdGFibGUgd2l0aCBvd24gbWVt b3J5IGNvbnRleHQuCisgKi8KKworLyoKKyAqIENyZWF0ZSB0aGUgaGFzaCB0YWJsZSBmb3Igc3Rv cmluZyBzY2hlbWEgdmFyaWFibGVzCisgKi8KK3N0YXRpYyB2b2lkCitjcmVhdGVfc2NoZW1hdmFy X2hhc2h0YWJsZSh2b2lkKQoreworCUhBU0hDVEwJCWN0bDsKKworCS8qIHNldCBjYWxsYmFja3Mg Ki8KKwlpZiAoZmlyc3RfdGltZSkKKwl7CisKKwkJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJh Y2soUkVMT0lELAorCQkJCQkJCQkJICBJbnZhbGlkYXRlU2NoZW1hVmFyQ2FjaGVDYWxsYmFjaywK KwkJCQkJCQkJCSAgKERhdHVtKSAwKTsKKwkJUmVnaXN0ZXJYYWN0Q2FsbGJhY2socmVjaGVja19z Y2hlbWFfdmFyaWFibGVzLCBOVUxMKTsKKworCQlmaXJzdF90aW1lID0gZmFsc2U7CisJfQorCisJ LyogbmVlZHMgb3duIGxvbmcgbGlmZSBtZW1vcnkgY29udGV4dCAqLworCWlmIChTY2hlbWFWYXJN ZW1vcnlDb250ZXh0ID09IE5VTEwpCisJeworCQlTY2hlbWFWYXJNZW1vcnlDb250ZXh0ID0gQWxs b2NTZXRDb250ZXh0Q3JlYXRlKFRvcE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkJCQkJCQkic2No ZW1hIHZhcmlhYmxlcyIsCisJCQkJCQkJCQkJCQkJCQlBTExPQ1NFVF9TVEFSVF9TTUFMTF9TSVpF Uyk7CisJfQorCisJbWVtc2V0KCZjdGwsIDAsIHNpemVvZihjdGwpKTsKKwljdGwua2V5c2l6ZSA9 IHNpemVvZihPaWQpOworCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoU2NoZW1hVmFyRGF0YSk7CisJ Y3RsLmhjeHQgPSBTY2hlbWFWYXJNZW1vcnlDb250ZXh0OworCisJc2NoZW1hdmFyaGFzaHRhYiA9 IGhhc2hfY3JlYXRlKCJTY2hlbWEgdmFyaWFibGVzIiwgNjQsICZjdGwsCisJCQkJCQkJCQkJSEFT SF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJY2FjaGVfaXNfdmFsaWQgPSB0 cnVlOworfQorCisvKgorICogRmFzdCBkcm9wIGNvbXBsZXRlIGNvbnRlbnQgb2Ygc2NoZW1hIHZh cmlhYmxlcworICovCit2b2lkCitSZXNldFNjaGVtYVZhcmlhYmxlc0NhY2hlKHZvaWQpCit7CisJ aWYgKHNjaGVtYXZhcmhhc2h0YWIpCisJeworCQloYXNoX2Rlc3Ryb3koc2NoZW1hdmFyaGFzaHRh Yik7CisJCXNjaGVtYXZhcmhhc2h0YWIgPSBOVUxMOworCX0KKworCWlmIChTY2hlbWFWYXJNZW1v cnlDb250ZXh0ICE9IE5VTEwpCisJeworCQlNZW1vcnlDb250ZXh0UmVzZXQoU2NoZW1hVmFyTWVt b3J5Q29udGV4dCk7CisJfQorfQorCisvKgorICogQ29weSBkYXR1bSB2YWx1ZSB0byBzY2hlbWEg dmFyaWFibGVzIGNhY2hlIHBsYWNlCisgKi8KK3N0YXRpYyB2b2lkCitTZXRWYWx1ZShTY2hlbWFW YXIgdmFyLAorCQkgRGF0dW0gdmFsdWUsIGJvb2wgaXNOdWxsLAorCQkgT2lkIHR5cGlkLCBpbnQz MiB0eXBtb2QpCit7CisJLyogcmVsZWFzZSBwcmV2aW91c2x5IHN0b3JlZCB2YWx1ZSAqLworCWlm ICh2YXItPmZyZWV2YWwpCisJeworCQlwZnJlZShEYXR1bUdldFBvaW50ZXIodmFyLT52YWx1ZSkp OworCQl2YXItPmZyZWV2YWwgPSBmYWxzZTsKKwl9CisKKwlpZiAoIWlzTnVsbCkKKwl7CisJCU1l bW9yeUNvbnRleHQgb2xkY3h0OworCisJCS8qCisJCSAqIGNhc3QgdGhlIHZhbHVlIGlmIGNvbnZl cnNpb24gaXMgbmVjZXNzYXJ5LgorCQkgKiBFeHBlY3Rpbmc6IGN1cnJlbnQgY29udGV4dCBpcyBz aG9ydCBjb250ZXh0LgorCQkgKgorCQkgKiBRVUVTVElPTjogaG93IG11Y2ggc2hvdWxkIGJlIHRo aXMgY2FzdCB0b2xlcmFudC9zdHJpY3Q/CisJCSAqLworCQlpZiAodmFyLT50eXBpZCAhPSB0eXBp ZCB8fCB2YXItPnR5cG1vZCAhPSB0eXBtb2QpCisJCXsKKwkJCXZhbHVlID0gZGF0dW1DYXN0KHZh bHVlLAorCQkJCQkJCQl2YXItPnR5cGlkLCB2YXItPnR5cG1vZCwKKwkJCQkJCQkJdHlwaWQsIHR5 cG1vZCk7CisJCX0KKworCQl2YXItPmlzbnVsbCA9IGZhbHNlOworCisJCW9sZGN4dCA9IE1lbW9y eUNvbnRleHRTd2l0Y2hUbyhTY2hlbWFWYXJNZW1vcnlDb250ZXh0KTsKKworCQl2YXItPnZhbHVl ID0gZGF0dW1Db3B5KHZhbHVlLCB2YXItPnR5cGJ5dmFsLCB2YXItPnR5cGxlbik7CisJCWlmICh2 YXItPnZhbHVlICE9IHZhbHVlKQorCQkJdmFyLT5mcmVldmFsID0gdHJ1ZTsKKworCQlNZW1vcnlD b250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKwl9CisJZWxzZQorCXsKKwkJdmFyLT52YWx1ZSA9IChE YXR1bSkgMDsKKwkJdmFyLT5pc251bGwgPSB0cnVlOworCX0KK30KKworLyoKKyAqIFJldHVybnMg dmFyaWFibGUgbmFtZQorICovCitjaGFyICoKK2dldF9zY2hlbWF2YXJfbmFtZShPaWQgdmFyaWQp Cit7CisJSGVhcFR1cGxlCQlyZWxUdXA7CisJRm9ybV9wZ19jbGFzcwlyZWxGb3JtOworCWNoYXIJ ICAgKm5zcG5hbWU7CisJY2hhcgkgICAqcmVsbmFtZTsKKworCXJlbFR1cCA9IFNlYXJjaFN5c0Nh Y2hlMShSRUxPSUQsCisJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKHZhcmlkKSk7CisJaWYgKCFI ZWFwVHVwbGVJc1ZhbGlkKHJlbFR1cCkpCisJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3Igc2NoZW1hIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCXJlbEZvcm0gPSAoRm9ybV9w Z19jbGFzcykgR0VUU1RSVUNUKHJlbFR1cCk7CisKKwkvKiBRdWFsaWZ5IHRoZSBuYW1lIGlmIG5v dCB2aXNpYmxlIGluIHNlYXJjaCBwYXRoICovCisJaWYgKFJlbGF0aW9uSXNWaXNpYmxlKHZhcmlk KSkKKwkJbnNwbmFtZSA9IE5VTEw7CisJZWxzZQorCQluc3BuYW1lID0gZ2V0X25hbWVzcGFjZV9u YW1lKHJlbEZvcm0tPnJlbG5hbWVzcGFjZSk7CisKKwlyZWxuYW1lID0gcXVvdGVfcXVhbGlmaWVk X2lkZW50aWZpZXIobnNwbmFtZSwgTmFtZVN0cihyZWxGb3JtLT5yZWxuYW1lKSk7CisKKwlSZWxl YXNlU3lzQ2FjaGUocmVsVHVwKTsKKworCXJldHVybiByZWxuYW1lOworfQorCisvKgorICogQWNj ZXNzIGZ1bmN0aW9ucyB0byBzY2hlbWEgdmFyaWFibGVzLgorICovCit2b2lkCitTZXRTY2hlbWFW YXJpYWJsZShPaWQgdmFyaWQsIERhdHVtIHZhbHVlLCBib29sIGlzTnVsbCwgT2lkIHR5cGlkLCBp bnQzMiB0eXBtb2QpCit7CisJU2NoZW1hVmFyCXZhcjsKKworCXZhciA9IFByZXBhcmVTY2hlbWFW YXIodmFyaWQpOworCVNldFZhbHVlKHZhciwgdmFsdWUsIGlzTnVsbCwgdHlwaWQsIHR5cG1vZCk7 Cit9CisKKy8qCisgKiBTZWN1cml6ZWQgdmVyc2lvbnMgU2V0U2NoZW1hVmFyaWFibGUKKyAqLwor dm9pZAorU2V0U2NoZW1hVmFyaWFibGVTZWN1cmUoT2lkIHZhcmlkLCBEYXR1bSB2YWx1ZSwgYm9v bCBpc051bGwsIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kKQoreworCUFjbFJlc3VsdAkJYWNscmVz dWx0OworCisJLyogQ2hlY2sgcGVybWlzc2lvbnMgKi8KKwlhY2xyZXN1bHQgPSBwZ19jbGFzc19h Y2xjaGVjayh2YXJpZCwgR2V0VXNlcklkKCksIEFDTF9VUERBVEUpOworCWlmIChhY2xyZXN1bHQg IT0gQUNMQ0hFQ0tfT0spCisJCWFjbGNoZWNrX2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNUX1ZBUklB QkxFLCBnZXRfc2NoZW1hdmFyX25hbWUodmFyaWQpKTsKKworCVNldFNjaGVtYVZhcmlhYmxlKHZh cmlkLCB2YWx1ZSwgaXNOdWxsLCB0eXBpZCwgdHlwbW9kKTsKK30KKworRGF0dW0KK0dldFNjaGVt YVZhcmlhYmxlKE9pZCB2YXJpZCwgYm9vbCAqaXNOdWxsLAorCQkJCQkJT2lkIHR5cGlkLCBpbnQz MiB0eXBtb2QsCisJCQkJCQlpbnQxNiB0eXBsZW4sIGJvb2wgdHlwYnl2YWwpCit7CisJU2NoZW1h VmFyCXZhcjsKKwlEYXR1bQkJcmVzdWx0ID0gKERhdHVtKSAwOworCisJdmFyID0gUHJlcGFyZVNj aGVtYVZhcih2YXJpZCk7CisKKwlpZiAoIXZhci0+aXNudWxsKQorCXsKKwkJcmVzdWx0ID0gZGF0 dW1DYXN0KHZhci0+dmFsdWUsIHR5cGlkLCB0eXBtb2QsCisJCQkJCQkJCXZhci0+dHlwaWQsIHZh ci0+dHlwbW9kKTsKKwkJKmlzTnVsbCA9IGZhbHNlOworCisJCWlmIChyZXN1bHQgPT0gdmFyLT52 YWx1ZSkKKwkJCXJlc3VsdCA9IGRhdHVtQ29weShyZXN1bHQsIHR5cGJ5dmFsLCB0eXBsZW4pOwor CX0KKwllbHNlCisJCSppc051bGwgPSB0cnVlOworCisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoK KyAqIFNlY3VyaXplZCB2ZXJzaW9uIG9mIEdldFNjaGVtYVZhcmlhYmxlCisgKi8KK0RhdHVtCitH ZXRTY2hlbWFWYXJpYWJsZVNlY3VyZShPaWQgdmFyaWQsIGJvb2wgKmlzTnVsbCwKKwkJCQkJCU9p ZCB0eXBpZCwgaW50MzIgdHlwbW9kLAorCQkJCQkJaW50MTYgdHlwbGVuLCBib29sIHR5cGJ5dmFs KQoreworCUFjbFJlc3VsdCBhY2xyZXN1bHQ7CisKKwkvKiBDaGVjayBwZXJtaXNzaW9ucyAqLwor CWFjbHJlc3VsdCA9IHBnX2NsYXNzX2FjbGNoZWNrKHZhcmlkLCBHZXRVc2VySWQoKSwgQUNMX1NF TEVDVCk7CisJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJYWNsY2hlY2tfZXJyb3Io YWNscmVzdWx0LCBPQkpFQ1RfVkFSSUFCTEUsIGdldF9zY2hlbWF2YXJfbmFtZSh2YXJpZCkpOwor CisJcmV0dXJuIEdldFNjaGVtYVZhcmlhYmxlKHZhcmlkLCBpc051bGwsIHR5cGlkLCB0eXBtb2Qs IHR5cGxlbiwgdHlwYnl2YWwpOworfQorCisvKgorICogVjEgZnVuY3Rpb24gQVBJCisgKgorICog dm9pZCBzZXRfc2NoZW1hX3ZhcmlhYmxlKHZhciByZWdjbGFzcywgdmFsdWUgYW55ZWxlbWVudCk7 CisgKiBhbnllbGVtZW50IGdldF9zY2hlbWFfdmFyaWFibGUodmFyIHJlZ2NsYXNzLCBleHBlY3Rl ZF90eXBlIGFueWVsZW1lbnQpCisgKgorICovCitEYXR1bQorc2V0X3NjaGVtYV92YXJpYWJsZShQ R19GVU5DVElPTl9BUkdTKQoreworCU9pZAkJdmFyaWQ7CisJRGF0dW0JdmFsdWU7CisJYm9vbAlp c051bGw7CisJT2lkCQl0eXBpZDsKKwlpbnQxNgl0eXBsZW47CisJYm9vbAl0eXBieXZhbDsKKwor CWlmIChQR19BUkdJU05VTEwoMCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJS Q09ERV9OVUxMX1ZBTFVFX05PVF9BTExPV0VEKSwKKwkJCQkgZXJybXNnKCJudWxsIHZhbHVlIG5v dCBhbGxvd2VkIGZvciB2YXJpYWJsZSBpZGVudGl0eSIpKSk7CisKKwl2YXJpZCA9IFBHX0dFVEFS R19PSUQoMCk7CisKKwlpZiAoIVBHX0FSR0lTTlVMTCgxKSkKKwl7CisJCXZhbHVlID0gUEdfR0VU QVJHX0RBVFVNKDEpOworCQlpc051bGwgPSBmYWxzZTsKKwl9CisJZWxzZQorCXsKKwkJdmFsdWUg PSAoRGF0dW0pIDA7CisJCWlzTnVsbCA9IHRydWU7CisJfQorCisJdHlwaWQgPSBnZXRfZm5fZXhw cl9hcmd0eXBlKGZjaW5mby0+ZmxpbmZvLCAxKTsKKwlpZiAodHlwaWQgPT0gSW52YWxpZE9pZCkK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVS X1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3QgZGV0ZXJtaW5lIGlucHV0IGRhdGEgdHlw ZSIpKSk7CisKKwlnZXRfdHlwbGVuYnl2YWwodHlwaWQsICZ0eXBsZW4sICZ0eXBieXZhbCk7CisJ U2V0U2NoZW1hVmFyaWFibGVTZWN1cmUodmFyaWQsIHZhbHVlLCBpc051bGwsIHR5cGlkLCAtMSk7 CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQorCitEYXR1bQorZ2V0X3NjaGVtYV92YXJpYWJsZShQ R19GVU5DVElPTl9BUkdTKQoreworCU9pZAkJdmFyaWQ7CisJT2lkCQl0eXBpZDsKKwlpbnQxNgl0 eXBsZW47CisJYm9vbAl0eXBieXZhbDsKKwlib29sCWlzTnVsbDsKKwlEYXR1bQlyZXN1bHQ7CisK KwlpZiAoUEdfQVJHSVNOVUxMKDApKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfTlVMTF9WQUxVRV9OT1RfQUxMT1dFRCksCisJCQkJIGVycm1zZygibnVsbCB2YWx1ZSBu b3QgYWxsb3dlZCBmb3IgdmFyaWFibGUgaWRlbnRpdHkiKSkpOworCisJdmFyaWQgPSBQR19HRVRB UkdfT0lEKDApOworCisJdHlwaWQgPSBnZXRfZm5fZXhwcl9hcmd0eXBlKGZjaW5mby0+ZmxpbmZv LCAxKTsKKwlpZiAodHlwaWQgPT0gSW52YWxpZE9pZCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJj b3VsZCBub3QgZGV0ZXJtaW5lIGlucHV0IGRhdGEgdHlwZSIpKSk7CisKKwlnZXRfdHlwbGVuYnl2 YWwodHlwaWQsICZ0eXBsZW4sICZ0eXBieXZhbCk7CisJcmVzdWx0ID0gR2V0U2NoZW1hVmFyaWFi bGVTZWN1cmUodmFyaWQsICZpc051bGwsIHR5cGlkLCAtMSwgdHlwbGVuLCB0eXBieXZhbCk7CisK KwlpZiAoaXNOdWxsKQorCQlQR19SRVRVUk5fTlVMTCgpOworCWVsc2UKKwkJUEdfUkVUVVJOX0RB VFVNKHJlc3VsdCk7Cit9CisKKy8qCisgKiBBY2Nlc3MgZnVuY3Rpb25zIHRvIGZpZWxkcyBvZiBj b21wb3NpdGUgdmFyaWFibGVzCisgKi8KK3ZvaWQKK1NldFNjaGVtYVZhcmlhYmxlRmllbGQoT2lk IHZhcmlkLCBjb25zdCBjaGFyICpmaWVsZG5hbWUsCisJCQkJCQlEYXR1bSB2YWx1ZSwgYm9vbCBp c051bGwsCisJCQkJCQlPaWQgdHlwaWQsIGludDMyIHR5cG1vZCkKK3sKKworCVNjaGVtYVZhcgl2 YXI7CisJVHVwbGVEZXNjCXR1cERlc2M7CisJRm9ybV9wZ19hdHRyaWJ1dGUJc2F0dHIgPSBOVUxM OworCURhdHVtCSAgICp2YWx1ZXM7CisJYm9vbAkgICAqbnVsbHM7CisJaW50CQkJbmF0dHM7CisJ SGVhcFR1cGxlCQl0dXBsZTsKKwlpbnQJCQlpOworCisJdmFyID0gUHJlcGFyZVNjaGVtYVZhcih2 YXJpZCk7CisKKwlpZiAoIXZhci0+aXNfcm93dHlwZSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkgZXJybXNnKCJ0aGUgdmFy aWFibGUgXCIlc1wiIGlzIG5vdCBvZiByb3cgdHlwZSIsCisJCQkJCQkgIGdldF9zY2hlbWF2YXJf bmFtZSh2YXJpZCkpKSk7CisKKwl0dXBEZXNjID0gbG9va3VwX3Jvd3R5cGVfdHVwZGVzYyh2YXIt PnR5cGlkLCB2YXItPnR5cG1vZCk7CisJbmF0dHMgPSB0dXBEZXNjLT5uYXR0czsKKworCS8qCisJ ICogV2Ugc2hvdWxkIHRvIGNoZWNrIGNvcnJlY3QgZmllbGQgbmFtZSwgYWx0aG91Z2ggcmVzdWx0 IGNhbiBiZSBOVUxMLAorCSAqIGFuZCB0aGlzIGluZm9ybWF0aW9uIHdpbGwgbm90IGJlIHVzZWQu CisJICovCisJZm9yIChpID0gMDsgaSA8IG5hdHRzOyBpKyspCisJeworCQlpZiAobmFtZXN0cmNt cCgmKFR1cGxlRGVzY0F0dHIodHVwRGVzYywgaSktPmF0dG5hbWUpLCBmaWVsZG5hbWUpID09IDAg JiYKKwkJCSFUdXBsZURlc2NBdHRyKHR1cERlc2MsIGkpLT5hdHRpc2Ryb3BwZWQpCisJCXsKKwkJ CXNhdHRyID0gVHVwbGVEZXNjQXR0cih0dXBEZXNjLCBpKTsKKwkJCWJyZWFrOworCQl9CisJfQor CisJaWYgKHNhdHRyID09IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJS Q09ERV9VTkRFRklORURfQ09MVU1OKSwKKwkJCQkgZXJybXNnKCJ0aGUgdmFyaWFibGUgXCIlc1wi IGhhcyBub3QgZmllbGQgXCIlc1wiIiwKKwkJCQkJCQlnZXRfc2NoZW1hdmFyX25hbWUodmFyaWQp LAorCQkJCQkJCWZpZWxkbmFtZSkpKTsKKworCS8qIGxlYXZlLCB3aGVuIHdlIGRvbid0IG5lZWQg dG8gY2hhbmdlIGNvbXBvc2l0ZSAqLworCWlmICh2YXItPmlzbnVsbCAmJiBpc051bGwpCisJewor CQlGcmVlVHVwbGVEZXNjKHR1cERlc2MpOworCQlyZXR1cm47CisJfQorCisJdmFsdWVzID0gKERh dHVtICopIHBhbGxvYzAobmF0dHMgKiBzaXplb2YoRGF0dW0pKTsKKwludWxscyA9IChib29sICop IHBhbGxvYzAobmF0dHMgKiBzaXplb2YoYm9vbCkpOworCisJaWYgKCF2YXItPmlzbnVsbCkKKwl7 CisJCUhlYXBUdXBsZUhlYWRlciByZWMgPSBEYXR1bUdldEhlYXBUdXBsZUhlYWRlcih2YXItPnZh bHVlKTsKKwkJSGVhcFR1cGxlRGF0YQl0dXA7CisKKwkJLyogQnVpbGQgYSB0ZW1wb3JhcnkgSGVh cFR1cGxlIGNvbnRyb2wgc3RydWN0dXJlICovCisJCXR1cC50X2xlbiA9IEhlYXBUdXBsZUhlYWRl ckdldERhdHVtTGVuZ3RoKHJlYyk7CisJCUl0ZW1Qb2ludGVyU2V0SW52YWxpZCgmKHR1cC50X3Nl bGYpKTsKKwkJdHVwLnRfdGFibGVPaWQgPSBJbnZhbGlkT2lkOworCQl0dXAudF9kYXRhID0gcmVj OworCisJCWhlYXBfZGVmb3JtX3R1cGxlKCZ0dXAsIHR1cERlc2MsIHZhbHVlcywgbnVsbHMpOwor CX0KKwllbHNlCisJeworCQlmb3IgKGkgPSAwOyBpIDwgbmF0dHM7IGkrKykKKwkJCW51bGxzW2ld ID0gdHJ1ZTsKKwl9CisKKwlpZiAoIWlzTnVsbCkKKwl7CisJCXZhbHVlc1tzYXR0ci0+YXR0bnVt IC0gMV0gPSBkYXR1bUNhc3QodmFsdWUsCisJCQkJCQkJCQkJICBzYXR0ci0+YXR0dHlwaWQsIHNh dHRyLT5hdHR0eXBtb2QsCisJCQkJCQkJCQkJICB0eXBpZCwgdHlwbW9kKTsKKwkJbnVsbHNbc2F0 dHItPmF0dG51bSAtIDFdID0gZmFsc2U7CisJfQorCWVsc2UKKwl7CisJCXZhbHVlc1tzYXR0ci0+ YXR0bnVtIC0gMV0gPSAoRGF0dW0pIDA7CisJCW51bGxzW3NhdHRyLT5hdHRudW0gLSAxXSA9IHRy dWU7CisJfQorCisJdHVwbGUgPSBoZWFwX2Zvcm1fdHVwbGUodHVwRGVzYywgdmFsdWVzLCBudWxs cyk7CisJU2V0VmFsdWUodmFyLAorCQkJICBIZWFwVHVwbGVIZWFkZXJHZXREYXR1bSgoSGVhcFR1 cGxlSGVhZGVyKSB0dXBsZS0+dF9kYXRhKSwKKwkJCSAgZmFsc2UsCisJCQkgIHZhci0+dHlwaWQs IHZhci0+dHlwbW9kKTsKKworCWhlYXBfZnJlZXR1cGxlKHR1cGxlKTsKKwlSZWxlYXNlVHVwbGVE ZXNjKHR1cERlc2MpOworfQorCitEYXR1bQorR2V0U2NoZW1hVmFyaWFibGVGaWVsZChPaWQgdmFy aWQsIGNvbnN0IGNoYXIgKmZpZWxkbmFtZSwKKwkJCQkJCWJvb2wgKmlzTnVsbCwKKwkJCQkJCU9p ZCB0eXBpZCwgaW50MzIgdHlwbW9kLAorCQkJCQkJaW50MTYgdHlwbGVuLCBib29sIHR5cGJ5dmFs KQoreworCURhdHVtCQlyZXN1bHQgPSAoRGF0dW0pIDA7CisJRGF0dW0JCXZhbHVlID0gKERhdHVt KSAwOworCVR1cGxlRGVzYwkJdHVwRGVzYzsKKwlGb3JtX3BnX2F0dHJpYnV0ZQlzYXR0ciA9IE5V TEw7CisJU2NoZW1hVmFyCQl2YXI7CisJaW50CQkJaTsKKworCUFzc2VydCh2YXJpZCAhPSBJbnZh bGlkT2lkKTsKKworCXZhciA9IFByZXBhcmVTY2hlbWFWYXIodmFyaWQpOworCisJaWYgKCF2YXIt PmlzX3Jvd3R5cGUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9O R19PQkpFQ1RfVFlQRSksCisJCQkJIGVycm1zZygidGhlIHZhcmlhYmxlIFwiJXNcIiBpcyBub3Qg b2Ygcm93IHR5cGUiLAorCQkJCQkJICBnZXRfc2NoZW1hdmFyX25hbWUodmFyaWQpKSkpOworCisJ dHVwRGVzYyA9IGxvb2t1cF9yb3d0eXBlX3R1cGRlc2ModmFyLT50eXBpZCwgdmFyLT50eXBtb2Qp OworCisJLyoKKwkgKiBXZSBzaG91bGQgdG8gY2hlY2sgY29ycmVjdCBmaWVsZCBuYW1lLCBhbHRo b3VnaCByZXN1bHQgY2FuIGJlIE5VTEwsCisJICogYW5kIHRoaXMgaW5mb3JtYXRpb24gd2lsbCBu b3QgYmUgdXNlZC4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgdHVwRGVzYy0+bmF0dHM7IGkrKykK Kwl7CisJCWlmIChuYW1lc3RyY21wKCYoVHVwbGVEZXNjQXR0cih0dXBEZXNjLCBpKS0+YXR0bmFt ZSksIGZpZWxkbmFtZSkgPT0gMCAmJgorCQkJIVR1cGxlRGVzY0F0dHIodHVwRGVzYywgaSktPmF0 dGlzZHJvcHBlZCkKKwkJeworCQkJc2F0dHIgPSBUdXBsZURlc2NBdHRyKHR1cERlc2MsIGkpOwor CQkJYnJlYWs7CisJCX0KKwl9CisKKwlpZiAoc2F0dHIgPT0gTlVMTCkKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJCSBlcnJtc2co InRoZSB2YXJpYWJsZSBcIiVzXCIgaGFzIG5vdCBmaWVsZCBcIiVzXCIiLAorCQkJCQkJCWdldF9z Y2hlbWF2YXJfbmFtZSh2YXJpZCksCisJCQkJCQkJZmllbGRuYW1lKSkpOworCisJLyoKKwkgKiBU aGVvcmV0aWNhbGx5LCB3ZSBjaGVjayBhIHBvc3NpYmlsaXR5IHRvIGNhc3QgdG8gdGFyZ2V0IHR5 cGUgZXZlcnl0aW1lLAorCSAqIGJ1dCBjYW4gYmUgaWdub3JlZCwgd2hlbiByZXN1bHQgd2lsbCBi ZSBudWxsLgorCSAqLworCWlmICghdmFyLT5pc251bGwpCisJeworCQlIZWFwVHVwbGVIZWFkZXIJ dHVwbGU7CisJCUhlYXBUdXBsZURhdGEJdG1wdHVwOworCisJCXR1cGxlID0gRGF0dW1HZXRIZWFw VHVwbGVIZWFkZXIodmFyLT52YWx1ZSk7CisKKwkJLyoKKwkJICogaGVhcF9nZXRhdHRyIG5lZWRz IGEgSGVhcFR1cGxlIG5vdCBhIGJhcmUgSGVhcFR1cGxlSGVhZGVyLiAgV2Ugc2V0IGFsbAorCQkg KiB0aGUgZmllbGRzIGluIHRoZSBzdHJ1Y3QganVzdCBpbiBjYXNlIHVzZXIgdHJpZXMgdG8gaW5z cGVjdCBzeXN0ZW0KKwkJICogY29sdW1ucy4KKwkJICovCisJCXRtcHR1cC50X2xlbiA9IEhlYXBU dXBsZUhlYWRlckdldERhdHVtTGVuZ3RoKHR1cGxlKTsKKwkJSXRlbVBvaW50ZXJTZXRJbnZhbGlk KCYodG1wdHVwLnRfc2VsZikpOworCQl0bXB0dXAudF90YWJsZU9pZCA9IEludmFsaWRPaWQ7CisJ CXRtcHR1cC50X2RhdGEgPSB0dXBsZTsKKworCQl2YWx1ZSA9IGhlYXBfZ2V0YXR0cigmdG1wdHVw LAorCQkJCQkJCSAgc2F0dHItPmF0dG51bSwKKwkJCQkJCQkgIHR1cERlc2MsCisJCQkJCQkJICBp c051bGwpOworCisJCWlmICghKmlzTnVsbCkKKwkJeworCQkJcmVzdWx0ID0gZGF0dW1DYXN0KHZh bHVlLCB0eXBpZCwgdHlwbW9kLAorCQkJCQkJCQlzYXR0ci0+YXR0dHlwaWQsIHNhdHRyLT5hdHR0 eXBtb2QpOworCisJCQlpZiAocmVzdWx0ID09IHZhbHVlKQorCQkJCXJlc3VsdCA9IGRhdHVtQ29w eShyZXN1bHQsIHR5cGJ5dmFsLCB0eXBsZW4pOworCQl9CisJfQorCisJUmVsZWFzZVR1cGxlRGVz Yyh0dXBEZXNjKTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQKK1NldFNjaGVtYVZhcmlh YmxlRmllbGRTZWN1cmUoT2lkIHZhcmlkLCBjb25zdCBjaGFyICpmaWVsZG5hbWUsCisJCQkJCQlE YXR1bSB2YWx1ZSwgYm9vbCBpc051bGwsCisJCQkJCQlPaWQgdHlwaWQsIGludDMyIHR5cG1vZCkK K3sKKwlBY2xSZXN1bHQJCWFjbHJlc3VsdDsKKworCS8qIENoZWNrIHBlcm1pc3Npb25zICovCisJ YWNscmVzdWx0ID0gcGdfY2xhc3NfYWNsY2hlY2sodmFyaWQsIEdldFVzZXJJZCgpLCBBQ0xfVVBE QVRFKTsKKwlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQlhY2xjaGVja19lcnJvcihh Y2xyZXN1bHQsIE9CSkVDVF9WQVJJQUJMRSwgZ2V0X3NjaGVtYXZhcl9uYW1lKHZhcmlkKSk7CisK KwlTZXRTY2hlbWFWYXJpYWJsZUZpZWxkKHZhcmlkLCBmaWVsZG5hbWUsIHZhbHVlLCBpc051bGws IHR5cGlkLCB0eXBtb2QpOworfQorCitEYXR1bQorR2V0U2NoZW1hVmFyaWFibGVGaWVsZFNlY3Vy ZShPaWQgdmFyaWQsIGNvbnN0IGNoYXIgKmZpZWxkbmFtZSwKKwkJCQkJCWJvb2wgKmlzTnVsbCwK KwkJCQkJCU9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLAorCQkJCQkJaW50MTYgdHlwbGVuLCBib29s IHR5cGJ5dmFsKQoreworCUFjbFJlc3VsdCBhY2xyZXN1bHQ7CisKKwkvKgorCSAqIFRoZXJlIGFy ZSBub3QgYW55IHNwZWNpYWwgYWNjZXNzIHRvIGZpZWxkcy4gSnVzdCBjaGVjayBhCisJICogYWNj ZXNzIHRvIHZhcmlhYmxlLgorCSAqLworCWFjbHJlc3VsdCA9IHBnX2NsYXNzX2FjbGNoZWNrKHZh cmlkLCBHZXRVc2VySWQoKSwgQUNMX1NFTEVDVCk7CisJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVD S19PSykKKwkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfVkFSSUFCTEUsIGdldF9z Y2hlbWF2YXJfbmFtZSh2YXJpZCkpOworCisJcmV0dXJuIEdldFNjaGVtYVZhcmlhYmxlRmllbGQo dmFyaWQsIGZpZWxkbmFtZSwgaXNOdWxsLCB0eXBpZCwgdHlwbW9kLCB0eXBsZW4sIHR5cGJ5dmFs KTsKK30KKworRGF0dW0KK3NldF9zY2hlbWFfdmFyaWFibGVfZmllbGQoUEdfRlVOQ1RJT05fQVJH UykKK3sKKwlPaWQJCXZhcmlkOworCURhdHVtCXZhbHVlOworCWJvb2wJaXNOdWxsOworCU9pZAkJ dHlwaWQ7CisJaW50MTYJdHlwbGVuOworCWJvb2wJdHlwYnl2YWw7CisJY29uc3QgY2hhciAgICpm aWVsZG5hbWU7CisKKwlpZiAoUEdfQVJHSVNOVUxMKDApKQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfTlVMTF9WQUxVRV9OT1RfQUxMT1dFRCksCisJCQkJIGVycm1zZygi bnVsbCB2YWx1ZSBub3QgYWxsb3dlZCBmb3IgdmFyaWFibGUgaWRlbnRpdHkiKSkpOworCisJdmFy aWQgPSBQR19HRVRBUkdfT0lEKDApOworCisJaWYgKFBHX0FSR0lTTlVMTCgxKSkKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX05VTExfVkFMVUVfTk9UX0FMTE9XRUQpLAor CQkJCSBlcnJtc2coIm51bGwgdmFsdWUgbm90IGFsbG93ZWQgZm9yIGZpZWxkIG5hbWUiKSkpOwor CisJZmllbGRuYW1lID0gTmFtZVN0cigqUEdfR0VUQVJHX05BTUUoMSkpOworCisJaWYgKCFQR19B UkdJU05VTEwoMikpCisJeworCQl2YWx1ZSA9IFBHX0dFVEFSR19EQVRVTSgyKTsKKwkJaXNOdWxs ID0gZmFsc2U7CisJfQorCWVsc2UKKwl7CisJCXZhbHVlID0gKERhdHVtKSAwOworCQlpc051bGwg PSB0cnVlOworCX0KKworCXR5cGlkID0gZ2V0X2ZuX2V4cHJfYXJndHlwZShmY2luZm8tPmZsaW5m bywgMik7CisJaWYgKHR5cGlkID09IEludmFsaWRPaWQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1zZygi Y291bGQgbm90IGRldGVybWluZSBpbnB1dCBkYXRhIHR5cGUiKSkpOworCisJZ2V0X3R5cGxlbmJ5 dmFsKHR5cGlkLCAmdHlwbGVuLCAmdHlwYnl2YWwpOworCVNldFNjaGVtYVZhcmlhYmxlRmllbGRT ZWN1cmUodmFyaWQsIGZpZWxkbmFtZSwgdmFsdWUsIGlzTnVsbCwgdHlwaWQsIC0xKTsKKworCVBH X1JFVFVSTl9WT0lEKCk7Cit9CisKK0RhdHVtCitnZXRfc2NoZW1hX3ZhcmlhYmxlX2ZpZWxkKFBH X0ZVTkNUSU9OX0FSR1MpCit7CisJT2lkCQl2YXJpZDsKKwlPaWQJCXR5cGlkOworCWludDE2CXR5 cGxlbjsKKwlib29sCXR5cGJ5dmFsOworCWJvb2wJaXNOdWxsOworCURhdHVtCXJlc3VsdDsKKwlj b25zdCBjaGFyICAgKmZpZWxkbmFtZTsKKworCWlmIChQR19BUkdJU05VTEwoMCkpCisJCWVyZXBv cnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9OVUxMX1ZBTFVFX05PVF9BTExPV0VEKSwK KwkJCQkgZXJybXNnKCJudWxsIHZhbHVlIG5vdCBhbGxvd2VkIGZvciB2YXJpYWJsZSBpZGVudGl0 eSIpKSk7CisKKwl2YXJpZCA9IFBHX0dFVEFSR19PSUQoMCk7CisKKwlpZiAoUEdfQVJHSVNOVUxM KDEpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfTlVMTF9WQUxVRV9O T1RfQUxMT1dFRCksCisJCQkJIGVycm1zZygibnVsbCB2YWx1ZSBub3QgYWxsb3dlZCBmb3IgZmll bGQgbmFtZSIpKSk7CisKKwlmaWVsZG5hbWUgPSBOYW1lU3RyKCpQR19HRVRBUkdfTkFNRSgxKSk7 CisKKwl0eXBpZCA9IGdldF9mbl9leHByX2FyZ3R5cGUoZmNpbmZvLT5mbGluZm8sIDIpOworCWlm ICh0eXBpZCA9PSBJbnZhbGlkT2lkKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCSBlcnJtc2coImNvdWxkIG5vdCBk ZXRlcm1pbmUgaW5wdXQgZGF0YSB0eXBlIikpKTsKKworCWdldF90eXBsZW5ieXZhbCh0eXBpZCwg JnR5cGxlbiwgJnR5cGJ5dmFsKTsKKwlyZXN1bHQgPSBHZXRTY2hlbWFWYXJpYWJsZUZpZWxkU2Vj dXJlKHZhcmlkLCBmaWVsZG5hbWUsICZpc051bGwsIHR5cGlkLCAtMSwgdHlwbGVuLCB0eXBieXZh bCk7CisKKwlpZiAoaXNOdWxsKQorCQlQR19SRVRVUk5fTlVMTCgpOworCWVsc2UKKwkJUEdfUkVU VVJOX0RBVFVNKHJlc3VsdCk7CisKKwlQR19SRVRVUk5fTlVMTCgpOworfQorCisvKgorICogUmVz dWx0czoKKyAqPQorIAorMS4gVGhlIHNjaGVtYSB2YXJpYWJsZXMgYXJlIHNpbWlsYXIgdG8gdGVt cG9yYXJ5IHRhYmxlcyAtIGJ1dCB0aGUgZGF0YSBhcmUgbm90IHNhdmVkCisgICBpbiA4S0IgYmxv Y2tzLCBzbyBuZXcgc3RvcmFnZSBhbmQgc29tZSBzaW1wbGUgc3RvcmFnZSBtYW5hZ2VyIHNob3Vs ZCBiZSBjcmVhdGVkLiBXZQorICAgd291bGQgbm90IHRvIHVzZSBsb2NhbCBidWZmZXIgZHVlIGFs bG9jYXRpb24gOEtCIGFzIG1pbmltdW4sIGNyZWF0aW5nIHRlbXAgZmlsZS4KKworMi4gV2Ugc2hv dWxkIHRvIHdvcmsgd2l0aCB0eXBtb2QsIHNvIHBnX2F0dHJpYnV0ZSBlbnRyeSBzaG91bGQgYmUg Y3JlYXRlZCBhbnl0aW1lLgorCiszLiBBIHJpc2sgb2YgY29sbGlzaW9ucyBvZiB2YXJpYWJsZSBh bmQgdGFibGUgbmFtZSB3aWxsIGJlIHJlZHVjZWQsIHdoZW4gdmFyaWFibGVzCisgICBhbmQgdGFi bGVzIGNhbm5vdCB0byBoYXZlIHNhbWUgbmFtZS4KKworNC4gSWYgc2NoZW1hIHZhcmlhYmxlcyBh cmUgcGdfY2xhc3MgYmFzZWQsIHRoZW4gc29tZSBjdXJyZW50IHN5bnRheCBoYXMgc2Vuc2UKKwor ICAgIFdlIGNhbiBzdXBwb3J0IFVQREFURSBhbmQgU0VMRUNUIGNvbW1hbmRzIG9uIHZhcmlhYmxl cy4KKworICAgIHBvc3NpYmxlIHN5bnRheGVzOgorCisgICAgICAgIC0tIHRoZXJlIGNhbiBiZSBh IGFuYWxvZ3kgd2l0aCByZWNvcmQgZnVuY3Rpb25zCisgICAgICAgIFNFTEVDVCB2YXJuYW1lOwor ICAgICAgICBTRUxFQ1QgdmFybmFtZS5maWVsZDsKKyAgICAgICAgU0VMRUNUIHZhcm5hbWUgRlJP TSB2YXJuYW1lOyAtLSB3aGVuIHZhciBpcyBzY2FsYXIsIHRoZW4gdmFybmFtZSBpbiB0YXJnZXQg bGlzdCBpcyBzY2FsYXIKKworICAgICAgICBVUERBVEUgdmFybmFtZSBTRVQgdmFybmFtZSA9IDEw OyAtLSBzY2FsYXIgdmVyc2lvbgorICAgICAgICBVUERBVEUgdmFybmFtZSBTRVQgdmFybmFtZSA9 ICh4LHkseikgLS0gY29tcG9zaXRlIHZlcnNpb24KKyAgICAgICAgVVBEQVRFIHZhcm5hbWUgU0VU IHZhcm5hbWUuZmllbGQxID0geCwgdmFybmFtZS5maWVsZDIgPSB5LCAuLgorCisgICAgICAgIExF VCB2YXJuYW1lID0gZXhwcjsKKyAgICAgICAgTEVUIHZhcm5hbWUuZmllbGQxID0gZXhwcjsKKyAg ICAgICAgTEVUIHZhcm5hbWUgPSAoeCwgeSwgeik7IC0tIGNvbXBvc2l0ZSB2ZXJzaW9uCisKKyAg IFBvc3NpYmxlCisgICAKKyAgICAgICAgTEVUIHZhcm5hbWUoYSxiKSA9IChzZWxlY3QgKDEwLCAy MCkgRlJPTSAuLi4gKQorCisKKzUuIExFVCBjbWQgY2FuIGJlIGltcGxlbWVudGVkIGFzIENNRCAo bGlrZSBJTlNFUlQsIFVQREFURSwgREVMRVRFKSBvciBVdGlsaXR5IChsaWtlCisgICBDcmVhdGVU YWJsZUFzU2VsZWN0KS4gUHJlZmVyIGZpcnN0IG9wdGlvbiwgYmVjYXVzZSB0aGVyZSBjYW4gYmUg cHJlcGFyZWQsIGNhbiBiZQorICAgdXNlZCB0b2dldGhlciB3aXRoIEVYUExBSU4sIGV0Yy4KKwor ICAgRXhwZWN0ZWQgZm9ybToKKyAgICAgTEVUIGZvbyA9IChTRUxFQ1QgaWQgRlJPTSBib28gV0hF UkUgc29tZSA9ICdoZWxsbycpOworCisgICBzbyBwb3NzaWJpbGl0eSB0byBydW4gRVhQTEFJTiBM RVQgLi4gaGFzIGdvb2QgZW5vdWdoIGJlbmVmaXQKKworNi4gV2hhdCBzaG91bGQgYmUgbWVjaGFu aXNtIG9mIGNvbXBhdGliaWxpdHkgYmV0d2VlbiBiYXNlIHR5cGUgYW5kIHZhcmlhYmxlIHR5cGU/ CisKKyAgICAgQ1JFQVRFIFZBUklBQkxFIHh4IEFTIEJUCisKKyAgIEV4YW1wbGU6IENSRUFURSBU WVBFIGN0IEFTICh4IGludCwgaW50KTsgQ1JFQVRFIFZBUklBQkxFIHZhciBBUyBjdDsKKyAgIHZh ciB0eXBlIChpbXBsaWNpdGx5IGNyZWF0ZWQpIHNob3VsZCBiZSBjb21wYXRpYmxlIHdpdGggY3Qg dHlwZSwgYmVjYXVzZSB3ZSB3YW50CisKKyAgICAgTEVUIHZhciA9ICgxMCwyMCk6OnZhcjsgTEVU IHZhciA9ICgxMCwyMCk6OmN0OworCis3LiBXaGVuIExFVCBjb21tYW5kIGFsbG93cyB0byBzcGVj aWZ5IHRhcmdldCBmaWVsZCwgdGhlbiB0aGVyZSBpcyBwb3NzaWJsZSBjb2xsaXNpb24KKyAgIEkx LkkyIGNhbiBiZSBzY2hlbWEudmFyaWFibGUsIGJ1dCBzaG91bGQgYmUgdmFyaWFibGUuZmllbGQg dG9vLiBJdCBzaG91bGQgYmUgdGVzdGVkCisgICBhbmQgaWYgYm90aCB2YXJpYW50cyBhcmUgcG9z c2libGUsIHRoZW4gZXhjZXB0aW9uIHNob3VsZCBiZSByYWlzZWQuIExFVCB2YXIuZmllbGQgPSBl eHByCisgICBpcyBhIGFuYWxvZ3kgdG8gVVBEQVRFIHZhciBTRVQgZmllbGQgPSBleHByLgorCisK KyovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpp bmRleCAwZTk1MDM3ZGNmLi4wYWY1NThjM2NkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpA QCAtMjcyLDYgKzI3MiwxMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRyb3Btc2dzdHJpbmdzIGRy b3Btc2dzdHJpbmdhcnJheVtdID0gewogCQlnZXR0ZXh0X25vb3AoImluZGV4IFwiJXNcIiBkb2Vz IG5vdCBleGlzdCwgc2tpcHBpbmciKSwKIAkJZ2V0dGV4dF9ub29wKCJcIiVzXCIgaXMgbm90IGFu IGluZGV4IiksCiAJZ2V0dGV4dF9ub29wKCJVc2UgRFJPUCBJTkRFWCB0byByZW1vdmUgYW4gaW5k ZXguIil9LAorCXtSRUxLSU5EX1ZBUklBQkxFLAorCQlFUlJDT0RFX1VOREVGSU5FRF9UQUJMRSwK KwkJZ2V0dGV4dF9ub29wKCJzY2hlbWEgdmFyaWFibGUgXCIlc1wiIGRvZXMgbm90IGV4aXN0Iiks CisJCWdldHRleHRfbm9vcCgic2NoZW1hIHZhcmlhYmxlIFwiJXNcIiBkb2VzIG5vdCBleGlzdCwg c2tpcHBpbmciKSwKKwkJZ2V0dGV4dF9ub29wKCJcIiVzXCIgaXMgbm90IGEgc2NoZW1hIHZhcmlh YmxlIiksCisJZ2V0dGV4dF9ub29wKCJVc2UgRFJPUCBWQVJJQUJMRSB0byByZW1vdmUgYSB2YXJp YWJsZS4iKX0sCiAJeydcMCcsIDAsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9CiB9OwogCkBAIC0x MDI2OCw2ICsxMDI3NCw3IEBAIEFURXhlY0NoYW5nZU93bmVyKE9pZCByZWxhdGlvbk9pZCwgT2lk IG5ld093bmVySWQsIGJvb2wgcmVjdXJzaW5nLCBMT0NLTU9ERSBsb2NrCiAJCWNhc2UgUkVMS0lO RF9NQVRWSUVXOgogCQljYXNlIFJFTEtJTkRfRk9SRUlHTl9UQUJMRToKIAkJY2FzZSBSRUxLSU5E X1BBUlRJVElPTkVEX1RBQkxFOgorCQljYXNlIFJFTEtJTkRfVkFSSUFCTEU6CiAJCQkvKiBvayB0 byBjaGFuZ2Ugb3duZXIgKi8KIAkJCWJyZWFrOwogCQljYXNlIFJFTEtJTkRfSU5ERVg6CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY0V4cHIuYwppbmRleCBlMjg0ZmQ3MWQ3Li42ZjVhYTM5OTNlIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNFeHByLmMKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvbmJ0cmVl LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhY2Nlc3MuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX3R5cGUuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zY2hlbWF2YXIuaCIKICNpbmNsdWRlICJl eGVjdXRvci9leGVjRXhwci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVTdWJwbGFuLmgiCiAj aW5jbHVkZSAiZnVuY2FwaS5oIgpAQCAtNzI3LDYgKzcyOCw3IEBAIEV4ZWNJbml0RXhwclJlYyhF eHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJewogCQkJCVBhcmFtCSAgICpwYXJhbSA9 IChQYXJhbSAqKSBub2RlOwogCQkJCVBhcmFtTGlzdEluZm8gcGFyYW1zOworCQkJCUFjbFJlc3Vs dAlhY2xyZXN1bHQ7CiAKIAkJCQlzd2l0Y2ggKHBhcmFtLT5wYXJhbWtpbmQpCiAJCQkJewpAQCAt NzM0LDYgKzczNiwyMyBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpz dGF0ZSwKIAkJCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9QQVJBTV9FWEVDOwogCQkJCQkJc2Ny YXRjaC5kLnBhcmFtLnBhcmFtaWQgPSBwYXJhbS0+cGFyYW1pZDsKIAkJCQkJCXNjcmF0Y2guZC5w YXJhbS5wYXJhbXR5cGUgPSBwYXJhbS0+cGFyYW10eXBlOworCQkJCQkJRXhwckV2YWxQdXNoU3Rl cChzdGF0ZSwgJnNjcmF0Y2gpOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgUEFSQU1fU0NIRU1B X1ZBUklBQkxFOgorCQkJCQkJLyogQ2hlY2sgcGVybWlzc2lvbiB0byByZWFkIHNjaGVtYSB2YXJp YWJsZSAqLworCQkJCQkJYWNscmVzdWx0ID0gcGdfY2xhc3NfYWNsY2hlY2socGFyYW0tPnBhcmFt aWQsIEdldFVzZXJJZCgpLCBBQ0xfU0VMRUNUKTsKKwkJCQkJCWlmIChhY2xyZXN1bHQgIT0gQUNM Q0hFQ0tfT0spCisJCQkJCQkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfVkFSSUFC TEUsIGdldF9zY2hlbWF2YXJfbmFtZShwYXJhbS0+cGFyYW1pZCkpOworCisJCQkJCQlzY3JhdGNo Lm9wY29kZSA9IEVFT1BfUEFSQU1fU0NIRU1BX1ZBUklBQkxFOworCQkJCQkJc2NyYXRjaC5kLnBh cmFtLnBhcmFtaWQgPSBwYXJhbS0+cGFyYW1pZDsKKwkJCQkJCXNjcmF0Y2guZC5wYXJhbS5wYXJh bXR5cGUgPSBwYXJhbS0+cGFyYW10eXBlOworCQkJCQkJc2NyYXRjaC5kLnBhcmFtLnBhcmFtdHlw bW9kID0gcGFyYW0tPnBhcmFtdHlwbW9kOworCisJCQkJCQlnZXRfdHlwbGVuYnl2YWwocGFyYW0t PnBhcmFtdHlwZSwKKwkJCQkJCQkJCQkJCSZzY3JhdGNoLmQucGFyYW0ucGFyYW10eXBsZW4sCisJ CQkJCQkJCQkJCQkmc2NyYXRjaC5kLnBhcmFtLnBhcmFtdHlwYnl2YWwpOworCiAJCQkJCQlFeHBy RXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CiAJCQkJCQlicmVhazsKIAkJCQkJY2FzZSBQ QVJBTV9FWFRFUk46CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwcklu dGVycC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYwppbmRleCA5ZDZl MjVhYWU1Li5kNmQxODY3ZGZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj RXhwckludGVycC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMK QEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvdHVwdG9hc3Rlci5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNlLmgiCisj aW5jbHVkZSAiY29tbWFuZHMvc2NoZW1hdmFyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY0V4 cHIuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlU3VicGxhbi5oIgogI2luY2x1ZGUgImZ1bmNh cGkuaCIKQEAgLTM1MSw2ICszNTIsNyBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRl LCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJJiZDQVNFX0VFT1BfUEFS QU1fRVhFQywKIAkJJiZDQVNFX0VFT1BfUEFSQU1fRVhURVJOLAogCQkmJkNBU0VfRUVPUF9QQVJB TV9DQUxMQkFDSywKKwkJJiZDQVNFX0VFT1BfUEFSQU1fU0NIRU1BX1ZBUklBQkxFLAogCQkmJkNB U0VfRUVPUF9DQVNFX1RFU1RWQUwsCiAJCSYmQ0FTRV9FRU9QX01BS0VfUkVBRE9OTFksCiAJCSYm Q0FTRV9FRU9QX0lPQ09FUkNFLApAQCAtMTAwMCw2ICsxMDAyLDIzIEBAIEV4ZWNJbnRlcnBFeHBy KEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQog CQkJRUVPX05FWFQoKTsKIAkJfQogCisJCUVFT19DQVNFKEVFT1BfUEFSQU1fU0NIRU1BX1ZBUklB QkxFKQorCQl7CisJCQlEYXR1bQlkOworCQkJYm9vbAlpc251bGw7CisKKwkJCWQgPSBHZXRTY2hl bWFWYXJpYWJsZShvcC0+ZC5wYXJhbS5wYXJhbWlkLCAmaXNudWxsLAorCQkJCQkJCQkJCQkJCSAg b3AtPmQucGFyYW0ucGFyYW10eXBlLAorCQkJCQkJCQkJCQkJCSAgLTEsCisJCQkJCQkJCQkJCQkJ ICBvcC0+ZC5wYXJhbS5wYXJhbXR5cGxlbiwKKwkJCQkJCQkJCQkJCQkgIG9wLT5kLnBhcmFtLnBh cmFtdHlwYnl2YWwpOworCisJCQkqb3AtPnJlc3ZhbHVlID0gZDsKKwkJCSpvcC0+cmVzbnVsbCA9 IGlzbnVsbDsKKworCQkJRUVPX05FWFQoKTsKKwkJfQorCiAJCUVFT19DQVNFKEVFT1BfUEFSQU1f Q0FMTEJBQ0spCiAJCXsKIAkJCS8qIGFsbG93IGFuIGV4dGVuc2lvbiBtb2R1bGUgdG8gc3VwcGx5 IGEgUEFSQU1fRVhURVJOIHZhbHVlICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCA1MWQ1 YmQwMWQzLi44ZmJjMzhlNGJiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj TWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTIxMSw2ICsy MTEsNyBAQCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQg ZWZsYWdzKQogCXN3aXRjaCAocXVlcnlEZXNjLT5vcGVyYXRpb24pCiAJewogCQljYXNlIENNRF9T RUxFQ1Q6CisJCWNhc2UgQ01EX0xFVDoKIAogCQkJLyoKIAkJCSAqIFNFTEVDVCBGT1IgW0tFWV0g VVBEQVRFL1NIQVJFIGFuZCBtb2RpZnlpbmcgQ1RFcyBuZWVkIHRvIG1hcmsKQEAgLTc3NSw3ICs3 NzYsOCBAQCBFeGVjQ2hlY2tYYWN0UmVhZE9ubHkoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10KQog CiAJLyoKIAkgKiBGYWlsIGlmIHdyaXRlIHBlcm1pc3Npb25zIGFyZSByZXF1ZXN0ZWQgaW4gcGFy YWxsZWwgbW9kZSBmb3IgdGFibGUKLQkgKiAodGVtcCBvciBub24tdGVtcCksIG90aGVyd2lzZSBm YWlsIGZvciBhbnkgbm9uLXRlbXAgdGFibGUuCisJICogKHRlbXAgb3Igbm9uLXRlbXApLCBvdGhl cndpc2UgZmFpbCBmb3IgYW55IG5vbi10ZW1wIHRhYmxlLiBBbGxvdyB0bworCSAqIG1vZGlmeSBj b250ZW50IG9mIHNjaGVtYSB2YXJpYWJsZXMuCiAJICovCiAJZm9yZWFjaChsLCBwbGFubmVkc3Rt dC0+cnRhYmxlKQogCXsKQEAgLTc5MCw2ICs3OTIsOSBAQCBFeGVjQ2hlY2tYYWN0UmVhZE9ubHko UGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10KQogCQlpZiAoaXNUZW1wTmFtZXNwYWNlKGdldF9yZWxf bmFtZXNwYWNlKHJ0ZS0+cmVsaWQpKSkKIAkJCWNvbnRpbnVlOwogCisJCWlmIChydGUtPnJlbGtp bmQgPT0gUkVMS0lORF9WQVJJQUJMRSkKKwkJCWNvbnRpbnVlOworCiAJCVByZXZlbnRDb21tYW5k SWZSZWFkT25seShDcmVhdGVDb21tYW5kVGFnKChOb2RlICopIHBsYW5uZWRzdG10KSk7CiAJfQog CkBAIC0xMTI1LDYgKzExMzAsMTQgQEAgQ2hlY2tWYWxpZFJlc3VsdFJlbChSZXN1bHRSZWxJbmZv ICpyZXN1bHRSZWxJbmZvLCBDbWRUeXBlIG9wZXJhdGlvbikKIAkJCQkJIGVycm1zZygiY2Fubm90 IGNoYW5nZSBUT0FTVCByZWxhdGlvbiBcIiVzXCIiLAogCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHJlc3VsdFJlbCkpKSk7CiAJCQlicmVhazsKKwkJY2FzZSBSRUxLSU5EX1ZBUklBQkxF OgorCQkJLyogb25seSBMRVQgY29tbWFuZCBjYW4gY2hhbmdlIGEgdmFyaWFibGUgKi8KKwkJCWlm IChvcGVyYXRpb24gIT0gQ01EX0xFVCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJCQkgZXJybXNnKCJjYW5ub3QgY2hh bmdlIHNjaGVtYSB2YXJpYWJsZSBcIiVzXCIiLAorCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShyZXN1bHRSZWwpKSkpOworCQkJYnJlYWs7CiAJCWNhc2UgUkVMS0lORF9WSUVXOgogCiAJ CQkvKgpAQCAtMTI4NSw2ICsxMjk4LDEzIEBAIENoZWNrVmFsaWRSb3dNYXJrUmVsKFJlbGF0aW9u IHJlbCwgUm93TWFya1R5cGUgbWFya1R5cGUpCiAJCQkJCQkgZXJybXNnKCJjYW5ub3QgbG9jayBy b3dzIGluIGZvcmVpZ24gdGFibGUgXCIlc1wiIiwKIAkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlv bk5hbWUocmVsKSkpKTsKIAkJCWJyZWFrOworCQljYXNlIFJFTEtJTkRfVkFSSUFCTEU6CisJCQkv KiBNdXN0IGRpc2FsbG93IHRoaXMgYmVjYXVzZSB3ZSB0aGVyZSBhcmUgbm90IHJvd3MgKi8KKwkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUp LAorCQkJCQkgZXJybXNnKCJjYW5ub3QgbG9jayByb3dzIGluIHNjaGVtYSB2YXJpYWJsZSBcIiVz XCIiLAorCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisJCQlicmVhazsK IAkJZGVmYXVsdDoKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JP TkdfT0JKRUNUX1RZUEUpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1v ZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRl eCBmNjQ4MmY4NDExLi5jNDRlZTU0MGI5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5 VGFibGUuYwpAQCAtMzksNiArMzksNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWls cy5oIgogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2NoZW1h dmFyLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9y L2V4ZWNQYXJ0aXRpb24uaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgpAQCAtNzMs NiArNzQsNyBAQCBzdGF0aWMgdm9pZCBFeGVjU2V0dXBDaGlsZFBhcmVudE1hcEZvclN1YnBsYW4o TW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSk7CiBzdGF0aWMgVHVwbGVDb252ZXJzaW9uTWFwICp0 dXBjb252X21hcF9mb3Jfc3VicGxhbihNb2RpZnlUYWJsZVN0YXRlICpub2RlLAogCQkJCQkJaW50 IHdoaWNocGxhbik7CiAKKwogLyoKICAqIFZlcmlmeSB0aGF0IHRoZSB0dXBsZXMgdG8gYmUgcHJv ZHVjZWQgYnkgSU5TRVJUIG9yIFVQREFURSBtYXRjaCB0aGUKICAqIHRhcmdldCByZWxhdGlvbidz IHJvd3R5cGUKQEAgLTE1MTYsNiArMTUxOCw3MiBAQCBFeGVjT25Db25mbGljdFVwZGF0ZShNb2Rp ZnlUYWJsZVN0YXRlICptdHN0YXRlLAogCXJldHVybiB0cnVlOwogfQogCisvKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KgkJRXhlY0xldAorICoKKyAqCQlGb3IgTEVULCB3ZSBoYXZlIHRvIHVwZGF0ZSB0YXJnZXQgdmFy aWFibGUsCisgKiAgICAgIFJldHVybnMgTlVMTCwgdGhlcmUgYXJlIG5vdCBSRVRVUk5JTkcgY2xh dXNlLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICovCitzdGF0aWMgVHVwbGVUYWJsZVNsb3QgKgorRXhlY0xldChN b2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLAorCQkgICBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKKwkJ ICAgRVN0YXRlICplc3RhdGUsCisJCSAgIGJvb2wgY2FuU2V0VGFnKQoreworCVJlc3VsdFJlbElu Zm8gKnJlc3VsdFJlbEluZm87CisJUmVsYXRpb24JcmVzdWx0UmVsYXRpb25EZXNjOworCVR1cGxl RGVzYwl0dXBkZXNjOworCWJvb2wJCWlzbnVsbCA9IHRydWU7CisJRGF0dW0JCXZhbHVlOworCUZv cm1fcGdfYXR0cmlidXRlIGF0dHIgPSBOVUxMOworCU9pZAkJCXZhcmlkOworCisJaWYgKHNsb3Qg IT0gTlVMTCAmJiAhc2xvdC0+dHRzX2lzZW1wdHkpCisJeworCQl0dXBkZXNjID0gc2xvdC0+dHRz X3R1cGxlRGVzY3JpcHRvcjsKKworCQlBc3NlcnQodHVwZGVzYyAhPSBOVUxMKTsKKworCQkvKiBz aG91bGQgYmUgY2hlY2tlZCBiZWZvcmUgKi8KKwkJaWYgKHR1cGRlc2MtPm5hdHRzICE9IDEpCisJ CQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBudW1iZXIgb2YgYXR0cmlidXRlcyIpOworCisJCWF0 dHIgPSBUdXBsZURlc2NBdHRyKHR1cGRlc2MsIDApOworCisJCWlmICghc2xvdC0+dHRzX2lzbnVs bFswXSkKKwkJeworCQkJaXNudWxsID0gZmFsc2U7CisJCQl2YWx1ZSA9IHNsb3QtPnR0c192YWx1 ZXNbMF07CisJCX0KKwl9CisKKwkvKgorCSAqIE5vdywgZXNfcmVzdWx0X3JlbGF0aW9uX2luZm8g aXMgZW1wdHksIGJ1dCBjYW4gYmUgaW5pdGlhbGl6ZWQKKwkgKiB0byBzdHJ1Y3R1cmUgb2YgdXNl ZCBzY2hlbWEgdmFyaWFibGUuCisJICovCisJcmVzdWx0UmVsSW5mbyA9IGVzdGF0ZS0+ZXNfcmVz dWx0X3JlbGF0aW9uX2luZm87CisJcmVzdWx0UmVsYXRpb25EZXNjID0gcmVzdWx0UmVsSW5mby0+ cmlfUmVsYXRpb25EZXNjOworCXZhcmlkID0gcmVzdWx0UmVsYXRpb25EZXNjLT5yZF9pZDsKKwor CWlmICghaXNudWxsKQorCXsKKwkJLyogZXhwZWN0aW5nIHNvIHZhcmlhYmxlIGFuZCBleHByZXNz aW9uIGFyZSBlcXVhbCAqLworCQlTZXRTY2hlbWFWYXJpYWJsZSh2YXJpZCwgdmFsdWUsIGlzbnVs bCwgYXR0ci0+YXR0dHlwaWQsIC0xKTsKKwl9CisJZWxzZQorCXsKKwkJU2V0U2NoZW1hVmFyaWFi bGUodmFyaWQsIChEYXR1bSkgMCwgdHJ1ZSwgSW52YWxpZE9pZCwgLTEpOworCX0KKworCWlmIChj YW5TZXRUYWcpCisJeworCQlBc3NlcnQoZXN0YXRlLT5lc19wcm9jZXNzZWQgPT0gMCk7CisJCShl c3RhdGUtPmVzX3Byb2Nlc3NlZCkrKzsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KIAogLyoKICAq IFByb2Nlc3MgQkVGT1JFIEVBQ0ggU1RBVEVNRU5UIHRyaWdnZXJzCkBAIC0xNTQ4LDYgKzE2MTYs OSBAQCBmaXJlQlNUcmlnZ2VycyhNb2RpZnlUYWJsZVN0YXRlICpub2RlKQogCQljYXNlIENNRF9E RUxFVEU6CiAJCQlFeGVjQlNEZWxldGVUcmlnZ2Vycyhub2RlLT5wcy5zdGF0ZSwgcmVzdWx0UmVs SW5mbyk7CiAJCQlicmVhazsKKwkJY2FzZSBDTURfTEVUOgorCQkJLyogdGhlcmUgYXJlIG5vIHRy aWdnZXIgKi8KKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVua25vd24g b3BlcmF0aW9uIik7CiAJCQlicmVhazsKQEAgLTE2MDMsNiArMTY3NCw5IEBAIGZpcmVBU1RyaWdn ZXJzKE1vZGlmeVRhYmxlU3RhdGUgKm5vZGUpCiAJCQlFeGVjQVNEZWxldGVUcmlnZ2Vycyhub2Rl LT5wcy5zdGF0ZSwgcmVzdWx0UmVsSW5mbywKIAkJCQkJCQkJIG5vZGUtPm10X3RyYW5zaXRpb25f Y2FwdHVyZSk7CiAJCQlicmVhazsKKwkJY2FzZSBDTURfTEVUOgorCQkJLyogdmFyaWFibGVzIGhh cyBub3QgdHJpZ2dlcnMgKi8KKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwg InVua25vd24gb3BlcmF0aW9uIik7CiAJCQlicmVhazsKQEAgLTIxNDIsNiArMjIxNiw5IEBAIEV4 ZWNNb2RpZnlUYWJsZShQbGFuU3RhdGUgKnBzdGF0ZSkKIAkJCQkJCQkJICBOVUxMLCB0cnVlLCBu b2RlLT5jYW5TZXRUYWcsCiAJCQkJCQkJCSAgZmFsc2UgLyogY2hhbmdpbmdQYXJ0ICovICk7CiAJ CQkJYnJlYWs7CisJCQljYXNlIENNRF9MRVQ6CisJCQkJc2xvdCA9IEV4ZWNMZXQobm9kZSwgc2xv dCwgZXN0YXRlLCBub2RlLT5jYW5TZXRUYWcpOworCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJ CQllbG9nKEVSUk9SLCAidW5rbm93biBvcGVyYXRpb24iKTsKIAkJCQlicmVhazsKQEAgLTI1NTIs NiArMjYyOSw3IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJCWJyZWFrOwogCQkJY2FzZSBDTURfVVBEQVRFOgog CQkJY2FzZSBDTURfREVMRVRFOgorCQkJY2FzZSBDTURfTEVUOgogCQkJCWp1bmtfZmlsdGVyX25l ZWRlZCA9IHRydWU7CiAJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwppbmRleCAw OGY2ZjY3YTE1Li5lMTA3YWJmNmFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9z cGkuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwpAQCAtMjQyMCw2ICsyNDIwLDkg QEAgX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wgZmlyZV90cmlnZ2Vycywg dWludDY0IHRjb3VudCkKIAkJCWVsc2UKIAkJCQlyZXMgPSBTUElfT0tfVVBEQVRFOwogCQkJYnJl YWs7CisJCWNhc2UgQ01EX0xFVDoKKwkJCXJlcyA9IFNQSV9PS19VVElMSVRZOworCQkJYnJlYWs7 CiAJCWRlZmF1bHQ6CiAJCQlyZXR1cm4gU1BJX0VSUk9SX09QVU5LTk9XTjsKIAl9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2Nv cHlmdW5jcy5jCmluZGV4IDdjMDQ1YTdhZmUuLmNmYTY1MjNjOWQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5j cy5jCkBAIC0zMTAzLDYgKzMxMDMsMTggQEAgX2NvcHlTZWxlY3RTdG10KGNvbnN0IFNlbGVjdFN0 bXQgKmZyb20pCiAJcmV0dXJuIG5ld25vZGU7CiB9CiAKK3N0YXRpYyBMZXRTdG10ICoKK19jb3B5 TGV0U3RtdChjb25zdCBMZXRTdG10ICpmcm9tKQoreworCUxldFN0bXQgKm5ld25vZGUgPSBtYWtl Tm9kZShMZXRTdG10KTsKKworCUNPUFlfTk9ERV9GSUVMRCh0YXJnZXQpOworCUNPUFlfTk9ERV9G SUVMRChzZWxlY3RTdG10KTsKKwlDT1BZX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKKworCXJl dHVybiBuZXdub2RlOworfQorCiBzdGF0aWMgU2V0T3BlcmF0aW9uU3RtdCAqCiBfY29weVNldE9w ZXJhdGlvblN0bXQoY29uc3QgU2V0T3BlcmF0aW9uU3RtdCAqZnJvbSkKIHsKQEAgLTUxNDgsNiAr NTE2MCw5IEBAIGNvcHlPYmplY3RJbXBsKGNvbnN0IHZvaWQgKmZyb20pCiAJCWNhc2UgVF9TZWxl Y3RTdG10OgogCQkJcmV0dmFsID0gX2NvcHlTZWxlY3RTdG10KGZyb20pOwogCQkJYnJlYWs7CisJ CWNhc2UgVF9MZXRTdG10OgorCQkJcmV0dmFsID0gX2NvcHlMZXRTdG10KGZyb20pOworCQkJYnJl YWs7CiAJCWNhc2UgVF9TZXRPcGVyYXRpb25TdG10OgogCQkJcmV0dmFsID0gX2NvcHlTZXRPcGVy YXRpb25TdG10KGZyb20pOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rl cy9lcXVhbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKaW5kZXggNmE5 NzFkMDE0MS4uYzcwMWFlZGRmMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwpAQCAtMTA1Nyw2ICsx MDU3LDE2IEBAIF9lcXVhbFNlbGVjdFN0bXQoY29uc3QgU2VsZWN0U3RtdCAqYSwgY29uc3QgU2Vs ZWN0U3RtdCAqYikKIAlyZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wKK19lcXVhbExldFN0 bXQoY29uc3QgTGV0U3RtdCAqYSwgY29uc3QgTGV0U3RtdCAqYikKK3sKKwlDT01QQVJFX05PREVf RklFTEQodGFyZ2V0KTsKKwlDT01QQVJFX05PREVfRklFTEQoc2VsZWN0U3RtdCk7CisJQ09NUEFS RV9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGlj IGJvb2wKIF9lcXVhbFNldE9wZXJhdGlvblN0bXQoY29uc3QgU2V0T3BlcmF0aW9uU3RtdCAqYSwg Y29uc3QgU2V0T3BlcmF0aW9uU3RtdCAqYikKIHsKQEAgLTMyMjUsNiArMzIzNSw5IEBAIGVxdWFs KGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCiAJCWNhc2UgVF9TZWxlY3RTdG10OgogCQkJ cmV0dmFsID0gX2VxdWFsU2VsZWN0U3RtdChhLCBiKTsKIAkJCWJyZWFrOworCQljYXNlIFRfTGV0 U3RtdDoKKwkJCXJldHZhbCA9IF9lcXVhbExldFN0bXQoYSwgYik7CisJCQlicmVhazsKIAkJY2Fz ZSBUX1NldE9wZXJhdGlvblN0bXQ6CiAJCQlyZXR2YWwgPSBfZXF1YWxTZXRPcGVyYXRpb25TdG10 KGEsIGIpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVu Y3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCmluZGV4IGExMDAxNGY3NTUuLmE5 MzEyMzdjMWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCisrKyBi L3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCkBAIC0zNDY5LDYgKzM0NjksMTYgQEAgcmF3 X2V4cHJlc3Npb25fdHJlZV93YWxrZXIoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJuIHRydWU7CiAJ CQl9CiAJCQlicmVhazsKKwkJY2FzZSBUX0xldFN0bXQ6CisJCQl7CisJCQkJTGV0U3RtdCAqc3Rt dCA9IChMZXRTdG10ICopIG5vZGU7CisKKwkJCQlpZiAod2Fsa2VyKHN0bXQtPnRhcmdldCwgY29u dGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmICh3YWxrZXIoc3RtdC0+c2VsZWN0U3Rt dCwgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJlYWs7CiAJCWNhc2Ug VF9BX0V4cHI6CiAJCQl7CiAJCQkJQV9FeHByCSAgICpleHByID0gKEFfRXhwciAqKSBub2RlOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCmluZGV4IDUwNWFlMGFmODUuLmFlZTE2ZjQ2 NzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYworKysg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKQEAgLTEyNDksMTIgKzEyNDks MTUgQEAgbWF4X3BhcmFsbGVsX2hhemFyZF93YWxrZXIoTm9kZSAqbm9kZSwgbWF4X3BhcmFsbGVs X2hhemFyZF9jb250ZXh0ICpjb250ZXh0KQogCSAqIFBBUkFNX0VYRUMgUGFyYW1zIGxpc3RlZCBp biBzYWZlX3BhcmFtX2lkcywgbWVhbmluZyB0aGV5IGNvdWxkIGJlCiAJICogZWl0aGVyIGdlbmVy YXRlZCB3aXRoaW4gdGhlIHdvcmtlciBvciBjYW4gYmUgY29tcHV0ZWQgaW4gbWFzdGVyIGFuZAog CSAqIHRoZW4gdGhlaXIgdmFsdWUgY2FuIGJlIHBhc3NlZCB0byB0aGUgd29ya2VyLgorCSAqIFBB UkFNX1NDSEVNQV9WQVJJQUJMRSBwYXJhbXMgYXJlIG5ld2VyIGNoYW5nZWQgYnkgd29ya2Vycywg c28gdGhleSBjYW4gYmUKKwkgKiBzYWZlLgogCSAqLwogCWVsc2UgaWYgKElzQShub2RlLCBQYXJh bSkpCiAJewogCQlQYXJhbQkgICAqcGFyYW0gPSAoUGFyYW0gKikgbm9kZTsKIAotCQlpZiAocGFy YW0tPnBhcmFta2luZCA9PSBQQVJBTV9FWFRFUk4pCisJCWlmIChwYXJhbS0+cGFyYW1raW5kID09 IFBBUkFNX0VYVEVSTiB8fAorCQkJcGFyYW0tPnBhcmFta2luZCA9PSBQQVJBTV9TQ0hFTUFfVkFS SUFCTEUpCiAJCQlyZXR1cm4gZmFsc2U7CiAKIAkJaWYgKHBhcmFtLT5wYXJhbWtpbmQgIT0gUEFS QU1fRVhFQyB8fApAQCAtNDc5Myw3ICs0Nzk2LDcgQEAgc3Vic3RpdHV0ZV9hY3R1YWxfcGFyYW1l dGVyc19tdXRhdG9yKE5vZGUgKm5vZGUsCiB7CiAJaWYgKG5vZGUgPT0gTlVMTCkKIAkJcmV0dXJu IE5VTEw7Ci0JaWYgKElzQShub2RlLCBQYXJhbSkpCisJaWYgKElzQShub2RlLCBQYXJhbSkgJiYg KChQYXJhbSAqKSBub2RlKS0+cGFyYW1raW5kICE9IFBBUkFNX1NDSEVNQV9WQVJJQUJMRSkKIAl7 CiAJCVBhcmFtCSAgICpwYXJhbSA9IChQYXJhbSAqKSBub2RlOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwpp bmRleCAwNWY1NzU5MWU0Li40ZmY2YzQ0M2I0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJz ZXIvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKQEAgLTI0LDYg KzI0LDcgQEAKIAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNsdWRlICJhY2Nlc3MvaGVh cGFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N5c2F0dHIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3R5cGUuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKQEAgLTQyLDggKzQzLDEyIEBACiAjaW5j bHVkZSAicGFyc2VyL3BhcnNlX3BhcmFtLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0 aW9uLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3RhcmdldC5oIgorI2luY2x1ZGUgInBhcnNl ci9wYXJzZV90eXBlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNldHJlZS5oIgogI2luY2x1ZGUg InJld3JpdGUvcmV3cml0ZU1hbmlwLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNp bmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgog I2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCiAKQEAgLTU2LDYgKzYxLDcgQEAgc3RhdGljIFF1ZXJ5 ICp0cmFuc2Zvcm1JbnNlcnRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgSW5zZXJ0U3RtdCAqc3Rt dCk7CiBzdGF0aWMgTGlzdCAqdHJhbnNmb3JtSW5zZXJ0Um93KFBhcnNlU3RhdGUgKnBzdGF0ZSwg TGlzdCAqZXhwcmxpc3QsCiAJCQkJICAgTGlzdCAqc3RtdGNvbHMsIExpc3QgKmljb2x1bW5zLCBM aXN0ICphdHRybm9zLAogCQkJCSAgIGJvb2wgc3RyaXBfaW5kaXJlY3Rpb24pOworc3RhdGljIFF1 ZXJ5ICp0cmFuc2Zvcm1MZXRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGV0U3RtdCAqc3RtdCk7 CiBzdGF0aWMgT25Db25mbGljdEV4cHIgKnRyYW5zZm9ybU9uQ29uZmxpY3RDbGF1c2UoUGFyc2VT dGF0ZSAqcHN0YXRlLAogCQkJCQkJICBPbkNvbmZsaWN0Q2xhdXNlICpvbkNvbmZsaWN0Q2xhdXNl KTsKIHN0YXRpYyBpbnQJY291bnRfcm93ZXhwcl9jb2x1bW5zKFBhcnNlU3RhdGUgKnBzdGF0ZSwg Tm9kZSAqZXhwcik7CkBAIC0yNjcsNiArMjczLDcgQEAgdHJhbnNmb3JtU3RtdChQYXJzZVN0YXRl ICpwc3RhdGUsIE5vZGUgKnBhcnNlVHJlZSkKIAkJY2FzZSBUX0luc2VydFN0bXQ6CiAJCWNhc2Ug VF9VcGRhdGVTdG10OgogCQljYXNlIFRfRGVsZXRlU3RtdDoKKwkJY2FzZSBUX0xldFN0bXQ6CiAJ CQkodm9pZCkgdGVzdF9yYXdfZXhwcmVzc2lvbl9jb3ZlcmFnZShwYXJzZVRyZWUsIE5VTEwpOwog CQkJYnJlYWs7CiAJCWRlZmF1bHQ6CkBAIC0zMDQsNiArMzExLDEwIEBAIHRyYW5zZm9ybVN0bXQo UGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpwYXJzZVRyZWUpCiAJCQl9CiAJCQlicmVhazsKIAor CQljYXNlIFRfTGV0U3RtdDoKKwkJCXJlc3VsdCA9IHRyYW5zZm9ybUxldFN0bXQocHN0YXRlLCAo TGV0U3RtdCAqKSBwYXJzZVRyZWUpOworCQkJYnJlYWs7CisKIAkJCS8qCiAJCQkgKiBTcGVjaWFs IGNhc2VzCiAJCQkgKi8KQEAgLTM2Nyw2ICszNzgsNyBAQCBhbmFseXplX3JlcXVpcmVzX3NuYXBz aG90KFJhd1N0bXQgKnBhcnNlVHJlZSkKIAkJY2FzZSBUX0RlbGV0ZVN0bXQ6CiAJCWNhc2UgVF9V cGRhdGVTdG10OgogCQljYXNlIFRfU2VsZWN0U3RtdDoKKwkJY2FzZSBUX0xldFN0bXQ6CiAJCQly ZXN1bHQgPSB0cnVlOwogCQkJYnJlYWs7CiAKQEAgLTE1NDEsNiArMTU1MywzNTQgQEAgdHJhbnNm b3JtVmFsdWVzQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU2VsZWN0U3RtdCAqc3RtdCkKIAly ZXR1cm4gcXJ5OwogfQogCisvKgorICogdHJhbnNmb3JtTGV0U3RtdCAtCisgKgkgIHRyYW5zZm9y bSBhbiBMZXQgU3RhdGVtZW50CisgKi8KK3N0YXRpYyBRdWVyeSAqCit0cmFuc2Zvcm1MZXRTdG10 KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGV0U3RtdCAqc3RtdCkKK3sKKwlRdWVyeQkgICAqcXJ5ID0g bWFrZU5vZGUoUXVlcnkpOworCUxpc3QJICAgKmV4cHJMaXN0ID0gTklMOworCUxpc3QJICAgKmV4 cHJMaXN0Q29lciA9IE5JTDsKKwlMaXN0CSAgICpzdWJfcnRhYmxlOworCUxpc3QJICAgKnN1Yl9u YW1lc3BhY2U7CisJUmFuZ2VUYmxFbnRyeSAqcnRlOworCVJhbmdlVGJsUmVmICpydHI7CisJTGlz dENlbGwgICAqbGM7CisJQWNsTW9kZQkJdGFyZ2V0UGVybXM7CisJUGFyc2VTdGF0ZSAqc3ViX3Bz dGF0ZTsKKwlRdWVyeQkgICAqc2VsZWN0UXVlcnk7CisJaW50CQkJaSA9IDA7CisKKwlSYW5nZVZh ciAgICpydmFyOworCWNoYXIJICAgKnN0cjEgPSBOVUxMOworCWNoYXIJICAgKnN0cjIgPSBOVUxM OworCWNoYXIJICAgKnN0cjMgPSBOVUxMOworCWNoYXIJICAgKmZpZWxkbmFtZTsKKwlpbnQJCQlm aWVsZG5hbWVfcG9zOworCUxpc3QJICAgKmluZGlyZWN0aW9uID0gTklMOworCWludAkJCWluZGly ZWN0aW9uX3BvcyA9IC0xOworCisJUmVsYXRpb24JcmQ7CisJT2lkCQkJdmFydHlwaWQgPSBJbnZh bGlkT2lkOworCWludDMyCQl2YXJ0eXBtb2QgPSAtMTsKKwlPaWQJCQl2YXJpZDsKKworCVBhcnNl RXhwcktpbmQgc3ZfZXhwcl9raW5kOworCisJc3ZfZXhwcl9raW5kID0gcHN0YXRlLT5wX2V4cHJf a2luZDsKKwlwc3RhdGUtPnBfZXhwcl9raW5kID0gRVhQUl9LSU5EX1VQREFURV9UQVJHRVQ7CisK KwkvKiBUaGVyZSBjYW4ndCBiZSBhbnkgb3V0ZXIgV0lUSCB0byB3b3JyeSBhYm91dCAqLworCUFz c2VydChwc3RhdGUtPnBfY3RlbmFtZXNwYWNlID09IE5JTCk7CisKKwlxcnktPmNvbW1hbmRUeXBl ID0gQ01EX0xFVDsKKwlwc3RhdGUtPnBfaXNfbGV0ID0gdHJ1ZTsKKworCXN3aXRjaCAobGlzdF9s ZW5ndGgoc3RtdC0+dGFyZ2V0KSkKKwl7CisJCWNhc2UgMToKKwkJCXsKKwkJCQlOb2RlCSpmaWVs ZDEgPSAoTm9kZSAqKSBsaW5pdGlhbChzdG10LT50YXJnZXQpOworCisJCQkJQXNzZXJ0KElzQShm aWVsZDEsIFN0cmluZykpOworCQkJCXN0cjIgPSBzdHJWYWwoZmllbGQxKTsKKwkJCX0KKwkJCWJy ZWFrOworCQljYXNlIDI6CisJCQl7CisJCQkJTm9kZQkqZmllbGQxID0gKE5vZGUgKikgbGluaXRp YWwoc3RtdC0+dGFyZ2V0KTsKKwkJCQlOb2RlCSpmaWVsZDIgPSAoTm9kZSAqKSBsc2Vjb25kKHN0 bXQtPnRhcmdldCk7CisKKwkJCQlBc3NlcnQoSXNBKGZpZWxkMSwgU3RyaW5nKSk7CisKKwkJCQlp ZiAoSXNBKGZpZWxkMiwgU3RyaW5nKSkKKwkJCQl7CisJCQkJCXN0cjEgPSBzdHJWYWwoZmllbGQx KTsKKwkJCQkJc3RyMiA9IHN0clZhbChmaWVsZDIpOworCQkJCX0KKwkJCQllbHNlCisJCQkJewor CQkJCQlzdHIyID0gc3RyVmFsKGZpZWxkMSk7CisJCQkJCWluZGlyZWN0aW9uX3BvcyA9IDI7CisJ CQkJfQorCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgMzoKKwkJCXsKKwkJCQlOb2RlCSpmaWVsZDEg PSAoTm9kZSAqKSBsaW5pdGlhbChzdG10LT50YXJnZXQpOworCQkJCU5vZGUJKmZpZWxkMiA9IChO b2RlICopIGxzZWNvbmQoc3RtdC0+dGFyZ2V0KTsKKwkJCQlOb2RlCSpmaWVsZDMgPSAoTm9kZSAq KSBsdGhpcmQoc3RtdC0+dGFyZ2V0KTsKKworCQkJCUFzc2VydChJc0EoZmllbGQxLCBTdHJpbmcp KTsKKworCQkJCWlmICghSXNBKGZpZWxkMiwgU3RyaW5nKSkKKwkJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2coImJy b2tlbiBzY2hlbWEgdmFyaWFibGUgaWRlbnRpZmllciIpLAorCQkJCQkJCSBwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBzdG10LT5sb2NhdGlvbikpKTsKKworCQkJCWlmIChJc0EoZmllbGQyLCBT dHJpbmcpICYmIElzQShmaWVsZDMsIFN0cmluZykpCisJCQkJeworCQkJCQlzdHIxID0gc3RyVmFs KGZpZWxkMSk7CisJCQkJCXN0cjIgPSBzdHJWYWwoZmllbGQyKTsKKwkJCQkJc3RyMyA9IHN0clZh bChmaWVsZDMpOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQlzdHIxID0gc3RyVmFsKGZp ZWxkMSk7CisJCQkJCXN0cjIgPSBzdHJWYWwoZmllbGQyKTsKKwkJCQkJaW5kaXJlY3Rpb25fcG9z ID0gMzsKKwkJCQl9CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSA0OgorCQkJeworCQkJCU5vZGUJ KmZpZWxkMSA9IChOb2RlICopIGxpbml0aWFsKHN0bXQtPnRhcmdldCk7CisJCQkJTm9kZQkqZmll bGQyID0gKE5vZGUgKikgbHNlY29uZChzdG10LT50YXJnZXQpOworCQkJCU5vZGUJKmZpZWxkMyA9 IChOb2RlICopIGx0aGlyZChzdG10LT50YXJnZXQpOworCQkJCU5vZGUJKmZpZWxkNCA9IChOb2Rl ICopIGxmb3VydGgoc3RtdC0+dGFyZ2V0KTsKKworCQkJCUFzc2VydChJc0EoZmllbGQxLCBTdHJp bmcpKTsKKworCQkJCWlmIChJc0EoZmllbGQyLCBTdHJpbmcpICYmIElzQShmaWVsZDMsIFN0cmlu ZykgJiYgIUlzQShmaWVsZDQsIFN0cmluZykpCisJCQkJeworCQkJCQlzdHIxID0gc3RyVmFsKGZp ZWxkMSk7CisJCQkJCXN0cjIgPSBzdHJWYWwoZmllbGQyKTsKKwkJCQkJc3RyMyA9IHN0clZhbChm aWVsZDMpOworCQkJCQlpbmRpcmVjdGlvbl9wb3MgPSA0OworCQkJCX0KKwkJCQllbHNlCisJCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJ CQkJCQkgZXJybXNnKCJicm9rZW4gc2NoZW1hIHZhcmlhYmxlIGlkZW50aWZpZXIiKSwKKwkJCQkJ CQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3RtdC0+bG9jYXRpb24pKSk7CisJCQl9CisJ CQlicmVhazsKKworCisJCWRlZmF1bHQ6CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29k ZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCSBlcnJtc2coImltcHJvcGVyIHF1YWxpZmll ZCBuYW1lIiksCisJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3RtdC0+bG9jYXRp b24pKSk7CisJfQorCisJcnZhciA9IG1ha2VSYW5nZVZhckZvclRhcmdldE9mU2NoZW1hVmFyaWFi bGUocHN0YXRlLCBzdHIxLCBzdHIyLCBzdHIzLAorCQkJCQkJCQkJCQkJICBzdG10LT5sb2NhdGlv biwgJmZpZWxkbmFtZSwKKwkJCQkJCQkJCQkJCSAgJmZpZWxkbmFtZV9wb3MsIGZhbHNlKTsKKwor CS8qCisJICogSWYgYSBub24tbmlsIHJhbmdldGFibGUvbmFtZXNwYWNlIHdhcyBwYXNzZWQgaW4s IGFuZCB3ZSBhcmUgZG9pbmcKKwkgKiBJTlNFUlQvU0VMRUNULCBhcnJhbmdlIHRvIHBhc3MgdGhl IHJhbmdldGFibGUvbmFtZXNwYWNlIGRvd24gdG8gdGhlCisJICogU0VMRUNULiAgVGhpcyBjYW4g b25seSBoYXBwZW4gaWYgd2UgYXJlIGluc2lkZSBhIENSRUFURSBSVUxFLCBhbmQgaW4KKwkgKiB0 aGF0IGNhc2Ugd2Ugd2FudCB0aGUgcnVsZSdzIE9MRCBhbmQgTkVXIHJ0YWJsZSBlbnRyaWVzIHRv IGFwcGVhciBhcworCSAqIHBhcnQgb2YgdGhlIFNFTEVDVCdzIHJ0YWJsZSwgbm90IGFzIG91dGVy IHJlZmVyZW5jZXMgZm9yIGl0LiAgKEtsdWdlISkKKwkgKiBUaGUgU0VMRUNUJ3Mgam9pbmxpc3Qg aXMgbm90IGFmZmVjdGVkIGhvd2V2ZXIuICBXZSBtdXN0IGRvIHRoaXMgYmVmb3JlCisJICogYWRk aW5nIHRoZSB0YXJnZXQgdGFibGUgdG8gdGhlIElOU0VSVCdzIHJ0YWJsZS4KKwkgKi8KKwlzdWJf cnRhYmxlID0gcHN0YXRlLT5wX3J0YWJsZTsKKwlwc3RhdGUtPnBfcnRhYmxlID0gTklMOworCXN1 Yl9uYW1lc3BhY2UgPSBwc3RhdGUtPnBfbmFtZXNwYWNlOworCXBzdGF0ZS0+cF9uYW1lc3BhY2Ug PSBOSUw7CisKKwl0YXJnZXRQZXJtcyA9IEFDTF9VUERBVEU7CisJcXJ5LT5yZXN1bHRSZWxhdGlv biA9IHNldFRhcmdldFRhYmxlKHBzdGF0ZSwgcnZhciwKKwkJCQkJCQkJCQkgZmFsc2UsIGZhbHNl LCB0YXJnZXRQZXJtcyk7CisKKwlyZCA9IHBzdGF0ZS0+cF90YXJnZXRfcmVsYXRpb247CisKKwl2 YXJ0eXBpZCA9IHJkLT5yZF9yZWwtPnJlbG9mdHlwZTsKKwl2YXJpZCA9IHJkLT5yZF9pZDsKKwor CWlmICh2YXJ0eXBpZCAhPSBJbnZhbGlkT2lkKQorCXsKKwkJaWYgKGdldF90eXB0eXBlKHZhcnR5 cGlkKSAhPSBUWVBUWVBFX0NPTVBPU0lURSkKKwkJeworCQkJVHVwbGVEZXNjCXR1cGRlc2M7CisJ CQlSZWxhdGlvbglyZWw7CisJCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyU3RydWN0OworCisJCQkv KiBmaW5kIGZpcnN0IGZpZWxkICovCisJCQlyZWwgPSByZWxhdGlvbl9vcGVuKHR5cGVpZFR5cGVS ZWxpZChyZC0+cmRfcmVsLT5yZWx0eXBlKSwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCXR1cGRlc2Mg PSBDcmVhdGVUdXBsZURlc2NDb3B5KFJlbGF0aW9uR2V0RGVzY3IocmVsKSk7CisKKwkJCWF0dHJT dHJ1Y3QgPSBUdXBsZURlc2NBdHRyKHR1cGRlc2MsIDApOworCisJCQl2YXJ0eXBpZCA9IGF0dHJT dHJ1Y3QtPmF0dHR5cGlkOworCQkJdmFydHlwbW9kID0gYXR0clN0cnVjdC0+YXR0dHlwbW9kOwor CisJCQlGcmVlVHVwbGVEZXNjKHR1cGRlc2MpOworCQkJcmVsYXRpb25fY2xvc2UocmVsLCBBY2Nl c3NTaGFyZUxvY2spOworCQl9CisJCWVsc2UKKwkJeworCQkJdmFydHlwaWQgPSByZC0+cmRfcmVs LT5yZWxvZnR5cGU7CisJCQl2YXJ0eXBtb2QgPSAtMTsKKwkJfQorCX0KKwllbHNlCisJeworCQl2 YXJ0eXBpZCA9IHJkLT5yZF9yZWwtPnJlbHR5cGU7CisJCXZhcnR5cG1vZCA9IC0xOworCX0KKwor CWlmIChmaWVsZG5hbWUgIT0gTlVMTCkKKwkJaW5kaXJlY3Rpb24gPSBsaXN0X2NvcHlfdGFpbChz dG10LT50YXJnZXQsIGZpZWxkbmFtZV9wb3MgLSAxKTsKKwllbHNlIGlmIChpbmRpcmVjdGlvbl9w b3MgPj0gMikKKwkJaW5kaXJlY3Rpb24gPSBsaXN0X2NvcHlfdGFpbChzdG10LT50YXJnZXQsIGlu ZGlyZWN0aW9uX3BvcyAtIDEpOworCisJLyoKKwkgKiBXZSBtYWtlIHRoZSBzdWItcHN0YXRlIGEg Y2hpbGQgb2YgdGhlIG91dGVyIHBzdGF0ZSBzbyB0aGF0IGl0IGNhbgorCSAqIHNlZSBhbnkgUGFy YW0gZGVmaW5pdGlvbnMgc3VwcGxpZWQgZnJvbSBhYm92ZS4gIFNpbmNlIHRoZSBvdXRlcgorCSAq IHBzdGF0ZSdzIHJ0YWJsZSBhbmQgbmFtZXNwYWNlIGFyZSBwcmVzZW50bHkgZW1wdHksIHRoZXJl IGFyZSBubworCSAqIHNpZGUtZWZmZWN0cyBvZiBleHBvc2luZyBuYW1lcyB0aGUgc3ViLVNFTEVD VCBzaG91bGRuJ3QgYmUgYWJsZSB0bworCSAqIHNlZS4KKwkgKi8KKwlzdWJfcHN0YXRlID0gbWFr ZV9wYXJzZXN0YXRlKHBzdGF0ZSk7CisKKwkvKgorCSAqIFByb2Nlc3MgdGhlIHNvdXJjZSBTRUxF Q1QuCisJICoKKwkgKiBJdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGlzIGJlIGhhbmRsZWQganVzdCBs aWtlIGEgc3RhbmRhbG9uZSBTRUxFQ1Q7CisJICogb3RoZXJ3aXNlIHRoZSBiZWhhdmlvciBvZiBT RUxFQ1Qgd2l0aGluIElOU0VSVCBtaWdodCBiZSBkaWZmZXJlbnQKKwkgKiBmcm9tIGEgc3RhbmQt YWxvbmUgU0VMRUNULiAoSW5kZWVkLCBQb3N0Z3JlcyB1cCB0aHJvdWdoIDYuNSBoYWQKKwkgKiBi dWdzIG9mIGp1c3QgdGhhdCBuYXR1cmUuLi4pCisJICoKKwkgKiBUaGUgc29sZSBleGNlcHRpb24g aXMgdGhhdCB3ZSBwcmV2ZW50IHJlc29sdmluZyB1bmtub3duLXR5cGUKKwkgKiBvdXRwdXRzIGFz IFRFWFQuICBUaGlzIGRvZXMgbm90IGNoYW5nZSB0aGUgc2VtYW50aWNzIHNpbmNlIGlmIHRoZQor CSAqIGNvbHVtbiB0eXBlIG1hdHRlcnMgc2VtYW50aWNhbGx5LCBpdCB3b3VsZCBoYXZlIGJlZW4g cmVzb2x2ZWQgdG8KKwkgKiBzb21ldGhpbmcgZWxzZSBhbnl3YXkuICBEb2luZyB0aGlzIGxldHMg dXMgcmVzb2x2ZSBzdWNoIG91dHB1dHMgYXMKKwkgKiB0aGUgdGFyZ2V0IGNvbHVtbidzIHR5cGUs IHdoaWNoIHdlIGhhbmRsZSBiZWxvdy4KKwkgKi8KKwlzdWJfcHN0YXRlLT5wX3J0YWJsZSA9IHN1 Yl9ydGFibGU7CisJc3ViX3BzdGF0ZS0+cF9qb2luZXhwcnMgPSBOSUw7CS8qIHN1Yl9ydGFibGUg aGFzIG5vIGpvaW5zICovCisJc3ViX3BzdGF0ZS0+cF9uYW1lc3BhY2UgPSBzdWJfbmFtZXNwYWNl OworCXN1Yl9wc3RhdGUtPnBfcmVzb2x2ZV91bmtub3ducyA9IGZhbHNlOworCisJc2VsZWN0UXVl cnkgPSB0cmFuc2Zvcm1TdG10KHN1Yl9wc3RhdGUsIHN0bXQtPnNlbGVjdFN0bXQpOworCisJZnJl ZV9wYXJzZXN0YXRlKHN1Yl9wc3RhdGUpOworCisJLyogVGhlIGdyYW1tYXIgc2hvdWxkIGhhdmUg cHJvZHVjZWQgYSBTRUxFQ1QgKi8KKwlpZiAoIUlzQShzZWxlY3RRdWVyeSwgUXVlcnkpIHx8CisJ CXNlbGVjdFF1ZXJ5LT5jb21tYW5kVHlwZSAhPSBDTURfU0VMRUNUKQorCQllbG9nKEVSUk9SLCAi dW5leHBlY3RlZCBub24tU0VMRUNUIGNvbW1hbmQgaW4gTEVUIC4uLiBTRUxFQ1QiKTsKKworCS8q CisJICogTWFrZSB0aGUgc291cmNlIGJlIGEgc3VicXVlcnkgaW4gdGhlIExFVCdzIHJhbmdldGFi bGUsIGFuZCBhZGQKKwkgKiBpdCB0byB0aGUgTEVUJ3Mgam9pbmxpc3QuCisJICovCisJcnRlID0g YWRkUmFuZ2VUYWJsZUVudHJ5Rm9yU3VicXVlcnkocHN0YXRlLAorCQkJCQkJCQkJCXNlbGVjdFF1 ZXJ5LAorCQkJCQkJCQkJCW1ha2VBbGlhcygiKlNFTEVDVCoiLCBOSUwpLAorCQkJCQkJCQkJCWZh bHNlLAorCQkJCQkJCQkJCWZhbHNlKTsKKwlydHIgPSBtYWtlTm9kZShSYW5nZVRibFJlZik7CisJ LyogYXNzdW1lIG5ldyBydGUgaXMgYXQgZW5kICovCisJcnRyLT5ydGluZGV4ID0gbGlzdF9sZW5n dGgocHN0YXRlLT5wX3J0YWJsZSk7CisJQXNzZXJ0KHJ0ZSA9PSBydF9mZXRjaChydHItPnJ0aW5k ZXgsIHBzdGF0ZS0+cF9ydGFibGUpKTsKKwlwc3RhdGUtPnBfam9pbmxpc3QgPSBsYXBwZW5kKHBz dGF0ZS0+cF9qb2lubGlzdCwgcnRyKTsKKworCS8qLS0tLS0tLS0tLQorCSAqIEdlbmVyYXRlIGFu IGV4cHJlc3Npb24gbGlzdCBmb3IgdGhlIExFVCB0aGF0IHNlbGVjdHMgYWxsIHRoZQorCSAqIG5v bi1yZXNqdW5rIGNvbHVtbnMgZnJvbSB0aGUgc3VicXVlcnkuCisJICotLS0tLS0tLS0tCisJICov CisKKwlleHByTGlzdCA9IE5JTDsKKwlmb3JlYWNoKGxjLCBzZWxlY3RRdWVyeS0+dGFyZ2V0TGlz dCkKKwl7CisJCVRhcmdldEVudHJ5ICp0bGUgPSAoVGFyZ2V0RW50cnkgKikgbGZpcnN0KGxjKTsK KworCQlpZiAodGxlLT5yZXNqdW5rKQorCQkJY29udGludWU7CisKKwkJZXhwckxpc3QgPSBsYXBw ZW5kKGV4cHJMaXN0LCB0bGUtPmV4cHIpOworCX0KKworCS8qCisJICogQmVjYXVzZSBkb2Vzbid0 IHN1cHBvcnQgcGF0dGVybiBtYXRjaGluZywgZG9uJ3QgYWxsb3cgbXVsdGljb2x1bW4gcmVzdWx0 CisJICovCisJaWYgKGxpc3RfbGVuZ3RoKGV4cHJMaXN0KSAhPSAxKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkgZXJybXNnKCJleHBy ZXNzaW9uIGlzIG5vdCBzY2FsYXIgdmFsdWUiKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBz dGF0ZSwKKwkJCQkJCQkJCWV4cHJMb2NhdGlvbigoTm9kZSAqKSBleHByTGlzdCkpKSk7CisKKwll eHByTGlzdENvZXIgPSBOSUw7CisJZm9yZWFjaChsYywgZXhwckxpc3QpCisJeworCQlOb2RlCSAg ICpvcmlnX2V4cHIgPSAoTm9kZSopIGxmaXJzdChsYyk7CisJCU9pZAkJCWV4cHJ0eXBpZCA9IGV4 cHJUeXBlKChOb2RlICopIG9yaWdfZXhwcik7CisJCUV4cHIJICAgKmV4cHIgPSBOVUxMOworCQlQ YXJhbSAqcGFyYW0gPSBtYWtlTm9kZShQYXJhbSk7CisKKwkJcGFyYW0tPnBhcmFta2luZCA9IFBB UkFNX1NDSEVNQV9WQVJJQUJMRTsKKwkJcGFyYW0tPnBhcmFtaWQgPSB2YXJpZDsKKwkJcGFyYW0t PnBhcmFtdHlwZSA9IHZhcnR5cGlkOworCQlwYXJhbS0+cGFyYW10eXBtb2QgPSB2YXJ0eXBtb2Q7 CisKKwkJZXhwciA9IChFeHByICopCisJCQl0cmFuc2Zvcm1Bc3NpZ25tZW50SW5kaXJlY3Rpb24o cHN0YXRlLAorCQkJCQkJCQkJCQkoTm9kZSAqKSBwYXJhbSwKKwkJCQkJCQkJCQkJZmllbGRuYW1l LAorCQkJCQkJCQkJCQlmYWxzZSwKKwkJCQkJCQkJCQkJdmFydHlwaWQsCisJCQkJCQkJCQkJCXZh cnR5cG1vZCwKKwkJCQkJCQkJCQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJCQkJbGlzdF9oZWFkKGlu ZGlyZWN0aW9uKSwKKwkJCQkJCQkJCQkJKE5vZGUgKikgb3JpZ19leHByLAorCQkJCQkJCQkJCQkt MSk7CisKKwkJaWYgKGV4cHIgPT0gTlVMTCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJj b2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkgZXJybXNnKCJ2YXJpYWJsZSBc IiVzXCIgaXMgb2YgdHlwZSAlcyIKKwkJCQkJCQkgICIgYnV0IGV4cHJlc3Npb24gaXMgb2YgdHlw ZSAlcyIsCisJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmQpLAorCQkJCQkJCWZvcm1h dF90eXBlX2JlKHZhcnR5cGlkKSwKKwkJCQkJCQlmb3JtYXRfdHlwZV9iZShleHBydHlwaWQpKSwK KwkJCQkgZXJyaGludCgiWW91IHdpbGwgbmVlZCB0byByZXdyaXRlIG9yIGNhc3QgdGhlIGV4cHJl c3Npb24uIiksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbigo Tm9kZSAqKSBvcmlnX2V4cHIpKSkpOworCisJCWV4cHJMaXN0Q29lciA9IGxhcHBlbmQoZXhwckxp c3RDb2VyLCBleHByKTsKKwl9CisKKwkvKgorCSAqIEdlbmVyYXRlIHF1ZXJ5J3MgdGFyZ2V0IGxp c3QgdXNpbmcgdGhlIGNvbXB1dGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMuCisJICogQWxzbywgbWFy ayBhbGwgdGhlIHRhcmdldCBjb2x1bW5zIGFzIG5lZWRpbmcgaW5zZXJ0IHBlcm1pc3Npb25zLgor CSAqLworCXJ0ZSA9IHBzdGF0ZS0+cF90YXJnZXRfcmFuZ2V0YmxlbnRyeTsKKwlxcnktPnRhcmdl dExpc3QgPSBOSUw7CisJZm9yZWFjaChsYywgZXhwckxpc3RDb2VyKQorCXsKKwkJRXhwcgkgICAq ZXhwciA9IChFeHByICopIGxmaXJzdChsYyk7CisJCVRhcmdldEVudHJ5ICp0bGU7CisKKwkJdGxl ID0gbWFrZVRhcmdldEVudHJ5KGV4cHIsCisJCQkJCQkJICBpICsgMSwKKwkJCQkJCQkgIEZpZ3Vy ZUNvbG5hbWUoKE5vZGUgKilleHByKSwKKwkJCQkJCQkgIGZhbHNlKTsKKwkJcXJ5LT50YXJnZXRM aXN0ID0gbGFwcGVuZChxcnktPnRhcmdldExpc3QsIHRsZSk7CisJfQorCisJLyogZG9uZSBidWls ZGluZyB0aGUgcmFuZ2UgdGFibGUgYW5kIGpvaW50cmVlICovCisJcXJ5LT5ydGFibGUgPSBwc3Rh dGUtPnBfcnRhYmxlOworCXFyeS0+am9pbnRyZWUgPSBtYWtlRnJvbUV4cHIocHN0YXRlLT5wX2pv aW5saXN0LCBOVUxMKTsKKworCXFyeS0+aGFzVGFyZ2V0U1JGcyA9IHBzdGF0ZS0+cF9oYXNUYXJn ZXRTUkZzOworCXFyeS0+aGFzU3ViTGlua3MgPSBwc3RhdGUtPnBfaGFzU3ViTGlua3M7CisKKwlh c3NpZ25fcXVlcnlfY29sbGF0aW9ucyhwc3RhdGUsIHFyeSk7CisKKwlwc3RhdGUtPnBfZXhwcl9r aW5kID0gc3ZfZXhwcl9raW5kOworCisJcmV0dXJuIHFyeTsKK30KKwogLyoKICAqIHRyYW5zZm9y bVNldE9wZXJhdGlvblN0bXQgLQogICoJICB0cmFuc2Zvcm1zIGEgc2V0LW9wZXJhdGlvbnMgdHJl ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkKaW5kZXggNWEzNjM2NzQ0Ni4uOTVkMjZhNzNiMiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBA IC0xNTcsNiArMTU3LDggQEAgc3RhdGljIFJvbGVTcGVjICptYWtlUm9sZVNwZWMoUm9sZVNwZWNU eXBlIHR5cGUsIGludCBsb2NhdGlvbik7CiBzdGF0aWMgdm9pZCBjaGVja19xdWFsaWZpZWRfbmFt ZShMaXN0ICpuYW1lcywgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpOwogc3RhdGljIExpc3QgKmNo ZWNrX2Z1bmNfbmFtZShMaXN0ICpuYW1lcywgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpOwogc3Rh dGljIExpc3QgKmNoZWNrX2luZGlyZWN0aW9uKExpc3QgKmluZGlyZWN0aW9uLCBjb3JlX3l5c2Nh bl90IHl5c2Nhbm5lcik7CitzdGF0aWMgTGlzdCAqY2hlY2tfaW5kaXJlY3Rpb25fbGV0KExpc3Qg KmluZGlyZWN0aW9uLCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcik7CisKIHN0YXRpYyBMaXN0ICpl eHRyYWN0QXJnVHlwZXMoTGlzdCAqcGFyYW1ldGVycyk7CiBzdGF0aWMgTGlzdCAqZXh0cmFjdEFn Z3JBcmdUeXBlcyhMaXN0ICphZ2dyYXJncyk7CiBzdGF0aWMgTGlzdCAqbWFrZU9yZGVyZWRTZXRB cmdzKExpc3QgKmRpcmVjdGFyZ3MsIExpc3QgKm9yZGVyZWRhcmdzLApAQCAtMjU3LDggKzI1OSw4 IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBM aXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCUNvbnN0cmFpbnRzU2V0U3RtdCBDb3B5U3Rt dCBDcmVhdGVBc1N0bXQgQ3JlYXRlQ2FzdFN0bXQKIAkJQ3JlYXRlRG9tYWluU3RtdCBDcmVhdGVF eHRlbnNpb25TdG10IENyZWF0ZUdyb3VwU3RtdCBDcmVhdGVPcENsYXNzU3RtdAogCQlDcmVhdGVP cEZhbWlseVN0bXQgQWx0ZXJPcEZhbWlseVN0bXQgQ3JlYXRlUExhbmdTdG10Ci0JCUNyZWF0ZVNj aGVtYVN0bXQgQ3JlYXRlU2VxU3RtdCBDcmVhdGVTdG10IENyZWF0ZVN0YXRzU3RtdCBDcmVhdGVU YWJsZVNwYWNlU3RtdAotCQlDcmVhdGVGZHdTdG10IENyZWF0ZUZvcmVpZ25TZXJ2ZXJTdG10IENy ZWF0ZUZvcmVpZ25UYWJsZVN0bXQKKwkJQ3JlYXRlU2NoZW1hU3RtdCBDcmVhdGVTY2hlbWFWYXJT dG10IENyZWF0ZVNlcVN0bXQgQ3JlYXRlU3RtdCBDcmVhdGVTdGF0c1N0bXQKKwkJQ3JlYXRlVGFi bGVTcGFjZVN0bXQgQ3JlYXRlRmR3U3RtdCBDcmVhdGVGb3JlaWduU2VydmVyU3RtdCBDcmVhdGVG b3JlaWduVGFibGVTdG10CiAJCUNyZWF0ZUFzc2VydFN0bXQgQ3JlYXRlVHJhbnNmb3JtU3RtdCBD cmVhdGVUcmlnU3RtdCBDcmVhdGVFdmVudFRyaWdTdG10CiAJCUNyZWF0ZVVzZXJTdG10IENyZWF0 ZVVzZXJNYXBwaW5nU3RtdCBDcmVhdGVSb2xlU3RtdCBDcmVhdGVQb2xpY3lTdG10CiAJCUNyZWF0 ZWRiU3RtdCBEZWNsYXJlQ3Vyc29yU3RtdCBEZWZpbmVTdG10IERlbGV0ZVN0bXQgRGlzY2FyZFN0 bXQgRG9TdG10CkBAIC0yNjgsNyArMjcwLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVW aWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJ RHJvcFRyYW5zZm9ybVN0bXQKIAkJRHJvcFVzZXJNYXBwaW5nU3RtdCBFeHBsYWluU3RtdCBGZXRj aFN0bXQKIAkJR3JhbnRTdG10IEdyYW50Um9sZVN0bXQgSW1wb3J0Rm9yZWlnblNjaGVtYVN0bXQg SW5kZXhTdG10IEluc2VydFN0bXQKLQkJTGlzdGVuU3RtdCBMb2FkU3RtdCBMb2NrU3RtdCBOb3Rp ZnlTdG10IEV4cGxhaW5hYmxlU3RtdCBQcmVwYXJhYmxlU3RtdAorCQlMZXRTdG10IExpc3RlblN0 bXQgTG9hZFN0bXQgTG9ja1N0bXQgTm90aWZ5U3RtdCBFeHBsYWluYWJsZVN0bXQgUHJlcGFyYWJs ZVN0bXQKIAkJQ3JlYXRlRnVuY3Rpb25TdG10IEFsdGVyRnVuY3Rpb25TdG10IFJlaW5kZXhTdG10 IFJlbW92ZUFnZ3JTdG10CiAJCVJlbW92ZUZ1bmNTdG10IFJlbW92ZU9wZXJTdG10IFJlbmFtZVN0 bXQgUmV2b2tlU3RtdCBSZXZva2VSb2xlU3RtdAogCQlSdWxlQWN0aW9uU3RtdCBSdWxlQWN0aW9u U3RtdE9yRW1wdHkgUnVsZVN0bXQKQEAgLTU4NCw2ICs1ODYsOSBAQCBzdGF0aWMgTm9kZSAqbWFr ZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAq cXVlcnkpOwogJXR5cGUgPG5vZGU+CQlwYXJ0Ym91bmRfZGF0dW0gUGFydGl0aW9uUmFuZ2VEYXR1 bQogJXR5cGUgPGxpc3Q+CQloYXNoX3BhcnRib3VuZCBwYXJ0Ym91bmRfZGF0dW1fbGlzdCByYW5n ZV9kYXR1bV9saXN0CiAldHlwZSA8ZGVmZWx0PgkJaGFzaF9wYXJ0Ym91bmRfZWxlbQorJXR5cGUg PGxpc3Q+CWZpZWxkTGlzdAorJXR5cGUgPG5vZGU+CWZpZWxkRGVmIG9wdFNjaGVtYVZhckRlZkV4 cHIKKyV0eXBlIDxsaXN0PglzY2hlbWF2YXJfbmFtZQogCiAvKgogICogTm9uLWtleXdvcmQgdG9r ZW4gdHlwZXMuICBUaGVzZSBhcmUgaGFyZC13aXJlZCBpbnRvIHRoZSAiZmxleCIgbGV4ZXIuCkBA IC02NDksNyArNjU0LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNo YXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlLRVkKIAogCUxBQkVM IExBTkdVQUdFIExBUkdFX1AgTEFTVF9QIExBVEVSQUxfUAotCUxFQURJTkcgTEVBS1BST09GIExF QVNUIExFRlQgTEVWRUwgTElLRSBMSU1JVCBMSVNURU4gTE9BRCBMT0NBTAorCUxFQURJTkcgTEVB S1BST09GIExFQVNUIExFRlQgTEVUIExFVkVMIExJS0UgTElNSVQgTElTVEVOIExPQUQgTE9DQUwK IAlMT0NBTFRJTUUgTE9DQUxUSU1FU1RBTVAgTE9DQVRJT04gTE9DS19QIExPQ0tFRCBMT0dHRUQK IAogCU1BUFBJTkcgTUFUQ0ggTUFURVJJQUxJWkVEIE1BWFZBTFVFIE1FVEhPRCBNSU5VVEVfUCBN SU5WQUxVRSBNT0RFIE1PTlRIX1AgTU9WRQpAQCAtNjg3LDggKzY5Miw4IEBAIHN0YXRpYyBOb2Rl ICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBO b2RlICpxdWVyeSk7CiAJVU5CT1VOREVEIFVOQ09NTUlUVEVEIFVORU5DUllQVEVEIFVOSU9OIFVO SVFVRSBVTktOT1dOIFVOTElTVEVOIFVOTE9HR0VECiAJVU5USUwgVVBEQVRFIFVTRVIgVVNJTkcK IAotCVZBQ1VVTSBWQUxJRCBWQUxJREFURSBWQUxJREFUT1IgVkFMVUVfUCBWQUxVRVMgVkFSQ0hB UiBWQVJJQURJQyBWQVJZSU5HCi0JVkVSQk9TRSBWRVJTSU9OX1AgVklFVyBWSUVXUyBWT0xBVElM RQorCVZBQ1VVTSBWQUxJRCBWQUxJREFURSBWQUxJREFUT1IgVkFMVUVfUCBWQUxVRVMgVkFSQ0hB UiBWQVJJQUJMRSBWQVJJQUJMRVMKKwlWQVJJQURJQyBWQVJZSU5HIFZFUkJPU0UgVkVSU0lPTl9Q IFZJRVcgVklFV1MgVk9MQVRJTEUKIAogCVdIRU4gV0hFUkUgV0hJVEVTUEFDRV9QIFdJTkRPVyBX SVRIIFdJVEhJTiBXSVRIT1VUIFdPUksgV1JBUFBFUiBXUklURQogCkBAIC04NzksNiArODg0LDcg QEAgc3RtdCA6CiAJCQl8IENyZWF0ZVBMYW5nU3RtdAogCQkJfCBDcmVhdGVTY2hlbWFTdG10CiAJ CQl8IENyZWF0ZVNlcVN0bXQKKwkJCXwgQ3JlYXRlU2NoZW1hVmFyU3RtdAogCQkJfCBDcmVhdGVT dG10CiAJCQl8IENyZWF0ZVN1YnNjcmlwdGlvblN0bXQKIAkJCXwgQ3JlYXRlU3RhdHNTdG10CkBA IC05MjAsNiArOTI2LDcgQEAgc3RtdCA6CiAJCQl8IExpc3RlblN0bXQKIAkJCXwgUmVmcmVzaE1h dFZpZXdTdG10CiAJCQl8IExvYWRTdG10CisJCQl8IExldFN0bXQKIAkJCXwgTG9ja1N0bXQKIAkJ CXwgTm90aWZ5U3RtdAogCQkJfCBQcmVwYXJlU3RtdApAQCAtMTM4MCw2ICsxMzg3LDcgQEAgc2No ZW1hX3N0bXQ6CiAJCQlDcmVhdGVTdG10CiAJCQl8IEluZGV4U3RtdAogCQkJfCBDcmVhdGVTZXFT dG10CisJCQl8IENyZWF0ZVNjaGVtYVZhclN0bXQKIAkJCXwgQ3JlYXRlVHJpZ1N0bXQKIAkJCXwg R3JhbnRTdG10CiAJCQl8IFZpZXdTdG10CkBAIC0xODA4LDcgKzE4MTYsMTIgQEAgRGlzY2FyZFN0 bXQ6CiAJCQkJCW4tPnRhcmdldCA9IERJU0NBUkRfU0VRVUVOQ0VTOwogCQkJCQkkJCA9IChOb2Rl ICopIG47CiAJCQkJfQotCisJCQl8IERJU0NBUkQgVkFSSUFCTEVTCisJCQkJeworCQkJCQlEaXNj YXJkU3RtdCAqbiA9IG1ha2VOb2RlKERpc2NhcmRTdG10KTsKKwkJCQkJbi0+dGFyZ2V0ID0gRElT Q0FSRF9WQVJJQUJMRVM7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CiAJCTsKIAogCkBA IC0yMDA0LDYgKzIwMTcsMjQgQEAgQWx0ZXJUYWJsZVN0bXQ6CiAJCQkJCW4tPm5vd2FpdCA9ICQx NDsKIAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJfQorCQl8CUFMVEVSIFZBUklBQkxFIHF1YWxp ZmllZF9uYW1lIGFsdGVyX3RhYmxlX2NtZHMKKwkJCQl7CisJCQkJCUFsdGVyVGFibGVTdG10ICpu ID0gbWFrZU5vZGUoQWx0ZXJUYWJsZVN0bXQpOworCQkJCQluLT5yZWxhdGlvbiA9ICQzOworCQkJ CQluLT5jbWRzID0gJDQ7CisJCQkJCW4tPnJlbGtpbmQgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJ CW4tPm1pc3Npbmdfb2sgPSBmYWxzZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQl8 CUFMVEVSIFZBUklBQkxFIElGX1AgRVhJU1RTIHF1YWxpZmllZF9uYW1lIGFsdGVyX3RhYmxlX2Nt ZHMKKwkJCQl7CisJCQkJCUFsdGVyVGFibGVTdG10ICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZVN0 bXQpOworCQkJCQluLT5yZWxhdGlvbiA9ICQ1OworCQkJCQluLT5jbWRzID0gJDY7CisJCQkJCW4t PnJlbGtpbmQgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSB0cnVlOwor CQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CiAJCTsKIAogYWx0ZXJfdGFibGVfY21kczoKQEAg LTQyODcsNiArNDMxOCw4NiBAQCBOdW1lcmljT25seV9saXN0OglOdW1lcmljT25seQkJCQkJCXsg JCQgPSBsaXN0X21ha2UxKCQxKTsgfQogCQkJCXwgTnVtZXJpY09ubHlfbGlzdCAnLCcgTnVtZXJp Y09ubHkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQogCQk7CiAKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorICoKKyAqCQlRVUVSWSA6CisgKgkJCQlDUkVBVEUgVkFSSUFCTEUgc2VxbmFtZSBbQVNd IHR5cGUKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK0NyZWF0ZVNjaGVtYVZhclN0bXQ6 CisJCQlDUkVBVEUgT3B0VGVtcCBWQVJJQUJMRSBxdWFsaWZpZWRfbmFtZSBvcHRfYXMgVHlwZW5h bWUgb3B0U2NoZW1hVmFyRGVmRXhwcgorCQkJCXsKKwkJCQkJQ3JlYXRlU2NoZW1hVmFyU3RtdCAq biA9IG1ha2VOb2RlKENyZWF0ZVNjaGVtYVZhclN0bXQpOworCQkJCQkkNC0+cmVscGVyc2lzdGVu Y2UgPSAkMjsKKwkJCQkJbi0+dmFyaWFibGUgPSAkNDsKKwkJCQkJbi0+dHlwZU5hbWUgPSAkNjsK KwkJCQkJbi0+ZGVmZXhwciA9ICQ3OworCQkJCQluLT5maWVsZHMgPSBOVUxMOworCQkJCQluLT5p Zl9ub3RfZXhpc3RzID0gZmFsc2U7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJCXwg Q1JFQVRFIE9wdFRlbXAgVkFSSUFCTEUgSUZfUCBOT1QgRVhJU1RTIHF1YWxpZmllZF9uYW1lIG9w dF9hcyBUeXBlbmFtZSBvcHRTY2hlbWFWYXJEZWZFeHByCisJCQkJeworCQkJCQlDcmVhdGVTY2hl bWFWYXJTdG10ICpuID0gbWFrZU5vZGUoQ3JlYXRlU2NoZW1hVmFyU3RtdCk7CisJCQkJCSQ3LT5y ZWxwZXJzaXN0ZW5jZSA9ICQyOworCQkJCQluLT52YXJpYWJsZSA9ICQ3OworCQkJCQluLT50eXBl TmFtZSA9ICQ5OworCQkJCQluLT5kZWZleHByID0gJDEwOworCQkJCQluLT5maWVsZHMgPSBOVUxM OworCQkJCQluLT5pZl9ub3RfZXhpc3RzID0gdHJ1ZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJ CQkJfQorCQkJfCBDUkVBVEUgT3B0VGVtcCBWQVJJQUJMRSBxdWFsaWZpZWRfbmFtZSBvcHRfYXMg JygnIGZpZWxkTGlzdCAnKScKKwkJCQl7CisJCQkJCUNyZWF0ZVNjaGVtYVZhclN0bXQgKm4gPSBt YWtlTm9kZShDcmVhdGVTY2hlbWFWYXJTdG10KTsKKwkJCQkJJDQtPnJlbHBlcnNpc3RlbmNlID0g JDI7CisJCQkJCW4tPnZhcmlhYmxlID0gJDQ7CisJCQkJCW4tPnR5cGVOYW1lID0gTlVMTDsKKwkJ CQkJbi0+ZmllbGRzID0gJDc7CisJCQkJCW4tPmlmX25vdF9leGlzdHMgPSBmYWxzZTsKKwkJCQkJ JCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJfCBDUkVBVEUgT3B0VGVtcCBWQVJJQUJMRSBJRl9Q IE5PVCBFWElTVFMgcXVhbGlmaWVkX25hbWUgb3B0X2FzICcoJyBmaWVsZExpc3QgJyknCisJCQkJ eworCQkJCQlDcmVhdGVTY2hlbWFWYXJTdG10ICpuID0gbWFrZU5vZGUoQ3JlYXRlU2NoZW1hVmFy U3RtdCk7CisJCQkJCSQ3LT5yZWxwZXJzaXN0ZW5jZSA9ICQyOworCQkJCQluLT52YXJpYWJsZSA9 ICQ3OworCQkJCQluLT50eXBlTmFtZSA9IE5VTEw7CisJCQkJCW4tPmZpZWxkcyA9ICQxMDsKKwkJ CQkJbi0+aWZfbm90X2V4aXN0cyA9IHRydWU7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0K KwkJOworCitvcHRTY2hlbWFWYXJEZWZFeHByOiBERUZBVUxUIGJfZXhwcgkJCQkJeyAkJCA9ICQy OyB9CisJCQl8IC8qIEVNUFRZICovCQkJCQkJCXsgJCQgPSBOVUxMOyB9CisJCTsKKworZmllbGRM aXN0OgorCQkJZmllbGREZWYJCQkJCQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsgfQorCQkJfCBm aWVsZExpc3QgJywnIGZpZWxkRGVmCQkJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KKwkJOwor CitmaWVsZERlZjoJQ29sSWQgVHlwZW5hbWUgb3B0U2NoZW1hVmFyRGVmRXhwcgorCQkJCXsKKwkJ CQkJQ29sdW1uRGVmICpuID0gbWFrZU5vZGUoQ29sdW1uRGVmKTsKKwkJCQkJbi0+Y29sbmFtZSA9 ICQxOworCQkJCQluLT50eXBlTmFtZSA9ICQyOworCQkJCQluLT5pbmhjb3VudCA9IDA7CisJCQkJ CW4tPmlzX2xvY2FsID0gdHJ1ZTsKKwkJCQkJbi0+aXNfbm90X251bGwgPSBmYWxzZTsKKwkJCQkJ bi0+aXNfZnJvbV90eXBlID0gZmFsc2U7CisJCQkJCW4tPmlzX2Zyb21fcGFyZW50ID0gZmFsc2U7 CisJCQkJCW4tPnN0b3JhZ2UgPSAwOworCQkJCQluLT5yYXdfZGVmYXVsdCA9ICQzOworCQkJCQlu LT5jb29rZWRfZGVmYXVsdCA9IE5VTEw7CisJCQkJCW4tPmNvbGxPaWQgPSBJbnZhbGlkT2lkOwor CQkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisJCTsK KwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICoJCVFVRVJJRVMgOgpAQCAtNjMzNSw2ICs2 NDQ2LDcgQEAgZHJvcF90eXBlX2FueV9uYW1lOgogCQkJfCBURVhUX1AgU0VBUkNIIERJQ1RJT05B UlkJCQkJeyAkJCA9IE9CSkVDVF9UU0RJQ1RJT05BUlk7IH0KIAkJCXwgVEVYVF9QIFNFQVJDSCBU RU1QTEFURQkJCQl7ICQkID0gT0JKRUNUX1RTVEVNUExBVEU7IH0KIAkJCXwgVEVYVF9QIFNFQVJD SCBDT05GSUdVUkFUSU9OCQkJeyAkJCA9IE9CSkVDVF9UU0NPTkZJR1VSQVRJT047IH0KKwkJCXwg VkFSSUFCTEUJCQkJCQkJCXsgJCQgPSBPQkpFQ1RfVkFSSUFCTEU7IH0KIAkJOwogCiAvKiBvYmpl Y3QgdHlwZXMgdGFraW5nIG5hbWVfbGlzdCAqLwpAQCAtNjYwNCw2ICs2NzE2LDcgQEAgY29tbWVu dF90eXBlX2FueV9uYW1lOgogCQkJfCBURVhUX1AgU0VBUkNIIERJQ1RJT05BUlkJCQl7ICQkID0g T0JKRUNUX1RTRElDVElPTkFSWTsgfQogCQkJfCBURVhUX1AgU0VBUkNIIFBBUlNFUgkJCQl7ICQk ID0gT0JKRUNUX1RTUEFSU0VSOyB9CiAJCQl8IFRFWFRfUCBTRUFSQ0ggVEVNUExBVEUJCQl7ICQk ID0gT0JKRUNUX1RTVEVNUExBVEU7IH0KKwkJCXwgVkFSSUFCTEUJCQkJCQkJeyAkJCA9IE9CSkVD VF9WQVJJQUJMRTsgfQogCQk7CiAKIC8qIG9iamVjdCB0eXBlcyB0YWtpbmcgbmFtZSAqLwpAQCAt Njc0Miw2ICs2ODU1LDcgQEAgc2VjdXJpdHlfbGFiZWxfdHlwZV9hbnlfbmFtZToKIAkJCXwgVEFC TEUJCQkJCQkJCXsgJCQgPSBPQkpFQ1RfVEFCTEU7IH0KIAkJCXwgVklFVwkJCQkJCQkJeyAkJCA9 IE9CSkVDVF9WSUVXOyB9CiAJCQl8IE1BVEVSSUFMSVpFRCBWSUVXCQkJCQl7ICQkID0gT0JKRUNU X01BVFZJRVc7IH0KKwkJCXwgVkFSSUFCTEUJCQkJCQkJeyAkJCA9IE9CSkVDVF9WQVJJQUJMRTsg fQogCQk7CiAKIC8qIG9iamVjdCB0eXBlcyB0YWtpbmcgbmFtZSAqLwpAQCAtNzA2Nyw2ICs3MTgx LDE0IEBAIHByaXZpbGVnZV90YXJnZXQ6CiAJCQkJCW4tPm9ianMgPSAkMjsKIAkJCQkJJCQgPSBu OwogCQkJCX0KKwkJCXwgVkFSSUFCTEUgcXVhbGlmaWVkX25hbWVfbGlzdAorCQkJCXsKKwkJCQkJ UHJpdlRhcmdldCAqbiA9IChQcml2VGFyZ2V0ICopIHBhbGxvYyhzaXplb2YoUHJpdlRhcmdldCkp OworCQkJCQluLT50YXJndHlwZSA9IEFDTF9UQVJHRVRfT0JKRUNUOworCQkJCQluLT5vYmp0eXBl ID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCQluLT5vYmpzID0gJDI7CisJCQkJCSQkID0gbjsKKwkJ CQl9CiAJCQl8IEZPUkVJR04gREFUQV9QIFdSQVBQRVIgbmFtZV9saXN0CiAJCQkJewogCQkJCQlQ cml2VGFyZ2V0ICpuID0gKFByaXZUYXJnZXQgKikgcGFsbG9jKHNpemVvZihQcml2VGFyZ2V0KSk7 CkBAIC03MTc5LDYgKzczMDEsMTQgQEAgcHJpdmlsZWdlX3RhcmdldDoKIAkJCQkJbi0+b2JqcyA9 ICQ1OwogCQkJCQkkJCA9IG47CiAJCQkJfQorCQkJfCBBTEwgVkFSSUFCTEVTIElOX1AgU0NIRU1B IG5hbWVfbGlzdAorCQkJCXsKKwkJCQkJUHJpdlRhcmdldCAqbiA9IChQcml2VGFyZ2V0ICopIHBh bGxvYyhzaXplb2YoUHJpdlRhcmdldCkpOworCQkJCQluLT50YXJndHlwZSA9IEFDTF9UQVJHRVRf QUxMX0lOX1NDSEVNQTsKKwkJCQkJbi0+b2JqdHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQkJ bi0+b2JqcyA9ICQ1OworCQkJCQkkJCA9IG47CisJCQkJfQogCQkJfCBBTEwgRlVOQ1RJT05TIElO X1AgU0NIRU1BIG5hbWVfbGlzdAogCQkJCXsKIAkJCQkJUHJpdlRhcmdldCAqbiA9IChQcml2VGFy Z2V0ICopIHBhbGxvYyhzaXplb2YoUHJpdlRhcmdldCkpOwpAQCAtNzM2MSw2ICs3NDkxLDcgQEAg ZGVmYWNsX3ByaXZpbGVnZV90YXJnZXQ6CiAJCQl8IEZVTkNUSU9OUwkJeyAkJCA9IE9CSkVDVF9G VU5DVElPTjsgfQogCQkJfCBST1VUSU5FUwkJeyAkJCA9IE9CSkVDVF9GVU5DVElPTjsgfQogCQkJ fCBTRVFVRU5DRVMJCXsgJCQgPSBPQkpFQ1RfU0VRVUVOQ0U7IH0KKwkJCXwgVkFSSUFCTEVTCQl7 ICQkID0gT0JKRUNUX1ZBUklBQkxFOyB9CiAJCQl8IFRZUEVTX1AJCXsgJCQgPSBPQkpFQ1RfVFlQ RTsgfQogCQkJfCBTQ0hFTUFTCQl7ICQkID0gT0JKRUNUX1NDSEVNQTsgfQogCQk7CkBAIC04OTU5 LDYgKzkwOTAsMjYgQEAgUmVuYW1lU3RtdDogQUxURVIgQUdHUkVHQVRFIGFnZ3JlZ2F0ZV93aXRo X2FyZ3R5cGVzIFJFTkFNRSBUTyBuYW1lCiAJCQkJCW4tPm1pc3Npbmdfb2sgPSBmYWxzZTsKIAkJ CQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJfQorCQkJfCBBTFRFUiBWQVJJQUJMRSBxdWFsaWZpZWRf bmFtZSBSRU5BTUUgVE8gbmFtZQorCQkJCXsKKwkJCQkJUmVuYW1lU3RtdCAqbiA9IG1ha2VOb2Rl KFJlbmFtZVN0bXQpOworCQkJCQluLT5yZW5hbWVUeXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJ CQluLT5yZWxhdGlvbiA9ICQzOworCQkJCQluLT5zdWJuYW1lID0gTlVMTDsKKwkJCQkJbi0+bmV3 bmFtZSA9ICQ2OworCQkJCQluLT5taXNzaW5nX29rID0gZmFsc2U7CisJCQkJCSQkID0gKE5vZGUg KiluOworCQkJCX0KKwkJCXwgQUxURVIgVkFSSUFCTEUgSUZfUCBFWElTVFMgcXVhbGlmaWVkX25h bWUgUkVOQU1FIFRPIG5hbWUKKwkJCQl7CisJCQkJCVJlbmFtZVN0bXQgKm4gPSBtYWtlTm9kZShS ZW5hbWVTdG10KTsKKwkJCQkJbi0+cmVuYW1lVHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQkJ bi0+cmVsYXRpb24gPSAkNTsKKwkJCQkJbi0+c3VibmFtZSA9IE5VTEw7CisJCQkJCW4tPm5ld25h bWUgPSAkODsKKwkJCQkJbi0+bWlzc2luZ19vayA9IHRydWU7CisJCQkJCSQkID0gKE5vZGUgKilu OworCQkJCX0KIAkJOwogCiBvcHRfY29sdW1uOiBDT0xVTU4JCQkJCQkJCQl7ICQkID0gQ09MVU1O OyB9CkBAIC0xMDY4Niw3ICsxMDgzNyw4IEBAIEV4cGxhaW5hYmxlU3RtdDoKIAkJCXwgQ3JlYXRl QXNTdG10CiAJCQl8IENyZWF0ZU1hdFZpZXdTdG10CiAJCQl8IFJlZnJlc2hNYXRWaWV3U3RtdAot CQkJfCBFeGVjdXRlU3RtdAkJCQkJLyogYnkgZGVmYXVsdCBhbGwgYXJlICQkPSQxICovCisJCQl8 IEV4ZWN1dGVTdG10CisJCQl8IExldFN0bXQJCQkJCS8qIGJ5IGRlZmF1bHQgYWxsIGFyZSAkJD0k MSAqLwogCQk7CiAKIGV4cGxhaW5fb3B0aW9uX2xpc3Q6CkBAIC0xMDc0Myw3ICsxMDg5NSw4IEBA IFByZXBhcmFibGVTdG10OgogCQkJU2VsZWN0U3RtdAogCQkJfCBJbnNlcnRTdG10CiAJCQl8IFVw ZGF0ZVN0bXQKLQkJCXwgRGVsZXRlU3RtdAkJCQkJLyogYnkgZGVmYXVsdCBhbGwgYXJlICQkPSQx ICovCisJCQl8IERlbGV0ZVN0bXQKKwkJCXwgTGV0U3RtdAkJCQkJLyogYnkgZGVmYXVsdCBhbGwg YXJlICQkPSQxICovCiAJCTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0xMTE0Miw2ICsx MTI5NSw1MCBAQCBvcHRfaG9sZDogLyogRU1QVFkgKi8JCQkJCQl7ICQkID0gMDsgfQogCQkJfCBX SVRIT1VUIEhPTEQJCQkJCXsgJCQgPSAwOyB9CiAJCTsKIAorLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisgKgorICoJCVFVRVJZOgorICoJCQkJTEVUIFNUQVRFTUVOVFMKKyAqCisgKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCitMZXRTdG10OglMRVQgc2NoZW1hdmFyX25hbWUgJz0nIGFfZXhwcgorCQkJCXsK KwkJCQkJTGV0U3RtdCAqbiA9IG1ha2VOb2RlKExldFN0bXQpOworCQkJCQlTZWxlY3RTdG10ICpz ZWxlY3QgPSBtYWtlTm9kZShTZWxlY3RTdG10KTsKKwkJCQkJUmVzVGFyZ2V0CSpyZXMgPSBtYWtl Tm9kZShSZXNUYXJnZXQpOworCisJCQkJCXJlcy0+bmFtZSA9IE5VTEw7CisJCQkJCXJlcy0+aW5k aXJlY3Rpb24gPSBOSUw7CisJCQkJCXJlcy0+dmFsID0gKE5vZGUgKikgJDQ7CisJCQkJCXJlcy0+ bG9jYXRpb24gPSBANDsKKwkJCQkJc2VsZWN0LT50YXJnZXRMaXN0ID0gbGlzdF9tYWtlMShyZXMp OworCQkJCQluLT50YXJnZXQgPSAkMjsKKwkJCQkJbi0+c2VsZWN0U3RtdCA9IChOb2RlICopIHNl bGVjdDsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMjsKKworCQkJCQkkJCA9IChOb2RlICopIG47CisJ CQkJfQorCQk7CisKK3NjaGVtYXZhcl9uYW1lOgorCQkJQ29sSWQKKwkJCQl7CisJCQkJCSQkID0g bGlzdF9tYWtlMShtYWtlU3RyaW5nKCQxKSk7CisJCQkJfQorCQkJfCBDb2xJZCBpbmRpcmVjdGlv bgorCQkJCXsKKwkJCQkJY2hlY2tfaW5kaXJlY3Rpb25fbGV0KCQyLCB5eXNjYW5uZXIpOworCQkJ CQlpZiAobGlzdF9sZW5ndGgoJDIpID4gMykKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJ CShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJIGVycm1zZygiaW1wcm9w ZXIgcXVhbGlmaWVkIG5hbWUiKSwKKwkJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihAMSkpKTsK KworCQkJCQkkJCA9IGxjb25zKG1ha2VTdHJpbmcoJDEpLCAkMik7CisJCQkJCSQkID0gbGlzdF91 bmlvbigkJCwgJDIpOworCQkJCX0KKwkJOworCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAg KgkJUVVFUlk6CkBAIC0xNTEwMSw2ICsxNTI5OCw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJ CXwgTEFSR0VfUAogCQkJfCBMQVNUX1AKIAkJCXwgTEVBS1BST09GCisJCQl8IExFVAogCQkJfCBM RVZFTAogCQkJfCBMSVNURU4KIAkJCXwgTE9BRApAQCAtMTUyNDksNiArMTU0NDcsOCBAQCB1bnJl c2VydmVkX2tleXdvcmQ6CiAJCQl8IFZBTElEQVRFCiAJCQl8IFZBTElEQVRPUgogCQkJfCBWQUxV RV9QCisJCQl8IFZBUklBQkxFCisJCQl8IFZBUklBQkxFUwogCQkJfCBWQVJZSU5HCiAJCQl8IFZF UlNJT05fUAogCQkJfCBWSUVXCkBAIC0xNTcxMyw2ICsxNTkxMywyNSBAQCBjaGVja19mdW5jX25h bWUoTGlzdCAqbmFtZXMsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogICogV2Ugb25seSBhbGxv dyAnKicgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCwgYnV0IGl0J3MgaGFyZCB0byBlbmZvcmNlIHRo YXQKICAqIGluIHRoZSBncmFtbWFyLCBzbyBkbyBpdCBoZXJlLgogICovCitzdGF0aWMgTGlzdCAq CitjaGVja19pbmRpcmVjdGlvbl9sZXQoTGlzdCAqaW5kaXJlY3Rpb24sIGNvcmVfeXlzY2FuX3Qg eXlzY2FubmVyKQoreworCUxpc3RDZWxsICpsOworCisJZm9yZWFjaChsLCBpbmRpcmVjdGlvbikK Kwl7CisJCWlmIChJc0EobGZpcnN0KGwpLCBBX1N0YXIpKQorCQkJcGFyc2VyX3l5ZXJyb3IoInN5 bnRheCBlcnJvciIpOworCisJCWlmIChJc0EobGZpcnN0KGwpLCBBX0luZGljZXMpKQorCQl7CisJ CQlpZiAobG5leHQobCkgIT0gTlVMTCkKKwkJCQlwYXJzZXJfeXllcnJvcigiaW1wcm9wZXIgdXNl IG9mIFtdIik7CisJCX0KKwl9CisJcmV0dXJuIGluZGlyZWN0aW9uOworfQorCiBzdGF0aWMgTGlz dCAqCiBjaGVja19pbmRpcmVjdGlvbihMaXN0ICppbmRpcmVjdGlvbiwgY29yZV95eXNjYW5fdCB5 eXNjYW5uZXIpCiB7CkBAIC0xNTcyOSw2ICsxNTk0OCw3IEBAIGNoZWNrX2luZGlyZWN0aW9uKExp c3QgKmluZGlyZWN0aW9uLCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKIAlyZXR1cm4gaW5kaXJl Y3Rpb247CiB9CiAKKwogLyogZXh0cmFjdEFyZ1R5cGVzKCkKICAqIEdpdmVuIGEgbGlzdCBvZiBG dW5jdGlvblBhcmFtZXRlciBub2RlcywgZXh0cmFjdCBhIGxpc3Qgb2YganVzdCB0aGUKICAqIGFy Z3VtZW50IHR5cGVzIChUeXBlTmFtZXMpIGZvciBpbnB1dCBwYXJhbWV0ZXJzIG9ubHkuICBUaGlz IGlzIHdoYXQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDM4NWU1NGE5YjYuLjhmNmUyOGRh OGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtMzcxLDcgKzM3MSw3IEBAIHRyYW5zZm9y bUV4cHJSZWN1cnNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcikKIAogCQlkZWZhdWx0 OgogCQkJLyogc2hvdWxkIG5vdCByZWFjaCBoZXJlICovCi0JCQllbG9nKEVSUk9SLCAidW5yZWNv Z25pemVkIG5vZGUgdHlwZTogJWQiLCAoaW50KSBub2RlVGFnKGV4cHIpKTsKKwkJCWVsb2coRVJS T1IsICJ1bnJlY29nbml6ZWQgbm9kZSB0eXBlOiAlZCAlZCIsIChpbnQpIG5vZGVUYWcoZXhwciks IFRfQ29uc3QpOwogCQkJcmVzdWx0ID0gTlVMTDsJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8K IAkJCWJyZWFrOwogCX0KQEAgLTUwOSw2ICs1MDksNyBAQCBzdGF0aWMgTm9kZSAqCiB0cmFuc2Zv cm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYpCiB7CiAJTm9k ZQkgICAqbm9kZSA9IE5VTEw7CisJTm9kZQkgICAqdmFyaWFibGUgPSBOVUxMOwogCWNoYXIJICAg Km5zcG5hbWUgPSBOVUxMOwogCWNoYXIJICAgKnJlbG5hbWUgPSBOVUxMOwogCWNoYXIJICAgKmNv bG5hbWUgPSBOVUxMOwpAQCAtNzQ5LDYgKzc1MCwxMzMgQEAgdHJhbnNmb3JtQ29sdW1uUmVmKFBh cnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKQogCQkJYnJlYWs7CiAJfQogCisJLyoK KwkgKiBUcnkgdG8gaWRlbnRpZnkgY29sdW1uIHJlZiBhcyB2YXJpYWJsZS4gUG9zc2libGUgdmFy aWFudHMgYXJlCisJICoKKwkgKiBBIC4uIHZhcmlhYmxlIG5hbWUKKwkgKiBBLkIgLi4gcXVhbGlm aWVkIHZhcmlhYmxlIG5hbWUKKwkgKiBBLkIgLi4gdmFyaWFibGUuZmllbGQKKwkgKiBBLkIuQyAu LiBzY2hlbWEudmFyaWFibGUuZmllbGQKKwkgKiBBLkIuQy5EIC4uIGNhdGFsb2d1ZS5zY2hlbWEu dmFyaWFibGUuZmllbGQKKwkgKi8KKwlzd2l0Y2ggKGxpc3RfbGVuZ3RoKGNyZWYtPmZpZWxkcykp CisJeworCQljYXNlIDE6CisJCQl7CisJCQkJTm9kZQkgICAqZmllbGQxID0gKE5vZGUgKikgbGlu aXRpYWwoY3JlZi0+ZmllbGRzKTsKKworCQkJCWlmIChJc0EoZmllbGQxLCBTdHJpbmcpKQorCQkJ CXsKKwkJCQkJY2hhciAqdmFybmFtZSAgPSBzdHJWYWwoZmllbGQxKTsKKworCQkJCQkvKiBUcnkg dG8gaWRlbnRpZnkgYXMgYW4gdW5xdWFsaWZpZWQgY29sdW1uICovCisJCQkJCXZhcmlhYmxlID0g dG9TY2hlbWFWYXJpYWJsZShwc3RhdGUsCisJCQkJCQkJCQkJCQkJTlVMTCwgdmFybmFtZSwgTlVM TCwKKwkJCQkJCQkJCQkJCQljcmVmLT5sb2NhdGlvbik7CisJCQkJfQorCQkJCWJyZWFrOworCQkJ fQorCQljYXNlIDI6CisJCQl7CisJCQkJTm9kZQkgICAqZmllbGQxID0gKE5vZGUgKikgbGluaXRp YWwoY3JlZi0+ZmllbGRzKTsKKwkJCQlOb2RlCSAgICpmaWVsZDIgPSAoTm9kZSAqKSBsc2Vjb25k KGNyZWYtPmZpZWxkcyk7CisKKwkJCQlpZiAoSXNBKGZpZWxkMSwgU3RyaW5nKSAmJiBJc0EoZmll bGQyLCBTdHJpbmcpKQorCQkJCXsKKwkJCQkJY2hhciAqbnNwbmFtZSA9IHN0clZhbChmaWVsZDEp OworCQkJCQljaGFyICp2YXJuYW1lID0gc3RyVmFsKGZpZWxkMik7CisKKwkJCQkJLyogVHJ5IHRv IGlkZW50aWZ5IGFzIGFuIHVucXVhbGlmaWVkIGNvbHVtbiAqLworCQkJCQl2YXJpYWJsZSA9IHRv U2NoZW1hVmFyaWFibGUocHN0YXRlLAorCQkJCQkJCQkJCQkJCW5zcG5hbWUsIHZhcm5hbWUsIE5V TEwsCisJCQkJCQkJCQkJCQkJY3JlZi0+bG9jYXRpb24pOworCQkJCX0KKwkJCQlicmVhazsKKwkJ CX0KKwkJY2FzZSAzOgorCQkJeworCQkJCU5vZGUJICAgKmZpZWxkMSA9IChOb2RlICopIGxpbml0 aWFsKGNyZWYtPmZpZWxkcyk7CisJCQkJTm9kZQkgICAqZmllbGQyID0gKE5vZGUgKikgbHNlY29u ZChjcmVmLT5maWVsZHMpOworCQkJCU5vZGUJICAgKmZpZWxkMyA9IChOb2RlICopIGx0aGlyZChj cmVmLT5maWVsZHMpOworCisJCQkJaWYgKElzQShmaWVsZDEsIFN0cmluZykgJiYgSXNBKGZpZWxk MiwgU3RyaW5nKSAmJiBJc0EoZmllbGQyLCBTdHJpbmcpKQorCQkJCXsKKwkJCQkJY2hhciAqbnNw bmFtZSA9IHN0clZhbChmaWVsZDEpOworCQkJCQljaGFyICp2YXJuYW1lID0gc3RyVmFsKGZpZWxk Mik7CisJCQkJCWNoYXIgKmZpZWxkbmFtZSA9IHN0clZhbChmaWVsZDMpOworCisJCQkJCS8qIFRy eSB0byBpZGVudGlmeSBhcyBhbiB1bnF1YWxpZmllZCBjb2x1bW4gKi8KKwkJCQkJdmFyaWFibGUg PSB0b1NjaGVtYVZhcmlhYmxlKHBzdGF0ZSwKKwkJCQkJCQkJCQkJCQluc3BuYW1lLCB2YXJuYW1l LCBmaWVsZG5hbWUsCisJCQkJCQkJCQkJCQkJY3JlZi0+bG9jYXRpb24pOworCQkJCX0KKwkJCQli cmVhazsKKwkJCX0KKwkJY2FzZSA0OgorCQkJeworCQkJCU5vZGUJICAgKmZpZWxkMSA9IChOb2Rl ICopIGxpbml0aWFsKGNyZWYtPmZpZWxkcyk7CisJCQkJTm9kZQkgICAqZmllbGQyID0gKE5vZGUg KikgbHNlY29uZChjcmVmLT5maWVsZHMpOworCQkJCU5vZGUJICAgKmZpZWxkMyA9IChOb2RlICop IGx0aGlyZChjcmVmLT5maWVsZHMpOworCQkJCU5vZGUJICAgKmZpZWxkNCA9IChOb2RlICopIGxm b3VydGgoY3JlZi0+ZmllbGRzKTsKKwkJCQljaGFyCSAgICpjYXRuYW1lOworCisJCQkJQXNzZXJ0 KElzQShmaWVsZDEsIFN0cmluZykpOworCQkJCWNhdG5hbWUgPSBzdHJWYWwoZmllbGQxKTsKKwor CQkJCS8qCisJCQkJICogV2UgY2hlY2sgdGhlIGNhdGFsb2cgbmFtZSBhbmQgdGhlbiBpZ25vcmUg aXQuCisJCQkJICovCisJCQkJaWYgKHN0cmNtcChjYXRuYW1lLCBnZXRfZGF0YWJhc2VfbmFtZShN eURhdGFiYXNlSWQpKSAhPSAwKQorCQkJCXsKKwkJCQkJY3JlcnIgPSBDUkVSUl9XUk9OR19EQjsK KwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQkJaWYgKElzQShmaWVsZDEsIFN0cmluZykgJiYgSXNB KGZpZWxkMiwgU3RyaW5nKSAmJiBJc0EoZmllbGQyLCBTdHJpbmcpKQorCQkJCXsKKwkJCQkJY2hh ciAqbnNwbmFtZSA9IHN0clZhbChmaWVsZDIpOworCQkJCQljaGFyICp2YXJuYW1lID0gc3RyVmFs KGZpZWxkMyk7CisJCQkJCWNoYXIgKmZpZWxkbmFtZSA9IHN0clZhbChmaWVsZDQpOworCisJCQkJ CS8qIFRyeSB0byBpZGVudGlmeSBhcyBhbiB1bnF1YWxpZmllZCBjb2x1bW4gKi8KKwkJCQkJdmFy aWFibGUgPSB0b1NjaGVtYVZhcmlhYmxlKHBzdGF0ZSwKKwkJCQkJCQkJCQkJCQluc3BuYW1lLCB2 YXJuYW1lLCBmaWVsZG5hbWUsCisJCQkJCQkJCQkJCQkJY3JlZi0+bG9jYXRpb24pOworCQkJCX0K KwkJCQlicmVhazsKKwkJCX0KKwkJZGVmYXVsdDoKKworCQkJLyoKKwkJCSAqIFRoZXJlIGNhbiBi ZSBhbm90aGVyIHZhcmlhbnRzLCBtb3JlIHdoZW4gY29tcG9zaXRlIHZhcmlhYmxlcworCQkJICog d2lsbCBiZSBzdXBwb3J0ZWQuIEN1cnJlbnRseSBvbmx5IHNjYWxhcnMgYXJlIHN1cHBvcnRlZCwg c28KKwkJCSAqIHRoZXJlIGFyZSBub3QgbmVjZXNzYXJ5IHRvIHNvbHZlIG90aGVyIHF1ZXN0aW9u cy4KKwkJCSAqCisJCQkgKiBkbyBub3RoaW5nCisJCQkgKi8KKwkJCWNyZXJyID0gQ1JFUlJfVE9P X01BTlk7IC8qIHRvbyBtYW55IGRvdHRlZCBuYW1lcyAqLworCQkJYnJlYWs7CisJfQorCisJaWYg KHZhcmlhYmxlICE9IE5VTEwpCisJeworCQkvKgorCQkgKiBXaGVuIHdlIGFsbG93IHZhcmlhYmxl cyBpbiBGUk9NIGNsYXVzZSwgdGhlbiBoZXJlIGNhbiBiZSBjaGVjaywKKwkJICogaWYgdmFyaWFi bGUgYW5kIG5vZGUgYXJlIHNhbWUuIE9yIGJldHRlciwgd2hlbiBub2RlIHdpbGwgYmUKKwkJICog cmVmZXJlbmNlZCB0byB2YXJpYWJsZSwgdGhlbiB0b1NjaGVtYVZhcmlhYmxlIHdpbGwgbm90IGJl IGNhbGxlZC4KKwkJICogQnV0IG5vdywgd2UgZG9uJ3QgYWxsb3cgc2NoZW1hIHZhcmlhYmxlIGlu IEZST00gY2xhdXNlLCBzbyB0aGUKKwkJICogY29uZmxpY3QgaXMgbm90IHBvc3NpYmxlLgorCQkg Ki8KKwkJaWYgKG5vZGUgIT0gTlVMTCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2Rl KEVSUkNPREVfQU1CSUdVT1VTX0NPTFVNTiksCisJCQkJCSBlcnJtc2coImNvbHVtbiByZWZlcmVu Y2UgXCIlc1wiIGlzIGFtYmlndW91cyIsCisJCQkJCQkJTmFtZUxpc3RUb1N0cmluZyhjcmVmLT5m aWVsZHMpKSwKKwkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGNyZWYtPmxvY2F0aW9u KSkpOworCisJCW5vZGUgPSB2YXJpYWJsZTsKKwl9CisKIAkvKgogCSAqIE5vdyBnaXZlIHRoZSBQ b3N0UGFyc2VDb2x1bW5SZWZIb29rLCBpZiBhbnksIGEgY2hhbmNlLiAgV2UgcGFzcyB0aGUKIAkg KiB0cmFuc2xhdGlvbi1zby1mYXIgc28gdGhhdCBpdCBjYW4gdGhyb3cgYW4gZXJyb3IgaWYgaXQg d2lzaGVzIGluIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0 aW9uLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYwppbmRleCBiZjVkZjI2 MDA5Li41MTJlMzY0ZmEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVs YXRpb24uYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYwpAQCAtMjEs NiArMjEsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvaGVhcC5oIgogI2luY2x1ZGUgImNhdGFsb2cv bmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiY29t bWFuZHMvc2NoZW1hdmFyLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgIm5vZGVz L21ha2VmdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgpAQCAtMzIsNiArMzMs NyBAQAogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5o IgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUu aCIKICNpbmNsdWRlICJ1dGlscy92YXJsZW5hLmgiCiAKIApAQCAtMTE1MCw2ICsxMTUyLDcgQEAg cGFyc2VyT3BlblRhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgUmFuZ2VWYXIgKnJlbGF0 aW9uLCBpbnQgbG9ja21vZGUpCiAKIAlzZXR1cF9wYXJzZXJfZXJycG9zaXRpb25fY2FsbGJhY2so JnBjYnN0YXRlLCBwc3RhdGUsIHJlbGF0aW9uLT5sb2NhdGlvbik7CiAJcmVsID0gaGVhcF9vcGVu cnZfZXh0ZW5kZWQocmVsYXRpb24sIGxvY2ttb2RlLCB0cnVlKTsKKwogCWlmIChyZWwgPT0gTlVM TCkKIAl7CiAJCWlmIChyZWxhdGlvbi0+c2NoZW1hbmFtZSkKQEAgLTExODAsNiArMTE4MywyNCBA QCBwYXJzZXJPcGVuVGFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBSYW5nZVZhciAqcmVs YXRpb24sIGludCBsb2NrbW9kZSkKIAkJCQkJCQkJcmVsYXRpb24tPnJlbG5hbWUpKSk7CiAJCX0K IAl9CisKKwkvKgorCSAqIFJFTEtJTkRfVkFSSUFCTEUgY2FuIGJlIHVzZWQgb25seSBpbiBMRVQg Y29tbWFuZC4KKwkgKiBQcm9iYWJseSB0aGlzIGNoZWNrIGNhbiBiZSBkb25lIGVsc2V3aGVyZSwg YnV0IGhlcmUgSQorCSAqIGhhdmUgYSB1c2VkIHJlbGF0aW9uIGFuZCBwYXJzZSBzdGF0ZSB0b2dl dGhlciBmaXJzdCB0aW1lLgorCSAqLworCWlmIChyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxL SU5EX1ZBUklBQkxFICYmICFwc3RhdGUtPnBfaXNfbGV0KQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCSBlcnJtc2coIlwiJXNc IiBpcyBhbiBzY2hlbWEgdmFyaWFibGUiLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cmVsKSkpKTsKKworCWlmIChwc3RhdGUtPnBfaXNfbGV0ICYmIHJlbC0+cmRfcmVsLT5yZWxraW5k ICE9IFJFTEtJTkRfVkFSSUFCTEUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJS Q09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJIGVycm1zZygiXCIlc1wiIGlzIG5vdCBhbiBz Y2hlbWEgdmFyaWFibGUiLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsK KwogCWNhbmNlbF9wYXJzZXJfZXJycG9zaXRpb25fY2FsbGJhY2soJnBjYnN0YXRlKTsKIAlyZXR1 cm4gcmVsOwogfQpAQCAtMzM2MCwzICszMzgxLDE2MCBAQCBpc1F1ZXJ5VXNpbmdUZW1wUmVsYXRp b25fd2Fsa2VyKE5vZGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpCiAJCQkJCQkJCSAgaXNRdWVyeVVz aW5nVGVtcFJlbGF0aW9uX3dhbGtlciwKIAkJCQkJCQkJICBjb250ZXh0KTsKIH0KKworUmFuZ2VW YXIgKgorbWFrZVJhbmdlVmFyRm9yVGFyZ2V0T2ZTY2hlbWFWYXJpYWJsZShQYXJzZVN0YXRlICpw c3RhdGUsCisJCQkJCQkJCQkgIGNoYXIgKmZpZWxkMSwgY2hhciAqZmllbGQyLCBjaGFyICpmaWVs ZDMsCisJCQkJCQkJCQkgIGludCBsb2NhdGlvbiwgY2hhciAqKmZpZWxkbmFtZSwgaW50ICpmaWVs ZG5hbWVfcG9zLCBib29sIG5vZXJyb3IpCit7CisJUmFuZ2VWYXIJKnJ2MTsKKwlPaWQJCQl2YXJp ZDE7CisJYm9vbAkJaXNfcm93dHlwZTE7CisKKwlydjEgPSBtYWtlUmFuZ2VWYXIoZmllbGQxLCBm aWVsZDIsIGxvY2F0aW9uKTsKKwl2YXJpZDEgPSBSYW5nZVZhckdldFJlbGlkKHJ2MSwgTm9Mb2Nr LCB0cnVlKTsKKwl2YXJpZDEgPSBpc19zY2hlbWF2YXIodmFyaWQxLCAmaXNfcm93dHlwZTEpID8g dmFyaWQxIDogSW52YWxpZE9pZDsKKworCWlmIChmaWVsZDEgIT0gTlVMTCAmJiBmaWVsZDMgPT0g TlVMTCkKKwl7CisJCVJhbmdlVmFyICAgKnJ2MjsKKwkJYm9vbAlpc19yb3d0eXBlMjsKKwkJT2lk CQl2YXJpZDI7CisKKwkJcnYyID0gbWFrZVJhbmdlVmFyKE5VTEwsIGZpZWxkMSwgbG9jYXRpb24p OworCQl2YXJpZDIgPSBSYW5nZVZhckdldFJlbGlkKHJ2MiwgTm9Mb2NrLCB0cnVlKTsKKworCQkv KiB2YXJpZDIgaGFzIHNlbnNlIG9ubHkgYXMgcm93IHR5cGUgdmFyaWFibGUgKi8KKwkJdmFyaWQy ID0gaXNfc2NoZW1hdmFyKHZhcmlkMiwgJmlzX3Jvd3R5cGUyKSA/IHZhcmlkMiA6IEludmFsaWRP aWQ7CisJCXZhcmlkMiA9IGlzX3Jvd3R5cGUyID8gdmFyaWQyIDogSW52YWxpZE9pZDsKKworCQlp ZiAoT2lkSXNWYWxpZCh2YXJpZDEpICYmIE9pZElzVmFsaWQodmFyaWQyKSkKKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfQU1CSUdVT1VTX0NPTFVNTiksCisJCQkgZXJy bXNnKCJ2YXJpYWJsZSByZWZlcmVuY2UgXCIlc1wiLlwiJXNcIiBpcyBhbWJpZ3VvdXMiLCBmaWVs ZDEsIGZpZWxkMiksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikp KTsKKworCQlpZiAoT2lkSXNWYWxpZCh2YXJpZDIpKQorCQl7CisJCQkqZmllbGRuYW1lID0gZmll bGQyOworCQkJKmZpZWxkbmFtZV9wb3MgPSAyOworCQkJcmV0dXJuIHJ2MjsKKwkJfQorCX0KKwor CWlmICghT2lkSXNWYWxpZCh2YXJpZDEpKQorCXsKKwkJaWYgKCFub2Vycm9yKQorCQl7CisJCQlp ZiAoZmllbGQxICE9IE5VTEwpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVS UkNPREVfVU5ERUZJTkVEX1RBQkxFKSwKKwkJCQkJCSBlcnJtc2coInNjaGVtYSB2YXJpYWJsZSBc IiVzLiVzXCIgZG9lc24ndCBleGlzdHMiLCBmaWVsZDEsIGZpZWxkMiksCisJCQkJCQkgcGFyc2Vy X2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24pKSk7CisJCQllbHNlCisJCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX1RBQkxFKSwKKwkJCQkJCSBl cnJtc2coInNjaGVtYSB2YXJpYWJsZSBcIiVzXCIgZG9lc24ndCBleGlzdHMiLCBmaWVsZDIpLAor CQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uKSkpOworCQl9CisKKwkJ cmV0dXJuIE5VTEw7CisJfQorCisJKmZpZWxkbmFtZSA9IGZpZWxkMzsKKwkqZmllbGRuYW1lX3Bv cyA9IDM7CisKKwlpZiAoZmllbGQzICE9IE5VTEwgJiYgIWlzX3Jvd3R5cGUxKQorCXsKKwkJaWYg KCFub2Vycm9yKQorCQl7CisJCQlpZiAoZmllbGQxICE9IE5VTEwpCisJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCQkJIGVy cm1zZygidmFyaWFibGUgXCIlcy4lc1wiIGlzIG5vdCByb3cgdHlwZSIsIGZpZWxkMSwgZmllbGQy KSwKKwkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24pKSk7CisJCQll bHNlCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JK RUNUX1RZUEUpLAorCQkJCQkJIGVycm1zZygidmFyaWFibGUgXCIlc1wiIGlzIG5vdCByb3cgdHlw ZSIsIGZpZWxkMiksCisJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24p KSk7CisJCX0KKworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlyZXR1cm4gcnYxOworfQorCisvKgor ICogVHJ5IHRvIHJlcGxhY2UgQ29sdW1uUmVmIGJ5IFBhcmFtIHJlbGF0ZWQgdG8gdmFyaWFibGUK KyAqCisgKi8KK05vZGUgKgordG9TY2hlbWFWYXJpYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsIGNo YXIgKm5zcG5hbWUsIGNoYXIgKnZhcm5hbWUsIGNoYXIgKmZpZWxkbmFtZSwgaW50IGxvY2F0aW9u KQoreworCWNoYXIJICAgKnVzZWRfZmllbGRuYW1lOworCVJhbmdlVmFyICAgKnJ2OworCU9pZAkJ CXZhcmlkOworCWludAkJCWZpZWxkbmFtZV9wb3M7CisJT2lkCQkJdmFydHlwOworCWludDMyCQl2 YXJ0eXBtb2Q7CisJUGFyYW0JICAgKnBhcmFtOworCisJcnYgPSBtYWtlUmFuZ2VWYXJGb3JUYXJn ZXRPZlNjaGVtYVZhcmlhYmxlKHBzdGF0ZSwKKwkJCQkJCQkJCQkJICAgbnNwbmFtZSwgdmFybmFt ZSwgZmllbGRuYW1lLCBsb2NhdGlvbiwKKwkJCQkJCQkJCQkJICAgJnVzZWRfZmllbGRuYW1lLCAm ZmllbGRuYW1lX3BvcywgdHJ1ZSk7CisKKwlpZiAocnYgPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7 CisKKwl2YXJpZCA9IFJhbmdlVmFyR2V0UmVsaWQocnYsIE5vTG9jaywgdHJ1ZSk7CisJaWYgKCFP aWRJc1ZhbGlkKHZhcmlkKSkKKwkJcmV0dXJuIE5VTEw7CisKKwlwYXJhbSA9IG1ha2VOb2RlKFBh cmFtKTsKKworCXNjaGVtYXZhcl9nZXRfdHlwX3R5cG1vZCh2YXJpZCwgJnZhcnR5cCwgJnZhcnR5 cG1vZCk7CisKKwlwYXJhbS0+cGFyYW1raW5kID0gUEFSQU1fU0NIRU1BX1ZBUklBQkxFOworCXBh cmFtLT5wYXJhbWlkID0gdmFyaWQ7CisJcGFyYW0tPnBhcmFtdHlwZSA9IHZhcnR5cDsKKwlwYXJh bS0+cGFyYW10eXBtb2QgPSB2YXJ0eXBtb2Q7CisKKwlpZiAodXNlZF9maWVsZG5hbWUgIT0gTlVM TCkKKwl7CisJCVR1cGxlRGVzYwkJdHVwZGVzYzsKKwkJaW50CQlpOworCisJCXR1cGRlc2MgPSBs b29rdXBfcm93dHlwZV90dXBkZXNjKHBhcmFtLT5wYXJhbXR5cGUsIHBhcmFtLT5wYXJhbXR5cG1v ZCk7CisKKwkJZm9yIChpID0gMDsgaSA8IHR1cGRlc2MtPm5hdHRzOyBpKyspCisJCXsKKwkJCUZv cm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIodHVwZGVzYywgaSk7CisKKwkJCWlm IChzdHJjbXAodXNlZF9maWVsZG5hbWUsIE5hbWVTdHIoYXR0LT5hdHRuYW1lKSkgPT0gMCAmJgor CQkJCSFhdHQtPmF0dGlzZHJvcHBlZCkKKwkJCXsKKwkJCQkvKiBTdWNjZXNzLCBzbyBnZW5lcmF0 ZSBhIEZpZWxkU2VsZWN0IGV4cHJlc3Npb24gKi8KKwkJCQlGaWVsZFNlbGVjdCAqZnNlbGVjdCA9 IG1ha2VOb2RlKEZpZWxkU2VsZWN0KTsKKworCQkJCWZzZWxlY3QtPmFyZyA9IChFeHByICopIHBh cmFtOworCQkJCWZzZWxlY3QtPmZpZWxkbnVtID0gaSArIDE7CisJCQkJZnNlbGVjdC0+cmVzdWx0 dHlwZSA9IGF0dC0+YXR0dHlwaWQ7CisJCQkJZnNlbGVjdC0+cmVzdWx0dHlwbW9kID0gYXR0LT5h dHR0eXBtb2Q7CisJCQkJLyogc2F2ZSBhdHRyaWJ1dGUncyBjb2xsYXRpb24gZm9yIHBhcnNlX2Nv bGxhdGUuYyAqLworCQkJCWZzZWxlY3QtPnJlc3VsdGNvbGxpZCA9IGF0dC0+YXR0Y29sbGF0aW9u OworCisJCQkJUmVsZWFzZVR1cGxlRGVzYyh0dXBkZXNjKTsKKwkJCQlyZXR1cm4gKE5vZGUgKikg ZnNlbGVjdDsKKwkJCX0KKwkJfQorCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJS Q09ERV9VTkRFRklORURfQ09MVU1OKSwKKwkJIGVycm1zZygiY291bGQgbm90IGlkZW50aWZ5IGNv bHVtbiBcIiVzXCIgaW4gdmFyaWFibGUiLCB1c2VkX2ZpZWxkbmFtZSksCisJCQkJIHBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uKSkpOworCX0KKworCXJldHVybiAoTm9kZSAqKSBw YXJhbTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwppbmRleCA0OTMyZTU4MDIyLi44NTQ5 OTA4MDk1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCkBAIC0zNSwxNiArMzUsNiBAQAog CiBzdGF0aWMgdm9pZCBtYXJrVGFyZ2V0TGlzdE9yaWdpbihQYXJzZVN0YXRlICpwc3RhdGUsIFRh cmdldEVudHJ5ICp0bGUsCiAJCQkJCSBWYXIgKnZhciwgaW50IGxldmVsc3VwKTsKLXN0YXRpYyBO b2RlICp0cmFuc2Zvcm1Bc3NpZ25tZW50SW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLAot CQkJCQkJCSAgIE5vZGUgKmJhc2Vub2RlLAotCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnRhcmdldE5h bWUsCi0JCQkJCQkJICAgYm9vbCB0YXJnZXRJc0FycmF5LAotCQkJCQkJCSAgIE9pZCB0YXJnZXRU eXBlSWQsCi0JCQkJCQkJICAgaW50MzIgdGFyZ2V0VHlwTW9kLAotCQkJCQkJCSAgIE9pZCB0YXJn ZXRDb2xsYXRpb24sCi0JCQkJCQkJICAgTGlzdENlbGwgKmluZGlyZWN0aW9uLAotCQkJCQkJCSAg IE5vZGUgKnJocywKLQkJCQkJCQkgICBpbnQgbG9jYXRpb24pOwogc3RhdGljIE5vZGUgKnRyYW5z Zm9ybUFzc2lnbm1lbnRTdWJzY3JpcHRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkgIE5v ZGUgKmJhc2Vub2RlLAogCQkJCQkJCSAgY29uc3QgY2hhciAqdGFyZ2V0TmFtZSwKQEAgLTU5Niw3 ICs1ODYsNiBAQCB0cmFuc2Zvcm1Bc3NpZ25lZEV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCXJl dHVybiBleHByOwogfQogCi0KIC8qCiAgKiB1cGRhdGVUYXJnZXRMaXN0RW50cnkoKQogICoJVGhp cyBpcyB1c2VkIGluIFVQREFURSBzdGF0ZW1lbnRzIChhbmQgT04gQ09ORkxJQ1QgRE8gVVBEQVRF KQpAQCAtNjcyLDcgKzY2MSw3IEBAIHVwZGF0ZVRhcmdldExpc3RFbnRyeShQYXJzZVN0YXRlICpw c3RhdGUsCiAgKiBtaWdodCB3YW50IHRvIGRlY29yYXRlIGluZGlyZWN0aW9uIGNlbGxzIHdpdGgg dGhlaXIgb3duIGxvY2F0aW9uIGluZm8sCiAgKiBpbiB3aGljaCBjYXNlIHRoZSBsb2NhdGlvbiBh cmd1bWVudCBjb3VsZCBwcm9iYWJseSBiZSBkcm9wcGVkLikKICAqLwotc3RhdGljIE5vZGUgKgor Tm9kZSAqCiB0cmFuc2Zvcm1Bc3NpZ25tZW50SW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRl LAogCQkJCQkJCSAgIE5vZGUgKmJhc2Vub2RlLAogCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnRhcmdl dE5hbWUsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwppbmRleCBkYTVlZGU4NjZjLi4wMGFm MzdhNGE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCisr KyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKQEAgLTEwOCw2ICsxMDgsNyBA QCB0eXBlZGVmIHN0cnVjdAogCUxpc3QJICAgKnZpZXdzOwkJCS8qIENSRUFURSBWSUVXIGl0ZW1z ICovCiAJTGlzdAkgICAqaW5kZXhlczsJCS8qIENSRUFURSBJTkRFWCBpdGVtcyAqLwogCUxpc3QJ ICAgKnRyaWdnZXJzOwkJLyogQ1JFQVRFIFRSSUdHRVIgaXRlbXMgKi8KKwlMaXN0CSAgICp2YXJp YWJsZXM7CQkvKiBDUkVBVEUgVkFSSUFCTEUgaXRlbXMgKi8KIAlMaXN0CSAgICpncmFudHM7CQkJ LyogR1JBTlQgaXRlbXMgKi8KIH0gQ3JlYXRlU2NoZW1hU3RtdENvbnRleHQ7CiAKQEAgLTM0Mzgs NiArMzQzOSw3IEBAIHRyYW5zZm9ybUNyZWF0ZVNjaGVtYVN0bXQoQ3JlYXRlU2NoZW1hU3RtdCAq c3RtdCkKIAljeHQudmlld3MgPSBOSUw7CiAJY3h0LmluZGV4ZXMgPSBOSUw7CiAJY3h0LnRyaWdn ZXJzID0gTklMOworCWN4dC52YXJpYWJsZXMgPSBOSUw7CiAJY3h0LmdyYW50cyA9IE5JTDsKIAog CS8qCkBAIC0zNTAzLDYgKzM1MDUsMTQgQEAgdHJhbnNmb3JtQ3JlYXRlU2NoZW1hU3RtdChDcmVh dGVTY2hlbWFTdG10ICpzdG10KQogCQkJCX0KIAkJCQlicmVhazsKIAorCQkJY2FzZSBUX0NyZWF0 ZVNjaGVtYVZhclN0bXQ6CisJCQkJeworCQkJCQlDcmVhdGVTY2hlbWFWYXJTdG10ICplbHAgPSAo Q3JlYXRlU2NoZW1hVmFyU3RtdCAqKSBlbGVtZW50OworCisJCQkJCXNldFNjaGVtYU5hbWUoY3h0 LnNjaGVtYW5hbWUsICZlbHAtPnZhcmlhYmxlLT5zY2hlbWFuYW1lKTsKKwkJCQkJY3h0LnZhcmlh YmxlcyA9IGxhcHBlbmQoY3h0LnZhcmlhYmxlcywgZWxlbWVudCk7CisJCQkJfQorCiAJCQljYXNl IFRfR3JhbnRTdG10OgogCQkJCWN4dC5ncmFudHMgPSBsYXBwZW5kKGN4dC5ncmFudHMsIGVsZW1l bnQpOwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRl SGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCmluZGV4IDVi ODdjNTU0ZjUuLjJkNjM0YzdkZDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3 cml0ZUhhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMK QEAgLTMzNDIsNyArMzM0Miw3IEBAIFJld3JpdGVRdWVyeShRdWVyeSAqcGFyc2V0cmVlLCBMaXN0 ICpyZXdyaXRlX2V2ZW50cykKIAkJCQkJCQkJCXJ0X2VudHJ5X3JlbGF0aW9uLAogCQkJCQkJCQkJ cGFyc2V0cmVlLT5yZXN1bHRSZWxhdGlvbiwgTlVMTCk7CiAJCX0KLQkJZWxzZSBpZiAoZXZlbnQg PT0gQ01EX0RFTEVURSkKKwkJZWxzZSBpZiAoZXZlbnQgPT0gQ01EX0RFTEVURSB8fCBldmVudCA9 PSBDTURfTEVUKQogCQl7CiAJCQkvKiBOb3RoaW5nIHRvIGRvIGhlcmUgKi8KIAkJfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5 LmMKaW5kZXggNjZjYzVjMzVjNi4uMzRkZGI3OWEzZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dGNvcC9wcXVlcnkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCkBAIC0xOTMsNiAr MTkzLDEwIEBAIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKIAkJCQkJCSAiREVMRVRF ICIgVUlOVDY0X0ZPUk1BVCwKIAkJCQkJCSBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2Vk KTsKIAkJCQlicmVhazsKKwkJCWNhc2UgQ01EX0xFVDoKKwkJCQlzbnByaW50Zihjb21wbGV0aW9u VGFnLCBDT01QTEVUSU9OX1RBR19CVUZTSVpFLAorCQkJCQkJICJMRVQgIik7CisJCQkJYnJlYWs7 CiAJCQlkZWZhdWx0OgogCQkJCXN0cmNweShjb21wbGV0aW9uVGFnLCAiPz8/Iik7CiAJCQkJYnJl YWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyBiL3NyYy9iYWNrZW5k L3Rjb3AvdXRpbGl0eS5jCmluZGV4IDI4N2FkZGY0MjkuLjAwOTY1Y2E1MDYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0 eS5jCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvcHJvY2xhbmcuaCIKICNp bmNsdWRlICJjb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaCIKICNpbmNsdWRlICJjb21tYW5kcy9z Y2hlbWFjbWRzLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2NoZW1hdmFyLmgiCiAjaW5jbHVkZSAi Y29tbWFuZHMvc2VjbGFiZWwuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgogI2lu Y2x1ZGUgImNvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaCIKQEAgLTExMyw2ICsxMTQsNyBAQCBD b21tYW5kSXNSZWFkT25seShQbGFubmVkU3RtdCAqcHN0bXQpCiAJCWNhc2UgQ01EX0RFTEVURToK IAkJCXJldHVybiBmYWxzZTsKIAkJY2FzZSBDTURfVVRJTElUWToKKwkJY2FzZSBDTURfTEVUOgog CQkJLyogRm9yIG5vdywgdHJlYXQgYWxsIHV0aWxpdHkgY29tbWFuZHMgYXMgcmVhZC93cml0ZSAq LwogCQkJcmV0dXJuIGZhbHNlOwogCQlkZWZhdWx0OgpAQCAtMTc4LDYgKzE4MCw3IEBAIGNoZWNr X3hhY3RfcmVhZG9ubHkoTm9kZSAqcGFyc2V0cmVlKQogCQljYXNlIFRfQ3JlYXRlU2NoZW1hU3Rt dDoKIAkJY2FzZSBUX0NyZWF0ZVNlcVN0bXQ6CiAJCWNhc2UgVF9DcmVhdGVTdG10OgorCQljYXNl IFRfQ3JlYXRlU2NoZW1hVmFyU3RtdDoKIAkJY2FzZSBUX0NyZWF0ZVRhYmxlQXNTdG10OgogCQlj YXNlIFRfUmVmcmVzaE1hdFZpZXdTdG10OgogCQljYXNlIFRfQ3JlYXRlVGFibGVTcGFjZVN0bXQ6 CkBAIC0xNDU5LDYgKzE0NjIsMTAgQEAgUHJvY2Vzc1V0aWxpdHlTbG93KFBhcnNlU3RhdGUgKnBz dGF0ZSwKIAkJCQlhZGRyZXNzID0gQWx0ZXJTZXF1ZW5jZShwc3RhdGUsIChBbHRlclNlcVN0bXQg KikgcGFyc2V0cmVlKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBUX0NyZWF0ZVNjaGVtYVZhclN0 bXQ6CisJCQkJYWRkcmVzcyA9IERlZmluZVNjaGVtYVZhcmlhYmxlKHBzdGF0ZSwgKENyZWF0ZVNj aGVtYVZhclN0bXQgKikgcGFyc2V0cmVlKTsKKwkJCQlicmVhazsKKwogCQkJY2FzZSBUX0NyZWF0 ZVRhYmxlQXNTdG10OgogCQkJCWFkZHJlc3MgPSBFeGVjQ3JlYXRlVGFibGVBcygoQ3JlYXRlVGFi bGVBc1N0bXQgKikgcGFyc2V0cmVlLAogCQkJCQkJCQkJCQlxdWVyeVN0cmluZywgcGFyYW1zLCBx dWVyeUVudiwKQEAgLTIwMzIsNiArMjAzOSw5IEBAIEFsdGVyT2JqZWN0VHlwZUNvbW1hbmRUYWco T2JqZWN0VHlwZSBvYmp0eXBlKQogCQljYXNlIE9CSkVDVF9TVEFUSVNUSUNfRVhUOgogCQkJdGFn ID0gIkFMVEVSIFNUQVRJU1RJQ1MiOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxF OgorCQkJdGFnID0gIkFMVEVSIFZBUklBQkxFIjsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJ dGFnID0gIj8/PyI7CiAJCQlicmVhazsKQEAgLTIwODEsNiArMjA5MSwxMCBAQCBDcmVhdGVDb21t YW5kVGFnKE5vZGUgKnBhcnNldHJlZSkKIAkJCXRhZyA9ICJTRUxFQ1QiOwogCQkJYnJlYWs7CiAK KwkJY2FzZSBUX0xldFN0bXQ6CisJCQl0YWcgPSAiTEVUIjsKKwkJCWJyZWFrOworCiAJCQkvKiB1 dGlsaXR5IHN0YXRlbWVudHMgLS0tIHNhbWUgd2hldGhlciByYXcgb3IgY29va2VkICovCiAJCWNh c2UgVF9UcmFuc2FjdGlvblN0bXQ6CiAJCQl7CkBAIC0yMjQ1LDYgKzIyNTksOSBAQCBDcmVhdGVD b21tYW5kVGFnKE5vZGUgKnBhcnNldHJlZSkKIAkJCQljYXNlIE9CSkVDVF9JTkRFWDoKIAkJCQkJ dGFnID0gIkRST1AgSU5ERVgiOwogCQkJCQlicmVhazsKKwkJCQljYXNlIE9CSkVDVF9WQVJJQUJM RToKKwkJCQkJdGFnID0gIkRST1AgVkFSSUFCTEUiOworCQkJCQlicmVhazsKIAkJCQljYXNlIE9C SkVDVF9UWVBFOgogCQkJCQl0YWcgPSAiRFJPUCBUWVBFIjsKIAkJCQkJYnJlYWs7CkBAIC0yNDk5 LDYgKzI1MTYsMTAgQEAgQ3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQl0YWcg PSAiQUxURVIgU0VRVUVOQ0UiOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX0NyZWF0ZVNjaGVtYVZh clN0bXQ6CisJCQl0YWcgPSAiQ1JFQVRFIFZBUklBQkxFIjsKKwkJCWJyZWFrOworCiAJCWNhc2Ug VF9Eb1N0bXQ6CiAJCQl0YWcgPSAiRE8iOwogCQkJYnJlYWs7CkBAIC0yNjE2LDYgKzI2MzcsOSBA QCBDcmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNldHJlZSkKIAkJCQljYXNlIERJU0NBUkRfU0VR VUVOQ0VTOgogCQkJCQl0YWcgPSAiRElTQ0FSRCBTRVFVRU5DRVMiOwogCQkJCQlicmVhazsKKwkJ CQljYXNlIERJU0NBUkRfVkFSSUFCTEVTOgorCQkJCQl0YWcgPSAiRElTQ0FSRCBWQVJJQUJMRVMi OworCQkJCQlicmVhazsKIAkJCQlkZWZhdWx0OgogCQkJCQl0YWcgPSAiPz8/IjsKIAkJCX0KQEAg LTI4MjAsNiArMjg0NCw5IEBAIENyZWF0ZUNvbW1hbmRUYWcoTm9kZSAqcGFyc2V0cmVlKQogCQkJ CQljYXNlIENNRF9ERUxFVEU6CiAJCQkJCQl0YWcgPSAiREVMRVRFIjsKIAkJCQkJCWJyZWFrOwor CQkJCQljYXNlIENNRF9MRVQ6CisJCQkJCQl0YWcgPSAiTEVUIjsKKwkJCQkJCWJyZWFrOwogCQkJ CQljYXNlIENNRF9VVElMSVRZOgogCQkJCQkJdGFnID0gQ3JlYXRlQ29tbWFuZFRhZyhzdG10LT51 dGlsaXR5U3RtdCk7CiAJCQkJCQlicmVhazsKQEAgLTI5MzgsNiArMjk2NSwxMCBAQCBHZXRDb21t YW5kTG9nTGV2ZWwoTm9kZSAqcGFyc2V0cmVlKQogCQkJCWxldiA9IExPR1NUTVRfQUxMOwogCQkJ YnJlYWs7CiAKKwkJY2FzZSBUX0xldFN0bXQ6CisJCQlsZXYgPSBMT0dTVE1UX0FMTDsKKwkJCWJy ZWFrOworCiAJCQkvKiB1dGlsaXR5IHN0YXRlbWVudHMgLS0tIHNhbWUgd2hldGhlciByYXcgb3Ig Y29va2VkICovCiAJCWNhc2UgVF9UcmFuc2FjdGlvblN0bXQ6CiAJCQlsZXYgPSBMT0dTVE1UX0FM TDsKQEAgLTMzOTEsNiArMzQyMiw3IEBAIEdldENvbW1hbmRMb2dMZXZlbChOb2RlICpwYXJzZXRy ZWUpCiAJCQkJc3dpdGNoIChzdG10LT5jb21tYW5kVHlwZSkKIAkJCQl7CiAJCQkJCWNhc2UgQ01E X1NFTEVDVDoKKwkJCQkJY2FzZSBDTURfTEVUOgogCQkJCQkJbGV2ID0gTE9HU1RNVF9BTEw7CiAJ CQkJCQlicmVhazsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FjbC5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FjbC5jCmluZGV4IDBjZmMyOTdiNjUuLmZjZDY5NTgzNmEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvYWNsLmMKQEAgLTgwOCw2ICs4MDgsMTAgQEAgYWNsZGVmYXVsdChPYmplY3RU eXBlIG9ianR5cGUsIE9pZCBvd25lcklkKQogCQkJd29ybGRfZGVmYXVsdCA9IEFDTF9VU0FHRTsK IAkJCW93bmVyX2RlZmF1bHQgPSBBQ0xfQUxMX1JJR0hUU19UWVBFOwogCQkJYnJlYWs7CisJCWNh c2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJd29ybGRfZGVmYXVsdCA9IEFDTF9OT19SSUdIVFM7CisJ CQlvd25lcl9kZWZhdWx0ID0gQUNMX0FMTF9SSUdIVFNfVkFSSUFCTEU7CisJCQlicmVhazsKIAkJ ZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqdHlwZTogJWQiLCAoaW50 KSBvYmp0eXBlKTsKIAkJCXdvcmxkX2RlZmF1bHQgPSBBQ0xfTk9fUklHSFRTOwkvKiBrZWVwIGNv bXBpbGVyIHF1aWV0ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0 aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggNzRlMWNkOGFm Yi4uNWQzZDc0NTFiOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGls cy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtNDAsNiArNDAs NyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2Rl ZnJlbS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlc3BhY2UuaCIKKyNpbmNsdWRlICJjb21t YW5kcy9zY2hlbWF2YXIuaCIKICNpbmNsdWRlICJjb21tb24va2V5d29yZHMuaCIKICNpbmNsdWRl ICJleGVjdXRvci9zcGkuaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCkBAIC0zODIsNiArMzgzLDcg QEAgc3RhdGljIHZvaWQgZ2V0X3VwZGF0ZV9xdWVyeV90YXJnZXRsaXN0X2RlZihRdWVyeSAqcXVl cnksIExpc3QgKnRhcmdldExpc3QsCiAJCQkJCQkJCWRlcGFyc2VfY29udGV4dCAqY29udGV4dCwK IAkJCQkJCQkJUmFuZ2VUYmxFbnRyeSAqcnRlKTsKIHN0YXRpYyB2b2lkIGdldF9kZWxldGVfcXVl cnlfZGVmKFF1ZXJ5ICpxdWVyeSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KTsKK3N0YXRpYyB2 b2lkIGdldF9sZXRfcXVlcnlfZGVmKFF1ZXJ5ICpxdWVyeSwgZGVwYXJzZV9jb250ZXh0ICpjb250 ZXh0KTsKIHN0YXRpYyB2b2lkIGdldF91dGlsaXR5X3F1ZXJ5X2RlZihRdWVyeSAqcXVlcnksIGRl cGFyc2VfY29udGV4dCAqY29udGV4dCk7CiBzdGF0aWMgdm9pZCBnZXRfYmFzaWNfc2VsZWN0X3F1 ZXJ5KFF1ZXJ5ICpxdWVyeSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQkJCQkgICBUdXBs ZURlc2MgcmVzdWx0RGVzYyk7CkBAIC00OTg5LDYgKzQ5OTEsMTAgQEAgZ2V0X3F1ZXJ5X2RlZihR dWVyeSAqcXVlcnksIFN0cmluZ0luZm8gYnVmLCBMaXN0ICpwYXJlbnRuYW1lc3BhY2UsCiAJCQln ZXRfZGVsZXRlX3F1ZXJ5X2RlZihxdWVyeSwgJmNvbnRleHQpOwogCQkJYnJlYWs7CiAKKwkJY2Fz ZSBDTURfTEVUOgorCQkJZ2V0X2xldF9xdWVyeV9kZWYocXVlcnksICZjb250ZXh0KTsKKwkJCWJy ZWFrOworCiAJCWNhc2UgQ01EX05PVEhJTkc6CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1 ZiwgIk5PVEhJTkciKTsKIAkJCWJyZWFrOwpAQCAtNjIwNiw2ICs2MjEyLDU4IEBAIGdldF9pbnNl cnRfcXVlcnlfZGVmKFF1ZXJ5ICpxdWVyeSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogCX0K IH0KIAorLyogLS0tLS0tLS0tLQorICogZ2V0X2xldF9xdWVyeV9kZWYJCQktIFBhcnNlIGJhY2sg YW4gTEVUIHBhcnNldHJlZQorICogLS0tLS0tLS0tLQorICovCitzdGF0aWMgdm9pZAorZ2V0X2xl dF9xdWVyeV9kZWYoUXVlcnkgKnF1ZXJ5LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCit7CisJ U3RyaW5nSW5mbwlidWYgPSBjb250ZXh0LT5idWY7CisJUmFuZ2VUYmxFbnRyeSAqc2VsZWN0X3J0 ZSA9IE5VTEw7CisJUmFuZ2VUYmxFbnRyeSAqcnRlOworCUxpc3RDZWxsICAgKmw7CisKKwkvKgor CSAqIElmIGl0J3MgYW4gSU5TRVJUIC4uLiBTRUxFQ1Qgb3IgbXVsdGktcm93IFZBTFVFUywgdGhl cmUgd2lsbCBiZSBhCisJICogc2luZ2xlIFJURSBmb3IgdGhlIFNFTEVDVCBvciBWQUxVRVMuICBQ bGFpbiBWQUxVRVMgaGFzIG5laXRoZXIuCisJICovCisJZm9yZWFjaChsLCBxdWVyeS0+cnRhYmxl KQorCXsKKwkJcnRlID0gKFJhbmdlVGJsRW50cnkgKikgbGZpcnN0KGwpOworCisJCWlmIChydGUt PnJ0ZWtpbmQgPT0gUlRFX1NVQlFVRVJZKQorCQl7CisJCQlpZiAoc2VsZWN0X3J0ZSkKKwkJCQll bG9nKEVSUk9SLCAidG9vIG1hbnkgc3VicXVlcnkgUlRFcyBpbiBJTlNFUlQiKTsKKwkJCXNlbGVj dF9ydGUgPSBydGU7CisJCX0KKwl9CisKKwkvKgorCSAqIFN0YXJ0IHRoZSBxdWVyeSB3aXRoIElO U0VSVCBJTlRPIHJlbG5hbWUKKwkgKi8KKwlydGUgPSBydF9mZXRjaChxdWVyeS0+cmVzdWx0UmVs YXRpb24sIHF1ZXJ5LT5ydGFibGUpOworCUFzc2VydChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFU SU9OKTsKKworCWlmIChQUkVUVFlfSU5ERU5UKGNvbnRleHQpKQorCXsKKwkJY29udGV4dC0+aW5k ZW50TGV2ZWwgKz0gUFJFVFRZSU5ERU5UX1NURDsKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVm LCAnICcpOworCX0KKwlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIkxFVCAlcyAiLAorCQkJCQkgZ2Vu ZXJhdGVfcmVsYXRpb25fbmFtZShydGUtPnJlbGlkLCBOSUwpKTsKKworCWFwcGVuZFN0cmluZ0lu Zm8oYnVmLCAiID0gIik7CisKKwlpZiAoc2VsZWN0X3J0ZSkKKwl7CisJCS8qIEFkZCB0aGUgU0VM RUNUICovCisJCWdldF9xdWVyeV9kZWYoc2VsZWN0X3J0ZS0+c3VicXVlcnksIGJ1ZiwgTklMLCBO VUxMLAorCQkJCQkgIGNvbnRleHQtPnByZXR0eUZsYWdzLCBjb250ZXh0LT53cmFwQ29sdW1uLAor CQkJCQkgIGNvbnRleHQtPmluZGVudExldmVsKTsKKwl9Cit9CiAKIC8qIC0tLS0tLS0tLS0KICAq IGdldF91cGRhdGVfcXVlcnlfZGVmCQkJLSBQYXJzZSBiYWNrIGFuIFVQREFURSBwYXJzZXRyZWUK QEAgLTcyODEsNiArNzMzOSwxMyBAQCBnZXRfcGFyYW1ldGVyKFBhcmFtICpwYXJhbSwgZGVwYXJz ZV9jb250ZXh0ICpjb250ZXh0KQogCWRlcGFyc2VfbmFtZXNwYWNlICpkcG5zOwogCUxpc3RDZWxs ICAgKmFuY2VzdG9yX2NlbGw7CiAKKwlpZiAocGFyYW0tPnBhcmFta2luZCA9PSBQQVJBTV9TQ0hF TUFfVkFSSUFCTEUpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvKGNvbnRleHQtPmJ1ZiwgIiVzIiwg Z2V0X3NjaGVtYXZhcl9uYW1lKHBhcmFtLT5wYXJhbWlkKSk7CisKKwkJcmV0dXJuOworCX0KKwog CS8qCiAJICogSWYgaXQncyBhIFBBUkFNX0VYRUMgcGFyYW1ldGVyLCB0cnkgdG8gbG9jYXRlIHRo ZSBleHByZXNzaW9uIGZyb20gd2hpY2gKIAkgKiB0aGUgcGFyYW1ldGVyIHdhcyBjb21wdXRlZC4g IE5vdGUgdGhhdCBmYWlsaW5nIHRvIGZpbmQgYSByZWZlcmVudCBpc24ndApkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19kdW1wL2NvbW1vbi5jIGIvc3JjL2Jpbi9wZ19kdW1wL2NvbW1vbi5jCmluZGV4 IDBkMTQ3Y2IwOGQuLjk3ZDY2MDcyMzkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9jb21t b24uYworKysgYi9zcmMvYmluL3BnX2R1bXAvY29tbW9uLmMKQEAgLTMyNiw3ICszMjYsOCBAQCBm bGFnSW5oVGFibGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRh YmxlcywKIAkJLyogU29tZSBraW5kcyBuZXZlciBoYXZlIHBhcmVudHMgKi8KIAkJaWYgKHRibGlu Zm9baV0ucmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFIHx8CiAJCQl0YmxpbmZvW2ldLnJlbGtp bmQgPT0gUkVMS0lORF9WSUVXIHx8Ci0JCQl0YmxpbmZvW2ldLnJlbGtpbmQgPT0gUkVMS0lORF9N QVRWSUVXKQorCQkJdGJsaW5mb1tpXS5yZWxraW5kID09IFJFTEtJTkRfTUFUVklFVyB8fAorCQkJ dGJsaW5mb1tpXS5yZWxraW5kID09IFJFTEtJTkRfVkFSSUFCTEUpCiAJCQljb250aW51ZTsKIAog CQkvKgpAQCAtNDc1LDcgKzQ3Niw4IEBAIGZsYWdJbmhBdHRycyhEdW1wT3B0aW9ucyAqZG9wdCwg VGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQkvKiBTb21lIGtpbmRzIG5ldmVy IGhhdmUgcGFyZW50cyAqLwogCQlpZiAodGJpbmZvLT5yZWxraW5kID09IFJFTEtJTkRfU0VRVUVO Q0UgfHwKIAkJCXRiaW5mby0+cmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcgfHwKLQkJCXRiaW5mby0+ cmVsa2luZCA9PSBSRUxLSU5EX01BVFZJRVcpCisJCQl0YmluZm8tPnJlbGtpbmQgPT0gUkVMS0lO RF9NQVRWSUVXIHx8CisJCQl0YmluZm8tPnJlbGtpbmQgPT0gUkVMS0lORF9WQVJJQUJMRSkKIAkJ CWNvbnRpbnVlOwogCiAJCS8qIERvbid0IGJvdGhlciBjb21wdXRpbmcgYW55dGhpbmcgZm9yIG5v bi10YXJnZXQgdGFibGVzLCBlaXRoZXIgKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9w Z19iYWNrdXBfYXJjaGl2ZXIuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIu YwppbmRleCA4M2M5NzZlYWY3Li43MGIzZGE5YzkzIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1 bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9h cmNoaXZlci5jCkBAIC0zNDgwLDcgKzM0ODAsOCBAQCBfZ2V0T2JqZWN0RGVzY3JpcHRpb24oUFFF eHBCdWZmZXIgYnVmLCBUb2NFbnRyeSAqdGUsIEFyY2hpdmVIYW5kbGUgKkFIKQogCQlzdHJjbXAo dHlwZSwgIlNFUlZFUiIpID09IDAgfHwKIAkJc3RyY21wKHR5cGUsICJQVUJMSUNBVElPTiIpID09 IDAgfHwKIAkJc3RyY21wKHR5cGUsICJTVUJTQ1JJUFRJT04iKSA9PSAwIHx8Ci0JCXN0cmNtcCh0 eXBlLCAiVVNFUiBNQVBQSU5HIikgPT0gMCkKKwkJc3RyY21wKHR5cGUsICJVU0VSIE1BUFBJTkci KSA9PSAwIHx8CisJCXN0cmNtcCh0eXBlLCAiVkFSSUFCTEUiKSA9PSAwKQogCXsKIAkJYXBwZW5k UFFFeHBCdWZmZXIoYnVmLCAiJXMgIiwgdHlwZSk7CiAJCWlmICh0ZS0+bmFtZXNwYWNlICYmICp0 ZS0+bmFtZXNwYWNlKQpAQCAtMzY2MSw2ICszNjYyLDcgQEAgX3ByaW50VG9jRW50cnkoQXJjaGl2 ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSwgYm9vbCBpc0RhdGEpCiAJCQlzdHJjbXAodGUtPmRl c2MsICJUQUJMRSIpID09IDAgfHwKIAkJCXN0cmNtcCh0ZS0+ZGVzYywgIlRZUEUiKSA9PSAwIHx8 CiAJCQlzdHJjbXAodGUtPmRlc2MsICJWSUVXIikgPT0gMCB8fAorCQkJc3RyY21wKHRlLT5kZXNj LCAiVkFSSUFCTEUiKSA9PSAwIHx8CiAJCQlzdHJjbXAodGUtPmRlc2MsICJNQVRFUklBTElaRUQg VklFVyIpID09IDAgfHwKIAkJCXN0cmNtcCh0ZS0+ZGVzYywgIlNFUVVFTkNFIikgPT0gMCB8fAog CQkJc3RyY21wKHRlLT5kZXNjLCAiRk9SRUlHTiBUQUJMRSIpID09IDAgfHwKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmlu ZGV4IGM1YjQ5NDU5Y2MuLjA0NmYyYzdhOTYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtMTMyNSwxMCArMTMy NSwxMSBAQCBleHBhbmRfdGFibGVfbmFtZV9wYXR0ZXJucyhBcmNoaXZlICpmb3V0LAogCQkJCQkJ ICAiXG4gICAgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBuIgogCQkJCQkJICAi XG4gICAgIE9OIG4ub2lkIE9QRVJBVE9SKHBnX2NhdGFsb2cuPSkgYy5yZWxuYW1lc3BhY2UiCiAJ CQkJCQkgICJcbldIRVJFIGMucmVsa2luZCBPUEVSQVRPUihwZ19jYXRhbG9nLj0pIEFOWSIKLQkJ CQkJCSAgIlxuICAgIChhcnJheVsnJWMnLCAnJWMnLCAnJWMnLCAnJWMnLCAnJWMnLCAnJWMnXSlc biIsCisJCQkJCQkgICJcbiAgICAoYXJyYXlbJyVjJywgJyVjJywgJyVjJywgJyVjJywgJyVjJywg JyVjLCAlYyddKVxuIiwKIAkJCQkJCSAgUkVMS0lORF9SRUxBVElPTiwgUkVMS0lORF9TRVFVRU5D RSwgUkVMS0lORF9WSUVXLAogCQkJCQkJICBSRUxLSU5EX01BVFZJRVcsIFJFTEtJTkRfRk9SRUlH Tl9UQUJMRSwKLQkJCQkJCSAgUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSk7CisJCQkJCQkgIFJF TEtJTkRfUEFSVElUSU9ORURfVEFCTEUsCisJCQkJCQkgIFJFTEtJTkRfVkFSSUFCTEUpOwogCQlw cm9jZXNzU1FMTmFtZVBhdHRlcm4oR2V0Q29ubmVjdGlvbihmb3V0KSwgcXVlcnksIGNlbGwtPnZh bCwgdHJ1ZSwKIAkJCQkJCQkgIGZhbHNlLCAibi5uc3BuYW1lIiwgImMucmVsbmFtZSIsIE5VTEws CiAJCQkJCQkJICAicGdfY2F0YWxvZy5wZ190YWJsZV9pc192aXNpYmxlKGMub2lkKSIpOwpAQCAt MjI1Niw2ICsyMjU3LDEwIEBAIG1ha2VUYWJsZURhdGFJbmZvKER1bXBPcHRpb25zICpkb3B0LCBU YWJsZUluZm8gKnRiaW5mbywgYm9vbCBvaWRzKQogCQlkb3B0LT5ub191bmxvZ2dlZF90YWJsZV9k YXRhKQogCQlyZXR1cm47CiAKKwkvKiBEb24ndCBkdW1wIGRhdGEgb2YgdmFyaWFibGVzICovCisJ aWYgKHRiaW5mby0+cmVsa2luZCA9PSBSRUxLSU5EX1ZBUklBQkxFKQorCQlyZXR1cm47CisKIAkv KiBDaGVjayB0aGF0IHRoZSBkYXRhIGlzIG5vdCBleHBsaWNpdGx5IGV4Y2x1ZGVkICovCiAJaWYg KHNpbXBsZV9vaWRfbGlzdF9tZW1iZXIoJnRhYmxlZGF0YV9leGNsdWRlX29pZHMsCiAJCQkJCQkJ ICAgdGJpbmZvLT5kb2JqLmNhdElkLm9pZCkpCkBAIC0yNDc3LDkgKzI0ODIsMTAgQEAgZ3Vlc3ND b25zdHJhaW50SW5oZXJpdGFuY2UoVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQog CQlUYWJsZUluZm8gKipwYXJlbnRzOwogCQlUYWJsZUluZm8gICpwYXJlbnQ7CiAKLQkJLyogU2Vx dWVuY2VzIGFuZCB2aWV3cyBuZXZlciBoYXZlIHBhcmVudHMgKi8KKwkJLyogU2VxdWVuY2VzLCB2 YXJpYWJsZXMgYW5kIHZpZXdzIG5ldmVyIGhhdmUgcGFyZW50cyAqLwogCQlpZiAodGJpbmZvLT5y ZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0UgfHwKLQkJCXRiaW5mby0+cmVsa2luZCA9PSBSRUxL SU5EX1ZJRVcpCisJCQl0YmluZm8tPnJlbGtpbmQgPT0gUkVMS0lORF9WSUVXIHx8CisJCQl0Ymlu Zm8tPnJlbGtpbmQgPT0gUkVMS0lORF9WQVJJQUJMRSkKIAkJCWNvbnRpbnVlOwogCiAJCS8qIERv bid0IGJvdGhlciBjb21wdXRpbmcgYW55dGhpbmcgZm9yIG5vbi10YXJnZXQgdGFibGVzLCBlaXRo ZXIgKi8KQEAgLTU5ODksNyArNTk5NSw3IEBAIGdldFRhYmxlcyhBcmNoaXZlICpmb3V0LCBpbnQg Km51bVRhYmxlcykKIAkJCQkJCSAgIihjLm9pZCA9IHBpcC5vYmpvaWQgIgogCQkJCQkJICAiQU5E IHBpcC5jbGFzc29pZCA9ICdwZ19jbGFzcyc6OnJlZ2NsYXNzICIKIAkJCQkJCSAgIkFORCBwaXAu b2Jqc3ViaWQgPSAwKSAiCi0JCQkJCQkgICJXSEVSRSBjLnJlbGtpbmQgaW4gKCclYycsICclYycs ICclYycsICclYycsICclYycsICclYycsICclYycpICIKKwkJCQkJCSAgIldIRVJFIGMucmVsa2lu ZCBpbiAoJyVjJywgJyVjJywgJyVjJywgJyVjJywgJyVjJywgJyVjJywgJyVjJywgJyVjJykgIgog CQkJCQkJICAiT1JERVIgQlkgYy5vaWQiLAogCQkJCQkJICBhY2xfc3VicXVlcnktPmRhdGEsCiAJ CQkJCQkgIHJhY2xfc3VicXVlcnktPmRhdGEsCkBAIC02MDA4LDcgKzYwMTQsOCBAQCBnZXRUYWJs ZXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1UYWJsZXMpCiAJCQkJCQkgIFJFTEtJTkRfUkVMQVRJ T04sIFJFTEtJTkRfU0VRVUVOQ0UsCiAJCQkJCQkgIFJFTEtJTkRfVklFVywgUkVMS0lORF9DT01Q T1NJVEVfVFlQRSwKIAkJCQkJCSAgUkVMS0lORF9NQVRWSUVXLCBSRUxLSU5EX0ZPUkVJR05fVEFC TEUsCi0JCQkJCQkgIFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpOworCQkJCQkJICBSRUxLSU5E X1BBUlRJVElPTkVEX1RBQkxFLAorCQkJCQkJICBSRUxLSU5EX1ZBUklBQkxFKTsKIAogCQlkZXN0 cm95UFFFeHBCdWZmZXIoYWNsX3N1YnF1ZXJ5KTsKIAkJZGVzdHJveVBRRXhwQnVmZmVyKHJhY2xf c3VicXVlcnkpOwpAQCAtMTU0MTYsNiArMTU0MjMsMTEgQEAgZHVtcFRhYmxlU2NoZW1hKEFyY2hp dmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJpbmZvKQogCQkJCXNydm5hbWUgPSBOVUxMOwogCQkJCWZ0 b3B0aW9ucyA9IE5VTEw7CiAJCQkJYnJlYWs7CisJCQljYXNlIFJFTEtJTkRfVkFSSUFCTEU6CisJ CQkJcmVsdHlwZW5hbWUgPSAiVkFSSUFCTEUiOworCQkJCXNydm5hbWUgPSBOVUxMOworCQkJCWZ0 b3B0aW9ucyA9IE5VTEw7CisJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCXJlbHR5cGVuYW1l ID0gIlRBQkxFIjsKIAkJCQlzcnZuYW1lID0gTlVMTDsKQEAgLTE1NDM3LDEyICsxNTQ0OSwyOCBA QCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmluZm8pCiAJCQkJ CQkgIHJlbHR5cGVuYW1lLAogCQkJCQkJICBxdWFscmVsbmFtZSk7CiAKKwkJLyoKKwkJICogQmlu YXJ5IHVwZ3JhZGUgb2YgdmFyaWFibGVzIHNob3VsZCB0byBiZSBmaXhlZCB3aXRoIHN1cHBvcnQK KwkJICogY29tcG9zaXRlIHR5cGVzLCBhbmQgc2hvdWxkIGJlIHRlc3RlZCBUb0RvCisJCSAqLwor CQlpZiAodGJpbmZvLT5yZWxraW5kID09IFJFTEtJTkRfVkFSSUFCTEUpCisJCXsKKwkJCQlhcHBl bmRQUUV4cEJ1ZmZlcihxLCAiIEFTIik7CisJCQkJaWYgKHRiaW5mby0+cmVsb2Z0eXBlICE9IE5V TEwpCisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICIgJXMiLAorCQkJCQkJCQkJICB0YmluZm8t PmF0dHR5cG5hbWVzWzBdKTsKKwkJCQlpZiAodGJpbmZvLT5hdHRyZGVmc1swXSAhPSBOVUxMICYm IHRiaW5mby0+YXR0cmRlZnNbMF0tPmFkZWZfZXhwciAhPSBOVUxMKQorCQkJCQlhcHBlbmRQUUV4 cEJ1ZmZlcihxLCAiIERFRkFVTFQgJXMiLAorCQkJCQkJCQkJICB0YmluZm8tPmF0dHJkZWZzWzBd LT5hZGVmX2V4cHIpOworCQl9CisKIAkJLyoKIAkJICogQXR0YWNoIHRvIHR5cGUsIGlmIHJlbG9m dHlwZTsgZXhjZXB0IGluIGNhc2Ugb2YgYSBiaW5hcnkgdXBncmFkZSwKIAkJICogd2UgZHVtcCB0 aGUgdGFibGUgbm9ybWFsbHkgYW5kIGF0dGFjaCBpdCB0byB0aGUgdHlwZSBhZnRlcndhcmQuCiAJ CSAqLwotCQlpZiAodGJpbmZvLT5yZWxvZnR5cGUgJiYgIWRvcHQtPmJpbmFyeV91cGdyYWRlKQot CQkJYXBwZW5kUFFFeHBCdWZmZXIocSwgIiBPRiAlcyIsIHRiaW5mby0+cmVsb2Z0eXBlKTsKKwkJ ZWxzZSBpZiAodGJpbmZvLT5yZWxvZnR5cGUgJiYgIWRvcHQtPmJpbmFyeV91cGdyYWRlKQorCQkJ YXBwZW5kUFFFeHBCdWZmZXIocSwgIiBPRiAlcyIsCisJCQkJCQkJICB0YmluZm8tPnJlbG9mdHlw ZSk7CiAKIAkJLyoKIAkJICogSWYgdGhlIHRhYmxlIGlzIGEgcGFydGl0aW9uLCBkdW1wIGl0IGFz IHN1Y2g7IGV4Y2VwdCBpbiB0aGUgY2FzZSBvZgpAQCAtMTU0NjUsNyArMTU0OTMsOCBAQCBkdW1w VGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmluZm8pCiAJCQkJCQkJICBm bXRRdWFsaWZpZWREdW1wYWJsZShwYXJlbnRSZWwpKTsKIAkJfQogCi0JCWlmICh0YmluZm8tPnJl bGtpbmQgIT0gUkVMS0lORF9NQVRWSUVXKQorCQlpZiAodGJpbmZvLT5yZWxraW5kICE9IFJFTEtJ TkRfTUFUVklFVyAmJgorCQkJISh0YmluZm8tPnJlbGtpbmQgPT0gUkVMS0lORF9WQVJJQUJMRSAm JiB0YmluZm8tPnJlbG9mdHlwZSAhPSBOVUxMKSkKIAkJewogCQkJLyogRHVtcCB0aGUgYXR0cmli dXRlcyAqLwogCQkJYWN0dWFsX2F0dHMgPSAwOwpAQCAtMTU1OTEsNyArMTU2MjAsOCBAQCBkdW1w VGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmluZm8pCiAJCQkJICogV2Ug bXVzdCBoYXZlIGEgcGFyZW50aGVzaXplZCBhdHRyaWJ1dGUgbGlzdCwgZXZlbiB0aG91Z2gKIAkJ CQkgKiBlbXB0eSwgd2hlbiBub3QgdXNpbmcgdGhlIE9GIFRZUEUgb3IgUEFSVElUSU9OIE9GIHN5 bnRheC4KIAkJCQkgKi8KLQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxLCAiIChcbikiKTsKKwkJ CQlpZiAodGJpbmZvLT5yZWxraW5kICE9IFJFTEtJTkRfVkFSSUFCTEUpCisJCQkJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHEsICIgKFxuKSIpOwogCQkJfQogCiAJCQlpZiAodGJpbmZvLT5pc3BhcnRp dGlvbiAmJiAhZG9wdC0+YmluYXJ5X3VwZ3JhZGUpCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCBlOTZjNjYyYjFl Li43OGViODc4Y2ZjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCisrKyBi L3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAgLTg0LDcgKzg0LDcgQEAgdHlwZWRlZiBlbnVt CiAJRE9fUE9MSUNZLAogCURPX1BVQkxJQ0FUSU9OLAogCURPX1BVQkxJQ0FUSU9OX1JFTCwKLQlE T19TVUJTQ1JJUFRJT04KKwlET19TVUJTQ1JJUFRJT04sCiB9IER1bXBhYmxlT2JqZWN0VHlwZTsK IAogLyogY29tcG9uZW50IHR5cGVzIG9mIGFuIG9iamVjdCB3aGljaCBjYW4gYmUgc2VsZWN0ZWQg Zm9yIGR1bXBpbmcgKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1w LnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKaW5kZXggODFjZDY1ZWU4ZC4u ZGRmNzhjYzlkMiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwK KysrIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKQEAgLTIyODcsNiArMjI4Nyw3 NSBAQCBteSAldGVzdHMgPSAoCiAJCSAgeyAlZnVsbF9ydW5zLCAlZHVtcF90ZXN0X3NjaGVtYV9y dW5zLCBzZWN0aW9uX3ByZV9kYXRhID0+IDEsIH0sCiAJCXVubGlrZSA9PiB7IGV4Y2x1ZGVfZHVt cF90ZXN0X3NjaGVtYSA9PiAxLCB9LCB9LAogCisJJ0NSRUFURSBWQVJJQUJMRSB0ZXN0X3Zhcmlh YmxlJyA9PiB7CisJCWFsbF9ydW5zICAgICA9PiAxLAorCQljYXRjaF9hbGwgICAgPT4gJ0NSRUFU RSAuLi4gY29tbWFuZHMnLAorCQljcmVhdGVfb3JkZXIgPT4gNjEsCisJCWNyZWF0ZV9zcWwgICA9 PiAnQ1JFQVRFIFZBUklBQkxFIGR1bXBfdGVzdC52YXJpYWJsZSBBUyBpbnRlZ2VyOycsCisJCXJl Z2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBWQVJJQUJMRSBkdW1wX3Rlc3QudmFyaWFibGUgQVMg aW50ZWdlcjtcRS94bSwKKwkJbGlrZSA9PiB7CisJCQliaW5hcnlfdXBncmFkZSAgICAgICAgICA9 PiAxLAorCQkJY2xlYW4gICAgICAgICAgICAgICAgICAgPT4gMSwKKwkJCWNsZWFuX2lmX2V4aXN0 cyAgICAgICAgID0+IDEsCisJCQljcmVhdGVkYiAgICAgICAgICAgICAgICA9PiAxLAorCQkJZGVm YXVsdHMgICAgICAgICAgICAgICAgPT4gMSwKKwkJCWV4Y2x1ZGVfdGVzdF90YWJsZSAgICAgID0+ IDEsCisJCQlleGNsdWRlX3Rlc3RfdGFibGVfZGF0YSA9PiAxLAorCQkJbm9fYmxvYnMgICAgICAg ICAgICAgICAgPT4gMSwKKwkJCW5vX3ByaXZzICAgICAgICAgICAgICAgID0+IDEsCisJCQlub19v d25lciAgICAgICAgICAgICAgICA9PiAxLAorCQkJb25seV9kdW1wX3Rlc3Rfc2NoZW1hICAgPT4g MSwKKwkJCXBnX2R1bXBhbGxfZGJwcml2cyAgICAgID0+IDEsCisJCQlzY2hlbWFfb25seSAgICAg ICAgICAgICA9PiAxLAorCQkJc2VjdGlvbl9wcmVfZGF0YSAgICAgICAgPT4gMSwKKwkJCXRlc3Rf c2NoZW1hX3BsdXNfYmxvYnMgID0+IDEsCisJCQl3aXRoX29pZHMgICAgICAgICAgICAgICA9PiAx LCB9LAorCQl1bmxpa2UgPT4geworCQkJZXhjbHVkZV9kdW1wX3Rlc3Rfc2NoZW1hID0+IDEsCisJ CQlvbmx5X2R1bXBfdGVzdF90YWJsZSAgICAgPT4gMSwKKwkJCXBnX2R1bXBhbGxfZ2xvYmFscyAg ICAgICA9PiAxLAorCQkJcGdfZHVtcGFsbF9nbG9iYWxzX2NsZWFuID0+IDEsCisJCQlyb2xlICAg ICAgICAgICAgICAgICAgICAgPT4gMSwKKwkJCXNlY3Rpb25fcG9zdF9kYXRhICAgICAgICA9PiAx LCB9LCB9LAorCisJJ0NSRUFURSBWQVJJQUJMRSB0ZXN0X3ZhcmlhYmxlIHdpdGggZmllbGQgbGlz dCcgPT4geworCQlhbGxfcnVucyAgICAgPT4gMSwKKwkJY2F0Y2hfYWxsICAgID0+ICdDUkVBVEUg Li4uIGNvbW1hbmRzJywKKwkJY3JlYXRlX29yZGVyID0+IDYxLAorCQljcmVhdGVfc3FsICAgPT4g J0NSRUFURSBWQVJJQUJMRSBkdW1wX3Rlc3QudmFyaWFibGUxIEFTIChhIGludCwgYiBudW1lcmlj KDEwLDIpKTsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgVkFSSUFCTEUgZHVtcF90 ZXN0LnZhcmlhYmxlMSBBUyAoXEUKKwkJCVxuXHMrXFFhIGludGVnZXIsXEUKKwkJCVxuXHMrXFFi IG51bWVyaWMoMTAsMilcRQorCQkJXG5cKTsKKwkJCS94bSwKKwkJbGlrZSA9PiB7CisJCQliaW5h cnlfdXBncmFkZSAgICAgICAgICA9PiAxLAorCQkJY2xlYW4gICAgICAgICAgICAgICAgICAgPT4g MSwKKwkJCWNsZWFuX2lmX2V4aXN0cyAgICAgICAgID0+IDEsCisJCQljcmVhdGVkYiAgICAgICAg ICAgICAgICA9PiAxLAorCQkJZGVmYXVsdHMgICAgICAgICAgICAgICAgPT4gMSwKKwkJCWV4Y2x1 ZGVfdGVzdF90YWJsZSAgICAgID0+IDEsCisJCQlleGNsdWRlX3Rlc3RfdGFibGVfZGF0YSA9PiAx LAorCQkJbm9fYmxvYnMgICAgICAgICAgICAgICAgPT4gMSwKKwkJCW5vX3ByaXZzICAgICAgICAg ICAgICAgID0+IDEsCisJCQlub19vd25lciAgICAgICAgICAgICAgICA9PiAxLAorCQkJb25seV9k dW1wX3Rlc3Rfc2NoZW1hICAgPT4gMSwKKwkJCXBnX2R1bXBhbGxfZGJwcml2cyAgICAgID0+IDEs CisJCQlzY2hlbWFfb25seSAgICAgICAgICAgICA9PiAxLAorCQkJc2VjdGlvbl9wcmVfZGF0YSAg ICAgICAgPT4gMSwKKwkJCXRlc3Rfc2NoZW1hX3BsdXNfYmxvYnMgID0+IDEsCisJCQl3aXRoX29p ZHMgICAgICAgICAgICAgICA9PiAxLCB9LAorCQl1bmxpa2UgPT4geworCQkJZXhjbHVkZV9kdW1w X3Rlc3Rfc2NoZW1hID0+IDEsCisJCQlvbmx5X2R1bXBfdGVzdF90YWJsZSAgICAgPT4gMSwKKwkJ CXBnX2R1bXBhbGxfZ2xvYmFscyAgICAgICA9PiAxLAorCQkJcGdfZHVtcGFsbF9nbG9iYWxzX2Ns ZWFuID0+IDEsCisJCQlyb2xlICAgICAgICAgICAgICAgICAgICAgPT4gMSwKKwkJCXNlY3Rpb25f cG9zdF9kYXRhICAgICAgICA9PiAxLCB9LCB9LAorCisKIAknQUxURVIgVklFVyB0ZXN0X3ZpZXcg U0VUIERFRkFVTFQnID0+IHsKIAkJY3JlYXRlX29yZGVyID0+IDYyLAogCQljcmVhdGVfc3FsID0+ CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvY29tbWFuZC5jIGIvc3JjL2Jpbi9wc3FsL2NvbW1h bmQuYwppbmRleCA0Yzg1ZjQzZjA5Li42MzQxMWE1ZmE0IDEwMDY0NAotLS0gYS9zcmMvYmluL3Bz cWwvY29tbWFuZC5jCisrKyBiL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKQEAgLTc5NCw2ICs3OTQs NyBAQCBleGVjX2NvbW1hbmRfZChQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZl X2JyYW5jaCwgY29uc3QgY2hhciAqY21kKQogCQkJY2FzZSAnaSc6CiAJCQljYXNlICdzJzoKIAkJ CWNhc2UgJ0UnOgorCQkJY2FzZSAnVic6CiAJCQkJc3VjY2VzcyA9IGxpc3RUYWJsZXMoJmNtZFsx XSwgcGF0dGVybiwgc2hvd192ZXJib3NlLCBzaG93X3N5c3RlbSk7CiAJCQkJYnJlYWs7CiAJCQlj YXNlICdyJzoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmMKaW5kZXggNDEwMTMxZTVjNy4uYjE5M2QzY2NmOCAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAg LTE4MjgsNiArMTgyOCwxMCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpz Y2hlbWFuYW1lLAogCQkJcHJpbnRmUFFFeHBCdWZmZXIoJnRpdGxlLCBfKCJGb3JlaWduIHRhYmxl IFwiJXMuJXNcIiIpLAogCQkJCQkJCSAgc2NoZW1hbmFtZSwgcmVsYXRpb25uYW1lKTsKIAkJCWJy ZWFrOworCQljYXNlIFJFTEtJTkRfVkFSSUFCTEU6CisJCQlwcmludGZQUUV4cEJ1ZmZlcigmdGl0 bGUsIF8oInNjaGVtYSB2YXJpYWJsZSBcIiVzLiVzXCIiKSwKKwkJCQkJCQkgIHNjaGVtYW5hbWUs IHJlbGF0aW9ubmFtZSk7CisJCQlicmVhazsKIAkJY2FzZSBSRUxLSU5EX1BBUlRJVElPTkVEX1RB QkxFOgogCQkJaWYgKHRhYmxlaW5mby5yZWxwZXJzaXN0ZW5jZSA9PSAndScpCiAJCQkJcHJpbnRm UFFFeHBCdWZmZXIoJnRpdGxlLCBfKCJVbmxvZ2dlZCB0YWJsZSBcIiVzLiVzXCIiKSwKQEAgLTM0 MDEsNiArMzQwNSw3IEBAIGxpc3REYlJvbGVTZXR0aW5ncyhjb25zdCBjaGFyICpwYXR0ZXJuLCBj b25zdCBjaGFyICpwYXR0ZXJuMikKICAqIG0gLSBtYXRlcmlhbGl6ZWQgdmlld3MKICAqIHMgLSBz ZXF1ZW5jZXMKICAqIEUgLSBmb3JlaWduIHRhYmxlIChOb3RlOiBkaWZmZXJlbnQgZnJvbSAnZics IHRoZSByZWxraW5kIHZhbHVlKQorICogViAtIHNjaGVtYSB2YXJpYWJsZQogICogKGFueSBvcmRl ciBvZiB0aGUgYWJvdmUgaXMgZmluZSkKICAqLwogYm9vbApAQCAtMzQxMiw2ICszNDE3LDcgQEAg bGlzdFRhYmxlcyhjb25zdCBjaGFyICp0YWJ0eXBlcywgY29uc3QgY2hhciAqcGF0dGVybiwgYm9v bCB2ZXJib3NlLCBib29sIHNob3dTeXMKIAlib29sCQlzaG93TWF0Vmlld3MgPSBzdHJjaHIodGFi dHlwZXMsICdtJykgIT0gTlVMTDsKIAlib29sCQlzaG93U2VxID0gc3RyY2hyKHRhYnR5cGVzLCAn cycpICE9IE5VTEw7CiAJYm9vbAkJc2hvd0ZvcmVpZ24gPSBzdHJjaHIodGFidHlwZXMsICdFJykg IT0gTlVMTDsKKwlib29sCQlzaG93VmFyaWFibGVzID0gc3RyY2hyKHRhYnR5cGVzLCAnVicpICE9 IE5VTEw7CiAKIAlQUUV4cEJ1ZmZlckRhdGEgYnVmOwogCVBHcmVzdWx0ICAgKnJlczsKQEAgLTM0 MTksOCArMzQyNSw4IEBAIGxpc3RUYWJsZXMoY29uc3QgY2hhciAqdGFidHlwZXMsIGNvbnN0IGNo YXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lzCiAJc3RhdGljIGNvbnN0IGJv b2wgdHJhbnNsYXRlX2NvbHVtbnNbXSA9IHtmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxz ZSwgZmFsc2UsIGZhbHNlfTsKIAogCS8qIElmIHRhYnR5cGVzIGlzIGVtcHR5LCB3ZSBkZWZhdWx0 IHRvIFxkdHZtc0UgKGJ1dCBzZWUgYWxzbyBjb21tYW5kLmMpICovCi0JaWYgKCEoc2hvd1RhYmxl cyB8fCBzaG93SW5kZXhlcyB8fCBzaG93Vmlld3MgfHwgc2hvd01hdFZpZXdzIHx8IHNob3dTZXEg fHwgc2hvd0ZvcmVpZ24pKQotCQlzaG93VGFibGVzID0gc2hvd1ZpZXdzID0gc2hvd01hdFZpZXdz ID0gc2hvd1NlcSA9IHNob3dGb3JlaWduID0gdHJ1ZTsKKwlpZiAoIShzaG93VGFibGVzIHx8IHNo b3dJbmRleGVzIHx8IHNob3dWaWV3cyB8fCBzaG93TWF0Vmlld3MgfHwgc2hvd1NlcSB8fCBzaG93 Rm9yZWlnbiB8fCBzaG93VmFyaWFibGVzKSkKKwkJc2hvd1RhYmxlcyA9IHNob3dWaWV3cyA9IHNo b3dNYXRWaWV3cyA9IHNob3dTZXEgPSBzaG93Rm9yZWlnbiA9IHNob3dWYXJpYWJsZXMgPSB0cnVl OwogCiAJaW5pdFBRRXhwQnVmZmVyKCZidWYpOwogCkBAIC0zNDQxLDYgKzM0NDcsNyBAQCBsaXN0 VGFibGVzKGNvbnN0IGNoYXIgKnRhYnR5cGVzLCBjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZl cmJvc2UsIGJvb2wgc2hvd1N5cwogCQkJCQkgICIgV0hFTiAiIENwcEFzU3RyaW5nMihSRUxLSU5E X0ZPUkVJR05fVEFCTEUpICIgVEhFTiAnJXMnIgogCQkJCQkgICIgV0hFTiAiIENwcEFzU3RyaW5n MihSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKSAiIFRIRU4gJyVzJyIKIAkJCQkJICAiIFdIRU4g IiBDcHBBc1N0cmluZzIoUkVMS0lORF9QQVJUSVRJT05FRF9JTkRFWCkgIiBUSEVOICclcyciCisJ CQkJCSAgIiBXSEVOICIgQ3BwQXNTdHJpbmcyKFJFTEtJTkRfVkFSSUFCTEUpICIgVEhFTiAnJXMn IgogCQkJCQkgICIgRU5EIGFzIFwiJXNcIixcbiIKIAkJCQkJICAiICBwZ19jYXRhbG9nLnBnX2dl dF91c2VyYnlpZChjLnJlbG93bmVyKSBhcyBcIiVzXCIiLAogCQkJCQkgIGdldHRleHRfbm9vcCgi U2NoZW1hIiksCkBAIC0zNDU0LDYgKzM0NjEsNyBAQCBsaXN0VGFibGVzKGNvbnN0IGNoYXIgKnRh YnR5cGVzLCBjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UsIGJvb2wgc2hvd1N5cwog CQkJCQkgIGdldHRleHRfbm9vcCgiZm9yZWlnbiB0YWJsZSIpLAogCQkJCQkgIGdldHRleHRfbm9v cCgidGFibGUiKSwJLyogcGFydGl0aW9uZWQgdGFibGUgKi8KIAkJCQkJICBnZXR0ZXh0X25vb3Ao ImluZGV4IiksCS8qIHBhcnRpdGlvbmVkIGluZGV4ICovCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJz Y2hlbWEgdmFyaWFibGUiKSwKIAkJCQkJICBnZXR0ZXh0X25vb3AoIlR5cGUiKSwKIAkJCQkJICBn ZXR0ZXh0X25vb3AoIk93bmVyIikpOwogCkBAIC0zNTA3LDYgKzM1MTUsOCBAQCBsaXN0VGFibGVz KGNvbnN0IGNoYXIgKnRhYnR5cGVzLCBjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2Us IGJvb2wgc2hvd1N5cwogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiJ3MnLCIpOyAvKiB3 YXMgUkVMS0lORF9TUEVDSUFMICovCiAJaWYgKHNob3dGb3JlaWduKQogCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cigmYnVmLCBDcHBBc1N0cmluZzIoUkVMS0lORF9GT1JFSUdOX1RBQkxFKSAiLCIpOwor CWlmIChzaG93VmFyaWFibGVzKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCBDcHBBc1N0 cmluZzIoUkVMS0lORF9WQVJJQUJMRSkgIiwiKTsKIAogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZi dWYsICInJyIpOwkvKiBkdW1teSAqLwogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICIpXG4i KTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5oIGIvc3JjL2Jpbi9wc3FsL2Rl c2NyaWJlLmgKaW5kZXggYTRjYzVlZmFlMC4uYzVmMTA3ZDgxNCAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wc3FsL2Rlc2NyaWJlLmgKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmgKQEAgLTYwLDcg KzYwLDcgQEAgZXh0ZXJuIGJvb2wgbGlzdFRTVGVtcGxhdGVzKGNvbnN0IGNoYXIgKnBhdHRlcm4s IGJvb2wgdmVyYm9zZSk7CiAvKiBcbCAqLwogZXh0ZXJuIGJvb2wgbGlzdEFsbERicyhjb25zdCBj aGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpOwogCi0vKiBcZHQsIFxkaSwgXGRzLCBcZFMsIGV0 Yy4gKi8KKy8qIFxkdCwgXGRpLCBcZHMsIFxkUywgXGR2YXIgZXRjLiAqLwogZXh0ZXJuIGJvb2wg bGlzdFRhYmxlcyhjb25zdCBjaGFyICp0YWJ0eXBlcywgY29uc3QgY2hhciAqcGF0dGVybiwgYm9v bCB2ZXJib3NlLCBib29sIHNob3dTeXN0ZW0pOwogCiAvKiBcZEQgKi8KZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcHNxbC9oZWxwLmMgYi9zcmMvYmluL3BzcWwvaGVscC5jCmluZGV4IDcwMmU3NDJhZjQu LjJkYTUwZjcyOTAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9oZWxwLmMKKysrIGIvc3JjL2Jp bi9wc3FsL2hlbHAuYwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHNsYXNoVXNhZ2UodW5zaWduZWQgc2hv cnQgaW50IHBhZ2VyKQogCSAqIFVzZSAicHNxbCAtLWhlbHA9Y29tbWFuZHMgfCB3YyIgdG8gY291 bnQgY29ycmVjdGx5LiAgSXQncyBva2F5IHRvIGNvdW50CiAJICogdGhlIFVTRV9SRUFETElORSBs aW5lIGV2ZW4gaW4gYnVpbGRzIHdpdGhvdXQgdGhhdC4KIAkgKi8KLQlvdXRwdXQgPSBQYWdlT3V0 cHV0KDEyNSwgcGFnZXIgPyAmKHBzZXQucG9wdC50b3B0KSA6IE5VTEwpOworCW91dHB1dCA9IFBh Z2VPdXRwdXQoMTI2LCBwYWdlciA/ICYocHNldC5wb3B0LnRvcHQpIDogTlVMTCk7CiAKIAlmcHJp bnRmKG91dHB1dCwgXygiR2VuZXJhbFxuIikpOwogCWZwcmludGYob3V0cHV0LCBfKCIgIFxcY29w eXJpZ2h0ICAgICAgICAgICAgIHNob3cgUG9zdGdyZVNRTCB1c2FnZSBhbmQgZGlzdHJpYnV0aW9u IHRlcm1zXG4iKSk7CkBAIC0yNTcsNiArMjU3LDcgQEAgc2xhc2hVc2FnZSh1bnNpZ25lZCBzaG9y dCBpbnQgcGFnZXIpCiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkVFtTK10gW1BBVFRFUk5dICAg ICAgbGlzdCBkYXRhIHR5cGVzXG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkdVtTK10g W1BBVFRFUk5dICAgICAgbGlzdCByb2xlc1xuIikpOwogCWZwcmludGYob3V0cHV0LCBfKCIgIFxc ZHZbUytdIFtQQVRURVJOXSAgICAgIGxpc3Qgdmlld3NcbiIpKTsKKwlmcHJpbnRmKG91dHB1dCwg XygiICBcXGRWW1MrXSBbUEFUVEVSTl0gICAgICBsaXN0IHNjaGVtYSB2YXJpYWJsZXNcbiIpKTsK IAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGR4WytdICBbUEFUVEVSTl0gICAgICBsaXN0IGV4dGVu c2lvbnNcbiIpKTsKIAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGR5ICAgICBbUEFUVEVSTl0gICAg ICBsaXN0IGV2ZW50IHRyaWdnZXJzXG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxsWytd ICAgW1BBVFRFUk5dICAgICAgbGlzdCBkYXRhYmFzZXNcbiIpKTsKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcHNxbC90YWItY29tcGxldGUuYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYwppbmRl eCBiNDMxZWZjOTgzLi5hYjE0OTIzMzkyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCkBAIC04MDUsNiArODA1 LDIyIEBAIHN0YXRpYyBjb25zdCBTY2hlbWFRdWVyeSBRdWVyeV9mb3JfbGlzdF9vZl9zdGF0aXN0 aWNzID0gewogCU5VTEwKIH07CiAKK3N0YXRpYyBjb25zdCBTY2hlbWFRdWVyeSBRdWVyeV9mb3Jf bGlzdF9vZl92YXJpYWJsZXMgPSB7CisJLyogbWluX3NlcnZlcl92ZXJzaW9uICovCisJMCwKKwkv KiBjYXRuYW1lICovCisJInBnX2NhdGFsb2cucGdfY2xhc3MgYyIsCisJLyogc2VsY29uZGl0aW9u ICovCisJImMucmVsa2luZCBJTiAoJ1YnKSIsCisJLyogdmlzY29uZGl0aW9uICovCisJInBnX2Nh dGFsb2cucGdfdGFibGVfaXNfdmlzaWJsZShjLm9pZCkiLAorCS8qIG5hbWVzcGFjZSAqLworCSJj LnJlbG5hbWVzcGFjZSIsCisJLyogcmVzdWx0ICovCisJInBnX2NhdGFsb2cucXVvdGVfaWRlbnQo Yy5yZWxuYW1lKSIsCisJLyogcXVhbHJlc3VsdCAqLworCU5VTEwKK307CiAKIC8qCiAgKiBRdWVy aWVzIHRvIGdldCBsaXN0cyBvZiBuYW1lcyBvZiB2YXJpb3VzIGtpbmRzIG9mIHRoaW5ncywgcG9z c2libHkKQEAgLTEyNDksNiArMTI2NSw3IEBAIHN0YXRpYyBjb25zdCBwZ3NxbF90aGluZ190IHdv cmRzX2FmdGVyX2NyZWF0ZVtdID0gewogCQkJCQkJCQkJCQkJCQkJCQkgKiBUQUJMRSAuLi4gKi8K IAl7IlVTRVIiLCBRdWVyeV9mb3JfbGlzdF9vZl9yb2xlcyAiIFVOSU9OIFNFTEVDVCAnTUFQUElO RyBGT1InIn0sCiAJeyJVU0VSIE1BUFBJTkcgRk9SIiwgTlVMTCwgTlVMTCwgTlVMTH0sCisJeyJW QVJJQUJMRSIsIE5VTEwsICZRdWVyeV9mb3JfbGlzdF9vZl92YXJpYWJsZXN9LAogCXsiVklFVyIs IE5VTEwsIE5VTEwsICZRdWVyeV9mb3JfbGlzdF9vZl92aWV3c30sCiAJe05VTEx9CQkJCQkJLyog ZW5kIG9mIGxpc3QgKi8KIH07CkBAIC0xNjA0LDcgKzE2MjEsNyBAQCBwc3FsX2NvbXBsZXRpb24o Y29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkiQUJPUlQiLCAiQUxURVIi LCAiQU5BTFlaRSIsICJCRUdJTiIsICJDQUxMIiwgIkNIRUNLUE9JTlQiLCAiQ0xPU0UiLCAiQ0xV U1RFUiIsCiAJCSJDT01NRU5UIiwgIkNPTU1JVCIsICJDT1BZIiwgIkNSRUFURSIsICJERUFMTE9D QVRFIiwgIkRFQ0xBUkUiLAogCQkiREVMRVRFIEZST00iLCAiRElTQ0FSRCIsICJETyIsICJEUk9Q IiwgIkVORCIsICJFWEVDVVRFIiwgIkVYUExBSU4iLAotCQkiRkVUQ0giLCAiR1JBTlQiLCAiSU1Q T1JUIiwgIklOU0VSVCIsICJMSVNURU4iLCAiTE9BRCIsICJMT0NLIiwKKwkJIkZFVENIIiwgIkdS QU5UIiwgIklNUE9SVCIsICJJTlNFUlQiLCAiTEVUIiwgIkxJU1RFTiIsICJMT0FEIiwgIkxPQ0si LAogCQkiTU9WRSIsICJOT1RJRlkiLCAiUFJFUEFSRSIsCiAJCSJSRUFTU0lHTiIsICJSRUZSRVNI IE1BVEVSSUFMSVpFRCBWSUVXIiwgIlJFSU5ERVgiLCAiUkVMRUFTRSIsCiAJCSJSRVNFVCIsICJS RVZPS0UiLCAiUk9MTEJBQ0siLApAQCAtMTYyMyw3ICsxNjQwLDcgQEAgcHNxbF9jb21wbGV0aW9u KGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJIlxcZEYiLCAiXFxkRmQi LCAiXFxkRnAiLCAiXFxkRnQiLCAiXFxkZyIsICJcXGRpIiwgIlxcZGwiLCAiXFxkTCIsCiAJCSJc XGRtIiwgIlxcZG4iLCAiXFxkbyIsICJcXGRPIiwgIlxcZHAiLAogCQkiXFxkcmRzIiwgIlxcZFJz IiwgIlxcZFJwIiwgIlxcZHMiLCAiXFxkUyIsCi0JCSJcXGR0IiwgIlxcZFQiLCAiXFxkdiIsICJc XGR1IiwgIlxcZHgiLCAiXFxkeSIsCisJCSJcXGR0IiwgIlxcZFQiLCAiXFxkdiIsICJcXGR1Iiwg IlxcZHgiLCAiXFxkeSIsICJcXGR2YXIiLAogCQkiXFxlIiwgIlxcZWNobyIsICJcXGVmIiwgIlxc ZWxpZiIsICJcXGVsc2UiLCAiXFxlbmNvZGluZyIsCiAJCSJcXGVuZGlmIiwgIlxcZXJydmVyYm9z ZSIsICJcXGV2IiwKIAkJIlxcZiIsCkBAIC0yODM1LDYgKzI4NTIsMTQgQEAgcHNxbF9jb21wbGV0 aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAllbHNlIGlmIChNYXRj aGVzNCgiQ1JFQVRFIiwgIlJPTEV8VVNFUnxHUk9VUCIsIE1hdGNoQW55LCAiSU4iKSkKIAkJQ09N UExFVEVfV0lUSF9MSVNUMigiR1JPVVAiLCAiUk9MRSIpOwogCisvKiBDUkVBVEUgVkFSSUFCTEUg LS0tIGlzIGFsbG93ZWQgaW5zaWRlIENSRUFURSBTQ0hFTUEsIHNvIHVzZSBUYWlsTWF0Y2hlcyAq LworCS8qIENvbXBsZXRlIENSRUFURSBWQVJJQUJMRSA8bmFtZT4gd2l0aCBBUyAqLworCWVsc2Ug aWYgKFRhaWxNYXRjaGVzMygiQ1JFQVRFIiwgIlZBUklBQkxFIiwgTWF0Y2hBbnkpKQorCQlDT01Q TEVURV9XSVRIX0NPTlNUKCJBUyIpOworCS8qIENvbXBsZXRlIENSRUFURSBWQVJJQUJMRSA8bmFt ZT4gd2l0aCBBUyB0eXBlcyovCisJZWxzZSBpZiAoVGFpbE1hdGNoZXM0KCJDUkVBVEUiLCAiVkFS SUFCTEUiLCBNYXRjaEFueSwgIkFTIikpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1 ZXJ5X2Zvcl9saXN0X29mX2RhdGF0eXBlcywgTlVMTCk7CisKIC8qIENSRUFURSBWSUVXIC0tLSBp cyBhbGxvd2VkIGluc2lkZSBDUkVBVEUgU0NIRU1BLCBzbyB1c2UgVGFpbE1hdGNoZXMgKi8KIAkv KiBDb21wbGV0ZSBDUkVBVEUgVklFVyA8bmFtZT4gd2l0aCBBUyAqLwogCWVsc2UgaWYgKFRhaWxN YXRjaGVzMygiQ1JFQVRFIiwgIlZJRVciLCBNYXRjaEFueSkpCkBAIC0yOTkwLDYgKzMwMTUsMTIg QEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkK IAllbHNlIGlmIChNYXRjaGVzNSgiRFJPUCIsICJSVUxFIiwgTWF0Y2hBbnksICJPTiIsIE1hdGNo QW55KSkKIAkJQ09NUExFVEVfV0lUSF9MSVNUMigiQ0FTQ0FERSIsICJSRVNUUklDVCIpOwogCisJ LyogRFJPUCBWQVJJQUJMRSAqLworCWVsc2UgaWYgKE1hdGNoZXMyKCJEUk9QIiwgIlZBUklBQkxF IikpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3Zhcmlh YmxlcywgTlVMTCk7CisJZWxzZSBpZiAoTWF0Y2hlczMoIkRST1AiLCAiVkFSSUFCTEUiLCBNYXRj aEFueSkpCisJCUNPTVBMRVRFX1dJVEhfTElTVDIoIkNBU0NBREUiLCAiUkVTVFJJQ1QiKTsKKwog LyogRVhFQ1VURSAqLwogCWVsc2UgaWYgKE1hdGNoZXMxKCJFWEVDVVRFIikpCiAJCUNPTVBMRVRF X1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfcHJlcGFyZWRfc3RhdGVtZW50cyk7CkBAIC0z MDAwLDE0ICszMDMxLDE0IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQg c3RhcnQsIGludCBlbmQpCiAJICogQ29tcGxldGUgRVhQTEFJTiBbQU5BTFlaRV0gW1ZFUkJPU0Vd IHdpdGggbGlzdCBvZiBFWFBMQUlOLWFibGUgY29tbWFuZHMKIAkgKi8KIAllbHNlIGlmIChNYXRj aGVzMSgiRVhQTEFJTiIpKQotCQlDT01QTEVURV9XSVRIX0xJU1Q3KCJTRUxFQ1QiLCAiSU5TRVJU IiwgIkRFTEVURSIsICJVUERBVEUiLCAiREVDTEFSRSIsCi0JCQkJCQkJIkFOQUxZWkUiLCAiVkVS Qk9TRSIpOworCQlDT01QTEVURV9XSVRIX0xJU1Q4KCJTRUxFQ1QiLCAiSU5TRVJUIiwgIkRFTEVU RSIsICJVUERBVEUiLCAiREVDTEFSRSIsCisJCQkJCQkJIkFOQUxZWkUiLCAiVkVSQk9TRSIsICJM RVQiKTsKIAllbHNlIGlmIChNYXRjaGVzMigiRVhQTEFJTiIsICJBTkFMWVpFIikpCi0JCUNPTVBM RVRFX1dJVEhfTElTVDYoIlNFTEVDVCIsICJJTlNFUlQiLCAiREVMRVRFIiwgIlVQREFURSIsICJE RUNMQVJFIiwKLQkJCQkJCQkiVkVSQk9TRSIpOworCQlDT01QTEVURV9XSVRIX0xJU1Q3KCJTRUxF Q1QiLCAiSU5TRVJUIiwgIkRFTEVURSIsICJVUERBVEUiLCAiREVDTEFSRSIsCisJCQkJCQkJIlZF UkJPU0UiLCAiTEVUIik7CiAJZWxzZSBpZiAoTWF0Y2hlczIoIkVYUExBSU4iLCAiVkVSQk9TRSIp IHx8CiAJCQkgTWF0Y2hlczMoIkVYUExBSU4iLCAiQU5BTFlaRSIsICJWRVJCT1NFIikpCi0JCUNP TVBMRVRFX1dJVEhfTElTVDUoIlNFTEVDVCIsICJJTlNFUlQiLCAiREVMRVRFIiwgIlVQREFURSIs ICJERUNMQVJFIik7CisJCUNPTVBMRVRFX1dJVEhfTElTVDYoIlNFTEVDVCIsICJJTlNFUlQiLCAi REVMRVRFIiwgIlVQREFURSIsICJERUNMQVJFIiwgIkxFVCIpOwogCiAvKiBGRVRDSCAmJiBNT1ZF ICovCiAJLyogQ29tcGxldGUgRkVUQ0ggd2l0aCBvbmUgb2YgRk9SV0FSRCwgQkFDS1dBUkQsIFJF TEFUSVZFICovCkBAIC0zMTE2LDYgKzMxNDcsNyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hh ciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1Qg J0FMTCBST1VUSU5FUyBJTiBTQ0hFTUEnIgogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ0FM TCBTRVFVRU5DRVMgSU4gU0NIRU1BJyIKIAkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdBTEwg VEFCTEVTIElOIFNDSEVNQSciCisJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnQUxMIFZBUklB QkxFUyBJTiBTQ0hFTUEnIgogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ0RBVEFCQVNFJyIK IAkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdET01BSU4nIgogCQkJCQkJCQkJICAgIiBVTklP TiBTRUxFQ1QgJ0ZPUkVJR04gREFUQSBXUkFQUEVSJyIKQEAgLTMxMjksMTQgKzMxNjEsMTYgQEAg cHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJ CQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdTRVFVRU5DRSciCiAJCQkJCQkJCQkgICAiIFVOSU9O IFNFTEVDVCAnVEFCTEUnIgogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ1RBQkxFU1BBQ0Un IgotCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ1RZUEUnIik7CisJCQkJCQkJCQkgICAiIFVO SU9OIFNFTEVDVCAnVFlQRSciCisJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnVkFSSUFCTEUn Iik7CiAJfQogCWVsc2UgaWYgKFRhaWxNYXRjaGVzNCgiR1JBTlR8UkVWT0tFIiwgTWF0Y2hBbnks ICJPTiIsICJBTEwiKSkKLQkJQ09NUExFVEVfV0lUSF9MSVNUNSgiRlVOQ1RJT05TIElOIFNDSEVN QSIsCisJCUNPTVBMRVRFX1dJVEhfTElTVDYoIkZVTkNUSU9OUyBJTiBTQ0hFTUEiLAogCQkJCQkJ CSJQUk9DRURVUkVTIElOIFNDSEVNQSIsCiAJCQkJCQkJIlJPVVRJTkVTIElOIFNDSEVNQSIsCiAJ CQkJCQkJIlNFUVVFTkNFUyBJTiBTQ0hFTUEiLAotCQkJCQkJCSJUQUJMRVMgSU4gU0NIRU1BIik7 CisJCQkJCQkJIlRBQkxFUyBJTiBTQ0hFTUEiLAorCQkJCQkJCSJWQVJJQUJMRVMgSU4gU0NIRU1B Iik7CiAJZWxzZSBpZiAoVGFpbE1hdGNoZXM0KCJHUkFOVHxSRVZPS0UiLCBNYXRjaEFueSwgIk9O IiwgIkZPUkVJR04iKSkKIAkJQ09NUExFVEVfV0lUSF9MSVNUMigiREFUQSBXUkFQUEVSIiwgIlNF UlZFUiIpOwogCkBAIC0zMTY2LDYgKzMyMDAsOCBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hh ciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVF UlkoUXVlcnlfZm9yX2xpc3Rfb2Zfc2VxdWVuY2VzLCBOVUxMKTsKIAkJZWxzZSBpZiAoVGFpbE1h dGNoZXMxKCJUQUJMRSIpKQogCQkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9y X2xpc3Rfb2ZfdHN2bWYsIE5VTEwpOworCQllbHNlIGlmIChUYWlsTWF0Y2hlczEoIlZBUklBQkxF IikpCisJCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl92YXJp YWJsZXMsIE5VTEwpOwogCQllbHNlIGlmIChUYWlsTWF0Y2hlczEoIlRBQkxFU1BBQ0UiKSkKIAkJ CUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzcGFjZXMpOwogCQll bHNlIGlmIChUYWlsTWF0Y2hlczEoIlRZUEUiKSkKQEAgLTMzMjIsNyArMzM1OCw3IEBAIHBzcWxf Y29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAKIC8qIFBS RVBBUkUgeHggQVMgKi8KIAllbHNlIGlmIChNYXRjaGVzMygiUFJFUEFSRSIsIE1hdGNoQW55LCAi QVMiKSkKLQkJQ09NUExFVEVfV0lUSF9MSVNUNCgiU0VMRUNUIiwgIlVQREFURSIsICJJTlNFUlQi LCAiREVMRVRFIEZST00iKTsKKwkJQ09NUExFVEVfV0lUSF9MSVNUNSgiU0VMRUNUIiwgIlVQREFU RSIsICJJTlNFUlQiLCAiREVMRVRFIEZST00iLCAiTEVUIik7CiAKIC8qCiAgKiBQUkVQQVJFIFRS QU5TQUNUSU9OIGlzIG1pc3Npbmcgb24gcHVycG9zZS4gSXQncyBpbnRlbmRlZCBmb3IgdHJhbnNh Y3Rpb24KQEAgLTM1NDUsNiArMzU4MSwxNCBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAq dGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCWVsc2UgaWYgKFRhaWxNYXRjaGVzNCgiVVBEQVRF IiwgTWF0Y2hBbnksICJTRVQiLCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJVEhfQ09OU1QoIj0i KTsKIAorLyogTEVUIC0tLSBjYW4gYmUgaW5zaWRlIEVYUExBSU4sIFBSRVBBUkUgZXRjICovCisJ LyogSWYgcHJldi4gd29yZCBpcyBMRVQgc3VnZ2VzdCBhIGxpc3Qgb2YgdmFyaWFibGVzICovCisJ ZWxzZSBpZiAoVGFpbE1hdGNoZXMxKCJMRVQiKSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVF UlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdmFyaWFibGVzLCBOVUxMKTsKKwkvKiBDb21wbGV0ZSBMRVQg PHZhcmlhYmxlPiB3aXRoICI9IiAqLworCWVsc2UgaWYgKFRhaWxNYXRjaGVzMigiTEVUIiwgTWF0 Y2hBbnkpKQorCQlDT01QTEVURV9XSVRIX0NPTlNUKCI9Iik7CisKIC8qIFVTRVIgTUFQUElORyAq LwogCWVsc2UgaWYgKE1hdGNoZXMzKCJBTFRFUnxDUkVBVEV8RFJPUCIsICJVU0VSIiwgIk1BUFBJ TkciKSkKIAkJQ09NUExFVEVfV0lUSF9DT05TVCgiRk9SIik7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX2NsYXNzLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NsYXNzLmgK aW5kZXggZGM2YzQxNWM1OC4uMDRhNTg0OTA1NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19jbGFzcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xhc3MuaApAQCAt MTA0LDYgKzEwNCw3IEBAIHR5cGVkZWYgRm9ybURhdGFfcGdfY2xhc3MgKkZvcm1fcGdfY2xhc3M7 CiAjZGVmaW5lCQkgIFJFTEtJTkRfRk9SRUlHTl9UQUJMRSAgICdmJwkvKiBmb3JlaWduIHRhYmxl ICovCiAjZGVmaW5lCQkgIFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgJ3AnIC8qIHBhcnRpdGlv bmVkIHRhYmxlICovCiAjZGVmaW5lCQkgIFJFTEtJTkRfUEFSVElUSU9ORURfSU5ERVggJ0knIC8q IHBhcnRpdGlvbmVkIGluZGV4ICovCisjZGVmaW5lCQkgIFJFTEtJTkRfVkFSSUFCTEUJCSAgJ1Yn CS8qIHNjaGVtYSB2YXJpYWJsZSAqLwogCiAjZGVmaW5lCQkgIFJFTFBFUlNJU1RFTkNFX1BFUk1B TkVOVAkncCcgLyogcmVndWxhciB0YWJsZSAqLwogI2RlZmluZQkJICBSRUxQRVJTSVNURU5DRV9V TkxPR0dFRAkndScgLyogdW5sb2dnZWQgcGVybWFuZW50IHRhYmxlICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX2RlZmF1bHRfYWNsLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX2RlZmF1bHRfYWNsLmgKaW5kZXggZDA0MTBmNTU4Ni4uNTZkZWVmMWE0NSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19kZWZhdWx0X2FjbC5oCisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfZGVmYXVsdF9hY2wuaApAQCAtNTcsNiArNTcsNyBAQCB0eXBlZGVmIEZvcm1E YXRhX3BnX2RlZmF1bHRfYWNsICpGb3JtX3BnX2RlZmF1bHRfYWNsOwogI2RlZmluZSBERUZBQ0xP QkpfRlVOQ1RJT04JCSdmJyAvKiBmdW5jdGlvbiAqLwogI2RlZmluZSBERUZBQ0xPQkpfVFlQRQkJ CSdUJyAvKiB0eXBlICovCiAjZGVmaW5lIERFRkFDTE9CSl9OQU1FU1BBQ0UJCSduJyAvKiBuYW1l c3BhY2UgKi8KKyNkZWZpbmUgREVGQUNMT0JKX1ZBUklBQkxFCQknVicgLyogdmFyaWFibGUgKi8K IAogI2VuZGlmCQkJCQkJCS8qIEVYUE9TRV9UT19DTElFTlRfQ09ERSAqLwogCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdAppbmRleCA2NmM2YzIyNGE4Li4wOGUzOGM2MTg2IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQKQEAgLTEwMjAyLDQgKzEwMjAyLDE4IEBACiAgIHByb2lzc3RyaWN0ID0+ICdmJywg cHJvcmV0dHlwZSA9PiAnYm9vbCcsIHByb2FyZ3R5cGVzID0+ICdvaWQgaW50NCBpbnQ0IGFueScs CiAgIHByb2FyZ21vZGVzID0+ICd7aSxpLGksdn0nLCBwcm9zcmMgPT4gJ3NhdGlzZmllc19oYXNo X3BhcnRpdGlvbicgfSwKIAorI3NjaGVtYSB2YXJpYWJsZXMgZnVuY3Rpb24gaW50ZXJmYWNlCit7 IG9pZCA9PiAnNjEyMicsIGRlc2NyID0+ICdyZXR1cm5zIHZhbHVlIG9mIHNjaGVtYSB2YXJpYWJs ZScsCisgIHByb25hbWUgPT4gJ2dldF9zY2hlbWFfdmFyaWFibGUnLCBwcm9pc3N0cmljdCA9PiAn ZicsIHByb3JldHR5cGUgPT4gJ2FueWVsZW1lbnQnLAorICBwcm9hcmd0eXBlcyA9PiAncmVnY2xh c3MgYW55ZWxlbWVudCcsIHByb3NyYyA9PiAnZ2V0X3NjaGVtYV92YXJpYWJsZScgfSwKK3sgb2lk ID0+ICc2MTIzJywgZGVzY3IgPT4gJ3NldCB2YWx1ZSBvZiBzY2hlbWEgdmFyaWFibGUnLAorICBw cm9uYW1lID0+ICdzZXRfc2NoZW1hX3ZhcmlhYmxlJywgcHJvaXNzdHJpY3QgPT4gJ2YnLCBwcm9y ZXR0eXBlID0+ICd2b2lkJywKKyAgcHJvYXJndHlwZXMgPT4gJ3JlZ2NsYXNzIGFueWVsZW1lbnQn LCBwcm9zcmMgPT4gJ3NldF9zY2hlbWFfdmFyaWFibGUnIH0sCit7IG9pZCA9PiAnNjEyNCcsIGRl c2NyID0+ICdnZXQgdmFsdWUgb2YgZmllbGQgb2Ygc2NoZW1hIHZhcmlhYmxlIG9mIGNvbXBvc2l0 ZSB0eXBlJywKKyAgcHJvbmFtZSA9PiAnZ2V0X3NjaGVtYV92YXJpYWJsZScsIHByb2lzc3RyaWN0 ID0+ICdmJywgcHJvcmV0dHlwZSA9PiAnYW55ZWxlbWVudCcsCisgIHByb2FyZ3R5cGVzID0+ICdy ZWdjbGFzcyBuYW1lIGFueWVsZW1lbnQnLCBwcm9zcmMgPT4gJ2dldF9zY2hlbWFfdmFyaWFibGVf ZmllbGQnIH0sCit7IG9pZCA9PiAnNjEyNScsIGRlc2NyID0+ICdzZXQgdmFsdWUgb2YgZmllbGQg b2Ygc2NoZW1hIHZhcmlhYmxlIG9mIGNvbXBvc2l0ZSB0eXBlJywKKyAgcHJvbmFtZSA9PiAnc2V0 X3NjaGVtYV92YXJpYWJsZScsIHByb2lzc3RyaWN0ID0+ICdmJywgcHJvcmV0dHlwZSA9PiAndm9p ZCcsCisgIHByb2FyZ3R5cGVzID0+ICdyZWdjbGFzcyBuYW1lIGFueWVsZW1lbnQnLCBwcm9zcmMg PT4gJ3NldF9zY2hlbWFfdmFyaWFibGVfZmllbGQnIH0sCisKIF0KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NvbW1hbmRzL3NjaGVtYXZhci5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2NoZW1h dmFyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZmNkNTE2ZDE5Mgot LS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NjaGVtYXZhci5oCkBAIC0w LDAgKzEsMzkgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHNjaGVtYXZhci5oCisgKgkg IHByb3RvdHlwZXMgZm9yIHNjaGVtYXZhci5jLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAo YykgMTk5Ni0yMDE4LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9y dGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENh bGlmb3JuaWEKKyAqCisgKiBzcmMvaW5jbHVkZS9jb21tYW5kcy9zY2hlbWF2YXIuaAorICoKKyAq LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIFNDSEVNQVZBUl9ICisjZGVmaW5lIFNDSEVN QVZBUl9ICisKKyNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFkZHJlc3MuaCIKKyNpbmNsdWRlICJu b2Rlcy9wYXJzZW5vZGVzLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX25vZGUuaCIKKworZXh0 ZXJuIE9iamVjdEFkZHJlc3MgRGVmaW5lU2NoZW1hVmFyaWFibGUoUGFyc2VTdGF0ZSAqcHN0YXRl LCBDcmVhdGVTY2hlbWFWYXJTdG10ICp2YXIpOworCitleHRlcm4gdm9pZCBSZXNldFNjaGVtYVZh cmlhYmxlc0NhY2hlKHZvaWQpOworCitleHRlcm4gY2hhciAqZ2V0X3NjaGVtYXZhcl9uYW1lKE9p ZCB2YXJpZCk7CisKK2V4dGVybiB2b2lkIFNldFNjaGVtYVZhcmlhYmxlKE9pZCB2YXJpZCwgRGF0 dW0gdmFsdWUsIGJvb2wgaXNOdWxsLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCk7CitleHRlcm4g RGF0dW0gR2V0U2NoZW1hVmFyaWFibGUoT2lkIHZhcmlkLCBib29sICppc051bGwsIE9pZCB0eXBp ZCwgaW50MzIgdHlwbW9kLCAgaW50MTYgdHlwbGVuLCBib29sIHR5cGJ5dmFsKTsKK2V4dGVybiB2 b2lkIFNldFNjaGVtYVZhcmlhYmxlU2VjdXJlKE9pZCB2YXJpZCwgRGF0dW0gdmFsdWUsIGJvb2wg aXNOdWxsLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCk7CitleHRlcm4gRGF0dW0gR2V0U2NoZW1h VmFyaWFibGVTZWN1cmUoT2lkIHZhcmlkLCBib29sICppc051bGwsIE9pZCB0eXBpZCwgaW50MzIg dHlwbW9kLCBpbnQxNiB0eXBsZW4sIGJvb2wgdHlwYnl2YWwpOworCitleHRlcm4gdm9pZCBTZXRT Y2hlbWFWYXJpYWJsZUZpZWxkKE9pZCB2YXJpZCwgY29uc3QgY2hhciAqZmllbGRuYW1lLCBEYXR1 bSB2YWx1ZSwgYm9vbCBpc051bGwsIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kKTsKK2V4dGVybiBE YXR1bSBHZXRTY2hlbWFWYXJpYWJsZUZpZWxkKE9pZCB2YXJpZCwgY29uc3QgY2hhciAqZmllbGRu YW1lLCBib29sICppc051bGwsIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLCBpbnQxNiB0eXBsZW4s IGJvb2wgdHlwYnl2YWwpOworZXh0ZXJuIHZvaWQgU2V0U2NoZW1hVmFyaWFibGVGaWVsZFNlY3Vy ZShPaWQgdmFyaWQsIGNvbnN0IGNoYXIgKmZpZWxkbmFtZSwgRGF0dW0gdmFsdWUsIGJvb2wgaXNO dWxsLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCk7CitleHRlcm4gRGF0dW0gR2V0U2NoZW1hVmFy aWFibGVGaWVsZFNlY3VyZShPaWQgdmFyaWQsIGNvbnN0IGNoYXIgKmZpZWxkbmFtZSwgYm9vbCAq aXNOdWxsLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwgaW50MTYgdHlwbGVuLCBib29sIHR5cGJ5 dmFsKTsKKworZXh0ZXJuIHZvaWQgc2NoZW1hdmFyX2dldF90eXBfdHlwbW9kKE9pZCB2YXJpZCwg T2lkICp0eXAsIGludDMyICp0eXBtb2QpOworZXh0ZXJuIGJvb2wgaXNfc2NoZW1hdmFyKE9pZCB2 YXJpZCwgYm9vbCAqaXNfcm93dHlwZSk7CisKKyNlbmRpZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmggYi9zcmMv aW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCmluZGV4IGY3YjFmNzc2MTYuLjU4ZDI4MmRjOTIg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKKysrIGIvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaApAQCAtMTM4LDYgKzEzOCw3IEBAIHR5cGVkZWYgZW51 bSBFeHByRXZhbE9wCiAJRUVPUF9QQVJBTV9FWEVDLAogCUVFT1BfUEFSQU1fRVhURVJOLAogCUVF T1BfUEFSQU1fQ0FMTEJBQ0ssCisJRUVPUF9QQVJBTV9TQ0hFTUFfVkFSSUFCTEUsCiAKIAkvKiBy ZXR1cm4gQ2FzZVRlc3RFeHByIHZhbHVlICovCiAJRUVPUF9DQVNFX1RFU1RWQUwsCkBAIC0zNDQs MTEgKzM0NSwxNCBAQCB0eXBlZGVmIHN0cnVjdCBFeHByRXZhbFN0ZXAKIAkJCVR1cGxlRGVzYwlh cmdkZXNjOwogCQl9CQkJbnVsbHRlc3Rfcm93OwogCi0JCS8qIGZvciBFRU9QX1BBUkFNX0VYRUMv RVhURVJOICovCisJCS8qIGZvciBFRU9QX1BBUkFNX0VYRUMvRVhURVJOL1ZBUklBQkxFICovCiAJ CXN0cnVjdAogCQl7Ci0JCQlpbnQJCQlwYXJhbWlkOwkvKiBudW1lcmljIElEIGZvciBwYXJhbWV0 ZXIgKi8KLQkJCU9pZAkJCXBhcmFtdHlwZTsJLyogT0lEIG9mIHBhcmFtZXRlcidzIGRhdGF0eXBl ICovCisJCQlpbnQJCQlwYXJhbWlkOwkJLyogbnVtZXJpYyBJRCBmb3IgcGFyYW1ldGVyICovCisJ CQlPaWQJCQlwYXJhbXR5cGU7CQkvKiBPSUQgb2YgcGFyYW1ldGVyJ3MgZGF0YXR5cGUgKi8KKwkJ CWludDMyCQlwYXJhbXR5cG1vZDsJLyogdHlwbW9kIG9mIHBhcmFtIChub3QgdXNlZCB5ZXQpICov CisJCQlpbnQxNgkJcGFyYW10eXBsZW47CS8qIGV4cGVjdGVkIGxlbmd0aCAqLworCQkJYm9vbAkJ cGFyYW10eXBieXZhbDsJLyogaXMgcGFzc2VkIGJ5IHZhbHVlICovCiAJCX0JCQlwYXJhbTsKIAog CQkvKiBmb3IgRUVPUF9QQVJBTV9DQUxMQkFDSyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bm9kZXMvbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgKaW5kZXggYWRiMTU5YTZk YS4uODA2YjU4ZjZjYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaAorKysg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCkBAIC0zNDgsNiArMzQ4LDcgQEAgdHlwZWRlZiBl bnVtIE5vZGVUYWcKIAlUX0NyZWF0ZVRhYmxlQXNTdG10LAogCVRfQ3JlYXRlU2VxU3RtdCwKIAlU X0FsdGVyU2VxU3RtdCwKKwlUX0NyZWF0ZVNjaGVtYVZhclN0bXQsCiAJVF9WYXJpYWJsZVNldFN0 bXQsCiAJVF9WYXJpYWJsZVNob3dTdG10LAogCVRfRGlzY2FyZFN0bXQsCkBAIC00MTksNiArNDIw LDcgQEAgdHlwZWRlZiBlbnVtIE5vZGVUYWcKIAlUX0NyZWF0ZVN0YXRzU3RtdCwKIAlUX0FsdGVy Q29sbGF0aW9uU3RtdCwKIAlUX0NhbGxTdG10LAorCVRfTGV0U3RtdCwKIAogCS8qCiAJICogVEFH UyBGT1IgUEFSU0UgVFJFRSBOT0RFUyAocGFyc2Vub2Rlcy5oKQpAQCAtNjYxLDYgKzY2Myw3IEBA IHR5cGVkZWYgZW51bSBDbWRUeXBlCiAJQ01EX1VQREFURSwJCQkJCS8qIHVwZGF0ZSBzdG10ICov CiAJQ01EX0lOU0VSVCwJCQkJCS8qIGluc2VydCBzdG10ICovCiAJQ01EX0RFTEVURSwKKwlDTURf TEVULAogCUNNRF9VVElMSVRZLAkJCQkvKiBjbWRzIGxpa2UgY3JlYXRlLCBkZXN0cm95LCBjb3B5 LCB2YWN1dW0sCiAJCQkJCQkJCSAqIGV0Yy4gKi8KIAlDTURfTk9USElORwkJCQkJLyogZHVtbXkg Y29tbWFuZCBmb3IgaW5zdGVhZCBub3RoaW5nIHJ1bGVzCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5k ZXggNjM5MGY3ZThjMS4uNDZiYTIyZjEwYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMTUw NSw2ICsxNTA1LDE1IEBAIHR5cGVkZWYgc3RydWN0IFVwZGF0ZVN0bXQKIAlXaXRoQ2xhdXNlICp3 aXRoQ2xhdXNlOwkJLyogV0lUSCBjbGF1c2UgKi8KIH0gVXBkYXRlU3RtdDsKIAordHlwZWRlZiBz dHJ1Y3QgTGV0U3RtdAoreworCU5vZGVUYWcJCXR5cGU7CisJTGlzdAkgICp0YXJnZXQ7CQkJLyog bGlzdCBvZiBmaWVsZHMgICovCisJTm9kZQkgICAqc2VsZWN0U3RtdDsJCS8qIHRoZSBzb3VyY2Ug U0VMRUNUL1ZBTFVFUywgb3IgTlVMTCAqLworCWludAkJCWxvY2F0aW9uOworfSBMZXRTdG10Owor CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlTZWxlY3QgU3RhdGVtZW50CiAgKgpA QCAtMTY4Miw2ICsxNjkxLDcgQEAgdHlwZWRlZiBlbnVtIE9iamVjdFR5cGUKIAlPQkpFQ1RfVFNU RU1QTEFURSwKIAlPQkpFQ1RfVFlQRSwKIAlPQkpFQ1RfVVNFUl9NQVBQSU5HLAorCU9CSkVDVF9W QVJJQUJMRSwKIAlPQkpFQ1RfVklFVwogfSBPYmplY3RUeXBlOwogCkBAIC0yNDk3LDYgKzI1MDcs MjAgQEAgdHlwZWRlZiBzdHJ1Y3QgQWx0ZXJTZXFTdG10CiAJYm9vbAkJbWlzc2luZ19vazsJCS8q IHNraXAgZXJyb3IgaWYgYSByb2xlIGlzIG1pc3Npbmc/ICovCiB9IEFsdGVyU2VxU3RtdDsKIAor LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUNyZWF0ZSBWQVJJQUJMRSBTdGF0ZW1lbnQK KyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBzdHJ1Y3QgQ3JlYXRlU2No ZW1hVmFyU3RtdAoreworCU5vZGVUYWcJCXR5cGU7CisJUmFuZ2VWYXIgICAqdmFyaWFibGU7CQkv KiB0aGUgdmFyaWFibGUgdG8gY3JlYXRlICovCisJVHlwZU5hbWUgICAqdHlwZU5hbWU7CQkvKiB0 aGUgc2NhbGFyIHZhcmlhYmxlIHR5cGUgKi8KKwlOb2RlCSAgICpkZWZleHByOwkJLyogZGVmYXVs dCBleHByZXNzaW9uICovCisJTGlzdAkgICAqZmllbGRzOwkJCS8qIHRoZSBmaWVsZHMgb2YgY29t cG9zaXRlIHZhcmlhYmxlIHR5cGUgKi8KKwlib29sCQlpZl9ub3RfZXhpc3RzOwkvKiBqdXN0IGRv IG5vdGhpbmcgaWYgaXQgYWxyZWFkeSBleGlzdHM/ICovCit9IENyZWF0ZVNjaGVtYVZhclN0bXQ7 CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlDcmVhdGUge0FnZ3JlZ2F0ZXxPcGVy YXRvcnxUeXBlfSBTdGF0ZW1lbnQKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMyMzEs NyArMzI1NSw4IEBAIHR5cGVkZWYgZW51bSBEaXNjYXJkTW9kZQogCURJU0NBUkRfQUxMLAogCURJ U0NBUkRfUExBTlMsCiAJRElTQ0FSRF9TRVFVRU5DRVMsCi0JRElTQ0FSRF9URU1QCisJRElTQ0FS RF9URU1QLAorCURJU0NBUkRfVkFSSUFCTEVTCiB9IERpc2NhcmRNb2RlOwogCiB0eXBlZGVmIHN0 cnVjdCBEaXNjYXJkU3RtdApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVz LmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRleCBmOTBhYTdiMmExLi40NGFm N2MzZmJkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAorKysgYi9z cmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAtMjMwLDEzICsyMzAsMTcgQEAgdHlwZWRl ZiBzdHJ1Y3QgQ29uc3QKICAqCQkJCW9mIHRoZSBgcGFyYW1pZCcgZmllbGQgY29udGFpbiB0aGUg U3ViTGluaydzIHN1YkxpbmtJZCwgYW5kCiAgKgkJCQl0aGUgbG93LW9yZGVyIDE2IGJpdHMgY29u dGFpbiB0aGUgY29sdW1uIG51bWJlci4gIChUaGlzIHR5cGUKICAqCQkJCW9mIFBhcmFtIGlzIGFs c28gY29udmVydGVkIHRvIFBBUkFNX0VYRUMgZHVyaW5nIHBsYW5uaW5nLikKKyAqCisgKgkJUEFS QU1fU0NIRU1BX1ZBUklBQkxFOiAgVGhlIHBhcmFtZXRlciBpcyBhIGFjY2VzcyB0byBzY2hlbWEg dmFyaWFibGUKKyAqCQkJCXBhcmFtaWQgaG9sZHMgdmFyaWQuCiAgKi8KIHR5cGVkZWYgZW51bSBQ YXJhbUtpbmQKIHsKIAlQQVJBTV9FWFRFUk4sCiAJUEFSQU1fRVhFQywKIAlQQVJBTV9TVUJMSU5L LAotCVBBUkFNX01VTFRJRVhQUgorCVBBUkFNX01VTFRJRVhQUiwKKwlQQVJBTV9TQ0hFTUFfVkFS SUFCTEUKIH0gUGFyYW1LaW5kOwogCiB0eXBlZGVmIHN0cnVjdCBQYXJhbQpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5o CmluZGV4IDIzZGI0MDE0N2IuLmQzZWQzZjRkMGYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bh cnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTIzMSw2 ICsyMzEsNyBAQCBQR19LRVlXT1JEKCJsZWFkaW5nIiwgTEVBRElORywgUkVTRVJWRURfS0VZV09S RCkKIFBHX0tFWVdPUkQoImxlYWtwcm9vZiIsIExFQUtQUk9PRiwgVU5SRVNFUlZFRF9LRVlXT1JE KQogUEdfS0VZV09SRCgibGVhc3QiLCBMRUFTVCwgQ09MX05BTUVfS0VZV09SRCkKIFBHX0tFWVdP UkQoImxlZnQiLCBMRUZULCBUWVBFX0ZVTkNfTkFNRV9LRVlXT1JEKQorUEdfS0VZV09SRCgibGV0 IiwgTEVULCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJsZXZlbCIsIExFVkVMLCBV TlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJsaWtlIiwgTElLRSwgVFlQRV9GVU5DX05B TUVfS0VZV09SRCkKIFBHX0tFWVdPUkQoImxpbWl0IiwgTElNSVQsIFJFU0VSVkVEX0tFWVdPUkQp CkBAIC00MzQsNiArNDM1LDggQEAgUEdfS0VZV09SRCgidmFsaWRhdG9yIiwgVkFMSURBVE9SLCBV TlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJ2YWx1ZSIsIFZBTFVFX1AsIFVOUkVTRVJW RURfS0VZV09SRCkKIFBHX0tFWVdPUkQoInZhbHVlcyIsIFZBTFVFUywgQ09MX05BTUVfS0VZV09S RCkKIFBHX0tFWVdPUkQoInZhcmNoYXIiLCBWQVJDSEFSLCBDT0xfTkFNRV9LRVlXT1JEKQorUEdf S0VZV09SRCgidmFyaWFibGUiLCBWQVJJQUJMRSwgVU5SRVNFUlZFRF9LRVlXT1JEKQorUEdfS0VZ V09SRCgidmFyaWFibGVzIiwgVkFSSUFCTEVTLCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlX T1JEKCJ2YXJpYWRpYyIsIFZBUklBRElDLCBSRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgi dmFyeWluZyIsIFZBUllJTkcsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoInZlcmJv c2UiLCBWRVJCT1NFLCBUWVBFX0ZVTkNfTkFNRV9LRVlXT1JEKQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2Rl LmgKaW5kZXggMDIzMDU0MzgxMC4uZDI1YzA2MTA4OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cGFyc2VyL3BhcnNlX25vZGUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5o CkBAIC0xMzUsNiArMTM1LDggQEAgdHlwZWRlZiBOb2RlICooKkNvZXJjZVBhcmFtSG9vaykgKFBh cnNlU3RhdGUgKnBzdGF0ZSwgUGFyYW0gKnBhcmFtLAogICogdG8gcHJvY2VzcyB0aGVtIGxpa2Ug VVBEQVRFLiAgKE5vdGUgdGhpcyBjYW4gY2hhbmdlIGludHJhLXN0YXRlbWVudCwgZm9yCiAgKiBj YXNlcyBsaWtlIElOU0VSVCBPTiBDT05GTElDVCBVUERBVEUuKQogICoKKyAqIHBfaXNfbGV0OiB0 cnVlIHRvIHByb2Nlc3MgYXNzaWdubWVudCBleHByZXNzaW9ucyBsaWtlIExFVC4KKyAqCiAgKiBw X3dpbmRvd2RlZnM6IGxpc3Qgb2YgV2luZG93RGVmcyByZXByZXNlbnRpbmcgV0lORE9XIGFuZCBP VkVSIGNsYXVzZXMuCiAgKiBXZSBjb2xsZWN0IHRoZXNlIHdoaWxlIHRyYW5zZm9ybWluZyBleHBy ZXNzaW9ucyBhbmQgdGhlbiB0cmFuc2Zvcm0gdGhlbQogICogYWZ0ZXJ3YXJkcyAoc28gdGhhdCBh bnkgcmVzanVuayB0bGlzdCBpdGVtcyBuZWVkZWQgZm9yIHRoZSBzb3J0L2dyb3VwCkBAIC0xODQs NiArMTg2LDcgQEAgc3RydWN0IFBhcnNlU3RhdGUKIAlSZWxhdGlvbglwX3RhcmdldF9yZWxhdGlv bjsJLyogSU5TRVJUL1VQREFURS9ERUxFVEUgdGFyZ2V0IHJlbCAqLwogCVJhbmdlVGJsRW50cnkg KnBfdGFyZ2V0X3JhbmdldGJsZW50cnk7CS8qIHRhcmdldCByZWwncyBSVEUgKi8KIAlib29sCQlw X2lzX2luc2VydDsJLyogcHJvY2VzcyBhc3NpZ25tZW50IGxpa2UgSU5TRVJUIG5vdCBVUERBVEUg Ki8KKwlib29sCQlwX2lzX2xldDsJCS8qIHByb2Nlc3MgYXNzaWdubWVudCBMRVQgc3RtdCAqLwog CUxpc3QJICAgKnBfd2luZG93ZGVmczsJLyogcmF3IHJlcHJlc2VudGF0aW9ucyBvZiB3aW5kb3cg Y2xhdXNlcyAqLwogCVBhcnNlRXhwcktpbmQgcF9leHByX2tpbmQ7CS8qIHdoYXQga2luZCBvZiBl eHByZXNzaW9uIHdlJ3JlIHBhcnNpbmcgKi8KIAlpbnQJCQlwX25leHRfcmVzbm87CS8qIG5leHQg dGFyZ2V0bGlzdCByZXNubyB0byBhc3NpZ24gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bh cnNlci9wYXJzZV9yZWxhdGlvbi5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3JlbGF0aW9u LmgKaW5kZXggYjk3OTJhY2RhZS4uYzg5NDE0N2QwNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3Jl bGF0aW9uLmgKQEAgLTEyOSw0ICsxMjksMTAgQEAgZXh0ZXJuIE9pZAlhdHRudW1UeXBlSWQoUmVs YXRpb24gcmQsIGludCBhdHRpZCk7CiBleHRlcm4gT2lkCWF0dG51bUNvbGxhdGlvbklkKFJlbGF0 aW9uIHJkLCBpbnQgYXR0aWQpOwogZXh0ZXJuIGJvb2wgaXNRdWVyeVVzaW5nVGVtcFJlbGF0aW9u KFF1ZXJ5ICpxdWVyeSk7CiAKK2V4dGVybiBSYW5nZVZhciAqbWFrZVJhbmdlVmFyRm9yVGFyZ2V0 T2ZTY2hlbWFWYXJpYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsCisJCQkJICBjaGFyICpmaWVsZDEs IGNoYXIgKmZpZWxkMiwgY2hhciAqZmllbGQzLAorCQkJCSAgaW50IGxvY2F0aW9uLCBjaGFyICoq ZmllbGRuYW1lLCBpbnQgKmZpZWxkbmFtZV9wb3MsIGJvb2wgbm9lcnJvcik7CisKK2V4dGVybiBO b2RlICp0b1NjaGVtYVZhcmlhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY2hhciAqbnNwbmFtZSwg Y2hhciAqdmFybmFtZSwgY2hhciAqZmllbGRuYW1lLCBpbnQgbG9jYXRpb24pOworCiAjZW5kaWYJ CQkJCQkJLyogUEFSU0VfUkVMQVRJT05fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFy c2VyL3BhcnNlX3RhcmdldC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3RhcmdldC5oCmlu ZGV4IGVjNmUwYzEwMmYuLjcyZWIzY2Q3YjYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNl ci9wYXJzZV90YXJnZXQuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdGFyZ2V0LmgK QEAgLTQzLDQgKzQzLDE2IEBAIGV4dGVybiBUdXBsZURlc2MgZXhwYW5kUmVjb3JkVmFyaWFibGUo UGFyc2VTdGF0ZSAqcHN0YXRlLCBWYXIgKnZhciwKIGV4dGVybiBjaGFyICpGaWd1cmVDb2xuYW1l KE5vZGUgKm5vZGUpOwogZXh0ZXJuIGNoYXIgKkZpZ3VyZUluZGV4Q29sbmFtZShOb2RlICpub2Rl KTsKIAorZXh0ZXJuIE5vZGUgKnRyYW5zZm9ybUFzc2lnbm1lbnRJbmRpcmVjdGlvbihQYXJzZVN0 YXRlICpwc3RhdGUsCisJCQkJCQkJICAgTm9kZSAqYmFzZW5vZGUsCisJCQkJCQkJICAgY29uc3Qg Y2hhciAqdGFyZ2V0TmFtZSwKKwkJCQkJCQkgICBib29sIHRhcmdldElzQXJyYXksCisJCQkJCQkJ ICAgT2lkIHRhcmdldFR5cGVJZCwKKwkJCQkJCQkgICBpbnQzMiB0YXJnZXRUeXBNb2QsCisJCQkJ CQkJICAgT2lkIHRhcmdldENvbGxhdGlvbiwKKwkJCQkJCQkgICBMaXN0Q2VsbCAqaW5kaXJlY3Rp b24sCisJCQkJCQkJICAgTm9kZSAqcmhzLAorCQkJCQkJCSAgIGludCBsb2NhdGlvbik7CisKKwog I2VuZGlmCQkJCQkJCS8qIFBBUlNFX1RBUkdFVF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS91dGlscy9hY2wuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oCmluZGV4IGY0ZDRiZThkMGQu LmQwNzM3YTllNGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oCisrKyBiL3Ny Yy9pbmNsdWRlL3V0aWxzL2FjbC5oCkBAIC0xNjYsNiArMTY2LDcgQEAgdHlwZWRlZiBBcnJheVR5 cGUgQWNsOwogI2RlZmluZSBBQ0xfQUxMX1JJR0hUU19TQ0hFTUEJCShBQ0xfVVNBR0V8QUNMX0NS RUFURSkKICNkZWZpbmUgQUNMX0FMTF9SSUdIVFNfVEFCTEVTUEFDRQkoQUNMX0NSRUFURSkKICNk ZWZpbmUgQUNMX0FMTF9SSUdIVFNfVFlQRQkJCShBQ0xfVVNBR0UpCisjZGVmaW5lIEFDTF9BTExf UklHSFRTX1ZBUklBQkxFCQkoQUNMX1NFTEVDVHxBQ0xfVVBEQVRFKQogCiAvKiBvcGVyYXRpb24g Y29kZXMgZm9yIHBnXypfYWNsbWFzayAqLwogdHlwZWRlZiBlbnVtCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NjaGVtYV92YXJpYWJsZXMub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zY2hlbWFfdmFyaWFibGVzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi5hYjFkM2FjNjZkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9zY2hlbWFfdmFyaWFibGVzLm91dApAQCAtMCwwICsxLDQ1NiBAQAor Q1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgaW50ZWdlcjsKK0NSRUFURSBURU1QIFZBUklBQkxFIHZh cjIgQVMgdGV4dDsKK0RST1AgVkFSSUFCTEUgdmFyMSwgdmFyMjsKKy0tIGZ1bmN0aW9uYWwgaW50 ZXJmYWNlCitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBudW1lcmljOworU0VMRUNUIHNldF9zY2hl bWFfdmFyaWFibGUoJ3ZhcjEnLCAzMzMpOworIHNldF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUo J3ZhcjEnLCBudWxsOjpudW1lcmljKTsKKyBnZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgIDMzMworKDEgcm93KQorCitTRUxFQ1Qgc2V0 X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIDMzMzo6aW50ZWdlcik7Cisgc2V0X3NjaGVtYV92YXJp YWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgZ2V0X3Nj aGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMpOworIGdldF9zY2hlbWFfdmFyaWFi bGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgMzMzCisoMSByb3cp CisKK1NFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgJzMzMy41NSc6OnRleHQpOwor IHNldF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK KworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCBudWxsOjpudW1lcmljKTsKKyBn ZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg IDMzMy41NQorKDEgcm93KQorCitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51 bGw6OmludCk7CisgZ2V0X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAgICAzMzQKKygxIHJvdykKKworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFi bGUoJ3ZhcjEnLCBudWxsOjp0ZXh0KTsKKyBnZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgMzMzLjU1CisoMSByb3cpCisKKy0tIGFjY2VzcyByaWdodHMgdGVzdAor Q1JFQVRFIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7Cist LSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCAnMTAw MCc6OnRleHQpOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHZhcmlhYmxl IHZhcjEKK1NFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVsbDo6bnVtZXJpYyk7 CitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUgdmFyMQorU0VU IFJPTEUgVE8gREVGQVVMVDsKK0dSQU5UIFNFTEVDVCBPTiBWQVJJQUJMRSB2YXIxIFRPIHZhcl90 ZXN0X3JvbGU7CitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworLS0gc2hvdWxkIHRvIGZhaWwK K1NFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgJzEwMDAnOjp0ZXh0KTsKK0VSUk9S OiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSB2YXIxCistLSBzaG91bGQg dG8gd29yaworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCBudWxsOjpudW1lcmlj KTsKKyBnZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgIDMzMy41NQorKDEgcm93KQorCitTRVQgUk9MRSBUTyBERUZBVUxUOworR1JBTlQgVVBE QVRFIE9OIFZBUklBQkxFIHZhcjEgVE8gdmFyX3Rlc3Rfcm9sZTsKK1NFVCBST0xFIFRPIHZhcl90 ZXN0X3JvbGU7CistLSBzaG91bGQgdG8gd29yaworU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUo J3ZhcjEnLCAnMTAwMCc6OnRleHQpOworIHNldF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3Zh cjEnLCBudWxsOjpudW1lcmljKTsKKyBnZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgICAgMTAwMAorKDEgcm93KQorCitTRVQgUk9MRSBUTyBE RUZBVUxUOworUkVWT0tFIEFMTCBPTiBWQVJJQUJMRSB2YXIxIEZST00gdmFyX3Rlc3Rfcm9sZTsK K0NSRUFURSBWQVJJQUJMRSB2YXIgQVMgaW50ZWdlcjsKK1NFTEVDVCBzZXRfc2NoZW1hX3Zhcmlh YmxlKCdwdWJsaWMudmFyJywgMTIzNCk7Cisgc2V0X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgcHVibGljLnZhcjsKKyB2YXIgIAor LS0tLS0tCisgMTIzNAorKDEgcm93KQorCitETyAkJAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICdw dWJsaWMudmFyIGlzID0gJScsIHB1YmxpYy52YXI7CitFTkQ7CiskJDsKK05PVElDRTogIHB1Ymxp Yy52YXIgaXMgPSAxMjM0CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBzZWN1cmVfdmFyKCkK K1JFVFVSTlMgaW50IEFTICQkCisgIFNFTEVDVCBwdWJsaWMudmFyOworJCQgTEFOR1VBR0Ugc3Fs IFNFQ1VSSVRZIERFRklORVI7CitTRUxFQ1Qgc2VjdXJlX3ZhcigpOworIHNlY3VyZV92YXIgCist LS0tLS0tLS0tLS0KKyAgICAgICAxMjM0CisoMSByb3cpCisKK1NFVCBST0xFIFRPIHZhcl90ZXN0 X3JvbGU7CistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIHB1YmxpYy52YXI7CitFUlJPUjogIHBl cm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUgdmFyCistLSBzaG91bGQgdG8gd29y azsKK1NFTEVDVCBzZWN1cmVfdmFyKCk7Cisgc2VjdXJlX3ZhciAKKy0tLS0tLS0tLS0tLQorICAg ICAgIDEyMzQKKygxIHJvdykKKworU0VUIFJPTEUgVE8gREVGQVVMVDsKK0VYUExBSU4gKFZFUkJP U0UsIENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApIGcodikg V0hFUkUgdiA9IHZhcjsKKyAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IEZ1bmN0aW9uIFNjYW4gb24gcGdfY2F0YWxvZy5nZW5lcmF0ZV9zZXJpZXMgZworICAgT3V0cHV0 OiB2CisgICBGdW5jdGlvbiBDYWxsOiBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKQorICAgRmlsdGVy OiAoZy52ID0gdmFyKQorKDQgcm93cykKKworQ1JFQVRFIFZJRVcgc2NoZW1hX3Zhcl92aWV3IEFT IFNFTEVDVCB2YXI7CitTRUxFQ1QgKiBGUk9NIHNjaGVtYV92YXJfdmlldzsKKyB2YXIgIAorLS0t LS0tCisgMTIzNAorKDEgcm93KQorCitcYyAtCistLSBzaG91bGQgdG8gd29yayBzdGlsbCwgYnV0 IHZhciB3aWxsIGJlIGVtcHR5CitTRUxFQ1QgKiBGUk9NIHNjaGVtYV92YXJfdmlldzsKKyB2YXIg CistLS0tLQorICAgIAorKDEgcm93KQorCitMRVQgdmFyMSA9IHBpKCk7CitTRUxFQ1QgdmFyMTsK KyAgICAgICB2YXIxICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgMy4xNDE1OTI2NTM1ODk3 OQorKDEgcm93KQorCistLSB3ZSBjYW4gbG9vayBvbiBleGVjdXRpb24gcGxhbgorRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKSBMRVQgdmFyMSA9IHBpKCk7CisgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTGV0 IG9uIHB1YmxpYy52YXIxCisgICAtPiAgUmVzdWx0CisgICAgICAgICBPdXRwdXQ6IDMuMTQxNTky NjUzNTg5NzkKKygzIHJvd3MpCisKKy0tIExFVCBjYW4gYmUgcHJlcGFyZWQKK1BSRVBBUkUgdmFy X3BwKGludCwgbnVtZXJpYykgQVMgTEVUIHZhcjEgPSAkMSArICQyOworRVhFQ1VURSB2YXJfcHAo MTAwLCAxLjIzNDU2KTsKK1NFTEVDVCB2YXIxOworICAgdmFyMSAgICAKKy0tLS0tLS0tLS0tCisg MTAxLjIzNDU2CisoMSByb3cpCisKK0NSRUFURSBWQVJJQUJMRSB2YXIzIEFTIGludDsKK0NSRUFU RSBPUiBSRVBMQUNFIEZVTkNUSU9OIGluYyhpbnQpCitSRVRVUk5TIGludCBBUyAkJAorQkVHSU4K KyAgTEVUIHB1YmxpYy52YXIzID0gQ09BTEVTQ0UocHVibGljLnZhcjMgKyAkMSwgJDEpOworICBS RVRVUk4gdmFyMzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitTRUxFQ1QgaW5jKDEpOwor IGluYyAKKy0tLS0tCisgICAxCisoMSByb3cpCisKK1NFTEVDVCBpbmMoMSk7CisgaW5jIAorLS0t LS0KKyAgIDIKKygxIHJvdykKKworU0VMRUNUIGluYygxKTsKKyBpbmMgCistLS0tLQorICAgMwor KDEgcm93KQorCitTRUxFQ1QgaW5jKDEpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApOworIGlu YyAKKy0tLS0tCisgICA0CisgICA1CisgICA2CisgICA3CisgICA4CisgICA5CisgIDEwCisgIDEx CisgIDEyCisgIDEzCisoMTAgcm93cykKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0t IHNob3VsZCB0byBmYWlsCitMRVQgdmFyMyA9IDA7CitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVk IGZvciBzY2hlbWEgdmFyaWFibGUgdmFyMworU0VUIFJPTEUgVE8gREVGQVVMVDsKK0RST1AgVklF VyBzY2hlbWFfdmFyX3ZpZXc7CitEUk9QIFZBUklBQkxFIHZhciBDQVNDQURFOworRFJPUCBWQVJJ QUJMRSB2YXIxIENBU0NBREU7CitEUk9QIFZBUklBQkxFIHZhcjMgQ0FTQ0FERTsKKy0tIGNvbXBv c2l0ZSB2YXJpYWJsZXMKK0NSRUFURSBUWVBFIHN2X3h5eiBBUyAoeCBpbnQsIHkgaW50LCB6IG51 bWVyaWMoMTAsMikpOworQ1JFQVRFIFZBUklBQkxFIHYxIEFTIHN2X3h5ejsKK0NSRUFURSBWQVJJ QUJMRSB2MiBBUyAoeCBpbnQsIHkgaW50LCB6IG51bWVyaWMoMTAsMikpOworXGQgdjEKK3NjaGVt YSB2YXJpYWJsZSAicHVibGljLnYxIgorIENvbHVtbiB8ICAgICBUeXBlICAgICAgCistLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0KKyB4ICAgICAgfCBpbnRlZ2VyCisgeSAgICAgIHwgaW50ZWdlcgor IHogICAgICB8IG51bWVyaWMoMTAsMikKKworXGQgdjIKK3NjaGVtYSB2YXJpYWJsZSAicHVibGlj LnYyIgorIENvbHVtbiB8ICAgICBUeXBlICAgICAgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0K KyB4ICAgICAgfCBpbnRlZ2VyCisgeSAgICAgIHwgaW50ZWdlcgorIHogICAgICB8IG51bWVyaWMo MTAsMikKKworLS0gZXhwbGljaXQgY2FzdGluZyBpcyBuZWNlc3NhcnkKK0xFVCB2MSA9ICgxLDIs My4xNCk6OnN2X3h5ejsKK0xFVCB2MiA9ICgxMCwyMCwzLjE0KjEwKTo6djI7CistLSBzaG91bGQg dG8gd29yayB0b28gLSB0aGVyZSBhcmUgcHJlcGFyZWQgY2FzdHMKK0xFVCB2MSA9ICgxLDIsMy4x NCk6OnYxOworU0VMRUNUIHYxOworICAgICB2MSAgICAgCistLS0tLS0tLS0tLS0KKyAoMSwyLDMu MTQpCisoMSByb3cpCisKK1NFTEVDVCB2MjsKKyAgICAgIHYyICAgICAgIAorLS0tLS0tLS0tLS0t LS0tCisgKDEwLDIwLDMxLjQwKQorKDEgcm93KQorCitTRUxFQ1QgKHYxKS4qOworIHggfCB5IHwg IHogICAKKy0tLSstLS0rLS0tLS0tCisgMSB8IDIgfCAzLjE0CisoMSByb3cpCisKK1NFTEVDVCAo djIpLio7CisgeCAgfCB5ICB8ICAgeiAgIAorLS0tLSstLS0tKy0tLS0tLS0KKyAxMCB8IDIwIHwg MzEuNDAKKygxIHJvdykKKworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3YxJywgJ3onLCBu dWxsOjpkb3VibGUgcHJlY2lzaW9uKTsKKyBnZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgMy4xNAorKDEgcm93KQorCitTRUxFQ1QgZ2V0 X3NjaGVtYV92YXJpYWJsZSgndjInLCAneicsIG51bGw6OmRvdWJsZSBwcmVjaXNpb24pOworIGdl dF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg ICAzMS40CisoMSByb3cpCisKKy0tIHNob3VsZCB0byBmYWlsCitTRUxFQ1QgZ2V0X3NjaGVtYV92 YXJpYWJsZSgndjEnLCAndycsIG51bGw6OmRvdWJsZSBwcmVjaXNpb24pOworRVJST1I6ICB0aGUg dmFyaWFibGUgInYxIiBoYXMgbm90IGZpZWxkICJ3IgorU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFi bGUoJ3YyJywgJ3cnLCBudWxsOjpkb3VibGUgcHJlY2lzaW9uKTsKK0VSUk9SOiAgdGhlIHZhcmlh YmxlICJ2MiIgaGFzIG5vdCBmaWVsZCAidyIKK0NSRUFURSBWQVJJQUJMRSB2MyBBUyBpbnRlZ2Vy OworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3YzJywgJ3cnLCBudWxsOjpkb3VibGUgcHJl Y2lzaW9uKTsKK0VSUk9SOiAgdGhlIHZhcmlhYmxlICJ2MyIgaXMgbm90IG9mIHJvdyB0eXBlCitT RUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndjEnLCAneicsIDMuMTQgKiAyKTsKKyBzZXRfc2No ZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVD VCB2MTsKKyAgICAgdjEgICAgIAorLS0tLS0tLS0tLS0tCisgKDEsMiw2LjI4KQorKDEgcm93KQor CitTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndjEnLCAneicsIG51bGw6OmRvdWJsZSBwcmVj aXNpb24pOworIHNldF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworU0VMRUNUIHYxOworICAgdjEgICAKKy0tLS0tLS0tCisgKDEsMiwpCisoMSBy b3cpCisKK1NFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCd2MScsICd6JywgMy4zMzMzOjpkb3Vi bGUgcHJlY2lzaW9uKTsKKyBzZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCd2MScsICd4Jywg MTAwMDAuMjIpOworIHNldF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworU0VMRUNUIHYxOworICAgICAgIHYxICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLQorICgxMDAwMCwyLDMuMzMpCisoMSByb3cpCisKK1NFTEVDVCB2MS54ICsgdjEuejsKKyA/ Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAxMDAwMy4zMworKDEgcm93KQorCitTRUxFQ1QgdjIueCAr IHYyLno7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgICAgNDEuNDAKKygxIHJvdykKKworLS0g YWNjZXNzIHRvIGNvbXBvc2l0ZSBmaWVsZHMgc2hvdWxkIGJlIHNhZmUgdG9vCistLSBzaG91bGQg dG8gZmFpbAorU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKK1NFTEVDVCB2Mi54OworRVJST1I6 ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHZhcmlhYmxlIHYyCitTRVQgUk9MRSBUTyBE RUZBVUxUOworRFJPUCBWQVJJQUJMRSB2MTsKK0RST1AgVkFSSUFCTEUgdjI7CitEUk9QIFZBUklB QkxFIHYzOworRFJPUCBST0xFIHZhcl90ZXN0X3JvbGU7CistLSBzY2FsYXIgdmFyaWFibGVzIHNo b3VsZCBub3QgYmUgaW4gY29uZmxpY3Qgd2l0aCBxdWFsaWZpZWQgY29sdW1uCitDUkVBVEUgVkFS SUFCTEUgdmFyeCBBUyB0ZXh0OworU0VMRUNUIHZhcngucmVsbmFtZSBGUk9NIHBnX2NsYXNzIHZh cnggV0hFUkUgdmFyeC5yZWxuYW1lID0gJ3BnX2NsYXNzJzsKKyByZWxuYW1lICAKKy0tLS0tLS0t LS0KKyBwZ19jbGFzcworKDEgcm93KQorCistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIHZhcngu eHh4OworRVJST1I6ICBtaXNzaW5nIEZST00tY2xhdXNlIGVudHJ5IGZvciB0YWJsZSAidmFyeCIK K0xJTkUgMTogU0VMRUNUIHZhcngueHh4OworICAgICAgICAgICAgICAgXgorLS0gdmFyaWFibGVz IGNhbiBiZSB1cGRhdGVkIHVuZGVyIFJPIHRyYW5zYWN0aW9uCitCRUdJTjsKK1NFVCBUUkFOU0FD VElPTiBSRUFEIE9OTFk7CitMRVQgdmFyeCA9ICdoZWxsbyc7CitDT01NSVQ7CitTRUxFQ1QgdmFy eDsKKyB2YXJ4ICAKKy0tLS0tLS0KKyBoZWxsbworKDEgcm93KQorCitEUk9QIFZBUklBQkxFIHZh cng7CitDUkVBVEUgVkFSSUFCTEUgdjEgQVMgKGEgaW50LCBiIG51bWVyaWMsIGMgdGV4dCk7CitM RVQgdjEgPSAoMSwgcGkoKSwgJ2hlbGxvJyk7CitTRUxFQ1QgdjE7CisgICAgICAgICAgICAgdjEg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKDEsMy4xNDE1OTI2 NTM1ODk3OSxoZWxsbykKKygxIHJvdykKKworTEVUIHYxLmIgPSAxMC4yMjIyOworU0VMRUNUIHYx OworICAgICAgICB2MSAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorICgxLDEwLjIyMjIs aGVsbG8pCisoMSByb3cpCisKKy0tIHNob3VsZCB0byBmYWlsCitMRVQgdjEueCA9IDEwOworRVJS T1I6ICBjYW5ub3QgYXNzaWduIHRvIGZpZWxkICJ4IiBvZiBjb2x1bW4gIngiIGJlY2F1c2UgdGhl cmUgaXMgbm8gc3VjaCBjb2x1bW4gaW4gZGF0YSB0eXBlIHYxCitEUk9QIFZBUklBQkxFIHYxOwor LS0gYXJyYXlzIGFyZSBzdXBwb3J0ZWQKK0NSRUFURSBWQVJJQUJMRSB2YTEgQVMgbnVtZXJpY1td OworTEVUIHZhMSA9IEFSUkFZWzEuMSwyLjFdOworTEVUIHZhMVsxXSA9IDEwLjE7CitTRUxFQ1Qg dmExOworICAgIHZhMSAgICAgCistLS0tLS0tLS0tLS0KKyB7MTAuMSwyLjF9CisoMSByb3cpCisK K0NSRUFURSBWQVJJQUJMRSB2YTIgQVMgKGEgbnVtZXJpYywgYiBudW1lcmljW10pOworTEVUIHZh MiA9ICgxMC4xLCBBUlJBWVswLjAsIDAuMF0pOworTEVUIHZhMi5hID0gMTAuMjsKK1NFTEVDVCB2 YTI7CisgICAgICAgIHZhMiAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMTAuMiwi ezAuMCwwLjB9IikKKygxIHJvdykKKworTEVUIHZhMi5iWzFdID0gMTAuMzsKK1NFTEVDVCB2YTI7 CisgICAgICAgICB2YTIgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICgxMC4yLCJ7 MTAuMywwLjB9IikKKygxIHJvdykKKworRFJPUCBWQVJJQUJMRSB2YTE7CitEUk9QIFZBUklBQkxF IHZhMjsKKy0tIGRlZmF1bHQgdmFsdWVzCitDUkVBVEUgVkFSSUFCTEUgdjEgQVMgbnVtZXJpYyBE RUZBVUxUIHBpKCk7CitMRVQgdjEgPSB2MSAqIDI7CitTRUxFQ1QgdjE7CisgICAgICAgIHYxICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIDYuMjgzMTg1MzA3MTc5NTgKKygxIHJvdykKKwor Q1JFQVRFIFZBUklBQkxFIHYyIEFTIChhIG51bWVyaWMsIGIgdGV4dCBERUZBVUxUICdoZWxsbycp OworTEVUIHB1YmxpYy52Mi5hID0gcGkoKTsKK1NFTEVDVCB2MjsKKyAgICAgICAgICAgIHYyICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICgzLjE0MTU5MjY1MzU4OTc5 LGhlbGxvKQorKDEgcm93KQorCitEUk9QIFZBUklBQkxFIHYxOworRFJPUCBWQVJJQUJMRSB2MjsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVz dC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IDE2Zjk3OWM4ZDkuLjliZjM3OWI4N2Ig MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTExLDcgKzExMSw3IEBAIHRlc3Q6 IHNlbGVjdF92aWV3cyBwb3J0YWxzX3AyIGZvcmVpZ25fa2V5IGNsdXN0ZXIgZGVwZW5kZW5jeSBn dWMgYml0bWFwb3BzIGNvbWJvCiAjIE5COiB0ZW1wLnNxbCBkb2VzIGEgcmVjb25uZWN0IHdoaWNo IHRyYW5zaWVudGx5IHVzZXMgMiBjb25uZWN0aW9ucywKICMgc28ga2VlcCB0aGlzIHBhcmFsbGVs IGdyb3VwIHRvIGF0IG1vc3QgMTkgdGVzdHMKICMgLS0tLS0tLS0tLQotdGVzdDogcGxhbmNhY2hl IGxpbWl0IHBscGdzcWwgY29weTIgdGVtcCBkb21haW4gcmFuZ2VmdW5jcyBwcmVwYXJlIHdpdGhv dXRfb2lkIGNvbnZlcnNpb24gdHJ1bmNhdGUgYWx0ZXJfdGFibGUgc2VxdWVuY2UgcG9seW1vcnBo aXNtIHJvd3R5cGVzIHJldHVybmluZyBsYXJnZW9iamVjdCB3aXRoIHhtbAordGVzdDogcGxhbmNh Y2hlIGxpbWl0IHBscGdzcWwgY29weTIgdGVtcCBkb21haW4gcmFuZ2VmdW5jcyBwcmVwYXJlIHdp dGhvdXRfb2lkIGNvbnZlcnNpb24gdHJ1bmNhdGUgYWx0ZXJfdGFibGUgc2VxdWVuY2UgcG9seW1v cnBoaXNtIHJvd3R5cGVzIHJldHVybmluZyBsYXJnZW9iamVjdCB3aXRoIHhtbCBzY2hlbWFfdmFy aWFibGVzCiAKICMgLS0tLS0tLS0tLQogIyBBbm90aGVyIGdyb3VwIG9mIHBhcmFsbGVsIHRlc3Rz CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NlcmlhbF9zY2hlZHVsZSBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc2VyaWFsX3NjaGVkdWxlCmluZGV4IDQyNjMyYmU2NzUuLjQyYmY0ZWNiM2YgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc2VyaWFsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc2VyaWFsX3NjaGVkdWxlCkBAIC0xOTEsMyArMTkxLDQgQEAgdGVzdDogcGFydGl0 aW9uX2FnZ3JlZ2F0ZQogdGVzdDogZXZlbnRfdHJpZ2dlcgogdGVzdDogZmFzdF9kZWZhdWx0CiB0 ZXN0OiBzdGF0cwordGVzdDogc2NoZW1hX3ZhcmlhYmxlcwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvc2NoZW1hX3ZhcmlhYmxlcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9z Y2hlbWFfdmFyaWFibGVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li4yN2JiZDFmZGMzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc2No ZW1hX3ZhcmlhYmxlcy5zcWwKQEAgLTAsMCArMSwyNTEgQEAKK0NSRUFURSBWQVJJQUJMRSB2YXIx IEFTIGludGVnZXI7CitDUkVBVEUgVEVNUCBWQVJJQUJMRSB2YXIyIEFTIHRleHQ7CisKK0RST1Ag VkFSSUFCTEUgdmFyMSwgdmFyMjsKKworLS0gZnVuY3Rpb25hbCBpbnRlcmZhY2UKK0NSRUFURSBW QVJJQUJMRSB2YXIxIEFTIG51bWVyaWM7CitTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndmFy MScsIDMzMyk7CitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6Om51bWVy aWMpOworCitTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIDMzMzo6aW50ZWdlcik7 CitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMpOworCitT RUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsICczMzMuNTUnOjp0ZXh0KTsKK1NFTEVD VCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVsbDo6bnVtZXJpYyk7CitTRUxFQ1QgZ2V0 X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6OmludCk7CitTRUxFQ1QgZ2V0X3NjaGVtYV92 YXJpYWJsZSgndmFyMScsIG51bGw6OnRleHQpOworCistLSBhY2Nlc3MgcmlnaHRzIHRlc3QKKwor Q1JFQVRFIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsK KworLS0gc2hvdWxkIHRvIGZhaWwKK1NFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywg JzEwMDAnOjp0ZXh0KTsKK1NFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVsbDo6 bnVtZXJpYyk7CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisKK0dSQU5UIFNFTEVDVCBPTiBWQVJJ QUJMRSB2YXIxIFRPIHZhcl90ZXN0X3JvbGU7CisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7 CistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCAn MTAwMCc6OnRleHQpOworLS0gc2hvdWxkIHRvIHdvcmsKK1NFTEVDVCBnZXRfc2NoZW1hX3Zhcmlh YmxlKCd2YXIxJywgbnVsbDo6bnVtZXJpYyk7CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisKK0dS QU5UIFVQREFURSBPTiBWQVJJQUJMRSB2YXIxIFRPIHZhcl90ZXN0X3JvbGU7CisKK1NFVCBST0xF IFRPIHZhcl90ZXN0X3JvbGU7CisKKy0tIHNob3VsZCB0byB3b3JrCitTRUxFQ1Qgc2V0X3NjaGVt YV92YXJpYWJsZSgndmFyMScsICcxMDAwJzo6dGV4dCk7CitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJp YWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMpOworCitTRVQgUk9MRSBUTyBERUZBVUxUOworCitS RVZPS0UgQUxMIE9OIFZBUklBQkxFIHZhcjEgRlJPTSB2YXJfdGVzdF9yb2xlOworCitDUkVBVEUg VkFSSUFCTEUgdmFyIEFTIGludGVnZXI7CisKK1NFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCdw dWJsaWMudmFyJywgMTIzNCk7CisKK1NFTEVDVCBwdWJsaWMudmFyOworCitETyAkJAorQkVHSU4K KyAgUkFJU0UgTk9USUNFICdwdWJsaWMudmFyIGlzID0gJScsIHB1YmxpYy52YXI7CitFTkQ7Cisk JDsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gc2VjdXJlX3ZhcigpCitSRVRVUk5TIGlu dCBBUyAkJAorICBTRUxFQ1QgcHVibGljLnZhcjsKKyQkIExBTkdVQUdFIHNxbCBTRUNVUklUWSBE RUZJTkVSOworCitTRUxFQ1Qgc2VjdXJlX3ZhcigpOworCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9y b2xlOworCistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIHB1YmxpYy52YXI7CisKKy0tIHNob3Vs ZCB0byB3b3JrOworU0VMRUNUIHNlY3VyZV92YXIoKTsKKworU0VUIFJPTEUgVE8gREVGQVVMVDsK KworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLDEwMCkgZyh2KSBXSEVSRSB2ID0gdmFyOworCitDUkVBVEUgVklFVyBzY2hlbWFfdmFy X3ZpZXcgQVMgU0VMRUNUIHZhcjsKKworU0VMRUNUICogRlJPTSBzY2hlbWFfdmFyX3ZpZXc7CisK K1xjIC0KKworLS0gc2hvdWxkIHRvIHdvcmsgc3RpbGwsIGJ1dCB2YXIgd2lsbCBiZSBlbXB0eQor U0VMRUNUICogRlJPTSBzY2hlbWFfdmFyX3ZpZXc7CisKK0xFVCB2YXIxID0gcGkoKTsKKworU0VM RUNUIHZhcjE7CisKKy0tIHdlIGNhbiBsb29rIG9uIGV4ZWN1dGlvbiBwbGFuCitFWFBMQUlOIChW RVJCT1NFLCBDT1NUUyBPRkYpIExFVCB2YXIxID0gcGkoKTsKKworLS0gTEVUIGNhbiBiZSBwcmVw YXJlZAorUFJFUEFSRSB2YXJfcHAoaW50LCBudW1lcmljKSBBUyBMRVQgdmFyMSA9ICQxICsgJDI7 CisKK0VYRUNVVEUgdmFyX3BwKDEwMCwgMS4yMzQ1Nik7CisKK1NFTEVDVCB2YXIxOworCitDUkVB VEUgVkFSSUFCTEUgdmFyMyBBUyBpbnQ7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGlu YyhpbnQpCitSRVRVUk5TIGludCBBUyAkJAorQkVHSU4KKyAgTEVUIHB1YmxpYy52YXIzID0gQ09B TEVTQ0UocHVibGljLnZhcjMgKyAkMSwgJDEpOworICBSRVRVUk4gdmFyMzsKK0VORDsKKyQkIExB TkdVQUdFIHBscGdzcWw7CisKK1NFTEVDVCBpbmMoMSk7CitTRUxFQ1QgaW5jKDEpOworU0VMRUNU IGluYygxKTsKKworU0VMRUNUIGluYygxKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKTsKKwor U0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKworLS0gc2hvdWxkIHRvIGZhaWwKK0xFVCB2YXIz ID0gMDsKKworU0VUIFJPTEUgVE8gREVGQVVMVDsKKworRFJPUCBWSUVXIHNjaGVtYV92YXJfdmll dzsKKworRFJPUCBWQVJJQUJMRSB2YXIgQ0FTQ0FERTsKK0RST1AgVkFSSUFCTEUgdmFyMSBDQVND QURFOworRFJPUCBWQVJJQUJMRSB2YXIzIENBU0NBREU7CisKKy0tIGNvbXBvc2l0ZSB2YXJpYWJs ZXMKKworQ1JFQVRFIFRZUEUgc3ZfeHl6IEFTICh4IGludCwgeSBpbnQsIHogbnVtZXJpYygxMCwy KSk7CisKK0NSRUFURSBWQVJJQUJMRSB2MSBBUyBzdl94eXo7CitDUkVBVEUgVkFSSUFCTEUgdjIg QVMgKHggaW50LCB5IGludCwgeiBudW1lcmljKDEwLDIpKTsKKworXGQgdjEKK1xkIHYyCisKKy0t IGV4cGxpY2l0IGNhc3RpbmcgaXMgbmVjZXNzYXJ5CitMRVQgdjEgPSAoMSwyLDMuMTQpOjpzdl94 eXo7CitMRVQgdjIgPSAoMTAsMjAsMy4xNCoxMCk6OnYyOworCistLSBzaG91bGQgdG8gd29yayB0 b28gLSB0aGVyZSBhcmUgcHJlcGFyZWQgY2FzdHMKK0xFVCB2MSA9ICgxLDIsMy4xNCk6OnYxOwor CitTRUxFQ1QgdjE7CitTRUxFQ1QgdjI7CitTRUxFQ1QgKHYxKS4qOworU0VMRUNUICh2MikuKjsK KworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3YxJywgJ3onLCBudWxsOjpkb3VibGUgcHJl Y2lzaW9uKTsKK1NFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2MicsICd6JywgbnVsbDo6ZG91 YmxlIHByZWNpc2lvbik7CisKKy0tIHNob3VsZCB0byBmYWlsCitTRUxFQ1QgZ2V0X3NjaGVtYV92 YXJpYWJsZSgndjEnLCAndycsIG51bGw6OmRvdWJsZSBwcmVjaXNpb24pOworU0VMRUNUIGdldF9z Y2hlbWFfdmFyaWFibGUoJ3YyJywgJ3cnLCBudWxsOjpkb3VibGUgcHJlY2lzaW9uKTsKKworQ1JF QVRFIFZBUklBQkxFIHYzIEFTIGludGVnZXI7CitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgn djMnLCAndycsIG51bGw6OmRvdWJsZSBwcmVjaXNpb24pOworCitTRUxFQ1Qgc2V0X3NjaGVtYV92 YXJpYWJsZSgndjEnLCAneicsIDMuMTQgKiAyKTsKK1NFTEVDVCB2MTsKK1NFTEVDVCBzZXRfc2No ZW1hX3ZhcmlhYmxlKCd2MScsICd6JywgbnVsbDo6ZG91YmxlIHByZWNpc2lvbik7CitTRUxFQ1Qg djE7CitTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndjEnLCAneicsIDMuMzMzMzo6ZG91Ymxl IHByZWNpc2lvbik7CitTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndjEnLCAneCcsIDEwMDAw LjIyKTsKK1NFTEVDVCB2MTsKKworU0VMRUNUIHYxLnggKyB2MS56OworU0VMRUNUIHYyLnggKyB2 Mi56OworCistLSBhY2Nlc3MgdG8gY29tcG9zaXRlIGZpZWxkcyBzaG91bGQgYmUgc2FmZSB0b28K Ky0tIHNob3VsZCB0byBmYWlsCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworCitTRUxFQ1Qg djIueDsKKworU0VUIFJPTEUgVE8gREVGQVVMVDsKKworCitEUk9QIFZBUklBQkxFIHYxOworRFJP UCBWQVJJQUJMRSB2MjsKK0RST1AgVkFSSUFCTEUgdjM7CisKK0RST1AgUk9MRSB2YXJfdGVzdF9y b2xlOworCistLSBzY2FsYXIgdmFyaWFibGVzIHNob3VsZCBub3QgYmUgaW4gY29uZmxpY3Qgd2l0 aCBxdWFsaWZpZWQgY29sdW1uCitDUkVBVEUgVkFSSUFCTEUgdmFyeCBBUyB0ZXh0OworU0VMRUNU IHZhcngucmVsbmFtZSBGUk9NIHBnX2NsYXNzIHZhcnggV0hFUkUgdmFyeC5yZWxuYW1lID0gJ3Bn X2NsYXNzJzsKKworLS0gc2hvdWxkIHRvIGZhaWwKK1NFTEVDVCB2YXJ4Lnh4eDsKKworCistLSB2 YXJpYWJsZXMgY2FuIGJlIHVwZGF0ZWQgdW5kZXIgUk8gdHJhbnNhY3Rpb24KKworQkVHSU47CitT RVQgVFJBTlNBQ1RJT04gUkVBRCBPTkxZOworTEVUIHZhcnggPSAnaGVsbG8nOworQ09NTUlUOwor CitTRUxFQ1QgdmFyeDsKKworRFJPUCBWQVJJQUJMRSB2YXJ4OworCitDUkVBVEUgVkFSSUFCTEUg djEgQVMgKGEgaW50LCBiIG51bWVyaWMsIGMgdGV4dCk7CitMRVQgdjEgPSAoMSwgcGkoKSwgJ2hl bGxvJyk7CitTRUxFQ1QgdjE7CitMRVQgdjEuYiA9IDEwLjIyMjI7CitTRUxFQ1QgdjE7CisKKy0t IHNob3VsZCB0byBmYWlsCitMRVQgdjEueCA9IDEwOworCitEUk9QIFZBUklBQkxFIHYxOworCist LSBhcnJheXMgYXJlIHN1cHBvcnRlZAorQ1JFQVRFIFZBUklBQkxFIHZhMSBBUyBudW1lcmljW107 CitMRVQgdmExID0gQVJSQVlbMS4xLDIuMV07CitMRVQgdmExWzFdID0gMTAuMTsKK1NFTEVDVCB2 YTE7CisKK0NSRUFURSBWQVJJQUJMRSB2YTIgQVMgKGEgbnVtZXJpYywgYiBudW1lcmljW10pOwor TEVUIHZhMiA9ICgxMC4xLCBBUlJBWVswLjAsIDAuMF0pOworTEVUIHZhMi5hID0gMTAuMjsKK1NF TEVDVCB2YTI7CitMRVQgdmEyLmJbMV0gPSAxMC4zOworU0VMRUNUIHZhMjsKKworRFJPUCBWQVJJ QUJMRSB2YTE7CitEUk9QIFZBUklBQkxFIHZhMjsKKworLS0gZGVmYXVsdCB2YWx1ZXMKK0NSRUFU RSBWQVJJQUJMRSB2MSBBUyBudW1lcmljIERFRkFVTFQgcGkoKTsKK0xFVCB2MSA9IHYxICogMjsK K1NFTEVDVCB2MTsKKworQ1JFQVRFIFZBUklBQkxFIHYyIEFTIChhIG51bWVyaWMsIGIgdGV4dCBE RUZBVUxUICdoZWxsbycpOworTEVUIHB1YmxpYy52Mi5hID0gcGkoKTsKK1NFTEVDVCB2MjsKKwor RFJPUCBWQVJJQUJMRSB2MTsKK0RST1AgVkFSSUFCTEUgdjI7CisKZGlmZiAtLWdpdCBhL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QKaW5kZXggNTQ4NTBlZTRkNi4uNTFlMGExNzliNiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QKQEAgLTQzMSw2ICs0MzEsNyBAQCBDcmVhdGVSZXBsaWNhdGlvblNsb3RDbWQKIENyZWF0 ZVJvbGVTdG10CiBDcmVhdGVTY2hlbWFTdG10CiBDcmVhdGVTY2hlbWFTdG10Q29udGV4dAorQ3Jl YXRlU2NoZW1hVmFyU3RtdAogQ3JlYXRlU2VxU3RtdAogQ3JlYXRlU3RhdHNTdG10CiBDcmVhdGVT dG10Cg== --001a114732e0870f7f056afbf897--