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 1ri89B-00FJRN-DE for pgsql-hackers@arkaria.postgresql.org; Thu, 07 Mar 2024 07:26: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 1ri899-002W1w-T2 for pgsql-hackers@arkaria.postgresql.org; Thu, 07 Mar 2024 07:26:32 +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 1ri899-002W08-4B for pgsql-hackers@lists.postgresql.org; Thu, 07 Mar 2024 07:26:31 +0000 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1ri895-003DvT-9d for pgsql-hackers@postgresql.org; Thu, 07 Mar 2024 07:26:30 +0000 Received: by mail-pj1-x1029.google.com with SMTP id 98e67ed59e1d1-29a940614easo341545a91.3 for ; Wed, 06 Mar 2024 23:26:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709796385; x=1710401185; 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=AcKxcBkwK0BILdw0CeJDbH1MaFY+In8pZz0Nj8lqH8Y=; b=AK8Yv85j8+F09FW07kBIwVZ0C7IzngtyB7MOUuJF5v4575VoRKwYFg2NqQ3RrJlniY 6dpE6bYagRPXAdvjwv839vsJQw0sPmUGx0gj5+nRWy0XOhMexiwAe16LUb25cpeVFIoj VVNcaS6bS/hhHNLzTEne1+nKxBs+aIUKLzHpDwgreFokBWtty3tqRiVxZNgBiroIMTzc Kq7wQAM7GXql4xdZtFD1EnZft+6g/BJW/4ZzTRLge2pUoESCfU/L+E5/Y1Y7RSYaZkPY 64LFUVLgPXmLnJ68bgOlLHpQ/Z3AGbEdT73i+OCErLUGtLV0iEDBmEqS2iePuzA/GkWp uaxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709796385; x=1710401185; 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=AcKxcBkwK0BILdw0CeJDbH1MaFY+In8pZz0Nj8lqH8Y=; b=QwRxym8xV+hoLp/8T++Gh5WrjPz4bhJ83gKlpnLWBYsCgMrvK/Tf2xV7kBfCiMHQuj 8c0ruM/zpdeltkwozNKSgT1K8vE1lPa7XtZwvMq6Hri9+MWsuIoxHWFsMIjRYZhrIqtE qmGI58ScuwD+Da5xJwRyyMShOvWCqGCRo/cXjE70J975uylWzdn0QNr7UJFrcIYTc+yT ACoIdMS+fI4SpcOMyNFpqyD8NUufSMCM41SUMJzMxTNJKmeFaGca9QfIU6xrPYMT7mVG 6LqWMN9l9zlgiciVVPoYHygkLPInESE226xbk8wQqEUmkN19CAlxh6rZhq9tudLWazNJ Kb8A== X-Forwarded-Encrypted: i=1; AJvYcCUTSV8lClxRdkKrD1GSOzJlmmSj4MiT1ot5EE7O2GhBVBD9HonGbUIQDM9pf+r6dbuOD9KkpvvKM3R6XLmnJaZ7HcRiLHTf3m7d9UU9 X-Gm-Message-State: AOJu0YykoIKG5ZL7lFKqVLLSa3Q0zxH3BUfrqYMK3SYEFZd9CdcIZ3zI 9SxFH0z9QJumaxMIlr6IuuQFkzr8zwxptU5LBul5yV6LqotK+ab0mf8MEEx1w45HPmzx8ddKNmU ncO3w7nmBKxEctEmDwih3zVEaJ4o= X-Google-Smtp-Source: AGHT+IE4qfpoclZonwPyFbRT7hYg59wyK3rEiWPkQCbarTWWJl6nJKk1L8FBP9zfqE9kaMBzxqNlQ2sfLo7Xv6RvjXQ= X-Received: by 2002:a17:90a:4402:b0:29a:a378:ce88 with SMTP id s2-20020a17090a440200b0029aa378ce88mr13187892pjg.27.1709796385124; Wed, 06 Mar 2024 23:26:25 -0800 (PST) MIME-Version: 1.0 References: <1cee81f3-312f-30e3-0282-c4df7ee72f93@xs4all.nl> <202403041503.5momp6knupgo@alvherre.pgsql> <1e0e5800-965e-42ed-8caa-362294604243@enterprisedb.com> In-Reply-To: From: Amit Langote Date: Thu, 7 Mar 2024 16:26:08 +0900 Message-ID: Subject: Re: remaining sql/json patches To: Tomas Vondra Cc: Alvaro Herrera , Erik Rijkers , jian he , Andres Freund , Andrew Dunstan , PostgreSQL-development Content-Type: multipart/mixed; boundary="0000000000002cbba206130cfe1d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002cbba206130cfe1d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Mar 6, 2024 at 1:07=E2=80=AFPM Amit Langote wrote: > Hi Tomas, > > On Wed, Mar 6, 2024 at 6:30=E2=80=AFAM Tomas Vondra > wrote: > > I'd say 2.5GB in ExecutorState seems a bit excessive ... Seems there's > > some memory management issue? My guess is we're not releasing memory > > allocated while parsing the JSON or building JSON output. > > > > I'm not attaching the data, but I can provide that if needed - it's > > about 600MB compressed. The structure is not particularly complex, it's > > movie info from [1] combined into a JSON document (one per movie). > > Thanks for the report. > > Yeah, I'd like to see the data to try to drill down into what's piling > up in ExecutorState. I want to be sure of if the 1st, query functions > patch, is not implicated in this, because I'd like to get that one out > of the way sooner than later. I tracked this memory-hogging down to a bug in the query functions patch (0001) after all. The problem was with a query-lifetime cache variable that was never set to point to the allocated memory. So a struct was allocated and then not freed for every row where it should have only been allocated once. I've fixed that bug in the attached. I've also addressed some of Jian's comments and made quite a few cleanups of my own. Now I'll go look if Himanshu's concerns are a blocker for committing 0001. = ;) -- Thanks, Amit Langote --0000000000002cbba206130cfe1d Content-Type: application/octet-stream; name="v42-0002-Show-function-name-in-TableFuncScan.patch" Content-Disposition: attachment; filename="v42-0002-Show-function-name-in-TableFuncScan.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ltgwlw901 RnJvbSA1YTUyMGQyMDZkYzQ5NzQ3YjZhM2EwOTkzNTk4MDQ3OTE2YmU2ZDFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbHZhcm8gSGVycmVyYSA8YWx2aGVycmVAYWx2aC5uby1pcC5v cmc+CkRhdGU6IFR1ZSwgMjMgSmFuIDIwMjQgMTI6MTE6NDYgKzA5MDAKU3ViamVjdDogW1BBVENI IHY0MiAyLzNdIFNob3cgZnVuY3Rpb24gbmFtZSBpbiBUYWJsZUZ1bmNTY2FuCgpQcmV2aW91c2x5 IHdlIHdlcmUgb25seSBzaG93aW5nIHRoZSB1c2VyLXNwZWNpZmllZCBhbGlhcywgYnV0IHRoaXMg aXMKY2xlYXJseSBub3QgdGhlIGNvZGUncyBpbnRlbnQuCgpEaXNjdXNzaW9uOiBodHRwczovL3Bv c3Rnci5lcy9tLzIwMjQwMTE4MTcxMS5xeGp4cG5sM29obnclNDBhbHZoZXJyZS5wZ3NxbAotLS0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5k L25vZGVzL291dGZ1bmNzLmMgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1 bmNzLmMgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYyB8 ICA0ICsrLS0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgIHwgIDEgKwogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWwub3V0ICAgfCAxNiArKysrKysrKy0tLS0tLS0tCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3htbF8xLm91dCB8IDE2ICsrKysrKysrLS0tLS0tLS0K IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQveG1sXzIub3V0IHwgMTYgKysrKysrKystLS0tLS0t LQogOCBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9leHBsYWluLmMKaW5kZXggNzg3NTRiYzZiYS4uOGIyOWIyNGQ1NSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2V4cGxhaW4uYwpAQCAtMzk5MSw3ICszOTkxLDcgQEAgRXhwbGFpblRhcmdldFJlbChQbGFu ICpwbGFuLCBJbmRleCBydGksIEV4cGxhaW5TdGF0ZSAqZXMpCiAJCQlicmVhazsKIAkJY2FzZSBU X1RhYmxlRnVuY1NjYW46CiAJCQlBc3NlcnQocnRlLT5ydGVraW5kID09IFJURV9UQUJMRUZVTkMp OwotCQkJb2JqZWN0bmFtZSA9ICJ4bWx0YWJsZSI7CisJCQlvYmplY3RuYW1lID0gcnRlLT50YWJs ZWZ1bmNfbmFtZTsKIAkJCW9iamVjdHRhZyA9ICJUYWJsZSBGdW5jdGlvbiBOYW1lIjsKIAkJCWJy ZWFrOwogCQljYXNlIFRfVmFsdWVzU2NhbjoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVz L291dGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCmluZGV4IGVmNWM1OGFk MTAuLjMzZTE0YmM4N2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMK KysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwpAQCAtNTMxLDYgKzUzMSw3IEBAIF9v dXRSYW5nZVRibEVudHJ5KFN0cmluZ0luZm8gc3RyLCBjb25zdCBSYW5nZVRibEVudHJ5ICpub2Rl KQogCQkJYnJlYWs7CiAJCWNhc2UgUlRFX1RBQkxFRlVOQzoKIAkJCVdSSVRFX05PREVfRklFTEQo dGFibGVmdW5jKTsKKwkJCVdSSVRFX1NUUklOR19GSUVMRCh0YWJsZWZ1bmNfbmFtZSk7CiAJCQli cmVhazsKIAkJY2FzZSBSVEVfVkFMVUVTOgogCQkJV1JJVEVfTk9ERV9GSUVMRCh2YWx1ZXNfbGlz dHMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgYi9zcmMvYmFj a2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwppbmRleCA3MGFmNTEzNjE0Li43NTNmY2UxMmM3IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9u b2Rlcy9yZWFkZnVuY3MuYwpAQCAtMzg1LDYgKzM4NSw3IEBAIF9yZWFkUmFuZ2VUYmxFbnRyeSh2 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 L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCA2NWQ0MDIxODU1Li5jOTJkNGIy MjY1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0xMTUyLDYgKzExNTIsNyBAQCB0eXBlZGVm 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 cjogKCJ4bWx0YWJsZSIucmVnaW9uX2lkID0gMikKLS0gCjIuNDMuMAoK --0000000000002cbba206130cfe1d Content-Type: application/octet-stream; name="v42-0003-JSON_TABLE.patch" Content-Disposition: attachment; filename="v42-0003-JSON_TABLE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ltgwlw912 RnJvbSBkODBiMGE0MjE1ZTFhNTYyY2YwNTRhZTQzNmQwOTQ4ODY4Njk5NzY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMTggSmFuIDIwMjQgMTg6MDA6MDYgKzA5MDAKU3ViamVjdDogW1BBVENIIHY0 MiAzLzNdIEpTT05fVEFCTEUKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3Bs 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 YmxlLmMgICAgICAgICAgfCAgNzE4ICsrKysrKysrKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X3JlbGF0aW9uLmMgICAgICAgICAgIHwgICAgOCArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X3RhcmdldC5jICAgICAgICAgICAgIHwgICAgMyArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNv bnBhdGhfZXhlYy5jICAgICAgICAgfCAgNTQ3ICsrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8ICAyNzkgKysrLQogc3JjL2luY2x1ZGUvbm9kZXMv ZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9t YWtlZnVuY3MuaCAgICAgICAgICAgICAgICAgfCAgICA5ICsKIHNyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAxMDkgKysKIHNyYy9pbmNsdWRlL25vZGVzL3By aW1ub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgNjAgKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9r d2xpc3QuaCAgICAgICAgICAgICAgICAgICB8ICAgIDQgKwogc3JjL2luY2x1ZGUvcGFyc2VyL3Bh cnNlX2NsYXVzZS5oICAgICAgICAgICAgIHwgICAgMyArCiBzcmMvaW5jbHVkZS91dGlscy9qc29u cGF0aC5oICAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVz dC9lY3BnX3NjaGVkdWxlICAgICAgICB8ICAgIDEgKwogLi4uL3Rlc3QvZXhwZWN0ZWQvc3FsLXNx bGpzb25fanNvbnRhYmxlLmMgICAgIHwgIDEzMiArKwogLi4uL2V4cGVjdGVkL3NxbC1zcWxqc29u X2pzb250YWJsZS5zdGRlcnIgICAgIHwgICAyMCArCiAuLi4vZXhwZWN0ZWQvc3FsLXNxbGpzb25f anNvbnRhYmxlLnN0ZG91dCAgICAgfCAgICAwCiBzcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3Fs L01ha2VmaWxlICAgICAgICAgfCAgICAxICsKIHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwv bWVzb24uYnVpbGQgICAgICB8ICAgIDEgKwogLi4uL2VjcGcvdGVzdC9zcWwvc3FsanNvbl9qc29u dGFibGUucGdjICAgICAgIHwgICAzMiArCiAuLi4vcmVncmVzcy9leHBlY3RlZC9zcWxqc29uX2pz b250YWJsZS5vdXQgICAgfCAxMzMzICsrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNz L3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgICAyICstCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9zcWxqc29uX2pzb250YWJsZS5zcWwgICAgfCAgNzI5ICsrKysrKysrKwogc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAxNiArCiAzNCBmaWxlcyBj aGFuZ2VkLCA1MDI4IGluc2VydGlvbnMoKyksIDQ3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9qc29udGFibGUuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbl9qc29u dGFibGUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBl Y3RlZC9zcWwtc3FsanNvbl9qc29udGFibGUuc3RkZXJyCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uX2pzb250YWJsZS5zdGRv dXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL3NxbGpz b25fanNvbnRhYmxlLnBnYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc3FsanNvbl9qc29udGFibGUub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv cmVncmVzcy9zcWwvc3FsanNvbl9qc29udGFibGUuc3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL2Z1bmMuc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKaW5kZXggODBlNTYyYzQwYy4u M2U1OGViZDJhOCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvZnVuYy5zZ21sCkBAIC0xODgxMCw2ICsxODgxMCw1MTYgQEAgREVUQUlMOiAgTWlz c2luZyAiXSIgYWZ0ZXIgYXJyYXkgZGltZW5zaW9ucy4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxl PgogICA8L3NlY3QyPgorCisgPHNlY3QyIGlkPSJmdW5jdGlvbnMtc3FsanNvbi10YWJsZSI+Cisg IDx0aXRsZT5KU09OX1RBQkxFPC90aXRsZT4KKyAgPGluZGV4dGVybT4KKyAgIDxwcmltYXJ5Pmpz b25fdGFibGU8L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAgPGZ1bmN0 aW9uPmpzb25fdGFibGU8L2Z1bmN0aW9uPiBpcyBhbiBTUUwvSlNPTiBmdW5jdGlvbiB3aGljaAor ICAgcXVlcmllcyA8YWNyb255bT5KU09OPC9hY3JvbnltPiBkYXRhCisgICBhbmQgcHJlc2VudHMg dGhlIHJlc3VsdHMgYXMgYSByZWxhdGlvbmFsIHZpZXcsIHdoaWNoIGNhbiBiZSBhY2Nlc3NlZCBh cyBhCisgICByZWd1bGFyIFNRTCB0YWJsZS4gWW91IGNhbiBvbmx5IHVzZSA8ZnVuY3Rpb24+anNv bl90YWJsZTwvZnVuY3Rpb24+IGluc2lkZSB0aGUKKyAgIDxsaXRlcmFsPkZST008L2xpdGVyYWw+ IGNsYXVzZSBvZiBhIDxsaXRlcmFsPlNFTEVDVDwvbGl0ZXJhbD4gc3RhdGVtZW50LgorICA8L3Bh cmE+CisKKyAgPHBhcmE+CisgICBUYWtpbmcgSlNPTiBkYXRhIGFzIGlucHV0LCA8ZnVuY3Rpb24+ anNvbl90YWJsZTwvZnVuY3Rpb24+IHVzZXMKKyAgIGEgcGF0aCBleHByZXNzaW9uIHRvIGV4dHJh Y3QgYSBwYXJ0IG9mIHRoZSBwcm92aWRlZCBkYXRhIHRoYXQKKyAgIHdpbGwgYmUgdXNlZCBhcyBh IDxmaXJzdHRlcm0+cm93IHBhdHRlcm48L2ZpcnN0dGVybT4gZm9yIHRoZQorICAgY29uc3RydWN0 ZWQgdmlldy4gRWFjaCBTUUwvSlNPTiBpdGVtIGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhlIHJvdyBw YXR0ZXJuIHNlcnZlcworICAgYXMgdGhlIHNvdXJjZSBmb3IgYSBzZXBhcmF0ZSByb3cgaW4gdGhl IGNvbnN0cnVjdGVkIHJlbGF0aW9uYWwgdmlldy4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAg VG8gc3BsaXQgdGhlIHJvdyBwYXR0ZXJuIGludG8gY29sdW1ucywgPGZ1bmN0aW9uPmpzb25fdGFi bGU8L2Z1bmN0aW9uPgorICAgcHJvdmlkZXMgdGhlIDxsaXRlcmFsPkNPTFVNTlM8L2xpdGVyYWw+ IGNsYXVzZSB0aGF0IGRlZmluZXMgdGhlCisgICBzY2hlbWEgb2YgdGhlIGNyZWF0ZWQgdmlldy4g Rm9yIGVhY2ggY29sdW1uIHRvIGJlIGNvbnN0cnVjdGVkLAorICAgdGhpcyBjbGF1c2UgcHJvdmlk ZXMgYSBzZXBhcmF0ZSBwYXRoIGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMKKyAgIHRoZSByb3cg cGF0dGVybiwgZXh0cmFjdHMgYSBKU09OIGl0ZW0sIGFuZCByZXR1cm5zIGl0IGFzIGEKKyAgIHNl cGFyYXRlIFNRTCB2YWx1ZSBmb3IgdGhlIHNwZWNpZmllZCBjb2x1bW4uIElmIHRoZSByZXF1aXJl ZCB2YWx1ZQorICAgaXMgc3RvcmVkIGluIGEgbmVzdGVkIGxldmVsIG9mIHRoZSByb3cgcGF0dGVy biwgaXQgY2FuIGJlIGV4dHJhY3RlZAorICAgdXNpbmcgdGhlIDxsaXRlcmFsPk5FU1RFRCBQQVRI PC9saXRlcmFsPiBzdWJjbGF1c2UuIEpvaW5pbmcgdGhlCisgICBjb2x1bW5zIHJldHVybmVkIGJ5 IDxsaXRlcmFsPk5FU1RFRCBQQVRIPC9saXRlcmFsPiBjYW4gYWRkIG11bHRpcGxlCisgICBuZXcg cm93cyB0byB0aGUgY29uc3RydWN0ZWQgdmlldy4gU3VjaCByb3dzIGFyZSBjYWxsZWQKKyAgIDxm aXJzdHRlcm0+Y2hpbGQgcm93czwvZmlyc3R0ZXJtPiwgYXMgb3Bwb3NlZCB0byB0aGUgPGZpcnN0 dGVybT5wYXJlbnQgcm93PC9maXJzdHRlcm0+CisgICB0aGF0IGdlbmVyYXRlcyB0aGVtLgorICA8 L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGUgcm93cyBwcm9kdWNlZCBieSA8ZnVuY3Rpb24+SlNP Tl9UQUJMRTwvZnVuY3Rpb24+IGFyZSBsYXRlcmFsbHkKKyAgIGpvaW5lZCB0byB0aGUgcm93IHRo YXQgZ2VuZXJhdGVkIHRoZW0sIHNvIHlvdSBkbyBub3QgaGF2ZSB0byBleHBsaWNpdGx5IGpvaW4K KyAgIHRoZSBjb25zdHJ1Y3RlZCB2aWV3IHdpdGggdGhlIG9yaWdpbmFsIHRhYmxlIGhvbGRpbmcg PGFjcm9ueW0+SlNPTjwvYWNyb255bT4KKyAgIGRhdGEuIE9wdGlvbmFsbHksIHlvdSBjYW4gc3Bl Y2lmeSBob3cgdG8gam9pbiB0aGUgY29sdW1ucyByZXR1cm5lZAorICAgYnkgPGxpdGVyYWw+TkVT VEVEIFBBVEg8L2xpdGVyYWw+IHVzaW5nIHRoZSA8bGl0ZXJhbD5QTEFOPC9saXRlcmFsPiBjbGF1 c2UuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIEVhY2ggPGxpdGVyYWw+TkVTVEVEIFBBVEg8 L2xpdGVyYWw+IGNsYXVzZSBjYW4gZ2VuZXJhdGUgb25lIG9yIG1vcmUKKyAgIGNvbHVtbnMuIENv bHVtbnMgcHJvZHVjZWQgYnkgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+cyBhdCB0aGUK KyAgIHNhbWUgbGV2ZWwgYXJlIGNvbnNpZGVyZWQgdG8gYmUgPGZpcnN0dGVybT5zaWJsaW5nczwv Zmlyc3R0ZXJtPiwKKyAgIHdoaWxlIGEgY29sdW1uIHByb2R1Y2VkIGJ5IGEgPGxpdGVyYWw+TkVT VEVEIFBBVEg8L2xpdGVyYWw+IGlzCisgICBjb25zaWRlcmVkIHRvIGJlIGEgY2hpbGQgb2YgdGhl IGNvbHVtbiBwcm9kdWNlZCBieSBhCisgICA8bGl0ZXJhbD5ORVNURUQgUEFUSDwvbGl0ZXJhbD4g b3Igcm93IGV4cHJlc3Npb24gYXQgYSBoaWdoZXIgbGV2ZWwuCisgICBTaWJsaW5nIGNvbHVtbnMg YXJlIGFsd2F5cyBqb2luZWQgZmlyc3QuIE9uY2UgdGhleSBhcmUgcHJvY2Vzc2VkLAorICAgdGhl IHJlc3VsdGluZyByb3dzIGFyZSBqb2luZWQgdG8gdGhlIHBhcmVudCByb3cuCisgIDwvcGFyYT4K KworICA8cGFyYT4KKyAgIFRoZSBzeW50YXggaXM6CisgIDwvcGFyYT4KKworPHN5bm9wc2lzPgor SlNPTl9UQUJMRSAoCisgIDxyZXBsYWNlYWJsZT5jb250ZXh0X2l0ZW08L3JlcGxhY2VhYmxlPiwg PHJlcGxhY2VhYmxlPnBhdGhfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4gQVMg PHJlcGxhY2VhYmxlPmpzb25fcGF0aF9uYW1lPC9yZXBsYWNlYWJsZT4gPC9vcHRpb25hbD4gPG9w dGlvbmFsPiBQQVNTSU5HIHsgPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT4gQVMgPHJl cGxhY2VhYmxlPnZhcm5hbWU8L3JlcGxhY2VhYmxlPiB9IDxvcHRpb25hbD4sIC4uLjwvb3B0aW9u YWw+IDwvb3B0aW9uYWw+CisgIENPTFVNTlMgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+anNvbl90YWJsZV9jb2x1bW48L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+LCAuLi48L29wdGlv bmFsPiApCisgIDxvcHRpb25hbD4geyA8bGl0ZXJhbD5FUlJPUjwvbGl0ZXJhbD4gfCA8bGl0ZXJh bD5FTVBUWTwvbGl0ZXJhbD4gfSA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0ZXJhbD4gPC9vcHRpb25h bD4KKyAgPG9wdGlvbmFsPgorICAgIFBMQU4gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+anNvbl90YWJsZV9wbGFuPC9yZXBsYWNlYWJsZT4gKSB8CisgICAgUExBTiBERUZBVUxUICgg eyBJTk5FUiB8IE9VVEVSIH0gPG9wdGlvbmFsPiAsIHsgQ1JPU1MgfCBVTklPTiB9IDwvb3B0aW9u YWw+CisgICAgICAgICAgICAgICAgIHwgeyBDUk9TUyB8IFVOSU9OIH0gPG9wdGlvbmFsPiAsIHsg SU5ORVIgfCBPVVRFUiB9IDwvb3B0aW9uYWw+ICkKKyAgPC9vcHRpb25hbD4KKykKKworPHBocmFz ZT4KK3doZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5qc29uX3RhYmxlX2NvbHVt bjwvcmVwbGFjZWFibGU+IGlzOgorPC9waHJhc2U+CisgICAgPHJlcGxhY2VhYmxlPm5hbWU8L3Jl cGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4gUEFU SCA8cmVwbGFjZWFibGU+anNvbl9wYXRoX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiA8L29w dGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+IHsgV0lUSE9VVCB8IFdJVEggeyBDT05ESVRJT05B TCB8IDxvcHRpb25hbD5VTkNPTkRJVElPTkFMPC9vcHRpb25hbD4gfSB9IDxvcHRpb25hbD4gQVJS QVkgPC9vcHRpb25hbD4gV1JBUFBFUiA8L29wdGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+IHsg S0VFUCB8IE9NSVQgfSBRVU9URVMgPG9wdGlvbmFsPiBPTiBTQ0FMQVIgU1RSSU5HIDwvb3B0aW9u YWw+IDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyBFUlJPUiB8IE5VTEwgfCBERUZB VUxUIDxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gfSBPTiBFTVBUWSA8L29w dGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+IHsgRVJST1IgfCBOVUxMIHwgREVGQVVMVCA8cmVw bGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IH0gT04gRVJST1IgPC9vcHRpb25hbD4K KyAgfCA8cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT50eXBlPC9y ZXBsYWNlYWJsZT4gRk9STUFUIEpTT04gPG9wdGlvbmFsPkVOQ09ESU5HIDxsaXRlcmFsPlVURjg8 L2xpdGVyYWw+PC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlvbmFsPiBQQVRIIDxyZXBsYWNlYWJs ZT5qc29uX3BhdGhfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+CisgICAg ICAgIDxvcHRpb25hbD4geyBXSVRIT1VUIHwgV0lUSCB7IENPTkRJVElPTkFMIHwgPG9wdGlvbmFs PlVOQ09ORElUSU9OQUw8L29wdGlvbmFsPiB9IH0gPG9wdGlvbmFsPiBBUlJBWSA8L29wdGlvbmFs PiBXUkFQUEVSIDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyBLRUVQIHwgT01JVCB9 IFFVT1RFUyA8b3B0aW9uYWw+IE9OIFNDQUxBUiBTVFJJTkcgPC9vcHRpb25hbD4gPC9vcHRpb25h bD4KKyAgICAgICAgPG9wdGlvbmFsPiB7IEVSUk9SIHwgTlVMTCB8IEVNUFRZIHsgQVJSQVkgfCBP QkpFQ1QgfSB8IERFRkFVTFQgPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB9 IE9OIEVNUFRZIDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyBFUlJPUiB8IE5VTEwg fCBFTVBUWSB7IEFSUkFZIHwgT0JKRUNUIH0gfCBERUZBVUxUIDxyZXBsYWNlYWJsZT5leHByZXNz aW9uPC9yZXBsYWNlYWJsZT4gfSBPTiBFUlJPUiA8L29wdGlvbmFsPgorICB8IDxyZXBsYWNlYWJs ZT5uYW1lPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPiBFWElT VFMgPG9wdGlvbmFsPiBQQVRIIDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfc3BlY2lmaWNhdGlvbjwv cmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyBFUlJPUiB8IFRS VUUgfCBGQUxTRSB8IFVOS05PV04gfSBPTiBFUlJPUiA8L29wdGlvbmFsPgorICB8IE5FU1RFRCBQ QVRIIDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IDxv cHRpb25hbD4gQVMgPHJlcGxhY2VhYmxlPnBhdGhfbmFtZTwvcmVwbGFjZWFibGU+IDwvb3B0aW9u YWw+CisgICAgICAgIENPTFVNTlMgKCA8cmVwbGFjZWFibGU+anNvbl90YWJsZV9jb2x1bW48L3Jl cGxhY2VhYmxlPiA8b3B0aW9uYWw+LCAuLi48L29wdGlvbmFsPiApCisgIHwgPHJlcGxhY2VhYmxl Pm5hbWU8L3JlcGxhY2VhYmxlPiBGT1IgT1JESU5BTElUWQorPHBocmFzZT4KKzxyZXBsYWNlYWJs ZT5qc29uX3RhYmxlX3BsYW48L3JlcGxhY2VhYmxlPiBpczoKKzwvcGhyYXNlPgorICAgIDxyZXBs YWNlYWJsZT5qc29uX3BhdGhfbmFtZTwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4geyBPVVRFUiB8 IElOTkVSIH0gPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfcGxhbl9wcmltYXJ5PC9yZXBsYWNlYWJs ZT4gPC9vcHRpb25hbD4KKyAgfCA8cmVwbGFjZWFibGU+anNvbl90YWJsZV9wbGFuX3ByaW1hcnk8 L3JlcGxhY2VhYmxlPiB7IFVOSU9OIDxyZXBsYWNlYWJsZT5qc29uX3RhYmxlX3BsYW5fcHJpbWFy eTwvcmVwbGFjZWFibGU+IH0gPG9wdGlvbmFsPi4uLjwvb3B0aW9uYWw+CisgIHwgPHJlcGxhY2Vh YmxlPmpzb25fdGFibGVfcGxhbl9wcmltYXJ5PC9yZXBsYWNlYWJsZT4geyBDUk9TUyA8cmVwbGFj ZWFibGU+anNvbl90YWJsZV9wbGFuX3ByaW1hcnk8L3JlcGxhY2VhYmxlPiB9IDxvcHRpb25hbD4u Li48L29wdGlvbmFsPgorPHBocmFzZT4KKzxyZXBsYWNlYWJsZT5qc29uX3RhYmxlX3BsYW5fcHJp bWFyeTwvcmVwbGFjZWFibGU+IGlzOgorPC9waHJhc2U+CisgICAgPHJlcGxhY2VhYmxlPmpzb25f cGF0aF9uYW1lPC9yZXBsYWNlYWJsZT4gfCAoIDxyZXBsYWNlYWJsZT5qc29uX3RhYmxlX3BsYW48 L3JlcGxhY2VhYmxlPiApCis8L3N5bm9wc2lzPgorCisgIDxwYXJhPgorICAgRWFjaCBzeW50YXgg ZWxlbWVudCBpcyBkZXNjcmliZWQgYmVsb3cgaW4gbW9yZSBkZXRhaWwuCisgIDwvcGFyYT4KKwor ICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxp dGVyYWw+PHJlcGxhY2VhYmxlPmNvbnRleHRfaXRlbTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFi bGU+cGF0aF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiA8bGl0ZXJhbD5BUzwv bGl0ZXJhbD4gPHJlcGxhY2VhYmxlPmpzb25fcGF0aF9uYW1lPC9yZXBsYWNlYWJsZT4gPC9vcHRp b25hbD4gPG9wdGlvbmFsPiA8bGl0ZXJhbD5QQVNTSU5HPC9saXRlcmFsPiB7IDxyZXBsYWNlYWJs ZT52YWx1ZTwvcmVwbGFjZWFibGU+IDxsaXRlcmFsPkFTPC9saXRlcmFsPiA8cmVwbGFjZWFibGU+ dmFybmFtZTwvcmVwbGFjZWFibGU+IH0gPG9wdGlvbmFsPiwgLi4uPC9vcHRpb25hbD48L29wdGlv bmFsPjwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgIDxwYXJhPgor ICAgICBUaGUgaW5wdXQgZGF0YSB0byBxdWVyeSwgdGhlIEpTT04gcGF0aCBleHByZXNzaW9uIGRl ZmluaW5nIHRoZSBxdWVyeSwKKyAgICAgYW5kIGFuIG9wdGlvbmFsIDxsaXRlcmFsPlBBU1NJTkc8 L2xpdGVyYWw+IGNsYXVzZSwgd2hpY2ggY2FuIHByb3ZpZGUgZGF0YQorICAgICB2YWx1ZXMgdG8g dGhlIDxyZXBsYWNlYWJsZT5wYXRoX2V4cHJlc3Npb248L3JlcGxhY2VhYmxlPi4KKyAgICAgVGhl IHJlc3VsdCBvZiB0aGUgaW5wdXQgZGF0YQorICAgICBldmFsdWF0aW9uIGlzIGNhbGxlZCB0aGUg PGZpcnN0dGVybT5yb3cgcGF0dGVybjwvZmlyc3R0ZXJtPi4gVGhlIHJvdworICAgICBwYXR0ZXJu IGlzIHVzZWQgYXMgdGhlIHNvdXJjZSBmb3Igcm93IHZhbHVlcyBpbiB0aGUgY29uc3RydWN0ZWQg dmlldy4KKyAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5Pgor CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD5DT0xVTU5TPC9s aXRlcmFsPiggPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfY29sdW1uPC9yZXBsYWNlYWJsZT4gPG9w dGlvbmFsPiwgLi4uPC9vcHRpb25hbD4gKQorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisK KyAgICA8cGFyYT4KKyAgICAgVGhlIDxsaXRlcmFsPkNPTFVNTlM8L2xpdGVyYWw+IGNsYXVzZSBk ZWZpbmluZyB0aGUgc2NoZW1hIG9mIHRoZQorICAgICBjb25zdHJ1Y3RlZCB2aWV3LiBJbiB0aGlz IGNsYXVzZSwgeW91IG11c3Qgc3BlY2lmeSBhbGwgdGhlIGNvbHVtbnMKKyAgICAgdG8gYmUgZmls bGVkIHdpdGggU1FML0pTT04gaXRlbXMuCisgICAgIFRoZSA8cmVwbGFjZWFibGU+anNvbl90YWJs ZV9jb2x1bW48L3JlcGxhY2VhYmxlPgorICAgICBleHByZXNzaW9uIGhhcyB0aGUgZm9sbG93aW5n IHN5bnRheCB2YXJpYW50czoKKyAgICA8L3BhcmE+CisKKyAgPHZhcmlhYmxlbGlzdD4KKyAgIDx2 YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPjxyZXBsYWNlYWJsZT5uYW1l PC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPgorICAgICAgICAg IDxvcHRpb25hbD4gPGxpdGVyYWw+UEFUSDwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPmpzb25fcGF0 aF9zcGVjaWZpY2F0aW9uPC9yZXBsYWNlYWJsZT4gPC9vcHRpb25hbD48L2xpdGVyYWw+CisgICAg PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKworICAgIDxwYXJhPgorICAgICBJbnNlcnRzIGEgc2lu Z2xlIFNRTC9KU09OIGl0ZW0gaW50byB0aGUgb3V0cHV0IHJvdy4KKyAgICA8L3BhcmE+CisgICAg PHBhcmE+CisgICAgIFRoZSBwcm92aWRlZCA8bGl0ZXJhbD5QQVRIPC9saXRlcmFsPiBleHByZXNz aW9uIGlzIGV2YWx1YXRlZCBhbmQKKyAgICAgdGhlIGNvbHVtbiBpcyBmaWxsZWQgd2l0aCB0aGUg cHJvZHVjZWQgU1FML0pTT04gaXRlbSwgb25lIGZvciBlYWNoIHJvdy4KKyAgICAgSWYgdGhlIDxs aXRlcmFsPlBBVEg8L2xpdGVyYWw+IGV4cHJlc3Npb24gaXMgb21pdHRlZCwKKyAgICAgPGZ1bmN0 aW9uPkpTT05fVEFCTEU8L2Z1bmN0aW9uPiB1c2VzIHRoZQorICAgICA8bGl0ZXJhbD4kLjxyZXBs YWNlYWJsZT5uYW1lPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+IHBhdGggZXhwcmVzc2lvbiwKKyAg ICAgd2hlcmUgPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiBpcyB0aGUgcHJvdmlkZWQg Y29sdW1uIG5hbWUuCisgICAgIEluIHRoaXMgY2FzZSwgdGhlIGNvbHVtbiBuYW1lIG11c3QgY29y cmVzcG9uZCB0byBvbmUgb2YgdGhlCisgICAgIGtleXMgd2l0aGluIHRoZSBTUUwvSlNPTiBpdGVt IHByb2R1Y2VkIGJ5IHRoZSByb3cgcGF0dGVybi4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+Cisg ICAgIE9wdGlvbmFsbHksIHlvdSBjYW4gc3BlY2lmeSA8bGl0ZXJhbD5XUkFQUEVSPC9saXRlcmFs PiwKKyAgICAgPGxpdGVyYWw+UVVPVEVTPC9saXRlcmFsPiBjbGF1c2VzIHRvIGZvcm1hdCB0aGUg b3V0cHV0IGFuZAorICAgICA8bGl0ZXJhbD5PTiBFTVBUWTwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFs Pk9OIEVSUk9SPC9saXRlcmFsPiB0byBoYW5kbGUKKyAgICAgdGhvc2UgbWlzc2luZyB2YWx1ZXMg YW5kIHN0cnVjdHVyYWwgZXJyb3JzLCByZXNwZWN0aXZlbHkuCisgICAgPC9wYXJhPgorICAgIDxu b3RlPgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgY2xhdXNlIGlzIGludGVybmFsbHkgdHVybmVk IGludG8gYW5kIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMKKyAgICAgIDxmdW5jdGlvbj5qc29u X3ZhbHVlPC9mdW5jdGlvbj4gYW5kIDxmdW5jdGlvbj5qc29uX3F1ZXJ5PC9mdW5jdGlvbj4uCisg ICAgICBUaGUgbGF0dGVyIGlmIHRoZSBzcGVjaWZpZWQgdHlwZSBpcyBub3QgYSBzY2FsYXIgdHlw ZSBvciBpZgorICAgICAgPGxpdGVyYWw+V1JBUFBFUjwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+UVVP VEVTPC9saXRlcmFsPiBjbGF1c2UgaXMKKyAgICAgIHByZXNlbnQuCisgICAgIDwvcGFyYT4KKyAg ICA8L25vdGU+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFy bGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFi bGU+IDxyZXBsYWNlYWJsZT50eXBlPC9yZXBsYWNlYWJsZT4gPGxpdGVyYWw+Rk9STUFUIEpTT048 L2xpdGVyYWw+IDxvcHRpb25hbD5FTkNPRElORyA8bGl0ZXJhbD5VVEY4PC9saXRlcmFsPjwvb3B0 aW9uYWw+CisgICAgICAgICAgPG9wdGlvbmFsPiA8bGl0ZXJhbD5QQVRIPC9saXRlcmFsPiA8cmVw bGFjZWFibGU+anNvbl9wYXRoX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiA8L29wdGlvbmFs PgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgSW5zZXJ0 cyBhIGNvbXBvc2l0ZSBTUUwvSlNPTiBpdGVtIGludG8gdGhlIG91dHB1dCByb3cuCisgICAgPC9w YXJhPgorICAgIDxwYXJhPgorICAgICBUaGUgcHJvdmlkZWQgPGxpdGVyYWw+UEFUSDwvbGl0ZXJh bD4gZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgYW5kCisgICAgIHRoZSBjb2x1bW4gaXMgZmlsbGVk IHdpdGggdGhlIHByb2R1Y2VkIFNRTC9KU09OIGl0ZW0uICBJZiB0aGUKKyAgICAgPGxpdGVyYWw+ UEFUSDwvbGl0ZXJhbD4gZXhwcmVzc2lvbiBpcyBvbWl0dGVkLCBwYXRoIGV4cHJlc3Npb24KKyAg ICAgPGxpdGVyYWw+JC48cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+PC9saXRlcmFsPiBp cyB1c2VkLAorICAgICB3aGVyZSA8cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+IGlzIHRo ZSBwcm92aWRlZCBjb2x1bW4gbmFtZS4KKyAgICAgSW4gdGhpcyBjYXNlLCB0aGUgY29sdW1uIG5h bWUgbXVzdCBjb3JyZXNwb25kIHRvIG9uZSBvZiB0aGUKKyAgICAga2V5cyB3aXRoaW4gdGhlIFNR TC9KU09OIGl0ZW0gcHJvZHVjZWQgYnkgdGhlIHJvdyBwYXR0ZXJuLgorICAgIDwvcGFyYT4KKyAg ICA8cGFyYT4KKyAgICAgT3B0aW9uYWxseSwgeW91IGNhbiBzcGVjaWZ5IDxsaXRlcmFsPldSQVBQ RVI8L2xpdGVyYWw+LAorICAgICA8bGl0ZXJhbD5RVU9URVM8L2xpdGVyYWw+IGNsYXVzZXMgdG8g Zm9ybWF0IHRoZSBvdXRwdXQgYW5kCisgICAgIDxsaXRlcmFsPk9OIEVNUFRZPC9saXRlcmFsPiBh bmQgPGxpdGVyYWw+T04gRVJST1I8L2xpdGVyYWw+IHRvIGhhbmRsZQorICAgICB0aG9zZSBzY2Vu YXJpb3MgYXBwcm9wcmlhdGVseS4KKyAgICA8L3BhcmE+CisgICAgPG5vdGU+CisgICAgIDxwYXJh PgorICAgICAgVGhpcyBjbGF1c2UgaXMgaW50ZXJuYWxseSB0dXJuZWQgaW50byBhbmQgaGFzIHRo ZSBzYW1lIHNlbWFudGljcyBhcworICAgICAgPGZ1bmN0aW9uPmpzb25fcXVlcnk8L2Z1bmN0aW9u Pi4KKyAgICAgPC9wYXJhPgorICAgIDwvbm90ZT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJs aXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgICAgPHJlcGxh Y2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+ CisgICAgICAgPGxpdGVyYWw+RVhJU1RTPC9saXRlcmFsPiA8b3B0aW9uYWw+IDxsaXRlcmFsPlBB VEg8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfc3BlY2lmaWNhdGlvbjwvcmVwbGFj ZWFibGU+IDwvb3B0aW9uYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKworICAgIDxw YXJhPgorICAgICBJbnNlcnRzIGEgYm9vbGVhbiBpdGVtIGludG8gZWFjaCBvdXRwdXQgcm93Lgor ICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgVGhlIHZhbHVlIGNvcnJlc3BvbmRzIHRvIHdo ZXRoZXIgZXZhbHVhdGluZyB0aGUgPGxpdGVyYWw+UEFUSDwvbGl0ZXJhbD4KKyAgICAgZXhwcmVz c2lvbiB5aWVsZHMgYW55IFNRTC9KU09OIGl0ZW1zLiAgSWYgdGhlIDxsaXRlcmFsPlBBVEg8L2xp dGVyYWw+CisgICAgIGV4cHJlc3Npb24gaXMgb21pdHRlZCwgcGF0aCBleHByZXNzaW9uCisgICAg IDxsaXRlcmFsPiQuPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD4gaXMg dXNlZCwKKyAgICAgd2hlcmUgPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiBpcyB0aGUg cHJvdmlkZWQgY29sdW1uIG5hbWUuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBUaGUg c3BlY2lmaWVkIDxwYXJhbWV0ZXI+dHlwZTwvcGFyYW1ldGVyPiBzaG91bGQgaGF2ZSBhIGNhc3Qg ZnJvbSB0aGUKKyAgICAgPHR5cGU+Ym9vbGVhbjwvdHlwZT4uCisgICAgPC9wYXJhPgorICAgIDxw YXJhPgorICAgICBPcHRpb25hbGx5LCB5b3UgY2FuIGFkZCA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0 ZXJhbD4gY2xhdXNlIHRvIGRlZmluZQorICAgICBlcnJvciBiZWhhdmlvci4KKyAgICA8L3BhcmE+ CisgICAgPG5vdGU+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBjbGF1c2UgaXMgaW50ZXJuYWxs eSB0dXJuZWQgaW50byBhbmQgaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcworICAgICAgPGZ1bmN0 aW9uPmpzb25fZXhpc3RzPC9mdW5jdGlvbj4uCisgICAgIDwvcGFyYT4KKyAgICA8L25vdGU+Cisg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5Pgor ICAgIDx0ZXJtPgorICAgICAgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+IDxyZXBsYWNl YWJsZT5qc29uX3BhdGhfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4gPGxp dGVyYWw+QVM8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfbmFtZTwvcmVwbGFjZWFi bGU+IDwvb3B0aW9uYWw+CisgICAgICAgICAgPGxpdGVyYWw+Q09MVU1OUzwvbGl0ZXJhbD4gKCA8 cmVwbGFjZWFibGU+anNvbl90YWJsZV9jb2x1bW48L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+LCAu Li48L29wdGlvbmFsPiApCisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKworICAgIDxwYXJh PgorICAgICBFeHRyYWN0cyBTUUwvSlNPTiBpdGVtcyBmcm9tIG5lc3RlZCBsZXZlbHMgb2YgdGhl IHJvdyBwYXR0ZXJuLAorICAgICBnZW5lcmF0ZXMgb25lIG9yIG1vcmUgY29sdW1ucyBhcyBkZWZp bmVkIGJ5IHRoZSA8bGl0ZXJhbD5DT0xVTU5TPC9saXRlcmFsPgorICAgICBzdWJjbGF1c2UsIGFu ZCBpbnNlcnRzIHRoZSBleHRyYWN0ZWQgU1FML0pTT04gaXRlbXMgaW50byBlYWNoIHJvdyBvZiB0 aGVzZSBjb2x1bW5zLgorICAgICBUaGUgPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfY29sdW1uPC9y ZXBsYWNlYWJsZT4gZXhwcmVzc2lvbiBpbiB0aGUKKyAgICAgPGxpdGVyYWw+Q09MVU1OUzwvbGl0 ZXJhbD4gc3ViY2xhdXNlIHVzZXMgdGhlIHNhbWUgc3ludGF4IGFzIGluIHRoZQorICAgICBwYXJl bnQgPGxpdGVyYWw+Q09MVU1OUzwvbGl0ZXJhbD4gY2xhdXNlLgorICAgIDwvcGFyYT4KKworICAg IDxwYXJhPgorICAgICBUaGUgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+IHN5bnRheCBp cyByZWN1cnNpdmUsCisgICAgIHNvIHlvdSBjYW4gZ28gZG93biBtdWx0aXBsZSBuZXN0ZWQgbGV2 ZWxzIGJ5IHNwZWNpZnlpbmcgc2V2ZXJhbAorICAgICA8bGl0ZXJhbD5ORVNURUQgUEFUSDwvbGl0 ZXJhbD4gc3ViY2xhdXNlcyB3aXRoaW4gZWFjaCBvdGhlci4KKyAgICAgSXQgYWxsb3dzIHRvIHVu bmVzdCB0aGUgaGllcmFyY2h5IG9mIEpTT04gb2JqZWN0cyBhbmQgYXJyYXlzCisgICAgIGluIGEg c2luZ2xlIGZ1bmN0aW9uIGludm9jYXRpb24gcmF0aGVyIHRoYW4gY2hhaW5pbmcgc2V2ZXJhbAor ICAgICA8ZnVuY3Rpb24+SlNPTl9UQUJMRTwvZnVuY3Rpb24+IGV4cHJlc3Npb25zIGluIGFuIFNR TCBzdGF0ZW1lbnQuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFlvdSBjYW4gdXNl IHRoZSA8bGl0ZXJhbD5QTEFOPC9saXRlcmFsPiBjbGF1c2UgdG8gZGVmaW5lIGhvdworICAgICB0 byBqb2luIHRoZSBjb2x1bW5zIHJldHVybmVkIGJ5IDxsaXRlcmFsPk5FU1RFRCBQQVRIPC9saXRl cmFsPiBjbGF1c2VzLgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0 ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxyZXBsYWNlYWJs ZT5uYW1lPC9yZXBsYWNlYWJsZT4gPGxpdGVyYWw+Rk9SIE9SRElOQUxJVFk8L2xpdGVyYWw+Cisg ICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKworICAgIDxwYXJhPgorICAgICBBZGRzIGFuIG9y ZGluYWxpdHkgY29sdW1uIHRoYXQgcHJvdmlkZXMgc2VxdWVudGlhbCByb3cgbnVtYmVyaW5nLgor ICAgICBZb3UgY2FuIGhhdmUgb25seSBvbmUgb3JkaW5hbGl0eSBjb2x1bW4gcGVyIHRhYmxlLiBS b3cgbnVtYmVyaW5nCisgICAgIGlzIDEtYmFzZWQuIEZvciBjaGlsZCByb3dzIHRoYXQgcmVzdWx0 IGZyb20gdGhlIDxsaXRlcmFsPk5FU1RFRCBQQVRIPC9saXRlcmFsPgorICAgICBjbGF1c2VzLCB0 aGUgcGFyZW50IHJvdyBudW1iZXIgaXMgcmVwZWF0ZWQuCisgICAgPC9wYXJhPgorICAgIDwvbGlz dGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKyAgPC92YXJpYWJsZWxpc3Q+CisKKyAgICA8L2xp c3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRl cm0+CisgICAgIDxsaXRlcmFsPkFTPC9saXRlcmFsPiA8cmVwbGFjZWFibGU+anNvbl9wYXRoX25h bWU8L3JlcGxhY2VhYmxlPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFy YT4KKyAgICAgVGhlIG9wdGlvbmFsIDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfbmFtZTwvcmVwbGFj ZWFibGU+IHNlcnZlcyBhcyBhbgorICAgICBpZGVudGlmaWVyIG9mIHRoZSBwcm92aWRlZCA8cmVw bGFjZWFibGU+anNvbl9wYXRoX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPi4KKyAgICAgVGhl IHBhdGggbmFtZSBtdXN0IGJlIHVuaXF1ZSBhbmQgZGlzdGluY3QgZnJvbSB0aGUgY29sdW1uIG5h bWVzLgorICAgICBXaGVuIHVzaW5nIHRoZSA8bGl0ZXJhbD5QTEFOPC9saXRlcmFsPiBjbGF1c2Us IHlvdSBtdXN0IHNwZWNpZnkgdGhlIG5hbWVzCisgICAgIGZvciBhbGwgdGhlIHBhdGhzLCBpbmNs dWRpbmcgdGhlIHJvdyBwYXR0ZXJuLiBFYWNoIHBhdGggbmFtZSBjYW4gYXBwZWFyIGluCisgICAg IHRoZSA8bGl0ZXJhbD5QTEFOPC9saXRlcmFsPiBjbGF1c2Ugb25seSBvbmNlLgorICAgIDwvcGFy YT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50 cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPlBMQU48L2xpdGVyYWw+ICggPHJlcGxhY2Vh YmxlPmpzb25fdGFibGVfcGxhbjwvcmVwbGFjZWFibGU+ICkKKyAgICA8L3Rlcm0+CisgICAgPGxp c3RpdGVtPgorCisgICAgPHBhcmE+CisgICAgIERlZmluZXMgaG93IHRvIGpvaW4gdGhlIGRhdGEg cmV0dXJuZWQgYnkgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+CisgICAgIGNsYXVzZXMg dG8gdGhlIGNvbnN0cnVjdGVkIHZpZXcuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBU byBqb2luIGNvbHVtbnMgd2l0aCBwYXJlbnQvY2hpbGQgcmVsYXRpb25zaGlwLCB5b3UgY2FuIHVz ZToKKyAgICA8L3BhcmE+CisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5PgorICAg IDx0ZXJtPgorICAgICA8bGl0ZXJhbD5JTk5FUjwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAg PGxpc3RpdGVtPgorCisgICAgPHBhcmE+CisgICAgIFVzZSA8bGl0ZXJhbD5JTk5FUiBKT0lOPC9s aXRlcmFsPiwgc28gdGhhdCB0aGUgcGFyZW50IHJvdworICAgICBpcyBvbWl0dGVkIGZyb20gdGhl IG91dHB1dCBpZiBpdCBkb2VzIG5vdCBoYXZlIGFueSBjaGlsZCByb3dzCisgICAgIGFmdGVyIGpv aW5pbmcgdGhlIGRhdGEgcmV0dXJuZWQgYnkgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+ LgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAg IDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPk9VVEVSPC9saXRlcmFs PgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgVXNlIDxs aXRlcmFsPkxFRlQgT1VURVIgSk9JTjwvbGl0ZXJhbD4sIHNvIHRoYXQgdGhlIHBhcmVudCByb3cK KyAgICAgaXMgYWx3YXlzIGluY2x1ZGVkIGludG8gdGhlIG91dHB1dCBldmVuIGlmIGl0IGRvZXMg bm90IGhhdmUgYW55IGNoaWxkIHJvd3MKKyAgICAgYWZ0ZXIgam9pbmluZyB0aGUgZGF0YSByZXR1 cm5lZCBieSA8bGl0ZXJhbD5ORVNURUQgUEFUSDwvbGl0ZXJhbD4sIHdpdGggTlVMTCB2YWx1ZXMK KyAgICAgaW5zZXJ0ZWQgaW50byB0aGUgY2hpbGQgY29sdW1ucyBpZiB0aGUgY29ycmVzcG9uZGlu ZworICAgICB2YWx1ZXMgYXJlIG1pc3NpbmcuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAg ICBUaGlzIGlzIHRoZSBkZWZhdWx0IG9wdGlvbiBmb3Igam9pbmluZyBjb2x1bW5zIHdpdGggcGFy ZW50L2NoaWxkIHJlbGF0aW9uc2hpcC4KKyAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKworICAgICA8cGFyYT4KKyAgICAg VG8gam9pbiBzaWJsaW5nIGNvbHVtbnMsIHlvdSBjYW4gdXNlOgorICAgIDwvcGFyYT4KKworICA8 dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVy YWw+VU5JT048L2xpdGVyYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKworICAgIDxw YXJhPgorICAgICBHZW5lcmF0ZSBvbmUgcm93IGZvciBlYWNoIHZhbHVlIHByb2R1Y2VkIGJ5IGVh Y2ggb2YgdGhlIHNpYmxpbmcKKyAgICAgY29sdW1ucy4gVGhlIGNvbHVtbnMgZnJvbSB0aGUgb3Ro ZXIgc2libGluZ3MgYXJlIHNldCB0byBudWxsLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAg ICAgVGhpcyBpcyB0aGUgZGVmYXVsdCBvcHRpb24gZm9yIGpvaW5pbmcgc2libGluZyBjb2x1bW5z LgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAg IDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPkNST1NTPC9saXRlcmFs PgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgR2VuZXJh dGUgb25lIHJvdyBmb3IgZWFjaCBjb21iaW5hdGlvbiBvZiB2YWx1ZXMgZnJvbSB0aGUgc2libGlu ZyBjb2x1bW5zLgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisKKyAgPC92YXJpYWJsZWxpc3Q+CisKKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0 ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPlBM QU4gREVGQVVMVDwvbGl0ZXJhbD4gKCA8bGl0ZXJhbD48cmVwbGFjZWFibGU+T1VURVIgfCBJTk5F UjwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4sIDxyZXBsYWNlYWJsZT5VTklPTiB8IENST1NTPC9y ZXBsYWNlYWJsZT4gPC9vcHRpb25hbD48L2xpdGVyYWw+ICkKKyAgICA8L3Rlcm0+CisgICAgPGxp c3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSB0ZXJtcyBjYW4gYWxzbyBiZSBzcGVjaWZp ZWQgaW4gcmV2ZXJzZSBvcmRlci4gVGhlCisgICAgICA8bGl0ZXJhbD5JTk5FUjwvbGl0ZXJhbD4g b3IgPGxpdGVyYWw+T1VURVI8L2xpdGVyYWw+IG9wdGlvbiBkZWZpbmVzIHRoZQorICAgICAgam9p bmluZyBwbGFuIGZvciBwYXJlbnQvY2hpbGQgY29sdW1ucywgd2hpbGUgPGxpdGVyYWw+VU5JT048 L2xpdGVyYWw+IG9yCisgICAgICA8bGl0ZXJhbD5DUk9TUzwvbGl0ZXJhbD4gYWZmZWN0cyBqb2lu cyBvZiBzaWJsaW5nIGNvbHVtbnMuIFRoaXMgZm9ybQorICAgICAgb2YgPGxpdGVyYWw+UExBTjwv bGl0ZXJhbD4gb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IHBsYW4gZm9yCisgICAgICBhbGwgY29sdW1u cyBhdCBvbmNlLiBFdmVuIHRob3VnaCB0aGUgcGF0aCBuYW1lcyBhcmUgbm90IGluY2x1ZGVkIGlu IHRoZQorICAgICAgPGxpdGVyYWw+UExBTiBERUZBVUxUPC9saXRlcmFsPiBmb3JtLCB0byBjb25m b3JtIHRvIHRoZSBTUUwvSlNPTiBzdGFuZGFyZAorICAgICAgdGhleSBtdXN0IGJlIHByb3ZpZGVk IGZvciBhbGwgdGhlIHBhdGhzIGlmIHRoZSA8bGl0ZXJhbD5QTEFOPC9saXRlcmFsPgorICAgICAg Y2xhdXNlIGlzIHVzZWQuCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICA8bGl0ZXJh bD5QTEFOIERFRkFVTFQ8L2xpdGVyYWw+IGlzIHNpbXBsZXIgdGhhbiBzcGVjaWZ5aW5nIGEgY29t cGxldGUKKyAgICAgIDxsaXRlcmFsPlBMQU48L2xpdGVyYWw+LCBhbmQgaXMgb2Z0ZW4gYWxsIHRo YXQgaXMgcmVxdWlyZWQgdG8gZ2V0IHRoZSBkZXNpcmVkCisgICAgICBvdXRwdXQuCisgICAgIDwv cGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisgIDwvdmFyaWFibGVs aXN0PgorCisgIDxwYXJhPkV4YW1wbGVzPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICBJbiB0 aGVzZSBleGFtcGxlcyB0aGUgZm9sbG93aW5nIHNtYWxsIHRhYmxlIHN0b3Jpbmcgc29tZSBKU09O IGRhdGEgd2lsbCBiZSB1c2VkOgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFRBQkxFIG15X2Zp bG1zICgganMganNvbmIgKTsKKworSU5TRVJUIElOVE8gbXlfZmlsbXMgVkFMVUVTICgKKyd7ICJm YXZvcml0ZXMiIDogWworICAgeyAia2luZCIgOiAiY29tZWR5IiwgImZpbG1zIiA6IFsKKyAgICAg eyAidGl0bGUiIDogIkJhbmFuYXMiLAorICAgICAgICJkaXJlY3RvciIgOiAiV29vZHkgQWxsZW4i fSwKKyAgICAgeyAidGl0bGUiIDogIlRoZSBEaW5uZXIgR2FtZSIsCisgICAgICAgImRpcmVjdG9y IiA6ICJGcmFuY2lzIFZlYmVyIiB9IF0gfSwKKyAgIHsgImtpbmQiIDogImhvcnJvciIsICJmaWxt cyIgOiBbCisgICAgIHsgInRpdGxlIiA6ICJQc3ljaG8iLAorICAgICAgICJkaXJlY3RvciIgOiAi QWxmcmVkIEhpdGNoY29jayIgfSBdIH0sCisgICB7ICJraW5kIiA6ICJ0aHJpbGxlciIsICJmaWxt cyIgOiBbCisgICAgIHsgInRpdGxlIiA6ICJWZXJ0aWdvIiwKKyAgICAgICAiZGlyZWN0b3IiIDog IkFsZnJlZCBIaXRjaGNvY2siIH0gXSB9LAorICAgeyAia2luZCIgOiAiZHJhbWEiLCAiZmlsbXMi IDogWworICAgICB7ICJ0aXRsZSIgOiAiWW9qaW1ibyIsCisgICAgICAgImRpcmVjdG9yIiA6ICJB a2lyYSBLdXJvc2F3YSIgfSBdIH0KKyAgXSB9Jyk7Cis8L3Byb2dyYW1saXN0aW5nPgorICAgICA8 L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgUXVlcnkgdGhlIDxzdHJ1Y3RuYW1lPm15X2ZpbG1z PC9zdHJ1Y3RuYW1lPiB0YWJsZSBob2xkaW5nCisgICAgICBzb21lIEpTT04gZGF0YSBhYm91dCB0 aGUgZmlsbXMgYW5kIGNyZWF0ZSBhIHZpZXcgdGhhdAorICAgICAgZGlzdHJpYnV0ZXMgdGhlIGZp bG0gZ2VucmUsIHRpdGxlLCBhbmQgZGlyZWN0b3IgYmV0d2VlbiBzZXBhcmF0ZSBjb2x1bW5zOgor PHNjcmVlbj4KK1NFTEVDVCBqdC4qIEZST00KKyBteV9maWxtcywKKyBKU09OX1RBQkxFICgganMs ICckLmZhdm9yaXRlc1sqXScgQ09MVU1OUyAoCisgICBpZCBGT1IgT1JESU5BTElUWSwKKyAgIGtp bmQgdGV4dCBQQVRIICckLmtpbmQnLAorICAgTkVTVEVEIFBBVEggJyQuZmlsbXNbKl0nIENPTFVN TlMgKAorICAgICB0aXRsZSB0ZXh0IFBBVEggJyQudGl0bGUnLAorICAgICBkaXJlY3RvciB0ZXh0 IFBBVEggJyQuZGlyZWN0b3InKSkpIEFTIGp0OworLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisgaWQgfCAgIGtpbmQgICB8ICAgICAgIHRpdGxl ICAgICAgfCAgICBkaXJlY3RvcgorLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tCisgMSAgfCBjb21lZHkgICB8IEJhbmFuYXMgICAgICAgICAgfCBX b29keSBBbGxlbgorIDEgIHwgY29tZWR5ICAgfCBUaGUgRGlubmVyIEdhbWUgIHwgRnJhbmNpcyBW ZWJlcgorIDIgIHwgaG9ycm9yICAgfCBQc3ljaG8gICAgICAgICAgIHwgQWxmcmVkIEhpdGNoY29j aworIDMgIHwgdGhyaWxsZXIgfCBWZXJ0aWdvICAgICAgICAgIHwgQWxmcmVkIEhpdGNoY29jawor IDQgIHwgZHJhbWEgICAgfCBZb2ppbWJvICAgICAgICAgIHwgQWtpcmEgS3Vyb3Nhd2EKKyAoNSBy b3dzKQorPC9zY3JlZW4+CisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIEZpbmQg YSBkaXJlY3RvciB0aGF0IGhhcyBkb25lIGZpbG1zIGluIHR3byBkaWZmZXJlbnQgZ2VucmVzOgor PHNjcmVlbj4KK1NFTEVDVAorICBkaXJlY3RvcjEgQVMgZGlyZWN0b3IsIHRpdGxlMSwga2luZDEs IHRpdGxlMiwga2luZDIKK0ZST00KKyAgbXlfZmlsbXMsCisgIEpTT05fVEFCTEUgKCBqcywgJyQu ZmF2b3JpdGVzJyBBUyBmYXZzIENPTFVNTlMgKAorICAgIE5FU1RFRCBQQVRIICckWypdJyBBUyBm aWxtczEgQ09MVU1OUyAoCisgICAgICBraW5kMSB0ZXh0IFBBVEggJyQua2luZCcsCisgICAgICBO RVNURUQgUEFUSCAnJC5maWxtc1sqXScgQVMgZmlsbTEgQ09MVU1OUyAoCisgICAgICAgIHRpdGxl MSB0ZXh0IFBBVEggJyQudGl0bGUnLAorICAgICAgICBkaXJlY3RvcjEgdGV4dCBQQVRIICckLmRp cmVjdG9yJykKKyAgICApLAorICAgIE5FU1RFRCBQQVRIICckWypdJyBBUyBmaWxtczIgQ09MVU1O UyAoCisgICAgICBraW5kMiB0ZXh0IFBBVEggJyQua2luZCcsCisgICAgICBORVNURUQgUEFUSCAn JC5maWxtc1sqXScgQVMgZmlsbTIgQ09MVU1OUyAoCisgICAgICAgIHRpdGxlMiB0ZXh0IFBBVEgg JyQudGl0bGUnLAorICAgICAgICBkaXJlY3RvcjIgdGV4dCBQQVRIICckLmRpcmVjdG9yJworICAg ICAgKQorICAgICkKKyAgICkKKyAgIFBMQU4gKGZhdnMgT1VURVIgKChmaWxtczEgSU5ORVIgZmls bTEpIENST1NTIChmaWxtczIgSU5ORVIgZmlsbTIpKSkKKyAgKSBBUyBqdAorIFdIRVJFIGtpbmQx ID4ga2luZDIgQU5EIGRpcmVjdG9yMSA9IGRpcmVjdG9yMjsKKworICAgICBkaXJlY3RvciAgICAg fCB0aXRsZTEgIHwgIGtpbmQxICAgfCB0aXRsZTIgfCBraW5kMgorLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tCisgQWxmcmVkIEhpdGNoY29j ayB8IFZlcnRpZ28gfCB0aHJpbGxlciB8IFBzeWNobyB8IGhvcnJvcgorKDEgcm93KQorPC9zY3Jl ZW4+CisgICAgIDwvcGFyYT4KKyAgPC9zZWN0Mj4KKwogIDwvc2VjdDE+CiAKICA8c2VjdDEgaWQ9 ImZ1bmN0aW9ucy1zZXF1ZW5jZSI+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3Nx bF9mZWF0dXJlcy50eHQgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKaW5k ZXggODBhYzU5ZmJhNC4uYTBlNjNmNDU0ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zcWxfZmVhdHVyZXMudHh0CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVz LnR4dApAQCAtNTUwLDEwICs1NTAsMTAgQEAgVDgxNAlDb2xvbiBpbiBKU09OX09CSkVDVCBvciBK U09OX09CSkVDVEFHRwkJCVlFUwogVDgyMQlCYXNpYyBTUUwvSlNPTiBxdWVyeSBvcGVyYXRvcnMJ CQlZRVMJCiBUODIyCVNRTC9KU09OOiBJUyBKU09OIFdJVEggVU5JUVVFIEtFWVMgcHJlZGljYXRl CQkJWUVTCQogVDgyMwlTUUwvSlNPTjogUEFTU0lORyBjbGF1c2UJCQlZRVMJCi1UODI0CUpTT05f VEFCTEU6IHNwZWNpZmljIFBMQU4gY2xhdXNlCQkJTk8JCitUODI0CUpTT05fVEFCTEU6IHNwZWNp ZmljIFBMQU4gY2xhdXNlCQkJWUVTCQogVDgyNQlTUUwvSlNPTjogT04gRU1QVFkgYW5kIE9OIEVS Uk9SIGNsYXVzZXMJCQlZRVMJCiBUODI2CUdlbmVyYWwgdmFsdWUgZXhwcmVzc2lvbiBpbiBPTiBF UlJPUiBvciBPTiBFTVBUWSBjbGF1c2VzCQkJWUVTCQotVDgyNwlKU09OX1RBQkxFOiBzaWJsaW5n IE5FU1RFRCBDT0xVTU5TIGNsYXVzZXMJCQlOTwkKK1Q4MjcJSlNPTl9UQUJMRTogc2libGluZyBO RVNURUQgQ09MVU1OUyBjbGF1c2VzCQkJWUVTCQogVDgyOAlKU09OX1FVRVJZCQkJWUVTCQogVDgy OQlKU09OX1FVRVJZOiBhcnJheSB3cmFwcGVyIG9wdGlvbnMJCQlZRVMJCiBUODMwCUVuZm9yY2lu ZyB1bmlxdWUga2V5cyBpbiBTUUwvSlNPTiBjb25zdHJ1Y3RvciBmdW5jdGlvbnMJCQlZRVMJCkBA IC01NjQsNyArNTY0LDcgQEAgVDgzNAlTUUwvSlNPTiBwYXRoIGxhbmd1YWdlOiB3aWxkY2FyZCBt ZW1iZXIgYWNjZXNzb3IJCQlZRVMKIFQ4MzUJU1FML0pTT04gcGF0aCBsYW5ndWFnZTogZmlsdGVy IGV4cHJlc3Npb25zCQkJWUVTCQogVDgzNglTUUwvSlNPTiBwYXRoIGxhbmd1YWdlOiBzdGFydHMg d2l0aCBwcmVkaWNhdGUJCQlZRVMJCiBUODM3CVNRTC9KU09OIHBhdGggbGFuZ3VhZ2U6IHJlZ2V4 X2xpa2UgcHJlZGljYXRlCQkJWUVTCQotVDgzOAlKU09OX1RBQkxFOiBQTEFOIERFRkFVTFQgY2xh dXNlCQkJTk8JCitUODM4CUpTT05fVEFCTEU6IFBMQU4gREVGQVVMVCBjbGF1c2UJCQlZRVMJCiBU ODM5CUZvcm1hdHRlZCBjYXN0IG9mIGRhdGV0aW1lcyB0by9mcm9tIGNoYXJhY3RlciBzdHJpbmdz CQkJTk8JCiBUODQwCUhleCBpbnRlZ2VyIGxpdGVyYWxzIGluIFNRTC9KU09OIHBhdGggbGFuZ3Vh Z2UJCQlZRVMJCiBUODUxCVNRTC9KU09OOiBvcHRpb25hbCBrZXl3b3JkcyBmb3IgZGVmYXVsdCBz eW50YXgJCQlZRVMJCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwcklu dGVycC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYwppbmRleCBkZWNm ODU2NmM0Li5kYWQ0MjRiYWI1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj RXhwckludGVycC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMK QEAgLTQzNDAsNiArNDM0MCwxMiBAQCBFeGVjRXZhbEpzb25FeHByUGF0aChFeHByU3RhdGUgKnN0 YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgSlNPTl9U QUJMRV9PUDoKKwkJCWp1bXBfZXZhbF9jb2VyY2lvbiA9IC0xOworCQkJKm9wLT5yZXN2YWx1ZSA9 IGl0ZW07CisJCQkqb3AtPnJlc251bGwgPSBmYWxzZTsKKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6 CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIFNRTC9KU09OIGV4cHJlc3Npb24gb3AgJWQi LCBqZXhwci0+b3ApOwogCQkJcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVU YWJsZUZ1bmNzY2FuLmMKaW5kZXggNzJjYTM0YTIyOC4uOTlmYjkyODk0YyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk ZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAi dXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9qc29ucGF0aC5oIgogI2luY2x1ZGUg InV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVk ZSAidXRpbHMveG1sLmgiCkBAIC0xNjEsOCArMTYyLDkgQEAgRXhlY0luaXRUYWJsZUZ1bmNTY2Fu KFRhYmxlRnVuY1NjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCXNjYW5z dGF0ZS0+c3MucHMucXVhbCA9CiAJCUV4ZWNJbml0UXVhbChub2RlLT5zY2FuLnBsYW4ucXVhbCwg JnNjYW5zdGF0ZS0+c3MucHMpOwogCi0JLyogT25seSBYTUxUQUJMRSBpcyBzdXBwb3J0ZWQgY3Vy cmVudGx5ICovCi0Jc2NhbnN0YXRlLT5yb3V0aW5lID0gJlhtbFRhYmxlUm91dGluZTsKKwkvKiBP bmx5IFhNTFRBQkxFIGFuZCBKU09OX1RBQkxFIGFyZSBzdXBwb3J0ZWQgY3VycmVudGx5ICovCisJ c2NhbnN0YXRlLT5yb3V0aW5lID0KKwkJdGYtPmZ1bmN0eXBlID09IFRGVF9YTUxUQUJMRSA/ICZY bWxUYWJsZVJvdXRpbmUgOiAmSnNvbmJUYWJsZVJvdXRpbmU7CiAKIAlzY2Fuc3RhdGUtPnBlclRh YmxlQ3h0ID0KIAkJQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LApA QCAtMTgyLDYgKzE4NCwxMCBAQCBFeGVjSW5pdFRhYmxlRnVuY1NjYW4oVGFibGVGdW5jU2NhbiAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCUV4ZWNJbml0RXhwckxpc3QodGYt PmNvbGV4cHJzLCAoUGxhblN0YXRlICopIHNjYW5zdGF0ZSk7CiAJc2NhbnN0YXRlLT5jb2xkZWZl eHBycyA9CiAJCUV4ZWNJbml0RXhwckxpc3QodGYtPmNvbGRlZmV4cHJzLCAoUGxhblN0YXRlICop IHNjYW5zdGF0ZSk7CisJc2NhbnN0YXRlLT5jb2x2YWxleHBycyA9CisJCUV4ZWNJbml0RXhwckxp c3QodGYtPmNvbHZhbGV4cHJzLCAoUGxhblN0YXRlICopIHNjYW5zdGF0ZSk7CisJc2NhbnN0YXRl LT5wYXNzaW5ndmFsZXhwcnMgPQorCQlFeGVjSW5pdEV4cHJMaXN0KHRmLT5wYXNzaW5ndmFsZXhw cnMsIChQbGFuU3RhdGUgKikgc2NhbnN0YXRlKTsKIAogCXNjYW5zdGF0ZS0+bm90bnVsbHMgPSB0 Zi0+bm90bnVsbHM7CiAKQEAgLTM2OSwxNCArMzc1LDE3IEBAIHRmdW5jSW5pdGlhbGl6ZShUYWJs ZUZ1bmNTY2FuU3RhdGUgKnRzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBEYXR1bSBkb2Mp CiAJCXJvdXRpbmUtPlNldE5hbWVzcGFjZSh0c3RhdGUsIG5zX25hbWUsIG5zX3VyaSk7CiAJfQog Ci0JLyogSW5zdGFsbCB0aGUgcm93IGZpbHRlciBleHByZXNzaW9uIGludG8gdGhlIHRhYmxlIGJ1 aWxkZXIgY29udGV4dCAqLwotCXZhbHVlID0gRXhlY0V2YWxFeHByKHRzdGF0ZS0+cm93ZXhwciwg ZWNvbnRleHQsICZpc251bGwpOwotCWlmIChpc251bGwpCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJ KGVycmNvZGUoRVJSQ09ERV9OVUxMX1ZBTFVFX05PVF9BTExPV0VEKSwKLQkJCQkgZXJybXNnKCJy b3cgZmlsdGVyIGV4cHJlc3Npb24gbXVzdCBub3QgYmUgbnVsbCIpKSk7CisJaWYgKHJvdXRpbmUt PlNldFJvd0ZpbHRlcikKKwl7CisJCS8qIEluc3RhbGwgdGhlIHJvdyBmaWx0ZXIgZXhwcmVzc2lv biBpbnRvIHRoZSB0YWJsZSBidWlsZGVyIGNvbnRleHQgKi8KKwkJdmFsdWUgPSBFeGVjRXZhbEV4 cHIodHN0YXRlLT5yb3dleHByLCBlY29udGV4dCwgJmlzbnVsbCk7CisJCWlmIChpc251bGwpCisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX05VTExfVkFMVUVfTk9UX0FM TE9XRUQpLAorCQkJCQkgZXJybXNnKCJyb3cgZmlsdGVyIGV4cHJlc3Npb24gbXVzdCBub3QgYmUg bnVsbCIpKSk7CiAKLQlyb3V0aW5lLT5TZXRSb3dGaWx0ZXIodHN0YXRlLCBUZXh0RGF0dW1HZXRD U3RyaW5nKHZhbHVlKSk7CisJCXJvdXRpbmUtPlNldFJvd0ZpbHRlcih0c3RhdGUsIFRleHREYXR1 bUdldENTdHJpbmcodmFsdWUpKTsKKwl9CiAKIAkvKgogCSAqIEluc3RhbGwgdGhlIGNvbHVtbiBm aWx0ZXIgZXhwcmVzc2lvbnMgaW50byB0aGUgdGFibGUgYnVpbGRlciBjb250ZXh0LgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9t YWtlZnVuY3MuYwppbmRleCA1MzhjY2IzMGFhLi5hNGI5YzI4Njg5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVu Y3MuYwpAQCAtNTM3LDYgKzUzNywyMiBAQCBtYWtlRnVuY0V4cHIoT2lkIGZ1bmNpZCwgT2lkIHJl dHR5cGUsIExpc3QgKmFyZ3MsCiAJcmV0dXJuIGZ1bmNleHByOwogfQogCisvKgorICogbWFrZVN0 cmluZ0NvbnN0IC0KKyAqIAlidWlsZCBhIEFfQ29uc3Qgbm9kZSBvZiB0eXBlIFRfU3RyaW5nIGZv ciBnaXZlbiBzdHJpbmcKKyAqLworTm9kZSAqCittYWtlU3RyaW5nQ29uc3QoY2hhciAqc3RyLCBp bnQgbG9jYXRpb24pCit7CisJQV9Db25zdAkgICAqbiA9IG1ha2VOb2RlKEFfQ29uc3QpOworCisJ bi0+dmFsLnN2YWwudHlwZSA9IFRfU3RyaW5nOworCW4tPnZhbC5zdmFsLnN2YWwgPSBzdHI7CisJ bi0+bG9jYXRpb24gPSBsb2NhdGlvbjsKKworICAgcmV0dXJuIChOb2RlICopIG47Cit9CisKIC8q CiAgKiBtYWtlRGVmRWxlbSAtCiAgKglidWlsZCBhIERlZkVsZW0gbm9kZQpAQCAtODc0LDYgKzg5 MCw5OCBAQCBtYWtlSnNvbkJlaGF2aW9yKEpzb25CZWhhdmlvclR5cGUgdHlwZSwgTm9kZSAqZXhw ciwgSnNvbkNvZXJjaW9uICpjb2VyY2lvbiwKIAlyZXR1cm4gYmVoYXZpb3I7CiB9CiAKKy8qCisg KiBtYWtlSnNvblRhYmxlUGF0aCAtCisgKgkJTWFrZSBKc29uVGFibGVQYXRoIG5vZGUgZnJvbSBn aXZlbiBwYXRoIHN0cmluZyBhbmQgbmFtZSAoaWYgYW55KQorICovCitKc29uVGFibGVQYXRoICoK K21ha2VKc29uVGFibGVQYXRoKENvbnN0ICpwYXRodmFsdWUsIGNoYXIgKnBhdGhuYW1lKQorewor CUpzb25UYWJsZVBhdGggKnBhdGggPSBtYWtlTm9kZShKc29uVGFibGVQYXRoKTsKKworCUFzc2Vy dChJc0EocGF0aHZhbHVlLCBDb25zdCkpOworCXBhdGgtPnZhbHVlID0gcGF0aHZhbHVlOworCWlm IChwYXRobmFtZSkKKwkJcGF0aC0+bmFtZSA9IHBhdGhuYW1lOworCisJcmV0dXJuIHBhdGg7Cit9 CisKKy8qCisgKiBtYWtlSnNvblRhYmxlUGF0aFNwZWMgLQorICoJCU1ha2UgSnNvblRhYmxlUGF0 aFNwZWMgbm9kZSBmcm9tIGdpdmVuIHBhdGggc3RyaW5nIGFuZCBuYW1lIChpZiBhbnkpCisgKi8K K05vZGUgKgorbWFrZUpzb25UYWJsZVBhdGhTcGVjKGNoYXIgKnN0cmluZywgY2hhciAqbmFtZSwg aW50IHN0cmluZ19sb2NhdGlvbiwKKwkJCQkJICBpbnQgbmFtZV9sb2NhdGlvbikKK3sKKwlKc29u VGFibGVQYXRoU3BlYyAqcGF0aHNwZWMgPSBtYWtlTm9kZShKc29uVGFibGVQYXRoU3BlYyk7CisK KwlBc3NlcnQoc3RyaW5nICE9IE5VTEwpOworCXBhdGhzcGVjLT5zdHJpbmcgPSBtYWtlU3RyaW5n Q29uc3Qoc3RyaW5nLCBzdHJpbmdfbG9jYXRpb24pOworCWlmIChuYW1lICE9IE5VTEwpCisJCXBh dGhzcGVjLT5uYW1lID0gcHN0cmR1cChuYW1lKTsKKworCXBhdGhzcGVjLT5uYW1lX2xvY2F0aW9u ID0gbmFtZV9sb2NhdGlvbjsKKwlwYXRoc3BlYy0+bG9jYXRpb24gPSBzdHJpbmdfbG9jYXRpb247 CisKKwlyZXR1cm4gKE5vZGUgKikgcGF0aHNwZWM7Cit9CisKKy8qCisgKiBtYWtlSnNvblRhYmxl RGVmYXVsdFBsYW4gLQorICoJICAgY3JlYXRlcyBhIEpzb25UYWJsZVBsYW5TcGVjIG5vZGUgdG8g cmVwcmVzZW50IGEgImRlZmF1bHQiIEpTT05fVEFCTEUgcGxhbgorICoJICAgd2l0aCBnaXZlbiBq b2luIHN0cmF0ZWd5CisgKi8KK05vZGUgKgorbWFrZUpzb25UYWJsZURlZmF1bHRQbGFuKEpzb25U YWJsZVBsYW5Kb2luVHlwZSBqb2luX3R5cGUsIGludCBsb2NhdGlvbikKK3sKKwlKc29uVGFibGVQ bGFuU3BlYyAqbiA9IG1ha2VOb2RlKEpzb25UYWJsZVBsYW5TcGVjKTsKKworCW4tPnBsYW5fdHlw ZSA9IEpTVFBfREVGQVVMVDsKKwluLT5qb2luX3R5cGUgPSBqb2luX3R5cGU7CisJbi0+bG9jYXRp b24gPSBsb2NhdGlvbjsKKworCXJldHVybiAoTm9kZSAqKSBuOworfQorCisvKgorICogbWFrZUpz b25UYWJsZVNpbXBsZVBsYW4gLQorICoJICAgY3JlYXRlcyBhIEpzb25UYWJsZVBsYW5TcGVjIG5v ZGUgdG8gcmVwcmVzZW50IGEgInNpbXBsZSIgSlNPTl9UQUJMRSBwbGFuCisgKgkgICBmb3IgZ2l2 ZW4gUEFUSAorICovCitOb2RlICoKK21ha2VKc29uVGFibGVTaW1wbGVQbGFuKGNoYXIgKnBhdGhu YW1lLCBpbnQgbG9jYXRpb24pCit7CisJSnNvblRhYmxlUGxhblNwZWMgKm4gPSBtYWtlTm9kZShK c29uVGFibGVQbGFuU3BlYyk7CisKKwluLT5wbGFuX3R5cGUgPSBKU1RQX1NJTVBMRTsKKwluLT5w YXRobmFtZSA9IHBhdGhuYW1lOworCW4tPmxvY2F0aW9uID0gbG9jYXRpb247CisKKwlyZXR1cm4g KE5vZGUgKikgbjsKK30KKworLyoKKyAqIG1ha2VKc29uVGFibGVKb2luZWRQbGFuIC0KKyAqCSAg IGNyZWF0ZXMgYSBKc29uVGFibGVQbGFuU3BlYyBub2RlIHRvIHJlcHJlc2VudCBqb2luIGJldHdl ZW4gdGhlIGdpdmVuCisgKgkgICBwYWlyIG9mIHBsYW5zCisgKi8KK05vZGUgKgorbWFrZUpzb25U YWJsZUpvaW5lZFBsYW4oSnNvblRhYmxlUGxhbkpvaW5UeXBlIHR5cGUsIE5vZGUgKnBsYW4xLCBO b2RlICpwbGFuMiwKKwkJCQkJCWludCBsb2NhdGlvbikKK3sKKwlKc29uVGFibGVQbGFuU3BlYyAq biA9IG1ha2VOb2RlKEpzb25UYWJsZVBsYW5TcGVjKTsKKworCW4tPnBsYW5fdHlwZSA9IEpTVFBf Sk9JTkVEOworCW4tPmpvaW5fdHlwZSA9IHR5cGU7CisJbi0+cGxhbjEgPSBjYXN0Tm9kZShKc29u VGFibGVQbGFuU3BlYywgcGxhbjEpOworCW4tPnBsYW4yID0gY2FzdE5vZGUoSnNvblRhYmxlUGxh blNwZWMsIHBsYW4yKTsKKwluLT5sb2NhdGlvbiA9IGxvY2F0aW9uOworCisJcmV0dXJuIChOb2Rl ICopIG47Cit9CisKIC8qCiAgKiBtYWtlSnNvbktleVZhbHVlIC0KICAqCSAgY3JlYXRlcyBhIEpz b25LZXlWYWx1ZSBub2RlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3Mu YyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCmluZGV4IGY0NWJlZDJhNWQuLjBhZWI2 MWM0ZjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCkBAIC0yNjk5LDYgKzI2OTksMTAgQEAgZXhwcmVz c2lvbl90cmVlX3dhbGtlcl9pbXBsKE5vZGUgKm5vZGUsCiAJCQkJCXJldHVybiB0cnVlOwogCQkJ CWlmIChXQUxLKHRmLT5jb2xkZWZleHBycykpCiAJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChX QUxLKHRmLT5jb2x2YWxleHBycykpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKHRm LT5wYXNzaW5ndmFsZXhwcnMpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOwog CQlkZWZhdWx0OgpAQCAtMzc2OSw2ICszNzczLDggQEAgZXhwcmVzc2lvbl90cmVlX211dGF0b3Jf aW1wbChOb2RlICpub2RlLAogCQkJCU1VVEFURShuZXdub2RlLT5yb3dleHByLCB0Zi0+cm93ZXhw ciwgTm9kZSAqKTsKIAkJCQlNVVRBVEUobmV3bm9kZS0+Y29sZXhwcnMsIHRmLT5jb2xleHBycywg TGlzdCAqKTsKIAkJCQlNVVRBVEUobmV3bm9kZS0+Y29sZGVmZXhwcnMsIHRmLT5jb2xkZWZleHBy cywgTGlzdCAqKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+Y29sdmFsZXhwcnMsIHRmLT5jb2x2YWxl eHBycywgTGlzdCAqKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+cGFzc2luZ3ZhbGV4cHJzLCB0Zi0+ cGFzc2luZ3ZhbGV4cHJzLCBMaXN0ICopOwogCQkJCXJldHVybiAoTm9kZSAqKSBuZXdub2RlOwog CQkJfQogCQkJYnJlYWs7CkBAIC00MTk0LDYgKzQyMDAsMzggQEAgcmF3X2V4cHJlc3Npb25fdHJl ZV93YWxrZXJfaW1wbChOb2RlICpub2RlLAogCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCWJy ZWFrOworCQljYXNlIFRfSnNvblRhYmxlOgorCQkJeworCQkJCUpzb25UYWJsZSAgKmp0ID0gKEpz b25UYWJsZSAqKSBub2RlOworCisJCQkJaWYgKFdBTEsoanQtPmNvbnRleHRfaXRlbSkpCisJCQkJ CXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKGp0LT5wYXRoc3BlYykpCisJCQkJCXJldHVybiB0 cnVlOworCQkJCWlmIChXQUxLKGp0LT5wYXNzaW5nKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJ aWYgKFdBTEsoanQtPmNvbHVtbnMpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhq dC0+b25fZXJyb3IpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNl IFRfSnNvblRhYmxlQ29sdW1uOgorCQkJeworCQkJCUpzb25UYWJsZUNvbHVtbiAqanRjID0gKEpz b25UYWJsZUNvbHVtbiAqKSBub2RlOworCisJCQkJaWYgKFdBTEsoanRjLT50eXBlTmFtZSkpCisJ CQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKGp0Yy0+b25fZW1wdHkpKQorCQkJCQlyZXR1 cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhqdGMtPm9uX2Vycm9yKSkKKwkJCQkJcmV0dXJuIHRydWU7 CisJCQkJaWYgKGp0Yy0+Y29sdHlwZSA9PSBKVENfTkVTVEVEICYmIFdBTEsoanRjLT5jb2x1bW5z KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBUX0pzb25UYWJs ZVBhdGhTcGVjOgorCQkJcmV0dXJuIFdBTEsoKChKc29uVGFibGVQYXRoU3BlYyAqKSBub2RlKS0+ c3RyaW5nKTsKIAkJY2FzZSBUX051bGxUZXN0OgogCQkJcmV0dXJuIFdBTEsoKChOdWxsVGVzdCAq KSBub2RlKS0+YXJnKTsKIAkJY2FzZSBUX0Jvb2xlYW5UZXN0OgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvcGFyc2VyL01ha2VmaWxlCmluZGV4 IDQwMWMxNjY4NmMuLjMxNjJhMDFmMzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9N YWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvTWFrZWZpbGUKQEAgLTIzLDYgKzIzLDcg QEAgT0JKUyA9IFwKIAlwYXJzZV9lbnIubyBcCiAJcGFyc2VfZXhwci5vIFwKIAlwYXJzZV9mdW5j Lm8gXAorCXBhcnNlX2pzb250YWJsZS5vIFwKIAlwYXJzZV9tZXJnZS5vIFwKIAlwYXJzZV9ub2Rl Lm8gXAogCXBhcnNlX29wZXIubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBlOTAwZWRmYjhhLi43OTE1ZTgy NzlmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKQEAgLTE3MCw3ICsxNzAsNiBAQCBzdGF0aWMgdm9pZCB1cGRhdGVS YXdTdG10RW5kKFJhd1N0bXQgKnJzLCBpbnQgZW5kX2xvY2F0aW9uKTsKIHN0YXRpYyBOb2RlICpt YWtlQ29sdW1uUmVmKGNoYXIgKmNvbG5hbWUsIExpc3QgKmluZGlyZWN0aW9uLAogCQkJCQkJICAg aW50IGxvY2F0aW9uLCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcik7CiBzdGF0aWMgTm9kZSAqbWFr ZVR5cGVDYXN0KE5vZGUgKmFyZywgVHlwZU5hbWUgKnR5cGVuYW1lLCBpbnQgbG9jYXRpb24pOwot c3RhdGljIE5vZGUgKm1ha2VTdHJpbmdDb25zdChjaGFyICpzdHIsIGludCBsb2NhdGlvbik7CiBz dGF0aWMgTm9kZSAqbWFrZVN0cmluZ0NvbnN0Q2FzdChjaGFyICpzdHIsIGludCBsb2NhdGlvbiwg VHlwZU5hbWUgKnR5cGVuYW1lKTsKIHN0YXRpYyBOb2RlICptYWtlSW50Q29uc3QoaW50IHZhbCwg aW50IGxvY2F0aW9uKTsKIHN0YXRpYyBOb2RlICptYWtlRmxvYXRDb25zdChjaGFyICpzdHIsIGlu dCBsb2NhdGlvbik7CkBAIC02NTUsMTUgKzY1NCwzMSBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vy c2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkp OwogCQkJCWpzb25fYXJndW1lbnQKIAkJCQlqc29uX2JlaGF2aW9yCiAJCQkJanNvbl9vbl9lcnJv cl9jbGF1c2Vfb3B0CisJCQkJanNvbl90YWJsZQorCQkJCWpzb25fdGFibGVfY29sdW1uX2RlZmlu aXRpb24KKwkJCQlqc29uX3RhYmxlX2NvbHVtbl9wYXRoX2NsYXVzZV9vcHQKKwkJCQlqc29uX3Rh YmxlX3BsYW5fY2xhdXNlX29wdAorCQkJCWpzb25fdGFibGVfcGxhbgorCQkJCWpzb25fdGFibGVf cGxhbl9zaW1wbGUKKwkJCQlqc29uX3RhYmxlX3BsYW5fb3V0ZXIKKwkJCQlqc29uX3RhYmxlX3Bs YW5faW5uZXIKKwkJCQlqc29uX3RhYmxlX3BsYW5fdW5pb24KKwkJCQlqc29uX3RhYmxlX3BsYW5f Y3Jvc3MKKwkJCQlqc29uX3RhYmxlX3BsYW5fcHJpbWFyeQogJXR5cGUgPGxpc3Q+CWpzb25fbmFt ZV9hbmRfdmFsdWVfbGlzdAogCQkJCWpzb25fdmFsdWVfZXhwcl9saXN0CiAJCQkJanNvbl9hcnJh eV9hZ2dyZWdhdGVfb3JkZXJfYnlfY2xhdXNlX29wdAogCQkJCWpzb25fYXJndW1lbnRzCiAJCQkJ anNvbl9iZWhhdmlvcl9jbGF1c2Vfb3B0CiAJCQkJanNvbl9wYXNzaW5nX2NsYXVzZV9vcHQKKwkJ CQlqc29uX3RhYmxlX2NvbHVtbl9kZWZpbml0aW9uX2xpc3QKKyV0eXBlIDxzdHI+CQlqc29uX3Rh YmxlX3BhdGhfbmFtZV9vcHQKICV0eXBlIDxpdmFsPglqc29uX2JlaGF2aW9yX3R5cGUKIAkJCQlq c29uX3ByZWRpY2F0ZV90eXBlX2NvbnN0cmFpbnQKIAkJCQlqc29uX3F1b3Rlc19jbGF1c2Vfb3B0 CisJCQkJanNvbl90YWJsZV9kZWZhdWx0X3BsYW5fY2hvaWNlcworCQkJCWpzb25fdGFibGVfZGVm YXVsdF9wbGFuX2lubmVyX291dGVyCisJCQkJanNvbl90YWJsZV9kZWZhdWx0X3BsYW5fdW5pb25f Y3Jvc3MKIAkJCQlqc29uX3dyYXBwZXJfYmVoYXZpb3IKICV0eXBlIDxib29sZWFuPglqc29uX2tl eV91bmlxdWVuZXNzX2NvbnN0cmFpbnRfb3B0CiAJCQkJanNvbl9vYmplY3RfY29uc3RydWN0b3Jf bnVsbF9jbGF1c2Vfb3B0CkBAIC03MzMsNyArNzQ4LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1 cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5 KTsKIAlJTlRFUlNFQ1QgSU5URVJWQUwgSU5UTyBJTlZPS0VSIElTIElTTlVMTCBJU09MQVRJT04K IAogCUpPSU4gSlNPTiBKU09OX0FSUkFZIEpTT05fQVJSQVlBR0cgSlNPTl9FWElTVFMgSlNPTl9P QkpFQ1QgSlNPTl9PQkpFQ1RBR0cKLQlKU09OX1FVRVJZIEpTT05fU0NBTEFSIEpTT05fU0VSSUFM SVpFIEpTT05fVkFMVUUKKwlKU09OX1FVRVJZIEpTT05fU0NBTEFSIEpTT05fU0VSSUFMSVpFIEpT T05fVEFCTEUgSlNPTl9WQUxVRQogCiAJS0VFUCBLRVkgS0VZUwogCkBAIC03NDQsOCArNzU5LDgg QEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExp c3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlNQVBQSU5HIE1BVENIIE1BVENIRUQgTUFURVJJ QUxJWkVEIE1BWFZBTFVFIE1FUkdFIE1FVEhPRAogCU1JTlVURV9QIE1JTlZBTFVFIE1PREUgTU9O VEhfUCBNT1ZFCiAKLQlOQU1FX1AgTkFNRVMgTkFUSU9OQUwgTkFUVVJBTCBOQ0hBUiBORVcgTkVY VCBORkMgTkZEIE5GS0MgTkZLRCBOTyBOT05FCi0JTk9STUFMSVpFIE5PUk1BTElaRUQKKwlOQU1F X1AgTkFNRVMgTkFUSU9OQUwgTkFUVVJBTCBOQ0hBUiBORVNURUQgTkVXIE5FWFQgTkZDIE5GRCBO RktDIE5GS0QgTk8KKwlOT05FIE5PUk1BTElaRSBOT1JNQUxJWkVECiAJTk9UIE5PVEhJTkcgTk9U SUZZIE5PVE5VTEwgTk9XQUlUIE5VTExfUCBOVUxMSUYKIAlOVUxMU19QIE5VTUVSSUMKIApAQCAt NzUzLDggKzc2OCw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFy ICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJT1JERVIgT1JESU5BTElU WSBPVEhFUlMgT1VUX1AgT1VURVJfUAogCU9WRVIgT1ZFUkxBUFMgT1ZFUkxBWSBPVkVSUklESU5H IE9XTkVEIE9XTkVSCiAKLQlQQVJBTExFTCBQQVJBTUVURVIgUEFSU0VSIFBBUlRJQUwgUEFSVElU SU9OIFBBU1NJTkcgUEFTU1dPUkQKLQlQTEFDSU5HIFBMQU5TIFBPTElDWQorCVBBUkFMTEVMIFBB UkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFTU0lORyBQQVNTV09SRCBQQVRICisJ UExBQ0lORyBQTEFOIFBMQU5TIFBPTElDWQogCVBPU0lUSU9OIFBSRUNFRElORyBQUkVDSVNJT04g UFJFU0VSVkUgUFJFUEFSRSBQUkVQQVJFRCBQUklNQVJZCiAJUFJJT1IgUFJJVklMRUdFUyBQUk9D RURVUkFMIFBST0NFRFVSRSBQUk9DRURVUkVTIFBST0dSQU0gUFVCTElDQVRJT04KIApAQCAtODcy LDEwICs4ODcsMTMgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIg KnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICAqIHRoZSBzYW1lIHByZWNl ZGVuY2UgYXMgSURFTlQuICBUaGlzIGFsbG93cyByZXNvbHZpbmcgY29uZmxpY3RzIGluIHRoZQog ICoganNvbl9wcmVkaWNhdGVfdHlwZV9jb25zdHJhaW50IGFuZCBqc29uX2tleV91bmlxdWVuZXNz X2NvbnN0cmFpbnRfb3B0CiAgKiBwcm9kdWN0aW9ucyAoc2VlIGNvbW1lbnRzIHRoZXJlKS4KKyAq CisgKiBMaWtlIHRoZSBVTkJPVU5ERUQgUFJFQ0VESU5HL0ZPTExPV0lORyBjYXNlLCBORVNURUQg aXMgYXNzaWduZWQgYSBsb3dlcgorICogcHJlY2VkZW5jZSB0aGFuIFBBVEggdG8gZml4IGFtYmln dWl0eSBpbiB0aGUganNvbl90YWJsZSBwcm9kdWN0aW9uLgogICovCi0lbm9uYXNzb2MJVU5CT1VO REVECQkvKiBpZGVhbGx5IHdvdWxkIGhhdmUgc2FtZSBwcmVjZWRlbmNlIGFzIElERU5UICovCisl bm9uYXNzb2MJVU5CT1VOREVEIE5FU1RFRCAvKiBpZGVhbGx5IHdvdWxkIGhhdmUgc2FtZSBwcmVj ZWRlbmNlIGFzIElERU5UICovCiAlbm9uYXNzb2MJSURFTlQgUEFSVElUSU9OIFJBTkdFIFJPV1Mg R1JPVVBTIFBSRUNFRElORyBGT0xMT1dJTkcgQ1VCRSBST0xMVVAKLQkJCVNFVCBLRVlTIE9CSkVD VF9QIFNDQUxBUiBWQUxVRV9QIFdJVEggV0lUSE9VVAorCQkJU0VUIEtFWVMgT0JKRUNUX1AgU0NB TEFSIFZBTFVFX1AgV0lUSCBXSVRIT1VUIFBBVEgKICVsZWZ0CQlPcCBPUEVSQVRPUgkJLyogbXVs dGktY2hhcmFjdGVyIG9wcyBhbmQgdXNlci1kZWZpbmVkIG9wZXJhdG9ycyAqLwogJWxlZnQJCScr JyAnLScKICVsZWZ0CQknKicgJy8nICclJwpAQCAtODk2LDcgKzkxNCw2IEBAIHN0YXRpYyBOb2Rl ICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBO b2RlICpxdWVyeSk7CiAgKiBsZWZ0LWFzc29jaWF0aXZpdHkgYW1vbmcgdGhlIEpPSU4gcnVsZXMg dGhlbXNlbHZlcy4KICAqLwogJWxlZnQJCUpPSU4gQ1JPU1MgTEVGVCBGVUxMIFJJR0hUIElOTkVS X1AgTkFUVVJBTAotCiAlJQogCiAvKgpAQCAtMTM0NDUsNiArMTM0NjIsMjEgQEAgdGFibGVfcmVm OglyZWxhdGlvbl9leHByIG9wdF9hbGlhc19jbGF1c2UKIAkJCQkJJDItPmFsaWFzID0gJDQ7CiAJ CQkJCSQkID0gKE5vZGUgKikgJDI7CiAJCQkJfQorCQkJfCBqc29uX3RhYmxlIG9wdF9hbGlhc19j bGF1c2UKKwkJCQl7CisJCQkJCUpzb25UYWJsZSAgKmp0ID0gY2FzdE5vZGUoSnNvblRhYmxlLCAk MSk7CisKKwkJCQkJanQtPmFsaWFzID0gJDI7CisJCQkJCSQkID0gKE5vZGUgKikganQ7CisJCQkJ fQorCQkJfCBMQVRFUkFMX1AganNvbl90YWJsZSBvcHRfYWxpYXNfY2xhdXNlCisJCQkJeworCQkJ CQlKc29uVGFibGUgICpqdCA9IGNhc3ROb2RlKEpzb25UYWJsZSwgJDIpOworCisJCQkJCWp0LT5h bGlhcyA9ICQzOworCQkJCQlqdC0+bGF0ZXJhbCA9IHRydWU7CisJCQkJCSQkID0gKE5vZGUgKikg anQ7CisJCQkJfQogCQk7CiAKIApAQCAtMTQwMTIsNiArMTQwNDQsOCBAQCB4bWx0YWJsZV9jb2x1 bW5fb3B0aW9uX2VsOgogCQkJCXsgJCQgPSBtYWtlRGVmRWxlbSgiaXNfbm90X251bGwiLCAoTm9k ZSAqKSBtYWtlQm9vbGVhbih0cnVlKSwgQDEpOyB9CiAJCQl8IE5VTExfUAogCQkJCXsgJCQgPSBt YWtlRGVmRWxlbSgiaXNfbm90X251bGwiLCAoTm9kZSAqKSBtYWtlQm9vbGVhbihmYWxzZSksIEAx KTsgfQorCQkJfCBQQVRIIGJfZXhwcgorCQkJCXsgJCQgPSBtYWtlRGVmRWxlbSgicGF0aCIsICQy LCBAMSk7IH0KIAkJOwogCiB4bWxfbmFtZXNwYWNlX2xpc3Q6CkBAIC0xNDA0MCw2ICsxNDA3NCwy MzMgQEAgeG1sX25hbWVzcGFjZV9lbDoKIAkJCQl9CiAJCTsKIAoranNvbl90YWJsZToKKwkJCUpT T05fVEFCTEUgJygnCisJCQkJanNvbl92YWx1ZV9leHByICcsJyBhX2V4cHIganNvbl90YWJsZV9w YXRoX25hbWVfb3B0CisJCQkJanNvbl9wYXNzaW5nX2NsYXVzZV9vcHQKKwkJCQlDT0xVTU5TICco JyBqc29uX3RhYmxlX2NvbHVtbl9kZWZpbml0aW9uX2xpc3QgJyknCisJCQkJanNvbl90YWJsZV9w bGFuX2NsYXVzZV9vcHQKKwkJCQlqc29uX29uX2Vycm9yX2NsYXVzZV9vcHQKKwkJCScpJworCQkJ CXsKKwkJCQkJSnNvblRhYmxlICpuID0gbWFrZU5vZGUoSnNvblRhYmxlKTsKKwkJCQkJY2hhcgkg ICpwYXRoc3RyaW5nOworCisJCQkJCW4tPmNvbnRleHRfaXRlbSA9IChKc29uVmFsdWVFeHByICop ICQzOworCQkJCQlpZiAoIUlzQSgkNSwgQV9Db25zdCkgfHwKKwkJCQkJCWNhc3ROb2RlKEFfQ29u c3QsICQ1KS0+dmFsLm5vZGUudHlwZSAhPSBUX1N0cmluZykKKwkJCQkJCWVyZXBvcnQoRVJST1Is CisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJ CQllcnJtc2coIm9ubHkgc3RyaW5nIGNvbnN0YW50cyBhcmUgc3VwcG9ydGVkIGluIEpTT05fVEFC TEUiCisJCQkJCQkJCQkgICAiIHBhdGggc3BlY2lmaWNhdGlvbiIpLAorCQkJCQkJCQlwYXJzZXJf ZXJycG9zaXRpb24oQDUpKTsKKwkJCQkJcGF0aHN0cmluZyA9IGNhc3ROb2RlKEFfQ29uc3QsICQ1 KS0+dmFsLnN2YWwuc3ZhbDsKKwkJCQkJbi0+cGF0aHNwZWMgPSAoSnNvblRhYmxlUGF0aFNwZWMg KikKKwkJCQkJCW1ha2VKc29uVGFibGVQYXRoU3BlYyhwYXRoc3RyaW5nLCAkNiwgQDUsIEA2KTsK KwkJCQkJbi0+cGFzc2luZyA9ICQ3OworCQkJCQluLT5jb2x1bW5zID0gJDEwOworCQkJCQluLT5w bGFuc3BlYyA9IChKc29uVGFibGVQbGFuU3BlYyAqKSAkMTI7CisJCQkJCW4tPm9uX2Vycm9yID0g KEpzb25CZWhhdmlvciAqKSAkMTM7CisJCQkJCW4tPmxvY2F0aW9uID0gQDE7CisJCQkJCSQkID0g KE5vZGUgKikgbjsKKwkJCQl9CisJCTsKKworanNvbl90YWJsZV9wYXRoX25hbWVfb3B0OgorCQkJ QVMgbmFtZQkJCXsgJCQgPSAkMjsgfQorCQkJfCAvKiBlbXB0eSAqLwl7ICQkID0gTlVMTDsgfQor CQk7CisKK2pzb25fdGFibGVfY29sdW1uX2RlZmluaXRpb25fbGlzdDoKKwkJCWpzb25fdGFibGVf Y29sdW1uX2RlZmluaXRpb24KKwkJCQl7ICQkID0gbGlzdF9tYWtlMSgkMSk7IH0KKwkJCXwganNv bl90YWJsZV9jb2x1bW5fZGVmaW5pdGlvbl9saXN0ICcsJyBqc29uX3RhYmxlX2NvbHVtbl9kZWZp bml0aW9uCisJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQorCQk7CisKK2pzb25fdGFibGVf Y29sdW1uX2RlZmluaXRpb246CisJCQlDb2xJZCBGT1IgT1JESU5BTElUWQorCQkJCXsKKwkJCQkJ SnNvblRhYmxlQ29sdW1uICpuID0gbWFrZU5vZGUoSnNvblRhYmxlQ29sdW1uKTsKKworCQkJCQlu LT5jb2x0eXBlID0gSlRDX0ZPUl9PUkRJTkFMSVRZOworCQkJCQluLT5uYW1lID0gJDE7CisJCQkJ CW4tPmxvY2F0aW9uID0gQDE7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCQl8IENv bElkIFR5cGVuYW1lCisJCQkJanNvbl90YWJsZV9jb2x1bW5fcGF0aF9jbGF1c2Vfb3B0CisJCQkJ anNvbl93cmFwcGVyX2JlaGF2aW9yCisJCQkJanNvbl9xdW90ZXNfY2xhdXNlX29wdAorCQkJCWpz b25fYmVoYXZpb3JfY2xhdXNlX29wdAorCQkJCXsKKwkJCQkJSnNvblRhYmxlQ29sdW1uICpuID0g bWFrZU5vZGUoSnNvblRhYmxlQ29sdW1uKTsKKworCQkJCQluLT5jb2x0eXBlID0gSlRDX1JFR1VM QVI7CisJCQkJCW4tPm5hbWUgPSAkMTsKKwkJCQkJbi0+dHlwZU5hbWUgPSAkMjsKKwkJCQkJbi0+ Zm9ybWF0ID0gbWFrZUpzb25Gb3JtYXQoSlNfRk9STUFUX0RFRkFVTFQsIEpTX0VOQ19ERUZBVUxU LCAtMSk7CisJCQkJCW4tPnBhdGhzcGVjID0gKEpzb25UYWJsZVBhdGhTcGVjICopICQzOworCQkJ CQluLT53cmFwcGVyID0gJDQ7IC8qIGRpc2FsbG93ZWQgZHVyaW5nIHBhcnNlLWFuYWx5c2lzISAq LworCQkJCQluLT5xdW90ZXMgPSAkNTsgLyogZGlzYWxsb3dlZCBkdXJpbmcgcGFyc2UtYW5hbHlz aXMhICovCisJCQkJCW4tPm9uX2VtcHR5ID0gKEpzb25CZWhhdmlvciAqKSBsaW5pdGlhbCgkNik7 CisJCQkJCW4tPm9uX2Vycm9yID0gKEpzb25CZWhhdmlvciAqKSBsc2Vjb25kKCQ2KTsKKwkJCQkJ bi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJCXwgQ29s SWQgVHlwZW5hbWUganNvbl9mb3JtYXRfY2xhdXNlCisJCQkJanNvbl90YWJsZV9jb2x1bW5fcGF0 aF9jbGF1c2Vfb3B0CisJCQkJanNvbl93cmFwcGVyX2JlaGF2aW9yCisJCQkJanNvbl9xdW90ZXNf Y2xhdXNlX29wdAorCQkJCWpzb25fYmVoYXZpb3JfY2xhdXNlX29wdAorCQkJCXsKKwkJCQkJSnNv blRhYmxlQ29sdW1uICpuID0gbWFrZU5vZGUoSnNvblRhYmxlQ29sdW1uKTsKKworCQkJCQluLT5j b2x0eXBlID0gSlRDX0ZPUk1BVFRFRDsKKwkJCQkJbi0+bmFtZSA9ICQxOworCQkJCQluLT50eXBl TmFtZSA9ICQyOworCQkJCQluLT5mb3JtYXQgPSAoSnNvbkZvcm1hdCAqKSAkMzsKKwkJCQkJbi0+ cGF0aHNwZWMgPSAoSnNvblRhYmxlUGF0aFNwZWMgKikgJDQ7CisJCQkJCW4tPndyYXBwZXIgPSAk NTsKKwkJCQkJbi0+cXVvdGVzID0gJDY7CisJCQkJCW4tPm9uX2VtcHR5ID0gKEpzb25CZWhhdmlv ciAqKSBsaW5pdGlhbCgkNyk7CisJCQkJCW4tPm9uX2Vycm9yID0gKEpzb25CZWhhdmlvciAqKSBs c2Vjb25kKCQ3KTsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBu OworCQkJCX0KKwkJCXwgQ29sSWQgVHlwZW5hbWUKKwkJCQlFWElTVFMganNvbl90YWJsZV9jb2x1 bW5fcGF0aF9jbGF1c2Vfb3B0CisJCQkJanNvbl9iZWhhdmlvcl9jbGF1c2Vfb3B0CisJCQkJewor CQkJCQlKc29uVGFibGVDb2x1bW4gKm4gPSBtYWtlTm9kZShKc29uVGFibGVDb2x1bW4pOworCisJ CQkJCW4tPmNvbHR5cGUgPSBKVENfRVhJU1RTOworCQkJCQluLT5uYW1lID0gJDE7CisJCQkJCW4t PnR5cGVOYW1lID0gJDI7CisJCQkJCW4tPmZvcm1hdCA9IG1ha2VKc29uRm9ybWF0KEpTX0ZPUk1B VF9ERUZBVUxULCBKU19FTkNfREVGQVVMVCwgLTEpOworCQkJCQluLT53cmFwcGVyID0gSlNXX05P TkU7CisJCQkJCW4tPnF1b3RlcyA9IEpTX1FVT1RFU19VTlNQRUM7CisJCQkJCW4tPnBhdGhzcGVj ID0gKEpzb25UYWJsZVBhdGhTcGVjICopICQ0OworCQkJCQluLT5vbl9lbXB0eSA9IChKc29uQmVo YXZpb3IgKikgbGluaXRpYWwoJDUpOworCQkJCQluLT5vbl9lcnJvciA9IChKc29uQmVoYXZpb3Ig KikgbHNlY29uZCgkNSk7CisJCQkJCW4tPmxvY2F0aW9uID0gQDE7CisJCQkJCSQkID0gKE5vZGUg KikgbjsKKwkJCQl9CisJCQl8IE5FU1RFRCBwYXRoX29wdCBTY29uc3QKKwkJCQlDT0xVTU5TICco JyBqc29uX3RhYmxlX2NvbHVtbl9kZWZpbml0aW9uX2xpc3QgJyknCisJCQkJeworCQkJCQlKc29u VGFibGVDb2x1bW4gKm4gPSBtYWtlTm9kZShKc29uVGFibGVDb2x1bW4pOworCisJCQkJCW4tPmNv bHR5cGUgPSBKVENfTkVTVEVEOworCQkJCQluLT5wYXRoc3BlYyA9IChKc29uVGFibGVQYXRoU3Bl YyAqKQorCQkJCQkJbWFrZUpzb25UYWJsZVBhdGhTcGVjKCQzLCBOVUxMLCBAMywgLTEpOworCQkJ CQluLT5jb2x1bW5zID0gJDY7CisJCQkJCW4tPmxvY2F0aW9uID0gQDE7CisJCQkJCSQkID0gKE5v ZGUgKikgbjsKKwkJCQl9CisJCQl8IE5FU1RFRCBwYXRoX29wdCBTY29uc3QgQVMgbmFtZQorCQkJ CUNPTFVNTlMgJygnIGpzb25fdGFibGVfY29sdW1uX2RlZmluaXRpb25fbGlzdCAnKScKKwkJCQl7 CisJCQkJCUpzb25UYWJsZUNvbHVtbiAqbiA9IG1ha2VOb2RlKEpzb25UYWJsZUNvbHVtbik7CisK KwkJCQkJbi0+Y29sdHlwZSA9IEpUQ19ORVNURUQ7CisJCQkJCW4tPnBhdGhzcGVjID0gKEpzb25U YWJsZVBhdGhTcGVjICopCisJCQkJCQltYWtlSnNvblRhYmxlUGF0aFNwZWMoJDMsICQ1LCBAMywg QDUpOworCQkJCQluLT5jb2x1bW5zID0gJDg7CisJCQkJCW4tPmxvY2F0aW9uID0gQDE7CisJCQkJ CSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCTsKKworcGF0aF9vcHQ6CisJCQlQQVRICisJCQl8 IC8qIEVNUFRZICovCisJCTsKKworanNvbl90YWJsZV9jb2x1bW5fcGF0aF9jbGF1c2Vfb3B0Ogor CQkJUEFUSCBTY29uc3QKKwkJCQl7ICQkID0gbWFrZUpzb25UYWJsZVBhdGhTcGVjKCQyLCBOVUxM LCBAMiwgLTEpOyB9CisJCQl8IC8qIEVNUFRZICovCisJCQkJeyAkJCA9IE5VTEw7IH0KKwkJOwor Citqc29uX3RhYmxlX3BsYW5fY2xhdXNlX29wdDoKKwkJCVBMQU4gJygnIGpzb25fdGFibGVfcGxh biAnKScKKwkJCQl7ICQkID0gJDM7IH0KKwkJCXwgUExBTiBERUZBVUxUICcoJyBqc29uX3RhYmxl X2RlZmF1bHRfcGxhbl9jaG9pY2VzICcpJworCQkJCXsgJCQgPSBtYWtlSnNvblRhYmxlRGVmYXVs dFBsYW4oJDQsIEAxKTsgfQorCQkJfCAvKiBFTVBUWSAqLworCQkJCXsgJCQgPSBOVUxMOyB9CisJ CTsKKworanNvbl90YWJsZV9wbGFuOgorCQkJanNvbl90YWJsZV9wbGFuX3NpbXBsZQorCQkJfCBq c29uX3RhYmxlX3BsYW5fb3V0ZXIKKwkJCXwganNvbl90YWJsZV9wbGFuX2lubmVyCisJCQl8IGpz b25fdGFibGVfcGxhbl91bmlvbgorCQkJfCBqc29uX3RhYmxlX3BsYW5fY3Jvc3MKKwkJOworCitq c29uX3RhYmxlX3BsYW5fc2ltcGxlOgorCQkJbmFtZQorCQkJCXsgJCQgPSBtYWtlSnNvblRhYmxl U2ltcGxlUGxhbigkMSwgQDEpOyB9CisJCTsKKworanNvbl90YWJsZV9wbGFuX291dGVyOgorCQkJ anNvbl90YWJsZV9wbGFuX3NpbXBsZSBPVVRFUl9QIGpzb25fdGFibGVfcGxhbl9wcmltYXJ5CisJ CQkJeyAkJCA9IG1ha2VKc29uVGFibGVKb2luZWRQbGFuKEpTVFBfSk9JTl9PVVRFUiwgJDEsICQz LCBAMSk7IH0KKwkJOworCitqc29uX3RhYmxlX3BsYW5faW5uZXI6CisJCQlqc29uX3RhYmxlX3Bs YW5fc2ltcGxlIElOTkVSX1AganNvbl90YWJsZV9wbGFuX3ByaW1hcnkKKwkJCQl7ICQkID0gbWFr ZUpzb25UYWJsZUpvaW5lZFBsYW4oSlNUUF9KT0lOX0lOTkVSLCAkMSwgJDMsIEAxKTsgfQorCQk7 CisKK2pzb25fdGFibGVfcGxhbl91bmlvbjoKKwkJCWpzb25fdGFibGVfcGxhbl9wcmltYXJ5IFVO SU9OIGpzb25fdGFibGVfcGxhbl9wcmltYXJ5CisJCQkJeyAkJCA9IG1ha2VKc29uVGFibGVKb2lu ZWRQbGFuKEpTVFBfSk9JTl9VTklPTiwgJDEsICQzLCBAMSk7IH0KKwkJCXwganNvbl90YWJsZV9w bGFuX3VuaW9uIFVOSU9OIGpzb25fdGFibGVfcGxhbl9wcmltYXJ5CisJCQkJeyAkJCA9IG1ha2VK c29uVGFibGVKb2luZWRQbGFuKEpTVFBfSk9JTl9VTklPTiwgJDEsICQzLCBAMSk7IH0KKwkJOwor Citqc29uX3RhYmxlX3BsYW5fY3Jvc3M6CisJCQlqc29uX3RhYmxlX3BsYW5fcHJpbWFyeSBDUk9T UyBqc29uX3RhYmxlX3BsYW5fcHJpbWFyeQorCQkJCXsgJCQgPSBtYWtlSnNvblRhYmxlSm9pbmVk UGxhbihKU1RQX0pPSU5fQ1JPU1MsICQxLCAkMywgQDEpOyB9CisJCQl8IGpzb25fdGFibGVfcGxh bl9jcm9zcyBDUk9TUyBqc29uX3RhYmxlX3BsYW5fcHJpbWFyeQorCQkJCXsgJCQgPSBtYWtlSnNv blRhYmxlSm9pbmVkUGxhbihKU1RQX0pPSU5fQ1JPU1MsICQxLCAkMywgQDEpOyB9CisJCTsKKwor anNvbl90YWJsZV9wbGFuX3ByaW1hcnk6CisJCQlqc29uX3RhYmxlX3BsYW5fc2ltcGxlCisJCQkJ eyAkJCA9ICQxOyB9CisJCQl8ICcoJyBqc29uX3RhYmxlX3BsYW4gJyknCisJCQkJeworCQkJCQlj YXN0Tm9kZShKc29uVGFibGVQbGFuU3BlYywgJDIpLT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9 ICQyOworCQkJCX0KKwkJOworCitqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl9jaG9pY2VzOgorCQkJ anNvbl90YWJsZV9kZWZhdWx0X3BsYW5faW5uZXJfb3V0ZXIKKwkJCQl7ICQkID0gJDEgfCBKU1RQ X0pPSU5fVU5JT047IH0KKwkJCXwganNvbl90YWJsZV9kZWZhdWx0X3BsYW5fdW5pb25fY3Jvc3MK KwkJCQl7ICQkID0gJDEgfCBKU1RQX0pPSU5fT1VURVI7IH0KKwkJCXwganNvbl90YWJsZV9kZWZh dWx0X3BsYW5faW5uZXJfb3V0ZXIgJywnIGpzb25fdGFibGVfZGVmYXVsdF9wbGFuX3VuaW9uX2Ny b3NzCisJCQkJeyAkJCA9ICQxIHwgJDM7IH0KKwkJCXwganNvbl90YWJsZV9kZWZhdWx0X3BsYW5f dW5pb25fY3Jvc3MgJywnIGpzb25fdGFibGVfZGVmYXVsdF9wbGFuX2lubmVyX291dGVyCisJCQkJ eyAkJCA9ICQxIHwgJDM7IH0KKwkJOworCitqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl9pbm5lcl9v dXRlcjoKKwkJCUlOTkVSX1AJCQkJCQl7ICQkID0gSlNUUF9KT0lOX0lOTkVSOyB9CisJCQl8IE9V VEVSX1AJCQkJCXsgJCQgPSBKU1RQX0pPSU5fT1VURVI7IH0KKwkJOworCitqc29uX3RhYmxlX2Rl ZmF1bHRfcGxhbl91bmlvbl9jcm9zczoKKwkJCVVOSU9OCQkJCQkJeyAkJCA9IEpTVFBfSk9JTl9V TklPTjsgfQorCQkJfCBDUk9TUwkJCQkJCXsgJCQgPSBKU1RQX0pPSU5fQ1JPU1M7IH0KKwkJOwor CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKglUeXBlIHN5bnRheApAQCAtMTc0NDEsNiAr MTc3MDIsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IE1PVkUKIAkJCXwgTkFNRV9QCiAJ CQl8IE5BTUVTCisJCQl8IE5FU1RFRAogCQkJfCBORVcKIAkJCXwgTkVYVAogCQkJfCBORkMKQEAg LTE3NDc1LDYgKzE3NzM3LDggQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBQQVJUSVRJT04K IAkJCXwgUEFTU0lORwogCQkJfCBQQVNTV09SRAorCQkJfCBQQVRICisJCQl8IFBMQU4KIAkJCXwg UExBTlMKIAkJCXwgUE9MSUNZCiAJCQl8IFBSRUNFRElORwpAQCAtMTc2MzksNiArMTc5MDMsNyBA QCBjb2xfbmFtZV9rZXl3b3JkOgogCQkJfCBKU09OX1FVRVJZCiAJCQl8IEpTT05fU0NBTEFSCiAJ CQl8IEpTT05fU0VSSUFMSVpFCisJCQl8IEpTT05fVEFCTEUKIAkJCXwgSlNPTl9WQUxVRQogCQkJ fCBMRUFTVAogCQkJfCBOQVRJT05BTApAQCAtMTgwMDcsNiArMTgyNzIsNyBAQCBiYXJlX2xhYmVs X2tleXdvcmQ6CiAJCQl8IEpTT05fUVVFUlkKIAkJCXwgSlNPTl9TQ0FMQVIKIAkJCXwgSlNPTl9T RVJJQUxJWkUKKwkJCXwgSlNPTl9UQUJMRQogCQkJfCBKU09OX1ZBTFVFCiAJCQl8IEtFRVAKIAkJ CXwgS0VZCkBAIC0xODA0Niw2ICsxODMxMiw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwg TkFUSU9OQUwKIAkJCXwgTkFUVVJBTAogCQkJfCBOQ0hBUgorCQkJfCBORVNURUQKIAkJCXwgTkVX CiAJCQl8IE5FWFQKIAkJCXwgTkZDCkBAIC0xODA5MCw3ICsxODM1Nyw5IEBAIGJhcmVfbGFiZWxf a2V5d29yZDoKIAkJCXwgUEFSVElUSU9OCiAJCQl8IFBBU1NJTkcKIAkJCXwgUEFTU1dPUkQKKwkJ CXwgUEFUSAogCQkJfCBQTEFDSU5HCisJCQl8IFBMQU4KIAkJCXwgUExBTlMKIAkJCXwgUE9MSUNZ CiAJCQl8IFBPU0lUSU9OCkBAIC0xODM1OCwxOCArMTg2MjcsNiBAQCBtYWtlVHlwZUNhc3QoTm9k ZSAqYXJnLCBUeXBlTmFtZSAqdHlwZW5hbWUsIGludCBsb2NhdGlvbikKIAlyZXR1cm4gKE5vZGUg KikgbjsKIH0KIAotc3RhdGljIE5vZGUgKgotbWFrZVN0cmluZ0NvbnN0KGNoYXIgKnN0ciwgaW50 IGxvY2F0aW9uKQotewotCUFfQ29uc3QJICAgKm4gPSBtYWtlTm9kZShBX0NvbnN0KTsKLQotCW4t PnZhbC5zdmFsLnR5cGUgPSBUX1N0cmluZzsKLQluLT52YWwuc3ZhbC5zdmFsID0gc3RyOwotCW4t PmxvY2F0aW9uID0gbG9jYXRpb247Ci0KLSAgIHJldHVybiAoTm9kZSAqKSBuOwotfQotCiBzdGF0 aWMgTm9kZSAqCiBtYWtlU3RyaW5nQ29uc3RDYXN0KGNoYXIgKnN0ciwgaW50IGxvY2F0aW9uLCBU eXBlTmFtZSAqdHlwZW5hbWUpCiB7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvbWVz b24uYnVpbGQgYi9zcmMvYmFja2VuZC9wYXJzZXIvbWVzb24uYnVpbGQKaW5kZXggOGU4Mjk1NjQw Yi4uNTczZDcwYjNkMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL21lc29uLmJ1aWxk CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9tZXNvbi5idWlsZApAQCAtMTAsNiArMTAsNyBAQCBi YWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICdwYXJzZV9lbnIuYycsCiAgICdwYXJzZV9leHBy LmMnLAogICAncGFyc2VfZnVuYy5jJywKKyAgJ3BhcnNlX2pzb250YWJsZS5jJywKICAgJ3BhcnNl X21lcmdlLmMnLAogICAncGFyc2Vfbm9kZS5jJywKICAgJ3BhcnNlX29wZXIuYycsCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNlLmMgYi9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfY2xhdXNlLmMKaW5kZXggZDJhYzg2Nzc3Yy4uODE4ZGM1M2FlYiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVzZS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9jbGF1c2UuYwpAQCAtNjk1LDcgKzY5NSwxMSBAQCB0cmFuc2Zvcm1SYW5nZVRh YmxlRnVuYyhQYXJzZVN0YXRlICpwc3RhdGUsIFJhbmdlVGFibGVGdW5jICpydGYpCiAJY2hhcgkg ICoqbmFtZXM7CiAJaW50CQkJY29sbm87CiAKLQkvKiBDdXJyZW50bHkgb25seSBYTUxUQUJMRSBp cyBzdXBwb3J0ZWQgKi8KKwkvKgorCSAqIEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgWE1MVEFC TEUgaGVyZS4gIFNlZSB0cmFuc2Zvcm1Kc29uVGFibGUoKSBmb3IKKwkgKiBKU09OX1RBQkxFIHN1 cHBvcnQuCisJICovCisJdGYtPmZ1bmN0eXBlID0gVEZUX1hNTFRBQkxFOwogCWNvbnN0cnVjdE5h bWUgPSAiWE1MVEFCTEUiOwogCWRvY1R5cGUgPSBYTUxPSUQ7CiAKQEAgLTExMDIsMTMgKzExMDYs MTcgQEAgdHJhbnNmb3JtRnJvbUNsYXVzZUl0ZW0oUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpu LAogCQlydHItPnJ0aW5kZXggPSBuc2l0ZW0tPnBfcnRpbmRleDsKIAkJcmV0dXJuIChOb2RlICop IHJ0cjsKIAl9Ci0JZWxzZSBpZiAoSXNBKG4sIFJhbmdlVGFibGVGdW5jKSkKKwllbHNlIGlmIChJ c0EobiwgUmFuZ2VUYWJsZUZ1bmMpIHx8IElzQShuLCBKc29uVGFibGUpKQogCXsKIAkJLyogdGFi bGUgZnVuY3Rpb24gaXMgbGlrZSBhIHBsYWluIHJlbGF0aW9uICovCiAJCVJhbmdlVGJsUmVmICpy dHI7CiAJCVBhcnNlTmFtZXNwYWNlSXRlbSAqbnNpdGVtOwogCi0JCW5zaXRlbSA9IHRyYW5zZm9y bVJhbmdlVGFibGVGdW5jKHBzdGF0ZSwgKFJhbmdlVGFibGVGdW5jICopIG4pOworCQlpZiAoSXNB KG4sIFJhbmdlVGFibGVGdW5jKSkKKwkJCW5zaXRlbSA9IHRyYW5zZm9ybVJhbmdlVGFibGVGdW5j KHBzdGF0ZSwgKFJhbmdlVGFibGVGdW5jICopIG4pOworCQllbHNlCisJCQluc2l0ZW0gPSB0cmFu c2Zvcm1Kc29uVGFibGUocHN0YXRlLCAoSnNvblRhYmxlICopIG4pOworCiAJCSp0b3BfbnNpdGVt ID0gbnNpdGVtOwogCQkqbmFtZXNwYWNlID0gbGlzdF9tYWtlMShuc2l0ZW0pOwogCQlydHIgPSBt YWtlTm9kZShSYW5nZVRibFJlZik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCA1MzQyNmZh YzUzLi42NTU3YjA3ZjA0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhw ci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTQyMTksNyArNDIx OSw4IEBAIHRyYW5zZm9ybUpzb25TZXJpYWxpemVFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNv blNlcmlhbGl6ZUV4cHIgKmV4cHIpCiB9CiAKIC8qCi0gKiBUcmFuc2Zvcm0gSlNPTl9WQUxVRSwg SlNPTl9RVUVSWSwgSlNPTl9FWElTVFMgZnVuY3Rpb25zIGludG8gYSBKc29uRXhwciBub2RlLgor ICogVHJhbnNmb3JtIEpTT05fVkFMVUUsIEpTT05fUVVFUlksIEpTT05fRVhJU1RTLCBKU09OX1RB QkxFIGZ1bmN0aW9ucyBpbnRvCisgKiBhIEpzb25FeHByIG5vZGUuCiAgKi8KIHN0YXRpYyBOb2Rl ICoKIHRyYW5zZm9ybUpzb25GdW5jRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25GdW5jRXhw ciAqZnVuYykKQEAgLTQyMzgsNiArNDIzOSw5IEBAIHRyYW5zZm9ybUpzb25GdW5jRXhwcihQYXJz ZVN0YXRlICpwc3RhdGUsIEpzb25GdW5jRXhwciAqZnVuYykKIAkJY2FzZSBKU09OX1ZBTFVFX09Q OgogCQkJZnVuY19uYW1lID0gIkpTT05fVkFMVUUiOwogCQkJYnJlYWs7CisJCWNhc2UgSlNPTl9U QUJMRV9PUDoKKwkJCWZ1bmNfbmFtZSA9ICJKU09OX1RBQkxFIjsKKwkJCWJyZWFrOwogCQlkZWZh dWx0OgogCQkJZWxvZyhFUlJPUiwgImludmFsaWQgSnNvbkZ1bmNFeHByIG9wIik7CiAJCQlicmVh azsKQEAgLTQyODIsNiArNDI4Niw0MiBAQCB0cmFuc2Zvcm1Kc29uRnVuY0V4cHIoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBKc29uRnVuY0V4cHIgKmZ1bmMpCiAJCQkJanNleHByLT5yZXR1cm5pbmctPnR5 cG1vZCA9IC0xOwogCQkJfQogCisJCQkvKiBKU09OX1RBQkxFKCkgQ09MVU1OUyBjYW4gc3BlY2lm eSBhIG5vbi1ib29sZWFuIHR5cGUuICovCisJCQlpZiAoanNleHByLT5yZXR1cm5pbmctPnR5cGlk ICE9IEJPT0xPSUQpCisJCQl7CisJCQkJTm9kZQkgICAqY29lcmNpb25fZXhwcjsKKwkJCQlDYXNl VGVzdEV4cHIgKnBsYWNlaG9sZGVyID0gbWFrZU5vZGUoQ2FzZVRlc3RFeHByKTsKKwkJCQlpbnQJ CQlsb2NhdGlvbiA9IGV4cHJMb2NhdGlvbigoTm9kZSAqKSBqc2V4cHIpOworCisJCQkJLyoKKwkJ CQkgKiBXZSBhYnVzZSBDYXNlVGVzdEV4cHIgaGVyZSBhcyBwbGFjZWhvbGRlciB0byBwYXNzIHRo ZQorCQkJCSAqIHJlc3VsdCBvZiBldmFsdWF0aW5nIEpTT05fRVhJU1RTIHRvIHRoZSBjb2VyY2lv bgorCQkJCSAqIGV4cHJlc3Npb24uCisJCQkJICovCisJCQkJcGxhY2Vob2xkZXItPnR5cGVJZCA9 IEJPT0xPSUQ7CisJCQkJcGxhY2Vob2xkZXItPnR5cGVNb2QgPSAtMTsKKwkJCQlwbGFjZWhvbGRl ci0+Y29sbGF0aW9uID0gSW52YWxpZE9pZDsKKworCQkJCWNvZXJjaW9uX2V4cHIgPQorCQkJCQlj b2VyY2VfdG9fdGFyZ2V0X3R5cGUocHN0YXRlLCAoTm9kZSAqKSBwbGFjZWhvbGRlciwgQk9PTE9J RCwKKwkJCQkJCQkJCQkgIGpzZXhwci0+cmV0dXJuaW5nLT50eXBpZCwKKwkJCQkJCQkJCQkgIGpz ZXhwci0+cmV0dXJuaW5nLT50eXBtb2QsCisJCQkJCQkJCQkJICBDT0VSQ0lPTl9FWFBMSUNJVCwK KwkJCQkJCQkJCQkgIENPRVJDRV9JTVBMSUNJVF9DQVNULAorCQkJCQkJCQkJCSAgbG9jYXRpb24p OworCisJCQkJaWYgKGNvZXJjaW9uX2V4cHIgPT0gTlVMTCkKKwkJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0NBTk5PVF9DT0VSQ0UpLAorCQkJCQkJCSBlcnJtc2co ImNhbm5vdCBjYXN0IHR5cGUgJXMgdG8gJXMiLAorCQkJCQkJCQkJZm9ybWF0X3R5cGVfYmUoQk9P TE9JRCksCisJCQkJCQkJCQlmb3JtYXRfdHlwZV9iZShqc2V4cHItPnJldHVybmluZy0+dHlwaWQp KSwKKwkJCQkJCQkgcGFyc2VyX2NvZXJjaW9uX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24s IChOb2RlICopIGpzZXhwcikpKTsKKworCQkJCWlmIChjb2VyY2lvbl9leHByICE9IChOb2RlICop IHBsYWNlaG9sZGVyKQorCQkJCQlqc2V4cHItPnJlc3VsdF9jb2VyY2lvbiA9IGNvZXJjaW9uX2V4 cHI7CisJCQl9CisKIAkJCWpzZXhwci0+b25fZXJyb3IgPSB0cmFuc2Zvcm1Kc29uQmVoYXZpb3Io cHN0YXRlLCBmdW5jLT5vbl9lcnJvciwKIAkJCQkJCQkJCQkJCQkgSlNPTl9CRUhBVklPUl9GQUxT RSwKIAkJCQkJCQkJCQkJCQkganNleHByLT5yZXR1cm5pbmcpOwpAQCAtNDM1Niw2ICs0Mzk2LDE3 IEBAIHRyYW5zZm9ybUpzb25GdW5jRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25GdW5jRXhw ciAqZnVuYykKIAkJCQkJCQkJCQkJCQkganNleHByLT5yZXR1cm5pbmcpOwogCQkJYnJlYWs7CiAK KwkJY2FzZSBKU09OX1RBQkxFX09QOgorCQkJaWYgKCFPaWRJc1ZhbGlkKGpzZXhwci0+cmV0dXJu aW5nLT50eXBpZCkpCisJCQl7CisJCQkJanNleHByLT5yZXR1cm5pbmctPnR5cGlkID0gZXhwclR5 cGUoanNleHByLT5mb3JtYXR0ZWRfZXhwcik7CisJCQkJanNleHByLT5yZXR1cm5pbmctPnR5cG1v ZCA9IC0xOworCQkJfQorCQkJanNleHByLT5vbl9lcnJvciA9IHRyYW5zZm9ybUpzb25CZWhhdmlv cihwc3RhdGUsIGZ1bmMtPm9uX2Vycm9yLAorCQkJCQkJCQkJCQkJCSBKU09OX0JFSEFWSU9SX0VN UFRZLAorCQkJCQkJCQkJCQkJCSBqc2V4cHItPnJldHVybmluZyk7CisJCQlicmVhazsKKwogCQlk ZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgImludmFsaWQgSnNvbkZ1bmNFeHByIG9wIik7CiAJCQli cmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9qc29udGFibGUuYyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9qc29udGFibGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwLi5hNGI0MWZiOWUwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX2pzb250YWJsZS5jCkBAIC0wLDAgKzEsNzE4IEBACisvKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqCisgKiBwYXJzZV9qc29udGFibGUuYworICoJICBwYXJzaW5nIG9mIEpT T05fVEFCTEUKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNCwgUG9zdGdy ZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykg MTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICoKKyAq IElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9qc29udGFibGUu YworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgor CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIKKyNpbmNsdWRlICJjYXRhbG9nL3Bn X3R5cGUuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJub2Rlcy9tYWtlZnVu Y3MuaCIKKyNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIv b3B0aW1pemVyLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NsYXVzZS5oIgorI2luY2x1ZGUg InBhcnNlci9wYXJzZV9jb2xsYXRlLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2V4cHIuaCIK KyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFy c2VfdHlwZS5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMv anNvbi5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorCisvKiBDb250ZXh0IGZvciBK U09OX1RBQkxFIHRyYW5zZm9ybWF0aW9uICovCit0eXBlZGVmIHN0cnVjdCBKc29uVGFibGVQYXJz ZUNvbnRleHQKK3sKKwlQYXJzZVN0YXRlICpwc3RhdGU7CQkJLyogcGFyc2luZyBzdGF0ZSAqLwor CUpzb25UYWJsZSAgKnRhYmxlOwkJCS8qIHVudHJhbnNmb3JtZWQgbm9kZSAqLworCVRhYmxlRnVu YyAgKnRhYmxlZnVuYzsJCS8qIHRyYW5zZm9ybWVkIG5vZGUJKi8KKwlMaXN0CSAgICpwYXRoTmFt ZXM7CQkvKiBsaXN0IG9mIGFsbCBwYXRoIGFuZCBjb2x1bW5zIG5hbWVzICovCisJaW50CQkJcGF0 aE5hbWVJZDsJCS8qIHBhdGggbmFtZSBpZCBjb3VudGVyICovCisJT2lkCQkJY29udGV4dEl0ZW1U eXBpZDsJLyogdHlwZSBvaWQgb2YgY29udGV4dCBpdGVtIChqc29uL2pzb25iKSAqLworfQkJCUpz b25UYWJsZVBhcnNlQ29udGV4dDsKKworc3RhdGljIEpzb25UYWJsZVBsYW4gKnRyYW5zZm9ybUpz b25UYWJsZUNvbHVtbnMoSnNvblRhYmxlUGFyc2VDb250ZXh0ICogY3h0LAorCQkJCQkJCQkJCQkJ SnNvblRhYmxlUGxhblNwZWMgKnBsYW5zcGVjLAorCQkJCQkJCQkJCQkJTGlzdCAqY29sdW1ucywK KwkJCQkJCQkJCQkJCUpzb25UYWJsZVBhdGhTcGVjICpwYXRoc3BlYyk7CisKKy8qCisgKiBUcmFu c2Zvcm0gSlNPTl9UQUJMRSBjb2x1bW4KKyAqICAgLSByZWd1bGFyIGNvbHVtbiBpbnRvIEpTT05f VkFMVUUoKQorICogICAtIEZPUk1BVCBKU09OIGNvbHVtbiBpbnRvIEpTT05fUVVFUlkoKQorICog ICAtIEVYSVNUUyBjb2x1bW4gaW50byBKU09OX0VYSVNUUygpCisgKi8KK3N0YXRpYyBOb2RlICoK K3RyYW5zZm9ybUpzb25UYWJsZUNvbHVtbihKc29uVGFibGVDb2x1bW4gKmp0YywgTm9kZSAqY29u dGV4dEl0ZW1FeHByLAorCQkJCQkJIExpc3QgKnBhc3NpbmdBcmdzLCBib29sIGVycm9yT25FcnJv cikKK3sKKwlKc29uRnVuY0V4cHIgKmpmZXhwciA9IG1ha2VOb2RlKEpzb25GdW5jRXhwcik7CisJ Tm9kZQkgICAqcGF0aHNwZWM7CisJSnNvbkZvcm1hdCAqZGVmYXVsdF9mb3JtYXQ7CisKKwlpZiAo anRjLT5jb2x0eXBlID09IEpUQ19SRUdVTEFSKQorCQlqZmV4cHItPm9wID0gSlNPTl9WQUxVRV9P UDsKKwllbHNlIGlmIChqdGMtPmNvbHR5cGUgPT0gSlRDX0VYSVNUUykKKwkJamZleHByLT5vcCA9 IEpTT05fRVhJU1RTX09QOworCWVsc2UKKwkJamZleHByLT5vcCA9IEpTT05fUVVFUllfT1A7CisJ amZleHByLT5vdXRwdXQgPSBtYWtlTm9kZShKc29uT3V0cHV0KTsKKwlqZmV4cHItPm9uX2VtcHR5 ID0ganRjLT5vbl9lbXB0eTsKKwlqZmV4cHItPm9uX2Vycm9yID0ganRjLT5vbl9lcnJvcjsKKwlp ZiAoamZleHByLT5vbl9lcnJvciA9PSBOVUxMICYmIGVycm9yT25FcnJvcikKKwkJamZleHByLT5v bl9lcnJvciA9IG1ha2VKc29uQmVoYXZpb3IoSlNPTl9CRUhBVklPUl9FUlJPUiwgTlVMTCwKKwkJ CQkJCQkJCQkJTlVMTCwgLTEpOworCWpmZXhwci0+cXVvdGVzID0ganRjLT5xdW90ZXM7CisJamZl eHByLT53cmFwcGVyID0ganRjLT53cmFwcGVyOworCWpmZXhwci0+bG9jYXRpb24gPSBqdGMtPmxv Y2F0aW9uOworCisJamZleHByLT5vdXRwdXQtPnR5cGVOYW1lID0ganRjLT50eXBlTmFtZTsKKwlq ZmV4cHItPm91dHB1dC0+cmV0dXJuaW5nID0gbWFrZU5vZGUoSnNvblJldHVybmluZyk7CisJamZl eHByLT5vdXRwdXQtPnJldHVybmluZy0+Zm9ybWF0ID0ganRjLT5mb3JtYXQ7CisKKwlkZWZhdWx0 X2Zvcm1hdCA9IG1ha2VKc29uRm9ybWF0KEpTX0ZPUk1BVF9ERUZBVUxULCBKU19FTkNfREVGQVVM VCwgLTEpOworCisJaWYgKGp0Yy0+cGF0aHNwZWMpCisJCXBhdGhzcGVjID0gKE5vZGUgKikganRj LT5wYXRoc3BlYy0+c3RyaW5nOworCWVsc2UKKwl7CisJCS8qIENvbnN0cnVjdCBkZWZhdWx0IHBh dGggYXMgJyQuImNvbHVtbl9uYW1lIicgKi8KKwkJU3RyaW5nSW5mb0RhdGEgcGF0aDsKKworCQlp bml0U3RyaW5nSW5mbygmcGF0aCk7CisKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmcGF0aCwg IiQuIik7CisJCWVzY2FwZV9qc29uKCZwYXRoLCBqdGMtPm5hbWUpOworCisJCXBhdGhzcGVjID0g bWFrZVN0cmluZ0NvbnN0KHBhdGguZGF0YSwgLTEpOworCX0KKworCWpmZXhwci0+Y29udGV4dF9p dGVtID0JbWFrZUpzb25WYWx1ZUV4cHIoKEV4cHIgKikgY29udGV4dEl0ZW1FeHByLCBOVUxMLAor CQkJCQkJCQkJCQkgIGRlZmF1bHRfZm9ybWF0KTsKKwlqZmV4cHItPnBhdGhzcGVjID0gcGF0aHNw ZWM7CisJamZleHByLT5wYXRobmFtZSA9IE5VTEw7CisJamZleHByLT5wYXNzaW5nID0gcGFzc2lu Z0FyZ3M7CisKKwlyZXR1cm4gKE5vZGUgKikgamZleHByOworfQorCisvKgorICogUmVnaXN0ZXIg YSBjb2x1bW4vcGF0aCBuYW1lIGluIHRoZSBwYXRoIG5hbWUgbGlzdCwgZmxhZ2dpbmcgaWYgdGhl IG5hbWUgaXMKKyAqIGFscmVhZHkgdGFrZW4gYnkgYW5vdGhlciBjb2x1bW4vcGF0aC4KKyAqLwor c3RhdGljIHZvaWQKK3JlZ2lzdGVySnNvblRhYmxlQ29sdW1uKEpzb25UYWJsZVBhcnNlQ29udGV4 dCAqIGN4dCwgY2hhciAqY29sbmFtZSwKKwkJCQkJCWludCBsb2NhdGlvbikKK3sKKwlMaXN0Q2Vs bCAgICpsYzsKKworCWZvcmVhY2gobGMsIGN4dC0+cGF0aE5hbWVzKQorCXsKKwkJaWYgKHN0cmNt cChjb2xuYW1lLCAoY29uc3QgY2hhciAqKSBsZmlyc3QobGMpKSA9PSAwKQorCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9BTElBUyksCisJCQkJCWVycm1z ZygiZHVwbGljYXRlIEpTT05fVEFCTEUgY29sdW1uIG5hbWU6ICVzIiwgY29sbmFtZSksCisJCQkJ CXBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgbG9jYXRpb24pKTsKKwl9CisKKwljeHQt PnBhdGhOYW1lcyA9IGxhcHBlbmQoY3h0LT5wYXRoTmFtZXMsIGNvbG5hbWUpOworfQorCitzdGF0 aWMgdm9pZAorcmVnaXN0ZXJKc29uVGFibGVQYXRoKEpzb25UYWJsZVBhcnNlQ29udGV4dCAqIGN4 dCwgY2hhciAqcGF0aG5hbWUsCisJCQkJCSAgaW50IGxvY2F0aW9uKQoreworCUxpc3RDZWxsICAg KmxjOworCisJZm9yZWFjaChsYywgY3h0LT5wYXRoTmFtZXMpCisJeworCQlpZiAoc3RyY21wKHBh dGhuYW1lLCAoY29uc3QgY2hhciAqKSBsZmlyc3QobGMpKSA9PSAwKQorCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9BTElBUyksCisJCQkJCWVycm1zZygi ZHVwbGljYXRlIEpTT05fVEFCTEUgcGF0aCBuYW1lOiAlcyIsIHBhdGhuYW1lKSwKKwkJCQkJcGFy c2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBsb2NhdGlvbikpOworCX0KKworCWN4dC0+cGF0 aE5hbWVzID0gbGFwcGVuZChjeHQtPnBhdGhOYW1lcywgcGF0aG5hbWUpOworfQorCisvKgorICog UmVjdXJzaXZlbHkgcmVnaXN0ZXIgYWxsIG5lc3RlZCBjb2x1bW4gbmFtZXMgaW4gdGhlIHNoYXJl ZCBjb2x1bW5zL3BhdGggbmFtZQorICogbGlzdC4KKyAqLworc3RhdGljIHZvaWQKK3JlZ2lzdGVy QWxsSnNvblRhYmxlQ29sdW1uc0FuZFBhdGhzKEpzb25UYWJsZVBhcnNlQ29udGV4dCAqIGN4dCwK KwkJCQkJCQkJCUxpc3QgKmNvbHVtbnMpCit7CisJTGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNo KGxjLCBjb2x1bW5zKQorCXsKKwkJSnNvblRhYmxlQ29sdW1uICpqdGMgPSBjYXN0Tm9kZShKc29u VGFibGVDb2x1bW4sIGxmaXJzdChsYykpOworCisJCWlmIChqdGMtPmNvbHR5cGUgPT0gSlRDX05F U1RFRCkKKwkJeworCQkJaWYgKGp0Yy0+cGF0aHNwZWMtPm5hbWUpCisJCQkJcmVnaXN0ZXJKc29u VGFibGVQYXRoKGN4dCwganRjLT5wYXRoc3BlYy0+bmFtZSwKKwkJCQkJCQkJCSAganRjLT5wYXRo c3BlYy0+bmFtZV9sb2NhdGlvbik7CisKKwkJCXJlZ2lzdGVyQWxsSnNvblRhYmxlQ29sdW1uc0Fu ZFBhdGhzKGN4dCwganRjLT5jb2x1bW5zKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCXJlZ2lzdGVy SnNvblRhYmxlQ29sdW1uKGN4dCwganRjLT5uYW1lLCBqdGMtPmxvY2F0aW9uKTsKKwkJfQorCX0K K30KKworLyogR2VuZXJhdGUgYSBuZXcgdW5pcXVlIEpTT05fVEFCTEUgcGF0aCBuYW1lLiAqLwor c3RhdGljIGNoYXIgKgorZ2VuZXJhdGVKc29uVGFibGVQYXRoTmFtZShKc29uVGFibGVQYXJzZUNv bnRleHQgKiBjeHQpCit7CisJY2hhcgkJbmFtZWJ1ZlszMl07CisJY2hhcgkgICAqbmFtZSA9IG5h bWVidWY7CisKKwlzbnByaW50ZihuYW1lYnVmLCBzaXplb2YobmFtZWJ1ZiksICJqc29uX3RhYmxl X3BhdGhfJWQiLAorCQkJIGN4dC0+cGF0aE5hbWVJZCsrKTsKKworCW5hbWUgPSBwc3RyZHVwKG5h bWUpOworCWN4dC0+cGF0aE5hbWVzID0gbGFwcGVuZChjeHQtPnBhdGhOYW1lcywgbmFtZSk7CisK KwlyZXR1cm4gbmFtZTsKK30KKworLyogQ29sbGVjdCBzaWJsaW5nIHBhdGggbmFtZXMgZnJvbSBw bGFuIHRvIHRoZSBzcGVjaWZpZWQgbGlzdC4gKi8KK3N0YXRpYyB2b2lkCitjb2xsZWN0U2libGlu Z1BhdGhzSW5Kc29uVGFibGVQbGFuKEpzb25UYWJsZVBsYW5TcGVjICpwbGFuLCBMaXN0ICoqcGF0 aHMpCit7CisJaWYgKHBsYW4tPnBsYW5fdHlwZSA9PSBKU1RQX1NJTVBMRSkKKwkJKnBhdGhzID0g bGFwcGVuZCgqcGF0aHMsIHBsYW4tPnBhdGhuYW1lKTsKKwllbHNlIGlmIChwbGFuLT5wbGFuX3R5 cGUgPT0gSlNUUF9KT0lORUQpCisJeworCQlpZiAocGxhbi0+am9pbl90eXBlID09IEpTVFBfSk9J Tl9JTk5FUiB8fAorCQkJcGxhbi0+am9pbl90eXBlID09IEpTVFBfSk9JTl9PVVRFUikKKwkJewor CQkJQXNzZXJ0KHBsYW4tPnBsYW4xLT5wbGFuX3R5cGUgPT0gSlNUUF9TSU1QTEUpOworCQkJKnBh dGhzID0gbGFwcGVuZCgqcGF0aHMsIHBsYW4tPnBsYW4xLT5wYXRobmFtZSk7CisJCX0KKwkJZWxz ZSBpZiAocGxhbi0+am9pbl90eXBlID09IEpTVFBfSk9JTl9DUk9TUyB8fAorCQkJCSBwbGFuLT5q b2luX3R5cGUgPT0gSlNUUF9KT0lOX1VOSU9OKQorCQl7CisJCQljb2xsZWN0U2libGluZ1BhdGhz SW5Kc29uVGFibGVQbGFuKHBsYW4tPnBsYW4xLCBwYXRocyk7CisJCQljb2xsZWN0U2libGluZ1Bh dGhzSW5Kc29uVGFibGVQbGFuKHBsYW4tPnBsYW4yLCBwYXRocyk7CisJCX0KKwkJZWxzZQorCQkJ ZWxvZyhFUlJPUiwgImludmFsaWQgSlNPTl9UQUJMRSBqb2luIHR5cGUgJWQiLAorCQkJCSBwbGFu LT5qb2luX3R5cGUpOworCX0KK30KKworLyoKKyAqIFZhbGlkYXRlIGNoaWxkIEpTT05fVEFCTEUg cGxhbiBieSBjaGVja2luZyB0aGF0OgorICogIC0gYWxsIG5lc3RlZCBjb2x1bW5zIGhhdmUgcGF0 aCBuYW1lcyBzcGVjaWZpZWQKKyAqICAtIGFsbCBuZXN0ZWQgY29sdW1ucyBoYXZlIGNvcnJlc3Bv bmRpbmcgbm9kZSBpbiB0aGUgc2libGluZyBwbGFuCisgKiAgLSBwbGFuIGRvZXMgbm90IGNvbnRh aW4gZHVwbGljYXRlIG9yIGV4dHJhIG5vZGVzCisgKi8KK3N0YXRpYyB2b2lkCit2YWxpZGF0ZUpz b25UYWJsZUNoaWxkUGxhbihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25UYWJsZVBsYW5TcGVjICpw bGFuLAorCQkJCQkJICAgTGlzdCAqY29sdW1ucykKK3sKKwlMaXN0Q2VsbCAgICpsYzE7CisJTGlz dAkgICAqc2libGluZ3MgPSBOSUw7CisJaW50CQkJbmNoaWxkcmVuID0gMDsKKworCWlmIChwbGFu KQorCQljb2xsZWN0U2libGluZ1BhdGhzSW5Kc29uVGFibGVQbGFuKHBsYW4sICZzaWJsaW5ncyk7 CisKKwlmb3JlYWNoKGxjMSwgY29sdW1ucykKKwl7CisJCUpzb25UYWJsZUNvbHVtbiAqanRjID0g Y2FzdE5vZGUoSnNvblRhYmxlQ29sdW1uLCBsZmlyc3QobGMxKSk7CisKKwkJaWYgKGp0Yy0+Y29s dHlwZSA9PSBKVENfTkVTVEVEKQorCQl7CisJCQlMaXN0Q2VsbCAgICpsYzI7CisJCQlib29sCQlm b3VuZCA9IGZhbHNlOworCisJCQlpZiAoanRjLT5wYXRoc3BlYy0+bmFtZSA9PSBOVUxMKQorCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJ CQkJCWVycm1zZygibmVzdGVkIEpTT05fVEFCTEUgY29sdW1ucyBtdXN0IGNvbnRhaW4iCisJCQkJ CQkJCSIgYW4gZXhwbGljaXQgQVMgcGF0aG5hbWUgc3BlY2lmaWNhdGlvbiIKKwkJCQkJCQkJIiBp ZiBhbiBleHBsaWNpdCBQTEFOIGNsYXVzZSBpcyB1c2VkIiksCisJCQkJCQlwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBqdGMtPmxvY2F0aW9uKSk7CisKKwkJCS8qIGZpbmQgbmVzdGVkIHBhdGgg bmFtZSBpbiB0aGUgbGlzdCBvZiBzaWJsaW5nIHBhdGggbmFtZXMgKi8KKwkJCWZvcmVhY2gobGMy LCBzaWJsaW5ncykKKwkJCXsKKwkJCQlpZiAoKGZvdW5kID0gIXN0cmNtcChqdGMtPnBhdGhzcGVj LT5uYW1lLCBsZmlyc3QobGMyKSkpKQorCQkJCQlicmVhazsKKwkJCX0KKworCQkJaWYgKCFmb3Vu ZCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCisJCQkJCQllcnJtc2coImludmFsaWQgSlNPTl9UQUJMRSBzcGVjaWZpY2F0aW9uIiksCisJ CQkJCQllcnJkZXRhaWwoIlBMQU4gY2xhdXNlIGZvciBuZXN0ZWQgcGF0aCAlcyB3YXMgbm90IGZv dW5kLiIsCisJCQkJCQkJCSAganRjLT5wYXRoc3BlYy0+bmFtZSksCisJCQkJCQlwYXJzZXJfZXJy cG9zaXRpb24ocHN0YXRlLCBqdGMtPmxvY2F0aW9uKSk7CisKKwkJCW5jaGlsZHJlbisrOworCQl9 CisJfQorCisJaWYgKGxpc3RfbGVuZ3RoKHNpYmxpbmdzKSA+IG5jaGlsZHJlbikKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQllcnJtc2co ImludmFsaWQgSlNPTl9UQUJMRSBwbGFuIGNsYXVzZSIpLAorCQkJCWVycmRldGFpbCgiUExBTiBj bGF1c2UgY29udGFpbnMgc29tZSBleHRyYSBvciBkdXBsaWNhdGUgc2libGluZyBub2Rlcy4iKSwK KwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBwbGFuID8gcGxhbi0+bG9jYXRpb24gOiAt MSkpOworfQorCitzdGF0aWMgSnNvblRhYmxlQ29sdW1uICoKK2ZpbmROZXN0ZWRKc29uVGFibGVD b2x1bW4oTGlzdCAqY29sdW1ucywgY29uc3QgY2hhciAqcGF0aG5hbWUpCit7CisJTGlzdENlbGwg ICAqbGM7CisKKwlmb3JlYWNoKGxjLCBjb2x1bW5zKQorCXsKKwkJSnNvblRhYmxlQ29sdW1uICpq dGMgPSBjYXN0Tm9kZShKc29uVGFibGVDb2x1bW4sIGxmaXJzdChsYykpOworCisJCWlmIChqdGMt PmNvbHR5cGUgPT0gSlRDX05FU1RFRCAmJgorCQkJanRjLT5wYXRoc3BlYy0+bmFtZSAmJgorCQkJ IXN0cmNtcChqdGMtPnBhdGhzcGVjLT5uYW1lLCBwYXRobmFtZSkpCisJCQlyZXR1cm4ganRjOwor CX0KKworCXJldHVybiBOVUxMOworfQorCitzdGF0aWMgTm9kZSAqCit0cmFuc2Zvcm1OZXN0ZWRK c29uVGFibGVDb2x1bW4oSnNvblRhYmxlUGFyc2VDb250ZXh0ICogY3h0LCBKc29uVGFibGVDb2x1 bW4gKmp0YywKKwkJCQkJCQkgICBKc29uVGFibGVQbGFuU3BlYyAqcGxhbnNwZWMpCit7CisJaWYg KGp0Yy0+cGF0aHNwZWMtPm5hbWUgPT0gTlVMTCkKKwl7CisJCWlmIChjeHQtPnRhYmxlLT5wbGFu c3BlYyAhPSBOVUxMKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9T WU5UQVhfRVJST1IpLAorCQkJCQkgZXJybXNnKCJpbnZhbGlkIEpTT05fVEFCTEUgZXhwcmVzc2lv biIpLAorCQkJCQkgZXJyZGV0YWlsKCJKU09OX1RBQkxFIHBhdGggbXVzdCBjb250YWluIgorCQkJ CQkJCSAgICIgZXhwbGljaXQgQVMgcGF0aG5hbWUgc3BlY2lmaWNhdGlvbiBpZiIKKwkJCQkJCQkg ICAiIGV4cGxpY2l0IFBMQU4gY2xhdXNlIGlzIHVzZWQiKSwKKwkJCQkJIHBhcnNlcl9lcnJwb3Np dGlvbihjeHQtPnBzdGF0ZSwganRjLT5sb2NhdGlvbikpKTsKKworCQlqdGMtPnBhdGhzcGVjLT5u YW1lID0gZ2VuZXJhdGVKc29uVGFibGVQYXRoTmFtZShjeHQpOworCX0KKworCXJldHVybiAoTm9k ZSAqKSB0cmFuc2Zvcm1Kc29uVGFibGVDb2x1bW5zKGN4dCwgcGxhbnNwZWMsIGp0Yy0+Y29sdW1u cywKKwkJCQkJCQkJCQkJICBqdGMtPnBhdGhzcGVjKTsKK30KKworc3RhdGljIE5vZGUgKgorbWFr ZUpzb25UYWJsZVNpYmxpbmdKb2luKGJvb2wgY3Jvc3MsIE5vZGUgKmxub2RlLCBOb2RlICpybm9k ZSkKK3sKKwlKc29uVGFibGVTaWJsaW5nICpqb2luID0gbWFrZU5vZGUoSnNvblRhYmxlU2libGlu Zyk7CisKKwlqb2luLT5sYXJnID0gbG5vZGU7CisJam9pbi0+cmFyZyA9IHJub2RlOworCWpvaW4t PmNyb3NzID0gY3Jvc3M7CisKKwlyZXR1cm4gKE5vZGUgKikgam9pbjsKK30KKworLyoKKyAqIFJl Y3Vyc2l2ZWx5IHRyYW5zZm9ybSBjaGlsZCBKU09OX1RBQkxFIHBsYW4uCisgKgorICogRGVmYXVs dCBwbGFuIGlzIHRyYW5zZm9ybWVkIGludG8gYSBjcm9zcy91bmlvbiBqb2luIG9mIGl0cyBuZXN0 ZWQgY29sdW1ucy4KKyAqIFNpbXBsZSBhbmQgb3V0ZXIvaW5uZXIgcGxhbnMgYXJlIHRyYW5zZm9y bWVkIGludG8gYSBKc29uVGFibGVQbGFuIGJ5CisgKiBmaW5kaW5nIGFuZCB0cmFuc2Zvcm1pbmcg Y29ycmVzcG9uZGluZyBuZXN0ZWQgY29sdW1uLgorICogU2libGluZyBwbGFucyBhcmUgcmVjdXJz aXZlbHkgdHJhbnNmb3JtZWQgaW50byBhIEpzb25UYWJsZVNpYmxpbmcuCisgKi8KK3N0YXRpYyBO b2RlICoKK3RyYW5zZm9ybUpzb25UYWJsZUNoaWxkUGxhbihKc29uVGFibGVQYXJzZUNvbnRleHQg KiBjeHQsCisJCQkJCQkJSnNvblRhYmxlUGxhblNwZWMgKnBsYW4sCisJCQkJCQkJTGlzdCAqY29s dW1ucykKK3sKKwlKc29uVGFibGVDb2x1bW4gKmp0YyA9IE5VTEw7CisKKwlpZiAoIXBsYW4gfHwg cGxhbi0+cGxhbl90eXBlID09IEpTVFBfREVGQVVMVCkKKwl7CisJCS8qIHVuc3BlY2lmaWVkIG9y IGRlZmF1bHQgcGxhbiAqLworCQlOb2RlCSAgICpyZXMgPSBOVUxMOworCQlMaXN0Q2VsbCAgICps YzsKKwkJYm9vbAkJY3Jvc3MgPSBwbGFuICYmIChwbGFuLT5qb2luX3R5cGUgJiBKU1RQX0pPSU5f Q1JPU1MpOworCisJCS8qIHRyYW5zZm9ybSBhbGwgbmVzdGVkIGNvbHVtbnMgaW50byBjcm9zcy91 bmlvbiBqb2luICovCisJCWZvcmVhY2gobGMsIGNvbHVtbnMpCisJCXsKKwkJCUpzb25UYWJsZUNv bHVtbiAqY29sID0gY2FzdE5vZGUoSnNvblRhYmxlQ29sdW1uLCBsZmlyc3QobGMpKTsKKwkJCU5v ZGUJICAgKm5vZGU7CisKKwkJCWlmIChjb2wtPmNvbHR5cGUgIT0gSlRDX05FU1RFRCkKKwkJCQlj b250aW51ZTsKKworCQkJbm9kZSA9IHRyYW5zZm9ybU5lc3RlZEpzb25UYWJsZUNvbHVtbihjeHQs IGNvbCwgcGxhbik7CisKKwkJCS8qIGpvaW4gdHJhbnNmb3JtZWQgbm9kZSB3aXRoIHByZXZpb3Vz IHNpYmxpbmcgbm9kZXMgKi8KKwkJCXJlcyA9IHJlcyA/IG1ha2VKc29uVGFibGVTaWJsaW5nSm9p bihjcm9zcywgcmVzLCBub2RlKSA6IG5vZGU7CisJCX0KKworCQlyZXR1cm4gcmVzOworCX0KKwll bHNlIGlmIChwbGFuLT5wbGFuX3R5cGUgPT0gSlNUUF9TSU1QTEUpCisJeworCQlqdGMgPSBmaW5k TmVzdGVkSnNvblRhYmxlQ29sdW1uKGNvbHVtbnMsIHBsYW4tPnBhdGhuYW1lKTsKKwl9CisJZWxz ZSBpZiAocGxhbi0+cGxhbl90eXBlID09IEpTVFBfSk9JTkVEKQorCXsKKwkJaWYgKHBsYW4tPmpv aW5fdHlwZSA9PSBKU1RQX0pPSU5fSU5ORVIgfHwKKwkJCXBsYW4tPmpvaW5fdHlwZSA9PSBKU1RQ X0pPSU5fT1VURVIpCisJCXsKKwkJCUFzc2VydChwbGFuLT5wbGFuMS0+cGxhbl90eXBlID09IEpT VFBfU0lNUExFKTsKKwkJCWp0YyA9IGZpbmROZXN0ZWRKc29uVGFibGVDb2x1bW4oY29sdW1ucywg cGxhbi0+cGxhbjEtPnBhdGhuYW1lKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCU5vZGUJICAgKm5v ZGUxID0gdHJhbnNmb3JtSnNvblRhYmxlQ2hpbGRQbGFuKGN4dCwgcGxhbi0+cGxhbjEsCisJCQkJ CQkJCQkJCQkJCQljb2x1bW5zKTsKKwkJCU5vZGUJICAgKm5vZGUyID0gdHJhbnNmb3JtSnNvblRh YmxlQ2hpbGRQbGFuKGN4dCwgcGxhbi0+cGxhbjIsCisJCQkJCQkJCQkJCQkJCQljb2x1bW5zKTsK KworCQkJcmV0dXJuIG1ha2VKc29uVGFibGVTaWJsaW5nSm9pbihwbGFuLT5qb2luX3R5cGUgPT0g SlNUUF9KT0lOX0NST1NTLAorCQkJCQkJCQkJCQlub2RlMSwgbm9kZTIpOworCQl9CisJfQorCWVs c2UKKwkJZWxvZyhFUlJPUiwgImludmFsaWQgSlNPTl9UQUJMRSBwbGFuIHR5cGUgJWQiLCBwbGFu LT5wbGFuX3R5cGUpOworCisJaWYgKCFqdGMpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCSBlcnJtc2coImludmFsaWQgSlNPTl9UQUJM RSBwbGFuIGNsYXVzZSIpLAorCQkJCSBlcnJkZXRhaWwoIlBBVEggbmFtZSB3YXMgJXMgbm90IGZv dW5kIGluIG5lc3RlZCBjb2x1bW5zIGxpc3QuIiwKKwkJCQkJCSAgIHBsYW4tPnBhdGhuYW1lKSwK KwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBwbGFuLT5sb2NhdGlvbikpKTsK KworCXJldHVybiB0cmFuc2Zvcm1OZXN0ZWRKc29uVGFibGVDb2x1bW4oY3h0LCBqdGMsIHBsYW4p OworfQorCisvKiBDaGVjayB3aGV0aGVyIHR5cGUgaXMganNvbi9qc29uYiwgYXJyYXksIG9yIHJl Y29yZC4gKi8KK3N0YXRpYyBib29sCit0eXBlSXNDb21wb3NpdGUoT2lkIHR5cGlkKQoreworCWNo YXIJCXR5cHR5cGU7CisKKwlpZiAodHlwaWQgPT0gSlNPTk9JRCB8fAorCQl0eXBpZCA9PSBKU09O Qk9JRCB8fAorCQl0eXBpZCA9PSBSRUNPUkRPSUQgfHwKKwkJdHlwZV9pc19hcnJheSh0eXBpZCkp CisJCXJldHVybiB0cnVlOworCisJdHlwdHlwZSA9IGdldF90eXB0eXBlKHR5cGlkKTsKKworCWlm ICh0eXB0eXBlID09IFRZUFRZUEVfQ09NUE9TSVRFKQorCQlyZXR1cm4gdHJ1ZTsKKworCWlmICh0 eXB0eXBlID09IFRZUFRZUEVfRE9NQUlOKQorCQlyZXR1cm4gdHlwZUlzQ29tcG9zaXRlKGdldEJh c2VUeXBlKHR5cGlkKSk7CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qIEFwcGVuZCB0cmFuc2Zv cm1lZCBub24tbmVzdGVkIEpTT05fVEFCTEUgY29sdW1ucyB0byB0aGUgVGFibGVGdW5jIG5vZGUg Ki8KK3N0YXRpYyB2b2lkCithcHBlbmRKc29uVGFibGVDb2x1bW5zKEpzb25UYWJsZVBhcnNlQ29u dGV4dCAqIGN4dCwgTGlzdCAqY29sdW1ucykKK3sKKwlMaXN0Q2VsbCAgICpjb2w7CisJUGFyc2VT dGF0ZSAqcHN0YXRlID0gY3h0LT5wc3RhdGU7CisJSnNvblRhYmxlICAqanQgPSBjeHQtPnRhYmxl OworCVRhYmxlRnVuYyAgKnRmID0gY3h0LT50YWJsZWZ1bmM7CisJYm9vbAkJb3JkaW5hbGl0eV9m b3VuZCA9IGZhbHNlOworCUpzb25CZWhhdmlvciAqb25fZXJyb3IgPSBqdC0+b25fZXJyb3I7CisJ Ym9vbAkJZXJyb3JPbkVycm9yID0gb25fZXJyb3IgJiYKKwkJb25fZXJyb3ItPmJ0eXBlID09IEpT T05fQkVIQVZJT1JfRVJST1I7CisKKwlmb3JlYWNoKGNvbCwgY29sdW1ucykKKwl7CisJCUpzb25U YWJsZUNvbHVtbiAqcmF3YyA9IGNhc3ROb2RlKEpzb25UYWJsZUNvbHVtbiwgbGZpcnN0KGNvbCkp OworCQlPaWQJCQl0eXBpZDsKKwkJaW50MzIJCXR5cG1vZDsKKwkJTm9kZQkgICAqY29sZXhwcjsK KworCQlpZiAocmF3Yy0+bmFtZSkKKwkJCXRmLT5jb2xuYW1lcyA9IGxhcHBlbmQodGYtPmNvbG5h bWVzLAorCQkJCQkJCQkgICBtYWtlU3RyaW5nKHBzdHJkdXAocmF3Yy0+bmFtZSkpKTsKKworCQkv KgorCQkgKiBEZXRlcm1pbmUgdGhlIHR5cGUgYW5kIHR5cG1vZCBmb3IgdGhlIG5ldyBjb2x1bW4u IEZPUiBPUkRJTkFMSVRZCisJCSAqIGNvbHVtbnMgYXJlIElOVEVHRVIgYnkgc3RhbmRhcmQ7IHRo ZSBvdGhlcnMgYXJlIHVzZXItc3BlY2lmaWVkLgorCQkgKi8KKwkJc3dpdGNoIChyYXdjLT5jb2x0 eXBlKQorCQl7CisJCQljYXNlIEpUQ19GT1JfT1JESU5BTElUWToKKwkJCQlpZiAob3JkaW5hbGl0 eV9mb3VuZCkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZ TlRBWF9FUlJPUiksCisJCQkJCQkJIGVycm1zZygiY2Fubm90IHVzZSBtb3JlIHRoYW4gb25lIEZP UiBPUkRJTkFMSVRZIGNvbHVtbiIpLAorCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LCByYXdjLT5sb2NhdGlvbikpKTsKKwkJCQlvcmRpbmFsaXR5X2ZvdW5kID0gdHJ1ZTsKKwkJCQlj b2xleHByID0gTlVMTDsKKwkJCQl0eXBpZCA9IElOVDRPSUQ7CisJCQkJdHlwbW9kID0gLTE7CisJ CQkJYnJlYWs7CisKKwkJCWNhc2UgSlRDX1JFR1VMQVI6CisJCQkJdHlwZW5hbWVUeXBlSWRBbmRN b2QocHN0YXRlLCByYXdjLT50eXBlTmFtZSwgJnR5cGlkLCAmdHlwbW9kKTsKKworCQkJCS8qCisJ CQkJICogVXNlIGltcGxpY2l0IEZPUk1BVCBKU09OIGZvciBjb21wb3NpdGUgdHlwZXMgKGFycmF5 cyBhbmQKKwkJCQkgKiByZWNvcmRzKSBvciBpZiBhIG5vbi1kZWZhdWx0IFdSQVBQRVIgLyBRVU9U RVMgYmVoYXZpb3IKKwkJCQkgKiBpcyBzcGVjaWZpZWQuCisJCQkJICovCisJCQkJaWYgKHR5cGVJ c0NvbXBvc2l0ZSh0eXBpZCkgfHwKKwkJCQkJcmF3Yy0+cXVvdGVzICE9IEpTX1FVT1RFU19VTlNQ RUMgfHwKKwkJCQkJcmF3Yy0+d3JhcHBlciAhPSBKU1dfVU5TUEVDKQorCQkJCQlyYXdjLT5jb2x0 eXBlID0gSlRDX0ZPUk1BVFRFRDsKKworCQkJCS8qIEZBTExUSFJPVUdIICovCisJCQljYXNlIEpU Q19GT1JNQVRURUQ6CisJCQljYXNlIEpUQ19FWElTVFM6CisJCQkJeworCQkJCQlOb2RlCSAgICpq ZTsKKwkJCQkJQ2FzZVRlc3RFeHByICpwYXJhbSA9IG1ha2VOb2RlKENhc2VUZXN0RXhwcik7CisK KwkJCQkJcGFyYW0tPmNvbGxhdGlvbiA9IEludmFsaWRPaWQ7CisJCQkJCXBhcmFtLT50eXBlSWQg PSBjeHQtPmNvbnRleHRJdGVtVHlwaWQ7CisJCQkJCXBhcmFtLT50eXBlTW9kID0gLTE7CisKKwkJ CQkJamUgPSB0cmFuc2Zvcm1Kc29uVGFibGVDb2x1bW4ocmF3YywgKE5vZGUgKikgcGFyYW0sCisJ CQkJCQkJCQkJCQkgIE5JTCwgZXJyb3JPbkVycm9yKTsKKworCQkJCQljb2xleHByID0gdHJhbnNm b3JtRXhwcihwc3RhdGUsIGplLCBFWFBSX0tJTkRfRlJPTV9GVU5DVElPTik7CisJCQkJCWFzc2ln bl9leHByX2NvbGxhdGlvbnMocHN0YXRlLCBjb2xleHByKTsKKworCQkJCQl0eXBpZCA9IGV4cHJU eXBlKGNvbGV4cHIpOworCQkJCQl0eXBtb2QgPSBleHByVHlwbW9kKGNvbGV4cHIpOworCQkJCQli cmVhazsKKwkJCQl9CisKKwkJCWNhc2UgSlRDX05FU1RFRDoKKwkJCQljb250aW51ZTsKKworCQkJ ZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAidW5rbm93biBKU09OX1RBQkxFIGNvbHVtbiB0eXBl OiAlZCIsIHJhd2MtPmNvbHR5cGUpOworCQkJCWJyZWFrOworCQl9CisKKwkJdGYtPmNvbHR5cGVz ID0gbGFwcGVuZF9vaWQodGYtPmNvbHR5cGVzLCB0eXBpZCk7CisJCXRmLT5jb2x0eXBtb2RzID0g bGFwcGVuZF9pbnQodGYtPmNvbHR5cG1vZHMsIHR5cG1vZCk7CisJCXRmLT5jb2xjb2xsYXRpb25z ID0gbGFwcGVuZF9vaWQodGYtPmNvbGNvbGxhdGlvbnMsIGdldF90eXBjb2xsYXRpb24odHlwaWQp KTsKKwkJdGYtPmNvbHZhbGV4cHJzID0gbGFwcGVuZCh0Zi0+Y29sdmFsZXhwcnMsIGNvbGV4cHIp OworCX0KK30KKworLyoKKyAqIENyZWF0ZSB0cmFuc2Zvcm1lZCBKU09OX1RBQkxFIHBhcmVudCBw bGFuIG5vZGUgYnkgYXBwZW5kaW5nIGFsbCBub24tbmVzdGVkCisgKiBjb2x1bW5zIHRvIHRoZSBU YWJsZUZ1bmMgbm9kZSBhbmQgcmVtZW1iZXJpbmcgdGhlaXIgaW5kaWNlcyBpbiB0aGUKKyAqIGNv bHZhbGV4cHJzIGxpc3QuCisgKi8KK3N0YXRpYyBKc29uVGFibGVQbGFuICoKK21ha2VQYXJlbnRK c29uVGFibGVQbGFuKEpzb25UYWJsZVBhcnNlQ29udGV4dCAqIGN4dCwgSnNvblRhYmxlUGF0aFNw ZWMgKnBhdGhzcGVjLAorCQkJCQkJTGlzdCAqY29sdW1ucykKK3sKKwlKc29uVGFibGVQbGFuICpw bGFuID0gbWFrZU5vZGUoSnNvblRhYmxlUGxhbik7CisJSnNvbkJlaGF2aW9yICpvbl9lcnJvciA9 IGN4dC0+dGFibGUtPm9uX2Vycm9yOworCWNoYXIJCSAqcGF0aHN0cmluZzsKKwlDb25zdAkJICp2 YWx1ZTsKKworCUFzc2VydChJc0EocGF0aHNwZWMtPnN0cmluZywgQV9Db25zdCkpOworCXBhdGhz dHJpbmcgPSBjYXN0Tm9kZShBX0NvbnN0LCBwYXRoc3BlYy0+c3RyaW5nKS0+dmFsLnN2YWwuc3Zh bDsKKwl2YWx1ZSA9IG1ha2VDb25zdChKU09OUEFUSE9JRCwgLTEsIEludmFsaWRPaWQsIC0xLAor CQkJCQkgIERpcmVjdEZ1bmN0aW9uQ2FsbDEoanNvbnBhdGhfaW4sCisJCQkJCQkJCQkJICBDU3Ry aW5nR2V0RGF0dW0ocGF0aHN0cmluZykpLAorCQkJCQkgIGZhbHNlLCBmYWxzZSk7CisJcGxhbi0+ cGF0aCA9IG1ha2VKc29uVGFibGVQYXRoKHZhbHVlLCBwYXRoc3BlYy0+bmFtZSk7CisKKwkvKiBz YXZlIHN0YXJ0IG9mIGNvbHVtbiByYW5nZSAqLworCXBsYW4tPmNvbE1pbiA9IGxpc3RfbGVuZ3Ro KGN4dC0+dGFibGVmdW5jLT5jb2x2YWxleHBycyk7CisKKwlhcHBlbmRKc29uVGFibGVDb2x1bW5z KGN4dCwgY29sdW1ucyk7CisKKwkvKiBzYXZlIGVuZCBvZiBjb2x1bW4gcmFuZ2UgKi8KKwlwbGFu LT5jb2xNYXggPSBsaXN0X2xlbmd0aChjeHQtPnRhYmxlZnVuYy0+Y29sdmFsZXhwcnMpIC0gMTsK KworCXBsYW4tPmVycm9yT25FcnJvciA9IG9uX2Vycm9yICYmIG9uX2Vycm9yLT5idHlwZSA9PSBK U09OX0JFSEFWSU9SX0VSUk9SOworCisJcmV0dXJuIHBsYW47Cit9CisKK3N0YXRpYyBKc29uVGFi bGVQbGFuICoKK3RyYW5zZm9ybUpzb25UYWJsZUNvbHVtbnMoSnNvblRhYmxlUGFyc2VDb250ZXh0 ICogY3h0LAorCQkJCQkJICBKc29uVGFibGVQbGFuU3BlYyAqcGxhbnNwZWMsCisJCQkJCQkgIExp c3QgKmNvbHVtbnMsCisJCQkJCQkgIEpzb25UYWJsZVBhdGhTcGVjICpwYXRoc3BlYykKK3sKKwlK c29uVGFibGVQbGFuICpwbGFuOworCUpzb25UYWJsZVBsYW5TcGVjICpjaGlsZFBsYW5TcGVjOwor CWJvb2wJCWRlZmF1bHRQbGFuID0gcGxhbnNwZWMgPT0gTlVMTCB8fAorCQlwbGFuc3BlYy0+cGxh bl90eXBlID09IEpTVFBfREVGQVVMVDsKKworCWlmIChkZWZhdWx0UGxhbikKKwkJY2hpbGRQbGFu U3BlYyA9IHBsYW5zcGVjOworCWVsc2UKKwl7CisJCS8qIHZhbGlkYXRlIHBhcmVudCBhbmQgY2hp bGQgcGxhbnMgKi8KKwkJSnNvblRhYmxlUGxhblNwZWMgKnBhcmVudFBsYW5TcGVjOworCisJCWlm IChwbGFuc3BlYy0+cGxhbl90eXBlID09IEpTVFBfSk9JTkVEKQorCQl7CisJCQlpZiAocGxhbnNw ZWMtPmpvaW5fdHlwZSAhPSBKU1RQX0pPSU5fSU5ORVIgJiYKKwkJCQlwbGFuc3BlYy0+am9pbl90 eXBlICE9IEpTVFBfSk9JTl9PVVRFUikKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJIGVycm1zZygiaW52YWxpZCBKU09OX1RB QkxFIHBsYW4gY2xhdXNlIiksCisJCQkJCQkgZXJyZGV0YWlsKCJFeHBlY3RlZCBJTk5FUiBvciBP VVRFUi4iKSwKKwkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIHBsYW5zcGVj LT5sb2NhdGlvbikpKTsKKworCQkJcGFyZW50UGxhblNwZWMgPSBwbGFuc3BlYy0+cGxhbjE7CisJ CQljaGlsZFBsYW5TcGVjID0gcGxhbnNwZWMtPnBsYW4yOworCisJCQlBc3NlcnQocGFyZW50UGxh blNwZWMtPnBsYW5fdHlwZSAhPSBKU1RQX0pPSU5FRCk7CisJCQlBc3NlcnQocGFyZW50UGxhblNw ZWMtPnBhdGhuYW1lKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCXBhcmVudFBsYW5TcGVjID0gcGxh bnNwZWM7CisJCQljaGlsZFBsYW5TcGVjID0gTlVMTDsKKwkJfQorCisJCWlmIChzdHJjbXAocGFy ZW50UGxhblNwZWMtPnBhdGhuYW1lLCBwYXRoc3BlYy0+bmFtZSkgIT0gMCkKKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJIGVycm1z ZygiaW52YWxpZCBKU09OX1RBQkxFIHBsYW4iKSwKKwkJCQkJIGVycmRldGFpbCgiUEFUSCBuYW1l IG1pc21hdGNoOiBleHBlY3RlZCAlcyBidXQgJXMgaXMgZ2l2ZW4uIiwKKwkJCQkJCQkgICBwYXRo c3BlYy0+bmFtZSwgcGFyZW50UGxhblNwZWMtPnBhdGhuYW1lKSwKKwkJCQkJIHBhcnNlcl9lcnJw b3NpdGlvbihjeHQtPnBzdGF0ZSwgcGxhbnNwZWMtPmxvY2F0aW9uKSkpOworCisJCXZhbGlkYXRl SnNvblRhYmxlQ2hpbGRQbGFuKGN4dC0+cHN0YXRlLCBjaGlsZFBsYW5TcGVjLCBjb2x1bW5zKTsK Kwl9CisKKwkvKiB0cmFuc2Zvcm0gb25seSBub24tbmVzdGVkIGNvbHVtbnMgKi8KKwlwbGFuID0g bWFrZVBhcmVudEpzb25UYWJsZVBsYW4oY3h0LCBwYXRoc3BlYywgY29sdW1ucyk7CisKKwlpZiAo Y2hpbGRQbGFuU3BlYyB8fCBkZWZhdWx0UGxhbikKKwl7CisJCS8qIHRyYW5zZm9ybSByZWN1cnNp dmVseSBuZXN0ZWQgY29sdW1ucyAqLworCQlwbGFuLT5jaGlsZCA9IHRyYW5zZm9ybUpzb25UYWJs ZUNoaWxkUGxhbihjeHQsIGNoaWxkUGxhblNwZWMsIGNvbHVtbnMpOworCQlpZiAocGxhbi0+Y2hp bGQpCisJCQlwbGFuLT5vdXRlckpvaW4gPSBwbGFuc3BlYyA9PSBOVUxMIHx8CisJCQkJKHBsYW5z cGVjLT5qb2luX3R5cGUgJiBKU1RQX0pPSU5fT1VURVIpOworCQkvKiBlbHNlOiBkZWZhdWx0IHBs YW4gY2FzZSwgbm8gY2hpbGRyZW4gZm91bmQgKi8KKwl9CisKKwlyZXR1cm4gcGxhbjsKK30KKwor LyoKKyAqIHRyYW5zZm9ybUpzb25UYWJsZSAtCisgKgkJCVRyYW5zZm9ybSBhIHJhdyBKc29uVGFi bGUgaW50byBUYWJsZUZ1bmMuCisgKgorICogVHJhbnNmb3JtIHRoZSBkb2N1bWVudC1nZW5lcmF0 aW5nIGV4cHJlc3Npb24sIHRoZSByb3ctZ2VuZXJhdGluZyBleHByZXNzaW9uLAorICogdGhlIGNv bHVtbi1nZW5lcmF0aW5nIGV4cHJlc3Npb25zLCBhbmQgdGhlIGRlZmF1bHQgdmFsdWUgZXhwcmVz c2lvbnMuCisgKi8KK1BhcnNlTmFtZXNwYWNlSXRlbSAqCit0cmFuc2Zvcm1Kc29uVGFibGUoUGFy c2VTdGF0ZSAqcHN0YXRlLCBKc29uVGFibGUgKmp0KQoreworCUpzb25UYWJsZVBhcnNlQ29udGV4 dCBjeHQ7CisJVGFibGVGdW5jICAqdGYgPSBtYWtlTm9kZShUYWJsZUZ1bmMpOworCUpzb25GdW5j RXhwciAqamZlID0gbWFrZU5vZGUoSnNvbkZ1bmNFeHByKTsKKwlKc29uRXhwciAgICpqZTsKKwlK c29uVGFibGVQbGFuU3BlYyAqcGxhbiA9IGp0LT5wbGFuc3BlYzsKKwlKc29uVGFibGVQYXRoU3Bl YyAqcm9vdFBhdGhTcGVjID0ganQtPnBhdGhzcGVjOworCWJvb2wJCWlzX2xhdGVyYWw7CisKKwlB c3NlcnQoSXNBKHJvb3RQYXRoU3BlYy0+c3RyaW5nLCBBX0NvbnN0KSAmJgorCQkgICBjYXN0Tm9k ZShBX0NvbnN0LCByb290UGF0aFNwZWMtPnN0cmluZyktPnZhbC5ub2RlLnR5cGUgPT0gVF9TdHJp bmcpOworCisJY3h0LnBzdGF0ZSA9IHBzdGF0ZTsKKwljeHQudGFibGUgPSBqdDsKKwljeHQudGFi bGVmdW5jID0gdGY7CisJY3h0LnBhdGhOYW1lcyA9IE5JTDsKKwljeHQucGF0aE5hbWVJZCA9IDA7 CisKKwlpZiAocm9vdFBhdGhTcGVjLT5uYW1lKQorCQlyZWdpc3Rlckpzb25UYWJsZVBhdGgoJmN4 dCwgcm9vdFBhdGhTcGVjLT5uYW1lLAorCQkJCQkJCSAgcm9vdFBhdGhTcGVjLT5uYW1lX2xvY2F0 aW9uKTsKKwllbHNlCisJeworCQlpZiAoanQtPnBsYW5zcGVjICE9IE5VTEwpCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCSBlcnJt c2coImludmFsaWQgSlNPTl9UQUJMRSBleHByZXNzaW9uIiksCisJCQkJCSBlcnJkZXRhaWwoIkpT T05fVEFCTEUgcGF0aCBtdXN0IGNvbnRhaW4iCisJCQkJCQkJICAgIiBleHBsaWNpdCBBUyBwYXRo bmFtZSBzcGVjaWZpY2F0aW9uIGlmIgorCQkJCQkJCSAgICIgZXhwbGljaXQgUExBTiBjbGF1c2Ug aXMgdXNlZCIpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgcm9vdFBhdGhTcGVj LT5sb2NhdGlvbikpKTsKKworCQlyb290UGF0aFNwZWMtPm5hbWUgPSBnZW5lcmF0ZUpzb25UYWJs ZVBhdGhOYW1lKCZjeHQpOworCX0KKworCXJlZ2lzdGVyQWxsSnNvblRhYmxlQ29sdW1uc0FuZFBh dGhzKCZjeHQsIGp0LT5jb2x1bW5zKTsKKworCWpmZS0+b3AgPSBKU09OX1RBQkxFX09QOworCWpm ZS0+Y29udGV4dF9pdGVtID0JanQtPmNvbnRleHRfaXRlbTsKKwlqZmUtPnBhdGhzcGVjID0gKE5v ZGUgKikgcm9vdFBhdGhTcGVjLT5zdHJpbmc7CisJamZlLT5wYXRobmFtZSA9IHJvb3RQYXRoU3Bl Yy0+bmFtZTsKKwlqZmUtPnBhc3NpbmcgPSBqdC0+cGFzc2luZzsKKwlqZmUtPm9uX2VtcHR5ID0g TlVMTDsKKwlqZmUtPm9uX2Vycm9yID0ganQtPm9uX2Vycm9yOworCWpmZS0+bG9jYXRpb24gPSBq dC0+bG9jYXRpb247CisKKwkvKgorCSAqIFdlIG1ha2UgbGF0ZXJhbF9vbmx5IG5hbWVzIG9mIHRo aXMgbGV2ZWwgdmlzaWJsZSwgd2hldGhlciBvciBub3QgdGhlCisJICogUmFuZ2VUYWJsZUZ1bmMg aXMgZXhwbGljaXRseSBtYXJrZWQgTEFURVJBTC4gIFRoaXMgaXMgbmVlZGVkIGZvciBTUUwKKwkg KiBzcGVjIGNvbXBsaWFuY2UgYW5kIHNlZW1zIHVzZWZ1bCBvbiBjb252ZW5pZW5jZSBncm91bmRz IGZvciBhbGwKKwkgKiBmdW5jdGlvbnMgaW4gRlJPTS4KKwkgKgorCSAqIChMQVRFUkFMIGNhbid0 IG5lc3Qgd2l0aGluIGEgc2luZ2xlIHBzdGF0ZSBsZXZlbCwgc28gd2UgZG9uJ3QgbmVlZAorCSAq IHNhdmUvcmVzdG9yZSBsb2dpYyBoZXJlLikKKwkgKi8KKwlBc3NlcnQoIXBzdGF0ZS0+cF9sYXRl cmFsX2FjdGl2ZSk7CisJcHN0YXRlLT5wX2xhdGVyYWxfYWN0aXZlID0gdHJ1ZTsKKworCXRmLT5m dW5jdHlwZSA9IFRGVF9KU09OX1RBQkxFOworCXRmLT5kb2NleHByID0gdHJhbnNmb3JtRXhwcihw c3RhdGUsIChOb2RlICopIGpmZSwgRVhQUl9LSU5EX0ZST01fRlVOQ1RJT04pOworCisJY3h0LmNv bnRleHRJdGVtVHlwaWQgPSBleHByVHlwZSh0Zi0+ZG9jZXhwcik7CisKKwl0Zi0+cGxhbiA9IChO b2RlICopIHRyYW5zZm9ybUpzb25UYWJsZUNvbHVtbnMoJmN4dCwgcGxhbiwganQtPmNvbHVtbnMs CisJCQkJCQkJCQkJCQkgIHJvb3RQYXRoU3BlYyk7CisKKwkvKiBBbHNvIHNhdmUgYSBjb3B5IG9m IHRoZSBQQVNTSU5HIGFyZ3VtZW50cyBpbiB0aGUgVGFibGVGdW5jIG5vZGUuICovCisJamUgPSAo SnNvbkV4cHIgKikgdGYtPmRvY2V4cHI7CisJdGYtPnBhc3Npbmd2YWxleHBycyA9IGNvcHlPYmpl Y3QoamUtPnBhc3NpbmdfdmFsdWVzKTsKKworCXRmLT5vcmRpbmFsaXR5Y29sID0gLTE7CQkvKiB1 bmRlZmluZSBvcmRpbmFsaXR5IGNvbHVtbiBudW1iZXIgKi8KKwl0Zi0+bG9jYXRpb24gPSBqdC0+ bG9jYXRpb247CisKKwlwc3RhdGUtPnBfbGF0ZXJhbF9hY3RpdmUgPSBmYWxzZTsKKworCS8qCisJ ICogTWFyayB0aGUgUlRFIGFzIExBVEVSQUwgaWYgdGhlIHVzZXIgc2FpZCBMQVRFUkFMIGV4cGxp Y2l0bHksIG9yIGlmCisJICogdGhlcmUgYXJlIGFueSBsYXRlcmFsIGNyb3NzLXJlZmVyZW5jZXMg aW4gaXQuCisJICovCisJaXNfbGF0ZXJhbCA9IGp0LT5sYXRlcmFsIHx8IGNvbnRhaW5fdmFyc19v Zl9sZXZlbCgoTm9kZSAqKSB0ZiwgMCk7CisKKwlyZXR1cm4gYWRkUmFuZ2VUYWJsZUVudHJ5Rm9y VGFibGVGdW5jKHBzdGF0ZSwKKwkJCQkJCQkJCQkgIHRmLCBqdC0+YWxpYXMsIGlzX2xhdGVyYWws IHRydWUpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9u LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYwppbmRleCA2NWU1NGFiZGQx Li5jMmUzZTY1Y2M2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRp b24uYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYwpAQCAtMjA3Nywx MyArMjA3NywxNSBAQCBhZGRSYW5nZVRhYmxlRW50cnlGb3JUYWJsZUZ1bmMoUGFyc2VTdGF0ZSAq cHN0YXRlLAogCXJ0ZS0+cmVsaWQgPSBJbnZhbGlkT2lkOwogCXJ0ZS0+c3VicXVlcnkgPSBOVUxM OwogCXJ0ZS0+dGFibGVmdW5jID0gdGY7Ci0JcnRlLT50YWJsZWZ1bmNfbmFtZSA9IHBzdHJkdXAo IlhNTFRBQkxFIik7CisJcnRlLT50YWJsZWZ1bmNfbmFtZSA9IHBzdHJkdXAodGYtPmZ1bmN0eXBl ID09IFRGVF9YTUxUQUJMRSA/CisJCQkJCQkJCSAgIlhNTFRBQkxFIiA6ICJKU09OX1RBQkxFIik7 CiAJcnRlLT5jb2x0eXBlcyA9IHRmLT5jb2x0eXBlczsKIAlydGUtPmNvbHR5cG1vZHMgPSB0Zi0+ Y29sdHlwbW9kczsKIAlydGUtPmNvbGNvbGxhdGlvbnMgPSB0Zi0+Y29sY29sbGF0aW9uczsKIAly dGUtPmFsaWFzID0gYWxpYXM7CiAKLQlyZWZuYW1lID0gYWxpYXMgPyBhbGlhcy0+YWxpYXNuYW1l IDogcHN0cmR1cCgieG1sdGFibGUiKTsKKwlyZWZuYW1lID0gYWxpYXMgPyBhbGlhcy0+YWxpYXNu YW1lIDoKKwkJcHN0cmR1cCh0Zi0+ZnVuY3R5cGUgPT0gVEZUX1hNTFRBQkxFID8gInhtbHRhYmxl IiA6ICJqc29uX3RhYmxlIik7CiAJZXJlZiA9IGFsaWFzID8gY29weU9iamVjdChhbGlhcykgOiBt YWtlQWxpYXMocmVmbmFtZSwgTklMKTsKIAludW1hbGlhc2VzID0gbGlzdF9sZW5ndGgoZXJlZi0+ Y29sbmFtZXMpOwogCkBAIC0yMDk2LDcgKzIwOTgsNyBAQCBhZGRSYW5nZVRhYmxlRW50cnlGb3JU YWJsZUZ1bmMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9DT0xVTU5fUkVGRVJFTkNFKSwKIAkJCQkgZXJybXNnKCIlcyBm dW5jdGlvbiBoYXMgJWQgY29sdW1ucyBhdmFpbGFibGUgYnV0ICVkIGNvbHVtbnMgc3BlY2lmaWVk IiwKLQkJCQkJCSJYTUxUQUJMRSIsCisJCQkJCQl0Zi0+ZnVuY3R5cGUgPT0gVEZUX1hNTFRBQkxF ID8gIlhNTFRBQkxFIiA6ICJKU09OX1RBQkxFIiwKIAkJCQkJCWxpc3RfbGVuZ3RoKHRmLT5jb2xu YW1lcyksIG51bWFsaWFzZXMpKSk7CiAKIAlydGUtPmVyZWYgPSBlcmVmOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX3RhcmdldC5jCmluZGV4IDRjMmQ1ODZlNGQuLmJkZDQxMmViNTEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfdGFyZ2V0LmMKQEAgLTIwMDEsNiArMjAwMSw5IEBAIEZpZ3VyZUNvbG5hbWVJbnRlcm5h bChOb2RlICpub2RlLCBjaGFyICoqbmFtZSkKIAkJCQljYXNlIEpTT05fVkFMVUVfT1A6CiAJCQkJ CSpuYW1lID0gImpzb25fdmFsdWUiOwogCQkJCQlyZXR1cm4gMjsKKwkJCQljYXNlIEpTT05fVEFC TEVfT1A6CisJCQkJCSpuYW1lID0gImpzb25fdGFibGUiOworCQkJCQlyZXR1cm4gMjsKIAkJCX0K IAkJCWJyZWFrOwogCQlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb25wYXRoX2V4ZWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMK aW5kZXggMWQyZDAyNDVlOC4uNDRkOTdkMDBmNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2pzb25wYXRoX2V4ZWMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBh dGhfZXhlYy5jCkBAIC02MSw5ICs2MSwxMSBAQAogCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xs YXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJleGVjdXRv ci9leGVjRXhwci5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKICNpbmNsdWRlICJub2Rlcy9taXNjbm9kZXMuaCIKKyNpbmNsdWRlICJub2Rlcy9ub2RlRnVu Y3MuaCIKICNpbmNsdWRlICJyZWdleC9yZWdleC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5z LmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0ZS5oIgpAQCAtNzEsNiArNzMsOCBAQAogI2luY2x1ZGUg InV0aWxzL2Zsb2F0LmgiCiAjaW5jbHVkZSAidXRpbHMvZm9ybWF0dGluZy5oIgogI2luY2x1ZGUg InV0aWxzL2pzb25wYXRoLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVk ZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKIAogLyoK QEAgLTE1NCw2ICsxNTgsNjAgQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvblZhbHVlTGlzdEl0ZXJhdG9y CiAJTGlzdENlbGwgICAqbmV4dDsKIH0gSnNvblZhbHVlTGlzdEl0ZXJhdG9yOwogCisvKiBTdHJ1 Y3R1cmVzIGZvciBKU09OX1RBQkxFIGV4ZWN1dGlvbiAgKi8KKwordHlwZWRlZiBlbnVtIEpzb25U YWJsZVBsYW5TdGF0ZVR5cGUKK3sKKwlKU09OX1RBQkxFX1NDQU5fU1RBVEUgPSAwLAorCUpTT05f VEFCTEVfSk9JTl9TVEFURSwKK30JCQlKc29uVGFibGVQbGFuU3RhdGVUeXBlOworCit0eXBlZGVm IHN0cnVjdCBKc29uVGFibGVQbGFuU3RhdGUKK3sKKwlKc29uVGFibGVQbGFuU3RhdGVUeXBlIHR5 cGU7CisKKwlzdHJ1Y3QgSnNvblRhYmxlUGxhblN0YXRlICpwYXJlbnQ7CisJc3RydWN0IEpzb25U YWJsZVBsYW5TdGF0ZSAqbmVzdGVkOworfQkJCUpzb25UYWJsZVBsYW5TdGF0ZTsKKwordHlwZWRl ZiBzdHJ1Y3QgSnNvblRhYmxlU2NhblN0YXRlCit7CisJSnNvblRhYmxlUGxhblN0YXRlIHBsYW47 CisKKwlNZW1vcnlDb250ZXh0IG1jeHQ7CisJSnNvblBhdGggICAqcGF0aDsKKwlMaXN0CSAgICph cmdzOworCUpzb25WYWx1ZUxpc3QgZm91bmQ7CisJSnNvblZhbHVlTGlzdEl0ZXJhdG9yIGl0ZXI7 CisJRGF0dW0JCWN1cnJlbnQ7CisJaW50CQkJb3JkaW5hbDsKKwlib29sCQljdXJyZW50SXNOdWxs OworCWJvb2wJCW91dGVySm9pbjsKKwlib29sCQllcnJvck9uRXJyb3I7CisJYm9vbAkJYWR2YW5j ZU5lc3RlZDsKKwlib29sCQlyZXNldDsKK30gSnNvblRhYmxlU2NhblN0YXRlOworCit0eXBlZGVm IHN0cnVjdCBKc29uVGFibGVKb2luU3RhdGUKK3sKKwlKc29uVGFibGVQbGFuU3RhdGUgcGxhbjsK KworCUpzb25UYWJsZVBsYW5TdGF0ZSAqbGVmdDsKKwlKc29uVGFibGVQbGFuU3RhdGUgKnJpZ2h0 OworCWJvb2wJCWNyb3NzOworCWJvb2wJCWFkdmFuY2VSaWdodDsKK30gSnNvblRhYmxlSm9pblN0 YXRlOworCisvKiByYW5kb20gbnVtYmVyIHRvIGlkZW50aWZ5IEpzb25UYWJsZUV4ZWNDb250ZXh0 ICovCisjZGVmaW5lIEpTT05fVEFCTEVfRVhFQ19DT05URVhUX01BR0lDCQk0MTgzNTI4NjcKKwor dHlwZWRlZiBzdHJ1Y3QgSnNvblRhYmxlRXhlY0NvbnRleHQKK3sKKwlpbnQJCQltYWdpYzsKKwlK c29uVGFibGVTY2FuU3RhdGUgKipjb2xleHByc2NhbnM7CisJSnNvblRhYmxlU2NhblN0YXRlICpy b290OworfQkJCUpzb25UYWJsZUV4ZWNDb250ZXh0OworCiAvKiBzdHJpY3QvbGF4IGZsYWdzIGlz IGRlY29tcG9zZWQgaW50byBmb3VyIFt1bl13cmFwL2Vycm9yIGZsYWdzICovCiAjZGVmaW5lIGpz cFN0cmljdEFic2VuY2VPZkVycm9ycyhjeHQpCSghKGN4dCktPmxheE1vZGUpCiAjZGVmaW5lIGpz cEF1dG9VbndyYXAoY3h0KQkJCQkoKGN4dCktPmxheE1vZGUpCkBAIC0yNTMsNiArMzExLDcgQEAg c3RhdGljIEpzb25QYXRoRXhlY1Jlc3VsdCBnZXRBcnJheUluZGV4KEpzb25QYXRoRXhlY0NvbnRl eHQgKmN4dCwKIAkJCQkJCQkJCQlKc29uUGF0aEl0ZW0gKmpzcCwgSnNvbmJWYWx1ZSAqamIsIGlu dDMyICppbmRleCk7CiBzdGF0aWMgSnNvbkJhc2VPYmplY3RJbmZvIHNldEJhc2VPYmplY3QoSnNv blBhdGhFeGVjQ29udGV4dCAqY3h0LAogCQkJCQkJCQkJCUpzb25iVmFsdWUgKmpidiwgaW50MzIg aWQpOworc3RhdGljIHZvaWQgSnNvblZhbHVlTGlzdENsZWFyKEpzb25WYWx1ZUxpc3QgKmp2bCk7 CiBzdGF0aWMgdm9pZCBKc29uVmFsdWVMaXN0QXBwZW5kKEpzb25WYWx1ZUxpc3QgKmp2bCwgSnNv bmJWYWx1ZSAqamJ2KTsKIHN0YXRpYyBpbnQJSnNvblZhbHVlTGlzdExlbmd0aChjb25zdCBKc29u VmFsdWVMaXN0ICpqdmwpOwogc3RhdGljIGJvb2wgSnNvblZhbHVlTGlzdElzRW1wdHkoSnNvblZh bHVlTGlzdCAqanZsKTsKQEAgLTI3Miw2ICszMzEsMzIgQEAgc3RhdGljIGludAljb21wYXJlRGF0 ZXRpbWUoRGF0dW0gdmFsMSwgT2lkIHR5cGlkMSwgRGF0dW0gdmFsMiwgT2lkIHR5cGlkMiwKIHN0 YXRpYyB2b2lkIGNoZWNrVGltZXpvbmVJc1VzZWRGb3JDYXN0KGJvb2wgdXNlVHosIGNvbnN0IGNo YXIgKnR5cGUxLAogCQkJCQkJCQkJICAgY29uc3QgY2hhciAqdHlwZTIpOwogCisKK3N0YXRpYyBK c29uVGFibGVQbGFuU3RhdGUgKiBKc29uVGFibGVJbml0UGxhblN0YXRlKEpzb25UYWJsZUV4ZWND b250ZXh0ICogY3h0LAorCQkJCQkJCQkJCQkJICAgTm9kZSAqcGxhbiwKKwkJCQkJCQkJCQkJCSAg IEpzb25UYWJsZVBsYW5TdGF0ZSAqIHBhcmVudCk7CitzdGF0aWMgYm9vbCBKc29uVGFibGVQbGFu TmV4dFJvdyhKc29uVGFibGVQbGFuU3RhdGUgKiBzdGF0ZSk7CitzdGF0aWMgYm9vbCBKc29uVGFi bGVTY2FuTmV4dFJvdyhKc29uVGFibGVTY2FuU3RhdGUgKnNjYW4pOworCitzdGF0aWMgdm9pZCBK c29uVGFibGVJbml0T3BhcXVlKFRhYmxlRnVuY1NjYW5TdGF0ZSAqc3RhdGUsIGludCBuYXR0cyk7 CitzdGF0aWMgdm9pZCBKc29uVGFibGVTZXREb2N1bWVudChUYWJsZUZ1bmNTY2FuU3RhdGUgKnN0 YXRlLCBEYXR1bSB2YWx1ZSk7CitzdGF0aWMgYm9vbCBKc29uVGFibGVGZXRjaFJvdyhUYWJsZUZ1 bmNTY2FuU3RhdGUgKnN0YXRlKTsKK3N0YXRpYyBEYXR1bSBKc29uVGFibGVHZXRWYWx1ZShUYWJs ZUZ1bmNTY2FuU3RhdGUgKnN0YXRlLCBpbnQgY29sbnVtLAorCQkJCSAgT2lkIHR5cGlkLCBpbnQz MiB0eXBtb2QsIGJvb2wgKmlzbnVsbCk7CitzdGF0aWMgdm9pZCBKc29uVGFibGVEZXN0cm95T3Bh cXVlKFRhYmxlRnVuY1NjYW5TdGF0ZSAqc3RhdGUpOworCitjb25zdCBUYWJsZUZ1bmNSb3V0aW5l IEpzb25iVGFibGVSb3V0aW5lID0KK3sKKwlKc29uVGFibGVJbml0T3BhcXVlLAorCUpzb25UYWJs ZVNldERvY3VtZW50LAorCU5VTEwsCisJTlVMTCwKKwlOVUxMLAorCUpzb25UYWJsZUZldGNoUm93 LAorCUpzb25UYWJsZUdldFZhbHVlLAorCUpzb25UYWJsZURlc3Ryb3lPcGFxdWUKK307CisKIC8q KioqKioqKioqKioqKioqKiogVXNlciBpbnRlcmZhY2UgdG8gSnNvblBhdGggZXhlY3V0b3IgKioq KioqKioqKioqKioqKioqKiovCiAKIC8qCkBAIC0zMzgzLDYgKzM0NjgsMTMgQEAgc2V0QmFzZU9i amVjdChKc29uUGF0aEV4ZWNDb250ZXh0ICpjeHQsIEpzb25iVmFsdWUgKmpidiwgaW50MzIgaWQp CiAJcmV0dXJuIGJhc2VPYmplY3Q7CiB9CiAKK3N0YXRpYyB2b2lkCitKc29uVmFsdWVMaXN0Q2xl YXIoSnNvblZhbHVlTGlzdCAqanZsKQoreworCWp2bC0+c2luZ2xldG9uID0gTlVMTDsKKwlqdmwt Pmxpc3QgPSBOVUxMOworfQorCiBzdGF0aWMgdm9pZAogSnNvblZhbHVlTGlzdEFwcGVuZChKc29u VmFsdWVMaXN0ICpqdmwsIEpzb25iVmFsdWUgKmpidikKIHsKQEAgLTM5MTgsMyArNDAxMCw0NTgg 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 bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IGEzOGJl NmZiZDguLjAwNTFiYjFlMzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxl dXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTUyMCw2 ICs1MjAsOCBAQCBzdGF0aWMgY2hhciAqZmxhdHRlbl9yZWxvcHRpb25zKE9pZCByZWxpZCk7CiBz dGF0aWMgdm9pZCBnZXRfcmVsb3B0aW9ucyhTdHJpbmdJbmZvIGJ1ZiwgRGF0dW0gcmVsb3B0aW9u cyk7CiBzdGF0aWMgdm9pZCBnZXRfanNvbl9wYXRoX3NwZWMoTm9kZSAqcGF0aF9zcGVjLCBkZXBh cnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQkJCQkJICAgYm9vbCBzaG93aW1wbGljaXQpOworc3Rh dGljIHZvaWQgZ2V0X2pzb25fdGFibGVfY29sdW1ucyhUYWJsZUZ1bmMgKnRmLCBKc29uVGFibGVQ bGFuICpub2RlLAorCQkJCQkJCQkgICBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsIGJvb2wgc2hv d2ltcGxpY2l0KTsKIAogI2RlZmluZSBvbmx5X21hcmtlcihydGUpICAoKHJ0ZSktPmluaCA/ICIi IDogIk9OTFkgIikKIApAQCAtODYyNiw3ICs4NjI4LDggQEAgZ2V0X2pzb25fYmVoYXZpb3IoSnNv bkJlaGF2aW9yICpiZWhhdmlvciwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogLyoKICAqIGdl dF9qc29uX2V4cHJfb3B0aW9ucwogICoKLSAqIFBhcnNlIGJhY2sgY29tbW9uIG9wdGlvbnMgZm9y IEpTT05fUVVFUlksIEpTT05fVkFMVUUsIEpTT05fRVhJU1RTLgorICogUGFyc2UgYmFjayBjb21t b24gb3B0aW9ucyBmb3IgSlNPTl9RVUVSWSwgSlNPTl9WQUxVRSwgSlNPTl9FWElTVFMgYW5kCisg KiBKU09OX1RBQkxFIGNvbHVtbnMuCiAgKi8KIHN0YXRpYyB2b2lkCiBnZXRfanNvbl9leHByX29w dGlvbnMoSnNvbkV4cHIgKmpzZXhwciwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LApAQCAtOTg3 Myw2ICs5ODc2LDkgQEAgZ2V0X3J1bGVfZXhwcihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQg KmNvbnRleHQsCiAJCQkJCWNhc2UgSlNPTl9WQUxVRV9PUDoKIAkJCQkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoYnVmLCAiSlNPTl9WQUxVRSgiKTsKIAkJCQkJCWJyZWFrOworCQkJCQlkZWZhdWx0 OgorCQkJCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgSnNvbkV4cHIgdHlwZTogJWQiLCBqZXhw ci0+b3ApOworCQkJCQkJYnJlYWs7CiAJCQkJfQogCiAJCQkJZ2V0X3J1bGVfZXhwcihqZXhwci0+ Zm9ybWF0dGVkX2V4cHIsIGNvbnRleHQsIHNob3dpbXBsaWNpdCk7CkBAIC0xMTIzOSwxNiArMTEy NDUsMTQgQEAgZ2V0X3N1YmxpbmtfZXhwcihTdWJMaW5rICpzdWJsaW5rLCBkZXBhcnNlX2NvbnRl eHQgKmNvbnRleHQpCiAKIAogLyogLS0tLS0tLS0tLQotICogZ2V0X3RhYmxlZnVuYwkJCS0gUGFy c2UgYmFjayBhIHRhYmxlIGZ1bmN0aW9uCisgKiBnZXRfeG1sdGFibGUJCQktIFBhcnNlIGJhY2sg YSBYTUxUQUJMRSBmdW5jdGlvbgogICogLS0tLS0tLS0tLQogICovCiBzdGF0aWMgdm9pZAotZ2V0 X3RhYmxlZnVuYyhUYWJsZUZ1bmMgKnRmLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsIGJvb2wg c2hvd2ltcGxpY2l0KQorZ2V0X3htbHRhYmxlKFRhYmxlRnVuYyAqdGYsIGRlcGFyc2VfY29udGV4 dCAqY29udGV4dCwgYm9vbCBzaG93aW1wbGljaXQpCiB7CiAJU3RyaW5nSW5mbwlidWYgPSBjb250 ZXh0LT5idWY7CiAKLQkvKiBYTUxUQUJMRSBpcyB0aGUgb25seSBleGlzdGluZyBpbXBsZW1lbnRh dGlvbi4gICovCi0KIAlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIlhNTFRBQkxFKCIpOwog CiAJaWYgKHRmLT5uc191cmlzICE9IE5JTCkKQEAgLTExMzM5LDYgKzExMzQzLDI3MSBAQCBnZXRf 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 ZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggNDQz Nzc2N2ViMi4uZWQ0MjM0MGMzMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTE5NTksNiArMTk1 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 bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBjOTJkNGIyMjY1 Li4xYTE1ZDI4NmZhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0xNzQ1LDYgKzE3NDUsNyBA QCB0eXBlZGVmIHN0cnVjdCBKc29uRnVuY0V4cHIKIAlKc29uRXhwck9wCW9wOwkJCQkvKiBleHBy ZXNzaW9uIHR5cGUgKi8KIAlKc29uVmFsdWVFeHByICpjb250ZXh0X2l0ZW07CS8qIGNvbnRleHQg aXRlbSBleHByZXNzaW9uICovCiAJTm9kZQkgICAqcGF0aHNwZWM7CQkvKiBKU09OIHBhdGggc3Bl Y2lmaWNhdGlvbiBleHByZXNzaW9uICovCisJY2hhcgkgICAqcGF0aG5hbWU7CQkvKiBwYXRoIG5h bWUsIGlmIGFueSAqLwogCUxpc3QJICAgKnBhc3Npbmc7CQkvKiBsaXN0IG9mIFBBU1NJTkcgY2xh dXNlIGFyZ3VtZW50cywgaWYgYW55ICovCiAJSnNvbk91dHB1dCAqb3V0cHV0OwkJCS8qIG91dHB1 dCBjbGF1c2UsIGlmIHNwZWNpZmllZCAqLwogCUpzb25CZWhhdmlvciAqb25fZW1wdHk7CQkvKiBP TiBFTVBUWSBiZWhhdmlvciAqLwpAQCAtMTc1NCw2ICsxNzU1LDExNCBAQCB0eXBlZGVmIHN0cnVj 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 L3ByaW1ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXggYzE0MTM3 NjNmOC4uNTZlYWU3OTMxMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVz 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 b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwpAQCAtMTc5OCw2ICsxODEyLDcgQEAg dHlwZWRlZiBlbnVtIEpzb25FeHByT3AKIAlKU09OX0VYSVNUU19PUCwJCQkJLyogSlNPTl9FWElT VFMoKSAqLwogCUpTT05fUVVFUllfT1AsCQkJCS8qIEpTT05fUVVFUlkoKSAqLwogCUpTT05fVkFM VUVfT1AsCQkJCS8qIEpTT05fVkFMVUUoKSAqLworCUpTT05fVEFCTEVfT1AsCQkJCS8qIEpTT05f VEFCTEUoKSAqLwogfSBKc29uRXhwck9wOwogCiAvKgpAQCAtMTg1Myw2ICsxODY4LDQ5IEBAIHR5 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 cGF0aC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaAppbmRleCAwZjRiMWViYzlmLi4y YzY3M2I3ZGVhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oCisrKyBi L3NyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmgKQEAgLTE1LDYgKzE1LDcgQEAKICNkZWZpbmUg SlNPTlBBVEhfSAogCiAjaW5jbHVkZSAiZm1nci5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL3RhYmxl ZnVuYy5oIgogI2luY2x1ZGUgIm5vZGVzL3BnX2xpc3QuaCIKICNpbmNsdWRlICJub2Rlcy9wcmlt bm9kZXMuaCIKICNpbmNsdWRlICJ1dGlscy9qc29uYi5oIgpAQCAtMzAzLDQgKzMwNCw2IEBAIGV4 dGVybiBEYXR1bSBKc29uUGF0aFF1ZXJ5KERhdHVtIGpiLCBKc29uUGF0aCAqanAsIEpzb25XcmFw cGVyIHdyYXBwZXIsCiBleHRlcm4gSnNvbmJWYWx1ZSAqSnNvblBhdGhWYWx1ZShEYXR1bSBqYiwg SnNvblBhdGggKmpwLCBib29sICplbXB0eSwKIAkJCQkJCQkJIGJvb2wgKmVycm9yLCBMaXN0ICp2 YXJzKTsKIAorZXh0ZXJuIFBHRExMSU1QT1JUIGNvbnN0IFRhYmxlRnVuY1JvdXRpbmUgSnNvbmJU YWJsZVJvdXRpbmU7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy90 ZXN0L2VjcGdfc2NoZWR1bGUgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZWNwZ19zY2hlZHVs ZQppbmRleCBmOWMwYTBlM2MwLi4yNTRhMGJhY2M3IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNl cy9lY3BnL3Rlc3QvZWNwZ19zY2hlZHVsZQorKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qv ZWNwZ19zY2hlZHVsZQpAQCAtNTIsNiArNTIsNyBAQCB0ZXN0OiBzcWwvb2xkZXhlYwogdGVzdDog 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 bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZjdhZTcwYTAwNgotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3FsanNvbl9qc29udGFibGUub3V0CkBA IC0wLDAgKzEsMTMzMyBAQAorLS0gSlNPTl9UQUJMRQorLS0gU2hvdWxkIGZhaWwgKEpTT05fVEFC 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 X3RhYmxlX3ZpZXcxIEFTCitTRUxFQ1QgKiBGUk9NCisJSlNPTl9UQUJMRSgKKwkJanNvbmIgJ251 bGwnLCAnbGF4ICRbKl0nIFBBU1NJTkcgMSArIDIgQVMgYSwganNvbiAnImZvbyInIEFTICJiIGMi CisJCUNPTFVNTlMgKAorCQkJaWQgRk9SIE9SRElOQUxJVFksCisJCQlORVNURUQgUEFUSCAnJFsx XScgQVMgcDEgQ09MVU1OUyAoCisJCQkJYTEgaW50LAorCQkJCU5FU1RFRCBQQVRIICckWypdJyBB UyAicDEgMSIgQ09MVU1OUyAoCisJCQkJCWExMSB0ZXh0CisJCQkJKSwKKwkJCQliMSB0ZXh0CisJ CQkpLAorCQkJTkVTVEVEIFBBVEggJyRbMl0nIEFTIHAyIENPTFVNTlMgKAorCQkJCU5FU1RFRCBQ QVRIICckWypdJyBBUyAicDI6MSIgQ09MVU1OUyAoCisJCQkJCWEyMSB0ZXh0CisJCQkJKSwKKwkJ CQlORVNURUQgUEFUSCAnJFsqXScgQVMgcDIyIENPTFVNTlMgKAorCQkJCQlhMjIgdGV4dAorCQkJ CSkKKwkJCSkKKwkJKQorCSk7CitDUkVBVEUgVklFVyBqc29uYl90YWJsZV92aWV3MiBBUworU0VM RUNUICogRlJPTQorCUpTT05fVEFCTEUoCisJCWpzb25iICdudWxsJywgJ2xheCAkWypdJyBQQVNT SU5HIDEgKyAyIEFTIGEsIGpzb24gJyJmb28iJyBBUyAiYiBjIgorCQlDT0xVTU5TICgKKwkJCSJp bnQiIGludCBQQVRIICckJywKKwkJCSJ0ZXh0IiB0ZXh0IFBBVEggJyQnLAorCQkJImNoYXIoNCki IGNoYXIoNCkgUEFUSCAnJCcsCisJCQkiYm9vbCIgYm9vbCBQQVRIICckJywKKwkJCSJudW1lcmlj IiBudW1lcmljIFBBVEggJyQnLAorCQkJImRvbWFpbiIganNvbmJfdGVzdF9kb21haW4gUEFUSCAn JCcpKTsKK0NSRUFURSBWSUVXIGpzb25iX3RhYmxlX3ZpZXczIEFTCitTRUxFQ1QgKiBGUk9NCisJ SlNPTl9UQUJMRSgKKwkJanNvbmIgJ251bGwnLCAnbGF4ICRbKl0nIFBBU1NJTkcgMSArIDIgQVMg YSwganNvbiAnImZvbyInIEFTICJiIGMiCisJCUNPTFVNTlMgKAorCQkJanMganNvbiBQQVRIICck JywKKwkJCWpiIGpzb25iIFBBVEggJyQnLAorCQkJanN0IHRleHQgICAgRk9STUFUIEpTT04gIFBB VEggJyQnLAorCQkJanNjIGNoYXIoNCkgRk9STUFUIEpTT04gIFBBVEggJyQnLAorCQkJanN2IHZh cmNoYXIoNCkgRk9STUFUIEpTT04gIFBBVEggJyQnKSk7CitDUkVBVEUgVklFVyBqc29uYl90YWJs ZV92aWV3NCBBUworU0VMRUNUICogRlJPTQorCUpTT05fVEFCTEUoCisJCWpzb25iICdudWxsJywg J2xheCAkWypdJyBQQVNTSU5HIDEgKyAyIEFTIGEsIGpzb24gJyJmb28iJyBBUyAiYiBjIgorCQlD T0xVTU5TICgKKyAgICAgICAgICAgIGpzYiBqc29uYiAgIEZPUk1BVCBKU09OIFBBVEggJyQnLAor ICAgICAgICAgICAganNicSBqc29uYiBGT1JNQVQgSlNPTiBQQVRIICckJyBPTUlUIFFVT1RFUywK KyAgICAgICAgICAgIGFhYSBpbnQsIC0tIGltcGxpY2l0IHBhdGggJyQuImFhYSInLAorICAgICAg ICAgICAgYWFhMSBpbnQgUEFUSCAnJC5hYWEnKSk7CitDUkVBVEUgVklFVyBqc29uYl90YWJsZV92 aWV3NSBBUworU0VMRUNUICogRlJPTQorCUpTT05fVEFCTEUoCisJCWpzb25iICdudWxsJywgJ2xh eCAkWypdJyBQQVNTSU5HIDEgKyAyIEFTIGEsIGpzb24gJyJmb28iJyBBUyAiYiBjIgorCQlDT0xV TU5TICgKKwkJCWV4aXN0czEgYm9vbCBFWElTVFMgUEFUSCAnJC5hYWEnLAorCQkJZXhpc3RzMiBp bnQgRVhJU1RTIFBBVEggJyQuYWFhJyBUUlVFIE9OIEVSUk9SLAorCQkJZXhpc3RzMyB0ZXh0IEVY SVNUUyBQQVRIICdzdHJpY3QgJC5hYWEnIFVOS05PV04gT04gRVJST1IpKTsKK0NSRUFURSBWSUVX IGpzb25iX3RhYmxlX3ZpZXc2IEFTCitTRUxFQ1QgKiBGUk9NCisJSlNPTl9UQUJMRSgKKwkJanNv bmIgJ251bGwnLCAnbGF4ICRbKl0nIFBBU1NJTkcgMSArIDIgQVMgYSwganNvbiAnImZvbyInIEFT ICJiIGMiCisJCUNPTFVNTlMgKAorCQkJanMyIGpzb24gUEFUSCAnJCcsCisJCQlqc2IydyBqc29u YiBQQVRIICckJyBXSVRIIFdSQVBQRVIsCisJCQlqc2IycSBqc29uYiBQQVRIICckJyBPTUlUIFFV T1RFUywKKwkJCWlhIGludFtdIFBBVEggJyQnLAorCQkJdGEgdGV4dFtdIFBBVEggJyQnLAorCQkJ amJhIGpzb25iW10gUEFUSCAnJCcpKTsKK1xzdiBqc29uYl90YWJsZV92aWV3MQorQ1JFQVRFIE9S IFJFUExBQ0UgVklFVyBwdWJsaWMuanNvbmJfdGFibGVfdmlldzEgQVMKKyBTRUxFQ1QgaWQsCisg ICAgYTEsCisgICAgYjEsCisgICAgYTExLAorICAgIGEyMSwKKyAgICBhMjIKKyAgIEZST00gSlNP Tl9UQUJMRSgKKyAgICAgICAgICAgICdudWxsJzo6anNvbmIsICckWypdJyBBUyBqc29uX3RhYmxl X3BhdGhfMAorICAgICAgICAgICAgUEFTU0lORworICAgICAgICAgICAgICAgIDEgKyAyIEFTIGEs CisgICAgICAgICAgICAgICAgJyJmb28iJzo6anNvbiBBUyAiYiBjIgorICAgICAgICAgICAgQ09M VU1OUyAoCisgICAgICAgICAgICAgICAgaWQgRk9SIE9SRElOQUxJVFksCisgICAgICAgICAgICAg ICAgTkVTVEVEIFBBVEggJyRbMV0nIEFTIHAxCisgICAgICAgICAgICAgICAgQ09MVU1OUyAoCisg ICAgICAgICAgICAgICAgICAgIGExIGludGVnZXIgUEFUSCAnJC4iYTEiJywKKyAgICAgICAgICAg ICAgICAgICAgYjEgdGV4dCBQQVRIICckLiJiMSInLAorICAgICAgICAgICAgICAgICAgICBORVNU RUQgUEFUSCAnJFsqXScgQVMgInAxIDEiCisgICAgICAgICAgICAgICAgICAgIENPTFVNTlMgKAor ICAgICAgICAgICAgICAgICAgICAgICAgYTExIHRleHQgUEFUSCAnJC4iYTExIicKKyAgICAgICAg ICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgTkVTVEVE IFBBVEggJyRbMl0nIEFTIHAyCisgICAgICAgICAgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAg ICAgICAgICAgIE5FU1RFRCBQQVRIICckWypdJyBBUyAicDI6MSIKKyAgICAgICAgICAgICAgICAg ICAgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAgICAgICAgICBhMjEgdGV4dCBQQVRIICckLiJh MjEiJworICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBORVNURUQg UEFUSCAnJFsqXScgQVMgcDIyCisgICAgICAgICAgICAgICAgICAgIENPTFVNTlMgKAorICAgICAg ICAgICAgICAgICAgICAgICAgYTIyIHRleHQgUEFUSCAnJC4iYTIyIicKKyAgICAgICAgICAgICAg ICAgICAgKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIFBM QU4gKGpzb25fdGFibGVfcGF0aF8wIE9VVEVSICgocDEgT1VURVIgInAxIDEiKSBVTklPTiAocDIg T1VURVIgKCJwMjoxIiBVTklPTiBwMjIpKSkpCisgICAgICAgICkKK1xzdiBqc29uYl90YWJsZV92 aWV3MgorQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMuanNvbmJfdGFibGVfdmlldzIgQVMK KyBTRUxFQ1QgImludCIsCisgICAgdGV4dCwKKyAgICAiY2hhcig0KSIsCisgICAgYm9vbCwKKyAg ICAibnVtZXJpYyIsCisgICAgZG9tYWluCisgICBGUk9NIEpTT05fVEFCTEUoCisgICAgICAgICAg ICAnbnVsbCc6Ompzb25iLCAnJFsqXScgQVMganNvbl90YWJsZV9wYXRoXzAKKyAgICAgICAgICAg IFBBU1NJTkcKKyAgICAgICAgICAgICAgICAxICsgMiBBUyBhLAorICAgICAgICAgICAgICAgICci Zm9vIic6Ompzb24gQVMgImIgYyIKKyAgICAgICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAg ICAgICJpbnQiIGludGVnZXIgUEFUSCAnJCcsCisgICAgICAgICAgICAgICAgdGV4dCB0ZXh0IFBB VEggJyQnLAorICAgICAgICAgICAgICAgICJjaGFyKDQpIiBjaGFyYWN0ZXIoNCkgUEFUSCAnJCcs CisgICAgICAgICAgICAgICAgYm9vbCBib29sZWFuIFBBVEggJyQnLAorICAgICAgICAgICAgICAg ICJudW1lcmljIiBudW1lcmljIFBBVEggJyQnLAorICAgICAgICAgICAgICAgIGRvbWFpbiBqc29u Yl90ZXN0X2RvbWFpbiBQQVRIICckJworICAgICAgICAgICAgKQorICAgICAgICAgICAgUExBTiAo anNvbl90YWJsZV9wYXRoXzApCisgICAgICAgICkKK1xzdiBqc29uYl90YWJsZV92aWV3MworQ1JF QVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMuanNvbmJfdGFibGVfdmlldzMgQVMKKyBTRUxFQ1Qg anMsCisgICAgamIsCisgICAganN0LAorICAgIGpzYywKKyAgICBqc3YKKyAgIEZST00gSlNPTl9U QUJMRSgKKyAgICAgICAgICAgICdudWxsJzo6anNvbmIsICckWypdJyBBUyBqc29uX3RhYmxlX3Bh dGhfMAorICAgICAgICAgICAgUEFTU0lORworICAgICAgICAgICAgICAgIDEgKyAyIEFTIGEsCisg ICAgICAgICAgICAgICAgJyJmb28iJzo6anNvbiBBUyAiYiBjIgorICAgICAgICAgICAgQ09MVU1O UyAoCisgICAgICAgICAgICAgICAganMganNvbiBQQVRIICckJywKKyAgICAgICAgICAgICAgICBq YiBqc29uYiBQQVRIICckJywKKyAgICAgICAgICAgICAgICBqc3QgdGV4dCBGT1JNQVQgSlNPTiBQ QVRIICckJywKKyAgICAgICAgICAgICAgICBqc2MgY2hhcmFjdGVyKDQpIEZPUk1BVCBKU09OIFBB VEggJyQnLAorICAgICAgICAgICAgICAgIGpzdiBjaGFyYWN0ZXIgdmFyeWluZyg0KSBGT1JNQVQg SlNPTiBQQVRIICckJworICAgICAgICAgICAgKQorICAgICAgICAgICAgUExBTiAoanNvbl90YWJs ZV9wYXRoXzApCisgICAgICAgICkKK1xzdiBqc29uYl90YWJsZV92aWV3NAorQ1JFQVRFIE9SIFJF UExBQ0UgVklFVyBwdWJsaWMuanNvbmJfdGFibGVfdmlldzQgQVMKKyBTRUxFQ1QganNiLAorICAg IGpzYnEsCisgICAgYWFhLAorICAgIGFhYTEKKyAgIEZST00gSlNPTl9UQUJMRSgKKyAgICAgICAg ICAgICdudWxsJzo6anNvbmIsICckWypdJyBBUyBqc29uX3RhYmxlX3BhdGhfMAorICAgICAgICAg ICAgUEFTU0lORworICAgICAgICAgICAgICAgIDEgKyAyIEFTIGEsCisgICAgICAgICAgICAgICAg JyJmb28iJzo6anNvbiBBUyAiYiBjIgorICAgICAgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAg ICAgICAganNiIGpzb25iIFBBVEggJyQnLAorICAgICAgICAgICAgICAgIGpzYnEganNvbmIgUEFU SCAnJCcgT01JVCBRVU9URVMsCisgICAgICAgICAgICAgICAgYWFhIGludGVnZXIgUEFUSCAnJC4i YWFhIicsCisgICAgICAgICAgICAgICAgYWFhMSBpbnRlZ2VyIFBBVEggJyQuImFhYSInCisgICAg ICAgICAgICApCisgICAgICAgICAgICBQTEFOIChqc29uX3RhYmxlX3BhdGhfMCkKKyAgICAgICAg KQorXHN2IGpzb25iX3RhYmxlX3ZpZXc1CitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1YmxpYy5q c29uYl90YWJsZV92aWV3NSBBUworIFNFTEVDVCBleGlzdHMxLAorICAgIGV4aXN0czIsCisgICAg ZXhpc3RzMworICAgRlJPTSBKU09OX1RBQkxFKAorICAgICAgICAgICAgJ251bGwnOjpqc29uYiwg JyRbKl0nIEFTIGpzb25fdGFibGVfcGF0aF8wCisgICAgICAgICAgICBQQVNTSU5HCisgICAgICAg ICAgICAgICAgMSArIDIgQVMgYSwKKyAgICAgICAgICAgICAgICAnImZvbyInOjpqc29uIEFTICJi IGMiCisgICAgICAgICAgICBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICBleGlzdHMxIGJvb2xl YW4gRVhJU1RTIFBBVEggJyQuImFhYSInLAorICAgICAgICAgICAgICAgIGV4aXN0czIgaW50ZWdl ciBFWElTVFMgUEFUSCAnJC4iYWFhIicgVFJVRSBPTiBFUlJPUiwKKyAgICAgICAgICAgICAgICBl eGlzdHMzIHRleHQgRVhJU1RTIFBBVEggJ3N0cmljdCAkLiJhYWEiJyBVTktOT1dOIE9OIEVSUk9S CisgICAgICAgICAgICApCisgICAgICAgICAgICBQTEFOIChqc29uX3RhYmxlX3BhdGhfMCkKKyAg ICAgICAgKQorXHN2IGpzb25iX3RhYmxlX3ZpZXc2CitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1 YmxpYy5qc29uYl90YWJsZV92aWV3NiBBUworIFNFTEVDVCBqczIsCisgICAganNiMncsCisgICAg anNiMnEsCisgICAgaWEsCisgICAgdGEsCisgICAgamJhCisgICBGUk9NIEpTT05fVEFCTEUoCisg ICAgICAgICAgICAnbnVsbCc6Ompzb25iLCAnJFsqXScgQVMganNvbl90YWJsZV9wYXRoXzAKKyAg ICAgICAgICAgIFBBU1NJTkcKKyAgICAgICAgICAgICAgICAxICsgMiBBUyBhLAorICAgICAgICAg ICAgICAgICciZm9vIic6Ompzb24gQVMgImIgYyIKKyAgICAgICAgICAgIENPTFVNTlMgKAorICAg ICAgICAgICAgICAgIGpzMiBqc29uIFBBVEggJyQnLAorICAgICAgICAgICAgICAgIGpzYjJ3IGpz b25iIFBBVEggJyQnIFdJVEggVU5DT05ESVRJT05BTCBXUkFQUEVSLAorICAgICAgICAgICAgICAg IGpzYjJxIGpzb25iIFBBVEggJyQnIE9NSVQgUVVPVEVTLAorICAgICAgICAgICAgICAgIGlhIGlu dGVnZXJbXSBQQVRIICckJywKKyAgICAgICAgICAgICAgICB0YSB0ZXh0W10gUEFUSCAnJCcsCisg ICAgICAgICAgICAgICAgamJhIGpzb25iW10gUEFUSCAnJCcKKyAgICAgICAgICAgICkKKyAgICAg ICAgICAgIFBMQU4gKGpzb25fdGFibGVfcGF0aF8wKQorICAgICAgICApCitFWFBMQUlOIChDT1NU UyBPRkYsIFZFUkJPU0UpIFNFTEVDVCAqIEZST00ganNvbmJfdGFibGVfdmlldzE7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFRhYmxlIEZ1bmN0aW9uIFNjYW4gb24gIkpTT05fVEFCTEUiICJqc29uX3RhYmxlIgorICAgT3V0 cHV0OiAianNvbl90YWJsZSIuaWQsICJqc29uX3RhYmxlIi5hMSwgImpzb25fdGFibGUiLmIxLCAi anNvbl90YWJsZSIuYTExLCAianNvbl90YWJsZSIuYTIxLCAianNvbl90YWJsZSIuYTIyCisgICBU YWJsZSBGdW5jdGlvbiBDYWxsOiBKU09OX1RBQkxFKCdudWxsJzo6anNvbmIsICckWypdJyBBUyBq c29uX3RhYmxlX3BhdGhfMCBQQVNTSU5HIDMgQVMgYSwgJyJmb28iJzo6anNvbmIgQVMgImIgYyIg Q09MVU1OUyAoaWQgRk9SIE9SRElOQUxJVFksIE5FU1RFRCBQQVRIICckWzFdJyBBUyBwMSBDT0xV TU5TIChhMSBpbnRlZ2VyIFBBVEggJyQuImExIicsIGIxIHRleHQgUEFUSCAnJC4iYjEiJywgTkVT VEVEIFBBVEggJyRbKl0nIEFTICJwMSAxIiBDT0xVTU5TIChhMTEgdGV4dCBQQVRIICckLiJhMTEi JykpLCBORVNURUQgUEFUSCAnJFsyXScgQVMgcDIgQ09MVU1OUyAoIE5FU1RFRCBQQVRIICckWypd JyBBUyAicDI6MSIgQ09MVU1OUyAoYTIxIHRleHQgUEFUSCAnJC4iYTIxIicpLCBORVNURUQgUEFU SCAnJFsqXScgQVMgcDIyIENPTFVNTlMgKGEyMiB0ZXh0IFBBVEggJyQuImEyMiInKSkpIFBMQU4g KGpzb25fdGFibGVfcGF0aF8wIE9VVEVSICgocDEgT1VURVIgInAxIDEiKSBVTklPTiAocDIgT1VU RVIgKCJwMjoxIiBVTklPTiBwMjIpKSkpKQorKDMgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZG LCBWRVJCT1NFKSBTRUxFQ1QgKiBGUk9NIGpzb25iX3RhYmxlX3ZpZXcyOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFRh YmxlIEZ1bmN0aW9uIFNjYW4gb24gIkpTT05fVEFCTEUiICJqc29uX3RhYmxlIgorICAgT3V0cHV0 OiAianNvbl90YWJsZSIuImludCIsICJqc29uX3RhYmxlIi50ZXh0LCAianNvbl90YWJsZSIuImNo YXIoNCkiLCAianNvbl90YWJsZSIuYm9vbCwgImpzb25fdGFibGUiLiJudW1lcmljIiwgImpzb25f dGFibGUiLmRvbWFpbgorICAgVGFibGUgRnVuY3Rpb24gQ2FsbDogSlNPTl9UQUJMRSgnbnVsbCc6 Ompzb25iLCAnJFsqXScgQVMganNvbl90YWJsZV9wYXRoXzAgUEFTU0lORyAzIEFTIGEsICciZm9v Iic6Ompzb25iIEFTICJiIGMiIENPTFVNTlMgKCJpbnQiIGludGVnZXIgUEFUSCAnJCcsIHRleHQg dGV4dCBQQVRIICckJywgImNoYXIoNCkiIGNoYXJhY3Rlcig0KSBQQVRIICckJywgYm9vbCBib29s ZWFuIFBBVEggJyQnLCAibnVtZXJpYyIgbnVtZXJpYyBQQVRIICckJywgZG9tYWluIGpzb25iX3Rl c3RfZG9tYWluIFBBVEggJyQnKSBQTEFOIChqc29uX3RhYmxlX3BhdGhfMCkpCisoMyByb3dzKQor CitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpIFNFTEVDVCAqIEZST00ganNvbmJfdGFibGVf dmlldzM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg VGFibGUgRnVuY3Rpb24gU2NhbiBvbiAiSlNPTl9UQUJMRSIgImpzb25fdGFibGUiCisgICBPdXRw dXQ6ICJqc29uX3RhYmxlIi5qcywgImpzb25fdGFibGUiLmpiLCAianNvbl90YWJsZSIuanN0LCAi anNvbl90YWJsZSIuanNjLCAianNvbl90YWJsZSIuanN2CisgICBUYWJsZSBGdW5jdGlvbiBDYWxs OiBKU09OX1RBQkxFKCdudWxsJzo6anNvbmIsICckWypdJyBBUyBqc29uX3RhYmxlX3BhdGhfMCBQ QVNTSU5HIDMgQVMgYSwgJyJmb28iJzo6anNvbmIgQVMgImIgYyIgQ09MVU1OUyAoanMganNvbiBQ QVRIICckJywgamIganNvbmIgUEFUSCAnJCcsIGpzdCB0ZXh0IEZPUk1BVCBKU09OIFBBVEggJyQn LCBqc2MgY2hhcmFjdGVyKDQpIEZPUk1BVCBKU09OIFBBVEggJyQnLCBqc3YgY2hhcmFjdGVyIHZh cnlpbmcoNCkgRk9STUFUIEpTT04gUEFUSCAnJCcpIFBMQU4gKGpzb25fdGFibGVfcGF0aF8wKSkK KygzIHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkgU0VMRUNUICogRlJPTSBq c29uYl90YWJsZV92aWV3NDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFRhYmxlIEZ1bmN0aW9uIFNjYW4g b24gIkpTT05fVEFCTEUiICJqc29uX3RhYmxlIgorICAgT3V0cHV0OiAianNvbl90YWJsZSIuanNi LCAianNvbl90YWJsZSIuanNicSwgImpzb25fdGFibGUiLmFhYSwgImpzb25fdGFibGUiLmFhYTEK KyAgIFRhYmxlIEZ1bmN0aW9uIENhbGw6IEpTT05fVEFCTEUoJ251bGwnOjpqc29uYiwgJyRbKl0n IEFTIGpzb25fdGFibGVfcGF0aF8wIFBBU1NJTkcgMyBBUyBhLCAnImZvbyInOjpqc29uYiBBUyAi YiBjIiBDT0xVTU5TIChqc2IganNvbmIgUEFUSCAnJCcsIGpzYnEganNvbmIgUEFUSCAnJCcgT01J VCBRVU9URVMsIGFhYSBpbnRlZ2VyIFBBVEggJyQuImFhYSInLCBhYWExIGludGVnZXIgUEFUSCAn JC4iYWFhIicpIFBMQU4gKGpzb25fdGFibGVfcGF0aF8wKSkKKygzIHJvd3MpCisKK0VYUExBSU4g KENPU1RTIE9GRiwgVkVSQk9TRSkgU0VMRUNUICogRlJPTSBqc29uYl90YWJsZV92aWV3NTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFRhYmxlIEZ1bmN0aW9u IFNjYW4gb24gIkpTT05fVEFCTEUiICJqc29uX3RhYmxlIgorICAgT3V0cHV0OiAianNvbl90YWJs ZSIuZXhpc3RzMSwgImpzb25fdGFibGUiLmV4aXN0czIsICJqc29uX3RhYmxlIi5leGlzdHMzCisg ICBUYWJsZSBGdW5jdGlvbiBDYWxsOiBKU09OX1RBQkxFKCdudWxsJzo6anNvbmIsICckWypdJyBB UyBqc29uX3RhYmxlX3BhdGhfMCBQQVNTSU5HIDMgQVMgYSwgJyJmb28iJzo6anNvbmIgQVMgImIg YyIgQ09MVU1OUyAoZXhpc3RzMSBib29sZWFuIEVYSVNUUyBQQVRIICckLiJhYWEiJywgZXhpc3Rz MiBpbnRlZ2VyIEVYSVNUUyBQQVRIICckLiJhYWEiJyBUUlVFIE9OIEVSUk9SLCBleGlzdHMzIHRl eHQgRVhJU1RTIFBBVEggJ3N0cmljdCAkLiJhYWEiJyBVTktOT1dOIE9OIEVSUk9SKSBQTEFOIChq c29uX3RhYmxlX3BhdGhfMCkpCisoMyByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJP U0UpIFNFTEVDVCAqIEZST00ganNvbmJfdGFibGVfdmlldzY7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBU YWJsZSBGdW5jdGlvbiBTY2FuIG9uICJKU09OX1RBQkxFIiAianNvbl90YWJsZSIKKyAgIE91dHB1 dDogImpzb25fdGFibGUiLmpzMiwgImpzb25fdGFibGUiLmpzYjJ3LCAianNvbl90YWJsZSIuanNi MnEsICJqc29uX3RhYmxlIi5pYSwgImpzb25fdGFibGUiLnRhLCAianNvbl90YWJsZSIuamJhCisg ICBUYWJsZSBGdW5jdGlvbiBDYWxsOiBKU09OX1RBQkxFKCdudWxsJzo6anNvbmIsICckWypdJyBB UyBqc29uX3RhYmxlX3BhdGhfMCBQQVNTSU5HIDMgQVMgYSwgJyJmb28iJzo6anNvbmIgQVMgImIg YyIgQ09MVU1OUyAoanMyIGpzb24gUEFUSCAnJCcsIGpzYjJ3IGpzb25iIFBBVEggJyQnIFdJVEgg VU5DT05ESVRJT05BTCBXUkFQUEVSLCBqc2IycSBqc29uYiBQQVRIICckJyBPTUlUIFFVT1RFUywg aWEgaW50ZWdlcltdIFBBVEggJyQnLCB0YSB0ZXh0W10gUEFUSCAnJCcsIGpiYSBqc29uYltdIFBB VEggJyQnKSBQTEFOIChqc29uX3RhYmxlX3BhdGhfMCkpCisoMyByb3dzKQorCistLSBKU09OX1RB QkxFKCkgd2l0aCBhbGlhcworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorU0VMRUNUICog RlJPTQorCUpTT05fVEFCTEUoCisJCWpzb25iICdudWxsJywgJ2xheCAkWypdJyBQQVNTSU5HIDEg KyAyIEFTIGEsIGpzb24gJyJmb28iJyBBUyAiYiBjIgorCQlDT0xVTU5TICgKKwkJCWlkIEZPUiBP UkRJTkFMSVRZLAorCQkJImludCIgaW50IFBBVEggJyQnLAorCQkJInRleHQiIHRleHQgUEFUSCAn JCcKKwkpKSBqc29uX3RhYmxlX2Z1bmM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFRhYmxlIEZ1bmN0aW9uIFNjYW4gb24gIkpTT05fVEFCTEUiIGpzb25fdGFibGVfZnVu YworICAgT3V0cHV0OiBpZCwgImludCIsIHRleHQKKyAgIFRhYmxlIEZ1bmN0aW9uIENhbGw6IEpT T05fVEFCTEUoJ251bGwnOjpqc29uYiwgJyRbKl0nIEFTIGpzb25fdGFibGVfcGF0aF8wIFBBU1NJ TkcgMyBBUyBhLCAnImZvbyInOjpqc29uYiBBUyAiYiBjIiBDT0xVTU5TIChpZCBGT1IgT1JESU5B TElUWSwgImludCIgaW50ZWdlciBQQVRIICckJywgdGV4dCB0ZXh0IFBBVEggJyQnKSBQTEFOIChq c29uX3RhYmxlX3BhdGhfMCkpCisoMyByb3dzKQorCitEUk9QIFZJRVcganNvbmJfdGFibGVfdmll dzE7CitEUk9QIFZJRVcganNvbmJfdGFibGVfdmlldzI7CitEUk9QIFZJRVcganNvbmJfdGFibGVf dmlldzM7CitEUk9QIFZJRVcganNvbmJfdGFibGVfdmlldzQ7CitEUk9QIFZJRVcganNvbmJfdGFi bGVfdmlldzU7CitEUk9QIFZJRVcganNvbmJfdGFibGVfdmlldzY7CitEUk9QIERPTUFJTiBqc29u Yl90ZXN0X2RvbWFpbjsKKy0tIEpTT05fVEFCTEU6IG9ubHkgb25lIEZPUiBPUkRJTkFMSVRZIGNv bHVtbnMgYWxsb3dlZAorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcxJywgJyQnIENP TFVNTlMgKGlkIEZPUiBPUkRJTkFMSVRZLCBpZDIgRk9SIE9SRElOQUxJVFksIGEgaW50IFBBVEgg JyQuYScgRVJST1IgT04gRU1QVFkpKSBqdDsKK0VSUk9SOiAgY2Fubm90IHVzZSBtb3JlIHRoYW4g b25lIEZPUiBPUkRJTkFMSVRZIGNvbHVtbgorTElORSAxOiAuLi5fVEFCTEUoanNvbmIgJzEnLCAn JCcgQ09MVU1OUyAoaWQgRk9SIE9SRElOQUxJVFksIGlkMiBGT1IgT1IuLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxF Q1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJzEnLCAnJCcgQ09MVU1OUyAoaWQgRk9SIE9SRElO QUxJVFksIGEgaW50IFBBVEggJyQnIEVSUk9SIE9OIEVNUFRZKSkganQ7CisgaWQgfCBhIAorLS0t LSstLS0KKyAgMSB8IDEKKygxIHJvdykKKworLS0gSlNPTl9UQUJMRTogT04gRU1QVFkvT04gRVJS T1IgYmVoYXZpb3IKK1NFTEVDVCAqCitGUk9NCisJKFZBTFVFUyAoJzEnKSwgKCciZXJyIicpKSB2 YWxzKGpzKSwKKwlKU09OX1RBQkxFKHZhbHMuanM6Ompzb25iLCAnJCcgQ09MVU1OUyAoYSBpbnQg UEFUSCAnJCcpKSBqdDsKKyAganMgICB8IGEgCistLS0tLS0tKy0tLQorIDEgICAgIHwgMQorICJl cnIiIHwgIAorKDIgcm93cykKKworU0VMRUNUICoKK0ZST00KKwkoVkFMVUVTICgnMScpLCAoJyJl cnIiJykpIHZhbHMoanMpCisJCUxFRlQgT1VURVIgSk9JTgorCUpTT05fVEFCTEUodmFscy5qczo6 anNvbmIsICckJyBDT0xVTU5TIChhIGludCBQQVRIICckJykgRVJST1IgT04gRVJST1IpIGp0CisJ CU9OIHRydWU7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGludGVnZXI6 ICJlcnIiCitTRUxFQ1QgKgorRlJPTQorCShWQUxVRVMgKCcxJyksICgnImVyciInKSkgdmFscyhq cykKKwkJTEVGVCBPVVRFUiBKT0lOCisJSlNPTl9UQUJMRSh2YWxzLmpzOjpqc29uYiwgJyQnIENP TFVNTlMgKGEgaW50IFBBVEggJyQnIEVSUk9SIE9OIEVSUk9SKSkganQKKwkJT04gdHJ1ZTsKK0VS Uk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogImVyciIKK1NFTEVD VCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnMScsICckJyBDT0xVTU5TIChhIGludCBQQVRIICck LmEnIEVSUk9SIE9OIEVNUFRZKSkganQ7CitFUlJPUjogIG5vIFNRTC9KU09OIGl0ZW0KK1NFTEVD VCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnMScsICckJyBDT0xVTU5TIChhIGludCBQQVRIICdz dHJpY3QgJC5hJyBFUlJPUiBPTiBFTVBUWSkgRVJST1IgT04gRVJST1IpIGp0OworRVJST1I6ICBq c29ucGF0aCBtZW1iZXIgYWNjZXNzb3IgY2FuIG9ubHkgYmUgYXBwbGllZCB0byBhbiBvYmplY3QK K1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnMScsICckJyBDT0xVTU5TIChhIGludCBQ QVRIICdsYXggJC5hJyBFUlJPUiBPTiBFTVBUWSkgRVJST1IgT04gRVJST1IpIGp0OworRVJST1I6 ICBubyBTUUwvSlNPTiBpdGVtCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIics ICckJyBDT0xVTU5TIChhIGludCBQQVRIICckJyAgIERFRkFVTFQgMSBPTiBFTVBUWSBERUZBVUxU IDIgT04gRVJST1IpKSBqdDsKKyBhIAorLS0tCisgMgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9N IEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludCBQQVRIICdzdHJpY3Qg JC5hJyBERUZBVUxUIDEgT04gRU1QVFkgREVGQVVMVCAyIE9OIEVSUk9SKSkganQ7CisgYSAKKy0t LQorIDIKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAn JCcgQ09MVU1OUyAoYSBpbnQgUEFUSCAnbGF4ICQuYScgREVGQVVMVCAxIE9OIEVNUFRZIERFRkFV TFQgMiBPTiBFUlJPUikpIGp0OworIGEgCistLS0KKyAxCisoMSByb3cpCisKKy0tIEpTT05fVEFC TEU6IEVYSVNUUyBQQVRIIHR5cGVzCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJh IicsICckJyBDT0xVTU5TIChhIGludDQgRVhJU1RTIFBBVEggJyQuYScpKTsKKyBhIAorLS0tCisg MAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBD T0xVTU5TIChhIGludDIgRVhJU1RTIFBBVEggJyQuYScpKTsKK0VSUk9SOiAgY2Fubm90IGNhc3Qg dHlwZSBib29sZWFuIHRvIHNtYWxsaW50CitMSU5FIDE6IC4uLkVMRUNUICogRlJPTSBKU09OX1RB QkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBpbnQyIEVYSS4uLgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVD VCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50OCBFWElT VFMgUEFUSCAnJC5hJykpOworRVJST1I6ICBjYW5ub3QgY2FzdCB0eXBlIGJvb2xlYW4gdG8gYmln aW50CitMSU5FIDE6IC4uLkVMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcg Q09MVU1OUyAoYSBpbnQ4IEVYSS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShq c29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgZmxvYXQ0IEVYSVNUUyBQQVRIICckLmEnKSk7CitF UlJPUjogIGNhbm5vdCBjYXN0IHR5cGUgYm9vbGVhbiB0byByZWFsCitMSU5FIDE6IC4uLkVMRUNU ICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBmbG9hdDQgRS4u LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVN TlMgKGEgY2hhcigzKSBFWElTVFMgUEFUSCAnJC5hJykpOworICBhICAKKy0tLS0tCisgZmFsCiso MSByb3cpCisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVN TlMgKGEganNvbiBFWElTVFMgUEFUSCAnJC5hJykpOworRVJST1I6ICBjYW5ub3QgY2FzdCB0eXBl IGJvb2xlYW4gdG8ganNvbgorTElORSAxOiAuLi5FTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29u YiAnImEiJywgJyQnIENPTFVNTlMgKGEganNvbiBFWEkuLi4KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgKiBGUk9N IEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGpzb25iIEVYSVNUUyBQQVRI ICckLmEnKSk7CitFUlJPUjogIGNhbm5vdCBjYXN0IHR5cGUgYm9vbGVhbiB0byBqc29uYgorTElO RSAxOiAuLi5FTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMg KGEganNvbmIgRVguLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCistLSBKU09OX1RBQkxFOiBXUkFQUEVSL1FVT1RFUyBjbGF1 c2VzIG9uIHNjYWxhciBjb2x1bW5zCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJ3 b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0IFBBVEggJyQnIEtFRVAgUVVPVEVTIE9OIFND QUxBUiBTVFJJTkcpKTsKKyAgaXRlbSAgIAorLS0tLS0tLS0tCisgIndvcmxkIgorKDEgcm93KQor CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAo aXRlbSB0ZXh0IFBBVEggJyQnIE9NSVQgUVVPVEVTIE9OIFNDQUxBUiBTVFJJTkcpKTsKKyBpdGVt ICAKKy0tLS0tLS0KKyB3b3JsZAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUo anNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0IEZPUk1BVCBKU09OIFBBVEgg JyQnIEtFRVAgUVVPVEVTKSk7CisgIGl0ZW0gICAKKy0tLS0tLS0tLQorICJ3b3JsZCIKKygxIHJv dykKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcid29ybGQiJywgJyQnIENPTFVN TlMgKGl0ZW0gdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckJyBPTUlUIFFVT1RFUykpOworIGl0ZW0g IAorLS0tLS0tLQorIHdvcmxkCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShq c29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChpdGVtIHRleHQgRk9STUFUIEpTT04gUEFUSCAn JCcgV0lUSE9VVCBXUkFQUEVSIEtFRVAgUVVPVEVTKSk7CisgIGl0ZW0gICAKKy0tLS0tLS0tLQor ICJ3b3JsZCIKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcid29y bGQiJywgJyQnIENPTFVNTlMgKGl0ZW0gdGV4dCBQQVRIICckJyBXSVRIT1VUIFdSQVBQRVIgT01J VCBRVU9URVMpKTsKKyBpdGVtICAKKy0tLS0tLS0KKyB3b3JsZAorKDEgcm93KQorCitTRUxFQ1Qg KiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0 IEZPUk1BVCBKU09OIFBBVEggJyQnIFdJVEggV1JBUFBFUikpOworICAgaXRlbSAgICAKKy0tLS0t LS0tLS0tCisgWyJ3b3JsZCJdCisoMSByb3cpCisKKy0tIEVycm9yOiBRVU9URVMgY2xhdXNlIG1l YW5pbmdsZXNzIHdoZW4gV0lUSCBXUkFQUEVSIGlzIHByZXNlbnQKK1NFTEVDVCAqIEZST00gSlNP Tl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChpdGVtIHRleHQgRk9STUFUIEpT T04gUEFUSCAnJCcgV0lUSCBXUkFQUEVSIEtFRVAgUVVPVEVTKSk7CitFUlJPUjogIFNRTC9KU09O IFFVT1RFUyBiZWhhdmlvciBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgd2hlbiBXSVRIIFdSQVBQRVIg aXMgdXNlZAorTElORSAxOiAuLi5UICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcid29ybGQiJywg JyQnIENPTFVNTlMgKGl0ZW0gdGV4dCAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFC TEUoanNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0IFBBVEggJyQnIFdJVEgg V1JBUFBFUiBPTUlUIFFVT1RFUykpOworRVJST1I6ICBTUUwvSlNPTiBRVU9URVMgYmVoYXZpb3Ig bXVzdCBub3QgYmUgc3BlY2lmaWVkIHdoZW4gV0lUSCBXUkFQUEVSIGlzIHVzZWQKK0xJTkUgMTog Li4uVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChpdGVt IHRleHQgLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorLS0gSlNPTl9UQUJMRTogbmVzdGVkIHBhdGhzIGFuZCBwbGFucwor LS0gU2hvdWxkIGZhaWwgKEpTT05fVEFCTEUgY29sdW1ucyBtdXN0IGNvbnRhaW4gZXhwbGljaXQg QVMgcGF0aAorLS0gc3BlY2lmaWNhdGlvbnMgaWYgZXhwbGljaXQgUExBTiBjbGF1c2UgaXMgdXNl ZCkKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnW10nLCAnJCcgLS0gQVMgPHBh dGggbmFtZT4gcmVxdWlyZWQgaGVyZQorCUNPTFVNTlMgKAorCQlmb28gaW50IFBBVEggJyQnCisJ KQorCVBMQU4gREVGQVVMVCAoVU5JT04pCispIGp0OworRVJST1I6ICBpbnZhbGlkIEpTT05fVEFC TEUgZXhwcmVzc2lvbgorTElORSAyOiAganNvbmIgJ1tdJywgJyQnIC0tIEFTIDxwYXRoIG5hbWU+ IHJlcXVpcmVkIGhlcmUKKyAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIEpTT05fVEFC TEUgcGF0aCBtdXN0IGNvbnRhaW4gZXhwbGljaXQgQVMgcGF0aG5hbWUgc3BlY2lmaWNhdGlvbiBp ZiBleHBsaWNpdCBQTEFOIGNsYXVzZSBpcyB1c2VkCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUo CisJanNvbmIgJ1tdJywgJyQnIEFTIHBhdGgxCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICck JyBDT0xVTU5TICggLS0gQVMgPHBhdGggbmFtZT4gcmVxdWlyZWQgaGVyZQorCQkJZm9vIGludCBQ QVRIICckJworCQkpCisJKQorCVBMQU4gREVGQVVMVCAoVU5JT04pCispIGp0OworRVJST1I6ICBp bnZhbGlkIEpTT05fVEFCTEUgZXhwcmVzc2lvbgorTElORSA0OiAgIE5FU1RFRCBQQVRIICckJyBD T0xVTU5TICggLS0gQVMgPHBhdGggbmFtZT4gcmVxdWlyZWQgaGVyZQorICAgICAgICAgIF4KK0RF VEFJTDogIEpTT05fVEFCTEUgcGF0aCBtdXN0IGNvbnRhaW4gZXhwbGljaXQgQVMgcGF0aG5hbWUg c3BlY2lmaWNhdGlvbiBpZiBleHBsaWNpdCBQTEFOIGNsYXVzZSBpcyB1c2VkCistLSBTaG91bGQg ZmFpbCAoY29sdW1uIG5hbWVzIG11c3QgYmUgZGlzdGluY3QpCitTRUxFQ1QgKiBGUk9NIEpTT05f VEFCTEUoCisJanNvbmIgJ1tdJywgJyQnIEFTIGEKKwlDT0xVTU5TICgKKwkJYSBpbnQKKwkpCisp IGp0OworRVJST1I6ICBkdXBsaWNhdGUgSlNPTl9UQUJMRSBjb2x1bW4gbmFtZTogYQorTElORSA0 OiAgIGEgaW50CisgICAgICAgICAgXgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25i ICdbXScsICckJyBBUyBhCisJQ09MVU1OUyAoCisJCWIgaW50LAorCQlORVNURUQgUEFUSCAnJCcg QVMgYQorCQlDT0xVTU5TICgKKwkJCWMgaW50CisJCSkKKwkpCispIGp0OworRVJST1I6ICBkdXBs aWNhdGUgSlNPTl9UQUJMRSBwYXRoIG5hbWU6IGEKK0xJTkUgNTogICBORVNURUQgUEFUSCAnJCcg QVMgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgKiBGUk9NIEpTT05f VEFCTEUoCisJanNvbmIgJ1tdJywgJyQnCisJQ09MVU1OUyAoCisJCWIgaW50LAorCQlORVNURUQg UEFUSCAnJCcgQVMgYgorCQlDT0xVTU5TICgKKwkJCWMgaW50CisJCSkKKwkpCispIGp0OworRVJS T1I6ICBkdXBsaWNhdGUgSlNPTl9UQUJMRSBwYXRoIG5hbWU6IGIKK0xJTkUgNTogICBORVNURUQg UEFUSCAnJCcgQVMgYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgKiBG Uk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ1tdJywgJyQnCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQ QVRIICckJyBBUyBhCisJCUNPTFVNTlMgKAorCQkJYiBpbnQKKwkJKSwKKwkJTkVTVEVEIFBBVEgg JyQnCisJCUNPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIGEKKwkJCUNPTFVNTlMgKAor CQkJCWMgaW50CisJCQkpCisJCSkKKwkpCispIGp0OworRVJST1I6ICBkdXBsaWNhdGUgSlNPTl9U QUJMRSBwYXRoIG5hbWU6IGEKK0xJTkUgMTA6ICAgIE5FU1RFRCBQQVRIICckJyBBUyBhCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gSlNPTl9UQUJMRTogcGxhbiB2YWxpZGF0 aW9uCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScgQVMg cDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQ QVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBB UyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIg Q09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkK KwkJKQorCSkKKwlQTEFOIChwMSkKKykganQ7CitFUlJPUjogIGludmFsaWQgSlNPTl9UQUJMRSBw bGFuCitMSU5FIDEyOiAgUExBTiAocDEpCisgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgUEFU SCBuYW1lIG1pc21hdGNoOiBleHBlY3RlZCBwMCBidXQgcDEgaXMgZ2l2ZW4uCitTRUxFQ1QgKiBG Uk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgK KwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFT IHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xV TU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgK KwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQor CVBMQU4gKHAwKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIHNwZWNpZmljYXRp b24KK0xJTkUgNDogICBORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisgICAgICAgICAg XgorREVUQUlMOiAgUExBTiBjbGF1c2UgZm9yIG5lc3RlZCBwYXRoIHAxIHdhcyBub3QgZm91bmQu CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAK KwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVE IFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQn IEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBw MiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQg KQorCQkpCisJKQorCVBMQU4gKHAwIE9VVEVSIHAzKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBK U09OX1RBQkxFIHNwZWNpZmljYXRpb24KK0xJTkUgNDogICBORVNURUQgUEFUSCAnJCcgQVMgcDEg Q09MVU1OUyAoCisgICAgICAgICAgXgorREVUQUlMOiAgUExBTiBjbGF1c2UgZm9yIG5lc3RlZCBw YXRoIHAxIHdhcyBub3QgZm91bmQuCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIg J251bGwnLCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAx IENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCAp LAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJ CU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBw MjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAwIFVOSU9OIHAxIFVOSU9O IHAxMSkKKykganQ7CitFUlJPUjogIGludmFsaWQgSlNPTl9UQUJMRSBwbGFuIGNsYXVzZQorTElO RSAxMjogIFBMQU4gKHAwIFVOSU9OIHAxIFVOSU9OIHAxMSkKKyAgICAgICAgICAgICAgICBeCitE RVRBSUw6ICBFeHBlY3RlZCBJTk5FUiBvciBPVVRFUi4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJM RSgKKwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFU SCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMg KCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50 ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBB VEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VU RVIgKHAxIENST1NTIHAxMykpCispIGp0OworRVJST1I6ICBpbnZhbGlkIEpTT05fVEFCTEUgc3Bl Y2lmaWNhdGlvbgorTElORSA4OiAgIE5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKyAg ICAgICAgICBeCitERVRBSUw6ICBQTEFOIGNsYXVzZSBmb3IgbmVzdGVkIHBhdGggcDIgd2FzIG5v dCBmb3VuZC4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVsbCcsICckWypd JyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJ CQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQg UEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEgg JyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICgg YmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIgKHAxIENST1NTIHAyKSkKKykganQ7 CitFUlJPUjogIGludmFsaWQgSlNPTl9UQUJMRSBzcGVjaWZpY2F0aW9uCitMSU5FIDU6ICAgIE5F U1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKyAgICAgICAgICAgXgor REVUQUlMOiAgUExBTiBjbGF1c2UgZm9yIG5lc3RlZCBwYXRoIHAxMSB3YXMgbm90IGZvdW5kLgor U0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJ Q09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQ QVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBB UyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIg Q09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkK KwkJKQorCSkKKwlQTEFOIChwMCBPVVRFUiAoKHAxIFVOSU9OIHAxMSkgQ1JPU1MgcDIpKQorKSBq dDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIHBsYW4gY2xhdXNlCitMSU5FIDEyOiAgUExB TiAocDAgT1VURVIgKChwMSBVTklPTiBwMTEpIENST1NTIHAyKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICBeCitERVRBSUw6ICBQTEFOIGNsYXVzZSBjb250YWlucyBzb21lIGV4dHJhIG9yIGR1 cGxpY2F0ZSBzaWJsaW5nIG5vZGVzLgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25i ICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBw MSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQg KSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAor CQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMg cDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFOIChwMCBPVVRFUiAoKHAxIElO TkVSIHAxMSkgQ1JPU1MgcDIpKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIHNw ZWNpZmljYXRpb24KK0xJTkUgNjogICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICgg YmFyIGludCApCisgICAgICAgICAgIF4KK0RFVEFJTDogIFBMQU4gY2xhdXNlIGZvciBuZXN0ZWQg cGF0aCBwMTIgd2FzIG5vdCBmb3VuZC4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29u YiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMg cDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50 ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwK KwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFT IHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIgKChwMSBJ Tk5FUiAocDEyIENST1NTIHAxMSkpIENST1NTIHAyKSkKKykganQ7CitFUlJPUjogIGludmFsaWQg SlNPTl9UQUJMRSBzcGVjaWZpY2F0aW9uCitMSU5FIDk6ICAgIE5FU1RFRCBQQVRIICckJyBBUyBw MjEgQ09MVU1OUyAoIGJheiBpbnQgKQorICAgICAgICAgICBeCitERVRBSUw6ICBQTEFOIGNsYXVz ZSBmb3IgbmVzdGVkIHBhdGggcDIxIHdhcyBub3QgZm91bmQuCitTRUxFQ1QgKiBGUk9NIEpTT05f VEFCTEUoCisJanNvbmIgJ251bGwnLCAnc3RyaWN0ICRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJ CU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBw MTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1O UyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJ CQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQ TEFOIChwMCBPVVRFUiAoKHAxIElOTkVSIChwMTIgQ1JPU1MgcDExKSkgQ1JPU1MgKHAyIElOTkVS IHAyMSkpKQorKSBqdDsKKyBiYXIgfCBmb28gfCBiYXogCistLS0tLSstLS0tLSstLS0tLQorKDAg cm93cykKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJ3N0cmlj dCAkWypdJyAtLSB3aXRob3V0IHJvb3QgcGF0aCBuYW1lCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQ QVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1O UyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBp bnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQg UEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFOICgocDEg SU5ORVIgKHAxMiBDUk9TUyBwMTEpKSBDUk9TUyAocDIgSU5ORVIgcDIxKSkKKykganQ7CitFUlJP UjogIGludmFsaWQgSlNPTl9UQUJMRSBleHByZXNzaW9uCitMSU5FIDI6ICBqc29uYiAnbnVsbCcs ICdzdHJpY3QgJFsqXScgLS0gd2l0aG91dCByb290IHBhdGggbmFtZQorICAgICAgICAgICAgICAg ICAgICAgICBeCitERVRBSUw6ICBKU09OX1RBQkxFIHBhdGggbXVzdCBjb250YWluIGV4cGxpY2l0 IEFTIHBhdGhuYW1lIHNwZWNpZmljYXRpb24gaWYgZXhwbGljaXQgUExBTiBjbGF1c2UgaXMgdXNl ZAorLS0gSlNPTl9UQUJMRTogcGxhbiBleGVjdXRpb24KK0NSRUFURSBURU1QIFRBQkxFIGpzb25i X3RhYmxlX3Rlc3QgKGpzIGpzb25iKTsKK0lOU0VSVCBJTlRPIGpzb25iX3RhYmxlX3Rlc3QKK1ZB TFVFUyAoCisJJ1sKKwkJeyJhIjogIDEsICAiYiI6IFtdLCAiYyI6IFtdfSwKKwkJeyJhIjogIDIs ICAiYiI6IFsxLCAyLCAzXSwgImMiOiBbMTAsIG51bGwsIDIwXX0sCisJCXsiYSI6ICAzLCAgImIi OiBbMSwgMl0sICJjIjogW119LAorCQl7IngiOiAiNCIsICJiIjogWzEsIDJdLCAiYyI6IDEyM30K KwkgXScKKyk7CistLSB1bnNwZWNpZmllZCBwbGFuIChvdXRlciwgdW5pb24pCitzZWxlY3QKKwlq dC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5q cywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAor CQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBw YXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJ CW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAn JCcgKQorCQkpCisJKSBqdDsKKyBuIHwgYSAgfCBiIHwgYyAgCistLS0rLS0tLSstLS0rLS0tLQor IDEgfCAgMSB8ICAgfCAgIAorIDIgfCAgMiB8IDEgfCAgIAorIDIgfCAgMiB8IDIgfCAgIAorIDIg fCAgMiB8IDMgfCAgIAorIDIgfCAgMiB8ICAgfCAxMAorIDIgfCAgMiB8ICAgfCAgIAorIDIgfCAg MiB8ICAgfCAyMAorIDMgfCAgMyB8IDEgfCAgIAorIDMgfCAgMyB8IDIgfCAgIAorIDQgfCAtMSB8 IDEgfCAgIAorIDQgfCAtMSB8IDIgfCAgIAorKDExIHJvd3MpCisKKy0tIGRlZmF1bHQgcGxhbiAo b3V0ZXIsIHVuaW9uKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0 LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMg KAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQg LTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1u cyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMg cGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIGRlZmF1bHQgKG91dGVy LCB1bmlvbikKKwkpIGp0OworIG4gfCBhICB8IGIgfCBjICAKKy0tLSstLS0tKy0tLSstLS0tCisg MSB8ICAxIHwgICB8ICAgCisgMiB8ICAyIHwgMSB8IDEwCisgMiB8ICAyIHwgMSB8ICAgCisgMiB8 ICAyIHwgMSB8IDIwCisgMiB8ICAyIHwgMiB8IDEwCisgMiB8ICAyIHwgMiB8ICAgCisgMiB8ICAy IHwgMiB8IDIwCisgMiB8ICAyIHwgMyB8IDEwCisgMiB8ICAyIHwgMyB8ICAgCisgMiB8ICAyIHwg MyB8IDIwCisgMyB8ICAzIHwgICB8ICAgCisgNCB8IC0xIHwgICB8ICAgCisoMTIgcm93cykKKwor LS0gc3BlY2lmaWMgcGxhbiAocCBvdXRlciAocGIgdW5pb24gcGMpKQorc2VsZWN0CisJanQuKgor ZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0 cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEg aW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAn c3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0 ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkK KwkJKQorCQlwbGFuIChwIG91dGVyIChwYiB1bmlvbiBwYykpCisJKSBqdDsKKyBuIHwgYSAgfCBi IHwgYyAgCistLS0rLS0tLSstLS0rLS0tLQorIDEgfCAgMSB8ICAgfCAgIAorIDIgfCAgMiB8IDEg fCAgIAorIDIgfCAgMiB8IDIgfCAgIAorIDIgfCAgMiB8IDMgfCAgIAorIDIgfCAgMiB8ICAgfCAx MAorIDIgfCAgMiB8ICAgfCAgIAorIDIgfCAgMiB8ICAgfCAyMAorIDMgfCAgMyB8IDEgfCAgIAor IDMgfCAgMyB8IDIgfCAgIAorIDQgfCAtMSB8IDEgfCAgIAorIDQgfCAtMSB8IDIgfCAgIAorKDEx IHJvd3MpCisKKy0tIHNwZWNpZmljIHBsYW4gKHAgb3V0ZXIgKHBjIHVuaW9uIHBiKSkKK3NlbGVj dAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJ anR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxp dHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVz dGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyAp LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBw YXRoICckJyApCisJCSkKKwkJcGxhbiAocCBvdXRlciAocGMgdW5pb24gcGIpKQorCSkganQ7Cisg biB8IGEgIHwgYyAgfCBiIAorLS0tKy0tLS0rLS0tLSstLS0KKyAxIHwgIDEgfCAgICB8ICAKKyAy IHwgIDIgfCAxMCB8ICAKKyAyIHwgIDIgfCAgICB8ICAKKyAyIHwgIDIgfCAyMCB8ICAKKyAyIHwg IDIgfCAgICB8IDEKKyAyIHwgIDIgfCAgICB8IDIKKyAyIHwgIDIgfCAgICB8IDMKKyAzIHwgIDMg fCAgICB8IDEKKyAzIHwgIDMgfCAgICB8IDIKKyA0IHwgLTEgfCAgICB8IDEKKyA0IHwgLTEgfCAg ICB8IDIKKygxMSByb3dzKQorCistLSBkZWZhdWx0IHBsYW4gKGlubmVyLCB1bmlvbikKK3NlbGVj dAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJ anR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxp dHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVz dGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyAp LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBw YXRoICckJyApCisJCSkKKwkJcGxhbiBkZWZhdWx0IChpbm5lcikKKwkpIGp0OworIG4gfCBhICB8 IGIgfCBjICAKKy0tLSstLS0tKy0tLSstLS0tCisgMSB8ICAxIHwgICB8ICAgCisgMiB8ICAyIHwg MSB8IDEwCisgMiB8ICAyIHwgMSB8ICAgCisgMiB8ICAyIHwgMSB8IDIwCisgMiB8ICAyIHwgMiB8 IDEwCisgMiB8ICAyIHwgMiB8ICAgCisgMiB8ICAyIHwgMiB8IDIwCisgMiB8ICAyIHwgMyB8IDEw CisgMiB8ICAyIHwgMyB8ICAgCisgMiB8ICAyIHwgMyB8IDIwCisgMyB8ICAzIHwgICB8ICAgCisg NCB8IC0xIHwgICB8ICAgCisoMTIgcm93cykKKworLS0gc3BlY2lmaWMgcGxhbiAocCBpbm5lciAo cGIgdW5pb24gcGMpKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0 LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMg KAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQg LTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1u cyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMg cGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIChwIGlubmVyIChwYiB1 bmlvbiBwYykpCisJKSBqdDsKKyBuIHwgYSAgfCBiIHwgYyAgCistLS0rLS0tLSstLS0rLS0tLQor IDIgfCAgMiB8IDEgfCAgIAorIDIgfCAgMiB8IDIgfCAgIAorIDIgfCAgMiB8IDMgfCAgIAorIDIg fCAgMiB8ICAgfCAxMAorIDIgfCAgMiB8ICAgfCAgIAorIDIgfCAgMiB8ICAgfCAyMAorIDMgfCAg MyB8IDEgfCAgIAorIDMgfCAgMyB8IDIgfCAgIAorIDQgfCAtMSB8IDEgfCAgIAorIDQgfCAtMSB8 IDIgfCAgIAorKDEwIHJvd3MpCisKKy0tIGRlZmF1bHQgcGxhbiAoaW5uZXIsIGNyb3NzKQorc2Vs ZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUgKAor CQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5h bGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQlu ZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQn ICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50 IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIGRlZmF1bHQgKGNyb3NzLCBpbm5lcikKKwkpIGp0Owor IG4gfCBhIHwgYiB8IGMgIAorLS0tKy0tLSstLS0rLS0tLQorIDIgfCAyIHwgMSB8IDEwCisgMiB8 IDIgfCAxIHwgICAKKyAyIHwgMiB8IDEgfCAyMAorIDIgfCAyIHwgMiB8IDEwCisgMiB8IDIgfCAy IHwgICAKKyAyIHwgMiB8IDIgfCAyMAorIDIgfCAyIHwgMyB8IDEwCisgMiB8IDIgfCAzIHwgICAK KyAyIHwgMiB8IDMgfCAyMAorKDkgcm93cykKKworLS0gc3BlY2lmaWMgcGxhbiAocCBpbm5lciAo cGIgY3Jvc3MgcGMpKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0 LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMg KAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQg LTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1u cyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMg cGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIChwIGlubmVyIChwYiBj cm9zcyBwYykpCisJKSBqdDsKKyBuIHwgYSB8IGIgfCBjICAKKy0tLSstLS0rLS0tKy0tLS0KKyAy IHwgMiB8IDEgfCAxMAorIDIgfCAyIHwgMSB8ICAgCisgMiB8IDIgfCAxIHwgMjAKKyAyIHwgMiB8 IDIgfCAxMAorIDIgfCAyIHwgMiB8ICAgCisgMiB8IDIgfCAyIHwgMjAKKyAyIHwgMiB8IDMgfCAx MAorIDIgfCAyIHwgMyB8ICAgCisgMiB8IDIgfCAzIHwgMjAKKyg5IHJvd3MpCisKKy0tIGRlZmF1 bHQgcGxhbiAob3V0ZXIsIGNyb3NzKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxl X3Rlc3QganR0LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJ CWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEn IGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMg cGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQu Y1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIGRlZmF1 bHQgKG91dGVyLCBjcm9zcykKKwkpIGp0OworIG4gfCBhICB8IGIgfCBjICAKKy0tLSstLS0tKy0t LSstLS0tCisgMSB8ICAxIHwgICB8ICAgCisgMiB8ICAyIHwgMSB8IDEwCisgMiB8ICAyIHwgMSB8 ICAgCisgMiB8ICAyIHwgMSB8IDIwCisgMiB8ICAyIHwgMiB8IDEwCisgMiB8ICAyIHwgMiB8ICAg CisgMiB8ICAyIHwgMiB8IDIwCisgMiB8ICAyIHwgMyB8IDEwCisgMiB8ICAyIHwgMyB8ICAgCisg MiB8ICAyIHwgMyB8IDIwCisgMyB8ICAzIHwgICB8ICAgCisgNCB8IC0xIHwgICB8ICAgCisoMTIg cm93cykKKworLS0gc3BlY2lmaWMgcGxhbiAocCBvdXRlciAocGIgY3Jvc3MgcGMpKQorc2VsZWN0 CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUgKAorCQlq dHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0 eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQluZXN0 ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICks CisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBh dGggJyQnICkKKwkJKQorCQlwbGFuIChwIG91dGVyIChwYiBjcm9zcyBwYykpCisJKSBqdDsKKyBu IHwgYSAgfCBiIHwgYyAgCistLS0rLS0tLSstLS0rLS0tLQorIDEgfCAgMSB8ICAgfCAgIAorIDIg fCAgMiB8IDEgfCAxMAorIDIgfCAgMiB8IDEgfCAgIAorIDIgfCAgMiB8IDEgfCAyMAorIDIgfCAg MiB8IDIgfCAxMAorIDIgfCAgMiB8IDIgfCAgIAorIDIgfCAgMiB8IDIgfCAyMAorIDIgfCAgMiB8 IDMgfCAxMAorIDIgfCAgMiB8IDMgfCAgIAorIDIgfCAgMiB8IDMgfCAyMAorIDMgfCAgMyB8ICAg fCAgIAorIDQgfCAtMSB8ICAgfCAgIAorKDEyIHJvd3MpCisKK3NlbGVjdAorCWp0LiosIGIxICsg MTAwIGFzIGIKK2Zyb20KKwlqc29uX3RhYmxlIChqc29uYgorCQknWworCQkJeyJhIjogIDEsICAi YiI6IFtbMSwgMTBdLCBbMl0sIFszLCAzMCwgMzAwXV0sICJjIjogWzEsIG51bGwsIDJdfSwKKwkJ CXsiYSI6ICAyLCAgImIiOiBbMTAsIDIwXSwgImMiOiBbMSwgbnVsbCwgMl19LAorCQkJeyJ4Ijog IjMiLCAiYiI6IFsxMSwgMjIsIDMzLCA0NF19CisJCSBdJywKKwkJJyRbKl0nIGFzIHAKKwkJY29s dW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVm YXVsdCAtMSBvbiBlcnJvciwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBj b2x1bW5zICgKKwkJCQliIHRleHQgZm9ybWF0IGpzb24gcGF0aCAnJCcsCisJCQkJbmVzdGVkIHBh dGggJ3N0cmljdCAkWypdJyBhcyBwYjEgY29sdW1ucyAoCisJCQkJCWIxIGludCBwYXRoICckJwor CQkJCSkKKwkJCSksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1u cyAoCisJCQkJYyB0ZXh0IGZvcm1hdCBqc29uIHBhdGggJyQnLAorCQkJCW5lc3RlZCBwYXRoICdz dHJpY3QgJFsqXScgYXMgcGMxIGNvbHVtbnMgKAorCQkJCQljMSBpbnQgcGF0aCAnJCcKKwkJCQkp CisJCQkpCisJCSkKKwkJLS1wbGFuIGRlZmF1bHQob3V0ZXIsIGNyb3NzKQorCQlwbGFuKHAgb3V0 ZXIgKChwYiBpbm5lciBwYjEpIGNyb3NzIChwYyBvdXRlciBwYzEpKSkKKwkpIGp0OworIG4gfCBh ICB8ICAgICAgYiAgICAgICB8IGIxICB8ICBjICAgfCBjMSB8ICBiICAKKy0tLSstLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tKy0tLS0tLSstLS0tKy0tLS0tCisgMSB8ICAxIHwgWzEsIDEwXSAgICAg IHwgICAxIHwgMSAgICB8ICAgIHwgMTAxCisgMSB8ICAxIHwgWzEsIDEwXSAgICAgIHwgICAxIHwg bnVsbCB8ICAgIHwgMTAxCisgMSB8ICAxIHwgWzEsIDEwXSAgICAgIHwgICAxIHwgMiAgICB8ICAg IHwgMTAxCisgMSB8ICAxIHwgWzEsIDEwXSAgICAgIHwgIDEwIHwgMSAgICB8ICAgIHwgMTEwCisg MSB8ICAxIHwgWzEsIDEwXSAgICAgIHwgIDEwIHwgbnVsbCB8ICAgIHwgMTEwCisgMSB8ICAxIHwg WzEsIDEwXSAgICAgIHwgIDEwIHwgMiAgICB8ICAgIHwgMTEwCisgMSB8ICAxIHwgWzJdICAgICAg ICAgIHwgICAyIHwgMSAgICB8ICAgIHwgMTAyCisgMSB8ICAxIHwgWzJdICAgICAgICAgIHwgICAy IHwgbnVsbCB8ICAgIHwgMTAyCisgMSB8ICAxIHwgWzJdICAgICAgICAgIHwgICAyIHwgMiAgICB8 ICAgIHwgMTAyCisgMSB8ICAxIHwgWzMsIDMwLCAzMDBdIHwgICAzIHwgMSAgICB8ICAgIHwgMTAz CisgMSB8ICAxIHwgWzMsIDMwLCAzMDBdIHwgICAzIHwgbnVsbCB8ICAgIHwgMTAzCisgMSB8ICAx IHwgWzMsIDMwLCAzMDBdIHwgICAzIHwgMiAgICB8ICAgIHwgMTAzCisgMSB8ICAxIHwgWzMsIDMw LCAzMDBdIHwgIDMwIHwgMSAgICB8ICAgIHwgMTMwCisgMSB8ICAxIHwgWzMsIDMwLCAzMDBdIHwg IDMwIHwgbnVsbCB8ICAgIHwgMTMwCisgMSB8ICAxIHwgWzMsIDMwLCAzMDBdIHwgIDMwIHwgMiAg ICB8ICAgIHwgMTMwCisgMSB8ICAxIHwgWzMsIDMwLCAzMDBdIHwgMzAwIHwgMSAgICB8ICAgIHwg NDAwCisgMSB8ICAxIHwgWzMsIDMwLCAzMDBdIHwgMzAwIHwgbnVsbCB8ICAgIHwgNDAwCisgMSB8 ICAxIHwgWzMsIDMwLCAzMDBdIHwgMzAwIHwgMiAgICB8ICAgIHwgNDAwCisgMiB8ICAyIHwgICAg ICAgICAgICAgIHwgICAgIHwgICAgICB8ICAgIHwgICAgCisgMyB8IC0xIHwgICAgICAgICAgICAg IHwgICAgIHwgICAgICB8ICAgIHwgICAgCisoMjAgcm93cykKKworLS0gU2hvdWxkIHN1Y2NlZWQg KEpTT04gYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gcm9vdCBhbmQgbmVzdGVkIHBhdGhzKQorU0VM RUNUICoKK0ZST00KKwlnZW5lcmF0ZV9zZXJpZXMoMSwgNCkgeCwKKwlnZW5lcmF0ZV9zZXJpZXMo MSwgMykgeSwKKwlKU09OX1RBQkxFKGpzb25iCisJCSdbWzEsMiwzXSxbMiwzLDQsNV0sWzMsNCw1 LDZdXScsCisJCSdzdHJpY3QgJFsqXSA/IChAWypdIDwgJHgpJworCQlQQVNTSU5HIHggQVMgeCwg eSBBUyB5CisJCUNPTFVNTlMgKAorCQkJeSB0ZXh0IEZPUk1BVCBKU09OIFBBVEggJyQnLAorCQkJ TkVTVEVEIFBBVEggJ3N0cmljdCAkWypdID8gKEAgPj0gJHkpJworCQkJQ09MVU1OUyAoCisJCQkJ eiBpbnQgUEFUSCAnJCcKKwkJCSkKKwkJKQorCSkganQ7CisgeCB8IHkgfCAgICAgIHkgICAgICAg fCB6IAorLS0tKy0tLSstLS0tLS0tLS0tLS0tLSstLS0KKyAyIHwgMSB8IFsxLCAyLCAzXSAgICB8 IDEKKyAyIHwgMSB8IFsxLCAyLCAzXSAgICB8IDIKKyAyIHwgMSB8IFsxLCAyLCAzXSAgICB8IDMK KyAzIHwgMSB8IFsxLCAyLCAzXSAgICB8IDEKKyAzIHwgMSB8IFsxLCAyLCAzXSAgICB8IDIKKyAz IHwgMSB8IFsxLCAyLCAzXSAgICB8IDMKKyAzIHwgMSB8IFsyLCAzLCA0LCA1XSB8IDIKKyAzIHwg MSB8IFsyLCAzLCA0LCA1XSB8IDMKKyAzIHwgMSB8IFsyLCAzLCA0LCA1XSB8IDQKKyAzIHwgMSB8 IFsyLCAzLCA0LCA1XSB8IDUKKyA0IHwgMSB8IFsxLCAyLCAzXSAgICB8IDEKKyA0IHwgMSB8IFsx LCAyLCAzXSAgICB8IDIKKyA0IHwgMSB8IFsxLCAyLCAzXSAgICB8IDMKKyA0IHwgMSB8IFsyLCAz LCA0LCA1XSB8IDIKKyA0IHwgMSB8IFsyLCAzLCA0LCA1XSB8IDMKKyA0IHwgMSB8IFsyLCAzLCA0 LCA1XSB8IDQKKyA0IHwgMSB8IFsyLCAzLCA0LCA1XSB8IDUKKyA0IHwgMSB8IFszLCA0LCA1LCA2 XSB8IDMKKyA0IHwgMSB8IFszLCA0LCA1LCA2XSB8IDQKKyA0IHwgMSB8IFszLCA0LCA1LCA2XSB8 IDUKKyA0IHwgMSB8IFszLCA0LCA1LCA2XSB8IDYKKyAyIHwgMiB8IFsxLCAyLCAzXSAgICB8IDIK KyAyIHwgMiB8IFsxLCAyLCAzXSAgICB8IDMKKyAzIHwgMiB8IFsxLCAyLCAzXSAgICB8IDIKKyAz IHwgMiB8IFsxLCAyLCAzXSAgICB8IDMKKyAzIHwgMiB8IFsyLCAzLCA0LCA1XSB8IDIKKyAzIHwg MiB8IFsyLCAzLCA0LCA1XSB8IDMKKyAzIHwgMiB8IFsyLCAzLCA0LCA1XSB8IDQKKyAzIHwgMiB8 IFsyLCAzLCA0LCA1XSB8IDUKKyA0IHwgMiB8IFsxLCAyLCAzXSAgICB8IDIKKyA0IHwgMiB8IFsx LCAyLCAzXSAgICB8IDMKKyA0IHwgMiB8IFsyLCAzLCA0LCA1XSB8IDIKKyA0IHwgMiB8IFsyLCAz LCA0LCA1XSB8IDMKKyA0IHwgMiB8IFsyLCAzLCA0LCA1XSB8IDQKKyA0IHwgMiB8IFsyLCAzLCA0 LCA1XSB8IDUKKyA0IHwgMiB8IFszLCA0LCA1LCA2XSB8IDMKKyA0IHwgMiB8IFszLCA0LCA1LCA2 XSB8IDQKKyA0IHwgMiB8IFszLCA0LCA1LCA2XSB8IDUKKyA0IHwgMiB8IFszLCA0LCA1LCA2XSB8 IDYKKyAyIHwgMyB8IFsxLCAyLCAzXSAgICB8IDMKKyAzIHwgMyB8IFsxLCAyLCAzXSAgICB8IDMK KyAzIHwgMyB8IFsyLCAzLCA0LCA1XSB8IDMKKyAzIHwgMyB8IFsyLCAzLCA0LCA1XSB8IDQKKyAz IHwgMyB8IFsyLCAzLCA0LCA1XSB8IDUKKyA0IHwgMyB8IFsxLCAyLCAzXSAgICB8IDMKKyA0IHwg MyB8IFsyLCAzLCA0LCA1XSB8IDMKKyA0IHwgMyB8IFsyLCAzLCA0LCA1XSB8IDQKKyA0IHwgMyB8 IFsyLCAzLCA0LCA1XSB8IDUKKyA0IHwgMyB8IFszLCA0LCA1LCA2XSB8IDMKKyA0IHwgMyB8IFsz LCA0LCA1LCA2XSB8IDQKKyA0IHwgMyB8IFszLCA0LCA1LCA2XSB8IDUKKyA0IHwgMyB8IFszLCA0 LCA1LCA2XSB8IDYKKyg1MiByb3dzKQorCistLSBTaG91bGQgZmFpbCAoSlNPTiBhcmd1bWVudHMg YXJlIG5vdCBwYXNzZWQgdG8gY29sdW1uIHBhdGhzKQorU0VMRUNUICoKK0ZST00gSlNPTl9UQUJM RSgKKwlqc29uYiAnWzEsMiwzXScsCisJJyRbKl0gPyAoQCA8ICR4KScKKwkJUEFTU0lORyAxMCBB UyB4CisJCUNPTFVNTlMgKHkgdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckID8gKEAgPCAkeCknKQor CSkganQ7CitFUlJPUjogIGNvdWxkIG5vdCBmaW5kIGpzb25wYXRoIHZhcmlhYmxlICJ4IgorLS0g U2hvdWxkIGZhaWwgKG5vdCBzdXBwb3J0ZWQpCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNv bmIgJ3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8ICdhJyBDT0xVTU5TIChmb28gaW50KSk7CitF UlJPUjogIG9ubHkgc3RyaW5nIGNvbnN0YW50cyBhcmUgc3VwcG9ydGVkIGluIEpTT05fVEFCTEUg cGF0aCBzcGVjaWZpY2F0aW9uCitMSU5FIDE6IFNFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29u YiAneyJhIjogMTIzfScsICckJyB8fCAnLicgfHwgJy4uLgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hl ZHVsZQppbmRleCA5MTBmNmZlM2M5Li5kOGUyNWJiZDJlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxf c2NoZWR1bGUKQEAgLTEwMyw3ICsxMDMsNyBAQCB0ZXN0OiBzZWxlY3Rfdmlld3MgcG9ydGFsc19w MiBmb3JlaWduX2tleSBjbHVzdGVyIGRlcGVuZGVuY3kgZ3VjIGJpdG1hcG9wcyBjb21ibwogIyAt LS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMgKEpTT04gcmVsYXRl ZCkKICMgLS0tLS0tLS0tLQotdGVzdDoganNvbiBqc29uYiBqc29uX2VuY29kaW5nIGpzb25wYXRo IGpzb25wYXRoX2VuY29kaW5nIGpzb25iX2pzb25wYXRoIHNxbGpzb24gc3FsanNvbl9xdWVyeWZ1 bmNzCit0ZXN0OiBqc29uIGpzb25iIGpzb25fZW5jb2RpbmcganNvbnBhdGgganNvbnBhdGhfZW5j b2RpbmcganNvbmJfanNvbnBhdGggc3FsanNvbiBzcWxqc29uX3F1ZXJ5ZnVuY3Mgc3FsanNvbl9q c29udGFibGUKIAogIyAtLS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVz dHMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NxbGpzb25fanNvbnRhYmxlLnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NxbGpzb25fanNvbnRhYmxlLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi42NzdhMTRmZGJjCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3FsanNvbl9qc29udGFibGUuc3FsCkBAIC0wLDAgKzEs NzI5IEBACistLSBKU09OX1RBQkxFCisKKy0tIFNob3VsZCBmYWlsIChKU09OX1RBQkxFIGNhbiBi ZSB1c2VkIG9ubHkgaW4gRlJPTSBjbGF1c2UpCitTRUxFQ1QgSlNPTl9UQUJMRSgnW10nLCAnJCcp OworCistLSBTaG91bGQgZmFpbCAoanNvbiBhcmd1bWVudCBub3Qgc3VwcG9ydGVkKQorU0VMRUNU ICogRlJPTSBKU09OX1RBQkxFKE5VTEwgRk9STUFUIEpTT04sICckJyBDT0xVTU5TIChmb28gdGV4 dCkpOworCistLSBTaG91bGQgZmFpbCAobm8gY29sdW1ucykKK1NFTEVDVCAqIEZST00gSlNPTl9U QUJMRShOVUxMLCAnJCcgQ09MVU1OUyAoKSk7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSAo TlVMTDo6anNvbmIsICckJyBDT0xVTU5TICh2MSB0aW1lc3RhbXApKSBBUyBmICh2MSwgdjIpOwor CistLSBOVUxMID0+IGVtcHR5IHRhYmxlCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoTlVMTDo6 anNvbmIsICckJyBDT0xVTU5TIChmb28gaW50KSkgYmFyOworCistLQorU0VMRUNUICogRlJPTSBK U09OX1RBQkxFKGpzb25iICcxMjMnLCAnJCcKKwlDT0xVTU5TIChpdGVtIGludCBQQVRIICckJywg Zm9vIGludCkpIGJhcjsKKworLS0gSlNPTl9UQUJMRTogYmFzaWMgZnVuY3Rpb25hbGl0eQorQ1JF QVRFIERPTUFJTiBqc29uYl90ZXN0X2RvbWFpbiBBUyB0ZXh0IENIRUNLICh2YWx1ZSA8PiAnZm9v Jyk7CitDUkVBVEUgVEVNUCBUQUJMRSBqc29uX3RhYmxlX3Rlc3QgKGpzKSBBUworCShWQUxVRVMK KwkJKCcxJyksCisJCSgnW10nKSwKKwkJKCd7fScpLAorCQkoJ1sxLCAxLjIzLCAiMiIsICJhYWFh YWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJc InN0clwiIl0nKQorCSk7CisKKy0tIFJlZ3VsYXIgInVuZm9ybWF0dGVkIiBjb2x1bW5zCitTRUxF Q1QgKgorRlJPTSBqc29uX3RhYmxlX3Rlc3QgdmFscworCUxFRlQgT1VURVIgSk9JTgorCUpTT05f VEFCTEUoCisJCXZhbHMuanM6Ompzb25iLCAnbGF4ICRbKl0nCisJCUNPTFVNTlMgKAorCQkJaWQg Rk9SIE9SRElOQUxJVFksCisJCQkiaW50IiBpbnQgUEFUSCAnJCcsCisJCQkidGV4dCIgdGV4dCBQ QVRIICckJywKKwkJCSJjaGFyKDQpIiBjaGFyKDQpIFBBVEggJyQnLAorCQkJImJvb2wiIGJvb2wg UEFUSCAnJCcsCisJCQkibnVtZXJpYyIgbnVtZXJpYyBQQVRIICckJywKKwkJCSJkb21haW4iIGpz b25iX3Rlc3RfZG9tYWluIFBBVEggJyQnLAorCQkJanMganNvbiBQQVRIICckJywKKwkJCWpiIGpz b25iIFBBVEggJyQnCisJCSkKKwkpIGp0CisJT04gdHJ1ZTsKKworLS0gImZvcm1hdHRlZCIgY29s dW1ucworU0VMRUNUICoKK0ZST00ganNvbl90YWJsZV90ZXN0IHZhbHMKKwlMRUZUIE9VVEVSIEpP SU4KKwlKU09OX1RBQkxFKAorCQl2YWxzLmpzOjpqc29uYiwgJ2xheCAkWypdJworCQlDT0xVTU5T ICgKKwkJCWlkIEZPUiBPUkRJTkFMSVRZLAorCQkJanN0IHRleHQgICAgRk9STUFUIEpTT04gIFBB VEggJyQnLAorCQkJanNjIGNoYXIoNCkgRk9STUFUIEpTT04gIFBBVEggJyQnLAorCQkJanN2IHZh cmNoYXIoNCkgRk9STUFUIEpTT04gIFBBVEggJyQnLAorCQkJanNiIGpzb25iIEZPUk1BVCBKU09O IFBBVEggJyQnLAorCQkJanNicSBqc29uYiBGT1JNQVQgSlNPTiBQQVRIICckJyBPTUlUIFFVT1RF UworCQkpCisJKSBqdAorCU9OIHRydWU7CisKKy0tIEVYSVNUUyBjb2x1bW5zCitTRUxFQ1QgKgor RlJPTSBqc29uX3RhYmxlX3Rlc3QgdmFscworCUxFRlQgT1VURVIgSk9JTgorCUpTT05fVEFCTEUo CisJCXZhbHMuanM6Ompzb25iLCAnbGF4ICRbKl0nCisJCUNPTFVNTlMgKAorCQkJaWQgRk9SIE9S RElOQUxJVFksCisJCQlleGlzdHMxIGJvb2wgRVhJU1RTIFBBVEggJyQuYWFhJywKKwkJCWV4aXN0 czIgaW50IEVYSVNUUyBQQVRIICckLmFhYScsCisJCQlleGlzdHMzIGludCBFWElTVFMgUEFUSCAn c3RyaWN0ICQuYWFhJyBVTktOT1dOIE9OIEVSUk9SLAorCQkJZXhpc3RzNCB0ZXh0IEVYSVNUUyBQ QVRIICdzdHJpY3QgJC5hYWEnIEZBTFNFIE9OIEVSUk9SCisJCSkKKwkpIGp0CisJT04gdHJ1ZTsK KworLS0gT3RoZXIgbWlzY2VsbGFub3VzIGNoZWNrcworU0VMRUNUICoKK0ZST00ganNvbl90YWJs ZV90ZXN0IHZhbHMKKwlMRUZUIE9VVEVSIEpPSU4KKwlKU09OX1RBQkxFKAorCQl2YWxzLmpzOjpq c29uYiwgJ2xheCAkWypdJworCQlDT0xVTU5TICgKKwkJCWlkIEZPUiBPUkRJTkFMSVRZLAorCQkJ YWFhIGludCwgLS0gImFhYSIgaGFzIGltcGxpY2l0IHBhdGggJyQuImFhYSInCisJCQlhYWExIGlu dCBQQVRIICckLmFhYScsCisJCQlqczIganNvbiBQQVRIICckJywKKwkJCWpzYjJ3IGpzb25iIFBB VEggJyQnIFdJVEggV1JBUFBFUiwKKwkJCWpzYjJxIGpzb25iIFBBVEggJyQnIE9NSVQgUVVPVEVT LAorCQkJaWEgaW50W10gUEFUSCAnJCcsCisJCQl0YSB0ZXh0W10gUEFUSCAnJCcsCisJCQlqYmEg anNvbmJbXSBQQVRIICckJworCQkpCisJKSBqdAorCU9OIHRydWU7CisKKy0tIEpTT05fVEFCTEU6 IFRlc3QgYmFja3dhcmQgcGFyc2luZworCitDUkVBVEUgVklFVyBqc29uYl90YWJsZV92aWV3MSBB UworU0VMRUNUICogRlJPTQorCUpTT05fVEFCTEUoCisJCWpzb25iICdudWxsJywgJ2xheCAkWypd JyBQQVNTSU5HIDEgKyAyIEFTIGEsIGpzb24gJyJmb28iJyBBUyAiYiBjIgorCQlDT0xVTU5TICgK KwkJCWlkIEZPUiBPUkRJTkFMSVRZLAorCQkJTkVTVEVEIFBBVEggJyRbMV0nIEFTIHAxIENPTFVN TlMgKAorCQkJCWExIGludCwKKwkJCQlORVNURUQgUEFUSCAnJFsqXScgQVMgInAxIDEiIENPTFVN TlMgKAorCQkJCQlhMTEgdGV4dAorCQkJCSksCisJCQkJYjEgdGV4dAorCQkJKSwKKwkJCU5FU1RF RCBQQVRIICckWzJdJyBBUyBwMiBDT0xVTU5TICgKKwkJCQlORVNURUQgUEFUSCAnJFsqXScgQVMg InAyOjEiIENPTFVNTlMgKAorCQkJCQlhMjEgdGV4dAorCQkJCSksCisJCQkJTkVTVEVEIFBBVEgg JyRbKl0nIEFTIHAyMiBDT0xVTU5TICgKKwkJCQkJYTIyIHRleHQKKwkJCQkpCisJCQkpCisJCSkK KwkpOworCitDUkVBVEUgVklFVyBqc29uYl90YWJsZV92aWV3MiBBUworU0VMRUNUICogRlJPTQor CUpTT05fVEFCTEUoCisJCWpzb25iICdudWxsJywgJ2xheCAkWypdJyBQQVNTSU5HIDEgKyAyIEFT IGEsIGpzb24gJyJmb28iJyBBUyAiYiBjIgorCQlDT0xVTU5TICgKKwkJCSJpbnQiIGludCBQQVRI ICckJywKKwkJCSJ0ZXh0IiB0ZXh0IFBBVEggJyQnLAorCQkJImNoYXIoNCkiIGNoYXIoNCkgUEFU SCAnJCcsCisJCQkiYm9vbCIgYm9vbCBQQVRIICckJywKKwkJCSJudW1lcmljIiBudW1lcmljIFBB VEggJyQnLAorCQkJImRvbWFpbiIganNvbmJfdGVzdF9kb21haW4gUEFUSCAnJCcpKTsKKworQ1JF QVRFIFZJRVcganNvbmJfdGFibGVfdmlldzMgQVMKK1NFTEVDVCAqIEZST00KKwlKU09OX1RBQkxF KAorCQlqc29uYiAnbnVsbCcsICdsYXggJFsqXScgUEFTU0lORyAxICsgMiBBUyBhLCBqc29uICci Zm9vIicgQVMgImIgYyIKKwkJQ09MVU1OUyAoCisJCQlqcyBqc29uIFBBVEggJyQnLAorCQkJamIg anNvbmIgUEFUSCAnJCcsCisJCQlqc3QgdGV4dCAgICBGT1JNQVQgSlNPTiAgUEFUSCAnJCcsCisJ CQlqc2MgY2hhcig0KSBGT1JNQVQgSlNPTiAgUEFUSCAnJCcsCisJCQlqc3YgdmFyY2hhcig0KSBG T1JNQVQgSlNPTiAgUEFUSCAnJCcpKTsKKworQ1JFQVRFIFZJRVcganNvbmJfdGFibGVfdmlldzQg QVMKK1NFTEVDVCAqIEZST00KKwlKU09OX1RBQkxFKAorCQlqc29uYiAnbnVsbCcsICdsYXggJFsq XScgUEFTU0lORyAxICsgMiBBUyBhLCBqc29uICciZm9vIicgQVMgImIgYyIKKwkJQ09MVU1OUyAo CisgICAgICAgICAgICBqc2IganNvbmIgICBGT1JNQVQgSlNPTiBQQVRIICckJywKKyAgICAgICAg ICAgIGpzYnEganNvbmIgRk9STUFUIEpTT04gUEFUSCAnJCcgT01JVCBRVU9URVMsCisgICAgICAg ICAgICBhYWEgaW50LCAtLSBpbXBsaWNpdCBwYXRoICckLiJhYWEiJywKKyAgICAgICAgICAgIGFh YTEgaW50IFBBVEggJyQuYWFhJykpOworCitDUkVBVEUgVklFVyBqc29uYl90YWJsZV92aWV3NSBB UworU0VMRUNUICogRlJPTQorCUpTT05fVEFCTEUoCisJCWpzb25iICdudWxsJywgJ2xheCAkWypd JyBQQVNTSU5HIDEgKyAyIEFTIGEsIGpzb24gJyJmb28iJyBBUyAiYiBjIgorCQlDT0xVTU5TICgK KwkJCWV4aXN0czEgYm9vbCBFWElTVFMgUEFUSCAnJC5hYWEnLAorCQkJZXhpc3RzMiBpbnQgRVhJ U1RTIFBBVEggJyQuYWFhJyBUUlVFIE9OIEVSUk9SLAorCQkJZXhpc3RzMyB0ZXh0IEVYSVNUUyBQ QVRIICdzdHJpY3QgJC5hYWEnIFVOS05PV04gT04gRVJST1IpKTsKKworQ1JFQVRFIFZJRVcganNv bmJfdGFibGVfdmlldzYgQVMKK1NFTEVDVCAqIEZST00KKwlKU09OX1RBQkxFKAorCQlqc29uYiAn bnVsbCcsICdsYXggJFsqXScgUEFTU0lORyAxICsgMiBBUyBhLCBqc29uICciZm9vIicgQVMgImIg YyIKKwkJQ09MVU1OUyAoCisJCQlqczIganNvbiBQQVRIICckJywKKwkJCWpzYjJ3IGpzb25iIFBB VEggJyQnIFdJVEggV1JBUFBFUiwKKwkJCWpzYjJxIGpzb25iIFBBVEggJyQnIE9NSVQgUVVPVEVT LAorCQkJaWEgaW50W10gUEFUSCAnJCcsCisJCQl0YSB0ZXh0W10gUEFUSCAnJCcsCisJCQlqYmEg anNvbmJbXSBQQVRIICckJykpOworCitcc3YganNvbmJfdGFibGVfdmlldzEKK1xzdiBqc29uYl90 YWJsZV92aWV3MgorXHN2IGpzb25iX3RhYmxlX3ZpZXczCitcc3YganNvbmJfdGFibGVfdmlldzQK K1xzdiBqc29uYl90YWJsZV92aWV3NQorXHN2IGpzb25iX3RhYmxlX3ZpZXc2CisKK0VYUExBSU4g KENPU1RTIE9GRiwgVkVSQk9TRSkgU0VMRUNUICogRlJPTSBqc29uYl90YWJsZV92aWV3MTsKK0VY UExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkgU0VMRUNUICogRlJPTSBqc29uYl90YWJsZV92aWV3 MjsKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkgU0VMRUNUICogRlJPTSBqc29uYl90YWJs ZV92aWV3MzsKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkgU0VMRUNUICogRlJPTSBqc29u Yl90YWJsZV92aWV3NDsKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkgU0VMRUNUICogRlJP TSBqc29uYl90YWJsZV92aWV3NTsKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkgU0VMRUNU ICogRlJPTSBqc29uYl90YWJsZV92aWV3NjsKKworLS0gSlNPTl9UQUJMRSgpIHdpdGggYWxpYXMK K0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkKK1NFTEVDVCAqIEZST00KKwlKU09OX1RBQkxF KAorCQlqc29uYiAnbnVsbCcsICdsYXggJFsqXScgUEFTU0lORyAxICsgMiBBUyBhLCBqc29uICci Zm9vIicgQVMgImIgYyIKKwkJQ09MVU1OUyAoCisJCQlpZCBGT1IgT1JESU5BTElUWSwKKwkJCSJp bnQiIGludCBQQVRIICckJywKKwkJCSJ0ZXh0IiB0ZXh0IFBBVEggJyQnCisJKSkganNvbl90YWJs ZV9mdW5jOworCitEUk9QIFZJRVcganNvbmJfdGFibGVfdmlldzE7CitEUk9QIFZJRVcganNvbmJf dGFibGVfdmlldzI7CitEUk9QIFZJRVcganNvbmJfdGFibGVfdmlldzM7CitEUk9QIFZJRVcganNv bmJfdGFibGVfdmlldzQ7CitEUk9QIFZJRVcganNvbmJfdGFibGVfdmlldzU7CitEUk9QIFZJRVcg anNvbmJfdGFibGVfdmlldzY7CitEUk9QIERPTUFJTiBqc29uYl90ZXN0X2RvbWFpbjsKKworLS0g SlNPTl9UQUJMRTogb25seSBvbmUgRk9SIE9SRElOQUxJVFkgY29sdW1ucyBhbGxvd2VkCitTRUxF Q1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJzEnLCAnJCcgQ09MVU1OUyAoaWQgRk9SIE9SRElO QUxJVFksIGlkMiBGT1IgT1JESU5BTElUWSwgYSBpbnQgUEFUSCAnJC5hJyBFUlJPUiBPTiBFTVBU WSkpIGp0OworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcxJywgJyQnIENPTFVNTlMg KGlkIEZPUiBPUkRJTkFMSVRZLCBhIGludCBQQVRIICckJyBFUlJPUiBPTiBFTVBUWSkpIGp0Owor CistLSBKU09OX1RBQkxFOiBPTiBFTVBUWS9PTiBFUlJPUiBiZWhhdmlvcgorU0VMRUNUICoKK0ZS T00KKwkoVkFMVUVTICgnMScpLCAoJyJlcnIiJykpIHZhbHMoanMpLAorCUpTT05fVEFCTEUodmFs cy5qczo6anNvbmIsICckJyBDT0xVTU5TIChhIGludCBQQVRIICckJykpIGp0OworCitTRUxFQ1Qg KgorRlJPTQorCShWQUxVRVMgKCcxJyksICgnImVyciInKSkgdmFscyhqcykKKwkJTEVGVCBPVVRF UiBKT0lOCisJSlNPTl9UQUJMRSh2YWxzLmpzOjpqc29uYiwgJyQnIENPTFVNTlMgKGEgaW50IFBB VEggJyQnKSBFUlJPUiBPTiBFUlJPUikganQKKwkJT04gdHJ1ZTsKKworU0VMRUNUICoKK0ZST00K KwkoVkFMVUVTICgnMScpLCAoJyJlcnIiJykpIHZhbHMoanMpCisJCUxFRlQgT1VURVIgSk9JTgor CUpTT05fVEFCTEUodmFscy5qczo6anNvbmIsICckJyBDT0xVTU5TIChhIGludCBQQVRIICckJyBF UlJPUiBPTiBFUlJPUikpIGp0CisJCU9OIHRydWU7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJM RShqc29uYiAnMScsICckJyBDT0xVTU5TIChhIGludCBQQVRIICckLmEnIEVSUk9SIE9OIEVNUFRZ KSkganQ7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJzEnLCAnJCcgQ09MVU1OUyAo YSBpbnQgUEFUSCAnc3RyaWN0ICQuYScgRVJST1IgT04gRU1QVFkpIEVSUk9SIE9OIEVSUk9SKSBq dDsKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnMScsICckJyBDT0xVTU5TIChhIGlu dCBQQVRIICdsYXggJC5hJyBFUlJPUiBPTiBFTVBUWSkgRVJST1IgT04gRVJST1IpIGp0OworCitT RUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludCBQ QVRIICckJyAgIERFRkFVTFQgMSBPTiBFTVBUWSBERUZBVUxUIDIgT04gRVJST1IpKSBqdDsKK1NF TEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50IFBB VEggJ3N0cmljdCAkLmEnIERFRkFVTFQgMSBPTiBFTVBUWSBERUZBVUxUIDIgT04gRVJST1IpKSBq dDsKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEg aW50IFBBVEggJ2xheCAkLmEnIERFRkFVTFQgMSBPTiBFTVBUWSBERUZBVUxUIDIgT04gRVJST1Ip KSBqdDsKKworLS0gSlNPTl9UQUJMRTogRVhJU1RTIFBBVEggdHlwZXMKK1NFTEVDVCAqIEZST00g SlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50NCBFWElTVFMgUEFUSCAn JC5hJykpOworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1O UyAoYSBpbnQyIEVYSVNUUyBQQVRIICckLmEnKSk7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUo anNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludDggRVhJU1RTIFBBVEggJyQuYScpKTsKK1NF TEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgZmxvYXQ0 IEVYSVNUUyBQQVRIICckLmEnKSk7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJh IicsICckJyBDT0xVTU5TIChhIGNoYXIoMykgRVhJU1RTIFBBVEggJyQuYScpKTsKK1NFTEVDVCAq IEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEganNvbiBFWElTVFMg UEFUSCAnJC5hJykpOworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcg Q09MVU1OUyAoYSBqc29uYiBFWElTVFMgUEFUSCAnJC5hJykpOworCistLSBKU09OX1RBQkxFOiBX UkFQUEVSL1FVT1RFUyBjbGF1c2VzIG9uIHNjYWxhciBjb2x1bW5zCitTRUxFQ1QgKiBGUk9NIEpT T05fVEFCTEUoanNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0IFBBVEggJyQn IEtFRVAgUVVPVEVTIE9OIFNDQUxBUiBTVFJJTkcpKTsKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJM RShqc29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChpdGVtIHRleHQgUEFUSCAnJCcgT01JVCBR VU9URVMgT04gU0NBTEFSIFNUUklORykpOworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25i ICcid29ybGQiJywgJyQnIENPTFVNTlMgKGl0ZW0gdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckJyBL RUVQIFFVT1RFUykpOworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcid29ybGQiJywg JyQnIENPTFVNTlMgKGl0ZW0gdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckJyBPTUlUIFFVT1RFUykp OworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcid29ybGQiJywgJyQnIENPTFVNTlMg KGl0ZW0gdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckJyBXSVRIT1VUIFdSQVBQRVIgS0VFUCBRVU9U RVMpKTsKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBDT0xV TU5TIChpdGVtIHRleHQgUEFUSCAnJCcgV0lUSE9VVCBXUkFQUEVSIE9NSVQgUVVPVEVTKSk7CisK K1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChp dGVtIHRleHQgRk9STUFUIEpTT04gUEFUSCAnJCcgV0lUSCBXUkFQUEVSKSk7CisKKy0tIEVycm9y OiBRVU9URVMgY2xhdXNlIG1lYW5pbmdsZXNzIHdoZW4gV0lUSCBXUkFQUEVSIGlzIHByZXNlbnQK K1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChp dGVtIHRleHQgRk9STUFUIEpTT04gUEFUSCAnJCcgV0lUSCBXUkFQUEVSIEtFRVAgUVVPVEVTKSk7 CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAo aXRlbSB0ZXh0IFBBVEggJyQnIFdJVEggV1JBUFBFUiBPTUlUIFFVT1RFUykpOworCistLSBKU09O X1RBQkxFOiBuZXN0ZWQgcGF0aHMgYW5kIHBsYW5zCisKKy0tIFNob3VsZCBmYWlsIChKU09OX1RB QkxFIGNvbHVtbnMgbXVzdCBjb250YWluIGV4cGxpY2l0IEFTIHBhdGgKKy0tIHNwZWNpZmljYXRp b25zIGlmIGV4cGxpY2l0IFBMQU4gY2xhdXNlIGlzIHVzZWQpCitTRUxFQ1QgKiBGUk9NIEpTT05f VEFCTEUoCisJanNvbmIgJ1tdJywgJyQnIC0tIEFTIDxwYXRoIG5hbWU+IHJlcXVpcmVkIGhlcmUK KwlDT0xVTU5TICgKKwkJZm9vIGludCBQQVRIICckJworCSkKKwlQTEFOIERFRkFVTFQgKFVOSU9O KQorKSBqdDsKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdbXScsICckJyBB UyBwYXRoMQorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQ09MVU1OUyAoIC0tIEFTIDxw YXRoIG5hbWU+IHJlcXVpcmVkIGhlcmUKKwkJCWZvbyBpbnQgUEFUSCAnJCcKKwkJKQorCSkKKwlQ TEFOIERFRkFVTFQgKFVOSU9OKQorKSBqdDsKKworLS0gU2hvdWxkIGZhaWwgKGNvbHVtbiBuYW1l cyBtdXN0IGJlIGRpc3RpbmN0KQorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdb XScsICckJyBBUyBhCisJQ09MVU1OUyAoCisJCWEgaW50CisJKQorKSBqdDsKKworU0VMRUNUICog RlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdbXScsICckJyBBUyBhCisJQ09MVU1OUyAoCisJCWIg aW50LAorCQlORVNURUQgUEFUSCAnJCcgQVMgYQorCQlDT0xVTU5TICgKKwkJCWMgaW50CisJCSkK KwkpCispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ1tdJywgJyQn CisJQ09MVU1OUyAoCisJCWIgaW50LAorCQlORVNURUQgUEFUSCAnJCcgQVMgYgorCQlDT0xVTU5T ICgKKwkJCWMgaW50CisJCSkKKwkpCispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUo CisJanNvbmIgJ1tdJywgJyQnCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBhCisJ CUNPTFVNTlMgKAorCQkJYiBpbnQKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnCisJCUNPTFVNTlMg KAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIGEKKwkJCUNPTFVNTlMgKAorCQkJCWMgaW50CisJCQkp CisJCSkKKwkpCispIGp0OworCistLSBKU09OX1RBQkxFOiBwbGFuIHZhbGlkYXRpb24KKworU0VM RUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09M VU1OUyAoCisJCU5FU1RFRCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcg QVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENP TFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMg KAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkp CisJUExBTiAocDEpCispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIg J251bGwnLCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAx IENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCAp LAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJ CU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBw MjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAwKQorKSBqdDsKKworU0VM RUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09M VU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRI ICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBw MTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09M VU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJ KQorCSkKKwlQTEFOIChwMCBPVVRFUiBwMykKKykganQ7CisKK1NFTEVDVCAqIEZST00gSlNPTl9U QUJMRSgKKwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQg UEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVN TlMgKCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIg aW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVE IFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAg VU5JT04gcDEgVU5JT04gcDExKQorKSBqdDsKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAor CWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICck JyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZv byBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQor CQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAn JCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFOIChwMCBPVVRFUiAo cDEgQ1JPU1MgcDEzKSkKKykganQ7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29u YiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMg cDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50 ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwK KwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFT IHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIgKHAxIENS T1NTIHAyKSkKKykganQ7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVs bCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09M VU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJ CQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVT VEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBD T0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIgKChwMSBVTklPTiBw MTEpIENST1NTIHAyKSkKKykganQ7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29u YiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMg cDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50 ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwK KwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFT IHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIgKChwMSBJ Tk5FUiBwMTEpIENST1NTIHAyKSkKKykganQ7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgK Kwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAn JCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBm b28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkK KwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEgg JyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIg KChwMSBJTk5FUiAocDEyIENST1NTIHAxMSkpIENST1NTIHAyKSkKKykganQ7CisKK1NFTEVDVCAq IEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVsbCcsICdzdHJpY3QgJFsqXScgQVMgcDAKKwlD T0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBB VEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFT IHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBD T0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQor CQkpCisJKQorCVBMQU4gKHAwIE9VVEVSICgocDEgSU5ORVIgKHAxMiBDUk9TUyBwMTEpKSBDUk9T UyAocDIgSU5ORVIgcDIxKSkpCispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJ anNvbmIgJ251bGwnLCAnc3RyaWN0ICRbKl0nIC0tIHdpdGhvdXQgcm9vdCBwYXRoIG5hbWUKKwlD T0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBB VEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFT IHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBD T0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQor CQkpCisJKQorCVBMQU4gKChwMSBJTk5FUiAocDEyIENST1NTIHAxMSkpIENST1NTIChwMiBJTk5F UiBwMjEpKQorKSBqdDsKKworLS0gSlNPTl9UQUJMRTogcGxhbiBleGVjdXRpb24KKworQ1JFQVRF IFRFTVAgVEFCTEUganNvbmJfdGFibGVfdGVzdCAoanMganNvbmIpOworCitJTlNFUlQgSU5UTyBq c29uYl90YWJsZV90ZXN0CitWQUxVRVMgKAorCSdbCisJCXsiYSI6ICAxLCAgImIiOiBbXSwgImMi OiBbXX0sCisJCXsiYSI6ICAyLCAgImIiOiBbMSwgMiwgM10sICJjIjogWzEwLCBudWxsLCAyMF19 LAorCQl7ImEiOiAgMywgICJiIjogWzEsIDJdLCAiYyI6IFtdfSwKKwkJeyJ4IjogIjQiLCAiYiI6 IFsxLCAyXSwgImMiOiAxMjN9CisJIF0nCispOworCistLSB1bnNwZWNpZmllZCBwbGFuIChvdXRl ciwgdW5pb24pCitzZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJ anNvbl90YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJ CQluIGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBv biBlbXB0eSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICgg YiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBj b2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJKSBqdDsKKworLS0gZGVmYXVsdCBwbGFu IChvdXRlciwgdW5pb24pCitzZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBq dHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1u cyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVs dCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1 bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBh cyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJCXBsYW4gZGVmYXVsdCAob3V0 ZXIsIHVuaW9uKQorCSkganQ7CisKKy0tIHNwZWNpZmljIHBsYW4gKHAgb3V0ZXIgKHBiIHVuaW9u IHBjKSkKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29u X3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4g Zm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVt cHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGlu dCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVt bnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiAocCBvdXRlciAocGIgdW5pb24gcGMp KQorCSkganQ7CisKKy0tIHNwZWNpZmljIHBsYW4gKHAgb3V0ZXIgKHBjIHVuaW9uIHBiKSkKK3Nl bGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgK KwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGlu YWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJ bmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICck JyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGlu dCBwYXRoICckJyApCisJCSkKKwkJcGxhbiAocCBvdXRlciAocGMgdW5pb24gcGIpKQorCSkganQ7 CisKKy0tIGRlZmF1bHQgcGxhbiAoaW5uZXIsIHVuaW9uKQorc2VsZWN0CisJanQuKgorZnJvbQor CWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAk WypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBh dGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0 ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0 aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQor CQlwbGFuIGRlZmF1bHQgKGlubmVyKQorCSkganQ7CisKKy0tIHNwZWNpZmljIHBsYW4gKHAgaW5u ZXIgKHBiIHVuaW9uIHBjKSkKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0 IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1 bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZh dWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNv bHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0n IGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiAocCBpbm5lciAo cGIgdW5pb24gcGMpKQorCSkganQ7CisKKy0tIGRlZmF1bHQgcGxhbiAoaW5uZXIsIGNyb3NzKQor c2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUg KAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3Jk aW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJ CQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGgg JyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMg aW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIGRlZmF1bHQgKGNyb3NzLCBpbm5lcikKKwkpIGp0 OworCistLSBzcGVjaWZpYyBwbGFuIChwIGlubmVyIChwYiBjcm9zcyBwYykpCitzZWxlY3QKKwlq dC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5q cywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAor CQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBw YXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJ CW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAn JCcgKQorCQkpCisJCXBsYW4gKHAgaW5uZXIgKHBiIGNyb3NzIHBjKSkKKwkpIGp0OworCistLSBk ZWZhdWx0IHBsYW4gKG91dGVyLCBjcm9zcykKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90 YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMg cAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXgg JC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0n IGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmlj dCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiBk ZWZhdWx0IChvdXRlciwgY3Jvc3MpCisJKSBqdDsKKworLS0gc3BlY2lmaWMgcGxhbiAocCBvdXRl ciAocGIgY3Jvc3MgcGMpKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3Qg anR0LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVt bnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1 bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29s dW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScg YXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIChwIG91dGVyIChw YiBjcm9zcyBwYykpCisJKSBqdDsKKworCitzZWxlY3QKKwlqdC4qLCBiMSArIDEwMCBhcyBiCitm cm9tCisJanNvbl90YWJsZSAoanNvbmIKKwkJJ1sKKwkJCXsiYSI6ICAxLCAgImIiOiBbWzEsIDEw XSwgWzJdLCBbMywgMzAsIDMwMF1dLCAiYyI6IFsxLCBudWxsLCAyXX0sCisJCQl7ImEiOiAgMiwg ICJiIjogWzEwLCAyMF0sICJjIjogWzEsIG51bGwsIDJdfSwKKwkJCXsieCI6ICIzIiwgImIiOiBb MTEsIDIyLCAzMywgNDRdfQorCQkgXScsCisJCSckWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJ biBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24g ZXJyb3IsCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoCisJ CQkJYiB0ZXh0IGZvcm1hdCBqc29uIHBhdGggJyQnLAorCQkJCW5lc3RlZCBwYXRoICdzdHJpY3Qg JFsqXScgYXMgcGIxIGNvbHVtbnMgKAorCQkJCQliMSBpbnQgcGF0aCAnJCcKKwkJCQkpCisJCQkp LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKAorCQkJCWMg dGV4dCBmb3JtYXQganNvbiBwYXRoICckJywKKwkJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICRbKl0n IGFzIHBjMSBjb2x1bW5zICgKKwkJCQkJYzEgaW50IHBhdGggJyQnCisJCQkJKQorCQkJKQorCQkp CisJCS0tcGxhbiBkZWZhdWx0KG91dGVyLCBjcm9zcykKKwkJcGxhbihwIG91dGVyICgocGIgaW5u ZXIgcGIxKSBjcm9zcyAocGMgb3V0ZXIgcGMxKSkpCisJKSBqdDsKKworLS0gU2hvdWxkIHN1Y2Nl ZWQgKEpTT04gYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gcm9vdCBhbmQgbmVzdGVkIHBhdGhzKQor U0VMRUNUICoKK0ZST00KKwlnZW5lcmF0ZV9zZXJpZXMoMSwgNCkgeCwKKwlnZW5lcmF0ZV9zZXJp ZXMoMSwgMykgeSwKKwlKU09OX1RBQkxFKGpzb25iCisJCSdbWzEsMiwzXSxbMiwzLDQsNV0sWzMs NCw1LDZdXScsCisJCSdzdHJpY3QgJFsqXSA/IChAWypdIDwgJHgpJworCQlQQVNTSU5HIHggQVMg eCwgeSBBUyB5CisJCUNPTFVNTlMgKAorCQkJeSB0ZXh0IEZPUk1BVCBKU09OIFBBVEggJyQnLAor CQkJTkVTVEVEIFBBVEggJ3N0cmljdCAkWypdID8gKEAgPj0gJHkpJworCQkJQ09MVU1OUyAoCisJ CQkJeiBpbnQgUEFUSCAnJCcKKwkJCSkKKwkJKQorCSkganQ7CisKKy0tIFNob3VsZCBmYWlsIChK U09OIGFyZ3VtZW50cyBhcmUgbm90IHBhc3NlZCB0byBjb2x1bW4gcGF0aHMpCitTRUxFQ1QgKgor RlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdbMSwyLDNdJywKKwknJFsqXSA/IChAIDwgJHgpJwor CQlQQVNTSU5HIDEwIEFTIHgKKwkJQ09MVU1OUyAoeSB0ZXh0IEZPUk1BVCBKU09OIFBBVEggJyQg PyAoQCA8ICR4KScpCisJKSBqdDsKKworLS0gU2hvdWxkIGZhaWwgKG5vdCBzdXBwb3J0ZWQpCitT RUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJ3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8 ICdhJyBDT0xVTU5TIChmb28gaW50KSk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDM1 NWM4MTQ0YTIuLjA1YmRmYjkyYmIgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMzI2 LDYgKzEzMjYsNyBAQCBKc29uUGF0aE11dGFibGVDb250ZXh0CiBKc29uUGF0aFBhcnNlSXRlbQog SnNvblBhdGhQYXJzZVJlc3VsdAogSnNvblBhdGhQcmVkaWNhdGVDYWxsYmFjaworSnNvblBhdGhT cGVjCiBKc29uUGF0aFN0cmluZwogSnNvblBhdGhWYXJpYWJsZQogSnNvblBhdGhWYXJpYWJsZUV2 YWxDb250ZXh0CkBAIC0xMzM1LDYgKzEzMzYsMjAgQEAgSnNvblJldHVybmluZwogSnNvblNjYWxh ckV4cHIKIEpzb25TZW1BY3Rpb24KIEpzb25TZXJpYWxpemVFeHByCitKc29uVGFibGUKK0pzb25U YWJsZUNvbHVtbgorSnNvblRhYmxlQ29sdW1uVHlwZQorSnNvblRhYmxlQ29udGV4dAorSnNvblRh YmxlUGFyc2VDb250ZXh0CitKc29uVGFibGVKb2luU3RhdGUKK0pzb25UYWJsZVBsYW4KK0pzb25U YWJsZVBsYW5TcGVjCitKc29uVGFibGVQbGFuU3RhdGUKK0pzb25UYWJsZVBsYW5TdGF0ZVR5cGUK K0pzb25UYWJsZVBsYW5Kb2luVHlwZQorSnNvblRhYmxlUGxhblR5cGUKK0pzb25UYWJsZVNjYW5T dGF0ZQorSnNvblRhYmxlU2libGluZwogSnNvblRva2VuVHlwZQogSnNvblRyYW5zZm9ybVN0cmlu Z1ZhbHVlc0FjdGlvbgogSnNvblR5cGVDYXRlZ29yeQpAQCAtMjgwMyw2ICsyODE4LDcgQEAgVGFi bGVGdW5jCiBUYWJsZUZ1bmNSb3V0aW5lCiBUYWJsZUZ1bmNTY2FuCiBUYWJsZUZ1bmNTY2FuU3Rh dGUKK1RhYmxlRnVuY1R5cGUKIFRhYmxlSW5mbwogVGFibGVMaWtlQ2xhdXNlCiBUYWJsZVNhbXBs ZUNsYXVzZQotLSAKMi40My4wCgo= --0000000000002cbba206130cfe1d Content-Type: application/octet-stream; name="v42-0001-Add-SQL-JSON-query-functions.patch" Content-Disposition: attachment; filename="v42-0001-Add-SQL-JSON-query-functions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ltgwlw8w0 RnJvbSBjMzhkN2IwZTA3MzEwYmU5MjlmYzdiMGVmMmMzYzQwZGVkYmVlMzVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IE1vbiwgNCBNYXIgMjAyNCAxODowNDo1MCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQy IDEvM10gQWRkIFNRTC9KU09OIHF1ZXJ5IGZ1bmN0aW9ucwpNSU1FLVZlcnNpb246IDEuMApDb250 ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNv ZGluZzogOGJpdAoKVGhpcyBpbnRyb2R1Y2VzIHRoZSBmb2xsb3dpbmcgU1FML0pTT04gZnVuY3Rp b25zIGZvciBxdWVyeWluZyBKU09OCmRhdGEgdXNpbmcganNvbnBhdGggZXhwcmVzc2lvbnM6CgpK U09OX0VYSVNUUygpCkpTT05fUVVFUlkoKQpKU09OX1ZBTFVFKCkKCkpTT05fRVhJU1RTKCkgdGVz dHMgaWYgdGhlIGpzb25wYXRoIGV4cHJlc3Npb24gYXBwbGllZCB0byBhIGpzb25iCnZhbHVlIHlp ZWxkcyBhbnkgdmFsdWVzLgoKSlNPTl9WQUxVRSgpIGFwcGxpZXMgYSBqc29ucGF0aCBleHByZXNz aW9uIHRvIGEganNvbmIgdmFsdWUgdG8gcmV0dXJuCmEgc2luZ2xlIHNjYWxhciB2YWx1ZSwgcHJv ZHVjaW5nIGFuIGVycm9yIGlmIGl0IG11bHRpcGxlIHZhbHVlcyBhcmUKbWF0Y2hlZC4KCkpTT05f UVVFUlkoKSBhcHBsaWVzIGEganNvbnBhdGggZXhwcmVzc2lvbiB0byBhIGpzb25iIHZhbHVlIHRv CnJldHVybiBhIGpzb24gb2JqZWN0IG9yIGFycmF5LiAgVGhlcmUgYXJlIHZhcmlvdXMgb3B0aW9u cyB0byBjb250cm9sCndoZXRoZXIgbXVsdGktdmFsdWUgcmVzdWx0IHVzZXMgYXJyYXkgd3JhcHBl cnMgYW5kIHdoZXRoZXIgdGhlCnNpbmdsZXRvbiBzY2FsYXIgc3RyaW5ncyBhcmUgcXVvdGVkIG9y IG5vdC4KCkJvdGggSlNPTl9WQUxVRSgpIGFuZCBKU09OX1FVRVJZKCkgZnVuY3Rpb25zIGhhdmUg b3B0aW9ucyBmb3IKaGFuZGxpbmcgRU1QVFkgYW5kIEVSUk9SIGNvbmRpdGlvbnMsIHdoaWNoIGNh biBiZSB1c2VkIHRvIHNwZWNpZnkKdGhlIGJlaGF2aW9yIHdoZW4gbm8gdmFsdWVzIGFyZSBtYXRj aGVkIGFuZCB3aGVuIGFuIGVycm9yIG9jY3VycwpkdXJpbmcgZXZhbHVhdGlvbiwgcmVzcGVjdGl2 ZWx5LgoKQWxsIG9mIHRoZXNlIGZ1bmN0aW9ucyBvbmx5IG9wZXJhdGUgb24ganNvbmIgdmFsdWVz LiBUaGUgd29ya2Fyb3VuZApmb3Igbm93IGlzIHRvIGNhc3QgdGhlIGFyZ3VtZW50IHRvIGpzb25i LgoKQXV0aG9yOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8ucnU+CkF1dGhv cjogVGVvZG9yIFNpZ2FldiA8dGVvZG9yQHNpZ2Fldi5ydT4KQXV0aG9yOiBPbGVnIEJhcnR1bm92 IDxvYmFydHVub3ZAZ21haWwuY29tPgpBdXRob3I6IEFsZXhhbmRlciBLb3JvdGtvdiA8YWVrb3Jv dGtvdkBnbWFpbC5jb20+CkF1dGhvcjogQW5kcmV3IER1bnN0YW4gPGFuZHJld0BkdW5zbGFuZS5u ZXQ+CkF1dGhvcjogQW1pdCBMYW5nb3RlIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KQXV0aG9y OiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRyYXV0Lm9yZz4KQXV0aG9yOiBKaWFuIEhl IDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+CgpSZXZpZXdlcnMgaGF2ZSBpbmNsdWRlZCAo aW4gbm8gcGFydGljdWxhciBvcmRlcikgQW5kcmVzIEZyZXVuZCwgQWxleGFuZGVyCktvcm90a292 LCBQYXZlbCBTdGVodWxlLCBBbmRyZXcgQWxzdXAsIEVyaWsgUmlqa2VycywgWmlob25nIFl1LApI aW1hbnNodSBVcGFkaHlheWEsIERhbmllbCBHdXN0YWZzc29uLCBKdXN0aW4gUHJ5emJ5LCDDgWx2 YXJvIEhlcnJlcmEsCkppYW4gSGUsIEFudG9uIEEuIE1lbG5pa292LCBOaWtpdGEgTWFsYWtob3Ys IFBldGVyIEVpc2VudHJhdXQKCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vY2QwYmI5 MzUtMDE1OC03OGE3LTA4YjUtOTA0ODg2ZGVhYzRiQHBvc3RncmVzcHJvLnJ1CkRpc2N1c3Npb246 IGh0dHBzOi8vcG9zdGdyLmVzL20vMjAyMjA2MTYyMzMxMzAucnBhcml2YWZpcHQ2ZG9qM0BhbGFw My5hbmFyYXplbC5kZQpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL2FiZDliODNiLWFh NjYtZjIzMC0zZDZkLTczNDgxN2YwOTk1ZCU0MHBvc3RncmVzcWwub3JnCkRpc2N1c3Npb246IGh0 dHBzOi8vcG9zdGdyLmVzL20vQ0ErSGl3cUhST3BmOWU2NDREOEJScVl2YUFQbWdCWlZ1cC14S01E UGstbmQ0RXBnekh3QG1haWwuZ21haWwuY29tCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vQ0ErSGl3cUU0WFRkZmIxblc9T2pveV90UVNSaFl0LXFfa2I2aTVkNHhjS3lyTEMxTmJnQG1h aWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDIyNCArKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dCAg ICAgICAgICB8ICAgMTIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgICAgICAg ICAgICAgICB8ICAzMzQgKysrKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJw LmMgICAgICAgICB8ICAzODAgKysrKy0KIHNyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhw ci5jICAgICAgICAgICB8ICAxNDQgKysKIHNyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlw ZXMuYyAgICAgICAgICB8ICAgIDMgKwogc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMgICAg ICAgICAgICAgICAgIHwgICAxOCArCiBzcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyAgICAg ICAgICAgICAgICAgfCAgMjQ4ICsrKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3Rz aXplLmMgICAgICAgICB8ICAgIDMgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVz ZXMuYyAgICAgICAgICB8ICAgMjAgKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAg ICAgICAgICAgICAgIHwgIDE4OCArKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMg ICAgICAgICAgICAgICB8ICA2NjkgKysrKysrKystCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf dGFyZ2V0LmMgICAgICAgICAgICAgfCAgIDE1ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3Jt YXR0aW5nLmMgICAgICAgICAgICB8ICAgNDQgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25i LmMgICAgICAgICAgICAgICAgIHwgICAzMSArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1 bmNzLmMgICAgICAgICAgICAgfCAgIDYyICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBh dGguYyAgICAgICAgICAgICAgfCAgMjgzICsrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u cGF0aF9leGVjLmMgICAgICAgICB8ICAzMjIgKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9y dWxldXRpbHMuYyAgICAgICAgICAgICB8ICAxMzYgKysKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWNFeHByLmggICAgICAgICAgICAgICB8ICAgMjMgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmggICAgICAgICAgICAgICAgIHwgICA3NyArCiBzcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVu Y3MuaCAgICAgICAgICAgICAgICAgfCAgICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9k ZXMuaCAgICAgICAgICAgICAgICB8ICAgNDIgKwogc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVz LmggICAgICAgICAgICAgICAgIHwgIDE4MyArKysKIHNyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3Qu aCAgICAgICAgICAgICAgICAgICB8ICAgMTEgKwogc3JjL2luY2x1ZGUvdXRpbHMvZm9ybWF0dGlu Zy5oICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9qc29uYi5oICAg ICAgICAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL2pzb25mdW5jcy5o ICAgICAgICAgICAgICAgICB8ICAgIDcgKwogc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaCAg ICAgICAgICAgICAgICAgIHwgICAyNCArCiBzcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvZWNw Zy50cmFpbGVyICAgICAgfCAgIDI4ICsKIC4uLi9yZWdyZXNzL2V4cGVjdGVkL3NxbGpzb25fcXVl cnlmdW5jcy5vdXQgICB8IDEyNjEgKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3NxbGpzb25fcXVlcnlmdW5jcy5zcWwgICB8ICA0MjcgKysrKysrCiBzcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDE4ICsKIDM0IGZpbGVzIGNoYW5n ZWQsIDUyMDQgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zcWxqc29uX3F1ZXJ5ZnVuY3Mub3V0CiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3FsanNvbl9xdWVyeWZ1bmNzLnNx bAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVu Yy5zZ21sCmluZGV4IGU1ZmE4MmMxNjEuLjgwZTU2MmM0MGMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbApAQCAtMTU0NTgsNiAr MTU0NTgsMTEgQEAgdGFibGUyLW1hcHBpbmcKICAgICAgIHRoZSBTUUwvSlNPTiBwYXRoIGxhbmd1 YWdlCiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT4KKyAgICAg PHBhcmE+CisgICAgICB0aGUgU1FML0pTT04gcXVlcnkgZnVuY3Rpb25zCisgICAgIDwvcGFyYT4K KyAgICA8L2xpc3RpdGVtPgogICAgPC9pdGVtaXplZGxpc3Q+CiAgIDwvcGFyYT4KIApAQCAtMTg1 ODYsNiArMTg1OTEsMjI1IEBAICQuKiA/IChAIGxpa2VfcmVnZXggIl5cXGQrJCIpCiAgICAgPC9w YXJhPgogICAgPC9zZWN0Mz4KICAgPC9zZWN0Mj4KKworICAgPHNlY3QyIGlkPSJzcWxqc29uLXF1 ZXJ5LWZ1bmN0aW9ucyI+CisgICAgPHRpdGxlPlNRTC9KU09OIFF1ZXJ5IEZ1bmN0aW9uczwvdGl0 bGU+CisgIDxwYXJhPgorICAgU1FML0pTT04gZnVuY3Rpb25zIDxsaXRlcmFsPkpTT05fRVhJU1RT KCk8L2xpdGVyYWw+LAorICAgPGxpdGVyYWw+SlNPTl9RVUVSWSgpPC9saXRlcmFsPiwgYW5kIDxs aXRlcmFsPkpTT05fVkFMVUUoKTwvbGl0ZXJhbD4KKyAgIGRlc2NyaWJlZCBpbiA8eHJlZiBsaW5r ZW5kPSJmdW5jdGlvbnMtc3FsanNvbi1xdWVyeWluZyIvPiBjYW4gYmUgdXNlZAorICAgdG8gcXVl cnkgSlNPTiBkb2N1bWVudHMuICBFYWNoIG9mIHRoZXNlIGZ1bmN0aW9ucyBhcHBseSBhCisgICA8 cmVwbGFjZWFibGU+cGF0aF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gKHRoZSBxdWVyeSkgdG8g YQorICAgPHJlcGxhY2VhYmxlPmNvbnRleHRfaXRlbTwvcmVwbGFjZWFibGU+ICh0aGUgZG9jdW1l bnQpOyBzZWUKKyAgIDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9ucy1zcWxqc29uLXBhdGgiLz4gZm9y IG1vcmUgZGV0YWlscyBvbiB3aGF0CisgICA8cmVwbGFjZWFibGU+cGF0aF9leHByZXNzaW9uPC9y ZXBsYWNlYWJsZT4gY2FuIGNvbnRhaW4uCisgIDwvcGFyYT4KKworICA8bm90ZT4KKyAgIDxwYXJh PgorICAgIFNRTC9KU09OIHF1ZXJ5IGZ1bmN0aW9ucyBjdXJyZW50bHkgb25seSBhY2NlcHQgdmFs dWVzIG9mIHRoZQorICAgIDx0eXBlPmpzb25iPC90eXBlPiB0eXBlLCBiZWNhdXNlIHRoZSBTUUwv SlNPTiBwYXRoIGxhbmd1YWdlIG9ubHkKKyAgICBzdXBwb3J0cyB0aG9zZSwgc28gaXQgbWlnaHQg YmUgbmVjZXNzYXJ5IHRvIGNhc3QgdGhlCisgICAgPHJlcGxhY2VhYmxlPmNvbnRleHRfaXRlbTwv cmVwbGFjZWFibGU+IGFyZ3VtZW50IG9mIHRoZXNlIGZ1bmN0aW9ucyB0bworICAgIDx0eXBlPmpz b25iPC90eXBlPi4KKyAgIDwvcGFyYT4KKyAgPC9ub3RlPgorCisgIDx0YWJsZSBpZD0iZnVuY3Rp b25zLXNxbGpzb24tcXVlcnlpbmciPgorICAgPHRpdGxlPlNRTC9KU09OIFF1ZXJ5IEZ1bmN0aW9u czwvdGl0bGU+CisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3Np Z25hdHVyZSI+CisgICAgICAgIEZ1bmN0aW9uIHNpZ25hdHVyZQorICAgICAgIDwvcGFyYT4KKyAg ICAgICA8cGFyYT4KKyAgICAgICAgRGVzY3JpcHRpb24KKyAgICAgICA8L3BhcmE+CisgICAgICAg PHBhcmE+CisgICAgICAgIEV4YW1wbGUocykKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8 L3Jvdz4KKyAgICA8L3RoZWFkPgorICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+Cisg ICAgICAgIDxpbmRleHRlcm0+PHByaW1hcnk+anNvbl9leGlzdHM8L3ByaW1hcnk+PC9pbmRleHRl cm0+CisgICAgICAgIDxmdW5jdGlvbj5qc29uX2V4aXN0czwvZnVuY3Rpb24+ICgKKyAgICAgICAg PHJlcGxhY2VhYmxlPmNvbnRleHRfaXRlbTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGU+cGF0 aF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiA8bGl0ZXJhbD5QQVNTSU5HPC9s aXRlcmFsPiB7IDxyZXBsYWNlYWJsZT52YWx1ZTwvcmVwbGFjZWFibGU+IDxsaXRlcmFsPkFTPC9s aXRlcmFsPiA8cmVwbGFjZWFibGU+dmFybmFtZTwvcmVwbGFjZWFibGU+IH0gPG9wdGlvbmFsPiwg Li4uPC9vcHRpb25hbD48L29wdGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+IHsgPGxpdGVyYWw+ VFJVRTwvbGl0ZXJhbD4gfCA8bGl0ZXJhbD5GQUxTRTwvbGl0ZXJhbD4gfDxsaXRlcmFsPiBVTktO T1dOPC9saXRlcmFsPiB8IDxsaXRlcmFsPkVSUk9SPC9saXRlcmFsPiB9IDxsaXRlcmFsPk9OIEVS Uk9SPC9saXRlcmFsPiA8L29wdGlvbmFsPikKKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+ CisgICAgICAgIFJldHVybnMgdHJ1ZSBpZiB0aGUgU1FML0pTT04gPHJlcGxhY2VhYmxlPnBhdGhf ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+CisgICAgICAgIGFwcGxpZWQgdG8gdGhlIDxyZXBsYWNl YWJsZT5jb250ZXh0X2l0ZW08L3JlcGxhY2VhYmxlPiB1c2luZyB0aGUKKyAgICAgICAgPGxpdGVy YWw+UEFTU0lORzwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT5zIHlp ZWxkcyBhbnkKKyAgICAgICAgaXRlbXMuCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgor ICAgICAgICBUaGUgPGxpdGVyYWw+T04gRVJST1I8L2xpdGVyYWw+IGNsYXVzZSBzcGVjaWZpZXMg dGhlIGJlaGF2aW9yIGlmCisgICAgICAgIGFuIGVycm9yIG9jY3VyczsgdGhlIGRlZmF1bHQgaXMg dG8gcmV0dXJuIHRoZSA8dHlwZT5ib29sZWFuPC90eXBlPgorICAgICAgICA8bGl0ZXJhbD5GQUxT RTwvbGl0ZXJhbD4gdmFsdWUuIE5vdGUgdGhhdCBpZiB0aGUKKyAgICAgICAgPHJlcGxhY2VhYmxl PnBhdGhfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IGlzIDxsaXRlcmFsPnN0cmljdDwvbGl0ZXJh bD4KKyAgICAgICAgYW5kIDxsaXRlcmFsPk9OIEVSUk9SPC9saXRlcmFsPiBiZWhhdmlvciBpcyA8 bGl0ZXJhbD5FUlJPUjwvbGl0ZXJhbD4sCisgICAgICAgIGFuIGVycm9yIGlzIGdlbmVyYXRlZCBp ZiBpdCB5aWVsZHMgbm8gaXRlbXMuCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAg ICAgICBFeGFtcGxlczoKKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIDxs aXRlcmFsPnNlbGVjdCBqc29uX2V4aXN0cyhqc29uYiAneyJrZXkxIjogWzEsMiwzXX0nLCAnc3Ry aWN0ICQua2V5MVsqXSA/IChAID4gMiknKTwvbGl0ZXJhbD4KKyAgICAgICAgPHJldHVybnZhbHVl PnQ8L3JldHVybnZhbHVlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAg PGxpdGVyYWw+c2VsZWN0IGpzb25fZXhpc3RzKGpzb25iICd7ImEiOiBbMSwyLDNdfScsICdsYXgg JC5hWzVdJyBFUlJPUiBPTiBFUlJPUik8L2xpdGVyYWw+CisgICAgICAgIDxyZXR1cm52YWx1ZT5m PC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIDxs aXRlcmFsPnNlbGVjdCBqc29uX2V4aXN0cyhqc29uYiAneyJhIjogWzEsMiwzXX0nLCAnc3RyaWN0 ICQuYVs1XScgRVJST1IgT04gRVJST1IpPC9saXRlcmFsPgorICAgICAgICA8cmV0dXJudmFsdWU+ PC9yZXR1cm52YWx1ZT4KKzxwcm9ncmFtbGlzdGluZz4KK0VSUk9SOiAganNvbnBhdGggYXJyYXkg c3Vic2NyaXB0IGlzIG91dCBvZiBib3VuZHMKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0i ZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAgICA8 aW5kZXh0ZXJtPjxwcmltYXJ5Pmpzb25fcXVlcnk8L3ByaW1hcnk+PC9pbmRleHRlcm0+CisgICAg ICAgIDxmdW5jdGlvbj5qc29uX3F1ZXJ5PC9mdW5jdGlvbj4gKAorICAgICAgICA8cmVwbGFjZWFi bGU+Y29udGV4dF9pdGVtPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZT5wYXRoX2V4cHJlc3Np b248L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+IDxsaXRlcmFsPlBBU1NJTkc8L2xpdGVyYWw+IHsg PHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT4gPGxpdGVyYWw+QVM8L2xpdGVyYWw+IDxy ZXBsYWNlYWJsZT52YXJuYW1lPC9yZXBsYWNlYWJsZT4gfSA8b3B0aW9uYWw+LCAuLi48L29wdGlv bmFsPjwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4gPGxpdGVyYWw+UkVUVVJOSU5HPC9s aXRlcmFsPiA8cmVwbGFjZWFibGU+ZGF0YV90eXBlPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiA8 bGl0ZXJhbD5GT1JNQVQgSlNPTjwvbGl0ZXJhbD4gPG9wdGlvbmFsPiA8bGl0ZXJhbD5FTkNPRElO RyBVVEY4PC9saXRlcmFsPiA8L29wdGlvbmFsPiA8L29wdGlvbmFsPiA8L29wdGlvbmFsPgorICAg ICAgICA8b3B0aW9uYWw+IHsgPGxpdGVyYWw+V0lUSE9VVDwvbGl0ZXJhbD4gfCA8bGl0ZXJhbD5X SVRIPC9saXRlcmFsPiB7IDxsaXRlcmFsPkNPTkRJVElPTkFMPC9saXRlcmFsPiB8IDxvcHRpb25h bD48bGl0ZXJhbD5VTkNPTkRJVElPTkFMPC9saXRlcmFsPjwvb3B0aW9uYWw+IH0gfSA8b3B0aW9u YWw+IDxsaXRlcmFsPkFSUkFZPC9saXRlcmFsPiA8L29wdGlvbmFsPiA8bGl0ZXJhbD5XUkFQUEVS PC9saXRlcmFsPiA8L29wdGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+IHsgPGxpdGVyYWw+S0VF UDwvbGl0ZXJhbD4gfCA8bGl0ZXJhbD5PTUlUPC9saXRlcmFsPiB9IDxsaXRlcmFsPlFVT1RFUzwv bGl0ZXJhbD4gPG9wdGlvbmFsPiA8bGl0ZXJhbD5PTiBTQ0FMQVIgU1RSSU5HPC9saXRlcmFsPiA8 L29wdGlvbmFsPiA8L29wdGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+IHsgPGxpdGVyYWw+RVJS T1I8L2xpdGVyYWw+IHwgPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4gfCA8bGl0ZXJhbD5FTVBUWTwv bGl0ZXJhbD4geyA8b3B0aW9uYWw+IDxsaXRlcmFsPkFSUkFZPC9saXRlcmFsPiA8L29wdGlvbmFs PiB8IDxsaXRlcmFsPk9CSkVDVDwvbGl0ZXJhbD4gfSB8IDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVy YWw+IDxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gfSA8bGl0ZXJhbD5PTiBF TVBUWTwvbGl0ZXJhbD4gPC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlvbmFsPiB7IDxsaXRlcmFs PkVSUk9SPC9saXRlcmFsPiB8IDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IHwgPGxpdGVyYWw+RU1Q VFk8L2xpdGVyYWw+IHsgPG9wdGlvbmFsPiA8bGl0ZXJhbD5BUlJBWTwvbGl0ZXJhbD4gPC9vcHRp b25hbD4gfCA8bGl0ZXJhbD5PQkpFQ1Q8L2xpdGVyYWw+IH0gfCA8bGl0ZXJhbD5ERUZBVUxUPC9s aXRlcmFsPiA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IH0gPGxpdGVyYWw+ T04gRVJST1I8L2xpdGVyYWw+IDwvb3B0aW9uYWw+KQorICAgICAgPC9wYXJhPgorICAgICAgIDxw YXJhPgorICAgICAgICBSZXR1cm5zIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgdGhlCisgICAgICAg IDxyZXBsYWNlYWJsZT5wYXRoX2V4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB0byB0aGUKKyAgICAg ICAgPHJlcGxhY2VhYmxlPmNvbnRleHRfaXRlbTwvcmVwbGFjZWFibGU+IHVzaW5nIHRoZQorICAg ICAgICA8bGl0ZXJhbD5QQVNTSU5HPC9saXRlcmFsPiA8cmVwbGFjZWFibGU+dmFsdWU8L3JlcGxh Y2VhYmxlPnMuCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBJZiB0aGUg cGF0aCBleHByZXNzaW9uIHJldHVybnMgbXVsdGlwbGUgU1FML0pTT04gaXRlbXMsIGl0IG1pZ2h0 IGJlCisgICAgICAgIG5lY2Vzc2FyeSB0byB3cmFwIHRoZSByZXN1bHQgdXNpbmcgdGhlIDxsaXRl cmFsPldJVEggV1JBUFBFUjwvbGl0ZXJhbD4KKyAgICAgICAgY2xhdXNlIHRvIG1ha2UgaXQgYSB2 YWxpZCBKU09OIHN0cmluZy4gIElmIHRoZSB3cmFwcGVyIGlzCisgICAgICAgIDxsaXRlcmFsPlVO Q09ORElUSU9OQUw8L2xpdGVyYWw+LCBhbiBhcnJheSB3cmFwcGVyIHdpbGwgYWx3YXlzIGJlCisg ICAgICAgIGFwcGxpZWQsIGV2ZW4gaWYgdGhlIHJldHVybmVkIHZhbHVlIGlzIGFscmVhZHkgYSBz aW5nbGUgSlNPTiBvYmplY3QKKyAgICAgICAgb3IgYW4gYXJyYXkuICBJZiBpdCBpcyA8bGl0ZXJh bD5DT05ESVRJT05BTDwvbGl0ZXJhbD4sIGl0IHdpbGwgbm90IGJlCisgICAgICAgIGFwcGxpZWQg dG8gYSBzaW5nbGUgSlNPTiBvYmplY3Qgb3IgYW4gYXJyYXkuCisgICAgICAgIDxsaXRlcmFsPlVO Q09ORElUSU9OQUw8L2xpdGVyYWw+IGlzIHRoZSBkZWZhdWx0LgorICAgICAgIDwvcGFyYT4KKyAg ICAgICA8cGFyYT4KKyAgICAgICAgSWYgdGhlIHJlc3VsdCBpcyBhIHNjYWxhciBzdHJpbmcsIGJ5 IGRlZmF1bHQsIHRoZSByZXR1cm5lZCB2YWx1ZSB3aWxsCisgICAgICAgIGJlIHN1cnJvdW5kZWQg YnkgcXVvdGVzLCBtYWtpbmcgaXQgYSB2YWxpZCBKU09OIHZhbHVlLiAgSXQgY2FuIGJlIG1hZGUK KyAgICAgICAgZXhwbGljaXQgYnkgc3BlY2lmeWluZyA8bGl0ZXJhbD5LRUVQIFFVT1RFUzwvbGl0 ZXJhbD4uICBDb252ZXJzZWx5LAorICAgICAgICBxdW90ZXMgY2FuIGJlIG9taXR0ZWQgYnkgc3Bl Y2lmeWluZyA8bGl0ZXJhbD5PTUlUIFFVT1RFUzwvbGl0ZXJhbD4uCisgICAgICAgIE5vdGUgdGhh dCA8bGl0ZXJhbD5PTUlUIFFVT1RFUzwvbGl0ZXJhbD4gY2Fubm90IGJlIHNwZWNpZmllZCB3aGVu CisgICAgICAgIDxsaXRlcmFsPldJVEggV1JBUFBFUjwvbGl0ZXJhbD4gaXMgYWxzbyBzcGVjaWZp ZWQuCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgPGxpdGVyYWw+ UkVUVVJOSU5HPC9saXRlcmFsPiBjbGF1c2UgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUKKyAg ICAgICAgPHJlcGxhY2VhYmxlPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+IG9mIHRoZSByZXN1bHQg dmFsdWUuICBJdCBtdXN0CisgICAgICAgIGJlIGEgdHlwZSBmb3Igd2hpY2ggdGhlcmUgaXMgYSBj YXN0IGZyb20gPHR5cGU+dGV4dDwvdHlwZT4gdG8gdGhhdCB0eXBlLgorICAgICAgICBJZiBubyA8 bGl0ZXJhbD5SRVRVUk5JTkc8L2xpdGVyYWw+IGlzIHNwZWNpZmllZCwgdGhlIHJldHVybmVkIHZh bHVlIHdpbGwKKyAgICAgICAgYmUgb2YgdHlwZSA8dHlwZT5qc29uYjwvdHlwZT4uCisgICAgICAg PC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgPGxpdGVyYWw+T04gRU1QVFk8L2xp dGVyYWw+IGNsYXVzZSBzcGVjaWZpZXMgdGhlIGJlaGF2aW9yIGlmIHRoZQorICAgICAgICA8cmVw bGFjZWFibGU+cGF0aF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4geWllbGRzIG5vIHZhbHVlIGF0 IGFsbDsgdGhlCisgICAgICAgIGRlZmF1bHQgd2hlbiA8bGl0ZXJhbD5PTiBFTVBUWTwvbGl0ZXJh bD4gaXMgbm90IHNwZWNpZmllZCBpcyB0byByZXR1cm4KKyAgICAgICAgYSBudWxsIHZhbHVlLgor ICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxsaXRlcmFsPk9OIEVS Uk9SPC9saXRlcmFsPiBjbGF1c2Ugc3BlY2lmaWVzIHRoZQorICAgICAgICBiZWhhdmlvciBpZiBh biBlcnJvciBvY2N1cnMgd2hlbiBldmFsdWF0aW5nCisgICAgICAgIDxyZXBsYWNlYWJsZT5wYXRo X2V4cHJlc3Npb248L3JlcGxhY2VhYmxlPiwgaW5jbHVkaW5nIHRoZSBvcGVyYXRpb24gdG8KKyAg ICAgICAgY2FzdCB0aGUgcmVzdWx0IHRoZSBvdXRwdXQgdHlwZSwgb3IgZHVyaW5nIHRoZSBleGVj dXRpb24gb2YKKyAgICAgICAgPGxpdGVyYWw+T04gRU1QVFk8L2xpdGVyYWw+IGJlaGF2aW9yICh0 aGF0IHdhcyBjYXVzZWQgYnkgZW1wdHkgcmVzdWx0CisgICAgICAgIG9mIDxyZXBsYWNlYWJsZT5w YXRoX2V4cHJlc3Npb248L3JlcGxhY2VhYmxlPiBldmFsdWF0aW9uKTsgdGhlIGRlZmF1bHQKKyAg ICAgICAgd2hlbiA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0ZXJhbD4gaXMgbm90IHNwZWNpZmllZCBp cyB0byByZXR1cm4gYSBudWxsCisgICAgICAgIHZhbHVlLgorICAgICAgIDwvcGFyYT4KKyAgICAg ICA8cGFyYT4KKyAgICAgICAgRXhhbXBsZXM6CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJh PgorICAgICAgICA8bGl0ZXJhbD5zZWxlY3QganNvbl9xdWVyeShqc29uYiAnWzEsWzIsM10sbnVs bF0nLCAnbGF4ICRbKl1bMV0nIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUik8L2xpdGVyYWw+Cisg ICAgICAgIDxyZXR1cm52YWx1ZT5bM108L3JldHVybnZhbHVlPgorICAgICAgIDwvcGFyYT4KKyAg ICAgICA8cGFyYT4KKyAgICAgICAgPGxpdGVyYWw+c2VsZWN0IGpzb25fcXVlcnkoanNvbmIgJ3si YSI6ICJbMSwgMl0ifScsICdsYXggJC5hJyBPTUlUIFFVT1RFUyk7PC9saXRlcmFsPgorICAgICAg ICA8cmV0dXJudmFsdWU+WzEsIDJdPC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAg ICAgPHBhcmE+CisgICAgICAgIDxsaXRlcmFsPnNlbGVjdCBqc29uX3F1ZXJ5KGpzb25iICd7ImEi OiAiWzEsIDJdIn0nLCAnbGF4ICQuYScgUkVUVVJOSU5HIGludFtdIE9NSVQgUVVPVEVTIEVSUk9S IE9OIEVSUk9SKTs8L2xpdGVyYWw+CisgICAgICAgIDxyZXR1cm52YWx1ZT48L3JldHVybnZhbHVl PgorPHByb2dyYW1saXN0aW5nPgorRVJST1I6ICBtYWxmb3JtZWQgYXJyYXkgbGl0ZXJhbDogIlsx LCAyXSIKK0RFVEFJTDogIE1pc3NpbmcgIl0iIGFmdGVyIGFycmF5IGRpbWVuc2lvbnMuCis8L3By b2dyYW1saXN0aW5nPgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93 PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJh IHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgPGluZGV4dGVybT48cHJpbWFyeT5qc29u X3ZhbHVlPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPgorICAgICAgICA8ZnVuY3Rpb24+anNvbl92YWx1 ZTwvZnVuY3Rpb24+ICgKKyAgICAgICAgPHJlcGxhY2VhYmxlPmNvbnRleHRfaXRlbTwvcmVwbGFj ZWFibGU+LCA8cmVwbGFjZWFibGU+cGF0aF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4KKyAgICAg ICAgPG9wdGlvbmFsPiA8bGl0ZXJhbD5QQVNTSU5HPC9saXRlcmFsPiB7IDxyZXBsYWNlYWJsZT52 YWx1ZTwvcmVwbGFjZWFibGU+IDxsaXRlcmFsPkFTPC9saXRlcmFsPiA8cmVwbGFjZWFibGU+dmFy bmFtZTwvcmVwbGFjZWFibGU+IH0gPG9wdGlvbmFsPiwgLi4uPC9vcHRpb25hbD48L29wdGlvbmFs PgorICAgICAgICA8b3B0aW9uYWw+IDxsaXRlcmFsPlJFVFVSTklORzwvbGl0ZXJhbD4gPHJlcGxh Y2VhYmxlPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRp b25hbD4geyA8bGl0ZXJhbD5FUlJPUjwvbGl0ZXJhbD4gfCA8bGl0ZXJhbD5OVUxMPC9saXRlcmFs PiB8IDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9y ZXBsYWNlYWJsZT4gfSA8bGl0ZXJhbD5PTiBFTVBUWTwvbGl0ZXJhbD4gPC9vcHRpb25hbD4KKyAg ICAgICAgPG9wdGlvbmFsPiB7IDxsaXRlcmFsPkVSUk9SPC9saXRlcmFsPiB8IDxsaXRlcmFsPk5V TEw8L2xpdGVyYWw+IHwgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPmV4 cHJlc3Npb248L3JlcGxhY2VhYmxlPiB9IDxsaXRlcmFsPk9OIEVSUk9SPC9saXRlcmFsPiA8L29w dGlvbmFsPikKKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFJldHVybnMg dGhlIHJlc3VsdCBvZiBhcHBseWluZyB0aGUKKyAgICAgICAgPHJlcGxhY2VhYmxlPnBhdGhfZXhw cmVzc2lvbjwvcmVwbGFjZWFibGU+IHRvIHRoZQorICAgICAgICA8cmVwbGFjZWFibGU+Y29udGV4 dF9pdGVtPC9yZXBsYWNlYWJsZT4gdXNpbmcgdGhlCisgICAgICAgIDxsaXRlcmFsPlBBU1NJTkc8 L2xpdGVyYWw+IDxyZXBsYWNlYWJsZT52YWx1ZTwvcmVwbGFjZWFibGU+cy4KKyAgICAgICA8L3Bh cmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBleHRyYWN0ZWQgdmFsdWUgbXVzdCBiZSBh IHNpbmdsZSA8YWNyb255bT5TUUwvSlNPTjwvYWNyb255bT4KKyAgICAgICAgc2NhbGFyIGl0ZW0u IEZvciByZXN1bHRzIHRoYXQgYXJlIG9iamVjdHMgb3IgYXJyYXlzLCB1c2UgdGhlCisgICAgICAg IDxmdW5jdGlvbj5qc29uX3F1ZXJ5PC9mdW5jdGlvbj4gZnVuY3Rpb24gaW5zdGVhZC4KKyAgICAg ICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSA8bGl0ZXJhbD5SRVRVUk5JTkc8 L2xpdGVyYWw+IGNsYXVzZSBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZQorICAgICAgICA8cmVw bGFjZWFibGU+ZGF0YV90eXBlPC9yZXBsYWNlYWJsZT4gb2YgdGhlIHJlc3VsdCB2YWx1ZS4gIEl0 IG11c3QKKyAgICAgICAgYmUgYSB0eXBlIGZvciB3aGljaCB0aGVyZSBleGlzdCBjYXN0cyBmcm9t IGFsbCBwb3NzaWJsZSBKU09OIHNjYWxhcgorICAgICAgICB2YWx1ZSB0eXBlcyAoPHR5cGU+dGV4 dDwvdHlwZT4sIDx0eXBlPmJvb2xlYW48L3R5cGU+LCA8dHlwZT5udW1lcmljPC90eXBlPiwKKyAg ICAgICAgYW5kIHZhcmlvdXMgZGF0ZXRpbWUgdHlwZXMpIHRvIHRoYXQgdHlwZS4gIEJ5IGRlZmF1 bHQsIHRoZSByZXR1cm5lZAorICAgICAgICB2YWx1ZSB3aWxsIGJlIG9mIHR5cGUgPHR5cGU+dGV4 dDwvdHlwZT4uCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgPGxp dGVyYWw+T04gRVJST1I8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5PTiBFTVBUWTwvbGl0ZXJhbD4K KyAgICAgICAgY2xhdXNlcyBoYXZlIHNpbWlsYXIgc2VtYW50aWNzIGFzIG1lbnRpb25lZCBpbiB0 aGUgZGVzY3JpcHRpb24gb2YKKyAgICAgICAgPGZ1bmN0aW9uPmpzb25fcXVlcnk8L2Z1bmN0aW9u Pi4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIE5vdGUgdGhhdCBzY2Fs YXIgc3RyaW5ncyByZXR1cm5lZCBieSA8ZnVuY3Rpb24+anNvbl92YWx1ZTwvZnVuY3Rpb24+Cisg ICAgICAgIGFsd2F5cyBoYXZlIHRoZWlyIHF1b3RlcyByZW1vdmVkLCBlcXVpdmFsZW50IHRvIHNw ZWNpZnlpbmcKKyAgICAgICAgPGxpdGVyYWw+T01JVCBRVU9URVM8L2xpdGVyYWw+IGluIDxmdW5j dGlvbj5qc29uX3F1ZXJ5PC9mdW5jdGlvbj4uCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJh PgorICAgICAgICBFeGFtcGxlczoKKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAg ICAgIDxsaXRlcmFsPnNlbGVjdCBqc29uX3ZhbHVlKGpzb25iICciMTIzLjQ1IicsICckJyBSRVRV Uk5JTkcgZmxvYXQpPC9saXRlcmFsPgorICAgICAgICA8cmV0dXJudmFsdWU+MTIzLjQ1PC9yZXR1 cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIDxsaXRlcmFs PnNlbGVjdCBqc29uX3ZhbHVlKGpzb25iICciMDM6MDQgMjAxNS0wMi0wMSInLCAnJC5kYXRldGlt ZSgiSEgyNDpNSSZuYnNwO1lZWVktTU0tREQiKScgUkVUVVJOSU5HIGRhdGUpPC9saXRlcmFsPgor ICAgICAgICA8cmV0dXJudmFsdWU+MjAxNS0wMi0wMTwvcmV0dXJudmFsdWU+CisgICAgICAgPC9w YXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICA8bGl0ZXJhbD5zZWxlY3QganNvbl92YWx1ZShq c29uYiAnWzEsMl0nLCAnc3RyaWN0ICRbKl0nIERFRkFVTFQgOSBPTiBFUlJPUik8L2xpdGVyYWw+ CisgICAgICAgIDxyZXR1cm52YWx1ZT45PC9yZXR1cm52YWx1ZT4KKyAgICAgIDwvcGFyYT48L2Vu dHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+ CisgIDwvc2VjdDI+CiAgPC9zZWN0MT4KIAogIDxzZWN0MSBpZD0iZnVuY3Rpb25zLXNlcXVlbmNl Ij4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dCBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dAppbmRleCA5MjVkMTVhMmMzLi44MGFj NTlmYmE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQK KysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0CkBAIC01NDcsMTUgKzU0 NywxNSBAQCBUODExCUJhc2ljIFNRTC9KU09OIGNvbnN0cnVjdG9yIGZ1bmN0aW9ucwkJCVlFUwog VDgxMglTUUwvSlNPTjogSlNPTl9PQkpFQ1RBR0cJCQlZRVMJCiBUODEzCVNRTC9KU09OOiBKU09O X0FSUkFZQUdHIHdpdGggT1JERVIgQlkJCQlZRVMJCiBUODE0CUNvbG9uIGluIEpTT05fT0JKRUNU IG9yIEpTT05fT0JKRUNUQUdHCQkJWUVTCQotVDgyMQlCYXNpYyBTUUwvSlNPTiBxdWVyeSBvcGVy YXRvcnMJCQlOTwkKK1Q4MjEJQmFzaWMgU1FML0pTT04gcXVlcnkgb3BlcmF0b3JzCQkJWUVTCQog VDgyMglTUUwvSlNPTjogSVMgSlNPTiBXSVRIIFVOSVFVRSBLRVlTIHByZWRpY2F0ZQkJCVlFUwkK LVQ4MjMJU1FML0pTT046IFBBU1NJTkcgY2xhdXNlCQkJTk8JCitUODIzCVNRTC9KU09OOiBQQVNT SU5HIGNsYXVzZQkJCVlFUwkKIFQ4MjQJSlNPTl9UQUJMRTogc3BlY2lmaWMgUExBTiBjbGF1c2UJ CQlOTwkKLVQ4MjUJU1FML0pTT046IE9OIEVNUFRZIGFuZCBPTiBFUlJPUiBjbGF1c2VzCQkJTk8J Ci1UODI2CUdlbmVyYWwgdmFsdWUgZXhwcmVzc2lvbiBpbiBPTiBFUlJPUiBvciBPTiBFTVBUWSBj bGF1c2VzCQkJTk8JCitUODI1CVNRTC9KU09OOiBPTiBFTVBUWSBhbmQgT04gRVJST1IgY2xhdXNl cwkJCVlFUwkKK1Q4MjYJR2VuZXJhbCB2YWx1ZSBleHByZXNzaW9uIGluIE9OIEVSUk9SIG9yIE9O IEVNUFRZIGNsYXVzZXMJCQlZRVMJCiBUODI3CUpTT05fVEFCTEU6IHNpYmxpbmcgTkVTVEVEIENP TFVNTlMgY2xhdXNlcwkJCU5PCQotVDgyOAlKU09OX1FVRVJZCQkJTk8JCi1UODI5CUpTT05fUVVF Ulk6IGFycmF5IHdyYXBwZXIgb3B0aW9ucwkJCU5PCQorVDgyOAlKU09OX1FVRVJZCQkJWUVTCQor VDgyOQlKU09OX1FVRVJZOiBhcnJheSB3cmFwcGVyIG9wdGlvbnMJCQlZRVMJCiBUODMwCUVuZm9y Y2luZyB1bmlxdWUga2V5cyBpbiBTUUwvSlNPTiBjb25zdHJ1Y3RvciBmdW5jdGlvbnMJCQlZRVMJ CiBUODMxCVNRTC9KU09OIHBhdGggbGFuZ3VhZ2U6IHN0cmljdCBtb2RlCQkJWUVTCQogVDgzMglT UUwvSlNPTiBwYXRoIGxhbmd1YWdlOiBpdGVtIG1ldGhvZAkJCVlFUwkKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj RXhwci5jCmluZGV4IGZmZDNjYTRlNjEuLjU0MzRkZjgyOWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4 cHIuYwpAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCiAjaW5jbHVk ZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9qc29uZnVuY3MuaCIKKyNpbmNs dWRlICJ1dGlscy9qc29ucGF0aC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2lu Y2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAKQEAgLTg3LDYgKzg4LDEyIEBAIHN0YXRpYyB2b2lk IEV4ZWNCdWlsZEFnZ1RyYW5zQ2FsbChFeHByU3RhdGUgKnN0YXRlLCBBZ2dTdGF0ZSAqYWdnc3Rh dGUsCiAJCQkJCQkJCSAgRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIEFnZ1N0YXRlUGVyVHJhbnMg cGVydHJhbnMsCiAJCQkJCQkJCSAgaW50IHRyYW5zbm8sIGludCBzZXRubywgaW50IHNldG9mZiwg Ym9vbCBpc2hhc2gsCiAJCQkJCQkJCSAgYm9vbCBudWxsY2hlY2spOworc3RhdGljIHZvaWQgRXhl Y0luaXRKc29uRXhwcihKc29uRXhwciAqamV4cHIsIEV4cHJTdGF0ZSAqc3RhdGUsCisJCQkJCQkJ IERhdHVtICpyZXN2LCBib29sICpyZXNudWxsLAorCQkJCQkJCSBFeHByRXZhbFN0ZXAgKnNjcmF0 Y2gpOworc3RhdGljIGludAlFeGVjSW5pdEpzb25FeHByQ29lcmNpb24oRXhwclN0YXRlICpzdGF0 ZSwgTm9kZSAqY29lcmNpb24sCisJCQkJCQkJCQkgRXJyb3JTYXZlQ29udGV4dCAqZXNjb250ZXh0 LAorCQkJCQkJCQkJIERhdHVtICpyZXN2LCBib29sICpyZXNudWxsKTsKIAogCiAvKgpAQCAtMjQx Miw2ICsyNDE5LDE0IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0 YXRlLAogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgVF9Kc29uRXhwcjoKKwkJCXsKKwkJCQlK c29uRXhwciAgICpqZXhwciA9IGNhc3ROb2RlKEpzb25FeHByLCBub2RlKTsKKworCQkJCUV4ZWNJ bml0SnNvbkV4cHIoamV4cHIsIHN0YXRlLCByZXN2LCByZXNudWxsLCAmc2NyYXRjaCk7CisJCQkJ YnJlYWs7CisJCQl9CisKIAkJY2FzZSBUX051bGxUZXN0OgogCQkJewogCQkJCU51bGxUZXN0ICAg Km50ZXN0ID0gKE51bGxUZXN0ICopIG5vZGU7CkBAIC00MTgwLDMgKzQxOTUsMzIyIEBAIEV4ZWNC dWlsZFBhcmFtU2V0RXF1YWwoVHVwbGVEZXNjIGRlc2MsCiAKIAlyZXR1cm4gc3RhdGU7CiB9CisK Ky8qCisgKiBQdXNoIHN0ZXBzIHRvIGV2YWx1YXRlIGEgSnNvbkV4cHIgYW5kIGl0cyB2YXJpb3Vz IHN1YnNpZGlhcnkgZXhwcmVzc2lvbnMuCisgKi8KK3N0YXRpYyB2b2lkCitFeGVjSW5pdEpzb25F eHByKEpzb25FeHByICpqZXhwciwgRXhwclN0YXRlICpzdGF0ZSwKKwkJCQkgRGF0dW0gKnJlc3Ys IGJvb2wgKnJlc251bGwsCisJCQkJIEV4cHJFdmFsU3RlcCAqc2NyYXRjaCkKK3sKKwlKc29uRXhw clN0YXRlICpqc2VzdGF0ZSA9IHBhbGxvYzAoc2l6ZW9mKEpzb25FeHByU3RhdGUpKTsKKwlMaXN0 Q2VsbCAgICphcmdleHBybGM7CisJTGlzdENlbGwgICAqYXJnbmFtZWxjOworCUxpc3QJICAgKmp1 bXBzX2lmX3NraXAgPSBOSUw7CisJTGlzdAkgICAqanVtcHNfdG9fY29lcmNlX2ZpbmlzaCA9IE5J TDsKKwlMaXN0CSAgICpqdW1wc190b19lbmQgPSBOSUw7CisJTGlzdENlbGwgICAqbGM7CisJRXhw ckV2YWxTdGVwICphczsKKworCWpzZXN0YXRlLT5qc2V4cHIgPSBqZXhwcjsKKworCS8qCisJICog RXZhbHVhdGUgZm9ybWF0dGVkX2V4cHIgc3RvcmluZyB0aGUgcmVzdWx0IGludG8KKwkgKiBqc2Vz dGF0ZS0+Zm9ybWF0dGVkX2V4cHIuCisJICovCisJRXhlY0luaXRFeHByUmVjKChFeHByICopIGpl eHByLT5mb3JtYXR0ZWRfZXhwciwgc3RhdGUsCisJCQkJCSZqc2VzdGF0ZS0+Zm9ybWF0dGVkX2V4 cHIudmFsdWUsCisJCQkJCSZqc2VzdGF0ZS0+Zm9ybWF0dGVkX2V4cHIuaXNudWxsKTsKKworCS8q IFN0ZXBzIHRvIGp1bXAgdG8gZW5kIGlmIGZvcm1hdHRlZF9leHByIGV2YWx1YXRlcyB0byBOVUxM ICovCisJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KVU1QX0lGX05VTEw7CisJc2NyYXRjaC0+cmVz bnVsbCA9ICZqc2VzdGF0ZS0+Zm9ybWF0dGVkX2V4cHIuaXNudWxsOworCXNjcmF0Y2gtPmQuanVt cC5qdW1wZG9uZSA9IC0xOwkvKiBzZXQgYmVsb3cgKi8KKwlqdW1wc19pZl9za2lwID0gbGFwcGVu ZF9pbnQoanVtcHNfaWZfc2tpcCwgc3RhdGUtPnN0ZXBzX2xlbik7CisJRXhwckV2YWxQdXNoU3Rl cChzdGF0ZSwgc2NyYXRjaCk7CisKKwkvKgorCSAqIEV2YWx1YXRlIHBhdGhzcGVjIGV4cHJlc3Np b24gc3RvcmluZyB0aGUgcmVzdWx0IGludG8KKwkgKiBqc2VzdGF0ZS0+cGF0aHNwZWMuCisJICov CisJRXhlY0luaXRFeHByUmVjKChFeHByICopIGpleHByLT5wYXRoX3NwZWMsIHN0YXRlLAorCQkJ CQkmanNlc3RhdGUtPnBhdGhzcGVjLnZhbHVlLAorCQkJCQkmanNlc3RhdGUtPnBhdGhzcGVjLmlz bnVsbCk7CisKKwkvKiBTdGVwcyB0byBKVU1QIHRvIGVuZCBpZiBwYXRoc3BlYyBldmFsdWF0ZXMg dG8gTlVMTCAqLworCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1BfSlVNUF9JRl9OVUxMOworCXNjcmF0 Y2gtPnJlc251bGwgPSAmanNlc3RhdGUtPnBhdGhzcGVjLmlzbnVsbDsKKwlzY3JhdGNoLT5kLmp1 bXAuanVtcGRvbmUgPSAtMTsJLyogc2V0IGJlbG93ICovCisJanVtcHNfaWZfc2tpcCA9IGxhcHBl bmRfaW50KGp1bXBzX2lmX3NraXAsIHN0YXRlLT5zdGVwc19sZW4pOworCUV4cHJFdmFsUHVzaFN0 ZXAoc3RhdGUsIHNjcmF0Y2gpOworCisJLyogU3RlcHMgdG8gY29tcHV0ZSBQQVNTSU5HIGFyZ3Mu ICovCisJanNlc3RhdGUtPmFyZ3MgPSBOSUw7CisJZm9yYm90aChhcmdleHBybGMsIGpleHByLT5w YXNzaW5nX3ZhbHVlcywKKwkJCWFyZ25hbWVsYywgamV4cHItPnBhc3NpbmdfbmFtZXMpCisJewor CQlFeHByCSAgICphcmdleHByID0gKEV4cHIgKikgbGZpcnN0KGFyZ2V4cHJsYyk7CisJCVN0cmlu ZwkgICAqYXJnbmFtZSA9IGxmaXJzdF9ub2RlKFN0cmluZywgYXJnbmFtZWxjKTsKKwkJSnNvblBh dGhWYXJpYWJsZSAqdmFyID0gcGFsbG9jKHNpemVvZigqdmFyKSk7CisKKwkJdmFyLT5uYW1lID0g YXJnbmFtZS0+c3ZhbDsKKwkJdmFyLT50eXBpZCA9IGV4cHJUeXBlKChOb2RlICopIGFyZ2V4cHIp OworCQl2YXItPnR5cG1vZCA9IGV4cHJUeXBtb2QoKE5vZGUgKikgYXJnZXhwcik7CisKKwkJRXhl Y0luaXRFeHByUmVjKChFeHByICopIGFyZ2V4cHIsIHN0YXRlLCAmdmFyLT52YWx1ZSwgJnZhci0+ aXNudWxsKTsKKworCQlqc2VzdGF0ZS0+YXJncyA9IGxhcHBlbmQoanNlc3RhdGUtPmFyZ3MsIHZh cik7CisJfQorCisJLyogU3RlcCBmb3IganNvbnBhdGggZXZhbHVhdGlvbjsgc2VlIEV4ZWNFdmFs SnNvbkV4cHJQYXRoKCkuICovCisJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KU09ORVhQUl9QQVRI OworCXNjcmF0Y2gtPnJlc3ZhbHVlID0gcmVzdjsKKwlzY3JhdGNoLT5yZXNudWxsID0gcmVzbnVs bDsKKwlzY3JhdGNoLT5kLmpzb25leHByLmpzZXN0YXRlID0ganNlc3RhdGU7CisJRXhwckV2YWxQ dXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7CisKKwkvKgorCSAqIFN0ZXAgdG8gcmV0dXJuIE5VTEwg c2tpcHBpbmcgdGhlIEVFT1BfSlNPTkVYUFJfUEFUSCBzdGVwIHdoZW4gZWl0aGVyCisJICogZm9y bWF0dGVkX2V4cHIgb3IgcGF0aHNwZWMgaXMgTlVMTC4gIEFkanVzdCBqdW1wIHRhcmdldCBhZGRy ZXNzZXMgb2YKKwkgKiBKVU1QcyB0aGF0IHdlIGFkZGVkIGFib3ZlLgorCSAqLworCWZvcmVhY2go bGMsIGp1bXBzX2lmX3NraXApCisJeworCQlhcyA9ICZzdGF0ZS0+c3RlcHNbbGZpcnN0X2ludChs YyldOworCQlhcy0+ZC5qdW1wLmp1bXBkb25lID0gc3RhdGUtPnN0ZXBzX2xlbjsKKwl9CisJc2Ny YXRjaC0+b3Bjb2RlID0gRUVPUF9DT05TVDsKKwlzY3JhdGNoLT5yZXN2YWx1ZSA9IHJlc3Y7CisJ c2NyYXRjaC0+cmVzbnVsbCA9IHJlc251bGw7CisJc2NyYXRjaC0+ZC5jb25zdHZhbC52YWx1ZSA9 IChEYXR1bSkgMDsKKwlzY3JhdGNoLT5kLmNvbnN0dmFsLmlzbnVsbCA9IHRydWU7CisJRXhwckV2 YWxQdXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7CisKKwkvKiBKdW1wIHRvIGNvZXJjZSB0aGUgTlVM TCB1c2luZyByZXN1bHRfY29lcmNpb24gaWYgcHJlc2VudC4gKi8KKwlpZiAoamV4cHItPnJlc3Vs dF9jb2VyY2lvbikKKwl7CisJCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1BfSlVNUDsKKwkJc2NyYXRj aC0+ZC5qdW1wLmp1bXBkb25lID0gc3RhdGUtPnN0ZXBzX2xlbiArIDE7CisJCUV4cHJFdmFsUHVz aFN0ZXAoc3RhdGUsIHNjcmF0Y2gpOworCX0KKworCS8qCisJICogU3RlcHMgdG8gY29lcmNlIHRo ZSByZXN1bHQgdmFsdWUgY29tcHV0ZWQgYnkgRUVPUF9KU09ORVhQUl9QQVRILiBUbworCSAqIGhh bmRsZSBjb2VyY2lvbiBlcnJvcnMgc29mdGx5LCB1c2UgdGhlIGZvbGxvd2luZyBFcnJvclNhdmVD b250ZXh0IHdoZW4KKwkgKiBpbml0aWFsaXppbmcgdGhlIGNvZXJjaW9uIGV4cHJlc3Npb25zLCBp bmNsdWRpbmcgYW55IEpzb25Db2VyY2lvbgorCSAqIG5vZGVzLgorCSAqLworCWpzZXN0YXRlLT5l c2NvbnRleHQudHlwZSA9IFRfRXJyb3JTYXZlQ29udGV4dDsKKwlpZiAoamV4cHItPnJlc3VsdF9j b2VyY2lvbikKKwl7CisJCWpzZXN0YXRlLT5qdW1wX2V2YWxfcmVzdWx0X2NvZXJjaW9uID0KKwkJ CUV4ZWNJbml0SnNvbkV4cHJDb2VyY2lvbihzdGF0ZSwgamV4cHItPnJlc3VsdF9jb2VyY2lvbiwK KwkJCQkJCQkJCSBqZXhwci0+b25fZXJyb3ItPmJ0eXBlICE9IEpTT05fQkVIQVZJT1JfRVJST1Ig PworCQkJCQkJCQkJICZqc2VzdGF0ZS0+ZXNjb250ZXh0IDogTlVMTCwKKwkJCQkJCQkJCSByZXN2 LCByZXNudWxsKTsKKwkJLyogSnVtcCB0byBDT0VSQ0lPTl9GSU5JU0guICovCisJCXNjcmF0Y2gt Pm9wY29kZSA9IEVFT1BfSlVNUDsKKwkJc2NyYXRjaC0+ZC5qdW1wLmp1bXBkb25lID0gLTE7CS8q IHNldCBiZWxvdyAqLworCQlqdW1wc190b19jb2VyY2VfZmluaXNoID0gbGFwcGVuZF9pbnQoanVt cHNfdG9fY29lcmNlX2ZpbmlzaCwKKwkJCQkJCQkJCQkJIHN0YXRlLT5zdGVwc19sZW4pOworCQlF eHByRXZhbFB1c2hTdGVwKHN0YXRlLCBzY3JhdGNoKTsKKwl9CisJZWxzZQorCQlqc2VzdGF0ZS0+ anVtcF9ldmFsX3Jlc3VsdF9jb2VyY2lvbiA9IC0xOworCisJLyogU3RlcHMgZm9yIGNvZXJjaW5n IEpzb25JdGVtVHlwZSB2YWx1ZXMgcmV0dXJuZWQgYnkgSnNvblBhdGhWYWx1ZSgpLiAqLworCWlm IChqZXhwci0+aXRlbV9jb2VyY2lvbnMpCisJeworCQkvKgorCQkgKiBIZXJlIHdlIGNyZWF0ZSB0 aGUgc3RlcHMgZm9yIGVhY2ggSnNvbkl0ZW1UeXBlIHR5cGUncyBjb2VyY2lvbgorCQkgKiBleHBy ZXNzaW9uIGFuZCBhbHNvIHN0b3JlIGEgZmxhZyB3aGV0aGVyIHRoZSBjb2VyY2lvbiBpcyBhIGNh c3QKKwkJICogZXhwcmVzc2lvbi4gIEV4ZWNQcmVwYXJlSnNvbkl0ZW1Db2VyY2lvbigpIGNhbGxl ZCBieQorCQkgKiBFeGVjRXZhbEpzb25FeHByUGF0aCgpIHdpbGwgbWFwIGEgZ2l2ZW4gSnNvbmJW YWx1ZSByZXR1cm5lZCBieQorCQkgKiBKc29uUGF0aFZhbHVlKCkgdG8gaXRzICBKc29uSXRlbVR5 cGUncyBleHByZXNzaW9uJ3Mgc3RlcCBhZGRyZXNzCisJCSAqIGFuZCB0aGUgZmxhZyBieSBpbmRl eGluZyB0aGUgZm9sbG93aW5nIGFycmF5cyB3aXRoIEpzb25JdGVtVHlwZQorCQkgKiBlbnVtIHZh bHVlLgorCQkgKi8KKwkJanNlc3RhdGUtPm51bV9pdGVtX2NvZXJjaW9ucyA9IGxpc3RfbGVuZ3Ro KGpleHByLT5pdGVtX2NvZXJjaW9ucyk7CisJCWpzZXN0YXRlLT5ldmFsX2l0ZW1fY29lcmNpb25f anVtcHMgPSAoaW50ICopCisJCQlwYWxsb2MoanNlc3RhdGUtPm51bV9pdGVtX2NvZXJjaW9ucyAq IHNpemVvZihpbnQpKTsKKwkJanNlc3RhdGUtPml0ZW1fY29lcmNpb25faXNfY2FzdCA9IChib29s ICopCisJCQlwYWxsb2MwKGpzZXN0YXRlLT5udW1faXRlbV9jb2VyY2lvbnMgKiBzaXplb2YoYm9v bCkpOworCQlmb3JlYWNoKGxjLCBqZXhwci0+aXRlbV9jb2VyY2lvbnMpCisJCXsKKwkJCUpzb25J dGVtQ29lcmNpb24gKml0ZW1fY29lcmNpb24gPSBsZmlyc3QobGMpOworCQkJTm9kZQkgICAqY29l cmNpb24gPSBpdGVtX2NvZXJjaW9uLT5jb2VyY2lvbjsKKworCQkJanNlc3RhdGUtPml0ZW1fY29l cmNpb25faXNfY2FzdFtpdGVtX2NvZXJjaW9uLT5pdGVtX3R5cGVdID0KKwkJCQkoY29lcmNpb24g IT0gTlVMTCAmJiAhSXNBKGNvZXJjaW9uLCBKc29uQ29lcmNpb24pKTsKKwkJCWpzZXN0YXRlLT5l dmFsX2l0ZW1fY29lcmNpb25fanVtcHNbaXRlbV9jb2VyY2lvbi0+aXRlbV90eXBlXSA9CisJCQkJ RXhlY0luaXRKc29uRXhwckNvZXJjaW9uKHN0YXRlLCBjb2VyY2lvbiwKKwkJCQkJCQkJCQkgamV4 cHItPm9uX2Vycm9yLT5idHlwZSAhPSBKU09OX0JFSEFWSU9SX0VSUk9SID8KKwkJCQkJCQkJCQkg JmpzZXN0YXRlLT5lc2NvbnRleHQgOiBOVUxMLAorCQkJCQkJCQkJCSByZXN2LCByZXNudWxsKTsK KworCQkJLyogSnVtcCB0byBDT0VSQ0lPTl9GSU5JU0guICovCisJCQlzY3JhdGNoLT5vcGNvZGUg PSBFRU9QX0pVTVA7CisJCQlzY3JhdGNoLT5kLmp1bXAuanVtcGRvbmUgPSAtMTsJLyogc2V0IGJl bG93ICovCisJCQlqdW1wc190b19jb2VyY2VfZmluaXNoID0gbGFwcGVuZF9pbnQoanVtcHNfdG9f Y29lcmNlX2ZpbmlzaCwKKwkJCQkJCQkJCQkJCSBzdGF0ZS0+c3RlcHNfbGVuKTsKKwkJCUV4cHJF dmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gpOworCQl9CisJfQorCisJLyoKKwkgKiBBZGQgc3Rl cCB0byByZXNldCB0aGUgRXJyb3JTYXZlQ29udGV4dCBhbmQgc2V0IEpzb25FeHByU3RhdGUuZXJy b3IgaWYKKwkgKiB0aGUgY29lcmNpb24gZXZhbHVhdGlvbiByYW4gaW50byBhbiBlcnJvciBidXQg d2FzIG5vdCB0aHJvd24gYmVjYXVzZSBvZgorCSAqIHRoZSBPTiBFUlJPUiBiZWhhdmlvci4KKwkg Ki8KKwlpZiAoamV4cHItPnJlc3VsdF9jb2VyY2lvbiB8fCBqZXhwci0+aXRlbV9jb2VyY2lvbnMp CisJeworCQlmb3JlYWNoKGxjLCBqdW1wc190b19jb2VyY2VfZmluaXNoKQorCQl7CisJCQlhcyA9 ICZzdGF0ZS0+c3RlcHNbbGZpcnN0X2ludChsYyldOworCQkJYXMtPmQuanVtcC5qdW1wZG9uZSA9 IHN0YXRlLT5zdGVwc19sZW47CisJCX0KKworCQlzY3JhdGNoLT5vcGNvZGUgPSBFRU9QX0pTT05F WFBSX0NPRVJDSU9OX0ZJTklTSDsKKwkJc2NyYXRjaC0+ZC5qc29uZXhwci5qc2VzdGF0ZSA9IGpz ZXN0YXRlOworCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCBzY3JhdGNoKTsKKwl9CisKKwlqc2Vz dGF0ZS0+anVtcF9lbXB0eSA9IGpzZXN0YXRlLT5qdW1wX2Vycm9yID0gLTE7CisKKwkvKgorCSAq IFN0ZXAgdG8gaGFuZGxlIE9OIEVSUk9SIGJlaGF2aW9ycy4gIFRoaXMgaGFuZGxlcyBib3RoIHRo ZSBlcnJvcnMgdGhhdAorCSAqIG9jY3VyIGR1cmluZyBFRU9QX0pTT05FWFBSX1BBVEggZXZhbHVh dGlvbiBhbmQgc3Vic2VxdWVudCBjb2VyY2lvbgorCSAqIGV2YWx1YXRpb24uCisJICovCisJaWYg KGpleHByLT5vbl9lcnJvciAmJgorCQlqZXhwci0+b25fZXJyb3ItPmJ0eXBlICE9IEpTT05fQkVI QVZJT1JfRVJST1IpCisJeworCQlqc2VzdGF0ZS0+anVtcF9lcnJvciA9IHN0YXRlLT5zdGVwc19s ZW47CisJCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1BfSlVNUF9JRl9OT1RfVFJVRTsKKworCQkvKgor CQkgKiBqc2VzdGF0ZS5lcnJvciBpcyBzZXQgYnkgRXhlY0V2YWxKc29uRXhwclBhdGgoKSBhbmQK KwkJICogRXhlY0V2YWxKc29uQ29lcmNpb25GaW5pc2goKS4KKwkJICovCisJCXNjcmF0Y2gtPnJl c3ZhbHVlID0gJmpzZXN0YXRlLT5lcnJvci52YWx1ZTsKKwkJc2NyYXRjaC0+cmVzbnVsbCA9ICZq c2VzdGF0ZS0+ZXJyb3IuaXNudWxsOworCQlzY3JhdGNoLT5kLmp1bXAuanVtcGRvbmUgPSAtMTsJ Lyogc2V0IGJlbG93ICovCisJCWp1bXBzX3RvX2VuZCA9IGxhcHBlbmRfaW50KGp1bXBzX3RvX2Vu ZCwgc3RhdGUtPnN0ZXBzX2xlbik7CisJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gp OworCisJCS8qIFN0ZXBzIHRvIGV2YWx1YXRlIHRoZSBPTiBFUlJPUiBleHByZXNzaW9uICovCisJ CUV4ZWNJbml0RXhwclJlYygoRXhwciAqKSBqZXhwci0+b25fZXJyb3ItPmV4cHIsCisJCQkJCQlz dGF0ZSwgcmVzdiwgcmVzbnVsbCk7CisKKwkJLyogU3RlcHMgdG8gY29lcmNlIHRoZSBPTiBFUlJP UiBleHByZXNzaW9uIGlmIG5lZWRlZCAqLworCQkodm9pZCkgRXhlY0luaXRKc29uRXhwckNvZXJj aW9uKHN0YXRlLAorCQkJCQkJCQkJCShOb2RlICopIGpleHByLT5vbl9lcnJvci0+Y29lcmNpb24s CisJCQkJCQkJCQkJJmpzZXN0YXRlLT5lc2NvbnRleHQsCisJCQkJCQkJCQkJcmVzdiwgcmVzbnVs bCk7CisKKwkJanVtcHNfdG9fZW5kID0gbGFwcGVuZF9pbnQoanVtcHNfdG9fZW5kLCBzdGF0ZS0+ c3RlcHNfbGVuKTsKKwkJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KVU1QOworCQlzY3JhdGNoLT5k Lmp1bXAuanVtcGRvbmUgPSAtMTsKKwkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7 CisJfQorCisJLyogU3RlcCB0byBoYW5kbGUgT04gRU1QVFkgYmVoYXZpb3JzLiAqLworCWlmIChq ZXhwci0+b25fZW1wdHkgIT0gTlVMTCAmJgorCQlqZXhwci0+b25fZW1wdHktPmJ0eXBlICE9IEpT T05fQkVIQVZJT1JfRVJST1IpCisJeworCQlqc2VzdGF0ZS0+anVtcF9lbXB0eSA9IHN0YXRlLT5z dGVwc19sZW47CisKKwkJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KVU1QX0lGX05PVF9UUlVFOwor CQlzY3JhdGNoLT5yZXN2YWx1ZSA9ICZqc2VzdGF0ZS0+ZW1wdHkudmFsdWU7CisJCXNjcmF0Y2gt PnJlc251bGwgPSAmanNlc3RhdGUtPmVtcHR5LmlzbnVsbDsKKwkJc2NyYXRjaC0+ZC5qdW1wLmp1 bXBkb25lID0gLTE7CS8qIHNldCBiZWxvdyAqLworCQlqdW1wc190b19lbmQgPSBsYXBwZW5kX2lu dChqdW1wc190b19lbmQsIHN0YXRlLT5zdGVwc19sZW4pOworCQlFeHByRXZhbFB1c2hTdGVwKHN0 YXRlLCBzY3JhdGNoKTsKKworCQkvKiBTdGVwcyB0byBldmFsdWF0ZSB0aGUgT04gRU1QVFkgZXhw cmVzc2lvbiAqLworCQlFeGVjSW5pdEV4cHJSZWMoKEV4cHIgKikgamV4cHItPm9uX2VtcHR5LT5l eHByLAorCQkJCQkJc3RhdGUsIHJlc3YsIHJlc251bGwpOworCisJCS8qIFN0ZXBzIHRvIGNvZXJj ZSB0aGUgT04gRU1QVFkgZXhwcmVzc2lvbiBpZiBuZWVkZWQgKi8KKwkJKHZvaWQpIEV4ZWNJbml0 SnNvbkV4cHJDb2VyY2lvbihzdGF0ZSwKKwkJCQkJCQkJCQkoTm9kZSAqKSBqZXhwci0+b25fZW1w dHktPmNvZXJjaW9uLAorCQkJCQkJCQkJCSZqc2VzdGF0ZS0+ZXNjb250ZXh0LAorCQkJCQkJCQkJ CXJlc3YsIHJlc251bGwpOworCisJCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1BfSlVNUDsKKwkJc2Ny YXRjaC0+ZC5qdW1wLmp1bXBkb25lID0gLTE7CS8qIHNldCBiZWxvdyAqLworCQlqdW1wc190b19l bmQgPSBsYXBwZW5kX2ludChqdW1wc190b19lbmQsIHN0YXRlLT5zdGVwc19sZW4pOworCQlFeHBy RXZhbFB1c2hTdGVwKHN0YXRlLCBzY3JhdGNoKTsKKwl9CisKKwlmb3JlYWNoKGxjLCBqdW1wc190 b19lbmQpCisJeworCQlhcyA9ICZzdGF0ZS0+c3RlcHNbbGZpcnN0X2ludChsYyldOworCQlhcy0+ ZC5qdW1wLmp1bXBkb25lID0gc3RhdGUtPnN0ZXBzX2xlbjsKKwl9CisKKwlqc2VzdGF0ZS0+anVt cF9lbmQgPSBzdGF0ZS0+c3RlcHNfbGVuOworfQorCisvKiBJbml0aWFsaXplIG9uZSBKc29uQ29l cmNpb24gZm9yIGV4ZWN1dGlvbi4gKi8KK3N0YXRpYyBpbnQKK0V4ZWNJbml0SnNvbkV4cHJDb2Vy Y2lvbihFeHByU3RhdGUgKnN0YXRlLCBOb2RlICpjb2VyY2lvbl9leHByLAorCQkJCQkJIEVycm9y U2F2ZUNvbnRleHQgKmVzY29udGV4dCwKKwkJCQkJCSBEYXR1bSAqcmVzdiwgYm9vbCAqcmVzbnVs bCkKK3sKKwlpbnQJCQlqdW1wX2V2YWxfY29lcmNpb247CisJRGF0dW0JICAgKnNhdmVfaW5uZXJt b3N0X2Nhc2V2YWw7CisJYm9vbAkgICAqc2F2ZV9pbm5lcm1vc3RfY2FzZW51bGw7CisJRXJyb3JT YXZlQ29udGV4dCAqc2F2ZV9lc2NvbnRleHQ7CisKKwlpZiAoY29lcmNpb25fZXhwciA9PSBOVUxM KQorCQlyZXR1cm4gLTE7CisKKwlqdW1wX2V2YWxfY29lcmNpb24gPSBzdGF0ZS0+c3RlcHNfbGVu OworCWlmIChJc0EoY29lcmNpb25fZXhwciwgSnNvbkNvZXJjaW9uKSkKKwl7CisJCUpzb25Db2Vy Y2lvbiAqY29lcmNpb24gPSAoSnNvbkNvZXJjaW9uICopIGNvZXJjaW9uX2V4cHI7CisJCUV4cHJF dmFsU3RlcCBzY3JhdGNoID0gezB9OworCQlPaWQJCQl0eXBpbnB1dDsKKwkJRm1nckluZm8gICAq ZmluZm87CisJCU9pZAkJCXR5cGlvcGFyYW07CisKKwkJZ2V0VHlwZUlucHV0SW5mbygoKEpzb25D b2VyY2lvbiAqKSBjb2VyY2lvbiktPnRhcmdldHR5cGUsCisJCQkJCQkgJnR5cGlucHV0LCAmdHlw aW9wYXJhbSk7CisJCWZpbmZvID0gcGFsbG9jMChzaXplb2YoRm1nckluZm8pKTsKKwkJZm1ncl9p bmZvKHR5cGlucHV0LCBmaW5mbyk7CisKKwkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX0pTT05FWFBS X0NPRVJDSU9OOworCQlzY3JhdGNoLnJlc3ZhbHVlID0gcmVzdjsKKwkJc2NyYXRjaC5yZXNudWxs ID0gcmVzbnVsbDsKKwkJc2NyYXRjaC5kLmpzb25leHByX2NvZXJjaW9uLmNvZXJjaW9uID0gY29l cmNpb247CisJCXNjcmF0Y2guZC5qc29uZXhwcl9jb2VyY2lvbi5pbnB1dF9maW5mbyA9IGZpbmZv OworCQlzY3JhdGNoLmQuanNvbmV4cHJfY29lcmNpb24udHlwaW9wYXJhbSA9IHR5cGlvcGFyYW07 CisJCXNjcmF0Y2guZC5qc29uZXhwcl9jb2VyY2lvbi5qc29uX3BvcHVsYXRlX3R5cGVfY2FjaGUg PSBOVUxMOworCQlzY3JhdGNoLmQuanNvbmV4cHJfY29lcmNpb24uZXNjb250ZXh0ID0gZXNjb250 ZXh0OworCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CisJCS8qIEluaXRpYWxp emUgdGhlIGNhc3QgZXhwcmVzc2lvbiBiZWxvdywgaWYgYW55LiAqLworCQlpZiAoY29lcmNpb24t PmNhc3RfZXhwciAhPSBOVUxMKQorCQkJY29lcmNpb25fZXhwciA9IGNvZXJjaW9uLT5jYXN0X2V4 cHI7CisJCWVsc2UKKwkJCXJldHVybiBqdW1wX2V2YWxfY29lcmNpb247CisJfQorCisJLyogUHVz aCBzdGVwKHMpIHRvIGNvbXB1dGUgY3N0YXRlLT5jb2VyY2lvbi4gKi8KKwlzYXZlX2lubmVybW9z dF9jYXNldmFsID0gc3RhdGUtPmlubmVybW9zdF9jYXNldmFsOworCXNhdmVfaW5uZXJtb3N0X2Nh c2VudWxsID0gc3RhdGUtPmlubmVybW9zdF9jYXNlbnVsbDsKKwlzYXZlX2VzY29udGV4dCA9IHN0 YXRlLT5lc2NvbnRleHQ7CisKKwlzdGF0ZS0+aW5uZXJtb3N0X2Nhc2V2YWwgPSByZXN2OworCXN0 YXRlLT5pbm5lcm1vc3RfY2FzZW51bGwgPSByZXNudWxsOworCXN0YXRlLT5lc2NvbnRleHQgPSBl c2NvbnRleHQ7CisKKwlFeGVjSW5pdEV4cHJSZWMoKEV4cHIgKikgY29lcmNpb25fZXhwciwgc3Rh dGUsIHJlc3YsIHJlc251bGwpOworCisJc3RhdGUtPmlubmVybW9zdF9jYXNldmFsID0gc2F2ZV9p bm5lcm1vc3RfY2FzZXZhbDsKKwlzdGF0ZS0+aW5uZXJtb3N0X2Nhc2VudWxsID0gc2F2ZV9pbm5l cm1vc3RfY2FzZW51bGw7CisJc3RhdGUtPmVzY29udGV4dCA9IHNhdmVfZXNjb250ZXh0OworCisJ cmV0dXJuIGp1bXBfZXZhbF9jb2VyY2lvbjsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwcklu dGVycC5jCmluZGV4IDdjMWY1MWUyZTAuLmRlY2Y4NTY2YzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY0V4cHJJbnRlcnAuYwpAQCAtNzIsOCArNzIsOCBAQAogI2luY2x1ZGUgInV0aWxzL2RhdHVt LmgiCiAjaW5jbHVkZSAidXRpbHMvZXhwYW5kZWRyZWNvcmQuaCIKICNpbmNsdWRlICJ1dGlscy9q c29uLmgiCi0jaW5jbHVkZSAidXRpbHMvanNvbmIuaCIKICNpbmNsdWRlICJ1dGlscy9qc29uZnVu Y3MuaCIKKyNpbmNsdWRlICJ1dGlscy9qc29ucGF0aC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNj YWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvdGlt ZXN0YW1wLmgiCkBAIC0xODAsNiArMTgwLDEwIEBAIHN0YXRpYyBwZ19hdHRyaWJ1dGVfYWx3YXlz X2lubGluZSB2b2lkIEV4ZWNBZ2dQbGFpblRyYW5zQnlSZWYoQWdnU3RhdGUgKmFnZ3N0YXRlCiAJ CQkJCQkJCQkJCQkJCQkgIEFnZ1N0YXRlUGVyR3JvdXAgcGVyZ3JvdXAsCiAJCQkJCQkJCQkJCQkJ CQkgIEV4cHJDb250ZXh0ICphZ2djb250ZXh0LAogCQkJCQkJCQkJCQkJCQkJICBpbnQgc2V0bm8p Oworc3RhdGljIHZvaWQgRXhlY1ByZXBhcmVKc29uSXRlbUNvZXJjaW9uKEpzb25iVmFsdWUgKml0 ZW0sIEpzb25FeHByU3RhdGUgKmpzZXN0YXRlLAorCQkJCQkJCQkJCWJvb2wgdGhyb3dfZXJyb3Is CisJCQkJCQkJCQkJaW50ICpqdW1wX2V2YWxfaXRlbV9jb2VyY2lvbiwKKwkJCQkJCQkJCQlEYXR1 bSAqcmVzdmFsdWUsIGJvb2wgKnJlc251bGwpOwogCiAvKgogICogU2NhbGFyQXJyYXlPcEV4cHJI YXNoRW50cnkKQEAgLTQ4MSw2ICs0ODUsOSBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0 YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJJiZDQVNFX0VFT1Bf WE1MRVhQUiwKIAkJJiZDQVNFX0VFT1BfSlNPTl9DT05TVFJVQ1RPUiwKIAkJJiZDQVNFX0VFT1Bf SVNfSlNPTiwKKwkJJiZDQVNFX0VFT1BfSlNPTkVYUFJfUEFUSCwKKwkJJiZDQVNFX0VFT1BfSlNP TkVYUFJfQ09FUkNJT04sCisJCSYmQ0FTRV9FRU9QX0pTT05FWFBSX0NPRVJDSU9OX0ZJTklTSCwK IAkJJiZDQVNFX0VFT1BfQUdHUkVGLAogCQkmJkNBU0VfRUVPUF9HUk9VUElOR19GVU5DLAogCQkm JkNBU0VfRUVPUF9XSU5ET1dfRlVOQywKQEAgLTE1NTMsNiArMTU2MCwyOCBAQCBFeGVjSW50ZXJw RXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVs bCkKIAkJCUVFT19ORVhUKCk7CiAJCX0KIAorCQlFRU9fQ0FTRShFRU9QX0pTT05FWFBSX1BBVEgp CisJCXsKKwkJCS8qIHRvbyBjb21wbGV4IGZvciBhbiBpbmxpbmUgaW1wbGVtZW50YXRpb24gKi8K KwkJCUVFT19KVU1QKEV4ZWNFdmFsSnNvbkV4cHJQYXRoKHN0YXRlLCBvcCwgZWNvbnRleHQpKTsK KwkJfQorCisJCUVFT19DQVNFKEVFT1BfSlNPTkVYUFJfQ09FUkNJT04pCisJCXsKKwkJCS8qIHRv byBjb21wbGV4IGZvciBhbiBpbmxpbmUgaW1wbGVtZW50YXRpb24gKi8KKwkJCUV4ZWNFdmFsSnNv bkNvZXJjaW9uKHN0YXRlLCBvcCwgZWNvbnRleHQpOworCisJCQlFRU9fTkVYVCgpOworCQl9CisK KwkJRUVPX0NBU0UoRUVPUF9KU09ORVhQUl9DT0VSQ0lPTl9GSU5JU0gpCisJCXsKKwkJCS8qIHRv byBjb21wbGV4IGZvciBhbiBpbmxpbmUgaW1wbGVtZW50YXRpb24gKi8KKwkJCUV4ZWNFdmFsSnNv bkNvZXJjaW9uRmluaXNoKHN0YXRlLCBvcCk7CisKKwkJCUVFT19ORVhUKCk7CisJCX0KKwogCQlF RU9fQ0FTRShFRU9QX0FHR1JFRikKIAkJewogCQkJLyoKQEAgLTQyMTMsNiArNDI0MiwzNTUgQEAg RXhlY0V2YWxKc29uSXNQcmVkaWNhdGUoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpv cCkKIAkqb3AtPnJlc3ZhbHVlID0gQm9vbEdldERhdHVtKHJlcyk7CiB9CiAKKy8qCisgKiBQZXJm b3JtcyBKc29uUGF0aHtFeGlzdHN8UXVlcnl8VmFsdWV9KCkgZm9yIGEgZ2l2ZW4gY29udGV4dF9p dGVtIGFuZAorICoganNvbnBhdGguCisgKgorICogUmVzdWx0IGlzIHNldCBpbiAqb3AtPnJlc3Zh bHVlIGFuZCAqb3AtPnJlc251bGwuICBSZXR1cm4gdmFsdWUgaXMgdGhlCisgKiBzdGVwIGFkZHJl c3MgdG8gYmUgcGVyZm9ybWVkIG5leHQuCisgKgorICogT24gcmV0dXJuLCBKc29uRXhwclBvc3RF dmFsU3RhdGUgaXMgcG9wdWxhdGVkIHdpdGggdGhlIGZvbGxvd2luZyBkZXRhaWxzOgorICoJLSBl cnJvci52YWx1ZTogdHJ1ZSBpZiBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgSnNvblBhdGggZXZh bHVhdGlvbgorICoJLSBlbXB0eS52YWx1ZTogdHJ1ZSBpZiBKc29uUGF0aHtRdWVyeXxWYWx1ZX0o KSBmb3VuZCBubyBtYXRjaGluZyBpdGVtCisgKgorICogTm8gcmV0dXJuIGlmIHRoZSBPTiBFUlJP Ui9FTVBUWSBiZWhhdmlvciBpcyBFUlJPUi4KKyAqLworaW50CitFeGVjRXZhbEpzb25FeHByUGF0 aChFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAorCQkJCQkgRXhwckNvbnRleHQg KmVjb250ZXh0KQoreworCUpzb25FeHByU3RhdGUgKmpzZXN0YXRlID0gb3AtPmQuanNvbmV4cHIu anNlc3RhdGU7CisJSnNvbkV4cHIgICAqamV4cHIgPSBqc2VzdGF0ZS0+anNleHByOworCURhdHVt CQlpdGVtOworCUpzb25QYXRoICAgKnBhdGg7CisJYm9vbAkJdGhyb3dfZXJyb3IgPSBqZXhwci0+ b25fZXJyb3ItPmJ0eXBlID09IEpTT05fQkVIQVZJT1JfRVJST1I7CisJYm9vbAkgICAgZXJyb3Ig PSBmYWxzZSwKKwkJCQllbXB0eSA9IGZhbHNlOworCisJLyogTWlnaHQgZ2V0IG92ZXJyaWRkZW4g Zm9yIEpTT05fVkFMVUVfT1AgYnkgYW4gcGVyLWl0ZW0gY29lcmNpb24uICovCisJaW50CQkJanVt cF9ldmFsX2NvZXJjaW9uID0ganNlc3RhdGUtPmp1bXBfZXZhbF9yZXN1bHRfY29lcmNpb247CisK KwlpdGVtID0ganNlc3RhdGUtPmZvcm1hdHRlZF9leHByLnZhbHVlOworCXBhdGggPSBEYXR1bUdl dEpzb25QYXRoUChqc2VzdGF0ZS0+cGF0aHNwZWMudmFsdWUpOworCisJLyogU2V0IGVycm9yL2Vt cHR5IHRvIGZhbHNlLiAqLworCW1lbXNldCgmanNlc3RhdGUtPmVycm9yLCAwLCBzaXplb2YoTnVs bGFibGVEYXR1bSkpOworCW1lbXNldCgmanNlc3RhdGUtPmVtcHR5LCAwLCBzaXplb2YoTnVsbGFi bGVEYXR1bSkpOworCXN3aXRjaCAoamV4cHItPm9wKQorCXsKKwkJY2FzZSBKU09OX0VYSVNUU19P UDoKKwkJCXsKKwkJCQlib29sCQlleGlzdHMgPSBKc29uUGF0aEV4aXN0cyhpdGVtLCBwYXRoLAor CQkJCQkJCQkJCQkJCSF0aHJvd19lcnJvciA/ICZlcnJvciA6IE5VTEwsCisJCQkJCQkJCQkJCQkJ anNlc3RhdGUtPmFyZ3MpOworCisJCQkJaWYgKCFlcnJvcikKKwkJCQl7CisJCQkJCSpvcC0+cmVz dmFsdWUgPSBCb29sR2V0RGF0dW0oZXhpc3RzKTsKKwkJCQkJKm9wLT5yZXNudWxsID0gZmFsc2U7 CisJCQkJfQorCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBKU09OX1FVRVJZX09QOgorCQkJKm9w LT5yZXN2YWx1ZSA9IEpzb25QYXRoUXVlcnkoaXRlbSwgcGF0aCwgamV4cHItPndyYXBwZXIsICZl bXB0eSwKKwkJCQkJCQkJCQkgICF0aHJvd19lcnJvciA/ICZlcnJvciA6IE5VTEwsCisJCQkJCQkJ CQkJICBqc2VzdGF0ZS0+YXJncyk7CisKKwkJCWlmICghZXJyb3IgJiYgIWVtcHR5KQorCQkJCSpv cC0+cmVzbnVsbCA9IChEYXR1bUdldFBvaW50ZXIoKm9wLT5yZXN2YWx1ZSkgPT0gTlVMTCk7CisJ CQlicmVhazsKKworCQljYXNlIEpTT05fVkFMVUVfT1A6CisJCQl7CisJCQkJSnNvbmJWYWx1ZSAq amJ2ID0gSnNvblBhdGhWYWx1ZShpdGVtLCBwYXRoLCAmZW1wdHksCisJCQkJCQkJCQkJCQkhdGhy b3dfZXJyb3IgPyAmZXJyb3IgOiBOVUxMLAorCQkJCQkJCQkJCQkJanNlc3RhdGUtPmFyZ3MpOwor CisJCQkJaWYgKGpidiA9PSBOVUxMKQorCQkJCXsKKwkJCQkJLyogV2lsbCBiZSBjb2VyY2VkIHdp dGggcmVzdWx0X2NvZXJjaW9uLiAqLworCQkJCQkqb3AtPnJlc3ZhbHVlID0gKERhdHVtKSAwOwor CQkJCQkqb3AtPnJlc251bGwgPSB0cnVlOworCQkJCX0KKwkJCQllbHNlIGlmICghZXJyb3IgJiYg IWVtcHR5KQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogSWYgdGhlIHJlcXVlc3RlZCBvdXRwdXQg dHlwZSBpcyBqc29uKGIpLCB1c2UKKwkJCQkJICogcmVzdWx0X2NvZXJjaW9uIHRvIGRvIHRoZSBj b2VyY2lvbi4KKwkJCQkJICovCisJCQkJCWlmIChqZXhwci0+cmV0dXJuaW5nLT50eXBpZCA9PSBK U09OT0lEIHx8CisJCQkJCQlqZXhwci0+cmV0dXJuaW5nLT50eXBpZCA9PSBKU09OQk9JRCkKKwkJ CQkJeworCQkJCQkJKm9wLT5yZXN2YWx1ZSA9IEpzb25iUEdldERhdHVtKEpzb25iVmFsdWVUb0pz b25iKGpidikpOworCQkJCQkJKm9wLT5yZXNudWxsID0gZmFsc2U7CisJCQkJCX0KKwkJCQkJZWxz ZQorCQkJCQl7CisJCQkJCQkvKgorCQkJCQkJICogRWxzZSwgdXNlIG9uZSBvZiB0aGUgaXRlbV9j b2VyY2lvbnMuCisJCQkJCQkgKgorCQkJCQkJICogRXJyb3Igb3V0IGlmIG5vIGNhc3QgZXhwcmVz c2lvbiBleGlzdHMuCisJCQkJCQkgKi8KKwkJCQkJCUV4ZWNQcmVwYXJlSnNvbkl0ZW1Db2VyY2lv bihqYnYsIGpzZXN0YXRlLCB0aHJvd19lcnJvciwKKwkJCQkJCQkJCQkJCQkmanVtcF9ldmFsX2Nv ZXJjaW9uLAorCQkJCQkJCQkJCQkJCW9wLT5yZXN2YWx1ZSwgb3AtPnJlc251bGwpOworCQkJCQl9 CisJCQkJfQorCQkJCWJyZWFrOworCQkJfQorCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAi dW5yZWNvZ25pemVkIFNRTC9KU09OIGV4cHJlc3Npb24gb3AgJWQiLCBqZXhwci0+b3ApOworCQkJ cmV0dXJuIGZhbHNlOworCX0KKworCWlmIChlbXB0eSkKKwl7CisJCWlmIChqZXhwci0+b25fZW1w dHkpCisJCXsKKwkJCWlmIChqZXhwci0+b25fZW1wdHktPmJ0eXBlID09IEpTT05fQkVIQVZJT1Jf RVJST1IpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9OT19TUUxf SlNPTl9JVEVNKSwKKwkJCQkJCWVycm1zZygibm8gU1FML0pTT04gaXRlbSIpKTsKKwkJCWVsc2UK KwkJCQlqc2VzdGF0ZS0+ZW1wdHkudmFsdWUgPSBCb29sR2V0RGF0dW0odHJ1ZSk7CisKKwkJCUFz c2VydChqc2VzdGF0ZS0+anVtcF9lbXB0eSA+PSAwKTsKKwkJCXJldHVybiBqc2VzdGF0ZS0+anVt cF9lbXB0eTsKKwkJfQorCQllbHNlIGlmIChqZXhwci0+b25fZXJyb3ItPmJ0eXBlID09IEpTT05f QkVIQVZJT1JfRVJST1IpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVf Tk9fU1FMX0pTT05fSVRFTSksCisJCQkJCWVycm1zZygibm8gU1FML0pTT04gaXRlbSIpKTsKKwkJ ZWxzZQorCQkJanNlc3RhdGUtPmVycm9yLnZhbHVlID0gQm9vbEdldERhdHVtKHRydWUpOworCisJ CSpvcC0+cmVzdmFsdWUgPSAoRGF0dW0pIDA7CisJCSpvcC0+cmVzbnVsbCA9IHRydWU7CisKKwkJ QXNzZXJ0KGpzZXN0YXRlLT5qdW1wX2Vycm9yID49IDApOworCQlyZXR1cm4ganNlc3RhdGUtPmp1 bXBfZXJyb3I7CisJfQorCisJaWYgKGVycm9yKQorCXsKKwkJQXNzZXJ0KCF0aHJvd19lcnJvciAm JiBqc2VzdGF0ZS0+anVtcF9lcnJvciA+PSAwKTsKKwkJKm9wLT5yZXN2YWx1ZSA9IChEYXR1bSkg MDsKKwkJKm9wLT5yZXNudWxsID0gdHJ1ZTsKKwkJanNlc3RhdGUtPmVycm9yLnZhbHVlID0gQm9v bEdldERhdHVtKHRydWUpOworCQlyZXR1cm4ganNlc3RhdGUtPmp1bXBfZXJyb3I7CisJfQorCisJ LyogRWxzZSByZXR1cm4gdGhlIGNvZXJjaW9uIHN0ZXAgYWRkcmVzcyBvciB0aGUgYWRkcmVzcyB0 byBza2lwIHRvIGVuZC4gKi8KKwlyZXR1cm4ganVtcF9ldmFsX2NvZXJjaW9uID49IDAgPyBqdW1w X2V2YWxfY29lcmNpb24gOiBqc2VzdGF0ZS0+anVtcF9lbmQ7Cit9CisKKy8qCisgKiBTZWxlY3Rz IGEgY29lcmNpb24gZm9yIGEgZ2l2ZW4gSnNvbmJWYWx1ZSBiYXNlZCBvbiBpdHMgdHlwZS4KKyAq CisgKiBPbiByZXR1cm4sICpyZXN2YWx1ZSBhbmQgKnJlc251bGwgYXJlIHNldCB0byB0aGUgdmFs dWUgZXh0cmFjdGVkIGZyb20gdGhlCisgKiBKc29uYlZhbHVlIGFuZCAqanVtcF9ldmFsX2l0ZW1f Y29lcmNpb24gaXMgc2V0IHRvIHRoZSBzdGVwIGFkZHJlc3Mgb2YgdGhlCisgKiBjb2VyY2lvbiBl eHByZXNzaW9uLgorICoKKyAqIElmIHRoZSBmb3VuZCBleHByZXNzaW9uIGlzIGEgSnNvbkNvZXJj aW9uIG5vZGUgdGhhdCBtZWFucyB0aGUgcGFyc2VyCisgKiBkaWRudCcgZmluZCBhIGNhc3QgdG8g ZG8gdGhlIGNvZXJjaW9uLCBzbyB0aHJvdyBhbiBlcnJvciBpZiB0aGUKKyAqIE9OIEVSUk9SIGJl aGF2aW9yIHNheXMgdG8gZG8gc28uCisgKi8KK3N0YXRpYyB2b2lkCitFeGVjUHJlcGFyZUpzb25J dGVtQ29lcmNpb24oSnNvbmJWYWx1ZSAqaXRlbSwgSnNvbkV4cHJTdGF0ZSAqanNlc3RhdGUsCisJ CQkJCQkJYm9vbCB0aHJvd19lcnJvciwKKwkJCQkJCQlpbnQgKmp1bXBfZXZhbF9pdGVtX2NvZXJj aW9uLAorCQkJCQkJCURhdHVtICpyZXN2YWx1ZSwgYm9vbCAqcmVzbnVsbCkKK3sKKwlpbnQJCSAg ICpldmFsX2l0ZW1fY29lcmNpb25fanVtcHMgPSBqc2VzdGF0ZS0+ZXZhbF9pdGVtX2NvZXJjaW9u X2p1bXBzOworCWJvb2wJICAgKml0ZW1fY29lcmNpb25faXNfY2FzdCA9IGpzZXN0YXRlLT5pdGVt X2NvZXJjaW9uX2lzX2Nhc3Q7CisJYm9vbAkJaXNfY2FzdDsKKwlpbnQJCQlqdW1wX3RvOworCUpz b25iVmFsdWUJYnVmOworCisJaWYgKGl0ZW0tPnR5cGUgPT0gamJ2QmluYXJ5ICYmIEpzb25Db250 YWluZXJJc1NjYWxhcihpdGVtLT52YWwuYmluYXJ5LmRhdGEpKQorCXsKKwkJYm9vbAkJaXNfc2Nh bGFyIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKKworCQlpc19zY2FsYXIgPSBKc29uYkV4dHJh Y3RTY2FsYXIoaXRlbS0+dmFsLmJpbmFyeS5kYXRhLCAmYnVmKTsKKwkJaXRlbSA9ICZidWY7CisJ CUFzc2VydChpc19zY2FsYXIpOworCX0KKworCSpyZXNudWxsID0gZmFsc2U7CisKKwkvKiBnZXQg Y29lcmNpb24gc3RhdGUgcmVmZXJlbmNlIGFuZCBkYXR1bSBvZiB0aGUgY29ycmVzcG9uZGluZyBT UUwgdHlwZSAqLworCXN3aXRjaCAoaXRlbS0+dHlwZSkKKwl7CisJCWNhc2UgamJ2TnVsbDoKKwkJ CWlzX2Nhc3QgPSBpdGVtX2NvZXJjaW9uX2lzX2Nhc3RbSnNvbkl0ZW1UeXBlTnVsbF07CisJCQlq dW1wX3RvID0gZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBzW0pzb25JdGVtVHlwZU51bGxdOworCQkJ KnJlc3ZhbHVlID0gKERhdHVtKSAwOworCQkJKnJlc251bGwgPSB0cnVlOworCQkJYnJlYWs7CisK KwkJY2FzZSBqYnZTdHJpbmc6CisJCQlpc19jYXN0ID0gaXRlbV9jb2VyY2lvbl9pc19jYXN0W0pz b25JdGVtVHlwZVN0cmluZ107CisJCQlqdW1wX3RvID0gZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBz W0pzb25JdGVtVHlwZVN0cmluZ107CisJCQkqcmVzdmFsdWUgPQorCQkJCVBvaW50ZXJHZXREYXR1 bShjc3RyaW5nX3RvX3RleHRfd2l0aF9sZW4oaXRlbS0+dmFsLnN0cmluZy52YWwsCisJCQkJCQkJ CQkJCQkJCSBpdGVtLT52YWwuc3RyaW5nLmxlbikpOworCQkJYnJlYWs7CisKKwkJY2FzZSBqYnZO dW1lcmljOgorCQkJaXNfY2FzdCA9IGl0ZW1fY29lcmNpb25faXNfY2FzdFtKc29uSXRlbVR5cGVO dW1lcmljXTsKKwkJCWp1bXBfdG8gPSBldmFsX2l0ZW1fY29lcmNpb25fanVtcHNbSnNvbkl0ZW1U eXBlTnVtZXJpY107CisJCQkqcmVzdmFsdWUgPSBOdW1lcmljR2V0RGF0dW0oaXRlbS0+dmFsLm51 bWVyaWMpOworCQkJYnJlYWs7CisKKwkJY2FzZSBqYnZCb29sOgorCQkJaXNfY2FzdCA9IGl0ZW1f Y29lcmNpb25faXNfY2FzdFtKc29uSXRlbVR5cGVCb29sZWFuXTsKKwkJCWp1bXBfdG8gPSBldmFs X2l0ZW1fY29lcmNpb25fanVtcHNbSnNvbkl0ZW1UeXBlQm9vbGVhbl07CisJCQkqcmVzdmFsdWUg PSBCb29sR2V0RGF0dW0oaXRlbS0+dmFsLmJvb2xlYW4pOworCQkJYnJlYWs7CisKKwkJY2FzZSBq YnZEYXRldGltZToKKwkJCSpyZXN2YWx1ZSA9IGl0ZW0tPnZhbC5kYXRldGltZS52YWx1ZTsKKwkJ CXN3aXRjaCAoaXRlbS0+dmFsLmRhdGV0aW1lLnR5cGlkKQorCQkJeworCQkJCWNhc2UgREFURU9J RDoKKwkJCQkJaXNfY2FzdCA9IGl0ZW1fY29lcmNpb25faXNfY2FzdFtKc29uSXRlbVR5cGVEYXRl XTsKKwkJCQkJanVtcF90byA9IGV2YWxfaXRlbV9jb2VyY2lvbl9qdW1wc1tKc29uSXRlbVR5cGVE YXRlXTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBUSU1FT0lEOgorCQkJCQlpc19jYXN0ID0gaXRl bV9jb2VyY2lvbl9pc19jYXN0W0pzb25JdGVtVHlwZVRpbWVdOworCQkJCQlqdW1wX3RvID0gZXZh bF9pdGVtX2NvZXJjaW9uX2p1bXBzW0pzb25JdGVtVHlwZVRpbWVdOworCQkJCQlicmVhazsKKwkJ CQljYXNlIFRJTUVUWk9JRDoKKwkJCQkJaXNfY2FzdCA9IGl0ZW1fY29lcmNpb25faXNfY2FzdFtK c29uSXRlbVR5cGVUaW1ldHpdOworCQkJCQlqdW1wX3RvID0gZXZhbF9pdGVtX2NvZXJjaW9uX2p1 bXBzW0pzb25JdGVtVHlwZVRpbWV0el07CisJCQkJCWJyZWFrOworCQkJCWNhc2UgVElNRVNUQU1Q T0lEOgorCQkJCQlpc19jYXN0ID0gaXRlbV9jb2VyY2lvbl9pc19jYXN0W0pzb25JdGVtVHlwZVRp bWVzdGFtcF07CisJCQkJCWp1bXBfdG8gPSBldmFsX2l0ZW1fY29lcmNpb25fanVtcHNbSnNvbkl0 ZW1UeXBlVGltZXN0YW1wXTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBUSU1FU1RBTVBUWk9JRDoK KwkJCQkJaXNfY2FzdCA9IGl0ZW1fY29lcmNpb25faXNfY2FzdFtKc29uSXRlbVR5cGVUaW1lc3Rh bXB0el07CisJCQkJCWp1bXBfdG8gPSBldmFsX2l0ZW1fY29lcmNpb25fanVtcHNbSnNvbkl0ZW1U eXBlVGltZXN0YW1wdHpdOworCQkJCQlicmVhazsKKwkJCQlkZWZhdWx0OgorCQkJCQllbG9nKEVS Uk9SLCAidW5leHBlY3RlZCBqc29uYiBkYXRldGltZSB0eXBlIG9pZCAldSIsCisJCQkJCQkgaXRl bS0+dmFsLmRhdGV0aW1lLnR5cGlkKTsKKwkJCX0KKwkJCWJyZWFrOworCisJCWNhc2UgamJ2QXJy YXk6CisJCWNhc2UgamJ2T2JqZWN0OgorCQljYXNlIGpidkJpbmFyeToKKwkJCWlzX2Nhc3QgPSBp dGVtX2NvZXJjaW9uX2lzX2Nhc3RbSnNvbkl0ZW1UeXBlQ29tcG9zaXRlXTsKKwkJCWp1bXBfdG8g PSBldmFsX2l0ZW1fY29lcmNpb25fanVtcHNbSnNvbkl0ZW1UeXBlQ29tcG9zaXRlXTsKKwkJCSpy ZXN2YWx1ZSA9IEpzb25iUEdldERhdHVtKEpzb25iVmFsdWVUb0pzb25iKGl0ZW0pKTsKKwkJCWJy ZWFrOworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBqc29uYiB2YWx1 ZSB0eXBlICVkIiwgaXRlbS0+dHlwZSk7CisJfQorCisJLyogSWYgdGhlIGV4cHJlc3Npb24gaXMg bm90IGEgY2FzdCBleHByZXNzaW9uLCB0aHJvdyBhbiBlcnJvci4gKi8KKwlpZiAoanVtcF90byA+ PSAwICYmICFpc19jYXN0KQorCXsKKwkJaWYgKHRocm93X2Vycm9yKQorCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX1NRTF9KU09OX0lURU1fQ0FOTk9UX0JFX0NBU1RfVE9f VEFSR0VUX1RZUEUpLAorCQkJCQllcnJtc2coIlNRTC9KU09OIGl0ZW0gY2Fubm90IGJlIGNhc3Qg dG8gdGFyZ2V0IHR5cGUiKSk7CisKKwkJKnJlc3ZhbHVlID0gKERhdHVtKSAwOworCQkqcmVzbnVs bCA9IHRydWU7CisJfQorCisJKmp1bXBfZXZhbF9pdGVtX2NvZXJjaW9uID0ganVtcF90bzsKK30K KworLyoKKyAqIENvZXJjZSBhIGpzb25iIG9yIGEgc2NhbGFyIHN0cmluZyB2YWx1ZSBwcm9kdWNl ZCBieSBFeGVjRXZhbEpzb25FeHByUGF0aCgpCisgKiBvciBhbiBPTiBFUlJPUiAvIEVNUFRZIGJl aGF2aW9yIGV4cHJlc3Npb24gdG8gdGhlIHRhcmdldCB0eXBlLgorICoKKyAqIFRoaXMgaXMgYWxz byByZXNwb25zaWJsZSBmb3IgcmVtb3ZpbmcgYW55IHF1b3RlcyBwcmVzZW50IGluIHRoZSBzb3Vy Y2UKKyAqIHZhbHVlIGlmIEpzb25Db2VyY2lvbi5vbWl0X3F1b3RlcyBpcyB0cnVlIGJlZm9yZSBj b2VyY2luZyB0byB0aGUgdGFyZ2V0CisgKiB0eXBlLgorICoKKyAqIEFueSBzb2Z0IGVycm9ycyB0 aGF0IG9jY3VyIGhlcmUgd2lsbCBiZSBjaGVja2VkIGJ5CisgKiBFRU9QX0pTT05FWFBSX0NPRVJD SU9OX0ZJTklTSCB0aGF0IHdpbGwgcnVuIGFmdGVyIHRoaXMuCisgKi8KK3ZvaWQKK0V4ZWNFdmFs SnNvbkNvZXJjaW9uKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsCisJCQkJCSBF eHByQ29udGV4dCAqZWNvbnRleHQpCit7CisJSnNvbkNvZXJjaW9uICpjb2VyY2lvbiA9IG9wLT5k Lmpzb25leHByX2NvZXJjaW9uLmNvZXJjaW9uOworCUVycm9yU2F2ZUNvbnRleHQgKmVzY29udGV4 dCA9IG9wLT5kLmpzb25leHByX2NvZXJjaW9uLmVzY29udGV4dDsKKwlEYXR1bQkJcmVzID0gKm9w LT5yZXN2YWx1ZTsKKworCS8qCisJICogSGFuZGxlIE9NSVQgUVVPVEVTLgorCSAqCisJICogTm9y bWFsbHksIGpzb25fcG9wdWxhdGVfdHlwZSgpIGlzIHRoZSBwbGFjZSB0byBjb2VyY2UganNvbmIg dmFsdWVzIHRvCisJICogdGhlIHJlcXVlc3RlZCB0YXJnZXQgdHlwZSwgaW5jbHVkaW5nIHRob3Nl IHRoYXQgYXJlIHNjYWxhciBzdHJpbmdzLCBidXQKKwkgKiBpdCBkb2Vzbid0IGhhdmUgdGhlIHN1 cHBvcnQgZm9yIHJlbW92aW5nIHF1b3RlcyB0byBpbXBsZW1lbnQgdGhlCisJICogT01JVCBRVU9U RVMgY2xhdXNlLCBzbyB3ZSBoYW5kbGUgaXQgaGVyZS4KKwkgKi8KKwlpZiAoY29lcmNpb24tPm9t aXRfcXVvdGVzKQorCXsKKwkJRm1nckluZm8gICAqaW5wdXRfZmluZm8gPSBvcC0+ZC5qc29uZXhw cl9jb2VyY2lvbi5pbnB1dF9maW5mbzsKKwkJT2lkCQkJdHlwaW9wYXJhbSA9IG9wLT5kLmpzb25l eHByX2NvZXJjaW9uLnR5cGlvcGFyYW07CisJCWNoYXIJICAgKnZhbCA9ICEqb3AtPnJlc251bGwg PworCQkJSnNvbmJVbnF1b3RlKERhdHVtR2V0SnNvbmJQKHJlcykpIDogTlVMTDsKKworCQkvKgor CQkgKiBJZiB0aGUgY29lcmNpb24gbXVzdCBiZSBkb25lIHVzaW5nIGEgY2FzdCBleHByZXNzaW9u LCBwYXNzIHRvIGl0CisJCSAqIHRoZSB0ZXh0IHZlcnNpb24gb2YgdGhlIHF1b3RlLXN0cmlwcGVk IHN0cmluZy4gIElmIG5vdCwgZmluaXNoIHRoZQorCQkgKiBjb2VyY2lvbiBieSBjYWxsaW5nIHRo ZSBpbnB1dCBmdW5jdGlvbi4KKwkJICovCisJCWlmIChjb2VyY2lvbi0+Y2FzdF9leHByKQorCQkJ Km9wLT5yZXN2YWx1ZSA9IERpcmVjdEZ1bmN0aW9uQ2FsbDEodGV4dGluLAorCQkJCQkJCQkJCQkJ Q1N0cmluZ0dldERhdHVtKHZhbCkpOworCQllbHNlCisJCQkodm9pZCkgSW5wdXRGdW5jdGlvbkNh bGxTYWZlKGlucHV0X2ZpbmZvLCB2YWwsIHR5cGlvcGFyYW0sCisJCQkJCQkJCQkJIGNvZXJjaW9u LT50YXJnZXR0eXBtb2QsCisJCQkJCQkJCQkJIChOb2RlICopIGVzY29udGV4dCwKKwkJCQkJCQkJ CQkgb3AtPnJlc3ZhbHVlKTsKKwl9CisJZWxzZQorCXsKKwkJKm9wLT5yZXN2YWx1ZSA9IGpzb25f cG9wdWxhdGVfdHlwZShyZXMsIEpTT05CT0lELAorCQkJCQkJCQkJCSAgIGNvZXJjaW9uLT50YXJn ZXR0eXBlLAorCQkJCQkJCQkJCSAgIGNvZXJjaW9uLT50YXJnZXR0eXBtb2QsCisJCQkJCQkJCQkJ ICAgJm9wLT5kLmpzb25leHByX2NvZXJjaW9uLmpzb25fcG9wdWxhdGVfdHlwZV9jYWNoZSwKKwkJ CQkJCQkJCQkgICBlY29udGV4dC0+ZWN4dF9wZXJfcXVlcnlfbWVtb3J5LAorCQkJCQkJCQkJCSAg IG9wLT5yZXNudWxsLCAoTm9kZSAqKSBlc2NvbnRleHQpOworCX0KK30KKworLyoKKyAqIENoZWNr cyBpZiB0aGUgY29lcmNpb24gZXZhbHVhdGlvbiBsZWQgdG8gYW4gZXJyb3IuICBJZiBhbiBlcnJv ciBkaWQgb2NjdXIsCisgKiB0aGlzIHNldHMgcG9zdF9ldmFsLT5lcnJvciB0byB0cmlnZ2VyIHRo ZSBPTiBFUlJPUiBoYW5kbGluZyBzdGVwcy4KKyAqLwordm9pZAorRXhlY0V2YWxKc29uQ29lcmNp b25GaW5pc2goRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCkKK3sKKwlKc29uRXhw clN0YXRlICpqc2VzdGF0ZSA9IG9wLT5kLmpzb25leHByLmpzZXN0YXRlOworCisJaWYgKFNPRlRf RVJST1JfT0NDVVJSRUQoJmpzZXN0YXRlLT5lc2NvbnRleHQpKQorCXsKKwkJKm9wLT5yZXN2YWx1 ZSA9IChEYXR1bSkgMDsKKwkJKm9wLT5yZXNudWxsID0gdHJ1ZTsKKwkJanNlc3RhdGUtPmVycm9y LnZhbHVlID0gQm9vbEdldERhdHVtKHRydWUpOworCisJCS8qCisJCSAqIEFsc28gbWFrZSBFcnJv clNhdmVDb250ZXh0IHJlYWR5IGZvciB0aGUgbmV4dCByb3cuICBTaW5jZSB3ZSBuZXZlcgorCQkg KiBzZXQgZGV0YWlsc193YW50ZWQsIHdlIGRvbid0IG5lZWQgdG8gYWxzbyByZXNldCBlcnJvcl9k YXRhLCB3aGljaAorCQkgKiB3b3VsZCBiZSBOVUxMIGFueXdheS4KKwkJICovCisJCUFzc2VydCgh anNlc3RhdGUtPmVzY29udGV4dC5kZXRhaWxzX3dhbnRlZCAmJgorCQkJICAganNlc3RhdGUtPmVz Y29udGV4dC5lcnJvcl9kYXRhID09IE5VTEwpOworCQlqc2VzdGF0ZS0+ZXNjb250ZXh0LmVycm9y X29jY3VycmVkID0gZmFsc2U7CisJfQorfQogCiAvKgogICogRXhlY0V2YWxHcm91cGluZ0Z1bmMK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jIGIvc3JjL2Jh Y2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMKaW5kZXggMGM0NDg0MjJlMi4uOWU4MWIyYzU0 ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMKKysrIGIv c3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMKQEAgLTE5MzAsNiArMTkzMCwxNTAg QEAgbGx2bV9jb21waWxlX2V4cHIoRXhwclN0YXRlICpzdGF0ZSkKIAkJCQlMTFZNQnVpbGRCcihi LCBvcGJsb2Nrc1tvcG5vICsgMV0pOwogCQkJCWJyZWFrOwogCisJCQljYXNlIEVFT1BfSlNPTkVY UFJfUEFUSDoKKwkJCQl7CisJCQkJCUpzb25FeHByU3RhdGUgKmpzZXN0YXRlID0gb3AtPmQuanNv bmV4cHIuanNlc3RhdGU7CisJCQkJCUxMVk1WYWx1ZVJlZiB2X3JldDsKKworCQkJCQkvKgorCQkJ CQkgKiBDYWxsIEV4ZWNFdmFsSnNvbkV4cHJQYXRoKCkuICBJdCByZXR1cm5zIHRoZSBhZGRyZXNz IG9mCisJCQkJCSAqIHRoZSBzdGVwIHRvIHBlcmZvcm0gbmV4dC4KKwkJCQkJICovCisJCQkJCXZf cmV0ID0gYnVpbGRfRXZhbFhGdW5jKGIsIG1vZCwgIkV4ZWNFdmFsSnNvbkV4cHJQYXRoIiwKKwkJ CQkJCQkJCQkJdl9zdGF0ZSwgb3AsIHZfZWNvbnRleHQpOworCisJCQkJCS8qCisJCQkJCSAqIEJ1 aWxkIGEgc3dpdGNoIHRvIG1hcCB0aGUgcmV0dXJuIHZhbHVlLCB3aGljaCBpcyBhCisJCQkJCSAq IHJ1bnRpbWUgdmFsdWUgb2YgdGhlIHN0ZXAgYWRkcmVzcyB0byBwZXJmb3JtIG5leHQsIHRvCisJ CQkJCSAqIGVpdGhlciBqdW1wX2VtcHR5LCBqdW1wX2Vycm9yLCBvciB0aGUgY29lcmNpb24KKwkJ CQkJICogZXhwcmVzc2lvbi4KKwkJCQkJICovCisJCQkJCWlmIChqc2VzdGF0ZS0+anVtcF9lbXB0 eSA+PSAwIHx8CisJCQkJCQlqc2VzdGF0ZS0+anVtcF9lcnJvciA+PSAwIHx8CisJCQkJCQlqc2Vz dGF0ZS0+anVtcF9ldmFsX3Jlc3VsdF9jb2VyY2lvbiA+PSAwIHx8CisJCQkJCQlqc2VzdGF0ZS0+ bnVtX2l0ZW1fY29lcmNpb25zID4gMCkKKwkJCQkJeworCQkJCQkJaW50CQkJaTsKKwkJCQkJCUxM Vk1WYWx1ZVJlZiB2X2p1bXBfZW1wdHk7CisJCQkJCQlMTFZNVmFsdWVSZWYgdl9qdW1wX2Vycm9y OworCQkJCQkJTExWTVZhbHVlUmVmIHZfanVtcF9jb2VyY2lvbjsKKwkJCQkJCUxMVk1WYWx1ZVJl ZiB2X3N3aXRjaDsKKwkJCQkJCUxMVk1CYXNpY0Jsb2NrUmVmIGJfZG9uZSwKKwkJCQkJCQkJCWJf ZW1wdHksCisJCQkJCQkJCQliX2Vycm9yLAorCQkJCQkJCQkJYl9yZXN1bHRfY29lcmNpb24sCisJ CQkJCQkJCSAgICpiX2l0ZW1fY29lcmNpb25zID0gTlVMTDsKKworCQkJCQkJYl9lbXB0eSA9CisJ CQkJCQkJbF9iYl9iZWZvcmVfdihvcGJsb2Nrc1tvcG5vICsgMV0sCisJCQkJCQkJCQkJICAib3Au JWQuanNvbmV4cHJfZW1wdHkiLCBvcG5vKTsKKwkJCQkJCWJfZXJyb3IgPQorCQkJCQkJCWxfYmJf YmVmb3JlX3Yob3BibG9ja3Nbb3BubyArIDFdLAorCQkJCQkJCQkJCSAgIm9wLiVkLmpzb25leHBy X2Vycm9yIiwgb3Bubyk7CisJCQkJCQliX3Jlc3VsdF9jb2VyY2lvbiA9CisJCQkJCQkJbF9iYl9i ZWZvcmVfdihvcGJsb2Nrc1tvcG5vICsgMV0sCisJCQkJCQkJCQkJICAib3AuJWQuanNvbmV4cHJf cmVzdWx0X2NvZXJjaW9uIiwgb3Bubyk7CisJCQkJCQlpZiAoanNlc3RhdGUtPm51bV9pdGVtX2Nv ZXJjaW9ucyA+IDApCisJCQkJCQl7CisJCQkJCQkJYl9pdGVtX2NvZXJjaW9ucyA9IHBhbGxvYyhz aXplb2YoTExWTUJhc2ljQmxvY2tSZWYpICoKKwkJCQkJCQkJCQkJCQkgIGpzZXN0YXRlLT5udW1f aXRlbV9jb2VyY2lvbnMpOworCQkJCQkJCWZvciAoaSA9IDA7IGkgPCBqc2VzdGF0ZS0+bnVtX2l0 ZW1fY29lcmNpb25zOyBpKyspCisJCQkJCQkJeworCQkJCQkJCQliX2l0ZW1fY29lcmNpb25zW2ld ID0KKwkJCQkJCQkJCWxfYmJfYmVmb3JlX3Yob3BibG9ja3Nbb3BubyArIDFdLAorCQkJCQkJCQkJ CQkJICAib3AuJWQuanNvbmV4cHJfaXRlbV9jb2VyY2lvbi4lZCIsCisJCQkJCQkJCQkJCQkgIG9w bm8sIGkpOworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJCWJfZG9uZSA9CisJCQkJCQkJbF9iYl9i ZWZvcmVfdihvcGJsb2Nrc1tvcG5vICsgMV0sCisJCQkJCQkJCQkJICAib3AuJWQuanNvbmV4cHJf ZG9uZSIsIG9wbm8pOworCisJCQkJCQl2X3N3aXRjaCA9IExMVk1CdWlsZFN3aXRjaChiLAorCQkJ CQkJCQkJCQkJICAgdl9yZXQsCisJCQkJCQkJCQkJCQkgICBiX2RvbmUsCisJCQkJCQkJCQkJCQkg ICBqc2VzdGF0ZS0+bnVtX2l0ZW1fY29lcmNpb25zICsgMyk7CisJCQkJCQkvKiBSZXR1cm5lZCBq c2VzdGF0ZS0+anVtcF9lbXB0eT8gKi8KKwkJCQkJCWlmIChqc2VzdGF0ZS0+anVtcF9lbXB0eSA+ PSAwKQorCQkJCQkJeworCQkJCQkJCXZfanVtcF9lbXB0eSA9IGxfaW50MzJfY29uc3QobGMsIGpz ZXN0YXRlLT5qdW1wX2VtcHR5KTsKKwkJCQkJCQlMTFZNQWRkQ2FzZSh2X3N3aXRjaCwgdl9qdW1w X2VtcHR5LCBiX2VtcHR5KTsKKwkJCQkJCX0KKwkJCQkJCS8qIFJldHVybmVkIGpzZXN0YXRlLT5q dW1wX2Vycm9yPyAqLworCQkJCQkJaWYgKGpzZXN0YXRlLT5qdW1wX2Vycm9yID49IDApCisJCQkJ CQl7CisJCQkJCQkJdl9qdW1wX2Vycm9yID0gbF9pbnQzMl9jb25zdChsYywganNlc3RhdGUtPmp1 bXBfZXJyb3IpOworCQkJCQkJCUxMVk1BZGRDYXNlKHZfc3dpdGNoLCB2X2p1bXBfZXJyb3IsIGJf ZXJyb3IpOworCQkJCQkJfQorCQkJCQkJLyogUmV0dXJuZWQganNlc3RhdGUtPmp1bXBfZXZhbF9y ZXN1bHRfY29lcmNpb24/ICovCisJCQkJCQlpZiAoanNlc3RhdGUtPmp1bXBfZXZhbF9yZXN1bHRf Y29lcmNpb24gPj0gMCkKKwkJCQkJCXsKKwkJCQkJCQl2X2p1bXBfY29lcmNpb24gPSBsX2ludDMy X2NvbnN0KGxjLCBqc2VzdGF0ZS0+anVtcF9ldmFsX3Jlc3VsdF9jb2VyY2lvbik7CisJCQkJCQkJ TExWTUFkZENhc2Uodl9zd2l0Y2gsIHZfanVtcF9jb2VyY2lvbiwgYl9yZXN1bHRfY29lcmNpb24p OworCQkJCQkJfQorCisJCQkJCQkvKgorCQkJCQkJICogUmV0dXJuZWQgb25lIG9mCisJCQkJCQkg KiBqc2VzdGF0ZS0+ZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBzW10/CisJCQkJCQkgKi8KKwkJCQkJ CWZvciAoaSA9IDA7IGkgPCBqc2VzdGF0ZS0+bnVtX2l0ZW1fY29lcmNpb25zOyBpKyspCisJCQkJ CQl7CisJCQkJCQkJaWYgKGpzZXN0YXRlLT5ldmFsX2l0ZW1fY29lcmNpb25fanVtcHNbaV0gPj0g MCkKKwkJCQkJCQl7CisJCQkJCQkJCXZfanVtcF9jb2VyY2lvbiA9IGxfaW50MzJfY29uc3QobGMs IGpzZXN0YXRlLT5ldmFsX2l0ZW1fY29lcmNpb25fanVtcHNbaV0pOworCQkJCQkJCQlMTFZNQWRk Q2FzZSh2X3N3aXRjaCwgdl9qdW1wX2NvZXJjaW9uLCBiX2l0ZW1fY29lcmNpb25zW2ldKTsKKwkJ CQkJCQl9CisJCQkJCQl9CisKKwkJCQkJCS8qIE9OIEVNUFRZIGNvZGUgKi8KKwkJCQkJCUxMVk1Q b3NpdGlvbkJ1aWxkZXJBdEVuZChiLCBiX2VtcHR5KTsKKwkJCQkJCWlmIChqc2VzdGF0ZS0+anVt cF9lbXB0eSA+PSAwKQorCQkJCQkJCUxMVk1CdWlsZEJyKGIsIG9wYmxvY2tzW2pzZXN0YXRlLT5q dW1wX2VtcHR5XSk7CisJCQkJCQllbHNlCisJCQkJCQkJTExWTUJ1aWxkVW5yZWFjaGFibGUoYik7 CisJCQkJCQkvKiBPTiBFUlJPUiBjb2RlICovCisJCQkJCQlMTFZNUG9zaXRpb25CdWlsZGVyQXRF bmQoYiwgYl9lcnJvcik7CisJCQkJCQlpZiAoanNlc3RhdGUtPmp1bXBfZXJyb3IgPj0gMCkKKwkJ CQkJCQlMTFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tqc2VzdGF0ZS0+anVtcF9lcnJvcl0pOworCQkJ CQkJZWxzZQorCQkJCQkJCUxMVk1CdWlsZFVucmVhY2hhYmxlKGIpOworCQkJCQkJLyogcmVzdWx0 X2NvZXJjaW9uIGNvZGUgKi8KKwkJCQkJCUxMVk1Qb3NpdGlvbkJ1aWxkZXJBdEVuZChiLCBiX3Jl c3VsdF9jb2VyY2lvbik7CisJCQkJCQlpZiAoanNlc3RhdGUtPmp1bXBfZXZhbF9yZXN1bHRfY29l cmNpb24gPj0gMCkKKwkJCQkJCQlMTFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tqc2VzdGF0ZS0+anVt cF9ldmFsX3Jlc3VsdF9jb2VyY2lvbl0pOworCQkJCQkJZWxzZQorCQkJCQkJCUxMVk1CdWlsZFVu cmVhY2hhYmxlKGIpOworCQkJCQkJLyogaXRlbSBjb2VyY2lvbiBjb2RlIGJsb2NrcyAqLworCQkJ CQkJZm9yIChpID0gMDsgaSA8IGpzZXN0YXRlLT5udW1faXRlbV9jb2VyY2lvbnM7IGkrKykKKwkJ CQkJCXsKKwkJCQkJCQlMTFZNUG9zaXRpb25CdWlsZGVyQXRFbmQoYiwgYl9pdGVtX2NvZXJjaW9u c1tpXSk7CisJCQkJCQkJaWYgKGpzZXN0YXRlLT5ldmFsX2l0ZW1fY29lcmNpb25fanVtcHNbaV0g Pj0gMCkKKwkJCQkJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3NbanNlc3RhdGUtPmV2YWxfaXRl bV9jb2VyY2lvbl9qdW1wc1tpXV0pOworCQkJCQkJCWVsc2UKKwkJCQkJCQkJTExWTUJ1aWxkVW5y ZWFjaGFibGUoYik7CisJCQkJCQl9CisKKwkJCQkJCUxMVk1Qb3NpdGlvbkJ1aWxkZXJBdEVuZChi LCBiX2RvbmUpOworCQkJCQl9CisKKwkJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3NbanNlc3Rh dGUtPmp1bXBfZW5kXSk7CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJY2FzZSBFRU9QX0pTT05F WFBSX0NPRVJDSU9OOgorCQkJCWJ1aWxkX0V2YWxYRnVuYyhiLCBtb2QsICJFeGVjRXZhbEpzb25D b2VyY2lvbiIsCisJCQkJCQkJCXZfc3RhdGUsIG9wLCB2X2Vjb250ZXh0KTsKKworCQkJCUxMVk1C dWlsZEJyKGIsIG9wYmxvY2tzW29wbm8gKyAxXSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgRUVP UF9KU09ORVhQUl9DT0VSQ0lPTl9GSU5JU0g6CisJCQkJYnVpbGRfRXZhbFhGdW5jKGIsIG1vZCwg IkV4ZWNFdmFsSnNvbkNvZXJjaW9uRmluaXNoIiwKKwkJCQkJCQkJdl9zdGF0ZSwgb3ApOworCisJ CQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nbb3BubyArIDFdKTsKKwkJCQlicmVhazsKKwogCQkJ Y2FzZSBFRU9QX0FHR1JFRjoKIAkJCQl7CiAJCQkJCUxMVk1WYWx1ZVJlZiB2X2FnZ25vOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5jIGIvc3JjL2JhY2tl bmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5jCmluZGV4IDQ3YzlkYWY0MDIuLmVkZDFlMTY3OWIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYworKysgYi9z cmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X3R5cGVzLmMKQEAgLTE3Miw2ICsxNzIsOSBAQCB2 b2lkCSAgICpyZWZlcmVuY2VkX2Z1bmN0aW9uc1tdID0KIAlFeGVjRXZhbFhtbEV4cHIsCiAJRXhl Y0V2YWxKc29uQ29uc3RydWN0b3IsCiAJRXhlY0V2YWxKc29uSXNQcmVkaWNhdGUsCisJRXhlY0V2 YWxKc29uQ29lcmNpb24sCisJRXhlY0V2YWxKc29uQ29lcmNpb25GaW5pc2gsCisJRXhlY0V2YWxK c29uRXhwclBhdGgsCiAJTWFrZUV4cGFuZGVkT2JqZWN0UmVhZE9ubHlJbnRlcm5hbCwKIAlzbG90 X2dldG1pc3NpbmdhdHRycywKIAlzbG90X2dldHNvbWVhdHRyc19pbnQsCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5j cy5jCmluZGV4IDMzZDRkMjNlMjMuLjUzOGNjYjMwYWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L25vZGVzL21ha2VmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCkBA IC04NTYsNiArODU2LDI0IEBAIG1ha2VKc29uVmFsdWVFeHByKEV4cHIgKnJhd19leHByLCBFeHBy ICpmb3JtYXR0ZWRfZXhwciwKIAlyZXR1cm4ganZlOwogfQogCisvKgorICogbWFrZUpzb25CZWhh dmlvciAtCisgKgkgIGNyZWF0ZXMgYSBKc29uQmVoYXZpb3Igbm9kZQorICovCitKc29uQmVoYXZp b3IgKgorbWFrZUpzb25CZWhhdmlvcihKc29uQmVoYXZpb3JUeXBlIHR5cGUsIE5vZGUgKmV4cHIs IEpzb25Db2VyY2lvbiAqY29lcmNpb24sCisJCQkJIGludCBsb2NhdGlvbikKK3sKKwlKc29uQmVo YXZpb3IgKmJlaGF2aW9yID0gbWFrZU5vZGUoSnNvbkJlaGF2aW9yKTsKKworCWJlaGF2aW9yLT5i dHlwZSA9IHR5cGU7CisJYmVoYXZpb3ItPmV4cHIgPSBleHByOworCWJlaGF2aW9yLT5jb2VyY2lv biA9IGNvZXJjaW9uOworCWJlaGF2aW9yLT5sb2NhdGlvbiA9IGxvY2F0aW9uOworCisJcmV0dXJu IGJlaGF2aW9yOworfQorCiAvKgogICogbWFrZUpzb25LZXlWYWx1ZSAtCiAgKgkgIGNyZWF0ZXMg YSBKc29uS2V5VmFsdWUgbm9kZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1 bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwppbmRleCA2YmE4ZTczMjU2Li5m NDViZWQyYTVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYworKysg Yi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpAQCAtMjMzLDYgKzIzMywzMyBAQCBleHBy VHlwZShjb25zdCBOb2RlICpleHByKQogCQljYXNlIFRfSnNvbklzUHJlZGljYXRlOgogCQkJdHlw ZSA9IEJPT0xPSUQ7CiAJCQlicmVhazsKKwkJY2FzZSBUX0pzb25FeHByOgorCQkJeworCQkJCWNv bnN0IEpzb25FeHByICpqZXhwciA9IChjb25zdCBKc29uRXhwciAqKSBleHByOworCisJCQkJdHlw ZSA9IGpleHByLT5yZXR1cm5pbmctPnR5cGlkOworCQkJCWJyZWFrOworCQkJfQorCQljYXNlIFRf SnNvbkNvZXJjaW9uOgorCQkJeworCQkJCWNvbnN0IEpzb25Db2VyY2lvbiAqY29lcmNpb24gPSAo Y29uc3QgSnNvbkNvZXJjaW9uICopIGV4cHI7CisKKwkJCQl0eXBlID0gY29lcmNpb24tPnRhcmdl dHR5cGU7CisJCQkJYnJlYWs7CisJCQl9CisJCWNhc2UgVF9Kc29uSXRlbUNvZXJjaW9uOgorCQkJ dHlwZSA9IGV4cHJUeXBlKCgoSnNvbkl0ZW1Db2VyY2lvbiAqKSBleHByKS0+Y29lcmNpb24pOwor CQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQmVoYXZpb3I6CisJCQl7CisJCQkJY29uc3QgSnNvbkJl aGF2aW9yICpiZWhhdmlvciA9IChjb25zdCBKc29uQmVoYXZpb3IgKikgZXhwcjsKKworCQkJCWlm IChiZWhhdmlvci0+Y29lcmNpb24pCisJCQkJCXR5cGUgPSBleHByVHlwZSgoTm9kZSAqKSBiZWhh dmlvci0+Y29lcmNpb24pOworCQkJCWVsc2UKKwkJCQkJdHlwZSA9IGV4cHJUeXBlKGJlaGF2aW9y LT5leHByKTsKKwkJCQlicmVhazsKKwkJCX0KIAkJY2FzZSBUX051bGxUZXN0OgogCQkJdHlwZSA9 IEJPT0xPSUQ7CiAJCQlicmVhazsKQEAgLTQ5MCw4ICs1MTcsMzIgQEAgZXhwclR5cG1vZChjb25z dCBOb2RlICpleHByKQogCQkJcmV0dXJuICgoY29uc3QgU1FMVmFsdWVGdW5jdGlvbiAqKSBleHBy KS0+dHlwbW9kOwogCQljYXNlIFRfSnNvblZhbHVlRXhwcjoKIAkJCXJldHVybiBleHByVHlwbW9k KChOb2RlICopICgoY29uc3QgSnNvblZhbHVlRXhwciAqKSBleHByKS0+Zm9ybWF0dGVkX2V4cHIp OwotCQljYXNlIFRfSnNvbkNvbnN0cnVjdG9yRXhwcjoKLQkJCXJldHVybiAoKGNvbnN0IEpzb25D b25zdHJ1Y3RvckV4cHIgKikgZXhwciktPnJldHVybmluZy0+dHlwbW9kOworCQljYXNlIFRfSnNv bkV4cHI6CisJCQl7CisJCQkJY29uc3QgSnNvbkV4cHIgKmpleHByID0gKGNvbnN0IEpzb25FeHBy ICopIGV4cHI7CisKKwkJCQlyZXR1cm4gamV4cHItPnJldHVybmluZy0+dHlwbW9kOworCQkJfQor CQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQ29lcmNpb246CisJCQl7CisJCQkJY29uc3QgSnNvbkNv ZXJjaW9uICpjb2VyY2lvbiA9IChjb25zdCBKc29uQ29lcmNpb24gKikgZXhwcjsKKworCQkJCXJl dHVybiBjb2VyY2lvbi0+dGFyZ2V0dHlwbW9kOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9K c29uSXRlbUNvZXJjaW9uOgorCQkJcmV0dXJuIGV4cHJUeXBtb2QoKChKc29uSXRlbUNvZXJjaW9u ICopIGV4cHIpLT5jb2VyY2lvbik7CisJCWNhc2UgVF9Kc29uQmVoYXZpb3I6CisJCQl7CisJCQkJ Y29uc3QgSnNvbkJlaGF2aW9yICpiZWhhdmlvciA9IChjb25zdCBKc29uQmVoYXZpb3IgKikgZXhw cjsKKworCQkJCWlmIChiZWhhdmlvci0+Y29lcmNpb24pCisJCQkJCXJldHVybiBleHByVHlwbW9k KChOb2RlICopIGJlaGF2aW9yLT5jb2VyY2lvbik7CisJCQkJZWxzZQorCQkJCQlyZXR1cm4gZXhw clR5cG1vZChiZWhhdmlvci0+ZXhwcik7CisJCQl9CisJCQlicmVhazsKIAkJY2FzZSBUX0NvZXJj ZVRvRG9tYWluOgogCQkJcmV0dXJuICgoY29uc3QgQ29lcmNlVG9Eb21haW4gKikgZXhwciktPnJl c3VsdHR5cG1vZDsKIAkJY2FzZSBUX0NvZXJjZVRvRG9tYWluVmFsdWU6CkBAIC05NjgsNiArMTAx OSwyNyBAQCBleHByQ29sbGF0aW9uKGNvbnN0IE5vZGUgKmV4cHIpCiAJCQkvKiBJUyBKU09OJ3Mg cmVzdWx0IGlzIGJvb2xlYW4gLi4uICovCiAJCQljb2xsID0gSW52YWxpZE9pZDsJLyogLi4uIHNv IGl0IGhhcyBubyBjb2xsYXRpb24gKi8KIAkJCWJyZWFrOworCQljYXNlIFRfSnNvbkV4cHI6CisJ CQljb2xsID0gZXhwckNvbGxhdGlvbigoKEpzb25FeHByICopIGV4cHIpLT5yZXN1bHRfY29lcmNp b24pOworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQ29lcmNpb246CisJCQljb2xsID0gKChjb25z dCBKc29uQ29lcmNpb24gKikgZXhwciktPmNvbGxhdGlvbjsKKwkJCWJyZWFrOworCQljYXNlIFRf SnNvbkl0ZW1Db2VyY2lvbjoKKwkJCWNvbGwgPSBleHByQ29sbGF0aW9uKCgoSnNvbkl0ZW1Db2Vy Y2lvbiAqKSBleHByKS0+Y29lcmNpb24pOworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQmVoYXZp b3I6CisJCQl7CisJCQkJSnNvbkJlaGF2aW9yICpiZWhhdmlvciA9IChKc29uQmVoYXZpb3IgKikg ZXhwcjsKKworCQkJCWlmIChiZWhhdmlvci0+Y29lcmNpb24pCisJCQkJCWNvbGwgPSBleHByQ29s bGF0aW9uKChOb2RlICopIGJlaGF2aW9yLT5jb2VyY2lvbik7CisJCQkJZWxzZSBpZiAoYmVoYXZp b3ItPmV4cHIpCisJCQkJCWNvbGwgPSBleHByQ29sbGF0aW9uKGJlaGF2aW9yLT5leHByKTsKKwkJ CQllbHNlCisJCQkJCWNvbGwgPSBJbnZhbGlkT2lkOworCQkJfQorCQkJYnJlYWs7CiAJCWNhc2Ug VF9OdWxsVGVzdDoKIAkJCS8qIE51bGxUZXN0J3MgcmVzdWx0IGlzIGJvb2xlYW4gLi4uICovCiAJ CQljb2xsID0gSW52YWxpZE9pZDsJLyogLi4uIHNvIGl0IGhhcyBubyBjb2xsYXRpb24gKi8KQEAg LTEyMDQsNiArMTI3Niw0NCBAQCBleHByU2V0Q29sbGF0aW9uKE5vZGUgKmV4cHIsIE9pZCBjb2xs YXRpb24pCiAJCWNhc2UgVF9Kc29uSXNQcmVkaWNhdGU6CiAJCQlBc3NlcnQoIU9pZElzVmFsaWQo Y29sbGF0aW9uKSk7IC8qIHJlc3VsdCBpcyBhbHdheXMgYm9vbGVhbiAqLwogCQkJYnJlYWs7CisJ CWNhc2UgVF9Kc29uRXhwcjoKKwkJCXsKKwkJCQlKc29uRXhwciAgICpqZXhwciA9IChKc29uRXhw ciAqKSBleHByOworCisJCQkJaWYgKGpleHByLT5yZXN1bHRfY29lcmNpb24pCisJCQkJCWV4cHJT ZXRDb2xsYXRpb24oKE5vZGUgKikgamV4cHItPnJlc3VsdF9jb2VyY2lvbiwgY29sbGF0aW9uKTsK KwkJCQllbHNlCisJCQkJCUFzc2VydCghT2lkSXNWYWxpZChjb2xsYXRpb24pKTsgLyogcmVzdWx0 IGlzIGFsd2F5cyBhCisJCQkJCQkJCQkJCQkJICoganNvbltiXSB0eXBlICovCisJCQl9CisJCQli cmVhazsKKwkJY2FzZSBUX0pzb25JdGVtQ29lcmNpb246CisJCQl7CisJCQkJSnNvbkl0ZW1Db2Vy Y2lvbiAqaXRlbV9jb2VyY2lvbiA9IChKc29uSXRlbUNvZXJjaW9uICopIGV4cHI7CisKKwkJCQlp ZiAoaXRlbV9jb2VyY2lvbi0+Y29lcmNpb24pCisJCQkJCWV4cHJTZXRDb2xsYXRpb24oaXRlbV9j b2VyY2lvbi0+Y29lcmNpb24sIGNvbGxhdGlvbik7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBU X0pzb25Db2VyY2lvbjoKKwkJCXsKKwkJCQlKc29uQ29lcmNpb24gKmNvZXJjaW9uID0gKEpzb25D b2VyY2lvbiAqKSBleHByOworCisJCQkJaWYgKGNvZXJjaW9uLT5jYXN0X2V4cHIpCisJCQkJCWV4 cHJTZXRDb2xsYXRpb24oY29lcmNpb24tPmNhc3RfZXhwciwgY29sbGF0aW9uKTsKKwkJCQljb2Vy Y2lvbi0+Y29sbGF0aW9uID0gY29sbGF0aW9uOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9K c29uQmVoYXZpb3I6CisJCQl7CisJCQkJSnNvbkJlaGF2aW9yICpiZWhhdmlvciA9IChKc29uQmVo YXZpb3IgKikgZXhwcjsKKworCQkJCWlmIChiZWhhdmlvci0+ZXhwcikKKwkJCQkJZXhwclNldENv bGxhdGlvbihiZWhhdmlvci0+ZXhwciwgY29sbGF0aW9uKTsKKwkJCQlpZiAoYmVoYXZpb3ItPmNv ZXJjaW9uKQorCQkJCQlleHByU2V0Q29sbGF0aW9uKChOb2RlICopIGJlaGF2aW9yLT5jb2VyY2lv biwgY29sbGF0aW9uKTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfTnVsbFRlc3Q6CiAJCQkv KiBOdWxsVGVzdCdzIHJlc3VsdCBpcyBib29sZWFuIC4uLiAqLwogCQkJQXNzZXJ0KCFPaWRJc1Zh bGlkKGNvbGxhdGlvbikpOyAvKiAuLi4gc28gbmV2ZXIgc2V0IGEgY29sbGF0aW9uICovCkBAIC0x NTA3LDYgKzE2MTcsMTggQEAgZXhwckxvY2F0aW9uKGNvbnN0IE5vZGUgKmV4cHIpCiAJCWNhc2Ug VF9Kc29uSXNQcmVkaWNhdGU6CiAJCQlsb2MgPSAoKGNvbnN0IEpzb25Jc1ByZWRpY2F0ZSAqKSBl eHByKS0+bG9jYXRpb247CiAJCQlicmVhazsKKwkJY2FzZSBUX0pzb25FeHByOgorCQkJeworCQkJ CWNvbnN0IEpzb25FeHByICpqc2V4cHIgPSAoY29uc3QgSnNvbkV4cHIgKikgZXhwcjsKKworCQkJ CS8qIGNvbnNpZGVyIGJvdGggZnVuY3Rpb24gbmFtZSBhbmQgbGVmdG1vc3QgYXJnICovCisJCQkJ bG9jID0gbGVmdG1vc3RMb2MoanNleHByLT5sb2NhdGlvbiwKKwkJCQkJCQkJICBleHByTG9jYXRp b24oanNleHByLT5mb3JtYXR0ZWRfZXhwcikpOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9K c29uQmVoYXZpb3I6CisJCQlsb2MgPSBleHByTG9jYXRpb24oKChKc29uQmVoYXZpb3IgKikgZXhw ciktPmV4cHIpOworCQkJYnJlYWs7CiAJCWNhc2UgVF9OdWxsVGVzdDoKIAkJCXsKIAkJCQljb25z dCBOdWxsVGVzdCAqbmV4cHIgPSAoY29uc3QgTnVsbFRlc3QgKikgZXhwcjsKQEAgLTIyNTksNiAr MjM4MSw1MSBAQCBleHByZXNzaW9uX3RyZWVfd2Fsa2VyX2ltcGwoTm9kZSAqbm9kZSwKIAkJCWJy ZWFrOwogCQljYXNlIFRfSnNvbklzUHJlZGljYXRlOgogCQkJcmV0dXJuIFdBTEsoKChKc29uSXNQ cmVkaWNhdGUgKikgbm9kZSktPmV4cHIpOworCQljYXNlIFRfSnNvbkV4cHI6CisJCQl7CisJCQkJ SnNvbkV4cHIgICAqamV4cHIgPSAoSnNvbkV4cHIgKikgbm9kZTsKKworCQkJCWlmIChXQUxLKGpl eHByLT5mb3JtYXR0ZWRfZXhwcikpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKGpl eHByLT5yZXN1bHRfY29lcmNpb24pKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhq ZXhwci0+aXRlbV9jb2VyY2lvbnMpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhq ZXhwci0+cGFzc2luZ192YWx1ZXMpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQkvKiB3ZSBhc3N1 bWUgd2Fsa2VyIGRvZXNuJ3QgY2FyZSBhYm91dCBwYXNzaW5nX25hbWVzICovCisJCQkJaWYgKFdB TEsoamV4cHItPm9uX2VtcHR5KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoamV4 cHItPm9uX2Vycm9yKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQlicmVhazsKKwkJY2Fz ZSBUX0pzb25Db2VyY2lvbjoKKwkJCXsKKwkJCQlKc29uQ29lcmNpb24gKmNvZXJjaW9uID0gKEpz b25Db2VyY2lvbiAqKSBub2RlOworCisJCQkJaWYgKFdBTEsoY29lcmNpb24tPmNhc3RfZXhwcikp CisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uSXRlbUNv ZXJjaW9uOgorCQkJeworCQkJCUpzb25JdGVtQ29lcmNpb24gKml0ZW1fY29lcmNpb24gPSAoSnNv bkl0ZW1Db2VyY2lvbiAqKSBub2RlOworCisJCQkJaWYgKFdBTEsoaXRlbV9jb2VyY2lvbi0+Y29l cmNpb24pKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFRfSnNv bkJlaGF2aW9yOgorCQkJeworCQkJCUpzb25CZWhhdmlvciAqYmVoYXZpb3IgPSAoSnNvbkJlaGF2 aW9yICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhiZWhhdmlvci0+ZXhwcikpCisJCQkJCXJldHVy biB0cnVlOworCQkJCWlmIChXQUxLKGJlaGF2aW9yLT5jb2VyY2lvbikpCisJCQkJCXJldHVybiB0 cnVlOworCQkJfQorCQkJYnJlYWs7CiAJCWNhc2UgVF9OdWxsVGVzdDoKIAkJCXJldHVybiBXQUxL KCgoTnVsbFRlc3QgKikgbm9kZSktPmFyZyk7CiAJCWNhc2UgVF9Cb29sZWFuVGVzdDoKQEAgLTMy NjIsNiArMzQyOSw1MyBAQCBleHByZXNzaW9uX3RyZWVfbXV0YXRvcl9pbXBsKE5vZGUgKm5vZGUs CiAKIAkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKIAkJCX0KKwkJY2FzZSBUX0pzb25FeHBy OgorCQkJeworCQkJCUpzb25FeHByICAgKmpleHByID0gKEpzb25FeHByICopIG5vZGU7CisJCQkJ SnNvbkV4cHIgICAqbmV3bm9kZTsKKworCQkJCUZMQVRDT1BZKG5ld25vZGUsIGpleHByLCBKc29u RXhwcik7CisJCQkJTVVUQVRFKG5ld25vZGUtPnBhdGhfc3BlYywgamV4cHItPnBhdGhfc3BlYywg Tm9kZSAqKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+Zm9ybWF0dGVkX2V4cHIsIGpleHByLT5mb3Jt YXR0ZWRfZXhwciwgTm9kZSAqKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+cmVzdWx0X2NvZXJjaW9u LCBqZXhwci0+cmVzdWx0X2NvZXJjaW9uLCBOb2RlICopOworCQkJCU1VVEFURShuZXdub2RlLT5p dGVtX2NvZXJjaW9ucywgamV4cHItPml0ZW1fY29lcmNpb25zLCBMaXN0ICopOworCQkJCU1VVEFU RShuZXdub2RlLT5wYXNzaW5nX3ZhbHVlcywgamV4cHItPnBhc3NpbmdfdmFsdWVzLCBMaXN0ICop OworCQkJCS8qIGFzc3VtZSBtdXRhdG9yIGRvZXMgbm90IGNhcmUgYWJvdXQgcGFzc2luZ19uYW1l cyAqLworCQkJCU1VVEFURShuZXdub2RlLT5vbl9lbXB0eSwgamV4cHItPm9uX2VtcHR5LCBKc29u QmVoYXZpb3IgKik7CisJCQkJTVVUQVRFKG5ld25vZGUtPm9uX2Vycm9yLCBqZXhwci0+b25fZXJy b3IsIEpzb25CZWhhdmlvciAqKTsKKwkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKKwkJCX0K KwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkNvZXJjaW9uOgorCQkJeworCQkJCUpzb25Db2VyY2lv biAqY29lcmNpb24gPSAoSnNvbkNvZXJjaW9uICopIG5vZGU7CisJCQkJSnNvbkNvZXJjaW9uICpu ZXdub2RlOworCisJCQkJRkxBVENPUFkobmV3bm9kZSwgY29lcmNpb24sIEpzb25Db2VyY2lvbik7 CisJCQkJTVVUQVRFKG5ld25vZGUtPmNhc3RfZXhwciwgY29lcmNpb24tPmNhc3RfZXhwciwgTm9k ZSAqKTsKKwkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKKwkJCX0KKwkJY2FzZSBUX0pzb25J dGVtQ29lcmNpb246CisJCQl7CisJCQkJSnNvbkl0ZW1Db2VyY2lvbiAqaXRlbV9jb2VyY2lvbiA9 IChKc29uSXRlbUNvZXJjaW9uICopIG5vZGU7CisJCQkJSnNvbkl0ZW1Db2VyY2lvbiAqbmV3bm9k ZTsKKworCQkJCUZMQVRDT1BZKG5ld25vZGUsIGl0ZW1fY29lcmNpb24sIEpzb25JdGVtQ29lcmNp b24pOworCQkJCU1VVEFURShuZXdub2RlLT5jb2VyY2lvbiwgaXRlbV9jb2VyY2lvbi0+Y29lcmNp b24sIE5vZGUgKik7CisJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CisJCQl9CisJCQlicmVh azsKKwkJY2FzZSBUX0pzb25CZWhhdmlvcjoKKwkJCXsKKwkJCQlKc29uQmVoYXZpb3IgKmJlaGF2 aW9yID0gKEpzb25CZWhhdmlvciAqKSBub2RlOworCQkJCUpzb25CZWhhdmlvciAqbmV3bm9kZTsK KworCQkJCUZMQVRDT1BZKG5ld25vZGUsIGJlaGF2aW9yLCBKc29uQmVoYXZpb3IpOworCQkJCU1V VEFURShuZXdub2RlLT5leHByLCBiZWhhdmlvci0+ZXhwciwgTm9kZSAqKTsKKwkJCQlNVVRBVEUo bmV3bm9kZS0+Y29lcmNpb24sIGJlaGF2aW9yLT5jb2VyY2lvbiwgSnNvbkNvZXJjaW9uICopOwor CQkJCXJldHVybiAoTm9kZSAqKSBuZXdub2RlOworCQkJfQorCQkJYnJlYWs7CiAJCWNhc2UgVF9O dWxsVGVzdDoKIAkJCXsKIAkJCQlOdWxsVGVzdCAgICpudGVzdCA9IChOdWxsVGVzdCAqKSBub2Rl OwpAQCAtMzk1MCw2ICs0MTY0LDM2IEBAIHJhd19leHByZXNzaW9uX3RyZWVfd2Fsa2VyX2ltcGwo Tm9kZSAqbm9kZSwKIAkJCWJyZWFrOwogCQljYXNlIFRfSnNvbklzUHJlZGljYXRlOgogCQkJcmV0 dXJuIFdBTEsoKChKc29uSXNQcmVkaWNhdGUgKikgbm9kZSktPmV4cHIpOworCQljYXNlIFRfSnNv bkFyZ3VtZW50OgorCQkJcmV0dXJuIFdBTEsoKChKc29uQXJndW1lbnQgKikgbm9kZSktPnZhbCk7 CisJCWNhc2UgVF9Kc29uRnVuY0V4cHI6CisJCQl7CisJCQkJSnNvbkZ1bmNFeHByICpqZmUgPSAo SnNvbkZ1bmNFeHByICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhqZmUtPmNvbnRleHRfaXRlbSkp CisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKGpmZS0+cGF0aHNwZWMpKQorCQkJCQly ZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhqZmUtPnBhc3NpbmcpKQorCQkJCQlyZXR1cm4gdHJ1 ZTsKKwkJCQlpZiAoamZlLT5vdXRwdXQgJiYgV0FMSyhqZmUtPm91dHB1dCkpCisJCQkJCXJldHVy biB0cnVlOworCQkJCWlmIChqZmUtPm9uX2VtcHR5KQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlp ZiAoamZlLT5vbl9lcnJvcikKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQlicmVhazsKKwkJ Y2FzZSBUX0pzb25CZWhhdmlvcjoKKwkJCXsKKwkJCQlKc29uQmVoYXZpb3IgKmpiID0gKEpzb25C ZWhhdmlvciAqKSBub2RlOworCisJCQkJaWYgKFdBTEsoamItPmV4cHIpKQorCQkJCQlyZXR1cm4g dHJ1ZTsKKwkJCQlpZiAoV0FMSyhqYi0+Y29lcmNpb24pKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJ CX0KKwkJCWJyZWFrOwogCQljYXNlIFRfTnVsbFRlc3Q6CiAJCQlyZXR1cm4gV0FMSygoKE51bGxU ZXN0ICopIG5vZGUpLT5hcmcpOwogCQljYXNlIFRfQm9vbGVhblRlc3Q6CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BhdGgvY29zdHNpemUuYwppbmRleCA4M2EwYWVkMDUxLi4zYzE0YzYwNWEwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCisrKyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMKQEAgLTQ4NzgsNyArNDg3OCw4IEBAIGNvc3Rf cXVhbF9ldmFsX3dhbGtlcihOb2RlICpub2RlLCBjb3N0X3F1YWxfZXZhbF9jb250ZXh0ICpjb250 ZXh0KQogCQkJIElzQShub2RlLCBTUUxWYWx1ZUZ1bmN0aW9uKSB8fAogCQkJIElzQShub2RlLCBY bWxFeHByKSB8fAogCQkJIElzQShub2RlLCBDb2VyY2VUb0RvbWFpbikgfHwKLQkJCSBJc0Eobm9k ZSwgTmV4dFZhbHVlRXhwcikpCisJCQkgSXNBKG5vZGUsIE5leHRWYWx1ZUV4cHIpIHx8CisJCQkg SXNBKG5vZGUsIEpzb25FeHByKSkKIAl7CiAJCS8qIFRyZWF0IGFsbCB0aGVzZSBhcyBoYXZpbmcg Y29zdCAxICovCiAJCWNvbnRleHQtPnRvdGFsLnBlcl90dXBsZSArPSBjcHVfb3BlcmF0b3JfY29z dDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYwppbmRleCA2MmRlMDIyNWZlLi42ZWEw N2E3NTM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCkBAIC01MCw2ICs1MCw3 IEBACiAjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGlscy9qc29uLmgi CiAjaW5jbHVkZSAidXRpbHMvanNvbmIuaCIKKyNpbmNsdWRlICJ1dGlscy9qc29ucGF0aC5oIgog I2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgi CiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKQEAgLTQxNCw2ICs0MTUsMjUgQEAgY29udGFp bl9tdXRhYmxlX2Z1bmN0aW9uc193YWxrZXIoTm9kZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKIAkJ LyogQ2hlY2sgYWxsIHN1Ym5vZGVzICovCiAJfQogCisJaWYgKElzQShub2RlLCBKc29uRXhwcikp CisJeworCQlKc29uRXhwciAgICpqZXhwciA9IGNhc3ROb2RlKEpzb25FeHByLCBub2RlKTsKKwkJ Q29uc3QJICAgKmNuc3Q7CisKKwkJaWYgKCFJc0EoamV4cHItPnBhdGhfc3BlYywgQ29uc3QpKQor CQkJcmV0dXJuIHRydWU7CisKKwkJY25zdCA9IGNhc3ROb2RlKENvbnN0LCBqZXhwci0+cGF0aF9z cGVjKTsKKworCQlBc3NlcnQoY25zdC0+Y29uc3R0eXBlID09IEpTT05QQVRIT0lEKTsKKwkJaWYg KGNuc3QtPmNvbnN0aXNudWxsKQorCQkJcmV0dXJuIGZhbHNlOworCisJCWlmIChqc3BJc011dGFi bGUoRGF0dW1HZXRKc29uUGF0aFAoY25zdC0+Y29uc3R2YWx1ZSksCisJCQkJCQkgamV4cHItPnBh c3NpbmdfbmFtZXMsIGpleHByLT5wYXNzaW5nX3ZhbHVlcykpCisJCQlyZXR1cm4gdHJ1ZTsKKwl9 CisKIAlpZiAoSXNBKG5vZGUsIFNRTFZhbHVlRnVuY3Rpb24pKQogCXsKIAkJLyogYWxsIHZhcmlh bnRzIG9mIFNRTFZhbHVlRnVuY3Rpb24gYXJlIHN0YWJsZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggMTMw ZjdmYzdjMy4uZTkwMGVkZmI4YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC02NTIsMTAgKzY1MiwxOSBAQCBz dGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAq YWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQkJCWpzb25fcmV0dXJuaW5nX2NsYXVzZV9vcHQKIAkJ CQlqc29uX25hbWVfYW5kX3ZhbHVlCiAJCQkJanNvbl9hZ2dyZWdhdGVfZnVuYworCQkJCWpzb25f YXJndW1lbnQKKwkJCQlqc29uX2JlaGF2aW9yCisJCQkJanNvbl9vbl9lcnJvcl9jbGF1c2Vfb3B0 CiAldHlwZSA8bGlzdD4JanNvbl9uYW1lX2FuZF92YWx1ZV9saXN0CiAJCQkJanNvbl92YWx1ZV9l eHByX2xpc3QKIAkJCQlqc29uX2FycmF5X2FnZ3JlZ2F0ZV9vcmRlcl9ieV9jbGF1c2Vfb3B0Ci0l dHlwZSA8aXZhbD4JanNvbl9wcmVkaWNhdGVfdHlwZV9jb25zdHJhaW50CisJCQkJanNvbl9hcmd1 bWVudHMKKwkJCQlqc29uX2JlaGF2aW9yX2NsYXVzZV9vcHQKKwkJCQlqc29uX3Bhc3NpbmdfY2xh dXNlX29wdAorJXR5cGUgPGl2YWw+CWpzb25fYmVoYXZpb3JfdHlwZQorCQkJCWpzb25fcHJlZGlj YXRlX3R5cGVfY29uc3RyYWludAorCQkJCWpzb25fcXVvdGVzX2NsYXVzZV9vcHQKKwkJCQlqc29u X3dyYXBwZXJfYmVoYXZpb3IKICV0eXBlIDxib29sZWFuPglqc29uX2tleV91bmlxdWVuZXNzX2Nv bnN0cmFpbnRfb3B0CiAJCQkJanNvbl9vYmplY3RfY29uc3RydWN0b3JfbnVsbF9jbGF1c2Vfb3B0 CiAJCQkJanNvbl9hcnJheV9jb25zdHJ1Y3Rvcl9udWxsX2NsYXVzZV9vcHQKQEAgLTY5Niw3ICs3 MDUsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFt ZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCUNBQ0hFIENBTEwgQ0FMTEVEIENBU0NB REUgQ0FTQ0FERUQgQ0FTRSBDQVNUIENBVEFMT0dfUCBDSEFJTiBDSEFSX1AKIAlDSEFSQUNURVIg Q0hBUkFDVEVSSVNUSUNTIENIRUNLIENIRUNLUE9JTlQgQ0xBU1MgQ0xPU0UKIAlDTFVTVEVSIENP QUxFU0NFIENPTExBVEUgQ09MTEFUSU9OIENPTFVNTiBDT0xVTU5TIENPTU1FTlQgQ09NTUVOVFMg Q09NTUlUCi0JQ09NTUlUVEVEIENPTVBSRVNTSU9OIENPTkNVUlJFTlRMWSBDT05GSUdVUkFUSU9O IENPTkZMSUNUCisJQ09NTUlUVEVEIENPTVBSRVNTSU9OIENPTkNVUlJFTlRMWSBDT05ESVRJT05B TCBDT05GSUdVUkFUSU9OIENPTkZMSUNUCiAJQ09OTkVDVElPTiBDT05TVFJBSU5UIENPTlNUUkFJ TlRTIENPTlRFTlRfUCBDT05USU5VRV9QIENPTlZFUlNJT05fUCBDT1BZCiAJQ09TVCBDUkVBVEUg Q1JPU1MgQ1NWIENVQkUgQ1VSUkVOVF9QCiAJQ1VSUkVOVF9DQVRBTE9HIENVUlJFTlRfREFURSBD VVJSRU5UX1JPTEUgQ1VSUkVOVF9TQ0hFTUEKQEAgLTcwNyw4ICs3MTYsOCBAQCBzdGF0aWMgTm9k ZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywg Tm9kZSAqcXVlcnkpOwogCURFVEFDSCBESUNUSU9OQVJZIERJU0FCTEVfUCBESVNDQVJEIERJU1RJ TkNUIERPIERPQ1VNRU5UX1AgRE9NQUlOX1AKIAlET1VCTEVfUCBEUk9QCiAKLQlFQUNIIEVMU0Ug RU5BQkxFX1AgRU5DT0RJTkcgRU5DUllQVEVEIEVORF9QIEVOVU1fUCBFU0NBUEUgRVZFTlQgRVhD RVBUCi0JRVhDTFVERSBFWENMVURJTkcgRVhDTFVTSVZFIEVYRUNVVEUgRVhJU1RTIEVYUExBSU4g RVhQUkVTU0lPTgorCUVBQ0ggRUxTRSBFTVBUWV9QIEVOQUJMRV9QIEVOQ09ESU5HIEVOQ1JZUFRF RCBFTkRfUCBFTlVNX1AgRVJST1JfUCBFU0NBUEUKKwlFVkVOVCBFWENFUFQgRVhDTFVERSBFWENM VURJTkcgRVhDTFVTSVZFIEVYRUNVVEUgRVhJU1RTIEVYUExBSU4gRVhQUkVTU0lPTgogCUVYVEVO U0lPTiBFWFRFUk5BTCBFWFRSQUNUCiAKIAlGQUxTRV9QIEZBTUlMWSBGRVRDSCBGSUxURVIgRklO QUxJWkUgRklSU1RfUCBGTE9BVF9QIEZPTExPV0lORyBGT1IKQEAgLTcyMywxMCArNzMyLDEwIEBA IHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0 ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJSU5ORVJfUCBJTk9VVCBJTlBVVF9QIElOU0VOU0lU SVZFIElOU0VSVCBJTlNURUFEIElOVF9QIElOVEVHRVIKIAlJTlRFUlNFQ1QgSU5URVJWQUwgSU5U TyBJTlZPS0VSIElTIElTTlVMTCBJU09MQVRJT04KIAotCUpPSU4gSlNPTiBKU09OX0FSUkFZIEpT T05fQVJSQVlBR0cgSlNPTl9PQkpFQ1QgSlNPTl9PQkpFQ1RBR0cKLQlKU09OX1NDQUxBUiBKU09O X1NFUklBTElaRQorCUpPSU4gSlNPTiBKU09OX0FSUkFZIEpTT05fQVJSQVlBR0cgSlNPTl9FWElT VFMgSlNPTl9PQkpFQ1QgSlNPTl9PQkpFQ1RBR0cKKwlKU09OX1FVRVJZIEpTT05fU0NBTEFSIEpT T05fU0VSSUFMSVpFIEpTT05fVkFMVUUKIAotCUtFWSBLRVlTCisJS0VFUCBLRVkgS0VZUwogCiAJ TEFCRUwgTEFOR1VBR0UgTEFSR0VfUCBMQVNUX1AgTEFURVJBTF9QCiAJTEVBRElORyBMRUFLUFJP T0YgTEVBU1QgTEVGVCBMRVZFTCBMSUtFIExJTUlUIExJU1RFTiBMT0FEIExPQ0FMCkBAIC03NDAs NyArNzQ5LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJl bG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlOT1QgTk9USElORyBOT1RJRlkg Tk9UTlVMTCBOT1dBSVQgTlVMTF9QIE5VTExJRgogCU5VTExTX1AgTlVNRVJJQwogCi0JT0JKRUNU X1AgT0YgT0ZGIE9GRlNFVCBPSURTIE9MRCBPTiBPTkxZIE9QRVJBVE9SIE9QVElPTiBPUFRJT05T IE9SCisJT0JKRUNUX1AgT0YgT0ZGIE9GRlNFVCBPSURTIE9MRCBPTUlUIE9OIE9OTFkgT1BFUkFU T1IgT1BUSU9OIE9QVElPTlMgT1IKIAlPUkRFUiBPUkRJTkFMSVRZIE9USEVSUyBPVVRfUCBPVVRF Ul9QCiAJT1ZFUiBPVkVSTEFQUyBPVkVSTEFZIE9WRVJSSURJTkcgT1dORUQgT1dORVIKIApAQCAt NzQ5LDcgKzc1OCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFy ICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJUE9TSVRJT04gUFJFQ0VE SU5HIFBSRUNJU0lPTiBQUkVTRVJWRSBQUkVQQVJFIFBSRVBBUkVEIFBSSU1BUlkKIAlQUklPUiBQ UklWSUxFR0VTIFBST0NFRFVSQUwgUFJPQ0VEVVJFIFBST0NFRFVSRVMgUFJPR1JBTSBQVUJMSUNB VElPTgogCi0JUVVPVEUKKwlRVU9URSBRVU9URVMKIAogCVJBTkdFIFJFQUQgUkVBTCBSRUFTU0lH TiBSRUNIRUNLIFJFQ1VSU0lWRSBSRUZfUCBSRUZFUkVOQ0VTIFJFRkVSRU5DSU5HCiAJUkVGUkVT SCBSRUlOREVYIFJFTEFUSVZFX1AgUkVMRUFTRSBSRU5BTUUgUkVQRUFUQUJMRSBSRVBMQUNFIFJF UExJQ0EKQEAgLTc2MCw3ICs3NjksNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdT ZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCVNFUVVF TkNFIFNFUVVFTkNFUwogCVNFUklBTElaQUJMRSBTRVJWRVIgU0VTU0lPTiBTRVNTSU9OX1VTRVIg U0VUIFNFVFMgU0VUT0YgU0hBUkUgU0hPVwogCVNJTUlMQVIgU0lNUExFIFNLSVAgU01BTExJTlQg U05BUFNIT1QgU09NRSBTUUxfUCBTVEFCTEUgU1RBTkRBTE9ORV9QCi0JU1RBUlQgU1RBVEVNRU5U IFNUQVRJU1RJQ1MgU1RESU4gU1RET1VUIFNUT1JBR0UgU1RPUkVEIFNUUklDVF9QIFNUUklQX1AK KwlTVEFSVCBTVEFURU1FTlQgU1RBVElTVElDUyBTVERJTiBTVERPVVQgU1RPUkFHRSBTVE9SRUQg U1RSSUNUX1AgU1RSSU5HX1AgU1RSSVBfUAogCVNVQlNDUklQVElPTiBTVUJTVFJJTkcgU1VQUE9S VCBTWU1NRVRSSUMgU1lTSUQgU1lTVEVNX1AgU1lTVEVNX1VTRVIKIAogCVRBQkxFIFRBQkxFUyBU QUJMRVNBTVBMRSBUQUJMRVNQQUNFIFRFTVAgVEVNUExBVEUgVEVNUE9SQVJZIFRFWFRfUCBUSEVO CkBAIC03NjgsNyArNzc3LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0 KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlUUkVBVCBUUklH R0VSIFRSSU0gVFJVRV9QCiAJVFJVTkNBVEUgVFJVU1RFRCBUWVBFX1AgVFlQRVNfUAogCi0JVUVT Q0FQRSBVTkJPVU5ERUQgVU5DT01NSVRURUQgVU5FTkNSWVBURUQgVU5JT04gVU5JUVVFIFVOS05P V04KKwlVRVNDQVBFIFVOQk9VTkRFRCBVTkNPTkRJVElPTkFMIFVOQ09NTUlUVEVEIFVORU5DUllQ VEVEIFVOSU9OIFVOSVFVRSBVTktOT1dOCiAJVU5MSVNURU4gVU5MT0dHRUQgVU5USUwgVVBEQVRF IFVTRVIgVVNJTkcKIAogCVZBQ1VVTSBWQUxJRCBWQUxJREFURSBWQUxJREFUT1IgVkFMVUVfUCBW QUxVRVMgVkFSQ0hBUiBWQVJJQURJQyBWQVJZSU5HCkBAIC0xNTc4OSw2ICsxNTc5OCw2MiBAQCBm dW5jX2V4cHJfY29tbW9uX3N1YmV4cHI6CiAJCQkJCW4tPmxvY2F0aW9uID0gQDE7CiAJCQkJCSQk ID0gKE5vZGUgKikgbjsKIAkJCQl9CisJCQl8IEpTT05fUVVFUlkgJygnCisJCQkJanNvbl92YWx1 ZV9leHByICcsJyBhX2V4cHIganNvbl9wYXNzaW5nX2NsYXVzZV9vcHQKKwkJCQlqc29uX3JldHVy bmluZ19jbGF1c2Vfb3B0CisJCQkJanNvbl93cmFwcGVyX2JlaGF2aW9yCisJCQkJanNvbl9xdW90 ZXNfY2xhdXNlX29wdAorCQkJCWpzb25fYmVoYXZpb3JfY2xhdXNlX29wdAorCQkJJyknCisJCQkJ eworCQkJCQlKc29uRnVuY0V4cHIgKm4gPSBtYWtlTm9kZShKc29uRnVuY0V4cHIpOworCisJCQkJ CW4tPm9wID0gSlNPTl9RVUVSWV9PUDsKKwkJCQkJbi0+Y29udGV4dF9pdGVtID0gKEpzb25WYWx1 ZUV4cHIgKikgJDM7CisJCQkJCW4tPnBhdGhzcGVjID0gJDU7CisJCQkJCW4tPnBhc3NpbmcgPSAk NjsKKwkJCQkJbi0+b3V0cHV0ID0gKEpzb25PdXRwdXQgKikgJDc7CisJCQkJCW4tPndyYXBwZXIg PSAkODsKKwkJCQkJbi0+cXVvdGVzID0gJDk7CisJCQkJCW4tPm9uX2VtcHR5ID0gKEpzb25CZWhh dmlvciAqKSBsaW5pdGlhbCgkMTApOworCQkJCQluLT5vbl9lcnJvciA9IChKc29uQmVoYXZpb3Ig KikgbHNlY29uZCgkMTApOworCQkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2Rl ICopIG47CisJCQkJfQorCQkJfCBKU09OX0VYSVNUUyAnKCcKKwkJCQlqc29uX3ZhbHVlX2V4cHIg JywnIGFfZXhwciBqc29uX3Bhc3NpbmdfY2xhdXNlX29wdAorCQkJCWpzb25fb25fZXJyb3JfY2xh dXNlX29wdAorCQkJJyknCisJCQkJeworCQkJCQlKc29uRnVuY0V4cHIgKm4gPSBtYWtlTm9kZShK c29uRnVuY0V4cHIpOworCisJCQkJCW4tPm9wID0gSlNPTl9FWElTVFNfT1A7CisJCQkJCW4tPmNv bnRleHRfaXRlbSA9IChKc29uVmFsdWVFeHByICopICQzOworCQkJCQluLT5wYXRoc3BlYyA9ICQ1 OworCQkJCQluLT5wYXNzaW5nID0gJDY7CisJCQkJCW4tPm91dHB1dCA9IE5VTEw7CisJCQkJCW4t Pm9uX2Vycm9yID0gKEpzb25CZWhhdmlvciAqKSAkNzsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsK KwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJCXwgSlNPTl9WQUxVRSAnKCcKKwkJCQlq c29uX3ZhbHVlX2V4cHIgJywnIGFfZXhwciBqc29uX3Bhc3NpbmdfY2xhdXNlX29wdAorCQkJCWpz b25fcmV0dXJuaW5nX2NsYXVzZV9vcHQKKwkJCQlqc29uX2JlaGF2aW9yX2NsYXVzZV9vcHQKKwkJ CScpJworCQkJCXsKKwkJCQkJSnNvbkZ1bmNFeHByICpuID0gbWFrZU5vZGUoSnNvbkZ1bmNFeHBy KTsKKworCQkJCQluLT5vcCA9IEpTT05fVkFMVUVfT1A7CisJCQkJCW4tPmNvbnRleHRfaXRlbSA9 IChKc29uVmFsdWVFeHByICopICQzOworCQkJCQluLT5wYXRoc3BlYyA9ICQ1OworCQkJCQluLT5w YXNzaW5nID0gJDY7CisJCQkJCW4tPm91dHB1dCA9IChKc29uT3V0cHV0ICopICQ3OworCQkJCQlu LT5vbl9lbXB0eSA9IChKc29uQmVoYXZpb3IgKikgbGluaXRpYWwoJDgpOworCQkJCQluLT5vbl9l cnJvciA9IChKc29uQmVoYXZpb3IgKikgbHNlY29uZCgkOCk7CisJCQkJCW4tPmxvY2F0aW9uID0g QDE7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CiAJCQk7CiAKIApAQCAtMTY1MTUsNiAr MTY1ODAsNzcgQEAgb3B0X2FzeW1tZXRyaWM6IEFTWU1NRVRSSUMKIAkJOwogCiAvKiBTUUwvSlNP TiBzdXBwb3J0ICovCitqc29uX3Bhc3NpbmdfY2xhdXNlX29wdDoKKwkJCVBBU1NJTkcganNvbl9h cmd1bWVudHMJCQkJCXsgJCQgPSAkMjsgfQorCQkJfCAvKkVNUFRZKi8JCQkJCQkJCXsgJCQgPSBO SUw7IH0KKwkJOworCitqc29uX2FyZ3VtZW50czoKKwkJCWpzb25fYXJndW1lbnQJCQkJCQkJeyAk JCA9IGxpc3RfbWFrZTEoJDEpOyB9CisJCQl8IGpzb25fYXJndW1lbnRzICcsJyBqc29uX2FyZ3Vt ZW50CQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CisJCTsKKworanNvbl9hcmd1bWVudDoKKwkJ CWpzb25fdmFsdWVfZXhwciBBUyBDb2xMYWJlbAorCQkJeworCQkJCUpzb25Bcmd1bWVudCAqbiA9 IG1ha2VOb2RlKEpzb25Bcmd1bWVudCk7CisKKwkJCQluLT52YWwgPSAoSnNvblZhbHVlRXhwciAq KSAkMTsKKwkJCQluLT5uYW1lID0gJDM7CisJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJfQorCQk7 CisKKy8qIEFSUkFZIGlzIGEgbm9pc2Ugd29yZCAqLworanNvbl93cmFwcGVyX2JlaGF2aW9yOgor CQkJICBXSVRIT1VUIFdSQVBQRVIJCQkJCXsgJCQgPSBKU1dfTk9ORTsgfQorCQkJfCBXSVRIT1VU IEFSUkFZCVdSQVBQRVIJCQkJeyAkJCA9IEpTV19OT05FOyB9CisJCQl8IFdJVEggV1JBUFBFUgkJ CQkJCXsgJCQgPSBKU1dfVU5DT05ESVRJT05BTDsgfQorCQkJfCBXSVRIIEFSUkFZIFdSQVBQRVIJ CQkJeyAkJCA9IEpTV19VTkNPTkRJVElPTkFMOyB9CisJCQl8IFdJVEggQ09ORElUSU9OQUwgQVJS QVkgV1JBUFBFUgl7ICQkID0gSlNXX0NPTkRJVElPTkFMOyB9CisJCQl8IFdJVEggVU5DT05ESVRJ T05BTCBBUlJBWSBXUkFQUEVSCXsgJCQgPSBKU1dfVU5DT05ESVRJT05BTDsgfQorCQkJfCBXSVRI IENPTkRJVElPTkFMIFdSQVBQRVIJCQl7ICQkID0gSlNXX0NPTkRJVElPTkFMOyB9CisJCQl8IFdJ VEggVU5DT05ESVRJT05BTCBXUkFQUEVSCQl7ICQkID0gSlNXX1VOQ09ORElUSU9OQUw7IH0KKwkJ CXwgLyogZW1wdHkgKi8JCQkJCQl7ICQkID0gSlNXX1VOU1BFQzsgfQorCQk7CisKK2pzb25fYmVo YXZpb3I6CisJCQlERUZBVUxUIGFfZXhwcgorCQkJCXsgJCQgPSAoTm9kZSAqKSBtYWtlSnNvbkJl aGF2aW9yKEpTT05fQkVIQVZJT1JfREVGQVVMVCwgJDIsIE5VTEwsIEAxKTsgfQorCQkJfCBqc29u X2JlaGF2aW9yX3R5cGUKKwkJCQl7ICQkID0gKE5vZGUgKikgbWFrZUpzb25CZWhhdmlvcigkMSwg TlVMTCwgTlVMTCwgQDEpOyB9CisJCTsKKworanNvbl9iZWhhdmlvcl90eXBlOgorCQkJRVJST1Jf UAkJeyAkJCA9IEpTT05fQkVIQVZJT1JfRVJST1I7IH0KKwkJCXwgTlVMTF9QCXsgJCQgPSBKU09O X0JFSEFWSU9SX05VTEw7IH0KKwkJCXwgVFJVRV9QCXsgJCQgPSBKU09OX0JFSEFWSU9SX1RSVUU7 IH0KKwkJCXwgRkFMU0VfUAl7ICQkID0gSlNPTl9CRUhBVklPUl9GQUxTRTsgfQorCQkJfCBVTktO T1dOCXsgJCQgPSBKU09OX0JFSEFWSU9SX1VOS05PV047IH0KKwkJCXwgRU1QVFlfUCBBUlJBWQl7 ICQkID0gSlNPTl9CRUhBVklPUl9FTVBUWV9BUlJBWTsgfQorCQkJfCBFTVBUWV9QIE9CSkVDVF9Q CXsgJCQgPSBKU09OX0JFSEFWSU9SX0VNUFRZX09CSkVDVDsgfQorCQkJLyogbm9uLXN0YW5kYXJk LCBmb3IgT3JhY2xlIGNvbXBhdGliaWxpdHkgb25seSAqLworCQkJfCBFTVBUWV9QCXsgJCQgPSBK U09OX0JFSEFWSU9SX0VNUFRZX0FSUkFZOyB9CisJCTsKKworanNvbl9iZWhhdmlvcl9jbGF1c2Vf b3B0OgorCQkJanNvbl9iZWhhdmlvciBPTiBFTVBUWV9QCisJCQkJeyAkJCA9IGxpc3RfbWFrZTIo JDEsIE5VTEwpOyB9CisJCQl8IGpzb25fYmVoYXZpb3IgT04gRVJST1JfUAorCQkJCXsgJCQgPSBs aXN0X21ha2UyKE5VTEwsICQxKTsgfQorCQkJfCBqc29uX2JlaGF2aW9yIE9OIEVNUFRZX1AganNv bl9iZWhhdmlvciBPTiBFUlJPUl9QCisJCQkJeyAkJCA9IGxpc3RfbWFrZTIoJDEsICQ0KTsgfQor CQkJfCAvKiBFTVBUWSAqLworCQkJCXsgJCQgPSBsaXN0X21ha2UyKE5VTEwsIE5VTEwpOyB9CisJ CTsKKworanNvbl9vbl9lcnJvcl9jbGF1c2Vfb3B0OgorCQkJanNvbl9iZWhhdmlvciBPTiBFUlJP Ul9QCisJCQkJeyAkJCA9ICQxOyB9CisJCQl8IC8qIEVNUFRZICovCisJCQkJeyAkJCA9IE5VTEw7 IH0KKwkJOworCiBqc29uX3ZhbHVlX2V4cHI6CiAJCQlhX2V4cHIganNvbl9mb3JtYXRfY2xhdXNl X29wdAogCQkJewpAQCAtMTY1NTksNiArMTY2OTUsMTQgQEAganNvbl9mb3JtYXRfY2xhdXNlX29w dDoKIAkJCQl9CiAJCTsKIAoranNvbl9xdW90ZXNfY2xhdXNlX29wdDoKKwkJCUtFRVAgUVVPVEVT IE9OIFNDQUxBUiBTVFJJTkdfUAkJeyAkJCA9IEpTX1FVT1RFU19LRUVQOyB9CisJCQl8IEtFRVAg UVVPVEVTCQkJCQkJeyAkJCA9IEpTX1FVT1RFU19LRUVQOyB9CisJCQl8IE9NSVQgUVVPVEVTIE9O IFNDQUxBUiBTVFJJTkdfUAl7ICQkID0gSlNfUVVPVEVTX09NSVQ7IH0KKwkJCXwgT01JVCBRVU9U RVMJCQkJCQl7ICQkID0gSlNfUVVPVEVTX09NSVQ7IH0KKwkJCXwgLyogRU1QVFkgKi8JCQkJCQl7 ICQkID0gSlNfUVVPVEVTX1VOU1BFQzsgfQorCQk7CisKIGpzb25fcmV0dXJuaW5nX2NsYXVzZV9v cHQ6CiAJCQlSRVRVUk5JTkcgVHlwZW5hbWUganNvbl9mb3JtYXRfY2xhdXNlX29wdAogCQkJCXsK QEAgLTE3MTc1LDYgKzE3MzE5LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBDT01NSVQK IAkJCXwgQ09NTUlUVEVECiAJCQl8IENPTVBSRVNTSU9OCisJCQl8IENPTkRJVElPTkFMCiAJCQl8 IENPTkZJR1VSQVRJT04KIAkJCXwgQ09ORkxJQ1QKIAkJCXwgQ09OTkVDVElPTgpAQCAtMTcyMTEs MTAgKzE3MzU2LDEyIEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgRE9VQkxFX1AKIAkJCXwg RFJPUAogCQkJfCBFQUNICisJCQl8IEVNUFRZX1AKIAkJCXwgRU5BQkxFX1AKIAkJCXwgRU5DT0RJ TkcKIAkJCXwgRU5DUllQVEVECiAJCQl8IEVOVU1fUAorCQkJfCBFUlJPUl9QCiAJCQl8IEVTQ0FQ RQogCQkJfCBFVkVOVAogCQkJfCBFWENMVURFCkBAIC0xNzI2NCw2ICsxNzQxMSw3IEBAIHVucmVz ZXJ2ZWRfa2V5d29yZDoKIAkJCXwgSU5TVEVBRAogCQkJfCBJTlZPS0VSCiAJCQl8IElTT0xBVElP TgorCQkJfCBLRUVQCiAJCQl8IEtFWQogCQkJfCBLRVlTCiAJCQl8IExBQkVMCkBAIC0xNzMxMCw2 ICsxNzQ1OCw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgT0ZGCiAJCQl8IE9JRFMKIAkJ CXwgT0xECisJCQl8IE9NSVQKIAkJCXwgT1BFUkFUT1IKIAkJCXwgT1BUSU9OCiAJCQl8IE9QVElP TlMKQEAgLTE3MzQwLDYgKzE3NDg5LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBQUk9H UkFNCiAJCQl8IFBVQkxJQ0FUSU9OCiAJCQl8IFFVT1RFCisJCQl8IFFVT1RFUwogCQkJfCBSQU5H RQogCQkJfCBSRUFECiAJCQl8IFJFQVNTSUdOCkBAIC0xNzM5OSw2ICsxNzU0OSw3IEBAIHVucmVz ZXJ2ZWRfa2V5d29yZDoKIAkJCXwgU1RPUkFHRQogCQkJfCBTVE9SRUQKIAkJCXwgU1RSSUNUX1AK KwkJCXwgU1RSSU5HX1AKIAkJCXwgU1RSSVBfUAogCQkJfCBTVUJTQ1JJUFRJT04KIAkJCXwgU1VQ UE9SVApAQCAtMTc0MjEsNiArMTc1NzIsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFVF U0NBUEUKIAkJCXwgVU5CT1VOREVECiAJCQl8IFVOQ09NTUlUVEVECisJCQl8IFVOQ09ORElUSU9O QUwKIAkJCXwgVU5FTkNSWVBURUQKIAkJCXwgVU5LTk9XTgogCQkJfCBVTkxJU1RFTgpAQCAtMTc0 ODEsMTAgKzE3NjMzLDEzIEBAIGNvbF9uYW1lX2tleXdvcmQ6CiAJCQl8IEpTT04KIAkJCXwgSlNP Tl9BUlJBWQogCQkJfCBKU09OX0FSUkFZQUdHCisJCQl8IEpTT05fRVhJU1RTCiAJCQl8IEpTT05f T0JKRUNUCiAJCQl8IEpTT05fT0JKRUNUQUdHCisJCQl8IEpTT05fUVVFUlkKIAkJCXwgSlNPTl9T Q0FMQVIKIAkJCXwgSlNPTl9TRVJJQUxJWkUKKwkJCXwgSlNPTl9WQUxVRQogCQkJfCBMRUFTVAog CQkJfCBOQVRJT05BTAogCQkJfCBOQ0hBUgpAQCAtMTc3MTcsNiArMTc4NzIsNyBAQCBiYXJlX2xh YmVsX2tleXdvcmQ6CiAJCQl8IENPTU1JVFRFRAogCQkJfCBDT01QUkVTU0lPTgogCQkJfCBDT05D VVJSRU5UTFkKKwkJCXwgQ09ORElUSU9OQUwKIAkJCXwgQ09ORklHVVJBVElPTgogCQkJfCBDT05G TElDVAogCQkJfCBDT05ORUNUSU9OCkBAIC0xNzc2OSwxMSArMTc5MjUsMTMgQEAgYmFyZV9sYWJl bF9rZXl3b3JkOgogCQkJfCBEUk9QCiAJCQl8IEVBQ0gKIAkJCXwgRUxTRQorCQkJfCBFTVBUWV9Q CiAJCQl8IEVOQUJMRV9QCiAJCQl8IEVOQ09ESU5HCiAJCQl8IEVOQ1JZUFRFRAogCQkJfCBFTkRf UAogCQkJfCBFTlVNX1AKKwkJCXwgRVJST1JfUAogCQkJfCBFU0NBUEUKIAkJCXwgRVZFTlQKIAkJ CXwgRVhDTFVERQpAQCAtMTc4NDMsMTAgKzE4MDAxLDE0IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoK IAkJCXwgSlNPTgogCQkJfCBKU09OX0FSUkFZCiAJCQl8IEpTT05fQVJSQVlBR0cKKwkJCXwgSlNP Tl9FWElTVFMKIAkJCXwgSlNPTl9PQkpFQ1QKIAkJCXwgSlNPTl9PQkpFQ1RBR0cKKwkJCXwgSlNP Tl9RVUVSWQogCQkJfCBKU09OX1NDQUxBUgogCQkJfCBKU09OX1NFUklBTElaRQorCQkJfCBKU09O X1ZBTFVFCisJCQl8IEtFRVAKIAkJCXwgS0VZCiAJCQl8IEtFWVMKIAkJCXwgTEFCRUwKQEAgLTE3 OTA3LDYgKzE4MDY5LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBPRkYKIAkJCXwgT0lE UwogCQkJfCBPTEQKKwkJCXwgT01JVAogCQkJfCBPTkxZCiAJCQl8IE9QRVJBVE9SCiAJCQl8IE9Q VElPTgpAQCAtMTc5NDQsNiArMTgxMDcsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFBS T0dSQU0KIAkJCXwgUFVCTElDQVRJT04KIAkJCXwgUVVPVEUKKwkJCXwgUVVPVEVTCiAJCQl8IFJB TkdFCiAJCQl8IFJFQUQKIAkJCXwgUkVBTApAQCAtMTgwMTIsNiArMTgxNzYsNyBAQCBiYXJlX2xh YmVsX2tleXdvcmQ6CiAJCQl8IFNUT1JBR0UKIAkJCXwgU1RPUkVECiAJCQl8IFNUUklDVF9QCisJ CQl8IFNUUklOR19QCiAJCQl8IFNUUklQX1AKIAkJCXwgU1VCU0NSSVBUSU9OCiAJCQl8IFNVQlNU UklORwpAQCAtMTgwNDYsNiArMTgyMTEsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFVF U0NBUEUKIAkJCXwgVU5CT1VOREVECiAJCQl8IFVOQ09NTUlUVEVECisJCQl8IFVOQ09ORElUSU9O QUwKIAkJCXwgVU5FTkNSWVBURUQKIAkJCXwgVU5JUVVFCiAJCQl8IFVOS05PV04KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfZXhwci5jCmluZGV4IDkzMDBjN2I5YWIuLjUzNDI2ZmFjNTMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2V4cHIuYwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgi CiAjaW5jbHVkZSAidXRpbHMvZGF0ZS5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCisj aW5jbHVkZSAidXRpbHMvanNvbmIuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNp bmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJ1dGlscy94bWwuaCIKQEAgLTkw LDYgKzkxLDIzIEBAIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Kc29uUGFyc2VFeHByKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgSnNvblBhcnNlRXhwciAqZXhwcik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3Jt SnNvblNjYWxhckV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uU2NhbGFyRXhwciAqZXhwcik7 CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtSnNvblNlcmlhbGl6ZUV4cHIoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkJCQkJCQkJCUpzb25TZXJpYWxpemVFeHByICpleHByKTsKK3N0YXRpYyBOb2RlICp0 cmFuc2Zvcm1Kc29uRnVuY0V4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uRnVuY0V4cHIgKnAp Oworc3RhdGljIEpzb25FeHByICp0cmFuc2Zvcm1Kc29uRXhwckNvbW1vbihQYXJzZVN0YXRlICpw c3RhdGUsIEpzb25GdW5jRXhwciAqZnVuYywKKwkJCQkJCQkJCQkgY29uc3QgY2hhciAqY29uc3Ry dWN0TmFtZSk7CitzdGF0aWMgdm9pZCB0cmFuc2Zvcm1Kc29uUGFzc2luZ0FyZ3MoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBjb25zdCBjaGFyICpjb25zdHJ1Y3ROYW1lLAorCQkJCQkJCQkJIEpzb25Gb3Jt YXRUeXBlIGZvcm1hdCwgTGlzdCAqYXJncywKKwkJCQkJCQkJCSBMaXN0ICoqcGFzc2luZ192YWx1 ZXMsIExpc3QgKipwYXNzaW5nX25hbWVzKTsKK3N0YXRpYyBOb2RlICpjb2VyY2VKc29uRnVuY0V4 cHJPdXRwdXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uRXhwciAqanNleHByKTsKK3N0YXRpYyBP aWQJSnNvbkZ1bmNFeHByRGVmYXVsdFJldHVyblR5cGUoSnNvbkV4cHIgKmpzZXhwcik7CitzdGF0 aWMgTm9kZSAqY29lcmNlSnNvbkV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByLAor CQkJCQkJCWNvbnN0IEpzb25SZXR1cm5pbmcgKnJldHVybmluZywgYm9vbCBvbWl0X3F1b3Rlcyk7 CitzdGF0aWMgSnNvbkNvZXJjaW9uICptYWtlSnNvbkNvZXJjaW9uKGNvbnN0IEpzb25SZXR1cm5p bmcgKnJldHVybmluZywKKwkJCQkJCQkJCSAgYm9vbCBvbWl0X3F1b3RlcywgTm9kZSAqY2FzdF9l eHByKTsKK3N0YXRpYyBMaXN0ICpJbml0SnNvbkl0ZW1Db2VyY2lvbnMoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBjb25zdCBKc29uUmV0dXJuaW5nICpyZXR1cm5pbmcsCisJCQkJCQkJCSAgIE9pZCBjb250 ZXh0SXRlbVR5cGVJZCk7CitzdGF0aWMgSnNvbkJlaGF2aW9yICp0cmFuc2Zvcm1Kc29uQmVoYXZp b3IoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uQmVoYXZpb3IgKmJlaGF2aW9yLAorCQkJCQkJCQkJ CSAgIEpzb25CZWhhdmlvclR5cGUgZGVmYXVsdF9iZWhhdmlvciwKKwkJCQkJCQkJCQkgICBKc29u UmV0dXJuaW5nICpyZXR1cm5pbmcpOwogc3RhdGljIE5vZGUgKm1ha2Vfcm93X2NvbXBhcmlzb25f b3AoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcG5hbWUsCiAJCQkJCQkJCQlMaXN0ICpsYXJn cywgTGlzdCAqcmFyZ3MsIGludCBsb2NhdGlvbik7CiBzdGF0aWMgTm9kZSAqbWFrZV9yb3dfZGlz dGluY3Rfb3AoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcG5hbWUsCkBAIC0zNTMsNiArMzcx LDEwIEBAIHRyYW5zZm9ybUV4cHJSZWN1cnNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhw cikKIAkJCXJlc3VsdCA9IHRyYW5zZm9ybUpzb25TZXJpYWxpemVFeHByKHBzdGF0ZSwgKEpzb25T ZXJpYWxpemVFeHByICopIGV4cHIpOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX0pzb25GdW5jRXhw cjoKKwkJCXJlc3VsdCA9IHRyYW5zZm9ybUpzb25GdW5jRXhwcihwc3RhdGUsIChKc29uRnVuY0V4 cHIgKikgZXhwcik7CisJCQlicmVhazsKKwogCQlkZWZhdWx0OgogCQkJLyogc2hvdWxkIG5vdCBy ZWFjaCBoZXJlICovCiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZTogJWQi LCAoaW50KSBub2RlVGFnKGV4cHIpKTsKQEAgLTMyMjksNyArMzI1MSw3IEBAIG1ha2VKc29uQnl0 ZWFUb1RleHRDb252ZXJzaW9uKE5vZGUgKmV4cHIsIEpzb25Gb3JtYXQgKmZvcm1hdCwgaW50IGxv Y2F0aW9uKQogc3RhdGljIE5vZGUgKgogdHJhbnNmb3JtSnNvblZhbHVlRXhwcihQYXJzZVN0YXRl ICpwc3RhdGUsIGNvbnN0IGNoYXIgKmNvbnN0cnVjdE5hbWUsCiAJCQkJCSAgIEpzb25WYWx1ZUV4 cHIgKnZlLCBKc29uRm9ybWF0VHlwZSBkZWZhdWx0X2Zvcm1hdCwKLQkJCQkJICAgT2lkIHRhcmdl dHR5cGUpCisJCQkJCSAgIE9pZCB0YXJnZXR0eXBlLCBib29sIGlzYXJnKQogewogCU5vZGUJICAg KmV4cHIgPSB0cmFuc2Zvcm1FeHByUmVjdXJzZShwc3RhdGUsIChOb2RlICopIHZlLT5yYXdfZXhw cik7CiAJTm9kZQkgICAqcmF3ZXhwcjsKQEAgLTMyNjEsNiArMzI4Myw0MSBAQCB0cmFuc2Zvcm1K c29uVmFsdWVFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgY2hhciAqY29uc3RydWN0TmFt ZSwKIAkJZWxzZQogCQkJZm9ybWF0ID0gdmUtPmZvcm1hdC0+Zm9ybWF0X3R5cGU7CiAJfQorCWVs c2UgaWYgKGlzYXJnKQorCXsKKwkJLyoKKwkJICogU3BlY2lhbCB0cmVhdG1lbnQgZm9yIFBBU1NJ TkcgYXJndW1lbnRzLgorCQkgKgorCQkgKiBQYXNzIHR5cGVzIHN1cHBvcnRlZCBieSBHZXRKc29u UGF0aFZhcigpIC8gSnNvbkl0ZW1Gcm9tRGF0dW0oKQorCQkgKiBkaXJlY3RseSB3aXRob3V0IGNv bnZlcnRpbmcgdG8ganNvbltiXS4KKwkJICovCisJCXN3aXRjaCAoZXhwcnR5cGUpCisJCXsKKwkJ CWNhc2UgQk9PTE9JRDoKKwkJCWNhc2UgTlVNRVJJQ09JRDoKKwkJCWNhc2UgSU5UMk9JRDoKKwkJ CWNhc2UgSU5UNE9JRDoKKwkJCWNhc2UgSU5UOE9JRDoKKwkJCWNhc2UgRkxPQVQ0T0lEOgorCQkJ Y2FzZSBGTE9BVDhPSUQ6CisJCQljYXNlIFRFWFRPSUQ6CisJCQljYXNlIFZBUkNIQVJPSUQ6CisJ CQljYXNlIERBVEVPSUQ6CisJCQljYXNlIFRJTUVPSUQ6CisJCQljYXNlIFRJTUVUWk9JRDoKKwkJ CWNhc2UgVElNRVNUQU1QT0lEOgorCQkJY2FzZSBUSU1FU1RBTVBUWk9JRDoKKwkJCQlyZXR1cm4g ZXhwcjsKKworCQkJZGVmYXVsdDoKKwkJCQlpZiAodHlwY2F0ZWdvcnkgPT0gVFlQQ0FURUdPUllf U1RSSU5HKQorCQkJCQlyZXR1cm4gZXhwcjsKKwkJCQkvKiBlbHNlIGNvbnZlcnQgYXJndW1lbnQg dG8ganNvbltiXSB0eXBlICovCisJCQkJYnJlYWs7CisJCX0KKworCQlmb3JtYXQgPSBkZWZhdWx0 X2Zvcm1hdDsKKwl9CiAJZWxzZSBpZiAoZXhwcnR5cGUgPT0gSlNPTk9JRCB8fCBleHBydHlwZSA9 PSBKU09OQk9JRCkKIAkJZm9ybWF0ID0gSlNfRk9STUFUX0RFRkFVTFQ7IC8qIGRvIG5vdCBmb3Jt YXQganNvbltiXSB0eXBlcyAqLwogCWVsc2UKQEAgLTMyNzIsNyArMzMyOSwxMiBAQCB0cmFuc2Zv cm1Kc29uVmFsdWVFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgY2hhciAqY29uc3RydWN0 TmFtZSwKIAkJTm9kZQkgICAqY29lcmNlZDsKIAkJYm9vbAkJb25seV9hbGxvd19jYXN0ID0gT2lk SXNWYWxpZCh0YXJnZXR0eXBlKTsKIAotCQlpZiAoIW9ubHlfYWxsb3dfY2FzdCAmJgorCQkvKgor CQkgKiBQQVNTSU5HIGFyZ3MgYXJlIGhhbmRsZWQgYXBwcm9wcmlhdGVseSBieSBHZXRKc29uUGF0 aFZhcigpIC8KKwkJICogSnNvbkl0ZW1Gcm9tRGF0dW0oKS4KKwkJICovCisJCWlmICghaXNhcmcg JiYKKwkJCSFvbmx5X2FsbG93X2Nhc3QgJiYKIAkJCWV4cHJ0eXBlICE9IEJZVEVBT0lEICYmIHR5 cGNhdGVnb3J5ICE9IFRZUENBVEVHT1JZX1NUUklORykKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJ CWVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCkBAIC0zNDI1LDYgKzM0ODcsMTEg QEAgdHJhbnNmb3JtSnNvbk91dHB1dChQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IEpzb25PdXRw dXQgKm91dHB1dCwKIAkJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK IAkJCQllcnJtc2coInJldHVybmluZyBTRVRPRiB0eXBlcyBpcyBub3Qgc3VwcG9ydGVkIGluIFNR TC9KU09OIGZ1bmN0aW9ucyIpKTsKIAorCWlmIChnZXRfdHlwdHlwZShyZXQtPnR5cGlkKSA9PSBU WVBUWVBFX1BTRVVETykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfRkVB VFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQllcnJtc2coInJldHVybmluZyBwc2V1ZG8tdHlwZXMg aXMgbm90IHN1cHBvcnRlZCBpbiBTUUwvSlNPTiBmdW5jdGlvbnMiKSk7CisKIAlpZiAocmV0LT5m b3JtYXQtPmZvcm1hdF90eXBlID09IEpTX0ZPUk1BVF9ERUZBVUxUKQogCQkvKiBhc3NpZ24gSlNP TkIgZm9ybWF0IHdoZW4gcmV0dXJuaW5nIGpzb25iLCBvciBKU09OIGZvcm1hdCBvdGhlcndpc2Ug Ki8KIAkJcmV0LT5mb3JtYXQtPmZvcm1hdF90eXBlID0KQEAgLTM1MjEsNyArMzU4OCw2IEBAIGNv ZXJjZUpzb25GdW5jRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIsCiAJLyogdHJ5 IHRvIGNvZXJjZSBleHByZXNzaW9uIHRvIHRoZSBvdXRwdXQgdHlwZSAqLwogCXJlcyA9IGNvZXJj ZV90b190YXJnZXRfdHlwZShwc3RhdGUsIGV4cHIsIGV4cHJ0eXBlLAogCQkJCQkJCQlyZXR1cm5p bmctPnR5cGlkLCByZXR1cm5pbmctPnR5cG1vZCwKLQkvKiBYWFggdGhyb3dpbmcgZXJyb3JzIHdo ZW4gY2FzdGluZyB0byBjaGFyKE4pICovCiAJCQkJCQkJCUNPRVJDSU9OX0VYUExJQ0lULAogCQkJ CQkJCQlDT0VSQ0VfRVhQTElDSVRfQ0FTVCwKIAkJCQkJCQkJbG9jYXRpb24pOwpAQCAtMzYyMSw3 ICszNjg3LDcgQEAgdHJhbnNmb3JtSnNvbk9iamVjdENvbnN0cnVjdG9yKFBhcnNlU3RhdGUgKnBz dGF0ZSwgSnNvbk9iamVjdENvbnN0cnVjdG9yICpjdG9yKQogCQkJTm9kZQkgICAqdmFsID0gdHJh bnNmb3JtSnNvblZhbHVlRXhwcihwc3RhdGUsICJKU09OX09CSkVDVCgpIiwKIAkJCQkJCQkJCQkJ CQkga3YtPnZhbHVlLAogCQkJCQkJCQkJCQkJCSBKU19GT1JNQVRfREVGQVVMVCwKLQkJCQkJCQkJ CQkJCQkgSW52YWxpZE9pZCk7CisJCQkJCQkJCQkJCQkJIEludmFsaWRPaWQsIGZhbHNlKTsKIAog CQkJYXJncyA9IGxhcHBlbmQoYXJncywga2V5KTsKIAkJCWFyZ3MgPSBsYXBwZW5kKGFyZ3MsIHZh bCk7CkBAIC0zODA4LDcgKzM4NzQsNyBAQCB0cmFuc2Zvcm1Kc29uT2JqZWN0QWdnKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgSnNvbk9iamVjdEFnZyAqYWdnKQogCXZhbCA9IHRyYW5zZm9ybUpzb25WYWx1 ZUV4cHIocHN0YXRlLCAiSlNPTl9PQkpFQ1RBR0coKSIsCiAJCQkJCQkJCSBhZ2ctPmFyZy0+dmFs dWUsCiAJCQkJCQkJCSBKU19GT1JNQVRfREVGQVVMVCwKLQkJCQkJCQkJIEludmFsaWRPaWQpOwor CQkJCQkJCQkgSW52YWxpZE9pZCwgZmFsc2UpOwogCWFyZ3MgPSBsaXN0X21ha2UyKGtleSwgdmFs KTsKIAogCXJldHVybmluZyA9IHRyYW5zZm9ybUpzb25Db25zdHJ1Y3Rvck91dHB1dChwc3RhdGUs IGFnZy0+Y29uc3RydWN0b3ItPm91dHB1dCwKQEAgLTM4NjQsOSArMzkzMCw4IEBAIHRyYW5zZm9y bUpzb25BcnJheUFnZyhQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25BcnJheUFnZyAqYWdnKQogCU9p ZAkJCWFnZ2Zub2lkOwogCU9pZAkJCWFnZ3R5cGU7CiAKLQlhcmcgPSB0cmFuc2Zvcm1Kc29uVmFs dWVFeHByKHBzdGF0ZSwgIkpTT05fQVJSQVlBR0coKSIsCi0JCQkJCQkJCSBhZ2ctPmFyZywKLQkJ CQkJCQkJIEpTX0ZPUk1BVF9ERUZBVUxULCBJbnZhbGlkT2lkKTsKKwlhcmcgPSB0cmFuc2Zvcm1K c29uVmFsdWVFeHByKHBzdGF0ZSwgIkpTT05fQVJSQVlBR0coKSIsIGFnZy0+YXJnLAorCQkJCQkJ CQkgSlNfRk9STUFUX0RFRkFVTFQsIEludmFsaWRPaWQsIGZhbHNlKTsKIAogCXJldHVybmluZyA9 IHRyYW5zZm9ybUpzb25Db25zdHJ1Y3Rvck91dHB1dChwc3RhdGUsIGFnZy0+Y29uc3RydWN0b3It Pm91dHB1dCwKIAkJCQkJCQkJCQkJICAgbGlzdF9tYWtlMShhcmcpKTsKQEAgLTM5MTMsOSArMzk3 OCw4IEBAIHRyYW5zZm9ybUpzb25BcnJheUNvbnN0cnVjdG9yKFBhcnNlU3RhdGUgKnBzdGF0ZSwg SnNvbkFycmF5Q29uc3RydWN0b3IgKmN0b3IpCiAJCXsKIAkJCUpzb25WYWx1ZUV4cHIgKmpzdmFs ID0gY2FzdE5vZGUoSnNvblZhbHVlRXhwciwgbGZpcnN0KGxjKSk7CiAJCQlOb2RlCSAgICp2YWwg PSB0cmFuc2Zvcm1Kc29uVmFsdWVFeHByKHBzdGF0ZSwgIkpTT05fQVJSQVkoKSIsCi0JCQkJCQkJ CQkJCQkJIGpzdmFsLAotCQkJCQkJCQkJCQkJCSBKU19GT1JNQVRfREVGQVVMVCwKLQkJCQkJCQkJ CQkJCQkgSW52YWxpZE9pZCk7CisJCQkJCQkJCQkJCQkJIGpzdmFsLCBKU19GT1JNQVRfREVGQVVM VCwKKwkJCQkJCQkJCQkJCQkgSW52YWxpZE9pZCwgZmFsc2UpOwogCiAJCQlhcmdzID0gbGFwcGVu ZChhcmdzLCB2YWwpOwogCQl9CkBAIC00MDc0LDcgKzQxMzgsNyBAQCB0cmFuc2Zvcm1Kc29uUGFy c2VFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvblBhcnNlRXhwciAqanNleHByKQogCQkgKiBm dW5jdGlvbi1saWtlIENBU1RzLgogCQkgKi8KIAkJYXJnID0gdHJhbnNmb3JtSnNvblZhbHVlRXhw cihwc3RhdGUsICJKU09OKCkiLCBqc2V4cHItPmV4cHIsCi0JCQkJCQkJCQkgSlNfRk9STUFUX0pT T04sIHJldHVybmluZy0+dHlwaWQpOworCQkJCQkJCQkJIEpTX0ZPUk1BVF9KU09OLCByZXR1cm5p bmctPnR5cGlkLCBmYWxzZSk7CiAJfQogCiAJcmV0dXJuIG1ha2VKc29uQ29uc3RydWN0b3JFeHBy KHBzdGF0ZSwgSlNDVE9SX0pTT05fUEFSU0UsIGxpc3RfbWFrZTEoYXJnKSwgTlVMTCwKQEAgLTQx MTksNyArNDE4Myw3IEBAIHRyYW5zZm9ybUpzb25TZXJpYWxpemVFeHByKFBhcnNlU3RhdGUgKnBz dGF0ZSwgSnNvblNlcmlhbGl6ZUV4cHIgKmV4cHIpCiAJTm9kZQkgICAqYXJnID0gdHJhbnNmb3Jt SnNvblZhbHVlRXhwcihwc3RhdGUsICJKU09OX1NFUklBTElaRSgpIiwKIAkJCQkJCQkJCQkJIGV4 cHItPmV4cHIsCiAJCQkJCQkJCQkJCSBKU19GT1JNQVRfSlNPTiwKLQkJCQkJCQkJCQkJIEludmFs aWRPaWQpOworCQkJCQkJCQkJCQkgSW52YWxpZE9pZCwgZmFsc2UpOwogCiAJaWYgKGV4cHItPm91 dHB1dCkKIAl7CkBAIC00MTUzLDMgKzQyMTcsNTgyIEBAIHRyYW5zZm9ybUpzb25TZXJpYWxpemVF eHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvblNlcmlhbGl6ZUV4cHIgKmV4cHIpCiAJcmV0dXJu IG1ha2VKc29uQ29uc3RydWN0b3JFeHByKHBzdGF0ZSwgSlNDVE9SX0pTT05fU0VSSUFMSVpFLCBs aXN0X21ha2UxKGFyZyksCiAJCQkJCQkJCSAgIE5VTEwsIHJldHVybmluZywgZmFsc2UsIGZhbHNl LCBleHByLT5sb2NhdGlvbik7CiB9CisKKy8qCisgKiBUcmFuc2Zvcm0gSlNPTl9WQUxVRSwgSlNP Tl9RVUVSWSwgSlNPTl9FWElTVFMgZnVuY3Rpb25zIGludG8gYSBKc29uRXhwciBub2RlLgorICov CitzdGF0aWMgTm9kZSAqCit0cmFuc2Zvcm1Kc29uRnVuY0V4cHIoUGFyc2VTdGF0ZSAqcHN0YXRl LCBKc29uRnVuY0V4cHIgKmZ1bmMpCit7CisJSnNvbkV4cHIgICAqanNleHByID0gTlVMTDsKKwlj b25zdCBjaGFyICpmdW5jX25hbWUgPSBOVUxMOworCisJc3dpdGNoIChmdW5jLT5vcCkKKwl7CisJ CWNhc2UgSlNPTl9FWElTVFNfT1A6CisJCQlmdW5jX25hbWUgPSAiSlNPTl9FWElTVFMiOworCQkJ YnJlYWs7CisJCWNhc2UgSlNPTl9RVUVSWV9PUDoKKwkJCWZ1bmNfbmFtZSA9ICJKU09OX1FVRVJZ IjsKKwkJCWJyZWFrOworCQljYXNlIEpTT05fVkFMVUVfT1A6CisJCQlmdW5jX25hbWUgPSAiSlNP Tl9WQUxVRSI7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJpbnZhbGlk IEpzb25GdW5jRXhwciBvcCIpOworCQkJYnJlYWs7CisJfQorCisJLyoKKwkgKiBGT1JNQVQgSlNP TiBzcGVjaWZpY2F0aW9uIGlzIG1lYW5pbmdsZXNzIGV4Y2VwdCBmb3IgSlNPTl9RVUVSWSgpLAor CSAqIHRob3VnaCB0aGUgc3ludGF4IGFsbG93cyBpdC4gIEZsYWcgaWYgbm90IEpTT05fUVVFUlko KS4KKwkgKi8KKwlpZiAoZnVuYy0+b3V0cHV0ICYmIGZ1bmMtPm9wICE9IEpTT05fUVVFUllfT1Ap CisJeworCQlKc29uRm9ybWF0ICpmb3JtYXQgPSBmdW5jLT5vdXRwdXQtPnJldHVybmluZy0+Zm9y bWF0OworCisJCWlmIChmb3JtYXQtPmZvcm1hdF90eXBlICE9IEpTX0ZPUk1BVF9ERUZBVUxUIHx8 CisJCQlmb3JtYXQtPmVuY29kaW5nICE9IEpTX0VOQ19ERUZBVUxUKQorCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCWVycm1zZygiY2Fu bm90IHNwZWNpZnkgRk9STUFUIGluIFJFVFVSTklORyBjbGF1c2Ugb2YgJXMoKSIsCisJCQkJCQkg ICBmdW5jX25hbWUpLAorCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBmb3JtYXQtPmxv Y2F0aW9uKSk7CisJfQorCisJLyogT01JVCBRVU9URVMgbWVhbmluZ2xlc3Mgd2hlbiBzdHJpbmdz IGFyZSB3cmFwcGVkLiAqLworCWlmIChmdW5jLT5vcCA9PSBKU09OX1FVRVJZX09QICYmCisJCWZ1 bmMtPnF1b3RlcyAhPSBKU19RVU9URVNfVU5TUEVDICYmCisJCShmdW5jLT53cmFwcGVyID09IEpT V19DT05ESVRJT05BTCB8fAorCQkgZnVuYy0+d3JhcHBlciA9PSBKU1dfVU5DT05ESVRJT05BTCkp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJ CQkJZXJybXNnKCJTUUwvSlNPTiBRVU9URVMgYmVoYXZpb3IgbXVzdCBub3QgYmUgc3BlY2lmaWVk IHdoZW4gV0lUSCBXUkFQUEVSIGlzIHVzZWQiKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0 YXRlLCBmdW5jLT5sb2NhdGlvbikpOworCisJanNleHByID0gdHJhbnNmb3JtSnNvbkV4cHJDb21t b24ocHN0YXRlLCBmdW5jLCBmdW5jX25hbWUpOworCisJc3dpdGNoIChmdW5jLT5vcCkKKwl7CisJ CWNhc2UgSlNPTl9FWElTVFNfT1A6CisJCQkvKiBKU09OX0VYSVNUUyByZXR1cm5zIGJvb2xlYW4g YnkgZGVmYXVsdC4gKi8KKwkJCWlmICghT2lkSXNWYWxpZChqc2V4cHItPnJldHVybmluZy0+dHlw aWQpKQorCQkJeworCQkJCWpzZXhwci0+cmV0dXJuaW5nLT50eXBpZCA9IEJPT0xPSUQ7CisJCQkJ anNleHByLT5yZXR1cm5pbmctPnR5cG1vZCA9IC0xOworCQkJfQorCisJCQlqc2V4cHItPm9uX2Vy cm9yID0gdHJhbnNmb3JtSnNvbkJlaGF2aW9yKHBzdGF0ZSwgZnVuYy0+b25fZXJyb3IsCisJCQkJ CQkJCQkJCQkJIEpTT05fQkVIQVZJT1JfRkFMU0UsCisJCQkJCQkJCQkJCQkJIGpzZXhwci0+cmV0 dXJuaW5nKTsKKwkJCWJyZWFrOworCisJCWNhc2UgSlNPTl9RVUVSWV9PUDoKKwkJCWpzZXhwci0+ d3JhcHBlciA9IGZ1bmMtPndyYXBwZXI7CisKKwkJCS8qCisJCQkgKiBLZWVwIHF1b3RlcyBvbiBz Y2FsYXIgc3RyaW5ncyBieSBkZWZhdWx0LCBvbWl0dGluZyB0aGVtIG9ubHkgaWYKKwkJCSAqIE9N SVQgUVVPVEVTIGlzIHNwZWNpZmllZC4KKwkJCSAqLworCQkJanNleHByLT5vbWl0X3F1b3RlcyA9 IChmdW5jLT5xdW90ZXMgPT0gSlNfUVVPVEVTX09NSVQpOworCisJCQkvKiBKU09OX1FVRVJZIHJl dHVybnMganNvbihiKSBieSBkZWZhdWx0LiAqLworCQkJaWYgKCFPaWRJc1ZhbGlkKGpzZXhwci0+ cmV0dXJuaW5nLT50eXBpZCkpCisJCQl7CisJCQkJSnNvblJldHVybmluZyAqcmV0ID0ganNleHBy LT5yZXR1cm5pbmc7CisKKwkJCQlyZXQtPnR5cGlkID0gSnNvbkZ1bmNFeHByRGVmYXVsdFJldHVy blR5cGUoanNleHByKTsKKwkJCQlyZXQtPnR5cG1vZCA9IC0xOworCQkJfQorCisJCQlqc2V4cHIt PnJlc3VsdF9jb2VyY2lvbiA9IGNvZXJjZUpzb25GdW5jRXhwck91dHB1dChwc3RhdGUsIGpzZXhw cik7CisKKwkJCWlmIChmdW5jLT5vbl9lbXB0eSkKKwkJCQlqc2V4cHItPm9uX2VtcHR5ID0gdHJh bnNmb3JtSnNvbkJlaGF2aW9yKHBzdGF0ZSwKKwkJCQkJCQkJCQkJCQkJIGZ1bmMtPm9uX2VtcHR5 LAorCQkJCQkJCQkJCQkJCQkgSlNPTl9CRUhBVklPUl9OVUxMLAorCQkJCQkJCQkJCQkJCQkganNl eHByLT5yZXR1cm5pbmcpOworCQkJanNleHByLT5vbl9lcnJvciA9IHRyYW5zZm9ybUpzb25CZWhh dmlvcihwc3RhdGUsIGZ1bmMtPm9uX2Vycm9yLAorCQkJCQkJCQkJCQkJCSBKU09OX0JFSEFWSU9S X05VTEwsCisJCQkJCQkJCQkJCQkJIGpzZXhwci0+cmV0dXJuaW5nKTsKKwkJCWJyZWFrOworCisJ CWNhc2UgSlNPTl9WQUxVRV9PUDoKKwkJCS8qIEFsd2F5cyBvbWl0IHF1b3RlcyBmcm9tIHNjYWxh ciBzdHJpbmdzLiAqLworCQkJanNleHByLT5vbWl0X3F1b3RlcyA9IChmdW5jLT5xdW90ZXMgPT0g SlNfUVVPVEVTX09NSVQpOworCisJCQkvKiBKU09OX1ZBTFVFIHJldHVybnMgdGV4dCBieSBkZWZh dWx0LiAqLworCQkJaWYgKCFPaWRJc1ZhbGlkKGpzZXhwci0+cmV0dXJuaW5nLT50eXBpZCkpCisJ CQl7CisJCQkJanNleHByLT5yZXR1cm5pbmctPnR5cGlkID0gVEVYVE9JRDsKKwkJCQlqc2V4cHIt PnJldHVybmluZy0+dHlwbW9kID0gLTE7CisJCQl9CisKKwkJCS8qCisJCQkgKiBPdmVycmlkZSB3 aGF0ZXZlciB0cmFuc2Zvcm1Kc29uT3V0cHV0KCkgc2V0IHRoZXNlIHRvLCB3aGljaAorCQkJICog YXNzdW1lcyB0aGF0IG91dHB1dCB0eXBlIHRvIGJlIGpzb24oYikuCisJCQkgKi8KKwkJCWpzZXhw ci0+cmV0dXJuaW5nLT5mb3JtYXQtPmZvcm1hdF90eXBlID0gSlNfRk9STUFUX0RFRkFVTFQ7CisJ CQlqc2V4cHItPnJldHVybmluZy0+Zm9ybWF0LT5lbmNvZGluZyA9IEpTX0VOQ19ERUZBVUxUOwor CisJCQlqc2V4cHItPnJlc3VsdF9jb2VyY2lvbiA9IGNvZXJjZUpzb25GdW5jRXhwck91dHB1dChw c3RhdGUsIGpzZXhwcik7CisKKwkJCS8qCisJCQkgKiBJbml0aWFsaXplIGV4cHJlc3Npb25zIHRv IGNvZXJjZSB0aGUgc2NhbGFyIHZhbHVlIHJldHVybmVkIGJ5CisJCQkgKiBKc29uUGF0aFZhbHVl KCkgdG8gdGhlICJyZXR1cm5pbmciIHR5cGUuCisJCQkgKi8KKwkJCWlmIChqc2V4cHItPnJlc3Vs dF9jb2VyY2lvbikKKwkJCQlqc2V4cHItPml0ZW1fY29lcmNpb25zID0KKwkJCQkJSW5pdEpzb25J dGVtQ29lcmNpb25zKHBzdGF0ZSwganNleHByLT5yZXR1cm5pbmcsCisJCQkJCQkJCQkJICBleHBy VHlwZShqc2V4cHItPmZvcm1hdHRlZF9leHByKSk7CisKKwkJCWlmIChmdW5jLT5vbl9lbXB0eSkK KwkJCQlqc2V4cHItPm9uX2VtcHR5ID0gdHJhbnNmb3JtSnNvbkJlaGF2aW9yKHBzdGF0ZSwKKwkJ CQkJCQkJCQkJCQkJIGZ1bmMtPm9uX2VtcHR5LAorCQkJCQkJCQkJCQkJCQkgSlNPTl9CRUhBVklP Ul9OVUxMLAorCQkJCQkJCQkJCQkJCQkganNleHByLT5yZXR1cm5pbmcpOworCQkJanNleHByLT5v bl9lcnJvciA9IHRyYW5zZm9ybUpzb25CZWhhdmlvcihwc3RhdGUsIGZ1bmMtPm9uX2Vycm9yLAor CQkJCQkJCQkJCQkJCSBKU09OX0JFSEFWSU9SX05VTEwsCisJCQkJCQkJCQkJCQkJIGpzZXhwci0+ cmV0dXJuaW5nKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAiaW52 YWxpZCBKc29uRnVuY0V4cHIgb3AiKTsKKwkJCWJyZWFrOworCX0KKworCXJldHVybiAoTm9kZSAq KSBqc2V4cHI7Cit9CisKKy8qCisgKiBDb21tb24gY29kZSBmb3IgSlNPTl9WQUxVRSwgSlNPTl9R VUVSWSwgSlNPTl9FWElTVFMgdHJhbnNmb3JtYXRpb24KKyAqIGludG8gYSBKc29uRXhwciBub2Rl LgorICovCitzdGF0aWMgSnNvbkV4cHIgKgordHJhbnNmb3JtSnNvbkV4cHJDb21tb24oUGFyc2VT dGF0ZSAqcHN0YXRlLCBKc29uRnVuY0V4cHIgKmZ1bmMsCisJCQkJCQljb25zdCBjaGFyICpjb25z dHJ1Y3ROYW1lKQoreworCUpzb25FeHByICAgKmpzZXhwciA9IG1ha2VOb2RlKEpzb25FeHByKTsK KwlOb2RlCSAgICpwYXRoX3NwZWM7CisKKwlqc2V4cHItPmxvY2F0aW9uID0gZnVuYy0+bG9jYXRp b247CisJanNleHByLT5vcCA9IGZ1bmMtPm9wOworCWpzZXhwci0+Zm9ybWF0dGVkX2V4cHIgPSB0 cmFuc2Zvcm1Kc29uVmFsdWVFeHByKHBzdGF0ZSwgY29uc3RydWN0TmFtZSwKKwkJCQkJCQkJCQkJ CQlmdW5jLT5jb250ZXh0X2l0ZW0sCisJCQkJCQkJCQkJCQkJSlNfRk9STUFUX0pTT04sCisJCQkJ CQkJCQkJCQkJSW52YWxpZE9pZCwgZmFsc2UpOworCisJaWYgKGV4cHJUeXBlKGpzZXhwci0+Zm9y bWF0dGVkX2V4cHIpICE9IEpTT05CT0lEKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUo RVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCWVycm1zZygiJXMoKSBpcyBub3Qg eWV0IGltcGxlbWVudGVkIGZvciB0aGUganNvbiB0eXBlIiwKKwkJCQkJICAgY29uc3RydWN0TmFt ZSksCisJCQkJZXJyaGludCgiVHJ5IGNhc3RpbmcgdGhlIGFyZ3VtZW50IHRvIGpzb25iIiksCisJ CQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKGpzZXhwci0+Zm9ybWF0 dGVkX2V4cHIpKSk7CisKKwlqc2V4cHItPmZvcm1hdCA9IGZ1bmMtPmNvbnRleHRfaXRlbS0+Zm9y bWF0OworCisJcGF0aF9zcGVjID0gdHJhbnNmb3JtRXhwclJlY3Vyc2UocHN0YXRlLCBmdW5jLT5w YXRoc3BlYyk7CisJanNleHByLT5wYXRoX3NwZWMgPQorCQljb2VyY2VfdG9fdGFyZ2V0X3R5cGUo cHN0YXRlLCBwYXRoX3NwZWMsIGV4cHJUeXBlKHBhdGhfc3BlYyksCisJCQkJCQkJICBKU09OUEFU SE9JRCwgLTEsCisJCQkJCQkJICBDT0VSQ0lPTl9FWFBMSUNJVCwgQ09FUkNFX0lNUExJQ0lUX0NB U1QsCisJCQkJCQkJICBleHByTG9jYXRpb24ocGF0aF9zcGVjKSk7CisJaWYgKCFqc2V4cHItPnBh dGhfc3BlYykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBF X01JU01BVENIKSwKKwkJCQkgZXJybXNnKCJKU09OIHBhdGggZXhwcmVzc2lvbiBtdXN0IGJlIG9m IHR5cGUgJXMsIG5vdCBvZiB0eXBlICVzIiwKKwkJCQkJCSJqc29ucGF0aCIsIGZvcm1hdF90eXBl X2JlKGV4cHJUeXBlKHBhdGhfc3BlYykpKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0 ZSwgZXhwckxvY2F0aW9uKHBhdGhfc3BlYykpKSk7CisKKwkvKgorCSAqIFRyYW5zZm9ybSBhbmQg Y29lcmNlIHRvIGpzb25bYl0gcGFzc2luZyBhcmd1bWVudHMsIHdob3NlIGZvcm1hdCBpcworCSAq IGRldGVybWluZWQgYnkgY29udGV4dCBpdGVtIHR5cGUuCisJICovCisJdHJhbnNmb3JtSnNvblBh c3NpbmdBcmdzKHBzdGF0ZSwgY29uc3RydWN0TmFtZSwKKwkJCQkJCQkgZXhwclR5cGUoanNleHBy LT5mb3JtYXR0ZWRfZXhwcikgPT0gSlNPTkJPSUQgPworCQkJCQkJCSBKU19GT1JNQVRfSlNPTkIg OiBKU19GT1JNQVRfSlNPTiwKKwkJCQkJCQkgZnVuYy0+cGFzc2luZywKKwkJCQkJCQkgJmpzZXhw ci0+cGFzc2luZ192YWx1ZXMsCisJCQkJCQkJICZqc2V4cHItPnBhc3NpbmdfbmFtZXMpOworCisJ anNleHByLT5yZXR1cm5pbmcgPSB0cmFuc2Zvcm1Kc29uT3V0cHV0KHBzdGF0ZSwgZnVuYy0+b3V0 cHV0LCBmYWxzZSk7CisKKwlyZXR1cm4ganNleHByOworfQorCisvKgorICogVHJhbnNmb3JtIGEg SlNPTiBQQVNTSU5HIGNsYXVzZS4KKyAqLworc3RhdGljIHZvaWQKK3RyYW5zZm9ybUpzb25QYXNz aW5nQXJncyhQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IGNoYXIgKmNvbnN0cnVjdE5hbWUsCisJ CQkJCQkgSnNvbkZvcm1hdFR5cGUgZm9ybWF0LCBMaXN0ICphcmdzLAorCQkJCQkJIExpc3QgKipw YXNzaW5nX3ZhbHVlcywgTGlzdCAqKnBhc3NpbmdfbmFtZXMpCit7CisJTGlzdENlbGwgICAqbGM7 CisKKwkqcGFzc2luZ192YWx1ZXMgPSBOSUw7CisJKnBhc3NpbmdfbmFtZXMgPSBOSUw7CisKKwlm b3JlYWNoKGxjLCBhcmdzKQorCXsKKwkJSnNvbkFyZ3VtZW50ICphcmcgPSBjYXN0Tm9kZShKc29u QXJndW1lbnQsIGxmaXJzdChsYykpOworCQlOb2RlCSAgICpleHByID0gdHJhbnNmb3JtSnNvblZh bHVlRXhwcihwc3RhdGUsIGNvbnN0cnVjdE5hbWUsCisJCQkJCQkJCQkJCQkgIGFyZy0+dmFsLCBm b3JtYXQsCisJCQkJCQkJCQkJCQkgIEludmFsaWRPaWQsIHRydWUpOworCisJCSpwYXNzaW5nX3Zh bHVlcyA9IGxhcHBlbmQoKnBhc3NpbmdfdmFsdWVzLCBleHByKTsKKwkJKnBhc3NpbmdfbmFtZXMg PSBsYXBwZW5kKCpwYXNzaW5nX25hbWVzLCBtYWtlU3RyaW5nKGFyZy0+bmFtZSkpOworCX0KK30K KworLyoKKyAqIENyZWF0ZSBhbiBleHByZXNzaW9uIHRvIGNvZXJjZSB0aGUgb3V0cHV0IG9mIEpT T05fVkFMVUUoKSAvIEpTT05fUVVFUlkoKQorICogdG8gdGhlIG91dHB1dCB0eXBlLCBpZiBuZWVk ZWQuCisgKi8KK3N0YXRpYyBOb2RlICoKK2NvZXJjZUpzb25GdW5jRXhwck91dHB1dChQYXJzZVN0 YXRlICpwc3RhdGUsIEpzb25FeHByICpqc2V4cHIpCit7CisJSnNvblJldHVybmluZyAqcmV0dXJu aW5nID0ganNleHByLT5yZXR1cm5pbmc7CisJTm9kZQkgICAqY29udGV4dF9pdGVtID0ganNleHBy LT5mb3JtYXR0ZWRfZXhwcjsKKwlOb2RlCSAgICpjb2VyY2lvbl9leHByID0gTlVMTDsKKwlpbnQJ CQlkZWZhdWx0X3R5cG1vZDsKKwlPaWQJCQlkZWZhdWx0X3R5cGlkOworCWJvb2wJCW9taXRfcXVv dGVzID0KKwkJanNleHByLT5vcCA9PSBKU09OX1FVRVJZX09QICYmIGpzZXhwci0+b21pdF9xdW90 ZXM7CisKKwlBc3NlcnQocmV0dXJuaW5nKTsKKworCS8qCisJICogQ2FzdCBmdW5jdGlvbnMgZnJv bSBqc29uYiB0byB0aGUgZm9sbG93aW5nIHR5cGVzIChqc29uYl9ib29sKCkgZXQgYWwpCisJICog ZG9uJ3QgaGFuZGxlIGVycm9ycyBzb2Z0bHksIHNvIGZvcmNlIHRvIHVzZSBqc29uX3BvcHVsYXRl X3R5cGUoKSB1c2luZworCSAqIGEgSnNvbkNvZXJjaW9uIG5vZGUgc28gdGhhdCBhbnkgZXJyb3Jz IGFyZSBoYW5kbGVkIGFwcHJvcHJpYXRlbHkuCisJICovCisJaWYgKGpzZXhwci0+b3AgPT0gSlNP Tl9RVUVSWV9PUCkKKwl7CisJCXN3aXRjaCAocmV0dXJuaW5nLT50eXBpZCkKKwkJeworCQkJY2Fz ZSBCT09MT0lEOgorCQkJY2FzZSBOVU1FUklDT0lEOgorCQkJY2FzZSBJTlQyT0lEOgorCQkJY2Fz ZSBJTlQ0T0lEOgorCQkJY2FzZSBJTlQ4T0lEOgorCQkJY2FzZSBGTE9BVDRPSUQ6CisJCQljYXNl IEZMT0FUOE9JRDoKKwkJCQlyZXR1cm4gKE5vZGUgKikgbWFrZUpzb25Db2VyY2lvbihyZXR1cm5p bmcsIG9taXRfcXVvdGVzLCBOVUxMKTsKKwkJCWRlZmF1bHQ6CisJCQkJYnJlYWs7CisJCX0KKwl9 CisKKwlkZWZhdWx0X3R5cGlkID0gSnNvbkZ1bmNFeHByRGVmYXVsdFJldHVyblR5cGUoanNleHBy KTsKKwlkZWZhdWx0X3R5cG1vZCA9IC0xOworCWlmIChyZXR1cm5pbmctPnR5cGlkICE9IGRlZmF1 bHRfdHlwaWQgfHwKKwkJcmV0dXJuaW5nLT50eXBtb2QgIT0gZGVmYXVsdF90eXBtb2QgfHwKKwkJ b21pdF9xdW90ZXMpCisJeworCQkvKgorCQkgKiBXZSBhYnVzZSBDYXNlVGVzdEV4cHIgaGVyZSBh cyBwbGFjZWhvbGRlciB0byBwYXNzIHRoZSByZXN1bHQgb2YKKwkJICogZXZhbHVhdGluZyB0aGUg SlNPTl9WQUxVRS9RVUVSWSBqc29ucGF0aCBleHByZXNzaW9uIGFzIGlucHV0IHRvIHRoZQorCQkg KiBjb2VyY2lvbiBleHByZXNzaW9uLgorCQkgKi8KKwkJQ2FzZVRlc3RFeHByICpwbGFjZWhvbGRl ciA9IG1ha2VOb2RlKENhc2VUZXN0RXhwcik7CisKKwkJLyoKKwkJICogV2hlbiBPTUlUIFFVT1RF UyBpcyB0cnVlLCBFeGVjRXZhbEpzb25Db2VyY2lvbigpIHdpbGwgY29udmVydCBhCisJCSAqIHF1 b3RlLXN0cmlwcGVkIHNvdXJjZSB2YWx1ZSB0byBpdHMgdGV4dCByZXByZXNlbnRhdGlvbiwgc28g dXNlCisJCSAqIFRFWFRPSUQgYXMgdGhlIHNvdXJjZSB0eXBlLgorCQkgKi8KKwkJcGxhY2Vob2xk ZXItPnR5cGVJZCA9IG9taXRfcXVvdGVzID8gVEVYVE9JRCA6IGV4cHJUeXBlKGNvbnRleHRfaXRl bSk7CisJCXBsYWNlaG9sZGVyLT50eXBlTW9kID0gb21pdF9xdW90ZXMgPyAtMSA6IGV4cHJUeXBt b2QoY29udGV4dF9pdGVtKTsKKworCQlBc3NlcnQocGxhY2Vob2xkZXItPnR5cGVJZCA9PSBkZWZh dWx0X3R5cGlkIHx8CisJCQkgICBwbGFjZWhvbGRlci0+dHlwZUlkID09IFRFWFRPSUQpOworCQlB c3NlcnQocGxhY2Vob2xkZXItPnR5cGVNb2QgPT0gZGVmYXVsdF90eXBtb2QgfHwKKwkJCSAgIHBs YWNlaG9sZGVyLT50eXBlTW9kID09IC0xKTsKKworCQljb2VyY2lvbl9leHByID0gY29lcmNlSnNv bkV4cHIocHN0YXRlLCAoTm9kZSAqKSBwbGFjZWhvbGRlciwKKwkJCQkJCQkJCSAgIHJldHVybmlu Zywgb21pdF9xdW90ZXMpOworCX0KKworCXJldHVybiBjb2VyY2lvbl9leHByOworfQorCisvKiBS ZXR1cm5zIHRoZSBkZWZhdWx0IHR5cGUgZm9yIGEgZ2l2ZW4gSnNvbkV4cHIgZm9yIGEgZ2l2ZW4g SnNvbkZvcm1hdC4gKi8KK3N0YXRpYyBPaWQKK0pzb25GdW5jRXhwckRlZmF1bHRSZXR1cm5UeXBl KEpzb25FeHByICpqc2V4cHIpCit7CisJSnNvbkZvcm1hdCAqZm9ybWF0ID0ganNleHByLT5mb3Jt YXQ7CisJTm9kZQkgICAqY29udGV4dF9pdGVtID0ganNleHByLT5mb3JtYXR0ZWRfZXhwcjsKKwor CUFzc2VydChmb3JtYXQpOworCWlmIChmb3JtYXQtPmZvcm1hdF90eXBlID09IEpTX0ZPUk1BVF9K U09OQikKKwkJcmV0dXJuIEpTT05CT0lEOworCWVsc2UgaWYgKGZvcm1hdC0+Zm9ybWF0X3R5cGUg PT0gSlNfRk9STUFUX0RFRkFVTFQgJiYKKwkJCSBleHByVHlwZShjb250ZXh0X2l0ZW0pID09IEpT T05CT0lEKQorCQlyZXR1cm4gSlNPTkJPSUQ7CisKKwlyZXR1cm4gSlNPTk9JRDsKK30KKworLyoK KyAqIFJldHVybnMgYSBKc29uQ29lcmNpb24gbm9kZSB0byBjb2VyY2UgYSBqc29uYi12YWx1ZWQg ZXhwcmVzc2lvbiB0byB0aGUKKyAqIHRhcmdldCB0eXBlIGdpdmVuIGJ5ICdyZXR1cm5pbmcnIHVz aW5nIGVpdGhlciBqc29uX3BvcHVsYXRlX3R5cGUoKSBvcgorICogYnkgdXNpbmcgdGhlIHRhcmdl dCB0eXBlJ3MgaW5wdXQgZnVuY3Rpb24uCisgKi8KK3N0YXRpYyBKc29uQ29lcmNpb24gKgorbWFr ZUpzb25Db2VyY2lvbihjb25zdCBKc29uUmV0dXJuaW5nICpyZXR1cm5pbmcsIGJvb2wgb21pdF9x dW90ZXMsCisJCQkJIE5vZGUgKmNhc3RfZXhwcikKK3sKKwlKc29uQ29lcmNpb24gKmNvZXJjaW9u ID0gbWFrZU5vZGUoSnNvbkNvZXJjaW9uKTsKKworCWNvZXJjaW9uLT50YXJnZXR0eXBlID0gcmV0 dXJuaW5nLT50eXBpZDsKKwljb2VyY2lvbi0+dGFyZ2V0dHlwbW9kID0gcmV0dXJuaW5nLT50eXBt b2Q7CisJY29lcmNpb24tPm9taXRfcXVvdGVzID0gb21pdF9xdW90ZXM7CisJY29lcmNpb24tPmNh c3RfZXhwciA9IGNhc3RfZXhwcjsKKworCXJldHVybiBjb2VyY2lvbjsKK30KKworLyoKKyAqIENv ZXJjZSB0aGUgcmVzdWx0IG9mIEpTT05fVkFMVUUgLyBKU09OX1FVRVJZICgpIChvciBhIGJlaGF2 aW9yIGV4cHJlc3Npb24pCisgKiB0byB0aGUgb3V0cHV0IHR5cGUKKyAqCisgKiBSZXR1cm5zIE5V TEwgaWYgbm8gY29lcmNpb24gbmVlZGVkICh0aGUgaW5wdXQgZXhwcmVzc3Npb24gaXMgYWxyZWFk eSBvZiB0aGUKKyAqIGRlc2lyZWQgdHlwZSkgYW5kIE9NSVQgUVVPVEVTIGlzIGZhbHNlLgorICoK KyAqIFJldHVybnMgYSBKc29uQ29lcmNpb24gbm9kZSBpZiB0aGUgY2FzdCB3YXMgbm90IGZvdW5k IG9yIGlmIE9NSVQgUVVPVEVTIGlzCisgKiB0cnVlLgorICovCitzdGF0aWMgTm9kZSAqCitjb2Vy Y2VKc29uRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIsIGNvbnN0IEpzb25SZXR1 cm5pbmcgKnJldHVybmluZywKKwkJCSAgIGJvb2wgb21pdF9xdW90ZXMpCit7CisJTm9kZQkgICAq Y29lcmNlZF9leHByOworCisJQXNzZXJ0KGV4cHIgIT0gTlVMTCk7CisJY29lcmNlZF9leHByID0g Y29lcmNlSnNvbkZ1bmNFeHByKHBzdGF0ZSwgZXhwciwgcmV0dXJuaW5nLCBmYWxzZSk7CisKKwlp ZiAoY29lcmNlZF9leHByID09IGV4cHIgJiYgIW9taXRfcXVvdGVzKQorCQlyZXR1cm4gTlVMTDsK KworCS8qIFVzZSBjb2VyY2VkX2V4cHIgZm9yIEpzb25Db2VyY2lvbi5jYXN0X2V4cHIgaWZmIGNv ZXJjaW9uIGlzIG5lZWRlZC4gKi8KKwlpZiAoY29lcmNlZF9leHByID09IE5VTEwgfHwgb21pdF9x dW90ZXMpCisJCXJldHVybiAoTm9kZSAqKSBtYWtlSnNvbkNvZXJjaW9uKHJldHVybmluZywgb21p dF9xdW90ZXMsCisJCQkJCQkJCQkJIGNvZXJjZWRfZXhwciA9PSBleHByID8KKwkJCQkJCQkJCQkg TlVMTCA6IGNvZXJjZWRfZXhwcik7CisKKwlyZXR1cm4gY29lcmNlZF9leHByOworfQorCisvKgor 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 ZUpzb25FeHByKHBzdGF0ZSwgZXhwciwgcmV0dXJuaW5nLCBmYWxzZSk7CisJCWl0ZW1fY29lcmNp b25zID0gbGFwcGVuZChpdGVtX2NvZXJjaW9ucywgaXRlbV9jb2VyY2lvbik7CisJfQorCisJcmV0 dXJuIGl0ZW1fY29lcmNpb25zOworfQorCisvKgorICogUmV0dXJucyBjb25zdGFudCB2YWx1ZXMg dG8gYmUgcmV0dXJuZWQgdG8gdGhlIHVzZXIgZm9yIHZhcmlvdXMKKyAqIG5vbi1FUlJPUiBPTiBF UlJPUi9FTVBUWSBiZWhhdmlvcnMuCisgKgorICogTm90ZSB0aGF0IEpTT05fQkVIQVZJT1JfREVG QVVMVCBleHByZXNzaW9uIGlzIGhhbmRsZWQgYnkgdGhlCisgKiBjYWxsZXIgc2VwYXJhdGVseS4K KyAqLworc3RhdGljIE5vZGUgKgorR2V0SnNvbkJlaGF2aW9yQ29uc3RFeHByKEpzb25CZWhhdmlv clR5cGUgYnR5cGUsIGludCBsb2NhdGlvbikKK3sKKwlEYXR1bQkJdmFsID0gKERhdHVtKSAwOwor CU9pZAkJCXR5cGlkID0gSlNPTkJPSUQ7CisJaW50CQkJbGVuID0gLTE7CisJYm9vbAkJaXNieXZh bCA9IGZhbHNlOworCWJvb2wJCWlzbnVsbCA9IGZhbHNlOworCUNvbnN0CSAgICpjb247CisKKwlz d2l0Y2ggKGJ0eXBlKQorCXsKKwkJY2FzZSBKU09OX0JFSEFWSU9SX0VNUFRZX0FSUkFZOgorCQkJ dmFsID0gRGlyZWN0RnVuY3Rpb25DYWxsMShqc29uYl9pbiwgQ1N0cmluZ0dldERhdHVtKCJbXSIp KTsKKwkJCWJyZWFrOworCisJCWNhc2UgSlNPTl9CRUhBVklPUl9FTVBUWV9PQkpFQ1Q6CisJCQl2 YWwgPSBEaXJlY3RGdW5jdGlvbkNhbGwxKGpzb25iX2luLCBDU3RyaW5nR2V0RGF0dW0oInt9Iikp OworCQkJYnJlYWs7CisKKwkJY2FzZSBKU09OX0JFSEFWSU9SX1RSVUU6CisJCQl2YWwgPSBCb29s R2V0RGF0dW0odHJ1ZSk7CisJCQl0eXBpZCA9IEJPT0xPSUQ7CisJCQlsZW4gPSBzaXplb2YoYm9v bCk7CisJCQlpc2J5dmFsID0gdHJ1ZTsKKwkJCWJyZWFrOworCisJCWNhc2UgSlNPTl9CRUhBVklP Ul9GQUxTRToKKwkJCXZhbCA9IEJvb2xHZXREYXR1bShmYWxzZSk7CisJCQl0eXBpZCA9IEJPT0xP SUQ7CisJCQlsZW4gPSBzaXplb2YoYm9vbCk7CisJCQlpc2J5dmFsID0gdHJ1ZTsKKwkJCWJyZWFr OworCisJCWNhc2UgSlNPTl9CRUhBVklPUl9OVUxMOgorCQljYXNlIEpTT05fQkVIQVZJT1JfVU5L Tk9XTjoKKwkJY2FzZSBKU09OX0JFSEFWSU9SX0VNUFRZOgorCQkJdmFsID0gKERhdHVtKSAwOwor CQkJaXNudWxsID0gdHJ1ZTsKKwkJCXR5cGlkID0gSU5UNE9JRDsKKwkJCWxlbiA9IHNpemVvZihp bnQzMik7CisJCQlpc2J5dmFsID0gdHJ1ZTsKKwkJCWJyZWFrOworCisJCWNhc2UgSlNPTl9CRUhB VklPUl9ERUZBVUxUOgorCQljYXNlIEpTT05fQkVIQVZJT1JfRVJST1I6CisJCQkvKiBBbHdheXMg aGFuZGxlZCBpbiB0aGUgY2FsbGVyLiAqLworCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWJyZWFrOwor CisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIFNRTC9KU09OIGJlaGF2 aW9yICVkIiwgYnR5cGUpOworCQkJYnJlYWs7CisJfQorCisJY29uID0gbWFrZUNvbnN0KHR5cGlk LCAtMSwgSW52YWxpZE9pZCwgbGVuLCB2YWwsIGlzbnVsbCwgaXNieXZhbCk7CisJY29uLT5sb2Nh dGlvbiA9IGxvY2F0aW9uOworCisJcmV0dXJuIChOb2RlICopIGNvbjsKK30KKworLyoKKyAqIFRy YW5zZm9ybSBhIEpTT04gQkVIQVZJT1IgY2xhdXNlLgorICovCitzdGF0aWMgSnNvbkJlaGF2aW9y ICoKK3RyYW5zZm9ybUpzb25CZWhhdmlvcihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25CZWhhdmlv ciAqYmVoYXZpb3IsCisJCQkJCSAgSnNvbkJlaGF2aW9yVHlwZSBkZWZhdWx0X2JlaGF2aW9yLAor CQkJCQkgIEpzb25SZXR1cm5pbmcgKnJldHVybmluZykKK3sKKwlKc29uQmVoYXZpb3JUeXBlIGJl aGF2aW9yX3R5cGUgPSBkZWZhdWx0X2JlaGF2aW9yOworCU5vZGUJICAgKmV4cHIgPSBOVUxMOwor CUpzb25Db2VyY2lvbiAqY29lcmNpb24gPSBOVUxMOworCWludAkJCWxvY2F0aW9uID0gLTE7CisK KwlpZiAoYmVoYXZpb3IpCisJeworCQliZWhhdmlvcl90eXBlID0gYmVoYXZpb3ItPmJ0eXBlOwor CQlsb2NhdGlvbiA9IGJlaGF2aW9yLT5sb2NhdGlvbjsKKwkJaWYgKGJlaGF2aW9yX3R5cGUgPT0g SlNPTl9CRUhBVklPUl9ERUZBVUxUKQorCQl7CisJCQlleHByID0gdHJhbnNmb3JtRXhwclJlY3Vy c2UocHN0YXRlLCBiZWhhdmlvci0+ZXhwcik7CisJCQlpZiAoIUlzQShleHByLCBDb25zdCkgJiYg IUlzQShleHByLCBGdW5jRXhwcikgJiYKKwkJCQkhSXNBKGV4cHIsIE9wRXhwcikpCisJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAor CQkJCQkJIGVycm1zZygiY2FuIG9ubHkgc3BlY2lmeSBjb25zdGFudCwgbm9uLWFnZ3JlZ2F0ZSIK KwkJCQkJCQkJIiBmdW5jdGlvbiwgb3Igb3BlcmF0b3IgZXhwcmVzc2lvbiBmb3IiCisJCQkJCQkJ CSIgREVGQVVMVCIpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0 aW9uKGV4cHIpKSkpOworCQkJaWYgKGNvbnRhaW5fdmFyX2NsYXVzZShleHByKSkKKwkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJ CQkJCQkgZXJybXNnKCJERUZBVUxUIGV4cHJlc3Npb24gbXVzdCBub3QgY29udGFpbiBjb2x1bW4g cmVmZXJlbmNlcyIpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0 aW9uKGV4cHIpKSkpOworCQkJaWYgKGV4cHJlc3Npb25fcmV0dXJuc19zZXQoZXhwcikpCisJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gp LAorCQkJCQkJIGVycm1zZygiREVGQVVMVCBleHByZXNzaW9uIG11c3Qgbm90IHJldHVybiBhIHNl dCIpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKGV4cHIp KSkpOworCQl9CisJfQorCisJaWYgKGV4cHIgPT0gTlVMTCAmJiBiZWhhdmlvcl90eXBlICE9IEpT T05fQkVIQVZJT1JfRVJST1IpCisJCWV4cHIgPSBHZXRKc29uQmVoYXZpb3JDb25zdEV4cHIoYmVo YXZpb3JfdHlwZSwgbG9jYXRpb24pOworCisJaWYgKGV4cHIpCisJeworCQlOb2RlCSAgICpjb2Vy Y2VkX2V4cHIgPSBleHByOworCQlib29sCQlpc251bGwgPSAoSXNBKGV4cHIsIENvbnN0KSAmJiAo KENvbnN0ICopIGV4cHIpLT5jb25zdGlzbnVsbCk7CisKKwkJLyoKKwkJICogQ29lcmNlIE5VTExz IGFuZCAiaW50ZXJuYWwiICh0aGF0IGlzLCBub3Qgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyKQorCQkg KiBqc29uYi12YWx1ZWQgZXhwcmVzc2lvbnMgd2l0aCBhIEpzb25Db2VyY2lvbiBub2RlLgorCQkg KgorCQkgKiBGb3Igb3RoZXIgKHVzZXItc3BlY2lmaWVkKSBub24tTlVMTCB2YWx1ZXMsIHRyeSB0 byBmaW5kIGEgY2FzdCBhbmQKKwkJICogZXJyb3Igb3V0IGlmIG9uZSBpcyBub3QgZm91bmQuCisJ CSAqLworCQlpZiAoaXNudWxsIHx8CisJCQkoZXhwclR5cGUoZXhwcikgPT0gSlNPTkJPSUQgJiYK KwkJCSBiZWhhdmlvcl90eXBlID09IGRlZmF1bHRfYmVoYXZpb3IpKQorCQkJY29lcmNpb24gPSBt YWtlSnNvbkNvZXJjaW9uKHJldHVybmluZywgZmFsc2UsIE5VTEwpOworCQllbHNlCisJCQljb2Vy Y2VkX2V4cHIgPQorCQkJCWNvZXJjZV90b190YXJnZXRfdHlwZShwc3RhdGUsIGV4cHIsIGV4cHJU eXBlKGV4cHIpLAorCQkJCQkJCQkJICByZXR1cm5pbmctPnR5cGlkLCByZXR1cm5pbmctPnR5cG1v ZCwKKwkJCQkJCQkJCSAgQ09FUkNJT05fRVhQTElDSVQsIENPRVJDRV9FWFBMSUNJVF9DQVNULAor CQkJCQkJCQkJICBleHByTG9jYXRpb24oKE5vZGUgKikgYmVoYXZpb3IpKTsKKworCQlpZiAoY29l cmNlZF9leHByID09IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNP REVfQ0FOTk9UX0NPRVJDRSksCisJCQkJCWVycm1zZygiY2Fubm90IGNhc3QgYmVoYXZpb3IgZXhw cmVzc2lvbiBvZiB0eXBlICVzIHRvICVzIiwKKwkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKGV4cHJU eXBlKGV4cHIpKSwKKwkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKHJldHVybmluZy0+dHlwaWQpKSwK KwkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKGV4cHIpKSk7CisJ CWVsc2UKKwkJCWV4cHIgPSBjb2VyY2VkX2V4cHI7CisJfQorCisJcmV0dXJuIG1ha2VKc29uQmVo YXZpb3IoYmVoYXZpb3JfdHlwZSwgZXhwciwgY29lcmNpb24sIGxvY2F0aW9uKTsKK30KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV90YXJnZXQuYwppbmRleCBmMTBmYzQyMGU2Li40YzJkNTg2ZTRkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX3RhcmdldC5jCkBAIC0xOTg4LDYgKzE5ODgsMjEgQEAgRmlndXJlQ29sbmFt ZUludGVybmFsKE5vZGUgKm5vZGUsIGNoYXIgKipuYW1lKQogCQkJLyogbWFrZSBKU09OX0FSUkFZ QUdHIGFjdCBsaWtlIGEgcmVndWxhciBmdW5jdGlvbiAqLwogCQkJKm5hbWUgPSAianNvbl9hcnJh eWFnZyI7CiAJCQlyZXR1cm4gMjsKKwkJY2FzZSBUX0pzb25GdW5jRXhwcjoKKwkJCS8qIG1ha2Ug U1FML0pTT04gZnVuY3Rpb25zIGFjdCBsaWtlIGEgcmVndWxhciBmdW5jdGlvbiAqLworCQkJc3dp dGNoICgoKEpzb25GdW5jRXhwciAqKSBub2RlKS0+b3ApCisJCQl7CisJCQkJY2FzZSBKU09OX0VY SVNUU19PUDoKKwkJCQkJKm5hbWUgPSAianNvbl9leGlzdHMiOworCQkJCQlyZXR1cm4gMjsKKwkJ CQljYXNlIEpTT05fUVVFUllfT1A6CisJCQkJCSpuYW1lID0gImpzb25fcXVlcnkiOworCQkJCQly ZXR1cm4gMjsKKwkJCQljYXNlIEpTT05fVkFMVUVfT1A6CisJCQkJCSpuYW1lID0gImpzb25fdmFs dWUiOworCQkJCQlyZXR1cm4gMjsKKwkJCX0KKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJYnJl YWs7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zvcm1hdHRpbmcuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXR0aW5nLmMKaW5kZXggMDM2YTQ2MzQ5MS4uMTlm NWY3YzUzMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zvcm1hdHRpbmcuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZm9ybWF0dGluZy5jCkBAIC00NDY1LDYgKzQ0NjUs NTAgQEAgcGFyc2VfZGF0ZXRpbWUodGV4dCAqZGF0ZV90eHQsIHRleHQgKmZtdCwgT2lkIGNvbGxp ZCwgYm9vbCBzdHJpY3QsCiAJfQogfQogCisvKgorICogUGFyc2VzIHRoZSBkYXRldGltZSBmb3Jt YXQgc3RyaW5nIGluICdmbXRfc3RyJyBhbmQgcmV0dXJucyB0cnVlIGlmIGl0CisgKiBjb250YWlu cyBhIHRpbWV6b25lIHNwZWNpZmllciwgZmFsc2UgaWYgbm90LgorICovCitib29sCitkYXRldGlt ZV9mb3JtYXRfaGFzX3R6KGNvbnN0IGNoYXIgKmZtdF9zdHIpCit7CisJYm9vbAkJaW5jYWNoZTsK KwlpbnQJCQlmbXRfbGVuID0gc3RybGVuKGZtdF9zdHIpOworCWludAkJCXJlc3VsdDsKKwlGb3Jt YXROb2RlICpmb3JtYXQ7CisKKwlpZiAoZm10X2xlbiA+IERDSF9DQUNIRV9TSVpFKQorCXsKKwkJ LyoKKwkJICogQWxsb2NhdGUgbmV3IG1lbW9yeSBpZiBmb3JtYXQgcGljdHVyZSBpcyBiaWdnZXIg dGhhbiBzdGF0aWMgY2FjaGUKKwkJICogYW5kIGRvIG5vdCB1c2UgY2FjaGUgKGNhbGwgcGFyc2Vy IGFsd2F5cykKKwkJICovCisJCWluY2FjaGUgPSBmYWxzZTsKKworCQlmb3JtYXQgPSAoRm9ybWF0 Tm9kZSAqKSBwYWxsb2MoKGZtdF9sZW4gKyAxKSAqIHNpemVvZihGb3JtYXROb2RlKSk7CisKKwkJ cGFyc2VfZm9ybWF0KGZvcm1hdCwgZm10X3N0ciwgRENIX2tleXdvcmRzLAorCQkJCQkgRENIX3N1 ZmYsIERDSF9pbmRleCwgRENIX0ZMQUcsIE5VTEwpOworCX0KKwllbHNlCisJeworCQkvKgorCQkg KiBVc2UgY2FjaGUgYnVmZmVycworCQkgKi8KKwkJRENIQ2FjaGVFbnRyeSAqZW50ID0gRENIX2Nh Y2hlX2ZldGNoKGZtdF9zdHIsIGZhbHNlKTsKKworCQlpbmNhY2hlID0gdHJ1ZTsKKwkJZm9ybWF0 ID0gZW50LT5mb3JtYXQ7CisJfQorCisJcmVzdWx0ID0gRENIX2RhdGV0aW1lX3R5cGUoZm9ybWF0 KTsKKworCWlmICghaW5jYWNoZSkKKwkJcGZyZWUoZm9ybWF0KTsKKworCXJldHVybiByZXN1bHQg JiBEQ0hfWk9ORUQ7Cit9CisKIC8qCiAgKiBkb190b190aW1lc3RhbXA6IHNoYXJlZCBjb2RlIGZv ciB0b190aW1lc3RhbXAgYW5kIHRvX2RhdGUKICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvanNvbmIuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jCmluZGV4IGE1 ZTQ4NzQ0YWMuLjhmZmEyNmI3OTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29uYi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jCkBAIC0yMTU5LDMgKzIx NTksMzQgQEAganNvbmJfZmxvYXQ4KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlQR19SRVRVUk5fREFU VU0ocmV0VmFsdWUpOwogfQorCisvKgorICogQ29udmVydCBqc29uYiB0byBhIEMtc3RyaW5nIHN0 cmlwcGluZyBxdW90ZXMgZnJvbSBzY2FsYXIgc3RyaW5ncy4KKyAqLworY2hhciAqCitKc29uYlVu cXVvdGUoSnNvbmIgKmpiKQoreworCWlmIChKQl9ST09UX0lTX1NDQUxBUihqYikpCisJeworCQlK c29uYlZhbHVlCXY7CisKKwkJKHZvaWQpIEpzb25iRXh0cmFjdFNjYWxhcigmamItPnJvb3QsICZ2 KTsKKworCQlpZiAodi50eXBlID09IGpidlN0cmluZykKKwkJCXJldHVybiBwbnN0cmR1cCh2LnZh bC5zdHJpbmcudmFsLCB2LnZhbC5zdHJpbmcubGVuKTsKKwkJZWxzZSBpZiAodi50eXBlID09IGpi dkJvb2wpCisJCQlyZXR1cm4gcHN0cmR1cCh2LnZhbC5ib29sZWFuID8gInRydWUiIDogImZhbHNl Iik7CisJCWVsc2UgaWYgKHYudHlwZSA9PSBqYnZOdW1lcmljKQorCQkJcmV0dXJuIERhdHVtR2V0 Q1N0cmluZyhEaXJlY3RGdW5jdGlvbkNhbGwxKG51bWVyaWNfb3V0LAorCQkJCQkJCQkJCQkJCSAg IFBvaW50ZXJHZXREYXR1bSh2LnZhbC5udW1lcmljKSkpOworCQllbHNlIGlmICh2LnR5cGUgPT0g amJ2TnVsbCkKKwkJCXJldHVybiBwc3RyZHVwKCJudWxsIik7CisJCWVsc2UKKwkJeworCQkJZWxv ZyhFUlJPUiwgInVucmVjb2duaXplZCBqc29uYiB2YWx1ZSB0eXBlICVkIiwgdi50eXBlKTsKKwkJ CXJldHVybiBOVUxMOworCQl9CisJfQorCWVsc2UKKwkJcmV0dXJuIEpzb25iVG9DU3RyaW5nKE5V TEwsICZqYi0+cm9vdCwgVkFSU0laRShqYikpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2pzb25mdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5j CmluZGV4IDFiMGY0OTQzMjkuLjU0ZGJkN2U3OWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9qc29uZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNz LmMKQEAgLTI4MzAsNyArMjgzMCw5IEBAIHBvcHVsYXRlX2FycmF5X2RpbV9qc29uYihQb3B1bGF0 ZUFycmF5Q29udGV4dCAqY3R4LCAvKiBjb250ZXh0ICovCiAKIAljaGVja19zdGFja19kZXB0aCgp OwogCi0JaWYgKGpidi0+dHlwZSAhPSBqYnZCaW5hcnkgfHwgIUpzb25Db250YWluZXJJc0FycmF5 KGpiYykpCisJLyogRXZlbiBzY2FsYXJzIGNhbiBlbmQgdXAgaGVyZSB0aGFua3MgdG8gSnNvblBh dGhRdWVyeS9WYWx1ZSgpLiAqLworCWlmIChqYnYtPnR5cGUgIT0gamJ2QmluYXJ5IHx8ICFKc29u Q29udGFpbmVySXNBcnJheShqYmMpIHx8CisJCUpzb25Db250YWluZXJJc1NjYWxhcihqYmMpKQog CXsKIAkJcG9wdWxhdGVfYXJyYXlfcmVwb3J0X2V4cGVjdGVkX2FycmF5KGN0eCwgbmRpbSAtIDEp OwogCQkvKiBHZXR0aW5nIGhlcmUgbWVhbnMgdGhlIGVycm9yIHdhcyByZXBvcnRlZCBzb2Z0bHku ICovCkBAIC0yODM4LDggKzI4NDAsNiBAQCBwb3B1bGF0ZV9hcnJheV9kaW1fanNvbmIoUG9wdWxh dGVBcnJheUNvbnRleHQgKmN0eCwgLyogY29udGV4dCAqLwogCQlyZXR1cm4gZmFsc2U7CiAJfQog Ci0JQXNzZXJ0KCFKc29uQ29udGFpbmVySXNTY2FsYXIoamJjKSk7Ci0KIAlpdCA9IEpzb25iSXRl cmF0b3JJbml0KGpiYyk7CiAKIAl0b2sgPSBKc29uYkl0ZXJhdG9yTmV4dCgmaXQsICZ2YWwsIHRy dWUpOwpAQCAtMzMyMyw2ICszMzIzLDYyIEBAIHByZXBhcmVfY29sdW1uX2NhY2hlKENvbHVtbklP RGF0YSAqY29sdW1uLAogCVJlbGVhc2VTeXNDYWNoZSh0dXApOwogfQogCisvKgorICogUG9wdWxh dGUgYW5kIHJldHVybiB0aGUgdmFsdWUgb2Ygc3BlY2lmaWVkIHR5cGUgZnJvbSBhIGdpdmVuIGpz b24vanNvbmIKKyAqIHZhbHVlICdqc29uX3ZhbCcuICAnY2FjaGUnIGlzIGNhbGxlci1zcGVjaWZp ZWQgcG9pbnRlciB0byBzYXZlIHRoZQorICogQ29sdW1uSU9EYXRhIHRoYXQgd2lsbCBiZSBpbml0 aWFsaXplZCBvbiB0aGUgMXN0IGNhbGwgYW5kIHRoZW4gcmV1c2VkCisgKiBkdXJpbmcgYW55IHN1 YnNlcXVlbnQgY2FsbHMuICAnbWN4dCcgZ2l2ZXMgdGhlIG1lbW9yeSBjb250ZXh0IHRvIGFsbG9j YXRlCisgKiB0aGUgQ29sdW1uSU9EYXRhIGFuZCBhbnkgb3RoZXIgc3Vic2lkaWFyeSBtZW1vcnkg aW4uICAnZXNjb250ZXh0JywKKyAqIGlmIG5vdCBOVUxMLCB0ZWxscyB0aGF0IGFueSBlcnJvcnMg dGhhdCBvY2N1ciBzaG91bGQgYmUgaGFuZGxlZCBzb2Z0bHkuCisgKi8KK0RhdHVtCitqc29uX3Bv cHVsYXRlX3R5cGUoRGF0dW0ganNvbl92YWwsIE9pZCBqc29uX3R5cGUsCisJCQkJICAgT2lkIHR5 cGlkLCBpbnQzMiB0eXBtb2QsCisJCQkJICAgdm9pZCAqKmNhY2hlLCBNZW1vcnlDb250ZXh0IG1j eHQsCisJCQkJICAgYm9vbCAqaXNudWxsLAorCQkJCSAgIE5vZGUgKmVzY29udGV4dCkKK3sKKwlK c1ZhbHVlCQlqc3YgPSB7MH07CisJSnNvbmJWYWx1ZQlqYnY7CisKKwlqc3YuaXNfanNvbiA9IGpz b25fdHlwZSA9PSBKU09OT0lEOworCisJaWYgKCppc251bGwpCisJeworCQlpZiAoanN2LmlzX2pz b24pCisJCQlqc3YudmFsLmpzb24uc3RyID0gTlVMTDsKKwkJZWxzZQorCQkJanN2LnZhbC5qc29u YiA9IE5VTEw7CisJfQorCWVsc2UgaWYgKGpzdi5pc19qc29uKQorCXsKKwkJdGV4dAkgICAqanNv biA9IERhdHVtR2V0VGV4dFBQKGpzb25fdmFsKTsKKworCQlqc3YudmFsLmpzb24uc3RyID0gVkFS REFUQV9BTlkoanNvbik7CisJCWpzdi52YWwuanNvbi5sZW4gPSBWQVJTSVpFX0FOWV9FWEhEUihq c29uKTsKKwkJanN2LnZhbC5qc29uLnR5cGUgPSBKU09OX1RPS0VOX0lOVkFMSUQ7IC8qIG5vdCB1 c2VkIGluCisJCQkJCQkJCQkJCQkgKiBwb3B1bGF0ZV9jb21wb3NpdGUoKSAqLworCX0KKwllbHNl CisJeworCQlKc29uYgkgICAqanNvbmIgPSBEYXR1bUdldEpzb25iUChqc29uX3ZhbCk7CisKKwkJ anN2LnZhbC5qc29uYiA9ICZqYnY7CisKKwkJLyogZmlsbCBiaW5hcnkganNvbmIgdmFsdWUgcG9p bnRpbmcgdG8gamIgKi8KKwkJamJ2LnR5cGUgPSBqYnZCaW5hcnk7CisJCWpidi52YWwuYmluYXJ5 LmRhdGEgPSAmanNvbmItPnJvb3Q7CisJCWpidi52YWwuYmluYXJ5LmxlbiA9IFZBUlNJWkUoanNv bmIpIC0gVkFSSERSU1o7CisJfQorCisJaWYgKCpjYWNoZSA9PSBOVUxMKQorCQkqY2FjaGUgPSBN ZW1vcnlDb250ZXh0QWxsb2NaZXJvKG1jeHQsIHNpemVvZihDb2x1bW5JT0RhdGEpKTsKKworCXJl dHVybiBwb3B1bGF0ZV9yZWNvcmRfZmllbGQoKmNhY2hlLCB0eXBpZCwgdHlwbW9kLCBOVUxMLCBt Y3h0LAorCQkJCQkJCQkgUG9pbnRlckdldERhdHVtKE5VTEwpLCAmanN2LCBpc251bGwsCisJCQkJ CQkJCSBlc2NvbnRleHQpOworfQorCiAvKiByZWN1cnNpdmVseSBwb3B1bGF0ZSBhIHJlY29yZCBm aWVsZCBvciBhbiBhcnJheSBlbGVtZW50IGZyb20gYSBqc29uL2pzb25iIHZhbHVlICovCiBzdGF0 aWMgRGF0dW0KIHBvcHVsYXRlX3JlY29yZF9maWVsZChDb2x1bW5JT0RhdGEgKmNvbCwKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aC5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2pzb25wYXRoLmMKaW5kZXggZjRhNWQwMDc2Ny4uMTFlNjE5M2U5NiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2pzb25wYXRoLmMKQEAgLTYzLDExICs2MywxNCBAQAogCiAjaW5jbHVkZSAicG9zdGdy ZXMuaCIKIAorI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImxpYi9zdHJp bmdpbmZvLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKLSNpbmNsdWRlICJub2Rlcy9t aXNjbm9kZXMuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJub2Rlcy9taXNj bm9kZXMuaCIKKyNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKICNpbmNsdWRlICJ1dGlscy9m bWdycHJvdG9zLmgiCisjaW5jbHVkZSAidXRpbHMvZm9ybWF0dGluZy5oIgogI2luY2x1ZGUgInV0 aWxzL2pzb24uaCIKICNpbmNsdWRlICJ1dGlscy9qc29ucGF0aC5oIgogCkBAIC0xMjM5LDMgKzEy NDIsMjgxIEBAIGpzcEdldEFycmF5U3Vic2NyaXB0KEpzb25QYXRoSXRlbSAqdiwgSnNvblBhdGhJ dGVtICpmcm9tLCBKc29uUGF0aEl0ZW0gKnRvLAogCiAJcmV0dXJuIHRydWU7CiB9CisKKy8qIFNR TC9KU09OIGRhdGF0eXBlIHN0YXR1czogKi8KK2VudW0gSnNvblBhdGhEYXRhdHlwZVN0YXR1cwor eworCWpwZHNOb25EYXRlVGltZSwJCQkvKiBudWxsLCBib29sLCBudW1lcmljLCBzdHJpbmcsIGFy cmF5LCBvYmplY3QgKi8KKwlqcGRzVW5rbm93bkRhdGVUaW1lLAkJLyogdW5rbm93biBkYXRldGlt ZSB0eXBlICovCisJanBkc0RhdGVUaW1lWm9uZWQsCQkJLyogdGltZXR6LCB0aW1lc3RhbXB0eiAq LworCWpwZHNEYXRlVGltZU5vblpvbmVkLAkJLyogdGltZSwgdGltZXN0YW1wLCBkYXRlICovCit9 OworCisvKiBDb250ZXh0IGZvciBqc3BJc011dGFibGVXYWxrZXIoKSAqLworc3RydWN0IEpzb25Q YXRoTXV0YWJsZUNvbnRleHQKK3sKKwlMaXN0CSAgICp2YXJuYW1lczsJCS8qIGxpc3Qgb2YgdmFy aWFibGUgbmFtZXMgKi8KKwlMaXN0CSAgICp2YXJleHByczsJCS8qIGxpc3Qgb2YgdmFyaWFibGUg ZXhwcmVzc2lvbnMgKi8KKwllbnVtIEpzb25QYXRoRGF0YXR5cGVTdGF0dXMgY3VycmVudDsJLyog c3RhdHVzIG9mIEAgaXRlbSAqLworCWJvb2wJCWxheDsJCQkvKiBqc29ucGF0aCBpcyBsYXggb3Ig c3RyaWN0ICovCisJYm9vbAkJbXV0YWJsZTsJCS8qIHJlc3VsdGluZyBtdXRhYmlsaXR5IHN0YXR1 cyAqLworfTsKKworc3RhdGljIGVudW0gSnNvblBhdGhEYXRhdHlwZVN0YXR1cyBqc3BJc011dGFi bGVXYWxrZXIoSnNvblBhdGhJdGVtICpqcGksCisJCQkJCQkJCQkJCQkJICBzdHJ1Y3QgSnNvblBh dGhNdXRhYmxlQ29udGV4dCAqY3h0KTsKKworLyoKKyAqIEZ1bmN0aW9uIHRvIGNoZWNrIHdoZXRo ZXIganNvbnBhdGggZXhwcmVzc2lvbiBpcyBtdXRhYmxlIHRvIGJlIHVzZWQgaW4gdGhlCisgKiBw bGFubmVyIGZ1bmN0aW9uIGNvbnRhaW5fbXV0YWJsZV9mdW5jdGlvbnMoKS4KKyAqLworYm9vbAor anNwSXNNdXRhYmxlKEpzb25QYXRoICpwYXRoLCBMaXN0ICp2YXJuYW1lcywgTGlzdCAqdmFyZXhw cnMpCit7CisJc3RydWN0IEpzb25QYXRoTXV0YWJsZUNvbnRleHQgY3h0OworCUpzb25QYXRoSXRl bSBqcGk7CisKKwljeHQudmFybmFtZXMgPSB2YXJuYW1lczsKKwljeHQudmFyZXhwcnMgPSB2YXJl eHByczsKKwljeHQuY3VycmVudCA9IGpwZHNOb25EYXRlVGltZTsKKwljeHQubGF4ID0gKHBhdGgt PmhlYWRlciAmIEpTT05QQVRIX0xBWCkgIT0gMDsKKwljeHQubXV0YWJsZSA9IGZhbHNlOworCisJ anNwSW5pdCgmanBpLCBwYXRoKTsKKwkodm9pZCkganNwSXNNdXRhYmxlV2Fsa2VyKCZqcGksICZj eHQpOworCisJcmV0dXJuIGN4dC5tdXRhYmxlOworfQorCisvKgorICogUmVjdXJzaXZlIHdhbGtl ciBmb3IganNwSXNNdXRhYmxlKCkKKyAqLworc3RhdGljIGVudW0gSnNvblBhdGhEYXRhdHlwZVN0 YXR1cworanNwSXNNdXRhYmxlV2Fsa2VyKEpzb25QYXRoSXRlbSAqanBpLCBzdHJ1Y3QgSnNvblBh dGhNdXRhYmxlQ29udGV4dCAqY3h0KQoreworCUpzb25QYXRoSXRlbSBuZXh0OworCWVudW0gSnNv blBhdGhEYXRhdHlwZVN0YXR1cyBzdGF0dXMgPSBqcGRzTm9uRGF0ZVRpbWU7CisKKwl3aGlsZSAo IWN4dC0+bXV0YWJsZSkKKwl7CisJCUpzb25QYXRoSXRlbSBhcmc7CisJCWVudW0gSnNvblBhdGhE YXRhdHlwZVN0YXR1cyBsZWZ0U3RhdHVzOworCQllbnVtIEpzb25QYXRoRGF0YXR5cGVTdGF0dXMg cmlnaHRTdGF0dXM7CisKKwkJc3dpdGNoIChqcGktPnR5cGUpCisJCXsKKwkJCWNhc2UganBpUm9v dDoKKwkJCQlBc3NlcnQoc3RhdHVzID09IGpwZHNOb25EYXRlVGltZSk7CisJCQkJYnJlYWs7CisK KwkJCWNhc2UganBpQ3VycmVudDoKKwkJCQlBc3NlcnQoc3RhdHVzID09IGpwZHNOb25EYXRlVGlt ZSk7CisJCQkJc3RhdHVzID0gY3h0LT5jdXJyZW50OworCQkJCWJyZWFrOworCisJCQljYXNlIGpw aUZpbHRlcjoKKwkJCQl7CisJCQkJCWVudW0gSnNvblBhdGhEYXRhdHlwZVN0YXR1cyBwcmV2U3Rh dHVzID0gY3h0LT5jdXJyZW50OworCisJCQkJCWN4dC0+Y3VycmVudCA9IHN0YXR1czsKKwkJCQkJ anNwR2V0QXJnKGpwaSwgJmFyZyk7CisJCQkJCWpzcElzTXV0YWJsZVdhbGtlcigmYXJnLCBjeHQp OworCisJCQkJCWN4dC0+Y3VycmVudCA9IHByZXZTdGF0dXM7CisJCQkJCWJyZWFrOworCQkJCX0K KworCQkJY2FzZSBqcGlWYXJpYWJsZToKKwkJCQl7CisJCQkJCWludDMyCQlsZW47CisJCQkJCWNv bnN0IGNoYXIgKm5hbWUgPSBqc3BHZXRTdHJpbmcoanBpLCAmbGVuKTsKKwkJCQkJTGlzdENlbGwg ICAqbGMxOworCQkJCQlMaXN0Q2VsbCAgICpsYzI7CisKKwkJCQkJQXNzZXJ0KHN0YXR1cyA9PSBq cGRzTm9uRGF0ZVRpbWUpOworCisJCQkJCWZvcmJvdGgobGMxLCBjeHQtPnZhcm5hbWVzLCBsYzIs IGN4dC0+dmFyZXhwcnMpCisJCQkJCXsKKwkJCQkJCVN0cmluZwkgICAqdmFybmFtZSA9IGxmaXJz dF9ub2RlKFN0cmluZywgbGMxKTsKKwkJCQkJCU5vZGUJICAgKnZhcmV4cHIgPSBsZmlyc3QobGMy KTsKKworCQkJCQkJaWYgKHN0cm5jbXAodmFybmFtZS0+c3ZhbCwgbmFtZSwgbGVuKSkKKwkJCQkJ CQljb250aW51ZTsKKworCQkJCQkJc3dpdGNoIChleHByVHlwZSh2YXJleHByKSkKKwkJCQkJCXsK KwkJCQkJCQljYXNlIERBVEVPSUQ6CisJCQkJCQkJY2FzZSBUSU1FT0lEOgorCQkJCQkJCWNhc2Ug VElNRVNUQU1QT0lEOgorCQkJCQkJCQlzdGF0dXMgPSBqcGRzRGF0ZVRpbWVOb25ab25lZDsKKwkJ CQkJCQkJYnJlYWs7CisKKwkJCQkJCQljYXNlIFRJTUVUWk9JRDoKKwkJCQkJCQljYXNlIFRJTUVT VEFNUFRaT0lEOgorCQkJCQkJCQlzdGF0dXMgPSBqcGRzRGF0ZVRpbWVab25lZDsKKwkJCQkJCQkJ YnJlYWs7CisKKwkJCQkJCQlkZWZhdWx0OgorCQkJCQkJCQlzdGF0dXMgPSBqcGRzTm9uRGF0ZVRp bWU7CisJCQkJCQkJCWJyZWFrOworCQkJCQkJfQorCisJCQkJCQlicmVhazsKKwkJCQkJfQorCQkJ CQlicmVhazsKKwkJCQl9CisKKwkJCWNhc2UganBpRXF1YWw6CisJCQljYXNlIGpwaU5vdEVxdWFs OgorCQkJY2FzZSBqcGlMZXNzOgorCQkJY2FzZSBqcGlHcmVhdGVyOgorCQkJY2FzZSBqcGlMZXNz T3JFcXVhbDoKKwkJCWNhc2UganBpR3JlYXRlck9yRXF1YWw6CisJCQkJQXNzZXJ0KHN0YXR1cyA9 PSBqcGRzTm9uRGF0ZVRpbWUpOworCQkJCWpzcEdldExlZnRBcmcoanBpLCAmYXJnKTsKKwkJCQls ZWZ0U3RhdHVzID0ganNwSXNNdXRhYmxlV2Fsa2VyKCZhcmcsIGN4dCk7CisKKwkJCQlqc3BHZXRS aWdodEFyZyhqcGksICZhcmcpOworCQkJCXJpZ2h0U3RhdHVzID0ganNwSXNNdXRhYmxlV2Fsa2Vy KCZhcmcsIGN4dCk7CisKKwkJCQkvKgorCQkJCSAqIENvbXBhcmlzb24gb2YgZGF0ZXRpbWUgdHlw ZSB3aXRoIGRpZmZlcmVudCB0aW1lem9uZSBzdGF0dXMKKwkJCQkgKiBpcyBtdXRhYmxlLgorCQkJ CSAqLworCQkJCWlmIChsZWZ0U3RhdHVzICE9IGpwZHNOb25EYXRlVGltZSAmJgorCQkJCQlyaWdo dFN0YXR1cyAhPSBqcGRzTm9uRGF0ZVRpbWUgJiYKKwkJCQkJKGxlZnRTdGF0dXMgPT0ganBkc1Vu a25vd25EYXRlVGltZSB8fAorCQkJCQkgcmlnaHRTdGF0dXMgPT0ganBkc1Vua25vd25EYXRlVGlt ZSB8fAorCQkJCQkgbGVmdFN0YXR1cyAhPSByaWdodFN0YXR1cykpCisJCQkJCWN4dC0+bXV0YWJs ZSA9IHRydWU7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UganBpTm90OgorCQkJY2FzZSBqcGlJc1Vu a25vd246CisJCQljYXNlIGpwaUV4aXN0czoKKwkJCWNhc2UganBpUGx1czoKKwkJCWNhc2UganBp TWludXM6CisJCQkJQXNzZXJ0KHN0YXR1cyA9PSBqcGRzTm9uRGF0ZVRpbWUpOworCQkJCWpzcEdl dEFyZyhqcGksICZhcmcpOworCQkJCWpzcElzTXV0YWJsZVdhbGtlcigmYXJnLCBjeHQpOworCQkJ CWJyZWFrOworCisJCQljYXNlIGpwaUFuZDoKKwkJCWNhc2UganBpT3I6CisJCQljYXNlIGpwaUFk ZDoKKwkJCWNhc2UganBpU3ViOgorCQkJY2FzZSBqcGlNdWw6CisJCQljYXNlIGpwaURpdjoKKwkJ CWNhc2UganBpTW9kOgorCQkJY2FzZSBqcGlTdGFydHNXaXRoOgorCQkJCUFzc2VydChzdGF0dXMg PT0ganBkc05vbkRhdGVUaW1lKTsKKwkJCQlqc3BHZXRMZWZ0QXJnKGpwaSwgJmFyZyk7CisJCQkJ anNwSXNNdXRhYmxlV2Fsa2VyKCZhcmcsIGN4dCk7CisJCQkJanNwR2V0UmlnaHRBcmcoanBpLCAm YXJnKTsKKwkJCQlqc3BJc011dGFibGVXYWxrZXIoJmFyZywgY3h0KTsKKwkJCQlicmVhazsKKwor CQkJY2FzZSBqcGlJbmRleEFycmF5OgorCQkJCWZvciAoaW50IGkgPSAwOyBpIDwganBpLT5jb250 ZW50LmFycmF5Lm5lbGVtczsgaSsrKQorCQkJCXsKKwkJCQkJSnNvblBhdGhJdGVtIGZyb207CisJ CQkJCUpzb25QYXRoSXRlbSB0bzsKKworCQkJCQlpZiAoanNwR2V0QXJyYXlTdWJzY3JpcHQoanBp LCAmZnJvbSwgJnRvLCBpKSkKKwkJCQkJCWpzcElzTXV0YWJsZVdhbGtlcigmdG8sIGN4dCk7CisK KwkJCQkJanNwSXNNdXRhYmxlV2Fsa2VyKCZmcm9tLCBjeHQpOworCQkJCX0KKwkJCQkvKiBGQUxM VEhST1VHSCAqLworCisJCQljYXNlIGpwaUFueUFycmF5OgorCQkJCWlmICghY3h0LT5sYXgpCisJ CQkJCXN0YXR1cyA9IGpwZHNOb25EYXRlVGltZTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBqcGlB bnk6CisJCQkJaWYgKGpwaS0+Y29udGVudC5hbnlib3VuZHMuZmlyc3QgPiAwKQorCQkJCQlzdGF0 dXMgPSBqcGRzTm9uRGF0ZVRpbWU7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UganBpRGF0ZXRpbWU6 CisJCQkJaWYgKGpwaS0+Y29udGVudC5hcmcpCisJCQkJeworCQkJCQljaGFyCSAgICp0ZW1wbGF0 ZTsKKworCQkJCQlqc3BHZXRBcmcoanBpLCAmYXJnKTsKKwkJCQkJaWYgKGFyZy50eXBlICE9IGpw aVN0cmluZykKKwkJCQkJeworCQkJCQkJc3RhdHVzID0ganBkc05vbkRhdGVUaW1lOworCQkJCQkJ YnJlYWs7CS8qIHRoZXJlIHdpbGwgYmUgcnVudGltZSBlcnJvciAqLworCQkJCQl9CisKKwkJCQkJ dGVtcGxhdGUgPSBqc3BHZXRTdHJpbmcoJmFyZywgTlVMTCk7CisJCQkJCWlmIChkYXRldGltZV9m b3JtYXRfaGFzX3R6KHRlbXBsYXRlKSkKKwkJCQkJCXN0YXR1cyA9IGpwZHNEYXRlVGltZVpvbmVk OworCQkJCQllbHNlCisJCQkJCQlzdGF0dXMgPSBqcGRzRGF0ZVRpbWVOb25ab25lZDsKKwkJCQl9 CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJc3RhdHVzID0ganBkc1Vua25vd25EYXRlVGltZTsKKwkJ CQl9CisJCQkJYnJlYWs7CisKKwkJCWNhc2UganBpTGlrZVJlZ2V4OgorCQkJCUFzc2VydChzdGF0 dXMgPT0ganBkc05vbkRhdGVUaW1lKTsKKwkJCQlqc3BJbml0QnlCdWZmZXIoJmFyZywganBpLT5i YXNlLCBqcGktPmNvbnRlbnQubGlrZV9yZWdleC5leHByKTsKKwkJCQlqc3BJc011dGFibGVXYWxr ZXIoJmFyZywgY3h0KTsKKwkJCQlicmVhazsKKworCQkJCS8qIGxpdGVyYWxzICovCisJCQljYXNl IGpwaU51bGw6CisJCQljYXNlIGpwaVN0cmluZzoKKwkJCWNhc2UganBpTnVtZXJpYzoKKwkJCWNh c2UganBpQm9vbDoKKwkJCQlicmVhazsKKwkJCQkvKiBhY2Nlc3NvcnMgKi8KKwkJCWNhc2UganBp S2V5OgorCQkJY2FzZSBqcGlBbnlLZXk6CisJCQkJLyogc3BlY2lhbCBpdGVtcyAqLworCQkJY2Fz ZSBqcGlTdWJzY3JpcHQ6CisJCQljYXNlIGpwaUxhc3Q6CisJCQkJLyogaXRlbSBtZXRob2RzICov CisJCQljYXNlIGpwaVR5cGU6CisJCQljYXNlIGpwaVNpemU6CisJCQljYXNlIGpwaUFiczoKKwkJ CWNhc2UganBpRmxvb3I6CisJCQljYXNlIGpwaUNlaWxpbmc6CisJCQljYXNlIGpwaURvdWJsZToK KwkJCWNhc2UganBpS2V5VmFsdWU6CisJCQljYXNlIGpwaUJpZ2ludDoKKwkJCWNhc2UganBpQm9v bGVhbjoKKwkJCWNhc2UganBpRGVjaW1hbDoKKwkJCWNhc2UganBpSW50ZWdlcjoKKwkJCWNhc2Ug anBpTnVtYmVyOgorCQkJY2FzZSBqcGlTdHJpbmdGdW5jOgorCQkJCXN0YXR1cyA9IGpwZHNOb25E YXRlVGltZTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBqcGlUaW1lOgorCQkJY2FzZSBqcGlEYXRl OgorCQkJY2FzZSBqcGlUaW1lc3RhbXA6CisJCQkJc3RhdHVzID0ganBkc0RhdGVUaW1lTm9uWm9u ZWQ7CisJCQkJY3h0LT5tdXRhYmxlID0gdHJ1ZTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBqcGlU aW1lVHo6CisJCQljYXNlIGpwaVRpbWVzdGFtcFR6OgorCQkJCXN0YXR1cyA9IGpwZHNEYXRlVGlt ZU5vblpvbmVkOworCQkJCWN4dC0+bXV0YWJsZSA9IHRydWU7CisJCQkJYnJlYWs7CisKKwkJfQor CisJCWlmICghanNwR2V0TmV4dChqcGksICZuZXh0KSkKKwkJCWJyZWFrOworCisJCWpwaSA9ICZu ZXh0OworCX0KKworCXJldHVybiBzdGF0dXM7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvanNvbnBhdGhfZXhlYy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRo X2V4ZWMuYwppbmRleCA2YzhiZDU3NTAzLi4xZDJkMDI0NWU4IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvanNvbnBhdGhfZXhlYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9qc29ucGF0aF9leGVjLmMKQEAgLTIyOSw2ICsyMjksMTIgQEAgc3RhdGljIEpzb25QYXRoRXhl Y1Jlc3VsdCBhcHBlbmRCb29sUmVzdWx0KEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwKIAkJCQkJ CQkJCQkgICBKc29uUGF0aEl0ZW0gKmpzcCwgSnNvblZhbHVlTGlzdCAqZm91bmQsIEpzb25QYXRo Qm9vbCByZXMpOwogc3RhdGljIHZvaWQgZ2V0SnNvblBhdGhJdGVtKEpzb25QYXRoRXhlY0NvbnRl eHQgKmN4dCwgSnNvblBhdGhJdGVtICppdGVtLAogCQkJCQkJCUpzb25iVmFsdWUgKnZhbHVlKTsK K3N0YXRpYyBKc29uYlZhbHVlICpHZXRKc29uUGF0aFZhcih2b2lkICpjeHQsIGNoYXIgKnZhck5h bWUsIGludCB2YXJOYW1lTGVuLAorCQkJCQkJCQkgIEpzb25iVmFsdWUgKmJhc2VPYmplY3QsIGlu dCAqYmFzZU9iamVjdElkKTsKK3N0YXRpYyBpbnQJQ291bnRKc29uUGF0aFZhcnModm9pZCAqY3h0 KTsKK3N0YXRpYyB2b2lkIEpzb25JdGVtRnJvbURhdHVtKERhdHVtIHZhbCwgT2lkIHR5cGlkLCBp bnQzMiB0eXBtb2QsCisJCQkJCQkJICBKc29uYlZhbHVlICpyZXMpOworc3RhdGljIHZvaWQgSnNv bmJWYWx1ZUluaXROdW1lcmljRGF0dW0oSnNvbmJWYWx1ZSAqamJ2LCBEYXR1bSBudW0pOwogc3Rh dGljIHZvaWQgZ2V0SnNvblBhdGhWYXJpYWJsZShKc29uUGF0aEV4ZWNDb250ZXh0ICpjeHQsCiAJ CQkJCQkJCUpzb25QYXRoSXRlbSAqdmFyaWFibGUsIEpzb25iVmFsdWUgKnZhbHVlKTsKIHN0YXRp YyBpbnQJY291bnRWYXJpYWJsZXNGcm9tSnNvbmIodm9pZCAqdmFyc0pzb25iKTsKQEAgLTI4NjAs NiArMjg2NiwxNTUgQEAgZ2V0SnNvblBhdGhJdGVtKEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwg SnNvblBhdGhJdGVtICppdGVtLAogCX0KIH0KIAorLyoKKyAqIFJldHVybnMgdGhlIGNvbXB1dGVk IHZhbHVlIG9mIGEgSlNPTiBwYXRoIHZhcmlhYmxlIHdpdGggZ2l2ZW4gbmFtZS4KKyAqLworc3Rh dGljIEpzb25iVmFsdWUgKgorR2V0SnNvblBhdGhWYXIodm9pZCAqY3h0LCBjaGFyICp2YXJOYW1l LCBpbnQgdmFyTmFtZUxlbiwKKwkJCSAgIEpzb25iVmFsdWUgKmJhc2VPYmplY3QsIGludCAqYmFz ZU9iamVjdElkKQoreworCUpzb25QYXRoVmFyaWFibGUgKnZhciA9IE5VTEw7CisJTGlzdAkgICAq dmFycyA9IGN4dDsKKwlMaXN0Q2VsbCAgICpsYzsKKwlKc29uYlZhbHVlICpyZXN1bHQ7CisJaW50 CQkJaWQgPSAxOworCisJZm9yZWFjaChsYywgdmFycykKKwl7CisJCUpzb25QYXRoVmFyaWFibGUg KmN1cnZhciA9IGxmaXJzdChsYyk7CisKKwkJaWYgKCFzdHJuY21wKGN1cnZhci0+bmFtZSwgdmFy TmFtZSwgdmFyTmFtZUxlbikpCisJCXsKKwkJCXZhciA9IGN1cnZhcjsKKwkJCWJyZWFrOworCQl9 CisKKwkJaWQrKzsKKwl9CisKKwlpZiAodmFyID09IE5VTEwpCisJeworCQkqYmFzZU9iamVjdElk ID0gLTE7CisJCXJldHVybiBOVUxMOworCX0KKworCXJlc3VsdCA9IHBhbGxvYyhzaXplb2YoSnNv bmJWYWx1ZSkpOworCWlmICh2YXItPmlzbnVsbCkKKwl7CisJCSpiYXNlT2JqZWN0SWQgPSAwOwor CQlyZXN1bHQtPnR5cGUgPSBqYnZOdWxsOworCX0KKwllbHNlCisJCUpzb25JdGVtRnJvbURhdHVt KHZhci0+dmFsdWUsIHZhci0+dHlwaWQsIHZhci0+dHlwbW9kLCByZXN1bHQpOworCisJKmJhc2VP YmplY3QgPSAqcmVzdWx0OworCSpiYXNlT2JqZWN0SWQgPSBpZDsKKworCXJldHVybiByZXN1bHQ7 Cit9CisKK3N0YXRpYyBpbnQKK0NvdW50SnNvblBhdGhWYXJzKHZvaWQgKmN4dCkKK3sKKwlMaXN0 CSAgICp2YXJzID0gKExpc3QgKikgY3h0OworCisJcmV0dXJuIGxpc3RfbGVuZ3RoKHZhcnMpOwor fQorCisKKy8qCisgKiBJbml0aWFsaXplIEpzb25iVmFsdWUgdG8gcGFzcyB0byBqc29ucGF0aCBl eGVjdXRvciBmcm9tIGdpdmVuCisgKiBkYXR1bSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIHR5cGUu CisgKi8KK3N0YXRpYyB2b2lkCitKc29uSXRlbUZyb21EYXR1bShEYXR1bSB2YWwsIE9pZCB0eXBp ZCwgaW50MzIgdHlwbW9kLCBKc29uYlZhbHVlICpyZXMpCit7CisJc3dpdGNoICh0eXBpZCkKKwl7 CisJCWNhc2UgQk9PTE9JRDoKKwkJCXJlcy0+dHlwZSA9IGpidkJvb2w7CisJCQlyZXMtPnZhbC5i b29sZWFuID0gRGF0dW1HZXRCb29sKHZhbCk7CisJCQlicmVhazsKKwkJY2FzZSBOVU1FUklDT0lE OgorCQkJSnNvbmJWYWx1ZUluaXROdW1lcmljRGF0dW0ocmVzLCB2YWwpOworCQkJYnJlYWs7CisJ CWNhc2UgSU5UMk9JRDoKKwkJCUpzb25iVmFsdWVJbml0TnVtZXJpY0RhdHVtKHJlcywgRGlyZWN0 RnVuY3Rpb25DYWxsMShpbnQyX251bWVyaWMsIHZhbCkpOworCQkJYnJlYWs7CisJCWNhc2UgSU5U NE9JRDoKKwkJCUpzb25iVmFsdWVJbml0TnVtZXJpY0RhdHVtKHJlcywgRGlyZWN0RnVuY3Rpb25D YWxsMShpbnQ0X251bWVyaWMsIHZhbCkpOworCQkJYnJlYWs7CisJCWNhc2UgSU5UOE9JRDoKKwkJ CUpzb25iVmFsdWVJbml0TnVtZXJpY0RhdHVtKHJlcywgRGlyZWN0RnVuY3Rpb25DYWxsMShpbnQ4 X251bWVyaWMsIHZhbCkpOworCQkJYnJlYWs7CisJCWNhc2UgRkxPQVQ0T0lEOgorCQkJSnNvbmJW YWx1ZUluaXROdW1lcmljRGF0dW0ocmVzLCBEaXJlY3RGdW5jdGlvbkNhbGwxKGZsb2F0NF9udW1l cmljLCB2YWwpKTsKKwkJCWJyZWFrOworCQljYXNlIEZMT0FUOE9JRDoKKwkJCUpzb25iVmFsdWVJ bml0TnVtZXJpY0RhdHVtKHJlcywgRGlyZWN0RnVuY3Rpb25DYWxsMShmbG9hdDhfbnVtZXJpYywg dmFsKSk7CisJCQlicmVhazsKKwkJY2FzZSBURVhUT0lEOgorCQljYXNlIFZBUkNIQVJPSUQ6CisJ CQlyZXMtPnR5cGUgPSBqYnZTdHJpbmc7CisJCQlyZXMtPnZhbC5zdHJpbmcudmFsID0gVkFSREFU QV9BTlkodmFsKTsKKwkJCXJlcy0+dmFsLnN0cmluZy5sZW4gPSBWQVJTSVpFX0FOWV9FWEhEUih2 YWwpOworCQkJYnJlYWs7CisJCWNhc2UgREFURU9JRDoKKwkJY2FzZSBUSU1FT0lEOgorCQljYXNl IFRJTUVUWk9JRDoKKwkJY2FzZSBUSU1FU1RBTVBPSUQ6CisJCWNhc2UgVElNRVNUQU1QVFpPSUQ6 CisJCQlyZXMtPnR5cGUgPSBqYnZEYXRldGltZTsKKwkJCXJlcy0+dmFsLmRhdGV0aW1lLnZhbHVl ID0gdmFsOworCQkJcmVzLT52YWwuZGF0ZXRpbWUudHlwaWQgPSB0eXBpZDsKKwkJCXJlcy0+dmFs LmRhdGV0aW1lLnR5cG1vZCA9IHR5cG1vZDsKKwkJCXJlcy0+dmFsLmRhdGV0aW1lLnR6ID0gMDsK KwkJCWJyZWFrOworCQljYXNlIEpTT05CT0lEOgorCQkJeworCQkJCUpzb25iVmFsdWUgKmpidiA9 IHJlczsKKwkJCQlKc29uYgkgICAqamIgPSBEYXR1bUdldEpzb25iUCh2YWwpOworCisJCQkJaWYg KEpzb25Db250YWluZXJJc1NjYWxhcigmamItPnJvb3QpKQorCQkJCXsKKwkJCQkJYm9vbAkJcmVz dWx0IFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKKworCQkJCQlyZXN1bHQgPSBKc29uYkV4dHJh Y3RTY2FsYXIoJmpiLT5yb290LCBqYnYpOworCQkJCQlBc3NlcnQocmVzdWx0KTsKKwkJCQl9CisJ CQkJZWxzZQorCQkJCQlKc29uYkluaXRCaW5hcnkoamJ2LCBqYik7CisJCQkJYnJlYWs7CisJCQl9 CisJCWNhc2UgSlNPTk9JRDoKKwkJCXsKKwkJCQl0ZXh0CSAgICp0eHQgPSBEYXR1bUdldFRleHRQ KHZhbCk7CisJCQkJY2hhcgkgICAqc3RyID0gdGV4dF90b19jc3RyaW5nKHR4dCk7CisJCQkJSnNv bmIJICAgKmpiOworCisJCQkJamIgPSBEYXR1bUdldEpzb25iUChEaXJlY3RGdW5jdGlvbkNhbGwx KGpzb25iX2luLAorCQkJCQkJCQkJCQkJCQlDU3RyaW5nR2V0RGF0dW0oc3RyKSkpOworCQkJCXBm cmVlKHN0cik7CisKKwkJCQlKc29uSXRlbUZyb21EYXR1bShKc29uYlBHZXREYXR1bShqYiksIEpT T05CT0lELCAtMSwgcmVzKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJZGVmYXVsdDoKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSks CisJCQkJCWVycm1zZygiY291bGQgbm90IGNvbnZlcnQgdmFsdWUgb2YgdHlwZSAlcyB0byBqc29u cGF0aCIsCisJCQkJCQkgICBmb3JtYXRfdHlwZV9iZSh0eXBpZCkpKTsKKwl9Cit9CisKKy8qIElu aXRpYWxpemUgbnVtZXJpYyB2YWx1ZSBmcm9tIHRoZSBnaXZlbiBkYXR1bSAqLworc3RhdGljIHZv aWQKK0pzb25iVmFsdWVJbml0TnVtZXJpY0RhdHVtKEpzb25iVmFsdWUgKmpidiwgRGF0dW0gbnVt KQoreworCWpidi0+dHlwZSA9IGpidk51bWVyaWM7CisJamJ2LT52YWwubnVtZXJpYyA9IERhdHVt R2V0TnVtZXJpYyhudW0pOworfQorCiAvKgogICogR2V0IHRoZSB2YWx1ZSBvZiB2YXJpYWJsZSBw YXNzZWQgdG8ganNvbnBhdGggZXhlY3V0b3IKICAqLwpAQCAtMzU5NiwzICszNzUxLDE3MCBAQCBj b21wYXJlRGF0ZXRpbWUoRGF0dW0gdmFsMSwgT2lkIHR5cGlkMSwgRGF0dW0gdmFsMiwgT2lkIHR5 cGlkMiwKIAogCXJldHVybiBEYXR1bUdldEludDMyKERpcmVjdEZ1bmN0aW9uQ2FsbDIoY21wZnVu YywgdmFsMSwgdmFsMikpOwogfQorCisvKgorICogRXhlY3V0b3ItY2FsbGFibGUgSlNPTl9FWElT VFMgaW1wbGVtZW50YXRpb24KKyAqCisgKiBSZXR1cm5zIE5VTEwgaW5zdGVhZCBvZiB0aHJvd2lu ZyBlcnJvcnMgaWYgJ2Vycm9yJyBpcyBub3QgTlVMTCwgc2V0dGluZworICogKmVycm9yIHRvIHRy dWUuCisgKi8KK2Jvb2wKK0pzb25QYXRoRXhpc3RzKERhdHVtIGpiLCBKc29uUGF0aCAqanAsIGJv b2wgKmVycm9yLCBMaXN0ICp2YXJzKQoreworCUpzb25QYXRoRXhlY1Jlc3VsdCByZXM7CisKKwly ZXMgPSBleGVjdXRlSnNvblBhdGgoanAsIHZhcnMsCisJCQkJCQkgIEdldEpzb25QYXRoVmFyLCBD b3VudEpzb25QYXRoVmFycywKKwkJCQkJCSAgRGF0dW1HZXRKc29uYlAoamIpLCAhZXJyb3IsIE5V TEwsIHRydWUpOworCisJQXNzZXJ0KGVycm9yIHx8ICFqcGVySXNFcnJvcihyZXMpKTsKKworCWlm IChlcnJvciAmJiBqcGVySXNFcnJvcihyZXMpKQorCQkqZXJyb3IgPSB0cnVlOworCisJcmV0dXJu IHJlcyA9PSBqcGVyT2s7Cit9CisKKy8qCisgKiBFeGVjdXRvci1jYWxsYWJsZSBKU09OX1FVRVJZ IGltcGxlbWVudGF0aW9uCisgKgorICogUmV0dXJucyBOVUxMIGluc3RlYWQgb2YgdGhyb3dpbmcg ZXJyb3JzIGlmICdlcnJvcicgaXMgbm90IE5VTEwsIHNldHRpbmcKKyAqICplcnJvciB0byB0cnVl LiAgKmVtcHR5IGlzIHNldCB0byB0cnVlIGlmIG5vIG1hdGNoIGlzIGZvdW5kLgorICovCitEYXR1 bQorSnNvblBhdGhRdWVyeShEYXR1bSBqYiwgSnNvblBhdGggKmpwLCBKc29uV3JhcHBlciB3cmFw cGVyLCBib29sICplbXB0eSwKKwkJCSAgYm9vbCAqZXJyb3IsIExpc3QgKnZhcnMpCit7CisJSnNv bmJWYWx1ZSAqc2luZ2xldG9uOworCWJvb2wJCXdyYXA7CisJSnNvblZhbHVlTGlzdCBmb3VuZCA9 IHswfTsKKwlKc29uUGF0aEV4ZWNSZXN1bHQgcmVzOworCWludAkJCWNvdW50OworCisJcmVzID0g ZXhlY3V0ZUpzb25QYXRoKGpwLCB2YXJzLAorCQkJCQkJICBHZXRKc29uUGF0aFZhciwgQ291bnRK c29uUGF0aFZhcnMsCisJCQkJCQkgIERhdHVtR2V0SnNvbmJQKGpiKSwgIWVycm9yLCAmZm91bmQs IHRydWUpOworCUFzc2VydChlcnJvciB8fCAhanBlcklzRXJyb3IocmVzKSk7CisJaWYgKGVycm9y ICYmIGpwZXJJc0Vycm9yKHJlcykpCisJeworCQkqZXJyb3IgPSB0cnVlOworCQkqZW1wdHkgPSBm YWxzZTsKKwkJcmV0dXJuIChEYXR1bSkgMDsKKwl9CisKKwkvKiBXUkFQIG9yIG5vdD8gKi8KKwlj b3VudCA9IEpzb25WYWx1ZUxpc3RMZW5ndGgoJmZvdW5kKTsKKwlzaW5nbGV0b24gPSBjb3VudCA+ IDAgPyBKc29uVmFsdWVMaXN0SGVhZCgmZm91bmQpIDogTlVMTDsKKwlpZiAoc2luZ2xldG9uID09 IE5VTEwpCisJCXdyYXAgPSBmYWxzZTsKKwllbHNlIGlmICh3cmFwcGVyID09IEpTV19OT05FIHx8 IHdyYXBwZXIgPT0gSlNXX1VOU1BFQykKKwkJd3JhcCA9IGZhbHNlOworCWVsc2UgaWYgKHdyYXBw ZXIgPT0gSlNXX1VOQ09ORElUSU9OQUwpCisJCXdyYXAgPSB0cnVlOworCWVsc2UgaWYgKHdyYXBw ZXIgPT0gSlNXX0NPTkRJVElPTkFMKQorCQl3cmFwID0gY291bnQgPiAxIHx8CisJCQlJc0FKc29u YlNjYWxhcihzaW5nbGV0b24pIHx8CisJCQkoc2luZ2xldG9uLT50eXBlID09IGpidkJpbmFyeSAm JgorCQkJIEpzb25Db250YWluZXJJc1NjYWxhcihzaW5nbGV0b24tPnZhbC5iaW5hcnkuZGF0YSkp OworCWVsc2UKKwl7CisJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQganNvbiB3cmFwcGVyICVk Iiwgd3JhcHBlcik7CisJCXdyYXAgPSBmYWxzZTsKKwl9CisKKwlpZiAod3JhcCkKKwkJcmV0dXJu IEpzb25iUEdldERhdHVtKEpzb25iVmFsdWVUb0pzb25iKHdyYXBJdGVtc0luQXJyYXkoJmZvdW5k KSkpOworCisJLyogTm8gd3JhcHBpbmcgbWVhbnMgb25seSBvbmUgaXRlbSBpcyBleHBlY3RlZC4g Ki8KKwlpZiAoY291bnQgPiAxKQorCXsKKwkJaWYgKGVycm9yKQorCQl7CisJCQkqZXJyb3IgPSB0 cnVlOworCQkJcmV0dXJuIChEYXR1bSkgMDsKKwkJfQorCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9NT1JFX1RIQU5fT05FX1NRTF9KU09OX0lURU0pLAorCQkJCSBlcnJt c2coIkpTT04gcGF0aCBleHByZXNzaW9uIGluIEpTT05fUVVFUlkgc2hvdWxkIHJldHVybiBzaW5n bGV0b24gaXRlbSB3aXRob3V0IHdyYXBwZXIiKSwKKwkJCQkgZXJyaGludCgiVXNlIFdJVEggV1JB UFBFUiBjbGF1c2UgdG8gd3JhcCBTUUwvSlNPTiBpdGVtIHNlcXVlbmNlIGludG8gYXJyYXkuIikp KTsKKwl9CisKKwlpZiAoc2luZ2xldG9uKQorCQlyZXR1cm4gSnNvbmJQR2V0RGF0dW0oSnNvbmJW YWx1ZVRvSnNvbmIoc2luZ2xldG9uKSk7CisKKwkqZW1wdHkgPSB0cnVlOworCXJldHVybiBQb2lu dGVyR2V0RGF0dW0oTlVMTCk7Cit9CisKKy8qCisgKiBFeGVjdXRvci1jYWxsYWJsZSBKU09OX1ZB TFVFIGltcGxlbWVudGF0aW9uCisgKgorICogUmV0dXJucyBOVUxMIGluc3RlYWQgb2YgdGhyb3dp bmcgZXJyb3JzIGlmICdlcnJvcicgaXMgbm90IE5VTEwsIHNldHRpbmcKKyAqICplcnJvciB0byB0 cnVlLiAgKmVtcHR5IGlzIHNldCB0byB0cnVlIGlmIG5vIG1hdGNoIGlzIGZvdW5kLgorICovCitK c29uYlZhbHVlICoKK0pzb25QYXRoVmFsdWUoRGF0dW0gamIsIEpzb25QYXRoICpqcCwgYm9vbCAq ZW1wdHksIGJvb2wgKmVycm9yLCBMaXN0ICp2YXJzKQoreworCUpzb25iVmFsdWUgKnJlczsKKwlK c29uVmFsdWVMaXN0IGZvdW5kID0gezB9OworCUpzb25QYXRoRXhlY1Jlc3VsdCBqcGVyIFBHX1VT RURfRk9SX0FTU0VSVFNfT05MWTsKKwlpbnQJCQljb3VudDsKKworCWpwZXIgPSBleGVjdXRlSnNv blBhdGgoanAsIHZhcnMsIEdldEpzb25QYXRoVmFyLCBDb3VudEpzb25QYXRoVmFycywKKwkJCQkJ CSAgIERhdHVtR2V0SnNvbmJQKGpiKSwKKwkJCQkJCSAgICFlcnJvciwgJmZvdW5kLCB0cnVlKTsK KworCUFzc2VydChlcnJvciB8fCAhanBlcklzRXJyb3IoanBlcikpOworCisJaWYgKGVycm9yICYm IGpwZXJJc0Vycm9yKGpwZXIpKQorCXsKKwkJKmVycm9yID0gdHJ1ZTsKKwkJKmVtcHR5ID0gZmFs c2U7CisJCXJldHVybiBOVUxMOworCX0KKworCWNvdW50ID0gSnNvblZhbHVlTGlzdExlbmd0aCgm Zm91bmQpOworCisJKmVtcHR5ID0gKGNvdW50ID09IDApOworCisJaWYgKCplbXB0eSkKKwkJcmV0 dXJuIE5VTEw7CisKKwkvKiBKU09OX1ZBTFVFIGV4cGVjdHMgdG8gZ2V0IG9ubHkgc2luZ2xldG9u cy4gKi8KKwlpZiAoY291bnQgPiAxKQorCXsKKwkJaWYgKGVycm9yKQorCQl7CisJCQkqZXJyb3Ig PSB0cnVlOworCQkJcmV0dXJuIE5VTEw7CisJCX0KKworCQllcmVwb3J0KEVSUk9SLAorCQkJCShl cnJjb2RlKEVSUkNPREVfTU9SRV9USEFOX09ORV9TUUxfSlNPTl9JVEVNKSwKKwkJCQkgZXJybXNn KCJKU09OIHBhdGggZXhwcmVzc2lvbiBpbiBKU09OX1ZBTFVFIHNob3VsZCByZXR1cm4gc2luZ2xl dG9uIHNjYWxhciBpdGVtIikpKTsKKwl9CisKKwlyZXMgPSBKc29uVmFsdWVMaXN0SGVhZCgmZm91 bmQpOworCWlmIChyZXMtPnR5cGUgPT0gamJ2QmluYXJ5ICYmIEpzb25Db250YWluZXJJc1NjYWxh cihyZXMtPnZhbC5iaW5hcnkuZGF0YSkpCisJCUpzb25iRXh0cmFjdFNjYWxhcihyZXMtPnZhbC5i aW5hcnkuZGF0YSwgcmVzKTsKKworCS8qIEpTT05fVkFMVUUgZXhwZWN0cyB0byBnZXQgb25seSBz Y2FsYXJzLiAqLworCWlmICghSXNBSnNvbmJTY2FsYXIocmVzKSkKKwl7CisJCWlmIChlcnJvcikK KwkJeworCQkJKmVycm9yID0gdHJ1ZTsKKwkJCXJldHVybiBOVUxMOworCQl9CisKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NRTF9KU09OX1NDQUxBUl9SRVFVSVJFRCks CisJCQkJIGVycm1zZygiSlNPTiBwYXRoIGV4cHJlc3Npb24gaW4gSlNPTl9WQUxVRSBzaG91bGQg cmV0dXJuIHNpbmdsZXRvbiBzY2FsYXIgaXRlbSIpKSk7CisJfQorCisJaWYgKHJlcy0+dHlwZSA9 PSBqYnZOdWxsKQorCQlyZXR1cm4gTlVMTDsKKworCXJldHVybiByZXM7Cit9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMKaW5kZXggMmExZWU2OTk3MC4uYTM4YmU2ZmJkOCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9ydWxldXRpbHMuYwpAQCAtNDc0LDYgKzQ3NCw4IEBAIHN0YXRpYyB2b2lkIGdldF9jb25z dF9leHByKENvbnN0ICpjb25zdHZhbCwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQkJCQkJ ICAgaW50IHNob3d0eXBlKTsKIHN0YXRpYyB2b2lkIGdldF9jb25zdF9jb2xsYXRpb24oQ29uc3Qg KmNvbnN0dmFsLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpOwogc3RhdGljIHZvaWQgZ2V0X2pz b25fZm9ybWF0KEpzb25Gb3JtYXQgKmZvcm1hdCwgU3RyaW5nSW5mbyBidWYpOworc3RhdGljIHZv aWQgZ2V0X2pzb25fcmV0dXJuaW5nKEpzb25SZXR1cm5pbmcgKnJldHVybmluZywgU3RyaW5nSW5m byBidWYsCisJCQkJCQkJICAgYm9vbCBqc29uX2Zvcm1hdF9ieV9kZWZhdWx0KTsKIHN0YXRpYyB2 b2lkIGdldF9qc29uX2NvbnN0cnVjdG9yKEpzb25Db25zdHJ1Y3RvckV4cHIgKmN0b3IsCiAJCQkJ CQkJCSBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsIGJvb2wgc2hvd2ltcGxpY2l0KTsKIHN0YXRp YyB2b2lkIGdldF9qc29uX2NvbnN0cnVjdG9yX29wdGlvbnMoSnNvbkNvbnN0cnVjdG9yRXhwciAq Y3RvciwKQEAgLTUxNiw2ICs1MTgsOCBAQCBzdGF0aWMgY2hhciAqZ2VuZXJhdGVfcXVhbGlmaWVk X3R5cGVfbmFtZShPaWQgdHlwaWQpOwogc3RhdGljIHRleHQgKnN0cmluZ190b190ZXh0KGNoYXIg KnN0cik7CiBzdGF0aWMgY2hhciAqZmxhdHRlbl9yZWxvcHRpb25zKE9pZCByZWxpZCk7CiBzdGF0 aWMgdm9pZCBnZXRfcmVsb3B0aW9ucyhTdHJpbmdJbmZvIGJ1ZiwgRGF0dW0gcmVsb3B0aW9ucyk7 CitzdGF0aWMgdm9pZCBnZXRfanNvbl9wYXRoX3NwZWMoTm9kZSAqcGF0aF9zcGVjLCBkZXBhcnNl X2NvbnRleHQgKmNvbnRleHQsCisJCQkJCQkJICAgYm9vbCBzaG93aW1wbGljaXQpOwogCiAjZGVm aW5lIG9ubHlfbWFya2VyKHJ0ZSkgICgocnRlKS0+aW5oID8gIiIgOiAiT05MWSAiKQogCkBAIC04 Mjk5LDYgKzgzMDMsNyBAQCBpc1NpbXBsZU5vZGUoTm9kZSAqbm9kZSwgTm9kZSAqcGFyZW50Tm9k ZSwgaW50IHByZXR0eUZsYWdzKQogCQljYXNlIFRfV2luZG93RnVuYzoKIAkJY2FzZSBUX0Z1bmNF eHByOgogCQljYXNlIFRfSnNvbkNvbnN0cnVjdG9yRXhwcjoKKwkJY2FzZSBUX0pzb25FeHByOgog CQkJLyogZnVuY3Rpb24tbGlrZTogbmFtZSguLikgb3IgbmFtZVsuLl0gKi8KIAkJCXJldHVybiB0 cnVlOwogCkBAIC04NDcwLDYgKzg0NzUsNyBAQCBpc1NpbXBsZU5vZGUoTm9kZSAqbm9kZSwgTm9k ZSAqcGFyZW50Tm9kZSwgaW50IHByZXR0eUZsYWdzKQogCQkJCWNhc2UgVF9Hcm91cGluZ0Z1bmM6 CS8qIG93biBwYXJlbnRoZXNlcyAqLwogCQkJCWNhc2UgVF9XaW5kb3dGdW5jOgkvKiBvd24gcGFy ZW50aGVzZXMgKi8KIAkJCQljYXNlIFRfQ2FzZUV4cHI6CS8qIG90aGVyIHNlcGFyYXRvcnMgKi8K KwkJCQljYXNlIFRfSnNvbkV4cHI6CS8qIG93biBwYXJlbnRoZXNlcyAqLwogCQkJCQlyZXR1cm4g dHJ1ZTsKIAkJCQlkZWZhdWx0OgogCQkJCQlyZXR1cm4gZmFsc2U7CkBAIC04NTg1LDYgKzg1OTEs NjQgQEAgZ2V0X3J1bGVfZXhwcl9wYXJlbihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNv bnRleHQsCiAJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGNvbnRleHQtPmJ1ZiwgJyknKTsKIH0KIAor c3RhdGljIHZvaWQKK2dldF9qc29uX2JlaGF2aW9yKEpzb25CZWhhdmlvciAqYmVoYXZpb3IsIGRl cGFyc2VfY29udGV4dCAqY29udGV4dCwKKwkJCQkgIGNvbnN0IGNoYXIgKm9uKQoreworCS8qCisJ ICogVGhlIG9yZGVyIG9mIGFycmF5IGVsZW1lbnRzIG11c3QgY29ycmVzcG9uZCB0byB0aGUgb3Jk ZXIgb2YKKwkgKiBKc29uQmVoYXZpb3JUeXBlIG1lbWJlcnMuCisJICovCisJY29uc3QgY2hhciAq YmVoYXZpb3JfbmFtZXNbXSA9CisJeworCQkiIE5VTEwiLAorCQkiIEVSUk9SIiwKKwkJIiBFTVBU WSIsCisJCSIgVFJVRSIsCisJCSIgRkFMU0UiLAorCQkiIFVOS05PV04iLAorCQkiIEVNUFRZIEFS UkFZIiwKKwkJIiBFTVBUWSBPQkpFQ1QiLAorCQkiIERFRkFVTFQgIgorCX07CisKKwlpZiAoKGlu dCkgYmVoYXZpb3ItPmJ0eXBlIDwgMCB8fCBiZWhhdmlvci0+YnR5cGUgPj0gbGVuZ3Rob2YoYmVo YXZpb3JfbmFtZXMpKQorCQllbG9nKEVSUk9SLCAiaW52YWxpZCBqc29uIGJlaGF2aW9yIHR5cGU6 ICVkIiwgYmVoYXZpb3ItPmJ0eXBlKTsKKworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoY29udGV4 dC0+YnVmLCBiZWhhdmlvcl9uYW1lc1tiZWhhdmlvci0+YnR5cGVdKTsKKworCWlmIChiZWhhdmlv ci0+YnR5cGUgPT0gSlNPTl9CRUhBVklPUl9ERUZBVUxUKQorCQlnZXRfcnVsZV9leHByKGJlaGF2 aW9yLT5leHByLCBjb250ZXh0LCBmYWxzZSk7CisKKwlhcHBlbmRTdHJpbmdJbmZvKGNvbnRleHQt PmJ1ZiwgIiBPTiAlcyIsIG9uKTsKK30KKworLyoKKyAqIGdldF9qc29uX2V4cHJfb3B0aW9ucwor ICoKKyAqIFBhcnNlIGJhY2sgY29tbW9uIG9wdGlvbnMgZm9yIEpTT05fUVVFUlksIEpTT05fVkFM VUUsIEpTT05fRVhJU1RTLgorICovCitzdGF0aWMgdm9pZAorZ2V0X2pzb25fZXhwcl9vcHRpb25z KEpzb25FeHByICpqc2V4cHIsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKKwkJCQkJICBKc29u QmVoYXZpb3JUeXBlIGRlZmF1bHRfYmVoYXZpb3IpCit7CisJaWYgKGpzZXhwci0+b3AgPT0gSlNP Tl9RVUVSWV9PUCkKKwl7CisJCWlmIChqc2V4cHItPndyYXBwZXIgPT0gSlNXX0NPTkRJVElPTkFM KQorCQkJYXBwZW5kU3RyaW5nSW5mbyhjb250ZXh0LT5idWYsICIgV0lUSCBDT05ESVRJT05BTCBX UkFQUEVSIik7CisJCWVsc2UgaWYgKGpzZXhwci0+d3JhcHBlciA9PSBKU1dfVU5DT05ESVRJT05B TCkKKwkJCWFwcGVuZFN0cmluZ0luZm8oY29udGV4dC0+YnVmLCAiIFdJVEggVU5DT05ESVRJT05B TCBXUkFQUEVSIik7CisKKwkJaWYgKGpzZXhwci0+b21pdF9xdW90ZXMpCisJCQlhcHBlbmRTdHJp bmdJbmZvKGNvbnRleHQtPmJ1ZiwgIiBPTUlUIFFVT1RFUyIpOworCX0KKworCWlmIChqc2V4cHIt Pm9uX2VtcHR5ICYmIGpzZXhwci0+b25fZW1wdHktPmJ0eXBlICE9IGRlZmF1bHRfYmVoYXZpb3Ip CisJCWdldF9qc29uX2JlaGF2aW9yKGpzZXhwci0+b25fZW1wdHksIGNvbnRleHQsICJFTVBUWSIp OworCisJaWYgKGpzZXhwci0+b25fZXJyb3IgJiYganNleHByLT5vbl9lcnJvci0+YnR5cGUgIT0g ZGVmYXVsdF9iZWhhdmlvcikKKwkJZ2V0X2pzb25fYmVoYXZpb3IoanNleHByLT5vbl9lcnJvciwg Y29udGV4dCwgIkVSUk9SIik7Cit9CiAKIC8qIC0tLS0tLS0tLS0KICAqIGdldF9ydWxlX2V4cHIJ CQktIFBhcnNlIGJhY2sgYW4gZXhwcmVzc2lvbgpAQCAtOTc0NCw2ICs5ODA4LDcgQEAgZ2V0X3J1 bGVfZXhwcihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQl9CiAJCQli cmVhazsKIAorCiAJCWNhc2UgVF9Kc29uVmFsdWVFeHByOgogCQkJewogCQkJCUpzb25WYWx1ZUV4 cHIgKmp2ZSA9IChKc29uVmFsdWVFeHByICopIG5vZGU7CkBAIC05NzkzLDYgKzk4NTgsNjQgQEAg Z2V0X3J1bGVfZXhwcihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQl9 CiAJCQlicmVhazsKIAorCQljYXNlIFRfSnNvbkV4cHI6CisJCQl7CisJCQkJSnNvbkV4cHIgICAq amV4cHIgPSAoSnNvbkV4cHIgKikgbm9kZTsKKworCQkJCXN3aXRjaCAoamV4cHItPm9wKQorCQkJ CXsKKwkJCQkJY2FzZSBKU09OX0VYSVNUU19PUDoKKwkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoYnVmLCAiSlNPTl9FWElTVFMoIik7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBKU09OX1FV RVJZX09QOgorCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJKU09OX1FVRVJZKCIp OworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgSlNPTl9WQUxVRV9PUDoKKwkJCQkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoYnVmLCAiSlNPTl9WQUxVRSgiKTsKKwkJCQkJCWJyZWFrOworCQkJCX0K KworCQkJCWdldF9ydWxlX2V4cHIoamV4cHItPmZvcm1hdHRlZF9leHByLCBjb250ZXh0LCBzaG93 aW1wbGljaXQpOworCisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIsICIpOworCisJ CQkJZ2V0X2pzb25fcGF0aF9zcGVjKGpleHByLT5wYXRoX3NwZWMsIGNvbnRleHQsIHNob3dpbXBs aWNpdCk7CisKKwkJCQlpZiAoamV4cHItPnBhc3NpbmdfdmFsdWVzKQorCQkJCXsKKwkJCQkJTGlz dENlbGwgICAqbGMxLAorCQkJCQkJCSAgICpsYzI7CisJCQkJCWJvb2wJCW5lZWRjb21tYSA9IGZh bHNlOworCisJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiIFBBU1NJTkcgIik7CisK KwkJCQkJZm9yYm90aChsYzEsIGpleHByLT5wYXNzaW5nX25hbWVzLAorCQkJCQkJCWxjMiwgamV4 cHItPnBhc3NpbmdfdmFsdWVzKQorCQkJCQl7CisJCQkJCQlpZiAobmVlZGNvbW1hKQorCQkJCQkJ CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLCAiKTsKKwkJCQkJCW5lZWRjb21tYSA9IHRy dWU7CisKKwkJCQkJCWdldF9ydWxlX2V4cHIoKE5vZGUgKikgbGZpcnN0KGxjMiksIGNvbnRleHQs IHNob3dpbXBsaWNpdCk7CisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiBBUyAlcyIsCisJ CQkJCQkJCQkJICgoU3RyaW5nICopIGxmaXJzdF9ub2RlKFN0cmluZywgbGMxKSktPnN2YWwpOwor CQkJCQl9CisJCQkJfQorCisJCQkJaWYgKGpleHByLT5vcCAhPSBKU09OX0VYSVNUU19PUCB8fAor CQkJCQlqZXhwci0+cmV0dXJuaW5nLT50eXBpZCAhPSBCT09MT0lEKQorCQkJCQlnZXRfanNvbl9y ZXR1cm5pbmcoamV4cHItPnJldHVybmluZywgY29udGV4dC0+YnVmLAorCQkJCQkJCQkJICAgamV4 cHItPm9wID09IEpTT05fUVVFUllfT1ApOworCisJCQkJZ2V0X2pzb25fZXhwcl9vcHRpb25zKGpl eHByLCBjb250ZXh0LAorCQkJCQkJCQkJICBqZXhwci0+b3AgIT0gSlNPTl9FWElTVFNfT1AgPwor CQkJCQkJCQkJICBKU09OX0JFSEFWSU9SX05VTEwgOgorCQkJCQkJCQkJICBKU09OX0JFSEFWSU9S X0ZBTFNFKTsKKworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiKSIpOworCQkJfQor CQkJYnJlYWs7CisKIAkJY2FzZSBUX0xpc3Q6CiAJCQl7CiAJCQkJY2hhcgkgICAqc2VwOwpAQCAt OTkxNiw2ICsxMDAzOSw3IEBAIGxvb2tzX2xpa2VfZnVuY3Rpb24oTm9kZSAqbm9kZSkKIAkJY2Fz ZSBUX01pbk1heEV4cHI6CiAJCWNhc2UgVF9TUUxWYWx1ZUZ1bmN0aW9uOgogCQljYXNlIFRfWG1s RXhwcjoKKwkJY2FzZSBUX0pzb25FeHByOgogCQkJLyogdGhlc2UgYXJlIGFsbCBhY2NlcHRlZCBi eSBmdW5jX2V4cHJfY29tbW9uX3N1YmV4cHIgKi8KIAkJCXJldHVybiB0cnVlOwogCQlkZWZhdWx0 OgpAQCAtMTA3ODUsNiArMTA5MDksMTggQEAgZ2V0X2NvbnN0X2NvbGxhdGlvbihDb25zdCAqY29u c3R2YWwsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkKIAl9CiB9CiAKKy8qCisgKiBnZXRfanNv bl9wYXRoX3NwZWMJCS0gUGFyc2UgYmFjayBhIEpTT04gcGF0aCBzcGVjaWZpY2F0aW9uCisgKi8K K3N0YXRpYyB2b2lkCitnZXRfanNvbl9wYXRoX3NwZWMoTm9kZSAqcGF0aF9zcGVjLCBkZXBhcnNl X2NvbnRleHQgKmNvbnRleHQsIGJvb2wgc2hvd2ltcGxpY2l0KQoreworCWlmIChJc0EocGF0aF9z cGVjLCBDb25zdCkpCisJCWdldF9jb25zdF9leHByKChDb25zdCAqKSBwYXRoX3NwZWMsIGNvbnRl eHQsIC0xKTsKKwllbHNlCisJCWdldF9ydWxlX2V4cHIocGF0aF9zcGVjLCBjb250ZXh0LCBzaG93 aW1wbGljaXQpOworfQorCiAvKgogICogZ2V0X2pzb25fZm9ybWF0CQkJLSBQYXJzZSBiYWNrIGEg SnNvbkZvcm1hdCBub2RlCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWNFeHByLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCmluZGV4IGEyOGRkY2Rk NzcuLmUzZDg2OTFkODIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHBy LmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaApAQCAtMjQwLDYgKzI0MCw5 IEBAIHR5cGVkZWYgZW51bSBFeHByRXZhbE9wCiAJRUVPUF9YTUxFWFBSLAogCUVFT1BfSlNPTl9D T05TVFJVQ1RPUiwKIAlFRU9QX0lTX0pTT04sCisJRUVPUF9KU09ORVhQUl9QQVRILAorCUVFT1Bf SlNPTkVYUFJfQ09FUkNJT04sCisJRUVPUF9KU09ORVhQUl9DT0VSQ0lPTl9GSU5JU0gsCiAJRUVP UF9BR0dSRUYsCiAJRUVPUF9HUk9VUElOR19GVU5DLAogCUVFT1BfV0lORE9XX0ZVTkMsCkBAIC02 OTIsNiArNjk1LDIxIEBAIHR5cGVkZWYgc3RydWN0IEV4cHJFdmFsU3RlcAogCQkJSnNvbklzUHJl ZGljYXRlICpwcmVkOwkvKiBvcmlnaW5hbCBleHByZXNzaW9uIG5vZGUgKi8KIAkJfQkJCWlzX2pz b247CiAKKwkJLyogZm9yIEVFT1BfSlNPTkVYUFJfUEFUSCAqLworCQlzdHJ1Y3QKKwkJeworCQkJ c3RydWN0IEpzb25FeHByU3RhdGUgKmpzZXN0YXRlOworCQl9CQkJanNvbmV4cHI7CisKKwkJLyog Zm9yIEVFT1BfSlNPTkVYUFJfQ09FUkNJT04gKi8KKwkJc3RydWN0CisJCXsKKwkJCUpzb25Db2Vy Y2lvbiAqY29lcmNpb247CisJCQlGbWdySW5mbyAgICppbnB1dF9maW5mbzsKKwkJCU9pZAkJCXR5 cGlvcGFyYW07CisJCQl2b2lkCSAgICpqc29uX3BvcHVsYXRlX3R5cGVfY2FjaGU7CisJCQlFcnJv clNhdmVDb250ZXh0ICplc2NvbnRleHQ7CisJCX0JCQlqc29uZXhwcl9jb2VyY2lvbjsKIAl9CQkJ ZDsKIH0gRXhwckV2YWxTdGVwOwogCkBAIC04MDksNiArODI3LDExIEBAIGV4dGVybiB2b2lkIEV4 ZWNFdmFsWG1sRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKTsKIGV4dGVy biB2b2lkIEV4ZWNFdmFsSnNvbkNvbnN0cnVjdG9yKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFs U3RlcCAqb3AsCiAJCQkJCQkJCQlFeHByQ29udGV4dCAqZWNvbnRleHQpOwogZXh0ZXJuIHZvaWQg RXhlY0V2YWxKc29uSXNQcmVkaWNhdGUoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpv cCk7CitleHRlcm4gaW50CUV4ZWNFdmFsSnNvbkV4cHJQYXRoKEV4cHJTdGF0ZSAqc3RhdGUsIEV4 cHJFdmFsU3RlcCAqb3AsCisJCQkJCQkJCSBFeHByQ29udGV4dCAqZWNvbnRleHQpOworZXh0ZXJu IHZvaWQgRXhlY0V2YWxKc29uQ29lcmNpb24oRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVw ICpvcCwKKwkJCQkJCQkJIEV4cHJDb250ZXh0ICplY29udGV4dCk7CitleHRlcm4gdm9pZCBFeGVj RXZhbEpzb25Db2VyY2lvbkZpbmlzaChFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9w KTsKIGV4dGVybiB2b2lkIEV4ZWNFdmFsR3JvdXBpbmdGdW5jKEV4cHJTdGF0ZSAqc3RhdGUsIEV4 cHJFdmFsU3RlcCAqb3ApOwogZXh0ZXJuIHZvaWQgRXhlY0V2YWxTdWJQbGFuKEV4cHJTdGF0ZSAq c3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsCiAJCQkJCQkJRXhwckNvbnRleHQgKmVjb250ZXh0KTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmgKaW5kZXggNDQ0YTVmMGZkNS4uNDQzNzc2N2ViMiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv ZXhlY25vZGVzLmgKQEAgLTEwMDgsNiArMTAwOCw4MyBAQCB0eXBlZGVmIHN0cnVjdCBEb21haW5D b25zdHJhaW50U3RhdGUKIAlFeHByU3RhdGUgICpjaGVja19leHByc3RhdGU7CS8qIGNoZWNrX2V4 cHIncyBldmFsIHN0YXRlLCBvciBOVUxMICovCiB9IERvbWFpbkNvbnN0cmFpbnRTdGF0ZTsKIAor LyoKKyAqIFN0YXRlIGZvciBKc29uRXhwciBldmFsdWF0aW9uLCB0b28gYmlnIHRvIGlubGluZS4K KyAqCisgKiBUaGlzIGNvbnRhaW5zIHRoZSBpbmZvcm1hdGlvbiBnb2luZyBpbnRvIGFuZCBjb21p bmcgb3V0IG9mIHRoZQorICogRUVPUF9KU09ORVhQUl9QQVRIIGV2YWwgc3RlcC4KKyAqLwordHlw ZWRlZiBzdHJ1Y3QgSnNvbkV4cHJTdGF0ZQoreworCS8qIG9yaWdpbmFsIGV4cHJlc3Npb24gbm9k ZSAqLworCUpzb25FeHByICAgKmpzZXhwcjsKKworCS8qIHZhbHVlL2lzbnVsbCBmb3IgZm9ybWF0 dGVkX2V4cHIgKi8KKwlOdWxsYWJsZURhdHVtIGZvcm1hdHRlZF9leHByOworCisJLyogdmFsdWUv aXNudWxsIGZvciBwYXRoc3BlYyAqLworCU51bGxhYmxlRGF0dW0gcGF0aHNwZWM7CisKKwkvKiBK c29uUGF0aFZhcmlhYmxlIGVudHJpZXMgZm9yIHBhc3NpbmdfdmFsdWVzICovCisJTGlzdAkgICAq YXJnczsKKworCS8qCisJICogQWRkcmVzc2VzIG9mIHN0ZXBzIHRoYXQgaW1wbGVtZW50IHRoZSBu b24tRVJST1IgdmFyaWFudCBvZiBPTiBFTVBUWQorCSAqIGFuZCBPTiBFUlJPUiBiZWhhdmlvcnMs IHJlc3BlY3RpdmVseS4KKwkgKi8KKwlpbnQJCQlqdW1wX2VtcHR5OworCWludAkJCWp1bXBfZXJy b3I7CisKKwkvKgorCSAqIEFkZHJlc3NlcyBvZiBzdGVwcyB0byBjb2VyY2UgdGhlIHJlc3VsdCB2 YWx1ZSBvZiBqc29ucGF0aCBldmFsdWF0aW9uIHRvCisJICogdGhlIFJFVFVSTklORyB0eXBlLgor CSAqCisJICoganVtcF9ldmFsX3Jlc3VsdF9jb2VyY2lvbiBwb2ludHMgdG8gdGhlIHN0ZXAgdG8g ZXZhbHVhdGUgdGhlIGNvZXJjaW9uCisJICogZ2l2ZW4gaW4gSnNvbkV4cHIucmVzdWx0X2NvZXJj aW9uLiAgLTEgaWYgbm8gY29lcmNpb24gaXMgbmVjZXNzYXJ5LgorCSAqCisJICogT25seSB2YWxp ZCBmb3IgSlNPTl9WQUxVRSwgZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBzIGlzIGFuIGFycmF5IG9m CisJICogbnVtX2l0ZW1fY29lcmNpb25zIGVsZW1lbnRzIGVhY2ggY29udGFpbmluZyBhIHN0ZXAg YWRkcmVzcyB0byBjb2VyY2UKKwkgKiBhIHZhbHVlIG9mIGdpdmVuIEpzb25JdGVtVHlwZSByZXR1 cm5lZCBieSBKc29uUGF0aFZhbHVlKCkgdG8gdGhlCisJICogUkVUVVJOSU5HIHR5cGUsIG9yIC0x IGlmIG5vIGNvZXJjaW9uIGlzIG5lY2Vzc2FyeS4KKwkgKiBpdGVtX2NvZXJjaW9uX2lzX2Nhc3Qg aXMgYW4gYXJyYXkgb2YgYm9vbGVhbiBmbGFncyBvZiB0aGUgc2FtZSBsZW5ndGgKKwkgKiB0aGF0 IGluZGljYXRlcyB3aGV0aGVyIGVhY2ggdmFsaWQgc3RlcCBhZGRyZXNzIGluIHRoZQorCSAqIGV2 YWxfaXRlbV9jb2VyY2lvbl9qdW1wcyBhcnJheSBjb3JyZXNwb25kcyB0byBhIGNhc3QgZXhwcmVz c2lvbiBvciBhCisJICogSnNvbkNvZXJjaW9uIG5vZGUuCisJICovCisJaW50CQkJanVtcF9ldmFs X3Jlc3VsdF9jb2VyY2lvbjsKKwlpbnQJCQludW1faXRlbV9jb2VyY2lvbnM7CisJaW50CQkgICAq ZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBzOworCWJvb2wJICAgKml0ZW1fY29lcmNpb25faXNfY2Fz dDsKKworCS8qCisJICogQWRkcmVzcyB0byBqdW1wIHRvIHdoZW4gc2tpcHBpbmcgYWxsIHRoZSBz dGVwcyBhZnRlciBwZXJmb3JtaW5nCisJICogRXhlY0V2YWxKc29uRXhwclBhdGgoKSBzbyBhcyB0 byByZXR1cm4gd2hhdGV2ZXIgdGhlIEpzb25QYXRoKiBmdW5jdGlvbgorCSAqIHJldHVybmVkIGFz IGlzLCB0aGF0IGlzLCBpbiB0aGUgY2FzZXMgd2hlcmUgdGhlcmUncyBubyBlcnJvciBhbmQgbm8K KwkgKiBjb2VyY2lvbiBpcyBuZWNlc3NhcnkuCisJICovCisJaW50CQkJanVtcF9lbmQ7CisKKwkv KgorCSAqIEZvciBlcnJvci1zYWZlIGV2YWx1YXRpb24gb2YgY29lcmNpb25zLiAgV2hlbiB0aGUg T04gRVJST1IgYmVoYXZpb3IKKwkgKiBpcyBub3QgRVJST1IsIGEgcG9pbnRlciB0byB0aGlzIGlz IHBhc3NlZCB0byBFeGVjSW5pdEV4cHJSZWMoKSB3aGVuCisJICogaW5pdGlhbGl6aW5nIHRoZSBj b2VyY2lvbiBleHByZXNzaW9ucy4KKwkgKi8KKwlFcnJvclNhdmVDb250ZXh0IGVzY29udGV4dDsK KworCS8qCisJICogT3V0cHV0IHZhcmlhYmxlcyB0aGF0IGRyaXZlIHRoZSBFRU9QX0pVTVBfSUZf Tk9UX1RSVUUgc3RlcHMgdGhhdCBhcmUKKwkgKiBhZGRlZCBmb3IgT04gRVJST1IgYW5kIE9OIEVN UFRZIGV4cHJlc3Npb25zLCBpZiBhbnkuCisJICoKKwkgKiBSZXNldCBmb3IgZWFjaCBldmFsdWF0 aW9uIG9mIEVFT1BfSlNPTkVYUFJfUEFUSC4KKwkgKi8KKworCS8qIFNldCB0byB0cnVlIGlmIGpz b25wYXRoIGV2YWx1YXRpb24gY2F1c2UgYW4gZXJyb3IuICAqLworCU51bGxhYmxlRGF0dW0gZXJy b3I7CisKKwkvKiBTZXQgdG8gdHJ1ZSBpZiB0aGUganNvbnBhdGggZXZhbHVhdGlvbiByZXR1cm5l ZCAwIGl0ZW1zLiAqLworCU51bGxhYmxlRGF0dW0gZW1wdHk7Cit9IEpzb25FeHByU3RhdGU7CisK IAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICoJCQkJIEV4ZWN1dG9yIFN0YXRlIFRyZWVzCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaCBiL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5j cy5oCmluZGV4IDJkYzc5NjQ4ZDIuLjkxZDk1ZmM1MmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L25vZGVzL21ha2VmdW5jcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCkBA IC0xMTIsNiArMTEyLDggQEAgZXh0ZXJuIEpzb25Gb3JtYXQgKm1ha2VKc29uRm9ybWF0KEpzb25G b3JtYXRUeXBlIHR5cGUsIEpzb25FbmNvZGluZyBlbmNvZGluZywKIAkJCQkJCQkJICBpbnQgbG9j YXRpb24pOwogZXh0ZXJuIEpzb25WYWx1ZUV4cHIgKm1ha2VKc29uVmFsdWVFeHByKEV4cHIgKnJh d19leHByLCBFeHByICpmb3JtYXR0ZWRfZXhwciwKIAkJCQkJCQkJCQlKc29uRm9ybWF0ICpmb3Jt YXQpOworZXh0ZXJuIEpzb25CZWhhdmlvciAqbWFrZUpzb25CZWhhdmlvcihKc29uQmVoYXZpb3JU eXBlIHR5cGUsIE5vZGUgKmV4cHIsCisJCQkJCQkJCQkgIEpzb25Db2VyY2lvbiAqY29lcmNpb24s IGludCBsb2NhdGlvbik7CiBleHRlcm4gTm9kZSAqbWFrZUpzb25LZXlWYWx1ZShOb2RlICprZXks IE5vZGUgKnZhbHVlKTsKIGV4dGVybiBOb2RlICptYWtlSnNvbklzUHJlZGljYXRlKE5vZGUgKmV4 cHIsIEpzb25Gb3JtYXQgKmZvcm1hdCwKIAkJCQkJCQkJIEpzb25WYWx1ZVR5cGUgaXRlbV90eXBl LCBib29sIHVuaXF1ZV9rZXlzLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDI0ZjVjMDZiYjYu LjY1ZDQwMjE4NTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAor KysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTE3MTEsNiArMTcxMSw0OCBA QCB0eXBlZGVmIHN0cnVjdCBKc29uT3V0cHV0CiAJSnNvblJldHVybmluZyAqcmV0dXJuaW5nOwkv KiBSRVRVUk5JTkcgRk9STUFUIGNsYXVzZSBhbmQgdHlwZSBPaWRzICovCiB9IEpzb25PdXRwdXQ7 CiAKKy8qCisgKiBKc29uQXJndW1lbnQgLQorICoJCXJlcHJlc2VudGF0aW9uIG9mIGFyZ3VtZW50 IGZyb20gSlNPTiBQQVNTSU5HIGNsYXVzZQorICovCit0eXBlZGVmIHN0cnVjdCBKc29uQXJndW1l bnQKK3sKKwlOb2RlVGFnCQl0eXBlOworCUpzb25WYWx1ZUV4cHIgKnZhbDsJCQkvKiBhcmd1bWVu dCB2YWx1ZSBleHByZXNzaW9uICovCisJY2hhcgkgICAqbmFtZTsJCQkvKiBhcmd1bWVudCBuYW1l ICovCit9IEpzb25Bcmd1bWVudDsKKworLyoKKyAqIEpzb25RdW90ZXMgLQorICoJCXJlcHJlc2Vu dGF0aW9uIG9mIFtLRUVQfE9NSVRdIFFVT1RFUyBjbGF1c2UgZm9yIEpTT05fUVVFUlkoKQorICov Cit0eXBlZGVmIGVudW0gSnNvblF1b3RlcworeworCUpTX1FVT1RFU19VTlNQRUMsCQkJLyogdW5z cGVjaWZpZWQgKi8KKwlKU19RVU9URVNfS0VFUCwJCQkJLyogS0VFUCBRVU9URVMgKi8KKwlKU19R VU9URVNfT01JVCwJCQkJLyogT01JVCBRVU9URVMgKi8KK30gSnNvblF1b3RlczsKKworLyoKKyAq IEpzb25GdW5jRXhwciAtCisgKgkJdW50cmFuc2Zvcm1lZCByZXByZXNlbnRhdGlvbiBvZiBmdW5j dGlvbiBleHByZXNzaW9ucyBmb3IKKyAqCQlTUUwvSlNPTiBxdWVyeSBmdW5jdGlvbnMKKyAqLwor dHlwZWRlZiBzdHJ1Y3QgSnNvbkZ1bmNFeHByCit7CisJTm9kZVRhZwkJdHlwZTsKKwlKc29uRXhw ck9wCW9wOwkJCQkvKiBleHByZXNzaW9uIHR5cGUgKi8KKwlKc29uVmFsdWVFeHByICpjb250ZXh0 X2l0ZW07CS8qIGNvbnRleHQgaXRlbSBleHByZXNzaW9uICovCisJTm9kZQkgICAqcGF0aHNwZWM7 CQkvKiBKU09OIHBhdGggc3BlY2lmaWNhdGlvbiBleHByZXNzaW9uICovCisJTGlzdAkgICAqcGFz c2luZzsJCS8qIGxpc3Qgb2YgUEFTU0lORyBjbGF1c2UgYXJndW1lbnRzLCBpZiBhbnkgKi8KKwlK c29uT3V0cHV0ICpvdXRwdXQ7CQkJLyogb3V0cHV0IGNsYXVzZSwgaWYgc3BlY2lmaWVkICovCisJ SnNvbkJlaGF2aW9yICpvbl9lbXB0eTsJCS8qIE9OIEVNUFRZIGJlaGF2aW9yICovCisJSnNvbkJl aGF2aW9yICpvbl9lcnJvcjsJCS8qIE9OIEVSUk9SIGJlaGF2aW9yICovCisJSnNvbldyYXBwZXIg d3JhcHBlcjsJCS8qIGFycmF5IHdyYXBwZXIgYmVoYXZpb3IgKEpTT05fUVVFUlkgb25seSkgKi8K KwlKc29uUXVvdGVzCXF1b3RlczsJCQkvKiBvbWl0IG9yIGtlZXAgcXVvdGVzPyAoSlNPTl9RVUVS WSBvbmx5KSAqLworCWludAkJCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlm IHVua25vd24gKi8KK30gSnNvbkZ1bmNFeHByOworCiAvKgogICogSnNvbktleVZhbHVlIC0KICAq CQl1bnRyYW5zZm9ybWVkIHJlcHJlc2VudGF0aW9uIG9mIEpTT04gb2JqZWN0IGtleS12YWx1ZSBw YWlyIGZvcgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggYi9zcmMv aW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRleCA0YTE1NDYwNmQyLi5jMTQxMzc2M2Y4IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAorKysgYi9zcmMvaW5jbHVk ZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAtMTY3MCw2ICsxNjcwLDE4OSBAQCB0eXBlZGVmIHN0cnVj dCBKc29uSXNQcmVkaWNhdGUKIAlpbnQJCQlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBv ciAtMSBpZiB1bmtub3duICovCiB9IEpzb25Jc1ByZWRpY2F0ZTsKIAorLyogTm9kZXMgdXNlZCBp biBTUUwvSlNPTiBxdWVyeSBmdW5jdGlvbnMgKi8KKworLyoKKyAqIEpzb25XcmFwcGVyIC0KKyAq CQlyZXByZXNlbnRhdGlvbiBvZiBXUkFQUEVSIGNsYXVzZSBmb3IgSlNPTl9RVUVSWSgpCisgKi8K K3R5cGVkZWYgZW51bSBKc29uV3JhcHBlcgoreworCUpTV19VTlNQRUMsCisJSlNXX05PTkUsCisJ SlNXX0NPTkRJVElPTkFMLAorCUpTV19VTkNPTkRJVElPTkFMLAorfSBKc29uV3JhcHBlcjsKKwor LyoKKyAqIEpzb25CZWhhdmlvclR5cGUgLQorICoJCWVudW1lcmF0aW9uIG9mIGJlaGF2aW9yIHR5 cGVzIHVzZWQgaW4gU1FML0pTT04gT04gRVJST1IvRU1QVFkgY2xhdXNlcworICoKKyAqIAkJSWYg ZW51bSBtZW1iZXJzIGFyZSByZW9yZGVyZWQsIGdldF9qc29uX2JlaGF2aW9yKCkgZnJvbSBydWxl dXRpbHMuYworICogCQltdXN0IGJlIHVwZGF0ZWQgYWNjb3JkaW5nbHkuCisgKi8KK3R5cGVkZWYg ZW51bSBKc29uQmVoYXZpb3JUeXBlCit7CisJSlNPTl9CRUhBVklPUl9OVUxMID0gMCwKKwlKU09O X0JFSEFWSU9SX0VSUk9SLAorCUpTT05fQkVIQVZJT1JfRU1QVFksCisJSlNPTl9CRUhBVklPUl9U UlVFLAorCUpTT05fQkVIQVZJT1JfRkFMU0UsCisJSlNPTl9CRUhBVklPUl9VTktOT1dOLAorCUpT T05fQkVIQVZJT1JfRU1QVFlfQVJSQVksCisJSlNPTl9CRUhBVklPUl9FTVBUWV9PQkpFQ1QsCisJ SlNPTl9CRUhBVklPUl9ERUZBVUxULAorfSBKc29uQmVoYXZpb3JUeXBlOworCisvKgorICogSnNv bkNvZXJjaW9uCisgKgkJSW5mb3JtYXRpb24gYWJvdXQgY29lcmNpbmcgYSBTUUwvSlNPTiB2YWx1 ZSB0byB0aGUgc3BlY2lmaWVkCisgKgkJdHlwZSBhdCBydW50aW1lCisgKgorICogQSBub2RlIG9m IHRoaXMgdHlwZSBpcyBjcmVhdGVkIGlmIHRoZSBwYXJzZXIgY2Fubm90IGZpbmQgYSBjYXN0IGV4 cHJlc3Npb24KKyAqIHVzaW5nIGNvZXJjZV90eXBlKCkgb3IgaWYgT01JVCBRVU9URVMgaXMgc3Bl Y2lmaWVkIGZvciBKU09OX1FVRVJZOyBzZWUKKyAqIGNvZXJjZUpzb25GdW5jRXhwck91dHB1dCgp LgorICoKKyAqIElmIGl0J3MgdGhlIGxhdHRlciwgJ2Nhc3RfZXhwcicgbWF5IGNvbnRhaW4gdGhl IGNhc3QgZXhwcmVzc2lvbiwgZXZhbHVhdGVkCisgKiBzZXBhcmF0ZWx5IGZyb20gdGhpcyBub2Rl LCB0aGF0IHdpbGwgZG8gdGhlIGFjdHVhbCBjb2VyY2lvbiBvZiB0aGUKKyAqIHF1b3RlLXN0cmlw cGVkIHN0cmluZy4gIElmIG5vIGNhc3QgZXhwcmVzc2lvbiBpcyBnaXZlbiwgdGhlIHN0cmluZyB3 aWxsIGJlCisgKiBjb2VyY2VkIGJ5IGNhbGxpbmcgdGhlIHRhcmdldCB0eXBlJ3MgaW5wdXQgZnVu Y3Rpb24uICBTZWUKKyAqIEV4ZWNFdmFsSnNvbkNvZXJjaW9uKCkuCisgKi8KK3R5cGVkZWYgc3Ry dWN0IEpzb25Db2VyY2lvbgoreworCU5vZGVUYWcJCXR5cGU7CisKKwlPaWQJCQl0YXJnZXR0eXBl OworCWludDMyCQl0YXJnZXR0eXBtb2Q7CisJYm9vbAkJb21pdF9xdW90ZXM7CS8qIE9NSVQgUVVP VEVTIHNwZWNpZmllZCBmb3IgSlNPTl9RVUVSWT8gKi8KKwlOb2RlCSAgICpjYXN0X2V4cHI7CQkv KiBjb2VyY2lvbiBjYXN0IGV4cHJlc3Npb24gb3IgTlVMTCAqLworCU9pZAkJCWNvbGxhdGlvbjsK K30gSnNvbkNvZXJjaW9uOworCisvKgorICogSnNvbkl0ZW1UeXBlCisgKgkJUG9zc2libGUgdHlw ZXMgZm9yIHNjYWxhciB2YWx1ZXMgcmV0dXJuZWQgYnkgSlNPTl9WQUxVRSgpCisgKgorICogVGhl IGNvbW1lbnQgbmV4dCB0byBlYWNoIGl0ZW0gdHlwZSBtZW50aW9ucyB0aGUgY29ycmVzcG9uZGlu ZworICogSnNvbmJWYWx1ZS5qYnZUeXBlLgorICovCit0eXBlZGVmIGVudW0gSnNvbkl0ZW1UeXBl Cit7CisJSnNvbkl0ZW1UeXBlTnVsbCwJCQkvKiBqYnZOdWxsICovCisJSnNvbkl0ZW1UeXBlU3Ry aW5nLAkJCS8qIGpidlN0cmluZyAqLworCUpzb25JdGVtVHlwZU51bWVyaWMsCQkvKiBqYnZOdW1l cmljICovCisJSnNvbkl0ZW1UeXBlQm9vbGVhbiwJCS8qIGpidkJvb2wgKi8KKwlKc29uSXRlbVR5 cGVEYXRlLAkJCS8qIGpidkRhdGV0aW1lOiBEQVRFT0lEICovCisJSnNvbkl0ZW1UeXBlVGltZSwJ CQkvKiBqYnZEYXRldGltZTogVElNRU9JRCAqLworCUpzb25JdGVtVHlwZVRpbWV0eiwJCQkvKiBq YnZEYXRldGltZTogVElNRVRaT0lEICovCisJSnNvbkl0ZW1UeXBlVGltZXN0YW1wLAkJLyogamJ2 RGF0ZXRpbWU6IFRJTUVTVEFNUE9JRCAqLworCUpzb25JdGVtVHlwZVRpbWVzdGFtcHR6LAkvKiBq YnZEYXRldGltZTogVElNRVNUQU1QVFpPSUQgKi8KKwlKc29uSXRlbVR5cGVDb21wb3NpdGUsCQkv KiBqYnZBcnJheSwgamJ2T2JqZWN0LCBqYnZCaW5hcnkgKi8KKwlKc29uSXRlbVR5cGVJbnZhbGlk LAorfSBKc29uSXRlbVR5cGU7CisKKy8qCisgKiBKc29uSXRlbUNvZXJjaW9uCisgKgkJQ29lcmNp b24gZXhwcmVzc2lvbiBmb3IgdGhlIGdpdmVuIEpzb25JdGVtVHlwZQorICoKKyAqIElmIG5vdCBO VUxMLCAnY29lcmNpb24nIGdpdmVuIHRoZSBleHByZXNzaW9uIG5vZGUgdG8gY29udmVydCBhIHNj YWxhciB2YWx1ZQorICogZXh0cmFjdGVkIGZyb20gYSBKc29uYlZhbHVlIG9mIHRoZSBnaXZlbiB0 eXBlIHRvIHRoZSB0YXJnZXQgdHlwZSBnaXZlbiBieQorICogSnNvbkV4cHIucmV0dXJuaW5nLiAg TlVMTCBtZWFucyB0aGUgY29lcmNpb24gaXMgdW5uZWNlc3NhcnkuCisgKi8KK3R5cGVkZWYgc3Ry dWN0IEpzb25JdGVtQ29lcmNpb24KK3sKKwlOb2RlVGFnCQl0eXBlOworCisJSnNvbkl0ZW1UeXBl IGl0ZW1fdHlwZTsKKwlOb2RlCSAgICpjb2VyY2lvbjsKK30gSnNvbkl0ZW1Db2VyY2lvbjsKKwor LyoKKyAqIEpzb25CZWhhdmlvcgorICoJCUluZm9ybWF0aW9uIGFib3V0IE9OIEVSUk9SIC8gT04g RU1QVFkgYmVoYXZpb3JzIG9mIEpTT05fVkFMVUUoKSwKKyAqCQlKU09OX1FVRVJZKCksIGFuZCBK U09OX0VYSVNUUygpCisgKgorICogJ2V4cHInIGlzIHRoZSBleHByZXNzaW9uIHRvIGVtaXQgd2hl biBhIGdpdmVuIGJlaGF2aW9yIChFTVBUWSBvciBFUlJPUikKKyAqIG9jY3VycyBvbiBldmFsdWF0 aW5nIHRoZSBTUUwvSlNPTiBxdWVyeSBmdW5jdGlvbi4gICdjb2VyY2lvbicgaXMgc2V0CisgKiBp ZiAnZXhwcicgaXNuJ3QgYWxyZWFkeSBvZiB0aGUgZXhwZWN0ZWQgdGFyZ2V0IHR5cGUgZ2l2ZW4g YnkKKyAqIEpzb25FeHByLnJldHVybmluZy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgSnNvbkJlaGF2 aW9yCit7CisJTm9kZVRhZwkJdHlwZTsKKworCUpzb25CZWhhdmlvclR5cGUgYnR5cGU7CisJTm9k ZQkgICAqZXhwcjsKKwlKc29uQ29lcmNpb24gKmNvZXJjaW9uOwkJLyogdG8gY29lcmNlIGJlaGF2 aW9yIGV4cHJlc3Npb24gd2hlbiB0aGVyZSBpcworCQkJCQkJCQkgKiBubyBjYXN0IHRvIHRoZSB0 YXJnZXQgdHlwZSAqLworCWludAkJCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0x IGlmIHVua25vd24gKi8KK30gSnNvbkJlaGF2aW9yOworCisvKgorICogSnNvbkV4cHJPcCAtCisg KgkJZW51bWVyYXRpb24gb2YgSlNPTiBmdW5jdGlvbnMgdXNpbmcgSlNPTiBwYXRoCisgKi8KK3R5 cGVkZWYgZW51bSBKc29uRXhwck9wCit7CisJSlNPTl9FWElTVFNfT1AsCQkJCS8qIEpTT05fRVhJ U1RTKCkgKi8KKwlKU09OX1FVRVJZX09QLAkJCQkvKiBKU09OX1FVRVJZKCkgKi8KKwlKU09OX1ZB TFVFX09QLAkJCQkvKiBKU09OX1ZBTFVFKCkgKi8KK30gSnNvbkV4cHJPcDsKKworLyoKKyAqIEpz b25FeHByIC0KKyAqCQlUcmFuc2Zvcm1lZCByZXByZXNlbnRhdGlvbiBvZiBKU09OX1ZBTFVFKCks IEpTT05fUVVFUlkoKSwgYW5kCisgKgkJSlNPTl9FWElTVFMoKQorICovCit0eXBlZGVmIHN0cnVj dCBKc29uRXhwcgoreworCUV4cHIJCXhwcjsKKworCUpzb25FeHByT3AJb3A7CisKKwkvKiBqc29u Yi12YWx1ZWQgZXhwcmVzc2lvbiB0byBxdWVyeSAqLworCU5vZGUJICAgKmZvcm1hdHRlZF9leHBy OworCisJLyogRm9ybWF0IG9mIHRoZSBhYm92ZSBleHByZXNzaW9uIG5lZWRlZCBieSBydWxldXRp bHMuYyAqLworCUpzb25Gb3JtYXQgKmZvcm1hdDsKKworCS8qIGpzb3BhdGgtdmFsdWVkIGV4cHJl c3Npb24gY29udGFpbmluZyB0aGUgcXVlcnkgcGF0dGVybiAqLworCU5vZGUJICAgKnBhdGhfc3Bl YzsKKworCS8qIEV4cGVjdGVkIHR5cGUvZm9ybWF0IG9mIHRoZSBvdXRwdXQuICovCisJSnNvblJl dHVybmluZyAqcmV0dXJuaW5nOworCisJLyogSW5mb3JtYXRpb24gYWJvdXQgdGhlIFBBU1NJTkcg YXJndW1lbnQgZXhwcmVzc2lvbnMgKi8KKwlMaXN0CSAgICpwYXNzaW5nX25hbWVzOworCUxpc3QJ ICAgKnBhc3NpbmdfdmFsdWVzOworCisJLyogVXNlci1zcGVjaWZpZWQgb3IgZGVmYXVsdCBPTiBF TVBUWSBhbmQgT04gRVJST1IgYmVoYXZpb3JzICovCisJSnNvbkJlaGF2aW9yICpvbl9lbXB0eTsK KwlKc29uQmVoYXZpb3IgKm9uX2Vycm9yOworCisJLyoKKwkgKiBFeHByZXNzaW9uIHRvIGNvbnZl cnQgdGhlIHJlc3VsdCBvZiBqc29ucGF0aCBmdW5jdGlvbnMgdG8gdGhlIFJFVFVSTklORworCSAq IHR5cGUKKwkgKi8KKwlOb2RlCSAgICpyZXN1bHRfY29lcmNpb247CisKKwkvKgorCSAqIExpc3Qg b2YgZXhwcmVzc2lvbnMgZm9yIGNvZXJjaW5nIEpTT05fVkFMVUUoKSByZXN1bHQgdmFsdWVzLCBj b250YWluaW5nCisJICogb25lIGVsZW1lbnQgZm9yIGV2ZXJ5IEpzb25JdGVtVHlwZS4KKwkgKi8K KwlMaXN0CSAgICppdGVtX2NvZXJjaW9uczsKKworCS8qIFdSQVBQRVIgc3BlY2lmaWNhdGlvbiBm b3IgSlNPTl9RVUVSWSAqLworCUpzb25XcmFwcGVyIHdyYXBwZXI7CisKKwkvKiBLRUVQIG9yIE9N SVQgUVVPVEVTIGZvciBzaW5nbGV0b24gc2NhbGFycyByZXR1cm5lZCBieSBKU09OX1FVRVJZKCkg Ki8KKwlib29sCQlvbWl0X3F1b3RlczsKKworCS8qIE9yaWdpbmFsIEpzb25GdW5jRXhwcidzIGxv Y2F0aW9uICovCisJaW50CQkJbG9jYXRpb247Cit9IEpzb25FeHByOworCiAvKiAtLS0tLS0tLS0t LS0tLS0tCiAgKiBOdWxsVGVzdAogICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9r d2xpc3QuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCAyMzMxYWNhYzA5Li45 NGUxY2I0ZGNlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIv c3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC05Myw2ICs5Myw3IEBAIFBHX0tFWVdPUkQo ImNvbW1pdCIsIENPTU1JVCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZ V09SRCgiY29tbWl0dGVkIiwgQ09NTUlUVEVELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCiBQR19LRVlXT1JEKCJjb21wcmVzc2lvbiIsIENPTVBSRVNTSU9OLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJjb25jdXJyZW50bHkiLCBDT05DVVJSRU5U TFksIFRZUEVfRlVOQ19OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJjb25k aXRpb25hbCIsIENPTkRJVElPTkFMLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJjb25maWd1cmF0aW9uIiwgQ09ORklHVVJBVElPTiwgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiY29uZmxpY3QiLCBDT05GTElDVCwgVU5SRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiY29ubmVjdGlvbiIsIENPTk5F Q1RJT04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKQEAgLTE0NywxMSArMTQ4LDEz IEBAIFBHX0tFWVdPUkQoImRvdWJsZSIsIERPVUJMRV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJB UkVfTEFCRUwpCiBQR19LRVlXT1JEKCJkcm9wIiwgRFJPUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZWFjaCIsIEVBQ0gsIFVOUkVTRVJWRURfS0VZV09SRCwg QkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImVsc2UiLCBFTFNFLCBSRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQorUEdfS0VZV09SRCgiZW1wdHkiLCBFTVBUWV9QLCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJlbmFibGUiLCBFTkFCTEVfUCwgVU5SRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZW5jb2RpbmciLCBFTkNPRElORywg VU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZW5jcnlwdGVkIiwg RU5DUllQVEVELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJl bmQiLCBFTkRfUCwgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImVu dW0iLCBFTlVNX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQo ImVycm9yIiwgRVJST1JfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZ V09SRCgiZXNjYXBlIiwgRVNDQVBFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJldmVudCIsIEVWRU5ULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJleGNlcHQiLCBFWENFUFQsIFJFU0VSVkVEX0tFWVdPUkQsIEFTX0xBQkVM KQpAQCAtMjMzLDEwICsyMzYsMTQgQEAgUEdfS0VZV09SRCgiam9pbiIsIEpPSU4sIFRZUEVfRlVO Q19OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJqc29uIiwgSlNPTiwgQ09M X05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImpzb25fYXJyYXkiLCBKU09O X0FSUkFZLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgianNvbl9h cnJheWFnZyIsIEpTT05fQVJSQVlBR0csIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQ R19LRVlXT1JEKCJqc29uX2V4aXN0cyIsIEpTT05fRVhJU1RTLCBDT0xfTkFNRV9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgianNvbl9vYmplY3QiLCBKU09OX09CSkVDVCwgQ09MX05B TUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImpzb25fb2JqZWN0YWdnIiwgSlNP Tl9PQkpFQ1RBR0csIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJq c29uX3F1ZXJ5IiwgSlNPTl9RVUVSWSwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoImpzb25fc2NhbGFyIiwgSlNPTl9TQ0FMQVIsIENPTF9OQU1FX0tFWVdPUkQsIEJB UkVfTEFCRUwpCiBQR19LRVlXT1JEKCJqc29uX3NlcmlhbGl6ZSIsIEpTT05fU0VSSUFMSVpFLCBD T0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgianNvbl92YWx1ZSIsIEpT T05fVkFMVUUsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJrZWVw IiwgS0VFUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgia2V5 IiwgS0VZLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJrZXlz IiwgS0VZUywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgibGFi ZWwiLCBMQUJFTCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpAQCAtMzAyLDYgKzMw OSw3IEBAIFBHX0tFWVdPUkQoIm9mZiIsIE9GRiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgib2Zmc2V0IiwgT0ZGU0VULCBSRVNFUlZFRF9LRVlXT1JELCBBU19M QUJFTCkKIFBHX0tFWVdPUkQoIm9pZHMiLCBPSURTLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJvbGQiLCBPTEQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKK1BHX0tFWVdPUkQoIm9taXQiLCBPTUlULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJvbiIsIE9OLCBSRVNFUlZFRF9LRVlXT1JELCBBU19MQUJFTCkK IFBHX0tFWVdPUkQoIm9ubHkiLCBPTkxZLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgib3BlcmF0b3IiLCBPUEVSQVRPUiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJF X0xBQkVMKQpAQCAtMzQ0LDYgKzM1Miw3IEBAIFBHX0tFWVdPUkQoInByb2NlZHVyZXMiLCBQUk9D RURVUkVTLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwcm9n cmFtIiwgUFJPR1JBTSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgicHVibGljYXRpb24iLCBQVUJMSUNBVElPTiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgicXVvdGUiLCBRVU9URSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJF X0xBQkVMKQorUEdfS0VZV09SRCgicXVvdGVzIiwgUVVPVEVTLCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJyYW5nZSIsIFJBTkdFLCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJyZWFkIiwgUkVBRCwgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicmVhbCIsIFJFQUwsIENPTF9OQU1FX0tFWVdP UkQsIEJBUkVfTEFCRUwpCkBAIC00MTQsNiArNDIzLDcgQEAgUEdfS0VZV09SRCgic3Rkb3V0Iiwg U1RET1VULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzdG9y YWdlIiwgU1RPUkFHRSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgic3RvcmVkIiwgU1RPUkVELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJzdHJpY3QiLCBTVFJJQ1RfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVM KQorUEdfS0VZV09SRCgic3RyaW5nIiwgU1RSSU5HX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoInN0cmlwIiwgU1RSSVBfUCwgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic3Vic2NyaXB0aW9uIiwgU1VCU0NSSVBUSU9OLCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzdWJzdHJpbmciLCBT VUJTVFJJTkcsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBAIC00NDksNiArNDU5LDcg QEAgUEdfS0VZV09SRCgidHlwZXMiLCBUWVBFU19QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJ1ZXNjYXBlIiwgVUVTQ0FQRSwgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgidW5ib3VuZGVkIiwgVU5CT1VOREVELCBVTlJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ1bmNvbW1pdHRlZCIsIFVOQ09N TUlUVEVELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJ1bmNv bmRpdGlvbmFsIiwgVU5DT05ESVRJT05BTCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgidW5lbmNyeXB0ZWQiLCBVTkVOQ1JZUFRFRCwgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgidW5pb24iLCBVTklPTiwgUkVTRVJWRURfS0VZ V09SRCwgQVNfTEFCRUwpCiBQR19LRVlXT1JEKCJ1bmlxdWUiLCBVTklRVUUsIFJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9mb3JtYXR0 aW5nLmggYi9zcmMvaW5jbHVkZS91dGlscy9mb3JtYXR0aW5nLmgKaW5kZXggN2VhMWE3MGY3MS4u Y2RlMDMwNDE0ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvZm9ybWF0dGluZy5oCisr KyBiL3NyYy9pbmNsdWRlL3V0aWxzL2Zvcm1hdHRpbmcuaApAQCAtMjksNSArMjksNiBAQCBleHRl cm4gY2hhciAqYXNjX2luaXRjYXAoY29uc3QgY2hhciAqYnVmZiwgc2l6ZV90IG5ieXRlcyk7CiBl eHRlcm4gRGF0dW0gcGFyc2VfZGF0ZXRpbWUodGV4dCAqZGF0ZV90eHQsIHRleHQgKmZtdCwgT2lk IGNvbGxpZCwgYm9vbCBzdHJpY3QsCiAJCQkJCQkJT2lkICp0eXBpZCwgaW50MzIgKnR5cG1vZCwg aW50ICp0eiwKIAkJCQkJCQlzdHJ1Y3QgTm9kZSAqZXNjb250ZXh0KTsKK2V4dGVybiBib29sIGRh dGV0aW1lX2Zvcm1hdF9oYXNfdHooY29uc3QgY2hhciAqZm10X3N0cik7CiAKICNlbmRpZgpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvanNvbmIuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2pz b25iLmgKaW5kZXggZTM4ZGZkNDkwMS4uZDU4OWFjZTVhMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvdXRpbHMvanNvbmIuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9qc29uYi5oCkBAIC00MjIs NiArNDIyLDcgQEAgZXh0ZXJuIGNoYXIgKkpzb25iVG9DU3RyaW5nKFN0cmluZ0luZm8gb3V0LCBK c29uYkNvbnRhaW5lciAqaW4sCiAJCQkJCQkJaW50IGVzdGltYXRlZF9sZW4pOwogZXh0ZXJuIGNo YXIgKkpzb25iVG9DU3RyaW5nSW5kZW50KFN0cmluZ0luZm8gb3V0LCBKc29uYkNvbnRhaW5lciAq aW4sCiAJCQkJCQkJCSAgaW50IGVzdGltYXRlZF9sZW4pOworZXh0ZXJuIGNoYXIgKkpzb25iVW5x dW90ZShKc29uYiAqamIpOwogZXh0ZXJuIGJvb2wgSnNvbmJFeHRyYWN0U2NhbGFyKEpzb25iQ29u dGFpbmVyICpqYmMsIEpzb25iVmFsdWUgKnJlcyk7CiBleHRlcm4gY29uc3QgY2hhciAqSnNvbmJU eXBlTmFtZShKc29uYlZhbHVlICp2YWwpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGls cy9qc29uZnVuY3MuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25mdW5jcy5oCmluZGV4IDMxYzFh ZTQ3NjcuLjE5MGUxMzI4NGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25mdW5j cy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25mdW5jcy5oCkBAIC0xNSw2ICsxNSw3IEBA CiAjZGVmaW5lIEpTT05GVU5DU19ICiAKICNpbmNsdWRlICJjb21tb24vanNvbmFwaS5oIgorI2lu Y2x1ZGUgIm5vZGVzL25vZGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvanNvbmIuaCIKIAogLyoKQEAg LTg4LDQgKzg5LDEwIEBAIGV4dGVybiBEYXR1bSBkYXR1bV90b19qc29uYihEYXR1bSB2YWwsIEpz b25UeXBlQ2F0ZWdvcnkgdGNhdGVnb3J5LAogCQkJCQkJCU9pZCBvdXRmdW5jb2lkKTsKIGV4dGVy biBEYXR1bSBqc29uYl9mcm9tX3RleHQodGV4dCAqanMsIGJvb2wgdW5pcXVlX2tleXMpOwogCitl eHRlcm4gRGF0dW0ganNvbl9wb3B1bGF0ZV90eXBlKERhdHVtIGpzb25fdmFsLCBPaWQganNvbl90 eXBlLAorCQkJCQkJCQlPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwKKwkJCQkJCQkJdm9pZCAqKmNh Y2hlLCBNZW1vcnlDb250ZXh0IG1jeHQsCisJCQkJCQkJCWJvb2wgKmlzbnVsbCwKKwkJCQkJCQkJ Tm9kZSAqZXNjb250ZXh0KTsKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGls cy9qc29ucGF0aC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaAppbmRleCAwZjBlMTI2 ZTAzLi4wZjRiMWViYzlmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5o CisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmgKQEAgLTE2LDYgKzE2LDcgQEAKIAog I2luY2x1ZGUgImZtZ3IuaCIKICNpbmNsdWRlICJub2Rlcy9wZ19saXN0LmgiCisjaW5jbHVkZSAi bm9kZXMvcHJpbW5vZGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvanNvbmIuaCIKIAogdHlwZWRlZiBz dHJ1Y3QKQEAgLTIwMiw2ICsyMDMsNyBAQCBleHRlcm4gYm9vbCBqc3BHZXRCb29sKEpzb25QYXRo SXRlbSAqdik7CiBleHRlcm4gY2hhciAqanNwR2V0U3RyaW5nKEpzb25QYXRoSXRlbSAqdiwgaW50 MzIgKmxlbik7CiBleHRlcm4gYm9vbCBqc3BHZXRBcnJheVN1YnNjcmlwdChKc29uUGF0aEl0ZW0g KnYsIEpzb25QYXRoSXRlbSAqZnJvbSwKIAkJCQkJCQkJIEpzb25QYXRoSXRlbSAqdG8sIGludCBp KTsKK2V4dGVybiBib29sIGpzcElzTXV0YWJsZShKc29uUGF0aCAqcGF0aCwgTGlzdCAqdmFybmFt ZXMsIExpc3QgKnZhcmV4cHJzKTsKIAogZXh0ZXJuIGNvbnN0IGNoYXIgKmpzcE9wZXJhdGlvbk5h bWUoSnNvblBhdGhJdGVtVHlwZSB0eXBlKTsKIApAQCAtMjc5LDQgKzI4MSwyNiBAQCBleHRlcm4g Ym9vbCBqc3BDb252ZXJ0UmVnZXhGbGFncyh1aW50MzIgeGZsYWdzLCBpbnQgKnJlc3VsdCwKIAkJ CQkJCQkJIHN0cnVjdCBOb2RlICplc2NvbnRleHQpOwogCiAKKy8qCisgKiBFdmFsdWF0aW9uIG9m IGpzb25wYXRoCisgKi8KKworLyogRXh0ZXJuYWwgdmFyaWFibGUgcGFzc2VkIGludG8ganNvbnBh dGguICovCit0eXBlZGVmIHN0cnVjdCBKc29uUGF0aFZhcmlhYmxlCit7CisJY2hhcgkgICAqbmFt ZTsKKwlPaWQJCQl0eXBpZDsKKwlpbnQzMgkJdHlwbW9kOworCURhdHVtCQl2YWx1ZTsKKwlib29s CQlpc251bGw7Cit9IEpzb25QYXRoVmFyaWFibGU7CisKKworLyogU1FML0pTT04gaXRlbSAqLwor ZXh0ZXJuIGJvb2wgSnNvblBhdGhFeGlzdHMoRGF0dW0gamIsIEpzb25QYXRoICpwYXRoLCBib29s ICplcnJvciwgTGlzdCAqdmFycyk7CitleHRlcm4gRGF0dW0gSnNvblBhdGhRdWVyeShEYXR1bSBq YiwgSnNvblBhdGggKmpwLCBKc29uV3JhcHBlciB3cmFwcGVyLAorCQkJCQkJICAgYm9vbCAqZW1w dHksIGJvb2wgKmVycm9yLCBMaXN0ICp2YXJzKTsKK2V4dGVybiBKc29uYlZhbHVlICpKc29uUGF0 aFZhbHVlKERhdHVtIGpiLCBKc29uUGF0aCAqanAsIGJvb2wgKmVtcHR5LAorCQkJCQkJCQkgYm9v bCAqZXJyb3IsIExpc3QgKnZhcnMpOworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZh Y2VzL2VjcGcvcHJlcHJvYy9lY3BnLnRyYWlsZXIgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXBy b2MvZWNwZy50cmFpbGVyCmluZGV4IDQzNWMxMzllYzIuLmIyYWE0NGYzNmQgMTAwNjQ0Ci0tLSBh L3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9lY3BnLnRyYWlsZXIKKysrIGIvc3JjL2ludGVy ZmFjZXMvZWNwZy9wcmVwcm9jL2VjcGcudHJhaWxlcgpAQCAtNjUxLDYgKzY1MSwzNCBAQCB2YXJf dHlwZToJc2ltcGxlX3R5cGUKIAkJCSQkLnR5cGVfaW5kZXggPSBtbV9zdHJkdXAoIi0xIik7CiAJ CQkkJC50eXBlX3NpemVvZiA9IE5VTEw7CiAJCX0KKwkJfCBTVFJJTkdfUAorCQl7CisJCQlpZiAo SU5GT1JNSVhfTU9ERSkKKwkJCXsKKwkJCQkvKiBJbiBJbmZvcm1peCBtb2RlLCAic3RyaW5nIiBp cyBhdXRvbWF0aWNhbGx5IGEgdHlwZWRlZiAqLworCQkJCSQkLnR5cGVfZW51bSA9IEVDUEd0X3N0 cmluZzsKKwkJCQkkJC50eXBlX3N0ciA9IG1tX3N0cmR1cCgiY2hhciIpOworCQkJCSQkLnR5cGVf ZGltZW5zaW9uID0gbW1fc3RyZHVwKCItMSIpOworCQkJCSQkLnR5cGVfaW5kZXggPSBtbV9zdHJk dXAoIi0xIik7CisJCQkJJCQudHlwZV9zaXplb2YgPSBOVUxMOworCQkJfQorCQkJZWxzZQorCQkJ eworCQkJCS8qIE90aGVyd2lzZSwgbGVnYWwgb25seSBpZiB1c2VyIHR5cGVkZWYnZWQgaXQgKi8K KwkJCQlzdHJ1Y3QgdHlwZWRlZnMgKnRoaXMgPSBnZXRfdHlwZWRlZigic3RyaW5nIiwgZmFsc2Up OworCisJCQkJJCQudHlwZV9zdHIgPSAodGhpcy0+dHlwZS0+dHlwZV9lbnVtID09IEVDUEd0X3Zh cmNoYXIgfHwgdGhpcy0+dHlwZS0+dHlwZV9lbnVtID09IEVDUEd0X2J5dGVhKSA/IEVNUFRZIDog bW1fc3RyZHVwKHRoaXMtPm5hbWUpOworCQkJCSQkLnR5cGVfZW51bSA9IHRoaXMtPnR5cGUtPnR5 cGVfZW51bTsKKwkJCQkkJC50eXBlX2RpbWVuc2lvbiA9IHRoaXMtPnR5cGUtPnR5cGVfZGltZW5z aW9uOworCQkJCSQkLnR5cGVfaW5kZXggPSB0aGlzLT50eXBlLT50eXBlX2luZGV4OworCQkJCWlm ICh0aGlzLT50eXBlLT50eXBlX3NpemVvZiAmJiBzdHJsZW4odGhpcy0+dHlwZS0+dHlwZV9zaXpl b2YpICE9IDApCisJCQkJCSQkLnR5cGVfc2l6ZW9mID0gdGhpcy0+dHlwZS0+dHlwZV9zaXplb2Y7 CisJCQkJZWxzZQorCQkJCQkkJC50eXBlX3NpemVvZiA9IGNhdF9zdHIoMywgbW1fc3RyZHVwKCJz aXplb2YoIiksIG1tX3N0cmR1cCh0aGlzLT5uYW1lKSwgbW1fc3RyZHVwKCIpIikpOworCisJCQkJ c3RydWN0X21lbWJlcl9saXN0W3N0cnVjdF9sZXZlbF0gPSBFQ1BHc3RydWN0X21lbWJlcl9kdXAo dGhpcy0+c3RydWN0X21lbWJlcl9saXN0KTsKKwkJCX0KKwkJfQogCQl8IElOVEVSVkFMIGVjcGdf aW50ZXJ2YWwKIAkJewogCQkJJCQudHlwZV9lbnVtID0gRUNQR3RfaW50ZXJ2YWw7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NxbGpzb25fcXVlcnlmdW5jcy5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NxbGpzb25fcXVlcnlmdW5jcy5vdXQKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZjViNTc0NjVkNgotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3FsanNvbl9xdWVyeWZ1bmNzLm91dApAQCAt MCwwICsxLDEyNjEgQEAKKy0tIEpTT05fRVhJU1RTCistLSBqc29uIGFyZ3VtZW50cyBjdXJyZW50 bHkgbm90IHN1cHBvcnRlZAorU0VMRUNUIEpTT05fRVhJU1RTKE5VTEwgRk9STUFUIEpTT04sICck Jyk7CitFUlJPUjogIEpTT05fRVhJU1RTKCkgaXMgbm90IHlldCBpbXBsZW1lbnRlZCBmb3IgdGhl IGpzb24gdHlwZQorTElORSAxOiBTRUxFQ1QgSlNPTl9FWElTVFMoTlVMTCBGT1JNQVQgSlNPTiwg JyQnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBUcnkgY2FzdGluZyB0 aGUgYXJndW1lbnQgdG8ganNvbmIKK1NFTEVDVCBKU09OX0VYSVNUUyhOVUxMOjpqc29uYiwgJyQn KTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIEpT T05fRVhJU1RTKGpzb25iICdbXScsICckJyk7CisganNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0t CisgdAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoSlNPTl9PQkpFQ1QoUkVUVVJOSU5H IGpzb25iKSwgJyQnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cp CisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICckJyk7CisganNvbl9leGlzdHMgCist LS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ251 bGwnLCAnJCcpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKwor U0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICdbXScsICckJyk7CisganNvbl9leGlzdHMgCistLS0t LS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEnLCAn JC5hJyk7CisganNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQorCitTRUxF Q1QgSlNPTl9FWElTVFMoanNvbmIgJzEnLCAnc3RyaWN0ICQuYScpOyAtLSBGQUxTRSBvbiBlcnJv cgorIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworU0VMRUNUIEpT T05fRVhJU1RTKGpzb25iICcxJywgJ3N0cmljdCAkLmEnIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9S OiAganNvbnBhdGggbWVtYmVyIGFjY2Vzc29yIGNhbiBvbmx5IGJlIGFwcGxpZWQgdG8gYW4gb2Jq ZWN0CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ251bGwnLCAnJC5hJyk7CisganNvbl9leGlz dHMgCistLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNv bmIgJ1tdJywgJyQuYScpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIGYKKygxIHJv dykKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICdbMSwgImFhYSIsIHsiYSI6IDF9XScsICdz dHJpY3QgJC5hJyk7IC0tIEZBTFNFIG9uIGVycm9yCisganNvbl9leGlzdHMgCistLS0tLS0tLS0t LS0tCisgZgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ1sxLCAiYWFhIiwg eyJhIjogMX1dJywgJ2xheCAkLmEnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyB0 CisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAne30nLCAnJC5hJyk7CisganNv bl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElT VFMoanNvbmIgJ3siYiI6IDEsICJhIjogMn0nLCAnJC5hJyk7CisganNvbl9leGlzdHMgCistLS0t LS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEnLCAn JC5hLmInKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK1NF TEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJhIjogeyJiIjogMX19JywgJyQuYS5iJyk7CisganNv bl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElT VFMoanNvbmIgJ3siYSI6IDEsICJiIjogMn0nLCAnJC5hLmInKTsKKyBqc29uX2V4aXN0cyAKKy0t LS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJh IjogMSwgImIiOiAyfScsICckLiogPyAoQCA+ICR4KScgUEFTU0lORyAxIEFTIHgpOworIGpzb25f ZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RT KGpzb25iICd7ImEiOiAxLCAiYiI6IDJ9JywgJyQuKiA/IChAID4gJHgpJyBQQVNTSU5HICcxJyBB UyB4KTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK1NFTEVD VCBKU09OX0VYSVNUUyhqc29uYiAneyJhIjogMSwgImIiOiAyfScsICckLiogPyAoQCA+ICR4ICYm IEAgPCAkeSknIFBBU1NJTkcgMCBBUyB4LCAyIEFTIHkpOworIGpzb25fZXhpc3RzIAorLS0tLS0t LS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICd7ImEiOiAx LCAiYiI6IDJ9JywgJyQuKiA/IChAID4gJHggJiYgQCA8ICR5KScgUEFTU0lORyAwIEFTIHgsIDEg QVMgeSk7CisganNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQorCistLSBl eHRlbnNpb246IGJvb2xlYW4gZXhwcmVzc2lvbnMKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAn MScsICckID4gMicpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykK KworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJyQuYSA+IDInIEVSUk9SIE9OIEVSUk9S KTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKKy0tIEpTT05f VkFMVUUKKy0tIGpzb24gYXJndW1lbnRzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkCitTRUxFQ1Qg SlNPTl9WQUxVRShOVUxMIEZPUk1BVCBKU09OLCAnJCcpOworRVJST1I6ICBKU09OX1ZBTFVFKCkg aXMgbm90IHlldCBpbXBsZW1lbnRlZCBmb3IgdGhlIGpzb24gdHlwZQorTElORSAxOiBTRUxFQ1Qg SlNPTl9WQUxVRShOVUxMIEZPUk1BVCBKU09OLCAnJCcpOworICAgICAgICAgICAgICAgICAgICAg ICAgICBeCitISU5UOiAgVHJ5IGNhc3RpbmcgdGhlIGFyZ3VtZW50IHRvIGpzb25iCitTRUxFQ1Qg SlNPTl9WQUxVRShOVUxMOjpqc29uYiwgJyQnKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyQnKTsKKyBq c29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVF KGpzb25iICdudWxsJywgJyQnIFJFVFVSTklORyBpbnQpOworIGpzb25fdmFsdWUgCistLS0tLS0t LS0tLS0KKyAgICAgICAgICAgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICd0 cnVlJywgJyQnKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgdHJ1ZQorKDEgcm93KQor CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAndHJ1ZScsICckJyBSRVRVUk5JTkcgYm9vbCk7Cisg anNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJzEyMycsICckJyk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIDEyMwor KDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMTIzJywgJyQnIFJFVFVSTklORyBp bnQpICsgMjM0OworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorICAgICAgMzU3CisoMSByb3cpCisK K1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxMjMnLCAnJCcgUkVUVVJOSU5HIHRleHQpOworIGpz b25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAxMjMKKygxIHJvdykKKworLyoganNvbmIgYnl0ZWEg Pz8/ICovCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMTIzJywgJyQnIFJFVFVSTklORyBieXRl YSBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIFNRTC9KU09OIGl0ZW0gY2Fubm90IGJlIGNhc3Qg dG8gdGFyZ2V0IHR5cGUKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxLjIzJywgJyQnKTsKKyBq c29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgMS4yMworKDEgcm93KQorCitTRUxFQ1QgSlNPTl9W QUxVRShqc29uYiAnMS4yMycsICckJyBSRVRVUk5JTkcgaW50KTsKKyBqc29uX3ZhbHVlIAorLS0t LS0tLS0tLS0tCisgICAgICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29u YiAnIjEuMjMiJywgJyQnIFJFVFVSTklORyBudW1lcmljKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0t LS0tLS0tCisgICAgICAgMS4yMworKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn IjEuMjMiJywgJyQnIFJFVFVSTklORyBpbnQgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBpbnZh bGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAiMS4yMyIKK1NFTEVDVCBKU09OX1ZB TFVFKGpzb25iICciYWFhIicsICckJyk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIGFh YQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJO SU5HIHRleHQpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyBhYWEKKygxIHJvdykKKwor U0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBjaGFyKDUpKTsK KyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgYWFhICAKKygxIHJvdykKKworU0VMRUNUIEpT T05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBjaGFyKDIpKTsKKyBqc29uX3Zh bHVlIAorLS0tLS0tLS0tLS0tCisgYWEKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNv bmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBqc29uKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0t LS0tCisgImFhYSIKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywg JyQnIFJFVFVSTklORyBqc29uYik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICJhYWEi CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5J TkcganNvbiBFUlJPUiBPTiBFUlJPUik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICJh YWEiCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRV Uk5JTkcganNvbmIgRVJST1IgT04gRVJST1IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0K KyAiYWFhIgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnIlwiYWFhXCIiJywg JyQnIFJFVFVSTklORyBqc29uKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgIlwiYWFh XCIiCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciXCJhYWFcIiInLCAnJCcg UkVUVVJOSU5HIGpzb25iKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgIlwiYWFhXCIi CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5J TkcgaW50KTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgICAgICAgICAgIAorKDEgcm93 KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGludCBF UlJPUiBPTiBFUlJPUik7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGlu dGVnZXI6ICJhYWEiCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJO SU5HIGludCBERUZBVUxUIDExMSBPTiBFUlJPUik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0t LQorICAgICAgICAxMTEKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyIxMjMi JywgJyQnIFJFVFVSTklORyBpbnQpICsgMjM0OworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorICAg ICAgMzU3CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciMjAxNy0wMi0yMCIn LCAnJCcgUkVUVVJOSU5HIGRhdGUpICsgOTsKKyAgP2NvbHVtbj8gIAorLS0tLS0tLS0tLS0tCisg MDMtMDEtMjAxNworKDEgcm93KQorCistLSBUZXN0IE5VTEwgY2hlY2tzIGV4ZWN1dGlvbiBpbiBk b21haW4gdHlwZXMKK0NSRUFURSBET01BSU4gc3FsanNvbmJfaW50X25vdF9udWxsIEFTIGludCBO T1QgTlVMTDsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyQnIFJFVFVSTklORyBz cWxqc29uYl9pbnRfbm90X251bGwpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyQnIFJF VFVSTklORyBzcWxqc29uYl9pbnRfbm90X251bGwgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBk b21haW4gc3FsanNvbmJfaW50X25vdF9udWxsIGRvZXMgbm90IGFsbG93IG51bGwgdmFsdWVzCitT RUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50 X25vdF9udWxsIERFRkFVTFQgMiBPTiBFTVBUWSBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIGRv bWFpbiBzcWxqc29uYl9pbnRfbm90X251bGwgZG9lcyBub3QgYWxsb3cgbnVsbCB2YWx1ZXMKK1NF TEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgICckLmEnIFJFVFVSTklORyBzcWxqc29uYl9pbnRf bm90X251bGwgREVGQVVMVCAyIE9OIEVNUFRZIEVSUk9SIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVl IAorLS0tLS0tLS0tLS0tCisgICAgICAgICAgMgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxV RShqc29uYiAnMScsICAnJC5hJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50X25vdF9udWxsIERFRkFV TFQgTlVMTCBPTiBFTVBUWSBFUlJPUiBPTiBFUlJPUik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0t LS0tLQorICAgICAgICAgICAKKygxIHJvdykKKworQ1JFQVRFIFRZUEUgcmFpbmJvdyBBUyBFTlVN ICgncmVkJywgJ29yYW5nZScsICd5ZWxsb3cnLCAnZ3JlZW4nLCAnYmx1ZScsICdwdXJwbGUnKTsK K0NSRUFURSBET01BSU4gcmdiIEFTIHJhaW5ib3cgQ0hFQ0sgKFZBTFVFIElOICgncmVkJywgJ2dy ZWVuJywgJ2JsdWUnKSk7CitTRUxFQ1QgSlNPTl9WQUxVRSgnInB1cnBsZSInOjpqc29uYiwgJ2xh eCAkWypdJyBSRVRVUk5JTkcgcmdiKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKCcicHVycGxlIic6Ompzb25iLCAnbGF4ICRbKl0n IFJFVFVSTklORyByZ2IgRVJST1IgT04gRVJST1IpOworRVJST1I6ICB2YWx1ZSBmb3IgZG9tYWlu IHJnYiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJyZ2JfY2hlY2siCitTRUxFQ1QgSlNPTl9W QUxVRShqc29uYiAnW10nLCAnJCcpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1tdJywgJyQnIEVSUk9SIE9OIEVSUk9S KTsKK0VSUk9SOiAgSlNPTiBwYXRoIGV4cHJlc3Npb24gaW4gSlNPTl9WQUxVRSBzaG91bGQgcmV0 dXJuIHNpbmdsZXRvbiBzY2FsYXIgaXRlbQorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ3t9Jywg JyQnKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICd7fScsICckJyBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIEpTT04g cGF0aCBleHByZXNzaW9uIGluIEpTT05fVkFMVUUgc2hvdWxkIHJldHVybiBzaW5nbGV0b24gc2Nh bGFyIGl0ZW0KK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJyQuYScpOworIGpzb25fdmFs dWUgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIg JzEnLCAnc3RyaWN0ICQuYScgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBqc29ucGF0aCBtZW1i ZXIgYWNjZXNzb3IgY2FuIG9ubHkgYmUgYXBwbGllZCB0byBhbiBvYmplY3QKK1NFTEVDVCBKU09O X1ZBTFVFKGpzb25iICcxJywgJ3N0cmljdCAkLmEnIERFRkFVTFQgJ2Vycm9yJyBPTiBFUlJPUik7 CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIGVycm9yCisoMSByb3cpCisKK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAg bm8gU1FML0pTT04gaXRlbQorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnbGF4ICQuYScg RVJST1IgT04gRU1QVFkgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBubyBTUUwvSlNPTiBpdGVt CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdzdHJpY3QgJC5hJyBERUZBVUxUIDIgT04g RVJST1IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAyCisoMSByb3cpCisKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIERFRkFVTFQgMiBPTiBFUlJPUik7Cisg anNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIDIKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJzEnLCAnbGF4ICQuYScgREVGQVVMVCAnMicgT04gRVJST1IpOworIGpzb25fdmFs dWUgCistLS0tLS0tLS0tLS0KKyAyCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25i ICcxJywgJ2xheCAkLmEnIE5VTEwgT04gRU1QVFkgREVGQVVMVCAnMicgT04gRVJST1IpOworIGpz b25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUo anNvbmIgJzEnLCAnbGF4ICQuYScgREVGQVVMVCAnMicgT04gRU1QVFkgREVGQVVMVCAnMycgT04g RVJST1IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAyCisoMSByb3cpCisKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIEVSUk9SIE9OIEVNUFRZIERFRkFVTFQg JzMnIE9OIEVSUk9SKTsKK0VSUk9SOiAgbm8gU1FML0pTT04gaXRlbQorU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJ1sxLDJdJywgJyRbKl0nIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgSlNPTiBw YXRoIGV4cHJlc3Npb24gaW4gSlNPTl9WQUxVRSBzaG91bGQgcmV0dXJuIHNpbmdsZXRvbiBzY2Fs YXIgaXRlbQorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1sxLDJdJywgJyRbKl0nIERFRkFVTFQg JzAnIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgMAorKDEgcm93KQor CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnWyIgIl0nLCAnJFsqXScgUkVUVVJOSU5HIGludCBF UlJPUiBPTiBFUlJPUik7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGlu dGVnZXI6ICIgIgorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1siICJdJywgJyRbKl0nIFJFVFVS TklORyBpbnQgREVGQVVMVCAyICsgMyBPTiBFUlJPUik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0t LS0tLQorICAgICAgICAgIDUKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1si MSJdJywgJyRbKl0nIFJFVFVSTklORyBpbnQgREVGQVVMVCAyICsgMyBPTiBFUlJPUik7CisganNv bl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICAgICAgICAgIDEKKygxIHJvdykKKworU0VMRUNUIEpT T05fVkFMVUUoanNvbmIgJ1siMSJdJywgJyRbKl0nIFJFVFVSTklORyBpbnQgRk9STUFUIEpTT04p OyAtLSBSRVRVUk5JTkcgRk9STUFUIG5vdCBhbGxvd2VkCitFUlJPUjogIGNhbm5vdCBzcGVjaWZ5 IEZPUk1BVCBpbiBSRVRVUk5JTkcgY2xhdXNlIG9mIEpTT05fVkFMVUUoKQorTElORSAxOiAuLi5D VCBKU09OX1ZBTFVFKGpzb25iICdbIjEiXScsICckWypdJyBSRVRVUk5JTkcgaW50IEZPUk1BVCBK U08uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCistLSBSRVRVR05JTkcgcHNldWRvLXR5cGVzIG5vdCBhbGxvd2VkCitTRUxF Q1QgSlNPTl9WQUxVRShqc29uYiAnWyIxIl0nLCAnJFsqXScgUkVUVVJOSU5HIHJlY29yZCk7CitF UlJPUjogIHJldHVybmluZyBwc2V1ZG8tdHlwZXMgaXMgbm90IHN1cHBvcnRlZCBpbiBTUUwvSlNP TiBmdW5jdGlvbnMKK1NFTEVDVAorCXgsCisJSlNPTl9WQUxVRSgKKwkJanNvbmIgJ3siYSI6IDEs ICJiIjogMn0nLAorCQknJC4qID8gKEAgPiAkeCknIFBBU1NJTkcgeCBBUyB4CisJCVJFVFVSTklO RyBpbnQKKwkJREVGQVVMVCAtMSBPTiBFTVBUWQorCQlERUZBVUxUIC0yIE9OIEVSUk9SCisJKSB5 CitGUk9NCisJZ2VuZXJhdGVfc2VyaWVzKDAsIDIpIHg7CisgeCB8IHkgIAorLS0tKy0tLS0KKyAw IHwgLTIKKyAxIHwgIDIKKyAyIHwgLTEKKygzIHJvd3MpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpz b25iICdudWxsJywgJyRhJyBQQVNTSU5HIHBvaW50ICcgKDEsIDIgKScgQVMgYSk7CisganNvbl92 YWx1ZSAKKy0tLS0tLS0tLS0tLQorICgxLDIpCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVF KGpzb25iICdudWxsJywgJyRhJyBQQVNTSU5HIHBvaW50ICcgKDEsIDIgKScgQVMgYSBSRVRVUk5J TkcgcG9pbnQpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAoMSwyKQorKDEgcm93KQor CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckYScgUEFTU0lORyBwb2ludCAnICgx LCAyICknIEFTIGEgUkVUVVJOSU5HIHBvaW50IEVSUk9SIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVl IAorLS0tLS0tLS0tLS0tCisgKDEsMikKKygxIHJvdykKKworLS0gVGVzdCBQQVNTSU5HIGFuZCBS RVRVUk5JTkcgZGF0ZS90aW1lIHR5cGVzCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcs ICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0 cyk7CisgICAgICAgICAganNvbl92YWx1ZSAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFR1ZSBGZWIgMjAgMTg6MzQ6NTYgMjAxOCBQU1QKKygxIHJvdykKKworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcy MDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIHRpbWVzdGFtcHR6KTsKKyAg ICAgICAgICBqc29uX3ZhbHVlICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgVHVlIEZlYiAyMCAxODozNDo1NiAyMDE4IFBTVAorKDEgcm93KQorCitTRUxFQ1QgSlNP Tl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIwMTgtMDIt MjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcgdGltZXN0YW1wKTsKKyAgICAgICAganNv bl92YWx1ZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFR1ZSBGZWIgMjAg MTg6MzQ6NTYgMjAxOAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcs ICckdHMnIFBBU1NJTkcgZGF0ZSAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJFVFVS TklORyBkYXRlKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgMDItMjEtMjAxOAorKDEg cm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGlt ZSAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyB0aW1lKTsKKyBqc29u X3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgMTI6MzQ6NTYKKygxIHJvdykKKworU0VMRUNUIEpTT05f VkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWV0eiAnMjAxOC0wMi0yMSAxMjoz NDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyB0aW1ldHopOworIGpzb25fdmFsdWUgIAorLS0tLS0t LS0tLS0tLQorIDEyOjM0OjU2KzEwCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25i ICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXAgJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEw JyBBUyB0cyBSRVRVUk5JTkcgdGltZXN0YW1wKTsKKyAgICAgICAganNvbl92YWx1ZSAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdlZCBGZWIgMjEgMTI6MzQ6NTYgMjAxOAor KDEgcm93KQorCistLSBBbHNvIHRlc3QgUkVUVVJOSU5HIGpzb25bYl0KK1NFTEVDVCBKU09OX1ZB TFVFKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAx MjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyBqc29uKTsKKyAgICAgICAgIGpzb25fdmFsdWUg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICIyMDE4LTAyLTIxVDAy OjM0OjU2KzAwOjAwIgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcs ICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0 cyBSRVRVUk5JTkcganNvbmIpOworICAgICAgICAganNvbl92YWx1ZSAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIjIwMTgtMDItMjFUMDI6MzQ6NTYrMDA6MDAiCiso MSByb3cpCisKKy0tIEpTT05fUVVFUlkKKy0tIGpzb24gYXJndW1lbnRzIGN1cnJlbnRseSBub3Qg c3VwcG9ydGVkCitTRUxFQ1QgSlNPTl9RVUVSWShOVUxMIEZPUk1BVCBKU09OLCAnJCcpOworRVJS T1I6ICBKU09OX1FVRVJZKCkgaXMgbm90IHlldCBpbXBsZW1lbnRlZCBmb3IgdGhlIGpzb24gdHlw ZQorTElORSAxOiBTRUxFQ1QgSlNPTl9RVUVSWShOVUxMIEZPUk1BVCBKU09OLCAnJCcpOworICAg ICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgVHJ5IGNhc3RpbmcgdGhlIGFyZ3VtZW50 IHRvIGpzb25iCitTRUxFQ1QgSlNPTl9WQUxVRShOVUxMOjpqc29uYiwgJyQnKTsKKyBqc29uX3Zh bHVlIAorLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVAorCUpTT05fUVVFUlkoanMs ICckJyksCisJSlNPTl9RVUVSWShqcywgJyQnIFdJVEhPVVQgV1JBUFBFUiksCisJSlNPTl9RVUVS WShqcywgJyQnIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUiksCisJSlNPTl9RVUVSWShqcywgJyQn IFdJVEggVU5DT05ESVRJT05BTCBBUlJBWSBXUkFQUEVSKSwKKwlKU09OX1FVRVJZKGpzLCAnJCcg V0lUSCBBUlJBWSBXUkFQUEVSKQorRlJPTQorCShWQUxVRVMKKwkJKGpzb25iICdudWxsJyksCisJ CSgnMTIuMycpLAorCQkoJ3RydWUnKSwKKwkJKCciYWFhIicpLAorCQkoJ1sxLCBudWxsLCAiMiJd JyksCisJCSgneyJhIjogMSwgImIiOiBbMl19JykKKwkpIGZvbyhqcyk7CisgICAgIGpzb25fcXVl cnkgICAgIHwgICAgIGpzb25fcXVlcnkgICAgIHwgICAgIGpzb25fcXVlcnkgICAgIHwgICAgICBq c29uX3F1ZXJ5ICAgICAgfCAgICAgIGpzb25fcXVlcnkgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIG51bGwgICAgICAgICAgICAgICB8 IG51bGwgICAgICAgICAgICAgICB8IFtudWxsXSAgICAgICAgICAgICB8IFtudWxsXSAgICAgICAg ICAgICAgIHwgW251bGxdCisgMTIuMyAgICAgICAgICAgICAgIHwgMTIuMyAgICAgICAgICAgICAg IHwgWzEyLjNdICAgICAgICAgICAgIHwgWzEyLjNdICAgICAgICAgICAgICAgfCBbMTIuM10KKyB0 cnVlICAgICAgICAgICAgICAgfCB0cnVlICAgICAgICAgICAgICAgfCBbdHJ1ZV0gICAgICAgICAg ICAgfCBbdHJ1ZV0gICAgICAgICAgICAgICB8IFt0cnVlXQorICJhYWEiICAgICAgICAgICAgICB8 ICJhYWEiICAgICAgICAgICAgICB8IFsiYWFhIl0gICAgICAgICAgICB8IFsiYWFhIl0gICAgICAg ICAgICAgIHwgWyJhYWEiXQorIFsxLCBudWxsLCAiMiJdICAgICB8IFsxLCBudWxsLCAiMiJdICAg ICB8IFsxLCBudWxsLCAiMiJdICAgICB8IFtbMSwgbnVsbCwgIjIiXV0gICAgIHwgW1sxLCBudWxs LCAiMiJdXQorIHsiYSI6IDEsICJiIjogWzJdfSB8IHsiYSI6IDEsICJiIjogWzJdfSB8IHsiYSI6 IDEsICJiIjogWzJdfSB8IFt7ImEiOiAxLCAiYiI6IFsyXX1dIHwgW3siYSI6IDEsICJiIjogWzJd fV0KKyg2IHJvd3MpCisKK1NFTEVDVAorCUpTT05fUVVFUlkoanMsICdzdHJpY3QgJFsqXScpIEFT ICJ1bnNwZWMiLAorCUpTT05fUVVFUlkoanMsICdzdHJpY3QgJFsqXScgV0lUSE9VVCBXUkFQUEVS KSBBUyAid2l0aG91dCIsCisJSlNPTl9RVUVSWShqcywgJ3N0cmljdCAkWypdJyBXSVRIIENPTkRJ VElPTkFMIFdSQVBQRVIpIEFTICJ3aXRoIGNvbmQiLAorCUpTT05fUVVFUlkoanMsICdzdHJpY3Qg JFsqXScgV0lUSCBVTkNPTkRJVElPTkFMIEFSUkFZIFdSQVBQRVIpIEFTICJ3aXRoIHVuY29uZCIs CisJSlNPTl9RVUVSWShqcywgJ3N0cmljdCAkWypdJyBXSVRIIEFSUkFZIFdSQVBQRVIpIEFTICJ3 aXRoIgorRlJPTQorCShWQUxVRVMKKwkJKGpzb25iICcxJyksCisJCSgnW10nKSwKKwkJKCdbbnVs bF0nKSwKKwkJKCdbMTIuM10nKSwKKwkJKCdbdHJ1ZV0nKSwKKwkJKCdbImFhYSJdJyksCisJCSgn W1sxLCAyLCAzXV0nKSwKKwkJKCdbeyJhIjogMSwgImIiOiBbMl19XScpLAorCQkoJ1sxLCAiMiIs IG51bGwsIFszXV0nKQorCSkgZm9vKGpzKTsKKyAgICAgICB1bnNwZWMgICAgICAgfCAgICAgIHdp dGhvdXQgICAgICAgfCAgICAgIHdpdGggY29uZCAgICAgIHwgICAgIHdpdGggdW5jb25kICAgICAg fCAgICAgICAgIHdpdGggICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgfCAKKyAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgfCAKKyBudWxsICAgICAgICAgICAgICAgfCBudWxs ICAgICAgICAgICAgICAgfCBbbnVsbF0gICAgICAgICAgICAgIHwgW251bGxdICAgICAgICAgICAg ICAgfCBbbnVsbF0KKyAxMi4zICAgICAgICAgICAgICAgfCAxMi4zICAgICAgICAgICAgICAgfCBb MTIuM10gICAgICAgICAgICAgIHwgWzEyLjNdICAgICAgICAgICAgICAgfCBbMTIuM10KKyB0cnVl ICAgICAgICAgICAgICAgfCB0cnVlICAgICAgICAgICAgICAgfCBbdHJ1ZV0gICAgICAgICAgICAg IHwgW3RydWVdICAgICAgICAgICAgICAgfCBbdHJ1ZV0KKyAiYWFhIiAgICAgICAgICAgICAgfCAi YWFhIiAgICAgICAgICAgICAgfCBbImFhYSJdICAgICAgICAgICAgIHwgWyJhYWEiXSAgICAgICAg ICAgICAgfCBbImFhYSJdCisgWzEsIDIsIDNdICAgICAgICAgIHwgWzEsIDIsIDNdICAgICAgICAg IHwgWzEsIDIsIDNdICAgICAgICAgICB8IFtbMSwgMiwgM11dICAgICAgICAgIHwgW1sxLCAyLCAz XV0KKyB7ImEiOiAxLCAiYiI6IFsyXX0gfCB7ImEiOiAxLCAiYiI6IFsyXX0gfCB7ImEiOiAxLCAi YiI6IFsyXX0gIHwgW3siYSI6IDEsICJiIjogWzJdfV0gfCBbeyJhIjogMSwgImIiOiBbMl19XQor ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8IFsxLCAiMiIsIG51bGws IFszXV0gfCBbMSwgIjIiLCBudWxsLCBbM11dICB8IFsxLCAiMiIsIG51bGwsIFszXV0KKyg5IHJv d3MpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgdGV4 dCk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorICJhYWEiCisoMSByb3cpCisKK1NFTEVD VCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgdGV4dCBLRUVQIFFVT1RF Uyk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorICJhYWEiCisoMSByb3cpCisKK1NFTEVD VCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgdGV4dCBLRUVQIFFVT1RF UyBPTiBTQ0FMQVIgU1RSSU5HKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgImFhYSIK KygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklO RyB0ZXh0IE9NSVQgUVVPVEVTKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgYWFhCiso MSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcg dGV4dCBPTUlUIFFVT1RFUyBPTiBTQ0FMQVIgU1RSSU5HKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0t LS0tLS0tCisgYWFhCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIics ICckJyBPTUlUIFFVT1RFUyBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIGludmFsaWQgaW5wdXQg c3ludGF4IGZvciB0eXBlIGpzb24KK0RFVEFJTDogIFRva2VuICJhYWEiIGlzIGludmFsaWQuCitD T05URVhUOiAgSlNPTiBkYXRhLCBsaW5lIDE6IGFhYQorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg JyJhYWEiJywgJyQnIFJFVFVSTklORyBqc29uIE9NSVQgUVVPVEVTIEVSUk9SIE9OIEVSUk9SKTsK K0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUganNvbgorREVUQUlMOiAgVG9r ZW4gImFhYSIgaXMgaW52YWxpZC4KK0NPTlRFWFQ6ICBKU09OIGRhdGEsIGxpbmUgMTogYWFhCitT RUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGJ5dGVhIEZPUk1B VCBKU09OIE9NSVQgUVVPVEVTIEVSUk9SIE9OIEVSUk9SKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0t LS0tLS0tCisgXHg2MTYxNjEKKygxIHJvdykKKworLS0gQmVoYXZpb3Igd2hlbiBhIFJFVFVSTklO RyB0eXBlIGhhcyB0eXBtb2QgIT0gLTEKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIics ICckJyBSRVRVUk5JTkcgY2hhcigyKSk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorICJh CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckJyBSRVRVUk5J TkcgY2hhcigyKSBPTUlUIFFVT1RFUyk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIGFh CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckLmEnIFJFVFVS TklORyBjaGFyKDIpIE9NSVQgUVVPVEVTIERFRkFVTFQgJ2JiYicgT04gRU1QVFkpOworIGpzb25f cXVlcnkgCistLS0tLS0tLS0tLS0KKyBiYgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShq c29uYiAnImFhYSInLCAnJC5hJyBSRVRVUk5JTkcgY2hhcigyKSBPTUlUIFFVT1RFUyBERUZBVUxU ICciYmJiIic6Ompzb25iIE9OIEVNUFRZKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisg ImIKKygxIHJvdykKKworLS0gUVVPVEVTIGJlaGF2aW9yIHNob3VsZCBub3QgYmUgc3BlY2lmaWVk IHdoZW4gV0lUSCBXUkFQUEVSIHVzZWQ6CistLSBTaG91bGQgZmFpbAorU0VMRUNUIEpTT05fUVVF UlkoanNvbmIgJ1sxXScsICckJyBXSVRIIFdSQVBQRVIgT01JVCBRVU9URVMpOworRVJST1I6ICBT UUwvSlNPTiBRVU9URVMgYmVoYXZpb3IgbXVzdCBub3QgYmUgc3BlY2lmaWVkIHdoZW4gV0lUSCBX UkFQUEVSIGlzIHVzZWQKK0xJTkUgMTogU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxXScsICck JyBXSVRIIFdSQVBQRVIgT01JVCBRVU9URVMpLi4uCisgICAgICAgICAgICAgICBeCitTRUxFQ1Qg SlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEggV1JBUFBFUiBLRUVQIFFVT1RFUyk7CitF UlJPUjogIFNRTC9KU09OIFFVT1RFUyBiZWhhdmlvciBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgd2hl biBXSVRIIFdSQVBQRVIgaXMgdXNlZAorTElORSAxOiBTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAn WzFdJywgJyQnIFdJVEggV1JBUFBFUiBLRUVQIFFVT1RFUykuLi4KKyAgICAgICAgICAgICAgIF4K K1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBDT05ESVRJT05BTCBXUkFQ UEVSIEtFRVAgUVVPVEVTKTsKK0VSUk9SOiAgU1FML0pTT04gUVVPVEVTIGJlaGF2aW9yIG11c3Qg bm90IGJlIHNwZWNpZmllZCB3aGVuIFdJVEggV1JBUFBFUiBpcyB1c2VkCitMSU5FIDE6IFNFTEVD VCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSIC4u LgorICAgICAgICAgICAgICAgXgorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxXScsICckJyBX SVRIIENPTkRJVElPTkFMIFdSQVBQRVIgT01JVCBRVU9URVMpOworRVJST1I6ICBTUUwvSlNPTiBR VU9URVMgYmVoYXZpb3IgbXVzdCBub3QgYmUgc3BlY2lmaWVkIHdoZW4gV0lUSCBXUkFQUEVSIGlz IHVzZWQKK0xJTkUgMTogU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxXScsICckJyBXSVRIIENP TkRJVElPTkFMIFdSQVBQRVIgLi4uCisgICAgICAgICAgICAgICBeCistLSBTaG91bGQgc3VjY2Vl ZAorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxXScsICckJyBXSVRIT1VUIFdSQVBQRVIgT01J VCBRVU9URVMpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBbMV0KKygxIHJvdykKKwor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxXScsICckJyBXSVRIT1VUIFdSQVBQRVIgS0VFUCBR VU9URVMpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBbMV0KKygxIHJvdykKKworLS0g dGVzdCBRVU9URVMgYmVoYXZpb3IuCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6ICJ7 MSwyLDN9In0nLCAnJC5yZWMnIHJldHVybmluZyBpbnRbXSBvbWl0IHF1b3Rlcyk7CisganNvbl9x dWVyeSAKKy0tLS0tLS0tLS0tLQorIHsxLDIsM30KKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVF UlkoanNvbmIneyJyZWMiOiAiezEsMiwzfSJ9JywgJyQucmVjJyByZXR1cm5pbmcgaW50W10ga2Vl cCBxdW90ZXMpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VM RUNUIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAiezEsMiwzfSJ9JywgJyQucmVjJyByZXR1cm5p bmcgaW50W10ga2VlcCBxdW90ZXMgZXJyb3Igb24gZXJyb3IpOworRVJST1I6ICBleHBlY3RlZCBK U09OIGFycmF5CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6ICJbMSwyXSJ9JywgJyQu cmVjJyByZXR1cm5pbmcgaW50NHJhbmdlIG9taXQgcXVvdGVzKTsKKyBqc29uX3F1ZXJ5IAorLS0t LS0tLS0tLS0tCisgWzEsMykKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIneyJy ZWMiOiAiWzEsMl0ifScsICckLnJlYycgcmV0dXJuaW5nIGludDRyYW5nZSBrZWVwIHF1b3Rlcyk7 CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9R VUVSWShqc29uYid7InJlYyI6ICJbMSwyXSJ9JywgJyQucmVjJyAJcmV0dXJuaW5nIGludDRyYW5n ZSBrZWVwIHF1b3RlcyBlcnJvciBvbiBlcnJvcik7CitFUlJPUjogIG1hbGZvcm1lZCByYW5nZSBs aXRlcmFsOiAiIlsxLDJdIiIKK0RFVEFJTDogIE1pc3NpbmcgbGVmdCBwYXJlbnRoZXNpcyBvciBi cmFja2V0LgorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nKTsKKyBqc29uX3F1 ZXJ5IAorLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25i ICdbXScsICckWypdJyBOVUxMIE9OIEVNUFRZKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBFTVBU WSBPTiBFTVBUWSk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIFtdCisoMSByb3cpCisK K1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBFTVBUWSBBUlJBWSBPTiBFTVBU WSk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIFtdCisoMSByb3cpCisKK1NFTEVDVCBK U09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBFTVBUWSBPQkpFQ1QgT04gRU1QVFkpOworIGpz b25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyB7fQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVS WShqc29uYiAnW10nLCAnJFsqXScgRVJST1IgT04gRU1QVFkpOworRVJST1I6ICBubyBTUUwvSlNP TiBpdGVtCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgREVGQVVMVCAnImVt cHR5IicgT04gRU1QVFkpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAiZW1wdHkiCiso MSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBFUlJPUiBPTiBF TVBUWSBOVUxMIE9OIEVSUk9SKTsKK0VSUk9SOiAgbm8gU1FML0pTT04gaXRlbQorU0VMRUNUIEpT T05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9OIEVNUFRZIEVNUFRZIEFSUkFZIE9O IEVSUk9SKTsKK0VSUk9SOiAgbm8gU1FML0pTT04gaXRlbQorU0VMRUNUIEpTT05fUVVFUlkoanNv bmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9OIEVNUFRZIEVNUFRZIE9CSkVDVCBPTiBFUlJPUik7CitF UlJPUjogIG5vIFNRTC9KU09OIGl0ZW0KK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICck WypdJyBFUlJPUiBPTiBFTVBUWSBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIG5vIFNRTC9KU09O IGl0ZW0KK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBFUlJPUiBPTiBFUlJP Uik7CitFUlJPUjogIG5vIFNRTC9KU09OIGl0ZW0KK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdb MSwyXScsICckWypdJyBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIEpTT04gcGF0aCBleHByZXNz aW9uIGluIEpTT05fUVVFUlkgc2hvdWxkIHJldHVybiBzaW5nbGV0b24gaXRlbSB3aXRob3V0IHdy YXBwZXIKK0hJTlQ6ICBVc2UgV0lUSCBXUkFQUEVSIGNsYXVzZSB0byB3cmFwIFNRTC9KU09OIGl0 ZW0gc2VxdWVuY2UgaW50byBhcnJheS4KK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScs ICckWypdJyBERUZBVUxUICciZW1wdHkiJyBPTiBFUlJPUik7CisganNvbl9xdWVyeSAKKy0tLS0t LS0tLS0tLQorICJlbXB0eSIKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sx LDJdJywgJyQnIFJFVFVSTklORyBqc29uKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisg WzEsIDJdCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckJyBS RVRVUk5JTkcganNvbiBGT1JNQVQgSlNPTik7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQor IFsxLCAyXQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcg UkVUVVJOSU5HIGpzb25iKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgWzEsIDJdCiso MSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckJyBSRVRVUk5JTkcg anNvbmIgRk9STUFUIEpTT04pOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBbMSwgMl0K KygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklO RyB0ZXh0KTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgWzEsIDJdCisoMSByb3cpCisK K1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckJyBSRVRVUk5JTkcgY2hhcigxMCkp OworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBbMSwgMl0gICAgCisoMSByb3cpCisKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckJyBSRVRVUk5JTkcgY2hhcigzKSk7Cisg anNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIFsxLAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9R VUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIHRleHQgRk9STUFUIEpTT04pOworIGpz b25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBbMSwgMl0KKygxIHJvdykKKworU0VMRUNUIEpTT05f UVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBieXRlYSk7CisgICBqc29uX3F1ZXJ5 ICAgCistLS0tLS0tLS0tLS0tLS0tCisgXHg1YjMxMmMyMDMyNWQKKygxIHJvdykKKworU0VMRUNU IEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBieXRlYSBGT1JNQVQgSlNP Tik7CisgICBqc29uX3F1ZXJ5ICAgCistLS0tLS0tLS0tLS0tLS0tCisgXHg1YjMxMmMyMDMyNWQK KygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyRbKl0nIFJFVFVS TklORyBieXRlYSBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOworRVJST1I6ICBjYW5ub3QgY2FzdCBi ZWhhdmlvciBleHByZXNzaW9uIG9mIHR5cGUganNvbmIgdG8gYnl0ZWEKK0xJTkUgMTogLi4uIEpT T05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyRbKl0nIFJFVFVSTklORyBieXRlYSBFTVBUWSBPQkpF Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyRbKl0nIFJFVFVS TklORyBieXRlYSBGT1JNQVQgSlNPTiBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOworRVJST1I6ICBj YW5ub3QgY2FzdCBiZWhhdmlvciBleHByZXNzaW9uIG9mIHR5cGUganNvbmIgdG8gYnl0ZWEKK0xJ TkUgMTogLi4uanNvbmIgJ1sxLDJdJywgJyRbKl0nIFJFVFVSTklORyBieXRlYSBGT1JNQVQgSlNP TiBFTVBUWSBPQkpFLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywg JyRbKl0nIFJFVFVSTklORyBqc29uIEVNUFRZIE9CSkVDVCBPTiBFUlJPUik7CisganNvbl9xdWVy eSAKKy0tLS0tLS0tLS0tLQorIHt9CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25i ICdbMSwyXScsICckWypdJyBSRVRVUk5JTkcganNvbmIgRU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsK KyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisge30KKygxIHJvdykKKworU0VMRUNUIEpTT05f UVVFUlkoanNvbmIgJ1szLDRdJywgJyRbKl0nIFJFVFVSTklORyBiaWdpbnRbXSBFTVBUWSBPQkpF Q1QgT04gRVJST1IpOworRVJST1I6ICBjYW5ub3QgY2FzdCBiZWhhdmlvciBleHByZXNzaW9uIG9m IHR5cGUganNvbmIgdG8gYmlnaW50W10KK0xJTkUgMTogLi4uT05fUVVFUlkoanNvbmIgJ1szLDRd JywgJyRbKl0nIFJFVFVSTklORyBiaWdpbnRbXSBFTVBUWSBPQkpFLi4uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNU IEpTT05fUVVFUlkoanNvbmIgJyJbMyw0XSInLCAnJFsqXScgUkVUVVJOSU5HIGJpZ2ludFtdIEVN UFRZIE9CSkVDVCBPTiBFUlJPUik7CitFUlJPUjogIGNhbm5vdCBjYXN0IGJlaGF2aW9yIGV4cHJl c3Npb24gb2YgdHlwZSBqc29uYiB0byBiaWdpbnRbXQorTElORSAxOiAuLi5fUVVFUlkoanNvbmIg JyJbMyw0XSInLCAnJFsqXScgUkVUVVJOSU5HIGJpZ2ludFtdIEVNUFRZIE9CSkUuLi4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CistLSBDb2VyY2lvbiBmYWlscyB3aXRoIHF1b3RlcyBvbgorU0VMRUNUIEpTT05fUVVFUlkoanNv bmIgJyIxMjMuMSInLCAnJCcgUkVUVVJOSU5HIGludDIgZXJyb3Igb24gZXJyb3IpOworRVJST1I6 ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBzbWFsbGludDogIiIxMjMuMSIiCitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMy4xIicsICckJyBSRVRVUk5JTkcgaW50NCBlcnJvciBv biBlcnJvcik7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGludGVnZXI6 ICIiMTIzLjEiIgorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyIxMjMuMSInLCAnJCcgUkVUVVJO SU5HIGludDggZXJyb3Igb24gZXJyb3IpOworRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBm b3IgdHlwZSBiaWdpbnQ6ICIiMTIzLjEiIgorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyIxMjMu MSInLCAnJCcgUkVUVVJOSU5HIGJvb2wgZXJyb3Igb24gZXJyb3IpOworRVJST1I6ICBpbnZhbGlk IGlucHV0IHN5bnRheCBmb3IgdHlwZSBib29sZWFuOiAiIjEyMy4xIiIKK1NFTEVDVCBKU09OX1FV RVJZKGpzb25iICciMTIzLjEiJywgJyQnIFJFVFVSTklORyBudW1lcmljIGVycm9yIG9uIGVycm9y KTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgbnVtZXJpYzogIiIxMjMu MSIiCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMy4xIicsICckJyBSRVRVUk5JTkcgcmVh bCBlcnJvciBvbiBlcnJvcik7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBl IHJlYWw6ICIiMTIzLjEiIgorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyIxMjMuMSInLCAnJCcg UkVUVVJOSU5HIGZsb2F0OCBlcnJvciBvbiBlcnJvcik7CitFUlJPUjogIGludmFsaWQgaW5wdXQg c3ludGF4IGZvciB0eXBlIGRvdWJsZSBwcmVjaXNpb246ICIiMTIzLjEiIgorLS0gRmluZSB3aXRo IE9NSVQgUVVPVEVTCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMy4xIicsICckJyBSRVRV Uk5JTkcgaW50MiBvbWl0IHF1b3RlcyBlcnJvciBvbiBlcnJvcik7CitFUlJPUjogIGludmFsaWQg aW5wdXQgc3ludGF4IGZvciB0eXBlIHNtYWxsaW50OiAiMTIzLjEiCitTRUxFQ1QgSlNPTl9RVUVS WShqc29uYiAnIjEyMy4xIicsICckJyBSRVRVUk5JTkcgZmxvYXQ4IG9taXQgcXVvdGVzIGVycm9y IG9uIGVycm9yKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgICAgICAxMjMuMQorKDEg cm93KQorCistLSBSRVRVR05JTkcgcHNldWRvLXR5cGVzIG5vdCBhbGxvd2VkCitTRUxFQ1QgSlNP Tl9RVUVSWShqc29uYiAnWzMsNF0nLCAnJFsqXScgUkVUVVJOSU5HIGFueWFycmF5IEVNUFRZIE9C SkVDVCBPTiBFUlJPUik7CitFUlJPUjogIHJldHVybmluZyBwc2V1ZG8tdHlwZXMgaXMgbm90IHN1 cHBvcnRlZCBpbiBTUUwvSlNPTiBmdW5jdGlvbnMKK1NFTEVDVAorCXgsIHksCisJSlNPTl9RVUVS WSgKKwkJanNvbmIgJ1sxLDIsMyw0LDUsbnVsbF0nLAorCQknJFsqXSA/IChAID49ICR4ICYmIEAg PD0gJHkpJworCQlQQVNTSU5HIHggQVMgeCwgeSBBUyB5CisJCVdJVEggQ09ORElUSU9OQUwgV1JB UFBFUgorCQlFTVBUWSBBUlJBWSBPTiBFTVBUWQorCSkgbGlzdAorRlJPTQorCWdlbmVyYXRlX3Nl cmllcygwLCA0KSB4LAorCWdlbmVyYXRlX3NlcmllcygwLCA0KSB5OworIHggfCB5IHwgICAgIGxp c3QgICAgIAorLS0tKy0tLSstLS0tLS0tLS0tLS0tLQorIDAgfCAwIHwgW10KKyAwIHwgMSB8IFsx XQorIDAgfCAyIHwgWzEsIDJdCisgMCB8IDMgfCBbMSwgMiwgM10KKyAwIHwgNCB8IFsxLCAyLCAz LCA0XQorIDEgfCAwIHwgW10KKyAxIHwgMSB8IFsxXQorIDEgfCAyIHwgWzEsIDJdCisgMSB8IDMg fCBbMSwgMiwgM10KKyAxIHwgNCB8IFsxLCAyLCAzLCA0XQorIDIgfCAwIHwgW10KKyAyIHwgMSB8 IFtdCisgMiB8IDIgfCBbMl0KKyAyIHwgMyB8IFsyLCAzXQorIDIgfCA0IHwgWzIsIDMsIDRdCisg MyB8IDAgfCBbXQorIDMgfCAxIHwgW10KKyAzIHwgMiB8IFtdCisgMyB8IDMgfCBbM10KKyAzIHwg NCB8IFszLCA0XQorIDQgfCAwIHwgW10KKyA0IHwgMSB8IFtdCisgNCB8IDIgfCBbXQorIDQgfCAz IHwgW10KKyA0IHwgNCB8IFs0XQorKDI1IHJvd3MpCisKKy0tIHJlY29yZCB0eXBlIHJldHVybmlu ZyB3aXRoIHF1b3RlcyBiZWhhdmlvci4KK0NSRUFURSBUWVBFIGNvbXBfYWJjIEFTIChhIHRleHQs IGIgaW50LCBjIHRpbWVzdGFtcCk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6ICIo YWJjLDQyLDAxLjAyLjIwMDMpIn0nLCAnJC5yZWMnIHJldHVybmluZyBjb21wX2FiYyBvbWl0IHF1 b3Rlcyk7CisgICAgICAgICAgICAganNvbl9xdWVyeSAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKGFiYyw0MiwiVGh1IEphbiAwMiAwMDowMDow MCAyMDAzIikKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAiKGFi Yyw0MiwwMS4wMi4yMDAzKSJ9JywgJyQucmVjJyByZXR1cm5pbmcgY29tcF9hYmMga2VlcCBxdW90 ZXMpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIEpT T05fUVVFUlkoanNvbmIneyJyZWMiOiAiKGFiYyw0MiwwMS4wMi4yMDAzKSJ9JywgJyQucmVjJyBy ZXR1cm5pbmcgY29tcF9hYmMga2VlcCBxdW90ZXMgZXJyb3Igb24gZXJyb3IpOworRVJST1I6ICBj YW5ub3QgY2FsbCBwb3B1bGF0ZV9jb21wb3NpdGUgb24gYSBzY2FsYXIKK0RST1AgVFlQRSBjb21w X2FiYzsKKy0tIEV4dGVuc2lvbjogcmVjb3JkIHR5cGVzIHJldHVybmluZworQ1JFQVRFIFRZUEUg c3FsanNvbmJfcmVjIEFTIChhIGludCwgdCB0ZXh0LCBqcyBqc29uLCBqYiBqc29uYiwganNhIGpz b25bXSk7CitDUkVBVEUgVFlQRSBzcWxqc29uYl9yZWNhIEFTIChyZWNhIHNxbGpzb25iX3JlY1td KTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbeyJhIjogMSwgImIiOiAiZm9vIiwgInQiOiAi YWFhIiwgImpzIjogWzEsICIyIiwge31dLCAiamIiOiB7IngiOiBbMSwgIjIiLCB7fV19fSwgIHsi YSI6IDJ9XScsICckWzBdJyBSRVRVUk5JTkcgc3FsanNvbmJfcmVjKTsKKyAgICAgICAgICAgICAg ICAgICAgIGpzb25fcXVlcnkgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICgxLGFhYSwiWzEsICIiMiIi LCB7fV0iLCJ7IiJ4IiI6IFsxLCAiIjIiIiwge31dfSIsKQorKDEgcm93KQorCitTRUxFQ1QgSlNP Tl9RVUVSWShqc29uYiAnW3siYSI6ICJhIiwgImIiOiAiZm9vIiwgInQiOiAiYWFhIiwgImpzIjog WzEsICIyIiwge31dLCAiamIiOiB7IngiOiBbMSwgIjIiLCB7fV19fSwgIHsiYSI6IDJ9XScsICck WzBdJyBSRVRVUk5JTkcgc3FsanNvbmJfcmVjIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgaW52 YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogImEiCitTRUxFQ1QgSlNPTl9RVUVS WShqc29uYiAnW3siYSI6ICJhIiwgImIiOiAiZm9vIiwgInQiOiAiYWFhIiwgImpzIjogWzEsICIy Iiwge31dLCAiamIiOiB7IngiOiBbMSwgIjIiLCB7fV19fSwgIHsiYSI6IDJ9XScsICckWzBdJyBS RVRVUk5JTkcgc3FsanNvbmJfcmVjKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKK1NFTEVDVCAqIEZST00gdW5uZXN0KChKU09OX1FVRVJZKGpzb25iICd7ImpzYSI6 ICBbeyJhIjogMSwgImIiOiBbImZvbyJdfSwgeyJhIjogMiwgImMiOiB7fX0sIDEyM119JywgJyQn IFJFVFVSTklORyBzcWxqc29uYl9yZWMpKS5qc2EpOworICAgICAgICAgdW5uZXN0ICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7ImEiOiAxLCAiYiI6IFsiZm9vIl19CisgeyJh IjogMiwgImMiOiB7fX0KKyAxMjMKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gdW5uZXN0KChK U09OX1FVRVJZKGpzb25iICd7InJlY2EiOiBbeyJhIjogMSwgInQiOiBbImZvbyIsIFtdXX0sIHsi YSI6IDIsICJqYiI6IFt7fSwgdHJ1ZV19XX0nLCAnJCcgUkVUVVJOSU5HIHNxbGpzb25iX3JlY2Ep KS5yZWNhKTsKKyBhIHwgICAgICB0ICAgICAgfCBqcyB8ICAgICBqYiAgICAgfCBqc2EgCistLS0r LS0tLS0tLS0tLS0tLSstLS0tKy0tLS0tLS0tLS0tLSstLS0tLQorIDEgfCBbImZvbyIsIFtdXSB8 ICAgIHwgICAgICAgICAgICB8IAorIDIgfCAgICAgICAgICAgICB8ICAgIHwgW3t9LCB0cnVlXSB8 IAorKDIgcm93cykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1t7ImEiOiAxLCAiYiI6ICJm b28iLCAidCI6ICJhYWEiLCAianMiOiBbMSwgIjIiLCB7fV0sICJqYiI6IHsieCI6IFsxLCAiMiIs IHt9XX19LCAgeyJhIjogMn1dJywgJyRbMF0nIFJFVFVSTklORyBqc29ucGF0aCk7CisganNvbl9x dWVyeSAKKy0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29u YiAnW3siYSI6IDEsICJiIjogImZvbyIsICJ0IjogImFhYSIsICJqcyI6IFsxLCAiMiIsIHt9XSwg ImpiIjogeyJ4IjogWzEsICIyIiwge31dfX0sICB7ImEiOiAyfV0nLCAnJFswXScgUkVUVVJOSU5H IGpzb25wYXRoIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5l YXIgInsiIG9mIGpzb25wYXRoIGlucHV0CistLSBFeHRlbnNpb246IGFycmF5IHR5cGVzIHJldHVy bmluZworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDIsbnVsbCwiMyJdJywgJyRbKl0nIFJF VFVSTklORyBpbnRbXSBXSVRIIFdSQVBQRVIpOworICBqc29uX3F1ZXJ5ICAKKy0tLS0tLS0tLS0t LS0tCisgezEsMixOVUxMLDN9CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdb MSwyLG51bGwsImEiXScsICckWypdJyBSRVRVUk5JTkcgaW50W10gV0lUSCBXUkFQUEVSIEVSUk9S IE9OIEVSUk9SKTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdl cjogImEiCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMixudWxsLCJhIl0nLCAnJFsqXScg UkVUVVJOSU5HIGludFtdIFdJVEggV1JBUFBFUik7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHVubmVzdChKU09OX1FVRVJZKGpzb25iICdb eyJhIjogMSwgInQiOiBbImZvbyIsIFtdXX0sIHsiYSI6IDIsICJqYiI6IFt7fSwgdHJ1ZV19XScs ICckJyBSRVRVUk5JTkcgc3FsanNvbmJfcmVjW10pKTsKKyBhIHwgICAgICB0ICAgICAgfCBqcyB8 ICAgICBqYiAgICAgfCBqc2EgCistLS0rLS0tLS0tLS0tLS0tLSstLS0tKy0tLS0tLS0tLS0tLSst LS0tLQorIDEgfCBbImZvbyIsIFtdXSB8ICAgIHwgICAgICAgICAgICB8IAorIDIgfCAgICAgICAg ICAgICB8ICAgIHwgW3t9LCB0cnVlXSB8IAorKDIgcm93cykKKworLS0gRXh0ZW5zaW9uOiBkb21h aW4gdHlwZXMgcmV0dXJuaW5nCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAneyJhIjogMX0nLCAn JC5hJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50X25vdF9udWxsKTsKKyBqc29uX3F1ZXJ5IAorLS0t LS0tLS0tLS0tCisgICAgICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29u YiAneyJhIjogMX0nLCAnJC5iJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50X25vdF9udWxsKTsKKyBq c29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgICAgICAgICAgIAorKDEgcm93KQorCitTRUxFQ1Qg SlNPTl9RVUVSWShqc29uYiAneyJhIjogMX0nLCAnJC5iJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50 X25vdF9udWxsIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgbm8gU1FML0pTT04gaXRlbQorLS0g VGVzdCB0aW1lc3RhbXB0eiBwYXNzaW5nIGFuZCBvdXRwdXQKK1NFTEVDVCBKU09OX1FVRVJZKGpz b25iICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1 NiArMTAnIEFTIHRzKTsKKyAgICAgICAgIGpzb25fcXVlcnkgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICIyMDE4LTAyLTIxVDAyOjM0OjU2KzAwOjAwIgorKDEgcm93 KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0 YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcganNvbik7Cisg ICAgICAgICBqc29uX3F1ZXJ5ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAiMjAxOC0wMi0yMVQwMjozNDo1NiswMDowMCIKKygxIHJvdykKKworU0VMRUNUIEpTT05f UVVFUlkoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIx IDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIGpzb25iKTsKKyAgICAgICAgIGpzb25fcXVl cnkgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICIyMDE4LTAyLTIx VDAyOjM0OjU2KzAwOjAwIgorKDEgcm93KQorCistLSBUZXN0IGNvbnN0cmFpbnRzCitDUkVBVEUg VEFCTEUgdGVzdF9qc29uYl9jb25zdHJhaW50cyAoCisJanMgdGV4dCwKKwlpIGludCwKKwl4IGpz b25iIERFRkFVTFQgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJFsqXScgV0lUSCBXUkFQUEVS KQorCUNPTlNUUkFJTlQgdGVzdF9qc29uYl9jb25zdHJhaW50MQorCQlDSEVDSyAoanMgSVMgSlNP TikKKwlDT05TVFJBSU5UIHRlc3RfanNvbmJfY29uc3RyYWludDIKKwkJQ0hFQ0sgKEpTT05fRVhJ U1RTKGpzOjpqc29uYiwgJyQuYScgUEFTU0lORyBpICsgNSBBUyBpbnQsIGk6OnRleHQgQVMgdHh0 LCBhcnJheVsxLDIsM10gYXMgYXJyKSkKKwlDT05TVFJBSU5UIHRlc3RfanNvbmJfY29uc3RyYWlu dDMKKwkJQ0hFQ0sgKEpTT05fVkFMVUUoanM6Ompzb25iLCAnJC5hJyBSRVRVUk5JTkcgaW50IERF RkFVTFQgJzEyJyBPTiBFTVBUWSBFUlJPUiBPTiBFUlJPUikgPiBpKQorCUNPTlNUUkFJTlQgdGVz dF9qc29uYl9jb25zdHJhaW50NAorCQlDSEVDSyAoSlNPTl9RVUVSWShqczo6anNvbmIsICckLmEn IFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUiBFTVBUWSBPQkpFQ1QgT04gRVJST1IpIDwganNvbmIg J1sxMF0nKQorCUNPTlNUUkFJTlQgdGVzdF9qc29uYl9jb25zdHJhaW50NQorCQlDSEVDSyAoSlNP Tl9RVUVSWShqczo6anNvbmIsICckLmEnIFJFVFVSTklORyBjaGFyKDUpIE9NSVQgUVVPVEVTIEVN UFRZIEFSUkFZIE9OIEVNUFRZKSA+ICAnYScgQ09MTEFURSAiQyIpCispOworXGQgdGVzdF9qc29u Yl9jb25zdHJhaW50cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg VGFibGUgInB1YmxpYy50ZXN0X2pzb25iX2NvbnN0cmFpbnRzIgorIENvbHVtbiB8ICBUeXBlICAg fCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRGVmYXVsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisganMgICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgaSAgICAgIHwg aW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgeCAgICAgIHwganNvbmIgICB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgSlNPTl9RVUVSWSgnWzEsIDJdJzo6anNvbmIsICckWypdJyBS RVRVUk5JTkcganNvbmIgV0lUSCBVTkNPTkRJVElPTkFMIFdSQVBQRVIpCitDaGVjayBjb25zdHJh aW50czoKKyAgICAidGVzdF9qc29uYl9jb25zdHJhaW50MSIgQ0hFQ0sgKGpzIElTIEpTT04pCisg ICAgInRlc3RfanNvbmJfY29uc3RyYWludDIiIENIRUNLIChKU09OX0VYSVNUUyhqczo6anNvbmIs ICckLiJhIicgUEFTU0lORyBpICsgNSBBUyBpbnQsIGk6OnRleHQgQVMgdHh0LCBBUlJBWVsxLCAy LCAzXSBBUyBhcnIpKQorICAgICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnQzIiBDSEVDSyAoSlNPTl9W QUxVRShqczo6anNvbmIsICckLiJhIicgUkVUVVJOSU5HIGludGVnZXIgREVGQVVMVCAxMiBPTiBF TVBUWSBFUlJPUiBPTiBFUlJPUikgPiBpKQorICAgICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnQ0IiBD SEVDSyAoSlNPTl9RVUVSWShqczo6anNvbmIsICckLiJhIicgUkVUVVJOSU5HIGpzb25iIFdJVEgg Q09ORElUSU9OQUwgV1JBUFBFUiBFTVBUWSBPQkpFQ1QgT04gRVJST1IpIDwgJ1sxMF0nOjpqc29u YikKKyAgICAidGVzdF9qc29uYl9jb25zdHJhaW50NSIgQ0hFQ0sgKEpTT05fUVVFUlkoanM6Ompz b25iLCAnJC4iYSInIFJFVFVSTklORyBjaGFyYWN0ZXIoNSkgT01JVCBRVU9URVMgRU1QVFkgQVJS QVkgT04gRU1QVFkpID4gKCdhJzo6YnBjaGFyIENPTExBVEUgIkMiKSkKKworU0VMRUNUIGNoZWNr X2NsYXVzZQorRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEuY2hlY2tfY29uc3RyYWludHMKK1dIRVJF IGNvbnN0cmFpbnRfbmFtZSBMSUtFICd0ZXN0X2pzb25iX2NvbnN0cmFpbnQlJworT1JERVIgQlkg MTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNoZWNrX2NsYXVzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKEpTT05fUVVFUlkoKGpzKTo6anNvbmIsICckLiJhIicgUkVU VVJOSU5HIGNoYXJhY3Rlcig1KSBPTUlUIFFVT1RFUyBFTVBUWSBBUlJBWSBPTiBFTVBUWSkgPiAo J2EnOjpicGNoYXIgQ09MTEFURSAiQyIpKQorIChKU09OX1FVRVJZKChqcyk6Ompzb25iLCAnJC4i YSInIFJFVFVSTklORyBqc29uYiBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIgRU1QVFkgT0JKRUNU IE9OIEVSUk9SKSA8ICdbMTBdJzo6anNvbmIpCisgKEpTT05fVkFMVUUoKGpzKTo6anNvbmIsICck LiJhIicgUkVUVVJOSU5HIGludGVnZXIgREVGQVVMVCAxMiBPTiBFTVBUWSBFUlJPUiBPTiBFUlJP UikgPiBpKQorIChqcyBJUyBKU09OKQorIEpTT05fRVhJU1RTKChqcyk6Ompzb25iLCAnJC4iYSIn IFBBU1NJTkcgKGkgKyA1KSBBUyBpbnQsIChpKTo6dGV4dCBBUyB0eHQsIEFSUkFZWzEsIDIsIDNd IEFTIGFycikKKyg1IHJvd3MpCisKK1NFTEVDVCBwZ19nZXRfZXhwcihhZGJpbiwgYWRyZWxpZCkK K0ZST00gcGdfYXR0cmRlZgorV0hFUkUgYWRyZWxpZCA9ICd0ZXN0X2pzb25iX2NvbnN0cmFpbnRz Jzo6cmVnY2xhc3MKK09SREVSIEJZIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBKU09OX1FVRVJZKCdbMSwgMl0nOjpqc29uYiwgJyRbKl0nIFJF VFVSTklORyBqc29uYiBXSVRIIFVOQ09ORElUSU9OQUwgV1JBUFBFUikKKygxIHJvdykKKworSU5T RVJUIElOVE8gdGVzdF9qc29uYl9jb25zdHJhaW50cyBWQUxVRVMgKCcnLCAxKTsKK0VSUk9SOiAg bmV3IHJvdyBmb3IgcmVsYXRpb24gInRlc3RfanNvbmJfY29uc3RyYWludHMiIHZpb2xhdGVzIGNo ZWNrIGNvbnN0cmFpbnQgInRlc3RfanNvbmJfY29uc3RyYWludDEiCitERVRBSUw6ICBGYWlsaW5n IHJvdyBjb250YWlucyAoLCAxLCBbMSwgMl0pLgorSU5TRVJUIElOVE8gdGVzdF9qc29uYl9jb25z dHJhaW50cyBWQUxVRVMgKCcxJywgMSk7CitFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJ0 ZXN0X2pzb25iX2NvbnN0cmFpbnRzIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJ0ZXN0X2pz b25iX2NvbnN0cmFpbnQyIgorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKDEsIDEsIFsx LCAyXSkuCitJTlNFUlQgSU5UTyB0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIFZBTFVFUyAoJ1tdJyk7 CitFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIiB2 aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnQyIgorREVUQUlM OiAgRmFpbGluZyByb3cgY29udGFpbnMgKFtdLCBudWxsLCBbMSwgMl0pLgorSU5TRVJUIElOVE8g dGVzdF9qc29uYl9jb25zdHJhaW50cyBWQUxVRVMgKCd7ImIiOiAxfScsIDEpOworRVJST1I6ICBu ZXcgcm93IGZvciByZWxhdGlvbiAidGVzdF9qc29uYl9jb25zdHJhaW50cyIgdmlvbGF0ZXMgY2hl Y2sgY29uc3RyYWludCAidGVzdF9qc29uYl9jb25zdHJhaW50MiIKK0RFVEFJTDogIEZhaWxpbmcg cm93IGNvbnRhaW5zICh7ImIiOiAxfSwgMSwgWzEsIDJdKS4KK0lOU0VSVCBJTlRPIHRlc3RfanNv bmJfY29uc3RyYWludHMgVkFMVUVTICgneyJhIjogMX0nLCAxKTsKK0VSUk9SOiAgbmV3IHJvdyBm b3IgcmVsYXRpb24gInRlc3RfanNvbmJfY29uc3RyYWludHMiIHZpb2xhdGVzIGNoZWNrIGNvbnN0 cmFpbnQgInRlc3RfanNvbmJfY29uc3RyYWludDMiCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250 YWlucyAoeyJhIjogMX0sIDEsIFsxLCAyXSkuCitJTlNFUlQgSU5UTyB0ZXN0X2pzb25iX2NvbnN0 cmFpbnRzIFZBTFVFUyAoJ3siYSI6IDd9JywgMSk7CitFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0 aW9uICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJ0 ZXN0X2pzb25iX2NvbnN0cmFpbnQ1IgorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKHsi YSI6IDd9LCAxLCBbMSwgMl0pLgorSU5TRVJUIElOVE8gdGVzdF9qc29uYl9jb25zdHJhaW50cyBW QUxVRVMgKCd7ImEiOiAxMH0nLCAxKTsKK0VSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInRl c3RfanNvbmJfY29uc3RyYWludHMiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInRlc3RfanNv bmJfY29uc3RyYWludDQiCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoeyJhIjogMTB9 LCAxLCBbMSwgMl0pLgorRFJPUCBUQUJMRSB0ZXN0X2pzb25iX2NvbnN0cmFpbnRzOworLS0gVGVz dCBtdXRhYmlsaWx5IG9mIHF1ZXJ5IGZ1bmN0aW9ucworQ1JFQVRFIFRBQkxFIHRlc3RfanNvbmJf bXV0YWJpbGl0eShqcyBqc29uYiwgYiBpbnQpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJf bXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQnKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9q c29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hWzBdJykpOworQ1JFQVRFIElOREVY IE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQudGltZSgpJykpOwor RVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1V VEFCTEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlko anMsICckLmRhdGUoKScpKTsKK0VSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24g bXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRh YmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC50aW1lX3R6KCknKSk7CitFUlJPUjogIGZ1bmN0aW9u cyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRFIElO REVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQudGltZXN0YW1w KCknKSk7CitFUlJPUjogIGZ1bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFy a2VkIElNTVVUQUJMRQorQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNP Tl9RVUVSWShqcywgJyQudGltZXN0YW1wX3R6KCknKSk7CitFUlJPUjogIGZ1bmN0aW9ucyBpbiBp bmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRFIElOREVYIE9O IHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChALmRhdGUoKSA8 ICQudGltZV90eigpKScpKTsKK0VSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24g bXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRh YmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAuZGF0ZSgpIDwgJC50aW1lKCkpJykpOwor RVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1V VEFCTEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlko anMsICckLmEgPyAoQC50aW1lKCkgPCAkLnRpbWUoKSknKSk7CitFUlJPUjogIGZ1bmN0aW9ucyBp biBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRFIElOREVY IE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChALnRpbWUo KSA8ICQudGltZV90eigpKScpKTsKK0VSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Np b24gbXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9t dXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAudGltZXN0YW1wKCkgPCAkLnRpbWVz dGFtcF90eigpKScpKTsKK0VSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24gbXVz dCBiZSBtYXJrZWQgSU1NVVRBQkxFCitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmls aXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAudGltZXN0YW1wX3R6KCkgPCAkLnRpbWVzdGFt cF90eigpKScpKTsKK0VSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24gbXVzdCBi ZSBtYXJrZWQgSU1NVVRBQkxFCitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5 IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAudGltZSgpIDwgJC5kYXRldGltZSgiSEg6TUkgVFpI IikpJykpOworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1h cmtlZCBJTU1VVEFCTEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpT T05fUVVFUlkoanMsICckLmEgPyAoQC5kYXRlKCkgPCAkLmRhdGV0aW1lKCJISDpNSSBUWkgiKSkn KSk7CitFUlJPUjogIGZ1bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2Vk IElNTVVUQUJMRQorQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9R VUVSWShqcywgJyQuYSA/IChALnRpbWVzdGFtcCgpIDwgJC5kYXRldGltZSgiSEg6TUkgVFpIIikp JykpOworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtl ZCBJTU1VVEFCTEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05f UVVFUlkoanMsICckLmEgPyAoQC50aW1lc3RhbXAoKSA8ICQuZGF0ZXRpbWUoIkhIOk1JIikpJykp OworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJ TU1VVEFCTEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVF UlkoanMsICckLmEgPyAoQC50aW1lc3RhbXBfdHooKSA8ICQuZGF0ZXRpbWUoIkhIOk1JIFRaSCIp KScpKTsKK0VSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJr ZWQgSU1NVVRBQkxFCitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09O X1FVRVJZKGpzLCAnJC5hID8gKEAudGltZXN0YW1wX3R6KCkgPCAkLmRhdGV0aW1lKCJISDpNSSIp KScpKTsKK0VSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJr ZWQgSU1NVVRBQkxFCitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09O X1FVRVJZKGpzLCAnJC5kYXRlKCkgPCAkeCcgUEFTU0lORyAnMTI6MzQnOjp0aW1ldHogQVMgeCkp OworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJ TU1VVEFCTEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVF UlkoanMsICckLmRhdGUoKSA8ICR4JyBQQVNTSU5HICcxMjM0Jzo6aW50IEFTIHgpKTsKK0VSUk9S OiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxF CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAn JC5hID8gKEAudGltZXN0YW1wKDIpIDwgJC50aW1lc3RhbXAoMykpJykpOworRVJST1I6ICBmdW5j dGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1VVEFCTEUKK0NSRUFU RSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0 aW1lKCknKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FV RVJZKGpzLCAnJC5hID8gKEAgPCAkLmRhdGV0aW1lKCkpJykpOworQ1JFQVRFIElOREVYIE9OIHRl c3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChALmRhdGV0aW1lKCkg PCAkLmRhdGV0aW1lKCkpJykpOworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lv biBtdXN0IGJlIG1hcmtlZCBJTU1VVEFCTEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211 dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmEgPyAoQC5kYXRldGltZSgpIDwgJC5kYXRldGlt ZSgiSEg6TUkgVFpIIikpJykpOworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lv biBtdXN0IGJlIG1hcmtlZCBJTU1VVEFCTEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211 dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmEgPyAoQC5kYXRldGltZSgiSEg6TUkgVFpIIikg PCAkLmRhdGV0aW1lKCJISDpNSSBUWkgiKSknKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29u Yl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAuZGF0ZXRpbWUoIkhIOk1JIikg PCAkLmRhdGV0aW1lKCJZWS1NTS1ERCBISDpNSSIpKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0 X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmEgPyAoQC5kYXRldGltZSgiSEg6 TUkgVFpIIikgPCAkLmRhdGV0aW1lKCJZWS1NTS1ERCBISDpNSSIpKScpKTsKK0VSUk9SOiAgZnVu Y3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCitDUkVB VEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRl dGltZSgiSEg6TUkgVFpIIikgPCAkeCcgUEFTU0lORyAnMTI6MzQnOjp0aW1ldHogQVMgeCkpOwor Q1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQu ZGF0ZXRpbWUoIkhIOk1JIFRaSCIpIDwgJHknIFBBU1NJTkcgJzEyOjM0Jzo6dGltZXR6IEFTIHgp KTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMs ICckLmRhdGV0aW1lKCkgPCAkeCcgUEFTU0lORyAnMTI6MzQnOjp0aW1ldHogQVMgeCkpOworRVJS T1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1VVEFC TEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMs ICckLmRhdGV0aW1lKCkgPCAkeCcgUEFTU0lORyAnMTIzNCc6OmludCBBUyB4KSk7CitDUkVBVEUg SU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRldGlt ZSgpID8gKEAgPT0gJHgpJyBQQVNTSU5HICcxMjozNCc6OnRpbWUgQVMgeCkpOworRVJST1I6ICBm dW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1VVEFCTEUKK0NS RUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRh dGV0aW1lKCJZWS1NTS1ERCIpID8gKEAgPT0gJHgpJyBQQVNTSU5HICcyMDIwLTA3LTE0Jzo6ZGF0 ZSBBUyB4KSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FV RVJZKGpzLCAnJFsxLCAkLmEgPyAoQC5kYXRldGltZSgpID09ICR4KV0nIFBBU1NJTkcgJzEyOjM0 Jzo6dGltZSBBUyB4KSk7CitFUlJPUjogIGZ1bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11 c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJp bGl0eSAoSlNPTl9RVUVSWShqcywgJyRbMSwgMCB0byAkLmEgPyAoQC5kYXRldGltZSgpID09ICR4 KV0nIFBBU1NJTkcgJzEyOjM0Jzo6dGltZSBBUyB4KSk7CitFUlJPUjogIGZ1bmN0aW9ucyBpbiBp bmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRFIElOREVYIE9O IHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyRbMSwgJC5hID8gKEAuZGF0 ZXRpbWUoIkhIOk1JIikgPT0gJHgpXScgUEFTU0lORyAnMTI6MzQnOjp0aW1lIEFTIHgpKTsKK0NS RUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fVkFMVUUoanMsICckJyBE RUZBVUxUIHJhbmRvbSgpOjppbnQgT04gRVJST1IpKTsKK0VSUk9SOiAgZnVuY3Rpb25zIGluIGlu ZGV4IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCistLSBERUZBVUxUIGV4cHJl c3Npb24KK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHJldF9zZXRpbnQoKSBSRVRVUk5TIFNF VE9GIGludGVnZXIgQVMKKyQkCitCRUdJTgorICAgIFJFVFVSTiBRVUVSWSBFWEVDVVRFICdzZWxl Y3QgMSB1bmlvbiBhbGwgc2VsZWN0IDEnOworRU5EOworJCQKK0xBTkdVQUdFIHBscGdzcWwgSU1N VVRBQkxFOworU0VMRUNUIEpTT05fUVVFUlkoanMsICckJyAgUkVUVVJOSU5HIGludCBERUZBVUxU IHJldF9zZXRpbnQoKSBPTiBFUlJPUikgRlJPTSB0ZXN0X2pzb25iX211dGFiaWxpdHk7CitFUlJP UjogIERFRkFVTFQgZXhwcmVzc2lvbiBtdXN0IG5vdCByZXR1cm4gYSBzZXQKK0xJTkUgMTogU0VM RUNUIEpTT05fUVVFUlkoanMsICckJyAgUkVUVVJOSU5HIGludCBERUZBVUxUIHJldF9zZXRpbnQo Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCitTRUxFQ1QgSlNPTl9RVUVSWShqcywgJyQnICBSRVRVUk5JTkcgaW50IERFRkFVTFQg YiArIDEgT04gRVJST1IpIEZST00gdGVzdF9qc29uYl9tdXRhYmlsaXR5OworRVJST1I6ICBERUZB VUxUIGV4cHJlc3Npb24gbXVzdCBub3QgY29udGFpbiBjb2x1bW4gcmVmZXJlbmNlcworTElORSAx OiBTRUxFQ1QgSlNPTl9RVUVSWShqcywgJyQnICBSRVRVUk5JTkcgaW50IERFRkFVTFQgYiArIDEg T04gRVIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KK1NFTEVDVCBKU09OX1FVRVJZKGpzLCAnJCcgIFJFVFVSTklORyBpbnQgREVG QVVMVCBzdW0oMSkgb3ZlcigpIE9OIEVSUk9SKSBGUk9NIHRlc3RfanNvbmJfbXV0YWJpbGl0eTsK K0VSUk9SOiAgY2FuIG9ubHkgc3BlY2lmeSBjb25zdGFudCwgbm9uLWFnZ3JlZ2F0ZSBmdW5jdGlv biwgb3Igb3BlcmF0b3IgZXhwcmVzc2lvbiBmb3IgREVGQVVMVAorTElORSAxOiBTRUxFQ1QgSlNP Tl9RVUVSWShqcywgJyQnICBSRVRVUk5JTkcgaW50IERFRkFVTFQgc3VtKDEpIG92ZXIuLi4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K K1NFTEVDVCBKU09OX1FVRVJZKGpzLCAnJCcgIFJFVFVSTklORyBpbnQgREVGQVVMVCAoU0VMRUNU IDEpIE9OIEVSUk9SKSBGUk9NIHRlc3RfanNvbmJfbXV0YWJpbGl0eTsKK0VSUk9SOiAgY2FuIG9u bHkgc3BlY2lmeSBjb25zdGFudCwgbm9uLWFnZ3JlZ2F0ZSBmdW5jdGlvbiwgb3Igb3BlcmF0b3Ig ZXhwcmVzc2lvbiBmb3IgREVGQVVMVAorTElORSAxOiBTRUxFQ1QgSlNPTl9RVUVSWShqcywgJyQn ICBSRVRVUk5JTkcgaW50IERFRkFVTFQgKFNFTEVDVCAxKSAuLi4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RST1AgVEFCTEUgdGVz dF9qc29uYl9tdXRhYmlsaXR5OworRFJPUCBGVU5DVElPTiByZXRfc2V0aW50OworLS0gRXh0ZW5z aW9uOiBub24tY29uc3RhbnQgSlNPTiBwYXRoCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3si YSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8ICdhJyk7CisganNvbl9leGlzdHMgCistLS0tLS0tLS0t LS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAneyJhIjogMTIzfScs ICckJyB8fCAnLicgfHwgJ2EnKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgMTIzCiso MSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8ICcu JyB8fCAnYicgREVGQVVMVCAnZm9vJyBPTiBFTVBUWSk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0t LS0tLQorIGZvbworKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAneyJhIjogMTIz fScsICckJyB8fCAnLicgfHwgJ2EnKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgMTIz CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8 ICcuJyB8fCAnYScgV0lUSCBXUkFQUEVSKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisg WzEyM10KKygxIHJvdykKKworLS0gU2hvdWxkIGZhaWwgKGludmFsaWQgcGF0aCkKK1NFTEVDVCBK U09OX1FVRVJZKGpzb25iICd7ImEiOiAxMjN9JywgJ2Vycm9yJyB8fCAnICcgfHwgJ2Vycm9yJyk7 CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICIgIiBvZiBqc29ucGF0aCBpbnB1dApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0 L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggMWQ4YTQxNGVlYS4uOTEwZjZmZTNjOSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMv dGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0xMDMsNyArMTAzLDcgQEAgdGVzdDog c2VsZWN0X3ZpZXdzIHBvcnRhbHNfcDIgZm9yZWlnbl9rZXkgY2x1c3RlciBkZXBlbmRlbmN5IGd1 YyBiaXRtYXBvcHMgY29tYm8KICMgLS0tLS0tLS0tLQogIyBBbm90aGVyIGdyb3VwIG9mIHBhcmFs bGVsIHRlc3RzIChKU09OIHJlbGF0ZWQpCiAjIC0tLS0tLS0tLS0KLXRlc3Q6IGpzb24ganNvbmIg anNvbl9lbmNvZGluZyBqc29ucGF0aCBqc29ucGF0aF9lbmNvZGluZyBqc29uYl9qc29ucGF0aCBz cWxqc29uCit0ZXN0OiBqc29uIGpzb25iIGpzb25fZW5jb2RpbmcganNvbnBhdGgganNvbnBhdGhf ZW5jb2RpbmcganNvbmJfanNvbnBhdGggc3FsanNvbiBzcWxqc29uX3F1ZXJ5ZnVuY3MKIAogIyAt LS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NxbGpzb25fcXVlcnlmdW5jcy5zcWwgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9zcWxqc29uX3F1ZXJ5ZnVuY3Muc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAuLjViZTJkOGUzZjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9zcWxqc29uX3F1ZXJ5ZnVuY3Muc3FsCkBAIC0wLDAgKzEsNDI3IEBACistLSBK U09OX0VYSVNUUworCistLSBqc29uIGFyZ3VtZW50cyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZAor U0VMRUNUIEpTT05fRVhJU1RTKE5VTEwgRk9STUFUIEpTT04sICckJyk7CisKK1NFTEVDVCBKU09O X0VYSVNUUyhOVUxMOjpqc29uYiwgJyQnKTsKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnW10n LCAnJCcpOworU0VMRUNUIEpTT05fRVhJU1RTKEpTT05fT0JKRUNUKFJFVFVSTklORyBqc29uYiks ICckJyk7CisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICckJyk7CitTRUxFQ1QgSlNP Tl9FWElTVFMoanNvbmIgJ251bGwnLCAnJCcpOworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICdb XScsICckJyk7CisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICckLmEnKTsKK1NFTEVD VCBKU09OX0VYSVNUUyhqc29uYiAnMScsICdzdHJpY3QgJC5hJyk7IC0tIEZBTFNFIG9uIGVycm9y CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEnLCAnc3RyaWN0ICQuYScgRVJST1IgT04gRVJS T1IpOworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICdudWxsJywgJyQuYScpOworU0VMRUNUIEpT T05fRVhJU1RTKGpzb25iICdbXScsICckLmEnKTsKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAn WzEsICJhYWEiLCB7ImEiOiAxfV0nLCAnc3RyaWN0ICQuYScpOyAtLSBGQUxTRSBvbiBlcnJvcgor U0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICdbMSwgImFhYSIsIHsiYSI6IDF9XScsICdsYXggJC5h Jyk7CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3t9JywgJyQuYScpOworU0VMRUNUIEpTT05f RVhJU1RTKGpzb25iICd7ImIiOiAxLCAiYSI6IDJ9JywgJyQuYScpOworCitTRUxFQ1QgSlNPTl9F WElTVFMoanNvbmIgJzEnLCAnJC5hLmInKTsKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJh IjogeyJiIjogMX19JywgJyQuYS5iJyk7CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3siYSI6 IDEsICJiIjogMn0nLCAnJC5hLmInKTsKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICd7ImEi OiAxLCAiYiI6IDJ9JywgJyQuKiA/IChAID4gJHgpJyBQQVNTSU5HIDEgQVMgeCk7CitTRUxFQ1Qg SlNPTl9FWElTVFMoanNvbmIgJ3siYSI6IDEsICJiIjogMn0nLCAnJC4qID8gKEAgPiAkeCknIFBB U1NJTkcgJzEnIEFTIHgpOworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICd7ImEiOiAxLCAiYiI6 IDJ9JywgJyQuKiA/IChAID4gJHggJiYgQCA8ICR5KScgUEFTU0lORyAwIEFTIHgsIDIgQVMgeSk7 CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3siYSI6IDEsICJiIjogMn0nLCAnJC4qID8gKEAg PiAkeCAmJiBAIDwgJHkpJyBQQVNTSU5HIDAgQVMgeCwgMSBBUyB5KTsKKworLS0gZXh0ZW5zaW9u OiBib29sZWFuIGV4cHJlc3Npb25zCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJzEnLCAnJCA+ IDInKTsKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICckLmEgPiAyJyBFUlJPUiBPTiBF UlJPUik7CisKKy0tIEpTT05fVkFMVUUKKworLS0ganNvbiBhcmd1bWVudHMgY3VycmVudGx5IG5v dCBzdXBwb3J0ZWQKK1NFTEVDVCBKU09OX1ZBTFVFKE5VTEwgRk9STUFUIEpTT04sICckJyk7CisK K1NFTEVDVCBKU09OX1ZBTFVFKE5VTEw6Ompzb25iLCAnJCcpOworCitTRUxFQ1QgSlNPTl9WQUxV RShqc29uYiAnbnVsbCcsICckJyk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICck JyBSRVRVUk5JTkcgaW50KTsKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ3RydWUnLCAnJCcp OworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ3RydWUnLCAnJCcgUkVUVVJOSU5HIGJvb2wpOwor CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMTIzJywgJyQnKTsKK1NFTEVDVCBKU09OX1ZBTFVF KGpzb25iICcxMjMnLCAnJCcgUkVUVVJOSU5HIGludCkgKyAyMzQ7CitTRUxFQ1QgSlNPTl9WQUxV RShqc29uYiAnMTIzJywgJyQnIFJFVFVSTklORyB0ZXh0KTsKKy8qIGpzb25iIGJ5dGVhID8/PyAq LworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEyMycsICckJyBSRVRVUk5JTkcgYnl0ZWEgRVJS T1IgT04gRVJST1IpOworCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMS4yMycsICckJyk7CitT RUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMS4yMycsICckJyBSRVRVUk5JTkcgaW50KTsKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICciMS4yMyInLCAnJCcgUkVUVVJOSU5HIG51bWVyaWMpOworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJyIxLjIzIicsICckJyBSRVRVUk5JTkcgaW50IEVSUk9SIE9O IEVSUk9SKTsKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnKTsKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgdGV4dCk7CitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGNoYXIoNSkpOworU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBjaGFyKDIpKTsKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcganNvbik7CitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGpzb25iKTsKK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcganNvbiBFUlJPUiBPTiBFUlJP Uik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGpzb25i IEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciXCJhYWFcIiInLCAn JCcgUkVUVVJOSU5HIGpzb24pOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJcImFhYVwiIics ICckJyBSRVRVUk5JTkcganNvbmIpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywg JyQnIFJFVFVSTklORyBpbnQpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQn IFJFVFVSTklORyBpbnQgRVJST1IgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIg JyJhYWEiJywgJyQnIFJFVFVSTklORyBpbnQgREVGQVVMVCAxMTEgT04gRVJST1IpOworU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJyIxMjMiJywgJyQnIFJFVFVSTklORyBpbnQpICsgMjM0OworCitT RUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnIjIwMTctMDItMjAiJywgJyQnIFJFVFVSTklORyBkYXRl KSArIDk7CisKKy0tIFRlc3QgTlVMTCBjaGVja3MgZXhlY3V0aW9uIGluIGRvbWFpbiB0eXBlcwor Q1JFQVRFIERPTUFJTiBzcWxqc29uYl9pbnRfbm90X251bGwgQVMgaW50IE5PVCBOVUxMOworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJCcgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9u b3RfbnVsbCk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckJyBSRVRVUk5JTkcg c3FsanNvbmJfaW50X25vdF9udWxsIEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVF KGpzb25iICdudWxsJywgJyQnIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90X251bGwgREVGQVVM VCAyIE9OIEVNUFRZIEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcx JywgICckLmEnIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90X251bGwgREVGQVVMVCAyIE9OIEVN UFRZIEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgICckLmEn IFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90X251bGwgREVGQVVMVCBOVUxMIE9OIEVNUFRZIEVS Uk9SIE9OIEVSUk9SKTsKK0NSRUFURSBUWVBFIHJhaW5ib3cgQVMgRU5VTSAoJ3JlZCcsICdvcmFu Z2UnLCAneWVsbG93JywgJ2dyZWVuJywgJ2JsdWUnLCAncHVycGxlJyk7CitDUkVBVEUgRE9NQUlO IHJnYiBBUyByYWluYm93IENIRUNLIChWQUxVRSBJTiAoJ3JlZCcsICdncmVlbicsICdibHVlJykp OworU0VMRUNUIEpTT05fVkFMVUUoJyJwdXJwbGUiJzo6anNvbmIsICdsYXggJFsqXScgUkVUVVJO SU5HIHJnYik7CitTRUxFQ1QgSlNPTl9WQUxVRSgnInB1cnBsZSInOjpqc29uYiwgJ2xheCAkWypd JyBSRVRVUk5JTkcgcmdiIEVSUk9SIE9OIEVSUk9SKTsKKworU0VMRUNUIEpTT05fVkFMVUUoanNv bmIgJ1tdJywgJyQnKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbXScsICckJyBFUlJPUiBP TiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAne30nLCAnJCcpOworU0VMRUNUIEpT T05fVkFMVUUoanNvbmIgJ3t9JywgJyQnIEVSUk9SIE9OIEVSUk9SKTsKKworU0VMRUNUIEpTT05f VkFMVUUoanNvbmIgJzEnLCAnJC5hJyk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdz dHJpY3QgJC5hJyBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScs ICdzdHJpY3QgJC5hJyBERUZBVUxUICdlcnJvcicgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJzEnLCAnbGF4ICQuYScgRVJST1IgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJzEnLCAnbGF4ICQuYScgRVJST1IgT04gRU1QVFkgRVJST1IgT04gRVJST1IpOwor U0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnc3RyaWN0ICQuYScgREVGQVVMVCAyIE9OIEVS Uk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIERFRkFVTFQgMiBP TiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdsYXggJC5hJyBERUZBVUxU ICcyJyBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdsYXggJC5hJyBO VUxMIE9OIEVNUFRZIERFRkFVTFQgJzInIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpz b25iICcxJywgJ2xheCAkLmEnIERFRkFVTFQgJzInIE9OIEVNUFRZIERFRkFVTFQgJzMnIE9OIEVS Uk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIEVSUk9SIE9OIEVN UFRZIERFRkFVTFQgJzMnIE9OIEVSUk9SKTsKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1sx LDJdJywgJyRbKl0nIEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdb MSwyXScsICckWypdJyBERUZBVUxUICcwJyBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShq c29uYiAnWyIgIl0nLCAnJFsqXScgUkVUVVJOSU5HIGludCBFUlJPUiBPTiBFUlJPUik7CitTRUxF Q1QgSlNPTl9WQUxVRShqc29uYiAnWyIgIl0nLCAnJFsqXScgUkVUVVJOSU5HIGludCBERUZBVUxU IDIgKyAzIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbIjEiXScsICckWypd JyBSRVRVUk5JTkcgaW50IERFRkFVTFQgMiArIDMgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJ1siMSJdJywgJyRbKl0nIFJFVFVSTklORyBpbnQgRk9STUFUIEpTT04pOyAtLSBS RVRVUk5JTkcgRk9STUFUIG5vdCBhbGxvd2VkCisKKy0tIFJFVFVHTklORyBwc2V1ZG8tdHlwZXMg bm90IGFsbG93ZWQKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbIjEiXScsICckWypdJyBSRVRV Uk5JTkcgcmVjb3JkKTsKKworU0VMRUNUCisJeCwKKwlKU09OX1ZBTFVFKAorCQlqc29uYiAneyJh IjogMSwgImIiOiAyfScsCisJCSckLiogPyAoQCA+ICR4KScgUEFTU0lORyB4IEFTIHgKKwkJUkVU VVJOSU5HIGludAorCQlERUZBVUxUIC0xIE9OIEVNUFRZCisJCURFRkFVTFQgLTIgT04gRVJST1IK KwkpIHkKK0ZST00KKwlnZW5lcmF0ZV9zZXJpZXMoMCwgMikgeDsKKworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJ251bGwnLCAnJGEnIFBBU1NJTkcgcG9pbnQgJyAoMSwgMiApJyBBUyBhKTsKK1NF TEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyRhJyBQQVNTSU5HIHBvaW50ICcgKDEsIDIg KScgQVMgYSBSRVRVUk5JTkcgcG9pbnQpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwn LCAnJGEnIFBBU1NJTkcgcG9pbnQgJyAoMSwgMiApJyBBUyBhIFJFVFVSTklORyBwb2ludCBFUlJP UiBPTiBFUlJPUik7CisKKy0tIFRlc3QgUEFTU0lORyBhbmQgUkVUVVJOSU5HIGRhdGUvdGltZSB0 eXBlcworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVz dGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMpOworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEy OjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIHRpbWVzdGFtcHR6KTsKK1NFTEVDVCBKU09OX1ZB TFVFKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAx MjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyB0aW1lc3RhbXApOworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIGRhdGUgJzIwMTgtMDItMjEgMTI6MzQ6NTYg KzEwJyBBUyB0cyBSRVRVUk5JTkcgZGF0ZSk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVs bCcsICckdHMnIFBBU1NJTkcgdGltZSAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJF VFVSTklORyB0aW1lKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0cycgUEFT U0lORyB0aW1ldHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcgdGlt ZXR6KTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1l c3RhbXAgJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcgdGltZXN0YW1w KTsKKworLS0gQWxzbyB0ZXN0IFJFVFVSTklORyBqc29uW2JdCitTRUxFQ1QgSlNPTl9WQUxVRShq c29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6 NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcganNvbik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn bnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEw JyBBUyB0cyBSRVRVUk5JTkcganNvbmIpOworCistLSBKU09OX1FVRVJZCisKKy0tIGpzb24gYXJn dW1lbnRzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkCitTRUxFQ1QgSlNPTl9RVUVSWShOVUxMIEZP Uk1BVCBKU09OLCAnJCcpOworCitTRUxFQ1QgSlNPTl9WQUxVRShOVUxMOjpqc29uYiwgJyQnKTsK KworU0VMRUNUCisJSlNPTl9RVUVSWShqcywgJyQnKSwKKwlKU09OX1FVRVJZKGpzLCAnJCcgV0lU SE9VVCBXUkFQUEVSKSwKKwlKU09OX1FVRVJZKGpzLCAnJCcgV0lUSCBDT05ESVRJT05BTCBXUkFQ UEVSKSwKKwlKU09OX1FVRVJZKGpzLCAnJCcgV0lUSCBVTkNPTkRJVElPTkFMIEFSUkFZIFdSQVBQ RVIpLAorCUpTT05fUVVFUlkoanMsICckJyBXSVRIIEFSUkFZIFdSQVBQRVIpCitGUk9NCisJKFZB TFVFUworCQkoanNvbmIgJ251bGwnKSwKKwkJKCcxMi4zJyksCisJCSgndHJ1ZScpLAorCQkoJyJh YWEiJyksCisJCSgnWzEsIG51bGwsICIyIl0nKSwKKwkJKCd7ImEiOiAxLCAiYiI6IFsyXX0nKQor CSkgZm9vKGpzKTsKKworU0VMRUNUCisJSlNPTl9RVUVSWShqcywgJ3N0cmljdCAkWypdJykgQVMg InVuc3BlYyIsCisJSlNPTl9RVUVSWShqcywgJ3N0cmljdCAkWypdJyBXSVRIT1VUIFdSQVBQRVIp IEFTICJ3aXRob3V0IiwKKwlKU09OX1FVRVJZKGpzLCAnc3RyaWN0ICRbKl0nIFdJVEggQ09ORElU SU9OQUwgV1JBUFBFUikgQVMgIndpdGggY29uZCIsCisJSlNPTl9RVUVSWShqcywgJ3N0cmljdCAk WypdJyBXSVRIIFVOQ09ORElUSU9OQUwgQVJSQVkgV1JBUFBFUikgQVMgIndpdGggdW5jb25kIiwK KwlKU09OX1FVRVJZKGpzLCAnc3RyaWN0ICRbKl0nIFdJVEggQVJSQVkgV1JBUFBFUikgQVMgIndp dGgiCitGUk9NCisJKFZBTFVFUworCQkoanNvbmIgJzEnKSwKKwkJKCdbXScpLAorCQkoJ1tudWxs XScpLAorCQkoJ1sxMi4zXScpLAorCQkoJ1t0cnVlXScpLAorCQkoJ1siYWFhIl0nKSwKKwkJKCdb WzEsIDIsIDNdXScpLAorCQkoJ1t7ImEiOiAxLCAiYiI6IFsyXX1dJyksCisJCSgnWzEsICIyIiwg bnVsbCwgWzNdXScpCisJKSBmb28oanMpOworCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFh YSInLCAnJCcgUkVUVVJOSU5HIHRleHQpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEi JywgJyQnIFJFVFVSTklORyB0ZXh0IEtFRVAgUVVPVEVTKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpz b25iICciYWFhIicsICckJyBSRVRVUk5JTkcgdGV4dCBLRUVQIFFVT1RFUyBPTiBTQ0FMQVIgU1RS SU5HKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgdGV4 dCBPTUlUIFFVT1RFUyk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVU VVJOSU5HIHRleHQgT01JVCBRVU9URVMgT04gU0NBTEFSIFNUUklORyk7CitTRUxFQ1QgSlNPTl9R VUVSWShqc29uYiAnImFhYSInLCAnJCcgT01JVCBRVU9URVMgRVJST1IgT04gRVJST1IpOworU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBqc29uIE9NSVQgUVVP VEVTIEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICck JyBSRVRVUk5JTkcgYnl0ZWEgRk9STUFUIEpTT04gT01JVCBRVU9URVMgRVJST1IgT04gRVJST1Ip OworCistLSBCZWhhdmlvciB3aGVuIGEgUkVUVVJOSU5HIHR5cGUgaGFzIHR5cG1vZCAhPSAtMQor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBjaGFyKDIpKTsK K1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgY2hhcigyKSBP TUlUIFFVT1RFUyk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAnJC5hJyBSRVRV Uk5JTkcgY2hhcigyKSBPTUlUIFFVT1RFUyBERUZBVUxUICdiYmInIE9OIEVNUFRZKTsKK1NFTEVD VCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckLmEnIFJFVFVSTklORyBjaGFyKDIpIE9NSVQg UVVPVEVTIERFRkFVTFQgJyJiYmIiJzo6anNvbmIgT04gRU1QVFkpOworCistLSBRVU9URVMgYmVo YXZpb3Igc2hvdWxkIG5vdCBiZSBzcGVjaWZpZWQgd2hlbiBXSVRIIFdSQVBQRVIgdXNlZDoKKy0t IFNob3VsZCBmYWlsCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEggV1JB UFBFUiBPTUlUIFFVT1RFUyk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJ VEggV1JBUFBFUiBLRUVQIFFVT1RFUyk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywg JyQnIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUiBLRUVQIFFVT1RFUyk7CitTRUxFQ1QgSlNPTl9R VUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUiBPTUlUIFFVT1RF Uyk7CistLSBTaG91bGQgc3VjY2VlZAorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxXScsICck JyBXSVRIT1VUIFdSQVBQRVIgT01JVCBRVU9URVMpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg J1sxXScsICckJyBXSVRIT1VUIFdSQVBQRVIgS0VFUCBRVU9URVMpOworCistLSB0ZXN0IFFVT1RF UyBiZWhhdmlvci4KK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iJ3sicmVjIjogInsxLDIsM30ifScs ICckLnJlYycgcmV0dXJuaW5nIGludFtdIG9taXQgcXVvdGVzKTsKK1NFTEVDVCBKU09OX1FVRVJZ KGpzb25iJ3sicmVjIjogInsxLDIsM30ifScsICckLnJlYycgcmV0dXJuaW5nIGludFtdIGtlZXAg cXVvdGVzKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iJ3sicmVjIjogInsxLDIsM30ifScsICck LnJlYycgcmV0dXJuaW5nIGludFtdIGtlZXAgcXVvdGVzIGVycm9yIG9uIGVycm9yKTsKK1NFTEVD VCBKU09OX1FVRVJZKGpzb25iJ3sicmVjIjogIlsxLDJdIn0nLCAnJC5yZWMnIHJldHVybmluZyBp bnQ0cmFuZ2Ugb21pdCBxdW90ZXMpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAi WzEsMl0ifScsICckLnJlYycgcmV0dXJuaW5nIGludDRyYW5nZSBrZWVwIHF1b3Rlcyk7CitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6ICJbMSwyXSJ9JywgJyQucmVjJyAJcmV0dXJuaW5n IGludDRyYW5nZSBrZWVwIHF1b3RlcyBlcnJvciBvbiBlcnJvcik7CisKK1NFTEVDVCBKU09OX1FV RVJZKGpzb25iICdbXScsICckWypdJyk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAn JFsqXScgTlVMTCBPTiBFTVBUWSk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsq XScgRU1QVFkgT04gRU1QVFkpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0n IEVNUFRZIEFSUkFZIE9OIEVNUFRZKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICck WypdJyBFTVBUWSBPQkpFQ1QgT04gRU1QVFkpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1td JywgJyRbKl0nIEVSUk9SIE9OIEVNUFRZKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScs ICckWypdJyBERUZBVUxUICciZW1wdHkiJyBPTiBFTVBUWSk7CisKK1NFTEVDVCBKU09OX1FVRVJZ KGpzb25iICdbXScsICckWypdJyBFUlJPUiBPTiBFTVBUWSBOVUxMIE9OIEVSUk9SKTsKK1NFTEVD VCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBFUlJPUiBPTiBFTVBUWSBFTVBUWSBBUlJB WSBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRVJST1Ig T04gRU1QVFkgRU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25i ICdbXScsICckWypdJyBFUlJPUiBPTiBFTVBUWSBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNP Tl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRVJST1IgT04gRVJST1IpOworCitTRUxFQ1QgSlNP Tl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJFsqXScgRVJST1IgT04gRVJST1IpOworU0VMRUNUIEpT T05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyRbKl0nIERFRkFVTFQgJyJlbXB0eSInIE9OIEVSUk9S KTsKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBqc29u KTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckJyBSRVRVUk5JTkcganNvbiBG T1JNQVQgSlNPTik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJO SU5HIGpzb25iKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckJyBSRVRVUk5J TkcganNvbmIgRk9STUFUIEpTT04pOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywg JyQnIFJFVFVSTklORyB0ZXh0KTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICck JyBSRVRVUk5JTkcgY2hhcigxMCkpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywg JyQnIFJFVFVSTklORyBjaGFyKDMpKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScs ICckJyBSRVRVUk5JTkcgdGV4dCBGT1JNQVQgSlNPTik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29u YiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIGJ5dGVhKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25i ICdbMSwyXScsICckJyBSRVRVUk5JTkcgYnl0ZWEgRk9STUFUIEpTT04pOworCitTRUxFQ1QgSlNP Tl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJFsqXScgUkVUVVJOSU5HIGJ5dGVhIEVNUFRZIE9CSkVD VCBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJFsqXScgUkVU VVJOSU5HIGJ5dGVhIEZPUk1BVCBKU09OIEVNUFRZIE9CSkVDVCBPTiBFUlJPUik7CitTRUxFQ1Qg SlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJFsqXScgUkVUVVJOSU5HIGpzb24gRU1QVFkgT0JK RUNUIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckWypdJyBS RVRVUk5JTkcganNvbmIgRU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FVRVJZ KGpzb25iICdbMyw0XScsICckWypdJyBSRVRVUk5JTkcgYmlnaW50W10gRU1QVFkgT0JKRUNUIE9O IEVSUk9SKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciWzMsNF0iJywgJyRbKl0nIFJFVFVS TklORyBiaWdpbnRbXSBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOworCistLSBDb2VyY2lvbiBmYWls cyB3aXRoIHF1b3RlcyBvbgorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyIxMjMuMSInLCAnJCcg UkVUVVJOSU5HIGludDIgZXJyb3Igb24gZXJyb3IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg JyIxMjMuMSInLCAnJCcgUkVUVVJOSU5HIGludDQgZXJyb3Igb24gZXJyb3IpOworU0VMRUNUIEpT T05fUVVFUlkoanNvbmIgJyIxMjMuMSInLCAnJCcgUkVUVVJOSU5HIGludDggZXJyb3Igb24gZXJy b3IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyIxMjMuMSInLCAnJCcgUkVUVVJOSU5HIGJv b2wgZXJyb3Igb24gZXJyb3IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyIxMjMuMSInLCAn JCcgUkVUVVJOSU5HIG51bWVyaWMgZXJyb3Igb24gZXJyb3IpOworU0VMRUNUIEpTT05fUVVFUlko anNvbmIgJyIxMjMuMSInLCAnJCcgUkVUVVJOSU5HIHJlYWwgZXJyb3Igb24gZXJyb3IpOworU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJyIxMjMuMSInLCAnJCcgUkVUVVJOSU5HIGZsb2F0OCBlcnJv ciBvbiBlcnJvcik7CistLSBGaW5lIHdpdGggT01JVCBRVU9URVMKK1NFTEVDVCBKU09OX1FVRVJZ KGpzb25iICciMTIzLjEiJywgJyQnIFJFVFVSTklORyBpbnQyIG9taXQgcXVvdGVzIGVycm9yIG9u IGVycm9yKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciMTIzLjEiJywgJyQnIFJFVFVSTklO RyBmbG9hdDggb21pdCBxdW90ZXMgZXJyb3Igb24gZXJyb3IpOworCistLSBSRVRVR05JTkcgcHNl dWRvLXR5cGVzIG5vdCBhbGxvd2VkCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzMsNF0nLCAn JFsqXScgUkVUVVJOSU5HIGFueWFycmF5IEVNUFRZIE9CSkVDVCBPTiBFUlJPUik7CisKK1NFTEVD VAorCXgsIHksCisJSlNPTl9RVUVSWSgKKwkJanNvbmIgJ1sxLDIsMyw0LDUsbnVsbF0nLAorCQkn JFsqXSA/IChAID49ICR4ICYmIEAgPD0gJHkpJworCQlQQVNTSU5HIHggQVMgeCwgeSBBUyB5CisJ CVdJVEggQ09ORElUSU9OQUwgV1JBUFBFUgorCQlFTVBUWSBBUlJBWSBPTiBFTVBUWQorCSkgbGlz dAorRlJPTQorCWdlbmVyYXRlX3NlcmllcygwLCA0KSB4LAorCWdlbmVyYXRlX3NlcmllcygwLCA0 KSB5OworCistLSByZWNvcmQgdHlwZSByZXR1cm5pbmcgd2l0aCBxdW90ZXMgYmVoYXZpb3IuCitD UkVBVEUgVFlQRSBjb21wX2FiYyBBUyAoYSB0ZXh0LCBiIGludCwgYyB0aW1lc3RhbXApOworU0VM RUNUIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAiKGFiYyw0MiwwMS4wMi4yMDAzKSJ9JywgJyQu cmVjJyByZXR1cm5pbmcgY29tcF9hYmMgb21pdCBxdW90ZXMpOworU0VMRUNUIEpTT05fUVVFUlko anNvbmIneyJyZWMiOiAiKGFiYyw0MiwwMS4wMi4yMDAzKSJ9JywgJyQucmVjJyByZXR1cm5pbmcg Y29tcF9hYmMga2VlcCBxdW90ZXMpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAi KGFiYyw0MiwwMS4wMi4yMDAzKSJ9JywgJyQucmVjJyByZXR1cm5pbmcgY29tcF9hYmMga2VlcCBx dW90ZXMgZXJyb3Igb24gZXJyb3IpOworRFJPUCBUWVBFIGNvbXBfYWJjOworCistLSBFeHRlbnNp b246IHJlY29yZCB0eXBlcyByZXR1cm5pbmcKK0NSRUFURSBUWVBFIHNxbGpzb25iX3JlYyBBUyAo YSBpbnQsIHQgdGV4dCwganMganNvbiwgamIganNvbmIsIGpzYSBqc29uW10pOworQ1JFQVRFIFRZ UEUgc3FsanNvbmJfcmVjYSBBUyAocmVjYSBzcWxqc29uYl9yZWNbXSk7CisKK1NFTEVDVCBKU09O X1FVRVJZKGpzb25iICdbeyJhIjogMSwgImIiOiAiZm9vIiwgInQiOiAiYWFhIiwgImpzIjogWzEs ICIyIiwge31dLCAiamIiOiB7IngiOiBbMSwgIjIiLCB7fV19fSwgIHsiYSI6IDJ9XScsICckWzBd JyBSRVRVUk5JTkcgc3FsanNvbmJfcmVjKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbeyJh IjogImEiLCAiYiI6ICJmb28iLCAidCI6ICJhYWEiLCAianMiOiBbMSwgIjIiLCB7fV0sICJqYiI6 IHsieCI6IFsxLCAiMiIsIHt9XX19LCAgeyJhIjogMn1dJywgJyRbMF0nIFJFVFVSTklORyBzcWxq c29uYl9yZWMgRVJST1IgT04gRVJST1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1t7ImEi OiAiYSIsICJiIjogImZvbyIsICJ0IjogImFhYSIsICJqcyI6IFsxLCAiMiIsIHt9XSwgImpiIjog eyJ4IjogWzEsICIyIiwge31dfX0sICB7ImEiOiAyfV0nLCAnJFswXScgUkVUVVJOSU5HIHNxbGpz b25iX3JlYyk7CitTRUxFQ1QgKiBGUk9NIHVubmVzdCgoSlNPTl9RVUVSWShqc29uYiAneyJqc2Ei OiAgW3siYSI6IDEsICJiIjogWyJmb28iXX0sIHsiYSI6IDIsICJjIjoge319LCAxMjNdfScsICck JyBSRVRVUk5JTkcgc3FsanNvbmJfcmVjKSkuanNhKTsKK1NFTEVDVCAqIEZST00gdW5uZXN0KChK U09OX1FVRVJZKGpzb25iICd7InJlY2EiOiBbeyJhIjogMSwgInQiOiBbImZvbyIsIFtdXX0sIHsi YSI6IDIsICJqYiI6IFt7fSwgdHJ1ZV19XX0nLCAnJCcgUkVUVVJOSU5HIHNxbGpzb25iX3JlY2Ep KS5yZWNhKTsKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1t7ImEiOiAxLCAiYiI6ICJmb28i LCAidCI6ICJhYWEiLCAianMiOiBbMSwgIjIiLCB7fV0sICJqYiI6IHsieCI6IFsxLCAiMiIsIHt9 XX19LCAgeyJhIjogMn1dJywgJyRbMF0nIFJFVFVSTklORyBqc29ucGF0aCk7CitTRUxFQ1QgSlNP Tl9RVUVSWShqc29uYiAnW3siYSI6IDEsICJiIjogImZvbyIsICJ0IjogImFhYSIsICJqcyI6IFsx LCAiMiIsIHt9XSwgImpiIjogeyJ4IjogWzEsICIyIiwge31dfX0sICB7ImEiOiAyfV0nLCAnJFsw XScgUkVUVVJOSU5HIGpzb25wYXRoIEVSUk9SIE9OIEVSUk9SKTsKKworLS0gRXh0ZW5zaW9uOiBh cnJheSB0eXBlcyByZXR1cm5pbmcKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyLG51bGws IjMiXScsICckWypdJyBSRVRVUk5JTkcgaW50W10gV0lUSCBXUkFQUEVSKTsKK1NFTEVDVCBKU09O X1FVRVJZKGpzb25iICdbMSwyLG51bGwsImEiXScsICckWypdJyBSRVRVUk5JTkcgaW50W10gV0lU SCBXUkFQUEVSIEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwy LG51bGwsImEiXScsICckWypdJyBSRVRVUk5JTkcgaW50W10gV0lUSCBXUkFQUEVSKTsKK1NFTEVD VCAqIEZST00gdW5uZXN0KEpTT05fUVVFUlkoanNvbmIgJ1t7ImEiOiAxLCAidCI6IFsiZm9vIiwg W11dfSwgeyJhIjogMiwgImpiIjogW3t9LCB0cnVlXX1dJywgJyQnIFJFVFVSTklORyBzcWxqc29u Yl9yZWNbXSkpOworCistLSBFeHRlbnNpb246IGRvbWFpbiB0eXBlcyByZXR1cm5pbmcKK1NFTEVD VCBKU09OX1FVRVJZKGpzb25iICd7ImEiOiAxfScsICckLmEnIFJFVFVSTklORyBzcWxqc29uYl9p bnRfbm90X251bGwpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ3siYSI6IDF9JywgJyQuYicg UkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29u YiAneyJhIjogMX0nLCAnJC5iJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50X25vdF9udWxsIEVSUk9S IE9OIEVSUk9SKTsKKworLS0gVGVzdCB0aW1lc3RhbXB0eiBwYXNzaW5nIGFuZCBvdXRwdXQKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXB0eiAn MjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25i ICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiAr MTAnIEFTIHRzIFJFVFVSTklORyBqc29uKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdudWxs JywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFT IHRzIFJFVFVSTklORyBqc29uYik7CisKKy0tIFRlc3QgY29uc3RyYWludHMKKworQ1JFQVRFIFRB QkxFIHRlc3RfanNvbmJfY29uc3RyYWludHMgKAorCWpzIHRleHQsCisJaSBpbnQsCisJeCBqc29u YiBERUZBVUxUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyRbKl0nIFdJVEggV1JBUFBFUikK KwlDT05TVFJBSU5UIHRlc3RfanNvbmJfY29uc3RyYWludDEKKwkJQ0hFQ0sgKGpzIElTIEpTT04p CisJQ09OU1RSQUlOVCB0ZXN0X2pzb25iX2NvbnN0cmFpbnQyCisJCUNIRUNLIChKU09OX0VYSVNU Uyhqczo6anNvbmIsICckLmEnIFBBU1NJTkcgaSArIDUgQVMgaW50LCBpOjp0ZXh0IEFTIHR4dCwg YXJyYXlbMSwyLDNdIGFzIGFycikpCisJQ09OU1RSQUlOVCB0ZXN0X2pzb25iX2NvbnN0cmFpbnQz CisJCUNIRUNLIChKU09OX1ZBTFVFKGpzOjpqc29uYiwgJyQuYScgUkVUVVJOSU5HIGludCBERUZB VUxUICcxMicgT04gRU1QVFkgRVJST1IgT04gRVJST1IpID4gaSkKKwlDT05TVFJBSU5UIHRlc3Rf anNvbmJfY29uc3RyYWludDQKKwkJQ0hFQ0sgKEpTT05fUVVFUlkoanM6Ompzb25iLCAnJC5hJyBX SVRIIENPTkRJVElPTkFMIFdSQVBQRVIgRU1QVFkgT0JKRUNUIE9OIEVSUk9SKSA8IGpzb25iICdb MTBdJykKKwlDT05TVFJBSU5UIHRlc3RfanNvbmJfY29uc3RyYWludDUKKwkJQ0hFQ0sgKEpTT05f UVVFUlkoanM6Ompzb25iLCAnJC5hJyBSRVRVUk5JTkcgY2hhcig1KSBPTUlUIFFVT1RFUyBFTVBU WSBBUlJBWSBPTiBFTVBUWSkgPiAgJ2EnIENPTExBVEUgIkMiKQorKTsKKworXGQgdGVzdF9qc29u Yl9jb25zdHJhaW50cworCitTRUxFQ1QgY2hlY2tfY2xhdXNlCitGUk9NIGluZm9ybWF0aW9uX3Nj aGVtYS5jaGVja19jb25zdHJhaW50cworV0hFUkUgY29uc3RyYWludF9uYW1lIExJS0UgJ3Rlc3Rf anNvbmJfY29uc3RyYWludCUnCitPUkRFUiBCWSAxOworCitTRUxFQ1QgcGdfZ2V0X2V4cHIoYWRi aW4sIGFkcmVsaWQpCitGUk9NIHBnX2F0dHJkZWYKK1dIRVJFIGFkcmVsaWQgPSAndGVzdF9qc29u Yl9jb25zdHJhaW50cyc6OnJlZ2NsYXNzCitPUkRFUiBCWSAxOworCitJTlNFUlQgSU5UTyB0ZXN0 X2pzb25iX2NvbnN0cmFpbnRzIFZBTFVFUyAoJycsIDEpOworSU5TRVJUIElOVE8gdGVzdF9qc29u Yl9jb25zdHJhaW50cyBWQUxVRVMgKCcxJywgMSk7CitJTlNFUlQgSU5UTyB0ZXN0X2pzb25iX2Nv bnN0cmFpbnRzIFZBTFVFUyAoJ1tdJyk7CitJTlNFUlQgSU5UTyB0ZXN0X2pzb25iX2NvbnN0cmFp bnRzIFZBTFVFUyAoJ3siYiI6IDF9JywgMSk7CitJTlNFUlQgSU5UTyB0ZXN0X2pzb25iX2NvbnN0 cmFpbnRzIFZBTFVFUyAoJ3siYSI6IDF9JywgMSk7CitJTlNFUlQgSU5UTyB0ZXN0X2pzb25iX2Nv bnN0cmFpbnRzIFZBTFVFUyAoJ3siYSI6IDd9JywgMSk7CitJTlNFUlQgSU5UTyB0ZXN0X2pzb25i X2NvbnN0cmFpbnRzIFZBTFVFUyAoJ3siYSI6IDEwfScsIDEpOworCitEUk9QIFRBQkxFIHRlc3Rf anNvbmJfY29uc3RyYWludHM7CisKKy0tIFRlc3QgbXV0YWJpbGlseSBvZiBxdWVyeSBmdW5jdGlv bnMKK0NSRUFURSBUQUJMRSB0ZXN0X2pzb25iX211dGFiaWxpdHkoanMganNvbmIsIGIgaW50KTsK K0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICck JykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShq cywgJyQuYVswXScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpT T05fUVVFUlkoanMsICckLnRpbWUoKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211 dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGUoKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0 ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLnRpbWVfdHooKScpKTsKK0NS RUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLnRp bWVzdGFtcCgpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNP Tl9RVUVSWShqcywgJyQudGltZXN0YW1wX3R6KCknKSk7CisKK0NSRUFURSBJTkRFWCBPTiB0ZXN0 X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmEgPyAoQC5kYXRlKCkgPCAkLnRp bWVfdHooKSknKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09O X1FVRVJZKGpzLCAnJC5hID8gKEAuZGF0ZSgpIDwgJC50aW1lKCkpJykpOworQ1JFQVRFIElOREVY IE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChALnRpbWUo KSA8ICQudGltZSgpKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkg KEpTT05fUVVFUlkoanMsICckLmEgPyAoQC50aW1lKCkgPCAkLnRpbWVfdHooKSknKSk7CitDUkVB VEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8g KEAudGltZXN0YW1wKCkgPCAkLnRpbWVzdGFtcF90eigpKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0 ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmEgPyAoQC50aW1lc3RhbXBf dHooKSA8ICQudGltZXN0YW1wX3R6KCkpJykpOworCitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29u Yl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAudGltZSgpIDwgJC5kYXRldGlt ZSgiSEg6TUkgVFpIIikpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0 eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChALmRhdGUoKSA8ICQuZGF0ZXRpbWUoIkhIOk1JIFRa SCIpKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVF UlkoanMsICckLmEgPyAoQC50aW1lc3RhbXAoKSA8ICQuZGF0ZXRpbWUoIkhIOk1JIFRaSCIpKScp KTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMs ICckLmEgPyAoQC50aW1lc3RhbXAoKSA8ICQuZGF0ZXRpbWUoIkhIOk1JIikpJykpOworQ1JFQVRF IElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChA LnRpbWVzdGFtcF90eigpIDwgJC5kYXRldGltZSgiSEg6TUkgVFpIIikpJykpOworQ1JFQVRFIElO REVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChALnRp bWVzdGFtcF90eigpIDwgJC5kYXRldGltZSgiSEg6TUkiKSknKSk7CitDUkVBVEUgSU5ERVggT04g dGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRlKCkgPCAkeCcgUEFT U0lORyAnMTI6MzQnOjp0aW1ldHogQVMgeCkpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJf bXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZSgpIDwgJHgnIFBBU1NJTkcgJzEyMzQn OjppbnQgQVMgeCkpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNP Tl9RVUVSWShqcywgJyQuYSA/IChALnRpbWVzdGFtcCgyKSA8ICQudGltZXN0YW1wKDMpKScpKTsK KworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywg JyQuZGF0ZXRpbWUoKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkg KEpTT05fUVVFUlkoanMsICckLmEgPyAoQCA8ICQuZGF0ZXRpbWUoKSknKSk7CitDUkVBVEUgSU5E RVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAuZGF0 ZXRpbWUoKSA8ICQuZGF0ZXRpbWUoKSknKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9t dXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAuZGF0ZXRpbWUoKSA8ICQuZGF0ZXRp bWUoIkhIOk1JIFRaSCIpKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxp dHkgKEpTT05fUVVFUlkoanMsICckLmEgPyAoQC5kYXRldGltZSgiSEg6TUkgVFpIIikgPCAkLmRh dGV0aW1lKCJISDpNSSBUWkgiKSknKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRh YmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAuZGF0ZXRpbWUoIkhIOk1JIikgPCAkLmRh dGV0aW1lKCJZWS1NTS1ERCBISDpNSSIpKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25i X211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmEgPyAoQC5kYXRldGltZSgiSEg6TUkgVFpI IikgPCAkLmRhdGV0aW1lKCJZWS1NTS1ERCBISDpNSSIpKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0 ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0aW1lKCJISDpNSSBU WkgiKSA8ICR4JyBQQVNTSU5HICcxMjozNCc6OnRpbWV0eiBBUyB4KSk7CitDUkVBVEUgSU5ERVgg T04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRldGltZSgiSEg6 TUkgVFpIIikgPCAkeScgUEFTU0lORyAnMTI6MzQnOjp0aW1ldHogQVMgeCkpOworQ1JFQVRFIElO REVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUo KSA8ICR4JyBQQVNTSU5HICcxMjozNCc6OnRpbWV0eiBBUyB4KSk7CitDUkVBVEUgSU5ERVggT04g dGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRldGltZSgpIDwgJHgn IFBBU1NJTkcgJzEyMzQnOjppbnQgQVMgeCkpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJf bXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUoKSA/IChAID09ICR4KScgUEFT U0lORyAnMTI6MzQnOjp0aW1lIEFTIHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211 dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0aW1lKCJZWS1NTS1ERCIpID8gKEAgPT0g JHgpJyBQQVNTSU5HICcyMDIwLTA3LTE0Jzo6ZGF0ZSBBUyB4KSk7CitDUkVBVEUgSU5ERVggT04g dGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJFsxLCAkLmEgPyAoQC5kYXRl dGltZSgpID09ICR4KV0nIFBBU1NJTkcgJzEyOjM0Jzo6dGltZSBBUyB4KSk7CitDUkVBVEUgSU5E RVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJFsxLCAwIHRvICQu YSA/IChALmRhdGV0aW1lKCkgPT0gJHgpXScgUEFTU0lORyAnMTI6MzQnOjp0aW1lIEFTIHgpKTsK K0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICck WzEsICQuYSA/IChALmRhdGV0aW1lKCJISDpNSSIpID09ICR4KV0nIFBBU1NJTkcgJzEyOjM0Jzo6 dGltZSBBUyB4KSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09O X1ZBTFVFKGpzLCAnJCcgREVGQVVMVCByYW5kb20oKTo6aW50IE9OIEVSUk9SKSk7CisKKy0tIERF RkFVTFQgZXhwcmVzc2lvbgorQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gcmV0X3NldGludCgp IFJFVFVSTlMgU0VUT0YgaW50ZWdlciBBUworJCQKK0JFR0lOCisgICAgUkVUVVJOIFFVRVJZIEVY RUNVVEUgJ3NlbGVjdCAxIHVuaW9uIGFsbCBzZWxlY3QgMSc7CitFTkQ7CiskJAorTEFOR1VBR0Ug cGxwZ3NxbCBJTU1VVEFCTEU7CitTRUxFQ1QgSlNPTl9RVUVSWShqcywgJyQnICBSRVRVUk5JTkcg aW50IERFRkFVTFQgcmV0X3NldGludCgpIE9OIEVSUk9SKSBGUk9NIHRlc3RfanNvbmJfbXV0YWJp bGl0eTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzLCAnJCcgIFJFVFVSTklORyBpbnQgREVGQVVMVCBi ICsgMSBPTiBFUlJPUikgRlJPTSB0ZXN0X2pzb25iX211dGFiaWxpdHk7CitTRUxFQ1QgSlNPTl9R VUVSWShqcywgJyQnICBSRVRVUk5JTkcgaW50IERFRkFVTFQgc3VtKDEpIG92ZXIoKSBPTiBFUlJP UikgRlJPTSB0ZXN0X2pzb25iX211dGFiaWxpdHk7CitTRUxFQ1QgSlNPTl9RVUVSWShqcywgJyQn ICBSRVRVUk5JTkcgaW50IERFRkFVTFQgKFNFTEVDVCAxKSBPTiBFUlJPUikgRlJPTSB0ZXN0X2pz b25iX211dGFiaWxpdHk7CitEUk9QIFRBQkxFIHRlc3RfanNvbmJfbXV0YWJpbGl0eTsKK0RST1Ag RlVOQ1RJT04gcmV0X3NldGludDsKKworLS0gRXh0ZW5zaW9uOiBub24tY29uc3RhbnQgSlNPTiBw YXRoCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8 ICdhJyk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAneyJhIjogMTIzfScsICckJyB8fCAnLicg fHwgJ2EnKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8ICcu JyB8fCAnYicgREVGQVVMVCAnZm9vJyBPTiBFTVBUWSk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29u YiAneyJhIjogMTIzfScsICckJyB8fCAnLicgfHwgJ2EnKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpz b25iICd7ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8fCAnYScgV0lUSCBXUkFQUEVSKTsKKy0tIFNo b3VsZCBmYWlsIChpbnZhbGlkIHBhdGgpCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAneyJhIjog MTIzfScsICdlcnJvcicgfHwgJyAnIHx8ICdlcnJvcicpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dAppbmRleCA5NWFlNzg0NWQ4Li4zNTVjODE0NGEyIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dApAQCAtMTI1OSw2ICsxMjU5LDcgQEAgSm9pbgogSm9pbkNvc3RXb3Jrc3BhY2UKIEpvaW5Eb21h aW4KIEpvaW5FeHByCitKc29uRnVuY0V4cHIKIEpvaW5IYXNoRW50cnkKIEpvaW5QYXRoCiBKb2lu UGF0aEV4dHJhRGF0YQpAQCAtMTI2OSwxOCArMTI3MCwyOCBAQCBKc09iamVjdAogSnNWYWx1ZQog SnNvbkFnZ0NvbnN0cnVjdG9yCiBKc29uQWdnU3RhdGUKK0pzb25Bcmd1bWVudAogSnNvbkFycmF5 QWdnCiBKc29uQXJyYXlDb25zdHJ1Y3RvcgogSnNvbkFycmF5UXVlcnlDb25zdHJ1Y3RvcgogSnNv bkJhc2VPYmplY3RJbmZvCitKc29uQmVoYXZpb3IKK0pzb25CZWhhdmlvclR5cGUKK0pzb25Db2Vy Y2lvbgogSnNvbkNvbnN0cnVjdG9yRXhwcgogSnNvbkNvbnN0cnVjdG9yRXhwclN0YXRlCiBKc29u Q29uc3RydWN0b3JUeXBlCiBKc29uRW5jb2RpbmcKK0pzb25FeHByCitKc29uRXhwck9wCitKc29u RXhwclBvc3RFdmFsU3RhdGUKK0pzb25FeHByU3RhdGUKIEpzb25Gb3JtYXQKIEpzb25Gb3JtYXRU eXBlCiBKc29uSGFzaEVudHJ5CiBKc29uSXNQcmVkaWNhdGUKK0pzb25JdGVtQ29lcmNpb24KK0pz b25JdGVtVHlwZQogSnNvbkl0ZXJhdGVTdHJpbmdWYWx1ZXNBY3Rpb24KIEpzb25LZXlWYWx1ZQog SnNvbkxleENvbnRleHQKQEAgLTEyOTgsNiArMTMwOSw3IEBAIEpzb25QYXJzZUNvbnRleHQKIEpz b25QYXJzZUVycm9yVHlwZQogSnNvblBhdGgKIEpzb25QYXRoQm9vbAorSnNvblBhdGhEYXRhdHlw ZVN0YXR1cwogSnNvblBhdGhFeGVjQ29udGV4dAogSnNvblBhdGhFeGVjUmVzdWx0CiBKc29uUGF0 aEdpbkFkZFBhdGhJdGVtRnVuYwpAQCAtMTMxMCwxMCArMTMyMiwxNSBAQCBKc29uUGF0aEdpblBh dGhJdGVtCiBKc29uUGF0aEl0ZW0KIEpzb25QYXRoSXRlbVR5cGUKIEpzb25QYXRoS2V5d29yZAor SnNvblBhdGhNdXRhYmxlQ29udGV4dAogSnNvblBhdGhQYXJzZUl0ZW0KIEpzb25QYXRoUGFyc2VS ZXN1bHQKIEpzb25QYXRoUHJlZGljYXRlQ2FsbGJhY2sKIEpzb25QYXRoU3RyaW5nCitKc29uUGF0 aFZhcmlhYmxlCitKc29uUGF0aFZhcmlhYmxlRXZhbENvbnRleHQKK0pzb25QYXRoVmFyQ2FsbGJh Y2sKK0pzb25RdW90ZXMKIEpzb25SZXR1cm5pbmcKIEpzb25TY2FsYXJFeHByCiBKc29uU2VtQWN0 aW9uCkBAIC0xMzMwLDYgKzEzNDcsNyBAQCBKc29uVmFsdWVFeHByCiBKc29uVmFsdWVMaXN0CiBK c29uVmFsdWVMaXN0SXRlcmF0b3IKIEpzb25WYWx1ZVR5cGUKK0pzb25XcmFwcGVyCiBKc29uYgog SnNvbmJBZ2dTdGF0ZQogSnNvbmJDb250YWluZXIKLS0gCjIuNDMuMAoK --0000000000002cbba206130cfe1d--