Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rSH6n-00CaNH-Ci for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Jan 2024 13:46:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rSH6l-00D4nI-LI for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Jan 2024 13:46:31 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rSH6k-00D4nA-O7 for pgsql-hackers@lists.postgresql.org; Tue, 23 Jan 2024 13:46:31 +0000 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rSH6g-003J2U-Ii for pgsql-hackers@postgresql.org; Tue, 23 Jan 2024 13:46:30 +0000 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-2909a632e40so1233719a91.0 for ; Tue, 23 Jan 2024 05:46:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706017584; x=1706622384; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=3TIhnOX/l0JORVbpwI829LfDLA31kyRX/QjA1rJioUY=; b=iasLjZBVdQ+Ct5kPkoBzsFMU3dDdB1l6XZZZUule1E0F6+D58TcHJj8G0d8RcSjxh0 YfJHgiTGmp3UQ9ALWaM+l3kl1Qu4hreYtiP5xV62N1ug9+q0goT21ulDn/iJa6vEMxIU VDN0o7mpk8Czb8D6hEmLCfclCEghkhh/wZWvAKd4ofcB4A5y6iTU7ZTI7Id6gt9C1SfI sDJugJd+kcu4HpmtrEYAla55IqhlMOnr/kvZbbWJP62CyFfOD0JsDZvfD5qHqQFmy35v NpmH+jLrktn+VpL5UjaAlC+myGtdkviUYFTaYUelFDM5Lb7/+jXxoYQioyHf3RhrPZHf PT5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706017584; x=1706622384; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=3TIhnOX/l0JORVbpwI829LfDLA31kyRX/QjA1rJioUY=; b=nAjK3d6fq3+rt2TiFpxljY/mCytsec9Pm6XBz8H+3QbXGjZ90nRMtyjpmo4vF5Ye3F cVPQTVJB1KVnGCeq0TtvEQjYkp4I940kmyFzl3ZTMrWLNvQiejY/YCkZ0VfDfEmSh5g6 TFg0q2faf4GFQRSHcvPQ65hyoc1GXEYLsbJ5H0Rfz94PCjeRJ5dAOU9ZrwumsDe3zxSv L5Nhe2s3aQhsgjwGa+Bup/pnd3QiPb6/uD98SJeGmRYkxicod9BDJROmNBdacv32Taa4 G5iRWrOcmyq+tz+9xW56tXeRLfxu5QCdIfnOF1Cl5XzqOR8VD0QikZ1wAK6mzapF0jpi t1lQ== X-Gm-Message-State: AOJu0YzbTE4FLTFEDFZBF+PJievpnuNs9L2oXXcSKXRmfTlx/gXzpZaH IJTTmpkqECJT43XXYhUr86g362JbekCDnS8TD4SCrWELB5C0tR0EeosCkXqa53TwOCKo0fYDMYp Ap8P4DGRvJb8J/KaAukG4HNppJkw= X-Google-Smtp-Source: AGHT+IGT4hGRNRGwWQ5PbQiKMD7gT3RbBRqpEofLIVbw3M7c+5x1zqhU3ocfhQLLwQVStm9B5QirKeqwJMn0U4zAKjM= X-Received: by 2002:a17:90a:ff84:b0:28c:2cd8:583a with SMTP id hf4-20020a17090aff8400b0028c2cd8583amr2462670pjb.9.1706017584083; Tue, 23 Jan 2024 05:46:24 -0800 (PST) MIME-Version: 1.0 References: <202401181711.qxjxpnl3ohnw@alvherre.pgsql> <202401221619.ragf2vnbyopl@alvherre.pgsql> In-Reply-To: <202401221619.ragf2vnbyopl@alvherre.pgsql> From: Amit Langote Date: Tue, 23 Jan 2024 22:46:06 +0900 Message-ID: Subject: Re: remaining sql/json patches To: Alvaro Herrera Cc: Andres Freund , Erik Rijkers , jian he , Andrew Dunstan , PostgreSQL-development Content-Type: multipart/mixed; boundary="00000000000015508a060f9d2c00" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000015508a060f9d2c00 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Jan 23, 2024 at 1:19=E2=80=AFAM Alvaro Herrera wrote: > On 2024-Jan-18, Alvaro Herrera wrote: > > > commands/explain.c (Hmm, I think this is a preexisting bug actually) > > > > > > 3893 18 : case T_TableFuncScan: > > > 3894 18 : Assert(rte->rtekind =3D=3D RTE_TAB= LEFUNC); > > > 3895 18 : if (rte->tablefunc) > > > 3896 0 : if (rte->tablefunc->functype = =3D=3D TFT_XMLTABLE) > > > 3897 0 : objectname =3D "xmltable"; > > > 3898 : else /* Must be TFT= _JSON_TABLE */ > > > 3899 0 : objectname =3D "json_table= "; > > > 3900 : else > > > 3901 18 : objectname =3D NULL; > > > 3902 18 : objecttag =3D "Table Function Name= "; > > > 3903 18 : break; > > > > Indeed > > I was completely wrong about this, and in order to gain coverage the > only thing we needed was to add an EXPLAIN that uses the JSON format. > I did that just now. I think your addition here works just fine. I think we'd still need your RangeTblFunc.tablefunc_name in order for the new code (with JSON_TABLE) to be able to set objectname to either "XMLTABLE" or "JSON_TABLE", no? As you pointed out, rte->tablefunc is always NULL in ExplainTargetRel() due to setrefs.c setting it to NULL, so the JSON_TABLE additions to explain.c in my patch as they were won't work. I've included your patch in the attached set and adjusted the JSON_TABLE patch to set tablefunc_name in the parser. I had intended to push 0001-0004 today, but held off to add a SQL-callable testing function for the changes in 0002. On that note, I'm now not so sure about committing jsonpath_exec.c functions JsonPathExists/Query/Value() from their SQL/JSON counterparts, so inclined to squash that one into the SQL/JSON query functions patch from a testability standpoint. I haven't looked at Jian He's comments yet. -- Thanks, Amit Langote EDB: http://www.enterprisedb.com --00000000000015508a060f9d2c00 Content-Type: application/octet-stream; name="v37-0006-Show-function-name-in-TableFuncScan.patch" Content-Disposition: attachment; filename="v37-0006-Show-function-name-in-TableFuncScan.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrqes4yo1 RnJvbSAwNjExOWZmOTc4NWFkMTYwOTQxZTk5MWZmODIzMWQwNzc5YTRkMmM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbHZhcm8gSGVycmVyYSA8YWx2aGVycmVAYWx2aC5uby1pcC5v cmc+CkRhdGU6IFR1ZSwgMjMgSmFuIDIwMjQgMTI6MTE6NDYgKzA5MDAKU3ViamVjdDogW1BBVENI IHYzNyA2LzddIFNob3cgZnVuY3Rpb24gbmFtZSBpbiBUYWJsZUZ1bmNTY2FuCgpQcmV2aW91c2x5 IHdlIHdlcmUgb25seSBzaG93aW5nIHRoZSB1c2VyLXNwZWNpZmllZCBhbGlhcywgYnV0IHRoaXMg aXMKY2xlYXJseSBub3QgdGhlIGNvZGUncyBpbnRlbnQuCgpEaXNjdXNzaW9uOiBodHRwczovL3Bv c3Rnci5lcy9tLzIwMjQwMTE4MTcxMS5xeGp4cG5sM29obnclNDBhbHZoZXJyZS5wZ3NxbAotLS0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5k L25vZGVzL291dGZ1bmNzLmMgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1 bmNzLmMgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYyB8 ICA0ICsrLS0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgIHwgIDEgKwogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWwub3V0ICAgfCAxNiArKysrKysrKy0tLS0tLS0tCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3htbF8xLm91dCB8IDE2ICsrKysrKysrLS0tLS0tLS0K IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQveG1sXzIub3V0IHwgMTYgKysrKysrKystLS0tLS0t LQogOCBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9leHBsYWluLmMKaW5kZXggODQzNDcyZTZkZC4uYjMyMzBmMjk3YiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2V4cGxhaW4uYwpAQCAtMzg5Miw3ICszODkyLDcgQEAgRXhwbGFpblRhcmdldFJlbChQbGFu ICpwbGFuLCBJbmRleCBydGksIEV4cGxhaW5TdGF0ZSAqZXMpCiAJCQlicmVhazsKIAkJY2FzZSBU X1RhYmxlRnVuY1NjYW46CiAJCQlBc3NlcnQocnRlLT5ydGVraW5kID09IFJURV9UQUJMRUZVTkMp OwotCQkJb2JqZWN0bmFtZSA9ICJ4bWx0YWJsZSI7CisJCQlvYmplY3RuYW1lID0gcnRlLT50YWJs ZWZ1bmNfbmFtZTsKIAkJCW9iamVjdHRhZyA9ICJUYWJsZSBGdW5jdGlvbiBOYW1lIjsKIAkJCWJy ZWFrOwogCQljYXNlIFRfVmFsdWVzU2NhbjoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVz L291dGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCmluZGV4IDI5NmJhODQ1 MTguLmI0MmRhYWJhNTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMK KysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwpAQCAtNTMxLDYgKzUzMSw3IEBAIF9v dXRSYW5nZVRibEVudHJ5KFN0cmluZ0luZm8gc3RyLCBjb25zdCBSYW5nZVRibEVudHJ5ICpub2Rl KQogCQkJYnJlYWs7CiAJCWNhc2UgUlRFX1RBQkxFRlVOQzoKIAkJCVdSSVRFX05PREVfRklFTEQo dGFibGVmdW5jKTsKKwkJCVdSSVRFX1NUUklOR19GSUVMRCh0YWJsZWZ1bmNfbmFtZSk7CiAJCQli cmVhazsKIAkJY2FzZSBSVEVfVkFMVUVTOgogCQkJV1JJVEVfTk9ERV9GSUVMRCh2YWx1ZXNfbGlz dHMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgYi9zcmMvYmFj a2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwppbmRleCAxNjI0YjM0NTgxLi45MjUxOTJjYjA3IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9u b2Rlcy9yZWFkZnVuY3MuYwpAQCAtNTI4LDYgKzUyOCw3IEBAIF9yZWFkUmFuZ2VUYmxFbnRyeSh2 b2lkKQogCQkJYnJlYWs7CiAJCWNhc2UgUlRFX1RBQkxFRlVOQzoKIAkJCVJFQURfTk9ERV9GSUVM RCh0YWJsZWZ1bmMpOworCQkJUkVBRF9TVFJJTkdfRklFTEQodGFibGVmdW5jX25hbWUpOwogCQkJ LyogVGhlIFJURSBtdXN0IGhhdmUgYSBjb3B5IG9mIHRoZSBjb2x1bW4gdHlwZSBpbmZvLCBpZiBh bnkgKi8KIAkJCWlmIChsb2NhbF9ub2RlLT50YWJsZWZ1bmMpCiAJCQl7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9yZWxhdGlvbi5jCmluZGV4IDM0YTBlYzU5MDEuLjY1ZTU0YWJkZDEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9yZWxhdGlvbi5jCkBAIC0yMDczLDE3ICsyMDczLDE3IEBAIGFkZFJhbmdlVGFi bGVFbnRyeUZvclRhYmxlRnVuYyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJQXNzZXJ0KGxpc3RfbGVu Z3RoKHRmLT5jb2x0eXBtb2RzKSA9PSBsaXN0X2xlbmd0aCh0Zi0+Y29sbmFtZXMpKTsKIAlBc3Nl cnQobGlzdF9sZW5ndGgodGYtPmNvbGNvbGxhdGlvbnMpID09IGxpc3RfbGVuZ3RoKHRmLT5jb2xu YW1lcykpOwogCi0JcmVmbmFtZSA9IGFsaWFzID8gYWxpYXMtPmFsaWFzbmFtZSA6IHBzdHJkdXAo InhtbHRhYmxlIik7Ci0KIAlydGUtPnJ0ZWtpbmQgPSBSVEVfVEFCTEVGVU5DOwogCXJ0ZS0+cmVs aWQgPSBJbnZhbGlkT2lkOwogCXJ0ZS0+c3VicXVlcnkgPSBOVUxMOwogCXJ0ZS0+dGFibGVmdW5j ID0gdGY7CisJcnRlLT50YWJsZWZ1bmNfbmFtZSA9IHBzdHJkdXAoIlhNTFRBQkxFIik7CiAJcnRl LT5jb2x0eXBlcyA9IHRmLT5jb2x0eXBlczsKIAlydGUtPmNvbHR5cG1vZHMgPSB0Zi0+Y29sdHlw bW9kczsKIAlydGUtPmNvbGNvbGxhdGlvbnMgPSB0Zi0+Y29sY29sbGF0aW9uczsKIAlydGUtPmFs aWFzID0gYWxpYXM7CiAKKwlyZWZuYW1lID0gYWxpYXMgPyBhbGlhcy0+YWxpYXNuYW1lIDogcHN0 cmR1cCgieG1sdGFibGUiKTsKIAllcmVmID0gYWxpYXMgPyBjb3B5T2JqZWN0KGFsaWFzKSA6IG1h a2VBbGlhcyhyZWZuYW1lLCBOSUwpOwogCW51bWFsaWFzZXMgPSBsaXN0X2xlbmd0aChlcmVmLT5j b2xuYW1lcyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBi L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCAwMTg0Yzc2Y2U2Li5hZjY4YWUz M2U4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0xMTQ0LDYgKzExNDQsNyBAQCB0eXBlZGVm IHN0cnVjdCBSYW5nZVRibEVudHJ5CiAJICogRmllbGRzIHZhbGlkIGZvciBhIFRhYmxlRnVuYyBS VEUgKGVsc2UgTlVMTCk6CiAJICovCiAJVGFibGVGdW5jICAqdGFibGVmdW5jOworCWNoYXIJICAg KnRhYmxlZnVuY19uYW1lOwogCiAJLyoKIAkgKiBGaWVsZHMgdmFsaWQgZm9yIGEgdmFsdWVzIFJU RSAoZWxzZSBOSUwpOgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWwu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWwub3V0CmluZGV4IDY1MDBjZmY4ODUu LjcwMzM1Yzc0ZGYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQveG1sLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3htbC5vdXQKQEAgLTEzNDMsMTEgKzEz NDMsMTEgQEAgQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMueG1sdGFibGV2aWV3MSBBUwog ICAgICAgICAgICBGUk9NIHhtbGRhdGEpIHgsCiAgICAgTEFURVJBTCBYTUxUQUJMRSgoJy9ST1dT L1JPVyc6OnRleHQpIFBBU1NJTkcgKHguZGF0YSkgQ09MVU1OUyBpZCBpbnRlZ2VyIFBBVEggKCdA aWQnOjp0ZXh0KSwgX2lkIEZPUiBPUkRJTkFMSVRZLCBjb3VudHJ5X25hbWUgdGV4dCBQQVRIICgn Q09VTlRSWV9OQU1FL3RleHQoKSc6OnRleHQpIE5PVCBOVUxMLCBjb3VudHJ5X2lkIHRleHQgUEFU SCAoJ0NPVU5UUllfSUQnOjp0ZXh0KSwgcmVnaW9uX2lkIGludGVnZXIgUEFUSCAoJ1JFR0lPTl9J RCc6OnRleHQpLCBzaXplIGRvdWJsZSBwcmVjaXNpb24gUEFUSCAoJ1NJWkUnOjp0ZXh0KSwgdW5p dCB0ZXh0IFBBVEggKCdTSVpFL0B1bml0Jzo6dGV4dCksIHByZW1pZXJfbmFtZSB0ZXh0IERFRkFV TFQgKCdub3Qgc3BlY2lmaWVkJzo6dGV4dCkgUEFUSCAoJ1BSRU1JRVJfTkFNRSc6OnRleHQpKQog RVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHhtbHRhYmxldmlldzE7Ci0gICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICBOZXN0ZWQgTG9vcAogICAgLT4gIFNlcSBTY2FuIG9uIHhtbGRhdGEK LSAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJ4bWx0YWJsZSIKKyAgIC0+ICBUYWJsZSBG dW5jdGlvbiBTY2FuIG9uICJYTUxUQUJMRSIgInhtbHRhYmxlIgogKDMgcm93cykKIAogRVhQTEFJ TiAoQ09TVFMgT0ZGLCBWRVJCT1NFKSBTRUxFQ1QgKiBGUk9NIHhtbHRhYmxldmlldzE7CkBAIC0x MzU3LDcgKzEzNTcsNyBAQCBFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpIFNFTEVDVCAqIEZS T00geG1sdGFibGV2aWV3MTsKICAgIE91dHB1dDogInhtbHRhYmxlIi5pZCwgInhtbHRhYmxlIi5f aWQsICJ4bWx0YWJsZSIuY291bnRyeV9uYW1lLCAieG1sdGFibGUiLmNvdW50cnlfaWQsICJ4bWx0 YWJsZSIucmVnaW9uX2lkLCAieG1sdGFibGUiLnNpemUsICJ4bWx0YWJsZSIudW5pdCwgInhtbHRh YmxlIi5wcmVtaWVyX25hbWUKICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMueG1sZGF0YQogICAg ICAgICAgT3V0cHV0OiB4bWxkYXRhLmRhdGEKLSAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9u ICJ4bWx0YWJsZSIKKyAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJYTUxUQUJMRSIgInht bHRhYmxlIgogICAgICAgICAgT3V0cHV0OiAieG1sdGFibGUiLmlkLCAieG1sdGFibGUiLl9pZCwg InhtbHRhYmxlIi5jb3VudHJ5X25hbWUsICJ4bWx0YWJsZSIuY291bnRyeV9pZCwgInhtbHRhYmxl Ii5yZWdpb25faWQsICJ4bWx0YWJsZSIuc2l6ZSwgInhtbHRhYmxlIi51bml0LCAieG1sdGFibGUi LnByZW1pZXJfbmFtZQogICAgICAgICAgVGFibGUgRnVuY3Rpb24gQ2FsbDogWE1MVEFCTEUoKCcv Uk9XUy9ST1cnOjp0ZXh0KSBQQVNTSU5HICh4bWxkYXRhLmRhdGEpIENPTFVNTlMgaWQgaW50ZWdl ciBQQVRIICgnQGlkJzo6dGV4dCksIF9pZCBGT1IgT1JESU5BTElUWSwgY291bnRyeV9uYW1lIHRl eHQgUEFUSCAoJ0NPVU5UUllfTkFNRS90ZXh0KCknOjp0ZXh0KSBOT1QgTlVMTCwgY291bnRyeV9p ZCB0ZXh0IFBBVEggKCdDT1VOVFJZX0lEJzo6dGV4dCksIHJlZ2lvbl9pZCBpbnRlZ2VyIFBBVEgg KCdSRUdJT05fSUQnOjp0ZXh0KSwgc2l6ZSBkb3VibGUgcHJlY2lzaW9uIFBBVEggKCdTSVpFJzo6 dGV4dCksIHVuaXQgdGV4dCBQQVRIICgnU0laRS9AdW5pdCc6OnRleHQpLCBwcmVtaWVyX25hbWUg dGV4dCBERUZBVUxUICgnbm90IHNwZWNpZmllZCc6OnRleHQpIFBBVEggKCdQUkVNSUVSX05BTUUn Ojp0ZXh0KSkKICg3IHJvd3MpCkBAIC0xNTM2LDcgKzE1MzYsNyBAQCBTRUxFQ1QgIHhtbHRhYmxl LioKICAgIE91dHB1dDogInhtbHRhYmxlIi5pZCwgInhtbHRhYmxlIi5faWQsICJ4bWx0YWJsZSIu Y291bnRyeV9uYW1lLCAieG1sdGFibGUiLmNvdW50cnlfaWQsICJ4bWx0YWJsZSIucmVnaW9uX2lk LCAieG1sdGFibGUiLnNpemUsICJ4bWx0YWJsZSIudW5pdCwgInhtbHRhYmxlIi5wcmVtaWVyX25h bWUKICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMueG1sZGF0YQogICAgICAgICAgT3V0cHV0OiB4 bWxkYXRhLmRhdGEKLSAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJ4bWx0YWJsZSIKKyAg IC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJYTUxUQUJMRSIgInhtbHRhYmxlIgogICAgICAg ICAgT3V0cHV0OiAieG1sdGFibGUiLmlkLCAieG1sdGFibGUiLl9pZCwgInhtbHRhYmxlIi5jb3Vu dHJ5X25hbWUsICJ4bWx0YWJsZSIuY291bnRyeV9pZCwgInhtbHRhYmxlIi5yZWdpb25faWQsICJ4 bWx0YWJsZSIuc2l6ZSwgInhtbHRhYmxlIi51bml0LCAieG1sdGFibGUiLnByZW1pZXJfbmFtZQog ICAgICAgICAgVGFibGUgRnVuY3Rpb24gQ2FsbDogWE1MVEFCTEUoKCcvUk9XUy9ST1cnOjp0ZXh0 KSBQQVNTSU5HICh4bWxkYXRhLmRhdGEpIENPTFVNTlMgaWQgaW50ZWdlciBQQVRIICgnQGlkJzo6 dGV4dCksIF9pZCBGT1IgT1JESU5BTElUWSwgY291bnRyeV9uYW1lIHRleHQgUEFUSCAoJ0NPVU5U UllfTkFNRSc6OnRleHQpIE5PVCBOVUxMLCBjb3VudHJ5X2lkIHRleHQgUEFUSCAoJ0NPVU5UUllf SUQnOjp0ZXh0KSwgcmVnaW9uX2lkIGludGVnZXIgUEFUSCAoJ1JFR0lPTl9JRCc6OnRleHQpLCBz aXplIGRvdWJsZSBwcmVjaXNpb24gUEFUSCAoJ1NJWkUnOjp0ZXh0KSwgdW5pdCB0ZXh0IFBBVEgg KCdTSVpFL0B1bml0Jzo6dGV4dCksIHByZW1pZXJfbmFtZSB0ZXh0IERFRkFVTFQgKCdub3Qgc3Bl Y2lmaWVkJzo6dGV4dCkgUEFUSCAoJ1BSRU1JRVJfTkFNRSc6OnRleHQpKQogKDcgcm93cykKQEAg LTE1NTYsNyArMTU1Niw3IEBAIFNFTEVDVCBmLiogRlJPTSB4bWxkYXRhLCBMQVRFUkFMIHhtbHRh YmxlKCcvUk9XUy9ST1dbQ09VTlRSWV9OQU1FPSJKYXBhbiIgb3IgQ09VCiAgICBPdXRwdXQ6IGYu IkNPVU5UUllfTkFNRSIsIGYuIlJFR0lPTl9JRCIKICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu eG1sZGF0YQogICAgICAgICAgT3V0cHV0OiB4bWxkYXRhLmRhdGEKLSAgIC0+ICBUYWJsZSBGdW5j dGlvbiBTY2FuIG9uICJ4bWx0YWJsZSIgZgorICAgLT4gIFRhYmxlIEZ1bmN0aW9uIFNjYW4gb24g IlhNTFRBQkxFIiBmCiAgICAgICAgICBPdXRwdXQ6IGYuIkNPVU5UUllfTkFNRSIsIGYuIlJFR0lP Tl9JRCIKICAgICAgICAgIFRhYmxlIEZ1bmN0aW9uIENhbGw6IFhNTFRBQkxFKCgnL1JPV1MvUk9X W0NPVU5UUllfTkFNRT0iSmFwYW4iIG9yIENPVU5UUllfTkFNRT0iSW5kaWEiXSc6OnRleHQpIFBB U1NJTkcgKHhtbGRhdGEuZGF0YSkgQ09MVU1OUyAiQ09VTlRSWV9OQU1FIiB0ZXh0LCAiUkVHSU9O X0lEIiBpbnRlZ2VyKQogICAgICAgICAgRmlsdGVyOiAoZi4iQ09VTlRSWV9OQU1FIiA9ICdKYXBh bic6OnRleHQpCkBAIC0xNTkxLDcgKzE1OTEsNyBAQCBTRUxFQ1QgZi4qIEZST00geG1sZGF0YSwg TEFURVJBTCB4bWx0YWJsZSgnL1JPV1MvUk9XW0NPVU5UUllfTkFNRT0iSmFwYW4iIG9yIENPVQog ICAgICAgICAgICAiUGFyZW50IFJlbGF0aW9uc2hpcCI6ICJJbm5lciIsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKwogICAgICAgICAgICAiUGFyYWxsZWwgQXdhcmUiOiBmYWxz ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICAgICAg ICAiQXN5bmMgQ2FwYWJsZSI6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKwotICAgICAgICAgICAiVGFibGUgRnVuY3Rpb24gTmFtZSI6ICJ4bWx0YWJs ZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAiVGFibGUg RnVuY3Rpb24gTmFtZSI6ICJYTUxUQUJMRSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKwogICAgICAgICAgICAiQWxpYXMiOiAiZiIsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICAgICAgICAiT3V0cHV0IjogWyJmLlwi Q09VTlRSWV9OQU1FXCIiLCAiZi5cIlJFR0lPTl9JRFwiIl0sICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAg ICAgICAgICAiVGFibGUgRnVuY3Rpb24gQ2FsbCI6ICJYTUxUQUJMRSgoJy9ST1dTL1JPV1tDT1VO VFJZX05BTUU9XCJKYXBhblwiIG9yIENPVU5UUllfTkFNRT1cIkluZGlhXCJdJzo6dGV4dCkgUEFT U0lORyAoeG1sZGF0YS5kYXRhKSBDT0xVTU5TIFwiQ09VTlRSWV9OQU1FXCIgdGV4dCwgXCJSRUdJ T05fSURcIiBpbnRlZ2VyKSIsKwpAQCAtMTcwMCw3ICsxNzAwLDcgQEAgU0VMRUNUICB4bWx0YWJs ZS4qCiAgICBPdXRwdXQ6ICJ4bWx0YWJsZSIuaWQsICJ4bWx0YWJsZSIuX2lkLCAieG1sdGFibGUi LmNvdW50cnlfbmFtZSwgInhtbHRhYmxlIi5jb3VudHJ5X2lkLCAieG1sdGFibGUiLnJlZ2lvbl9p ZCwgInhtbHRhYmxlIi5zaXplLCAieG1sdGFibGUiLnVuaXQsICJ4bWx0YWJsZSIucHJlbWllcl9u YW1lCiAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLnhtbGRhdGEKICAgICAgICAgIE91dHB1dDog eG1sZGF0YS5kYXRhCi0gICAtPiAgVGFibGUgRnVuY3Rpb24gU2NhbiBvbiAieG1sdGFibGUiCisg ICAtPiAgVGFibGUgRnVuY3Rpb24gU2NhbiBvbiAiWE1MVEFCTEUiICJ4bWx0YWJsZSIKICAgICAg ICAgIE91dHB1dDogInhtbHRhYmxlIi5pZCwgInhtbHRhYmxlIi5faWQsICJ4bWx0YWJsZSIuY291 bnRyeV9uYW1lLCAieG1sdGFibGUiLmNvdW50cnlfaWQsICJ4bWx0YWJsZSIucmVnaW9uX2lkLCAi eG1sdGFibGUiLnNpemUsICJ4bWx0YWJsZSIudW5pdCwgInhtbHRhYmxlIi5wcmVtaWVyX25hbWUK ICAgICAgICAgIFRhYmxlIEZ1bmN0aW9uIENhbGw6IFhNTFRBQkxFKCgnL1JPV1MvUk9XJzo6dGV4 dCkgUEFTU0lORyAoeG1sZGF0YS5kYXRhKSBDT0xVTU5TIGlkIGludGVnZXIgUEFUSCAoJ0BpZCc6 OnRleHQpLCBfaWQgRk9SIE9SRElOQUxJVFksIGNvdW50cnlfbmFtZSB0ZXh0IFBBVEggKCdDT1VO VFJZX05BTUUnOjp0ZXh0KSBOT1QgTlVMTCwgY291bnRyeV9pZCB0ZXh0IFBBVEggKCdDT1VOVFJZ X0lEJzo6dGV4dCksIHJlZ2lvbl9pZCBpbnRlZ2VyIFBBVEggKCdSRUdJT05fSUQnOjp0ZXh0KSwg c2l6ZSBkb3VibGUgcHJlY2lzaW9uIFBBVEggKCdTSVpFJzo6dGV4dCksIHVuaXQgdGV4dCBQQVRI ICgnU0laRS9AdW5pdCc6OnRleHQpLCBwcmVtaWVyX25hbWUgdGV4dCBERUZBVUxUICgnbm90IHNw ZWNpZmllZCc6OnRleHQpIFBBVEggKCdQUkVNSUVSX05BTUUnOjp0ZXh0KSkKICAgICAgICAgIEZp bHRlcjogKCJ4bWx0YWJsZSIucmVnaW9uX2lkID0gMikKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQveG1sXzEub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWxf MS5vdXQKaW5kZXggOTMyM2I4NGFlMi4uMDgxMjdkYjcyMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC94bWxfMS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC94bWxfMS5vdXQKQEAgLTEwMDQsMTEgKzEwMDQsMTEgQEAgQ1JFQVRFIE9SIFJFUExBQ0UgVklF VyBwdWJsaWMueG1sdGFibGV2aWV3MSBBUwogICAgICAgICAgICBGUk9NIHhtbGRhdGEpIHgsCiAg ICAgTEFURVJBTCBYTUxUQUJMRSgoJy9ST1dTL1JPVyc6OnRleHQpIFBBU1NJTkcgKHguZGF0YSkg Q09MVU1OUyBpZCBpbnRlZ2VyIFBBVEggKCdAaWQnOjp0ZXh0KSwgX2lkIEZPUiBPUkRJTkFMSVRZ LCBjb3VudHJ5X25hbWUgdGV4dCBQQVRIICgnQ09VTlRSWV9OQU1FL3RleHQoKSc6OnRleHQpIE5P VCBOVUxMLCBjb3VudHJ5X2lkIHRleHQgUEFUSCAoJ0NPVU5UUllfSUQnOjp0ZXh0KSwgcmVnaW9u X2lkIGludGVnZXIgUEFUSCAoJ1JFR0lPTl9JRCc6OnRleHQpLCBzaXplIGRvdWJsZSBwcmVjaXNp b24gUEFUSCAoJ1NJWkUnOjp0ZXh0KSwgdW5pdCB0ZXh0IFBBVEggKCdTSVpFL0B1bml0Jzo6dGV4 dCksIHByZW1pZXJfbmFtZSB0ZXh0IERFRkFVTFQgKCdub3Qgc3BlY2lmaWVkJzo6dGV4dCkgUEFU SCAoJ1BSRU1JRVJfTkFNRSc6OnRleHQpKQogRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBG Uk9NIHhtbHRhYmxldmlldzE7Ci0gICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBOZXN0ZWQgTG9vcAog ICAgLT4gIFNlcSBTY2FuIG9uIHhtbGRhdGEKLSAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9u ICJ4bWx0YWJsZSIKKyAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJYTUxUQUJMRSIgInht bHRhYmxlIgogKDMgcm93cykKIAogRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKSBTRUxFQ1Qg KiBGUk9NIHhtbHRhYmxldmlldzE7CkBAIC0xMDE4LDcgKzEwMTgsNyBAQCBFWFBMQUlOIChDT1NU UyBPRkYsIFZFUkJPU0UpIFNFTEVDVCAqIEZST00geG1sdGFibGV2aWV3MTsKICAgIE91dHB1dDog InhtbHRhYmxlIi5pZCwgInhtbHRhYmxlIi5faWQsICJ4bWx0YWJsZSIuY291bnRyeV9uYW1lLCAi eG1sdGFibGUiLmNvdW50cnlfaWQsICJ4bWx0YWJsZSIucmVnaW9uX2lkLCAieG1sdGFibGUiLnNp emUsICJ4bWx0YWJsZSIudW5pdCwgInhtbHRhYmxlIi5wcmVtaWVyX25hbWUKICAgIC0+ICBTZXEg U2NhbiBvbiBwdWJsaWMueG1sZGF0YQogICAgICAgICAgT3V0cHV0OiB4bWxkYXRhLmRhdGEKLSAg IC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJ4bWx0YWJsZSIKKyAgIC0+ICBUYWJsZSBGdW5j dGlvbiBTY2FuIG9uICJYTUxUQUJMRSIgInhtbHRhYmxlIgogICAgICAgICAgT3V0cHV0OiAieG1s dGFibGUiLmlkLCAieG1sdGFibGUiLl9pZCwgInhtbHRhYmxlIi5jb3VudHJ5X25hbWUsICJ4bWx0 YWJsZSIuY291bnRyeV9pZCwgInhtbHRhYmxlIi5yZWdpb25faWQsICJ4bWx0YWJsZSIuc2l6ZSwg InhtbHRhYmxlIi51bml0LCAieG1sdGFibGUiLnByZW1pZXJfbmFtZQogICAgICAgICAgVGFibGUg RnVuY3Rpb24gQ2FsbDogWE1MVEFCTEUoKCcvUk9XUy9ST1cnOjp0ZXh0KSBQQVNTSU5HICh4bWxk YXRhLmRhdGEpIENPTFVNTlMgaWQgaW50ZWdlciBQQVRIICgnQGlkJzo6dGV4dCksIF9pZCBGT1Ig T1JESU5BTElUWSwgY291bnRyeV9uYW1lIHRleHQgUEFUSCAoJ0NPVU5UUllfTkFNRS90ZXh0KCkn Ojp0ZXh0KSBOT1QgTlVMTCwgY291bnRyeV9pZCB0ZXh0IFBBVEggKCdDT1VOVFJZX0lEJzo6dGV4 dCksIHJlZ2lvbl9pZCBpbnRlZ2VyIFBBVEggKCdSRUdJT05fSUQnOjp0ZXh0KSwgc2l6ZSBkb3Vi bGUgcHJlY2lzaW9uIFBBVEggKCdTSVpFJzo6dGV4dCksIHVuaXQgdGV4dCBQQVRIICgnU0laRS9A dW5pdCc6OnRleHQpLCBwcmVtaWVyX25hbWUgdGV4dCBERUZBVUxUICgnbm90IHNwZWNpZmllZCc6 OnRleHQpIFBBVEggKCdQUkVNSUVSX05BTUUnOjp0ZXh0KSkKICg3IHJvd3MpCkBAIC0xMTYyLDcg KzExNjIsNyBAQCBTRUxFQ1QgIHhtbHRhYmxlLioKICAgIE91dHB1dDogInhtbHRhYmxlIi5pZCwg InhtbHRhYmxlIi5faWQsICJ4bWx0YWJsZSIuY291bnRyeV9uYW1lLCAieG1sdGFibGUiLmNvdW50 cnlfaWQsICJ4bWx0YWJsZSIucmVnaW9uX2lkLCAieG1sdGFibGUiLnNpemUsICJ4bWx0YWJsZSIu dW5pdCwgInhtbHRhYmxlIi5wcmVtaWVyX25hbWUKICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu eG1sZGF0YQogICAgICAgICAgT3V0cHV0OiB4bWxkYXRhLmRhdGEKLSAgIC0+ICBUYWJsZSBGdW5j dGlvbiBTY2FuIG9uICJ4bWx0YWJsZSIKKyAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJY TUxUQUJMRSIgInhtbHRhYmxlIgogICAgICAgICAgT3V0cHV0OiAieG1sdGFibGUiLmlkLCAieG1s dGFibGUiLl9pZCwgInhtbHRhYmxlIi5jb3VudHJ5X25hbWUsICJ4bWx0YWJsZSIuY291bnRyeV9p ZCwgInhtbHRhYmxlIi5yZWdpb25faWQsICJ4bWx0YWJsZSIuc2l6ZSwgInhtbHRhYmxlIi51bml0 LCAieG1sdGFibGUiLnByZW1pZXJfbmFtZQogICAgICAgICAgVGFibGUgRnVuY3Rpb24gQ2FsbDog WE1MVEFCTEUoKCcvUk9XUy9ST1cnOjp0ZXh0KSBQQVNTSU5HICh4bWxkYXRhLmRhdGEpIENPTFVN TlMgaWQgaW50ZWdlciBQQVRIICgnQGlkJzo6dGV4dCksIF9pZCBGT1IgT1JESU5BTElUWSwgY291 bnRyeV9uYW1lIHRleHQgUEFUSCAoJ0NPVU5UUllfTkFNRSc6OnRleHQpIE5PVCBOVUxMLCBjb3Vu dHJ5X2lkIHRleHQgUEFUSCAoJ0NPVU5UUllfSUQnOjp0ZXh0KSwgcmVnaW9uX2lkIGludGVnZXIg UEFUSCAoJ1JFR0lPTl9JRCc6OnRleHQpLCBzaXplIGRvdWJsZSBwcmVjaXNpb24gUEFUSCAoJ1NJ WkUnOjp0ZXh0KSwgdW5pdCB0ZXh0IFBBVEggKCdTSVpFL0B1bml0Jzo6dGV4dCksIHByZW1pZXJf bmFtZSB0ZXh0IERFRkFVTFQgKCdub3Qgc3BlY2lmaWVkJzo6dGV4dCkgUEFUSCAoJ1BSRU1JRVJf TkFNRSc6OnRleHQpKQogKDcgcm93cykKQEAgLTExODEsNyArMTE4MSw3IEBAIFNFTEVDVCBmLiog RlJPTSB4bWxkYXRhLCBMQVRFUkFMIHhtbHRhYmxlKCcvUk9XUy9ST1dbQ09VTlRSWV9OQU1FPSJK YXBhbiIgb3IgQ09VCiAgICBPdXRwdXQ6IGYuIkNPVU5UUllfTkFNRSIsIGYuIlJFR0lPTl9JRCIK ICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMueG1sZGF0YQogICAgICAgICAgT3V0cHV0OiB4bWxk YXRhLmRhdGEKLSAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJ4bWx0YWJsZSIgZgorICAg LT4gIFRhYmxlIEZ1bmN0aW9uIFNjYW4gb24gIlhNTFRBQkxFIiBmCiAgICAgICAgICBPdXRwdXQ6 IGYuIkNPVU5UUllfTkFNRSIsIGYuIlJFR0lPTl9JRCIKICAgICAgICAgIFRhYmxlIEZ1bmN0aW9u IENhbGw6IFhNTFRBQkxFKCgnL1JPV1MvUk9XW0NPVU5UUllfTkFNRT0iSmFwYW4iIG9yIENPVU5U UllfTkFNRT0iSW5kaWEiXSc6OnRleHQpIFBBU1NJTkcgKHhtbGRhdGEuZGF0YSkgQ09MVU1OUyAi Q09VTlRSWV9OQU1FIiB0ZXh0LCAiUkVHSU9OX0lEIiBpbnRlZ2VyKQogICAgICAgICAgRmlsdGVy OiAoZi4iQ09VTlRSWV9OQU1FIiA9ICdKYXBhbic6OnRleHQpCkBAIC0xMjE2LDcgKzEyMTYsNyBA QCBTRUxFQ1QgZi4qIEZST00geG1sZGF0YSwgTEFURVJBTCB4bWx0YWJsZSgnL1JPV1MvUk9XW0NP VU5UUllfTkFNRT0iSmFwYW4iIG9yIENPVQogICAgICAgICAgICAiUGFyZW50IFJlbGF0aW9uc2hp cCI6ICJJbm5lciIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICAg ICAgICAiUGFyYWxsZWwgQXdhcmUiOiBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKwogICAgICAgICAgICAiQXN5bmMgQ2FwYWJsZSI6IGZhbHNlLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwotICAgICAgICAgICAiVGFi bGUgRnVuY3Rpb24gTmFtZSI6ICJ4bWx0YWJsZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgICAgICAgICAiVGFibGUgRnVuY3Rpb24gTmFtZSI6ICJYTUxUQUJMRSIsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICAgICAgICAiQWxpYXMiOiAiZiIs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwog ICAgICAgICAgICAiT3V0cHV0IjogWyJmLlwiQ09VTlRSWV9OQU1FXCIiLCAiZi5cIlJFR0lPTl9J RFwiIl0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKwogICAgICAgICAgICAiVGFibGUgRnVuY3Rpb24gQ2FsbCI6 ICJYTUxUQUJMRSgoJy9ST1dTL1JPV1tDT1VOVFJZX05BTUU9XCJKYXBhblwiIG9yIENPVU5UUllf TkFNRT1cIkluZGlhXCJdJzo6dGV4dCkgUEFTU0lORyAoeG1sZGF0YS5kYXRhKSBDT0xVTU5TIFwi Q09VTlRSWV9OQU1FXCIgdGV4dCwgXCJSRUdJT05fSURcIiBpbnRlZ2VyKSIsKwpAQCAtMTMxOSw3 ICsxMzE5LDcgQEAgU0VMRUNUICB4bWx0YWJsZS4qCiAgICBPdXRwdXQ6ICJ4bWx0YWJsZSIuaWQs ICJ4bWx0YWJsZSIuX2lkLCAieG1sdGFibGUiLmNvdW50cnlfbmFtZSwgInhtbHRhYmxlIi5jb3Vu dHJ5X2lkLCAieG1sdGFibGUiLnJlZ2lvbl9pZCwgInhtbHRhYmxlIi5zaXplLCAieG1sdGFibGUi LnVuaXQsICJ4bWx0YWJsZSIucHJlbWllcl9uYW1lCiAgICAtPiAgU2VxIFNjYW4gb24gcHVibGlj LnhtbGRhdGEKICAgICAgICAgIE91dHB1dDogeG1sZGF0YS5kYXRhCi0gICAtPiAgVGFibGUgRnVu Y3Rpb24gU2NhbiBvbiAieG1sdGFibGUiCisgICAtPiAgVGFibGUgRnVuY3Rpb24gU2NhbiBvbiAi WE1MVEFCTEUiICJ4bWx0YWJsZSIKICAgICAgICAgIE91dHB1dDogInhtbHRhYmxlIi5pZCwgInht bHRhYmxlIi5faWQsICJ4bWx0YWJsZSIuY291bnRyeV9uYW1lLCAieG1sdGFibGUiLmNvdW50cnlf aWQsICJ4bWx0YWJsZSIucmVnaW9uX2lkLCAieG1sdGFibGUiLnNpemUsICJ4bWx0YWJsZSIudW5p dCwgInhtbHRhYmxlIi5wcmVtaWVyX25hbWUKICAgICAgICAgIFRhYmxlIEZ1bmN0aW9uIENhbGw6 IFhNTFRBQkxFKCgnL1JPV1MvUk9XJzo6dGV4dCkgUEFTU0lORyAoeG1sZGF0YS5kYXRhKSBDT0xV TU5TIGlkIGludGVnZXIgUEFUSCAoJ0BpZCc6OnRleHQpLCBfaWQgRk9SIE9SRElOQUxJVFksIGNv dW50cnlfbmFtZSB0ZXh0IFBBVEggKCdDT1VOVFJZX05BTUUnOjp0ZXh0KSBOT1QgTlVMTCwgY291 bnRyeV9pZCB0ZXh0IFBBVEggKCdDT1VOVFJZX0lEJzo6dGV4dCksIHJlZ2lvbl9pZCBpbnRlZ2Vy IFBBVEggKCdSRUdJT05fSUQnOjp0ZXh0KSwgc2l6ZSBkb3VibGUgcHJlY2lzaW9uIFBBVEggKCdT SVpFJzo6dGV4dCksIHVuaXQgdGV4dCBQQVRIICgnU0laRS9AdW5pdCc6OnRleHQpLCBwcmVtaWVy X25hbWUgdGV4dCBERUZBVUxUICgnbm90IHNwZWNpZmllZCc6OnRleHQpIFBBVEggKCdQUkVNSUVS X05BTUUnOjp0ZXh0KSkKICAgICAgICAgIEZpbHRlcjogKCJ4bWx0YWJsZSIucmVnaW9uX2lkID0g MikKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQveG1sXzIub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWxfMi5vdXQKaW5kZXggZTFkMTY1YzZjOS4uYzcyMGEw NWY1YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWxfMi5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWxfMi5vdXQKQEAgLTEzMjMsMTEgKzEzMjMs MTEgQEAgQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMueG1sdGFibGV2aWV3MSBBUwogICAg ICAgICAgICBGUk9NIHhtbGRhdGEpIHgsCiAgICAgTEFURVJBTCBYTUxUQUJMRSgoJy9ST1dTL1JP Vyc6OnRleHQpIFBBU1NJTkcgKHguZGF0YSkgQ09MVU1OUyBpZCBpbnRlZ2VyIFBBVEggKCdAaWQn Ojp0ZXh0KSwgX2lkIEZPUiBPUkRJTkFMSVRZLCBjb3VudHJ5X25hbWUgdGV4dCBQQVRIICgnQ09V TlRSWV9OQU1FL3RleHQoKSc6OnRleHQpIE5PVCBOVUxMLCBjb3VudHJ5X2lkIHRleHQgUEFUSCAo J0NPVU5UUllfSUQnOjp0ZXh0KSwgcmVnaW9uX2lkIGludGVnZXIgUEFUSCAoJ1JFR0lPTl9JRCc6 OnRleHQpLCBzaXplIGRvdWJsZSBwcmVjaXNpb24gUEFUSCAoJ1NJWkUnOjp0ZXh0KSwgdW5pdCB0 ZXh0IFBBVEggKCdTSVpFL0B1bml0Jzo6dGV4dCksIHByZW1pZXJfbmFtZSB0ZXh0IERFRkFVTFQg KCdub3Qgc3BlY2lmaWVkJzo6dGV4dCkgUEFUSCAoJ1BSRU1JRVJfTkFNRSc6OnRleHQpKQogRVhQ TEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHhtbHRhYmxldmlldzE7Ci0gICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICBOZXN0ZWQgTG9vcAogICAgLT4gIFNlcSBTY2FuIG9uIHhtbGRhdGEKLSAg IC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJ4bWx0YWJsZSIKKyAgIC0+ICBUYWJsZSBGdW5j dGlvbiBTY2FuIG9uICJYTUxUQUJMRSIgInhtbHRhYmxlIgogKDMgcm93cykKIAogRVhQTEFJTiAo Q09TVFMgT0ZGLCBWRVJCT1NFKSBTRUxFQ1QgKiBGUk9NIHhtbHRhYmxldmlldzE7CkBAIC0xMzM3 LDcgKzEzMzcsNyBAQCBFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpIFNFTEVDVCAqIEZST00g eG1sdGFibGV2aWV3MTsKICAgIE91dHB1dDogInhtbHRhYmxlIi5pZCwgInhtbHRhYmxlIi5faWQs ICJ4bWx0YWJsZSIuY291bnRyeV9uYW1lLCAieG1sdGFibGUiLmNvdW50cnlfaWQsICJ4bWx0YWJs ZSIucmVnaW9uX2lkLCAieG1sdGFibGUiLnNpemUsICJ4bWx0YWJsZSIudW5pdCwgInhtbHRhYmxl Ii5wcmVtaWVyX25hbWUKICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMueG1sZGF0YQogICAgICAg ICAgT3V0cHV0OiB4bWxkYXRhLmRhdGEKLSAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJ4 bWx0YWJsZSIKKyAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJYTUxUQUJMRSIgInhtbHRh YmxlIgogICAgICAgICAgT3V0cHV0OiAieG1sdGFibGUiLmlkLCAieG1sdGFibGUiLl9pZCwgInht bHRhYmxlIi5jb3VudHJ5X25hbWUsICJ4bWx0YWJsZSIuY291bnRyeV9pZCwgInhtbHRhYmxlIi5y ZWdpb25faWQsICJ4bWx0YWJsZSIuc2l6ZSwgInhtbHRhYmxlIi51bml0LCAieG1sdGFibGUiLnBy ZW1pZXJfbmFtZQogICAgICAgICAgVGFibGUgRnVuY3Rpb24gQ2FsbDogWE1MVEFCTEUoKCcvUk9X Uy9ST1cnOjp0ZXh0KSBQQVNTSU5HICh4bWxkYXRhLmRhdGEpIENPTFVNTlMgaWQgaW50ZWdlciBQ QVRIICgnQGlkJzo6dGV4dCksIF9pZCBGT1IgT1JESU5BTElUWSwgY291bnRyeV9uYW1lIHRleHQg UEFUSCAoJ0NPVU5UUllfTkFNRS90ZXh0KCknOjp0ZXh0KSBOT1QgTlVMTCwgY291bnRyeV9pZCB0 ZXh0IFBBVEggKCdDT1VOVFJZX0lEJzo6dGV4dCksIHJlZ2lvbl9pZCBpbnRlZ2VyIFBBVEggKCdS RUdJT05fSUQnOjp0ZXh0KSwgc2l6ZSBkb3VibGUgcHJlY2lzaW9uIFBBVEggKCdTSVpFJzo6dGV4 dCksIHVuaXQgdGV4dCBQQVRIICgnU0laRS9AdW5pdCc6OnRleHQpLCBwcmVtaWVyX25hbWUgdGV4 dCBERUZBVUxUICgnbm90IHNwZWNpZmllZCc6OnRleHQpIFBBVEggKCdQUkVNSUVSX05BTUUnOjp0 ZXh0KSkKICg3IHJvd3MpCkBAIC0xNTE2LDcgKzE1MTYsNyBAQCBTRUxFQ1QgIHhtbHRhYmxlLioK ICAgIE91dHB1dDogInhtbHRhYmxlIi5pZCwgInhtbHRhYmxlIi5faWQsICJ4bWx0YWJsZSIuY291 bnRyeV9uYW1lLCAieG1sdGFibGUiLmNvdW50cnlfaWQsICJ4bWx0YWJsZSIucmVnaW9uX2lkLCAi eG1sdGFibGUiLnNpemUsICJ4bWx0YWJsZSIudW5pdCwgInhtbHRhYmxlIi5wcmVtaWVyX25hbWUK ICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMueG1sZGF0YQogICAgICAgICAgT3V0cHV0OiB4bWxk YXRhLmRhdGEKLSAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJ4bWx0YWJsZSIKKyAgIC0+ ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJYTUxUQUJMRSIgInhtbHRhYmxlIgogICAgICAgICAg T3V0cHV0OiAieG1sdGFibGUiLmlkLCAieG1sdGFibGUiLl9pZCwgInhtbHRhYmxlIi5jb3VudHJ5 X25hbWUsICJ4bWx0YWJsZSIuY291bnRyeV9pZCwgInhtbHRhYmxlIi5yZWdpb25faWQsICJ4bWx0 YWJsZSIuc2l6ZSwgInhtbHRhYmxlIi51bml0LCAieG1sdGFibGUiLnByZW1pZXJfbmFtZQogICAg ICAgICAgVGFibGUgRnVuY3Rpb24gQ2FsbDogWE1MVEFCTEUoKCcvUk9XUy9ST1cnOjp0ZXh0KSBQ QVNTSU5HICh4bWxkYXRhLmRhdGEpIENPTFVNTlMgaWQgaW50ZWdlciBQQVRIICgnQGlkJzo6dGV4 dCksIF9pZCBGT1IgT1JESU5BTElUWSwgY291bnRyeV9uYW1lIHRleHQgUEFUSCAoJ0NPVU5UUllf TkFNRSc6OnRleHQpIE5PVCBOVUxMLCBjb3VudHJ5X2lkIHRleHQgUEFUSCAoJ0NPVU5UUllfSUQn Ojp0ZXh0KSwgcmVnaW9uX2lkIGludGVnZXIgUEFUSCAoJ1JFR0lPTl9JRCc6OnRleHQpLCBzaXpl IGRvdWJsZSBwcmVjaXNpb24gUEFUSCAoJ1NJWkUnOjp0ZXh0KSwgdW5pdCB0ZXh0IFBBVEggKCdT SVpFL0B1bml0Jzo6dGV4dCksIHByZW1pZXJfbmFtZSB0ZXh0IERFRkFVTFQgKCdub3Qgc3BlY2lm aWVkJzo6dGV4dCkgUEFUSCAoJ1BSRU1JRVJfTkFNRSc6OnRleHQpKQogKDcgcm93cykKQEAgLTE1 MzYsNyArMTUzNiw3IEBAIFNFTEVDVCBmLiogRlJPTSB4bWxkYXRhLCBMQVRFUkFMIHhtbHRhYmxl KCcvUk9XUy9ST1dbQ09VTlRSWV9OQU1FPSJKYXBhbiIgb3IgQ09VCiAgICBPdXRwdXQ6IGYuIkNP VU5UUllfTkFNRSIsIGYuIlJFR0lPTl9JRCIKICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMueG1s ZGF0YQogICAgICAgICAgT3V0cHV0OiB4bWxkYXRhLmRhdGEKLSAgIC0+ICBUYWJsZSBGdW5jdGlv biBTY2FuIG9uICJ4bWx0YWJsZSIgZgorICAgLT4gIFRhYmxlIEZ1bmN0aW9uIFNjYW4gb24gIlhN TFRBQkxFIiBmCiAgICAgICAgICBPdXRwdXQ6IGYuIkNPVU5UUllfTkFNRSIsIGYuIlJFR0lPTl9J RCIKICAgICAgICAgIFRhYmxlIEZ1bmN0aW9uIENhbGw6IFhNTFRBQkxFKCgnL1JPV1MvUk9XW0NP VU5UUllfTkFNRT0iSmFwYW4iIG9yIENPVU5UUllfTkFNRT0iSW5kaWEiXSc6OnRleHQpIFBBU1NJ TkcgKHhtbGRhdGEuZGF0YSkgQ09MVU1OUyAiQ09VTlRSWV9OQU1FIiB0ZXh0LCAiUkVHSU9OX0lE IiBpbnRlZ2VyKQogICAgICAgICAgRmlsdGVyOiAoZi4iQ09VTlRSWV9OQU1FIiA9ICdKYXBhbic6 OnRleHQpCkBAIC0xNTcxLDcgKzE1NzEsNyBAQCBTRUxFQ1QgZi4qIEZST00geG1sZGF0YSwgTEFU RVJBTCB4bWx0YWJsZSgnL1JPV1MvUk9XW0NPVU5UUllfTkFNRT0iSmFwYW4iIG9yIENPVQogICAg ICAgICAgICAiUGFyZW50IFJlbGF0aW9uc2hpcCI6ICJJbm5lciIsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKwogICAgICAgICAgICAiUGFyYWxsZWwgQXdhcmUiOiBmYWxzZSwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICAgICAgICAi QXN5bmMgQ2FwYWJsZSI6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKwotICAgICAgICAgICAiVGFibGUgRnVuY3Rpb24gTmFtZSI6ICJ4bWx0YWJsZSIs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAiVGFibGUgRnVu Y3Rpb24gTmFtZSI6ICJYTUxUQUJMRSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KwogICAgICAgICAgICAiQWxpYXMiOiAiZiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICAgICAgICAiT3V0cHV0IjogWyJmLlwiQ09V TlRSWV9OQU1FXCIiLCAiZi5cIlJFR0lPTl9JRFwiIl0sICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICAg ICAgICAiVGFibGUgRnVuY3Rpb24gQ2FsbCI6ICJYTUxUQUJMRSgoJy9ST1dTL1JPV1tDT1VOVFJZ X05BTUU9XCJKYXBhblwiIG9yIENPVU5UUllfTkFNRT1cIkluZGlhXCJdJzo6dGV4dCkgUEFTU0lO RyAoeG1sZGF0YS5kYXRhKSBDT0xVTU5TIFwiQ09VTlRSWV9OQU1FXCIgdGV4dCwgXCJSRUdJT05f SURcIiBpbnRlZ2VyKSIsKwpAQCAtMTY4MCw3ICsxNjgwLDcgQEAgU0VMRUNUICB4bWx0YWJsZS4q CiAgICBPdXRwdXQ6ICJ4bWx0YWJsZSIuaWQsICJ4bWx0YWJsZSIuX2lkLCAieG1sdGFibGUiLmNv dW50cnlfbmFtZSwgInhtbHRhYmxlIi5jb3VudHJ5X2lkLCAieG1sdGFibGUiLnJlZ2lvbl9pZCwg InhtbHRhYmxlIi5zaXplLCAieG1sdGFibGUiLnVuaXQsICJ4bWx0YWJsZSIucHJlbWllcl9uYW1l CiAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLnhtbGRhdGEKICAgICAgICAgIE91dHB1dDogeG1s ZGF0YS5kYXRhCi0gICAtPiAgVGFibGUgRnVuY3Rpb24gU2NhbiBvbiAieG1sdGFibGUiCisgICAt PiAgVGFibGUgRnVuY3Rpb24gU2NhbiBvbiAiWE1MVEFCTEUiICJ4bWx0YWJsZSIKICAgICAgICAg IE91dHB1dDogInhtbHRhYmxlIi5pZCwgInhtbHRhYmxlIi5faWQsICJ4bWx0YWJsZSIuY291bnRy eV9uYW1lLCAieG1sdGFibGUiLmNvdW50cnlfaWQsICJ4bWx0YWJsZSIucmVnaW9uX2lkLCAieG1s dGFibGUiLnNpemUsICJ4bWx0YWJsZSIudW5pdCwgInhtbHRhYmxlIi5wcmVtaWVyX25hbWUKICAg ICAgICAgIFRhYmxlIEZ1bmN0aW9uIENhbGw6IFhNTFRBQkxFKCgnL1JPV1MvUk9XJzo6dGV4dCkg UEFTU0lORyAoeG1sZGF0YS5kYXRhKSBDT0xVTU5TIGlkIGludGVnZXIgUEFUSCAoJ0BpZCc6OnRl eHQpLCBfaWQgRk9SIE9SRElOQUxJVFksIGNvdW50cnlfbmFtZSB0ZXh0IFBBVEggKCdDT1VOVFJZ X05BTUUnOjp0ZXh0KSBOT1QgTlVMTCwgY291bnRyeV9pZCB0ZXh0IFBBVEggKCdDT1VOVFJZX0lE Jzo6dGV4dCksIHJlZ2lvbl9pZCBpbnRlZ2VyIFBBVEggKCdSRUdJT05fSUQnOjp0ZXh0KSwgc2l6 ZSBkb3VibGUgcHJlY2lzaW9uIFBBVEggKCdTSVpFJzo6dGV4dCksIHVuaXQgdGV4dCBQQVRIICgn U0laRS9AdW5pdCc6OnRleHQpLCBwcmVtaWVyX25hbWUgdGV4dCBERUZBVUxUICgnbm90IHNwZWNp ZmllZCc6OnRleHQpIFBBVEggKCdQUkVNSUVSX05BTUUnOjp0ZXh0KSkKICAgICAgICAgIEZpbHRl cjogKCJ4bWx0YWJsZSIucmVnaW9uX2lkID0gMikKLS0gCjIuMzUuMwoK --00000000000015508a060f9d2c00 Content-Type: application/octet-stream; name="v37-0004-Add-jsonpath_exec-APIs-to-use-in-SQL-JSON-query-.patch" Content-Disposition: attachment; filename="v37-0004-Add-jsonpath_exec-APIs-to-use-in-SQL-JSON-query-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrqes4yv3 RnJvbSBkM2JiOWEzYTkzYWNjYWZjNzg2YjVjZDZlNDFkOGFkOTYzNTY1ZGNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMTggSmFuIDIwMjQgMTc6NTc6MjAgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz NyA0LzddIEFkZCBqc29ucGF0aF9leGVjIEFQSXMgdG8gdXNlIGluIFNRTC9KU09OIHF1ZXJ5CiBm dW5jdGlvbnMKClRoaXMgYWRkcyBKc29uUGF0aEV4aXN0cygpLCBKc29uUGF0aFF1ZXJ5KCksIEpz b25QYXRoVmFsdWUoKSB0aGF0CmFyZSB3cmFwcGVycyBvdmVyIGV4ZWN1dGVKc29uUGF0aCgpIHRv IGltcGxlbWVudCBTUUwvSlNPTiBmdW5jdGlvbnMKSlNPTl9FWElTVFMoKSwgSlNPTl9RVUVSWSgp LCBhbmQgSlNPTl9WQUxVRSgpLCByZXNwZWN0aXZlbHkuICBUaG9zZQpmdW5jdGlvbnMgdGhlbXNl bHZlcyB3aWxsIGJlIGFkZGVkIGluIGEgc3Vic2VxdWVudCBjb21taXQgYWxvbmcgd2l0aAp0aGUg bmVjZXNzYXJ5IHBhcnNlci9wbGFubmVyL2V4ZWN1dG9yIHN1cHBvcnQuCgpUaGlzIGFsc28gaW50 cm9kdWNlcyBhIG5ldyBzdHJ1Y3QgSnNvblBhdGhWYXJpYWJsZSBmb3IgdGhlIGV4ZWN1dG9yCmlt cGxlbWVudGF0aW9uIG9mIHRob3NlIGZ1bmN0aW9ucyB0byBiZSBhYmxlIHRvIHBhc3MgdGhlIHZh bHVlcwpvZiB0aGUgdmFyaWFibGVzIHVzZWQgaW4ganNvbnBhdGggdGhhdCBhcmUgc2VwYXJhdGVs eSBldmFsdWF0ZWQKYnkgdGhlIGV4ZWN1dG9yLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3Iu ZXMvbS9DQStIaXdxRTRYVGRmYjFuVz1Pam95X3RRU1JoWXQtcV9rYjZpNWQ0eGNLeXJMQzFOYmdA bWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhfZXhlYy5j IHwgMzIyICsrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9ub2Rlcy9wcmlt bm9kZXMuaCAgICAgICAgIHwgIDExICsKIHNyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmggICAg ICAgICAgfCAgMjMgKysKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgfCAg IDIgKwogNCBmaWxlcyBjaGFuZ2VkLCAzNTggaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvanNvbnBhdGhfZXhlYy5jCmluZGV4IGNiMmVhMDQ4YzMuLmEyMjE4YmYwYmMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYwpAQCAtMjM0LDYgKzIzNCwxMiBAQCBzdGF0aWMg SnNvblBhdGhFeGVjUmVzdWx0IGFwcGVuZEJvb2xSZXN1bHQoSnNvblBhdGhFeGVjQ29udGV4dCAq Y3h0LAogCQkJCQkJCQkJCSAgIEpzb25QYXRoSXRlbSAqanNwLCBKc29uVmFsdWVMaXN0ICpmb3Vu ZCwgSnNvblBhdGhCb29sIHJlcyk7CiBzdGF0aWMgdm9pZCBnZXRKc29uUGF0aEl0ZW0oSnNvblBh dGhFeGVjQ29udGV4dCAqY3h0LCBKc29uUGF0aEl0ZW0gKml0ZW0sCiAJCQkJCQkJSnNvbmJWYWx1 ZSAqdmFsdWUpOworc3RhdGljIEpzb25iVmFsdWUgKkdldEpzb25QYXRoVmFyKHZvaWQgKmN4dCwg Y2hhciAqdmFyTmFtZSwgaW50IHZhck5hbWVMZW4sCisJCQkJCQkJCSAgSnNvbmJWYWx1ZSAqYmFz ZU9iamVjdCwgaW50ICpiYXNlT2JqZWN0SWQpOworc3RhdGljIGludAlDb3VudEpzb25QYXRoVmFy cyh2b2lkICpjeHQpOworc3RhdGljIHZvaWQgSnNvbkl0ZW1Gcm9tRGF0dW0oRGF0dW0gdmFsLCBP aWQgdHlwaWQsIGludDMyIHR5cG1vZCwKKwkJCQkJCQkgIEpzb25iVmFsdWUgKnJlcyk7CitzdGF0 aWMgdm9pZCBKc29uYlZhbHVlSW5pdE51bWVyaWNEYXR1bShKc29uYlZhbHVlICpqYnYsIERhdHVt IG51bSk7CiBzdGF0aWMgdm9pZCBnZXRKc29uUGF0aFZhcmlhYmxlKEpzb25QYXRoRXhlY0NvbnRl eHQgKmN4dCwKIAkJCQkJCQkJSnNvblBhdGhJdGVtICp2YXJpYWJsZSwgSnNvbmJWYWx1ZSAqdmFs dWUpOwogc3RhdGljIGludAljb3VudFZhcmlhYmxlc0Zyb21Kc29uYih2b2lkICp2YXJzSnNvbmIp OwpAQCAtMjEzOCw2ICsyMTQ0LDE1NSBAQCBnZXRKc29uUGF0aEl0ZW0oSnNvblBhdGhFeGVjQ29u dGV4dCAqY3h0LCBKc29uUGF0aEl0ZW0gKml0ZW0sCiAJfQogfQogCisvKgorICogUmV0dXJucyB0 aGUgY29tcHV0ZWQgdmFsdWUgb2YgYSBKU09OIHBhdGggdmFyaWFibGUgd2l0aCBnaXZlbiBuYW1l LgorICovCitzdGF0aWMgSnNvbmJWYWx1ZSAqCitHZXRKc29uUGF0aFZhcih2b2lkICpjeHQsIGNo YXIgKnZhck5hbWUsIGludCB2YXJOYW1lTGVuLAorCQkJICAgSnNvbmJWYWx1ZSAqYmFzZU9iamVj dCwgaW50ICpiYXNlT2JqZWN0SWQpCit7CisJSnNvblBhdGhWYXJpYWJsZSAqdmFyID0gTlVMTDsK KwlMaXN0CSAgICp2YXJzID0gY3h0OworCUxpc3RDZWxsICAgKmxjOworCUpzb25iVmFsdWUgKnJl c3VsdDsKKwlpbnQJCQlpZCA9IDE7CisKKwlmb3JlYWNoKGxjLCB2YXJzKQorCXsKKwkJSnNvblBh dGhWYXJpYWJsZSAqY3VydmFyID0gbGZpcnN0KGxjKTsKKworCQlpZiAoIXN0cm5jbXAoY3VydmFy LT5uYW1lLCB2YXJOYW1lLCB2YXJOYW1lTGVuKSkKKwkJeworCQkJdmFyID0gY3VydmFyOworCQkJ YnJlYWs7CisJCX0KKworCQlpZCsrOworCX0KKworCWlmICh2YXIgPT0gTlVMTCkKKwl7CisJCSpi YXNlT2JqZWN0SWQgPSAtMTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJcmVzdWx0ID0gcGFsbG9j KHNpemVvZihKc29uYlZhbHVlKSk7CisJaWYgKHZhci0+aXNudWxsKQorCXsKKwkJKmJhc2VPYmpl Y3RJZCA9IDA7CisJCXJlc3VsdC0+dHlwZSA9IGpidk51bGw7CisJfQorCWVsc2UKKwkJSnNvbkl0 ZW1Gcm9tRGF0dW0odmFyLT52YWx1ZSwgdmFyLT50eXBpZCwgdmFyLT50eXBtb2QsIHJlc3VsdCk7 CisKKwkqYmFzZU9iamVjdCA9ICpyZXN1bHQ7CisJKmJhc2VPYmplY3RJZCA9IGlkOworCisJcmV0 dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGludAorQ291bnRKc29uUGF0aFZhcnModm9pZCAqY3h0 KQoreworCUxpc3QJICAgKnZhcnMgPSAoTGlzdCAqKSBjeHQ7CisKKwlyZXR1cm4gbGlzdF9sZW5n dGgodmFycyk7Cit9CisKKworLyoKKyAqIEluaXRpYWxpemUgSnNvbmJWYWx1ZSB0byBwYXNzIHRv IGpzb25wYXRoIGV4ZWN1dG9yIGZyb20gZ2l2ZW4KKyAqIGRhdHVtIHZhbHVlIG9mIHRoZSBzcGVj aWZpZWQgdHlwZS4KKyAqLworc3RhdGljIHZvaWQKK0pzb25JdGVtRnJvbURhdHVtKERhdHVtIHZh bCwgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsIEpzb25iVmFsdWUgKnJlcykKK3sKKwlzd2l0Y2gg KHR5cGlkKQorCXsKKwkJY2FzZSBCT09MT0lEOgorCQkJcmVzLT50eXBlID0gamJ2Qm9vbDsKKwkJ CXJlcy0+dmFsLmJvb2xlYW4gPSBEYXR1bUdldEJvb2wodmFsKTsKKwkJCWJyZWFrOworCQljYXNl IE5VTUVSSUNPSUQ6CisJCQlKc29uYlZhbHVlSW5pdE51bWVyaWNEYXR1bShyZXMsIHZhbCk7CisJ CQlicmVhazsKKwkJY2FzZSBJTlQyT0lEOgorCQkJSnNvbmJWYWx1ZUluaXROdW1lcmljRGF0dW0o cmVzLCBEaXJlY3RGdW5jdGlvbkNhbGwxKGludDJfbnVtZXJpYywgdmFsKSk7CisJCQlicmVhazsK KwkJY2FzZSBJTlQ0T0lEOgorCQkJSnNvbmJWYWx1ZUluaXROdW1lcmljRGF0dW0ocmVzLCBEaXJl Y3RGdW5jdGlvbkNhbGwxKGludDRfbnVtZXJpYywgdmFsKSk7CisJCQlicmVhazsKKwkJY2FzZSBJ TlQ4T0lEOgorCQkJSnNvbmJWYWx1ZUluaXROdW1lcmljRGF0dW0ocmVzLCBEaXJlY3RGdW5jdGlv bkNhbGwxKGludDhfbnVtZXJpYywgdmFsKSk7CisJCQlicmVhazsKKwkJY2FzZSBGTE9BVDRPSUQ6 CisJCQlKc29uYlZhbHVlSW5pdE51bWVyaWNEYXR1bShyZXMsIERpcmVjdEZ1bmN0aW9uQ2FsbDEo ZmxvYXQ0X251bWVyaWMsIHZhbCkpOworCQkJYnJlYWs7CisJCWNhc2UgRkxPQVQ4T0lEOgorCQkJ SnNvbmJWYWx1ZUluaXROdW1lcmljRGF0dW0ocmVzLCBEaXJlY3RGdW5jdGlvbkNhbGwxKGZsb2F0 OF9udW1lcmljLCB2YWwpKTsKKwkJCWJyZWFrOworCQljYXNlIFRFWFRPSUQ6CisJCWNhc2UgVkFS Q0hBUk9JRDoKKwkJCXJlcy0+dHlwZSA9IGpidlN0cmluZzsKKwkJCXJlcy0+dmFsLnN0cmluZy52 YWwgPSBWQVJEQVRBX0FOWSh2YWwpOworCQkJcmVzLT52YWwuc3RyaW5nLmxlbiA9IFZBUlNJWkVf QU5ZX0VYSERSKHZhbCk7CisJCQlicmVhazsKKwkJY2FzZSBEQVRFT0lEOgorCQljYXNlIFRJTUVP SUQ6CisJCWNhc2UgVElNRVRaT0lEOgorCQljYXNlIFRJTUVTVEFNUE9JRDoKKwkJY2FzZSBUSU1F U1RBTVBUWk9JRDoKKwkJCXJlcy0+dHlwZSA9IGpidkRhdGV0aW1lOworCQkJcmVzLT52YWwuZGF0 ZXRpbWUudmFsdWUgPSB2YWw7CisJCQlyZXMtPnZhbC5kYXRldGltZS50eXBpZCA9IHR5cGlkOwor CQkJcmVzLT52YWwuZGF0ZXRpbWUudHlwbW9kID0gdHlwbW9kOworCQkJcmVzLT52YWwuZGF0ZXRp bWUudHogPSAwOworCQkJYnJlYWs7CisJCWNhc2UgSlNPTkJPSUQ6CisJCQl7CisJCQkJSnNvbmJW YWx1ZSAqamJ2ID0gcmVzOworCQkJCUpzb25iCSAgICpqYiA9IERhdHVtR2V0SnNvbmJQKHZhbCk7 CisKKwkJCQlpZiAoSnNvbkNvbnRhaW5lcklzU2NhbGFyKCZqYi0+cm9vdCkpCisJCQkJeworCQkJ CQlib29sCQlyZXN1bHQgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZOworCisJCQkJCXJlc3VsdCA9 IEpzb25iRXh0cmFjdFNjYWxhcigmamItPnJvb3QsIGpidik7CisJCQkJCUFzc2VydChyZXN1bHQp OworCQkJCX0KKwkJCQllbHNlCisJCQkJCUpzb25iSW5pdEJpbmFyeShqYnYsIGpiKTsKKwkJCQli cmVhazsKKwkJCX0KKwkJY2FzZSBKU09OT0lEOgorCQkJeworCQkJCXRleHQJICAgKnR4dCA9IERh dHVtR2V0VGV4dFAodmFsKTsKKwkJCQljaGFyCSAgICpzdHIgPSB0ZXh0X3RvX2NzdHJpbmcodHh0 KTsKKwkJCQlKc29uYgkgICAqamI7CisKKwkJCQlqYiA9IERhdHVtR2V0SnNvbmJQKERpcmVjdEZ1 bmN0aW9uQ2FsbDEoanNvbmJfaW4sCisJCQkJCQkJCQkJCQkJCUNTdHJpbmdHZXREYXR1bShzdHIp KSk7CisJCQkJcGZyZWUoc3RyKTsKKworCQkJCUpzb25JdGVtRnJvbURhdHVtKEpzb25iUEdldERh dHVtKGpiKSwgSlNPTkJPSUQsIC0xLCByZXMpOworCQkJCWJyZWFrOworCQkJfQorCQlkZWZhdWx0 OgorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1F VEVSX1ZBTFVFKSwKKwkJCQkJZXJybXNnKCJjb3VsZCBub3QgY29udmVydCB2YWx1ZSBvZiB0eXBl ICVzIHRvIGpzb25wYXRoIiwKKwkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKHR5cGlkKSkpOworCX0K K30KKworLyogSW5pdGlhbGl6ZSBudW1lcmljIHZhbHVlIGZyb20gdGhlIGdpdmVuIGRhdHVtICov CitzdGF0aWMgdm9pZAorSnNvbmJWYWx1ZUluaXROdW1lcmljRGF0dW0oSnNvbmJWYWx1ZSAqamJ2 LCBEYXR1bSBudW0pCit7CisJamJ2LT50eXBlID0gamJ2TnVtZXJpYzsKKwlqYnYtPnZhbC5udW1l cmljID0gRGF0dW1HZXROdW1lcmljKG51bSk7Cit9CisKIC8qCiAgKiBHZXQgdGhlIHZhbHVlIG9m IHZhcmlhYmxlIHBhc3NlZCB0byBqc29ucGF0aCBleGVjdXRvcgogICovCkBAIC0yODc0LDMgKzMw MjksMTcwIEBAIGNvbXBhcmVEYXRldGltZShEYXR1bSB2YWwxLCBPaWQgdHlwaWQxLCBEYXR1bSB2 YWwyLCBPaWQgdHlwaWQyLAogCiAJcmV0dXJuIERhdHVtR2V0SW50MzIoRGlyZWN0RnVuY3Rpb25D YWxsMihjbXBmdW5jLCB2YWwxLCB2YWwyKSk7CiB9CisKKy8qCisgKiBFeGVjdXRvci1jYWxsYWJs ZSBKU09OX0VYSVNUUyBpbXBsZW1lbnRhdGlvbgorICoKKyAqIFJldHVybnMgTlVMTCBpbnN0ZWFk IG9mIHRocm93aW5nIGVycm9ycyBpZiAnZXJyb3InIGlzIG5vdCBOVUxMLCBzZXR0aW5nCisgKiAq ZXJyb3IgdG8gdHJ1ZS4KKyAqLworYm9vbAorSnNvblBhdGhFeGlzdHMoRGF0dW0gamIsIEpzb25Q YXRoICpqcCwgYm9vbCAqZXJyb3IsIExpc3QgKnZhcnMpCit7CisJSnNvblBhdGhFeGVjUmVzdWx0 IHJlczsKKworCXJlcyA9IGV4ZWN1dGVKc29uUGF0aChqcCwgdmFycywKKwkJCQkJCSAgR2V0SnNv blBhdGhWYXIsIENvdW50SnNvblBhdGhWYXJzLAorCQkJCQkJICBEYXR1bUdldEpzb25iUChqYiks ICFlcnJvciwgTlVMTCwgdHJ1ZSk7CisKKwlBc3NlcnQoZXJyb3IgfHwgIWpwZXJJc0Vycm9yKHJl cykpOworCisJaWYgKGVycm9yICYmIGpwZXJJc0Vycm9yKHJlcykpCisJCSplcnJvciA9IHRydWU7 CisKKwlyZXR1cm4gcmVzID09IGpwZXJPazsKK30KKworLyoKKyAqIEV4ZWN1dG9yLWNhbGxhYmxl IEpTT05fUVVFUlkgaW1wbGVtZW50YXRpb24KKyAqCisgKiBSZXR1cm5zIE5VTEwgaW5zdGVhZCBv ZiB0aHJvd2luZyBlcnJvcnMgaWYgJ2Vycm9yJyBpcyBub3QgTlVMTCwgc2V0dGluZworICogKmVy cm9yIHRvIHRydWUuICAqZW1wdHkgaXMgc2V0IHRvIHRydWUgaWYgbm8gbWF0Y2ggaXMgZm91bmQu CisgKi8KK0RhdHVtCitKc29uUGF0aFF1ZXJ5KERhdHVtIGpiLCBKc29uUGF0aCAqanAsIEpzb25X cmFwcGVyIHdyYXBwZXIsIGJvb2wgKmVtcHR5LAorCQkJICBib29sICplcnJvciwgTGlzdCAqdmFy cykKK3sKKwlKc29uYlZhbHVlICpzaW5nbGV0b247CisJYm9vbAkJd3JhcDsKKwlKc29uVmFsdWVM aXN0IGZvdW5kID0gezB9OworCUpzb25QYXRoRXhlY1Jlc3VsdCByZXM7CisJaW50CQkJY291bnQ7 CisKKwlyZXMgPSBleGVjdXRlSnNvblBhdGgoanAsIHZhcnMsCisJCQkJCQkgIEdldEpzb25QYXRo VmFyLCBDb3VudEpzb25QYXRoVmFycywKKwkJCQkJCSAgRGF0dW1HZXRKc29uYlAoamIpLCAhZXJy b3IsICZmb3VuZCwgdHJ1ZSk7CisJQXNzZXJ0KGVycm9yIHx8ICFqcGVySXNFcnJvcihyZXMpKTsK KwlpZiAoZXJyb3IgJiYganBlcklzRXJyb3IocmVzKSkKKwl7CisJCSplcnJvciA9IHRydWU7CisJ CSplbXB0eSA9IGZhbHNlOworCQlyZXR1cm4gKERhdHVtKSAwOworCX0KKworCS8qIFdSQVAgb3Ig bm90PyAqLworCWNvdW50ID0gSnNvblZhbHVlTGlzdExlbmd0aCgmZm91bmQpOworCXNpbmdsZXRv biA9IGNvdW50ID4gMCA/IEpzb25WYWx1ZUxpc3RIZWFkKCZmb3VuZCkgOiBOVUxMOworCWlmIChz aW5nbGV0b24gPT0gTlVMTCkKKwkJd3JhcCA9IGZhbHNlOworCWVsc2UgaWYgKHdyYXBwZXIgPT0g SlNXX05PTkUpCisJCXdyYXAgPSBmYWxzZTsKKwllbHNlIGlmICh3cmFwcGVyID09IEpTV19VTkNP TkRJVElPTkFMKQorCQl3cmFwID0gdHJ1ZTsKKwllbHNlIGlmICh3cmFwcGVyID09IEpTV19DT05E SVRJT05BTCkKKwkJd3JhcCA9IGNvdW50ID4gMSB8fAorCQkJSXNBSnNvbmJTY2FsYXIoc2luZ2xl dG9uKSB8fAorCQkJKHNpbmdsZXRvbi0+dHlwZSA9PSBqYnZCaW5hcnkgJiYKKwkJCSBKc29uQ29u dGFpbmVySXNTY2FsYXIoc2luZ2xldG9uLT52YWwuYmluYXJ5LmRhdGEpKTsKKwllbHNlCisJewor CQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGpzb24gd3JhcHBlciAlZCIsIHdyYXBwZXIpOwor CQl3cmFwID0gZmFsc2U7CisJfQorCisJaWYgKHdyYXApCisJCXJldHVybiBKc29uYlBHZXREYXR1 bShKc29uYlZhbHVlVG9Kc29uYih3cmFwSXRlbXNJbkFycmF5KCZmb3VuZCkpKTsKKworCS8qIE5v IHdyYXBwaW5nIG1lYW5zIG9ubHkgb25lIGl0ZW0gaXMgZXhwZWN0ZWQuICovCisJaWYgKGNvdW50 ID4gMSkKKwl7CisJCWlmIChlcnJvcikKKwkJeworCQkJKmVycm9yID0gdHJ1ZTsKKwkJCXJldHVy biAoRGF0dW0pIDA7CisJCX0KKworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfTU9SRV9USEFOX09ORV9TUUxfSlNPTl9JVEVNKSwKKwkJCQkgZXJybXNnKCJKU09OIHBhdGgg ZXhwcmVzc2lvbiBpbiBKU09OX1FVRVJZIHNob3VsZCByZXR1cm4gc2luZ2xldG9uIGl0ZW0gd2l0 aG91dCB3cmFwcGVyIiksCisJCQkJIGVycmhpbnQoIlVzZSBXSVRIIFdSQVBQRVIgY2xhdXNlIHRv IHdyYXAgU1FML0pTT04gaXRlbSBzZXF1ZW5jZSBpbnRvIGFycmF5LiIpKSk7CisJfQorCisJaWYg KHNpbmdsZXRvbikKKwkJcmV0dXJuIEpzb25iUEdldERhdHVtKEpzb25iVmFsdWVUb0pzb25iKHNp bmdsZXRvbikpOworCisJKmVtcHR5ID0gdHJ1ZTsKKwlyZXR1cm4gUG9pbnRlckdldERhdHVtKE5V TEwpOworfQorCisvKgorICogRXhlY3V0b3ItY2FsbGFibGUgSlNPTl9WQUxVRSBpbXBsZW1lbnRh dGlvbgorICoKKyAqIFJldHVybnMgTlVMTCBpbnN0ZWFkIG9mIHRocm93aW5nIGVycm9ycyBpZiAn ZXJyb3InIGlzIG5vdCBOVUxMLCBzZXR0aW5nCisgKiAqZXJyb3IgdG8gdHJ1ZS4gICplbXB0eSBp cyBzZXQgdG8gdHJ1ZSBpZiBubyBtYXRjaCBpcyBmb3VuZC4KKyAqLworSnNvbmJWYWx1ZSAqCitK c29uUGF0aFZhbHVlKERhdHVtIGpiLCBKc29uUGF0aCAqanAsIGJvb2wgKmVtcHR5LCBib29sICpl cnJvciwgTGlzdCAqdmFycykKK3sKKwlKc29uYlZhbHVlICpyZXM7CisJSnNvblZhbHVlTGlzdCBm b3VuZCA9IHswfTsKKwlKc29uUGF0aEV4ZWNSZXN1bHQganBlciBQR19VU0VEX0ZPUl9BU1NFUlRT X09OTFk7CisJaW50CQkJY291bnQ7CisKKwlqcGVyID0gZXhlY3V0ZUpzb25QYXRoKGpwLCB2YXJz LCBHZXRKc29uUGF0aFZhciwgQ291bnRKc29uUGF0aFZhcnMsCisJCQkJCQkgICBEYXR1bUdldEpz b25iUChqYiksCisJCQkJCQkgICAhZXJyb3IsICZmb3VuZCwgdHJ1ZSk7CisKKwlBc3NlcnQoZXJy b3IgfHwgIWpwZXJJc0Vycm9yKGpwZXIpKTsKKworCWlmIChlcnJvciAmJiBqcGVySXNFcnJvcihq cGVyKSkKKwl7CisJCSplcnJvciA9IHRydWU7CisJCSplbXB0eSA9IGZhbHNlOworCQlyZXR1cm4g TlVMTDsKKwl9CisKKwljb3VudCA9IEpzb25WYWx1ZUxpc3RMZW5ndGgoJmZvdW5kKTsKKworCSpl bXB0eSA9IChjb3VudCA9PSAwKTsKKworCWlmICgqZW1wdHkpCisJCXJldHVybiBOVUxMOworCisJ LyogSlNPTl9WQUxVRSBleHBlY3RzIHRvIGdldCBvbmx5IHNpbmdsZXRvbnMuICovCisJaWYgKGNv dW50ID4gMSkKKwl7CisJCWlmIChlcnJvcikKKwkJeworCQkJKmVycm9yID0gdHJ1ZTsKKwkJCXJl dHVybiBOVUxMOworCQl9CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X01PUkVfVEhBTl9PTkVfU1FMX0pTT05fSVRFTSksCisJCQkJIGVycm1zZygiSlNPTiBwYXRoIGV4 cHJlc3Npb24gaW4gSlNPTl9WQUxVRSBzaG91bGQgcmV0dXJuIHNpbmdsZXRvbiBzY2FsYXIgaXRl bSIpKSk7CisJfQorCisJcmVzID0gSnNvblZhbHVlTGlzdEhlYWQoJmZvdW5kKTsKKwlpZiAocmVz LT50eXBlID09IGpidkJpbmFyeSAmJiBKc29uQ29udGFpbmVySXNTY2FsYXIocmVzLT52YWwuYmlu YXJ5LmRhdGEpKQorCQlKc29uYkV4dHJhY3RTY2FsYXIocmVzLT52YWwuYmluYXJ5LmRhdGEsIHJl cyk7CisKKwkvKiBKU09OX1ZBTFVFIGV4cGVjdHMgdG8gZ2V0IG9ubHkgc2NhbGFycy4gKi8KKwlp ZiAoIUlzQUpzb25iU2NhbGFyKHJlcykpCisJeworCQlpZiAoZXJyb3IpCisJCXsKKwkJCSplcnJv ciA9IHRydWU7CisJCQlyZXR1cm4gTlVMTDsKKwkJfQorCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9TUUxfSlNPTl9TQ0FMQVJfUkVRVUlSRUQpLAorCQkJCSBlcnJtc2co IkpTT04gcGF0aCBleHByZXNzaW9uIGluIEpTT05fVkFMVUUgc2hvdWxkIHJldHVybiBzaW5nbGV0 b24gc2NhbGFyIGl0ZW0iKSkpOworCX0KKworCWlmIChyZXMtPnR5cGUgPT0gamJ2TnVsbCkKKwkJ cmV0dXJuIE5VTEw7CisKKwlyZXR1cm4gcmVzOworfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bm9kZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRleCA0 YTE1NDYwNmQyLi42MTI4OWQ4MTI0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmlt bm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAtMTU3Niw2ICsx NTc2LDE3IEBAIHR5cGVkZWYgZW51bSBKc29uRm9ybWF0VHlwZQogCQkJCQkJCQkgKiBqc29uYiAq LwogfSBKc29uRm9ybWF0VHlwZTsKIAorLyoKKyAqIEpzb25XcmFwcGVyIC0KKyAqCQlyZXByZXNl bnRhdGlvbiBvZiBXUkFQUEVSIGNsYXVzZSBmb3IgSnNvblBhdGhRdWVyeSgpCisgKi8KK3R5cGVk ZWYgZW51bSBKc29uV3JhcHBlcgoreworCUpTV19OT05FLAorCUpTV19DT05ESVRJT05BTCwKKwlK U1dfVU5DT05ESVRJT05BTCwKK30gSnNvbldyYXBwZXI7CisKIC8qCiAgKiBKc29uRm9ybWF0IC0K ICAqCQlyZXByZXNlbnRhdGlvbiBvZiBKU09OIEZPUk1BVCBjbGF1c2UKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmggYi9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5o CmluZGV4IDlkNTVjMjVlYmMuLjZlYWJkY2ZiNzUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0 aWxzL2pzb25wYXRoLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaApAQCAtMTYs NiArMTYsNyBAQAogCiAjaW5jbHVkZSAiZm1nci5oIgogI2luY2x1ZGUgIm5vZGVzL3BnX2xpc3Qu aCIKKyNpbmNsdWRlICJub2Rlcy9wcmltbm9kZXMuaCIKICNpbmNsdWRlICJ1dGlscy9qc29uYi5o IgogCiB0eXBlZGVmIHN0cnVjdApAQCAtMjY4LDQgKzI2OSwyNiBAQCBleHRlcm4gYm9vbCBqc3BD b252ZXJ0UmVnZXhGbGFncyh1aW50MzIgeGZsYWdzLCBpbnQgKnJlc3VsdCwKIAkJCQkJCQkJIHN0 cnVjdCBOb2RlICplc2NvbnRleHQpOwogCiAKKy8qCisgKiBFdmFsdWF0aW9uIG9mIGpzb25wYXRo CisgKi8KKworLyogRXh0ZXJuYWwgdmFyaWFibGUgcGFzc2VkIGludG8ganNvbnBhdGguICovCit0 eXBlZGVmIHN0cnVjdCBKc29uUGF0aFZhcmlhYmxlCit7CisJY2hhcgkgICAqbmFtZTsKKwlPaWQJ CQl0eXBpZDsKKwlpbnQzMgkJdHlwbW9kOworCURhdHVtCQl2YWx1ZTsKKwlib29sCQlpc251bGw7 Cit9IEpzb25QYXRoVmFyaWFibGU7CisKKworLyogU1FML0pTT04gaXRlbSAqLworZXh0ZXJuIGJv b2wgSnNvblBhdGhFeGlzdHMoRGF0dW0gamIsIEpzb25QYXRoICpwYXRoLCBib29sICplcnJvciwg TGlzdCAqdmFycyk7CitleHRlcm4gRGF0dW0gSnNvblBhdGhRdWVyeShEYXR1bSBqYiwgSnNvblBh dGggKmpwLCBKc29uV3JhcHBlciB3cmFwcGVyLAorCQkJCQkJICAgYm9vbCAqZW1wdHksIGJvb2wg KmVycm9yLCBMaXN0ICp2YXJzKTsKK2V4dGVybiBKc29uYlZhbHVlICpKc29uUGF0aFZhbHVlKERh dHVtIGpiLCBKc29uUGF0aCAqanAsIGJvb2wgKmVtcHR5LAorCQkJCQkJCQkgYm9vbCAqZXJyb3Is IExpc3QgKnZhcnMpOworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggN2U4 NjZlM2MzZC4uODk3ODQ1Mzc0ZiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTEzMTEs NiArMTMxMSw3IEBAIEpzb25QYXRoUGFyc2VJdGVtCiBKc29uUGF0aFBhcnNlUmVzdWx0CiBKc29u UGF0aFByZWRpY2F0ZUNhbGxiYWNrCiBKc29uUGF0aFN0cmluZworSnNvblBhdGhWYXJpYWJsZQog SnNvblJldHVybmluZwogSnNvblNjYWxhckV4cHIKIEpzb25TZW1BY3Rpb24KQEAgLTEzMjcsNiAr MTMyOCw3IEBAIEpzb25WYWx1ZUV4cHIKIEpzb25WYWx1ZUxpc3QKIEpzb25WYWx1ZUxpc3RJdGVy YXRvcgogSnNvblZhbHVlVHlwZQorSnNvbldyYXBwZXIKIEpzb25iCiBKc29uYkFnZ1N0YXRlCiBK c29uYkNvbnRhaW5lcgotLSAKMi4zNS4zCgo= --00000000000015508a060f9d2c00 Content-Type: application/octet-stream; name="v37-0003-Refactor-code-used-by-jsonpath-executor-to-fetch.patch" Content-Disposition: attachment; filename="v37-0003-Refactor-code-used-by-jsonpath-executor-to-fetch.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrqes4yz4 RnJvbSBlZDQxNDgyMTcxMDY3ZmM1NThhNDdhNjI5ZGI2NjA0ZGJiYzAyOTY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMTggSmFuIDIwMjQgMTY6MzA6NTYgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz NyAzLzddIFJlZmFjdG9yIGNvZGUgdXNlZCBieSBqc29ucGF0aCBleGVjdXRvciB0byBmZXRjaAog dmFyaWFibGVzCgpDdXJyZW50bHksIGdldEpzb25QYXRoVmFyaWFibGUoKSBkaXJlY3RseSBleHRy YWN0cyBhIG5hbWVkCnZhcmlhYmxlL2tleSBmcm9tIHRoZSBzb3VyY2UgSnNvbmIgdmFsdWUuICBU aGlzIGNvbW1pdCBwdXRzIHRoYXQKbG9naWMgaW50byBhIGNhbGxiYWNrIGZ1bmN0aW9uIGNhbGxl ZCBieSBnZXRKc29uUGF0aFZhcmlhYmxlKCkuCk90aGVyIGltcGxlbWVudGF0aW9ucyBvZiB0aGUg Y2FsbGJhY2sgbWF5IGFjY2VwdCBkaWZmZXJlbnQgZm9ybXMKb2YgdGhlIHNvdXJjZSB2YWx1ZShz KSwgZm9yIGV4YW1wbGUsIGEgTGlzdCBvZiB2YWx1ZXMgcGFzc2VkIGZyb20Kb3V0c2lkZSBqc29u cGF0aF9leGVjLmMuCgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBK0hpd3FFNFhU ZGZiMW5XPU9qb3lfdFFTUmhZdC1xX2tiNmk1ZDR4Y0t5ckxDMU5iZ0BtYWlsLmdtYWlsLmNvbQot LS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMgfCAxMzYgKysrKysrKysr KysrKysrKysrKy0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA5OSBpbnNlcnRpb25zKCspLCAzNyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhf ZXhlYy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYwppbmRleCBhYzE2 ZjVjODVkLi5jYjJlYTA0OGMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNv bnBhdGhfZXhlYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMK QEAgLTg3LDEyICs4NywxOSBAQCB0eXBlZGVmIHN0cnVjdCBKc29uQmFzZU9iamVjdEluZm8KIAlp bnQJCQlpZDsKIH0gSnNvbkJhc2VPYmplY3RJbmZvOwogCisvKiBDYWxsYmFja3MgZm9yIGV4ZWN1 dGVKc29uUGF0aCgpICovCit0eXBlZGVmIEpzb25iVmFsdWUgKigqSnNvblBhdGhHZXRWYXJDYWxs YmFjaykgKHZvaWQgKnZhcnMsIGNoYXIgKnZhck5hbWUsIGludCB2YXJOYW1lTGVuLAorCQkJCQkJ CQkJCQkgICBKc29uYlZhbHVlICpiYXNlT2JqZWN0LCBpbnQgKmJhc2VPYmplY3RJZCk7Cit0eXBl ZGVmIGludCAoKkpzb25QYXRoQ291bnRWYXJzQ2FsbGJhY2spICh2b2lkICp2YXJzKTsKKwogLyoK ICAqIENvbnRleHQgb2YganNvbnBhdGggZXhlY3V0aW9uLgogICovCiB0eXBlZGVmIHN0cnVjdCBK c29uUGF0aEV4ZWNDb250ZXh0CiB7Ci0JSnNvbmIJICAgKnZhcnM7CQkJLyogdmFyaWFibGVzIHRv IHN1YnN0aXR1dGUgaW50byBqc29ucGF0aCAqLworCXZvaWQJICAgKnZhcnM7CQkJLyogdmFyaWFi bGVzIHRvIHN1YnN0aXR1dGUgaW50byBqc29ucGF0aCAqLworCUpzb25QYXRoR2V0VmFyQ2FsbGJh Y2sgZ2V0VmFyOwkvKiBjYWxsYmFjayB0byBleHRyYWN0IGEgZ2l2ZW4gdmFyaWFibGUKKwkJCQkJ CQkJCSAqIGZyb20gJ3ZhcnMnICovCiAJSnNvbmJWYWx1ZSAqcm9vdDsJCQkvKiBmb3IgJCBldmFs dWF0aW9uICovCiAJSnNvbmJWYWx1ZSAqY3VycmVudDsJCS8qIGZvciBAIGV2YWx1YXRpb24gKi8K IAlKc29uQmFzZU9iamVjdEluZm8gYmFzZU9iamVjdDsJLyogImJhc2Ugb2JqZWN0IiBmb3IgLmtl eXZhbHVlKCkKQEAgLTE3NCw3ICsxODEsOSBAQCB0eXBlZGVmIEpzb25QYXRoQm9vbCAoKkpzb25Q YXRoUHJlZGljYXRlQ2FsbGJhY2spIChKc29uUGF0aEl0ZW0gKmpzcCwKIAkJCQkJCQkJCQkJCSAg IHZvaWQgKnBhcmFtKTsKIHR5cGVkZWYgTnVtZXJpYyAoKkJpbmFyeUFyaXRobUZ1bmMpIChOdW1l cmljIG51bTEsIE51bWVyaWMgbnVtMiwgYm9vbCAqZXJyb3IpOwogCi1zdGF0aWMgSnNvblBhdGhF eGVjUmVzdWx0IGV4ZWN1dGVKc29uUGF0aChKc29uUGF0aCAqcGF0aCwgSnNvbmIgKnZhcnMsCitz dGF0aWMgSnNvblBhdGhFeGVjUmVzdWx0IGV4ZWN1dGVKc29uUGF0aChKc29uUGF0aCAqcGF0aCwg dm9pZCAqdmFycywKKwkJCQkJCQkJCQkgIEpzb25QYXRoR2V0VmFyQ2FsbGJhY2sgZ2V0VmFyLAor CQkJCQkJCQkJCSAgSnNvblBhdGhDb3VudFZhcnNDYWxsYmFjayBjb3VudFZhcnMsCiAJCQkJCQkJ CQkJICBKc29uYiAqanNvbiwgYm9vbCB0aHJvd0Vycm9ycywKIAkJCQkJCQkJCQkgIEpzb25WYWx1 ZUxpc3QgKnJlc3VsdCwgYm9vbCB1c2VUeik7CiBzdGF0aWMgSnNvblBhdGhFeGVjUmVzdWx0IGV4 ZWN1dGVJdGVtKEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwKQEAgLTIyNiw3ICsyMzUsMTIgQEAg c3RhdGljIEpzb25QYXRoRXhlY1Jlc3VsdCBhcHBlbmRCb29sUmVzdWx0KEpzb25QYXRoRXhlY0Nv bnRleHQgKmN4dCwKIHN0YXRpYyB2b2lkIGdldEpzb25QYXRoSXRlbShKc29uUGF0aEV4ZWNDb250 ZXh0ICpjeHQsIEpzb25QYXRoSXRlbSAqaXRlbSwKIAkJCQkJCQlKc29uYlZhbHVlICp2YWx1ZSk7 CiBzdGF0aWMgdm9pZCBnZXRKc29uUGF0aFZhcmlhYmxlKEpzb25QYXRoRXhlY0NvbnRleHQgKmN4 dCwKLQkJCQkJCQkJSnNvblBhdGhJdGVtICp2YXJpYWJsZSwgSnNvbmIgKnZhcnMsIEpzb25iVmFs dWUgKnZhbHVlKTsKKwkJCQkJCQkJSnNvblBhdGhJdGVtICp2YXJpYWJsZSwgSnNvbmJWYWx1ZSAq dmFsdWUpOworc3RhdGljIGludAljb3VudFZhcmlhYmxlc0Zyb21Kc29uYih2b2lkICp2YXJzSnNv bmIpOworc3RhdGljIEpzb25iVmFsdWUgKmdldEpzb25QYXRoVmFyaWFibGVGcm9tSnNvbmIodm9p ZCAqdmFyc0pzb25iLCBjaGFyICp2YXJOYW1lLAorCQkJCQkJCQkJCQkJaW50IHZhck5hbWVMZW4s CisJCQkJCQkJCQkJCQlKc29uYlZhbHVlICpiYXNlT2JqZWN0LAorCQkJCQkJCQkJCQkJaW50ICpi YXNlT2JqZWN0SWQpOwogc3RhdGljIGludAlKc29uYkFycmF5U2l6ZShKc29uYlZhbHVlICpqYik7 CiBzdGF0aWMgSnNvblBhdGhCb29sIGV4ZWN1dGVDb21wYXJpc29uKEpzb25QYXRoSXRlbSAqY21w LCBKc29uYlZhbHVlICpsdiwKIAkJCQkJCQkJCSAgSnNvbmJWYWx1ZSAqcnYsIHZvaWQgKnApOwpA QCAtMjg0LDcgKzI5OCw5IEBAIGpzb25iX3BhdGhfZXhpc3RzX2ludGVybmFsKEZ1bmN0aW9uQ2Fs bEluZm8gZmNpbmZvLCBib29sIHR6KQogCQlzaWxlbnQgPSBQR19HRVRBUkdfQk9PTCgzKTsKIAl9 CiAKLQlyZXMgPSBleGVjdXRlSnNvblBhdGgoanAsIHZhcnMsIGpiLCAhc2lsZW50LCBOVUxMLCB0 eik7CisJcmVzID0gZXhlY3V0ZUpzb25QYXRoKGpwLCB2YXJzLCBnZXRKc29uUGF0aFZhcmlhYmxl RnJvbUpzb25iLAorCQkJCQkJICBjb3VudFZhcmlhYmxlc0Zyb21Kc29uYiwKKwkJCQkJCSAgamIs ICFzaWxlbnQsIE5VTEwsIHR6KTsKIAogCVBHX0ZSRUVfSUZfQ09QWShqYiwgMCk7CiAJUEdfRlJF RV9JRl9DT1BZKGpwLCAxKTsKQEAgLTMzOSw3ICszNTUsOSBAQCBqc29uYl9wYXRoX21hdGNoX2lu dGVybmFsKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIHR6KQogCQlzaWxlbnQgPSBQR19H RVRBUkdfQk9PTCgzKTsKIAl9CiAKLQkodm9pZCkgZXhlY3V0ZUpzb25QYXRoKGpwLCB2YXJzLCBq YiwgIXNpbGVudCwgJmZvdW5kLCB0eik7CisJKHZvaWQpIGV4ZWN1dGVKc29uUGF0aChqcCwgdmFy cywgZ2V0SnNvblBhdGhWYXJpYWJsZUZyb21Kc29uYiwKKwkJCQkJCSAgIGNvdW50VmFyaWFibGVz RnJvbUpzb25iLAorCQkJCQkJICAgamIsICFzaWxlbnQsICZmb3VuZCwgdHopOwogCiAJUEdfRlJF RV9JRl9DT1BZKGpiLCAwKTsKIAlQR19GUkVFX0lGX0NPUFkoanAsIDEpOwpAQCAtNDE3LDcgKzQz NSw5IEBAIGpzb25iX3BhdGhfcXVlcnlfaW50ZXJuYWwoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8s IGJvb2wgdHopCiAJCXZhcnMgPSBQR19HRVRBUkdfSlNPTkJfUF9DT1BZKDIpOwogCQlzaWxlbnQg PSBQR19HRVRBUkdfQk9PTCgzKTsKIAotCQkodm9pZCkgZXhlY3V0ZUpzb25QYXRoKGpwLCB2YXJz LCBqYiwgIXNpbGVudCwgJmZvdW5kLCB0eik7CisJCSh2b2lkKSBleGVjdXRlSnNvblBhdGgoanAs IHZhcnMsIGdldEpzb25QYXRoVmFyaWFibGVGcm9tSnNvbmIsCisJCQkJCQkJICAgY291bnRWYXJp YWJsZXNGcm9tSnNvbmIsCisJCQkJCQkJICAgamIsICFzaWxlbnQsICZmb3VuZCwgdHopOwogCiAJ CWZ1bmNjdHgtPnVzZXJfZmN0eCA9IEpzb25WYWx1ZUxpc3RHZXRMaXN0KCZmb3VuZCk7CiAKQEAg LTQ2NCw3ICs0ODQsOSBAQCBqc29uYl9wYXRoX3F1ZXJ5X2FycmF5X2ludGVybmFsKEZ1bmN0aW9u Q2FsbEluZm8gZmNpbmZvLCBib29sIHR6KQogCUpzb25iCSAgICp2YXJzID0gUEdfR0VUQVJHX0pT T05CX1AoMik7CiAJYm9vbAkJc2lsZW50ID0gUEdfR0VUQVJHX0JPT0woMyk7CiAKLQkodm9pZCkg ZXhlY3V0ZUpzb25QYXRoKGpwLCB2YXJzLCBqYiwgIXNpbGVudCwgJmZvdW5kLCB0eik7CisJKHZv aWQpIGV4ZWN1dGVKc29uUGF0aChqcCwgdmFycywgZ2V0SnNvblBhdGhWYXJpYWJsZUZyb21Kc29u YiwKKwkJCQkJCSAgIGNvdW50VmFyaWFibGVzRnJvbUpzb25iLAorCQkJCQkJICAgamIsICFzaWxl bnQsICZmb3VuZCwgdHopOwogCiAJUEdfUkVUVVJOX0pTT05CX1AoSnNvbmJWYWx1ZVRvSnNvbmIo d3JhcEl0ZW1zSW5BcnJheSgmZm91bmQpKSk7CiB9CkBAIC00OTUsNyArNTE3LDkgQEAganNvbmJf cGF0aF9xdWVyeV9maXJzdF9pbnRlcm5hbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCB0 eikKIAlKc29uYgkgICAqdmFycyA9IFBHX0dFVEFSR19KU09OQl9QKDIpOwogCWJvb2wJCXNpbGVu dCA9IFBHX0dFVEFSR19CT09MKDMpOwogCi0JKHZvaWQpIGV4ZWN1dGVKc29uUGF0aChqcCwgdmFy cywgamIsICFzaWxlbnQsICZmb3VuZCwgdHopOworCSh2b2lkKSBleGVjdXRlSnNvblBhdGgoanAs IHZhcnMsIGdldEpzb25QYXRoVmFyaWFibGVGcm9tSnNvbmIsCisJCQkJCQkgICBjb3VudFZhcmlh Ymxlc0Zyb21Kc29uYiwKKwkJCQkJCSAgIGpiLCAhc2lsZW50LCAmZm91bmQsIHR6KTsKIAogCWlm IChKc29uVmFsdWVMaXN0TGVuZ3RoKCZmb3VuZCkgPj0gMSkKIAkJUEdfUkVUVVJOX0pTT05CX1Ao SnNvbmJWYWx1ZVRvSnNvbmIoSnNvblZhbHVlTGlzdEhlYWQoJmZvdW5kKSkpOwpAQCAtNTIyLDYg KzU0Niw5IEBAIGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfdHooUEdfRlVOQ1RJT05fQVJHUykKICAq CiAgKiAncGF0aCcgLSBqc29ucGF0aCB0byBiZSBleGVjdXRlZAogICogJ3ZhcnMnIC0gdmFyaWFi bGVzIHRvIGJlIHN1YnN0aXR1dGVkIHRvIGpzb25wYXRoCisgKiAnZ2V0VmFyJyAtIGNhbGxiYWNr IHVzZWQgYnkgZ2V0SnNvblBhdGhWYXJpYWJsZSgpIHRvIGV4dHJhY3QgdmFyaWFibGVzIGZyb20K KyAqCQkndmFycycKKyAqICdjb3VudFZhcnMnIC0gY2FsbGJhY2sgdG8gY291bnQgdGhlIG51bWJl ciBvZiBqc29ucGF0aCB2YXJpYWJsZXMgaW4gJ3ZhcnMnCiAgKiAnanNvbicgLSB0YXJnZXQgZG9j dW1lbnQgZm9yIGpzb25wYXRoIGV2YWx1YXRpb24KICAqICd0aHJvd0Vycm9ycycgLSB3aGV0aGVy IHdlIHNob3VsZCB0aHJvdyBzdXBwcmVzc2libGUgZXJyb3JzCiAgKiAncmVzdWx0JyAtIGxpc3Qg dG8gc3RvcmUgcmVzdWx0IGl0ZW1zIGludG8KQEAgLTUzNyw4ICs1NjQsMTAgQEAganNvbmJfcGF0 aF9xdWVyeV9maXJzdF90eihQR19GVU5DVElPTl9BUkdTKQogICogSW4gb3RoZXIgY2FzZSBpdCB0 cmllcyB0byBmaW5kIGFsbCB0aGUgc2F0aXNmaWVkIHJlc3VsdCBpdGVtcy4KICAqLwogc3RhdGlj IEpzb25QYXRoRXhlY1Jlc3VsdAotZXhlY3V0ZUpzb25QYXRoKEpzb25QYXRoICpwYXRoLCBKc29u YiAqdmFycywgSnNvbmIgKmpzb24sIGJvb2wgdGhyb3dFcnJvcnMsCi0JCQkJSnNvblZhbHVlTGlz dCAqcmVzdWx0LCBib29sIHVzZVR6KQorZXhlY3V0ZUpzb25QYXRoKEpzb25QYXRoICpwYXRoLCB2 b2lkICp2YXJzLCBKc29uUGF0aEdldFZhckNhbGxiYWNrIGdldFZhciwKKwkJCQlKc29uUGF0aENv dW50VmFyc0NhbGxiYWNrIGNvdW50VmFycywKKwkJCQlKc29uYiAqanNvbiwgYm9vbCB0aHJvd0Vy cm9ycywgSnNvblZhbHVlTGlzdCAqcmVzdWx0LAorCQkJCWJvb2wgdXNlVHopCiB7CiAJSnNvblBh dGhFeGVjQ29udGV4dCBjeHQ7CiAJSnNvblBhdGhFeGVjUmVzdWx0IHJlczsKQEAgLTU1MCwyMiAr NTc5LDE2IEBAIGV4ZWN1dGVKc29uUGF0aChKc29uUGF0aCAqcGF0aCwgSnNvbmIgKnZhcnMsIEpz b25iICpqc29uLCBib29sIHRocm93RXJyb3JzLAogCWlmICghSnNvbmJFeHRyYWN0U2NhbGFyKCZq c29uLT5yb290LCAmamJ2KSkKIAkJSnNvbmJJbml0QmluYXJ5KCZqYnYsIGpzb24pOwogCi0JaWYg KHZhcnMgJiYgIUpzb25Db250YWluZXJJc09iamVjdCgmdmFycy0+cm9vdCkpCi0JewotCQllcmVw b3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUp LAotCQkJCSBlcnJtc2coIlwidmFyc1wiIGFyZ3VtZW50IGlzIG5vdCBhbiBvYmplY3QiKSwKLQkJ CQkgZXJyZGV0YWlsKCJKc29ucGF0aCBwYXJhbWV0ZXJzIHNob3VsZCBiZSBlbmNvZGVkIGFzIGtl eS12YWx1ZSBwYWlycyBvZiBcInZhcnNcIiBvYmplY3QuIikpKTsKLQl9Ci0KIAljeHQudmFycyA9 IHZhcnM7CisJY3h0LmdldFZhciA9IGdldFZhcjsKIAljeHQubGF4TW9kZSA9IChwYXRoLT5oZWFk ZXIgJiBKU09OUEFUSF9MQVgpICE9IDA7CiAJY3h0Lmlnbm9yZVN0cnVjdHVyYWxFcnJvcnMgPSBj eHQubGF4TW9kZTsKIAljeHQucm9vdCA9ICZqYnY7CiAJY3h0LmN1cnJlbnQgPSAmamJ2OwogCWN4 dC5iYXNlT2JqZWN0LmpiYyA9IE5VTEw7CiAJY3h0LmJhc2VPYmplY3QuaWQgPSAwOwotCWN4dC5s YXN0R2VuZXJhdGVkT2JqZWN0SWQgPSB2YXJzID8gMiA6IDE7CisJLyogMSArIG51bWJlciBvZiBi YXNlIG9iamVjdHMgaW4gdmFycyAqLworCWN4dC5sYXN0R2VuZXJhdGVkT2JqZWN0SWQgPSAxICsg Y291bnRWYXJzKHZhcnMpOwogCWN4dC5pbm5lcm1vc3RBcnJheVNpemUgPSAtMTsKIAljeHQudGhy b3dFcnJvcnMgPSB0aHJvd0Vycm9yczsKIAljeHQudXNlVHogPSB1c2VUejsKQEAgLTIxMDgsNyAr MjEzMSw3IEBAIGdldEpzb25QYXRoSXRlbShKc29uUGF0aEV4ZWNDb250ZXh0ICpjeHQsIEpzb25Q YXRoSXRlbSAqaXRlbSwKIAkJCQkJCQkJCQkJCSAmdmFsdWUtPnZhbC5zdHJpbmcubGVuKTsKIAkJ CWJyZWFrOwogCQljYXNlIGpwaVZhcmlhYmxlOgotCQkJZ2V0SnNvblBhdGhWYXJpYWJsZShjeHQs IGl0ZW0sIGN4dC0+dmFycywgdmFsdWUpOworCQkJZ2V0SnNvblBhdGhWYXJpYWJsZShjeHQsIGl0 ZW0sIHZhbHVlKTsKIAkJCXJldHVybjsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bmV4 cGVjdGVkIGpzb25wYXRoIGl0ZW0gdHlwZSIpOwpAQCAtMjEyMCw0MiArMjE0Myw4MSBAQCBnZXRK c29uUGF0aEl0ZW0oSnNvblBhdGhFeGVjQ29udGV4dCAqY3h0LCBKc29uUGF0aEl0ZW0gKml0ZW0s CiAgKi8KIHN0YXRpYyB2b2lkCiBnZXRKc29uUGF0aFZhcmlhYmxlKEpzb25QYXRoRXhlY0NvbnRl eHQgKmN4dCwgSnNvblBhdGhJdGVtICp2YXJpYWJsZSwKLQkJCQkJSnNvbmIgKnZhcnMsIEpzb25i VmFsdWUgKnZhbHVlKQorCQkJCQlKc29uYlZhbHVlICp2YWx1ZSkKIHsKIAljaGFyCSAgICp2YXJO YW1lOwogCWludAkJCXZhck5hbWVMZW5ndGg7Ci0JSnNvbmJWYWx1ZQl0bXA7CisJSnNvbmJWYWx1 ZQliYXNlT2JqZWN0OworCWludAkJCWJhc2VPYmplY3RJZDsKIAlKc29uYlZhbHVlICp2OwogCi0J aWYgKCF2YXJzKQorCUFzc2VydCh2YXJpYWJsZS0+dHlwZSA9PSBqcGlWYXJpYWJsZSk7CisJdmFy TmFtZSA9IGpzcEdldFN0cmluZyh2YXJpYWJsZSwgJnZhck5hbWVMZW5ndGgpOworCisJaWYgKGN4 dC0+dmFycyA9PSBOVUxMIHx8CisJCSh2ID0gY3h0LT5nZXRWYXIoY3h0LT52YXJzLCB2YXJOYW1l LCB2YXJOYW1lTGVuZ3RoLAorCQkJCQkJICZiYXNlT2JqZWN0LCAmYmFzZU9iamVjdElkKSkgPT0g TlVMTCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9P QkpFQ1QpLAorCQkJCSBlcnJtc2coImNvdWxkIG5vdCBmaW5kIGpzb25wYXRoIHZhcmlhYmxlIFwi JXNcIiIsCisJCQkJCQlwbnN0cmR1cCh2YXJOYW1lLCB2YXJOYW1lTGVuZ3RoKSkpKTsKKworCWlm IChiYXNlT2JqZWN0SWQgPiAwKQogCXsKLQkJdmFsdWUtPnR5cGUgPSBqYnZOdWxsOwotCQlyZXR1 cm47CisJCSp2YWx1ZSA9ICp2OworCQlzZXRCYXNlT2JqZWN0KGN4dCwgJmJhc2VPYmplY3QsIGJh c2VPYmplY3RJZCk7CiAJfQorfQorCisvKgorICogRGVmaW5pdGlvbiBvZiBKc29uUGF0aEdldFZh ckNhbGxiYWNrIGZvciB3aGVuIEpzb25QYXRoRXhlY0NvbnRleHQudmFycworICogaXMgc3BlY2lm aWVkIGFzIGEganNvbmIgdmFsdWUuCisgKi8KK3N0YXRpYyBKc29uYlZhbHVlICoKK2dldEpzb25Q YXRoVmFyaWFibGVGcm9tSnNvbmIodm9pZCAqdmFyc0pzb25iLCBjaGFyICp2YXJOYW1lLCBpbnQg dmFyTmFtZUxlbmd0aCwKKwkJCQkJCQkgSnNvbmJWYWx1ZSAqYmFzZU9iamVjdCwgaW50ICpiYXNl T2JqZWN0SWQpCit7CisJSnNvbmIJICAgKnZhcnMgPSB2YXJzSnNvbmI7CisJSnNvbmJWYWx1ZQl0 bXA7CisJSnNvbmJWYWx1ZSAqcmVzdWx0OwogCi0JQXNzZXJ0KHZhcmlhYmxlLT50eXBlID09IGpw aVZhcmlhYmxlKTsKLQl2YXJOYW1lID0ganNwR2V0U3RyaW5nKHZhcmlhYmxlLCAmdmFyTmFtZUxl bmd0aCk7CiAJdG1wLnR5cGUgPSBqYnZTdHJpbmc7CiAJdG1wLnZhbC5zdHJpbmcudmFsID0gdmFy TmFtZTsKIAl0bXAudmFsLnN0cmluZy5sZW4gPSB2YXJOYW1lTGVuZ3RoOwogCi0JdiA9IGZpbmRK c29uYlZhbHVlRnJvbUNvbnRhaW5lcigmdmFycy0+cm9vdCwgSkJfRk9CSkVDVCwgJnRtcCk7CisJ cmVzdWx0ID0gZmluZEpzb25iVmFsdWVGcm9tQ29udGFpbmVyKCZ2YXJzLT5yb290LCBKQl9GT0JK RUNULCAmdG1wKTsKIAotCWlmICh2KQorCWlmIChyZXN1bHQgPT0gTlVMTCkKIAl7Ci0JCSp2YWx1 ZSA9ICp2OwotCQlwZnJlZSh2KTsKKwkJKmJhc2VPYmplY3RJZCA9IC0xOworCQlyZXR1cm4gTlVM TDsKIAl9Ci0JZWxzZQorCisJKmJhc2VPYmplY3RJZCA9IDE7CisJSnNvbmJJbml0QmluYXJ5KGJh c2VPYmplY3QsIHZhcnMpOworCisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIERlZmluaXRp b24gb2YgSnNvblBhdGhDb3VudFZhcnNDYWxsYmFjayBmb3Igd2hlbiBKc29uUGF0aEV4ZWNDb250 ZXh0LnZhcnMKKyAqIGlzIHNwZWNpZmllZCBhcyBhIGpzb25iIHZhbHVlLgorICovCitzdGF0aWMg aW50Citjb3VudFZhcmlhYmxlc0Zyb21Kc29uYih2b2lkICp2YXJzSnNvbmIpCit7CisJSnNvbmIJ ICAgKnZhcnMgPSB2YXJzSnNvbmI7CisKKwlpZiAodmFycyAmJiAhSnNvbkNvbnRhaW5lcklzT2Jq ZWN0KCZ2YXJzLT5yb290KSkKIAl7CiAJCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJS Q09ERV9VTkRFRklORURfT0JKRUNUKSwKLQkJCQkgZXJybXNnKCJjb3VsZCBub3QgZmluZCBqc29u cGF0aCB2YXJpYWJsZSBcIiVzXCIiLAotCQkJCQkJcG5zdHJkdXAodmFyTmFtZSwgdmFyTmFtZUxl bmd0aCkpKSk7CisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwK KwkJCQllcnJtc2coIlwidmFyc1wiIGFyZ3VtZW50IGlzIG5vdCBhbiBvYmplY3QiKSwKKwkJCQll cnJkZXRhaWwoIkpzb25wYXRoIHBhcmFtZXRlcnMgc2hvdWxkIGJlIGVuY29kZWQgYXMga2V5LXZh bHVlIHBhaXJzIG9mIFwidmFyc1wiIG9iamVjdC4iKSk7CiAJfQogCi0JSnNvbmJJbml0QmluYXJ5 KCZ0bXAsIHZhcnMpOwotCXNldEJhc2VPYmplY3QoY3h0LCAmdG1wLCAxKTsKKwkvKiBjb3VudCBv ZiBiYXNlIG9iamVjdHMgKi8KKwlyZXR1cm4gdmFycyAhPSBOVUxMID8gMSA6IDA7CiB9CiAKIC8q KioqKioqKioqKioqKioqIFN1cHBvcnQgZnVuY3Rpb25zIGZvciBKc29uUGF0aCBleGVjdXRpb24g KioqKioqKioqKioqKioqKiovCi0tIAoyLjM1LjMKCg== --00000000000015508a060f9d2c00 Content-Type: application/octet-stream; name="v37-0007-JSON_TABLE.patch" Content-Disposition: attachment; filename="v37-0007-JSON_TABLE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrqes4yi0 RnJvbSBkZTFiNWFmYmM2NGQ3MTAzMzAxYzExN2E5N2NmMzIxYTY2YWI4NjUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMTggSmFuIDIwMjQgMTg6MDA6MDYgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz NyA3LzddIEpTT05fVEFCTEUKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3Bs YWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClRoaXMg ZmVhdHVyZSBhbGxvd3MganNvbmIgZGF0YSB0byBiZSB0cmVhdGVkIGFzIGEgdGFibGUgYW5kIHRo dXMKdXNlZCBpbiBhIEZST00gY2xhdXNlIGxpa2Ugb3RoZXIgdGFidWxhciBkYXRhLiBEYXRhIGNh biBiZSBzZWxlY3RlZApmcm9tIHRoZSBqc29uYiB1c2luZyBqc29ucGF0aCBleHByZXNzaW9ucywg YW5kIGhvaXN0ZWQgb3V0IG9mIG5lc3RlZApzdHJ1Y3R1cmVzIGluIHRoZSBqc29uYiB0byBmb3Jt IG11bHRpcGxlIHJvd3MsIG1vcmUgb3IgbGVzcyBsaWtlIGFuCm91dGVyIGpvaW4uCgpUaGlzIGFs c28gYWRkcyB0aGUgUExBTiBjbGF1c2VzIGZvciBKU09OX1RBQkxFLCB3aGljaCBhbGxvdyB0aGUg dXNlcgp0byBzcGVjaWZ5IGhvdyBkYXRhIGZyb20gbmVzdGVkIHBhdGhzIGFyZSBqb2luZWQsIGFs bG93aW5nCmNvbnNpZGVyYWJsZSBmcmVlZG9tIGluIHNoYXBpbmcgdGhlIHRhYnVsYXIgb3V0cHV0 IG9mIEpTT05fVEFCTEUuClBMQU4gREVGQVVMVCBhbGxvd3MgdGhlIHVzZXIgdG8gc3BlY2lmeSB0 aGUgZ2xvYmFsIHN0cmF0ZWdpZXMgd2hlbgpkZWFsaW5nIHdpdGggc2libGluZyBvciBjaGlsZCBu ZXN0ZWQgcGF0aHMuIFRoZSBpcyBvZnRlbiBzdWZmaWNpZW50CnRvIGFjaGlldmUgdGhlIG5lY2Vz c2FyeSBnb2FsLCBhbmQgaXMgY29uc2lkZXJhYmx5IHNpbXBsZXIgdGhhbiB0aGUKZnVsbCBQTEFO IGNsYXVzZSwgd2hpY2ggYWxsb3dzIHRoZSB1c2VyIHRvIHNwZWNpZnkgdGhlIHN0cmF0ZWd5IHRv IGJlCnVzZWQgZm9yIGVhY2ggbmFtZWQgbmVzdGVkIHBhdGguCgpBdXRob3I6IE5pa2l0YSBHbHVr aG92IDxuLmdsdWhvdkBwb3N0Z3Jlc3Byby5ydT4KQXV0aG9yOiBUZW9kb3IgU2lnYWV2IDx0ZW9k b3JAc2lnYWV2LnJ1PgpBdXRob3I6IE9sZWcgQmFydHVub3YgPG9iYXJ0dW5vdkBnbWFpbC5jb20+ CkF1dGhvcjogQWxleGFuZGVyIEtvcm90a292IDxhZWtvcm90a292QGdtYWlsLmNvbT4KQXV0aG9y OiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4KQXV0aG9yOiBBbWl0IExhbmdv dGUgPGFtaXRsYW5nb3RlMDlAZ21haWwuY29tPgpBdXRob3I6IEppYW4gSGUgPGppYW4udW5pdmVy c2FsaXR5QGdtYWlsLmNvbT4KClJldmlld2VycyBoYXZlIGluY2x1ZGVkIChpbiBubyBwYXJ0aWN1 bGFyIG9yZGVyKSBBbmRyZXMgRnJldW5kLCBBbGV4YW5kZXIKS29yb3Rrb3YsIFBhdmVsIFN0ZWh1 bGUsIEFuZHJldyBBbHN1cCwgRXJpayBSaWprZXJzLCBaaWhvbmcgWXUsCkhpbWFuc2h1IFVwYWRo eWF5YSwgRGFuaWVsIEd1c3RhZnNzb24sIEp1c3RpbiBQcnl6YnksIMOBbHZhcm8gSGVycmVyYSwK amlhbiBoZQoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9jZDBiYjkzNS0wMTU4LTc4 YTctMDhiNS05MDQ4ODZkZWFjNGJAcG9zdGdyZXNwcm8ucnUKRGlzY3Vzc2lvbjogaHR0cHM6Ly9w b3N0Z3IuZXMvbS8yMDIyMDYxNjIzMzEzMC5ycGFyaXZhZmlwdDZkb2ozQGFsYXAzLmFuYXJhemVs LmRlCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vYWJkOWI4M2ItYWE2Ni1mMjMwLTNk NmQtNzM0ODE3ZjA5OTVkJTQwcG9zdGdyZXNxbC5vcmcKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0 Z3IuZXMvbS9DQStIaXdxRTRYVGRmYjFuVz1Pam95X3RRU1JoWXQtcV9rYjZpNWQ0eGNLeXJMQzFO YmdAbWFpbC5nbWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvZnVuYy5zZ21sICAgICAgICAgICAg ICAgICAgICAgICAgfCAgNTEwICsrKysrKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1 cmVzLnR4dCAgICAgICAgICB8ICAgIDYgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBy SW50ZXJwLmMgICAgICAgICB8ICAgIDYgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxl RnVuY3NjYW4uYyAgICAgIHwgICAyNyArLQogc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMg ICAgICAgICAgICAgICAgIHwgIDEwOCArKwogc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMg ICAgICAgICAgICAgICAgIHwgICAzOCArCiBzcmMvYmFja2VuZC9wYXJzZXIvTWFrZWZpbGUgICAg ICAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAg ICAgICAgICAgICAgICB8ICAyOTkgKysrLQogc3JjL2JhY2tlbmQvcGFyc2VyL21lc29uLmJ1aWxk ICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNl LmMgICAgICAgICAgICAgfCAgIDE0ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5j ICAgICAgICAgICAgICAgfCAgIDUzICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRh YmxlLmMgICAgICAgICAgfCAgNzE4ICsrKysrKysrKysKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9yZWxhdGlvbi5jICAgICAgICAgICB8ICAgIDggKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV90YXJnZXQuYyAgICAgICAgICAgICB8ICAgIDMgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b25wYXRoX2V4ZWMuYyAgICAgICAgIHwgIDU0NyArKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgIHwgIDI3OSArKystCiBzcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgICAyICsKIHNyYy9pbmNsdWRlL25vZGVz L21ha2VmdW5jcy5oICAgICAgICAgICAgICAgICB8ICAgIDkgKwogc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgIDEwOSArKwogc3JjL2luY2x1ZGUvbm9kZXMv cHJpbW5vZGVzLmggICAgICAgICAgICAgICAgIHwgICA2MCArLQogc3JjL2luY2x1ZGUvcGFyc2Vy L2t3bGlzdC5oICAgICAgICAgICAgICAgICAgIHwgICAgNCArCiBzcmMvaW5jbHVkZS9wYXJzZXIv cGFyc2VfY2xhdXNlLmggICAgICAgICAgICAgfCAgICAzICsKIHNyYy9pbmNsdWRlL3V0aWxzL2pz b25wYXRoLmggICAgICAgICAgICAgICAgICB8ICAgIDMgKwogc3JjL2ludGVyZmFjZXMvZWNwZy90 ZXN0L2VjcGdfc2NoZWR1bGUgICAgICAgIHwgICAgMSArCiAuLi4vdGVzdC9leHBlY3RlZC9zcWwt c3FsanNvbl9qc29udGFibGUuYyAgICAgfCAgMTMyICsrCiAuLi4vZXhwZWN0ZWQvc3FsLXNxbGpz b25fanNvbnRhYmxlLnN0ZGVyciAgICAgfCAgIDIwICsKIC4uLi9leHBlY3RlZC9zcWwtc3FsanNv bl9qc29udGFibGUuc3Rkb3V0ICAgICB8ICAgIDAKIHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9z cWwvTWFrZWZpbGUgICAgICAgICB8ICAgIDEgKwogc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L3Nx bC9tZXNvbi5idWlsZCAgICAgIHwgICAgMSArCiAuLi4vZWNwZy90ZXN0L3NxbC9zcWxqc29uX2pz b250YWJsZS5wZ2MgICAgICAgfCAgIDMyICsKIC4uLi9yZWdyZXNzL2V4cGVjdGVkL3NxbGpzb25f anNvbnRhYmxlLm91dCAgICB8IDEyMDggKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3NxbGpzb25fanNvbnRhYmxlLnNxbCAgICB8ICA2ODYgKysrKysrKysrKwogc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAxNiArCiAzNCBmaWxl cyBjaGFuZ2VkLCA0ODYwIGluc2VydGlvbnMoKyksIDQ3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9qc29udGFibGUuYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbl9q c29udGFibGUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9l eHBlY3RlZC9zcWwtc3FsanNvbl9qc29udGFibGUuc3RkZXJyCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uX2pzb250YWJsZS5z dGRvdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL3Nx bGpzb25fanNvbnRhYmxlLnBnYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc3FsanNvbl9qc29udGFibGUub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvcmVncmVzcy9zcWwvc3FsanNvbl9qc29udGFibGUuc3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL2Z1bmMuc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKaW5kZXggMzBlNTE2ZTdj OS4uYTc0NWIzMWMxYiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvZnVuYy5zZ21sCkBAIC0xODM4OCw2ICsxODM4OCw1MTYgQEAgJC4qID8gKEAg bGlrZV9yZWdleCAiXlxcZCskIikKICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgogICA8L3NlY3Qy PgorCisgPHNlY3QyIGlkPSJmdW5jdGlvbnMtc3FsanNvbi10YWJsZSI+CisgIDx0aXRsZT5KU09O X1RBQkxFPC90aXRsZT4KKyAgPGluZGV4dGVybT4KKyAgIDxwcmltYXJ5Pmpzb25fdGFibGU8L3By aW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAgPGZ1bmN0aW9uPmpzb25fdGFi bGU8L2Z1bmN0aW9uPiBpcyBhbiBTUUwvSlNPTiBmdW5jdGlvbiB3aGljaAorICAgcXVlcmllcyA8 YWNyb255bT5KU09OPC9hY3JvbnltPiBkYXRhCisgICBhbmQgcHJlc2VudHMgdGhlIHJlc3VsdHMg YXMgYSByZWxhdGlvbmFsIHZpZXcsIHdoaWNoIGNhbiBiZSBhY2Nlc3NlZCBhcyBhCisgICByZWd1 bGFyIFNRTCB0YWJsZS4gWW91IGNhbiBvbmx5IHVzZSA8ZnVuY3Rpb24+anNvbl90YWJsZTwvZnVu Y3Rpb24+IGluc2lkZSB0aGUKKyAgIDxsaXRlcmFsPkZST008L2xpdGVyYWw+IGNsYXVzZSBvZiBh IDxsaXRlcmFsPlNFTEVDVDwvbGl0ZXJhbD4gc3RhdGVtZW50LgorICA8L3BhcmE+CisKKyAgPHBh cmE+CisgICBUYWtpbmcgSlNPTiBkYXRhIGFzIGlucHV0LCA8ZnVuY3Rpb24+anNvbl90YWJsZTwv ZnVuY3Rpb24+IHVzZXMKKyAgIGEgcGF0aCBleHByZXNzaW9uIHRvIGV4dHJhY3QgYSBwYXJ0IG9m IHRoZSBwcm92aWRlZCBkYXRhIHRoYXQKKyAgIHdpbGwgYmUgdXNlZCBhcyBhIDxmaXJzdHRlcm0+ cm93IHBhdHRlcm48L2ZpcnN0dGVybT4gZm9yIHRoZQorICAgY29uc3RydWN0ZWQgdmlldy4gRWFj aCBTUUwvSlNPTiBpdGVtIGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhlIHJvdyBwYXR0ZXJuIHNlcnZl cworICAgYXMgdGhlIHNvdXJjZSBmb3IgYSBzZXBhcmF0ZSByb3cgaW4gdGhlIGNvbnN0cnVjdGVk IHJlbGF0aW9uYWwgdmlldy4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVG8gc3BsaXQgdGhl IHJvdyBwYXR0ZXJuIGludG8gY29sdW1ucywgPGZ1bmN0aW9uPmpzb25fdGFibGU8L2Z1bmN0aW9u PgorICAgcHJvdmlkZXMgdGhlIDxsaXRlcmFsPkNPTFVNTlM8L2xpdGVyYWw+IGNsYXVzZSB0aGF0 IGRlZmluZXMgdGhlCisgICBzY2hlbWEgb2YgdGhlIGNyZWF0ZWQgdmlldy4gRm9yIGVhY2ggY29s dW1uIHRvIGJlIGNvbnN0cnVjdGVkLAorICAgdGhpcyBjbGF1c2UgcHJvdmlkZXMgYSBzZXBhcmF0 ZSBwYXRoIGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMKKyAgIHRoZSByb3cgcGF0dGVybiwgZXh0 cmFjdHMgYSBKU09OIGl0ZW0sIGFuZCByZXR1cm5zIGl0IGFzIGEKKyAgIHNlcGFyYXRlIFNRTCB2 YWx1ZSBmb3IgdGhlIHNwZWNpZmllZCBjb2x1bW4uIElmIHRoZSByZXF1aXJlZCB2YWx1ZQorICAg aXMgc3RvcmVkIGluIGEgbmVzdGVkIGxldmVsIG9mIHRoZSByb3cgcGF0dGVybiwgaXQgY2FuIGJl IGV4dHJhY3RlZAorICAgdXNpbmcgdGhlIDxsaXRlcmFsPk5FU1RFRCBQQVRIPC9saXRlcmFsPiBz dWJjbGF1c2UuIEpvaW5pbmcgdGhlCisgICBjb2x1bW5zIHJldHVybmVkIGJ5IDxsaXRlcmFsPk5F U1RFRCBQQVRIPC9saXRlcmFsPiBjYW4gYWRkIG11bHRpcGxlCisgICBuZXcgcm93cyB0byB0aGUg Y29uc3RydWN0ZWQgdmlldy4gU3VjaCByb3dzIGFyZSBjYWxsZWQKKyAgIDxmaXJzdHRlcm0+Y2hp bGQgcm93czwvZmlyc3R0ZXJtPiwgYXMgb3Bwb3NlZCB0byB0aGUgPGZpcnN0dGVybT5wYXJlbnQg cm93PC9maXJzdHRlcm0+CisgICB0aGF0IGdlbmVyYXRlcyB0aGVtLgorICA8L3BhcmE+CisKKyAg PHBhcmE+CisgICBUaGUgcm93cyBwcm9kdWNlZCBieSA8ZnVuY3Rpb24+SlNPTl9UQUJMRTwvZnVu Y3Rpb24+IGFyZSBsYXRlcmFsbHkKKyAgIGpvaW5lZCB0byB0aGUgcm93IHRoYXQgZ2VuZXJhdGVk IHRoZW0sIHNvIHlvdSBkbyBub3QgaGF2ZSB0byBleHBsaWNpdGx5IGpvaW4KKyAgIHRoZSBjb25z dHJ1Y3RlZCB2aWV3IHdpdGggdGhlIG9yaWdpbmFsIHRhYmxlIGhvbGRpbmcgPGFjcm9ueW0+SlNP TjwvYWNyb255bT4KKyAgIGRhdGEuIE9wdGlvbmFsbHksIHlvdSBjYW4gc3BlY2lmeSBob3cgdG8g am9pbiB0aGUgY29sdW1ucyByZXR1cm5lZAorICAgYnkgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xp dGVyYWw+IHVzaW5nIHRoZSA8bGl0ZXJhbD5QTEFOPC9saXRlcmFsPiBjbGF1c2UuCisgIDwvcGFy YT4KKworICA8cGFyYT4KKyAgIEVhY2ggPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+IGNs YXVzZSBjYW4gZ2VuZXJhdGUgb25lIG9yIG1vcmUKKyAgIGNvbHVtbnMuIENvbHVtbnMgcHJvZHVj ZWQgYnkgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+cyBhdCB0aGUKKyAgIHNhbWUgbGV2 ZWwgYXJlIGNvbnNpZGVyZWQgdG8gYmUgPGZpcnN0dGVybT5zaWJsaW5nczwvZmlyc3R0ZXJtPiwK KyAgIHdoaWxlIGEgY29sdW1uIHByb2R1Y2VkIGJ5IGEgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xp dGVyYWw+IGlzCisgICBjb25zaWRlcmVkIHRvIGJlIGEgY2hpbGQgb2YgdGhlIGNvbHVtbiBwcm9k dWNlZCBieSBhCisgICA8bGl0ZXJhbD5ORVNURUQgUEFUSDwvbGl0ZXJhbD4gb3Igcm93IGV4cHJl c3Npb24gYXQgYSBoaWdoZXIgbGV2ZWwuCisgICBTaWJsaW5nIGNvbHVtbnMgYXJlIGFsd2F5cyBq b2luZWQgZmlyc3QuIE9uY2UgdGhleSBhcmUgcHJvY2Vzc2VkLAorICAgdGhlIHJlc3VsdGluZyBy b3dzIGFyZSBqb2luZWQgdG8gdGhlIHBhcmVudCByb3cuCisgIDwvcGFyYT4KKworICA8cGFyYT4K KyAgIFRoZSBzeW50YXggaXM6CisgIDwvcGFyYT4KKworPHN5bm9wc2lzPgorSlNPTl9UQUJMRSAo CisgIDxyZXBsYWNlYWJsZT5jb250ZXh0X2l0ZW08L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxl PnBhdGhfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4gQVMgPHJlcGxhY2VhYmxl Pmpzb25fcGF0aF9uYW1lPC9yZXBsYWNlYWJsZT4gPC9vcHRpb25hbD4gPG9wdGlvbmFsPiBQQVNT SU5HIHsgPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT4gQVMgPHJlcGxhY2VhYmxlPnZh cm5hbWU8L3JlcGxhY2VhYmxlPiB9IDxvcHRpb25hbD4sIC4uLjwvb3B0aW9uYWw+IDwvb3B0aW9u YWw+CisgIENPTFVNTlMgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+anNvbl90YWJs ZV9jb2x1bW48L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+LCAuLi48L29wdGlvbmFsPiApCisgIDxv cHRpb25hbD4geyA8bGl0ZXJhbD5FUlJPUjwvbGl0ZXJhbD4gfCA8bGl0ZXJhbD5FTVBUWTwvbGl0 ZXJhbD4gfSA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0ZXJhbD4gPC9vcHRpb25hbD4KKyAgPG9wdGlv bmFsPgorICAgIFBMQU4gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+anNvbl90YWJs ZV9wbGFuPC9yZXBsYWNlYWJsZT4gKSB8CisgICAgUExBTiBERUZBVUxUICggeyBJTk5FUiB8IE9V VEVSIH0gPG9wdGlvbmFsPiAsIHsgQ1JPU1MgfCBVTklPTiB9IDwvb3B0aW9uYWw+CisgICAgICAg ICAgICAgICAgIHwgeyBDUk9TUyB8IFVOSU9OIH0gPG9wdGlvbmFsPiAsIHsgSU5ORVIgfCBPVVRF UiB9IDwvb3B0aW9uYWw+ICkKKyAgPC9vcHRpb25hbD4KKykKKworPHBocmFzZT4KK3doZXJlIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5qc29uX3RhYmxlX2NvbHVtbjwvcmVwbGFjZWFi bGU+IGlzOgorPC9waHJhc2U+CisgICAgPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiA8 cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4gUEFUSCA8cmVwbGFjZWFi bGU+anNvbl9wYXRoX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiA8L29wdGlvbmFsPgorICAg ICAgICA8b3B0aW9uYWw+IHsgV0lUSE9VVCB8IFdJVEggeyBDT05ESVRJT05BTCB8IDxvcHRpb25h bD5VTkNPTkRJVElPTkFMPC9vcHRpb25hbD4gfSB9IDxvcHRpb25hbD4gQVJSQVkgPC9vcHRpb25h bD4gV1JBUFBFUiA8L29wdGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+IHsgS0VFUCB8IE9NSVQg fSBRVU9URVMgPG9wdGlvbmFsPiBPTiBTQ0FMQVIgU1RSSU5HIDwvb3B0aW9uYWw+IDwvb3B0aW9u YWw+CisgICAgICAgIDxvcHRpb25hbD4geyBFUlJPUiB8IE5VTEwgfCBERUZBVUxUIDxyZXBsYWNl YWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gfSBPTiBFTVBUWSA8L29wdGlvbmFsPgorICAg ICAgICA8b3B0aW9uYWw+IHsgRVJST1IgfCBOVUxMIHwgREVGQVVMVCA8cmVwbGFjZWFibGU+ZXhw cmVzc2lvbjwvcmVwbGFjZWFibGU+IH0gT04gRVJST1IgPC9vcHRpb25hbD4KKyAgfCA8cmVwbGFj ZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT50eXBlPC9yZXBsYWNlYWJsZT4g Rk9STUFUIEpTT04gPG9wdGlvbmFsPkVOQ09ESU5HIDxsaXRlcmFsPlVURjg8L2xpdGVyYWw+PC9v cHRpb25hbD4KKyAgICAgICAgPG9wdGlvbmFsPiBQQVRIIDxyZXBsYWNlYWJsZT5qc29uX3BhdGhf c3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25h bD4geyBXSVRIT1VUIHwgV0lUSCB7IENPTkRJVElPTkFMIHwgPG9wdGlvbmFsPlVOQ09ORElUSU9O QUw8L29wdGlvbmFsPiB9IH0gPG9wdGlvbmFsPiBBUlJBWSA8L29wdGlvbmFsPiBXUkFQUEVSIDwv b3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyBLRUVQIHwgT01JVCB9IFFVT1RFUyA8b3B0 aW9uYWw+IE9OIFNDQUxBUiBTVFJJTkcgPC9vcHRpb25hbD4gPC9vcHRpb25hbD4KKyAgICAgICAg PG9wdGlvbmFsPiB7IEVSUk9SIHwgTlVMTCB8IEVNUFRZIHsgQVJSQVkgfCBPQkpFQ1QgfSB8IERF RkFVTFQgPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB9IE9OIEVNUFRZIDwv b3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyBFUlJPUiB8IE5VTEwgfCBFTVBUWSB7IEFS UkFZIHwgT0JKRUNUIH0gfCBERUZBVUxUIDxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNl YWJsZT4gfSBPTiBFUlJPUiA8L29wdGlvbmFsPgorICB8IDxyZXBsYWNlYWJsZT5uYW1lPC9yZXBs YWNlYWJsZT4gPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPiBFWElTVFMgPG9wdGlvbmFs PiBQQVRIIDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+ IDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyBFUlJPUiB8IFRSVUUgfCBGQUxTRSB8 IFVOS05PV04gfSBPTiBFUlJPUiA8L29wdGlvbmFsPgorICB8IE5FU1RFRCBQQVRIIDxyZXBsYWNl YWJsZT5qc29uX3BhdGhfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4gQVMg PHJlcGxhY2VhYmxlPnBhdGhfbmFtZTwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+CisgICAgICAg IENPTFVNTlMgKCA8cmVwbGFjZWFibGU+anNvbl90YWJsZV9jb2x1bW48L3JlcGxhY2VhYmxlPiA8 b3B0aW9uYWw+LCAuLi48L29wdGlvbmFsPiApCisgIHwgPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxh Y2VhYmxlPiBGT1IgT1JESU5BTElUWQorPHBocmFzZT4KKzxyZXBsYWNlYWJsZT5qc29uX3RhYmxl X3BsYW48L3JlcGxhY2VhYmxlPiBpczoKKzwvcGhyYXNlPgorICAgIDxyZXBsYWNlYWJsZT5qc29u X3BhdGhfbmFtZTwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4geyBPVVRFUiB8IElOTkVSIH0gPHJl cGxhY2VhYmxlPmpzb25fdGFibGVfcGxhbl9wcmltYXJ5PC9yZXBsYWNlYWJsZT4gPC9vcHRpb25h bD4KKyAgfCA8cmVwbGFjZWFibGU+anNvbl90YWJsZV9wbGFuX3ByaW1hcnk8L3JlcGxhY2VhYmxl PiB7IFVOSU9OIDxyZXBsYWNlYWJsZT5qc29uX3RhYmxlX3BsYW5fcHJpbWFyeTwvcmVwbGFjZWFi bGU+IH0gPG9wdGlvbmFsPi4uLjwvb3B0aW9uYWw+CisgIHwgPHJlcGxhY2VhYmxlPmpzb25fdGFi bGVfcGxhbl9wcmltYXJ5PC9yZXBsYWNlYWJsZT4geyBDUk9TUyA8cmVwbGFjZWFibGU+anNvbl90 YWJsZV9wbGFuX3ByaW1hcnk8L3JlcGxhY2VhYmxlPiB9IDxvcHRpb25hbD4uLi48L29wdGlvbmFs PgorPHBocmFzZT4KKzxyZXBsYWNlYWJsZT5qc29uX3RhYmxlX3BsYW5fcHJpbWFyeTwvcmVwbGFj ZWFibGU+IGlzOgorPC9waHJhc2U+CisgICAgPHJlcGxhY2VhYmxlPmpzb25fcGF0aF9uYW1lPC9y ZXBsYWNlYWJsZT4gfCAoIDxyZXBsYWNlYWJsZT5qc29uX3RhYmxlX3BsYW48L3JlcGxhY2VhYmxl PiApCis8L3N5bm9wc2lzPgorCisgIDxwYXJhPgorICAgRWFjaCBzeW50YXggZWxlbWVudCBpcyBk ZXNjcmliZWQgYmVsb3cgaW4gbW9yZSBkZXRhaWwuCisgIDwvcGFyYT4KKworICA8dmFyaWFibGVs aXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVyYWw+PHJlcGxh Y2VhYmxlPmNvbnRleHRfaXRlbTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGU+cGF0aF9leHBy ZXNzaW9uPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiA8bGl0ZXJhbD5BUzwvbGl0ZXJhbD4gPHJl cGxhY2VhYmxlPmpzb25fcGF0aF9uYW1lPC9yZXBsYWNlYWJsZT4gPC9vcHRpb25hbD4gPG9wdGlv bmFsPiA8bGl0ZXJhbD5QQVNTSU5HPC9saXRlcmFsPiB7IDxyZXBsYWNlYWJsZT52YWx1ZTwvcmVw bGFjZWFibGU+IDxsaXRlcmFsPkFTPC9saXRlcmFsPiA8cmVwbGFjZWFibGU+dmFybmFtZTwvcmVw bGFjZWFibGU+IH0gPG9wdGlvbmFsPiwgLi4uPC9vcHRpb25hbD48L29wdGlvbmFsPjwvbGl0ZXJh bD4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgIDxwYXJhPgorICAgICBUaGUgaW5w dXQgZGF0YSB0byBxdWVyeSwgdGhlIEpTT04gcGF0aCBleHByZXNzaW9uIGRlZmluaW5nIHRoZSBx dWVyeSwKKyAgICAgYW5kIGFuIG9wdGlvbmFsIDxsaXRlcmFsPlBBU1NJTkc8L2xpdGVyYWw+IGNs YXVzZSwgd2hpY2ggY2FuIHByb3ZpZGUgZGF0YQorICAgICB2YWx1ZXMgdG8gdGhlIDxyZXBsYWNl YWJsZT5wYXRoX2V4cHJlc3Npb248L3JlcGxhY2VhYmxlPi4KKyAgICAgVGhlIHJlc3VsdCBvZiB0 aGUgaW5wdXQgZGF0YQorICAgICBldmFsdWF0aW9uIGlzIGNhbGxlZCB0aGUgPGZpcnN0dGVybT5y b3cgcGF0dGVybjwvZmlyc3R0ZXJtPi4gVGhlIHJvdworICAgICBwYXR0ZXJuIGlzIHVzZWQgYXMg dGhlIHNvdXJjZSBmb3Igcm93IHZhbHVlcyBpbiB0aGUgY29uc3RydWN0ZWQgdmlldy4KKyAgICA8 L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlz dGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD5DT0xVTU5TPC9saXRlcmFsPiggPHJl cGxhY2VhYmxlPmpzb25fdGFibGVfY29sdW1uPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiwgLi4u PC9vcHRpb25hbD4gKQorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4K KyAgICAgVGhlIDxsaXRlcmFsPkNPTFVNTlM8L2xpdGVyYWw+IGNsYXVzZSBkZWZpbmluZyB0aGUg c2NoZW1hIG9mIHRoZQorICAgICBjb25zdHJ1Y3RlZCB2aWV3LiBJbiB0aGlzIGNsYXVzZSwgeW91 IG11c3Qgc3BlY2lmeSBhbGwgdGhlIGNvbHVtbnMKKyAgICAgdG8gYmUgZmlsbGVkIHdpdGggU1FM L0pTT04gaXRlbXMuCisgICAgIFRoZSA8cmVwbGFjZWFibGU+anNvbl90YWJsZV9jb2x1bW48L3Jl cGxhY2VhYmxlPgorICAgICBleHByZXNzaW9uIGhhcyB0aGUgZm9sbG93aW5nIHN5bnRheCB2YXJp YW50czoKKyAgICA8L3BhcmE+CisKKyAgPHZhcmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0ZW50cnk+ CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPjxyZXBsYWNlYWJsZT5uYW1lPC9yZXBsYWNlYWJs ZT4gPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgIDxvcHRpb25hbD4g PGxpdGVyYWw+UEFUSDwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPmpzb25fcGF0aF9zcGVjaWZpY2F0 aW9uPC9yZXBsYWNlYWJsZT4gPC9vcHRpb25hbD48L2xpdGVyYWw+CisgICAgPC90ZXJtPgorICAg IDxsaXN0aXRlbT4KKworICAgIDxwYXJhPgorICAgICBJbnNlcnRzIGEgc2luZ2xlIFNRTC9KU09O IGl0ZW0gaW50byB0aGUgb3V0cHV0IHJvdy4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAg IFRoZSBwcm92aWRlZCA8bGl0ZXJhbD5QQVRIPC9saXRlcmFsPiBleHByZXNzaW9uIGlzIGV2YWx1 YXRlZCBhbmQKKyAgICAgdGhlIGNvbHVtbiBpcyBmaWxsZWQgd2l0aCB0aGUgcHJvZHVjZWQgU1FM L0pTT04gaXRlbSwgb25lIGZvciBlYWNoIHJvdy4KKyAgICAgSWYgdGhlIDxsaXRlcmFsPlBBVEg8 L2xpdGVyYWw+IGV4cHJlc3Npb24gaXMgb21pdHRlZCwKKyAgICAgPGZ1bmN0aW9uPkpTT05fVEFC TEU8L2Z1bmN0aW9uPiB1c2VzIHRoZQorICAgICA8bGl0ZXJhbD4kLjxyZXBsYWNlYWJsZT5uYW1l PC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+IHBhdGggZXhwcmVzc2lvbiwKKyAgICAgd2hlcmUgPHJl cGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiBpcyB0aGUgcHJvdmlkZWQgY29sdW1uIG5hbWUu CisgICAgIEluIHRoaXMgY2FzZSwgdGhlIGNvbHVtbiBuYW1lIG11c3QgY29ycmVzcG9uZCB0byBv bmUgb2YgdGhlCisgICAgIGtleXMgd2l0aGluIHRoZSBTUUwvSlNPTiBpdGVtIHByb2R1Y2VkIGJ5 IHRoZSByb3cgcGF0dGVybi4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgIE9wdGlvbmFs bHksIHlvdSBjYW4gc3BlY2lmeSA8bGl0ZXJhbD5XUkFQUEVSPC9saXRlcmFsPiwKKyAgICAgPGxp dGVyYWw+UVVPVEVTPC9saXRlcmFsPiBjbGF1c2VzIHRvIGZvcm1hdCB0aGUgb3V0cHV0IGFuZAor ICAgICA8bGl0ZXJhbD5PTiBFTVBUWTwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPk9OIEVSUk9SPC9s aXRlcmFsPiB0byBoYW5kbGUKKyAgICAgdGhvc2UgbWlzc2luZyB2YWx1ZXMgYW5kIHN0cnVjdHVy YWwgZXJyb3JzLCByZXNwZWN0aXZlbHkuCisgICAgPC9wYXJhPgorICAgIDxub3RlPgorICAgICA8 cGFyYT4KKyAgICAgIFRoaXMgY2xhdXNlIGlzIGludGVybmFsbHkgdHVybmVkIGludG8gYW5kIGhh cyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMKKyAgICAgIDxmdW5jdGlvbj5qc29uX3ZhbHVlPC9mdW5j dGlvbj4gYW5kIDxmdW5jdGlvbj5qc29uX3F1ZXJ5PC9mdW5jdGlvbj4uCisgICAgICBUaGUgbGF0 dGVyIGlmIHRoZSBzcGVjaWZpZWQgdHlwZSBpcyBub3QgYSBzY2FsYXIgdHlwZSBvciBpZgorICAg ICAgPGxpdGVyYWw+V1JBUFBFUjwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+UVVPVEVTPC9saXRlcmFs PiBjbGF1c2UgaXMKKyAgICAgIHByZXNlbnQuCisgICAgIDwvcGFyYT4KKyAgICA8L25vdGU+Cisg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5Pgor ICAgIDx0ZXJtPgorICAgICA8cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+IDxyZXBsYWNl YWJsZT50eXBlPC9yZXBsYWNlYWJsZT4gPGxpdGVyYWw+Rk9STUFUIEpTT048L2xpdGVyYWw+IDxv cHRpb25hbD5FTkNPRElORyA8bGl0ZXJhbD5VVEY4PC9saXRlcmFsPjwvb3B0aW9uYWw+CisgICAg ICAgICAgPG9wdGlvbmFsPiA8bGl0ZXJhbD5QQVRIPC9saXRlcmFsPiA8cmVwbGFjZWFibGU+anNv bl9wYXRoX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiA8L29wdGlvbmFsPgorICAgIDwvdGVy bT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgSW5zZXJ0cyBhIGNvbXBvc2l0 ZSBTUUwvSlNPTiBpdGVtIGludG8gdGhlIG91dHB1dCByb3cuCisgICAgPC9wYXJhPgorICAgIDxw YXJhPgorICAgICBUaGUgcHJvdmlkZWQgPGxpdGVyYWw+UEFUSDwvbGl0ZXJhbD4gZXhwcmVzc2lv biBpcyBldmFsdWF0ZWQgYW5kCisgICAgIHRoZSBjb2x1bW4gaXMgZmlsbGVkIHdpdGggdGhlIHBy b2R1Y2VkIFNRTC9KU09OIGl0ZW0uICBJZiB0aGUKKyAgICAgPGxpdGVyYWw+UEFUSDwvbGl0ZXJh bD4gZXhwcmVzc2lvbiBpcyBvbWl0dGVkLCBwYXRoIGV4cHJlc3Npb24KKyAgICAgPGxpdGVyYWw+ JC48cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+PC9saXRlcmFsPiBpcyB1c2VkLAorICAg ICB3aGVyZSA8cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+IGlzIHRoZSBwcm92aWRlZCBj b2x1bW4gbmFtZS4KKyAgICAgSW4gdGhpcyBjYXNlLCB0aGUgY29sdW1uIG5hbWUgbXVzdCBjb3Jy ZXNwb25kIHRvIG9uZSBvZiB0aGUKKyAgICAga2V5cyB3aXRoaW4gdGhlIFNRTC9KU09OIGl0ZW0g cHJvZHVjZWQgYnkgdGhlIHJvdyBwYXR0ZXJuLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAg ICAgT3B0aW9uYWxseSwgeW91IGNhbiBzcGVjaWZ5IDxsaXRlcmFsPldSQVBQRVI8L2xpdGVyYWw+ LAorICAgICA8bGl0ZXJhbD5RVU9URVM8L2xpdGVyYWw+IGNsYXVzZXMgdG8gZm9ybWF0IHRoZSBv dXRwdXQgYW5kCisgICAgIDxsaXRlcmFsPk9OIEVNUFRZPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+ T04gRVJST1I8L2xpdGVyYWw+IHRvIGhhbmRsZQorICAgICB0aG9zZSBzY2VuYXJpb3MgYXBwcm9w cmlhdGVseS4KKyAgICA8L3BhcmE+CisgICAgPG5vdGU+CisgICAgIDxwYXJhPgorICAgICAgVGhp cyBjbGF1c2UgaXMgaW50ZXJuYWxseSB0dXJuZWQgaW50byBhbmQgaGFzIHRoZSBzYW1lIHNlbWFu dGljcyBhcworICAgICAgPGZ1bmN0aW9uPmpzb25fcXVlcnk8L2Z1bmN0aW9uPi4KKyAgICAgPC9w YXJhPgorICAgIDwvbm90ZT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisK KyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgICAgPHJlcGxhY2VhYmxlPm5hbWU8 L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+CisgICAgICAgPGxp dGVyYWw+RVhJU1RTPC9saXRlcmFsPiA8b3B0aW9uYWw+IDxsaXRlcmFsPlBBVEg8L2xpdGVyYWw+ IDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IDwvb3B0 aW9uYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKworICAgIDxwYXJhPgorICAgICBJ bnNlcnRzIGEgYm9vbGVhbiBpdGVtIGludG8gZWFjaCBvdXRwdXQgcm93LgorICAgIDwvcGFyYT4K KyAgICA8cGFyYT4KKyAgICAgVGhlIHZhbHVlIGNvcnJlc3BvbmRzIHRvIHdoZXRoZXIgZXZhbHVh dGluZyB0aGUgPGxpdGVyYWw+UEFUSDwvbGl0ZXJhbD4KKyAgICAgZXhwcmVzc2lvbiB5aWVsZHMg YW55IFNRTC9KU09OIGl0ZW1zLiAgSWYgdGhlIDxsaXRlcmFsPlBBVEg8L2xpdGVyYWw+CisgICAg IGV4cHJlc3Npb24gaXMgb21pdHRlZCwgcGF0aCBleHByZXNzaW9uCisgICAgIDxsaXRlcmFsPiQu PHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD4gaXMgdXNlZCwKKyAgICAg d2hlcmUgPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiBpcyB0aGUgcHJvdmlkZWQgY29s dW1uIG5hbWUuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBUaGUgc3BlY2lmaWVkIDxw YXJhbWV0ZXI+dHlwZTwvcGFyYW1ldGVyPiBzaG91bGQgaGF2ZSBhIGNhc3QgZnJvbSB0aGUKKyAg ICAgPHR5cGU+Ym9vbGVhbjwvdHlwZT4uCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBP cHRpb25hbGx5LCB5b3UgY2FuIGFkZCA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0ZXJhbD4gY2xhdXNl IHRvIGRlZmluZQorICAgICBlcnJvciBiZWhhdmlvci4KKyAgICA8L3BhcmE+CisgICAgPG5vdGU+ CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBjbGF1c2UgaXMgaW50ZXJuYWxseSB0dXJuZWQgaW50 byBhbmQgaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcworICAgICAgPGZ1bmN0aW9uPmpzb25fZXhp c3RzPC9mdW5jdGlvbj4uCisgICAgIDwvcGFyYT4KKyAgICA8L25vdGU+CisgICAgPC9saXN0aXRl bT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgor ICAgICAgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZT5qc29uX3Bh dGhfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4gPGxpdGVyYWw+QVM8L2xp dGVyYWw+IDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfbmFtZTwvcmVwbGFjZWFibGU+IDwvb3B0aW9u YWw+CisgICAgICAgICAgPGxpdGVyYWw+Q09MVU1OUzwvbGl0ZXJhbD4gKCA8cmVwbGFjZWFibGU+ anNvbl90YWJsZV9jb2x1bW48L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+LCAuLi48L29wdGlvbmFs PiApCisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKworICAgIDxwYXJhPgorICAgICBFeHRy YWN0cyBTUUwvSlNPTiBpdGVtcyBmcm9tIG5lc3RlZCBsZXZlbHMgb2YgdGhlIHJvdyBwYXR0ZXJu LAorICAgICBnZW5lcmF0ZXMgb25lIG9yIG1vcmUgY29sdW1ucyBhcyBkZWZpbmVkIGJ5IHRoZSA8 bGl0ZXJhbD5DT0xVTU5TPC9saXRlcmFsPgorICAgICBzdWJjbGF1c2UsIGFuZCBpbnNlcnRzIHRo ZSBleHRyYWN0ZWQgU1FML0pTT04gaXRlbXMgaW50byBlYWNoIHJvdyBvZiB0aGVzZSBjb2x1bW5z LgorICAgICBUaGUgPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfY29sdW1uPC9yZXBsYWNlYWJsZT4g ZXhwcmVzc2lvbiBpbiB0aGUKKyAgICAgPGxpdGVyYWw+Q09MVU1OUzwvbGl0ZXJhbD4gc3ViY2xh dXNlIHVzZXMgdGhlIHNhbWUgc3ludGF4IGFzIGluIHRoZQorICAgICBwYXJlbnQgPGxpdGVyYWw+ Q09MVU1OUzwvbGl0ZXJhbD4gY2xhdXNlLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAg ICBUaGUgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+IHN5bnRheCBpcyByZWN1cnNpdmUs CisgICAgIHNvIHlvdSBjYW4gZ28gZG93biBtdWx0aXBsZSBuZXN0ZWQgbGV2ZWxzIGJ5IHNwZWNp Znlpbmcgc2V2ZXJhbAorICAgICA8bGl0ZXJhbD5ORVNURUQgUEFUSDwvbGl0ZXJhbD4gc3ViY2xh dXNlcyB3aXRoaW4gZWFjaCBvdGhlci4KKyAgICAgSXQgYWxsb3dzIHRvIHVubmVzdCB0aGUgaGll cmFyY2h5IG9mIEpTT04gb2JqZWN0cyBhbmQgYXJyYXlzCisgICAgIGluIGEgc2luZ2xlIGZ1bmN0 aW9uIGludm9jYXRpb24gcmF0aGVyIHRoYW4gY2hhaW5pbmcgc2V2ZXJhbAorICAgICA8ZnVuY3Rp b24+SlNPTl9UQUJMRTwvZnVuY3Rpb24+IGV4cHJlc3Npb25zIGluIGFuIFNRTCBzdGF0ZW1lbnQu CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFlvdSBjYW4gdXNlIHRoZSA8bGl0ZXJh bD5QTEFOPC9saXRlcmFsPiBjbGF1c2UgdG8gZGVmaW5lIGhvdworICAgICB0byBqb2luIHRoZSBj b2x1bW5zIHJldHVybmVkIGJ5IDxsaXRlcmFsPk5FU1RFRCBQQVRIPC9saXRlcmFsPiBjbGF1c2Vz LgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAg IDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxyZXBsYWNlYWJsZT5uYW1lPC9yZXBs YWNlYWJsZT4gPGxpdGVyYWw+Rk9SIE9SRElOQUxJVFk8L2xpdGVyYWw+CisgICAgPC90ZXJtPgor ICAgIDxsaXN0aXRlbT4KKworICAgIDxwYXJhPgorICAgICBBZGRzIGFuIG9yZGluYWxpdHkgY29s dW1uIHRoYXQgcHJvdmlkZXMgc2VxdWVudGlhbCByb3cgbnVtYmVyaW5nLgorICAgICBZb3UgY2Fu IGhhdmUgb25seSBvbmUgb3JkaW5hbGl0eSBjb2x1bW4gcGVyIHRhYmxlLiBSb3cgbnVtYmVyaW5n CisgICAgIGlzIDEtYmFzZWQuIEZvciBjaGlsZCByb3dzIHRoYXQgcmVzdWx0IGZyb20gdGhlIDxs aXRlcmFsPk5FU1RFRCBQQVRIPC9saXRlcmFsPgorICAgICBjbGF1c2VzLCB0aGUgcGFyZW50IHJv dyBudW1iZXIgaXMgcmVwZWF0ZWQuCisgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8 L3Zhcmxpc3RlbnRyeT4KKyAgPC92YXJpYWJsZWxpc3Q+CisKKyAgICA8L2xpc3RpdGVtPgorICAg PC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxs aXRlcmFsPkFTPC9saXRlcmFsPiA8cmVwbGFjZWFibGU+anNvbl9wYXRoX25hbWU8L3JlcGxhY2Vh YmxlPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgVGhl IG9wdGlvbmFsIDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfbmFtZTwvcmVwbGFjZWFibGU+IHNlcnZl cyBhcyBhbgorICAgICBpZGVudGlmaWVyIG9mIHRoZSBwcm92aWRlZCA8cmVwbGFjZWFibGU+anNv bl9wYXRoX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPi4KKyAgICAgVGhlIHBhdGggbmFtZSBt dXN0IGJlIHVuaXF1ZSBhbmQgZGlzdGluY3QgZnJvbSB0aGUgY29sdW1uIG5hbWVzLgorICAgICBX aGVuIHVzaW5nIHRoZSA8bGl0ZXJhbD5QTEFOPC9saXRlcmFsPiBjbGF1c2UsIHlvdSBtdXN0IHNw ZWNpZnkgdGhlIG5hbWVzCisgICAgIGZvciBhbGwgdGhlIHBhdGhzLCBpbmNsdWRpbmcgdGhlIHJv dyBwYXR0ZXJuLiBFYWNoIHBhdGggbmFtZSBjYW4gYXBwZWFyIGluCisgICAgIHRoZSA8bGl0ZXJh bD5QTEFOPC9saXRlcmFsPiBjbGF1c2Ugb25seSBvbmNlLgorICAgIDwvcGFyYT4KKyAgICA8L2xp c3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRl cm0+CisgICAgIDxsaXRlcmFsPlBMQU48L2xpdGVyYWw+ICggPHJlcGxhY2VhYmxlPmpzb25fdGFi bGVfcGxhbjwvcmVwbGFjZWFibGU+ICkKKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorCisg ICAgPHBhcmE+CisgICAgIERlZmluZXMgaG93IHRvIGpvaW4gdGhlIGRhdGEgcmV0dXJuZWQgYnkg PGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+CisgICAgIGNsYXVzZXMgdG8gdGhlIGNvbnN0 cnVjdGVkIHZpZXcuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBUbyBqb2luIGNvbHVt bnMgd2l0aCBwYXJlbnQvY2hpbGQgcmVsYXRpb25zaGlwLCB5b3UgY2FuIHVzZToKKyAgICA8L3Bh cmE+CisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAg ICA8bGl0ZXJhbD5JTk5FUjwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgor CisgICAgPHBhcmE+CisgICAgIFVzZSA8bGl0ZXJhbD5JTk5FUiBKT0lOPC9saXRlcmFsPiwgc28g dGhhdCB0aGUgcGFyZW50IHJvdworICAgICBpcyBvbWl0dGVkIGZyb20gdGhlIG91dHB1dCBpZiBp dCBkb2VzIG5vdCBoYXZlIGFueSBjaGlsZCByb3dzCisgICAgIGFmdGVyIGpvaW5pbmcgdGhlIGRh dGEgcmV0dXJuZWQgYnkgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+LgorICAgIDwvcGFy YT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50 cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPk9VVEVSPC9saXRlcmFsPgorICAgIDwvdGVy bT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgVXNlIDxsaXRlcmFsPkxFRlQg T1VURVIgSk9JTjwvbGl0ZXJhbD4sIHNvIHRoYXQgdGhlIHBhcmVudCByb3cKKyAgICAgaXMgYWx3 YXlzIGluY2x1ZGVkIGludG8gdGhlIG91dHB1dCBldmVuIGlmIGl0IGRvZXMgbm90IGhhdmUgYW55 IGNoaWxkIHJvd3MKKyAgICAgYWZ0ZXIgam9pbmluZyB0aGUgZGF0YSByZXR1cm5lZCBieSA8bGl0 ZXJhbD5ORVNURUQgUEFUSDwvbGl0ZXJhbD4sIHdpdGggTlVMTCB2YWx1ZXMKKyAgICAgaW5zZXJ0 ZWQgaW50byB0aGUgY2hpbGQgY29sdW1ucyBpZiB0aGUgY29ycmVzcG9uZGluZworICAgICB2YWx1 ZXMgYXJlIG1pc3NpbmcuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBUaGlzIGlzIHRo ZSBkZWZhdWx0IG9wdGlvbiBmb3Igam9pbmluZyBjb2x1bW5zIHdpdGggcGFyZW50L2NoaWxkIHJl bGF0aW9uc2hpcC4KKyAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVu dHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKworICAgICA8cGFyYT4KKyAgICAgVG8gam9pbiBzaWJs aW5nIGNvbHVtbnMsIHlvdSBjYW4gdXNlOgorICAgIDwvcGFyYT4KKworICA8dmFyaWFibGVsaXN0 PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVyYWw+VU5JT048L2xp dGVyYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKworICAgIDxwYXJhPgorICAgICBH ZW5lcmF0ZSBvbmUgcm93IGZvciBlYWNoIHZhbHVlIHByb2R1Y2VkIGJ5IGVhY2ggb2YgdGhlIHNp YmxpbmcKKyAgICAgY29sdW1ucy4gVGhlIGNvbHVtbnMgZnJvbSB0aGUgb3RoZXIgc2libGluZ3Mg YXJlIHNldCB0byBudWxsLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgVGhpcyBpcyB0 aGUgZGVmYXVsdCBvcHRpb24gZm9yIGpvaW5pbmcgc2libGluZyBjb2x1bW5zLgorICAgIDwvcGFy YT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50 cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPkNST1NTPC9saXRlcmFsPgorICAgIDwvdGVy bT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgR2VuZXJhdGUgb25lIHJvdyBm b3IgZWFjaCBjb21iaW5hdGlvbiBvZiB2YWx1ZXMgZnJvbSB0aGUgc2libGluZyBjb2x1bW5zLgor ICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgPC92 YXJpYWJsZWxpc3Q+CisKKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAg IDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPlBMQU4gREVGQVVMVDwv bGl0ZXJhbD4gKCA8bGl0ZXJhbD48cmVwbGFjZWFibGU+T1VURVIgfCBJTk5FUjwvcmVwbGFjZWFi bGU+IDxvcHRpb25hbD4sIDxyZXBsYWNlYWJsZT5VTklPTiB8IENST1NTPC9yZXBsYWNlYWJsZT4g PC9vcHRpb25hbD48L2xpdGVyYWw+ICkKKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAg ICA8cGFyYT4KKyAgICAgIFRoZSB0ZXJtcyBjYW4gYWxzbyBiZSBzcGVjaWZpZWQgaW4gcmV2ZXJz ZSBvcmRlci4gVGhlCisgICAgICA8bGl0ZXJhbD5JTk5FUjwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+ T1VURVI8L2xpdGVyYWw+IG9wdGlvbiBkZWZpbmVzIHRoZQorICAgICAgam9pbmluZyBwbGFuIGZv ciBwYXJlbnQvY2hpbGQgY29sdW1ucywgd2hpbGUgPGxpdGVyYWw+VU5JT048L2xpdGVyYWw+IG9y CisgICAgICA8bGl0ZXJhbD5DUk9TUzwvbGl0ZXJhbD4gYWZmZWN0cyBqb2lucyBvZiBzaWJsaW5n IGNvbHVtbnMuIFRoaXMgZm9ybQorICAgICAgb2YgPGxpdGVyYWw+UExBTjwvbGl0ZXJhbD4gb3Zl cnJpZGVzIHRoZSBkZWZhdWx0IHBsYW4gZm9yCisgICAgICBhbGwgY29sdW1ucyBhdCBvbmNlLiBF dmVuIHRob3VnaCB0aGUgcGF0aCBuYW1lcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZQorICAgICAg PGxpdGVyYWw+UExBTiBERUZBVUxUPC9saXRlcmFsPiBmb3JtLCB0byBjb25mb3JtIHRvIHRoZSBT UUwvSlNPTiBzdGFuZGFyZAorICAgICAgdGhleSBtdXN0IGJlIHByb3ZpZGVkIGZvciBhbGwgdGhl IHBhdGhzIGlmIHRoZSA8bGl0ZXJhbD5QTEFOPC9saXRlcmFsPgorICAgICAgY2xhdXNlIGlzIHVz ZWQuCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICA8bGl0ZXJhbD5QTEFOIERFRkFV TFQ8L2xpdGVyYWw+IGlzIHNpbXBsZXIgdGhhbiBzcGVjaWZ5aW5nIGEgY29tcGxldGUKKyAgICAg IDxsaXRlcmFsPlBMQU48L2xpdGVyYWw+LCBhbmQgaXMgb2Z0ZW4gYWxsIHRoYXQgaXMgcmVxdWly ZWQgdG8gZ2V0IHRoZSBkZXNpcmVkCisgICAgICBvdXRwdXQuCisgICAgIDwvcGFyYT4KKyAgICA8 L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisgIDwvdmFyaWFibGVsaXN0PgorCisgIDxw YXJhPkV4YW1wbGVzPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICBJbiB0aGVzZSBleGFtcGxl cyB0aGUgZm9sbG93aW5nIHNtYWxsIHRhYmxlIHN0b3Jpbmcgc29tZSBKU09OIGRhdGEgd2lsbCBi ZSB1c2VkOgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFRBQkxFIG15X2ZpbG1zICgganMganNv bmIgKTsKKworSU5TRVJUIElOVE8gbXlfZmlsbXMgVkFMVUVTICgKKyd7ICJmYXZvcml0ZXMiIDog WworICAgeyAia2luZCIgOiAiY29tZWR5IiwgImZpbG1zIiA6IFsKKyAgICAgeyAidGl0bGUiIDog IkJhbmFuYXMiLAorICAgICAgICJkaXJlY3RvciIgOiAiV29vZHkgQWxsZW4ifSwKKyAgICAgeyAi dGl0bGUiIDogIlRoZSBEaW5uZXIgR2FtZSIsCisgICAgICAgImRpcmVjdG9yIiA6ICJGcmFuY2lz IFZlYmVyIiB9IF0gfSwKKyAgIHsgImtpbmQiIDogImhvcnJvciIsICJmaWxtcyIgOiBbCisgICAg IHsgInRpdGxlIiA6ICJQc3ljaG8iLAorICAgICAgICJkaXJlY3RvciIgOiAiQWxmcmVkIEhpdGNo Y29jayIgfSBdIH0sCisgICB7ICJraW5kIiA6ICJ0aHJpbGxlciIsICJmaWxtcyIgOiBbCisgICAg IHsgInRpdGxlIiA6ICJWZXJ0aWdvIiwKKyAgICAgICAiZGlyZWN0b3IiIDogIkFsZnJlZCBIaXRj aGNvY2siIH0gXSB9LAorICAgeyAia2luZCIgOiAiZHJhbWEiLCAiZmlsbXMiIDogWworICAgICB7 ICJ0aXRsZSIgOiAiWW9qaW1ibyIsCisgICAgICAgImRpcmVjdG9yIiA6ICJBa2lyYSBLdXJvc2F3 YSIgfSBdIH0KKyAgXSB9Jyk7Cis8L3Byb2dyYW1saXN0aW5nPgorICAgICA8L3BhcmE+CisgICAg IDxwYXJhPgorICAgICAgUXVlcnkgdGhlIDxzdHJ1Y3RuYW1lPm15X2ZpbG1zPC9zdHJ1Y3RuYW1l PiB0YWJsZSBob2xkaW5nCisgICAgICBzb21lIEpTT04gZGF0YSBhYm91dCB0aGUgZmlsbXMgYW5k IGNyZWF0ZSBhIHZpZXcgdGhhdAorICAgICAgZGlzdHJpYnV0ZXMgdGhlIGZpbG0gZ2VucmUsIHRp dGxlLCBhbmQgZGlyZWN0b3IgYmV0d2VlbiBzZXBhcmF0ZSBjb2x1bW5zOgorPHNjcmVlbj4KK1NF TEVDVCBqdC4qIEZST00KKyBteV9maWxtcywKKyBKU09OX1RBQkxFICgganMsICckLmZhdm9yaXRl c1sqXScgQ09MVU1OUyAoCisgICBpZCBGT1IgT1JESU5BTElUWSwKKyAgIGtpbmQgdGV4dCBQQVRI ICckLmtpbmQnLAorICAgTkVTVEVEIFBBVEggJyQuZmlsbXNbKl0nIENPTFVNTlMgKAorICAgICB0 aXRsZSB0ZXh0IFBBVEggJyQudGl0bGUnLAorICAgICBkaXJlY3RvciB0ZXh0IFBBVEggJyQuZGly ZWN0b3InKSkpIEFTIGp0OworLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tCisgaWQgfCAgIGtpbmQgICB8ICAgICAgIHRpdGxlICAgICAgfCAgICBk aXJlY3RvcgorLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tCisgMSAgfCBjb21lZHkgICB8IEJhbmFuYXMgICAgICAgICAgfCBXb29keSBBbGxlbgor IDEgIHwgY29tZWR5ICAgfCBUaGUgRGlubmVyIEdhbWUgIHwgRnJhbmNpcyBWZWJlcgorIDIgIHwg aG9ycm9yICAgfCBQc3ljaG8gICAgICAgICAgIHwgQWxmcmVkIEhpdGNoY29jaworIDMgIHwgdGhy aWxsZXIgfCBWZXJ0aWdvICAgICAgICAgIHwgQWxmcmVkIEhpdGNoY29jaworIDQgIHwgZHJhbWEg ICAgfCBZb2ppbWJvICAgICAgICAgIHwgQWtpcmEgS3Vyb3Nhd2EKKyAoNSByb3dzKQorPC9zY3Jl ZW4+CisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIEZpbmQgYSBkaXJlY3RvciB0 aGF0IGhhcyBkb25lIGZpbG1zIGluIHR3byBkaWZmZXJlbnQgZ2VucmVzOgorPHNjcmVlbj4KK1NF TEVDVAorICBkaXJlY3RvcjEgQVMgZGlyZWN0b3IsIHRpdGxlMSwga2luZDEsIHRpdGxlMiwga2lu ZDIKK0ZST00KKyAgbXlfZmlsbXMsCisgIEpTT05fVEFCTEUgKCBqcywgJyQuZmF2b3JpdGVzJyBB UyBmYXZzIENPTFVNTlMgKAorICAgIE5FU1RFRCBQQVRIICckWypdJyBBUyBmaWxtczEgQ09MVU1O UyAoCisgICAgICBraW5kMSB0ZXh0IFBBVEggJyQua2luZCcsCisgICAgICBORVNURUQgUEFUSCAn JC5maWxtc1sqXScgQVMgZmlsbTEgQ09MVU1OUyAoCisgICAgICAgIHRpdGxlMSB0ZXh0IFBBVEgg JyQudGl0bGUnLAorICAgICAgICBkaXJlY3RvcjEgdGV4dCBQQVRIICckLmRpcmVjdG9yJykKKyAg ICApLAorICAgIE5FU1RFRCBQQVRIICckWypdJyBBUyBmaWxtczIgQ09MVU1OUyAoCisgICAgICBr aW5kMiB0ZXh0IFBBVEggJyQua2luZCcsCisgICAgICBORVNURUQgUEFUSCAnJC5maWxtc1sqXScg QVMgZmlsbTIgQ09MVU1OUyAoCisgICAgICAgIHRpdGxlMiB0ZXh0IFBBVEggJyQudGl0bGUnLAor ICAgICAgICBkaXJlY3RvcjIgdGV4dCBQQVRIICckLmRpcmVjdG9yJworICAgICAgKQorICAgICkK KyAgICkKKyAgIFBMQU4gKGZhdnMgT1VURVIgKChmaWxtczEgSU5ORVIgZmlsbTEpIENST1NTIChm aWxtczIgSU5ORVIgZmlsbTIpKSkKKyAgKSBBUyBqdAorIFdIRVJFIGtpbmQxID4ga2luZDIgQU5E IGRpcmVjdG9yMSA9IGRpcmVjdG9yMjsKKworICAgICBkaXJlY3RvciAgICAgfCB0aXRsZTEgIHwg IGtpbmQxICAgfCB0aXRsZTIgfCBraW5kMgorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tCisgQWxmcmVkIEhpdGNoY29jayB8IFZlcnRpZ28g fCB0aHJpbGxlciB8IFBzeWNobyB8IGhvcnJvcgorKDEgcm93KQorPC9zY3JlZW4+CisgICAgIDwv cGFyYT4KKyAgPC9zZWN0Mj4KKwogIDwvc2VjdDE+CiAKICA8c2VjdDEgaWQ9ImZ1bmN0aW9ucy1z ZXF1ZW5jZSI+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50 eHQgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKaW5kZXggNzU5OGJkOGYy Mi4uOTUwMGE4MGY0ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVy ZXMudHh0CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dApAQCAtNTUx LDEwICs1NTEsMTAgQEAgVDgxNAlDb2xvbiBpbiBKU09OX09CSkVDVCBvciBKU09OX09CSkVDVEFH RwkJCVlFUwogVDgyMQlCYXNpYyBTUUwvSlNPTiBxdWVyeSBvcGVyYXRvcnMJCQlZRVMJCiBUODIy CVNRTC9KU09OOiBJUyBKU09OIFdJVEggVU5JUVVFIEtFWVMgcHJlZGljYXRlCQkJWUVTCQogVDgy MwlTUUwvSlNPTjogUEFTU0lORyBjbGF1c2UJCQlZRVMJCi1UODI0CUpTT05fVEFCTEU6IHNwZWNp ZmljIFBMQU4gY2xhdXNlCQkJTk8JCitUODI0CUpTT05fVEFCTEU6IHNwZWNpZmljIFBMQU4gY2xh dXNlCQkJWUVTCQogVDgyNQlTUUwvSlNPTjogT04gRU1QVFkgYW5kIE9OIEVSUk9SIGNsYXVzZXMJ CQlZRVMJCiBUODI2CUdlbmVyYWwgdmFsdWUgZXhwcmVzc2lvbiBpbiBPTiBFUlJPUiBvciBPTiBF TVBUWSBjbGF1c2VzCQkJWUVTCQotVDgyNwlKU09OX1RBQkxFOiBzaWJsaW5nIE5FU1RFRCBDT0xV TU5TIGNsYXVzZXMJCQlOTwkKK1Q4MjcJSlNPTl9UQUJMRTogc2libGluZyBORVNURUQgQ09MVU1O UyBjbGF1c2VzCQkJWUVTCQogVDgyOAlKU09OX1FVRVJZCQkJWUVTCQogVDgyOQlKU09OX1FVRVJZ OiBhcnJheSB3cmFwcGVyIG9wdGlvbnMJCQlZRVMJCiBUODMwCUVuZm9yY2luZyB1bmlxdWUga2V5 cyBpbiBTUUwvSlNPTiBjb25zdHJ1Y3RvciBmdW5jdGlvbnMJCQlZRVMJCkBAIC01NjUsNyArNTY1 LDcgQEAgVDgzNAlTUUwvSlNPTiBwYXRoIGxhbmd1YWdlOiB3aWxkY2FyZCBtZW1iZXIgYWNjZXNz b3IJCQlZRVMKIFQ4MzUJU1FML0pTT04gcGF0aCBsYW5ndWFnZTogZmlsdGVyIGV4cHJlc3Npb25z CQkJWUVTCQogVDgzNglTUUwvSlNPTiBwYXRoIGxhbmd1YWdlOiBzdGFydHMgd2l0aCBwcmVkaWNh dGUJCQlZRVMJCiBUODM3CVNRTC9KU09OIHBhdGggbGFuZ3VhZ2U6IHJlZ2V4X2xpa2UgcHJlZGlj YXRlCQkJWUVTCQotVDgzOAlKU09OX1RBQkxFOiBQTEFOIERFRkFVTFQgY2xhdXNlCQkJTk8JCitU ODM4CUpTT05fVEFCTEU6IFBMQU4gREVGQVVMVCBjbGF1c2UJCQlZRVMJCiBUODM5CUZvcm1hdHRl ZCBjYXN0IG9mIGRhdGV0aW1lcyB0by9mcm9tIGNoYXJhY3RlciBzdHJpbmdzCQkJTk8JCiBUODQw CUhleCBpbnRlZ2VyIGxpdGVyYWxzIGluIFNRTC9KU09OIHBhdGggbGFuZ3VhZ2UJCQlZRVMJCiBU ODUxCVNRTC9KU09OOiBvcHRpb25hbCBrZXl3b3JkcyBmb3IgZGVmYXVsdCBzeW50YXgJCQlZRVMJ CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYwppbmRleCA5NTFmYTRmY2EwLi45MmI2 Y2I0MDM1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKQEAgLTQzNDEsNiAr NDM0MSwxMiBAQCBFeGVjRXZhbEpzb25FeHByUGF0aChFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZh bFN0ZXAgKm9wLAogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgSlNPTl9UQUJMRV9PUDoKKwkJ CXBvc3RfZXZhbC0+anVtcF9ldmFsX2NvZXJjaW9uID0gLTE7CisJCQkqb3AtPnJlc3ZhbHVlID0g aXRlbTsKKwkJCSpvcC0+cmVzbnVsbCA9IGZhbHNlOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoK IAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgU1FML0pTT04gZXhwcmVzc2lvbiBvcCAlZCIs IGpleHByLT5vcCk7CiAJCQlyZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRh YmxlRnVuY3NjYW4uYwppbmRleCA3MmNhMzRhMjI4Li45OWZiOTI4OTRjIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNzY2FuLmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRl ICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKICNpbmNsdWRlICJ1 dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2pzb25wYXRoLmgiCiAjaW5jbHVkZSAi dXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRl ICJ1dGlscy94bWwuaCIKQEAgLTE2MSw4ICsxNjIsOSBAQCBFeGVjSW5pdFRhYmxlRnVuY1NjYW4o VGFibGVGdW5jU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJc2NhbnN0 YXRlLT5zcy5wcy5xdWFsID0KIAkJRXhlY0luaXRRdWFsKG5vZGUtPnNjYW4ucGxhbi5xdWFsLCAm c2NhbnN0YXRlLT5zcy5wcyk7CiAKLQkvKiBPbmx5IFhNTFRBQkxFIGlzIHN1cHBvcnRlZCBjdXJy ZW50bHkgKi8KLQlzY2Fuc3RhdGUtPnJvdXRpbmUgPSAmWG1sVGFibGVSb3V0aW5lOworCS8qIE9u bHkgWE1MVEFCTEUgYW5kIEpTT05fVEFCTEUgYXJlIHN1cHBvcnRlZCBjdXJyZW50bHkgKi8KKwlz Y2Fuc3RhdGUtPnJvdXRpbmUgPQorCQl0Zi0+ZnVuY3R5cGUgPT0gVEZUX1hNTFRBQkxFID8gJlht bFRhYmxlUm91dGluZSA6ICZKc29uYlRhYmxlUm91dGluZTsKIAogCXNjYW5zdGF0ZS0+cGVyVGFi bGVDeHQgPQogCQlBbGxvY1NldENvbnRleHRDcmVhdGUoQ3VycmVudE1lbW9yeUNvbnRleHQsCkBA IC0xODIsNiArMTg0LDEwIEBAIEV4ZWNJbml0VGFibGVGdW5jU2NhbihUYWJsZUZ1bmNTY2FuICpu b2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJRXhlY0luaXRFeHByTGlzdCh0Zi0+ Y29sZXhwcnMsIChQbGFuU3RhdGUgKikgc2NhbnN0YXRlKTsKIAlzY2Fuc3RhdGUtPmNvbGRlZmV4 cHJzID0KIAkJRXhlY0luaXRFeHByTGlzdCh0Zi0+Y29sZGVmZXhwcnMsIChQbGFuU3RhdGUgKikg c2NhbnN0YXRlKTsKKwlzY2Fuc3RhdGUtPmNvbHZhbGV4cHJzID0KKwkJRXhlY0luaXRFeHByTGlz dCh0Zi0+Y29sdmFsZXhwcnMsIChQbGFuU3RhdGUgKikgc2NhbnN0YXRlKTsKKwlzY2Fuc3RhdGUt PnBhc3Npbmd2YWxleHBycyA9CisJCUV4ZWNJbml0RXhwckxpc3QodGYtPnBhc3Npbmd2YWxleHBy cywgKFBsYW5TdGF0ZSAqKSBzY2Fuc3RhdGUpOwogCiAJc2NhbnN0YXRlLT5ub3RudWxscyA9IHRm LT5ub3RudWxsczsKIApAQCAtMzY5LDE0ICszNzUsMTcgQEAgdGZ1bmNJbml0aWFsaXplKFRhYmxl RnVuY1NjYW5TdGF0ZSAqdHN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIERhdHVtIGRvYykK IAkJcm91dGluZS0+U2V0TmFtZXNwYWNlKHRzdGF0ZSwgbnNfbmFtZSwgbnNfdXJpKTsKIAl9CiAK LQkvKiBJbnN0YWxsIHRoZSByb3cgZmlsdGVyIGV4cHJlc3Npb24gaW50byB0aGUgdGFibGUgYnVp bGRlciBjb250ZXh0ICovCi0JdmFsdWUgPSBFeGVjRXZhbEV4cHIodHN0YXRlLT5yb3dleHByLCBl Y29udGV4dCwgJmlzbnVsbCk7Ci0JaWYgKGlzbnVsbCkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQko ZXJyY29kZShFUlJDT0RFX05VTExfVkFMVUVfTk9UX0FMTE9XRUQpLAotCQkJCSBlcnJtc2coInJv dyBmaWx0ZXIgZXhwcmVzc2lvbiBtdXN0IG5vdCBiZSBudWxsIikpKTsKKwlpZiAocm91dGluZS0+ U2V0Um93RmlsdGVyKQorCXsKKwkJLyogSW5zdGFsbCB0aGUgcm93IGZpbHRlciBleHByZXNzaW9u IGludG8gdGhlIHRhYmxlIGJ1aWxkZXIgY29udGV4dCAqLworCQl2YWx1ZSA9IEV4ZWNFdmFsRXhw cih0c3RhdGUtPnJvd2V4cHIsIGVjb250ZXh0LCAmaXNudWxsKTsKKwkJaWYgKGlzbnVsbCkKKwkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfTlVMTF9WQUxVRV9OT1RfQUxM T1dFRCksCisJCQkJCSBlcnJtc2coInJvdyBmaWx0ZXIgZXhwcmVzc2lvbiBtdXN0IG5vdCBiZSBu dWxsIikpKTsKIAotCXJvdXRpbmUtPlNldFJvd0ZpbHRlcih0c3RhdGUsIFRleHREYXR1bUdldENT dHJpbmcodmFsdWUpKTsKKwkJcm91dGluZS0+U2V0Um93RmlsdGVyKHRzdGF0ZSwgVGV4dERhdHVt R2V0Q1N0cmluZyh2YWx1ZSkpOworCX0KIAogCS8qCiAJICogSW5zdGFsbCB0aGUgY29sdW1uIGZp bHRlciBleHByZXNzaW9ucyBpbnRvIHRoZSB0YWJsZSBidWlsZGVyIGNvbnRleHQuCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL21h a2VmdW5jcy5jCmluZGV4IDA5YTA1YTAzNzMuLmI4ZDM0NzcwZTggMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5j cy5jCkBAIC01MzgsNiArNTM4LDIyIEBAIG1ha2VGdW5jRXhwcihPaWQgZnVuY2lkLCBPaWQgcmV0 dHlwZSwgTGlzdCAqYXJncywKIAlyZXR1cm4gZnVuY2V4cHI7CiB9CiAKKy8qCisgKiBtYWtlU3Ry aW5nQ29uc3QgLQorICogCWJ1aWxkIGEgQV9Db25zdCBub2RlIG9mIHR5cGUgVF9TdHJpbmcgZm9y IGdpdmVuIHN0cmluZworICovCitOb2RlICoKK21ha2VTdHJpbmdDb25zdChjaGFyICpzdHIsIGlu dCBsb2NhdGlvbikKK3sKKwlBX0NvbnN0CSAgICpuID0gbWFrZU5vZGUoQV9Db25zdCk7CisKKwlu LT52YWwuc3ZhbC50eXBlID0gVF9TdHJpbmc7CisJbi0+dmFsLnN2YWwuc3ZhbCA9IHN0cjsKKwlu LT5sb2NhdGlvbiA9IGxvY2F0aW9uOworCisgICByZXR1cm4gKE5vZGUgKikgbjsKK30KKwogLyoK ICAqIG1ha2VEZWZFbGVtIC0KICAqCWJ1aWxkIGEgRGVmRWxlbSBub2RlCkBAIC04NzUsNiArODkx LDk4IEBAIG1ha2VKc29uQmVoYXZpb3IoSnNvbkJlaGF2aW9yVHlwZSB0eXBlLCBOb2RlICpleHBy LCBKc29uQ29lcmNpb24gKmNvZXJjaW9uLAogCXJldHVybiBiZWhhdmlvcjsKIH0KIAorLyoKKyAq IG1ha2VKc29uVGFibGVQYXRoIC0KKyAqCQlNYWtlIEpzb25UYWJsZVBhdGggbm9kZSBmcm9tIGdp dmVuIHBhdGggc3RyaW5nIGFuZCBuYW1lIChpZiBhbnkpCisgKi8KK0pzb25UYWJsZVBhdGggKgor bWFrZUpzb25UYWJsZVBhdGgoQ29uc3QgKnBhdGh2YWx1ZSwgY2hhciAqcGF0aG5hbWUpCit7CisJ SnNvblRhYmxlUGF0aCAqcGF0aCA9IG1ha2VOb2RlKEpzb25UYWJsZVBhdGgpOworCisJQXNzZXJ0 KElzQShwYXRodmFsdWUsIENvbnN0KSk7CisJcGF0aC0+dmFsdWUgPSBwYXRodmFsdWU7CisJaWYg KHBhdGhuYW1lKQorCQlwYXRoLT5uYW1lID0gcGF0aG5hbWU7CisKKwlyZXR1cm4gcGF0aDsKK30K KworLyoKKyAqIG1ha2VKc29uVGFibGVQYXRoU3BlYyAtCisgKgkJTWFrZSBKc29uVGFibGVQYXRo U3BlYyBub2RlIGZyb20gZ2l2ZW4gcGF0aCBzdHJpbmcgYW5kIG5hbWUgKGlmIGFueSkKKyAqLwor Tm9kZSAqCittYWtlSnNvblRhYmxlUGF0aFNwZWMoY2hhciAqc3RyaW5nLCBjaGFyICpuYW1lLCBp bnQgc3RyaW5nX2xvY2F0aW9uLAorCQkJCQkgIGludCBuYW1lX2xvY2F0aW9uKQoreworCUpzb25U YWJsZVBhdGhTcGVjICpwYXRoc3BlYyA9IG1ha2VOb2RlKEpzb25UYWJsZVBhdGhTcGVjKTsKKwor CUFzc2VydChzdHJpbmcgIT0gTlVMTCk7CisJcGF0aHNwZWMtPnN0cmluZyA9IG1ha2VTdHJpbmdD b25zdChzdHJpbmcsIHN0cmluZ19sb2NhdGlvbik7CisJaWYgKG5hbWUgIT0gTlVMTCkKKwkJcGF0 aHNwZWMtPm5hbWUgPSBwc3RyZHVwKG5hbWUpOworCisJcGF0aHNwZWMtPm5hbWVfbG9jYXRpb24g PSBuYW1lX2xvY2F0aW9uOworCXBhdGhzcGVjLT5sb2NhdGlvbiA9IHN0cmluZ19sb2NhdGlvbjsK KworCXJldHVybiAoTm9kZSAqKSBwYXRoc3BlYzsKK30KKworLyoKKyAqIG1ha2VKc29uVGFibGVE ZWZhdWx0UGxhbiAtCisgKgkgICBjcmVhdGVzIGEgSnNvblRhYmxlUGxhblNwZWMgbm9kZSB0byBy ZXByZXNlbnQgYSAiZGVmYXVsdCIgSlNPTl9UQUJMRSBwbGFuCisgKgkgICB3aXRoIGdpdmVuIGpv aW4gc3RyYXRlZ3kKKyAqLworTm9kZSAqCittYWtlSnNvblRhYmxlRGVmYXVsdFBsYW4oSnNvblRh YmxlUGxhbkpvaW5UeXBlIGpvaW5fdHlwZSwgaW50IGxvY2F0aW9uKQoreworCUpzb25UYWJsZVBs YW5TcGVjICpuID0gbWFrZU5vZGUoSnNvblRhYmxlUGxhblNwZWMpOworCisJbi0+cGxhbl90eXBl ID0gSlNUUF9ERUZBVUxUOworCW4tPmpvaW5fdHlwZSA9IGpvaW5fdHlwZTsKKwluLT5sb2NhdGlv biA9IGxvY2F0aW9uOworCisJcmV0dXJuIChOb2RlICopIG47Cit9CisKKy8qCisgKiBtYWtlSnNv blRhYmxlU2ltcGxlUGxhbiAtCisgKgkgICBjcmVhdGVzIGEgSnNvblRhYmxlUGxhblNwZWMgbm9k ZSB0byByZXByZXNlbnQgYSAic2ltcGxlIiBKU09OX1RBQkxFIHBsYW4KKyAqCSAgIGZvciBnaXZl biBQQVRICisgKi8KK05vZGUgKgorbWFrZUpzb25UYWJsZVNpbXBsZVBsYW4oY2hhciAqcGF0aG5h bWUsIGludCBsb2NhdGlvbikKK3sKKwlKc29uVGFibGVQbGFuU3BlYyAqbiA9IG1ha2VOb2RlKEpz b25UYWJsZVBsYW5TcGVjKTsKKworCW4tPnBsYW5fdHlwZSA9IEpTVFBfU0lNUExFOworCW4tPnBh dGhuYW1lID0gcGF0aG5hbWU7CisJbi0+bG9jYXRpb24gPSBsb2NhdGlvbjsKKworCXJldHVybiAo Tm9kZSAqKSBuOworfQorCisvKgorICogbWFrZUpzb25UYWJsZUpvaW5lZFBsYW4gLQorICoJICAg Y3JlYXRlcyBhIEpzb25UYWJsZVBsYW5TcGVjIG5vZGUgdG8gcmVwcmVzZW50IGpvaW4gYmV0d2Vl biB0aGUgZ2l2ZW4KKyAqCSAgIHBhaXIgb2YgcGxhbnMKKyAqLworTm9kZSAqCittYWtlSnNvblRh YmxlSm9pbmVkUGxhbihKc29uVGFibGVQbGFuSm9pblR5cGUgdHlwZSwgTm9kZSAqcGxhbjEsIE5v ZGUgKnBsYW4yLAorCQkJCQkJaW50IGxvY2F0aW9uKQoreworCUpzb25UYWJsZVBsYW5TcGVjICpu ID0gbWFrZU5vZGUoSnNvblRhYmxlUGxhblNwZWMpOworCisJbi0+cGxhbl90eXBlID0gSlNUUF9K T0lORUQ7CisJbi0+am9pbl90eXBlID0gdHlwZTsKKwluLT5wbGFuMSA9IGNhc3ROb2RlKEpzb25U YWJsZVBsYW5TcGVjLCBwbGFuMSk7CisJbi0+cGxhbjIgPSBjYXN0Tm9kZShKc29uVGFibGVQbGFu U3BlYywgcGxhbjIpOworCW4tPmxvY2F0aW9uID0gbG9jYXRpb247CisKKwlyZXR1cm4gKE5vZGUg KikgbjsKK30KKwogLyoKICAqIG1ha2VKc29uS2V5VmFsdWUgLQogICoJICBjcmVhdGVzIGEgSnNv bktleVZhbHVlIG5vZGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5j IGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggMmUzNTg0YTdlMS4uZmJkYzkz MDI4ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKKysrIGIvc3Jj L2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKQEAgLTI2OTIsNiArMjY5MiwxMCBAQCBleHByZXNz aW9uX3RyZWVfd2Fsa2VyX2ltcGwoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQkJ aWYgKFdBTEsodGYtPmNvbGRlZmV4cHJzKSkKIAkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdB TEsodGYtPmNvbHZhbGV4cHJzKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsodGYt PnBhc3Npbmd2YWxleHBycykpCisJCQkJCXJldHVybiB0cnVlOwogCQkJfQogCQkJYnJlYWs7CiAJ CWRlZmF1bHQ6CkBAIC0zNzU1LDYgKzM3NTksOCBAQCBleHByZXNzaW9uX3RyZWVfbXV0YXRvcl9p bXBsKE5vZGUgKm5vZGUsCiAJCQkJTVVUQVRFKG5ld25vZGUtPnJvd2V4cHIsIHRmLT5yb3dleHBy LCBOb2RlICopOwogCQkJCU1VVEFURShuZXdub2RlLT5jb2xleHBycywgdGYtPmNvbGV4cHJzLCBM aXN0ICopOwogCQkJCU1VVEFURShuZXdub2RlLT5jb2xkZWZleHBycywgdGYtPmNvbGRlZmV4cHJz LCBMaXN0ICopOworCQkJCU1VVEFURShuZXdub2RlLT5jb2x2YWxleHBycywgdGYtPmNvbHZhbGV4 cHJzLCBMaXN0ICopOworCQkJCU1VVEFURShuZXdub2RlLT5wYXNzaW5ndmFsZXhwcnMsIHRmLT5w YXNzaW5ndmFsZXhwcnMsIExpc3QgKik7CiAJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CiAJ CQl9CiAJCQlicmVhazsKQEAgLTQxODAsNiArNDE4NiwzOCBAQCByYXdfZXhwcmVzc2lvbl90cmVl X3dhbGtlcl9pbXBsKE5vZGUgKm5vZGUsCiAJCQkJCXJldHVybiB0cnVlOwogCQkJfQogCQkJYnJl YWs7CisJCWNhc2UgVF9Kc29uVGFibGU6CisJCQl7CisJCQkJSnNvblRhYmxlICAqanQgPSAoSnNv blRhYmxlICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhqdC0+Y29udGV4dF9pdGVtKSkKKwkJCQkJ cmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoanQtPnBhdGhzcGVjKSkKKwkJCQkJcmV0dXJuIHRy dWU7CisJCQkJaWYgKFdBTEsoanQtPnBhc3NpbmcpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlp ZiAoV0FMSyhqdC0+Y29sdW1ucykpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKGp0 LT5vbl9lcnJvcikpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2Ug VF9Kc29uVGFibGVDb2x1bW46CisJCQl7CisJCQkJSnNvblRhYmxlQ29sdW1uICpqdGMgPSAoSnNv blRhYmxlQ29sdW1uICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhqdGMtPnR5cGVOYW1lKSkKKwkJ CQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoanRjLT5vbl9lbXB0eSkpCisJCQkJCXJldHVy biB0cnVlOworCQkJCWlmIChXQUxLKGp0Yy0+b25fZXJyb3IpKQorCQkJCQlyZXR1cm4gdHJ1ZTsK KwkJCQlpZiAoanRjLT5jb2x0eXBlID09IEpUQ19ORVNURUQgJiYgV0FMSyhqdGMtPmNvbHVtbnMp KQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFRfSnNvblRhYmxl UGF0aFNwZWM6CisJCQlyZXR1cm4gV0FMSygoKEpzb25UYWJsZVBhdGhTcGVjICopIG5vZGUpLT5z dHJpbmcpOwogCQljYXNlIFRfTnVsbFRlc3Q6CiAJCQlyZXR1cm4gV0FMSygoKE51bGxUZXN0ICop IG5vZGUpLT5hcmcpOwogCQljYXNlIFRfQm9vbGVhblRlc3Q6CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wYXJzZXIvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9wYXJzZXIvTWFrZWZpbGUKaW5kZXgg NDAxYzE2Njg2Yy4uMzE2MmEwMWYzMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL01h a2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9NYWtlZmlsZQpAQCAtMjMsNiArMjMsNyBA QCBPQkpTID0gXAogCXBhcnNlX2Vuci5vIFwKIAlwYXJzZV9leHByLm8gXAogCXBhcnNlX2Z1bmMu byBcCisJcGFyc2VfanNvbnRhYmxlLm8gXAogCXBhcnNlX21lcmdlLm8gXAogCXBhcnNlX25vZGUu byBcCiAJcGFyc2Vfb3Blci5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDI3MmFjYzg4NTYuLjJkMTdlOTcw OTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueQpAQCAtMTcwLDcgKzE3MCw2IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVJh d1N0bXRFbmQoUmF3U3RtdCAqcnMsIGludCBlbmRfbG9jYXRpb24pOwogc3RhdGljIE5vZGUgKm1h a2VDb2x1bW5SZWYoY2hhciAqY29sbmFtZSwgTGlzdCAqaW5kaXJlY3Rpb24sCiAJCQkJCQkgICBp bnQgbG9jYXRpb24sIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKTsKIHN0YXRpYyBOb2RlICptYWtl VHlwZUNhc3QoTm9kZSAqYXJnLCBUeXBlTmFtZSAqdHlwZW5hbWUsIGludCBsb2NhdGlvbik7Ci1z dGF0aWMgTm9kZSAqbWFrZVN0cmluZ0NvbnN0KGNoYXIgKnN0ciwgaW50IGxvY2F0aW9uKTsKIHN0 YXRpYyBOb2RlICptYWtlU3RyaW5nQ29uc3RDYXN0KGNoYXIgKnN0ciwgaW50IGxvY2F0aW9uLCBU eXBlTmFtZSAqdHlwZW5hbWUpOwogc3RhdGljIE5vZGUgKm1ha2VJbnRDb25zdChpbnQgdmFsLCBp bnQgbG9jYXRpb24pOwogc3RhdGljIE5vZGUgKm1ha2VGbG9hdENvbnN0KGNoYXIgKnN0ciwgaW50 IGxvY2F0aW9uKTsKQEAgLTY1NSwxNSArNjU0LDMxIEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJz aXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7 CiAJCQkJanNvbl9hcmd1bWVudAogCQkJCWpzb25fYmVoYXZpb3IKIAkJCQlqc29uX29uX2Vycm9y X2NsYXVzZV9vcHQKKwkJCQlqc29uX3RhYmxlCisJCQkJanNvbl90YWJsZV9jb2x1bW5fZGVmaW5p dGlvbgorCQkJCWpzb25fdGFibGVfY29sdW1uX3BhdGhfY2xhdXNlX29wdAorCQkJCWpzb25fdGFi bGVfcGxhbl9jbGF1c2Vfb3B0CisJCQkJanNvbl90YWJsZV9wbGFuCisJCQkJanNvbl90YWJsZV9w bGFuX3NpbXBsZQorCQkJCWpzb25fdGFibGVfcGxhbl9vdXRlcgorCQkJCWpzb25fdGFibGVfcGxh bl9pbm5lcgorCQkJCWpzb25fdGFibGVfcGxhbl91bmlvbgorCQkJCWpzb25fdGFibGVfcGxhbl9j cm9zcworCQkJCWpzb25fdGFibGVfcGxhbl9wcmltYXJ5CiAldHlwZSA8bGlzdD4JanNvbl9uYW1l X2FuZF92YWx1ZV9saXN0CiAJCQkJanNvbl92YWx1ZV9leHByX2xpc3QKIAkJCQlqc29uX2FycmF5 X2FnZ3JlZ2F0ZV9vcmRlcl9ieV9jbGF1c2Vfb3B0CiAJCQkJanNvbl9hcmd1bWVudHMKIAkJCQlq c29uX2JlaGF2aW9yX2NsYXVzZV9vcHQKIAkJCQlqc29uX3Bhc3NpbmdfY2xhdXNlX29wdAorCQkJ CWpzb25fdGFibGVfY29sdW1uX2RlZmluaXRpb25fbGlzdAorJXR5cGUgPHN0cj4JCWpzb25fdGFi bGVfcGF0aF9uYW1lX29wdAogJXR5cGUgPGl2YWw+CWpzb25fYmVoYXZpb3JfdHlwZQogCQkJCWpz b25fcHJlZGljYXRlX3R5cGVfY29uc3RyYWludAogCQkJCWpzb25fcXVvdGVzX2NsYXVzZV9vcHQK KwkJCQlqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl9jaG9pY2VzCisJCQkJanNvbl90YWJsZV9kZWZh dWx0X3BsYW5faW5uZXJfb3V0ZXIKKwkJCQlqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl91bmlvbl9j cm9zcwogCQkJCWpzb25fd3JhcHBlcl9iZWhhdmlvcgogJXR5cGUgPGJvb2xlYW4+CWpzb25fa2V5 X3VuaXF1ZW5lc3NfY29uc3RyYWludF9vcHQKIAkJCQlqc29uX29iamVjdF9jb25zdHJ1Y3Rvcl9u dWxsX2NsYXVzZV9vcHQKQEAgLTczMyw3ICs3NDgsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vy c2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkp OwogCUlOVEVSU0VDVCBJTlRFUlZBTCBJTlRPIElOVk9LRVIgSVMgSVNOVUxMIElTT0xBVElPTgog CiAJSk9JTiBKU09OIEpTT05fQVJSQVkgSlNPTl9BUlJBWUFHRyBKU09OX0VYSVNUUyBKU09OX09C SkVDVCBKU09OX09CSkVDVEFHRwotCUpTT05fUVVFUlkgSlNPTl9TQ0FMQVIgSlNPTl9TRVJJQUxJ WkUgSlNPTl9WQUxVRQorCUpTT05fUVVFUlkgSlNPTl9TQ0FMQVIgSlNPTl9TRVJJQUxJWkUgSlNP Tl9UQUJMRSBKU09OX1ZBTFVFCiAKIAlLRUVQIEtFWSBLRVlTCiAKQEAgLTc0NCw4ICs3NTksOCBA QCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlz dCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCU1BUFBJTkcgTUFUQ0ggTUFUQ0hFRCBNQVRFUklB TElaRUQgTUFYVkFMVUUgTUVSR0UgTUVUSE9ECiAJTUlOVVRFX1AgTUlOVkFMVUUgTU9ERSBNT05U SF9QIE1PVkUKIAotCU5BTUVfUCBOQU1FUyBOQVRJT05BTCBOQVRVUkFMIE5DSEFSIE5FVyBORVhU IE5GQyBORkQgTkZLQyBORktEIE5PIE5PTkUKLQlOT1JNQUxJWkUgTk9STUFMSVpFRAorCU5BTUVf UCBOQU1FUyBOQVRJT05BTCBOQVRVUkFMIE5DSEFSIE5FU1RFRCBORVcgTkVYVCBORkMgTkZEIE5G S0MgTkZLRCBOTworCU5PTkUgTk9STUFMSVpFIE5PUk1BTElaRUQKIAlOT1QgTk9USElORyBOT1RJ RlkgTk9UTlVMTCBOT1dBSVQgTlVMTF9QIE5VTExJRgogCU5VTExTX1AgTlVNRVJJQwogCkBAIC03 NTMsOCArNzY4LDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIg KnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlPUkRFUiBPUkRJTkFMSVRZ IE9USEVSUyBPVVRfUCBPVVRFUl9QCiAJT1ZFUiBPVkVSTEFQUyBPVkVSTEFZIE9WRVJSSURJTkcg T1dORUQgT1dORVIKIAotCVBBUkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQQVJUSVRJ T04gUEFTU0lORyBQQVNTV09SRAotCVBMQUNJTkcgUExBTlMgUE9MSUNZCisJUEFSQUxMRUwgUEFS QU1FVEVSIFBBUlNFUiBQQVJUSUFMIFBBUlRJVElPTiBQQVNTSU5HIFBBU1NXT1JEIFBBVEgKKwlQ TEFDSU5HIFBMQU4gUExBTlMgUE9MSUNZCiAJUE9TSVRJT04gUFJFQ0VESU5HIFBSRUNJU0lPTiBQ UkVTRVJWRSBQUkVQQVJFIFBSRVBBUkVEIFBSSU1BUlkKIAlQUklPUiBQUklWSUxFR0VTIFBST0NF RFVSQUwgUFJPQ0VEVVJFIFBST0NFRFVSRVMgUFJPR1JBTSBQVUJMSUNBVElPTgogCkBAIC04NzIs MTAgKzg4NywxMyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAq cmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogICogdGhlIHNhbWUgcHJlY2Vk ZW5jZSBhcyBJREVOVC4gIFRoaXMgYWxsb3dzIHJlc29sdmluZyBjb25mbGljdHMgaW4gdGhlCiAg KiBqc29uX3ByZWRpY2F0ZV90eXBlX2NvbnN0cmFpbnQgYW5kIGpzb25fa2V5X3VuaXF1ZW5lc3Nf Y29uc3RyYWludF9vcHQKICAqIHByb2R1Y3Rpb25zIChzZWUgY29tbWVudHMgdGhlcmUpLgorICoK KyAqIExpa2UgdGhlIFVOQk9VTkRFRCBQUkVDRURJTkcvRk9MTE9XSU5HIGNhc2UsIE5FU1RFRCBp cyBhc3NpZ25lZCBhIGxvd2VyCisgKiBwcmVjZWRlbmNlIHRoYW4gUEFUSCB0byBmaXggYW1iaWd1 aXR5IGluIHRoZSBqc29uX3RhYmxlIHByb2R1Y3Rpb24uCiAgKi8KLSVub25hc3NvYwlVTkJPVU5E RUQJCS8qIGlkZWFsbHkgd291bGQgaGF2ZSBzYW1lIHByZWNlZGVuY2UgYXMgSURFTlQgKi8KKyVu b25hc3NvYwlVTkJPVU5ERUQgTkVTVEVEIC8qIGlkZWFsbHkgd291bGQgaGF2ZSBzYW1lIHByZWNl ZGVuY2UgYXMgSURFTlQgKi8KICVub25hc3NvYwlJREVOVCBQQVJUSVRJT04gUkFOR0UgUk9XUyBH Uk9VUFMgUFJFQ0VESU5HIEZPTExPV0lORyBDVUJFIFJPTExVUAotCQkJU0VUIEtFWVMgT0JKRUNU X1AgU0NBTEFSIFZBTFVFX1AgV0lUSCBXSVRIT1VUCisJCQlTRVQgS0VZUyBPQkpFQ1RfUCBTQ0FM QVIgVkFMVUVfUCBXSVRIIFdJVEhPVVQgUEFUSAogJWxlZnQJCU9wIE9QRVJBVE9SCQkvKiBtdWx0 aS1jaGFyYWN0ZXIgb3BzIGFuZCB1c2VyLWRlZmluZWQgb3BlcmF0b3JzICovCiAlbGVmdAkJJysn ICctJwogJWxlZnQJCScqJyAnLycgJyUnCkBAIC04OTYsNyArOTE0LDYgQEAgc3RhdGljIE5vZGUg Km1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5v ZGUgKnF1ZXJ5KTsKICAqIGxlZnQtYXNzb2NpYXRpdml0eSBhbW9uZyB0aGUgSk9JTiBydWxlcyB0 aGVtc2VsdmVzLgogICovCiAlbGVmdAkJSk9JTiBDUk9TUyBMRUZUIEZVTEwgUklHSFQgSU5ORVJf UCBOQVRVUkFMCi0KICUlCiAKIC8qCkBAIC0xMzQzOCw2ICsxMzQ1NSwyMSBAQCB0YWJsZV9yZWY6 CXJlbGF0aW9uX2V4cHIgb3B0X2FsaWFzX2NsYXVzZQogCQkJCQkkMi0+YWxpYXMgPSAkNDsKIAkJ CQkJJCQgPSAoTm9kZSAqKSAkMjsKIAkJCQl9CisJCQl8IGpzb25fdGFibGUgb3B0X2FsaWFzX2Ns YXVzZQorCQkJCXsKKwkJCQkJSnNvblRhYmxlICAqanQgPSBjYXN0Tm9kZShKc29uVGFibGUsICQx KTsKKworCQkJCQlqdC0+YWxpYXMgPSAkMjsKKwkJCQkJJCQgPSAoTm9kZSAqKSBqdDsKKwkJCQl9 CisJCQl8IExBVEVSQUxfUCBqc29uX3RhYmxlIG9wdF9hbGlhc19jbGF1c2UKKwkJCQl7CisJCQkJ CUpzb25UYWJsZSAgKmp0ID0gY2FzdE5vZGUoSnNvblRhYmxlLCAkMik7CisKKwkJCQkJanQtPmFs aWFzID0gJDM7CisJCQkJCWp0LT5sYXRlcmFsID0gdHJ1ZTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBq dDsKKwkJCQl9CiAJCTsKIAogCkBAIC0xNDAwNSw2ICsxNDAzNyw4IEBAIHhtbHRhYmxlX2NvbHVt bl9vcHRpb25fZWw6CiAJCQkJeyAkJCA9IG1ha2VEZWZFbGVtKCJpc19ub3RfbnVsbCIsIChOb2Rl ICopIG1ha2VCb29sZWFuKHRydWUpLCBAMSk7IH0KIAkJCXwgTlVMTF9QCiAJCQkJeyAkJCA9IG1h a2VEZWZFbGVtKCJpc19ub3RfbnVsbCIsIChOb2RlICopIG1ha2VCb29sZWFuKGZhbHNlKSwgQDEp OyB9CisJCQl8IFBBVEggYl9leHByCisJCQkJeyAkJCA9IG1ha2VEZWZFbGVtKCJwYXRoIiwgJDIs IEAxKTsgfQogCQk7CiAKIHhtbF9uYW1lc3BhY2VfbGlzdDoKQEAgLTE0MDMzLDYgKzE0MDY3LDIz MyBAQCB4bWxfbmFtZXNwYWNlX2VsOgogCQkJCX0KIAkJOwogCitqc29uX3RhYmxlOgorCQkJSlNP Tl9UQUJMRSAnKCcKKwkJCQlqc29uX3ZhbHVlX2V4cHIgJywnIGFfZXhwciBqc29uX3RhYmxlX3Bh dGhfbmFtZV9vcHQKKwkJCQlqc29uX3Bhc3NpbmdfY2xhdXNlX29wdAorCQkJCUNPTFVNTlMgJygn IGpzb25fdGFibGVfY29sdW1uX2RlZmluaXRpb25fbGlzdCAnKScKKwkJCQlqc29uX3RhYmxlX3Bs YW5fY2xhdXNlX29wdAorCQkJCWpzb25fb25fZXJyb3JfY2xhdXNlX29wdAorCQkJJyknCisJCQkJ eworCQkJCQlKc29uVGFibGUgKm4gPSBtYWtlTm9kZShKc29uVGFibGUpOworCQkJCQljaGFyCSAg KnBhdGhzdHJpbmc7CisKKwkJCQkJbi0+Y29udGV4dF9pdGVtID0gKEpzb25WYWx1ZUV4cHIgKikg JDM7CisJCQkJCWlmICghSXNBKCQ1LCBBX0NvbnN0KSB8fAorCQkJCQkJY2FzdE5vZGUoQV9Db25z dCwgJDUpLT52YWwubm9kZS50eXBlICE9IFRfU3RyaW5nKQorCQkJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkJ CWVycm1zZygib25seSBzdHJpbmcgY29uc3RhbnRzIGFyZSBzdXBwb3J0ZWQgaW4gSlNPTl9UQUJM RSIKKwkJCQkJCQkJCSAgICIgcGF0aCBzcGVjaWZpY2F0aW9uIiksCisJCQkJCQkJCXBhcnNlcl9l cnJwb3NpdGlvbihANSkpOworCQkJCQlwYXRoc3RyaW5nID0gY2FzdE5vZGUoQV9Db25zdCwgJDUp LT52YWwuc3ZhbC5zdmFsOworCQkJCQluLT5wYXRoc3BlYyA9IChKc29uVGFibGVQYXRoU3BlYyAq KQorCQkJCQkJbWFrZUpzb25UYWJsZVBhdGhTcGVjKHBhdGhzdHJpbmcsICQ2LCBANSwgQDYpOwor CQkJCQluLT5wYXNzaW5nID0gJDc7CisJCQkJCW4tPmNvbHVtbnMgPSAkMTA7CisJCQkJCW4tPnBs YW5zcGVjID0gKEpzb25UYWJsZVBsYW5TcGVjICopICQxMjsKKwkJCQkJbi0+b25fZXJyb3IgPSAo SnNvbkJlaGF2aW9yICopICQxMzsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAo Tm9kZSAqKSBuOworCQkJCX0KKwkJOworCitqc29uX3RhYmxlX3BhdGhfbmFtZV9vcHQ6CisJCQlB UyBuYW1lCQkJeyAkJCA9ICQyOyB9CisJCQl8IC8qIGVtcHR5ICovCXsgJCQgPSBOVUxMOyB9CisJ CTsKKworanNvbl90YWJsZV9jb2x1bW5fZGVmaW5pdGlvbl9saXN0OgorCQkJanNvbl90YWJsZV9j b2x1bW5fZGVmaW5pdGlvbgorCQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsgfQorCQkJfCBqc29u X3RhYmxlX2NvbHVtbl9kZWZpbml0aW9uX2xpc3QgJywnIGpzb25fdGFibGVfY29sdW1uX2RlZmlu aXRpb24KKwkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CisJCTsKKworanNvbl90YWJsZV9j b2x1bW5fZGVmaW5pdGlvbjoKKwkJCUNvbElkIEZPUiBPUkRJTkFMSVRZCisJCQkJeworCQkJCQlK c29uVGFibGVDb2x1bW4gKm4gPSBtYWtlTm9kZShKc29uVGFibGVDb2x1bW4pOworCisJCQkJCW4t PmNvbHR5cGUgPSBKVENfRk9SX09SRElOQUxJVFk7CisJCQkJCW4tPm5hbWUgPSAkMTsKKwkJCQkJ bi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJCXwgQ29s SWQgVHlwZW5hbWUKKwkJCQlqc29uX3RhYmxlX2NvbHVtbl9wYXRoX2NsYXVzZV9vcHQKKwkJCQlq c29uX3dyYXBwZXJfYmVoYXZpb3IKKwkJCQlqc29uX3F1b3Rlc19jbGF1c2Vfb3B0CisJCQkJanNv bl9iZWhhdmlvcl9jbGF1c2Vfb3B0CisJCQkJeworCQkJCQlKc29uVGFibGVDb2x1bW4gKm4gPSBt YWtlTm9kZShKc29uVGFibGVDb2x1bW4pOworCisJCQkJCW4tPmNvbHR5cGUgPSBKVENfUkVHVUxB UjsKKwkJCQkJbi0+bmFtZSA9ICQxOworCQkJCQluLT50eXBlTmFtZSA9ICQyOworCQkJCQluLT5m b3JtYXQgPSBtYWtlSnNvbkZvcm1hdChKU19GT1JNQVRfREVGQVVMVCwgSlNfRU5DX0RFRkFVTFQs IC0xKTsKKwkJCQkJbi0+cGF0aHNwZWMgPSAoSnNvblRhYmxlUGF0aFNwZWMgKikgJDM7CisJCQkJ CW4tPndyYXBwZXIgPSAkNDsgLyogZGlzYWxsb3dlZCBkdXJpbmcgcGFyc2UtYW5hbHlzaXMhICov CisJCQkJCW4tPnF1b3RlcyA9ICQ1OyAvKiBkaXNhbGxvd2VkIGR1cmluZyBwYXJzZS1hbmFseXNp cyEgKi8KKwkJCQkJbi0+b25fZW1wdHkgPSAoSnNvbkJlaGF2aW9yICopIGxpbml0aWFsKCQ2KTsK KwkJCQkJbi0+b25fZXJyb3IgPSAoSnNvbkJlaGF2aW9yICopIGxzZWNvbmQoJDYpOworCQkJCQlu LT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQkJfCBDb2xJ ZCBUeXBlbmFtZSBqc29uX2Zvcm1hdF9jbGF1c2UKKwkJCQlqc29uX3RhYmxlX2NvbHVtbl9wYXRo X2NsYXVzZV9vcHQKKwkJCQlqc29uX3dyYXBwZXJfYmVoYXZpb3IKKwkJCQlqc29uX3F1b3Rlc19j bGF1c2Vfb3B0CisJCQkJanNvbl9iZWhhdmlvcl9jbGF1c2Vfb3B0CisJCQkJeworCQkJCQlKc29u VGFibGVDb2x1bW4gKm4gPSBtYWtlTm9kZShKc29uVGFibGVDb2x1bW4pOworCisJCQkJCW4tPmNv bHR5cGUgPSBKVENfRk9STUFUVEVEOworCQkJCQluLT5uYW1lID0gJDE7CisJCQkJCW4tPnR5cGVO YW1lID0gJDI7CisJCQkJCW4tPmZvcm1hdCA9IChKc29uRm9ybWF0ICopICQzOworCQkJCQluLT5w YXRoc3BlYyA9IChKc29uVGFibGVQYXRoU3BlYyAqKSAkNDsKKwkJCQkJbi0+d3JhcHBlciA9ICQ1 OworCQkJCQluLT5xdW90ZXMgPSAkNjsKKwkJCQkJbi0+b25fZW1wdHkgPSAoSnNvbkJlaGF2aW9y ICopIGxpbml0aWFsKCQ3KTsKKwkJCQkJbi0+b25fZXJyb3IgPSAoSnNvbkJlaGF2aW9yICopIGxz ZWNvbmQoJDcpOworCQkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2RlICopIG47 CisJCQkJfQorCQkJfCBDb2xJZCBUeXBlbmFtZQorCQkJCUVYSVNUUyBqc29uX3RhYmxlX2NvbHVt bl9wYXRoX2NsYXVzZV9vcHQKKwkJCQlqc29uX2JlaGF2aW9yX2NsYXVzZV9vcHQKKwkJCQl7CisJ CQkJCUpzb25UYWJsZUNvbHVtbiAqbiA9IG1ha2VOb2RlKEpzb25UYWJsZUNvbHVtbik7CisKKwkJ CQkJbi0+Y29sdHlwZSA9IEpUQ19FWElTVFM7CisJCQkJCW4tPm5hbWUgPSAkMTsKKwkJCQkJbi0+ dHlwZU5hbWUgPSAkMjsKKwkJCQkJbi0+Zm9ybWF0ID0gbWFrZUpzb25Gb3JtYXQoSlNfRk9STUFU X0RFRkFVTFQsIEpTX0VOQ19ERUZBVUxULCAtMSk7CisJCQkJCW4tPndyYXBwZXIgPSBKU1dfTk9O RTsKKwkJCQkJbi0+cXVvdGVzID0gSlNfUVVPVEVTX1VOU1BFQzsKKwkJCQkJbi0+cGF0aHNwZWMg PSAoSnNvblRhYmxlUGF0aFNwZWMgKikgJDQ7CisJCQkJCW4tPm9uX2VtcHR5ID0gKEpzb25CZWhh dmlvciAqKSBsaW5pdGlhbCgkNSk7CisJCQkJCW4tPm9uX2Vycm9yID0gKEpzb25CZWhhdmlvciAq KSBsc2Vjb25kKCQ1KTsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAq KSBuOworCQkJCX0KKwkJCXwgTkVTVEVEIHBhdGhfb3B0IFNjb25zdAorCQkJCUNPTFVNTlMgJygn IGpzb25fdGFibGVfY29sdW1uX2RlZmluaXRpb25fbGlzdCAnKScKKwkJCQl7CisJCQkJCUpzb25U YWJsZUNvbHVtbiAqbiA9IG1ha2VOb2RlKEpzb25UYWJsZUNvbHVtbik7CisKKwkJCQkJbi0+Y29s dHlwZSA9IEpUQ19ORVNURUQ7CisJCQkJCW4tPnBhdGhzcGVjID0gKEpzb25UYWJsZVBhdGhTcGVj ICopCisJCQkJCQltYWtlSnNvblRhYmxlUGF0aFNwZWMoJDMsIE5VTEwsIEAzLCAtMSk7CisJCQkJ CW4tPmNvbHVtbnMgPSAkNjsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9k ZSAqKSBuOworCQkJCX0KKwkJCXwgTkVTVEVEIHBhdGhfb3B0IFNjb25zdCBBUyBuYW1lCisJCQkJ Q09MVU1OUyAnKCcganNvbl90YWJsZV9jb2x1bW5fZGVmaW5pdGlvbl9saXN0ICcpJworCQkJCXsK KwkJCQkJSnNvblRhYmxlQ29sdW1uICpuID0gbWFrZU5vZGUoSnNvblRhYmxlQ29sdW1uKTsKKwor CQkJCQluLT5jb2x0eXBlID0gSlRDX05FU1RFRDsKKwkJCQkJbi0+cGF0aHNwZWMgPSAoSnNvblRh YmxlUGF0aFNwZWMgKikKKwkJCQkJCW1ha2VKc29uVGFibGVQYXRoU3BlYygkMywgJDUsIEAzLCBA NSk7CisJCQkJCW4tPmNvbHVtbnMgPSAkODsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJ JCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCitwYXRoX29wdDoKKwkJCVBBVEgKKwkJCXwg LyogRU1QVFkgKi8KKwkJOworCitqc29uX3RhYmxlX2NvbHVtbl9wYXRoX2NsYXVzZV9vcHQ6CisJ CQlQQVRIIFNjb25zdAorCQkJCXsgJCQgPSBtYWtlSnNvblRhYmxlUGF0aFNwZWMoJDIsIE5VTEws IEAyLCAtMSk7IH0KKwkJCXwgLyogRU1QVFkgKi8KKwkJCQl7ICQkID0gTlVMTDsgfQorCQk7CisK K2pzb25fdGFibGVfcGxhbl9jbGF1c2Vfb3B0OgorCQkJUExBTiAnKCcganNvbl90YWJsZV9wbGFu ICcpJworCQkJCXsgJCQgPSAkMzsgfQorCQkJfCBQTEFOIERFRkFVTFQgJygnIGpzb25fdGFibGVf ZGVmYXVsdF9wbGFuX2Nob2ljZXMgJyknCisJCQkJeyAkJCA9IG1ha2VKc29uVGFibGVEZWZhdWx0 UGxhbigkNCwgQDEpOyB9CisJCQl8IC8qIEVNUFRZICovCisJCQkJeyAkJCA9IE5VTEw7IH0KKwkJ OworCitqc29uX3RhYmxlX3BsYW46CisJCQlqc29uX3RhYmxlX3BsYW5fc2ltcGxlCisJCQl8IGpz b25fdGFibGVfcGxhbl9vdXRlcgorCQkJfCBqc29uX3RhYmxlX3BsYW5faW5uZXIKKwkJCXwganNv bl90YWJsZV9wbGFuX3VuaW9uCisJCQl8IGpzb25fdGFibGVfcGxhbl9jcm9zcworCQk7CisKK2pz b25fdGFibGVfcGxhbl9zaW1wbGU6CisJCQluYW1lCisJCQkJeyAkJCA9IG1ha2VKc29uVGFibGVT aW1wbGVQbGFuKCQxLCBAMSk7IH0KKwkJOworCitqc29uX3RhYmxlX3BsYW5fb3V0ZXI6CisJCQlq c29uX3RhYmxlX3BsYW5fc2ltcGxlIE9VVEVSX1AganNvbl90YWJsZV9wbGFuX3ByaW1hcnkKKwkJ CQl7ICQkID0gbWFrZUpzb25UYWJsZUpvaW5lZFBsYW4oSlNUUF9KT0lOX09VVEVSLCAkMSwgJDMs IEAxKTsgfQorCQk7CisKK2pzb25fdGFibGVfcGxhbl9pbm5lcjoKKwkJCWpzb25fdGFibGVfcGxh bl9zaW1wbGUgSU5ORVJfUCBqc29uX3RhYmxlX3BsYW5fcHJpbWFyeQorCQkJCXsgJCQgPSBtYWtl SnNvblRhYmxlSm9pbmVkUGxhbihKU1RQX0pPSU5fSU5ORVIsICQxLCAkMywgQDEpOyB9CisJCTsK KworanNvbl90YWJsZV9wbGFuX3VuaW9uOgorCQkJanNvbl90YWJsZV9wbGFuX3ByaW1hcnkgVU5J T04ganNvbl90YWJsZV9wbGFuX3ByaW1hcnkKKwkJCQl7ICQkID0gbWFrZUpzb25UYWJsZUpvaW5l ZFBsYW4oSlNUUF9KT0lOX1VOSU9OLCAkMSwgJDMsIEAxKTsgfQorCQkJfCBqc29uX3RhYmxlX3Bs YW5fdW5pb24gVU5JT04ganNvbl90YWJsZV9wbGFuX3ByaW1hcnkKKwkJCQl7ICQkID0gbWFrZUpz b25UYWJsZUpvaW5lZFBsYW4oSlNUUF9KT0lOX1VOSU9OLCAkMSwgJDMsIEAxKTsgfQorCQk7CisK K2pzb25fdGFibGVfcGxhbl9jcm9zczoKKwkJCWpzb25fdGFibGVfcGxhbl9wcmltYXJ5IENST1NT IGpzb25fdGFibGVfcGxhbl9wcmltYXJ5CisJCQkJeyAkJCA9IG1ha2VKc29uVGFibGVKb2luZWRQ bGFuKEpTVFBfSk9JTl9DUk9TUywgJDEsICQzLCBAMSk7IH0KKwkJCXwganNvbl90YWJsZV9wbGFu X2Nyb3NzIENST1NTIGpzb25fdGFibGVfcGxhbl9wcmltYXJ5CisJCQkJeyAkJCA9IG1ha2VKc29u VGFibGVKb2luZWRQbGFuKEpTVFBfSk9JTl9DUk9TUywgJDEsICQzLCBAMSk7IH0KKwkJOworCitq c29uX3RhYmxlX3BsYW5fcHJpbWFyeToKKwkJCWpzb25fdGFibGVfcGxhbl9zaW1wbGUKKwkJCQl7 ICQkID0gJDE7IH0KKwkJCXwgJygnIGpzb25fdGFibGVfcGxhbiAnKScKKwkJCQl7CisJCQkJCWNh c3ROb2RlKEpzb25UYWJsZVBsYW5TcGVjLCAkMiktPmxvY2F0aW9uID0gQDE7CisJCQkJCSQkID0g JDI7CisJCQkJfQorCQk7CisKK2pzb25fdGFibGVfZGVmYXVsdF9wbGFuX2Nob2ljZXM6CisJCQlq c29uX3RhYmxlX2RlZmF1bHRfcGxhbl9pbm5lcl9vdXRlcgorCQkJCXsgJCQgPSAkMSB8IEpTVFBf Sk9JTl9VTklPTjsgfQorCQkJfCBqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl91bmlvbl9jcm9zcwor CQkJCXsgJCQgPSAkMSB8IEpTVFBfSk9JTl9PVVRFUjsgfQorCQkJfCBqc29uX3RhYmxlX2RlZmF1 bHRfcGxhbl9pbm5lcl9vdXRlciAnLCcganNvbl90YWJsZV9kZWZhdWx0X3BsYW5fdW5pb25fY3Jv c3MKKwkJCQl7ICQkID0gJDEgfCAkMzsgfQorCQkJfCBqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl91 bmlvbl9jcm9zcyAnLCcganNvbl90YWJsZV9kZWZhdWx0X3BsYW5faW5uZXJfb3V0ZXIKKwkJCQl7 ICQkID0gJDEgfCAkMzsgfQorCQk7CisKK2pzb25fdGFibGVfZGVmYXVsdF9wbGFuX2lubmVyX291 dGVyOgorCQkJSU5ORVJfUAkJCQkJCXsgJCQgPSBKU1RQX0pPSU5fSU5ORVI7IH0KKwkJCXwgT1VU RVJfUAkJCQkJeyAkJCA9IEpTVFBfSk9JTl9PVVRFUjsgfQorCQk7CisKK2pzb25fdGFibGVfZGVm YXVsdF9wbGFuX3VuaW9uX2Nyb3NzOgorCQkJVU5JT04JCQkJCQl7ICQkID0gSlNUUF9KT0lOX1VO SU9OOyB9CisJCQl8IENST1NTCQkJCQkJeyAkJCA9IEpTVFBfSk9JTl9DUk9TUzsgfQorCQk7CisK IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgogICoKICAqCVR5cGUgc3ludGF4CkBAIC0xNzQzNCw2ICsx NzY5NSw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgTU9WRQogCQkJfCBOQU1FX1AKIAkJ CXwgTkFNRVMKKwkJCXwgTkVTVEVECiAJCQl8IE5FVwogCQkJfCBORVhUCiAJCQl8IE5GQwpAQCAt MTc0NjgsNiArMTc3MzAsOCBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFBBUlRJVElPTgog CQkJfCBQQVNTSU5HCiAJCQl8IFBBU1NXT1JECisJCQl8IFBBVEgKKwkJCXwgUExBTgogCQkJfCBQ TEFOUwogCQkJfCBQT0xJQ1kKIAkJCXwgUFJFQ0VESU5HCkBAIC0xNzYzMiw2ICsxNzg5Niw3IEBA IGNvbF9uYW1lX2tleXdvcmQ6CiAJCQl8IEpTT05fUVVFUlkKIAkJCXwgSlNPTl9TQ0FMQVIKIAkJ CXwgSlNPTl9TRVJJQUxJWkUKKwkJCXwgSlNPTl9UQUJMRQogCQkJfCBKU09OX1ZBTFVFCiAJCQl8 IExFQVNUCiAJCQl8IE5BVElPTkFMCkBAIC0xODAwMCw2ICsxODI2NSw3IEBAIGJhcmVfbGFiZWxf a2V5d29yZDoKIAkJCXwgSlNPTl9RVUVSWQogCQkJfCBKU09OX1NDQUxBUgogCQkJfCBKU09OX1NF UklBTElaRQorCQkJfCBKU09OX1RBQkxFCiAJCQl8IEpTT05fVkFMVUUKIAkJCXwgS0VFUAogCQkJ fCBLRVkKQEAgLTE4MDM5LDYgKzE4MzA1LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBO QVRJT05BTAogCQkJfCBOQVRVUkFMCiAJCQl8IE5DSEFSCisJCQl8IE5FU1RFRAogCQkJfCBORVcK IAkJCXwgTkVYVAogCQkJfCBORkMKQEAgLTE4MDgzLDcgKzE4MzUwLDkgQEAgYmFyZV9sYWJlbF9r ZXl3b3JkOgogCQkJfCBQQVJUSVRJT04KIAkJCXwgUEFTU0lORwogCQkJfCBQQVNTV09SRAorCQkJ fCBQQVRICiAJCQl8IFBMQUNJTkcKKwkJCXwgUExBTgogCQkJfCBQTEFOUwogCQkJfCBQT0xJQ1kK IAkJCXwgUE9TSVRJT04KQEAgLTE4MzUxLDE4ICsxODYyMCw2IEBAIG1ha2VUeXBlQ2FzdChOb2Rl ICphcmcsIFR5cGVOYW1lICp0eXBlbmFtZSwgaW50IGxvY2F0aW9uKQogCXJldHVybiAoTm9kZSAq KSBuOwogfQogCi1zdGF0aWMgTm9kZSAqCi1tYWtlU3RyaW5nQ29uc3QoY2hhciAqc3RyLCBpbnQg bG9jYXRpb24pCi17Ci0JQV9Db25zdAkgICAqbiA9IG1ha2VOb2RlKEFfQ29uc3QpOwotCi0Jbi0+ dmFsLnN2YWwudHlwZSA9IFRfU3RyaW5nOwotCW4tPnZhbC5zdmFsLnN2YWwgPSBzdHI7Ci0Jbi0+ bG9jYXRpb24gPSBsb2NhdGlvbjsKLQotICAgcmV0dXJuIChOb2RlICopIG47Ci19Ci0KIHN0YXRp YyBOb2RlICoKIG1ha2VTdHJpbmdDb25zdENhc3QoY2hhciAqc3RyLCBpbnQgbG9jYXRpb24sIFR5 cGVOYW1lICp0eXBlbmFtZSkKIHsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9tZXNv bi5idWlsZCBiL3NyYy9iYWNrZW5kL3BhcnNlci9tZXNvbi5idWlsZAppbmRleCA4ZTgyOTU2NDBi Li41NzNkNzBiM2QxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvbWVzb24uYnVpbGQK KysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL21lc29uLmJ1aWxkCkBAIC0xMCw2ICsxMCw3IEBAIGJh Y2tlbmRfc291cmNlcyArPSBmaWxlcygKICAgJ3BhcnNlX2Vuci5jJywKICAgJ3BhcnNlX2V4cHIu YycsCiAgICdwYXJzZV9mdW5jLmMnLAorICAncGFyc2VfanNvbnRhYmxlLmMnLAogICAncGFyc2Vf bWVyZ2UuYycsCiAgICdwYXJzZV9ub2RlLmMnLAogICAncGFyc2Vfb3Blci5jJywKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9jbGF1c2UuYwppbmRleCA0YjUwMjc4ZmQwLi4zOGUyN2U4NDcyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNlLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2NsYXVzZS5jCkBAIC02OTcsNyArNjk3LDExIEBAIHRyYW5zZm9ybVJhbmdlVGFi bGVGdW5jKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmFuZ2VUYWJsZUZ1bmMgKnJ0ZikKIAljaGFyCSAg KipuYW1lczsKIAlpbnQJCQljb2xubzsKIAotCS8qIEN1cnJlbnRseSBvbmx5IFhNTFRBQkxFIGlz IHN1cHBvcnRlZCAqLworCS8qCisJICogQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCBYTUxUQUJM RSBoZXJlLiAgU2VlIHRyYW5zZm9ybUpzb25UYWJsZSgpIGZvcgorCSAqIEpTT05fVEFCTEUgc3Vw cG9ydC4KKwkgKi8KKwl0Zi0+ZnVuY3R5cGUgPSBURlRfWE1MVEFCTEU7CiAJY29uc3RydWN0TmFt ZSA9ICJYTUxUQUJMRSI7CiAJZG9jVHlwZSA9IFhNTE9JRDsKIApAQCAtMTEwNCwxMyArMTEwOCwx NyBAQCB0cmFuc2Zvcm1Gcm9tQ2xhdXNlSXRlbShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKm4s CiAJCXJ0ci0+cnRpbmRleCA9IG5zaXRlbS0+cF9ydGluZGV4OwogCQlyZXR1cm4gKE5vZGUgKikg cnRyOwogCX0KLQllbHNlIGlmIChJc0EobiwgUmFuZ2VUYWJsZUZ1bmMpKQorCWVsc2UgaWYgKElz QShuLCBSYW5nZVRhYmxlRnVuYykgfHwgSXNBKG4sIEpzb25UYWJsZSkpCiAJewogCQkvKiB0YWJs ZSBmdW5jdGlvbiBpcyBsaWtlIGEgcGxhaW4gcmVsYXRpb24gKi8KIAkJUmFuZ2VUYmxSZWYgKnJ0 cjsKIAkJUGFyc2VOYW1lc3BhY2VJdGVtICpuc2l0ZW07CiAKLQkJbnNpdGVtID0gdHJhbnNmb3Jt UmFuZ2VUYWJsZUZ1bmMocHN0YXRlLCAoUmFuZ2VUYWJsZUZ1bmMgKikgbik7CisJCWlmIChJc0Eo biwgUmFuZ2VUYWJsZUZ1bmMpKQorCQkJbnNpdGVtID0gdHJhbnNmb3JtUmFuZ2VUYWJsZUZ1bmMo cHN0YXRlLCAoUmFuZ2VUYWJsZUZ1bmMgKikgbik7CisJCWVsc2UKKwkJCW5zaXRlbSA9IHRyYW5z Zm9ybUpzb25UYWJsZShwc3RhdGUsIChKc29uVGFibGUgKikgbik7CisKIAkJKnRvcF9uc2l0ZW0g PSBuc2l0ZW07CiAJCSpuYW1lc3BhY2UgPSBsaXN0X21ha2UxKG5zaXRlbSk7CiAJCXJ0ciA9IG1h a2VOb2RlKFJhbmdlVGJsUmVmKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDk5ODlmYmIy ODYuLjQ1NGUyZWFkMmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHBy LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtNDIxOSw3ICs0MjE5 LDggQEAgdHJhbnNmb3JtSnNvblNlcmlhbGl6ZUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29u U2VyaWFsaXplRXhwciAqZXhwcikKIH0KIAogLyoKLSAqIFRyYW5zZm9ybSBKU09OX1ZBTFVFLCBK U09OX1FVRVJZLCBKU09OX0VYSVNUUyBmdW5jdGlvbnMgaW50byBhIEpzb25FeHByIG5vZGUuCisg KiBUcmFuc2Zvcm0gSlNPTl9WQUxVRSwgSlNPTl9RVUVSWSwgSlNPTl9FWElTVFMsIEpTT05fVEFC TEUgZnVuY3Rpb25zIGludG8KKyAqIGEgSnNvbkV4cHIgbm9kZS4KICAqLwogc3RhdGljIE5vZGUg KgogdHJhbnNmb3JtSnNvbkZ1bmNFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvbkZ1bmNFeHBy ICpmdW5jKQpAQCAtNDIzOCw2ICs0MjM5LDkgQEAgdHJhbnNmb3JtSnNvbkZ1bmNFeHByKFBhcnNl U3RhdGUgKnBzdGF0ZSwgSnNvbkZ1bmNFeHByICpmdW5jKQogCQljYXNlIEpTT05fVkFMVUVfT1A6 CiAJCQlmdW5jX25hbWUgPSAiSlNPTl9WQUxVRSI7CiAJCQlicmVhazsKKwkJY2FzZSBKU09OX1RB QkxFX09QOgorCQkJZnVuY19uYW1lID0gIkpTT05fVEFCTEUiOworCQkJYnJlYWs7CiAJCWRlZmF1 bHQ6CiAJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBKc29uRnVuY0V4cHIgb3AiKTsKIAkJCWJyZWFr OwpAQCAtNDI3Nyw2ICs0MjgxLDQyIEBAIHRyYW5zZm9ybUpzb25GdW5jRXhwcihQYXJzZVN0YXRl ICpwc3RhdGUsIEpzb25GdW5jRXhwciAqZnVuYykKIAkJCQlqc2V4cHItPnJldHVybmluZy0+dHlw aWQgPSBCT09MT0lEOwogCQkJCWpzZXhwci0+cmV0dXJuaW5nLT50eXBtb2QgPSAtMTsKIAkJCX0K KwkJCS8qIEpTT05fVEFCTEUoKSBDT0xVTU5TIGNhbiBzcGVjaWZ5IGEgbm9uLWJvb2xlYW4gdHlw ZS4gKi8KKwkJCWVsc2UgaWYgKGpzZXhwci0+cmV0dXJuaW5nLT50eXBpZCAhPSBCT09MT0lEKQor CQkJeworCQkJCU5vZGUJICAgKmNvZXJjaW9uX2V4cHI7CisJCQkJQ2FzZVRlc3RFeHByICpwbGFj ZWhvbGRlciA9IG1ha2VOb2RlKENhc2VUZXN0RXhwcik7CisJCQkJaW50CQkJbG9jYXRpb24gPSBl eHByTG9jYXRpb24oKE5vZGUgKikganNleHByKTsKKworCQkJCS8qCisJCQkJICogV2UgYWJ1c2Ug Q2FzZVRlc3RFeHByIGhlcmUgYXMgcGxhY2Vob2xkZXIgdG8gcGFzcyB0aGUKKwkJCQkgKiByZXN1 bHQgb2YgZXZhbHVhdGluZyBKU09OX0VYSVNUUyB0byB0aGUgY29lcmNpb24KKwkJCQkgKiBleHBy ZXNzaW9uLgorCQkJCSAqLworCQkJCXBsYWNlaG9sZGVyLT50eXBlSWQgPSBCT09MT0lEOworCQkJ CXBsYWNlaG9sZGVyLT50eXBlTW9kID0gLTE7CisJCQkJcGxhY2Vob2xkZXItPmNvbGxhdGlvbiA9 IEludmFsaWRPaWQ7CisKKwkJCQljb2VyY2lvbl9leHByID0KKwkJCQkJY29lcmNlX3RvX3Rhcmdl dF90eXBlKHBzdGF0ZSwgKE5vZGUgKikgcGxhY2Vob2xkZXIsIEJPT0xPSUQsCisJCQkJCQkJCQkJ ICBqc2V4cHItPnJldHVybmluZy0+dHlwaWQsCisJCQkJCQkJCQkJICBqc2V4cHItPnJldHVybmlu Zy0+dHlwbW9kLAorCQkJCQkJCQkJCSAgQ09FUkNJT05fRVhQTElDSVQsCisJCQkJCQkJCQkJICBD T0VSQ0VfSU1QTElDSVRfQ0FTVCwKKwkJCQkJCQkJCQkgIGxvY2F0aW9uKTsKKworCQkJCWlmIChj b2VyY2lvbl9leHByID09IE5VTEwpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9DQU5OT1RfQ09FUkNFKSwKKwkJCQkJCQkgZXJybXNnKCJjYW5ub3QgY2FzdCB0 eXBlICVzIHRvICVzIiwKKwkJCQkJCQkJCWZvcm1hdF90eXBlX2JlKEJPT0xPSUQpLAorCQkJCQkJ CQkJZm9ybWF0X3R5cGVfYmUoanNleHByLT5yZXR1cm5pbmctPnR5cGlkKSksCisJCQkJCQkJIHBh cnNlcl9jb2VyY2lvbl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uLCAoTm9kZSAqKSBqc2V4 cHIpKSk7CisKKwkJCQlpZiAoY29lcmNpb25fZXhwciAhPSAoTm9kZSAqKSBwbGFjZWhvbGRlcikK KwkJCQkJanNleHByLT5yZXN1bHRfY29lcmNpb24gPSBjb2VyY2lvbl9leHByOworCQkJfQorCiAK IAkJCWpzZXhwci0+b25fZXJyb3IgPSB0cmFuc2Zvcm1Kc29uQmVoYXZpb3IocHN0YXRlLCBmdW5j LT5vbl9lcnJvciwKIAkJCQkJCQkJCQkJCQkgSlNPTl9CRUhBVklPUl9GQUxTRSwKQEAgLTQzMzks NiArNDM3OSwxNyBAQCB0cmFuc2Zvcm1Kc29uRnVuY0V4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBK c29uRnVuY0V4cHIgKmZ1bmMpCiAJCQkJCQkJCQkJCQkJIGpzZXhwci0+cmV0dXJuaW5nKTsKIAkJ CWJyZWFrOwogCisJCWNhc2UgSlNPTl9UQUJMRV9PUDoKKwkJCWlmICghT2lkSXNWYWxpZChqc2V4 cHItPnJldHVybmluZy0+dHlwaWQpKQorCQkJeworCQkJCWpzZXhwci0+cmV0dXJuaW5nLT50eXBp ZCA9IGV4cHJUeXBlKGpzZXhwci0+Zm9ybWF0dGVkX2V4cHIpOworCQkJCWpzZXhwci0+cmV0dXJu aW5nLT50eXBtb2QgPSAtMTsKKwkJCX0KKwkJCWpzZXhwci0+b25fZXJyb3IgPSB0cmFuc2Zvcm1K c29uQmVoYXZpb3IocHN0YXRlLCBmdW5jLT5vbl9lcnJvciwKKwkJCQkJCQkJCQkJCQkgSlNPTl9C RUhBVklPUl9FTVBUWSwKKwkJCQkJCQkJCQkJCQkganNleHByLT5yZXR1cm5pbmcpOworCQkJYnJl YWs7CisKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJpbnZhbGlkIEpzb25GdW5jRXhwciBv cCIpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNv bnRhYmxlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRhYmxlLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMjViODIwNGRjNgotLS0gL2Rldi9udWxsCisr KyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9qc29udGFibGUuYwpAQCAtMCwwICsxLDcxOCBA QAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGFyc2VfanNvbnRhYmxlLmMKKyAqCSAgcGFy c2luZyBvZiBKU09OX1RBQkxFCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIw MjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5 cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQor ICoKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf anNvbnRhYmxlLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9z dGdyZXMuaCIKKworI2luY2x1ZGUgImNhdGFsb2cvcGdfY29sbGF0aW9uLmgiCisjaW5jbHVkZSAi Y2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAibm9k ZXMvbWFrZWZ1bmNzLmgiCisjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCisjaW5jbHVkZSAi b3B0aW1pemVyL29wdGltaXplci5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jbGF1c2UuaCIK KyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY29sbGF0ZS5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJz ZV9leHByLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgiCisjaW5jbHVkZSAi cGFyc2VyL3BhcnNlX3R5cGUuaCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1 ZGUgInV0aWxzL2pzb24uaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKworLyogQ29u dGV4dCBmb3IgSlNPTl9UQUJMRSB0cmFuc2Zvcm1hdGlvbiAqLwordHlwZWRlZiBzdHJ1Y3QgSnNv blRhYmxlUGFyc2VDb250ZXh0Cit7CisJUGFyc2VTdGF0ZSAqcHN0YXRlOwkJCS8qIHBhcnNpbmcg c3RhdGUgKi8KKwlKc29uVGFibGUgICp0YWJsZTsJCQkvKiB1bnRyYW5zZm9ybWVkIG5vZGUgKi8K KwlUYWJsZUZ1bmMgICp0YWJsZWZ1bmM7CQkvKiB0cmFuc2Zvcm1lZCBub2RlCSovCisJTGlzdAkg ICAqcGF0aE5hbWVzOwkJLyogbGlzdCBvZiBhbGwgcGF0aCBhbmQgY29sdW1ucyBuYW1lcyAqLwor CWludAkJCXBhdGhOYW1lSWQ7CQkvKiBwYXRoIG5hbWUgaWQgY291bnRlciAqLworCU9pZAkJCWNv bnRleHRJdGVtVHlwaWQ7CS8qIHR5cGUgb2lkIG9mIGNvbnRleHQgaXRlbSAoanNvbi9qc29uYikg Ki8KK30JCQlKc29uVGFibGVQYXJzZUNvbnRleHQ7CisKK3N0YXRpYyBKc29uVGFibGVQbGFuICp0 cmFuc2Zvcm1Kc29uVGFibGVDb2x1bW5zKEpzb25UYWJsZVBhcnNlQ29udGV4dCAqIGN4dCwKKwkJ CQkJCQkJCQkJCUpzb25UYWJsZVBsYW5TcGVjICpwbGFuc3BlYywKKwkJCQkJCQkJCQkJCUxpc3Qg KmNvbHVtbnMsCisJCQkJCQkJCQkJCQlKc29uVGFibGVQYXRoU3BlYyAqcGF0aHNwZWMpOworCisv KgorICogVHJhbnNmb3JtIEpTT05fVEFCTEUgY29sdW1uCisgKiAgIC0gcmVndWxhciBjb2x1bW4g aW50byBKU09OX1ZBTFVFKCkKKyAqICAgLSBGT1JNQVQgSlNPTiBjb2x1bW4gaW50byBKU09OX1FV RVJZKCkKKyAqICAgLSBFWElTVFMgY29sdW1uIGludG8gSlNPTl9FWElTVFMoKQorICovCitzdGF0 aWMgTm9kZSAqCit0cmFuc2Zvcm1Kc29uVGFibGVDb2x1bW4oSnNvblRhYmxlQ29sdW1uICpqdGMs IE5vZGUgKmNvbnRleHRJdGVtRXhwciwKKwkJCQkJCSBMaXN0ICpwYXNzaW5nQXJncywgYm9vbCBl cnJvck9uRXJyb3IpCit7CisJSnNvbkZ1bmNFeHByICpqZmV4cHIgPSBtYWtlTm9kZShKc29uRnVu Y0V4cHIpOworCU5vZGUJICAgKnBhdGhzcGVjOworCUpzb25Gb3JtYXQgKmRlZmF1bHRfZm9ybWF0 OworCisJaWYgKGp0Yy0+Y29sdHlwZSA9PSBKVENfUkVHVUxBUikKKwkJamZleHByLT5vcCA9IEpT T05fVkFMVUVfT1A7CisJZWxzZSBpZiAoanRjLT5jb2x0eXBlID09IEpUQ19FWElTVFMpCisJCWpm ZXhwci0+b3AgPSBKU09OX0VYSVNUU19PUDsKKwllbHNlCisJCWpmZXhwci0+b3AgPSBKU09OX1FV RVJZX09QOworCWpmZXhwci0+b3V0cHV0ID0gbWFrZU5vZGUoSnNvbk91dHB1dCk7CisJamZleHBy LT5vbl9lbXB0eSA9IGp0Yy0+b25fZW1wdHk7CisJamZleHByLT5vbl9lcnJvciA9IGp0Yy0+b25f ZXJyb3I7CisJaWYgKGpmZXhwci0+b25fZXJyb3IgPT0gTlVMTCAmJiBlcnJvck9uRXJyb3IpCisJ CWpmZXhwci0+b25fZXJyb3IgPSBtYWtlSnNvbkJlaGF2aW9yKEpTT05fQkVIQVZJT1JfRVJST1Is IE5VTEwsCisJCQkJCQkJCQkJCU5VTEwsIC0xKTsKKwlqZmV4cHItPnF1b3RlcyA9IGp0Yy0+cXVv dGVzOworCWpmZXhwci0+d3JhcHBlciA9IGp0Yy0+d3JhcHBlcjsKKwlqZmV4cHItPmxvY2F0aW9u ID0ganRjLT5sb2NhdGlvbjsKKworCWpmZXhwci0+b3V0cHV0LT50eXBlTmFtZSA9IGp0Yy0+dHlw ZU5hbWU7CisJamZleHByLT5vdXRwdXQtPnJldHVybmluZyA9IG1ha2VOb2RlKEpzb25SZXR1cm5p bmcpOworCWpmZXhwci0+b3V0cHV0LT5yZXR1cm5pbmctPmZvcm1hdCA9IGp0Yy0+Zm9ybWF0Owor CisJZGVmYXVsdF9mb3JtYXQgPSBtYWtlSnNvbkZvcm1hdChKU19GT1JNQVRfREVGQVVMVCwgSlNf RU5DX0RFRkFVTFQsIC0xKTsKKworCWlmIChqdGMtPnBhdGhzcGVjKQorCQlwYXRoc3BlYyA9IChO b2RlICopIGp0Yy0+cGF0aHNwZWMtPnN0cmluZzsKKwllbHNlCisJeworCQkvKiBDb25zdHJ1Y3Qg ZGVmYXVsdCBwYXRoIGFzICckLiJjb2x1bW5fbmFtZSInICovCisJCVN0cmluZ0luZm9EYXRhIHBh dGg7CisKKwkJaW5pdFN0cmluZ0luZm8oJnBhdGgpOworCisJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoJnBhdGgsICIkLiIpOworCQllc2NhcGVfanNvbigmcGF0aCwganRjLT5uYW1lKTsKKworCQlw YXRoc3BlYyA9IG1ha2VTdHJpbmdDb25zdChwYXRoLmRhdGEsIC0xKTsKKwl9CisKKwlqZmV4cHIt PmNvbnRleHRfaXRlbSA9CW1ha2VKc29uVmFsdWVFeHByKChFeHByICopIGNvbnRleHRJdGVtRXhw ciwgTlVMTCwKKwkJCQkJCQkJCQkJICBkZWZhdWx0X2Zvcm1hdCk7CisJamZleHByLT5wYXRoc3Bl YyA9IHBhdGhzcGVjOworCWpmZXhwci0+cGF0aG5hbWUgPSBOVUxMOworCWpmZXhwci0+cGFzc2lu ZyA9IHBhc3NpbmdBcmdzOworCisJcmV0dXJuIChOb2RlICopIGpmZXhwcjsKK30KKworLyoKKyAq IFJlZ2lzdGVyIGEgY29sdW1uL3BhdGggbmFtZSBpbiB0aGUgcGF0aCBuYW1lIGxpc3QsIGZsYWdn aW5nIGlmIHRoZSBuYW1lIGlzCisgKiBhbHJlYWR5IHRha2VuIGJ5IGFub3RoZXIgY29sdW1uL3Bh dGguCisgKi8KK3N0YXRpYyB2b2lkCityZWdpc3Rlckpzb25UYWJsZUNvbHVtbihKc29uVGFibGVQ YXJzZUNvbnRleHQgKiBjeHQsIGNoYXIgKmNvbG5hbWUsCisJCQkJCQlpbnQgbG9jYXRpb24pCit7 CisJTGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNoKGxjLCBjeHQtPnBhdGhOYW1lcykKKwl7CisJ CWlmIChzdHJjbXAoY29sbmFtZSwgKGNvbnN0IGNoYXIgKikgbGZpcnN0KGxjKSkgPT0gMCkKKwkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfQUxJQVMpLAor CQkJCQllcnJtc2coImR1cGxpY2F0ZSBKU09OX1RBQkxFIGNvbHVtbiBuYW1lOiAlcyIsIGNvbG5h bWUpLAorCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIGxvY2F0aW9uKSk7CisJ fQorCisJY3h0LT5wYXRoTmFtZXMgPSBsYXBwZW5kKGN4dC0+cGF0aE5hbWVzLCBjb2xuYW1lKTsK K30KKworc3RhdGljIHZvaWQKK3JlZ2lzdGVySnNvblRhYmxlUGF0aChKc29uVGFibGVQYXJzZUNv bnRleHQgKiBjeHQsIGNoYXIgKnBhdGhuYW1lLAorCQkJCQkgIGludCBsb2NhdGlvbikKK3sKKwlM aXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIGN4dC0+cGF0aE5hbWVzKQorCXsKKwkJaWYg KHN0cmNtcChwYXRobmFtZSwgKGNvbnN0IGNoYXIgKikgbGZpcnN0KGxjKSkgPT0gMCkKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfQUxJQVMpLAorCQkJ CQllcnJtc2coImR1cGxpY2F0ZSBKU09OX1RBQkxFIHBhdGggbmFtZTogJXMiLCBwYXRobmFtZSks CisJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgbG9jYXRpb24pKTsKKwl9CisK KwljeHQtPnBhdGhOYW1lcyA9IGxhcHBlbmQoY3h0LT5wYXRoTmFtZXMsIHBhdGhuYW1lKTsKK30K KworLyoKKyAqIFJlY3Vyc2l2ZWx5IHJlZ2lzdGVyIGFsbCBuZXN0ZWQgY29sdW1uIG5hbWVzIGlu IHRoZSBzaGFyZWQgY29sdW1ucy9wYXRoIG5hbWUKKyAqIGxpc3QuCisgKi8KK3N0YXRpYyB2b2lk CityZWdpc3RlckFsbEpzb25UYWJsZUNvbHVtbnNBbmRQYXRocyhKc29uVGFibGVQYXJzZUNvbnRl eHQgKiBjeHQsCisJCQkJCQkJCQlMaXN0ICpjb2x1bW5zKQoreworCUxpc3RDZWxsICAgKmxjOwor CisJZm9yZWFjaChsYywgY29sdW1ucykKKwl7CisJCUpzb25UYWJsZUNvbHVtbiAqanRjID0gY2Fz dE5vZGUoSnNvblRhYmxlQ29sdW1uLCBsZmlyc3QobGMpKTsKKworCQlpZiAoanRjLT5jb2x0eXBl ID09IEpUQ19ORVNURUQpCisJCXsKKwkJCWlmIChqdGMtPnBhdGhzcGVjLT5uYW1lKQorCQkJCXJl Z2lzdGVySnNvblRhYmxlUGF0aChjeHQsIGp0Yy0+cGF0aHNwZWMtPm5hbWUsCisJCQkJCQkJCQkg IGp0Yy0+cGF0aHNwZWMtPm5hbWVfbG9jYXRpb24pOworCisJCQlyZWdpc3RlckFsbEpzb25UYWJs ZUNvbHVtbnNBbmRQYXRocyhjeHQsIGp0Yy0+Y29sdW1ucyk7CisJCX0KKwkJZWxzZQorCQl7CisJ CQlyZWdpc3Rlckpzb25UYWJsZUNvbHVtbihjeHQsIGp0Yy0+bmFtZSwganRjLT5sb2NhdGlvbik7 CisJCX0KKwl9Cit9CisKKy8qIEdlbmVyYXRlIGEgbmV3IHVuaXF1ZSBKU09OX1RBQkxFIHBhdGgg bmFtZS4gKi8KK3N0YXRpYyBjaGFyICoKK2dlbmVyYXRlSnNvblRhYmxlUGF0aE5hbWUoSnNvblRh YmxlUGFyc2VDb250ZXh0ICogY3h0KQoreworCWNoYXIJCW5hbWVidWZbMzJdOworCWNoYXIJICAg Km5hbWUgPSBuYW1lYnVmOworCisJc25wcmludGYobmFtZWJ1Ziwgc2l6ZW9mKG5hbWVidWYpLCAi anNvbl90YWJsZV9wYXRoXyVkIiwKKwkJCSBjeHQtPnBhdGhOYW1lSWQrKyk7CisKKwluYW1lID0g cHN0cmR1cChuYW1lKTsKKwljeHQtPnBhdGhOYW1lcyA9IGxhcHBlbmQoY3h0LT5wYXRoTmFtZXMs IG5hbWUpOworCisJcmV0dXJuIG5hbWU7Cit9CisKKy8qIENvbGxlY3Qgc2libGluZyBwYXRoIG5h bWVzIGZyb20gcGxhbiB0byB0aGUgc3BlY2lmaWVkIGxpc3QuICovCitzdGF0aWMgdm9pZAorY29s bGVjdFNpYmxpbmdQYXRoc0luSnNvblRhYmxlUGxhbihKc29uVGFibGVQbGFuU3BlYyAqcGxhbiwg TGlzdCAqKnBhdGhzKQoreworCWlmIChwbGFuLT5wbGFuX3R5cGUgPT0gSlNUUF9TSU1QTEUpCisJ CSpwYXRocyA9IGxhcHBlbmQoKnBhdGhzLCBwbGFuLT5wYXRobmFtZSk7CisJZWxzZSBpZiAocGxh bi0+cGxhbl90eXBlID09IEpTVFBfSk9JTkVEKQorCXsKKwkJaWYgKHBsYW4tPmpvaW5fdHlwZSA9 PSBKU1RQX0pPSU5fSU5ORVIgfHwKKwkJCXBsYW4tPmpvaW5fdHlwZSA9PSBKU1RQX0pPSU5fT1VU RVIpCisJCXsKKwkJCUFzc2VydChwbGFuLT5wbGFuMS0+cGxhbl90eXBlID09IEpTVFBfU0lNUExF KTsKKwkJCSpwYXRocyA9IGxhcHBlbmQoKnBhdGhzLCBwbGFuLT5wbGFuMS0+cGF0aG5hbWUpOwor CQl9CisJCWVsc2UgaWYgKHBsYW4tPmpvaW5fdHlwZSA9PSBKU1RQX0pPSU5fQ1JPU1MgfHwKKwkJ CQkgcGxhbi0+am9pbl90eXBlID09IEpTVFBfSk9JTl9VTklPTikKKwkJeworCQkJY29sbGVjdFNp YmxpbmdQYXRoc0luSnNvblRhYmxlUGxhbihwbGFuLT5wbGFuMSwgcGF0aHMpOworCQkJY29sbGVj dFNpYmxpbmdQYXRoc0luSnNvblRhYmxlUGxhbihwbGFuLT5wbGFuMiwgcGF0aHMpOworCQl9CisJ CWVsc2UKKwkJCWVsb2coRVJST1IsICJpbnZhbGlkIEpTT05fVEFCTEUgam9pbiB0eXBlICVkIiwK KwkJCQkgcGxhbi0+am9pbl90eXBlKTsKKwl9Cit9CisKKy8qCisgKiBWYWxpZGF0ZSBjaGlsZCBK U09OX1RBQkxFIHBsYW4gYnkgY2hlY2tpbmcgdGhhdDoKKyAqICAtIGFsbCBuZXN0ZWQgY29sdW1u cyBoYXZlIHBhdGggbmFtZXMgc3BlY2lmaWVkCisgKiAgLSBhbGwgbmVzdGVkIGNvbHVtbnMgaGF2 ZSBjb3JyZXNwb25kaW5nIG5vZGUgaW4gdGhlIHNpYmxpbmcgcGxhbgorICogIC0gcGxhbiBkb2Vz IG5vdCBjb250YWluIGR1cGxpY2F0ZSBvciBleHRyYSBub2RlcworICovCitzdGF0aWMgdm9pZAor dmFsaWRhdGVKc29uVGFibGVDaGlsZFBsYW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uVGFibGVQ bGFuU3BlYyAqcGxhbiwKKwkJCQkJCSAgIExpc3QgKmNvbHVtbnMpCit7CisJTGlzdENlbGwgICAq bGMxOworCUxpc3QJICAgKnNpYmxpbmdzID0gTklMOworCWludAkJCW5jaGlsZHJlbiA9IDA7CisK KwlpZiAocGxhbikKKwkJY29sbGVjdFNpYmxpbmdQYXRoc0luSnNvblRhYmxlUGxhbihwbGFuLCAm c2libGluZ3MpOworCisJZm9yZWFjaChsYzEsIGNvbHVtbnMpCisJeworCQlKc29uVGFibGVDb2x1 bW4gKmp0YyA9IGNhc3ROb2RlKEpzb25UYWJsZUNvbHVtbiwgbGZpcnN0KGxjMSkpOworCisJCWlm IChqdGMtPmNvbHR5cGUgPT0gSlRDX05FU1RFRCkKKwkJeworCQkJTGlzdENlbGwgICAqbGMyOwor CQkJYm9vbAkJZm91bmQgPSBmYWxzZTsKKworCQkJaWYgKGp0Yy0+cGF0aHNwZWMtPm5hbWUgPT0g TlVMTCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9F UlJPUiksCisJCQkJCQllcnJtc2coIm5lc3RlZCBKU09OX1RBQkxFIGNvbHVtbnMgbXVzdCBjb250 YWluIgorCQkJCQkJCQkiIGFuIGV4cGxpY2l0IEFTIHBhdGhuYW1lIHNwZWNpZmljYXRpb24iCisJ CQkJCQkJCSIgaWYgYW4gZXhwbGljaXQgUExBTiBjbGF1c2UgaXMgdXNlZCIpLAorCQkJCQkJcGFy c2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwganRjLT5sb2NhdGlvbikpOworCisJCQkvKiBmaW5kIG5l c3RlZCBwYXRoIG5hbWUgaW4gdGhlIGxpc3Qgb2Ygc2libGluZyBwYXRoIG5hbWVzICovCisJCQlm b3JlYWNoKGxjMiwgc2libGluZ3MpCisJCQl7CisJCQkJaWYgKChmb3VuZCA9ICFzdHJjbXAoanRj LT5wYXRoc3BlYy0+bmFtZSwgbGZpcnN0KGxjMikpKSkKKwkJCQkJYnJlYWs7CisJCQl9CisKKwkJ CWlmICghZm91bmQpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9T WU5UQVhfRVJST1IpLAorCQkJCQkJZXJybXNnKCJpbnZhbGlkIEpTT05fVEFCTEUgc3BlY2lmaWNh dGlvbiIpLAorCQkJCQkJZXJyZGV0YWlsKCJQTEFOIGNsYXVzZSBmb3IgbmVzdGVkIHBhdGggJXMg d2FzIG5vdCBmb3VuZC4iLAorCQkJCQkJCQkgIGp0Yy0+cGF0aHNwZWMtPm5hbWUpLAorCQkJCQkJ cGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwganRjLT5sb2NhdGlvbikpOworCisJCQluY2hpbGRy ZW4rKzsKKwkJfQorCX0KKworCWlmIChsaXN0X2xlbmd0aChzaWJsaW5ncykgPiBuY2hpbGRyZW4p CisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJ CQkJZXJybXNnKCJpbnZhbGlkIEpTT05fVEFCTEUgcGxhbiBjbGF1c2UiKSwKKwkJCQllcnJkZXRh aWwoIlBMQU4gY2xhdXNlIGNvbnRhaW5zIHNvbWUgZXh0cmEgb3IgZHVwbGljYXRlIHNpYmxpbmcg bm9kZXMuIiksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgcGxhbiA/IHBsYW4tPmxv Y2F0aW9uIDogLTEpKTsKK30KKworc3RhdGljIEpzb25UYWJsZUNvbHVtbiAqCitmaW5kTmVzdGVk SnNvblRhYmxlQ29sdW1uKExpc3QgKmNvbHVtbnMsIGNvbnN0IGNoYXIgKnBhdGhuYW1lKQorewor CUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgY29sdW1ucykKKwl7CisJCUpzb25UYWJs ZUNvbHVtbiAqanRjID0gY2FzdE5vZGUoSnNvblRhYmxlQ29sdW1uLCBsZmlyc3QobGMpKTsKKwor CQlpZiAoanRjLT5jb2x0eXBlID09IEpUQ19ORVNURUQgJiYKKwkJCWp0Yy0+cGF0aHNwZWMtPm5h bWUgJiYKKwkJCSFzdHJjbXAoanRjLT5wYXRoc3BlYy0+bmFtZSwgcGF0aG5hbWUpKQorCQkJcmV0 dXJuIGp0YzsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIE5vZGUgKgordHJhbnNm b3JtTmVzdGVkSnNvblRhYmxlQ29sdW1uKEpzb25UYWJsZVBhcnNlQ29udGV4dCAqIGN4dCwgSnNv blRhYmxlQ29sdW1uICpqdGMsCisJCQkJCQkJICAgSnNvblRhYmxlUGxhblNwZWMgKnBsYW5zcGVj KQoreworCWlmIChqdGMtPnBhdGhzcGVjLT5uYW1lID09IE5VTEwpCisJeworCQlpZiAoY3h0LT50 YWJsZS0+cGxhbnNwZWMgIT0gTlVMTCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJIGVycm1zZygiaW52YWxpZCBKU09OX1RBQkxF IGV4cHJlc3Npb24iKSwKKwkJCQkJIGVycmRldGFpbCgiSlNPTl9UQUJMRSBwYXRoIG11c3QgY29u dGFpbiIKKwkJCQkJCQkgICAiIGV4cGxpY2l0IEFTIHBhdGhuYW1lIHNwZWNpZmljYXRpb24gaWYi CisJCQkJCQkJICAgIiBleHBsaWNpdCBQTEFOIGNsYXVzZSBpcyB1c2VkIiksCisJCQkJCSBwYXJz ZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIGp0Yy0+bG9jYXRpb24pKSk7CisKKwkJanRjLT5w YXRoc3BlYy0+bmFtZSA9IGdlbmVyYXRlSnNvblRhYmxlUGF0aE5hbWUoY3h0KTsKKwl9CisKKwly ZXR1cm4gKE5vZGUgKikgdHJhbnNmb3JtSnNvblRhYmxlQ29sdW1ucyhjeHQsIHBsYW5zcGVjLCBq dGMtPmNvbHVtbnMsCisJCQkJCQkJCQkJCSAganRjLT5wYXRoc3BlYyk7Cit9CisKK3N0YXRpYyBO b2RlICoKK21ha2VKc29uVGFibGVTaWJsaW5nSm9pbihib29sIGNyb3NzLCBOb2RlICpsbm9kZSwg Tm9kZSAqcm5vZGUpCit7CisJSnNvblRhYmxlU2libGluZyAqam9pbiA9IG1ha2VOb2RlKEpzb25U YWJsZVNpYmxpbmcpOworCisJam9pbi0+bGFyZyA9IGxub2RlOworCWpvaW4tPnJhcmcgPSBybm9k ZTsKKwlqb2luLT5jcm9zcyA9IGNyb3NzOworCisJcmV0dXJuIChOb2RlICopIGpvaW47Cit9CisK Ky8qCisgKiBSZWN1cnNpdmVseSB0cmFuc2Zvcm0gY2hpbGQgSlNPTl9UQUJMRSBwbGFuLgorICoK KyAqIERlZmF1bHQgcGxhbiBpcyB0cmFuc2Zvcm1lZCBpbnRvIGEgY3Jvc3MvdW5pb24gam9pbiBv ZiBpdHMgbmVzdGVkIGNvbHVtbnMuCisgKiBTaW1wbGUgYW5kIG91dGVyL2lubmVyIHBsYW5zIGFy ZSB0cmFuc2Zvcm1lZCBpbnRvIGEgSnNvblRhYmxlUGxhbiBieQorICogZmluZGluZyBhbmQgdHJh bnNmb3JtaW5nIGNvcnJlc3BvbmRpbmcgbmVzdGVkIGNvbHVtbi4KKyAqIFNpYmxpbmcgcGxhbnMg YXJlIHJlY3Vyc2l2ZWx5IHRyYW5zZm9ybWVkIGludG8gYSBKc29uVGFibGVTaWJsaW5nLgorICov CitzdGF0aWMgTm9kZSAqCit0cmFuc2Zvcm1Kc29uVGFibGVDaGlsZFBsYW4oSnNvblRhYmxlUGFy c2VDb250ZXh0ICogY3h0LAorCQkJCQkJCUpzb25UYWJsZVBsYW5TcGVjICpwbGFuLAorCQkJCQkJ CUxpc3QgKmNvbHVtbnMpCit7CisJSnNvblRhYmxlQ29sdW1uICpqdGMgPSBOVUxMOworCisJaWYg KCFwbGFuIHx8IHBsYW4tPnBsYW5fdHlwZSA9PSBKU1RQX0RFRkFVTFQpCisJeworCQkvKiB1bnNw ZWNpZmllZCBvciBkZWZhdWx0IHBsYW4gKi8KKwkJTm9kZQkgICAqcmVzID0gTlVMTDsKKwkJTGlz dENlbGwgICAqbGM7CisJCWJvb2wJCWNyb3NzID0gcGxhbiAmJiAocGxhbi0+am9pbl90eXBlICYg SlNUUF9KT0lOX0NST1NTKTsKKworCQkvKiB0cmFuc2Zvcm0gYWxsIG5lc3RlZCBjb2x1bW5zIGlu dG8gY3Jvc3MvdW5pb24gam9pbiAqLworCQlmb3JlYWNoKGxjLCBjb2x1bW5zKQorCQl7CisJCQlK c29uVGFibGVDb2x1bW4gKmNvbCA9IGNhc3ROb2RlKEpzb25UYWJsZUNvbHVtbiwgbGZpcnN0KGxj KSk7CisJCQlOb2RlCSAgICpub2RlOworCisJCQlpZiAoY29sLT5jb2x0eXBlICE9IEpUQ19ORVNU RUQpCisJCQkJY29udGludWU7CisKKwkJCW5vZGUgPSB0cmFuc2Zvcm1OZXN0ZWRKc29uVGFibGVD b2x1bW4oY3h0LCBjb2wsIHBsYW4pOworCisJCQkvKiBqb2luIHRyYW5zZm9ybWVkIG5vZGUgd2l0 aCBwcmV2aW91cyBzaWJsaW5nIG5vZGVzICovCisJCQlyZXMgPSByZXMgPyBtYWtlSnNvblRhYmxl U2libGluZ0pvaW4oY3Jvc3MsIHJlcywgbm9kZSkgOiBub2RlOworCQl9CisKKwkJcmV0dXJuIHJl czsKKwl9CisJZWxzZSBpZiAocGxhbi0+cGxhbl90eXBlID09IEpTVFBfU0lNUExFKQorCXsKKwkJ anRjID0gZmluZE5lc3RlZEpzb25UYWJsZUNvbHVtbihjb2x1bW5zLCBwbGFuLT5wYXRobmFtZSk7 CisJfQorCWVsc2UgaWYgKHBsYW4tPnBsYW5fdHlwZSA9PSBKU1RQX0pPSU5FRCkKKwl7CisJCWlm IChwbGFuLT5qb2luX3R5cGUgPT0gSlNUUF9KT0lOX0lOTkVSIHx8CisJCQlwbGFuLT5qb2luX3R5 cGUgPT0gSlNUUF9KT0lOX09VVEVSKQorCQl7CisJCQlBc3NlcnQocGxhbi0+cGxhbjEtPnBsYW5f dHlwZSA9PSBKU1RQX1NJTVBMRSk7CisJCQlqdGMgPSBmaW5kTmVzdGVkSnNvblRhYmxlQ29sdW1u KGNvbHVtbnMsIHBsYW4tPnBsYW4xLT5wYXRobmFtZSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlO b2RlCSAgICpub2RlMSA9IHRyYW5zZm9ybUpzb25UYWJsZUNoaWxkUGxhbihjeHQsIHBsYW4tPnBs YW4xLAorCQkJCQkJCQkJCQkJCQkJY29sdW1ucyk7CisJCQlOb2RlCSAgICpub2RlMiA9IHRyYW5z Zm9ybUpzb25UYWJsZUNoaWxkUGxhbihjeHQsIHBsYW4tPnBsYW4yLAorCQkJCQkJCQkJCQkJCQkJ Y29sdW1ucyk7CisKKwkJCXJldHVybiBtYWtlSnNvblRhYmxlU2libGluZ0pvaW4ocGxhbi0+am9p bl90eXBlID09IEpTVFBfSk9JTl9DUk9TUywKKwkJCQkJCQkJCQkJbm9kZTEsIG5vZGUyKTsKKwkJ fQorCX0KKwllbHNlCisJCWVsb2coRVJST1IsICJpbnZhbGlkIEpTT05fVEFCTEUgcGxhbiB0eXBl ICVkIiwgcGxhbi0+cGxhbl90eXBlKTsKKworCWlmICghanRjKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkgZXJybXNnKCJpbnZhbGlk IEpTT05fVEFCTEUgcGxhbiBjbGF1c2UiKSwKKwkJCQkgZXJyZGV0YWlsKCJQQVRIIG5hbWUgd2Fz ICVzIG5vdCBmb3VuZCBpbiBuZXN0ZWQgY29sdW1ucyBsaXN0LiIsCisJCQkJCQkgICBwbGFuLT5w YXRobmFtZSksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgcGxhbi0+bG9j YXRpb24pKSk7CisKKwlyZXR1cm4gdHJhbnNmb3JtTmVzdGVkSnNvblRhYmxlQ29sdW1uKGN4dCwg anRjLCBwbGFuKTsKK30KKworLyogQ2hlY2sgd2hldGhlciB0eXBlIGlzIGpzb24vanNvbmIsIGFy cmF5LCBvciByZWNvcmQuICovCitzdGF0aWMgYm9vbAordHlwZUlzQ29tcG9zaXRlKE9pZCB0eXBp ZCkKK3sKKwljaGFyCQl0eXB0eXBlOworCisJaWYgKHR5cGlkID09IEpTT05PSUQgfHwKKwkJdHlw aWQgPT0gSlNPTkJPSUQgfHwKKwkJdHlwaWQgPT0gUkVDT1JET0lEIHx8CisJCXR5cGVfaXNfYXJy YXkodHlwaWQpKQorCQlyZXR1cm4gdHJ1ZTsKKworCXR5cHR5cGUgPSBnZXRfdHlwdHlwZSh0eXBp ZCk7CisKKwlpZiAodHlwdHlwZSA9PSBUWVBUWVBFX0NPTVBPU0lURSkKKwkJcmV0dXJuIHRydWU7 CisKKwlpZiAodHlwdHlwZSA9PSBUWVBUWVBFX0RPTUFJTikKKwkJcmV0dXJuIHR5cGVJc0NvbXBv c2l0ZShnZXRCYXNlVHlwZSh0eXBpZCkpOworCisJcmV0dXJuIGZhbHNlOworfQorCisvKiBBcHBl bmQgdHJhbnNmb3JtZWQgbm9uLW5lc3RlZCBKU09OX1RBQkxFIGNvbHVtbnMgdG8gdGhlIFRhYmxl RnVuYyBub2RlICovCitzdGF0aWMgdm9pZAorYXBwZW5kSnNvblRhYmxlQ29sdW1ucyhKc29uVGFi bGVQYXJzZUNvbnRleHQgKiBjeHQsIExpc3QgKmNvbHVtbnMpCit7CisJTGlzdENlbGwgICAqY29s OworCVBhcnNlU3RhdGUgKnBzdGF0ZSA9IGN4dC0+cHN0YXRlOworCUpzb25UYWJsZSAgKmp0ID0g Y3h0LT50YWJsZTsKKwlUYWJsZUZ1bmMgICp0ZiA9IGN4dC0+dGFibGVmdW5jOworCWJvb2wJCW9y ZGluYWxpdHlfZm91bmQgPSBmYWxzZTsKKwlKc29uQmVoYXZpb3IgKm9uX2Vycm9yID0ganQtPm9u X2Vycm9yOworCWJvb2wJCWVycm9yT25FcnJvciA9IG9uX2Vycm9yICYmCisJCW9uX2Vycm9yLT5i dHlwZSA9PSBKU09OX0JFSEFWSU9SX0VSUk9SOworCisJZm9yZWFjaChjb2wsIGNvbHVtbnMpCisJ eworCQlKc29uVGFibGVDb2x1bW4gKnJhd2MgPSBjYXN0Tm9kZShKc29uVGFibGVDb2x1bW4sIGxm aXJzdChjb2wpKTsKKwkJT2lkCQkJdHlwaWQ7CisJCWludDMyCQl0eXBtb2Q7CisJCU5vZGUJICAg KmNvbGV4cHI7CisKKwkJaWYgKHJhd2MtPm5hbWUpCisJCQl0Zi0+Y29sbmFtZXMgPSBsYXBwZW5k KHRmLT5jb2xuYW1lcywKKwkJCQkJCQkJICAgbWFrZVN0cmluZyhwc3RyZHVwKHJhd2MtPm5hbWUp KSk7CisKKwkJLyoKKwkJICogRGV0ZXJtaW5lIHRoZSB0eXBlIGFuZCB0eXBtb2QgZm9yIHRoZSBu ZXcgY29sdW1uLiBGT1IgT1JESU5BTElUWQorCQkgKiBjb2x1bW5zIGFyZSBJTlRFR0VSIGJ5IHN0 YW5kYXJkOyB0aGUgb3RoZXJzIGFyZSB1c2VyLXNwZWNpZmllZC4KKwkJICovCisJCXN3aXRjaCAo cmF3Yy0+Y29sdHlwZSkKKwkJeworCQkJY2FzZSBKVENfRk9SX09SRElOQUxJVFk6CisJCQkJaWYg KG9yZGluYWxpdHlfZm91bmQpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCSBlcnJtc2coImNhbm5vdCB1c2UgbW9yZSB0 aGFuIG9uZSBGT1IgT1JESU5BTElUWSBjb2x1bW4iKSwKKwkJCQkJCQkgcGFyc2VyX2VycnBvc2l0 aW9uKHBzdGF0ZSwgcmF3Yy0+bG9jYXRpb24pKSk7CisJCQkJb3JkaW5hbGl0eV9mb3VuZCA9IHRy dWU7CisJCQkJY29sZXhwciA9IE5VTEw7CisJCQkJdHlwaWQgPSBJTlQ0T0lEOworCQkJCXR5cG1v ZCA9IC0xOworCQkJCWJyZWFrOworCisJCQljYXNlIEpUQ19SRUdVTEFSOgorCQkJCXR5cGVuYW1l VHlwZUlkQW5kTW9kKHBzdGF0ZSwgcmF3Yy0+dHlwZU5hbWUsICZ0eXBpZCwgJnR5cG1vZCk7CisK KwkJCQkvKgorCQkJCSAqIFVzZSBpbXBsaWNpdCBGT1JNQVQgSlNPTiBmb3IgY29tcG9zaXRlIHR5 cGVzIChhcnJheXMgYW5kCisJCQkJICogcmVjb3Jkcykgb3IgaWYgYSBub24tZGVmYXVsdCBXUkFQ UEVSIC8gUVVPVEVTIGJlaGF2aW9yCisJCQkJICogaXMgc3BlY2lmaWVkLgorCQkJCSAqLworCQkJ CWlmICh0eXBlSXNDb21wb3NpdGUodHlwaWQpIHx8CisJCQkJCXJhd2MtPnF1b3RlcyAhPSBKU19R VU9URVNfVU5TUEVDIHx8CisJCQkJCXJhd2MtPndyYXBwZXIgIT0gSlNXX1VOU1BFQykKKwkJCQkJ cmF3Yy0+Y29sdHlwZSA9IEpUQ19GT1JNQVRURUQ7CisKKwkJCQkvKiBGQUxMVEhST1VHSCAqLwor CQkJY2FzZSBKVENfRk9STUFUVEVEOgorCQkJY2FzZSBKVENfRVhJU1RTOgorCQkJCXsKKwkJCQkJ Tm9kZQkgICAqamU7CisJCQkJCUNhc2VUZXN0RXhwciAqcGFyYW0gPSBtYWtlTm9kZShDYXNlVGVz dEV4cHIpOworCisJCQkJCXBhcmFtLT5jb2xsYXRpb24gPSBJbnZhbGlkT2lkOworCQkJCQlwYXJh bS0+dHlwZUlkID0gY3h0LT5jb250ZXh0SXRlbVR5cGlkOworCQkJCQlwYXJhbS0+dHlwZU1vZCA9 IC0xOworCisJCQkJCWplID0gdHJhbnNmb3JtSnNvblRhYmxlQ29sdW1uKHJhd2MsIChOb2RlICop IHBhcmFtLAorCQkJCQkJCQkJCQkJICBOSUwsIGVycm9yT25FcnJvcik7CisKKwkJCQkJY29sZXhw ciA9IHRyYW5zZm9ybUV4cHIocHN0YXRlLCBqZSwgRVhQUl9LSU5EX0ZST01fRlVOQ1RJT04pOwor CQkJCQlhc3NpZ25fZXhwcl9jb2xsYXRpb25zKHBzdGF0ZSwgY29sZXhwcik7CisKKwkJCQkJdHlw aWQgPSBleHByVHlwZShjb2xleHByKTsKKwkJCQkJdHlwbW9kID0gZXhwclR5cG1vZChjb2xleHBy KTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQljYXNlIEpUQ19ORVNURUQ6CisJCQkJY29udGlu dWU7CisKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJPUiwgInVua25vd24gSlNPTl9UQUJMRSBj b2x1bW4gdHlwZTogJWQiLCByYXdjLT5jb2x0eXBlKTsKKwkJCQlicmVhazsKKwkJfQorCisJCXRm LT5jb2x0eXBlcyA9IGxhcHBlbmRfb2lkKHRmLT5jb2x0eXBlcywgdHlwaWQpOworCQl0Zi0+Y29s dHlwbW9kcyA9IGxhcHBlbmRfaW50KHRmLT5jb2x0eXBtb2RzLCB0eXBtb2QpOworCQl0Zi0+Y29s Y29sbGF0aW9ucyA9IGxhcHBlbmRfb2lkKHRmLT5jb2xjb2xsYXRpb25zLCBnZXRfdHlwY29sbGF0 aW9uKHR5cGlkKSk7CisJCXRmLT5jb2x2YWxleHBycyA9IGxhcHBlbmQodGYtPmNvbHZhbGV4cHJz LCBjb2xleHByKTsKKwl9Cit9CisKKy8qCisgKiBDcmVhdGUgdHJhbnNmb3JtZWQgSlNPTl9UQUJM RSBwYXJlbnQgcGxhbiBub2RlIGJ5IGFwcGVuZGluZyBhbGwgbm9uLW5lc3RlZAorICogY29sdW1u cyB0byB0aGUgVGFibGVGdW5jIG5vZGUgYW5kIHJlbWVtYmVyaW5nIHRoZWlyIGluZGljZXMgaW4g dGhlCisgKiBjb2x2YWxleHBycyBsaXN0LgorICovCitzdGF0aWMgSnNvblRhYmxlUGxhbiAqCitt YWtlUGFyZW50SnNvblRhYmxlUGxhbihKc29uVGFibGVQYXJzZUNvbnRleHQgKiBjeHQsIEpzb25U YWJsZVBhdGhTcGVjICpwYXRoc3BlYywKKwkJCQkJCUxpc3QgKmNvbHVtbnMpCit7CisJSnNvblRh YmxlUGxhbiAqcGxhbiA9IG1ha2VOb2RlKEpzb25UYWJsZVBsYW4pOworCUpzb25CZWhhdmlvciAq b25fZXJyb3IgPSBjeHQtPnRhYmxlLT5vbl9lcnJvcjsKKwljaGFyCQkgKnBhdGhzdHJpbmc7CisJ Q29uc3QJCSAqdmFsdWU7CisKKwlBc3NlcnQoSXNBKHBhdGhzcGVjLT5zdHJpbmcsIEFfQ29uc3Qp KTsKKwlwYXRoc3RyaW5nID0gY2FzdE5vZGUoQV9Db25zdCwgcGF0aHNwZWMtPnN0cmluZyktPnZh bC5zdmFsLnN2YWw7CisJdmFsdWUgPSBtYWtlQ29uc3QoSlNPTlBBVEhPSUQsIC0xLCBJbnZhbGlk T2lkLCAtMSwKKwkJCQkJICBEaXJlY3RGdW5jdGlvbkNhbGwxKGpzb25wYXRoX2luLAorCQkJCQkJ CQkJCSAgQ1N0cmluZ0dldERhdHVtKHBhdGhzdHJpbmcpKSwKKwkJCQkJICBmYWxzZSwgZmFsc2Up OworCXBsYW4tPnBhdGggPSBtYWtlSnNvblRhYmxlUGF0aCh2YWx1ZSwgcGF0aHNwZWMtPm5hbWUp OworCisJLyogc2F2ZSBzdGFydCBvZiBjb2x1bW4gcmFuZ2UgKi8KKwlwbGFuLT5jb2xNaW4gPSBs aXN0X2xlbmd0aChjeHQtPnRhYmxlZnVuYy0+Y29sdmFsZXhwcnMpOworCisJYXBwZW5kSnNvblRh YmxlQ29sdW1ucyhjeHQsIGNvbHVtbnMpOworCisJLyogc2F2ZSBlbmQgb2YgY29sdW1uIHJhbmdl ICovCisJcGxhbi0+Y29sTWF4ID0gbGlzdF9sZW5ndGgoY3h0LT50YWJsZWZ1bmMtPmNvbHZhbGV4 cHJzKSAtIDE7CisKKwlwbGFuLT5lcnJvck9uRXJyb3IgPSBvbl9lcnJvciAmJiBvbl9lcnJvci0+ YnR5cGUgPT0gSlNPTl9CRUhBVklPUl9FUlJPUjsKKworCXJldHVybiBwbGFuOworfQorCitzdGF0 aWMgSnNvblRhYmxlUGxhbiAqCit0cmFuc2Zvcm1Kc29uVGFibGVDb2x1bW5zKEpzb25UYWJsZVBh cnNlQ29udGV4dCAqIGN4dCwKKwkJCQkJCSAgSnNvblRhYmxlUGxhblNwZWMgKnBsYW5zcGVjLAor CQkJCQkJICBMaXN0ICpjb2x1bW5zLAorCQkJCQkJICBKc29uVGFibGVQYXRoU3BlYyAqcGF0aHNw ZWMpCit7CisJSnNvblRhYmxlUGxhbiAqcGxhbjsKKwlKc29uVGFibGVQbGFuU3BlYyAqY2hpbGRQ bGFuU3BlYzsKKwlib29sCQlkZWZhdWx0UGxhbiA9IHBsYW5zcGVjID09IE5VTEwgfHwKKwkJcGxh bnNwZWMtPnBsYW5fdHlwZSA9PSBKU1RQX0RFRkFVTFQ7CisKKwlpZiAoZGVmYXVsdFBsYW4pCisJ CWNoaWxkUGxhblNwZWMgPSBwbGFuc3BlYzsKKwllbHNlCisJeworCQkvKiB2YWxpZGF0ZSBwYXJl bnQgYW5kIGNoaWxkIHBsYW5zICovCisJCUpzb25UYWJsZVBsYW5TcGVjICpwYXJlbnRQbGFuU3Bl YzsKKworCQlpZiAocGxhbnNwZWMtPnBsYW5fdHlwZSA9PSBKU1RQX0pPSU5FRCkKKwkJeworCQkJ aWYgKHBsYW5zcGVjLT5qb2luX3R5cGUgIT0gSlNUUF9KT0lOX0lOTkVSICYmCisJCQkJcGxhbnNw ZWMtPmpvaW5fdHlwZSAhPSBKU1RQX0pPSU5fT1VURVIpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2coImludmFs aWQgSlNPTl9UQUJMRSBwbGFuIGNsYXVzZSIpLAorCQkJCQkJIGVycmRldGFpbCgiRXhwZWN0ZWQg SU5ORVIgb3IgT1VURVIuIiksCisJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRl LCBwbGFuc3BlYy0+bG9jYXRpb24pKSk7CisKKwkJCXBhcmVudFBsYW5TcGVjID0gcGxhbnNwZWMt PnBsYW4xOworCQkJY2hpbGRQbGFuU3BlYyA9IHBsYW5zcGVjLT5wbGFuMjsKKworCQkJQXNzZXJ0 KHBhcmVudFBsYW5TcGVjLT5wbGFuX3R5cGUgIT0gSlNUUF9KT0lORUQpOworCQkJQXNzZXJ0KHBh cmVudFBsYW5TcGVjLT5wYXRobmFtZSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlwYXJlbnRQbGFu U3BlYyA9IHBsYW5zcGVjOworCQkJY2hpbGRQbGFuU3BlYyA9IE5VTEw7CisJCX0KKworCQlpZiAo c3RyY21wKHBhcmVudFBsYW5TcGVjLT5wYXRobmFtZSwgcGF0aHNwZWMtPm5hbWUpICE9IDApCisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJ CQkJCSBlcnJtc2coImludmFsaWQgSlNPTl9UQUJMRSBwbGFuIiksCisJCQkJCSBlcnJkZXRhaWwo IlBBVEggbmFtZSBtaXNtYXRjaDogZXhwZWN0ZWQgJXMgYnV0ICVzIGlzIGdpdmVuLiIsCisJCQkJ CQkJICAgcGF0aHNwZWMtPm5hbWUsIHBhcmVudFBsYW5TcGVjLT5wYXRobmFtZSksCisJCQkJCSBw YXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIHBsYW5zcGVjLT5sb2NhdGlvbikpKTsKKwor CQl2YWxpZGF0ZUpzb25UYWJsZUNoaWxkUGxhbihjeHQtPnBzdGF0ZSwgY2hpbGRQbGFuU3BlYywg Y29sdW1ucyk7CisJfQorCisJLyogdHJhbnNmb3JtIG9ubHkgbm9uLW5lc3RlZCBjb2x1bW5zICov CisJcGxhbiA9IG1ha2VQYXJlbnRKc29uVGFibGVQbGFuKGN4dCwgcGF0aHNwZWMsIGNvbHVtbnMp OworCisJaWYgKGNoaWxkUGxhblNwZWMgfHwgZGVmYXVsdFBsYW4pCisJeworCQkvKiB0cmFuc2Zv cm0gcmVjdXJzaXZlbHkgbmVzdGVkIGNvbHVtbnMgKi8KKwkJcGxhbi0+Y2hpbGQgPSB0cmFuc2Zv cm1Kc29uVGFibGVDaGlsZFBsYW4oY3h0LCBjaGlsZFBsYW5TcGVjLCBjb2x1bW5zKTsKKwkJaWYg KHBsYW4tPmNoaWxkKQorCQkJcGxhbi0+b3V0ZXJKb2luID0gcGxhbnNwZWMgPT0gTlVMTCB8fAor CQkJCShwbGFuc3BlYy0+am9pbl90eXBlICYgSlNUUF9KT0lOX09VVEVSKTsKKwkJLyogZWxzZTog ZGVmYXVsdCBwbGFuIGNhc2UsIG5vIGNoaWxkcmVuIGZvdW5kICovCisJfQorCisJcmV0dXJuIHBs YW47Cit9CisKKy8qCisgKiB0cmFuc2Zvcm1Kc29uVGFibGUgLQorICoJCQlUcmFuc2Zvcm0gYSBy YXcgSnNvblRhYmxlIGludG8gVGFibGVGdW5jLgorICoKKyAqIFRyYW5zZm9ybSB0aGUgZG9jdW1l bnQtZ2VuZXJhdGluZyBleHByZXNzaW9uLCB0aGUgcm93LWdlbmVyYXRpbmcgZXhwcmVzc2lvbiwK KyAqIHRoZSBjb2x1bW4tZ2VuZXJhdGluZyBleHByZXNzaW9ucywgYW5kIHRoZSBkZWZhdWx0IHZh bHVlIGV4cHJlc3Npb25zLgorICovCitQYXJzZU5hbWVzcGFjZUl0ZW0gKgordHJhbnNmb3JtSnNv blRhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvblRhYmxlICpqdCkKK3sKKwlKc29uVGFibGVQ YXJzZUNvbnRleHQgY3h0OworCVRhYmxlRnVuYyAgKnRmID0gbWFrZU5vZGUoVGFibGVGdW5jKTsK KwlKc29uRnVuY0V4cHIgKmpmZSA9IG1ha2VOb2RlKEpzb25GdW5jRXhwcik7CisJSnNvbkV4cHIg ICAqamU7CisJSnNvblRhYmxlUGxhblNwZWMgKnBsYW4gPSBqdC0+cGxhbnNwZWM7CisJSnNvblRh YmxlUGF0aFNwZWMgKnJvb3RQYXRoU3BlYyA9IGp0LT5wYXRoc3BlYzsKKwlib29sCQlpc19sYXRl cmFsOworCisJQXNzZXJ0KElzQShyb290UGF0aFNwZWMtPnN0cmluZywgQV9Db25zdCkgJiYKKwkJ ICAgY2FzdE5vZGUoQV9Db25zdCwgcm9vdFBhdGhTcGVjLT5zdHJpbmcpLT52YWwubm9kZS50eXBl ID09IFRfU3RyaW5nKTsKKworCWN4dC5wc3RhdGUgPSBwc3RhdGU7CisJY3h0LnRhYmxlID0ganQ7 CisJY3h0LnRhYmxlZnVuYyA9IHRmOworCWN4dC5wYXRoTmFtZXMgPSBOSUw7CisJY3h0LnBhdGhO YW1lSWQgPSAwOworCisJaWYgKHJvb3RQYXRoU3BlYy0+bmFtZSkKKwkJcmVnaXN0ZXJKc29uVGFi bGVQYXRoKCZjeHQsIHJvb3RQYXRoU3BlYy0+bmFtZSwKKwkJCQkJCQkgIHJvb3RQYXRoU3BlYy0+ bmFtZV9sb2NhdGlvbik7CisJZWxzZQorCXsKKwkJaWYgKGp0LT5wbGFuc3BlYyAhPSBOVUxMKQor CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAor CQkJCQkgZXJybXNnKCJpbnZhbGlkIEpTT05fVEFCTEUgZXhwcmVzc2lvbiIpLAorCQkJCQkgZXJy ZGV0YWlsKCJKU09OX1RBQkxFIHBhdGggbXVzdCBjb250YWluIgorCQkJCQkJCSAgICIgZXhwbGlj aXQgQVMgcGF0aG5hbWUgc3BlY2lmaWNhdGlvbiBpZiIKKwkJCQkJCQkgICAiIGV4cGxpY2l0IFBM QU4gY2xhdXNlIGlzIHVzZWQiKSwKKwkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHJv b3RQYXRoU3BlYy0+bG9jYXRpb24pKSk7CisKKwkJcm9vdFBhdGhTcGVjLT5uYW1lID0gZ2VuZXJh dGVKc29uVGFibGVQYXRoTmFtZSgmY3h0KTsKKwl9CisKKwlyZWdpc3RlckFsbEpzb25UYWJsZUNv bHVtbnNBbmRQYXRocygmY3h0LCBqdC0+Y29sdW1ucyk7CisKKwlqZmUtPm9wID0gSlNPTl9UQUJM RV9PUDsKKwlqZmUtPmNvbnRleHRfaXRlbSA9CWp0LT5jb250ZXh0X2l0ZW07CisJamZlLT5wYXRo c3BlYyA9IChOb2RlICopIHJvb3RQYXRoU3BlYy0+c3RyaW5nOworCWpmZS0+cGF0aG5hbWUgPSBy b290UGF0aFNwZWMtPm5hbWU7CisJamZlLT5wYXNzaW5nID0ganQtPnBhc3Npbmc7CisJamZlLT5v bl9lbXB0eSA9IE5VTEw7CisJamZlLT5vbl9lcnJvciA9IGp0LT5vbl9lcnJvcjsKKwlqZmUtPmxv Y2F0aW9uID0ganQtPmxvY2F0aW9uOworCisJLyoKKwkgKiBXZSBtYWtlIGxhdGVyYWxfb25seSBu YW1lcyBvZiB0aGlzIGxldmVsIHZpc2libGUsIHdoZXRoZXIgb3Igbm90IHRoZQorCSAqIFJhbmdl VGFibGVGdW5jIGlzIGV4cGxpY2l0bHkgbWFya2VkIExBVEVSQUwuICBUaGlzIGlzIG5lZWRlZCBm b3IgU1FMCisJICogc3BlYyBjb21wbGlhbmNlIGFuZCBzZWVtcyB1c2VmdWwgb24gY29udmVuaWVu Y2UgZ3JvdW5kcyBmb3IgYWxsCisJICogZnVuY3Rpb25zIGluIEZST00uCisJICoKKwkgKiAoTEFU RVJBTCBjYW4ndCBuZXN0IHdpdGhpbiBhIHNpbmdsZSBwc3RhdGUgbGV2ZWwsIHNvIHdlIGRvbid0 IG5lZWQKKwkgKiBzYXZlL3Jlc3RvcmUgbG9naWMgaGVyZS4pCisJICovCisJQXNzZXJ0KCFwc3Rh dGUtPnBfbGF0ZXJhbF9hY3RpdmUpOworCXBzdGF0ZS0+cF9sYXRlcmFsX2FjdGl2ZSA9IHRydWU7 CisKKwl0Zi0+ZnVuY3R5cGUgPSBURlRfSlNPTl9UQUJMRTsKKwl0Zi0+ZG9jZXhwciA9IHRyYW5z Zm9ybUV4cHIocHN0YXRlLCAoTm9kZSAqKSBqZmUsIEVYUFJfS0lORF9GUk9NX0ZVTkNUSU9OKTsK KworCWN4dC5jb250ZXh0SXRlbVR5cGlkID0gZXhwclR5cGUodGYtPmRvY2V4cHIpOworCisJdGYt PnBsYW4gPSAoTm9kZSAqKSB0cmFuc2Zvcm1Kc29uVGFibGVDb2x1bW5zKCZjeHQsIHBsYW4sIGp0 LT5jb2x1bW5zLAorCQkJCQkJCQkJCQkJICByb290UGF0aFNwZWMpOworCisJLyogQWxzbyBzYXZl IGEgY29weSBvZiB0aGUgUEFTU0lORyBhcmd1bWVudHMgaW4gdGhlIFRhYmxlRnVuYyBub2RlLiAq LworCWplID0gKEpzb25FeHByICopIHRmLT5kb2NleHByOworCXRmLT5wYXNzaW5ndmFsZXhwcnMg PSBjb3B5T2JqZWN0KGplLT5wYXNzaW5nX3ZhbHVlcyk7CisKKwl0Zi0+b3JkaW5hbGl0eWNvbCA9 IC0xOwkJLyogdW5kZWZpbmUgb3JkaW5hbGl0eSBjb2x1bW4gbnVtYmVyICovCisJdGYtPmxvY2F0 aW9uID0ganQtPmxvY2F0aW9uOworCisJcHN0YXRlLT5wX2xhdGVyYWxfYWN0aXZlID0gZmFsc2U7 CisKKwkvKgorCSAqIE1hcmsgdGhlIFJURSBhcyBMQVRFUkFMIGlmIHRoZSB1c2VyIHNhaWQgTEFU RVJBTCBleHBsaWNpdGx5LCBvciBpZgorCSAqIHRoZXJlIGFyZSBhbnkgbGF0ZXJhbCBjcm9zcy1y ZWZlcmVuY2VzIGluIGl0LgorCSAqLworCWlzX2xhdGVyYWwgPSBqdC0+bGF0ZXJhbCB8fCBjb250 YWluX3ZhcnNfb2ZfbGV2ZWwoKE5vZGUgKikgdGYsIDApOworCisJcmV0dXJuIGFkZFJhbmdlVGFi bGVFbnRyeUZvclRhYmxlRnVuYyhwc3RhdGUsCisJCQkJCQkJCQkJICB0ZiwganQtPmFsaWFzLCBp c19sYXRlcmFsLCB0cnVlKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMKaW5kZXgg NjVlNTRhYmRkMS4uYzJlM2U2NWNjNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMK QEAgLTIwNzcsMTMgKzIwNzcsMTUgQEAgYWRkUmFuZ2VUYWJsZUVudHJ5Rm9yVGFibGVGdW5jKFBh cnNlU3RhdGUgKnBzdGF0ZSwKIAlydGUtPnJlbGlkID0gSW52YWxpZE9pZDsKIAlydGUtPnN1YnF1 ZXJ5ID0gTlVMTDsKIAlydGUtPnRhYmxlZnVuYyA9IHRmOwotCXJ0ZS0+dGFibGVmdW5jX25hbWUg PSBwc3RyZHVwKCJYTUxUQUJMRSIpOworCXJ0ZS0+dGFibGVmdW5jX25hbWUgPSBwc3RyZHVwKHRm LT5mdW5jdHlwZSA9PSBURlRfWE1MVEFCTEUgPworCQkJCQkJCQkgICJYTUxUQUJMRSIgOiAiSlNP Tl9UQUJMRSIpOwogCXJ0ZS0+Y29sdHlwZXMgPSB0Zi0+Y29sdHlwZXM7CiAJcnRlLT5jb2x0eXBt b2RzID0gdGYtPmNvbHR5cG1vZHM7CiAJcnRlLT5jb2xjb2xsYXRpb25zID0gdGYtPmNvbGNvbGxh dGlvbnM7CiAJcnRlLT5hbGlhcyA9IGFsaWFzOwogCi0JcmVmbmFtZSA9IGFsaWFzID8gYWxpYXMt PmFsaWFzbmFtZSA6IHBzdHJkdXAoInhtbHRhYmxlIik7CisJcmVmbmFtZSA9IGFsaWFzID8gYWxp YXMtPmFsaWFzbmFtZSA6CisJCXBzdHJkdXAodGYtPmZ1bmN0eXBlID09IFRGVF9YTUxUQUJMRSA/ ICJ4bWx0YWJsZSIgOiAianNvbl90YWJsZSIpOwogCWVyZWYgPSBhbGlhcyA/IGNvcHlPYmplY3Qo YWxpYXMpIDogbWFrZUFsaWFzKHJlZm5hbWUsIE5JTCk7CiAJbnVtYWxpYXNlcyA9IGxpc3RfbGVu Z3RoKGVyZWYtPmNvbG5hbWVzKTsKIApAQCAtMjA5Niw3ICsyMDk4LDcgQEAgYWRkUmFuZ2VUYWJs ZUVudHJ5Rm9yVGFibGVGdW5jKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJZXJlcG9ydChFUlJPUiwK IAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfQ09MVU1OX1JFRkVSRU5DRSksCiAJCQkJIGVy cm1zZygiJXMgZnVuY3Rpb24gaGFzICVkIGNvbHVtbnMgYXZhaWxhYmxlIGJ1dCAlZCBjb2x1bW5z IHNwZWNpZmllZCIsCi0JCQkJCQkiWE1MVEFCTEUiLAorCQkJCQkJdGYtPmZ1bmN0eXBlID09IFRG VF9YTUxUQUJMRSA/ICJYTUxUQUJMRSIgOiAiSlNPTl9UQUJMRSIsCiAJCQkJCQlsaXN0X2xlbmd0 aCh0Zi0+Y29sbmFtZXMpLCBudW1hbGlhc2VzKSkpOwogCiAJcnRlLT5lcmVmID0gZXJlZjsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYyBiL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV90YXJnZXQuYwppbmRleCBlYTVhYzZiYWZlLi5hMzMxZWEzMjcwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCkBAIC0yMDAyLDYgKzIwMDIsOSBAQCBGaWd1cmVDb2xu YW1lSW50ZXJuYWwoTm9kZSAqbm9kZSwgY2hhciAqKm5hbWUpCiAJCQkJY2FzZSBKU09OX1ZBTFVF X09QOgogCQkJCQkqbmFtZSA9ICJqc29uX3ZhbHVlIjsKIAkJCQkJcmV0dXJuIDI7CisJCQkJY2Fz ZSBKU09OX1RBQkxFX09QOgorCQkJCQkqbmFtZSA9ICJqc29uX3RhYmxlIjsKKwkJCQkJcmV0dXJu IDI7CiAJCQl9CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBh dGhfZXhlYy5jCmluZGV4IGNlYzBmM2RkNjUuLmM2OTM4YmZhNTcgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2pzb25wYXRoX2V4ZWMuYwpAQCAtNjEsMTAgKzYxLDEyIEBACiAKICNpbmNsdWRlICJjYXRh bG9nL3BnX2NvbGxhdGlvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1 ZGUgImV4ZWN1dG9yL2V4ZWNFeHByLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUg ImxpYi9zdHJpbmdpbmZvLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9k ZXMvbWlzY25vZGVzLmgiCisjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAi cmVnZXgvcmVnZXguaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0 aWxzL2RhdGUuaCIKQEAgLTc1LDYgKzc3LDggQEAKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNp bmNsdWRlICJ1dGlscy9qc29uLmgiCiAjaW5jbHVkZSAidXRpbHMvanNvbnBhdGguaCIKKyNpbmNs dWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2lu Y2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgogI2luY2x1ZGUgInV0aWxzL3ZhcmxlbmEuaCIKIApA QCAtMTU5LDYgKzE2Myw2MCBAQCB0eXBlZGVmIHN0cnVjdCBKc29uVmFsdWVMaXN0SXRlcmF0b3IK IAlMaXN0Q2VsbCAgICpuZXh0OwogfSBKc29uVmFsdWVMaXN0SXRlcmF0b3I7CiAKKy8qIFN0cnVj dHVyZXMgZm9yIEpTT05fVEFCTEUgZXhlY3V0aW9uICAqLworCit0eXBlZGVmIGVudW0gSnNvblRh YmxlUGxhblN0YXRlVHlwZQoreworCUpTT05fVEFCTEVfU0NBTl9TVEFURSA9IDAsCisJSlNPTl9U QUJMRV9KT0lOX1NUQVRFLAorfQkJCUpzb25UYWJsZVBsYW5TdGF0ZVR5cGU7CisKK3R5cGVkZWYg c3RydWN0IEpzb25UYWJsZVBsYW5TdGF0ZQoreworCUpzb25UYWJsZVBsYW5TdGF0ZVR5cGUgdHlw ZTsKKworCXN0cnVjdCBKc29uVGFibGVQbGFuU3RhdGUgKnBhcmVudDsKKwlzdHJ1Y3QgSnNvblRh YmxlUGxhblN0YXRlICpuZXN0ZWQ7Cit9CQkJSnNvblRhYmxlUGxhblN0YXRlOworCit0eXBlZGVm IHN0cnVjdCBKc29uVGFibGVTY2FuU3RhdGUKK3sKKwlKc29uVGFibGVQbGFuU3RhdGUgcGxhbjsK KworCU1lbW9yeUNvbnRleHQgbWN4dDsKKwlKc29uUGF0aCAgICpwYXRoOworCUxpc3QJICAgKmFy Z3M7CisJSnNvblZhbHVlTGlzdCBmb3VuZDsKKwlKc29uVmFsdWVMaXN0SXRlcmF0b3IgaXRlcjsK KwlEYXR1bQkJY3VycmVudDsKKwlpbnQJCQlvcmRpbmFsOworCWJvb2wJCWN1cnJlbnRJc051bGw7 CisJYm9vbAkJb3V0ZXJKb2luOworCWJvb2wJCWVycm9yT25FcnJvcjsKKwlib29sCQlhZHZhbmNl TmVzdGVkOworCWJvb2wJCXJlc2V0OworfSBKc29uVGFibGVTY2FuU3RhdGU7CisKK3R5cGVkZWYg c3RydWN0IEpzb25UYWJsZUpvaW5TdGF0ZQoreworCUpzb25UYWJsZVBsYW5TdGF0ZSBwbGFuOwor CisJSnNvblRhYmxlUGxhblN0YXRlICpsZWZ0OworCUpzb25UYWJsZVBsYW5TdGF0ZSAqcmlnaHQ7 CisJYm9vbAkJY3Jvc3M7CisJYm9vbAkJYWR2YW5jZVJpZ2h0OworfSBKc29uVGFibGVKb2luU3Rh dGU7CisKKy8qIHJhbmRvbSBudW1iZXIgdG8gaWRlbnRpZnkgSnNvblRhYmxlRXhlY0NvbnRleHQg Ki8KKyNkZWZpbmUgSlNPTl9UQUJMRV9FWEVDX0NPTlRFWFRfTUFHSUMJCTQxODM1Mjg2NworCit0 eXBlZGVmIHN0cnVjdCBKc29uVGFibGVFeGVjQ29udGV4dAoreworCWludAkJCW1hZ2ljOworCUpz b25UYWJsZVNjYW5TdGF0ZSAqKmNvbGV4cHJzY2FuczsKKwlKc29uVGFibGVTY2FuU3RhdGUgKnJv b3Q7Cit9CQkJSnNvblRhYmxlRXhlY0NvbnRleHQ7CisKIC8qIHN0cmljdC9sYXggZmxhZ3MgaXMg ZGVjb21wb3NlZCBpbnRvIGZvdXIgW3VuXXdyYXAvZXJyb3IgZmxhZ3MgKi8KICNkZWZpbmUganNw U3RyaWN0QWJzZW5jZU9mRXJyb3JzKGN4dCkJKCEoY3h0KS0+bGF4TW9kZSkKICNkZWZpbmUganNw QXV0b1Vud3JhcChjeHQpCQkJCSgoY3h0KS0+bGF4TW9kZSkKQEAgLTI1OCw2ICszMTYsNyBAQCBz dGF0aWMgSnNvblBhdGhFeGVjUmVzdWx0IGdldEFycmF5SW5kZXgoSnNvblBhdGhFeGVjQ29udGV4 dCAqY3h0LAogCQkJCQkJCQkJCUpzb25QYXRoSXRlbSAqanNwLCBKc29uYlZhbHVlICpqYiwgaW50 MzIgKmluZGV4KTsKIHN0YXRpYyBKc29uQmFzZU9iamVjdEluZm8gc2V0QmFzZU9iamVjdChKc29u UGF0aEV4ZWNDb250ZXh0ICpjeHQsCiAJCQkJCQkJCQkJSnNvbmJWYWx1ZSAqamJ2LCBpbnQzMiBp ZCk7CitzdGF0aWMgdm9pZCBKc29uVmFsdWVMaXN0Q2xlYXIoSnNvblZhbHVlTGlzdCAqanZsKTsK IHN0YXRpYyB2b2lkIEpzb25WYWx1ZUxpc3RBcHBlbmQoSnNvblZhbHVlTGlzdCAqanZsLCBKc29u YlZhbHVlICpqYnYpOwogc3RhdGljIGludAlKc29uVmFsdWVMaXN0TGVuZ3RoKGNvbnN0IEpzb25W YWx1ZUxpc3QgKmp2bCk7CiBzdGF0aWMgYm9vbCBKc29uVmFsdWVMaXN0SXNFbXB0eShKc29uVmFs dWVMaXN0ICpqdmwpOwpAQCAtMjc1LDYgKzMzNCwzMiBAQCBzdGF0aWMgSnNvbmJWYWx1ZSAqd3Jh cEl0ZW1zSW5BcnJheShjb25zdCBKc29uVmFsdWVMaXN0ICppdGVtcyk7CiBzdGF0aWMgaW50CWNv bXBhcmVEYXRldGltZShEYXR1bSB2YWwxLCBPaWQgdHlwaWQxLCBEYXR1bSB2YWwyLCBPaWQgdHlw aWQyLAogCQkJCQkJCWJvb2wgdXNlVHosIGJvb2wgKmNhc3RfZXJyb3IpOwogCisKK3N0YXRpYyBK c29uVGFibGVQbGFuU3RhdGUgKiBKc29uVGFibGVJbml0UGxhblN0YXRlKEpzb25UYWJsZUV4ZWND b250ZXh0ICogY3h0LAorCQkJCQkJCQkJCQkJICAgTm9kZSAqcGxhbiwKKwkJCQkJCQkJCQkJCSAg IEpzb25UYWJsZVBsYW5TdGF0ZSAqIHBhcmVudCk7CitzdGF0aWMgYm9vbCBKc29uVGFibGVQbGFu TmV4dFJvdyhKc29uVGFibGVQbGFuU3RhdGUgKiBzdGF0ZSk7CitzdGF0aWMgYm9vbCBKc29uVGFi bGVTY2FuTmV4dFJvdyhKc29uVGFibGVTY2FuU3RhdGUgKnNjYW4pOworCitzdGF0aWMgdm9pZCBK c29uVGFibGVJbml0T3BhcXVlKFRhYmxlRnVuY1NjYW5TdGF0ZSAqc3RhdGUsIGludCBuYXR0cyk7 CitzdGF0aWMgdm9pZCBKc29uVGFibGVTZXREb2N1bWVudChUYWJsZUZ1bmNTY2FuU3RhdGUgKnN0 YXRlLCBEYXR1bSB2YWx1ZSk7CitzdGF0aWMgYm9vbCBKc29uVGFibGVGZXRjaFJvdyhUYWJsZUZ1 bmNTY2FuU3RhdGUgKnN0YXRlKTsKK3N0YXRpYyBEYXR1bSBKc29uVGFibGVHZXRWYWx1ZShUYWJs ZUZ1bmNTY2FuU3RhdGUgKnN0YXRlLCBpbnQgY29sbnVtLAorCQkJCSAgT2lkIHR5cGlkLCBpbnQz MiB0eXBtb2QsIGJvb2wgKmlzbnVsbCk7CitzdGF0aWMgdm9pZCBKc29uVGFibGVEZXN0cm95T3Bh cXVlKFRhYmxlRnVuY1NjYW5TdGF0ZSAqc3RhdGUpOworCitjb25zdCBUYWJsZUZ1bmNSb3V0aW5l IEpzb25iVGFibGVSb3V0aW5lID0KK3sKKwlKc29uVGFibGVJbml0T3BhcXVlLAorCUpzb25UYWJs ZVNldERvY3VtZW50LAorCU5VTEwsCisJTlVMTCwKKwlOVUxMLAorCUpzb25UYWJsZUZldGNoUm93 LAorCUpzb25UYWJsZUdldFZhbHVlLAorCUpzb25UYWJsZURlc3Ryb3lPcGFxdWUKK307CisKIC8q KioqKioqKioqKioqKioqKiogVXNlciBpbnRlcmZhY2UgdG8gSnNvblBhdGggZXhlY3V0b3IgKioq KioqKioqKioqKioqKioqKiovCiAKIC8qCkBAIC0yNjYxLDYgKzI3NDYsMTMgQEAgc2V0QmFzZU9i amVjdChKc29uUGF0aEV4ZWNDb250ZXh0ICpjeHQsIEpzb25iVmFsdWUgKmpidiwgaW50MzIgaWQp CiAJcmV0dXJuIGJhc2VPYmplY3Q7CiB9CiAKK3N0YXRpYyB2b2lkCitKc29uVmFsdWVMaXN0Q2xl YXIoSnNvblZhbHVlTGlzdCAqanZsKQoreworCWp2bC0+c2luZ2xldG9uID0gTlVMTDsKKwlqdmwt Pmxpc3QgPSBOVUxMOworfQorCiBzdGF0aWMgdm9pZAogSnNvblZhbHVlTGlzdEFwcGVuZChKc29u VmFsdWVMaXN0ICpqdmwsIEpzb25iVmFsdWUgKmpidikKIHsKQEAgLTMxOTYsMyArMzI4OCw0NTgg QEAgSnNvblBhdGhWYWx1ZShEYXR1bSBqYiwgSnNvblBhdGggKmpwLCBib29sICplbXB0eSwgYm9v bCAqZXJyb3IsIExpc3QgKnZhcnMpCiAKIAlyZXR1cm4gcmVzOwogfQorCisvKioqKioqKioqKioq KioqKioqKioqKioqIEpTT05fVEFCTEUgZnVuY3Rpb25zICoqKioqKioqKioqKioqKioqKioqKioq KioqKi8KKworLyoKKyAqIFJldHVybnMgcHJpdmF0ZSBkYXRhIGZyb20gZXhlY3V0b3Igc3RhdGUu IEVuc3VyZSB2YWxpZGl0eSBieSBjaGVjayB3aXRoCisgKiBNQUdJQyBudW1iZXIuCisgKi8KK3N0 YXRpYyBpbmxpbmUgSnNvblRhYmxlRXhlY0NvbnRleHQgKgorR2V0SnNvblRhYmxlRXhlY0NvbnRl eHQoVGFibGVGdW5jU2NhblN0YXRlICpzdGF0ZSwgY29uc3QgY2hhciAqZm5hbWUpCit7CisJSnNv blRhYmxlRXhlY0NvbnRleHQgKnJlc3VsdDsKKworCWlmICghSXNBKHN0YXRlLCBUYWJsZUZ1bmNT Y2FuU3RhdGUpKQorCQllbG9nKEVSUk9SLCAiJXMgY2FsbGVkIHdpdGggaW52YWxpZCBUYWJsZUZ1 bmNTY2FuU3RhdGUiLCBmbmFtZSk7CisJcmVzdWx0ID0gKEpzb25UYWJsZUV4ZWNDb250ZXh0ICop IHN0YXRlLT5vcGFxdWU7CisJaWYgKHJlc3VsdC0+bWFnaWMgIT0gSlNPTl9UQUJMRV9FWEVDX0NP TlRFWFRfTUFHSUMpCisJCWVsb2coRVJST1IsICIlcyBjYWxsZWQgd2l0aCBpbnZhbGlkIFRhYmxl RnVuY1NjYW5TdGF0ZSIsIGZuYW1lKTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qIFJlY3Vy c2l2ZWx5IGluaXRpYWxpemUgSlNPTl9UQUJMRSBzY2FuIC8gam9pbiBzdGF0ZSAqLworc3RhdGlj IEpzb25UYWJsZUpvaW5TdGF0ZSAqCitKc29uVGFibGVJbml0Sm9pblN0YXRlKEpzb25UYWJsZUV4 ZWNDb250ZXh0ICogY3h0LCBKc29uVGFibGVTaWJsaW5nICpwbGFuLAorCQkJCQkgICBKc29uVGFi bGVQbGFuU3RhdGUgKiBwYXJlbnQpCit7CisJSnNvblRhYmxlSm9pblN0YXRlICpqb2luID0gcGFs bG9jMChzaXplb2YoKmpvaW4pKTsKKworCWpvaW4tPnBsYW4udHlwZSA9IEpTT05fVEFCTEVfSk9J Tl9TVEFURTsKKwkvKiBwYXJlbnQgYW5kIG5lc3RlZCBub3Qgc2V0LiAqLworCisJam9pbi0+Y3Jv c3MgPSBwbGFuLT5jcm9zczsKKwlqb2luLT5sZWZ0ID0gSnNvblRhYmxlSW5pdFBsYW5TdGF0ZShj eHQsIHBsYW4tPmxhcmcsIHBhcmVudCk7CisJam9pbi0+cmlnaHQgPSBKc29uVGFibGVJbml0UGxh blN0YXRlKGN4dCwgcGxhbi0+cmFyZywgcGFyZW50KTsKKworCXJldHVybiBqb2luOworfQorCitz dGF0aWMgSnNvblRhYmxlU2NhblN0YXRlICoKK0pzb25UYWJsZUluaXRTY2FuU3RhdGUoSnNvblRh YmxlRXhlY0NvbnRleHQgKiBjeHQsCisJCQkJCSAgIEpzb25UYWJsZVBsYW4gKnBsYW4sCisJCQkJ CSAgIEpzb25UYWJsZVBsYW5TdGF0ZSAqcGFyZW50LAorCQkJCQkgICBMaXN0ICphcmdzLCBNZW1v cnlDb250ZXh0IG1jeHQpCit7CisJSnNvblRhYmxlU2NhblN0YXRlICpzY2FuID0gcGFsbG9jMChz aXplb2YoKnNjYW4pKTsKKwlpbnQJCQlpOworCisJc2Nhbi0+cGxhbi50eXBlID0gSlNPTl9UQUJM RV9TQ0FOX1NUQVRFOworCXNjYW4tPnBsYW4ucGFyZW50ID0gcGFyZW50OworCisJc2Nhbi0+b3V0 ZXJKb2luID0gcGxhbi0+b3V0ZXJKb2luOworCXNjYW4tPmVycm9yT25FcnJvciA9IHBsYW4tPmVy cm9yT25FcnJvcjsKKwlzY2FuLT5wYXRoID0gRGF0dW1HZXRKc29uUGF0aFAocGxhbi0+cGF0aC0+ dmFsdWUtPmNvbnN0dmFsdWUpOworCXNjYW4tPmFyZ3MgPSBhcmdzOworCXNjYW4tPm1jeHQgPSBB bGxvY1NldENvbnRleHRDcmVhdGUobWN4dCwgIkpzb25UYWJsZUV4ZWNDb250ZXh0IiwKKwkJCQkJ CQkJCSAgIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCisJLyoKKwkgKiBTZXQgYWZ0ZXIgc2V0 dGluZ3Mgc2Nhbi0+YXJncyBhbmQgc2Nhbi0+bWN4dCwgYmVjYXVzZSB0aGUgcmVjdXJzaXZlCisJ ICogY2FsbCB3YW50cyB0byB1c2UgdGhvc2UgdmFsdWVzLgorCSAqLworCXNjYW4tPnBsYW4ubmVz dGVkID0gcGxhbi0+Y2hpbGQgPworCQlKc29uVGFibGVJbml0UGxhblN0YXRlKGN4dCwgcGxhbi0+ Y2hpbGQsIChKc29uVGFibGVQbGFuU3RhdGUgKikgc2NhbikgOgorCQlOVUxMOworCisJc2Nhbi0+ Y3VycmVudCA9IFBvaW50ZXJHZXREYXR1bShOVUxMKTsKKwlzY2FuLT5jdXJyZW50SXNOdWxsID0g dHJ1ZTsKKworCWZvciAoaSA9IHBsYW4tPmNvbE1pbjsgaSA8PSBwbGFuLT5jb2xNYXg7IGkrKykK KwkJY3h0LT5jb2xleHByc2NhbnNbaV0gPSBzY2FuOworCisJcmV0dXJuIHNjYW47Cit9CisKKy8q IFJlY3Vyc2l2ZWx5IGluaXRpYWxpemUgSlNPTl9UQUJMRSBzY2FuIHN0YXRlICovCitzdGF0aWMg SnNvblRhYmxlUGxhblN0YXRlICoKK0pzb25UYWJsZUluaXRQbGFuU3RhdGUoSnNvblRhYmxlRXhl Y0NvbnRleHQgKiBjeHQsIE5vZGUgKnBsYW4sCisJCQkJCSAgIEpzb25UYWJsZVBsYW5TdGF0ZSAq IHBhcmVudCkKK3sKKwlKc29uVGFibGVQbGFuU3RhdGUgKnN0YXRlOworCisJaWYgKElzQShwbGFu LCBKc29uVGFibGVTaWJsaW5nKSkKKwl7CisJCUpzb25UYWJsZVNpYmxpbmcgKmpvaW4gPSAoSnNv blRhYmxlU2libGluZyAqKSBwbGFuOworCisJCXN0YXRlID0gKEpzb25UYWJsZVBsYW5TdGF0ZSAq KQorCQkJSnNvblRhYmxlSW5pdEpvaW5TdGF0ZShjeHQsIGpvaW4sIHBhcmVudCk7CisJfQorCWVs c2UKKwl7CisJCUpzb25UYWJsZVBsYW4gKnNjYW4gPSBjYXN0Tm9kZShKc29uVGFibGVQbGFuLCBw bGFuKTsKKwkJSnNvblRhYmxlU2NhblN0YXRlICpwYXJlbnRfc2NhbiA9IChKc29uVGFibGVTY2Fu U3RhdGUgKikgcGFyZW50OworCisJCUFzc2VydChwYXJlbnRfc2Nhbik7CisJCXN0YXRlID0gKEpz b25UYWJsZVBsYW5TdGF0ZSAqKQorCQkJSnNvblRhYmxlSW5pdFNjYW5TdGF0ZShjeHQsIHNjYW4s IHBhcmVudCwgcGFyZW50X3NjYW4tPmFyZ3MsCisJCQkJCQkJCSAgIHBhcmVudF9zY2FuLT5tY3h0 KTsKKwl9CisKKwlyZXR1cm4gc3RhdGU7Cit9CisKKy8qCisgKiBKc29uVGFibGVJbml0T3BhcXVl CisgKgkJRmlsbCBpbiBUYWJsZUZ1bmNTY2FuU3RhdGUtPm9wYXF1ZSBmb3IgSnNvblRhYmxlIHBy b2Nlc3NvcgorICovCitzdGF0aWMgdm9pZAorSnNvblRhYmxlSW5pdE9wYXF1ZShUYWJsZUZ1bmNT Y2FuU3RhdGUgKnN0YXRlLCBpbnQgbmF0dHMpCit7CisJSnNvblRhYmxlRXhlY0NvbnRleHQgKmN4 dDsKKwlQbGFuU3RhdGUgICpwcyA9ICZzdGF0ZS0+c3MucHM7CisJVGFibGVGdW5jU2NhbiAqdGZz ID0gY2FzdE5vZGUoVGFibGVGdW5jU2NhbiwgcHMtPnBsYW4pOworCVRhYmxlRnVuYyAgKnRmID0g dGZzLT50YWJsZWZ1bmM7CisJSnNvblRhYmxlUGxhbiAqcm9vdCA9IGNhc3ROb2RlKEpzb25UYWJs ZVBsYW4sIHRmLT5wbGFuKTsKKwlKc29uRXhwciAgICpqZSA9IGNhc3ROb2RlKEpzb25FeHByLCB0 Zi0+ZG9jZXhwcik7CisJTGlzdAkgICAqYXJncyA9IE5JTDsKKworCWN4dCA9IHBhbGxvYzAoc2l6 ZW9mKEpzb25UYWJsZUV4ZWNDb250ZXh0KSk7CisJY3h0LT5tYWdpYyA9IEpTT05fVEFCTEVfRVhF Q19DT05URVhUX01BR0lDOworCisJaWYgKHN0YXRlLT5wYXNzaW5ndmFsZXhwcnMpCisJeworCQlM aXN0Q2VsbCAgICpleHBybGM7CisJCUxpc3RDZWxsICAgKm5hbWVsYzsKKworCQlBc3NlcnQobGlz dF9sZW5ndGgoc3RhdGUtPnBhc3Npbmd2YWxleHBycykgPT0KKwkJCSAgIGxpc3RfbGVuZ3RoKGpl LT5wYXNzaW5nX25hbWVzKSk7CisJCWZvcmJvdGgoZXhwcmxjLCBzdGF0ZS0+cGFzc2luZ3ZhbGV4 cHJzLAorCQkJCW5hbWVsYywgamUtPnBhc3NpbmdfbmFtZXMpCisJCXsKKwkJCUV4cHJTdGF0ZSAg KnN0YXRlID0gbGZpcnN0X25vZGUoRXhwclN0YXRlLCBleHBybGMpOworCQkJU3RyaW5nCSAgICpu YW1lID0gbGZpcnN0X25vZGUoU3RyaW5nLCBuYW1lbGMpOworCQkJSnNvblBhdGhWYXJpYWJsZSAq dmFyID0gcGFsbG9jKHNpemVvZigqdmFyKSk7CisKKwkJCXZhci0+bmFtZSA9IHBzdHJkdXAobmFt ZS0+c3ZhbCk7CisJCQl2YXItPnR5cGlkID0gZXhwclR5cGUoKE5vZGUgKikgc3RhdGUtPmV4cHIp OworCQkJdmFyLT50eXBtb2QgPSBleHByVHlwbW9kKChOb2RlICopIHN0YXRlLT5leHByKTsKKwor CQkJLyoKKwkJCSAqIEV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGFuZCBzYXZlIHRoZSB2YWx1ZSB0 byBiZSByZXR1cm5lZCBieQorCQkJICogR2V0SnNvblBhdGhWYXIoKS4KKwkJCSAqLworCQkJdmFy LT52YWx1ZSA9IEV4ZWNFdmFsRXhwcihzdGF0ZSwgcHMtPnBzX0V4cHJDb250ZXh0LAorCQkJCQkJ CQkJICAmdmFyLT5pc251bGwpOworCisJCQlhcmdzID0gbGFwcGVuZChhcmdzLCB2YXIpOworCQl9 CisJfQorCisJY3h0LT5jb2xleHByc2NhbnMgPSBwYWxsb2Moc2l6ZW9mKEpzb25UYWJsZVNjYW5T dGF0ZSAqKSAqCisJCQkJCQkJICAgbGlzdF9sZW5ndGgodGYtPmNvbHZhbGV4cHJzKSk7CisKKwlj eHQtPnJvb3QgPSBKc29uVGFibGVJbml0U2NhblN0YXRlKGN4dCwgcm9vdCwgTlVMTCwgYXJncywK KwkJCQkJCQkJCSAgIEN1cnJlbnRNZW1vcnlDb250ZXh0KTsKKwlzdGF0ZS0+b3BhcXVlID0gY3h0 OworfQorCisvKiBSZXNldCBzY2FuIGl0ZXJhdG9yIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGl0 ZW0gbGlzdCAqLworc3RhdGljIHZvaWQKK0pzb25UYWJsZVJlc2NhbihKc29uVGFibGVTY2FuU3Rh dGUgKnNjYW4pCit7CisJSnNvblZhbHVlTGlzdEluaXRJdGVyYXRvcigmc2Nhbi0+Zm91bmQsICZz Y2FuLT5pdGVyKTsKKwlzY2FuLT5jdXJyZW50ID0gUG9pbnRlckdldERhdHVtKE5VTEwpOworCXNj YW4tPmN1cnJlbnRJc051bGwgPSB0cnVlOworCXNjYW4tPmFkdmFuY2VOZXN0ZWQgPSBmYWxzZTsK KwlzY2FuLT5vcmRpbmFsID0gMDsKK30KKworLyogUmVzZXQgY29udGV4dCBpdGVtIG9mIGEgc2Nh biwgZXhlY3V0ZSBKU09OIHBhdGggYW5kIHJlc2V0IGEgc2NhbiAqLworc3RhdGljIHZvaWQKK0pz b25UYWJsZVJlc2V0Q29udGV4dEl0ZW0oSnNvblRhYmxlU2NhblN0YXRlICpzY2FuLCBEYXR1bSBp dGVtKQoreworCU1lbW9yeUNvbnRleHQgb2xkY3h0OworCUpzb25QYXRoRXhlY1Jlc3VsdCByZXM7 CisJSnNvbmIJICAgKmpzID0gKEpzb25iICopIERhdHVtR2V0SnNvbmJQKGl0ZW0pOworCisJSnNv blZhbHVlTGlzdENsZWFyKCZzY2FuLT5mb3VuZCk7CisKKwlNZW1vcnlDb250ZXh0UmVzZXRPbmx5 KHNjYW4tPm1jeHQpOworCisJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHNjYW4tPm1j eHQpOworCisJcmVzID0gZXhlY3V0ZUpzb25QYXRoKHNjYW4tPnBhdGgsIHNjYW4tPmFyZ3MsCisJ CQkJCQkgIEdldEpzb25QYXRoVmFyLCBDb3VudEpzb25QYXRoVmFycywKKwkJCQkJCSAganMsIHNj YW4tPmVycm9yT25FcnJvciwgJnNjYW4tPmZvdW5kLAorCQkJCQkJICBmYWxzZSAvKiBGSVhNRSAq LyApOworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CisKKwlpZiAoanBlcklzRXJy b3IocmVzKSkKKwl7CisJCUFzc2VydCghc2Nhbi0+ZXJyb3JPbkVycm9yKTsKKwkJSnNvblZhbHVl TGlzdENsZWFyKCZzY2FuLT5mb3VuZCk7CS8qIEVNUFRZIE9OIEVSUk9SIGNhc2UgKi8KKwl9CisK KwlKc29uVGFibGVSZXNjYW4oc2Nhbik7Cit9CisKKy8qCisgKiBKc29uVGFibGVTZXREb2N1bWVu dAorICoJCUluc3RhbGwgdGhlIGlucHV0IGRvY3VtZW50CisgKi8KK3N0YXRpYyB2b2lkCitKc29u VGFibGVTZXREb2N1bWVudChUYWJsZUZ1bmNTY2FuU3RhdGUgKnN0YXRlLCBEYXR1bSB2YWx1ZSkK K3sKKwlKc29uVGFibGVFeGVjQ29udGV4dCAqY3h0ID0KKwkJR2V0SnNvblRhYmxlRXhlY0NvbnRl eHQoc3RhdGUsICJKc29uVGFibGVTZXREb2N1bWVudCIpOworCisJSnNvblRhYmxlUmVzZXRDb250 ZXh0SXRlbShjeHQtPnJvb3QsIHZhbHVlKTsKK30KKworLyogUmVjdXJzaXZlbHkgcmVzZXQgc2Nh biBhbmQgaXRzIGNoaWxkIG5vZGVzICovCitzdGF0aWMgdm9pZAorSnNvblRhYmxlUmVzY2FuUmVj dXJzaXZlKEpzb25UYWJsZVBsYW5TdGF0ZSAqIHN0YXRlKQoreworCWlmIChzdGF0ZS0+dHlwZSA9 PSBKU09OX1RBQkxFX0pPSU5fU1RBVEUpCisJeworCQlKc29uVGFibGVKb2luU3RhdGUgKmpvaW4g PSAoSnNvblRhYmxlSm9pblN0YXRlICopIHN0YXRlOworCisJCUpzb25UYWJsZVJlc2NhblJlY3Vy c2l2ZShqb2luLT5sZWZ0KTsKKwkJSnNvblRhYmxlUmVzY2FuUmVjdXJzaXZlKGpvaW4tPnJpZ2h0 KTsKKwkJam9pbi0+YWR2YW5jZVJpZ2h0ID0gZmFsc2U7CisJfQorCWVsc2UKKwl7CisJCUpzb25U YWJsZVNjYW5TdGF0ZSAqc2NhbiA9IChKc29uVGFibGVTY2FuU3RhdGUgKikgc3RhdGU7CisKKwkJ QXNzZXJ0KHN0YXRlLT50eXBlID09IEpTT05fVEFCTEVfU0NBTl9TVEFURSk7CisJCUpzb25UYWJs ZVJlc2NhbihzY2FuKTsKKwkJaWYgKHNjYW4tPnBsYW4ubmVzdGVkKQorCQkJSnNvblRhYmxlUmVz Y2FuUmVjdXJzaXZlKHNjYW4tPnBsYW4ubmVzdGVkKTsKKwl9Cit9CisKKy8qCisgKiBGZXRjaCBu ZXh0IHJvdyBmcm9tIGEgY3Jvc3MvdW5pb24gam9pbmVkIHNjYW4uCisgKgorICogUmV0dXJucyBm YWxzZSBhdCB0aGUgZW5kIG9mIGEgc2NhbiwgdHJ1ZSBvdGhlcndpc2UuCisgKi8KK3N0YXRpYyBi b29sCitKc29uVGFibGVQbGFuTmV4dFJvdyhKc29uVGFibGVQbGFuU3RhdGUgKiBzdGF0ZSkKK3sK KwlKc29uVGFibGVKb2luU3RhdGUgKmpvaW47CisKKwlpZiAoc3RhdGUtPnR5cGUgPT0gSlNPTl9U QUJMRV9TQ0FOX1NUQVRFKQorCQlyZXR1cm4gSnNvblRhYmxlU2Nhbk5leHRSb3coKEpzb25UYWJs ZVNjYW5TdGF0ZSAqKSBzdGF0ZSk7CisKKwlqb2luID0gKEpzb25UYWJsZUpvaW5TdGF0ZSAqKSBz dGF0ZTsKKwlpZiAoam9pbi0+YWR2YW5jZVJpZ2h0KQorCXsKKwkJLyogZmV0Y2ggbmV4dCBpbm5l ciByb3cgKi8KKwkJaWYgKEpzb25UYWJsZVBsYW5OZXh0Um93KGpvaW4tPnJpZ2h0KSkKKwkJCXJl dHVybiB0cnVlOworCisJCS8qIGlubmVyIHJvd3MgYXJlIGV4aGF1c3RlZCAqLworCQlpZiAoam9p bi0+Y3Jvc3MpCisJCQlqb2luLT5hZHZhbmNlUmlnaHQgPSBmYWxzZTsgLyogbmV4dCBvdXRlciBy b3cgKi8KKwkJZWxzZQorCQkJcmV0dXJuIGZhbHNlOwkJLyogZW5kIG9mIHNjYW4gKi8KKwl9CisK Kwl3aGlsZSAoIWpvaW4tPmFkdmFuY2VSaWdodCkKKwl7CisJCS8qIGZldGNoIG5leHQgb3V0ZXIg cm93ICovCisJCWJvb2wJCW1vcmUgPSBKc29uVGFibGVQbGFuTmV4dFJvdyhqb2luLT5sZWZ0KTsK KworCQlpZiAoam9pbi0+Y3Jvc3MpCisJCXsKKwkJCWlmICghbW9yZSkKKwkJCQlyZXR1cm4gZmFs c2U7CS8qIGVuZCBvZiBzY2FuICovCisKKwkJCUpzb25UYWJsZVJlc2NhblJlY3Vyc2l2ZShqb2lu LT5yaWdodCk7CisKKwkJCWlmICghSnNvblRhYmxlUGxhbk5leHRSb3coam9pbi0+cmlnaHQpKQor CQkJCWNvbnRpbnVlOwkJLyogbmV4dCBvdXRlciByb3cgKi8KKworCQkJam9pbi0+YWR2YW5jZVJp Z2h0ID0gdHJ1ZTsJLyogbmV4dCBpbm5lciByb3cgKi8KKwkJfQorCQllbHNlIGlmICghbW9yZSkK KwkJeworCQkJaWYgKCFKc29uVGFibGVQbGFuTmV4dFJvdyhqb2luLT5yaWdodCkpCisJCQkJcmV0 dXJuIGZhbHNlOwkvKiBlbmQgb2Ygc2NhbiAqLworCisJCQlqb2luLT5hZHZhbmNlUmlnaHQgPSB0 cnVlOwkvKiBuZXh0IGlubmVyIHJvdyAqLworCQl9CisKKwkJYnJlYWs7CisJfQorCisJcmV0dXJu IHRydWU7Cit9CisKKy8qIFJlY3Vyc2l2ZWx5IHNldCAncmVzZXQnIGZsYWcgb2Ygc2NhbiBhbmQg aXRzIGNoaWxkIG5vZGVzICovCitzdGF0aWMgdm9pZAorSnNvblRhYmxlUGxhblJlc2V0KEpzb25U YWJsZVBsYW5TdGF0ZSAqIHN0YXRlKQoreworCWlmIChzdGF0ZS0+dHlwZSA9PSBKU09OX1RBQkxF X0pPSU5fU1RBVEUpCisJeworCQlKc29uVGFibGVKb2luU3RhdGUgKmpvaW4gPSAoSnNvblRhYmxl Sm9pblN0YXRlICopIHN0YXRlOworCisJCUpzb25UYWJsZVBsYW5SZXNldChqb2luLT5sZWZ0KTsK KwkJSnNvblRhYmxlUGxhblJlc2V0KGpvaW4tPnJpZ2h0KTsKKwkJam9pbi0+YWR2YW5jZVJpZ2h0 ID0gZmFsc2U7CisJfQorCWVsc2UKKwl7CisJCUpzb25UYWJsZVNjYW5TdGF0ZSAqc2NhbjsKKwor CQlBc3NlcnQoc3RhdGUtPnR5cGUgPT0gSlNPTl9UQUJMRV9TQ0FOX1NUQVRFKTsKKwkJc2NhbiA9 IChKc29uVGFibGVTY2FuU3RhdGUgKikgc3RhdGU7CisJCXNjYW4tPnJlc2V0ID0gdHJ1ZTsKKwkJ c2Nhbi0+YWR2YW5jZU5lc3RlZCA9IGZhbHNlOworCisJCWlmIChzY2FuLT5wbGFuLm5lc3RlZCkK KwkJCUpzb25UYWJsZVBsYW5SZXNldChzY2FuLT5wbGFuLm5lc3RlZCk7CisJfQorfQorCisvKgor ICogRmV0Y2ggbmV4dCByb3cgZnJvbSBhIHNpbXBsZSBzY2FuIHdpdGggb3V0ZXIvaW5uZXIgam9p bmVkIG5lc3RlZCBzdWJzY2Fucy4KKyAqCisgKiBSZXR1cm5zIGZhbHNlIGF0IHRoZSBlbmQgb2Yg YSBzY2FuLCB0cnVlIG90aGVyd2lzZS4KKyAqLworc3RhdGljIGJvb2wKK0pzb25UYWJsZVNjYW5O ZXh0Um93KEpzb25UYWJsZVNjYW5TdGF0ZSAqc2NhbikKK3sKKwkvKiByZXNldCBjb250ZXh0IGl0 ZW0gaWYgcmVxdWVzdGVkICovCisJaWYgKHNjYW4tPnJlc2V0KQorCXsKKwkJSnNvblRhYmxlU2Nh blN0YXRlICpwYXJlbnRfc2NhbiA9CisJCQkoSnNvblRhYmxlU2NhblN0YXRlICopIHNjYW4tPnBs YW4ucGFyZW50OworCisJCUFzc2VydChwYXJlbnRfc2NhbiAmJiAhcGFyZW50X3NjYW4tPmN1cnJl bnRJc051bGwpOworCQlKc29uVGFibGVSZXNldENvbnRleHRJdGVtKHNjYW4sIHBhcmVudF9zY2Fu LT5jdXJyZW50KTsKKwkJc2Nhbi0+cmVzZXQgPSBmYWxzZTsKKwl9CisKKwlpZiAoc2Nhbi0+YWR2 YW5jZU5lc3RlZCkKKwl7CisJCS8qIGZldGNoIG5leHQgbmVzdGVkIHJvdyAqLworCQlzY2FuLT5h ZHZhbmNlTmVzdGVkID0gSnNvblRhYmxlUGxhbk5leHRSb3coc2Nhbi0+cGxhbi5uZXN0ZWQpOwor CisJCWlmIChzY2FuLT5hZHZhbmNlTmVzdGVkKQorCQkJcmV0dXJuIHRydWU7CisJfQorCisJZm9y ICg7OykKKwl7CisJCS8qIGZldGNoIG5leHQgcm93ICovCisJCUpzb25iVmFsdWUgKmpidiA9IEpz b25WYWx1ZUxpc3ROZXh0KCZzY2FuLT5mb3VuZCwgJnNjYW4tPml0ZXIpOworCQlNZW1vcnlDb250 ZXh0IG9sZGN4dDsKKworCQlpZiAoIWpidikKKwkJeworCQkJc2Nhbi0+Y3VycmVudCA9IFBvaW50 ZXJHZXREYXR1bShOVUxMKTsKKwkJCXNjYW4tPmN1cnJlbnRJc051bGwgPSB0cnVlOworCQkJcmV0 dXJuIGZhbHNlOwkJLyogZW5kIG9mIHNjYW4gKi8KKwkJfQorCisJCS8qIHNldCBjdXJyZW50IHJv dyBpdGVtICovCisJCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhzY2FuLT5tY3h0KTsK KwkJc2Nhbi0+Y3VycmVudCA9IEpzb25iUEdldERhdHVtKEpzb25iVmFsdWVUb0pzb25iKGpidikp OworCQlzY2FuLT5jdXJyZW50SXNOdWxsID0gZmFsc2U7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjeHQpOworCisJCXNjYW4tPm9yZGluYWwrKzsKKworCQlpZiAoIXNjYW4tPnBsYW4ubmVz dGVkKQorCQkJYnJlYWs7CisKKwkJSnNvblRhYmxlUGxhblJlc2V0KHNjYW4tPnBsYW4ubmVzdGVk KTsKKworCQlzY2FuLT5hZHZhbmNlTmVzdGVkID0gSnNvblRhYmxlUGxhbk5leHRSb3coc2Nhbi0+ cGxhbi5uZXN0ZWQpOworCisJCWlmIChzY2FuLT5hZHZhbmNlTmVzdGVkIHx8IHNjYW4tPm91dGVy Sm9pbikKKwkJCWJyZWFrOworCX0KKworCXJldHVybiB0cnVlOworfQorCisvKgorICogSnNvblRh YmxlRmV0Y2hSb3cKKyAqCQlQcmVwYXJlIHRoZSBuZXh0ICJjdXJyZW50IiB0dXBsZSBmb3IgdXBj b21pbmcgR2V0VmFsdWUgY2FsbHMuCisgKgkJUmV0dXJucyBmYWxzZSBpZiBubyBtb3JlIHJvd3Mg Y2FuIGJlIHJldHVybmVkLgorICovCitzdGF0aWMgYm9vbAorSnNvblRhYmxlRmV0Y2hSb3coVGFi bGVGdW5jU2NhblN0YXRlICpzdGF0ZSkKK3sKKwlKc29uVGFibGVFeGVjQ29udGV4dCAqY3h0ID0K KwkJR2V0SnNvblRhYmxlRXhlY0NvbnRleHQoc3RhdGUsICJKc29uVGFibGVGZXRjaFJvdyIpOwor CisJcmV0dXJuIEpzb25UYWJsZVNjYW5OZXh0Um93KGN4dC0+cm9vdCk7Cit9CisKKy8qCisgKiBK c29uVGFibGVHZXRWYWx1ZQorICoJCVJldHVybiB0aGUgdmFsdWUgZm9yIGNvbHVtbiBudW1iZXIg J2NvbG51bScgZm9yIHRoZSBjdXJyZW50IHJvdy4KKyAqCisgKiBUaGlzIGxlYWtzIG1lbW9yeSwg c28gYmUgc3VyZSB0byByZXNldCBvZnRlbiB0aGUgY29udGV4dCBpbiB3aGljaCBpdCdzCisgKiBj YWxsZWQuCisgKi8KK3N0YXRpYyBEYXR1bQorSnNvblRhYmxlR2V0VmFsdWUoVGFibGVGdW5jU2Nh blN0YXRlICpzdGF0ZSwgaW50IGNvbG51bSwKKwkJCQkgIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9k LCBib29sICppc251bGwpCit7CisJSnNvblRhYmxlRXhlY0NvbnRleHQgKmN4dCA9CisJCUdldEpz b25UYWJsZUV4ZWNDb250ZXh0KHN0YXRlLCAiSnNvblRhYmxlR2V0VmFsdWUiKTsKKwlFeHByQ29u dGV4dCAqZWNvbnRleHQgPSBzdGF0ZS0+c3MucHMucHNfRXhwckNvbnRleHQ7CisJRXhwclN0YXRl ICAqZXN0YXRlID0gbGlzdF9udGgoc3RhdGUtPmNvbHZhbGV4cHJzLCBjb2xudW0pOworCUpzb25U YWJsZVNjYW5TdGF0ZSAqc2NhbiA9IGN4dC0+Y29sZXhwcnNjYW5zW2NvbG51bV07CisJRGF0dW0J CXJlc3VsdDsKKworCWlmIChzY2FuLT5jdXJyZW50SXNOdWxsKQkvKiBOVUxMIGZyb20gb3V0ZXIv dW5pb24gam9pbiAqLworCXsKKwkJcmVzdWx0ID0gKERhdHVtKSAwOworCQkqaXNudWxsID0gdHJ1 ZTsKKwl9CisJZWxzZSBpZiAoZXN0YXRlKQkJCS8qIHJlZ3VsYXIgY29sdW1uICovCisJeworCQlE YXR1bQkJc2F2ZWRfY2FzZVZhbHVlID0gZWNvbnRleHQtPmNhc2VWYWx1ZV9kYXR1bTsKKwkJYm9v bAkJc2F2ZWRfY2FzZUlzTnVsbCA9IGVjb250ZXh0LT5jYXNlVmFsdWVfaXNOdWxsOworCisJCS8q IFBhc3MgdGhlIHZhbHVlIGZvciBDYXNlVGVzdEV4cHIgdGhhdCBtYXkgYmUgcHJlc2VudCBpbiBj b2xleHByICovCisJCWVjb250ZXh0LT5jYXNlVmFsdWVfZGF0dW0gPSBzY2FuLT5jdXJyZW50Owor CQllY29udGV4dC0+Y2FzZVZhbHVlX2lzTnVsbCA9IGZhbHNlOworCisJCXJlc3VsdCA9IEV4ZWNF dmFsRXhwcihlc3RhdGUsIGVjb250ZXh0LCBpc251bGwpOworCisJCWVjb250ZXh0LT5jYXNlVmFs dWVfZGF0dW0gPSBzYXZlZF9jYXNlVmFsdWU7CisJCWVjb250ZXh0LT5jYXNlVmFsdWVfaXNOdWxs ID0gc2F2ZWRfY2FzZUlzTnVsbDsKKwl9CisJZWxzZQorCXsKKwkJcmVzdWx0ID0gSW50MzJHZXRE YXR1bShzY2FuLT5vcmRpbmFsKTsJLyogb3JkaW5hbGl0eSBjb2x1bW4gKi8KKwkJKmlzbnVsbCA9 IGZhbHNlOworCX0KKworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBKc29uVGFibGVEZXN0 cm95T3BhcXVlCisgKi8KK3N0YXRpYyB2b2lkCitKc29uVGFibGVEZXN0cm95T3BhcXVlKFRhYmxl RnVuY1NjYW5TdGF0ZSAqc3RhdGUpCit7CisJSnNvblRhYmxlRXhlY0NvbnRleHQgKmN4dCA9CisJ CUdldEpzb25UYWJsZUV4ZWNDb250ZXh0KHN0YXRlLCAiSnNvblRhYmxlRGVzdHJveU9wYXF1ZSIp OworCisJLyogbm90IHZhbGlkIGFueW1vcmUgKi8KKwljeHQtPm1hZ2ljID0gMDsKKworCXN0YXRl LT5vcGFxdWUgPSBOVUxMOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDI3MzUz NDg0MTYuLmEyN2M3YTM1MGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxl dXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTUyMiw2 ICs1MjIsOCBAQCBzdGF0aWMgY2hhciAqZmxhdHRlbl9yZWxvcHRpb25zKE9pZCByZWxpZCk7CiBz dGF0aWMgdm9pZCBnZXRfcmVsb3B0aW9ucyhTdHJpbmdJbmZvIGJ1ZiwgRGF0dW0gcmVsb3B0aW9u cyk7CiBzdGF0aWMgdm9pZCBnZXRfanNvbl9wYXRoX3NwZWMoTm9kZSAqcGF0aF9zcGVjLCBkZXBh cnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQkJCQkJICAgYm9vbCBzaG93aW1wbGljaXQpOworc3Rh dGljIHZvaWQgZ2V0X2pzb25fdGFibGVfY29sdW1ucyhUYWJsZUZ1bmMgKnRmLCBKc29uVGFibGVQ bGFuICpub2RlLAorCQkJCQkJCQkgICBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsIGJvb2wgc2hv d2ltcGxpY2l0KTsKIAogI2RlZmluZSBvbmx5X21hcmtlcihydGUpICAoKHJ0ZSktPmluaCA/ICIi IDogIk9OTFkgIikKIApAQCAtODYyNyw3ICs4NjI5LDggQEAgZ2V0X2pzb25fYmVoYXZpb3IoSnNv bkJlaGF2aW9yICpiZWhhdmlvciwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogLyoKICAqIGdl dF9qc29uX2V4cHJfb3B0aW9ucwogICoKLSAqIFBhcnNlIGJhY2sgY29tbW9uIG9wdGlvbnMgZm9y IEpTT05fUVVFUlksIEpTT05fVkFMVUUsIEpTT05fRVhJU1RTLgorICogUGFyc2UgYmFjayBjb21t b24gb3B0aW9ucyBmb3IgSlNPTl9RVUVSWSwgSlNPTl9WQUxVRSwgSlNPTl9FWElTVFMgYW5kCisg KiBKU09OX1RBQkxFIGNvbHVtbnMuCiAgKi8KIHN0YXRpYyB2b2lkCiBnZXRfanNvbl9leHByX29w dGlvbnMoSnNvbkV4cHIgKmpzZXhwciwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LApAQCAtOTg3 NCw2ICs5ODc3LDkgQEAgZ2V0X3J1bGVfZXhwcihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQg KmNvbnRleHQsCiAJCQkJCWNhc2UgSlNPTl9WQUxVRV9PUDoKIAkJCQkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoYnVmLCAiSlNPTl9WQUxVRSgiKTsKIAkJCQkJCWJyZWFrOworCQkJCQlkZWZhdWx0 OgorCQkJCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgSnNvbkV4cHIgdHlwZTogJWQiLCBqZXhw ci0+b3ApOworCQkJCQkJYnJlYWs7CiAJCQkJfQogCiAJCQkJZ2V0X3J1bGVfZXhwcihqZXhwci0+ Zm9ybWF0dGVkX2V4cHIsIGNvbnRleHQsIHNob3dpbXBsaWNpdCk7CkBAIC0xMTI0MCwxNiArMTEy NDYsMTQgQEAgZ2V0X3N1YmxpbmtfZXhwcihTdWJMaW5rICpzdWJsaW5rLCBkZXBhcnNlX2NvbnRl eHQgKmNvbnRleHQpCiAKIAogLyogLS0tLS0tLS0tLQotICogZ2V0X3RhYmxlZnVuYwkJCS0gUGFy c2UgYmFjayBhIHRhYmxlIGZ1bmN0aW9uCisgKiBnZXRfeG1sdGFibGUJCQktIFBhcnNlIGJhY2sg YSBYTUxUQUJMRSBmdW5jdGlvbgogICogLS0tLS0tLS0tLQogICovCiBzdGF0aWMgdm9pZAotZ2V0 X3RhYmxlZnVuYyhUYWJsZUZ1bmMgKnRmLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsIGJvb2wg c2hvd2ltcGxpY2l0KQorZ2V0X3htbHRhYmxlKFRhYmxlRnVuYyAqdGYsIGRlcGFyc2VfY29udGV4 dCAqY29udGV4dCwgYm9vbCBzaG93aW1wbGljaXQpCiB7CiAJU3RyaW5nSW5mbwlidWYgPSBjb250 ZXh0LT5idWY7CiAKLQkvKiBYTUxUQUJMRSBpcyB0aGUgb25seSBleGlzdGluZyBpbXBsZW1lbnRh dGlvbi4gICovCi0KIAlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIlhNTFRBQkxFKCIpOwog CiAJaWYgKHRmLT5uc191cmlzICE9IE5JTCkKQEAgLTExMzQwLDYgKzExMzQ0LDI3MSBAQCBnZXRf dGFibGVmdW5jKFRhYmxlRnVuYyAqdGYsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwgYm9vbCBz aG93aW1wbGljaXQpCiAJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnKScpOwogfQogCisvKgor ICogZ2V0X2pzb25fbmVzdGVkX2NvbHVtbnMgLSBQYXJzZSBiYWNrIG5lc3RlZCBKU09OX1RBQkxF IGNvbHVtbnMKKyAqLworc3RhdGljIHZvaWQKK2dldF9qc29uX3RhYmxlX25lc3RlZF9jb2x1bW5z KFRhYmxlRnVuYyAqdGYsIE5vZGUgKm5vZGUsCisJCQkJCQkJICBkZXBhcnNlX2NvbnRleHQgKmNv bnRleHQsIGJvb2wgc2hvd2ltcGxpY2l0LAorCQkJCQkJCSAgYm9vbCBuZWVkY29tbWEpCit7CisJ aWYgKElzQShub2RlLCBKc29uVGFibGVTaWJsaW5nKSkKKwl7CisJCUpzb25UYWJsZVNpYmxpbmcg Km4gPSAoSnNvblRhYmxlU2libGluZyAqKSBub2RlOworCisJCWdldF9qc29uX3RhYmxlX25lc3Rl ZF9jb2x1bW5zKHRmLCBuLT5sYXJnLCBjb250ZXh0LCBzaG93aW1wbGljaXQsCisJCQkJCQkJCQkg IG5lZWRjb21tYSk7CisJCWdldF9qc29uX3RhYmxlX25lc3RlZF9jb2x1bW5zKHRmLCBuLT5yYXJn LCBjb250ZXh0LCBzaG93aW1wbGljaXQsIHRydWUpOworCX0KKwllbHNlCisJeworCQlKc29uVGFi bGVQbGFuICpuID0gY2FzdE5vZGUoSnNvblRhYmxlUGxhbiwgbm9kZSk7CisKKwkJaWYgKG5lZWRj b21tYSkKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGNvbnRleHQtPmJ1ZiwgJywnKTsKKworCQlh cHBlbmRTdHJpbmdJbmZvQ2hhcihjb250ZXh0LT5idWYsICcgJyk7CisJCWFwcGVuZENvbnRleHRL ZXl3b3JkKGNvbnRleHQsICJORVNURUQgUEFUSCAiLCAwLCAwLCAwKTsKKwkJZ2V0X2NvbnN0X2V4 cHIobi0+cGF0aC0+dmFsdWUsIGNvbnRleHQsIC0xKTsKKwkJYXBwZW5kU3RyaW5nSW5mbyhjb250 ZXh0LT5idWYsICIgQVMgJXMiLCBxdW90ZV9pZGVudGlmaWVyKG4tPnBhdGgtPm5hbWUpKTsKKwkJ Z2V0X2pzb25fdGFibGVfY29sdW1ucyh0ZiwgbiwgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKKwl9 Cit9CisKKy8qCisgKiBnZXRfanNvbl90YWJsZV9wbGFuIC0gUGFyc2UgYmFjayBhIEpTT05fVEFC TEUgcGxhbgorICovCitzdGF0aWMgdm9pZAorZ2V0X2pzb25fdGFibGVfcGxhbihUYWJsZUZ1bmMg KnRmLCBOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCisJCQkJCWJvb2wgcGFy ZW50aGVzaXplKQoreworCWlmIChwYXJlbnRoZXNpemUpCisJCWFwcGVuZFN0cmluZ0luZm9DaGFy KGNvbnRleHQtPmJ1ZiwgJygnKTsKKworCWlmIChJc0Eobm9kZSwgSnNvblRhYmxlU2libGluZykp CisJeworCQlKc29uVGFibGVTaWJsaW5nICpuID0gKEpzb25UYWJsZVNpYmxpbmcgKikgbm9kZTsK KworCQlnZXRfanNvbl90YWJsZV9wbGFuKHRmLCBuLT5sYXJnLCBjb250ZXh0LAorCQkJCQkJCUlz QShuLT5sYXJnLCBKc29uVGFibGVTaWJsaW5nKSB8fAorCQkJCQkJCWNhc3ROb2RlKEpzb25UYWJs ZVBsYW4sIG4tPmxhcmcpLT5jaGlsZCk7CisKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhjb250 ZXh0LT5idWYsIG4tPmNyb3NzID8gIiBDUk9TUyAiIDogIiBVTklPTiAiKTsKKworCQlnZXRfanNv bl90YWJsZV9wbGFuKHRmLCBuLT5yYXJnLCBjb250ZXh0LAorCQkJCQkJCUlzQShuLT5yYXJnLCBK c29uVGFibGVTaWJsaW5nKSB8fAorCQkJCQkJCWNhc3ROb2RlKEpzb25UYWJsZVBsYW4sIG4tPnJh cmcpLT5jaGlsZCk7CisJfQorCWVsc2UKKwl7CisJCUpzb25UYWJsZVBsYW4gKm4gPSBjYXN0Tm9k ZShKc29uVGFibGVQbGFuLCBub2RlKTsKKworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGNvbnRl eHQtPmJ1ZiwgcXVvdGVfaWRlbnRpZmllcihuLT5wYXRoLT5uYW1lKSk7CisKKwkJaWYgKG4tPmNo aWxkKQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGNvbnRleHQtPmJ1ZiwKKwkJCQkJ CQkJICAgbi0+b3V0ZXJKb2luID8gIiBPVVRFUiAiIDogIiBJTk5FUiAiKTsKKwkJCWdldF9qc29u X3RhYmxlX3BsYW4odGYsIG4tPmNoaWxkLCBjb250ZXh0LAorCQkJCQkJCQlJc0Eobi0+Y2hpbGQs IEpzb25UYWJsZVNpYmxpbmcpKTsKKwkJfQorCX0KKworCWlmIChwYXJlbnRoZXNpemUpCisJCWFw cGVuZFN0cmluZ0luZm9DaGFyKGNvbnRleHQtPmJ1ZiwgJyknKTsKK30KKworLyoKKyAqIGdldF9q c29uX3RhYmxlX2NvbHVtbnMgLSBQYXJzZSBiYWNrIEpTT05fVEFCTEUgY29sdW1ucworICovCitz dGF0aWMgdm9pZAorZ2V0X2pzb25fdGFibGVfY29sdW1ucyhUYWJsZUZ1bmMgKnRmLCBKc29uVGFi bGVQbGFuICpwbGFuLAorCQkJCQkgICBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsIGJvb2wgc2hv d2ltcGxpY2l0KQoreworCVN0cmluZ0luZm8JYnVmID0gY29udGV4dC0+YnVmOworCUpzb25FeHBy ICAgKmpleHByID0gY2FzdE5vZGUoSnNvbkV4cHIsIHRmLT5kb2NleHByKTsKKwlMaXN0Q2VsbCAg ICpsY19jb2xuYW1lOworCUxpc3RDZWxsICAgKmxjX2NvbHR5cGU7CisJTGlzdENlbGwgICAqbGNf Y29sdHlwbW9kOworCUxpc3RDZWxsICAgKmxjX2NvbHZhbGV4cHI7CisJaW50CQkJY29sbnVtID0g MDsKKworCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyAnKTsKKwlhcHBlbmRDb250ZXh0S2V5 d29yZChjb250ZXh0LCAiQ09MVU1OUyAoIiwgMCwgMCwgMCk7CisKKwlpZiAoUFJFVFRZX0lOREVO VChjb250ZXh0KSkKKwkJY29udGV4dC0+aW5kZW50TGV2ZWwgKz0gUFJFVFRZSU5ERU5UX1ZBUjsK KworCWZvcmZvdXIobGNfY29sbmFtZSwgdGYtPmNvbG5hbWVzLAorCQkJbGNfY29sdHlwZSwgdGYt PmNvbHR5cGVzLAorCQkJbGNfY29sdHlwbW9kLCB0Zi0+Y29sdHlwbW9kcywKKwkJCWxjX2NvbHZh bGV4cHIsIHRmLT5jb2x2YWxleHBycykKKwl7CisJCWNoYXIJICAgKmNvbG5hbWUgPSBzdHJWYWwo bGZpcnN0KGxjX2NvbG5hbWUpKTsKKwkJSnNvbkV4cHIgICAqY29sZXhwcjsKKwkJT2lkCQkJdHlw aWQ7CisJCWludDMyCQl0eXBtb2Q7CisJCWJvb2wJCW9yZGluYWxpdHk7CisJCUpzb25CZWhhdmlv clR5cGUgZGVmYXVsdF9iZWhhdmlvcjsKKworCQl0eXBpZCA9IGxmaXJzdF9vaWQobGNfY29sdHlw ZSk7CisJCXR5cG1vZCA9IGxmaXJzdF9pbnQobGNfY29sdHlwbW9kKTsKKwkJY29sZXhwciA9IGNh c3ROb2RlKEpzb25FeHByLCBsZmlyc3QobGNfY29sdmFsZXhwcikpOworCisJCWlmIChjb2xudW0g PCBwbGFuLT5jb2xNaW4pCisJCXsKKwkJCWNvbG51bSsrOworCQkJY29udGludWU7CisJCX0KKwor CQlpZiAoY29sbnVtID4gcGxhbi0+Y29sTWF4KQorCQkJYnJlYWs7CisKKwkJaWYgKGNvbG51bSA+ IHBsYW4tPmNvbE1pbikKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLCAiKTsKKwor CQljb2xudW0rKzsKKworCQlvcmRpbmFsaXR5ID0gIWNvbGV4cHI7CisKKwkJYXBwZW5kQ29udGV4 dEtleXdvcmQoY29udGV4dCwgIiIsIDAsIDAsIDApOworCisJCWFwcGVuZFN0cmluZ0luZm8oYnVm LCAiJXMgJXMiLCBxdW90ZV9pZGVudGlmaWVyKGNvbG5hbWUpLAorCQkJCQkJIG9yZGluYWxpdHkg PyAiRk9SIE9SRElOQUxJVFkiIDoKKwkJCQkJCSBmb3JtYXRfdHlwZV93aXRoX3R5cGVtb2QodHlw aWQsIHR5cG1vZCkpOworCQlpZiAob3JkaW5hbGl0eSkKKwkJCWNvbnRpbnVlOworCisJCWlmIChj b2xleHByLT5vcCA9PSBKU09OX0VYSVNUU19PUCkKKwkJeworCQkJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZyhidWYsICIgRVhJU1RTIik7CisJCQlkZWZhdWx0X2JlaGF2aW9yID0gSlNPTl9CRUhBVklP Ul9GQUxTRTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWlmIChjb2xleHByLT5vcCA9PSBKU09OX1FV RVJZX09QKQorCQkJeworCQkJCWNoYXIJCXR5cGNhdGVnb3J5OworCQkJCWJvb2wJCXR5cGlzcHJl ZmVycmVkOworCisJCQkJZ2V0X3R5cGVfY2F0ZWdvcnlfcHJlZmVycmVkKHR5cGlkLCAmdHlwY2F0 ZWdvcnksICZ0eXBpc3ByZWZlcnJlZCk7CisKKwkJCQlpZiAodHlwY2F0ZWdvcnkgPT0gVFlQQ0FU RUdPUllfU1RSSU5HKQorCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwKKwkJCQkJCQkJ CQkgICBjb2xleHByLT5mb3JtYXQtPmZvcm1hdF90eXBlID09IEpTX0ZPUk1BVF9KU09OQiA/CisJ CQkJCQkJCQkJICAgIiBGT1JNQVQgSlNPTkIiIDogIiBGT1JNQVQgSlNPTiIpOworCQkJfQorCisJ CQlkZWZhdWx0X2JlaGF2aW9yID0gSlNPTl9CRUhBVklPUl9OVUxMOworCQl9CisKKwkJaWYgKGpl eHByLT5vbl9lcnJvci0+YnR5cGUgPT0gSlNPTl9CRUhBVklPUl9FUlJPUikKKwkJCWRlZmF1bHRf YmVoYXZpb3IgPSBKU09OX0JFSEFWSU9SX0VSUk9SOworCisJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoYnVmLCAiIFBBVEggIik7CisKKwkJZ2V0X2pzb25fcGF0aF9zcGVjKGNvbGV4cHItPnBhdGhf c3BlYywgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKKworCQlnZXRfanNvbl9leHByX29wdGlvbnMo Y29sZXhwciwgY29udGV4dCwgZGVmYXVsdF9iZWhhdmlvcik7CisJfQorCisJaWYgKHBsYW4tPmNo aWxkKQorCQlnZXRfanNvbl90YWJsZV9uZXN0ZWRfY29sdW1ucyh0ZiwgcGxhbi0+Y2hpbGQsIGNv bnRleHQsIHNob3dpbXBsaWNpdCwKKwkJCQkJCQkJCSAgcGxhbi0+Y29sTWF4ID49IHBsYW4tPmNv bE1pbik7CisKKwlpZiAoUFJFVFRZX0lOREVOVChjb250ZXh0KSkKKwkJY29udGV4dC0+aW5kZW50 TGV2ZWwgLT0gUFJFVFRZSU5ERU5UX1ZBUjsKKworCWFwcGVuZENvbnRleHRLZXl3b3JkKGNvbnRl eHQsICIpIiwgMCwgMCwgMCk7Cit9CisKKy8qIC0tLS0tLS0tLS0KKyAqIGdldF9qc29uX3RhYmxl CQkJLSBQYXJzZSBiYWNrIGEgSlNPTl9UQUJMRSBmdW5jdGlvbgorICogLS0tLS0tLS0tLQorICov CitzdGF0aWMgdm9pZAorZ2V0X2pzb25fdGFibGUoVGFibGVGdW5jICp0ZiwgZGVwYXJzZV9jb250 ZXh0ICpjb250ZXh0LCBib29sIHNob3dpbXBsaWNpdCkKK3sKKwlTdHJpbmdJbmZvCWJ1ZiA9IGNv bnRleHQtPmJ1ZjsKKwlKc29uRXhwciAgICpqZXhwciA9IGNhc3ROb2RlKEpzb25FeHByLCB0Zi0+ ZG9jZXhwcik7CisJSnNvblRhYmxlUGxhbiAqcm9vdCA9IGNhc3ROb2RlKEpzb25UYWJsZVBsYW4s IHRmLT5wbGFuKTsKKworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiSlNPTl9UQUJMRSgi KTsKKworCWlmIChQUkVUVFlfSU5ERU5UKGNvbnRleHQpKQorCQljb250ZXh0LT5pbmRlbnRMZXZl bCArPSBQUkVUVFlJTkRFTlRfVkFSOworCisJYXBwZW5kQ29udGV4dEtleXdvcmQoY29udGV4dCwg IiIsIDAsIDAsIDApOworCisJZ2V0X3J1bGVfZXhwcihqZXhwci0+Zm9ybWF0dGVkX2V4cHIsIGNv bnRleHQsIHNob3dpbXBsaWNpdCk7CisKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiwg Iik7CisKKwlnZXRfY29uc3RfZXhwcihyb290LT5wYXRoLT52YWx1ZSwgY29udGV4dCwgLTEpOwor CisJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIgQVMgJXMiLCBxdW90ZV9pZGVudGlmaWVyKHJvb3Qt PnBhdGgtPm5hbWUpKTsKKworCWlmIChqZXhwci0+cGFzc2luZ192YWx1ZXMpCisJeworCQlMaXN0 Q2VsbCAgICpsYzEsCisJCQkJICAgKmxjMjsKKwkJYm9vbAkJbmVlZGNvbW1hID0gZmFsc2U7CisK KwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnICcpOworCQlhcHBlbmRDb250ZXh0S2V5d29y ZChjb250ZXh0LCAiUEFTU0lORyAiLCAwLCAwLCAwKTsKKworCQlpZiAoUFJFVFRZX0lOREVOVChj b250ZXh0KSkKKwkJCWNvbnRleHQtPmluZGVudExldmVsICs9IFBSRVRUWUlOREVOVF9WQVI7CisK KwkJZm9yYm90aChsYzEsIGpleHByLT5wYXNzaW5nX25hbWVzLAorCQkJCWxjMiwgamV4cHItPnBh c3NpbmdfdmFsdWVzKQorCQl7CisJCQlpZiAobmVlZGNvbW1hKQorCQkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoYnVmLCAiLCAiKTsKKwkJCW5lZWRjb21tYSA9IHRydWU7CisKKwkJCWFwcGVuZENv bnRleHRLZXl3b3JkKGNvbnRleHQsICIiLCAwLCAwLCAwKTsKKworCQkJZ2V0X3J1bGVfZXhwcigo Tm9kZSAqKSBsZmlyc3QobGMyKSwgY29udGV4dCwgZmFsc2UpOworCQkJYXBwZW5kU3RyaW5nSW5m byhidWYsICIgQVMgJXMiLAorCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKChsZmlyc3Rfbm9kZShT dHJpbmcsIGxjMSkpLT5zdmFsKQorCQkJCSk7CisJCX0KKworCQlpZiAoUFJFVFRZX0lOREVOVChj b250ZXh0KSkKKwkJCWNvbnRleHQtPmluZGVudExldmVsIC09IFBSRVRUWUlOREVOVF9WQVI7CisJ fQorCisJZ2V0X2pzb25fdGFibGVfY29sdW1ucyh0Ziwgcm9vdCwgY29udGV4dCwgc2hvd2ltcGxp Y2l0KTsKKworCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyAnKTsKKwlhcHBlbmRDb250ZXh0 S2V5d29yZChjb250ZXh0LCAiUExBTiAiLCAwLCAwLCAwKTsKKwlnZXRfanNvbl90YWJsZV9wbGFu KHRmLCAoTm9kZSAqKSByb290LCBjb250ZXh0LCB0cnVlKTsKKworCWlmIChqZXhwci0+b25fZXJy b3ItPmJ0eXBlICE9IEpTT05fQkVIQVZJT1JfRU1QVFkpCisJCWdldF9qc29uX2JlaGF2aW9yKGpl eHByLT5vbl9lcnJvciwgY29udGV4dCwgIkVSUk9SIik7CisKKwlpZiAoUFJFVFRZX0lOREVOVChj b250ZXh0KSkKKwkJY29udGV4dC0+aW5kZW50TGV2ZWwgLT0gUFJFVFRZSU5ERU5UX1ZBUjsKKwor CWFwcGVuZENvbnRleHRLZXl3b3JkKGNvbnRleHQsICIpIiwgMCwgMCwgMCk7Cit9CisKKy8qIC0t LS0tLS0tLS0KKyAqIGdldF90YWJsZWZ1bmMJCQktIFBhcnNlIGJhY2sgYSB0YWJsZSBmdW5jdGlv bgorICogLS0tLS0tLS0tLQorICovCitzdGF0aWMgdm9pZAorZ2V0X3RhYmxlZnVuYyhUYWJsZUZ1 bmMgKnRmLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsIGJvb2wgc2hvd2ltcGxpY2l0KQorewor CS8qIFhNTFRBQkxFIGFuZCBKU09OX1RBQkxFIGFyZSB0aGUgb25seSBleGlzdGluZyBpbXBsZW1l bnRhdGlvbnMuICAqLworCisJaWYgKHRmLT5mdW5jdHlwZSA9PSBURlRfWE1MVEFCTEUpCisJCWdl dF94bWx0YWJsZSh0ZiwgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKKwllbHNlIGlmICh0Zi0+ZnVu Y3R5cGUgPT0gVEZUX0pTT05fVEFCTEUpCisJCWdldF9qc29uX3RhYmxlKHRmLCBjb250ZXh0LCBz aG93aW1wbGljaXQpOworfQorCiAvKiAtLS0tLS0tLS0tCiAgKiBnZXRfZnJvbV9jbGF1c2UJCQkt IFBhcnNlIGJhY2sgYSBGUk9NIGNsYXVzZQogICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggMTk2 MWQ5ZTBhYS4uZWVkYTAyZTdhYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTE5NjksNiArMTk2 OSw4IEBAIHR5cGVkZWYgc3RydWN0IFRhYmxlRnVuY1NjYW5TdGF0ZQogCUV4cHJTdGF0ZSAgKnJv d2V4cHI7CQkvKiBzdGF0ZSBmb3Igcm93LWdlbmVyYXRpbmcgZXhwcmVzc2lvbiAqLwogCUxpc3QJ ICAgKmNvbGV4cHJzOwkJLyogc3RhdGUgZm9yIGNvbHVtbi1nZW5lcmF0aW5nIGV4cHJlc3Npb24g Ki8KIAlMaXN0CSAgICpjb2xkZWZleHByczsJLyogc3RhdGUgZm9yIGNvbHVtbiBkZWZhdWx0IGV4 cHJlc3Npb25zICovCisJTGlzdAkgICAqY29sdmFsZXhwcnM7CS8qIHN0YXRlIGZvciBjb2x1bW4g dmFsdWUgZXhwcmVzc2lvbiAqLworCUxpc3QJICAgKnBhc3Npbmd2YWxleHByczsJLyogc3RhdGUg Zm9yIFBBU1NJTkcgYXJndW1lbnQgZXhwcmVzc2lvbiAqLwogCUxpc3QJICAgKm5zX25hbWVzOwkJ Lyogc2FtZSBhcyBUYWJsZUZ1bmMubnNfbmFtZXMgKi8KIAlMaXN0CSAgICpuc191cmlzOwkJLyog bGlzdCBvZiBzdGF0ZXMgb2YgbmFtZXNwYWNlIFVSSSBleHBycyAqLwogCUJpdG1hcHNldCAgKm5v dG51bGxzOwkJLyogbnVsbGFiaWxpdHkgZmxhZyBmb3IgZWFjaCBvdXRwdXQgY29sdW1uICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL21ha2VmdW5jcy5oCmluZGV4IDkxZDk1ZmM1MmIuLjZkMjEwNjg0YTggMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL21h a2VmdW5jcy5oCkBAIC0xMDAsNiArMTAwLDcgQEAgZXh0ZXJuIEluZGV4SW5mbyAqbWFrZUluZGV4 SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywgT2lkIGFtb2lkLAogCQkJCQkJCQli b29sIGlzcmVhZHksIGJvb2wgY29uY3VycmVudCwKIAkJCQkJCQkJYm9vbCBzdW1tYXJpemluZyk7 CiAKK2V4dGVybiBOb2RlICptYWtlU3RyaW5nQ29uc3QoY2hhciAqc3RyLCBpbnQgbG9jYXRpb24p OwogZXh0ZXJuIERlZkVsZW0gKm1ha2VEZWZFbGVtKGNoYXIgKm5hbWUsIE5vZGUgKmFyZywgaW50 IGxvY2F0aW9uKTsKIGV4dGVybiBEZWZFbGVtICptYWtlRGVmRWxlbUV4dGVuZGVkKGNoYXIgKm5h bWVTcGFjZSwgY2hhciAqbmFtZSwgTm9kZSAqYXJnLAogCQkJCQkJCQkJRGVmRWxlbUFjdGlvbiBk ZWZhY3Rpb24sIGludCBsb2NhdGlvbik7CkBAIC0xMTQsNiArMTE1LDE0IEBAIGV4dGVybiBKc29u VmFsdWVFeHByICptYWtlSnNvblZhbHVlRXhwcihFeHByICpyYXdfZXhwciwgRXhwciAqZm9ybWF0 dGVkX2V4cHIsCiAJCQkJCQkJCQkJSnNvbkZvcm1hdCAqZm9ybWF0KTsKIGV4dGVybiBKc29uQmVo YXZpb3IgKm1ha2VKc29uQmVoYXZpb3IoSnNvbkJlaGF2aW9yVHlwZSB0eXBlLCBOb2RlICpleHBy LAogCQkJCQkJCQkJICBKc29uQ29lcmNpb24gKmNvZXJjaW9uLCBpbnQgbG9jYXRpb24pOworZXh0 ZXJuIEpzb25UYWJsZVBhdGggKm1ha2VKc29uVGFibGVQYXRoKENvbnN0ICpwYXRodmFsdWUsIGNo YXIgKnBhdGhuYW1lKTsKK2V4dGVybiBOb2RlICptYWtlSnNvblRhYmxlUGF0aFNwZWMoY2hhciAq c3RyaW5nLCBjaGFyICpuYW1lLAorCQkJCQkJCQkgICBpbnQgc3RyaW5nX2xvY2F0aW9uLCBpbnQg bmFtZV9sb2NhdGlvbik7CitleHRlcm4gTm9kZSAqbWFrZUpzb25UYWJsZURlZmF1bHRQbGFuKEpz b25UYWJsZVBsYW5Kb2luVHlwZSBqb2luX3R5cGUsCisJCQkJCQkJCQkgIGludCBsb2NhdGlvbik7 CitleHRlcm4gTm9kZSAqbWFrZUpzb25UYWJsZVNpbXBsZVBsYW4oY2hhciAqcGF0aG5hbWUsIGlu dCBsb2NhdGlvbik7CitleHRlcm4gTm9kZSAqbWFrZUpzb25UYWJsZUpvaW5lZFBsYW4oSnNvblRh YmxlUGxhbkpvaW5UeXBlIHR5cGUsCisJCQkJCQkJCQkgTm9kZSAqcGxhbjEsIE5vZGUgKnBsYW4y LCBpbnQgbG9jYXRpb24pOwogZXh0ZXJuIE5vZGUgKm1ha2VKc29uS2V5VmFsdWUoTm9kZSAqa2V5 LCBOb2RlICp2YWx1ZSk7CiBleHRlcm4gTm9kZSAqbWFrZUpzb25Jc1ByZWRpY2F0ZShOb2RlICpl eHByLCBKc29uRm9ybWF0ICpmb3JtYXQsCiAJCQkJCQkJCSBKc29uVmFsdWVUeXBlIGl0ZW1fdHlw ZSwgYm9vbCB1bmlxdWVfa2V5cywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBhZjY4YWUzM2U4 Li4zYzQyNmY0ZTBkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0xNzQyLDYgKzE3NDIsNyBA QCB0eXBlZGVmIHN0cnVjdCBKc29uRnVuY0V4cHIKIAlKc29uRXhwck9wCW9wOwkJCQkvKiBleHBy ZXNzaW9uIHR5cGUgKi8KIAlKc29uVmFsdWVFeHByICpjb250ZXh0X2l0ZW07CS8qIGNvbnRleHQg aXRlbSBleHByZXNzaW9uICovCiAJTm9kZQkgICAqcGF0aHNwZWM7CQkvKiBKU09OIHBhdGggc3Bl Y2lmaWNhdGlvbiBleHByZXNzaW9uICovCisJY2hhcgkgICAqcGF0aG5hbWU7CQkvKiBwYXRoIG5h bWUsIGlmIGFueSAqLwogCUxpc3QJICAgKnBhc3Npbmc7CQkvKiBsaXN0IG9mIFBBU1NJTkcgY2xh dXNlIGFyZ3VtZW50cywgaWYgYW55ICovCiAJSnNvbk91dHB1dCAqb3V0cHV0OwkJCS8qIG91dHB1 dCBjbGF1c2UsIGlmIHNwZWNpZmllZCAqLwogCUpzb25CZWhhdmlvciAqb25fZW1wdHk7CQkvKiBP TiBFTVBUWSBiZWhhdmlvciAqLwpAQCAtMTc1MSw2ICsxNzUyLDExNCBAQCB0eXBlZGVmIHN0cnVj dCBKc29uRnVuY0V4cHIKIAlpbnQJCQlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAt MSBpZiB1bmtub3duICovCiB9IEpzb25GdW5jRXhwcjsKIAorLyoKKyAqIEpzb25UYWJsZVBhdGhT cGVjCisgKgkJdW50cmFuc2Zvcm1lZCBzcGVjaWZpY2F0aW9uIG9mIEpTT04gcGF0aCBleHByZXNz aW9uIHdpdGggYW4gb3B0aW9uYWwKKyAqCQluYW1lCisgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25U YWJsZVBhdGhTcGVjCit7CisJTm9kZVRhZwkJdHlwZTsKKworCU5vZGUJICAgKnN0cmluZzsKKwlj aGFyCSAgICpuYW1lOworCWludAkJCW5hbWVfbG9jYXRpb247CisJaW50CQkJbG9jYXRpb247CS8q IGxvY2F0aW9uIG9mICdzdHJpbmcnICovCit9IEpzb25UYWJsZVBhdGhTcGVjOworCisvKgorICog SnNvblRhYmxlQ29sdW1uVHlwZSAtCisgKgkJZW51bWVyYXRpb24gb2YgSlNPTl9UQUJMRSBjb2x1 bW4gdHlwZXMKKyAqLwordHlwZWRlZiBlbnVtIEpzb25UYWJsZUNvbHVtblR5cGUKK3sKKwlKVENf Rk9SX09SRElOQUxJVFksCisJSlRDX1JFR1VMQVIsCisJSlRDX0VYSVNUUywKKwlKVENfRk9STUFU VEVELAorCUpUQ19ORVNURUQsCit9IEpzb25UYWJsZUNvbHVtblR5cGU7CisKKy8qCisgKiBKc29u VGFibGVDb2x1bW4gLQorICoJCXVudHJhbnNmb3JtZWQgcmVwcmVzZW50YXRpb24gb2YgSlNPTl9U QUJMRSBjb2x1bW4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgSnNvblRhYmxlQ29sdW1uCit7CisJTm9k ZVRhZwkJdHlwZTsKKwlKc29uVGFibGVDb2x1bW5UeXBlIGNvbHR5cGU7CS8qIGNvbHVtbiB0eXBl ICovCisJY2hhcgkgICAqbmFtZTsJCQkvKiBjb2x1bW4gbmFtZSAqLworCVR5cGVOYW1lICAgKnR5 cGVOYW1lOwkJLyogY29sdW1uIHR5cGUgbmFtZSAqLworCUpzb25UYWJsZVBhdGhTcGVjICpwYXRo c3BlYzsgLyogSlNPTiBwYXRoIHNwZWNpZmljYXRpb24gKi8KKwlKc29uRm9ybWF0ICpmb3JtYXQ7 CQkJLyogSlNPTiBmb3JtYXQgY2xhdXNlLCBpZiBzcGVjaWZpZWQgKi8KKwlKc29uV3JhcHBlciB3 cmFwcGVyOwkJLyogV1JBUFBFUiBiZWhhdmlvciBmb3IgZm9ybWF0dGVkIGNvbHVtbnMgKi8KKwlK c29uUXVvdGVzCXF1b3RlczsJCQkvKiBvbWl0IG9yIGtlZXAgcXVvdGVzIG9uIHNjYWxhciBzdHJp bmdzPyAqLworCUxpc3QJICAgKmNvbHVtbnM7CQkvKiBuZXN0ZWQgY29sdW1ucyAqLworCUpzb25C ZWhhdmlvciAqb25fZW1wdHk7CQkvKiBPTiBFTVBUWSBiZWhhdmlvciAqLworCUpzb25CZWhhdmlv ciAqb25fZXJyb3I7CQkvKiBPTiBFUlJPUiBiZWhhdmlvciAqLworCWludAkJCWxvY2F0aW9uOwkJ LyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KK30gSnNvblRhYmxlQ29sdW1u OworCisvKgorICogSnNvblRhYmxlUGxhblR5cGUgLQorICoJCWZsYWdzIGZvciBKU09OX1RBQkxF IHBsYW4gbm9kZSB0eXBlcyByZXByZXNlbnRhdGlvbgorICovCit0eXBlZGVmIGVudW0gSnNvblRh YmxlUGxhblR5cGUKK3sKKwlKU1RQX0RFRkFVTFQsCisJSlNUUF9TSU1QTEUsCisJSlNUUF9KT0lO RUQsCit9IEpzb25UYWJsZVBsYW5UeXBlOworCisvKgorICogSnNvblRhYmxlUGxhbkpvaW5UeXBl IC0KKyAqCQlKU09OX1RBQkxFIGpvaW4gdHlwZXMgZm9yIEpTVFBfSk9JTkVEIHBsYW5zCisgKi8K K3R5cGVkZWYgZW51bSBKc29uVGFibGVQbGFuSm9pblR5cGUKK3sKKwlKU1RQX0pPSU5fSU5ORVIs CisJSlNUUF9KT0lOX09VVEVSLAorCUpTVFBfSk9JTl9DUk9TUywKKwlKU1RQX0pPSU5fVU5JT04s Cit9IEpzb25UYWJsZVBsYW5Kb2luVHlwZTsKKworLyoKKyAqIEpzb25UYWJsZVBsYW5TcGVjIC0K KyAqCQl1bnRyYW5zZm9ybWVkIHJlcHJlc2VudGF0aW9uIG9mIEpTT05fVEFCTEUncyBQTEFOIGNs YXVzZQorICovCit0eXBlZGVmIHN0cnVjdCBKc29uVGFibGVQbGFuU3BlYworeworCU5vZGVUYWcJ CXR5cGU7CisKKwlKc29uVGFibGVQbGFuVHlwZSBwbGFuX3R5cGU7CS8qIHBsYW4gdHlwZSAqLwor CUpzb25UYWJsZVBsYW5Kb2luVHlwZSBqb2luX3R5cGU7CS8qIGpvaW4gdHlwZSAoZm9yIGpvaW5l ZCBwbGFuIG9ubHkpICovCisJY2hhcgkgICAqcGF0aG5hbWU7CQkvKiBwYXRoIG5hbWUgKGZvciBz aW1wbGUgcGxhbiBvbmx5KSAqLworCisJLyogRm9yIGpvaW5lZCBwbGFucyAqLworCXN0cnVjdCBK c29uVGFibGVQbGFuU3BlYyAqcGxhbjE7CQkvKiBmaXJzdCBqb2luZWQgcGxhbiAqLworCXN0cnVj dCBKc29uVGFibGVQbGFuU3BlYyAqcGxhbjI7CQkvKiBzZWNvbmQgam9pbmVkIHBsYW4gKi8KKwor CWludAkJCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8K K30gSnNvblRhYmxlUGxhblNwZWM7CisKKy8qCisgKiBKc29uVGFibGUgLQorICoJCXVudHJhbnNm b3JtZWQgcmVwcmVzZW50YXRpb24gb2YgSlNPTl9UQUJMRQorICovCit0eXBlZGVmIHN0cnVjdCBK c29uVGFibGUKK3sKKwlOb2RlVGFnCQl0eXBlOworCUpzb25WYWx1ZUV4cHIgKmNvbnRleHRfaXRl bTsJLyogY29udGV4dCBpdGVtIGV4cHJlc3Npb24gKi8KKwlKc29uVGFibGVQYXRoU3BlYyAqcGF0 aHNwZWM7CS8qIEpTT04gcGF0aCBzcGVjaWZpY2F0aW9uICovCisJTGlzdAkgICAqcGFzc2luZzsJ CS8qIGxpc3Qgb2YgUEFTU0lORyBjbGF1c2UgYXJndW1lbnRzLCBpZiBhbnkgKi8KKwlMaXN0CSAg ICpjb2x1bW5zOwkJLyogbGlzdCBvZiBKc29uVGFibGVDb2x1bW4gKi8KKwlKc29uVGFibGVQbGFu U3BlYyAqcGxhbnNwZWM7IC8qIGpvaW4gcGxhbiwgaWYgc3BlY2lmaWVkICovCisJSnNvbkJlaGF2 aW9yICAqb25fZXJyb3I7CS8qIE9OIEVSUk9SIGJlaGF2aW9yICovCisJQWxpYXMJICAgKmFsaWFz OwkJCS8qIHRhYmxlIGFsaWFzIGluIEZST00gY2xhdXNlICovCisJYm9vbAkJbGF0ZXJhbDsJCS8q IGRvZXMgaXQgaGF2ZSBMQVRFUkFMIHByZWZpeD8gKi8KKwlpbnQJCQlsb2NhdGlvbjsJCS8qIHRv a2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCit9IEpzb25UYWJsZTsKKwogLyoKICAq IEpzb25LZXlWYWx1ZSAtCiAgKgkJdW50cmFuc2Zvcm1lZCByZXByZXNlbnRhdGlvbiBvZiBKU09O IG9iamVjdCBrZXktdmFsdWUgcGFpciBmb3IKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVz L3ByaW1ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXggNDMzMGY0 ZWUzNi4uMWRjNTlkMzE5MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTk0LDggKzk0LDE0IEBA IHR5cGVkZWYgc3RydWN0IFJhbmdlVmFyCiAJaW50CQkJbG9jYXRpb247CiB9IFJhbmdlVmFyOwog Cit0eXBlZGVmIGVudW0gVGFibGVGdW5jVHlwZQoreworCVRGVF9YTUxUQUJMRSwKKwlURlRfSlNP Tl9UQUJMRSwKK30gVGFibGVGdW5jVHlwZTsKKwogLyoKLSAqIFRhYmxlRnVuYyAtIG5vZGUgZm9y IGEgdGFibGUgZnVuY3Rpb24sIHN1Y2ggYXMgWE1MVEFCTEUuCisgKiBUYWJsZUZ1bmMgLSBub2Rl IGZvciBhIHRhYmxlIGZ1bmN0aW9uLCBzdWNoIGFzIFhNTFRBQkxFIG9yIEpTT05fVEFCTEUuCiAg KgogICogRW50cmllcyBpbiB0aGUgbnNfbmFtZXMgbGlzdCBhcmUgZWl0aGVyIFN0cmluZyBub2Rl cyBjb250YWluaW5nCiAgKiBsaXRlcmFsIG5hbWVzcGFjZSBuYW1lcywgb3IgTlVMTCBwb2ludGVy cyB0byByZXByZXNlbnQgREVGQVVMVC4KQEAgLTEwMyw2ICsxMDksOCBAQCB0eXBlZGVmIHN0cnVj dCBSYW5nZVZhcgogdHlwZWRlZiBzdHJ1Y3QgVGFibGVGdW5jCiB7CiAJTm9kZVRhZwkJdHlwZTsK KwkvKiBYTUxUQUJMRSBvciBKU09OX1RBQkxFICovCisJVGFibGVGdW5jVHlwZSBmdW5jdHlwZTsK IAkvKiBsaXN0IG9mIG5hbWVzcGFjZSBVUkkgZXhwcmVzc2lvbnMgKi8KIAlMaXN0CSAgICpuc191 cmlzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAkvKiBsaXN0IG9mIG5hbWVz cGFjZSBuYW1lcyBvciBOVUxMICovCkBAIC0xMjMsOCArMTMxLDE0IEBAIHR5cGVkZWYgc3RydWN0 IFRhYmxlRnVuYwogCUxpc3QJICAgKmNvbGV4cHJzOwogCS8qIGxpc3Qgb2YgY29sdW1uIGRlZmF1 bHQgZXhwcmVzc2lvbnMgKi8KIAlMaXN0CSAgICpjb2xkZWZleHBycyBwZ19ub2RlX2F0dHIocXVl cnlfanVtYmxlX2lnbm9yZSk7CisJLyogbGlzdCBvZiBjb2x1bW4gdmFsdWUgZXhwcmVzc2lvbnMg Ki8KKwlMaXN0CSAgICpjb2x2YWxleHBycyBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9y ZSk7CisJLyogbGlzdCBvZiBQQVNTSU5HIGFyZ3VtZW50IGV4cHJlc3Npb25zICovCisJTGlzdAkg ICAqcGFzc2luZ3ZhbGV4cHJzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAkv KiBudWxsYWJpbGl0eSBmbGFnIGZvciBlYWNoIG91dHB1dCBjb2x1bW4gKi8KIAlCaXRtYXBzZXQg ICpub3RudWxscyBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CisJLyogSlNPTl9U QUJMRSBwbGFuICovCisJTm9kZQkgICAqcGxhbiBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2ln bm9yZSk7CiAJLyogY291bnRzIGZyb20gMDsgLTEgaWYgbm9uZSBzcGVjaWZpZWQgKi8KIAlpbnQJ CQlvcmRpbmFsaXR5Y29sIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAkvKiB0 b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwpAQCAtMTU2MSw2ICsxNTc1LDcgQEAg dHlwZWRlZiBlbnVtIEpzb25FeHByT3AKIAlKU09OX1ZBTFVFX09QLAkJCQkvKiBKU09OX1ZBTFVF KCkgKi8KIAlKU09OX1FVRVJZX09QLAkJCQkvKiBKU09OX1FVRVJZKCkgKi8KIAlKU09OX0VYSVNU U19PUCwJCQkJLyogSlNPTl9FWElTVFMoKSAqLworCUpTT05fVEFCTEVfT1AsCQkJCS8qIEpTT05f VEFCTEUoKSAqLwogfSBKc29uRXhwck9wOwogCiAvKgpAQCAtMTg0NSw2ICsxODYwLDQ5IEBAIHR5 cGVkZWYgc3RydWN0IEpzb25FeHByCiAJaW50CQkJbG9jYXRpb247CiB9IEpzb25FeHByOwogCisv KgorICogSnNvblRhYmxlUGF0aAorICoJCUEgSlNPTiBwYXRoIGV4cHJlc3Npb24gdG8gYmUgY29t cHV0ZWQgYXMgcGFydCBvZiBldmFsdWF0aW5nCisgKgkJYSBKU09OX1RBQkxFIHBsYW4gbm9kZQor ICovCit0eXBlZGVmIHN0cnVjdCBKc29uVGFibGVQYXRoCit7CisJTm9kZVRhZwkJdHlwZTsKKwor CUNvbnN0CSAgICp2YWx1ZTsKKwljaGFyCSAgICpuYW1lOworfQkJCUpzb25UYWJsZVBhdGg7CisK Ky8qCisgKiBKc29uVGFibGVTcGVjIC0KKyAqCQl0cmFuc2Zvcm1lZCByZXByZXNlbnRhdGlvbiBv ZiBhIEpTT05fVEFCTEUgcGxhbgorICovCit0eXBlZGVmIHN0cnVjdCBKc29uVGFibGVQbGFuCit7 CisJTm9kZVRhZwkJdHlwZTsKKworCUpzb25UYWJsZVBhdGggKnBhdGg7CisJTm9kZQkgICAqY2hp bGQ7CQkJLyogbmVzdGVkIGNvbHVtbnMsIGlmIGFueSAqLworCWJvb2wJCW91dGVySm9pbjsJCS8q IG91dGVyIG9yIGlubmVyIGpvaW4gZm9yIG5lc3RlZCBjb2x1bW5zPyAqLworCWludAkJCWNvbE1p bjsJCQkvKiBtaW4gY29sdW1uIGluZGV4IGluIHRoZSByZXN1bHRpbmcgY29sdW1uCisJCQkJCQkJ CSAqIGxpc3QgKi8KKwlpbnQJCQljb2xNYXg7CQkJLyogbWF4IGNvbHVtbiBpbmRleCBpbiB0aGUg cmVzdWx0aW5nIGNvbHVtbgorCQkJCQkJCQkgKiBsaXN0ICovCisJYm9vbAkJZXJyb3JPbkVycm9y OwkvKiBFUlJPUi9FTVBUWSBPTiBFUlJPUiBiZWhhdmlvciAqLworfSBKc29uVGFibGVQbGFuOwor CisvKgorICogSnNvblRhYmxlU2libGluZyAtCisgKgkJdHJhbnNmb3JtZWQgcmVwcmVzZW50YXRp b24gb2Ygam9pbmVkIHNpYmxpbmcgSlNPTl9UQUJMRSBwbGFuIG5vZGUKKyAqLwordHlwZWRlZiBz dHJ1Y3QgSnNvblRhYmxlU2libGluZworeworCU5vZGVUYWcJCXR5cGU7CisJTm9kZQkgICAqbGFy ZzsJCQkvKiBsZWZ0IGpvaW4gbm9kZSAqLworCU5vZGUJICAgKnJhcmc7CQkJLyogcmlnaHQgam9p biBub2RlICovCisJYm9vbAkJY3Jvc3M7CQkJLyogY3Jvc3Mgb3IgdW5pb24gam9pbj8gKi8KK30g SnNvblRhYmxlU2libGluZzsKKwogLyogLS0tLS0tLS0tLS0tLS0tLQogICogTnVsbFRlc3QKICAq CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9w YXJzZXIva3dsaXN0LmgKaW5kZXggOTRlMWNiNGRjZS4uZTJiYmVlYjIwOSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xp c3QuaApAQCAtMjQyLDYgKzI0Miw3IEBAIFBHX0tFWVdPUkQoImpzb25fb2JqZWN0YWdnIiwgSlNP Tl9PQkpFQ1RBR0csIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJq c29uX3F1ZXJ5IiwgSlNPTl9RVUVSWSwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoImpzb25fc2NhbGFyIiwgSlNPTl9TQ0FMQVIsIENPTF9OQU1FX0tFWVdPUkQsIEJB UkVfTEFCRUwpCiBQR19LRVlXT1JEKCJqc29uX3NlcmlhbGl6ZSIsIEpTT05fU0VSSUFMSVpFLCBD T0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgianNvbl90YWJsZSIsIEpT T05fVEFCTEUsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJqc29u X3ZhbHVlIiwgSlNPTl9WQUxVRSwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoImtlZXAiLCBLRUVQLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJrZXkiLCBLRVksIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKQEAgLTI4 NCw2ICsyODUsNyBAQCBQR19LRVlXT1JEKCJuYW1lcyIsIE5BTUVTLCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJuYXRpb25hbCIsIE5BVElPTkFMLCBDT0xfTkFN RV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgibmF0dXJhbCIsIE5BVFVSQUwsIFRZ UEVfRlVOQ19OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJuY2hhciIsIE5D SEFSLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgibmVzdGVkIiwg TkVTVEVELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJuZXci LCBORVcsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoIm5leHQi LCBORVhULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJuZmMi LCBORkMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKQEAgLTMzNCw3ICszMzYsOSBA QCBQR19LRVlXT1JEKCJwYXJ0aWFsIiwgUEFSVElBTCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJF X0xBQkVMKQogUEdfS0VZV09SRCgicGFydGl0aW9uIiwgUEFSVElUSU9OLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzaW5nIiwgUEFTU0lORywgVU5SRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFzc3dvcmQiLCBQQVNTV09S RCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgicGF0aCIsIFBB VEgsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBsYWNpbmci LCBQTEFDSU5HLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgicGxh biIsIFBMQU4sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBs YW5zIiwgUExBTlMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo InBvbGljeSIsIFBPTElDWSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZ V09SRCgicG9zaXRpb24iLCBQT1NJVElPTiwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9jbGF1c2UuaCBiL3NyYy9pbmNs dWRlL3BhcnNlci9wYXJzZV9jbGF1c2UuaAppbmRleCAzODI5ZGIwZmM0Li5lNzE3NjJiMTBjIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfY2xhdXNlLmgKKysrIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL3BhcnNlX2NsYXVzZS5oCkBAIC01MSw0ICs1MSw3IEBAIGV4dGVybiBMaXN0 ICphZGRUYXJnZXRUb1NvcnRMaXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVGFyZ2V0RW50cnkgKnRs ZSwKIGV4dGVybiBJbmRleCBhc3NpZ25Tb3J0R3JvdXBSZWYoVGFyZ2V0RW50cnkgKnRsZSwgTGlz dCAqdGxpc3QpOwogZXh0ZXJuIGJvb2wgdGFyZ2V0SXNJblNvcnRMaXN0KFRhcmdldEVudHJ5ICp0 bGUsIE9pZCBzb3J0b3AsIExpc3QgKnNvcnRMaXN0KTsKIAorLyogZnVuY3Rpb25zIGluIHBhcnNl X2pzb250YWJsZS5jICovCitleHRlcm4gUGFyc2VOYW1lc3BhY2VJdGVtICp0cmFuc2Zvcm1Kc29u VGFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uVGFibGUgKmp0KTsKKwogI2VuZGlmCQkJCQkJ CS8qIFBBUlNFX0NMQVVTRV9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9qc29u cGF0aC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaAppbmRleCA4OTdkZTIxYTUxLi44 MzhkYzhlMGZlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oCisrKyBi L3NyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmgKQEAgLTE1LDYgKzE1LDcgQEAKICNkZWZpbmUg SlNPTlBBVEhfSAogCiAjaW5jbHVkZSAiZm1nci5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL3RhYmxl ZnVuYy5oIgogI2luY2x1ZGUgIm5vZGVzL3BnX2xpc3QuaCIKICNpbmNsdWRlICJub2Rlcy9wcmlt bm9kZXMuaCIKICNpbmNsdWRlICJ1dGlscy9qc29uYi5oIgpAQCAtMjkyLDQgKzI5Myw2IEBAIGV4 dGVybiBEYXR1bSBKc29uUGF0aFF1ZXJ5KERhdHVtIGpiLCBKc29uUGF0aCAqanAsIEpzb25XcmFw cGVyIHdyYXBwZXIsCiBleHRlcm4gSnNvbmJWYWx1ZSAqSnNvblBhdGhWYWx1ZShEYXR1bSBqYiwg SnNvblBhdGggKmpwLCBib29sICplbXB0eSwKIAkJCQkJCQkJIGJvb2wgKmVycm9yLCBMaXN0ICp2 YXJzKTsKIAorZXh0ZXJuIFBHRExMSU1QT1JUIGNvbnN0IFRhYmxlRnVuY1JvdXRpbmUgSnNvbmJU YWJsZVJvdXRpbmU7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy90 ZXN0L2VjcGdfc2NoZWR1bGUgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZWNwZ19zY2hlZHVs ZQppbmRleCAzOTgxNGEzOWMxLi4yMjA4ZjQwZDY3IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNl cy9lY3BnL3Rlc3QvZWNwZ19zY2hlZHVsZQorKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qv ZWNwZ19zY2hlZHVsZQpAQCAtNTEsNiArNTEsNyBAQCB0ZXN0OiBzcWwvb2xkZXhlYwogdGVzdDog c3FsL3F1b3RlCiB0ZXN0OiBzcWwvc2hvdwogdGVzdDogc3FsL3NxbGpzb24KK3Rlc3Q6IHNxbC9z cWxqc29uX2pzb250YWJsZQogdGVzdDogc3FsL2luc3VwZAogdGVzdDogc3FsL3BhcnNlcgogdGVz dDogc3FsL3ByZXBhcmVhcwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4 cGVjdGVkL3NxbC1zcWxqc29uX2pzb250YWJsZS5jIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0 L2V4cGVjdGVkL3NxbC1zcWxqc29uX2pzb250YWJsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAuLjBiYmY0NDQzMTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW50ZXJm YWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb25fanNvbnRhYmxlLmMKQEAgLTAsMCAr MSwxMzIgQEAKKy8qIFByb2Nlc3NlZCBieSBlY3BnIChyZWdyZXNzaW9uIG1vZGUpICovCisvKiBU aGVzZSBpbmNsdWRlIGZpbGVzIGFyZSBhZGRlZCBieSB0aGUgcHJlcHJvY2Vzc29yICovCisjaW5j bHVkZSA8ZWNwZ2xpYi5oPgorI2luY2x1ZGUgPGVjcGdlcnJuby5oPgorI2luY2x1ZGUgPHNxbGNh Lmg+CisvKiBFbmQgb2YgYXV0b21hdGljIGluY2x1ZGUgc2VjdGlvbiAqLworI2RlZmluZSBFQ1BH ZGVidWcoWCxZKSBFQ1BHZGVidWcoKFgpKzEwMCwoWSkpCisKKyNsaW5lIDEgInNxbGpzb25fanNv bnRhYmxlLnBnYyIKKyNpbmNsdWRlIDxzdGRpby5oPgorCisKKyNsaW5lIDEgInNxbGNhLmgiCisj aWZuZGVmIFBPU1RHUkVTX1NRTENBX0gKKyNkZWZpbmUgUE9TVEdSRVNfU1FMQ0FfSAorCisjaWZu ZGVmIFBHRExMSU1QT1JUCisjaWYgIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5f XykKKyNkZWZpbmUgUEdETExJTVBPUlQgX19kZWNsc3BlYyAoZGxsaW1wb3J0KQorI2Vsc2UKKyNk ZWZpbmUgUEdETExJTVBPUlQKKyNlbmRpZgkJCQkJCQkvKiBfX0NZR1dJTl9fICovCisjZW5kaWYJ CQkJCQkJLyogUEdETExJTVBPUlQgKi8KKworI2RlZmluZSBTUUxFUlJNQ19MRU4JMTUwCisKKyNp ZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgoreworI2VuZGlmCisKK3N0cnVjdCBzcWxjYV90 Cit7CisJY2hhcgkJc3FsY2FpZFs4XTsKKwlsb25nCQlzcWxhYmM7CisJbG9uZwkJc3FsY29kZTsK KwlzdHJ1Y3QKKwl7CisJCWludAkJCXNxbGVycm1sOworCQljaGFyCQlzcWxlcnJtY1tTUUxFUlJN Q19MRU5dOworCX0JCQlzcWxlcnJtOworCWNoYXIJCXNxbGVycnBbOF07CisJbG9uZwkJc3FsZXJy ZFs2XTsKKwkvKiBFbGVtZW50IDA6IGVtcHR5CQkJCQkJKi8KKwkvKiAxOiBPSUQgb2YgcHJvY2Vz c2VkIHR1cGxlIGlmIGFwcGxpY2FibGUJCQkqLworCS8qIDI6IG51bWJlciBvZiByb3dzIHByb2Nl c3NlZAkJCQkqLworCS8qIGFmdGVyIGFuIElOU0VSVCwgVVBEQVRFIG9yCQkJCSovCisJLyogREVM RVRFIHN0YXRlbWVudAkJCQkJKi8KKwkvKiAzOiBlbXB0eQkJCQkJCSovCisJLyogNDogZW1wdHkJ CQkJCQkqLworCS8qIDU6IGVtcHR5CQkJCQkJKi8KKwljaGFyCQlzcWx3YXJuWzhdOworCS8qIEVs ZW1lbnQgMDogc2V0IHRvICdXJyBpZiBhdCBsZWFzdCBvbmUgb3RoZXIgaXMgJ1cnCSovCisJLyog MTogaWYgJ1cnIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgc3RyaW5nCQkqLworCS8qIHZhbHVlIHdh cyB0cnVuY2F0ZWQgd2hlbiBpdCB3YXMJCQkqLworCS8qIHN0b3JlZCBpbnRvIGEgaG9zdCB2YXJp YWJsZS4gICAgICAgICAgICAgKi8KKworCS8qCisJICogMjogaWYgJ1cnIGEgKGhvcGVmdWxseSkg bm9uLWZhdGFsIG5vdGljZSBvY2N1cnJlZAorCSAqLwkvKiAzOiBlbXB0eSAqLworCS8qIDQ6IGVt cHR5CQkJCQkJKi8KKwkvKiA1OiBlbXB0eQkJCQkJCSovCisJLyogNjogZW1wdHkJCQkJCQkqLwor CS8qIDc6IGVtcHR5CQkJCQkJKi8KKworCWNoYXIJCXNxbHN0YXRlWzVdOworfTsKKworc3RydWN0 IHNxbGNhX3QgKkVDUEdnZXRfc3FsY2Eodm9pZCk7CisKKyNpZm5kZWYgUE9TVEdSRVNfRUNQR19J TlRFUk5BTAorI2RlZmluZSBzcWxjYSAoKkVDUEdnZXRfc3FsY2EoKSkKKyNlbmRpZgorCisjaWZk ZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYKKworI2xpbmUgMyAic3FsanNvbl9q c29udGFibGUucGdjIgorCisKKyNsaW5lIDEgInJlZ3Jlc3Npb24uaCIKKworCisKKworCisKKyNs aW5lIDQgInNxbGpzb25fanNvbnRhYmxlLnBnYyIKKworCisvKiBleGVjIHNxbCB3aGVuZXZlciBz cWxlcnJvciAgc3FscHJpbnQgOyAqLworI2xpbmUgNiAic3FsanNvbl9qc29udGFibGUucGdjIgor CisKK2ludAorbWFpbiAoKQoreworICBFQ1BHZGVidWcgKDEsIHN0ZGVycik7CisKKyAgeyBFQ1BH Y29ubmVjdChfX0xJTkVfXywgMCwgImVjcGcxX3JlZ3Jlc3Npb24iICwgTlVMTCwgTlVMTCAsIE5V TEwsIDApOyAKKyNsaW5lIDEzICJzcWxqc29uX2pzb250YWJsZS5wZ2MiCisKK2lmIChzcWxjYS5z cWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CisjbGluZSAxMyAic3FsanNvbl9qc29udGFibGUucGdj IgorCisgIHsgRUNQR3NldGNvbW1pdChfX0xJTkVfXywgIm9uIiwgTlVMTCk7CisjbGluZSAxNCAi c3FsanNvbl9qc29udGFibGUucGdjIgorCitpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50 KCk7fQorI2xpbmUgMTQgInNxbGpzb25fanNvbnRhYmxlLnBnYyIKKworCisgIHsgRUNQR2RvKF9f TElORV9fLCAwLCAxLCBOVUxMLCAwLCBFQ1BHc3Rfbm9ybWFsLCAic2VsZWN0ICogZnJvbSBqc29u X3RhYmxlICgganNvbmIgJ251bGwnICwgJyRbKl0nIGFzIHAwIGNvbHVtbnMgKCBuZXN0ZWQgJyQn IGFzIHAxIGNvbHVtbnMgKCBuZXN0ZWQgcGF0aCAnJCcgYXMgcDExIGNvbHVtbnMgKCBmb28gaW50 ICkgLCBuZXN0ZWQgcGF0aCAnJCcgYXMgcDEyIGNvbHVtbnMgKCBiYXIgaW50ICkgKSAsIG5lc3Rl ZCBwYXRoICckJyBhcyBwMiBjb2x1bW5zICggbmVzdGVkIHBhdGggJyQnIGFzIHAyMSBjb2x1bW5z ICggYmF6IGludCApICkgKSBwbGFuICggcDEgKSApIGp0IiwgRUNQR3RfRU9JVCwgRUNQR3RfRU9S VCk7CisjbGluZSAyNiAic3FsanNvbl9qc29udGFibGUucGdjIgorCitpZiAoc3FsY2Euc3FsY29k ZSA8IDApIHNxbHByaW50KCk7fQorI2xpbmUgMjYgInNxbGpzb25fanNvbnRhYmxlLnBnYyIKKwor ICAvLyBlcnJvcgorCisgIHsgRUNQR2Rpc2Nvbm5lY3QoX19MSU5FX18sICJDVVJSRU5UIik7Cisj bGluZSAyOSAic3FsanNvbl9qc29udGFibGUucGdjIgorCitpZiAoc3FsY2Euc3FsY29kZSA8IDAp IHNxbHByaW50KCk7fQorI2xpbmUgMjkgInNxbGpzb25fanNvbnRhYmxlLnBnYyIKKworCisgIHJl dHVybiAwOworfQpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVk L3NxbC1zcWxqc29uX2pzb250YWJsZS5zdGRlcnIgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qv ZXhwZWN0ZWQvc3FsLXNxbGpzb25fanNvbnRhYmxlLnN0ZGVycgpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwLi41ODgxZmRiNWVlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2lu dGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uX2pzb250YWJsZS5zdGRlcnIK QEAgLTAsMCArMSwyMCBAQAorW05PX1BJRF06IEVDUEdkZWJ1Zzogc2V0IHRvIDEKK1tOT19QSURd OiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogRUNQR2Nvbm5lY3Q6IG9w ZW5pbmcgZGF0YWJhc2UgZWNwZzFfcmVncmVzc2lvbiBvbiA8REVGQVVMVD4gcG9ydCA8REVGQVVM VD4gIAorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBF Q1BHc2V0Y29tbWl0IG9uIGxpbmUgMTQ6IGFjdGlvbiAib24iOyBjb25uZWN0aW9uICJlY3BnMV9y ZWdyZXNzaW9uIgorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19Q SURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxNjogcXVlcnk6IHNlbGVjdCAqIGZyb20ganNvbl90 YWJsZSAoIGpzb25iICdudWxsJyAsICckWypdJyBhcyBwMCBjb2x1bW5zICggbmVzdGVkICckJyBh cyBwMSBjb2x1bW5zICggbmVzdGVkIHBhdGggJyQnIGFzIHAxMSBjb2x1bW5zICggZm9vIGludCAp ICwgbmVzdGVkIHBhdGggJyQnIGFzIHAxMiBjb2x1bW5zICggYmFyIGludCApICkgLCBuZXN0ZWQg cGF0aCAnJCcgYXMgcDIgY29sdW1ucyAoIG5lc3RlZCBwYXRoICckJyBhcyBwMjEgY29sdW1ucyAo IGJheiBpbnQgKSApICkgcGxhbiAoIHAxICkgKSBqdDsgd2l0aCAwIHBhcmFtZXRlcihzKSBvbiBj b25uZWN0aW9uIGVjcGcxX3JlZ3Jlc3Npb24KK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3Rh dGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTY6IHVzaW5nIFBRZXhl YworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3Bn X2NoZWNrX1BRcmVzdWx0IG9uIGxpbmUgMTY6IGJhZCByZXNwb25zZSAtIEVSUk9SOiAgaW52YWxp ZCBKU09OX1RBQkxFIHBsYW4KK0xJTkUgMTogLi4udGVkIHBhdGggJyQnIGFzIHAyMSBjb2x1bW5z ICggYmF6IGludCApICkgKSBwbGFuICggcDEgKSApIGp0CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIFBBVEgg bmFtZSBtaXNtYXRjaDogZXhwZWN0ZWQgcDAgYnV0IHAxIGlzIGdpdmVuLgorW05PX1BJRF06IHNx bGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiByYWlzaW5nIHNxbHN0YXRlIDQy NjAxIChzcWxjb2RlIC00MDApOiBpbnZhbGlkIEpTT05fVEFCTEUgcGxhbiBvbiBsaW5lIDE2Citb Tk9fUElEXTogc3FsY2E6IGNvZGU6IC00MDAsIHN0YXRlOiA0MjYwMQorU1FMIGVycm9yOiBpbnZh bGlkIEpTT05fVEFCTEUgcGxhbiBvbiBsaW5lIDE2CitbTk9fUElEXTogZWNwZ19maW5pc2g6IGNv bm5lY3Rpb24gZWNwZzFfcmVncmVzc2lvbiBjbG9zZWQKK1tOT19QSURdOiBzcWxjYTogY29kZTog MCwgc3RhdGU6IDAwMDAwCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhw ZWN0ZWQvc3FsLXNxbGpzb25fanNvbnRhYmxlLnN0ZG91dCBiL3NyYy9pbnRlcmZhY2VzL2VjcGcv dGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbl9qc29udGFibGUuc3Rkb3V0Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmU2OWRlMjliYjIKZGlmZiAtLWdpdCBhL3NyYy9pbnRl cmZhY2VzL2VjcGcvdGVzdC9zcWwvTWFrZWZpbGUgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qv c3FsL01ha2VmaWxlCmluZGV4IGQ4MjEzYjI1Y2UuLjdmMDMyNjU5YjkgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvTWFrZWZpbGUKKysrIGIvc3JjL2ludGVyZmFjZXMv ZWNwZy90ZXN0L3NxbC9NYWtlZmlsZQpAQCAtMjQsNiArMjQsNyBAQCBURVNUUyA9IGFycmF5IGFy cmF5LmMgXAogICAgICAgICBxdW90ZSBxdW90ZS5jIFwKICAgICAgICAgc2hvdyBzaG93LmMgXAog ICAgICAgICBzcWxqc29uIHNxbGpzb24uYyBcCisgICAgICAgIHNxbGpzb25fanNvbnRhYmxlIHNx bGpzb25fanNvbnRhYmxlLmMgXAogICAgICAgICBpbnN1cGQgaW5zdXBkLmMgXAogICAgICAgICB0 d29waGFzZSB0d29waGFzZS5jIFwKICAgICAgICAgaW5zdXBkIGluc3VwZC5jIFwKZGlmZiAtLWdp dCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvbWVzb24uYnVpbGQgYi9zcmMvaW50ZXJm YWNlcy9lY3BnL3Rlc3Qvc3FsL21lc29uLmJ1aWxkCmluZGV4IDEyZjI4ZTBhMjQuLjg4YTNhY2I5 YWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvbWVzb24uYnVpbGQK KysrIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L3NxbC9tZXNvbi5idWlsZApAQCAtMjYsNiAr MjYsNyBAQCBwZ2NfZmlsZXMgPSBbCiAgICdzaG93JywKICAgJ3NxbGRhJywKICAgJ3NxbGpzb24n LAorICAnc3FsanNvbl9qc29udGFibGUnLAogICAndHdvcGhhc2UnLAogXQogCmRpZmYgLS1naXQg YS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL3NxbGpzb25fanNvbnRhYmxlLnBnYyBiL3Ny Yy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvc3FsanNvbl9qc29udGFibGUucGdjCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjA2ZjhhMmI2MzQKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL3NxbGpzb25fanNvbnRhYmxlLnBnYwpA QCAtMCwwICsxLDMyIEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKworRVhFQyBTUUwgSU5DTFVERSBz cWxjYTsKK2V4ZWMgc3FsIGluY2x1ZGUgLi4vcmVncmVzc2lvbjsKKworRVhFQyBTUUwgV0hFTkVW RVIgU1FMRVJST1Igc3FscHJpbnQ7CisKK2ludAorbWFpbiAoKQoreworICBFQ1BHZGVidWcgKDEs IHN0ZGVycik7CisKKyAgRVhFQyBTUUwgQ09OTkVDVCBUTyBSRUdSRVNTREIxOworICBFWEVDIFNR TCBTRVQgQVVUT0NPTU1JVCA9IE9OOworCisgIEVYRUMgU1FMIFNFTEVDVCAqIEZST00gSlNPTl9U QUJMRShqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgJyQn IEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9v IGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJ CSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICck JyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAxKSkganQ7Cisg IC8vIGVycm9yCisKKyAgRVhFQyBTUUwgRElTQ09OTkVDVDsKKworICByZXR1cm4gMDsKK30KZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3FsanNvbl9qc29udGFibGUub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zcWxqc29uX2pzb250YWJsZS5vdXQKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uN2UyY2E4OTk4MwotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3FsanNvbl9qc29udGFibGUub3V0CkBA IC0wLDAgKzEsMTIwOCBAQAorLS0gSlNPTl9UQUJMRQorLS0gU2hvdWxkIGZhaWwgKEpTT05fVEFC TEUgY2FuIGJlIHVzZWQgb25seSBpbiBGUk9NIGNsYXVzZSkKK1NFTEVDVCBKU09OX1RBQkxFKCdb XScsICckJyk7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICIoIgorTElORSAxOiBT RUxFQ1QgSlNPTl9UQUJMRSgnW10nLCAnJCcpOworICAgICAgICAgICAgICAgICAgICAgICAgIF4K Ky0tIFNob3VsZCBmYWlsIChqc29uIGFyZ3VtZW50IG5vdCBzdXBwb3J0ZWQpCitTRUxFQ1QgKiBG Uk9NIEpTT05fVEFCTEUoTlVMTCBGT1JNQVQgSlNPTiwgJyQnIENPTFVNTlMgKGZvbyB0ZXh0KSk7 CitFUlJPUjogIEpTT05fVEFCTEUoKSBpcyBub3QgeWV0IGltcGxlbWVudGVkIGZvciB0aGUganNv biB0eXBlCitMSU5FIDE6IFNFTEVDVCAqIEZST00gSlNPTl9UQUJMRShOVUxMIEZPUk1BVCBKU09O LCAnJCcgQ09MVU1OUyAoZm9vIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorSElOVDogIFRyeSBjYXN0aW5nIHRoZSBhcmd1bWVudCB0byBqc29uYgorLS0gU2hvdWxkIGZh aWwgKG5vIGNvbHVtbnMpCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoTlVMTCwgJyQnIENPTFVN TlMgKCkpOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiKSIKK0xJTkUgMTogU0VM RUNUICogRlJPTSBKU09OX1RBQkxFKE5VTEwsICckJyBDT0xVTU5TICgpKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgKiBGUk9N IEpTT05fVEFCTEUgKE5VTEw6Ompzb25iLCAnJCcgQ09MVU1OUyAodjEgdGltZXN0YW1wKSkgQVMg ZiAodjEsIHYyKTsKK0VSUk9SOiAgSlNPTl9UQUJMRSBmdW5jdGlvbiBoYXMgMSBjb2x1bW5zIGF2 YWlsYWJsZSBidXQgMiBjb2x1bW5zIHNwZWNpZmllZAorLS0gTlVMTCA9PiBlbXB0eSB0YWJsZQor U0VMRUNUICogRlJPTSBKU09OX1RBQkxFKE5VTEw6Ompzb25iLCAnJCcgQ09MVU1OUyAoZm9vIGlu dCkpIGJhcjsKKyBmb28gCistLS0tLQorKDAgcm93cykKKworLS0KK1NFTEVDVCAqIEZST00gSlNP Tl9UQUJMRShqc29uYiAnMTIzJywgJyQnCisJQ09MVU1OUyAoaXRlbSBpbnQgUEFUSCAnJCcsIGZv byBpbnQpKSBiYXI7CisgaXRlbSB8IGZvbyAKKy0tLS0tLSstLS0tLQorICAxMjMgfCAgICAKKygx IHJvdykKKworLS0gSlNPTl9UQUJMRTogYmFzaWMgZnVuY3Rpb25hbGl0eQorQ1JFQVRFIERPTUFJ TiBqc29uYl90ZXN0X2RvbWFpbiBBUyB0ZXh0IENIRUNLICh2YWx1ZSA8PiAnZm9vJyk7CitDUkVB VEUgVEVNUCBUQUJMRSBqc29uX3RhYmxlX3Rlc3QgKGpzKSBBUworCShWQUxVRVMKKwkJKCcxJyks CisJCSgnW10nKSwKKwkJKCd7fScpLAorCQkoJ1sxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZv byIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0n KQorCSk7CistLSBSZWd1bGFyICJ1bmZvcm1hdHRlZCIgY29sdW1ucworU0VMRUNUICoKK0ZST00g anNvbl90YWJsZV90ZXN0IHZhbHMKKwlMRUZUIE9VVEVSIEpPSU4KKwlKU09OX1RBQkxFKAorCQl2 YWxzLmpzOjpqc29uYiwgJ2xheCAkWypdJworCQlDT0xVTU5TICgKKwkJCWlkIEZPUiBPUkRJTkFM SVRZLAorCQkJImludCIgaW50IFBBVEggJyQnLAorCQkJInRleHQiIHRleHQgUEFUSCAnJCcsCisJ CQkiY2hhcig0KSIgY2hhcig0KSBQQVRIICckJywKKwkJCSJib29sIiBib29sIFBBVEggJyQnLAor CQkJIm51bWVyaWMiIG51bWVyaWMgUEFUSCAnJCcsCisJCQkiZG9tYWluIiBqc29uYl90ZXN0X2Rv bWFpbiBQQVRIICckJywKKwkJCWpzIGpzb24gUEFUSCAnJCcsCisJCQlqYiBqc29uYiBQQVRIICck JworCQkpCisJKSBqdAorCU9OIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBqcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IGlkIHwgaW50IHwgIHRleHQgICB8IGNoYXIoNCkgfCBib29sIHwgbnVtZXJpYyB8IGRvbWFpbiAg fCAgICAgIGpzICAgICAgfCAgICAgIGpiICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLSstLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgMSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAxIHwgICAxIHwgMSAgICAgICB8IDEgICAgICAgfCAgICAgIHwgICAgICAg MSB8IDEgICAgICAgfCAxICAgICAgICAgICAgfCAxCisgW10gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgIHwgICAgIHwgICAgICAgICB8ICAgICAgICAgfCAgICAgIHwgICAgICAgICB8ICAg ICAgICAgfCAgICAgICAgICAgICAgfCAKKyB7fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDEgfCAgICAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgfCAgICAgICAgIHwgICAgICAgICB8 IHt9ICAgICAgICAgICB8IHt9CisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVs bCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICAxIHwg ICAxIHwgMSAgICAgICB8IDEgICAgICAgfCAgICAgIHwgICAgICAgMSB8IDEgICAgICAgfCAxICAg ICAgICAgICAgfCAxCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFs c2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICAyIHwgICAxIHwg MS4yMyAgICB8IDEuMjMgICAgfCAgICAgIHwgICAgMS4yMyB8IDEuMjMgICAgfCAxLjIzICAgICAg ICAgfCAxLjIzCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2Us IHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICAzIHwgICAyIHwgMiAg ICAgICB8IDIgICAgICAgfCAgICAgIHwgICAgICAgMiB8IDIgICAgICAgfCAiMiIgICAgICAgICAg fCAiMiIKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1 ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDQgfCAgICAgfCBhYWFhYWFh IHwgYWFhYSAgICB8ICAgICAgfCAgICAgICAgIHwgYWFhYWFhYSB8ICJhYWFhYWFhIiAgICB8ICJh YWFhYWFhIgorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0 cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgNSB8ICAgICB8IGZvbyAg ICAgfCBmb28gICAgIHwgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgImZvbyIgICAgICAgIHwg ImZvbyIKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1 ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDYgfCAgICAgfCAgICAgICAg IHwgICAgICAgICB8ICAgICAgfCAgICAgICAgIHwgICAgICAgICB8IG51bGwgICAgICAgICB8IG51 bGwKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwg eyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDcgfCAgIDAgfCBmYWxzZSAgIHwg ZmFscyAgICB8IGYgICAgfCAgICAgICAgIHwgZmFsc2UgICB8IGZhbHNlICAgICAgICB8IGZhbHNl CisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsi YWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA4IHwgICAxIHwgdHJ1ZSAgICB8IHRy dWUgICAgfCB0ICAgIHwgICAgICAgICB8IHRydWUgICAgfCB0cnVlICAgICAgICAgfCB0cnVlCisg WzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFh IjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA5IHwgICAgIHwgICAgICAgICB8ICAgICAg ICAgfCAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCB7ImFhYSI6IDEyM30gfCB7ImFhYSI6IDEy M30KKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwg eyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgMTAgfCAgICAgfCBbMSwyXSAgIHwg WzEsMiAgICB8ICAgICAgfCAgICAgICAgIHwgWzEsMl0gICB8ICJbMSwyXSIgICAgICB8ICJbMSwy XSIKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwg eyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgMTEgfCAgICAgfCAic3RyIiAgIHwg InN0ciAgICB8ICAgICAgfCAgICAgICAgIHwgInN0ciIgICB8ICJcInN0clwiIiAgICB8ICJcInN0 clwiIgorKDE0IHJvd3MpCisKKy0tICJmb3JtYXR0ZWQiIGNvbHVtbnMKK1NFTEVDVCAqCitGUk9N IGpzb25fdGFibGVfdGVzdCB2YWxzCisJTEVGVCBPVVRFUiBKT0lOCisJSlNPTl9UQUJMRSgKKwkJ dmFscy5qczo6anNvbmIsICdsYXggJFsqXScKKwkJQ09MVU1OUyAoCisJCQlpZCBGT1IgT1JESU5B TElUWSwKKwkJCWpzdCB0ZXh0ICAgIEZPUk1BVCBKU09OICBQQVRIICckJywKKwkJCWpzYyBjaGFy KDQpIEZPUk1BVCBKU09OICBQQVRIICckJywKKwkJCWpzdiB2YXJjaGFyKDQpIEZPUk1BVCBKU09O ICBQQVRIICckJywKKwkJCWpzYiBqc29uYiBGT1JNQVQgSlNPTiBQQVRIICckJywKKwkJCWpzYnEg anNvbmIgRk9STUFUIEpTT04gUEFUSCAnJCcgT01JVCBRVU9URVMKKwkJKQorCSkganQKKwlPTiB0 cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpZCB8ICAgICBqc3QgICAgICB8 IGpzYyAgfCBqc3YgIHwgICAgIGpzYiAgICAgIHwgICAgIGpzYnEgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMSB8IDEgICAgICAgICAgICB8IDEgICAgfCAxICAgIHwgMSAgICAgICAgICAgIHwgMQorIFtd ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICB8ICAgICAgICAgICAgICB8ICAgICAgfCAg ICAgIHwgICAgICAgICAgICAgIHwgCisge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAx IHwge30gICAgICAgICAgIHwge30gICB8IHt9ICAgfCB7fSAgICAgICAgICAgfCB7fQorIFsxLCAx LjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEy M30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgMSB8IDEgICAgICAgICAgICB8IDEgICAgfCAxICAg IHwgMSAgICAgICAgICAgIHwgMQorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51 bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgMiB8 IDEuMjMgICAgICAgICB8IDEuMjMgfCAxLjIzIHwgMS4yMyAgICAgICAgIHwgMS4yMworIFsxLCAx LjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEy M30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgMyB8ICIyIiAgICAgICAgICB8ICIyIiAgfCAiMiIg IHwgIjIiICAgICAgICAgIHwgMgorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51 bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgNCB8 ICJhYWFhYWFhIiAgICB8ICJhYWEgfCAiYWFhIHwgImFhYWFhYWEiICAgIHwgCisgWzEsIDEuMjMs ICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwg IlsxLDJdIiwgIlwic3RyXCIiXSB8ICA1IHwgImZvbyIgICAgICAgIHwgImZvbyB8ICJmb28gfCAi Zm9vIiAgICAgICAgfCAKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBm YWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDYgfCBudWxs ICAgICAgICAgfCBudWxsIHwgbnVsbCB8IG51bGwgICAgICAgICB8IG51bGwKKyBbMSwgMS4yMywg IjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAi WzEsMl0iLCAiXCJzdHJcIiJdIHwgIDcgfCBmYWxzZSAgICAgICAgfCBmYWxzIHwgZmFscyB8IGZh bHNlICAgICAgICB8IGZhbHNlCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVs bCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA4IHwg dHJ1ZSAgICAgICAgIHwgdHJ1ZSB8IHRydWUgfCB0cnVlICAgICAgICAgfCB0cnVlCisgWzEsIDEu MjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIz fSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA5IHwgeyJhYWEiOiAxMjN9IHwgeyJhYSB8IHsiYWEg fCB7ImFhYSI6IDEyM30gfCB7ImFhYSI6IDEyM30KKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIs ICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJc IiJdIHwgMTAgfCAiWzEsMl0iICAgICAgfCAiWzEsIHwgIlsxLCB8ICJbMSwyXSIgICAgICB8IFsx LCAyXQorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVl LCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAxMSB8ICJcInN0clwiIiAgICB8 ICJcInMgfCAiXCJzIHwgIlwic3RyXCIiICAgIHwgInN0ciIKKygxNCByb3dzKQorCistLSBFWElT VFMgY29sdW1ucworU0VMRUNUICoKK0ZST00ganNvbl90YWJsZV90ZXN0IHZhbHMKKwlMRUZUIE9V VEVSIEpPSU4KKwlKU09OX1RBQkxFKAorCQl2YWxzLmpzOjpqc29uYiwgJ2xheCAkWypdJworCQlD T0xVTU5TICgKKwkJCWlkIEZPUiBPUkRJTkFMSVRZLAorCQkJZXhpc3RzMSBib29sIEVYSVNUUyBQ QVRIICckLmFhYScsCisJCQlleGlzdHMyIGludCBFWElTVFMgUEFUSCAnJC5hYWEnLAorCQkJZXhp c3RzMyBpbnQgRVhJU1RTIFBBVEggJ3N0cmljdCAkLmFhYScgVU5LTk9XTiBPTiBFUlJPUiwKKwkJ CWV4aXN0czQgdGV4dCBFWElTVFMgUEFUSCAnc3RyaWN0ICQuYWFhJyBGQUxTRSBPTiBFUlJPUgor CQkpCisJKSBqdAorCU9OIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBqcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlk IHwgZXhpc3RzMSB8IGV4aXN0czIgfCBleGlzdHMzIHwgZXhpc3RzNCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLQorIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSB8IGYgICAgICAgfCAgICAg ICAwIHwgICAgICAgICB8IGZhbHNlCisgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgCisge30gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAxIHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UKKyBbMSwg MS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAx MjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDEgfCBmICAgICAgIHwgICAgICAgMCB8ICAgICAg ICAgfCBmYWxzZQorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNl LCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgMiB8IGYgICAgICAg fCAgICAgICAwIHwgICAgICAgICB8IGZhbHNlCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAi Zm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIi XSB8ICAzIHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UKKyBbMSwgMS4yMywg IjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAi WzEsMl0iLCAiXCJzdHJcIiJdIHwgIDQgfCBmICAgICAgIHwgICAgICAgMCB8ICAgICAgICAgfCBm YWxzZQorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVl LCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgNSB8IGYgICAgICAgfCAgICAg ICAwIHwgICAgICAgICB8IGZhbHNlCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwg bnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA2 IHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UKKyBbMSwgMS4yMywgIjIiLCAi YWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0i LCAiXCJzdHJcIiJdIHwgIDcgfCBmICAgICAgIHwgICAgICAgMCB8ICAgICAgICAgfCBmYWxzZQor IFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFh YSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgOCB8IGYgICAgICAgfCAgICAgICAwIHwg ICAgICAgICB8IGZhbHNlCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwg ZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA5IHwgdCAg ICAgICB8ICAgICAgIDEgfCAgICAgICAxIHwgdHJ1ZQorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFh IiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0 clwiIl0gfCAxMCB8IGYgICAgICAgfCAgICAgICAwIHwgICAgICAgICB8IGZhbHNlCisgWzEsIDEu MjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIz fSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8IDExIHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAg IHwgZmFsc2UKKygxNCByb3dzKQorCistLSBPdGhlciBtaXNjZWxsYW5vdXMgY2hlY2tzCitTRUxF Q1QgKgorRlJPTSBqc29uX3RhYmxlX3Rlc3QgdmFscworCUxFRlQgT1VURVIgSk9JTgorCUpTT05f VEFCTEUoCisJCXZhbHMuanM6Ompzb25iLCAnbGF4ICRbKl0nCisJCUNPTFVNTlMgKAorCQkJaWQg Rk9SIE9SRElOQUxJVFksCisJCQlhYWEgaW50LCAtLSAiYWFhIiBoYXMgaW1wbGljaXQgcGF0aCAn JC4iYWFhIicKKwkJCWFhYTEgaW50IFBBVEggJyQuYWFhJywKKwkJCWpzMiBqc29uIFBBVEggJyQn LAorCQkJanNiMncganNvbmIgUEFUSCAnJCcgV0lUSCBXUkFQUEVSLAorCQkJanNiMnEganNvbmIg UEFUSCAnJCcgT01JVCBRVU9URVMsCisJCQlpYSBpbnRbXSBQQVRIICckJywKKwkJCXRhIHRleHRb XSBQQVRIICckJywKKwkJCWpiYSBqc29uYltdIFBBVEggJyQnCisJCSkKKwkpIGp0CisJT04gdHJ1 ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaWQgfCBhYWEgfCBhYWExIHwgICAg IGpzMiAgICAgIHwgICAgIGpzYjJ3ICAgICAgfCAgICBqc2IycSAgICAgfCBpYSB8IHRhIHwgamJh IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rLS0tLS0rLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLSstLS0tKy0tLS0t CisgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxIHwgICAgIHwgICAgICB8IDEgICAg ICAgICAgICB8IFsxXSAgICAgICAgICAgIHwgMSAgICAgICAgICAgIHwgICAgfCAgICB8IAorIFtd ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICB8ICAgICB8ICAgICAgfCAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgIHwgICAgfCAKKyB7fSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDEgfCAgICAgfCAgICAgIHwge30gICAgICAgICAgIHwg W3t9XSAgICAgICAgICAgfCB7fSAgICAgICAgICAgfCAgICB8ICAgIHwgCisgWzEsIDEuMjMsICIy IiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsx LDJdIiwgIlwic3RyXCIiXSB8ICAxIHwgICAgIHwgICAgICB8IDEgICAgICAgICAgICB8IFsxXSAg ICAgICAgICAgIHwgMSAgICAgICAgICAgIHwgICAgfCAgICB8IAorIFsxLCAxLjIzLCAiMiIsICJh YWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIs ICJcInN0clwiIl0gfCAgMiB8ICAgICB8ICAgICAgfCAxLjIzICAgICAgICAgfCBbMS4yM10gICAg ICAgICB8IDEuMjMgICAgICAgICB8ICAgIHwgICAgfCAKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFh YSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJz dHJcIiJdIHwgIDMgfCAgICAgfCAgICAgIHwgIjIiICAgICAgICAgIHwgWyIyIl0gICAgICAgICAg fCAyICAgICAgICAgICAgfCAgICB8ICAgIHwgCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAi Zm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIi XSB8ICA0IHwgICAgIHwgICAgICB8ICJhYWFhYWFhIiAgICB8IFsiYWFhYWFhYSJdICAgIHwgICAg ICAgICAgICAgIHwgICAgfCAgICB8IAorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIs IG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAg NSB8ICAgICB8ICAgICAgfCAiZm9vIiAgICAgICAgfCBbImZvbyJdICAgICAgICB8ICAgICAgICAg ICAgICB8ICAgIHwgICAgfCAKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxs LCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDYgfCAg ICAgfCAgICAgIHwgbnVsbCAgICAgICAgIHwgW251bGxdICAgICAgICAgfCBudWxsICAgICAgICAg fCAgICB8ICAgIHwgCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFs c2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA3IHwgICAgIHwg ICAgICB8IGZhbHNlICAgICAgICB8IFtmYWxzZV0gICAgICAgIHwgZmFsc2UgICAgICAgIHwgICAg fCAgICB8IAorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0 cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgOCB8ICAgICB8ICAgICAg fCB0cnVlICAgICAgICAgfCBbdHJ1ZV0gICAgICAgICB8IHRydWUgICAgICAgICB8ICAgIHwgICAg fCAKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwg eyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDkgfCAxMjMgfCAgMTIzIHwgeyJh YWEiOiAxMjN9IHwgW3siYWFhIjogMTIzfV0gfCB7ImFhYSI6IDEyM30gfCAgICB8ICAgIHwgCisg WzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFh IjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8IDEwIHwgICAgIHwgICAgICB8ICJbMSwyXSIg ICAgICB8IFsiWzEsMl0iXSAgICAgIHwgWzEsIDJdICAgICAgIHwgICAgfCAgICB8IAorIFsxLCAx LjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEy M30sICJbMSwyXSIsICJcInN0clwiIl0gfCAxMSB8ICAgICB8ICAgICAgfCAiXCJzdHJcIiIgICAg fCBbIlwic3RyXCIiXSAgICB8ICJzdHIiICAgICAgICB8ICAgIHwgICAgfCAKKygxNCByb3dzKQor CistLSBKU09OX1RBQkxFOiBUZXN0IGJhY2t3YXJkIHBhcnNpbmcKK0NSRUFURSBWSUVXIGpzb25i X3RhYmxlX3ZpZXcgQVMKK1NFTEVDVCAqIEZST00KKwlKU09OX1RBQkxFKAorCQlqc29uYiAnbnVs bCcsICdsYXggJFsqXScgUEFTU0lORyAxICsgMiBBUyBhLCBqc29uICciZm9vIicgQVMgImIgYyIK KwkJQ09MVU1OUyAoCisJCQlpZCBGT1IgT1JESU5BTElUWSwKKwkJCSJpbnQiIGludCBQQVRIICck JywKKwkJCSJ0ZXh0IiB0ZXh0IFBBVEggJyQnLAorCQkJImNoYXIoNCkiIGNoYXIoNCkgUEFUSCAn JCcsCisJCQkiYm9vbCIgYm9vbCBQQVRIICckJywKKwkJCSJudW1lcmljIiBudW1lcmljIFBBVEgg JyQnLAorCQkJImRvbWFpbiIganNvbmJfdGVzdF9kb21haW4gUEFUSCAnJCcsCisJCQlqcyBqc29u IFBBVEggJyQnLAorCQkJamIganNvbmIgUEFUSCAnJCcsCisJCQlqc3QgdGV4dCAgICBGT1JNQVQg SlNPTiAgUEFUSCAnJCcsCisJCQlqc2MgY2hhcig0KSBGT1JNQVQgSlNPTiAgUEFUSCAnJCcsCisJ CQlqc3YgdmFyY2hhcig0KSBGT1JNQVQgSlNPTiAgUEFUSCAnJCcsCisJCQlqc2IganNvbmIgICBG T1JNQVQgSlNPTiBQQVRIICckJywKKwkJCWpzYnEganNvbmIgRk9STUFUIEpTT04gUEFUSCAnJCcg T01JVCBRVU9URVMsCisJCQlhYWEgaW50LCAtLSBpbXBsaWNpdCBwYXRoICckLiJhYWEiJywKKwkJ CWFhYTEgaW50IFBBVEggJyQuYWFhJywKKwkJCWV4aXN0czEgYm9vbCBFWElTVFMgUEFUSCAnJC5h YWEnLAorCQkJZXhpc3RzMiBpbnQgRVhJU1RTIFBBVEggJyQuYWFhJyBUUlVFIE9OIEVSUk9SLAor CQkJZXhpc3RzMyB0ZXh0IEVYSVNUUyBQQVRIICdzdHJpY3QgJC5hYWEnIFVOS05PV04gT04gRVJS T1IsCisJCQlqczIganNvbiBQQVRIICckJywKKwkJCWpzYjJ3IGpzb25iIFBBVEggJyQnIFdJVEgg V1JBUFBFUiwKKwkJCWpzYjJxIGpzb25iIFBBVEggJyQnIE9NSVQgUVVPVEVTLAorCQkJaWEgaW50 W10gUEFUSCAnJCcsCisJCQl0YSB0ZXh0W10gUEFUSCAnJCcsCisJCQlqYmEganNvbmJbXSBQQVRI ICckJywKKwkJCU5FU1RFRCBQQVRIICckWzFdJyBBUyBwMSBDT0xVTU5TICgKKwkJCQlhMSBpbnQs CisJCQkJTkVTVEVEIFBBVEggJyRbKl0nIEFTICJwMSAxIiBDT0xVTU5TICgKKwkJCQkJYTExIHRl eHQKKwkJCQkpLAorCQkJCWIxIHRleHQKKwkJCSksCisJCQlORVNURUQgUEFUSCAnJFsyXScgQVMg cDIgQ09MVU1OUyAoCisJCQkJTkVTVEVEIFBBVEggJyRbKl0nIEFTICJwMjoxIiBDT0xVTU5TICgK KwkJCQkJYTIxIHRleHQKKwkJCQkpLAorCQkJCU5FU1RFRCBQQVRIICckWypdJyBBUyBwMjIgQ09M VU1OUyAoCisJCQkJCWEyMiB0ZXh0CisJCQkJKQorCQkJKQorCQkpCisJKTsKK1xzdiBqc29uYl90 YWJsZV92aWV3CitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1YmxpYy5qc29uYl90YWJsZV92aWV3 IEFTCisgU0VMRUNUIGlkLAorICAgICJpbnQiLAorICAgIHRleHQsCisgICAgImNoYXIoNCkiLAor ICAgIGJvb2wsCisgICAgIm51bWVyaWMiLAorICAgIGRvbWFpbiwKKyAgICBqcywKKyAgICBqYiwK KyAgICBqc3QsCisgICAganNjLAorICAgIGpzdiwKKyAgICBqc2IsCisgICAganNicSwKKyAgICBh YWEsCisgICAgYWFhMSwKKyAgICBleGlzdHMxLAorICAgIGV4aXN0czIsCisgICAgZXhpc3RzMywK KyAgICBqczIsCisgICAganNiMncsCisgICAganNiMnEsCisgICAgaWEsCisgICAgdGEsCisgICAg amJhLAorICAgIGExLAorICAgIGIxLAorICAgIGExMSwKKyAgICBhMjEsCisgICAgYTIyCisgICBG Uk9NIEpTT05fVEFCTEUoCisgICAgICAgICAgICAnbnVsbCc6Ompzb25iLCAnJFsqXScgQVMganNv bl90YWJsZV9wYXRoXzAKKyAgICAgICAgICAgIFBBU1NJTkcKKyAgICAgICAgICAgICAgICAxICsg MiBBUyBhLAorICAgICAgICAgICAgICAgICciZm9vIic6Ompzb24gQVMgImIgYyIKKyAgICAgICAg ICAgIENPTFVNTlMgKAorICAgICAgICAgICAgICAgIGlkIEZPUiBPUkRJTkFMSVRZLAorICAgICAg ICAgICAgICAgICJpbnQiIGludGVnZXIgUEFUSCAnJCcsCisgICAgICAgICAgICAgICAgdGV4dCB0 ZXh0IFBBVEggJyQnLAorICAgICAgICAgICAgICAgICJjaGFyKDQpIiBjaGFyYWN0ZXIoNCkgUEFU SCAnJCcsCisgICAgICAgICAgICAgICAgYm9vbCBib29sZWFuIFBBVEggJyQnLAorICAgICAgICAg ICAgICAgICJudW1lcmljIiBudW1lcmljIFBBVEggJyQnLAorICAgICAgICAgICAgICAgIGRvbWFp biBqc29uYl90ZXN0X2RvbWFpbiBQQVRIICckJywKKyAgICAgICAgICAgICAgICBqcyBqc29uIFBB VEggJyQnLAorICAgICAgICAgICAgICAgIGpiIGpzb25iIFBBVEggJyQnLAorICAgICAgICAgICAg ICAgIGpzdCB0ZXh0IEZPUk1BVCBKU09OIFBBVEggJyQnLAorICAgICAgICAgICAgICAgIGpzYyBj aGFyYWN0ZXIoNCkgRk9STUFUIEpTT04gUEFUSCAnJCcsCisgICAgICAgICAgICAgICAganN2IGNo YXJhY3RlciB2YXJ5aW5nKDQpIEZPUk1BVCBKU09OIFBBVEggJyQnLAorICAgICAgICAgICAgICAg IGpzYiBqc29uYiBQQVRIICckJywKKyAgICAgICAgICAgICAgICBqc2JxIGpzb25iIFBBVEggJyQn IE9NSVQgUVVPVEVTLAorICAgICAgICAgICAgICAgIGFhYSBpbnRlZ2VyIFBBVEggJyQuImFhYSIn LAorICAgICAgICAgICAgICAgIGFhYTEgaW50ZWdlciBQQVRIICckLiJhYWEiJywKKyAgICAgICAg ICAgICAgICBleGlzdHMxIGJvb2xlYW4gRVhJU1RTIFBBVEggJyQuImFhYSInLAorICAgICAgICAg ICAgICAgIGV4aXN0czIgaW50ZWdlciBFWElTVFMgUEFUSCAnJC4iYWFhIicgVFJVRSBPTiBFUlJP UiwKKyAgICAgICAgICAgICAgICBleGlzdHMzIHRleHQgRVhJU1RTIFBBVEggJ3N0cmljdCAkLiJh YWEiJyBVTktOT1dOIE9OIEVSUk9SLAorICAgICAgICAgICAgICAgIGpzMiBqc29uIFBBVEggJyQn LAorICAgICAgICAgICAgICAgIGpzYjJ3IGpzb25iIFBBVEggJyQnIFdJVEggVU5DT05ESVRJT05B TCBXUkFQUEVSLAorICAgICAgICAgICAgICAgIGpzYjJxIGpzb25iIFBBVEggJyQnIE9NSVQgUVVP VEVTLAorICAgICAgICAgICAgICAgIGlhIGludGVnZXJbXSBQQVRIICckJywKKyAgICAgICAgICAg ICAgICB0YSB0ZXh0W10gUEFUSCAnJCcsCisgICAgICAgICAgICAgICAgamJhIGpzb25iW10gUEFU SCAnJCcsCisgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyRbMV0nIEFTIHAxCisgICAgICAg ICAgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAgICAgIGExIGludGVnZXIgUEFUSCAn JC4iYTEiJywKKyAgICAgICAgICAgICAgICAgICAgYjEgdGV4dCBQQVRIICckLiJiMSInLAorICAg ICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJFsqXScgQVMgInAxIDEiCisgICAgICAgICAg ICAgICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICAgYTExIHRleHQgUEFU SCAnJC4iYTExIicKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICksCisg ICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyRbMl0nIEFTIHAyCisgICAgICAgICAgICAgICAg Q09MVU1OUyAoCisgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckWypdJyBBUyAicDI6 MSIKKyAgICAgICAgICAgICAgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAgICAgICAg ICBhMjEgdGV4dCBQQVRIICckLiJhMjEiJworICAgICAgICAgICAgICAgICAgICApLAorICAgICAg ICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJFsqXScgQVMgcDIyCisgICAgICAgICAgICAgICAg ICAgIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICAgYTIyIHRleHQgUEFUSCAnJC4i YTIyIicKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAg ICAgICkKKyAgICAgICAgICAgIFBMQU4gKGpzb25fdGFibGVfcGF0aF8wIE9VVEVSICgocDEgT1VU RVIgInAxIDEiKSBVTklPTiAocDIgT1VURVIgKCJwMjoxIiBVTklPTiBwMjIpKSkpCisgICAgICAg ICkKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkgU0VMRUNUICogRlJPTSBqc29uYl90YWJs ZV92aWV3OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVGFibGUgRnVuY3Rpb24gU2NhbiBvbiAiSlNPTl9U QUJMRSIgImpzb25fdGFibGUiCisgICBPdXRwdXQ6ICJqc29uX3RhYmxlIi5pZCwgImpzb25fdGFi bGUiLiJpbnQiLCAianNvbl90YWJsZSIudGV4dCwgImpzb25fdGFibGUiLiJjaGFyKDQpIiwgImpz b25fdGFibGUiLmJvb2wsICJqc29uX3RhYmxlIi4ibnVtZXJpYyIsICJqc29uX3RhYmxlIi5kb21h aW4sICJqc29uX3RhYmxlIi5qcywgImpzb25fdGFibGUiLmpiLCAianNvbl90YWJsZSIuanN0LCAi anNvbl90YWJsZSIuanNjLCAianNvbl90YWJsZSIuanN2LCAianNvbl90YWJsZSIuanNiLCAianNv bl90YWJsZSIuanNicSwgImpzb25fdGFibGUiLmFhYSwgImpzb25fdGFibGUiLmFhYTEsICJqc29u X3RhYmxlIi5leGlzdHMxLCAianNvbl90YWJsZSIuZXhpc3RzMiwgImpzb25fdGFibGUiLmV4aXN0 czMsICJqc29uX3RhYmxlIi5qczIsICJqc29uX3RhYmxlIi5qc2IydywgImpzb25fdGFibGUiLmpz YjJxLCAianNvbl90YWJsZSIuaWEsICJqc29uX3RhYmxlIi50YSwgImpzb25fdGFibGUiLmpiYSwg Impzb25fdGFibGUiLmExLCAianNvbl90YWJsZSIuYjEsICJqc29uX3RhYmxlIi5hMTEsICJqc29u X3RhYmxlIi5hMjEsICJqc29uX3RhYmxlIi5hMjIKKyAgIFRhYmxlIEZ1bmN0aW9uIENhbGw6IEpT T05fVEFCTEUoJ251bGwnOjpqc29uYiwgJyRbKl0nIEFTIGpzb25fdGFibGVfcGF0aF8wIFBBU1NJ TkcgMyBBUyBhLCAnImZvbyInOjpqc29uYiBBUyAiYiBjIiBDT0xVTU5TIChpZCBGT1IgT1JESU5B TElUWSwgImludCIgaW50ZWdlciBQQVRIICckJywgdGV4dCB0ZXh0IFBBVEggJyQnLCAiY2hhcig0 KSIgY2hhcmFjdGVyKDQpIFBBVEggJyQnLCBib29sIGJvb2xlYW4gUEFUSCAnJCcsICJudW1lcmlj IiBudW1lcmljIFBBVEggJyQnLCBkb21haW4ganNvbmJfdGVzdF9kb21haW4gUEFUSCAnJCcsIGpz IGpzb24gUEFUSCAnJCcsIGpiIGpzb25iIFBBVEggJyQnLCBqc3QgdGV4dCBGT1JNQVQgSlNPTiBQ QVRIICckJywganNjIGNoYXJhY3Rlcig0KSBGT1JNQVQgSlNPTiBQQVRIICckJywganN2IGNoYXJh Y3RlciB2YXJ5aW5nKDQpIEZPUk1BVCBKU09OIFBBVEggJyQnLCBqc2IganNvbmIgUEFUSCAnJCcs IGpzYnEganNvbmIgUEFUSCAnJCcgT01JVCBRVU9URVMsIGFhYSBpbnRlZ2VyIFBBVEggJyQuImFh YSInLCBhYWExIGludGVnZXIgUEFUSCAnJC4iYWFhIicsIGV4aXN0czEgYm9vbGVhbiBFWElTVFMg UEFUSCAnJC4iYWFhIicsIGV4aXN0czIgaW50ZWdlciBFWElTVFMgUEFUSCAnJC4iYWFhIicgVFJV RSBPTiBFUlJPUiwgZXhpc3RzMyB0ZXh0IEVYSVNUUyBQQVRIICdzdHJpY3QgJC4iYWFhIicgVU5L Tk9XTiBPTiBFUlJPUiwganMyIGpzb24gUEFUSCAnJCcsIGpzYjJ3IGpzb25iIFBBVEggJyQnIFdJ VEggVU5DT05ESVRJT05BTCBXUkFQUEVSLCBqc2IycSBqc29uYiBQQVRIICckJyBPTUlUIFFVT1RF UywgaWEgaW50ZWdlcltdIFBBVEggJyQnLCB0YSB0ZXh0W10gUEFUSCAnJCcsIGpiYSBqc29uYltd IFBBVEggJyQnLCBORVNURUQgUEFUSCAnJFsxXScgQVMgcDEgQ09MVU1OUyAoYTEgaW50ZWdlciBQ QVRIICckLiJhMSInLCBiMSB0ZXh0IFBBVEggJyQuImIxIicsIE5FU1RFRCBQQVRIICckWypdJyBB UyAicDEgMSIgQ09MVU1OUyAoYTExIHRleHQgUEFUSCAnJC4iYTExIicpKSwgTkVTVEVEIFBBVEgg JyRbMl0nIEFTIHAyIENPTFVNTlMgKCBORVNURUQgUEFUSCAnJFsqXScgQVMgInAyOjEiIENPTFVN TlMgKGEyMSB0ZXh0IFBBVEggJyQuImEyMSInKSwgTkVTVEVEIFBBVEggJyRbKl0nIEFTIHAyMiBD T0xVTU5TIChhMjIgdGV4dCBQQVRIICckLiJhMjIiJykpKSBQTEFOIChqc29uX3RhYmxlX3BhdGhf MCBPVVRFUiAoKHAxIE9VVEVSICJwMSAxIikgVU5JT04gKHAyIE9VVEVSICgicDI6MSIgVU5JT04g cDIyKSkpKSkKKygzIHJvd3MpCisKKy0tIEpTT05fVEFCTEUoKSB3aXRoIGFsaWFzCitFWFBMQUlO IChDT1NUUyBPRkYsIFZFUkJPU0UpCitTRUxFQ1QgKiBGUk9NCisJSlNPTl9UQUJMRSgKKwkJanNv bmIgJ251bGwnLCAnbGF4ICRbKl0nIFBBU1NJTkcgMSArIDIgQVMgYSwganNvbiAnImZvbyInIEFT ICJiIGMiCisJCUNPTFVNTlMgKAorCQkJaWQgRk9SIE9SRElOQUxJVFksCisJCQkiaW50IiBpbnQg UEFUSCAnJCcsCisJCQkidGV4dCIgdGV4dCBQQVRIICckJworCSkpIGpzb25fdGFibGVfZnVuYzsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVGFibGUgRnVuY3Rpb24gU2Nh biBvbiAiSlNPTl9UQUJMRSIganNvbl90YWJsZV9mdW5jCisgICBPdXRwdXQ6IGlkLCAiaW50Iiwg dGV4dAorICAgVGFibGUgRnVuY3Rpb24gQ2FsbDogSlNPTl9UQUJMRSgnbnVsbCc6Ompzb25iLCAn JFsqXScgQVMganNvbl90YWJsZV9wYXRoXzAgUEFTU0lORyAzIEFTIGEsICciZm9vIic6Ompzb25i IEFTICJiIGMiIENPTFVNTlMgKGlkIEZPUiBPUkRJTkFMSVRZLCAiaW50IiBpbnRlZ2VyIFBBVEgg JyQnLCB0ZXh0IHRleHQgUEFUSCAnJCcpIFBMQU4gKGpzb25fdGFibGVfcGF0aF8wKSkKKygzIHJv d3MpCisKK0RST1AgVklFVyBqc29uYl90YWJsZV92aWV3OworRFJPUCBET01BSU4ganNvbmJfdGVz dF9kb21haW47CistLSBKU09OX1RBQkxFOiBvbmx5IG9uZSBGT1IgT1JESU5BTElUWSBjb2x1bW5z IGFsbG93ZWQKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnMScsICckJyBDT0xVTU5T IChpZCBGT1IgT1JESU5BTElUWSwgaWQyIEZPUiBPUkRJTkFMSVRZLCBhIGludCBQQVRIICckLmEn IEVSUk9SIE9OIEVNUFRZKSkganQ7CitFUlJPUjogIGNhbm5vdCB1c2UgbW9yZSB0aGFuIG9uZSBG T1IgT1JESU5BTElUWSBjb2x1bW4KK0xJTkUgMTogLi4uX1RBQkxFKGpzb25iICcxJywgJyQnIENP TFVNTlMgKGlkIEZPUiBPUkRJTkFMSVRZLCBpZDIgRk9SIE9SLi4uCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUICog RlJPTSBKU09OX1RBQkxFKGpzb25iICcxJywgJyQnIENPTFVNTlMgKGlkIEZPUiBPUkRJTkFMSVRZ LCBhIGludCBQQVRIICckJyBFUlJPUiBPTiBFTVBUWSkpIGp0OworIGlkIHwgYSAKKy0tLS0rLS0t CisgIDEgfCAxCisoMSByb3cpCisKKy0tIEpTT05fVEFCTEU6IE9OIEVNUFRZL09OIEVSUk9SIGJl aGF2aW9yCitTRUxFQ1QgKgorRlJPTQorCShWQUxVRVMgKCcxJyksICgnImVyciInKSkgdmFscyhq cyksCisJSlNPTl9UQUJMRSh2YWxzLmpzOjpqc29uYiwgJyQnIENPTFVNTlMgKGEgaW50IFBBVEgg JyQnKSkganQ7CisgIGpzICAgfCBhIAorLS0tLS0tLSstLS0KKyAxICAgICB8IDEKKyAiZXJyIiB8 ICAKKygyIHJvd3MpCisKK1NFTEVDVCAqCitGUk9NCisJKFZBTFVFUyAoJzEnKSwgKCciZXJyIicp KSB2YWxzKGpzKQorCQlMRUZUIE9VVEVSIEpPSU4KKwlKU09OX1RBQkxFKHZhbHMuanM6Ompzb25i LCAnJCcgQ09MVU1OUyAoYSBpbnQgUEFUSCAnJCcpIEVSUk9SIE9OIEVSUk9SKSBqdAorCQlPTiB0 cnVlOworRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAiZXJy IgorU0VMRUNUICoKK0ZST00KKwkoVkFMVUVTICgnMScpLCAoJyJlcnIiJykpIHZhbHMoanMpCisJ CUxFRlQgT1VURVIgSk9JTgorCUpTT05fVEFCTEUodmFscy5qczo6anNvbmIsICckJyBDT0xVTU5T IChhIGludCBQQVRIICckJyBFUlJPUiBPTiBFUlJPUikpIGp0CisJCU9OIHRydWU7CitFUlJPUjog IGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGludGVnZXI6ICJlcnIiCitTRUxFQ1QgKiBG Uk9NIEpTT05fVEFCTEUoanNvbmIgJzEnLCAnJCcgQ09MVU1OUyAoYSBpbnQgUEFUSCAnJC5hJyBF UlJPUiBPTiBFTVBUWSkpIGp0OworRVJST1I6ICBubyBTUUwvSlNPTiBpdGVtCitTRUxFQ1QgKiBG Uk9NIEpTT05fVEFCTEUoanNvbmIgJzEnLCAnJCcgQ09MVU1OUyAoYSBpbnQgUEFUSCAnc3RyaWN0 ICQuYScgRVJST1IgT04gRU1QVFkpIEVSUk9SIE9OIEVSUk9SKSBqdDsKK0VSUk9SOiAganNvbnBh dGggbWVtYmVyIGFjY2Vzc29yIGNhbiBvbmx5IGJlIGFwcGxpZWQgdG8gYW4gb2JqZWN0CitTRUxF Q1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJzEnLCAnJCcgQ09MVU1OUyAoYSBpbnQgUEFUSCAn bGF4ICQuYScgRVJST1IgT04gRU1QVFkpIEVSUk9SIE9OIEVSUk9SKSBqdDsKK0VSUk9SOiAgbm8g U1FML0pTT04gaXRlbQorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcg Q09MVU1OUyAoYSBpbnQgUEFUSCAnJCcgICBERUZBVUxUIDEgT04gRU1QVFkgREVGQVVMVCAyIE9O IEVSUk9SKSkganQ7CisgYSAKKy0tLQorIDIKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBKU09O X1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBpbnQgUEFUSCAnc3RyaWN0ICQuYScg REVGQVVMVCAxIE9OIEVNUFRZIERFRkFVTFQgMiBPTiBFUlJPUikpIGp0OworIGEgCistLS0KKyAy CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENP TFVNTlMgKGEgaW50IFBBVEggJ2xheCAkLmEnIERFRkFVTFQgMSBPTiBFTVBUWSBERUZBVUxUIDIg T04gRVJST1IpKSBqdDsKKyBhIAorLS0tCisgMQorKDEgcm93KQorCistLSBKU09OX1RBQkxFOiBF WElTVFMgUEFUSCB0eXBlcworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAn JCcgQ09MVU1OUyAoYSBpbnQ0IEVYSVNUUyBQQVRIICckLmEnKSk7CisgYSAKKy0tLQorIDAKKygx IHJvdykKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1O UyAoYSBpbnQyIEVYSVNUUyBQQVRIICckLmEnKSk7CitFUlJPUjogIGNhbm5vdCBjYXN0IHR5cGUg Ym9vbGVhbiB0byBzbWFsbGludAorTElORSAxOiAuLi5FTEVDVCAqIEZST00gSlNPTl9UQUJMRShq c29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50MiBFWEkuLi4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgKiBG Uk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludDggRVhJU1RTIFBB VEggJyQuYScpKTsKK0VSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSBib29sZWFuIHRvIGJpZ2ludAor TElORSAxOiAuLi5FTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVN TlMgKGEgaW50OCBFWEkuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIg JyJhIicsICckJyBDT0xVTU5TIChhIGZsb2F0NCBFWElTVFMgUEFUSCAnJC5hJykpOworRVJST1I6 ICBjYW5ub3QgY2FzdCB0eXBlIGJvb2xlYW4gdG8gcmVhbAorTElORSAxOiAuLi5FTEVDVCAqIEZS T00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgZmxvYXQ0IEUuLi4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChh IGNoYXIoMykgRVhJU1RTIFBBVEggJyQuYScpKTsKKyAgYSAgCistLS0tLQorIGZhbAorKDEgcm93 KQorCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChh IGpzb24gRVhJU1RTIFBBVEggJyQuYScpKTsKK0VSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSBib29s ZWFuIHRvIGpzb24KK0xJTkUgMTogLi4uRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJh IicsICckJyBDT0xVTU5TIChhIGpzb24gRVhJLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUICogRlJPTSBKU09O X1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBqc29uYiBFWElTVFMgUEFUSCAnJC5h JykpOworRVJST1I6ICBjYW5ub3QgY2FzdCB0eXBlIGJvb2xlYW4gdG8ganNvbmIKK0xJTkUgMTog Li4uRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGpz b25iIEVYLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorLS0gSlNPTl9UQUJMRTogV1JBUFBFUi9RVU9URVMgY2xhdXNlcyBv biBzY2FsYXIgY29sdW1ucworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcid29ybGQi JywgJyQnIENPTFVNTlMgKGl0ZW0gdGV4dCBQQVRIICckJyBLRUVQIFFVT1RFUyBPTiBTQ0FMQVIg U1RSSU5HKSk7CisgIGl0ZW0gICAKKy0tLS0tLS0tLQorICJ3b3JsZCIKKygxIHJvdykKKworU0VM RUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcid29ybGQiJywgJyQnIENPTFVNTlMgKGl0ZW0g dGV4dCBQQVRIICckJyBPTUlUIFFVT1RFUyBPTiBTQ0FMQVIgU1RSSU5HKSk7CisgaXRlbSAgCist LS0tLS0tCisgd29ybGQKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25i ICcid29ybGQiJywgJyQnIENPTFVNTlMgKGl0ZW0gdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckJyBL RUVQIFFVT1RFUykpOworICBpdGVtICAgCistLS0tLS0tLS0KKyAid29ybGQiCisoMSByb3cpCisK K1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChp dGVtIHRleHQgRk9STUFUIEpTT04gUEFUSCAnJCcgT01JVCBRVU9URVMpKTsKKyBpdGVtICAKKy0t LS0tLS0KKyB3b3JsZAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIg JyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0IEZPUk1BVCBKU09OIFBBVEggJyQnIFdJ VEhPVVQgV1JBUFBFUiBLRUVQIFFVT1RFUykpOworICBpdGVtICAgCistLS0tLS0tLS0KKyAid29y bGQiCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIics ICckJyBDT0xVTU5TIChpdGVtIHRleHQgUEFUSCAnJCcgV0lUSE9VVCBXUkFQUEVSIE9NSVQgUVVP VEVTKSk7CisgaXRlbSAgCistLS0tLS0tCisgd29ybGQKKygxIHJvdykKKworU0VMRUNUICogRlJP TSBKU09OX1RBQkxFKGpzb25iICcid29ybGQiJywgJyQnIENPTFVNTlMgKGl0ZW0gdGV4dCBGT1JN QVQgSlNPTiBQQVRIICckJyBXSVRIIFdSQVBQRVIpKTsKKyAgIGl0ZW0gICAgCistLS0tLS0tLS0t LQorIFsid29ybGQiXQorKDEgcm93KQorCistLSBFcnJvcjogUVVPVEVTIGNsYXVzZSBtZWFuaW5n bGVzcyB3aGVuIFdJVEggV1JBUFBFUiBpcyBwcmVzZW50CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFC TEUoanNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0IEZPUk1BVCBKU09OIFBB VEggJyQnIFdJVEggV1JBUFBFUiBLRUVQIFFVT1RFUykpOworRVJST1I6ICBTUUwvSlNPTiBRVU9U RVMgYmVoYXZpb3IgbXVzdCBub3QgYmUgc3BlY2lmaWVkIHdoZW4gV0lUSCBXUkFQUEVSIGlzIHVz ZWQKK0xJTkUgMTogLi4uVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBD T0xVTU5TIChpdGVtIHRleHQgLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpz b25iICcid29ybGQiJywgJyQnIENPTFVNTlMgKGl0ZW0gdGV4dCBQQVRIICckJyBXSVRIIFdSQVBQ RVIgT01JVCBRVU9URVMpKTsKK0VSUk9SOiAgU1FML0pTT04gUVVPVEVTIGJlaGF2aW9yIG11c3Qg bm90IGJlIHNwZWNpZmllZCB3aGVuIFdJVEggV1JBUFBFUiBpcyB1c2VkCitMSU5FIDE6IC4uLlQg KiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0 IC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KKy0tIEpTT05fVEFCTEU6IG5lc3RlZCBwYXRocyBhbmQgcGxhbnMKKy0tIFNo b3VsZCBmYWlsIChKU09OX1RBQkxFIGNvbHVtbnMgbXVzdCBjb250YWluIGV4cGxpY2l0IEFTIHBh dGgKKy0tIHNwZWNpZmljYXRpb25zIGlmIGV4cGxpY2l0IFBMQU4gY2xhdXNlIGlzIHVzZWQpCitT RUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ1tdJywgJyQnIC0tIEFTIDxwYXRoIG5h bWU+IHJlcXVpcmVkIGhlcmUKKwlDT0xVTU5TICgKKwkJZm9vIGludCBQQVRIICckJworCSkKKwlQ TEFOIERFRkFVTFQgKFVOSU9OKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIGV4 cHJlc3Npb24KK0xJTkUgMjogIGpzb25iICdbXScsICckJyAtLSBBUyA8cGF0aCBuYW1lPiByZXF1 aXJlZCBoZXJlCisgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBKU09OX1RBQkxFIHBh dGggbXVzdCBjb250YWluIGV4cGxpY2l0IEFTIHBhdGhuYW1lIHNwZWNpZmljYXRpb24gaWYgZXhw bGljaXQgUExBTiBjbGF1c2UgaXMgdXNlZAorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpz b25iICdbXScsICckJyBBUyBwYXRoMQorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQ09M VU1OUyAoIC0tIEFTIDxwYXRoIG5hbWU+IHJlcXVpcmVkIGhlcmUKKwkJCWZvbyBpbnQgUEFUSCAn JCcKKwkJKQorCSkKKwlQTEFOIERFRkFVTFQgKFVOSU9OKQorKSBqdDsKK0VSUk9SOiAgaW52YWxp ZCBKU09OX1RBQkxFIGV4cHJlc3Npb24KK0xJTkUgNDogICBORVNURUQgUEFUSCAnJCcgQ09MVU1O UyAoIC0tIEFTIDxwYXRoIG5hbWU+IHJlcXVpcmVkIGhlcmUKKyAgICAgICAgICBeCitERVRBSUw6 ICBKU09OX1RBQkxFIHBhdGggbXVzdCBjb250YWluIGV4cGxpY2l0IEFTIHBhdGhuYW1lIHNwZWNp ZmljYXRpb24gaWYgZXhwbGljaXQgUExBTiBjbGF1c2UgaXMgdXNlZAorLS0gU2hvdWxkIGZhaWwg KGNvbHVtbiBuYW1lcyBtdXN0IGJlIGRpc3RpbmN0KQorU0VMRUNUICogRlJPTSBKU09OX1RBQkxF KAorCWpzb25iICdbXScsICckJyBBUyBhCisJQ09MVU1OUyAoCisJCWEgaW50CisJKQorKSBqdDsK K0VSUk9SOiAgZHVwbGljYXRlIEpTT05fVEFCTEUgY29sdW1uIG5hbWU6IGEKK0xJTkUgNDogICBh IGludAorICAgICAgICAgIF4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnW10n LCAnJCcgQVMgYQorCUNPTFVNTlMgKAorCQliIGludCwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIGEK KwkJQ09MVU1OUyAoCisJCQljIGludAorCQkpCisJKQorKSBqdDsKK0VSUk9SOiAgZHVwbGljYXRl IEpTT05fVEFCTEUgcGF0aCBuYW1lOiBhCitMSU5FIDU6ICAgTkVTVEVEIFBBVEggJyQnIEFTIGEK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxF KAorCWpzb25iICdbXScsICckJworCUNPTFVNTlMgKAorCQliIGludCwKKwkJTkVTVEVEIFBBVEgg JyQnIEFTIGIKKwkJQ09MVU1OUyAoCisJCQljIGludAorCQkpCisJKQorKSBqdDsKK0VSUk9SOiAg ZHVwbGljYXRlIEpTT05fVEFCTEUgcGF0aCBuYW1lOiBiCitMSU5FIDU6ICAgTkVTVEVEIFBBVEgg JyQnIEFTIGIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUICogRlJPTSBK U09OX1RBQkxFKAorCWpzb25iICdbXScsICckJworCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAn JCcgQVMgYQorCQlDT0xVTU5TICgKKwkJCWIgaW50CisJCSksCisJCU5FU1RFRCBQQVRIICckJwor CQlDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBhCisJCQlDT0xVTU5TICgKKwkJCQlj IGludAorCQkJKQorCQkpCisJKQorKSBqdDsKK0VSUk9SOiAgZHVwbGljYXRlIEpTT05fVEFCTEUg cGF0aCBuYW1lOiBhCitMSU5FIDEwOiAgICBORVNURUQgUEFUSCAnJCcgQVMgYQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEpTT05fVEFCTEU6IHBsYW4gdmFsaWRhdGlvbgor U0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJ Q09MVU1OUyAoCisJCU5FU1RFRCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAn JCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEy IENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVN TlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkK KwkpCisJUExBTiAocDEpCispIGp0OworRVJST1I6ICBpbnZhbGlkIEpTT05fVEFCTEUgcGxhbgor TElORSAxMjogIFBMQU4gKHAxKQorICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIFBBVEggbmFt ZSBtaXNtYXRjaDogZXhwZWN0ZWQgcDAgYnV0IHAxIGlzIGdpdmVuLgorU0VMRUNUICogRlJPTSBK U09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJCU5F U1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEg Q09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAo IGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlO RVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFO IChwMCkKKykganQ7CitFUlJPUjogIGludmFsaWQgSlNPTl9UQUJMRSBzcGVjaWZpY2F0aW9uCitM SU5FIDQ6ICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorICAgICAgICAgIF4KK0RF VEFJTDogIFBMQU4gY2xhdXNlIGZvciBuZXN0ZWQgcGF0aCBwMSB3YXMgbm90IGZvdW5kLgorU0VM RUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09M VU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRI ICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBw MTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09M VU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJ KQorCSkKKwlQTEFOIChwMCBPVVRFUiBwMykKKykganQ7CitFUlJPUjogIGludmFsaWQgSlNPTl9U QUJMRSBzcGVjaWZpY2F0aW9uCitMSU5FIDQ6ICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVN TlMgKAorICAgICAgICAgIF4KK0RFVEFJTDogIFBMQU4gY2xhdXNlIGZvciBuZXN0ZWQgcGF0aCBw MSB3YXMgbm90IGZvdW5kLgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxs JywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xV TU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJ CU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNU RUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENP TFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFOIChwMCBVTklPTiBwMSBVTklPTiBwMTEp CispIGp0OworRVJST1I6ICBpbnZhbGlkIEpTT05fVEFCTEUgcGxhbiBjbGF1c2UKK0xJTkUgMTI6 ICBQTEFOIChwMCBVTklPTiBwMSBVTklPTiBwMTEpCisgICAgICAgICAgICAgICAgXgorREVUQUlM OiAgRXhwZWN0ZWQgSU5ORVIgb3IgT1VURVIuCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJ anNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQn IEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9v IGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJ CSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICck JyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAwIE9VVEVSIChw MSBDUk9TUyBwMTMpKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIHNwZWNpZmlj YXRpb24KK0xJTkUgODogICBORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisgICAgICAg ICAgXgorREVUQUlMOiAgUExBTiBjbGF1c2UgZm9yIG5lc3RlZCBwYXRoIHAyIHdhcyBub3QgZm91 bmQuCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScgQVMg cDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVT VEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEgg JyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBB UyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBp bnQgKQorCQkpCisJKQorCVBMQU4gKHAwIE9VVEVSIChwMSBDUk9TUyBwMikpCispIGp0OworRVJS T1I6ICBpbnZhbGlkIEpTT05fVEFCTEUgc3BlY2lmaWNhdGlvbgorTElORSA1OiAgICBORVNURUQg UEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisgICAgICAgICAgIF4KK0RFVEFJ TDogIFBMQU4gY2xhdXNlIGZvciBuZXN0ZWQgcGF0aCBwMTEgd2FzIG5vdCBmb3VuZC4KK1NFTEVD VCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVN TlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAn JCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEy IENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVN TlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkK KwkpCisJUExBTiAocDAgT1VURVIgKChwMSBVTklPTiBwMTEpIENST1NTIHAyKSkKKykganQ7CitF UlJPUjogIGludmFsaWQgSlNPTl9UQUJMRSBwbGFuIGNsYXVzZQorTElORSAxMjogIFBMQU4gKHAw IE9VVEVSICgocDEgVU5JT04gcDExKSBDUk9TUyBwMikpCisgICAgICAgICAgICAgICAgICAgICAg ICAgXgorREVUQUlMOiAgUExBTiBjbGF1c2UgY29udGFpbnMgc29tZSBleHRyYSBvciBkdXBsaWNh dGUgc2libGluZyBub2Rlcy4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVs bCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09M VU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJ CQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVT VEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBD T0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIgKChwMSBJTk5FUiBw MTEpIENST1NTIHAyKSkKKykganQ7CitFUlJPUjogIGludmFsaWQgSlNPTl9UQUJMRSBzcGVjaWZp Y2F0aW9uCitMSU5FIDY6ICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBp bnQgKQorICAgICAgICAgICBeCitERVRBSUw6ICBQTEFOIGNsYXVzZSBmb3IgbmVzdGVkIHBhdGgg cDEyIHdhcyBub3QgZm91bmQuCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251 bGwnLCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENP TFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAor CQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5F U1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEg Q09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAwIE9VVEVSICgocDEgSU5ORVIg KHAxMiBDUk9TUyBwMTEpKSBDUk9TUyBwMikpCispIGp0OworRVJST1I6ICBpbnZhbGlkIEpTT05f VEFCTEUgc3BlY2lmaWNhdGlvbgorTElORSA5OiAgICBORVNURUQgUEFUSCAnJCcgQVMgcDIxIENP TFVNTlMgKCBiYXogaW50ICkKKyAgICAgICAgICAgXgorREVUQUlMOiAgUExBTiBjbGF1c2UgZm9y IG5lc3RlZCBwYXRoIHAyMSB3YXMgbm90IGZvdW5kLgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxF KAorCWpzb25iICdudWxsJywgJ3N0cmljdCAkWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNU RUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENP TFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBi YXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVT VEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAo cDAgT1VURVIgKChwMSBJTk5FUiAocDEyIENST1NTIHAxMSkpIENST1NTIChwMiBJTk5FUiBwMjEp KSkKKykganQ7CisgYmFyIHwgZm9vIHwgYmF6IAorLS0tLS0rLS0tLS0rLS0tLS0KKygwIHJvd3Mp CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVsbCcsICdzdHJpY3QgJFsq XScgLS0gd2l0aG91dCByb290IHBhdGggbmFtZQorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAn JCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBm b28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkK KwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEgg JyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAoKHAxIElOTkVS IChwMTIgQ1JPU1MgcDExKSkgQ1JPU1MgKHAyIElOTkVSIHAyMSkpCispIGp0OworRVJST1I6ICBp bnZhbGlkIEpTT05fVEFCTEUgZXhwcmVzc2lvbgorTElORSAyOiAganNvbmIgJ251bGwnLCAnc3Ry aWN0ICRbKl0nIC0tIHdpdGhvdXQgcm9vdCBwYXRoIG5hbWUKKyAgICAgICAgICAgICAgICAgICAg ICAgXgorREVUQUlMOiAgSlNPTl9UQUJMRSBwYXRoIG11c3QgY29udGFpbiBleHBsaWNpdCBBUyBw YXRobmFtZSBzcGVjaWZpY2F0aW9uIGlmIGV4cGxpY2l0IFBMQU4gY2xhdXNlIGlzIHVzZWQKKy0t IEpTT05fVEFCTEU6IHBsYW4gZXhlY3V0aW9uCitDUkVBVEUgVEVNUCBUQUJMRSBqc29uYl90YWJs ZV90ZXN0IChqcyBqc29uYik7CitJTlNFUlQgSU5UTyBqc29uYl90YWJsZV90ZXN0CitWQUxVRVMg KAorCSdbCisJCXsiYSI6ICAxLCAgImIiOiBbXSwgImMiOiBbXX0sCisJCXsiYSI6ICAyLCAgImIi OiBbMSwgMiwgM10sICJjIjogWzEwLCBudWxsLCAyMF19LAorCQl7ImEiOiAgMywgICJiIjogWzEs IDJdLCAiYyI6IFtdfSwKKwkJeyJ4IjogIjQiLCAiYiI6IFsxLCAyXSwgImMiOiAxMjN9CisJIF0n CispOworLS0gdW5zcGVjaWZpZWQgcGxhbiAob3V0ZXIsIHVuaW9uKQorc2VsZWN0CisJanQuKgor ZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0 cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEg aW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAn c3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0 ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkK KwkJKQorCSkganQ7CisgbiB8IGEgIHwgYiB8IGMgIAorLS0tKy0tLS0rLS0tKy0tLS0KKyAxIHwg IDEgfCAgIHwgICAKKyAyIHwgIDIgfCAxIHwgICAKKyAyIHwgIDIgfCAyIHwgICAKKyAyIHwgIDIg fCAzIHwgICAKKyAyIHwgIDIgfCAgIHwgMTAKKyAyIHwgIDIgfCAgIHwgICAKKyAyIHwgIDIgfCAg IHwgMjAKKyAzIHwgIDMgfCAxIHwgICAKKyAzIHwgIDMgfCAyIHwgICAKKyA0IHwgLTEgfCAxIHwg ICAKKyA0IHwgLTEgfCAyIHwgICAKKygxMSByb3dzKQorCistLSBkZWZhdWx0IHBsYW4gKG91dGVy LCB1bmlvbikKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlq c29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJ CW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9u IGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBi IGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNv bHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiBkZWZhdWx0IChvdXRlciwgdW5p b24pCisJKSBqdDsKKyBuIHwgYSAgfCBiIHwgYyAgCistLS0rLS0tLSstLS0rLS0tLQorIDEgfCAg MSB8ICAgfCAgIAorIDIgfCAgMiB8IDEgfCAxMAorIDIgfCAgMiB8IDEgfCAgIAorIDIgfCAgMiB8 IDEgfCAyMAorIDIgfCAgMiB8IDIgfCAxMAorIDIgfCAgMiB8IDIgfCAgIAorIDIgfCAgMiB8IDIg fCAyMAorIDIgfCAgMiB8IDMgfCAxMAorIDIgfCAgMiB8IDMgfCAgIAorIDIgfCAgMiB8IDMgfCAy MAorIDMgfCAgMyB8ICAgfCAgIAorIDQgfCAtMSB8ICAgfCAgIAorKDEyIHJvd3MpCisKKy0tIHNw ZWNpZmljIHBsYW4gKHAgb3V0ZXIgKHBiIHVuaW9uIHBjKSkKK3NlbGVjdAorCWp0LioKK2Zyb20K Kwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3Qg JFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBw YXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmlj dCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBh dGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkK KwkJcGxhbiAocCBvdXRlciAocGIgdW5pb24gcGMpKQorCSkganQ7CisgbiB8IGEgIHwgYiB8IGMg IAorLS0tKy0tLS0rLS0tKy0tLS0KKyAxIHwgIDEgfCAgIHwgICAKKyAyIHwgIDIgfCAxIHwgICAK KyAyIHwgIDIgfCAyIHwgICAKKyAyIHwgIDIgfCAzIHwgICAKKyAyIHwgIDIgfCAgIHwgMTAKKyAy IHwgIDIgfCAgIHwgICAKKyAyIHwgIDIgfCAgIHwgMjAKKyAzIHwgIDMgfCAxIHwgICAKKyAzIHwg IDMgfCAyIHwgICAKKyA0IHwgLTEgfCAxIHwgICAKKyA0IHwgLTEgfCAyIHwgICAKKygxMSByb3dz KQorCistLSBzcGVjaWZpYyBwbGFuIChwIG91dGVyIChwYyB1bmlvbiBwYikpCitzZWxlY3QKKwlq dC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5q cywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAor CQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBw YXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJ CW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAn JCcgKQorCQkpCisJCXBsYW4gKHAgb3V0ZXIgKHBjIHVuaW9uIHBiKSkKKwkpIGp0OworIG4gfCBh ICB8IGMgIHwgYiAKKy0tLSstLS0tKy0tLS0rLS0tCisgMSB8ICAxIHwgICAgfCAgCisgMiB8ICAy IHwgMTAgfCAgCisgMiB8ICAyIHwgICAgfCAgCisgMiB8ICAyIHwgMjAgfCAgCisgMiB8ICAyIHwg ICAgfCAxCisgMiB8ICAyIHwgICAgfCAyCisgMiB8ICAyIHwgICAgfCAzCisgMyB8ICAzIHwgICAg fCAxCisgMyB8ICAzIHwgICAgfCAyCisgNCB8IC0xIHwgICAgfCAxCisgNCB8IC0xIHwgICAgfCAy CisoMTEgcm93cykKKworLS0gZGVmYXVsdCBwbGFuIChpbm5lciwgdW5pb24pCitzZWxlY3QKKwlq dC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5q cywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAor CQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBw YXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJ CW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAn JCcgKQorCQkpCisJCXBsYW4gZGVmYXVsdCAoaW5uZXIpCisJKSBqdDsKKyBuIHwgYSAgfCBiIHwg YyAgCistLS0rLS0tLSstLS0rLS0tLQorIDEgfCAgMSB8ICAgfCAgIAorIDIgfCAgMiB8IDEgfCAx MAorIDIgfCAgMiB8IDEgfCAgIAorIDIgfCAgMiB8IDEgfCAyMAorIDIgfCAgMiB8IDIgfCAxMAor IDIgfCAgMiB8IDIgfCAgIAorIDIgfCAgMiB8IDIgfCAyMAorIDIgfCAgMiB8IDMgfCAxMAorIDIg fCAgMiB8IDMgfCAgIAorIDIgfCAgMiB8IDMgfCAyMAorIDMgfCAgMyB8ICAgfCAgIAorIDQgfCAt MSB8ICAgfCAgIAorKDEyIHJvd3MpCisKKy0tIHNwZWNpZmljIHBsYW4gKHAgaW5uZXIgKHBiIHVu aW9uIHBjKSkKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlq c29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJ CW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9u IGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBi IGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNv bHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiAocCBpbm5lciAocGIgdW5pb24g cGMpKQorCSkganQ7CisgbiB8IGEgIHwgYiB8IGMgIAorLS0tKy0tLS0rLS0tKy0tLS0KKyAyIHwg IDIgfCAxIHwgICAKKyAyIHwgIDIgfCAyIHwgICAKKyAyIHwgIDIgfCAzIHwgICAKKyAyIHwgIDIg fCAgIHwgMTAKKyAyIHwgIDIgfCAgIHwgICAKKyAyIHwgIDIgfCAgIHwgMjAKKyAzIHwgIDMgfCAx IHwgICAKKyAzIHwgIDMgfCAyIHwgICAKKyA0IHwgLTEgfCAxIHwgICAKKyA0IHwgLTEgfCAyIHwg ICAKKygxMCByb3dzKQorCistLSBkZWZhdWx0IHBsYW4gKGlubmVyLCBjcm9zcykKK3NlbGVjdAor CWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0 LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHks CisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVk IHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAor CQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRo ICckJyApCisJCSkKKwkJcGxhbiBkZWZhdWx0IChjcm9zcywgaW5uZXIpCisJKSBqdDsKKyBuIHwg YSB8IGIgfCBjICAKKy0tLSstLS0rLS0tKy0tLS0KKyAyIHwgMiB8IDEgfCAxMAorIDIgfCAyIHwg MSB8ICAgCisgMiB8IDIgfCAxIHwgMjAKKyAyIHwgMiB8IDIgfCAxMAorIDIgfCAyIHwgMiB8ICAg CisgMiB8IDIgfCAyIHwgMjAKKyAyIHwgMiB8IDMgfCAxMAorIDIgfCAyIHwgMyB8ICAgCisgMiB8 IDIgfCAzIHwgMjAKKyg5IHJvd3MpCisKKy0tIHNwZWNpZmljIHBsYW4gKHAgaW5uZXIgKHBiIGNy b3NzIHBjKSkKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlq c29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJ CW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9u IGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBi IGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNv bHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiAocCBpbm5lciAocGIgY3Jvc3Mg cGMpKQorCSkganQ7CisgbiB8IGEgfCBiIHwgYyAgCistLS0rLS0tKy0tLSstLS0tCisgMiB8IDIg fCAxIHwgMTAKKyAyIHwgMiB8IDEgfCAgIAorIDIgfCAyIHwgMSB8IDIwCisgMiB8IDIgfCAyIHwg MTAKKyAyIHwgMiB8IDIgfCAgIAorIDIgfCAyIHwgMiB8IDIwCisgMiB8IDIgfCAzIHwgMTAKKyAy IHwgMiB8IDMgfCAgIAorIDIgfCAyIHwgMyB8IDIwCisoOSByb3dzKQorCistLSBkZWZhdWx0IHBs YW4gKG91dGVyLCBjcm9zcykKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0 IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1 bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZh dWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNv bHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0n IGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiBkZWZhdWx0IChv dXRlciwgY3Jvc3MpCisJKSBqdDsKKyBuIHwgYSAgfCBiIHwgYyAgCistLS0rLS0tLSstLS0rLS0t LQorIDEgfCAgMSB8ICAgfCAgIAorIDIgfCAgMiB8IDEgfCAxMAorIDIgfCAgMiB8IDEgfCAgIAor IDIgfCAgMiB8IDEgfCAyMAorIDIgfCAgMiB8IDIgfCAxMAorIDIgfCAgMiB8IDIgfCAgIAorIDIg fCAgMiB8IDIgfCAyMAorIDIgfCAgMiB8IDMgfCAxMAorIDIgfCAgMiB8IDMgfCAgIAorIDIgfCAg MiB8IDMgfCAyMAorIDMgfCAgMyB8ICAgfCAgIAorIDQgfCAtMSB8ICAgfCAgIAorKDEyIHJvd3Mp CisKKy0tIHNwZWNpZmljIHBsYW4gKHAgb3V0ZXIgKHBiIGNyb3NzIHBjKSkKK3NlbGVjdAorCWp0 LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0Lmpz LCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJ CQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBh dGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJ bmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICck JyApCisJCSkKKwkJcGxhbiAocCBvdXRlciAocGIgY3Jvc3MgcGMpKQorCSkganQ7CisgbiB8IGEg IHwgYiB8IGMgIAorLS0tKy0tLS0rLS0tKy0tLS0KKyAxIHwgIDEgfCAgIHwgICAKKyAyIHwgIDIg fCAxIHwgMTAKKyAyIHwgIDIgfCAxIHwgICAKKyAyIHwgIDIgfCAxIHwgMjAKKyAyIHwgIDIgfCAy IHwgMTAKKyAyIHwgIDIgfCAyIHwgICAKKyAyIHwgIDIgfCAyIHwgMjAKKyAyIHwgIDIgfCAzIHwg MTAKKyAyIHwgIDIgfCAzIHwgICAKKyAyIHwgIDIgfCAzIHwgMjAKKyAzIHwgIDMgfCAgIHwgICAK KyA0IHwgLTEgfCAgIHwgICAKKygxMiByb3dzKQorCitzZWxlY3QKKwlqdC4qLCBiMSArIDEwMCBh cyBiCitmcm9tCisJanNvbl90YWJsZSAoanNvbmIKKwkJJ1sKKwkJCXsiYSI6ICAxLCAgImIiOiBb WzEsIDEwXSwgWzJdLCBbMywgMzAsIDMwMF1dLCAiYyI6IFsxLCBudWxsLCAyXX0sCisJCQl7ImEi OiAgMiwgICJiIjogWzEwLCAyMF0sICJjIjogWzEsIG51bGwsIDJdfSwKKwkJCXsieCI6ICIzIiwg ImIiOiBbMTEsIDIyLCAzMywgNDRdfQorCQkgXScsCisJCSckWypdJyBhcyBwCisJCWNvbHVtbnMg KAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQg LTEgb24gZXJyb3IsCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1u cyAoCisJCQkJYiB0ZXh0IGZvcm1hdCBqc29uIHBhdGggJyQnLAorCQkJCW5lc3RlZCBwYXRoICdz dHJpY3QgJFsqXScgYXMgcGIxIGNvbHVtbnMgKAorCQkJCQliMSBpbnQgcGF0aCAnJCcKKwkJCQkp CisJCQkpLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKAor CQkJCWMgdGV4dCBmb3JtYXQganNvbiBwYXRoICckJywKKwkJCQluZXN0ZWQgcGF0aCAnc3RyaWN0 ICRbKl0nIGFzIHBjMSBjb2x1bW5zICgKKwkJCQkJYzEgaW50IHBhdGggJyQnCisJCQkJKQorCQkJ KQorCQkpCisJCS0tcGxhbiBkZWZhdWx0KG91dGVyLCBjcm9zcykKKwkJcGxhbihwIG91dGVyICgo cGIgaW5uZXIgcGIxKSBjcm9zcyAocGMgb3V0ZXIgcGMxKSkpCisJKSBqdDsKKyBuIHwgYSAgfCAg ICAgIGIgICAgICAgfCBiMSAgfCAgYyAgIHwgYzEgfCAgYiAgCistLS0rLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLSstLS0tLS0rLS0tLSstLS0tLQorIDEgfCAgMSB8IFsxLCAxMF0gICAgICB8ICAg MSB8IDEgICAgfCAgICB8IDEwMQorIDEgfCAgMSB8IFsxLCAxMF0gICAgICB8ICAgMSB8IG51bGwg fCAgICB8IDEwMQorIDEgfCAgMSB8IFsxLCAxMF0gICAgICB8ICAgMSB8IDIgICAgfCAgICB8IDEw MQorIDEgfCAgMSB8IFsxLCAxMF0gICAgICB8ICAxMCB8IDEgICAgfCAgICB8IDExMAorIDEgfCAg MSB8IFsxLCAxMF0gICAgICB8ICAxMCB8IG51bGwgfCAgICB8IDExMAorIDEgfCAgMSB8IFsxLCAx MF0gICAgICB8ICAxMCB8IDIgICAgfCAgICB8IDExMAorIDEgfCAgMSB8IFsyXSAgICAgICAgICB8 ICAgMiB8IDEgICAgfCAgICB8IDEwMgorIDEgfCAgMSB8IFsyXSAgICAgICAgICB8ICAgMiB8IG51 bGwgfCAgICB8IDEwMgorIDEgfCAgMSB8IFsyXSAgICAgICAgICB8ICAgMiB8IDIgICAgfCAgICB8 IDEwMgorIDEgfCAgMSB8IFszLCAzMCwgMzAwXSB8ICAgMyB8IDEgICAgfCAgICB8IDEwMworIDEg fCAgMSB8IFszLCAzMCwgMzAwXSB8ICAgMyB8IG51bGwgfCAgICB8IDEwMworIDEgfCAgMSB8IFsz LCAzMCwgMzAwXSB8ICAgMyB8IDIgICAgfCAgICB8IDEwMworIDEgfCAgMSB8IFszLCAzMCwgMzAw XSB8ICAzMCB8IDEgICAgfCAgICB8IDEzMAorIDEgfCAgMSB8IFszLCAzMCwgMzAwXSB8ICAzMCB8 IG51bGwgfCAgICB8IDEzMAorIDEgfCAgMSB8IFszLCAzMCwgMzAwXSB8ICAzMCB8IDIgICAgfCAg ICB8IDEzMAorIDEgfCAgMSB8IFszLCAzMCwgMzAwXSB8IDMwMCB8IDEgICAgfCAgICB8IDQwMAor IDEgfCAgMSB8IFszLCAzMCwgMzAwXSB8IDMwMCB8IG51bGwgfCAgICB8IDQwMAorIDEgfCAgMSB8 IFszLCAzMCwgMzAwXSB8IDMwMCB8IDIgICAgfCAgICB8IDQwMAorIDIgfCAgMiB8ICAgICAgICAg ICAgICB8ICAgICB8ICAgICAgfCAgICB8ICAgIAorIDMgfCAtMSB8ICAgICAgICAgICAgICB8ICAg ICB8ICAgICAgfCAgICB8ICAgIAorKDIwIHJvd3MpCisKKy0tIFNob3VsZCBzdWNjZWVkIChKU09O IGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHJvb3QgYW5kIG5lc3RlZCBwYXRocykKK1NFTEVDVCAq CitGUk9NCisJZ2VuZXJhdGVfc2VyaWVzKDEsIDQpIHgsCisJZ2VuZXJhdGVfc2VyaWVzKDEsIDMp IHksCisJSlNPTl9UQUJMRShqc29uYgorCQknW1sxLDIsM10sWzIsMyw0LDVdLFszLDQsNSw2XV0n LAorCQknc3RyaWN0ICRbKl0gPyAoQFsqXSA8ICR4KScKKwkJUEFTU0lORyB4IEFTIHgsIHkgQVMg eQorCQlDT0xVTU5TICgKKwkJCXkgdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckJywKKwkJCU5FU1RF RCBQQVRIICdzdHJpY3QgJFsqXSA/IChAID49ICR5KScKKwkJCUNPTFVNTlMgKAorCQkJCXogaW50 IFBBVEggJyQnCisJCQkpCisJCSkKKwkpIGp0OworIHggfCB5IHwgICAgICB5ICAgICAgIHwgeiAK Ky0tLSstLS0rLS0tLS0tLS0tLS0tLS0rLS0tCisgMiB8IDEgfCBbMSwgMiwgM10gICAgfCAxCisg MiB8IDEgfCBbMSwgMiwgM10gICAgfCAyCisgMiB8IDEgfCBbMSwgMiwgM10gICAgfCAzCisgMyB8 IDEgfCBbMSwgMiwgM10gICAgfCAxCisgMyB8IDEgfCBbMSwgMiwgM10gICAgfCAyCisgMyB8IDEg fCBbMSwgMiwgM10gICAgfCAzCisgMyB8IDEgfCBbMiwgMywgNCwgNV0gfCAyCisgMyB8IDEgfCBb MiwgMywgNCwgNV0gfCAzCisgMyB8IDEgfCBbMiwgMywgNCwgNV0gfCA0CisgMyB8IDEgfCBbMiwg MywgNCwgNV0gfCA1CisgNCB8IDEgfCBbMSwgMiwgM10gICAgfCAxCisgNCB8IDEgfCBbMSwgMiwg M10gICAgfCAyCisgNCB8IDEgfCBbMSwgMiwgM10gICAgfCAzCisgNCB8IDEgfCBbMiwgMywgNCwg NV0gfCAyCisgNCB8IDEgfCBbMiwgMywgNCwgNV0gfCAzCisgNCB8IDEgfCBbMiwgMywgNCwgNV0g fCA0CisgNCB8IDEgfCBbMiwgMywgNCwgNV0gfCA1CisgNCB8IDEgfCBbMywgNCwgNSwgNl0gfCAz CisgNCB8IDEgfCBbMywgNCwgNSwgNl0gfCA0CisgNCB8IDEgfCBbMywgNCwgNSwgNl0gfCA1Cisg NCB8IDEgfCBbMywgNCwgNSwgNl0gfCA2CisgMiB8IDIgfCBbMSwgMiwgM10gICAgfCAyCisgMiB8 IDIgfCBbMSwgMiwgM10gICAgfCAzCisgMyB8IDIgfCBbMSwgMiwgM10gICAgfCAyCisgMyB8IDIg fCBbMSwgMiwgM10gICAgfCAzCisgMyB8IDIgfCBbMiwgMywgNCwgNV0gfCAyCisgMyB8IDIgfCBb MiwgMywgNCwgNV0gfCAzCisgMyB8IDIgfCBbMiwgMywgNCwgNV0gfCA0CisgMyB8IDIgfCBbMiwg MywgNCwgNV0gfCA1CisgNCB8IDIgfCBbMSwgMiwgM10gICAgfCAyCisgNCB8IDIgfCBbMSwgMiwg M10gICAgfCAzCisgNCB8IDIgfCBbMiwgMywgNCwgNV0gfCAyCisgNCB8IDIgfCBbMiwgMywgNCwg NV0gfCAzCisgNCB8IDIgfCBbMiwgMywgNCwgNV0gfCA0CisgNCB8IDIgfCBbMiwgMywgNCwgNV0g fCA1CisgNCB8IDIgfCBbMywgNCwgNSwgNl0gfCAzCisgNCB8IDIgfCBbMywgNCwgNSwgNl0gfCA0 CisgNCB8IDIgfCBbMywgNCwgNSwgNl0gfCA1CisgNCB8IDIgfCBbMywgNCwgNSwgNl0gfCA2Cisg MiB8IDMgfCBbMSwgMiwgM10gICAgfCAzCisgMyB8IDMgfCBbMSwgMiwgM10gICAgfCAzCisgMyB8 IDMgfCBbMiwgMywgNCwgNV0gfCAzCisgMyB8IDMgfCBbMiwgMywgNCwgNV0gfCA0CisgMyB8IDMg fCBbMiwgMywgNCwgNV0gfCA1CisgNCB8IDMgfCBbMSwgMiwgM10gICAgfCAzCisgNCB8IDMgfCBb MiwgMywgNCwgNV0gfCAzCisgNCB8IDMgfCBbMiwgMywgNCwgNV0gfCA0CisgNCB8IDMgfCBbMiwg MywgNCwgNV0gfCA1CisgNCB8IDMgfCBbMywgNCwgNSwgNl0gfCAzCisgNCB8IDMgfCBbMywgNCwg NSwgNl0gfCA0CisgNCB8IDMgfCBbMywgNCwgNSwgNl0gfCA1CisgNCB8IDMgfCBbMywgNCwgNSwg Nl0gfCA2CisoNTIgcm93cykKKworLS0gU2hvdWxkIGZhaWwgKEpTT04gYXJndW1lbnRzIGFyZSBu b3QgcGFzc2VkIHRvIGNvbHVtbiBwYXRocykKK1NFTEVDVCAqCitGUk9NIEpTT05fVEFCTEUoCisJ anNvbmIgJ1sxLDIsM10nLAorCSckWypdID8gKEAgPCAkeCknCisJCVBBU1NJTkcgMTAgQVMgeAor CQlDT0xVTU5TICh5IHRleHQgRk9STUFUIEpTT04gUEFUSCAnJCA/IChAIDwgJHgpJykKKwkpIGp0 OworRVJST1I6ICBjb3VsZCBub3QgZmluZCBqc29ucGF0aCB2YXJpYWJsZSAieCIKKy0tIFNob3Vs ZCBmYWlsIChub3Qgc3VwcG9ydGVkKQorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICd7 ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8fCAnYScgQ09MVU1OUyAoZm9vIGludCkpOworRVJST1I6 ICBvbmx5IHN0cmluZyBjb25zdGFudHMgYXJlIHN1cHBvcnRlZCBpbiBKU09OX1RBQkxFIHBhdGgg c3BlY2lmaWNhdGlvbgorTElORSAxOiBTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJ3si YSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8ICcuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUK aW5kZXggZjQ4OGFmZWZhNS4uODQ0NzMxZDBkNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVk dWxlCkBAIC0xMDMsNyArMTAzLDcgQEAgdGVzdDogc2VsZWN0X3ZpZXdzIHBvcnRhbHNfcDIgZm9y ZWlnbl9rZXkgY2x1c3RlciBkZXBlbmRlbmN5IGd1YyBiaXRtYXBvcHMgY29tYm8KICMgLS0tLS0t LS0tLQogIyBBbm90aGVyIGdyb3VwIG9mIHBhcmFsbGVsIHRlc3RzIChKU09OIHJlbGF0ZWQpCiAj IC0tLS0tLS0tLS0KLXRlc3Q6IGpzb24ganNvbmIganNvbl9lbmNvZGluZyBqc29ucGF0aCBqc29u cGF0aF9lbmNvZGluZyBqc29uYl9qc29ucGF0aCBzcWxqc29uIHNxbGpzb25fcXVlcnlmdW5jcwor dGVzdDoganNvbiBqc29uYiBqc29uX2VuY29kaW5nIGpzb25wYXRoIGpzb25wYXRoX2VuY29kaW5n IGpzb25iX2pzb25wYXRoIHNxbGpzb24gc3FsanNvbl9xdWVyeWZ1bmNzIHNxbGpzb25fanNvbnRh YmxlCiAKICMgLS0tLS0tLS0tLQogIyBBbm90aGVyIGdyb3VwIG9mIHBhcmFsbGVsIHRlc3RzCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zcWxqc29uX2pzb250YWJsZS5zcWwgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9zcWxqc29uX2pzb250YWJsZS5zcWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNGM4MTA5M2Q2ZQotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3NxbGpzb25fanNvbnRhYmxlLnNxbApAQCAtMCwwICsxLDY4NiBA QAorLS0gSlNPTl9UQUJMRQorCistLSBTaG91bGQgZmFpbCAoSlNPTl9UQUJMRSBjYW4gYmUgdXNl ZCBvbmx5IGluIEZST00gY2xhdXNlKQorU0VMRUNUIEpTT05fVEFCTEUoJ1tdJywgJyQnKTsKKwor LS0gU2hvdWxkIGZhaWwgKGpzb24gYXJndW1lbnQgbm90IHN1cHBvcnRlZCkKK1NFTEVDVCAqIEZS T00gSlNPTl9UQUJMRShOVUxMIEZPUk1BVCBKU09OLCAnJCcgQ09MVU1OUyAoZm9vIHRleHQpKTsK KworLS0gU2hvdWxkIGZhaWwgKG5vIGNvbHVtbnMpCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUo TlVMTCwgJyQnIENPTFVNTlMgKCkpOworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUgKE5VTEw6 Ompzb25iLCAnJCcgQ09MVU1OUyAodjEgdGltZXN0YW1wKSkgQVMgZiAodjEsIHYyKTsKKworLS0g TlVMTCA9PiBlbXB0eSB0YWJsZQorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKE5VTEw6Ompzb25i LCAnJCcgQ09MVU1OUyAoZm9vIGludCkpIGJhcjsKKworLS0KK1NFTEVDVCAqIEZST00gSlNPTl9U QUJMRShqc29uYiAnMTIzJywgJyQnCisJQ09MVU1OUyAoaXRlbSBpbnQgUEFUSCAnJCcsIGZvbyBp bnQpKSBiYXI7CisKKy0tIEpTT05fVEFCTEU6IGJhc2ljIGZ1bmN0aW9uYWxpdHkKK0NSRUFURSBE T01BSU4ganNvbmJfdGVzdF9kb21haW4gQVMgdGV4dCBDSEVDSyAodmFsdWUgPD4gJ2ZvbycpOwor Q1JFQVRFIFRFTVAgVEFCTEUganNvbl90YWJsZV90ZXN0IChqcykgQVMKKwkoVkFMVUVTCisJCSgn MScpLAorCQkoJ1tdJyksCisJCSgne30nKSwKKwkJKCdbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIs ICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJc IiJdJykKKwkpOworCistLSBSZWd1bGFyICJ1bmZvcm1hdHRlZCIgY29sdW1ucworU0VMRUNUICoK K0ZST00ganNvbl90YWJsZV90ZXN0IHZhbHMKKwlMRUZUIE9VVEVSIEpPSU4KKwlKU09OX1RBQkxF KAorCQl2YWxzLmpzOjpqc29uYiwgJ2xheCAkWypdJworCQlDT0xVTU5TICgKKwkJCWlkIEZPUiBP UkRJTkFMSVRZLAorCQkJImludCIgaW50IFBBVEggJyQnLAorCQkJInRleHQiIHRleHQgUEFUSCAn JCcsCisJCQkiY2hhcig0KSIgY2hhcig0KSBQQVRIICckJywKKwkJCSJib29sIiBib29sIFBBVEgg JyQnLAorCQkJIm51bWVyaWMiIG51bWVyaWMgUEFUSCAnJCcsCisJCQkiZG9tYWluIiBqc29uYl90 ZXN0X2RvbWFpbiBQQVRIICckJywKKwkJCWpzIGpzb24gUEFUSCAnJCcsCisJCQlqYiBqc29uYiBQ QVRIICckJworCQkpCisJKSBqdAorCU9OIHRydWU7CisKKy0tICJmb3JtYXR0ZWQiIGNvbHVtbnMK K1NFTEVDVCAqCitGUk9NIGpzb25fdGFibGVfdGVzdCB2YWxzCisJTEVGVCBPVVRFUiBKT0lOCisJ SlNPTl9UQUJMRSgKKwkJdmFscy5qczo6anNvbmIsICdsYXggJFsqXScKKwkJQ09MVU1OUyAoCisJ CQlpZCBGT1IgT1JESU5BTElUWSwKKwkJCWpzdCB0ZXh0ICAgIEZPUk1BVCBKU09OICBQQVRIICck JywKKwkJCWpzYyBjaGFyKDQpIEZPUk1BVCBKU09OICBQQVRIICckJywKKwkJCWpzdiB2YXJjaGFy KDQpIEZPUk1BVCBKU09OICBQQVRIICckJywKKwkJCWpzYiBqc29uYiBGT1JNQVQgSlNPTiBQQVRI ICckJywKKwkJCWpzYnEganNvbmIgRk9STUFUIEpTT04gUEFUSCAnJCcgT01JVCBRVU9URVMKKwkJ KQorCSkganQKKwlPTiB0cnVlOworCistLSBFWElTVFMgY29sdW1ucworU0VMRUNUICoKK0ZST00g anNvbl90YWJsZV90ZXN0IHZhbHMKKwlMRUZUIE9VVEVSIEpPSU4KKwlKU09OX1RBQkxFKAorCQl2 YWxzLmpzOjpqc29uYiwgJ2xheCAkWypdJworCQlDT0xVTU5TICgKKwkJCWlkIEZPUiBPUkRJTkFM SVRZLAorCQkJZXhpc3RzMSBib29sIEVYSVNUUyBQQVRIICckLmFhYScsCisJCQlleGlzdHMyIGlu dCBFWElTVFMgUEFUSCAnJC5hYWEnLAorCQkJZXhpc3RzMyBpbnQgRVhJU1RTIFBBVEggJ3N0cmlj dCAkLmFhYScgVU5LTk9XTiBPTiBFUlJPUiwKKwkJCWV4aXN0czQgdGV4dCBFWElTVFMgUEFUSCAn c3RyaWN0ICQuYWFhJyBGQUxTRSBPTiBFUlJPUgorCQkpCisJKSBqdAorCU9OIHRydWU7CisKKy0t IE90aGVyIG1pc2NlbGxhbm91cyBjaGVja3MKK1NFTEVDVCAqCitGUk9NIGpzb25fdGFibGVfdGVz dCB2YWxzCisJTEVGVCBPVVRFUiBKT0lOCisJSlNPTl9UQUJMRSgKKwkJdmFscy5qczo6anNvbmIs ICdsYXggJFsqXScKKwkJQ09MVU1OUyAoCisJCQlpZCBGT1IgT1JESU5BTElUWSwKKwkJCWFhYSBp bnQsIC0tICJhYWEiIGhhcyBpbXBsaWNpdCBwYXRoICckLiJhYWEiJworCQkJYWFhMSBpbnQgUEFU SCAnJC5hYWEnLAorCQkJanMyIGpzb24gUEFUSCAnJCcsCisJCQlqc2IydyBqc29uYiBQQVRIICck JyBXSVRIIFdSQVBQRVIsCisJCQlqc2IycSBqc29uYiBQQVRIICckJyBPTUlUIFFVT1RFUywKKwkJ CWlhIGludFtdIFBBVEggJyQnLAorCQkJdGEgdGV4dFtdIFBBVEggJyQnLAorCQkJamJhIGpzb25i W10gUEFUSCAnJCcKKwkJKQorCSkganQKKwlPTiB0cnVlOworCistLSBKU09OX1RBQkxFOiBUZXN0 IGJhY2t3YXJkIHBhcnNpbmcKKworQ1JFQVRFIFZJRVcganNvbmJfdGFibGVfdmlldyBBUworU0VM RUNUICogRlJPTQorCUpTT05fVEFCTEUoCisJCWpzb25iICdudWxsJywgJ2xheCAkWypdJyBQQVNT SU5HIDEgKyAyIEFTIGEsIGpzb24gJyJmb28iJyBBUyAiYiBjIgorCQlDT0xVTU5TICgKKwkJCWlk IEZPUiBPUkRJTkFMSVRZLAorCQkJImludCIgaW50IFBBVEggJyQnLAorCQkJInRleHQiIHRleHQg UEFUSCAnJCcsCisJCQkiY2hhcig0KSIgY2hhcig0KSBQQVRIICckJywKKwkJCSJib29sIiBib29s IFBBVEggJyQnLAorCQkJIm51bWVyaWMiIG51bWVyaWMgUEFUSCAnJCcsCisJCQkiZG9tYWluIiBq c29uYl90ZXN0X2RvbWFpbiBQQVRIICckJywKKwkJCWpzIGpzb24gUEFUSCAnJCcsCisJCQlqYiBq c29uYiBQQVRIICckJywKKwkJCWpzdCB0ZXh0ICAgIEZPUk1BVCBKU09OICBQQVRIICckJywKKwkJ CWpzYyBjaGFyKDQpIEZPUk1BVCBKU09OICBQQVRIICckJywKKwkJCWpzdiB2YXJjaGFyKDQpIEZP Uk1BVCBKU09OICBQQVRIICckJywKKwkJCWpzYiBqc29uYiAgIEZPUk1BVCBKU09OIFBBVEggJyQn LAorCQkJanNicSBqc29uYiBGT1JNQVQgSlNPTiBQQVRIICckJyBPTUlUIFFVT1RFUywKKwkJCWFh YSBpbnQsIC0tIGltcGxpY2l0IHBhdGggJyQuImFhYSInLAorCQkJYWFhMSBpbnQgUEFUSCAnJC5h YWEnLAorCQkJZXhpc3RzMSBib29sIEVYSVNUUyBQQVRIICckLmFhYScsCisJCQlleGlzdHMyIGlu dCBFWElTVFMgUEFUSCAnJC5hYWEnIFRSVUUgT04gRVJST1IsCisJCQlleGlzdHMzIHRleHQgRVhJ U1RTIFBBVEggJ3N0cmljdCAkLmFhYScgVU5LTk9XTiBPTiBFUlJPUiwKKworCQkJanMyIGpzb24g UEFUSCAnJCcsCisJCQlqc2IydyBqc29uYiBQQVRIICckJyBXSVRIIFdSQVBQRVIsCisJCQlqc2Iy cSBqc29uYiBQQVRIICckJyBPTUlUIFFVT1RFUywKKwkJCWlhIGludFtdIFBBVEggJyQnLAorCQkJ dGEgdGV4dFtdIFBBVEggJyQnLAorCQkJamJhIGpzb25iW10gUEFUSCAnJCcsCisKKwkJCU5FU1RF RCBQQVRIICckWzFdJyBBUyBwMSBDT0xVTU5TICgKKwkJCQlhMSBpbnQsCisJCQkJTkVTVEVEIFBB VEggJyRbKl0nIEFTICJwMSAxIiBDT0xVTU5TICgKKwkJCQkJYTExIHRleHQKKwkJCQkpLAorCQkJ CWIxIHRleHQKKwkJCSksCisJCQlORVNURUQgUEFUSCAnJFsyXScgQVMgcDIgQ09MVU1OUyAoCisJ CQkJTkVTVEVEIFBBVEggJyRbKl0nIEFTICJwMjoxIiBDT0xVTU5TICgKKwkJCQkJYTIxIHRleHQK KwkJCQkpLAorCQkJCU5FU1RFRCBQQVRIICckWypdJyBBUyBwMjIgQ09MVU1OUyAoCisJCQkJCWEy MiB0ZXh0CisJCQkJKQorCQkJKQorCQkpCisJKTsKKworXHN2IGpzb25iX3RhYmxlX3ZpZXcKKwor RVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKSBTRUxFQ1QgKiBGUk9NIGpzb25iX3RhYmxlX3Zp ZXc7CisKKy0tIEpTT05fVEFCTEUoKSB3aXRoIGFsaWFzCitFWFBMQUlOIChDT1NUUyBPRkYsIFZF UkJPU0UpCitTRUxFQ1QgKiBGUk9NCisJSlNPTl9UQUJMRSgKKwkJanNvbmIgJ251bGwnLCAnbGF4 ICRbKl0nIFBBU1NJTkcgMSArIDIgQVMgYSwganNvbiAnImZvbyInIEFTICJiIGMiCisJCUNPTFVN TlMgKAorCQkJaWQgRk9SIE9SRElOQUxJVFksCisJCQkiaW50IiBpbnQgUEFUSCAnJCcsCisJCQki dGV4dCIgdGV4dCBQQVRIICckJworCSkpIGpzb25fdGFibGVfZnVuYzsKKworRFJPUCBWSUVXIGpz b25iX3RhYmxlX3ZpZXc7CitEUk9QIERPTUFJTiBqc29uYl90ZXN0X2RvbWFpbjsKKworLS0gSlNP Tl9UQUJMRTogb25seSBvbmUgRk9SIE9SRElOQUxJVFkgY29sdW1ucyBhbGxvd2VkCitTRUxFQ1Qg KiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJzEnLCAnJCcgQ09MVU1OUyAoaWQgRk9SIE9SRElOQUxJ VFksIGlkMiBGT1IgT1JESU5BTElUWSwgYSBpbnQgUEFUSCAnJC5hJyBFUlJPUiBPTiBFTVBUWSkp IGp0OworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcxJywgJyQnIENPTFVNTlMgKGlk IEZPUiBPUkRJTkFMSVRZLCBhIGludCBQQVRIICckJyBFUlJPUiBPTiBFTVBUWSkpIGp0OworCist LSBKU09OX1RBQkxFOiBPTiBFTVBUWS9PTiBFUlJPUiBiZWhhdmlvcgorU0VMRUNUICoKK0ZST00K KwkoVkFMVUVTICgnMScpLCAoJyJlcnIiJykpIHZhbHMoanMpLAorCUpTT05fVEFCTEUodmFscy5q czo6anNvbmIsICckJyBDT0xVTU5TIChhIGludCBQQVRIICckJykpIGp0OworCitTRUxFQ1QgKgor RlJPTQorCShWQUxVRVMgKCcxJyksICgnImVyciInKSkgdmFscyhqcykKKwkJTEVGVCBPVVRFUiBK T0lOCisJSlNPTl9UQUJMRSh2YWxzLmpzOjpqc29uYiwgJyQnIENPTFVNTlMgKGEgaW50IFBBVEgg JyQnKSBFUlJPUiBPTiBFUlJPUikganQKKwkJT04gdHJ1ZTsKKworU0VMRUNUICoKK0ZST00KKwko VkFMVUVTICgnMScpLCAoJyJlcnIiJykpIHZhbHMoanMpCisJCUxFRlQgT1VURVIgSk9JTgorCUpT T05fVEFCTEUodmFscy5qczo6anNvbmIsICckJyBDT0xVTU5TIChhIGludCBQQVRIICckJyBFUlJP UiBPTiBFUlJPUikpIGp0CisJCU9OIHRydWU7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShq c29uYiAnMScsICckJyBDT0xVTU5TIChhIGludCBQQVRIICckLmEnIEVSUk9SIE9OIEVNUFRZKSkg anQ7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJzEnLCAnJCcgQ09MVU1OUyAoYSBp bnQgUEFUSCAnc3RyaWN0ICQuYScgRVJST1IgT04gRU1QVFkpIEVSUk9SIE9OIEVSUk9SKSBqdDsK K1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnMScsICckJyBDT0xVTU5TIChhIGludCBQ QVRIICdsYXggJC5hJyBFUlJPUiBPTiBFTVBUWSkgRVJST1IgT04gRVJST1IpIGp0OworCitTRUxF Q1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludCBQQVRI ICckJyAgIERFRkFVTFQgMSBPTiBFTVBUWSBERUZBVUxUIDIgT04gRVJST1IpKSBqdDsKK1NFTEVD VCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50IFBBVEgg J3N0cmljdCAkLmEnIERFRkFVTFQgMSBPTiBFTVBUWSBERUZBVUxUIDIgT04gRVJST1IpKSBqdDsK K1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50 IFBBVEggJ2xheCAkLmEnIERFRkFVTFQgMSBPTiBFTVBUWSBERUZBVUxUIDIgT04gRVJST1IpKSBq dDsKKworLS0gSlNPTl9UQUJMRTogRVhJU1RTIFBBVEggdHlwZXMKK1NFTEVDVCAqIEZST00gSlNP Tl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50NCBFWElTVFMgUEFUSCAnJC5h JykpOworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAo YSBpbnQyIEVYSVNUUyBQQVRIICckLmEnKSk7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNv bmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludDggRVhJU1RTIFBBVEggJyQuYScpKTsKK1NFTEVD VCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgZmxvYXQ0IEVY SVNUUyBQQVRIICckLmEnKSk7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIics ICckJyBDT0xVTU5TIChhIGNoYXIoMykgRVhJU1RTIFBBVEggJyQuYScpKTsKK1NFTEVDVCAqIEZS T00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEganNvbiBFWElTVFMgUEFU SCAnJC5hJykpOworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09M VU1OUyAoYSBqc29uYiBFWElTVFMgUEFUSCAnJC5hJykpOworCistLSBKU09OX1RBQkxFOiBXUkFQ UEVSL1FVT1RFUyBjbGF1c2VzIG9uIHNjYWxhciBjb2x1bW5zCitTRUxFQ1QgKiBGUk9NIEpTT05f VEFCTEUoanNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0IFBBVEggJyQnIEtF RVAgUVVPVEVTIE9OIFNDQUxBUiBTVFJJTkcpKTsKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShq c29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChpdGVtIHRleHQgUEFUSCAnJCcgT01JVCBRVU9U RVMgT04gU0NBTEFSIFNUUklORykpOworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICci d29ybGQiJywgJyQnIENPTFVNTlMgKGl0ZW0gdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckJyBLRUVQ IFFVT1RFUykpOworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcid29ybGQiJywgJyQn IENPTFVNTlMgKGl0ZW0gdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckJyBPTUlUIFFVT1RFUykpOwor U0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcid29ybGQiJywgJyQnIENPTFVNTlMgKGl0 ZW0gdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckJyBXSVRIT1VUIFdSQVBQRVIgS0VFUCBRVU9URVMp KTsKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBDT0xVTU5T IChpdGVtIHRleHQgUEFUSCAnJCcgV0lUSE9VVCBXUkFQUEVSIE9NSVQgUVVPVEVTKSk7CisKK1NF TEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChpdGVt IHRleHQgRk9STUFUIEpTT04gUEFUSCAnJCcgV0lUSCBXUkFQUEVSKSk7CisKKy0tIEVycm9yOiBR VU9URVMgY2xhdXNlIG1lYW5pbmdsZXNzIHdoZW4gV0lUSCBXUkFQUEVSIGlzIHByZXNlbnQKK1NF TEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChpdGVt IHRleHQgRk9STUFUIEpTT04gUEFUSCAnJCcgV0lUSCBXUkFQUEVSIEtFRVAgUVVPVEVTKSk7CitT RUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRl bSB0ZXh0IFBBVEggJyQnIFdJVEggV1JBUFBFUiBPTUlUIFFVT1RFUykpOworCistLSBKU09OX1RB QkxFOiBuZXN0ZWQgcGF0aHMgYW5kIHBsYW5zCisKKy0tIFNob3VsZCBmYWlsIChKU09OX1RBQkxF IGNvbHVtbnMgbXVzdCBjb250YWluIGV4cGxpY2l0IEFTIHBhdGgKKy0tIHNwZWNpZmljYXRpb25z IGlmIGV4cGxpY2l0IFBMQU4gY2xhdXNlIGlzIHVzZWQpCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFC TEUoCisJanNvbmIgJ1tdJywgJyQnIC0tIEFTIDxwYXRoIG5hbWU+IHJlcXVpcmVkIGhlcmUKKwlD T0xVTU5TICgKKwkJZm9vIGludCBQQVRIICckJworCSkKKwlQTEFOIERFRkFVTFQgKFVOSU9OKQor KSBqdDsKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdbXScsICckJyBBUyBw YXRoMQorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQ09MVU1OUyAoIC0tIEFTIDxwYXRo IG5hbWU+IHJlcXVpcmVkIGhlcmUKKwkJCWZvbyBpbnQgUEFUSCAnJCcKKwkJKQorCSkKKwlQTEFO IERFRkFVTFQgKFVOSU9OKQorKSBqdDsKKworLS0gU2hvdWxkIGZhaWwgKGNvbHVtbiBuYW1lcyBt dXN0IGJlIGRpc3RpbmN0KQorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdbXScs ICckJyBBUyBhCisJQ09MVU1OUyAoCisJCWEgaW50CisJKQorKSBqdDsKKworU0VMRUNUICogRlJP TSBKU09OX1RBQkxFKAorCWpzb25iICdbXScsICckJyBBUyBhCisJQ09MVU1OUyAoCisJCWIgaW50 LAorCQlORVNURUQgUEFUSCAnJCcgQVMgYQorCQlDT0xVTU5TICgKKwkJCWMgaW50CisJCSkKKwkp CispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ1tdJywgJyQnCisJ Q09MVU1OUyAoCisJCWIgaW50LAorCQlORVNURUQgUEFUSCAnJCcgQVMgYgorCQlDT0xVTU5TICgK KwkJCWMgaW50CisJCSkKKwkpCispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJ anNvbmIgJ1tdJywgJyQnCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBhCisJCUNP TFVNTlMgKAorCQkJYiBpbnQKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnCisJCUNPTFVNTlMgKAor CQkJTkVTVEVEIFBBVEggJyQnIEFTIGEKKwkJCUNPTFVNTlMgKAorCQkJCWMgaW50CisJCQkpCisJ CSkKKwkpCispIGp0OworCistLSBKU09OX1RBQkxFOiBwbGFuIHZhbGlkYXRpb24KKworU0VMRUNU ICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1O UyAoCisJCU5FU1RFRCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMg cDExIENPTFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVN TlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAor CQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJ UExBTiAocDEpCispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251 bGwnLCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENP TFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAor CQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5F U1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEg Q09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAwKQorKSBqdDsKKworU0VMRUNU ICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1O UyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICck JyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIg Q09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1O UyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQor CSkKKwlQTEFOIChwMCBPVVRFUiBwMykKKykganQ7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJM RSgKKwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFU SCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMg KCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50 ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBB VEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgVU5J T04gcDEgVU5JT04gcDExKQorKSBqdDsKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpz b25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBB UyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBp bnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkp LAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcg QVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFOIChwMCBPVVRFUiAocDEg Q1JPU1MgcDEzKSkKKykganQ7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAn bnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEg Q09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICks CisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJ TkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAy MSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIgKHAxIENST1NT IHAyKSkKKykganQ7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVsbCcs ICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1O UyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJCQlO RVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVE IFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xV TU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIgKChwMSBVTklPTiBwMTEp IENST1NTIHAyKSkKKykganQ7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAn bnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEg Q09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICks CisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJ TkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAy MSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIgKChwMSBJTk5F UiBwMTEpIENST1NTIHAyKSkKKykganQ7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlq c29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcg QVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28g aW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJ KSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQn IEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIgKChw MSBJTk5FUiAocDEyIENST1NTIHAxMSkpIENST1NTIHAyKSkKKykganQ7CisKK1NFTEVDVCAqIEZS T00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVsbCcsICdzdHJpY3QgJFsqXScgQVMgcDAKKwlDT0xV TU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEgg JyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAx MiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xV TU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkp CisJKQorCVBMQU4gKHAwIE9VVEVSICgocDEgSU5ORVIgKHAxMiBDUk9TUyBwMTEpKSBDUk9TUyAo cDIgSU5ORVIgcDIxKSkpCispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNv bmIgJ251bGwnLCAnc3RyaWN0ICRbKl0nIC0tIHdpdGhvdXQgcm9vdCBwYXRoIG5hbWUKKwlDT0xV TU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEgg JyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAx MiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xV TU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkp CisJKQorCVBMQU4gKChwMSBJTk5FUiAocDEyIENST1NTIHAxMSkpIENST1NTIChwMiBJTk5FUiBw MjEpKQorKSBqdDsKKworLS0gSlNPTl9UQUJMRTogcGxhbiBleGVjdXRpb24KKworQ1JFQVRFIFRF TVAgVEFCTEUganNvbmJfdGFibGVfdGVzdCAoanMganNvbmIpOworCitJTlNFUlQgSU5UTyBqc29u Yl90YWJsZV90ZXN0CitWQUxVRVMgKAorCSdbCisJCXsiYSI6ICAxLCAgImIiOiBbXSwgImMiOiBb XX0sCisJCXsiYSI6ICAyLCAgImIiOiBbMSwgMiwgM10sICJjIjogWzEwLCBudWxsLCAyMF19LAor CQl7ImEiOiAgMywgICJiIjogWzEsIDJdLCAiYyI6IFtdfSwKKwkJeyJ4IjogIjQiLCAiYiI6IFsx LCAyXSwgImMiOiAxMjN9CisJIF0nCispOworCistLSB1bnNwZWNpZmllZCBwbGFuIChvdXRlciwg dW5pb24pCitzZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNv bl90YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQlu IGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBl bXB0eSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBp bnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1 bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJKSBqdDsKKworLS0gZGVmYXVsdCBwbGFuIChv dXRlciwgdW5pb24pCitzZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQs CisJanNvbl90YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAo CisJCQluIGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAt MSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5z ICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBw YyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJCXBsYW4gZGVmYXVsdCAob3V0ZXIs IHVuaW9uKQorCSkganQ7CisKKy0tIHNwZWNpZmljIHBsYW4gKHAgb3V0ZXIgKHBiIHVuaW9uIHBj KSkKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3Rh YmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9y IG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5 LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBw YXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMg KCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiAocCBvdXRlciAocGIgdW5pb24gcGMpKQor CSkganQ7CisKKy0tIHNwZWNpZmljIHBsYW4gKHAgb3V0ZXIgKHBjIHVuaW9uIHBiKSkKK3NlbGVj dAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJ anR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxp dHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVz dGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyAp LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBw YXRoICckJyApCisJCSkKKwkJcGxhbiAocCBvdXRlciAocGMgdW5pb24gcGIpKQorCSkganQ7CisK Ky0tIGRlZmF1bHQgcGxhbiAoaW5uZXIsIHVuaW9uKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpz b25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypd JyBhcyBwCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGgg J2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQu YlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAn c3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlw bGFuIGRlZmF1bHQgKGlubmVyKQorCSkganQ7CisKKy0tIHNwZWNpZmljIHBsYW4gKHAgaW5uZXIg KHBiIHVuaW9uIHBjKSkKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0 dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5z ICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0 IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVt bnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFz IHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiAocCBpbm5lciAocGIg dW5pb24gcGMpKQorCSkganQ7CisKKy0tIGRlZmF1bHQgcGxhbiAoaW5uZXIsIGNyb3NzKQorc2Vs ZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUgKAor CQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5h bGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQlu ZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQn ICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50 IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIGRlZmF1bHQgKGNyb3NzLCBpbm5lcikKKwkpIGp0Owor CistLSBzcGVjaWZpYyBwbGFuIChwIGlubmVyIChwYiBjcm9zcyBwYykpCitzZWxlY3QKKwlqdC4q Citmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5qcywn c3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAorCQkJ YSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBwYXRo ICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5l c3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcg KQorCQkpCisJCXBsYW4gKHAgaW5uZXIgKHBiIGNyb3NzIHBjKSkKKwkpIGp0OworCistLSBkZWZh dWx0IHBsYW4gKG91dGVyLCBjcm9zcykKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJs ZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAor CQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5h JyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFz IHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAk LmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiBkZWZh dWx0IChvdXRlciwgY3Jvc3MpCisJKSBqdDsKKworLS0gc3BlY2lmaWMgcGxhbiAocCBvdXRlciAo cGIgY3Jvc3MgcGMpKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0 LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMg KAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQg LTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1u cyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMg cGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIChwIG91dGVyIChwYiBj cm9zcyBwYykpCisJKSBqdDsKKworCitzZWxlY3QKKwlqdC4qLCBiMSArIDEwMCBhcyBiCitmcm9t CisJanNvbl90YWJsZSAoanNvbmIKKwkJJ1sKKwkJCXsiYSI6ICAxLCAgImIiOiBbWzEsIDEwXSwg WzJdLCBbMywgMzAsIDMwMF1dLCAiYyI6IFsxLCBudWxsLCAyXX0sCisJCQl7ImEiOiAgMiwgICJi IjogWzEwLCAyMF0sICJjIjogWzEsIG51bGwsIDJdfSwKKwkJCXsieCI6ICIzIiwgImIiOiBbMTEs IDIyLCAzMywgNDRdfQorCQkgXScsCisJCSckWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJbiBm b3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZXJy b3IsCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoCisJCQkJ YiB0ZXh0IGZvcm1hdCBqc29uIHBhdGggJyQnLAorCQkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJFsq XScgYXMgcGIxIGNvbHVtbnMgKAorCQkJCQliMSBpbnQgcGF0aCAnJCcKKwkJCQkpCisJCQkpLAor CQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKAorCQkJCWMgdGV4 dCBmb3JtYXQganNvbiBwYXRoICckJywKKwkJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICRbKl0nIGFz IHBjMSBjb2x1bW5zICgKKwkJCQkJYzEgaW50IHBhdGggJyQnCisJCQkJKQorCQkJKQorCQkpCisJ CS0tcGxhbiBkZWZhdWx0KG91dGVyLCBjcm9zcykKKwkJcGxhbihwIG91dGVyICgocGIgaW5uZXIg cGIxKSBjcm9zcyAocGMgb3V0ZXIgcGMxKSkpCisJKSBqdDsKKworLS0gU2hvdWxkIHN1Y2NlZWQg KEpTT04gYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gcm9vdCBhbmQgbmVzdGVkIHBhdGhzKQorU0VM RUNUICoKK0ZST00KKwlnZW5lcmF0ZV9zZXJpZXMoMSwgNCkgeCwKKwlnZW5lcmF0ZV9zZXJpZXMo MSwgMykgeSwKKwlKU09OX1RBQkxFKGpzb25iCisJCSdbWzEsMiwzXSxbMiwzLDQsNV0sWzMsNCw1 LDZdXScsCisJCSdzdHJpY3QgJFsqXSA/IChAWypdIDwgJHgpJworCQlQQVNTSU5HIHggQVMgeCwg eSBBUyB5CisJCUNPTFVNTlMgKAorCQkJeSB0ZXh0IEZPUk1BVCBKU09OIFBBVEggJyQnLAorCQkJ TkVTVEVEIFBBVEggJ3N0cmljdCAkWypdID8gKEAgPj0gJHkpJworCQkJQ09MVU1OUyAoCisJCQkJ eiBpbnQgUEFUSCAnJCcKKwkJCSkKKwkJKQorCSkganQ7CisKKy0tIFNob3VsZCBmYWlsIChKU09O IGFyZ3VtZW50cyBhcmUgbm90IHBhc3NlZCB0byBjb2x1bW4gcGF0aHMpCitTRUxFQ1QgKgorRlJP TSBKU09OX1RBQkxFKAorCWpzb25iICdbMSwyLDNdJywKKwknJFsqXSA/IChAIDwgJHgpJworCQlQ QVNTSU5HIDEwIEFTIHgKKwkJQ09MVU1OUyAoeSB0ZXh0IEZPUk1BVCBKU09OIFBBVEggJyQgPyAo QCA8ICR4KScpCisJKSBqdDsKKworLS0gU2hvdWxkIGZhaWwgKG5vdCBzdXBwb3J0ZWQpCitTRUxF Q1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJ3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8ICdh JyBDT0xVTU5TIChmb28gaW50KSk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGE2YmU2 Zjc4NzQuLmQ1NjJmMjE1NWYgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMzIzLDYg KzEzMjMsNyBAQCBKc29uUGF0aE11dGFibGVDb250ZXh0CiBKc29uUGF0aFBhcnNlSXRlbQogSnNv blBhdGhQYXJzZVJlc3VsdAogSnNvblBhdGhQcmVkaWNhdGVDYWxsYmFjaworSnNvblBhdGhTcGVj CiBKc29uUGF0aFN0cmluZwogSnNvblBhdGhWYXJpYWJsZQogSnNvblBhdGhWYXJpYWJsZUV2YWxD b250ZXh0CkBAIC0xMzMyLDYgKzEzMzMsMjAgQEAgSnNvblJldHVybmluZwogSnNvblNjYWxhckV4 cHIKIEpzb25TZW1BY3Rpb24KIEpzb25TZXJpYWxpemVFeHByCitKc29uVGFibGUKK0pzb25UYWJs ZUNvbHVtbgorSnNvblRhYmxlQ29sdW1uVHlwZQorSnNvblRhYmxlQ29udGV4dAorSnNvblRhYmxl UGFyc2VDb250ZXh0CitKc29uVGFibGVKb2luU3RhdGUKK0pzb25UYWJsZVBsYW4KK0pzb25UYWJs ZVBsYW5TcGVjCitKc29uVGFibGVQbGFuU3RhdGUKK0pzb25UYWJsZVBsYW5TdGF0ZVR5cGUKK0pz b25UYWJsZVBsYW5Kb2luVHlwZQorSnNvblRhYmxlUGxhblR5cGUKK0pzb25UYWJsZVNjYW5TdGF0 ZQorSnNvblRhYmxlU2libGluZwogSnNvblRva2VuVHlwZQogSnNvblRyYW5zZm9ybVN0cmluZ1Zh bHVlc0FjdGlvbgogSnNvblR5cGVDYXRlZ29yeQpAQCAtMjc5Nyw2ICsyODEyLDcgQEAgVGFibGVG dW5jCiBUYWJsZUZ1bmNSb3V0aW5lCiBUYWJsZUZ1bmNTY2FuCiBUYWJsZUZ1bmNTY2FuU3RhdGUK K1RhYmxlRnVuY1R5cGUKIFRhYmxlSW5mbwogVGFibGVMaWtlQ2xhdXNlCiBUYWJsZVNhbXBsZUNs YXVzZQotLSAKMi4zNS4zCgo= --00000000000015508a060f9d2c00 Content-Type: application/octet-stream; name="v37-0005-SQL-JSON-query-functions.patch" Content-Disposition: attachment; filename="v37-0005-SQL-JSON-query-functions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrqes4yr2 RnJvbSBhYzQ5NTNiOTFmNjM3N2I0ODg2Y2UyZDk3OGZhMjFhNjE4NWJiOTU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMTggSmFuIDIwMjQgMTc6NTk6NTYgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz NyA1LzddIFNRTC9KU09OIHF1ZXJ5IGZ1bmN0aW9ucwpNSU1FLVZlcnNpb246IDEuMApDb250ZW50 LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGlu ZzogOGJpdAoKVGhpcyBpbnRyb2R1Y2VzIHRoZSBmb2xsb3dpbmcgU1FML0pTT04gZnVuY3Rpb25z IGZvciBxdWVyeWluZyBKU09OCmRhdGEgdXNpbmcganNvbnBhdGggZXhwcmVzc2lvbnM6CgpKU09O X0VYSVNUUygpCkpTT05fUVVFUlkoKQpKU09OX1ZBTFVFKCkKCkpTT05fRVhJU1RTKCkgdGVzdHMg aWYgdGhlIGpzb25wYXRoIGV4cHJlc3Npb24gYXBwbGllZCB0byB0aGUganNvbmIKdmFsdWUgeWll bGRzIGFueSB2YWx1ZXMuCgpKU09OX1ZBTFVFKCkgbXVzdCByZXR1cm4gYSBzaW5nbGUgdmFsdWUs IGFuZCBhbiBlcnJvciBvY2N1cnMgaWYgaXQKdHJpZXMgdG8gcmV0dXJuIG11bHRpcGxlIHZhbHVl cy4KCkpTT05fUVVFUlkoKSBtdXN0IHJldHVybiBhIGpzb24gb2JqZWN0IG9yIGFycmF5LCBhbmQg dGhlcmUgYXJlCnZhcmlvdXMgV1JBUFBFUiBvcHRpb25zIGZvciBoYW5kbGluZyBzY2FsYXIgb3Ig bXVsdGktdmFsdWUgcmVzdWx0cy4KQm90aCB0aGVzZSBmdW5jdGlvbnMgaGF2ZSBvcHRpb25zIGZv ciBoYW5kbGluZyBFTVBUWSBhbmQgRVJST1IKY29uZGl0aW9ucy4KCkFsbCBvZiB0aGVzZSBmdW5j dGlvbnMgb25seSBvcGVyYXRlIG9uIGpzb25iLiBUaGUgd29ya2Fyb3VuZCBmb3Igbm93CmlzIHRv IGNhc3QgdGhlIGFyZ3VtZW50IHRvIGpzb25iLgoKQXV0aG9yOiBOaWtpdGEgR2x1a2hvdiA8bi5n bHVob3ZAcG9zdGdyZXNwcm8ucnU+CkF1dGhvcjogVGVvZG9yIFNpZ2FldiA8dGVvZG9yQHNpZ2Fl di5ydT4KQXV0aG9yOiBPbGVnIEJhcnR1bm92IDxvYmFydHVub3ZAZ21haWwuY29tPgpBdXRob3I6 IEFsZXhhbmRlciBLb3JvdGtvdiA8YWVrb3JvdGtvdkBnbWFpbC5jb20+CkF1dGhvcjogQW5kcmV3 IER1bnN0YW4gPGFuZHJld0BkdW5zbGFuZS5uZXQ+CkF1dGhvcjogQW1pdCBMYW5nb3RlIDxhbWl0 bGFuZ290ZTA5QGdtYWlsLmNvbT4KQXV0aG9yOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNl bnRyYXV0Lm9yZz4KQXV0aG9yOiBKaWFuIEhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CgpSZXZpZXdlcnMgaGF2ZSBpbmNsdWRlZCAoaW4gbm8gcGFydGljdWxhciBvcmRlcikgQW5kcmVz IEZyZXVuZCwgQWxleGFuZGVyCktvcm90a292LCBQYXZlbCBTdGVodWxlLCBBbmRyZXcgQWxzdXAs IEVyaWsgUmlqa2VycywgWmlob25nIFl1LApIaW1hbnNodSBVcGFkaHlheWEsIERhbmllbCBHdXN0 YWZzc29uLCBKdXN0aW4gUHJ5emJ5LCDDgWx2YXJvIEhlcnJlcmEsCmppYW4gaGUsIEFudG9uIEEu IE1lbG5pa292LCBOaWtpdGEgTWFsYWtob3YsIFBldGVyIEVpc2VudHJhdXQKCkRpc2N1c3Npb246 IGh0dHBzOi8vcG9zdGdyLmVzL20vY2QwYmI5MzUtMDE1OC03OGE3LTA4YjUtOTA0ODg2ZGVhYzRi QHBvc3RncmVzcHJvLnJ1CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vMjAyMjA2MTYy MzMxMzAucnBhcml2YWZpcHQ2ZG9qM0BhbGFwMy5hbmFyYXplbC5kZQpEaXNjdXNzaW9uOiBodHRw czovL3Bvc3Rnci5lcy9tL2FiZDliODNiLWFhNjYtZjIzMC0zZDZkLTczNDgxN2YwOTk1ZCU0MHBv c3RncmVzcWwub3JnCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0ErSGl3cUU0WFRk ZmIxblc9T2pveV90UVNSaFl0LXFfa2I2aTVkNHhjS3lyTEMxTmJnQG1haWwuZ21haWwuY29tCi0t LQogZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE3MyAr KysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dCAgICAgICAgICB8ICAgMTIg Ky0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgICAgICAgICAgICAgICB8ICAzNDQg KysrKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMgICAgICAgICB8ICAz NzEgKysrKystCiBzcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYyAgICAgICAgICAg fCAgMTQ0ICsrKwogc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5jICAgICAgICAg IHwgICAgMyArCiBzcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyAgICAgICAgICAgICAgICAg fCAgIDE4ICsKIHNyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jICAgICAgICAgICAgICAgICB8 ICAyMzMgKysrLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYyAgICAgICAg IHwgICAgMyArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jICAgICAgICAg IHwgICAxOSArCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAg fCAgMTg4ICsrLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgICAgICAgICAgICAg IHwgIDYxMSArKysrKysrKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYyAgICAg ICAgICAgICB8ICAgMTUgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zvcm1hdHRpbmcuYyAgICAg ICAgICAgIHwgICA0NCArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIuYyAgICAgICAgICAg ICAgICAgfCAgIDMxICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYyAgICAgICAg ICAgICB8ICAgNjIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aC5jICAgICAgICAg ICAgICB8ICAyNTkgKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYyAg ICAgICAgIHwgICAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAg ICAgICAgIHwgIDEzNiArKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaCAgICAgICAg ICAgICAgIHwgICAyNCArLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAg ICAgICAgIHwgICA4NyArKwogc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmggICAgICAgICAg ICAgICAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAg ICAgICAgfCAgIDQ3ICsKIHNyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oICAgICAgICAgICAg ICAgICB8ICAxNjQgKysrCiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggICAgICAgICAgICAg ICAgICAgfCAgIDExICsKIHNyYy9pbmNsdWRlL3V0aWxzL2Zvcm1hdHRpbmcuaCAgICAgICAgICAg ICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvanNvbmIuaCAgICAgICAgICAgICAgICAg ICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9qc29uZnVuY3MuaCAgICAgICAgICAgICAg ICAgfCAgICA3ICsKIHNyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmggICAgICAgICAgICAgICAg ICB8ICAgIDEgKwogc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL2VjcGcudHJhaWxlciAgICAg IHwgICAyOCArCiAuLi4vcmVncmVzcy9leHBlY3RlZC9zcWxqc29uX3F1ZXJ5ZnVuY3Mub3V0ICAg fCAxMTQ1ICsrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVk dWxlICAgICAgICAgICAgfCAgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9zcWxqc29uX3F1 ZXJ5ZnVuY3Muc3FsICAgfCAgMzcxICsrKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QgICAgICAgICAgICAgIHwgICAxNiArCiAzNCBmaWxlcyBjaGFuZ2VkLCA0NTM2IGluc2Vy dGlvbnMoKyksIDM5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvc3FsanNvbl9xdWVyeWZ1bmNzLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NxbGpzb25fcXVlcnlmdW5jcy5zcWwKCmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbAppbmRleCA2 ZmY2MjdjN2ZjLi4zMGU1MTZlN2M5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKQEAgLTE1NDYxLDYgKzE1NDYxLDExIEBAIHRh YmxlMi1tYXBwaW5nCiAgICAgICB0aGUgU1FML0pTT04gcGF0aCBsYW5ndWFnZQogICAgICA8L3Bh cmE+CiAgICAgPC9saXN0aXRlbT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAg dGhlIFNRTC9KU09OIHF1ZXJ5IGZ1bmN0aW9ucworICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRl bT4KICAgIDwvaXRlbWl6ZWRsaXN0PgogICA8L3BhcmE+CiAKQEAgLTE4MjE1LDYgKzE4MjIwLDE3 NCBAQCAkLiogPyAoQCBsaWtlX3JlZ2V4ICJeXFxkKyQiKQogICAgIDwvcGFyYT4KICAgIDwvc2Vj dDM+CiAgIDwvc2VjdDI+CisKKyAgIDxzZWN0MiBpZD0ic3FsanNvbi1xdWVyeS1mdW5jdGlvbnMi PgorICAgIDx0aXRsZT5TUUwvSlNPTiBRdWVyeSBGdW5jdGlvbnM8L3RpdGxlPgorICA8cGFyYT4K KyAgIFNRTC9KU09OIGZ1bmN0aW9ucyA8bGl0ZXJhbD5KU09OX0VYSVNUUygpPC9saXRlcmFsPiwK KyAgIDxsaXRlcmFsPkpTT05fUVVFUlkoKTwvbGl0ZXJhbD4sIGFuZCA8bGl0ZXJhbD5KU09OX1ZB TFVFKCk8L2xpdGVyYWw+CisgICBkZXNjcmliZWQgaW4gPHhyZWYgbGlua2VuZD0iZnVuY3Rpb25z LXNxbGpzb24tcXVlcnlpbmciLz4gY2FuIGJlIHVzZWQKKyAgIHRvIHF1ZXJ5IEpTT04gZG9jdW1l bnQuICBFYWNoIG9mIHRoZXNlIGZ1bmN0aW9ucyBhcHBseSBhCisgICA8cmVwbGFjZWFibGU+cGF0 aF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gKHRoZSBxdWVyeSkgdG8gYQorICAgPHJlcGxhY2Vh YmxlPmNvbnRleHRfaXRlbTwvcmVwbGFjZWFibGU+ICh0aGUgZG9jdW1lbnQpOyBzZWVuCisgICA8 eHJlZiBsaW5rZW5kPSJmdW5jdGlvbnMtc3FsanNvbi1wYXRoIi8+IGZvciBtb3JlIGRldGFpbHMg b24gd2hhdAorICAgPHJlcGxhY2VhYmxlPnBhdGhfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IGNh biBjb250YWluLgorICA8L3BhcmE+CisKKyAgPG5vdGU+CisgICA8cGFyYT4KKyAgICBTUUwvSlNP TiBxdWVyeSBmdW5jdGlvbnMgY3VycmVudGx5IG9ubHkgYWNjZXB0IHZhbHVlcyBvZiB0aGUKKyAg ICA8dHlwZT5qc29uYjwvdHlwZT4gdHlwZSwgYmVjYXVzZSB0aGUgU1FML0pTT04gcGF0aCBsYW5n dWFnZSBvbmx5CisgICAgc3VwcG9ydHMgdGhvc2UsIHNvIGl0IG1pZ2h0IGJlIG5lY2Vzc2FyeSB0 byBjYXN0IHRoZQorICAgIDxyZXBsYWNlYWJsZT5jb250ZXh0X2l0ZW08L3JlcGxhY2VhYmxlPiBh cmd1bWVudCBvZiB0aGVzZSBmdW5jdGlvbnMgdG8KKyAgICA8dHlwZT5qc29uYjwvdHlwZT4uCisg ICA8L3BhcmE+CisgIDwvbm90ZT4KKworICA8dGFibGUgaWQ9ImZ1bmN0aW9ucy1zcWxqc29uLXF1 ZXJ5aW5nIj4KKyAgIDx0aXRsZT5TUUwvSlNPTiBRdWVyeSBGdW5jdGlvbnM8L3RpdGxlPgorICAg PHRncm91cCBjb2xzPSIxIj4KKyAgICA8dGhlYWQ+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkg cm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAg ICAgICBGdW5jdGlvbiBzaWduYXR1cmUKKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+Cisg ICAgICAgIERlc2NyaXB0aW9uCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAg ICBFeGFtcGxlKHMpCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90 aGVhZD4KKyAgICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iZnVuY190 YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAgICA8aW5kZXh0 ZXJtPjxwcmltYXJ5Pmpzb25fZXhpc3RzPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPgorICAgICAgICA8 ZnVuY3Rpb24+anNvbl9leGlzdHM8L2Z1bmN0aW9uPiAoCisgICAgICAgIDxyZXBsYWNlYWJsZT5j b250ZXh0X2l0ZW08L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlPnBhdGhfZXhwcmVzc2lvbjwv cmVwbGFjZWFibGU+IDxvcHRpb25hbD4gPGxpdGVyYWw+UEFTU0lORzwvbGl0ZXJhbD4geyA8cmVw bGFjZWFibGU+dmFsdWU8L3JlcGxhY2VhYmxlPiA8bGl0ZXJhbD5BUzwvbGl0ZXJhbD4gPHJlcGxh Y2VhYmxlPnZhcm5hbWU8L3JlcGxhY2VhYmxlPiB9IDxvcHRpb25hbD4sIC4uLjwvb3B0aW9uYWw+ PC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlvbmFsPiB7IDxsaXRlcmFsPlRSVUU8L2xpdGVyYWw+ IHwgPGxpdGVyYWw+RkFMU0U8L2xpdGVyYWw+IHw8bGl0ZXJhbD4gVU5LTk9XTjwvbGl0ZXJhbD4g fCA8bGl0ZXJhbD5FUlJPUjwvbGl0ZXJhbD4gfSA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0ZXJhbD4g PC9vcHRpb25hbD4pCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBSZXR1 cm5zIHRydWUgaWYgdGhlIFNRTC9KU09OIDxyZXBsYWNlYWJsZT5wYXRoX2V4cHJlc3Npb248L3Jl cGxhY2VhYmxlPgorICAgICAgICBhcHBsaWVkIHRvIHRoZSA8cmVwbGFjZWFibGU+Y29udGV4dF9p dGVtPC9yZXBsYWNlYWJsZT4gdXNpbmcgdGhlCisgICAgICAgIDxyZXBsYWNlYWJsZT52YWx1ZTwv cmVwbGFjZWFibGU+cyB5aWVsZHMgYW55IGl0ZW1zLgorICAgICAgICBUaGUgPGxpdGVyYWw+T04g RVJST1I8L2xpdGVyYWw+IGNsYXVzZSBzcGVjaWZpZXMgdGhlIGJlaGF2aW9yIGlmCisgICAgICAg IGFuIGVycm9yIG9jY3VyczsgdGhlIGRlZmF1bHQgaXMgdG8gcmV0dXJuIHRoZSA8dHlwZT5ib29s ZWFuPC90eXBlPgorICAgICAgICA8bGl0ZXJhbD5GQUxTRTwvbGl0ZXJhbD4gdmFsdWUuCisgICAg ICAgIE5vdGUgdGhhdCBpZiB0aGUgPHJlcGxhY2VhYmxlPnBhdGhfZXhwcmVzc2lvbjwvcmVwbGFj ZWFibGU+CisgICAgICAgIGlzIDxsaXRlcmFsPnN0cmljdDwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFs Pk9OIEVSUk9SPC9saXRlcmFsPiBiZWhhdmlvcgorICAgICAgICBpcyA8bGl0ZXJhbD5PTiBFUlJP UjwvbGl0ZXJhbD4sIGFuIGVycm9yIGlzIGdlbmVyYXRlZCBpZiBpdCB5aWVsZHMgbm8KKyAgICAg ICAgaXRlbXMuCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICA8bGl0ZXJh bD5qc29uX2V4aXN0cyhqc29uYiAneyJrZXkxIjogWzEsMiwzXX0nLCAnc3RyaWN0ICQua2V5MVsq XSA/IChAID4gMiknKTwvbGl0ZXJhbD4KKyAgICAgICAgPHJldHVybnZhbHVlPnQ8L3JldHVybnZh bHVlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgPGxpdGVyYWw+anNv bl9leGlzdHMoanNvbmIgJ3siYSI6IFsxLDIsM119JywgJ2xheCAkLmFbNV0nIEVSUk9SIE9OIEVS Uk9SKTwvbGl0ZXJhbD4KKyAgICAgICAgPHJldHVybnZhbHVlPmY8L3JldHVybnZhbHVlPgorICAg ICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgPGxpdGVyYWw+anNvbl9leGlzdHMo anNvbmIgJ3siYSI6IFsxLDIsM119JywgJ3N0cmljdCAkLmFbNV0nIEVSUk9SIE9OIEVSUk9SKTwv bGl0ZXJhbD4KKyAgICAgICAgPHJldHVybnZhbHVlPkVSUk9SOiAganNvbnBhdGggYXJyYXkgc3Vi c2NyaXB0IGlzIG91dCBvZiBib3VuZHM8L3JldHVybnZhbHVlPgorICAgICAgPC9wYXJhPjwvZW50 cnk+CisgICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFi bGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgPGluZGV4dGVy bT48cHJpbWFyeT5qc29uX3F1ZXJ5PC9wcmltYXJ5PjwvaW5kZXh0ZXJtPgorICAgICAgICA8ZnVu Y3Rpb24+anNvbl9xdWVyeTwvZnVuY3Rpb24+ICgKKyAgICAgICAgPHJlcGxhY2VhYmxlPmNvbnRl eHRfaXRlbTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGU+cGF0aF9leHByZXNzaW9uPC9yZXBs YWNlYWJsZT4gPG9wdGlvbmFsPiA8bGl0ZXJhbD5QQVNTSU5HPC9saXRlcmFsPiB7IDxyZXBsYWNl YWJsZT52YWx1ZTwvcmVwbGFjZWFibGU+IDxsaXRlcmFsPkFTPC9saXRlcmFsPiA8cmVwbGFjZWFi bGU+dmFybmFtZTwvcmVwbGFjZWFibGU+IH0gPG9wdGlvbmFsPiwgLi4uPC9vcHRpb25hbD48L29w dGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+IDxsaXRlcmFsPlJFVFVSTklORzwvbGl0ZXJhbD4g PHJlcGxhY2VhYmxlPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4gPGxpdGVyYWw+ Rk9STUFUIEpTT048L2xpdGVyYWw+IDxvcHRpb25hbD4gPGxpdGVyYWw+RU5DT0RJTkcgVVRGODwv bGl0ZXJhbD4gPC9vcHRpb25hbD4gPC9vcHRpb25hbD4gPC9vcHRpb25hbD4KKyAgICAgICAgPG9w dGlvbmFsPiB7IDxsaXRlcmFsPldJVEhPVVQ8L2xpdGVyYWw+IHwgPGxpdGVyYWw+V0lUSDwvbGl0 ZXJhbD4geyA8bGl0ZXJhbD5DT05ESVRJT05BTDwvbGl0ZXJhbD4gfCA8b3B0aW9uYWw+PGxpdGVy YWw+VU5DT05ESVRJT05BTDwvbGl0ZXJhbD48L29wdGlvbmFsPiB9IH0gPG9wdGlvbmFsPiA8bGl0 ZXJhbD5BUlJBWTwvbGl0ZXJhbD4gPC9vcHRpb25hbD4gPGxpdGVyYWw+V1JBUFBFUjwvbGl0ZXJh bD4gPC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlvbmFsPiB7IDxsaXRlcmFsPktFRVA8L2xpdGVy YWw+IHwgPGxpdGVyYWw+T01JVDwvbGl0ZXJhbD4gfSA8bGl0ZXJhbD5RVU9URVM8L2xpdGVyYWw+ IDxvcHRpb25hbD4gPGxpdGVyYWw+T04gU0NBTEFSIFNUUklORzwvbGl0ZXJhbD4gPC9vcHRpb25h bD4gPC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlvbmFsPiB7IDxsaXRlcmFsPkVSUk9SPC9saXRl cmFsPiB8IDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IHwgPGxpdGVyYWw+RU1QVFk8L2xpdGVyYWw+ IHsgPG9wdGlvbmFsPiA8bGl0ZXJhbD5BUlJBWTwvbGl0ZXJhbD4gPC9vcHRpb25hbD4gfCA8bGl0 ZXJhbD5PQkpFQ1Q8L2xpdGVyYWw+IH0gfCA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiA8cmVw bGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IH0gPGxpdGVyYWw+T04gRU1QVFk8L2xp dGVyYWw+IDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyA8bGl0ZXJhbD5FUlJPUjwv bGl0ZXJhbD4gfCA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiB8IDxsaXRlcmFsPkVNUFRZPC9saXRl cmFsPiB7IDxvcHRpb25hbD4gPGxpdGVyYWw+QVJSQVk8L2xpdGVyYWw+IDwvb3B0aW9uYWw+IHwg PGxpdGVyYWw+T0JKRUNUPC9saXRlcmFsPiB9IHwgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4g PHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB9IDxsaXRlcmFsPk9OIEVSUk9S PC9saXRlcmFsPiA8L29wdGlvbmFsPikKKyAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAg ICAgICAgUmV0dXJucyB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIHRoZQorICAgICAgICA8cmVwbGFj ZWFibGU+cGF0aF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gdG8gdGhlCisgICAgICAgIDxyZXBs YWNlYWJsZT5jb250ZXh0X2l0ZW08L3JlcGxhY2VhYmxlPiB1c2luZyB0aGUKKyAgICAgICAgPHJl cGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT5zLgorICAgICAgICBUaGlzIGZ1bmN0aW9uIG11 c3QgcmV0dXJuIGEgSlNPTiBzdHJpbmcsIHNvIGlmIHRoZSBwYXRoIGV4cHJlc3Npb24KKyAgICAg ICAgcmV0dXJucyBtdWx0aXBsZSBTUUwvSlNPTiBpdGVtcywgeW91IG11c3Qgd3JhcCB0aGUgcmVz dWx0IHVzaW5nIHRoZQorICAgICAgICA8bGl0ZXJhbD5XSVRIIFdSQVBQRVI8L2xpdGVyYWw+IGNs YXVzZS4gSWYgdGhlIHdyYXBwZXIgaXMKKyAgICAgICAgPGxpdGVyYWw+VU5DT05ESVRJT05BTDwv bGl0ZXJhbD4sIGFuIGFycmF5IHdyYXBwZXIgd2lsbCBhbHdheXMKKyAgICAgICAgYmUgYXBwbGll ZCwgZXZlbiBpZiB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgYWxyZWFkeSBhIHNpbmdsZSBKU09OIG9i amVjdAorICAgICAgICBvciBhbiBhcnJheSwgYnV0IGlmIGl0IGlzIDxsaXRlcmFsPkNPTkRJVElP TkFMPC9saXRlcmFsPiwgaXQgd2lsbCBub3QgYmUKKyAgICAgICAgYXBwbGllZCB0byBhIHNpbmds ZSBhcnJheSBvciBvYmplY3QuIDxsaXRlcmFsPlVOQ09ORElUSU9OQUw8L2xpdGVyYWw+CisgICAg ICAgIGlzIHRoZSBkZWZhdWx0LiAgSWYgdGhlIHJlc3VsdCBpcyBhIHNjYWxhciBzdHJpbmcsIGJ5 IGRlZmF1bHQgdGhlIHZhbHVlCisgICAgICAgIHJldHVybmVkIHdpbGwgaGF2ZSBzdXJyb3VuZGlu ZyBxdW90ZXMgbWFraW5nIGl0IGEgdmFsaWQgSlNPTiB2YWx1ZSwKKyAgICAgICAgd2hpY2ggY2Fu IGJlIG1hZGUgZXhwbGljaXQgYnkgc3BlY2lmeWluZyA8bGl0ZXJhbD5LRUVQIFFVT1RFUzwvbGl0 ZXJhbD4uCisgICAgICAgIENvbnZlcnNlbHksIHF1b3RlcyBjYW4gYmUgb21pdHRlZCBieSBzcGVj aWZ5aW5nIDxsaXRlcmFsPk9NSVQgUVVPVEVTPC9saXRlcmFsPi4KKyAgICAgICAgVGhlIDxsaXRl cmFsPlJFVFVSTklORzwvbGl0ZXJhbD4gY2xhdXNlIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhl CisgICAgICAgIDxyZXBsYWNlYWJsZT5kYXRhX3R5cGU8L3JlcGxhY2VhYmxlPiBvZiB0aGUgcmVz dWx0IHZhbHVlLiAgSXQgbXVzdAorICAgICAgICBiZSBhIHR5cGUgZm9yIHdoaWNoIHRoZXJlIGlz IGEgY2FzdCBmcm9tIDx0eXBlPnRleHQ8L3R5cGU+IHRvIHRoYXQgdHlwZS4KKyAgICAgICAgSWYg bm8gPGxpdGVyYWw+UkVUVVJOSU5HPC9saXRlcmFsPiBpcyBzcGNpZmllZCwgdGhlIHJldHVybmVk IHZhbHVlIHdpbGwKKyAgICAgICAgYmUgb2YgdHlwZSA8dHlwZT5qc29uYjwvdHlwZT4uCisgICAg ICAgIFRoZSA8bGl0ZXJhbD5PTiBFTVBUWTwvbGl0ZXJhbD4gY2xhdXNlIHNwZWNpZmllcyB0aGUg YmVoYXZpb3IgaWYgdGhlCisgICAgICAgIDxyZXBsYWNlYWJsZT5wYXRoX2V4cHJlc3Npb248L3Jl cGxhY2VhYmxlPiB5aWVsZHMgbm8gdmFsdWUgYXQgYWxsOyB0aGUKKyAgICAgICAgZGVmYXVsdCB3 aGVuIDxsaXRlcmFsPk9OIEVNUFRZPC9saXRlcmFsPiBpcyBub3Qgc3BlY2lmaWVkIGlzIHRvIHJl dHVybiBhCisgICAgICAgIG51bGwgdmFsdWUuICBUaGUgPGxpdGVyYWw+T04gRVJST1I8L2xpdGVy YWw+IGNsYXVzZSBzcGVjaWZpZXMgdGhlIGJlaGF2aW9yCisgICAgICAgIGlmIGFuIGVycm9yIG9j Y3VycyBhcyBhIHJlc3VsdCBvZiA8dHlwZT5qc29ucGF0aDwvdHlwZT4gZXZhbHVhdGlvbgorICAg ICAgICAoaW5jbHVkaW5nIGNhc3QgdG8gdGhlIG91dHB1dCB0eXBlKSBvciBkdXJpbmcgdGhlIGV4 ZWN1dGlvbiBvZgorICAgICAgICA8bGl0ZXJhbD5PTiBFTVBUWTwvbGl0ZXJhbD4gYmVoYXZpb3Ig KHRoYXQgd2FzIGNhdXNlZCBieSBlbXB0eSByZXN1bHQgb2YKKyAgICAgICAgPHR5cGU+anNvbnBh dGg8L3R5cGU+IGV2YWx1YXRpb24pOyB0aGUgZGVmYXVsdCB3aGVuCisgICAgICAgIDxsaXRlcmFs Pk9OIEVSUk9SPC9saXRlcmFsPiBpcyBub3Qgc3BlY2lmaWVkIGlzIHRvIHJldHVybiBhIG51bGwg dmFsdWUuCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICA8bGl0ZXJhbD5q c29uX3F1ZXJ5KGpzb25iICdbMSxbMiwzXSxudWxsXScsICdsYXggJFsqXVsxXScgV0lUSCBDT05E SVRJT05BTCBXUkFQUEVSKTwvbGl0ZXJhbD4KKyAgICAgICAgPHJldHVybnZhbHVlPlszXTwvcmV0 dXJudmFsdWU+CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxyb3c+ CisgICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19z aWduYXR1cmUiPgorICAgICAgICA8aW5kZXh0ZXJtPjxwcmltYXJ5Pmpzb25fdmFsdWU8L3ByaW1h cnk+PC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5qc29uX3ZhbHVlPC9mdW5jdGlvbj4g KAorICAgICAgICA8cmVwbGFjZWFibGU+Y29udGV4dF9pdGVtPC9yZXBsYWNlYWJsZT4sIDxyZXBs YWNlYWJsZT5wYXRoX2V4cHJlc3Npb248L3JlcGxhY2VhYmxlPgorICAgICAgICA8b3B0aW9uYWw+ IDxsaXRlcmFsPlBBU1NJTkc8L2xpdGVyYWw+IHsgPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNl YWJsZT4gPGxpdGVyYWw+QVM8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZT52YXJuYW1lPC9yZXBsYWNl YWJsZT4gfSA8b3B0aW9uYWw+LCAuLi48L29wdGlvbmFsPjwvb3B0aW9uYWw+CisgICAgICAgIDxv cHRpb25hbD4gPGxpdGVyYWw+UkVUVVJOSU5HPC9saXRlcmFsPiA8cmVwbGFjZWFibGU+ZGF0YV90 eXBlPC9yZXBsYWNlYWJsZT4gPC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlvbmFsPiB7IDxsaXRl cmFsPkVSUk9SPC9saXRlcmFsPiB8IDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IHwgPGxpdGVyYWw+ REVGQVVMVDwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB9 IDxsaXRlcmFsPk9OIEVNUFRZPC9saXRlcmFsPiA8L29wdGlvbmFsPgorICAgICAgICA8b3B0aW9u YWw+IHsgPGxpdGVyYWw+RVJST1I8L2xpdGVyYWw+IHwgPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4g fCA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVw bGFjZWFibGU+IH0gPGxpdGVyYWw+T04gRVJST1I8L2xpdGVyYWw+IDwvb3B0aW9uYWw+KQorICAg ICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgUmV0dXJucyB0aGUgcmVzdWx0IG9m IGFwcGx5aW5nIHRoZQorICAgICAgICA8cmVwbGFjZWFibGU+cGF0aF9leHByZXNzaW9uPC9yZXBs YWNlYWJsZT4gdG8gdGhlCisgICAgICAgIDxyZXBsYWNlYWJsZT5jb250ZXh0X2l0ZW08L3JlcGxh Y2VhYmxlPiB1c2luZyB0aGUKKyAgICAgICAgPGxpdGVyYWw+UEFTU0lORzwvbGl0ZXJhbD4gPHJl cGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT5zLiBUaGUKKyAgICAgICAgZXh0cmFjdGVkIHZh bHVlIG11c3QgYmUgYSBzaW5nbGUgPGFjcm9ueW0+U1FML0pTT048L2Fjcm9ueW0+IHNjYWxhcgor ICAgICAgICBpdGVtLiBGb3IgcmVzdWx0cyB0aGF0IGFyZSBvYmplY3RzIG9yIGFycmF5cywgdXNl IHRoZQorICAgICAgICA8ZnVuY3Rpb24+anNvbl9xdWVyeTwvZnVuY3Rpb24+IGZ1bmN0aW9uIGlu c3RlYWQuCisgICAgICAgIFRoZSA8bGl0ZXJhbD5SRVRVUk5JTkc8L2xpdGVyYWw+IGNsYXVzZSBj YW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZQorICAgICAgICA8cmVwbGFjZWFibGU+ZGF0YV90eXBl PC9yZXBsYWNlYWJsZT4gb2YgdGhlIHJlc3VsdCB2YWx1ZS4gIEl0IG11c3QKKyAgICAgICAgYmUg YSB0eXBlIGZvciB3aGljaCB0aGVyZSBhcmUgY2FzdHMgZnJvbSBhbGwgcG9zc2libGUgSlNPTiBz Y2FsYXIKKyAgICAgICAgdmFsdWUgdHlwZXMgKDx0eXBlPnRleHQ8L3R5cGU+LCA8dHlwZT5ib29s ZWFuPC90eXBlPiwgPHR5cGU+bnVtZXJpYzwvdHlwZT4sCisgICAgICAgIGFuZCB2YXJpb3VzIGRh dGV0aW1lIHR5cGVzKSB0byB0aGF0IHR5cGUuICBJZiBubyA8bGl0ZXJhbD5SRVRVUk5JTkc8L2xp dGVyYWw+CisgICAgICAgIGlzIHNwY2lmaWVkLCB0aGUgcmV0dXJuZWQgdmFsdWUgd2lsbCBiZSBv ZiB0eXBlIDx0eXBlPnRleHQ8L3R5cGU+LgorICAgICAgICBUaGUgPGxpdGVyYWw+T04gRVJST1I8 L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5PTiBFTVBUWTwvbGl0ZXJhbD4KKyAgICAgICAgY2xhdXNl cyBoYXZlIHNpbWlsYXIgc2VtYW50aWNzIGFzIG1lbnRpb25lZCBpbiB0aGUgZGVzY3JpcHRpb24g b2YKKyAgICAgICAgPGZ1bmN0aW9uPmpzb25fcXVlcnk8L2Z1bmN0aW9uPi4gIE5vdGUgdGhhdCBz Y2FsYXIgc3RyaW5ncyByZXR1cm5lZAorICAgICAgICBieSA8ZnVuY3Rpb24+anNvbl92YWx1ZTwv ZnVuY3Rpb24+IGFsd2F5cyBoYXZlIHRoZWlyIHF1b3RlcyByZW1vdmVkLAorICAgICAgICBlcXVp dmFsZW50IHRvIHdoYXQgb25lIHdvdWxkIGdldCB3aXRoIDxsaXRlcmFsPk9NSVQgUVVPVEVTPC9s aXRlcmFsPgorICAgICAgICB3aGVuIHVzaW5nIDxmdW5jdGlvbj5qc29uX3F1ZXJ5PC9mdW5jdGlv bj4uCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICA8bGl0ZXJhbD5qc29u X3ZhbHVlKGpzb25iICciMTIzLjQ1IicsICckJyBSRVRVUk5JTkcgZmxvYXQpPC9saXRlcmFsPgor ICAgICAgICA8cmV0dXJudmFsdWU+MTIzLjQ1PC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+ CisgICAgICAgPHBhcmE+CisgICAgICAgIDxsaXRlcmFsPmpzb25fdmFsdWUoanNvbmIgJyIwMzow NCAyMDE1LTAyLTAxIicsICckLmRhdGV0aW1lKCJISDI0Ok1JJm5ic3A7WVlZWS1NTS1ERCIpJyBS RVRVUk5JTkcgZGF0ZSk8L2xpdGVyYWw+CisgICAgICAgIDxyZXR1cm52YWx1ZT4yMDE1LTAyLTAx PC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIDxs aXRlcmFsPmpzb25fdmFsdWUoanNvbmIgJ1sxLDJdJywgJ3N0cmljdCAkWypdJyBERUZBVUxUIDkg T04gRVJST1IpPC9saXRlcmFsPgorICAgICAgICA8cmV0dXJudmFsdWU+OTwvcmV0dXJudmFsdWU+ CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90Ym9keT4KKyAgIDwv dGdyb3VwPgorICA8L3RhYmxlPgorICA8L3NlY3QyPgogIDwvc2VjdDE+CiAKICA8c2VjdDEgaWQ9 ImZ1bmN0aW9ucy1zZXF1ZW5jZSI+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3Nx bF9mZWF0dXJlcy50eHQgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKaW5k ZXggODBjNDBlYWY1Ny4uNzU5OGJkOGYyMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zcWxfZmVhdHVyZXMudHh0CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVz LnR4dApAQCAtNTQ4LDE1ICs1NDgsMTUgQEAgVDgxMQlCYXNpYyBTUUwvSlNPTiBjb25zdHJ1Y3Rv ciBmdW5jdGlvbnMJCQlZRVMKIFQ4MTIJU1FML0pTT046IEpTT05fT0JKRUNUQUdHCQkJWUVTCQog VDgxMwlTUUwvSlNPTjogSlNPTl9BUlJBWUFHRyB3aXRoIE9SREVSIEJZCQkJWUVTCQogVDgxNAlD b2xvbiBpbiBKU09OX09CSkVDVCBvciBKU09OX09CSkVDVEFHRwkJCVlFUwkKLVQ4MjEJQmFzaWMg U1FML0pTT04gcXVlcnkgb3BlcmF0b3JzCQkJTk8JCitUODIxCUJhc2ljIFNRTC9KU09OIHF1ZXJ5 IG9wZXJhdG9ycwkJCVlFUwkKIFQ4MjIJU1FML0pTT046IElTIEpTT04gV0lUSCBVTklRVUUgS0VZ UyBwcmVkaWNhdGUJCQlZRVMJCi1UODIzCVNRTC9KU09OOiBQQVNTSU5HIGNsYXVzZQkJCU5PCQor VDgyMwlTUUwvSlNPTjogUEFTU0lORyBjbGF1c2UJCQlZRVMJCiBUODI0CUpTT05fVEFCTEU6IHNw ZWNpZmljIFBMQU4gY2xhdXNlCQkJTk8JCi1UODI1CVNRTC9KU09OOiBPTiBFTVBUWSBhbmQgT04g RVJST1IgY2xhdXNlcwkJCU5PCQotVDgyNglHZW5lcmFsIHZhbHVlIGV4cHJlc3Npb24gaW4gT04g RVJST1Igb3IgT04gRU1QVFkgY2xhdXNlcwkJCU5PCQorVDgyNQlTUUwvSlNPTjogT04gRU1QVFkg YW5kIE9OIEVSUk9SIGNsYXVzZXMJCQlZRVMJCitUODI2CUdlbmVyYWwgdmFsdWUgZXhwcmVzc2lv biBpbiBPTiBFUlJPUiBvciBPTiBFTVBUWSBjbGF1c2VzCQkJWUVTCQogVDgyNwlKU09OX1RBQkxF OiBzaWJsaW5nIE5FU1RFRCBDT0xVTU5TIGNsYXVzZXMJCQlOTwkKLVQ4MjgJSlNPTl9RVUVSWQkJ CU5PCQotVDgyOQlKU09OX1FVRVJZOiBhcnJheSB3cmFwcGVyIG9wdGlvbnMJCQlOTwkKK1Q4MjgJ SlNPTl9RVUVSWQkJCVlFUwkKK1Q4MjkJSlNPTl9RVUVSWTogYXJyYXkgd3JhcHBlciBvcHRpb25z CQkJWUVTCQogVDgzMAlFbmZvcmNpbmcgdW5pcXVlIGtleXMgaW4gU1FML0pTT04gY29uc3RydWN0 b3IgZnVuY3Rpb25zCQkJWUVTCQogVDgzMQlTUUwvSlNPTiBwYXRoIGxhbmd1YWdlOiBzdHJpY3Qg bW9kZQkJCVlFUwkKIFQ4MzIJU1FML0pTT04gcGF0aCBsYW5ndWFnZTogaXRlbSBtZXRob2QJCQlZ RVMJCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwppbmRleCAzMTgxYjExMzZhLi43NGJjNmY0OTRmIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJ1dGls cy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMv anNvbmZ1bmNzLmgiCisjaW5jbHVkZSAidXRpbHMvanNvbnBhdGguaCIKICNpbmNsdWRlICJ1dGls cy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgogCkBAIC04OCw2ICs4 OSwxMiBAQCBzdGF0aWMgdm9pZCBFeGVjQnVpbGRBZ2dUcmFuc0NhbGwoRXhwclN0YXRlICpzdGF0 ZSwgQWdnU3RhdGUgKmFnZ3N0YXRlLAogCQkJCQkJCQkgIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZv LCBBZ2dTdGF0ZVBlclRyYW5zIHBlcnRyYW5zLAogCQkJCQkJCQkgIGludCB0cmFuc25vLCBpbnQg c2V0bm8sIGludCBzZXRvZmYsIGJvb2wgaXNoYXNoLAogCQkJCQkJCQkgIGJvb2wgbnVsbGNoZWNr KTsKK3N0YXRpYyB2b2lkIEV4ZWNJbml0SnNvbkV4cHIoSnNvbkV4cHIgKmpleHByLCBFeHByU3Rh dGUgKnN0YXRlLAorCQkJCQkJCSBEYXR1bSAqcmVzdiwgYm9vbCAqcmVzbnVsbCwKKwkJCQkJCQkg RXhwckV2YWxTdGVwICpzY3JhdGNoKTsKK3N0YXRpYyBpbnQJRXhlY0luaXRKc29uRXhwckNvZXJj aW9uKEV4cHJTdGF0ZSAqc3RhdGUsIE5vZGUgKmNvZXJjaW9uLAorCQkJCQkJCQkJIEVycm9yU2F2 ZUNvbnRleHQgKmVzY29udGV4dCwKKwkJCQkJCQkJCSBEYXR1bSAqcmVzdiwgYm9vbCAqcmVzbnVs bCk7CiAKIAogLyoKQEAgLTI0MTMsNiArMjQyMCwxNCBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAq bm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCQlicmVhazsKIAkJCX0KIAorCQljYXNlIFRfSnNv bkV4cHI6CisJCQl7CisJCQkJSnNvbkV4cHIgICAqamV4cHIgPSBjYXN0Tm9kZShKc29uRXhwciwg bm9kZSk7CisKKwkJCQlFeGVjSW5pdEpzb25FeHByKGpleHByLCBzdGF0ZSwgcmVzdiwgcmVzbnVs bCwgJnNjcmF0Y2gpOworCQkJCWJyZWFrOworCQkJfQorCiAJCWNhc2UgVF9OdWxsVGVzdDoKIAkJ CXsKIAkJCQlOdWxsVGVzdCAgICpudGVzdCA9IChOdWxsVGVzdCAqKSBub2RlOwpAQCAtNDE4MSwz ICs0MTk2LDMzMiBAQCBFeGVjQnVpbGRQYXJhbVNldEVxdWFsKFR1cGxlRGVzYyBkZXNjLAogCiAJ cmV0dXJuIHN0YXRlOwogfQorCisvKgorICogUHVzaCBzdGVwcyB0byBldmFsdWF0ZSBhIEpzb25F eHByIGFuZCBpdHMgdmFyaW91cyBzdWJzaWRpYXJ5IGV4cHJlc3Npb25zLgorICovCitzdGF0aWMg dm9pZAorRXhlY0luaXRKc29uRXhwcihKc29uRXhwciAqamV4cHIsIEV4cHJTdGF0ZSAqc3RhdGUs CisJCQkJIERhdHVtICpyZXN2LCBib29sICpyZXNudWxsLAorCQkJCSBFeHByRXZhbFN0ZXAgKnNj cmF0Y2gpCit7CisJSnNvbkV4cHJTdGF0ZSAqanNlc3RhdGUgPSBwYWxsb2MwKHNpemVvZihKc29u RXhwclN0YXRlKSk7CisJSnNvbkV4cHJQb3N0RXZhbFN0YXRlICpwb3N0X2V2YWwgPSAmanNlc3Rh dGUtPnBvc3RfZXZhbDsKKwlMaXN0Q2VsbCAgICphcmdleHBybGM7CisJTGlzdENlbGwgICAqYXJn bmFtZWxjOworCUxpc3QJICAgKmp1bXBzX2lmX3NraXAgPSBOSUw7CisJTGlzdAkgICAqanVtcHNf dG9fY29lcmNlX2ZpbmlzaCA9IE5JTDsKKwlMaXN0CSAgICpqdW1wc190b19lbmQgPSBOSUw7CisJ TGlzdENlbGwgICAqbGM7CisJRXhwckV2YWxTdGVwICphczsKKworCWpzZXN0YXRlLT5qc2V4cHIg PSBqZXhwcjsKKworCS8qCisJICogRXZhbHVhdGUgZm9ybWF0dGVkX2V4cHIgc3RvcmluZyB0aGUg cmVzdWx0IGludG8KKwkgKiBqc2VzdGF0ZS0+Zm9ybWF0dGVkX2V4cHIuCisJICovCisJRXhlY0lu aXRFeHByUmVjKChFeHByICopIGpleHByLT5mb3JtYXR0ZWRfZXhwciwgc3RhdGUsCisJCQkJCSZq c2VzdGF0ZS0+Zm9ybWF0dGVkX2V4cHIudmFsdWUsCisJCQkJCSZqc2VzdGF0ZS0+Zm9ybWF0dGVk X2V4cHIuaXNudWxsKTsKKworCS8qIFN0ZXBzIHRvIGp1bXAgdG8gZW5kIGlmIGZvcm1hdHRlZF9l eHByIGV2YWx1YXRlcyB0byBOVUxMICovCisJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KVU1QX0lG X05VTEw7CisJc2NyYXRjaC0+cmVzbnVsbCA9ICZqc2VzdGF0ZS0+Zm9ybWF0dGVkX2V4cHIuaXNu dWxsOworCXNjcmF0Y2gtPmQuanVtcC5qdW1wZG9uZSA9IC0xOwkvKiBzZXQgYmVsb3cgKi8KKwlq dW1wc19pZl9za2lwID0gbGFwcGVuZF9pbnQoanVtcHNfaWZfc2tpcCwgc3RhdGUtPnN0ZXBzX2xl bik7CisJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7CisKKwkvKgorCSAqIEV2YWx1 YXRlIHBhdGhzcGVjIGV4cHJlc3Npb24gc3RvcmluZyB0aGUgcmVzdWx0IGludG8KKwkgKiBqc2Vz dGF0ZS0+cGF0aHNwZWMuCisJICovCisJRXhlY0luaXRFeHByUmVjKChFeHByICopIGpleHByLT5w YXRoX3NwZWMsIHN0YXRlLAorCQkJCQkmanNlc3RhdGUtPnBhdGhzcGVjLnZhbHVlLAorCQkJCQkm anNlc3RhdGUtPnBhdGhzcGVjLmlzbnVsbCk7CisKKwkvKiBTdGVwcyB0byBKVU1QIHRvIGVuZCBp ZiBwYXRoc3BlYyBldmFsdWF0ZXMgdG8gTlVMTCAqLworCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1Bf SlVNUF9JRl9OVUxMOworCXNjcmF0Y2gtPnJlc251bGwgPSAmanNlc3RhdGUtPnBhdGhzcGVjLmlz bnVsbDsKKwlzY3JhdGNoLT5kLmp1bXAuanVtcGRvbmUgPSAtMTsJLyogc2V0IGJlbG93ICovCisJ anVtcHNfaWZfc2tpcCA9IGxhcHBlbmRfaW50KGp1bXBzX2lmX3NraXAsIHN0YXRlLT5zdGVwc19s ZW4pOworCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gpOworCisJLyogU3RlcHMgdG8g Y29tcHV0ZSBQQVNTSU5HIGFyZ3MuICovCisJanNlc3RhdGUtPmFyZ3MgPSBOSUw7CisJZm9yYm90 aChhcmdleHBybGMsIGpleHByLT5wYXNzaW5nX3ZhbHVlcywKKwkJCWFyZ25hbWVsYywgamV4cHIt PnBhc3NpbmdfbmFtZXMpCisJeworCQlFeHByCSAgICphcmdleHByID0gKEV4cHIgKikgbGZpcnN0 KGFyZ2V4cHJsYyk7CisJCVN0cmluZwkgICAqYXJnbmFtZSA9IGxmaXJzdF9ub2RlKFN0cmluZywg YXJnbmFtZWxjKTsKKwkJSnNvblBhdGhWYXJpYWJsZSAqdmFyID0gcGFsbG9jKHNpemVvZigqdmFy KSk7CisKKwkJdmFyLT5uYW1lID0gYXJnbmFtZS0+c3ZhbDsKKwkJdmFyLT50eXBpZCA9IGV4cHJU eXBlKChOb2RlICopIGFyZ2V4cHIpOworCQl2YXItPnR5cG1vZCA9IGV4cHJUeXBtb2QoKE5vZGUg KikgYXJnZXhwcik7CisKKwkJRXhlY0luaXRFeHByUmVjKChFeHByICopIGFyZ2V4cHIsIHN0YXRl LCAmdmFyLT52YWx1ZSwgJnZhci0+aXNudWxsKTsKKworCQlqc2VzdGF0ZS0+YXJncyA9IGxhcHBl bmQoanNlc3RhdGUtPmFyZ3MsIHZhcik7CisJfQorCisJLyogU3RlcCBmb3IgSnNvblBhdGgqIGV2 YWx1YXRpb247IHNlZSBFeGVjRXZhbEpzb25FeHByUGF0aCgpLiAqLworCXNjcmF0Y2gtPm9wY29k ZSA9IEVFT1BfSlNPTkVYUFJfUEFUSDsKKwlzY3JhdGNoLT5yZXN2YWx1ZSA9IHJlc3Y7CisJc2Ny YXRjaC0+cmVzbnVsbCA9IHJlc251bGw7CisJc2NyYXRjaC0+ZC5qc29uZXhwci5qc2VzdGF0ZSA9 IGpzZXN0YXRlOworCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gpOworCisJLyoKKwkg KiBTdGVwIHRvIGp1bXAgdG8gZW5kIHdoZW4gdGhlcmUncyBuZWl0aGVyIGFuIGVycm9yIHdoZW4g ZXZhbHVhdGluZworCSAqIEpzb25QYXRoKiBub3IgYW55IG5lZWQgdG8gY29lcmNlIHRoZSByZXN1 bHQgYmVjYXVzZSBpdCdzIGFscmVhZHkgb2YgdGhlCisJICogc3BlY2lmaWVkIHR5cGUuCisJICov CisJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KVU1QOworCXNjcmF0Y2gtPmQuanVtcC5qdW1wZG9u ZSA9IC0xOwkvKiBzZXQgYmVsb3cgKi8KKwlqdW1wc190b19lbmQgPSBsYXBwZW5kX2ludChqdW1w c190b19lbmQsIHN0YXRlLT5zdGVwc19sZW4pOworCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNj cmF0Y2gpOworCisJLyoKKwkgKiBTdGVwcyB0byBjb2VyY2UgdGhlIHJlc3VsdCB2YWx1ZSBjb21w dXRlZCBieSBFRU9QX0pTT05FWFBSX1BBVEguIFRvCisJICogaGFuZGxlIGNvZXJjaW9uIGVycm9y cyBzb2Z0bHksIHVzZSB0aGUgZm9sbG93aW5nIEVycm9yU2F2ZUNvbnRleHQgd2hlbgorCSAqIGlu aXRpYWxpemluZyB0aGUgY29lcmNpb24gZXhwcmVzc2lvbnMsIGluY2x1ZGluZyBhbnkgSnNvbkNv ZXJjaW9uCisJICogbm9kZXMuCisJICovCisJanNlc3RhdGUtPmVzY29udGV4dC50eXBlID0gVF9F cnJvclNhdmVDb250ZXh0OworCWlmIChqZXhwci0+cmVzdWx0X2NvZXJjaW9uIHx8IGpleHByLT5v bWl0X3F1b3RlcykKKwl7CisJCWpzZXN0YXRlLT5qdW1wX2V2YWxfcmVzdWx0X2NvZXJjaW9uID0K KwkJCUV4ZWNJbml0SnNvbkV4cHJDb2VyY2lvbihzdGF0ZSwgamV4cHItPnJlc3VsdF9jb2VyY2lv biwKKwkJCQkJCQkJCSBqZXhwci0+b25fZXJyb3ItPmJ0eXBlICE9IEpTT05fQkVIQVZJT1JfRVJS T1IgPworCQkJCQkJCQkJICZqc2VzdGF0ZS0+ZXNjb250ZXh0IDogTlVMTCwKKwkJCQkJCQkJCSBy ZXN2LCByZXNudWxsKTsKKwkJLyogSnVtcCB0byBDT0VSQ0lPTl9GSU5JU0guICovCisJCXNjcmF0 Y2gtPm9wY29kZSA9IEVFT1BfSlVNUDsKKwkJc2NyYXRjaC0+ZC5qdW1wLmp1bXBkb25lID0gLTE7 CS8qIHNldCBiZWxvdyAqLworCQlqdW1wc190b19jb2VyY2VfZmluaXNoID0gbGFwcGVuZF9pbnQo anVtcHNfdG9fY29lcmNlX2ZpbmlzaCwKKwkJCQkJCQkJCQkJIHN0YXRlLT5zdGVwc19sZW4pOwor CQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCBzY3JhdGNoKTsKKwl9CisJZWxzZQorCQlqc2VzdGF0 ZS0+anVtcF9ldmFsX3Jlc3VsdF9jb2VyY2lvbiA9IC0xOworCisJLyogU3RlcHMgZm9yIGNvZXJj aW5nIEpzb25JdGVtVHlwZSB2YWx1ZXMgcmV0dXJuZWQgYnkgSnNvblBhdGhWYWx1ZSgpLiAqLwor CWlmIChqZXhwci0+aXRlbV9jb2VyY2lvbnMpCisJeworCQkvKgorCQkgKiBIZXJlIHdlIGNyZWF0 ZSB0aGUgc3RlcHMgZm9yIGVhY2ggSnNvbkl0ZW1UeXBlIHR5cGUncyBjb2VyY2lvbgorCQkgKiBl eHByZXNzaW9uIGFuZCBhbHNvIHN0b3JlIGEgZmxhZyB3aGV0aGVyIHRoZSBleHByZXNzaW9uIGlz IGEKKwkJICogSnNvbkNvZXJjaW9uIG5vZGUuICBFeGVjUHJlcGFyZUpzb25JdGVtQ29lcmNpb24o KSBjYWxsZWQgYnkKKwkJICogRXhlY0V2YWxKc29uRXhwclBhdGgoKSB3aWxsIG1hcCBhIGdpdmVu IEpzb25iVmFsdWUgcmV0dXJuZWQgYnkKKwkJICogSnNvblBhdGhWYWx1ZSgpIHRvIGl0cyAgSnNv bkl0ZW1UeXBlJ3MgZXhwcmVzc2lvbidzIHN0ZXAgYWRkcmVzcworCQkgKiBhbmQgdGhlIGZsYWcg YnkgaW5kZXhpbmcgdGhlIGZvbGxvd2luZyBhcnJheXMgd2l0aCBKc29uSXRlbVR5cGUKKwkJICog ZW51bSB2YWx1ZS4KKwkJICovCisJCWpzZXN0YXRlLT5udW1faXRlbV9jb2VyY2lvbnMgPSBsaXN0 X2xlbmd0aChqZXhwci0+aXRlbV9jb2VyY2lvbnMpOworCQlqc2VzdGF0ZS0+ZXZhbF9pdGVtX2Nv ZXJjaW9uX2p1bXBzID0gKGludCAqKQorCQkJcGFsbG9jKGpzZXN0YXRlLT5udW1faXRlbV9jb2Vy Y2lvbnMgKiBzaXplb2YoaW50KSk7CisJCWpzZXN0YXRlLT5pdGVtX2NvZXJjaW9uX3ZpYV9leHBy ID0gKGJvb2wgKikKKwkJCXBhbGxvYzAoanNlc3RhdGUtPm51bV9pdGVtX2NvZXJjaW9ucyAqIHNp emVvZihib29sKSk7CisJCWZvcmVhY2gobGMsIGpleHByLT5pdGVtX2NvZXJjaW9ucykKKwkJewor CQkJSnNvbkl0ZW1Db2VyY2lvbiAqaXRlbV9jb2VyY2lvbiA9IGxmaXJzdChsYyk7CisJCQlOb2Rl CSAgICpjb2VyY2lvbiA9IGl0ZW1fY29lcmNpb24tPmNvZXJjaW9uOworCisJCQlqc2VzdGF0ZS0+ aXRlbV9jb2VyY2lvbl92aWFfZXhwcltpdGVtX2NvZXJjaW9uLT5pdGVtX3R5cGVdID0KKwkJCQko Y29lcmNpb24gIT0gTlVMTCAmJiAhSXNBKGNvZXJjaW9uLCBKc29uQ29lcmNpb24pKTsKKwkJCWpz ZXN0YXRlLT5ldmFsX2l0ZW1fY29lcmNpb25fanVtcHNbaXRlbV9jb2VyY2lvbi0+aXRlbV90eXBl XSA9CisJCQkJRXhlY0luaXRKc29uRXhwckNvZXJjaW9uKHN0YXRlLCBjb2VyY2lvbiwKKwkJCQkJ CQkJCQkgamV4cHItPm9uX2Vycm9yLT5idHlwZSAhPSBKU09OX0JFSEFWSU9SX0VSUk9SID8KKwkJ CQkJCQkJCQkgJmpzZXN0YXRlLT5lc2NvbnRleHQgOiBOVUxMLAorCQkJCQkJCQkJCSByZXN2LCBy ZXNudWxsKTsKKworCQkJLyogSnVtcCB0byBDT0VSQ0lPTl9GSU5JU0guICovCisJCQlzY3JhdGNo LT5vcGNvZGUgPSBFRU9QX0pVTVA7CisJCQlzY3JhdGNoLT5kLmp1bXAuanVtcGRvbmUgPSAtMTsJ Lyogc2V0IGJlbG93ICovCisJCQlqdW1wc190b19jb2VyY2VfZmluaXNoID0gbGFwcGVuZF9pbnQo anVtcHNfdG9fY29lcmNlX2ZpbmlzaCwKKwkJCQkJCQkJCQkJCSBzdGF0ZS0+c3RlcHNfbGVuKTsK KwkJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gpOworCQl9CisJfQorCisJLyoKKwkg KiBBZGQgc3RlcCB0byByZXNldCB0aGUgRXJyb3JTYXZlQ29udGV4dCBhbmQgc2V0IGVycm9yIGZs YWcgaWYgdGhlCisJICogY29lcmNpb24gc3RlcHMgZW5jb3VudGVyZWQgYW4gZXJyb3IgYnV0IHdh cyBub3QgdGhyb3duIGJlY2F1c2Ugb2YgdGhlCisJICogT04gRVJST1IgYmVoYXZpb3IuCisJICov CisJaWYgKGpleHByLT5yZXN1bHRfY29lcmNpb24gfHwgamV4cHItPml0ZW1fY29lcmNpb25zKQor CXsKKwkJZm9yZWFjaChsYywganVtcHNfdG9fY29lcmNlX2ZpbmlzaCkKKwkJeworCQkJYXMgPSAm c3RhdGUtPnN0ZXBzW2xmaXJzdF9pbnQobGMpXTsKKwkJCWFzLT5kLmp1bXAuanVtcGRvbmUgPSBz dGF0ZS0+c3RlcHNfbGVuOworCQl9CisKKwkJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KU09ORVhQ Ul9DT0VSQ0lPTl9GSU5JU0g7CisJCXNjcmF0Y2gtPmQuanNvbmV4cHIuanNlc3RhdGUgPSBqc2Vz dGF0ZTsKKwkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7CisJfQorCisJanNlc3Rh dGUtPmp1bXBfZW1wdHkgPSBqc2VzdGF0ZS0+anVtcF9lcnJvciA9IC0xOworCisJLyoKKwkgKiBT dGVwIHRvIGhhbmRsZSBPTiBFUlJPUiBiZWhhdmlvcnMuICBUaGlzIGhhbmRsZXMgYm90aCB0aGUg ZXJyb3JzIHRoYXQKKwkgKiBvY2N1ciBkdXJpbmcgRUVPUF9KU09ORVhQUl9QQVRIIGV2YWx1YXRp b24gYW5kIHN1YnNlcXVlbnQgY29lcmNpb24KKwkgKiBldmFsdWF0aW9uLgorCSAqLworCWlmIChq ZXhwci0+b25fZXJyb3IgJiYKKwkJamV4cHItPm9uX2Vycm9yLT5idHlwZSAhPSBKU09OX0JFSEFW SU9SX0VSUk9SKQorCXsKKwkJanNlc3RhdGUtPmp1bXBfZXJyb3IgPSBzdGF0ZS0+c3RlcHNfbGVu OworCQlzY3JhdGNoLT5vcGNvZGUgPSBFRU9QX0pVTVBfSUZfTk9UX1RSVUU7CisKKwkJLyoKKwkJ ICogcG9zdF9ldmFsLmVycm9yIGlzIHNldCBieSBFeGVjRXZhbEpzb25FeHByUGF0aCgpIGFuZAor CQkgKiBFeGVjRXZhbEpzb25Db2VyY2lvbkZpbmlzaCgpLgorCQkgKi8KKwkJc2NyYXRjaC0+cmVz dmFsdWUgPSAmcG9zdF9ldmFsLT5lcnJvci52YWx1ZTsKKwkJc2NyYXRjaC0+cmVzbnVsbCA9ICZw b3N0X2V2YWwtPmVycm9yLmlzbnVsbDsKKwkJc2NyYXRjaC0+ZC5qdW1wLmp1bXBkb25lID0gLTE7 CS8qIHNldCBiZWxvdyAqLworCQlqdW1wc190b19lbmQgPSBsYXBwZW5kX2ludChqdW1wc190b19l bmQsIHN0YXRlLT5zdGVwc19sZW4pOworCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCBzY3JhdGNo KTsKKworCQkvKiBTdGVwcyB0byBldmFsdWF0ZSB0aGUgT04gRVJST1IgZXhwcmVzc2lvbiAqLwor CQlFeGVjSW5pdEV4cHJSZWMoKEV4cHIgKikgamV4cHItPm9uX2Vycm9yLT5leHByLAorCQkJCQkJ c3RhdGUsIHJlc3YsIHJlc251bGwpOworCisJCS8qIFN0ZXBzIHRvIGNvZXJjZSB0aGUgT04gRVJS T1IgZXhwcmVzc2lvbiBpZiBuZWVkZWQgKi8KKwkJKHZvaWQpIEV4ZWNJbml0SnNvbkV4cHJDb2Vy Y2lvbihzdGF0ZSwKKwkJCQkJCQkJCQkoTm9kZSAqKSBqZXhwci0+b25fZXJyb3ItPmNvZXJjaW9u LAorCQkJCQkJCQkJCSZqc2VzdGF0ZS0+ZXNjb250ZXh0LAorCQkJCQkJCQkJCXJlc3YsIHJlc251 bGwpOworCisJCWp1bXBzX3RvX2VuZCA9IGxhcHBlbmRfaW50KGp1bXBzX3RvX2VuZCwgc3RhdGUt PnN0ZXBzX2xlbik7CisJCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1BfSlVNUDsKKwkJc2NyYXRjaC0+ ZC5qdW1wLmp1bXBkb25lID0gLTE7CisJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gp OworCX0KKworCS8qIFN0ZXAgdG8gaGFuZGxlIE9OIEVNUFRZIGJlaGF2aW9ycy4gKi8KKwlpZiAo amV4cHItPm9uX2VtcHR5ICE9IE5VTEwgJiYKKwkJamV4cHItPm9uX2VtcHR5LT5idHlwZSAhPSBK U09OX0JFSEFWSU9SX0VSUk9SKQorCXsKKwkJanNlc3RhdGUtPmp1bXBfZW1wdHkgPSBzdGF0ZS0+ c3RlcHNfbGVuOworCisJCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1BfSlVNUF9JRl9OT1RfVFJVRTsK KwkJc2NyYXRjaC0+cmVzdmFsdWUgPSAmcG9zdF9ldmFsLT5lbXB0eS52YWx1ZTsKKwkJc2NyYXRj aC0+cmVzbnVsbCA9ICZwb3N0X2V2YWwtPmVtcHR5LmlzbnVsbDsKKwkJc2NyYXRjaC0+ZC5qdW1w Lmp1bXBkb25lID0gLTE7CS8qIHNldCBiZWxvdyAqLworCQlqdW1wc190b19lbmQgPSBsYXBwZW5k X2ludChqdW1wc190b19lbmQsIHN0YXRlLT5zdGVwc19sZW4pOworCQlFeHByRXZhbFB1c2hTdGVw KHN0YXRlLCBzY3JhdGNoKTsKKworCQkvKiBTdGVwcyB0byBldmFsdWF0ZSB0aGUgT04gRU1QVFkg ZXhwcmVzc2lvbiAqLworCQlFeGVjSW5pdEV4cHJSZWMoKEV4cHIgKikgamV4cHItPm9uX2VtcHR5 LT5leHByLAorCQkJCQkJc3RhdGUsIHJlc3YsIHJlc251bGwpOworCisJCS8qIFN0ZXBzIHRvIGNv ZXJjZSB0aGUgT04gRU1QVFkgZXhwcmVzc2lvbiBpZiBuZWVkZWQgKi8KKwkJKHZvaWQpIEV4ZWNJ bml0SnNvbkV4cHJDb2VyY2lvbihzdGF0ZSwKKwkJCQkJCQkJCQkoTm9kZSAqKSBqZXhwci0+b25f ZW1wdHktPmNvZXJjaW9uLAorCQkJCQkJCQkJCSZqc2VzdGF0ZS0+ZXNjb250ZXh0LAorCQkJCQkJ CQkJCXJlc3YsIHJlc251bGwpOworCisJCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1BfSlVNUDsKKwkJ c2NyYXRjaC0+ZC5qdW1wLmp1bXBkb25lID0gLTE7CS8qIHNldCBiZWxvdyAqLworCQlqdW1wc190 b19lbmQgPSBsYXBwZW5kX2ludChqdW1wc190b19lbmQsIHN0YXRlLT5zdGVwc19sZW4pOworCQlF eHByRXZhbFB1c2hTdGVwKHN0YXRlLCBzY3JhdGNoKTsKKwl9CisKKwlpZiAoanNlc3RhdGUtPmp1 bXBfZXJyb3IgPCAwICYmIGpzZXN0YXRlLT5qdW1wX2VtcHR5IDwgMCkKKwl7CisJCXNjcmF0Y2gt Pm9wY29kZSA9IEVFT1BfSlVNUDsKKwkJc2NyYXRjaC0+ZC5qdW1wLmp1bXBkb25lID0gLTE7CS8q IHNldCBiZWxvdyAqLworCQlqdW1wc190b19lbmQgPSBsYXBwZW5kX2ludChqdW1wc190b19lbmQs IHN0YXRlLT5zdGVwc19sZW4pOworCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCBzY3JhdGNoKTsK Kwl9CisKKwkvKiBSZXR1cm4gTlVMTCB3aGVuIGVpdGhlciBmb3JtYXR0ZWRfZXhwciBvciBwYXRo c3BlYyBpcyBOVUxMLiAqLworCWZvcmVhY2gobGMsIGp1bXBzX2lmX3NraXApCisJeworCQlhcyA9 ICZzdGF0ZS0+c3RlcHNbbGZpcnN0X2ludChsYyldOworCQlhcy0+ZC5qdW1wLmp1bXBkb25lID0g c3RhdGUtPnN0ZXBzX2xlbjsKKwl9CisJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9DT05TVDsKKwlz Y3JhdGNoLT5yZXN2YWx1ZSA9IHJlc3Y7CisJc2NyYXRjaC0+cmVzbnVsbCA9IHJlc251bGw7CisJ c2NyYXRjaC0+ZC5jb25zdHZhbC52YWx1ZSA9IChEYXR1bSkgMDsKKwlzY3JhdGNoLT5kLmNvbnN0 dmFsLmlzbnVsbCA9IHRydWU7CisJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7CisK KwkvKiBKdW1wIHRvIGNvZXJjZSB0aGUgTlVMTCB1c2luZyByZXN1bHRfY29lcmNpb24gaXMgcHJl c2VudC4gKi8KKwlpZiAoanNlc3RhdGUtPmp1bXBfZXZhbF9yZXN1bHRfY29lcmNpb24gPj0gMCkK Kwl7CisJCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1BfSlVNUDsKKwkJc2NyYXRjaC0+ZC5qdW1wLmp1 bXBkb25lID0ganNlc3RhdGUtPmp1bXBfZXZhbF9yZXN1bHRfY29lcmNpb247CisJCUV4cHJFdmFs UHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gpOworCX0KKworCWZvcmVhY2gobGMsIGp1bXBzX3RvX2Vu ZCkKKwl7CisJCWFzID0gJnN0YXRlLT5zdGVwc1tsZmlyc3RfaW50KGxjKV07CisJCWFzLT5kLmp1 bXAuanVtcGRvbmUgPSBzdGF0ZS0+c3RlcHNfbGVuOworCX0KKworCWpzZXN0YXRlLT5qdW1wX2Vu ZCA9IHN0YXRlLT5zdGVwc19sZW47Cit9CisKKy8qIEluaXRpYWxpemUgb25lIEpzb25Db2VyY2lv biBmb3IgZXhlY3V0aW9uLiAqLworc3RhdGljIGludAorRXhlY0luaXRKc29uRXhwckNvZXJjaW9u KEV4cHJTdGF0ZSAqc3RhdGUsIE5vZGUgKmNvZXJjaW9uLAorCQkJCQkJIEVycm9yU2F2ZUNvbnRl eHQgKmVzY29udGV4dCwKKwkJCQkJCSBEYXR1bSAqcmVzdiwgYm9vbCAqcmVzbnVsbCkKK3sKKwlp bnQJCQlqdW1wX2V2YWxfY29lcmNpb247CisJRGF0dW0JICAgKnNhdmVfaW5uZXJtb3N0X2Nhc2V2 YWw7CisJYm9vbAkgICAqc2F2ZV9pbm5lcm1vc3RfY2FzZW51bGw7CisJRXJyb3JTYXZlQ29udGV4 dCAqc2F2ZV9lc2NvbnRleHQ7CisKKwlpZiAoY29lcmNpb24gPT0gTlVMTCkKKwkJcmV0dXJuIC0x OworCisJanVtcF9ldmFsX2NvZXJjaW9uID0gc3RhdGUtPnN0ZXBzX2xlbjsKKwlpZiAoSXNBKGNv ZXJjaW9uLCBKc29uQ29lcmNpb24pKQorCXsKKwkJRXhwckV2YWxTdGVwIHNjcmF0Y2ggPSB7MH07 CisJCU9pZAkJCXR5cGlucHV0OworCQlGbWdySW5mbyAgICpmaW5mbzsKKwkJT2lkCQkJdHlwaW9w YXJhbTsKKworCQlnZXRUeXBlSW5wdXRJbmZvKCgoSnNvbkNvZXJjaW9uICopIGNvZXJjaW9uKS0+ dGFyZ2V0dHlwZSwKKwkJCQkJCSAmdHlwaW5wdXQsICZ0eXBpb3BhcmFtKTsKKwkJZmluZm8gPSBw YWxsb2MwKHNpemVvZihGbWdySW5mbykpOworCQlmbWdyX2luZm8odHlwaW5wdXQsIGZpbmZvKTsK KworCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfSlNPTkVYUFJfQ09FUkNJT047CisJCXNjcmF0Y2gu cmVzdmFsdWUgPSByZXN2OworCQlzY3JhdGNoLnJlc251bGwgPSByZXNudWxsOworCQlzY3JhdGNo LmQuanNvbmV4cHJfY29lcmNpb24uY29lcmNpb24gPSAoSnNvbkNvZXJjaW9uICopIGNvZXJjaW9u OworCQlzY3JhdGNoLmQuanNvbmV4cHJfY29lcmNpb24uaW5wdXRfZmluZm8gPSBmaW5mbzsKKwkJ c2NyYXRjaC5kLmpzb25leHByX2NvZXJjaW9uLnR5cGlvcGFyYW0gPSB0eXBpb3BhcmFtOworCQlz Y3JhdGNoLmQuanNvbmV4cHJfY29lcmNpb24uanNvbl9wb3B1bGF0ZV90eXBlX2NhY2hlID0gTlVM TDsKKwkJc2NyYXRjaC5kLmpzb25leHByX2NvZXJjaW9uLmVzY29udGV4dCA9IGVzY29udGV4dDsK KwkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOworCQlyZXR1cm4ganVtcF9ldmFs X2NvZXJjaW9uOworCX0KKworCS8qIFB1c2ggc3RlcChzKSB0byBjb21wdXRlIGNzdGF0ZS0+Y29l cmNpb24uICovCisJc2F2ZV9pbm5lcm1vc3RfY2FzZXZhbCA9IHN0YXRlLT5pbm5lcm1vc3RfY2Fz ZXZhbDsKKwlzYXZlX2lubmVybW9zdF9jYXNlbnVsbCA9IHN0YXRlLT5pbm5lcm1vc3RfY2FzZW51 bGw7CisJc2F2ZV9lc2NvbnRleHQgPSBzdGF0ZS0+ZXNjb250ZXh0OworCisJc3RhdGUtPmlubmVy bW9zdF9jYXNldmFsID0gcmVzdjsKKwlzdGF0ZS0+aW5uZXJtb3N0X2Nhc2VudWxsID0gcmVzbnVs bDsKKwlzdGF0ZS0+ZXNjb250ZXh0ID0gZXNjb250ZXh0OworCisJRXhlY0luaXRFeHByUmVjKChF eHByICopIGNvZXJjaW9uLCBzdGF0ZSwgcmVzdiwgcmVzbnVsbCk7CisKKwlzdGF0ZS0+aW5uZXJt b3N0X2Nhc2V2YWwgPSBzYXZlX2lubmVybW9zdF9jYXNldmFsOworCXN0YXRlLT5pbm5lcm1vc3Rf Y2FzZW51bGwgPSBzYXZlX2lubmVybW9zdF9jYXNlbnVsbDsKKwlzdGF0ZS0+ZXNjb250ZXh0ID0g c2F2ZV9lc2NvbnRleHQ7CisKKwlyZXR1cm4ganVtcF9ldmFsX2NvZXJjaW9uOworfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKaW5kZXggM2YyMGYxZGQzMS4uOTUxZmE0ZmNhMCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCkBAIC03Myw4ICs3Myw4IEBACiAj aW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9leHBhbmRlZHJlY29yZC5o IgogI2luY2x1ZGUgInV0aWxzL2pzb24uaCIKLSNpbmNsdWRlICJ1dGlscy9qc29uYi5oIgogI2lu Y2x1ZGUgInV0aWxzL2pzb25mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxzL2pzb25wYXRoLmgiCiAj aW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIK ICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKQEAgLTE4MSw2ICsxODEsMTAgQEAgc3RhdGlj IHBnX2F0dHJpYnV0ZV9hbHdheXNfaW5saW5lIHZvaWQgRXhlY0FnZ1BsYWluVHJhbnNCeVJlZihB Z2dTdGF0ZSAqYWdnc3RhdGUKIAkJCQkJCQkJCQkJCQkJCSAgQWdnU3RhdGVQZXJHcm91cCBwZXJn cm91cCwKIAkJCQkJCQkJCQkJCQkJCSAgRXhwckNvbnRleHQgKmFnZ2NvbnRleHQsCiAJCQkJCQkJ CQkJCQkJCQkgIGludCBzZXRubyk7CitzdGF0aWMgdm9pZCBFeGVjUHJlcGFyZUpzb25JdGVtQ29l cmNpb24oSnNvbmJWYWx1ZSAqaXRlbSwgSnNvbkV4cHJTdGF0ZSAqanNlc3RhdGUsCisJCQkJCQkJ CQkJYm9vbCB0aHJvd19lcnJvciwKKwkJCQkJCQkJCQlpbnQgKmp1bXBfZXZhbF9pdGVtX2NvZXJj aW9uLAorCQkJCQkJCQkJCURhdHVtICpyZXN2YWx1ZSwgYm9vbCAqcmVzbnVsbCk7CiAKIC8qCiAg KiBTY2FsYXJBcnJheU9wRXhwckhhc2hFbnRyeQpAQCAtNDgyLDYgKzQ4Niw5IEBAIEV4ZWNJbnRl cnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNu dWxsKQogCQkmJkNBU0VfRUVPUF9YTUxFWFBSLAogCQkmJkNBU0VfRUVPUF9KU09OX0NPTlNUUlVD VE9SLAogCQkmJkNBU0VfRUVPUF9JU19KU09OLAorCQkmJkNBU0VfRUVPUF9KU09ORVhQUl9QQVRI LAorCQkmJkNBU0VfRUVPUF9KU09ORVhQUl9DT0VSQ0lPTiwKKwkJJiZDQVNFX0VFT1BfSlNPTkVY UFJfQ09FUkNJT05fRklOSVNILAogCQkmJkNBU0VfRUVPUF9BR0dSRUYsCiAJCSYmQ0FTRV9FRU9Q X0dST1VQSU5HX0ZVTkMsCiAJCSYmQ0FTRV9FRU9QX1dJTkRPV19GVU5DLApAQCAtMTU1NCw2ICsx NTYxLDI4IEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICpl Y29udGV4dCwgYm9vbCAqaXNudWxsKQogCQkJRUVPX05FWFQoKTsKIAkJfQogCisJCUVFT19DQVNF KEVFT1BfSlNPTkVYUFJfUEFUSCkKKwkJeworCQkJLyogdG9vIGNvbXBsZXggZm9yIGFuIGlubGlu ZSBpbXBsZW1lbnRhdGlvbiAqLworCQkJRUVPX0pVTVAoRXhlY0V2YWxKc29uRXhwclBhdGgoc3Rh dGUsIG9wLCBlY29udGV4dCkpOworCQl9CisKKwkJRUVPX0NBU0UoRUVPUF9KU09ORVhQUl9DT0VS Q0lPTikKKwkJeworCQkJLyogdG9vIGNvbXBsZXggZm9yIGFuIGlubGluZSBpbXBsZW1lbnRhdGlv biAqLworCQkJRXhlY0V2YWxKc29uQ29lcmNpb24oc3RhdGUsIG9wLCBlY29udGV4dCk7CisKKwkJ CUVFT19ORVhUKCk7CisJCX0KKworCQlFRU9fQ0FTRShFRU9QX0pTT05FWFBSX0NPRVJDSU9OX0ZJ TklTSCkKKwkJeworCQkJLyogdG9vIGNvbXBsZXggZm9yIGFuIGlubGluZSBpbXBsZW1lbnRhdGlv biAqLworCQkJRXhlY0V2YWxKc29uQ29lcmNpb25GaW5pc2goc3RhdGUsIG9wKTsKKworCQkJRUVP X05FWFQoKTsKKwkJfQorCiAJCUVFT19DQVNFKEVFT1BfQUdHUkVGKQogCQl7CiAJCQkvKgpAQCAt NDIxNCw2ICs0MjQzLDM0NiBAQCBFeGVjRXZhbEpzb25Jc1ByZWRpY2F0ZShFeHByU3RhdGUgKnN0 YXRlLCBFeHByRXZhbFN0ZXAgKm9wKQogCSpvcC0+cmVzdmFsdWUgPSBCb29sR2V0RGF0dW0ocmVz KTsKIH0KIAorLyoKKyAqIFBlcmZvcm1zIEpzb25QYXRoe0V4aXN0c3xRdWVyeXxWYWx1ZX0oKSBm b3IgZ2l2ZW4gY29udGV4dCBpdGVtIGFuZCBKU09OCisgKiBwYXRoLgorICoKKyAqIFJlc3VsdCBp cyBzZXQgaW4gKm9wLT5yZXN2YWx1ZSBhbmQgKm9wLT5yZXNudWxsLiAgUmV0dXJuIHZhbHVlIGlz IHRoZQorICogc3RlcCBhZGRyZXNzIHRvIGJlIHBlcmZvcm1lZCBuZXh0LgorICoKKyAqIE9uIHJl dHVybiwgSnNvbkV4cHJQb3N0RXZhbFN0YXRlIGlzIHBvcHVsYXRlZCB3aXRoIHRoZSBmb2xsb3dp bmcgZGV0YWlsczoKKyAqCS0gZXJyb3IudmFsdWU6IHRydWUgaWYgYW4gZXJyb3Igb2NjdXJyZWQg ZHVyaW5nIEpzb25QYXRoIGV2YWx1YXRpb24KKyAqCS0gZW1wdHkudmFsdWU6IHRydWUgaWYgSnNv blBhdGh7UXVlcnl8VmFsdWV9KCkgZm91bmQgbm8gbWF0Y2hpbmcgaXRlbQorICoKKyAqIE5vIHJl dHVybiBpZiB0aGUgT04gRVJST1IvRU1QVFkgYmVoYXZpb3IgaXMgRVJST1IuCisgKi8KK2ludAor RXhlY0V2YWxKc29uRXhwclBhdGgoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwK KwkJCQkJIEV4cHJDb250ZXh0ICplY29udGV4dCkKK3sKKwlKc29uRXhwclN0YXRlICpqc2VzdGF0 ZSA9IG9wLT5kLmpzb25leHByLmpzZXN0YXRlOworCUpzb25FeHByUG9zdEV2YWxTdGF0ZSAqcG9z dF9ldmFsID0gJmpzZXN0YXRlLT5wb3N0X2V2YWw7CisJSnNvbkV4cHIgICAqamV4cHIgPSBqc2Vz dGF0ZS0+anNleHByOworCURhdHVtCQlpdGVtOworCUpzb25QYXRoICAgKnBhdGg7CisJYm9vbAkJ dGhyb3dfZXJyb3IgPSBqZXhwci0+b25fZXJyb3ItPmJ0eXBlID09IEpTT05fQkVIQVZJT1JfRVJS T1I7CisJYm9vbAkJZXJyb3IgPSBmYWxzZSwKKwkJCQllbXB0eSA9IGZhbHNlOworCisJLyogTWln aHQgZ2V0IG92ZXJyaWRkZW4gZm9yIEpTT05fVkFMVUVfT1AgYnkgYW4gcGVyLWl0ZW0gY29lcmNp b24uICovCisJaW50CQkJanVtcF9ldmFsX2NvZXJjaW9uID0ganNlc3RhdGUtPmp1bXBfZXZhbF9y ZXN1bHRfY29lcmNpb247CisKKwlpdGVtID0ganNlc3RhdGUtPmZvcm1hdHRlZF9leHByLnZhbHVl OworCXBhdGggPSBEYXR1bUdldEpzb25QYXRoUChqc2VzdGF0ZS0+cGF0aHNwZWMudmFsdWUpOwor CisJLyogUmVzZXQgSnNvbkV4cHJQb3N0RXZhbFN0YXRlIGZvciB0aGlzIGV2YWx1YXRpb24uICov CisJbWVtc2V0KHBvc3RfZXZhbCwgMCwgc2l6ZW9mKCpwb3N0X2V2YWwpKTsKKwlzd2l0Y2ggKGpl eHByLT5vcCkKKwl7CisJCWNhc2UgSlNPTl9FWElTVFNfT1A6CisJCQl7CisJCQkJYm9vbAkJZXhp c3RzID0gSnNvblBhdGhFeGlzdHMoaXRlbSwgcGF0aCwKKwkJCQkJCQkJCQkJCQkhdGhyb3dfZXJy b3IgPyAmZXJyb3IgOiBOVUxMLAorCQkJCQkJCQkJCQkJCWpzZXN0YXRlLT5hcmdzKTsKKworCQkJ CWlmICghZXJyb3IpCisJCQkJeworCQkJCQkqb3AtPnJlc3ZhbHVlID0gQm9vbEdldERhdHVtKGV4 aXN0cyk7CisJCQkJCSpvcC0+cmVzbnVsbCA9IGZhbHNlOworCQkJCX0KKwkJCX0KKwkJCWJyZWFr OworCisJCWNhc2UgSlNPTl9RVUVSWV9PUDoKKwkJCSpvcC0+cmVzdmFsdWUgPSBKc29uUGF0aFF1 ZXJ5KGl0ZW0sIHBhdGgsIGpleHByLT53cmFwcGVyLCAmZW1wdHksCisJCQkJCQkJCQkJICAhdGhy b3dfZXJyb3IgPyAmZXJyb3IgOiBOVUxMLAorCQkJCQkJCQkJCSAganNlc3RhdGUtPmFyZ3MpOwor CisJCQlpZiAoIWVycm9yICYmICFlbXB0eSkKKwkJCQkqb3AtPnJlc251bGwgPSAoRGF0dW1HZXRQ b2ludGVyKCpvcC0+cmVzdmFsdWUpID09IE5VTEwpOworCQkJYnJlYWs7CisKKwkJY2FzZSBKU09O X1ZBTFVFX09QOgorCQkJeworCQkJCUpzb25iVmFsdWUgKmpidiA9IEpzb25QYXRoVmFsdWUoaXRl bSwgcGF0aCwgJmVtcHR5LAorCQkJCQkJCQkJCQkJIXRocm93X2Vycm9yID8gJmVycm9yIDogTlVM TCwKKwkJCQkJCQkJCQkJCWpzZXN0YXRlLT5hcmdzKTsKKworCQkJCWlmIChqYnYgPT0gTlVMTCkK KwkJCQl7CisJCQkJCS8qIFdpbGwgYmUgY29lcmNlZCB3aXRoIHJlc3VsdF9jb2VyY2lvbi4gKi8K KwkJCQkJKm9wLT5yZXN2YWx1ZSA9IChEYXR1bSkgMDsKKwkJCQkJKm9wLT5yZXNudWxsID0gdHJ1 ZTsKKwkJCQl9CisJCQkJZWxzZSBpZiAoIWVycm9yICYmICFlbXB0eSkKKwkJCQl7CisJCQkJCS8q CisJCQkJCSAqIElmIHRoZSByZXF1ZXN0ZWQgb3V0cHV0IHR5cGUgaXMganNvbihiKSwgdXNlCisJ CQkJCSAqIHJlc3VsdF9jb2VyY2lvbiB0byBkbyB0aGUgY29lcmNpb24uCisJCQkJCSAqLworCQkJ CQlpZiAoamV4cHItPnJldHVybmluZy0+dHlwaWQgPT0gSlNPTk9JRCB8fAorCQkJCQkJamV4cHIt PnJldHVybmluZy0+dHlwaWQgPT0gSlNPTkJPSUQpCisJCQkJCXsKKwkJCQkJCSpvcC0+cmVzdmFs dWUgPSBKc29uYlBHZXREYXR1bShKc29uYlZhbHVlVG9Kc29uYihqYnYpKTsKKwkJCQkJCSpvcC0+ cmVzbnVsbCA9IGZhbHNlOworCQkJCQl9CisJCQkJCWVsc2UKKwkJCQkJeworCQkJCQkJLyoKKwkJ CQkJCSAqIEVsc2UsIHVzZSBvbmUgb2YgdGhlIGl0ZW1fY29lcmNpb25zLgorCQkJCQkJICoKKwkJ CQkJCSAqIEVycm9yIG91dCBpZiBubyBjYXN0IGV4cHJlc3Npb24gZXhpc3RzLgorCQkJCQkJICov CisJCQkJCQlFeGVjUHJlcGFyZUpzb25JdGVtQ29lcmNpb24oamJ2LCBqc2VzdGF0ZSwgdGhyb3df ZXJyb3IsCisJCQkJCQkJCQkJCQkJJmp1bXBfZXZhbF9jb2VyY2lvbiwKKwkJCQkJCQkJCQkJCQlv cC0+cmVzdmFsdWUsIG9wLT5yZXNudWxsKTsKKwkJCQkJfQorCQkJCX0KKwkJCQlicmVhazsKKwkJ CX0KKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBTUUwvSlNPTiBl eHByZXNzaW9uIG9wICVkIiwgamV4cHItPm9wKTsKKwkJCXJldHVybiBmYWxzZTsKKwl9CisKKwlp ZiAoZW1wdHkpCisJeworCQlpZiAoamV4cHItPm9uX2VtcHR5KQorCQl7CisJCQlpZiAoamV4cHIt Pm9uX2VtcHR5LT5idHlwZSA9PSBKU09OX0JFSEFWSU9SX0VSUk9SKQorCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfTk9fU1FMX0pTT05fSVRFTSksCisJCQkJCQllcnJt c2coIm5vIFNRTC9KU09OIGl0ZW0iKSk7CisJCQllbHNlCisJCQkJcG9zdF9ldmFsLT5lbXB0eS52 YWx1ZSA9IEJvb2xHZXREYXR1bSh0cnVlKTsKKworCQkJQXNzZXJ0KGpzZXN0YXRlLT5qdW1wX2Vt cHR5ID49IDApOworCQkJcmV0dXJuIGpzZXN0YXRlLT5qdW1wX2VtcHR5OworCQl9CisJCWVsc2Ug aWYgKGpleHByLT5vbl9lcnJvci0+YnR5cGUgPT0gSlNPTl9CRUhBVklPUl9FUlJPUikKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9OT19TUUxfSlNPTl9JVEVNKSwKKwkJ CQkJZXJybXNnKCJubyBTUUwvSlNPTiBpdGVtIikpOworCQllbHNlCisJCQlwb3N0X2V2YWwtPmVy cm9yLnZhbHVlID0gQm9vbEdldERhdHVtKHRydWUpOworCisJCSpvcC0+cmVzdmFsdWUgPSAoRGF0 dW0pIDA7CisJCSpvcC0+cmVzbnVsbCA9IHRydWU7CisKKwkJQXNzZXJ0KGpzZXN0YXRlLT5qdW1w X2Vycm9yID49IDApOworCQlyZXR1cm4ganNlc3RhdGUtPmp1bXBfZXJyb3I7CisJfQorCisJaWYg KGVycm9yKQorCXsKKwkJQXNzZXJ0KCF0aHJvd19lcnJvciAmJiBqc2VzdGF0ZS0+anVtcF9lcnJv ciA+PSAwKTsKKwkJKm9wLT5yZXN2YWx1ZSA9IChEYXR1bSkgMDsKKwkJKm9wLT5yZXNudWxsID0g dHJ1ZTsKKwkJcG9zdF9ldmFsLT5lcnJvci52YWx1ZSA9IEJvb2xHZXREYXR1bSh0cnVlKTsKKwkJ cmV0dXJuIGpzZXN0YXRlLT5qdW1wX2Vycm9yOworCX0KKworCS8qIEVsc2UgcmV0dXJuIHRoZSBj b2VyY2lvbiBzdGVwIGFkZHJlc3Mgb3IgdGhlIGFkZHJlc3MgdG8gc2tpcCB0byBlbmQuICovCisJ cmV0dXJuIGp1bXBfZXZhbF9jb2VyY2lvbiA+PSAwID8ganVtcF9ldmFsX2NvZXJjaW9uIDoganNl c3RhdGUtPmp1bXBfZW5kOworfQorCisvKgorICogU2VsZWN0cyBhIGNvZXJjaW9uIGZvciBhIGdp dmVuIEpzb25iVmFsdWUgYmFzZWQgb24gaXRzIHR5cGUuCisgKgorICogT24gcmV0dXJuLCAqcmVz dmFsdWUgYW5kICpyZXNudWxsIGFyZSBzZXQgdG8gdGhlIHZhbHVlIGV4dHJhY3RlZCBmcm9tIHRo ZQorICogSnNvbmJWYWx1ZSBhbmQgKmp1bXBfZXZhbF9pdGVtX2NvZXJjaW9uIGlzIHNldCB0byB0 aGUgc3RlcCBhZGRyZXNzIG9mIHRoZQorICogY29lcmNpb24gZXhwcmVzc2lvbi4KKyAqCisgKiBJ ZiB0aGUgZm91bmQgZXhwcmVzc2lvbiBpcyBhIEpzb25Db2VyY2lvbiBub2RlIHRoYXQgbWVhbnMg dGhlIHBhcnNlcgorICogZGlkbnQnIGZpbmQgYSBjYXN0IHRvIGRvIHRoZSBjb2VyY2lvbiwgc28g dGhyb3cgYW4gZXJyb3IgaWYgdGhlCisgKiBPTiBFUlJPUiBiZWhhdmlvciBzYXlzIHRvIGRvIHNv LgorICovCitzdGF0aWMgdm9pZAorRXhlY1ByZXBhcmVKc29uSXRlbUNvZXJjaW9uKEpzb25iVmFs dWUgKml0ZW0sIEpzb25FeHByU3RhdGUgKmpzZXN0YXRlLAorCQkJCQkJCWJvb2wgdGhyb3dfZXJy b3IsCisJCQkJCQkJaW50ICpqdW1wX2V2YWxfaXRlbV9jb2VyY2lvbiwKKwkJCQkJCQlEYXR1bSAq cmVzdmFsdWUsIGJvb2wgKnJlc251bGwpCit7CisJaW50CQkgICAqZXZhbF9pdGVtX2NvZXJjaW9u X2p1bXBzID0ganNlc3RhdGUtPmV2YWxfaXRlbV9jb2VyY2lvbl9qdW1wczsKKwlib29sCSAgICpp dGVtX2NvZXJjaW9uX3ZpYV9leHByID0ganNlc3RhdGUtPml0ZW1fY29lcmNpb25fdmlhX2V4cHI7 CisJYm9vbAkJdmlhX2V4cHI7CisJaW50CQkJanVtcF90bzsKKwlKc29uYlZhbHVlCWJ1ZjsKKwor CWlmIChpdGVtLT50eXBlID09IGpidkJpbmFyeSAmJiBKc29uQ29udGFpbmVySXNTY2FsYXIoaXRl bS0+dmFsLmJpbmFyeS5kYXRhKSkKKwl7CisJCWJvb2wJCWlzX3NjYWxhciBQR19VU0VEX0ZPUl9B U1NFUlRTX09OTFk7CisKKwkJaXNfc2NhbGFyID0gSnNvbmJFeHRyYWN0U2NhbGFyKGl0ZW0tPnZh bC5iaW5hcnkuZGF0YSwgJmJ1Zik7CisJCWl0ZW0gPSAmYnVmOworCQlBc3NlcnQoaXNfc2NhbGFy KTsKKwl9CisKKwkqcmVzbnVsbCA9IGZhbHNlOworCisJLyogZ2V0IGNvZXJjaW9uIHN0YXRlIHJl ZmVyZW5jZSBhbmQgZGF0dW0gb2YgdGhlIGNvcnJlc3BvbmRpbmcgU1FMIHR5cGUgKi8KKwlzd2l0 Y2ggKGl0ZW0tPnR5cGUpCisJeworCQljYXNlIGpidk51bGw6CisJCQl2aWFfZXhwciA9IGl0ZW1f Y29lcmNpb25fdmlhX2V4cHJbSnNvbkl0ZW1UeXBlTnVsbF07CisJCQlqdW1wX3RvID0gZXZhbF9p dGVtX2NvZXJjaW9uX2p1bXBzW0pzb25JdGVtVHlwZU51bGxdOworCQkJKnJlc3ZhbHVlID0gKERh dHVtKSAwOworCQkJKnJlc251bGwgPSB0cnVlOworCQkJYnJlYWs7CisKKwkJY2FzZSBqYnZTdHJp bmc6CisJCQl2aWFfZXhwciA9IGl0ZW1fY29lcmNpb25fdmlhX2V4cHJbSnNvbkl0ZW1UeXBlU3Ry aW5nXTsKKwkJCWp1bXBfdG8gPSBldmFsX2l0ZW1fY29lcmNpb25fanVtcHNbSnNvbkl0ZW1UeXBl U3RyaW5nXTsKKwkJCSpyZXN2YWx1ZSA9CisJCQkJUG9pbnRlckdldERhdHVtKGNzdHJpbmdfdG9f dGV4dF93aXRoX2xlbihpdGVtLT52YWwuc3RyaW5nLnZhbCwKKwkJCQkJCQkJCQkJCQkJIGl0ZW0t PnZhbC5zdHJpbmcubGVuKSk7CisJCQlicmVhazsKKworCQljYXNlIGpidk51bWVyaWM6CisJCQl2 aWFfZXhwciA9IGl0ZW1fY29lcmNpb25fdmlhX2V4cHJbSnNvbkl0ZW1UeXBlTnVtZXJpY107CisJ CQlqdW1wX3RvID0gZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBzW0pzb25JdGVtVHlwZU51bWVyaWNd OworCQkJKnJlc3ZhbHVlID0gTnVtZXJpY0dldERhdHVtKGl0ZW0tPnZhbC5udW1lcmljKTsKKwkJ CWJyZWFrOworCisJCWNhc2UgamJ2Qm9vbDoKKwkJCXZpYV9leHByID0gaXRlbV9jb2VyY2lvbl92 aWFfZXhwcltKc29uSXRlbVR5cGVCb29sZWFuXTsKKwkJCWp1bXBfdG8gPSBldmFsX2l0ZW1fY29l cmNpb25fanVtcHNbSnNvbkl0ZW1UeXBlQm9vbGVhbl07CisJCQkqcmVzdmFsdWUgPSBCb29sR2V0 RGF0dW0oaXRlbS0+dmFsLmJvb2xlYW4pOworCQkJYnJlYWs7CisKKwkJY2FzZSBqYnZEYXRldGlt ZToKKwkJCSpyZXN2YWx1ZSA9IGl0ZW0tPnZhbC5kYXRldGltZS52YWx1ZTsKKwkJCXN3aXRjaCAo aXRlbS0+dmFsLmRhdGV0aW1lLnR5cGlkKQorCQkJeworCQkJCWNhc2UgREFURU9JRDoKKwkJCQkJ dmlhX2V4cHIgPSBpdGVtX2NvZXJjaW9uX3ZpYV9leHByW0pzb25JdGVtVHlwZURhdGVdOworCQkJ CQlqdW1wX3RvID0gZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBzW0pzb25JdGVtVHlwZURhdGVdOwor CQkJCQlicmVhazsKKwkJCQljYXNlIFRJTUVPSUQ6CisJCQkJCXZpYV9leHByID0gaXRlbV9jb2Vy Y2lvbl92aWFfZXhwcltKc29uSXRlbVR5cGVUaW1lXTsKKwkJCQkJanVtcF90byA9IGV2YWxfaXRl bV9jb2VyY2lvbl9qdW1wc1tKc29uSXRlbVR5cGVUaW1lXTsKKwkJCQkJYnJlYWs7CisJCQkJY2Fz ZSBUSU1FVFpPSUQ6CisJCQkJCXZpYV9leHByID0gaXRlbV9jb2VyY2lvbl92aWFfZXhwcltKc29u SXRlbVR5cGVUaW1ldHpdOworCQkJCQlqdW1wX3RvID0gZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBz W0pzb25JdGVtVHlwZVRpbWV0el07CisJCQkJCWJyZWFrOworCQkJCWNhc2UgVElNRVNUQU1QT0lE OgorCQkJCQl2aWFfZXhwciA9IGl0ZW1fY29lcmNpb25fdmlhX2V4cHJbSnNvbkl0ZW1UeXBlVGlt ZXN0YW1wXTsKKwkJCQkJanVtcF90byA9IGV2YWxfaXRlbV9jb2VyY2lvbl9qdW1wc1tKc29uSXRl bVR5cGVUaW1lc3RhbXBdOworCQkJCQlicmVhazsKKwkJCQljYXNlIFRJTUVTVEFNUFRaT0lEOgor CQkJCQl2aWFfZXhwciA9IGl0ZW1fY29lcmNpb25fdmlhX2V4cHJbSnNvbkl0ZW1UeXBlVGltZXN0 YW1wdHpdOworCQkJCQlqdW1wX3RvID0gZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBzW0pzb25JdGVt VHlwZVRpbWVzdGFtcHR6XTsKKwkJCQkJYnJlYWs7CisJCQkJZGVmYXVsdDoKKwkJCQkJZWxvZyhF UlJPUiwgInVuZXhwZWN0ZWQganNvbmIgZGF0ZXRpbWUgdHlwZSBvaWQgJXUiLAorCQkJCQkJIGl0 ZW0tPnZhbC5kYXRldGltZS50eXBpZCk7CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIGpidkFy cmF5OgorCQljYXNlIGpidk9iamVjdDoKKwkJY2FzZSBqYnZCaW5hcnk6CisJCQl2aWFfZXhwciA9 IGl0ZW1fY29lcmNpb25fdmlhX2V4cHJbSnNvbkl0ZW1UeXBlQ29tcG9zaXRlXTsKKwkJCWp1bXBf dG8gPSBldmFsX2l0ZW1fY29lcmNpb25fanVtcHNbSnNvbkl0ZW1UeXBlQ29tcG9zaXRlXTsKKwkJ CSpyZXN2YWx1ZSA9IEpzb25iUEdldERhdHVtKEpzb25iVmFsdWVUb0pzb25iKGl0ZW0pKTsKKwkJ CWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBqc29uYiB2 YWx1ZSB0eXBlICVkIiwgaXRlbS0+dHlwZSk7CisJfQorCisJLyogSWYgdGhlIGV4cHJlc3Npb24g aXMgYSBKc29uQ29lcmNpb24sIHRocm93IGFuIGVycm9yLiAqLworCWlmIChqdW1wX3RvID49IDAg JiYgIXZpYV9leHByKQorCXsKKwkJaWYgKHRocm93X2Vycm9yKQorCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJZXJyY29kZShFUlJDT0RFX1NRTF9KU09OX0lURU1fQ0FOTk9UX0JFX0NBU1RfVE9fVEFS R0VUX1RZUEUpLAorCQkJCQllcnJtc2coIlNRTC9KU09OIGl0ZW0gY2Fubm90IGJlIGNhc3QgdG8g dGFyZ2V0IHR5cGUiKSk7CisKKwkJKnJlc3ZhbHVlID0gKERhdHVtKSAwOworCQkqcmVzbnVsbCA9 IHRydWU7CisJfQorCisJKmp1bXBfZXZhbF9pdGVtX2NvZXJjaW9uID0ganVtcF90bzsKK30KKwor LyoKKyAqIENvZXJjZSBhIGpzb25iIHZhbHVlIHByb2R1Y2VkIGJ5IEV4ZWNFdmFsSnNvbkV4cHJQ YXRoKCkgb3IgYW4gT04gRVJST1IgLworICogRU1QVFkgYmVoYXZpb3IgZXhwcmVzc2lvbiB0byB0 aGUgdGFyZ2V0IHR5cGUgYnkgZWl0aGVyIGNhbGxpbmcKKyAqIGpzb25fcG9wdWxhdGVfdHlwZSgp IG9yIGJ5IGRpcmVjdGx5IGNhbGxpbmcgdGhlIHR5cGUncyBpbnB1dCBmdW5jdGlvbiBpbgorICog c29tZSBjYXNlcy4KKyAqCisgKiBBbnkgc29mdCBlcnJvcnMgdGhhdCBvY2N1ciB3aWxsIGJlIGNo ZWNrZWQgYnkgRUVPUF9KU09ORVhQUl9DT0VSQ0lPTl9GSU5JU0gKKyAqIHRoYXQgd2lsbCBydW4g cmlnaHQgYWZ0ZXIgdGhpcy4KKyAqLwordm9pZAorRXhlY0V2YWxKc29uQ29lcmNpb24oRXhwclN0 YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKKwkJCQkJIEV4cHJDb250ZXh0ICplY29udGV4 dCkKK3sKKwlKc29uQ29lcmNpb24gKmNvZXJjaW9uID0gb3AtPmQuanNvbmV4cHJfY29lcmNpb24u Y29lcmNpb247CisJRXJyb3JTYXZlQ29udGV4dCAqZXNjb250ZXh0ID0gb3AtPmQuanNvbmV4cHJf Y29lcmNpb24uZXNjb250ZXh0OworCURhdHVtCQlyZXMgPSAqb3AtPnJlc3ZhbHVlOworCWJvb2wJ CXJlc251bGwgPSAqb3AtPnJlc251bGw7CisJSnNvbmIJICAgKmpiID0gIXJlc251bGwgPyBEYXR1 bUdldEpzb25iUChyZXMpIDogTlVMTDsKKworCS8qCisJICogQ2FuJ3QgZ28gdG8ganNvbl9wb3B1 bGF0ZV90eXBlKCkgZm9yIHNjYWxhcnMgd2hlbiBPTUlUIFFVT1RFUyBpcworCSAqIHNwZWNpZmll ZCwgYmVjYXVzZSBpdCBrZWVwcyB0aGUgcXVvdGVzIGJ5IGRlZmF1bHQuICBTbyBsZXQncyBkbyB0 aGUKKwkgKiBkZWVkIG91cnNlbHZlcyBieSBjYWxsaW5nIHRoZSBpbnB1dCBmdW5jdGlvbiwgdGhh dCBpcywgYWZ0ZXIgcmVtb3ZpbmcKKwkgKiB0aGUgcXVvdGVzLgorCSAqLworCWlmIChqYiAmJiBK Ql9ST09UX0lTX1NDQUxBUihqYikgJiYgY29lcmNpb24tPm9taXRfcXVvdGVzKQorCXsKKwkJRm1n ckluZm8gICAqaW5wdXRfZmluZm8gPSBvcC0+ZC5qc29uZXhwcl9jb2VyY2lvbi5pbnB1dF9maW5m bzsKKwkJT2lkCQkJdHlwaW9wYXJhbSA9IG9wLT5kLmpzb25leHByX2NvZXJjaW9uLnR5cGlvcGFy YW07CisJCWNoYXIJICAgKnZhbF9zdHJpbmcgPSBKc29uYlVucXVvdGUoamIpOworCisJCSh2b2lk KSBJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUoaW5wdXRfZmluZm8sIHZhbF9zdHJpbmcsIHR5cGlvcGFy YW0sCisJCQkJCQkJCQkgY29lcmNpb24tPnRhcmdldHR5cG1vZCwKKwkJCQkJCQkJCSAoTm9kZSAq KSBlc2NvbnRleHQsCisJCQkJCQkJCQkgb3AtPnJlc3ZhbHVlKTsKKwl9CisJZWxzZQorCXsKKwkJ dm9pZAkgICAqY2FjaGUgPSBvcC0+ZC5qc29uZXhwcl9jb2VyY2lvbi5qc29uX3BvcHVsYXRlX3R5 cGVfY2FjaGU7CisKKwkJKm9wLT5yZXN2YWx1ZSA9IGpzb25fcG9wdWxhdGVfdHlwZShyZXMsIEpT T05CT0lELAorCQkJCQkJCQkJCSAgIGNvZXJjaW9uLT50YXJnZXR0eXBlLAorCQkJCQkJCQkJCSAg IGNvZXJjaW9uLT50YXJnZXR0eXBtb2QsCisJCQkJCQkJCQkJICAgJmNhY2hlLAorCQkJCQkJCQkJ CSAgIGVjb250ZXh0LT5lY3h0X3Blcl9xdWVyeV9tZW1vcnksCisJCQkJCQkJCQkJICAgb3AtPnJl c251bGwsIChOb2RlICopIGVzY29udGV4dCk7CisJfQorfQorCisvKgorICogQ2hlY2tzIGlmIHRo ZSBjb2VyY2lvbiBldmFsdWF0aW9uIGxlZCB0byBhbiBlcnJvci4gIElmIGFuIGVycm9yIGRpZCBv Y2N1ciwKKyAqIHRoaXMgc2V0cyBwb3N0X2V2YWwtPmVycm9yIHRvIHRyaWdnZXIgdGhlIHN1YnNl cXVlbnQgT04gRVJST1IgaGFuZGxpbmcKKyAqIHN0ZXBzLgorICovCit2b2lkCitFeGVjRXZhbEpz b25Db2VyY2lvbkZpbmlzaChFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKQorewor CUpzb25FeHByU3RhdGUgKmpzZXN0YXRlID0gb3AtPmQuanNvbmV4cHIuanNlc3RhdGU7CisKKwlp ZiAoU09GVF9FUlJPUl9PQ0NVUlJFRCgmanNlc3RhdGUtPmVzY29udGV4dCkpCisJeworCQkqb3At PnJlc3ZhbHVlID0gKERhdHVtKSAwOworCQkqb3AtPnJlc251bGwgPSB0cnVlOworCQlqc2VzdGF0 ZS0+cG9zdF9ldmFsLmVycm9yLnZhbHVlID0gQm9vbEdldERhdHVtKHRydWUpOworCisJCS8qCisJ CSAqIEFsc28gbWFrZSBFcnJvclNhdmVDb250ZXh0IHJlYWR5IGZvciB0aGUgbmV4dCByb3cuICBT aW5jZSB3ZSBuZXZlcgorCQkgKiBzZXQgZGV0YWlsc193YW50ZWQsIHdlIGRvbid0IG5lZWQgdG8g YWxzbyByZXNldCBlcnJvcl9kYXRhLCB3aGljaAorCQkgKiB3b3VsZCBiZSBOVUxMIGFueXdheS4K KwkJICovCisJCUFzc2VydCghanNlc3RhdGUtPmVzY29udGV4dC5kZXRhaWxzX3dhbnRlZCAmJgor CQkJICAganNlc3RhdGUtPmVzY29udGV4dC5lcnJvcl9kYXRhID09IE5VTEwpOworCQlqc2VzdGF0 ZS0+ZXNjb250ZXh0LmVycm9yX29jY3VycmVkID0gZmFsc2U7CisJfQorfQogCiAvKgogICogRXhl Y0V2YWxHcm91cGluZ0Z1bmMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1q aXRfZXhwci5jIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMKaW5kZXggMDk5 OTQ1MDNiMS4uMzhiZTA5OWRmZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2 bWppdF9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMKQEAg LTE5MzAsNiArMTkzMCwxNTAgQEAgbGx2bV9jb21waWxlX2V4cHIoRXhwclN0YXRlICpzdGF0ZSkK IAkJCQlMTFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tvcG5vICsgMV0pOwogCQkJCWJyZWFrOwogCisJ CQljYXNlIEVFT1BfSlNPTkVYUFJfUEFUSDoKKwkJCQl7CisJCQkJCUpzb25FeHByU3RhdGUgKmpz ZXN0YXRlID0gb3AtPmQuanNvbmV4cHIuanNlc3RhdGU7CisJCQkJCUxMVk1WYWx1ZVJlZiB2X3Jl dDsKKworCQkJCQkvKgorCQkJCQkgKiBDYWxsIEV4ZWNFdmFsSnNvbkV4cHJQYXRoKCkuICBJdCBy ZXR1cm5zIHRoZSBhZGRyZXNzIG9mCisJCQkJCSAqIHRoZSBzdGVwIHRvIHBlcmZvcm0gbmV4dC4K KwkJCQkJICovCisJCQkJCXZfcmV0ID0gYnVpbGRfRXZhbFhGdW5jKGIsIG1vZCwgIkV4ZWNFdmFs SnNvbkV4cHJQYXRoIiwKKwkJCQkJCQkJCQkJdl9zdGF0ZSwgb3AsIHZfZWNvbnRleHQpOworCisJ CQkJCS8qCisJCQkJCSAqIEJ1aWxkIGEgc3dpdGNoIHRvIG1hcCB0aGUgcmV0dXJuIHZhbHVlLCB3 aGljaCBpcyBhCisJCQkJCSAqIHJ1bnRpbWUgdmFsdWUgb2YgdGhlIHN0ZXAgYWRkcmVzcyB0byBw ZXJmb3JtIG5leHQsIHRvCisJCQkJCSAqIGVpdGhlciBqdW1wX2VtcHR5LCBqdW1wX2Vycm9yLCBv ciB0aGUgY29lcmNpb24KKwkJCQkJICogZXhwcmVzc2lvbi4KKwkJCQkJICovCisJCQkJCWlmIChq c2VzdGF0ZS0+anVtcF9lbXB0eSA+PSAwIHx8CisJCQkJCQlqc2VzdGF0ZS0+anVtcF9lcnJvciA+ PSAwIHx8CisJCQkJCQlqc2VzdGF0ZS0+anVtcF9ldmFsX3Jlc3VsdF9jb2VyY2lvbiA+PSAwIHx8 CisJCQkJCQlqc2VzdGF0ZS0+bnVtX2l0ZW1fY29lcmNpb25zID4gMCkKKwkJCQkJeworCQkJCQkJ aW50CQkJaTsKKwkJCQkJCUxMVk1WYWx1ZVJlZiB2X2p1bXBfZW1wdHk7CisJCQkJCQlMTFZNVmFs dWVSZWYgdl9qdW1wX2Vycm9yOworCQkJCQkJTExWTVZhbHVlUmVmIHZfanVtcF9jb2VyY2lvbjsK KwkJCQkJCUxMVk1WYWx1ZVJlZiB2X3N3aXRjaDsKKwkJCQkJCUxMVk1CYXNpY0Jsb2NrUmVmIGJf ZG9uZSwKKwkJCQkJCQkJCWJfZW1wdHksCisJCQkJCQkJCQliX2Vycm9yLAorCQkJCQkJCQkJYl9y ZXN1bHRfY29lcmNpb24sCisJCQkJCQkJCSAgICpiX2l0ZW1fY29lcmNpb25zID0gTlVMTDsKKwor CQkJCQkJYl9lbXB0eSA9CisJCQkJCQkJbF9iYl9iZWZvcmVfdihvcGJsb2Nrc1tvcG5vICsgMV0s CisJCQkJCQkJCQkJICAib3AuJWQuanNvbmV4cHJfZW1wdHkiLCBvcG5vKTsKKwkJCQkJCWJfZXJy b3IgPQorCQkJCQkJCWxfYmJfYmVmb3JlX3Yob3BibG9ja3Nbb3BubyArIDFdLAorCQkJCQkJCQkJ CSAgIm9wLiVkLmpzb25leHByX2Vycm9yIiwgb3Bubyk7CisJCQkJCQliX3Jlc3VsdF9jb2VyY2lv biA9CisJCQkJCQkJbF9iYl9iZWZvcmVfdihvcGJsb2Nrc1tvcG5vICsgMV0sCisJCQkJCQkJCQkJ ICAib3AuJWQuanNvbmV4cHJfcmVzdWx0X2NvZXJjaW9uIiwgb3Bubyk7CisJCQkJCQlpZiAoanNl c3RhdGUtPm51bV9pdGVtX2NvZXJjaW9ucyA+IDApCisJCQkJCQl7CisJCQkJCQkJYl9pdGVtX2Nv ZXJjaW9ucyA9IHBhbGxvYyhzaXplb2YoTExWTUJhc2ljQmxvY2tSZWYpICoKKwkJCQkJCQkJCQkJ CQkgIGpzZXN0YXRlLT5udW1faXRlbV9jb2VyY2lvbnMpOworCQkJCQkJCWZvciAoaSA9IDA7IGkg PCBqc2VzdGF0ZS0+bnVtX2l0ZW1fY29lcmNpb25zOyBpKyspCisJCQkJCQkJeworCQkJCQkJCQli X2l0ZW1fY29lcmNpb25zW2ldID0KKwkJCQkJCQkJCWxfYmJfYmVmb3JlX3Yob3BibG9ja3Nbb3Bu byArIDFdLAorCQkJCQkJCQkJCQkJICAib3AuJWQuanNvbmV4cHJfaXRlbV9jb2VyY2lvbi4lZCIs CisJCQkJCQkJCQkJCQkgIG9wbm8sIGkpOworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJCWJfZG9u ZSA9CisJCQkJCQkJbF9iYl9iZWZvcmVfdihvcGJsb2Nrc1tvcG5vICsgMV0sCisJCQkJCQkJCQkJ ICAib3AuJWQuanNvbmV4cHJfZG9uZSIsIG9wbm8pOworCisJCQkJCQl2X3N3aXRjaCA9IExMVk1C dWlsZFN3aXRjaChiLAorCQkJCQkJCQkJCQkJICAgdl9yZXQsCisJCQkJCQkJCQkJCQkgICBiX2Rv bmUsCisJCQkJCQkJCQkJCQkgICBqc2VzdGF0ZS0+bnVtX2l0ZW1fY29lcmNpb25zICsgMyk7CisJ CQkJCQkvKiBSZXR1cm5lZCBqc2VzdGF0ZS0+anVtcF9lbXB0eT8gKi8KKwkJCQkJCWlmIChqc2Vz dGF0ZS0+anVtcF9lbXB0eSA+PSAwKQorCQkJCQkJeworCQkJCQkJCXZfanVtcF9lbXB0eSA9IGxf aW50MzJfY29uc3QobGMsIGpzZXN0YXRlLT5qdW1wX2VtcHR5KTsKKwkJCQkJCQlMTFZNQWRkQ2Fz ZSh2X3N3aXRjaCwgdl9qdW1wX2VtcHR5LCBiX2VtcHR5KTsKKwkJCQkJCX0KKwkJCQkJCS8qIFJl dHVybmVkIGpzZXN0YXRlLT5qdW1wX2Vycm9yPyAqLworCQkJCQkJaWYgKGpzZXN0YXRlLT5qdW1w X2Vycm9yID49IDApCisJCQkJCQl7CisJCQkJCQkJdl9qdW1wX2Vycm9yID0gbF9pbnQzMl9jb25z dChsYywganNlc3RhdGUtPmp1bXBfZXJyb3IpOworCQkJCQkJCUxMVk1BZGRDYXNlKHZfc3dpdGNo LCB2X2p1bXBfZXJyb3IsIGJfZXJyb3IpOworCQkJCQkJfQorCQkJCQkJLyogUmV0dXJuZWQganNl c3RhdGUtPmp1bXBfZXZhbF9yZXN1bHRfY29lcmNpb24/ICovCisJCQkJCQlpZiAoanNlc3RhdGUt Pmp1bXBfZXZhbF9yZXN1bHRfY29lcmNpb24gPj0gMCkKKwkJCQkJCXsKKwkJCQkJCQl2X2p1bXBf Y29lcmNpb24gPSBsX2ludDMyX2NvbnN0KGxjLCBqc2VzdGF0ZS0+anVtcF9ldmFsX3Jlc3VsdF9j b2VyY2lvbik7CisJCQkJCQkJTExWTUFkZENhc2Uodl9zd2l0Y2gsIHZfanVtcF9jb2VyY2lvbiwg Yl9yZXN1bHRfY29lcmNpb24pOworCQkJCQkJfQorCisJCQkJCQkvKgorCQkJCQkJICogUmV0dXJu ZWQgb25lIG9mCisJCQkJCQkgKiBqc2VzdGF0ZS0+ZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBzW10/ CisJCQkJCQkgKi8KKwkJCQkJCWZvciAoaSA9IDA7IGkgPCBqc2VzdGF0ZS0+bnVtX2l0ZW1fY29l cmNpb25zOyBpKyspCisJCQkJCQl7CisJCQkJCQkJaWYgKGpzZXN0YXRlLT5ldmFsX2l0ZW1fY29l cmNpb25fanVtcHNbaV0gPj0gMCkKKwkJCQkJCQl7CisJCQkJCQkJCXZfanVtcF9jb2VyY2lvbiA9 IGxfaW50MzJfY29uc3QobGMsIGpzZXN0YXRlLT5ldmFsX2l0ZW1fY29lcmNpb25fanVtcHNbaV0p OworCQkJCQkJCQlMTFZNQWRkQ2FzZSh2X3N3aXRjaCwgdl9qdW1wX2NvZXJjaW9uLCBiX2l0ZW1f Y29lcmNpb25zW2ldKTsKKwkJCQkJCQl9CisJCQkJCQl9CisKKwkJCQkJCS8qIE9OIEVNUFRZIGNv ZGUgKi8KKwkJCQkJCUxMVk1Qb3NpdGlvbkJ1aWxkZXJBdEVuZChiLCBiX2VtcHR5KTsKKwkJCQkJ CWlmIChqc2VzdGF0ZS0+anVtcF9lbXB0eSA+PSAwKQorCQkJCQkJCUxMVk1CdWlsZEJyKGIsIG9w YmxvY2tzW2pzZXN0YXRlLT5qdW1wX2VtcHR5XSk7CisJCQkJCQllbHNlCisJCQkJCQkJTExWTUJ1 aWxkVW5yZWFjaGFibGUoYik7CisJCQkJCQkvKiBPTiBFUlJPUiBjb2RlICovCisJCQkJCQlMTFZN UG9zaXRpb25CdWlsZGVyQXRFbmQoYiwgYl9lcnJvcik7CisJCQkJCQlpZiAoanNlc3RhdGUtPmp1 bXBfZXJyb3IgPj0gMCkKKwkJCQkJCQlMTFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tqc2VzdGF0ZS0+ anVtcF9lcnJvcl0pOworCQkJCQkJZWxzZQorCQkJCQkJCUxMVk1CdWlsZFVucmVhY2hhYmxlKGIp OworCQkJCQkJLyogcmVzdWx0X2NvZXJjaW9uIGNvZGUgKi8KKwkJCQkJCUxMVk1Qb3NpdGlvbkJ1 aWxkZXJBdEVuZChiLCBiX3Jlc3VsdF9jb2VyY2lvbik7CisJCQkJCQlpZiAoanNlc3RhdGUtPmp1 bXBfZXZhbF9yZXN1bHRfY29lcmNpb24gPj0gMCkKKwkJCQkJCQlMTFZNQnVpbGRCcihiLCBvcGJs b2Nrc1tqc2VzdGF0ZS0+anVtcF9ldmFsX3Jlc3VsdF9jb2VyY2lvbl0pOworCQkJCQkJZWxzZQor CQkJCQkJCUxMVk1CdWlsZFVucmVhY2hhYmxlKGIpOworCQkJCQkJLyogaXRlbSBjb2VyY2lvbiBj b2RlIGJsb2NrcyAqLworCQkJCQkJZm9yIChpID0gMDsgaSA8IGpzZXN0YXRlLT5udW1faXRlbV9j b2VyY2lvbnM7IGkrKykKKwkJCQkJCXsKKwkJCQkJCQlMTFZNUG9zaXRpb25CdWlsZGVyQXRFbmQo YiwgYl9pdGVtX2NvZXJjaW9uc1tpXSk7CisJCQkJCQkJaWYgKGpzZXN0YXRlLT5ldmFsX2l0ZW1f Y29lcmNpb25fanVtcHNbaV0gPj0gMCkKKwkJCQkJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nb anNlc3RhdGUtPmV2YWxfaXRlbV9jb2VyY2lvbl9qdW1wc1tpXV0pOworCQkJCQkJCWVsc2UKKwkJ CQkJCQkJTExWTUJ1aWxkVW5yZWFjaGFibGUoYik7CisJCQkJCQl9CisKKwkJCQkJCUxMVk1Qb3Np dGlvbkJ1aWxkZXJBdEVuZChiLCBiX2RvbmUpOworCQkJCQl9CisKKwkJCQkJTExWTUJ1aWxkQnIo Yiwgb3BibG9ja3Nbb3BubyArIDFdKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQljYXNlIEVF T1BfSlNPTkVYUFJfQ09FUkNJT046CisJCQkJYnVpbGRfRXZhbFhGdW5jKGIsIG1vZCwgIkV4ZWNF dmFsSnNvbkNvZXJjaW9uIiwKKwkJCQkJCQkJdl9zdGF0ZSwgb3AsIHZfZWNvbnRleHQpOworCisJ CQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nbb3BubyArIDFdKTsKKwkJCQlicmVhazsKKworCQkJ Y2FzZSBFRU9QX0pTT05FWFBSX0NPRVJDSU9OX0ZJTklTSDoKKwkJCQlidWlsZF9FdmFsWEZ1bmMo YiwgbW9kLCAiRXhlY0V2YWxKc29uQ29lcmNpb25GaW5pc2giLAorCQkJCQkJCQl2X3N0YXRlLCBv cCk7CisKKwkJCQlMTFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tvcG5vICsgMV0pOworCQkJCWJyZWFr OworCiAJCQljYXNlIEVFT1BfQUdHUkVGOgogCQkJCXsKIAkJCQkJTExWTVZhbHVlUmVmIHZfYWdn bm87CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X3R5cGVzLmMgYi9z cmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X3R5cGVzLmMKaW5kZXggNDdjOWRhZjQwMi4uZWRk MWUxNjc5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5j CisrKyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYwpAQCAtMTcyLDYgKzE3 Miw5IEBAIHZvaWQJICAgKnJlZmVyZW5jZWRfZnVuY3Rpb25zW10gPQogCUV4ZWNFdmFsWG1sRXhw ciwKIAlFeGVjRXZhbEpzb25Db25zdHJ1Y3RvciwKIAlFeGVjRXZhbEpzb25Jc1ByZWRpY2F0ZSwK KwlFeGVjRXZhbEpzb25Db2VyY2lvbiwKKwlFeGVjRXZhbEpzb25Db2VyY2lvbkZpbmlzaCwKKwlF eGVjRXZhbEpzb25FeHByUGF0aCwKIAlNYWtlRXhwYW5kZWRPYmplY3RSZWFkT25seUludGVybmFs LAogCXNsb3RfZ2V0bWlzc2luZ2F0dHJzLAogCXNsb3RfZ2V0c29tZWF0dHJzX2ludCwKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMv bWFrZWZ1bmNzLmMKaW5kZXggYTAyMzMyYTFlYy4uMDlhMDVhMDM3MyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1 bmNzLmMKQEAgLTg1Nyw2ICs4NTcsMjQgQEAgbWFrZUpzb25WYWx1ZUV4cHIoRXhwciAqcmF3X2V4 cHIsIEV4cHIgKmZvcm1hdHRlZF9leHByLAogCXJldHVybiBqdmU7CiB9CiAKKy8qCisgKiBtYWtl SnNvbkJlaGF2aW9yIC0KKyAqCSAgY3JlYXRlcyBhIEpzb25CZWhhdmlvciBub2RlCisgKi8KK0pz b25CZWhhdmlvciAqCittYWtlSnNvbkJlaGF2aW9yKEpzb25CZWhhdmlvclR5cGUgdHlwZSwgTm9k ZSAqZXhwciwgSnNvbkNvZXJjaW9uICpjb2VyY2lvbiwKKwkJCQkgaW50IGxvY2F0aW9uKQorewor CUpzb25CZWhhdmlvciAqYmVoYXZpb3IgPSBtYWtlTm9kZShKc29uQmVoYXZpb3IpOworCisJYmVo YXZpb3ItPmJ0eXBlID0gdHlwZTsKKwliZWhhdmlvci0+ZXhwciA9IGV4cHI7CisJYmVoYXZpb3It PmNvZXJjaW9uID0gY29lcmNpb247CisJYmVoYXZpb3ItPmxvY2F0aW9uID0gbG9jYXRpb247CisK KwlyZXR1cm4gYmVoYXZpb3I7Cit9CisKIC8qCiAgKiBtYWtlSnNvbktleVZhbHVlIC0KICAqCSAg Y3JlYXRlcyBhIEpzb25LZXlWYWx1ZSBub2RlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rl cy9ub2RlRnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCmluZGV4IGUxYTVi YzdlOTUuLjJlMzU4NGE3ZTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5j cy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCkBAIC0yMzQsNiArMjM0LDMz IEBAIGV4cHJUeXBlKGNvbnN0IE5vZGUgKmV4cHIpCiAJCWNhc2UgVF9Kc29uSXNQcmVkaWNhdGU6 CiAJCQl0eXBlID0gQk9PTE9JRDsKIAkJCWJyZWFrOworCQljYXNlIFRfSnNvbkV4cHI6CisJCQl7 CisJCQkJY29uc3QgSnNvbkV4cHIgKmpleHByID0gKGNvbnN0IEpzb25FeHByICopIGV4cHI7CisK KwkJCQl0eXBlID0gamV4cHItPnJldHVybmluZy0+dHlwaWQ7CisJCQkJYnJlYWs7CisJCQl9CisJ CWNhc2UgVF9Kc29uQ29lcmNpb246CisJCQl7CisJCQkJY29uc3QgSnNvbkNvZXJjaW9uICpjb2Vy Y2lvbiA9IChjb25zdCBKc29uQ29lcmNpb24gKikgZXhwcjsKKworCQkJCXR5cGUgPSBjb2VyY2lv bi0+dGFyZ2V0dHlwZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJY2FzZSBUX0pzb25JdGVtQ29lcmNp b246CisJCQl0eXBlID0gZXhwclR5cGUoKChKc29uSXRlbUNvZXJjaW9uICopIGV4cHIpLT5jb2Vy Y2lvbik7CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25CZWhhdmlvcjoKKwkJCXsKKwkJCQljb25z dCBKc29uQmVoYXZpb3IgKmJlaGF2aW9yID0gKGNvbnN0IEpzb25CZWhhdmlvciAqKSBleHByOwor CisJCQkJaWYgKGJlaGF2aW9yLT5jb2VyY2lvbikKKwkJCQkJdHlwZSA9IGV4cHJUeXBlKChOb2Rl ICopIGJlaGF2aW9yLT5jb2VyY2lvbik7CisJCQkJZWxzZQorCQkJCQl0eXBlID0gZXhwclR5cGUo YmVoYXZpb3ItPmV4cHIpOworCQkJCWJyZWFrOworCQkJfQogCQljYXNlIFRfTnVsbFRlc3Q6CiAJ CQl0eXBlID0gQk9PTE9JRDsKIAkJCWJyZWFrOwpAQCAtNDkxLDggKzUxOCwzMiBAQCBleHByVHlw bW9kKGNvbnN0IE5vZGUgKmV4cHIpCiAJCQlyZXR1cm4gKChjb25zdCBTUUxWYWx1ZUZ1bmN0aW9u ICopIGV4cHIpLT50eXBtb2Q7CiAJCWNhc2UgVF9Kc29uVmFsdWVFeHByOgogCQkJcmV0dXJuIGV4 cHJUeXBtb2QoKE5vZGUgKikgKChjb25zdCBKc29uVmFsdWVFeHByICopIGV4cHIpLT5mb3JtYXR0 ZWRfZXhwcik7Ci0JCWNhc2UgVF9Kc29uQ29uc3RydWN0b3JFeHByOgotCQkJcmV0dXJuICgoY29u c3QgSnNvbkNvbnN0cnVjdG9yRXhwciAqKSBleHByKS0+cmV0dXJuaW5nLT50eXBtb2Q7CisJCWNh c2UgVF9Kc29uRXhwcjoKKwkJCXsKKwkJCQljb25zdCBKc29uRXhwciAqamV4cHIgPSAoY29uc3Qg SnNvbkV4cHIgKikgZXhwcjsKKworCQkJCXJldHVybiBqZXhwci0+cmV0dXJuaW5nLT50eXBtb2Q7 CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25Db2VyY2lvbjoKKwkJCXsKKwkJCQljb25z dCBKc29uQ29lcmNpb24gKmNvZXJjaW9uID0gKGNvbnN0IEpzb25Db2VyY2lvbiAqKSBleHByOwor CisJCQkJcmV0dXJuIGNvZXJjaW9uLT50YXJnZXR0eXBtb2Q7CisJCQl9CisJCQlicmVhazsKKwkJ Y2FzZSBUX0pzb25JdGVtQ29lcmNpb246CisJCQlyZXR1cm4gZXhwclR5cG1vZCgoKEpzb25JdGVt Q29lcmNpb24gKikgZXhwciktPmNvZXJjaW9uKTsKKwkJY2FzZSBUX0pzb25CZWhhdmlvcjoKKwkJ CXsKKwkJCQljb25zdCBKc29uQmVoYXZpb3IgKmJlaGF2aW9yID0gKGNvbnN0IEpzb25CZWhhdmlv ciAqKSBleHByOworCisJCQkJaWYgKGJlaGF2aW9yLT5jb2VyY2lvbikKKwkJCQkJcmV0dXJuIGV4 cHJUeXBtb2QoKE5vZGUgKikgYmVoYXZpb3ItPmNvZXJjaW9uKTsKKwkJCQllbHNlCisJCQkJCXJl dHVybiBleHByVHlwbW9kKGJlaGF2aW9yLT5leHByKTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNl IFRfQ29lcmNlVG9Eb21haW46CiAJCQlyZXR1cm4gKChjb25zdCBDb2VyY2VUb0RvbWFpbiAqKSBl eHByKS0+cmVzdWx0dHlwbW9kOwogCQljYXNlIFRfQ29lcmNlVG9Eb21haW5WYWx1ZToKQEAgLTk2 OSw2ICsxMDIwLDI3IEBAIGV4cHJDb2xsYXRpb24oY29uc3QgTm9kZSAqZXhwcikKIAkJCS8qIElT IEpTT04ncyByZXN1bHQgaXMgYm9vbGVhbiAuLi4gKi8KIAkJCWNvbGwgPSBJbnZhbGlkT2lkOwkv KiAuLi4gc28gaXQgaGFzIG5vIGNvbGxhdGlvbiAqLwogCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29u RXhwcjoKKwkJCWNvbGwgPSBleHByQ29sbGF0aW9uKCgoSnNvbkV4cHIgKikgZXhwciktPnJlc3Vs dF9jb2VyY2lvbik7CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25Db2VyY2lvbjoKKwkJCWNvbGwg PSAoKGNvbnN0IEpzb25Db2VyY2lvbiAqKSBleHByKS0+Y29sbGF0aW9uOworCQkJYnJlYWs7CisJ CWNhc2UgVF9Kc29uSXRlbUNvZXJjaW9uOgorCQkJY29sbCA9IGV4cHJDb2xsYXRpb24oKChKc29u SXRlbUNvZXJjaW9uICopIGV4cHIpLT5jb2VyY2lvbik7CisJCQlicmVhazsKKwkJY2FzZSBUX0pz b25CZWhhdmlvcjoKKwkJCXsKKwkJCQlKc29uQmVoYXZpb3IgKmJlaGF2aW9yID0gKEpzb25CZWhh dmlvciAqKSBleHByOworCisJCQkJaWYgKGJlaGF2aW9yLT5jb2VyY2lvbikKKwkJCQkJY29sbCA9 IGV4cHJDb2xsYXRpb24oKE5vZGUgKikgYmVoYXZpb3ItPmNvZXJjaW9uKTsKKwkJCQllbHNlIGlm IChiZWhhdmlvci0+ZXhwcikKKwkJCQkJY29sbCA9IGV4cHJDb2xsYXRpb24oYmVoYXZpb3ItPmV4 cHIpOworCQkJCWVsc2UKKwkJCQkJY29sbCA9IEludmFsaWRPaWQ7CisJCQl9CisJCQlicmVhazsK IAkJY2FzZSBUX051bGxUZXN0OgogCQkJLyogTnVsbFRlc3QncyByZXN1bHQgaXMgYm9vbGVhbiAu Li4gKi8KIAkJCWNvbGwgPSBJbnZhbGlkT2lkOwkvKiAuLi4gc28gaXQgaGFzIG5vIGNvbGxhdGlv biAqLwpAQCAtMTIwNSw2ICsxMjc3LDQyIEBAIGV4cHJTZXRDb2xsYXRpb24oTm9kZSAqZXhwciwg T2lkIGNvbGxhdGlvbikKIAkJY2FzZSBUX0pzb25Jc1ByZWRpY2F0ZToKIAkJCUFzc2VydCghT2lk SXNWYWxpZChjb2xsYXRpb24pKTsgLyogcmVzdWx0IGlzIGFsd2F5cyBib29sZWFuICovCiAJCQli cmVhazsKKwkJY2FzZSBUX0pzb25FeHByOgorCQkJeworCQkJCUpzb25FeHByICAgKmpleHByID0g KEpzb25FeHByICopIGV4cHI7CisKKwkJCQlpZiAoamV4cHItPnJlc3VsdF9jb2VyY2lvbikKKwkJ CQkJZXhwclNldENvbGxhdGlvbigoTm9kZSAqKSBqZXhwci0+cmVzdWx0X2NvZXJjaW9uLCBjb2xs YXRpb24pOworCQkJCWVsc2UKKwkJCQkJQXNzZXJ0KCFPaWRJc1ZhbGlkKGNvbGxhdGlvbikpOyAv KiByZXN1bHQgaXMgYWx3YXlzIGEKKwkJCQkJCQkJCQkJCQkgKiBqc29uW2JdIHR5cGUgKi8KKwkJ CX0KKwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkl0ZW1Db2VyY2lvbjoKKwkJCXsKKwkJCQlKc29u SXRlbUNvZXJjaW9uICppdGVtX2NvZXJjaW9uID0gKEpzb25JdGVtQ29lcmNpb24gKikgZXhwcjsK KworCQkJCWlmIChpdGVtX2NvZXJjaW9uLT5jb2VyY2lvbikKKwkJCQkJZXhwclNldENvbGxhdGlv bihpdGVtX2NvZXJjaW9uLT5jb2VyY2lvbiwgY29sbGF0aW9uKTsKKwkJCX0KKwkJCWJyZWFrOwor CQljYXNlIFRfSnNvbkNvZXJjaW9uOgorCQkJeworCQkJCUpzb25Db2VyY2lvbiAqY29lcmNpb24g PSAoSnNvbkNvZXJjaW9uICopIGV4cHI7CisKKwkJCQljb2VyY2lvbi0+Y29sbGF0aW9uID0gY29s bGF0aW9uOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQmVoYXZpb3I6CisJCQl7CisJ CQkJSnNvbkJlaGF2aW9yICpiZWhhdmlvciA9IChKc29uQmVoYXZpb3IgKikgZXhwcjsKKworCQkJ CWlmIChiZWhhdmlvci0+ZXhwcikKKwkJCQkJZXhwclNldENvbGxhdGlvbihiZWhhdmlvci0+ZXhw ciwgY29sbGF0aW9uKTsKKwkJCQlpZiAoYmVoYXZpb3ItPmNvZXJjaW9uKQorCQkJCQlleHByU2V0 Q29sbGF0aW9uKChOb2RlICopIGJlaGF2aW9yLT5jb2VyY2lvbiwgY29sbGF0aW9uKTsKKwkJCX0K KwkJCWJyZWFrOwogCQljYXNlIFRfTnVsbFRlc3Q6CiAJCQkvKiBOdWxsVGVzdCdzIHJlc3VsdCBp cyBib29sZWFuIC4uLiAqLwogCQkJQXNzZXJ0KCFPaWRJc1ZhbGlkKGNvbGxhdGlvbikpOyAvKiAu Li4gc28gbmV2ZXIgc2V0IGEgY29sbGF0aW9uICovCkBAIC0xNTA4LDYgKzE2MTYsMTggQEAgZXhw ckxvY2F0aW9uKGNvbnN0IE5vZGUgKmV4cHIpCiAJCWNhc2UgVF9Kc29uSXNQcmVkaWNhdGU6CiAJ CQlsb2MgPSAoKGNvbnN0IEpzb25Jc1ByZWRpY2F0ZSAqKSBleHByKS0+bG9jYXRpb247CiAJCQli cmVhazsKKwkJY2FzZSBUX0pzb25FeHByOgorCQkJeworCQkJCWNvbnN0IEpzb25FeHByICpqc2V4 cHIgPSAoY29uc3QgSnNvbkV4cHIgKikgZXhwcjsKKworCQkJCS8qIGNvbnNpZGVyIGJvdGggZnVu Y3Rpb24gbmFtZSBhbmQgbGVmdG1vc3QgYXJnICovCisJCQkJbG9jID0gbGVmdG1vc3RMb2MoanNl eHByLT5sb2NhdGlvbiwKKwkJCQkJCQkJICBleHByTG9jYXRpb24oanNleHByLT5mb3JtYXR0ZWRf ZXhwcikpOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQmVoYXZpb3I6CisJCQlsb2Mg PSBleHByTG9jYXRpb24oKChKc29uQmVoYXZpb3IgKikgZXhwciktPmV4cHIpOworCQkJYnJlYWs7 CiAJCWNhc2UgVF9OdWxsVGVzdDoKIAkJCXsKIAkJCQljb25zdCBOdWxsVGVzdCAqbmV4cHIgPSAo Y29uc3QgTnVsbFRlc3QgKikgZXhwcjsKQEAgLTIyNjAsNiArMjM4MCw0NSBAQCBleHByZXNzaW9u X3RyZWVfd2Fsa2VyX2ltcGwoTm9kZSAqbm9kZSwKIAkJCWJyZWFrOwogCQljYXNlIFRfSnNvbklz UHJlZGljYXRlOgogCQkJcmV0dXJuIFdBTEsoKChKc29uSXNQcmVkaWNhdGUgKikgbm9kZSktPmV4 cHIpOworCQljYXNlIFRfSnNvbkV4cHI6CisJCQl7CisJCQkJSnNvbkV4cHIgICAqamV4cHIgPSAo SnNvbkV4cHIgKikgbm9kZTsKKworCQkJCWlmIChXQUxLKGpleHByLT5mb3JtYXR0ZWRfZXhwcikp CisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKGpleHByLT5yZXN1bHRfY29lcmNpb24p KQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhqZXhwci0+aXRlbV9jb2VyY2lvbnMp KQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhqZXhwci0+cGFzc2luZ192YWx1ZXMp KQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQkvKiB3ZSBhc3N1bWUgd2Fsa2VyIGRvZXNuJ3QgY2Fy ZSBhYm91dCBwYXNzaW5nX25hbWVzICovCisJCQkJaWYgKFdBTEsoamV4cHItPm9uX2VtcHR5KSkK KwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoamV4cHItPm9uX2Vycm9yKSkKKwkJCQkJ cmV0dXJuIHRydWU7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25Db2VyY2lvbjoKKwkJ CWJyZWFrOworCQljYXNlIFRfSnNvbkl0ZW1Db2VyY2lvbjoKKwkJCXsKKwkJCQlKc29uSXRlbUNv ZXJjaW9uICppdGVtX2NvZXJjaW9uID0gKEpzb25JdGVtQ29lcmNpb24gKikgbm9kZTsKKworCQkJ CWlmIChXQUxLKGl0ZW1fY29lcmNpb24tPmNvZXJjaW9uKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJ CQl9CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25CZWhhdmlvcjoKKwkJCXsKKwkJCQlKc29uQmVo YXZpb3IgKmJlaGF2aW9yID0gKEpzb25CZWhhdmlvciAqKSBub2RlOworCisJCQkJaWYgKFdBTEso YmVoYXZpb3ItPmV4cHIpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhiZWhhdmlv ci0+Y29lcmNpb24pKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNl IFRfTnVsbFRlc3Q6CiAJCQlyZXR1cm4gV0FMSygoKE51bGxUZXN0ICopIG5vZGUpLT5hcmcpOwog CQljYXNlIFRfQm9vbGVhblRlc3Q6CkBAIC0zMjYzLDYgKzM0MjIsNDYgQEAgZXhwcmVzc2lvbl90 cmVlX211dGF0b3JfaW1wbChOb2RlICpub2RlLAogCiAJCQkJcmV0dXJuIChOb2RlICopIG5ld25v ZGU7CiAJCQl9CisJCWNhc2UgVF9Kc29uRXhwcjoKKwkJCXsKKwkJCQlKc29uRXhwciAgICpqZXhw ciA9IChKc29uRXhwciAqKSBub2RlOworCQkJCUpzb25FeHByICAgKm5ld25vZGU7CisKKwkJCQlG TEFUQ09QWShuZXdub2RlLCBqZXhwciwgSnNvbkV4cHIpOworCQkJCU1VVEFURShuZXdub2RlLT5w YXRoX3NwZWMsIGpleHByLT5wYXRoX3NwZWMsIE5vZGUgKik7CisJCQkJTVVUQVRFKG5ld25vZGUt PmZvcm1hdHRlZF9leHByLCBqZXhwci0+Zm9ybWF0dGVkX2V4cHIsIE5vZGUgKik7CisJCQkJTVVU QVRFKG5ld25vZGUtPnJlc3VsdF9jb2VyY2lvbiwgamV4cHItPnJlc3VsdF9jb2VyY2lvbiwgTm9k ZSAqKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+aXRlbV9jb2VyY2lvbnMsIGpleHByLT5pdGVtX2Nv ZXJjaW9ucywgTGlzdCAqKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+cGFzc2luZ192YWx1ZXMsIGpl eHByLT5wYXNzaW5nX3ZhbHVlcywgTGlzdCAqKTsKKwkJCQkvKiBhc3N1bWUgbXV0YXRvciBkb2Vz IG5vdCBjYXJlIGFib3V0IHBhc3NpbmdfbmFtZXMgKi8KKwkJCQlNVVRBVEUobmV3bm9kZS0+b25f ZW1wdHksIGpleHByLT5vbl9lbXB0eSwgSnNvbkJlaGF2aW9yICopOworCQkJCU1VVEFURShuZXdu b2RlLT5vbl9lcnJvciwgamV4cHItPm9uX2Vycm9yLCBKc29uQmVoYXZpb3IgKik7CisJCQkJcmV0 dXJuIChOb2RlICopIG5ld25vZGU7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25Db2Vy Y2lvbjoKKwkJCXJldHVybiAoTm9kZSAqKSBjb3B5T2JqZWN0KG5vZGUpOworCQljYXNlIFRfSnNv bkl0ZW1Db2VyY2lvbjoKKwkJCXsKKwkJCQlKc29uSXRlbUNvZXJjaW9uICppdGVtX2NvZXJjaW9u ID0gKEpzb25JdGVtQ29lcmNpb24gKikgbm9kZTsKKwkJCQlKc29uSXRlbUNvZXJjaW9uICpuZXdu b2RlOworCisJCQkJRkxBVENPUFkobmV3bm9kZSwgaXRlbV9jb2VyY2lvbiwgSnNvbkl0ZW1Db2Vy Y2lvbik7CisJCQkJTVVUQVRFKG5ld25vZGUtPmNvZXJjaW9uLCBpdGVtX2NvZXJjaW9uLT5jb2Vy Y2lvbiwgTm9kZSAqKTsKKwkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKKwkJCX0KKwkJCWJy ZWFrOworCQljYXNlIFRfSnNvbkJlaGF2aW9yOgorCQkJeworCQkJCUpzb25CZWhhdmlvciAqYmVo YXZpb3IgPSAoSnNvbkJlaGF2aW9yICopIG5vZGU7CisJCQkJSnNvbkJlaGF2aW9yICpuZXdub2Rl OworCisJCQkJRkxBVENPUFkobmV3bm9kZSwgYmVoYXZpb3IsIEpzb25CZWhhdmlvcik7CisJCQkJ TVVUQVRFKG5ld25vZGUtPmV4cHIsIGJlaGF2aW9yLT5leHByLCBOb2RlICopOworCQkJCU1VVEFU RShuZXdub2RlLT5jb2VyY2lvbiwgYmVoYXZpb3ItPmNvZXJjaW9uLCBKc29uQ29lcmNpb24gKik7 CisJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CisJCQl9CisJCQlicmVhazsKIAkJY2FzZSBU X051bGxUZXN0OgogCQkJewogCQkJCU51bGxUZXN0ICAgKm50ZXN0ID0gKE51bGxUZXN0ICopIG5v ZGU7CkBAIC0zOTUxLDYgKzQxNTAsMzYgQEAgcmF3X2V4cHJlc3Npb25fdHJlZV93YWxrZXJfaW1w bChOb2RlICpub2RlLAogCQkJYnJlYWs7CiAJCWNhc2UgVF9Kc29uSXNQcmVkaWNhdGU6CiAJCQly ZXR1cm4gV0FMSygoKEpzb25Jc1ByZWRpY2F0ZSAqKSBub2RlKS0+ZXhwcik7CisJCWNhc2UgVF9K c29uQXJndW1lbnQ6CisJCQlyZXR1cm4gV0FMSygoKEpzb25Bcmd1bWVudCAqKSBub2RlKS0+dmFs KTsKKwkJY2FzZSBUX0pzb25GdW5jRXhwcjoKKwkJCXsKKwkJCQlKc29uRnVuY0V4cHIgKmpmZSA9 IChKc29uRnVuY0V4cHIgKikgbm9kZTsKKworCQkJCWlmIChXQUxLKGpmZS0+Y29udGV4dF9pdGVt KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoamZlLT5wYXRoc3BlYykpCisJCQkJ CXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKGpmZS0+cGFzc2luZykpCisJCQkJCXJldHVybiB0 cnVlOworCQkJCWlmIChqZmUtPm91dHB1dCAmJiBXQUxLKGpmZS0+b3V0cHV0KSkKKwkJCQkJcmV0 dXJuIHRydWU7CisJCQkJaWYgKGpmZS0+b25fZW1wdHkpCisJCQkJCXJldHVybiB0cnVlOworCQkJ CWlmIChqZmUtPm9uX2Vycm9yKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOwor CQljYXNlIFRfSnNvbkJlaGF2aW9yOgorCQkJeworCQkJCUpzb25CZWhhdmlvciAqamIgPSAoSnNv bkJlaGF2aW9yICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhqYi0+ZXhwcikpCisJCQkJCXJldHVy biB0cnVlOworCQkJCWlmIChXQUxLKGpiLT5jb2VyY2lvbikpCisJCQkJCXJldHVybiB0cnVlOwor CQkJfQorCQkJYnJlYWs7CiAJCWNhc2UgVF9OdWxsVGVzdDoKIAkJCXJldHVybiBXQUxLKCgoTnVs bFRlc3QgKikgbm9kZSktPmFyZyk7CiAJCWNhc2UgVF9Cb29sZWFuVGVzdDoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCmluZGV4IDhiNzZlOTg1MjkuLjRjZDYwNmNhNzMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMKKysrIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYwpAQCAtNDg3OSw3ICs0ODc5LDggQEAgY29z dF9xdWFsX2V2YWxfd2Fsa2VyKE5vZGUgKm5vZGUsIGNvc3RfcXVhbF9ldmFsX2NvbnRleHQgKmNv bnRleHQpCiAJCQkgSXNBKG5vZGUsIFNRTFZhbHVlRnVuY3Rpb24pIHx8CiAJCQkgSXNBKG5vZGUs IFhtbEV4cHIpIHx8CiAJCQkgSXNBKG5vZGUsIENvZXJjZVRvRG9tYWluKSB8fAotCQkJIElzQShu b2RlLCBOZXh0VmFsdWVFeHByKSkKKwkJCSBJc0Eobm9kZSwgTmV4dFZhbHVlRXhwcikgfHwKKwkJ CSBJc0Eobm9kZSwgSnNvbkV4cHIpKQogCXsKIAkJLyogVHJlYXQgYWxsIHRoZXNlIGFzIGhhdmlu ZyBjb3N0IDEgKi8KIAkJY29udGV4dC0+dG90YWwucGVyX3R1cGxlICs9IGNwdV9vcGVyYXRvcl9j b3N0OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCmluZGV4IDk0ZWI1NmExZTcuLjg4 NDk4NjRjYWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMu YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKQEAgLTUzLDYgKzUz LDcgQEAKICNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2pzb24u aCIKICNpbmNsdWRlICJ1dGlscy9qc29uYi5oIgorI2luY2x1ZGUgInV0aWxzL2pzb25wYXRoLmgi CiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMu aCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgpAQCAtNDE3LDYgKzQxOCwyNCBAQCBjb250 YWluX211dGFibGVfZnVuY3Rpb25zX3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KQog CQkvKiBDaGVjayBhbGwgc3Vibm9kZXMgKi8KIAl9CiAKKwlpZiAoSXNBKG5vZGUsIEpzb25FeHBy KSkKKwl7CisJCUpzb25FeHByICAgKmpleHByID0gY2FzdE5vZGUoSnNvbkV4cHIsIG5vZGUpOwor CQlDb25zdAkgICAqY25zdDsKKworCQlpZiAoIUlzQShqZXhwci0+cGF0aF9zcGVjLCBDb25zdCkp CisJCQlyZXR1cm4gdHJ1ZTsKKworCQljbnN0ID0gY2FzdE5vZGUoQ29uc3QsIGpleHByLT5wYXRo X3NwZWMpOworCisJCUFzc2VydChjbnN0LT5jb25zdHR5cGUgPT0gSlNPTlBBVEhPSUQpOworCQlp ZiAoY25zdC0+Y29uc3Rpc251bGwpCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJcmV0dXJuIGpzcElz TXV0YWJsZShEYXR1bUdldEpzb25QYXRoUChjbnN0LT5jb25zdHZhbHVlKSwKKwkJCQkJCQlqZXhw ci0+cGFzc2luZ19uYW1lcywgamV4cHItPnBhc3NpbmdfdmFsdWVzKTsKKwl9CisKIAlpZiAoSXNB KG5vZGUsIFNRTFZhbHVlRnVuY3Rpb24pKQogCXsKIAkJLyogYWxsIHZhcmlhbnRzIG9mIFNRTFZh bHVlRnVuY3Rpb24gYXJlIHN0YWJsZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggMzQ2MGZlYTU2Yi4uMjcy YWNjODg1NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC02NTIsMTAgKzY1MiwxOSBAQCBzdGF0aWMgTm9kZSAq bWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9k ZSAqcXVlcnkpOwogCQkJCWpzb25fcmV0dXJuaW5nX2NsYXVzZV9vcHQKIAkJCQlqc29uX25hbWVf YW5kX3ZhbHVlCiAJCQkJanNvbl9hZ2dyZWdhdGVfZnVuYworCQkJCWpzb25fYXJndW1lbnQKKwkJ CQlqc29uX2JlaGF2aW9yCisJCQkJanNvbl9vbl9lcnJvcl9jbGF1c2Vfb3B0CiAldHlwZSA8bGlz dD4JanNvbl9uYW1lX2FuZF92YWx1ZV9saXN0CiAJCQkJanNvbl92YWx1ZV9leHByX2xpc3QKIAkJ CQlqc29uX2FycmF5X2FnZ3JlZ2F0ZV9vcmRlcl9ieV9jbGF1c2Vfb3B0Ci0ldHlwZSA8aXZhbD4J anNvbl9wcmVkaWNhdGVfdHlwZV9jb25zdHJhaW50CisJCQkJanNvbl9hcmd1bWVudHMKKwkJCQlq c29uX2JlaGF2aW9yX2NsYXVzZV9vcHQKKwkJCQlqc29uX3Bhc3NpbmdfY2xhdXNlX29wdAorJXR5 cGUgPGl2YWw+CWpzb25fYmVoYXZpb3JfdHlwZQorCQkJCWpzb25fcHJlZGljYXRlX3R5cGVfY29u c3RyYWludAorCQkJCWpzb25fcXVvdGVzX2NsYXVzZV9vcHQKKwkJCQlqc29uX3dyYXBwZXJfYmVo YXZpb3IKICV0eXBlIDxib29sZWFuPglqc29uX2tleV91bmlxdWVuZXNzX2NvbnN0cmFpbnRfb3B0 CiAJCQkJanNvbl9vYmplY3RfY29uc3RydWN0b3JfbnVsbF9jbGF1c2Vfb3B0CiAJCQkJanNvbl9h cnJheV9jb25zdHJ1Y3Rvcl9udWxsX2NsYXVzZV9vcHQKQEAgLTY5Niw3ICs3MDUsNyBAQCBzdGF0 aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxp YXNlcywgTm9kZSAqcXVlcnkpOwogCUNBQ0hFIENBTEwgQ0FMTEVEIENBU0NBREUgQ0FTQ0FERUQg Q0FTRSBDQVNUIENBVEFMT0dfUCBDSEFJTiBDSEFSX1AKIAlDSEFSQUNURVIgQ0hBUkFDVEVSSVNU SUNTIENIRUNLIENIRUNLUE9JTlQgQ0xBU1MgQ0xPU0UKIAlDTFVTVEVSIENPQUxFU0NFIENPTExB VEUgQ09MTEFUSU9OIENPTFVNTiBDT0xVTU5TIENPTU1FTlQgQ09NTUVOVFMgQ09NTUlUCi0JQ09N TUlUVEVEIENPTVBSRVNTSU9OIENPTkNVUlJFTlRMWSBDT05GSUdVUkFUSU9OIENPTkZMSUNUCisJ Q09NTUlUVEVEIENPTVBSRVNTSU9OIENPTkNVUlJFTlRMWSBDT05ESVRJT05BTCBDT05GSUdVUkFU SU9OIENPTkZMSUNUCiAJQ09OTkVDVElPTiBDT05TVFJBSU5UIENPTlNUUkFJTlRTIENPTlRFTlRf UCBDT05USU5VRV9QIENPTlZFUlNJT05fUCBDT1BZCiAJQ09TVCBDUkVBVEUgQ1JPU1MgQ1NWIENV QkUgQ1VSUkVOVF9QCiAJQ1VSUkVOVF9DQVRBTE9HIENVUlJFTlRfREFURSBDVVJSRU5UX1JPTEUg Q1VSUkVOVF9TQ0hFTUEKQEAgLTcwNyw4ICs3MTYsOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vy c2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkp OwogCURFVEFDSCBESUNUSU9OQVJZIERJU0FCTEVfUCBESVNDQVJEIERJU1RJTkNUIERPIERPQ1VN RU5UX1AgRE9NQUlOX1AKIAlET1VCTEVfUCBEUk9QCiAKLQlFQUNIIEVMU0UgRU5BQkxFX1AgRU5D T0RJTkcgRU5DUllQVEVEIEVORF9QIEVOVU1fUCBFU0NBUEUgRVZFTlQgRVhDRVBUCi0JRVhDTFVE RSBFWENMVURJTkcgRVhDTFVTSVZFIEVYRUNVVEUgRVhJU1RTIEVYUExBSU4gRVhQUkVTU0lPTgor CUVBQ0ggRUxTRSBFTVBUWV9QIEVOQUJMRV9QIEVOQ09ESU5HIEVOQ1JZUFRFRCBFTkRfUCBFTlVN X1AgRVJST1JfUCBFU0NBUEUKKwlFVkVOVCBFWENFUFQgRVhDTFVERSBFWENMVURJTkcgRVhDTFVT SVZFIEVYRUNVVEUgRVhJU1RTIEVYUExBSU4gRVhQUkVTU0lPTgogCUVYVEVOU0lPTiBFWFRFUk5B TCBFWFRSQUNUCiAKIAlGQUxTRV9QIEZBTUlMWSBGRVRDSCBGSUxURVIgRklOQUxJWkUgRklSU1Rf UCBGTE9BVF9QIEZPTExPV0lORyBGT1IKQEAgLTcyMywxMCArNzMyLDEwIEBAIHN0YXRpYyBOb2Rl ICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBO b2RlICpxdWVyeSk7CiAJSU5ORVJfUCBJTk9VVCBJTlBVVF9QIElOU0VOU0lUSVZFIElOU0VSVCBJ TlNURUFEIElOVF9QIElOVEVHRVIKIAlJTlRFUlNFQ1QgSU5URVJWQUwgSU5UTyBJTlZPS0VSIElT IElTTlVMTCBJU09MQVRJT04KIAotCUpPSU4gSlNPTiBKU09OX0FSUkFZIEpTT05fQVJSQVlBR0cg SlNPTl9PQkpFQ1QgSlNPTl9PQkpFQ1RBR0cKLQlKU09OX1NDQUxBUiBKU09OX1NFUklBTElaRQor CUpPSU4gSlNPTiBKU09OX0FSUkFZIEpTT05fQVJSQVlBR0cgSlNPTl9FWElTVFMgSlNPTl9PQkpF Q1QgSlNPTl9PQkpFQ1RBR0cKKwlKU09OX1FVRVJZIEpTT05fU0NBTEFSIEpTT05fU0VSSUFMSVpF IEpTT05fVkFMVUUKIAotCUtFWSBLRVlTCisJS0VFUCBLRVkgS0VZUwogCiAJTEFCRUwgTEFOR1VB R0UgTEFSR0VfUCBMQVNUX1AgTEFURVJBTF9QCiAJTEVBRElORyBMRUFLUFJPT0YgTEVBU1QgTEVG VCBMRVZFTCBMSUtFIExJTUlUIExJU1RFTiBMT0FEIExPQ0FMCkBAIC03NDAsNyArNzQ5LDcgQEAg c3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3Qg KmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlOT1QgTk9USElORyBOT1RJRlkgTk9UTlVMTCBOT1dB SVQgTlVMTF9QIE5VTExJRgogCU5VTExTX1AgTlVNRVJJQwogCi0JT0JKRUNUX1AgT0YgT0ZGIE9G RlNFVCBPSURTIE9MRCBPTiBPTkxZIE9QRVJBVE9SIE9QVElPTiBPUFRJT05TIE9SCisJT0JKRUNU X1AgT0YgT0ZGIE9GRlNFVCBPSURTIE9MRCBPTUlUIE9OIE9OTFkgT1BFUkFUT1IgT1BUSU9OIE9Q VElPTlMgT1IKIAlPUkRFUiBPUkRJTkFMSVRZIE9USEVSUyBPVVRfUCBPVVRFUl9QCiAJT1ZFUiBP VkVSTEFQUyBPVkVSTEFZIE9WRVJSSURJTkcgT1dORUQgT1dORVIKIApAQCAtNzQ5LDcgKzc1OCw3 IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBM aXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJUE9TSVRJT04gUFJFQ0VESU5HIFBSRUNJU0lP TiBQUkVTRVJWRSBQUkVQQVJFIFBSRVBBUkVEIFBSSU1BUlkKIAlQUklPUiBQUklWSUxFR0VTIFBS T0NFRFVSQUwgUFJPQ0VEVVJFIFBST0NFRFVSRVMgUFJPR1JBTSBQVUJMSUNBVElPTgogCi0JUVVP VEUKKwlRVU9URSBRVU9URVMKIAogCVJBTkdFIFJFQUQgUkVBTCBSRUFTU0lHTiBSRUNIRUNLIFJF Q1VSU0lWRSBSRUZfUCBSRUZFUkVOQ0VTIFJFRkVSRU5DSU5HCiAJUkVGUkVTSCBSRUlOREVYIFJF TEFUSVZFX1AgUkVMRUFTRSBSRU5BTUUgUkVQRUFUQUJMRSBSRVBMQUNFIFJFUExJQ0EKQEAgLTc2 MCw3ICs3NjksNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAq cmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCVNFUVVFTkNFIFNFUVVFTkNF UwogCVNFUklBTElaQUJMRSBTRVJWRVIgU0VTU0lPTiBTRVNTSU9OX1VTRVIgU0VUIFNFVFMgU0VU T0YgU0hBUkUgU0hPVwogCVNJTUlMQVIgU0lNUExFIFNLSVAgU01BTExJTlQgU05BUFNIT1QgU09N RSBTUUxfUCBTVEFCTEUgU1RBTkRBTE9ORV9QCi0JU1RBUlQgU1RBVEVNRU5UIFNUQVRJU1RJQ1Mg U1RESU4gU1RET1VUIFNUT1JBR0UgU1RPUkVEIFNUUklDVF9QIFNUUklQX1AKKwlTVEFSVCBTVEFU RU1FTlQgU1RBVElTVElDUyBTVERJTiBTVERPVVQgU1RPUkFHRSBTVE9SRUQgU1RSSUNUX1AgU1RS SU5HX1AgU1RSSVBfUAogCVNVQlNDUklQVElPTiBTVUJTVFJJTkcgU1VQUE9SVCBTWU1NRVRSSUMg U1lTSUQgU1lTVEVNX1AgU1lTVEVNX1VTRVIKIAogCVRBQkxFIFRBQkxFUyBUQUJMRVNBTVBMRSBU QUJMRVNQQUNFIFRFTVAgVEVNUExBVEUgVEVNUE9SQVJZIFRFWFRfUCBUSEVOCkBAIC03NjgsNyAr Nzc3LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5h bWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlUUkVBVCBUUklHR0VSIFRSSU0gVFJV RV9QCiAJVFJVTkNBVEUgVFJVU1RFRCBUWVBFX1AgVFlQRVNfUAogCi0JVUVTQ0FQRSBVTkJPVU5E RUQgVU5DT01NSVRURUQgVU5FTkNSWVBURUQgVU5JT04gVU5JUVVFIFVOS05PV04KKwlVRVNDQVBF IFVOQk9VTkRFRCBVTkNPTkRJVElPTkFMIFVOQ09NTUlUVEVEIFVORU5DUllQVEVEIFVOSU9OIFVO SVFVRSBVTktOT1dOCiAJVU5MSVNURU4gVU5MT0dHRUQgVU5USUwgVVBEQVRFIFVTRVIgVVNJTkcK IAogCVZBQ1VVTSBWQUxJRCBWQUxJREFURSBWQUxJREFUT1IgVkFMVUVfUCBWQUxVRVMgVkFSQ0hB UiBWQVJJQURJQyBWQVJZSU5HCkBAIC0xNTc4Miw2ICsxNTc5MSw2MiBAQCBmdW5jX2V4cHJfY29t bW9uX3N1YmV4cHI6CiAJCQkJCW4tPmxvY2F0aW9uID0gQDE7CiAJCQkJCSQkID0gKE5vZGUgKikg bjsKIAkJCQl9CisJCQl8IEpTT05fUVVFUlkgJygnCisJCQkJanNvbl92YWx1ZV9leHByICcsJyBh X2V4cHIganNvbl9wYXNzaW5nX2NsYXVzZV9vcHQKKwkJCQlqc29uX3JldHVybmluZ19jbGF1c2Vf b3B0CisJCQkJanNvbl93cmFwcGVyX2JlaGF2aW9yCisJCQkJanNvbl9xdW90ZXNfY2xhdXNlX29w dAorCQkJCWpzb25fYmVoYXZpb3JfY2xhdXNlX29wdAorCQkJJyknCisJCQkJeworCQkJCQlKc29u RnVuY0V4cHIgKm4gPSBtYWtlTm9kZShKc29uRnVuY0V4cHIpOworCisJCQkJCW4tPm9wID0gSlNP Tl9RVUVSWV9PUDsKKwkJCQkJbi0+Y29udGV4dF9pdGVtID0gKEpzb25WYWx1ZUV4cHIgKikgJDM7 CisJCQkJCW4tPnBhdGhzcGVjID0gJDU7CisJCQkJCW4tPnBhc3NpbmcgPSAkNjsKKwkJCQkJbi0+ b3V0cHV0ID0gKEpzb25PdXRwdXQgKikgJDc7CisJCQkJCW4tPndyYXBwZXIgPSAkODsKKwkJCQkJ bi0+cXVvdGVzID0gJDk7CisJCQkJCW4tPm9uX2VtcHR5ID0gKEpzb25CZWhhdmlvciAqKSBsaW5p dGlhbCgkMTApOworCQkJCQluLT5vbl9lcnJvciA9IChKc29uQmVoYXZpb3IgKikgbHNlY29uZCgk MTApOworCQkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJ fQorCQkJfCBKU09OX0VYSVNUUyAnKCcKKwkJCQlqc29uX3ZhbHVlX2V4cHIgJywnIGFfZXhwciBq c29uX3Bhc3NpbmdfY2xhdXNlX29wdAorCQkJCWpzb25fb25fZXJyb3JfY2xhdXNlX29wdAorCQkJ JyknCisJCQkJeworCQkJCQlKc29uRnVuY0V4cHIgKm4gPSBtYWtlTm9kZShKc29uRnVuY0V4cHIp OworCisJCQkJCW4tPm9wID0gSlNPTl9FWElTVFNfT1A7CisJCQkJCW4tPmNvbnRleHRfaXRlbSA9 IChKc29uVmFsdWVFeHByICopICQzOworCQkJCQluLT5wYXRoc3BlYyA9ICQ1OworCQkJCQluLT5w YXNzaW5nID0gJDY7CisJCQkJCW4tPm91dHB1dCA9IE5VTEw7CisJCQkJCW4tPm9uX2Vycm9yID0g KEpzb25CZWhhdmlvciAqKSAkNzsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAo Tm9kZSAqKSBuOworCQkJCX0KKwkJCXwgSlNPTl9WQUxVRSAnKCcKKwkJCQlqc29uX3ZhbHVlX2V4 cHIgJywnIGFfZXhwciBqc29uX3Bhc3NpbmdfY2xhdXNlX29wdAorCQkJCWpzb25fcmV0dXJuaW5n X2NsYXVzZV9vcHQKKwkJCQlqc29uX2JlaGF2aW9yX2NsYXVzZV9vcHQKKwkJCScpJworCQkJCXsK KwkJCQkJSnNvbkZ1bmNFeHByICpuID0gbWFrZU5vZGUoSnNvbkZ1bmNFeHByKTsKKworCQkJCQlu LT5vcCA9IEpTT05fVkFMVUVfT1A7CisJCQkJCW4tPmNvbnRleHRfaXRlbSA9IChKc29uVmFsdWVF eHByICopICQzOworCQkJCQluLT5wYXRoc3BlYyA9ICQ1OworCQkJCQluLT5wYXNzaW5nID0gJDY7 CisJCQkJCW4tPm91dHB1dCA9IChKc29uT3V0cHV0ICopICQ3OworCQkJCQluLT5vbl9lbXB0eSA9 IChKc29uQmVoYXZpb3IgKikgbGluaXRpYWwoJDgpOworCQkJCQluLT5vbl9lcnJvciA9IChKc29u QmVoYXZpb3IgKikgbHNlY29uZCgkOCk7CisJCQkJCW4tPmxvY2F0aW9uID0gQDE7CisJCQkJCSQk ID0gKE5vZGUgKikgbjsKKwkJCQl9CiAJCQk7CiAKIApAQCAtMTY1MDgsNiArMTY1NzMsNzcgQEAg b3B0X2FzeW1tZXRyaWM6IEFTWU1NRVRSSUMKIAkJOwogCiAvKiBTUUwvSlNPTiBzdXBwb3J0ICov Citqc29uX3Bhc3NpbmdfY2xhdXNlX29wdDoKKwkJCVBBU1NJTkcganNvbl9hcmd1bWVudHMJCQkJ CXsgJCQgPSAkMjsgfQorCQkJfCAvKkVNUFRZKi8JCQkJCQkJCXsgJCQgPSBOSUw7IH0KKwkJOwor Citqc29uX2FyZ3VtZW50czoKKwkJCWpzb25fYXJndW1lbnQJCQkJCQkJeyAkJCA9IGxpc3RfbWFr ZTEoJDEpOyB9CisJCQl8IGpzb25fYXJndW1lbnRzICcsJyBqc29uX2FyZ3VtZW50CQl7ICQkID0g bGFwcGVuZCgkMSwgJDMpOyB9CisJCTsKKworanNvbl9hcmd1bWVudDoKKwkJCWpzb25fdmFsdWVf ZXhwciBBUyBDb2xMYWJlbAorCQkJeworCQkJCUpzb25Bcmd1bWVudCAqbiA9IG1ha2VOb2RlKEpz b25Bcmd1bWVudCk7CisKKwkJCQluLT52YWwgPSAoSnNvblZhbHVlRXhwciAqKSAkMTsKKwkJCQlu LT5uYW1lID0gJDM7CisJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJfQorCQk7CisKKy8qIEFSUkFZ IGlzIGEgbm9pc2Ugd29yZCAqLworanNvbl93cmFwcGVyX2JlaGF2aW9yOgorCQkJICBXSVRIT1VU IFdSQVBQRVIJCQkJCXsgJCQgPSBKU1dfTk9ORTsgfQorCQkJfCBXSVRIT1VUIEFSUkFZCVdSQVBQ RVIJCQkJeyAkJCA9IEpTV19OT05FOyB9CisJCQl8IFdJVEggV1JBUFBFUgkJCQkJCXsgJCQgPSBK U1dfVU5DT05ESVRJT05BTDsgfQorCQkJfCBXSVRIIEFSUkFZIFdSQVBQRVIJCQkJeyAkJCA9IEpT V19VTkNPTkRJVElPTkFMOyB9CisJCQl8IFdJVEggQ09ORElUSU9OQUwgQVJSQVkgV1JBUFBFUgl7 ICQkID0gSlNXX0NPTkRJVElPTkFMOyB9CisJCQl8IFdJVEggVU5DT05ESVRJT05BTCBBUlJBWSBX UkFQUEVSCXsgJCQgPSBKU1dfVU5DT05ESVRJT05BTDsgfQorCQkJfCBXSVRIIENPTkRJVElPTkFM IFdSQVBQRVIJCQl7ICQkID0gSlNXX0NPTkRJVElPTkFMOyB9CisJCQl8IFdJVEggVU5DT05ESVRJ T05BTCBXUkFQUEVSCQl7ICQkID0gSlNXX1VOQ09ORElUSU9OQUw7IH0KKwkJCXwgLyogZW1wdHkg Ki8JCQkJCQl7ICQkID0gSlNXX1VOU1BFQzsgfQorCQk7CisKK2pzb25fYmVoYXZpb3I6CisJCQlE RUZBVUxUIGFfZXhwcgorCQkJCXsgJCQgPSAoTm9kZSAqKSBtYWtlSnNvbkJlaGF2aW9yKEpTT05f QkVIQVZJT1JfREVGQVVMVCwgJDIsIE5VTEwsIEAxKTsgfQorCQkJfCBqc29uX2JlaGF2aW9yX3R5 cGUKKwkJCQl7ICQkID0gKE5vZGUgKikgbWFrZUpzb25CZWhhdmlvcigkMSwgTlVMTCwgTlVMTCwg QDEpOyB9CisJCTsKKworanNvbl9iZWhhdmlvcl90eXBlOgorCQkJRVJST1JfUAkJeyAkJCA9IEpT T05fQkVIQVZJT1JfRVJST1I7IH0KKwkJCXwgTlVMTF9QCXsgJCQgPSBKU09OX0JFSEFWSU9SX05V TEw7IH0KKwkJCXwgVFJVRV9QCXsgJCQgPSBKU09OX0JFSEFWSU9SX1RSVUU7IH0KKwkJCXwgRkFM U0VfUAl7ICQkID0gSlNPTl9CRUhBVklPUl9GQUxTRTsgfQorCQkJfCBVTktOT1dOCXsgJCQgPSBK U09OX0JFSEFWSU9SX1VOS05PV047IH0KKwkJCXwgRU1QVFlfUCBBUlJBWQl7ICQkID0gSlNPTl9C RUhBVklPUl9FTVBUWV9BUlJBWTsgfQorCQkJfCBFTVBUWV9QIE9CSkVDVF9QCXsgJCQgPSBKU09O X0JFSEFWSU9SX0VNUFRZX09CSkVDVDsgfQorCQkJLyogbm9uLXN0YW5kYXJkLCBmb3IgT3JhY2xl IGNvbXBhdGliaWxpdHkgb25seSAqLworCQkJfCBFTVBUWV9QCXsgJCQgPSBKU09OX0JFSEFWSU9S X0VNUFRZX0FSUkFZOyB9CisJCTsKKworanNvbl9iZWhhdmlvcl9jbGF1c2Vfb3B0OgorCQkJanNv bl9iZWhhdmlvciBPTiBFTVBUWV9QCisJCQkJeyAkJCA9IGxpc3RfbWFrZTIoJDEsIE5VTEwpOyB9 CisJCQl8IGpzb25fYmVoYXZpb3IgT04gRVJST1JfUAorCQkJCXsgJCQgPSBsaXN0X21ha2UyKE5V TEwsICQxKTsgfQorCQkJfCBqc29uX2JlaGF2aW9yIE9OIEVNUFRZX1AganNvbl9iZWhhdmlvciBP TiBFUlJPUl9QCisJCQkJeyAkJCA9IGxpc3RfbWFrZTIoJDEsICQ0KTsgfQorCQkJfCAvKiBFTVBU WSAqLworCQkJCXsgJCQgPSBsaXN0X21ha2UyKE5VTEwsIE5VTEwpOyB9CisJCTsKKworanNvbl9v bl9lcnJvcl9jbGF1c2Vfb3B0OgorCQkJanNvbl9iZWhhdmlvciBPTiBFUlJPUl9QCisJCQkJeyAk JCA9ICQxOyB9CisJCQl8IC8qIEVNUFRZICovCisJCQkJeyAkJCA9IE5VTEw7IH0KKwkJOworCiBq c29uX3ZhbHVlX2V4cHI6CiAJCQlhX2V4cHIganNvbl9mb3JtYXRfY2xhdXNlX29wdAogCQkJewpA QCAtMTY1NTIsNiArMTY2ODgsMTQgQEAganNvbl9mb3JtYXRfY2xhdXNlX29wdDoKIAkJCQl9CiAJ CTsKIAoranNvbl9xdW90ZXNfY2xhdXNlX29wdDoKKwkJCUtFRVAgUVVPVEVTIE9OIFNDQUxBUiBT VFJJTkdfUAkJeyAkJCA9IEpTX1FVT1RFU19LRUVQOyB9CisJCQl8IEtFRVAgUVVPVEVTCQkJCQkJ eyAkJCA9IEpTX1FVT1RFU19LRUVQOyB9CisJCQl8IE9NSVQgUVVPVEVTIE9OIFNDQUxBUiBTVFJJ TkdfUAl7ICQkID0gSlNfUVVPVEVTX09NSVQ7IH0KKwkJCXwgT01JVCBRVU9URVMJCQkJCQl7ICQk ID0gSlNfUVVPVEVTX09NSVQ7IH0KKwkJCXwgLyogRU1QVFkgKi8JCQkJCQl7ICQkID0gSlNfUVVP VEVTX1VOU1BFQzsgfQorCQk7CisKIGpzb25fcmV0dXJuaW5nX2NsYXVzZV9vcHQ6CiAJCQlSRVRV Uk5JTkcgVHlwZW5hbWUganNvbl9mb3JtYXRfY2xhdXNlX29wdAogCQkJCXsKQEAgLTE3MTY4LDYg KzE3MzEyLDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBDT01NSVQKIAkJCXwgQ09NTUlU VEVECiAJCQl8IENPTVBSRVNTSU9OCisJCQl8IENPTkRJVElPTkFMCiAJCQl8IENPTkZJR1VSQVRJ T04KIAkJCXwgQ09ORkxJQ1QKIAkJCXwgQ09OTkVDVElPTgpAQCAtMTcyMDQsMTAgKzE3MzQ5LDEy IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgRE9VQkxFX1AKIAkJCXwgRFJPUAogCQkJfCBF QUNICisJCQl8IEVNUFRZX1AKIAkJCXwgRU5BQkxFX1AKIAkJCXwgRU5DT0RJTkcKIAkJCXwgRU5D UllQVEVECiAJCQl8IEVOVU1fUAorCQkJfCBFUlJPUl9QCiAJCQl8IEVTQ0FQRQogCQkJfCBFVkVO VAogCQkJfCBFWENMVURFCkBAIC0xNzI1Nyw2ICsxNzQwNCw3IEBAIHVucmVzZXJ2ZWRfa2V5d29y ZDoKIAkJCXwgSU5TVEVBRAogCQkJfCBJTlZPS0VSCiAJCQl8IElTT0xBVElPTgorCQkJfCBLRUVQ CiAJCQl8IEtFWQogCQkJfCBLRVlTCiAJCQl8IExBQkVMCkBAIC0xNzMwMyw2ICsxNzQ1MSw3IEBA IHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgT0ZGCiAJCQl8IE9JRFMKIAkJCXwgT0xECisJCQl8 IE9NSVQKIAkJCXwgT1BFUkFUT1IKIAkJCXwgT1BUSU9OCiAJCQl8IE9QVElPTlMKQEAgLTE3MzMz LDYgKzE3NDgyLDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBQUk9HUkFNCiAJCQl8IFBV QkxJQ0FUSU9OCiAJCQl8IFFVT1RFCisJCQl8IFFVT1RFUwogCQkJfCBSQU5HRQogCQkJfCBSRUFE CiAJCQl8IFJFQVNTSUdOCkBAIC0xNzM5Miw2ICsxNzU0Miw3IEBAIHVucmVzZXJ2ZWRfa2V5d29y ZDoKIAkJCXwgU1RPUkFHRQogCQkJfCBTVE9SRUQKIAkJCXwgU1RSSUNUX1AKKwkJCXwgU1RSSU5H X1AKIAkJCXwgU1RSSVBfUAogCQkJfCBTVUJTQ1JJUFRJT04KIAkJCXwgU1VQUE9SVApAQCAtMTc0 MTQsNiArMTc1NjUsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFVFU0NBUEUKIAkJCXwg VU5CT1VOREVECiAJCQl8IFVOQ09NTUlUVEVECisJCQl8IFVOQ09ORElUSU9OQUwKIAkJCXwgVU5F TkNSWVBURUQKIAkJCXwgVU5LTk9XTgogCQkJfCBVTkxJU1RFTgpAQCAtMTc0NzQsMTAgKzE3NjI2 LDEzIEBAIGNvbF9uYW1lX2tleXdvcmQ6CiAJCQl8IEpTT04KIAkJCXwgSlNPTl9BUlJBWQogCQkJ fCBKU09OX0FSUkFZQUdHCisJCQl8IEpTT05fRVhJU1RTCiAJCQl8IEpTT05fT0JKRUNUCiAJCQl8 IEpTT05fT0JKRUNUQUdHCisJCQl8IEpTT05fUVVFUlkKIAkJCXwgSlNPTl9TQ0FMQVIKIAkJCXwg SlNPTl9TRVJJQUxJWkUKKwkJCXwgSlNPTl9WQUxVRQogCQkJfCBMRUFTVAogCQkJfCBOQVRJT05B TAogCQkJfCBOQ0hBUgpAQCAtMTc3MTAsNiArMTc4NjUsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6 CiAJCQl8IENPTU1JVFRFRAogCQkJfCBDT01QUkVTU0lPTgogCQkJfCBDT05DVVJSRU5UTFkKKwkJ CXwgQ09ORElUSU9OQUwKIAkJCXwgQ09ORklHVVJBVElPTgogCQkJfCBDT05GTElDVAogCQkJfCBD T05ORUNUSU9OCkBAIC0xNzc2MiwxMSArMTc5MTgsMTMgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgog CQkJfCBEUk9QCiAJCQl8IEVBQ0gKIAkJCXwgRUxTRQorCQkJfCBFTVBUWV9QCiAJCQl8IEVOQUJM RV9QCiAJCQl8IEVOQ09ESU5HCiAJCQl8IEVOQ1JZUFRFRAogCQkJfCBFTkRfUAogCQkJfCBFTlVN X1AKKwkJCXwgRVJST1JfUAogCQkJfCBFU0NBUEUKIAkJCXwgRVZFTlQKIAkJCXwgRVhDTFVERQpA QCAtMTc4MzYsMTAgKzE3OTk0LDE0IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgSlNPTgog CQkJfCBKU09OX0FSUkFZCiAJCQl8IEpTT05fQVJSQVlBR0cKKwkJCXwgSlNPTl9FWElTVFMKIAkJ CXwgSlNPTl9PQkpFQ1QKIAkJCXwgSlNPTl9PQkpFQ1RBR0cKKwkJCXwgSlNPTl9RVUVSWQogCQkJ fCBKU09OX1NDQUxBUgogCQkJfCBKU09OX1NFUklBTElaRQorCQkJfCBKU09OX1ZBTFVFCisJCQl8 IEtFRVAKIAkJCXwgS0VZCiAJCQl8IEtFWVMKIAkJCXwgTEFCRUwKQEAgLTE3OTAwLDYgKzE4MDYy LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBPRkYKIAkJCXwgT0lEUwogCQkJfCBPTEQK KwkJCXwgT01JVAogCQkJfCBPTkxZCiAJCQl8IE9QRVJBVE9SCiAJCQl8IE9QVElPTgpAQCAtMTc5 MzcsNiArMTgxMDAsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFBST0dSQU0KIAkJCXwg UFVCTElDQVRJT04KIAkJCXwgUVVPVEUKKwkJCXwgUVVPVEVTCiAJCQl8IFJBTkdFCiAJCQl8IFJF QUQKIAkJCXwgUkVBTApAQCAtMTgwMDUsNiArMTgxNjksNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6 CiAJCQl8IFNUT1JBR0UKIAkJCXwgU1RPUkVECiAJCQl8IFNUUklDVF9QCisJCQl8IFNUUklOR19Q CiAJCQl8IFNUUklQX1AKIAkJCXwgU1VCU0NSSVBUSU9OCiAJCQl8IFNVQlNUUklORwpAQCAtMTgw MzksNiArMTgyMDQsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFVFU0NBUEUKIAkJCXwg VU5CT1VOREVECiAJCQl8IFVOQ09NTUlUVEVECisJCQl8IFVOQ09ORElUSU9OQUwKIAkJCXwgVU5F TkNSWVBURUQKIAkJCXwgVU5JUVVFCiAJCQl8IFVOS05PV04KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5j CmluZGV4IDkzMDBjN2I5YWIuLjk5ODlmYmIyODYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpA QCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAi dXRpbHMvZGF0ZS5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCisjaW5jbHVkZSAidXRp bHMvanNvbmIuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGls cy90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJ1dGlscy94bWwuaCIKQEAgLTkwLDYgKzkxLDIyIEBA IHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Kc29uUGFyc2VFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwg SnNvblBhcnNlRXhwciAqZXhwcik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtSnNvblNjYWxhckV4 cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uU2NhbGFyRXhwciAqZXhwcik7CiBzdGF0aWMgTm9k ZSAqdHJhbnNmb3JtSnNvblNlcmlhbGl6ZUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJ CQkJCUpzb25TZXJpYWxpemVFeHByICpleHByKTsKK3N0YXRpYyBOb2RlICp0cmFuc2Zvcm1Kc29u RnVuY0V4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uRnVuY0V4cHIgKnApOworc3RhdGljIEpz b25FeHByICp0cmFuc2Zvcm1Kc29uRXhwckNvbW1vbihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25G dW5jRXhwciAqZnVuYywKKwkJCQkJCQkJCQkgY29uc3QgY2hhciAqY29uc3RydWN0TmFtZSk7Citz dGF0aWMgdm9pZCB0cmFuc2Zvcm1Kc29uUGFzc2luZ0FyZ3MoUGFyc2VTdGF0ZSAqcHN0YXRlLCBj b25zdCBjaGFyICpjb25zdHJ1Y3ROYW1lLAorCQkJCQkJCQkJIEpzb25Gb3JtYXRUeXBlIGZvcm1h dCwgTGlzdCAqYXJncywKKwkJCQkJCQkJCSBMaXN0ICoqcGFzc2luZ192YWx1ZXMsIExpc3QgKipw YXNzaW5nX25hbWVzKTsKK3N0YXRpYyBOb2RlICpjb2VyY2VKc29uRnVuY0V4cHJPdXRwdXQoUGFy c2VTdGF0ZSAqcHN0YXRlLCBKc29uRXhwciAqanNleHByKTsKK3N0YXRpYyBPaWQJSnNvbkZ1bmNF eHByRGVmYXVsdFJldHVyblR5cGUoSnNvbkV4cHIgKmpzZXhwcik7CitzdGF0aWMgTm9kZSAqY29l cmNlSnNvbkV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByLAorCQkJCQkJCWNvbnN0 IEpzb25SZXR1cm5pbmcgKnJldHVybmluZyk7CitzdGF0aWMgSnNvbkNvZXJjaW9uICptYWtlSnNv bkNvZXJjaW9uKGNvbnN0IEpzb25SZXR1cm5pbmcgKnJldHVybmluZyk7CitzdGF0aWMgTGlzdCAq SW5pdEpzb25JdGVtQ29lcmNpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgSnNvblJldHVy bmluZyAqcmV0dXJuaW5nLAorCQkJCQkJCQkgICBPaWQgY29udGV4dEl0ZW1UeXBlSWQpOworc3Rh dGljIEpzb25CZWhhdmlvciAqdHJhbnNmb3JtSnNvbkJlaGF2aW9yKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgSnNvbkJlaGF2aW9yICpiZWhhdmlvciwKKwkJCQkJCQkJCQkgICBKc29uQmVoYXZpb3JUeXBl IGRlZmF1bHRfYmVoYXZpb3IsCisJCQkJCQkJCQkJICAgSnNvblJldHVybmluZyAqcmV0dXJuaW5n KTsKIHN0YXRpYyBOb2RlICptYWtlX3Jvd19jb21wYXJpc29uX29wKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgTGlzdCAqb3BuYW1lLAogCQkJCQkJCQkJTGlzdCAqbGFyZ3MsIExpc3QgKnJhcmdzLCBpbnQg bG9jYXRpb24pOwogc3RhdGljIE5vZGUgKm1ha2Vfcm93X2Rpc3RpbmN0X29wKFBhcnNlU3RhdGUg KnBzdGF0ZSwgTGlzdCAqb3BuYW1lLApAQCAtMzUzLDYgKzM3MCwxMCBAQCB0cmFuc2Zvcm1FeHBy UmVjdXJzZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIpCiAJCQlyZXN1bHQgPSB0cmFu c2Zvcm1Kc29uU2VyaWFsaXplRXhwcihwc3RhdGUsIChKc29uU2VyaWFsaXplRXhwciAqKSBleHBy KTsKIAkJCWJyZWFrOwogCisJCWNhc2UgVF9Kc29uRnVuY0V4cHI6CisJCQlyZXN1bHQgPSB0cmFu c2Zvcm1Kc29uRnVuY0V4cHIocHN0YXRlLCAoSnNvbkZ1bmNFeHByICopIGV4cHIpOworCQkJYnJl YWs7CisKIAkJZGVmYXVsdDoKIAkJCS8qIHNob3VsZCBub3QgcmVhY2ggaGVyZSAqLwogCQkJZWxv ZyhFUlJPUiwgInVucmVjb2duaXplZCBub2RlIHR5cGU6ICVkIiwgKGludCkgbm9kZVRhZyhleHBy KSk7CkBAIC0zMjI5LDcgKzMyNTAsNyBAQCBtYWtlSnNvbkJ5dGVhVG9UZXh0Q29udmVyc2lvbihO b2RlICpleHByLCBKc29uRm9ybWF0ICpmb3JtYXQsIGludCBsb2NhdGlvbikKIHN0YXRpYyBOb2Rl ICoKIHRyYW5zZm9ybUpzb25WYWx1ZUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBjaGFy ICpjb25zdHJ1Y3ROYW1lLAogCQkJCQkgICBKc29uVmFsdWVFeHByICp2ZSwgSnNvbkZvcm1hdFR5 cGUgZGVmYXVsdF9mb3JtYXQsCi0JCQkJCSAgIE9pZCB0YXJnZXR0eXBlKQorCQkJCQkgICBPaWQg dGFyZ2V0dHlwZSwgYm9vbCBpc2FyZykKIHsKIAlOb2RlCSAgICpleHByID0gdHJhbnNmb3JtRXhw clJlY3Vyc2UocHN0YXRlLCAoTm9kZSAqKSB2ZS0+cmF3X2V4cHIpOwogCU5vZGUJICAgKnJhd2V4 cHI7CkBAIC0zMjYxLDYgKzMyODIsNDEgQEAgdHJhbnNmb3JtSnNvblZhbHVlRXhwcihQYXJzZVN0 YXRlICpwc3RhdGUsIGNvbnN0IGNoYXIgKmNvbnN0cnVjdE5hbWUsCiAJCWVsc2UKIAkJCWZvcm1h dCA9IHZlLT5mb3JtYXQtPmZvcm1hdF90eXBlOwogCX0KKwllbHNlIGlmIChpc2FyZykKKwl7CisJ CS8qCisJCSAqIFNwZWNpYWwgdHJlYXRtZW50IGZvciBQQVNTSU5HIGFyZ3VtZW50cy4KKwkJICoK KwkJICogUGFzcyB0eXBlcyBzdXBwb3J0ZWQgYnkgR2V0SnNvblBhdGhWYXIoKSAvIEpzb25JdGVt RnJvbURhdHVtKCkKKwkJICogZGlyZWN0bHkgd2l0aG91dCBjb252ZXJ0aW5nIHRvIGpzb25bYl0u CisJCSAqLworCQlzd2l0Y2ggKGV4cHJ0eXBlKQorCQl7CisJCQljYXNlIEJPT0xPSUQ6CisJCQlj YXNlIE5VTUVSSUNPSUQ6CisJCQljYXNlIElOVDJPSUQ6CisJCQljYXNlIElOVDRPSUQ6CisJCQlj YXNlIElOVDhPSUQ6CisJCQljYXNlIEZMT0FUNE9JRDoKKwkJCWNhc2UgRkxPQVQ4T0lEOgorCQkJ Y2FzZSBURVhUT0lEOgorCQkJY2FzZSBWQVJDSEFST0lEOgorCQkJY2FzZSBEQVRFT0lEOgorCQkJ Y2FzZSBUSU1FT0lEOgorCQkJY2FzZSBUSU1FVFpPSUQ6CisJCQljYXNlIFRJTUVTVEFNUE9JRDoK KwkJCWNhc2UgVElNRVNUQU1QVFpPSUQ6CisJCQkJcmV0dXJuIGV4cHI7CisKKwkJCWRlZmF1bHQ6 CisJCQkJaWYgKHR5cGNhdGVnb3J5ID09IFRZUENBVEVHT1JZX1NUUklORykKKwkJCQkJcmV0dXJu IGV4cHI7CisJCQkJLyogZWxzZSBjb252ZXJ0IGFyZ3VtZW50IHRvIGpzb25bYl0gdHlwZSAqLwor CQkJCWJyZWFrOworCQl9CisKKwkJZm9ybWF0ID0gZGVmYXVsdF9mb3JtYXQ7CisJfQogCWVsc2Ug aWYgKGV4cHJ0eXBlID09IEpTT05PSUQgfHwgZXhwcnR5cGUgPT0gSlNPTkJPSUQpCiAJCWZvcm1h dCA9IEpTX0ZPUk1BVF9ERUZBVUxUOyAvKiBkbyBub3QgZm9ybWF0IGpzb25bYl0gdHlwZXMgKi8K IAllbHNlCkBAIC0zMjcyLDcgKzMzMjgsMTIgQEAgdHJhbnNmb3JtSnNvblZhbHVlRXhwcihQYXJz ZVN0YXRlICpwc3RhdGUsIGNvbnN0IGNoYXIgKmNvbnN0cnVjdE5hbWUsCiAJCU5vZGUJICAgKmNv ZXJjZWQ7CiAJCWJvb2wJCW9ubHlfYWxsb3dfY2FzdCA9IE9pZElzVmFsaWQodGFyZ2V0dHlwZSk7 CiAKLQkJaWYgKCFvbmx5X2FsbG93X2Nhc3QgJiYKKwkJLyoKKwkJICogUEFTU0lORyBhcmdzIGFy ZSBoYW5kbGVkIGFwcHJvcHJpYXRlbHkgYnkgR2V0SnNvblBhdGhWYXIoKSAvCisJCSAqIEpzb25J dGVtRnJvbURhdHVtKCkuCisJCSAqLworCQlpZiAoIWlzYXJnICYmCisJCQkhb25seV9hbGxvd19j YXN0ICYmCiAJCQlleHBydHlwZSAhPSBCWVRFQU9JRCAmJiB0eXBjYXRlZ29yeSAhPSBUWVBDQVRF R09SWV9TVFJJTkcpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQllcnJjb2RlKEVSUkNPREVfREFU QVRZUEVfTUlTTUFUQ0gpLApAQCAtMzQyNSw2ICszNDg2LDExIEBAIHRyYW5zZm9ybUpzb25PdXRw dXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBKc29uT3V0cHV0ICpvdXRwdXQsCiAJCQkJZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJZXJybXNnKCJyZXR1cm5p bmcgU0VUT0YgdHlwZXMgaXMgbm90IHN1cHBvcnRlZCBpbiBTUUwvSlNPTiBmdW5jdGlvbnMiKSk7 CiAKKwlpZiAoZ2V0X3R5cHR5cGUocmV0LT50eXBpZCkgPT0gVFlQVFlQRV9QU0VVRE8pCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CisJCQkJZXJybXNnKCJyZXR1cm5pbmcgcHNldWRvLXR5cGVzIGlzIG5vdCBzdXBwb3J0ZWQgaW4g U1FML0pTT04gZnVuY3Rpb25zIikpOworCiAJaWYgKHJldC0+Zm9ybWF0LT5mb3JtYXRfdHlwZSA9 PSBKU19GT1JNQVRfREVGQVVMVCkKIAkJLyogYXNzaWduIEpTT05CIGZvcm1hdCB3aGVuIHJldHVy bmluZyBqc29uYiwgb3IgSlNPTiBmb3JtYXQgb3RoZXJ3aXNlICovCiAJCXJldC0+Zm9ybWF0LT5m b3JtYXRfdHlwZSA9CkBAIC0zNjIxLDcgKzM2ODcsNyBAQCB0cmFuc2Zvcm1Kc29uT2JqZWN0Q29u c3RydWN0b3IoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uT2JqZWN0Q29uc3RydWN0b3IgKmN0b3Ip CiAJCQlOb2RlCSAgICp2YWwgPSB0cmFuc2Zvcm1Kc29uVmFsdWVFeHByKHBzdGF0ZSwgIkpTT05f T0JKRUNUKCkiLAogCQkJCQkJCQkJCQkJCSBrdi0+dmFsdWUsCiAJCQkJCQkJCQkJCQkJIEpTX0ZP Uk1BVF9ERUZBVUxULAotCQkJCQkJCQkJCQkJCSBJbnZhbGlkT2lkKTsKKwkJCQkJCQkJCQkJCQkg SW52YWxpZE9pZCwgZmFsc2UpOwogCiAJCQlhcmdzID0gbGFwcGVuZChhcmdzLCBrZXkpOwogCQkJ YXJncyA9IGxhcHBlbmQoYXJncywgdmFsKTsKQEAgLTM4MDgsNyArMzg3NCw3IEBAIHRyYW5zZm9y bUpzb25PYmplY3RBZ2coUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uT2JqZWN0QWdnICphZ2cpCiAJ dmFsID0gdHJhbnNmb3JtSnNvblZhbHVlRXhwcihwc3RhdGUsICJKU09OX09CSkVDVEFHRygpIiwK IAkJCQkJCQkJIGFnZy0+YXJnLT52YWx1ZSwKIAkJCQkJCQkJIEpTX0ZPUk1BVF9ERUZBVUxULAot CQkJCQkJCQkgSW52YWxpZE9pZCk7CisJCQkJCQkJCSBJbnZhbGlkT2lkLCBmYWxzZSk7CiAJYXJn cyA9IGxpc3RfbWFrZTIoa2V5LCB2YWwpOwogCiAJcmV0dXJuaW5nID0gdHJhbnNmb3JtSnNvbkNv bnN0cnVjdG9yT3V0cHV0KHBzdGF0ZSwgYWdnLT5jb25zdHJ1Y3Rvci0+b3V0cHV0LApAQCAtMzg2 NCw5ICszOTMwLDggQEAgdHJhbnNmb3JtSnNvbkFycmF5QWdnKFBhcnNlU3RhdGUgKnBzdGF0ZSwg SnNvbkFycmF5QWdnICphZ2cpCiAJT2lkCQkJYWdnZm5vaWQ7CiAJT2lkCQkJYWdndHlwZTsKIAot CWFyZyA9IHRyYW5zZm9ybUpzb25WYWx1ZUV4cHIocHN0YXRlLCAiSlNPTl9BUlJBWUFHRygpIiwK LQkJCQkJCQkJIGFnZy0+YXJnLAotCQkJCQkJCQkgSlNfRk9STUFUX0RFRkFVTFQsIEludmFsaWRP aWQpOworCWFyZyA9IHRyYW5zZm9ybUpzb25WYWx1ZUV4cHIocHN0YXRlLCAiSlNPTl9BUlJBWUFH RygpIiwgYWdnLT5hcmcsCisJCQkJCQkJCSBKU19GT1JNQVRfREVGQVVMVCwgSW52YWxpZE9pZCwg ZmFsc2UpOwogCiAJcmV0dXJuaW5nID0gdHJhbnNmb3JtSnNvbkNvbnN0cnVjdG9yT3V0cHV0KHBz dGF0ZSwgYWdnLT5jb25zdHJ1Y3Rvci0+b3V0cHV0LAogCQkJCQkJCQkJCQkgICBsaXN0X21ha2Ux KGFyZykpOwpAQCAtMzkxMyw5ICszOTc4LDggQEAgdHJhbnNmb3JtSnNvbkFycmF5Q29uc3RydWN0 b3IoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uQXJyYXlDb25zdHJ1Y3RvciAqY3RvcikKIAkJewog CQkJSnNvblZhbHVlRXhwciAqanN2YWwgPSBjYXN0Tm9kZShKc29uVmFsdWVFeHByLCBsZmlyc3Qo bGMpKTsKIAkJCU5vZGUJICAgKnZhbCA9IHRyYW5zZm9ybUpzb25WYWx1ZUV4cHIocHN0YXRlLCAi SlNPTl9BUlJBWSgpIiwKLQkJCQkJCQkJCQkJCQkganN2YWwsCi0JCQkJCQkJCQkJCQkJIEpTX0ZP Uk1BVF9ERUZBVUxULAotCQkJCQkJCQkJCQkJCSBJbnZhbGlkT2lkKTsKKwkJCQkJCQkJCQkJCQkg anN2YWwsIEpTX0ZPUk1BVF9ERUZBVUxULAorCQkJCQkJCQkJCQkJCSBJbnZhbGlkT2lkLCBmYWxz ZSk7CiAKIAkJCWFyZ3MgPSBsYXBwZW5kKGFyZ3MsIHZhbCk7CiAJCX0KQEAgLTQwNzQsNyArNDEz OCw3IEBAIHRyYW5zZm9ybUpzb25QYXJzZUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uUGFy c2VFeHByICpqc2V4cHIpCiAJCSAqIGZ1bmN0aW9uLWxpa2UgQ0FTVHMuCiAJCSAqLwogCQlhcmcg PSB0cmFuc2Zvcm1Kc29uVmFsdWVFeHByKHBzdGF0ZSwgIkpTT04oKSIsIGpzZXhwci0+ZXhwciwK LQkJCQkJCQkJCSBKU19GT1JNQVRfSlNPTiwgcmV0dXJuaW5nLT50eXBpZCk7CisJCQkJCQkJCQkg SlNfRk9STUFUX0pTT04sIHJldHVybmluZy0+dHlwaWQsIGZhbHNlKTsKIAl9CiAKIAlyZXR1cm4g bWFrZUpzb25Db25zdHJ1Y3RvckV4cHIocHN0YXRlLCBKU0NUT1JfSlNPTl9QQVJTRSwgbGlzdF9t YWtlMShhcmcpLCBOVUxMLApAQCAtNDExOSw3ICs0MTgzLDcgQEAgdHJhbnNmb3JtSnNvblNlcmlh bGl6ZUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uU2VyaWFsaXplRXhwciAqZXhwcikKIAlO b2RlCSAgICphcmcgPSB0cmFuc2Zvcm1Kc29uVmFsdWVFeHByKHBzdGF0ZSwgIkpTT05fU0VSSUFM SVpFKCkiLAogCQkJCQkJCQkJCQkgZXhwci0+ZXhwciwKIAkJCQkJCQkJCQkJIEpTX0ZPUk1BVF9K U09OLAotCQkJCQkJCQkJCQkgSW52YWxpZE9pZCk7CisJCQkJCQkJCQkJCSBJbnZhbGlkT2lkLCBm YWxzZSk7CiAKIAlpZiAoZXhwci0+b3V0cHV0KQogCXsKQEAgLTQxNTMsMyArNDIxNyw1MjYgQEAg dHJhbnNmb3JtSnNvblNlcmlhbGl6ZUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uU2VyaWFs aXplRXhwciAqZXhwcikKIAlyZXR1cm4gbWFrZUpzb25Db25zdHJ1Y3RvckV4cHIocHN0YXRlLCBK U0NUT1JfSlNPTl9TRVJJQUxJWkUsIGxpc3RfbWFrZTEoYXJnKSwKIAkJCQkJCQkJICAgTlVMTCwg cmV0dXJuaW5nLCBmYWxzZSwgZmFsc2UsIGV4cHItPmxvY2F0aW9uKTsKIH0KKworLyoKKyAqIFRy YW5zZm9ybSBKU09OX1ZBTFVFLCBKU09OX1FVRVJZLCBKU09OX0VYSVNUUyBmdW5jdGlvbnMgaW50 byBhIEpzb25FeHByIG5vZGUuCisgKi8KK3N0YXRpYyBOb2RlICoKK3RyYW5zZm9ybUpzb25GdW5j RXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25GdW5jRXhwciAqZnVuYykKK3sKKwlKc29uRXhw ciAgICpqc2V4cHIgPSBOVUxMOworCWNvbnN0IGNoYXIgKmZ1bmNfbmFtZSA9IE5VTEw7CisKKwlz d2l0Y2ggKGZ1bmMtPm9wKQorCXsKKwkJY2FzZSBKU09OX0VYSVNUU19PUDoKKwkJCWZ1bmNfbmFt ZSA9ICJKU09OX0VYSVNUUyI7CisJCQlicmVhazsKKwkJY2FzZSBKU09OX1FVRVJZX09QOgorCQkJ ZnVuY19uYW1lID0gIkpTT05fUVVFUlkiOworCQkJYnJlYWs7CisJCWNhc2UgSlNPTl9WQUxVRV9P UDoKKwkJCWZ1bmNfbmFtZSA9ICJKU09OX1ZBTFVFIjsKKwkJCWJyZWFrOworCQlkZWZhdWx0Ogor CQkJZWxvZyhFUlJPUiwgImludmFsaWQgSnNvbkZ1bmNFeHByIG9wIik7CisJCQlicmVhazsKKwl9 CisKKwkvKiBPbmx5IGFsbG93IEZPUk1BVCBzcGVjaWZpY2F0aW9uIGZvciBKU09OX1FVRVJZKCku ICovCisJaWYgKGZ1bmMtPm91dHB1dCAmJiBmdW5jLT5vcCAhPSBKU09OX1FVRVJZX09QKQorCXsK KwkJSnNvbkZvcm1hdCAqZm9ybWF0ID0gZnVuYy0+b3V0cHV0LT5yZXR1cm5pbmctPmZvcm1hdDsK KworCQlpZiAoZm9ybWF0LT5mb3JtYXRfdHlwZSAhPSBKU19GT1JNQVRfREVGQVVMVCB8fAorCQkJ Zm9ybWF0LT5lbmNvZGluZyAhPSBKU19FTkNfREVGQVVMVCkKKwkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQllcnJtc2coImNhbm5vdCBz cGVjaWZ5IEZPUk1BVCBpbiBSRVRVUk5JTkcgY2xhdXNlIG9mICVzKCkiLAorCQkJCQkJICAgZnVu Y19uYW1lKSwKKwkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZm9ybWF0LT5sb2NhdGlv bikpOworCX0KKworCWlmIChmdW5jLT5vcCA9PSBKU09OX1FVRVJZX09QICYmCisJCWZ1bmMtPnF1 b3RlcyAhPSBKU19RVU9URVNfVU5TUEVDICYmCisJCShmdW5jLT53cmFwcGVyID09IEpTV19DT05E SVRJT05BTCB8fAorCQkgZnVuYy0+d3JhcHBlciA9PSBKU1dfVU5DT05ESVRJT05BTCkpCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJZXJy bXNnKCJTUUwvSlNPTiBRVU9URVMgYmVoYXZpb3IgbXVzdCBub3QgYmUgc3BlY2lmaWVkIHdoZW4g V0lUSCBXUkFQUEVSIGlzIHVzZWQiKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBm dW5jLT5sb2NhdGlvbikpOworCisKKwlqc2V4cHIgPSB0cmFuc2Zvcm1Kc29uRXhwckNvbW1vbihw c3RhdGUsIGZ1bmMsIGZ1bmNfbmFtZSk7CisKKwlzd2l0Y2ggKGZ1bmMtPm9wKQorCXsKKwkJY2Fz ZSBKU09OX0VYSVNUU19PUDoKKwkJCWlmICghT2lkSXNWYWxpZChqc2V4cHItPnJldHVybmluZy0+ dHlwaWQpKQorCQkJeworCQkJCWpzZXhwci0+cmV0dXJuaW5nLT50eXBpZCA9IEJPT0xPSUQ7CisJ CQkJanNleHByLT5yZXR1cm5pbmctPnR5cG1vZCA9IC0xOworCQkJfQorCisJCQlqc2V4cHItPm9u X2Vycm9yID0gdHJhbnNmb3JtSnNvbkJlaGF2aW9yKHBzdGF0ZSwgZnVuYy0+b25fZXJyb3IsCisJ CQkJCQkJCQkJCQkJIEpTT05fQkVIQVZJT1JfRkFMU0UsCisJCQkJCQkJCQkJCQkJIGpzZXhwci0+ cmV0dXJuaW5nKTsKKwkJCWJyZWFrOworCisJCWNhc2UgSlNPTl9RVUVSWV9PUDoKKwkJCWpzZXhw ci0+d3JhcHBlciA9IGZ1bmMtPndyYXBwZXI7CisKKwkJCS8qCisJCQkgKiBLZWVwIHF1b3RlcyBi eSBkZWZhdWx0LCBvbWl0dGluZyB0aGVtIG9ubHkgaWYgT01JVCBRVU9URVMgaXMKKwkJCSAqIHNw ZWNpZmllZC4KKwkJCSAqLworCQkJanNleHByLT5vbWl0X3F1b3RlcyA9IChmdW5jLT5xdW90ZXMg PT0gSlNfUVVPVEVTX09NSVQpOworCisJCQlpZiAoIU9pZElzVmFsaWQoanNleHByLT5yZXR1cm5p bmctPnR5cGlkKSkKKwkJCXsKKwkJCQlKc29uUmV0dXJuaW5nICpyZXQgPSBqc2V4cHItPnJldHVy bmluZzsKKworCQkJCXJldC0+dHlwaWQgPSBKc29uRnVuY0V4cHJEZWZhdWx0UmV0dXJuVHlwZShq c2V4cHIpOworCQkJCXJldC0+dHlwbW9kID0gLTE7CisJCQl9CisJCQlqc2V4cHItPnJlc3VsdF9j b2VyY2lvbiA9IGNvZXJjZUpzb25GdW5jRXhwck91dHB1dChwc3RhdGUsIGpzZXhwcik7CisKKwkJ CWlmIChmdW5jLT5vbl9lbXB0eSkKKwkJCQlqc2V4cHItPm9uX2VtcHR5ID0gdHJhbnNmb3JtSnNv bkJlaGF2aW9yKHBzdGF0ZSwKKwkJCQkJCQkJCQkJCQkJIGZ1bmMtPm9uX2VtcHR5LAorCQkJCQkJ CQkJCQkJCQkgSlNPTl9CRUhBVklPUl9OVUxMLAorCQkJCQkJCQkJCQkJCQkganNleHByLT5yZXR1 cm5pbmcpOworCQkJanNleHByLT5vbl9lcnJvciA9IHRyYW5zZm9ybUpzb25CZWhhdmlvcihwc3Rh dGUsIGZ1bmMtPm9uX2Vycm9yLAorCQkJCQkJCQkJCQkJCSBKU09OX0JFSEFWSU9SX05VTEwsCisJ CQkJCQkJCQkJCQkJIGpzZXhwci0+cmV0dXJuaW5nKTsKKwkJCWJyZWFrOworCisJCWNhc2UgSlNP Tl9WQUxVRV9PUDoKKwkJCWlmICghT2lkSXNWYWxpZChqc2V4cHItPnJldHVybmluZy0+dHlwaWQp KQorCQkJeworCQkJCS8qIE1ha2UgSlNPTl9WQUxVRSByZXR1cm4gdGV4dCBieSBkZWZhdWx0ICov CisJCQkJanNleHByLT5yZXR1cm5pbmctPnR5cGlkID0gVEVYVE9JRDsKKwkJCQlqc2V4cHItPnJl dHVybmluZy0+dHlwbW9kID0gLTE7CisJCQl9CisJCQlqc2V4cHItPnJlc3VsdF9jb2VyY2lvbiA9 IGNvZXJjZUpzb25GdW5jRXhwck91dHB1dChwc3RhdGUsIGpzZXhwcik7CisKKwkJCS8qCisJCQkg KiBJbml0aWFsaXplIGV4cHJlc3Npb25zIHRvIGNvZXJjZSB0aGUgc2NhbGFyIHZhbHVlIHJldHVy bmVkIGJ5CisJCQkgKiBKc29uUGF0aFZhbHVlKCkgdG8gdGhlICJyZXR1cm5pbmciIHR5cGUuCisJ CQkgKi8KKwkJCWlmIChqc2V4cHItPnJlc3VsdF9jb2VyY2lvbikKKwkJCQlqc2V4cHItPml0ZW1f Y29lcmNpb25zID0KKwkJCQkJSW5pdEpzb25JdGVtQ29lcmNpb25zKHBzdGF0ZSwganNleHByLT5y ZXR1cm5pbmcsCisJCQkJCQkJCQkJICBleHByVHlwZShqc2V4cHItPmZvcm1hdHRlZF9leHByKSk7 CisKKwkJCWlmIChmdW5jLT5vbl9lbXB0eSkKKwkJCQlqc2V4cHItPm9uX2VtcHR5ID0gdHJhbnNm b3JtSnNvbkJlaGF2aW9yKHBzdGF0ZSwKKwkJCQkJCQkJCQkJCQkJIGZ1bmMtPm9uX2VtcHR5LAor CQkJCQkJCQkJCQkJCQkgSlNPTl9CRUhBVklPUl9OVUxMLAorCQkJCQkJCQkJCQkJCQkganNleHBy LT5yZXR1cm5pbmcpOworCQkJanNleHByLT5vbl9lcnJvciA9IHRyYW5zZm9ybUpzb25CZWhhdmlv cihwc3RhdGUsIGZ1bmMtPm9uX2Vycm9yLAorCQkJCQkJCQkJCQkJCSBKU09OX0JFSEFWSU9SX05V TEwsCisJCQkJCQkJCQkJCQkJIGpzZXhwci0+cmV0dXJuaW5nKTsKKwkJCWJyZWFrOworCisJCWRl ZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBKc29uRnVuY0V4cHIgb3AiKTsKKwkJCWJy ZWFrOworCX0KKworCXJldHVybiAoTm9kZSAqKSBqc2V4cHI7Cit9CisKKy8qCisgKiBDb21tb24g Y29kZSBmb3IgSlNPTl9WQUxVRSwgSlNPTl9RVUVSWSwgSlNPTl9FWElTVFMgdHJhbnNmb3JtYXRp b24KKyAqIGludG8gYSBKc29uRXhwciBub2RlLgorICovCitzdGF0aWMgSnNvbkV4cHIgKgordHJh bnNmb3JtSnNvbkV4cHJDb21tb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uRnVuY0V4cHIgKmZ1 bmMsCisJCQkJCQljb25zdCBjaGFyICpjb25zdHJ1Y3ROYW1lKQoreworCUpzb25FeHByICAgKmpz ZXhwciA9IG1ha2VOb2RlKEpzb25FeHByKTsKKwlOb2RlCSAgICpwYXRoc3BlYzsKKworCWpzZXhw ci0+bG9jYXRpb24gPSBmdW5jLT5sb2NhdGlvbjsKKwlqc2V4cHItPm9wID0gZnVuYy0+b3A7CisJ anNleHByLT5mb3JtYXR0ZWRfZXhwciA9IHRyYW5zZm9ybUpzb25WYWx1ZUV4cHIocHN0YXRlLCBj b25zdHJ1Y3ROYW1lLAorCQkJCQkJCQkJCQkJCWZ1bmMtPmNvbnRleHRfaXRlbSwKKwkJCQkJCQkJ CQkJCQlKU19GT1JNQVRfSlNPTiwKKwkJCQkJCQkJCQkJCQlJbnZhbGlkT2lkLCBmYWxzZSk7CisK KwlpZiAoZXhwclR5cGUoanNleHByLT5mb3JtYXR0ZWRfZXhwcikgIT0gSlNPTkJPSUQpCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CisJCQkJZXJybXNnKCIlcygpIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIHRoZSBqc29uIHR5 cGUiLAorCQkJCQkgICBjb25zdHJ1Y3ROYW1lKSwKKwkJCQllcnJoaW50KCJUcnkgY2FzdGluZyB0 aGUgYXJndW1lbnQgdG8ganNvbmIiKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBl eHByTG9jYXRpb24oanNleHByLT5mb3JtYXR0ZWRfZXhwcikpKTsKKworCWpzZXhwci0+Zm9ybWF0 ID0gZnVuYy0+Y29udGV4dF9pdGVtLT5mb3JtYXQ7CisKKwkvKiBCb3RoIHNldCBpbiB0aGUgY2Fs bGVyLiAqLworCWpzZXhwci0+cmVzdWx0X2NvZXJjaW9uID0gTlVMTDsKKwlqc2V4cHItPm9taXRf cXVvdGVzID0gZmFsc2U7CisKKwlwYXRoc3BlYyA9IHRyYW5zZm9ybUV4cHJSZWN1cnNlKHBzdGF0 ZSwgZnVuYy0+cGF0aHNwZWMpOworCisJanNleHByLT5wYXRoX3NwZWMgPQorCQljb2VyY2VfdG9f dGFyZ2V0X3R5cGUocHN0YXRlLCBwYXRoc3BlYywgZXhwclR5cGUocGF0aHNwZWMpLAorCQkJCQkJ CSAgSlNPTlBBVEhPSUQsIC0xLAorCQkJCQkJCSAgQ09FUkNJT05fRVhQTElDSVQsIENPRVJDRV9J TVBMSUNJVF9DQVNULAorCQkJCQkJCSAgZXhwckxvY2F0aW9uKHBhdGhzcGVjKSk7CisJaWYgKCFq c2V4cHItPnBhdGhfc3BlYykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkgZXJybXNnKCJKU09OIHBhdGggZXhwcmVzc2lvbiBt dXN0IGJlIG9mIHR5cGUgJXMsIG5vdCBvZiB0eXBlICVzIiwKKwkJCQkJCSJqc29ucGF0aCIsIGZv cm1hdF90eXBlX2JlKGV4cHJUeXBlKHBhdGhzcGVjKSkpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRp b24ocHN0YXRlLCBleHByTG9jYXRpb24ocGF0aHNwZWMpKSkpOworCisJLyoKKwkgKiBUcmFuc2Zv cm0gYW5kIGNvZXJjZSB0byBqc29uW2JdIHBhc3NpbmcgYXJndW1lbnRzLCB3aG9zZSBmb3JtYXQg aXMKKwkgKiBkZXRlcm1pbmVkIGJ5IGNvbnRleHQgaXRlbSB0eXBlLgorCSAqLworCXRyYW5zZm9y bUpzb25QYXNzaW5nQXJncyhwc3RhdGUsIGNvbnN0cnVjdE5hbWUsCisJCQkJCQkJIGV4cHJUeXBl KGpzZXhwci0+Zm9ybWF0dGVkX2V4cHIpID09IEpTT05CT0lEID8KKwkJCQkJCQkgSlNfRk9STUFU X0pTT05CIDogSlNfRk9STUFUX0pTT04sCisJCQkJCQkJIGZ1bmMtPnBhc3NpbmcsCisJCQkJCQkJ ICZqc2V4cHItPnBhc3NpbmdfdmFsdWVzLAorCQkJCQkJCSAmanNleHByLT5wYXNzaW5nX25hbWVz KTsKKworCWpzZXhwci0+cmV0dXJuaW5nID0gdHJhbnNmb3JtSnNvbk91dHB1dChwc3RhdGUsIGZ1 bmMtPm91dHB1dCwgZmFsc2UpOworCisJLyogSlNPTl9RVUVSWSBzdXBwb3J0cyBzcGVjaWZ5aW5n IEZPUk1BVCBleHBsaWNpdGx5LiAqLworCWlmIChmdW5jLT5vcCAhPSBKU09OX1FVRVJZX09QKQor CXsKKwkJanNleHByLT5yZXR1cm5pbmctPmZvcm1hdC0+Zm9ybWF0X3R5cGUgPSBKU19GT1JNQVRf REVGQVVMVDsKKwkJanNleHByLT5yZXR1cm5pbmctPmZvcm1hdC0+ZW5jb2RpbmcgPSBKU19FTkNf REVGQVVMVDsKKwl9CisKKwlyZXR1cm4ganNleHByOworfQorCisvKgorICogVHJhbnNmb3JtIGEg SlNPTiBQQVNTSU5HIGNsYXVzZS4KKyAqLworc3RhdGljIHZvaWQKK3RyYW5zZm9ybUpzb25QYXNz aW5nQXJncyhQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IGNoYXIgKmNvbnN0cnVjdE5hbWUsCisJ CQkJCQkgSnNvbkZvcm1hdFR5cGUgZm9ybWF0LCBMaXN0ICphcmdzLAorCQkJCQkJIExpc3QgKipw YXNzaW5nX3ZhbHVlcywgTGlzdCAqKnBhc3NpbmdfbmFtZXMpCit7CisJTGlzdENlbGwgICAqbGM7 CisKKwkqcGFzc2luZ192YWx1ZXMgPSBOSUw7CisJKnBhc3NpbmdfbmFtZXMgPSBOSUw7CisKKwlm b3JlYWNoKGxjLCBhcmdzKQorCXsKKwkJSnNvbkFyZ3VtZW50ICphcmcgPSBjYXN0Tm9kZShKc29u QXJndW1lbnQsIGxmaXJzdChsYykpOworCQlOb2RlCSAgICpleHByID0gdHJhbnNmb3JtSnNvblZh bHVlRXhwcihwc3RhdGUsIGNvbnN0cnVjdE5hbWUsCisJCQkJCQkJCQkJCQkgIGFyZy0+dmFsLCBm b3JtYXQsCisJCQkJCQkJCQkJCQkgIEludmFsaWRPaWQsIHRydWUpOworCisJCSpwYXNzaW5nX3Zh bHVlcyA9IGxhcHBlbmQoKnBhc3NpbmdfdmFsdWVzLCBleHByKTsKKwkJKnBhc3NpbmdfbmFtZXMg PSBsYXBwZW5kKCpwYXNzaW5nX25hbWVzLCBtYWtlU3RyaW5nKGFyZy0+bmFtZSkpOworCX0KK30K KworLyoKKyAqIENyZWF0ZSBhbiBleHByZXNzaW9uIHRvIGNvZXJjZSB0aGUgb3V0cHV0IG9mIEpT T05fVkFMVUUoKSAvIEpTT05fUVVFUlkoKQorICogdG8gdGhlIG91dHB1dCB0eXBlLCBpZiBuZWVk ZWQuCisgKi8KK3N0YXRpYyBOb2RlICoKK2NvZXJjZUpzb25GdW5jRXhwck91dHB1dChQYXJzZVN0 YXRlICpwc3RhdGUsIEpzb25FeHByICpqc2V4cHIpCit7CisJSnNvblJldHVybmluZyAqcmV0dXJu aW5nID0ganNleHByLT5yZXR1cm5pbmc7CisJTm9kZQkgICAqY29udGV4dF9pdGVtID0ganNleHBy LT5mb3JtYXR0ZWRfZXhwcjsKKwlpbnQJCQlkZWZhdWx0X3R5cG1vZDsKKwlPaWQJCQlkZWZhdWx0 X3R5cGlkOworCisJQXNzZXJ0KHJldHVybmluZyk7CisKKwkvKgorCSAqIFVzZSBhIEpzb25Db2Vy Y2lvbiBub2RlIHRvIGltcGxlbWVudCBhIG5vbi1kZWZhdWx0IFFVT1RFUyBvciBXUkFQUEVSCisJ ICogYmVoYXZpb3IuCisJICovCisJaWYgKGpzZXhwci0+b21pdF9xdW90ZXMgfHwganNleHByLT53 cmFwcGVyICE9IEpTV19VTlNQRUMpCisJeworCQlKc29uQ29lcmNpb24gKmNvZXJjaW9uID0gbWFr ZUpzb25Db2VyY2lvbihyZXR1cm5pbmcpOworCisJCWNvZXJjaW9uLT5vbWl0X3F1b3RlcyA9IGpz ZXhwci0+b21pdF9xdW90ZXM7CisKKwkJcmV0dXJuIChOb2RlICopIGNvZXJjaW9uOworCX0KKwor CWRlZmF1bHRfdHlwaWQgPSBKc29uRnVuY0V4cHJEZWZhdWx0UmV0dXJuVHlwZShqc2V4cHIpOwor CWRlZmF1bHRfdHlwbW9kID0gLTE7CisJaWYgKHJldHVybmluZy0+dHlwaWQgIT0gZGVmYXVsdF90 eXBpZCB8fAorCQlyZXR1cm5pbmctPnR5cG1vZCAhPSBkZWZhdWx0X3R5cG1vZCkKKwl7CisJCS8q CisJCSAqIFdlIGFidXNlIENhc2VUZXN0RXhwciBoZXJlIGFzIHBsYWNlaG9sZGVyIHRvIHBhc3Mg dGhlIHJlc3VsdCBvZgorCQkgKiBldmFsdWF0aW5nIHRoZSBKU09OX1ZBTFVFL1FVRVJZIGpzb25w YXRoIGV4cHJlc3Npb24gYXMgaW5wdXQgdG8gdGhlCisJCSAqIGNvZXJjaW9uIGV4cHJlc3Npb24u CisJCSAqLworCQlDYXNlVGVzdEV4cHIgKnBsYWNlaG9sZGVyID0gbWFrZU5vZGUoQ2FzZVRlc3RF eHByKTsKKworCQlwbGFjZWhvbGRlci0+dHlwZUlkID0gZXhwclR5cGUoY29udGV4dF9pdGVtKTsK KwkJcGxhY2Vob2xkZXItPnR5cGVNb2QgPSBleHByVHlwbW9kKGNvbnRleHRfaXRlbSk7CisJCXBs YWNlaG9sZGVyLT5jb2xsYXRpb24gPSBleHByQ29sbGF0aW9uKGNvbnRleHRfaXRlbSk7CisKKwkJ QXNzZXJ0KHBsYWNlaG9sZGVyLT50eXBlSWQgPT0gZGVmYXVsdF90eXBpZCk7CisJCUFzc2VydChw bGFjZWhvbGRlci0+dHlwZU1vZCA9PSBkZWZhdWx0X3R5cG1vZCk7CisKKwkJcmV0dXJuIGNvZXJj ZUpzb25FeHByKHBzdGF0ZSwgKE5vZGUgKikgcGxhY2Vob2xkZXIsIHJldHVybmluZyk7CisJfQor CisJcmV0dXJuIE5VTEw7Cit9CisKKy8qIFJldHVybnMgdGhlIGRlZmF1bHQgdHlwZSBmb3IgYSBn aXZlbiBKc29uRXhwciBmb3IgYSBnaXZlbiBKc29uRm9ybWF0LiAqLworc3RhdGljIE9pZAorSnNv bkZ1bmNFeHByRGVmYXVsdFJldHVyblR5cGUoSnNvbkV4cHIgKmpzZXhwcikKK3sKKwlKc29uRm9y bWF0ICpmb3JtYXQgPSBqc2V4cHItPmZvcm1hdDsKKwlOb2RlCSAgICpjb250ZXh0X2l0ZW0gPSBq c2V4cHItPmZvcm1hdHRlZF9leHByOworCisJQXNzZXJ0KGZvcm1hdCk7CisJaWYgKGZvcm1hdC0+ Zm9ybWF0X3R5cGUgPT0gSlNfRk9STUFUX0pTT05CKQorCQlyZXR1cm4gSlNPTkJPSUQ7CisJZWxz ZSBpZiAoZm9ybWF0LT5mb3JtYXRfdHlwZSA9PSBKU19GT1JNQVRfREVGQVVMVCAmJgorCQkJIGV4 cHJUeXBlKGNvbnRleHRfaXRlbSkgPT0gSlNPTkJPSUQpCisJCXJldHVybiBKU09OQk9JRDsKKwor CXJldHVybiBKU09OT0lEOworfQorCisvKgorICogUmV0dXJucyBhIEpzb25Db2VyY2lvbiBub2Rl IHRvIGNvZXJjZSBhIGpzb25iLXZhbHVlZCBleHByZXNzaW9uIHRvIHRoZQorICogdGFyZ2V0IHR5 cGUgZ2l2ZW4gYnkgJ3JldHVybmluZycgdXNpbmcgZWl0aGVyIGpzb25fcG9wdWxhdGVfdHlwZSgp IG9yCisgKiBieSB1c2luZyB0aGUgdGFyZ2V0IHR5cGUncyBpbnB1dCBmdW5jdGlvbi4KKyAqLwor c3RhdGljIEpzb25Db2VyY2lvbiAqCittYWtlSnNvbkNvZXJjaW9uKGNvbnN0IEpzb25SZXR1cm5p bmcgKnJldHVybmluZykKK3sKKwlKc29uQ29lcmNpb24gKmNvZXJjaW9uID0gbWFrZU5vZGUoSnNv bkNvZXJjaW9uKTsKKworCWNvZXJjaW9uLT50YXJnZXR0eXBlID0gcmV0dXJuaW5nLT50eXBpZDsK Kwljb2VyY2lvbi0+dGFyZ2V0dHlwbW9kID0gcmV0dXJuaW5nLT50eXBtb2Q7CisKKwlyZXR1cm4g Y29lcmNpb247Cit9CisKKy8qCisgKiBTZXQgdXAgYSBKc29uQ29lcmNpb24gbm9kZSB0bzoKKyAq CisgKiAJLSBjb2VyY2UgZXhwcmVzc2lvbiB0byB0aGUgb3V0cHV0IHJldHVybmluZyB0eXBlLCBv cgorICogCS0gY29lcmNlIHVzaW5nIGpzb25fcG9wdWxhdGVfdHlwZSgpIGlmIHJldHVybmluZyB0 eXBlIHJlcXVpcmVzIGl0LCBvcgorICogCS0gY29lcmNlIHZpYSBJL08uCisgKi8KK3N0YXRpYyBO b2RlICoKK2NvZXJjZUpzb25FeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwciwgY29u c3QgSnNvblJldHVybmluZyAqcmV0dXJuaW5nKQoreworCU5vZGUJICAgKmNvZXJjZWRfZXhwcjsK KworCWNvZXJjZWRfZXhwciA9IGNvZXJjZUpzb25GdW5jRXhwcihwc3RhdGUsIGV4cHIsIHJldHVy bmluZywgZmFsc2UpOworCWlmIChjb2VyY2VkX2V4cHIpCisJeworCQlpZiAoY29lcmNlZF9leHBy ID09IGV4cHIpCisJCQlyZXR1cm4gTlVMTDsKKwkJcmV0dXJuIGNvZXJjZWRfZXhwcjsKKwl9CisK KwlyZXR1cm4gKE5vZGUgKikgbWFrZUpzb25Db2VyY2lvbihyZXR1cm5pbmcpOworfQorCisvKgor ICogSW5pdGlhbGl6ZSBKc29uQ29lcmNpb24gbm9kZXMgZm9yIGNvZXJjaW5nIGEgZ2l2ZW4gSlNP TiBpdGVtIHZhbHVlIHByb2R1Y2VkCisgKiBieSBKU09OX1ZBTFVFIHRvIHRoZSB0YXJnZXQgInJl dHVybmluZyIgdHlwZTsgYWxzbyBzZWUKKyAqIEV4ZWNQcmVwYXJlSnNvbkl0ZW1Db2VyY2lvbigp LgorICovCitzdGF0aWMgTGlzdCAqCitJbml0SnNvbkl0ZW1Db2VyY2lvbnMoUGFyc2VTdGF0ZSAq cHN0YXRlLCBjb25zdCBKc29uUmV0dXJuaW5nICpyZXR1cm5pbmcsCisJCQkJCSAgT2lkIGNvbnRl eHRJdGVtVHlwZUlkKQoreworCUxpc3QJICAgKml0ZW1fY29lcmNpb25zID0gTklMOworCWludAkJ CWk7CisJT2lkCQkJdHlwZW9pZDsKKwlzdHJ1Y3QKKwl7CisJCUpzb25JdGVtVHlwZSBpdGVtX3R5 cGU7CisJCU9pZAkJCXR5cGVvaWQ7CisJfQkJCWl0ZW1fdHlwZXNbXSA9CisJeworCQl7SnNvbkl0 ZW1UeXBlTnVsbCwgVU5LTk9XTk9JRH0sCisJCXtKc29uSXRlbVR5cGVTdHJpbmcsIFRFWFRPSUR9 LAorCQl7SnNvbkl0ZW1UeXBlTnVtZXJpYywgTlVNRVJJQ09JRH0sCisJCXtKc29uSXRlbVR5cGVC b29sZWFuLCBCT09MT0lEfSwKKwkJe0pzb25JdGVtVHlwZURhdGUsIERBVEVPSUR9LAorCQl7SnNv bkl0ZW1UeXBlVGltZSwgVElNRU9JRH0sCisJCXtKc29uSXRlbVR5cGVUaW1ldHosIFRJTUVUWk9J RH0sCisJCXtKc29uSXRlbVR5cGVUaW1lc3RhbXAsIFRJTUVTVEFNUE9JRH0sCisJCXtKc29uSXRl bVR5cGVUaW1lc3RhbXB0eiwgVElNRVNUQU1QVFpPSUR9LAorCQl7SnNvbkl0ZW1UeXBlQ29tcG9z aXRlLCBjb250ZXh0SXRlbVR5cGVJZH0sCisJCXtKc29uSXRlbVR5cGVJbnZhbGlkLCBJbnZhbGlk T2lkfQorCX07CisKKwlmb3IgKGkgPSAwOyBPaWRJc1ZhbGlkKHR5cGVvaWQgPSBpdGVtX3R5cGVz W2ldLnR5cGVvaWQpOyBpKyspCisJeworCQlOb2RlCSAgICpleHByOworCQlKc29uSXRlbUNvZXJj aW9uICppdGVtX2NvZXJjaW9uID0gbWFrZU5vZGUoSnNvbkl0ZW1Db2VyY2lvbik7CisKKwkJaWYg KHR5cGVvaWQgPT0gVU5LTk9XTk9JRCkKKwkJeworCQkJZXhwciA9IChOb2RlICopIG1ha2VOdWxs Q29uc3QoVU5LTk9XTk9JRCwgLTEsIEludmFsaWRPaWQpOworCQl9CisJCWVsc2UKKwkJeworCQkJ Q2FzZVRlc3RFeHByICpwbGFjZWhvbGRlciA9IG1ha2VOb2RlKENhc2VUZXN0RXhwcik7CisKKwkJ CS8qCisJCQkgKiBXZSBhYnVzZSBDYXNlVGVzdEV4cHIgaGVyZSBhcyBwbGFjZWhvbGRlciB0byBw YXNzIHRoZSByZXN1bHQgb2YKKwkJCSAqIEpTT05fVkFMVUUganNvbnBhdGggZXhwcmVzc2lvbiB0 byB0aGUgY29lcmNpb24gZnVuY3Rpb24uCisJCQkgKi8KKwkJCXBsYWNlaG9sZGVyLT50eXBlSWQg PSBpdGVtX3R5cGVzW2ldLnR5cGVvaWQ7CisJCQlwbGFjZWhvbGRlci0+dHlwZU1vZCA9IC0xOwor CQkJcGxhY2Vob2xkZXItPmNvbGxhdGlvbiA9IEludmFsaWRPaWQ7CisKKwkJCWV4cHIgPSAoTm9k ZSAqKSBwbGFjZWhvbGRlcjsKKwkJfQorCisJCWl0ZW1fY29lcmNpb24tPml0ZW1fdHlwZSA9IGl0 ZW1fdHlwZXNbaV0uaXRlbV90eXBlOworCQlpdGVtX2NvZXJjaW9uLT5jb2VyY2lvbiA9IGNvZXJj ZUpzb25FeHByKHBzdGF0ZSwgZXhwciwgcmV0dXJuaW5nKTsKKwkJaXRlbV9jb2VyY2lvbnMgPSBs YXBwZW5kKGl0ZW1fY29lcmNpb25zLCBpdGVtX2NvZXJjaW9uKTsKKwl9CisKKwlyZXR1cm4gaXRl bV9jb2VyY2lvbnM7Cit9CisKKy8qCisgKiBSZXR1cm5zIGNvbnN0YW50IHZhbHVlcyB0byBiZSBy ZXR1cm5lZCB0byB0aGUgdXNlciBmb3IgdmFyaW91cworICogbm9uLUVSUk9SIE9OIEVSUk9SL0VN UFRZIGJlaGF2aW9ycy4KKyAqCisgKiBOb3RlIHRoYXQgSlNPTl9CRUhBVklPUl9ERUZBVUxUIGV4 cHJlc3Npb24gaXMgaGFuZGxlZCBieSB0aGUKKyAqIGNhbGxlciBzZXBhcmF0ZWx5LgorICovCitz dGF0aWMgTm9kZSAqCitHZXRKc29uQmVoYXZpb3JDb25zdEV4cHIoSnNvbkJlaGF2aW9yVHlwZSBi dHlwZSwgaW50IGxvY2F0aW9uKQoreworCURhdHVtCQl2YWwgPSAoRGF0dW0pIDA7CisJT2lkCQkJ dHlwaWQgPSBKU09OQk9JRDsKKwlpbnQJCQlsZW4gPSAtMTsKKwlib29sCQlpc2J5dmFsID0gZmFs c2U7CisJYm9vbAkJaXNudWxsID0gZmFsc2U7CisJQ29uc3QJICAgKmNvbjsKKworCXN3aXRjaCAo YnR5cGUpCisJeworCQljYXNlIEpTT05fQkVIQVZJT1JfRU1QVFlfQVJSQVk6CisJCQl2YWwgPSBE aXJlY3RGdW5jdGlvbkNhbGwxKGpzb25iX2luLCBDU3RyaW5nR2V0RGF0dW0oIltdIikpOworCQkJ YnJlYWs7CisKKwkJY2FzZSBKU09OX0JFSEFWSU9SX0VNUFRZX09CSkVDVDoKKwkJCXZhbCA9IERp cmVjdEZ1bmN0aW9uQ2FsbDEoanNvbmJfaW4sIENTdHJpbmdHZXREYXR1bSgie30iKSk7CisJCQli cmVhazsKKworCQljYXNlIEpTT05fQkVIQVZJT1JfVFJVRToKKwkJCXZhbCA9IEJvb2xHZXREYXR1 bSh0cnVlKTsKKwkJCXR5cGlkID0gQk9PTE9JRDsKKwkJCWxlbiA9IHNpemVvZihib29sKTsKKwkJ CWlzYnl2YWwgPSB0cnVlOworCQkJYnJlYWs7CisKKwkJY2FzZSBKU09OX0JFSEFWSU9SX0ZBTFNF OgorCQkJdmFsID0gQm9vbEdldERhdHVtKGZhbHNlKTsKKwkJCXR5cGlkID0gQk9PTE9JRDsKKwkJ CWxlbiA9IHNpemVvZihib29sKTsKKwkJCWlzYnl2YWwgPSB0cnVlOworCQkJYnJlYWs7CisKKwkJ Y2FzZSBKU09OX0JFSEFWSU9SX05VTEw6CisJCWNhc2UgSlNPTl9CRUhBVklPUl9VTktOT1dOOgor CQljYXNlIEpTT05fQkVIQVZJT1JfRU1QVFk6CisJCQl2YWwgPSAoRGF0dW0pIDA7CisJCQlpc251 bGwgPSB0cnVlOworCQkJdHlwaWQgPSBJTlQ0T0lEOworCQkJbGVuID0gc2l6ZW9mKGludDMyKTsK KwkJCWlzYnl2YWwgPSB0cnVlOworCQkJYnJlYWs7CisKKwkJY2FzZSBKU09OX0JFSEFWSU9SX0RF RkFVTFQ6CisJCWNhc2UgSlNPTl9CRUhBVklPUl9FUlJPUjoKKwkJCS8qIEFsd2F5cyBoYW5kbGVk IGluIHRoZSBjYWxsZXIuICovCisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJlYWs7CisKKwkJZGVm YXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgU1FML0pTT04gYmVoYXZpb3IgJWQi LCBidHlwZSk7CisJCQlicmVhazsKKwl9CisKKwljb24gPSBtYWtlQ29uc3QodHlwaWQsIC0xLCBJ bnZhbGlkT2lkLCBsZW4sIHZhbCwgaXNudWxsLCBpc2J5dmFsKTsKKwljb24tPmxvY2F0aW9uID0g bG9jYXRpb247CisKKwlyZXR1cm4gKE5vZGUgKikgY29uOworfQorCisvKgorICogVHJhbnNmb3Jt IGEgSlNPTiBCRUhBVklPUiBjbGF1c2UuCisgKi8KK3N0YXRpYyBKc29uQmVoYXZpb3IgKgordHJh bnNmb3JtSnNvbkJlaGF2aW9yKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvbkJlaGF2aW9yICpiZWhh dmlvciwKKwkJCQkJICBKc29uQmVoYXZpb3JUeXBlIGRlZmF1bHRfYmVoYXZpb3IsCisJCQkJCSAg SnNvblJldHVybmluZyAqcmV0dXJuaW5nKQoreworCUpzb25CZWhhdmlvclR5cGUgYmVoYXZpb3Jf dHlwZSA9IGRlZmF1bHRfYmVoYXZpb3I7CisJTm9kZQkgICAqZXhwciA9IE5VTEw7CisJSnNvbkNv ZXJjaW9uICpjb2VyY2lvbiA9IE5VTEw7CisJaW50CQkJbG9jYXRpb24gPSAtMTsKKworCWlmIChi ZWhhdmlvcikKKwl7CisJCWJlaGF2aW9yX3R5cGUgPSBiZWhhdmlvci0+YnR5cGU7CisJCWxvY2F0 aW9uID0gYmVoYXZpb3ItPmxvY2F0aW9uOworCQlpZiAoYmVoYXZpb3JfdHlwZSA9PSBKU09OX0JF SEFWSU9SX0RFRkFVTFQpCisJCQlleHByID0gdHJhbnNmb3JtRXhwclJlY3Vyc2UocHN0YXRlLCBi ZWhhdmlvci0+ZXhwcik7CisJfQorCisJaWYgKGV4cHIgPT0gTlVMTCAmJiBiZWhhdmlvcl90eXBl ICE9IEpTT05fQkVIQVZJT1JfRVJST1IpCisJCWV4cHIgPSBHZXRKc29uQmVoYXZpb3JDb25zdEV4 cHIoYmVoYXZpb3JfdHlwZSwgbG9jYXRpb24pOworCisJaWYgKGV4cHIpCisJeworCQlOb2RlCSAg ICpjb2VyY2VkX2V4cHIgPSBleHByOworCQlib29sCQlpc251bGwgPSAoSXNBKGV4cHIsIENvbnN0 KSAmJiAoKENvbnN0ICopIGV4cHIpLT5jb25zdGlzbnVsbCk7CisKKwkJLyoKKwkJICogQ29lcmNl IE5VTExzIGFuZCAiZGVmYXVsdCIgKHRoYXQgaXMsIG5vdCBzcGVjaWZpZWQgYnkgdGhlIHVzZXIp CisJCSAqIGpzb25iLXZhbHVlZCBleHByZXNzaW9ucyB1c2luZyBhIEpzb25Db2VyY2lvbiBub2Rl LgorCQkgKgorCQkgKiBGb3Igb3RoZXIgKHVzZXItc3BlY2lmaWVkKSBub24tTlVMTCB2YWx1ZXMs IHRyeSB0byBmaW5kIGEgY2FzdCBhbmQKKwkJICogZXJyb3Igb3V0IGlmIG9uZSBpcyBub3QgZm91 bmQuCisJCSAqLworCQlpZiAoaXNudWxsIHx8CisJCQkoZXhwclR5cGUoZXhwcikgPT0gSlNPTkJP SUQgJiYKKwkJCSBiZWhhdmlvcl90eXBlID09IGRlZmF1bHRfYmVoYXZpb3IpKQorCQkJY29lcmNp b24gPSBtYWtlSnNvbkNvZXJjaW9uKHJldHVybmluZyk7CisJCWVsc2UKKwkJCWNvZXJjZWRfZXhw ciA9CisJCQkJY29lcmNlX3RvX3RhcmdldF90eXBlKHBzdGF0ZSwgZXhwciwgZXhwclR5cGUoZXhw ciksCisJCQkJCQkJCQkgIHJldHVybmluZy0+dHlwaWQsIHJldHVybmluZy0+dHlwbW9kLAorCQkJ CQkJCQkJICBDT0VSQ0lPTl9FWFBMSUNJVCwgQ09FUkNFX0VYUExJQ0lUX0NBU1QsCisJCQkJCQkJ CQkgIGV4cHJMb2NhdGlvbigoTm9kZSAqKSBiZWhhdmlvcikpOworCisJCWlmIChjb2VyY2VkX2V4 cHIgPT0gTlVMTCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9DQU5O T1RfQ09FUkNFKSwKKwkJCQkJZXJybXNnKCJjYW5ub3QgY2FzdCBiZWhhdmlvciBleHByZXNzaW9u IG9mIHR5cGUgJXMgdG8gJXMiLAorCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUoZXhwclR5cGUoZXhw cikpLAorCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUocmV0dXJuaW5nLT50eXBpZCkpLAorCQkJCQlw YXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oZXhwcikpKTsKKwkJZWxzZQor CQkJZXhwciA9IGNvZXJjZWRfZXhwcjsKKwl9CisKKwlyZXR1cm4gbWFrZUpzb25CZWhhdmlvcihi ZWhhdmlvcl90eXBlLCBleHByLCBjb2VyY2lvbiwgbG9jYXRpb24pOworfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX3RhcmdldC5jCmluZGV4IDBjZDkwNGY4ZGEuLmVhNWFjNmJhZmUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfdGFyZ2V0LmMKQEAgLTE5ODksNiArMTk4OSwyMSBAQCBGaWd1cmVDb2xuYW1lSW50ZXJu YWwoTm9kZSAqbm9kZSwgY2hhciAqKm5hbWUpCiAJCQkvKiBtYWtlIEpTT05fQVJSQVlBR0cgYWN0 IGxpa2UgYSByZWd1bGFyIGZ1bmN0aW9uICovCiAJCQkqbmFtZSA9ICJqc29uX2FycmF5YWdnIjsK IAkJCXJldHVybiAyOworCQljYXNlIFRfSnNvbkZ1bmNFeHByOgorCQkJLyogbWFrZSBTUUwvSlNP TiBmdW5jdGlvbnMgYWN0IGxpa2UgYSByZWd1bGFyIGZ1bmN0aW9uICovCisJCQlzd2l0Y2ggKCgo SnNvbkZ1bmNFeHByICopIG5vZGUpLT5vcCkKKwkJCXsKKwkJCQljYXNlIEpTT05fRVhJU1RTX09Q OgorCQkJCQkqbmFtZSA9ICJqc29uX2V4aXN0cyI7CisJCQkJCXJldHVybiAyOworCQkJCWNhc2Ug SlNPTl9RVUVSWV9PUDoKKwkJCQkJKm5hbWUgPSAianNvbl9xdWVyeSI7CisJCQkJCXJldHVybiAy OworCQkJCWNhc2UgSlNPTl9WQUxVRV9PUDoKKwkJCQkJKm5hbWUgPSAianNvbl92YWx1ZSI7CisJ CQkJCXJldHVybiAyOworCQkJfQorCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQlicmVhazsKIAl9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZm9ybWF0dGluZy5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2Zvcm1hdHRpbmcuYwppbmRleCA4M2UxZjEyNjVjLi40MWJiMGUwNTQ2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZm9ybWF0dGluZy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXR0aW5nLmMKQEAgLTQ0MjYsNiArNDQyNiw1MCBAQCBw YXJzZV9kYXRldGltZSh0ZXh0ICpkYXRlX3R4dCwgdGV4dCAqZm10LCBPaWQgY29sbGlkLCBib29s IHN0cmljdCwKIAl9CiB9CiAKKy8qCisgKiBQYXJzZXMgdGhlIGRhdGV0aW1lIGZvcm1hdCBzdHJp bmcgaW4gJ2ZtdF9zdHInIGFuZCByZXR1cm5zIHRydWUgaWYgaXQKKyAqIGNvbnRhaW5zIGEgdGlt ZXpvbmUgc3BlY2lmaWVyLCBmYWxzZSBpZiBub3QuCisgKi8KK2Jvb2wKK2RhdGV0aW1lX2Zvcm1h dF9oYXNfdHooY29uc3QgY2hhciAqZm10X3N0cikKK3sKKwlib29sCQlpbmNhY2hlOworCWludAkJ CWZtdF9sZW4gPSBzdHJsZW4oZm10X3N0cik7CisJaW50CQkJcmVzdWx0OworCUZvcm1hdE5vZGUg KmZvcm1hdDsKKworCWlmIChmbXRfbGVuID4gRENIX0NBQ0hFX1NJWkUpCisJeworCQkvKgorCQkg KiBBbGxvY2F0ZSBuZXcgbWVtb3J5IGlmIGZvcm1hdCBwaWN0dXJlIGlzIGJpZ2dlciB0aGFuIHN0 YXRpYyBjYWNoZQorCQkgKiBhbmQgZG8gbm90IHVzZSBjYWNoZSAoY2FsbCBwYXJzZXIgYWx3YXlz KQorCQkgKi8KKwkJaW5jYWNoZSA9IGZhbHNlOworCisJCWZvcm1hdCA9IChGb3JtYXROb2RlICop IHBhbGxvYygoZm10X2xlbiArIDEpICogc2l6ZW9mKEZvcm1hdE5vZGUpKTsKKworCQlwYXJzZV9m b3JtYXQoZm9ybWF0LCBmbXRfc3RyLCBEQ0hfa2V5d29yZHMsCisJCQkJCSBEQ0hfc3VmZiwgRENI X2luZGV4LCBEQ0hfRkxBRywgTlVMTCk7CisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIFVzZSBj YWNoZSBidWZmZXJzCisJCSAqLworCQlEQ0hDYWNoZUVudHJ5ICplbnQgPSBEQ0hfY2FjaGVfZmV0 Y2goZm10X3N0ciwgZmFsc2UpOworCisJCWluY2FjaGUgPSB0cnVlOworCQlmb3JtYXQgPSBlbnQt PmZvcm1hdDsKKwl9CisKKwlyZXN1bHQgPSBEQ0hfZGF0ZXRpbWVfdHlwZShmb3JtYXQpOworCisJ aWYgKCFpbmNhY2hlKQorCQlwZnJlZShmb3JtYXQpOworCisJcmV0dXJuIHJlc3VsdCAmIERDSF9a T05FRDsKK30KKwogLyoKICAqIGRvX3RvX3RpbWVzdGFtcDogc2hhcmVkIGNvZGUgZm9yIHRvX3Rp bWVzdGFtcCBhbmQgdG9fZGF0ZQogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9qc29uYi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMKaW5kZXggYzEwYjNmYmVk Zi4uNmQ3OTdjMDk1MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMKQEAgLTIxNjMsMyArMjE2MywzNCBA QCBqc29uYl9mbG9hdDgoUEdfRlVOQ1RJT05fQVJHUykKIAogCVBHX1JFVFVSTl9EQVRVTShyZXRW YWx1ZSk7CiB9CisKKy8qCisgKiBDb252ZXJ0IGpzb25iIHRvIGEgQy1zdHJpbmcgc3RyaXBwaW5n IHF1b3RlcyBmcm9tIHNjYWxhciBzdHJpbmdzLgorICovCitjaGFyICoKK0pzb25iVW5xdW90ZShK c29uYiAqamIpCit7CisJaWYgKEpCX1JPT1RfSVNfU0NBTEFSKGpiKSkKKwl7CisJCUpzb25iVmFs dWUJdjsKKworCQkodm9pZCkgSnNvbmJFeHRyYWN0U2NhbGFyKCZqYi0+cm9vdCwgJnYpOworCisJ CWlmICh2LnR5cGUgPT0gamJ2U3RyaW5nKQorCQkJcmV0dXJuIHBuc3RyZHVwKHYudmFsLnN0cmlu Zy52YWwsIHYudmFsLnN0cmluZy5sZW4pOworCQllbHNlIGlmICh2LnR5cGUgPT0gamJ2Qm9vbCkK KwkJCXJldHVybiBwc3RyZHVwKHYudmFsLmJvb2xlYW4gPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKwkJ ZWxzZSBpZiAodi50eXBlID09IGpidk51bWVyaWMpCisJCQlyZXR1cm4gRGF0dW1HZXRDU3RyaW5n KERpcmVjdEZ1bmN0aW9uQ2FsbDEobnVtZXJpY19vdXQsCisJCQkJCQkJCQkJCQkJICAgUG9pbnRl ckdldERhdHVtKHYudmFsLm51bWVyaWMpKSk7CisJCWVsc2UgaWYgKHYudHlwZSA9PSBqYnZOdWxs KQorCQkJcmV0dXJuIHBzdHJkdXAoIm51bGwiKTsKKwkJZWxzZQorCQl7CisJCQllbG9nKEVSUk9S LCAidW5yZWNvZ25pemVkIGpzb25iIHZhbHVlIHR5cGUgJWQiLCB2LnR5cGUpOworCQkJcmV0dXJu IE5VTEw7CisJCX0KKwl9CisJZWxzZQorCQlyZXR1cm4gSnNvbmJUb0NTdHJpbmcoTlVMTCwgJmpi LT5yb290LCBWQVJTSVpFKGpiKSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvanNvbmZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMKaW5kZXgg ODgyMTc0YWIzOC4uMjE2YjQ1NTU4YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb25mdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYwpAQCAt MjgyNCw3ICsyODI0LDkgQEAgcG9wdWxhdGVfYXJyYXlfZGltX2pzb25iKFBvcHVsYXRlQXJyYXlD b250ZXh0ICpjdHgsIC8qIGNvbnRleHQgKi8KIAogCWNoZWNrX3N0YWNrX2RlcHRoKCk7CiAKLQlp ZiAoamJ2LT50eXBlICE9IGpidkJpbmFyeSB8fCAhSnNvbkNvbnRhaW5lcklzQXJyYXkoamJjKSkK KwkvKiBFdmVuIHNjYWxhcnMgY2FuIGVuZCB1cCBoZXJlIHRoYW5rcyB0byBKc29uUGF0aFF1ZXJ5 L1ZhbHVlKCkuICovCisJaWYgKGpidi0+dHlwZSAhPSBqYnZCaW5hcnkgfHwgIUpzb25Db250YWlu ZXJJc0FycmF5KGpiYykgfHwKKwkJSnNvbkNvbnRhaW5lcklzU2NhbGFyKGpiYykpCiAJewogCQlw b3B1bGF0ZV9hcnJheV9yZXBvcnRfZXhwZWN0ZWRfYXJyYXkoY3R4LCBuZGltIC0gMSk7CiAJCS8q IEdldHRpbmcgaGVyZSBtZWFucyB0aGUgZXJyb3Igd2FzIHJlcG9ydGVkIHNvZnRseS4gKi8KQEAg LTI4MzIsOCArMjgzNCw2IEBAIHBvcHVsYXRlX2FycmF5X2RpbV9qc29uYihQb3B1bGF0ZUFycmF5 Q29udGV4dCAqY3R4LCAvKiBjb250ZXh0ICovCiAJCXJldHVybiBmYWxzZTsKIAl9CiAKLQlBc3Nl cnQoIUpzb25Db250YWluZXJJc1NjYWxhcihqYmMpKTsKLQogCWl0ID0gSnNvbmJJdGVyYXRvcklu aXQoamJjKTsKIAogCXRvayA9IEpzb25iSXRlcmF0b3JOZXh0KCZpdCwgJnZhbCwgdHJ1ZSk7CkBA IC0zMzE3LDYgKzMzMTcsNjIgQEAgcHJlcGFyZV9jb2x1bW5fY2FjaGUoQ29sdW1uSU9EYXRhICpj b2x1bW4sCiAJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CiB9CiAKKy8qCisgKiBQb3B1bGF0ZSBhbmQg cmV0dXJuIHRoZSB2YWx1ZSBvZiBzcGVjaWZpZWQgdHlwZSBmcm9tIGEgZ2l2ZW4ganNvbi9qc29u YgorICogdmFsdWUgJ2pzb25fdmFsJy4gICdjYWNoZScgaXMgY2FsbGVyLXNwZWNpZmllZCBwb2lu dGVyIHRvIHNhdmUgdGhlCisgKiBDb2x1bW5JT0RhdGEgdGhhdCB3aWxsIGJlIGluaXRpYWxpemVk IG9uIHRoZSAxc3QgY2FsbCBhbmQgdGhlbiByZXVzZWQKKyAqIGR1cmluZyBhbnkgc3Vic2VxdWVu dCBjYWxscy4gICdtY3h0JyBnaXZlcyB0aGUgbWVtb3J5IGNvbnRleHQgdG8gYWxsb2NhdGUKKyAq IHRoZSBDb2x1bW5JT0RhdGEgYW5kIGFueSBvdGhlciBzdWJzaWRpYXJ5IG1lbW9yeSBpbi4gICdl c2NvbnRleHQnLAorICogaWYgbm90IE5VTEwsIHRlbGxzIHRoYXQgYW55IGVycm9ycyB0aGF0IG9j Y3VyIHNob3VsZCBiZSBoYW5kbGVkIHNvZnRseS4KKyAqLworRGF0dW0KK2pzb25fcG9wdWxhdGVf dHlwZShEYXR1bSBqc29uX3ZhbCwgT2lkIGpzb25fdHlwZSwKKwkJCQkgICBPaWQgdHlwaWQsIGlu dDMyIHR5cG1vZCwKKwkJCQkgICB2b2lkICoqY2FjaGUsIE1lbW9yeUNvbnRleHQgbWN4dCwKKwkJ CQkgICBib29sICppc251bGwsCisJCQkJICAgTm9kZSAqZXNjb250ZXh0KQoreworCUpzVmFsdWUJ CWpzdiA9IHswfTsKKwlKc29uYlZhbHVlCWpidjsKKworCWpzdi5pc19qc29uID0ganNvbl90eXBl ID09IEpTT05PSUQ7CisKKwlpZiAoKmlzbnVsbCkKKwl7CisJCWlmIChqc3YuaXNfanNvbikKKwkJ CWpzdi52YWwuanNvbi5zdHIgPSBOVUxMOworCQllbHNlCisJCQlqc3YudmFsLmpzb25iID0gTlVM TDsKKwl9CisJZWxzZSBpZiAoanN2LmlzX2pzb24pCisJeworCQl0ZXh0CSAgICpqc29uID0gRGF0 dW1HZXRUZXh0UFAoanNvbl92YWwpOworCisJCWpzdi52YWwuanNvbi5zdHIgPSBWQVJEQVRBX0FO WShqc29uKTsKKwkJanN2LnZhbC5qc29uLmxlbiA9IFZBUlNJWkVfQU5ZX0VYSERSKGpzb24pOwor CQlqc3YudmFsLmpzb24udHlwZSA9IEpTT05fVE9LRU5fSU5WQUxJRDsgLyogbm90IHVzZWQgaW4K KwkJCQkJCQkJCQkJCSAqIHBvcHVsYXRlX2NvbXBvc2l0ZSgpICovCisJfQorCWVsc2UKKwl7CisJ CUpzb25iCSAgICpqc29uYiA9IERhdHVtR2V0SnNvbmJQKGpzb25fdmFsKTsKKworCQlqc3YudmFs Lmpzb25iID0gJmpidjsKKworCQkvKiBmaWxsIGJpbmFyeSBqc29uYiB2YWx1ZSBwb2ludGluZyB0 byBqYiAqLworCQlqYnYudHlwZSA9IGpidkJpbmFyeTsKKwkJamJ2LnZhbC5iaW5hcnkuZGF0YSA9 ICZqc29uYi0+cm9vdDsKKwkJamJ2LnZhbC5iaW5hcnkubGVuID0gVkFSU0laRShqc29uYikgLSBW QVJIRFJTWjsKKwl9CisKKwlpZiAoKmNhY2hlID09IE5VTEwpCisJCSpjYWNoZSA9IE1lbW9yeUNv bnRleHRBbGxvY1plcm8obWN4dCwgc2l6ZW9mKENvbHVtbklPRGF0YSkpOworCisJcmV0dXJuIHBv cHVsYXRlX3JlY29yZF9maWVsZCgqY2FjaGUsIHR5cGlkLCB0eXBtb2QsIE5VTEwsIG1jeHQsCisJ CQkJCQkJCSBQb2ludGVyR2V0RGF0dW0oTlVMTCksICZqc3YsIGlzbnVsbCwKKwkJCQkJCQkJIGVz Y29udGV4dCk7Cit9CisKIC8qIHJlY3Vyc2l2ZWx5IHBvcHVsYXRlIGEgcmVjb3JkIGZpZWxkIG9y IGFuIGFycmF5IGVsZW1lbnQgZnJvbSBhIGpzb24vanNvbmIgdmFsdWUgKi8KIHN0YXRpYyBEYXR1 bQogcG9wdWxhdGVfcmVjb3JkX2ZpZWxkKENvbHVtbklPRGF0YSAqY29sLApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbnBhdGguYwppbmRleCBkMDJjMDNlMDE0Li4yMDA3N2I2N2E3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvanNvbnBhdGguYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbnBhdGguYwpAQCAtNjgsNyArNjgsOSBAQAogI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0Lmgi CiAjaW5jbHVkZSAibm9kZXMvbWlzY25vZGVzLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCisj aW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIK KyNpbmNsdWRlICJ1dGlscy9mb3JtYXR0aW5nLmgiCiAjaW5jbHVkZSAidXRpbHMvanNvbi5oIgog I2luY2x1ZGUgInV0aWxzL2pzb25wYXRoLmgiCiAKQEAgLTExMTAsMyArMTExMiwyNjAgQEAganNw R2V0QXJyYXlTdWJzY3JpcHQoSnNvblBhdGhJdGVtICp2LCBKc29uUGF0aEl0ZW0gKmZyb20sIEpz b25QYXRoSXRlbSAqdG8sCiAKIAlyZXR1cm4gdHJ1ZTsKIH0KKworLyogU1FML0pTT04gZGF0YXR5 cGUgc3RhdHVzOiAqLworZW51bSBKc29uUGF0aERhdGF0eXBlU3RhdHVzCit7CisJanBkc05vbkRh dGVUaW1lLAkJCS8qIG51bGwsIGJvb2wsIG51bWVyaWMsIHN0cmluZywgYXJyYXksIG9iamVjdCAq LworCWpwZHNVbmtub3duRGF0ZVRpbWUsCQkvKiB1bmtub3duIGRhdGV0aW1lIHR5cGUgKi8KKwlq cGRzRGF0ZVRpbWVab25lZCwJCQkvKiB0aW1ldHosIHRpbWVzdGFtcHR6ICovCisJanBkc0RhdGVU aW1lTm9uWm9uZWQsCQkvKiB0aW1lLCB0aW1lc3RhbXAsIGRhdGUgKi8KK307CisKKy8qIENvbnRl eHQgZm9yIGpzcElzTXV0YWJsZVdhbGtlcigpICovCitzdHJ1Y3QgSnNvblBhdGhNdXRhYmxlQ29u dGV4dAoreworCUxpc3QJICAgKnZhcm5hbWVzOwkJLyogbGlzdCBvZiB2YXJpYWJsZSBuYW1lcyAq LworCUxpc3QJICAgKnZhcmV4cHJzOwkJLyogbGlzdCBvZiB2YXJpYWJsZSBleHByZXNzaW9ucyAq LworCWVudW0gSnNvblBhdGhEYXRhdHlwZVN0YXR1cyBjdXJyZW50OwkvKiBzdGF0dXMgb2YgQCBp dGVtICovCisJYm9vbAkJbGF4OwkJCS8qIGpzb25wYXRoIGlzIGxheCBvciBzdHJpY3QgKi8KKwli b29sCQltdXRhYmxlOwkJLyogcmVzdWx0aW5nIG11dGFiaWxpdHkgc3RhdHVzICovCit9OworCitz dGF0aWMgZW51bSBKc29uUGF0aERhdGF0eXBlU3RhdHVzIGpzcElzTXV0YWJsZVdhbGtlcihKc29u UGF0aEl0ZW0gKmpwaSwKKwkJCQkJCQkJCQkJCQkgIHN0cnVjdCBKc29uUGF0aE11dGFibGVDb250 ZXh0ICpjeHQpOworCisvKgorICogRnVuY3Rpb24gdG8gY2hlY2sgd2hldGhlciBqc29ucGF0aCBl eHByZXNzaW9uIGlzIG11dGFibGUgdG8gYmUgdXNlZCBpbiB0aGUKKyAqIHBsYW5uZXIgZnVuY3Rp b24gY29udGFpbl9tdXRhYmxlX2Z1bmN0aW9ucygpLgorICovCitib29sCitqc3BJc011dGFibGUo SnNvblBhdGggKnBhdGgsIExpc3QgKnZhcm5hbWVzLCBMaXN0ICp2YXJleHBycykKK3sKKwlzdHJ1 Y3QgSnNvblBhdGhNdXRhYmxlQ29udGV4dCBjeHQ7CisJSnNvblBhdGhJdGVtIGpwaTsKKworCWN4 dC52YXJuYW1lcyA9IHZhcm5hbWVzOworCWN4dC52YXJleHBycyA9IHZhcmV4cHJzOworCWN4dC5j dXJyZW50ID0ganBkc05vbkRhdGVUaW1lOworCWN4dC5sYXggPSAocGF0aC0+aGVhZGVyICYgSlNP TlBBVEhfTEFYKSAhPSAwOworCWN4dC5tdXRhYmxlID0gZmFsc2U7CisKKwlqc3BJbml0KCZqcGks IHBhdGgpOworCSh2b2lkKSBqc3BJc011dGFibGVXYWxrZXIoJmpwaSwgJmN4dCk7CisKKwlyZXR1 cm4gY3h0Lm11dGFibGU7Cit9CisKKy8qCisgKiBSZWN1cnNpdmUgd2Fsa2VyIGZvciBqc3BJc011 dGFibGUoKQorICovCitzdGF0aWMgZW51bSBKc29uUGF0aERhdGF0eXBlU3RhdHVzCitqc3BJc011 dGFibGVXYWxrZXIoSnNvblBhdGhJdGVtICpqcGksIHN0cnVjdCBKc29uUGF0aE11dGFibGVDb250 ZXh0ICpjeHQpCit7CisJSnNvblBhdGhJdGVtIG5leHQ7CisJZW51bSBKc29uUGF0aERhdGF0eXBl U3RhdHVzIHN0YXR1cyA9IGpwZHNOb25EYXRlVGltZTsKKworCXdoaWxlICghY3h0LT5tdXRhYmxl KQorCXsKKwkJSnNvblBhdGhJdGVtIGFyZzsKKwkJZW51bSBKc29uUGF0aERhdGF0eXBlU3RhdHVz IGxlZnRTdGF0dXM7CisJCWVudW0gSnNvblBhdGhEYXRhdHlwZVN0YXR1cyByaWdodFN0YXR1czsK KworCQlzd2l0Y2ggKGpwaS0+dHlwZSkKKwkJeworCQkJY2FzZSBqcGlSb290OgorCQkJCUFzc2Vy dChzdGF0dXMgPT0ganBkc05vbkRhdGVUaW1lKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBqcGlD dXJyZW50OgorCQkJCUFzc2VydChzdGF0dXMgPT0ganBkc05vbkRhdGVUaW1lKTsKKwkJCQlzdGF0 dXMgPSBjeHQtPmN1cnJlbnQ7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UganBpRmlsdGVyOgorCQkJ CXsKKwkJCQkJZW51bSBKc29uUGF0aERhdGF0eXBlU3RhdHVzIHByZXZTdGF0dXMgPSBjeHQtPmN1 cnJlbnQ7CisKKwkJCQkJY3h0LT5jdXJyZW50ID0gc3RhdHVzOworCQkJCQlqc3BHZXRBcmcoanBp LCAmYXJnKTsKKwkJCQkJanNwSXNNdXRhYmxlV2Fsa2VyKCZhcmcsIGN4dCk7CisKKwkJCQkJY3h0 LT5jdXJyZW50ID0gcHJldlN0YXR1czsKKwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQljYXNlIGpw aVZhcmlhYmxlOgorCQkJCXsKKwkJCQkJaW50MzIJCWxlbjsKKwkJCQkJY29uc3QgY2hhciAqbmFt ZSA9IGpzcEdldFN0cmluZyhqcGksICZsZW4pOworCQkJCQlMaXN0Q2VsbCAgICpsYzE7CisJCQkJ CUxpc3RDZWxsICAgKmxjMjsKKworCQkJCQlBc3NlcnQoc3RhdHVzID09IGpwZHNOb25EYXRlVGlt ZSk7CisKKwkJCQkJZm9yYm90aChsYzEsIGN4dC0+dmFybmFtZXMsIGxjMiwgY3h0LT52YXJleHBy cykKKwkJCQkJeworCQkJCQkJU3RyaW5nCSAgICp2YXJuYW1lID0gbGZpcnN0X25vZGUoU3RyaW5n LCBsYzEpOworCQkJCQkJTm9kZQkgICAqdmFyZXhwciA9IGxmaXJzdChsYzIpOworCisJCQkJCQlp ZiAoc3RybmNtcCh2YXJuYW1lLT5zdmFsLCBuYW1lLCBsZW4pKQorCQkJCQkJCWNvbnRpbnVlOwor CisJCQkJCQlzd2l0Y2ggKGV4cHJUeXBlKHZhcmV4cHIpKQorCQkJCQkJeworCQkJCQkJCWNhc2Ug REFURU9JRDoKKwkJCQkJCQljYXNlIFRJTUVPSUQ6CisJCQkJCQkJY2FzZSBUSU1FU1RBTVBPSUQ6 CisJCQkJCQkJCXN0YXR1cyA9IGpwZHNEYXRlVGltZU5vblpvbmVkOworCQkJCQkJCQlicmVhazsK KworCQkJCQkJCWNhc2UgVElNRVRaT0lEOgorCQkJCQkJCWNhc2UgVElNRVNUQU1QVFpPSUQ6CisJ CQkJCQkJCXN0YXR1cyA9IGpwZHNEYXRlVGltZVpvbmVkOworCQkJCQkJCQlicmVhazsKKworCQkJ CQkJCWRlZmF1bHQ6CisJCQkJCQkJCXN0YXR1cyA9IGpwZHNOb25EYXRlVGltZTsKKwkJCQkJCQkJ YnJlYWs7CisJCQkJCQl9CisKKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJCWJyZWFrOworCQkJ CX0KKworCQkJY2FzZSBqcGlFcXVhbDoKKwkJCWNhc2UganBpTm90RXF1YWw6CisJCQljYXNlIGpw aUxlc3M6CisJCQljYXNlIGpwaUdyZWF0ZXI6CisJCQljYXNlIGpwaUxlc3NPckVxdWFsOgorCQkJ Y2FzZSBqcGlHcmVhdGVyT3JFcXVhbDoKKwkJCQlBc3NlcnQoc3RhdHVzID09IGpwZHNOb25EYXRl VGltZSk7CisJCQkJanNwR2V0TGVmdEFyZyhqcGksICZhcmcpOworCQkJCWxlZnRTdGF0dXMgPSBq c3BJc011dGFibGVXYWxrZXIoJmFyZywgY3h0KTsKKworCQkJCWpzcEdldFJpZ2h0QXJnKGpwaSwg JmFyZyk7CisJCQkJcmlnaHRTdGF0dXMgPSBqc3BJc011dGFibGVXYWxrZXIoJmFyZywgY3h0KTsK KworCQkJCS8qCisJCQkJICogQ29tcGFyaXNvbiBvZiBkYXRldGltZSB0eXBlIHdpdGggZGlmZmVy ZW50IHRpbWV6b25lIHN0YXR1cworCQkJCSAqIGlzIG11dGFibGUuCisJCQkJICovCisJCQkJaWYg KGxlZnRTdGF0dXMgIT0ganBkc05vbkRhdGVUaW1lICYmCisJCQkJCXJpZ2h0U3RhdHVzICE9IGpw ZHNOb25EYXRlVGltZSAmJgorCQkJCQkobGVmdFN0YXR1cyA9PSBqcGRzVW5rbm93bkRhdGVUaW1l IHx8CisJCQkJCSByaWdodFN0YXR1cyA9PSBqcGRzVW5rbm93bkRhdGVUaW1lIHx8CisJCQkJCSBs ZWZ0U3RhdHVzICE9IHJpZ2h0U3RhdHVzKSkKKwkJCQkJY3h0LT5tdXRhYmxlID0gdHJ1ZTsKKwkJ CQlicmVhazsKKworCQkJY2FzZSBqcGlOb3Q6CisJCQljYXNlIGpwaUlzVW5rbm93bjoKKwkJCWNh c2UganBpRXhpc3RzOgorCQkJY2FzZSBqcGlQbHVzOgorCQkJY2FzZSBqcGlNaW51czoKKwkJCQlB c3NlcnQoc3RhdHVzID09IGpwZHNOb25EYXRlVGltZSk7CisJCQkJanNwR2V0QXJnKGpwaSwgJmFy Zyk7CisJCQkJanNwSXNNdXRhYmxlV2Fsa2VyKCZhcmcsIGN4dCk7CisJCQkJYnJlYWs7CisKKwkJ CWNhc2UganBpQW5kOgorCQkJY2FzZSBqcGlPcjoKKwkJCWNhc2UganBpQWRkOgorCQkJY2FzZSBq cGlTdWI6CisJCQljYXNlIGpwaU11bDoKKwkJCWNhc2UganBpRGl2OgorCQkJY2FzZSBqcGlNb2Q6 CisJCQljYXNlIGpwaVN0YXJ0c1dpdGg6CisJCQkJQXNzZXJ0KHN0YXR1cyA9PSBqcGRzTm9uRGF0 ZVRpbWUpOworCQkJCWpzcEdldExlZnRBcmcoanBpLCAmYXJnKTsKKwkJCQlqc3BJc011dGFibGVX YWxrZXIoJmFyZywgY3h0KTsKKwkJCQlqc3BHZXRSaWdodEFyZyhqcGksICZhcmcpOworCQkJCWpz cElzTXV0YWJsZVdhbGtlcigmYXJnLCBjeHQpOworCQkJCWJyZWFrOworCisJCQljYXNlIGpwaUlu ZGV4QXJyYXk6CisJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBqcGktPmNvbnRlbnQuYXJyYXkubmVs ZW1zOyBpKyspCisJCQkJeworCQkJCQlKc29uUGF0aEl0ZW0gZnJvbTsKKwkJCQkJSnNvblBhdGhJ dGVtIHRvOworCisJCQkJCWlmIChqc3BHZXRBcnJheVN1YnNjcmlwdChqcGksICZmcm9tLCAmdG8s IGkpKQorCQkJCQkJanNwSXNNdXRhYmxlV2Fsa2VyKCZ0bywgY3h0KTsKKworCQkJCQlqc3BJc011 dGFibGVXYWxrZXIoJmZyb20sIGN4dCk7CisJCQkJfQorCQkJCS8qIEZBTExUSFJPVUdIICovCisK KwkJCWNhc2UganBpQW55QXJyYXk6CisJCQkJaWYgKCFjeHQtPmxheCkKKwkJCQkJc3RhdHVzID0g anBkc05vbkRhdGVUaW1lOworCQkJCWJyZWFrOworCisJCQljYXNlIGpwaUFueToKKwkJCQlpZiAo anBpLT5jb250ZW50LmFueWJvdW5kcy5maXJzdCA+IDApCisJCQkJCXN0YXR1cyA9IGpwZHNOb25E YXRlVGltZTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBqcGlEYXRldGltZToKKwkJCQlpZiAoanBp LT5jb250ZW50LmFyZykKKwkJCQl7CisJCQkJCWNoYXIJICAgKnRlbXBsYXRlOworCisJCQkJCWpz cEdldEFyZyhqcGksICZhcmcpOworCQkJCQlpZiAoYXJnLnR5cGUgIT0ganBpU3RyaW5nKQorCQkJ CQl7CisJCQkJCQlzdGF0dXMgPSBqcGRzTm9uRGF0ZVRpbWU7CisJCQkJCQlicmVhazsJLyogdGhl cmUgd2lsbCBiZSBydW50aW1lIGVycm9yICovCisJCQkJCX0KKworCQkJCQl0ZW1wbGF0ZSA9IGpz cEdldFN0cmluZygmYXJnLCBOVUxMKTsKKwkJCQkJaWYgKGRhdGV0aW1lX2Zvcm1hdF9oYXNfdHoo dGVtcGxhdGUpKQorCQkJCQkJc3RhdHVzID0ganBkc0RhdGVUaW1lWm9uZWQ7CisJCQkJCWVsc2UK KwkJCQkJCXN0YXR1cyA9IGpwZHNEYXRlVGltZU5vblpvbmVkOworCQkJCX0KKwkJCQllbHNlCisJ CQkJeworCQkJCQlzdGF0dXMgPSBqcGRzVW5rbm93bkRhdGVUaW1lOworCQkJCX0KKwkJCQlicmVh azsKKworCQkJY2FzZSBqcGlMaWtlUmVnZXg6CisJCQkJQXNzZXJ0KHN0YXR1cyA9PSBqcGRzTm9u RGF0ZVRpbWUpOworCQkJCWpzcEluaXRCeUJ1ZmZlcigmYXJnLCBqcGktPmJhc2UsIGpwaS0+Y29u dGVudC5saWtlX3JlZ2V4LmV4cHIpOworCQkJCWpzcElzTXV0YWJsZVdhbGtlcigmYXJnLCBjeHQp OworCQkJCWJyZWFrOworCisJCQkJLyogbGl0ZXJhbHMgKi8KKwkJCWNhc2UganBpTnVsbDoKKwkJ CWNhc2UganBpU3RyaW5nOgorCQkJY2FzZSBqcGlOdW1lcmljOgorCQkJY2FzZSBqcGlCb29sOgor CQkJCS8qIGFjY2Vzc29ycyAqLworCQkJY2FzZSBqcGlLZXk6CisJCQljYXNlIGpwaUFueUtleToK KwkJCQkvKiBzcGVjaWFsIGl0ZW1zICovCisJCQljYXNlIGpwaVN1YnNjcmlwdDoKKwkJCWNhc2Ug anBpTGFzdDoKKwkJCQkvKiBpdGVtIG1ldGhvZHMgKi8KKwkJCWNhc2UganBpVHlwZToKKwkJCWNh c2UganBpU2l6ZToKKwkJCWNhc2UganBpQWJzOgorCQkJY2FzZSBqcGlGbG9vcjoKKwkJCWNhc2Ug anBpQ2VpbGluZzoKKwkJCWNhc2UganBpRG91YmxlOgorCQkJY2FzZSBqcGlLZXlWYWx1ZToKKwkJ CQlzdGF0dXMgPSBqcGRzTm9uRGF0ZVRpbWU7CisJCQkJYnJlYWs7CisJCX0KKworCQlpZiAoIWpz cEdldE5leHQoanBpLCAmbmV4dCkpCisJCQlicmVhazsKKworCQlqcGkgPSAmbmV4dDsKKwl9CisK KwlyZXR1cm4gc3RhdHVzOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b25wYXRoX2V4ZWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMKaW5k ZXggYTIyMThiZjBiYy4uY2VjMGYzZGQ2NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2pzb25wYXRoX2V4ZWMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhf ZXhlYy5jCkBAIC0zMDg1LDcgKzMwODUsNyBAQCBKc29uUGF0aFF1ZXJ5KERhdHVtIGpiLCBKc29u UGF0aCAqanAsIEpzb25XcmFwcGVyIHdyYXBwZXIsIGJvb2wgKmVtcHR5LAogCXNpbmdsZXRvbiA9 IGNvdW50ID4gMCA/IEpzb25WYWx1ZUxpc3RIZWFkKCZmb3VuZCkgOiBOVUxMOwogCWlmIChzaW5n bGV0b24gPT0gTlVMTCkKIAkJd3JhcCA9IGZhbHNlOwotCWVsc2UgaWYgKHdyYXBwZXIgPT0gSlNX X05PTkUpCisJZWxzZSBpZiAod3JhcHBlciA9PSBKU1dfTk9ORSB8fCB3cmFwcGVyID09IEpTV19V TlNQRUMpCiAJCXdyYXAgPSBmYWxzZTsKIAllbHNlIGlmICh3cmFwcGVyID09IEpTV19VTkNPTkRJ VElPTkFMKQogCQl3cmFwID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCAw YjJhMTY0MDU3Li4yNzM1MzQ4NDE2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQv cnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC00 NzYsNiArNDc2LDggQEAgc3RhdGljIHZvaWQgZ2V0X2NvbnN0X2V4cHIoQ29uc3QgKmNvbnN0dmFs LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQkJCQkgICBpbnQgc2hvd3R5cGUpOwogc3Rh dGljIHZvaWQgZ2V0X2NvbnN0X2NvbGxhdGlvbihDb25zdCAqY29uc3R2YWwsIGRlcGFyc2VfY29u dGV4dCAqY29udGV4dCk7CiBzdGF0aWMgdm9pZCBnZXRfanNvbl9mb3JtYXQoSnNvbkZvcm1hdCAq Zm9ybWF0LCBTdHJpbmdJbmZvIGJ1Zik7CitzdGF0aWMgdm9pZCBnZXRfanNvbl9yZXR1cm5pbmco SnNvblJldHVybmluZyAqcmV0dXJuaW5nLCBTdHJpbmdJbmZvIGJ1ZiwKKwkJCQkJCQkgICBib29s IGpzb25fZm9ybWF0X2J5X2RlZmF1bHQpOwogc3RhdGljIHZvaWQgZ2V0X2pzb25fY29uc3RydWN0 b3IoSnNvbkNvbnN0cnVjdG9yRXhwciAqY3RvciwKIAkJCQkJCQkJIGRlcGFyc2VfY29udGV4dCAq Y29udGV4dCwgYm9vbCBzaG93aW1wbGljaXQpOwogc3RhdGljIHZvaWQgZ2V0X2pzb25fY29uc3Ry dWN0b3Jfb3B0aW9ucyhKc29uQ29uc3RydWN0b3JFeHByICpjdG9yLApAQCAtNTE4LDYgKzUyMCw4 IEBAIHN0YXRpYyBjaGFyICpnZW5lcmF0ZV9xdWFsaWZpZWRfdHlwZV9uYW1lKE9pZCB0eXBpZCk7 CiBzdGF0aWMgdGV4dCAqc3RyaW5nX3RvX3RleHQoY2hhciAqc3RyKTsKIHN0YXRpYyBjaGFyICpm bGF0dGVuX3JlbG9wdGlvbnMoT2lkIHJlbGlkKTsKIHN0YXRpYyB2b2lkIGdldF9yZWxvcHRpb25z KFN0cmluZ0luZm8gYnVmLCBEYXR1bSByZWxvcHRpb25zKTsKK3N0YXRpYyB2b2lkIGdldF9qc29u X3BhdGhfc3BlYyhOb2RlICpwYXRoX3NwZWMsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKKwkJ CQkJCQkgICBib29sIHNob3dpbXBsaWNpdCk7CiAKICNkZWZpbmUgb25seV9tYXJrZXIocnRlKSAg KChydGUpLT5pbmggPyAiIiA6ICJPTkxZICIpCiAKQEAgLTgzMDAsNiArODMwNCw3IEBAIGlzU2lt cGxlTm9kZShOb2RlICpub2RlLCBOb2RlICpwYXJlbnROb2RlLCBpbnQgcHJldHR5RmxhZ3MpCiAJ CWNhc2UgVF9XaW5kb3dGdW5jOgogCQljYXNlIFRfRnVuY0V4cHI6CiAJCWNhc2UgVF9Kc29uQ29u c3RydWN0b3JFeHByOgorCQljYXNlIFRfSnNvbkV4cHI6CiAJCQkvKiBmdW5jdGlvbi1saWtlOiBu YW1lKC4uKSBvciBuYW1lWy4uXSAqLwogCQkJcmV0dXJuIHRydWU7CiAKQEAgLTg0NzEsNiArODQ3 Niw3IEBAIGlzU2ltcGxlTm9kZShOb2RlICpub2RlLCBOb2RlICpwYXJlbnROb2RlLCBpbnQgcHJl dHR5RmxhZ3MpCiAJCQkJY2FzZSBUX0dyb3VwaW5nRnVuYzoJLyogb3duIHBhcmVudGhlc2VzICov CiAJCQkJY2FzZSBUX1dpbmRvd0Z1bmM6CS8qIG93biBwYXJlbnRoZXNlcyAqLwogCQkJCWNhc2Ug VF9DYXNlRXhwcjoJLyogb3RoZXIgc2VwYXJhdG9ycyAqLworCQkJCWNhc2UgVF9Kc29uRXhwcjoJ Lyogb3duIHBhcmVudGhlc2VzICovCiAJCQkJCXJldHVybiB0cnVlOwogCQkJCWRlZmF1bHQ6CiAJ CQkJCXJldHVybiBmYWxzZTsKQEAgLTg1ODYsNiArODU5Miw2NCBAQCBnZXRfcnVsZV9leHByX3Bh cmVuKE5vZGUgKm5vZGUsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAkJYXBwZW5kU3RyaW5n SW5mb0NoYXIoY29udGV4dC0+YnVmLCAnKScpOwogfQogCitzdGF0aWMgdm9pZAorZ2V0X2pzb25f YmVoYXZpb3IoSnNvbkJlaGF2aW9yICpiZWhhdmlvciwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0 LAorCQkJCSAgY29uc3QgY2hhciAqb24pCit7CisJLyoKKwkgKiBUaGUgb3JkZXIgb2YgYXJyYXkg ZWxlbWVudHMgbXVzdCBjb3JyZXNwb25kIHRvIHRoZSBvcmRlciBvZgorCSAqIEpzb25CZWhhdmlv clR5cGUgbWVtYmVycy4KKwkgKi8KKwljb25zdCBjaGFyICpiZWhhdmlvcl9uYW1lc1tdID0KKwl7 CisJCSIgTlVMTCIsCisJCSIgRVJST1IiLAorCQkiIEVNUFRZIiwKKwkJIiBUUlVFIiwKKwkJIiBG QUxTRSIsCisJCSIgVU5LTk9XTiIsCisJCSIgRU1QVFkgQVJSQVkiLAorCQkiIEVNUFRZIE9CSkVD VCIsCisJCSIgREVGQVVMVCAiCisJfTsKKworCWlmICgoaW50KSBiZWhhdmlvci0+YnR5cGUgPCAw IHx8IGJlaGF2aW9yLT5idHlwZSA+PSBsZW5ndGhvZihiZWhhdmlvcl9uYW1lcykpCisJCWVsb2co RVJST1IsICJpbnZhbGlkIGpzb24gYmVoYXZpb3IgdHlwZTogJWQiLCBiZWhhdmlvci0+YnR5cGUp OworCisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhjb250ZXh0LT5idWYsIGJlaGF2aW9yX25hbWVz W2JlaGF2aW9yLT5idHlwZV0pOworCisJaWYgKGJlaGF2aW9yLT5idHlwZSA9PSBKU09OX0JFSEFW SU9SX0RFRkFVTFQpCisJCWdldF9ydWxlX2V4cHIoYmVoYXZpb3ItPmV4cHIsIGNvbnRleHQsIGZh bHNlKTsKKworCWFwcGVuZFN0cmluZ0luZm8oY29udGV4dC0+YnVmLCAiIE9OICVzIiwgb24pOwor fQorCisvKgorICogZ2V0X2pzb25fZXhwcl9vcHRpb25zCisgKgorICogUGFyc2UgYmFjayBjb21t b24gb3B0aW9ucyBmb3IgSlNPTl9RVUVSWSwgSlNPTl9WQUxVRSwgSlNPTl9FWElTVFMuCisgKi8K K3N0YXRpYyB2b2lkCitnZXRfanNvbl9leHByX29wdGlvbnMoSnNvbkV4cHIgKmpzZXhwciwgZGVw YXJzZV9jb250ZXh0ICpjb250ZXh0LAorCQkJCQkgIEpzb25CZWhhdmlvclR5cGUgZGVmYXVsdF9i ZWhhdmlvcikKK3sKKwlpZiAoanNleHByLT5vcCA9PSBKU09OX1FVRVJZX09QKQorCXsKKwkJaWYg KGpzZXhwci0+d3JhcHBlciA9PSBKU1dfQ09ORElUSU9OQUwpCisJCQlhcHBlbmRTdHJpbmdJbmZv KGNvbnRleHQtPmJ1ZiwgIiBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIiKTsKKwkJZWxzZSBpZiAo anNleHByLT53cmFwcGVyID09IEpTV19VTkNPTkRJVElPTkFMKQorCQkJYXBwZW5kU3RyaW5nSW5m byhjb250ZXh0LT5idWYsICIgV0lUSCBVTkNPTkRJVElPTkFMIFdSQVBQRVIiKTsKKworCQlpZiAo anNleHByLT5vbWl0X3F1b3RlcykKKwkJCWFwcGVuZFN0cmluZ0luZm8oY29udGV4dC0+YnVmLCAi IE9NSVQgUVVPVEVTIik7CisJfQorCisJaWYgKGpzZXhwci0+b25fZW1wdHkgJiYganNleHByLT5v bl9lbXB0eS0+YnR5cGUgIT0gZGVmYXVsdF9iZWhhdmlvcikKKwkJZ2V0X2pzb25fYmVoYXZpb3Io anNleHByLT5vbl9lbXB0eSwgY29udGV4dCwgIkVNUFRZIik7CisKKwlpZiAoanNleHByLT5vbl9l cnJvciAmJiBqc2V4cHItPm9uX2Vycm9yLT5idHlwZSAhPSBkZWZhdWx0X2JlaGF2aW9yKQorCQln ZXRfanNvbl9iZWhhdmlvcihqc2V4cHItPm9uX2Vycm9yLCBjb250ZXh0LCAiRVJST1IiKTsKK30K IAogLyogLS0tLS0tLS0tLQogICogZ2V0X3J1bGVfZXhwcgkJCS0gUGFyc2UgYmFjayBhbiBleHBy ZXNzaW9uCkBAIC05NzQ1LDYgKzk4MDksNyBAQCBnZXRfcnVsZV9leHByKE5vZGUgKm5vZGUsIGRl cGFyc2VfY29udGV4dCAqY29udGV4dCwKIAkJCX0KIAkJCWJyZWFrOwogCisKIAkJY2FzZSBUX0pz b25WYWx1ZUV4cHI6CiAJCQl7CiAJCQkJSnNvblZhbHVlRXhwciAqanZlID0gKEpzb25WYWx1ZUV4 cHIgKikgbm9kZTsKQEAgLTk3OTQsNiArOTg1OSw2NCBAQCBnZXRfcnVsZV9leHByKE5vZGUgKm5v ZGUsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAkJCX0KIAkJCWJyZWFrOwogCisJCWNhc2Ug VF9Kc29uRXhwcjoKKwkJCXsKKwkJCQlKc29uRXhwciAgICpqZXhwciA9IChKc29uRXhwciAqKSBu b2RlOworCisJCQkJc3dpdGNoIChqZXhwci0+b3ApCisJCQkJeworCQkJCQljYXNlIEpTT05fRVhJ U1RTX09QOgorCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJKU09OX0VYSVNUUygi KTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIEpTT05fUVVFUllfT1A6CisJCQkJCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIkpTT05fUVVFUlkoIik7CisJCQkJCQlicmVhazsKKwkJCQkJ Y2FzZSBKU09OX1ZBTFVFX09QOgorCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJK U09OX1ZBTFVFKCIpOworCQkJCQkJYnJlYWs7CisJCQkJfQorCisJCQkJZ2V0X3J1bGVfZXhwcihq ZXhwci0+Zm9ybWF0dGVkX2V4cHIsIGNvbnRleHQsIHNob3dpbXBsaWNpdCk7CisKKwkJCQlhcHBl bmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiwgIik7CisKKwkJCQlnZXRfanNvbl9wYXRoX3NwZWMo amV4cHItPnBhdGhfc3BlYywgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKKworCQkJCWlmIChqZXhw ci0+cGFzc2luZ192YWx1ZXMpCisJCQkJeworCQkJCQlMaXN0Q2VsbCAgICpsYzEsCisJCQkJCQkJ ICAgKmxjMjsKKwkJCQkJYm9vbAkJbmVlZGNvbW1hID0gZmFsc2U7CisKKwkJCQkJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZyhidWYsICIgUEFTU0lORyAiKTsKKworCQkJCQlmb3Jib3RoKGxjMSwgamV4 cHItPnBhc3NpbmdfbmFtZXMsCisJCQkJCQkJbGMyLCBqZXhwci0+cGFzc2luZ192YWx1ZXMpCisJ CQkJCXsKKwkJCQkJCWlmIChuZWVkY29tbWEpCisJCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu ZyhidWYsICIsICIpOworCQkJCQkJbmVlZGNvbW1hID0gdHJ1ZTsKKworCQkJCQkJZ2V0X3J1bGVf ZXhwcigoTm9kZSAqKSBsZmlyc3QobGMyKSwgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKKwkJCQkJ CWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiIEFTICVzIiwKKwkJCQkJCQkJCQkgKChTdHJpbmcgKikg bGZpcnN0X25vZGUoU3RyaW5nLCBsYzEpKS0+c3ZhbCk7CisJCQkJCX0KKwkJCQl9CisKKwkJCQlp ZiAoamV4cHItPm9wICE9IEpTT05fRVhJU1RTX09QIHx8CisJCQkJCWpleHByLT5yZXR1cm5pbmct PnR5cGlkICE9IEJPT0xPSUQpCisJCQkJCWdldF9qc29uX3JldHVybmluZyhqZXhwci0+cmV0dXJu aW5nLCBjb250ZXh0LT5idWYsCisJCQkJCQkJCQkgICBqZXhwci0+b3AgPT0gSlNPTl9RVUVSWV9P UCk7CisKKwkJCQlnZXRfanNvbl9leHByX29wdGlvbnMoamV4cHIsIGNvbnRleHQsCisJCQkJCQkJ CQkgIGpleHByLT5vcCAhPSBKU09OX0VYSVNUU19PUCA/CisJCQkJCQkJCQkgIEpTT05fQkVIQVZJ T1JfTlVMTCA6CisJCQkJCQkJCQkgIEpTT05fQkVIQVZJT1JfRkFMU0UpOworCisJCQkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZyhidWYsICIpIik7CisJCQl9CisJCQlicmVhazsKKwogCQljYXNlIFRf TGlzdDoKIAkJCXsKIAkJCQljaGFyCSAgICpzZXA7CkBAIC05OTE3LDYgKzEwMDQwLDcgQEAgbG9v a3NfbGlrZV9mdW5jdGlvbihOb2RlICpub2RlKQogCQljYXNlIFRfTWluTWF4RXhwcjoKIAkJY2Fz ZSBUX1NRTFZhbHVlRnVuY3Rpb246CiAJCWNhc2UgVF9YbWxFeHByOgorCQljYXNlIFRfSnNvbkV4 cHI6CiAJCQkvKiB0aGVzZSBhcmUgYWxsIGFjY2VwdGVkIGJ5IGZ1bmNfZXhwcl9jb21tb25fc3Vi ZXhwciAqLwogCQkJcmV0dXJuIHRydWU7CiAJCWRlZmF1bHQ6CkBAIC0xMDc4Niw2ICsxMDkxMCwx OCBAQCBnZXRfY29uc3RfY29sbGF0aW9uKENvbnN0ICpjb25zdHZhbCwgZGVwYXJzZV9jb250ZXh0 ICpjb250ZXh0KQogCX0KIH0KIAorLyoKKyAqIGdldF9qc29uX3BhdGhfc3BlYwkJLSBQYXJzZSBi YWNrIGEgSlNPTiBwYXRoIHNwZWNpZmljYXRpb24KKyAqLworc3RhdGljIHZvaWQKK2dldF9qc29u X3BhdGhfc3BlYyhOb2RlICpwYXRoX3NwZWMsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwgYm9v bCBzaG93aW1wbGljaXQpCit7CisJaWYgKElzQShwYXRoX3NwZWMsIENvbnN0KSkKKwkJZ2V0X2Nv bnN0X2V4cHIoKENvbnN0ICopIHBhdGhfc3BlYywgY29udGV4dCwgLTEpOworCWVsc2UKKwkJZ2V0 X3J1bGVfZXhwcihwYXRoX3NwZWMsIGNvbnRleHQsIHNob3dpbXBsaWNpdCk7Cit9CisKIC8qCiAg KiBnZXRfanNvbl9mb3JtYXQJCQktIFBhcnNlIGJhY2sgYSBKc29uRm9ybWF0IG5vZGUKICAqLwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaCBiL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWNFeHByLmgKaW5kZXggYTI4ZGRjZGQ3Ny4uMmJhYzg3NzAwYiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaAorKysgYi9zcmMvaW5jbHVkZS9l eGVjdXRvci9leGVjRXhwci5oCkBAIC0yNDAsNiArMjQwLDkgQEAgdHlwZWRlZiBlbnVtIEV4cHJF dmFsT3AKIAlFRU9QX1hNTEVYUFIsCiAJRUVPUF9KU09OX0NPTlNUUlVDVE9SLAogCUVFT1BfSVNf SlNPTiwKKwlFRU9QX0pTT05FWFBSX1BBVEgsCisJRUVPUF9KU09ORVhQUl9DT0VSQ0lPTiwKKwlF RU9QX0pTT05FWFBSX0NPRVJDSU9OX0ZJTklTSCwKIAlFRU9QX0FHR1JFRiwKIAlFRU9QX0dST1VQ SU5HX0ZVTkMsCiAJRUVPUF9XSU5ET1dfRlVOQywKQEAgLTY5Miw2ICs2OTUsMjEgQEAgdHlwZWRl ZiBzdHJ1Y3QgRXhwckV2YWxTdGVwCiAJCQlKc29uSXNQcmVkaWNhdGUgKnByZWQ7CS8qIG9yaWdp bmFsIGV4cHJlc3Npb24gbm9kZSAqLwogCQl9CQkJaXNfanNvbjsKIAorCQkvKiBmb3IgRUVPUF9K U09ORVhQUl9QQVRIICovCisJCXN0cnVjdAorCQl7CisJCQlzdHJ1Y3QgSnNvbkV4cHJTdGF0ZSAq anNlc3RhdGU7CisJCX0JCQlqc29uZXhwcjsKKworCQkvKiBmb3IgRUVPUF9KU09ORVhQUl9DT0VS Q0lPTiAqLworCQlzdHJ1Y3QKKwkJeworCQkJSnNvbkNvZXJjaW9uICpjb2VyY2lvbjsKKwkJCUZt Z3JJbmZvICAgKmlucHV0X2ZpbmZvOworCQkJT2lkCQkJdHlwaW9wYXJhbTsKKwkJCXZvaWQJICAg Kmpzb25fcG9wdWxhdGVfdHlwZV9jYWNoZTsKKwkJCUVycm9yU2F2ZUNvbnRleHQgKmVzY29udGV4 dDsKKwkJfQkJCWpzb25leHByX2NvZXJjaW9uOwogCX0JCQlkOwogfSBFeHByRXZhbFN0ZXA7CiAK QEAgLTc1NSw3ICs3NzMsNiBAQCB0eXBlZGVmIHN0cnVjdCBKc29uQ29uc3RydWN0b3JFeHByU3Rh dGUKIAlpbnQJCQluYXJnczsKIH0gSnNvbkNvbnN0cnVjdG9yRXhwclN0YXRlOwogCi0KIC8qIGZ1 bmN0aW9ucyBpbiBleGVjRXhwci5jICovCiBleHRlcm4gdm9pZCBFeHByRXZhbFB1c2hTdGVwKEV4 cHJTdGF0ZSAqZXMsIGNvbnN0IEV4cHJFdmFsU3RlcCAqcyk7CiAKQEAgLTgwOSw2ICs4MjYsMTEg QEAgZXh0ZXJuIHZvaWQgRXhlY0V2YWxYbWxFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFs U3RlcCAqb3ApOwogZXh0ZXJuIHZvaWQgRXhlY0V2YWxKc29uQ29uc3RydWN0b3IoRXhwclN0YXRl ICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKIAkJCQkJCQkJCUV4cHJDb250ZXh0ICplY29udGV4 dCk7CiBleHRlcm4gdm9pZCBFeGVjRXZhbEpzb25Jc1ByZWRpY2F0ZShFeHByU3RhdGUgKnN0YXRl LCBFeHByRXZhbFN0ZXAgKm9wKTsKK2V4dGVybiB2b2lkIEV4ZWNFdmFsSnNvbkNvZXJjaW9uKEV4 cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsCisJCQkJCQkJCSBFeHByQ29udGV4dCAq ZWNvbnRleHQpOworZXh0ZXJuIHZvaWQgRXhlY0V2YWxKc29uQ29lcmNpb25GaW5pc2goRXhwclN0 YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCk7CitleHRlcm4gaW50CUV4ZWNFdmFsSnNvbkV4 cHJQYXRoKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsCisJCQkJCQkJCSBFeHBy Q29udGV4dCAqZWNvbnRleHQpOwogZXh0ZXJuIHZvaWQgRXhlY0V2YWxHcm91cGluZ0Z1bmMoRXhw clN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCk7CiBleHRlcm4gdm9pZCBFeGVjRXZhbFN1 YlBsYW4oRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKIAkJCQkJCQlFeHByQ29u dGV4dCAqZWNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVz LmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCA0NDRhNWYwZmQ1Li4xOTYx ZDllMGFhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTAwOCw2ICsxMDA4LDkzIEBAIHR5cGVk ZWYgc3RydWN0IERvbWFpbkNvbnN0cmFpbnRTdGF0ZQogCUV4cHJTdGF0ZSAgKmNoZWNrX2V4cHJz dGF0ZTsJLyogY2hlY2tfZXhwcidzIGV2YWwgc3RhdGUsIG9yIE5VTEwgKi8KIH0gRG9tYWluQ29u c3RyYWludFN0YXRlOwogCisvKgorICogSW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0YXRlIG9mIEpz b25QYXRoKiBldmFsdWF0aW9uLgorICovCit0eXBlZGVmIHN0cnVjdCBKc29uRXhwclBvc3RFdmFs U3RhdGUKK3sKKwkvKiBEaWQgSnNvblBhdGgqIGV2YWx1YXRpb24gY2F1c2UgYW4gZXJyb3I/ICov CisJTnVsbGFibGVEYXR1bSBlcnJvcjsKKworCS8qIElzIHRoZSByZXN1bHQgb2YgSnNvblBhdGgq IGV2YWx1YXRpb24gZW1wdHk/ICovCisJTnVsbGFibGVEYXR1bSBlbXB0eTsKKworCS8qCisJICog RXhlY0V2YWxKc29uRXhwclBhdGgoKSB3aWxsIHNldCB0aGlzIHRvIHRoZSBhZGRyZXNzIG9mIHRo ZSBzdGVwIHRvIHVzZQorCSAqIHRvIGNvZXJjZSB0aGUgcmVzdWx0IG9mIEpzb25QYXRoKiBldmFs dWF0aW9uIHRvIHRoZSBSRVRVUk5JTkcgdHlwZS4KKwkgKiBBbHNvIHNlZSB0aGUgZGVzY3JpcHRp b24gb2YgcG9zc2libGUgc3RlcCBhZGRyZXNzZXMgdGhhdCB0aGlzIGNvdWxkIGJlCisJICogc2V0 IHRvIGluIHRoZSBkZWZpbml0aW9uIG9mIEpzb25FeHByU3RhdGUuCisJICovCisJaW50CQkJanVt cF9ldmFsX2NvZXJjaW9uOworfSBKc29uRXhwclBvc3RFdmFsU3RhdGU7CisKKy8qIFN0YXRlIGZv ciBldmFsdWF0aW5nIGEgSnNvbkV4cHIsIHRvbyBiaWcgdG8gaW5saW5lICovCit0eXBlZGVmIHN0 cnVjdCBKc29uRXhwclN0YXRlCit7CisJLyogb3JpZ2luYWwgZXhwcmVzc2lvbiBub2RlICovCisJ SnNvbkV4cHIgICAqanNleHByOworCisJLyogdmFsdWUvaXNudWxsIGZvciBmb3JtYXR0ZWRfZXhw ciAqLworCU51bGxhYmxlRGF0dW0gZm9ybWF0dGVkX2V4cHI7CisKKwkvKiB2YWx1ZS9pc251bGwg Zm9yIHBhdGhzcGVjICovCisJTnVsbGFibGVEYXR1bSBwYXRoc3BlYzsKKworCS8qIEpzb25QYXRo VmFyaWFibGUgZW50cmllcyBmb3IgcGFzc2luZ192YWx1ZXMgKi8KKwlMaXN0CSAgICphcmdzOwor CisJLyoKKwkgKiBQZXItcm93IHJlc3VsdCBzdGF0dXMgaW5mbyBwb3B1bGF0ZWQgYnkgRXhlY0V2 YWxKc29uRXhwclBhdGgoKSBhbmQKKwkgKiBFeGVjRXZhbEpzb25Db2VyY2lvbkZpbmlzaCgpLgor CSAqLworCUpzb25FeHByUG9zdEV2YWxTdGF0ZSBwb3N0X2V2YWw7CisKKwkvKgorCSAqIEFkZHJl c3NlcyBvZiB0aGUgc3RlcHMgdGhhdCBpbXBsZW1lbnRzIHRoZSBub24tRVJST1IgdmFyaWFudCBv ZiBPTgorCSAqIEVNUFRZIGFuZCBPTiBFUlJPUiBiZWhhdmlvcnMsIHJlc3BlY3RpdmVseS4KKwkg Ki8KKwlpbnQJCQlqdW1wX2VtcHR5OworCWludAkJCWp1bXBfZXJyb3I7CisKKwkvKgorCSAqIEFk ZHJlc3NlcyBvZiBzdGVwcyB0byBwZXJmb3JtIHRoZSBjb2VyY2lvbiBvZiB0aGUgSnNvblBhdGgq IHJlc3VsdAorCSAqIHZhbHVlIHRvIHRoZSBSRVRVUk5JTkcgdHlwZS4gIEVhY2ggYWRkcmVzcyBw b2ludHMgdG8gZWl0aGVyIDEpIGEKKwkgKiBzcGVjaWFsIEVFT1BfSlNPTkVYUFJfQ09FUkNJT04g c3RlcCB0aGF0IGhhbmRsZXMgY29lcmNpb24gdXNpbmcgdGhlCisJICogUkVUVVJOSU5HIHR5cGUn cyBpbnB1dCBmdW5jdGlvbiBvciBieSB1c2luZyBqc29uX3ZpYV9wb3B1bGF0ZSgpLCBvciAyKQor CSAqIGFuIGV4cHJlc3Npb24gc3VjaCBhcyBDb2VyY2VWaWFJTy4gIEl0IG1heSBiZSAtMSBpZiBu byBjb2VyY2lvbiBpcworCSAqIG5lY2Vzc2FyeS4KKwkgKgorCSAqIGp1bXBfZXZhbF9yZXN1bHRf Y29lcmNpb24gcG9pbnRzIHRvIHRoZSBzdGVwIHRvIGV2YWx1YXRlIHRoZSBjb2VyY2lvbgorCSAq IGdpdmVuIGluIEpzb25FeHByLnJlc3VsdF9jb2VyY2lvbi4KKwkgKi8KKwlpbnQJCQlqdW1wX2V2 YWxfcmVzdWx0X2NvZXJjaW9uOworCisJLyogSnVtcCB0byBlbmQgdG8gc2tpcCBhbGwgdGhlIHN0 ZXBzIGFmdGVyIEVFT1BfSlNPTkVYUFJfUEFUSC4gKi8KKwlpbnQJCQlqdW1wX2VuZDsKKworCS8q CisJICogZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBzIGlzIGFuIGFycmF5IG9mIG51bV9pdGVtX2Nv ZXJjaW9ucyBlbGVtZW50cworCSAqIGVhY2ggY29udGFpbmluZyBhIHN0ZXAgYWRkcmVzcyB0byBl dmFsdWF0ZSB0aGUgY29lcmNpb24gZnJvbSBhIHZhbHVlIG9mCisJICogdGhlIGdpdmVuIEpzb25J dGVtVHlwZSB0byB0aGUgUkVUVVJOSU5HIHR5cGUsIG9yIC0xIGlmIG5vIGNvZXJjaW9uIGlzCisJ ICogbmVjZXNzYXJ5LiAgaXRlbV9jb2VyY2lvbl92aWFfZXhwciBpcyBhbiBhcnJheSBvZiBib29s ZWFuIGZsYWdzIG9mIHRoZQorCSAqIHNhbWUgbGVuZ3RoIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIg ZWFjaCB2YWxpZCBzdGVwIGFkZHJlc3MgaW4gdGhlCisJICogZXZhbF9pdGVtX2NvZXJjaW9uX2p1 bXBzIGFycmF5IHBvaW50cyB0byBhbiBleHByZXNzaW9uIG9yIGEKKwkgKiBFRU9QX0pTT05FWFBS X0NPRVJDSU9OIHN0ZXAuICBFeGVjRXZhbEpzb25FeHByUGF0aCgpIHdpbGwgY2F1c2UgYW4KKwkg KiBlcnJvciBpZiBpdCdzIHRoZSBsYXR0ZXIsIGJlY2F1c2UgdGhhdCBtb2RlIG9mIGNvZXJjaW9u IGlzIG5vdAorCSAqIHN1cHBvcnRlZCBmb3IgYWxsIEpzb25JdGVtVHlwZXMuCisJICovCisJaW50 CQkJbnVtX2l0ZW1fY29lcmNpb25zOworCWludAkJICAgKmV2YWxfaXRlbV9jb2VyY2lvbl9qdW1w czsKKwlib29sCSAgICppdGVtX2NvZXJjaW9uX3ZpYV9leHByOworCisJLyoKKwkgKiBGb3IgcGFz c2luZyB3aGVuIGluaXRpYWxpemluZyBhIEVFT1BfSU9DT0VSQ0VfU0FGRSBzdGVwIGZvciBhbnkK KwkgKiBDb2VyY2VWaWFJTyBub2RlcyBpbiB0aGUgZXhwcmVzc2lvbiB0aGF0IG11c3QgYmUgZXZh bHVhdGVkIGluIGFuCisJICogZXJyb3Itc2FmZSBtYW5uZXIuCisJICovCisJRXJyb3JTYXZlQ29u dGV4dCBlc2NvbnRleHQ7Cit9IEpzb25FeHByU3RhdGU7CisKIAogLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCQkJ IEV4ZWN1dG9yIFN0YXRlIFRyZWVzCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtl ZnVuY3MuaCBiL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCmluZGV4IDJkYzc5NjQ4ZDIu LjkxZDk1ZmM1MmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCisr KyBiL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCkBAIC0xMTIsNiArMTEyLDggQEAgZXh0 ZXJuIEpzb25Gb3JtYXQgKm1ha2VKc29uRm9ybWF0KEpzb25Gb3JtYXRUeXBlIHR5cGUsIEpzb25F bmNvZGluZyBlbmNvZGluZywKIAkJCQkJCQkJICBpbnQgbG9jYXRpb24pOwogZXh0ZXJuIEpzb25W YWx1ZUV4cHIgKm1ha2VKc29uVmFsdWVFeHByKEV4cHIgKnJhd19leHByLCBFeHByICpmb3JtYXR0 ZWRfZXhwciwKIAkJCQkJCQkJCQlKc29uRm9ybWF0ICpmb3JtYXQpOworZXh0ZXJuIEpzb25CZWhh dmlvciAqbWFrZUpzb25CZWhhdmlvcihKc29uQmVoYXZpb3JUeXBlIHR5cGUsIE5vZGUgKmV4cHIs CisJCQkJCQkJCQkgIEpzb25Db2VyY2lvbiAqY29lcmNpb24sIGludCBsb2NhdGlvbik7CiBleHRl cm4gTm9kZSAqbWFrZUpzb25LZXlWYWx1ZShOb2RlICprZXksIE5vZGUgKnZhbHVlKTsKIGV4dGVy biBOb2RlICptYWtlSnNvbklzUHJlZGljYXRlKE5vZGUgKmV4cHIsIEpzb25Gb3JtYXQgKmZvcm1h dCwKIAkJCQkJCQkJIEpzb25WYWx1ZVR5cGUgaXRlbV90eXBlLCBib29sIHVuaXF1ZV9rZXlzLApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGIzMTgxZjM0YWUuLjAxODRjNzZjZTYgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmgKQEAgLTE2OTIsNiArMTY5MiwyMyBAQCB0eXBlZGVmIHN0cnVjdCBUcmln Z2VyVHJhbnNpdGlvbgogCiAvKiBOb2RlcyBmb3IgU1FML0pTT04gc3VwcG9ydCAqLwogCisvKgor ICogSnNvblF1b3RlcyAtCisgKgkJcmVwcmVzZW50YXRpb24gb2YgW0tFRVB8T01JVF0gUVVPVEVT IGNsYXVzZSBmb3IgSlNPTl9RVUVSWSgpCisgKi8KK3R5cGVkZWYgZW51bSBKc29uUXVvdGVzCit7 CisJSlNfUVVPVEVTX1VOU1BFQywJCQkvKiB1bnNwZWNpZmllZCAqLworCUpTX1FVT1RFU19LRUVQ LAkJCQkvKiBLRUVQIFFVT1RFUyAqLworCUpTX1FVT1RFU19PTUlULAkJCQkvKiBPTUlUIFFVT1RF UyAqLworfSBKc29uUXVvdGVzOworCisvKgorICogSnNvblBhdGhTcGVjIC0KKyAqCQlyZXByZXNl bnRhdGlvbiBvZiBKU09OIHBhdGggY29uc3RhbnQKKyAqLwordHlwZWRlZiBjaGFyICpKc29uUGF0 aFNwZWM7CisKIC8qCiAgKiBKc29uT3V0cHV0IC0KICAqCQlyZXByZXNlbnRhdGlvbiBvZiBKU09O IG91dHB1dCBjbGF1c2UgKFJFVFVSTklORyB0eXBlIFtGT1JNQVQgZm9ybWF0XSkKQEAgLTE3MDMs NiArMTcyMCwzNiBAQCB0eXBlZGVmIHN0cnVjdCBKc29uT3V0cHV0CiAJSnNvblJldHVybmluZyAq cmV0dXJuaW5nOwkvKiBSRVRVUk5JTkcgRk9STUFUIGNsYXVzZSBhbmQgdHlwZSBPaWRzICovCiB9 IEpzb25PdXRwdXQ7CiAKKy8qCisgKiBKc29uQXJndW1lbnQgLQorICoJCXJlcHJlc2VudGF0aW9u IG9mIGFyZ3VtZW50IGZyb20gSlNPTiBQQVNTSU5HIGNsYXVzZQorICovCit0eXBlZGVmIHN0cnVj dCBKc29uQXJndW1lbnQKK3sKKwlOb2RlVGFnCQl0eXBlOworCUpzb25WYWx1ZUV4cHIgKnZhbDsJ CQkvKiBhcmd1bWVudCB2YWx1ZSBleHByZXNzaW9uICovCisJY2hhcgkgICAqbmFtZTsJCQkvKiBh cmd1bWVudCBuYW1lICovCit9IEpzb25Bcmd1bWVudDsKKworLyoKKyAqIEpzb25GdW5jRXhwciAt CisgKgkJdW50cmFuc2Zvcm1lZCByZXByZXNlbnRhdGlvbiBvZiBKU09OIGZ1bmN0aW9uIGV4cHJl c3Npb25zCisgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25GdW5jRXhwcgoreworCU5vZGVUYWcJCXR5 cGU7CisJSnNvbkV4cHJPcAlvcDsJCQkJLyogZXhwcmVzc2lvbiB0eXBlICovCisJSnNvblZhbHVl RXhwciAqY29udGV4dF9pdGVtOwkvKiBjb250ZXh0IGl0ZW0gZXhwcmVzc2lvbiAqLworCU5vZGUJ ICAgKnBhdGhzcGVjOwkJLyogSlNPTiBwYXRoIHNwZWNpZmljYXRpb24gZXhwcmVzc2lvbiAqLwor CUxpc3QJICAgKnBhc3Npbmc7CQkvKiBsaXN0IG9mIFBBU1NJTkcgY2xhdXNlIGFyZ3VtZW50cywg aWYgYW55ICovCisJSnNvbk91dHB1dCAqb3V0cHV0OwkJCS8qIG91dHB1dCBjbGF1c2UsIGlmIHNw ZWNpZmllZCAqLworCUpzb25CZWhhdmlvciAqb25fZW1wdHk7CQkvKiBPTiBFTVBUWSBiZWhhdmlv ciAqLworCUpzb25CZWhhdmlvciAqb25fZXJyb3I7CQkvKiBPTiBFUlJPUiBiZWhhdmlvciAqLwor CUpzb25XcmFwcGVyIHdyYXBwZXI7CQkvKiBhcnJheSB3cmFwcGVyIGJlaGF2aW9yIChKU09OX1FV RVJZIG9ubHkpICovCisJSnNvblF1b3RlcwlxdW90ZXM7CQkJLyogb21pdCBvciBrZWVwIHF1b3Rl cz8gKEpTT05fUVVFUlkgb25seSkgKi8KKwlpbnQJCQlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0 aW9uLCBvciAtMSBpZiB1bmtub3duICovCit9IEpzb25GdW5jRXhwcjsKKwogLyoKICAqIEpzb25L ZXlWYWx1ZSAtCiAgKgkJdW50cmFuc2Zvcm1lZCByZXByZXNlbnRhdGlvbiBvZiBKU09OIG9iamVj dCBrZXktdmFsdWUgcGFpciBmb3IKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1u b2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXggNjEyODlkODEyNC4u NDMzMGY0ZWUzNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKKysr IGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTE1NTIsNiArMTU1MiwxNyBAQCB0 eXBlZGVmIHN0cnVjdCBYbWxFeHByCiAJaW50CQkJbG9jYXRpb247CiB9IFhtbEV4cHI7CiAKKy8q CisgKiBKc29uRXhwck9wIC0KKyAqCQllbnVtZXJhdGlvbiBvZiBKU09OIGZ1bmN0aW9ucyB1c2lu ZyBKU09OIHBhdGgKKyAqLwordHlwZWRlZiBlbnVtIEpzb25FeHByT3AKK3sKKwlKU09OX1ZBTFVF X09QLAkJCQkvKiBKU09OX1ZBTFVFKCkgKi8KKwlKU09OX1FVRVJZX09QLAkJCQkvKiBKU09OX1FV RVJZKCkgKi8KKwlKU09OX0VYSVNUU19PUCwJCQkJLyogSlNPTl9FWElTVFMoKSAqLworfSBKc29u RXhwck9wOworCiAvKgogICogSnNvbkVuY29kaW5nIC0KICAqCQlyZXByZXNlbnRhdGlvbiBvZiBK U09OIEVOQ09ESU5HIGNsYXVzZQpAQCAtMTU4MiwxMSArMTU5MywzMiBAQCB0eXBlZGVmIGVudW0g SnNvbkZvcm1hdFR5cGUKICAqLwogdHlwZWRlZiBlbnVtIEpzb25XcmFwcGVyCiB7CisJSlNXX1VO U1BFQywKIAlKU1dfTk9ORSwKIAlKU1dfQ09ORElUSU9OQUwsCiAJSlNXX1VOQ09ORElUSU9OQUws CiB9IEpzb25XcmFwcGVyOwogCisvKgorICogSnNvbkJlaGF2aW9yVHlwZSAtCisgKgkJZW51bWVy YXRpb24gb2YgYmVoYXZpb3IgdHlwZXMgdXNlZCBpbiBKU09OIE9OIC4uLiBCRUhBVklPUiBjbGF1 c2UKKyAqCisgKiAJCUlmIGVudW0gbWVtYmVycyBhcmUgcmVvcmRlcmVkLCBnZXRfanNvbl9iZWhh dmlvcigpIGZyb20gcnVsZXV0aWxzLmMKKyAqIAkJbXVzdCBiZSB1cGRhdGVkIGFjY29yZGluZ2x5 LgorICovCit0eXBlZGVmIGVudW0gSnNvbkJlaGF2aW9yVHlwZQoreworCUpTT05fQkVIQVZJT1Jf TlVMTCA9IDAsCisJSlNPTl9CRUhBVklPUl9FUlJPUiwKKwlKU09OX0JFSEFWSU9SX0VNUFRZLAor CUpTT05fQkVIQVZJT1JfVFJVRSwKKwlKU09OX0JFSEFWSU9SX0ZBTFNFLAorCUpTT05fQkVIQVZJ T1JfVU5LTk9XTiwKKwlKU09OX0JFSEFWSU9SX0VNUFRZX0FSUkFZLAorCUpTT05fQkVIQVZJT1Jf RU1QVFlfT0JKRUNULAorCUpTT05fQkVIQVZJT1JfREVGQVVMVCwKK30gSnNvbkJlaGF2aW9yVHlw ZTsKKwogLyoKICAqIEpzb25Gb3JtYXQgLQogICoJCXJlcHJlc2VudGF0aW9uIG9mIEpTT04gRk9S TUFUIGNsYXVzZQpAQCAtMTY4MSw2ICsxNzEzLDEzOCBAQCB0eXBlZGVmIHN0cnVjdCBKc29uSXNQ cmVkaWNhdGUKIAlpbnQJCQlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1 bmtub3duICovCiB9IEpzb25Jc1ByZWRpY2F0ZTsKIAorLyoKKyAqIEpzb25Db2VyY2lvbgorICoJ CUluZm9ybWF0aW9uIGFib3V0IGNvZXJjaW5nIGEgU1FML0pTT04gdmFsdWUgdG8gdGhlIHNwZWNp ZmllZAorICoJCXR5cGUgYXQgcnVudGltZSB1c2luZyBqc29uX3BvcHVsYXRlX3R5cGUoKSBvciBi eSBjYWxsaW5nIHRoZSB0eXBlJ3MKKyAqCQlpbnB1dCBmdW50aW9uLgorICoKKyAqIEEgbm9kZSBv ZiB0aGlzIHR5cGUgaXMgY3JlYXRlZCBpZiB0aGUgcGFyc2VyIGNhbm5vdCBmaW5kIGEgY2FzdCBl eHByZXNzaW9uCisgKiB1c2luZyBjb2VyY2VfdHlwZSgpLgorICovCit0eXBlZGVmIHN0cnVjdCBK c29uQ29lcmNpb24KK3sKKwlOb2RlVGFnCQl0eXBlOworCisJT2lkCQkJdGFyZ2V0dHlwZTsKKwlp bnQzMgkJdGFyZ2V0dHlwbW9kOworCWJvb2wJCW9taXRfcXVvdGVzOwkvKiBvbWl0IHF1b3RlcyBm cm9tIHNjYWxhciBvdXRwdXQgc3RyaW5ncz8gKi8KKwlPaWQJCQljb2xsYXRpb247CQkvKiBjb2xs YXRpb24gZm9yIGNvZXJjaW9uIHZpYSBJL08gb3IgcG9wdWxhdGUgKi8KK30gSnNvbkNvZXJjaW9u OworCisvKgorICogSnNvbkl0ZW1UeXBlCisgKgkJUG9zc2libGUgdHlwZXMgZm9yIHNjYWxhciB2 YWx1ZXMgcmV0dXJuZWQgYnkgSlNPTl9WQUxVRSgpCisgKgorICogVGhlIGNvbW1lbnQgbmV4dCB0 byBlYWNoIGl0ZW0gdHlwZSBtZW50aW9ucyB0aGUgY29ycmVzcG9uZGluZworICogSnNvbmJWYWx1 ZS5qYnZUeXBlLgorICovCit0eXBlZGVmIGVudW0gSnNvbkl0ZW1UeXBlCit7CisJSnNvbkl0ZW1U eXBlTnVsbCwJCQkvKiBqYnZOdWxsICovCisJSnNvbkl0ZW1UeXBlU3RyaW5nLAkJCS8qIGpidlN0 cmluZyAqLworCUpzb25JdGVtVHlwZU51bWVyaWMsCQkvKiBqYnZOdW1lcmljICovCisJSnNvbkl0 ZW1UeXBlQm9vbGVhbiwJCS8qIGpidkJvb2wgKi8KKwlKc29uSXRlbVR5cGVEYXRlLAkJCS8qIGpi dkRhdGV0aW1lOiBEQVRFT0lEICovCisJSnNvbkl0ZW1UeXBlVGltZSwJCQkvKiBqYnZEYXRldGlt ZTogVElNRU9JRCAqLworCUpzb25JdGVtVHlwZVRpbWV0eiwJCQkvKiBqYnZEYXRldGltZTogVElN RVRaT0lEICovCisJSnNvbkl0ZW1UeXBlVGltZXN0YW1wLAkJLyogamJ2RGF0ZXRpbWU6IFRJTUVT VEFNUE9JRCAqLworCUpzb25JdGVtVHlwZVRpbWVzdGFtcHR6LAkvKiBqYnZEYXRldGltZTogVElN RVNUQU1QVFpPSUQgKi8KKwlKc29uSXRlbVR5cGVDb21wb3NpdGUsCQkvKiBqYnZBcnJheSwgamJ2 T2JqZWN0LCBqYnZCaW5hcnkgKi8KKwlKc29uSXRlbVR5cGVJbnZhbGlkLAorfSBKc29uSXRlbVR5 cGU7CisKKy8qCisgKiBKc29uSXRlbUNvZXJjaW9uCisgKgkJQ29lcmNpb24gZXhwcmVzc2lvbiBm b3IgdGhlIGdpdmVuIEpzb25JdGVtVHlwZQorICoKKyAqIElmIG5vdCBOVUxMLCAnY29lcmNpb24n IGdpdmVuIHRoZSBleHByZXNzaW9uIG5vZGUgdG8gY29udmVydCBhIHNjYWxhciB2YWx1ZQorICog ZXh0cmFjdGVkIGZyb20gYSBKc29uYlZhbHVlIG9mIHRoZSBnaXZlbiB0eXBlIHRvIHRoZSB0YXJn ZXQgdHlwZSBnaXZlbiBieQorICogSnNvbkV4cHIucmV0dXJuaW5nLiAgTlVMTCBtZWFucyB0aGUg Y29lcmNpb24gaXMgdW5uZWNlc3NhcnkuCisgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25JdGVtQ29l cmNpb24KK3sKKwlOb2RlVGFnCQl0eXBlOworCisJSnNvbkl0ZW1UeXBlIGl0ZW1fdHlwZTsKKwlO b2RlCSAgICpjb2VyY2lvbjsKK30gSnNvbkl0ZW1Db2VyY2lvbjsKKworLyoKKyAqIEpzb25CZWhh dmlvcgorICoJCUluZm9ybWF0aW9uIGFib3V0IE9OIEVSUk9SIC8gT04gRU1QVFkgYmVoYXZpb3Jz IG9mIEpTT05fVkFMVUUoKSwKKyAqCQlKU09OX1FVRVJZKCksIGFuZCBKU09OX0VYSVNUUygpCisg KgorICogJ2V4cHInIGlzIHRoZSBleHByZXNzaW9uIHRvIGVtaXQgd2hlbiBhIGdpdmVuIGJlaGF2 aW9yIChFTVBUWSBvciBFUlJPUikKKyAqIG9jY3VycyBvbiBldmFsdWF0aW5nIHRoZSBTUUwvSlNP TiBxdWVyeSBmdW5jdGlvbi4gICdjb2VyY2lvbicgaXMgc2V0CisgKiBpZiAnZXhwcicgaXNuJ3Qg YWxyZWFkeSBvZiB0aGUgZXhwZWN0ZWQgdGFyZ2V0IHR5cGUgZ2l2ZW4gYnkKKyAqIEpzb25FeHBy LnJldHVybmluZy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgSnNvbkJlaGF2aW9yCit7CisJTm9kZVRh ZwkJdHlwZTsKKworCUpzb25CZWhhdmlvclR5cGUgYnR5cGU7CisJTm9kZQkgICAqZXhwcjsKKwlK c29uQ29lcmNpb24gKmNvZXJjaW9uOwkJLyogdG8gY29lcmNlIGJlaGF2aW9yIGV4cHJlc3Npb24g d2hlbiB0aGVyZSBpcworCQkJCQkJCQkgKiBubyBjYXN0IHRvIHRoZSB0YXJnZXQgdHlwZSAqLwor CWludAkJCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8K K30gSnNvbkJlaGF2aW9yOworCisvKgorICogSnNvbkV4cHIgLQorICoJCVRyYW5zZm9ybWVkIHJl cHJlc2VudGF0aW9uIG9mIEpTT05fVkFMVUUoKSwgSlNPTl9RVUVSWSgpLCBhbmQKKyAqCQlKU09O X0VYSVNUUygpCisgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25FeHByCit7CisJRXhwcgkJeHByOwor CisJLyogSlNPTl8qIGZ1bmN0aW9uIGlkZW50aWZpZXIgKi8KKwlKc29uRXhwck9wCW9wOworCisJ LyoganNvbihiKS12YWx1ZWQgZXhwcmVzc2lvbiB0byBxdWVyeSAqLworCU5vZGUJICAgKmZvcm1h dHRlZF9leHByOworCisJLyogRm9ybWF0IG9mIHRoZSBhYm92ZSBleHByZXNzaW9uIG5lZWRlZCBi eSBydWxldXRpbHMuYyAqLworCUpzb25Gb3JtYXQgKmZvcm1hdDsKKworCS8qIGpzb3BhdGgtdmFs dWVkIGV4cHJlc3Npb24gY29udGFpbmluZyB0aGUgcXVlcnkgcGF0dGVybiAqLworCU5vZGUJICAg KnBhdGhfc3BlYzsKKworCS8qIEV4cGVjdGVkIHR5cGUvZm9ybWF0IG9mIHRoZSBvdXRwdXQuICov CisJSnNvblJldHVybmluZyAqcmV0dXJuaW5nOworCisJLyogSW5mb3JtYXRpb24gYWJvdXQgdGhl IFBBU1NJTkcgYXJndW1lbnQgZXhwcmVzc2lvbnMgKi8KKwlMaXN0CSAgICpwYXNzaW5nX25hbWVz OworCUxpc3QJICAgKnBhc3NpbmdfdmFsdWVzOworCisJLyogVXNlLXNwZWNpZmllZCBvciBkZWZh dWx0IE9OIEVNUFRZIGFuZCBPTiBFUlJPUiBiZWhhdmlvcnMgKi8KKwlKc29uQmVoYXZpb3IgKm9u X2VtcHR5OworCUpzb25CZWhhdmlvciAqb25fZXJyb3I7CisKKwkvKgorCSAqIEV4cHJlc3Npb24g dG8gY29udmVydCB0aGUgcmVzdWx0IG9mIEpTT05fKiBmdW5jdGlvbiB0byB0aGUgUkVUVVJOSU5H CisJICogdHlwZQorCSAqLworCU5vZGUJICAgKnJlc3VsdF9jb2VyY2lvbjsKKworCS8qCisJICog TGlzdCBvZiBleHByZXNzaW9ucyBmb3IgY29lcmNpbmcgSlNPTl9WQUxVRSgpIHJlc3VsdCB2YWx1 ZXMsIGNvbnRhaW5pbmcKKwkgKiBvbmUgZWxlbWVudCBmb3IgZXZlcnkgSnNvbkl0ZW1UeXBlLgor CSAqLworCUxpc3QJICAgKml0ZW1fY29lcmNpb25zOworCisJLyogV1JBUFBFUiBzcGVjaWZpY2F0 aW9uIGZvciBKU09OX1FVRVJZICovCisJSnNvbldyYXBwZXIgd3JhcHBlcjsKKworCS8qIEtFRVAg b3IgT01JVCBRVU9URVMgZm9yIHNpbmdsZXRvbiBzY2FsYXJzIHJldHVybmVkIGJ5IEpTT05fUVVF UlkoKSAqLworCWJvb2wJCW9taXRfcXVvdGVzOworCisJLyogT3JpZ2luYWwgSnNvbkZ1bmNFeHBy J3MgbG9jYXRpb24gKi8KKwlpbnQJCQlsb2NhdGlvbjsKK30gSnNvbkV4cHI7CisKIC8qIC0tLS0t LS0tLS0tLS0tLS0KICAqIE51bGxUZXN0CiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFy c2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IDIzMzFhY2Fj MDkuLjk0ZTFjYjRkY2UgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAor KysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTkzLDYgKzkzLDcgQEAgUEdfS0VZ V09SRCgiY29tbWl0IiwgQ09NTUlULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJjb21taXR0ZWQiLCBDT01NSVRURUQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoImNvbXByZXNzaW9uIiwgQ09NUFJFU1NJT04sIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImNvbmN1cnJlbnRseSIsIENPTkNV UlJFTlRMWSwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQo ImNvbmRpdGlvbmFsIiwgQ09ORElUSU9OQUwsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoImNvbmZpZ3VyYXRpb24iLCBDT05GSUdVUkFUSU9OLCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJjb25mbGljdCIsIENPTkZMSUNULCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJjb25uZWN0aW9uIiwg Q09OTkVDVElPTiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpAQCAtMTQ3LDExICsx NDgsMTMgQEAgUEdfS0VZV09SRCgiZG91YmxlIiwgRE9VQkxFX1AsIFVOUkVTRVJWRURfS0VZV09S RCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImRyb3AiLCBEUk9QLCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJlYWNoIiwgRUFDSCwgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZWxzZSIsIEVMU0UsIFJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJlbXB0eSIsIEVNUFRZX1AsIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImVuYWJsZSIsIEVOQUJMRV9QLCBVTlJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJlbmNvZGluZyIsIEVOQ09E SU5HLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJlbmNyeXB0 ZWQiLCBFTkNSWVBURUQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoImVuZCIsIEVORF9QLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgiZW51bSIsIEVOVU1fUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZ V09SRCgiZXJyb3IiLCBFUlJPUl9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJlc2NhcGUiLCBFU0NBUEUsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoImV2ZW50IiwgRVZFTlQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoImV4Y2VwdCIsIEVYQ0VQVCwgUkVTRVJWRURfS0VZV09SRCwgQVNf TEFCRUwpCkBAIC0yMzMsMTAgKzIzNiwxNCBAQCBQR19LRVlXT1JEKCJqb2luIiwgSk9JTiwgVFlQ RV9GVU5DX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImpzb24iLCBKU09O LCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgianNvbl9hcnJheSIs IEpTT05fQVJSQVksIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJq c29uX2FycmF5YWdnIiwgSlNPTl9BUlJBWUFHRywgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJF TCkKK1BHX0tFWVdPUkQoImpzb25fZXhpc3RzIiwgSlNPTl9FWElTVFMsIENPTF9OQU1FX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJqc29uX29iamVjdCIsIEpTT05fT0JKRUNULCBD T0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgianNvbl9vYmplY3RhZ2ci LCBKU09OX09CSkVDVEFHRywgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdP UkQoImpzb25fcXVlcnkiLCBKU09OX1FVRVJZLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgianNvbl9zY2FsYXIiLCBKU09OX1NDQUxBUiwgQ09MX05BTUVfS0VZV09S RCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImpzb25fc2VyaWFsaXplIiwgSlNPTl9TRVJJQUxJ WkUsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJqc29uX3ZhbHVl IiwgSlNPTl9WQUxVRSwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQo ImtlZXAiLCBLRUVQLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJrZXkiLCBLRVksIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo ImtleXMiLCBLRVlTLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJsYWJlbCIsIExBQkVMLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBAIC0zMDIs NiArMzA5LDcgQEAgUEdfS0VZV09SRCgib2ZmIiwgT0ZGLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJB UkVfTEFCRUwpCiBQR19LRVlXT1JEKCJvZmZzZXQiLCBPRkZTRVQsIFJFU0VSVkVEX0tFWVdPUkQs IEFTX0xBQkVMKQogUEdfS0VZV09SRCgib2lkcyIsIE9JRFMsIFVOUkVTRVJWRURfS0VZV09SRCwg QkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoIm9sZCIsIE9MRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQorUEdfS0VZV09SRCgib21pdCIsIE9NSVQsIFVOUkVTRVJWRURfS0VZV09SRCwg QkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoIm9uIiwgT04sIFJFU0VSVkVEX0tFWVdPUkQsIEFTX0xB QkVMKQogUEdfS0VZV09SRCgib25seSIsIE9OTFksIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCiBQR19LRVlXT1JEKCJvcGVyYXRvciIsIE9QRVJBVE9SLCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCkBAIC0zNDQsNiArMzUyLDcgQEAgUEdfS0VZV09SRCgicHJvY2VkdXJlcyIs IFBST0NFRFVSRVMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo InByb2dyYW0iLCBQUk9HUkFNLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJwdWJsaWNhdGlvbiIsIFBVQkxJQ0FUSU9OLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJB UkVfTEFCRUwpCiBQR19LRVlXT1JEKCJxdW90ZSIsIFFVT1RFLCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJxdW90ZXMiLCBRVU9URVMsIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInJhbmdlIiwgUkFOR0UsIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInJlYWQiLCBSRUFELCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJyZWFsIiwgUkVBTCwgQ09MX05BTUVf S0VZV09SRCwgQkFSRV9MQUJFTCkKQEAgLTQxNCw2ICs0MjMsNyBAQCBQR19LRVlXT1JEKCJzdGRv dXQiLCBTVERPVVQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo InN0b3JhZ2UiLCBTVE9SQUdFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJzdG9yZWQiLCBTVE9SRUQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK IFBHX0tFWVdPUkQoInN0cmljdCIsIFNUUklDVF9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCitQR19LRVlXT1JEKCJzdHJpbmciLCBTVFJJTkdfUCwgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic3RyaXAiLCBTVFJJUF9QLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzdWJzY3JpcHRpb24iLCBTVUJTQ1JJUFRJ T04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInN1YnN0cmlu ZyIsIFNVQlNUUklORywgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKQEAgLTQ0OSw2ICs0 NTksNyBAQCBQR19LRVlXT1JEKCJ0eXBlcyIsIFRZUEVTX1AsIFVOUkVTRVJWRURfS0VZV09SRCwg QkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInVlc2NhcGUiLCBVRVNDQVBFLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ1bmJvdW5kZWQiLCBVTkJPVU5ERUQsIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInVuY29tbWl0dGVkIiwg VU5DT01NSVRURUQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQo InVuY29uZGl0aW9uYWwiLCBVTkNPTkRJVElPTkFMLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJ1bmVuY3J5cHRlZCIsIFVORU5DUllQVEVELCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ1bmlvbiIsIFVOSU9OLCBSRVNFUlZF RF9LRVlXT1JELCBBU19MQUJFTCkKIFBHX0tFWVdPUkQoInVuaXF1ZSIsIFVOSVFVRSwgUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2Zv cm1hdHRpbmcuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2Zvcm1hdHRpbmcuaAppbmRleCA3ZWExYTcw ZjcxLi5jZGUwMzA0MTRlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9mb3JtYXR0aW5n LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvZm9ybWF0dGluZy5oCkBAIC0yOSw1ICsyOSw2IEBA IGV4dGVybiBjaGFyICphc2NfaW5pdGNhcChjb25zdCBjaGFyICpidWZmLCBzaXplX3QgbmJ5dGVz KTsKIGV4dGVybiBEYXR1bSBwYXJzZV9kYXRldGltZSh0ZXh0ICpkYXRlX3R4dCwgdGV4dCAqZm10 LCBPaWQgY29sbGlkLCBib29sIHN0cmljdCwKIAkJCQkJCQlPaWQgKnR5cGlkLCBpbnQzMiAqdHlw bW9kLCBpbnQgKnR6LAogCQkJCQkJCXN0cnVjdCBOb2RlICplc2NvbnRleHQpOworZXh0ZXJuIGJv b2wgZGF0ZXRpbWVfZm9ybWF0X2hhc190eihjb25zdCBjaGFyICpmbXRfc3RyKTsKIAogI2VuZGlm CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9qc29uYi5oIGIvc3JjL2luY2x1ZGUvdXRp bHMvanNvbmIuaAppbmRleCBlMzhkZmQ0OTAxLi5kNTg5YWNlNWEyIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS91dGlscy9qc29uYi5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25iLmgKQEAg LTQyMiw2ICs0MjIsNyBAQCBleHRlcm4gY2hhciAqSnNvbmJUb0NTdHJpbmcoU3RyaW5nSW5mbyBv dXQsIEpzb25iQ29udGFpbmVyICppbiwKIAkJCQkJCQlpbnQgZXN0aW1hdGVkX2xlbik7CiBleHRl cm4gY2hhciAqSnNvbmJUb0NTdHJpbmdJbmRlbnQoU3RyaW5nSW5mbyBvdXQsIEpzb25iQ29udGFp bmVyICppbiwKIAkJCQkJCQkJICBpbnQgZXN0aW1hdGVkX2xlbik7CitleHRlcm4gY2hhciAqSnNv bmJVbnF1b3RlKEpzb25iICpqYik7CiBleHRlcm4gYm9vbCBKc29uYkV4dHJhY3RTY2FsYXIoSnNv bmJDb250YWluZXIgKmpiYywgSnNvbmJWYWx1ZSAqcmVzKTsKIGV4dGVybiBjb25zdCBjaGFyICpK c29uYlR5cGVOYW1lKEpzb25iVmFsdWUgKnZhbCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3V0aWxzL2pzb25mdW5jcy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbmZ1bmNzLmgKaW5kZXgg MzFjMWFlNDc2Ny4uMTkwZTEzMjg0YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvanNv bmZ1bmNzLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbmZ1bmNzLmgKQEAgLTE1LDYgKzE1 LDcgQEAKICNkZWZpbmUgSlNPTkZVTkNTX0gKIAogI2luY2x1ZGUgImNvbW1vbi9qc29uYXBpLmgi CisjaW5jbHVkZSAibm9kZXMvbm9kZXMuaCIKICNpbmNsdWRlICJ1dGlscy9qc29uYi5oIgogCiAv KgpAQCAtODgsNCArODksMTAgQEAgZXh0ZXJuIERhdHVtIGRhdHVtX3RvX2pzb25iKERhdHVtIHZh bCwgSnNvblR5cGVDYXRlZ29yeSB0Y2F0ZWdvcnksCiAJCQkJCQkJT2lkIG91dGZ1bmNvaWQpOwog ZXh0ZXJuIERhdHVtIGpzb25iX2Zyb21fdGV4dCh0ZXh0ICpqcywgYm9vbCB1bmlxdWVfa2V5cyk7 CiAKK2V4dGVybiBEYXR1bSBqc29uX3BvcHVsYXRlX3R5cGUoRGF0dW0ganNvbl92YWwsIE9pZCBq c29uX3R5cGUsCisJCQkJCQkJCU9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLAorCQkJCQkJCQl2b2lk ICoqY2FjaGUsIE1lbW9yeUNvbnRleHQgbWN4dCwKKwkJCQkJCQkJYm9vbCAqaXNudWxsLAorCQkJ CQkJCQlOb2RlICplc2NvbnRleHQpOworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3V0aWxzL2pzb25wYXRoLmggYi9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oCmluZGV4IDZl YWJkY2ZiNzUuLjg5N2RlMjFhNTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25w YXRoLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaApAQCAtMTkyLDYgKzE5Miw3 IEBAIGV4dGVybiBib29sIGpzcEdldEJvb2woSnNvblBhdGhJdGVtICp2KTsKIGV4dGVybiBjaGFy ICpqc3BHZXRTdHJpbmcoSnNvblBhdGhJdGVtICp2LCBpbnQzMiAqbGVuKTsKIGV4dGVybiBib29s IGpzcEdldEFycmF5U3Vic2NyaXB0KEpzb25QYXRoSXRlbSAqdiwgSnNvblBhdGhJdGVtICpmcm9t LAogCQkJCQkJCQkgSnNvblBhdGhJdGVtICp0bywgaW50IGkpOworZXh0ZXJuIGJvb2wganNwSXNN dXRhYmxlKEpzb25QYXRoICpwYXRoLCBMaXN0ICp2YXJuYW1lcywgTGlzdCAqdmFyZXhwcnMpOwog CiBleHRlcm4gY29uc3QgY2hhciAqanNwT3BlcmF0aW9uTmFtZShKc29uUGF0aEl0ZW1UeXBlIHR5 cGUpOwogCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvZWNwZy50cmFp bGVyIGIvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL2VjcGcudHJhaWxlcgppbmRleCA0MzVj MTM5ZWMyLi5iMmFhNDRmMzZkIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXBy b2MvZWNwZy50cmFpbGVyCisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9lY3BnLnRy YWlsZXIKQEAgLTY1MSw2ICs2NTEsMzQgQEAgdmFyX3R5cGU6CXNpbXBsZV90eXBlCiAJCQkkJC50 eXBlX2luZGV4ID0gbW1fc3RyZHVwKCItMSIpOwogCQkJJCQudHlwZV9zaXplb2YgPSBOVUxMOwog CQl9CisJCXwgU1RSSU5HX1AKKwkJeworCQkJaWYgKElORk9STUlYX01PREUpCisJCQl7CisJCQkJ LyogSW4gSW5mb3JtaXggbW9kZSwgInN0cmluZyIgaXMgYXV0b21hdGljYWxseSBhIHR5cGVkZWYg Ki8KKwkJCQkkJC50eXBlX2VudW0gPSBFQ1BHdF9zdHJpbmc7CisJCQkJJCQudHlwZV9zdHIgPSBt bV9zdHJkdXAoImNoYXIiKTsKKwkJCQkkJC50eXBlX2RpbWVuc2lvbiA9IG1tX3N0cmR1cCgiLTEi KTsKKwkJCQkkJC50eXBlX2luZGV4ID0gbW1fc3RyZHVwKCItMSIpOworCQkJCSQkLnR5cGVfc2l6 ZW9mID0gTlVMTDsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQkvKiBPdGhlcndpc2UsIGxlZ2Fs IG9ubHkgaWYgdXNlciB0eXBlZGVmJ2VkIGl0ICovCisJCQkJc3RydWN0IHR5cGVkZWZzICp0aGlz ID0gZ2V0X3R5cGVkZWYoInN0cmluZyIsIGZhbHNlKTsKKworCQkJCSQkLnR5cGVfc3RyID0gKHRo aXMtPnR5cGUtPnR5cGVfZW51bSA9PSBFQ1BHdF92YXJjaGFyIHx8IHRoaXMtPnR5cGUtPnR5cGVf ZW51bSA9PSBFQ1BHdF9ieXRlYSkgPyBFTVBUWSA6IG1tX3N0cmR1cCh0aGlzLT5uYW1lKTsKKwkJ CQkkJC50eXBlX2VudW0gPSB0aGlzLT50eXBlLT50eXBlX2VudW07CisJCQkJJCQudHlwZV9kaW1l bnNpb24gPSB0aGlzLT50eXBlLT50eXBlX2RpbWVuc2lvbjsKKwkJCQkkJC50eXBlX2luZGV4ID0g dGhpcy0+dHlwZS0+dHlwZV9pbmRleDsKKwkJCQlpZiAodGhpcy0+dHlwZS0+dHlwZV9zaXplb2Yg JiYgc3RybGVuKHRoaXMtPnR5cGUtPnR5cGVfc2l6ZW9mKSAhPSAwKQorCQkJCQkkJC50eXBlX3Np emVvZiA9IHRoaXMtPnR5cGUtPnR5cGVfc2l6ZW9mOworCQkJCWVsc2UKKwkJCQkJJCQudHlwZV9z aXplb2YgPSBjYXRfc3RyKDMsIG1tX3N0cmR1cCgic2l6ZW9mKCIpLCBtbV9zdHJkdXAodGhpcy0+ bmFtZSksIG1tX3N0cmR1cCgiKSIpKTsKKworCQkJCXN0cnVjdF9tZW1iZXJfbGlzdFtzdHJ1Y3Rf bGV2ZWxdID0gRUNQR3N0cnVjdF9tZW1iZXJfZHVwKHRoaXMtPnN0cnVjdF9tZW1iZXJfbGlzdCk7 CisJCQl9CisJCX0KIAkJfCBJTlRFUlZBTCBlY3BnX2ludGVydmFsCiAJCXsKIAkJCSQkLnR5cGVf ZW51bSA9IEVDUEd0X2ludGVydmFsOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9zcWxqc29uX3F1ZXJ5ZnVuY3Mub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9z cWxqc29uX3F1ZXJ5ZnVuY3Mub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAuLmYwMjM4MWRlMjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3NxbGpzb25fcXVlcnlmdW5jcy5vdXQKQEAgLTAsMCArMSwxMTQ1IEBACistLSBKU09OX0VY SVNUUworLS0ganNvbiBhcmd1bWVudHMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQKK1NFTEVDVCBK U09OX0VYSVNUUyhOVUxMIEZPUk1BVCBKU09OLCAnJCcpOworRVJST1I6ICBKU09OX0VYSVNUUygp IGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIHRoZSBqc29uIHR5cGUKK0xJTkUgMTogU0VMRUNU IEpTT05fRVhJU1RTKE5VTEwgRk9STUFUIEpTT04sICckJyk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICBeCitISU5UOiAgVHJ5IGNhc3RpbmcgdGhlIGFyZ3VtZW50IHRvIGpzb25iCitTRUxF Q1QgSlNPTl9FWElTVFMoTlVMTDo6anNvbmIsICckJyk7CisganNvbl9leGlzdHMgCistLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnW10nLCAnJCcp OworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIEpT T05fRVhJU1RTKEpTT05fT0JKRUNUKFJFVFVSTklORyBqc29uYiksICckJyk7CisganNvbl9leGlz dHMgCistLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNv bmIgJzEnLCAnJCcpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykK KworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICdudWxsJywgJyQnKTsKKyBqc29uX2V4aXN0cyAK Ky0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAn W10nLCAnJCcpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKwor U0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJyQuYScpOworIGpzb25fZXhpc3RzIAorLS0t LS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywg J3N0cmljdCAkLmEnKTsgLS0gRkFMU0Ugb24gZXJyb3IKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0t LS0tLS0KKyBmCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICdzdHJp Y3QgJC5hJyBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIGpzb25wYXRoIG1lbWJlciBhY2Nlc3Nv ciBjYW4gb25seSBiZSBhcHBsaWVkIHRvIGFuIG9iamVjdAorU0VMRUNUIEpTT05fRVhJU1RTKGpz b25iICdudWxsJywgJyQuYScpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIGYKKygx IHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICdbXScsICckLmEnKTsKKyBqc29uX2V4 aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhq c29uYiAnWzEsICJhYWEiLCB7ImEiOiAxfV0nLCAnc3RyaWN0ICQuYScpOyAtLSBGQUxTRSBvbiBl cnJvcgorIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworU0VMRUNU IEpTT05fRVhJU1RTKGpzb25iICdbMSwgImFhYSIsIHsiYSI6IDF9XScsICdsYXggJC5hJyk7Cisg anNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9F WElTVFMoanNvbmIgJ3t9JywgJyQuYScpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQor IGYKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICd7ImIiOiAxLCAiYSI6IDJ9 JywgJyQuYScpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKwor U0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJyQuYS5iJyk7CisganNvbl9leGlzdHMgCist LS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3si YSI6IHsiYiI6IDF9fScsICckLmEuYicpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQor IHQKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICd7ImEiOiAxLCAiYiI6IDJ9 JywgJyQuYS5iJyk7CisganNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQor CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3siYSI6IDEsICJiIjogMn0nLCAnJC4qID8gKEAg PiAkeCknIFBBU1NJTkcgMSBBUyB4KTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyB0 CisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJhIjogMSwgImIiOiAyfScs ICckLiogPyAoQCA+ICR4KScgUEFTU0lORyAnMScgQVMgeCk7CisganNvbl9leGlzdHMgCistLS0t LS0tLS0tLS0tCisgZgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3siYSI6 IDEsICJiIjogMn0nLCAnJC4qID8gKEAgPiAkeCAmJiBAIDwgJHkpJyBQQVNTSU5HIDAgQVMgeCwg MiBBUyB5KTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NF TEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJhIjogMSwgImIiOiAyfScsICckLiogPyAoQCA+ICR4 ICYmIEAgPCAkeSknIFBBU1NJTkcgMCBBUyB4LCAxIEFTIHkpOworIGpzb25fZXhpc3RzIAorLS0t LS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworLS0gZXh0ZW5zaW9uOiBib29sZWFuIGV4cHJlc3Np b25zCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEnLCAnJCA+IDInKTsKKyBqc29uX2V4aXN0 cyAKKy0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29u YiAnMScsICckLmEgPiAyJyBFUlJPUiBPTiBFUlJPUik7CisganNvbl9leGlzdHMgCistLS0tLS0t LS0tLS0tCisgdAorKDEgcm93KQorCistLSBKU09OX1ZBTFVFCistLSBqc29uIGFyZ3VtZW50cyBj dXJyZW50bHkgbm90IHN1cHBvcnRlZAorU0VMRUNUIEpTT05fVkFMVUUoTlVMTCBGT1JNQVQgSlNP TiwgJyQnKTsKK0VSUk9SOiAgSlNPTl9WQUxVRSgpIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9y IHRoZSBqc29uIHR5cGUKK0xJTkUgMTogU0VMRUNUIEpTT05fVkFMVUUoTlVMTCBGT1JNQVQgSlNP TiwgJyQnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIFRyeSBjYXN0aW5n IHRoZSBhcmd1bWVudCB0byBqc29uYgorU0VMRUNUIEpTT05fVkFMVUUoTlVMTDo6anNvbmIsICck Jyk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNP Tl9WQUxVRShqc29uYiAnbnVsbCcsICckJyk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckJyBSRVRVUk5J TkcgaW50KTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgICAgICAgICAgIAorKDEgcm93 KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAndHJ1ZScsICckJyk7CisganNvbl92YWx1ZSAK Ky0tLS0tLS0tLS0tLQorIHRydWUKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIg J3RydWUnLCAnJCcgUkVUVVJOSU5HIGJvb2wpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0K KyB0CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxMjMnLCAnJCcpOworIGpz b25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAxMjMKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJzEyMycsICckJyBSRVRVUk5JTkcgaW50KSArIDIzNDsKKyA/Y29sdW1uPyAKKy0t LS0tLS0tLS0KKyAgICAgIDM1NworKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn MTIzJywgJyQnIFJFVFVSTklORyB0ZXh0KTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisg MTIzCisoMSByb3cpCisKKy8qIGpzb25iIGJ5dGVhID8/PyAqLworU0VMRUNUIEpTT05fVkFMVUUo anNvbmIgJzEyMycsICckJyBSRVRVUk5JTkcgYnl0ZWEgRVJST1IgT04gRVJST1IpOworRVJST1I6 ICBTUUwvSlNPTiBpdGVtIGNhbm5vdCBiZSBjYXN0IHRvIHRhcmdldCB0eXBlCitTRUxFQ1QgSlNP Tl9WQUxVRShqc29uYiAnMS4yMycsICckJyk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQor IDEuMjMKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEuMjMnLCAnJCcgUkVU VVJOSU5HIGludCk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICAgICAgICAgIDEKKygx IHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyIxLjIzIicsICckJyBSRVRVUk5JTkcg bnVtZXJpYyk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICAgICAgIDEuMjMKKygxIHJv dykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyIxLjIzIicsICckJyBSRVRVUk5JTkcgaW50 IEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUg aW50ZWdlcjogIjEuMjMiCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcpOwor IGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyBhYWEKKygxIHJvdykKKworU0VMRUNUIEpTT05f VkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyB0ZXh0KTsKKyBqc29uX3ZhbHVlIAor LS0tLS0tLS0tLS0tCisgYWFhCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICci YWFhIicsICckJyBSRVRVUk5JTkcgY2hhcig1KSk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0t LQorIGFhYSAgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICck JyBSRVRVUk5JTkcgY2hhcigyKSk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIGFhCiso MSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcg anNvbik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICJhYWEiCisoMSByb3cpCisKK1NF TEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcganNvbmIpOworIGpz b25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAiYWFhIgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9W QUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGpzb24gRVJST1IgT04gRVJST1IpOwor IGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAiYWFhIgorKDEgcm93KQorCitTRUxFQ1QgSlNP Tl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGpzb25iIEVSUk9SIE9OIEVSUk9S KTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgImFhYSIKKygxIHJvdykKKworU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJyJcImFhYVwiIicsICckJyBSRVRVUk5JTkcganNvbik7CisganNv bl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICJcImFhYVwiIgorKDEgcm93KQorCitTRUxFQ1QgSlNP Tl9WQUxVRShqc29uYiAnIlwiYWFhXCIiJywgJyQnIFJFVFVSTklORyBqc29uYik7CisganNvbl92 YWx1ZSAKKy0tLS0tLS0tLS0tLQorICJcImFhYVwiIgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9W QUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGludCk7CisganNvbl92YWx1ZSAKKy0t LS0tLS0tLS0tLQorICAgICAgICAgICAKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNv bmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBpbnQgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBp bnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAiYWFhIgorU0VMRUNUIEpTT05f VkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBpbnQgREVGQVVMVCAxMTEgT04gRVJS T1IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAgICAgICAgMTExCisoMSByb3cpCisK K1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciMTIzIicsICckJyBSRVRVUk5JTkcgaW50KSArIDIz NDsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgICAgIDM1NworKDEgcm93KQorCitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAnIjIwMTctMDItMjAiJywgJyQnIFJFVFVSTklORyBkYXRlKSArIDk7 CisgID9jb2x1bW4/ICAKKy0tLS0tLS0tLS0tLQorIDAzLTAxLTIwMTcKKygxIHJvdykKKworLS0g VGVzdCBOVUxMIGNoZWNrcyBleGVjdXRpb24gaW4gZG9tYWluIHR5cGVzCitDUkVBVEUgRE9NQUlO IHNxbGpzb25iX2ludF9ub3RfbnVsbCBBUyBpbnQgTk9UIE5VTEw7CitTRUxFQ1QgSlNPTl9WQUxV RShqc29uYiAnbnVsbCcsICckJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50X25vdF9udWxsKTsKKyBq c29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgICAgICAgICAgIAorKDEgcm93KQorCitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50X25vdF9u dWxsIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgZG9tYWluIHNxbGpzb25iX2ludF9ub3RfbnVs bCBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251 bGwnLCAnJCcgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCBERUZBVUxUIDIgT04gRU1Q VFkgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBkb21haW4gc3FsanNvbmJfaW50X25vdF9udWxs IGRvZXMgbm90IGFsbG93IG51bGwgdmFsdWVzCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScs ICAnJC5hJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50X25vdF9udWxsIERFRkFVTFQgMiBPTiBFTVBU WSBFUlJPUiBPTiBFUlJPUik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICAgICAgICAg IDIKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAgJyQuYScgUkVUVVJO SU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCBERUZBVUxUIE5VTEwgT04gRU1QVFkgRVJST1IgT04g RVJST1IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAgICAgICAgICAgCisoMSByb3cp CisKK0NSRUFURSBUWVBFIHJhaW5ib3cgQVMgRU5VTSAoJ3JlZCcsICdvcmFuZ2UnLCAneWVsbG93 JywgJ2dyZWVuJywgJ2JsdWUnLCAncHVycGxlJyk7CitDUkVBVEUgRE9NQUlOIHJnYiBBUyByYWlu Ym93IENIRUNLIChWQUxVRSBJTiAoJ3JlZCcsICdncmVlbicsICdibHVlJykpOworU0VMRUNUIEpT T05fVkFMVUUoJyJwdXJwbGUiJzo6anNvbmIsICdsYXggJFsqXScgUkVUVVJOSU5HIHJnYik7Cisg anNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxV RSgnInB1cnBsZSInOjpqc29uYiwgJ2xheCAkWypdJyBSRVRVUk5JTkcgcmdiIEVSUk9SIE9OIEVS Uk9SKTsKK0VSUk9SOiAgdmFsdWUgZm9yIGRvbWFpbiByZ2IgdmlvbGF0ZXMgY2hlY2sgY29uc3Ry YWludCAicmdiX2NoZWNrIgorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1tdJywgJyQnKTsKKyBq c29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVF KGpzb25iICdbXScsICckJyBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIEpTT04gcGF0aCBleHBy ZXNzaW9uIGluIEpTT05fVkFMVUUgc2hvdWxkIHJldHVybiBzaW5nbGV0b24gc2NhbGFyIGl0ZW0K K1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICd7fScsICckJyk7CisganNvbl92YWx1ZSAKKy0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAne30nLCAnJCcg RVJST1IgT04gRVJST1IpOworRVJST1I6ICBKU09OIHBhdGggZXhwcmVzc2lvbiBpbiBKU09OX1ZB TFVFIHNob3VsZCByZXR1cm4gc2luZ2xldG9uIHNjYWxhciBpdGVtCitTRUxFQ1QgSlNPTl9WQUxV RShqc29uYiAnMScsICckLmEnKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ3N0cmljdCAkLmEnIEVSUk9SIE9O IEVSUk9SKTsKK0VSUk9SOiAganNvbnBhdGggbWVtYmVyIGFjY2Vzc29yIGNhbiBvbmx5IGJlIGFw cGxpZWQgdG8gYW4gb2JqZWN0CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdzdHJpY3Qg JC5hJyBERUZBVUxUICdlcnJvcicgT04gRVJST1IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0t LS0KKyBlcnJvcgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdsYXgg JC5hJyBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIG5vIFNRTC9KU09OIGl0ZW0KK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIEVSUk9SIE9OIEVNUFRZIEVSUk9SIE9OIEVS Uk9SKTsKK0VSUk9SOiAgbm8gU1FML0pTT04gaXRlbQorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIg JzEnLCAnc3RyaWN0ICQuYScgREVGQVVMVCAyIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0t LS0tLS0tLS0tCisgMgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICds YXggJC5hJyBERUZBVUxUIDIgT04gRVJST1IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0K KyAyCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIERF RkFVTFQgJzInIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgMgorKDEg cm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdsYXggJC5hJyBOVUxMIE9OIEVN UFRZIERFRkFVTFQgJzInIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIERFRkFV TFQgJzInIE9OIEVNUFRZIERFRkFVTFQgJzMnIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0t LS0tLS0tLS0tCisgMgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICds YXggJC5hJyBFUlJPUiBPTiBFTVBUWSBERUZBVUxUICczJyBPTiBFUlJPUik7CitFUlJPUjogIG5v IFNRTC9KU09OIGl0ZW0KK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbMSwyXScsICckWypdJyBF UlJPUiBPTiBFUlJPUik7CitFUlJPUjogIEpTT04gcGF0aCBleHByZXNzaW9uIGluIEpTT05fVkFM VUUgc2hvdWxkIHJldHVybiBzaW5nbGV0b24gc2NhbGFyIGl0ZW0KK1NFTEVDVCBKU09OX1ZBTFVF KGpzb25iICdbMSwyXScsICckWypdJyBERUZBVUxUICcwJyBPTiBFUlJPUik7CisganNvbl92YWx1 ZSAKKy0tLS0tLS0tLS0tLQorIDAKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIg J1siICJdJywgJyRbKl0nIFJFVFVSTklORyBpbnQgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBp bnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAiICIKK1NFTEVDVCBKU09OX1ZB TFVFKGpzb25iICdbIiAiXScsICckWypdJyBSRVRVUk5JTkcgaW50IERFRkFVTFQgMiArIDMgT04g RVJST1IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAgICAgICAgICA1CisoMSByb3cp CisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbIjEiXScsICckWypdJyBSRVRVUk5JTkcgaW50 IERFRkFVTFQgMiArIDMgT04gRVJST1IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAg ICAgICAgICAxCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbIjEiXScsICck WypdJyBSRVRVUk5JTkcgaW50IEZPUk1BVCBKU09OKTsgLS0gUkVUVVJOSU5HIEZPUk1BVCBub3Qg YWxsb3dlZAorRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSBGT1JNQVQgaW4gUkVUVVJOSU5HIGNsYXVz ZSBvZiBKU09OX1ZBTFVFKCkKK0xJTkUgMTogLi4uQ1QgSlNPTl9WQUxVRShqc29uYiAnWyIxIl0n LCAnJFsqXScgUkVUVVJOSU5HIGludCBGT1JNQVQgSlNPLi4uCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gUkVUVUdOSU5H IHBzZXVkby10eXBlcyBub3QgYWxsb3dlZAorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1siMSJd JywgJyRbKl0nIFJFVFVSTklORyByZWNvcmQpOworRVJST1I6ICByZXR1cm5pbmcgcHNldWRvLXR5 cGVzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gU1FML0pTT04gZnVuY3Rpb25zCitTRUxFQ1QKKwl4LAor CUpTT05fVkFMVUUoCisJCWpzb25iICd7ImEiOiAxLCAiYiI6IDJ9JywKKwkJJyQuKiA/IChAID4g JHgpJyBQQVNTSU5HIHggQVMgeAorCQlSRVRVUk5JTkcgaW50CisJCURFRkFVTFQgLTEgT04gRU1Q VFkKKwkJREVGQVVMVCAtMiBPTiBFUlJPUgorCSkgeQorRlJPTQorCWdlbmVyYXRlX3Nlcmllcygw LCAyKSB4OworIHggfCB5ICAKKy0tLSstLS0tCisgMCB8IC0yCisgMSB8ICAyCisgMiB8IC0xCiso MyByb3dzKQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckYScgUEFTU0lORyBw b2ludCAnICgxLCAyICknIEFTIGEpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAoMSwy KQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckYScgUEFTU0lO RyBwb2ludCAnICgxLCAyICknIEFTIGEgUkVUVVJOSU5HIHBvaW50KTsKKyBqc29uX3ZhbHVlIAor LS0tLS0tLS0tLS0tCisgKDEsMikKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIg J251bGwnLCAnJGEnIFBBU1NJTkcgcG9pbnQgJyAoMSwgMiApJyBBUyBhIFJFVFVSTklORyBwb2lu dCBFUlJPUiBPTiBFUlJPUik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICgxLDIpCiso MSByb3cpCisKKy0tIFRlc3QgUEFTU0lORyBhbmQgUkVUVVJOSU5HIGRhdGUvdGltZSB0eXBlcwor U0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6 ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMpOworICAgICAgICAgIGpzb25fdmFsdWUg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBUdWUgRmViIDIwIDE4 OjM0OjU2IDIwMTggUFNUCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxs JywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFT IHRzIFJFVFVSTklORyB0aW1lc3RhbXB0eik7CisgICAgICAgICAganNvbl92YWx1ZSAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFR1ZSBGZWIgMjAgMTg6MzQ6NTYg MjAxOCBQU1QKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRz JyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVU VVJOSU5HIHRpbWVzdGFtcCk7CisgICAgICAgIGpzb25fdmFsdWUgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBUdWUgRmViIDIwIDE4OjM0OjU2IDIwMTgKKygxIHJvdykKKwor U0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIGRhdGUgJzIwMTgt MDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcgZGF0ZSk7CisganNvbl92YWx1ZSAK Ky0tLS0tLS0tLS0tLQorIDAyLTIxLTIwMTgKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUo anNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWUgJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEw JyBBUyB0cyBSRVRVUk5JTkcgdGltZSk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIDEy OjM0OjU2CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0cycg UEFTU0lORyB0aW1ldHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcg dGltZXR6KTsKKyBqc29uX3ZhbHVlICAKKy0tLS0tLS0tLS0tLS0KKyAxMjozNDo1NisxMAorKDEg cm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGlt ZXN0YW1wICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIHRpbWVzdGFt cCk7CisgICAgICAgIGpzb25fdmFsdWUgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBXZWQgRmViIDIxIDEyOjM0OjU2IDIwMTgKKygxIHJvdykKKworLS0gQWxzbyB0ZXN0IFJF VFVSTklORyBqc29uW2JdCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBB U1NJTkcgdGltZXN0YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5J TkcganNvbik7CisgICAgICAgICBqc29uX3ZhbHVlICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAiMjAxOC0wMi0yMVQwMjozNDo1NiswMDowMCIKKygxIHJvdykKKwor U0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6 ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIGpzb25iKTsKKyAgICAg ICAgIGpzb25fdmFsdWUgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICIyMDE4LTAyLTIxVDAyOjM0OjU2KzAwOjAwIgorKDEgcm93KQorCistLSBKU09OX1FVRVJZCist LSBqc29uIGFyZ3VtZW50cyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZAorU0VMRUNUIEpTT05fUVVF UlkoTlVMTCBGT1JNQVQgSlNPTiwgJyQnKTsKK0VSUk9SOiAgSlNPTl9RVUVSWSgpIGlzIG5vdCB5 ZXQgaW1wbGVtZW50ZWQgZm9yIHRoZSBqc29uIHR5cGUKK0xJTkUgMTogU0VMRUNUIEpTT05fUVVF UlkoTlVMTCBGT1JNQVQgSlNPTiwgJyQnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXgor SElOVDogIFRyeSBjYXN0aW5nIHRoZSBhcmd1bWVudCB0byBqc29uYgorU0VMRUNUIEpTT05fVkFM VUUoTlVMTDo6anNvbmIsICckJyk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitTRUxFQ1QKKwlKU09OX1FVRVJZKGpzLCAnJCcpLAorCUpTT05fUVVFUlkoanMsICck JyBXSVRIT1VUIFdSQVBQRVIpLAorCUpTT05fUVVFUlkoanMsICckJyBXSVRIIENPTkRJVElPTkFM IFdSQVBQRVIpLAorCUpTT05fUVVFUlkoanMsICckJyBXSVRIIFVOQ09ORElUSU9OQUwgQVJSQVkg V1JBUFBFUiksCisJSlNPTl9RVUVSWShqcywgJyQnIFdJVEggQVJSQVkgV1JBUFBFUikKK0ZST00K KwkoVkFMVUVTCisJCShqc29uYiAnbnVsbCcpLAorCQkoJzEyLjMnKSwKKwkJKCd0cnVlJyksCisJ CSgnImFhYSInKSwKKwkJKCdbMSwgbnVsbCwgIjIiXScpLAorCQkoJ3siYSI6IDEsICJiIjogWzJd fScpCisJKSBmb28oanMpOworICAgICBqc29uX3F1ZXJ5ICAgICB8ICAgICBqc29uX3F1ZXJ5ICAg ICB8ICAgICBqc29uX3F1ZXJ5ICAgICB8ICAgICAganNvbl9xdWVyeSAgICAgIHwgICAgICBqc29u X3F1ZXJ5ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBudWxsICAgICAgICAgICAgICAgfCBudWxsICAgICAgICAgICAgICAgfCBbbnVs bF0gICAgICAgICAgICAgfCBbbnVsbF0gICAgICAgICAgICAgICB8IFtudWxsXQorIDEyLjMgICAg ICAgICAgICAgICB8IDEyLjMgICAgICAgICAgICAgICB8IFsxMi4zXSAgICAgICAgICAgICB8IFsx Mi4zXSAgICAgICAgICAgICAgIHwgWzEyLjNdCisgdHJ1ZSAgICAgICAgICAgICAgIHwgdHJ1ZSAg ICAgICAgICAgICAgIHwgW3RydWVdICAgICAgICAgICAgIHwgW3RydWVdICAgICAgICAgICAgICAg fCBbdHJ1ZV0KKyAiYWFhIiAgICAgICAgICAgICAgfCAiYWFhIiAgICAgICAgICAgICAgfCBbImFh YSJdICAgICAgICAgICAgfCBbImFhYSJdICAgICAgICAgICAgICB8IFsiYWFhIl0KKyBbMSwgbnVs bCwgIjIiXSAgICAgfCBbMSwgbnVsbCwgIjIiXSAgICAgfCBbMSwgbnVsbCwgIjIiXSAgICAgfCBb WzEsIG51bGwsICIyIl1dICAgICB8IFtbMSwgbnVsbCwgIjIiXV0KKyB7ImEiOiAxLCAiYiI6IFsy XX0gfCB7ImEiOiAxLCAiYiI6IFsyXX0gfCB7ImEiOiAxLCAiYiI6IFsyXX0gfCBbeyJhIjogMSwg ImIiOiBbMl19XSB8IFt7ImEiOiAxLCAiYiI6IFsyXX1dCisoNiByb3dzKQorCitTRUxFQ1QKKwlK U09OX1FVRVJZKGpzLCAnc3RyaWN0ICRbKl0nKSBBUyAidW5zcGVjIiwKKwlKU09OX1FVRVJZKGpz LCAnc3RyaWN0ICRbKl0nIFdJVEhPVVQgV1JBUFBFUikgQVMgIndpdGhvdXQiLAorCUpTT05fUVVF UlkoanMsICdzdHJpY3QgJFsqXScgV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSKSBBUyAid2l0aCBj b25kIiwKKwlKU09OX1FVRVJZKGpzLCAnc3RyaWN0ICRbKl0nIFdJVEggVU5DT05ESVRJT05BTCBB UlJBWSBXUkFQUEVSKSBBUyAid2l0aCB1bmNvbmQiLAorCUpTT05fUVVFUlkoanMsICdzdHJpY3Qg JFsqXScgV0lUSCBBUlJBWSBXUkFQUEVSKSBBUyAid2l0aCIKK0ZST00KKwkoVkFMVUVTCisJCShq c29uYiAnMScpLAorCQkoJ1tdJyksCisJCSgnW251bGxdJyksCisJCSgnWzEyLjNdJyksCisJCSgn W3RydWVdJyksCisJCSgnWyJhYWEiXScpLAorCQkoJ1tbMSwgMiwgM11dJyksCisJCSgnW3siYSI6 IDEsICJiIjogWzJdfV0nKSwKKwkJKCdbMSwgIjIiLCBudWxsLCBbM11dJykKKwkpIGZvbyhqcyk7 CisgICAgICAgdW5zcGVjICAgICAgIHwgICAgICB3aXRob3V0ICAgICAgIHwgICAgICB3aXRoIGNv bmQgICAgICB8ICAgICB3aXRoIHVuY29uZCAgICAgIHwgICAgICAgICB3aXRoICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgICAgICAgICAgIHwgCisgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg IHwgCisgbnVsbCAgICAgICAgICAgICAgIHwgbnVsbCAgICAgICAgICAgICAgIHwgW251bGxdICAg ICAgICAgICAgICB8IFtudWxsXSAgICAgICAgICAgICAgIHwgW251bGxdCisgMTIuMyAgICAgICAg ICAgICAgIHwgMTIuMyAgICAgICAgICAgICAgIHwgWzEyLjNdICAgICAgICAgICAgICB8IFsxMi4z XSAgICAgICAgICAgICAgIHwgWzEyLjNdCisgdHJ1ZSAgICAgICAgICAgICAgIHwgdHJ1ZSAgICAg ICAgICAgICAgIHwgW3RydWVdICAgICAgICAgICAgICB8IFt0cnVlXSAgICAgICAgICAgICAgIHwg W3RydWVdCisgImFhYSIgICAgICAgICAgICAgIHwgImFhYSIgICAgICAgICAgICAgIHwgWyJhYWEi XSAgICAgICAgICAgICB8IFsiYWFhIl0gICAgICAgICAgICAgIHwgWyJhYWEiXQorIFsxLCAyLCAz XSAgICAgICAgICB8IFsxLCAyLCAzXSAgICAgICAgICB8IFsxLCAyLCAzXSAgICAgICAgICAgfCBb WzEsIDIsIDNdXSAgICAgICAgICB8IFtbMSwgMiwgM11dCisgeyJhIjogMSwgImIiOiBbMl19IHwg eyJhIjogMSwgImIiOiBbMl19IHwgeyJhIjogMSwgImIiOiBbMl19ICB8IFt7ImEiOiAxLCAiYiI6 IFsyXX1dIHwgW3siYSI6IDEsICJiIjogWzJdfV0KKyAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgfCBbMSwgIjIiLCBudWxsLCBbM11dIHwgWzEsICIyIiwgbnVsbCwgWzNd XSAgfCBbMSwgIjIiLCBudWxsLCBbM11dCisoOSByb3dzKQorCitTRUxFQ1QgSlNPTl9RVUVSWShq c29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIHRleHQpOworIGpzb25fcXVlcnkgCistLS0tLS0t LS0tLS0KKyAiYWFhIgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSIn LCAnJCcgUkVUVVJOSU5HIHRleHQgS0VFUCBRVU9URVMpOworIGpzb25fcXVlcnkgCistLS0tLS0t LS0tLS0KKyAiYWFhIgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSIn LCAnJCcgUkVUVVJOSU5HIHRleHQgS0VFUCBRVU9URVMgT04gU0NBTEFSIFNUUklORyk7CisganNv bl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorICJhYWEiCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FV RVJZKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgdGV4dCBPTUlUIFFVT1RFUyk7CisganNv bl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIGFhYQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVS WShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIHRleHQgT01JVCBRVU9URVMgT04gU0NBTEFS IFNUUklORyk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIGFhYQorKDEgcm93KQorCitT RUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAnJCcgT01JVCBRVU9URVMgRVJST1IgT04g RVJST1IpOworRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBqc29uCitERVRB SUw6ICBUb2tlbiAiYWFhIiBpcyBpbnZhbGlkLgorQ09OVEVYVDogIEpTT04gZGF0YSwgbGluZSAx OiBhYWEKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcganNv biBPTUlUIFFVT1RFUyBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3lu dGF4IGZvciB0eXBlIGpzb24KK0RFVEFJTDogIFRva2VuICJhYWEiIGlzIGludmFsaWQuCitDT05U RVhUOiAgSlNPTiBkYXRhLCBsaW5lIDE6IGFhYQorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJh YWEiJywgJyQnIFJFVFVSTklORyBieXRlYSBGT1JNQVQgSlNPTiBPTUlUIFFVT1RFUyBFUlJPUiBP TiBFUlJPUik7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIFx4NjE2MTYxCisoMSByb3cp CisKKy0tIFFVT1RFUyBiZWhhdmlvciBzaG91bGQgbm90IGJlIHNwZWNpZmllZCB3aGVuIFdJVEgg V1JBUFBFUiB1c2VkOgorLS0gU2hvdWxkIGZhaWwKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdb MV0nLCAnJCcgV0lUSCBXUkFQUEVSIE9NSVQgUVVPVEVTKTsKK0VSUk9SOiAgU1FML0pTT04gUVVP VEVTIGJlaGF2aW9yIG11c3Qgbm90IGJlIHNwZWNpZmllZCB3aGVuIFdJVEggV1JBUFBFUiBpcyB1 c2VkCitMSU5FIDE6IFNFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBXUkFQ UEVSIE9NSVQgUVVPVEVTKS4uLgorICAgICAgICAgICAgICAgXgorU0VMRUNUIEpTT05fUVVFUlko anNvbmIgJ1sxXScsICckJyBXSVRIIFdSQVBQRVIgS0VFUCBRVU9URVMpOworRVJST1I6ICBTUUwv SlNPTiBRVU9URVMgYmVoYXZpb3IgbXVzdCBub3QgYmUgc3BlY2lmaWVkIHdoZW4gV0lUSCBXUkFQ UEVSIGlzIHVzZWQKK0xJTkUgMTogU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxXScsICckJyBX SVRIIFdSQVBQRVIgS0VFUCBRVU9URVMpLi4uCisgICAgICAgICAgICAgICBeCitTRUxFQ1QgSlNP Tl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUiBLRUVQIFFV T1RFUyk7CitFUlJPUjogIFNRTC9KU09OIFFVT1RFUyBiZWhhdmlvciBtdXN0IG5vdCBiZSBzcGVj aWZpZWQgd2hlbiBXSVRIIFdSQVBQRVIgaXMgdXNlZAorTElORSAxOiBTRUxFQ1QgSlNPTl9RVUVS WShqc29uYiAnWzFdJywgJyQnIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUiAuLi4KKyAgICAgICAg ICAgICAgIF4KK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBDT05ESVRJ T05BTCBXUkFQUEVSIE9NSVQgUVVPVEVTKTsKK0VSUk9SOiAgU1FML0pTT04gUVVPVEVTIGJlaGF2 aW9yIG11c3Qgbm90IGJlIHNwZWNpZmllZCB3aGVuIFdJVEggV1JBUFBFUiBpcyB1c2VkCitMSU5F IDE6IFNFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBDT05ESVRJT05BTCBX UkFQUEVSIC4uLgorICAgICAgICAgICAgICAgXgorLS0gU2hvdWxkIHN1Y2NlZWQKK1NFTEVDVCBK U09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSE9VVCBXUkFQUEVSIE9NSVQgUVVPVEVTKTsK KyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgWzFdCisoMSByb3cpCisKK1NFTEVDVCBKU09O X1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSE9VVCBXUkFQUEVSIEtFRVAgUVVPVEVTKTsKKyBq c29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgWzFdCisoMSByb3cpCisKKy0tIHRlc3QgUVVPVEVT IGJlaGF2aW9yLgorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAiezEsMiwzfSJ9Jywg JyQucmVjJyByZXR1cm5pbmcgaW50W10gb21pdCBxdW90ZXMpOworIGpzb25fcXVlcnkgCistLS0t LS0tLS0tLS0KKyB7MSwyLDN9CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iJ3si cmVjIjogInsxLDIsM30ifScsICckLnJlYycgcmV0dXJuaW5nIGludFtdIGtlZXAgcXVvdGVzKTsK KyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FV RVJZKGpzb25iJ3sicmVjIjogInsxLDIsM30ifScsICckLnJlYycgcmV0dXJuaW5nIGludFtdIGtl ZXAgcXVvdGVzIGVycm9yIG9uIGVycm9yKTsKK0VSUk9SOiAgZXhwZWN0ZWQgSlNPTiBhcnJheQor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAiWzEsMl0ifScsICckLnJlYycgcmV0dXJu aW5nIGludDRyYW5nZSBvbWl0IHF1b3Rlcyk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQor IFsxLDMpCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iJ3sicmVjIjogIlsxLDJd In0nLCAnJC5yZWMnIHJldHVybmluZyBpbnQ0cmFuZ2Uga2VlcCBxdW90ZXMpOworIGpzb25fcXVl cnkgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIn eyJyZWMiOiAiWzEsMl0ifScsICckLnJlYycgCXJldHVybmluZyBpbnQ0cmFuZ2Uga2VlcCBxdW90 ZXMgZXJyb3Igb24gZXJyb3IpOworRVJST1I6ICBtYWxmb3JtZWQgcmFuZ2UgbGl0ZXJhbDogIiJb MSwyXSIiCitERVRBSUw6ICBNaXNzaW5nIGxlZnQgcGFyZW50aGVzaXMgb3IgYnJhY2tldC4KK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyk7CisganNvbl9xdWVyeSAKKy0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsq XScgTlVMTCBPTiBFTVBUWSk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRU1QVFkgT04gRU1QVFkp OworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBbXQorKDEgcm93KQorCitTRUxFQ1QgSlNP Tl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRU1QVFkgQVJSQVkgT04gRU1QVFkpOworIGpzb25f cXVlcnkgCistLS0tLS0tLS0tLS0KKyBbXQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShq c29uYiAnW10nLCAnJFsqXScgRU1QVFkgT0JKRUNUIE9OIEVNUFRZKTsKKyBqc29uX3F1ZXJ5IAor LS0tLS0tLS0tLS0tCisge30KKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1td JywgJyRbKl0nIEVSUk9SIE9OIEVNUFRZKTsKK0VSUk9SOiAgbm8gU1FML0pTT04gaXRlbQorU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIERFRkFVTFQgJyJlbXB0eSInIE9OIEVN UFRZKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgImVtcHR5IgorKDEgcm93KQorCitT RUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRVJST1IgT04gRU1QVFkgTlVMTCBP TiBFUlJPUik7CitFUlJPUjogIG5vIFNRTC9KU09OIGl0ZW0KK1NFTEVDVCBKU09OX1FVRVJZKGpz b25iICdbXScsICckWypdJyBFUlJPUiBPTiBFTVBUWSBFTVBUWSBBUlJBWSBPTiBFUlJPUik7CitF UlJPUjogIG5vIFNRTC9KU09OIGl0ZW0KK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICck WypdJyBFUlJPUiBPTiBFTVBUWSBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOworRVJST1I6ICBubyBT UUwvSlNPTiBpdGVtCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRVJST1Ig T04gRU1QVFkgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBubyBTUUwvSlNPTiBpdGVtCitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRVJST1IgT04gRVJST1IpOworRVJST1I6 ICBubyBTUUwvSlNPTiBpdGVtCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJFsq XScgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBKU09OIHBhdGggZXhwcmVzc2lvbiBpbiBKU09O X1FVRVJZIHNob3VsZCByZXR1cm4gc2luZ2xldG9uIGl0ZW0gd2l0aG91dCB3cmFwcGVyCitISU5U OiAgVXNlIFdJVEggV1JBUFBFUiBjbGF1c2UgdG8gd3JhcCBTUUwvSlNPTiBpdGVtIHNlcXVlbmNl IGludG8gYXJyYXkuCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJFsqXScgREVG QVVMVCAnImVtcHR5IicgT04gRVJST1IpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAi ZW1wdHkiCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckJyBS RVRVUk5JTkcganNvbik7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIFsxLCAyXQorKDEg cm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIGpz b24gRk9STUFUIEpTT04pOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBbMSwgMl0KKygx IHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBq c29uYik7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIFsxLCAyXQorKDEgcm93KQorCitT RUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIGpzb25iIEZPUk1B VCBKU09OKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgWzEsIDJdCisoMSByb3cpCisK K1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckJyBSRVRVUk5JTkcgdGV4dCk7Cisg anNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIFsxLCAyXQorKDEgcm93KQorCitTRUxFQ1QgSlNP Tl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIGNoYXIoMTApKTsKKyBqc29uX3F1 ZXJ5IAorLS0tLS0tLS0tLS0tCisgWzEsIDJdICAgIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9R VUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIGNoYXIoMykpOworIGpzb25fcXVlcnkg CistLS0tLS0tLS0tLS0KKyBbMSwKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg J1sxLDJdJywgJyQnIFJFVFVSTklORyB0ZXh0IEZPUk1BVCBKU09OKTsKKyBqc29uX3F1ZXJ5IAor LS0tLS0tLS0tLS0tCisgWzEsIDJdCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25i ICdbMSwyXScsICckJyBSRVRVUk5JTkcgYnl0ZWEpOworICAganNvbl9xdWVyeSAgIAorLS0tLS0t LS0tLS0tLS0tLQorIFx4NWIzMTJjMjAzMjVkCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZ KGpzb25iICdbMSwyXScsICckJyBSRVRVUk5JTkcgYnl0ZWEgRk9STUFUIEpTT04pOworICAganNv bl9xdWVyeSAgIAorLS0tLS0tLS0tLS0tLS0tLQorIFx4NWIzMTJjMjAzMjVkCisoMSByb3cpCisK K1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckWypdJyBSRVRVUk5JTkcgYnl0ZWEg RU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsKK0VSUk9SOiAgY2Fubm90IGNhc3QgYmVoYXZpb3IgZXhw cmVzc2lvbiBvZiB0eXBlIGpzb25iIHRvIGJ5dGVhCitMSU5FIDE6IC4uLiBKU09OX1FVRVJZKGpz b25iICdbMSwyXScsICckWypdJyBSRVRVUk5JTkcgYnl0ZWEgRU1QVFkgT0JKRS4uLgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K K1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckWypdJyBSRVRVUk5JTkcgYnl0ZWEg Rk9STUFUIEpTT04gRU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsKK0VSUk9SOiAgY2Fubm90IGNhc3Qg YmVoYXZpb3IgZXhwcmVzc2lvbiBvZiB0eXBlIGpzb25iIHRvIGJ5dGVhCitMSU5FIDE6IC4uLmpz b25iICdbMSwyXScsICckWypdJyBSRVRVUk5JTkcgYnl0ZWEgRk9STUFUIEpTT04gRU1QVFkgT0JK RS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckWypdJyBSRVRV Uk5JTkcganNvbiBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOworIGpzb25fcXVlcnkgCistLS0tLS0t LS0tLS0KKyB7fQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAn JFsqXScgUkVUVVJOSU5HIGpzb25iIEVNUFRZIE9CSkVDVCBPTiBFUlJPUik7CisganNvbl9xdWVy eSAKKy0tLS0tLS0tLS0tLQorIHt9CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25i ICdbMyw0XScsICckWypdJyBSRVRVUk5JTkcgYmlnaW50W10gRU1QVFkgT0JKRUNUIE9OIEVSUk9S KTsKK0VSUk9SOiAgY2Fubm90IGNhc3QgYmVoYXZpb3IgZXhwcmVzc2lvbiBvZiB0eXBlIGpzb25i IHRvIGJpZ2ludFtdCitMSU5FIDE6IC4uLk9OX1FVRVJZKGpzb25iICdbMyw0XScsICckWypdJyBS RVRVUk5JTkcgYmlnaW50W10gRU1QVFkgT0JKRS4uLgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBKU09OX1FVRVJZ KGpzb25iICciWzMsNF0iJywgJyRbKl0nIFJFVFVSTklORyBiaWdpbnRbXSBFTVBUWSBPQkpFQ1Qg T04gRVJST1IpOworRVJST1I6ICBjYW5ub3QgY2FzdCBiZWhhdmlvciBleHByZXNzaW9uIG9mIHR5 cGUganNvbmIgdG8gYmlnaW50W10KK0xJTkUgMTogLi4uX1FVRVJZKGpzb25iICciWzMsNF0iJywg JyRbKl0nIFJFVFVSTklORyBiaWdpbnRbXSBFTVBUWSBPQkpFLi4uCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gUkVUVUdO SU5HIHBzZXVkby10eXBlcyBub3QgYWxsb3dlZAorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sz LDRdJywgJyRbKl0nIFJFVFVSTklORyBhbnlhcnJheSBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOwor RVJST1I6ICByZXR1cm5pbmcgcHNldWRvLXR5cGVzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gU1FML0pT T04gZnVuY3Rpb25zCitTRUxFQ1QKKwl4LCB5LAorCUpTT05fUVVFUlkoCisJCWpzb25iICdbMSwy LDMsNCw1LG51bGxdJywKKwkJJyRbKl0gPyAoQCA+PSAkeCAmJiBAIDw9ICR5KScKKwkJUEFTU0lO RyB4IEFTIHgsIHkgQVMgeQorCQlXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIKKwkJRU1QVFkgQVJS QVkgT04gRU1QVFkKKwkpIGxpc3QKK0ZST00KKwlnZW5lcmF0ZV9zZXJpZXMoMCwgNCkgeCwKKwln ZW5lcmF0ZV9zZXJpZXMoMCwgNCkgeTsKKyB4IHwgeSB8ICAgICBsaXN0ICAgICAKKy0tLSstLS0r LS0tLS0tLS0tLS0tLS0KKyAwIHwgMCB8IFtdCisgMCB8IDEgfCBbMV0KKyAwIHwgMiB8IFsxLCAy XQorIDAgfCAzIHwgWzEsIDIsIDNdCisgMCB8IDQgfCBbMSwgMiwgMywgNF0KKyAxIHwgMCB8IFtd CisgMSB8IDEgfCBbMV0KKyAxIHwgMiB8IFsxLCAyXQorIDEgfCAzIHwgWzEsIDIsIDNdCisgMSB8 IDQgfCBbMSwgMiwgMywgNF0KKyAyIHwgMCB8IFtdCisgMiB8IDEgfCBbXQorIDIgfCAyIHwgWzJd CisgMiB8IDMgfCBbMiwgM10KKyAyIHwgNCB8IFsyLCAzLCA0XQorIDMgfCAwIHwgW10KKyAzIHwg MSB8IFtdCisgMyB8IDIgfCBbXQorIDMgfCAzIHwgWzNdCisgMyB8IDQgfCBbMywgNF0KKyA0IHwg MCB8IFtdCisgNCB8IDEgfCBbXQorIDQgfCAyIHwgW10KKyA0IHwgMyB8IFtdCisgNCB8IDQgfCBb NF0KKygyNSByb3dzKQorCistLSByZWNvcmQgdHlwZSByZXR1cm5pbmcgd2l0aCBxdW90ZXMgYmVo YXZpb3IuCitDUkVBVEUgVFlQRSBjb21wX2FiYyBBUyAoYSB0ZXh0LCBiIGludCwgYyB0aW1lc3Rh bXApOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAiKGFiYyw0MiwwMS4wMi4yMDAz KSJ9JywgJyQucmVjJyByZXR1cm5pbmcgY29tcF9hYmMgb21pdCBxdW90ZXMpOworICAgICAgICAg ICAgIGpzb25fcXVlcnkgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIChhYmMsNDIsIlRodSBKYW4gMDIgMDA6MDA6MDAgMjAwMyIpCisoMSByb3cp CisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iJ3sicmVjIjogIihhYmMsNDIsMDEuMDIuMjAwMyki fScsICckLnJlYycgcmV0dXJuaW5nIGNvbXBfYWJjIGtlZXAgcXVvdGVzKTsKKyBqc29uX3F1ZXJ5 IAorLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iJ3si cmVjIjogIihhYmMsNDIsMDEuMDIuMjAwMykifScsICckLnJlYycgcmV0dXJuaW5nIGNvbXBfYWJj IGtlZXAgcXVvdGVzIGVycm9yIG9uIGVycm9yKTsKK0VSUk9SOiAgY2Fubm90IGNhbGwgcG9wdWxh dGVfY29tcG9zaXRlIG9uIGEgc2NhbGFyCitEUk9QIFRZUEUgY29tcF9hYmM7CistLSBFeHRlbnNp b246IHJlY29yZCB0eXBlcyByZXR1cm5pbmcKK0NSRUFURSBUWVBFIHNxbGpzb25iX3JlYyBBUyAo YSBpbnQsIHQgdGV4dCwganMganNvbiwgamIganNvbmIsIGpzYSBqc29uW10pOworQ1JFQVRFIFRZ UEUgc3FsanNvbmJfcmVjYSBBUyAocmVjYSBzcWxqc29uYl9yZWNbXSk7CitTRUxFQ1QgSlNPTl9R VUVSWShqc29uYiAnW3siYSI6IDEsICJiIjogImZvbyIsICJ0IjogImFhYSIsICJqcyI6IFsxLCAi MiIsIHt9XSwgImpiIjogeyJ4IjogWzEsICIyIiwge31dfX0sICB7ImEiOiAyfV0nLCAnJFswXScg UkVUVVJOSU5HIHNxbGpzb25iX3JlYyk7CisgICAgICAgICAgICAgICAgICAgICBqc29uX3F1ZXJ5 ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMSxhYWEsIlsxLCAiIjIiIiwge31dIiwieyIieCIiOiBb MSwgIiIyIiIsIHt9XX0iLCkKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1t7 ImEiOiAiYSIsICJiIjogImZvbyIsICJ0IjogImFhYSIsICJqcyI6IFsxLCAiMiIsIHt9XSwgImpi IjogeyJ4IjogWzEsICIyIiwge31dfX0sICB7ImEiOiAyfV0nLCAnJFswXScgUkVUVVJOSU5HIHNx bGpzb25iX3JlYyBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4 IGZvciB0eXBlIGludGVnZXI6ICJhIgorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1t7ImEiOiAi YSIsICJiIjogImZvbyIsICJ0IjogImFhYSIsICJqcyI6IFsxLCAiMiIsIHt9XSwgImpiIjogeyJ4 IjogWzEsICIyIiwge31dfX0sICB7ImEiOiAyfV0nLCAnJFswXScgUkVUVVJOSU5HIHNxbGpzb25i X3JlYyk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1Qg KiBGUk9NIHVubmVzdCgoSlNPTl9RVUVSWShqc29uYiAneyJqc2EiOiAgW3siYSI6IDEsICJiIjog WyJmb28iXX0sIHsiYSI6IDIsICJjIjoge319LCAxMjNdfScsICckJyBSRVRVUk5JTkcgc3FsanNv bmJfcmVjKSkuanNhKTsKKyAgICAgICAgIHVubmVzdCAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgeyJhIjogMSwgImIiOiBbImZvbyJdfQorIHsiYSI6IDIsICJjIjoge319Cisg MTIzCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHVubmVzdCgoSlNPTl9RVUVSWShqc29uYiAn eyJyZWNhIjogW3siYSI6IDEsICJ0IjogWyJmb28iLCBbXV19LCB7ImEiOiAyLCAiamIiOiBbe30s IHRydWVdfV19JywgJyQnIFJFVFVSTklORyBzcWxqc29uYl9yZWNhKSkucmVjYSk7CisgYSB8ICAg ICAgdCAgICAgIHwganMgfCAgICAgamIgICAgIHwganNhIAorLS0tKy0tLS0tLS0tLS0tLS0rLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0KKyAxIHwgWyJmb28iLCBbXV0gfCAgICB8ICAgICAgICAgICAg fCAKKyAyIHwgICAgICAgICAgICAgfCAgICB8IFt7fSwgdHJ1ZV0gfCAKKygyIHJvd3MpCisKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICdbeyJhIjogMSwgImIiOiAiZm9vIiwgInQiOiAiYWFhIiwg ImpzIjogWzEsICIyIiwge31dLCAiamIiOiB7IngiOiBbMSwgIjIiLCB7fV19fSwgIHsiYSI6IDJ9 XScsICckWzBdJyBSRVRVUk5JTkcganNvbnBhdGgpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1t7ImEiOiAxLCAiYiI6 ICJmb28iLCAidCI6ICJhYWEiLCAianMiOiBbMSwgIjIiLCB7fV0sICJqYiI6IHsieCI6IFsxLCAi MiIsIHt9XX19LCAgeyJhIjogMn1dJywgJyRbMF0nIFJFVFVSTklORyBqc29ucGF0aCBFUlJPUiBP TiBFUlJPUik7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICJ7IiBvZiBqc29ucGF0 aCBpbnB1dAorLS0gRXh0ZW5zaW9uOiBhcnJheSB0eXBlcyByZXR1cm5pbmcKK1NFTEVDVCBKU09O X1FVRVJZKGpzb25iICdbMSwyLG51bGwsIjMiXScsICckWypdJyBSRVRVUk5JTkcgaW50W10gV0lU SCBXUkFQUEVSKTsKKyAganNvbl9xdWVyeSAgCistLS0tLS0tLS0tLS0tLQorIHsxLDIsTlVMTCwz fQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMixudWxsLCJhIl0nLCAn JFsqXScgUkVUVVJOSU5HIGludFtdIFdJVEggV1JBUFBFUiBFUlJPUiBPTiBFUlJPUik7CitFUlJP UjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGludGVnZXI6ICJhIgorU0VMRUNUIEpT T05fUVVFUlkoanNvbmIgJ1sxLDIsbnVsbCwiYSJdJywgJyRbKl0nIFJFVFVSTklORyBpbnRbXSBX SVRIIFdSQVBQRVIpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor U0VMRUNUICogRlJPTSB1bm5lc3QoSlNPTl9RVUVSWShqc29uYiAnW3siYSI6IDEsICJ0IjogWyJm b28iLCBbXV19LCB7ImEiOiAyLCAiamIiOiBbe30sIHRydWVdfV0nLCAnJCcgUkVUVVJOSU5HIHNx bGpzb25iX3JlY1tdKSk7CisgYSB8ICAgICAgdCAgICAgIHwganMgfCAgICAgamIgICAgIHwganNh IAorLS0tKy0tLS0tLS0tLS0tLS0rLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0KKyAxIHwgWyJmb28i LCBbXV0gfCAgICB8ICAgICAgICAgICAgfCAKKyAyIHwgICAgICAgICAgICAgfCAgICB8IFt7fSwg dHJ1ZV0gfCAKKygyIHJvd3MpCisKKy0tIEV4dGVuc2lvbjogZG9tYWluIHR5cGVzIHJldHVybmlu ZworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ3siYSI6IDF9JywgJyQuYScgUkVUVVJOSU5HIHNx bGpzb25iX2ludF9ub3RfbnVsbCk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorICAgICAg ICAgIDEKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ3siYSI6IDF9JywgJyQu YicgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCk7CisganNvbl9xdWVyeSAKKy0tLS0t LS0tLS0tLQorICAgICAgICAgICAKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg J3siYSI6IDF9JywgJyQuYicgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCBFUlJPUiBP TiBFUlJPUik7CitFUlJPUjogIG5vIFNRTC9KU09OIGl0ZW0KKy0tIFRlc3QgdGltZXN0YW1wdHog cGFzc2luZyBhbmQgb3V0cHV0CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnbnVsbCcsICckdHMn IFBBU1NJTkcgdGltZXN0YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyk7Cisg ICAgICAgICBqc29uX3F1ZXJ5ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAiMjAxOC0wMi0yMVQwMjozNDo1NiswMDowMCIKKygxIHJvdykKKworU0VMRUNUIEpTT05f UVVFUlkoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIx IDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIGpzb24pOworICAgICAgICAganNvbl9xdWVy eSAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIjIwMTgtMDItMjFU MDI6MzQ6NTYrMDA6MDAiCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdudWxs JywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFT IHRzIFJFVFVSTklORyBqc29uYik7CisgICAgICAgICBqc29uX3F1ZXJ5ICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAiMjAxOC0wMi0yMVQwMjozNDo1NiswMDowMCIK KygxIHJvdykKKworLS0gVGVzdCBjb25zdHJhaW50cworQ1JFQVRFIFRBQkxFIHRlc3RfanNvbmJf Y29uc3RyYWludHMgKAorCWpzIHRleHQsCisJaSBpbnQsCisJeCBqc29uYiBERUZBVUxUIEpTT05f UVVFUlkoanNvbmIgJ1sxLDJdJywgJyRbKl0nIFdJVEggV1JBUFBFUikKKwlDT05TVFJBSU5UIHRl c3RfanNvbmJfY29uc3RyYWludDEKKwkJQ0hFQ0sgKGpzIElTIEpTT04pCisJQ09OU1RSQUlOVCB0 ZXN0X2pzb25iX2NvbnN0cmFpbnQyCisJCUNIRUNLIChKU09OX0VYSVNUUyhqczo6anNvbmIsICck LmEnIFBBU1NJTkcgaSArIDUgQVMgaW50LCBpOjp0ZXh0IEFTIHR4dCwgYXJyYXlbMSwyLDNdIGFz IGFycikpCisJQ09OU1RSQUlOVCB0ZXN0X2pzb25iX2NvbnN0cmFpbnQzCisJCUNIRUNLIChKU09O X1ZBTFVFKGpzOjpqc29uYiwgJyQuYScgUkVUVVJOSU5HIGludCBERUZBVUxUICcxMicgT04gRU1Q VFkgRVJST1IgT04gRVJST1IpID4gaSkKKwlDT05TVFJBSU5UIHRlc3RfanNvbmJfY29uc3RyYWlu dDQKKwkJQ0hFQ0sgKEpTT05fUVVFUlkoanM6Ompzb25iLCAnJC5hJyBXSVRIIENPTkRJVElPTkFM IFdSQVBQRVIgRU1QVFkgT0JKRUNUIE9OIEVSUk9SKSA8IGpzb25iICdbMTBdJykKKwlDT05TVFJB SU5UIHRlc3RfanNvbmJfY29uc3RyYWludDUKKwkJQ0hFQ0sgKEpTT05fUVVFUlkoanM6Ompzb25i LCAnJC5hJyBSRVRVUk5JTkcgY2hhcig1KSBPTUlUIFFVT1RFUyBFTVBUWSBBUlJBWSBPTiBFTVBU WSkgPiAgJ2EnIENPTExBVEUgIkMiKQorKTsKK1xkIHRlc3RfanNvbmJfY29uc3RyYWludHMKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVz dF9qc29uYl9jb25zdHJhaW50cyIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVs bGFibGUgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGpzICAgICB8IHRleHQg ICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAg ICAgfCAgICAgICAgICB8IAorIHggICAgICB8IGpzb25iICAgfCAgICAgICAgICAgfCAgICAgICAg ICB8IEpTT05fUVVFUlkoJ1sxLCAyXSc6Ompzb25iLCAnJFsqXScgUkVUVVJOSU5HIGpzb25iIFdJ VEggVU5DT05ESVRJT05BTCBXUkFQUEVSKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInRlc3Rf anNvbmJfY29uc3RyYWludDEiIENIRUNLIChqcyBJUyBKU09OKQorICAgICJ0ZXN0X2pzb25iX2Nv bnN0cmFpbnQyIiBDSEVDSyAoSlNPTl9FWElTVFMoanM6Ompzb25iLCAnJC4iYSInIFBBU1NJTkcg aSArIDUgQVMgaW50LCBpOjp0ZXh0IEFTIHR4dCwgQVJSQVlbMSwgMiwgM10gQVMgYXJyKSkKKyAg ICAidGVzdF9qc29uYl9jb25zdHJhaW50MyIgQ0hFQ0sgKEpTT05fVkFMVUUoanM6Ompzb25iLCAn JC4iYSInIFJFVFVSTklORyBpbnRlZ2VyIERFRkFVTFQgMTIgT04gRU1QVFkgRVJST1IgT04gRVJS T1IpID4gaSkKKyAgICAidGVzdF9qc29uYl9jb25zdHJhaW50NCIgQ0hFQ0sgKEpTT05fUVVFUlko anM6Ompzb25iLCAnJC4iYSInIFJFVFVSTklORyBqc29uYiBXSVRIIENPTkRJVElPTkFMIFdSQVBQ RVIgRU1QVFkgT0JKRUNUIE9OIEVSUk9SKSA8ICdbMTBdJzo6anNvbmIpCisgICAgInRlc3RfanNv bmJfY29uc3RyYWludDUiIENIRUNLIChKU09OX1FVRVJZKGpzOjpqc29uYiwgJyQuImEiJyBSRVRV Uk5JTkcgY2hhcmFjdGVyKDUpIE9NSVQgUVVPVEVTIEVNUFRZIEFSUkFZIE9OIEVNUFRZKSA+ICgn YSc6OmJwY2hhciBDT0xMQVRFICJDIikpCisKK1NFTEVDVCBjaGVja19jbGF1c2UKK0ZST00gaW5m b3JtYXRpb25fc2NoZW1hLmNoZWNrX2NvbnN0cmFpbnRzCitXSEVSRSBjb25zdHJhaW50X25hbWUg TElLRSAndGVzdF9qc29uYl9jb25zdHJhaW50JScKK09SREVSIEJZIDE7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19jbGF1c2UgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIChKU09OX1FVRVJZKChqcyk6Ompzb25iLCAnJC4iYSInIFJFVFVSTklORyBjaGFyYWN0ZXIo NSkgT01JVCBRVU9URVMgRU1QVFkgQVJSQVkgT04gRU1QVFkpID4gKCdhJzo6YnBjaGFyIENPTExB VEUgIkMiKSkKKyAoSlNPTl9RVUVSWSgoanMpOjpqc29uYiwgJyQuImEiJyBSRVRVUk5JTkcganNv bmIgV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSIEVNUFRZIE9CSkVDVCBPTiBFUlJPUikgPCAnWzEw XSc6Ompzb25iKQorIChKU09OX1ZBTFVFKChqcyk6Ompzb25iLCAnJC4iYSInIFJFVFVSTklORyBp bnRlZ2VyIERFRkFVTFQgMTIgT04gRU1QVFkgRVJST1IgT04gRVJST1IpID4gaSkKKyAoanMgSVMg SlNPTikKKyBKU09OX0VYSVNUUygoanMpOjpqc29uYiwgJyQuImEiJyBQQVNTSU5HIChpICsgNSkg QVMgaW50LCAoaSk6OnRleHQgQVMgdHh0LCBBUlJBWVsxLCAyLCAzXSBBUyBhcnIpCisoNSByb3dz KQorCitTRUxFQ1QgcGdfZ2V0X2V4cHIoYWRiaW4sIGFkcmVsaWQpCitGUk9NIHBnX2F0dHJkZWYK K1dIRVJFIGFkcmVsaWQgPSAndGVzdF9qc29uYl9jb25zdHJhaW50cyc6OnJlZ2NsYXNzCitPUkRF UiBCWSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgSlNPTl9RVUVSWSgnWzEsIDJdJzo6anNvbmIsICckWypdJyBSRVRVUk5JTkcganNvbmIgV0lU SCBVTkNPTkRJVElPTkFMIFdSQVBQRVIpCisoMSByb3cpCisKK0lOU0VSVCBJTlRPIHRlc3RfanNv bmJfY29uc3RyYWludHMgVkFMVUVTICgnJywgMSk7CitFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0 aW9uICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJ0 ZXN0X2pzb25iX2NvbnN0cmFpbnQxIgorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKCwg MSwgWzEsIDJdKS4KK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgn MScsIDEpOworRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAidGVzdF9qc29uYl9jb25zdHJh aW50cyIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAidGVzdF9qc29uYl9jb25zdHJhaW50MiIK K0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgxLCAxLCBbMSwgMl0pLgorSU5TRVJUIElO VE8gdGVzdF9qc29uYl9jb25zdHJhaW50cyBWQUxVRVMgKCdbXScpOworRVJST1I6ICBuZXcgcm93 IGZvciByZWxhdGlvbiAidGVzdF9qc29uYl9jb25zdHJhaW50cyIgdmlvbGF0ZXMgY2hlY2sgY29u c3RyYWludCAidGVzdF9qc29uYl9jb25zdHJhaW50MiIKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNv bnRhaW5zIChbXSwgbnVsbCwgWzEsIDJdKS4KK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3Ry YWludHMgVkFMVUVTICgneyJiIjogMX0nLCAxKTsKK0VSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRp b24gInRlc3RfanNvbmJfY29uc3RyYWludHMiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInRl c3RfanNvbmJfY29uc3RyYWludDIiCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoeyJi IjogMX0sIDEsIFsxLCAyXSkuCitJTlNFUlQgSU5UTyB0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIFZB TFVFUyAoJ3siYSI6IDF9JywgMSk7CitFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJ0ZXN0 X2pzb25iX2NvbnN0cmFpbnRzIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJ0ZXN0X2pzb25i X2NvbnN0cmFpbnQzIgorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKHsiYSI6IDF9LCAx LCBbMSwgMl0pLgorSU5TRVJUIElOVE8gdGVzdF9qc29uYl9jb25zdHJhaW50cyBWQUxVRVMgKCd7 ImEiOiA3fScsIDEpOworRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAidGVzdF9qc29uYl9j b25zdHJhaW50cyIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAidGVzdF9qc29uYl9jb25zdHJh aW50NSIKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICh7ImEiOiA3fSwgMSwgWzEsIDJd KS4KK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgneyJhIjogMTB9 JywgMSk7CitFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJ0ZXN0X2pzb25iX2NvbnN0cmFp bnRzIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnQ0Igor REVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKHsiYSI6IDEwfSwgMSwgWzEsIDJdKS4KK0RS T1AgVEFCTEUgdGVzdF9qc29uYl9jb25zdHJhaW50czsKKy0tIFRlc3QgbXV0YWJpbGlseSBvZiBx dWVyeSBmdW5jdGlvbnMKK0NSRUFURSBUQUJMRSB0ZXN0X2pzb25iX211dGFiaWxpdHkoanMganNv bmIpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShq cywgJyQnKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FV RVJZKGpzLCAnJC5hWzBdJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0 eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUoKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0 X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmEgPyAoQCA8ICQuZGF0ZXRpbWUo KSknKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZ KGpzLCAnJC5hID8gKEAuZGF0ZXRpbWUoKSA8ICQuZGF0ZXRpbWUoKSknKSk7CitFUlJPUjogIGZ1 bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JF QVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/ IChALmRhdGV0aW1lKCkgPCAkLmRhdGV0aW1lKCJISDpNSSBUWkgiKSknKSk7CitFUlJPUjogIGZ1 bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JF QVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/ IChALmRhdGV0aW1lKCJISDpNSSBUWkgiKSA8ICQuZGF0ZXRpbWUoIkhIOk1JIFRaSCIpKScpKTsK K0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICck LmEgPyAoQC5kYXRldGltZSgiSEg6TUkiKSA8ICQuZGF0ZXRpbWUoIllZLU1NLUREIEhIOk1JIikp JykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShq cywgJyQuYSA/IChALmRhdGV0aW1lKCJISDpNSSBUWkgiKSA8ICQuZGF0ZXRpbWUoIllZLU1NLURE IEhIOk1JIikpJykpOworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0 IGJlIG1hcmtlZCBJTU1VVEFCTEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxp dHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0aW1lKCJISDpNSSBUWkgiKSA8ICR4JyBQQVNTSU5H ICcxMjozNCc6OnRpbWV0eiBBUyB4KSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRh YmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRldGltZSgiSEg6TUkgVFpIIikgPCAkeScgUEFT U0lORyAnMTI6MzQnOjp0aW1ldHogQVMgeCkpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJf bXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUoKSA8ICR4JyBQQVNTSU5HICcx MjozNCc6OnRpbWV0eiBBUyB4KSk7CitFUlJPUjogIGZ1bmN0aW9ucyBpbiBpbmRleCBleHByZXNz aW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJf bXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUoKSA8ICR4JyBQQVNTSU5HICcx MjM0Jzo6aW50IEFTIHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkg KEpTT05fUVVFUlkoanMsICckLmRhdGV0aW1lKCkgPyAoQCA9PSAkeCknIFBBU1NJTkcgJzEyOjM0 Jzo6dGltZSBBUyB4KSk7CitFUlJPUjogIGZ1bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11 c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJp bGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUoIllZLU1NLUREIikgPyAoQCA9PSAkeCkn IFBBU1NJTkcgJzIwMjAtMDctMTQnOjpkYXRlIEFTIHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0 X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckWzEsICQuYSA/IChALmRhdGV0aW1l KCkgPT0gJHgpXScgUEFTU0lORyAnMTI6MzQnOjp0aW1lIEFTIHgpKTsKK0VSUk9SOiAgZnVuY3Rp b25zIGluIGluZGV4IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCitDUkVBVEUg SU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJFsxLCAwIHRv ICQuYSA/IChALmRhdGV0aW1lKCkgPT0gJHgpXScgUEFTU0lORyAnMTI6MzQnOjp0aW1lIEFTIHgp KTsKK0VSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJrZWQg SU1NVVRBQkxFCitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FV RVJZKGpzLCAnJFsxLCAkLmEgPyAoQC5kYXRldGltZSgiSEg6TUkiKSA9PSAkeCldJyBQQVNTSU5H ICcxMjozNCc6OnRpbWUgQVMgeCkpOworRFJPUCBUQUJMRSB0ZXN0X2pzb25iX211dGFiaWxpdHk7 CistLSBFeHRlbnNpb246IG5vbi1jb25zdGFudCBKU09OIHBhdGgKK1NFTEVDVCBKU09OX0VYSVNU Uyhqc29uYiAneyJhIjogMTIzfScsICckJyB8fCAnLicgfHwgJ2EnKTsKKyBqc29uX2V4aXN0cyAK Ky0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICd7 ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8fCAnYScpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0t LS0KKyAxMjMKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ3siYSI6IDEyM30n LCAnJCcgfHwgJy4nIHx8ICdiJyBERUZBVUxUICdmb28nIE9OIEVNUFRZKTsKKyBqc29uX3ZhbHVl IAorLS0tLS0tLS0tLS0tCisgZm9vCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25i ICd7ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8fCAnYScpOworIGpzb25fcXVlcnkgCistLS0tLS0t LS0tLS0KKyAxMjMKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ3siYSI6IDEy M30nLCAnJCcgfHwgJy4nIHx8ICdhJyBXSVRIIFdSQVBQRVIpOworIGpzb25fcXVlcnkgCistLS0t LS0tLS0tLS0KKyBbMTIzXQorKDEgcm93KQorCistLSBTaG91bGQgZmFpbCAoaW52YWxpZCBwYXRo KQorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ3siYSI6IDEyM30nLCAnZXJyb3InIHx8ICcgJyB8 fCAnZXJyb3InKTsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIiAiIG9mIGpzb25w YXRoIGlucHV0CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl IGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCBmMDk4N2ZmNTM3Li5m NDg4YWZlZmE1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTEwMyw3ICsxMDMs NyBAQCB0ZXN0OiBzZWxlY3Rfdmlld3MgcG9ydGFsc19wMiBmb3JlaWduX2tleSBjbHVzdGVyIGRl cGVuZGVuY3kgZ3VjIGJpdG1hcG9wcyBjb21ibwogIyAtLS0tLS0tLS0tCiAjIEFub3RoZXIgZ3Jv dXAgb2YgcGFyYWxsZWwgdGVzdHMgKEpTT04gcmVsYXRlZCkKICMgLS0tLS0tLS0tLQotdGVzdDog anNvbiBqc29uYiBqc29uX2VuY29kaW5nIGpzb25wYXRoIGpzb25wYXRoX2VuY29kaW5nIGpzb25i X2pzb25wYXRoIHNxbGpzb24KK3Rlc3Q6IGpzb24ganNvbmIganNvbl9lbmNvZGluZyBqc29ucGF0 aCBqc29ucGF0aF9lbmNvZGluZyBqc29uYl9qc29ucGF0aCBzcWxqc29uIHNxbGpzb25fcXVlcnlm dW5jcwogCiAjIC0tLS0tLS0tLS0KICMgQW5vdGhlciBncm91cCBvZiBwYXJhbGxlbCB0ZXN0cwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3FsanNvbl9xdWVyeWZ1bmNzLnNxbCBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NxbGpzb25fcXVlcnlmdW5jcy5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uODJlZDg3Mjc1ZAotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NxbGpzb25fcXVlcnlmdW5jcy5zcWwKQEAgLTAsMCArMSwz NzEgQEAKKy0tIEpTT05fRVhJU1RTCisKKy0tIGpzb24gYXJndW1lbnRzIGN1cnJlbnRseSBub3Qg c3VwcG9ydGVkCitTRUxFQ1QgSlNPTl9FWElTVFMoTlVMTCBGT1JNQVQgSlNPTiwgJyQnKTsKKwor U0VMRUNUIEpTT05fRVhJU1RTKE5VTEw6Ompzb25iLCAnJCcpOworU0VMRUNUIEpTT05fRVhJU1RT KGpzb25iICdbXScsICckJyk7CitTRUxFQ1QgSlNPTl9FWElTVFMoSlNPTl9PQkpFQ1QoUkVUVVJO SU5HIGpzb25iKSwgJyQnKTsKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJyQnKTsK K1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnbnVsbCcsICckJyk7CitTRUxFQ1QgSlNPTl9FWElT VFMoanNvbmIgJ1tdJywgJyQnKTsKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJyQu YScpOworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJ3N0cmljdCAkLmEnKTsgLS0gRkFM U0Ugb24gZXJyb3IKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICdzdHJpY3QgJC5hJyBF UlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ251bGwnLCAnJC5hJyk7 CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ1tdJywgJyQuYScpOworU0VMRUNUIEpTT05fRVhJ U1RTKGpzb25iICdbMSwgImFhYSIsIHsiYSI6IDF9XScsICdzdHJpY3QgJC5hJyk7IC0tIEZBTFNF IG9uIGVycm9yCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ1sxLCAiYWFhIiwgeyJhIjogMX1d JywgJ2xheCAkLmEnKTsKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAne30nLCAnJC5hJyk7CitT RUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3siYiI6IDEsICJhIjogMn0nLCAnJC5hJyk7CisKK1NF TEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICckLmEuYicpOworU0VMRUNUIEpTT05fRVhJU1RT KGpzb25iICd7ImEiOiB7ImIiOiAxfX0nLCAnJC5hLmInKTsKK1NFTEVDVCBKU09OX0VYSVNUUyhq c29uYiAneyJhIjogMSwgImIiOiAyfScsICckLmEuYicpOworCitTRUxFQ1QgSlNPTl9FWElTVFMo anNvbmIgJ3siYSI6IDEsICJiIjogMn0nLCAnJC4qID8gKEAgPiAkeCknIFBBU1NJTkcgMSBBUyB4 KTsKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJhIjogMSwgImIiOiAyfScsICckLiogPyAo QCA+ICR4KScgUEFTU0lORyAnMScgQVMgeCk7CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3si YSI6IDEsICJiIjogMn0nLCAnJC4qID8gKEAgPiAkeCAmJiBAIDwgJHkpJyBQQVNTSU5HIDAgQVMg eCwgMiBBUyB5KTsKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJhIjogMSwgImIiOiAyfScs ICckLiogPyAoQCA+ICR4ICYmIEAgPCAkeSknIFBBU1NJTkcgMCBBUyB4LCAxIEFTIHkpOworCist LSBleHRlbnNpb246IGJvb2xlYW4gZXhwcmVzc2lvbnMKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29u YiAnMScsICckID4gMicpOworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJyQuYSA+IDIn IEVSUk9SIE9OIEVSUk9SKTsKKworLS0gSlNPTl9WQUxVRQorCistLSBqc29uIGFyZ3VtZW50cyBj dXJyZW50bHkgbm90IHN1cHBvcnRlZAorU0VMRUNUIEpTT05fVkFMVUUoTlVMTCBGT1JNQVQgSlNP TiwgJyQnKTsKKworU0VMRUNUIEpTT05fVkFMVUUoTlVMTDo6anNvbmIsICckJyk7CisKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyQnKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25i ICdudWxsJywgJyQnIFJFVFVSTklORyBpbnQpOworCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn dHJ1ZScsICckJyk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAndHJ1ZScsICckJyBSRVRVUk5J TkcgYm9vbCk7CisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxMjMnLCAnJCcpOworU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJzEyMycsICckJyBSRVRVUk5JTkcgaW50KSArIDIzNDsKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICcxMjMnLCAnJCcgUkVUVVJOSU5HIHRleHQpOworLyoganNvbmIg Ynl0ZWEgPz8/ICovCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMTIzJywgJyQnIFJFVFVSTklO RyBieXRlYSBFUlJPUiBPTiBFUlJPUik7CisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxLjIz JywgJyQnKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxLjIzJywgJyQnIFJFVFVSTklORyBp bnQpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyIxLjIzIicsICckJyBSRVRVUk5JTkcgbnVt ZXJpYyk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnIjEuMjMiJywgJyQnIFJFVFVSTklORyBp bnQgRVJST1IgT04gRVJST1IpOworCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAn JCcpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyB0ZXh0 KTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgY2hhcig1 KSk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGNoYXIo MikpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBqc29u KTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcganNvbmIp OworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBqc29uIEVS Uk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRV Uk5JTkcganNvbmIgRVJST1IgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJc ImFhYVwiIicsICckJyBSRVRVUk5JTkcganNvbik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn IlwiYWFhXCIiJywgJyQnIFJFVFVSTklORyBqc29uYik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29u YiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGludCk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn ImFhYSInLCAnJCcgUkVUVVJOSU5HIGludCBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9W QUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGludCBERUZBVUxUIDExMSBPTiBFUlJP Uik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnIjEyMyInLCAnJCcgUkVUVVJOSU5HIGludCkg KyAyMzQ7CisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciMjAxNy0wMi0yMCInLCAnJCcgUkVU VVJOSU5HIGRhdGUpICsgOTsKKworLS0gVGVzdCBOVUxMIGNoZWNrcyBleGVjdXRpb24gaW4gZG9t YWluIHR5cGVzCitDUkVBVEUgRE9NQUlOIHNxbGpzb25iX2ludF9ub3RfbnVsbCBBUyBpbnQgTk9U IE5VTEw7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckJyBSRVRVUk5JTkcgc3Fs anNvbmJfaW50X25vdF9udWxsKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyQn IFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90X251bGwgRVJST1IgT04gRVJST1IpOworU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJCcgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3Rf bnVsbCBERUZBVUxUIDIgT04gRU1QVFkgRVJST1IgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJzEnLCAgJyQuYScgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCBERUZB VUxUIDIgT04gRU1QVFkgRVJST1IgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIg JzEnLCAgJyQuYScgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCBERUZBVUxUIE5VTEwg T04gRU1QVFkgRVJST1IgT04gRVJST1IpOworQ1JFQVRFIFRZUEUgcmFpbmJvdyBBUyBFTlVNICgn cmVkJywgJ29yYW5nZScsICd5ZWxsb3cnLCAnZ3JlZW4nLCAnYmx1ZScsICdwdXJwbGUnKTsKK0NS RUFURSBET01BSU4gcmdiIEFTIHJhaW5ib3cgQ0hFQ0sgKFZBTFVFIElOICgncmVkJywgJ2dyZWVu JywgJ2JsdWUnKSk7CitTRUxFQ1QgSlNPTl9WQUxVRSgnInB1cnBsZSInOjpqc29uYiwgJ2xheCAk WypdJyBSRVRVUk5JTkcgcmdiKTsKK1NFTEVDVCBKU09OX1ZBTFVFKCcicHVycGxlIic6Ompzb25i LCAnbGF4ICRbKl0nIFJFVFVSTklORyByZ2IgRVJST1IgT04gRVJST1IpOworCitTRUxFQ1QgSlNP Tl9WQUxVRShqc29uYiAnW10nLCAnJCcpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1tdJywg JyQnIEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICd7fScsICckJyk7 CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAne30nLCAnJCcgRVJST1IgT04gRVJST1IpOworCitT RUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICckLmEnKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpz b25iICcxJywgJ3N0cmljdCAkLmEnIEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVF KGpzb25iICcxJywgJ3N0cmljdCAkLmEnIERFRkFVTFQgJ2Vycm9yJyBPTiBFUlJPUik7CitTRUxF Q1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdsYXggJC5hJyBFUlJPUiBPTiBFUlJPUik7CitTRUxF Q1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdsYXggJC5hJyBFUlJPUiBPTiBFTVBUWSBFUlJPUiBP TiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdzdHJpY3QgJC5hJyBERUZB VUxUIDIgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnbGF4ICQuYScg REVGQVVMVCAyIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAk LmEnIERFRkFVTFQgJzInIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywg J2xheCAkLmEnIE5VTEwgT04gRU1QVFkgREVGQVVMVCAnMicgT04gRVJST1IpOworU0VMRUNUIEpT T05fVkFMVUUoanNvbmIgJzEnLCAnbGF4ICQuYScgREVGQVVMVCAnMicgT04gRU1QVFkgREVGQVVM VCAnMycgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnbGF4ICQuYScg RVJST1IgT04gRU1QVFkgREVGQVVMVCAnMycgT04gRVJST1IpOworCitTRUxFQ1QgSlNPTl9WQUxV RShqc29uYiAnWzEsMl0nLCAnJFsqXScgRVJST1IgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJ1sxLDJdJywgJyRbKl0nIERFRkFVTFQgJzAnIE9OIEVSUk9SKTsKK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICdbIiAiXScsICckWypdJyBSRVRVUk5JTkcgaW50IEVSUk9SIE9OIEVS Uk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbIiAiXScsICckWypdJyBSRVRVUk5JTkcg aW50IERFRkFVTFQgMiArIDMgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1si MSJdJywgJyRbKl0nIFJFVFVSTklORyBpbnQgREVGQVVMVCAyICsgMyBPTiBFUlJPUik7CitTRUxF Q1QgSlNPTl9WQUxVRShqc29uYiAnWyIxIl0nLCAnJFsqXScgUkVUVVJOSU5HIGludCBGT1JNQVQg SlNPTik7IC0tIFJFVFVSTklORyBGT1JNQVQgbm90IGFsbG93ZWQKKworLS0gUkVUVUdOSU5HIHBz ZXVkby10eXBlcyBub3QgYWxsb3dlZAorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1siMSJdJywg JyRbKl0nIFJFVFVSTklORyByZWNvcmQpOworCitTRUxFQ1QKKwl4LAorCUpTT05fVkFMVUUoCisJ CWpzb25iICd7ImEiOiAxLCAiYiI6IDJ9JywKKwkJJyQuKiA/IChAID4gJHgpJyBQQVNTSU5HIHgg QVMgeAorCQlSRVRVUk5JTkcgaW50CisJCURFRkFVTFQgLTEgT04gRU1QVFkKKwkJREVGQVVMVCAt MiBPTiBFUlJPUgorCSkgeQorRlJPTQorCWdlbmVyYXRlX3NlcmllcygwLCAyKSB4OworCitTRUxF Q1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckYScgUEFTU0lORyBwb2ludCAnICgxLCAyICkn IEFTIGEpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJGEnIFBBU1NJTkcgcG9p bnQgJyAoMSwgMiApJyBBUyBhIFJFVFVSTklORyBwb2ludCk7CitTRUxFQ1QgSlNPTl9WQUxVRShq c29uYiAnbnVsbCcsICckYScgUEFTU0lORyBwb2ludCAnICgxLCAyICknIEFTIGEgUkVUVVJOSU5H IHBvaW50IEVSUk9SIE9OIEVSUk9SKTsKKworLS0gVGVzdCBQQVNTSU5HIGFuZCBSRVRVUk5JTkcg ZGF0ZS90aW1lIHR5cGVzCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBB U1NJTkcgdGltZXN0YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyk7CitTRUxF Q1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIw MTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcgdGltZXN0YW1wdHopOworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcy MDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIHRpbWVzdGFtcCk7CitTRUxF Q1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgZGF0ZSAnMjAxOC0wMi0y MSAxMjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyBkYXRlKTsKK1NFTEVDVCBKU09OX1ZBTFVF KGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsx MCcgQVMgdHMgUkVUVVJOSU5HIHRpbWUpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwn LCAnJHRzJyBQQVNTSU5HIHRpbWV0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJF VFVSTklORyB0aW1ldHopOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQ QVNTSU5HIHRpbWVzdGFtcCAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklO RyB0aW1lc3RhbXApOworCistLSBBbHNvIHRlc3QgUkVUVVJOSU5HIGpzb25bYl0KK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0w Mi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyBqc29uKTsKK1NFTEVDVCBKU09OX1ZB TFVFKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAx MjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyBqc29uYik7CisKKy0tIEpTT05fUVVFUlkKKwor LS0ganNvbiBhcmd1bWVudHMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQKK1NFTEVDVCBKU09OX1FV RVJZKE5VTEwgRk9STUFUIEpTT04sICckJyk7CisKK1NFTEVDVCBKU09OX1ZBTFVFKE5VTEw6Ompz b25iLCAnJCcpOworCitTRUxFQ1QKKwlKU09OX1FVRVJZKGpzLCAnJCcpLAorCUpTT05fUVVFUlko anMsICckJyBXSVRIT1VUIFdSQVBQRVIpLAorCUpTT05fUVVFUlkoanMsICckJyBXSVRIIENPTkRJ VElPTkFMIFdSQVBQRVIpLAorCUpTT05fUVVFUlkoanMsICckJyBXSVRIIFVOQ09ORElUSU9OQUwg QVJSQVkgV1JBUFBFUiksCisJSlNPTl9RVUVSWShqcywgJyQnIFdJVEggQVJSQVkgV1JBUFBFUikK K0ZST00KKwkoVkFMVUVTCisJCShqc29uYiAnbnVsbCcpLAorCQkoJzEyLjMnKSwKKwkJKCd0cnVl JyksCisJCSgnImFhYSInKSwKKwkJKCdbMSwgbnVsbCwgIjIiXScpLAorCQkoJ3siYSI6IDEsICJi IjogWzJdfScpCisJKSBmb28oanMpOworCitTRUxFQ1QKKwlKU09OX1FVRVJZKGpzLCAnc3RyaWN0 ICRbKl0nKSBBUyAidW5zcGVjIiwKKwlKU09OX1FVRVJZKGpzLCAnc3RyaWN0ICRbKl0nIFdJVEhP VVQgV1JBUFBFUikgQVMgIndpdGhvdXQiLAorCUpTT05fUVVFUlkoanMsICdzdHJpY3QgJFsqXScg V0lUSCBDT05ESVRJT05BTCBXUkFQUEVSKSBBUyAid2l0aCBjb25kIiwKKwlKU09OX1FVRVJZKGpz LCAnc3RyaWN0ICRbKl0nIFdJVEggVU5DT05ESVRJT05BTCBBUlJBWSBXUkFQUEVSKSBBUyAid2l0 aCB1bmNvbmQiLAorCUpTT05fUVVFUlkoanMsICdzdHJpY3QgJFsqXScgV0lUSCBBUlJBWSBXUkFQ UEVSKSBBUyAid2l0aCIKK0ZST00KKwkoVkFMVUVTCisJCShqc29uYiAnMScpLAorCQkoJ1tdJyks CisJCSgnW251bGxdJyksCisJCSgnWzEyLjNdJyksCisJCSgnW3RydWVdJyksCisJCSgnWyJhYWEi XScpLAorCQkoJ1tbMSwgMiwgM11dJyksCisJCSgnW3siYSI6IDEsICJiIjogWzJdfV0nKSwKKwkJ KCdbMSwgIjIiLCBudWxsLCBbM11dJykKKwkpIGZvbyhqcyk7CisKK1NFTEVDVCBKU09OX1FVRVJZ KGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgdGV4dCk7CitTRUxFQ1QgSlNPTl9RVUVSWShq c29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIHRleHQgS0VFUCBRVU9URVMpOworU0VMRUNUIEpT T05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyB0ZXh0IEtFRVAgUVVPVEVTIE9O IFNDQUxBUiBTVFJJTkcpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJF VFVSTklORyB0ZXh0IE9NSVQgUVVPVEVTKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFh IicsICckJyBSRVRVUk5JTkcgdGV4dCBPTUlUIFFVT1RFUyBPTiBTQ0FMQVIgU1RSSU5HKTsKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckJyBPTUlUIFFVT1RFUyBFUlJPUiBPTiBF UlJPUik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGpz b24gT01JVCBRVU9URVMgRVJST1IgT04gRVJST1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg JyJhYWEiJywgJyQnIFJFVFVSTklORyBieXRlYSBGT1JNQVQgSlNPTiBPTUlUIFFVT1RFUyBFUlJP UiBPTiBFUlJPUik7CisKKy0tIFFVT1RFUyBiZWhhdmlvciBzaG91bGQgbm90IGJlIHNwZWNpZmll ZCB3aGVuIFdJVEggV1JBUFBFUiB1c2VkOgorLS0gU2hvdWxkIGZhaWwKK1NFTEVDVCBKU09OX1FV RVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBXUkFQUEVSIE9NSVQgUVVPVEVTKTsKK1NFTEVDVCBK U09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBXUkFQUEVSIEtFRVAgUVVPVEVTKTsKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBDT05ESVRJT05BTCBXUkFQUEVS IEtFRVAgUVVPVEVTKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBD T05ESVRJT05BTCBXUkFQUEVSIE9NSVQgUVVPVEVTKTsKKy0tIFNob3VsZCBzdWNjZWVkCitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEhPVVQgV1JBUFBFUiBPTUlUIFFVT1RF Uyk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEhPVVQgV1JBUFBFUiBL RUVQIFFVT1RFUyk7CisKKy0tIHRlc3QgUVVPVEVTIGJlaGF2aW9yLgorU0VMRUNUIEpTT05fUVVF UlkoanNvbmIneyJyZWMiOiAiezEsMiwzfSJ9JywgJyQucmVjJyByZXR1cm5pbmcgaW50W10gb21p dCBxdW90ZXMpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAiezEsMiwzfSJ9Jywg JyQucmVjJyByZXR1cm5pbmcgaW50W10ga2VlcCBxdW90ZXMpOworU0VMRUNUIEpTT05fUVVFUlko anNvbmIneyJyZWMiOiAiezEsMiwzfSJ9JywgJyQucmVjJyByZXR1cm5pbmcgaW50W10ga2VlcCBx dW90ZXMgZXJyb3Igb24gZXJyb3IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAi WzEsMl0ifScsICckLnJlYycgcmV0dXJuaW5nIGludDRyYW5nZSBvbWl0IHF1b3Rlcyk7CitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6ICJbMSwyXSJ9JywgJyQucmVjJyByZXR1cm5pbmcg aW50NHJhbmdlIGtlZXAgcXVvdGVzKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iJ3sicmVjIjog IlsxLDJdIn0nLCAnJC5yZWMnIAlyZXR1cm5pbmcgaW50NHJhbmdlIGtlZXAgcXVvdGVzIGVycm9y IG9uIGVycm9yKTsKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nKTsKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBOVUxMIE9OIEVNUFRZKTsKK1NFTEVD VCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBFTVBUWSBPTiBFTVBUWSk7CitTRUxFQ1Qg SlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRU1QVFkgQVJSQVkgT04gRU1QVFkpOworU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVNUFRZIE9CSkVDVCBPTiBFTVBUWSk7 CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRVJST1IgT04gRU1QVFkpOwor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIERFRkFVTFQgJyJlbXB0eSInIE9O IEVNUFRZKTsKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9O IEVNUFRZIE5VTEwgT04gRVJST1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRb Kl0nIEVSUk9SIE9OIEVNUFRZIEVNUFRZIEFSUkFZIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FV RVJZKGpzb25iICdbXScsICckWypdJyBFUlJPUiBPTiBFTVBUWSBFTVBUWSBPQkpFQ1QgT04gRVJS T1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9OIEVNUFRZ IEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBF UlJPUiBPTiBFUlJPUik7CisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckWypd JyBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJFsq XScgREVGQVVMVCAnImVtcHR5IicgT04gRVJST1IpOworCitTRUxFQ1QgSlNPTl9RVUVSWShqc29u YiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIGpzb24pOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg J1sxLDJdJywgJyQnIFJFVFVSTklORyBqc29uIEZPUk1BVCBKU09OKTsKK1NFTEVDVCBKU09OX1FV RVJZKGpzb25iICdbMSwyXScsICckJyBSRVRVUk5JTkcganNvbmIpOworU0VMRUNUIEpTT05fUVVF UlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBqc29uYiBGT1JNQVQgSlNPTik7CitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIHRleHQpOworU0VMRUNU IEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBjaGFyKDEwKSk7CitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIGNoYXIoMykpOworU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyB0ZXh0IEZPUk1BVCBK U09OKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckJyBSRVRVUk5JTkcgYnl0 ZWEpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBieXRl YSBGT1JNQVQgSlNPTik7CisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckWypd JyBSRVRVUk5JTkcgYnl0ZWEgRU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FV RVJZKGpzb25iICdbMSwyXScsICckWypdJyBSRVRVUk5JTkcgYnl0ZWEgRk9STUFUIEpTT04gRU1Q VFkgT0JKRUNUIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICck WypdJyBSRVRVUk5JTkcganNvbiBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOworU0VMRUNUIEpTT05f UVVFUlkoanNvbmIgJ1sxLDJdJywgJyRbKl0nIFJFVFVSTklORyBqc29uYiBFTVBUWSBPQkpFQ1Qg T04gRVJST1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1szLDRdJywgJyRbKl0nIFJFVFVS TklORyBiaWdpbnRbXSBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOworU0VMRUNUIEpTT05fUVVFUlko anNvbmIgJyJbMyw0XSInLCAnJFsqXScgUkVUVVJOSU5HIGJpZ2ludFtdIEVNUFRZIE9CSkVDVCBP TiBFUlJPUik7CisKKy0tIFJFVFVHTklORyBwc2V1ZG8tdHlwZXMgbm90IGFsbG93ZWQKK1NFTEVD VCBKU09OX1FVRVJZKGpzb25iICdbMyw0XScsICckWypdJyBSRVRVUk5JTkcgYW55YXJyYXkgRU1Q VFkgT0JKRUNUIE9OIEVSUk9SKTsKKworU0VMRUNUCisJeCwgeSwKKwlKU09OX1FVRVJZKAorCQlq c29uYiAnWzEsMiwzLDQsNSxudWxsXScsCisJCSckWypdID8gKEAgPj0gJHggJiYgQCA8PSAkeSkn CisJCVBBU1NJTkcgeCBBUyB4LCB5IEFTIHkKKwkJV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSCisJ CUVNUFRZIEFSUkFZIE9OIEVNUFRZCisJKSBsaXN0CitGUk9NCisJZ2VuZXJhdGVfc2VyaWVzKDAs IDQpIHgsCisJZ2VuZXJhdGVfc2VyaWVzKDAsIDQpIHk7CisKKy0tIHJlY29yZCB0eXBlIHJldHVy bmluZyB3aXRoIHF1b3RlcyBiZWhhdmlvci4KK0NSRUFURSBUWVBFIGNvbXBfYWJjIEFTIChhIHRl eHQsIGIgaW50LCBjIHRpbWVzdGFtcCk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6 ICIoYWJjLDQyLDAxLjAyLjIwMDMpIn0nLCAnJC5yZWMnIHJldHVybmluZyBjb21wX2FiYyBvbWl0 IHF1b3Rlcyk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6ICIoYWJjLDQyLDAxLjAy LjIwMDMpIn0nLCAnJC5yZWMnIHJldHVybmluZyBjb21wX2FiYyBrZWVwIHF1b3Rlcyk7CitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6ICIoYWJjLDQyLDAxLjAyLjIwMDMpIn0nLCAnJC5y ZWMnIHJldHVybmluZyBjb21wX2FiYyBrZWVwIHF1b3RlcyBlcnJvciBvbiBlcnJvcik7CitEUk9Q IFRZUEUgY29tcF9hYmM7CisKKy0tIEV4dGVuc2lvbjogcmVjb3JkIHR5cGVzIHJldHVybmluZwor Q1JFQVRFIFRZUEUgc3FsanNvbmJfcmVjIEFTIChhIGludCwgdCB0ZXh0LCBqcyBqc29uLCBqYiBq c29uYiwganNhIGpzb25bXSk7CitDUkVBVEUgVFlQRSBzcWxqc29uYl9yZWNhIEFTIChyZWNhIHNx bGpzb25iX3JlY1tdKTsKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1t7ImEiOiAxLCAiYiI6 ICJmb28iLCAidCI6ICJhYWEiLCAianMiOiBbMSwgIjIiLCB7fV0sICJqYiI6IHsieCI6IFsxLCAi MiIsIHt9XX19LCAgeyJhIjogMn1dJywgJyRbMF0nIFJFVFVSTklORyBzcWxqc29uYl9yZWMpOwor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1t7ImEiOiAiYSIsICJiIjogImZvbyIsICJ0IjogImFh YSIsICJqcyI6IFsxLCAiMiIsIHt9XSwgImpiIjogeyJ4IjogWzEsICIyIiwge31dfX0sICB7ImEi OiAyfV0nLCAnJFswXScgUkVUVVJOSU5HIHNxbGpzb25iX3JlYyBFUlJPUiBPTiBFUlJPUik7CitT RUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW3siYSI6ICJhIiwgImIiOiAiZm9vIiwgInQiOiAiYWFh IiwgImpzIjogWzEsICIyIiwge31dLCAiamIiOiB7IngiOiBbMSwgIjIiLCB7fV19fSwgIHsiYSI6 IDJ9XScsICckWzBdJyBSRVRVUk5JTkcgc3FsanNvbmJfcmVjKTsKK1NFTEVDVCAqIEZST00gdW5u ZXN0KChKU09OX1FVRVJZKGpzb25iICd7ImpzYSI6ICBbeyJhIjogMSwgImIiOiBbImZvbyJdfSwg eyJhIjogMiwgImMiOiB7fX0sIDEyM119JywgJyQnIFJFVFVSTklORyBzcWxqc29uYl9yZWMpKS5q c2EpOworU0VMRUNUICogRlJPTSB1bm5lc3QoKEpTT05fUVVFUlkoanNvbmIgJ3sicmVjYSI6IFt7 ImEiOiAxLCAidCI6IFsiZm9vIiwgW11dfSwgeyJhIjogMiwgImpiIjogW3t9LCB0cnVlXX1dfScs ICckJyBSRVRVUk5JTkcgc3FsanNvbmJfcmVjYSkpLnJlY2EpOworCitTRUxFQ1QgSlNPTl9RVUVS WShqc29uYiAnW3siYSI6IDEsICJiIjogImZvbyIsICJ0IjogImFhYSIsICJqcyI6IFsxLCAiMiIs IHt9XSwgImpiIjogeyJ4IjogWzEsICIyIiwge31dfX0sICB7ImEiOiAyfV0nLCAnJFswXScgUkVU VVJOSU5HIGpzb25wYXRoKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbeyJhIjogMSwgImIi OiAiZm9vIiwgInQiOiAiYWFhIiwgImpzIjogWzEsICIyIiwge31dLCAiamIiOiB7IngiOiBbMSwg IjIiLCB7fV19fSwgIHsiYSI6IDJ9XScsICckWzBdJyBSRVRVUk5JTkcganNvbnBhdGggRVJST1Ig T04gRVJST1IpOworCistLSBFeHRlbnNpb246IGFycmF5IHR5cGVzIHJldHVybmluZworU0VMRUNU IEpTT05fUVVFUlkoanNvbmIgJ1sxLDIsbnVsbCwiMyJdJywgJyRbKl0nIFJFVFVSTklORyBpbnRb XSBXSVRIIFdSQVBQRVIpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDIsbnVsbCwiYSJd JywgJyRbKl0nIFJFVFVSTklORyBpbnRbXSBXSVRIIFdSQVBQRVIgRVJST1IgT04gRVJST1IpOwor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDIsbnVsbCwiYSJdJywgJyRbKl0nIFJFVFVSTklO RyBpbnRbXSBXSVRIIFdSQVBQRVIpOworU0VMRUNUICogRlJPTSB1bm5lc3QoSlNPTl9RVUVSWShq c29uYiAnW3siYSI6IDEsICJ0IjogWyJmb28iLCBbXV19LCB7ImEiOiAyLCAiamIiOiBbe30sIHRy dWVdfV0nLCAnJCcgUkVUVVJOSU5HIHNxbGpzb25iX3JlY1tdKSk7CisKKy0tIEV4dGVuc2lvbjog ZG9tYWluIHR5cGVzIHJldHVybmluZworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ3siYSI6IDF9 JywgJyQuYScgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCk7CitTRUxFQ1QgSlNPTl9R VUVSWShqc29uYiAneyJhIjogMX0nLCAnJC5iJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50X25vdF9u dWxsKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICd7ImEiOiAxfScsICckLmInIFJFVFVSTklO RyBzcWxqc29uYl9pbnRfbm90X251bGwgRVJST1IgT04gRVJST1IpOworCistLSBUZXN0IHRpbWVz dGFtcHR6IHBhc3NpbmcgYW5kIG91dHB1dAorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ251bGwn LCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMg dHMpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVz dGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIGpzb24pOwor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6 ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIGpzb25iKTsKKworLS0g VGVzdCBjb25zdHJhaW50cworCitDUkVBVEUgVEFCTEUgdGVzdF9qc29uYl9jb25zdHJhaW50cyAo CisJanMgdGV4dCwKKwlpIGludCwKKwl4IGpzb25iIERFRkFVTFQgSlNPTl9RVUVSWShqc29uYiAn WzEsMl0nLCAnJFsqXScgV0lUSCBXUkFQUEVSKQorCUNPTlNUUkFJTlQgdGVzdF9qc29uYl9jb25z dHJhaW50MQorCQlDSEVDSyAoanMgSVMgSlNPTikKKwlDT05TVFJBSU5UIHRlc3RfanNvbmJfY29u c3RyYWludDIKKwkJQ0hFQ0sgKEpTT05fRVhJU1RTKGpzOjpqc29uYiwgJyQuYScgUEFTU0lORyBp ICsgNSBBUyBpbnQsIGk6OnRleHQgQVMgdHh0LCBhcnJheVsxLDIsM10gYXMgYXJyKSkKKwlDT05T VFJBSU5UIHRlc3RfanNvbmJfY29uc3RyYWludDMKKwkJQ0hFQ0sgKEpTT05fVkFMVUUoanM6Ompz b25iLCAnJC5hJyBSRVRVUk5JTkcgaW50IERFRkFVTFQgJzEyJyBPTiBFTVBUWSBFUlJPUiBPTiBF UlJPUikgPiBpKQorCUNPTlNUUkFJTlQgdGVzdF9qc29uYl9jb25zdHJhaW50NAorCQlDSEVDSyAo SlNPTl9RVUVSWShqczo6anNvbmIsICckLmEnIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUiBFTVBU WSBPQkpFQ1QgT04gRVJST1IpIDwganNvbmIgJ1sxMF0nKQorCUNPTlNUUkFJTlQgdGVzdF9qc29u Yl9jb25zdHJhaW50NQorCQlDSEVDSyAoSlNPTl9RVUVSWShqczo6anNvbmIsICckLmEnIFJFVFVS TklORyBjaGFyKDUpIE9NSVQgUVVPVEVTIEVNUFRZIEFSUkFZIE9OIEVNUFRZKSA+ICAnYScgQ09M TEFURSAiQyIpCispOworCitcZCB0ZXN0X2pzb25iX2NvbnN0cmFpbnRzCisKK1NFTEVDVCBjaGVj a19jbGF1c2UKK0ZST00gaW5mb3JtYXRpb25fc2NoZW1hLmNoZWNrX2NvbnN0cmFpbnRzCitXSEVS RSBjb25zdHJhaW50X25hbWUgTElLRSAndGVzdF9qc29uYl9jb25zdHJhaW50JScKK09SREVSIEJZ IDE7CisKK1NFTEVDVCBwZ19nZXRfZXhwcihhZGJpbiwgYWRyZWxpZCkKK0ZST00gcGdfYXR0cmRl ZgorV0hFUkUgYWRyZWxpZCA9ICd0ZXN0X2pzb25iX2NvbnN0cmFpbnRzJzo6cmVnY2xhc3MKK09S REVSIEJZIDE7CisKK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgn JywgMSk7CitJTlNFUlQgSU5UTyB0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIFZBTFVFUyAoJzEnLCAx KTsKK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgnW10nKTsKK0lO U0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgneyJiIjogMX0nLCAxKTsK K0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgneyJhIjogMX0nLCAx KTsKK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgneyJhIjogN30n LCAxKTsKK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgneyJhIjog MTB9JywgMSk7CisKK0RST1AgVEFCTEUgdGVzdF9qc29uYl9jb25zdHJhaW50czsKKworLS0gVGVz dCBtdXRhYmlsaWx5IG9mIHF1ZXJ5IGZ1bmN0aW9ucworQ1JFQVRFIFRBQkxFIHRlc3RfanNvbmJf bXV0YWJpbGl0eShqcyBqc29uYik7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmls aXR5IChKU09OX1FVRVJZKGpzLCAnJCcpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211 dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmFbMF0nKSk7CitDUkVBVEUgSU5ERVggT04gdGVz dF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRldGltZSgpJykpOworQ1JF QVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/ IChAIDwgJC5kYXRldGltZSgpKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFi aWxpdHkgKEpTT05fUVVFUlkoanMsICckLmEgPyAoQC5kYXRldGltZSgpIDwgJC5kYXRldGltZSgp KScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlko anMsICckLmEgPyAoQC5kYXRldGltZSgpIDwgJC5kYXRldGltZSgiSEg6TUkgVFpIIikpJykpOwor Q1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQu YSA/IChALmRhdGV0aW1lKCJISDpNSSBUWkgiKSA8ICQuZGF0ZXRpbWUoIkhIOk1JIFRaSCIpKScp KTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMs ICckLmEgPyAoQC5kYXRldGltZSgiSEg6TUkiKSA8ICQuZGF0ZXRpbWUoIllZLU1NLUREIEhIOk1J IikpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVS WShqcywgJyQuYSA/IChALmRhdGV0aW1lKCJISDpNSSBUWkgiKSA8ICQuZGF0ZXRpbWUoIllZLU1N LUREIEhIOk1JIikpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAo SlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUoIkhIOk1JIFRaSCIpIDwgJHgnIFBBU1NJTkcgJzEy OjM0Jzo6dGltZXR6IEFTIHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxp dHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0aW1lKCJISDpNSSBUWkgiKSA8ICR5JyBQQVNTSU5H ICcxMjozNCc6OnRpbWV0eiBBUyB4KSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRh YmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRldGltZSgpIDwgJHgnIFBBU1NJTkcgJzEyOjM0 Jzo6dGltZXR6IEFTIHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkg KEpTT05fUVVFUlkoanMsICckLmRhdGV0aW1lKCkgPCAkeCcgUEFTU0lORyAnMTIzNCc6OmludCBB UyB4KSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZ KGpzLCAnJC5kYXRldGltZSgpID8gKEAgPT0gJHgpJyBQQVNTSU5HICcxMjozNCc6OnRpbWUgQVMg eCkpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShq cywgJyQuZGF0ZXRpbWUoIllZLU1NLUREIikgPyAoQCA9PSAkeCknIFBBU1NJTkcgJzIwMjAtMDct MTQnOjpkYXRlIEFTIHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkg KEpTT05fUVVFUlkoanMsICckWzEsICQuYSA/IChALmRhdGV0aW1lKCkgPT0gJHgpXScgUEFTU0lO RyAnMTI6MzQnOjp0aW1lIEFTIHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFi aWxpdHkgKEpTT05fUVVFUlkoanMsICckWzEsIDAgdG8gJC5hID8gKEAuZGF0ZXRpbWUoKSA9PSAk eCldJyBQQVNTSU5HICcxMjozNCc6OnRpbWUgQVMgeCkpOworQ1JFQVRFIElOREVYIE9OIHRlc3Rf anNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyRbMSwgJC5hID8gKEAuZGF0ZXRpbWUo IkhIOk1JIikgPT0gJHgpXScgUEFTU0lORyAnMTI6MzQnOjp0aW1lIEFTIHgpKTsKK0RST1AgVEFC TEUgdGVzdF9qc29uYl9tdXRhYmlsaXR5OworCistLSBFeHRlbnNpb246IG5vbi1jb25zdGFudCBK U09OIHBhdGgKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJhIjogMTIzfScsICckJyB8fCAn LicgfHwgJ2EnKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8 ICcuJyB8fCAnYScpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ3siYSI6IDEyM30nLCAnJCcg fHwgJy4nIHx8ICdiJyBERUZBVUxUICdmb28nIE9OIEVNUFRZKTsKK1NFTEVDVCBKU09OX1FVRVJZ KGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8fCAnYScpOworU0VMRUNUIEpTT05fUVVF UlkoanNvbmIgJ3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8ICdhJyBXSVRIIFdSQVBQRVIpOwor LS0gU2hvdWxkIGZhaWwgKGludmFsaWQgcGF0aCkKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICd7 ImEiOiAxMjN9JywgJ2Vycm9yJyB8fCAnICcgfHwgJ2Vycm9yJyk7CmRpZmYgLS1naXQgYS9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0CmluZGV4IDg5Nzg0NTM3NGYuLmE2YmU2Zjc4NzQgMTAwNjQ0Ci0tLSBhL3NyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0CkBAIC0xMjU2LDYgKzEyNTYsNyBAQCBKb2luCiBKb2luQ29zdFdvcmtzcGFjZQogSm9p bkRvbWFpbgogSm9pbkV4cHIKK0pzb25GdW5jRXhwcgogSm9pbkhhc2hFbnRyeQogSm9pblBhdGgK IEpvaW5QYXRoRXh0cmFEYXRhCkBAIC0xMjY2LDE4ICsxMjY3LDI4IEBAIEpzT2JqZWN0CiBKc1Zh bHVlCiBKc29uQWdnQ29uc3RydWN0b3IKIEpzb25BZ2dTdGF0ZQorSnNvbkFyZ3VtZW50CiBKc29u QXJyYXlBZ2cKIEpzb25BcnJheUNvbnN0cnVjdG9yCiBKc29uQXJyYXlRdWVyeUNvbnN0cnVjdG9y CiBKc29uQmFzZU9iamVjdEluZm8KK0pzb25CZWhhdmlvcgorSnNvbkJlaGF2aW9yVHlwZQorSnNv bkNvZXJjaW9uCiBKc29uQ29uc3RydWN0b3JFeHByCiBKc29uQ29uc3RydWN0b3JFeHByU3RhdGUK IEpzb25Db25zdHJ1Y3RvclR5cGUKIEpzb25FbmNvZGluZworSnNvbkV4cHIKK0pzb25FeHByT3AK K0pzb25FeHByUG9zdEV2YWxTdGF0ZQorSnNvbkV4cHJTdGF0ZQogSnNvbkZvcm1hdAogSnNvbkZv cm1hdFR5cGUKIEpzb25IYXNoRW50cnkKIEpzb25Jc1ByZWRpY2F0ZQorSnNvbkl0ZW1Db2VyY2lv bgorSnNvbkl0ZW1UeXBlCiBKc29uSXRlcmF0ZVN0cmluZ1ZhbHVlc0FjdGlvbgogSnNvbktleVZh bHVlCiBKc29uTGV4Q29udGV4dApAQCAtMTI5NSw2ICsxMzA2LDcgQEAgSnNvblBhcnNlQ29udGV4 dAogSnNvblBhcnNlRXJyb3JUeXBlCiBKc29uUGF0aAogSnNvblBhdGhCb29sCitKc29uUGF0aERh dGF0eXBlU3RhdHVzCiBKc29uUGF0aEV4ZWNDb250ZXh0CiBKc29uUGF0aEV4ZWNSZXN1bHQKIEpz b25QYXRoR2luQWRkUGF0aEl0ZW1GdW5jCkBAIC0xMzA3LDExICsxMzE5LDE1IEBAIEpzb25QYXRo R2luUGF0aEl0ZW0KIEpzb25QYXRoSXRlbQogSnNvblBhdGhJdGVtVHlwZQogSnNvblBhdGhLZXl3 b3JkCitKc29uUGF0aE11dGFibGVDb250ZXh0CiBKc29uUGF0aFBhcnNlSXRlbQogSnNvblBhdGhQ YXJzZVJlc3VsdAogSnNvblBhdGhQcmVkaWNhdGVDYWxsYmFjawogSnNvblBhdGhTdHJpbmcKIEpz b25QYXRoVmFyaWFibGUKK0pzb25QYXRoVmFyaWFibGVFdmFsQ29udGV4dAorSnNvblBhdGhWYXJD YWxsYmFjaworSnNvblF1b3RlcwogSnNvblJldHVybmluZwogSnNvblNjYWxhckV4cHIKIEpzb25T ZW1BY3Rpb24KLS0gCjIuMzUuMwoK --00000000000015508a060f9d2c00 Content-Type: application/octet-stream; name="v37-0001-Add-soft-error-handling-to-some-expression-nodes.patch" Content-Disposition: attachment; filename="v37-0001-Add-soft-error-handling-to-some-expression-nodes.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrqes4z56 RnJvbSA5NmU0NzY3OTcxYmJiYmJhZDhjYTE5YzRjNmU1MDA5Mjk3YzE3YTgwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMTggSmFuIDIwMjQgMTY6MTY6MjEgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz NyAxLzddIEFkZCBzb2Z0IGVycm9yIGhhbmRsaW5nIHRvIHNvbWUgZXhwcmVzc2lvbiBub2RlcwpN SU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgK Q29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKVGhpcyBhZGp1c3RzIHRoZSBjb2RlIGZv ciBDb2VyY2VWaWFJTyBhbmQgQ29lcmNlVG9Eb21haW4gZXhwcmVzc2lvbgpub2RlcyB0byBoYW5k bGUgZXJyb3JzIHNvZnRseS4KCkZvciBDb2VyY2VWaWFJbywgdGhpcyBhZGRzIGEgbmV3IEV4cHJF dmFsU3RlcCBvcGNvZGUKRUVPUF9JT0NPRVJDRV9TQUZFLCB3aGljaCBpcyBpbXBsZW1lbnRlZCBp biB0aGUgbmV3IGFjY29tcGFueWluZwpmdW5jdGlvbiBFeGVjRXZhbENvZXJjZVZpYUlPU2FmZSgp LiAgVGhlIG9ubHkgZGlmZmVyZW5jZSBmcm9tCkVFT1BfSU9DT0VSQ0UncyBpbmxpbmUgaW1wbGVt ZW50YXRpb24gaXMgdGhhdCB0aGUgaW5wdXQgZnVuY3Rpb24KcmVjZWl2ZXMgYW4gRXJyb3JTYXZl Q29udGV4dCB2aWEgdGhlIGZ1bmN0aW9uJ3MKRnVuY3Rpb25DYWxsSW5mby5jb250ZXh0LCB3aGlj aCBpdCBjYW4gdXNlIHRvIGhhbmRsZSBlcnJvcnMgc29mdGx5LgoKRm9yIENvZXJjZVRvRG9tYWlu LCB0aGlzIHNpbXBseSBlbnRhaWxzIHJlcGxhY2luZyB0aGUgZXJlcG9ydCgpIGluCkV4ZWNFdmFs Q29uc3RyYWludE5vdE51bGwoKSBhbmQgRXhlY0V2YWxDb25zdHJhaW50Q2hlY2soKSBieQplcnJz YXZlKCkgcGFzc2luZyBpdCB0aGUgRXJyb3JTYXZlQ29udGV4dCBwYXNzZWQgaW4gdGhlIGV4cHJl c3Npb24ncwpFeHByRXZhbFN0ZXAuCgpJbiBib3RoIGNhc2VzLCB0aGUgRXJyb3JTYXZlQ29udGV4 dCB0byBiZSB1c2VkIGlzIHBhc3NlZCBieSBzZXR0aW5nCkV4cHJTdGF0ZS5lc2NvbnRleHQgdG8g cG9pbnQgdG8gaXQgYmVmb3JlIGNhbGxpbmcgRXhlY0luaXRFeHByUmVjKCkKb24gdGhlIGV4cHJl c3Npb24gdHJlZSB3aG9zZSBlcnJvcnMgYXJlIHRvIGJlIGhhbmRsZWQgc29mdGx5LgoKTm90ZSB0 aGF0IG5vIGNhbGwgc2l0ZSBvZiBFeGVjSW5pdEV4cHJSZWMoKSBoYXMgYmVlbiBjaGFuZ2VkIGlu IHRoaXMKY29tbWl0LCBzbyB0aGVyZSdzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlLiAgVGhpcyBpcyBp bnRlbmRlZCBmb3IKaW1wbGVtZW50aW5nIG5ldyBTUUwvSlNPTiBleHByZXNzaW9uIG5vZGVzIGlu IGZ1dHVyZSBjb21taXRzLgoKUmV2aWV3ZWQtYnk6IMOBbHZhcm8gSGVycmVyYQpSZXZpZXdlZC1i eTogQW5kcmVzIEZyZXVuZApEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBK0hpd3FF NFhUZGZiMW5XPU9qb3lfdFFTUmhZdC1xX2tiNmk1ZDR4Y0t5ckxDMU5iZ0BtYWlsLmdtYWlsLmNv bQotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgICAgICAgfCAgOCArKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMgfCA4MCArKysrKysrKysrKysrKysr KysrKysrKysrKy0KIHNyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jICAgfCAgNiAr Kwogc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5jICB8ICAxICsKIHNyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmggICAgICAgfCAgNCArKwogc3JjL2luY2x1ZGUvbm9kZXMv ZXhlY25vZGVzLmggICAgICAgICB8ICA3ICsrKwogNiBmaWxlcyBjaGFuZ2VkLCAxMDMgaW5zZXJ0 aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjRXhwci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwppbmRleCA5MWRm MjAwOWJlLi4zMTgxYjExMzZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj RXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKQEAgLTE1NjAsNyAr MTU2MCwxMCBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwK IAkJCQkgKiBXZSBkb24ndCBjaGVjayBwZXJtaXNzaW9ucyBoZXJlIGFzIGEgdHlwZSdzIGlucHV0 L291dHB1dAogCQkJCSAqIGZ1bmN0aW9uIGFyZSBhc3N1bWVkIHRvIGJlIGV4ZWN1dGFibGUgYnkg ZXZlcnlvbmUuCiAJCQkJICovCi0JCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX0lPQ09FUkNFOwor CQkJCWlmIChzdGF0ZS0+ZXNjb250ZXh0ID09IE5VTEwpCisJCQkJCXNjcmF0Y2gub3Bjb2RlID0g RUVPUF9JT0NPRVJDRTsKKwkJCQllbHNlCisJCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9JT0NP RVJDRV9TQUZFOwogCiAJCQkJLyogbG9va3VwIHRoZSBzb3VyY2UgdHlwZSdzIG91dHB1dCBmdW5j dGlvbiAqLwogCQkJCXNjcmF0Y2guZC5pb2NvZXJjZS5maW5mb19vdXQgPSBwYWxsb2MwKHNpemVv ZihGbWdySW5mbykpOwpAQCAtMTU5Niw2ICsxNTk5LDggQEAgRXhlY0luaXRFeHByUmVjKEV4cHIg Km5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJZmNpbmZvX2luLT5hcmdzWzJdLnZhbHVlID0g SW50MzJHZXREYXR1bSgtMSk7CiAJCQkJZmNpbmZvX2luLT5hcmdzWzJdLmlzbnVsbCA9IGZhbHNl OwogCisJCQkJZmNpbmZvX2luLT5jb250ZXh0ID0gKE5vZGUgKikgc3RhdGUtPmVzY29udGV4dDsK KwogCQkJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKIAkJCQlicmVhazsKIAkJ CX0KQEAgLTMzMDMsNiArMzMwOCw3IEBAIEV4ZWNJbml0Q29lcmNlVG9Eb21haW4oRXhwckV2YWxT dGVwICpzY3JhdGNoLCBDb2VyY2VUb0RvbWFpbiAqY3Rlc3QsCiAJLyogd2UnbGwgYWxsb2NhdGUg d29ya3NwYWNlIG9ubHkgaWYgbmVlZGVkICovCiAJc2NyYXRjaC0+ZC5kb21haW5jaGVjay5jaGVj a3ZhbHVlID0gTlVMTDsKIAlzY3JhdGNoLT5kLmRvbWFpbmNoZWNrLmNoZWNrbnVsbCA9IE5VTEw7 CisJc2NyYXRjaC0+ZC5kb21haW5jaGVjay5lc2NvbnRleHQgPSBzdGF0ZS0+ZXNjb250ZXh0Owog CiAJLyoKIAkgKiBFdmFsdWF0ZSBhcmd1bWVudCAtIGl0J3MgZmluZSB0byBkaXJlY3RseSBzdG9y ZSBpdCBpbnRvIHJlc3YvcmVzbnVsbCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNFeHBySW50ZXJwLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5j CmluZGV4IDNjMTdjYzZiMWUuLjNmMjBmMWRkMzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4 cHJJbnRlcnAuYwpAQCAtNjMsNiArNjMsNyBAQAogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVTdWJw bGFuLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2lu Y2x1ZGUgIm5vZGVzL21pc2Nub2Rlcy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgog I2luY2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKQEAgLTQ1 Miw2ICs0NTMsNyBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4 dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJJiZDQVNFX0VFT1BfQ0FTRV9URVNUVkFMLAog CQkmJkNBU0VfRUVPUF9NQUtFX1JFQURPTkxZLAogCQkmJkNBU0VfRUVPUF9JT0NPRVJDRSwKKwkJ JiZDQVNFX0VFT1BfSU9DT0VSQ0VfU0FGRSwKIAkJJiZDQVNFX0VFT1BfRElTVElOQ1QsCiAJCSYm Q0FTRV9FRU9QX05PVF9ESVNUSU5DVCwKIAkJJiZDQVNFX0VFT1BfTlVMTElGLApAQCAtMTE1MCw2 ICsxMTUyLDkgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQg KmVjb250ZXh0LCBib29sICppc251bGwpCiAJCQkgKiBFdmFsdWF0ZSBhIENvZXJjZVZpYUlPIG5v ZGUuICBUaGlzIGNhbiBiZSBxdWl0ZSBhIGhvdCBwYXRoLCBzbwogCQkJICogaW5saW5lIGFzIG11 Y2ggd29yayBhcyBwb3NzaWJsZS4gIFRoZSBzb3VyY2UgdmFsdWUgaXMgaW4gb3VyCiAJCQkgKiBy ZXN1bHQgdmFyaWFibGUuCisJCQkgKgorCQkJICogQWxzbyBsb29rIGF0IEV4ZWNFdmFsQ29lcmNl VmlhSU9TYWZlKCkgaWYgeW91IGNoYW5nZSBhbnl0aGluZworCQkJICogaGVyZS4KIAkJCSAqLwog CQkJY2hhcgkgICAqc3RyOwogCkBAIC0xMjA1LDYgKzEyMTAsMTIgQEAgRXhlY0ludGVycEV4cHIo RXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJ CQlFRU9fTkVYVCgpOwogCQl9CiAKKwkJRUVPX0NBU0UoRUVPUF9JT0NPRVJDRV9TQUZFKQorCQl7 CisJCQlFeGVjRXZhbENvZXJjZVZpYUlPU2FmZShzdGF0ZSwgb3ApOworCQkJRUVPX05FWFQoKTsK KwkJfQorCiAJCUVFT19DQVNFKEVFT1BfRElTVElOQ1QpCiAJCXsKIAkJCS8qCkBAIC0yNTEwLDYg KzI1MjEsNzEgQEAgRXhlY0V2YWxQYXJhbUV4dGVybihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZh bFN0ZXAgKm9wLCBFeHByQ29udGV4dCAqZWNvbnRleHQpCiAJCQkgZXJybXNnKCJubyB2YWx1ZSBm b3VuZCBmb3IgcGFyYW1ldGVyICVkIiwgcGFyYW1JZCkpKTsKIH0KIAorLyoKKyAqIEV2YWx1YXRl IGEgQ29lcmNlVmlhSU8gbm9kZSBpbiBzb2Z0LWVycm9yIG1vZGUuCisgKgorICogVGhlIHNvdXJj ZSB2YWx1ZSBpcyBpbiBvcCdzIHJlc3VsdCB2YXJpYWJsZS4KKyAqCisgKiBOb3RlOiBUaGlzIGlt cGxlbWVudHMgRUVPUF9JT0NPRVJDRV9TQUZFLiBJZiB5b3UgY2hhbmdlIGFueXRoaW5nIGhlcmUs CisgKiBhbHNvIGxvb2sgYXQgdGhlIGlubGluZSBjb2RlIGZvciBFRU9QX0lPQ09FUkNFLgorICov Cit2b2lkCitFeGVjRXZhbENvZXJjZVZpYUlPU2FmZShFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZh bFN0ZXAgKm9wKQoreworCWNoYXIJICAgKnN0cjsKKworCS8qIGNhbGwgb3V0cHV0IGZ1bmN0aW9u IChzaW1pbGFyIHRvIE91dHB1dEZ1bmN0aW9uQ2FsbCkgKi8KKwlpZiAoKm9wLT5yZXNudWxsKQor CXsKKwkJLyogb3V0cHV0IGZ1bmN0aW9ucyBhcmUgbm90IGNhbGxlZCBvbiBudWxscyAqLworCQlz dHIgPSBOVUxMOworCX0KKwllbHNlCisJeworCQlGdW5jdGlvbkNhbGxJbmZvIGZjaW5mb19vdXQ7 CisKKwkJZmNpbmZvX291dCA9IG9wLT5kLmlvY29lcmNlLmZjaW5mb19kYXRhX291dDsKKwkJZmNp bmZvX291dC0+YXJnc1swXS52YWx1ZSA9ICpvcC0+cmVzdmFsdWU7CisJCWZjaW5mb19vdXQtPmFy Z3NbMF0uaXNudWxsID0gZmFsc2U7CisKKwkJZmNpbmZvX291dC0+aXNudWxsID0gZmFsc2U7CisJ CXN0ciA9IERhdHVtR2V0Q1N0cmluZyhGdW5jdGlvbkNhbGxJbnZva2UoZmNpbmZvX291dCkpOwor CisJCS8qIE91dHB1dEZ1bmN0aW9uQ2FsbCBhc3N1bWVzIHJlc3VsdCBpc24ndCBudWxsICovCisJ CUFzc2VydCghZmNpbmZvX291dC0+aXNudWxsKTsKKwl9CisKKwkvKiBjYWxsIGlucHV0IGZ1bmN0 aW9uIChzaW1pbGFyIHRvIElucHV0RnVuY3Rpb25DYWxsU2FmZSkgKi8KKwlpZiAoIW9wLT5kLmlv Y29lcmNlLmZpbmZvX2luLT5mbl9zdHJpY3QgfHwgc3RyICE9IE5VTEwpCisJeworCQlGdW5jdGlv bkNhbGxJbmZvIGZjaW5mb19pbjsKKworCQlmY2luZm9faW4gPSBvcC0+ZC5pb2NvZXJjZS5mY2lu Zm9fZGF0YV9pbjsKKwkJZmNpbmZvX2luLT5hcmdzWzBdLnZhbHVlID0gUG9pbnRlckdldERhdHVt KHN0cik7CisJCWZjaW5mb19pbi0+YXJnc1swXS5pc251bGwgPSAqb3AtPnJlc251bGw7CisJCS8q IHNlY29uZCBhbmQgdGhpcmQgYXJndW1lbnRzIGFyZSBhbHJlYWR5IHNldCB1cCAqLworCisJCS8q IEVycm9yU2F2ZUNvbnRleHQgbXVzdCBiZSBwcmVzZW50LiAqLworCQlBc3NlcnQoSXNBKGZjaW5m b19pbi0+Y29udGV4dCwgRXJyb3JTYXZlQ29udGV4dCkpOworCisJCWZjaW5mb19pbi0+aXNudWxs ID0gZmFsc2U7CisJCSpvcC0+cmVzdmFsdWUgPSBGdW5jdGlvbkNhbGxJbnZva2UoZmNpbmZvX2lu KTsKKworCQlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChmY2luZm9faW4tPmNvbnRleHQpKQorCQl7 CisJCQkqb3AtPnJlc251bGwgPSB0cnVlOworCQkJKm9wLT5yZXN2YWx1ZSA9IChEYXR1bSkgMDsK KwkJCXJldHVybjsKKwkJfQorCisJCS8qIFNob3VsZCBnZXQgbnVsbCByZXN1bHQgaWYgYW5kIG9u bHkgaWYgc3RyIGlzIE5VTEwgKi8KKwkJaWYgKHN0ciA9PSBOVUxMKQorCQkJQXNzZXJ0KCpvcC0+ cmVzbnVsbCk7CisJCWVsc2UKKwkJCUFzc2VydCghKm9wLT5yZXNudWxsKTsKKwl9Cit9CisKIC8q CiAgKiBFdmFsdWF0ZSBhIFNRTFZhbHVlRnVuY3Rpb24gZXhwcmVzc2lvbi4KICAqLwpAQCAtMzcz MCw3ICszODA2LDcgQEAgdm9pZAogRXhlY0V2YWxDb25zdHJhaW50Tm90TnVsbChFeHByU3RhdGUg KnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKQogewogCWlmICgqb3AtPnJlc251bGwpCi0JCWVyZXBv cnQoRVJST1IsCisJCWVycnNhdmUoKE5vZGUgKikgb3AtPmQuZG9tYWluY2hlY2suZXNjb250ZXh0 LAogCQkJCShlcnJjb2RlKEVSUkNPREVfTk9UX05VTExfVklPTEFUSU9OKSwKIAkJCQkgZXJybXNn KCJkb21haW4gJXMgZG9lcyBub3QgYWxsb3cgbnVsbCB2YWx1ZXMiLAogCQkJCQkJZm9ybWF0X3R5 cGVfYmUob3AtPmQuZG9tYWluY2hlY2sucmVzdWx0dHlwZSkpLApAQCAtMzc0NSw3ICszODIxLDcg QEAgRXhlY0V2YWxDb25zdHJhaW50Q2hlY2soRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVw ICpvcCkKIHsKIAlpZiAoISpvcC0+ZC5kb21haW5jaGVjay5jaGVja251bGwgJiYKIAkJIURhdHVt R2V0Qm9vbCgqb3AtPmQuZG9tYWluY2hlY2suY2hlY2t2YWx1ZSkpCi0JCWVyZXBvcnQoRVJST1Is CisJCWVycnNhdmUoKE5vZGUgKikgb3AtPmQuZG9tYWluY2hlY2suZXNjb250ZXh0LAogCQkJCShl cnJjb2RlKEVSUkNPREVfQ0hFQ0tfVklPTEFUSU9OKSwKIAkJCQkgZXJybXNnKCJ2YWx1ZSBmb3Ig ZG9tYWluICVzIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgXCIlc1wiIiwKIAkJCQkJCWZvcm1h dF90eXBlX2JlKG9wLT5kLmRvbWFpbmNoZWNrLnJlc3VsdHR5cGUpLApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9s bHZtaml0X2V4cHIuYwppbmRleCAzMzE2MWQ4MTJmLi4wOTk5NDUwM2IxIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9qaXQv bGx2bS9sbHZtaml0X2V4cHIuYwpAQCAtMTQzMSw2ICsxNDMxLDEyIEBAIGxsdm1fY29tcGlsZV9l eHByKEV4cHJTdGF0ZSAqc3RhdGUpCiAJCQkJCWJyZWFrOwogCQkJCX0KIAorCQkJY2FzZSBFRU9Q X0lPQ09FUkNFX1NBRkU6CisJCQkJYnVpbGRfRXZhbFhGdW5jKGIsIG1vZCwgIkV4ZWNFdmFsQ29l cmNlVmlhSU9TYWZlIiwKKwkJCQkJCQkJdl9zdGF0ZSwgb3ApOworCQkJCUxMVk1CdWlsZEJyKGIs IG9wYmxvY2tzW29wbm8gKyAxXSk7CisJCQkJYnJlYWs7CisKIAkJCWNhc2UgRUVPUF9ESVNUSU5D VDoKIAkJCWNhc2UgRUVPUF9OT1RfRElTVElOQ1Q6CiAJCQkJewpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5jIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2 bWppdF90eXBlcy5jCmluZGV4IDUyMTJmNTI5YzguLjQ3YzlkYWY0MDIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYworKysgYi9zcmMvYmFja2VuZC9qaXQv bGx2bS9sbHZtaml0X3R5cGVzLmMKQEAgLTE2Miw2ICsxNjIsNyBAQCB2b2lkCSAgICpyZWZlcmVu Y2VkX2Z1bmN0aW9uc1tdID0KIAlFeGVjRXZhbFJvdywKIAlFeGVjRXZhbFJvd05vdE51bGwsCiAJ RXhlY0V2YWxSb3dOdWxsLAorCUV4ZWNFdmFsQ29lcmNlVmlhSU9TYWZlLAogCUV4ZWNFdmFsU1FM VmFsdWVGdW5jdGlvbiwKIAlFeGVjRXZhbFNjYWxhckFycmF5T3AsCiAJRXhlY0V2YWxIYXNoZWRT Y2FsYXJBcnJheU9wLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIu aCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKaW5kZXggYTIwYzUzOWEyNS4uYTI4 ZGRjZGQ3NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaAorKysg Yi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCkBAIC0xNiw2ICsxNiw3IEBACiAKICNp bmNsdWRlICJleGVjdXRvci9ub2RlQWdnLmgiCiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgi CisjaW5jbHVkZSAibm9kZXMvbWlzY25vZGVzLmgiCiAKIC8qIGZvcndhcmQgcmVmZXJlbmNlcyB0 byBhdm9pZCBjaXJjdWxhcml0eSAqLwogc3RydWN0IEV4cHJFdmFsU3RlcDsKQEAgLTE2OCw2ICsx NjksNyBAQCB0eXBlZGVmIGVudW0gRXhwckV2YWxPcAogCiAJLyogZXZhbHVhdGUgYXNzb3J0ZWQg c3BlY2lhbC1wdXJwb3NlIGV4cHJlc3Npb24gdHlwZXMgKi8KIAlFRU9QX0lPQ09FUkNFLAorCUVF T1BfSU9DT0VSQ0VfU0FGRSwKIAlFRU9QX0RJU1RJTkNULAogCUVFT1BfTk9UX0RJU1RJTkNULAog CUVFT1BfTlVMTElGLApAQCAtNTQ3LDYgKzU0OSw3IEBAIHR5cGVkZWYgc3RydWN0IEV4cHJFdmFs U3RlcAogCQkJYm9vbAkgICAqY2hlY2tudWxsOwogCQkJLyogT0lEIG9mIGRvbWFpbiB0eXBlICov CiAJCQlPaWQJCQlyZXN1bHR0eXBlOworCQkJRXJyb3JTYXZlQ29udGV4dCAqZXNjb250ZXh0Owog CQl9CQkJZG9tYWluY2hlY2s7CiAKIAkJLyogZm9yIEVFT1BfQ09OVkVSVF9ST1dUWVBFICovCkBA IC03NzYsNiArNzc5LDcgQEAgZXh0ZXJuIHZvaWQgRXhlY0V2YWxQYXJhbUV4ZWMoRXhwclN0YXRl ICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKIAkJCQkJCQkgIEV4cHJDb250ZXh0ICplY29udGV4 dCk7CiBleHRlcm4gdm9pZCBFeGVjRXZhbFBhcmFtRXh0ZXJuKEV4cHJTdGF0ZSAqc3RhdGUsIEV4 cHJFdmFsU3RlcCAqb3AsCiAJCQkJCQkJCUV4cHJDb250ZXh0ICplY29udGV4dCk7CitleHRlcm4g dm9pZCBFeGVjRXZhbENvZXJjZVZpYUlPU2FmZShFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0 ZXAgKm9wKTsKIGV4dGVybiB2b2lkIEV4ZWNFdmFsU1FMVmFsdWVGdW5jdGlvbihFeHByU3RhdGUg KnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKTsKIGV4dGVybiB2b2lkIEV4ZWNFdmFsQ3VycmVudE9m RXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKTsKIGV4dGVybiB2b2lkIEV4 ZWNFdmFsTmV4dFZhbHVlRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmgKaW5kZXggNTYxZmRkOThmMS4uNDQ0YTVmMGZkNSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv ZXhlY25vZGVzLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJmbWdyLmgiCiAjaW5jbHVk ZSAibGliL2lsaXN0LmgiCiAjaW5jbHVkZSAibGliL3BhaXJpbmdoZWFwLmgiCisjaW5jbHVkZSAi bm9kZXMvbWlzY25vZGVzLmgiCiAjaW5jbHVkZSAibm9kZXMvcGFyYW1zLmgiCiAjaW5jbHVkZSAi bm9kZXMvcGxhbm5vZGVzLmgiCiAjaW5jbHVkZSAibm9kZXMvdGlkYml0bWFwLmgiCkBAIC0xMjks NiArMTMwLDEyIEBAIHR5cGVkZWYgc3RydWN0IEV4cHJTdGF0ZQogCiAJRGF0dW0JICAgKmlubmVy bW9zdF9kb21haW52YWw7CiAJYm9vbAkgICAqaW5uZXJtb3N0X2RvbWFpbm51bGw7CisKKwkvKgor CSAqIEZvciBleHByZXNzaW9uIG5vZGVzIHRoYXQgc3VwcG9ydCBzb2Z0IGVycm9ycy4gIFNob3Vs ZCBiZSBzZXQgdG8gTlVMTAorCSAqIGJlZm9yZSBjYWxsaW5nIEV4ZWNJbml0RXhwclJlYygpIGlm IHRoZSBjYWxsZXIgd2FudHMgZXJyb3JzIHRocm93bi4KKwkgKi8KKwlFcnJvclNhdmVDb250ZXh0 ICplc2NvbnRleHQ7CiB9IEV4cHJTdGF0ZTsKIAogCi0tIAoyLjM1LjMKCg== --00000000000015508a060f9d2c00 Content-Type: application/octet-stream; name="v37-0002-Adjust-populate_record_field-to-handle-errors-so.patch" Content-Disposition: attachment; filename="v37-0002-Adjust-populate_record_field-to-handle-errors-so.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrqes4z25 RnJvbSAzNzk5N2RmOTUzNzYzNDEwMWRkZjk1Y2M0Mzc2YjliNjNiMjUyNWJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMjMgSmFuIDIwMjQgMTM6NTc6NTMgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz NyAyLzddIEFkanVzdCBwb3B1bGF0ZV9yZWNvcmRfZmllbGQoKSB0byBoYW5kbGUgZXJyb3JzCiBz b2Z0bHkKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0 PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClRoaXMgYWRkcyBhIE5vZGUg KmVzY29udGV4dCBwYXJhbWV0ZXIgdG8gaXQgYW5kIGEgYnVuY2ggb2YgZnVuY3Rpb25zCmRvd25z dHJlYW0gdG8gaXQsIHJlcGxhY2luZyB0aGUgZXJlcG9ydHMgaW4gdGhhdCBieSBlcnJzYXZlIG9y CmVyZXR1cm4gYXMgYXBwcm9wcmlhdGUuICBUaGlzIGFsc28gYWRkcyBjb2RlIHRvIHRob3NlIGZ1 bmN0aW9ucyB3aGVyZQpuZWNlc3NhcnkgdG8gcmV0dXJuIGVhcmx5IHVwb24gZW5jb3VudGVyaW5n IGEgc29mdCBlcnJvci4KClRoZSBjaGFuZ2VzIGhlcmUgYXJlIG1haW5seSBpbnRlbmRlZCB0byBz dXBwcmVzcyBlcnJvcnMgaW4gdGhlCmZ1bmN0aW9ucyBpbiBqc29uZnVuY3MuYy4gIEZ1bmN0aW9u cyBpbiBhbnkgZXh0ZXJuYWwgbW9kdWxlcywgc3VjaCBhcwphcnJheWZ1bmNzLmMsIHRoYXQgdGhv c2UgZnVuY3Rpb25zIG1heSBpbiB0dXJuIGNhbGwgYXJlIG5vdCBjaGFuZ2VkCmhlcmUgYmFzZWQg b24gdGhlIGFzc3VtcHRpb24gdGhhdCB0aGUgdmFyaW91cyBjaGVja3MgaW4ganNvbmZ1bmNzLmMK ZnVuY3Rpb25zIHNob3VsZCBlbnN1cmUgdGhhdCBvbmx5IHZhbHVlcyB0aGF0IGFyZSBzdHJ1Y3R1 cmFsbHkgdmFsaWQKZ2V0IHBhc3NlZCB0byB0aGUgZnVuY3Rpb25zIGluIHRob3NlIGV4dGVybmFs IG1vZHVsZXMuICBBbiBleGNlcHRpb24KaXMgbWFkZSBob3dldmVyIGZvciBkb21haW5fY2hlY2so KSB0byBhbGxvdyBoYW5kbGluZyBkb21haW4gY29uc3RyYWludAp2aW9sYXRpb24gZXJyb3JzIHNv ZnRseS4KClRoaXMgYWxzbyBhZGRzIGEgZnVuY3Rpb24ganNvbmJfcG9wdWxhdGVfcmVjb3JkX3Zh bGlkKCkgZm9yIHRlc3RpbmcsCndoaWNoIHJldHVybnMgdHJ1ZSBpZiBqc29uYl9wb3B1bGF0ZV9y ZWNvcmQoKSB3b3VsZCBmaW5pc2ggd2l0aG91dApjYXVzaW5nIGFuIGVycm9yLCBmYWxzZSBvdGhl cndpc2UuICBOb3RlIHRoYXQganNvbmJfcG9wdWxhdGVfcmVjb3JkKCkKaW50ZXJuYWxseSBjYWxs cyBwb3B1bGF0ZV9yZWNvcmQoKSwgd2hpY2ggaW4gdHVybiB1c2VzCnBvcHVsYXRlX3JlY29yZF9m aWVsZCgpLgoKUmV2aWV3ZWQtYnk6IMOBbHZhcm8gSGVycmVyYQpSZXZpZXdlZC1ieTogQW5kcmVz IEZyZXVuZApEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBK0hpd3FFNFhUZGZiMW5X PU9qb3lfdFFTUmhZdC1xX2tiNmk1ZDR4Y0t5ckxDMU5iZ0BtYWlsLmdtYWlsLmNvbQotLS0KIGRv Yy9zcmMvc2dtbC9mdW5jLnNnbWwgICAgICAgICAgICAgIHwgIDUyICsrKysKIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC9kb21haW5zLmMgICAgIHwgIDMzICsrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb25mdW5jcy5jICAgfCAzNTggKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQogc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgfCAgIDQgKwogc3JjL2luY2x1ZGUvdXRpbHMv YnVpbHRpbnMuaCAgICAgICAgfCAgIDMgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29u Yi5vdXQgfCAxMTUgKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwgICAg ICB8ICAzNyArKysKIDcgZmlsZXMgY2hhbmdlZCwgNTE1IGluc2VydGlvbnMoKyksIDg3IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvZnVuYy5zZ21sCmluZGV4IDIxMGM3YzBiMDIuLjZmZjYyN2M3ZmMgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbApAQCAtMTY3 MjcsNiArMTY3MjcsNTggQEAgYXJyYXkgdy9vIFVLPyB8IHQKICAgICAgICA8L3BhcmE+PC9lbnRy eT4KICAgICAgIDwvcm93PgogCisgICAgICA8cm93PgorICAgICAgIDxlbnRyeSByb2xlPSJmdW5j X3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAgICAgIDxpbmRl eHRlcm0+CisgICAgICAgICA8cHJpbWFyeT5qc29uYl9wb3B1bGF0ZV9yZWNvcmRfdmFsaWQ8L3By aW1hcnk+CisgICAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgICA8ZnVuY3Rpb24+anNvbmJfcG9w dWxhdGVfcmVjb3JkX3ZhbGlkPC9mdW5jdGlvbj4gKCA8cGFyYW1ldGVyPmJhc2U8L3BhcmFtZXRl cj4gPHR5cGU+YW55ZWxlbWVudDwvdHlwZT4sIDxwYXJhbWV0ZXI+ZnJvbV9qc29uPC9wYXJhbWV0 ZXI+IDx0eXBlPmpzb248L3R5cGU+ICkKKyAgICAgICAgPHJldHVybnZhbHVlPmJvb2xlYW48L3Jl dHVybnZhbHVlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgRnVuY3Rp b24gZm9yIHRlc3RpbmcgPGZ1bmN0aW9uPmpzb25iX3BvcHVsYXRlX3JlY29yZDwvZnVuY3Rpb24+ LiAgUmV0dXJucworICAgICAgICA8bGl0ZXJhbD50cnVlPC9saXRlcmFsPiBpZiA8ZnVuY3Rpb24+ anNvbmJfcG9wdWxhdGVfcmVjb3JkPC9mdW5jdGlvbj4KKyAgICAgICAgd291bGQgZmluaXNoIHdp dGhvdXQgYW4gZXJyb3IgZm9yIHRoZSBnaXZlbiBpbnB1dCwgPGxpdGVyYWw+ZmFsc2U8L2xpdGVy YWw+CisgICAgICAgIG90aGVyd2lzZS4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+Cisg ICAgICAgIDxsaXRlcmFsPmNyZWF0ZSB0eXBlIGpzYl9jaGFyMiBhcyAoYSBjaGFyKDIpKTs8L2xp dGVyYWw+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICA8bGl0ZXJhbD5z ZWxlY3QganNvbmJfcG9wdWxhdGVfcmVjb3JkX3ZhbGlkKE5VTEw6OmpzYl9jaGFyMiwgJ3siYSI6 ICJhYWEifScpOzwvbGl0ZXJhbD4KKyAgICAgICAgPHJldHVybnZhbHVlPjwvcmV0dXJudmFsdWU+ Cis8cHJvZ3JhbWxpc3Rpbmc+CisganNvbmJfcG9wdWxhdGVfcmVjb3JkX3ZhbGlkCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKzwvcHJvZ3JhbWxpc3Rpbmc+CisK KyAgICAgICAgPGxpdGVyYWw+c2VsZWN0ICogZnJvbSBqc29uYl9wb3B1bGF0ZV9yZWNvcmQoTlVM TDo6anNiX2NoYXIyLCAneyJhIjogImFhYSJ9JykgcTs8L2xpdGVyYWw+CisgICAgICAgIDxyZXR1 cm52YWx1ZT48L3JldHVybnZhbHVlPgorPHByb2dyYW1saXN0aW5nPgorRVJST1I6ICB2YWx1ZSB0 b28gbG9uZyBmb3IgdHlwZSBjaGFyYWN0ZXIoMikKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAg IDxsaXRlcmFsPnNlbGVjdCBqc29uYl9wb3B1bGF0ZV9yZWNvcmRfdmFsaWQoTlVMTDo6anNiX2No YXIyLCAneyJhIjogImFhIn0nKTs8L2xpdGVyYWw+CisgICAgICAgIDxyZXR1cm52YWx1ZT48L3Jl dHVybnZhbHVlPgorPHByb2dyYW1saXN0aW5nPgorIGpzb25iX3BvcHVsYXRlX3JlY29yZF92YWxp ZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCis8L3Byb2dyYW1s aXN0aW5nPgorCisgICAgICAgIDxsaXRlcmFsPnNlbGVjdCAqIGZyb20ganNvbmJfcG9wdWxhdGVf cmVjb3JkKE5VTEw6OmpzYl9jaGFyMiwgJ3siYSI6ICJhYSJ9JykgcTs8L2xpdGVyYWw+CisgICAg ICAgIDxyZXR1cm52YWx1ZT48L3JldHVybnZhbHVlPgorPHByb2dyYW1saXN0aW5nPgorIGEKKy0t LS0KKyBhYQorKDEgcm93KQorPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICA8L3BhcmE+PC9lbnRy eT4KKyAgICAgIDwvcm93PgorCiAgICAgICA8cm93PgogICAgICAgIDxlbnRyeSByb2xlPSJmdW5j X3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CiAgICAgICAgIDxpbmRl eHRlcm0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZG9tYWlucy5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2RvbWFpbnMuYwppbmRleCA5ZjZlMWExNWFkLi4yMTc5MTEwNWRh IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZG9tYWlucy5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9kb21haW5zLmMKQEAgLTQwLDYgKzQwLDkgQEAKICNpbmNsdWRlICJ1 dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAKK3N0YXRpYyBi b29sIGRvbWFpbl9jaGVja19pbnRlcm5hbChEYXR1bSB2YWx1ZSwgYm9vbCBpc251bGwsIE9pZCBk b21haW5UeXBlLAorCQkJCQkJCQkgIHZvaWQgKipleHRyYSwgTWVtb3J5Q29udGV4dCBtY3h0LAor CQkJCQkJCQkgIE5vZGUgKmVzY29udGV4dCk7CiAKIC8qCiAgKiBzdHJ1Y3R1cmUgdG8gY2FjaGUg c3RhdGUgYWNyb3NzIG11bHRpcGxlIGNhbGxzCkBAIC0zNDIsNiArMzQ1LDMyIEBAIGRvbWFpbl9y ZWN2KFBHX0ZVTkNUSU9OX0FSR1MpCiB2b2lkCiBkb21haW5fY2hlY2soRGF0dW0gdmFsdWUsIGJv b2wgaXNudWxsLCBPaWQgZG9tYWluVHlwZSwKIAkJCSB2b2lkICoqZXh0cmEsIE1lbW9yeUNvbnRl eHQgbWN4dCkKK3sKKwkodm9pZCkgZG9tYWluX2NoZWNrX2ludGVybmFsKHZhbHVlLCBpc251bGws IGRvbWFpblR5cGUsIGV4dHJhLCBtY3h0LAorCQkJCQkJCQkgTlVMTCk7Cit9CisKKy8qIEVycm9y LXNhZmUgdmFyaWFudCBvZiBkb21haW5fY2hlY2soKS4gKi8KK2Jvb2wKK2RvbWFpbl9jaGVja19z YWZlKERhdHVtIHZhbHVlLCBib29sIGlzbnVsbCwgT2lkIGRvbWFpblR5cGUsCisJCQkJICB2b2lk ICoqZXh0cmEsIE1lbW9yeUNvbnRleHQgbWN4dCwKKwkJCQkgIE5vZGUgKmVzY29udGV4dCkKK3sK KwlyZXR1cm4gZG9tYWluX2NoZWNrX2ludGVybmFsKHZhbHVlLCBpc251bGwsIGRvbWFpblR5cGUs IGV4dHJhLCBtY3h0LAorCQkJCQkJCQkgZXNjb250ZXh0KTsKK30KKworLyoKKyAqIGRvbWFpbl9j aGVja19pbnRlcm5hbAorICogCQlXb3JraG9yc2UgZm9yIGRvbWFpbl9jaGVjaygpIGFuZCBkb21h aW5fY2hlY2tfc2FmZSgpCisgKgorICogUmV0dXJucyBmYWxzZSBpZiBhbiBlcnJvciBvY2N1cnJl ZCBpbiBkb21haW5fY2hlY2tfaW5wdXQoKSBhbmQgJ2VzY29udGV4dCcKKyAqIHBvaW50cyB0byBh biBFcnJvclNhdmVDb250ZXh0LCB0cnVlIG90aGVyd2lzZS4KKyAqLworc3RhdGljIGJvb2wKK2Rv bWFpbl9jaGVja19pbnRlcm5hbChEYXR1bSB2YWx1ZSwgYm9vbCBpc251bGwsIE9pZCBkb21haW5U eXBlLAorCQkJCQkgIHZvaWQgKipleHRyYSwgTWVtb3J5Q29udGV4dCBtY3h0LAorCQkJCQkgIE5v ZGUgKmVzY29udGV4dCkKIHsKIAlEb21haW5JT0RhdGEgKm15X2V4dHJhID0gTlVMTDsKIApAQCAt MzY1LDcgKzM5NCw5IEBAIGRvbWFpbl9jaGVjayhEYXR1bSB2YWx1ZSwgYm9vbCBpc251bGwsIE9p ZCBkb21haW5UeXBlLAogCS8qCiAJICogRG8gdGhlIG5lY2Vzc2FyeSBjaGVja3MgdG8gZW5zdXJl IGl0J3MgYSB2YWxpZCBkb21haW4gdmFsdWUuCiAJICovCi0JZG9tYWluX2NoZWNrX2lucHV0KHZh bHVlLCBpc251bGwsIG15X2V4dHJhLCBOVUxMKTsKKwlkb21haW5fY2hlY2tfaW5wdXQodmFsdWUs IGlzbnVsbCwgbXlfZXh0cmEsIGVzY29udGV4dCk7CisKKwlyZXR1cm4gIVNPRlRfRVJST1JfT0ND VVJSRUQoZXNjb250ZXh0KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9qc29uZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYwppbmRl eCBjYWFhZmI3MmMwLi44ODIxNzRhYjM4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvanNvbmZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jCkBA IC0yNjUsNiArMjY1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUG9wdWxhdGVBcnJheUNvbnRleHQKIAlp bnQJCSAgICpkaW1zOwkJCS8qIGRpbWVuc2lvbnMgKi8KIAlpbnQJCSAgICpzaXplczsJCQkvKiBj dXJyZW50IGRpbWVuc2lvbiBjb3VudGVycyAqLwogCWludAkJCW5kaW1zOwkJCS8qIG51bWJlciBv ZiBkaW1lbnNpb25zICovCisJTm9kZQkgICAqZXNjb250ZXh0OwkJLyogRm9yIHNvZnQtZXJyb3Ig aGFuZGxpbmcgKi8KIH0gUG9wdWxhdGVBcnJheUNvbnRleHQ7CiAKIC8qIHN0YXRlIGZvciBwb3B1 bGF0ZV9hcnJheV9qc29uKCkgKi8KQEAgLTM4OSw3ICszOTAsOCBAQCBzdGF0aWMgSnNvblBhcnNl RXJyb3JUeXBlIGVsZW1lbnRzX2FycmF5X2VsZW1lbnRfZW5kKHZvaWQgKnN0YXRlLCBib29sIGlz bnVsbCk7CiBzdGF0aWMgSnNvblBhcnNlRXJyb3JUeXBlIGVsZW1lbnRzX3NjYWxhcih2b2lkICpz dGF0ZSwgY2hhciAqdG9rZW4sIEpzb25Ub2tlblR5cGUgdG9rZW50eXBlKTsKIAogLyogdHVybiBh IGpzb24gb2JqZWN0IGludG8gYSBoYXNoIHRhYmxlICovCi1zdGF0aWMgSFRBQiAqZ2V0X2pzb25f b2JqZWN0X2FzX2hhc2goY2hhciAqanNvbiwgaW50IGxlbiwgY29uc3QgY2hhciAqZnVuY25hbWUp Oworc3RhdGljIEhUQUIgKmdldF9qc29uX29iamVjdF9hc19oYXNoKGNoYXIgKmpzb24sIGludCBs ZW4sIGNvbnN0IGNoYXIgKmZ1bmNuYW1lLAorCQkJCQkJCQkJIE5vZGUgKmVzY29udGV4dCk7CiAK IC8qIHNlbWFudGljIGFjdGlvbnMgZm9yIHBvcHVsYXRlX2FycmF5X2pzb24gKi8KIHN0YXRpYyBK c29uUGFyc2VFcnJvclR5cGUgcG9wdWxhdGVfYXJyYXlfb2JqZWN0X3N0YXJ0KHZvaWQgKl9zdGF0 ZSk7CkBAIC00MjYsNDIgKzQyOCw0OCBAQCBzdGF0aWMgSnNvblBhcnNlRXJyb3JUeXBlIHNuX3Nj YWxhcih2b2lkICpzdGF0ZSwgY2hhciAqdG9rZW4sIEpzb25Ub2tlblR5cGUgdG9rZQogc3RhdGlj IERhdHVtIHBvcHVsYXRlX3JlY29yZHNldF93b3JrZXIoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8s IGNvbnN0IGNoYXIgKmZ1bmNuYW1lLAogCQkJCQkJCQkJICAgYm9vbCBpc19qc29uLCBib29sIGhh dmVfcmVjb3JkX2FyZyk7CiBzdGF0aWMgRGF0dW0gcG9wdWxhdGVfcmVjb3JkX3dvcmtlcihGdW5j dGlvbkNhbGxJbmZvIGZjaW5mbywgY29uc3QgY2hhciAqZnVuY25hbWUsCi0JCQkJCQkJCQlib29s IGlzX2pzb24sIGJvb2wgaGF2ZV9yZWNvcmRfYXJnKTsKKwkJCQkJCQkJCWJvb2wgaXNfanNvbiwg Ym9vbCBoYXZlX3JlY29yZF9hcmcsCisJCQkJCQkJCQlOb2RlICplc2NvbnRleHQpOwogCiAvKiBo ZWxwZXIgZnVuY3Rpb25zIGZvciBwb3B1bGF0ZV9yZWNvcmRbc2V0XSAqLwogc3RhdGljIEhlYXBU dXBsZUhlYWRlciBwb3B1bGF0ZV9yZWNvcmQoVHVwbGVEZXNjIHR1cGRlc2MsIFJlY29yZElPRGF0 YSAqKnJlY29yZF9wLAogCQkJCQkJCQkJICAgSGVhcFR1cGxlSGVhZGVyIGRlZmF1bHR2YWwsIE1l bW9yeUNvbnRleHQgbWN4dCwKLQkJCQkJCQkJCSAgIEpzT2JqZWN0ICpvYmopOworCQkJCQkJCQkJ ICAgSnNPYmplY3QgKm9iaiwgTm9kZSAqZXNjb250ZXh0KTsKIHN0YXRpYyB2b2lkIGdldF9yZWNv cmRfdHlwZV9mcm9tX2FyZ3VtZW50KEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCQkJCQkJCQkJ CSAgY29uc3QgY2hhciAqZnVuY25hbWUsCiAJCQkJCQkJCQkJICBQb3B1bGF0ZVJlY29yZENhY2hl ICpjYWNoZSk7CiBzdGF0aWMgdm9pZCBnZXRfcmVjb3JkX3R5cGVfZnJvbV9xdWVyeShGdW5jdGlv bkNhbGxJbmZvIGZjaW5mbywKIAkJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKmZ1bmNuYW1lLAogCQkJ CQkJCQkJICAgUG9wdWxhdGVSZWNvcmRDYWNoZSAqY2FjaGUpOwotc3RhdGljIHZvaWQgSnNWYWx1 ZVRvSnNPYmplY3QoSnNWYWx1ZSAqanN2LCBKc09iamVjdCAqanNvKTsKK3N0YXRpYyBib29sIEpz VmFsdWVUb0pzT2JqZWN0KEpzVmFsdWUgKmpzdiwgSnNPYmplY3QgKmpzbywgTm9kZSAqZXNjb250 ZXh0KTsKIHN0YXRpYyBEYXR1bSBwb3B1bGF0ZV9jb21wb3NpdGUoQ29tcG9zaXRlSU9EYXRhICpp bywgT2lkIHR5cGlkLAogCQkJCQkJCQljb25zdCBjaGFyICpjb2xuYW1lLCBNZW1vcnlDb250ZXh0 IG1jeHQsCi0JCQkJCQkJCUhlYXBUdXBsZUhlYWRlciBkZWZhdWx0dmFsLCBKc1ZhbHVlICpqc3Ys IGJvb2wgaXNudWxsKTsKLXN0YXRpYyBEYXR1bSBwb3B1bGF0ZV9zY2FsYXIoU2NhbGFySU9EYXRh ICppbywgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsIEpzVmFsdWUgKmpzdik7CisJCQkJCQkJCUhl YXBUdXBsZUhlYWRlciBkZWZhdWx0dmFsLCBKc1ZhbHVlICpqc3YsIGJvb2wgKmlzbnVsbCwKKwkJ CQkJCQkJTm9kZSAqZXNjb250ZXh0KTsKK3N0YXRpYyBEYXR1bSBwb3B1bGF0ZV9zY2FsYXIoU2Nh bGFySU9EYXRhICppbywgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsIEpzVmFsdWUgKmpzdiwKKwkJ CQkJCQkgYm9vbCAqaXNudWxsLCBOb2RlICplc2NvbnRleHQpOwogc3RhdGljIHZvaWQgcHJlcGFy ZV9jb2x1bW5fY2FjaGUoQ29sdW1uSU9EYXRhICpjb2x1bW4sIE9pZCB0eXBpZCwgaW50MzIgdHlw bW9kLAogCQkJCQkJCQkgTWVtb3J5Q29udGV4dCBtY3h0LCBib29sIG5lZWRfc2NhbGFyKTsKIHN0 YXRpYyBEYXR1bSBwb3B1bGF0ZV9yZWNvcmRfZmllbGQoQ29sdW1uSU9EYXRhICpjb2wsIE9pZCB0 eXBpZCwgaW50MzIgdHlwbW9kLAogCQkJCQkJCQkgICBjb25zdCBjaGFyICpjb2xuYW1lLCBNZW1v cnlDb250ZXh0IG1jeHQsIERhdHVtIGRlZmF1bHR2YWwsCi0JCQkJCQkJCSAgIEpzVmFsdWUgKmpz diwgYm9vbCAqaXNudWxsKTsKKwkJCQkJCQkJICAgSnNWYWx1ZSAqanN2LCBib29sICppc251bGws IE5vZGUgKmVzY29udGV4dCk7CiBzdGF0aWMgUmVjb3JkSU9EYXRhICphbGxvY2F0ZV9yZWNvcmRf aW5mbyhNZW1vcnlDb250ZXh0IG1jeHQsIGludCBuY29sdW1ucyk7CiBzdGF0aWMgYm9vbCBKc09i amVjdEdldEZpZWxkKEpzT2JqZWN0ICpvYmosIGNoYXIgKmZpZWxkLCBKc1ZhbHVlICpqc3YpOwog c3RhdGljIHZvaWQgcG9wdWxhdGVfcmVjb3Jkc2V0X3JlY29yZChQb3B1bGF0ZVJlY29yZHNldFN0 YXRlICpzdGF0ZSwgSnNPYmplY3QgKm9iaik7Ci1zdGF0aWMgdm9pZCBwb3B1bGF0ZV9hcnJheV9q c29uKFBvcHVsYXRlQXJyYXlDb250ZXh0ICpjdHgsIGNoYXIgKmpzb24sIGludCBsZW4pOwotc3Rh dGljIHZvaWQgcG9wdWxhdGVfYXJyYXlfZGltX2pzb25iKFBvcHVsYXRlQXJyYXlDb250ZXh0ICpj dHgsIEpzb25iVmFsdWUgKmpidiwKK3N0YXRpYyBib29sIHBvcHVsYXRlX2FycmF5X2pzb24oUG9w dWxhdGVBcnJheUNvbnRleHQgKmN0eCwgY2hhciAqanNvbiwgaW50IGxlbik7CitzdGF0aWMgYm9v bCBwb3B1bGF0ZV9hcnJheV9kaW1fanNvbmIoUG9wdWxhdGVBcnJheUNvbnRleHQgKmN0eCwgSnNv bmJWYWx1ZSAqamJ2LAogCQkJCQkJCQkJIGludCBuZGltKTsKIHN0YXRpYyB2b2lkIHBvcHVsYXRl X2FycmF5X3JlcG9ydF9leHBlY3RlZF9hcnJheShQb3B1bGF0ZUFycmF5Q29udGV4dCAqY3R4LCBp bnQgbmRpbSk7Ci1zdGF0aWMgdm9pZCBwb3B1bGF0ZV9hcnJheV9hc3NpZ25fbmRpbXMoUG9wdWxh dGVBcnJheUNvbnRleHQgKmN0eCwgaW50IG5kaW1zKTsKLXN0YXRpYyB2b2lkIHBvcHVsYXRlX2Fy cmF5X2NoZWNrX2RpbWVuc2lvbihQb3B1bGF0ZUFycmF5Q29udGV4dCAqY3R4LCBpbnQgbmRpbSk7 Ci1zdGF0aWMgdm9pZCBwb3B1bGF0ZV9hcnJheV9lbGVtZW50KFBvcHVsYXRlQXJyYXlDb250ZXh0 ICpjdHgsIGludCBuZGltLCBKc1ZhbHVlICpqc3YpOworc3RhdGljIGJvb2wgcG9wdWxhdGVfYXJy YXlfYXNzaWduX25kaW1zKFBvcHVsYXRlQXJyYXlDb250ZXh0ICpjdHgsIGludCBuZGltcyk7Citz dGF0aWMgYm9vbCBwb3B1bGF0ZV9hcnJheV9jaGVja19kaW1lbnNpb24oUG9wdWxhdGVBcnJheUNv bnRleHQgKmN0eCwgaW50IG5kaW0pOworc3RhdGljIGJvb2wgcG9wdWxhdGVfYXJyYXlfZWxlbWVu dChQb3B1bGF0ZUFycmF5Q29udGV4dCAqY3R4LCBpbnQgbmRpbSwgSnNWYWx1ZSAqanN2KTsKIHN0 YXRpYyBEYXR1bSBwb3B1bGF0ZV9hcnJheShBcnJheUlPRGF0YSAqYWlvLCBjb25zdCBjaGFyICpj b2xuYW1lLAotCQkJCQkJCU1lbW9yeUNvbnRleHQgbWN4dCwgSnNWYWx1ZSAqanN2KTsKKwkJCQkJ CQlNZW1vcnlDb250ZXh0IG1jeHQsIEpzVmFsdWUgKmpzdiwKKwkJCQkJCQlib29sICppc251bGws CisJCQkJCQkJTm9kZSAqZXNjb250ZXh0KTsKIHN0YXRpYyBEYXR1bSBwb3B1bGF0ZV9kb21haW4o RG9tYWluSU9EYXRhICppbywgT2lkIHR5cGlkLCBjb25zdCBjaGFyICpjb2xuYW1lLAotCQkJCQkJ CSBNZW1vcnlDb250ZXh0IG1jeHQsIEpzVmFsdWUgKmpzdiwgYm9vbCBpc251bGwpOworCQkJCQkJ CSBNZW1vcnlDb250ZXh0IG1jeHQsIEpzVmFsdWUgKmpzdiwgYm9vbCAqaXNudWxsLAorCQkJCQkJ CSBOb2RlICplc2NvbnRleHQpOwogCiAvKiBmdW5jdGlvbnMgc3VwcG9ydGluZyBqc29uYl9kZWxl dGUsIGpzb25iX3NldCBhbmQganNvbmJfY29uY2F0ICovCiBzdGF0aWMgSnNvbmJWYWx1ZSAqSXRl cmF0b3JDb25jYXQoSnNvbmJJdGVyYXRvciAqKml0MSwgSnNvbmJJdGVyYXRvciAqKml0MiwKQEAg LTI0NTMsMjggKzI0NjEsMzkgQEAgRGF0dW0KIGpzb25iX3BvcHVsYXRlX3JlY29yZChQR19GVU5D VElPTl9BUkdTKQogewogCXJldHVybiBwb3B1bGF0ZV9yZWNvcmRfd29ya2VyKGZjaW5mbywgImpz b25iX3BvcHVsYXRlX3JlY29yZCIsCi0JCQkJCQkJCSAgZmFsc2UsIHRydWUpOworCQkJCQkJCQkg IGZhbHNlLCB0cnVlLCBOVUxMKTsKK30KKworRGF0dW0KK2pzb25iX3BvcHVsYXRlX3JlY29yZF92 YWxpZChQR19GVU5DVElPTl9BUkdTKQoreworCUVycm9yU2F2ZUNvbnRleHQgZXNjb250ZXh0ID0g e1RfRXJyb3JTYXZlQ29udGV4dH07CisKKwkodm9pZCkgcG9wdWxhdGVfcmVjb3JkX3dvcmtlcihm Y2luZm8sICJqc29uYl9wb3B1bGF0ZV9yZWNvcmQiLAorCQkJCQkJCQkgIGZhbHNlLCB0cnVlLCAo Tm9kZSAqKSAmZXNjb250ZXh0KTsKKworCXJldHVybiBCb29sR2V0RGF0dW0oIVNPRlRfRVJST1Jf T0NDVVJSRUQoJmVzY29udGV4dCkpOwogfQogCiBEYXR1bQoganNvbmJfdG9fcmVjb3JkKFBHX0ZV TkNUSU9OX0FSR1MpCiB7CiAJcmV0dXJuIHBvcHVsYXRlX3JlY29yZF93b3JrZXIoZmNpbmZvLCAi anNvbmJfdG9fcmVjb3JkIiwKLQkJCQkJCQkJICBmYWxzZSwgZmFsc2UpOworCQkJCQkJCQkgIGZh bHNlLCBmYWxzZSwgTlVMTCk7CiB9CiAKIERhdHVtCiBqc29uX3BvcHVsYXRlX3JlY29yZChQR19G VU5DVElPTl9BUkdTKQogewogCXJldHVybiBwb3B1bGF0ZV9yZWNvcmRfd29ya2VyKGZjaW5mbywg Impzb25fcG9wdWxhdGVfcmVjb3JkIiwKLQkJCQkJCQkJICB0cnVlLCB0cnVlKTsKKwkJCQkJCQkJ ICB0cnVlLCB0cnVlLCBOVUxMKTsKIH0KIAogRGF0dW0KIGpzb25fdG9fcmVjb3JkKFBHX0ZVTkNU SU9OX0FSR1MpCiB7CiAJcmV0dXJuIHBvcHVsYXRlX3JlY29yZF93b3JrZXIoZmNpbmZvLCAianNv bl90b19yZWNvcmQiLAotCQkJCQkJCQkgIHRydWUsIGZhbHNlKTsKKwkJCQkJCQkJICB0cnVlLCBm YWxzZSwgTlVMTCk7CiB9CiAKIC8qIGhlbHBlciBmdW5jdGlvbiBmb3IgZGlhZ25vc3RpY3MgKi8K QEAgLTI0ODQsMTQgKzI1MDMsMTUgQEAgcG9wdWxhdGVfYXJyYXlfcmVwb3J0X2V4cGVjdGVkX2Fy cmF5KFBvcHVsYXRlQXJyYXlDb250ZXh0ICpjdHgsIGludCBuZGltKQogCWlmIChuZGltIDw9IDAp CiAJewogCQlpZiAoY3R4LT5jb2xuYW1lKQotCQkJZXJlcG9ydChFUlJPUiwKKwkJCWVycnNhdmUo Y3R4LT5lc2NvbnRleHQsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJF U0VOVEFUSU9OKSwKIAkJCQkJIGVycm1zZygiZXhwZWN0ZWQgSlNPTiBhcnJheSIpLAogCQkJCQkg ZXJyaGludCgiU2VlIHRoZSB2YWx1ZSBvZiBrZXkgXCIlc1wiLiIsIGN0eC0+Y29sbmFtZSkpKTsK IAkJZWxzZQotCQkJZXJlcG9ydChFUlJPUiwKKwkJCWVycnNhdmUoY3R4LT5lc2NvbnRleHQsCiAJ CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKIAkJCQkJ IGVycm1zZygiZXhwZWN0ZWQgSlNPTiBhcnJheSIpKSk7CisJCXJldHVybjsKIAl9CiAJZWxzZQog CXsKQEAgLTI1MDYsMjIgKzI1MjYsMjggQEAgcG9wdWxhdGVfYXJyYXlfcmVwb3J0X2V4cGVjdGVk X2FycmF5KFBvcHVsYXRlQXJyYXlDb250ZXh0ICpjdHgsIGludCBuZGltKQogCQkJYXBwZW5kU3Ry aW5nSW5mbygmaW5kaWNlcywgIlslZF0iLCBjdHgtPnNpemVzW2ldKTsKIAogCQlpZiAoY3R4LT5j b2xuYW1lKQotCQkJZXJlcG9ydChFUlJPUiwKKwkJCWVycnNhdmUoY3R4LT5lc2NvbnRleHQsCiAJ CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKIAkJCQkJ IGVycm1zZygiZXhwZWN0ZWQgSlNPTiBhcnJheSIpLAogCQkJCQkgZXJyaGludCgiU2VlIHRoZSBh cnJheSBlbGVtZW50ICVzIG9mIGtleSBcIiVzXCIuIiwKIAkJCQkJCQkgaW5kaWNlcy5kYXRhLCBj dHgtPmNvbG5hbWUpKSk7CiAJCWVsc2UKLQkJCWVyZXBvcnQoRVJST1IsCisJCQllcnJzYXZlKGN0 eC0+ZXNjb250ZXh0LAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNF TlRBVElPTiksCiAJCQkJCSBlcnJtc2coImV4cGVjdGVkIEpTT04gYXJyYXkiKSwKIAkJCQkJIGVy cmhpbnQoIlNlZSB0aGUgYXJyYXkgZWxlbWVudCAlcy4iLAogCQkJCQkJCSBpbmRpY2VzLmRhdGEp KSk7CisJCXJldHVybjsKIAl9CiB9CiAKLS8qIHNldCB0aGUgbnVtYmVyIG9mIGRpbWVuc2lvbnMg b2YgdGhlIHBvcHVsYXRlZCBhcnJheSB3aGVuIGl0IGJlY29tZXMga25vd24gKi8KLXN0YXRpYyB2 b2lkCisvKgorICogVmFsaWRhdGUgYW5kIHNldCBuZGltcyBmb3IgcG9wdWxhdGluZyBhbiBhcnJh eSB3aXRoIHNvbWUKKyAqIHBvcHVsYXRlX2FycmF5XyooKSBmdW5jdGlvbi4KKyAqCisgKiBSZXR1 cm5zIGZhbHNlIGlmIHRoZSBpbnB1dCAobmRpbXMpIGlzIGVycm9uZW91cy4KKyAqLworc3RhdGlj IGJvb2wKIHBvcHVsYXRlX2FycmF5X2Fzc2lnbl9uZGltcyhQb3B1bGF0ZUFycmF5Q29udGV4dCAq Y3R4LCBpbnQgbmRpbXMpCiB7CiAJaW50CQkJaTsKQEAgLTI1MjksNyArMjU1NSwxMiBAQCBwb3B1 bGF0ZV9hcnJheV9hc3NpZ25fbmRpbXMoUG9wdWxhdGVBcnJheUNvbnRleHQgKmN0eCwgaW50IG5k aW1zKQogCUFzc2VydChjdHgtPm5kaW1zIDw9IDApOwogCiAJaWYgKG5kaW1zIDw9IDApCisJewog CQlwb3B1bGF0ZV9hcnJheV9yZXBvcnRfZXhwZWN0ZWRfYXJyYXkoY3R4LCBuZGltcyk7CisJCS8q IEdldHRpbmcgaGVyZSBtZWFucyB0aGUgZXJyb3Igd2FzIHJlcG9ydGVkIHNvZnRseS4gKi8KKwkJ QXNzZXJ0KFNPRlRfRVJST1JfT0NDVVJSRUQoY3R4LT5lc2NvbnRleHQpKTsKKwkJcmV0dXJuIGZh bHNlOworCX0KIAogCWN0eC0+bmRpbXMgPSBuZGltczsKIAljdHgtPmRpbXMgPSBwYWxsb2Moc2l6 ZW9mKGludCkgKiBuZGltcyk7CkBAIC0yNTM3LDEwICsyNTY4LDE2IEBAIHBvcHVsYXRlX2FycmF5 X2Fzc2lnbl9uZGltcyhQb3B1bGF0ZUFycmF5Q29udGV4dCAqY3R4LCBpbnQgbmRpbXMpCiAKIAlm b3IgKGkgPSAwOyBpIDwgbmRpbXM7IGkrKykKIAkJY3R4LT5kaW1zW2ldID0gLTE7CQkvKiBkaW1l bnNpb25zIGFyZSB1bmtub3duIHlldCAqLworCisJcmV0dXJuIHRydWU7CiB9CiAKLS8qIGNoZWNr IHRoZSBwb3B1bGF0ZWQgc3ViYXJyYXkgZGltZW5zaW9uICovCi1zdGF0aWMgdm9pZAorLyoKKyAq IENoZWNrIHRoZSBwb3B1bGF0ZWQgc3ViYXJyYXkgZGltZW5zaW9uCisgKgorICogUmV0dXJucyBm YWxzZSBpZiB0aGUgaW5wdXQgKG5kaW1zKSBpcyBlcnJvbmVvdXMuCisgKi8KK3N0YXRpYyBib29s CiBwb3B1bGF0ZV9hcnJheV9jaGVja19kaW1lbnNpb24oUG9wdWxhdGVBcnJheUNvbnRleHQgKmN0 eCwgaW50IG5kaW0pCiB7CiAJaW50CQkJZGltID0gY3R4LT5zaXplc1tuZGltXTsgLyogY3VycmVu dCBkaW1lbnNpb24gY291bnRlciAqLwpAQCAtMjU0OCw3ICsyNTg1LDcgQEAgcG9wdWxhdGVfYXJy YXlfY2hlY2tfZGltZW5zaW9uKFBvcHVsYXRlQXJyYXlDb250ZXh0ICpjdHgsIGludCBuZGltKQog CWlmIChjdHgtPmRpbXNbbmRpbV0gPT0gLTEpCiAJCWN0eC0+ZGltc1tuZGltXSA9IGRpbTsJLyog YXNzaWduIGRpbWVuc2lvbiBpZiBub3QgeWV0IGtub3duICovCiAJZWxzZSBpZiAoY3R4LT5kaW1z W25kaW1dICE9IGRpbSkKLQkJZXJlcG9ydChFUlJPUiwKKwkJZXJldHVybihjdHgtPmVzY29udGV4 dCwgZmFsc2UsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJ T04pLAogCQkJCSBlcnJtc2coIm1hbGZvcm1lZCBKU09OIGFycmF5IiksCiAJCQkJIGVycmRldGFp bCgiTXVsdGlkaW1lbnNpb25hbCBhcnJheXMgbXVzdCBoYXZlICIKQEAgLTI1NjAsOSArMjU5Nywx NSBAQCBwb3B1bGF0ZV9hcnJheV9jaGVja19kaW1lbnNpb24oUG9wdWxhdGVBcnJheUNvbnRleHQg KmN0eCwgaW50IG5kaW0pCiAJLyogaW5jcmVtZW50IHRoZSBwYXJlbnQgZGltZW5zaW9uIGNvdW50 ZXIgaWYgaXQgaXMgYSBuZXN0ZWQgc3ViLWFycmF5ICovCiAJaWYgKG5kaW0gPiAwKQogCQljdHgt PnNpemVzW25kaW0gLSAxXSsrOworCisJcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkCisv KgorICogUmV0dXJucyB0cnVlIGlmIHRoZSBhcnJheSBlbGVtZW50IHZhbHVlIHdhcyBzdWNjZXNz ZnVsbHkgZXh0cmFjdGVkIGZyb20ganN2CisgKiBhbmQgYWRkZWQgdG8gY3R4LT5hc3RhdGUuICBG YWxzZSBpZiBhbiBlcnJvciBvY2N1cnJlZCB3aGVuIGRvaW5nIHNvLgorICovCitzdGF0aWMgYm9v bAogcG9wdWxhdGVfYXJyYXlfZWxlbWVudChQb3B1bGF0ZUFycmF5Q29udGV4dCAqY3R4LCBpbnQg bmRpbSwgSnNWYWx1ZSAqanN2KQogewogCURhdHVtCQllbGVtZW50OwpAQCAtMjU3MywxMyArMjYx NiwxOCBAQCBwb3B1bGF0ZV9hcnJheV9lbGVtZW50KFBvcHVsYXRlQXJyYXlDb250ZXh0ICpjdHgs IGludCBuZGltLCBKc1ZhbHVlICpqc3YpCiAJCQkJCQkJCQljdHgtPmFpby0+ZWxlbWVudF90eXBl LAogCQkJCQkJCQkJY3R4LT5haW8tPmVsZW1lbnRfdHlwbW9kLAogCQkJCQkJCQkJTlVMTCwgY3R4 LT5tY3h0LCBQb2ludGVyR2V0RGF0dW0oTlVMTCksCi0JCQkJCQkJCQlqc3YsICZlbGVtZW50X2lz bnVsbCk7CisJCQkJCQkJCQlqc3YsICZlbGVtZW50X2lzbnVsbCwgY3R4LT5lc2NvbnRleHQpOwor CS8qIE5vdGhpbmcgdG8gZG8gb24gYW4gZXJyb3IuICovCisJaWYgKFNPRlRfRVJST1JfT0NDVVJS RUQoY3R4LT5lc2NvbnRleHQpKQorCQlyZXR1cm4gZmFsc2U7CiAKIAlhY2N1bUFycmF5UmVzdWx0 KGN0eC0+YXN0YXRlLCBlbGVtZW50LCBlbGVtZW50X2lzbnVsbCwKIAkJCQkJIGN0eC0+YWlvLT5l bGVtZW50X3R5cGUsIGN0eC0+YWN4dCk7CiAKIAlBc3NlcnQobmRpbSA+IDApOwogCWN0eC0+c2l6 ZXNbbmRpbSAtIDFdKys7CQkvKiBpbmNyZW1lbnQgY3VycmVudCBkaW1lbnNpb24gY291bnRlciAq LworCisJcmV0dXJuIHRydWU7CiB9CiAKIC8qIGpzb24gb2JqZWN0IHN0YXJ0IGhhbmRsZXIgZm9y IHBvcHVsYXRlX2FycmF5X2pzb24oKSAqLwpAQCAtMjU5MCw5ICsyNjM4LDE3IEBAIHBvcHVsYXRl X2FycmF5X29iamVjdF9zdGFydCh2b2lkICpfc3RhdGUpCiAJaW50CQkJbmRpbSA9IHN0YXRlLT5s ZXgtPmxleF9sZXZlbDsKIAogCWlmIChzdGF0ZS0+Y3R4LT5uZGltcyA8PSAwKQotCQlwb3B1bGF0 ZV9hcnJheV9hc3NpZ25fbmRpbXMoc3RhdGUtPmN0eCwgbmRpbSk7CisJeworCQlpZiAoIXBvcHVs YXRlX2FycmF5X2Fzc2lnbl9uZGltcyhzdGF0ZS0+Y3R4LCBuZGltKSkKKwkJCXJldHVybiBKU09O X1NFTV9BQ1RJT05fRkFJTEVEOworCX0KIAllbHNlIGlmIChuZGltIDwgc3RhdGUtPmN0eC0+bmRp bXMpCisJewogCQlwb3B1bGF0ZV9hcnJheV9yZXBvcnRfZXhwZWN0ZWRfYXJyYXkoc3RhdGUtPmN0 eCwgbmRpbSk7CisJCS8qIEdldHRpbmcgaGVyZSBtZWFucyB0aGUgZXJyb3Igd2FzIHJlcG9ydGVk IHNvZnRseS4gKi8KKwkJQXNzZXJ0KFNPRlRfRVJST1JfT0NDVVJSRUQoc3RhdGUtPmN0eC0+ZXNj b250ZXh0KSk7CisJCXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJTEVEOworCX0KIAogCXJldHVy biBKU09OX1NVQ0NFU1M7CiB9CkBAIC0yNjA2LDEwICsyNjYyLDE3IEBAIHBvcHVsYXRlX2FycmF5 X2FycmF5X2VuZCh2b2lkICpfc3RhdGUpCiAJaW50CQkJbmRpbSA9IHN0YXRlLT5sZXgtPmxleF9s ZXZlbDsKIAogCWlmIChjdHgtPm5kaW1zIDw9IDApCi0JCXBvcHVsYXRlX2FycmF5X2Fzc2lnbl9u ZGltcyhjdHgsIG5kaW0gKyAxKTsKKwl7CisJCWlmICghcG9wdWxhdGVfYXJyYXlfYXNzaWduX25k aW1zKGN0eCwgbmRpbSArIDEpKQorCQkJcmV0dXJuIEpTT05fU0VNX0FDVElPTl9GQUlMRUQ7CisJ fQogCiAJaWYgKG5kaW0gPCBjdHgtPm5kaW1zKQotCQlwb3B1bGF0ZV9hcnJheV9jaGVja19kaW1l bnNpb24oY3R4LCBuZGltKTsKKwl7CisJCS8qIFJlcG9ydCBpZiBhbiBlcnJvciBvY2N1cnJlZC4g Ki8KKwkJaWYgKCFwb3B1bGF0ZV9hcnJheV9jaGVja19kaW1lbnNpb24oY3R4LCBuZGltKSkKKwkJ CXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJTEVEOworCX0KIAogCXJldHVybiBKU09OX1NVQ0NF U1M7CiB9CkBAIC0yNjY3LDcgKzI3MzAsOSBAQCBwb3B1bGF0ZV9hcnJheV9lbGVtZW50X2VuZCh2 b2lkICpfc3RhdGUsIGJvb2wgaXNudWxsKQogCQkJCQkJCQlzdGF0ZS0+ZWxlbWVudF9zdGFydCkg KiBzaXplb2YoY2hhcik7CiAJCX0KIAotCQlwb3B1bGF0ZV9hcnJheV9lbGVtZW50KGN0eCwgbmRp bSwgJmpzdik7CisJCS8qIFJlcG9ydCBpZiBhbiBlcnJvciBvY2N1cnJlZC4gKi8KKwkJaWYgKCFw b3B1bGF0ZV9hcnJheV9lbGVtZW50KGN0eCwgbmRpbSwgJmpzdikpCisJCQlyZXR1cm4gSlNPTl9T RU1fQUNUSU9OX0ZBSUxFRDsKIAl9CiAKIAlyZXR1cm4gSlNPTl9TVUNDRVNTOwpAQCAtMjY4Miw5 ICsyNzQ3LDE3IEBAIHBvcHVsYXRlX2FycmF5X3NjYWxhcih2b2lkICpfc3RhdGUsIGNoYXIgKnRv a2VuLCBKc29uVG9rZW5UeXBlIHRva2VudHlwZSkKIAlpbnQJCQluZGltID0gc3RhdGUtPmxleC0+ bGV4X2xldmVsOwogCiAJaWYgKGN0eC0+bmRpbXMgPD0gMCkKLQkJcG9wdWxhdGVfYXJyYXlfYXNz aWduX25kaW1zKGN0eCwgbmRpbSk7CisJeworCQlpZiAoIXBvcHVsYXRlX2FycmF5X2Fzc2lnbl9u ZGltcyhjdHgsIG5kaW0pKQorCQkJcmV0dXJuIEpTT05fU0VNX0FDVElPTl9GQUlMRUQ7CisJfQog CWVsc2UgaWYgKG5kaW0gPCBjdHgtPm5kaW1zKQorCXsKIAkJcG9wdWxhdGVfYXJyYXlfcmVwb3J0 X2V4cGVjdGVkX2FycmF5KGN0eCwgbmRpbSk7CisJCS8qIEdldHRpbmcgaGVyZSBtZWFucyB0aGUg ZXJyb3Igd2FzIHJlcG9ydGVkIHNvZnRseS4gKi8KKwkJQXNzZXJ0KFNPRlRfRVJST1JfT0NDVVJS RUQoY3R4LT5lc2NvbnRleHQpKTsKKwkJcmV0dXJuIEpTT05fU0VNX0FDVElPTl9GQUlMRUQ7CisJ fQogCiAJaWYgKG5kaW0gPT0gY3R4LT5uZGltcykKIAl7CkBAIC0yNjk3LDggKzI3NzAsMTIgQEAg cG9wdWxhdGVfYXJyYXlfc2NhbGFyKHZvaWQgKl9zdGF0ZSwgY2hhciAqdG9rZW4sIEpzb25Ub2tl blR5cGUgdG9rZW50eXBlKQogCXJldHVybiBKU09OX1NVQ0NFU1M7CiB9CiAKLS8qIHBhcnNlIGEg anNvbiBhcnJheSBhbmQgcG9wdWxhdGUgYXJyYXkgKi8KLXN0YXRpYyB2b2lkCisvKgorICogUGFy c2UgYSBqc29uIGFycmF5IGFuZCBwb3B1bGF0ZSBhcnJheQorICoKKyAqIFJldHVybnMgZmFsc2Ug aWYgYW4gZXJyb3Igb2NjdXJzIHdoZW4gcGFyc2luZy4KKyAqLworc3RhdGljIGJvb2wKIHBvcHVs YXRlX2FycmF5X2pzb24oUG9wdWxhdGVBcnJheUNvbnRleHQgKmN0eCwgY2hhciAqanNvbiwgaW50 IGxlbikKIHsKIAlQb3B1bGF0ZUFycmF5U3RhdGUgc3RhdGU7CkBAIC0yNzE2LDE5ICsyNzkzLDI1 IEBAIHBvcHVsYXRlX2FycmF5X2pzb24oUG9wdWxhdGVBcnJheUNvbnRleHQgKmN0eCwgY2hhciAq anNvbiwgaW50IGxlbikKIAlzZW0uYXJyYXlfZWxlbWVudF9lbmQgPSBwb3B1bGF0ZV9hcnJheV9l bGVtZW50X2VuZDsKIAlzZW0uc2NhbGFyID0gcG9wdWxhdGVfYXJyYXlfc2NhbGFyOwogCi0JcGdf cGFyc2VfanNvbl9vcl9lcmVwb3J0KHN0YXRlLmxleCwgJnNlbSk7Ci0KLQkvKiBudW1iZXIgb2Yg ZGltZW5zaW9ucyBzaG91bGQgYmUgYWxyZWFkeSBrbm93biAqLwotCUFzc2VydChjdHgtPm5kaW1z ID4gMCAmJiBjdHgtPmRpbXMpOworCWlmIChwZ19wYXJzZV9qc29uX29yX2VycnNhdmUoc3RhdGUu bGV4LCAmc2VtLCBjdHgtPmVzY29udGV4dCkpCisJeworCQkvKiBudW1iZXIgb2YgZGltZW5zaW9u cyBzaG91bGQgYmUgYWxyZWFkeSBrbm93biAqLworCQlBc3NlcnQoY3R4LT5uZGltcyA+IDAgJiYg Y3R4LT5kaW1zKTsKKwl9CiAKIAlmcmVlSnNvbkxleENvbnRleHQoc3RhdGUubGV4KTsKKworCXJl dHVybiAhU09GVF9FUlJPUl9PQ0NVUlJFRChjdHgtPmVzY29udGV4dCk7CiB9CiAKIC8qCiAgKiBw b3B1bGF0ZV9hcnJheV9kaW1fanNvbmIoKSAtLSBJdGVyYXRlIHJlY3Vyc2l2ZWx5IHRocm91Z2gg anNvbmIgc3ViLWFycmF5CiAgKgkJZWxlbWVudHMgYW5kIGFjY3VtdWxhdGUgcmVzdWx0IHVzaW5n IGdpdmVuIEFycmF5QnVpbGRTdGF0ZS4KKyAqCisgKiBSZXR1cm5zIGZhbHNlIGlmIHdlIHJldHVy biBwYXJ0d2F5IHRocm91Z2ggYmVjYXVzZSBvZiBhbiBlcnJvciBpbiBhCisgKiBzdWJyb3V0aW5l LgogICovCi1zdGF0aWMgdm9pZAorc3RhdGljIGJvb2wKIHBvcHVsYXRlX2FycmF5X2RpbV9qc29u YihQb3B1bGF0ZUFycmF5Q29udGV4dCAqY3R4LCAvKiBjb250ZXh0ICovCiAJCQkJCQkgSnNvbmJW YWx1ZSAqamJ2LAkvKiBqc29uYiBzdWItYXJyYXkgKi8KIAkJCQkJCSBpbnQgbmRpbSkJLyogY3Vy cmVudCBkaW1lbnNpb24gKi8KQEAgLTI3NDIsNyArMjgyNSwxMiBAQCBwb3B1bGF0ZV9hcnJheV9k aW1fanNvbmIoUG9wdWxhdGVBcnJheUNvbnRleHQgKmN0eCwgLyogY29udGV4dCAqLwogCWNoZWNr X3N0YWNrX2RlcHRoKCk7CiAKIAlpZiAoamJ2LT50eXBlICE9IGpidkJpbmFyeSB8fCAhSnNvbkNv bnRhaW5lcklzQXJyYXkoamJjKSkKKwl7CiAJCXBvcHVsYXRlX2FycmF5X3JlcG9ydF9leHBlY3Rl ZF9hcnJheShjdHgsIG5kaW0gLSAxKTsKKwkJLyogR2V0dGluZyBoZXJlIG1lYW5zIHRoZSBlcnJv ciB3YXMgcmVwb3J0ZWQgc29mdGx5LiAqLworCQlBc3NlcnQoU09GVF9FUlJPUl9PQ0NVUlJFRChj dHgtPmVzY29udGV4dCkpOworCQlyZXR1cm4gZmFsc2U7CisJfQogCiAJQXNzZXJ0KCFKc29uQ29u dGFpbmVySXNTY2FsYXIoamJjKSk7CiAKQEAgLTI3NjMsNyArMjg1MSwxMCBAQCBwb3B1bGF0ZV9h cnJheV9kaW1fanNvbmIoUG9wdWxhdGVBcnJheUNvbnRleHQgKmN0eCwgLyogY29udGV4dCAqLwog CQkgKHRvayA9PSBXSkJfRUxFTSAmJgogCQkgICh2YWwudHlwZSAhPSBqYnZCaW5hcnkgfHwKIAkJ ICAgIUpzb25Db250YWluZXJJc0FycmF5KHZhbC52YWwuYmluYXJ5LmRhdGEpKSkpKQotCQlwb3B1 bGF0ZV9hcnJheV9hc3NpZ25fbmRpbXMoY3R4LCBuZGltKTsKKwl7CisJCWlmICghcG9wdWxhdGVf YXJyYXlfYXNzaWduX25kaW1zKGN0eCwgbmRpbSkpCisJCQlyZXR1cm4gZmFsc2U7CisJfQogCiAJ anN2LmlzX2pzb24gPSBmYWxzZTsKIAlqc3YudmFsLmpzb25iID0gJnZhbDsKQEAgLTI3NzYsMTYg KzI4NjcsMjEgQEAgcG9wdWxhdGVfYXJyYXlfZGltX2pzb25iKFBvcHVsYXRlQXJyYXlDb250ZXh0 ICpjdHgsIC8qIGNvbnRleHQgKi8KIAkJICogaXQgaXMgbm90IHRoZSBpbm5lcm1vc3QgZGltZW5z aW9uLgogCQkgKi8KIAkJaWYgKGN0eC0+bmRpbXMgPiAwICYmIG5kaW0gPj0gY3R4LT5uZGltcykK LQkJCXBvcHVsYXRlX2FycmF5X2VsZW1lbnQoY3R4LCBuZGltLCAmanN2KTsKKwkJeworCQkJaWYg KCFwb3B1bGF0ZV9hcnJheV9lbGVtZW50KGN0eCwgbmRpbSwgJmpzdikpCisJCQkJcmV0dXJuIGZh bHNlOworCQl9CiAJCWVsc2UKIAkJewogCQkJLyogcG9wdWxhdGUgY2hpbGQgc3ViLWFycmF5ICov Ci0JCQlwb3B1bGF0ZV9hcnJheV9kaW1fanNvbmIoY3R4LCAmdmFsLCBuZGltICsgMSk7CisJCQlp ZiAoIXBvcHVsYXRlX2FycmF5X2RpbV9qc29uYihjdHgsICZ2YWwsIG5kaW0gKyAxKSkKKwkJCQly ZXR1cm4gZmFsc2U7CiAKIAkJCS8qIG51bWJlciBvZiBkaW1lbnNpb25zIHNob3VsZCBiZSBhbHJl YWR5IGtub3duICovCiAJCQlBc3NlcnQoY3R4LT5uZGltcyA+IDAgJiYgY3R4LT5kaW1zKTsKIAot CQkJcG9wdWxhdGVfYXJyYXlfY2hlY2tfZGltZW5zaW9uKGN0eCwgbmRpbSk7CisJCQlpZiAoIXBv cHVsYXRlX2FycmF5X2NoZWNrX2RpbWVuc2lvbihjdHgsIG5kaW0pKQorCQkJCXJldHVybiBmYWxz ZTsKIAkJfQogCiAJCXRvayA9IEpzb25iSXRlcmF0b3JOZXh0KCZpdCwgJnZhbCwgdHJ1ZSk7CkBA IC0yNzk2LDE0ICsyODkyLDIyIEBAIHBvcHVsYXRlX2FycmF5X2RpbV9qc29uYihQb3B1bGF0ZUFy cmF5Q29udGV4dCAqY3R4LCAvKiBjb250ZXh0ICovCiAJLyogZnJlZSBpdGVyYXRvciwgaXRlcmF0 aW5nIHVudGlsIFdKQl9ET05FICovCiAJdG9rID0gSnNvbmJJdGVyYXRvck5leHQoJml0LCAmdmFs LCB0cnVlKTsKIAlBc3NlcnQodG9rID09IFdKQl9ET05FICYmICFpdCk7CisKKwlyZXR1cm4gdHJ1 ZTsKIH0KIAotLyogcmVjdXJzaXZlbHkgcG9wdWxhdGUgYW4gYXJyYXkgZnJvbSBqc29uL2pzb25i ICovCisvKgorICogUmVjdXJzaXZlbHkgcG9wdWxhdGUgYW4gYXJyYXkgZnJvbSBqc29uL2pzb25i CisgKgorICogKmlzbnVsbCBpcyBzZXQgdG8gdHJ1ZSBpZiBhbiBlcnJvciBpcyByZXBvcnRlZCBk dXJpbmcgcGFyc2luZy4KKyAqLwogc3RhdGljIERhdHVtCiBwb3B1bGF0ZV9hcnJheShBcnJheUlP RGF0YSAqYWlvLAogCQkJICAgY29uc3QgY2hhciAqY29sbmFtZSwKIAkJCSAgIE1lbW9yeUNvbnRl eHQgbWN4dCwKLQkJCSAgIEpzVmFsdWUgKmpzdikKKwkJCSAgIEpzVmFsdWUgKmpzdiwKKwkJCSAg IGJvb2wgKmlzbnVsbCwKKwkJCSAgIE5vZGUgKmVzY29udGV4dCkKIHsKIAlQb3B1bGF0ZUFycmF5 Q29udGV4dCBjdHg7CiAJRGF0dW0JCXJlc3VsdDsKQEAgLTI4MTgsMTQgKzI5MjIsMjcgQEAgcG9w dWxhdGVfYXJyYXkoQXJyYXlJT0RhdGEgKmFpbywKIAljdHgubmRpbXMgPSAwOwkJCQkvKiB1bmtu b3duIHlldCAqLwogCWN0eC5kaW1zID0gTlVMTDsKIAljdHguc2l6ZXMgPSBOVUxMOworCWN0eC5l c2NvbnRleHQgPSBlc2NvbnRleHQ7CiAKIAlpZiAoanN2LT5pc19qc29uKQotCQlwb3B1bGF0ZV9h cnJheV9qc29uKCZjdHgsIGpzdi0+dmFsLmpzb24uc3RyLAotCQkJCQkJCWpzdi0+dmFsLmpzb24u bGVuID49IDAgPyBqc3YtPnZhbC5qc29uLmxlbgotCQkJCQkJCTogc3RybGVuKGpzdi0+dmFsLmpz b24uc3RyKSk7CisJeworCQkvKiBSZXR1cm4gbnVsbCBpZiBhbiBlcnJvciB3YXMgZm91bmQuICov CisJCWlmICghcG9wdWxhdGVfYXJyYXlfanNvbigmY3R4LCBqc3YtPnZhbC5qc29uLnN0ciwKKwkJ CQkJCQkJIGpzdi0+dmFsLmpzb24ubGVuID49IDAgPyBqc3YtPnZhbC5qc29uLmxlbgorCQkJCQkJ CQkgOiBzdHJsZW4oanN2LT52YWwuanNvbi5zdHIpKSkKKwkJeworCQkJKmlzbnVsbCA9IHRydWU7 CisJCQlyZXR1cm4gKERhdHVtKSAwOworCQl9CisJfQogCWVsc2UKIAl7Ci0JCXBvcHVsYXRlX2Fy cmF5X2RpbV9qc29uYigmY3R4LCBqc3YtPnZhbC5qc29uYiwgMSk7CisJCS8qIFJldHVybiBudWxs IGlmIGFuIGVycm9yIHdhcyBmb3VuZC4gKi8KKwkJaWYgKCFwb3B1bGF0ZV9hcnJheV9kaW1fanNv bmIoJmN0eCwganN2LT52YWwuanNvbmIsIDEpKQorCQl7CisJCQkqaXNudWxsID0gdHJ1ZTsKKwkJ CXJldHVybiAoRGF0dW0pIDA7CisJCX0KIAkJY3R4LmRpbXNbMF0gPSBjdHguc2l6ZXNbMF07CiAJ fQogCkBAIC0yODQzLDExICsyOTYwLDE2IEBAIHBvcHVsYXRlX2FycmF5KEFycmF5SU9EYXRhICph aW8sCiAJcGZyZWUoY3R4LnNpemVzKTsKIAlwZnJlZShsYnMpOwogCisJKmlzbnVsbCA9IGZhbHNl OwogCXJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyB2b2lkCi1Kc1ZhbHVlVG9Kc09iamVjdChK c1ZhbHVlICpqc3YsIEpzT2JqZWN0ICpqc28pCisvKgorICogUmV0dXJucyBmYWxzZSBpZiBhbiBl cnJvciBvY2N1cnMsIHByb3ZpZGVkIGVzY29udGV4dCBwb2ludHMgdG8gYW4KKyAqIEVycm9yU2F2 ZUNvbnRleHQuCisgKi8KK3N0YXRpYyBib29sCitKc1ZhbHVlVG9Kc09iamVjdChKc1ZhbHVlICpq c3YsIEpzT2JqZWN0ICpqc28sIE5vZGUgKmVzY29udGV4dCkKIHsKIAlqc28tPmlzX2pzb24gPSBq c3YtPmlzX2pzb247CiAKQEAgLTI4NTksNyArMjk4MSw5IEBAIEpzVmFsdWVUb0pzT2JqZWN0KEpz VmFsdWUgKmpzdiwgSnNPYmplY3QgKmpzbykKIAkJCQkJCQkJCWpzdi0+dmFsLmpzb24ubGVuID49 IDAKIAkJCQkJCQkJCT8ganN2LT52YWwuanNvbi5sZW4KIAkJCQkJCQkJCTogc3RybGVuKGpzdi0+ dmFsLmpzb24uc3RyKSwKLQkJCQkJCQkJCSJwb3B1bGF0ZV9jb21wb3NpdGUiKTsKKwkJCQkJCQkJ CSJwb3B1bGF0ZV9jb21wb3NpdGUiLAorCQkJCQkJCQkJZXNjb250ZXh0KTsKKwkJQXNzZXJ0KGpz by0+dmFsLmpzb25faGFzaCAhPSBOVUxMIHx8IFNPRlRfRVJST1JfT0NDVVJSRUQoZXNjb250ZXh0 KSk7CiAJfQogCWVsc2UKIAl7CkBAIC0yODc3LDcgKzMwMDEsNyBAQCBKc1ZhbHVlVG9Kc09iamVj dChKc1ZhbHVlICpqc3YsIEpzT2JqZWN0ICpqc28pCiAJCQlpc19zY2FsYXIgPSBJc0FKc29uYlNj YWxhcihqYnYpIHx8CiAJCQkJKGpidi0+dHlwZSA9PSBqYnZCaW5hcnkgJiYKIAkJCQkgSnNvbkNv bnRhaW5lcklzU2NhbGFyKGpidi0+dmFsLmJpbmFyeS5kYXRhKSk7Ci0JCQllcmVwb3J0KEVSUk9S LAorCQkJZXJyc2F2ZShlc2NvbnRleHQsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLAogCQkJCQkgaXNfc2NhbGFyCiAJCQkJCSA/IGVycm1zZygiY2Fubm90 IGNhbGwgJXMgb24gYSBzY2FsYXIiLApAQCAtMjg4Niw2ICszMDEwLDggQEAgSnNWYWx1ZVRvSnNP YmplY3QoSnNWYWx1ZSAqanN2LCBKc09iamVjdCAqanNvKQogCQkJCQkJCSAgInBvcHVsYXRlX2Nv bXBvc2l0ZSIpKSk7CiAJCX0KIAl9CisKKwlyZXR1cm4gIVNPRlRfRVJST1JfT0NDVVJSRUQoZXNj b250ZXh0KTsKIH0KIAogLyogYWNxdWlyZSBvciB1cGRhdGUgY2FjaGVkIHR1cGxlIGRlc2NyaXB0 b3IgZm9yIGEgY29tcG9zaXRlIHR5cGUgKi8KQEAgLTI5MTIsNyArMzAzOCwxMiBAQCB1cGRhdGVf Y2FjaGVkX3R1cGRlc2MoQ29tcG9zaXRlSU9EYXRhICppbywgTWVtb3J5Q29udGV4dCBtY3h0KQog CX0KIH0KIAotLyogcmVjdXJzaXZlbHkgcG9wdWxhdGUgYSBjb21wb3NpdGUgKHJvdyB0eXBlKSB2 YWx1ZSBmcm9tIGpzb24vanNvbmIgKi8KKy8qCisgKiBSZWN1cnNpdmVseSBwb3B1bGF0ZSBhIGNv bXBvc2l0ZSAocm93IHR5cGUpIHZhbHVlIGZyb20ganNvbi9qc29uYgorICoKKyAqIFJldHVybnMg bnVsbCBpZiBhbiBlcnJvciBvY2N1cnMgaW4gYSBzdWJyb3V0aW5lLCBwcm92aWRlZCBlc2NvbnRl eHQgcG9pbnRzCisgKiB0byBhbiBFcnJvclNhdmVDb250ZXh0LgorICovCiBzdGF0aWMgRGF0dW0K IHBvcHVsYXRlX2NvbXBvc2l0ZShDb21wb3NpdGVJT0RhdGEgKmlvLAogCQkJCSAgIE9pZCB0eXBp ZCwKQEAgLTI5MjAsMTQgKzMwNTEsMTUgQEAgcG9wdWxhdGVfY29tcG9zaXRlKENvbXBvc2l0ZUlP RGF0YSAqaW8sCiAJCQkJICAgTWVtb3J5Q29udGV4dCBtY3h0LAogCQkJCSAgIEhlYXBUdXBsZUhl YWRlciBkZWZhdWx0dmFsLAogCQkJCSAgIEpzVmFsdWUgKmpzdiwKLQkJCQkgICBib29sIGlzbnVs bCkKKwkJCQkgICBib29sICppc251bGwsCisJCQkJICAgTm9kZSAqZXNjb250ZXh0KQogewogCURh dHVtCQlyZXN1bHQ7CiAKIAkvKiBhY3F1aXJlL3VwZGF0ZSBjYWNoZWQgdHVwbGUgZGVzY3JpcHRv ciAqLwogCXVwZGF0ZV9jYWNoZWRfdHVwZGVzYyhpbywgbWN4dCk7CiAKLQlpZiAoaXNudWxsKQor CWlmICgqaXNudWxsKQogCQlyZXN1bHQgPSAoRGF0dW0pIDA7CiAJZWxzZQogCXsKQEAgLTI5MzUs MTEgKzMwNjcsMjEgQEAgcG9wdWxhdGVfY29tcG9zaXRlKENvbXBvc2l0ZUlPRGF0YSAqaW8sCiAJ CUpzT2JqZWN0CWpzbzsKIAogCQkvKiBwcmVwYXJlIGlucHV0IHZhbHVlICovCi0JCUpzVmFsdWVU b0pzT2JqZWN0KGpzdiwgJmpzbyk7CisJCWlmICghSnNWYWx1ZVRvSnNPYmplY3QoanN2LCAmanNv LCBlc2NvbnRleHQpKQorCQl7CisJCQkqaXNudWxsID0gdHJ1ZTsKKwkJCXJldHVybiAoRGF0dW0p IDA7CisJCX0KIAogCQkvKiBwb3B1bGF0ZSByZXN1bHRpbmcgcmVjb3JkIHR1cGxlICovCiAJCXR1 cGxlID0gcG9wdWxhdGVfcmVjb3JkKGlvLT50dXBkZXNjLCAmaW8tPnJlY29yZF9pbywKLQkJCQkJ CQkJZGVmYXVsdHZhbCwgbWN4dCwgJmpzbyk7CisJCQkJCQkJCWRlZmF1bHR2YWwsIG1jeHQsICZq c28sIGVzY29udGV4dCk7CisKKwkJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZXNjb250ZXh0KSkK KwkJeworCQkJKmlzbnVsbCA9IHRydWU7CisJCQlyZXR1cm4gKERhdHVtKSAwOworCQl9CiAJCXJl c3VsdCA9IEhlYXBUdXBsZUhlYWRlckdldERhdHVtKHR1cGxlKTsKIAogCQlKc09iamVjdEZyZWUo Jmpzbyk7CkBAIC0yOTUxLDE0ICszMDkzLDI3IEBAIHBvcHVsYXRlX2NvbXBvc2l0ZShDb21wb3Np dGVJT0RhdGEgKmlvLAogCSAqIG5vdywgd2UgY2FuIHRlbGwgYnkgY29tcGFyaW5nIHR5cGlkIHRv IGJhc2VfdHlwaWQuKQogCSAqLwogCWlmICh0eXBpZCAhPSBpby0+YmFzZV90eXBpZCAmJiB0eXBp ZCAhPSBSRUNPUkRPSUQpCi0JCWRvbWFpbl9jaGVjayhyZXN1bHQsIGlzbnVsbCwgdHlwaWQsICZp by0+ZG9tYWluX2luZm8sIG1jeHQpOworCXsKKwkJaWYgKCFkb21haW5fY2hlY2tfc2FmZShyZXN1 bHQsICppc251bGwsIHR5cGlkLCAmaW8tPmRvbWFpbl9pbmZvLCBtY3h0LAorCQkJCQkJCSAgIGVz Y29udGV4dCkpCisJCXsKKwkJCSppc251bGwgPSB0cnVlOworCQkJcmV0dXJuIChEYXR1bSkgMDsK KwkJfQorCX0KIAogCXJldHVybiByZXN1bHQ7CiB9CiAKLS8qIHBvcHVsYXRlIG5vbi1udWxsIHNj YWxhciB2YWx1ZSBmcm9tIGpzb24vanNvbmIgdmFsdWUgKi8KKy8qCisgKiBQb3B1bGF0ZSBub24t bnVsbCBzY2FsYXIgdmFsdWUgZnJvbSBqc29uL2pzb25iIHZhbHVlLgorICoKKyAqIFJldHVybnMg bnVsbCBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBjYWxsIHRvIHR5cGUgaW5wdXQgZnVu Y3Rpb24sCisgKiBwcm92aWRlZCBlc2NvbnRleHQgaXMgdmFsaWQuCisgKi8KIHN0YXRpYyBEYXR1 bQotcG9wdWxhdGVfc2NhbGFyKFNjYWxhcklPRGF0YSAqaW8sIE9pZCB0eXBpZCwgaW50MzIgdHlw bW9kLCBKc1ZhbHVlICpqc3YpCitwb3B1bGF0ZV9zY2FsYXIoU2NhbGFySU9EYXRhICppbywgT2lk IHR5cGlkLCBpbnQzMiB0eXBtb2QsIEpzVmFsdWUgKmpzdiwKKwkJCQlib29sICppc251bGwsIE5v ZGUgKmVzY29udGV4dCkKIHsKIAlEYXR1bQkJcmVzOwogCWNoYXIJICAgKnN0ciA9IE5VTEw7CkBA IC0zMDI5LDcgKzMxODQsMTIgQEAgcG9wdWxhdGVfc2NhbGFyKFNjYWxhcklPRGF0YSAqaW8sIE9p ZCB0eXBpZCwgaW50MzIgdHlwbW9kLCBKc1ZhbHVlICpqc3YpCiAJCQllbG9nKEVSUk9SLCAidW5y ZWNvZ25pemVkIGpzb25iIHR5cGU6ICVkIiwgKGludCkgamJ2LT50eXBlKTsKIAl9CiAKLQlyZXMg PSBJbnB1dEZ1bmN0aW9uQ2FsbCgmaW8tPnR5cGlvZnVuYywgc3RyLCBpby0+dHlwaW9wYXJhbSwg dHlwbW9kKTsKKwlpZiAoIUlucHV0RnVuY3Rpb25DYWxsU2FmZSgmaW8tPnR5cGlvZnVuYywgc3Ry LCBpby0+dHlwaW9wYXJhbSwgdHlwbW9kLAorCQkJCQkJCSAgIGVzY29udGV4dCwgJnJlcykpCisJ eworCQlyZXMgPSAoRGF0dW0pIDA7CisJCSppc251bGwgPSB0cnVlOworCX0KIAogCS8qIGZyZWUg dGVtcG9yYXJ5IGJ1ZmZlciAqLwogCWlmIChzdHIgIT0ganNvbikKQEAgLTMwNDQsMjIgKzMyMDQs MjggQEAgcG9wdWxhdGVfZG9tYWluKERvbWFpbklPRGF0YSAqaW8sCiAJCQkJY29uc3QgY2hhciAq Y29sbmFtZSwKIAkJCQlNZW1vcnlDb250ZXh0IG1jeHQsCiAJCQkJSnNWYWx1ZSAqanN2LAotCQkJ CWJvb2wgaXNudWxsKQorCQkJCWJvb2wgKmlzbnVsbCwKKwkJCQlOb2RlICplc2NvbnRleHQpCiB7 CiAJRGF0dW0JCXJlczsKIAotCWlmIChpc251bGwpCisJaWYgKCppc251bGwpCiAJCXJlcyA9IChE YXR1bSkgMDsKIAllbHNlCiAJewogCQlyZXMgPSBwb3B1bGF0ZV9yZWNvcmRfZmllbGQoaW8tPmJh c2VfaW8sCiAJCQkJCQkJCQlpby0+YmFzZV90eXBpZCwgaW8tPmJhc2VfdHlwbW9kLAogCQkJCQkJ CQkJY29sbmFtZSwgbWN4dCwgUG9pbnRlckdldERhdHVtKE5VTEwpLAotCQkJCQkJCQkJanN2LCAm aXNudWxsKTsKLQkJQXNzZXJ0KCFpc251bGwpOworCQkJCQkJCQkJanN2LCBpc251bGwsIGVzY29u dGV4dCk7CisJCUFzc2VydCghKmlzbnVsbCB8fCBTT0ZUX0VSUk9SX09DQ1VSUkVEKGVzY29udGV4 dCkpOwogCX0KIAotCWRvbWFpbl9jaGVjayhyZXMsIGlzbnVsbCwgdHlwaWQsICZpby0+ZG9tYWlu X2luZm8sIG1jeHQpOworCWlmICghZG9tYWluX2NoZWNrX3NhZmUocmVzLCAqaXNudWxsLCB0eXBp ZCwgJmlvLT5kb21haW5faW5mbywgbWN4dCwKKwkJCQkJCSAgIGVzY29udGV4dCkpCisJeworCQkq aXNudWxsID0gdHJ1ZTsKKwkJcmV0dXJuIChEYXR1bSkgMDsKKwl9CiAKIAlyZXR1cm4gcmVzOwog fQpAQCAtMzE2MCw3ICszMzI2LDggQEAgcG9wdWxhdGVfcmVjb3JkX2ZpZWxkKENvbHVtbklPRGF0 YSAqY29sLAogCQkJCQkgIE1lbW9yeUNvbnRleHQgbWN4dCwKIAkJCQkJICBEYXR1bSBkZWZhdWx0 dmFsLAogCQkJCQkgIEpzVmFsdWUgKmpzdiwKLQkJCQkJICBib29sICppc251bGwpCisJCQkJCSAg Ym9vbCAqaXNudWxsLAorCQkJCQkgIE5vZGUgKmVzY29udGV4dCkKIHsKIAlUeXBlQ2F0CQl0eXBj YXQ7CiAKQEAgLTMxOTMsMTAgKzMzNjAsMTIgQEAgcG9wdWxhdGVfcmVjb3JkX2ZpZWxkKENvbHVt bklPRGF0YSAqY29sLAogCXN3aXRjaCAodHlwY2F0KQogCXsKIAkJY2FzZSBUWVBFQ0FUX1NDQUxB UjoKLQkJCXJldHVybiBwb3B1bGF0ZV9zY2FsYXIoJmNvbC0+c2NhbGFyX2lvLCB0eXBpZCwgdHlw bW9kLCBqc3YpOworCQkJcmV0dXJuIHBvcHVsYXRlX3NjYWxhcigmY29sLT5zY2FsYXJfaW8sIHR5 cGlkLCB0eXBtb2QsIGpzdiwKKwkJCQkJCQkJICAgaXNudWxsLCBlc2NvbnRleHQpOwogCiAJCWNh c2UgVFlQRUNBVF9BUlJBWToKLQkJCXJldHVybiBwb3B1bGF0ZV9hcnJheSgmY29sLT5pby5hcnJh eSwgY29sbmFtZSwgbWN4dCwganN2KTsKKwkJCXJldHVybiBwb3B1bGF0ZV9hcnJheSgmY29sLT5p by5hcnJheSwgY29sbmFtZSwgbWN4dCwganN2LAorCQkJCQkJCQkgIGlzbnVsbCwgZXNjb250ZXh0 KTsKIAogCQljYXNlIFRZUEVDQVRfQ09NUE9TSVRFOgogCQljYXNlIFRZUEVDQVRfQ09NUE9TSVRF X0RPTUFJTjoKQEAgLTMyMDUsMTEgKzMzNzQsMTIgQEAgcG9wdWxhdGVfcmVjb3JkX2ZpZWxkKENv bHVtbklPRGF0YSAqY29sLAogCQkJCQkJCQkJICBEYXR1bUdldFBvaW50ZXIoZGVmYXVsdHZhbCkK IAkJCQkJCQkJCSAgPyBEYXR1bUdldEhlYXBUdXBsZUhlYWRlcihkZWZhdWx0dmFsKQogCQkJCQkJ CQkJICA6IE5VTEwsCi0JCQkJCQkJCQkgIGpzdiwgKmlzbnVsbCk7CisJCQkJCQkJCQkgIGpzdiwg aXNudWxsLAorCQkJCQkJCQkJICBlc2NvbnRleHQpOwogCiAJCWNhc2UgVFlQRUNBVF9ET01BSU46 CiAJCQlyZXR1cm4gcG9wdWxhdGVfZG9tYWluKCZjb2wtPmlvLmRvbWFpbiwgdHlwaWQsIGNvbG5h bWUsIG1jeHQsCi0JCQkJCQkJCSAgIGpzdiwgKmlzbnVsbCk7CisJCQkJCQkJCSAgIGpzdiwgaXNu dWxsLCBlc2NvbnRleHQpOwogCiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25p emVkIHR5cGUgY2F0ZWdvcnkgJyVjJyIsIHR5cGNhdCk7CkBAIC0zMjY2LDcgKzM0MzYsOCBAQCBw b3B1bGF0ZV9yZWNvcmQoVHVwbGVEZXNjIHR1cGRlc2MsCiAJCQkJUmVjb3JkSU9EYXRhICoqcmVj b3JkX3AsCiAJCQkJSGVhcFR1cGxlSGVhZGVyIGRlZmF1bHR2YWwsCiAJCQkJTWVtb3J5Q29udGV4 dCBtY3h0LAotCQkJCUpzT2JqZWN0ICpvYmopCisJCQkJSnNPYmplY3QgKm9iaiwKKwkJCQlOb2Rl ICplc2NvbnRleHQpCiB7CiAJUmVjb3JkSU9EYXRhICpyZWNvcmQgPSAqcmVjb3JkX3A7CiAJRGF0 dW0JICAgKnZhbHVlczsKQEAgLTMzNTgsNyArMzUyOSw4IEBAIHBvcHVsYXRlX3JlY29yZChUdXBs ZURlc2MgdHVwZGVzYywKIAkJCQkJCQkJCQkgIG1jeHQsCiAJCQkJCQkJCQkJICBudWxsc1tpXSA/ IChEYXR1bSkgMCA6IHZhbHVlc1tpXSwKIAkJCQkJCQkJCQkgICZmaWVsZCwKLQkJCQkJCQkJCQkg ICZudWxsc1tpXSk7CisJCQkJCQkJCQkJICAmbnVsbHNbaV0sCisJCQkJCQkJCQkJICBlc2NvbnRl eHQpOwogCX0KIAogCXJlcyA9IGhlYXBfZm9ybV90dXBsZSh0dXBkZXNjLCB2YWx1ZXMsIG51bGxz KTsKQEAgLTM0MzksMTIgKzM2MTEsMTQgQEAgZ2V0X3JlY29yZF90eXBlX2Zyb21fcXVlcnkoRnVu Y3Rpb25DYWxsSW5mbyBmY2luZm8sCiAgKi8KIHN0YXRpYyBEYXR1bQogcG9wdWxhdGVfcmVjb3Jk X3dvcmtlcihGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgY29uc3QgY2hhciAqZnVuY25hbWUsCi0J CQkJCSAgIGJvb2wgaXNfanNvbiwgYm9vbCBoYXZlX3JlY29yZF9hcmcpCisJCQkJCSAgIGJvb2wg aXNfanNvbiwgYm9vbCBoYXZlX3JlY29yZF9hcmcsCisJCQkJCSAgIE5vZGUgKmVzY29udGV4dCkK IHsKIAlpbnQJCQlqc29uX2FyZ19udW0gPSBoYXZlX3JlY29yZF9hcmcgPyAxIDogMDsKIAlKc1Zh bHVlCQlqc3YgPSB7MH07CiAJSGVhcFR1cGxlSGVhZGVyIHJlYzsKIAlEYXR1bQkJcmV0dHVwbGU7 CisJYm9vbAkJaXNudWxsOwogCUpzb25iVmFsdWUJamJ2OwogCU1lbW9yeUNvbnRleHQgZm5tY3h0 ID0gZmNpbmZvLT5mbGluZm8tPmZuX21jeHQ7CiAJUG9wdWxhdGVSZWNvcmRDYWNoZSAqY2FjaGUg PSBmY2luZm8tPmZsaW5mby0+Zm5fZXh0cmE7CkBAIC0zNTMxLDggKzM3MDUsMTEgQEAgcG9wdWxh dGVfcmVjb3JkX3dvcmtlcihGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgY29uc3QgY2hhciAqZnVu Y25hbWUsCiAJCWpidi52YWwuYmluYXJ5LmxlbiA9IFZBUlNJWkUoamIpIC0gVkFSSERSU1o7CiAJ fQogCisJaXNudWxsID0gZmFsc2U7CiAJcmV0dHVwbGUgPSBwb3B1bGF0ZV9jb21wb3NpdGUoJmNh Y2hlLT5jLmlvLmNvbXBvc2l0ZSwgY2FjaGUtPmFyZ3R5cGUsCi0JCQkJCQkJCSAgTlVMTCwgZm5t Y3h0LCByZWMsICZqc3YsIGZhbHNlKTsKKwkJCQkJCQkJICBOVUxMLCBmbm1jeHQsIHJlYywgJmpz diwgJmlzbnVsbCwKKwkJCQkJCQkJICBlc2NvbnRleHQpOworCUFzc2VydCghaXNudWxsIHx8IFNP RlRfRVJST1JfT0NDVVJSRUQoZXNjb250ZXh0KSk7CiAKIAlQR19SRVRVUk5fREFUVU0ocmV0dHVw bGUpOwogfQpAQCAtMzU0MCwxMCArMzcxNywxMyBAQCBwb3B1bGF0ZV9yZWNvcmRfd29ya2VyKEZ1 bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBjb25zdCBjaGFyICpmdW5jbmFtZSwKIC8qCiAgKiBnZXRf anNvbl9vYmplY3RfYXNfaGFzaAogICoKLSAqIGRlY29tcG9zZSBhIGpzb24gb2JqZWN0IGludG8g YSBoYXNoIHRhYmxlLgorICogRGVjb21wb3NlcyBhIGpzb24gb2JqZWN0IGludG8gYSBoYXNoIHRh YmxlLgorICoKKyAqIFJldHVybnMgdGhlIGhhc2ggdGFibGUgaWYgdGhlIGpzb24gaXMgcGFyc2Vk IHN1Y2Nlc3NmdWxseSwgTlVMTCBvdGhlcndpc2UuCiAgKi8KIHN0YXRpYyBIVEFCICoKLWdldF9q c29uX29iamVjdF9hc19oYXNoKGNoYXIgKmpzb24sIGludCBsZW4sIGNvbnN0IGNoYXIgKmZ1bmNu YW1lKQorZ2V0X2pzb25fb2JqZWN0X2FzX2hhc2goY2hhciAqanNvbiwgaW50IGxlbiwgY29uc3Qg Y2hhciAqZnVuY25hbWUsCisJCQkJCQlOb2RlICplc2NvbnRleHQpCiB7CiAJSEFTSENUTAkJY3Rs OwogCUhUQUIJICAgKnRhYjsKQEAgLTM1NzIsNyArMzc1MiwxMSBAQCBnZXRfanNvbl9vYmplY3Rf YXNfaGFzaChjaGFyICpqc29uLCBpbnQgbGVuLCBjb25zdCBjaGFyICpmdW5jbmFtZSkKIAlzZW0t Pm9iamVjdF9maWVsZF9zdGFydCA9IGhhc2hfb2JqZWN0X2ZpZWxkX3N0YXJ0OwogCXNlbS0+b2Jq ZWN0X2ZpZWxkX2VuZCA9IGhhc2hfb2JqZWN0X2ZpZWxkX2VuZDsKIAotCXBnX3BhcnNlX2pzb25f b3JfZXJlcG9ydChzdGF0ZS0+bGV4LCBzZW0pOworCWlmICghcGdfcGFyc2VfanNvbl9vcl9lcnJz YXZlKHN0YXRlLT5sZXgsIHNlbSwgZXNjb250ZXh0KSkKKwl7CisJCWhhc2hfZGVzdHJveShzdGF0 ZS0+aGFzaCk7CisJCXRhYiA9IE5VTEw7CisJfQogCiAJZnJlZUpzb25MZXhDb250ZXh0KHN0YXRl LT5sZXgpOwogCkBAIC0zNzQzLDE0ICszOTI3LDE2IEBAIHBvcHVsYXRlX3JlY29yZHNldF9yZWNv cmQoUG9wdWxhdGVSZWNvcmRzZXRTdGF0ZSAqc3RhdGUsIEpzT2JqZWN0ICpvYmopCiAJCQkJCQkJ ICAmY2FjaGUtPmMuaW8uY29tcG9zaXRlLnJlY29yZF9pbywKIAkJCQkJCQkgIHN0YXRlLT5yZWMs CiAJCQkJCQkJICBjYWNoZS0+Zm5fbWN4dCwKLQkJCQkJCQkgIG9iaik7CisJCQkJCQkJICBvYmos CisJCQkJCQkJICBOVUxMKTsKIAogCS8qIGlmIGl0J3MgZG9tYWluIG92ZXIgY29tcG9zaXRlLCBj aGVjayBkb21haW4gY29uc3RyYWludHMgKi8KIAlpZiAoY2FjaGUtPmMudHlwY2F0ID09IFRZUEVD QVRfQ09NUE9TSVRFX0RPTUFJTikKLQkJZG9tYWluX2NoZWNrKEhlYXBUdXBsZUhlYWRlckdldERh dHVtKHR1cGhlYWQpLCBmYWxzZSwKLQkJCQkJIGNhY2hlLT5hcmd0eXBlLAotCQkJCQkgJmNhY2hl LT5jLmlvLmNvbXBvc2l0ZS5kb21haW5faW5mbywKLQkJCQkJIGNhY2hlLT5mbl9tY3h0KTsKKwkJ KHZvaWQpIGRvbWFpbl9jaGVja19zYWZlKEhlYXBUdXBsZUhlYWRlckdldERhdHVtKHR1cGhlYWQp LCBmYWxzZSwKKwkJCQkJCQkJIGNhY2hlLT5hcmd0eXBlLAorCQkJCQkJCQkgJmNhY2hlLT5jLmlv LmNvbXBvc2l0ZS5kb21haW5faW5mbywKKwkJCQkJCQkJIGNhY2hlLT5mbl9tY3h0LAorCQkJCQkJ CQkgTlVMTCk7CiAKIAkvKiBvaywgc2F2ZSBpbnRvIHR1cGxlc3RvcmUgKi8KIAl0dXBsZS50X2xl biA9IEhlYXBUdXBsZUhlYWRlckdldERhdHVtTGVuZ3RoKHR1cGhlYWQpOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQKaW5kZXggYWQ3NGUwN2RiYi4uZTQxMTVjZDA4NCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0CkBAIC0xMDAzMiw2ICsxMDAzMiwxMCBAQAogICBwcm9uYW1lID0+ICdqc29uYl9wb3B1 bGF0ZV9yZWNvcmQnLCBwcm9pc3N0cmljdCA9PiAnZicsIHByb3ZvbGF0aWxlID0+ICdzJywKICAg cHJvcmV0dHlwZSA9PiAnYW55ZWxlbWVudCcsIHByb2FyZ3R5cGVzID0+ICdhbnllbGVtZW50IGpz b25iJywKICAgcHJvc3JjID0+ICdqc29uYl9wb3B1bGF0ZV9yZWNvcmQnIH0sCit7IG9pZCA9PiAn OTU1OCcsIGRlc2NyID0+ICd0ZXN0IGdldCByZWNvcmQgZmllbGRzIGZyb20gYSBqc29uYiBvYmpl Y3QnLAorICBwcm9uYW1lID0+ICdqc29uYl9wb3B1bGF0ZV9yZWNvcmRfdmFsaWQnLCBwcm9pc3N0 cmljdCA9PiAnZicsIHByb3ZvbGF0aWxlID0+ICdzJywKKyAgcHJvcmV0dHlwZSA9PiAnYm9vbCcs IHByb2FyZ3R5cGVzID0+ICdhbnllbGVtZW50IGpzb25iJywKKyAgcHJvc3JjID0+ICdqc29uYl9w b3B1bGF0ZV9yZWNvcmRfdmFsaWQnIH0sCiB7IG9pZCA9PiAnMzQ3NScsCiAgIGRlc2NyID0+ICdn ZXQgc2V0IG9mIHJlY29yZHMgd2l0aCBmaWVsZHMgZnJvbSBhIGpzb25iIGFycmF5IG9mIG9iamVj dHMnLAogICBwcm9uYW1lID0+ICdqc29uYl9wb3B1bGF0ZV9yZWNvcmRzZXQnLCBwcm9yb3dzID0+ ICcxMDAnLCBwcm9pc3N0cmljdCA9PiAnZicsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGls cy9idWlsdGlucy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRpbnMuaAppbmRleCBmMmViYmM1 NjI1Li4zNTljNTcwZjIzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9idWlsdGlucy5o CisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2J1aWx0aW5zLmgKQEAgLTI4LDYgKzI4LDkgQEAgZXh0 ZXJuIGJvb2wgcGFyc2VfYm9vbF93aXRoX2xlbihjb25zdCBjaGFyICp2YWx1ZSwgc2l6ZV90IGxl biwgYm9vbCAqcmVzdWx0KTsKIC8qIGRvbWFpbnMuYyAqLwogZXh0ZXJuIHZvaWQgZG9tYWluX2No ZWNrKERhdHVtIHZhbHVlLCBib29sIGlzbnVsbCwgT2lkIGRvbWFpblR5cGUsCiAJCQkJCQkgdm9p ZCAqKmV4dHJhLCBNZW1vcnlDb250ZXh0IG1jeHQpOworZXh0ZXJuIGJvb2wgZG9tYWluX2NoZWNr X3NhZmUoRGF0dW0gdmFsdWUsIGJvb2wgaXNudWxsLCBPaWQgZG9tYWluVHlwZSwKKwkJCQkJCQkg IHZvaWQgKipleHRyYSwgTWVtb3J5Q29udGV4dCBtY3h0LAorCQkJCQkJCSAgTm9kZSAqZXNjb250 ZXh0KTsKIGV4dGVybiBpbnQJZXJyZGF0YXR5cGUoT2lkIGRhdGF0eXBlT2lkKTsKIGV4dGVybiBp bnQJZXJyZG9tYWluY29uc3RyYWludChPaWQgZGF0YXR5cGVPaWQsIGNvbnN0IGNoYXIgKmNvbm5h bWUpOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CmluZGV4IGI1OTdkMDFhNTUuLjY2 YmVlNTE2MmIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CkBAIC0yNTA1LDYgKzI1 MDUsMTIxIEBAIFNFTEVDVCByZWMgRlJPTSBqc29uYl9wb3B1bGF0ZV9yZWNvcmQoCiAgKGFiYywz LCJUaHUgSmFuIDAyIDAwOjAwOjAwIDIwMDMiKQogKDEgcm93KQogCistLSBUZXN0cyB0byBjaGVj ayBzb2Z0LWVycm9yIHN1cHBvcnQgZm9yIHBvcHVsYXRlX3JlY29yZF9maWVsZCgpCistLSBwb3B1 bGF0ZV9zY2FsYXIoKQorY3JlYXRlIHR5cGUganNiX2NoYXIyIGFzIChhIGNoYXIoMikpOworc2Vs ZWN0IGpzb25iX3BvcHVsYXRlX3JlY29yZF92YWxpZChOVUxMOjpqc2JfY2hhcjIsICd7ImEiOiAi YWFhIn0nKTsKKyBqc29uYl9wb3B1bGF0ZV9yZWNvcmRfdmFsaWQgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworc2VsZWN0ICogZnJvbSBqc29uYl9wb3B1bGF0 ZV9yZWNvcmQoTlVMTDo6anNiX2NoYXIyLCAneyJhIjogImFhYSJ9JykgcTsKK0VSUk9SOiAgdmFs dWUgdG9vIGxvbmcgZm9yIHR5cGUgY2hhcmFjdGVyKDIpCitzZWxlY3QganNvbmJfcG9wdWxhdGVf cmVjb3JkX3ZhbGlkKE5VTEw6OmpzYl9jaGFyMiwgJ3siYSI6ICJhYSJ9Jyk7CisganNvbmJfcG9w dWxhdGVfcmVjb3JkX3ZhbGlkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0Ciso MSByb3cpCisKK3NlbGVjdCAqIGZyb20ganNvbmJfcG9wdWxhdGVfcmVjb3JkKE5VTEw6OmpzYl9j aGFyMiwgJ3siYSI6ICJhYSJ9JykgcTsKKyBhICAKKy0tLS0KKyBhYQorKDEgcm93KQorCistLSBw b3B1bGF0ZV9hcnJheSgpCitjcmVhdGUgdHlwZSBqc2JfaWEgYXMgKGEgaW50W10pOworY3JlYXRl IHR5cGUganNiX2lhMiBhcyAoYSBpbnRbXVtdKTsKK3NlbGVjdCBqc29uYl9wb3B1bGF0ZV9yZWNv cmRfdmFsaWQoTlVMTDo6anNiX2lhLCAneyJhIjogNDMuMn0nKTsKKyBqc29uYl9wb3B1bGF0ZV9y ZWNvcmRfdmFsaWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykK Kworc2VsZWN0ICogZnJvbSBqc29uYl9wb3B1bGF0ZV9yZWNvcmQoTlVMTDo6anNiX2lhLCAneyJh IjogNDMuMn0nKSBxOworRVJST1I6ICBleHBlY3RlZCBKU09OIGFycmF5CitISU5UOiAgU2VlIHRo ZSB2YWx1ZSBvZiBrZXkgImEiLgorc2VsZWN0IGpzb25iX3BvcHVsYXRlX3JlY29yZF92YWxpZChO VUxMOjpqc2JfaWEsICd7ImEiOiBbMSwgMl19Jyk7CisganNvbmJfcG9wdWxhdGVfcmVjb3JkX3Zh bGlkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK3NlbGVj dCAqIGZyb20ganNvbmJfcG9wdWxhdGVfcmVjb3JkKE5VTEw6OmpzYl9pYSwgJ3siYSI6IFsxLCAy XX0nKSBxOworICAgYSAgIAorLS0tLS0tLQorIHsxLDJ9CisoMSByb3cpCisKK3NlbGVjdCBqc29u Yl9wb3B1bGF0ZV9yZWNvcmRfdmFsaWQoTlVMTDo6anNiX2lhMiwgJ3siYSI6IFtbMV0sIFsyLCAz XV19Jyk7CisganNvbmJfcG9wdWxhdGVfcmVjb3JkX3ZhbGlkIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK3NlbGVjdCAqIGZyb20ganNvbmJfcG9wdWxhdGVf cmVjb3JkKE5VTEw6OmpzYl9pYTIsICd7ImEiOiBbWzFdLCBbMiwgM11dfScpIHE7CitFUlJPUjog IG1hbGZvcm1lZCBKU09OIGFycmF5CitERVRBSUw6ICBNdWx0aWRpbWVuc2lvbmFsIGFycmF5cyBt dXN0IGhhdmUgc3ViLWFycmF5cyB3aXRoIG1hdGNoaW5nIGRpbWVuc2lvbnMuCitzZWxlY3QganNv bmJfcG9wdWxhdGVfcmVjb3JkX3ZhbGlkKE5VTEw6OmpzYl9pYTIsICd7ImEiOiBbWzEsIDBdLCBb MiwgM11dfScpOworIGpzb25iX3BvcHVsYXRlX3JlY29yZF92YWxpZCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitzZWxlY3QgKiBmcm9tIGpzb25iX3BvcHVs YXRlX3JlY29yZChOVUxMOjpqc2JfaWEyLCAneyJhIjogW1sxLCAwXSwgWzIsIDNdXX0nKSBxOwor ICAgICAgIGEgICAgICAgCistLS0tLS0tLS0tLS0tLS0KKyB7ezEsMH0sezIsM319CisoMSByb3cp CisKKy0tIHBvcHVsYXRlX2RvbWFpbigpCitjcmVhdGUgZG9tYWluIGpzYl9pX25vdF9udWxsIGFz IGludCBub3QgbnVsbDsKK2NyZWF0ZSBkb21haW4ganNiX2lfZ3RfMSBhcyBpbnQgY2hlY2sgKHZh bHVlID4gMSk7CitjcmVhdGUgdHlwZSBqc2JfaV9ub3RfbnVsbF9yZWMgYXMgKGEganNiX2lfbm90 X251bGwpOworY3JlYXRlIHR5cGUganNiX2lfZ3RfMV9yZWMgYXMgKGEganNiX2lfZ3RfMSk7Citz ZWxlY3QganNvbmJfcG9wdWxhdGVfcmVjb3JkX3ZhbGlkKE5VTEw6OmpzYl9pX25vdF9udWxsX3Jl YywgJ3siYSI6IG51bGx9Jyk7CisganNvbmJfcG9wdWxhdGVfcmVjb3JkX3ZhbGlkIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK3NlbGVjdCAqIGZyb20ganNv bmJfcG9wdWxhdGVfcmVjb3JkKE5VTEw6OmpzYl9pX25vdF9udWxsX3JlYywgJ3siYSI6IG51bGx9 JykgcTsKK0VSUk9SOiAgZG9tYWluIGpzYl9pX25vdF9udWxsIGRvZXMgbm90IGFsbG93IG51bGwg dmFsdWVzCitzZWxlY3QganNvbmJfcG9wdWxhdGVfcmVjb3JkX3ZhbGlkKE5VTEw6OmpzYl9pX25v dF9udWxsX3JlYywgJ3siYSI6IDF9Jyk7CisganNvbmJfcG9wdWxhdGVfcmVjb3JkX3ZhbGlkIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK3NlbGVjdCAqIGZy b20ganNvbmJfcG9wdWxhdGVfcmVjb3JkKE5VTEw6OmpzYl9pX25vdF9udWxsX3JlYywgJ3siYSI6 IDF9JykgcTsKKyBhIAorLS0tCisgMQorKDEgcm93KQorCitzZWxlY3QganNvbmJfcG9wdWxhdGVf cmVjb3JkX3ZhbGlkKE5VTEw6OmpzYl9pX2d0XzFfcmVjLCAneyJhIjogMX0nKTsKKyBqc29uYl9w b3B1bGF0ZV9yZWNvcmRfdmFsaWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYK KygxIHJvdykKKworc2VsZWN0ICogZnJvbSBqc29uYl9wb3B1bGF0ZV9yZWNvcmQoTlVMTDo6anNi X2lfZ3RfMV9yZWMsICd7ImEiOiAxfScpIHE7CitFUlJPUjogIHZhbHVlIGZvciBkb21haW4ganNi X2lfZ3RfMSB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJqc2JfaV9ndF8xX2NoZWNrIgorc2Vs ZWN0IGpzb25iX3BvcHVsYXRlX3JlY29yZF92YWxpZChOVUxMOjpqc2JfaV9ndF8xX3JlYywgJ3si YSI6IDJ9Jyk7CisganNvbmJfcG9wdWxhdGVfcmVjb3JkX3ZhbGlkIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK3NlbGVjdCAqIGZyb20ganNvbmJfcG9wdWxh dGVfcmVjb3JkKE5VTEw6OmpzYl9pX2d0XzFfcmVjLCAneyJhIjogMn0nKSBxOworIGEgCistLS0K KyAyCisoMSByb3cpCisKK2Ryb3AgdHlwZSBqc2JfaWEsIGpzYl9pYTIsIGpzYl9jaGFyMiwganNi X2lfbm90X251bGxfcmVjLCBqc2JfaV9ndF8xX3JlYzsKK2Ryb3AgZG9tYWluIGpzYl9pX25vdF9u dWxsLCBqc2JfaV9ndF8xOwogLS0gYW5vbnltb3VzIHJlY29yZCB0eXBlCiBTRUxFQ1QganNvbmJf cG9wdWxhdGVfcmVjb3JkKG51bGw6OnJlY29yZCwgJ3sieCI6IDAsICJ5IjogMX0nKTsKIEVSUk9S OiAgY291bGQgbm90IGRldGVybWluZSByb3cgdHlwZSBmb3IgcmVzdWx0IG9mIGpzb25iX3BvcHVs YXRlX3JlY29yZApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsCmluZGV4IDZkYWU3MTVhZmQuLjk3YmMyMjQy YTEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKQEAgLTY3OSw2ICs2NzksNDMgQEAgU0VMRUNUIHJl YyBGUk9NIGpzb25iX3BvcHVsYXRlX3JlY29yZCgKIAkneyJyZWMiOiB7ImEiOiAiYWJjIiwgImMi OiAiMDEuMDIuMjAwMyIsICJ4IjogNDMuMn19JwogKSBxOwogCistLSBUZXN0cyB0byBjaGVjayBz b2Z0LWVycm9yIHN1cHBvcnQgZm9yIHBvcHVsYXRlX3JlY29yZF9maWVsZCgpCisKKy0tIHBvcHVs YXRlX3NjYWxhcigpCitjcmVhdGUgdHlwZSBqc2JfY2hhcjIgYXMgKGEgY2hhcigyKSk7CitzZWxl Y3QganNvbmJfcG9wdWxhdGVfcmVjb3JkX3ZhbGlkKE5VTEw6OmpzYl9jaGFyMiwgJ3siYSI6ICJh YWEifScpOworc2VsZWN0ICogZnJvbSBqc29uYl9wb3B1bGF0ZV9yZWNvcmQoTlVMTDo6anNiX2No YXIyLCAneyJhIjogImFhYSJ9JykgcTsKK3NlbGVjdCBqc29uYl9wb3B1bGF0ZV9yZWNvcmRfdmFs aWQoTlVMTDo6anNiX2NoYXIyLCAneyJhIjogImFhIn0nKTsKK3NlbGVjdCAqIGZyb20ganNvbmJf cG9wdWxhdGVfcmVjb3JkKE5VTEw6OmpzYl9jaGFyMiwgJ3siYSI6ICJhYSJ9JykgcTsKKworLS0g cG9wdWxhdGVfYXJyYXkoKQorY3JlYXRlIHR5cGUganNiX2lhIGFzIChhIGludFtdKTsKK2NyZWF0 ZSB0eXBlIGpzYl9pYTIgYXMgKGEgaW50W11bXSk7CitzZWxlY3QganNvbmJfcG9wdWxhdGVfcmVj b3JkX3ZhbGlkKE5VTEw6OmpzYl9pYSwgJ3siYSI6IDQzLjJ9Jyk7CitzZWxlY3QgKiBmcm9tIGpz b25iX3BvcHVsYXRlX3JlY29yZChOVUxMOjpqc2JfaWEsICd7ImEiOiA0My4yfScpIHE7CitzZWxl Y3QganNvbmJfcG9wdWxhdGVfcmVjb3JkX3ZhbGlkKE5VTEw6OmpzYl9pYSwgJ3siYSI6IFsxLCAy XX0nKTsKK3NlbGVjdCAqIGZyb20ganNvbmJfcG9wdWxhdGVfcmVjb3JkKE5VTEw6OmpzYl9pYSwg J3siYSI6IFsxLCAyXX0nKSBxOworc2VsZWN0IGpzb25iX3BvcHVsYXRlX3JlY29yZF92YWxpZChO VUxMOjpqc2JfaWEyLCAneyJhIjogW1sxXSwgWzIsIDNdXX0nKTsKK3NlbGVjdCAqIGZyb20ganNv bmJfcG9wdWxhdGVfcmVjb3JkKE5VTEw6OmpzYl9pYTIsICd7ImEiOiBbWzFdLCBbMiwgM11dfScp IHE7CitzZWxlY3QganNvbmJfcG9wdWxhdGVfcmVjb3JkX3ZhbGlkKE5VTEw6OmpzYl9pYTIsICd7 ImEiOiBbWzEsIDBdLCBbMiwgM11dfScpOworc2VsZWN0ICogZnJvbSBqc29uYl9wb3B1bGF0ZV9y ZWNvcmQoTlVMTDo6anNiX2lhMiwgJ3siYSI6IFtbMSwgMF0sIFsyLCAzXV19JykgcTsKKworLS0g cG9wdWxhdGVfZG9tYWluKCkKK2NyZWF0ZSBkb21haW4ganNiX2lfbm90X251bGwgYXMgaW50IG5v dCBudWxsOworY3JlYXRlIGRvbWFpbiBqc2JfaV9ndF8xIGFzIGludCBjaGVjayAodmFsdWUgPiAx KTsKK2NyZWF0ZSB0eXBlIGpzYl9pX25vdF9udWxsX3JlYyBhcyAoYSBqc2JfaV9ub3RfbnVsbCk7 CitjcmVhdGUgdHlwZSBqc2JfaV9ndF8xX3JlYyBhcyAoYSBqc2JfaV9ndF8xKTsKK3NlbGVjdCBq c29uYl9wb3B1bGF0ZV9yZWNvcmRfdmFsaWQoTlVMTDo6anNiX2lfbm90X251bGxfcmVjLCAneyJh IjogbnVsbH0nKTsKK3NlbGVjdCAqIGZyb20ganNvbmJfcG9wdWxhdGVfcmVjb3JkKE5VTEw6Ompz Yl9pX25vdF9udWxsX3JlYywgJ3siYSI6IG51bGx9JykgcTsKK3NlbGVjdCBqc29uYl9wb3B1bGF0 ZV9yZWNvcmRfdmFsaWQoTlVMTDo6anNiX2lfbm90X251bGxfcmVjLCAneyJhIjogMX0nKTsKK3Nl bGVjdCAqIGZyb20ganNvbmJfcG9wdWxhdGVfcmVjb3JkKE5VTEw6OmpzYl9pX25vdF9udWxsX3Jl YywgJ3siYSI6IDF9JykgcTsKK3NlbGVjdCBqc29uYl9wb3B1bGF0ZV9yZWNvcmRfdmFsaWQoTlVM TDo6anNiX2lfZ3RfMV9yZWMsICd7ImEiOiAxfScpOworc2VsZWN0ICogZnJvbSBqc29uYl9wb3B1 bGF0ZV9yZWNvcmQoTlVMTDo6anNiX2lfZ3RfMV9yZWMsICd7ImEiOiAxfScpIHE7CitzZWxlY3Qg anNvbmJfcG9wdWxhdGVfcmVjb3JkX3ZhbGlkKE5VTEw6OmpzYl9pX2d0XzFfcmVjLCAneyJhIjog Mn0nKTsKK3NlbGVjdCAqIGZyb20ganNvbmJfcG9wdWxhdGVfcmVjb3JkKE5VTEw6OmpzYl9pX2d0 XzFfcmVjLCAneyJhIjogMn0nKSBxOworZHJvcCB0eXBlIGpzYl9pYSwganNiX2lhMiwganNiX2No YXIyLCBqc2JfaV9ub3RfbnVsbF9yZWMsIGpzYl9pX2d0XzFfcmVjOworZHJvcCBkb21haW4ganNi X2lfbm90X251bGwsIGpzYl9pX2d0XzE7CisKIC0tIGFub255bW91cyByZWNvcmQgdHlwZQogU0VM RUNUIGpzb25iX3BvcHVsYXRlX3JlY29yZChudWxsOjpyZWNvcmQsICd7IngiOiAwLCAieSI6IDF9 Jyk7CiBTRUxFQ1QganNvbmJfcG9wdWxhdGVfcmVjb3JkKHJvdygxLDIpLCAneyJmMSI6IDAsICJm MiI6IDF9Jyk7Ci0tIAoyLjM1LjMKCg== --00000000000015508a060f9d2c00--