From unknown Fri Mar 29 10:13:04 2024 X-Loop: owner@bugs.x2go.org Subject: Bug#1135: MySQL Database backend support Reply-To: Walid MOGHRABI , 1135@bugs.x2go.org Resent-From: Walid MOGHRABI Resent-To: x2go-dev@lists.x2go.org Resent-CC: X2Go Developers X-Loop: owner@bugs.x2go.org Resent-Date: Fri, 13 Jan 2017 17:00:02 +0000 Resent-Message-ID: Resent-Sender: owner@bugs.x2go.org X-X2Go-PR-Message: report 1135 X-X2Go-PR-Package: x2goserver X-X2Go-PR-Keywords: patch Received: via spool by submit@bugs.x2go.org id=B.148432653811008 (code B); Fri, 13 Jan 2017 17:00:02 +0000 Received: (at submit) by bugs.x2go.org; 13 Jan 2017 16:55:38 +0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on ymir.das-netzwerkteam.de X-Spam-Level: X-Spam-Status: No, score=0.8 required=3.0 tests=BAYES_50,URIBL_BLOCKED autolearn=ham version=3.3.2 Received: from localhost (localhost [127.0.0.1]) by ymir.das-netzwerkteam.de (Postfix) with ESMTP id 8B0003CDDD for ; Fri, 13 Jan 2017 17:55:32 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at ymir.das-netzwerkteam.de Received: from ymir.das-netzwerkteam.de ([127.0.0.1]) by localhost (ymir.das-netzwerkteam.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Ja2EC9ajA4wY for ; Fri, 13 Jan 2017 17:55:26 +0100 (CET) Received: from zm-01.servicemagic.eu (zm-01.servicemagic.eu [176.31.236.17]) by ymir.das-netzwerkteam.de (Postfix) with ESMTPS id BC66D5DAA7 for ; Fri, 13 Jan 2017 17:55:25 +0100 (CET) Received: from localhost (localhost.localdomain [127.0.0.1]) by zm-01.servicemagic.eu (Postfix) with ESMTP id 058CC80A9221F for ; Fri, 13 Jan 2017 17:55:23 +0100 (CET) X-Amavis-Modified: Mail body modified (using disclaimer) - zm-01.servicemagic.eu X-Virus-Scanned: amavisd-new at servicemagic.eu Received: from zm-01.servicemagic.eu ([127.0.0.1]) by localhost (zm-01.servicemagic.eu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id NCAwZplSIJ4z for ; Fri, 13 Jan 2017 17:55:19 +0100 (CET) Received: from zm-01.servicemagic.eu (localhost.localdomain [127.0.0.1]) by zm-01.servicemagic.eu (Postfix) with ESMTP id 62BE4807CC6AA for ; Fri, 13 Jan 2017 17:55:19 +0100 (CET) Date: Fri, 13 Jan 2017 17:55:19 +0100 (CET) From: Walid MOGHRABI To: submit@bugs.x2go.org Message-ID: <1719550560.33223559.1484326519373.JavaMail.root@servicemagic.eu> In-Reply-To: <1040981999.33222686.1484325938728.JavaMail.root@servicemagic.eu> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_33223557_1572844661.1484326519364" X-Originating-IP: [10.33.100.60] X-Mailer: Zimbra 7.2.0_GA_2669 (ZimbraWebClient - GC55 (Linux)/7.2.0_GA_2669) ------=_Part_33223557_1572844661.1484326519364 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit package: x2goserver priority: wishlist tags: patch This is a proposal patch for a MySQL session storage database backend for X2Go Server. I did this simply because : 1) I'm not used to PostgreSQL and much more skilled with MySQL 2) I do believe MySQL is pretty common on Linux and is widely spread so I guess this can be useful for many other people willing to build a strong TCE setup and not willing to dig into PostgreSQL 3) I find it a lot easier to build a multi-master replication scenario with MySQL than with PostgreSQL (but as I said, I'm much more skilled wih MySQL) This backend is tightly inspired by the PostgreSQL backend and work exactly the same so this is a drop in replacement for it, til now, all my tests seems to work correctly, feel free to test by yourself and report errors. Regards, Walid Moghrabi TRAVAUX.COM BAT I - PARC CEZANNE 2 290 AVENUE GALILEE - CS 80403 13591 AIX EN PROVENCE CEDEX 3 --- DISCLAIMER: This e-mail is private and confidential and may contain proprietary or legally privileged information. It is for the intended recipient only. If you have received this email in error, please notify the author by replying to it and then destroy it. If you are not the intended recipient you must not use, disclose, distribute, copy, print or rely on this e-mail or any attachment. Thank you ------=_Part_33223557_1572844661.1484326519364 Content-Type: text/x-patch; name=MySQL-Database-backend-support.patch Content-Disposition: attachment; filename=MySQL-Database-backend-support.patch Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL1gyR28vU2VydmVyL0RCLnBtIGIvWDJHby9TZXJ2ZXIvREIucG0KaW5kZXgg NDFhMjJlOC4uYjI1MDFmMyAxMDA2NDQKLS0tIGEvWDJHby9TZXJ2ZXIvREIucG0KKysrIGIvWDJH by9TZXJ2ZXIvREIucG0KQEAgLTM4LDYgKzM4LDcgQEAKIHVzZSBYMkdvOjpDb25maWcgcXcoIGdl dF9zcWxjb25maWcgKTsKIHVzZSBYMkdvOjpMb2cgcXcoIGxvZ2xldmVsICk7CiB1c2UgWDJHbzo6 U2VydmVyOjpEQjo6UG9zdGdyZVNRTDsKK3VzZSBYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDsKIHVz ZSBYMkdvOjpVdGlscyBxdyggc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1dCBzeXN0ZW1fY2Fw dHVyZV9zdGRvdXRfb3V0cHV0ICk7CiBzZXRsb2dtYXNrKCBMT0dfVVBUTyhsb2dsZXZlbCgpKSAp OwogCkBAIC01Niw3ICs1Nyw3IEBACiBteSAkZGJ1c2VyOwogbXkgJHNzbG1vZGU7CiAKLWlmICgk YmFja2VuZCBuZSAncG9zdGdyZXMnICYmICRiYWNrZW5kIG5lICdzcWxpdGUnKQoraWYgKCRiYWNr ZW5kIG5lICdwb3N0Z3JlcycgJiYgJGJhY2tlbmQgbmUgJ215c3FsJyAmJiAkYmFja2VuZCBuZSAn c3FsaXRlJykKIHsKIAlkaWUgInVua25vd24gYmFja2VuZCAkYmFja2VuZCI7CiB9CkBAIC03Niw2 ICs3NywxMCBAQAogCXsKIAkJWDJHbzo6U2VydmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJzeXNfcm1z ZXNzaW9uc3Jvb3QoJHNpZCk7CiAJfQorCWlmKCRiYWNrZW5kIGVxICdteXNxbCcpCisJeworCQlY MkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJzeXNfcm1zZXNzaW9uc3Jvb3QoJHNpZCk7CisJfQog CWlmKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsKIAkJc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291 dHB1dCgiJHgyZ29fbGliX3BhdGgvbGlieDJnby1zZXJ2ZXItZGItc3FsaXRlMy13cmFwcGVyIiwg InJtc2Vzc2lvbnNyb290IiwgIiRzaWQiKTsKQEAgLTg4LDYgKzkzLDEwIEBACiAJaWYgKCRiYWNr ZW5kIGVxICdwb3N0Z3JlcycpCiAJewogCQlYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FMOjpk YnN5c19kZWxldGVtb3VudHMoJHNpZCk7CisJfQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQor CXsKKwkJWDJHbzo6U2VydmVyOjpEQjo6TXlTUUw6OmRic3lzX2RlbGV0ZW1vdW50cygkc2lkKTsK IAl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsKQEAgLTEwMyw2ICsxMTIsMTAgQEAK IAl7CiAJCXJldHVybiBYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FMOjpkYnN5c19saXN0c2Vz c2lvbnNyb290KCRzZXJ2ZXIpOwogCX0KKwlpZiAoJGJhY2tlbmQgZXEgJ215c3FsJykKKwl7CisJ CXJldHVybiBYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJzeXNfbGlzdHNlc3Npb25zcm9vdCgk c2VydmVyKTsKKwl9CiAJaWYoJGJhY2tlbmQgZXEgJ3NxbGl0ZScpCiAJewogCQlyZXR1cm4gc3Bs aXQoIlxuIixzeXN0ZW1fY2FwdHVyZV9tZXJnZWRfb3V0cHV0KCIkeDJnb19saWJfcGF0aC9saWJ4 MmdvLXNlcnZlci1kYi1zcWxpdGUzLXdyYXBwZXIiLCAibGlzdHNlc3Npb25zcm9vdCIsICIkc2Vy dmVyIikpOwpAQCAtMTE0LDYgKzEyNywxMCBAQAogCWlmICgkYmFja2VuZCBlcSAncG9zdGdyZXMn KQogCXsKIAkJcmV0dXJuIFgyR286OlNlcnZlcjo6REI6OlBvc3RncmVTUUw6OmRic3lzX2xpc3Rz ZXNzaW9uc3Jvb3RfYWxsKCk7CisJfQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQorCXsKKwkJ cmV0dXJuIFgyR286OlNlcnZlcjo6REI6Ok15U1FMOjpkYnN5c19saXN0c2Vzc2lvbnNyb290X2Fs bCgpOwogCX0KIAlpZiAoJGJhY2tlbmQgZXEgJ3NxbGl0ZScpCiAJewpAQCAtMTI4LDYgKzE0NSwx MCBAQAogCWlmICgkYmFja2VuZCBlcSAncG9zdGdyZXMnKQogCXsKIAkJQG1vdW50cyA9IFgyR286 OlNlcnZlcjo6REI6OlBvc3RncmVTUUw6OmRic3lzX2dldG1vdW50cygkc2lkKTsKKwl9CisJaWYg KCRiYWNrZW5kIGVxICdteXNxbCcpCisJeworCQlAbW91bnRzID0gWDJHbzo6U2VydmVyOjpEQjo6 TXlTUUw6OmRic3lzX2dldG1vdW50cygkc2lkKTsKIAl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxp dGUnKQogCXsKQEAgLTE0Niw2ICsxNjcsMTAgQEAKIAl7CiAJCUBtb3VudHMgPSBYMkdvOjpTZXJ2 ZXI6OkRCOjpQb3N0Z3JlU1FMOjpkYl9nZXRtb3VudHMoJHNpZCk7CiAJfQorCWlmKCRiYWNrZW5k IGVxICdteXNxbCcpCisJeworCQlAbW91bnRzID0gWDJHbzo6U2VydmVyOjpEQjo6TXlTUUw6OmRi X2dldG1vdW50cygkc2lkKTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsKIAkJ QG1vdW50cyA9IHNwbGl0KCJcbiIsc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1dCgiJHgyZ29f bGliX3BhdGgvbGlieDJnby1zZXJ2ZXItZGItc3FsaXRlMy13cmFwcGVyIiwgImdldG1vdW50cyIs ICIkc2lkIikpOwpAQCAtMTYzLDYgKzE4OCwxMCBAQAogCXsKIAkJWDJHbzo6U2VydmVyOjpEQjo6 UG9zdGdyZVNRTDo6ZGJfZGVsZXRlbW91bnQoJHNpZCwgJHBhdGgpOwogCX0KKwlpZiAoJGJhY2tl bmQgZXEgJ215c3FsJykKKwl7CisJCVgyR286OlNlcnZlcjo6REI6Ok15U1FMOjpkYl9kZWxldGVt b3VudCgkc2lkLCAkcGF0aCk7CisJfQogCWlmICgkYmFja2VuZCBlcSAnc3FsaXRlJykKIAl7CiAJ CXN5c3RlbV9jYXB0dXJlX21lcmdlZF9vdXRwdXQoIiR4MmdvX2xpYl9wYXRoL2xpYngyZ28tc2Vy dmVyLWRiLXNxbGl0ZTMtd3JhcHBlciIsICJkZWxldGVtb3VudCIsICIkc2lkIiwgIiRwYXRoIik7 CkBAIC0xNzksNiArMjA4LDEwIEBACiAJaWYgKCRiYWNrZW5kIGVxICdwb3N0Z3JlcycpCiAJewog CQkkcmVzX29rID0gWDJHbzo6U2VydmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJfaW5zZXJ0bW91bnQo JHNpZCwgJHBhdGgsICRjbGllbnQpOworCX0KKwlpZiAoJGJhY2tlbmQgZXEgJ215c3FsJykKKwl7 CisJCSRyZXNfb2sgPSBYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfaW5zZXJ0bW91bnQoJHNp ZCwgJHBhdGgsICRjbGllbnQpOwogCX0KIAlpZiAoJGJhY2tlbmQgZXEgJ3NxbGl0ZScpCiAJewpA QCAtMjAwLDYgKzIzMywxMCBAQAogCXsKIAkJWDJHbzo6U2VydmVyOjpEQjo6UG9zdGdyZVNRTDo6 ZGJfaW5zZXJ0c2Vzc2lvbigkZGlzcGxheSwgJHNlcnZlciwgJHNpZCk7CiAJfQorCWlmICgkYmFj a2VuZCBlcSAnbXlzcWwnKQorCXsKKwkJWDJHbzo6U2VydmVyOjpEQjo6TXlTUUw6OmRiX2luc2Vy dHNlc3Npb24oJGRpc3BsYXksICRzZXJ2ZXIsICRzaWQpOworCX0KIAlpZiAoJGJhY2tlbmQgZXEg J3NxbGl0ZScpCiAJewogCQlteSAkZXJyPXN5c3RlbV9jYXB0dXJlX21lcmdlZF9vdXRwdXQoIiR4 MmdvX2xpYl9wYXRoL2xpYngyZ28tc2VydmVyLWRiLXNxbGl0ZTMtd3JhcHBlciIsICJpbnNlcnRz ZXNzaW9uIiwgIiRkaXNwbGF5IiwgIiRzZXJ2ZXIiLCAiJHNpZCIpOwpAQCAtMjIwLDYgKzI1Nywx MCBAQAogCWlmICgkYmFja2VuZCBlcSAncG9zdGdyZXMnKQogCXsKIAkJWDJHbzo6U2VydmVyOjpE Qjo6UG9zdGdyZVNRTDo6ZGJfaW5zZXJ0c2hhZG93c2Vzc2lvbigkZGlzcGxheSwgJHNlcnZlciwg JHNpZCwgJHNoYWRyZXFfdXNlcik7CisJfQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQorCXsK KwkJWDJHbzo6U2VydmVyOjpEQjo6TXlTUUw6OmRiX2luc2VydHNoYWRvd3Nlc3Npb24oJGRpc3Bs YXksICRzZXJ2ZXIsICRzaWQsICRzaGFkcmVxX3VzZXIpOwogCX0KIAlpZiAoJGJhY2tlbmQgZXEg J3NxbGl0ZScpCiAJewpAQCAtMjQ3LDYgKzI4OCwxMCBAQAogCXsKIAkJWDJHbzo6U2VydmVyOjpE Qjo6UG9zdGdyZVNRTDo6ZGJfY3JlYXRlc2Vzc2lvbigkc2lkLCAkY29va2llLCAkcGlkLCAkY2xp ZW50LCAkZ3JfcG9ydCwgJHNuZF9wb3J0LCAkZnNfcG9ydCwgJHRla2ljdHJsX3BvcnQsICR0ZWtp ZGF0YV9wb3J0KTsKIAl9CisJaWYgKCRiYWNrZW5kIGVxICdteXNxbCcpCisJeworCQlYMkdvOjpT ZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfY3JlYXRlc2Vzc2lvbigkc2lkLCAkY29va2llLCAkcGlkLCAk Y2xpZW50LCAkZ3JfcG9ydCwgJHNuZF9wb3J0LCAkZnNfcG9ydCwgJHRla2ljdHJsX3BvcnQsICR0 ZWtpZGF0YV9wb3J0KTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsKIAkJbXkg JGVycj0gc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1dCgiJHgyZ29fbGliX3BhdGgvbGlieDJn by1zZXJ2ZXItZGItc3FsaXRlMy13cmFwcGVyIiwgImNyZWF0ZXNlc3Npb24iLCAiJHNpZCIsICIk Y29va2llIiwgIiRwaWQiLCAiJGNsaWVudCIsICIkZ3JfcG9ydCIsICIkc25kX3BvcnQiLCAiJGZz X3BvcnQiLCAiJHRla2ljdHJsX3BvcnQiLCAiJHRla2lkYXRhX3BvcnQiKTsKQEAgLTI3Myw2ICsz MTgsMTEgQEAKIAkJIyBmb3IgUG9zdGdyZVNRTCB3ZSBjYW4gdXNlIHRoZSBub3JtYWwgZGJfY3Jl YXRlc2Vzc2lvbiBjb2RlLi4uCiAJCVgyR286OlNlcnZlcjo6REI6OlBvc3RncmVTUUw6OmRiX2Ny ZWF0ZXNlc3Npb24oJHNpZCwgJGNvb2tpZSwgJHBpZCwgJGNsaWVudCwgJGdyX3BvcnQsICRzbmRf cG9ydCwgJGZzX3BvcnQsIC0xLCAtMSk7CiAJfQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQor CXsKKwkJIyBmb3IgTXlTUUwgd2UgY2FuIHVzZSB0aGUgbm9ybWFsIGRiX2NyZWF0ZXNlc3Npb24g Y29kZS4uLgorCQlYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfY3JlYXRlc2Vzc2lvbigkc2lk LCAkY29va2llLCAkcGlkLCAkY2xpZW50LCAkZ3JfcG9ydCwgJHNuZF9wb3J0LCAkZnNfcG9ydCwg LTEsIC0xKTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsKIAkJbXkgJGVycj1z eXN0ZW1fY2FwdHVyZV9tZXJnZWRfb3V0cHV0KCIkeDJnb19saWJfcGF0aC9saWJ4MmdvLXNlcnZl ci1kYi1zcWxpdGUzLXdyYXBwZXIiLCAiY3JlYXRlc2hhZG93c2Vzc2lvbiIsICIkc2lkIiwgIiRj b29raWUiLCAiJHBpZCIsICIkY2xpZW50IiwgIiRncl9wb3J0IiwgIiRzbmRfcG9ydCIsICIkZnNf cG9ydCIsICIkc2hhZHJlcV91c2VyIik7CkBAIC0yOTIsNiArMzQyLDEwIEBACiAJaWYgKCRiYWNr ZW5kIGVxICdwb3N0Z3JlcycpCiAJewogCQlYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FMOjpk Yl9pbnNlcnRwb3J0KCRzZXJ2ZXIsICRzaWQsICRzc2hwb3J0KTsKKwl9CisJaWYgKCRiYWNrZW5k IGVxICdteXNxbCcpCisJeworCQlYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfaW5zZXJ0cG9y dCgkc2VydmVyLCAkc2lkLCAkc3NocG9ydCk7CiAJfQogCWlmICgkYmFja2VuZCBlcSAnc3FsaXRl JykKIAl7CkBAIC0zMTMsNiArMzY3LDEwIEBACiAJewogCQlYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0 Z3JlU1FMOjpkYl9ybXBvcnQoJHNlcnZlciwgJHNpZCwgJHNzaHBvcnQpOwogCX0KKwlpZiAoJGJh Y2tlbmQgZXEgJ215c3FsJykKKwl7CisJCVgyR286OlNlcnZlcjo6REI6Ok15U1FMOjpkYl9ybXBv cnQoJHNlcnZlciwgJHNpZCwgJHNzaHBvcnQpOworCX0KIAlpZiAoJGJhY2tlbmQgZXEgJ3NxbGl0 ZScpCiAJewogCQlzeXN0ZW1fY2FwdHVyZV9tZXJnZWRfb3V0cHV0KCIkeDJnb19saWJfcGF0aC9s aWJ4MmdvLXNlcnZlci1kYi1zcWxpdGUzLXdyYXBwZXIiLCAicm1wb3J0IiwgIiRzZXJ2ZXIiLCAi JHNpZCIsICIkc3NocG9ydCIpOwpAQCAtMzMzLDYgKzM5MSwxMCBAQAogCXsKIAkJWDJHbzo6U2Vy dmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJfcmVzdW1lKCRjbGllbnQsICRzaWQsICRncl9wb3J0LCAk c25kX3BvcnQsICRmc19wb3J0LCAkdGVraWN0cmxfcG9ydCwgJHRla2lkYXRhX3BvcnQpOwogCX0K KwlpZiAoJGJhY2tlbmQgZXEgJ215c3FsJykKKwl7CisJCVgyR286OlNlcnZlcjo6REI6Ok15U1FM OjpkYl9yZXN1bWUoJGNsaWVudCwgJHNpZCwgJGdyX3BvcnQsICRzbmRfcG9ydCwgJGZzX3BvcnQs ICR0ZWtpY3RybF9wb3J0LCAkdGVraWRhdGFfcG9ydCk7CisJfQogCWlmICgkYmFja2VuZCBlcSAn c3FsaXRlJykKIAl7CiAJCXN5c3RlbV9jYXB0dXJlX21lcmdlZF9vdXRwdXQoIiR4MmdvX2xpYl9w YXRoL2xpYngyZ28tc2VydmVyLWRiLXNxbGl0ZTMtd3JhcHBlciIsICJyZXN1bWUiLCAiJGNsaWVu dCIsICIkc2lkIiwgIiRncl9wb3J0IiwgIiRzbmRfcG9ydCIsICIkZnNfcG9ydCIsICIkdGVraWN0 cmxfcG9ydCIsICIkdGVraWRhdGFfcG9ydCIpOwpAQCAtMzQ4LDYgKzQxMCwxMCBAQAogCXsKIAkJ WDJHbzo6U2VydmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJfY2hhbmdlc3RhdHVzKCRzdGF0dXMsICRz aWQpOwogCX0KKwlpZiAoJGJhY2tlbmQgZXEgJ215c3FsJykKKwl7CisJCVgyR286OlNlcnZlcjo6 REI6Ok15U1FMOjpkYl9jaGFuZ2VzdGF0dXMoJHN0YXR1cywgJHNpZCk7CisJfQogCWlmICgkYmFj a2VuZCBlcSAnc3FsaXRlJykKIAl7CiAJCXN5c3RlbV9jYXB0dXJlX21lcmdlZF9vdXRwdXQoIiR4 MmdvX2xpYl9wYXRoL2xpYngyZ28tc2VydmVyLWRiLXNxbGl0ZTMtd3JhcHBlciIsICJjaGFuZ2Vz dGF0dXMiLCAiJHN0YXR1cyIsICIkc2lkIik7CkBAIC0zNjIsNiArNDI4LDEwIEBACiAJaWYgKCRi YWNrZW5kIGVxICdwb3N0Z3JlcycpCiAJewogCQkkc3RhdHVzID0gWDJHbzo6U2VydmVyOjpEQjo6 UG9zdGdyZVNRTDo6ZGJfZ2V0c3RhdHVzKCRzaWQpOworCX0KKwlpZiAoJGJhY2tlbmQgZXEgJ215 c3FsJykKKwl7CisJCSRzdGF0dXMgPSBYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfZ2V0c3Rh dHVzKCRzaWQpOwogCX0KIAlpZiAoJGJhY2tlbmQgZXEgJ3NxbGl0ZScpCiAJewpAQCAtMzc5LDYg KzQ0OSwxMCBAQAogCWlmICgkYmFja2VuZCBlcSAncG9zdGdyZXMnKQogCXsKIAkJQGRpc3BsYXlz ID0gWDJHbzo6U2VydmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJfZ2V0ZGlzcGxheXMoJHNlcnZlcik7 CisJfQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQorCXsKKwkJQGRpc3BsYXlzID0gWDJHbzo6 U2VydmVyOjpEQjo6TXlTUUw6OmRiX2dldGRpc3BsYXlzKCRzZXJ2ZXIpOwogCX0KIAlpZiAoJGJh Y2tlbmQgZXEgJ3NxbGl0ZScpCiAJewpAQCAtMzk4LDYgKzQ3MiwxMCBAQAogCXsKIAkJQHBvcnRz ID0gWDJHbzo6U2VydmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJfZ2V0cG9ydHMoJHNlcnZlcik7CiAJ fQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQorCXsKKwkJQHBvcnRzID0gWDJHbzo6U2VydmVy OjpEQjo6TXlTUUw6OmRiX2dldHBvcnRzKCRzZXJ2ZXIpOworCX0KIAlpZiAoJGJhY2tlbmQgZXEg J3NxbGl0ZScpCiAJewogCQlAcG9ydHMgPSBzcGxpdCgiXG4iLHN5c3RlbV9jYXB0dXJlX21lcmdl ZF9vdXRwdXQoIiR4MmdvX2xpYl9wYXRoL2xpYngyZ28tc2VydmVyLWRiLXNxbGl0ZTMtd3JhcHBl ciIsICJnZXRwb3J0cyIsICIkc2VydmVyIikpOwpAQCAtNDEzLDYgKzQ5MSwxMCBAQAogCWlmICgk YmFja2VuZCBlcSAncG9zdGdyZXMnKQogCXsKIAkJQHNlcnZlcnMgPSBYMkdvOjpTZXJ2ZXI6OkRC OjpQb3N0Z3JlU1FMOjpkYl9nZXRzZXJ2ZXJzKCk7CisJfQorCWlmICgkYmFja2VuZCBlcSAnbXlz cWwnKQorCXsKKwkJQHNlcnZlcnMgPSBYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfZ2V0c2Vy dmVycygpOwogCX0KIAlpZiAoJGJhY2tlbmQgZXEgJ3NxbGl0ZScpCiAJewpAQCAtNDMxLDYgKzUx MywxMCBAQAogCXsKIAkJJGFnZW50ID0gWDJHbzo6U2VydmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJf Z2V0YWdlbnQoJHNpZCk7CiAJfQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQorCXsKKwkJJGFn ZW50ID0gWDJHbzo6U2VydmVyOjpEQjo6TXlTUUw6OmRiX2dldGFnZW50KCRzaWQpOworCX0KIAlp ZigkYmFja2VuZCBlcSAnc3FsaXRlJykKIAl7CiAJCSRhZ2VudD1zeXN0ZW1fY2FwdHVyZV9tZXJn ZWRfb3V0cHV0KCIkeDJnb19saWJfcGF0aC9saWJ4MmdvLXNlcnZlci1kYi1zcWxpdGUzLXdyYXBw ZXIiLCAiZ2V0YWdlbnQiLCAiJHNpZCIpOwpAQCAtNDQ3LDYgKzUzMywxMCBAQAogCXsKIAkJJGRp c3BsYXkgPSBYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FMOjpkYl9nZXRkaXNwbGF5KCRzaWQp OwogCX0KKwlpZiAoJGJhY2tlbmQgZXEgJ215c3FsJykKKwl7CisJCSRkaXNwbGF5ID0gWDJHbzo6 U2VydmVyOjpEQjo6TXlTUUw6OmRiX2dldGRpc3BsYXkoJHNpZCk7CisJfQogCWlmICgkYmFja2Vu ZCBlcSAnc3FsaXRlJykKIAl7CiAJCSRkaXNwbGF5PXN5c3RlbV9jYXB0dXJlX21lcmdlZF9vdXRw dXQoIiR4MmdvX2xpYl9wYXRoL2xpYngyZ28tc2VydmVyLWRiLXNxbGl0ZTMtd3JhcHBlciIsICJn ZXRkaXNwbGF5IiwgIiRzaWQiKTsKQEAgLTQ2Miw2ICs1NTIsMTAgQEAKIAl7CiAJCXJldHVybiBY MkdvOjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FMOjpkYl9saXN0c2Vzc2lvbnMoJHNlcnZlcik7CiAJ fQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQorCXsKKwkJcmV0dXJuIFgyR286OlNlcnZlcjo6 REI6Ok15U1FMOjpkYl9saXN0c2Vzc2lvbnMoJHNlcnZlcik7CisJfQogCWlmICgkYmFja2VuZCBl cSAnc3FsaXRlJykKIAl7CiAJCXJldHVybiBzcGxpdCgiXG4iLHN5c3RlbV9jYXB0dXJlX21lcmdl ZF9vdXRwdXQoIiR4MmdvX2xpYl9wYXRoL2xpYngyZ28tc2VydmVyLWRiLXNxbGl0ZTMtd3JhcHBl ciIsICJsaXN0c2Vzc2lvbnMiLCAiJHNlcnZlciIpKTsKQEAgLTQ3Myw2ICs1NjcsMTAgQEAKIAlp ZigkYmFja2VuZCBlcSAncG9zdGdyZXMnKQogCXsKIAkJcmV0dXJuIFgyR286OlNlcnZlcjo6REI6 OlBvc3RncmVTUUw6OmRiX2xpc3RzZXNzaW9uc19hbGwoKTsKKwl9CisJaWYoJGJhY2tlbmQgZXEg J215c3FsJykKKwl7CisJCXJldHVybiBYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfbGlzdHNl c3Npb25zX2FsbCgpOwogCX0KIAlpZiAoJGJhY2tlbmQgZXEgJ3NxbGl0ZScpCiAJewpAQCAtNDg3 LDYgKzU4NSwxMCBAQAogCXsKIAkJcmV0dXJuIFgyR286OlNlcnZlcjo6REI6OlBvc3RncmVTUUw6 OmRiX2xpc3RzaGFkb3dzZXNzaW9ucygkc2VydmVyKTsKIAl9CisJaWYgKCRiYWNrZW5kIGVxICdt eXNxbCcpCisJeworCQlyZXR1cm4gWDJHbzo6U2VydmVyOjpEQjo6TXlTUUw6OmRiX2xpc3RzaGFk b3dzZXNzaW9ucygkc2VydmVyKTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsK IAkJcmV0dXJuIHNwbGl0KCJcbiIsc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1dCgiJHgyZ29f bGliX3BhdGgvbGlieDJnby1zZXJ2ZXItZGItc3FsaXRlMy13cmFwcGVyIiwgImxpc3RzaGFkb3dz ZXNzaW9ucyIsICIkc2VydmVyIikpOwpAQCAtNDk5LDYgKzYwMSwxMCBAQAogCXsKIAkJcmV0dXJu IFgyR286OlNlcnZlcjo6REI6OlBvc3RncmVTUUw6OmRiX2xpc3RzaGFkb3dzZXNzaW9uc19hbGwo KTsKIAl9CisJaWYoJGJhY2tlbmQgZXEgJ215c3FsJykKKwl7CisJCXJldHVybiBYMkdvOjpTZXJ2 ZXI6OkRCOjpNeVNRTDo6ZGJfbGlzdHNoYWRvd3Nlc3Npb25zX2FsbCgpOworCX0KIAlpZiAoJGJh Y2tlbmQgZXEgJ3NxbGl0ZScpCiAJewogCQlyZXR1cm4gc3BsaXQoIlxuIixzeXN0ZW1fY2FwdHVy ZV9tZXJnZWRfb3V0cHV0KCIkeDJnb19saWJfcGF0aC9saWJ4MmdvLXNlcnZlci1kYi1zcWxpdGUz LXdyYXBwZXIiLCAibGlzdHNoYWRvd3Nlc3Npb25zX2FsbCIpKTsKZGlmZiAtLWdpdCBhL1gyR28v U2VydmVyL0RCL015U1FMLnBtIGIvWDJHby9TZXJ2ZXIvREIvTXlTUUwucG0KbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhlODFkZQotLS0gL2Rldi9udWxsCisrKyBiL1gyR28v U2VydmVyL0RCL015U1FMLnBtCkBAIC0wLDAgKzEsNzM5IEBACisjIENvcHlyaWdodCAoQykgMjAw Ny0yMDE1IFgyR28gUHJvamVjdCAtIGh0dHA6Ly93aWtpLngyZ28ub3JnCisjCisjIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZQorIyBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4sCisjIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9u LCBNQSAwMjExMC0xMzAxLCBVU0EuCisjCisjIENvcHlyaWdodCAoQykgMjAwNy0yMDE1IE9sZWtz YW5kciBTaG5leWRlciA8b2xla3NhbmRyLnNobmV5ZGVyQG9idmlvdXNseS1uaWNlLmRlPgorIyBD b3B5cmlnaHQgKEMpIDIwMDctMjAxNSBIZWluei1NYXJrdXMgR3JhZXNpbmcgPGhlaW56LW0uZ3Jh ZXNpbmdAb2J2aW91c2x5LW5pY2UuZGU+CisKK3BhY2thZ2UgWDJHbzo6U2VydmVyOjpEQjo6TXlT UUw7CisKKz1oZWFkMSBOQU1FCisKK1gyR286OlNlcnZlcjo6REI6Ok15U1FMIC0gWDJHbyBTZXNz aW9uIERhdGFiYXNlIHBhY2thZ2UgZm9yIFBlcmwgKE15U1FMIGJhY2tlbmQpCisKKz1oZWFkMSBE RVNDUklQVElPTgorCitYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTCBQZXJsIHBhY2thZ2UgZm9yIFgy R286OlNlcnZlci4KKworPWN1dAorCit1c2Ugc3RyaWN0OwordXNlIERCSTsKK3VzZSBQT1NJWDsK K3VzZSBTeXM6OlN5c2xvZyBxdyggOnN0YW5kYXJkIDptYWNyb3MgKTsKKwordXNlIFgyR286Okxv ZyBxdyggbG9nbGV2ZWwgKTsKK3VzZSBYMkdvOjpDb25maWcgcXcoIGdldF9jb25maWcgZ2V0X3Nx bGNvbmZpZyApOwordXNlIFgyR286OlV0aWxzIHF3KCBzYW5pdGl6ZXIgc3lzdGVtX2NhcHR1cmVf c3Rkb3V0X291dHB1dCBpc190cnVlICk7CisKK3NldGxvZ21hc2soIExPR19VUFRPKGxvZ2xldmVs KCkpICk7CisKK3VzZSBiYXNlICdFeHBvcnRlcic7CisKK291ciBARVhQT1JUPSgnZGJfbGlzdHNl c3Npb25zJywnZGJfbGlzdHNlc3Npb25zX2FsbCcsICdkYl9nZXRzZXJ2ZXJzJywgJ2RiX2dldGFn ZW50JywgJ2RiX3Jlc3VtZScsICdkYl9jaGFuZ2VzdGF0dXMnLCAnZGJfZ2V0c3RhdHVzJywKKyAg ICAgICAgICAgICAnZGJfZ2V0ZGlzcGxheXMnLCAnZGJfaW5zZXJ0c2Vzc2lvbicsICdkYl9pbnNl cnRzaGFkb3dzZXNzaW9uJywgJ2RiX2dldHBvcnRzJywgJ2RiX2luc2VydHBvcnQnLCAnZGJfcm1w b3J0JywgJ2RiX2NyZWF0ZXNlc3Npb24nLCAnZGJfY3JlYXRlc2hhZG93c2Vzc2lvbicsICdkYl9p bnNlcnRtb3VudCcsCisgICAgICAgICAgICAgJ2RiX2dldG1vdW50cycsICdkYl9kZWxldGVtb3Vu dCcsICdkYl9nZXRkaXNwbGF5JywgJ2Ric3lzX2dldG1vdW50cycsICdkYnN5c19saXN0c2Vzc2lv bnNyb290JywKKyAgICAgICAgICAgICAnZGJzeXNfbGlzdHNlc3Npb25zcm9vdF9hbGwnLCAnZGJz eXNfcm1zZXNzaW9uc3Jvb3QnLCAnZGJzeXNfZGVsZXRlbW91bnRzJywgJ2RiX2xpc3RzaGFkb3dz ZXNzaW9ucycsJ2RiX2xpc3RzaGFkb3dzZXNzaW9uc19hbGwnLCApOworCitteSAoJHVuYW1lLCAk cGFzcywgJHVpZCwgJHBnaWQsICRxdW90YSwgJGNvbW1lbnQsICRnY29zLCAkaG9tZWRpciwgJHNo ZWxsLCAkZXhwaXJlKSA9IGdldHB3dWlkKCQ8KTsKK215ICRyZWFsdXNlcj0kdW5hbWU7CisKK215 ICRob3N0OworbXkgJHBvcnQ7CitteSAkZGI9IngyZ29fc2Vzc2lvbnMiOworI215ICRkYnBhc3M9 ImllY2g3eWFIIjsKKyNteSAkZGJ1c2VyPSJ4MmdvZGJ1c2VyIjsKK215ICRkYnBhc3M7CitteSAk ZGJ1c2VyOworbXkgJHNzbG1vZGU7CitteSAkd2l0aF9UZUtpOworCitzdWIgaW5pdF9kYgorewor CSMgdGhlICRDb25maWcgaXMgcmVxdWlyZWQgbGF0ZXIgKHNlZSBiZWxvdy4uLikKKwlteSAkQ29u ZmlnID0gZ2V0X2NvbmZpZzsKKwkkd2l0aF9UZUtpID0gaXNfdHJ1ZSgkQ29uZmlnLT5wYXJhbSgi dGVsZWtpbmVzaXMuZW5hYmxlIikpOworCisJaWYgKCAhICggJGRidXNlciBhbmQgJGRicGFzcyAp ICkKKwl7CisJCW15ICRTcWxDb25maWcgPSBnZXRfc3FsY29uZmlnOworCQlteSAkeDJnb19saWJf cGF0aD1zeXN0ZW1fY2FwdHVyZV9zdGRvdXRfb3V0cHV0KCJ4MmdvcGF0aCIsICJsaWJleGVjIik7 CisKKwkJbXkgJGJhY2tlbmQ9JFNxbENvbmZpZy0+cGFyYW0oImJhY2tlbmQiKTsKKwkJaWYgKCAk YmFja2VuZCBuZSAibXlzcWwiICkKKwkJeworCQkJZGllICJYMkdvIHNlcnZlciBpcyBub3QgY29u ZmlndXJlZCB0byB1c2UgdGhlIE15U1FMIHNlc3Npb24gZGIgYmFja2VuZCI7CisJCX0KKworCQkk aG9zdD0kU3FsQ29uZmlnLT5wYXJhbSgibXlzcWwuaG9zdCIpOworCQkkcG9ydD0kU3FsQ29uZmln LT5wYXJhbSgibXlzcWwucG9ydCIpOworCQlpZiAoISRob3N0KQorCQl7CisJCQkkaG9zdD0nbG9j YWxob3N0JzsKKwkJfQorCQlpZiAoISRwb3J0KQorCQl7CisJCQkkcG9ydD0nMzMwNic7CisJCX0K KwkJbXkgJHBhc3NmaWxlOworCQlpZiAoJHVuYW1lIGVxICdyb290JykKKwkJeworCQkJJGRidXNl cj0neDJnb2RidXNlcic7CisJCQkkcGFzc2ZpbGU9Ii9ldGMveDJnby94Mmdvc3FsL3Bhc3N3b3Jk cy94MmdvYWRtaW4iOworCQl9CisJCWVsc2UKKwkJeworCQkJJGRidXNlcj0ieDJnb3VzZXJfJHVu YW1lIjsKKwkJCSRwYXNzZmlsZT0iJGhvbWVkaXIvLngyZ28vc3FscGFzcyI7CisJCX0KKwkJb3Bl biAoRkwsIjwgJHBhc3NmaWxlIikgb3IgZGllICJDYW4ndCByZWFkIHBhc3N3b3JkIGZpbGUgJHBh c3NmaWxlPGJyPiI7CisJCSRkYnBhc3M9PEZMPjsKKwkJY2xvc2UoRkwpOworCQljaG9tcCgkZGJw YXNzKTsKKwl9CisKKwlteSAkZGJoPURCSS0+Y29ubmVjdCgiZGJpOm15c3FsOmRhdGFiYXNlPSRk Yjtob3N0PSRob3N0O3BvcnQ9JHBvcnQiLCIkZGJ1c2VyIiwiJGRicGFzcyIse1JhaXNlRXJyb3Ig PT4gMX0pIG9yIGRpZSAkXzsKKworCXJldHVybiAkZGJoOworfQorCitzdWIgZGJzeXNfcm1zZXNz aW9uc3Jvb3QKK3sKKwlteSAkZGJoID0gaW5pdF9kYigpOworCWNoZWNrX3Jvb3QoKTsKKwlteSAk c2lkPXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWlzc2VkIjsKKwlteSAk c3RoPSRkYmgtPnByZXBhcmUoImRlbGV0ZSBmcm9tIHNlc3Npb25zICB3aGVyZSBzZXNzaW9uX2lk PT8iKTsKKwkkc3RoLT5leGVjdXRlKCRzaWQpOworCWlmICgkc3RoLT5lcnIoKSkKKwl7CisJCXN5 c2xvZygnZXJyb3InLCAicm1zZXNzaW9uc3Jvb3QgKE15U1FMIHNlc3Npb24gZGIgYmFja2VuZCkg ZmFpbGVkIHdpdGggZXhpdGNvZGU6ICRzdGgtPmVycigpIik7CisJCWRpZTsKKwl9CisJJHN0aC0+ ZmluaXNoKCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gMTsKK30KKworc3ViIGRic3lzX2xpc3Rz ZXNzaW9uc3Jvb3QKK3sKKwlteSAkZGJoID0gaW5pdF9kYigpOworCWNoZWNrX3Jvb3QoKTsKKwlt eSAkc2VydmVyPXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzZXJ2ZXJcIiBtaXNzZWQiOworCW15 IEBzdHJpbmdzOworCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgic2VsZWN0IGFnZW50X3BpZCwgc2Vz c2lvbl9pZCwgZGlzcGxheSwgc2VydmVyLCBzdGF0dXMsCisJICAgICAgICAgICAgICAgICAgICAg ICBEQVRFX0ZPUk1BVChpbml0X3RpbWUsICclWS0lbS0lZFQlSDolSTolUycpLAorCSAgICAgICAg ICAgICAgICAgICAgICAgY29va2llLGNsaWVudCxncl9wb3J0LHNvdW5kX3BvcnQsCisJICAgICAg ICAgICAgICAgICAgICAgICBEQVRFX0ZPUk1BVChsYXN0X3RpbWUsICclWS0lbS0lZFQlSDolSTol UycpLAorCSAgICAgICAgICAgICAgICAgICAgICAgdW5hbWUsCisJICAgICAgICAgICAgICAgICAg ICAgICBNT0QoVU5JWF9USU1FU1RBTVAoTk9XKCkpIC0gVU5JWF9USU1FU1RBTVAoaW5pdF90aW1l KSwgODY0MDApLGZzX3BvcnQsCisJICAgICAgICAgICAgICAgICAgICAgICB0ZWtpY3RybF9wb3J0 LCB0ZWtpZGF0YV9wb3J0IGZyb20gc2Vzc2lvbnMKKwkgICAgICAgICAgICAgICAgICAgICAgIHdo ZXJlIHNlcnZlcj0/ICBvcmRlciBieSBzdGF0dXMgZGVzYyIpOworCSRzdGgtPmV4ZWN1dGUoJHNl cnZlcik7CisJaWYgKCRzdGgtPmVycigpKSB7CisJCXN5c2xvZygnZXJyb3InLCAibGlzdHNlc3Np b25zcm9vdCAoTXlTUUwgc2Vzc2lvbiBkYiBiYWNrZW5kKSBmYWlsZWQgd2l0aCBleGl0Y29kZTog JHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7CisJfQorCW15IEBzZXNzaW9ucyA9IGZldGNocm93X2Fy cmF5X2RhdGFzZXRzKCRzdGgpOworCSRzdGgtPmZpbmlzaCgpOworCXVuZGVmICRkYmg7CisJcmV0 dXJuIEBzZXNzaW9uczsKK30KKworc3ViIGRic3lzX2xpc3RzZXNzaW9uc3Jvb3RfYWxsCit7CisJ bXkgJGRiaCA9IGluaXRfZGIoKTsKKwljaGVja19yb290KCk7CisJbXkgQHN0cmluZ3M7CisJbXkg JHN0aD0kZGJoLT5wcmVwYXJlKCJzZWxlY3QgYWdlbnRfcGlkLCBzZXNzaW9uX2lkLCBkaXNwbGF5 LCBzZXJ2ZXIsIHN0YXR1cywKKwkgICAgICAgICAgICAgICAgICAgICAgIERBVEVfRk9STUFUKGlu aXRfdGltZSwgJyVZLSVtLSVkVCVIOiVJOiVTJyksCisJICAgICAgICAgICAgICAgICAgICAgICBj b29raWUsY2xpZW50LGdyX3BvcnQsc291bmRfcG9ydCwKKwkgICAgICAgICAgICAgICAgICAgICAg IERBVEVfRk9STUFUKGxhc3RfdGltZSwgJyVZLSVtLSVkVCVIOiVJOiVTJyksCisJICAgICAgICAg ICAgICAgICAgICAgICB1bmFtZSwKKwkgICAgICAgICAgICAgICAgICAgICAgIE1PRChVTklYX1RJ TUVTVEFNUChOT1coKSkgLSBVTklYX1RJTUVTVEFNUChpbml0X3RpbWUpLCA4NjQwMCksZnNfcG9y dCwKKwkgICAgICAgICAgICAgICAgICAgICAgIHRla2ljdHJsX3BvcnQsIHRla2lkYXRhX3BvcnQg ZnJvbSBzZXNzaW9ucworCSAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIgYnkgc3RhdHVzIGRl c2MiKTsKKwkkc3RoLT5leGVjdXRlKCk7CisJaWYgKCRzdGgtPmVycigpKQorCXsKKwkJc3lzbG9n KCdlcnJvcicsICJsaXN0c2Vzc2lvbnNyb290X2FsbCAoTXlTUUwgc2Vzc2lvbiBkYiBiYWNrZW5k KSBmYWlsZWQgd2l0aCBleGl0Y29kZTogJHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7CisJfQorCW15 IEBzZXNzaW9ucyA9IGZldGNocm93X2FycmF5X2RhdGFzZXRzKCRzdGgpOworCSRzdGgtPmZpbmlz aCgpOworCXVuZGVmICRkYmg7CisJcmV0dXJuIEBzZXNzaW9uczsKK30KKworc3ViIGRic3lzX2Rl bGV0ZW1vdW50cworeworCW15ICRkYmggPSBpbml0X2RiKCk7CisJbXkgJHNpZD1zaGlmdCBvciBk aWUgImFyZ3VtZW50IFwic2Vzc2lvbl9pZFwiIG1pc3NlZCI7CisJY2hlY2tfdXNlcigkc2lkKTsK KwlteSAkc3RoPSRkYmgtPnByZXBhcmUoImRlbGV0ZSBmcm9tIG1vdW50cyB3aGVyZSBzZXNzaW9u X2lkPT8iKTsKKwkkc3RoLT5leGVjdXRlKCRzaWQpOworCWlmICgkc3RoLT5lcnIoKSkKKwl7CisJ CXN5c2xvZygnZXJyb3InLCAiZGVsZXRlbW91bnRzIChNeVNRTCBzZXNzaW9uIGRiIGJhY2tlbmQp IGZhaWxlZCB3aXRoIGV4aXRjb2RlOiAkc3RoLT5lcnIoKSIpOworCQlkaWUoKTsKKwl9CisJJHN0 aC0+ZmluaXNoKCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gMTsKK30KKworc3ViIGRiX2dldG1v dW50cworeworCW15ICRkYmggPSBpbml0X2RiKCk7CisJbXkgJHNpZD1zaGlmdCBvciBkaWUgImFy Z3VtZW50IFwic2Vzc2lvbl9pZFwiIG1pc3NlZCI7CisJJHNpZCA9IHNhbml0aXplcigneDJnb3Np ZCcsICRzaWQpIG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWFsZm9ybWVkIjsKKwlj aGVja191c2VyKCRzaWQpOworCW15IEBzdHJpbmdzOworCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgi c2VsZWN0IGNsaWVudCwgcGF0aCBmcm9tIG1vdW50cyB3aGVyZSBzZXNzaW9uX2lkPT8iKTsKKwkk c3RoLT5leGVjdXRlKCRzaWQpOworCWlmICgkc3RoLT5lcnIoKSkKKwl7CisJCXN5c2xvZygnZXJy b3InLCAiZ2V0bW91bnRzIChNeVNRTCBzZXNzaW9uIGRiIGJhY2tlbmQpIGZhaWxlZCB3aXRoIGV4 aXRjb2RlOiAkc3RoLT5lcnIoKSIpOworCQlkaWU7CisJfQorCW15IEBtb3VudHMgPSBmZXRjaHJv d19hcnJheV9kYXRhc2V0cygkc3RoKTsKKwkkc3RoLT5maW5pc2goKTsKKwl1bmRlZiAkZGJoOwor CXJldHVybiBAbW91bnRzOworfQorCitzdWIgZGJfZGVsZXRlbW91bnQKK3sKKwlteSAkZGJoID0g aW5pdF9kYigpOworCW15ICRzaWQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRc IiBtaXNzZWQiOworCSRzaWQgPSBzYW5pdGl6ZXIoJ3gyZ29zaWQnLCAkc2lkKSBvciBkaWUgImFy Z3VtZW50IFwic2Vzc2lvbl9pZFwiIG1hbGZvcm1lZCI7CisJbXkgJHBhdGg9c2hpZnQgb3IgZGll ICJhcmd1bWVudCBcInBhdGhcIiBtaXNzZWQiOworCWNoZWNrX3VzZXIoJHNpZCk7CisJbXkgJHN0 aD0kZGJoLT5wcmVwYXJlKCJkZWxldGUgZnJvbSBtb3VudHMgd2hlcmUgc2Vzc2lvbl9pZD0/IGFu ZCBwYXRoPT8iKTsKKwkkc3RoLT5leGVjdXRlKCRzaWQsICRwYXRoKTsKKwlpZiAoJHN0aC0+ZXJy KCkpCisJeworCQlzeXNsb2coJ2Vycm9yJywgImRlbGV0ZW1vdW50IChNeVNRTCBzZXNzaW9uIGRi IGJhY2tlbmQpIGZhaWxlZCB3aXRoIGV4aXRjb2RlOiAkc3RoLT5lcnIoKSIpOworCQlkaWUoKTsK Kwl9CisJJHN0aC0+ZmluaXNoKCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gMTsKK30KKworc3Vi IGRiX2luc2VydG1vdW50Cit7CisJbXkgJGRiaCA9IGluaXRfZGIoKTsKKwlteSAkc2lkPXNoaWZ0 IG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWlzc2VkIjsKKwkkc2lkID0gc2FuaXRp emVyKCd4Mmdvc2lkJywgJHNpZCkgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRcIiBtYWxm b3JtZWQiOworCW15ICRwYXRoPXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJwYXRoXCIgbWlzc2Vk IjsKKwlteSAkY2xpZW50PXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJjbGllbnRcIiBtaXNzZWQi OworCWNoZWNrX3VzZXIoJHNpZCk7CisJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJpbnNlcnQgaW50 byBtb3VudHMgKHNlc3Npb25faWQscGF0aCxjbGllbnQpIHZhbHVlcyAgKD8sID8sID8pIik7CisJ JHN0aC0+ZXhlY3V0ZSgkc2lkLCAkcGF0aCwgJGNsaWVudCk7CisJbXkgJHN1Y2Nlc3MgPSAwOwor CWlmKCEgJHN0aC0+ZXJyKCkpCisJeworCQkkc3VjY2VzcyA9IDE7CisJfSBlbHNlIHsKKwkJc3lz bG9nKCdkZWJ1ZycsICJpbnNlcnRtb3VudCAoTXlTUUwgc2Vzc2lvbiBkYiBiYWNrZW5kKSBmYWls ZWQgd2l0aCBleGl0Y29kZTogJHN0aC0+ZXJyKCksIHRoaXMgaXNzdWUgd2lsbCBiZSBpbnRlcnBy ZXRlZCBhczogU1NIRlMgc2hhcmUgYWxyZWFkeSBtb3VudGVkIik7CisJfQorCSRzdGgtPmZpbmlz aCgpOworCXVuZGVmICRkYmg7CisJcmV0dXJuICRzdWNjZXNzOworfQorCitzdWIgZGJfaW5zZXJ0 c2Vzc2lvbgoreworCW15ICRkYmggPSBpbml0X2RiKCk7CisJbXkgJGRpc3BsYXk9c2hpZnQgb3Ig ZGllICJhcmd1bWVudCBcImRpc3BsYXlcIiBtaXNzZWQiOworCSRkaXNwbGF5ID0gc2FuaXRpemVy KCdudW0nLCAkZGlzcGxheSkgb3IgZGllICJhcmd1bWVudCBcImRpc3BsYXlcIiBtYWxmb3JtZWQi OworCW15ICRzZXJ2ZXI9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNlcnZlclwiIG1pc3NlZCI7 CisJbXkgJHNpZD1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwic2Vzc2lvbl9pZFwiIG1pc3NlZCI7 CisJJHNpZCA9IHNhbml0aXplcigneDJnb3NpZCcsICRzaWQpIG9yIGRpZSAiYXJndW1lbnQgXCJz ZXNzaW9uX2lkXCIgbWFsZm9ybWVkIjsKKwljaGVja191c2VyKCRzaWQpOworCW15ICRzdGg9JGRi aC0+cHJlcGFyZSgiaW5zZXJ0IGludG8gc2Vzc2lvbnMgKGRpc3BsYXksc2VydmVyLHVuYW1lLHNl c3Npb25faWQsIGluaXRfdGltZSwgbGFzdF90aW1lKSB2YWx1ZXMKKwkgICAgICAgICAgICAgICAg ICAgICAgICg/LCA/LCA/LCA/LCBOT1coKSwgTk9XKCkpIik7CisJJHN0aC0+ZXhlY3V0ZSgkZGlz cGxheSwgJHNlcnZlciwgJHJlYWx1c2VyLCAkc2lkKSBvciBkaWUgJF87CisJJHN0aC0+ZmluaXNo KCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gMTsKK30KKworc3ViIGRiX2luc2VydHNoYWRvd3Nl c3Npb24KK3sKKwlteSAkZGJoID0gaW5pdF9kYigpOworCW15ICRkaXNwbGF5PXNoaWZ0IG9yIGRp ZSAiYXJndW1lbnQgXCJkaXNwbGF5XCIgbWlzc2VkIjsKKwkkZGlzcGxheSA9IHNhbml0aXplcign bnVtJywgJGRpc3BsYXkpIG9yIGRpZSAiYXJndW1lbnQgXCJkaXNwbGF5XCIgbWFsZm9ybWVkIjsK KwlteSAkc2VydmVyPXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzZXJ2ZXJcIiBtaXNzZWQiOwor CW15ICRzaWQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRcIiBtaXNzZWQiOwor CSRzaWQgPSBzYW5pdGl6ZXIoJ3gyZ29zaWQnLCAkc2lkKSBvciBkaWUgImFyZ3VtZW50IFwic2Vz c2lvbl9pZFwiIG1hbGZvcm1lZCI7CisJbXkgJHNoYWRyZXFfdXNlciA9IHNoaWZ0IG9yIGRpZSAi YXJndW1lbnQgXCJzaGFkcmVxX3VzZXJcIiBtaXNzZWQiOworCW15ICRmYWtlX3NpZCA9ICRzaWQ7 CisJJGZha2Vfc2lkID1+IHMvJHNoYWRyZXFfdXNlci0vJHJlYWx1c2VyLS87CisJY2hlY2tfdXNl cigkZmFrZV9zaWQpOworCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiaW5zZXJ0IGludG8gc2Vzc2lv bnMgKGRpc3BsYXksc2VydmVyLHVuYW1lLHNlc3Npb25faWQsIGluaXRfdGltZSwgbGFzdF90aW1l KSB2YWx1ZXMKKwkgICAgICAgICAgICAgICAgICAgICAgICg/LCA/LCA/LCA/LCBOT1coKSwgTk9X KCkpIik7CisJJHN0aC0+ZXhlY3V0ZSgkZGlzcGxheSwgJHNlcnZlciwgJHNoYWRyZXFfdXNlciwg JHNpZCkgb3IgZGllICRfOworCSRzdGgtPmZpbmlzaCgpOworCXVuZGVmICRkYmg7CisJcmV0dXJu IDE7Cit9CisKK3N1YiBkYl9jcmVhdGVzZXNzaW9uCit7CisJbXkgJGRiaCA9IGluaXRfZGIoKTsK KwlteSAkc2lkPXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWlzc2VkIjsK Kwkkc2lkID0gc2FuaXRpemVyKCd4Mmdvc2lkJywgJHNpZCkgb3IgZGllICJhcmd1bWVudCBcInNl c3Npb25faWRcIiBtYWxmb3JtZWQiOworCW15ICRjb29raWU9c2hpZnQgb3IgZGllImFyZ3VtZW50 IFwiY29va2llXCIgbWlzc2VkIjsKKwlteSAkcGlkPXNoaWZ0IG9yIGRpZSJhcmd1bWVudCBcInBp ZFwiIG1pc3NlZCI7CisJJHBpZCA9IHNhbml0aXplcignbnVtJywgJHBpZCkgb3IgZGllICJhcmd1 bWVudCBcInBpZFwiIG1hbGZvcm1lZCI7CisJbXkgJGNsaWVudD1zaGlmdCBvciBkaWUiYXJndW1l bnQgXCJjbGllbnRcIiBtaXNzZWQiOworCW15ICRncl9wb3J0PXNoaWZ0IG9yIGRpZSJhcmd1bWVu dCBcImdyX3BvcnRcIiBtaXNzZWQiOworCSRncl9wb3J0ID0gc2FuaXRpemVyKCdudW0nLCAkZ3Jf cG9ydCkgb3IgZGllICJhcmd1bWVudCBcImdyX3BvcnRcIiBtYWxmb3JtZWQiOworCW15ICRzbmRf cG9ydD1zaGlmdCBvciBkaWUiYXJndW1lbnQgXCJzbmRfcG9ydFwiIG1pc3NlZCI7CisJJHNuZF9w b3J0ID0gc2FuaXRpemVyKCdudW0nLCAkc25kX3BvcnQpIG9yIGRpZSAiYXJndW1lbnQgXCJzbmRf cG9ydFwiIG1hbGZvcm1lZCI7CisJbXkgJGZzX3BvcnQ9c2hpZnQgb3IgZGllImFyZ3VtZW50IFwi ZnNfcG9ydFwiIG1pc3NlZCI7CisJJGZzX3BvcnQgPSBzYW5pdGl6ZXIoJ251bScsICRmc19wb3J0 KSBvciBkaWUgImFyZ3VtZW50IFwiZnNfcG9ydFwiIG1hbGZvcm1lZCI7CisJbXkgJHRla2ljdHJs X3BvcnQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInRla2ljdHJsX3BvcnRcIiBtaXNzZWQiOwor CSR0ZWtpY3RybF9wb3J0ID0gc2FuaXRpemVyKCdwbm51bScsICR0ZWtpY3RybF9wb3J0KSBvciBk aWUgImFyZ3VtZW50IFwidGVraWN0cmxfcG9ydFwiIG1hbGZvcm1lZCI7CisJbXkgJHRla2lkYXRh X3BvcnQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInRla2lkYXRhX3BvcnRcIiBtaXNzZWQiOwor CSR0ZWtpZGF0YV9wb3J0ID0gc2FuaXRpemVyKCdwbm51bScsICR0ZWtpZGF0YV9wb3J0KSBvciBk aWUgImFyZ3VtZW50IFwidGVraWRhdGFfcG9ydFwiIG1hbGZvcm1lZCI7CisJY2hlY2tfdXNlcigk c2lkKTsKKwlteSAkc3RoPSRkYmgtPnByZXBhcmUoInVwZGF0ZSBzZXNzaW9ucyBzZXQgc3RhdHVz PSdSJyxsYXN0X3RpbWU9Tk9XKCksY29va2llPT8sYWdlbnRfcGlkPT8sCisJICAgICAgICAgICAg ICAgICAgICAgICBjbGllbnQ9Pyxncl9wb3J0PT8sc291bmRfcG9ydD0/LGZzX3BvcnQ9Pyx0ZWtp Y3RybF9wb3J0PT8sdGVraWRhdGFfcG9ydD0/IHdoZXJlIHNlc3Npb25faWQ9PyBhbmQgdW5hbWU9 PyIpOworCSRzdGgtPmV4ZWN1dGUoJGNvb2tpZSwgJHBpZCwgJGNsaWVudCwgJGdyX3BvcnQsICRz bmRfcG9ydCwgJGZzX3BvcnQsICR0ZWtpY3RybF9wb3J0LCAkdGVraWRhdGFfcG9ydCwgJHNpZCwg JHJlYWx1c2VyKTsKKwlpZiAoJHN0aC0+ZXJyKCkpCisJeworCQlzeXNsb2coJ2Vycm9yJywgImNy ZWF0ZXNlc3Npb24gKE15U1FMIHNlc3Npb24gZGIgYmFja2VuZCkgZmFpbGVkIHdpdGggZXhpdGNv ZGU6ICRzdGgtPmVycigpIik7CisJCWRpZSgpOworCX0KKwkkc3RoLT5maW5pc2goKTsKKwl1bmRl ZiAkZGJoOworCXJldHVybiAxOworfQorCitzdWIgZGJfY3JlYXRlc2hhZG93c2Vzc2lvbgorewor CW15ICRkYmggPSBpbml0X2RiKCk7CisJbXkgJHNpZD1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwi c2Vzc2lvbl9pZFwiIG1pc3NlZCI7CisJJHNpZCA9IHNhbml0aXplcigneDJnb3NpZCcsICRzaWQp IG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWFsZm9ybWVkIjsKKwlteSAkY29va2ll PXNoaWZ0IG9yIGRpZSJhcmd1bWVudCBcImNvb2tpZVwiIG1pc3NlZCI7CisJbXkgJHBpZD1zaGlm dCBvciBkaWUiYXJndW1lbnQgXCJwaWRcIiBtaXNzZWQiOworCSRwaWQgPSBzYW5pdGl6ZXIoJ251 bScsICRwaWQpIG9yIGRpZSAiYXJndW1lbnQgXCJwaWRcIiBtYWxmb3JtZWQiOworCW15ICRjbGll bnQ9c2hpZnQgb3IgZGllImFyZ3VtZW50IFwiY2xpZW50XCIgbWlzc2VkIjsKKwlteSAkZ3JfcG9y dD1zaGlmdCBvciBkaWUiYXJndW1lbnQgXCJncl9wb3J0XCIgbWlzc2VkIjsKKwkkZ3JfcG9ydCA9 IHNhbml0aXplcignbnVtJywgJGdyX3BvcnQpIG9yIGRpZSAiYXJndW1lbnQgXCJncl9wb3J0XCIg bWFsZm9ybWVkIjsKKwlteSAkc25kX3BvcnQ9c2hpZnQgb3IgZGllImFyZ3VtZW50IFwic25kX3Bv cnRcIiBtaXNzZWQiOworCSRzbmRfcG9ydCA9IHNhbml0aXplcignbnVtJywgJHNuZF9wb3J0KSBv ciBkaWUgImFyZ3VtZW50IFwic25kX3BvcnRcIiBtYWxmb3JtZWQiOworCW15ICRmc19wb3J0PXNo aWZ0IG9yIGRpZSJhcmd1bWVudCBcImZzX3BvcnRcIiBtaXNzZWQiOworCSRmc19wb3J0ID0gc2Fu aXRpemVyKCdudW0nLCAkZnNfcG9ydCkgb3IgZGllICJhcmd1bWVudCBcImZzX3BvcnRcIiBtYWxm b3JtZWQiOworCW15ICRzaGFkcmVxX3VzZXIgPSBzaGlmdCBvciBkaWUgImFyZ3VtZW50IFwic2hh ZHJlcV91c2VyXCIgbWlzc2VkIjsKKwljaGVja191c2VyKCRzaWQpOworCW15ICRzdGg9JGRiaC0+ cHJlcGFyZSgidXBkYXRlIHNlc3Npb25zIHNldCBzdGF0dXM9J1InLGxhc3RfdGltZT1OT1coKSxj b29raWU9PyxhZ2VudF9waWQ9PywKKwkgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudD0/LGdy X3BvcnQ9Pyxzb3VuZF9wb3J0PT8sZnNfcG9ydD0/LHRla2ljdHJsX3BvcnQ9LTEsdGVraWRhdGFf cG9ydD0tMSB3aGVyZSBzZXNzaW9uX2lkPT8gYW5kIHVuYW1lPT8iKTsKKwkkc3RoLT5leGVjdXRl KCRjb29raWUsICRwaWQsICRjbGllbnQsICRncl9wb3J0LCAkc25kX3BvcnQsICRmc19wb3J0LCAk c2lkLCAkc2hhZHJlcV91c2VyKTsKKwlpZiAoJHN0aC0+ZXJyKCkpCisJeworCQlzeXNsb2coJ2Vy cm9yJywgImNyZWF0ZXNoYWRvd3Nlc3Npb24gKE15U1FMIHNlc3Npb24gZGIgYmFja2VuZCkgZmFp bGVkIHdpdGggZXhpdGNvZGU6ICRzdGgtPmVycigpIik7CisJCWRpZSgpOworCX0KKwkkc3RoLT5m aW5pc2goKTsKKwl1bmRlZiAkZGJoOworCXJldHVybiAxOworfQorCitzdWIgZGJfaW5zZXJ0cG9y dAoreworCW15ICRkYmggPSBpbml0X2RiKCk7CisJbXkgJHNlcnZlcj1zaGlmdCBvciBkaWUgImFy Z3VtZW50IFwic2VydmVyXCIgbWlzc2VkIjsKKwlteSAkc2lkPXNoaWZ0IG9yIGRpZSAiYXJndW1l bnQgXCJzZXNzaW9uX2lkXCIgbWlzc2VkIjsKKwkkc2lkID0gc2FuaXRpemVyKCd4Mmdvc2lkJywg JHNpZCkgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRcIiBtYWxmb3JtZWQiOworCW15ICRz c2hwb3J0PXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJwb3J0XCIgbWlzc2VkIjsKKwlteSAkc3Ro PSRkYmgtPnByZXBhcmUoImluc2VydCBpbnRvIHVzZWRfcG9ydHMgKHNlcnZlcixzZXNzaW9uX2lk LHBvcnQpIHZhbHVlcyAgKD8sID8sID8pIik7CisJY2hlY2tfdXNlcigkc2lkKTsKKwkkc3RoLT5l eGVjdXRlKCRzZXJ2ZXIsICRzaWQsICRzc2hwb3J0KTsKKwlpZiAoJHN0aC0+ZXJyKCkpCisJewor CQlzeXNsb2coJ2Vycm9yJywgImluc2VydHBvcnQgKE15U1FMIHNlc3Npb24gZGIgYmFja2VuZCkg ZmFpbGVkIHdpdGggZXhpdGNvZGU6ICRzdGgtPmVycigpIik7CisJCWRpZSgpOworCX0KKwkkc3Ro LT5maW5pc2goKTsKKwl1bmRlZiAkZGJoOworCXJldHVybiAxOworfQorCitzdWIgZGJfcm1wb3J0 Cit7CisJbXkgJGRiaCA9IGluaXRfZGIoKTsKKwlteSAkc2VydmVyPXNoaWZ0IG9yIGRpZSAiYXJn dW1lbnQgXCJzZXJ2ZXJcIiBtaXNzZWQiOworCW15ICRzaWQ9c2hpZnQgb3IgZGllICJhcmd1bWVu dCBcInNlc3Npb25faWRcIiBtaXNzZWQiOworCSRzaWQgPSBzYW5pdGl6ZXIoJ3gyZ29zaWQnLCAk c2lkKSBvciBkaWUgImFyZ3VtZW50IFwic2Vzc2lvbl9pZFwiIG1hbGZvcm1lZCI7CisJbXkgJHNz aHBvcnQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInBvcnRcIiBtaXNzZWQiOworCW15ICRzdGg9 JGRiaC0+cHJlcGFyZSgiZGVsZXRlIGZyb20gdXNlZF9wb3J0cyB3aGVyZSBzZXJ2ZXI9PyBhbmQg c2Vzc2lvbl9pZD0/IGFuZCBwb3J0PT8iKTsKKwljaGVja191c2VyKCRzaWQpOworCSRzdGgtPmV4 ZWN1dGUoJHNlcnZlciwgJHNpZCwgJHNzaHBvcnQpOworCWlmICgkc3RoLT5lcnIoKSkgeworCQlz eXNsb2coJ2Vycm9yJywgInJtcG9ydCAoTXlTUUwgc2Vzc2lvbiBkYiBiYWNrZW5kKSBmYWlsZWQg d2l0aCBleGl0Y29kZTogJHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7CisJfQorCSRzdGgtPmZpbmlz aCgpOworCXVuZGVmICRkYmg7CisJcmV0dXJuIDE7Cit9CisKK3N1YiBkYl9yZXN1bWUKK3sKKwlt eSAkZGJoID0gaW5pdF9kYigpOworCW15ICRjbGllbnQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBc ImNsaWVudFwiIG1pc3NlZCI7CisJbXkgJHNpZD1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwic2Vz c2lvbl9pZFwiIG1pc3NlZCI7CisJJHNpZCA9IHNhbml0aXplcigneDJnb3NpZCcsICRzaWQpIG9y IGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWFsZm9ybWVkIjsKKwlteSAkZ3JfcG9ydD1z aGlmdCBvciBkaWUgImFyZ3VtZW50IFwiZ3JfcG9ydFwiIG1pc3NlZCI7CisJJGdyX3BvcnQgPSBz YW5pdGl6ZXIoJ251bScsICRncl9wb3J0KSBvciBkaWUgImFyZ3VtZW50IFwiZ3JfcG9ydFwiIG1h bGZvcm1lZCI7CisJbXkgJHNuZF9wb3J0PXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzbmRfcG9y dFwiIG1pc3NlZCI7CisJJHNuZF9wb3J0ID0gc2FuaXRpemVyKCdudW0nLCAkc25kX3BvcnQpIG9y IGRpZSAiYXJndW1lbnQgXCJzbmRfcG9ydFwiIG1hbGZvcm1lZCI7CisJbXkgJGZzX3BvcnQ9c2hp ZnQgb3IgZGllICJhcmd1bWVudCBcImZzX3BvcnRcIiBtaXNzZWQiOworCSRmc19wb3J0ID0gc2Fu aXRpemVyKCdudW0nLCAkZnNfcG9ydCkgb3IgZGllICJhcmd1bWVudCBcImZzX3BvcnRcIiBtYWxm b3JtZWQiOworCW15ICR0ZWtpY3RybF9wb3J0PXNoaWZ0IG9yIGRpZSJhcmd1bWVudCBcInRla2lj dHJsX3BvcnRcIiBtaXNzZWQiOworCSR0ZWtpY3RybF9wb3J0ID0gc2FuaXRpemVyKCdwbm51bScs ICR0ZWtpY3RybF9wb3J0KSBvciBkaWUgImFyZ3VtZW50IFwidGVraWN0cmxfcG9ydFwiIG1hbGZv cm1lZCI7CisJbXkgJHRla2lkYXRhX3BvcnQ9c2hpZnQgb3IgZGllImFyZ3VtZW50IFwidGVraWRh dGFfcG9ydFwiIG1pc3NlZCI7CisJJHRla2lkYXRhX3BvcnQgPSBzYW5pdGl6ZXIoJ3BubnVtJywg JHRla2lkYXRhX3BvcnQpIG9yIGRpZSAiYXJndW1lbnQgXCJ0ZWtpZGF0YV9wb3J0XCIgbWFsZm9y bWVkIjsKKwljaGVja191c2VyKCRzaWQpOworCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgidXBkYXRl IHNlc3Npb25zIHNldCBsYXN0X3RpbWU9Tk9XKCksc3RhdHVzPSdSJywKKwkgICAgICAgICAgICAg ICAgICAgICAgIGNsaWVudD0/LGdyX3BvcnQ9Pyxzb3VuZF9wb3J0PT8sZnNfcG9ydD0/LHRla2lj dHJsX3BvcnQ9Pyx0ZWtpZGF0YV9wb3J0PT8gd2hlcmUgc2Vzc2lvbl9pZCA9ID8gYW5kIHVuYW1l PT8iKTsKKwkkc3RoLT5leGVjdXRlKCRjbGllbnQsICRncl9wb3J0LCAkc25kX3BvcnQsICRmc19w b3J0LCAkdGVraWN0cmxfcG9ydCwgJHRla2lkYXRhX3BvcnQsICRzaWQsICRyZWFsdXNlcik7CisJ aWYgKCRzdGgtPmVycigpKQorCXsKKwkJc3lzbG9nKCdlcnJvcicsICJyZXN1bWUgKE15U1FMIHNl c3Npb24gZGIgYmFja2VuZCkgZmFpbGVkIHdpdGggZXhpdGNvZGU6ICRzdGgtPmVycigpIik7CisJ CWRpZSgpOworCX0KKwkkc3RoLT5maW5pc2goKTsKKwl1bmRlZiAkZGJoOworCXJldHVybiAxOwor fQorCitzdWIgZGJfY2hhbmdlc3RhdHVzCit7CisJbXkgJGRiaCA9IGluaXRfZGIoKTsKKwlteSAk c3RhdHVzPXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzdGF0dXNcIiBtaXNzZWQiOworCW15ICRz aWQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRcIiBtaXNzZWQiOworCSRzaWQg PSBzYW5pdGl6ZXIoJ3gyZ29zaWQnLCAkc2lkKSBvciBkaWUgImFyZ3VtZW50IFwic2Vzc2lvbl9p ZFwiIG1hbGZvcm1lZCI7CisJY2hlY2tfdXNlcigkc2lkKTsKKworCSMgd2UgbmVlZCB0byBiZSBh YmxlIHRvIGNoYW5nZSB0aGUgc3RhdGUgb2Ygbm9ybWFsIHNlc3Npb25zICgkcmVhbHVzZXIgPT0g JGVmZmVjdGl2ZV91c2VyKQorCSMgX2FuZF8gZGVza3RvcCBzaGFyaW5nIHNlc3Npb24gKCRyZWFs dXNlciAhPSAkZWZmZWN0aXZlX3VzZXIpLiBUaHVzLCBleHRyYWN0aW5nIHRoZSBlZmZlY3RpdmUK KwkjIHVzZXJuYW1lIGZyb20gdGhlIHNlc3Npb24gSUQuLi4KKwlteSAkZWZmZWN0aXZlX3VzZXIg PSAkc2lkOworCSRlZmZlY3RpdmVfdXNlciA9fiBzL1wtWzAtOV0rXC1bMC05XXsxMH1fLiovLzsK KworCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgidXBkYXRlIHNlc3Npb25zIHNldCBsYXN0X3RpbWU9 Tk9XKCksCisJICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9PyB3aGVyZSBzZXNzaW9uX2lk ID0gPyBhbmQgdW5hbWU9PyIpOworCSRzdGgtPmV4ZWN1dGUoJHN0YXR1cywgJHNpZCwgJGVmZmVj dGl2ZV91c2VyKTsKKwlpZiAoJHN0aC0+ZXJyKCkpCisJeworCQlzeXNsb2coJ2Vycm9yJywgImNo YW5nZXN0YXR1cyAoTXlTUUwgc2Vzc2lvbiBkYiBiYWNrZW5kKSBmYWlsZWQgd2l0aCBleGl0Y29k ZTogJHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7CisJfQorCSRzdGgtPmZpbmlzaCgpOworCXVuZGVm ICRkYmg7CisJcmV0dXJuIDE7Cit9CisKK3N1YiBkYl9nZXRzdGF0dXMKK3sKKwlteSAkZGJoID0g aW5pdF9kYigpOworCW15ICRzaWQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRc IiBtaXNzZWQiOworCSRzaWQgPSBzYW5pdGl6ZXIoJ3gyZ29zaWQnLCAkc2lkKSBvciBkaWUgImFy Z3VtZW50IFwic2Vzc2lvbl9pZFwiIG1hbGZvcm1lZCI7CisJY2hlY2tfdXNlcigkc2lkKTsKKwlt eSAkc3RoPSRkYmgtPnByZXBhcmUoInNlbGVjdCBzdGF0dXMgZnJvbSBzZXNzaW9ucyB3aGVyZSBz ZXNzaW9uX2lkID0gPyIpOworCSRzdGgtPmV4ZWN1dGUoJHNpZCk7CisJaWYgKCRzdGgtPmVycigp KQorCXsKKwkJc3lzbG9nKCdlcnJvcicsICJjaGFuZ2VzdGF0dXMgKE15U1FMIHNlc3Npb24gZGIg YmFja2VuZCkgZmFpbGVkIHdpdGggZXhpdGNvZGU6ICRzdGgtPmVycigpIik7CisJCWRpZSgpOwor CX0KKwlteSBAZGF0YTsKKwlteSAkc3RhdHVzOworCUBkYXRhID0gJHN0aC0+ZmV0Y2hyb3dfYXJy YXk7CisJeworCQkkc3RhdHVzID0gJGRhdGFbMF07CisJfQorCSRzdGgtPmZpbmlzaCgpOworCXVu ZGVmICRkYmg7CisJcmV0dXJuICRzdGF0dXM7Cit9CisKK3N1YiBkYl9nZXRkaXNwbGF5cworewor CW15ICRkYmggPSBpbml0X2RiKCk7CisJI2lnbm9yZSAkc2VydmVyCisJbXkgQHN0cmluZ3M7CisJ bXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJzZWxlY3QgZGlzcGxheSBmcm9tIHNlc3Npb25zIik7CisJ JHN0aC0+ZXhlY3V0ZSgpOworCWlmICgkc3RoLT5lcnIoKSkKKwl7CisJCXN5c2xvZygnZXJyb3In LCAiZ2V0ZGlzcGxheXMgKE15U1FMIHNlc3Npb24gZGIgYmFja2VuZCkgZmFpbGVkIHdpdGggZXhp dGNvZGU6ICRzdGgtPmVycigpIik7CisJCWRpZSgpOworCX0KKwlteSBAZGF0YTsKKwlteSAkaT0w OworCXdoaWxlIChAZGF0YSA9ICRzdGgtPmZldGNocm93X2FycmF5KQorCXsKKwkJJHN0cmluZ3Nb JGkrK109J3wnLiRkYXRhWzBdLid8JzsKKwl9CisJJHN0aC0+ZmluaXNoKCk7CisJdW5kZWYgJGRi aDsKKwlyZXR1cm4gam9pbigiXG4iLEBzdHJpbmdzKTsKK30KKworc3ViIGRiX2dldHBvcnRzCit7 CisJbXkgJGRiaCA9IGluaXRfZGIoKTsKKwkjaWdub3JlICRzZXJ2ZXIKKwlteSAkc2VydmVyPXNo aWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzZXJ2ZXJcIiBtaXNzZWQiOworCW15IEBzdHJpbmdzOwor CW15ICRzdGg9JGRiaC0+cHJlcGFyZSgic2VsZWN0IHBvcnQgZnJvbSB1c2VkX3BvcnRzIik7CisJ JHN0aC0+ZXhlY3V0ZSgpOworCWlmICgkc3RoLT5lcnIoKSkKKwl7CisJCXN5c2xvZygnZXJyb3In LCAiZ2V0cG9ydHMgKE15U1FMIHNlc3Npb24gZGIgYmFja2VuZCkgZmFpbGVkIHdpdGggZXhpdGNv ZGU6ICRzdGgtPmVycigpIik7CisJCWRpZSgpOworCX0KKwlteSBAZGF0YTsKKwlteSAkaT0wOwor CXdoaWxlIChAZGF0YSA9ICRzdGgtPmZldGNocm93X2FycmF5KQorCXsKKwkJJHN0cmluZ3NbJGkr K109J3wnLiRkYXRhWzBdLid8JzsKKwl9CisJJHN0aC0+ZmluaXNoKCk7CisJdW5kZWYgJGRiaDsK KwlyZXR1cm4gam9pbigiXG4iLEBzdHJpbmdzKTsKK30KKworc3ViIGRiX2dldHNlcnZlcnMKK3sK KwlteSAkZGJoID0gaW5pdF9kYigpOworCW15IEBzdHJpbmdzOworCW15ICRzdGg9JGRiaC0+cHJl cGFyZSgic2VsZWN0IHNlcnZlcixjb3VudCgqKSBmcm9tIHNlc3Npb25zIHdoZXJlIHN0YXR1cyAh PSAnRicgZ3JvdXAgYnkgc2VydmVyIik7CisJJHN0aC0+ZXhlY3V0ZSgpOworCWlmICgkc3RoLT5l cnIoKSkKKwl7CisJCXN5c2xvZygnZXJyb3InLCAiZ2V0c2VydmVycyAoTXlTUUwgc2Vzc2lvbiBk YiBiYWNrZW5kKSBmYWlsZWQgd2l0aCBleGl0Y29kZTogJHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7 CisJfQorCW15IEBkYXRhOworCW15ICRpPTA7CisJd2hpbGUgKEBkYXRhID0gJHN0aC0+ZmV0Y2hy b3dfYXJyYXkpCisJeworCQkkc3RyaW5nc1skaSsrXT0kZGF0YVswXTsKKwl9CisJJHN0aC0+Zmlu aXNoKCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gam9pbigiXG4iLEBzdHJpbmdzKTsKK30KKwor c3ViIGRiX2dldGFnZW50Cit7CisJbXkgJGRiaCA9IGluaXRfZGIoKTsKKwlteSAkc2lkPXNoaWZ0 IG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWlzc2VkIjsKKwkkc2lkID0gc2FuaXRp emVyKCd4Mmdvc2lkJywgJHNpZCkgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRcIiBtYWxm b3JtZWQiOworCW15ICRhZ2VudDsKKwljaGVja191c2VyKCRzaWQpOworCW15ICRzdGg9JGRiaC0+ cHJlcGFyZSgic2VsZWN0IGFnZW50X3BpZCBmcm9tIHNlc3Npb25zCisJICAgICAgICAgICAgICAg ICAgICAgICB3aGVyZSBzZXNzaW9uX2lkPT8iKTsKKwkkc3RoLT5leGVjdXRlKCRzaWQpOworCWlm ICgkc3RoLT5lcnIoKSkKKwl7CisJCXN5c2xvZygnZXJyb3InLCAiZ2V0YWdlbnQgKE15U1FMIHNl c3Npb24gZGIgYmFja2VuZCkgZmFpbGVkIHdpdGggZXhpdGNvZGU6ICRzdGgtPmVycigpIik7CisJ CWRpZSgpOworCX0KKwlteSBAZGF0YTsKKwlteSAkaT0wOworCWlmKEBkYXRhID0gJHN0aC0+ZmV0 Y2hyb3dfYXJyYXkpCisJeworCQkkYWdlbnQ9JGRhdGFbMF07CisJfQorCSRzdGgtPmZpbmlzaCgp OworCXVuZGVmICRkYmg7CisJcmV0dXJuICRhZ2VudDsKK30KKworc3ViIGRiX2dldGRpc3BsYXkK K3sKKwlteSAkZGJoID0gaW5pdF9kYigpOworCW15ICRzaWQ9c2hpZnQgb3IgZGllICJhcmd1bWVu dCBcInNlc3Npb25faWRcIiBtaXNzZWQiOworCSRzaWQgPSBzYW5pdGl6ZXIoJ3gyZ29zaWQnLCAk c2lkKSBvciBkaWUgImFyZ3VtZW50IFwic2Vzc2lvbl9pZFwiIG1hbGZvcm1lZCI7CisJbXkgJGRp c3BsYXk7CisJY2hlY2tfdXNlcigkc2lkKTsKKwlteSAkc3RoPSRkYmgtPnByZXBhcmUoInNlbGVj dCBkaXNwbGF5IGZyb20gc2Vzc2lvbnMKKwkgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIHNl c3Npb25faWQgPT8iKTsKKwkkc3RoLT5leGVjdXRlKCRzaWQpOworCWlmICgkc3RoLT5lcnIoKSkK Kwl7CisJCXN5c2xvZygnZXJyb3InLCAiZ2V0ZGlzcGxheSAoTXlTUUwgc2Vzc2lvbiBkYiBiYWNr ZW5kKSBmYWlsZWQgd2l0aCBleGl0Y29kZTogJHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7CisJfQor CW15IEBkYXRhOworCW15ICRpPTA7CisJaWYoQGRhdGEgPSAkc3RoLT5mZXRjaHJvd19hcnJheSkK Kwl7CisJCSRkaXNwbGF5PSRkYXRhWzBdOworCX0KKwkkc3RoLT5maW5pc2goKTsKKwl1bmRlZiAk ZGJoOworCXJldHVybiAkZGlzcGxheTsKK30KKworc3ViIGRiX2xpc3RzZXNzaW9ucworeworCW15 ICRkYmggPSBpbml0X2RiKCk7CisJbXkgJHNlcnZlcj1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwi c2VydmVyXCIgbWlzc2VkIjsKKworCW15IEBzdHJpbmdzOworCW15ICRzdGg9JGRiaC0+cHJlcGFy ZSgic2VsZWN0IGFnZW50X3BpZCwgc2Vzc2lvbl9pZCwgZGlzcGxheSwgc2VydmVyLCBzdGF0dXMs CisJICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0ZPUk1BVChpbml0X3RpbWUsICclWS0lbS0l ZFQlSDolSTolUycpLAorCSAgICAgICAgICAgICAgICAgICAgICAgY29va2llLGNsaWVudCxncl9w b3J0LHNvdW5kX3BvcnQsCisJICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0ZPUk1BVChsYXN0 X3RpbWUsICclWS0lbS0lZFQlSDolSTolUycpLAorCSAgICAgICAgICAgICAgICAgICAgICAgdW5h bWUsCisJICAgICAgICAgICAgICAgICAgICAgICBNT0QoVU5JWF9USU1FU1RBTVAoTk9XKCkpIC0g VU5JWF9USU1FU1RBTVAoaW5pdF90aW1lKSwgODY0MDApLGZzX3BvcnQsCisJICAgICAgICAgICAg ICAgICAgICAgICB0ZWtpY3RybF9wb3J0LHRla2lkYXRhX3BvcnQgZnJvbSBzZXNzaW9ucworCSAg ICAgICAgICAgICAgICAgICAgICAgd2hlcmUgc3RhdHVzICE9J0YnIGFuZCBzZXJ2ZXI9PyBhbmQg dW5hbWU9PworCSAgICAgICAgICAgICAgICAgICAgICAgYW5kICAoICBzZXNzaW9uX2lkIG5vdCBs aWtlICclWFNIQUQlJykgIG9yZGVyIGJ5IHN0YXR1cyBkZXNjIik7CisJJHN0aC0+ZXhlY3V0ZSgk c2VydmVyLCAkcmVhbHVzZXIpOworCWlmICgkc3RoLT5lcnIoKSkKKwl7CisJCXN5c2xvZygnZXJy b3InLCAibGlzdHNlc3Npb25zIChNeVNRTCBzZXNzaW9uIGRiIGJhY2tlbmQpIGZhaWxlZCB3aXRo IGV4aXRjb2RlOiAkc3RoLT5lcnIoKSIpOworCQlkaWUoKTsKKwl9CisJbXkgQHNlc3Npb25zID0g ZmV0Y2hyb3dfYXJyYXlfZGF0YXNldHMoJHN0aCk7CisJJHN0aC0+ZmluaXNoKCk7CisJdW5kZWYg JGRiaDsKKwlyZXR1cm4gQHNlc3Npb25zOworfQorCitzdWIgZGJfbGlzdHNlc3Npb25zX2FsbAor eworCW15ICRkYmggPSBpbml0X2RiKCk7CisJbXkgQHN0cmluZ3M7CisJbXkgJHN0aD0kZGJoLT5w cmVwYXJlKCJzZWxlY3QgYWdlbnRfcGlkLCBzZXNzaW9uX2lkLCBkaXNwbGF5LCBzZXJ2ZXIsIHN0 YXR1cywKKwkgICAgICAgICAgICAgICAgICAgICAgIERBVEVfRk9STUFUKGluaXRfdGltZSwgJyVZ LSVtLSVkVCVIOiVJOiVTJyksCisJICAgICAgICAgICAgICAgICAgICAgICBjb29raWUsY2xpZW50 LGdyX3BvcnQsc291bmRfcG9ydCwKKwkgICAgICAgICAgICAgICAgICAgICAgIERBVEVfRk9STUFU KGxhc3RfdGltZSwgJyVZLSVtLSVkVCVIOiVJOiVTJyksCisJICAgICAgICAgICAgICAgICAgICAg ICB1bmFtZSwKKwkgICAgICAgICAgICAgICAgICAgICAgIE1PRChVTklYX1RJTUVTVEFNUChOT1co KSkgLSBVTklYX1RJTUVTVEFNUChpbml0X3RpbWUpLCA4NjQwMCksZnNfcG9ydCwKKwkgICAgICAg ICAgICAgICAgICAgICAgIHRla2ljdHJsX3BvcnQsdGVraWRhdGFfcG9ydCBmcm9tICBzZXNzaW9u cworCSAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgc3RhdHVzICE9J0YnIGFuZCB1bmFtZT0/ IGFuZCAgKCAgc2Vzc2lvbl9pZCBub3QgbGlrZSAnJVhTSEFEJScpICBvcmRlciBieSBzdGF0dXMg ZGVzYyIpOworCQorCSRzdGgtPmV4ZWN1dGUoJHJlYWx1c2VyKTsKKwlpZiAoJHN0aC0+ZXJyKCkp CisJeworCQlzeXNsb2coJ2Vycm9yJywgImxpc3RzZXNzaW9uc19hbGwgKE15U1FMIHNlc3Npb24g ZGIgYmFja2VuZCkgZmFpbGVkIHdpdGggZXhpdGNvZGU6ICRzdGgtPmVycigpIik7CisJCWRpZSgp OworCX0KKwlteSBAc2Vzc2lvbnMgPSBmZXRjaHJvd19hcnJheV9kYXRhc2V0cygkc3RoKTsKKwkk c3RoLT5maW5pc2goKTsKKwl1bmRlZiAkZGJoOworCXJldHVybiBAc2Vzc2lvbnM7Cit9CisKK3N1 YiBkYl9saXN0c2hhZG93c2Vzc2lvbnMKK3sKKwlteSAkZGJoID0gaW5pdF9kYigpOworCW15ICRz ZXJ2ZXI9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNlcnZlclwiIG1pc3NlZCI7CisJbXkgQHN0 cmluZ3M7CisJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJzZWxlY3QgYWdlbnRfcGlkLCBzZXNzaW9u X2lkLCBkaXNwbGF5LCBzZXJ2ZXIsIHN0YXR1cywKKwkgICAgICAgICAgICAgICAgICAgICAgIERB VEVfRk9STUFUKGluaXRfdGltZSwgJyVZLSVtLSVkVCVIOiVJOiVTJyksCisJICAgICAgICAgICAg ICAgICAgICAgICBjb29raWUsY2xpZW50LGdyX3BvcnQsc291bmRfcG9ydCwKKwkgICAgICAgICAg ICAgICAgICAgICAgIERBVEVfRk9STUFUKGxhc3RfdGltZSwgJyVZLSVtLSVkVCVIOiVJOiVTJyks CisJICAgICAgICAgICAgICAgICAgICAgICB1bmFtZSwKKwkgICAgICAgICAgICAgICAgICAgICAg IE1PRChVTklYX1RJTUVTVEFNUChOT1coKSkgLSBVTklYX1RJTUVTVEFNUChpbml0X3RpbWUpLCA4 NjQwMCksZnNfcG9ydCBmcm9tICBzZXNzaW9ucworCSAgICAgICAgICAgICAgICAgICAgICAgd2hl cmUgc3RhdHVzICE9J0YnIGFuZCBzZXJ2ZXI9PyBhbmQgdW5hbWU9PworCSAgICAgICAgICAgICAg ICAgICAgICAgYW5kICAoICBzZXNzaW9uX2lkIGxpa2UgJyVYU0hBRCUnKSAgb3JkZXIgYnkgc3Rh dHVzIGRlc2MiKTsKKwkkc3RoLT5leGVjdXRlKCRzZXJ2ZXIsICRyZWFsdXNlcik7CisJaWYgKCRz dGgtPmVycigpKQorCXsKKwkJc3lzbG9nKCdlcnJvcicsICJsaXN0c2Vzc2lvbnMgKE15U1FMIHNl c3Npb24gZGIgYmFja2VuZCkgZmFpbGVkIHdpdGggZXhpdGNvZGU6ICRzdGgtPmVycigpIik7CisJ CWRpZSgpOworCX0KKwlteSBAc2Vzc2lvbnMgPSBmZXRjaHJvd19hcnJheV9kYXRhc2V0cygkc3Ro KTsKKwkkc3RoLT5maW5pc2goKTsKKwl1bmRlZiAkZGJoOworCXJldHVybiBAc2Vzc2lvbnM7Cit9 CisKK3N1YiBkYl9saXN0c2hhZG93c2Vzc2lvbnNfYWxsCit7CisJbXkgJGRiaCA9IGluaXRfZGIo KTsKKwlteSBAc3RyaW5nczsKKwlteSAkc3RoPSRkYmgtPnByZXBhcmUoInNlbGVjdCBhZ2VudF9w aWQsIHNlc3Npb25faWQsIGRpc3BsYXksIHNlcnZlciwgc3RhdHVzLAorCSAgICAgICAgICAgICAg ICAgICAgICAgREFURV9GT1JNQVQoaW5pdF90aW1lLCAnJVktJW0tJWRUJUg6JUk6JVMnKSwKKwkg ICAgICAgICAgICAgICAgICAgICAgIGNvb2tpZSxjbGllbnQsZ3JfcG9ydCxzb3VuZF9wb3J0LAor CSAgICAgICAgICAgICAgICAgICAgICAgREFURV9GT1JNQVQobGFzdF90aW1lLCAnJVktJW0tJWRU JUg6JUk6JVMnKSwKKwkgICAgICAgICAgICAgICAgICAgICAgIHVuYW1lLAorCSAgICAgICAgICAg ICAgICAgICAgICAgTU9EKFVOSVhfVElNRVNUQU1QKE5PVygpKSAtIFVOSVhfVElNRVNUQU1QKGlu aXRfdGltZSksIDg2NDAwKSxmc19wb3J0IGZyb20gIHNlc3Npb25zIAorCSAgICAgICAgICAgICAg ICAgICAgICAgd2hlcmUgc3RhdHVzICE9J0YnIGFuZCB1bmFtZT0/IGFuZCAgKCAgc2Vzc2lvbl9p ZCBsaWtlICclWFNIQUQlJykgIG9yZGVyIGJ5IHN0YXR1cyBkZXNjIik7CisJCisJJHN0aC0+ZXhl Y3V0ZSgkcmVhbHVzZXIpOworCWlmICgkc3RoLT5lcnIoKSkKKwl7CisJCXN5c2xvZygnZXJyb3In LCAibGlzdHNlc3Npb25zX2FsbCAoTXlTUUwgc2Vzc2lvbiBkYiBiYWNrZW5kKSBmYWlsZWQgd2l0 aCBleGl0Y29kZTogJHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7CisJfQorCW15IEBzZXNzaW9ucyA9 IGZldGNocm93X2FycmF5X2RhdGFzZXRzKCRzdGgpOworCSRzdGgtPmZpbmlzaCgpOworCXVuZGVm ICRkYmg7CisJcmV0dXJuIEBzZXNzaW9uczsKK30KKworc3ViIGNoZWNrX3Jvb3QKK3sKKwlpZiAo JHJlYWx1c2VyIG5lICJyb290IikKKwl7CisJCWRpZSAiJHJlYWx1c2VyLCB5b3UgY2FuIG5vdCBk byB0aGlzIGpvYiI7CisJfQorfQorCitzdWIgY2hlY2tfdXNlcgoreworCW15ICRzaWQ9c2hpZnQg b3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRcIiBtaXNzZWQiOworCXJldHVybiBpZiAkcmVh bHVzZXIgZXEgInJvb3QiOworCisJIyBzZXNzaW9uIGlkIGxvb2tzIGxpa2Ugc29tZXVzZXItNTEt MTMwNDAwNTg5NV9zdERnbm9tZS1zZXNzaW9uX2RwMjQKKwkjIGR1cmluZyBEQiBpbnNlcnRzZXNz aW9uIGl0IG9ubHkgbG9va3MgbGlrZSBzb21ldXNlci01MS0xMzA0MDA1ODk1CisKKwkjIGRlcml2 ZSB0aGUgc2Vzc2lvbidzIHVzZXIgZnJvbSB0aGUgc2Vzc2lvbiBuYW1lL2lkCisJbXkgJHVzZXIg PSAiJHNpZCI7CisKKwkjIGhhbmRsZSBBY3RpdmVEaXJlY3RvcnkgRG9tYWluIHVzZXIgYWNjb3Vu dHMgZ3JhY2VmdWxseQorCSRyZWFsdXNlciA9fiBzL1xcLy87CisKKwkjIHBlcmZvcm0gdGhlIHVz ZXIgY2hlY2sKKwkkdXNlciA9fiBzLygkcmVhbHVzZXItWzAtOV17Mix9LVswLTldezEwLH1fc3Qo RHxSKS4qfC4qLVswLTldezIsfS1bMC05XXsxMCx9X3N0UygwfDEpWFNIQUQkcmVhbHVzZXIuKikv JHJlYWx1c2VyLzsKKwkkdXNlciBlcSAkcmVhbHVzZXIgb3IgZGllICIkcmVhbHVzZXIgaXMgbm90 IGF1dGhvcml6ZWQiOworfQorCitzdWIgZmV0Y2hyb3dfYXJyYXlfZGF0YXNldHMKK3sKKwlteSAk c3RoID0gc2hpZnQ7CisJbXkgQGxpbmVzOworCW15IEBkYXRhOworCXdoaWxlIChAZGF0YSA9ICRz dGgtPmZldGNocm93X2FycmF5KCkpCisJeworCQlwdXNoIEBsaW5lcywgam9pbignfCcsIEBkYXRh KTsKKwl9CisJcmV0dXJuIEBsaW5lczsKK30KKworMTsKZGlmZiAtLWdpdCBhL3gyZ29zZXJ2ZXIt Y29tbW9uL2V0Yy94Mmdvc3FsL3NxbCBiL3gyZ29zZXJ2ZXItY29tbW9uL2V0Yy94Mmdvc3FsL3Nx bAppbmRleCA2NmE3ZjdkLi4xMTM3OTlkIDEwMDY0NAotLS0gYS94Mmdvc2VydmVyLWNvbW1vbi9l dGMveDJnb3NxbC9zcWwKKysrIGIveDJnb3NlcnZlci1jb21tb24vZXRjL3gyZ29zcWwvc3FsCkBA IC0xLDQgKzEsNCBAQAotI3Bvc3RncmVzIG9yIHNxbGl0ZQorI3Bvc3RncmVzIG9yIG15c3FsIG9y IHNxbGl0ZQogYmFja2VuZD1zcWxpdGUKIAogW3Bvc3RncmVzXQpAQCAtMTIsMyArMTIsMTEgQEAK ICNyZXF1aXJlOiBjb25uZWN0IG9ubHkgd2l0aCBTU0wKICNkZWZhdWx0IC0gcHJlZmVyCiBzc2w9 cHJlZmVyCisKK1tteXNxbF0KK2hvc3Q9bG9jYWxob3N0Citwb3J0PTMzMDYKKyNyZXN0cmljdCB1 c2VycyBuZXR3b3JrLCAiJSIgZm9yIGFueQordW5ldD1sb2NhbGhvc3QKKyNkYXRhYmFzZSBhZG1p biAobXVzdCBoYXZlIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSBkYXRhYmFzZXMgYW5kIHVzZXJzKQor ZGJhZG1pbj1yb290CmRpZmYgLS1naXQgYS94Mmdvc2VydmVyL3NiaW4veDJnb2RiYWRtaW4gYi94 Mmdvc2VydmVyL3NiaW4veDJnb2RiYWRtaW4KaW5kZXggZDNjNjI2Ni4uZTc0NmU0MyAxMDA3NTUK LS0tIGEveDJnb3NlcnZlci9zYmluL3gyZ29kYmFkbWluCisrKyBiL3gyZ29zZXJ2ZXIvc2Jpbi94 MmdvZGJhZG1pbgpAQCAtNjMsNiArNjMsOSBAQAogCiBteSAkQ29uZmlnID0gZ2V0X3NxbGNvbmZp ZygpOwogCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgU1FMaXRlIEJhY2tl bmQKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogaWYgKCRDb25maWctPnBhcmFt KCJiYWNrZW5kIikgZXEgJ3NxbGl0ZScpCiB7CiAJbXkgJHVzZXI9IngyZ291c2VyIjsKQEAgLTIz Niw0OTYgKzIzOSw4MjkgQEAKIAl9CiB9CiAKLW15ICRob3N0PSRDb25maWctPnBhcmFtKCJwb3N0 Z3Jlcy5ob3N0Iik7Ci1teSAkcG9ydD0kQ29uZmlnLT5wYXJhbSgicG9zdGdyZXMucG9ydCIpOwot bXkgJHNzbG1vZGU9JENvbmZpZy0+cGFyYW0oInBvc3RncmVzLnNzbCIpOwotaWYgKCEkc3NsbW9k ZSkKLXsKLQkkc3NsbW9kZT0icHJlZmVyIjsKLX0KLW15ICRkYmFkbWluPSRDb25maWctPnBhcmFt KCJwb3N0Z3Jlcy5kYmFkbWluIik7Ci1teSAkeDJnb2FkbWluPSJ4MmdvZGJ1c2VyIjsKLW15ICR4 MmdvYWRtaW5wYXNzPWBwd2dlbiA4IDFgOwotY2hvbXAgKCR4MmdvYWRtaW5wYXNzKTsKLW15ICRk Yj0ieDJnb19zZXNzaW9ucyI7CiAKLWlmICghJGhvc3QpCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKyMgTXlTUUwgQmFja2VuZAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCitpZiAoJENvbmZpZy0+cGFyYW0oImJhY2tlbmQiKSBlcSAnbXlzcWwnKQogewotCSRo b3N0PSdsb2NhbGhvc3QnOwotfQotaWYgKCEkcG9ydCkKLXsKLQkkcG9ydD0nNTQzMic7Ci19Ci1p ZiAoISRkYmFkbWluKQotewotCSRkYmFkbWluPSdwb3N0Z3Jlcyc7Ci19Ci0KLW9wZW4gKEZMLCI8 IC9ldGMveDJnby94Mmdvc3FsL3Bhc3N3b3Jkcy9wZ2FkbWluICIpIG9yIGRpZSAiQ2FuJ3QgcmVh ZCBwYXNzd29yZCBmaWxlIC9ldGMveDJnby94Mmdvc3FsL3Bhc3N3b3Jkcy9wZ2FkbWluIjsKLW15 ICRkYmFkbWlucGFzcz08Rkw+OwotY2xvc2UoRkwpOwotY2hvbXAoJGRiYWRtaW5wYXNzKTsKLQot aWYgKCR1cGRhdGVkYikKLXsKLQkjIGNoZWNrIGlmIHRoZSBEQiBhbHJlYWR5IGV4aXN0cywgaWYg bm90LCBjcmVhdGUgaXQuLi4KLQlteSAkZGJoOwotCXVudGlsICgKLQkJJGRiaCA9IERCSS0+Y29u bmVjdCgiZGJpOlBnOmRibmFtZT0kZGI7aG9zdD0kaG9zdDtwb3J0PSRwb3J0O3NzbG1vZGU9JHNz bG1vZGUiLCAiJGRiYWRtaW4iLCAiJGRiYWRtaW5wYXNzIix7QXV0b0NvbW1pdCA9PiAxLCBSYWlz ZUVycm9yID0+IDAsIFByaW50RXJyb3IgPT4gMH0pCi0JKSB7Ci0JCSRjcmVhdGVkYiA9IDE7Ci0J CWxhc3Q7Ci0JfTsKLQlpZiAoISRjcmVhdGVkYikgewotCQkkZGJoID0gREJJLT5jb25uZWN0KCJk Ymk6UGc6ZGJuYW1lPSRkYjtob3N0PSRob3N0O3BvcnQ9JHBvcnQ7c3NsbW9kZT0kc3NsbW9kZSIs ICIkZGJhZG1pbiIsICIkZGJhZG1pbnBhc3MiLHtBdXRvQ29tbWl0ID0+IDF9KTsKLQkJaWYgKCRk YmgpIHsKLQkJCW15ICR1cGRhdGVfdmlld3Nfbl9ydWxlcyA9IDA7Ci0JCQlteSAkc3RoX3Rla2lj dHJsOwotCQkJbXkgJHN0aF90ZWtpZGF0YTsKLQkJCW15ICRzdGhfdXBkYXRlOwotCQkJdHJ5IHsK LQkJCQkkc3RoX3Rla2ljdHJsID0gJGRiaC0+cHJlcGFyZSgiCi0JCQkJICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZWN0IHRla2ljdHJsX3BvcnQgZnJvbSBzZXNzaW9ucwotCQkJCSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpOwotCQkJCSRzdGhfdGVraWN0cmwtPmV4ZWN1 dGUoKTsKLQkJCX0gY2F0Y2ggewotCQkJCXByaW50ICJBRERJTkc6IHRla2ljdHJsX3BvcnQgY29s dW1uIHRvIHRhYmxlIHNlc3Npb25zXG4iOwotCQkJCSRzdGhfdGVraWN0cmwgPSAkZGJoLT5wcmVw YXJlKCIKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHRlciB0YWJsZSBzZXNz aW9ucwotCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCBjb2x1bW4gdGVraWN0 cmxfcG9ydCBpbnQKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKTsKLQkJCQkk c3RoX3Rla2ljdHJsLT5leGVjdXRlKCkgb3IgZGllOwotCQkJCSRzdGhfdGVraWN0cmwtPmZpbmlz aCgpOwotCQkJCSR1cGRhdGVfdmlld3Nfbl9ydWxlcyA9IDE7Ci0JCQl9OwotCQkJdHJ5IHsKLQkJ CQkkc3RoX3Rla2lkYXRhID0gJGRiaC0+cHJlcGFyZSgiCi0JCQkJICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZWN0IHRla2lkYXRhX3BvcnQgZnJvbSBzZXNzaW9ucwotCQkJCSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICIpOwotCQkJCSRzdGhfdGVraWRhdGEtPmV4ZWN1dGUo KTsKLQkJCX0gY2F0Y2ggewotCQkJCXByaW50ICJBRERJTkc6IHRla2lkYXRhX3BvcnQgY29sdW1u IHRvIHRhYmxlIHNlc3Npb25zXG4iOwotCQkJCSRzdGhfdGVraWRhdGE9JGRiaC0+cHJlcGFyZSgi Ci0JCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVyIHRhYmxlIHNlc3Npb25zCi0J CQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCBjb2x1bW4gdGVraWRhdGFfcG9ydCBp bnQKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIik7Ci0JCQkJJHN0aF90ZWtpZGF0 YS0+ZXhlY3V0ZSgpIG9yIGRpZTsKLQkJCQkkc3RoX3Rla2lkYXRhLT5maW5pc2goKTsKLQkJCQkk dXBkYXRlX3ZpZXdzX25fcnVsZXMgPSAxOwotCQkJfTsKLQotCQkJaWYgKCR1cGRhdGVfdmlld3Nf bl9ydWxlcykKLQkJCXsKLQkJCQlwcmludCAiVVBEQVRJTkcgVklFVzogc2Vzc2lvbnNfdmlld1xu IjsKLQkJCQkkc3RoX3VwZGF0ZT0kZGJoLT5wcmVwYXJlKCIKLQkJCQkgICAgICAgICAgICAgICAg ICAgICAgICAgIGNyZWF0ZSBvciByZXBsYWNlIFZJRVcgc2Vzc2lvbnNfdmlldyBhcwotCQkJCSAg ICAgICAgICAgICAgICAgICAgICAgICAgU0VMRUNUCi0JCQkJICAgICAgICAgICAgICAgICAgICAg ICAgICBhZ2VudF9waWQsIHNlc3Npb25faWQsIGRpc3BsYXksIHNlcnZlciwgc3RhdHVzLCBpbml0 X3RpbWUsIGNvb2tpZSwgY2xpZW50LCBncl9wb3J0LAotCQkJCSAgICAgICAgICAgICAgICAgICAg ICAgICAgc291bmRfcG9ydCwgbGFzdF90aW1lLCB1bmFtZSwgZnNfcG9ydCwgdGVraWN0cmxfcG9y dCwgdGVraWRhdGFfcG9ydCBmcm9tIHNlc3Npb25zCi0JCQkJICAgICAgICAgICAgICAgICAgICAg ICAgICB3aGVyZSBjcmVhdG9yX2lkID0gY3VycmVudF91c2VyCi0JCQkJICAgICAgICAgICAgICAg ICAgICAgICAgICAiKTsKLQkJCQkkc3RoX3VwZGF0ZS0+ZXhlY3V0ZSgpIG9yIGRpZTsKLQkJCQlw cmludCAiVVBEQVRJTkcgUlVMRTogdXBkYXRlX3Nlc3Nfdmlld1xuIjsKLQkJCQkkc3RoX3VwZGF0 ZT0kZGJoLT5wcmVwYXJlKCIKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBv ciByZXBsYWNlIFJVTEUgdXBkYXRlX3Nlc3NfdmlldyBBUyBPTiBVUERBVEUKLQkJCQkgICAgICAg ICAgICAgICAgICAgICAgICAgIFRPIHNlc3Npb25zX3ZpZXcgRE8gSU5TVEVBRAotCQkJCSAgICAg ICAgICAgICAgICAgICAgICAgICAgdXBkYXRlIHNlc3Npb25zIHNldAotCQkJCSAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RhdHVzPU5FVy5zdGF0dXMsCi0JCQkJICAgICAgICAgICAgICAgICAg ICAgICAgICBsYXN0X3RpbWU9TkVXLmxhc3RfdGltZSwKLQkJCQkgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvb2tpZT1ORVcuY29va2llLAotCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAg YWdlbnRfcGlkPU5FVy5hZ2VudF9waWQsCi0JCQkJICAgICAgICAgICAgICAgICAgICAgICAgICBj bGllbnQ9TkVXLmNsaWVudCwKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgIGdyX3BvcnQ9 TkVXLmdyX3BvcnQsCi0JCQkJICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VuZF9wb3J0PU5F Vy5zb3VuZF9wb3J0LAotCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgZnNfcG9ydD1ORVcu ZnNfcG9ydCwKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgIHRla2ljdHJsX3BvcnQ9TkVX LnRla2ljdHJsX3BvcnQsCi0JCQkJICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWtpZGF0YV9w b3J0PU5FVy50ZWtpZGF0YV9wb3J0Ci0JCQkJICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVy ZSBzZXNzaW9uX2lkPU9MRC5zZXNzaW9uX2lkIGFuZCBjcmVhdG9yX2lkPWN1cnJlbnRfdXNlcgot CQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgIik7Ci0JCQkJJHN0aF91cGRhdGUtPmV4ZWN1 dGUoKSBvciBkaWU7Ci0JCQkJJHN0aF91cGRhdGUtPmZpbmlzaCgpOworCW15ICRob3N0PSRDb25m aWctPnBhcmFtKCJteXNxbC5ob3N0Iik7CisJbXkgJHBvcnQ9JENvbmZpZy0+cGFyYW0oIm15c3Fs LnBvcnQiKTsKKwlteSAkdW5ldD0kQ29uZmlnLT5wYXJhbSgibXlzcWwudW5ldCIpOworCW15ICRk YmFkbWluPSRDb25maWctPnBhcmFtKCJteXNxbC5kYmFkbWluIik7CisJbXkgJHgyZ29hZG1pbj0i eDJnb2RidXNlciI7CisJbXkgJHgyZ29hZG1pbnBhc3M9YHB3Z2VuIDggMWA7CisJY2hvbXAgKCR4 MmdvYWRtaW5wYXNzKTsKKwlteSAkZGI9IngyZ29fc2Vzc2lvbnMiOworCQorCWlmICghJGhvc3Qp CisJeworCQkkaG9zdD0nbG9jYWxob3N0JzsKKwl9CisJaWYgKCEkcG9ydCkKKwl7CisJCSRwb3J0 PSczMzA2JzsKKwl9CisJaWYgKCEkZGJhZG1pbikKKwl7CisJCSRkYmFkbWluPSdyb290JzsKKwl9 CisJCisJb3BlbiAoRkwsIjwgL2V0Yy94MmdvL3gyZ29zcWwvcGFzc3dvcmRzL215YWRtaW4gIikg b3IgZGllICJDYW4ndCByZWFkIHBhc3N3b3JkIGZpbGUgL2V0Yy94MmdvL3gyZ29zcWwvcGFzc3dv cmRzL215YWRtaW4iOworCW15ICRkYmFkbWlucGFzcz08Rkw+OworCWNsb3NlKEZMKTsKKwljaG9t cCgkZGJhZG1pbnBhc3MpOworCQorCWlmICgkdXBkYXRlZGIpCisJeworCQkjIGNoZWNrIGlmIHRo ZSBEQiBhbHJlYWR5IGV4aXN0cywgaWYgbm90LCBjcmVhdGUgaXQuLi4KKwkJbXkgJGRiaDsKKwkJ dW50aWwgKAorCQkJJGRiaCA9IERCSS0+Y29ubmVjdCgiZGJpOm15c3FsOmRhdGFiYXNlPSRkYjto b3N0PSRob3N0O3BvcnQ9JHBvcnQiLCIkZGJhZG1pbiIsIiRkYmFkbWlucGFzcyIse1JhaXNlRXJy b3IgPT4gMX0pCisJCSkgeworCQkJJGNyZWF0ZWRiID0gMTsKKwkJCWxhc3Q7CisJCX07CisJCWlm ICghJGNyZWF0ZWRiKSB7CisJCQkkZGJoID0gREJJLT5jb25uZWN0KCJkYmk6bXlzcWw6ZGF0YWJh c2U9JGRiO2hvc3Q9JGhvc3Q7cG9ydD0kcG9ydCIsIiRkYmFkbWluIiwiJGRiYWRtaW5wYXNzIix7 UmFpc2VFcnJvciA9PiAxfSk7CisJCQlpZiAoJGRiaCkgeworCQkJCW15ICR1cGRhdGVfdmlld3Nf bl9ydWxlcyA9IDA7CisJCQkJbXkgJHN0aF90ZWtpY3RybDsKKwkJCQlteSAkc3RoX3Rla2lkYXRh OworCQkJCW15ICRzdGhfdXBkYXRlOworCQkJCXRyeSB7CisJCQkJCSRzdGhfdGVraWN0cmwgPSAk ZGJoLT5wcmVwYXJlKCIKKwkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0 IHRla2ljdHJsX3BvcnQgZnJvbSBzZXNzaW9ucworCQkJCQkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiKTsKKwkJCQkJJHN0aF90ZWtpY3RybC0+ZXhlY3V0ZSgpOworCQkJCX0gY2F0Y2gg eworCQkJCQlwcmludCAiQURESU5HOiB0ZWtpY3RybF9wb3J0IGNvbHVtbiB0byB0YWJsZSBzZXNz aW9uc1xuIjsKKwkJCQkJJHN0aF90ZWtpY3RybCA9ICRkYmgtPnByZXBhcmUoIgorCQkJCQkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhbHRlciB0YWJsZSBzZXNzaW9ucworCQkJCQkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQgY29sdW1uIHRla2ljdHJsX3BvcnQgaW50CisJ CQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpOworCQkJCQkkc3RoX3Rla2ljdHJs LT5leGVjdXRlKCkgb3IgZGllOworCQkJCQkkc3RoX3Rla2ljdHJsLT5maW5pc2goKTsKKwkJCQkJ JHVwZGF0ZV92aWV3c19uX3J1bGVzID0gMTsKKwkJCQl9OworCQkJCXRyeSB7CisJCQkJCSRzdGhf dGVraWRhdGEgPSAkZGJoLT5wcmVwYXJlKCIKKwkJCQkJICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZWN0IHRla2lkYXRhX3BvcnQgZnJvbSBzZXNzaW9ucworCQkJCQkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiKTsKKwkJCQkJJHN0aF90ZWtpZGF0YS0+ZXhlY3V0ZSgpOwor CQkJCX0gY2F0Y2ggeworCQkJCQlwcmludCAiQURESU5HOiB0ZWtpZGF0YV9wb3J0IGNvbHVtbiB0 byB0YWJsZSBzZXNzaW9uc1xuIjsKKwkJCQkJJHN0aF90ZWtpZGF0YT0kZGJoLT5wcmVwYXJlKCIK KwkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVyIHRhYmxlIHNlc3Npb25zCisJ CQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQgY29sdW1uIHRla2lkYXRhX3BvcnQg aW50CisJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKTsKKwkJCQkJJHN0aF90ZWtp ZGF0YS0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkJCQkJJHN0aF90ZWtpZGF0YS0+ZmluaXNoKCk7CisJ CQkJCSR1cGRhdGVfdmlld3Nfbl9ydWxlcyA9IDE7CisJCQkJfTsKIAkJCX0KKwkJCWlmICgkZGJo KSB7CisJCQkJdW5kZWYgJGRiaDsKKwkJCX0KKwkJCWV4aXQoMCk7CisJCX0gZWxzZSB7CisJCQlw cmludCAiTm8gc2Vzc2lvbiBEQiBmb3VuZC4gVXNlIC0tY3JlYXRlZGIgaW5zdGVhZCBvZiAtLXVw ZGF0ZWRiLlxuIjsKIAkJfQotCQlpZiAoJGRiaCkgewotCQkJdW5kZWYgJGRiaDsKLQkJfQorCX0K KwkKKwlpZiAoJGNyZWF0ZWRiKQorCXsKKwkJbXlfY3JlYXRlX2RhdGFiYXNlKCk7CisJCW15X2Ny ZWF0ZV90YWJsZXMoKTsKIAkJZXhpdCgwKTsKLQl9IGVsc2UgewotCQlwcmludCAiTm8gc2Vzc2lv biBEQiBmb3VuZC4gVXNlIC0tY3JlYXRlZGIgaW5zdGVhZCBvZiAtLXVwZGF0ZWRiLlxuIjsKIAl9 Ci19Ci0KLWlmICgkY3JlYXRlZGIpCi17Ci0JY3JlYXRlX2RhdGFiYXNlKCk7Ci0JY3JlYXRlX3Rh YmxlcygpOwotCWV4aXQoMCk7Ci19Ci0KLWlmICgkbGlzdHVzZXJzKQotewotCWxpc3RfdXNlcnMo KTsKLQlleGl0KDApOwotfQotCi1teSAkZGJoPURCSS0+Y29ubmVjdCgiZGJpOlBnOmRibmFtZT0k ZGI7aG9zdD0kaG9zdDtwb3J0PSRwb3J0O3NzbG1vZGU9JHNzbG1vZGUiLCAiJGRiYWRtaW4iLCAi JGRiYWRtaW5wYXNzIix7QXV0b0NvbW1pdCA9PiAxfSkgb3IgZGllICRfOwotaWYgKCRhZGR1c2Vy KQotewotCWFkZF91c2VyKCRhZGR1c2VyKTsKLX0KLQotaWYgKCRhZGRncm91cCkKLXsKLQlteSAo JG5hbWUsICRwYXNzd2QsICRnaWQsICRtZW1iZXJzKSA9IGdldGdybmFtKCAkYWRkZ3JvdXApOwot CW15IEBncnBfbWVtYmVycz1zcGxpdCgnICcsJG1lbWJlcnMpOwotCWZvcmVhY2ggKEBncnBfbWVt YmVycykKKwkKKwlpZiAoJGxpc3R1c2VycykKIAl7Ci0JCWNob21wKCRfKTsKLQkJYWRkX3VzZXIo JF8pOworCQlteV9saXN0X3VzZXJzKCk7CisJCWV4aXQoMCk7CiAJfQotfQotCi1pZiAoJHJtdXNl cikKLXsKLQlybV91c2VyKCRybXVzZXIpOwotfQotCi1pZiAoJHJtZ3JvdXApCi17Ci0JbXkgKCRu YW1lLCAkcGFzc3dkLCAkZ2lkLCAkbWVtYmVycykgPSBnZXRncm5hbSggJHJtZ3JvdXApOwotCW15 IEBncnBfbWVtYmVycz1zcGxpdCgnICcsJG1lbWJlcnMpOwotCWZvcmVhY2ggKEBncnBfbWVtYmVy cykKKwkKKwlteSAkZGJoPURCSS0+Y29ubmVjdCgiZGJpOm15c3FsOmRhdGFiYXNlPSRkYjtob3N0 PSRob3N0O3BvcnQ9JHBvcnQiLCIkZGJhZG1pbiIsIiRkYmFkbWlucGFzcyIse1JhaXNlRXJyb3Ig PT4gMX0pIG9yIGRpZSAkXzsKKwlpZiAoJGFkZHVzZXIpCiAJewotCQljaG9tcCgkXyk7Ci0JCXJt X3VzZXIoJF8pOworCQlteV9hZGRfdXNlcigkYWRkdXNlcik7CiAJfQotfQotdW5kZWYgJGRiaDsK LQotc3ViIGxpc3RfdXNlcnMoKQotewotCW15ICRkYmg9REJJLT5jb25uZWN0KCJkYmk6UGc6ZGJu YW1lPXBvc3RncmVzO2hvc3Q9JGhvc3Q7cG9ydD0kcG9ydDtzc2xtb2RlPSRzc2xtb2RlIiwgIiRk YmFkbWluIiwgIiRkYmFkbWlucGFzcyIse0F1dG9Db21taXQgPT4gMX0pIG9yIGRpZSAkXzsKLQlt eSAkc3RoPSRkYmgtPnByZXBhcmUoInNlbGVjdCByb2xuYW1lIGZyb20gcGdfcm9sZXMgd2hlcmUg cm9sbmFtZSBsaWtlICd4MmdvdXNlcl8lJyIpOwotCSRzdGgtPmV4ZWN1dGUoKW9yIGRpZTsKLQlw cmludGYgKCIlLTIwcyBEQiB1c2VyXG4iLCJVTklYIHVzZXIiKTsKLQlwcmludCAiLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iOwotCW15IEBkYXRhOwotCXdoaWxlIChA ZGF0YSA9ICRzdGgtPmZldGNocm93X2FycmF5KQorCQorCWlmICgkYWRkZ3JvdXApCiAJewotCQlA ZGF0YVswXT1+cy94MmdvdXNlcl8vLzsKLQkJcHJpbnRmICgiJS0yMHMgeDJnb3VzZXJfQGRhdGFb MF1cbiIsQGRhdGFbMF0pOworCQlteSAoJG5hbWUsICRwYXNzd2QsICRnaWQsICRtZW1iZXJzKSA9 IGdldGdybmFtKCAkYWRkZ3JvdXApOworCQlteSBAZ3JwX21lbWJlcnM9c3BsaXQoJyAnLCRtZW1i ZXJzKTsKKwkJZm9yZWFjaCAoQGdycF9tZW1iZXJzKQorCQl7CisJCQljaG9tcCgkXyk7CisJCQlt eV9hZGRfdXNlcigkXyk7CisJCX0KIAl9Ci0JJHN0aC0+ZmluaXNoKCk7CisJCisJaWYgKCRybXVz ZXIpCisJeworCQlteV9ybV91c2VyKCRybXVzZXIpOworCX0KKwkKKwlpZiAoJHJtZ3JvdXApCisJ eworCQlteSAoJG5hbWUsICRwYXNzd2QsICRnaWQsICRtZW1iZXJzKSA9IGdldGdybmFtKCAkcm1n cm91cCk7CisJCW15IEBncnBfbWVtYmVycz1zcGxpdCgnICcsJG1lbWJlcnMpOworCQlmb3JlYWNo IChAZ3JwX21lbWJlcnMpCisJCXsKKwkJCWNob21wKCRfKTsKKwkJCW15X3JtX3VzZXIoJF8pOwor CQl9CisJfQogCXVuZGVmICRkYmg7Ci19Ci0KLXN1YiBybV91c2VyKCkKLXsKLQlteSAkdXNlcj1z aGlmdDsKLQotCXByaW50ICgicm0gREIgdXNlciBcIngyZ291c2VyXyR1c2VyXCJcbiIpOwotCi0J bXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJSRVZPS0UgQUxMIFBSSVZJTEVHRVMgT04gc2Vzc2lvbnMs IHVzZWRfcG9ydHMsIG1vdW50cyBGUk9NIFwieDJnb3VzZXJfJHVzZXJcIiIpOwotCSRzdGgtPmV4 ZWN1dGUoKTsKLQotCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiUkVWT0tFIEFMTCBQUklWSUxFR0VT IE9OIHNlc3Npb25zX3ZpZXcsIG1vdW50c192aWV3LCBzZXJ2ZXJzX3ZpZXcsIHBvcnRzX3ZpZXcg RlJPTSBcIngyZ291c2VyXyR1c2VyXCIiKTsKLQkkc3RoLT5leGVjdXRlKCk7Ci0KLQlteSAkc3Ro PSRkYmgtPnByZXBhcmUoIkRST1AgT1dORUQgQlkgXCJ4MmdvdXNlcl8kdXNlclwiIik7Ci0JJHN0 aC0+ZXhlY3V0ZSgpOwotCi0JbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJkcm9wIFVTRVIgaWYgZXhp c3RzIFwieDJnb3VzZXJfJHVzZXJcIiIpOwotCSRzdGgtPmV4ZWN1dGUoKTsKLQkkc3RoLT5maW5p c2goKTsKLQotCW15ICgkbmFtZSwgJHBhc3MsICR1aWQsICRwZ2lkLCAkcXVvdGEsICRjb21tZW50 LCAkZ2NvcywgJGRpciwgJHNoZWxsLCAkZXhwaXJlKSA9IGdldHB3bmFtKCR1c2VyKTsKLQlpZiAo ISAkdWlkKQorCQorCXN1YiBteV9saXN0X3VzZXJzKCkKIAl7Ci0JCXJldHVybjsKKwkJbXkgJGRi aD1EQkktPmNvbm5lY3QoImRiaTpteXNxbDpkYXRhYmFzZT0kZGI7aG9zdD0kaG9zdDtwb3J0PSRw b3J0IiwiJGRiYWRtaW4iLCIkZGJhZG1pbnBhc3MiLHtSYWlzZUVycm9yID0+IDF9KSBvciBkaWUg JF87CisJCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgic2VsZWN0IHVzZXIgZnJvbSBteXNxbC51c2Vy IHdoZXJlIHVzZXIgbGlrZSAneDJnb3VzZXJfJSciKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpb3IgZGll OworCQlwcmludGYgKCIlLTIwcyBEQiB1c2VyXG4iLCJVTklYIHVzZXIiKTsKKwkJcHJpbnQgIi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIjsKKwkJbXkgQGRhdGE7CisJ CXdoaWxlIChAZGF0YSA9ICRzdGgtPmZldGNocm93X2FycmF5KQorCQl7CisJCQlAZGF0YVswXT1+ cy94MmdvdXNlcl8vLzsKKwkJCXByaW50ZiAoIiUtMjBzIHgyZ291c2VyX0BkYXRhWzBdXG4iLEBk YXRhWzBdKTsKKwkJfQorCQkkc3RoLT5maW5pc2goKTsKKwkJdW5kZWYgJGRiaDsKIAl9Ci0JaWYg KCAtZSAiJGRpci8ueDJnby9zcWxwYXNzIiApCisJCisJc3ViIG15X3JtX3VzZXIoKQogCXsKLQkJ dW5saW5rKCIkZGlyLy54MmdvL3NxbHBhc3MiKTsKKwkJbXkgJHVzZXI9c2hpZnQ7CisJCisJCXBy aW50ICgicm0gREIgdXNlciBcIngyZ291c2VyXyR1c2VyXCJcbiIpOworCisJCW15ICRzdGg9JGRi aC0+cHJlcGFyZSgiRFJPUCBVU0VSIElGIEVYSVNUUyBgeDJnb3VzZXJfJHVzZXJgQGAkdW5ldGAi KTsKKwkJJHN0aC0+ZXhlY3V0ZSgpOworCQkkc3RoLT5maW5pc2goKTsKKworCQlteSAoJG5hbWUs ICRwYXNzLCAkdWlkLCAkcGdpZCwgJHF1b3RhLCAkY29tbWVudCwgJGdjb3MsICRkaXIsICRzaGVs bCwgJGV4cGlyZSkgPSBnZXRwd25hbSgkdXNlcik7CisJCWlmICghICR1aWQpCisJCXsKKwkJCXJl dHVybjsKKwkJfQorCQlpZiAoIC1lICIkZGlyLy54MmdvL3NxbHBhc3MiICkKKwkJeworCQkJdW5s aW5rKCIkZGlyLy54MmdvL3NxbHBhc3MiKTsKKwkJfQorCX0KKwkKKwlzdWIgbXlfYWRkX3VzZXIo KQorCXsKKwkJbXkgJHVzZXI9c2hpZnQ7CisKKwkJbXkgKCRuYW1lLCAkcGFzcywgJHVpZCwgJHBn aWQsICRxdW90YSwgJGNvbW1lbnQsICRnY29zLCAkZGlyLCAkc2hlbGwsICRleHBpcmUpID0gZ2V0 cHduYW0oJHVzZXIpOworCQlpZiAoISAkbmFtZSkKKwkJeworCQkJcHJpbnQgIkNhbm5vdCBmaW5k IHVzZXIgKCR1c2VyKVxuIjsKKwkJCXJldHVybjsKKwkJfSBlbHNpZiAoJG5hbWUgZXEgInJvb3Qi KSB7CisJCQlwcmludCAiVGhlIHN1cGVyLXVzZXIgXCJyb290XCIgaXMgbm90IGFsbG93ZWQgdG8g dXNlIFgyR29cbiI7CisJCQlyZXR1cm47CisJCX0KKwkJJHBhc3M9YHB3Z2VuIDggMWA7CisJCWNo b21wKCRwYXNzKTsKKworCQlteSAkc3RoPSRkYmgtPnByZXBhcmUoIkRST1AgVVNFUiBJRiBFWElT VFMgYHgyZ291c2VyXyR1c2VyYEBgJHVuZXRgIik7CisJCSRzdGgtPntXYXJufT0wOworCQkkc3Ro LT57UHJpbnRFcnJvcn09MDsKKwkJJHN0aC0+ZXhlY3V0ZSgpOworCisJCXByaW50ICgiY3JlYXRl IERCIHVzZXIgXCJ4MmdvdXNlcl8kdXNlclwiXG4iKTsKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCJD UkVBVEUgVVNFUiBgeDJnb3VzZXJfJHVzZXJgQGAkdW5ldGAgSURFTlRJRklFRCBCWSAnJHBhc3Mn Iik7CisJCSRzdGgtPmV4ZWN1dGUoKTsKKworCQkkc3RoPSRkYmgtPnByZXBhcmUoIkdSQU5UIFNF TEVDVCwgSU5TRVJULCBVUERBVEUsIERFTEVURSBPTiAqIFRPIGB4MmdvdXNlcl8kdXNlcmBAYCR1 bmV0YCIpOworCQkkc3RoLT5leGVjdXRlKCk7CisKKwkJJHN0aC0+ZmluaXNoKCk7CisJCisJCWlm ICghIC1kICIkZGlyLy54MmdvIiApCisJCXsKKwkJCQlpZiAoIGRlZmluZWQgKCZGaWxlOjpQYXRo OjptYWtlX3BhdGgpICkKKwkJCQl7CisJCQkJCUZpbGU6OlBhdGg6Om1ha2VfcGF0aCgiJGRpci8u eDJnbyIpOworCQkJCX0KKwkJCQllbHNpZiAoIGRlZmluZWQgKCZGaWxlOjpQYXRoOjpta3BhdGgp ICkKKwkJCQl7CisJCQkJCUZpbGU6OlBhdGg6Om1rcGF0aCgiJGRpci8ueDJnbyIpOworCQkJCX0K KwkJCQllbHNlCisJCQkJeworCQkJCQlkaWUgIlVuYWJsZSB0byBjcmVhdGUgZm9sZGVycyB3aXRo IEZpbGU6OlBhdGgiOworCQkJCX0KKwkJfQorCQorCQkjc2F2ZSB1c2VyIHBhc3N3b3JkCisJCW9w ZW4gKEZMLCI+ICRkaXIvLngyZ28vc3FscGFzcyIpIG9yIGRpZSAiQ2FuJ3Qgb3BlbiBwYXNzd29y ZCBmaWxlICRkaXIvLngyZ28vc3FscGFzcyI7CisJCXByaW50IEZMICRwYXNzOworCQljbG9zZShG TCk7CisJCWNobW9kKDA3MDAsIiRkaXIvLngyZ28iKTsKKwkJY2hvd24oJHVpZCwkcGdpZCwiJGRp ci8ueDJnbyIpOworCQljaG1vZCgwNjAwLCIkZGlyLy54MmdvL3NxbHBhc3MiKTsKKwkJY2hvd24o JHVpZCwkcGdpZCwiJGRpci8ueDJnby9zcWxwYXNzIik7CisJfQorCQorCXN1YiBteV9jcmVhdGVf dGFibGVzKCkKKwl7CisJCSRkYmg9REJJLT5jb25uZWN0KCJkYmk6bXlzcWw6ZGF0YWJhc2U9JGRi O2hvc3Q9JGhvc3Q7cG9ydD0kcG9ydCIsIiRkYmFkbWluIiwiJGRiYWRtaW5wYXNzIix7UmFpc2VF cnJvciA9PiAxfSkgb3IgZGllICRfOworCQlteSAkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAg ICAgICAgICAgICAgICAgICAgQ1JFQVRFIFRBQkxFIGBzZXNzaW9uc2AgKAorCQkgICAgICAgICAg ICAgICAgICAgICAgYHNlc3Npb25faWRgIHZhcmNoYXIoNTAwKSBOT1QgTlVMTCwKKwkJICAgICAg ICAgICAgICAgICAgICAgIGBkaXNwbGF5YCBpbnQoMTEpIE5PVCBOVUxMLAorCQkgICAgICAgICAg ICAgICAgICAgICAgYHVuYW1lYCB2YXJjaGFyKDEwMCkgTk9UIE5VTEwsCisJCSAgICAgICAgICAg ICAgICAgICAgICBgc2VydmVyYCB2YXJjaGFyKDEwMCkgTk9UIE5VTEwsCisJCSAgICAgICAgICAg ICAgICAgICAgICBgY2xpZW50YCB2YXJjaGFyKDIwKSBERUZBVUxUIE5VTEwsCisJCSAgICAgICAg ICAgICAgICAgICAgICBgc3RhdHVzYCBjaGFyKDEpIE5PVCBOVUxMIERFRkFVTFQgJ1InLAorCQkg ICAgICAgICAgICAgICAgICAgICAgYGluaXRfdGltZWAgZGF0ZXRpbWUgTk9UIE5VTEwgREVGQVVM VCBDVVJSRU5UX1RJTUVTVEFNUCwKKwkJICAgICAgICAgICAgICAgICAgICAgIGBsYXN0X3RpbWVg IGRhdGV0aW1lIE5PVCBOVUxMIERFRkFVTFQgQ1VSUkVOVF9USU1FU1RBTVAsCisJCSAgICAgICAg ICAgICAgICAgICAgICBgY29va2llYCBjaGFyKDQ1KSBERUZBVUxUIE5VTEwsCisJCSAgICAgICAg ICAgICAgICAgICAgICBgYWdlbnRfcGlkYCBpbnQoMTEpIERFRkFVTFQgTlVMTCwKKwkJICAgICAg ICAgICAgICAgICAgICAgIGBncl9wb3J0YCBpbnQoMTEpIERFRkFVTFQgTlVMTCwKKwkJICAgICAg ICAgICAgICAgICAgICAgIGBzb3VuZF9wb3J0YCBpbnQoMTEpIERFRkFVTFQgTlVMTCwKKwkJICAg ICAgICAgICAgICAgICAgICAgIGBmc19wb3J0YCBpbnQoMTEpIERFRkFVTFQgTlVMTCwKKwkJICAg ICAgICAgICAgICAgICAgICAgIGB0ZWtpY3RybF9wb3J0YCBpbnQoMTEpIERFRkFVTFQgTlVMTCwK KwkJICAgICAgICAgICAgICAgICAgICAgIGB0ZWtpZGF0YV9wb3J0YCBpbnQoMTEpIERFRkFVTFQg TlVMTCwKKwkJICAgICAgICAgICAgICAgICAgICAgIFBSSU1BUlkgS0VZIChgc2Vzc2lvbl9pZGAp LAorCQkgICAgICAgICAgICAgICAgICAgICAgVU5JUVVFIEtFWSBgZGlzcGxheV9VTklRVUVgIChg ZGlzcGxheWApKQorCQkgICAgICAgICAgICAgICAgICAgICAgIik7CisJCSRzdGgtPmV4ZWN1dGUo KSBvciBkaWU7CisKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAgICAgICAg IENSRUFURSBUQUJMRSBgbWVzc2FnZXNgICgKKwkJICAgICAgICAgICAgICAgICAgIGBtZXNzX2lk YCB2YXJjaGFyKDIwKSBOT1QgTlVMTCwKKwkJICAgICAgICAgICAgICAgICAgIGBtZXNhZ2VgIGxv bmd0ZXh0LAorCQkgICAgICAgICAgICAgICAgICAgUFJJTUFSWSBLRVkgKGBtZXNzX2lkYCkpCisJ CSAgICAgICAgICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkKKwkJ JHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAgICAgICAgIENSRUFURSBUQUJMRSBg dXNlcl9tZXNzYWdlc2AgKAorCQkgICAgICAgICAgICAgICAgICAgYG1lc3NfaWRgIHZhcmNoYXIo MjApIE5PVCBOVUxMLAorCQkgICAgICAgICAgICAgICAgICAgYHVuYW1lYCB2YXJjaGFyKDEwMCkg Tk9UIE5VTEwsCisJCSAgICAgICAgICAgICAgICAgICBQUklNQVJZIEtFWSAoYG1lc3NfaWRgKSkK KwkJICAgICAgICAgICAgICAgICAgICIpOworCQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOworCQor CQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAgICAgICAgICAgICAgICAgQ1JFQVRFIFRBQkxF IGB1c2VkX3BvcnRzYCAoCisJCSAgICAgICAgICAgICAgICAgICBgc2VydmVyYCB2YXJjaGFyKDEw MCkgTk9UIE5VTEwsCisJCSAgICAgICAgICAgICAgICAgICBgc2Vzc2lvbl9pZGAgdmFyY2hhcig1 MDApIERFRkFVTFQgTlVMTCwKKwkJICAgICAgICAgICAgICAgICAgIGBwb3J0YCBpbnQoMTEpIE5P VCBOVUxMLAorCQkgICAgICAgICAgICAgICAgICAgUFJJTUFSWSBLRVkgKGBwb3J0YCksCisJCSAg ICAgICAgICAgICAgICAgICBLRVkgYHVzZWRfcG9ydHNfc2Vzc2lvbl9pZF9ma2V5X2lkeGAgKGBz ZXNzaW9uX2lkYCksCisJCSAgICAgICAgICAgICAgICAgICBDT05TVFJBSU5UIGB1c2VkX3BvcnRz X3Nlc3Npb25faWRfZmtleWAgRk9SRUlHTiBLRVkgKGBzZXNzaW9uX2lkYCkgUkVGRVJFTkNFUyBg c2Vzc2lvbnNgIChgc2Vzc2lvbl9pZGApIE9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBOTyBB Q1RJT04pCisJCSAgICAgICAgICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRp ZTsKKwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAgICAgICAgIENSRUFU RSBUQUJMRSBgbW91bnRzYCAoCisJCSAgICAgICAgICAgICAgICAgICBgaWRgIGludCgxMSkgTk9U IE5VTEwgQVVUT19JTkNSRU1FTlQsCisJCSAgICAgICAgICAgICAgICAgICBgc2Vzc2lvbl9pZGAg dmFyY2hhcig1MDApIERFRkFVTFQgTlVMTCwKKwkJICAgICAgICAgICAgICAgICAgIGBwYXRoYCB2 YXJjaGFyKDUxMikgTk9UIE5VTEwsCisJCSAgICAgICAgICAgICAgICAgICBgY2xpZW50YCB2YXJj aGFyKDIwKSBOT1QgTlVMTCwKKwkJICAgICAgICAgICAgICAgICAgIFBSSU1BUlkgS0VZIChgaWRg KSwKKwkJICAgICAgICAgICAgICAgICAgIFVOSVFVRSBLRVkgYG1vdW50c19wa2V5YCAoYHBhdGhg LGBjbGllbnRgKSwKKwkJICAgICAgICAgICAgICAgICAgIEtFWSBgbW91bnRzX3Nlc3Npb25faWRf ZmtleV9pZHhgIChgc2Vzc2lvbl9pZGApLAorCQkgICAgICAgICAgICAgICAgICAgQ09OU1RSQUlO VCBgbW91bnRzX3Nlc3Npb25faWRfZmtleWAgRk9SRUlHTiBLRVkgKGBzZXNzaW9uX2lkYCkgUkVG RVJFTkNFUyBgc2Vzc2lvbnNgIChgc2Vzc2lvbl9pZGApIE9OIFVQREFURSBOTyBBQ1RJT04pCisJ CSAgICAgICAgICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkKKwkJ JHN0aD0kZGJoLT5wcmVwYXJlKCJHUkFOVCBBTEwgUFJJVklMRUdFUyBPTiAqIFRPIGAkeDJnb2Fk bWluYEBgJHVuZXRgIik7CisJCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7CisJCSRzdGgtPmZpbmlz aCgpOworCQl1bmRlZiAkZGJoOworCX0KKwkKKwlzdWIgbXlfY3JlYXRlX2RhdGFiYXNlCisJewor CQlteSAkZGJoPURCSS0+Y29ubmVjdCgiZGJpOm15c3FsOmRhdGFiYXNlPW15c3FsO2hvc3Q9JGhv c3Q7cG9ydD0kcG9ydCIsIiRkYmFkbWluIiwiJGRiYWRtaW5wYXNzIix7UmFpc2VFcnJvciA9PiAx fSkgb3IgZGllICRfOworCQkjZHJvcCBkYiBpZiBleGlzdHMKKwkJbXkgJHN0aD0kZGJoLT5wcmVw YXJlKCJEUk9QIERBVEFCQVNFIElGIEVYSVNUUyBgJGRiYCIpOworCQkkc3RoLT5leGVjdXRlKCk7 CisJCSNkcm9wIHgyZ29hZG1pbgorCQkkc3RoPSRkYmgtPnByZXBhcmUoIkRST1AgVVNFUiBJRiBF WElTVFMgYCR4MmdvYWRtaW5gQGAkdW5ldGAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpOworCQkjY3Jl YXRlIGRiCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiQ1JFQVRFIERBVEFCQVNFIElGIE5PVCBFWElT VFMgYCRkYmAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkJI2NyZWF0ZSB4MmdvYWRt aW4KKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCJDUkVBVEUgVVNFUiBgJHgyZ29hZG1pbmBAYCR1bmV0 YCBJREVOVElGSUVEIEJZICckeDJnb2FkbWlucGFzcyciKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9y IGRpZTsKKwkJI3NhdmUgeDJnb2FkbWluIHBhc3N3b3JkCisJCW9wZW4gKEZMLCI+IC9ldGMveDJn by94Mmdvc3FsL3Bhc3N3b3Jkcy94MmdvYWRtaW4gIikgb3IgZGllICJDYW4ndCB3cml0ZSBwYXNz d29yZCBmaWxlIC9ldGMveDJnby94Mmdvc3FsL3Bhc3N3b3Jkcy94MmdvYWRtaW4iOworCQlwcmlu dCBGTCAkeDJnb2FkbWlucGFzczsKKwkJY2xvc2UoRkwpOworCQkkc3RoLT5maW5pc2goKTsKKwkJ dW5kZWYgJGRiaDsKIAl9CiB9CiAKLXN1YiBhZGRfdXNlcigpCisKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIyBQb3N0Z3JlU1FMIEJhY2tlbmQKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworaWYgKCRDb25maWctPnBhcmFtKCJiYWNrZW5kIikgZXEgJ3Bvc3Rn cmVzJykKIHsKLQlteSAkdXNlcj1zaGlmdDsKLQlteSAoJG5hbWUsICRwYXNzLCAkdWlkLCAkcGdp ZCwgJHF1b3RhLCAkY29tbWVudCwgJGdjb3MsICRkaXIsICRzaGVsbCwgJGV4cGlyZSkgPSBnZXRw d25hbSgkdXNlcik7Ci0JaWYgKCEgJG5hbWUpCisJbXkgJGhvc3Q9JENvbmZpZy0+cGFyYW0oInBv c3RncmVzLmhvc3QiKTsKKwlteSAkcG9ydD0kQ29uZmlnLT5wYXJhbSgicG9zdGdyZXMucG9ydCIp OworCW15ICRzc2xtb2RlPSRDb25maWctPnBhcmFtKCJwb3N0Z3Jlcy5zc2wiKTsKKwlpZiAoISRz c2xtb2RlKQogCXsKLQkJcHJpbnQgIkNhbm5vdCBmaW5kIHVzZXIgKCR1c2VyKVxuIjsKLQkJcmV0 dXJuOwotCX0gZWxzaWYgKCRuYW1lIGVxICJyb290IikgewotCQlwcmludCAiVGhlIHN1cGVyLXVz ZXIgXCJyb290XCIgaXMgbm90IGFsbG93ZWQgdG8gdXNlIFgyR29cbiI7Ci0JCXJldHVybjsKKwkJ JHNzbG1vZGU9InByZWZlciI7CiAJfQotCSRwYXNzPWBwd2dlbiA4IDFgOwotCWNob21wKCRwYXNz KTsKLQotCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiUkVWT0tFIEFMTCBQUklWSUxFR0VTIE9OIHNl c3Npb25zLCB1c2VkX3BvcnRzLCBtb3VudHMgRlJPTSBcIngyZ291c2VyXyR1c2VyXCIiKTsKLQkk c3RoLT57V2Fybn09MDsKLQkkc3RoLT57UHJpbnRFcnJvcn09MDsKLQkkc3RoLT5leGVjdXRlKCk7 Ci0KLQlteSAkc3RoPSRkYmgtPnByZXBhcmUoIlJFVk9LRSBBTEwgUFJJVklMRUdFUyBPTiBzZXNz aW9uc192aWV3LCBtb3VudHNfdmlldywgc2VydmVyc192aWV3LCBwb3J0c192aWV3IEZST00gXCJ4 MmdvdXNlcl8kdXNlclwiIik7Ci0JJHN0aC0+e1dhcm59PTA7Ci0JJHN0aC0+e1ByaW50RXJyb3J9 PTA7Ci0JJHN0aC0+ZXhlY3V0ZSgpOwotCi0JbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJEUk9QIE9X TkVEIEJZIFwieDJnb3VzZXJfJHVzZXJcIiIpOwotCSRzdGgtPntXYXJufT0wOwotCSRzdGgtPntQ cmludEVycm9yfT0wOwotCSRzdGgtPmV4ZWN1dGUoKTsKLQotCSRzdGg9JGRiaC0+cHJlcGFyZSgi ZHJvcCBVU0VSIGlmIGV4aXN0cyBcIngyZ291c2VyXyR1c2VyXCIiKTsKLQkkc3RoLT57V2Fybn09 MDsKLQkkc3RoLT57UHJpbnRFcnJvcn09MDsKLQkkc3RoLT5leGVjdXRlKCk7Ci0KLQlwcmludCAo ImNyZWF0ZSBEQiB1c2VyIFwieDJnb3VzZXJfJHVzZXJcIlxuIik7Ci0JJHN0aD0kZGJoLT5wcmVw YXJlKCJjcmVhdGUgVVNFUiBcIngyZ291c2VyXyR1c2VyXCIgV0lUSCBFTkNSWVBURUQgUEFTU1dP UkQgJyRwYXNzJyIpOwotCSRzdGgtPmV4ZWN1dGUoKTsKLQotCSRzdGg9JGRiaC0+cHJlcGFyZSgi R1JBTlQgSU5TRVJULCBVUERBVEUsIERFTEVURSBPTiBzZXNzaW9ucywgdXNlZF9wb3J0cywgbW91 bnRzIFRPIFwieDJnb3VzZXJfJHVzZXJcIiIpOwotCSRzdGgtPmV4ZWN1dGUoKTsKLQotCSRzdGg9 JGRiaC0+cHJlcGFyZSgiR1JBTlQgU0VMRUNUIE9OIHVzZWRfcG9ydHMgVE8gXCJ4MmdvdXNlcl8k dXNlclwiIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpOwotCi0JJHN0aD0kZGJoLT5wcmVwYXJlKCJHUkFO VCBTRUxFQ1QsIFVQREFURSwgREVMRVRFIE9OIHNlc3Npb25zX3ZpZXcsIG1vdW50c192aWV3LCBz ZXJ2ZXJzX3ZpZXcsIHBvcnRzX3ZpZXcgVE8gXCJ4MmdvdXNlcl8kdXNlclwiIik7Ci0JJHN0aC0+ ZXhlY3V0ZSgpOwotCSRzdGgtPmZpbmlzaCgpOwotCi0JaWYgKCEgLWQgIiRkaXIvLngyZ28iICkK KwlteSAkZGJhZG1pbj0kQ29uZmlnLT5wYXJhbSgicG9zdGdyZXMuZGJhZG1pbiIpOworCW15ICR4 MmdvYWRtaW49IngyZ29kYnVzZXIiOworCW15ICR4MmdvYWRtaW5wYXNzPWBwd2dlbiA4IDFgOwor CWNob21wICgkeDJnb2FkbWlucGFzcyk7CisJbXkgJGRiPSJ4MmdvX3Nlc3Npb25zIjsKKwkKKwlp ZiAoISRob3N0KQogCXsKLQkJCWlmICggZGVmaW5lZCAoJkZpbGU6OlBhdGg6Om1ha2VfcGF0aCkg KQotCQkJewotCQkJCUZpbGU6OlBhdGg6Om1ha2VfcGF0aCgiJGRpci8ueDJnbyIpOwotCQkJfQot CQkJZWxzaWYgKCBkZWZpbmVkICgmRmlsZTo6UGF0aDo6bWtwYXRoKSApCi0JCQl7Ci0JCQkJRmls ZTo6UGF0aDo6bWtwYXRoKCIkZGlyLy54MmdvIik7Ci0JCQl9Ci0JCQllbHNlCi0JCQl7Ci0JCQkJ ZGllICJVbmFibGUgdG8gY3JlYXRlIGZvbGRlcnMgd2l0aCBGaWxlOjpQYXRoIjsKLQkJCX0KKwkJ JGhvc3Q9J2xvY2FsaG9zdCc7CiAJfQotCi0JI3NhdmUgdXNlciBwYXNzd29yZAotCW9wZW4gKEZM LCI+ICRkaXIvLngyZ28vc3FscGFzcyIpIG9yIGRpZSAiQ2FuJ3Qgb3BlbiBwYXNzd29yZCBmaWxl ICRkaXIvLngyZ28vc3FscGFzcyI7Ci0JcHJpbnQgRkwgJHBhc3M7CisJaWYgKCEkcG9ydCkKKwl7 CisJCSRwb3J0PSc1NDMyJzsKKwl9CisJaWYgKCEkZGJhZG1pbikKKwl7CisJCSRkYmFkbWluPSdw b3N0Z3Jlcyc7CisJfQorCQorCW9wZW4gKEZMLCI8IC9ldGMveDJnby94Mmdvc3FsL3Bhc3N3b3Jk cy9wZ2FkbWluICIpIG9yIGRpZSAiQ2FuJ3QgcmVhZCBwYXNzd29yZCBmaWxlIC9ldGMveDJnby94 Mmdvc3FsL3Bhc3N3b3Jkcy9wZ2FkbWluIjsKKwlteSAkZGJhZG1pbnBhc3M9PEZMPjsKIAljbG9z ZShGTCk7Ci0JY2htb2QoMDcwMCwiJGRpci8ueDJnbyIpOwotCWNob3duKCR1aWQsJHBnaWQsIiRk aXIvLngyZ28iKTsKLQljaG1vZCgwNjAwLCIkZGlyLy54MmdvL3NxbHBhc3MiKTsKLQljaG93bigk dWlkLCRwZ2lkLCIkZGlyLy54MmdvL3NxbHBhc3MiKTsKLX0KLQotc3ViIGNyZWF0ZV90YWJsZXMo KQotewotCSRkYmg9REJJLT5jb25uZWN0KCJkYmk6UGc6ZGJuYW1lPSRkYjtob3N0PSRob3N0O3Bv cnQ9JHBvcnQ7c3NsbW9kZT0kc3NsbW9kZSIsICIkZGJhZG1pbiIsICIkZGJhZG1pbnBhc3MiLHtB dXRvQ29tbWl0ID0+IDF9KSBvciBkaWUgJF87Ci0JbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCIKLQkg ICAgICAgICAgICAgICAgICAgICAgY3JlYXRlIHRhYmxlIHNlc3Npb25zKAotCSAgICAgICAgICAg ICAgICAgICAgICBzZXNzaW9uX2lkIHRleHQgcHJpbWFyeSBrZXksCi0JICAgICAgICAgICAgICAg ICAgICAgIGRpc3BsYXkgaW50ZWdlciBub3QgbnVsbCwKLQkgICAgICAgICAgICAgICAgICAgICAg dW5hbWUgdGV4dCBub3QgbnVsbCwKLQkgICAgICAgICAgICAgICAgICAgICAgc2VydmVyIHRleHQg bm90IG51bGwsCi0JICAgICAgICAgICAgICAgICAgICAgIGNsaWVudCBpbmV0LAotCSAgICAgICAg ICAgICAgICAgICAgICBzdGF0dXMgY2hhcigxKSBub3QgbnVsbCBkZWZhdWx0ICdSJywKLQkgICAg ICAgICAgICAgICAgICAgICAgaW5pdF90aW1lIHRpbWVzdGFtcCBub3QgbnVsbCBkZWZhdWx0IG5v dygpLAotCSAgICAgICAgICAgICAgICAgICAgICBsYXN0X3RpbWUgdGltZXN0YW1wIG5vdCBudWxs IGRlZmF1bHQgbm93KCksCi0JICAgICAgICAgICAgICAgICAgICAgIGNvb2tpZSBjaGFyKDMzKSwK LQkgICAgICAgICAgICAgICAgICAgICAgYWdlbnRfcGlkIGludCwKLQkgICAgICAgICAgICAgICAg ICAgICAgZ3JfcG9ydCBpbnQsCi0JICAgICAgICAgICAgICAgICAgICAgIHNvdW5kX3BvcnQgaW50 LAotCSAgICAgICAgICAgICAgICAgICAgICBmc19wb3J0IGludCwKLQkgICAgICAgICAgICAgICAg ICAgICAgdGVraWN0cmxfcG9ydCBpbnQsCi0JICAgICAgICAgICAgICAgICAgICAgIHRla2lkYXRh X3BvcnQgaW50LAotCSAgICAgICAgICAgICAgICAgICAgICBjcmVhdG9yX2lkIHRleHQgTk9UIE5V TEwgZGVmYXVsdCBjdXJyZW50X3VzZXIsCi0JICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZShk aXNwbGF5KSkKLQkgICAgICAgICAgICAgICAgICAgICAgIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpIG9y IGRpZTsKLQotCSRzdGg9JGRiaC0+cHJlcGFyZSgiCi0JICAgICAgICAgICAgICAgICAgIGNyZWF0 ZSBWSUVXIHNlc3Npb25zX3ZpZXcgYXMKLQkgICAgICAgICAgICAgICAgICAgU0VMRUNUCi0JICAg ICAgICAgICAgICAgICAgIGFnZW50X3BpZCwgc2Vzc2lvbl9pZCwgZGlzcGxheSwgc2VydmVyLCBz dGF0dXMsIGluaXRfdGltZSwgY29va2llLCBjbGllbnQsIGdyX3BvcnQsCi0JICAgICAgICAgICAg ICAgICAgIHNvdW5kX3BvcnQsIGxhc3RfdGltZSwgdW5hbWUsIGZzX3BvcnQsIHRla2ljdHJsX3Bv cnQsIHRla2lkYXRhX3BvcnQgZnJvbSBzZXNzaW9ucwotCSAgICAgICAgICAgICAgICAgICB3aGVy ZSBjcmVhdG9yX2lkID0gY3VycmVudF91c2VyCi0JICAgICAgICAgICAgICAgICAgICIpOwotCSRz dGgtPmV4ZWN1dGUoKSBvciBkaWU7Ci0KLQkkc3RoPSRkYmgtPnByZXBhcmUoIgotCSAgICAgICAg ICAgICAgICAgICBjcmVhdGUgVklFVyBzZXJ2ZXJzX3ZpZXcgYXMKLQkgICAgICAgICAgICAgICAg ICAgU0VMRUNUCi0JICAgICAgICAgICAgICAgICAgIHNlcnZlciwgZGlzcGxheSwgc3RhdHVzIGZy b20gc2Vzc2lvbnMKLQkgICAgICAgICAgICAgICAgICAgIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpIG9y IGRpZTsKLQotCSRzdGg9JGRiaC0+cHJlcGFyZSgiCi0JICAgICAgICAgICAgICAgICAgIGNyZWF0 ZSBvciByZXBsYWNlIFJVTEUgdXBkYXRlX3Nlc3NfcHJpdiBBUyBPTiBVUERBVEUKLQkgICAgICAg ICAgICAgICAgICAgVE8gc2Vzc2lvbnMgd2hlcmUgKE9MRC5jcmVhdG9yX2lkIDw+IGN1cnJlbnRf dXNlciBvciBPTEQuY3JlYXRvcl9pZCA8PiBORVcuY3JlYXRvcl9pZCkgYW5kIGN1cnJlbnRfdXNl ciA8PiAnJHgyZ29hZG1pbicKLQkgICAgICAgICAgICAgICAgICAgRE8gSU5TVEVBRCBOT1RISU5H Ci0JICAgICAgICAgICAgICAgICAgICIpOwotCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7Ci0KLQkk c3RoPSRkYmgtPnByZXBhcmUoIgotCSAgICAgICAgICAgICAgICAgICBjcmVhdGUgb3IgcmVwbGFj ZSBSVUxFIGluc2VydF9zZXNzX3ByaXYgQVMgT04gSU5TRVJUCi0JICAgICAgICAgICAgICAgICAg IFRPIHNlc3Npb25zIHdoZXJlIE5FVy5jcmVhdG9yX2lkIDw+IGN1cnJlbnRfdXNlciBhbmQgY3Vy cmVudF91c2VyIDw+ICckeDJnb2FkbWluJwotCSAgICAgICAgICAgICAgICAgICBETyBJTlNURUFE IE5PVEhJTkcKLQkgICAgICAgICAgICAgICAgICAgIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpIG9yIGRp ZTsKLQotCSRzdGg9JGRiaC0+cHJlcGFyZSgiCi0JICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBv ciByZXBsYWNlIFJVTEUgZGVsZXRlX3Nlc3NfcHJpdiBBUyBPTiBERUxFVEUKLQkgICAgICAgICAg ICAgICAgICAgVE8gc2Vzc2lvbnMgd2hlcmUgT0xELmNyZWF0b3JfaWQgPD4gY3VycmVudF91c2Vy IGFuZCBjdXJyZW50X3VzZXIgPD4gJyR4MmdvYWRtaW4nCi0JICAgICAgICAgICAgICAgICAgIERP IElOU1RFQUQgTk9USElORwotCSAgICAgICAgICAgICAgICAgICAiKTsKLQkkc3RoLT5leGVjdXRl KCkgb3IgZGllOwotCi0JJHN0aD0kZGJoLT5wcmVwYXJlKCIKLQkgICAgICAgICAgICAgICAgICAg Y3JlYXRlIG9yIHJlcGxhY2UgUlVMRSB1cGRhdGVfc2Vzc192aWV3IEFTIE9OIFVQREFURQotCSAg ICAgICAgICAgICAgICAgICBUTyBzZXNzaW9uc192aWV3IERPIElOU1RFQUQKLQkgICAgICAgICAg ICAgICAgICAgdXBkYXRlIHNlc3Npb25zIHNldAotCSAgICAgICAgICAgICAgICAgICBzdGF0dXM9 TkVXLnN0YXR1cywKLQkgICAgICAgICAgICAgICAgICAgbGFzdF90aW1lPU5FVy5sYXN0X3RpbWUs Ci0JICAgICAgICAgICAgICAgICAgIGNvb2tpZT1ORVcuY29va2llLAotCSAgICAgICAgICAgICAg ICAgICBhZ2VudF9waWQ9TkVXLmFnZW50X3BpZCwKLQkgICAgICAgICAgICAgICAgICAgY2xpZW50 PU5FVy5jbGllbnQsCi0JICAgICAgICAgICAgICAgICAgIGdyX3BvcnQ9TkVXLmdyX3BvcnQsCi0J ICAgICAgICAgICAgICAgICAgIHNvdW5kX3BvcnQ9TkVXLnNvdW5kX3BvcnQsCi0JICAgICAgICAg ICAgICAgICAgIGZzX3BvcnQ9TkVXLmZzX3BvcnQsCi0JICAgICAgICAgICAgICAgICAgIHRla2lj dHJsX3BvcnQ9TkVXLnRla2ljdHJsX3BvcnQsCi0JICAgICAgICAgICAgICAgICAgIHRla2lkYXRh X3BvcnQ9TkVXLnRla2lkYXRhX3BvcnQKLQkgICAgICAgICAgICAgICAgICAgd2hlcmUgc2Vzc2lv bl9pZD1PTEQuc2Vzc2lvbl9pZCBhbmQgY3JlYXRvcl9pZD1jdXJyZW50X3VzZXIKLQkgICAgICAg ICAgICAgICAgICAgIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKLQotCSRzdGg9JGRiaC0+ cHJlcGFyZSgiCi0JICAgICAgICAgICAgICAgICAgIGNyZWF0ZSB0YWJsZSBtZXNzYWdlcyhtZXNz X2lkIHZhcmNoYXIoMjApIHByaW1hcnkga2V5LCBtZXNzYWdlIHRleHQpCi0JICAgICAgICAgICAg ICAgICAgICIpOwotCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7Ci0KLQkkc3RoPSRkYmgtPnByZXBh cmUoIgotCSAgICAgICAgICAgICAgICAgICBjcmVhdGUgdGFibGUgdXNlcl9tZXNzYWdlcygKLQkg ICAgICAgICAgICAgICAgICAgbWVzc19pZCB0ZXh0IG5vdCBudWxsLAotCSAgICAgICAgICAgICAg ICAgICB1bmFtZSB0ZXh0IG5vdCBudWxsKQotCSAgICAgICAgICAgICAgICAgICAiKTsKLQkkc3Ro LT5leGVjdXRlKCkgb3IgZGllOwotCi0JJHN0aD0kZGJoLT5wcmVwYXJlKCIKLQkgICAgICAgICAg ICAgICAgICAgY3JlYXRlIHRhYmxlIHVzZWRfcG9ydHMoCi0JICAgICAgICAgICAgICAgICAgIHNl cnZlciB0ZXh0IG5vdCBudWxsLAotCSAgICAgICAgICAgICAgICAgICBzZXNzaW9uX2lkIHRleHQg cmVmZXJlbmNlcyBzZXNzaW9ucyBvbiBkZWxldGUgY2FzY2FkZSwKLQkgICAgICAgICAgICAgICAg ICAgY3JlYXRvcl9pZCB0ZXh0IE5PVCBOVUxMIGRlZmF1bHQgY3VycmVudF91c2VyLAotCSAgICAg ICAgICAgICAgICAgICBwb3J0IGludGVnZXIgcHJpbWFyeSBrZXkpCi0JICAgICAgICAgICAgICAg ICAgICIpOwotCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7Ci0KLQkkc3RoPSRkYmgtPnByZXBhcmUo IgotCSAgICAgICAgICAgICAgICAgICBjcmVhdGUgVklFVyBwb3J0c192aWV3IGFzCi0JICAgICAg ICAgICAgICAgICAgIFNFTEVDVAotCSAgICAgICAgICAgICAgICAgICBzZXJ2ZXIsIHBvcnQgZnJv bSB1c2VkX3BvcnRzCi0JICAgICAgICAgICAgICAgICAgICIpOwotCSRzdGgtPmV4ZWN1dGUoKSBv ciBkaWU7Ci0KLQkkc3RoPSRkYmgtPnByZXBhcmUoIgotCSAgICAgICAgICAgICAgICAgICBjcmVh dGUgb3IgcmVwbGFjZSBSVUxFIGluc2VydF9wb3J0X3ByaXYgQVMgT04gSU5TRVJUCi0JICAgICAg ICAgICAgICAgICAgIFRPIHVzZWRfcG9ydHMgd2hlcmUgTkVXLmNyZWF0b3JfaWQgPD4gY3VycmVu dF91c2VyIGFuZCBjdXJyZW50X3VzZXIgPD4gJyR4MmdvYWRtaW4nCi0JICAgICAgICAgICAgICAg ICAgIERPIElOU1RFQUQgTk9USElORwotCSAgICAgICAgICAgICAgICAgICAiKTsKLQkkc3RoLT5l eGVjdXRlKCkgb3IgZGllOwotCi0JJHN0aD0kZGJoLT5wcmVwYXJlKCIKLQkgICAgICAgICAgICAg ICAgICAgY3JlYXRlIG9yIHJlcGxhY2UgUlVMRSB1cGRhdGVfcG9ydF9wcml2IEFTIE9OIFVQREFU RQotCSAgICAgICAgICAgICAgICAgICBUTyB1c2VkX3BvcnRzIHdoZXJlIChORVcuY3JlYXRvcl9p ZCA8PiBjdXJyZW50X3VzZXIgb3IgT0xELmNyZWF0b3JfaWQgPD4gY3VycmVudF91c2VyKSBhbmQg Y3VycmVudF91c2VyIDw+ICckeDJnb2FkbWluJwotCSAgICAgICAgICAgICAgICAgICBETyBJTlNU RUFEIE5PVEhJTkcKLQkgICAgICAgICAgICAgICAgICAgIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpIG9y IGRpZTsKLQotCSRzdGg9JGRiaC0+cHJlcGFyZSgiCi0JICAgICAgICAgICAgICAgICAgIGNyZWF0 ZSBvciByZXBsYWNlIFJVTEUgZGVsZXRlX3BvcnRfcHJpdiBBUyBPTiBERUxFVEUKLQkgICAgICAg ICAgICAgICAgICAgVE8gdXNlZF9wb3J0cyB3aGVyZSBPTEQuY3JlYXRvcl9pZCA8PiBjdXJyZW50 X3VzZXIgYW5kIGN1cnJlbnRfdXNlciA8PiAnJHgyZ29hZG1pbicKLQkgICAgICAgICAgICAgICAg ICAgRE8gSU5TVEVBRCBOT1RISU5HCi0JICAgICAgICAgICAgICAgICAgICIpOwotCSRzdGgtPmV4 ZWN1dGUoKSBvciBkaWU7Ci0KLQkkc3RoPSRkYmgtPnByZXBhcmUoIgotCSAgICAgICAgICAgICAg ICAgICBjcmVhdGUgdGFibGUgbW91bnRzKAotCSAgICAgICAgICAgICAgICAgICBzZXNzaW9uX2lk IHRleHQgcmVmZXJlbmNlcyBzZXNzaW9ucyBvbiBkZWxldGUgcmVzdHJpY3QsCi0JICAgICAgICAg ICAgICAgICAgIHBhdGggdGV4dCBub3QgbnVsbCwKLQkgICAgICAgICAgICAgICAgICAgY2xpZW50 IGluZXQgbm90IG51bGwsCi0JICAgICAgICAgICAgICAgICAgIGNyZWF0b3JfaWQgdGV4dCBOT1Qg TlVMTCBkZWZhdWx0IGN1cnJlbnRfdXNlciwKLQkgICAgICAgICAgICAgICAgICAgcHJpbWFyeSBr ZXkocGF0aCxjbGllbnQpKQotCSAgICAgICAgICAgICAgICAgICAiKTsKLQkkc3RoLT5leGVjdXRl KCkgb3IgZGllOwotCi0JJHN0aD0kZGJoLT5wcmVwYXJlKCIKLQkgICAgICAgICAgICAgICAgICAg Y3JlYXRlIFZJRVcgbW91bnRzX3ZpZXcgYXMKLQkgICAgICAgICAgICAgICAgICAgU0VMRUNUCi0J ICAgICAgICAgICAgICAgICAgIGNsaWVudCxwYXRoLCBzZXNzaW9uX2lkIGZyb20gbW91bnRzCi0J ICAgICAgICAgICAgICAgICAgIHdoZXJlIGNyZWF0b3JfaWQgPSBjdXJyZW50X3VzZXIKLQkgICAg ICAgICAgICAgICAgICAgIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKLQotCSRzdGg9JGRi aC0+cHJlcGFyZSgiCi0JICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBvciByZXBsYWNlIFJVTEUg ZGVsZXRlX21vdW50c192aWV3IEFTIE9OIERFTEVURQotCSAgICAgICAgICAgICAgICAgICBUTyBt b3VudHNfdmlldyBETyBJTlNURUFECi0JICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBmcm9tIG1v dW50cwotCSAgICAgICAgICAgICAgICAgICB3aGVyZSBzZXNzaW9uX2lkPU9MRC5zZXNzaW9uX2lk IGFuZCBjcmVhdG9yX2lkPWN1cnJlbnRfdXNlciBhbmQgcGF0aD1PTEQucGF0aAotCSAgICAgICAg ICAgICAgICAgICAiKTsKLQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOwotCi0JJHN0aD0kZGJoLT5w cmVwYXJlKCIKLQkgICAgICAgICAgICAgICAgICAgY3JlYXRlIG9yIHJlcGxhY2UgUlVMRSBpbnNl cnRfbW91bnRfcHJpdiBBUyBPTiBJTlNFUlQKLQkgICAgICAgICAgICAgICAgICAgVE8gbW91bnRz IHdoZXJlIE5FVy5jcmVhdG9yX2lkIDw+IGN1cnJlbnRfdXNlciBhbmQgY3VycmVudF91c2VyIDw+ ICckeDJnb2FkbWluJwotCSAgICAgICAgICAgICAgICAgICBETyBJTlNURUFEIE5PVEhJTkcKLQkg ICAgICAgICAgICAgICAgICAgIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKLQotCSRzdGg9 JGRiaC0+cHJlcGFyZSgiCi0JICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBvciByZXBsYWNlIFJV TEUgdXBkYXRlX21vdW50X3ByaXYgQVMgT04gVVBEQVRFCi0JICAgICAgICAgICAgICAgICAgIFRP IG1vdW50cyB3aGVyZSAoTkVXLmNyZWF0b3JfaWQgPD4gY3VycmVudF91c2VyIG9yIE9MRC5jcmVh dG9yX2lkIDw+IGN1cnJlbnRfdXNlcikgYW5kIGN1cnJlbnRfdXNlciA8PiAnJHgyZ29hZG1pbicK LQkgICAgICAgICAgICAgICAgICAgRE8gSU5TVEVBRCBOT1RISU5HCi0JICAgICAgICAgICAgICAg ICAgICIpOwotCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7Ci0KLQkkc3RoPSRkYmgtPnByZXBhcmUo IgotCSAgICAgICAgICAgICAgICAgICBjcmVhdGUgb3IgcmVwbGFjZSBSVUxFIGRlbGV0ZV9tb3Vu dF9wcml2IEFTIE9OIERFTEVURQotCSAgICAgICAgICAgICAgICAgICBUTyBtb3VudHMgd2hlcmUg T0xELmNyZWF0b3JfaWQgPD4gY3VycmVudF91c2VyIGFuZCBjdXJyZW50X3VzZXIgPD4gJyR4Mmdv YWRtaW4nCi0JICAgICAgICAgICAgICAgICAgIERPIElOU1RFQUQgTk9USElORwotCSAgICAgICAg ICAgICAgICAgICAiKTsKLQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOwotCi0JJHN0aD0kZGJoLT5w cmVwYXJlKCJHUkFOVCBBTEwgUFJJVklMRUdFUyBPTiBzZXNzaW9ucywgbWVzc2FnZXMsIHVzZXJf bWVzc2FnZXMsIHVzZWRfcG9ydHMsIG1vdW50cyBUTyAkeDJnb2FkbWluIik7Ci0JJHN0aC0+ZXhl Y3V0ZSgpIG9yIGRpZTsKLQkkc3RoLT5maW5pc2goKTsKKwljaG9tcCgkZGJhZG1pbnBhc3MpOwor CQorCWlmICgkdXBkYXRlZGIpCisJeworCQkjIGNoZWNrIGlmIHRoZSBEQiBhbHJlYWR5IGV4aXN0 cywgaWYgbm90LCBjcmVhdGUgaXQuLi4KKwkJbXkgJGRiaDsKKwkJdW50aWwgKAorCQkJJGRiaCA9 IERCSS0+Y29ubmVjdCgiZGJpOlBnOmRibmFtZT0kZGI7aG9zdD0kaG9zdDtwb3J0PSRwb3J0O3Nz bG1vZGU9JHNzbG1vZGUiLCAiJGRiYWRtaW4iLCAiJGRiYWRtaW5wYXNzIix7QXV0b0NvbW1pdCA9 PiAxLCBSYWlzZUVycm9yID0+IDAsIFByaW50RXJyb3IgPT4gMH0pCisJCSkgeworCQkJJGNyZWF0 ZWRiID0gMTsKKwkJCWxhc3Q7CisJCX07CisJCWlmICghJGNyZWF0ZWRiKSB7CisJCQkkZGJoID0g REJJLT5jb25uZWN0KCJkYmk6UGc6ZGJuYW1lPSRkYjtob3N0PSRob3N0O3BvcnQ9JHBvcnQ7c3Ns bW9kZT0kc3NsbW9kZSIsICIkZGJhZG1pbiIsICIkZGJhZG1pbnBhc3MiLHtBdXRvQ29tbWl0ID0+ IDF9KTsKKwkJCWlmICgkZGJoKSB7CisJCQkJbXkgJHVwZGF0ZV92aWV3c19uX3J1bGVzID0gMDsK KwkJCQlteSAkc3RoX3Rla2ljdHJsOworCQkJCW15ICRzdGhfdGVraWRhdGE7CisJCQkJbXkgJHN0 aF91cGRhdGU7CisJCQkJdHJ5IHsKKwkJCQkJJHN0aF90ZWtpY3RybCA9ICRkYmgtPnByZXBhcmUo IgorCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QgdGVraWN0cmxfcG9y dCBmcm9tIHNlc3Npb25zCisJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpOwor CQkJCQkkc3RoX3Rla2ljdHJsLT5leGVjdXRlKCk7CisJCQkJfSBjYXRjaCB7CisJCQkJCXByaW50 ICJBRERJTkc6IHRla2ljdHJsX3BvcnQgY29sdW1uIHRvIHRhYmxlIHNlc3Npb25zXG4iOworCQkJ CQkkc3RoX3Rla2ljdHJsID0gJGRiaC0+cHJlcGFyZSgiCisJCQkJCSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGFsdGVyIHRhYmxlIHNlc3Npb25zCisJCQkJCSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGFkZCBjb2x1bW4gdGVraWN0cmxfcG9ydCBpbnQKKwkJCQkJICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIik7CisJCQkJCSRzdGhfdGVraWN0cmwtPmV4ZWN1dGUoKSBv ciBkaWU7CisJCQkJCSRzdGhfdGVraWN0cmwtPmZpbmlzaCgpOworCQkJCQkkdXBkYXRlX3ZpZXdz X25fcnVsZXMgPSAxOworCQkJCX07CisJCQkJdHJ5IHsKKwkJCQkJJHN0aF90ZWtpZGF0YSA9ICRk YmgtPnByZXBhcmUoIgorCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Qg dGVraWRhdGFfcG9ydCBmcm9tIHNlc3Npb25zCisJCQkJCSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICIpOworCQkJCQkkc3RoX3Rla2lkYXRhLT5leGVjdXRlKCk7CisJCQkJfSBjYXRjaCB7 CisJCQkJCXByaW50ICJBRERJTkc6IHRla2lkYXRhX3BvcnQgY29sdW1uIHRvIHRhYmxlIHNlc3Np b25zXG4iOworCQkJCQkkc3RoX3Rla2lkYXRhPSRkYmgtPnByZXBhcmUoIgorCQkJCQkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYWx0ZXIgdGFibGUgc2Vzc2lvbnMKKwkJCQkJICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFkZCBjb2x1bW4gdGVraWRhdGFfcG9ydCBpbnQKKwkJCQkJICAg ICAgICAgICAgICAgICAgICAgICAgICAgICIpOworCQkJCQkkc3RoX3Rla2lkYXRhLT5leGVjdXRl KCkgb3IgZGllOworCQkJCQkkc3RoX3Rla2lkYXRhLT5maW5pc2goKTsKKwkJCQkJJHVwZGF0ZV92 aWV3c19uX3J1bGVzID0gMTsKKwkJCQl9OworCQorCQkJCWlmICgkdXBkYXRlX3ZpZXdzX25fcnVs ZXMpCisJCQkJeworCQkJCQlwcmludCAiVVBEQVRJTkcgVklFVzogc2Vzc2lvbnNfdmlld1xuIjsK KwkJCQkJJHN0aF91cGRhdGU9JGRiaC0+cHJlcGFyZSgiCisJCQkJCSAgICAgICAgICAgICAgICAg ICAgICAgICAgY3JlYXRlIG9yIHJlcGxhY2UgVklFVyBzZXNzaW9uc192aWV3IGFzCisJCQkJCSAg ICAgICAgICAgICAgICAgICAgICAgICAgU0VMRUNUCisJCQkJCSAgICAgICAgICAgICAgICAgICAg ICAgICAgYWdlbnRfcGlkLCBzZXNzaW9uX2lkLCBkaXNwbGF5LCBzZXJ2ZXIsIHN0YXR1cywgaW5p dF90aW1lLCBjb29raWUsIGNsaWVudCwgZ3JfcG9ydCwKKwkJCQkJICAgICAgICAgICAgICAgICAg ICAgICAgICBzb3VuZF9wb3J0LCBsYXN0X3RpbWUsIHVuYW1lLCBmc19wb3J0LCB0ZWtpY3RybF9w b3J0LCB0ZWtpZGF0YV9wb3J0IGZyb20gc2Vzc2lvbnMKKwkJCQkJICAgICAgICAgICAgICAgICAg ICAgICAgICB3aGVyZSBjcmVhdG9yX2lkID0gY3VycmVudF91c2VyCisJCQkJCSAgICAgICAgICAg ICAgICAgICAgICAgICAgIik7CisJCQkJCSRzdGhfdXBkYXRlLT5leGVjdXRlKCkgb3IgZGllOwor CQkJCQlwcmludCAiVVBEQVRJTkcgUlVMRTogdXBkYXRlX3Nlc3Nfdmlld1xuIjsKKwkJCQkJJHN0 aF91cGRhdGU9JGRiaC0+cHJlcGFyZSgiCisJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAg Y3JlYXRlIG9yIHJlcGxhY2UgUlVMRSB1cGRhdGVfc2Vzc192aWV3IEFTIE9OIFVQREFURQorCQkJ CQkgICAgICAgICAgICAgICAgICAgICAgICAgIFRPIHNlc3Npb25zX3ZpZXcgRE8gSU5TVEVBRAor CQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSBzZXNzaW9ucyBzZXQKKwkJCQkJ ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9TkVXLnN0YXR1cywKKwkJCQkJICAgICAg ICAgICAgICAgICAgICAgICAgICBsYXN0X3RpbWU9TkVXLmxhc3RfdGltZSwKKwkJCQkJICAgICAg ICAgICAgICAgICAgICAgICAgICBjb29raWU9TkVXLmNvb2tpZSwKKwkJCQkJICAgICAgICAgICAg ICAgICAgICAgICAgICBhZ2VudF9waWQ9TkVXLmFnZW50X3BpZCwKKwkJCQkJICAgICAgICAgICAg ICAgICAgICAgICAgICBjbGllbnQ9TkVXLmNsaWVudCwKKwkJCQkJICAgICAgICAgICAgICAgICAg ICAgICAgICBncl9wb3J0PU5FVy5ncl9wb3J0LAorCQkJCQkgICAgICAgICAgICAgICAgICAgICAg ICAgIHNvdW5kX3BvcnQ9TkVXLnNvdW5kX3BvcnQsCisJCQkJCSAgICAgICAgICAgICAgICAgICAg ICAgICAgZnNfcG9ydD1ORVcuZnNfcG9ydCwKKwkJCQkJICAgICAgICAgICAgICAgICAgICAgICAg ICB0ZWtpY3RybF9wb3J0PU5FVy50ZWtpY3RybF9wb3J0LAorCQkJCQkgICAgICAgICAgICAgICAg ICAgICAgICAgIHRla2lkYXRhX3BvcnQ9TkVXLnRla2lkYXRhX3BvcnQKKwkJCQkJICAgICAgICAg ICAgICAgICAgICAgICAgICB3aGVyZSBzZXNzaW9uX2lkPU9MRC5zZXNzaW9uX2lkIGFuZCBjcmVh dG9yX2lkPWN1cnJlbnRfdXNlcgorCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICIpOwor CQkJCQkkc3RoX3VwZGF0ZS0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkJCQkJJHN0aF91cGRhdGUtPmZp bmlzaCgpOworCQkJCX0KKwkJCX0KKwkJCWlmICgkZGJoKSB7CisJCQkJdW5kZWYgJGRiaDsKKwkJ CX0KKwkJCWV4aXQoMCk7CisJCX0gZWxzZSB7CisJCQlwcmludCAiTm8gc2Vzc2lvbiBEQiBmb3Vu ZC4gVXNlIC0tY3JlYXRlZGIgaW5zdGVhZCBvZiAtLXVwZGF0ZWRiLlxuIjsKKwkJfQorCX0KKwkK KwlpZiAoJGNyZWF0ZWRiKQorCXsKKwkJY3JlYXRlX2RhdGFiYXNlKCk7CisJCWNyZWF0ZV90YWJs ZXMoKTsKKwkJZXhpdCgwKTsKKwl9CisJCisJaWYgKCRsaXN0dXNlcnMpCisJeworCQlsaXN0X3Vz ZXJzKCk7CisJCWV4aXQoMCk7CisJfQorCQorCW15ICRkYmg9REJJLT5jb25uZWN0KCJkYmk6UGc6 ZGJuYW1lPSRkYjtob3N0PSRob3N0O3BvcnQ9JHBvcnQ7c3NsbW9kZT0kc3NsbW9kZSIsICIkZGJh ZG1pbiIsICIkZGJhZG1pbnBhc3MiLHtBdXRvQ29tbWl0ID0+IDF9KSBvciBkaWUgJF87CisJaWYg KCRhZGR1c2VyKQorCXsKKwkJYWRkX3VzZXIoJGFkZHVzZXIpOworCX0KKwkKKwlpZiAoJGFkZGdy b3VwKQorCXsKKwkJbXkgKCRuYW1lLCAkcGFzc3dkLCAkZ2lkLCAkbWVtYmVycykgPSBnZXRncm5h bSggJGFkZGdyb3VwKTsKKwkJbXkgQGdycF9tZW1iZXJzPXNwbGl0KCcgJywkbWVtYmVycyk7CisJ CWZvcmVhY2ggKEBncnBfbWVtYmVycykKKwkJeworCQkJY2hvbXAoJF8pOworCQkJYWRkX3VzZXIo JF8pOworCQl9CisJfQorCQorCWlmICgkcm11c2VyKQorCXsKKwkJcm1fdXNlcigkcm11c2VyKTsK Kwl9CisJCisJaWYgKCRybWdyb3VwKQorCXsKKwkJbXkgKCRuYW1lLCAkcGFzc3dkLCAkZ2lkLCAk bWVtYmVycykgPSBnZXRncm5hbSggJHJtZ3JvdXApOworCQlteSBAZ3JwX21lbWJlcnM9c3BsaXQo JyAnLCRtZW1iZXJzKTsKKwkJZm9yZWFjaCAoQGdycF9tZW1iZXJzKQorCQl7CisJCQljaG9tcCgk Xyk7CisJCQlybV91c2VyKCRfKTsKKwkJfQorCX0KIAl1bmRlZiAkZGJoOwotfQotCi1zdWIgY3Jl YXRlX2RhdGFiYXNlCi17Ci0JbXkgJGRiaD1EQkktPmNvbm5lY3QoImRiaTpQZzpkYm5hbWU9cG9z dGdyZXM7aG9zdD0kaG9zdDtwb3J0PSRwb3J0O3NzbG1vZGU9JHNzbG1vZGUiLCAiJGRiYWRtaW4i LCAiJGRiYWRtaW5wYXNzIix7QXV0b0NvbW1pdCA9PiAxfSkgb3IgZGllICRfOwotCSNkcm9wIGRi IGlmIGV4aXN0cwotCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiZHJvcCBkYXRhYmFzZSBpZiBleGlz dHMgeDJnb19zZXNzaW9ucyIpOwotCSRzdGgtPmV4ZWN1dGUoKTsKLQkjZHJvcCB4MmdvYWRtaW4K LQkkc3RoPSRkYmgtPnByZXBhcmUoImRyb3AgdXNlciBpZiBleGlzdHMgJHgyZ29hZG1pbiIpOwot CSRzdGgtPmV4ZWN1dGUoKTsKLQkjY3JlYXRlIGRiCi0JJHN0aD0kZGJoLT5wcmVwYXJlKCJjcmVh dGUgZGF0YWJhc2UgJGRiIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKLQkjY3JlYXRlIHgy Z29hZG1pbgotCSRzdGg9JGRiaC0+cHJlcGFyZSgiY3JlYXRlIFVTRVIgJHgyZ29hZG1pbiBXSVRI IEVOQ1JZUFRFRCBQQVNTV09SRCAnJHgyZ29hZG1pbnBhc3MnIik7Ci0JJHN0aC0+ZXhlY3V0ZSgp IG9yIGRpZTsKLQkjc2F2ZSB4MmdvYWRtaW4gcGFzc3dvcmQKLQlvcGVuIChGTCwiPiAvZXRjL3gy Z28veDJnb3NxbC9wYXNzd29yZHMveDJnb2FkbWluICIpIG9yIGRpZSAiQ2FuJ3Qgd3JpdGUgcGFz c3dvcmQgZmlsZSAvZXRjL3gyZ28veDJnb3NxbC9wYXNzd29yZHMveDJnb2FkbWluIjsKLQlwcmlu dCBGTCAkeDJnb2FkbWlucGFzczsKLQljbG9zZShGTCk7Ci0JJHN0aC0+ZmluaXNoKCk7Ci0JdW5k ZWYgJGRiaDsKKwkKKwlzdWIgbGlzdF91c2VycygpCisJeworCQlteSAkZGJoPURCSS0+Y29ubmVj dCgiZGJpOlBnOmRibmFtZT1wb3N0Z3Jlcztob3N0PSRob3N0O3BvcnQ9JHBvcnQ7c3NsbW9kZT0k c3NsbW9kZSIsICIkZGJhZG1pbiIsICIkZGJhZG1pbnBhc3MiLHtBdXRvQ29tbWl0ID0+IDF9KSBv ciBkaWUgJF87CisJCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgic2VsZWN0IHJvbG5hbWUgZnJvbSBw Z19yb2xlcyB3aGVyZSByb2xuYW1lIGxpa2UgJ3gyZ291c2VyXyUnIik7CisJCSRzdGgtPmV4ZWN1 dGUoKW9yIGRpZTsKKwkJcHJpbnRmICgiJS0yMHMgREIgdXNlclxuIiwiVU5JWCB1c2VyIik7CisJ CXByaW50ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7CisJCW15 IEBkYXRhOworCQl3aGlsZSAoQGRhdGEgPSAkc3RoLT5mZXRjaHJvd19hcnJheSkKKwkJeworCQkJ QGRhdGFbMF09fnMveDJnb3VzZXJfLy87CisJCQlwcmludGYgKCIlLTIwcyB4MmdvdXNlcl9AZGF0 YVswXVxuIixAZGF0YVswXSk7CisJCX0KKwkJJHN0aC0+ZmluaXNoKCk7CisJCXVuZGVmICRkYmg7 CisJfQorCQorCXN1YiBybV91c2VyKCkKKwl7CisJCW15ICR1c2VyPXNoaWZ0OworCQorCQlwcmlu dCAoInJtIERCIHVzZXIgXCJ4MmdvdXNlcl8kdXNlclwiXG4iKTsKKwkKKwkJbXkgJHN0aD0kZGJo LT5wcmVwYXJlKCJSRVZPS0UgQUxMIFBSSVZJTEVHRVMgT04gc2Vzc2lvbnMsIHVzZWRfcG9ydHMs IG1vdW50cyBGUk9NIFwieDJnb3VzZXJfJHVzZXJcIiIpOworCQkkc3RoLT5leGVjdXRlKCk7CisJ CisJCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiUkVWT0tFIEFMTCBQUklWSUxFR0VTIE9OIHNlc3Np b25zX3ZpZXcsIG1vdW50c192aWV3LCBzZXJ2ZXJzX3ZpZXcsIHBvcnRzX3ZpZXcgRlJPTSBcIngy Z291c2VyXyR1c2VyXCIiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpOworCQorCQlteSAkc3RoPSRkYmgt PnByZXBhcmUoIkRST1AgT1dORUQgQlkgXCJ4MmdvdXNlcl8kdXNlclwiIik7CisJCSRzdGgtPmV4 ZWN1dGUoKTsKKwkKKwkJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJkcm9wIFVTRVIgaWYgZXhpc3Rz IFwieDJnb3VzZXJfJHVzZXJcIiIpOworCQkkc3RoLT5leGVjdXRlKCk7CisJCSRzdGgtPmZpbmlz aCgpOworCQorCQlteSAoJG5hbWUsICRwYXNzLCAkdWlkLCAkcGdpZCwgJHF1b3RhLCAkY29tbWVu dCwgJGdjb3MsICRkaXIsICRzaGVsbCwgJGV4cGlyZSkgPSBnZXRwd25hbSgkdXNlcik7CisJCWlm ICghICR1aWQpCisJCXsKKwkJCXJldHVybjsKKwkJfQorCQlpZiAoIC1lICIkZGlyLy54MmdvL3Nx bHBhc3MiICkKKwkJeworCQkJdW5saW5rKCIkZGlyLy54MmdvL3NxbHBhc3MiKTsKKwkJfQorCX0K KwkKKwlzdWIgYWRkX3VzZXIoKQorCXsKKwkJbXkgJHVzZXI9c2hpZnQ7CisJCW15ICgkbmFtZSwg JHBhc3MsICR1aWQsICRwZ2lkLCAkcXVvdGEsICRjb21tZW50LCAkZ2NvcywgJGRpciwgJHNoZWxs LCAkZXhwaXJlKSA9IGdldHB3bmFtKCR1c2VyKTsKKwkJaWYgKCEgJG5hbWUpCisJCXsKKwkJCXBy aW50ICJDYW5ub3QgZmluZCB1c2VyICgkdXNlcilcbiI7CisJCQlyZXR1cm47CisJCX0gZWxzaWYg KCRuYW1lIGVxICJyb290IikgeworCQkJcHJpbnQgIlRoZSBzdXBlci11c2VyIFwicm9vdFwiIGlz IG5vdCBhbGxvd2VkIHRvIHVzZSBYMkdvXG4iOworCQkJcmV0dXJuOworCQl9CisJCSRwYXNzPWBw d2dlbiA4IDFgOworCQljaG9tcCgkcGFzcyk7CisJCisJCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgi UkVWT0tFIEFMTCBQUklWSUxFR0VTIE9OIHNlc3Npb25zLCB1c2VkX3BvcnRzLCBtb3VudHMgRlJP TSBcIngyZ291c2VyXyR1c2VyXCIiKTsKKwkJJHN0aC0+e1dhcm59PTA7CisJCSRzdGgtPntQcmlu dEVycm9yfT0wOworCQkkc3RoLT5leGVjdXRlKCk7CisJCisJCW15ICRzdGg9JGRiaC0+cHJlcGFy ZSgiUkVWT0tFIEFMTCBQUklWSUxFR0VTIE9OIHNlc3Npb25zX3ZpZXcsIG1vdW50c192aWV3LCBz ZXJ2ZXJzX3ZpZXcsIHBvcnRzX3ZpZXcgRlJPTSBcIngyZ291c2VyXyR1c2VyXCIiKTsKKwkJJHN0 aC0+e1dhcm59PTA7CisJCSRzdGgtPntQcmludEVycm9yfT0wOworCQkkc3RoLT5leGVjdXRlKCk7 CisJCisJCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiRFJPUCBPV05FRCBCWSBcIngyZ291c2VyXyR1 c2VyXCIiKTsKKwkJJHN0aC0+e1dhcm59PTA7CisJCSRzdGgtPntQcmludEVycm9yfT0wOworCQkk c3RoLT5leGVjdXRlKCk7CisJCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiZHJvcCBVU0VSIGlmIGV4 aXN0cyBcIngyZ291c2VyXyR1c2VyXCIiKTsKKwkJJHN0aC0+e1dhcm59PTA7CisJCSRzdGgtPntQ cmludEVycm9yfT0wOworCQkkc3RoLT5leGVjdXRlKCk7CisJCisJCXByaW50ICgiY3JlYXRlIERC IHVzZXIgXCJ4MmdvdXNlcl8kdXNlclwiXG4iKTsKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCJjcmVh dGUgVVNFUiBcIngyZ291c2VyXyR1c2VyXCIgV0lUSCBFTkNSWVBURUQgUEFTU1dPUkQgJyRwYXNz JyIpOworCQkkc3RoLT5leGVjdXRlKCk7CisJCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiR1JBTlQg SU5TRVJULCBVUERBVEUsIERFTEVURSBPTiBzZXNzaW9ucywgdXNlZF9wb3J0cywgbW91bnRzIFRP IFwieDJnb3VzZXJfJHVzZXJcIiIpOworCQkkc3RoLT5leGVjdXRlKCk7CisJCisJCSRzdGg9JGRi aC0+cHJlcGFyZSgiR1JBTlQgU0VMRUNUIE9OIHVzZWRfcG9ydHMgVE8gXCJ4MmdvdXNlcl8kdXNl clwiIik7CisJCSRzdGgtPmV4ZWN1dGUoKTsKKwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCJHUkFO VCBTRUxFQ1QsIFVQREFURSwgREVMRVRFIE9OIHNlc3Npb25zX3ZpZXcsIG1vdW50c192aWV3LCBz ZXJ2ZXJzX3ZpZXcsIHBvcnRzX3ZpZXcgVE8gXCJ4MmdvdXNlcl8kdXNlclwiIik7CisJCSRzdGgt PmV4ZWN1dGUoKTsKKwkJJHN0aC0+ZmluaXNoKCk7CisJCisJCWlmICghIC1kICIkZGlyLy54Mmdv IiApCisJCXsKKwkJCQlpZiAoIGRlZmluZWQgKCZGaWxlOjpQYXRoOjptYWtlX3BhdGgpICkKKwkJ CQl7CisJCQkJCUZpbGU6OlBhdGg6Om1ha2VfcGF0aCgiJGRpci8ueDJnbyIpOworCQkJCX0KKwkJ CQllbHNpZiAoIGRlZmluZWQgKCZGaWxlOjpQYXRoOjpta3BhdGgpICkKKwkJCQl7CisJCQkJCUZp bGU6OlBhdGg6Om1rcGF0aCgiJGRpci8ueDJnbyIpOworCQkJCX0KKwkJCQllbHNlCisJCQkJewor CQkJCQlkaWUgIlVuYWJsZSB0byBjcmVhdGUgZm9sZGVycyB3aXRoIEZpbGU6OlBhdGgiOworCQkJ CX0KKwkJfQorCQorCQkjc2F2ZSB1c2VyIHBhc3N3b3JkCisJCW9wZW4gKEZMLCI+ICRkaXIvLngy Z28vc3FscGFzcyIpIG9yIGRpZSAiQ2FuJ3Qgb3BlbiBwYXNzd29yZCBmaWxlICRkaXIvLngyZ28v c3FscGFzcyI7CisJCXByaW50IEZMICRwYXNzOworCQljbG9zZShGTCk7CisJCWNobW9kKDA3MDAs IiRkaXIvLngyZ28iKTsKKwkJY2hvd24oJHVpZCwkcGdpZCwiJGRpci8ueDJnbyIpOworCQljaG1v ZCgwNjAwLCIkZGlyLy54MmdvL3NxbHBhc3MiKTsKKwkJY2hvd24oJHVpZCwkcGdpZCwiJGRpci8u eDJnby9zcWxwYXNzIik7CisJfQorCQorCXN1YiBjcmVhdGVfdGFibGVzKCkKKwl7CisJCSRkYmg9 REJJLT5jb25uZWN0KCJkYmk6UGc6ZGJuYW1lPSRkYjtob3N0PSRob3N0O3BvcnQ9JHBvcnQ7c3Ns bW9kZT0kc3NsbW9kZSIsICIkZGJhZG1pbiIsICIkZGJhZG1pbnBhc3MiLHtBdXRvQ29tbWl0ID0+ IDF9KSBvciBkaWUgJF87CisJCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiCisJCSAgICAgICAgICAg ICAgICAgICAgICBjcmVhdGUgdGFibGUgc2Vzc2lvbnMoCisJCSAgICAgICAgICAgICAgICAgICAg ICBzZXNzaW9uX2lkIHRleHQgcHJpbWFyeSBrZXksCisJCSAgICAgICAgICAgICAgICAgICAgICBk aXNwbGF5IGludGVnZXIgbm90IG51bGwsCisJCSAgICAgICAgICAgICAgICAgICAgICB1bmFtZSB0 ZXh0IG5vdCBudWxsLAorCQkgICAgICAgICAgICAgICAgICAgICAgc2VydmVyIHRleHQgbm90IG51 bGwsCisJCSAgICAgICAgICAgICAgICAgICAgICBjbGllbnQgaW5ldCwKKwkJICAgICAgICAgICAg ICAgICAgICAgIHN0YXR1cyBjaGFyKDEpIG5vdCBudWxsIGRlZmF1bHQgJ1InLAorCQkgICAgICAg ICAgICAgICAgICAgICAgaW5pdF90aW1lIHRpbWVzdGFtcCBub3QgbnVsbCBkZWZhdWx0IG5vdygp LAorCQkgICAgICAgICAgICAgICAgICAgICAgbGFzdF90aW1lIHRpbWVzdGFtcCBub3QgbnVsbCBk ZWZhdWx0IG5vdygpLAorCQkgICAgICAgICAgICAgICAgICAgICAgY29va2llIGNoYXIoMzMpLAor CQkgICAgICAgICAgICAgICAgICAgICAgYWdlbnRfcGlkIGludCwKKwkJICAgICAgICAgICAgICAg ICAgICAgIGdyX3BvcnQgaW50LAorCQkgICAgICAgICAgICAgICAgICAgICAgc291bmRfcG9ydCBp bnQsCisJCSAgICAgICAgICAgICAgICAgICAgICBmc19wb3J0IGludCwKKwkJICAgICAgICAgICAg ICAgICAgICAgIHRla2ljdHJsX3BvcnQgaW50LAorCQkgICAgICAgICAgICAgICAgICAgICAgdGVr aWRhdGFfcG9ydCBpbnQsCisJCSAgICAgICAgICAgICAgICAgICAgICBjcmVhdG9yX2lkIHRleHQg Tk9UIE5VTEwgZGVmYXVsdCBjdXJyZW50X3VzZXIsCisJCSAgICAgICAgICAgICAgICAgICAgICB1 bmlxdWUoZGlzcGxheSkpCisJCSAgICAgICAgICAgICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhl Y3V0ZSgpIG9yIGRpZTsKKwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAg ICAgICAgIGNyZWF0ZSBWSUVXIHNlc3Npb25zX3ZpZXcgYXMKKwkJICAgICAgICAgICAgICAgICAg IFNFTEVDVAorCQkgICAgICAgICAgICAgICAgICAgYWdlbnRfcGlkLCBzZXNzaW9uX2lkLCBkaXNw bGF5LCBzZXJ2ZXIsIHN0YXR1cywgaW5pdF90aW1lLCBjb29raWUsIGNsaWVudCwgZ3JfcG9ydCwK KwkJICAgICAgICAgICAgICAgICAgIHNvdW5kX3BvcnQsIGxhc3RfdGltZSwgdW5hbWUsIGZzX3Bv cnQsIHRla2ljdHJsX3BvcnQsIHRla2lkYXRhX3BvcnQgZnJvbSBzZXNzaW9ucworCQkgICAgICAg ICAgICAgICAgICAgd2hlcmUgY3JlYXRvcl9pZCA9IGN1cnJlbnRfdXNlcgorCQkgICAgICAgICAg ICAgICAgICAgIik7CisJCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7CisJCisJCSRzdGg9JGRiaC0+ cHJlcGFyZSgiCisJCSAgICAgICAgICAgICAgICAgICBjcmVhdGUgVklFVyBzZXJ2ZXJzX3ZpZXcg YXMKKwkJICAgICAgICAgICAgICAgICAgIFNFTEVDVAorCQkgICAgICAgICAgICAgICAgICAgc2Vy dmVyLCBkaXNwbGF5LCBzdGF0dXMgZnJvbSBzZXNzaW9ucworCQkgICAgICAgICAgICAgICAgICAg Iik7CisJCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7CisJCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgi CisJCSAgICAgICAgICAgICAgICAgICBjcmVhdGUgb3IgcmVwbGFjZSBSVUxFIHVwZGF0ZV9zZXNz X3ByaXYgQVMgT04gVVBEQVRFCisJCSAgICAgICAgICAgICAgICAgICBUTyBzZXNzaW9ucyB3aGVy ZSAoT0xELmNyZWF0b3JfaWQgPD4gY3VycmVudF91c2VyIG9yIE9MRC5jcmVhdG9yX2lkIDw+IE5F Vy5jcmVhdG9yX2lkKSBhbmQgY3VycmVudF91c2VyIDw+ICckeDJnb2FkbWluJworCQkgICAgICAg ICAgICAgICAgICAgRE8gSU5TVEVBRCBOT1RISU5HCisJCSAgICAgICAgICAgICAgICAgICAiKTsK KwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJ ICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBvciByZXBsYWNlIFJVTEUgaW5zZXJ0X3Nlc3NfcHJp diBBUyBPTiBJTlNFUlQKKwkJICAgICAgICAgICAgICAgICAgIFRPIHNlc3Npb25zIHdoZXJlIE5F Vy5jcmVhdG9yX2lkIDw+IGN1cnJlbnRfdXNlciBhbmQgY3VycmVudF91c2VyIDw+ICckeDJnb2Fk bWluJworCQkgICAgICAgICAgICAgICAgICAgRE8gSU5TVEVBRCBOT1RISU5HCisJCSAgICAgICAg ICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkKKwkJJHN0aD0kZGJo LT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBvciByZXBsYWNlIFJVTEUg ZGVsZXRlX3Nlc3NfcHJpdiBBUyBPTiBERUxFVEUKKwkJICAgICAgICAgICAgICAgICAgIFRPIHNl c3Npb25zIHdoZXJlIE9MRC5jcmVhdG9yX2lkIDw+IGN1cnJlbnRfdXNlciBhbmQgY3VycmVudF91 c2VyIDw+ICckeDJnb2FkbWluJworCQkgICAgICAgICAgICAgICAgICAgRE8gSU5TVEVBRCBOT1RI SU5HCisJCSAgICAgICAgICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsK KwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBv ciByZXBsYWNlIFJVTEUgdXBkYXRlX3Nlc3NfdmlldyBBUyBPTiBVUERBVEUKKwkJICAgICAgICAg ICAgICAgICAgIFRPIHNlc3Npb25zX3ZpZXcgRE8gSU5TVEVBRAorCQkgICAgICAgICAgICAgICAg ICAgdXBkYXRlIHNlc3Npb25zIHNldAorCQkgICAgICAgICAgICAgICAgICAgc3RhdHVzPU5FVy5z dGF0dXMsCisJCSAgICAgICAgICAgICAgICAgICBsYXN0X3RpbWU9TkVXLmxhc3RfdGltZSwKKwkJ ICAgICAgICAgICAgICAgICAgIGNvb2tpZT1ORVcuY29va2llLAorCQkgICAgICAgICAgICAgICAg ICAgYWdlbnRfcGlkPU5FVy5hZ2VudF9waWQsCisJCSAgICAgICAgICAgICAgICAgICBjbGllbnQ9 TkVXLmNsaWVudCwKKwkJICAgICAgICAgICAgICAgICAgIGdyX3BvcnQ9TkVXLmdyX3BvcnQsCisJ CSAgICAgICAgICAgICAgICAgICBzb3VuZF9wb3J0PU5FVy5zb3VuZF9wb3J0LAorCQkgICAgICAg ICAgICAgICAgICAgZnNfcG9ydD1ORVcuZnNfcG9ydCwKKwkJICAgICAgICAgICAgICAgICAgIHRl a2ljdHJsX3BvcnQ9TkVXLnRla2ljdHJsX3BvcnQsCisJCSAgICAgICAgICAgICAgICAgICB0ZWtp ZGF0YV9wb3J0PU5FVy50ZWtpZGF0YV9wb3J0CisJCSAgICAgICAgICAgICAgICAgICB3aGVyZSBz ZXNzaW9uX2lkPU9MRC5zZXNzaW9uX2lkIGFuZCBjcmVhdG9yX2lkPWN1cnJlbnRfdXNlcgorCQkg ICAgICAgICAgICAgICAgICAgIik7CisJCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7CisJCisJCSRz dGg9JGRiaC0+cHJlcGFyZSgiCisJCSAgICAgICAgICAgICAgICAgICBjcmVhdGUgdGFibGUgbWVz c2FnZXMobWVzc19pZCB2YXJjaGFyKDIwKSBwcmltYXJ5IGtleSwgbWVzc2FnZSB0ZXh0KQorCQkg ICAgICAgICAgICAgICAgICAgIik7CisJCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7CisJCisJCSRz dGg9JGRiaC0+cHJlcGFyZSgiCisJCSAgICAgICAgICAgICAgICAgICBjcmVhdGUgdGFibGUgdXNl cl9tZXNzYWdlcygKKwkJICAgICAgICAgICAgICAgICAgIG1lc3NfaWQgdGV4dCBub3QgbnVsbCwK KwkJICAgICAgICAgICAgICAgICAgIHVuYW1lIHRleHQgbm90IG51bGwpCisJCSAgICAgICAgICAg ICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkKKwkJJHN0aD0kZGJoLT5w cmVwYXJlKCIKKwkJICAgICAgICAgICAgICAgICAgIGNyZWF0ZSB0YWJsZSB1c2VkX3BvcnRzKAor CQkgICAgICAgICAgICAgICAgICAgc2VydmVyIHRleHQgbm90IG51bGwsCisJCSAgICAgICAgICAg ICAgICAgICBzZXNzaW9uX2lkIHRleHQgcmVmZXJlbmNlcyBzZXNzaW9ucyBvbiBkZWxldGUgY2Fz Y2FkZSwKKwkJICAgICAgICAgICAgICAgICAgIGNyZWF0b3JfaWQgdGV4dCBOT1QgTlVMTCBkZWZh dWx0IGN1cnJlbnRfdXNlciwKKwkJICAgICAgICAgICAgICAgICAgIHBvcnQgaW50ZWdlciBwcmlt YXJ5IGtleSkKKwkJICAgICAgICAgICAgICAgICAgICIpOworCQkkc3RoLT5leGVjdXRlKCkgb3Ig ZGllOworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAgICAgICAgICAgICAgICAgY3Jl YXRlIFZJRVcgcG9ydHNfdmlldyBhcworCQkgICAgICAgICAgICAgICAgICAgU0VMRUNUCisJCSAg ICAgICAgICAgICAgICAgICBzZXJ2ZXIsIHBvcnQgZnJvbSB1c2VkX3BvcnRzCisJCSAgICAgICAg ICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkKKwkJJHN0aD0kZGJo LT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBvciByZXBsYWNlIFJVTEUg aW5zZXJ0X3BvcnRfcHJpdiBBUyBPTiBJTlNFUlQKKwkJICAgICAgICAgICAgICAgICAgIFRPIHVz ZWRfcG9ydHMgd2hlcmUgTkVXLmNyZWF0b3JfaWQgPD4gY3VycmVudF91c2VyIGFuZCBjdXJyZW50 X3VzZXIgPD4gJyR4MmdvYWRtaW4nCisJCSAgICAgICAgICAgICAgICAgICBETyBJTlNURUFEIE5P VEhJTkcKKwkJICAgICAgICAgICAgICAgICAgICIpOworCQkkc3RoLT5leGVjdXRlKCkgb3IgZGll OworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAgICAgICAgICAgICAgICAgY3JlYXRl IG9yIHJlcGxhY2UgUlVMRSB1cGRhdGVfcG9ydF9wcml2IEFTIE9OIFVQREFURQorCQkgICAgICAg ICAgICAgICAgICAgVE8gdXNlZF9wb3J0cyB3aGVyZSAoTkVXLmNyZWF0b3JfaWQgPD4gY3VycmVu dF91c2VyIG9yIE9MRC5jcmVhdG9yX2lkIDw+IGN1cnJlbnRfdXNlcikgYW5kIGN1cnJlbnRfdXNl ciA8PiAnJHgyZ29hZG1pbicKKwkJICAgICAgICAgICAgICAgICAgIERPIElOU1RFQUQgTk9USElO RworCQkgICAgICAgICAgICAgICAgICAgIik7CisJCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7CisJ CisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiCisJCSAgICAgICAgICAgICAgICAgICBjcmVhdGUgb3Ig cmVwbGFjZSBSVUxFIGRlbGV0ZV9wb3J0X3ByaXYgQVMgT04gREVMRVRFCisJCSAgICAgICAgICAg ICAgICAgICBUTyB1c2VkX3BvcnRzIHdoZXJlIE9MRC5jcmVhdG9yX2lkIDw+IGN1cnJlbnRfdXNl ciBhbmQgY3VycmVudF91c2VyIDw+ICckeDJnb2FkbWluJworCQkgICAgICAgICAgICAgICAgICAg RE8gSU5TVEVBRCBOT1RISU5HCisJCSAgICAgICAgICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhl Y3V0ZSgpIG9yIGRpZTsKKwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAg ICAgICAgIGNyZWF0ZSB0YWJsZSBtb3VudHMoCisJCSAgICAgICAgICAgICAgICAgICBzZXNzaW9u X2lkIHRleHQgcmVmZXJlbmNlcyBzZXNzaW9ucyBvbiBkZWxldGUgcmVzdHJpY3QsCisJCSAgICAg ICAgICAgICAgICAgICBwYXRoIHRleHQgbm90IG51bGwsCisJCSAgICAgICAgICAgICAgICAgICBj bGllbnQgaW5ldCBub3QgbnVsbCwKKwkJICAgICAgICAgICAgICAgICAgIGNyZWF0b3JfaWQgdGV4 dCBOT1QgTlVMTCBkZWZhdWx0IGN1cnJlbnRfdXNlciwKKwkJICAgICAgICAgICAgICAgICAgIHBy aW1hcnkga2V5KHBhdGgsY2xpZW50KSkKKwkJICAgICAgICAgICAgICAgICAgICIpOworCQkkc3Ro LT5leGVjdXRlKCkgb3IgZGllOworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAgICAg ICAgICAgICAgICAgY3JlYXRlIFZJRVcgbW91bnRzX3ZpZXcgYXMKKwkJICAgICAgICAgICAgICAg ICAgIFNFTEVDVAorCQkgICAgICAgICAgICAgICAgICAgY2xpZW50LHBhdGgsIHNlc3Npb25faWQg ZnJvbSBtb3VudHMKKwkJICAgICAgICAgICAgICAgICAgIHdoZXJlIGNyZWF0b3JfaWQgPSBjdXJy ZW50X3VzZXIKKwkJICAgICAgICAgICAgICAgICAgICIpOworCQkkc3RoLT5leGVjdXRlKCkgb3Ig ZGllOworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAgICAgICAgICAgICAgICAgY3Jl YXRlIG9yIHJlcGxhY2UgUlVMRSBkZWxldGVfbW91bnRzX3ZpZXcgQVMgT04gREVMRVRFCisJCSAg ICAgICAgICAgICAgICAgICBUTyBtb3VudHNfdmlldyBETyBJTlNURUFECisJCSAgICAgICAgICAg ICAgICAgICBkZWxldGUgZnJvbSBtb3VudHMKKwkJICAgICAgICAgICAgICAgICAgIHdoZXJlIHNl c3Npb25faWQ9T0xELnNlc3Npb25faWQgYW5kIGNyZWF0b3JfaWQ9Y3VycmVudF91c2VyIGFuZCBw YXRoPU9MRC5wYXRoCisJCSAgICAgICAgICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgp IG9yIGRpZTsKKwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAgICAgICAg IGNyZWF0ZSBvciByZXBsYWNlIFJVTEUgaW5zZXJ0X21vdW50X3ByaXYgQVMgT04gSU5TRVJUCisJ CSAgICAgICAgICAgICAgICAgICBUTyBtb3VudHMgd2hlcmUgTkVXLmNyZWF0b3JfaWQgPD4gY3Vy cmVudF91c2VyIGFuZCBjdXJyZW50X3VzZXIgPD4gJyR4MmdvYWRtaW4nCisJCSAgICAgICAgICAg ICAgICAgICBETyBJTlNURUFEIE5PVEhJTkcKKwkJICAgICAgICAgICAgICAgICAgICIpOworCQkk c3RoLT5leGVjdXRlKCkgb3IgZGllOworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAg ICAgICAgICAgICAgICAgY3JlYXRlIG9yIHJlcGxhY2UgUlVMRSB1cGRhdGVfbW91bnRfcHJpdiBB UyBPTiBVUERBVEUKKwkJICAgICAgICAgICAgICAgICAgIFRPIG1vdW50cyB3aGVyZSAoTkVXLmNy ZWF0b3JfaWQgPD4gY3VycmVudF91c2VyIG9yIE9MRC5jcmVhdG9yX2lkIDw+IGN1cnJlbnRfdXNl cikgYW5kIGN1cnJlbnRfdXNlciA8PiAnJHgyZ29hZG1pbicKKwkJICAgICAgICAgICAgICAgICAg IERPIElOU1RFQUQgTk9USElORworCQkgICAgICAgICAgICAgICAgICAgIik7CisJCSRzdGgtPmV4 ZWN1dGUoKSBvciBkaWU7CisJCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiCisJCSAgICAgICAgICAg ICAgICAgICBjcmVhdGUgb3IgcmVwbGFjZSBSVUxFIGRlbGV0ZV9tb3VudF9wcml2IEFTIE9OIERF TEVURQorCQkgICAgICAgICAgICAgICAgICAgVE8gbW91bnRzIHdoZXJlIE9MRC5jcmVhdG9yX2lk IDw+IGN1cnJlbnRfdXNlciBhbmQgY3VycmVudF91c2VyIDw+ICckeDJnb2FkbWluJworCQkgICAg ICAgICAgICAgICAgICAgRE8gSU5TVEVBRCBOT1RISU5HCisJCSAgICAgICAgICAgICAgICAgICAi KTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCJH UkFOVCBBTEwgUFJJVklMRUdFUyBPTiBzZXNzaW9ucywgbWVzc2FnZXMsIHVzZXJfbWVzc2FnZXMs IHVzZWRfcG9ydHMsIG1vdW50cyBUTyAkeDJnb2FkbWluIik7CisJCSRzdGgtPmV4ZWN1dGUoKSBv ciBkaWU7CisJCSRzdGgtPmZpbmlzaCgpOworCQl1bmRlZiAkZGJoOworCX0KKwkKKwlzdWIgY3Jl YXRlX2RhdGFiYXNlCisJeworCQlteSAkZGJoPURCSS0+Y29ubmVjdCgiZGJpOlBnOmRibmFtZT1w b3N0Z3Jlcztob3N0PSRob3N0O3BvcnQ9JHBvcnQ7c3NsbW9kZT0kc3NsbW9kZSIsICIkZGJhZG1p biIsICIkZGJhZG1pbnBhc3MiLHtBdXRvQ29tbWl0ID0+IDF9KSBvciBkaWUgJF87CisJCSNkcm9w IGRiIGlmIGV4aXN0cworCQlteSAkc3RoPSRkYmgtPnByZXBhcmUoImRyb3AgZGF0YWJhc2UgaWYg ZXhpc3RzICRkYiIpOworCQkkc3RoLT5leGVjdXRlKCk7CisJCSNkcm9wIHgyZ29hZG1pbgorCQkk c3RoPSRkYmgtPnByZXBhcmUoImRyb3AgdXNlciBpZiBleGlzdHMgJHgyZ29hZG1pbiIpOworCQkk c3RoLT5leGVjdXRlKCk7CisJCSNjcmVhdGUgZGIKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCJjcmVh dGUgZGF0YWJhc2UgJGRiIik7CisJCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7CisJCSNjcmVhdGUg eDJnb2FkbWluCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiY3JlYXRlIFVTRVIgJHgyZ29hZG1pbiBX SVRIIEVOQ1JZUFRFRCBQQVNTV09SRCAnJHgyZ29hZG1pbnBhc3MnIik7CisJCSRzdGgtPmV4ZWN1 dGUoKSBvciBkaWU7CisJCSNzYXZlIHgyZ29hZG1pbiBwYXNzd29yZAorCQlvcGVuIChGTCwiPiAv ZXRjL3gyZ28veDJnb3NxbC9wYXNzd29yZHMveDJnb2FkbWluICIpIG9yIGRpZSAiQ2FuJ3Qgd3Jp dGUgcGFzc3dvcmQgZmlsZSAvZXRjL3gyZ28veDJnb3NxbC9wYXNzd29yZHMveDJnb2FkbWluIjsK KwkJcHJpbnQgRkwgJHgyZ29hZG1pbnBhc3M7CisJCWNsb3NlKEZMKTsKKwkJJHN0aC0+ZmluaXNo KCk7CisJCXVuZGVmICRkYmg7CisJfQogfQo= ------=_Part_33223557_1572844661.1484326519364-- From unknown Fri Mar 29 10:13:04 2024 X-Loop: owner@bugs.x2go.org Subject: Bug#1135: [X2Go-Dev] Bug#1135: MySQL Database backend support Reply-To: Stefan Baur , 1135@bugs.x2go.org Resent-From: Stefan Baur Resent-To: x2go-dev@lists.x2go.org Resent-CC: X2Go Developers X-Loop: owner@bugs.x2go.org Resent-Date: Fri, 13 Jan 2017 17:10:02 +0000 Resent-Message-ID: Resent-Sender: owner@bugs.x2go.org X-X2Go-PR-Message: followup 1135 X-X2Go-PR-Package: x2goserver X-X2Go-PR-Keywords: patch Received: via spool by 1135-submit@bugs.x2go.org id=B1135.148432735614212 (code B ref 1135); Fri, 13 Jan 2017 17:10:02 +0000 Received: (at 1135) by bugs.x2go.org; 13 Jan 2017 17:09:16 +0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on ymir.das-netzwerkteam.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00,URIBL_BLOCKED autolearn=ham version=3.3.2 Received: from localhost (localhost [127.0.0.1]) by ymir.das-netzwerkteam.de (Postfix) with ESMTP id 226FE3CDDD for <1135@bugs.x2go.org>; Fri, 13 Jan 2017 18:09:14 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at ymir.das-netzwerkteam.de Received: from ymir.das-netzwerkteam.de ([127.0.0.1]) by localhost (ymir.das-netzwerkteam.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wtVhvO3ln1C1 for <1135@bugs.x2go.org>; Fri, 13 Jan 2017 18:09:07 +0100 (CET) Received: from mout.kundenserver.de (mout.kundenserver.de [212.227.17.24]) by ymir.das-netzwerkteam.de (Postfix) with ESMTPS id AD47C5DAA7 for <1135@bugs.x2go.org>; Fri, 13 Jan 2017 18:09:06 +0100 (CET) Received: from [192.168.0.23] ([78.43.90.159]) by mrelayeu.kundenserver.de (mreue103 [212.227.15.145]) with ESMTPSA (Nemesis) id 0M83Dl-1cfETV20vJ-00vgis; Fri, 13 Jan 2017 18:04:04 +0100 To: Oleksandr Shneyder , 1135@bugs.x2go.org References: <1719550560.33223559.1484326519373.JavaMail.root@servicemagic.eu> From: Stefan Baur Message-ID: <2daf33a3-f457-a7ba-2f23-1d0879392195@baur-itcs.de> Date: Fri, 13 Jan 2017 18:03:50 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: <1719550560.33223559.1484326519373.JavaMail.root@servicemagic.eu> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="TikD4rA1UIfK99Fj6dr7VOpDWWdO2vjqj" X-Provags-ID: V03:K0:DVASkWnO0eUTdbNckXuVNUNevuY8Tdaau4caAKQ4NS1JbvgGOtg bdKYvK3afda6CRAFZUvhwZBPsWESCYimj2MAvI9eoIlWtHgJ+0oMSkURhACRjlZZTu95rMu ifeMWtd6OhwcdPbJPwIFrnmYNc3VoMcxOIgcFV6uhC9MWQR0ugw/CVI0AB1QH6JV/VbQjtw STpwQhj+C1CeANOkcBDXg== X-UI-Out-Filterresults: notjunk:1;V01:K0:5QJKJQIa8CM=:tR5j4IWG4NsPeLnNFGH7p5 MfjDenV0iG6/ygufaDL/7l8pWDqpQ/mHgdXSrpxbdtAxaO7HNdx1nxjD+mSNS8Tt4Ad1QjhVa NzEzYTwtVyQRLIC/6Ue7BMygNc6EwkDEw5TyhcfGCmgTadRD+FwkAlVok7WN+KY7swqb0vi7f /5FegU1UpalZJmqqqBkwRMuUwyxIF45Rhzol9CLelPYAm+2cYSE2mQGrPipqeKYwY9l5QAF0X uJP5pXroe7DNDiPcDSVmS2advJtNOqKv4O/OKa7BKG+kuUDHNT/ZbV8Us+RktHzJh5GpcezUO eN0vFFVpyfw+ocU21GhS1UOb3sGxGmnyekoql7JmQNGBGxYB0GgRW0+ybDabdoCDumsvQwOQB yyoe/QBBD5728h67MlD0lvOBiFmVF91n5OZ7BcPCeELuo1kg+my3ElHSu9MxElQl6tw/p+1yG Gq9BosHoY1i8fxelPkSdPKACR8xlJ2XdOp15FgNPDENmEXNPc84qLUET4rXLZn16OtKQ6k0BD N8vqPfuR2nLyVn0029Tx4TXf9oUqDy+O9+FvDno5pZBJ6+Wz6KS+I5i8TTYGOB0dU6hHVb6f1 F8+3ShqnRjoci8X5jbPen2pa/nRTtBJ86Gj6YEZ7qv1GTprAexIlra2GqnEzqZGiSQGGS0M4m WxFEGK+fXjbPzyJ7nFRhngqYGR7pSXaty8lxdd4T4Jo2fP5xgAotGdRSCrxqLFv+r0yE= This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --TikD4rA1UIfK99Fj6dr7VOpDWWdO2vjqj Content-Type: multipart/mixed; boundary="VS3m6X3UQ1PVgDv18cF1EP13CfKS9LOqr"; protected-headers="v1" From: Stefan Baur To: Oleksandr Shneyder , 1135@bugs.x2go.org Message-ID: <2daf33a3-f457-a7ba-2f23-1d0879392195@baur-itcs.de> Subject: Re: [X2Go-Dev] Bug#1135: MySQL Database backend support References: <1719550560.33223559.1484326519373.JavaMail.root@servicemagic.eu> In-Reply-To: <1719550560.33223559.1484326519373.JavaMail.root@servicemagic.eu> --VS3m6X3UQ1PVgDv18cF1EP13CfKS9LOqr Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable Alex, please check if this patch fulfills all the requirements you mentioned off-list; if not, please comment and advise Walid what he needs to add/change. Kind Regards, Stefan Baur Am 13.01.2017 um 17:55 schrieb Walid MOGHRABI: > package: x2goserver > priority: wishlist > tags: patch >=20 > This is a proposal patch for a MySQL session storage database backend f= or X2Go Server. >=20 > I did this simply because : >=20 > 1) I'm not used to PostgreSQL and much more skilled with MySQL > 2) I do believe MySQL is pretty common on Linux and is widely spread = so I guess this can be useful for many other people willing to build a st= rong TCE setup and not willing to dig into PostgreSQL > 3) I find it a lot easier to build a multi-master replication scenari= o with MySQL than with PostgreSQL (but as I said, I'm much more skilled w= ih MySQL) >=20 > This backend is tightly inspired by the PostgreSQL backend and work exa= ctly the same so this is a drop in replacement for it, til now, all my te= sts seems to work correctly, feel free to test by yourself and report err= ors. >=20 >=20 > Regards, > Walid Moghrabi >=20 > TRAVAUX.COM > BAT I - PARC CEZANNE 2 290 AVENUE GALILEE - CS 80403 > 13591 AIX EN PROVENCE CEDEX 3 >=20 > --- > DISCLAIMER: This e-mail is private and confidential and may contain pro= prietary or legally privileged information. It is for the intended recipi= ent only. If you have received this email in error, please notify the aut= hor by replying to it and then destroy it. If you are not the intended re= cipient you must not use, disclose, distribute, copy, print or rely on th= is e-mail or any attachment. Thank you >=20 >=20 >=20 > _______________________________________________ > x2go-dev mailing list > x2go-dev@lists.x2go.org > http://lists.x2go.org/listinfo/x2go-dev >=20 --=20 BAUR-ITCS UG (haftungsbeschr=E4nkt) Gesch=E4ftsf=FChrer: Stefan Baur Eichen=E4ckerweg 10, 89081 Ulm | Registergericht Ulm, HRB 724364 Fon/Fax 0731 40 34 66-36/-35 | USt-IdNr.: DE268653243 --VS3m6X3UQ1PVgDv18cF1EP13CfKS9LOqr-- --TikD4rA1UIfK99Fj6dr7VOpDWWdO2vjqj Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAEBCAAGBQJYeQh7AAoJEG7d9BjNvlEZZ24IALAhwqok2Wraa+MFyPVzLFER oneTTf+JfEkbJfIU2i0PK27ZxQm+VRZGXIflwJuURVCCUgMMrPxUojjYUG5REoBN la1zyAgEtQOosg15aUjudr2hze6tkQldDU+kjycjIL9tArhM+Si20M6HS55nIVaD zffY0o6v6HemHmaHfnWrbviS34/CRlsDRHUYP4QZV6LxFiPtzi+ZVaD6NHJUtx1P sLX5ipV7WHWAuD/OycQUeO+MVS8A6nYN6rT7E2JL2DFZ2/kqsqxfpAhwf4D2De8h rvHDIqBHDxcpgdH1pXIBHWGuCyN+0TS65mbNkLiY3KNMnMFmVJORsDo6EnMVI+0= =nMHv -----END PGP SIGNATURE----- --TikD4rA1UIfK99Fj6dr7VOpDWWdO2vjqj-- From unknown Fri Mar 29 10:13:04 2024 X-Loop: owner@bugs.x2go.org Subject: Bug#1135: [X2Go-Dev] Bug#1135: Bug#1135: MySQL Database backend support Reply-To: Walid MOGHRABI , 1135@bugs.x2go.org Resent-From: Walid MOGHRABI Resent-To: x2go-dev@lists.x2go.org Resent-CC: X2Go Developers X-Loop: owner@bugs.x2go.org Resent-Date: Fri, 13 Jan 2017 17:25:02 +0000 Resent-Message-ID: Resent-Sender: owner@bugs.x2go.org X-X2Go-PR-Message: followup 1135 X-X2Go-PR-Package: x2goserver X-X2Go-PR-Keywords: patch Received: via spool by 1135-submit@bugs.x2go.org id=B1135.148432806916292 (code B ref 1135); Fri, 13 Jan 2017 17:25:02 +0000 Received: (at 1135) by bugs.x2go.org; 13 Jan 2017 17:21:09 +0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on ymir.das-netzwerkteam.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00,MIME_QP_LONG_LINE, URIBL_BLOCKED autolearn=ham version=3.3.2 Received: from localhost (localhost [127.0.0.1]) by ymir.das-netzwerkteam.de (Postfix) with ESMTP id 57D3D5DAAB for <1135@bugs.x2go.org>; Fri, 13 Jan 2017 18:21:08 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at ymir.das-netzwerkteam.de Received: from ymir.das-netzwerkteam.de ([127.0.0.1]) by localhost (ymir.das-netzwerkteam.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id dv8BNLuH5I11 for <1135@bugs.x2go.org>; Fri, 13 Jan 2017 18:21:01 +0100 (CET) X-Greylist: delayed 422 seconds by postgrey-1.34 at ymir.das-netzwerkteam.de; Fri, 13 Jan 2017 18:21:01 CET Received: from zm-01.servicemagic.eu (zm-01.servicemagic.eu [176.31.236.17]) by ymir.das-netzwerkteam.de (Postfix) with ESMTPS id 9B3415DAA7 for <1135@bugs.x2go.org>; Fri, 13 Jan 2017 18:21:01 +0100 (CET) Received: from localhost (localhost.localdomain [127.0.0.1]) by zm-01.servicemagic.eu (Postfix) with ESMTP id 1A5A7812322DC; Fri, 13 Jan 2017 18:13:59 +0100 (CET) X-Amavis-Modified: Mail body modified (using disclaimer) - zm-01.servicemagic.eu X-Virus-Scanned: amavisd-new at servicemagic.eu Received: from zm-01.servicemagic.eu ([127.0.0.1]) by localhost (zm-01.servicemagic.eu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 63DA9nPtH+dh; Fri, 13 Jan 2017 18:13:53 +0100 (CET) Received: from zm-01.servicemagic.eu (localhost.localdomain [127.0.0.1]) by zm-01.servicemagic.eu (Postfix) with ESMTP id 5821C81812F0B; Fri, 13 Jan 2017 18:13:53 +0100 (CET) Date: Fri, 13 Jan 2017 18:13:53 +0100 (CET) From: Walid MOGHRABI To: Stefan Baur , 1135@bugs.x2go.org Cc: Oleksandr Shneyder Message-ID: <1445066135.33225208.1484327633339.JavaMail.root@servicemagic.eu> In-Reply-To: <2daf33a3-f457-a7ba-2f23-1d0879392195@baur-itcs.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.33.100.60] X-Mailer: Zimbra 7.2.0_GA_2669 (ZimbraWebClient - GC55 (Linux)/7.2.0_GA_2669) Ho, I just saw that I forgot to mention that MySQL support for Perl::DBI mu= st be installed. It is not with the x2goserver package and I didn't find how to add it as a = dependency in the sources (I probably didn't search too far to be honest ..= .) Regards, Walid Moghrabi TRAVAUX.COM BAT I - PARC CEZANNE 2 290 AVENUE GALILEE - CS 80403 13591 AIX EN PROVENCE CEDEX 3 ----- Mail original -----=20 De: "Stefan Baur" =20 =C3=80: "Oleksandr Shneyder" , 1135@bugs.x2go.org= =20 Envoy=C3=A9: Vendredi 13 Janvier 2017 18:03:50=20 Objet: [X2Go-Dev] Bug#1135: Bug#1135: MySQL Database backend support=20 Alex,=20 please check if this patch fulfills all the requirements you mentioned=20 off-list; if not, please comment and advise Walid what he needs to=20 add/change.=20 Kind Regards,=20 Stefan Baur=20 Am 13.01.2017 um 17:55 schrieb Walid MOGHRABI:=20 > package: x2goserver=20 > priority: wishlist=20 > tags: patch=20 >=20 > This is a proposal patch for a MySQL session storage database backend for= X2Go Server.=20 >=20 > I did this simply because :=20 >=20 > 1) I'm not used to PostgreSQL and much more skilled with MySQL=20 > 2) I do believe MySQL is pretty common on Linux and is widely spread so I= guess this can be useful for many other people willing to build a strong T= CE setup and not willing to dig into PostgreSQL=20 > 3) I find it a lot easier to build a multi-master replication scenario wi= th MySQL than with PostgreSQL (but as I said, I'm much more skilled wih MyS= QL)=20 >=20 > This backend is tightly inspired by the PostgreSQL backend and work exact= ly the same so this is a drop in replacement for it, til now, all my tests = seems to work correctly, feel free to test by yourself and report errors.= =20 >=20 >=20 > Regards,=20 > Walid Moghrabi=20 >=20 > TRAVAUX.COM=20 > BAT I - PARC CEZANNE 2 290 AVENUE GALILEE - CS 80403=20 > 13591 AIX EN PROVENCE CEDEX 3=20 >=20 > ---=20 > DISCLAIMER: This e-mail is private and confidential and may contain propr= ietary or legally privileged information. It is for the intended recipient = only. If you have received this email in error, please notify the author by= replying to it and then destroy it. If you are not the intended recipient = you must not use, disclose, distribute, copy, print or rely on this e-mail = or any attachment. Thank you=20 >=20 >=20 >=20 > _______________________________________________=20 > x2go-dev mailing list=20 > x2go-dev@lists.x2go.org=20 > http://lists.x2go.org/listinfo/x2go-dev=20 >=20 --=20 BAUR-ITCS UG (haftungsbeschr=C3=A4nkt)=20 Gesch=C3=A4ftsf=C3=BChrer: Stefan Baur=20 Eichen=C3=A4ckerweg 10, 89081 Ulm | Registergericht Ulm, HRB 724364=20 Fon/Fax 0731 40 34 66-36/-35 | USt-IdNr.: DE268653243=20 _______________________________________________=20 x2go-dev mailing list=20 x2go-dev@lists.x2go.org=20 http://lists.x2go.org/listinfo/x2go-dev --- DISCLAIMER: This e-mail is private and confidential and may contain proprietary or legally privileged information. It is for the intended recipient only. If you have received this email in error, please notify the author by replying to it and then destroy it. If you are not the intended recipient you must not use, disclose, distribute, copy, print or rely on this e-mail or any attachment. Thank you From unknown Fri Mar 29 10:13:04 2024 X-Loop: owner@bugs.x2go.org Subject: Bug#1135: MySQL session backend (fixed version) Reply-To: Walid MOGHRABI , 1135@bugs.x2go.org Resent-From: Walid MOGHRABI Resent-To: x2go-dev@lists.x2go.org Resent-CC: X2Go Developers X-Loop: owner@bugs.x2go.org Resent-Date: Fri, 20 Oct 2017 17:20:01 +0000 Resent-Message-ID: Resent-Sender: owner@bugs.x2go.org X-X2Go-PR-Message: followup 1135 X-X2Go-PR-Package: x2goserver X-X2Go-PR-Keywords: patch Received: via spool by 1135-submit@bugs.x2go.org id=B1135.15085197972868 (code B ref 1135); Fri, 20 Oct 2017 17:20:01 +0000 Received: (at 1135) by bugs.x2go.org; 20 Oct 2017 17:16:37 +0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on ymir.das-netzwerkteam.de X-Spam-Level: X-Spam-Status: No, score=-2.0 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.1 Received: from localhost (localhost [127.0.0.1]) by ymir.das-netzwerkteam.de (Postfix) with ESMTP id 553105DACB for <1135@bugs.x2go.org>; Fri, 20 Oct 2017 19:16:26 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at ymir.das-netzwerkteam.de Received: from ymir.das-netzwerkteam.de ([127.0.0.1]) by localhost (ymir.das-netzwerkteam.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id vAa7ElDC30yN for <1135@bugs.x2go.org>; Fri, 20 Oct 2017 19:16:20 +0200 (CEST) Received: from zm-01.servicemagic.eu (zm-01.servicemagic.eu [176.31.236.17]) by ymir.das-netzwerkteam.de (Postfix) with ESMTPS id 73F945DAC9 for <1135@bugs.x2go.org>; Fri, 20 Oct 2017 19:16:19 +0200 (CEST) Received: from localhost (localhost.localdomain [127.0.0.1]) by zm-01.servicemagic.eu (Postfix) with ESMTP id 1E309814E14B0 for <1135@bugs.x2go.org>; Fri, 20 Oct 2017 19:16:19 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 zm-01.servicemagic.eu 1E309814E14B0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=servicemagic.eu; s=frmailing; t=1508519779; bh=TQ2nFd+k7fctG7kOID48SAvxb1b/KILaf75MbomFNRo=; h=Date:From:To:In-Reply-To:Subject:From; b=QOTLfG7/VJKZaMSeDzkN+DqDwI1kBJZQwcugHruTIJxRPXx4OeujKO82OeVcb+Wm2 AMy7e/+MZZ3UiicAC/faMNhGgN9hAAyiWsQ1apLDbosidrbSuMQUtHhSM3qO70DVtM Jx/riijHv/E0ZIBnN/hFKNk4xXF70uvq/GeQlCNc= X-Amavis-Modified: Mail body modified (using disclaimer) - zm-01.servicemagic.eu X-Virus-Scanned: amavisd-new at servicemagic.eu Received: from zm-01.servicemagic.eu ([127.0.0.1]) by localhost (zm-01.servicemagic.eu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Z1vHRFy+r1UO for <1135@bugs.x2go.org>; Fri, 20 Oct 2017 19:16:15 +0200 (CEST) Received: from zm-01.servicemagic.eu (localhost.localdomain [127.0.0.1]) by zm-01.servicemagic.eu (Postfix) with ESMTP id 3F78F80AC259C for <1135@bugs.x2go.org>; Fri, 20 Oct 2017 19:16:15 +0200 (CEST) Date: Fri, 20 Oct 2017 19:16:15 +0200 (CEST) From: Walid MOGHRABI To: 1135@bugs.x2go.org Message-ID: <1992364384.23212336.1508519775122.JavaMail.root@servicemagic.eu> In-Reply-To: <879128570.23211901.1508519534421.JavaMail.root@servicemagic.eu> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_23212334_788228192.1508519775114" X-Originating-IP: [10.33.100.58] X-Mailer: Zimbra 7.2.0_GA_2669 (ZimbraWebClient - GC62 (Linux)/7.2.0_GA_2669) ------=_Part_23212334_788228192.1508519775114 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit package: x2goserver priority: wishlist tags: patch This is a proposal patch for a MySQL session storage database backend for X2Go Server. I did this simply because : 1) I'm not used to PostgreSQL and much more skilled with MySQL 2) I do believe MySQL is pretty common on Linux and is widely spread so I guess this can be useful for many other people willing to build a strong TCE setup and not willing to dig into PostgreSQL 3) I find it a lot easier to build a multi-master replication scenario with MySQL than with PostgreSQL (but as I said, I'm much more skilled wih MySQL) This backend is tightly inspired by the PostgreSQL backend and work exactly the same so this is a drop in replacement for it, it's running in my POC for months now and it has been proven very stable. Feel free to test by yourself and report errors. Regards, Walid Moghrabi TRAVAUX.COM BAT I - PARC CEZANNE 2 290 AVENUE GALILEE - CS 80403 13591 AIX EN PROVENCE CEDEX 3 --- DISCLAIMER: This e-mail is private and confidential and may contain proprietary or legally privileged information. It is for the intended recipient only. If you have received this email in error, please notify the author by replying to it and then destroy it. If you are not the intended recipient you must not use, disclose, distribute, copy, print or rely on this e-mail or any attachment. Thank you ------=_Part_23212334_788228192.1508519775114 Content-Type: text/x-patch; name=MySQL-session-backend.patch Content-Disposition: attachment; filename=MySQL-session-backend.patch Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL1gyR28vU2VydmVyL0RCLnBtIGIvWDJHby9TZXJ2ZXIvREIucG0KaW5kZXgg NDFhMjJlOC4uYjI1MDFmMyAxMDA2NDQKLS0tIGEvWDJHby9TZXJ2ZXIvREIucG0KKysrIGIvWDJH by9TZXJ2ZXIvREIucG0KQEAgLTM4LDYgKzM4LDcgQEAKIHVzZSBYMkdvOjpDb25maWcgcXcoIGdl dF9zcWxjb25maWcgKTsKIHVzZSBYMkdvOjpMb2cgcXcoIGxvZ2xldmVsICk7CiB1c2UgWDJHbzo6 U2VydmVyOjpEQjo6UG9zdGdyZVNRTDsKK3VzZSBYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDsKIHVz ZSBYMkdvOjpVdGlscyBxdyggc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1dCBzeXN0ZW1fY2Fw dHVyZV9zdGRvdXRfb3V0cHV0ICk7CiBzZXRsb2dtYXNrKCBMT0dfVVBUTyhsb2dsZXZlbCgpKSAp OwogCkBAIC01Niw3ICs1Nyw3IEBACiBteSAkZGJ1c2VyOwogbXkgJHNzbG1vZGU7CiAKLWlmICgk YmFja2VuZCBuZSAncG9zdGdyZXMnICYmICRiYWNrZW5kIG5lICdzcWxpdGUnKQoraWYgKCRiYWNr ZW5kIG5lICdwb3N0Z3JlcycgJiYgJGJhY2tlbmQgbmUgJ215c3FsJyAmJiAkYmFja2VuZCBuZSAn c3FsaXRlJykKIHsKIAlkaWUgInVua25vd24gYmFja2VuZCAkYmFja2VuZCI7CiB9CkBAIC03Niw2 ICs3NywxMCBAQAogCXsKIAkJWDJHbzo6U2VydmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJzeXNfcm1z ZXNzaW9uc3Jvb3QoJHNpZCk7CiAJfQorCWlmKCRiYWNrZW5kIGVxICdteXNxbCcpCisJeworCQlY MkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJzeXNfcm1zZXNzaW9uc3Jvb3QoJHNpZCk7CisJfQog CWlmKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsKIAkJc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291 dHB1dCgiJHgyZ29fbGliX3BhdGgvbGlieDJnby1zZXJ2ZXItZGItc3FsaXRlMy13cmFwcGVyIiwg InJtc2Vzc2lvbnNyb290IiwgIiRzaWQiKTsKQEAgLTg5LDYgKzk0LDEwIEBACiAJewogCQlYMkdv OjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FMOjpkYnN5c19kZWxldGVtb3VudHMoJHNpZCk7CiAJfQor CWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQorCXsKKwkJWDJHbzo6U2VydmVyOjpEQjo6TXlTUUw6 OmRic3lzX2RlbGV0ZW1vdW50cygkc2lkKTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUn KQogCXsKIAkJc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1dCgiJHgyZ29fbGliX3BhdGgvbGli eDJnby1zZXJ2ZXItZGItc3FsaXRlMy13cmFwcGVyIiwgImRlbGV0ZW1vdW50cyIsICIkc2lkIik7 CkBAIC0xMDMsNiArMTEyLDEwIEBACiAJewogCQlyZXR1cm4gWDJHbzo6U2VydmVyOjpEQjo6UG9z dGdyZVNRTDo6ZGJzeXNfbGlzdHNlc3Npb25zcm9vdCgkc2VydmVyKTsKIAl9CisJaWYgKCRiYWNr ZW5kIGVxICdteXNxbCcpCisJeworCQlyZXR1cm4gWDJHbzo6U2VydmVyOjpEQjo6TXlTUUw6OmRi c3lzX2xpc3RzZXNzaW9uc3Jvb3QoJHNlcnZlcik7CisJfQogCWlmKCRiYWNrZW5kIGVxICdzcWxp dGUnKQogCXsKIAkJcmV0dXJuIHNwbGl0KCJcbiIsc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1 dCgiJHgyZ29fbGliX3BhdGgvbGlieDJnby1zZXJ2ZXItZGItc3FsaXRlMy13cmFwcGVyIiwgImxp c3RzZXNzaW9uc3Jvb3QiLCAiJHNlcnZlciIpKTsKQEAgLTExNSw2ICsxMjgsMTAgQEAKIAl7CiAJ CXJldHVybiBYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FMOjpkYnN5c19saXN0c2Vzc2lvbnNy b290X2FsbCgpOwogCX0KKwlpZiAoJGJhY2tlbmQgZXEgJ215c3FsJykKKwl7CisJCXJldHVybiBY MkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJzeXNfbGlzdHNlc3Npb25zcm9vdF9hbGwoKTsKKwl9 CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsKIAkJcmV0dXJuIHNwbGl0KCJcbiIsc3lz dGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1dCgiJHgyZ29fbGliX3BhdGgvbGlieDJnby1zZXJ2ZXIt ZGItc3FsaXRlMy13cmFwcGVyIiwgImxpc3RzZXNzaW9uc3Jvb3RfYWxsIikpOwpAQCAtMTI5LDYg KzE0NiwxMCBAQAogCXsKIAkJQG1vdW50cyA9IFgyR286OlNlcnZlcjo6REI6OlBvc3RncmVTUUw6 OmRic3lzX2dldG1vdW50cygkc2lkKTsKIAl9CisJaWYgKCRiYWNrZW5kIGVxICdteXNxbCcpCisJ eworCQlAbW91bnRzID0gWDJHbzo6U2VydmVyOjpEQjo6TXlTUUw6OmRic3lzX2dldG1vdW50cygk c2lkKTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsKIAkJQG1vdW50cyA9IHNw bGl0KCJcbiIsc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1dCgiJHgyZ29fbGliX3BhdGgvbGli eDJnby1zZXJ2ZXItZGItc3FsaXRlMy13cmFwcGVyIiwgImdldG1vdW50cyIsICIkc2lkIikpOwpA QCAtMTQ2LDYgKzE2NywxMCBAQAogCXsKIAkJQG1vdW50cyA9IFgyR286OlNlcnZlcjo6REI6OlBv c3RncmVTUUw6OmRiX2dldG1vdW50cygkc2lkKTsKIAl9CisJaWYoJGJhY2tlbmQgZXEgJ215c3Fs JykKKwl7CisJCUBtb3VudHMgPSBYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfZ2V0bW91bnRz KCRzaWQpOworCX0KIAlpZiAoJGJhY2tlbmQgZXEgJ3NxbGl0ZScpCiAJewogCQlAbW91bnRzID0g c3BsaXQoIlxuIixzeXN0ZW1fY2FwdHVyZV9tZXJnZWRfb3V0cHV0KCIkeDJnb19saWJfcGF0aC9s aWJ4MmdvLXNlcnZlci1kYi1zcWxpdGUzLXdyYXBwZXIiLCAiZ2V0bW91bnRzIiwgIiRzaWQiKSk7 CkBAIC0xNjMsNiArMTg4LDEwIEBACiAJewogCQlYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FM OjpkYl9kZWxldGVtb3VudCgkc2lkLCAkcGF0aCk7CiAJfQorCWlmICgkYmFja2VuZCBlcSAnbXlz cWwnKQorCXsKKwkJWDJHbzo6U2VydmVyOjpEQjo6TXlTUUw6OmRiX2RlbGV0ZW1vdW50KCRzaWQs ICRwYXRoKTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsKIAkJc3lzdGVtX2Nh cHR1cmVfbWVyZ2VkX291dHB1dCgiJHgyZ29fbGliX3BhdGgvbGlieDJnby1zZXJ2ZXItZGItc3Fs aXRlMy13cmFwcGVyIiwgImRlbGV0ZW1vdW50IiwgIiRzaWQiLCAiJHBhdGgiKTsKQEAgLTE4MCw2 ICsyMDksMTAgQEAKIAl7CiAJCSRyZXNfb2sgPSBYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FM OjpkYl9pbnNlcnRtb3VudCgkc2lkLCAkcGF0aCwgJGNsaWVudCk7CiAJfQorCWlmICgkYmFja2Vu ZCBlcSAnbXlzcWwnKQorCXsKKwkJJHJlc19vayA9IFgyR286OlNlcnZlcjo6REI6Ok15U1FMOjpk Yl9pbnNlcnRtb3VudCgkc2lkLCAkcGF0aCwgJGNsaWVudCk7CisJfQogCWlmICgkYmFja2VuZCBl cSAnc3FsaXRlJykKIAl7CiAJCWlmKCBzeXN0ZW1fY2FwdHVyZV9tZXJnZWRfb3V0cHV0KCIkeDJn b19saWJfcGF0aC9saWJ4MmdvLXNlcnZlci1kYi1zcWxpdGUzLXdyYXBwZXIiLCAiaW5zZXJ0bW91 bnQiLCAiJHNpZCIsICIkcGF0aCIsICIkY2xpZW50IikgZXEgIm9rIikKQEAgLTIwMCw2ICsyMzMs MTAgQEAKIAl7CiAJCVgyR286OlNlcnZlcjo6REI6OlBvc3RncmVTUUw6OmRiX2luc2VydHNlc3Np b24oJGRpc3BsYXksICRzZXJ2ZXIsICRzaWQpOwogCX0KKwlpZiAoJGJhY2tlbmQgZXEgJ215c3Fs JykKKwl7CisJCVgyR286OlNlcnZlcjo6REI6Ok15U1FMOjpkYl9pbnNlcnRzZXNzaW9uKCRkaXNw bGF5LCAkc2VydmVyLCAkc2lkKTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsK IAkJbXkgJGVycj1zeXN0ZW1fY2FwdHVyZV9tZXJnZWRfb3V0cHV0KCIkeDJnb19saWJfcGF0aC9s aWJ4MmdvLXNlcnZlci1kYi1zcWxpdGUzLXdyYXBwZXIiLCAiaW5zZXJ0c2Vzc2lvbiIsICIkZGlz cGxheSIsICIkc2VydmVyIiwgIiRzaWQiKTsKQEAgLTIyMSw2ICsyNTgsMTAgQEAKIAl7CiAJCVgy R286OlNlcnZlcjo6REI6OlBvc3RncmVTUUw6OmRiX2luc2VydHNoYWRvd3Nlc3Npb24oJGRpc3Bs YXksICRzZXJ2ZXIsICRzaWQsICRzaGFkcmVxX3VzZXIpOwogCX0KKwlpZiAoJGJhY2tlbmQgZXEg J215c3FsJykKKwl7CisJCVgyR286OlNlcnZlcjo6REI6Ok15U1FMOjpkYl9pbnNlcnRzaGFkb3dz ZXNzaW9uKCRkaXNwbGF5LCAkc2VydmVyLCAkc2lkLCAkc2hhZHJlcV91c2VyKTsKKwl9CiAJaWYg KCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsKIAkJbXkgJGVycj1zeXN0ZW1fY2FwdHVyZV9tZXJn ZWRfb3V0cHV0KCIkeDJnb19saWJfcGF0aC9saWJ4MmdvLXNlcnZlci1kYi1zcWxpdGUzLXdyYXBw ZXIiLCAiaW5zZXJ0c2hhZG93c2Vzc2lvbiIsICIkZGlzcGxheSIsICIkc2VydmVyIiwgIiRzaWQi LCAiJHNoYWRyZXFfdXNlciIpOwpAQCAtMjQ3LDYgKzI4OCwxMCBAQAogCXsKIAkJWDJHbzo6U2Vy dmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJfY3JlYXRlc2Vzc2lvbigkc2lkLCAkY29va2llLCAkcGlk LCAkY2xpZW50LCAkZ3JfcG9ydCwgJHNuZF9wb3J0LCAkZnNfcG9ydCwgJHRla2ljdHJsX3BvcnQs ICR0ZWtpZGF0YV9wb3J0KTsKIAl9CisJaWYgKCRiYWNrZW5kIGVxICdteXNxbCcpCisJeworCQlY MkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfY3JlYXRlc2Vzc2lvbigkc2lkLCAkY29va2llLCAk cGlkLCAkY2xpZW50LCAkZ3JfcG9ydCwgJHNuZF9wb3J0LCAkZnNfcG9ydCwgJHRla2ljdHJsX3Bv cnQsICR0ZWtpZGF0YV9wb3J0KTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsK IAkJbXkgJGVycj0gc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1dCgiJHgyZ29fbGliX3BhdGgv bGlieDJnby1zZXJ2ZXItZGItc3FsaXRlMy13cmFwcGVyIiwgImNyZWF0ZXNlc3Npb24iLCAiJHNp ZCIsICIkY29va2llIiwgIiRwaWQiLCAiJGNsaWVudCIsICIkZ3JfcG9ydCIsICIkc25kX3BvcnQi LCAiJGZzX3BvcnQiLCAiJHRla2ljdHJsX3BvcnQiLCAiJHRla2lkYXRhX3BvcnQiKTsKQEAgLTI3 Myw2ICszMTgsMTEgQEAKIAkJIyBmb3IgUG9zdGdyZVNRTCB3ZSBjYW4gdXNlIHRoZSBub3JtYWwg ZGJfY3JlYXRlc2Vzc2lvbiBjb2RlLi4uCiAJCVgyR286OlNlcnZlcjo6REI6OlBvc3RncmVTUUw6 OmRiX2NyZWF0ZXNlc3Npb24oJHNpZCwgJGNvb2tpZSwgJHBpZCwgJGNsaWVudCwgJGdyX3BvcnQs ICRzbmRfcG9ydCwgJGZzX3BvcnQsIC0xLCAtMSk7CiAJfQorCWlmICgkYmFja2VuZCBlcSAnbXlz cWwnKQorCXsKKwkJIyBmb3IgTXlTUUwgd2UgY2FuIHVzZSB0aGUgbm9ybWFsIGRiX2NyZWF0ZXNl c3Npb24gY29kZS4uLgorCQlYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfY3JlYXRlc2Vzc2lv bigkc2lkLCAkY29va2llLCAkcGlkLCAkY2xpZW50LCAkZ3JfcG9ydCwgJHNuZF9wb3J0LCAkZnNf cG9ydCwgLTEsIC0xKTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsKIAkJbXkg JGVycj1zeXN0ZW1fY2FwdHVyZV9tZXJnZWRfb3V0cHV0KCIkeDJnb19saWJfcGF0aC9saWJ4Mmdv LXNlcnZlci1kYi1zcWxpdGUzLXdyYXBwZXIiLCAiY3JlYXRlc2hhZG93c2Vzc2lvbiIsICIkc2lk IiwgIiRjb29raWUiLCAiJHBpZCIsICIkY2xpZW50IiwgIiRncl9wb3J0IiwgIiRzbmRfcG9ydCIs ICIkZnNfcG9ydCIsICIkc2hhZHJlcV91c2VyIik7CkBAIC0yOTMsNiArMzQzLDEwIEBACiAJewog CQlYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FMOjpkYl9pbnNlcnRwb3J0KCRzZXJ2ZXIsICRz aWQsICRzc2hwb3J0KTsKIAl9CisJaWYgKCRiYWNrZW5kIGVxICdteXNxbCcpCisJeworCQlYMkdv OjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfaW5zZXJ0cG9ydCgkc2VydmVyLCAkc2lkLCAkc3NocG9y dCk7CisJfQogCWlmICgkYmFja2VuZCBlcSAnc3FsaXRlJykKIAl7CiAJCW15ICRlcnI9c3lzdGVt X2NhcHR1cmVfbWVyZ2VkX291dHB1dCgiJHgyZ29fbGliX3BhdGgvbGlieDJnby1zZXJ2ZXItZGIt c3FsaXRlMy13cmFwcGVyIiwgImluc2VydHBvcnQiLCAiJHNlcnZlciIsICIkc2lkIiwgIiRzc2hw b3J0Iik7CkBAIC0zMTMsNiArMzY3LDEwIEBACiAJewogCQlYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0 Z3JlU1FMOjpkYl9ybXBvcnQoJHNlcnZlciwgJHNpZCwgJHNzaHBvcnQpOwogCX0KKwlpZiAoJGJh Y2tlbmQgZXEgJ215c3FsJykKKwl7CisJCVgyR286OlNlcnZlcjo6REI6Ok15U1FMOjpkYl9ybXBv cnQoJHNlcnZlciwgJHNpZCwgJHNzaHBvcnQpOworCX0KIAlpZiAoJGJhY2tlbmQgZXEgJ3NxbGl0 ZScpCiAJewogCQlzeXN0ZW1fY2FwdHVyZV9tZXJnZWRfb3V0cHV0KCIkeDJnb19saWJfcGF0aC9s aWJ4MmdvLXNlcnZlci1kYi1zcWxpdGUzLXdyYXBwZXIiLCAicm1wb3J0IiwgIiRzZXJ2ZXIiLCAi JHNpZCIsICIkc3NocG9ydCIpOwpAQCAtMzMzLDYgKzM5MSwxMCBAQAogCXsKIAkJWDJHbzo6U2Vy dmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJfcmVzdW1lKCRjbGllbnQsICRzaWQsICRncl9wb3J0LCAk c25kX3BvcnQsICRmc19wb3J0LCAkdGVraWN0cmxfcG9ydCwgJHRla2lkYXRhX3BvcnQpOwogCX0K KwlpZiAoJGJhY2tlbmQgZXEgJ215c3FsJykKKwl7CisJCVgyR286OlNlcnZlcjo6REI6Ok15U1FM OjpkYl9yZXN1bWUoJGNsaWVudCwgJHNpZCwgJGdyX3BvcnQsICRzbmRfcG9ydCwgJGZzX3BvcnQs ICR0ZWtpY3RybF9wb3J0LCAkdGVraWRhdGFfcG9ydCk7CisJfQogCWlmICgkYmFja2VuZCBlcSAn c3FsaXRlJykKIAl7CiAJCXN5c3RlbV9jYXB0dXJlX21lcmdlZF9vdXRwdXQoIiR4MmdvX2xpYl9w YXRoL2xpYngyZ28tc2VydmVyLWRiLXNxbGl0ZTMtd3JhcHBlciIsICJyZXN1bWUiLCAiJGNsaWVu dCIsICIkc2lkIiwgIiRncl9wb3J0IiwgIiRzbmRfcG9ydCIsICIkZnNfcG9ydCIsICIkdGVraWN0 cmxfcG9ydCIsICIkdGVraWRhdGFfcG9ydCIpOwpAQCAtMzQ4LDYgKzQxMCwxMCBAQAogCXsKIAkJ WDJHbzo6U2VydmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJfY2hhbmdlc3RhdHVzKCRzdGF0dXMsICRz aWQpOwogCX0KKwlpZiAoJGJhY2tlbmQgZXEgJ215c3FsJykKKwl7CisJCVgyR286OlNlcnZlcjo6 REI6Ok15U1FMOjpkYl9jaGFuZ2VzdGF0dXMoJHN0YXR1cywgJHNpZCk7CisJfQogCWlmICgkYmFj a2VuZCBlcSAnc3FsaXRlJykKIAl7CiAJCXN5c3RlbV9jYXB0dXJlX21lcmdlZF9vdXRwdXQoIiR4 MmdvX2xpYl9wYXRoL2xpYngyZ28tc2VydmVyLWRiLXNxbGl0ZTMtd3JhcHBlciIsICJjaGFuZ2Vz dGF0dXMiLCAiJHN0YXR1cyIsICIkc2lkIik7CkBAIC0zNjMsNiArNDI5LDEwIEBACiAJewogCQkk c3RhdHVzID0gWDJHbzo6U2VydmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJfZ2V0c3RhdHVzKCRzaWQp OwogCX0KKwlpZiAoJGJhY2tlbmQgZXEgJ215c3FsJykKKwl7CisJCSRzdGF0dXMgPSBYMkdvOjpT ZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfZ2V0c3RhdHVzKCRzaWQpOworCX0KIAlpZiAoJGJhY2tlbmQg ZXEgJ3NxbGl0ZScpCiAJewogCQkkc3RhdHVzPXN5c3RlbV9jYXB0dXJlX21lcmdlZF9vdXRwdXQo IiR4MmdvX2xpYl9wYXRoL2xpYngyZ28tc2VydmVyLWRiLXNxbGl0ZTMtd3JhcHBlciIsICJnZXRz dGF0dXMiLCAiJHNpZCIpOwpAQCAtMzgwLDYgKzQ1MCwxMCBAQAogCXsKIAkJQGRpc3BsYXlzID0g WDJHbzo6U2VydmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJfZ2V0ZGlzcGxheXMoJHNlcnZlcik7CiAJ fQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQorCXsKKwkJQGRpc3BsYXlzID0gWDJHbzo6U2Vy dmVyOjpEQjo6TXlTUUw6OmRiX2dldGRpc3BsYXlzKCRzZXJ2ZXIpOworCX0KIAlpZiAoJGJhY2tl bmQgZXEgJ3NxbGl0ZScpCiAJewogCQlAZGlzcGxheXMgPSBzcGxpdCgiXG4iLHN5c3RlbV9jYXB0 dXJlX21lcmdlZF9vdXRwdXQoIiR4MmdvX2xpYl9wYXRoL2xpYngyZ28tc2VydmVyLWRiLXNxbGl0 ZTMtd3JhcHBlciIsICJnZXRkaXNwbGF5cyIsICIkc2VydmVyIikpOwpAQCAtMzk4LDYgKzQ3Miwx MCBAQAogCXsKIAkJQHBvcnRzID0gWDJHbzo6U2VydmVyOjpEQjo6UG9zdGdyZVNRTDo6ZGJfZ2V0 cG9ydHMoJHNlcnZlcik7CiAJfQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQorCXsKKwkJQHBv cnRzID0gWDJHbzo6U2VydmVyOjpEQjo6TXlTUUw6OmRiX2dldHBvcnRzKCRzZXJ2ZXIpOworCX0K IAlpZiAoJGJhY2tlbmQgZXEgJ3NxbGl0ZScpCiAJewogCQlAcG9ydHMgPSBzcGxpdCgiXG4iLHN5 c3RlbV9jYXB0dXJlX21lcmdlZF9vdXRwdXQoIiR4MmdvX2xpYl9wYXRoL2xpYngyZ28tc2VydmVy LWRiLXNxbGl0ZTMtd3JhcHBlciIsICJnZXRwb3J0cyIsICIkc2VydmVyIikpOwpAQCAtNDE0LDYg KzQ5MiwxMCBAQAogCXsKIAkJQHNlcnZlcnMgPSBYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FM OjpkYl9nZXRzZXJ2ZXJzKCk7CiAJfQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQorCXsKKwkJ QHNlcnZlcnMgPSBYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfZ2V0c2VydmVycygpOworCX0K IAlpZiAoJGJhY2tlbmQgZXEgJ3NxbGl0ZScpCiAJewogCQlAc2VydmVycyA9IHNwbGl0KCJcbiIs c3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1dCgiJHgyZ29fbGliX3BhdGgvbGlieDJnby1zZXJ2 ZXItZGItc3FsaXRlMy13cmFwcGVyIiwgImdldHNlcnZlcnMiKSk7CkBAIC00MzEsNiArNTEzLDEw IEBACiAJewogCQkkYWdlbnQgPSBYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FMOjpkYl9nZXRh Z2VudCgkc2lkKTsKIAl9CisJaWYgKCRiYWNrZW5kIGVxICdteXNxbCcpCisJeworCQkkYWdlbnQg PSBYMkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTDo6ZGJfZ2V0YWdlbnQoJHNpZCk7CisJfQogCWlmKCRi YWNrZW5kIGVxICdzcWxpdGUnKQogCXsKIAkJJGFnZW50PXN5c3RlbV9jYXB0dXJlX21lcmdlZF9v dXRwdXQoIiR4MmdvX2xpYl9wYXRoL2xpYngyZ28tc2VydmVyLWRiLXNxbGl0ZTMtd3JhcHBlciIs ICJnZXRhZ2VudCIsICIkc2lkIik7CkBAIC00NDcsNiArNTMzLDEwIEBACiAJewogCQkkZGlzcGxh eSA9IFgyR286OlNlcnZlcjo6REI6OlBvc3RncmVTUUw6OmRiX2dldGRpc3BsYXkoJHNpZCk7CiAJ fQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQorCXsKKwkJJGRpc3BsYXkgPSBYMkdvOjpTZXJ2 ZXI6OkRCOjpNeVNRTDo6ZGJfZ2V0ZGlzcGxheSgkc2lkKTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVx ICdzcWxpdGUnKQogCXsKIAkJJGRpc3BsYXk9c3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1dCgi JHgyZ29fbGliX3BhdGgvbGlieDJnby1zZXJ2ZXItZGItc3FsaXRlMy13cmFwcGVyIiwgImdldGRp c3BsYXkiLCAiJHNpZCIpOwpAQCAtNDYyLDYgKzU1MiwxMCBAQAogCXsKIAkJcmV0dXJuIFgyR286 OlNlcnZlcjo6REI6OlBvc3RncmVTUUw6OmRiX2xpc3RzZXNzaW9ucygkc2VydmVyKTsKIAl9CisJ aWYgKCRiYWNrZW5kIGVxICdteXNxbCcpCisJeworCQlyZXR1cm4gWDJHbzo6U2VydmVyOjpEQjo6 TXlTUUw6OmRiX2xpc3RzZXNzaW9ucygkc2VydmVyKTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVxICdz cWxpdGUnKQogCXsKIAkJcmV0dXJuIHNwbGl0KCJcbiIsc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291 dHB1dCgiJHgyZ29fbGliX3BhdGgvbGlieDJnby1zZXJ2ZXItZGItc3FsaXRlMy13cmFwcGVyIiwg Imxpc3RzZXNzaW9ucyIsICIkc2VydmVyIikpOwpAQCAtNDc0LDYgKzU2OCwxMCBAQAogCXsKIAkJ cmV0dXJuIFgyR286OlNlcnZlcjo6REI6OlBvc3RncmVTUUw6OmRiX2xpc3RzZXNzaW9uc19hbGwo KTsKIAl9CisJaWYoJGJhY2tlbmQgZXEgJ215c3FsJykKKwl7CisJCXJldHVybiBYMkdvOjpTZXJ2 ZXI6OkRCOjpNeVNRTDo6ZGJfbGlzdHNlc3Npb25zX2FsbCgpOworCX0KIAlpZiAoJGJhY2tlbmQg ZXEgJ3NxbGl0ZScpCiAJewogCQlyZXR1cm4gc3BsaXQoIlxuIixzeXN0ZW1fY2FwdHVyZV9tZXJn ZWRfb3V0cHV0KCIkeDJnb19saWJfcGF0aC9saWJ4MmdvLXNlcnZlci1kYi1zcWxpdGUzLXdyYXBw ZXIiLCAibGlzdHNlc3Npb25zX2FsbCIpKTsKQEAgLTQ4Nyw2ICs1ODUsMTAgQEAKIAl7CiAJCXJl dHVybiBYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0Z3JlU1FMOjpkYl9saXN0c2hhZG93c2Vzc2lvbnMo JHNlcnZlcik7CiAJfQorCWlmICgkYmFja2VuZCBlcSAnbXlzcWwnKQorCXsKKwkJcmV0dXJuIFgy R286OlNlcnZlcjo6REI6Ok15U1FMOjpkYl9saXN0c2hhZG93c2Vzc2lvbnMoJHNlcnZlcik7CisJ fQogCWlmICgkYmFja2VuZCBlcSAnc3FsaXRlJykKIAl7CiAJCXJldHVybiBzcGxpdCgiXG4iLHN5 c3RlbV9jYXB0dXJlX21lcmdlZF9vdXRwdXQoIiR4MmdvX2xpYl9wYXRoL2xpYngyZ28tc2VydmVy LWRiLXNxbGl0ZTMtd3JhcHBlciIsICJsaXN0c2hhZG93c2Vzc2lvbnMiLCAiJHNlcnZlciIpKTsK QEAgLTQ5OSw2ICs2MDEsMTAgQEAKIAl7CiAJCXJldHVybiBYMkdvOjpTZXJ2ZXI6OkRCOjpQb3N0 Z3JlU1FMOjpkYl9saXN0c2hhZG93c2Vzc2lvbnNfYWxsKCk7CiAJfQorCWlmKCRiYWNrZW5kIGVx ICdteXNxbCcpCisJeworCQlyZXR1cm4gWDJHbzo6U2VydmVyOjpEQjo6TXlTUUw6OmRiX2xpc3Rz aGFkb3dzZXNzaW9uc19hbGwoKTsKKwl9CiAJaWYgKCRiYWNrZW5kIGVxICdzcWxpdGUnKQogCXsK IAkJcmV0dXJuIHNwbGl0KCJcbiIsc3lzdGVtX2NhcHR1cmVfbWVyZ2VkX291dHB1dCgiJHgyZ29f bGliX3BhdGgvbGlieDJnby1zZXJ2ZXItZGItc3FsaXRlMy13cmFwcGVyIiwgImxpc3RzaGFkb3dz ZXNzaW9uc19hbGwiKSk7CmRpZmYgLS1naXQgYS9YMkdvL1NlcnZlci9EQi9NeVNRTC5wbSBiL1gy R28vU2VydmVyL0RCL015U1FMLnBtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjNhMWUxNGYKLS0tIC9kZXYvbnVsbAorKysgYi9YMkdvL1NlcnZlci9EQi9NeVNRTC5wbQpAQCAt MCwwICsxLDczOSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNSBYMkdvIFByb2plY3QgLSBo dHRwOi8vd2lraS54MmdvLm9yZworIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNl bnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYg bm90LCB3cml0ZSB0byB0aGUKKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorIyA1 MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor IworIyBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNSBPbGVrc2FuZHIgU2huZXlkZXIgPG9sZWtzYW5k ci5zaG5leWRlckBvYnZpb3VzbHktbmljZS5kZT4KKyMgQ29weXJpZ2h0IChDKSAyMDA3LTIwMTUg SGVpbnotTWFya3VzIEdyYWVzaW5nIDxoZWluei1tLmdyYWVzaW5nQG9idmlvdXNseS1uaWNlLmRl PgorCitwYWNrYWdlIFgyR286OlNlcnZlcjo6REI6Ok15U1FMOworCis9aGVhZDEgTkFNRQorCitY MkdvOjpTZXJ2ZXI6OkRCOjpNeVNRTCAtIFgyR28gU2Vzc2lvbiBEYXRhYmFzZSBwYWNrYWdlIGZv ciBQZXJsIChNeVNRTCBiYWNrZW5kKQorCis9aGVhZDEgREVTQ1JJUFRJT04KKworWDJHbzo6U2Vy dmVyOjpEQjo6TXlTUUwgUGVybCBwYWNrYWdlIGZvciBYMkdvOjpTZXJ2ZXIuCisKKz1jdXQKKwor dXNlIHN0cmljdDsKK3VzZSBEQkk7Cit1c2UgUE9TSVg7Cit1c2UgU3lzOjpTeXNsb2cgcXcoIDpz dGFuZGFyZCA6bWFjcm9zICk7CisKK3VzZSBYMkdvOjpMb2cgcXcoIGxvZ2xldmVsICk7Cit1c2Ug WDJHbzo6Q29uZmlnIHF3KCBnZXRfY29uZmlnIGdldF9zcWxjb25maWcgKTsKK3VzZSBYMkdvOjpV dGlscyBxdyggc2FuaXRpemVyIHN5c3RlbV9jYXB0dXJlX3N0ZG91dF9vdXRwdXQgaXNfdHJ1ZSAp OworCitzZXRsb2dtYXNrKCBMT0dfVVBUTyhsb2dsZXZlbCgpKSApOworCit1c2UgYmFzZSAnRXhw b3J0ZXInOworCitvdXIgQEVYUE9SVD0oJ2RiX2xpc3RzZXNzaW9ucycsJ2RiX2xpc3RzZXNzaW9u c19hbGwnLCAnZGJfZ2V0c2VydmVycycsICdkYl9nZXRhZ2VudCcsICdkYl9yZXN1bWUnLCAnZGJf Y2hhbmdlc3RhdHVzJywgJ2RiX2dldHN0YXR1cycsCisgICAgICAgICAgICAgJ2RiX2dldGRpc3Bs YXlzJywgJ2RiX2luc2VydHNlc3Npb24nLCAnZGJfaW5zZXJ0c2hhZG93c2Vzc2lvbicsICdkYl9n ZXRwb3J0cycsICdkYl9pbnNlcnRwb3J0JywgJ2RiX3JtcG9ydCcsICdkYl9jcmVhdGVzZXNzaW9u JywgJ2RiX2NyZWF0ZXNoYWRvd3Nlc3Npb24nLCAnZGJfaW5zZXJ0bW91bnQnLAorICAgICAgICAg ICAgICdkYl9nZXRtb3VudHMnLCAnZGJfZGVsZXRlbW91bnQnLCAnZGJfZ2V0ZGlzcGxheScsICdk YnN5c19nZXRtb3VudHMnLCAnZGJzeXNfbGlzdHNlc3Npb25zcm9vdCcsCisgICAgICAgICAgICAg J2Ric3lzX2xpc3RzZXNzaW9uc3Jvb3RfYWxsJywgJ2Ric3lzX3Jtc2Vzc2lvbnNyb290JywgJ2Ri c3lzX2RlbGV0ZW1vdW50cycsICdkYl9saXN0c2hhZG93c2Vzc2lvbnMnLCdkYl9saXN0c2hhZG93 c2Vzc2lvbnNfYWxsJywgKTsKKworbXkgKCR1bmFtZSwgJHBhc3MsICR1aWQsICRwZ2lkLCAkcXVv dGEsICRjb21tZW50LCAkZ2NvcywgJGhvbWVkaXIsICRzaGVsbCwgJGV4cGlyZSkgPSBnZXRwd3Vp ZCgkPCk7CitteSAkcmVhbHVzZXI9JHVuYW1lOworCitteSAkaG9zdDsKK215ICRwb3J0OworbXkg JGRiPSJ4MmdvX3Nlc3Npb25zIjsKKyNteSAkZGJwYXNzPSIiOworI215ICRkYnVzZXI9IngyZ29k YnVzZXIiOworbXkgJGRicGFzczsKK215ICRkYnVzZXI7CitteSAkc3NsbW9kZTsKK215ICR3aXRo X1RlS2k7CisKK3N1YiBpbml0X2RiCit7CisJIyB0aGUgJENvbmZpZyBpcyByZXF1aXJlZCBsYXRl ciAoc2VlIGJlbG93Li4uKQorCW15ICRDb25maWcgPSBnZXRfY29uZmlnOworCSR3aXRoX1RlS2kg PSBpc190cnVlKCRDb25maWctPnBhcmFtKCJ0ZWxla2luZXNpcy5lbmFibGUiKSk7CisKKwlpZiAo ICEgKCAkZGJ1c2VyIGFuZCAkZGJwYXNzICkgKQorCXsKKwkJbXkgJFNxbENvbmZpZyA9IGdldF9z cWxjb25maWc7CisJCW15ICR4MmdvX2xpYl9wYXRoPXN5c3RlbV9jYXB0dXJlX3N0ZG91dF9vdXRw dXQoIngyZ29wYXRoIiwgImxpYmV4ZWMiKTsKKworCQlteSAkYmFja2VuZD0kU3FsQ29uZmlnLT5w YXJhbSgiYmFja2VuZCIpOworCQlpZiAoICRiYWNrZW5kIG5lICJteXNxbCIgKQorCQl7CisJCQlk aWUgIlgyR28gc2VydmVyIGlzIG5vdCBjb25maWd1cmVkIHRvIHVzZSB0aGUgTXlTUUwgc2Vzc2lv biBkYiBiYWNrZW5kIjsKKwkJfQorCisJCSRob3N0PSRTcWxDb25maWctPnBhcmFtKCJteXNxbC5o b3N0Iik7CisJCSRwb3J0PSRTcWxDb25maWctPnBhcmFtKCJteXNxbC5wb3J0Iik7CisJCWlmICgh JGhvc3QpCisJCXsKKwkJCSRob3N0PSdsb2NhbGhvc3QnOworCQl9CisJCWlmICghJHBvcnQpCisJ CXsKKwkJCSRwb3J0PSczMzA2JzsKKwkJfQorCQlteSAkcGFzc2ZpbGU7CisJCWlmICgkdW5hbWUg ZXEgJ3Jvb3QnKQorCQl7CisJCQkkZGJ1c2VyPSd4MmdvZGJ1c2VyJzsKKwkJCSRwYXNzZmlsZT0i L2V0Yy94MmdvL3gyZ29zcWwvcGFzc3dvcmRzL3gyZ29hZG1pbiI7CisJCX0KKwkJZWxzZQorCQl7 CisJCQkkZGJ1c2VyPSJ4MmdvdXNlcl8kdW5hbWUiOworCQkJJHBhc3NmaWxlPSIkaG9tZWRpci8u eDJnby9zcWxwYXNzIjsKKwkJfQorCQlvcGVuIChGTCwiPCAkcGFzc2ZpbGUiKSBvciBkaWUgIkNh bid0IHJlYWQgcGFzc3dvcmQgZmlsZSAkcGFzc2ZpbGU8YnI+IjsKKwkJJGRicGFzcz08Rkw+Owor CQljbG9zZShGTCk7CisJCWNob21wKCRkYnBhc3MpOworCX0KKworCW15ICRkYmg9REJJLT5jb25u ZWN0KCJkYmk6bXlzcWw6ZGF0YWJhc2U9JGRiO2hvc3Q9JGhvc3Q7cG9ydD0kcG9ydCIsIiRkYnVz ZXIiLCIkZGJwYXNzIix7UmFpc2VFcnJvciA9PiAxfSkgb3IgZGllICRfOworCisJcmV0dXJuICRk Ymg7Cit9CisKK3N1YiBkYnN5c19ybXNlc3Npb25zcm9vdAoreworCW15ICRkYmggPSBpbml0X2Ri KCk7CisJY2hlY2tfcm9vdCgpOworCW15ICRzaWQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNl c3Npb25faWRcIiBtaXNzZWQiOworCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiZGVsZXRlIGZyb20g c2Vzc2lvbnMgIHdoZXJlIHNlc3Npb25faWQ9PyIpOworCSRzdGgtPmV4ZWN1dGUoJHNpZCk7CisJ aWYgKCRzdGgtPmVycigpKQorCXsKKwkJc3lzbG9nKCdlcnJvcicsICJybXNlc3Npb25zcm9vdCAo TXlTUUwgc2Vzc2lvbiBkYiBiYWNrZW5kKSBmYWlsZWQgd2l0aCBleGl0Y29kZTogJHN0aC0+ZXJy KCkiKTsKKwkJZGllOworCX0KKwkkc3RoLT5maW5pc2goKTsKKwl1bmRlZiAkZGJoOworCXJldHVy biAxOworfQorCitzdWIgZGJzeXNfbGlzdHNlc3Npb25zcm9vdAoreworCW15ICRkYmggPSBpbml0 X2RiKCk7CisJY2hlY2tfcm9vdCgpOworCW15ICRzZXJ2ZXI9c2hpZnQgb3IgZGllICJhcmd1bWVu dCBcInNlcnZlclwiIG1pc3NlZCI7CisJbXkgQHN0cmluZ3M7CisJbXkgJHN0aD0kZGJoLT5wcmVw YXJlKCJzZWxlY3QgYWdlbnRfcGlkLCBzZXNzaW9uX2lkLCBkaXNwbGF5LCBzZXJ2ZXIsIHN0YXR1 cywKKwkgICAgICAgICAgICAgICAgICAgICAgIERBVEVfRk9STUFUKGluaXRfdGltZSwgJyVZLSVt LSVkVCVIOiVJOiVTJyksCisJICAgICAgICAgICAgICAgICAgICAgICBjb29raWUsY2xpZW50LGdy X3BvcnQsc291bmRfcG9ydCwKKwkgICAgICAgICAgICAgICAgICAgICAgIERBVEVfRk9STUFUKGxh c3RfdGltZSwgJyVZLSVtLSVkVCVIOiVJOiVTJyksCisJICAgICAgICAgICAgICAgICAgICAgICB1 bmFtZSwKKwkgICAgICAgICAgICAgICAgICAgICAgIE1PRChVTklYX1RJTUVTVEFNUChOT1coKSkg LSBVTklYX1RJTUVTVEFNUChpbml0X3RpbWUpLCA4NjQwMCksZnNfcG9ydCwKKwkgICAgICAgICAg ICAgICAgICAgICAgIHRla2ljdHJsX3BvcnQsIHRla2lkYXRhX3BvcnQgZnJvbSBzZXNzaW9ucwor CSAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgc2VydmVyPT8gIG9yZGVyIGJ5IHN0YXR1cyBk ZXNjIik7CisJJHN0aC0+ZXhlY3V0ZSgkc2VydmVyKTsKKwlpZiAoJHN0aC0+ZXJyKCkpIHsKKwkJ c3lzbG9nKCdlcnJvcicsICJsaXN0c2Vzc2lvbnNyb290IChNeVNRTCBzZXNzaW9uIGRiIGJhY2tl bmQpIGZhaWxlZCB3aXRoIGV4aXRjb2RlOiAkc3RoLT5lcnIoKSIpOworCQlkaWUoKTsKKwl9CisJ bXkgQHNlc3Npb25zID0gZmV0Y2hyb3dfYXJyYXlfZGF0YXNldHMoJHN0aCk7CisJJHN0aC0+Zmlu aXNoKCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gQHNlc3Npb25zOworfQorCitzdWIgZGJzeXNf bGlzdHNlc3Npb25zcm9vdF9hbGwKK3sKKwlteSAkZGJoID0gaW5pdF9kYigpOworCWNoZWNrX3Jv b3QoKTsKKwlteSBAc3RyaW5nczsKKwlteSAkc3RoPSRkYmgtPnByZXBhcmUoInNlbGVjdCBhZ2Vu dF9waWQsIHNlc3Npb25faWQsIGRpc3BsYXksIHNlcnZlciwgc3RhdHVzLAorCSAgICAgICAgICAg ICAgICAgICAgICAgREFURV9GT1JNQVQoaW5pdF90aW1lLCAnJVktJW0tJWRUJUg6JUk6JVMnKSwK KwkgICAgICAgICAgICAgICAgICAgICAgIGNvb2tpZSxjbGllbnQsZ3JfcG9ydCxzb3VuZF9wb3J0 LAorCSAgICAgICAgICAgICAgICAgICAgICAgREFURV9GT1JNQVQobGFzdF90aW1lLCAnJVktJW0t JWRUJUg6JUk6JVMnKSwKKwkgICAgICAgICAgICAgICAgICAgICAgIHVuYW1lLAorCSAgICAgICAg ICAgICAgICAgICAgICAgTU9EKFVOSVhfVElNRVNUQU1QKE5PVygpKSAtIFVOSVhfVElNRVNUQU1Q KGluaXRfdGltZSksIDg2NDAwKSxmc19wb3J0LAorCSAgICAgICAgICAgICAgICAgICAgICAgdGVr aWN0cmxfcG9ydCwgdGVraWRhdGFfcG9ydCBmcm9tIHNlc3Npb25zCisJICAgICAgICAgICAgICAg ICAgICAgICBvcmRlciBieSBzdGF0dXMgZGVzYyIpOworCSRzdGgtPmV4ZWN1dGUoKTsKKwlpZiAo JHN0aC0+ZXJyKCkpCisJeworCQlzeXNsb2coJ2Vycm9yJywgImxpc3RzZXNzaW9uc3Jvb3RfYWxs IChNeVNRTCBzZXNzaW9uIGRiIGJhY2tlbmQpIGZhaWxlZCB3aXRoIGV4aXRjb2RlOiAkc3RoLT5l cnIoKSIpOworCQlkaWUoKTsKKwl9CisJbXkgQHNlc3Npb25zID0gZmV0Y2hyb3dfYXJyYXlfZGF0 YXNldHMoJHN0aCk7CisJJHN0aC0+ZmluaXNoKCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gQHNl c3Npb25zOworfQorCitzdWIgZGJzeXNfZGVsZXRlbW91bnRzCit7CisJbXkgJGRiaCA9IGluaXRf ZGIoKTsKKwlteSAkc2lkPXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWlz c2VkIjsKKwljaGVja191c2VyKCRzaWQpOworCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiZGVsZXRl IGZyb20gbW91bnRzIHdoZXJlIHNlc3Npb25faWQ9PyIpOworCSRzdGgtPmV4ZWN1dGUoJHNpZCk7 CisJaWYgKCRzdGgtPmVycigpKQorCXsKKwkJc3lzbG9nKCdlcnJvcicsICJkZWxldGVtb3VudHMg KE15U1FMIHNlc3Npb24gZGIgYmFja2VuZCkgZmFpbGVkIHdpdGggZXhpdGNvZGU6ICRzdGgtPmVy cigpIik7CisJCWRpZSgpOworCX0KKwkkc3RoLT5maW5pc2goKTsKKwl1bmRlZiAkZGJoOworCXJl dHVybiAxOworfQorCitzdWIgZGJfZ2V0bW91bnRzCit7CisJbXkgJGRiaCA9IGluaXRfZGIoKTsK KwlteSAkc2lkPXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWlzc2VkIjsK Kwkkc2lkID0gc2FuaXRpemVyKCd4Mmdvc2lkJywgJHNpZCkgb3IgZGllICJhcmd1bWVudCBcInNl c3Npb25faWRcIiBtYWxmb3JtZWQiOworCWNoZWNrX3VzZXIoJHNpZCk7CisJbXkgQHN0cmluZ3M7 CisJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJzZWxlY3QgY2xpZW50LCBwYXRoIGZyb20gbW91bnRz IHdoZXJlIHNlc3Npb25faWQ9PyIpOworCSRzdGgtPmV4ZWN1dGUoJHNpZCk7CisJaWYgKCRzdGgt PmVycigpKQorCXsKKwkJc3lzbG9nKCdlcnJvcicsICJnZXRtb3VudHMgKE15U1FMIHNlc3Npb24g ZGIgYmFja2VuZCkgZmFpbGVkIHdpdGggZXhpdGNvZGU6ICRzdGgtPmVycigpIik7CisJCWRpZTsK Kwl9CisJbXkgQG1vdW50cyA9IGZldGNocm93X2FycmF5X2RhdGFzZXRzKCRzdGgpOworCSRzdGgt PmZpbmlzaCgpOworCXVuZGVmICRkYmg7CisJcmV0dXJuIEBtb3VudHM7Cit9CisKK3N1YiBkYl9k ZWxldGVtb3VudAoreworCW15ICRkYmggPSBpbml0X2RiKCk7CisJbXkgJHNpZD1zaGlmdCBvciBk aWUgImFyZ3VtZW50IFwic2Vzc2lvbl9pZFwiIG1pc3NlZCI7CisJJHNpZCA9IHNhbml0aXplcign eDJnb3NpZCcsICRzaWQpIG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWFsZm9ybWVk IjsKKwlteSAkcGF0aD1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwicGF0aFwiIG1pc3NlZCI7CisJ Y2hlY2tfdXNlcigkc2lkKTsKKwlteSAkc3RoPSRkYmgtPnByZXBhcmUoImRlbGV0ZSBmcm9tIG1v dW50cyB3aGVyZSBzZXNzaW9uX2lkPT8gYW5kIHBhdGg9PyIpOworCSRzdGgtPmV4ZWN1dGUoJHNp ZCwgJHBhdGgpOworCWlmICgkc3RoLT5lcnIoKSkKKwl7CisJCXN5c2xvZygnZXJyb3InLCAiZGVs ZXRlbW91bnQgKE15U1FMIHNlc3Npb24gZGIgYmFja2VuZCkgZmFpbGVkIHdpdGggZXhpdGNvZGU6 ICRzdGgtPmVycigpIik7CisJCWRpZSgpOworCX0KKwkkc3RoLT5maW5pc2goKTsKKwl1bmRlZiAk ZGJoOworCXJldHVybiAxOworfQorCitzdWIgZGJfaW5zZXJ0bW91bnQKK3sKKwlteSAkZGJoID0g aW5pdF9kYigpOworCW15ICRzaWQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRc IiBtaXNzZWQiOworCSRzaWQgPSBzYW5pdGl6ZXIoJ3gyZ29zaWQnLCAkc2lkKSBvciBkaWUgImFy Z3VtZW50IFwic2Vzc2lvbl9pZFwiIG1hbGZvcm1lZCI7CisJbXkgJHBhdGg9c2hpZnQgb3IgZGll ICJhcmd1bWVudCBcInBhdGhcIiBtaXNzZWQiOworCW15ICRjbGllbnQ9c2hpZnQgb3IgZGllICJh cmd1bWVudCBcImNsaWVudFwiIG1pc3NlZCI7CisJY2hlY2tfdXNlcigkc2lkKTsKKwlteSAkc3Ro PSRkYmgtPnByZXBhcmUoImluc2VydCBpbnRvIG1vdW50cyAoc2Vzc2lvbl9pZCxwYXRoLGNsaWVu dCkgdmFsdWVzICAoPywgPywgPykiKTsKKwkkc3RoLT5leGVjdXRlKCRzaWQsICRwYXRoLCAkY2xp ZW50KTsKKwlteSAkc3VjY2VzcyA9IDA7CisJaWYoISAkc3RoLT5lcnIoKSkKKwl7CisJCSRzdWNj ZXNzID0gMTsKKwl9IGVsc2UgeworCQlzeXNsb2coJ2RlYnVnJywgImluc2VydG1vdW50IChNeVNR TCBzZXNzaW9uIGRiIGJhY2tlbmQpIGZhaWxlZCB3aXRoIGV4aXRjb2RlOiAkc3RoLT5lcnIoKSwg dGhpcyBpc3N1ZSB3aWxsIGJlIGludGVycHJldGVkIGFzOiBTU0hGUyBzaGFyZSBhbHJlYWR5IG1v dW50ZWQiKTsKKwl9CisJJHN0aC0+ZmluaXNoKCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gJHN1 Y2Nlc3M7Cit9CisKK3N1YiBkYl9pbnNlcnRzZXNzaW9uCit7CisJbXkgJGRiaCA9IGluaXRfZGIo KTsKKwlteSAkZGlzcGxheT1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwiZGlzcGxheVwiIG1pc3Nl ZCI7CisJJGRpc3BsYXkgPSBzYW5pdGl6ZXIoJ251bScsICRkaXNwbGF5KSBvciBkaWUgImFyZ3Vt ZW50IFwiZGlzcGxheVwiIG1hbGZvcm1lZCI7CisJbXkgJHNlcnZlcj1zaGlmdCBvciBkaWUgImFy Z3VtZW50IFwic2VydmVyXCIgbWlzc2VkIjsKKwlteSAkc2lkPXNoaWZ0IG9yIGRpZSAiYXJndW1l bnQgXCJzZXNzaW9uX2lkXCIgbWlzc2VkIjsKKwkkc2lkID0gc2FuaXRpemVyKCd4Mmdvc2lkJywg JHNpZCkgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRcIiBtYWxmb3JtZWQiOworCWNoZWNr X3VzZXIoJHNpZCk7CisJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJpbnNlcnQgaW50byBzZXNzaW9u cyAoZGlzcGxheSxzZXJ2ZXIsdW5hbWUsc2Vzc2lvbl9pZCwgaW5pdF90aW1lLCBsYXN0X3RpbWUp IHZhbHVlcworCSAgICAgICAgICAgICAgICAgICAgICAgKD8sID8sID8sID8sIE5PVygpLCBOT1co KSkiKTsKKwkkc3RoLT5leGVjdXRlKCRkaXNwbGF5LCAkc2VydmVyLCAkcmVhbHVzZXIsICRzaWQp IG9yIGRpZSAkXzsKKwkkc3RoLT5maW5pc2goKTsKKwl1bmRlZiAkZGJoOworCXJldHVybiAxOwor fQorCitzdWIgZGJfaW5zZXJ0c2hhZG93c2Vzc2lvbgoreworCW15ICRkYmggPSBpbml0X2RiKCk7 CisJbXkgJGRpc3BsYXk9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcImRpc3BsYXlcIiBtaXNzZWQi OworCSRkaXNwbGF5ID0gc2FuaXRpemVyKCdudW0nLCAkZGlzcGxheSkgb3IgZGllICJhcmd1bWVu dCBcImRpc3BsYXlcIiBtYWxmb3JtZWQiOworCW15ICRzZXJ2ZXI9c2hpZnQgb3IgZGllICJhcmd1 bWVudCBcInNlcnZlclwiIG1pc3NlZCI7CisJbXkgJHNpZD1zaGlmdCBvciBkaWUgImFyZ3VtZW50 IFwic2Vzc2lvbl9pZFwiIG1pc3NlZCI7CisJJHNpZCA9IHNhbml0aXplcigneDJnb3NpZCcsICRz aWQpIG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWFsZm9ybWVkIjsKKwlteSAkc2hh ZHJlcV91c2VyID0gc2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNoYWRyZXFfdXNlclwiIG1pc3Nl ZCI7CisJbXkgJGZha2Vfc2lkID0gJHNpZDsKKwkkZmFrZV9zaWQgPX4gcy8kc2hhZHJlcV91c2Vy LS8kcmVhbHVzZXItLzsKKwljaGVja191c2VyKCRmYWtlX3NpZCk7CisJbXkgJHN0aD0kZGJoLT5w cmVwYXJlKCJpbnNlcnQgaW50byBzZXNzaW9ucyAoZGlzcGxheSxzZXJ2ZXIsdW5hbWUsc2Vzc2lv bl9pZCwgaW5pdF90aW1lLCBsYXN0X3RpbWUpIHZhbHVlcworCSAgICAgICAgICAgICAgICAgICAg ICAgKD8sID8sID8sID8sIE5PVygpLCBOT1coKSkiKTsKKwkkc3RoLT5leGVjdXRlKCRkaXNwbGF5 LCAkc2VydmVyLCAkc2hhZHJlcV91c2VyLCAkc2lkKSBvciBkaWUgJF87CisJJHN0aC0+ZmluaXNo KCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gMTsKK30KKworc3ViIGRiX2NyZWF0ZXNlc3Npb24K K3sKKwlteSAkZGJoID0gaW5pdF9kYigpOworCW15ICRzaWQ9c2hpZnQgb3IgZGllICJhcmd1bWVu dCBcInNlc3Npb25faWRcIiBtaXNzZWQiOworCSRzaWQgPSBzYW5pdGl6ZXIoJ3gyZ29zaWQnLCAk c2lkKSBvciBkaWUgImFyZ3VtZW50IFwic2Vzc2lvbl9pZFwiIG1hbGZvcm1lZCI7CisJbXkgJGNv b2tpZT1zaGlmdCBvciBkaWUiYXJndW1lbnQgXCJjb29raWVcIiBtaXNzZWQiOworCW15ICRwaWQ9 c2hpZnQgb3IgZGllImFyZ3VtZW50IFwicGlkXCIgbWlzc2VkIjsKKwkkcGlkID0gc2FuaXRpemVy KCdudW0nLCAkcGlkKSBvciBkaWUgImFyZ3VtZW50IFwicGlkXCIgbWFsZm9ybWVkIjsKKwlteSAk Y2xpZW50PXNoaWZ0IG9yIGRpZSJhcmd1bWVudCBcImNsaWVudFwiIG1pc3NlZCI7CisJbXkgJGdy X3BvcnQ9c2hpZnQgb3IgZGllImFyZ3VtZW50IFwiZ3JfcG9ydFwiIG1pc3NlZCI7CisJJGdyX3Bv cnQgPSBzYW5pdGl6ZXIoJ251bScsICRncl9wb3J0KSBvciBkaWUgImFyZ3VtZW50IFwiZ3JfcG9y dFwiIG1hbGZvcm1lZCI7CisJbXkgJHNuZF9wb3J0PXNoaWZ0IG9yIGRpZSJhcmd1bWVudCBcInNu ZF9wb3J0XCIgbWlzc2VkIjsKKwkkc25kX3BvcnQgPSBzYW5pdGl6ZXIoJ251bScsICRzbmRfcG9y dCkgb3IgZGllICJhcmd1bWVudCBcInNuZF9wb3J0XCIgbWFsZm9ybWVkIjsKKwlteSAkZnNfcG9y dD1zaGlmdCBvciBkaWUiYXJndW1lbnQgXCJmc19wb3J0XCIgbWlzc2VkIjsKKwkkZnNfcG9ydCA9 IHNhbml0aXplcignbnVtJywgJGZzX3BvcnQpIG9yIGRpZSAiYXJndW1lbnQgXCJmc19wb3J0XCIg bWFsZm9ybWVkIjsKKwlteSAkdGVraWN0cmxfcG9ydD1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwi dGVraWN0cmxfcG9ydFwiIG1pc3NlZCI7CisJJHRla2ljdHJsX3BvcnQgPSBzYW5pdGl6ZXIoJ3Bu bnVtJywgJHRla2ljdHJsX3BvcnQpIG9yIGRpZSAiYXJndW1lbnQgXCJ0ZWtpY3RybF9wb3J0XCIg bWFsZm9ybWVkIjsKKwlteSAkdGVraWRhdGFfcG9ydD1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwi dGVraWRhdGFfcG9ydFwiIG1pc3NlZCI7CisJJHRla2lkYXRhX3BvcnQgPSBzYW5pdGl6ZXIoJ3Bu bnVtJywgJHRla2lkYXRhX3BvcnQpIG9yIGRpZSAiYXJndW1lbnQgXCJ0ZWtpZGF0YV9wb3J0XCIg bWFsZm9ybWVkIjsKKwljaGVja191c2VyKCRzaWQpOworCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgi dXBkYXRlIHNlc3Npb25zIHNldCBzdGF0dXM9J1InLGxhc3RfdGltZT1OT1coKSxjb29raWU9Pyxh Z2VudF9waWQ9PywKKwkgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudD0/LGdyX3BvcnQ9Pyxz b3VuZF9wb3J0PT8sZnNfcG9ydD0/LHRla2ljdHJsX3BvcnQ9Pyx0ZWtpZGF0YV9wb3J0PT8gd2hl cmUgc2Vzc2lvbl9pZD0/IGFuZCB1bmFtZT0/Iik7CisJJHN0aC0+ZXhlY3V0ZSgkY29va2llLCAk cGlkLCAkY2xpZW50LCAkZ3JfcG9ydCwgJHNuZF9wb3J0LCAkZnNfcG9ydCwgJHRla2ljdHJsX3Bv cnQsICR0ZWtpZGF0YV9wb3J0LCAkc2lkLCAkcmVhbHVzZXIpOworCWlmICgkc3RoLT5lcnIoKSkK Kwl7CisJCXN5c2xvZygnZXJyb3InLCAiY3JlYXRlc2Vzc2lvbiAoTXlTUUwgc2Vzc2lvbiBkYiBi YWNrZW5kKSBmYWlsZWQgd2l0aCBleGl0Y29kZTogJHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7CisJ fQorCSRzdGgtPmZpbmlzaCgpOworCXVuZGVmICRkYmg7CisJcmV0dXJuIDE7Cit9CisKK3N1YiBk Yl9jcmVhdGVzaGFkb3dzZXNzaW9uCit7CisJbXkgJGRiaCA9IGluaXRfZGIoKTsKKwlteSAkc2lk PXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWlzc2VkIjsKKwkkc2lkID0g c2FuaXRpemVyKCd4Mmdvc2lkJywgJHNpZCkgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRc IiBtYWxmb3JtZWQiOworCW15ICRjb29raWU9c2hpZnQgb3IgZGllImFyZ3VtZW50IFwiY29va2ll XCIgbWlzc2VkIjsKKwlteSAkcGlkPXNoaWZ0IG9yIGRpZSJhcmd1bWVudCBcInBpZFwiIG1pc3Nl ZCI7CisJJHBpZCA9IHNhbml0aXplcignbnVtJywgJHBpZCkgb3IgZGllICJhcmd1bWVudCBcInBp ZFwiIG1hbGZvcm1lZCI7CisJbXkgJGNsaWVudD1zaGlmdCBvciBkaWUiYXJndW1lbnQgXCJjbGll bnRcIiBtaXNzZWQiOworCW15ICRncl9wb3J0PXNoaWZ0IG9yIGRpZSJhcmd1bWVudCBcImdyX3Bv cnRcIiBtaXNzZWQiOworCSRncl9wb3J0ID0gc2FuaXRpemVyKCdudW0nLCAkZ3JfcG9ydCkgb3Ig ZGllICJhcmd1bWVudCBcImdyX3BvcnRcIiBtYWxmb3JtZWQiOworCW15ICRzbmRfcG9ydD1zaGlm dCBvciBkaWUiYXJndW1lbnQgXCJzbmRfcG9ydFwiIG1pc3NlZCI7CisJJHNuZF9wb3J0ID0gc2Fu aXRpemVyKCdudW0nLCAkc25kX3BvcnQpIG9yIGRpZSAiYXJndW1lbnQgXCJzbmRfcG9ydFwiIG1h bGZvcm1lZCI7CisJbXkgJGZzX3BvcnQ9c2hpZnQgb3IgZGllImFyZ3VtZW50IFwiZnNfcG9ydFwi IG1pc3NlZCI7CisJJGZzX3BvcnQgPSBzYW5pdGl6ZXIoJ251bScsICRmc19wb3J0KSBvciBkaWUg ImFyZ3VtZW50IFwiZnNfcG9ydFwiIG1hbGZvcm1lZCI7CisJbXkgJHNoYWRyZXFfdXNlciA9IHNo aWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzaGFkcmVxX3VzZXJcIiBtaXNzZWQiOworCWNoZWNrX3Vz ZXIoJHNpZCk7CisJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJ1cGRhdGUgc2Vzc2lvbnMgc2V0IHN0 YXR1cz0nUicsbGFzdF90aW1lPU5PVygpLGNvb2tpZT0/LGFnZW50X3BpZD0/LAorCSAgICAgICAg ICAgICAgICAgICAgICAgY2xpZW50PT8sZ3JfcG9ydD0/LHNvdW5kX3BvcnQ9Pyxmc19wb3J0PT8s dGVraWN0cmxfcG9ydD0tMSx0ZWtpZGF0YV9wb3J0PS0xIHdoZXJlIHNlc3Npb25faWQ9PyBhbmQg dW5hbWU9PyIpOworCSRzdGgtPmV4ZWN1dGUoJGNvb2tpZSwgJHBpZCwgJGNsaWVudCwgJGdyX3Bv cnQsICRzbmRfcG9ydCwgJGZzX3BvcnQsICRzaWQsICRzaGFkcmVxX3VzZXIpOworCWlmICgkc3Ro LT5lcnIoKSkKKwl7CisJCXN5c2xvZygnZXJyb3InLCAiY3JlYXRlc2hhZG93c2Vzc2lvbiAoTXlT UUwgc2Vzc2lvbiBkYiBiYWNrZW5kKSBmYWlsZWQgd2l0aCBleGl0Y29kZTogJHN0aC0+ZXJyKCki KTsKKwkJZGllKCk7CisJfQorCSRzdGgtPmZpbmlzaCgpOworCXVuZGVmICRkYmg7CisJcmV0dXJu IDE7Cit9CisKK3N1YiBkYl9pbnNlcnRwb3J0Cit7CisJbXkgJGRiaCA9IGluaXRfZGIoKTsKKwlt eSAkc2VydmVyPXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzZXJ2ZXJcIiBtaXNzZWQiOworCW15 ICRzaWQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRcIiBtaXNzZWQiOworCSRz aWQgPSBzYW5pdGl6ZXIoJ3gyZ29zaWQnLCAkc2lkKSBvciBkaWUgImFyZ3VtZW50IFwic2Vzc2lv bl9pZFwiIG1hbGZvcm1lZCI7CisJbXkgJHNzaHBvcnQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBc InBvcnRcIiBtaXNzZWQiOworCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiaW5zZXJ0IGludG8gdXNl ZF9wb3J0cyAoc2VydmVyLHNlc3Npb25faWQscG9ydCkgdmFsdWVzICAoPywgPywgPykiKTsKKwlj aGVja191c2VyKCRzaWQpOworCSRzdGgtPmV4ZWN1dGUoJHNlcnZlciwgJHNpZCwgJHNzaHBvcnQp OworCWlmICgkc3RoLT5lcnIoKSkKKwl7CisJCXN5c2xvZygnZXJyb3InLCAiaW5zZXJ0cG9ydCAo TXlTUUwgc2Vzc2lvbiBkYiBiYWNrZW5kKSBmYWlsZWQgd2l0aCBleGl0Y29kZTogJHN0aC0+ZXJy KCkiKTsKKwkJZGllKCk7CisJfQorCSRzdGgtPmZpbmlzaCgpOworCXVuZGVmICRkYmg7CisJcmV0 dXJuIDE7Cit9CisKK3N1YiBkYl9ybXBvcnQKK3sKKwlteSAkZGJoID0gaW5pdF9kYigpOworCW15 ICRzZXJ2ZXI9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNlcnZlclwiIG1pc3NlZCI7CisJbXkg JHNpZD1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwic2Vzc2lvbl9pZFwiIG1pc3NlZCI7CisJJHNp ZCA9IHNhbml0aXplcigneDJnb3NpZCcsICRzaWQpIG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9u X2lkXCIgbWFsZm9ybWVkIjsKKwlteSAkc3NocG9ydD1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwi cG9ydFwiIG1pc3NlZCI7CisJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJkZWxldGUgZnJvbSB1c2Vk X3BvcnRzIHdoZXJlIHNlcnZlcj0/IGFuZCBzZXNzaW9uX2lkPT8gYW5kIHBvcnQ9PyIpOworCWNo ZWNrX3VzZXIoJHNpZCk7CisJJHN0aC0+ZXhlY3V0ZSgkc2VydmVyLCAkc2lkLCAkc3NocG9ydCk7 CisJaWYgKCRzdGgtPmVycigpKSB7CisJCXN5c2xvZygnZXJyb3InLCAicm1wb3J0IChNeVNRTCBz ZXNzaW9uIGRiIGJhY2tlbmQpIGZhaWxlZCB3aXRoIGV4aXRjb2RlOiAkc3RoLT5lcnIoKSIpOwor CQlkaWUoKTsKKwl9CisJJHN0aC0+ZmluaXNoKCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gMTsK K30KKworc3ViIGRiX3Jlc3VtZQoreworCW15ICRkYmggPSBpbml0X2RiKCk7CisJbXkgJGNsaWVu dD1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwiY2xpZW50XCIgbWlzc2VkIjsKKwlteSAkc2lkPXNo aWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWlzc2VkIjsKKwkkc2lkID0gc2Fu aXRpemVyKCd4Mmdvc2lkJywgJHNpZCkgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRcIiBt YWxmb3JtZWQiOworCW15ICRncl9wb3J0PXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQgXCJncl9wb3J0 XCIgbWlzc2VkIjsKKwkkZ3JfcG9ydCA9IHNhbml0aXplcignbnVtJywgJGdyX3BvcnQpIG9yIGRp ZSAiYXJndW1lbnQgXCJncl9wb3J0XCIgbWFsZm9ybWVkIjsKKwlteSAkc25kX3BvcnQ9c2hpZnQg b3IgZGllICJhcmd1bWVudCBcInNuZF9wb3J0XCIgbWlzc2VkIjsKKwkkc25kX3BvcnQgPSBzYW5p dGl6ZXIoJ251bScsICRzbmRfcG9ydCkgb3IgZGllICJhcmd1bWVudCBcInNuZF9wb3J0XCIgbWFs Zm9ybWVkIjsKKwlteSAkZnNfcG9ydD1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwiZnNfcG9ydFwi IG1pc3NlZCI7CisJJGZzX3BvcnQgPSBzYW5pdGl6ZXIoJ251bScsICRmc19wb3J0KSBvciBkaWUg ImFyZ3VtZW50IFwiZnNfcG9ydFwiIG1hbGZvcm1lZCI7CisJbXkgJHRla2ljdHJsX3BvcnQ9c2hp ZnQgb3IgZGllImFyZ3VtZW50IFwidGVraWN0cmxfcG9ydFwiIG1pc3NlZCI7CisJJHRla2ljdHJs X3BvcnQgPSBzYW5pdGl6ZXIoJ3BubnVtJywgJHRla2ljdHJsX3BvcnQpIG9yIGRpZSAiYXJndW1l bnQgXCJ0ZWtpY3RybF9wb3J0XCIgbWFsZm9ybWVkIjsKKwlteSAkdGVraWRhdGFfcG9ydD1zaGlm dCBvciBkaWUiYXJndW1lbnQgXCJ0ZWtpZGF0YV9wb3J0XCIgbWlzc2VkIjsKKwkkdGVraWRhdGFf cG9ydCA9IHNhbml0aXplcigncG5udW0nLCAkdGVraWRhdGFfcG9ydCkgb3IgZGllICJhcmd1bWVu dCBcInRla2lkYXRhX3BvcnRcIiBtYWxmb3JtZWQiOworCWNoZWNrX3VzZXIoJHNpZCk7CisJbXkg JHN0aD0kZGJoLT5wcmVwYXJlKCJ1cGRhdGUgc2Vzc2lvbnMgc2V0IGxhc3RfdGltZT1OT1coKSxz dGF0dXM9J1InLAorCSAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50PT8sZ3JfcG9ydD0/LHNv dW5kX3BvcnQ9Pyxmc19wb3J0PT8sdGVraWN0cmxfcG9ydD0/LHRla2lkYXRhX3BvcnQ9PyB3aGVy ZSBzZXNzaW9uX2lkID0gPyBhbmQgdW5hbWU9PyIpOworCSRzdGgtPmV4ZWN1dGUoJGNsaWVudCwg JGdyX3BvcnQsICRzbmRfcG9ydCwgJGZzX3BvcnQsICR0ZWtpY3RybF9wb3J0LCAkdGVraWRhdGFf cG9ydCwgJHNpZCwgJHJlYWx1c2VyKTsKKwlpZiAoJHN0aC0+ZXJyKCkpCisJeworCQlzeXNsb2co J2Vycm9yJywgInJlc3VtZSAoTXlTUUwgc2Vzc2lvbiBkYiBiYWNrZW5kKSBmYWlsZWQgd2l0aCBl eGl0Y29kZTogJHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7CisJfQorCSRzdGgtPmZpbmlzaCgpOwor CXVuZGVmICRkYmg7CisJcmV0dXJuIDE7Cit9CisKK3N1YiBkYl9jaGFuZ2VzdGF0dXMKK3sKKwlt eSAkZGJoID0gaW5pdF9kYigpOworCW15ICRzdGF0dXM9c2hpZnQgb3IgZGllICJhcmd1bWVudCBc InN0YXR1c1wiIG1pc3NlZCI7CisJbXkgJHNpZD1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwic2Vz c2lvbl9pZFwiIG1pc3NlZCI7CisJJHNpZCA9IHNhbml0aXplcigneDJnb3NpZCcsICRzaWQpIG9y IGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWFsZm9ybWVkIjsKKwljaGVja191c2VyKCRz aWQpOworCisJIyB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gY2hhbmdlIHRoZSBzdGF0ZSBvZiBub3Jt YWwgc2Vzc2lvbnMgKCRyZWFsdXNlciA9PSAkZWZmZWN0aXZlX3VzZXIpCisJIyBfYW5kXyBkZXNr dG9wIHNoYXJpbmcgc2Vzc2lvbiAoJHJlYWx1c2VyICE9ICRlZmZlY3RpdmVfdXNlcikuIFRodXMs IGV4dHJhY3RpbmcgdGhlIGVmZmVjdGl2ZQorCSMgdXNlcm5hbWUgZnJvbSB0aGUgc2Vzc2lvbiBJ RC4uLgorCW15ICRlZmZlY3RpdmVfdXNlciA9ICRzaWQ7CisJJGVmZmVjdGl2ZV91c2VyID1+IHMv XC1bMC05XStcLVswLTldezEwfV8uKi8vOworCisJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJ1cGRh dGUgc2Vzc2lvbnMgc2V0IGxhc3RfdGltZT1OT1coKSwKKwkgICAgICAgICAgICAgICAgICAgICAg IHN0YXR1cz0/IHdoZXJlIHNlc3Npb25faWQgPSA/IGFuZCB1bmFtZT0/Iik7CisJJHN0aC0+ZXhl Y3V0ZSgkc3RhdHVzLCAkc2lkLCAkZWZmZWN0aXZlX3VzZXIpOworCWlmICgkc3RoLT5lcnIoKSkK Kwl7CisJCXN5c2xvZygnZXJyb3InLCAiY2hhbmdlc3RhdHVzIChNeVNRTCBzZXNzaW9uIGRiIGJh Y2tlbmQpIGZhaWxlZCB3aXRoIGV4aXRjb2RlOiAkc3RoLT5lcnIoKSIpOworCQlkaWUoKTsKKwl9 CisJJHN0aC0+ZmluaXNoKCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gMTsKK30KKworc3ViIGRi X2dldHN0YXR1cworeworCW15ICRkYmggPSBpbml0X2RiKCk7CisJbXkgJHNpZD1zaGlmdCBvciBk aWUgImFyZ3VtZW50IFwic2Vzc2lvbl9pZFwiIG1pc3NlZCI7CisJJHNpZCA9IHNhbml0aXplcign eDJnb3NpZCcsICRzaWQpIG9yIGRpZSAiYXJndW1lbnQgXCJzZXNzaW9uX2lkXCIgbWFsZm9ybWVk IjsKKwljaGVja191c2VyKCRzaWQpOworCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgic2VsZWN0IHN0 YXR1cyBmcm9tIHNlc3Npb25zIHdoZXJlIHNlc3Npb25faWQgPSA/Iik7CisJJHN0aC0+ZXhlY3V0 ZSgkc2lkKTsKKwlpZiAoJHN0aC0+ZXJyKCkpCisJeworCQlzeXNsb2coJ2Vycm9yJywgImNoYW5n ZXN0YXR1cyAoTXlTUUwgc2Vzc2lvbiBkYiBiYWNrZW5kKSBmYWlsZWQgd2l0aCBleGl0Y29kZTog JHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7CisJfQorCW15IEBkYXRhOworCW15ICRzdGF0dXM7CisJ QGRhdGEgPSAkc3RoLT5mZXRjaHJvd19hcnJheTsKKwl7CisJCSRzdGF0dXMgPSAkZGF0YVswXTsK Kwl9CisJJHN0aC0+ZmluaXNoKCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gJHN0YXR1czsKK30K Kworc3ViIGRiX2dldGRpc3BsYXlzCit7CisJbXkgJGRiaCA9IGluaXRfZGIoKTsKKwkjaWdub3Jl ICRzZXJ2ZXIKKwlteSBAc3RyaW5nczsKKwlteSAkc3RoPSRkYmgtPnByZXBhcmUoInNlbGVjdCBk aXNwbGF5IGZyb20gc2Vzc2lvbnMiKTsKKwkkc3RoLT5leGVjdXRlKCk7CisJaWYgKCRzdGgtPmVy cigpKQorCXsKKwkJc3lzbG9nKCdlcnJvcicsICJnZXRkaXNwbGF5cyAoTXlTUUwgc2Vzc2lvbiBk YiBiYWNrZW5kKSBmYWlsZWQgd2l0aCBleGl0Y29kZTogJHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7 CisJfQorCW15IEBkYXRhOworCW15ICRpPTA7CisJd2hpbGUgKEBkYXRhID0gJHN0aC0+ZmV0Y2hy b3dfYXJyYXkpCisJeworCQkkc3RyaW5nc1skaSsrXT0nfCcuJGRhdGFbMF0uJ3wnOworCX0KKwkk c3RoLT5maW5pc2goKTsKKwl1bmRlZiAkZGJoOworCXJldHVybiBqb2luKCJcbiIsQHN0cmluZ3Mp OworfQorCitzdWIgZGJfZ2V0cG9ydHMKK3sKKwlteSAkZGJoID0gaW5pdF9kYigpOworCSNpZ25v cmUgJHNlcnZlcgorCW15ICRzZXJ2ZXI9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNlcnZlclwi IG1pc3NlZCI7CisJbXkgQHN0cmluZ3M7CisJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJzZWxlY3Qg cG9ydCBmcm9tIHVzZWRfcG9ydHMiKTsKKwkkc3RoLT5leGVjdXRlKCk7CisJaWYgKCRzdGgtPmVy cigpKQorCXsKKwkJc3lzbG9nKCdlcnJvcicsICJnZXRwb3J0cyAoTXlTUUwgc2Vzc2lvbiBkYiBi YWNrZW5kKSBmYWlsZWQgd2l0aCBleGl0Y29kZTogJHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7CisJ fQorCW15IEBkYXRhOworCW15ICRpPTA7CisJd2hpbGUgKEBkYXRhID0gJHN0aC0+ZmV0Y2hyb3df YXJyYXkpCisJeworCQkkc3RyaW5nc1skaSsrXT0nfCcuJGRhdGFbMF0uJ3wnOworCX0KKwkkc3Ro LT5maW5pc2goKTsKKwl1bmRlZiAkZGJoOworCXJldHVybiBqb2luKCJcbiIsQHN0cmluZ3MpOwor fQorCitzdWIgZGJfZ2V0c2VydmVycworeworCW15ICRkYmggPSBpbml0X2RiKCk7CisJbXkgQHN0 cmluZ3M7CisJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJzZWxlY3Qgc2VydmVyLGNvdW50KCopIGZy b20gc2Vzc2lvbnMgd2hlcmUgc3RhdHVzICE9ICdGJyBncm91cCBieSBzZXJ2ZXIiKTsKKwkkc3Ro LT5leGVjdXRlKCk7CisJaWYgKCRzdGgtPmVycigpKQorCXsKKwkJc3lzbG9nKCdlcnJvcicsICJn ZXRzZXJ2ZXJzIChNeVNRTCBzZXNzaW9uIGRiIGJhY2tlbmQpIGZhaWxlZCB3aXRoIGV4aXRjb2Rl OiAkc3RoLT5lcnIoKSIpOworCQlkaWUoKTsKKwl9CisJbXkgQGRhdGE7CisJbXkgJGk9MDsKKwl3 aGlsZSAoQGRhdGEgPSAkc3RoLT5mZXRjaHJvd19hcnJheSkKKwl7CisJCUBzdHJpbmdzWyRpKytd PUBkYXRhWzBdLiIgIi5AZGF0YVsxXTsKKwl9CisJJHN0aC0+ZmluaXNoKCk7CisJdW5kZWYgJGRi aDsKKwlyZXR1cm4gam9pbigiXG4iLEBzdHJpbmdzKTsKK30KKworc3ViIGRiX2dldGFnZW50Cit7 CisJbXkgJGRiaCA9IGluaXRfZGIoKTsKKwlteSAkc2lkPXNoaWZ0IG9yIGRpZSAiYXJndW1lbnQg XCJzZXNzaW9uX2lkXCIgbWlzc2VkIjsKKwkkc2lkID0gc2FuaXRpemVyKCd4Mmdvc2lkJywgJHNp ZCkgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRcIiBtYWxmb3JtZWQiOworCW15ICRhZ2Vu dDsKKwljaGVja191c2VyKCRzaWQpOworCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgic2VsZWN0IGFn ZW50X3BpZCBmcm9tIHNlc3Npb25zCisJICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSBzZXNz aW9uX2lkPT8iKTsKKwkkc3RoLT5leGVjdXRlKCRzaWQpOworCWlmICgkc3RoLT5lcnIoKSkKKwl7 CisJCXN5c2xvZygnZXJyb3InLCAiZ2V0YWdlbnQgKE15U1FMIHNlc3Npb24gZGIgYmFja2VuZCkg ZmFpbGVkIHdpdGggZXhpdGNvZGU6ICRzdGgtPmVycigpIik7CisJCWRpZSgpOworCX0KKwlteSBA ZGF0YTsKKwlteSAkaT0wOworCWlmKEBkYXRhID0gJHN0aC0+ZmV0Y2hyb3dfYXJyYXkpCisJewor CQkkYWdlbnQ9JGRhdGFbMF07CisJfQorCSRzdGgtPmZpbmlzaCgpOworCXVuZGVmICRkYmg7CisJ cmV0dXJuICRhZ2VudDsKK30KKworc3ViIGRiX2dldGRpc3BsYXkKK3sKKwlteSAkZGJoID0gaW5p dF9kYigpOworCW15ICRzaWQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBcInNlc3Npb25faWRcIiBt aXNzZWQiOworCSRzaWQgPSBzYW5pdGl6ZXIoJ3gyZ29zaWQnLCAkc2lkKSBvciBkaWUgImFyZ3Vt ZW50IFwic2Vzc2lvbl9pZFwiIG1hbGZvcm1lZCI7CisJbXkgJGRpc3BsYXk7CisJY2hlY2tfdXNl cigkc2lkKTsKKwlteSAkc3RoPSRkYmgtPnByZXBhcmUoInNlbGVjdCBkaXNwbGF5IGZyb20gc2Vz c2lvbnMKKwkgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIHNlc3Npb25faWQgPT8iKTsKKwkk c3RoLT5leGVjdXRlKCRzaWQpOworCWlmICgkc3RoLT5lcnIoKSkKKwl7CisJCXN5c2xvZygnZXJy b3InLCAiZ2V0ZGlzcGxheSAoTXlTUUwgc2Vzc2lvbiBkYiBiYWNrZW5kKSBmYWlsZWQgd2l0aCBl eGl0Y29kZTogJHN0aC0+ZXJyKCkiKTsKKwkJZGllKCk7CisJfQorCW15IEBkYXRhOworCW15ICRp PTA7CisJaWYoQGRhdGEgPSAkc3RoLT5mZXRjaHJvd19hcnJheSkKKwl7CisJCSRkaXNwbGF5PSRk YXRhWzBdOworCX0KKwkkc3RoLT5maW5pc2goKTsKKwl1bmRlZiAkZGJoOworCXJldHVybiAkZGlz cGxheTsKK30KKworc3ViIGRiX2xpc3RzZXNzaW9ucworeworCW15ICRkYmggPSBpbml0X2RiKCk7 CisJbXkgJHNlcnZlcj1zaGlmdCBvciBkaWUgImFyZ3VtZW50IFwic2VydmVyXCIgbWlzc2VkIjsK KworCW15IEBzdHJpbmdzOworCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgic2VsZWN0IGFnZW50X3Bp ZCwgc2Vzc2lvbl9pZCwgZGlzcGxheSwgc2VydmVyLCBzdGF0dXMsCisJICAgICAgICAgICAgICAg ICAgICAgICBEQVRFX0ZPUk1BVChpbml0X3RpbWUsICclWS0lbS0lZFQlSDolSTolUycpLAorCSAg ICAgICAgICAgICAgICAgICAgICAgY29va2llLGNsaWVudCxncl9wb3J0LHNvdW5kX3BvcnQsCisJ ICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0ZPUk1BVChsYXN0X3RpbWUsICclWS0lbS0lZFQl SDolSTolUycpLAorCSAgICAgICAgICAgICAgICAgICAgICAgdW5hbWUsCisJICAgICAgICAgICAg ICAgICAgICAgICBNT0QoVU5JWF9USU1FU1RBTVAoTk9XKCkpIC0gVU5JWF9USU1FU1RBTVAoaW5p dF90aW1lKSwgODY0MDApLGZzX3BvcnQsCisJICAgICAgICAgICAgICAgICAgICAgICB0ZWtpY3Ry bF9wb3J0LHRla2lkYXRhX3BvcnQgZnJvbSBzZXNzaW9ucworCSAgICAgICAgICAgICAgICAgICAg ICAgd2hlcmUgc3RhdHVzICE9J0YnIGFuZCBzZXJ2ZXI9PyBhbmQgdW5hbWU9PworCSAgICAgICAg ICAgICAgICAgICAgICAgYW5kICAoICBzZXNzaW9uX2lkIG5vdCBsaWtlICclWFNIQUQlJykgIG9y ZGVyIGJ5IHN0YXR1cyBkZXNjIik7CisJJHN0aC0+ZXhlY3V0ZSgkc2VydmVyLCAkcmVhbHVzZXIp OworCWlmICgkc3RoLT5lcnIoKSkKKwl7CisJCXN5c2xvZygnZXJyb3InLCAibGlzdHNlc3Npb25z IChNeVNRTCBzZXNzaW9uIGRiIGJhY2tlbmQpIGZhaWxlZCB3aXRoIGV4aXRjb2RlOiAkc3RoLT5l cnIoKSIpOworCQlkaWUoKTsKKwl9CisJbXkgQHNlc3Npb25zID0gZmV0Y2hyb3dfYXJyYXlfZGF0 YXNldHMoJHN0aCk7CisJJHN0aC0+ZmluaXNoKCk7CisJdW5kZWYgJGRiaDsKKwlyZXR1cm4gQHNl c3Npb25zOworfQorCitzdWIgZGJfbGlzdHNlc3Npb25zX2FsbAoreworCW15ICRkYmggPSBpbml0 X2RiKCk7CisJbXkgQHN0cmluZ3M7CisJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJzZWxlY3QgYWdl bnRfcGlkLCBzZXNzaW9uX2lkLCBkaXNwbGF5LCBzZXJ2ZXIsIHN0YXR1cywKKwkgICAgICAgICAg ICAgICAgICAgICAgIERBVEVfRk9STUFUKGluaXRfdGltZSwgJyVZLSVtLSVkVCVIOiVJOiVTJyks CisJICAgICAgICAgICAgICAgICAgICAgICBjb29raWUsY2xpZW50LGdyX3BvcnQsc291bmRfcG9y dCwKKwkgICAgICAgICAgICAgICAgICAgICAgIERBVEVfRk9STUFUKGxhc3RfdGltZSwgJyVZLSVt LSVkVCVIOiVJOiVTJyksCisJICAgICAgICAgICAgICAgICAgICAgICB1bmFtZSwKKwkgICAgICAg ICAgICAgICAgICAgICAgIE1PRChVTklYX1RJTUVTVEFNUChOT1coKSkgLSBVTklYX1RJTUVTVEFN UChpbml0X3RpbWUpLCA4NjQwMCksZnNfcG9ydCwKKwkgICAgICAgICAgICAgICAgICAgICAgIHRl a2ljdHJsX3BvcnQsdGVraWRhdGFfcG9ydCBmcm9tICBzZXNzaW9ucworCSAgICAgICAgICAgICAg ICAgICAgICAgd2hlcmUgc3RhdHVzICE9J0YnIGFuZCB1bmFtZT0/IGFuZCAgKCAgc2Vzc2lvbl9p ZCBub3QgbGlrZSAnJVhTSEFEJScpICBvcmRlciBieSBzdGF0dXMgZGVzYyIpOworCQorCSRzdGgt PmV4ZWN1dGUoJHJlYWx1c2VyKTsKKwlpZiAoJHN0aC0+ZXJyKCkpCisJeworCQlzeXNsb2coJ2Vy cm9yJywgImxpc3RzZXNzaW9uc19hbGwgKE15U1FMIHNlc3Npb24gZGIgYmFja2VuZCkgZmFpbGVk IHdpdGggZXhpdGNvZGU6ICRzdGgtPmVycigpIik7CisJCWRpZSgpOworCX0KKwlteSBAc2Vzc2lv bnMgPSBmZXRjaHJvd19hcnJheV9kYXRhc2V0cygkc3RoKTsKKwkkc3RoLT5maW5pc2goKTsKKwl1 bmRlZiAkZGJoOworCXJldHVybiBAc2Vzc2lvbnM7Cit9CisKK3N1YiBkYl9saXN0c2hhZG93c2Vz c2lvbnMKK3sKKwlteSAkZGJoID0gaW5pdF9kYigpOworCW15ICRzZXJ2ZXI9c2hpZnQgb3IgZGll ICJhcmd1bWVudCBcInNlcnZlclwiIG1pc3NlZCI7CisJbXkgQHN0cmluZ3M7CisJbXkgJHN0aD0k ZGJoLT5wcmVwYXJlKCJzZWxlY3QgYWdlbnRfcGlkLCBzZXNzaW9uX2lkLCBkaXNwbGF5LCBzZXJ2 ZXIsIHN0YXR1cywKKwkgICAgICAgICAgICAgICAgICAgICAgIERBVEVfRk9STUFUKGluaXRfdGlt ZSwgJyVZLSVtLSVkVCVIOiVJOiVTJyksCisJICAgICAgICAgICAgICAgICAgICAgICBjb29raWUs Y2xpZW50LGdyX3BvcnQsc291bmRfcG9ydCwKKwkgICAgICAgICAgICAgICAgICAgICAgIERBVEVf Rk9STUFUKGxhc3RfdGltZSwgJyVZLSVtLSVkVCVIOiVJOiVTJyksCisJICAgICAgICAgICAgICAg ICAgICAgICB1bmFtZSwKKwkgICAgICAgICAgICAgICAgICAgICAgIE1PRChVTklYX1RJTUVTVEFN UChOT1coKSkgLSBVTklYX1RJTUVTVEFNUChpbml0X3RpbWUpLCA4NjQwMCksZnNfcG9ydCBmcm9t ICBzZXNzaW9ucworCSAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgc3RhdHVzICE9J0YnIGFu ZCBzZXJ2ZXI9PyBhbmQgdW5hbWU9PworCSAgICAgICAgICAgICAgICAgICAgICAgYW5kICAoICBz ZXNzaW9uX2lkIGxpa2UgJyVYU0hBRCUnKSAgb3JkZXIgYnkgc3RhdHVzIGRlc2MiKTsKKwkkc3Ro LT5leGVjdXRlKCRzZXJ2ZXIsICRyZWFsdXNlcik7CisJaWYgKCRzdGgtPmVycigpKQorCXsKKwkJ c3lzbG9nKCdlcnJvcicsICJsaXN0c2Vzc2lvbnMgKE15U1FMIHNlc3Npb24gZGIgYmFja2VuZCkg ZmFpbGVkIHdpdGggZXhpdGNvZGU6ICRzdGgtPmVycigpIik7CisJCWRpZSgpOworCX0KKwlteSBA c2Vzc2lvbnMgPSBmZXRjaHJvd19hcnJheV9kYXRhc2V0cygkc3RoKTsKKwkkc3RoLT5maW5pc2go KTsKKwl1bmRlZiAkZGJoOworCXJldHVybiBAc2Vzc2lvbnM7Cit9CisKK3N1YiBkYl9saXN0c2hh ZG93c2Vzc2lvbnNfYWxsCit7CisJbXkgJGRiaCA9IGluaXRfZGIoKTsKKwlteSBAc3RyaW5nczsK KwlteSAkc3RoPSRkYmgtPnByZXBhcmUoInNlbGVjdCBhZ2VudF9waWQsIHNlc3Npb25faWQsIGRp c3BsYXksIHNlcnZlciwgc3RhdHVzLAorCSAgICAgICAgICAgICAgICAgICAgICAgREFURV9GT1JN QVQoaW5pdF90aW1lLCAnJVktJW0tJWRUJUg6JUk6JVMnKSwKKwkgICAgICAgICAgICAgICAgICAg ICAgIGNvb2tpZSxjbGllbnQsZ3JfcG9ydCxzb3VuZF9wb3J0LAorCSAgICAgICAgICAgICAgICAg ICAgICAgREFURV9GT1JNQVQobGFzdF90aW1lLCAnJVktJW0tJWRUJUg6JUk6JVMnKSwKKwkgICAg ICAgICAgICAgICAgICAgICAgIHVuYW1lLAorCSAgICAgICAgICAgICAgICAgICAgICAgTU9EKFVO SVhfVElNRVNUQU1QKE5PVygpKSAtIFVOSVhfVElNRVNUQU1QKGluaXRfdGltZSksIDg2NDAwKSxm c19wb3J0IGZyb20gIHNlc3Npb25zIAorCSAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgc3Rh dHVzICE9J0YnIGFuZCB1bmFtZT0/IGFuZCAgKCAgc2Vzc2lvbl9pZCBsaWtlICclWFNIQUQlJykg IG9yZGVyIGJ5IHN0YXR1cyBkZXNjIik7CisJCisJJHN0aC0+ZXhlY3V0ZSgkcmVhbHVzZXIpOwor CWlmICgkc3RoLT5lcnIoKSkKKwl7CisJCXN5c2xvZygnZXJyb3InLCAibGlzdHNlc3Npb25zX2Fs bCAoTXlTUUwgc2Vzc2lvbiBkYiBiYWNrZW5kKSBmYWlsZWQgd2l0aCBleGl0Y29kZTogJHN0aC0+ ZXJyKCkiKTsKKwkJZGllKCk7CisJfQorCW15IEBzZXNzaW9ucyA9IGZldGNocm93X2FycmF5X2Rh dGFzZXRzKCRzdGgpOworCSRzdGgtPmZpbmlzaCgpOworCXVuZGVmICRkYmg7CisJcmV0dXJuIEBz ZXNzaW9uczsKK30KKworc3ViIGNoZWNrX3Jvb3QKK3sKKwlpZiAoJHJlYWx1c2VyIG5lICJyb290 IikKKwl7CisJCWRpZSAiJHJlYWx1c2VyLCB5b3UgY2FuIG5vdCBkbyB0aGlzIGpvYiI7CisJfQor fQorCitzdWIgY2hlY2tfdXNlcgoreworCW15ICRzaWQ9c2hpZnQgb3IgZGllICJhcmd1bWVudCBc InNlc3Npb25faWRcIiBtaXNzZWQiOworCXJldHVybiBpZiAkcmVhbHVzZXIgZXEgInJvb3QiOwor CisJIyBzZXNzaW9uIGlkIGxvb2tzIGxpa2Ugc29tZXVzZXItNTEtMTMwNDAwNTg5NV9zdERnbm9t ZS1zZXNzaW9uX2RwMjQKKwkjIGR1cmluZyBEQiBpbnNlcnRzZXNzaW9uIGl0IG9ubHkgbG9va3Mg bGlrZSBzb21ldXNlci01MS0xMzA0MDA1ODk1CisKKwkjIGRlcml2ZSB0aGUgc2Vzc2lvbidzIHVz ZXIgZnJvbSB0aGUgc2Vzc2lvbiBuYW1lL2lkCisJbXkgJHVzZXIgPSAiJHNpZCI7CisKKwkjIGhh bmRsZSBBY3RpdmVEaXJlY3RvcnkgRG9tYWluIHVzZXIgYWNjb3VudHMgZ3JhY2VmdWxseQorCSRy ZWFsdXNlciA9fiBzL1xcLy87CisKKwkjIHBlcmZvcm0gdGhlIHVzZXIgY2hlY2sKKwkkdXNlciA9 fiBzLygkcmVhbHVzZXItWzAtOV17Mix9LVswLTldezEwLH1fc3QoRHxSKS4qfC4qLVswLTldezIs fS1bMC05XXsxMCx9X3N0UygwfDEpWFNIQUQkcmVhbHVzZXIuKikvJHJlYWx1c2VyLzsKKwkkdXNl ciBlcSAkcmVhbHVzZXIgb3IgZGllICIkcmVhbHVzZXIgaXMgbm90IGF1dGhvcml6ZWQiOworfQor CitzdWIgZmV0Y2hyb3dfYXJyYXlfZGF0YXNldHMKK3sKKwlteSAkc3RoID0gc2hpZnQ7CisJbXkg QGxpbmVzOworCW15IEBkYXRhOworCXdoaWxlIChAZGF0YSA9ICRzdGgtPmZldGNocm93X2FycmF5 KCkpCisJeworCQlwdXNoIEBsaW5lcywgam9pbignfCcsIEBkYXRhKTsKKwl9CisJcmV0dXJuIEBs aW5lczsKK30KKworMTsKZGlmZiAtLWdpdCBhL3gyZ29zZXJ2ZXIvc2Jpbi94MmdvZGJhZG1pbiBi L3gyZ29zZXJ2ZXIvc2Jpbi94MmdvZGJhZG1pbgppbmRleCBkM2M2MjY2Li5lNzQ2ZTQzIDEwMDc1 NQotLS0gYS94Mmdvc2VydmVyL3NiaW4veDJnb2RiYWRtaW4KKysrIGIveDJnb3NlcnZlci9zYmlu L3gyZ29kYmFkbWluCkBAIC02Myw2ICs2Myw5IEBACiAKIG15ICRDb25maWcgPSBnZXRfc3FsY29u ZmlnKCk7CiAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBTUUxpdGUgQmFj a2VuZAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiBpZiAoJENvbmZpZy0+cGFy YW0oImJhY2tlbmQiKSBlcSAnc3FsaXRlJykKIHsKIAlteSAkdXNlcj0ieDJnb3VzZXIiOwpAQCAt MjM2LDQ5NiArMjM5LDgyOSBAQAogCX0KIH0KIAotbXkgJGhvc3Q9JENvbmZpZy0+cGFyYW0oInBv c3RncmVzLmhvc3QiKTsKLW15ICRwb3J0PSRDb25maWctPnBhcmFtKCJwb3N0Z3Jlcy5wb3J0Iik7 Ci1teSAkc3NsbW9kZT0kQ29uZmlnLT5wYXJhbSgicG9zdGdyZXMuc3NsIik7Ci1pZiAoISRzc2xt b2RlKQotewotCSRzc2xtb2RlPSJwcmVmZXIiOwotfQotbXkgJGRiYWRtaW49JENvbmZpZy0+cGFy YW0oInBvc3RncmVzLmRiYWRtaW4iKTsKLW15ICR4MmdvYWRtaW49IngyZ29kYnVzZXIiOwotbXkg JHgyZ29hZG1pbnBhc3M9YHB3Z2VuIDggMWA7Ci1jaG9tcCAoJHgyZ29hZG1pbnBhc3MpOwotbXkg JGRiPSJ4MmdvX3Nlc3Npb25zIjsKIAotaWYgKCEkaG9zdCkKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworIyBNeVNRTCBCYWNrZW5kCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKK2lmICgkQ29uZmlnLT5wYXJhbSgiYmFja2VuZCIpIGVxICdteXNxbCcpCiB7Ci0J JGhvc3Q9J2xvY2FsaG9zdCc7Ci19Ci1pZiAoISRwb3J0KQotewotCSRwb3J0PSc1NDMyJzsKLX0K LWlmICghJGRiYWRtaW4pCi17Ci0JJGRiYWRtaW49J3Bvc3RncmVzJzsKLX0KLQotb3BlbiAoRkws IjwgL2V0Yy94MmdvL3gyZ29zcWwvcGFzc3dvcmRzL3BnYWRtaW4gIikgb3IgZGllICJDYW4ndCBy ZWFkIHBhc3N3b3JkIGZpbGUgL2V0Yy94MmdvL3gyZ29zcWwvcGFzc3dvcmRzL3BnYWRtaW4iOwot bXkgJGRiYWRtaW5wYXNzPTxGTD47Ci1jbG9zZShGTCk7Ci1jaG9tcCgkZGJhZG1pbnBhc3MpOwot Ci1pZiAoJHVwZGF0ZWRiKQotewotCSMgY2hlY2sgaWYgdGhlIERCIGFscmVhZHkgZXhpc3RzLCBp ZiBub3QsIGNyZWF0ZSBpdC4uLgotCW15ICRkYmg7Ci0JdW50aWwgKAotCQkkZGJoID0gREJJLT5j b25uZWN0KCJkYmk6UGc6ZGJuYW1lPSRkYjtob3N0PSRob3N0O3BvcnQ9JHBvcnQ7c3NsbW9kZT0k c3NsbW9kZSIsICIkZGJhZG1pbiIsICIkZGJhZG1pbnBhc3MiLHtBdXRvQ29tbWl0ID0+IDEsIFJh aXNlRXJyb3IgPT4gMCwgUHJpbnRFcnJvciA9PiAwfSkKLQkpIHsKLQkJJGNyZWF0ZWRiID0gMTsK LQkJbGFzdDsKLQl9OwotCWlmICghJGNyZWF0ZWRiKSB7Ci0JCSRkYmggPSBEQkktPmNvbm5lY3Qo ImRiaTpQZzpkYm5hbWU9JGRiO2hvc3Q9JGhvc3Q7cG9ydD0kcG9ydDtzc2xtb2RlPSRzc2xtb2Rl IiwgIiRkYmFkbWluIiwgIiRkYmFkbWlucGFzcyIse0F1dG9Db21taXQgPT4gMX0pOwotCQlpZiAo JGRiaCkgewotCQkJbXkgJHVwZGF0ZV92aWV3c19uX3J1bGVzID0gMDsKLQkJCW15ICRzdGhfdGVr aWN0cmw7Ci0JCQlteSAkc3RoX3Rla2lkYXRhOwotCQkJbXkgJHN0aF91cGRhdGU7Ci0JCQl0cnkg ewotCQkJCSRzdGhfdGVraWN0cmwgPSAkZGJoLT5wcmVwYXJlKCIKLQkJCQkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxlY3QgdGVraWN0cmxfcG9ydCBmcm9tIHNlc3Npb25zCi0JCQkJ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIik7Ci0JCQkJJHN0aF90ZWtpY3RybC0+ZXhl Y3V0ZSgpOwotCQkJfSBjYXRjaCB7Ci0JCQkJcHJpbnQgIkFERElORzogdGVraWN0cmxfcG9ydCBj b2x1bW4gdG8gdGFibGUgc2Vzc2lvbnNcbiI7Ci0JCQkJJHN0aF90ZWtpY3RybCA9ICRkYmgtPnBy ZXBhcmUoIgotCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVyIHRhYmxlIHNl c3Npb25zCi0JCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkIGNvbHVtbiB0ZWtp Y3RybF9wb3J0IGludAotCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpOwotCQkJ CSRzdGhfdGVraWN0cmwtPmV4ZWN1dGUoKSBvciBkaWU7Ci0JCQkJJHN0aF90ZWtpY3RybC0+Zmlu aXNoKCk7Ci0JCQkJJHVwZGF0ZV92aWV3c19uX3J1bGVzID0gMTsKLQkJCX07Ci0JCQl0cnkgewot CQkJCSRzdGhfdGVraWRhdGEgPSAkZGJoLT5wcmVwYXJlKCIKLQkJCQkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZWxlY3QgdGVraWRhdGFfcG9ydCBmcm9tIHNlc3Npb25zCi0JCQkJICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIik7Ci0JCQkJJHN0aF90ZWtpZGF0YS0+ZXhlY3V0 ZSgpOwotCQkJfSBjYXRjaCB7Ci0JCQkJcHJpbnQgIkFERElORzogdGVraWRhdGFfcG9ydCBjb2x1 bW4gdG8gdGFibGUgc2Vzc2lvbnNcbiI7Ci0JCQkJJHN0aF90ZWtpZGF0YT0kZGJoLT5wcmVwYXJl KCIKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0ZXIgdGFibGUgc2Vzc2lvbnMK LQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkIGNvbHVtbiB0ZWtpZGF0YV9wb3J0 IGludAotCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKTsKLQkJCQkkc3RoX3Rla2lk YXRhLT5leGVjdXRlKCkgb3IgZGllOwotCQkJCSRzdGhfdGVraWRhdGEtPmZpbmlzaCgpOwotCQkJ CSR1cGRhdGVfdmlld3Nfbl9ydWxlcyA9IDE7Ci0JCQl9OwotCi0JCQlpZiAoJHVwZGF0ZV92aWV3 c19uX3J1bGVzKQotCQkJewotCQkJCXByaW50ICJVUERBVElORyBWSUVXOiBzZXNzaW9uc192aWV3 XG4iOwotCQkJCSRzdGhfdXBkYXRlPSRkYmgtPnByZXBhcmUoIgotCQkJCSAgICAgICAgICAgICAg ICAgICAgICAgICAgY3JlYXRlIG9yIHJlcGxhY2UgVklFVyBzZXNzaW9uc192aWV3IGFzCi0JCQkJ ICAgICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QKLQkJCQkgICAgICAgICAgICAgICAgICAg ICAgICAgIGFnZW50X3BpZCwgc2Vzc2lvbl9pZCwgZGlzcGxheSwgc2VydmVyLCBzdGF0dXMsIGlu aXRfdGltZSwgY29va2llLCBjbGllbnQsIGdyX3BvcnQsCi0JCQkJICAgICAgICAgICAgICAgICAg ICAgICAgICBzb3VuZF9wb3J0LCBsYXN0X3RpbWUsIHVuYW1lLCBmc19wb3J0LCB0ZWtpY3RybF9w b3J0LCB0ZWtpZGF0YV9wb3J0IGZyb20gc2Vzc2lvbnMKLQkJCQkgICAgICAgICAgICAgICAgICAg ICAgICAgIHdoZXJlIGNyZWF0b3JfaWQgPSBjdXJyZW50X3VzZXIKLQkJCQkgICAgICAgICAgICAg ICAgICAgICAgICAgICIpOwotCQkJCSRzdGhfdXBkYXRlLT5leGVjdXRlKCkgb3IgZGllOwotCQkJ CXByaW50ICJVUERBVElORyBSVUxFOiB1cGRhdGVfc2Vzc192aWV3XG4iOwotCQkJCSRzdGhfdXBk YXRlPSRkYmgtPnByZXBhcmUoIgotCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRl IG9yIHJlcGxhY2UgUlVMRSB1cGRhdGVfc2Vzc192aWV3IEFTIE9OIFVQREFURQotCQkJCSAgICAg ICAgICAgICAgICAgICAgICAgICAgVE8gc2Vzc2lvbnNfdmlldyBETyBJTlNURUFECi0JCQkJICAg ICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUgc2Vzc2lvbnMgc2V0Ci0JCQkJICAgICAgICAg ICAgICAgICAgICAgICAgICBzdGF0dXM9TkVXLnN0YXR1cywKLQkJCQkgICAgICAgICAgICAgICAg ICAgICAgICAgIGxhc3RfdGltZT1ORVcubGFzdF90aW1lLAotCQkJCSAgICAgICAgICAgICAgICAg ICAgICAgICAgY29va2llPU5FVy5jb29raWUsCi0JCQkJICAgICAgICAgICAgICAgICAgICAgICAg ICBhZ2VudF9waWQ9TkVXLmFnZW50X3BpZCwKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAg IGNsaWVudD1ORVcuY2xpZW50LAotCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JfcG9y dD1ORVcuZ3JfcG9ydCwKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdW5kX3BvcnQ9 TkVXLnNvdW5kX3BvcnQsCi0JCQkJICAgICAgICAgICAgICAgICAgICAgICAgICBmc19wb3J0PU5F Vy5mc19wb3J0LAotCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgdGVraWN0cmxfcG9ydD1O RVcudGVraWN0cmxfcG9ydCwKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgIHRla2lkYXRh X3BvcnQ9TkVXLnRla2lkYXRhX3BvcnQKLQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgIHdo ZXJlIHNlc3Npb25faWQ9T0xELnNlc3Npb25faWQgYW5kIGNyZWF0b3JfaWQ9Y3VycmVudF91c2Vy Ci0JCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAiKTsKLQkJCQkkc3RoX3VwZGF0ZS0+ZXhl Y3V0ZSgpIG9yIGRpZTsKLQkJCQkkc3RoX3VwZGF0ZS0+ZmluaXNoKCk7CisJbXkgJGhvc3Q9JENv bmZpZy0+cGFyYW0oIm15c3FsLmhvc3QiKTsKKwlteSAkcG9ydD0kQ29uZmlnLT5wYXJhbSgibXlz cWwucG9ydCIpOworCW15ICR1bmV0PSRDb25maWctPnBhcmFtKCJteXNxbC51bmV0Iik7CisJbXkg JGRiYWRtaW49JENvbmZpZy0+cGFyYW0oIm15c3FsLmRiYWRtaW4iKTsKKwlteSAkeDJnb2FkbWlu PSJ4MmdvZGJ1c2VyIjsKKwlteSAkeDJnb2FkbWlucGFzcz1gcHdnZW4gOCAxYDsKKwljaG9tcCAo JHgyZ29hZG1pbnBhc3MpOworCW15ICRkYj0ieDJnb19zZXNzaW9ucyI7CisJCisJaWYgKCEkaG9z dCkKKwl7CisJCSRob3N0PSdsb2NhbGhvc3QnOworCX0KKwlpZiAoISRwb3J0KQorCXsKKwkJJHBv cnQ9JzMzMDYnOworCX0KKwlpZiAoISRkYmFkbWluKQorCXsKKwkJJGRiYWRtaW49J3Jvb3QnOwor CX0KKwkKKwlvcGVuIChGTCwiPCAvZXRjL3gyZ28veDJnb3NxbC9wYXNzd29yZHMvbXlhZG1pbiAi KSBvciBkaWUgIkNhbid0IHJlYWQgcGFzc3dvcmQgZmlsZSAvZXRjL3gyZ28veDJnb3NxbC9wYXNz d29yZHMvbXlhZG1pbiI7CisJbXkgJGRiYWRtaW5wYXNzPTxGTD47CisJY2xvc2UoRkwpOworCWNo b21wKCRkYmFkbWlucGFzcyk7CisJCisJaWYgKCR1cGRhdGVkYikKKwl7CisJCSMgY2hlY2sgaWYg dGhlIERCIGFscmVhZHkgZXhpc3RzLCBpZiBub3QsIGNyZWF0ZSBpdC4uLgorCQlteSAkZGJoOwor CQl1bnRpbCAoCisJCQkkZGJoID0gREJJLT5jb25uZWN0KCJkYmk6bXlzcWw6ZGF0YWJhc2U9JGRi O2hvc3Q9JGhvc3Q7cG9ydD0kcG9ydCIsIiRkYmFkbWluIiwiJGRiYWRtaW5wYXNzIix7UmFpc2VF cnJvciA9PiAxfSkKKwkJKSB7CisJCQkkY3JlYXRlZGIgPSAxOworCQkJbGFzdDsKKwkJfTsKKwkJ aWYgKCEkY3JlYXRlZGIpIHsKKwkJCSRkYmggPSBEQkktPmNvbm5lY3QoImRiaTpteXNxbDpkYXRh YmFzZT0kZGI7aG9zdD0kaG9zdDtwb3J0PSRwb3J0IiwiJGRiYWRtaW4iLCIkZGJhZG1pbnBhc3Mi LHtSYWlzZUVycm9yID0+IDF9KTsKKwkJCWlmICgkZGJoKSB7CisJCQkJbXkgJHVwZGF0ZV92aWV3 c19uX3J1bGVzID0gMDsKKwkJCQlteSAkc3RoX3Rla2ljdHJsOworCQkJCW15ICRzdGhfdGVraWRh dGE7CisJCQkJbXkgJHN0aF91cGRhdGU7CisJCQkJdHJ5IHsKKwkJCQkJJHN0aF90ZWtpY3RybCA9 ICRkYmgtPnByZXBhcmUoIgorCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxl Y3QgdGVraWN0cmxfcG9ydCBmcm9tIHNlc3Npb25zCisJCQkJCSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICIpOworCQkJCQkkc3RoX3Rla2ljdHJsLT5leGVjdXRlKCk7CisJCQkJfSBjYXRj aCB7CisJCQkJCXByaW50ICJBRERJTkc6IHRla2ljdHJsX3BvcnQgY29sdW1uIHRvIHRhYmxlIHNl c3Npb25zXG4iOworCQkJCQkkc3RoX3Rla2ljdHJsID0gJGRiaC0+cHJlcGFyZSgiCisJCQkJCSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVyIHRhYmxlIHNlc3Npb25zCisJCQkJCSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCBjb2x1bW4gdGVraWN0cmxfcG9ydCBpbnQK KwkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIik7CisJCQkJCSRzdGhfdGVraWN0 cmwtPmV4ZWN1dGUoKSBvciBkaWU7CisJCQkJCSRzdGhfdGVraWN0cmwtPmZpbmlzaCgpOworCQkJ CQkkdXBkYXRlX3ZpZXdzX25fcnVsZXMgPSAxOworCQkJCX07CisJCQkJdHJ5IHsKKwkJCQkJJHN0 aF90ZWtpZGF0YSA9ICRkYmgtPnByZXBhcmUoIgorCQkJCQkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZWxlY3QgdGVraWRhdGFfcG9ydCBmcm9tIHNlc3Npb25zCisJCQkJCSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICIpOworCQkJCQkkc3RoX3Rla2lkYXRhLT5leGVjdXRlKCk7 CisJCQkJfSBjYXRjaCB7CisJCQkJCXByaW50ICJBRERJTkc6IHRla2lkYXRhX3BvcnQgY29sdW1u IHRvIHRhYmxlIHNlc3Npb25zXG4iOworCQkJCQkkc3RoX3Rla2lkYXRhPSRkYmgtPnByZXBhcmUo IgorCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0ZXIgdGFibGUgc2Vzc2lvbnMK KwkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCBjb2x1bW4gdGVraWRhdGFfcG9y dCBpbnQKKwkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpOworCQkJCQkkc3RoX3Rl a2lkYXRhLT5leGVjdXRlKCkgb3IgZGllOworCQkJCQkkc3RoX3Rla2lkYXRhLT5maW5pc2goKTsK KwkJCQkJJHVwZGF0ZV92aWV3c19uX3J1bGVzID0gMTsKKwkJCQl9OwogCQkJfQorCQkJaWYgKCRk YmgpIHsKKwkJCQl1bmRlZiAkZGJoOworCQkJfQorCQkJZXhpdCgwKTsKKwkJfSBlbHNlIHsKKwkJ CXByaW50ICJObyBzZXNzaW9uIERCIGZvdW5kLiBVc2UgLS1jcmVhdGVkYiBpbnN0ZWFkIG9mIC0t dXBkYXRlZGIuXG4iOwogCQl9Ci0JCWlmICgkZGJoKSB7Ci0JCQl1bmRlZiAkZGJoOwotCQl9CisJ fQorCQorCWlmICgkY3JlYXRlZGIpCisJeworCQlteV9jcmVhdGVfZGF0YWJhc2UoKTsKKwkJbXlf Y3JlYXRlX3RhYmxlcygpOwogCQlleGl0KDApOwotCX0gZWxzZSB7Ci0JCXByaW50ICJObyBzZXNz aW9uIERCIGZvdW5kLiBVc2UgLS1jcmVhdGVkYiBpbnN0ZWFkIG9mIC0tdXBkYXRlZGIuXG4iOwog CX0KLX0KLQotaWYgKCRjcmVhdGVkYikKLXsKLQljcmVhdGVfZGF0YWJhc2UoKTsKLQljcmVhdGVf dGFibGVzKCk7Ci0JZXhpdCgwKTsKLX0KLQotaWYgKCRsaXN0dXNlcnMpCi17Ci0JbGlzdF91c2Vy cygpOwotCWV4aXQoMCk7Ci19Ci0KLW15ICRkYmg9REJJLT5jb25uZWN0KCJkYmk6UGc6ZGJuYW1l PSRkYjtob3N0PSRob3N0O3BvcnQ9JHBvcnQ7c3NsbW9kZT0kc3NsbW9kZSIsICIkZGJhZG1pbiIs ICIkZGJhZG1pbnBhc3MiLHtBdXRvQ29tbWl0ID0+IDF9KSBvciBkaWUgJF87Ci1pZiAoJGFkZHVz ZXIpCi17Ci0JYWRkX3VzZXIoJGFkZHVzZXIpOwotfQotCi1pZiAoJGFkZGdyb3VwKQotewotCW15 ICgkbmFtZSwgJHBhc3N3ZCwgJGdpZCwgJG1lbWJlcnMpID0gZ2V0Z3JuYW0oICRhZGRncm91cCk7 Ci0JbXkgQGdycF9tZW1iZXJzPXNwbGl0KCcgJywkbWVtYmVycyk7Ci0JZm9yZWFjaCAoQGdycF9t ZW1iZXJzKQorCQorCWlmICgkbGlzdHVzZXJzKQogCXsKLQkJY2hvbXAoJF8pOwotCQlhZGRfdXNl cigkXyk7CisJCW15X2xpc3RfdXNlcnMoKTsKKwkJZXhpdCgwKTsKIAl9Ci19Ci0KLWlmICgkcm11 c2VyKQotewotCXJtX3VzZXIoJHJtdXNlcik7Ci19Ci0KLWlmICgkcm1ncm91cCkKLXsKLQlteSAo JG5hbWUsICRwYXNzd2QsICRnaWQsICRtZW1iZXJzKSA9IGdldGdybmFtKCAkcm1ncm91cCk7Ci0J bXkgQGdycF9tZW1iZXJzPXNwbGl0KCcgJywkbWVtYmVycyk7Ci0JZm9yZWFjaCAoQGdycF9tZW1i ZXJzKQorCQorCW15ICRkYmg9REJJLT5jb25uZWN0KCJkYmk6bXlzcWw6ZGF0YWJhc2U9JGRiO2hv c3Q9JGhvc3Q7cG9ydD0kcG9ydCIsIiRkYmFkbWluIiwiJGRiYWRtaW5wYXNzIix7UmFpc2VFcnJv ciA9PiAxfSkgb3IgZGllICRfOworCWlmICgkYWRkdXNlcikKIAl7Ci0JCWNob21wKCRfKTsKLQkJ cm1fdXNlcigkXyk7CisJCW15X2FkZF91c2VyKCRhZGR1c2VyKTsKIAl9Ci19Ci11bmRlZiAkZGJo OwotCi1zdWIgbGlzdF91c2VycygpCi17Ci0JbXkgJGRiaD1EQkktPmNvbm5lY3QoImRiaTpQZzpk Ym5hbWU9cG9zdGdyZXM7aG9zdD0kaG9zdDtwb3J0PSRwb3J0O3NzbG1vZGU9JHNzbG1vZGUiLCAi JGRiYWRtaW4iLCAiJGRiYWRtaW5wYXNzIix7QXV0b0NvbW1pdCA9PiAxfSkgb3IgZGllICRfOwot CW15ICRzdGg9JGRiaC0+cHJlcGFyZSgic2VsZWN0IHJvbG5hbWUgZnJvbSBwZ19yb2xlcyB3aGVy ZSByb2xuYW1lIGxpa2UgJ3gyZ291c2VyXyUnIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpb3IgZGllOwot CXByaW50ZiAoIiUtMjBzIERCIHVzZXJcbiIsIlVOSVggdXNlciIpOwotCXByaW50ICItLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7Ci0JbXkgQGRhdGE7Ci0Jd2hpbGUg KEBkYXRhID0gJHN0aC0+ZmV0Y2hyb3dfYXJyYXkpCisJCisJaWYgKCRhZGRncm91cCkKIAl7Ci0J CUBkYXRhWzBdPX5zL3gyZ291c2VyXy8vOwotCQlwcmludGYgKCIlLTIwcyB4MmdvdXNlcl9AZGF0 YVswXVxuIixAZGF0YVswXSk7CisJCW15ICgkbmFtZSwgJHBhc3N3ZCwgJGdpZCwgJG1lbWJlcnMp ID0gZ2V0Z3JuYW0oICRhZGRncm91cCk7CisJCW15IEBncnBfbWVtYmVycz1zcGxpdCgnICcsJG1l bWJlcnMpOworCQlmb3JlYWNoIChAZ3JwX21lbWJlcnMpCisJCXsKKwkJCWNob21wKCRfKTsKKwkJ CW15X2FkZF91c2VyKCRfKTsKKwkJfQogCX0KLQkkc3RoLT5maW5pc2goKTsKKwkKKwlpZiAoJHJt dXNlcikKKwl7CisJCW15X3JtX3VzZXIoJHJtdXNlcik7CisJfQorCQorCWlmICgkcm1ncm91cCkK Kwl7CisJCW15ICgkbmFtZSwgJHBhc3N3ZCwgJGdpZCwgJG1lbWJlcnMpID0gZ2V0Z3JuYW0oICRy bWdyb3VwKTsKKwkJbXkgQGdycF9tZW1iZXJzPXNwbGl0KCcgJywkbWVtYmVycyk7CisJCWZvcmVh Y2ggKEBncnBfbWVtYmVycykKKwkJeworCQkJY2hvbXAoJF8pOworCQkJbXlfcm1fdXNlcigkXyk7 CisJCX0KKwl9CiAJdW5kZWYgJGRiaDsKLX0KLQotc3ViIHJtX3VzZXIoKQotewotCW15ICR1c2Vy PXNoaWZ0OwotCi0JcHJpbnQgKCJybSBEQiB1c2VyIFwieDJnb3VzZXJfJHVzZXJcIlxuIik7Ci0K LQlteSAkc3RoPSRkYmgtPnByZXBhcmUoIlJFVk9LRSBBTEwgUFJJVklMRUdFUyBPTiBzZXNzaW9u cywgdXNlZF9wb3J0cywgbW91bnRzIEZST00gXCJ4MmdvdXNlcl8kdXNlclwiIik7Ci0JJHN0aC0+ ZXhlY3V0ZSgpOwotCi0JbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJSRVZPS0UgQUxMIFBSSVZJTEVH RVMgT04gc2Vzc2lvbnNfdmlldywgbW91bnRzX3ZpZXcsIHNlcnZlcnNfdmlldywgcG9ydHNfdmll dyBGUk9NIFwieDJnb3VzZXJfJHVzZXJcIiIpOwotCSRzdGgtPmV4ZWN1dGUoKTsKLQotCW15ICRz dGg9JGRiaC0+cHJlcGFyZSgiRFJPUCBPV05FRCBCWSBcIngyZ291c2VyXyR1c2VyXCIiKTsKLQkk c3RoLT5leGVjdXRlKCk7Ci0KLQlteSAkc3RoPSRkYmgtPnByZXBhcmUoImRyb3AgVVNFUiBpZiBl eGlzdHMgXCJ4MmdvdXNlcl8kdXNlclwiIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpOwotCSRzdGgtPmZp bmlzaCgpOwotCi0JbXkgKCRuYW1lLCAkcGFzcywgJHVpZCwgJHBnaWQsICRxdW90YSwgJGNvbW1l bnQsICRnY29zLCAkZGlyLCAkc2hlbGwsICRleHBpcmUpID0gZ2V0cHduYW0oJHVzZXIpOwotCWlm ICghICR1aWQpCisJCisJc3ViIG15X2xpc3RfdXNlcnMoKQogCXsKLQkJcmV0dXJuOworCQlteSAk ZGJoPURCSS0+Y29ubmVjdCgiZGJpOm15c3FsOmRhdGFiYXNlPSRkYjtob3N0PSRob3N0O3BvcnQ9 JHBvcnQiLCIkZGJhZG1pbiIsIiRkYmFkbWlucGFzcyIse1JhaXNlRXJyb3IgPT4gMX0pIG9yIGRp ZSAkXzsKKwkJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJzZWxlY3QgdXNlciBmcm9tIG15c3FsLnVz ZXIgd2hlcmUgdXNlciBsaWtlICd4MmdvdXNlcl8lJyIpOworCQkkc3RoLT5leGVjdXRlKClvciBk aWU7CisJCXByaW50ZiAoIiUtMjBzIERCIHVzZXJcbiIsIlVOSVggdXNlciIpOworCQlwcmludCAi LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iOworCQlteSBAZGF0YTsK KwkJd2hpbGUgKEBkYXRhID0gJHN0aC0+ZmV0Y2hyb3dfYXJyYXkpCisJCXsKKwkJCUBkYXRhWzBd PX5zL3gyZ291c2VyXy8vOworCQkJcHJpbnRmICgiJS0yMHMgeDJnb3VzZXJfQGRhdGFbMF1cbiIs QGRhdGFbMF0pOworCQl9CisJCSRzdGgtPmZpbmlzaCgpOworCQl1bmRlZiAkZGJoOwogCX0KLQlp ZiAoIC1lICIkZGlyLy54MmdvL3NxbHBhc3MiICkKKwkKKwlzdWIgbXlfcm1fdXNlcigpCiAJewot CQl1bmxpbmsoIiRkaXIvLngyZ28vc3FscGFzcyIpOworCQlteSAkdXNlcj1zaGlmdDsKKwkKKwkJ cHJpbnQgKCJybSBEQiB1c2VyIFwieDJnb3VzZXJfJHVzZXJcIlxuIik7CisKKwkJbXkgJHN0aD0k ZGJoLT5wcmVwYXJlKCJEUk9QIFVTRVIgSUYgRVhJU1RTIGB4MmdvdXNlcl8kdXNlcmBAYCR1bmV0 YCIpOworCQkkc3RoLT5leGVjdXRlKCk7CisJCSRzdGgtPmZpbmlzaCgpOworCisJCW15ICgkbmFt ZSwgJHBhc3MsICR1aWQsICRwZ2lkLCAkcXVvdGEsICRjb21tZW50LCAkZ2NvcywgJGRpciwgJHNo ZWxsLCAkZXhwaXJlKSA9IGdldHB3bmFtKCR1c2VyKTsKKwkJaWYgKCEgJHVpZCkKKwkJeworCQkJ cmV0dXJuOworCQl9CisJCWlmICggLWUgIiRkaXIvLngyZ28vc3FscGFzcyIgKQorCQl7CisJCQl1 bmxpbmsoIiRkaXIvLngyZ28vc3FscGFzcyIpOworCQl9CisJfQorCQorCXN1YiBteV9hZGRfdXNl cigpCisJeworCQlteSAkdXNlcj1zaGlmdDsKKworCQlteSAoJG5hbWUsICRwYXNzLCAkdWlkLCAk cGdpZCwgJHF1b3RhLCAkY29tbWVudCwgJGdjb3MsICRkaXIsICRzaGVsbCwgJGV4cGlyZSkgPSBn ZXRwd25hbSgkdXNlcik7CisJCWlmICghICRuYW1lKQorCQl7CisJCQlwcmludCAiQ2Fubm90IGZp bmQgdXNlciAoJHVzZXIpXG4iOworCQkJcmV0dXJuOworCQl9IGVsc2lmICgkbmFtZSBlcSAicm9v dCIpIHsKKwkJCXByaW50ICJUaGUgc3VwZXItdXNlciBcInJvb3RcIiBpcyBub3QgYWxsb3dlZCB0 byB1c2UgWDJHb1xuIjsKKwkJCXJldHVybjsKKwkJfQorCQkkcGFzcz1gcHdnZW4gOCAxYDsKKwkJ Y2hvbXAoJHBhc3MpOworCisJCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiRFJPUCBVU0VSIElGIEVY SVNUUyBgeDJnb3VzZXJfJHVzZXJgQGAkdW5ldGAiKTsKKwkJJHN0aC0+e1dhcm59PTA7CisJCSRz dGgtPntQcmludEVycm9yfT0wOworCQkkc3RoLT5leGVjdXRlKCk7CisKKwkJcHJpbnQgKCJjcmVh dGUgREIgdXNlciBcIngyZ291c2VyXyR1c2VyXCJcbiIpOworCQkkc3RoPSRkYmgtPnByZXBhcmUo IkNSRUFURSBVU0VSIGB4MmdvdXNlcl8kdXNlcmBAYCR1bmV0YCBJREVOVElGSUVEIEJZICckcGFz cyciKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpOworCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiR1JBTlQg U0VMRUNULCBJTlNFUlQsIFVQREFURSwgREVMRVRFIE9OICogVE8gYHgyZ291c2VyXyR1c2VyYEBg JHVuZXRgIik7CisJCSRzdGgtPmV4ZWN1dGUoKTsKKworCQkkc3RoLT5maW5pc2goKTsKKwkKKwkJ aWYgKCEgLWQgIiRkaXIvLngyZ28iICkKKwkJeworCQkJCWlmICggZGVmaW5lZCAoJkZpbGU6OlBh dGg6Om1ha2VfcGF0aCkgKQorCQkJCXsKKwkJCQkJRmlsZTo6UGF0aDo6bWFrZV9wYXRoKCIkZGly Ly54MmdvIik7CisJCQkJfQorCQkJCWVsc2lmICggZGVmaW5lZCAoJkZpbGU6OlBhdGg6Om1rcGF0 aCkgKQorCQkJCXsKKwkJCQkJRmlsZTo6UGF0aDo6bWtwYXRoKCIkZGlyLy54MmdvIik7CisJCQkJ fQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCWRpZSAiVW5hYmxlIHRvIGNyZWF0ZSBmb2xkZXJzIHdp dGggRmlsZTo6UGF0aCI7CisJCQkJfQorCQl9CisJCisJCSNzYXZlIHVzZXIgcGFzc3dvcmQKKwkJ b3BlbiAoRkwsIj4gJGRpci8ueDJnby9zcWxwYXNzIikgb3IgZGllICJDYW4ndCBvcGVuIHBhc3N3 b3JkIGZpbGUgJGRpci8ueDJnby9zcWxwYXNzIjsKKwkJcHJpbnQgRkwgJHBhc3M7CisJCWNsb3Nl KEZMKTsKKwkJY2htb2QoMDcwMCwiJGRpci8ueDJnbyIpOworCQljaG93bigkdWlkLCRwZ2lkLCIk ZGlyLy54MmdvIik7CisJCWNobW9kKDA2MDAsIiRkaXIvLngyZ28vc3FscGFzcyIpOworCQljaG93 bigkdWlkLCRwZ2lkLCIkZGlyLy54MmdvL3NxbHBhc3MiKTsKKwl9CisJCisJc3ViIG15X2NyZWF0 ZV90YWJsZXMoKQorCXsKKwkJJGRiaD1EQkktPmNvbm5lY3QoImRiaTpteXNxbDpkYXRhYmFzZT0k ZGI7aG9zdD0kaG9zdDtwb3J0PSRwb3J0IiwiJGRiYWRtaW4iLCIkZGJhZG1pbnBhc3MiLHtSYWlz ZUVycm9yID0+IDF9KSBvciBkaWUgJF87CisJCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiCisJCSAg ICAgICAgICAgICAgICAgICAgICBDUkVBVEUgVEFCTEUgYHNlc3Npb25zYCAoCisJCSAgICAgICAg ICAgICAgICAgICAgICBgc2Vzc2lvbl9pZGAgdmFyY2hhcig1MDApIE5PVCBOVUxMLAorCQkgICAg ICAgICAgICAgICAgICAgICAgYGRpc3BsYXlgIGludCgxMSkgTk9UIE5VTEwsCisJCSAgICAgICAg ICAgICAgICAgICAgICBgdW5hbWVgIHZhcmNoYXIoMTAwKSBOT1QgTlVMTCwKKwkJICAgICAgICAg ICAgICAgICAgICAgIGBzZXJ2ZXJgIHZhcmNoYXIoMTAwKSBOT1QgTlVMTCwKKwkJICAgICAgICAg ICAgICAgICAgICAgIGBjbGllbnRgIHZhcmNoYXIoMjApIERFRkFVTFQgTlVMTCwKKwkJICAgICAg ICAgICAgICAgICAgICAgIGBzdGF0dXNgIGNoYXIoMSkgTk9UIE5VTEwgREVGQVVMVCAnUicsCisJ CSAgICAgICAgICAgICAgICAgICAgICBgaW5pdF90aW1lYCBkYXRldGltZSBOT1QgTlVMTCBERUZB VUxUIENVUlJFTlRfVElNRVNUQU1QLAorCQkgICAgICAgICAgICAgICAgICAgICAgYGxhc3RfdGlt ZWAgZGF0ZXRpbWUgTk9UIE5VTEwgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUCwKKwkJICAgICAg ICAgICAgICAgICAgICAgIGBjb29raWVgIGNoYXIoNDUpIERFRkFVTFQgTlVMTCwKKwkJICAgICAg ICAgICAgICAgICAgICAgIGBhZ2VudF9waWRgIGludCgxMSkgREVGQVVMVCBOVUxMLAorCQkgICAg ICAgICAgICAgICAgICAgICAgYGdyX3BvcnRgIGludCgxMSkgREVGQVVMVCBOVUxMLAorCQkgICAg ICAgICAgICAgICAgICAgICAgYHNvdW5kX3BvcnRgIGludCgxMSkgREVGQVVMVCBOVUxMLAorCQkg ICAgICAgICAgICAgICAgICAgICAgYGZzX3BvcnRgIGludCgxMSkgREVGQVVMVCBOVUxMLAorCQkg ICAgICAgICAgICAgICAgICAgICAgYHRla2ljdHJsX3BvcnRgIGludCgxMSkgREVGQVVMVCBOVUxM LAorCQkgICAgICAgICAgICAgICAgICAgICAgYHRla2lkYXRhX3BvcnRgIGludCgxMSkgREVGQVVM VCBOVUxMLAorCQkgICAgICAgICAgICAgICAgICAgICAgUFJJTUFSWSBLRVkgKGBzZXNzaW9uX2lk YCksCisJCSAgICAgICAgICAgICAgICAgICAgICBVTklRVUUgS0VZIGBkaXNwbGF5X1VOSVFVRWAg KGBkaXNwbGF5YCkpCisJCSAgICAgICAgICAgICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0 ZSgpIG9yIGRpZTsKKworCQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAgICAgICAgICAgICAg ICAgQ1JFQVRFIFRBQkxFIGBtZXNzYWdlc2AgKAorCQkgICAgICAgICAgICAgICAgICAgYG1lc3Nf aWRgIHZhcmNoYXIoMjApIE5PVCBOVUxMLAorCQkgICAgICAgICAgICAgICAgICAgYG1lc2FnZWAg bG9uZ3RleHQsCisJCSAgICAgICAgICAgICAgICAgICBQUklNQVJZIEtFWSAoYG1lc3NfaWRgKSkK KwkJICAgICAgICAgICAgICAgICAgICIpOworCQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOworCQor CQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAgICAgICAgICAgICAgICAgQ1JFQVRFIFRBQkxF IGB1c2VyX21lc3NhZ2VzYCAoCisJCSAgICAgICAgICAgICAgICAgICBgbWVzc19pZGAgdmFyY2hh cigyMCkgTk9UIE5VTEwsCisJCSAgICAgICAgICAgICAgICAgICBgdW5hbWVgIHZhcmNoYXIoMTAw KSBOT1QgTlVMTCwKKwkJICAgICAgICAgICAgICAgICAgIFBSSU1BUlkgS0VZIChgbWVzc19pZGAp KQorCQkgICAgICAgICAgICAgICAgICAgIik7CisJCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7CisJ CisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiCisJCSAgICAgICAgICAgICAgICAgICBDUkVBVEUgVEFC TEUgYHVzZWRfcG9ydHNgICgKKwkJICAgICAgICAgICAgICAgICAgIGBzZXJ2ZXJgIHZhcmNoYXIo MTAwKSBOT1QgTlVMTCwKKwkJICAgICAgICAgICAgICAgICAgIGBzZXNzaW9uX2lkYCB2YXJjaGFy KDUwMCkgREVGQVVMVCBOVUxMLAorCQkgICAgICAgICAgICAgICAgICAgYHBvcnRgIGludCgxMSkg Tk9UIE5VTEwsCisJCSAgICAgICAgICAgICAgICAgICBQUklNQVJZIEtFWSAoYHBvcnRgKSwKKwkJ ICAgICAgICAgICAgICAgICAgIEtFWSBgdXNlZF9wb3J0c19zZXNzaW9uX2lkX2ZrZXlfaWR4YCAo YHNlc3Npb25faWRgKSwKKwkJICAgICAgICAgICAgICAgICAgIENPTlNUUkFJTlQgYHVzZWRfcG9y dHNfc2Vzc2lvbl9pZF9ma2V5YCBGT1JFSUdOIEtFWSAoYHNlc3Npb25faWRgKSBSRUZFUkVOQ0VT IGBzZXNzaW9uc2AgKGBzZXNzaW9uX2lkYCkgT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRFIE5P IEFDVElPTikKKwkJICAgICAgICAgICAgICAgICAgICIpOworCQkkc3RoLT5leGVjdXRlKCkgb3Ig ZGllOworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAgICAgICAgICAgICAgICAgQ1JF QVRFIFRBQkxFIGBtb3VudHNgICgKKwkJICAgICAgICAgICAgICAgICAgIGBpZGAgaW50KDExKSBO T1QgTlVMTCBBVVRPX0lOQ1JFTUVOVCwKKwkJICAgICAgICAgICAgICAgICAgIGBzZXNzaW9uX2lk YCB2YXJjaGFyKDUwMCkgREVGQVVMVCBOVUxMLAorCQkgICAgICAgICAgICAgICAgICAgYHBhdGhg IHZhcmNoYXIoNTEyKSBOT1QgTlVMTCwKKwkJICAgICAgICAgICAgICAgICAgIGBjbGllbnRgIHZh cmNoYXIoMjApIE5PVCBOVUxMLAorCQkgICAgICAgICAgICAgICAgICAgUFJJTUFSWSBLRVkgKGBp ZGApLAorCQkgICAgICAgICAgICAgICAgICAgVU5JUVVFIEtFWSBgbW91bnRzX3BrZXlgIChgcGF0 aGAsYGNsaWVudGApLAorCQkgICAgICAgICAgICAgICAgICAgS0VZIGBtb3VudHNfc2Vzc2lvbl9p ZF9ma2V5X2lkeGAgKGBzZXNzaW9uX2lkYCksCisJCSAgICAgICAgICAgICAgICAgICBDT05TVFJB SU5UIGBtb3VudHNfc2Vzc2lvbl9pZF9ma2V5YCBGT1JFSUdOIEtFWSAoYHNlc3Npb25faWRgKSBS RUZFUkVOQ0VTIGBzZXNzaW9uc2AgKGBzZXNzaW9uX2lkYCkgT04gVVBEQVRFIE5PIEFDVElPTikK KwkJICAgICAgICAgICAgICAgICAgICIpOworCQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOworCQor CQkkc3RoPSRkYmgtPnByZXBhcmUoIkdSQU5UIEFMTCBQUklWSUxFR0VTIE9OICogVE8gYCR4Mmdv YWRtaW5gQGAkdW5ldGAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkJJHN0aC0+Zmlu aXNoKCk7CisJCXVuZGVmICRkYmg7CisJfQorCQorCXN1YiBteV9jcmVhdGVfZGF0YWJhc2UKKwl7 CisJCW15ICRkYmg9REJJLT5jb25uZWN0KCJkYmk6bXlzcWw6ZGF0YWJhc2U9bXlzcWw7aG9zdD0k aG9zdDtwb3J0PSRwb3J0IiwiJGRiYWRtaW4iLCIkZGJhZG1pbnBhc3MiLHtSYWlzZUVycm9yID0+ IDF9KSBvciBkaWUgJF87CisJCSNkcm9wIGRiIGlmIGV4aXN0cworCQlteSAkc3RoPSRkYmgtPnBy ZXBhcmUoIkRST1AgREFUQUJBU0UgSUYgRVhJU1RTIGAkZGJgIik7CisJCSRzdGgtPmV4ZWN1dGUo KTsKKwkJI2Ryb3AgeDJnb2FkbWluCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiRFJPUCBVU0VSIElG IEVYSVNUUyBgJHgyZ29hZG1pbmBAYCR1bmV0YCIpOworCQkkc3RoLT5leGVjdXRlKCk7CisJCSNj cmVhdGUgZGIKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCJDUkVBVEUgREFUQUJBU0UgSUYgTk9UIEVY SVNUUyBgJGRiYCIpOworCQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOworCQkjY3JlYXRlIHgyZ29h ZG1pbgorCQkkc3RoPSRkYmgtPnByZXBhcmUoIkNSRUFURSBVU0VSIGAkeDJnb2FkbWluYEBgJHVu ZXRgIElERU5USUZJRUQgQlkgJyR4MmdvYWRtaW5wYXNzJyIpOworCQkkc3RoLT5leGVjdXRlKCkg b3IgZGllOworCQkjc2F2ZSB4MmdvYWRtaW4gcGFzc3dvcmQKKwkJb3BlbiAoRkwsIj4gL2V0Yy94 MmdvL3gyZ29zcWwvcGFzc3dvcmRzL3gyZ29hZG1pbiAiKSBvciBkaWUgIkNhbid0IHdyaXRlIHBh c3N3b3JkIGZpbGUgL2V0Yy94MmdvL3gyZ29zcWwvcGFzc3dvcmRzL3gyZ29hZG1pbiI7CisJCXBy aW50IEZMICR4MmdvYWRtaW5wYXNzOworCQljbG9zZShGTCk7CisJCSRzdGgtPmZpbmlzaCgpOwor CQl1bmRlZiAkZGJoOwogCX0KIH0KIAotc3ViIGFkZF91c2VyKCkKKworIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisjIFBvc3RncmVTUUwgQmFja2VuZAorIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCitpZiAoJENvbmZpZy0+cGFyYW0oImJhY2tlbmQiKSBlcSAncG9z dGdyZXMnKQogewotCW15ICR1c2VyPXNoaWZ0OwotCW15ICgkbmFtZSwgJHBhc3MsICR1aWQsICRw Z2lkLCAkcXVvdGEsICRjb21tZW50LCAkZ2NvcywgJGRpciwgJHNoZWxsLCAkZXhwaXJlKSA9IGdl dHB3bmFtKCR1c2VyKTsKLQlpZiAoISAkbmFtZSkKKwlteSAkaG9zdD0kQ29uZmlnLT5wYXJhbSgi cG9zdGdyZXMuaG9zdCIpOworCW15ICRwb3J0PSRDb25maWctPnBhcmFtKCJwb3N0Z3Jlcy5wb3J0 Iik7CisJbXkgJHNzbG1vZGU9JENvbmZpZy0+cGFyYW0oInBvc3RncmVzLnNzbCIpOworCWlmICgh JHNzbG1vZGUpCiAJewotCQlwcmludCAiQ2Fubm90IGZpbmQgdXNlciAoJHVzZXIpXG4iOwotCQly ZXR1cm47Ci0JfSBlbHNpZiAoJG5hbWUgZXEgInJvb3QiKSB7Ci0JCXByaW50ICJUaGUgc3VwZXIt dXNlciBcInJvb3RcIiBpcyBub3QgYWxsb3dlZCB0byB1c2UgWDJHb1xuIjsKLQkJcmV0dXJuOwor CQkkc3NsbW9kZT0icHJlZmVyIjsKIAl9Ci0JJHBhc3M9YHB3Z2VuIDggMWA7Ci0JY2hvbXAoJHBh c3MpOwotCi0JbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJSRVZPS0UgQUxMIFBSSVZJTEVHRVMgT04g c2Vzc2lvbnMsIHVzZWRfcG9ydHMsIG1vdW50cyBGUk9NIFwieDJnb3VzZXJfJHVzZXJcIiIpOwot CSRzdGgtPntXYXJufT0wOwotCSRzdGgtPntQcmludEVycm9yfT0wOwotCSRzdGgtPmV4ZWN1dGUo KTsKLQotCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiUkVWT0tFIEFMTCBQUklWSUxFR0VTIE9OIHNl c3Npb25zX3ZpZXcsIG1vdW50c192aWV3LCBzZXJ2ZXJzX3ZpZXcsIHBvcnRzX3ZpZXcgRlJPTSBc IngyZ291c2VyXyR1c2VyXCIiKTsKLQkkc3RoLT57V2Fybn09MDsKLQkkc3RoLT57UHJpbnRFcnJv cn09MDsKLQkkc3RoLT5leGVjdXRlKCk7Ci0KLQlteSAkc3RoPSRkYmgtPnByZXBhcmUoIkRST1Ag T1dORUQgQlkgXCJ4MmdvdXNlcl8kdXNlclwiIik7Ci0JJHN0aC0+e1dhcm59PTA7Ci0JJHN0aC0+ e1ByaW50RXJyb3J9PTA7Ci0JJHN0aC0+ZXhlY3V0ZSgpOwotCi0JJHN0aD0kZGJoLT5wcmVwYXJl KCJkcm9wIFVTRVIgaWYgZXhpc3RzIFwieDJnb3VzZXJfJHVzZXJcIiIpOwotCSRzdGgtPntXYXJu fT0wOwotCSRzdGgtPntQcmludEVycm9yfT0wOwotCSRzdGgtPmV4ZWN1dGUoKTsKLQotCXByaW50 ICgiY3JlYXRlIERCIHVzZXIgXCJ4MmdvdXNlcl8kdXNlclwiXG4iKTsKLQkkc3RoPSRkYmgtPnBy ZXBhcmUoImNyZWF0ZSBVU0VSIFwieDJnb3VzZXJfJHVzZXJcIiBXSVRIIEVOQ1JZUFRFRCBQQVNT V09SRCAnJHBhc3MnIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpOwotCi0JJHN0aD0kZGJoLT5wcmVwYXJl KCJHUkFOVCBJTlNFUlQsIFVQREFURSwgREVMRVRFIE9OIHNlc3Npb25zLCB1c2VkX3BvcnRzLCBt b3VudHMgVE8gXCJ4MmdvdXNlcl8kdXNlclwiIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpOwotCi0JJHN0 aD0kZGJoLT5wcmVwYXJlKCJHUkFOVCBTRUxFQ1QgT04gdXNlZF9wb3J0cyBUTyBcIngyZ291c2Vy XyR1c2VyXCIiKTsKLQkkc3RoLT5leGVjdXRlKCk7Ci0KLQkkc3RoPSRkYmgtPnByZXBhcmUoIkdS QU5UIFNFTEVDVCwgVVBEQVRFLCBERUxFVEUgT04gc2Vzc2lvbnNfdmlldywgbW91bnRzX3ZpZXcs IHNlcnZlcnNfdmlldywgcG9ydHNfdmlldyBUTyBcIngyZ291c2VyXyR1c2VyXCIiKTsKLQkkc3Ro LT5leGVjdXRlKCk7Ci0JJHN0aC0+ZmluaXNoKCk7Ci0KLQlpZiAoISAtZCAiJGRpci8ueDJnbyIg KQorCW15ICRkYmFkbWluPSRDb25maWctPnBhcmFtKCJwb3N0Z3Jlcy5kYmFkbWluIik7CisJbXkg JHgyZ29hZG1pbj0ieDJnb2RidXNlciI7CisJbXkgJHgyZ29hZG1pbnBhc3M9YHB3Z2VuIDggMWA7 CisJY2hvbXAgKCR4MmdvYWRtaW5wYXNzKTsKKwlteSAkZGI9IngyZ29fc2Vzc2lvbnMiOworCQor CWlmICghJGhvc3QpCiAJewotCQkJaWYgKCBkZWZpbmVkICgmRmlsZTo6UGF0aDo6bWFrZV9wYXRo KSApCi0JCQl7Ci0JCQkJRmlsZTo6UGF0aDo6bWFrZV9wYXRoKCIkZGlyLy54MmdvIik7Ci0JCQl9 Ci0JCQllbHNpZiAoIGRlZmluZWQgKCZGaWxlOjpQYXRoOjpta3BhdGgpICkKLQkJCXsKLQkJCQlG aWxlOjpQYXRoOjpta3BhdGgoIiRkaXIvLngyZ28iKTsKLQkJCX0KLQkJCWVsc2UKLQkJCXsKLQkJ CQlkaWUgIlVuYWJsZSB0byBjcmVhdGUgZm9sZGVycyB3aXRoIEZpbGU6OlBhdGgiOwotCQkJfQor CQkkaG9zdD0nbG9jYWxob3N0JzsKIAl9Ci0KLQkjc2F2ZSB1c2VyIHBhc3N3b3JkCi0Jb3BlbiAo RkwsIj4gJGRpci8ueDJnby9zcWxwYXNzIikgb3IgZGllICJDYW4ndCBvcGVuIHBhc3N3b3JkIGZp bGUgJGRpci8ueDJnby9zcWxwYXNzIjsKLQlwcmludCBGTCAkcGFzczsKKwlpZiAoISRwb3J0KQor CXsKKwkJJHBvcnQ9JzU0MzInOworCX0KKwlpZiAoISRkYmFkbWluKQorCXsKKwkJJGRiYWRtaW49 J3Bvc3RncmVzJzsKKwl9CisJCisJb3BlbiAoRkwsIjwgL2V0Yy94MmdvL3gyZ29zcWwvcGFzc3dv cmRzL3BnYWRtaW4gIikgb3IgZGllICJDYW4ndCByZWFkIHBhc3N3b3JkIGZpbGUgL2V0Yy94Mmdv L3gyZ29zcWwvcGFzc3dvcmRzL3BnYWRtaW4iOworCW15ICRkYmFkbWlucGFzcz08Rkw+OwogCWNs b3NlKEZMKTsKLQljaG1vZCgwNzAwLCIkZGlyLy54MmdvIik7Ci0JY2hvd24oJHVpZCwkcGdpZCwi JGRpci8ueDJnbyIpOwotCWNobW9kKDA2MDAsIiRkaXIvLngyZ28vc3FscGFzcyIpOwotCWNob3du KCR1aWQsJHBnaWQsIiRkaXIvLngyZ28vc3FscGFzcyIpOwotfQotCi1zdWIgY3JlYXRlX3RhYmxl cygpCi17Ci0JJGRiaD1EQkktPmNvbm5lY3QoImRiaTpQZzpkYm5hbWU9JGRiO2hvc3Q9JGhvc3Q7 cG9ydD0kcG9ydDtzc2xtb2RlPSRzc2xtb2RlIiwgIiRkYmFkbWluIiwgIiRkYmFkbWlucGFzcyIs e0F1dG9Db21taXQgPT4gMX0pIG9yIGRpZSAkXzsKLQlteSAkc3RoPSRkYmgtPnByZXBhcmUoIgot CSAgICAgICAgICAgICAgICAgICAgICBjcmVhdGUgdGFibGUgc2Vzc2lvbnMoCi0JICAgICAgICAg ICAgICAgICAgICAgIHNlc3Npb25faWQgdGV4dCBwcmltYXJ5IGtleSwKLQkgICAgICAgICAgICAg ICAgICAgICAgZGlzcGxheSBpbnRlZ2VyIG5vdCBudWxsLAotCSAgICAgICAgICAgICAgICAgICAg ICB1bmFtZSB0ZXh0IG5vdCBudWxsLAotCSAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIgdGV4 dCBub3QgbnVsbCwKLQkgICAgICAgICAgICAgICAgICAgICAgY2xpZW50IGluZXQsCi0JICAgICAg ICAgICAgICAgICAgICAgIHN0YXR1cyBjaGFyKDEpIG5vdCBudWxsIGRlZmF1bHQgJ1InLAotCSAg ICAgICAgICAgICAgICAgICAgICBpbml0X3RpbWUgdGltZXN0YW1wIG5vdCBudWxsIGRlZmF1bHQg bm93KCksCi0JICAgICAgICAgICAgICAgICAgICAgIGxhc3RfdGltZSB0aW1lc3RhbXAgbm90IG51 bGwgZGVmYXVsdCBub3coKSwKLQkgICAgICAgICAgICAgICAgICAgICAgY29va2llIGNoYXIoMzMp LAotCSAgICAgICAgICAgICAgICAgICAgICBhZ2VudF9waWQgaW50LAotCSAgICAgICAgICAgICAg ICAgICAgICBncl9wb3J0IGludCwKLQkgICAgICAgICAgICAgICAgICAgICAgc291bmRfcG9ydCBp bnQsCi0JICAgICAgICAgICAgICAgICAgICAgIGZzX3BvcnQgaW50LAotCSAgICAgICAgICAgICAg ICAgICAgICB0ZWtpY3RybF9wb3J0IGludCwKLQkgICAgICAgICAgICAgICAgICAgICAgdGVraWRh dGFfcG9ydCBpbnQsCi0JICAgICAgICAgICAgICAgICAgICAgIGNyZWF0b3JfaWQgdGV4dCBOT1Qg TlVMTCBkZWZhdWx0IGN1cnJlbnRfdXNlciwKLQkgICAgICAgICAgICAgICAgICAgICAgdW5pcXVl KGRpc3BsYXkpKQotCSAgICAgICAgICAgICAgICAgICAgICAiKTsKLQkkc3RoLT5leGVjdXRlKCkg b3IgZGllOwotCi0JJHN0aD0kZGJoLT5wcmVwYXJlKCIKLQkgICAgICAgICAgICAgICAgICAgY3Jl YXRlIFZJRVcgc2Vzc2lvbnNfdmlldyBhcwotCSAgICAgICAgICAgICAgICAgICBTRUxFQ1QKLQkg ICAgICAgICAgICAgICAgICAgYWdlbnRfcGlkLCBzZXNzaW9uX2lkLCBkaXNwbGF5LCBzZXJ2ZXIs IHN0YXR1cywgaW5pdF90aW1lLCBjb29raWUsIGNsaWVudCwgZ3JfcG9ydCwKLQkgICAgICAgICAg ICAgICAgICAgc291bmRfcG9ydCwgbGFzdF90aW1lLCB1bmFtZSwgZnNfcG9ydCwgdGVraWN0cmxf cG9ydCwgdGVraWRhdGFfcG9ydCBmcm9tIHNlc3Npb25zCi0JICAgICAgICAgICAgICAgICAgIHdo ZXJlIGNyZWF0b3JfaWQgPSBjdXJyZW50X3VzZXIKLQkgICAgICAgICAgICAgICAgICAgIik7Ci0J JHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKLQotCSRzdGg9JGRiaC0+cHJlcGFyZSgiCi0JICAgICAg ICAgICAgICAgICAgIGNyZWF0ZSBWSUVXIHNlcnZlcnNfdmlldyBhcwotCSAgICAgICAgICAgICAg ICAgICBTRUxFQ1QKLQkgICAgICAgICAgICAgICAgICAgc2VydmVyLCBkaXNwbGF5LCBzdGF0dXMg ZnJvbSBzZXNzaW9ucwotCSAgICAgICAgICAgICAgICAgICAiKTsKLQkkc3RoLT5leGVjdXRlKCkg b3IgZGllOwotCi0JJHN0aD0kZGJoLT5wcmVwYXJlKCIKLQkgICAgICAgICAgICAgICAgICAgY3Jl YXRlIG9yIHJlcGxhY2UgUlVMRSB1cGRhdGVfc2Vzc19wcml2IEFTIE9OIFVQREFURQotCSAgICAg ICAgICAgICAgICAgICBUTyBzZXNzaW9ucyB3aGVyZSAoT0xELmNyZWF0b3JfaWQgPD4gY3VycmVu dF91c2VyIG9yIE9MRC5jcmVhdG9yX2lkIDw+IE5FVy5jcmVhdG9yX2lkKSBhbmQgY3VycmVudF91 c2VyIDw+ICckeDJnb2FkbWluJwotCSAgICAgICAgICAgICAgICAgICBETyBJTlNURUFEIE5PVEhJ TkcKLQkgICAgICAgICAgICAgICAgICAgIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKLQot CSRzdGg9JGRiaC0+cHJlcGFyZSgiCi0JICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBvciByZXBs YWNlIFJVTEUgaW5zZXJ0X3Nlc3NfcHJpdiBBUyBPTiBJTlNFUlQKLQkgICAgICAgICAgICAgICAg ICAgVE8gc2Vzc2lvbnMgd2hlcmUgTkVXLmNyZWF0b3JfaWQgPD4gY3VycmVudF91c2VyIGFuZCBj dXJyZW50X3VzZXIgPD4gJyR4MmdvYWRtaW4nCi0JICAgICAgICAgICAgICAgICAgIERPIElOU1RF QUQgTk9USElORwotCSAgICAgICAgICAgICAgICAgICAiKTsKLQkkc3RoLT5leGVjdXRlKCkgb3Ig ZGllOwotCi0JJHN0aD0kZGJoLT5wcmVwYXJlKCIKLQkgICAgICAgICAgICAgICAgICAgY3JlYXRl IG9yIHJlcGxhY2UgUlVMRSBkZWxldGVfc2Vzc19wcml2IEFTIE9OIERFTEVURQotCSAgICAgICAg ICAgICAgICAgICBUTyBzZXNzaW9ucyB3aGVyZSBPTEQuY3JlYXRvcl9pZCA8PiBjdXJyZW50X3Vz ZXIgYW5kIGN1cnJlbnRfdXNlciA8PiAnJHgyZ29hZG1pbicKLQkgICAgICAgICAgICAgICAgICAg RE8gSU5TVEVBRCBOT1RISU5HCi0JICAgICAgICAgICAgICAgICAgICIpOwotCSRzdGgtPmV4ZWN1 dGUoKSBvciBkaWU7Ci0KLQkkc3RoPSRkYmgtPnByZXBhcmUoIgotCSAgICAgICAgICAgICAgICAg ICBjcmVhdGUgb3IgcmVwbGFjZSBSVUxFIHVwZGF0ZV9zZXNzX3ZpZXcgQVMgT04gVVBEQVRFCi0J ICAgICAgICAgICAgICAgICAgIFRPIHNlc3Npb25zX3ZpZXcgRE8gSU5TVEVBRAotCSAgICAgICAg ICAgICAgICAgICB1cGRhdGUgc2Vzc2lvbnMgc2V0Ci0JICAgICAgICAgICAgICAgICAgIHN0YXR1 cz1ORVcuc3RhdHVzLAotCSAgICAgICAgICAgICAgICAgICBsYXN0X3RpbWU9TkVXLmxhc3RfdGlt ZSwKLQkgICAgICAgICAgICAgICAgICAgY29va2llPU5FVy5jb29raWUsCi0JICAgICAgICAgICAg ICAgICAgIGFnZW50X3BpZD1ORVcuYWdlbnRfcGlkLAotCSAgICAgICAgICAgICAgICAgICBjbGll bnQ9TkVXLmNsaWVudCwKLQkgICAgICAgICAgICAgICAgICAgZ3JfcG9ydD1ORVcuZ3JfcG9ydCwK LQkgICAgICAgICAgICAgICAgICAgc291bmRfcG9ydD1ORVcuc291bmRfcG9ydCwKLQkgICAgICAg ICAgICAgICAgICAgZnNfcG9ydD1ORVcuZnNfcG9ydCwKLQkgICAgICAgICAgICAgICAgICAgdGVr aWN0cmxfcG9ydD1ORVcudGVraWN0cmxfcG9ydCwKLQkgICAgICAgICAgICAgICAgICAgdGVraWRh dGFfcG9ydD1ORVcudGVraWRhdGFfcG9ydAotCSAgICAgICAgICAgICAgICAgICB3aGVyZSBzZXNz aW9uX2lkPU9MRC5zZXNzaW9uX2lkIGFuZCBjcmVhdG9yX2lkPWN1cnJlbnRfdXNlcgotCSAgICAg ICAgICAgICAgICAgICAiKTsKLQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOwotCi0JJHN0aD0kZGJo LT5wcmVwYXJlKCIKLQkgICAgICAgICAgICAgICAgICAgY3JlYXRlIHRhYmxlIG1lc3NhZ2VzKG1l c3NfaWQgdmFyY2hhcigyMCkgcHJpbWFyeSBrZXksIG1lc3NhZ2UgdGV4dCkKLQkgICAgICAgICAg ICAgICAgICAgIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKLQotCSRzdGg9JGRiaC0+cHJl cGFyZSgiCi0JICAgICAgICAgICAgICAgICAgIGNyZWF0ZSB0YWJsZSB1c2VyX21lc3NhZ2VzKAot CSAgICAgICAgICAgICAgICAgICBtZXNzX2lkIHRleHQgbm90IG51bGwsCi0JICAgICAgICAgICAg ICAgICAgIHVuYW1lIHRleHQgbm90IG51bGwpCi0JICAgICAgICAgICAgICAgICAgICIpOwotCSRz dGgtPmV4ZWN1dGUoKSBvciBkaWU7Ci0KLQkkc3RoPSRkYmgtPnByZXBhcmUoIgotCSAgICAgICAg ICAgICAgICAgICBjcmVhdGUgdGFibGUgdXNlZF9wb3J0cygKLQkgICAgICAgICAgICAgICAgICAg c2VydmVyIHRleHQgbm90IG51bGwsCi0JICAgICAgICAgICAgICAgICAgIHNlc3Npb25faWQgdGV4 dCByZWZlcmVuY2VzIHNlc3Npb25zIG9uIGRlbGV0ZSBjYXNjYWRlLAotCSAgICAgICAgICAgICAg ICAgICBjcmVhdG9yX2lkIHRleHQgTk9UIE5VTEwgZGVmYXVsdCBjdXJyZW50X3VzZXIsCi0JICAg ICAgICAgICAgICAgICAgIHBvcnQgaW50ZWdlciBwcmltYXJ5IGtleSkKLQkgICAgICAgICAgICAg ICAgICAgIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKLQotCSRzdGg9JGRiaC0+cHJlcGFy ZSgiCi0JICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBWSUVXIHBvcnRzX3ZpZXcgYXMKLQkgICAg ICAgICAgICAgICAgICAgU0VMRUNUCi0JICAgICAgICAgICAgICAgICAgIHNlcnZlciwgcG9ydCBm cm9tIHVzZWRfcG9ydHMKLQkgICAgICAgICAgICAgICAgICAgIik7Ci0JJHN0aC0+ZXhlY3V0ZSgp IG9yIGRpZTsKLQotCSRzdGg9JGRiaC0+cHJlcGFyZSgiCi0JICAgICAgICAgICAgICAgICAgIGNy ZWF0ZSBvciByZXBsYWNlIFJVTEUgaW5zZXJ0X3BvcnRfcHJpdiBBUyBPTiBJTlNFUlQKLQkgICAg ICAgICAgICAgICAgICAgVE8gdXNlZF9wb3J0cyB3aGVyZSBORVcuY3JlYXRvcl9pZCA8PiBjdXJy ZW50X3VzZXIgYW5kIGN1cnJlbnRfdXNlciA8PiAnJHgyZ29hZG1pbicKLQkgICAgICAgICAgICAg ICAgICAgRE8gSU5TVEVBRCBOT1RISU5HCi0JICAgICAgICAgICAgICAgICAgICIpOwotCSRzdGgt PmV4ZWN1dGUoKSBvciBkaWU7Ci0KLQkkc3RoPSRkYmgtPnByZXBhcmUoIgotCSAgICAgICAgICAg ICAgICAgICBjcmVhdGUgb3IgcmVwbGFjZSBSVUxFIHVwZGF0ZV9wb3J0X3ByaXYgQVMgT04gVVBE QVRFCi0JICAgICAgICAgICAgICAgICAgIFRPIHVzZWRfcG9ydHMgd2hlcmUgKE5FVy5jcmVhdG9y X2lkIDw+IGN1cnJlbnRfdXNlciBvciBPTEQuY3JlYXRvcl9pZCA8PiBjdXJyZW50X3VzZXIpIGFu ZCBjdXJyZW50X3VzZXIgPD4gJyR4MmdvYWRtaW4nCi0JICAgICAgICAgICAgICAgICAgIERPIElO U1RFQUQgTk9USElORwotCSAgICAgICAgICAgICAgICAgICAiKTsKLQkkc3RoLT5leGVjdXRlKCkg b3IgZGllOwotCi0JJHN0aD0kZGJoLT5wcmVwYXJlKCIKLQkgICAgICAgICAgICAgICAgICAgY3Jl YXRlIG9yIHJlcGxhY2UgUlVMRSBkZWxldGVfcG9ydF9wcml2IEFTIE9OIERFTEVURQotCSAgICAg ICAgICAgICAgICAgICBUTyB1c2VkX3BvcnRzIHdoZXJlIE9MRC5jcmVhdG9yX2lkIDw+IGN1cnJl bnRfdXNlciBhbmQgY3VycmVudF91c2VyIDw+ICckeDJnb2FkbWluJwotCSAgICAgICAgICAgICAg ICAgICBETyBJTlNURUFEIE5PVEhJTkcKLQkgICAgICAgICAgICAgICAgICAgIik7Ci0JJHN0aC0+ ZXhlY3V0ZSgpIG9yIGRpZTsKLQotCSRzdGg9JGRiaC0+cHJlcGFyZSgiCi0JICAgICAgICAgICAg ICAgICAgIGNyZWF0ZSB0YWJsZSBtb3VudHMoCi0JICAgICAgICAgICAgICAgICAgIHNlc3Npb25f aWQgdGV4dCByZWZlcmVuY2VzIHNlc3Npb25zIG9uIGRlbGV0ZSByZXN0cmljdCwKLQkgICAgICAg ICAgICAgICAgICAgcGF0aCB0ZXh0IG5vdCBudWxsLAotCSAgICAgICAgICAgICAgICAgICBjbGll bnQgaW5ldCBub3QgbnVsbCwKLQkgICAgICAgICAgICAgICAgICAgY3JlYXRvcl9pZCB0ZXh0IE5P VCBOVUxMIGRlZmF1bHQgY3VycmVudF91c2VyLAotCSAgICAgICAgICAgICAgICAgICBwcmltYXJ5 IGtleShwYXRoLGNsaWVudCkpCi0JICAgICAgICAgICAgICAgICAgICIpOwotCSRzdGgtPmV4ZWN1 dGUoKSBvciBkaWU7Ci0KLQkkc3RoPSRkYmgtPnByZXBhcmUoIgotCSAgICAgICAgICAgICAgICAg ICBjcmVhdGUgVklFVyBtb3VudHNfdmlldyBhcwotCSAgICAgICAgICAgICAgICAgICBTRUxFQ1QK LQkgICAgICAgICAgICAgICAgICAgY2xpZW50LHBhdGgsIHNlc3Npb25faWQgZnJvbSBtb3VudHMK LQkgICAgICAgICAgICAgICAgICAgd2hlcmUgY3JlYXRvcl9pZCA9IGN1cnJlbnRfdXNlcgotCSAg ICAgICAgICAgICAgICAgICAiKTsKLQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOwotCi0JJHN0aD0k ZGJoLT5wcmVwYXJlKCIKLQkgICAgICAgICAgICAgICAgICAgY3JlYXRlIG9yIHJlcGxhY2UgUlVM RSBkZWxldGVfbW91bnRzX3ZpZXcgQVMgT04gREVMRVRFCi0JICAgICAgICAgICAgICAgICAgIFRP IG1vdW50c192aWV3IERPIElOU1RFQUQKLQkgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZyb20g bW91bnRzCi0JICAgICAgICAgICAgICAgICAgIHdoZXJlIHNlc3Npb25faWQ9T0xELnNlc3Npb25f aWQgYW5kIGNyZWF0b3JfaWQ9Y3VycmVudF91c2VyIGFuZCBwYXRoPU9MRC5wYXRoCi0JICAgICAg ICAgICAgICAgICAgICIpOwotCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7Ci0KLQkkc3RoPSRkYmgt PnByZXBhcmUoIgotCSAgICAgICAgICAgICAgICAgICBjcmVhdGUgb3IgcmVwbGFjZSBSVUxFIGlu c2VydF9tb3VudF9wcml2IEFTIE9OIElOU0VSVAotCSAgICAgICAgICAgICAgICAgICBUTyBtb3Vu dHMgd2hlcmUgTkVXLmNyZWF0b3JfaWQgPD4gY3VycmVudF91c2VyIGFuZCBjdXJyZW50X3VzZXIg PD4gJyR4MmdvYWRtaW4nCi0JICAgICAgICAgICAgICAgICAgIERPIElOU1RFQUQgTk9USElORwot CSAgICAgICAgICAgICAgICAgICAiKTsKLQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOwotCi0JJHN0 aD0kZGJoLT5wcmVwYXJlKCIKLQkgICAgICAgICAgICAgICAgICAgY3JlYXRlIG9yIHJlcGxhY2Ug UlVMRSB1cGRhdGVfbW91bnRfcHJpdiBBUyBPTiBVUERBVEUKLQkgICAgICAgICAgICAgICAgICAg VE8gbW91bnRzIHdoZXJlIChORVcuY3JlYXRvcl9pZCA8PiBjdXJyZW50X3VzZXIgb3IgT0xELmNy ZWF0b3JfaWQgPD4gY3VycmVudF91c2VyKSBhbmQgY3VycmVudF91c2VyIDw+ICckeDJnb2FkbWlu JwotCSAgICAgICAgICAgICAgICAgICBETyBJTlNURUFEIE5PVEhJTkcKLQkgICAgICAgICAgICAg ICAgICAgIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKLQotCSRzdGg9JGRiaC0+cHJlcGFy ZSgiCi0JICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBvciByZXBsYWNlIFJVTEUgZGVsZXRlX21v dW50X3ByaXYgQVMgT04gREVMRVRFCi0JICAgICAgICAgICAgICAgICAgIFRPIG1vdW50cyB3aGVy ZSBPTEQuY3JlYXRvcl9pZCA8PiBjdXJyZW50X3VzZXIgYW5kIGN1cnJlbnRfdXNlciA8PiAnJHgy Z29hZG1pbicKLQkgICAgICAgICAgICAgICAgICAgRE8gSU5TVEVBRCBOT1RISU5HCi0JICAgICAg ICAgICAgICAgICAgICIpOwotCSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7Ci0KLQkkc3RoPSRkYmgt PnByZXBhcmUoIkdSQU5UIEFMTCBQUklWSUxFR0VTIE9OIHNlc3Npb25zLCBtZXNzYWdlcywgdXNl cl9tZXNzYWdlcywgdXNlZF9wb3J0cywgbW91bnRzIFRPICR4MmdvYWRtaW4iKTsKLQkkc3RoLT5l eGVjdXRlKCkgb3IgZGllOwotCSRzdGgtPmZpbmlzaCgpOworCWNob21wKCRkYmFkbWlucGFzcyk7 CisJCisJaWYgKCR1cGRhdGVkYikKKwl7CisJCSMgY2hlY2sgaWYgdGhlIERCIGFscmVhZHkgZXhp c3RzLCBpZiBub3QsIGNyZWF0ZSBpdC4uLgorCQlteSAkZGJoOworCQl1bnRpbCAoCisJCQkkZGJo ID0gREJJLT5jb25uZWN0KCJkYmk6UGc6ZGJuYW1lPSRkYjtob3N0PSRob3N0O3BvcnQ9JHBvcnQ7 c3NsbW9kZT0kc3NsbW9kZSIsICIkZGJhZG1pbiIsICIkZGJhZG1pbnBhc3MiLHtBdXRvQ29tbWl0 ID0+IDEsIFJhaXNlRXJyb3IgPT4gMCwgUHJpbnRFcnJvciA9PiAwfSkKKwkJKSB7CisJCQkkY3Jl YXRlZGIgPSAxOworCQkJbGFzdDsKKwkJfTsKKwkJaWYgKCEkY3JlYXRlZGIpIHsKKwkJCSRkYmgg PSBEQkktPmNvbm5lY3QoImRiaTpQZzpkYm5hbWU9JGRiO2hvc3Q9JGhvc3Q7cG9ydD0kcG9ydDtz c2xtb2RlPSRzc2xtb2RlIiwgIiRkYmFkbWluIiwgIiRkYmFkbWlucGFzcyIse0F1dG9Db21taXQg PT4gMX0pOworCQkJaWYgKCRkYmgpIHsKKwkJCQlteSAkdXBkYXRlX3ZpZXdzX25fcnVsZXMgPSAw OworCQkJCW15ICRzdGhfdGVraWN0cmw7CisJCQkJbXkgJHN0aF90ZWtpZGF0YTsKKwkJCQlteSAk c3RoX3VwZGF0ZTsKKwkJCQl0cnkgeworCQkJCQkkc3RoX3Rla2ljdHJsID0gJGRiaC0+cHJlcGFy ZSgiCisJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCB0ZWtpY3RybF9w b3J0IGZyb20gc2Vzc2lvbnMKKwkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIik7 CisJCQkJCSRzdGhfdGVraWN0cmwtPmV4ZWN1dGUoKTsKKwkJCQl9IGNhdGNoIHsKKwkJCQkJcHJp bnQgIkFERElORzogdGVraWN0cmxfcG9ydCBjb2x1bW4gdG8gdGFibGUgc2Vzc2lvbnNcbiI7CisJ CQkJCSRzdGhfdGVraWN0cmwgPSAkZGJoLT5wcmVwYXJlKCIKKwkJCQkJICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYWx0ZXIgdGFibGUgc2Vzc2lvbnMKKwkJCQkJICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYWRkIGNvbHVtbiB0ZWtpY3RybF9wb3J0IGludAorCQkJCQkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiKTsKKwkJCQkJJHN0aF90ZWtpY3RybC0+ZXhlY3V0ZSgp IG9yIGRpZTsKKwkJCQkJJHN0aF90ZWtpY3RybC0+ZmluaXNoKCk7CisJCQkJCSR1cGRhdGVfdmll d3Nfbl9ydWxlcyA9IDE7CisJCQkJfTsKKwkJCQl0cnkgeworCQkJCQkkc3RoX3Rla2lkYXRhID0g JGRiaC0+cHJlcGFyZSgiCisJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVj dCB0ZWtpZGF0YV9wb3J0IGZyb20gc2Vzc2lvbnMKKwkJCQkJICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIik7CisJCQkJCSRzdGhfdGVraWRhdGEtPmV4ZWN1dGUoKTsKKwkJCQl9IGNhdGNo IHsKKwkJCQkJcHJpbnQgIkFERElORzogdGVraWRhdGFfcG9ydCBjb2x1bW4gdG8gdGFibGUgc2Vz c2lvbnNcbiI7CisJCQkJCSRzdGhfdGVraWRhdGE9JGRiaC0+cHJlcGFyZSgiCisJCQkJCSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhbHRlciB0YWJsZSBzZXNzaW9ucworCQkJCQkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYWRkIGNvbHVtbiB0ZWtpZGF0YV9wb3J0IGludAorCQkJCQkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIik7CisJCQkJCSRzdGhfdGVraWRhdGEtPmV4ZWN1 dGUoKSBvciBkaWU7CisJCQkJCSRzdGhfdGVraWRhdGEtPmZpbmlzaCgpOworCQkJCQkkdXBkYXRl X3ZpZXdzX25fcnVsZXMgPSAxOworCQkJCX07CisJCisJCQkJaWYgKCR1cGRhdGVfdmlld3Nfbl9y dWxlcykKKwkJCQl7CisJCQkJCXByaW50ICJVUERBVElORyBWSUVXOiBzZXNzaW9uc192aWV3XG4i OworCQkJCQkkc3RoX3VwZGF0ZT0kZGJoLT5wcmVwYXJlKCIKKwkJCQkJICAgICAgICAgICAgICAg ICAgICAgICAgICBjcmVhdGUgb3IgcmVwbGFjZSBWSUVXIHNlc3Npb25zX3ZpZXcgYXMKKwkJCQkJ ICAgICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QKKwkJCQkJICAgICAgICAgICAgICAgICAg ICAgICAgICBhZ2VudF9waWQsIHNlc3Npb25faWQsIGRpc3BsYXksIHNlcnZlciwgc3RhdHVzLCBp bml0X3RpbWUsIGNvb2tpZSwgY2xpZW50LCBncl9wb3J0LAorCQkJCQkgICAgICAgICAgICAgICAg ICAgICAgICAgIHNvdW5kX3BvcnQsIGxhc3RfdGltZSwgdW5hbWUsIGZzX3BvcnQsIHRla2ljdHJs X3BvcnQsIHRla2lkYXRhX3BvcnQgZnJvbSBzZXNzaW9ucworCQkJCQkgICAgICAgICAgICAgICAg ICAgICAgICAgIHdoZXJlIGNyZWF0b3JfaWQgPSBjdXJyZW50X3VzZXIKKwkJCQkJICAgICAgICAg ICAgICAgICAgICAgICAgICAiKTsKKwkJCQkJJHN0aF91cGRhdGUtPmV4ZWN1dGUoKSBvciBkaWU7 CisJCQkJCXByaW50ICJVUERBVElORyBSVUxFOiB1cGRhdGVfc2Vzc192aWV3XG4iOworCQkJCQkk c3RoX3VwZGF0ZT0kZGJoLT5wcmVwYXJlKCIKKwkJCQkJICAgICAgICAgICAgICAgICAgICAgICAg ICBjcmVhdGUgb3IgcmVwbGFjZSBSVUxFIHVwZGF0ZV9zZXNzX3ZpZXcgQVMgT04gVVBEQVRFCisJ CQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgVE8gc2Vzc2lvbnNfdmlldyBETyBJTlNURUFE CisJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlIHNlc3Npb25zIHNldAorCQkJ CQkgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz1ORVcuc3RhdHVzLAorCQkJCQkgICAg ICAgICAgICAgICAgICAgICAgICAgIGxhc3RfdGltZT1ORVcubGFzdF90aW1lLAorCQkJCQkgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvb2tpZT1ORVcuY29va2llLAorCQkJCQkgICAgICAgICAg ICAgICAgICAgICAgICAgIGFnZW50X3BpZD1ORVcuYWdlbnRfcGlkLAorCQkJCQkgICAgICAgICAg ICAgICAgICAgICAgICAgIGNsaWVudD1ORVcuY2xpZW50LAorCQkJCQkgICAgICAgICAgICAgICAg ICAgICAgICAgIGdyX3BvcnQ9TkVXLmdyX3BvcnQsCisJCQkJCSAgICAgICAgICAgICAgICAgICAg ICAgICAgc291bmRfcG9ydD1ORVcuc291bmRfcG9ydCwKKwkJCQkJICAgICAgICAgICAgICAgICAg ICAgICAgICBmc19wb3J0PU5FVy5mc19wb3J0LAorCQkJCQkgICAgICAgICAgICAgICAgICAgICAg ICAgIHRla2ljdHJsX3BvcnQ9TkVXLnRla2ljdHJsX3BvcnQsCisJCQkJCSAgICAgICAgICAgICAg ICAgICAgICAgICAgdGVraWRhdGFfcG9ydD1ORVcudGVraWRhdGFfcG9ydAorCQkJCQkgICAgICAg ICAgICAgICAgICAgICAgICAgIHdoZXJlIHNlc3Npb25faWQ9T0xELnNlc3Npb25faWQgYW5kIGNy ZWF0b3JfaWQ9Y3VycmVudF91c2VyCisJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgIik7 CisJCQkJCSRzdGhfdXBkYXRlLT5leGVjdXRlKCkgb3IgZGllOworCQkJCQkkc3RoX3VwZGF0ZS0+ ZmluaXNoKCk7CisJCQkJfQorCQkJfQorCQkJaWYgKCRkYmgpIHsKKwkJCQl1bmRlZiAkZGJoOwor CQkJfQorCQkJZXhpdCgwKTsKKwkJfSBlbHNlIHsKKwkJCXByaW50ICJObyBzZXNzaW9uIERCIGZv dW5kLiBVc2UgLS1jcmVhdGVkYiBpbnN0ZWFkIG9mIC0tdXBkYXRlZGIuXG4iOworCQl9CisJfQor CQorCWlmICgkY3JlYXRlZGIpCisJeworCQljcmVhdGVfZGF0YWJhc2UoKTsKKwkJY3JlYXRlX3Rh YmxlcygpOworCQlleGl0KDApOworCX0KKwkKKwlpZiAoJGxpc3R1c2VycykKKwl7CisJCWxpc3Rf dXNlcnMoKTsKKwkJZXhpdCgwKTsKKwl9CisJCisJbXkgJGRiaD1EQkktPmNvbm5lY3QoImRiaTpQ ZzpkYm5hbWU9JGRiO2hvc3Q9JGhvc3Q7cG9ydD0kcG9ydDtzc2xtb2RlPSRzc2xtb2RlIiwgIiRk YmFkbWluIiwgIiRkYmFkbWlucGFzcyIse0F1dG9Db21taXQgPT4gMX0pIG9yIGRpZSAkXzsKKwlp ZiAoJGFkZHVzZXIpCisJeworCQlhZGRfdXNlcigkYWRkdXNlcik7CisJfQorCQorCWlmICgkYWRk Z3JvdXApCisJeworCQlteSAoJG5hbWUsICRwYXNzd2QsICRnaWQsICRtZW1iZXJzKSA9IGdldGdy bmFtKCAkYWRkZ3JvdXApOworCQlteSBAZ3JwX21lbWJlcnM9c3BsaXQoJyAnLCRtZW1iZXJzKTsK KwkJZm9yZWFjaCAoQGdycF9tZW1iZXJzKQorCQl7CisJCQljaG9tcCgkXyk7CisJCQlhZGRfdXNl cigkXyk7CisJCX0KKwl9CisJCisJaWYgKCRybXVzZXIpCisJeworCQlybV91c2VyKCRybXVzZXIp OworCX0KKwkKKwlpZiAoJHJtZ3JvdXApCisJeworCQlteSAoJG5hbWUsICRwYXNzd2QsICRnaWQs ICRtZW1iZXJzKSA9IGdldGdybmFtKCAkcm1ncm91cCk7CisJCW15IEBncnBfbWVtYmVycz1zcGxp dCgnICcsJG1lbWJlcnMpOworCQlmb3JlYWNoIChAZ3JwX21lbWJlcnMpCisJCXsKKwkJCWNob21w KCRfKTsKKwkJCXJtX3VzZXIoJF8pOworCQl9CisJfQogCXVuZGVmICRkYmg7Ci19Ci0KLXN1YiBj cmVhdGVfZGF0YWJhc2UKLXsKLQlteSAkZGJoPURCSS0+Y29ubmVjdCgiZGJpOlBnOmRibmFtZT1w b3N0Z3Jlcztob3N0PSRob3N0O3BvcnQ9JHBvcnQ7c3NsbW9kZT0kc3NsbW9kZSIsICIkZGJhZG1p biIsICIkZGJhZG1pbnBhc3MiLHtBdXRvQ29tbWl0ID0+IDF9KSBvciBkaWUgJF87Ci0JI2Ryb3Ag ZGIgaWYgZXhpc3RzCi0JbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJkcm9wIGRhdGFiYXNlIGlmIGV4 aXN0cyB4MmdvX3Nlc3Npb25zIik7Ci0JJHN0aC0+ZXhlY3V0ZSgpOwotCSNkcm9wIHgyZ29hZG1p bgotCSRzdGg9JGRiaC0+cHJlcGFyZSgiZHJvcCB1c2VyIGlmIGV4aXN0cyAkeDJnb2FkbWluIik7 Ci0JJHN0aC0+ZXhlY3V0ZSgpOwotCSNjcmVhdGUgZGIKLQkkc3RoPSRkYmgtPnByZXBhcmUoImNy ZWF0ZSBkYXRhYmFzZSAkZGIiKTsKLQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOwotCSNjcmVhdGUg eDJnb2FkbWluCi0JJHN0aD0kZGJoLT5wcmVwYXJlKCJjcmVhdGUgVVNFUiAkeDJnb2FkbWluIFdJ VEggRU5DUllQVEVEIFBBU1NXT1JEICckeDJnb2FkbWlucGFzcyciKTsKLQkkc3RoLT5leGVjdXRl KCkgb3IgZGllOwotCSNzYXZlIHgyZ29hZG1pbiBwYXNzd29yZAotCW9wZW4gKEZMLCI+IC9ldGMv eDJnby94Mmdvc3FsL3Bhc3N3b3Jkcy94MmdvYWRtaW4gIikgb3IgZGllICJDYW4ndCB3cml0ZSBw YXNzd29yZCBmaWxlIC9ldGMveDJnby94Mmdvc3FsL3Bhc3N3b3Jkcy94MmdvYWRtaW4iOwotCXBy aW50IEZMICR4MmdvYWRtaW5wYXNzOwotCWNsb3NlKEZMKTsKLQkkc3RoLT5maW5pc2goKTsKLQl1 bmRlZiAkZGJoOworCQorCXN1YiBsaXN0X3VzZXJzKCkKKwl7CisJCW15ICRkYmg9REJJLT5jb25u ZWN0KCJkYmk6UGc6ZGJuYW1lPXBvc3RncmVzO2hvc3Q9JGhvc3Q7cG9ydD0kcG9ydDtzc2xtb2Rl PSRzc2xtb2RlIiwgIiRkYmFkbWluIiwgIiRkYmFkbWlucGFzcyIse0F1dG9Db21taXQgPT4gMX0p IG9yIGRpZSAkXzsKKwkJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJzZWxlY3Qgcm9sbmFtZSBmcm9t IHBnX3JvbGVzIHdoZXJlIHJvbG5hbWUgbGlrZSAneDJnb3VzZXJfJSciKTsKKwkJJHN0aC0+ZXhl Y3V0ZSgpb3IgZGllOworCQlwcmludGYgKCIlLTIwcyBEQiB1c2VyXG4iLCJVTklYIHVzZXIiKTsK KwkJcHJpbnQgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIjsKKwkJ bXkgQGRhdGE7CisJCXdoaWxlIChAZGF0YSA9ICRzdGgtPmZldGNocm93X2FycmF5KQorCQl7CisJ CQlAZGF0YVswXT1+cy94MmdvdXNlcl8vLzsKKwkJCXByaW50ZiAoIiUtMjBzIHgyZ291c2VyX0Bk YXRhWzBdXG4iLEBkYXRhWzBdKTsKKwkJfQorCQkkc3RoLT5maW5pc2goKTsKKwkJdW5kZWYgJGRi aDsKKwl9CisJCisJc3ViIHJtX3VzZXIoKQorCXsKKwkJbXkgJHVzZXI9c2hpZnQ7CisJCisJCXBy aW50ICgicm0gREIgdXNlciBcIngyZ291c2VyXyR1c2VyXCJcbiIpOworCQorCQlteSAkc3RoPSRk YmgtPnByZXBhcmUoIlJFVk9LRSBBTEwgUFJJVklMRUdFUyBPTiBzZXNzaW9ucywgdXNlZF9wb3J0 cywgbW91bnRzIEZST00gXCJ4MmdvdXNlcl8kdXNlclwiIik7CisJCSRzdGgtPmV4ZWN1dGUoKTsK KwkKKwkJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJSRVZPS0UgQUxMIFBSSVZJTEVHRVMgT04gc2Vz c2lvbnNfdmlldywgbW91bnRzX3ZpZXcsIHNlcnZlcnNfdmlldywgcG9ydHNfdmlldyBGUk9NIFwi eDJnb3VzZXJfJHVzZXJcIiIpOworCQkkc3RoLT5leGVjdXRlKCk7CisJCisJCW15ICRzdGg9JGRi aC0+cHJlcGFyZSgiRFJPUCBPV05FRCBCWSBcIngyZ291c2VyXyR1c2VyXCIiKTsKKwkJJHN0aC0+ ZXhlY3V0ZSgpOworCQorCQlteSAkc3RoPSRkYmgtPnByZXBhcmUoImRyb3AgVVNFUiBpZiBleGlz dHMgXCJ4MmdvdXNlcl8kdXNlclwiIik7CisJCSRzdGgtPmV4ZWN1dGUoKTsKKwkJJHN0aC0+Zmlu aXNoKCk7CisJCisJCW15ICgkbmFtZSwgJHBhc3MsICR1aWQsICRwZ2lkLCAkcXVvdGEsICRjb21t ZW50LCAkZ2NvcywgJGRpciwgJHNoZWxsLCAkZXhwaXJlKSA9IGdldHB3bmFtKCR1c2VyKTsKKwkJ aWYgKCEgJHVpZCkKKwkJeworCQkJcmV0dXJuOworCQl9CisJCWlmICggLWUgIiRkaXIvLngyZ28v c3FscGFzcyIgKQorCQl7CisJCQl1bmxpbmsoIiRkaXIvLngyZ28vc3FscGFzcyIpOworCQl9CisJ fQorCQorCXN1YiBhZGRfdXNlcigpCisJeworCQlteSAkdXNlcj1zaGlmdDsKKwkJbXkgKCRuYW1l LCAkcGFzcywgJHVpZCwgJHBnaWQsICRxdW90YSwgJGNvbW1lbnQsICRnY29zLCAkZGlyLCAkc2hl bGwsICRleHBpcmUpID0gZ2V0cHduYW0oJHVzZXIpOworCQlpZiAoISAkbmFtZSkKKwkJeworCQkJ cHJpbnQgIkNhbm5vdCBmaW5kIHVzZXIgKCR1c2VyKVxuIjsKKwkJCXJldHVybjsKKwkJfSBlbHNp ZiAoJG5hbWUgZXEgInJvb3QiKSB7CisJCQlwcmludCAiVGhlIHN1cGVyLXVzZXIgXCJyb290XCIg aXMgbm90IGFsbG93ZWQgdG8gdXNlIFgyR29cbiI7CisJCQlyZXR1cm47CisJCX0KKwkJJHBhc3M9 YHB3Z2VuIDggMWA7CisJCWNob21wKCRwYXNzKTsKKwkKKwkJbXkgJHN0aD0kZGJoLT5wcmVwYXJl KCJSRVZPS0UgQUxMIFBSSVZJTEVHRVMgT04gc2Vzc2lvbnMsIHVzZWRfcG9ydHMsIG1vdW50cyBG Uk9NIFwieDJnb3VzZXJfJHVzZXJcIiIpOworCQkkc3RoLT57V2Fybn09MDsKKwkJJHN0aC0+e1By aW50RXJyb3J9PTA7CisJCSRzdGgtPmV4ZWN1dGUoKTsKKwkKKwkJbXkgJHN0aD0kZGJoLT5wcmVw YXJlKCJSRVZPS0UgQUxMIFBSSVZJTEVHRVMgT04gc2Vzc2lvbnNfdmlldywgbW91bnRzX3ZpZXcs IHNlcnZlcnNfdmlldywgcG9ydHNfdmlldyBGUk9NIFwieDJnb3VzZXJfJHVzZXJcIiIpOworCQkk c3RoLT57V2Fybn09MDsKKwkJJHN0aC0+e1ByaW50RXJyb3J9PTA7CisJCSRzdGgtPmV4ZWN1dGUo KTsKKwkKKwkJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCJEUk9QIE9XTkVEIEJZIFwieDJnb3VzZXJf JHVzZXJcIiIpOworCQkkc3RoLT57V2Fybn09MDsKKwkJJHN0aC0+e1ByaW50RXJyb3J9PTA7CisJ CSRzdGgtPmV4ZWN1dGUoKTsKKwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCJkcm9wIFVTRVIgaWYg ZXhpc3RzIFwieDJnb3VzZXJfJHVzZXJcIiIpOworCQkkc3RoLT57V2Fybn09MDsKKwkJJHN0aC0+ e1ByaW50RXJyb3J9PTA7CisJCSRzdGgtPmV4ZWN1dGUoKTsKKwkKKwkJcHJpbnQgKCJjcmVhdGUg REIgdXNlciBcIngyZ291c2VyXyR1c2VyXCJcbiIpOworCQkkc3RoPSRkYmgtPnByZXBhcmUoImNy ZWF0ZSBVU0VSIFwieDJnb3VzZXJfJHVzZXJcIiBXSVRIIEVOQ1JZUFRFRCBQQVNTV09SRCAnJHBh c3MnIik7CisJCSRzdGgtPmV4ZWN1dGUoKTsKKwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCJHUkFO VCBJTlNFUlQsIFVQREFURSwgREVMRVRFIE9OIHNlc3Npb25zLCB1c2VkX3BvcnRzLCBtb3VudHMg VE8gXCJ4MmdvdXNlcl8kdXNlclwiIik7CisJCSRzdGgtPmV4ZWN1dGUoKTsKKwkKKwkJJHN0aD0k ZGJoLT5wcmVwYXJlKCJHUkFOVCBTRUxFQ1QgT04gdXNlZF9wb3J0cyBUTyBcIngyZ291c2VyXyR1 c2VyXCIiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpOworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUoIkdS QU5UIFNFTEVDVCwgVVBEQVRFLCBERUxFVEUgT04gc2Vzc2lvbnNfdmlldywgbW91bnRzX3ZpZXcs IHNlcnZlcnNfdmlldywgcG9ydHNfdmlldyBUTyBcIngyZ291c2VyXyR1c2VyXCIiKTsKKwkJJHN0 aC0+ZXhlY3V0ZSgpOworCQkkc3RoLT5maW5pc2goKTsKKwkKKwkJaWYgKCEgLWQgIiRkaXIvLngy Z28iICkKKwkJeworCQkJCWlmICggZGVmaW5lZCAoJkZpbGU6OlBhdGg6Om1ha2VfcGF0aCkgKQor CQkJCXsKKwkJCQkJRmlsZTo6UGF0aDo6bWFrZV9wYXRoKCIkZGlyLy54MmdvIik7CisJCQkJfQor CQkJCWVsc2lmICggZGVmaW5lZCAoJkZpbGU6OlBhdGg6Om1rcGF0aCkgKQorCQkJCXsKKwkJCQkJ RmlsZTo6UGF0aDo6bWtwYXRoKCIkZGlyLy54MmdvIik7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7 CisJCQkJCWRpZSAiVW5hYmxlIHRvIGNyZWF0ZSBmb2xkZXJzIHdpdGggRmlsZTo6UGF0aCI7CisJ CQkJfQorCQl9CisJCisJCSNzYXZlIHVzZXIgcGFzc3dvcmQKKwkJb3BlbiAoRkwsIj4gJGRpci8u eDJnby9zcWxwYXNzIikgb3IgZGllICJDYW4ndCBvcGVuIHBhc3N3b3JkIGZpbGUgJGRpci8ueDJn by9zcWxwYXNzIjsKKwkJcHJpbnQgRkwgJHBhc3M7CisJCWNsb3NlKEZMKTsKKwkJY2htb2QoMDcw MCwiJGRpci8ueDJnbyIpOworCQljaG93bigkdWlkLCRwZ2lkLCIkZGlyLy54MmdvIik7CisJCWNo bW9kKDA2MDAsIiRkaXIvLngyZ28vc3FscGFzcyIpOworCQljaG93bigkdWlkLCRwZ2lkLCIkZGly Ly54MmdvL3NxbHBhc3MiKTsKKwl9CisJCisJc3ViIGNyZWF0ZV90YWJsZXMoKQorCXsKKwkJJGRi aD1EQkktPmNvbm5lY3QoImRiaTpQZzpkYm5hbWU9JGRiO2hvc3Q9JGhvc3Q7cG9ydD0kcG9ydDtz c2xtb2RlPSRzc2xtb2RlIiwgIiRkYmFkbWluIiwgIiRkYmFkbWlucGFzcyIse0F1dG9Db21taXQg PT4gMX0pIG9yIGRpZSAkXzsKKwkJbXkgJHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJICAgICAgICAg ICAgICAgICAgICAgIGNyZWF0ZSB0YWJsZSBzZXNzaW9ucygKKwkJICAgICAgICAgICAgICAgICAg ICAgIHNlc3Npb25faWQgdGV4dCBwcmltYXJ5IGtleSwKKwkJICAgICAgICAgICAgICAgICAgICAg IGRpc3BsYXkgaW50ZWdlciBub3QgbnVsbCwKKwkJICAgICAgICAgICAgICAgICAgICAgIHVuYW1l IHRleHQgbm90IG51bGwsCisJCSAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIgdGV4dCBub3Qg bnVsbCwKKwkJICAgICAgICAgICAgICAgICAgICAgIGNsaWVudCBpbmV0LAorCQkgICAgICAgICAg ICAgICAgICAgICAgc3RhdHVzIGNoYXIoMSkgbm90IG51bGwgZGVmYXVsdCAnUicsCisJCSAgICAg ICAgICAgICAgICAgICAgICBpbml0X3RpbWUgdGltZXN0YW1wIG5vdCBudWxsIGRlZmF1bHQgbm93 KCksCisJCSAgICAgICAgICAgICAgICAgICAgICBsYXN0X3RpbWUgdGltZXN0YW1wIG5vdCBudWxs IGRlZmF1bHQgbm93KCksCisJCSAgICAgICAgICAgICAgICAgICAgICBjb29raWUgY2hhcigzMyks CisJCSAgICAgICAgICAgICAgICAgICAgICBhZ2VudF9waWQgaW50LAorCQkgICAgICAgICAgICAg ICAgICAgICAgZ3JfcG9ydCBpbnQsCisJCSAgICAgICAgICAgICAgICAgICAgICBzb3VuZF9wb3J0 IGludCwKKwkJICAgICAgICAgICAgICAgICAgICAgIGZzX3BvcnQgaW50LAorCQkgICAgICAgICAg ICAgICAgICAgICAgdGVraWN0cmxfcG9ydCBpbnQsCisJCSAgICAgICAgICAgICAgICAgICAgICB0 ZWtpZGF0YV9wb3J0IGludCwKKwkJICAgICAgICAgICAgICAgICAgICAgIGNyZWF0b3JfaWQgdGV4 dCBOT1QgTlVMTCBkZWZhdWx0IGN1cnJlbnRfdXNlciwKKwkJICAgICAgICAgICAgICAgICAgICAg IHVuaXF1ZShkaXNwbGF5KSkKKwkJICAgICAgICAgICAgICAgICAgICAgICIpOworCQkkc3RoLT5l eGVjdXRlKCkgb3IgZGllOworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAgICAgICAg ICAgICAgICAgY3JlYXRlIFZJRVcgc2Vzc2lvbnNfdmlldyBhcworCQkgICAgICAgICAgICAgICAg ICAgU0VMRUNUCisJCSAgICAgICAgICAgICAgICAgICBhZ2VudF9waWQsIHNlc3Npb25faWQsIGRp c3BsYXksIHNlcnZlciwgc3RhdHVzLCBpbml0X3RpbWUsIGNvb2tpZSwgY2xpZW50LCBncl9wb3J0 LAorCQkgICAgICAgICAgICAgICAgICAgc291bmRfcG9ydCwgbGFzdF90aW1lLCB1bmFtZSwgZnNf cG9ydCwgdGVraWN0cmxfcG9ydCwgdGVraWRhdGFfcG9ydCBmcm9tIHNlc3Npb25zCisJCSAgICAg ICAgICAgICAgICAgICB3aGVyZSBjcmVhdG9yX2lkID0gY3VycmVudF91c2VyCisJCSAgICAgICAg ICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkKKwkJJHN0aD0kZGJo LT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBWSUVXIHNlcnZlcnNfdmll dyBhcworCQkgICAgICAgICAgICAgICAgICAgU0VMRUNUCisJCSAgICAgICAgICAgICAgICAgICBz ZXJ2ZXIsIGRpc3BsYXksIHN0YXR1cyBmcm9tIHNlc3Npb25zCisJCSAgICAgICAgICAgICAgICAg ICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJl KCIKKwkJICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBvciByZXBsYWNlIFJVTEUgdXBkYXRlX3Nl c3NfcHJpdiBBUyBPTiBVUERBVEUKKwkJICAgICAgICAgICAgICAgICAgIFRPIHNlc3Npb25zIHdo ZXJlIChPTEQuY3JlYXRvcl9pZCA8PiBjdXJyZW50X3VzZXIgb3IgT0xELmNyZWF0b3JfaWQgPD4g TkVXLmNyZWF0b3JfaWQpIGFuZCBjdXJyZW50X3VzZXIgPD4gJyR4MmdvYWRtaW4nCisJCSAgICAg ICAgICAgICAgICAgICBETyBJTlNURUFEIE5PVEhJTkcKKwkJICAgICAgICAgICAgICAgICAgICIp OworCQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUoIgor CQkgICAgICAgICAgICAgICAgICAgY3JlYXRlIG9yIHJlcGxhY2UgUlVMRSBpbnNlcnRfc2Vzc19w cml2IEFTIE9OIElOU0VSVAorCQkgICAgICAgICAgICAgICAgICAgVE8gc2Vzc2lvbnMgd2hlcmUg TkVXLmNyZWF0b3JfaWQgPD4gY3VycmVudF91c2VyIGFuZCBjdXJyZW50X3VzZXIgPD4gJyR4Mmdv YWRtaW4nCisJCSAgICAgICAgICAgICAgICAgICBETyBJTlNURUFEIE5PVEhJTkcKKwkJICAgICAg ICAgICAgICAgICAgICIpOworCQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOworCQorCQkkc3RoPSRk YmgtPnByZXBhcmUoIgorCQkgICAgICAgICAgICAgICAgICAgY3JlYXRlIG9yIHJlcGxhY2UgUlVM RSBkZWxldGVfc2Vzc19wcml2IEFTIE9OIERFTEVURQorCQkgICAgICAgICAgICAgICAgICAgVE8g c2Vzc2lvbnMgd2hlcmUgT0xELmNyZWF0b3JfaWQgPD4gY3VycmVudF91c2VyIGFuZCBjdXJyZW50 X3VzZXIgPD4gJyR4MmdvYWRtaW4nCisJCSAgICAgICAgICAgICAgICAgICBETyBJTlNURUFEIE5P VEhJTkcKKwkJICAgICAgICAgICAgICAgICAgICIpOworCQkkc3RoLT5leGVjdXRlKCkgb3IgZGll OworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAgICAgICAgICAgICAgICAgY3JlYXRl IG9yIHJlcGxhY2UgUlVMRSB1cGRhdGVfc2Vzc192aWV3IEFTIE9OIFVQREFURQorCQkgICAgICAg ICAgICAgICAgICAgVE8gc2Vzc2lvbnNfdmlldyBETyBJTlNURUFECisJCSAgICAgICAgICAgICAg ICAgICB1cGRhdGUgc2Vzc2lvbnMgc2V0CisJCSAgICAgICAgICAgICAgICAgICBzdGF0dXM9TkVX LnN0YXR1cywKKwkJICAgICAgICAgICAgICAgICAgIGxhc3RfdGltZT1ORVcubGFzdF90aW1lLAor CQkgICAgICAgICAgICAgICAgICAgY29va2llPU5FVy5jb29raWUsCisJCSAgICAgICAgICAgICAg ICAgICBhZ2VudF9waWQ9TkVXLmFnZW50X3BpZCwKKwkJICAgICAgICAgICAgICAgICAgIGNsaWVu dD1ORVcuY2xpZW50LAorCQkgICAgICAgICAgICAgICAgICAgZ3JfcG9ydD1ORVcuZ3JfcG9ydCwK KwkJICAgICAgICAgICAgICAgICAgIHNvdW5kX3BvcnQ9TkVXLnNvdW5kX3BvcnQsCisJCSAgICAg ICAgICAgICAgICAgICBmc19wb3J0PU5FVy5mc19wb3J0LAorCQkgICAgICAgICAgICAgICAgICAg dGVraWN0cmxfcG9ydD1ORVcudGVraWN0cmxfcG9ydCwKKwkJICAgICAgICAgICAgICAgICAgIHRl a2lkYXRhX3BvcnQ9TkVXLnRla2lkYXRhX3BvcnQKKwkJICAgICAgICAgICAgICAgICAgIHdoZXJl IHNlc3Npb25faWQ9T0xELnNlc3Npb25faWQgYW5kIGNyZWF0b3JfaWQ9Y3VycmVudF91c2VyCisJ CSAgICAgICAgICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkKKwkJ JHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAgICAgICAgIGNyZWF0ZSB0YWJsZSBt ZXNzYWdlcyhtZXNzX2lkIHZhcmNoYXIoMjApIHByaW1hcnkga2V5LCBtZXNzYWdlIHRleHQpCisJ CSAgICAgICAgICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkKKwkJ JHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAgICAgICAgIGNyZWF0ZSB0YWJsZSB1 c2VyX21lc3NhZ2VzKAorCQkgICAgICAgICAgICAgICAgICAgbWVzc19pZCB0ZXh0IG5vdCBudWxs LAorCQkgICAgICAgICAgICAgICAgICAgdW5hbWUgdGV4dCBub3QgbnVsbCkKKwkJICAgICAgICAg ICAgICAgICAgICIpOworCQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOworCQorCQkkc3RoPSRkYmgt PnByZXBhcmUoIgorCQkgICAgICAgICAgICAgICAgICAgY3JlYXRlIHRhYmxlIHVzZWRfcG9ydHMo CisJCSAgICAgICAgICAgICAgICAgICBzZXJ2ZXIgdGV4dCBub3QgbnVsbCwKKwkJICAgICAgICAg ICAgICAgICAgIHNlc3Npb25faWQgdGV4dCByZWZlcmVuY2VzIHNlc3Npb25zIG9uIGRlbGV0ZSBj YXNjYWRlLAorCQkgICAgICAgICAgICAgICAgICAgY3JlYXRvcl9pZCB0ZXh0IE5PVCBOVUxMIGRl ZmF1bHQgY3VycmVudF91c2VyLAorCQkgICAgICAgICAgICAgICAgICAgcG9ydCBpbnRlZ2VyIHBy aW1hcnkga2V5KQorCQkgICAgICAgICAgICAgICAgICAgIik7CisJCSRzdGgtPmV4ZWN1dGUoKSBv ciBkaWU7CisJCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiCisJCSAgICAgICAgICAgICAgICAgICBj cmVhdGUgVklFVyBwb3J0c192aWV3IGFzCisJCSAgICAgICAgICAgICAgICAgICBTRUxFQ1QKKwkJ ICAgICAgICAgICAgICAgICAgIHNlcnZlciwgcG9ydCBmcm9tIHVzZWRfcG9ydHMKKwkJICAgICAg ICAgICAgICAgICAgICIpOworCQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOworCQorCQkkc3RoPSRk YmgtPnByZXBhcmUoIgorCQkgICAgICAgICAgICAgICAgICAgY3JlYXRlIG9yIHJlcGxhY2UgUlVM RSBpbnNlcnRfcG9ydF9wcml2IEFTIE9OIElOU0VSVAorCQkgICAgICAgICAgICAgICAgICAgVE8g dXNlZF9wb3J0cyB3aGVyZSBORVcuY3JlYXRvcl9pZCA8PiBjdXJyZW50X3VzZXIgYW5kIGN1cnJl bnRfdXNlciA8PiAnJHgyZ29hZG1pbicKKwkJICAgICAgICAgICAgICAgICAgIERPIElOU1RFQUQg Tk9USElORworCQkgICAgICAgICAgICAgICAgICAgIik7CisJCSRzdGgtPmV4ZWN1dGUoKSBvciBk aWU7CisJCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiCisJCSAgICAgICAgICAgICAgICAgICBjcmVh dGUgb3IgcmVwbGFjZSBSVUxFIHVwZGF0ZV9wb3J0X3ByaXYgQVMgT04gVVBEQVRFCisJCSAgICAg ICAgICAgICAgICAgICBUTyB1c2VkX3BvcnRzIHdoZXJlIChORVcuY3JlYXRvcl9pZCA8PiBjdXJy ZW50X3VzZXIgb3IgT0xELmNyZWF0b3JfaWQgPD4gY3VycmVudF91c2VyKSBhbmQgY3VycmVudF91 c2VyIDw+ICckeDJnb2FkbWluJworCQkgICAgICAgICAgICAgICAgICAgRE8gSU5TVEVBRCBOT1RI SU5HCisJCSAgICAgICAgICAgICAgICAgICAiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsK KwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBv ciByZXBsYWNlIFJVTEUgZGVsZXRlX3BvcnRfcHJpdiBBUyBPTiBERUxFVEUKKwkJICAgICAgICAg ICAgICAgICAgIFRPIHVzZWRfcG9ydHMgd2hlcmUgT0xELmNyZWF0b3JfaWQgPD4gY3VycmVudF91 c2VyIGFuZCBjdXJyZW50X3VzZXIgPD4gJyR4MmdvYWRtaW4nCisJCSAgICAgICAgICAgICAgICAg ICBETyBJTlNURUFEIE5PVEhJTkcKKwkJICAgICAgICAgICAgICAgICAgICIpOworCQkkc3RoLT5l eGVjdXRlKCkgb3IgZGllOworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAgICAgICAg ICAgICAgICAgY3JlYXRlIHRhYmxlIG1vdW50cygKKwkJICAgICAgICAgICAgICAgICAgIHNlc3Np b25faWQgdGV4dCByZWZlcmVuY2VzIHNlc3Npb25zIG9uIGRlbGV0ZSByZXN0cmljdCwKKwkJICAg ICAgICAgICAgICAgICAgIHBhdGggdGV4dCBub3QgbnVsbCwKKwkJICAgICAgICAgICAgICAgICAg IGNsaWVudCBpbmV0IG5vdCBudWxsLAorCQkgICAgICAgICAgICAgICAgICAgY3JlYXRvcl9pZCB0 ZXh0IE5PVCBOVUxMIGRlZmF1bHQgY3VycmVudF91c2VyLAorCQkgICAgICAgICAgICAgICAgICAg cHJpbWFyeSBrZXkocGF0aCxjbGllbnQpKQorCQkgICAgICAgICAgICAgICAgICAgIik7CisJCSRz dGgtPmV4ZWN1dGUoKSBvciBkaWU7CisJCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiCisJCSAgICAg ICAgICAgICAgICAgICBjcmVhdGUgVklFVyBtb3VudHNfdmlldyBhcworCQkgICAgICAgICAgICAg ICAgICAgU0VMRUNUCisJCSAgICAgICAgICAgICAgICAgICBjbGllbnQscGF0aCwgc2Vzc2lvbl9p ZCBmcm9tIG1vdW50cworCQkgICAgICAgICAgICAgICAgICAgd2hlcmUgY3JlYXRvcl9pZCA9IGN1 cnJlbnRfdXNlcgorCQkgICAgICAgICAgICAgICAgICAgIik7CisJCSRzdGgtPmV4ZWN1dGUoKSBv ciBkaWU7CisJCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiCisJCSAgICAgICAgICAgICAgICAgICBj cmVhdGUgb3IgcmVwbGFjZSBSVUxFIGRlbGV0ZV9tb3VudHNfdmlldyBBUyBPTiBERUxFVEUKKwkJ ICAgICAgICAgICAgICAgICAgIFRPIG1vdW50c192aWV3IERPIElOU1RFQUQKKwkJICAgICAgICAg ICAgICAgICAgIGRlbGV0ZSBmcm9tIG1vdW50cworCQkgICAgICAgICAgICAgICAgICAgd2hlcmUg c2Vzc2lvbl9pZD1PTEQuc2Vzc2lvbl9pZCBhbmQgY3JlYXRvcl9pZD1jdXJyZW50X3VzZXIgYW5k IHBhdGg9T0xELnBhdGgKKwkJICAgICAgICAgICAgICAgICAgICIpOworCQkkc3RoLT5leGVjdXRl KCkgb3IgZGllOworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUoIgorCQkgICAgICAgICAgICAgICAg ICAgY3JlYXRlIG9yIHJlcGxhY2UgUlVMRSBpbnNlcnRfbW91bnRfcHJpdiBBUyBPTiBJTlNFUlQK KwkJICAgICAgICAgICAgICAgICAgIFRPIG1vdW50cyB3aGVyZSBORVcuY3JlYXRvcl9pZCA8PiBj dXJyZW50X3VzZXIgYW5kIGN1cnJlbnRfdXNlciA8PiAnJHgyZ29hZG1pbicKKwkJICAgICAgICAg ICAgICAgICAgIERPIElOU1RFQUQgTk9USElORworCQkgICAgICAgICAgICAgICAgICAgIik7CisJ CSRzdGgtPmV4ZWN1dGUoKSBvciBkaWU7CisJCisJCSRzdGg9JGRiaC0+cHJlcGFyZSgiCisJCSAg ICAgICAgICAgICAgICAgICBjcmVhdGUgb3IgcmVwbGFjZSBSVUxFIHVwZGF0ZV9tb3VudF9wcml2 IEFTIE9OIFVQREFURQorCQkgICAgICAgICAgICAgICAgICAgVE8gbW91bnRzIHdoZXJlIChORVcu Y3JlYXRvcl9pZCA8PiBjdXJyZW50X3VzZXIgb3IgT0xELmNyZWF0b3JfaWQgPD4gY3VycmVudF91 c2VyKSBhbmQgY3VycmVudF91c2VyIDw+ICckeDJnb2FkbWluJworCQkgICAgICAgICAgICAgICAg ICAgRE8gSU5TVEVBRCBOT1RISU5HCisJCSAgICAgICAgICAgICAgICAgICAiKTsKKwkJJHN0aC0+ ZXhlY3V0ZSgpIG9yIGRpZTsKKwkKKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCIKKwkJICAgICAgICAg ICAgICAgICAgIGNyZWF0ZSBvciByZXBsYWNlIFJVTEUgZGVsZXRlX21vdW50X3ByaXYgQVMgT04g REVMRVRFCisJCSAgICAgICAgICAgICAgICAgICBUTyBtb3VudHMgd2hlcmUgT0xELmNyZWF0b3Jf aWQgPD4gY3VycmVudF91c2VyIGFuZCBjdXJyZW50X3VzZXIgPD4gJyR4MmdvYWRtaW4nCisJCSAg ICAgICAgICAgICAgICAgICBETyBJTlNURUFEIE5PVEhJTkcKKwkJICAgICAgICAgICAgICAgICAg ICIpOworCQkkc3RoLT5leGVjdXRlKCkgb3IgZGllOworCQorCQkkc3RoPSRkYmgtPnByZXBhcmUo IkdSQU5UIEFMTCBQUklWSUxFR0VTIE9OIHNlc3Npb25zLCBtZXNzYWdlcywgdXNlcl9tZXNzYWdl cywgdXNlZF9wb3J0cywgbW91bnRzIFRPICR4MmdvYWRtaW4iKTsKKwkJJHN0aC0+ZXhlY3V0ZSgp IG9yIGRpZTsKKwkJJHN0aC0+ZmluaXNoKCk7CisJCXVuZGVmICRkYmg7CisJfQorCQorCXN1YiBj cmVhdGVfZGF0YWJhc2UKKwl7CisJCW15ICRkYmg9REJJLT5jb25uZWN0KCJkYmk6UGc6ZGJuYW1l PXBvc3RncmVzO2hvc3Q9JGhvc3Q7cG9ydD0kcG9ydDtzc2xtb2RlPSRzc2xtb2RlIiwgIiRkYmFk bWluIiwgIiRkYmFkbWlucGFzcyIse0F1dG9Db21taXQgPT4gMX0pIG9yIGRpZSAkXzsKKwkJI2Ry b3AgZGIgaWYgZXhpc3RzCisJCW15ICRzdGg9JGRiaC0+cHJlcGFyZSgiZHJvcCBkYXRhYmFzZSBp ZiBleGlzdHMgJGRiIik7CisJCSRzdGgtPmV4ZWN1dGUoKTsKKwkJI2Ryb3AgeDJnb2FkbWluCisJ CSRzdGg9JGRiaC0+cHJlcGFyZSgiZHJvcCB1c2VyIGlmIGV4aXN0cyAkeDJnb2FkbWluIik7CisJ CSRzdGgtPmV4ZWN1dGUoKTsKKwkJI2NyZWF0ZSBkYgorCQkkc3RoPSRkYmgtPnByZXBhcmUoImNy ZWF0ZSBkYXRhYmFzZSAkZGIiKTsKKwkJJHN0aC0+ZXhlY3V0ZSgpIG9yIGRpZTsKKwkJI2NyZWF0 ZSB4MmdvYWRtaW4KKwkJJHN0aD0kZGJoLT5wcmVwYXJlKCJjcmVhdGUgVVNFUiAkeDJnb2FkbWlu IFdJVEggRU5DUllQVEVEIFBBU1NXT1JEICckeDJnb2FkbWlucGFzcyciKTsKKwkJJHN0aC0+ZXhl Y3V0ZSgpIG9yIGRpZTsKKwkJI3NhdmUgeDJnb2FkbWluIHBhc3N3b3JkCisJCW9wZW4gKEZMLCI+ IC9ldGMveDJnby94Mmdvc3FsL3Bhc3N3b3Jkcy94MmdvYWRtaW4gIikgb3IgZGllICJDYW4ndCB3 cml0ZSBwYXNzd29yZCBmaWxlIC9ldGMveDJnby94Mmdvc3FsL3Bhc3N3b3Jkcy94MmdvYWRtaW4i OworCQlwcmludCBGTCAkeDJnb2FkbWlucGFzczsKKwkJY2xvc2UoRkwpOworCQkkc3RoLT5maW5p c2goKTsKKwkJdW5kZWYgJGRiaDsKKwl9CiB9Cg== ------=_Part_23212334_788228192.1508519775114-- From unknown Fri Mar 29 10:13:04 2024 X-Loop: owner@bugs.x2go.org Subject: Bug#1135: MySQL session backend Reply-To: Walid MOGHRABI , 1135@bugs.x2go.org Resent-From: Walid MOGHRABI Resent-To: x2go-dev@lists.x2go.org Resent-CC: X2Go Developers X-Loop: owner@bugs.x2go.org Resent-Date: Fri, 20 Oct 2017 17:25:02 +0000 Resent-Message-ID: Resent-Sender: owner@bugs.x2go.org X-X2Go-PR-Message: followup 1135 X-X2Go-PR-Package: x2goserver X-X2Go-PR-Keywords: patch Received: via spool by 1135-submit@bugs.x2go.org id=B1135.15085201883735 (code B ref 1135); Fri, 20 Oct 2017 17:25:02 +0000 Received: (at 1135) by bugs.x2go.org; 20 Oct 2017 17:23:08 +0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on ymir.das-netzwerkteam.de X-Spam-Level: X-Spam-Status: No, score=0.7 required=3.0 tests=BAYES_50,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.1 Received: from localhost (localhost [127.0.0.1]) by ymir.das-netzwerkteam.de (Postfix) with ESMTP id 1E4125DAD5 for <1135@bugs.x2go.org>; Fri, 20 Oct 2017 19:23:06 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at ymir.das-netzwerkteam.de Received: from ymir.das-netzwerkteam.de ([127.0.0.1]) by localhost (ymir.das-netzwerkteam.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id HsFO_xyZqspP for <1135@bugs.x2go.org>; Fri, 20 Oct 2017 19:23:01 +0200 (CEST) Received: from zm-01.servicemagic.eu (zm-01.servicemagic.eu [176.31.236.17]) by ymir.das-netzwerkteam.de (Postfix) with ESMTPS id 0E8D95DAD2 for <1135@bugs.x2go.org>; Fri, 20 Oct 2017 19:22:54 +0200 (CEST) Received: from localhost (localhost.localdomain [127.0.0.1]) by zm-01.servicemagic.eu (Postfix) with ESMTP id 461DC806BB9FA for <1135@bugs.x2go.org>; Fri, 20 Oct 2017 19:22:54 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 zm-01.servicemagic.eu 461DC806BB9FA DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=servicemagic.eu; s=frmailing; t=1508520174; bh=zIcVDh0WO1yv8hrMu36f0lKDkU+DdPUrup/CTB1pM30=; h=Date:From:To:In-Reply-To:Subject:From; b=fVu2oi1GLCzynE475GA6dQSmk58+NWGdkkBqzvYMVebbatclgZRTNENqe3cF1Jixs +Bz/R52uc+qYuzYJXxvmO34JZT3Hz1YJUscYjhR2j58q3fJXeyUHmVA5kjDG1mYzxq sftHp37QwUGcMA0frQn8GvqR2DVGIuLA+8BZa/eY= X-Amavis-Modified: Mail body modified (using disclaimer) - zm-01.servicemagic.eu X-Virus-Scanned: amavisd-new at servicemagic.eu Received: from zm-01.servicemagic.eu ([127.0.0.1]) by localhost (zm-01.servicemagic.eu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 433FydcXAQuv for <1135@bugs.x2go.org>; Fri, 20 Oct 2017 19:22:53 +0200 (CEST) Received: from zm-01.servicemagic.eu (localhost.localdomain [127.0.0.1]) by zm-01.servicemagic.eu (Postfix) with ESMTP id AFF56803CC7A0 for <1135@bugs.x2go.org>; Fri, 20 Oct 2017 19:22:53 +0200 (CEST) Date: Fri, 20 Oct 2017 19:22:53 +0200 (CEST) From: Walid MOGHRABI To: 1135@bugs.x2go.org Message-ID: <1771045338.23212704.1508520173603.JavaMail.root@servicemagic.eu> In-Reply-To: <923785969.23212689.1508520104326.JavaMail.root@servicemagic.eu> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_23212702_529476273.1508520173603" X-Originating-IP: [10.33.100.58] X-Mailer: Zimbra 7.2.0_GA_2669 (ZimbraWebClient - GC62 (Linux)/7.2.0_GA_2669) ------=_Part_23212702_529476273.1508520173603 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit I forgot the modified /etc/x2go/x2gosql/sql file ... Regards, Walid Moghrabi TRAVAUX.COM BAT I - PARC CEZANNE 2 290 AVENUE GALILEE - CS 80403 13591 AIX EN PROVENCE CEDEX 3 --- DISCLAIMER: This e-mail is private and confidential and may contain proprietary or legally privileged information. It is for the intended recipient only. If you have received this email in error, please notify the author by replying to it and then destroy it. If you are not the intended recipient you must not use, disclose, distribute, copy, print or rely on this e-mail or any attachment. Thank you ------=_Part_23212702_529476273.1508520173603 Content-Type: text/x-patch; name=sql-conf.patch Content-Disposition: attachment; filename=sql-conf.patch Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3gyZ29zZXJ2ZXItY29tbW9uL2V0Yy94Mmdvc3FsL3NxbCBiL3gyZ29zZXJ2 ZXItY29tbW9uL2V0Yy94Mmdvc3FsL3NxbAppbmRleCA2NmE3ZjdkLi5jY2YxYTZlIDEwMDY0NAot LS0gYS94Mmdvc2VydmVyLWNvbW1vbi9ldGMveDJnb3NxbC9zcWwKKysrIGIveDJnb3NlcnZlci1j b21tb24vZXRjL3gyZ29zcWwvc3FsCkBAIC0xLDQgKzEsNCBAQAotI3Bvc3RncmVzIG9yIHNxbGl0 ZQorI3Bvc3RncmVzIG9yIG15c3FsIG9yIHNxbGl0ZQogYmFja2VuZD1zcWxpdGUKIAogW3Bvc3Rn cmVzXQpAQCAtMTIsMyArMTIsMTEgQEAKICNyZXF1aXJlOiBjb25uZWN0IG9ubHkgd2l0aCBTU0wK ICNkZWZhdWx0IC0gcHJlZmVyCiBzc2w9cHJlZmVyCisKK1tteXNxbF0KK2hvc3Q9bG9jYWxob3N0 Citwb3J0PTMzMDYKKyNyZXN0cmljdCB1c2VycyBuZXR3b3JrLCAiJSIgZm9yIGFueQordW5ldD0l CisjZGF0YWJhc2UgYWRtaW4gKG11c3QgaGF2ZSBwZXJtaXNzaW9ucyB0byBjcmVhdGUgZGF0YWJh c2VzIGFuZCB1c2VycykKK2RiYWRtaW49cm9vdAo= ------=_Part_23212702_529476273.1508520173603--