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.96) (envelope-from ) id 1w6HgV-0048sM-1O for pgsql-hackers@arkaria.postgresql.org; Sat, 28 Mar 2026 00:37:52 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w6HgT-00D7PI-31 for pgsql-hackers@arkaria.postgresql.org; Sat, 28 Mar 2026 00:37:50 +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.96) (envelope-from ) id 1w6HgT-00D7PA-1B for pgsql-hackers@lists.postgresql.org; Sat, 28 Mar 2026 00:37:49 +0000 Received: from mail-ua1-x930.google.com ([2607:f8b0:4864:20::930]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w6HgP-00000001Zl7-22WZ for pgsql-hackers@lists.postgresql.org; Sat, 28 Mar 2026 00:37:49 +0000 Received: by mail-ua1-x930.google.com with SMTP id a1e0cc1a2514c-94ddffda372so2623721241.1 for ; Fri, 27 Mar 2026 17:37:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774658264; cv=none; d=google.com; s=arc-20240605; b=bjKKYzZ1AxTvkel4BT0yyKZ90YZI6iHPyHM0fiB5oDW9V9uwynaEqmupj/XHC9K/qS qct32NYWAWSoK3n4nq65ZBAxv8BGzSQjajW3bAvcJL5yZTnuC11GKBSpqB1QZOUaY8mr C9iTFPkLjXr1XiDu80T/nlcyU4/72tpFoj/wLW+82qKiJ7s0bY1RYaq3p+/89OphEDiL si13CEMABmV9HtA5Maru+jP2GRSxOmyN619VQ5sue5vAROKBMseG1hXYvYkAhzRVEEJ+ X+DdNOModtG1Et+uVPXjTMRLlZO4Sb3TLZ+sNJUiveXZ0KqnH05qKfHqqnU+f2fBUpCy Oe2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=DpR+oA9ocwG/VhDL/k3d0qz0BVQ7w+vGdvtQDqDAWh4=; fh=IwAq98QV7PLxeIdmHa8LZcwpzMbi7Cwvf+NHSXnfgcg=; b=j6diaKDMEVcmEh6P7KFf7XmCy04pKOIV6QGjMX6+O2hlMoMyt0BO/OWzffGZL74WBv 4s9rMqAFGN8KvBqvn9B1EpMhxkT3mtsZ4/tepQpaXRw0+1ritUGil7UC72rpPEjy1k6E ftOt9jgBo74Ix6AqnLx7v+uvWxkf3nKZCxASSGUv/SjeDhVYPC5IlX8GlyE9nFHLvCqj 1+L9LxOSpCiBlKvojmG8HVF4+kWptbUepqZcu+pFQXuY7BESgmaxiHdpD4pVyNi8ny9J NsYz/oQRFfHVj7/wSZqC0iP4m7eiyNuKQlq2TO/3QfuL9hvul0hhBk9fNHBx26F2pDm8 ixbQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774658264; x=1775263064; darn=lists.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=DpR+oA9ocwG/VhDL/k3d0qz0BVQ7w+vGdvtQDqDAWh4=; b=IJKZuOipCu1JlTIRb1jUhFuBu4BuIh5t6G0wLKE2f2ud2yRUA1GZsSvWbCk6dSC3Bn 6xEFf4OuYaikYcvwr4qxmSWq1bylexNTmR2X9igkiB5Y2LCm8hOikxKX/p2vbD+atLSu EvN9yolTR5YUQK64T8C2vwU4z4BMxDl5P0lFdrh4AM10LXfv5ZpBb2QlsWoC5WHVzjB8 076fQL1BRK6AQkldARd+EyFmMNTGAmN06qgRDaGXZjpWN76CzRY5eICGdHnx6MYSzl+l bfMhO1ZIJTanbHH5uiUmllT1C0HmfMOxiZqohd4qDJWFBLqTwbOGiE7Qe/SQhz14gyIZ vISA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774658264; x=1775263064; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=DpR+oA9ocwG/VhDL/k3d0qz0BVQ7w+vGdvtQDqDAWh4=; b=Db+fAjLtkatDK2GpRB789sB4Obk2SOX65yUcUa7HfCIuLW7hm9mFueuyAtP6VZ0iB9 xqJLbeypmrT1wT39T8zwglanQWnK0VANZr8cHP4LCjrCIVx4/9EVEeYeCgSip7di+3MA HuAMrANy3l1VpbPDi8cQvwyZ3k1UPdXFExrjmih/rRrpkYjRVB+w8nzTLfdNJ6SCu96C MNDzNX0ta1bAUsfx01vk5jZ+Nt5ODbTUOdx7tFG48Pl97m0kNdW2iF9AZke6qWL1o7hD LXreffY8aBFX5enr34lMHy9j3/mIAWlhwx5gpSbALtIR1S+R3YFwM8cVsOumnlzh1rZr TFCg== X-Forwarded-Encrypted: i=1; AJvYcCUcNVRaYXzwDbmsvcT/4AHeJE6/C5v55UZCwACkA5eZc57i7iiz5go9IMPlgG3LjrYom08tLQxJwvzeEFah@lists.postgresql.org X-Gm-Message-State: AOJu0Yzde4fS1/A8SL7y1kQz5H84K6csrXwZQ4Ybbqvwl3A/sWAiR5Tm EqW07CklpqZ7rF2d0SwsG6bgTKDmTcx+xz7I5txQ1BkKopCypTnOIloaAqPA1mb2LtNdUpPRuj2 cp23jwAazA8PnkKwYn0P8/jwo4sAAeNE= X-Gm-Gg: ATEYQzyqDAKP/9cQZXBSWuSa1Gjkb+I9/FkfHMgpdCT13fmThtNN/hrAVFPPzPGz9Uc U1OLETbhF0sesCx/bHD3ZqLaqb9hLsrGVpDKhr9Ls4BxkVIyOrb3mJBRUJdlFtbfP/CSfYJly2Z g8qFYM6cEBkTkLEDV+wE61RYeq9AAhRLVBhpYwi4KW/B4ceFU0vhMFReZH3oorRadQJmEfNhe0X 8fcpdy/4EmxG9aZqcTt9ih9Gmxa8xMJUI2Qd5I5jXKI59m16UUtyt3vcLgWW2xbNRKz6eCm7z+O vdZkQCFTcNjjukOZo7WIDWOIhNeU1ZNkelgSrO8vSRp3cmN7cJtt7L/mr//kDtJEPHmll05TYbH 0gqxyiBCOf9sXoLM+YDbwjI+xDpJw81pORAPR6xHBIRmmnhQ9MSCwmbF0m5QOOq0ex19/0kg8zF GuooK+kK60pBB8tR3U7DhdHLPLBnMQgpoH X-Received: by 2002:a05:6102:4421:b0:5ff:dffc:7949 with SMTP id ada2fe7eead31-604fc04d247mr1579802137.12.1774658263948; Fri, 27 Mar 2026 17:37:43 -0700 (PDT) MIME-Version: 1.0 References: <5ae9578e-f25e-49c5-97ab-ad27bc2050b5@eisentraut.org> In-Reply-To: From: jian he Date: Sat, 28 Mar 2026 08:37:07 +0800 X-Gm-Features: AQROBzAPLV71b5xDrmU_-Rr-ptL4ye5O0tJgIra1KO-ktE9vP3b7peuNAByLgng Message-ID: Subject: Re: CAST(... ON DEFAULT) - WIP build on top of Error-Safe User Functions To: Peter Eisentraut Cc: Corey Huinker , Amul Sul , Kirill Reshke , Vik Fearing , Isaac Morland , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000006bcf4f064e0ad34e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000006bcf4f064e0ad34e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Mar 26, 2026 at 4:59=E2=80=AFPM jian he wrote: > > Currently, when a valid ErrorSaveContext is passed to state->escontext > (ExprState->escontext), > ExecInitExprRec is designed to compile the entire expression tree > using soft errors. > Consider the following example: > create table t1(a text, b text, c int, d int8); > create domain d2 as text check (value <> 'a'); > insert into t1(a, d) values('a', 2147483648); > select cast (cast(d as int) as text default null on conversion > error) from t1; -- queryA > select cast (cast(a as d2) as text default null on conversion > error) from t1; -- queryB > select cast (cast(a as int) as text default null on conversion > error) from t1; -- queryC > In ATExecAddColumn, we have: exprState =3D ExecPrepareExprWithContext(defval, estate, (Node *) &escontex= t); The entire defval expression tree (including all the potential FuncExpr nod= e subexpression) must be marked as error-safe (all the FuncExpr->errorsafe must be set to true). If they aren't, ExecPrepareExprWithContext won't work. In that scarenio, we need a walker function to set FuncExpr->errorsafe to true for the above defval, overall feels very ugly. Therefore, the previous approach (v24) of simply adding an errorsafe boolea= n to FuncExpr will not work. IMHO, it is not feasible to mark only part of an expression tree as error-s= afe. Because of this, we should try to make queryA, queryB, queryC return NULL. However, some inconsistency remains, for example: SELECT CAST (CAST('a' AS int) AS text DEFAULT NULL ON CONVERSION ERROR) FROM tcast1; -- error SELECT CAST (CAST('a'::text AS int) AS text DEFAULT NULL ON CONVERSION ERROR) FROM tcast1; -- ok V24: There is a segfault because of eval_const_expressions_mutator, T_ArrayCoerceExpr handling, You can invoke it via: select cast (cast('{a}'::text[] as int[]) as text[] default null on conversion error) from t2; In V24, there were no nested type cast regress tests, now I have added some= . I removed the errorsafe boolean from FuncExpr. As mentioned previously, it = is difficult to make ExecInitExprRec compile expression partically eror safe. refactoring on transformArrayExpr, transformTypeCast, ExecInitSafeTypeCast= Expr. -- jian https://www.enterprisedb.com/ --0000000000006bcf4f064e0ad34e Content-Type: text/x-patch; charset="US-ASCII"; name="v25-0008-error-safe-for-casting-money-data-type.patch" Content-Disposition: attachment; filename="v25-0008-error-safe-for-casting-money-data-type.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn9lohs21 RnJvbSA0ZjFiYWM4Njg2OTQ4NmEyNzU2YjU1NTUwYTVmZTUxODQ3NDVjZDYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjUgTWFyIDIwMjYgMTk6MTI6MTAgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy NSA4LzldIGVycm9yIHNhZmUgZm9yIGNhc3RpbmcgbW9uZXkgZGF0YSB0eXBlCgpOT1RFOiBjYXN0 aW5nIGZyb20gbW9uZXkgZGF0YSB0eXBlIGlzIG5vdCBlcnJvciBzYWZlLCBzaW5jZSBjYXNoX251 bWVyaWMgaXMgbm90CmVycm9yIHNhZmUuCgpzZWxlY3QgY2FzdHNvdXJjZTo6cmVndHlwZSwgY2Fz dHRhcmdldDo6cmVndHlwZSwgY2FzdGZ1bmMsCmNhc3Rjb250ZXh0LGNhc3RtZXRob2QsIHBwLnBy b3NyYywgcHAucHJvbmFtZSBmcm9tIHBnX2Nhc3QgcGMgam9pbiBwZ19wcm9jIHBwIG9uCnBwLm9p ZCA9IHBjLmNhc3RmdW5jIGFuZCBwYy5jYXN0ZnVuYyA+IDAKYW5kIGNhc3R0YXJnZXQ6OnJlZ3R5 cGUgPSAnbW9uZXknOjpyZWd0eXBlCm9yZGVyIGJ5IGNhc3Rzb3VyY2U6OnJlZ3R5cGU7CgogY2Fz dHNvdXJjZSB8IGNhc3R0YXJnZXQgfCBjYXN0ZnVuYyB8IGNhc3Rjb250ZXh0IHwgY2FzdG1ldGhv ZCB8ICAgIHByb3NyYyAgICB8IHByb25hbWUKLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LQogYmlnaW50ICAgICB8IG1vbmV5ICAgICAgfCAgICAgMzgxMiB8IGEgICAgICAgICAgIHwgZiAg ICAgICAgICB8IGludDhfY2FzaCAgICB8IG1vbmV5CiBpbnRlZ2VyICAgIHwgbW9uZXkgICAgICB8 ICAgICAzODExIHwgYSAgICAgICAgICAgfCBmICAgICAgICAgIHwgaW50NF9jYXNoICAgIHwgbW9u ZXkKIG51bWVyaWMgICAgfCBtb25leSAgICAgIHwgICAgIDM4MjQgfCBhICAgICAgICAgICB8IGYg ICAgICAgICAgfCBudW1lcmljX2Nhc2ggfCBtb25leQooMyByb3dzKQoKQXV0aG9yOiBqaWFuIGhl IDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdy LmVzL20vQ0FEa0xNPWZ2MUpmWTRVZmEtamN3d05ialFpeE5WaXNrUThqWnUzVHpfcDY1NmlfNGhR QG1haWwuZ21haWwuY29tCkNvbW1pdGZlc3Q6IGh0dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3Fs Lm9yZy9wYXRjaC81OTQxCi0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Nhc2guYyB8IDI4ICsr KysrKysrKysrKysrKysrKystLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxOSBpbnNlcnRpb25z KCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9j YXNoLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvY2FzaC5jCmluZGV4IDYyM2Y2ZWVjMDU2Li5m MDQ4N2E2MGYwMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Nhc2guYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvY2FzaC5jCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNs dWRlICJjb21tb24vaW50LmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKKyNpbmNsdWRl ICJub2Rlcy9taXNjbm9kZXMuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1 ZGUgInV0aWxzL2Nhc2guaCIKICNpbmNsdWRlICJ1dGlscy9mbG9hdC5oIgpAQCAtMTEwNiwxMiAr MTEwNywxMiBAQCBjYXNoX251bWVyaWMoUEdfRlVOQ1RJT05fQVJHUykKIERhdHVtCiBudW1lcmlj X2Nhc2goUEdfRlVOQ1RJT05fQVJHUykKIHsKLQlEYXR1bQkJYW1vdW50ID0gUEdfR0VUQVJHX0RB VFVNKDApOworCU51bWVyaWMJCWFtb3VudCA9IFBHX0dFVEFSR19OVU1FUklDKDApOwogCUNhc2gJ CXJlc3VsdDsKIAlpbnQJCQlmcG9pbnQ7CiAJaW50NjQJCXNjYWxlOwogCWludAkJCWk7Ci0JRGF0 dW0JCW51bWVyaWNfc2NhbGU7CisJTnVtZXJpYwkJbnVtZXJpY19zY2FsZTsKIAlzdHJ1Y3QgbGNv bnYgKmxjb252ZXJ0ID0gUEdMQ19sb2NhbGVjb252KCk7CiAKIAkvKiBzZWUgY29tbWVudHMgYWJv dXQgZnJhY19kaWdpdHMgaW4gY2FzaF9pbigpICovCkBAIC0xMTI1LDExICsxMTI2LDE2IEBAIG51 bWVyaWNfY2FzaChQR19GVU5DVElPTl9BUkdTKQogCQlzY2FsZSAqPSAxMDsKIAogCS8qIG11bHRp cGx5IHRoZSBpbnB1dCBhbW91bnQgYnkgc2NhbGUgZmFjdG9yICovCi0JbnVtZXJpY19zY2FsZSA9 IE51bWVyaWNHZXREYXR1bShpbnQ2NF90b19udW1lcmljKHNjYWxlKSk7Ci0JYW1vdW50ID0gRGly ZWN0RnVuY3Rpb25DYWxsMihudW1lcmljX211bCwgYW1vdW50LCBudW1lcmljX3NjYWxlKTsKKwlu dW1lcmljX3NjYWxlID0gaW50NjRfdG9fbnVtZXJpYyhzY2FsZSk7CisKKwlhbW91bnQgPSBudW1l cmljX211bF9zYWZlKGFtb3VudCwgbnVtZXJpY19zY2FsZSwgZmNpbmZvLT5jb250ZXh0KTsKKwlp ZiAodW5saWtlbHkoU09GVF9FUlJPUl9PQ0NVUlJFRChmY2luZm8tPmNvbnRleHQpKSkKKwkJUEdf UkVUVVJOX05VTEwoKTsKIAogCS8qIG5vdGUgdGhhdCBudW1lcmljX2ludDggd2lsbCByb3VuZCB0 byBuZWFyZXN0IGludGVnZXIgZm9yIHVzICovCi0JcmVzdWx0ID0gRGF0dW1HZXRJbnQ2NChEaXJl Y3RGdW5jdGlvbkNhbGwxKG51bWVyaWNfaW50OCwgYW1vdW50KSk7CisJcmVzdWx0ID0gbnVtZXJp Y19pbnQ4X3NhZmUoYW1vdW50LCBmY2luZm8tPmNvbnRleHQpOworCWlmICh1bmxpa2VseShTT0ZU X0VSUk9SX09DQ1VSUkVEKGZjaW5mby0+Y29udGV4dCkpKQorCQlQR19SRVRVUk5fTlVMTCgpOwog CiAJUEdfUkVUVVJOX0NBU0gocmVzdWx0KTsKIH0KQEAgLTExNTgsOCArMTE2NCwxMCBAQCBpbnQ0 X2Nhc2goUEdfRlVOQ1RJT05fQVJHUykKIAkJc2NhbGUgKj0gMTA7CiAKIAkvKiBjb21wdXRlIGFt b3VudCAqIHNjYWxlLCBjaGVja2luZyBmb3Igb3ZlcmZsb3cgKi8KLQlyZXN1bHQgPSBEYXR1bUdl dEludDY0KERpcmVjdEZ1bmN0aW9uQ2FsbDIoaW50OG11bCwgSW50NjRHZXREYXR1bShhbW91bnQp LAotCQkJCQkJCQkJCQkgICBJbnQ2NEdldERhdHVtKHNjYWxlKSkpOworCWlmICh1bmxpa2VseShw Z19tdWxfczY0X292ZXJmbG93KGFtb3VudCwgc2NhbGUsICZyZXN1bHQpKSkKKwkJZXJldHVybihm Y2luZm8tPmNvbnRleHQsIChEYXR1bSkgMCwKKwkJCQllcnJjb2RlKEVSUkNPREVfTlVNRVJJQ19W QUxVRV9PVVRfT0ZfUkFOR0UpLAorCQkJCWVycm1zZygiYmlnaW50IG91dCBvZiByYW5nZSIpKTsK IAogCVBHX1JFVFVSTl9DQVNIKHJlc3VsdCk7CiB9CkBAIC0xMTg4LDggKzExOTYsMTAgQEAgaW50 OF9jYXNoKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXNjYWxlICo9IDEwOwogCiAJLyogY29tcHV0ZSBh bW91bnQgKiBzY2FsZSwgY2hlY2tpbmcgZm9yIG92ZXJmbG93ICovCi0JcmVzdWx0ID0gRGF0dW1H ZXRJbnQ2NChEaXJlY3RGdW5jdGlvbkNhbGwyKGludDhtdWwsIEludDY0R2V0RGF0dW0oYW1vdW50 KSwKLQkJCQkJCQkJCQkJICAgSW50NjRHZXREYXR1bShzY2FsZSkpKTsKKwlpZiAodW5saWtlbHko cGdfbXVsX3M2NF9vdmVyZmxvdyhhbW91bnQsIHNjYWxlLCAmcmVzdWx0KSkpCisJCWVyZXR1cm4o ZmNpbmZvLT5jb250ZXh0LCAoRGF0dW0pIDAsCisJCQkJZXJyY29kZShFUlJDT0RFX05VTUVSSUNf VkFMVUVfT1VUX09GX1JBTkdFKSwKKwkJCQllcnJtc2coImJpZ2ludCBvdXQgb2YgcmFuZ2UiKSk7 CiAKIAlQR19SRVRVUk5fQ0FTSChyZXN1bHQpOwogfQotLSAKMi4zNC4xCgo= --0000000000006bcf4f064e0ad34e Content-Type: text/x-patch; charset="US-ASCII"; name="v25-0009-CAST-expr-AS-newtype-DEFAULT-expr-ON-CONVERSION-ERROR.patch" Content-Disposition: attachment; filename="v25-0009-CAST-expr-AS-newtype-DEFAULT-expr-ON-CONVERSION-ERROR.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn9lohru0 RnJvbSBmZjJjZTExNzIyNWFjNDY5NzBlZjI1MTY5OGM0NGY1MWUxODM5ZTljIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMjggTWFyIDIwMjYgMDg6MzY6MjQgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy NSA5LzldIENBU1QoZXhwciBBUyBuZXd0eXBlIERFRkFVTFQgZXhwciBPTiBDT05WRVJTSU9OCiBF UlJPUikKCkludHJvZHVjZSBTUUwtc3RhbmRhcmQgc2FmZSB0eXBlIGNhc3Qgc3ludGF4OgogICAg Q0FTVChleHByIEFTIG5ld3R5cGUgREVGQVVMVCBleHByIE9OIENPTlZFUlNJT04gRVJST1IpClRo aXMgYWxsb3cgdXNlcnMgdG8gc3BlY2lmeSBhIGRlZmF1bHQgZmFsbGJhY2sgZXhwcmVzc2lvbiBp ZiBhIHR5cGUgY29udmVyc2lvbgpmYWlscywgcmF0aGVyIHRoYW4gcmFpc2luZyBhbiBlcnJvci4K CldpdGggdGhpcyBwYXRjaHNldCwgYWxtb3N0IGFsbCBvZiB0aGUgY2FzdCBmdW5jdGlvbnMgaW4g cGdfY2FzdC5jYXN0ZnVuYyBhcmUgbm93CmVycm9yLXNhZmUuICBDb2VyY2VWaWFJTyBhbmQgQ29l cmNlVG9Eb21haW4gd2VyZSBhbHJlYWR5IGVycm9yLXNhZmUgaW4gdGhlIEhFQUQsCnNlZSBbMF0s IHRoaXMgcGF0Y2ggZXh0ZW5kcyBlcnJvci1zYWZlIGJlaGF2aW9yIHRvIEFycmF5Q29lcmNlRXhw ci4KCkV4YW1wbGU6CiAgICAtLSBSZXR1cm5zICcyMDExLTAxLTAxJyBpbnN0ZWFkIG9mIHRocm93 aW5nIGFuIGludmFsaWQgaW5wdXQgc3ludGF4IGVycm9yLgogICAgU0VMRUNUIENBU1QoJzEnIEFT IGRhdGUgREVGQVVMVCAnMjAxMS0wMS0wMScgT04gQ09OVkVSU0lPTiBFUlJPUik7CgojIEJ1bXBz IGNhdHZlcnNpb24gcmVxdWlyZWQKClswXTogaHR0cHM6Ly9naXQucG9zdGdyZXNxbC5vcmcvY2dp dC9wb3N0Z3Jlc3FsLmdpdC9jb21taXQvP2lkPWFhYWY5NDQ5ZWM2YmU2MmNiMGQzMGVkMzU4OGRj Mzg0ZjU2Mjc0YgoKQXV0aG9yOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ ClJldmlld2VkLWJ5OiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBB bmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4KUmV2aWV3ZWQtYnk6IENvcmV5IEh1 aW5rZXIgPGNvcmV5Lmh1aW5rZXJAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogS2lyaWxsIFJlc2hr ZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IE1hdGhldXMgQWxjYW50YXJh IDxtYXRoZXVzc3NpbHY5N0BnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vQ0FEa0xNPWZ2MUpmWTRVZmEtamN3d05ialFpeE5WaXNrUThqWnUzVHpfcDY1NmlfNGhRQG1h aWwuZ21haWwuY29tCkNvbW1pdGZlc3Q6IGh0dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3FsLm9y Zy9wYXRjaC81OTQxCi0tLQogY29udHJpYi9jaXRleHQvZXhwZWN0ZWQvY2l0ZXh0Lm91dCAgICAg ICAgICAgIHwgICAgNSArCiBjb250cmliL2NpdGV4dC9leHBlY3RlZC9jaXRleHRfMS5vdXQgICAg ICAgICAgfCAgICA1ICsKIGNvbnRyaWIvY2l0ZXh0L3NxbC9jaXRleHQuc3FsICAgICAgICAgICAg ICAgICB8ICAgIDIgKwogLi4uL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC9zZWxlY3Qub3V0 ICAgIHwgICAyNCArLQogY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3NlbGVjdC5zcWwg ICAgIHwgICAgNSArCiBkb2Mvc3JjL3NnbWwvc3ludGF4LnNnbWwgICAgICAgICAgICAgICAgICAg ICAgfCAgIDMyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgICAgICAgICAgICAg ICB8ICAgNjEgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMgICAgICAg ICB8ICAgMjkgKwogc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMgICAgICAgICAg IHwgICA1NiArCiBzcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyAgICAgICAgICAgICAgICAg fCAgIDUzICsKIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYyAgICAgICAgICB8 ICAgOTAgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8 ICAgMjMgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jICAgICAgICAgICAgICAgIHwg ICAgOSArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY29lcmNlLmMgICAgICAgICAgICAgfCAg MTQyICsrLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgICAgICAgICAgICAgIHwg IDM1OCArKysrKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgICAgICAgICAgICAg ICB8ICAgIDMgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jICAgICAgICAgICAg IHwgICAgMyArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3R5cGUuYyAgICAgICAgICAgICAg IHwgICAxOCArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAgICAg fCAgICAyICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlmdW5jcy5jICAgICAgICAgICAg fCAgICA5ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8 ICAgMjUgKwogc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMgICAgICAgICAgICAgICAgIHwg ICAxMyArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oICAgICAgICAgICAgICAgfCAg ICA3ICsKIHNyYy9pbmNsdWRlL2ZtZ3IuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg IDMgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgICAy MSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgICAgfCAgICAx ICsKIHNyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgMzYg Kwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oICAgICAgICAgICAgIHwgICAgMiAr LQogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2NvZXJjZS5oICAgICAgICAgICAgIHwgICAxNiAr LQogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCAgICAgICAgICAgICAgIHwgICAgMiAr CiBzcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdHlwZS5oICAgICAgICAgICAgICAgfCAgICAyICsK IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY2FzdC5vdXQgICAgICAgICAgICB8IDEwNzEgKysr KysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2Nhc3Qub3V0 ICAgICB8ICAgIDUgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9lcXVpdmNsYXNzLm91dCAg ICAgIHwgICAgNyArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3htbC5vdXQgICAgICAgICAg ICAgfCAgICA2ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQveG1sXzEub3V0ICAgICAgICAg ICB8ICAgIDMgKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAg IHwgICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY2FzdC5zcWwgICAgICAgICAgICAgICAg IHwgIDQyNCArKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfY2FzdC5zcWwgICAg ICAgICAgfCAgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2VxdWl2Y2xhc3Muc3FsICAgICAg ICAgICB8ICAgIDMgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwveG1sLnNxbCAgICAgICAgICAgICAg ICAgIHwgICAgMiArCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAg ICAgfCAgICAyICsKIDQyIGZpbGVzIGNoYW5nZWQsIDI0ODkgaW5zZXJ0aW9ucygrKSwgOTQgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9j YXN0Lm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Nhc3Quc3Fs CgpkaWZmIC0tZ2l0IGEvY29udHJpYi9jaXRleHQvZXhwZWN0ZWQvY2l0ZXh0Lm91dCBiL2NvbnRy aWIvY2l0ZXh0L2V4cGVjdGVkL2NpdGV4dC5vdXQKaW5kZXggOGMwYmY1NGYwZjMuLmVjZmFmMmFh ODVhIDEwMDY0NAotLS0gYS9jb250cmliL2NpdGV4dC9leHBlY3RlZC9jaXRleHQub3V0CisrKyBi L2NvbnRyaWIvY2l0ZXh0L2V4cGVjdGVkL2NpdGV4dC5vdXQKQEAgLTEwLDYgKzEwLDExIEBAIFdI RVJFIG9wYy5vaWQgPj0gMTYzODQgQU5EIE5PVCBhbXZhbGlkYXRlKG9wYy5vaWQpOwogLS0tLS0t LS0rLS0tLS0tLS0tCiAoMCByb3dzKQogCitTRUxFQ1QgQ0FTVCgnYWJjJzo6YnBjaGFyIEFTIGNp dGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitFUlJPUjog IGNhbm5vdCBjYXN0IHR5cGUgY2hhcmFjdGVyIHRvIGNpdGV4dCB3aGVuIERFRkFVTFQgZXhwcmVz c2lvbiBpcyBzcGVjaWZpZWQgaW4gQ0FTVCAuLi4gT04gQ09OVkVSU0lPTiBFUlJPUgorTElORSAx OiBTRUxFQ1QgQ0FTVCgnYWJjJzo6YnBjaGFyIEFTIGNpdGV4dCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0kuLi4KKyAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIFNhZmUgdHlwZSBjYXN0IGZv ciB1c2VyLWRlZmluZWQgdHlwZXMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkLgogLS0gVGVzdCB0aGUg b3BlcmF0b3JzIGFuZCBpbmRleGluZyBmdW5jdGlvbnMKIC0tIFRlc3QgPSBhbmQgPD4uCiBTRUxF Q1QgJ2EnOjpjaXRleHQgPSAnYSc6OmNpdGV4dCBBUyB0OwpkaWZmIC0tZ2l0IGEvY29udHJpYi9j aXRleHQvZXhwZWN0ZWQvY2l0ZXh0XzEub3V0IGIvY29udHJpYi9jaXRleHQvZXhwZWN0ZWQvY2l0 ZXh0XzEub3V0CmluZGV4IGM1ZTVmMTgwZjJiLi4zZTEyY2Q3OTNhZCAxMDA2NDQKLS0tIGEvY29u dHJpYi9jaXRleHQvZXhwZWN0ZWQvY2l0ZXh0XzEub3V0CisrKyBiL2NvbnRyaWIvY2l0ZXh0L2V4 cGVjdGVkL2NpdGV4dF8xLm91dApAQCAtMTAsNiArMTAsMTEgQEAgV0hFUkUgb3BjLm9pZCA+PSAx NjM4NCBBTkQgTk9UIGFtdmFsaWRhdGUob3BjLm9pZCk7CiAtLS0tLS0tLSstLS0tLS0tLS0KICgw IHJvd3MpCiAKK1NFTEVDVCBDQVNUKCdhYmMnOjpicGNoYXIgQVMgY2l0ZXh0IERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK0VSUk9SOiAgY2Fubm90IGNhc3QgdHlw ZSBjaGFyYWN0ZXIgdG8gY2l0ZXh0IHdoZW4gREVGQVVMVCBleHByZXNzaW9uIGlzIHNwZWNpZmll ZCBpbiBDQVNUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SCitMSU5FIDE6IFNFTEVDVCBDQVNUKCdh YmMnOjpicGNoYXIgQVMgY2l0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSS4uLgorICAgICAg ICAgICAgICAgICAgICBeCitISU5UOiAgU2FmZSB0eXBlIGNhc3QgZm9yIHVzZXItZGVmaW5lZCB0 eXBlcyBhcmUgbm90IHlldCBzdXBwb3J0ZWQuCiAtLSBUZXN0IHRoZSBvcGVyYXRvcnMgYW5kIGlu ZGV4aW5nIGZ1bmN0aW9ucwogLS0gVGVzdCA9IGFuZCA8Pi4KIFNFTEVDVCAnYSc6OmNpdGV4dCA9 ICdhJzo6Y2l0ZXh0IEFTIHQ7CmRpZmYgLS1naXQgYS9jb250cmliL2NpdGV4dC9zcWwvY2l0ZXh0 LnNxbCBiL2NvbnRyaWIvY2l0ZXh0L3NxbC9jaXRleHQuc3FsCmluZGV4IGFhMWNmOWFiZDVjLi5j ODIwYjBiZDRkOSAxMDA2NDQKLS0tIGEvY29udHJpYi9jaXRleHQvc3FsL2NpdGV4dC5zcWwKKysr IGIvY29udHJpYi9jaXRleHQvc3FsL2NpdGV4dC5zcWwKQEAgLTksNiArOSw4IEBAIFNFTEVDVCBh bW5hbWUsIG9wY25hbWUKIEZST00gcGdfb3BjbGFzcyBvcGMgTEVGVCBKT0lOIHBnX2FtIGFtIE9O IGFtLm9pZCA9IG9wY21ldGhvZAogV0hFUkUgb3BjLm9pZCA+PSAxNjM4NCBBTkQgTk9UIGFtdmFs aWRhdGUob3BjLm9pZCk7CiAKK1NFTEVDVCBDQVNUKCdhYmMnOjpicGNoYXIgQVMgY2l0ZXh0IERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKKwogLS0gVGVzdCB0aGUg b3BlcmF0b3JzIGFuZCBpbmRleGluZyBmdW5jdGlvbnMKIAogLS0gVGVzdCA9IGFuZCA8Pi4KZGlm ZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3NlbGVjdC5vdXQg Yi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC9zZWxlY3Qub3V0CmluZGV4IGEw NjkxMTljNzkwLi44NGYxMDgxMGY3MiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRl bWVudHMvZXhwZWN0ZWQvc2VsZWN0Lm91dAorKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50 cy9leHBlY3RlZC9zZWxlY3Qub3V0CkBAIC03Myw2ICs3MywyNSBAQCBTRUxFQ1QgMSBBUyAiaW50 IiBPRkZTRVQgMiBGRVRDSCBGSVJTVCAzIFJPVyBPTkxZOwogLS0tLS0KICgwIHJvd3MpCiAKKy0t IGVycm9yIHNhZmUgdHlwZSBjYXN0CitTRUxFQ1QgQ0FTVCgnYScgQVMgaW50IERFRkFVTFQgMiBP TiBDT05WRVJTSU9OIEVSUk9SKTsKKyBpbnQ0IAorLS0tLS0tCisgICAgMgorKDEgcm93KQorCitT RUxFQ1QgQ0FTVCgnMTInIEFTIG51bWVyaWMgREVGQVVMVCAyIE9OIENPTlZFUlNJT04gRVJST1Ip OworIG51bWVyaWMgCistLS0tLS0tLS0KKyAgICAgIDEyCisoMSByb3cpCisKK1NFTEVDVCBDQVNU KCcxMicgQVMgbnVtZXJpYygxMCkgREVGQVVMVCAyIE9OIENPTlZFUlNJT04gRVJST1IpOworIG51 bWVyaWMgCistLS0tLS0tLS0KKyAgICAgIDEyCisoMSByb3cpCisKIC0tIERJU1RJTkNUIGFuZCBP UkRFUiBCWSBwYXR0ZXJucwogLS0gVHJ5IHNvbWUgcXVlcnkgcGVybXV0YXRpb25zIHdoaWNoIG9u Y2UgcHJvZHVjZWQgaWRlbnRpY2FsIHF1ZXJ5IElEcwogU0VMRUNUIERJU1RJTkNUIDEgQVMgImlu dCI7CkBAIC0yMjIsNiArMjQxLDkgQEAgU0VMRUNUIGNhbGxzLCByb3dzLCBxdWVyeSBGUk9NIHBn X3N0YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKICAgICAgMiB8ICAg IDIgfCBTRUxFQ1QgJDEgQVMgImludCIgT1JERVIgQlkgMQogICAgICAxIHwgICAgMiB8IFNFTEVD VCAkMSBBUyBpIFVOSU9OIFNFTEVDVCAkMiBPUkRFUiBCWSBpCiAgICAgIDEgfCAgICAxIHwgU0VM RUNUICQxIHx8ICQyCisgICAgIDEgfCAgICAxIHwgU0VMRUNUIENBU1QoJDEgQVMgaW50IERFRkFV TFQgJDIgT04gQ09OVkVSU0lPTiBFUlJPUikKKyAgICAgMSB8ICAgIDEgfCBTRUxFQ1QgQ0FTVCgk MSBBUyBudW1lcmljIERFRkFVTFQgJDIgT04gQ09OVkVSU0lPTiBFUlJPUikKKyAgICAgMSB8ICAg IDEgfCBTRUxFQ1QgQ0FTVCgkMSBBUyBudW1lcmljKDEwKSBERUZBVUxUICQyIE9OIENPTlZFUlNJ T04gRVJST1IpCiAgICAgIDIgfCAgICAyIHwgU0VMRUNUIERJU1RJTkNUICQxIEFTICJpbnQiCiAg ICAgIDAgfCAgICAwIHwgU0VMRUNUIGNhbGxzLCByb3dzLCBxdWVyeSBGUk9NIHBnX3N0YXRfc3Rh dGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIgogICAgICAxIHwgICAgMSB8IFNFTEVD VCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0CkBAIC0yMzAsNyAr MjUyLDcgQEAgU0VMRUNUIGNhbGxzLCByb3dzLCBxdWVyeSBGUk9NIHBnX3N0YXRfc3RhdGVtZW50 cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKICAgICAgICB8ICAgICAgfCApICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKwogICAgICAgIHwgICAgICB8ICAgU0VMRUNUIGYgRlJPTSB0IE9SREVSIEJZIGYK ICAgICAgMSB8ICAgIDEgfCBzZWxlY3QgJDE6Ompzb25iID8gJDIKLSgxNyByb3dzKQorKDIwIHJv d3MpCiAKIFNFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0 OwogIHQgCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvc2VsZWN0 LnNxbCBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC9zZWxlY3Quc3FsCmluZGV4IGEx MGQ2MThjMDM0Li40YmU5Nzk3N2JhNiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRl bWVudHMvc3FsL3NlbGVjdC5zcWwKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3Fs L3NlbGVjdC5zcWwKQEAgLTI1LDYgKzI1LDExIEBAIFNFTEVDVCAxIEFTICJpbnQiIExJTUlUIDMg T0ZGU0VUIDM7CiBTRUxFQ1QgMSBBUyAiaW50IiBPRkZTRVQgMSBGRVRDSCBGSVJTVCAyIFJPVyBP TkxZOwogU0VMRUNUIDEgQVMgImludCIgT0ZGU0VUIDIgRkVUQ0ggRklSU1QgMyBST1cgT05MWTsK IAorLS0gZXJyb3Igc2FmZSB0eXBlIGNhc3QKK1NFTEVDVCBDQVNUKCdhJyBBUyBpbnQgREVGQVVM VCAyIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJzEyJyBBUyBudW1lcmljIERF RkFVTFQgMiBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcxMicgQVMgbnVtZXJp YygxMCkgREVGQVVMVCAyIE9OIENPTlZFUlNJT04gRVJST1IpOworCiAtLSBESVNUSU5DVCBhbmQg T1JERVIgQlkgcGF0dGVybnMKIC0tIFRyeSBzb21lIHF1ZXJ5IHBlcm11dGF0aW9ucyB3aGljaCBv bmNlIHByb2R1Y2VkIGlkZW50aWNhbCBxdWVyeSBJRHMKIFNFTEVDVCBESVNUSU5DVCAxIEFTICJp bnQiOwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21sIGIvZG9jL3NyYy9zZ21s L3N5bnRheC5zZ21sCmluZGV4IDY3NDgyOTk2ODYxLi5hYTBmYzFlZjgxYyAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9zeW50YXguc2dtbApA QCAtMjA3MSw2ICsyMDcxLDEwIEBAIENBU1QgKCA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVw bGFjZWFibGU+IEFTIDxyZXBsYWNlYWJsZT50eXBlPC9yZXBsYWNlYWJsZT4KICAgICBUaGUgPGxp dGVyYWw+Q0FTVDwvbGl0ZXJhbD4gc3ludGF4IGNvbmZvcm1zIHRvIFNRTDsgdGhlIHN5bnRheCB3 aXRoCiAgICAgPGxpdGVyYWw+Ojo8L2xpdGVyYWw+IGlzIGhpc3RvcmljYWwgPHByb2R1Y3RuYW1l PlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPgogICAgIHVzYWdlLgorICAgIFRoZSBkZWZhdWx0IGJl aGF2aW9yIHdoZW4gbm8gPGxpdGVyYWw+T04gQ09OVkVSU0lPTiBFUlJPUjwvbGl0ZXJhbD4gY2xh dXNlIGlzIHNwZWNpZmllZCBpcyBlcXVpdmFsZW50IHRvOgorPHN5bm9wc2lzPgorQ0FTVCAoIDxy ZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gQVMgPHJlcGxhY2VhYmxlPnR5cGU8 L3JlcGxhY2VhYmxlPiBFUlJPUiBPTiBDT05WRVJTSU9OIEVSUk9SICkKKzwvc3lub3BzaXM+CiAg ICA8L3BhcmE+CiAKICAgIDxwYXJhPgpAQCAtMjEyNSw2ICsyMTI5LDM0IEBAIENBU1QgKCA8cmVw bGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IEFTIDxyZXBsYWNlYWJsZT50eXBlPC9y ZXBsYWNlYWJsZT4KICAgICAgPHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZWNhc3QiLz4uCiAgICAg PC9wYXJhPgogICAgPC9ub3RlPgorCisgPHNlY3QzIGlkPSJzcWwtc3ludGF4LXR5cGUtY2FzdHMt c2FmZSI+CisgIDx0aXRsZT5TYWZlIFR5cGUgQ2FzdDwvdGl0bGU+CisgICA8cGFyYT4KKyAgICBB IHR5cGUgY2FzdCBtYXkgb2NjYXNpb25hbGx5IGZhaWwuIFRvIGd1YXJkIGFnYWluc3Qgc3VjaCBm YWlsdXJlcywgeW91IGNhbgorICAgIHByb3ZpZGUgYW4gPGxpdGVyYWw+T04gQ09OVkVSU0lPTiBF UlJPUjwvbGl0ZXJhbD4gY2xhdXNlIHRvIGhhbmRsZSBwb3RlbnRpYWwgZXJyb3JzLgorICAgIFRo ZSBzeW50YXggZm9yIHNhZmUgdHlwZSBjYXN0IGlzOgorPHN5bm9wc2lzPgorQ0FTVCAoIDxyZXBs YWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gQVMgPHJlcGxhY2VhYmxlPnR5cGU8L3Jl cGxhY2VhYmxlPiBERUZBVUxUIDxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4g T04gQ09OVkVSU0lPTiBFUlJPUiApCis8L3N5bm9wc2lzPgorICAgIElmIHRoZSB0eXBlIGNhc3Qg ZmFpbHMsIGFuIGVycm9yIGlzIG5vdCByYWlzZWQuICBJbnN0ZWFkLCBldmFsdWF0aW9uIGZhbGxz CisgICAgYmFjayB0byB0aGUgZGVmYXVsdCA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFj ZWFibGU+IHNwZWNpZmllZCBpbiB0aGUKKyAgICA8bGl0ZXJhbD5PTiBDT05WRVJTSU9OIEVSUk9S PC9saXRlcmFsPiBjbGF1c2UuCisgICAgQXQgcHJlc2VudCwgdGhpcyBvbmx5IHN1cHBvcnQgYnVp bHQtaW4gdHlwZSBjYXN0cywgc2VlIDx4cmVmIGxpbmtlbmQ9ImNhdGFsb2ctcGctY2FzdCIvPi4K KyAgICBVc2VyLWRlZmluZWQgdHlwZSBjYXN0cyBjcmVhdGVkIHdpdGggPGxpbmsgbGlua2VuZD0i c3FsLWNyZWF0ZWNhc3QiPkNSRUFURSBDQVNUPC9saW5rPgorICAgIGFyZSBub3Qgc3VwcG9ydGVk LgorICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICBTb21lIGV4YW1wbGVzOgorPHNjcmVlbj4K K1NFTEVDVCBDQVNUKFRFWFQgJ2Vycm9yJyBBUyBpbnRlZ2VyIERFRkFVTFQgMyBPTiBDT05WRVJT SU9OIEVSUk9SKTsKKzxsaW5lYW5ub3RhdGlvbj5SZXN1bHQ6IDwvbGluZWFubm90YXRpb24+PGNv bXB1dGVyb3V0cHV0PjM8L2NvbXB1dGVyb3V0cHV0PgorU0VMRUNUIENBU1QoVEVYVCAnZXJyb3In IEFTIG51bWVyaWMgREVGQVVMVCAxLjEgT04gQ09OVkVSU0lPTiBFUlJPUik7Cis8bGluZWFubm90 YXRpb24+UmVzdWx0OiA8L2xpbmVhbm5vdGF0aW9uPjxjb21wdXRlcm91dHB1dD4xLjE8L2NvbXB1 dGVyb3V0cHV0PgorPC9zY3JlZW4+CisgICAgPC9wYXJhPgorICA8L3NlY3QzPgogICA8L3NlY3Qy PgogCiAgIDxzZWN0MiBpZD0ic3FsLXN5bnRheC1jb2xsYXRlLWV4cHJzIj4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjRXhwci5jCmluZGV4IDc3MjI5MTQxYjM4Li41MWNmZDU0NzJlNSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjRXhwci5jCkBAIC05OSw2ICs5OSw5IEBAIHN0YXRpYyB2b2lkIEV4ZWNCdWlsZEFnZ1RyYW5z Q2FsbChFeHByU3RhdGUgKnN0YXRlLCBBZ2dTdGF0ZSAqYWdnc3RhdGUsCiBzdGF0aWMgdm9pZCBF eGVjSW5pdEpzb25FeHByKEpzb25FeHByICpqc2V4cHIsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJ CQkJIERhdHVtICpyZXN2LCBib29sICpyZXNudWxsLAogCQkJCQkJCSBFeHByRXZhbFN0ZXAgKnNj cmF0Y2gpOworc3RhdGljIHZvaWQgRXhlY0luaXRTYWZlVHlwZUNhc3RFeHByKFNhZmVUeXBlQ2Fz dEV4cHIgKnN0Y2V4cHIsIEV4cHJTdGF0ZSAqc3RhdGUsCisJCQkJCQkJCQkgRGF0dW0gKnJlc3Ys IGJvb2wgKnJlc251bGwsCisJCQkJCQkJCQkgRXhwckV2YWxTdGVwICpzY3JhdGNoKTsKIHN0YXRp YyB2b2lkIEV4ZWNJbml0SnNvbkNvZXJjaW9uKEV4cHJTdGF0ZSAqc3RhdGUsIEpzb25SZXR1cm5p bmcgKnJldHVybmluZywKIAkJCQkJCQkJIEVycm9yU2F2ZUNvbnRleHQgKmVzY29udGV4dCwgYm9v bCBvbWl0X3F1b3RlcywKIAkJCQkJCQkJIGJvb2wgZXhpc3RzX2NvZXJjZSwKQEAgLTE3MzQsNiAr MTczNyw3IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAog CiAJCQkJZWxlbXN0YXRlLT5pbm5lcm1vc3RfY2FzZXZhbCA9IHBhbGxvY19vYmplY3QoRGF0dW0p OwogCQkJCWVsZW1zdGF0ZS0+aW5uZXJtb3N0X2Nhc2VudWxsID0gcGFsbG9jX29iamVjdChib29s KTsKKwkJCQllbGVtc3RhdGUtPmVzY29udGV4dCA9IHN0YXRlLT5lc2NvbnRleHQ7CiAKIAkJCQlF eGVjSW5pdEV4cHJSZWMoYWNvZXJjZS0+ZWxlbWV4cHIsIGVsZW1zdGF0ZSwKIAkJCQkJCQkJJmVs ZW1zdGF0ZS0+cmVzdmFsdWUsICZlbGVtc3RhdGUtPnJlc251bGwpOwpAQCAtMjIwOSw2ICsyMjEz LDE1IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJ CWJyZWFrOwogCQkJfQogCisJCWNhc2UgVF9TYWZlVHlwZUNhc3RFeHByOgorCQkJeworCQkJCVNh ZmVUeXBlQ2FzdEV4cHIgKnN0Y2V4cHIgPSBjYXN0Tm9kZShTYWZlVHlwZUNhc3RFeHByLCBub2Rl KTsKKworCQkJCUV4ZWNJbml0U2FmZVR5cGVDYXN0RXhwcihzdGNleHByLCBzdGF0ZSwgcmVzdiwg cmVzbnVsbCwgJnNjcmF0Y2gpOworCisJCQkJYnJlYWs7CisJCQl9CisKIAkJY2FzZSBUX0NvYWxl c2NlRXhwcjoKIAkJCXsKIAkJCQlDb2FsZXNjZUV4cHIgKmNvYWxlc2NlID0gKENvYWxlc2NlRXhw ciAqKSBub2RlOwpAQCAtMjc2OSw3ICsyNzgyLDggQEAgRXhlY0luaXRGdW5jKEV4cHJFdmFsU3Rl cCAqc2NyYXRjaCwgRXhwciAqbm9kZSwgTGlzdCAqYXJncywgT2lkIGZ1bmNpZCwKIAogCS8qIElu aXRpYWxpemUgZnVuY3Rpb24gY2FsbCBwYXJhbWV0ZXIgc3RydWN0dXJlIHRvbyAqLwogCUluaXRG dW5jdGlvbkNhbGxJbmZvRGF0YSgqZmNpbmZvLCBmbGluZm8sCi0JCQkJCQkJIG5hcmdzLCBpbnB1 dGNvbGxpZCwgTlVMTCwgTlVMTCk7CisJCQkJCQkJIG5hcmdzLCBpbnB1dGNvbGxpZCwKKwkJCQkJ CQkgKE5vZGUgKikgc3RhdGUtPmVzY29udGV4dCwgTlVMTCk7CiAKIAkvKiBLZWVwIGV4dHJhIGNv cGllcyBvZiB0aGlzIGluZm8gdG8gc2F2ZSBhbiBpbmRpcmVjdGlvbiBhdCBydW50aW1lICovCiAJ c2NyYXRjaC0+ZC5mdW5jLmZuX2FkZHIgPSBmbGluZm8tPmZuX2FkZHI7CkBAIC00NzcwLDYgKzQ3 ODQsNTEgQEAgRXhlY0J1aWxkUGFyYW1TZXRFcXVhbChUdXBsZURlc2MgZGVzYywKIAlyZXR1cm4g c3RhdGU7CiB9CiAKKy8qCisgKiBQdXNoIHN0ZXBzIHRvIGV2YWx1YXRlIGEgU2FmZVR5cGVDYXN0 RXhwciBhbmQgaXRzIHZhcmlvdXMgc3Vic2lkaWFyeQorICogZXhwcmVzc2lvbnMuCisgKi8KK3N0 YXRpYyB2b2lkCitFeGVjSW5pdFNhZmVUeXBlQ2FzdEV4cHIoU2FmZVR5cGVDYXN0RXhwciAqc3Rj ZXhwciwgRXhwclN0YXRlICpzdGF0ZSwKKwkJCQkJCSBEYXR1bSAqcmVzdiwgYm9vbCAqcmVzbnVs bCwKKwkJCQkJCSBFeHByRXZhbFN0ZXAgKnNjcmF0Y2gpCit7CisJLyoKKwkgKiBDb2VyY2lvbiB0 byB0aGUgdGFyZ2V0IHR5cGUgZmFpbGVkLiBGYWxsaW5nIGJhY2sgdG8gdGhlIERFRkFVTFQKKwkg KiBleHByZXNzaW9uIGZyb20gdGhlIE9OIENPTlZFUlNJT04gRVJST1IgY2xhdXNlIHRvIGZpbmlz aC4KKwkgKi8KKwlpZiAoc3RjZXhwci0+Y2FzdGV4cHIgPT0gTlVMTCkKKwl7CisJCUV4ZWNJbml0 RXhwclJlYyhzdGNleHByLT5kZWZleHByLCBzdGF0ZSwgcmVzdiwgcmVzbnVsbCk7CisKKwkJcmV0 dXJuOworCX0KKwllbHNlCisJeworCQlTYWZlVHlwZUNhc3RTdGF0ZSAqc3Rjc3RhdGUgPSBwYWxs b2MwX29iamVjdChTYWZlVHlwZUNhc3RTdGF0ZSk7CisJCUVycm9yU2F2ZUNvbnRleHQgKnNhdmVk X2VzY29udGV4dCA9IHN0YXRlLT5lc2NvbnRleHQ7CisKKwkJc3Rjc3RhdGUtPnN0Y2V4cHIgPSBz dGNleHByOworCQlzdGNzdGF0ZS0+ZXNjb250ZXh0LnR5cGUgPSBUX0Vycm9yU2F2ZUNvbnRleHQ7 CisJCXN0YXRlLT5lc2NvbnRleHQgPSAmc3Rjc3RhdGUtPmVzY29udGV4dDsKKworCQkvKiBldmFs dWF0ZSBhcmd1bWVudCBleHByZXNzaW9uIGludG8gc3RlcCdzIHJlc3VsdCBhcmVhICovCisJCUV4 ZWNJbml0RXhwclJlYyhzdGNleHByLT5jYXN0ZXhwciwgc3RhdGUsIHJlc3YsIHJlc251bGwpOwor CQlzY3JhdGNoLT5vcGNvZGUgPSBFRU9QX1NBRkVUWVBFX0NBU1Q7CisJCXNjcmF0Y2gtPmQuc3Rj ZXhwci5zdGNzdGF0ZSA9IHN0Y3N0YXRlOworCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCBzY3Jh dGNoKTsKKworCQkvKgorCQkgKiBFdmFsdWF0ZSB0aGUgREVGQVVMVCBleHByZXNzaW9uIGNhc3Qu IHN0YXRlLT5lc2NvbnRleHQgc2hvdWxkIGJlCisJCSAqIHRoZSBwcmV2aW91cyB1c2VkIG9uZQor CQkgKi8KKwkJc3RhdGUtPmVzY29udGV4dCA9IHNhdmVkX2VzY29udGV4dDsKKwkJRXhlY0luaXRF eHByUmVjKHN0Y3N0YXRlLT5zdGNleHByLT5kZWZleHByLCBzdGF0ZSwgcmVzdiwgcmVzbnVsbCk7 CisKKwkJc3Rjc3RhdGUtPmp1bXBfZW5kID0gc3RhdGUtPnN0ZXBzX2xlbjsKKwl9Cit9CisKIC8q CiAgKiBQdXNoIHN0ZXBzIHRvIGV2YWx1YXRlIGEgSnNvbkV4cHIgYW5kIGl0cyB2YXJpb3VzIHN1 YnNpZGlhcnkgZXhwcmVzc2lvbnMuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNFeHBySW50ZXJwLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVy cC5jCmluZGV4IDQzMTE2NDMxZWRmLi43OWViZTAyNTRmZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjRXhwckludGVycC5jCkBAIC01NzAsNiArNTcwLDcgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0 YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJCSYmQ0FT RV9FRU9QX1hNTEVYUFIsCiAJCSYmQ0FTRV9FRU9QX0pTT05fQ09OU1RSVUNUT1IsCiAJCSYmQ0FT RV9FRU9QX0lTX0pTT04sCisJCSYmQ0FTRV9FRU9QX1NBRkVUWVBFX0NBU1QsCiAJCSYmQ0FTRV9F RU9QX0pTT05FWFBSX1BBVEgsCiAJCSYmQ0FTRV9FRU9QX0pTT05FWFBSX0NPRVJDSU9OLAogCQkm JkNBU0VfRUVPUF9KU09ORVhQUl9DT0VSQ0lPTl9GSU5JU0gsCkBAIC0xOTI4LDYgKzE5MjksMjgg QEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0 LCBib29sICppc251bGwpCiAJCQlFRU9fTkVYVCgpOwogCQl9CiAKKwkJRUVPX0NBU0UoRUVPUF9T QUZFVFlQRV9DQVNUKQorCQl7CisJCQlTYWZlVHlwZUNhc3RTdGF0ZSAqc3Rjc3RhdGUgPSBvcC0+ ZC5zdGNleHByLnN0Y3N0YXRlOworCisJCQlpZiAoIVNPRlRfRVJST1JfT0NDVVJSRUQoJnN0Y3N0 YXRlLT5lc2NvbnRleHQpKQorCQkJCUVFT19KVU1QKHN0Y3N0YXRlLT5qdW1wX2VuZCk7CisJCQll bHNlCisJCQl7CisJCQkJKm9wLT5yZXN2YWx1ZSA9IChEYXR1bSkgMDsKKwkJCQkqb3AtPnJlc251 bGwgPSB0cnVlOworCisJCQkJLyoKKwkJCQkgKiBSZXNldCBmb3IgbmV4dCB1c2Ugc3VjaCBhcyBm b3IgY2F0Y2hpbmcgZXJyb3JzIHdoZW4KKwkJCQkgKiBjb2VyY2luZyBhIGV4cHJlc3Npb24uCisJ CQkJICovCisJCQkJc3Rjc3RhdGUtPmVzY29udGV4dC5lcnJvcl9vY2N1cnJlZCA9IGZhbHNlOwor CQkJCXN0Y3N0YXRlLT5lc2NvbnRleHQuZGV0YWlsc193YW50ZWQgPSBmYWxzZTsKKworCQkJCUVF T19ORVhUKCk7CisJCQl9CisJCX0KKwogCQlFRU9fQ0FTRShFRU9QX0pTT05FWFBSX1BBVEgpCiAJ CXsKIAkJCS8qIHRvbyBjb21wbGV4IGZvciBhbiBpbmxpbmUgaW1wbGVtZW50YXRpb24gKi8KQEAg LTM2NDYsNiArMzY2OSwxMiBAQCBFeGVjRXZhbEFycmF5Q29lcmNlKEV4cHJTdGF0ZSAqc3RhdGUs IEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJDb250ZXh0ICplY29udGV4dCkKIAkJCQkJCQkgIGVjb250 ZXh0LAogCQkJCQkJCSAgb3AtPmQuYXJyYXljb2VyY2UucmVzdWx0ZWxlbXR5cGUsCiAJCQkJCQkJ ICBvcC0+ZC5hcnJheWNvZXJjZS5hbXN0YXRlKTsKKworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVE KG9wLT5kLmFycmF5Y29lcmNlLmVsZW1leHByc3RhdGUtPmVzY29udGV4dCkpCisJeworCQkqb3At PnJlc3ZhbHVlID0gKERhdHVtKSAwOworCQkqb3AtPnJlc251bGwgPSB0cnVlOworCX0KIH0KIAog LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jIGIvc3Jj L2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMKaW5kZXggNjUwZjFkNDJhOTMuLjIzM2Jk MmFlMjdiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYwor KysgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYwpAQCAtMjI1Niw2ICsyMjU2 LDYyIEBAIGxsdm1fY29tcGlsZV9leHByKEV4cHJTdGF0ZSAqc3RhdGUpCiAJCQkJTExWTUJ1aWxk QnIoYiwgb3BibG9ja3Nbb3BubyArIDFdKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBFRU9QX1NB RkVUWVBFX0NBU1Q6CisJCQkJeworCQkJCQlTYWZlVHlwZUNhc3RTdGF0ZSAqc3Rjc3RhdGUgPSBv cC0+ZC5zdGNleHByLnN0Y3N0YXRlOworCQkJCQlMTFZNQmFzaWNCbG9ja1JlZiBiX25vZXJyb3I7 CisJCQkJCUxMVk1CYXNpY0Jsb2NrUmVmIGJfZXJyb3I7CisJCQkJCUxMVk1WYWx1ZVJlZiB2X2Vy cm9yX29jY3VycmVkX3A7CisJCQkJCUxMVk1WYWx1ZVJlZiB2X2RldGFpbHNfd2FudGVkX3A7CisJ CQkJCUxMVk1WYWx1ZVJlZiB2X2Vycm9yX29jY3VycmVkOworCisJCQkJCWJfbm9lcnJvciA9IGxf YmJfYmVmb3JlX3Yob3BibG9ja3Nbb3BubyArIDFdLAorCQkJCQkJCQkJCQkgICJvcC4lZC5ub2Vy cm9yIiwgb3Bubyk7CisJCQkJCWJfZXJyb3IgPSBsX2JiX2JlZm9yZV92KG9wYmxvY2tzW29wbm8g KyAxXSwKKwkJCQkJCQkJCQkJIm9wLiVkLmVycm9yIiwgb3Bubyk7CisKKwkJCQkJLyogR2V0IHBv aW50ZXIgdG8gZXJyb3Jfb2NjdXJyZWQgZmllbGQgKi8KKwkJCQkJdl9lcnJvcl9vY2N1cnJlZF9w ID0gbF9wdHJfY29uc3QoJnN0Y3N0YXRlLT5lc2NvbnRleHQuZXJyb3Jfb2NjdXJyZWQsCisJCQkJ CQkJCQkJCQkJIGxfcHRyKFR5cGVTdG9yYWdlQm9vbCkpOworCisJCQkJCS8qIExvYWQgZXJyb3Jf b2NjdXJyZWQgYXQgcnVudGltZSAqLworCQkJCQl2X2Vycm9yX29jY3VycmVkID0gbF9sb2FkKGIs IFR5cGVTdG9yYWdlQm9vbCwgdl9lcnJvcl9vY2N1cnJlZF9wLCAiIik7CisKKwkJCQkJLyogQnJh bmNoIGJhc2VkIG9uIGVycm9yX29jY3VycmVkOiBubyBlcnJvciAtPiBqdW1wX2VuZCAqLworCQkJ CQlMTFZNQnVpbGRDb25kQnIoYiwKKwkJCQkJCQkJCUxMVk1CdWlsZElDbXAoYiwgTExWTUludEVR LCB2X2Vycm9yX29jY3VycmVkLAorCQkJCQkJCQkJCQkJICBsX3Nib29sX2NvbnN0KDApLCAiIiks CisJCQkJCQkJCQliX25vZXJyb3IsCisJCQkJCQkJCQliX2Vycm9yKTsKKworCQkJCQkvKiBObyBl cnJvcjoganVtcCB0byBlbmQgKi8KKwkJCQkJTExWTVBvc2l0aW9uQnVpbGRlckF0RW5kKGIsIGJf bm9lcnJvcik7CisJCQkJCUxMVk1CdWlsZEJyKGIsIG9wYmxvY2tzW3N0Y3N0YXRlLT5qdW1wX2Vu ZF0pOworCisJCQkJCS8qIEVycm9yIG9jY3VycmVkOiBzZXQgbnVsbCwgcmVzZXQgZmxhZ3MsIGV2 YWx1YXRlIGRlZmF1bHQgKi8KKwkJCQkJTExWTVBvc2l0aW9uQnVpbGRlckF0RW5kKGIsIGJfZXJy b3IpOworCisJCQkJCS8qIHNldCByZXNudWxsIHRvIHRydWUgKi8KKwkJCQkJTExWTUJ1aWxkU3Rv cmUoYiwgbF9zYm9vbF9jb25zdCgxKSwgdl9yZXNudWxscCk7CisKKwkJCQkJLyogcmVzZXQgcmVz dmFsdWUgKi8KKwkJCQkJTExWTUJ1aWxkU3RvcmUoYiwgbF9kYXR1bV9jb25zdCgwKSwgdl9yZXN2 YWx1ZXApOworCisJCQkJCS8qCisJCQkJCSAqIFJlc2V0IGZvciBuZXh0IHVzZSBzdWNoIGFzIGZv ciBjYXRjaGluZyBlcnJvcnMgd2hlbgorCQkJCQkgKiBjb2VyY2luZyBhIGV4cHJlc3Npb24uCisJ CQkJCSAqLworCQkJCQlMTFZNQnVpbGRTdG9yZShiLCBsX3Nib29sX2NvbnN0KDApLCB2X2Vycm9y X29jY3VycmVkX3ApOworCisJCQkJCXZfZGV0YWlsc193YW50ZWRfcCA9IGxfcHRyX2NvbnN0KCZz dGNzdGF0ZS0+ZXNjb250ZXh0LmRldGFpbHNfd2FudGVkLAorCQkJCQkJCQkJCQkJCSBsX3B0cihU eXBlU3RvcmFnZUJvb2wpKTsKKwkJCQkJTExWTUJ1aWxkU3RvcmUoYiwgbF9zYm9vbF9jb25zdCgw KSwgdl9kZXRhaWxzX3dhbnRlZF9wKTsKKworCQkJCQlMTFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tv cG5vICsgMV0pOworCisJCQkJCWJyZWFrOworCQkJCX0KKwogCQkJY2FzZSBFRU9QX0pTT05FWFBS X1BBVEg6CiAJCQkJewogCQkJCQlKc29uRXhwclN0YXRlICpqc2VzdGF0ZSA9IG9wLT5kLmpzb25l eHByLmpzZXN0YXRlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMg Yi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwppbmRleCA2YTg1MDM0OWNmNy4uYjVlODli N2Y2MGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCkBAIC0yMDYsNiArMjA2LDkgQEAgZXhwclR5cGUo Y29uc3QgTm9kZSAqZXhwcikKIAkJY2FzZSBUX1Jvd0NvbXBhcmVFeHByOgogCQkJdHlwZSA9IEJP T0xPSUQ7CiAJCQlicmVhazsKKwkJY2FzZSBUX1NhZmVUeXBlQ2FzdEV4cHI6CisJCQl0eXBlID0g KChjb25zdCBTYWZlVHlwZUNhc3RFeHByICopIGV4cHIpLT5yZXN1bHR0eXBlOworCQkJYnJlYWs7 CiAJCWNhc2UgVF9Db2FsZXNjZUV4cHI6CiAJCQl0eXBlID0gKChjb25zdCBDb2FsZXNjZUV4cHIg KikgZXhwciktPmNvYWxlc2NldHlwZTsKIAkJCWJyZWFrOwpAQCAtNDUzLDYgKzQ1Niw4IEBAIGV4 cHJUeXBtb2QoY29uc3QgTm9kZSAqZXhwcikKIAkJCQlyZXR1cm4gdHlwbW9kOwogCQkJfQogCQkJ YnJlYWs7CisJCWNhc2UgVF9TYWZlVHlwZUNhc3RFeHByOgorCQkJcmV0dXJuICgoY29uc3QgU2Fm ZVR5cGVDYXN0RXhwciAqKSBleHByKS0+cmVzdWx0dHlwbW9kOwogCQljYXNlIFRfQ29hbGVzY2VF eHByOgogCQkJewogCQkJCS8qCkBAIC05NzAsNiArOTc1LDkgQEAgZXhwckNvbGxhdGlvbihjb25z dCBOb2RlICpleHByKQogCQkJLyogUm93Q29tcGFyZUV4cHIncyByZXN1bHQgaXMgYm9vbGVhbiAu Li4gKi8KIAkJCWNvbGwgPSBJbnZhbGlkT2lkOwkvKiAuLi4gc28gaXQgaGFzIG5vIGNvbGxhdGlv biAqLwogCQkJYnJlYWs7CisJCWNhc2UgVF9TYWZlVHlwZUNhc3RFeHByOgorCQkJY29sbCA9ICgo Y29uc3QgU2FmZVR5cGVDYXN0RXhwciAqKSBleHByKS0+cmVzdWx0Y29sbGlkOworCQkJYnJlYWs7 CiAJCWNhc2UgVF9Db2FsZXNjZUV4cHI6CiAJCQljb2xsID0gKChjb25zdCBDb2FsZXNjZUV4cHIg KikgZXhwciktPmNvYWxlc2NlY29sbGlkOwogCQkJYnJlYWs7CkBAIC0xMjQwLDYgKzEyNDgsOSBA QCBleHByU2V0Q29sbGF0aW9uKE5vZGUgKmV4cHIsIE9pZCBjb2xsYXRpb24pCiAJCQkvKiBSb3dD b21wYXJlRXhwcidzIHJlc3VsdCBpcyBib29sZWFuIC4uLiAqLwogCQkJQXNzZXJ0KCFPaWRJc1Zh bGlkKGNvbGxhdGlvbikpOyAvKiAuLi4gc28gbmV2ZXIgc2V0IGEgY29sbGF0aW9uICovCiAJCQli cmVhazsKKwkJY2FzZSBUX1NhZmVUeXBlQ2FzdEV4cHI6CisJCQkoKFNhZmVUeXBlQ2FzdEV4cHIg KikgZXhwciktPnJlc3VsdGNvbGxpZCA9IGNvbGxhdGlvbjsKKwkJCWJyZWFrOwogCQljYXNlIFRf Q29hbGVzY2VFeHByOgogCQkJKChDb2FsZXNjZUV4cHIgKikgZXhwciktPmNvYWxlc2NlY29sbGlk ID0gY29sbGF0aW9uOwogCQkJYnJlYWs7CkBAIC0xNTU4LDYgKzE1NjksOSBAQCBleHByTG9jYXRp b24oY29uc3QgTm9kZSAqZXhwcikKIAkJCS8qIGp1c3QgdXNlIGxlZnRtb3N0IGFyZ3VtZW50J3Mg bG9jYXRpb24gKi8KIAkJCWxvYyA9IGV4cHJMb2NhdGlvbigoTm9kZSAqKSAoKGNvbnN0IFJvd0Nv bXBhcmVFeHByICopIGV4cHIpLT5sYXJncyk7CiAJCQlicmVhazsKKwkJY2FzZSBUX1NhZmVUeXBl Q2FzdEV4cHI6CisJCQlsb2MgPSAoKGNvbnN0IFNhZmVUeXBlQ2FzdEV4cHIgKikgZXhwciktPmxv Y2F0aW9uOworCQkJYnJlYWs7CiAJCWNhc2UgVF9Db2FsZXNjZUV4cHI6CiAJCQkvKiBDT0FMRVND RSBrZXl3b3JkIHNob3VsZCBhbHdheXMgYmUgdGhlIGZpcnN0IHRoaW5nICovCiAJCQlsb2MgPSAo KGNvbnN0IENvYWxlc2NlRXhwciAqKSBleHByKS0+bG9jYXRpb247CkBAIC0yMzMzLDYgKzIzNDcs MTggQEAgZXhwcmVzc2lvbl90cmVlX3dhbGtlcl9pbXBsKE5vZGUgKm5vZGUsCiAJCQkJCXJldHVy biB0cnVlOwogCQkJfQogCQkJYnJlYWs7CisJCWNhc2UgVF9TYWZlVHlwZUNhc3RFeHByOgorCQkJ eworCQkJCVNhZmVUeXBlQ2FzdEV4cHIgKnN0Y2V4cHIgPSBjYXN0Tm9kZShTYWZlVHlwZUNhc3RF eHByLCBub2RlKTsKKworCQkJCWlmIChXQUxLKHN0Y2V4cHItPnNvdXJjZSkpCisJCQkJCXJldHVy biB0cnVlOworCQkJCWlmIChXQUxLKHN0Y2V4cHItPmNhc3RleHByKSkKKwkJCQkJcmV0dXJuIHRy dWU7CisJCQkJaWYgKFdBTEsoc3RjZXhwci0+ZGVmZXhwcikpCisJCQkJCXJldHVybiB0cnVlOwor CQkJfQorCQkJYnJlYWs7CiAJCWNhc2UgVF9Db2FsZXNjZUV4cHI6CiAJCQlyZXR1cm4gV0FMSygo KENvYWxlc2NlRXhwciAqKSBub2RlKS0+YXJncyk7CiAJCWNhc2UgVF9NaW5NYXhFeHByOgpAQCAt MzM2OCw2ICszMzk0LDE5IEBAIGV4cHJlc3Npb25fdHJlZV9tdXRhdG9yX2ltcGwoTm9kZSAqbm9k ZSwKIAkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNl IFRfU2FmZVR5cGVDYXN0RXhwcjoKKwkJCXsKKwkJCQlTYWZlVHlwZUNhc3RFeHByICpzdGNleHBy ID0gY2FzdE5vZGUoU2FmZVR5cGVDYXN0RXhwciwgbm9kZSk7CisJCQkJU2FmZVR5cGVDYXN0RXhw ciAqbmV3bm9kZTsKKworCQkJCUZMQVRDT1BZKG5ld25vZGUsIHN0Y2V4cHIsIFNhZmVUeXBlQ2Fz dEV4cHIpOworCQkJCU1VVEFURShuZXdub2RlLT5zb3VyY2UsIHN0Y2V4cHItPnNvdXJjZSwgRXhw ciAqKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+Y2FzdGV4cHIsIHN0Y2V4cHItPmNhc3RleHByLCBF eHByICopOworCQkJCU1VVEFURShuZXdub2RlLT5kZWZleHByLCBzdGNleHByLT5kZWZleHByLCBF eHByICopOworCisJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CisJCQl9CisJCQlicmVhazsK IAkJY2FzZSBUX0NvYWxlc2NlRXhwcjoKIAkJCXsKIAkJCQlDb2FsZXNjZUV4cHIgKmNvYWxlc2Nl ZXhwciA9IChDb2FsZXNjZUV4cHIgKikgbm9kZTsKQEAgLTQ1MDQsNiArNDU0MywyMCBAQCByYXdf ZXhwcmVzc2lvbl90cmVlX3dhbGtlcl9pbXBsKE5vZGUgKm5vZGUsCiAJCQkJCXJldHVybiB0cnVl OwogCQkJCWlmIChXQUxLKHRjLT50eXBlTmFtZSkpCiAJCQkJCXJldHVybiB0cnVlOworCQkJCWlm IChXQUxLKHRjLT5kZWZleHByKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQlicmVhazsK KwkJY2FzZSBUX1NhZmVUeXBlQ2FzdEV4cHI6CisJCQl7CisJCQkJU2FmZVR5cGVDYXN0RXhwciAq c3RjZXhwciA9IGNhc3ROb2RlKFNhZmVUeXBlQ2FzdEV4cHIsIG5vZGUpOworCisJCQkJaWYgKFdB TEsoc3RjZXhwci0+c291cmNlKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoc3Rj ZXhwci0+Y2FzdGV4cHIpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhzdGNleHBy LT5kZWZleHByKSkKKwkJCQkJcmV0dXJuIHRydWU7CiAJCQl9CiAJCQlicmVhazsKIAkJY2FzZSBU X0NvbGxhdGVDbGF1c2U6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9j bGF1c2VzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKaW5kZXggOWZi MjY2ZDA4OWQuLmJhNzdkNGFlY2Y4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC9jbGF1c2VzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5j CkBAIC02OSw2ICs2OSw3IEBAIHR5cGVkZWYgc3RydWN0CiAJTGlzdAkgICAqYWN0aXZlX2ZuczsK IAlOb2RlCSAgICpjYXNlX3ZhbDsKIAlib29sCQllc3RpbWF0ZTsKKwlFcnJvclNhdmVDb250ZXh0 ICplc2NvbnRleHQ7CiB9IGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfY29udGV4dDsKIAogdHlwZWRl ZiBzdHJ1Y3QKQEAgLTI1MDcsNiArMjUwOCw3IEBAIGV2YWxfY29uc3RfZXhwcmVzc2lvbnMoUGxh bm5lckluZm8gKnJvb3QsIE5vZGUgKm5vZGUpCiAJY29udGV4dC5hY3RpdmVfZm5zID0gTklMOwkv KiBub3RoaW5nIGJlaW5nIHJlY3Vyc2l2ZWx5IHNpbXBsaWZpZWQgKi8KIAljb250ZXh0LmNhc2Vf dmFsID0gTlVMTDsJLyogbm8gQ0FTRSBiZWluZyBleGFtaW5lZCAqLwogCWNvbnRleHQuZXN0aW1h dGUgPSBmYWxzZTsJLyogc2FmZSB0cmFuc2Zvcm1hdGlvbnMgb25seSAqLworCWNvbnRleHQuZXNj b250ZXh0ID0gTlVMTDsJLyogZm9yIGVycm9yLXNhZmUgZXhwcmVzc2lvbiBldmFsdWF0aW9uICov CiAJcmV0dXJuIGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0YXRvcihub2RlLCAmY29udGV4dCk7 CiB9CiAKQEAgLTI2NDYsNiArMjY0OCw3IEBAIGVzdGltYXRlX2V4cHJlc3Npb25fdmFsdWUoUGxh bm5lckluZm8gKnJvb3QsIE5vZGUgKm5vZGUpCiAJY29udGV4dC5hY3RpdmVfZm5zID0gTklMOwkv KiBub3RoaW5nIGJlaW5nIHJlY3Vyc2l2ZWx5IHNpbXBsaWZpZWQgKi8KIAljb250ZXh0LmNhc2Vf dmFsID0gTlVMTDsJLyogbm8gQ0FTRSBiZWluZyBleGFtaW5lZCAqLwogCWNvbnRleHQuZXN0aW1h dGUgPSB0cnVlOwkvKiB1bnNhZmUgdHJhbnNmb3JtYXRpb25zIE9LICovCisJY29udGV4dC5lc2Nv bnRleHQgPSBOVUxMOwkvKiBmb3IgZXJyb3Itc2FmZSBleHByZXNzaW9uIGV2YWx1YXRpb24gKi8K IAlyZXR1cm4gZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKG5vZGUsICZjb250ZXh0KTsK IH0KIApAQCAtMjY3MSwxMSArMjY3NCwxMiBAQCBlc3RpbWF0ZV9leHByZXNzaW9uX3ZhbHVlKFBs YW5uZXJJbmZvICpyb290LCBOb2RlICpub2RlKQogCSghZXhwcmVzc2lvbl90cmVlX3dhbGtlcigo Tm9kZSAqKSAobm9kZSksIGNvbnRhaW5fbm9uX2NvbnN0X3dhbGtlciwgTlVMTCkpCiAKIC8qIEdl bmVyaWMgbWFjcm8gZm9yIGFwcGx5aW5nIGV2YWx1YXRlX2V4cHIgKi8KLSNkZWZpbmUgZWNlX2V2 YWx1YXRlX2V4cHIobm9kZSkgXAorI2RlZmluZSBlY2VfZXZhbHVhdGVfZXhwcihub2RlLCBlc2Nv bnRleHQpIFwKIAkoKE5vZGUgKikgZXZhbHVhdGVfZXhwcigoRXhwciAqKSAobm9kZSksIFwKIAkJ CQkJCQlleHByVHlwZSgoTm9kZSAqKSAobm9kZSkpLCBcCiAJCQkJCQkJZXhwclR5cG1vZCgoTm9k ZSAqKSAobm9kZSkpLCBcCi0JCQkJCQkJZXhwckNvbGxhdGlvbigoTm9kZSAqKSAobm9kZSkpKSkK KwkJCQkJCQlleHByQ29sbGF0aW9uKChOb2RlICopIChub2RlKSksIFwKKwkJCQkJCQllc2NvbnRl eHQpKQogCiAvKgogICogUmVjdXJzaXZlIGd1dHMgb2YgZXZhbF9jb25zdF9leHByZXNzaW9ucy9l c3RpbWF0ZV9leHByZXNzaW9uX3ZhbHVlCkBAIC0zMTM2LDcgKzMxNDAsNyBAQCBldmFsX2NvbnN0 X2V4cHJlc3Npb25zX211dGF0b3IoTm9kZSAqbm9kZSwKIAogCQkJCWlmICghaGFzX25vbmNvbnN0 X2lucHV0ICYmCiAJCQkJCWVjZV9mdW5jdGlvbl9pc19zYWZlKGV4cHItPm9wZnVuY2lkLCBjb250 ZXh0KSkKLQkJCQkJcmV0dXJuIGVjZV9ldmFsdWF0ZV9leHByKGV4cHIpOworCQkJCQlyZXR1cm4g ZWNlX2V2YWx1YXRlX2V4cHIoZXhwciwgKE5vZGUgKikgY29udGV4dC0+ZXNjb250ZXh0KTsKIAog CQkJCXJldHVybiAoTm9kZSAqKSBleHByOwogCQkJfQpAQCAtMzE1Niw3ICszMTYwLDcgQEAgZXZh bF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKE5vZGUgKm5vZGUsCiAJCQkJICovCiAJCQkJaWYg KGVjZV9hbGxfYXJndW1lbnRzX2NvbnN0KHNhb3ApICYmCiAJCQkJCWVjZV9mdW5jdGlvbl9pc19z YWZlKHNhb3AtPm9wZnVuY2lkLCBjb250ZXh0KSkKLQkJCQkJcmV0dXJuIGVjZV9ldmFsdWF0ZV9l eHByKHNhb3ApOworCQkJCQlyZXR1cm4gZWNlX2V2YWx1YXRlX2V4cHIoc2FvcCwgKE5vZGUgKikg Y29udGV4dC0+ZXNjb250ZXh0KTsKIAkJCQlyZXR1cm4gKE5vZGUgKikgc2FvcDsKIAkJCX0KIAkJ Y2FzZSBUX0Jvb2xFeHByOgpAQCAtMzI2Nyw2ICszMjcxLDQyIEBAIGV2YWxfY29uc3RfZXhwcmVz c2lvbnNfbXV0YXRvcihOb2RlICpub2RlLAogCQkJCQkJCQkJCQkJICBjb3B5T2JqZWN0KGp2ZS0+ Zm9ybWF0KSk7CiAJCQl9CiAKKwkJY2FzZSBUX1NhZmVUeXBlQ2FzdEV4cHI6CisJCQl7CisJCQkJ U2FmZVR5cGVDYXN0RXhwciAqc3RjID0gY2FzdE5vZGUoU2FmZVR5cGVDYXN0RXhwciwgbm9kZSk7 CisJCQkJU2FmZVR5cGVDYXN0RXhwciAqbmV3ZXhwciA9IG1ha2VOb2RlKFNhZmVUeXBlQ2FzdEV4 cHIpOworCisJCQkJTm9kZQkgICAqY2FzdGV4cHIgPSAoTm9kZSAqKSBzdGMtPmNhc3RleHByOwor CQkJCU5vZGUJICAgKmRlZmV4cHIgPSAoTm9kZSAqKSBzdGMtPmRlZmV4cHI7CisKKwkJCQkvKgor CQkJCSAqIE5vIG5lZWQgdG8gZm9sZCAic291cmNlIiB0byBhIGNvbnN0YW50LiBUaGUgZXhlY3V0 b3IgZG9lcworCQkJCSAqIG5vdCB1c2UgaXQsIHNlZSBFeGVjSW5pdFNhZmVUeXBlQ2FzdEV4cHIu IEFkZGl0aW9uYWxseSwKKwkJCQkgKiBjYXN0ZXhwciBleHByZXNzaW9uIHRyZWUgbWF5IGFscmVh ZHkgY29udGFpbiB0aGUgInNvdXJjZSIKKwkJCQkgKiBub2RlLgorCQkJCSAqLworCQkJCWNvbnRl eHQtPmVzY29udGV4dCA9IG1ha2VOb2RlKEVycm9yU2F2ZUNvbnRleHQpOworCQkJCWNvbnRleHQt PmVzY29udGV4dC0+dHlwZSA9IFRfRXJyb3JTYXZlQ29udGV4dDsKKwkJCQljb250ZXh0LT5lc2Nv bnRleHQtPmVycm9yX29jY3VycmVkID0gZmFsc2U7CisKKwkJCQljYXN0ZXhwciA9IGV2YWxfY29u c3RfZXhwcmVzc2lvbnNfbXV0YXRvcihjYXN0ZXhwciwKKwkJCQkJCQkJCQkJCQkJICBjb250ZXh0 KTsKKwkJCQlwZnJlZShjb250ZXh0LT5lc2NvbnRleHQpOworCQkJCWNvbnRleHQtPmVzY29udGV4 dCA9IE5VTEw7CisKKwkJCQlkZWZleHByID0gZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9y KGRlZmV4cHIsCisJCQkJCQkJCQkJCQkJCSBjb250ZXh0KTsKKworCQkJCW5ld2V4cHItPnNvdXJj ZSA9IChFeHByICopIHN0Yy0+c291cmNlOworCQkJCW5ld2V4cHItPmNhc3RleHByID0gKEV4cHIg KikgY2FzdGV4cHI7CisJCQkJbmV3ZXhwci0+ZGVmZXhwciA9IChFeHByICopIGRlZmV4cHI7CisJ CQkJbmV3ZXhwci0+cmVzdWx0dHlwZSA9IHN0Yy0+cmVzdWx0dHlwZTsKKwkJCQluZXdleHByLT5y ZXN1bHR0eXBtb2QgPSBzdGMtPnJlc3VsdHR5cG1vZDsKKwkJCQluZXdleHByLT5yZXN1bHRjb2xs aWQgPSBzdGMtPnJlc3VsdGNvbGxpZDsKKworCQkJCXJldHVybiAoTm9kZSAqKSBuZXdleHByOwor CQkJfQorCiAJCWNhc2UgVF9TdWJQbGFuOgogCQljYXNlIFRfQWx0ZXJuYXRpdmVTdWJQbGFuOgog CkBAIC0zMzg0LDYgKzM0MjQsNyBAQCBldmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3IoTm9k ZSAqbm9kZSwKIAkJCXsKIAkJCQlBcnJheUNvZXJjZUV4cHIgKmFjID0gbWFrZU5vZGUoQXJyYXlD b2VyY2VFeHByKTsKIAkJCQlOb2RlCSAgICpzYXZlX2Nhc2VfdmFsOworCQkJCUV4cHIJICAgKnNp bXBsZSA9IE5VTEw7CiAKIAkJCQkvKgogCQkJCSAqIENvcHkgdGhlIG5vZGUgYW5kIGNvbnN0LXNp bXBsaWZ5IGl0cyBhcmd1bWVudHMuICBXZSBjYW4ndApAQCAtMzM5MSw5ICszNDMyLDEwIEBAIGV2 YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0YXRvcihOb2RlICpub2RlLAogCQkJCSAqIHdpdGggY2Fz ZV92YWwgb25seSB3aGlsZSBwcm9jZXNzaW5nIHRoZSBlbGVtZXhwci4KIAkJCQkgKi8KIAkJCQlt ZW1jcHkoYWMsIG5vZGUsIHNpemVvZihBcnJheUNvZXJjZUV4cHIpKTsKLQkJCQlhYy0+YXJnID0g KEV4cHIgKikKLQkJCQkJZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKChOb2RlICopIGFj LT5hcmcsCi0JCQkJCQkJCQkJCQkgICBjb250ZXh0KTsKKwkJCQlzaW1wbGUgPSAoRXhwciAqKSBl dmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3IoKE5vZGUgKikgYWMtPmFyZywKKwkJCQkJCQkJ CQkJCQkJCQkgY29udGV4dCk7CisJCQkJaWYgKHNpbXBsZSkKKwkJCQkJYWMtPmFyZyA9IHNpbXBs ZTsKIAogCQkJCS8qCiAJCQkJICogU2V0IHVwIGZvciB0aGUgQ2FzZVRlc3RFeHByIG5vZGUgY29u dGFpbmVkIGluIHRoZSBlbGVtZXhwci4KQEAgLTM0MDIsOSArMzQ0NCwxMCBAQCBldmFsX2NvbnN0 X2V4cHJlc3Npb25zX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJCQlzYXZlX2Nhc2VfdmFsID0gY29u dGV4dC0+Y2FzZV92YWw7CiAJCQkJY29udGV4dC0+Y2FzZV92YWwgPSBOVUxMOwogCi0JCQkJYWMt PmVsZW1leHByID0gKEV4cHIgKikKLQkJCQkJZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9y KChOb2RlICopIGFjLT5lbGVtZXhwciwKLQkJCQkJCQkJCQkJCSAgIGNvbnRleHQpOworCQkJCXNp bXBsZSA9IChFeHByICopIGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0YXRvcigoTm9kZSAqKSBh Yy0+ZWxlbWV4cHIsCisJCQkJCQkJCQkJCQkJCQkJIGNvbnRleHQpOworCQkJCWlmIChzaW1wbGUp CisJCQkJCWFjLT5lbGVtZXhwciA9IHNpbXBsZTsKIAogCQkJCWNvbnRleHQtPmNhc2VfdmFsID0g c2F2ZV9jYXNlX3ZhbDsKIApAQCAtMzQxOSw3ICszNDYyLDcgQEAgZXZhbF9jb25zdF9leHByZXNz aW9uc19tdXRhdG9yKE5vZGUgKm5vZGUsCiAJCQkJaWYgKGFjLT5hcmcgJiYgSXNBKGFjLT5hcmcs IENvbnN0KSAmJgogCQkJCQlhYy0+ZWxlbWV4cHIgJiYgIUlzQShhYy0+ZWxlbWV4cHIsIENvZXJj ZVRvRG9tYWluKSAmJgogCQkJCQkhY29udGFpbl9tdXRhYmxlX2Z1bmN0aW9ucygoTm9kZSAqKSBh Yy0+ZWxlbWV4cHIpKQotCQkJCQlyZXR1cm4gZWNlX2V2YWx1YXRlX2V4cHIoYWMpOworCQkJCQly ZXR1cm4gZWNlX2V2YWx1YXRlX2V4cHIoYWMsIChOb2RlICopIGNvbnRleHQtPmVzY29udGV4dCk7 CiAKIAkJCQlyZXR1cm4gKE5vZGUgKikgYWM7CiAJCQl9CkBAIC0zNjE1LDcgKzM2NTgsNyBAQCBl dmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJCQlub2RlID0gZWNl X2dlbmVyaWNfcHJvY2Vzc2luZyhub2RlKTsKIAkJCQkvKiBJZiBhbGwgYXJndW1lbnRzIGFyZSBD b25zdHMsIHdlIGNhbiBmb2xkIHRvIGEgY29uc3RhbnQgKi8KIAkJCQlpZiAoZWNlX2FsbF9hcmd1 bWVudHNfY29uc3Qobm9kZSkpCi0JCQkJCXJldHVybiBlY2VfZXZhbHVhdGVfZXhwcihub2RlKTsK KwkJCQkJcmV0dXJuIGVjZV9ldmFsdWF0ZV9leHByKG5vZGUsIChOb2RlICopIGNvbnRleHQtPmVz Y29udGV4dCk7CiAJCQkJcmV0dXJuIG5vZGU7CiAJCQl9CiAJCWNhc2UgVF9Db2FsZXNjZUV4cHI6 CkBAIC0zNjk4LDcgKzM3NDEsOCBAQCBldmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3IoTm9k ZSAqbm9kZSwKIAkJCQkJcmV0dXJuIChOb2RlICopIGV2YWx1YXRlX2V4cHIoKEV4cHIgKikgc3Zm LAogCQkJCQkJCQkJCQkJICBzdmYtPnR5cGUsCiAJCQkJCQkJCQkJCQkgIHN2Zi0+dHlwbW9kLAot CQkJCQkJCQkJCQkJICBJbnZhbGlkT2lkKTsKKwkJCQkJCQkJCQkJCSAgSW52YWxpZE9pZCwKKwkJ CQkJCQkJCQkJCSAgTlVMTCk7CiAJCQkJZWxzZQogCQkJCQlyZXR1cm4gY29weU9iamVjdCgoTm9k ZSAqKSBzdmYpOwogCQkJfQpAQCAtMzc5NSw3ICszODM5LDcgQEAgZXZhbF9jb25zdF9leHByZXNz aW9uc19tdXRhdG9yKE5vZGUgKm5vZGUsCiAJCQkJCQkJCQkJCSAgbmV3ZnNlbGVjdC0+cmVzdWx0 dHlwZSwKIAkJCQkJCQkJCQkJICBuZXdmc2VsZWN0LT5yZXN1bHR0eXBtb2QsCiAJCQkJCQkJCQkJ CSAgbmV3ZnNlbGVjdC0+cmVzdWx0Y29sbGlkKSkKLQkJCQkJCXJldHVybiBlY2VfZXZhbHVhdGVf ZXhwcihuZXdmc2VsZWN0KTsKKwkJCQkJCXJldHVybiBlY2VfZXZhbHVhdGVfZXhwcihuZXdmc2Vs ZWN0LCAoTm9kZSAqKSBjb250ZXh0LT5lc2NvbnRleHQpOwogCQkJCX0KIAkJCQlyZXR1cm4gKE5v ZGUgKikgbmV3ZnNlbGVjdDsKIAkJCX0KQEAgLTQxMjUsNyArNDE2OSw3IEBAIGV2YWxfY29uc3Rf ZXhwcmVzc2lvbnNfbXV0YXRvcihOb2RlICpub2RlLAogCQkJCW5ld2NyZS0+YXJnID0gKEV4cHIg KikgYXJnOwogCiAJCQkJaWYgKGFyZyAhPSBOVUxMICYmIElzQShhcmcsIENvbnN0KSkKLQkJCQkJ cmV0dXJuIGVjZV9ldmFsdWF0ZV9leHByKChOb2RlICopIG5ld2NyZSk7CisJCQkJCXJldHVybiBl Y2VfZXZhbHVhdGVfZXhwcigoTm9kZSAqKSBuZXdjcmUsIChOb2RlICopIGNvbnRleHQtPmVzY29u dGV4dCk7CiAJCQkJcmV0dXJuIChOb2RlICopIG5ld2NyZTsKIAkJCX0KIAkJZGVmYXVsdDoKQEAg LTUyMjksNyArNTI3Myw3IEBAIGV2YWx1YXRlX2Z1bmN0aW9uKE9pZCBmdW5jaWQsIE9pZCByZXN1 bHRfdHlwZSwgaW50MzIgcmVzdWx0X3R5cG1vZCwKIAluZXdleHByLT5sb2NhdGlvbiA9IC0xOwog CiAJcmV0dXJuIGV2YWx1YXRlX2V4cHIoKEV4cHIgKikgbmV3ZXhwciwgcmVzdWx0X3R5cGUsIHJl c3VsdF90eXBtb2QsCi0JCQkJCQkgcmVzdWx0X2NvbGxpZCk7CisJCQkJCQkgcmVzdWx0X2NvbGxp ZCwgKE5vZGUgKikgY29udGV4dC0+ZXNjb250ZXh0KTsKIH0KIAogLyoKQEAgLTU2ODMsMTAgKzU3 MjcsMTMgQEAgc3FsX2lubGluZV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpCiAgKgogICogV2Ug dXNlIHRoZSBleGVjdXRvcidzIHJvdXRpbmUgRXhlY0V2YWxFeHByKCkgdG8gYXZvaWQgZHVwbGlj YXRpb24gb2YKICAqIGNvZGUgYW5kIGVuc3VyZSB3ZSBnZXQgdGhlIHNhbWUgcmVzdWx0IGFzIHRo ZSBleGVjdXRvciB3b3VsZCBnZXQuCisgKgorICogV2hlbiBlc2NvbnRleHQgaXMgbm9uLU5VTEws IHNhZmVseSBldmFsdWF0ZXMgdGhlIGNvbnN0YW50IGV4cHJlc3Npb24uCisgKiBSZXR1cm5zIE5V TEwgb24gZmFpbHVyZSByYXRoZXIgdGhhbiB0aHJvd2luZyBhbiBlcnJvci4KICAqLwogRXhwciAq CiBldmFsdWF0ZV9leHByKEV4cHIgKmV4cHIsIE9pZCByZXN1bHRfdHlwZSwgaW50MzIgcmVzdWx0 X3R5cG1vZCwKLQkJCSAgT2lkIHJlc3VsdF9jb2xsYXRpb24pCisJCQkgIE9pZCByZXN1bHRfY29s bGF0aW9uLCBOb2RlICplc2NvbnRleHQpCiB7CiAJRVN0YXRlCSAgICplc3RhdGU7CiAJRXhwclN0 YXRlICAqZXhwcnN0YXRlOwpAQCAtNTcxMSw3ICs1NzU4LDcgQEAgZXZhbHVhdGVfZXhwcihFeHBy ICpleHByLCBPaWQgcmVzdWx0X3R5cGUsIGludDMyIHJlc3VsdF90eXBtb2QsCiAJICogUHJlcGFy ZSBleHByIGZvciBleGVjdXRpb24uICAoTm90ZTogd2UgY2FuJ3QgdXNlIEV4ZWNQcmVwYXJlRXhw cgogCSAqIGJlY2F1c2UgaXQnZCByZXN1bHQgaW4gcmVjdXJzaXZlbHkgaW52b2tpbmcgZXZhbF9j b25zdF9leHByZXNzaW9ucy4pCiAJICovCi0JZXhwcnN0YXRlID0gRXhlY0luaXRFeHByKGV4cHIs IE5VTEwpOworCWV4cHJzdGF0ZSA9IEV4ZWNJbml0RXhwcldpdGhDb250ZXh0KGV4cHIsIE5VTEws IGVzY29udGV4dCk7CiAKIAkvKgogCSAqIEFuZCBldmFsdWF0ZSBpdC4KQEAgLTU3MzEsNiArNTc3 OCwxMyBAQCBldmFsdWF0ZV9leHByKEV4cHIgKmV4cHIsIE9pZCByZXN1bHRfdHlwZSwgaW50MzIg cmVzdWx0X3R5cG1vZCwKIAkvKiBHZXQgYmFjayB0byBvdXRlciBtZW1vcnkgY29udGV4dCAqLwog CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAorCWlmIChTT0ZUX0VSUk9SX09D Q1VSUkVEKGV4cHJzdGF0ZS0+ZXNjb250ZXh0KSkKKwl7CisJCUZyZWVFeGVjdXRvclN0YXRlKGVz dGF0ZSk7CisKKwkJcmV0dXJuIE5VTEw7CisJfQorCiAJLyoKIAkgKiBNdXN0IGNvcHkgcmVzdWx0 IG91dCBvZiBzdWItY29udGV4dCB1c2VkIGJ5IGV4cHJlc3Npb24gZXZhbC4KIAkgKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkKaW5kZXggMGZlYTcyNmNkZDUuLjJhYzA0NTY1YWZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTE1OCw2 ICsxNTgsOCBAQCBzdGF0aWMgdm9pZCB1cGRhdGVSYXdTdG10RW5kKFJhd1N0bXQgKnJzLCBpbnQg ZW5kX2xvY2F0aW9uKTsKIHN0YXRpYyBOb2RlICptYWtlQ29sdW1uUmVmKGNoYXIgKmNvbG5hbWUs IExpc3QgKmluZGlyZWN0aW9uLAogCQkJCQkJICAgaW50IGxvY2F0aW9uLCBjb3JlX3l5c2Nhbl90 IHl5c2Nhbm5lcik7CiBzdGF0aWMgTm9kZSAqbWFrZVR5cGVDYXN0KE5vZGUgKmFyZywgVHlwZU5h bWUgKnR5cGVuYW1lLCBpbnQgbG9jYXRpb24pOworc3RhdGljIE5vZGUgKm1ha2VUeXBlQ2FzdFdp dGhEZWZhdWx0KE5vZGUgKmFyZywgVHlwZU5hbWUgKnR5cGVuYW1lLAorCQkJCQkJCQkJIE5vZGUg KnJhd19kZWZhdWx0LCBpbnQgbG9jYXRpb24pOwogc3RhdGljIE5vZGUgKm1ha2VTdHJpbmdDb25z dENhc3QoY2hhciAqc3RyLCBpbnQgbG9jYXRpb24sIFR5cGVOYW1lICp0eXBlbmFtZSk7CiBzdGF0 aWMgTm9kZSAqbWFrZUludENvbnN0KGludCB2YWwsIGludCBsb2NhdGlvbik7CiBzdGF0aWMgTm9k ZSAqbWFrZUZsb2F0Q29uc3QoY2hhciAqc3RyLCBpbnQgbG9jYXRpb24pOwpAQCAtMTY2ODcsNiAr MTY2ODksMTIgQEAgZnVuY19leHByX2NvbW1vbl9zdWJleHByOgogCQkJCX0KIAkJCXwgQ0FTVCAn KCcgYV9leHByIEFTIFR5cGVuYW1lICcpJwogCQkJCXsgJCQgPSBtYWtlVHlwZUNhc3QoJDMsICQ1 LCBAMSk7IH0KKwkJCXwgQ0FTVCAnKCcgYV9leHByIEFTIFR5cGVuYW1lIEVSUk9SX1AgT04gQ09O VkVSU0lPTl9QIEVSUk9SX1AgJyknCisJCQkJeyAkJCA9IG1ha2VUeXBlQ2FzdCgkMywgJDUsIEAx KTsgfQorCQkJfCBDQVNUICcoJyBhX2V4cHIgQVMgVHlwZW5hbWUgTlVMTF9QIE9OIENPTlZFUlNJ T05fUCBFUlJPUl9QICcpJworCQkJCXsgJCQgPSBtYWtlVHlwZUNhc3RXaXRoRGVmYXVsdCgkMywg JDUsIG1ha2VOdWxsQUNvbnN0KC0xKSwgQDEpOyB9CisJCQl8IENBU1QgJygnIGFfZXhwciBBUyBU eXBlbmFtZSBERUZBVUxUIGFfZXhwciBPTiBDT05WRVJTSU9OX1AgRVJST1JfUCAnKScKKwkJCQl7 ICQkID0gbWFrZVR5cGVDYXN0V2l0aERlZmF1bHQoJDMsICQ1LCAkNywgQDEpOyB9CiAJCQl8IEVY VFJBQ1QgJygnIGV4dHJhY3RfbGlzdCAnKScKIAkJCQl7CiAJCQkJCSQkID0gKE5vZGUgKikgbWFr ZUZ1bmNDYWxsKFN5c3RlbUZ1bmNOYW1lKCJleHRyYWN0IiksCkBAIC0xOTg0OCwxMCArMTk4NTYs MjUgQEAgbWFrZVR5cGVDYXN0KE5vZGUgKmFyZywgVHlwZU5hbWUgKnR5cGVuYW1lLCBpbnQgbG9j YXRpb24pCiAKIAluLT5hcmcgPSBhcmc7CiAJbi0+dHlwZU5hbWUgPSB0eXBlbmFtZTsKKwluLT5k ZWZleHByID0gTlVMTDsKIAluLT5sb2NhdGlvbiA9IGxvY2F0aW9uOwogCXJldHVybiAoTm9kZSAq KSBuOwogfQogCitzdGF0aWMgTm9kZSAqCittYWtlVHlwZUNhc3RXaXRoRGVmYXVsdChOb2RlICph cmcsIFR5cGVOYW1lICp0eXBlbmFtZSwgTm9kZSAqZGVmZXhwciwKKwkJCQkJCWludCBsb2NhdGlv bikKK3sKKwlUeXBlQ2FzdCAgICpuID0gbWFrZU5vZGUoVHlwZUNhc3QpOworCisJbi0+YXJnID0g YXJnOworCW4tPnR5cGVOYW1lID0gdHlwZW5hbWU7CisJbi0+ZGVmZXhwciA9IGRlZmV4cHI7CisJ bi0+bG9jYXRpb24gPSBsb2NhdGlvbjsKKworCXJldHVybiAoTm9kZSAqKSBuOworfQorCiBzdGF0 aWMgTm9kZSAqCiBtYWtlU3RyaW5nQ29uc3RDYXN0KGNoYXIgKnN0ciwgaW50IGxvY2F0aW9uLCBU eXBlTmFtZSAqdHlwZW5hbWUpCiB7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfYWdnLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKaW5kZXggNjA3NmU5Mzcz YzEuLjA3YzczNTIxZGYyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdn LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCkBAIC00OTEsNiArNDkxLDEy IEBAIGNoZWNrX2FnZ2xldmVsc19hbmRfY29uc3RyYWludHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBO b2RlICpleHByKQogCQkJCWVyciA9IF8oImdyb3VwaW5nIG9wZXJhdGlvbnMgYXJlIG5vdCBhbGxv d2VkIGluIGNoZWNrIGNvbnN0cmFpbnRzIik7CiAKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lO RF9DQVNUX0RFRkFVTFQ6CisJCQlpZiAoaXNBZ2cpCisJCQkJZXJyID0gXygiYWdncmVnYXRlIGZ1 bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gQ0FTVCBERUZBVUxUIGV4cHJlc3Npb25zIik7CisJ CQllbHNlCisJCQkJZXJyID0gXygiZ3JvdXBpbmcgb3BlcmF0aW9ucyBhcmUgbm90IGFsbG93ZWQg aW4gQ0FTVCBERUZBVUxUIGV4cHJlc3Npb25zIik7CisJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJ TkRfQ09MVU1OX0RFRkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZVTkNUSU9OX0RFRkFVTFQ6CiAK QEAgLTk5Miw2ICs5OTgsOSBAQCB0cmFuc2Zvcm1XaW5kb3dGdW5jQ2FsbChQYXJzZVN0YXRlICpw c3RhdGUsIFdpbmRvd0Z1bmMgKndmdW5jLAogCQljYXNlIEVYUFJfS0lORF9ET01BSU5fQ0hFQ0s6 CiAJCQllcnIgPSBfKCJ3aW5kb3cgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBjaGVjayBj b25zdHJhaW50cyIpOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX0NBU1RfREVGQVVMVDoK KwkJCWVyciA9IF8oIndpbmRvdyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIENBU1QgREVG QVVMVCBleHByZXNzaW9ucyIpOworCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0NPTFVNTl9E RUZBVUxUOgogCQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZBVUxUOgogCQkJZXJyID0gXygi d2luZG93IGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gREVGQVVMVCBleHByZXNzaW9ucyIp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvZXJjZS5jIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX2NvZXJjZS5jCmluZGV4IDkxM2NhNTM2NjZmLi44YmQ3OWZkNWJm YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvZXJjZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2VyY2UuYwpAQCAtMzcsMTQgKzM3LDE2IEBAIHN0YXRp YyBOb2RlICpjb2VyY2VfdHlwZV90eXBtb2QoTm9kZSAqbm9kZSwKIAkJCQkJCQkJT2lkIHRhcmdl dFR5cGVJZCwgaW50MzIgdGFyZ2V0VHlwTW9kLAogCQkJCQkJCQlDb2VyY2lvbkNvbnRleHQgY2Nv bnRleHQsIENvZXJjaW9uRm9ybSBjZm9ybWF0LAogCQkJCQkJCQlpbnQgbG9jYXRpb24sCi0JCQkJ CQkJCWJvb2wgaGlkZUlucHV0Q29lcmNpb24pOworCQkJCQkJCQlib29sIGhpZGVJbnB1dENvZXJj aW9uLAorCQkJCQkJCQlOb2RlICplc2NvbnRleHQpOwogc3RhdGljIHZvaWQgaGlkZV9jb2VyY2lv bl9ub2RlKE5vZGUgKm5vZGUpOwogc3RhdGljIE5vZGUgKmJ1aWxkX2NvZXJjaW9uX2V4cHJlc3Np b24oTm9kZSAqbm9kZSwKIAkJCQkJCQkJCSAgIENvZXJjaW9uUGF0aFR5cGUgcGF0aHR5cGUsCiAJ CQkJCQkJCQkgICBPaWQgZnVuY0lkLAogCQkJCQkJCQkJICAgT2lkIHRhcmdldFR5cGVJZCwgaW50 MzIgdGFyZ2V0VHlwTW9kLAogCQkJCQkJCQkJICAgQ29lcmNpb25Db250ZXh0IGNjb250ZXh0LCBD b2VyY2lvbkZvcm0gY2Zvcm1hdCwKLQkJCQkJCQkJCSAgIGludCBsb2NhdGlvbik7CisJCQkJCQkJ CQkgICBpbnQgbG9jYXRpb24sCisJCQkJCQkJCQkgICBOb2RlICplc2NvbnRleHQpOwogc3RhdGlj IE5vZGUgKmNvZXJjZV9yZWNvcmRfdG9fY29tcGxleChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUg Km5vZGUsCiAJCQkJCQkJCQkgIE9pZCB0YXJnZXRUeXBlSWQsCiAJCQkJCQkJCQkgIENvZXJjaW9u Q29udGV4dCBjY29udGV4dCwKQEAgLTgxLDYgKzgzLDI4IEBAIGNvZXJjZV90b190YXJnZXRfdHlw ZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIsIE9pZCBleHBydHlwZSwKIAkJCQkJICBD b2VyY2lvbkNvbnRleHQgY2NvbnRleHQsCiAJCQkJCSAgQ29lcmNpb25Gb3JtIGNmb3JtYXQsCiAJ CQkJCSAgaW50IGxvY2F0aW9uKQoreworCXJldHVybiBjb2VyY2VfdG9fdGFyZ2V0X3R5cGVfZXh0 ZW5kZWQocHN0YXRlLCBleHByLCBleHBydHlwZSwKKwkJCQkJCQkJCQkgIHRhcmdldHR5cGUsIHRh cmdldHR5cG1vZCwKKwkJCQkJCQkJCQkgIGNjb250ZXh0LAorCQkJCQkJCQkJCSAgY2Zvcm1hdCwK KwkJCQkJCQkJCQkgIGxvY2F0aW9uLAorCQkJCQkJCQkJCSAgTlVMTCk7Cit9CisKKy8qCisgKiBl c2NvbnRleHQ6IElmIG5vbi1OVUxMLCBzYWZlbHkgY29lcmNlcyAnZXhwcicgdG8gdGhlIHRhcmdl dCB0eXBlCisgKiB3aXRob3V0IHJhaXNpbmcgYW4gZXJyb3IuIFJldHVybnMgTlVMTCBpZiB0aGUg Y29lcmNpb24gZmFpbHMuCisgKgorICogU2VlICdjb2VyY2VfdG9fdGFyZ2V0X3R5cGUnIGFib3Zl IGZvciBkZXRhaWxzIG9uIG90aGVyIHBhcmFtZXRlcnMuCisgKi8KK05vZGUgKgorY29lcmNlX3Rv X3RhcmdldF90eXBlX2V4dGVuZGVkKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwciwgT2lk IGV4cHJ0eXBlLAorCQkJCQkJCSAgIE9pZCB0YXJnZXR0eXBlLCBpbnQzMiB0YXJnZXR0eXBtb2Qs CisJCQkJCQkJICAgQ29lcmNpb25Db250ZXh0IGNjb250ZXh0LAorCQkJCQkJCSAgIENvZXJjaW9u Rm9ybSBjZm9ybWF0LAorCQkJCQkJCSAgIGludCBsb2NhdGlvbiwKKwkJCQkJCQkgICBOb2RlICpl c2NvbnRleHQpCiB7CiAJTm9kZQkgICAqcmVzdWx0OwogCU5vZGUJICAgKm9yaWdleHByOwpAQCAt MTAyLDkgKzEyNiwxNSBAQCBjb2VyY2VfdG9fdGFyZ2V0X3R5cGUoUGFyc2VTdGF0ZSAqcHN0YXRl LCBOb2RlICpleHByLCBPaWQgZXhwcnR5cGUsCiAJd2hpbGUgKGV4cHIgJiYgSXNBKGV4cHIsIENv bGxhdGVFeHByKSkKIAkJZXhwciA9IChOb2RlICopICgoQ29sbGF0ZUV4cHIgKikgZXhwciktPmFy ZzsKIAotCXJlc3VsdCA9IGNvZXJjZV90eXBlKHBzdGF0ZSwgZXhwciwgZXhwcnR5cGUsCi0JCQkJ CQkgdGFyZ2V0dHlwZSwgdGFyZ2V0dHlwbW9kLAotCQkJCQkJIGNjb250ZXh0LCBjZm9ybWF0LCBs b2NhdGlvbik7CisJcmVzdWx0ID0gY29lcmNlX3R5cGVfZXh0ZW5kZWQocHN0YXRlLCBleHByLCBl eHBydHlwZSwKKwkJCQkJCQkJICB0YXJnZXR0eXBlLCB0YXJnZXR0eXBtb2QsCisJCQkJCQkJCSAg Y2NvbnRleHQsCisJCQkJCQkJCSAgY2Zvcm1hdCwKKwkJCQkJCQkJICBsb2NhdGlvbiwKKwkJCQkJ CQkJICBlc2NvbnRleHQpOworCisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZXNjb250ZXh0KSkK KwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIElmIHRoZSB0YXJnZXQgaXMgYSBmaXhlZC1sZW5n dGggdHlwZSwgaXQgbWF5IG5lZWQgYSBsZW5ndGggY29lcmNpb24gYXMKQEAgLTExNCw3ICsxNDQs MTEgQEAgY29lcmNlX3RvX3RhcmdldF90eXBlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhw ciwgT2lkIGV4cHJ0eXBlLAogCXJlc3VsdCA9IGNvZXJjZV90eXBlX3R5cG1vZChyZXN1bHQsCiAJ CQkJCQkJCXRhcmdldHR5cGUsIHRhcmdldHR5cG1vZCwKIAkJCQkJCQkJY2NvbnRleHQsIGNmb3Jt YXQsIGxvY2F0aW9uLAotCQkJCQkJCQkocmVzdWx0ICE9IGV4cHIgJiYgIUlzQShyZXN1bHQsIENv bnN0KSkpOworCQkJCQkJCQkocmVzdWx0ICE9IGV4cHIgJiYgIUlzQShyZXN1bHQsIENvbnN0KSks CisJCQkJCQkJCWVzY29udGV4dCk7CisKKwlpZiAocmVzdWx0ID09IE5VTEwpCQkJLyogc2hvdWxk bid0IGhhcHBlbiAqLworCQllbG9nKEVSUk9SLCAiZmFpbGVkIHRvIGNvZXJjZSB0eXBlIG1vZGlm aWVyIGFzIGV4cGVjdGVkIik7CiAKIAlpZiAoZXhwciAhPSBvcmlnZXhwciAmJiB0eXBlX2lzX2Nv bGxhdGFibGUodGFyZ2V0dHlwZSkpCiAJewpAQCAtMTU4LDYgKzE5MiwxOCBAQCBOb2RlICoKIGNv ZXJjZV90eXBlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbm9kZSwKIAkJCU9pZCBpbnB1dFR5 cGVJZCwgT2lkIHRhcmdldFR5cGVJZCwgaW50MzIgdGFyZ2V0VHlwZU1vZCwKIAkJCUNvZXJjaW9u Q29udGV4dCBjY29udGV4dCwgQ29lcmNpb25Gb3JtIGNmb3JtYXQsIGludCBsb2NhdGlvbikKK3sK KwlyZXR1cm4gY29lcmNlX3R5cGVfZXh0ZW5kZWQocHN0YXRlLCBub2RlLAorCQkJCQkJCQlpbnB1 dFR5cGVJZCwgdGFyZ2V0VHlwZUlkLCB0YXJnZXRUeXBlTW9kLAorCQkJCQkJCQljY29udGV4dCwg Y2Zvcm1hdCwgbG9jYXRpb24sCisJCQkJCQkJCU5VTEwpOworfQorCitOb2RlICoKK2NvZXJjZV90 eXBlX2V4dGVuZGVkKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbm9kZSwKKwkJCQkJIE9pZCBp bnB1dFR5cGVJZCwgT2lkIHRhcmdldFR5cGVJZCwgaW50MzIgdGFyZ2V0VHlwZU1vZCwKKwkJCQkJ IENvZXJjaW9uQ29udGV4dCBjY29udGV4dCwgQ29lcmNpb25Gb3JtIGNmb3JtYXQsIGludCBsb2Nh dGlvbiwKKwkJCQkJIE5vZGUgKmVzY29udGV4dCkKIHsKIAlOb2RlCSAgICpyZXN1bHQ7CiAJQ29l cmNpb25QYXRoVHlwZSBwYXRodHlwZTsKQEAgLTI1Niw2ICszMDIsNyBAQCBjb2VyY2VfdHlwZShQ YXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKm5vZGUsCiAJCWludDMyCQlpbnB1dFR5cGVNb2Q7CiAJ CVR5cGUJCWJhc2VUeXBlOwogCQlQYXJzZUNhbGxiYWNrU3RhdGUgcGNic3RhdGU7CisJCWNoYXIJ ICAgKnN0cmluZyA9IE5VTEw7CiAKIAkJLyoKIAkJICogSWYgdGhlIHRhcmdldCB0eXBlIGlzIGEg ZG9tYWluLCB3ZSB3YW50IHRvIGNhbGwgaXRzIGJhc2UgdHlwZSdzCkBAIC0zMDksMTMgKzM1Niwy MSBAQCBjb2VyY2VfdHlwZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKm5vZGUsCiAJCSAqIGFz IENTVFJJTkcuCiAJCSAqLwogCQlpZiAoIWNvbi0+Y29uc3Rpc251bGwpCi0JCQluZXdjb24tPmNv bnN0dmFsdWUgPSBzdHJpbmdUeXBlRGF0dW0oYmFzZVR5cGUsCi0JCQkJCQkJCQkJCQkgRGF0dW1H ZXRDU3RyaW5nKGNvbi0+Y29uc3R2YWx1ZSksCi0JCQkJCQkJCQkJCQkgaW5wdXRUeXBlTW9kKTsK LQkJZWxzZQotCQkJbmV3Y29uLT5jb25zdHZhbHVlID0gc3RyaW5nVHlwZURhdHVtKGJhc2VUeXBl LAotCQkJCQkJCQkJCQkJIE5VTEwsCi0JCQkJCQkJCQkJCQkgaW5wdXRUeXBlTW9kKTsKKwkJCXN0 cmluZyA9IERhdHVtR2V0Q1N0cmluZyhjb24tPmNvbnN0dmFsdWUpOworCisJCWlmICghc3RyaW5n VHlwZURhdHVtU2FmZShiYXNlVHlwZSwKKwkJCQkJCQkJIHN0cmluZywKKwkJCQkJCQkJIGlucHV0 VHlwZU1vZCwKKwkJCQkJCQkJIGVzY29udGV4dCwKKwkJCQkJCQkJICZuZXdjb24tPmNvbnN0dmFs dWUpKQorCQl7CisJCQkvKiBVTktOT1dOIENvbnN0IGNhbm5vdCBjb2VyY2UgdG8gdGFyZ2V0VHlw ZSwgZXhpdCBub3cgKi8KKwkJCWNhbmNlbF9wYXJzZXJfZXJycG9zaXRpb25fY2FsbGJhY2soJnBj YnN0YXRlKTsKKworCQkJUmVsZWFzZVN5c0NhY2hlKGJhc2VUeXBlKTsKKworCQkJcmV0dXJuIE5V TEw7CisJCX0KIAogCQkvKgogCQkgKiBJZiBpdCdzIGEgdmFybGVuYSB2YWx1ZSwgZm9yY2UgaXQg dG8gYmUgaW4gbm9uLWV4cGFuZGVkCkBAIC0zNjQsNyArNDE5LDggQEAgY29lcmNlX3R5cGUoUGFy c2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkJCQkJCQkJICBiYXNlVHlwZUlkLCBiYXNl VHlwZU1vZCwKIAkJCQkJCQkJCSAgdGFyZ2V0VHlwZUlkLAogCQkJCQkJCQkJICBjY29udGV4dCwg Y2Zvcm1hdCwgbG9jYXRpb24sCi0JCQkJCQkJCQkgIGZhbHNlKTsKKwkJCQkJCQkJCSAgZmFsc2Us CisJCQkJCQkJCQkgIGVzY29udGV4dCk7CiAKIAkJUmVsZWFzZVN5c0NhY2hlKGJhc2VUeXBlKTsK IApAQCAtMzk3LDkgKzQ1MywxMSBAQCBjb2VyY2VfdHlwZShQYXJzZVN0YXRlICpwc3RhdGUsIE5v ZGUgKm5vZGUsCiAJCSAqLwogCQlDb2xsYXRlRXhwciAqY29sbCA9IChDb2xsYXRlRXhwciAqKSBu b2RlOwogCi0JCXJlc3VsdCA9IGNvZXJjZV90eXBlKHBzdGF0ZSwgKE5vZGUgKikgY29sbC0+YXJn LAotCQkJCQkJCSBpbnB1dFR5cGVJZCwgdGFyZ2V0VHlwZUlkLCB0YXJnZXRUeXBlTW9kLAotCQkJ CQkJCSBjY29udGV4dCwgY2Zvcm1hdCwgbG9jYXRpb24pOworCQlyZXN1bHQgPSBjb2VyY2VfdHlw ZV9leHRlbmRlZChwc3RhdGUsIChOb2RlICopIGNvbGwtPmFyZywKKwkJCQkJCQkJCSAgaW5wdXRU eXBlSWQsIHRhcmdldFR5cGVJZCwgdGFyZ2V0VHlwZU1vZCwKKwkJCQkJCQkJCSAgY2NvbnRleHQs IGNmb3JtYXQsIGxvY2F0aW9uLAorCQkJCQkJCQkJICBlc2NvbnRleHQpOworCiAJCWlmICh0eXBl X2lzX2NvbGxhdGFibGUodGFyZ2V0VHlwZUlkKSkKIAkJewogCQkJQ29sbGF0ZUV4cHIgKm5ld2Nv bGwgPSBtYWtlTm9kZShDb2xsYXRlRXhwcik7CkBAIC00MzIsNyArNDkwLDggQEAgY29lcmNlX3R5 cGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkJICovCiAJCQlyZXN1bHQgPSBi dWlsZF9jb2VyY2lvbl9leHByZXNzaW9uKG5vZGUsIHBhdGh0eXBlLCBmdW5jSWQsCiAJCQkJCQkJ CQkJCSAgIGJhc2VUeXBlSWQsIGJhc2VUeXBlTW9kLAotCQkJCQkJCQkJCQkgICBjY29udGV4dCwg Y2Zvcm1hdCwgbG9jYXRpb24pOworCQkJCQkJCQkJCQkgICBjY29udGV4dCwgY2Zvcm1hdCwgbG9j YXRpb24sCisJCQkJCQkJCQkJCSAgIGVzY29udGV4dCk7CiAKIAkJCS8qCiAJCQkgKiBJZiBkb21h aW4sIGNvZXJjZSB0byB0aGUgZG9tYWluIHR5cGUgYW5kIHJlbGFiZWwgd2l0aCBkb21haW4KQEAg LTQ0Miw3ICs1MDEsOCBAQCBjb2VyY2VfdHlwZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKm5v ZGUsCiAJCQkJcmVzdWx0ID0gY29lcmNlX3RvX2RvbWFpbihyZXN1bHQsIGJhc2VUeXBlSWQsIGJh c2VUeXBlTW9kLAogCQkJCQkJCQkJCSAgdGFyZ2V0VHlwZUlkLAogCQkJCQkJCQkJCSAgY2NvbnRl eHQsIGNmb3JtYXQsIGxvY2F0aW9uLAotCQkJCQkJCQkJCSAgdHJ1ZSk7CisJCQkJCQkJCQkJICB0 cnVlLAorCQkJCQkJCQkJCSAgZXNjb250ZXh0KTsKIAkJfQogCQllbHNlCiAJCXsKQEAgLTQ1OCw3 ICs1MTgsOSBAQCBjb2VyY2VfdHlwZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKm5vZGUsCiAJ CQlyZXN1bHQgPSBjb2VyY2VfdG9fZG9tYWluKG5vZGUsIGJhc2VUeXBlSWQsIGJhc2VUeXBlTW9k LAogCQkJCQkJCQkJICB0YXJnZXRUeXBlSWQsCiAJCQkJCQkJCQkgIGNjb250ZXh0LCBjZm9ybWF0 LCBsb2NhdGlvbiwKLQkJCQkJCQkJCSAgZmFsc2UpOworCQkJCQkJCQkJICBmYWxzZSwKKwkJCQkJ CQkJCSAgZXNjb250ZXh0KTsKKwogCQkJaWYgKHJlc3VsdCA9PSBub2RlKQogCQkJewogCQkJCS8q CkBAIC02NzUsNyArNzM3LDggQEAgY2FuX2NvZXJjZV90eXBlKGludCBuYXJncywgY29uc3QgT2lk ICppbnB1dF90eXBlaWRzLCBjb25zdCBPaWQgKnRhcmdldF90eXBlaWRzLAogTm9kZSAqCiBjb2Vy Y2VfdG9fZG9tYWluKE5vZGUgKmFyZywgT2lkIGJhc2VUeXBlSWQsIGludDMyIGJhc2VUeXBlTW9k LCBPaWQgdHlwZUlkLAogCQkJCSBDb2VyY2lvbkNvbnRleHQgY2NvbnRleHQsIENvZXJjaW9uRm9y bSBjZm9ybWF0LCBpbnQgbG9jYXRpb24sCi0JCQkJIGJvb2wgaGlkZUlucHV0Q29lcmNpb24pCisJ CQkJIGJvb2wgaGlkZUlucHV0Q29lcmNpb24sCisJCQkJIE5vZGUgKmVzY29udGV4dCkKIHsKIAlD b2VyY2VUb0RvbWFpbiAqcmVzdWx0OwogCkBAIC03MDUsNyArNzY4LDEwIEBAIGNvZXJjZV90b19k b21haW4oTm9kZSAqYXJnLCBPaWQgYmFzZVR5cGVJZCwgaW50MzIgYmFzZVR5cGVNb2QsIE9pZCB0 eXBlSWQsCiAJICovCiAJYXJnID0gY29lcmNlX3R5cGVfdHlwbW9kKGFyZywgYmFzZVR5cGVJZCwg YmFzZVR5cGVNb2QsCiAJCQkJCQkJIGNjb250ZXh0LCBDT0VSQ0VfSU1QTElDSVRfQ0FTVCwgbG9j YXRpb24sCi0JCQkJCQkJIGZhbHNlKTsKKwkJCQkJCQkgZmFsc2UsCisJCQkJCQkJIGVzY29udGV4 dCk7CisJaWYgKGFyZyA9PSBOVUxMKQkJCS8qIHNob3VsZG4ndCBoYXBwZW4gKi8KKwkJZWxvZyhF UlJPUiwgImZhaWxlZCB0byBjb2VyY2UgdHlwZSBtb2RpZmllciBhcyBleHBlY3RlZCIpOwogCiAJ LyoKIAkgKiBOb3cgYnVpbGQgdGhlIGRvbWFpbiBjb2VyY2lvbiBub2RlLiAgVGhpcyByZXByZXNl bnRzIHJ1bi10aW1lIGNoZWNraW5nCkBAIC03NTIsNyArODE4LDggQEAgc3RhdGljIE5vZGUgKgog Y29lcmNlX3R5cGVfdHlwbW9kKE5vZGUgKm5vZGUsIE9pZCB0YXJnZXRUeXBlSWQsIGludDMyIHRh cmdldFR5cE1vZCwKIAkJCQkgICBDb2VyY2lvbkNvbnRleHQgY2NvbnRleHQsIENvZXJjaW9uRm9y bSBjZm9ybWF0LAogCQkJCSAgIGludCBsb2NhdGlvbiwKLQkJCQkgICBib29sIGhpZGVJbnB1dENv ZXJjaW9uKQorCQkJCSAgIGJvb2wgaGlkZUlucHV0Q29lcmNpb24sCisJCQkJICAgTm9kZSAqZXNj b250ZXh0KQogewogCUNvZXJjaW9uUGF0aFR5cGUgcGF0aHR5cGU7CiAJT2lkCQkJZnVuY0lkOwpA QCAtNzc5LDcgKzg0Niw4IEBAIGNvZXJjZV90eXBlX3R5cG1vZChOb2RlICpub2RlLCBPaWQgdGFy Z2V0VHlwZUlkLCBpbnQzMiB0YXJnZXRUeXBNb2QsCiAJewogCQlub2RlID0gYnVpbGRfY29lcmNp b25fZXhwcmVzc2lvbihub2RlLCBwYXRodHlwZSwgZnVuY0lkLAogCQkJCQkJCQkJCSB0YXJnZXRU eXBlSWQsIHRhcmdldFR5cE1vZCwKLQkJCQkJCQkJCQkgY2NvbnRleHQsIGNmb3JtYXQsIGxvY2F0 aW9uKTsKKwkJCQkJCQkJCQkgY2NvbnRleHQsIGNmb3JtYXQsIGxvY2F0aW9uLAorCQkJCQkJCQkJ CSBlc2NvbnRleHQpOwogCX0KIAllbHNlCiAJewpAQCAtODQwLDcgKzkwOCw4IEBAIGJ1aWxkX2Nv ZXJjaW9uX2V4cHJlc3Npb24oTm9kZSAqbm9kZSwKIAkJCQkJCSAgT2lkIGZ1bmNJZCwKIAkJCQkJ CSAgT2lkIHRhcmdldFR5cGVJZCwgaW50MzIgdGFyZ2V0VHlwTW9kLAogCQkJCQkJICBDb2VyY2lv bkNvbnRleHQgY2NvbnRleHQsIENvZXJjaW9uRm9ybSBjZm9ybWF0LAotCQkJCQkJICBpbnQgbG9j YXRpb24pCisJCQkJCQkgIGludCBsb2NhdGlvbiwKKwkJCQkJCSAgTm9kZSAqZXNjb250ZXh0KQog ewogCWludAkJCW5hcmdzID0gMDsKIApAQCAtOTUwLDE0ICsxMDE5LDE1IEBAIGJ1aWxkX2NvZXJj aW9uX2V4cHJlc3Npb24oTm9kZSAqbm9kZSwKIAkJdGFyZ2V0RWxlbWVudFR5cGUgPSBnZXRfZWxl bWVudF90eXBlKHRhcmdldFR5cGVJZCk7CiAJCUFzc2VydChPaWRJc1ZhbGlkKHRhcmdldEVsZW1l bnRUeXBlKSk7CiAKLQkJZWxlbWV4cHIgPSBjb2VyY2VfdG9fdGFyZ2V0X3R5cGUoTlVMTCwKLQkJ CQkJCQkJCQkgKE5vZGUgKikgY3Rlc3QsCi0JCQkJCQkJCQkJIGN0ZXN0LT50eXBlSWQsCi0JCQkJ CQkJCQkJIHRhcmdldEVsZW1lbnRUeXBlLAotCQkJCQkJCQkJCSB0YXJnZXRUeXBNb2QsCi0JCQkJ CQkJCQkJIGNjb250ZXh0LAotCQkJCQkJCQkJCSBjZm9ybWF0LAotCQkJCQkJCQkJCSBsb2NhdGlv bik7CisJCWVsZW1leHByID0gY29lcmNlX3RvX3RhcmdldF90eXBlX2V4dGVuZGVkKE5VTEwsCisJ CQkJCQkJCQkJCQkgIChOb2RlICopIGN0ZXN0LAorCQkJCQkJCQkJCQkJICBjdGVzdC0+dHlwZUlk LAorCQkJCQkJCQkJCQkJICB0YXJnZXRFbGVtZW50VHlwZSwKKwkJCQkJCQkJCQkJCSAgdGFyZ2V0 VHlwTW9kLAorCQkJCQkJCQkJCQkJICBjY29udGV4dCwKKwkJCQkJCQkJCQkJCSAgY2Zvcm1hdCwK KwkJCQkJCQkJCQkJCSAgbG9jYXRpb24sCisJCQkJCQkJCQkJCQkgIGVzY29udGV4dCk7CiAJCWlm IChlbGVtZXhwciA9PSBOVUxMKQkvKiBzaG91bGRuJ3QgaGFwcGVuICovCiAJCQllbG9nKEVSUk9S LCAiZmFpbGVkIHRvIGNvZXJjZSBhcnJheSBlbGVtZW50IHR5cGUgYXMgZXhwZWN0ZWQiKTsKIApA QCAtMTE0MCw3ICsxMjEwLDggQEAgY29lcmNlX3JlY29yZF90b19jb21wbGV4KFBhcnNlU3RhdGUg KnBzdGF0ZSwgTm9kZSAqbm9kZSwKIAkJCQkJCQkJYmFzZVR5cGVJZCwgYmFzZVR5cGVNb2QsCiAJ CQkJCQkJCXRhcmdldFR5cGVJZCwKIAkJCQkJCQkJY2NvbnRleHQsIGNmb3JtYXQsIGxvY2F0aW9u LAotCQkJCQkJCQlmYWxzZSk7CisJCQkJCQkJCWZhbHNlLAorCQkJCQkJCQlOVUxMKTsKIAl9CiAK IAlyZXR1cm4gKE5vZGUgKikgcm93ZXhwcjsKQEAgLTEyOTUsNyArMTM2Niw4IEBAIGNvZXJjZV9u dWxsX3RvX2RvbWFpbihPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwgT2lkIGNvbGxhdGlvbiwKIAkJ CQkJCQkJICBDT0VSQ0lPTl9JTVBMSUNJVCwKIAkJCQkJCQkJICBDT0VSQ0VfSU1QTElDSVRfQ0FT VCwKIAkJCQkJCQkJICAtMSwKLQkJCQkJCQkJICBmYWxzZSk7CisJCQkJCQkJCSAgZmFsc2UsCisJ CQkJCQkJCSAgTlVMTCk7CiAJcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHBy LmMKaW5kZXggMzEyZGZkYzE4MmEuLmRlNjBjZmQ2MTc1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHBy LmMKQEAgLTE3LDYgKzE3LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdf Y2FzdC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgIm1pc2NhZG1p bi5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgpAQCAtMzgsNiArMzksNyBAQAogI2lu Y2x1ZGUgInV0aWxzL2RhdGUuaCIKICNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgogI2luY2x1 ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5j bHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKICNp bmNsdWRlICJ1dGlscy94bWwuaCIKQEAgLTYyLDcgKzY0LDggQEAgc3RhdGljIE5vZGUgKnRyYW5z Zm9ybU11bHRpQXNzaWduUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTXVsdGlBc3NpZ25SZWYgKm1h cmVmKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1DYXNlRXhwcihQYXJzZVN0YXRlICpwc3RhdGUs IENhc2VFeHByICpjKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1TdWJMaW5rKFBhcnNlU3RhdGUg KnBzdGF0ZSwgU3ViTGluayAqc3VibGluayk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtQXJyYXlF eHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9BcnJheUV4cHIgKmEsCi0JCQkJCQkJCU9pZCBhcnJh eV90eXBlLCBPaWQgZWxlbWVudF90eXBlLCBpbnQzMiB0eXBtb2QpOworCQkJCQkJCQlPaWQgYXJy YXlfdHlwZSwgT2lkIGVsZW1lbnRfdHlwZSwgaW50MzIgdHlwbW9kLAorCQkJCQkJCQlOb2RlICpl c2NvbnRleHQpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybVJvd0V4cHIoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBSb3dFeHByICpyLCBib29sIGFsbG93RGVmYXVsdCk7CiBzdGF0aWMgTm9kZSAqdHJhbnNm b3JtQ29hbGVzY2VFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29hbGVzY2VFeHByICpjKTsKIHN0 YXRpYyBOb2RlICp0cmFuc2Zvcm1NaW5NYXhFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTWluTWF4 RXhwciAqbSk7CkBAIC03OCw2ICs4MSwxMSBAQCBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtV2hvbGVS b3dSZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkgIGludCBzdWJsZXZlbHNfdXAsIGlu dCBsb2NhdGlvbik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtSW5kaXJlY3Rpb24oUGFyc2VTdGF0 ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybVR5 cGVDYXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVHlwZUNhc3QgKnRjKTsKK3N0YXRpYyB2b2lkIENv ZXJjaW9uRXJyb3JTYWZlQ2hlY2soUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpjYXN0ZXhwciwK KwkJCQkJCQkJICAgTm9kZSAqc291cmNlLCBPaWQgaW5wdXRUeXBlLCBPaWQgdGFyZ2V0VHlwZSk7 CitzdGF0aWMgdm9pZCBDb2VyY2lvbkVycm9yU2FmZV9JbnRlcm5hbChPaWQgaW5wdXRUeXBlLCBP aWQgdGFyZ2V0VHlwZSwKKwkJCQkJCQkJCSAgIGJvb2wgKmVycm9yc2FmZV9jb2VyY2lvbiwKKwkJ CQkJCQkJCSAgIGJvb2wgKnVzZXJkZWZpbmVkKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Db2xs YXRlQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sbGF0ZUNsYXVzZSAqYyk7CiBzdGF0aWMg Tm9kZSAqdHJhbnNmb3JtSnNvbk9iamVjdENvbnN0cnVjdG9yKFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAkJCQkJCQkJCQkJSnNvbk9iamVjdENvbnN0cnVjdG9yICpjdG9yKTsKQEAgLTE2Niw3ICsxNzQs NyBAQCB0cmFuc2Zvcm1FeHByUmVjdXJzZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIp CiAKIAkJY2FzZSBUX0FfQXJyYXlFeHByOgogCQkJcmVzdWx0ID0gdHJhbnNmb3JtQXJyYXlFeHBy KHBzdGF0ZSwgKEFfQXJyYXlFeHByICopIGV4cHIsCi0JCQkJCQkJCQkJSW52YWxpZE9pZCwgSW52 YWxpZE9pZCwgLTEpOworCQkJCQkJCQkJCUludmFsaWRPaWQsIEludmFsaWRPaWQsIC0xLCBOVUxM KTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgVF9UeXBlQ2FzdDoKQEAgLTU2Niw2ICs1NzQsNyBAQCB0 cmFuc2Zvcm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYpCiAJ CWNhc2UgRVhQUl9LSU5EX1ZBTFVFU19TSU5HTEU6CiAJCWNhc2UgRVhQUl9LSU5EX0NIRUNLX0NP TlNUUkFJTlQ6CiAJCWNhc2UgRVhQUl9LSU5EX0RPTUFJTl9DSEVDSzoKKwkJY2FzZSBFWFBSX0tJ TkRfQ0FTVF9ERUZBVUxUOgogCQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZBVUxUOgogCQlj YXNlIEVYUFJfS0lORF9JTkRFWF9FWFBSRVNTSU9OOgogCQljYXNlIEVYUFJfS0lORF9JTkRFWF9Q UkVESUNBVEU6CkBAIC0xODQwLDYgKzE4NDksOSBAQCB0cmFuc2Zvcm1TdWJMaW5rKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgU3ViTGluayAqc3VibGluaykKIAkJY2FzZSBFWFBSX0tJTkRfRE9NQUlOX0NI RUNLOgogCQkJZXJyID0gXygiY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBjaGVjayBjb25zdHJhaW50 Iik7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfQ0FTVF9ERUZBVUxUOgorCQkJZXJyID0g XygiY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBDQVNUIERFRkFVTFQgZXhwcmVzc2lvbiIpOworCQkJ YnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxUOgogCQljYXNlIEVYUFJfS0lO RF9GVU5DVElPTl9ERUZBVUxUOgogCQkJZXJyID0gXygiY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBE RUZBVUxUIGV4cHJlc3Npb24iKTsKQEAgLTIwMzAsMTAgKzIwNDIsMTUgQEAgdHJhbnNmb3JtU3Vi TGluayhQYXJzZVN0YXRlICpwc3RhdGUsIFN1YkxpbmsgKnN1YmxpbmspCiAgKiBJZiB0aGUgY2Fs bGVyIHNwZWNpZmllcyB0aGUgdGFyZ2V0IHR5cGUsIHRoZSByZXN1bHRpbmcgYXJyYXkgd2lsbAog ICogYmUgb2YgZXhhY3RseSB0aGF0IHR5cGUuICBPdGhlcndpc2Ugd2UgdHJ5IHRvIGluZmVyIGEg Y29tbW9uIHR5cGUKICAqIGZvciB0aGUgZWxlbWVudHMgdXNpbmcgc2VsZWN0X2NvbW1vbl90eXBl KCkuCisgKgorICogZXNjb250ZXh0IChFcnJvclNhdmVDb250ZXh0ICopIGlzIHR5cGljYWxseSBO VUxMLCBleGNlcHQgZHVyaW5nIHBhcnNlIGFuYWx5c2lzIGZvcgorICogQ0FTVCguLi4gREVGQVVM VCAuLi4gT04gQ09OVkVSU0lPTiBFUlJPUikuIFdoZW4gcHJvdmlkZWQsIGl0IHNob3VsZCBkZWZh dWx0cworICogRXJyb3JTYXZlQ29udGV4dC0+ZXJyb3Jfb2NjdXJyZWQgPSBmYWxzZTsgZXJyb3Jf b2NjdXJyZWQgaXNlIHNldAorICogdG8gdHJ1ZSBpZiBjb2VyY2luZyBhcnJheSBlbGVtZW50cyBm YWlscy4KICAqLwogc3RhdGljIE5vZGUgKgogdHJhbnNmb3JtQXJyYXlFeHByKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQV9BcnJheUV4cHIgKmEsCi0JCQkJICAgT2lkIGFycmF5X3R5cGUsIE9pZCBlbGVt ZW50X3R5cGUsIGludDMyIHR5cG1vZCkKKwkJCQkgICBPaWQgYXJyYXlfdHlwZSwgT2lkIGVsZW1l bnRfdHlwZSwgaW50MzIgdHlwbW9kLCBOb2RlICplc2NvbnRleHQpCiB7CiAJQXJyYXlFeHByICAq bmV3YSA9IG1ha2VOb2RlKEFycmF5RXhwcik7CiAJTGlzdAkgICAqbmV3ZWxlbXMgPSBOSUw7CkBA IC0yMDY0LDkgKzIwODEsMTAgQEAgdHJhbnNmb3JtQXJyYXlFeHByKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQV9BcnJheUV4cHIgKmEsCiAJCQkJCQkJCQkgIChBX0FycmF5RXhwciAqKSBlLAogCQkJCQkJ CQkJICBhcnJheV90eXBlLAogCQkJCQkJCQkJICBlbGVtZW50X3R5cGUsCi0JCQkJCQkJCQkgIHR5 cG1vZCk7CisJCQkJCQkJCQkgIHR5cG1vZCwKKwkJCQkJCQkJCSAgZXNjb250ZXh0KTsKIAkJCS8q IHdlIGNlcnRhaW5seSBoYXZlIGFuIGFycmF5IGhlcmUgKi8KLQkJCUFzc2VydChhcnJheV90eXBl ID09IEludmFsaWRPaWQgfHwgYXJyYXlfdHlwZSA9PSBleHByVHlwZShuZXdlKSk7CisJCQlBc3Nl cnQoZXNjb250ZXh0IHx8IGFycmF5X3R5cGUgPT0gSW52YWxpZE9pZCB8fCBhcnJheV90eXBlID09 IGV4cHJUeXBlKG5ld2UpKTsKIAkJCW5ld2EtPm11bHRpZGltcyA9IHRydWU7CiAJCX0KIAkJZWxz ZQpAQCAtMjEwNyw2ICsyMTI1LDggQEAgdHJhbnNmb3JtQXJyYXlFeHByKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQV9BcnJheUV4cHIgKmEsCiAJfQogCWVsc2UKIAl7CisJCUFzc2VydChlc2NvbnRleHQg PT0gTlVMTCk7CisKIAkJLyogQ2FuJ3QgaGFuZGxlIGFuIGVtcHR5IGFycmF5IHdpdGhvdXQgYSB0 YXJnZXQgdHlwZSAqLwogCQlpZiAobmV3ZWxlbXMgPT0gTklMKQogCQkJZXJlcG9ydChFUlJPUiwK QEAgLTIxNTMsMjggKzIxNzMsNjIgQEAgdHJhbnNmb3JtQXJyYXlFeHByKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQV9BcnJheUV4cHIgKmEsCiAJICogSWYgdGhlIGFycmF5J3MgdHlwZSB3YXMgbWVyZWx5 IGRlcml2ZWQgZnJvbSB0aGUgY29tbW9uIHR5cGUgb2YgaXRzCiAJICogZWxlbWVudHMsIHRoZW4g dGhlIGVsZW1lbnRzIGFyZSBpbXBsaWNpdGx5IGNvZXJjZWQgdG8gdGhlIGNvbW1vbiB0eXBlLgog CSAqIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIG90aGVyIHVzZXMgb2Ygc2VsZWN0X2NvbW1vbl90 eXBlKCkuCisJICoKKwkgKiBJZiAiZXNjb250ZXh0IiBpcyBub3QgTlVMTCwgY2hlY2sgd2hldGhl ciBlYWNoIGVsZW1lbnQgY2FuIGJlIGNvZXJjZWQKKwkgKiB0byB0aGUgdGFyZ2V0IHR5cGUsIHNp bWlsYXIgdG8gd2hhdCBpcyBkb25lIGluIHRyYW5zZm9ybVR5cGVDYXN0LgogCSAqLwogCWZvcmVh Y2goZWxlbWVudCwgbmV3ZWxlbXMpCiAJewogCQlOb2RlCSAgICplID0gKE5vZGUgKikgbGZpcnN0 KGVsZW1lbnQpOwotCQlOb2RlCSAgICpuZXdlOworCQlOb2RlCSAgICpuZXdlID0gTlVMTDsKIAog CQlpZiAoY29lcmNlX2hhcmQpCiAJCXsKLQkJCW5ld2UgPSBjb2VyY2VfdG9fdGFyZ2V0X3R5cGUo cHN0YXRlLCBlLAotCQkJCQkJCQkJCSBleHByVHlwZShlKSwKLQkJCQkJCQkJCQkgY29lcmNlX3R5 cGUsCi0JCQkJCQkJCQkJIHR5cG1vZCwKLQkJCQkJCQkJCQkgQ09FUkNJT05fRVhQTElDSVQsCi0J CQkJCQkJCQkJIENPRVJDRV9FWFBMSUNJVF9DQVNULAotCQkJCQkJCQkJCSAtMSk7Ci0JCQlpZiAo bmV3ZSA9PSBOVUxMKQotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RF X0NBTk5PVF9DT0VSQ0UpLAotCQkJCQkJIGVycm1zZygiY2Fubm90IGNhc3QgdHlwZSAlcyB0byAl cyIsCi0JCQkJCQkJCWZvcm1hdF90eXBlX2JlKGV4cHJUeXBlKGUpKSwKLQkJCQkJCQkJZm9ybWF0 X3R5cGVfYmUoY29lcmNlX3R5cGUpKSwKLQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LCBleHByTG9jYXRpb24oZSkpKSk7CisJCQkvKgorCQkJICogQ2Fubm90IGNvZXJjZSwganVzdCBh cHBlbmQgdGhlIHRyYW5zZm9ybWVkIGVsZW1lbnQgZXhwcmVzc2lvbgorCQkJICogdG8gdGhlIGxp c3QuCisJCQkgKi8KKwkJCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGVzY29udGV4dCkpCisJCQkJ bmV3ZSA9IGU7CisJCQllbHNlCisJCQl7CisJCQkJTm9kZQkgICAqZWNvcHkgPSBOVUxMOworCisJ CQkJaWYgKGVzY29udGV4dCkKKwkJCQkJZWNvcHkgPSBjb3B5T2JqZWN0KGUpOworCisJCQkJbmV3 ZSA9IGNvZXJjZV90b190YXJnZXRfdHlwZV9leHRlbmRlZChwc3RhdGUsIGUsCisJCQkJCQkJCQkJ CQkJICBleHByVHlwZShlKSwKKwkJCQkJCQkJCQkJCQkgIGNvZXJjZV90eXBlLAorCQkJCQkJCQkJ CQkJCSAgdHlwbW9kLAorCQkJCQkJCQkJCQkJCSAgQ09FUkNJT05fRVhQTElDSVQsCisJCQkJCQkJ CQkJCQkJICBDT0VSQ0VfRVhQTElDSVRfQ0FTVCwKKwkJCQkJCQkJCQkJCQkgIC0xLAorCQkJCQkJ CQkJCQkJCSAgZXNjb250ZXh0KTsKKwkJCQlpZiAobmV3ZSA9PSBOVUxMKQorCQkJCXsKKwkJCQkJ LyoKKwkJCQkJICogQ2Fubm90IGNvZXJjZS4gUmFpc2UgYW4gZXJyb3Igb3IgYXBwZW5kIHRoZSB0 cmFuc2Zvcm1lZAorCQkJCQkgKiBlbGVtZW50IHRvIHRoZSBsaXN0LiBBbHNvLCBzZXQKKwkJCQkJ ICogZXNjb250ZXh0LT5lcnJvcl9vY2N1cnJlZCB0byB0cnVlIHNvIHRoZSBjYWxsZXIgY2FuCisJ CQkJCSAqIG5vdGljZSB0aGF0IGFycmF5IGNvZXJjaW9uIGZhaWxlZC4KKwkJCQkJICovCisJCQkJ CWlmICghZXNjb250ZXh0KQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9DQU5OT1RfQ09FUkNFKSwKKwkJCQkJCQkJIGVycm1zZygiY2Fubm90IGNhc3QgdHlw ZSAlcyB0byAlcyIsCisJCQkJCQkJCQkJZm9ybWF0X3R5cGVfYmUoZXhwclR5cGUoZSkpLAorCQkJ CQkJCQkJCWZvcm1hdF90eXBlX2JlKGNvZXJjZV90eXBlKSksCisJCQkJCQkJCSBwYXJzZXJfZXJy cG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oZSkpKSk7CisJCQkJCWVsc2UKKwkJCQkJewor CQkJCQkJRXJyb3JTYXZlQ29udGV4dCAqY29udGV4dCA9IGNhc3ROb2RlKEVycm9yU2F2ZUNvbnRl eHQsIGVzY29udGV4dCk7CisKKwkJCQkJCW5ld2UgPSBlY29weTsKKwkJCQkJCWNvbnRleHQtPmVy cm9yX29jY3VycmVkID0gdHJ1ZTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KIAkJfQogCQllbHNlCiAJ CQluZXdlID0gY29lcmNlX3RvX2NvbW1vbl90eXBlKHBzdGF0ZSwgZSwKQEAgLTI3MjMsMTcgKzI3 NzcsNjYgQEAgdHJhbnNmb3JtV2hvbGVSb3dSZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQYXJzZU5h bWVzcGFjZUl0ZW0gKm5zaXRlbSwKIHN0YXRpYyBOb2RlICoKIHRyYW5zZm9ybVR5cGVDYXN0KFBh cnNlU3RhdGUgKnBzdGF0ZSwgVHlwZUNhc3QgKnRjKQogewotCU5vZGUJICAgKnJlc3VsdDsKKwlT YWZlVHlwZUNhc3RFeHByICpzdGM7CisJTm9kZQkgICAqY2FzdGV4cHIgPSBOVUxMOworCU5vZGUJ ICAgKmRlZmV4cHIgPSBOVUxMOwogCU5vZGUJICAgKmFyZyA9IHRjLT5hcmc7CisJTm9kZQkgICAq c291cmNlOwogCU5vZGUJICAgKmV4cHI7CiAJT2lkCQkJaW5wdXRUeXBlOwogCU9pZAkJCXRhcmdl dFR5cGU7CisJT2lkCQkJdGFyZ2V0VHlwZWNvbGw7CiAJaW50MzIJCXRhcmdldFR5cG1vZDsKIAlp bnQJCQlsb2NhdGlvbjsKKwlFcnJvclNhdmVDb250ZXh0ICplc2NvbnRleHQgPSBtYWtlTm9kZShF cnJvclNhdmVDb250ZXh0KTsKKworCWVzY29udGV4dC0+dHlwZSA9IFRfRXJyb3JTYXZlQ29udGV4 dDsKKwllc2NvbnRleHQtPmVycm9yX29jY3VycmVkID0gZmFsc2U7CisJZXNjb250ZXh0LT5kZXRh aWxzX3dhbnRlZCA9IGZhbHNlOwogCiAJLyogTG9vayB1cCB0aGUgdHlwZSBuYW1lIGZpcnN0ICov CiAJdHlwZW5hbWVUeXBlSWRBbmRNb2QocHN0YXRlLCB0Yy0+dHlwZU5hbWUsICZ0YXJnZXRUeXBl LCAmdGFyZ2V0VHlwbW9kKTsKIAorCXRhcmdldFR5cGVjb2xsID0gZ2V0X3R5cGNvbGxhdGlvbih0 YXJnZXRUeXBlKTsKKworCS8qIGxvb2tpbmcgYXQgREVGQVVMVCBleHByZXNzaW9uICovCisJaWYg KHRjLT5kZWZleHByKQorCXsKKwkJT2lkCQkJZGVmQ29sbDsKKworCQlkZWZleHByID0gdHJhbnNm b3JtRXhwcihwc3RhdGUsIHRjLT5kZWZleHByLCBFWFBSX0tJTkRfQ0FTVF9ERUZBVUxUKTsKKwor CQlkZWZleHByID0gY29lcmNlX3RvX3RhcmdldF90eXBlKHBzdGF0ZSwgZGVmZXhwciwgZXhwclR5 cGUoZGVmZXhwciksCisJCQkJCQkJCQkJdGFyZ2V0VHlwZSwgdGFyZ2V0VHlwbW9kLAorCQkJCQkJ CQkJCUNPRVJDSU9OX0VYUExJQ0lULAorCQkJCQkJCQkJCUNPRVJDRV9FWFBMSUNJVF9DQVNULAor CQkJCQkJCQkJCWV4cHJMb2NhdGlvbihkZWZleHByKSk7CisJCWlmIChkZWZleHByID09IE5VTEwp CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfQ0FOTk9UX0NPRVJDRSks CisJCQkJCWVycm1zZygiY2Fubm90IGNvZXJjZSAlcyBleHByZXNzaW9uIHRvIHR5cGUgJXMiLAor CQkJCQkJICAgIkNBU1QgREVGQVVMVCIsCisJCQkJCQkgICBmb3JtYXRfdHlwZV9iZSh0YXJnZXRU eXBlKSksCisJCQkJCXBhcnNlcl9jb2VyY2lvbl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2Nh dGlvbih0Yy0+ZGVmZXhwciksIGRlZmV4cHIpKTsKKworCQlhc3NpZ25fZXhwcl9jb2xsYXRpb25z KHBzdGF0ZSwgZGVmZXhwcik7CisKKwkJLyoKKwkJICogVGhlIGNvbGxhdGlvbiBvZiBERUZBVUxU IGV4cHJlc3Npb24gbXVzdCBtYXRjaCB0aGUgY29sbGF0aW9uIG9mIHRoZQorCQkgKiB0YXJnZXQg dHlwZS4KKwkJICovCisJCWRlZkNvbGwgPSBleHByQ29sbGF0aW9uKGRlZmV4cHIpOworCisJCWlm ICh0YXJnZXRUeXBlY29sbCAhPSBkZWZDb2xsKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJy Y29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJZXJybXNnKCJjb2xsYXRpb24g b2YgQ0FTVCBERUZBVUxUIGV4cHJlc3Npb24gY29uZmxpY3RzIHdpdGggdGFyZ2V0IHR5cGUgY29s bGF0aW9uIiksCisJCQkJCWVycmRldGFpbCgiXCIlc1wiIHZlcnN1cyBcIiVzXCIiLAorCQkJCQkJ CSAgZ2V0X2NvbGxhdGlvbl9uYW1lKGRlZkNvbGwpLAorCQkJCQkJCSAgZ2V0X2NvbGxhdGlvbl9u YW1lKHRhcmdldFR5cGVjb2xsKSksCisJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4 cHJMb2NhdGlvbihkZWZleHByKSkpOworCX0KKwogCS8qCiAJICogSWYgdGhlIHN1YmplY3Qgb2Yg dGhlIHR5cGVjYXN0IGlzIGFuIEFSUkFZW10gY29uc3RydWN0IGFuZCB0aGUgdGFyZ2V0CiAJICog dHlwZSBpcyBhbiBhcnJheSB0eXBlLCB3ZSBpbnZva2UgdHJhbnNmb3JtQXJyYXlFeHByKCkgZGly ZWN0bHkgc28gdGhhdApAQCAtMjc2Miw3ICsyODY1LDggQEAgdHJhbnNmb3JtVHlwZUNhc3QoUGFy c2VTdGF0ZSAqcHN0YXRlLCBUeXBlQ2FzdCAqdGMpCiAJCQkJCQkJCQkgIChBX0FycmF5RXhwciAq KSBhcmcsCiAJCQkJCQkJCQkgIHRhcmdldEJhc2VUeXBlLAogCQkJCQkJCQkJICBlbGVtZW50VHlw ZSwKLQkJCQkJCQkJCSAgdGFyZ2V0QmFzZVR5cG1vZCk7CisJCQkJCQkJCQkgIHRhcmdldEJhc2VU eXBtb2QsCisJCQkJCQkJCQkgIGRlZmV4cHIgPyAoTm9kZSAqKSBlc2NvbnRleHQgOiBOVUxMKTsK IAkJfQogCQllbHNlCiAJCQlleHByID0gdHJhbnNmb3JtRXhwclJlY3Vyc2UocHN0YXRlLCBhcmcp OwpAQCAtMjc4MywyMCArMjg4NywyMDQgQEAgdHJhbnNmb3JtVHlwZUNhc3QoUGFyc2VTdGF0ZSAq cHN0YXRlLCBUeXBlQ2FzdCAqdGMpCiAJaWYgKGxvY2F0aW9uIDwgMCkKIAkJbG9jYXRpb24gPSB0 Yy0+dHlwZU5hbWUtPmxvY2F0aW9uOwogCi0JcmVzdWx0ID0gY29lcmNlX3RvX3RhcmdldF90eXBl KHBzdGF0ZSwgZXhwciwgaW5wdXRUeXBlLAotCQkJCQkJCQkgICB0YXJnZXRUeXBlLCB0YXJnZXRU eXBtb2QsCi0JCQkJCQkJCSAgIENPRVJDSU9OX0VYUExJQ0lULAotCQkJCQkJCQkgICBDT0VSQ0Vf RVhQTElDSVRfQ0FTVCwKLQkJCQkJCQkJICAgbG9jYXRpb24pOwotCWlmIChyZXN1bHQgPT0gTlVM TCkKKwkvKgorCSAqIGNvZXJjZV90b190YXJnZXRfdHlwZV9leHRlbmRlZCBpcyB1bmxpa2VseSB0 byBtb2RpZnkgdGhlIHNvdXJjZQorCSAqIGV4cHJlc3Npb24sIGJ1dCB3ZSBzdGlsbCBjcmVhdGUg YSBjb3B5IGJlZm9yZWhhbmQuIFRoaXMgYWxsb3dzCisJICogU2FmZVR5cGVDYXN0RXhwciB0byBy ZWNlaXZlIHRoZSB0cmFuc2Zvcm1lZCBzb3VyY2UgZXhwcmVzc2lvbgorCSAqIHVuY2hhbmdlZC4K KwkgKi8KKwlzb3VyY2UgPSBkZWZleHByID8gY29weU9iamVjdChleHByKSA6IGV4cHI7CisKKwlp ZiAoIVNPRlRfRVJST1JfT0NDVVJSRUQoZXNjb250ZXh0KSkKKwl7CisJCWNhc3RleHByID0gY29l cmNlX3RvX3RhcmdldF90eXBlX2V4dGVuZGVkKHBzdGF0ZSwgZXhwciwgaW5wdXRUeXBlLAorCQkJ CQkJCQkJCQkJICB0YXJnZXRUeXBlLCB0YXJnZXRUeXBtb2QsCisJCQkJCQkJCQkJCQkgIENPRVJD SU9OX0VYUExJQ0lULAorCQkJCQkJCQkJCQkJICBDT0VSQ0VfRVhQTElDSVRfQ0FTVCwKKwkJCQkJ CQkJCQkJCSAgbG9jYXRpb24sCisJCQkJCQkJCQkJCQkgIGRlZmV4cHIgPyAoTm9kZSAqKSBlc2Nv bnRleHQgOiBOVUxMKTsKKworCQkvKiBDb2VyY2lvbiBmYWlsZWQuIEVycm9yIG91dCBpZiBDQVNU IERFRkFVTFQgaXMgbm90IGF2YWlsYWJsZS4gKi8KKwkJaWYgKCFjYXN0ZXhwciAmJiAhZGVmZXhw cikKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9DQU5OT1RfQ09FUkNF KSwKKwkJCQkJZXJybXNnKCJjYW5ub3QgY2FzdCB0eXBlICVzIHRvICVzIiwKKwkJCQkJCSAgIGZv cm1hdF90eXBlX2JlKGlucHV0VHlwZSksCisJCQkJCQkgICBmb3JtYXRfdHlwZV9iZSh0YXJnZXRU eXBlKSksCisJCQkJCXBhcnNlcl9jb2VyY2lvbl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9u LCBleHByKSk7CisKKworCQkvKiBObyBERUZBVUxUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SLCBl eGl0IG5vdyAqLworCQlpZiAoIWRlZmV4cHIpCisJCQlyZXR1cm4gY2FzdGV4cHI7CisJfQorCisJ LyogRnVydGhlciBjaGVjayBmb3IgQ0FTVCguLi4gREVGQVVMVCAuLi4gT04gQ09OVkVSU0lPTiBF UlJPUikgKi8KKwlDb2VyY2lvbkVycm9yU2FmZUNoZWNrKHBzdGF0ZSwgY2FzdGV4cHIsIHNvdXJj ZSwgaW5wdXRUeXBlLAorCQkJCQkJICAgdGFyZ2V0VHlwZSk7CisKKwlzdGMgPSBtYWtlTm9kZShT YWZlVHlwZUNhc3RFeHByKTsKKwlzdGMtPnNvdXJjZSA9IChFeHByICopIHNvdXJjZTsKKwlzdGMt PmNhc3RleHByID0gKEV4cHIgKikgY2FzdGV4cHI7CisJc3RjLT5kZWZleHByID0gKEV4cHIgKikg ZGVmZXhwcjsKKwlzdGMtPnJlc3VsdHR5cGUgPSB0YXJnZXRUeXBlOworCXN0Yy0+cmVzdWx0dHlw bW9kID0gdGFyZ2V0VHlwbW9kOworCXN0Yy0+cmVzdWx0Y29sbGlkID0gdGFyZ2V0VHlwZWNvbGw7 CisJc3RjLT5sb2NhdGlvbiA9IGxvY2F0aW9uOworCisJcmV0dXJuIChOb2RlICopIHN0YzsKK30K KworLyoKKyAqIENoZWNrIHR5cGUgY29lcmNpb24gaXMgZXJyb3Igc2FmZSBvciBub3QuICBJZiBu b3QgdGhlbiByZXBvcnQgZXJyb3IKKyAqLworc3RhdGljIHZvaWQKK0NvZXJjaW9uRXJyb3JTYWZl Q2hlY2soUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpjYXN0ZXhwciwgTm9kZSAqc291cmNlLAor CQkJCQkgICBPaWQgaW5wdXRUeXBlLCBPaWQgdGFyZ2V0VHlwZSkKK3sKKwlib29sCQllcnJvcnNh ZmVfY29lcmNpb24gPSB0cnVlOworCWJvb2wJCXVzZXJkZWZpbmVkID0gZmFsc2U7CisKKwkvKgor CSAqIEJpbmFyeSBjb2VyY2lvbiBjYXN0IGlzIGVycm9yLXNhZmUsIENvZXJjZVZpYUlPIGNhbiBh bHNvIGJlIGV2YWx1YXRlZAorCSAqIGluIGFuIGVycm9yLXNhZmUgbWFubmVyLiBTa2lwIHRoZXNl IGNhc2VzLgorCSAqLworCWlmIChjYXN0ZXhwciA9PSBOVUxMIHx8CisJCUlzQmluYXJ5Q29lcmNp YmxlKGlucHV0VHlwZSwgdGFyZ2V0VHlwZSkgfHwKKwkJSXNBKGNhc3RleHByLCBDb2VyY2VWaWFJ TykpCisJCXJldHVybjsKKworCUNvZXJjaW9uRXJyb3JTYWZlX0ludGVybmFsKGlucHV0VHlwZSwg dGFyZ2V0VHlwZSwKKwkJCQkJCQkgICAmZXJyb3JzYWZlX2NvZXJjaW9uLAorCQkJCQkJCSAgICZ1 c2VyZGVmaW5lZCk7CisKKwlpZiAoIWVycm9yc2FmZV9jb2VyY2lvbikKIAkJZXJlcG9ydChFUlJP UiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0NBTk5PVF9DT0VSQ0UpLAotCQkJCSBlcnJtc2coImNh bm5vdCBjYXN0IHR5cGUgJXMgdG8gJXMiLAotCQkJCQkJZm9ybWF0X3R5cGVfYmUoaW5wdXRUeXBl KSwKLQkJCQkJCWZvcm1hdF90eXBlX2JlKHRhcmdldFR5cGUpKSwKLQkJCQkgcGFyc2VyX2NvZXJj aW9uX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24sIGV4cHIpKSk7CisJCQkJZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJZXJybXNnKCJjYW5ub3QgY2FzdCB0 eXBlICVzIHRvICVzIHdoZW4gJXMgZXhwcmVzc2lvbiBpcyBzcGVjaWZpZWQgaW4gJXMiLAorCQkJ CQkgICBmb3JtYXRfdHlwZV9iZShpbnB1dFR5cGUpLAorCQkJCQkgICBmb3JtYXRfdHlwZV9iZSh0 YXJnZXRUeXBlKSwKKwkJCQkJICAgIkRFRkFVTFQiLAorCQkJCQkgICAiQ0FTVCAuLi4gT04gQ09O VkVSU0lPTiBFUlJPUiIpLAorCQkJCXVzZXJkZWZpbmVkCisJCQkJPyBlcnJoaW50KCJTYWZlIHR5 cGUgY2FzdCBmb3IgdXNlci1kZWZpbmVkIHR5cGVzIGFyZSBub3QgeWV0IHN1cHBvcnRlZC4iKQor CQkJCTogZXJyaGludCgiRXhwbGljaXQgY2FzdCBpcyBkZWZpbmVkIGJ1dCBkZWZpbml0aW9uIGlz IG5vdCBlcnJvciBzYWZlLiIpLAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJM b2NhdGlvbihzb3VyY2UpKSk7Cit9CiAKLQlyZXR1cm4gcmVzdWx0Oworc3RhdGljIHZvaWQKK0Nv ZXJjaW9uRXJyb3JTYWZlX0ludGVybmFsKE9pZCBpbnB1dFR5cGUsIE9pZCB0YXJnZXRUeXBlLAor CQkJCQkJICAgYm9vbCAqZXJyb3JzYWZlX2NvZXJjaW9uLCBib29sICp1c2VyZGVmaW5lZCkKK3sK KwlIZWFwVHVwbGUJdHVwbGU7CisKKwljaGFyCQlpbnB1dF90eXB0eXBlID0gZ2V0X3R5cHR5cGUo aW5wdXRUeXBlKTsKKwljaGFyCQl0YXJnZXRfdHlwdHlwZSA9IGdldF90eXB0eXBlKHRhcmdldFR5 cGUpOworCisJLyogc2luY2UgdGhpcyBmdW5jdGlvbiByZWN1cnNlcywgaXQgY291bGQgYmUgZHJp dmVuIHRvIHN0YWNrIG92ZXJmbG93ICovCisJY2hlY2tfc3RhY2tfZGVwdGgoKTsKKworCUFzc2Vy dChlcnJvcnNhZmVfY29lcmNpb24gIT0gTlVMTCk7CisJQXNzZXJ0KHVzZXJkZWZpbmVkICE9IE5V TEwpOworCisJaWYgKCEoKmVycm9yc2FmZV9jb2VyY2lvbikpCisJCXJldHVybjsKKworCWlmIChp bnB1dF90eXB0eXBlID09IFRZUFRZUEVfRE9NQUlOICYmCisJCXRhcmdldF90eXB0eXBlID09IFRZ UFRZUEVfRE9NQUlOKQorCXsKKwkJQ29lcmNpb25FcnJvclNhZmVfSW50ZXJuYWwoZ2V0QmFzZVR5 cGUoaW5wdXRUeXBlKSwKKwkJCQkJCQkJICAgZ2V0QmFzZVR5cGUodGFyZ2V0VHlwZSksCisJCQkJ CQkJCSAgIGVycm9yc2FmZV9jb2VyY2lvbiwKKwkJCQkJCQkJICAgdXNlcmRlZmluZWQpOworCQly ZXR1cm47CisJfQorCWVsc2UgaWYgKGlucHV0X3R5cHR5cGUgPT0gVFlQVFlQRV9ET01BSU4pCisJ eworCQlDb2VyY2lvbkVycm9yU2FmZV9JbnRlcm5hbChnZXRCYXNlVHlwZShpbnB1dFR5cGUpLAor CQkJCQkJCQkgICB0YXJnZXRUeXBlLAorCQkJCQkJCQkgICBlcnJvcnNhZmVfY29lcmNpb24sCisJ CQkJCQkJCSAgIHVzZXJkZWZpbmVkKTsKKwkJcmV0dXJuOworCX0KKwllbHNlIGlmICh0YXJnZXRf dHlwdHlwZSA9PSBUWVBUWVBFX0RPTUFJTikKKwl7CisJCUNvZXJjaW9uRXJyb3JTYWZlX0ludGVy bmFsKGlucHV0VHlwZSwKKwkJCQkJCQkJICAgZ2V0QmFzZVR5cGUodGFyZ2V0VHlwZSksCisJCQkJ CQkJCSAgIGVycm9yc2FmZV9jb2VyY2lvbiwKKwkJCQkJCQkJICAgdXNlcmRlZmluZWQpOworCQly ZXR1cm47CisJfQorCWVsc2UgaWYgKChpbnB1dF90eXB0eXBlICE9IFRZUFRZUEVfQkFTRSAmJiBp bnB1dFR5cGUgPiBGaXJzdFVucGlubmVkT2JqZWN0SWQpCisJCQkgfHwgKHRhcmdldF90eXB0eXBl ICE9IFRZUFRZUEVfQkFTRSAmJiB0YXJnZXRUeXBlID4gRmlyc3RVbnBpbm5lZE9iamVjdElkKSkK Kwl7CisJCS8qCisJCSAqIElucHV0IGV4cHJlc3Npb24gY2FuIGJlIFVOS05PV04gQ29uc3QsIGFu ZCBVTktOT1dOIHR5cHR5cGUgaXMKKwkJICogVFlQVFlQRV9QU0VVRE8uCisJCSAqLworCisJCS8q CisJCSAqIENvbXBvc2l0ZS10by1jb21wb3NpdGUgY2FzdGluZyBpcyBub3QgaW1wbGVtZW50ZWQs IHNvIGVycm9yLXNhZmUKKwkJICogY2FzdCBiZXR3ZWVuIHRoZW0gc2hvdWxkIG5vdCBiZSBwb3Nz aWJsZTsgd2UgZm9yYmlkIGl0IGhlcmUuCisJCSAqCisJCSAqIE91ciB0eXBlIHN5c3RlbSBkb2Vz IG5vdCBhdXRvbWF0aWNhbGx5IGNhc3QgYSB1c2VyLWRlZmluZWQgcmFuZ2UKKwkJICogdHlwZSB0 byBhbiBidWlsdC1pbiByYW5nZSB0eXBlLCBldmVuIGlmIHRoZWlyIGJhc2UgZWxlbWVudCB0eXBl cworCQkgKiBhcmUgdGhlIHNhbWUuIFRoZXJlIG1heSBiZSBjb21wbGV4IGVkZ2UgY2FzZXMgdG8g Y29uc2lkZXIsIHNhZmVyIHRvCisJCSAqIHNpbXBseSBkaXNhbGxvdyBlcnJvci1zYWZlIGNhc3Rp bmcgZm9yIHRoZW0gbm93LgorCQkgKi8KKwkJKmVycm9yc2FmZV9jb2VyY2lvbiA9IGZhbHNlOwor CisJCXJldHVybjsKKwl9CisJZWxzZQorCXsKKwkJT2lkCQkJaW5wdXRfdHlwZWxlbSA9IGdldF9l bGVtZW50X3R5cGUoaW5wdXRUeXBlKTsKKwkJT2lkCQkJdGFyZ2V0X3R5cGVsZW0gPSBnZXRfZWxl bWVudF90eXBlKHRhcmdldFR5cGUpOworCisJCWlmIChPaWRJc1ZhbGlkKGlucHV0X3R5cGVsZW0p ICYmIE9pZElzVmFsaWQodGFyZ2V0X3R5cGVsZW0pKQorCQl7CisJCQkvKiByZWN1cnNlIGludG8g YXJyYXkgZWxlbWVudCB0eXBlICovCisJCQlDb2VyY2lvbkVycm9yU2FmZV9JbnRlcm5hbChpbnB1 dF90eXBlbGVtLAorCQkJCQkJCQkJICAgdGFyZ2V0X3R5cGVsZW0sCisJCQkJCQkJCQkgICBlcnJv cnNhZmVfY29lcmNpb24sCisJCQkJCQkJCQkgICB1c2VyZGVmaW5lZCk7CisJCQlyZXR1cm47CisJ CX0KKwl9CisKKwkvKgorCSAqIENhc3RzIHNvdXJjZSBkYXRhIHR5cGUgYXMgTU9ORVkgYXJlIG5v dCBlcnJvciBzYWZlLgorCSAqLworCWlmIChpbnB1dFR5cGUgPT0gTU9ORVlPSUQpCisJeworCQkq ZXJyb3JzYWZlX2NvZXJjaW9uID0gZmFsc2U7CisJCXJldHVybjsKKwl9CisKKwlpZiAoaW5wdXRU eXBlICE9IHRhcmdldFR5cGUpCisJeworCQl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMihDQVNUU09V UkNFVEFSR0VULAorCQkJCQkJCQlPYmplY3RJZEdldERhdHVtKGlucHV0VHlwZSksCisJCQkJCQkJ CU9iamVjdElkR2V0RGF0dW0odGFyZ2V0VHlwZSkpOworCisJCS8qCisJCSAqIEEgcGdfY2FzdCBl bnRyeSBtaWdodCBub3QgZXhpc3QgZm9yIHRoaXMgc3BlY2lmaWMgY2FzdDsgZm9yCisJCSAqIGV4 YW1wbGUsIHdoZW4gdXNpbmcgQ29lcmNlVmlhSU8uCisJCSAqLworCQlpZiAoSGVhcFR1cGxlSXNW YWxpZCh0dXBsZSkpCisJCXsKKwkJCUZvcm1fcGdfY2FzdCBjYXN0Rm9ybSA9IChGb3JtX3BnX2Nh c3QpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkJCWlmIChjYXN0Rm9ybS0+Y2FzdGZ1bmMgPiBGaXJz dFVucGlubmVkT2JqZWN0SWQpCisJCQl7CisJCQkJKmVycm9yc2FmZV9jb2VyY2lvbiA9IGZhbHNl OworCQkJCSp1c2VyZGVmaW5lZCA9IHRydWU7CisJCQl9CisJCQlSZWxlYXNlU3lzQ2FjaGUodHVw bGUpOworCQl9CisJCWVsc2UgaWYgKGlucHV0VHlwZSA+IEZpcnN0VW5waW5uZWRPYmplY3RJZCB8 fCB0YXJnZXRUeXBlID4gRmlyc3RVbnBpbm5lZE9iamVjdElkKQorCQkJKmVycm9yc2FmZV9jb2Vy Y2lvbiA9IGZhbHNlOworCX0KIH0KIAogLyoKQEAgLTMyMTIsNiArMzUwMCw4IEBAIFBhcnNlRXhw cktpbmROYW1lKFBhcnNlRXhwcktpbmQgZXhwcktpbmQpCiAJCWNhc2UgRVhQUl9LSU5EX0NIRUNL X0NPTlNUUkFJTlQ6CiAJCWNhc2UgRVhQUl9LSU5EX0RPTUFJTl9DSEVDSzoKIAkJCXJldHVybiAi Q0hFQ0siOworCQljYXNlIEVYUFJfS0lORF9DQVNUX0RFRkFVTFQ6CisJCQlyZXR1cm4gIkNBU1Qg REVGQVVMVCI7CiAJCWNhc2UgRVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxUOgogCQljYXNlIEVYUFJf S0lORF9GVU5DVElPTl9ERUZBVUxUOgogCQkJcmV0dXJuICJERUZBVUxUIjsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfZnVuYy5jCmluZGV4IDhkYmQ0MWEzNTQ4Li4zNTlhNjk0ZmUwOSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfZnVuYy5jCkBAIC0yNzQzLDYgKzI3NDMsOSBAQCBjaGVja19zcmZfY2FsbF9wbGFjZW1lbnQo UGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpsYXN0X3NyZiwgaW50IGxvY2F0aW9uKQogCQljYXNl IEVYUFJfS0lORF9ET01BSU5fQ0hFQ0s6CiAJCQllcnIgPSBfKCJzZXQtcmV0dXJuaW5nIGZ1bmN0 aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gY2hlY2sgY29uc3RyYWludHMiKTsKIAkJCWJyZWFrOwor CQljYXNlIEVYUFJfS0lORF9DQVNUX0RFRkFVTFQ6CisJCQllcnIgPSBfKCJzZXQtcmV0dXJuaW5n IGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gQ0FTVCBERUZBVUxUIGV4cHJlc3Npb25zIik7 CisJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRfQ09MVU1OX0RFRkFVTFQ6CiAJCWNhc2UgRVhQ Ul9LSU5EX0ZVTkNUSU9OX0RFRkFVTFQ6CiAJCQllcnIgPSBfKCJzZXQtcmV0dXJuaW5nIGZ1bmN0 aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gREVGQVVMVCBleHByZXNzaW9ucyIpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3RhcmdldC5jCmluZGV4IDU0MWZlZjVmMTgzLi43Y2QxOTcwYmM5OSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCisrKyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV90YXJnZXQuYwpAQCAtODQ1LDcgKzg0NSw4IEBAIHRyYW5zZm9ybUFzc2lnbm1l bnRJbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJQ09FUkNJT05fSU1Q TElDSVQsCiAJCQkJCQkJCQkJQ09FUkNFX0lNUExJQ0lUX0NBU1QsCiAJCQkJCQkJCQkJbG9jYXRp b24sCi0JCQkJCQkJCQkJZmFsc2UpOworCQkJCQkJCQkJCWZhbHNlLAorCQkJCQkJCQkJCU5VTEwp OwogCiAJCQlyZXR1cm4gKE5vZGUgKikgZnN0b3JlOwogCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfdHlwZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3R5cGUu YwppbmRleCBiYjdlY2NkZTlmZC4uMjgzZGZjMmVlOTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV90eXBlLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3R5cGUu YwpAQCAtNjYwLDYgKzY2MCwyNCBAQCBzdHJpbmdUeXBlRGF0dW0oVHlwZSB0cCwgY2hhciAqc3Ry aW5nLCBpbnQzMiBhdHR0eXBtb2QpCiAJcmV0dXJuIE9pZElucHV0RnVuY3Rpb25DYWxsKHR5cGlu cHV0LCBzdHJpbmcsIHR5cGlvcGFyYW0sIGF0dHR5cG1vZCk7CiB9CiAKKy8qCisgKiBFcnJvci1z YWZlIHZlcnNpb24gb2Ygc3RyaW5nVHlwZURhdHVtLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiAi c3RyaW5nIiBpcyBhIHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIHR5cGUgInRwIi4KKyAqIE9uIHN1 Y2Nlc3MsIHRoZSBpbnRlcm5hbCBEYXR1bSByZXByZXNlbnRhdGlvbiBpcyB3cml0dGVuIHRvICJy ZXN1bHQiLgorICovCitib29sCitzdHJpbmdUeXBlRGF0dW1TYWZlKFR5cGUgdHAsIGNoYXIgKnN0 cmluZywgaW50MzIgYXR0dHlwbW9kLAorCQkJCQlOb2RlICplc2NvbnRleHQsIERhdHVtICpyZXN1 bHQpCit7CisJRm9ybV9wZ190eXBlIHR5cGZvcm0gPSAoRm9ybV9wZ190eXBlKSBHRVRTVFJVQ1Qo dHApOworCU9pZAkJCXR5cGlucHV0ID0gdHlwZm9ybS0+dHlwaW5wdXQ7CisJT2lkCQkJdHlwaW9w YXJhbSA9IGdldFR5cGVJT1BhcmFtKHRwKTsKKworCXJldHVybiBPaWRJbnB1dEZ1bmN0aW9uQ2Fs bFNhZmUodHlwaW5wdXQsIHN0cmluZywgdHlwaW9wYXJhbSwgYXR0dHlwbW9kLAorCQkJCQkJCQkJ ZXNjb250ZXh0LCByZXN1bHQpOworfQorCiAvKgogICogR2l2ZW4gYSB0eXBlaWQsIHJldHVybiB0 aGUgdHlwZSdzIHR5cHJlbGlkIChhc3NvY2lhdGVkIHJlbGF0aW9uKSwgaWYgYW55LgogICogUmV0 dXJucyBJbnZhbGlkT2lkIGlmIHR5cGUgaXMgbm90IGEgY29tcG9zaXRlIHR5cGUuCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3V0aWxjbWQuYwppbmRleCA5YTkxOGUxNGFhNy4uMTAzMThmYzQ5OTAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtNDk1MSw3ICs0OTUxLDcgQEAgdHJhbnNmb3Jt UGFydGl0aW9uQm91bmRWYWx1ZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKnZhbCwKIAkJYXNz aWduX2V4cHJfY29sbGF0aW9ucyhwc3RhdGUsIHZhbHVlKTsKIAkJdmFsdWUgPSAoTm9kZSAqKSBl eHByZXNzaW9uX3BsYW5uZXIoKEV4cHIgKikgdmFsdWUpOwogCQl2YWx1ZSA9IChOb2RlICopIGV2 YWx1YXRlX2V4cHIoKEV4cHIgKikgdmFsdWUsIGNvbFR5cGUsIGNvbFR5cG1vZCwKLQkJCQkJCQkJ CSAgIHBhcnRDb2xsYXRpb24pOworCQkJCQkJCQkJICAgcGFydENvbGxhdGlvbiwgTlVMTCk7CiAJ CWlmICghSXNBKHZhbHVlLCBDb25zdCkpCiAJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGV2YWx1 YXRlIHBhcnRpdGlvbiBib3VuZCBleHByZXNzaW9uIik7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2FycmF5ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJh eWZ1bmNzLmMKaW5kZXggNzM0ZTVmZWE0NWUuLmRiZmU1ZjRhNzllIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvYXJyYXlmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9hcnJheWZ1bmNzLmMKQEAgLTMyOTQsNiArMzI5NCwxNSBAQCBhcnJheV9tYXAoRGF0dW0gYXJy YXlkLAogCQkvKiBBcHBseSB0aGUgZ2l2ZW4gZXhwcmVzc2lvbiB0byBzb3VyY2UgZWxlbWVudCAq LwogCQl2YWx1ZXNbaV0gPSBFeGVjRXZhbEV4cHIoZXhwcnN0YXRlLCBlY29udGV4dCwgJm51bGxz W2ldKTsKIAorCQkvKiBFeGl0IGVhcmx5IGlmIGV2YWx1YXRpb24gZmFpbGVkICovCisJCWlmIChT T0ZUX0VSUk9SX09DQ1VSUkVEKGV4cHJzdGF0ZS0+ZXNjb250ZXh0KSkKKwkJeworCQkJcGZyZWUo dmFsdWVzKTsKKwkJCXBmcmVlKG51bGxzKTsKKworCQkJcmV0dXJuIChEYXR1bSkgMDsKKwkJfQor CiAJCWlmIChudWxsc1tpXSkKIAkJCWhhc251bGxzID0gdHJ1ZTsKIAkJZWxzZQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3J1bGV1dGlscy5jCmluZGV4IDdiYzEyNTg5ZTQwLi43NDg1ODZhYzY3YyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMTExMDYsNiArMTExMDYsMzEgQEAgZ2V0X3J1bGVfZXhw cihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQl9CiAJCQlicmVhazsK IAorCQljYXNlIFRfU2FmZVR5cGVDYXN0RXhwcjoKKwkJCXsKKwkJCQlTYWZlVHlwZUNhc3RFeHBy ICpzdGNleHByID0gY2FzdE5vZGUoU2FmZVR5cGVDYXN0RXhwciwgbm9kZSk7CisKKwkJCQkvKgor CQkJCSAqIFdlIGNhbm5vdCBkZXBhcnNlIGNhc3RleHByIGRpcmVjdGx5LCBzaW5jZQorCQkJCSAq IHRyYW5zZm9ybVR5cGVDYXN0IG1heSBoYXZlIGFscmVhZHkgY29uc3RhbnQtZm9sZGVkIGl0IGlu dG8KKwkJCQkgKiBhIENvbnN0IG5vZGUuIEluc3RlYWQsIHdlIGNhbiB1c2UgInNvdXJjZSIgYW5k ICJkZWZleHByIiB0bworCQkJCSAqIHJlY29uc3RydWN0IHRoZSBDQVNUIERFRkFVTFQgY2xhdXNl LgorCQkJCSAqLworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiQ0FTVCgiKTsKKwkJ CQlnZXRfcnVsZV9leHByKChOb2RlICopIHN0Y2V4cHItPnNvdXJjZSwgY29udGV4dCwgc2hvd2lt cGxpY2l0KTsKKworCQkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiIEFTICVzICIsCisJCQkJCQkJ CSBmb3JtYXRfdHlwZV93aXRoX3R5cGVtb2Qoc3RjZXhwci0+cmVzdWx0dHlwZSwKKwkJCQkJCQkJ CQkJCQkJICBzdGNleHByLT5yZXN1bHR0eXBtb2QpKTsKKworCQkJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoYnVmLCAiREVGQVVMVCAiKTsKKworCQkJCWdldF9ydWxlX2V4cHIoKE5vZGUgKikgc3Rj ZXhwci0+ZGVmZXhwciwgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKKworCQkJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoYnVmLCAiIE9OIENPTlZFUlNJT04gRVJST1IpIik7CisJCQl9CisJCQlicmVh azsKKwogCQljYXNlIFRfSnNvbkV4cHI6CiAJCQl7CiAJCQkJSnNvbkV4cHIgICAqamV4cHIgPSAo SnNvbkV4cHIgKikgbm9kZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZm1n ci5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMKaW5kZXggYmZlY2ViN2E5MmYuLjkw Njg2YWUyMGY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYwpAQCAtMTc2MCw2ICsxNzYwLDE5IEBAIE9p ZElucHV0RnVuY3Rpb25DYWxsKE9pZCBmdW5jdGlvbklkLCBjaGFyICpzdHIsIE9pZCB0eXBpb3Bh cmFtLCBpbnQzMiB0eXBtb2QpCiAJcmV0dXJuIElucHV0RnVuY3Rpb25DYWxsKCZmbGluZm8sIHN0 ciwgdHlwaW9wYXJhbSwgdHlwbW9kKTsKIH0KIAorLyogZXJyb3Itc2FmZSB2ZXJzaW9uIG9mIE9p ZElucHV0RnVuY3Rpb25DYWxsICovCitib29sCitPaWRJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUoT2lk IGZ1bmN0aW9uSWQsIGNoYXIgKnN0ciwgT2lkIHR5cGlvcGFyYW0sCisJCQkJCQkgaW50MzIgdHlw bW9kLCBOb2RlICplc2NvbnRleHQsCisJCQkJCQkgRGF0dW0gKnJlc3VsdCkKK3sKKwlGbWdySW5m bwlmbGluZm87CisKKwlmbWdyX2luZm8oZnVuY3Rpb25JZCwgJmZsaW5mbyk7CisJcmV0dXJuIElu cHV0RnVuY3Rpb25DYWxsU2FmZSgmZmxpbmZvLCBzdHIsIHR5cGlvcGFyYW0sIHR5cG1vZCwKKwkJ CQkJCQkJIGVzY29udGV4dCwgcmVzdWx0KTsKK30KKwogY2hhciAqCiBPaWRPdXRwdXRGdW5jdGlv bkNhbGwoT2lkIGZ1bmN0aW9uSWQsIERhdHVtIHZhbCkKIHsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5o CmluZGV4IGFhOWIzNjFmYTMxLi5mYTlkYjhmZDY4NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY0V4cHIuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5o CkBAIC0yNjUsNiArMjY1LDcgQEAgdHlwZWRlZiBlbnVtIEV4cHJFdmFsT3AKIAlFRU9QX1hNTEVY UFIsCiAJRUVPUF9KU09OX0NPTlNUUlVDVE9SLAogCUVFT1BfSVNfSlNPTiwKKwlFRU9QX1NBRkVU WVBFX0NBU1QsCiAJRUVPUF9KU09ORVhQUl9QQVRILAogCUVFT1BfSlNPTkVYUFJfQ09FUkNJT04s CiAJRUVPUF9KU09ORVhQUl9DT0VSQ0lPTl9GSU5JU0gsCkBAIC03NTAsNiArNzUxLDEyIEBAIHR5 cGVkZWYgc3RydWN0IEV4cHJFdmFsU3RlcAogCQkJSnNvbklzUHJlZGljYXRlICpwcmVkOwkvKiBv cmlnaW5hbCBleHByZXNzaW9uIG5vZGUgKi8KIAkJfQkJCWlzX2pzb247CiAKKwkJLyogZm9yIEVF T1BfU0FGRVRZUEVfQ0FTVCAqLworCQlzdHJ1Y3QKKwkJeworCQkJc3RydWN0IFNhZmVUeXBlQ2Fz dFN0YXRlICpzdGNzdGF0ZTsKKwkJfQkJCXN0Y2V4cHI7CisKIAkJLyogZm9yIEVFT1BfSlNPTkVY UFJfUEFUSCAqLwogCQlzdHJ1Y3QKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZm1nci5o IGIvc3JjL2luY2x1ZGUvZm1nci5oCmluZGV4IDEwZDAyYmRiNzlmLi44ZTNlNTFkYzIyOCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvZm1nci5oCisrKyBiL3NyYy9pbmNsdWRlL2ZtZ3IuaApAQCAt NzUyLDYgKzc1Miw5IEBAIGV4dGVybiBib29sIERpcmVjdElucHV0RnVuY3Rpb25DYWxsU2FmZShQ R0Z1bmN0aW9uIGZ1bmMsIGNoYXIgKnN0ciwKIAkJCQkJCQkJCQlEYXR1bSAqcmVzdWx0KTsKIGV4 dGVybiBEYXR1bSBPaWRJbnB1dEZ1bmN0aW9uQ2FsbChPaWQgZnVuY3Rpb25JZCwgY2hhciAqc3Ry LAogCQkJCQkJCQkgIE9pZCB0eXBpb3BhcmFtLCBpbnQzMiB0eXBtb2QpOworZXh0ZXJuIGJvb2wg T2lkSW5wdXRGdW5jdGlvbkNhbGxTYWZlKE9pZCBmdW5jdGlvbklkLCBjaGFyICpzdHIsIE9pZCB0 eXBpb3BhcmFtLAorCQkJCQkJCQkJIGludDMyIHR5cG1vZCwgTm9kZSAqZXNjb250ZXh0LAorCQkJ CQkJCQkJIERhdHVtICpyZXN1bHQpOwogZXh0ZXJuIGNoYXIgKk91dHB1dEZ1bmN0aW9uQ2FsbChG bWdySW5mbyAqZmxpbmZvLCBEYXR1bSB2YWwpOwogZXh0ZXJuIGNoYXIgKk9pZE91dHB1dEZ1bmN0 aW9uQ2FsbChPaWQgZnVuY3Rpb25JZCwgRGF0dW0gdmFsKTsKIGV4dGVybiBEYXR1bSBSZWNlaXZl RnVuY3Rpb25DYWxsKEZtZ3JJbmZvICpmbGluZm8sIFN0cmluZ0luZm8gYnVmLApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVj bm9kZXMuaAppbmRleCA2ODRlMzk4ZjgyNC4uM2VlMDM5ZGFjZDQgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oCkBAIC0xMDcxLDYgKzEwNzEsMjcgQEAgdHlwZWRlZiBzdHJ1Y3QgRG9tYWluQ29uc3RyYWlu dFN0YXRlCiAJRXhwclN0YXRlICAqY2hlY2tfZXhwcnN0YXRlOwkvKiBjaGVja19leHByJ3MgZXZh bCBzdGF0ZSwgb3IgTlVMTCAqLwogfSBEb21haW5Db25zdHJhaW50U3RhdGU7CiAKK3R5cGVkZWYg c3RydWN0IFNhZmVUeXBlQ2FzdFN0YXRlCit7CisJU2FmZVR5cGVDYXN0RXhwciAqc3RjZXhwcjsK KworCS8qCisJICogQWRkcmVzcyB0byBqdW1wIHRvIHdoZW4gc2tpcHBpbmcgYWxsIHRoZSBzdGVw cyB0byBldmFsdWF0ZSB0aGUgZGVmYXVsdAorCSAqIGV4cHJlc3Npb24uCisJICovCisJaW50CQkJ anVtcF9lbmQ7CisKKwkvKgorCSAqIEZvciBlcnJvci1zYWZlIGV2YWx1YXRpb24gb2YgY29lcmNp b25zLiBBIHBvaW50ZXIgdG8gdGhpcyBpcyBwYXNzZWQgdG8KKwkgKiBFeGVjSW5pdEV4cHJSZWMo KSB3aGVuIGluaXRpYWxpemluZyB0aGUgY29lcmNpb24gZXhwcmVzc2lvbnMsIHNlZQorCSAqIEV4 ZWNJbml0U2FmZVR5cGVDYXN0RXhwci4KKwkgKgorCSAqIFJlc2V0IGZvciBlYWNoIGV2YWx1YXRp b24gb2YgRUVPUF9TQUZFVFlQRV9DQVNULgorCSAqLworCUVycm9yU2F2ZUNvbnRleHQgZXNjb250 ZXh0OworCit9IFNhZmVUeXBlQ2FzdFN0YXRlOworCiAvKgogICogU3RhdGUgZm9yIEpzb25FeHBy IGV2YWx1YXRpb24sIHRvbyBiaWcgdG8gaW5saW5lLgogICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApp bmRleCBkZjQzMTIyMGFjNS4uYmEyN2UwYTcxNGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAg LTM5Nyw2ICszOTcsNyBAQCB0eXBlZGVmIHN0cnVjdCBUeXBlQ2FzdAogCU5vZGVUYWcJCXR5cGU7 CiAJTm9kZQkgICAqYXJnOwkJCS8qIHRoZSBleHByZXNzaW9uIGJlaW5nIGNhc3RlZCAqLwogCVR5 cGVOYW1lICAgKnR5cGVOYW1lOwkJLyogdGhlIHRhcmdldCB0eXBlICovCisJTm9kZQkgICAqZGVm ZXhwcjsJCS8qIERFRkFVTFQgZXhwcmVzc2lvbiAqLwogCVBhcnNlTG9jCWxvY2F0aW9uOwkJLyog dG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KIH0gVHlwZUNhc3Q7CiAKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMv cHJpbW5vZGVzLmgKaW5kZXggZjViNmI0NTY2NGEuLjcxZTU1ZWExZjhhIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmlt bm9kZXMuaApAQCAtNzcwLDYgKzc3MCw0MiBAQCB0eXBlZGVmIGVudW0gQ29lcmNpb25Gb3JtCiAJ Q09FUkNFX1NRTF9TWU5UQVgsCQkJLyogZGlzcGxheSB3aXRoIFNRTC1tYW5kYXRlZCBzcGVjaWFs IHN5bnRheCAqLwogfSBDb2VyY2lvbkZvcm07CiAKKy8qCisgKiBTYWZlVHlwZUNhc3RFeHByIC0K KyAqCQlUcmFuc2Zvcm1lZCByZXByZXNlbnRhdGlvbiBvZgorICogCQlDQVNUKGV4cHIgQVMgdHlw ZW5hbWUgREVGQVVMVCBleHByIE9OIENPTlZFUlNJT04gRVJST1IpCisgKiAJCUNBU1QoZXhwciBB UyB0eXBlbmFtZSBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpCisgKi8KK3R5cGVkZWYgc3RydWN0 IFNhZmVUeXBlQ2FzdEV4cHIKK3sKKwlFeHByCQl4cHI7CisKKwkvKgorCSAqIFRyYW5zZm9ybWVk IHNvdXJjZSBleHByZXNzaW9uIGZyb20gdGhlIHBhcnNlci4gQ29uc3RhbnQgZm9sZGluZworCSAq IChldmFsX2NvbnN0X2V4cHJlc3Npb25zKSBpcyBza2lwcGVkIGJlY2F1c2UgRXhlY0luaXRTYWZl VHlwZUNhc3RFeHByCisJICogZG9lcyBub3QgdXNlIHRoaXMgbm9kZS4gVGhlcmVmb3JlLCBpdCBt YXkgY29udGFpbiBhIENvbGxhdGVFeHByIG5vZGUsCisJICogd2hpY2ggRXhlY0luaXRFeHByUmVj IGNhbm5vdCBoYW5kbGUuIEhvd2V2ZXIsIHRoaXMgaXMgc3RpbGwgcmVxdWlyZWQKKwkgKiBmb3Ig ZGVwYXJzaW5nIHB1cnBvc2VzLgorCSAqCisJICogRm9yIGV4YW1wbGUsICJDQVNUKDEgQVMgZGF0 ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikiLCB0aGUKKwkgKiBjYXN0ZXhwciBp cyBub3cgTlVMTC4gVG8gZGVwYXJzZSBpdCwgd2UgbmVlZCB0aGlzIHRyYW5zZm9ybWVkICJzb3Vy Y2UiCisJICogZXhwcmVzc2lvbi4KKwkgKi8KKwlFeHByCSAgICpzb3VyY2U7CisJLyogdHJhbnNm b3JtZWQgY2FzdCBleHByZXNzaW9uLCBOVUxMIG1lYW5zIGNhbm5vdCBjb2VyY2UgdG8gdGFyZ2V0 IHR5cGUgKi8KKwlFeHByCSAgICpjYXN0ZXhwciBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2ln bm9yZSk7CisJLyogRmFsbC1iYWNrIHRvIHRoZSBkZWZhdWx0IGV4cHJlc3Npb24gaWYgY2FzdCBl dmFsdWF0aW9uIGZhaWxzICovCisJRXhwcgkgICAqZGVmZXhwcjsKKwkvKiB0YXJnZXQgdHlwZSBP aWQgKi8KKwlPaWQJCQlyZXN1bHR0eXBlOworCS8qIHRhcmdldCB0eXBlIG1vZGlmaWVyICovCisJ aW50MzIJCXJlc3VsdHR5cG1vZDsKKwkvKiBPSUQgb2YgY29sbGF0aW9uLCBvciBJbnZhbGlkT2lk IGlmIG5vbmUgKi8KKwlPaWQJCQlyZXN1bHRjb2xsaWQ7CisJLyogdG9rZW4gbG9jYXRpb24sIG9y IC0xIGlmIHVua25vd24gKi8KKwlQYXJzZUxvYwlsb2NhdGlvbjsKK30gU2FmZVR5cGVDYXN0RXhw cjsKKwogLyoKICAqIEZ1bmNFeHByIC0gZXhwcmVzc2lvbiBub2RlIGZvciBhIGZ1bmN0aW9uIGNh bGwKICAqCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmggYi9z cmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmgKaW5kZXggZThiNDA5YWZiN2YuLmI2ODZi ZTA0OWI5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmgKKysr IGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oCkBAIC0xNTEsNyArMTUxLDcgQEAg ZXh0ZXJuIHZvaWQgY29udmVydF9zYW9wX3RvX2hhc2hlZF9zYW9wKE5vZGUgKm5vZGUpOwogZXh0 ZXJuIE5vZGUgKmVzdGltYXRlX2V4cHJlc3Npb25fdmFsdWUoUGxhbm5lckluZm8gKnJvb3QsIE5v ZGUgKm5vZGUpOwogCiBleHRlcm4gRXhwciAqZXZhbHVhdGVfZXhwcihFeHByICpleHByLCBPaWQg cmVzdWx0X3R5cGUsIGludDMyIHJlc3VsdF90eXBtb2QsCi0JCQkJCQkgICBPaWQgcmVzdWx0X2Nv bGxhdGlvbik7CisJCQkJCQkgICBPaWQgcmVzdWx0X2NvbGxhdGlvbiwgTm9kZSAqZXNjb250ZXh0 KTsKIAogZXh0ZXJuIGJvb2wgdmFyX2lzX25vbm51bGxhYmxlKFBsYW5uZXJJbmZvICpyb290LCBW YXIgKnZhciwKIAkJCQkJCQkgICBOb3ROdWxsU291cmNlIHNvdXJjZSk7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfY29lcmNlLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFy c2VfY29lcmNlLmgKaW5kZXggYWFiYWNkNDliNjUuLjEyNjQ0ZjE0NmJmIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfY29lcmNlLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2Vy L3BhcnNlX2NvZXJjZS5oCkBAIC00MywxNSArNDMsMjkgQEAgZXh0ZXJuIE5vZGUgKmNvZXJjZV90 b190YXJnZXRfdHlwZShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCSAgIENvZXJjaW9uQ29u dGV4dCBjY29udGV4dCwKIAkJCQkJCQkJICAgQ29lcmNpb25Gb3JtIGNmb3JtYXQsCiAJCQkJCQkJ CSAgIGludCBsb2NhdGlvbik7CitleHRlcm4gTm9kZSAqY29lcmNlX3RvX3RhcmdldF90eXBlX2V4 dGVuZGVkKFBhcnNlU3RhdGUgKnBzdGF0ZSwKKwkJCQkJCQkJCQkJTm9kZSAqZXhwciwKKwkJCQkJ CQkJCQkJT2lkIGV4cHJ0eXBlLAorCQkJCQkJCQkJCQlPaWQgdGFyZ2V0dHlwZSwKKwkJCQkJCQkJ CQkJaW50MzIgdGFyZ2V0dHlwbW9kLAorCQkJCQkJCQkJCQlDb2VyY2lvbkNvbnRleHQgY2NvbnRl eHQsCisJCQkJCQkJCQkJCUNvZXJjaW9uRm9ybSBjZm9ybWF0LAorCQkJCQkJCQkJCQlpbnQgbG9j YXRpb24sCisJCQkJCQkJCQkJCU5vZGUgKmVzY29udGV4dCk7CiBleHRlcm4gYm9vbCBjYW5fY29l cmNlX3R5cGUoaW50IG5hcmdzLCBjb25zdCBPaWQgKmlucHV0X3R5cGVpZHMsIGNvbnN0IE9pZCAq dGFyZ2V0X3R5cGVpZHMsCiAJCQkJCQkJQ29lcmNpb25Db250ZXh0IGNjb250ZXh0KTsKIGV4dGVy biBOb2RlICpjb2VyY2VfdHlwZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKm5vZGUsCiAJCQkJ CQkgT2lkIGlucHV0VHlwZUlkLCBPaWQgdGFyZ2V0VHlwZUlkLCBpbnQzMiB0YXJnZXRUeXBlTW9k LAogCQkJCQkJIENvZXJjaW9uQ29udGV4dCBjY29udGV4dCwgQ29lcmNpb25Gb3JtIGNmb3JtYXQs IGludCBsb2NhdGlvbik7CitleHRlcm4gTm9kZSAqY29lcmNlX3R5cGVfZXh0ZW5kZWQoUGFyc2VT dGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAorCQkJCQkJCQkgIE9pZCBpbnB1dFR5cGVJZCwgT2lk IHRhcmdldFR5cGVJZCwgaW50MzIgdGFyZ2V0VHlwZU1vZCwKKwkJCQkJCQkJICBDb2VyY2lvbkNv bnRleHQgY2NvbnRleHQsIENvZXJjaW9uRm9ybSBjZm9ybWF0LCBpbnQgbG9jYXRpb24sCisJCQkJ CQkJCSAgTm9kZSAqZXNjb250ZXh0KTsKIGV4dGVybiBOb2RlICpjb2VyY2VfdG9fZG9tYWluKE5v ZGUgKmFyZywgT2lkIGJhc2VUeXBlSWQsIGludDMyIGJhc2VUeXBlTW9kLAogCQkJCQkJCSAgT2lk IHR5cGVJZCwKIAkJCQkJCQkgIENvZXJjaW9uQ29udGV4dCBjY29udGV4dCwgQ29lcmNpb25Gb3Jt IGNmb3JtYXQsIGludCBsb2NhdGlvbiwKLQkJCQkJCQkgIGJvb2wgaGlkZUlucHV0Q29lcmNpb24p OworCQkJCQkJCSAgYm9vbCBoaWRlSW5wdXRDb2VyY2lvbiwKKwkJCQkJCQkgIE5vZGUgKmVzY29u dGV4dCk7CiAKIGV4dGVybiBOb2RlICpjb2VyY2VfdG9fYm9vbGVhbihQYXJzZVN0YXRlICpwc3Rh dGUsIE5vZGUgKm5vZGUsCiAJCQkJCQkJICAgY29uc3QgY2hhciAqY29uc3RydWN0TmFtZSk7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oIGIvc3JjL2luY2x1ZGUv cGFyc2VyL3BhcnNlX25vZGUuaAppbmRleCBmYzJjYmViMjA4My4uNzI2YzFmY2QwZTIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUv cGFyc2VyL3BhcnNlX25vZGUuaApAQCAtNjcsNiArNjcsOCBAQCB0eXBlZGVmIGVudW0gUGFyc2VF eHByS2luZAogCUVYUFJfS0lORF9WQUxVRVNfU0lOR0xFLAkvKiBzaW5nbGUtcm93IFZBTFVFUyAo aW4gSU5TRVJUIG9ubHkpICovCiAJRVhQUl9LSU5EX0NIRUNLX0NPTlNUUkFJTlQsIC8qIENIRUNL IGNvbnN0cmFpbnQgZm9yIGEgdGFibGUgKi8KIAlFWFBSX0tJTkRfRE9NQUlOX0NIRUNLLAkJLyog Q0hFQ0sgY29uc3RyYWludCBmb3IgYSBkb21haW4gKi8KKwlFWFBSX0tJTkRfQ0FTVF9ERUZBVUxU LAkJLyogZGVmYXVsdCBleHByZXNzaW9uIGluIENBU1QgREVGQVVMVCBPTgorCQkJCQkJCQkgKiBD T05WRVJTSU9OIEVSUk9SICovCiAJRVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxULAkvKiBkZWZhdWx0 IHZhbHVlIGZvciBhIHRhYmxlIGNvbHVtbiAqLwogCUVYUFJfS0lORF9GVU5DVElPTl9ERUZBVUxU LCAvKiBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBmb3IgZnVuY3Rpb24gKi8KIAlFWFBSX0tJTkRf SU5ERVhfRVhQUkVTU0lPTiwgLyogaW5kZXggZXhwcmVzc2lvbiAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvcGFyc2VyL3BhcnNlX3R5cGUuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV90 eXBlLmgKaW5kZXggYTMzNTgwN2IwYjAuLmUzMDNhMTA3M2MxIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9wYXJzZXIvcGFyc2VfdHlwZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV90 eXBlLmgKQEAgLTQ3LDYgKzQ3LDggQEAgZXh0ZXJuIGNoYXIgKnR5cGVUeXBlTmFtZShUeXBlIHQp OwogZXh0ZXJuIE9pZAl0eXBlVHlwZVJlbGlkKFR5cGUgdHlwKTsKIGV4dGVybiBPaWQJdHlwZVR5 cGVDb2xsYXRpb24oVHlwZSB0eXApOwogZXh0ZXJuIERhdHVtIHN0cmluZ1R5cGVEYXR1bShUeXBl IHRwLCBjaGFyICpzdHJpbmcsIGludDMyIGF0dHR5cG1vZCk7CitleHRlcm4gYm9vbCBzdHJpbmdU eXBlRGF0dW1TYWZlKFR5cGUgdHAsIGNoYXIgKnN0cmluZywgaW50MzIgYXR0dHlwbW9kLAorCQkJ CQkJCQlOb2RlICplc2NvbnRleHQsIERhdHVtICpyZXN1bHQpOwogCiBleHRlcm4gT2lkCXR5cGVp ZFR5cGVSZWxpZChPaWQgdHlwZV9pZCk7CiBleHRlcm4gT2lkCXR5cGVPckRvbWFpblR5cGVSZWxp ZChPaWQgdHlwZV9pZCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nh c3Qub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jYXN0Lm91dApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzQ4ZWQ0Y2VkMDMKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nhc3Qub3V0CkBAIC0wLDAgKzEsMTA3MSBAQAor U0VUIGV4dHJhX2Zsb2F0X2RpZ2l0cyA9IDA7CitTRVQgbGNfbW9uZXRhcnkgVE8gIkMiOworLS0g Q0FTVCBERUZBVUxUIE9OIENPTlZFUlNJT04gRVJST1IKK1NFTEVDVCBDQVNUKEInMDEnIEFTIGRh dGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIGRhdGUgCistLS0tLS0KKyAK KygxIHJvdykKKworU0VMRUNUIENBU1QoQklUJzAxJyBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKTsKKyBkYXRlIAorLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBD QVNUKFRSVUUgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgZGF0 ZSAKKy0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgxLjEgQVMgZGF0ZSBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgZGF0ZSAKKy0tLS0tLQorIAorKDEgcm93KQor CitTRUxFQ1QgQ0FTVCgxIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OworIGRhdGUgCistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoMTExMSBBUyAiY2hh ciIgREVGQVVMVCAnQScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgY2hhciAKKy0tLS0tLQorIEEK KygxIHJvdykKKworU0VMRUNUIENBU1QoJ2RlZic6OnRleHQgQVMgaW50ZWdlciBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgaW50NCAKKy0tLS0tLQorICAgICAKKygxIHJvdykK KworU0VMRUNUIENBU1QoJzInOjpqc29uYiBBUyB0ZXh0IERFRkFVTFQgJ2ZhbGxiYWNrJyBPTiBD T05WRVJTSU9OIEVSUk9SKTsKKyB0ZXh0IAorLS0tLS0tCisgMgorKDEgcm93KQorCitTRUxFQ1Qg Q0FTVCgnMScgQ09MTEFURSAiQyIgfHwgJ2gnIEFTIHRleHQgREVGQVVMVCAnZmFsbGJhY2snIE9O IENPTlZFUlNJT04gRVJST1IpOworIHRleHQgCistLS0tLS0KKyAxaAorKDEgcm93KQorCitTRUxF Q1QgQ0FTVChjb25jYXQoJzEnIGNvbGxhdGUgIkMiLCAnaCcpIEFTIGludCBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUik7CisgY29uY2F0IAorLS0tLS0tLS0KKyAgICAgICAKKygxIHJv dykKKworU0VMRUNUIENBU1QoNjU1MzYgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUik7CisgaW50MiAKKy0tLS0tLQorICAgICAKKygxIHJvdykKKworU0VMRUNUIENBU1Qo aW50OCg2NTUzNikgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7Cisg aW50OCAKKy0tLS0tLQorICAgICAKKygxIHJvdykKKworLS0gc291cmNlIGV4cHJlc3Npb24gaXMg YSB1bmtub3duIGNvbnN0CitWQUxVRVMgKENBU1QoJ2Vycm9yJyBBUyBpbnRlZ2VyIEVSUk9SIE9O IENPTlZFUlNJT04gRVJST1IpKTsgLS0gZXJyb3IKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50 YXggZm9yIHR5cGUgaW50ZWdlcjogImVycm9yIgorTElORSAxOiBWQUxVRVMgKENBU1QoJ2Vycm9y JyBBUyBpbnRlZ2VyIEVSUk9SIE9OIENPTlZFUlNJT04gRVJST1IpKTsKKyAgICAgICAgICAgICAg ICAgICAgIF4KK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIGludGVnZXIgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSk7CisgY29sdW1uMSAKKy0tLS0tLS0tLQorICAgICAgICAKKygxIHJvdykKKwor VkFMVUVTIChDQVNUKCdlcnJvcicgQVMgaW50ZWdlciBERUZBVUxUIDQyIE9OIENPTlZFUlNJT04g RVJST1IpKTsKKyBjb2x1bW4xIAorLS0tLS0tLS0tCisgICAgICA0MgorKDEgcm93KQorCitTRUxF Q1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgMTggT04gQ09OVkVSU0lPTiBFUlJPUik7CisgaW50 NCAKKy0tLS0tLQorICAgMTgKKygxIHJvdykKKworU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZB VUxUIHN1bSgxKSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK0VSUk9SOiAgYWdncmVn YXRlIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gQ0FTVCBERUZBVUxUIGV4cHJlc3Npb25z CitMSU5FIDE6IFNFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCBzdW0oMSkgT04gQ09OVkVS U0lPTiBFUlJPUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitT RUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgc3VtKDEpIG92ZXIoKSBPTiBDT05WRVJTSU9O IEVSUk9SKTsgLS0gZXJyb3IKK0VSUk9SOiAgd2luZG93IGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93 ZWQgaW4gQ0FTVCBERUZBVUxUIGV4cHJlc3Npb25zCitMSU5FIDE6IFNFTEVDVCBDQVNUKCdhJyBh cyBpbnQgREVGQVVMVCBzdW0oMSkgb3ZlcigpIE9OIENPTlZFUlNJT04gRS4uLgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIENBU1QoJ2EnIGFzIGludCBE RUZBVUxUIChTRUxFQ1QgTlVMTCkgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitFUlJP UjogIGNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gQ0FTVCBERUZBVUxUIGV4cHJlc3Npb24KK0xJTkUg MTogU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUIChTRUxFQ1QgTlVMTCkgT04gQ09OVkVS U0lPTiBFLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxF Q1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgJ2InIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBl cnJvcgorRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAiYiIK K0xJTkUgMTogU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUICdiJyBPTiBDT05WRVJTSU9O IEVSUk9SKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVD VCBDQVNUKCdhJzo6aW50IGFzIGludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7 IC0tIGVycm9yCitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGludGVnZXI6 ICJhIgorTElORSAxOiBTRUxFQ1QgQ0FTVCgnYSc6OmludCBhcyBpbnQgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IuLi4KKyAgICAgICAgICAgICAgICAgICAgXgorLS0gdGhlIGRlZmF1 bHQgZXhwcmVzc2lvbuKAmXMgY29sbGF0aW9uIHNob3VsZCBtYXRjaCB0YXJnZXQgdHlwZSBjb2xs YXRpb24KK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIHRleHQgREVGQVVMVCAnMScgQ09MTEFURSAi QyIgT04gQ09OVkVSU0lPTiBFUlJPUikpOworRVJST1I6ICBjb2xsYXRpb24gb2YgQ0FTVCBERUZB VUxUIGV4cHJlc3Npb24gY29uZmxpY3RzIHdpdGggdGFyZ2V0IHR5cGUgY29sbGF0aW9uCitMSU5F IDE6IFZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIHRleHQgREVGQVVMVCAnMScgQ09MTEFURSAiQyIg T04gQ09OVi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorREVUQUlMOiAgIkMiIHZlcnN1cyAiZGVmYXVsdCIKK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFT IGludDJ2ZWN0b3IgREVGQVVMVCAnMSAzJyAgT04gQ09OVkVSU0lPTiBFUlJPUikpOworIGNvbHVt bjEgCistLS0tLS0tLS0KKyAxIDMKKygxIHJvdykKKworVkFMVUVTIChDQVNUKCdlcnJvcicgQVMg aW50MnZlY3RvcltdIERFRkFVTFQgJ3sxIDN9JyAgT04gQ09OVkVSU0lPTiBFUlJPUikpOworIGNv bHVtbjEgCistLS0tLS0tLS0KKyB7IjEgMyJ9CisoMSByb3cpCisKKy0tIHNvdXJjZSBleHByZXNz aW9uIGNvbnRhaW4gc3VicXVlcnkKK1NFTEVDVCBDQVNUKChTRUxFQ1QgYiBGUk9NIGdlbmVyYXRl X3NlcmllcygxLCAxKSwgKFZBTFVFUygnSCcpKSBzKGIpKQorICAgICAgICAgICAgQVMgaW50MnZl Y3RvcltdIERFRkFVTFQgJ3sxIDN9JyAgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgYiAgICAK Ky0tLS0tLS0tLQorIHsiMSAzIn0KKygxIHJvdykKKworU0VMRUNUIENBU1QoKFNFTEVDVCBBUlJB WSgoU0VMRUNUIGIgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMikgZywgKFZBTFVFUygnSCcpKSBz KGIpKSkpCisgICAgICAgICAgICBBUyBJTlRbXQorICAgICAgICAgICAgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpOworIGFycmF5IAorLS0tLS0tLQorIAorKDEgcm93KQorCitDUkVB VEUgRlVOQ1RJT04gcmV0X2ludDgoKSBSRVRVUk5TIEJJR0lOVCBBUworJCQKK0JFR0lOIFJFVFVS TiAyMTQ3NDgzNjQ4OyBFTkQ7CiskJAorTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEU7CitTRUxF Q1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgcmV0X2ludDgoKSBPTiBDT05WRVJTSU9OIEVSUk9S KTsgLS0gZXJyb3IKK0VSUk9SOiAgaW50ZWdlciBvdXQgb2YgcmFuZ2UKK1NFTEVDVCBDQVNUKCdh JyBhcyBkYXRlIERFRkFVTFQgcmV0X2ludDgoKSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJy b3IKK0VSUk9SOiAgY2Fubm90IGNvZXJjZSBDQVNUIERFRkFVTFQgZXhwcmVzc2lvbiB0byB0eXBl IGRhdGUKK0xJTkUgMTogU0VMRUNUIENBU1QoJ2EnIGFzIGRhdGUgREVGQVVMVCByZXRfaW50OCgp IE9OIENPTlZFUlNJT04gRVJSLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgorLS0gREVGQVVMVCBleHByZXNzaW9uIGNhbm5vdCBiZSBzZXQtcmV0dXJuaW5nCitD UkVBVEUgRlVOQ1RJT04gcmV0X3NldGludCgpIFJFVFVSTlMgU0VUT0YgaW50ZWdlciBBUworJCQK K0JFR0lOIFJFVFVSTiBRVUVSWSBFWEVDVVRFICdzZWxlY3QgMSB1bmlvbiBhbGwgc2VsZWN0IDEn OyBFTkQ7CiskJAorTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEU7CitDUkVBVEUgVEFCTEUgdGNh c3QwKGEgSU5ULCBiIGludCk7CitJTlNFUlQgSU5UTyB0Y2FzdDAgVkFMVUVTKDEsMiksICg2NTUz NiwzKTsKK1NFVCBqaXRfYWJvdmVfY29zdCA9IDA7CitTRUxFQ1QgQ0FTVChhIEFTIGludDIgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QwOworIGEgCistLS0KKyAx CisgIAorKDIgcm93cykKKworU0VUIGppdF9hYm92ZV9jb3N0IFRPIERFRkFVTFQ7CitTRUxFQ1Qg Q0FTVChhIEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNh c3QwOworIGEgCistLS0KKyAxCisgIAorKDIgcm93cykKKworU0VMRUNUIENBU1QoUk9XKDEsMikg QVMgdGNhc3QwIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MCBh cyB0OworRVJST1I6ICBjYW5ub3QgY2FzdCB0eXBlIHJlY29yZCB0byB0Y2FzdDAgd2hlbiBERUZB VUxUIGV4cHJlc3Npb24gaXMgc3BlY2lmaWVkIGluIENBU1QgLi4uIE9OIENPTlZFUlNJT04gRVJS T1IKK0xJTkUgMTogU0VMRUNUIENBU1QoUk9XKDEsMikgQVMgdGNhc3QwIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSLi4uCisgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBFeHBsaWNp dCBjYXN0IGlzIGRlZmluZWQgYnV0IGRlZmluaXRpb24gaXMgbm90IGVycm9yIHNhZmUuCitEUk9Q IFRBQkxFIHRjYXN0MDsKK1NFTEVDVCBDQVNUKDEyLjExMSBhcyBudW1lcmljKDEwLDEpIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljX3NjYWxlOworIHRvX251 bWVyaWNfc2NhbGUgCistLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAxMi4xCisoMSBy b3cpCisKK0NSRUFURSBUQUJMRSB0Y2FzdChhIHRleHRbXSwgYiBpbnQgR0VORVJBVEVEIEJZIERF RkFVTFQgQVMgSURFTlRJVFkpOworSU5TRVJUIElOVE8gdGNhc3QgVkFMVUVTICgnezEyfScpLCAo J3sxLGEsIGJ9JyksICgne3sxLDJ9LCB7YyxkfX0nKSwgKCd7MTN9Jyk7CitTRUxFQ1QgQ0FTVCgn YScgYXMgaW50IERFRkFVTFQgcmV0X3NldGludCgpIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00g dGNhc3Q7IC0tIGVycm9yCitFUlJPUjogIHNldC1yZXR1cm5pbmcgZnVuY3Rpb25zIGFyZSBub3Qg YWxsb3dlZCBpbiBDQVNUIERFRkFVTFQgZXhwcmVzc2lvbnMKK0xJTkUgMTogU0VMRUNUIENBU1Qo J2EnIGFzIGludCBERUZBVUxUIHJldF9zZXRpbnQoKSBPTiBDT05WRVJTSU9OIEVSLi4uCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgQ0FTVCh0IEFTIHRl eHRbXSBERUZBVUxUICd7MjEsMjIsICcgfHwgYiB8fCAnfScgT04gQ09OVkVSU0lPTiBFUlJPUikg RlJPTSB0Y2FzdCBhcyB0OworICAgICB0ICAgICAKKy0tLS0tLS0tLS0tCisgezIxLDIyLDF9Cisg ezIxLDIyLDJ9CisgezIxLDIyLDN9CisgezIxLDIyLDR9CisoNCByb3dzKQorCitTRUxFQ1QgQ0FT VCh0LmEgQVMgaW50W10gREVGQVVMVCAnezIxLDIyfSc6OmludFtdIHx8IGIgT04gQ09OVkVSU0lP TiBFUlJPUikgRlJPTSB0Y2FzdCBhcyB0OworICAgICBhICAgICAKKy0tLS0tLS0tLS0tCisgezEy fQorIHsyMSwyMiwyfQorIHsyMSwyMiwzfQorIHsxM30KKyg0IHJvd3MpCisKKy0tIFRlc3QgbmVz dGVkIHR5cGUgY2FzdHM7IGFsbCBleHByZXNzaW9ucyB3aWxsIGJlIGV2YWx1YXRlZCBpbiBhbiBl cnJvci1zYWZlIG1hbm5lcgorQ1JFQVRFIERPTUFJTiBkX25vdGEgQVMgdGV4dCBDSEVDSyAoVkFM VUUgPD4gJ2EnKTsKK0NSRUFURSBUQUJMRSB0Y2FzdDEoYSB0ZXh0LCBiIHRleHRbXSwgYyBpbnQs IGQgaW50OCwgZSBpbnQ4W10pOworSU5TRVJUIElOVE8gdGNhc3QxKGEsIGIsIGQsIGUpIHZhbHVl cygnYScsICd7YX0nLCAyMTQ3NDgzNjQ4LCAnezIxNDc0ODM2NDh9Jyk7CitTRUxFQ1QgQ0FTVCAo Q0FTVChhIEFTIGludCkgQVMgdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg RlJPTSB0Y2FzdDE7CisgYSAKKy0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCAoQ0FTVCgn YScgQVMgaW50KSBBUyB0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9N IHRjYXN0MTsgIC0tIGVycm9yCitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBl IGludGVnZXI6ICJhIgorTElORSAxOiBTRUxFQ1QgQ0FTVCAoQ0FTVCgnYScgQVMgaW50KSBBUyB0 ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg XgorU0VMRUNUIENBU1QgKENBU1QoJ2EnOjp0ZXh0IEFTIGludCkgQVMgdGV4dCBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7IC0tIG9rCisgdGV4dCAKKy0tLS0t LQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCAoQ0FTVChhIEFTIGRfbm90YSkgQVMgdGV4dCBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CisgYSAKKy0tLQor IAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCAoQ0FTVCgnYScgQVMgZF9ub3RhKSBBUyB0ZXh0IERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKKyB0ZXh0IAorLS0t LS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUIChDQVNUKGQgQVMgaW50KSBBUyB0ZXh0IERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKKyBkIAorLS0tCisg CisoMSByb3cpCisKK1NFTEVDVCBDQVNUIChDQVNUKCcyMTQ3NDgzNjQ4Jzo6aW50OCBBUyBpbnQp IEFTIHRleHQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOwor IHRleHQgCistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QgKENBU1QoJ3thfSc6OnRl eHRbXSBBUyBpbnRbXSkgQVMgdGV4dFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBGUk9NIHRjYXN0MTsKKyB0ZXh0IAorLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNU IChDQVNUKGIgQVMgaW50W10pIEFTIHRleHRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgRlJPTSB0Y2FzdDE7CisgYiAKKy0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCAo Q0FTVChiIEFTIGRfbm90YVtdKSBBUyB0ZXh0W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIEZST00gdGNhc3QxOworIGIgCistLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1Qg KENBU1QoZSBBUyBpbnRbXSkgQVMgdGV4dFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBGUk9NIHRjYXN0MTsKKyBlIAorLS0tCisgCisoMSByb3cpCisKKy0tIHRlc3QgZXZhbF9j b25zdF9leHByZXNzaW9uc19tdXRhdG9yIGhhbmRsZSBuZXN0ZWQgQXJyYXlDb2VyY2VFeHByCitT RUxFQ1QgQ0FTVCgne2F9Jzo6dGV4dFtdIEFTIGludFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKKyBpbnQ0IAorLS0tLS0tCisgCisoMSByb3cpCisKK1NF TEVDVCBDQVNUKENBU1QoJ3thfSc6OnRleHRbXSBBUyBkYXRlW10pIEFTIGludFtdIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKKyBpbnQ0IAorLS0tLS0tCisg CisoMSByb3cpCisKKy0tIHRlc3Qgd2l0aCB1c2VyLWRlZmluZWQgdHlwZSwgZG9tYWluLCBhcnJh eSBvdmVyIGRvbWFpbiwgZG9tYWluIG92ZXIgYXJyYXkKK0NSRUFURSBET01BSU4gZF9pbnQ0MiBh cyBpbnQgY2hlY2sgKHZhbHVlID0gNDIpIE5PVCBOVUxMOworQ1JFQVRFIERPTUFJTiBkX2ludDQy YXJyIGFzIGRfaW50NDJbXTsKK0NSRUFURSBET01BSU4gZF9pbnQ0MmFycjEgYXMgZF9pbnQ0MmFy cjsKK0NSRUFURSBET01BSU4gZF9pbnQ4IGFzIGludDggY2hlY2sgKHZhbHVlID4gMCk7CitDUkVB VEUgRE9NQUlOIGRfaW50OGFyciBhcyBkX2ludDhbXTsKK0NSRUFURSBET01BSU4gZF9jaGFyM19u b3RfbnVsbCBhcyBjaGFyKDMpIE5PVCBOVUxMOworQ1JFQVRFIERPTUFJTiBkX3ZhcmNoYXIgYXMg dmFyY2hhcigzKSBOT1QgTlVMTDsKK0NSRUFURSBET01BSU4gZF9pbnRfYXJyIGFzIGludFtdIGNo ZWNrICh2YWx1ZSA9ICd7NDEsIDQzfScpIE5PVCBOVUxMOworQ1JFQVRFIFRZUEUgY29tcF9kb21h aW5fd2l0aF90eXBtb2QgQVMgKGEgZF9jaGFyM19ub3RfbnVsbCwgYiBpbnQpOworQ1JFQVRFIFRZ UEUgY29tcDIgQVMgKGEgZF92YXJjaGFyKTsKK0NSRUFURSBET01BSU4gZF9udW1lcmljIGFzIG51 bWVyaWMoNCw0KTsKK1NFTEVDVCBDQVNUKDEuMDo6ZmxvYXQ0IEFTIGRfbnVtZXJpYyBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgZF9udW1lcmljIAorLS0tLS0tLS0tLS0KKyAg ICAgICAgICAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJ3sxLjB9JyBBUyBudW1lcmljKDQsMSlb XSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgbnVtZXJpYyAKKy0tLS0tLS0t LQorIHsxLjB9CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCd7MC4xLCAxLjB9JyBBUyBkX251bWVy aWNbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgZF9udW1lcmljIAorLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoMTEgQVMgZF9pbnQ0MiBERUZBVUxU IDQxIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorRVJST1I6ICB2YWx1ZSBmb3IgZG9t YWluIGRfaW50NDIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAiZF9pbnQ0Ml9jaGVjayIKK1NF TEVDVCBDQVNUKE5VTEwgQVMgZF9pbnQ0MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP Uik7IC0tIGVycm9yCitFUlJPUjogIGRvbWFpbiBkX2ludDQyIGRvZXMgbm90IGFsbG93IG51bGwg dmFsdWVzCitTRUxFQ1QgQ0FTVCgxMSBBUyBkX2ludDQyIERFRkFVTFQgNDIgT04gQ09OVkVSU0lP TiBFUlJPUik7CisgZF9pbnQ0MiAKKy0tLS0tLS0tLQorICAgICAgNDIKKygxIHJvdykKKworU0VM RUNUIENBU1QoTlVMTCBBUyBkX2ludDQyIERFRkFVTFQgNDIgT04gQ09OVkVSU0lPTiBFUlJPUik7 CisgZF9pbnQ0MiAKKy0tLS0tLS0tLQorICAgICAgNDIKKygxIHJvdykKKworU0VMRUNUIENBU1Qo QVJSQVlbNDJdOjpkX2ludDQyYXJyMSBBUyBkX2ludDggREVGQVVMVCAnMScgT04gQ09OVkVSU0lP TiBFUlJPUik7CisgYXJyYXkgCistLS0tLS0tCisgICAgIDEKKygxIHJvdykKKworU0VMRUNUIENB U1QoQVJSQVlbNDJdOjpkX2ludDQyYXJyMSBBUyBkX2ludDhbXSBERUZBVUxUICd7MX0nIE9OIENP TlZFUlNJT04gRVJST1IpOworIGFycmF5IAorLS0tLS0tLQorIHs0Mn0KKygxIHJvdykKKworU0VM RUNUIENBU1QoQVJSQVlbNDJdOjpkX2ludDQyYXJyMSBBUyBkX2ludDhhcnIgREVGQVVMVCAnezF9 JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBhcnJheSAKKy0tLS0tLS0KKyB7NDJ9CisoMSByb3cp CisKK1NFTEVDVCBDQVNUKEFSUkFZWzQyXTo6ZF9pbnQ0MmFycjEgQVMgZF9pbnQ4YXJyW10gREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIGFycmF5IAorLS0tLS0tLQorIAorKDEg cm93KQorCitTRUxFQ1QgQ0FTVChBUlJBWVs0Miw0MV0gQVMgZF9pbnQ0MltdIERFRkFVTFQgJ3s0 MiwgNDJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgYXJyYXkgIAorLS0tLS0tLS0tCisgezQy LDQyfQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVChBUlJBWVs0Miw0MV0gQVMgZF9pbnRfYXJyIERF RkFVTFQgJ3s0MSwgNDN9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgYXJyYXkgIAorLS0tLS0t LS0tCisgezQxLDQzfQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVChBUlJBWVs0MiwgNDFdOjpkX2lu dDQyYXJyMSBBUyBkX2ludDhhcnIgREVGQVVMVCAnezEsMiwzfScgT04gQ09OVkVSU0lPTiBFUlJP Uik7CisgIGFycmF5ICAKKy0tLS0tLS0tLQorIHsxLDIsM30KKygxIHJvdykKKworU0VMRUNUIENB U1QoQVJSQVlbNDIsIDQxXSBBUyBkX2ludDQyYXJyMSBERUZBVUxUICd7NDIsIDQyfScgT04gQ09O VkVSU0lPTiBFUlJPUik7CisgIGFycmF5ICAKKy0tLS0tLS0tLQorIHs0Miw0Mn0KKygxIHJvdykK KworU0VMRUNUCisgICAgQ0FTVChDQVNUKEFSUkFZW0NBU1QoQVJSQVlbNDIsIDQyXSBBUyBkX2lu dDQyYXJyKV0gQVMgZF9pbnQ0MmFycjFbXSkgQVMgZF9pbnQ4YXJyW10gREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpOworICAgIGFycmF5ICAgIAorLS0tLS0tLS0tLS0tLQorIHsiezQy LDQyfSJ9CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcoTlVMTCknIEFTIGNvbXAyIERFRkFVTFQg JygxMjMyKScgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitFUlJPUjogIHZhbHVlIHRv byBsb25nIGZvciB0eXBlIGNoYXJhY3RlciB2YXJ5aW5nKDMpCitMSU5FIDE6IFNFTEVDVCBDQVNU KCcoTlVMTCknIEFTIGNvbXAyIERFRkFVTFQgJygxMjMyKScgT04gQ09OVkVSU0lPTi4uLgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBDQVNU KCcoTlVMTCknIEFTIGNvbXAyIERFRkFVTFQgJygxMjMpJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsK KyBjb21wMiAKKy0tLS0tLS0KKyAoMTIzKQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnKCw0Mikn IEFTIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKTsKKyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJyhOVUxMLDQyKScgQVMgY29tcF9kb21haW5f d2l0aF90eXBtb2QgREVGQVVMVCAnKDEsMiknIE9OIENPTlZFUlNJT04gRVJST1IpOworIGNvbXBf ZG9tYWluX3dpdGhfdHlwbW9kIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICgiMSAgIiwy KQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnKE5VTEwsNDIpJyBBUyBjb21wX2RvbWFpbl93aXRo X3R5cG1vZCBERUZBVUxUICcoMTIzNCwyKScgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9y CitFUlJPUjogIHZhbHVlIHRvbyBsb25nIGZvciB0eXBlIGNoYXJhY3RlcigzKQorTElORSAxOiAu Li5TVCgnKE5VTEwsNDIpJyBBUyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCBERUZBVUxUICcoMTIz NCwyKScuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeCitTRUxFQ1QgQ0FTVChST1coTlVMTCw0MikgQVMgY29tcF9kb21haW5f d2l0aF90eXBtb2QgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgor RVJST1I6ICBjYW5ub3QgY2FzdCB0eXBlIHJlY29yZCB0byBjb21wX2RvbWFpbl93aXRoX3R5cG1v ZCB3aGVuIERFRkFVTFQgZXhwcmVzc2lvbiBpcyBzcGVjaWZpZWQgaW4gQ0FTVCAuLi4gT04gQ09O VkVSU0lPTiBFUlJPUgorTElORSAxOiBTRUxFQ1QgQ0FTVChST1coTlVMTCw0MikgQVMgY29tcF9k b21haW5fd2l0aF90eXBtb2QgREVGQVVMVCAuLi4KKyAgICAgICAgICAgICAgICAgICAgXgorSElO VDogIEV4cGxpY2l0IGNhc3QgaXMgZGVmaW5lZCBidXQgZGVmaW5pdGlvbiBpcyBub3QgZXJyb3Ig c2FmZS4KKy0tIHRlc3QgYXJyYXkgY29lcmNlCitTRUxFQ1QgQ0FTVChhcnJheVsnYSc6OnRleHRd IEFTIGludFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBhcnJheSAKKy0t LS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoYXJyYXlbJ2EnXSBBUyBpbnRbXSBERUZB VUxUIEFSUkFZWzFdIE9OIENPTlZFUlNJT04gRVJST1IpOworIGFycmF5IAorLS0tLS0tLQorIHsx fQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVChhcnJheVsxMS4xMl0gQVMgZGF0ZVtdIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBhcnJheSAKKy0tLS0tLS0KKyAKKygxIHJvdykK KworU0VMRUNUIENBU1QoYXJyYXlbMTExMTExMTExMTExMTExMTFdIEFTIGludFtdIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBhcnJheSAKKy0tLS0tLS0KKyAKKygxIHJvdykK KworU0VMRUNUIENBU1QoYXJyYXlbWydhYmMnXSxbNDU2XV0gQVMgaW50W10gREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpOworIGFycmF5IAorLS0tLS0tLQorIAorKDEgcm93KQorCitT RUxFQ1QgQ0FTVCgnezEyMyxhYmMsNDU2fScgQVMgaW50W10gREVGQVVMVCAney03ODl9JyBPTiBD T05WRVJTSU9OIEVSUk9SKTsKKyAgaW50NCAgCistLS0tLS0tLQorIHstNzg5fQorKDEgcm93KQor CitTRUxFQ1QgQ0FTVCgnezIzNCxkZWYsNTY3fSc6OnRleHRbXSBBUyBpbnRlZ2VyW10gREVGQVVM VCAney0xMDExfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgIGludDQgICAKKy0tLS0tLS0tLQor IHstMTAxMX0KKygxIHJvdykKKworU0VMRUNUIENBU1QoQVJSQVlbWycxJ10sIFsndGhyZWUnXSxb J2EnXV0gQVMgaW50W10gREVGQVVMVCAnezEsMn0nIE9OIENPTlZFUlNJT04gRVJST1IpOworIGFy cmF5IAorLS0tLS0tLQorIHsxLDJ9CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKEFSUkFZW1snMScs ICcyJ10sIFsndGhyZWUnLCAnYSddXSBBUyBpbnRbXSBERUZBVUxUICd7MjEsMjJ9JyBPTiBDT05W RVJTSU9OIEVSUk9SKTsKKyAgYXJyYXkgIAorLS0tLS0tLS0tCisgezIxLDIyfQorKDEgcm93KQor CistLSBlcnJvcjogYHRocmVlJzo6aW50YCB3aWxsIGZhaWwgZWFybGllcgorU0VMRUNUIENBU1Qo QVJSQVlbWycxJywgJzInXSwgWyd0aHJlZSc6OmludCwgJ2EnXV0gQVMgaW50W10gREVGQVVMVCAn ezIxLDIyfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3lu dGF4IGZvciB0eXBlIGludGVnZXI6ICJ0aHJlZSIKK0xJTkUgMTogU0VMRUNUIENBU1QoQVJSQVlb WycxJywgJzInXSwgWyd0aHJlZSc6OmludCwgJ2EnXV0gQVMgaW50W10gLi4uCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgQ0FTVChBUlJBWVsxLCAndGhy ZWUnOjppbnRdIEFTIGludFtdIERFRkFVTFQgJ3syMSwyMn0nIE9OIENPTlZFUlNJT04gRVJST1Ip OworRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAidGhyZWUi CitMSU5FIDE6IFNFTEVDVCBDQVNUKEFSUkFZWzEsICd0aHJlZSc6OmludF0gQVMgaW50W10gREVG QVVMVCAnezIxLDIyfS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBzYWZl IGNhc3Qgd2l0aCBnZW9tZXRyeSBkYXRhIHR5cGUKK1NFTEVDVCBDQVNUKCcoMSwyKSc6OnBvaW50 IEFTIGJveCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgIGJveCAgICAg CistLS0tLS0tLS0tLS0tCisgKDEsMiksKDEsMikKKygxIHJvdykKKworU0VMRUNUIENBU1QoJ1so TmFOLDEpLChOYU4saW5maW5pdHkpXSc6OmxzZWcgQVMgcG9pbnQgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpOworICAgICBwb2ludCAgICAgIAorLS0tLS0tLS0tLS0tLS0tLQorIChO YU4sSW5maW5pdHkpCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCdbKDFlKzMwMCxJbmZpbml0eSks KDFlKzMwMCxJbmZpbml0eSldJzo6bHNlZyBBUyBwb2ludCBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CisgICAgICAgcG9pbnQgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisg KDFlKzMwMCxJbmZpbml0eSkKKygxIHJvdykKKworU0VMRUNUIENBU1QoJ1soMSwyKSwoMyw0KV0n OjpwYXRoIGFzIHBvbHlnb24gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIHBv bHlnb24gCistLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJyhOYU4sMS4wLE5h TixpbmZpbml0eSknOjpib3ggQVMgcG9pbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOworICAgICBwb2ludCAgICAgIAorLS0tLS0tLS0tLS0tLS0tLQorIChOYU4sSW5maW5pdHkp CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcoMi4wLDIuMCwwLjAsMC4wKSc6OmJveCBBUyBsc2Vn IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgbHNlZyAgICAgIAorLS0t LS0tLS0tLS0tLS0tCisgWygyLDIpLCgwLDApXQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnKDIu MCwyLjAsMC4wLDAuMCknOjpib3ggQVMgcG9seWdvbiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUik7CisgICAgICAgICAgcG9seWdvbiAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICgoMCwwKSwoMCwyKSwoMiwyKSwoMiwwKSkKKygxIHJvdykKKworU0VMRUNU IENBU1QoJygyLjAsMi4wLDAuMCwwLjApJzo6Ym94IEFTIHBhdGggREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpOworIHBhdGggCistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENB U1QoJygyLjAsaW5maW5pdHksTmFOLGluZmluaXR5KSc6OmJveCBBUyBjaXJjbGUgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICAgICBjaXJjbGUgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIDwoTmFOLEluZmluaXR5KSxOYU4+CisoMSByb3cpCisKK1NFTEVD VCBDQVNUKCcoTmFOLDAuMCksKDIuMCw0LjApLCgwLjAsaW5maW5pdHkpJzo6cG9seWdvbiBBUyBw b2ludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgIHBvaW50ICAgICAg CistLS0tLS0tLS0tLS0tLS0tCisgKE5hTixJbmZpbml0eSkKKygxIHJvdykKKworU0VMRUNUIENB U1QoJygyLjAsMC4wKSwoMi4wLDQuMCksKDAuMCwwLjApJzo6cG9seWdvbiBBUyBwYXRoIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgICAgcGF0aCAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKCgyLDApLCgyLDQpLCgwLDApKQorKDEgcm93KQorCitTRUxF Q1QgQ0FTVCgnKDIuMCwwLjApLCgyLjAsNC4wKSwoMC4wLDAuMCknOjpwb2x5Z29uIEFTIGJveCBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgIGJveCAgICAgCistLS0tLS0t LS0tLS0tCisgKDIsNCksKDAsMCkKKygxIHJvdykKKworU0VMRUNUIENBU1QoJyhOYU4saW5maW5p dHkpLCgyLjAsNC4wKSwoMC4wLGluZmluaXR5KSc6OnBvbHlnb24gQVMgY2lyY2xlIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgICAgY2lyY2xlICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyA8KE5hTixJbmZpbml0eSksTmFOPgorKDEgcm93KQorCitTRUxF Q1QgQ0FTVCgnPCg1LDEpLDM+Jzo6Y2lyY2xlIEFTIHBvaW50IERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKTsKKyBwb2ludCAKKy0tLS0tLS0KKyAoNSwxKQorKDEgcm93KQorCitTRUxF Q1QgQ0FTVCgnPCgzLDUpLDA+Jzo6Y2lyY2xlIGFzIGJveCBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CisgICAgIGJveCAgICAgCistLS0tLS0tLS0tLS0tCisgKDMsNSksKDMsNSkK KygxIHJvdykKKworLS0gY2FzdCBmcm9tIHR5cGUgY2lyY2xlIHRvIHR5cGUgcG9seWdvbiBpcyBp bXBsZW1lbnRlZCBhcyBhbiBTUUwgZnVuY3Rpb24sIHdoaWNoIGNhbm5vdCBiZSBlcnJvci1zYWZl CitTRUxFQ1QgQ0FTVCgnPCgzLDUpLDA+Jzo6Y2lyY2xlIGFzIHBvbHlnb24gREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpOworIHBvbHlnb24gCistLS0tLS0tLS0KKyAKKygxIHJvdykK KworLS0gU2FmZSB0eXBlIGNhc3Qgc3VwcG9ydHMgbW9uZXkgYXMgYSB0YXJnZXQgdHlwZSwgYnV0 IG5vdCBhcyBhIHNvdXJjZSB0eXBlLgorU0VMRUNUIENBU1QoJzEyMzQ1Njc4OTAxMjM0NTY3OCc6 Om51bWVyaWMgQVMgTU9ORVkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIG1v bmV5IAorLS0tLS0tLQorICAgICAgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcxMjM0NTY3ODkw MTIzNDU2NzgnOjppbnQ4IEFTIE1PTkVZIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KTsKKyBtb25leSAKKy0tLS0tLS0KKyAgICAgIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnMjE0 NzQ4MzY0Nyc6OmludDQgQVMgTU9ORVkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OworICAgICAgIG1vbmV5ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorICQyLDE0Nyw0ODMs NjQ3LjAwCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCctMjE0NzQ4MzY0OCc6OmludDQgQVMgTU9O RVkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICAgIG1vbmV5ICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgLSQyLDE0Nyw0ODMsNjQ4LjAwCisoMSByb3cpCisK K1NFTEVDVCBDQVNUKCctMCc6OmludDQgQVMgTU9ORVkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpOworIG1vbmV5IAorLS0tLS0tLQorICQwLjAwCisoMSByb3cpCisKK1NFTEVDVCBD QVNUKE5VTEw6Om1vbmV5IEFTIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOworRVJST1I6ICBjYW5ub3QgY2FzdCB0eXBlIG1vbmV5IHRvIG51bWVyaWMgd2hlbiBERUZB VUxUIGV4cHJlc3Npb24gaXMgc3BlY2lmaWVkIGluIENBU1QgLi4uIE9OIENPTlZFUlNJT04gRVJS T1IKK0xJTkUgMTogU0VMRUNUIENBU1QoTlVMTDo6bW9uZXkgQVMgbnVtZXJpYyBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPLi4uCisgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBFeHBsaWNp dCBjYXN0IGlzIGRlZmluZWQgYnV0IGRlZmluaXRpb24gaXMgbm90IGVycm9yIHNhZmUuCitTRUxF Q1QgQ0FTVChOVUxMOjptb25leVtdIEFTIG51bWVyaWNbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CitFUlJPUjogIGNhbm5vdCBjYXN0IHR5cGUgbW9uZXlbXSB0byBudW1lcmlj W10gd2hlbiBERUZBVUxUIGV4cHJlc3Npb24gaXMgc3BlY2lmaWVkIGluIENBU1QgLi4uIE9OIENP TlZFUlNJT04gRVJST1IKK0xJTkUgMTogU0VMRUNUIENBU1QoTlVMTDo6bW9uZXlbXSBBUyBudW1l cmljW10gREVGQVVMVCBOVUxMIE9OIENPTlZFLi4uCisgICAgICAgICAgICAgICAgICAgIF4KK0hJ TlQ6ICBFeHBsaWNpdCBjYXN0IGlzIGRlZmluZWQgYnV0IGRlZmluaXRpb24gaXMgbm90IGVycm9y IHNhZmUuCistLSBzYWZlIGNhc3QgZnJvbSBieXRlYSB0eXBlIHRvIG90aGVyIGRhdGEgdHlwZXMK K1NFTEVDVCBDQVNUICgnXHgxMTIyMzM0NDU1NjY3Nzg4OTknOjpieXRlYSBBUyBpbnQ4IERFRkFV TFQgMTkgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgaW50OCAKKy0tLS0tLQorICAgMTkKKygxIHJv dykKKworU0VMRUNUIENBU1QoJ1x4MTIzNDU2Nzg5QSc6OmJ5dGVhIEFTIGludDQgREVGQVVMVCAy MCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBpbnQ0IAorLS0tLS0tCisgICAyMAorKDEgcm93KQor CitTRUxFQ1QgQ0FTVCgnXHgxMjM0NTYnOjpieXRlYSBBUyBpbnQyIERFRkFVTFQgMjEgT04gQ09O VkVSU0lPTiBFUlJPUik7CisgaW50MiAKKy0tLS0tLQorICAgMjEKKygxIHJvdykKKworU0VMRUNU IENBU1QoJ1x4MTIzNDU2Nzg5MGFiY2RlZic6OmJ5dGVhIEFTIHV1aWQgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpOworIHV1aWQgCistLS0tLS0KKyAKKygxIHJvdykKKworLS0gc2Fm ZSBjYXN0IGZyb20gdXVpZCB0eXBlIHRvIG90aGVyIGRhdGEgdHlwZXMKK1NFTEVDVCBDQVNUKCc1 YjM1MzgwYS03MTQzLTQ5MTItOWI1NS1mMzIyNjk5YzY3NzAnOjp1dWlkIEFTIGJ5dGVhIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgICAgICAgICAgIGJ5dGVhICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgXHg1YjM1 MzgwYTcxNDM0OTEyOWI1NWYzMjI2OTljNjc3MAorKDEgcm93KQorCistLSBzYWZlIGNhc3QgZnJv bSBiaXQgdHlwZSB0byBvdGhlciBkYXRhIHR5cGVzCitTRUxFQ1QgQ0FTVCgnMTExMTExMTExMTAw MDAxJzo6Yml0KDEwMCkgQVMgSU5UIERFRkFVTFQgMjIgT04gQ09OVkVSU0lPTiBFUlJPUik7Cisg aW50NCAKKy0tLS0tLQorICAgMjIKKygxIHJvdykKKworU0VMRUNUIENBU1QgKCcxMTExMTExMTEx MDAwMDEnOjpiaXQoMTAwKSBBUyBJTlQ4IERFRkFVTFQgMjMgT04gQ09OVkVSU0lPTiBFUlJPUik7 CisgaW50OCAKKy0tLS0tLQorICAgMjMKKygxIHJvdykKKworLS0gc2FmZSBjYXN0IGZyb20gdGV4 dCB0eXBlIHRvIG90aGVyIGRhdGEgdHlwZXMKK3NlbGVjdCBDQVNUKCdhLmIuYy5kJzo6dGV4dCBh cyByZWdjbGFzcyBkZWZhdWx0IE5VTEwgb24gY29udmVyc2lvbiBlcnJvcik7CisgcmVnY2xhc3Mg CistLS0tLS0tLS0tCisgCisoMSByb3cpCisKK0NSRUFURSBUQUJMRSB0ZXN0X3NhZmVjYXN0KGNv bDAgdGV4dCk7CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0KGNvbDApIFZBTFVFUyAoJzx2YWx1 ZT5vbmU8L3ZhbHVlJyk7CitTRUxFQ1QgY29sMCBhcyB0ZXh0LAorICAgICAgIENBU1QoY29sMCBB UyByZWdjbGFzcyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fcmVnY2xh c3MsCisgICAgICAgQ0FTVChjb2wwIEFTIHJlZ2NsYXNzIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBJUyBOVUxMIGFzIGV4cGVjdF90cnVlLAorICAgICAgIENBU1QoY29sMCBBUyAi Y2hhciIgIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19jaGFyLAorICAg ICAgIENBU1QoY29sMCBBUyBuYW1lIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19uYW1lCitGUk9NIHRlc3Rfc2FmZWNhc3Q7CisgICAgICAgdGV4dCAgICAgICAgfCB0b19y ZWdjbGFzcyB8IGV4cGVjdF90cnVlIHwgdG9fY2hhciB8ICAgICAgdG9fbmFtZSAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0KKyA8dmFsdWU+b25lPC92YWx1ZSB8ICAgICAgICAgICAgIHwgdCAg ICAgICAgICAgfCA8ICAgICAgIHwgPHZhbHVlPm9uZTwvdmFsdWUKKygxIHJvdykKKworU0VMRUNU IENBU1QoJzE5Mi4xNjguMS54JyBhcyBpbmV0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKTsKKyBpbmV0IAorLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcxOTIuMTY4 LjEuMi8zMCcgYXMgY2lkciBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgY2lk ciAKKy0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnMjI6MDA6NWM6MDg6NTU6MDg6 MDE6MDInOjptYWNhZGRyOCBhcyBtYWNhZGRyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKTsKKyBtYWNhZGRyIAorLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIHNhZmUgY2FzdCBi ZXR3ZWVlbiByYW5nZSBkYXRhIHR5cGVzCitTRUxFQ1QgQ0FTVCgnWzEsMl0nOjppbnQ0cmFuZ2Ug QVMgaW50NG11bHRpcmFuZ2UgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIGlu dDRtdWx0aXJhbmdlIAorLS0tLS0tLS0tLS0tLS0tLQorIHtbMSwzKX0KKygxIHJvdykKKworU0VM RUNUIENBU1QoJ1sxLDJdJzo6aW50OHJhbmdlIEFTIGludDhtdWx0aXJhbmdlIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBpbnQ4bXVsdGlyYW5nZSAKKy0tLS0tLS0tLS0tLS0t LS0KKyB7WzEsMyl9CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCdbMSwyXSc6Om51bXJhbmdlICBB UyBudW1tdWx0aXJhbmdlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBudW1t dWx0aXJhbmdlIAorLS0tLS0tLS0tLS0tLS0tCisge1sxLDJdfQorKDEgcm93KQorCitTRUxFQ1Qg Q0FTVCgnWy1pbmZpbml0eSxpbmZpbml0eV0nOjpkYXRlcmFuZ2UgQVMgZGF0ZW11bHRpcmFuZ2Ug REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICBkYXRlbXVsdGlyYW5nZSAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7Wy1pbmZpbml0eSxpbmZpbml0eV19Ciso MSByb3cpCisKK1NFTEVDVCBDQVNUKCdbLWluZmluaXR5LGluZmluaXR5XSc6OnRzcmFuZ2UgQVMg dHNtdWx0aXJhbmdlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgIHRz bXVsdGlyYW5nZSAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisge1staW5maW5pdHks aW5maW5pdHldfQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnWy1pbmZpbml0eSxpbmZpbml0eV0n Ojp0c3R6cmFuZ2UgQVMgdHN0em11bHRpcmFuZ2UgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpOworICAgICB0c3R6bXVsdGlyYW5nZSAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyB7Wy1pbmZpbml0eSxpbmZpbml0eV19CisoMSByb3cpCisKKy0tIHNhZmUgY2FzdCBiZXR3 ZWVlbiBudW1lcmljIGRhdGEgdHlwZXMKK0NSRUFURSBUQUJMRSB0ZXN0X3NhZmVjYXN0MSgKKyAg Y29sMSBmbG9hdDQsIGNvbDIgZmxvYXQ4LCBjb2wzIG51bWVyaWMsIGNvbDQgbnVtZXJpY1tdLAor ICBjb2w1IGludDIgZGVmYXVsdCAzMjc2NywKKyAgY29sNiBpbnQ0IGRlZmF1bHQgMzI3NjgsCisg IGNvbDcgaW50OCBkZWZhdWx0IDQyOTQ5NjcyOTYpOworSU5TRVJUIElOVE8gdGVzdF9zYWZlY2Fz dDEgVkFMVUVTKCcxMS4xMjM0JywgJzExLjEyMzQnLCAnOTIyMzM3MjAzNjg1NDc3NTgwOCcsICd7 MTEuMTIzNH0nOjpudW1lcmljW10pOworSU5TRVJUIElOVE8gdGVzdF9zYWZlY2FzdDEgVkFMVUVT KCdpbmYnLCAnaW5mJywgJ2luZicsICd7MTEuMTIzNCwgMTIsIGluZiwgTmFOfSc6Om51bWVyaWNb XSk7CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0MSBWQUxVRVMoJy1pbmYnLCAnLWluZicsICct aW5mJywgJ3sxMS4xMjM0LCAxMiwgLWluZiwgTmFOfSc6Om51bWVyaWNbXSk7CitJTlNFUlQgSU5U TyB0ZXN0X3NhZmVjYXN0MSBWQUxVRVMoJ05hTicsICdOYU4nLCAnTmFOJywgJ3sxMS4xMjM0LCAx MiwgLWluZiwgTmFOfSc6Om51bWVyaWNbXSk7CitTRUxFQ1QgY29sNSBhcyBpbnQyLAorICAgICAg IENBU1QoY29sNSBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b19pbnQyLAorICAgICAgIENBU1QoY29sNSBBUyBpbnQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyB0b19pbnQ0LAorICAgICAgIENBU1QoY29sNSBBUyBvaWQgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX29pZCwKKyAgICAgICBDQVNUKGNvbDUgYXMg aW50OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50OCwKKyAgICAg ICBDQVNUKGNvbDUgYXMgZmxvYXQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19mbG9hdDQsCisgICAgICAgQ0FTVChjb2w1IGFzIGZsb2F0OCBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ4LAorICAgICAgIENBU1QoY29sNSBhcyBudW1l cmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAorICAg ICAgIENBU1QoY29sNSBhcyBudW1lcmljKDEwLDEpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKSBhcyB0b19udW1lcmljX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QxOworIGludDIg IHwgdG9faW50MiB8IHRvX2ludDQgfCB0b19vaWQgfCB0b19pbnQ4IHwgdG9fZmxvYXQ0IHwgdG9f ZmxvYXQ4IHwgdG9fbnVtZXJpYyB8IHRvX251bWVyaWNfc2NhbGUgCistLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAzMjc2NyB8ICAgMzI3NjcgfCAgIDMyNzY3 IHwgIDMyNzY3IHwgICAzMjc2NyB8ICAgICAzMjc2NyB8ICAgICAzMjc2NyB8ICAgICAgMzI3Njcg fCAgICAgICAgICAzMjc2Ny4wCisgMzI3NjcgfCAgIDMyNzY3IHwgICAzMjc2NyB8ICAzMjc2NyB8 ICAgMzI3NjcgfCAgICAgMzI3NjcgfCAgICAgMzI3NjcgfCAgICAgIDMyNzY3IHwgICAgICAgICAg MzI3NjcuMAorIDMyNzY3IHwgICAzMjc2NyB8ICAgMzI3NjcgfCAgMzI3NjcgfCAgIDMyNzY3IHwg ICAgIDMyNzY3IHwgICAgIDMyNzY3IHwgICAgICAzMjc2NyB8ICAgICAgICAgIDMyNzY3LjAKKyAz Mjc2NyB8ICAgMzI3NjcgfCAgIDMyNzY3IHwgIDMyNzY3IHwgICAzMjc2NyB8ICAgICAzMjc2NyB8 ICAgICAzMjc2NyB8ICAgICAgMzI3NjcgfCAgICAgICAgICAzMjc2Ny4wCisoNCByb3dzKQorCitT RUxFQ1QgY29sNiBhcyBpbnQ0LAorICAgICAgIENBU1QoY29sNiBBUyBpbnQyIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQyLAorICAgICAgIENBU1QoY29sNiBBUyBp bnQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ0LAorICAgICAg IENBU1QoY29sNiBBUyBvaWQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X29pZCwKKyAgICAgICBDQVNUKGNvbDYgYXMgaW50OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgYXMgdG9faW50OCwKKyAgICAgICBDQVNUKGNvbDYgYXMgZmxvYXQ0IERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDQsCisgICAgICAgQ0FTVChjb2w2 IGFzIGZsb2F0OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ4 LAorICAgICAgIENBU1QoY29sNiBhcyBudW1lcmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKSBhcyB0b19udW1lcmljLAorICAgICAgIENBU1QoY29sNiBhcyBudW1lcmljKDEwLDEp IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljX3NjYWxlCitG Uk9NIHRlc3Rfc2FmZWNhc3QxOworIGludDQgIHwgdG9faW50MiB8IHRvX2ludDQgfCB0b19vaWQg fCB0b19pbnQ4IHwgdG9fZmxvYXQ0IHwgdG9fZmxvYXQ4IHwgdG9fbnVtZXJpYyB8IHRvX251bWVy aWNfc2NhbGUgCistLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0K KyAzMjc2OCB8ICAgICAgICAgfCAgIDMyNzY4IHwgIDMyNzY4IHwgICAzMjc2OCB8ICAgICAzMjc2 OCB8ICAgICAzMjc2OCB8ICAgICAgMzI3NjggfCAgICAgICAgICAzMjc2OC4wCisgMzI3NjggfCAg ICAgICAgIHwgICAzMjc2OCB8ICAzMjc2OCB8ICAgMzI3NjggfCAgICAgMzI3NjggfCAgICAgMzI3 NjggfCAgICAgIDMyNzY4IHwgICAgICAgICAgMzI3NjguMAorIDMyNzY4IHwgICAgICAgICB8ICAg MzI3NjggfCAgMzI3NjggfCAgIDMyNzY4IHwgICAgIDMyNzY4IHwgICAgIDMyNzY4IHwgICAgICAz Mjc2OCB8ICAgICAgICAgIDMyNzY4LjAKKyAzMjc2OCB8ICAgICAgICAgfCAgIDMyNzY4IHwgIDMy NzY4IHwgICAzMjc2OCB8ICAgICAzMjc2OCB8ICAgICAzMjc2OCB8ICAgICAgMzI3NjggfCAgICAg ICAgICAzMjc2OC4wCisoNCByb3dzKQorCitTRUxFQ1QgY29sNyBhcyBpbnQ4LAorICAgICAgIENB U1QoY29sNyBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19p bnQyLAorICAgICAgIENBU1QoY29sNyBBUyBpbnQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKSBhcyB0b19pbnQ0LAorICAgICAgIENBU1QoY29sNyBBUyBvaWQgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX29pZCwKKyAgICAgICBDQVNUKGNvbDcgYXMgaW50 OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50OCwKKyAgICAgICBD QVNUKGNvbDcgYXMgZmxvYXQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b19mbG9hdDQsCisgICAgICAgQ0FTVChjb2w3IGFzIGZsb2F0OCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ4LAorICAgICAgIENBU1QoY29sNyBhcyBudW1lcmlj IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAorICAgICAg IENBU1QoY29sNyBhcyBudW1lcmljKDEwLDEpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b19udW1lcmljX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QxOworICAgIGludDgg ICAgfCB0b19pbnQyIHwgdG9faW50NCB8IHRvX29pZCB8ICB0b19pbnQ4ICAgfCAgdG9fZmxvYXQ0 ICB8IHRvX2Zsb2F0OCAgfCB0b19udW1lcmljIHwgdG9fbnVtZXJpY19zY2FsZSAKKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgNDI5NDk2 NzI5NiB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgNDI5NDk2NzI5NiB8IDQuMjk0OTdl KzA5IHwgNDI5NDk2NzI5NiB8IDQyOTQ5NjcyOTYgfCAgICAgICAgICAgICAgICAgCisgNDI5NDk2 NzI5NiB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgNDI5NDk2NzI5NiB8IDQuMjk0OTdl KzA5IHwgNDI5NDk2NzI5NiB8IDQyOTQ5NjcyOTYgfCAgICAgICAgICAgICAgICAgCisgNDI5NDk2 NzI5NiB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgNDI5NDk2NzI5NiB8IDQuMjk0OTdl KzA5IHwgNDI5NDk2NzI5NiB8IDQyOTQ5NjcyOTYgfCAgICAgICAgICAgICAgICAgCisgNDI5NDk2 NzI5NiB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgNDI5NDk2NzI5NiB8IDQuMjk0OTdl KzA5IHwgNDI5NDk2NzI5NiB8IDQyOTQ5NjcyOTYgfCAgICAgICAgICAgICAgICAgCisoNCByb3dz KQorCitTRUxFQ1QgY29sMyBhcyBudW1lcmljLAorICAgICAgIENBU1QoY29sMyBBUyBpbnQyIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQyLAorICAgICAgIENBU1Qo Y29sMyBBUyBpbnQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ0 LAorICAgICAgIENBU1QoY29sMyBBUyBvaWQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX29pZCwKKyAgICAgICBDQVNUKGNvbDMgYXMgaW50OCBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50OCwKKyAgICAgICBDQVNUKGNvbDMgYXMgZmxvYXQ0 IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDQsCisgICAgICAg Q0FTVChjb2wzIGFzIGZsb2F0OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg dG9fZmxvYXQ4LAorICAgICAgIENBU1QoY29sMyBhcyBudW1lcmljIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAorICAgICAgIENBU1QoY29sMyBhcyBudW1l cmljKDEwLDEpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmlj X3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QxOworICAgICAgIG51bWVyaWMgICAgICAgfCB0b19p bnQyIHwgdG9faW50NCB8IHRvX29pZCB8IHRvX2ludDggfCAgdG9fZmxvYXQ0ICB8ICAgICAgdG9f ZmxvYXQ4ICAgICAgIHwgICAgIHRvX251bWVyaWMgICAgICB8IHRvX251bWVyaWNfc2NhbGUgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyA5MjIzMzcyMDM2ODU0Nzc1ODA4IHwgICAgICAgICB8 ICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwgOS4yMjMzN2UrMTggfCA5LjIyMzM3MjAzNjg1 NDc4ZSsxOCB8IDkyMjMzNzIwMzY4NTQ3NzU4MDggfCAgICAgICAgICAgICAgICAgCisgICAgICAg ICAgICBJbmZpbml0eSB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAg IEluZmluaXR5IHwgICAgICAgICAgICAgSW5maW5pdHkgfCAgICAgICAgICAgIEluZmluaXR5IHwg ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAtSW5maW5pdHkgfCAgICAgICAgIHwgICAgICAg ICB8ICAgICAgICB8ICAgICAgICAgfCAgIC1JbmZpbml0eSB8ICAgICAgICAgICAgLUluZmluaXR5 IHwgICAgICAgICAgIC1JbmZpbml0eSB8ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg ICAgTmFOIHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICBO YU4gfCAgICAgICAgICAgICAgICAgIE5hTiB8ICAgICAgICAgICAgICAgICBOYU4gfCAgICAgICAg ICAgICAgTmFOCisoNCByb3dzKQorCitTRUxFQ1QgY29sNCBhcyBudW1fYXJyLAorICAgICAgIENB U1QoY29sNCBBUyBpbnQyW10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGlu dDJhcnIsCisgICAgICAgQ0FTVChjb2w0IEFTIGludDRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgaW50NGFyciwKKyAgICAgICBDQVNUKGNvbDQgYXMgaW50OFtdIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBpbnQ4YXJyLAorICAgICAgIENBU1QoY29s NCBhcyBmbG9hdDRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgZjRhcnIs CisgICAgICAgQ0FTVChjb2w0IGFzIGZsb2F0OFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKSBhcyBmOGFyciwKKyAgICAgICBDQVNUKGNvbDQgYXMgbnVtZXJpYygxMCwxKVtdIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBudW1hcnIKK0ZST00gdGVzdF9zYWZl Y2FzdDE7CisgICAgICAgICAgbnVtX2FyciAgICAgICAgICAgfCBpbnQyYXJyIHwgaW50NGFyciB8 IGludDhhcnIgfCAgICAgICAgICAgZjRhcnIgICAgICAgICAgICB8ICAgICAgICAgICBmOGFyciAg ICAgICAgICAgIHwgbnVtYXJyIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyB7MTEuMTIzNH0gICAgICAgICAgICAg ICAgICB8IHsxMX0gICAgfCB7MTF9ICAgIHwgezExfSAgICB8IHsxMS4xMjM0fSAgICAgICAgICAg ICAgICAgIHwgezExLjEyMzR9ICAgICAgICAgICAgICAgICAgfCB7MTEuMX0KKyB7MTEuMTIzNCwx MixJbmZpbml0eSxOYU59ICB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB8IHsxMS4xMjM0 LDEyLEluZmluaXR5LE5hTn0gIHwgezExLjEyMzQsMTIsSW5maW5pdHksTmFOfSAgfCAKKyB7MTEu MTIzNCwxMiwtSW5maW5pdHksTmFOfSB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB8IHsx MS4xMjM0LDEyLC1JbmZpbml0eSxOYU59IHwgezExLjEyMzQsMTIsLUluZmluaXR5LE5hTn0gfCAK KyB7MTEuMTIzNCwxMiwtSW5maW5pdHksTmFOfSB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAg ICB8IHsxMS4xMjM0LDEyLC1JbmZpbml0eSxOYU59IHwgezExLjEyMzQsMTIsLUluZmluaXR5LE5h Tn0gfCAKKyg0IHJvd3MpCisKK1NFTEVDVCBjb2wxIGFzIGZsb2F0NCwKKyAgICAgICBDQVNUKGNv bDEgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwK KyAgICAgICBDQVNUKGNvbDEgQVMgaW50NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9faW50NCwKKyAgICAgICBDQVNUKGNvbDEgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b19vaWQsCisgICAgICAgQ0FTVChjb2wxIGFzIGludDggREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDgsCisgICAgICAgQ0FTVChj b2wxIGFzIGZsb2F0NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxv YXQ0LAorICAgICAgIENBU1QoY29sMSBhcyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAgICBDQVNUKGNvbDEgYXMgbnVtZXJpYyBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNU KGNvbDEgYXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9fbnVtZXJpY19zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MTsKKyAgZmxvYXQ0ICAgfCB0 b19pbnQyIHwgdG9faW50NCB8IHRvX29pZCB8IHRvX2ludDggfCB0b19mbG9hdDQgfCAgICB0b19m bG9hdDggICAgIHwgdG9fbnVtZXJpYyB8IHRvX251bWVyaWNfc2NhbGUgCistLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgMTEuMTIzNCB8 ICAgICAgMTEgfCAgICAgIDExIHwgICAgICAgIHwgICAgICAxMSB8ICAgMTEuMTIzNCB8IDExLjEy MzM5OTczNDQ5NzEgfCAgICAxMS4xMjM0IHwgICAgICAgICAgICAgMTEuMQorICBJbmZpbml0eSB8 ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICBJbmZpbml0eSB8ICAgICAg ICAgSW5maW5pdHkgfCAgIEluZmluaXR5IHwgICAgICAgICAgICAgICAgIAorIC1JbmZpbml0eSB8 ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8IC1JbmZpbml0eSB8ICAgICAg ICAtSW5maW5pdHkgfCAgLUluZmluaXR5IHwgICAgICAgICAgICAgICAgIAorICAgICAgIE5hTiB8 ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgIE5hTiB8ICAgICAg ICAgICAgICBOYU4gfCAgICAgICAgTmFOIHwgICAgICAgICAgICAgIE5hTgorKDQgcm93cykKKwor U0VMRUNUIGNvbDIgYXMgZmxvYXQ4LAorICAgICAgIENBU1QoY29sMiBBUyBpbnQyIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQyLAorICAgICAgIENBU1QoY29sMiBB UyBpbnQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ0LAorICAg ICAgIENBU1QoY29sMiBBUyBvaWQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX29pZCwKKyAgICAgICBDQVNUKGNvbDIgYXMgaW50OCBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9faW50OCwKKyAgICAgICBDQVNUKGNvbDIgYXMgZmxvYXQ0IERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDQsCisgICAgICAgQ0FTVChj b2wyIGFzIGZsb2F0OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxv YXQ4LAorICAgICAgIENBU1QoY29sMiBhcyBudW1lcmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAorICAgICAgIENBU1QoY29sMiBhcyBudW1lcmljKDEw LDEpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljX3NjYWxl CitGUk9NIHRlc3Rfc2FmZWNhc3QxOworICBmbG9hdDggICB8IHRvX2ludDIgfCB0b19pbnQ0IHwg dG9fb2lkIHwgdG9faW50OCB8IHRvX2Zsb2F0NCB8IHRvX2Zsb2F0OCB8IHRvX251bWVyaWMgfCB0 b19udW1lcmljX3NjYWxlIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLQorICAgMTEuMTIzNCB8ICAgICAgMTEgfCAgICAgIDExIHwgICAgICAgIHwgICAg ICAxMSB8ICAgMTEuMTIzNCB8ICAgMTEuMTIzNCB8ICAgIDExLjEyMzQgfCAgICAgICAgICAgICAx MS4xCisgIEluZmluaXR5IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwg IEluZmluaXR5IHwgIEluZmluaXR5IHwgICBJbmZpbml0eSB8ICAgICAgICAgICAgICAgICAKKyAt SW5maW5pdHkgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAtSW5maW5p dHkgfCAtSW5maW5pdHkgfCAgLUluZmluaXR5IHwgICAgICAgICAgICAgICAgIAorICAgICAgIE5h TiB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgIE5hTiB8ICAg ICAgIE5hTiB8ICAgICAgICBOYU4gfCAgICAgICAgICAgICAgTmFOCisoNCByb3dzKQorCistLSBz YWZlIHR5cGUgY2FzdCBmb3IgdHlwZSBkYXRlL3RpbWVzdGFtcC90aW1lc3RhbXB0ei9pbnRlcnZh bAorQ1JFQVRFIFRBQkxFIHRlc3Rfc2FmZWNhc3QyKAorICBjb2wwIGRhdGUsIGNvbDEgdGltZXN0 YW1wLCBjb2wyIHRpbWVzdGFtcHR6LAorICBjb2wzIGludGVydmFsLCBjb2w0IHRpbWUsIGNvbDUg dGltZXR6KTsKK0lOU0VSVCBJTlRPIHRlc3Rfc2FmZWNhc3QyIFZBTFVFUworKCctaW5maW5pdHkn LCAnLWluZmluaXR5JywgJy1pbmZpbml0eScsICctaW5maW5pdHknLAorICAnMjAwMy0wMy0wNyAx NTozNjozOSBBbWVyaWNhL05ld19Zb3JrJywgJzIwMDMtMDctMDcgMTU6MzY6MzkgQW1lcmljYS9O ZXdfWW9yaycpLAorKCctaW5maW5pdHknLCAnaW5maW5pdHknLCAnaW5maW5pdHknLCAnaW5maW5p dHknLCAnMTE6NTk6NTkuOTkgUE0nLCAnMTE6NTk6NTkuOTkgUE0gUERUJyk7CitTRUxFQ1QgY29s MCBhcyBkYXRlLAorICAgICAgIENBU1QoY29sMCBBUyB0aW1lc3RhbXB0eiBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXN0YW1wdHosCisgICAgICAgQ0FTVChjb2ww IEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2RhdGUsCisg ICAgICAgQ0FTVChjb2wwIEFTIHRpbWUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IGFzIHRvX3RpbWVzLAorICAgICAgIENBU1QoY29sMCBBUyB0aW1ldHogREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWV0eiwKKyAgICAgICBDQVNUKGNvbDAgQVMgdGlt ZXN0YW1wKDIpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3Rh bXBfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDI7CisgICBkYXRlICAgIHwgdG9fdGltZXN0YW1w dHogfCAgdG9fZGF0ZSAgfCB0b190aW1lcyB8IHRvX3RpbWV0eiB8IHRvX3RpbWVzdGFtcF9zY2Fs ZSAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLQorIC1pbmZpbml0eSB8IC1pbmZpbml0eSAg ICAgIHwgLWluZmluaXR5IHwgICAgICAgICAgfCAgICAgICAgICAgfCAtaW5maW5pdHkKKyAtaW5m aW5pdHkgfCAtaW5maW5pdHkgICAgICB8IC1pbmZpbml0eSB8ICAgICAgICAgIHwgICAgICAgICAg IHwgLWluZmluaXR5CisoMiByb3dzKQorCitTRUxFQ1QgY29sMSBhcyB0aW1lc3RhbXAsCisgICAg ICAgQ0FTVChjb2wxIEFTIHRpbWVzdGFtcHR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b190aW1lc3RhbXB0eiwKKyAgICAgICBDQVNUKGNvbDEgQVMgZGF0ZSBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZGF0ZSwKKyAgICAgICBDQVNUKGNvbDEg QVMgdGltZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXMsCisg ICAgICAgQ0FTVChjb2wxIEFTIHRpbWV0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9fdGltZXR6LAorICAgICAgIENBU1QoY29sMSBBUyB0aW1lc3RhbXAoMikgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzdGFtcF9zY2FsZQorRlJPTSB0 ZXN0X3NhZmVjYXN0MjsKKyB0aW1lc3RhbXAgfCB0b190aW1lc3RhbXB0eiB8ICB0b19kYXRlICB8 IHRvX3RpbWVzIHwgdG9fdGltZXR6IHwgdG9fdGltZXN0YW1wX3NjYWxlIAorLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tCisgLWluZmluaXR5IHwgLWluZmluaXR5ICAgICAgfCAtaW5maW5pdHkg fCAgICAgICAgICB8ICAgICAgICAgICB8IC1pbmZpbml0eQorIGluZmluaXR5ICB8IGluZmluaXR5 ICAgICAgIHwgaW5maW5pdHkgIHwgICAgICAgICAgfCAgICAgICAgICAgfCBpbmZpbml0eQorKDIg cm93cykKKworU0VMRUNUIGNvbDIgYXMgdGltZXN0YW1wdHosCisgICAgICAgQ0FTVChjb2wyIEFT IHRpbWVzdGFtcHR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1l c3RhbXB0eiwKKyAgICAgICBDQVNUKGNvbDIgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9fZGF0ZSwKKyAgICAgICBDQVNUKGNvbDIgQVMgdGltZSBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXMsCisgICAgICAgQ0FTVChjb2wy IEFTIHRpbWV0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXR6 LAorICAgICAgIENBU1QoY29sMiBBUyB0aW1lc3RhbXAoMikgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX3RpbWVzdGFtcF9zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MjsK KyB0aW1lc3RhbXB0eiB8IHRvX3RpbWVzdGFtcHR6IHwgIHRvX2RhdGUgIHwgdG9fdGltZXMgfCB0 b190aW1ldHogfCB0b190aW1lc3RhbXBfc2NhbGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLQorIC1pbmZpbml0eSAgIHwgLWluZmluaXR5ICAgICAgfCAtaW5maW5pdHkgfCAgICAgICAg ICB8ICAgICAgICAgICB8IC1pbmZpbml0eQorIGluZmluaXR5ICAgIHwgaW5maW5pdHkgICAgICAg fCBpbmZpbml0eSAgfCAgICAgICAgICB8ICAgICAgICAgICB8IGluZmluaXR5CisoMiByb3dzKQor CitTRUxFQ1QgY29sMyBhcyBpbnRlcnZhbCwKKyAgICAgICBDQVNUKGNvbDMgQVMgdGltZXN0YW1w dHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzdGFtcHR6LAor ICAgICAgIENBU1QoY29sMyBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyB0b19kYXRlLAorICAgICAgIENBU1QoY29sMyBBUyB0aW1lIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lcywKKyAgICAgICBDQVNUKGNvbDMgQVMgdGltZXR6 IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1ldHosCisgICAgICAg Q0FTVChjb2wzIEFTIHRpbWVzdGFtcCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9fdGltZXN0YW1wX3NjYWxlLAorICAgICAgIENBU1QoY29sMyBBUyBpbnRlcnZhbCgy KSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50ZXJ2YWxfc2NhbGUK K0ZST00gdGVzdF9zYWZlY2FzdDI7CisgaW50ZXJ2YWwgIHwgdG9fdGltZXN0YW1wdHogfCB0b19k YXRlIHwgdG9fdGltZXMgfCB0b190aW1ldHogfCB0b190aW1lc3RhbXBfc2NhbGUgfCB0b19pbnRl cnZhbF9zY2FsZSAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LQorIC1pbmZpbml0eSB8ICAgICAgICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgIHwgICAg ICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgLWluZmluaXR5CisgaW5maW5pdHkgIHwgICAg ICAgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgfCBpbmZpbml0eQorKDIgcm93cykKKworU0VMRUNUIGNvbDQgYXMgdGltZSwKKyAg ICAgICBDQVNUKGNvbDQgQVMgdGltZSgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9fdGltZXMsCisgICAgICAgQ0FTVChjb2w0IEFTIHRpbWV0eiBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgSVMgTk9UIE5VTEwgYXMgdG9fdGltZXR6LAorICAgICAgIENB U1QoY29sNCBBUyBpbnRlcnZhbCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9faW50ZXJ2YWwsCisgICAgICAgQ0FTVChjb2w0IEFTIGludGVydmFsKDIpIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnRlcnZhbF9zY2FsZQorRlJPTSB0ZXN0 X3NhZmVjYXN0MjsKKyAgICB0aW1lICAgICB8ICB0b190aW1lcyAgIHwgdG9fdGltZXR6IHwgICAg ICAgICAgdG9faW50ZXJ2YWwgICAgICAgICAgfCAgICAgICB0b19pbnRlcnZhbF9zY2FsZSAgICAg ICAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxNToz NjozOSAgICB8IDE1OjM2OjM5ICAgIHwgdCAgICAgICAgIHwgQCAxNSBob3VycyAzNiBtaW5zIDM5 IHNlY3MgICAgfCBAIDE1IGhvdXJzIDM2IG1pbnMgMzkgc2VjcworIDIzOjU5OjU5Ljk5IHwgMjM6 NTk6NTkuOTkgfCB0ICAgICAgICAgfCBAIDIzIGhvdXJzIDU5IG1pbnMgNTkuOTkgc2VjcyB8IEAg MjMgaG91cnMgNTkgbWlucyA1OS45OSBzZWNzCisoMiByb3dzKQorCitTRUxFQ1QgY29sNSBhcyB0 aW1ldHosCisgICAgICAgQ0FTVChjb2w1IEFTIHRpbWUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX3RpbWUsCisgICAgICAgQ0FTVChjb2w1IEFTIHRpbWUoMikgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVfc2NhbGUsCisgICAgICAgQ0FT VChjb2w1IEFTIHRpbWV0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f dGltZXR6LAorICAgICAgIENBU1QoY29sNSBBUyB0aW1ldHooNikgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWV0el9zY2FsZSwKKyAgICAgICBDQVNUKGNvbDUgQVMg aW50ZXJ2YWwgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludGVydmFs LAorICAgICAgIENBU1QoY29sNSBBUyBpbnRlcnZhbCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9faW50ZXJ2YWxfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDI7Cisg ICAgIHRpbWV0eiAgICAgfCAgIHRvX3RpbWUgICB8IHRvX3RpbWVfc2NhbGUgfCAgIHRvX3RpbWV0 eiAgICB8IHRvX3RpbWV0el9zY2FsZSB8IHRvX2ludGVydmFsIHwgdG9faW50ZXJ2YWxfc2NhbGUg CistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tCisgMTU6MzY6MzktMDQgICAgfCAxNTozNjozOSAgICB8IDE1OjM2OjM5ICAgICAgfCAxNToz NjozOS0wNCAgICB8IDE1OjM2OjM5LTA0ICAgICB8ICAgICAgICAgICAgIHwgCisgMjM6NTk6NTku OTktMDcgfCAyMzo1OTo1OS45OSB8IDIzOjU5OjU5Ljk5ICAgfCAyMzo1OTo1OS45OS0wNyB8IDIz OjU5OjU5Ljk5LTA3ICB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQorCitDUkVBVEUgVEFCTEUg dGVzdF9zYWZlY2FzdDMoY29sMCBqc29uYik7CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0Myhj b2wwKSBWQUxVRVMgKCcidGVzdCInKTsKK1NFTEVDVCBjb2wwIGFzIGpzb25iLAorICAgICAgIENB U1QoY29sMCBBUyBpbnRlZ2VyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b19pbnRlZ2VyLAorICAgICAgIENBU1QoY29sMCBBUyBudW1lcmljIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAorICAgICAgIENBU1QoY29sMCBBUyBiaWdp bnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDgsCisgICAgICAg Q0FTVChjb2wwIEFTIGZsb2F0NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg dG9fZmxvYXQ0LAorICAgICAgIENBU1QoY29sMCBBUyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAgICBDQVNUKGNvbDAgQVMgYm9vbGVh biBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fYm9vbCwKKyAgICAgICBD QVNUKGNvbDAgQVMgc21hbGxpbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX3NtYWxsaW50CitGUk9NIHRlc3Rfc2FmZWNhc3QzOworIGpzb25iICB8IHRvX2ludGVnZXIg fCB0b19udW1lcmljIHwgdG9faW50OCB8IHRvX2Zsb2F0NCB8IHRvX2Zsb2F0OCB8IHRvX2Jvb2wg fCB0b19zbWFsbGludCAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgInRl c3QiIHwgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgIHwgICAg ICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgCisoMSByb3cpCisKKy0tIHRlc3QgZGVwYXJz ZQorU0VUIGRhdGVzdHlsZSBUTyBJU08sIFlNRDsKK0NSRUFURSBWSUVXIHNhZmVjYXN0dmlldyBB UworU0VMRUNUIENBU1QoJzEyMzQnIGFzIGNoYXIoMykgREVGQVVMVCAtMTExMSBPTiBDT05WRVJT SU9OIEVSUk9SKSwKKyAgICAgICBDQVNUKDEgYXMgZGF0ZSBERUZBVUxUICgoJzIwMjUtRGVjLTA2 Jzo6ZGF0ZSArIHJhbmRvbShtaW49PjEsIG1heD0+MTo6aW50KSkpIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIGNhc3QwLAorICAgICAgIENBU1QoQVJSQVlbWycxJ10sIFsndGhyZWUnXSxbJ2EnXV0g QVMgaW50W10gREVGQVVMVCAnezEsMn0nIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGNhc3QxLAor ICAgICAgIENBU1QoQVJSQVlbWycxJywgJzInXSwgWyd0aHJlZScsICdhJ11dIEFTIGRhdGVbXSBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgY2FzdDIsCisgICAgICAgQ0FTVChB UlJBWVsndGhyZWUnXSBBUyBJTlRbXSBERUZBVUxUICd7MSwyfScgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgY2FzdDM7Citcc3Ygc2FmZWNhc3R2aWV3CitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1 YmxpYy5zYWZlY2FzdHZpZXcgQVMKKyBTRUxFQ1QgQ0FTVCgnMTIzNCcgQVMgY2hhcmFjdGVyKDMp IERFRkFVTFQgJy0xMTExJzo6aW50ZWdlcjo6Y2hhcmFjdGVyKDMpIE9OIENPTlZFUlNJT04gRVJS T1IpIEFTIGJwY2hhciwKKyAgICBDQVNUKDEgQVMgZGF0ZSBERUZBVUxUICcyMDI1LTEyLTA2Jzo6 ZGF0ZSArIHJhbmRvbShtaW4gPT4gMSwgbWF4ID0+IDEpIE9OIENPTlZFUlNJT04gRVJST1IpIEFT IGNhc3QwLAorICAgIENBU1QoQVJSQVlbQVJSQVlbMV0sIEFSUkFZWyd0aHJlZSddLCBBUlJBWVsn YSddXSBBUyBpbnRlZ2VyW10gREVGQVVMVCAnezEsMn0nOjppbnRlZ2VyW10gT04gQ09OVkVSU0lP TiBFUlJPUikgQVMgY2FzdDEsCisgICAgQ0FTVChBUlJBWVtBUlJBWVsnMScsICcyJ10sIEFSUkFZ Wyd0aHJlZScsICdhJ11dIEFTIGRhdGVbXSBERUZBVUxUIE5VTEw6OmRhdGVbXSBPTiBDT05WRVJT SU9OIEVSUk9SKSBBUyBjYXN0MiwKKyAgICBDQVNUKEFSUkFZWyd0aHJlZSddIEFTIGludGVnZXJb XSBERUZBVUxUICd7MSwyfSc6OmludGVnZXJbXSBPTiBDT05WRVJTSU9OIEVSUk9SKSBBUyBjYXN0 MworU0VMRUNUICogRlJPTSBzYWZlY2FzdHZpZXc7CisgYnBjaGFyIHwgICBjYXN0MCAgICB8IGNh c3QxIHwgY2FzdDIgfCBjYXN0MyAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0t LS0rLS0tLS0tLQorIDEyMyAgICB8IDIwMjUtMTItMDcgfCB7MSwyfSB8ICAgICAgIHwgezEsMn0K KygxIHJvdykKKworQ1JFQVRFIFZJRVcgc2FmZWNhc3R2aWV3MSBBUworU0VMRUNUIENBU1QoQVJS QVlbWycxJ10sIFsndGhyZWUnXSxbJ2EnXV0gQVMgZF9pbnRfYXJyCisgICAgICAgICAgICBERUZB VUxUICd7NDEsNDN9JyBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBjYXN0MSwKKyAgICAgICBDQVNU KEFSUkFZW1snMScsICcyJywgMS4xXSwgWyd0aHJlZScsIHRydWUsIEInMDEnXV0gQVMgZF9pbnRf YXJyCisgICAgICAgICAgICBERUZBVUxUICd7NDEsNDN9JyBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyBjYXN0MjsKK1xzdiBzYWZlY2FzdHZpZXcxCitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1Ymxp Yy5zYWZlY2FzdHZpZXcxIEFTCisgU0VMRUNUIENBU1QoQVJSQVlbQVJSQVlbMV0sIEFSUkFZWyd0 aHJlZSddLCBBUlJBWVsnYSddXSBBUyBkX2ludF9hcnIgREVGQVVMVCAnezQxLDQzfSc6OmludGVn ZXJbXTo6ZF9pbnRfYXJyIE9OIENPTlZFUlNJT04gRVJST1IpIEFTIGNhc3QxLAorICAgIENBU1Qo QVJSQVlbQVJSQVlbMSwgMiwgMS4xOjppbnRlZ2VyXSwgQVJSQVlbJ3RocmVlJywgdHJ1ZSwgJzAx Jzo6ImJpdCJdXSBBUyBkX2ludF9hcnIgREVGQVVMVCAnezQxLDQzfSc6OmludGVnZXJbXTo6ZF9p bnRfYXJyIE9OIENPTlZFUlNJT04gRVJST1IpIEFTIGNhc3QyCitTRUxFQ1QgKiBGUk9NIHNhZmVj YXN0dmlldzE7CisgIGNhc3QxICB8ICBjYXN0MiAgCistLS0tLS0tLS0rLS0tLS0tLS0tCisgezQx LDQzfSB8IHs0MSw0M30KKygxIHJvdykKKworUkVTRVQgZGF0ZXN0eWxlOworLS0gdGVzdCBDQVNU IERFRkFVTFQgZXhwcmVzc2lvbiBtdXRhYmlsaXR5CitDUkVBVEUgSU5ERVggY2FzdF9lcnJvcl9p ZHggT04gdGVzdF9zYWZlY2FzdDMoKENBU1QoY29sMCBhcyBpbnQgREVGQVVMVCByYW5kb20obWlu PT4xLCBtYXg9PjEpIE9OIENPTlZFUlNJT04gRVJST1IpKSk7IC0tIGVycm9yCitFUlJPUjogIGZ1 bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorTElO RSAxOiBDUkVBVEUgSU5ERVggY2FzdF9lcnJvcl9pZHggT04gdGVzdF9zYWZlY2FzdDMoKENBU1Qo Y29sMCBhcyAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KK0NSRUFURSBJTkRFWCBjYXN0X2Vycm9yX2lkeCBPTiB0ZXN0X3NhZmVjYXN0 MygoQ0FTVChjb2wwIGFzIHhpZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikpKTsg LS0gZXJyb3IKK0VSUk9SOiAgZGF0YSB0eXBlIHhpZCBoYXMgbm8gZGVmYXVsdCBvcGVyYXRvciBj bGFzcyBmb3IgYWNjZXNzIG1ldGhvZCAiYnRyZWUiCitISU5UOiAgWW91IG11c3Qgc3BlY2lmeSBh biBvcGVyYXRvciBjbGFzcyBmb3IgdGhlIGluZGV4IG9yIGRlZmluZSBhIGRlZmF1bHQgb3BlcmF0 b3IgY2xhc3MgZm9yIHRoZSBkYXRhIHR5cGUuCitDUkVBVEUgSU5ERVggY2FzdF9lcnJvcl9pZHgg T04gdGVzdF9zYWZlY2FzdDMoKENBU1QoY29sMCBhcyBpbnQgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpKSk7IC0tb2sKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoJ2Nhc3RfZXJyb3Jf aWR4Jzo6cmVnY2xhc3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwZ19nZXRfaW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgQ1JFQVRFIElOREVYIGNhc3RfZXJyb3JfaWR4IE9OIHB1YmxpYy50ZXN0X3NhZmVjYXN0 MyBVU0lORyBidHJlZSAoKENBU1QoY29sMCBBUyBpbnRlZ2VyIERFRkFVTFQgTlVMTDo6aW50ZWdl ciBPTiBDT05WRVJTSU9OIEVSUk9SKSkpCisoMSByb3cpCisKK0RST1AgVklFVyBzYWZlY2FzdHZp ZXc7CitEUk9QIFZJRVcgc2FmZWNhc3R2aWV3MTsKK0RST1AgVEFCTEUgdGVzdF9zYWZlY2FzdDsK K0RST1AgVEFCTEUgdGVzdF9zYWZlY2FzdDE7CitEUk9QIFRBQkxFIHRlc3Rfc2FmZWNhc3QyOwor RFJPUCBUQUJMRSB0ZXN0X3NhZmVjYXN0MzsKK0RST1AgVEFCTEUgdGNhc3Q7CitEUk9QIFRBQkxF IHRjYXN0MTsKK0RST1AgRlVOQ1RJT04gcmV0X2ludDg7CitEUk9QIEZVTkNUSU9OIHJldF9zZXRp bnQ7CitEUk9QIFRZUEUgY29tcF9kb21haW5fd2l0aF90eXBtb2Q7CitEUk9QIFRZUEUgY29tcDI7 CitEUk9QIERPTUFJTiBkX25vdGE7CitEUk9QIERPTUFJTiBkX3ZhcmNoYXI7CitEUk9QIERPTUFJ TiBkX2ludDhhcnI7CitEUk9QIERPTUFJTiBkX2ludDg7CitEUk9QIERPTUFJTiBkX2ludDQyYXJy MTsKK0RST1AgRE9NQUlOIGRfaW50NDJhcnI7CitEUk9QIERPTUFJTiBkX2ludDQyOworRFJPUCBE T01BSU4gZF9jaGFyM19ub3RfbnVsbDsKK0RST1AgRE9NQUlOIGRfbnVtZXJpYzsKK1JFU0VUIGV4 dHJhX2Zsb2F0X2RpZ2l0czsKK1JFU0VUIGxjX21vbmV0YXJ5OwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfY2FzdC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2NyZWF0ZV9jYXN0Lm91dAppbmRleCAwZTY5NjQ0YmNhMi4uNjhlNjlkMWM1ODQgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2Nhc3Qub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2Nhc3Qub3V0CkBAIC04OCw2ICs4OCwx MSBAQCBTRUxFQ1QgMTIzNDo6aW50NDo6Y2FzdHRlc3R0eXBlOyAtLSBTaG91bGQgd29yayBub3cK ICBiYXIxMjM0CiAoMSByb3cpCiAKK1NFTEVDVCBDQVNUKDEyMzQ6OmludDQgQVMgY2FzdHRlc3R0 eXBlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK0VSUk9SOiAg Y2Fubm90IGNhc3QgdHlwZSBpbnRlZ2VyIHRvIGNhc3R0ZXN0dHlwZSB3aGVuIERFRkFVTFQgZXhw cmVzc2lvbiBpcyBzcGVjaWZpZWQgaW4gQ0FTVCAuLi4gT04gQ09OVkVSU0lPTiBFUlJPUgorTElO RSAxOiBTRUxFQ1QgQ0FTVCgxMjM0OjppbnQ0IEFTIGNhc3R0ZXN0dHlwZSBERUZBVUxUIE5VTEwg T04gQ09OVkUuLi4KKyAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIFNhZmUgdHlwZSBjYXN0 IGZvciB1c2VyLWRlZmluZWQgdHlwZXMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkLgogLS0gY2hlY2sg ZGVwZW5kZW5jaWVzIGdlbmVyYXRlZCBmb3IgdGhhdAogU0VMRUNUIHBnX2Rlc2NyaWJlX29iamVj dChjbGFzc2lkLCBvYmppZCwgb2Jqc3ViaWQpIGFzIG9iaiwKICAgICAgICBwZ19kZXNjcmliZV9v YmplY3QocmVmY2xhc3NpZCwgcmVmb2JqaWQsIHJlZm9ianN1YmlkKSBhcyBvYmpyZWYsCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VxdWl2Y2xhc3Mub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9lcXVpdmNsYXNzLm91dAppbmRleCBhZDhhYjI5NGZmNi4uZTNm OGEyODA3ZjkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXF1aXZjbGFz cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9lcXVpdmNsYXNzLm91dApAQCAt OTUsNiArOTUsMTMgQEAgY3JlYXRlIGZ1bmN0aW9uIGludDhhbGlhczFjbXAoaW50OCwgaW50OGFs aWFzMSkgcmV0dXJucyBpbnQKICAgc3RyaWN0IGltbXV0YWJsZSBsYW5ndWFnZSBpbnRlcm5hbCBh cyAnYnRpbnQ4Y21wJzsKIGFsdGVyIG9wZXJhdG9yIGZhbWlseSBpbnRlZ2VyX29wcyB1c2luZyBi dHJlZSBhZGQKICAgZnVuY3Rpb24gMSBpbnQ4YWxpYXMxY21wIChpbnQ4LCBpbnQ4YWxpYXMxKTsK Ky0tIGludDhhbGlhczIgYmluYXJ5LWNvZXJjaWJsZSB0byBpbnQ4LCB0aGlzIHNob3VsZCBub3Qg ZmFpbAorc2VsZWN0IGNhc3QoJzEnOjppbnQ4IGFzIGludDhhbGlhczIgZGVmYXVsdCBudWxsIG9u IGNvbnZlcnNpb24gZXJyb3IpOworIGludDhhbGlhczIgCistLS0tLS0tLS0tLS0KKyAxCisoMSBy b3cpCisKIGNyZWF0ZSB0YWJsZSBlYzAgKGZmIGludDggcHJpbWFyeSBrZXksIGYxIGludDgsIGYy IGludDgpOwogY3JlYXRlIHRhYmxlIGVjMSAoZmYgaW50OCBwcmltYXJ5IGtleSwgZjEgaW50OGFs aWFzMSwgZjIgaW50OGFsaWFzMik7CiBjcmVhdGUgdGFibGUgZWMyICh4ZiBpbnQ4IHByaW1hcnkg a2V5LCB4MSBpbnQ4YWxpYXMxLCB4MiBpbnQ4YWxpYXMyKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQveG1sLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQveG1s Lm91dAppbmRleCAxMDNhMjJhM2IxZC4uODE1YTVlODg5OWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQveG1sLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3htbC5vdXQKQEAgLTE4LDYgKzE4LDEyIEBAIFNFTEVDVCAqIEZST00geG1sdGVzdDsKICAgMiB8 IDx2YWx1ZT50d288L3ZhbHVlPgogKDIgcm93cykKIAorU0VMRUNUIENBU1QoJzx3cm9uZyc6OnRl eHQgQVMgeG1sIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b194bWw7Cisg dG9feG1sIAorLS0tLS0tLS0KKyAKKygxIHJvdykKKwogLS0gdGVzdCBub24tdGhyb3dpbmcgQVBJ LCB0b28KIFNFTEVDVCBwZ19pbnB1dF9pc192YWxpZCgnPHZhbHVlPm9uZTwvdmFsdWU+JywgJ3ht bCcpOwogIHBnX2lucHV0X2lzX3ZhbGlkIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC94bWxfMS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3htbF8xLm91dApp bmRleCA3M2M0MTExMThhMy4uNjlhZWE4MzMxNjkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQveG1sXzEub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQveG1s XzEub3V0CkBAIC0yMiw2ICsyMiw5IEBAIFNFTEVDVCAqIEZST00geG1sdGVzdDsKIC0tLS0rLS0t LS0tCiAoMCByb3dzKQogCitTRUxFQ1QgQ0FTVCgnPHdyb25nJzo6dGV4dCBBUyB4bWwgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3htbDsKK0VSUk9SOiAgdW5zdXBwb3J0 ZWQgWE1MIGZlYXR1cmUKK0RFVEFJTDogIFRoaXMgZnVuY3Rpb25hbGl0eSByZXF1aXJlcyB0aGUg c2VydmVyIHRvIGJlIGJ1aWx0IHdpdGggbGlieG1sIHN1cHBvcnQuCiAtLSB0ZXN0IG5vbi10aHJv d2luZyBBUEksIHRvbwogU0VMRUNUIHBnX2lucHV0X2lzX3ZhbGlkKCc8dmFsdWU+b25lPC92YWx1 ZT4nLCAneG1sJyk7CiBFUlJPUjogIHVuc3VwcG9ydGVkIFhNTCBmZWF0dXJlCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9w YXJhbGxlbF9zY2hlZHVsZQppbmRleCA3MzRkYTA1N2MzNC4uYzgyYjRiMzE0MjMgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtODEsNyArODEsNyBAQCB0ZXN0OiBjcmVhdGVfdGFi bGVfbGlrZSBhbHRlcl9nZW5lcmljIGFsdGVyX29wZXJhdG9yIG1pc2MgYXN5bmMgZGJzaXplIG1l cmdlIG1pcwogIyBjb2xsYXRlLmxpbnV4LnV0ZjggYW5kIGNvbGxhdGUuaWN1LnV0ZjggdGVzdHMg Y2Fubm90IGJlIHJ1biBpbiBwYXJhbGxlbCB3aXRoIGVhY2ggb3RoZXIKICMgcHNxbCBkZXBlbmRz IG9uIGNyZWF0ZV9hbQogIyBhbXV0aWxzIGRlcGVuZHMgb24gZ2VvbWV0cnksIGNyZWF0ZV9pbmRl eF9zcGdpc3QsIGhhc2hfaW5kZXgsIGJyaW4KLXRlc3Q6IHJ1bGVzIHBzcWwgcHNxbF9jcm9zc3Rh YiBwc3FsX3BpcGVsaW5lIGFtdXRpbHMgc3RhdHNfZXh0IGNvbGxhdGUubGludXgudXRmOCBjb2xs YXRlLndpbmRvd3Mud2luMTI1MgordGVzdDogcnVsZXMgcHNxbCBwc3FsX2Nyb3NzdGFiIHBzcWxf cGlwZWxpbmUgYW11dGlscyBzdGF0c19leHQgY29sbGF0ZS5saW51eC51dGY4IGNvbGxhdGUud2lu ZG93cy53aW4xMjUyIGNhc3QKIAogIyAtLS0tLS0tLS0tCiAjIFJ1biB0aGVzZSBhbG9uZSBzbyB0 aGV5IGRvbid0IHJ1biBvdXQgb2YgcGFyYWxsZWwgd29ya2VycwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvY2FzdC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jYXN0LnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDQ2NDNmOWUyZjIKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jYXN0LnNxbApAQCAtMCwwICsxLDQy NCBAQAorU0VUIGV4dHJhX2Zsb2F0X2RpZ2l0cyA9IDA7CitTRVQgbGNfbW9uZXRhcnkgVE8gIkMi OworCistLSBDQVNUIERFRkFVTFQgT04gQ09OVkVSU0lPTiBFUlJPUgorU0VMRUNUIENBU1QoQicw MScgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FT VChCSVQnMDEnIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VM RUNUIENBU1QoVFJVRSBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsK K1NFTEVDVCBDQVNUKDEuMSBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KTsKK1NFTEVDVCBDQVNUKDEgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP Uik7CitTRUxFQ1QgQ0FTVCgxMTExIEFTICJjaGFyIiBERUZBVUxUICdBJyBPTiBDT05WRVJTSU9O IEVSUk9SKTsKK1NFTEVDVCBDQVNUKCdkZWYnOjp0ZXh0IEFTIGludGVnZXIgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJzInOjpqc29uYiBBUyB0ZXh0IERF RkFVTFQgJ2ZhbGxiYWNrJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcxJyBD T0xMQVRFICJDIiB8fCAnaCcgQVMgdGV4dCBERUZBVUxUICdmYWxsYmFjaycgT04gQ09OVkVSU0lP TiBFUlJPUik7CitTRUxFQ1QgQ0FTVChjb25jYXQoJzEnIGNvbGxhdGUgIkMiLCAnaCcpIEFTIGlu dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCg2NTUzNiBB UyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKGlu dDgoNjU1MzYpIEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCist LSBzb3VyY2UgZXhwcmVzc2lvbiBpcyBhIHVua25vd24gY29uc3QKK1ZBTFVFUyAoQ0FTVCgnZXJy b3InIEFTIGludGVnZXIgRVJST1IgT04gQ09OVkVSU0lPTiBFUlJPUikpOyAtLSBlcnJvcgorVkFM VUVTIChDQVNUKCdlcnJvcicgQVMgaW50ZWdlciBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpKTsK K1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIGludGVnZXIgREVGQVVMVCA0MiBPTiBDT05WRVJTSU9O IEVSUk9SKSk7CitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgMTggT04gQ09OVkVSU0lP TiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgc3VtKDEpIE9OIENPTlZF UlNJT04gRVJST1IpOyAtLSBlcnJvcgorU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUIHN1 bSgxKSBvdmVyKCkgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitTRUxFQ1QgQ0FTVCgn YScgYXMgaW50IERFRkFVTFQgKFNFTEVDVCBOVUxMKSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0g ZXJyb3IKK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCAnYicgT04gQ09OVkVSU0lPTiBF UlJPUik7IC0tIGVycm9yCitTRUxFQ1QgQ0FTVCgnYSc6OmludCBhcyBpbnQgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorCistLSB0aGUgZGVmYXVsdCBleHByZXNz aW9u4oCZcyBjb2xsYXRpb24gc2hvdWxkIG1hdGNoIHRhcmdldCB0eXBlIGNvbGxhdGlvbgorVkFM VUVTIChDQVNUKCdlcnJvcicgQVMgdGV4dCBERUZBVUxUICcxJyBDT0xMQVRFICJDIiBPTiBDT05W RVJTSU9OIEVSUk9SKSk7CisKK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIGludDJ2ZWN0b3IgREVG QVVMVCAnMSAzJyAgT04gQ09OVkVSU0lPTiBFUlJPUikpOworVkFMVUVTIChDQVNUKCdlcnJvcicg QVMgaW50MnZlY3RvcltdIERFRkFVTFQgJ3sxIDN9JyAgT04gQ09OVkVSU0lPTiBFUlJPUikpOwor CistLSBzb3VyY2UgZXhwcmVzc2lvbiBjb250YWluIHN1YnF1ZXJ5CitTRUxFQ1QgQ0FTVCgoU0VM RUNUIGIgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMSksIChWQUxVRVMoJ0gnKSkgcyhiKSkKKyAg ICAgICAgICAgIEFTIGludDJ2ZWN0b3JbXSBERUZBVUxUICd7MSAzfScgIE9OIENPTlZFUlNJT04g RVJST1IpOworU0VMRUNUIENBU1QoKFNFTEVDVCBBUlJBWSgoU0VMRUNUIGIgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgMikgZywgKFZBTFVFUygnSCcpKSBzKGIpKSkpCisgICAgICAgICAgICBBUyBJ TlRbXQorICAgICAgICAgICAgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCitD UkVBVEUgRlVOQ1RJT04gcmV0X2ludDgoKSBSRVRVUk5TIEJJR0lOVCBBUworJCQKK0JFR0lOIFJF VFVSTiAyMTQ3NDgzNjQ4OyBFTkQ7CiskJAorTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEU7CisK K1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCByZXRfaW50OCgpIE9OIENPTlZFUlNJT04g RVJST1IpOyAtLSBlcnJvcgorU0VMRUNUIENBU1QoJ2EnIGFzIGRhdGUgREVGQVVMVCByZXRfaW50 OCgpIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorCistLSBERUZBVUxUIGV4cHJlc3Np b24gY2Fubm90IGJlIHNldC1yZXR1cm5pbmcKK0NSRUFURSBGVU5DVElPTiByZXRfc2V0aW50KCkg UkVUVVJOUyBTRVRPRiBpbnRlZ2VyIEFTCiskJAorQkVHSU4gUkVUVVJOIFFVRVJZIEVYRUNVVEUg J3NlbGVjdCAxIHVuaW9uIGFsbCBzZWxlY3QgMSc7IEVORDsKKyQkCitMQU5HVUFHRSBwbHBnc3Fs IElNTVVUQUJMRTsKKworQ1JFQVRFIFRBQkxFIHRjYXN0MChhIElOVCwgYiBpbnQpOworSU5TRVJU IElOVE8gdGNhc3QwIFZBTFVFUygxLDIpLCAoNjU1MzYsMyk7CitTRVQgaml0X2Fib3ZlX2Nvc3Qg PSAwOworU0VMRUNUIENBU1QoYSBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBGUk9NIHRjYXN0MDsKK1NFVCBqaXRfYWJvdmVfY29zdCBUTyBERUZBVUxUOworU0VMRUNU IENBU1QoYSBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRj YXN0MDsKK1NFTEVDVCBDQVNUKFJPVygxLDIpIEFTIHRjYXN0MCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDAgYXMgdDsKK0RST1AgVEFCTEUgdGNhc3QwOworCitT RUxFQ1QgQ0FTVCgxMi4xMTEgYXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpY19zY2FsZTsKKworQ1JFQVRFIFRBQkxFIHRjYXN0KGEg dGV4dFtdLCBiIGludCBHRU5FUkFURUQgQlkgREVGQVVMVCBBUyBJREVOVElUWSk7CitJTlNFUlQg SU5UTyB0Y2FzdCBWQUxVRVMgKCd7MTJ9JyksICgnezEsYSwgYn0nKSwgKCd7ezEsMn0sIHtjLGR9 fScpLCAoJ3sxM30nKTsKK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCByZXRfc2V0aW50 KCkgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDsgLS0gZXJyb3IKK1NFTEVDVCBDQVNU KHQgQVMgdGV4dFtdIERFRkFVTFQgJ3syMSwyMiwgJyB8fCBiIHx8ICd9JyBPTiBDT05WRVJTSU9O IEVSUk9SKSBGUk9NIHRjYXN0IGFzIHQ7CitTRUxFQ1QgQ0FTVCh0LmEgQVMgaW50W10gREVGQVVM VCAnezIxLDIyfSc6OmludFtdIHx8IGIgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdCBh cyB0OworCistLSBUZXN0IG5lc3RlZCB0eXBlIGNhc3RzOyBhbGwgZXhwcmVzc2lvbnMgd2lsbCBi ZSBldmFsdWF0ZWQgaW4gYW4gZXJyb3Itc2FmZSBtYW5uZXIKK0NSRUFURSBET01BSU4gZF9ub3Rh IEFTIHRleHQgQ0hFQ0sgKFZBTFVFIDw+ICdhJyk7CitDUkVBVEUgVEFCTEUgdGNhc3QxKGEgdGV4 dCwgYiB0ZXh0W10sIGMgaW50LCBkIGludDgsIGUgaW50OFtdKTsKK0lOU0VSVCBJTlRPIHRjYXN0 MShhLCBiLCBkLCBlKSB2YWx1ZXMoJ2EnLCAne2F9JywgMjE0NzQ4MzY0OCwgJ3syMTQ3NDgzNjQ4 fScpOworU0VMRUNUIENBU1QgKENBU1QoYSBBUyBpbnQpIEFTIHRleHQgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOworU0VMRUNUIENBU1QgKENBU1QoJ2EnIEFT IGludCkgQVMgdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2Fz dDE7ICAtLSBlcnJvcgorU0VMRUNUIENBU1QgKENBU1QoJ2EnOjp0ZXh0IEFTIGludCkgQVMgdGV4 dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7IC0tIG9rCitT RUxFQ1QgQ0FTVCAoQ0FTVChhIEFTIGRfbm90YSkgQVMgdGV4dCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CitTRUxFQ1QgQ0FTVCAoQ0FTVCgnYScgQVMgZF9u b3RhKSBBUyB0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0 MTsKKworU0VMRUNUIENBU1QgKENBU1QoZCBBUyBpbnQpIEFTIHRleHQgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOworU0VMRUNUIENBU1QgKENBU1QoJzIxNDc0 ODM2NDgnOjppbnQ4IEFTIGludCkgQVMgdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgRlJPTSB0Y2FzdDE7CisKK1NFTEVDVCBDQVNUIChDQVNUKCd7YX0nOjp0ZXh0W10gQVMg aW50W10pIEFTIHRleHRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0 Y2FzdDE7CitTRUxFQ1QgQ0FTVCAoQ0FTVChiIEFTIGludFtdKSBBUyB0ZXh0W10gREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOworU0VMRUNUIENBU1QgKENBU1Qo YiBBUyBkX25vdGFbXSkgQVMgdGV4dFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBGUk9NIHRjYXN0MTsKK1NFTEVDVCBDQVNUIChDQVNUKGUgQVMgaW50W10pIEFTIHRleHRbXSBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CisKKy0tIHRlc3Qg ZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yIGhhbmRsZSBuZXN0ZWQgQXJyYXlDb2VyY2VF eHByCitTRUxFQ1QgQ0FTVCgne2F9Jzo6dGV4dFtdIEFTIGludFtdIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKK1NFTEVDVCBDQVNUKENBU1QoJ3thfSc6OnRl eHRbXSBBUyBkYXRlW10pIEFTIGludFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBGUk9NIHRjYXN0MTsKKworLS0gdGVzdCB3aXRoIHVzZXItZGVmaW5lZCB0eXBlLCBkb21haW4s IGFycmF5IG92ZXIgZG9tYWluLCBkb21haW4gb3ZlciBhcnJheQorQ1JFQVRFIERPTUFJTiBkX2lu dDQyIGFzIGludCBjaGVjayAodmFsdWUgPSA0MikgTk9UIE5VTEw7CitDUkVBVEUgRE9NQUlOIGRf aW50NDJhcnIgYXMgZF9pbnQ0MltdOworQ1JFQVRFIERPTUFJTiBkX2ludDQyYXJyMSBhcyBkX2lu dDQyYXJyOworQ1JFQVRFIERPTUFJTiBkX2ludDggYXMgaW50OCBjaGVjayAodmFsdWUgPiAwKTsK K0NSRUFURSBET01BSU4gZF9pbnQ4YXJyIGFzIGRfaW50OFtdOworQ1JFQVRFIERPTUFJTiBkX2No YXIzX25vdF9udWxsIGFzIGNoYXIoMykgTk9UIE5VTEw7CitDUkVBVEUgRE9NQUlOIGRfdmFyY2hh ciBhcyB2YXJjaGFyKDMpIE5PVCBOVUxMOworQ1JFQVRFIERPTUFJTiBkX2ludF9hcnIgYXMgaW50 W10gY2hlY2sgKHZhbHVlID0gJ3s0MSwgNDN9JykgTk9UIE5VTEw7CitDUkVBVEUgVFlQRSBjb21w X2RvbWFpbl93aXRoX3R5cG1vZCBBUyAoYSBkX2NoYXIzX25vdF9udWxsLCBiIGludCk7CitDUkVB VEUgVFlQRSBjb21wMiBBUyAoYSBkX3ZhcmNoYXIpOworQ1JFQVRFIERPTUFJTiBkX251bWVyaWMg YXMgbnVtZXJpYyg0LDQpOworCitTRUxFQ1QgQ0FTVCgxLjA6OmZsb2F0NCBBUyBkX251bWVyaWMg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ3sxLjB9JyBB UyBudW1lcmljKDQsMSlbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxF Q1QgQ0FTVCgnezAuMSwgMS4wfScgQVMgZF9udW1lcmljW10gREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpOworCitTRUxFQ1QgQ0FTVCgxMSBBUyBkX2ludDQyIERFRkFVTFQgNDEgT04g Q09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitTRUxFQ1QgQ0FTVChOVUxMIEFTIGRfaW50NDIg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorU0VMRUNUIENBU1Qo MTEgQVMgZF9pbnQ0MiBERUZBVUxUIDQyIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENB U1QoTlVMTCBBUyBkX2ludDQyIERFRkFVTFQgNDIgT04gQ09OVkVSU0lPTiBFUlJPUik7CisKK1NF TEVDVCBDQVNUKEFSUkFZWzQyXTo6ZF9pbnQ0MmFycjEgQVMgZF9pbnQ4IERFRkFVTFQgJzEnIE9O IENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoQVJSQVlbNDJdOjpkX2ludDQyYXJyMSBB UyBkX2ludDhbXSBERUZBVUxUICd7MX0nIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENB U1QoQVJSQVlbNDJdOjpkX2ludDQyYXJyMSBBUyBkX2ludDhhcnIgREVGQVVMVCAnezF9JyBPTiBD T05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKEFSUkFZWzQyXTo6ZF9pbnQ0MmFycjEgQVMg ZF9pbnQ4YXJyW10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCitTRUxFQ1Qg Q0FTVChBUlJBWVs0Miw0MV0gQVMgZF9pbnQ0MltdIERFRkFVTFQgJ3s0MiwgNDJ9JyBPTiBDT05W RVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKEFSUkFZWzQyLDQxXSBBUyBkX2ludF9hcnIgREVG QVVMVCAnezQxLCA0M30nIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoQVJSQVlb NDIsIDQxXTo6ZF9pbnQ0MmFycjEgQVMgZF9pbnQ4YXJyIERFRkFVTFQgJ3sxLDIsM30nIE9OIENP TlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoQVJSQVlbNDIsIDQxXSBBUyBkX2ludDQyYXJy MSBERUZBVUxUICd7NDIsIDQyfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QKKyAgICBD QVNUKENBU1QoQVJSQVlbQ0FTVChBUlJBWVs0MiwgNDJdIEFTIGRfaW50NDJhcnIpXSBBUyBkX2lu dDQyYXJyMVtdKSBBUyBkX2ludDhhcnJbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP Uik7CisKK1NFTEVDVCBDQVNUKCcoTlVMTCknIEFTIGNvbXAyIERFRkFVTFQgJygxMjMyKScgT04g Q09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitTRUxFQ1QgQ0FTVCgnKE5VTEwpJyBBUyBjb21w MiBERUZBVUxUICcoMTIzKScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnKCw0 MiknIEFTIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcoTlVMTCw0MiknIEFTIGNvbXBfZG9tYWluX3dpdGhfdHlw bW9kIERFRkFVTFQgJygxLDIpJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCco TlVMTCw0MiknIEFTIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kIERFRkFVTFQgJygxMjM0LDIpJyBP TiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK1NFTEVDVCBDQVNUKFJPVyhOVUxMLDQyKSBB UyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP Uik7IC0tIGVycm9yCisKKy0tIHRlc3QgYXJyYXkgY29lcmNlCitTRUxFQ1QgQ0FTVChhcnJheVsn YSc6OnRleHRdIEFTIGludFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NF TEVDVCBDQVNUKGFycmF5WydhJ10gQVMgaW50W10gREVGQVVMVCBBUlJBWVsxXSBPTiBDT05WRVJT SU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKGFycmF5WzExLjEyXSBBUyBkYXRlW10gREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoYXJyYXlbMTExMTExMTExMTEx MTExMTFdIEFTIGludFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVD VCBDQVNUKGFycmF5W1snYWJjJ10sWzQ1Nl1dIEFTIGludFtdIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCd7MTIzLGFiYyw0NTZ9JyBBUyBpbnRbXSBERUZB VUxUICd7LTc4OX0nIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ3syMzQsZGVm LDU2N30nOjp0ZXh0W10gQVMgaW50ZWdlcltdIERFRkFVTFQgJ3stMTAxMX0nIE9OIENPTlZFUlNJ T04gRVJST1IpOworU0VMRUNUIENBU1QoQVJSQVlbWycxJ10sIFsndGhyZWUnXSxbJ2EnXV0gQVMg aW50W10gREVGQVVMVCAnezEsMn0nIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1Qo QVJSQVlbWycxJywgJzInXSwgWyd0aHJlZScsICdhJ11dIEFTIGludFtdIERFRkFVTFQgJ3syMSwy Mn0nIE9OIENPTlZFUlNJT04gRVJST1IpOworLS0gZXJyb3I6IGB0aHJlZSc6OmludGAgd2lsbCBm YWlsIGVhcmxpZXIKK1NFTEVDVCBDQVNUKEFSUkFZW1snMScsICcyJ10sIFsndGhyZWUnOjppbnQs ICdhJ11dIEFTIGludFtdIERFRkFVTFQgJ3syMSwyMn0nIE9OIENPTlZFUlNJT04gRVJST1IpOwor U0VMRUNUIENBU1QoQVJSQVlbMSwgJ3RocmVlJzo6aW50XSBBUyBpbnRbXSBERUZBVUxUICd7MjEs MjJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKworLS0gc2FmZSBjYXN0IHdpdGggZ2VvbWV0cnkg ZGF0YSB0eXBlCitTRUxFQ1QgQ0FTVCgnKDEsMiknOjpwb2ludCBBUyBib3ggREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ1soTmFOLDEpLChOYU4saW5maW5p dHkpXSc6OmxzZWcgQVMgcG9pbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOwor U0VMRUNUIENBU1QoJ1soMWUrMzAwLEluZmluaXR5KSwoMWUrMzAwLEluZmluaXR5KV0nOjpsc2Vn IEFTIHBvaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNU KCdbKDEsMiksKDMsNCldJzo6cGF0aCBhcyBwb2x5Z29uIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcoTmFOLDEuMCxOYU4saW5maW5pdHkpJzo6Ym94IEFT IHBvaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCco Mi4wLDIuMCwwLjAsMC4wKSc6OmJveCBBUyBsc2VnIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcoMi4wLDIuMCwwLjAsMC4wKSc6OmJveCBBUyBwb2x5Z29u IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcoMi4wLDIu MCwwLjAsMC4wKSc6OmJveCBBUyBwYXRoIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KTsKK1NFTEVDVCBDQVNUKCcoMi4wLGluZmluaXR5LE5hTixpbmZpbml0eSknOjpib3ggQVMgY2ly Y2xlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcoTmFO LDAuMCksKDIuMCw0LjApLCgwLjAsaW5maW5pdHkpJzo6cG9seWdvbiBBUyBwb2ludCBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnKDIuMCwwLjApLCgyLjAs NC4wKSwoMC4wLDAuMCknOjpwb2x5Z29uIEFTIHBhdGggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpOworU0VMRUNUIENBU1QoJygyLjAsMC4wKSwoMi4wLDQuMCksKDAuMCwwLjApJzo6 cG9seWdvbiBBUyBib3ggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNU IENBU1QoJyhOYU4saW5maW5pdHkpLCgyLjAsNC4wKSwoMC4wLGluZmluaXR5KSc6OnBvbHlnb24g QVMgY2lyY2xlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNU KCc8KDUsMSksMz4nOjpjaXJjbGUgQVMgcG9pbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpOworU0VMRUNUIENBU1QoJzwoMyw1KSwwPic6OmNpcmNsZSBhcyBib3ggREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCistLSBjYXN0IGZyb20gdHlwZSBjaXJjbGUgdG8g dHlwZSBwb2x5Z29uIGlzIGltcGxlbWVudGVkIGFzIGFuIFNRTCBmdW5jdGlvbiwgd2hpY2ggY2Fu bm90IGJlIGVycm9yLXNhZmUKK1NFTEVDVCBDQVNUKCc8KDMsNSksMD4nOjpjaXJjbGUgYXMgcG9s eWdvbiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisKKy0tIFNhZmUgdHlwZSBj YXN0IHN1cHBvcnRzIG1vbmV5IGFzIGEgdGFyZ2V0IHR5cGUsIGJ1dCBub3QgYXMgYSBzb3VyY2Ug dHlwZS4KK1NFTEVDVCBDQVNUKCcxMjM0NTY3ODkwMTIzNDU2NzgnOjpudW1lcmljIEFTIE1PTkVZ IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcxMjM0NTY3 ODkwMTIzNDU2NzgnOjppbnQ4IEFTIE1PTkVZIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKTsKK1NFTEVDVCBDQVNUKCcyMTQ3NDgzNjQ3Jzo6aW50NCBBUyBNT05FWSBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnLTIxNDc0ODM2NDgnOjppbnQ0 IEFTIE1PTkVZIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNU KCctMCc6OmludDQgQVMgTU9ORVkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOwor U0VMRUNUIENBU1QoTlVMTDo6bW9uZXkgQVMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChOVUxMOjptb25leVtdIEFTIG51bWVyaWNbXSBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisKKy0tIHNhZmUgY2FzdCBmcm9tIGJ5dGVh IHR5cGUgdG8gb3RoZXIgZGF0YSB0eXBlcworU0VMRUNUIENBU1QgKCdceDExMjIzMzQ0NTU2Njc3 ODg5OSc6OmJ5dGVhIEFTIGludDggREVGQVVMVCAxOSBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NF TEVDVCBDQVNUKCdceDEyMzQ1Njc4OUEnOjpieXRlYSBBUyBpbnQ0IERFRkFVTFQgMjAgT04gQ09O VkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnXHgxMjM0NTYnOjpieXRlYSBBUyBpbnQyIERF RkFVTFQgMjEgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnXHgxMjM0NTY3ODkw YWJjZGVmJzo6Ynl0ZWEgQVMgdXVpZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7 CisKKy0tIHNhZmUgY2FzdCBmcm9tIHV1aWQgdHlwZSB0byBvdGhlciBkYXRhIHR5cGVzCitTRUxF Q1QgQ0FTVCgnNWIzNTM4MGEtNzE0My00OTEyLTliNTUtZjMyMjY5OWM2NzcwJzo6dXVpZCBBUyBi eXRlYSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisKKy0tIHNhZmUgY2FzdCBm cm9tIGJpdCB0eXBlIHRvIG90aGVyIGRhdGEgdHlwZXMKK1NFTEVDVCBDQVNUKCcxMTExMTExMTEx MDAwMDEnOjpiaXQoMTAwKSBBUyBJTlQgREVGQVVMVCAyMiBPTiBDT05WRVJTSU9OIEVSUk9SKTsK K1NFTEVDVCBDQVNUICgnMTExMTExMTExMTAwMDAxJzo6Yml0KDEwMCkgQVMgSU5UOCBERUZBVUxU IDIzIE9OIENPTlZFUlNJT04gRVJST1IpOworCistLSBzYWZlIGNhc3QgZnJvbSB0ZXh0IHR5cGUg dG8gb3RoZXIgZGF0YSB0eXBlcworc2VsZWN0IENBU1QoJ2EuYi5jLmQnOjp0ZXh0IGFzIHJlZ2Ns YXNzIGRlZmF1bHQgTlVMTCBvbiBjb252ZXJzaW9uIGVycm9yKTsKKworQ1JFQVRFIFRBQkxFIHRl c3Rfc2FmZWNhc3QoY29sMCB0ZXh0KTsKK0lOU0VSVCBJTlRPIHRlc3Rfc2FmZWNhc3QoY29sMCkg VkFMVUVTICgnPHZhbHVlPm9uZTwvdmFsdWUnKTsKKworU0VMRUNUIGNvbDAgYXMgdGV4dCwKKyAg ICAgICBDQVNUKGNvbDAgQVMgcmVnY2xhc3MgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX3JlZ2NsYXNzLAorICAgICAgIENBU1QoY29sMCBBUyByZWdjbGFzcyBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgSVMgTlVMTCBhcyBleHBlY3RfdHJ1ZSwKKyAgICAg ICBDQVNUKGNvbDAgQVMgImNoYXIiICBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9fY2hhciwKKyAgICAgICBDQVNUKGNvbDAgQVMgbmFtZSBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgdG9fbmFtZQorRlJPTSB0ZXN0X3NhZmVjYXN0OworCitTRUxFQ1Qg Q0FTVCgnMTkyLjE2OC4xLngnIGFzIGluZXQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOworU0VMRUNUIENBU1QoJzE5Mi4xNjguMS4yLzMwJyBhcyBjaWRyIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcyMjowMDo1YzowODo1NTowODowMTow Mic6Om1hY2FkZHI4IGFzIG1hY2FkZHIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OworCistLSBzYWZlIGNhc3QgYmV0d2VlZW4gcmFuZ2UgZGF0YSB0eXBlcworU0VMRUNUIENBU1Qo J1sxLDJdJzo6aW50NHJhbmdlIEFTIGludDRtdWx0aXJhbmdlIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCdbMSwyXSc6OmludDhyYW5nZSBBUyBpbnQ4bXVs dGlyYW5nZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgn WzEsMl0nOjpudW1yYW5nZSAgQVMgbnVtbXVsdGlyYW5nZSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnWy1pbmZpbml0eSxpbmZpbml0eV0nOjpkYXRlcmFu Z2UgQVMgZGF0ZW11bHRpcmFuZ2UgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOwor U0VMRUNUIENBU1QoJ1staW5maW5pdHksaW5maW5pdHldJzo6dHNyYW5nZSBBUyB0c211bHRpcmFu Z2UgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ1staW5m aW5pdHksaW5maW5pdHldJzo6dHN0enJhbmdlIEFTIHRzdHptdWx0aXJhbmdlIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKworLS0gc2FmZSBjYXN0IGJldHdlZWVuIG51bWVyaWMg ZGF0YSB0eXBlcworQ1JFQVRFIFRBQkxFIHRlc3Rfc2FmZWNhc3QxKAorICBjb2wxIGZsb2F0NCwg Y29sMiBmbG9hdDgsIGNvbDMgbnVtZXJpYywgY29sNCBudW1lcmljW10sCisgIGNvbDUgaW50MiBk ZWZhdWx0IDMyNzY3LAorICBjb2w2IGludDQgZGVmYXVsdCAzMjc2OCwKKyAgY29sNyBpbnQ4IGRl ZmF1bHQgNDI5NDk2NzI5Nik7CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0MSBWQUxVRVMoJzEx LjEyMzQnLCAnMTEuMTIzNCcsICc5MjIzMzcyMDM2ODU0Nzc1ODA4JywgJ3sxMS4xMjM0fSc6Om51 bWVyaWNbXSk7CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0MSBWQUxVRVMoJ2luZicsICdpbmYn LCAnaW5mJywgJ3sxMS4xMjM0LCAxMiwgaW5mLCBOYU59Jzo6bnVtZXJpY1tdKTsKK0lOU0VSVCBJ TlRPIHRlc3Rfc2FmZWNhc3QxIFZBTFVFUygnLWluZicsICctaW5mJywgJy1pbmYnLCAnezExLjEy MzQsIDEyLCAtaW5mLCBOYU59Jzo6bnVtZXJpY1tdKTsKK0lOU0VSVCBJTlRPIHRlc3Rfc2FmZWNh c3QxIFZBTFVFUygnTmFOJywgJ05hTicsICdOYU4nLCAnezExLjEyMzQsIDEyLCAtaW5mLCBOYU59 Jzo6bnVtZXJpY1tdKTsKKworU0VMRUNUIGNvbDUgYXMgaW50MiwKKyAgICAgICBDQVNUKGNvbDUg QVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAg ICAgICBDQVNUKGNvbDUgQVMgaW50NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9faW50NCwKKyAgICAgICBDQVNUKGNvbDUgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b19vaWQsCisgICAgICAgQ0FTVChjb2w1IGFzIGludDggREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDgsCisgICAgICAgQ0FTVChjb2w1 IGFzIGZsb2F0NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0 LAorICAgICAgIENBU1QoY29sNSBhcyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAgICBDQVNUKGNvbDUgYXMgbnVtZXJpYyBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNv bDUgYXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg dG9fbnVtZXJpY19zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MTsKKworU0VMRUNUIGNvbDYgYXMg aW50NCwKKyAgICAgICBDQVNUKGNvbDYgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgYXMgdG9faW50MiwKKyAgICAgICBDQVNUKGNvbDYgQVMgaW50NCBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50NCwKKyAgICAgICBDQVNUKGNvbDYgQVMg b2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19vaWQsCisgICAgICAg Q0FTVChjb2w2IGFzIGludDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X2ludDgsCisgICAgICAgQ0FTVChjb2w2IGFzIGZsb2F0NCBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0LAorICAgICAgIENBU1QoY29sNiBhcyBmbG9hdDggREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAgICBDQVNU KGNvbDYgYXMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f bnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDYgYXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpY19zY2FsZQorRlJPTSB0ZXN0X3NhZmVj YXN0MTsKKworU0VMRUNUIGNvbDcgYXMgaW50OCwKKyAgICAgICBDQVNUKGNvbDcgQVMgaW50MiBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAgICAgICBDQVNU KGNvbDcgQVMgaW50NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50 NCwKKyAgICAgICBDQVNUKGNvbDcgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b19vaWQsCisgICAgICAgQ0FTVChjb2w3IGFzIGludDggREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDgsCisgICAgICAgQ0FTVChjb2w3IGFzIGZsb2F0 NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0LAorICAgICAg IENBU1QoY29sNyBhcyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX2Zsb2F0OCwKKyAgICAgICBDQVNUKGNvbDcgYXMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDcgYXMgbnVt ZXJpYygxMCwxKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJp Y19zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MTsKKworU0VMRUNUIGNvbDMgYXMgbnVtZXJpYywK KyAgICAgICBDQVNUKGNvbDMgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9faW50MiwKKyAgICAgICBDQVNUKGNvbDMgQVMgaW50NCBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50NCwKKyAgICAgICBDQVNUKGNvbDMgQVMgb2lkIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19vaWQsCisgICAgICAgQ0FTVChj b2wzIGFzIGludDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDgs CisgICAgICAgQ0FTVChjb2wzIGFzIGZsb2F0NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9fZmxvYXQ0LAorICAgICAgIENBU1QoY29sMyBhcyBmbG9hdDggREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAgICBDQVNUKGNvbDMg YXMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJp YywKKyAgICAgICBDQVNUKGNvbDMgYXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpY19zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MTsK KworU0VMRUNUIGNvbDQgYXMgbnVtX2FyciwKKyAgICAgICBDQVNUKGNvbDQgQVMgaW50MltdIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBpbnQyYXJyLAorICAgICAgIENBU1Qo Y29sNCBBUyBpbnQ0W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGludDRh cnIsCisgICAgICAgQ0FTVChjb2w0IGFzIGludDhbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgYXMgaW50OGFyciwKKyAgICAgICBDQVNUKGNvbDQgYXMgZmxvYXQ0W10gREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGY0YXJyLAorICAgICAgIENBU1QoY29sNCBh cyBmbG9hdDhbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgZjhhcnIsCisg ICAgICAgQ0FTVChjb2w0IGFzIG51bWVyaWMoMTAsMSlbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgbnVtYXJyCitGUk9NIHRlc3Rfc2FmZWNhc3QxOworCitTRUxFQ1QgY29s MSBhcyBmbG9hdDQsCisgICAgICAgQ0FTVChjb2wxIEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDIsCisgICAgICAgQ0FTVChjb2wxIEFTIGludDQgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDQsCisgICAgICAgQ0FTVChj b2wxIEFTIG9pZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fb2lkLAor ICAgICAgIENBU1QoY29sMSBhcyBpbnQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyB0b19pbnQ4LAorICAgICAgIENBU1QoY29sMSBhcyBmbG9hdDQgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAgICBDQVNUKGNvbDEgYXMgZmxv YXQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDgsCisgICAg ICAgQ0FTVChjb2wxIGFzIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IGFzIHRvX251bWVyaWMsCisgICAgICAgQ0FTVChjb2wxIGFzIG51bWVyaWMoMTAsMSkgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWNfc2NhbGUKK0ZST00gdGVz dF9zYWZlY2FzdDE7CisKK1NFTEVDVCBjb2wyIGFzIGZsb2F0OCwKKyAgICAgICBDQVNUKGNvbDIg QVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAg ICAgICBDQVNUKGNvbDIgQVMgaW50NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9faW50NCwKKyAgICAgICBDQVNUKGNvbDIgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b19vaWQsCisgICAgICAgQ0FTVChjb2wyIGFzIGludDggREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDgsCisgICAgICAgQ0FTVChjb2wy IGFzIGZsb2F0NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0 LAorICAgICAgIENBU1QoY29sMiBhcyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAgICBDQVNUKGNvbDIgYXMgbnVtZXJpYyBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNv bDIgYXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg dG9fbnVtZXJpY19zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MTsKKworLS0gc2FmZSB0eXBlIGNh c3QgZm9yIHR5cGUgZGF0ZS90aW1lc3RhbXAvdGltZXN0YW1wdHovaW50ZXJ2YWwKK0NSRUFURSBU QUJMRSB0ZXN0X3NhZmVjYXN0MigKKyAgY29sMCBkYXRlLCBjb2wxIHRpbWVzdGFtcCwgY29sMiB0 aW1lc3RhbXB0eiwKKyAgY29sMyBpbnRlcnZhbCwgY29sNCB0aW1lLCBjb2w1IHRpbWV0eik7CitJ TlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0MiBWQUxVRVMKKygnLWluZmluaXR5JywgJy1pbmZpbml0 eScsICctaW5maW5pdHknLCAnLWluZmluaXR5JywKKyAgJzIwMDMtMDMtMDcgMTU6MzY6MzkgQW1l cmljYS9OZXdfWW9yaycsICcyMDAzLTA3LTA3IDE1OjM2OjM5IEFtZXJpY2EvTmV3X1lvcmsnKSwK KygnLWluZmluaXR5JywgJ2luZmluaXR5JywgJ2luZmluaXR5JywgJ2luZmluaXR5JywgJzExOjU5 OjU5Ljk5IFBNJywgJzExOjU5OjU5Ljk5IFBNIFBEVCcpOworCitTRUxFQ1QgY29sMCBhcyBkYXRl LAorICAgICAgIENBU1QoY29sMCBBUyB0aW1lc3RhbXB0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9fdGltZXN0YW1wdHosCisgICAgICAgQ0FTVChjb2wwIEFTIGRhdGUg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2RhdGUsCisgICAgICAgQ0FT VChjb2wwIEFTIHRpbWUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3Rp bWVzLAorICAgICAgIENBU1QoY29sMCBBUyB0aW1ldHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX3RpbWV0eiwKKyAgICAgICBDQVNUKGNvbDAgQVMgdGltZXN0YW1wKDIp IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXBfc2NhbGUK K0ZST00gdGVzdF9zYWZlY2FzdDI7CisKK1NFTEVDVCBjb2wxIGFzIHRpbWVzdGFtcCwKKyAgICAg ICBDQVNUKGNvbDEgQVMgdGltZXN0YW1wdHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX3RpbWVzdGFtcHR6LAorICAgICAgIENBU1QoY29sMSBBUyBkYXRlIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19kYXRlLAorICAgICAgIENBU1QoY29sMSBB UyB0aW1lIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lcywKKyAg ICAgICBDQVNUKGNvbDEgQVMgdGltZXR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyB0b190aW1ldHosCisgICAgICAgQ0FTVChjb2wxIEFTIHRpbWVzdGFtcCgyKSBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXN0YW1wX3NjYWxlCitGUk9NIHRl c3Rfc2FmZWNhc3QyOworCitTRUxFQ1QgY29sMiBhcyB0aW1lc3RhbXB0eiwKKyAgICAgICBDQVNU KGNvbDIgQVMgdGltZXN0YW1wdHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX3RpbWVzdGFtcHR6LAorICAgICAgIENBU1QoY29sMiBBUyBkYXRlIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19kYXRlLAorICAgICAgIENBU1QoY29sMiBBUyB0aW1l IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lcywKKyAgICAgICBD QVNUKGNvbDIgQVMgdGltZXR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b190aW1ldHosCisgICAgICAgQ0FTVChjb2wyIEFTIHRpbWVzdGFtcCgyKSBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXN0YW1wX3NjYWxlCitGUk9NIHRlc3Rfc2Fm ZWNhc3QyOworCitTRUxFQ1QgY29sMyBhcyBpbnRlcnZhbCwKKyAgICAgICBDQVNUKGNvbDMgQVMg dGltZXN0YW1wdHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVz dGFtcHR6LAorICAgICAgIENBU1QoY29sMyBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyB0b19kYXRlLAorICAgICAgIENBU1QoY29sMyBBUyB0aW1lIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lcywKKyAgICAgICBDQVNUKGNvbDMg QVMgdGltZXR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1ldHos CisgICAgICAgQ0FTVChjb2wzIEFTIHRpbWVzdGFtcCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9fdGltZXN0YW1wX3NjYWxlLAorICAgICAgIENBU1QoY29sMyBBUyBp bnRlcnZhbCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50ZXJ2 YWxfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDI7CisKK1NFTEVDVCBjb2w0IGFzIHRpbWUsCisg ICAgICAgQ0FTVChjb2w0IEFTIHRpbWUoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX3RpbWVzLAorICAgICAgIENBU1QoY29sNCBBUyB0aW1ldHogREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIElTIE5PVCBOVUxMIGFzIHRvX3RpbWV0eiwKKyAgICAgICBD QVNUKGNvbDQgQVMgaW50ZXJ2YWwoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IGFzIHRvX2ludGVydmFsLAorICAgICAgIENBU1QoY29sNCBBUyBpbnRlcnZhbCgyKSBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50ZXJ2YWxfc2NhbGUKK0ZST00gdGVz dF9zYWZlY2FzdDI7CisKK1NFTEVDVCBjb2w1IGFzIHRpbWV0eiwKKyAgICAgICBDQVNUKGNvbDUg QVMgdGltZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZSwKKyAg ICAgICBDQVNUKGNvbDUgQVMgdGltZSgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9fdGltZV9zY2FsZSwKKyAgICAgICBDQVNUKGNvbDUgQVMgdGltZXR6IERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1ldHosCisgICAgICAgQ0FTVChjb2w1 IEFTIHRpbWV0eig2KSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGlt ZXR6X3NjYWxlLAorICAgICAgIENBU1QoY29sNSBBUyBpbnRlcnZhbCBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50ZXJ2YWwsCisgICAgICAgQ0FTVChjb2w1IEFTIGlu dGVydmFsKDIpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnRlcnZh bF9zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MjsKKworQ1JFQVRFIFRBQkxFIHRlc3Rfc2FmZWNh c3QzKGNvbDAganNvbmIpOworSU5TRVJUIElOVE8gdGVzdF9zYWZlY2FzdDMoY29sMCkgVkFMVUVT ICgnInRlc3QiJyk7CitTRUxFQ1QgY29sMCBhcyBqc29uYiwKKyAgICAgICBDQVNUKGNvbDAgQVMg aW50ZWdlciBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50ZWdlciwK KyAgICAgICBDQVNUKGNvbDAgQVMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDAgQVMgYmlnaW50IERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4LAorICAgICAgIENBU1QoY29sMCBB UyBmbG9hdDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0NCwK KyAgICAgICBDQVNUKGNvbDAgQVMgZmxvYXQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChjb2wwIEFTIGJvb2xlYW4gREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Jvb2wsCisgICAgICAgQ0FTVChjb2wwIEFT IHNtYWxsaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19zbWFsbGlu dAorRlJPTSB0ZXN0X3NhZmVjYXN0MzsKKworLS0gdGVzdCBkZXBhcnNlCitTRVQgZGF0ZXN0eWxl IFRPIElTTywgWU1EOworQ1JFQVRFIFZJRVcgc2FmZWNhc3R2aWV3IEFTCitTRUxFQ1QgQ0FTVCgn MTIzNCcgYXMgY2hhcigzKSBERUZBVUxUIC0xMTExIE9OIENPTlZFUlNJT04gRVJST1IpLAorICAg ICAgIENBU1QoMSBhcyBkYXRlIERFRkFVTFQgKCgnMjAyNS1EZWMtMDYnOjpkYXRlICsgcmFuZG9t KG1pbj0+MSwgbWF4PT4xOjppbnQpKSkgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgY2FzdDAsCisg ICAgICAgQ0FTVChBUlJBWVtbJzEnXSwgWyd0aHJlZSddLFsnYSddXSBBUyBpbnRbXSBERUZBVUxU ICd7MSwyfScgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgY2FzdDEsCisgICAgICAgQ0FTVChBUlJB WVtbJzEnLCAnMiddLCBbJ3RocmVlJywgJ2EnXV0gQVMgZGF0ZVtdIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyBjYXN0MiwKKyAgICAgICBDQVNUKEFSUkFZWyd0aHJlZSddIEFT IElOVFtdIERFRkFVTFQgJ3sxLDJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBjYXN0MzsKK1xz diBzYWZlY2FzdHZpZXcKK1NFTEVDVCAqIEZST00gc2FmZWNhc3R2aWV3OworCitDUkVBVEUgVklF VyBzYWZlY2FzdHZpZXcxIEFTCitTRUxFQ1QgQ0FTVChBUlJBWVtbJzEnXSwgWyd0aHJlZSddLFsn YSddXSBBUyBkX2ludF9hcnIKKyAgICAgICAgICAgIERFRkFVTFQgJ3s0MSw0M30nIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIGNhc3QxLAorICAgICAgIENBU1QoQVJSQVlbWycxJywgJzInLCAxLjFd LCBbJ3RocmVlJywgdHJ1ZSwgQicwMSddXSBBUyBkX2ludF9hcnIKKyAgICAgICAgICAgIERFRkFV TFQgJ3s0MSw0M30nIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGNhc3QyOworXHN2IHNhZmVjYXN0 dmlldzEKK1NFTEVDVCAqIEZST00gc2FmZWNhc3R2aWV3MTsKKworUkVTRVQgZGF0ZXN0eWxlOwor CistLSB0ZXN0IENBU1QgREVGQVVMVCBleHByZXNzaW9uIG11dGFiaWxpdHkKK0NSRUFURSBJTkRF WCBjYXN0X2Vycm9yX2lkeCBPTiB0ZXN0X3NhZmVjYXN0MygoQ0FTVChjb2wwIGFzIGludCBERUZB VUxUIHJhbmRvbShtaW49PjEsIG1heD0+MSkgT04gQ09OVkVSU0lPTiBFUlJPUikpKTsgLS0gZXJy b3IKK0NSRUFURSBJTkRFWCBjYXN0X2Vycm9yX2lkeCBPTiB0ZXN0X3NhZmVjYXN0MygoQ0FTVChj b2wwIGFzIHhpZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikpKTsgLS0gZXJyb3IK K0NSRUFURSBJTkRFWCBjYXN0X2Vycm9yX2lkeCBPTiB0ZXN0X3NhZmVjYXN0MygoQ0FTVChjb2ww IGFzIGludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikpKTsgLS1vaworU0VMRUNU IHBnX2dldF9pbmRleGRlZignY2FzdF9lcnJvcl9pZHgnOjpyZWdjbGFzcyk7CisKK0RST1AgVklF VyBzYWZlY2FzdHZpZXc7CitEUk9QIFZJRVcgc2FmZWNhc3R2aWV3MTsKK0RST1AgVEFCTEUgdGVz dF9zYWZlY2FzdDsKK0RST1AgVEFCTEUgdGVzdF9zYWZlY2FzdDE7CitEUk9QIFRBQkxFIHRlc3Rf c2FmZWNhc3QyOworRFJPUCBUQUJMRSB0ZXN0X3NhZmVjYXN0MzsKK0RST1AgVEFCTEUgdGNhc3Q7 CitEUk9QIFRBQkxFIHRjYXN0MTsKK0RST1AgRlVOQ1RJT04gcmV0X2ludDg7CitEUk9QIEZVTkNU SU9OIHJldF9zZXRpbnQ7CitEUk9QIFRZUEUgY29tcF9kb21haW5fd2l0aF90eXBtb2Q7CitEUk9Q IFRZUEUgY29tcDI7CitEUk9QIERPTUFJTiBkX25vdGE7CitEUk9QIERPTUFJTiBkX3ZhcmNoYXI7 CitEUk9QIERPTUFJTiBkX2ludDhhcnI7CitEUk9QIERPTUFJTiBkX2ludDg7CitEUk9QIERPTUFJ TiBkX2ludDQyYXJyMTsKK0RST1AgRE9NQUlOIGRfaW50NDJhcnI7CitEUk9QIERPTUFJTiBkX2lu dDQyOworRFJPUCBET01BSU4gZF9jaGFyM19ub3RfbnVsbDsKK0RST1AgRE9NQUlOIGRfbnVtZXJp YzsKK1JFU0VUIGV4dHJhX2Zsb2F0X2RpZ2l0czsKK1JFU0VUIGxjX21vbmV0YXJ5OwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2Nhc3Quc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvY3JlYXRlX2Nhc3Quc3FsCmluZGV4IDMyMTg3ODUzY2M3Li4wYTE1YTc5NWQ4NyAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2Nhc3Quc3FsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9jYXN0LnNxbApAQCAtNjIsNiArNjIsNyBAQCAkJCBT RUxFQ1QgKCdiYXInOjp0ZXh0IHx8ICQxOjp0ZXh0KTsgJCQ7CiAKIENSRUFURSBDQVNUIChpbnQ0 IEFTIGNhc3R0ZXN0dHlwZSkgV0lUSCBGVU5DVElPTiBiYXJfaW50NF90ZXh0KGludDQpIEFTIElN UExJQ0lUOwogU0VMRUNUIDEyMzQ6OmludDQ6OmNhc3R0ZXN0dHlwZTsgLS0gU2hvdWxkIHdvcmsg bm93CitTRUxFQ1QgQ0FTVCgxMjM0OjppbnQ0IEFTIGNhc3R0ZXN0dHlwZSBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCiAKIC0tIGNoZWNrIGRlcGVuZGVuY2llcyBn ZW5lcmF0ZWQgZm9yIHRoYXQKIFNFTEVDVCBwZ19kZXNjcmliZV9vYmplY3QoY2xhc3NpZCwgb2Jq aWQsIG9ianN1YmlkKSBhcyBvYmosCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9l cXVpdmNsYXNzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2VxdWl2Y2xhc3Muc3FsCmluZGV4 IDdmYzIxNTkzNDliLi43YWRhNGJiNTUwNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvZXF1aXZjbGFzcy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXF1aXZjbGFzcy5z cWwKQEAgLTk4LDYgKzk4LDkgQEAgY3JlYXRlIGZ1bmN0aW9uIGludDhhbGlhczFjbXAoaW50OCwg aW50OGFsaWFzMSkgcmV0dXJucyBpbnQKIGFsdGVyIG9wZXJhdG9yIGZhbWlseSBpbnRlZ2VyX29w cyB1c2luZyBidHJlZSBhZGQKICAgZnVuY3Rpb24gMSBpbnQ4YWxpYXMxY21wIChpbnQ4LCBpbnQ4 YWxpYXMxKTsKIAorLS0gaW50OGFsaWFzMiBiaW5hcnktY29lcmNpYmxlIHRvIGludDgsIHRoaXMg c2hvdWxkIG5vdCBmYWlsCitzZWxlY3QgY2FzdCgnMSc6OmludDggYXMgaW50OGFsaWFzMiBkZWZh dWx0IG51bGwgb24gY29udmVyc2lvbiBlcnJvcik7CisKIGNyZWF0ZSB0YWJsZSBlYzAgKGZmIGlu dDggcHJpbWFyeSBrZXksIGYxIGludDgsIGYyIGludDgpOwogY3JlYXRlIHRhYmxlIGVjMSAoZmYg aW50OCBwcmltYXJ5IGtleSwgZjEgaW50OGFsaWFzMSwgZjIgaW50OGFsaWFzMik7CiBjcmVhdGUg dGFibGUgZWMyICh4ZiBpbnQ4IHByaW1hcnkga2V5LCB4MSBpbnQ4YWxpYXMxLCB4MiBpbnQ4YWxp YXMyKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3htbC5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC94bWwuc3FsCmluZGV4IDBlYTRmNTA4ODM3Li5kZjNhMDZmNGQ4MiAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwveG1sLnNxbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC94bWwuc3FsCkBAIC05LDYgKzksOCBAQCBJTlNFUlQgSU5UTyB4bWx0ZXN0IFZBTFVF UyAoMywgJzx3cm9uZycpOwogCiBTRUxFQ1QgKiBGUk9NIHhtbHRlc3Q7CiAKK1NFTEVDVCBDQVNU KCc8d3JvbmcnOjp0ZXh0IEFTIHhtbCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9feG1sOworCiAtLSB0ZXN0IG5vbi10aHJvd2luZyBBUEksIHRvbwogU0VMRUNUIHBnX2lu cHV0X2lzX3ZhbGlkKCc8dmFsdWU+b25lPC92YWx1ZT4nLCAneG1sJyk7CiBTRUxFQ1QgcGdfaW5w dXRfaXNfdmFsaWQoJzx2YWx1ZT5vbmU8LycsICd4bWwnKTsKZGlmZiAtLWdpdCBhL3NyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKaW5kZXggNzEyZDg0MTI4Y2EuLjdjOWVhMWFlNDdkIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdApAQCAtMjczOSw2ICsyNzM5LDggQEAgU1RSTEVOCiBTVgogU1lOQ0hST05JWkFUSU9OX0JB UlJJRVIKIFNZU1RFTV9JTkZPCitTYWZlVHlwZUNhc3RFeHByCitTYWZlVHlwZUNhc3RTdGF0ZQog U2FtcGxlU2NhbgogU2FtcGxlU2NhbkdldFNhbXBsZVNpemVfZnVuY3Rpb24KIFNhbXBsZVNjYW5T dGF0ZQotLSAKMi4zNC4xCgo= --0000000000006bcf4f064e0ad34e Content-Type: text/x-patch; charset="US-ASCII"; name="v25-0006-error-safe-for-casting-geometry-data-type.patch" Content-Disposition: attachment; filename="v25-0006-error-safe-for-casting-geometry-data-type.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn9lohsc3 RnJvbSA3YWNhM2M0MzljZGE3MzNlYjNmOWFiY2Q4MTMzNmJmYjMzMTZlOWY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMjAgTWFyIDIwMjYgMTA6MTk6MTAgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy NSA2LzldIGVycm9yIHNhZmUgZm9yIGNhc3RpbmcgZ2VvbWV0cnkgZGF0YSB0eXBlCgpzZWxlY3Qg Y2FzdHNvdXJjZTo6cmVndHlwZSwgY2FzdHRhcmdldDo6cmVndHlwZSwgcHAucHJvc3JjCmZyb20g cGdfY2FzdCBwYyBqb2luIHBnX3Byb2MgcHAgb24gcHAub2lkID0gcGMuY2FzdGZ1bmMKam9pbiBw Z190eXBlIHB0IG9uIHB0Lm9pZCA9IGNhc3Rzb3VyY2UKam9pbiBwZ190eXBlIHB0MSBvbiBwdDEu b2lkID0gY2FzdHRhcmdldAphbmQgcGMuY2FzdGZ1bmMgPiAwIGFuZCAgcHQudHlwYXJyYXkgPD4g MAphbmQgcHQudHlwbmFtZXNwYWNlID0gJ3BnX2NhdGFsb2cnOjpyZWduYW1lc3BhY2UKYW5kIHB0 MS50eXBuYW1lc3BhY2UgPSAncGdfY2F0YWxvZyc6OnJlZ25hbWVzcGFjZQphbmQgKHB0LnR5cGNh dGVnb3J5ICA9ICdHJyBvciBwdDEudHlwY2F0ZWdvcnkgID0gJ0cnKQpvcmRlciBieSBjYXN0c291 cmNlOjpyZWd0eXBlLCBjYXN0dGFyZ2V0OjpyZWd0eXBlOwoKIGNhc3Rzb3VyY2UgfCBjYXN0dGFy Z2V0IHwgICAgcHJvc3JjCi0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t CiBwb2ludCAgICAgIHwgYm94ICAgICAgICB8IHBvaW50X2JveAogbHNlZyAgICAgICB8IHBvaW50 ICAgICAgfCBsc2VnX2NlbnRlcgogcGF0aCAgICAgICB8IHBvbHlnb24gICAgfCBwYXRoX3BvbHkK IGJveCAgICAgICAgfCBwb2ludCAgICAgIHwgYm94X2NlbnRlcgogYm94ICAgICAgICB8IGxzZWcg ICAgICAgfCBib3hfZGlhZ29uYWwKIGJveCAgICAgICAgfCBwb2x5Z29uICAgIHwgYm94X3BvbHkK IGJveCAgICAgICAgfCBjaXJjbGUgICAgIHwgYm94X2NpcmNsZQogcG9seWdvbiAgICB8IHBvaW50 ICAgICAgfCBwb2x5X2NlbnRlcgogcG9seWdvbiAgICB8IHBhdGggICAgICAgfCBwb2x5X3BhdGgK IHBvbHlnb24gICAgfCBib3ggICAgICAgIHwgcG9seV9ib3gKIHBvbHlnb24gICAgfCBjaXJjbGUg ICAgIHwgcG9seV9jaXJjbGUKIGNpcmNsZSAgICAgfCBwb2ludCAgICAgIHwgY2lyY2xlX2NlbnRl cgogY2lyY2xlICAgICB8IGJveCAgICAgICAgfCBjaXJjbGVfYm94CiBjaXJjbGUgICAgIHwgcG9s eWdvbiAgICB8CigxNCByb3dzKQoKYWxyZWFkeSBlcnJvciBzYWZlOiBwb2ludF9ib3gsIGJveF9k aWFnb25hbCwgYm94X3BvbHksIHBvbHlfcGF0aCwgcG9seV9ib3gsIGNpcmNsZV9jZW50ZXIuClRo aXMgcGF0Y2ggbWFrZSB0aGVzZSBmdW5jdGlvbnMgZXJyb3Igc2FmZTogbHNlZ19jZW50ZXIsIHBh dGhfcG9seSwgYm94X2NlbnRlciwKYm94X2NpcmNsZSwgcG9seV9jZW50ZXIsIHBvbHlfY2lyY2xl LCBjaXJjbGVfYm94LgoKRnVuY3Rpb24gdGhhdCBjYXN0aW5nIHR5cGUgY2lyY2xlIHRvIHR5cGUg cG9seWdvbiBjYW5ub3QgYmUgZXJyb3Igc2FmZSwgYmVjYXVzZQppdCdzIGEgU1FMIGxhbmd1YWdl IGZ1bmN0aW9uLgoKQXV0aG9yOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ ClJldmlld2VkLWJ5OiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBB bmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4KUmV2aWV3ZWQtYnk6IENvcmV5IEh1 aW5rZXIgPGNvcmV5Lmh1aW5rZXJAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rn ci5lcy9tL0NBRGtMTT1mdjFKZlk0VWZhLWpjd3dOYmpRaXhOVmlza1E4alp1M1R6X3A2NTZpXzRo UUBtYWlsLmdtYWlsLmNvbQpDb21taXRmZXN0OiBodHRwczovL2NvbW1pdGZlc3QucG9zdGdyZXNx bC5vcmcvcGF0Y2gvNTk0MQotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9nZW9fb3BzLmMgfCAy MDMgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxNjAg aW5zZXJ0aW9ucygrKSwgNDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2dlb19vcHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9nZW9fb3BzLmMKaW5k ZXggMzUwZTg2ZjYzNzcuLmE1OWYxY2FiYzQ0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvZ2VvX29wcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9nZW9fb3BzLmMKQEAg LTc3LDcgKzc3LDggQEAgZW51bSBwYXRoX2RlbGltCiAKIC8qIFJvdXRpbmVzIGZvciBwb2ludHMg Ki8KIHN0YXRpYyBpbmxpbmUgdm9pZCBwb2ludF9jb25zdHJ1Y3QoUG9pbnQgKnJlc3VsdCwgZmxv YXQ4IHgsIGZsb2F0OCB5KTsKLXN0YXRpYyBpbmxpbmUgdm9pZCBwb2ludF9hZGRfcG9pbnQoUG9p bnQgKnJlc3VsdCwgUG9pbnQgKnB0MSwgUG9pbnQgKnB0Mik7CitzdGF0aWMgaW5saW5lIHZvaWQg cG9pbnRfYWRkX3BvaW50KFBvaW50ICpyZXN1bHQsIFBvaW50ICpwdDEsIFBvaW50ICpwdDIsCisJ CQkJCQkJCSAgIE5vZGUgKmVzY29udGV4dCk7CiBzdGF0aWMgaW5saW5lIHZvaWQgcG9pbnRfc3Vi X3BvaW50KFBvaW50ICpyZXN1bHQsIFBvaW50ICpwdDEsIFBvaW50ICpwdDIpOwogc3RhdGljIGlu bGluZSB2b2lkIHBvaW50X211bF9wb2ludChQb2ludCAqcmVzdWx0LCBQb2ludCAqcHQxLCBQb2lu dCAqcHQyKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBwb2ludF9kaXZfcG9pbnQoUG9pbnQgKnJlc3Vs dCwgUG9pbnQgKnB0MSwgUG9pbnQgKnB0Mik7CkBAIC0xMDgsNyArMTA5LDcgQEAgc3RhdGljIGZs b2F0OCBsc2VnX2Nsb3NlcHRfbHNlZyhQb2ludCAqcmVzdWx0LCBMU0VHICpvbl9sc2VnLCBMU0VH ICp0b19sc2VnKTsKIAogLyogUm91dGluZXMgZm9yIGJveGVzICovCiBzdGF0aWMgaW5saW5lIHZv aWQgYm94X2NvbnN0cnVjdChCT1ggKnJlc3VsdCwgUG9pbnQgKnB0MSwgUG9pbnQgKnB0Mik7Ci1z dGF0aWMgdm9pZCBib3hfY24oUG9pbnQgKmNlbnRlciwgQk9YICpib3gpOworc3RhdGljIGJvb2wg Ym94X2NuKFBvaW50ICpjZW50ZXIsIEJPWCAqYm94LCBOb2RlICplc2NvbnRleHQpOwogc3RhdGlj IGJvb2wgYm94X292KEJPWCAqYm94MSwgQk9YICpib3gyKTsKIHN0YXRpYyBmbG9hdDggYm94X2Fy KEJPWCAqYm94KTsKIHN0YXRpYyBmbG9hdDggYm94X2h0KEJPWCAqYm94KTsKQEAgLTEyNSw3ICsx MjYsNyBAQCBzdGF0aWMgZmxvYXQ4IGNpcmNsZV9hcihDSVJDTEUgKmNpcmNsZSk7CiAKIC8qIFJv dXRpbmVzIGZvciBwb2x5Z29ucyAqLwogc3RhdGljIHZvaWQgbWFrZV9ib3VuZF9ib3goUE9MWUdP TiAqcG9seSk7Ci1zdGF0aWMgdm9pZCBwb2x5X3RvX2NpcmNsZShDSVJDTEUgKnJlc3VsdCwgUE9M WUdPTiAqcG9seSk7CitzdGF0aWMgYm9vbCBwb2x5X3RvX2NpcmNsZShDSVJDTEUgKnJlc3VsdCwg UE9MWUdPTiAqcG9seSwgTm9kZSAqZXNjb250ZXh0KTsKIHN0YXRpYyBib29sIGxzZWdfaW5zaWRl X3BvbHkoUG9pbnQgKmEsIFBvaW50ICpiLCBQT0xZR09OICpwb2x5LCBpbnQgc3RhcnQpOwogc3Rh dGljIGJvb2wgcG9seV9jb250YWluX3BvbHkoUE9MWUdPTiAqY29udGFpbnNfcG9seSwgUE9MWUdP TiAqY29udGFpbmVkX3BvbHkpOwogc3RhdGljIGJvb2wgcGxpc3Rfc2FtZShpbnQgbnB0cywgUG9p bnQgKnAxLCBQb2ludCAqcDIpOwpAQCAtODM2LDggKzgzNyw4IEBAIGJveF9kaXN0YW5jZShQR19G VU5DVElPTl9BUkdTKQogCVBvaW50CQlhLAogCQkJCWI7CiAKLQlib3hfY24oJmEsIGJveDEpOwot CWJveF9jbigmYiwgYm94Mik7CisJKHZvaWQpIGJveF9jbigmYSwgYm94MSwgTlVMTCk7CisJKHZv aWQpIGJveF9jbigmYiwgYm94MiwgTlVMTCk7CiAKIAlQR19SRVRVUk5fRkxPQVQ4KHBvaW50X2R0 KCZhLCAmYiwgTlVMTCkpOwogfQpAQCAtODUxLDcgKzg1Miw4IEBAIGJveF9jZW50ZXIoUEdfRlVO Q1RJT05fQVJHUykKIAlCT1gJCSAgICpib3ggPSBQR19HRVRBUkdfQk9YX1AoMCk7CiAJUG9pbnQJ ICAgKnJlc3VsdCA9IHBhbGxvY19vYmplY3QoUG9pbnQpOwogCi0JYm94X2NuKHJlc3VsdCwgYm94 KTsKKwlpZiAoIWJveF9jbihyZXN1bHQsIGJveCwgZmNpbmZvLT5jb250ZXh0KSkKKwkJUEdfUkVU VVJOX05VTEwoKTsKIAogCVBHX1JFVFVSTl9QT0lOVF9QKHJlc3VsdCk7CiB9CkBAIC04NjgsMTQg Kzg3MCwzMSBAQCBib3hfYXIoQk9YICpib3gpCiAKIC8qCQlib3hfY24JLQkJc3RvcmVzIHRoZSBj ZW50ZXJwb2ludCBvZiB0aGUgYm94IGludG8gKmNlbnRlci4KICAqLwotc3RhdGljIHZvaWQKLWJv eF9jbihQb2ludCAqY2VudGVyLCBCT1ggKmJveCkKK3N0YXRpYyBib29sCitib3hfY24oUG9pbnQg KmNlbnRlciwgQk9YICpib3gsIE5vZGUgKmVzY29udGV4dCkKIHsKLQljZW50ZXItPnggPSBmbG9h dDhfZGl2KGZsb2F0OF9wbChib3gtPmhpZ2gueCwgYm94LT5sb3cueCksIDIuMCk7Ci0JY2VudGVy LT55ID0gZmxvYXQ4X2RpdihmbG9hdDhfcGwoYm94LT5oaWdoLnksIGJveC0+bG93LnkpLCAyLjAp OworCWZsb2F0OAkJeDsKKwlmbG9hdDgJCXk7CisKKwl4ID0gZmxvYXQ4X3BsX3NhZmUoYm94LT5o aWdoLngsIGJveC0+bG93LngsIGVzY29udGV4dCk7CisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQo ZXNjb250ZXh0KSkKKwkJcmV0dXJuIGZhbHNlOworCisJY2VudGVyLT54ID0gZmxvYXQ4X2Rpdl9z YWZlKHgsIDIuMCwgZXNjb250ZXh0KTsKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChlc2NvbnRl eHQpKQorCQlyZXR1cm4gZmFsc2U7CisKKwl5ID0gZmxvYXQ4X3BsX3NhZmUoYm94LT5oaWdoLnks IGJveC0+bG93LnksIGVzY29udGV4dCk7CisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZXNjb250 ZXh0KSkKKwkJcmV0dXJuIGZhbHNlOworCisJY2VudGVyLT55ID0gZmxvYXQ4X2Rpdl9zYWZlKHks IDIuMCwgZXNjb250ZXh0KTsKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChlc2NvbnRleHQpKQor CQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gdHJ1ZTsKIH0KIAotCiAvKgkJYm94X3dkCS0JCXJl dHVybnMgdGhlIHdpZHRoIChsZW5ndGgpIG9mIHRoZSBib3gKICAqCQkJCQkJCQkgIChob3Jpem9u dGFsIG1hZ25pdHVkZSkuCiAgKi8KQEAgLTIzMjksMTMgKzIzNDgsMzEgQEAgbHNlZ19jZW50ZXIo UEdfRlVOQ1RJT05fQVJHUykKIHsKIAlMU0VHCSAgICpsc2VnID0gUEdfR0VUQVJHX0xTRUdfUCgw KTsKIAlQb2ludAkgICAqcmVzdWx0OworCWZsb2F0OAkJeDsKKwlmbG9hdDgJCXk7CiAKIAlyZXN1 bHQgPSBwYWxsb2Nfb2JqZWN0KFBvaW50KTsKIAotCXJlc3VsdC0+eCA9IGZsb2F0OF9kaXYoZmxv YXQ4X3BsKGxzZWctPnBbMF0ueCwgbHNlZy0+cFsxXS54KSwgMi4wKTsKLQlyZXN1bHQtPnkgPSBm bG9hdDhfZGl2KGZsb2F0OF9wbChsc2VnLT5wWzBdLnksIGxzZWctPnBbMV0ueSksIDIuMCk7CisJ eCA9IGZsb2F0OF9wbF9zYWZlKGxzZWctPnBbMF0ueCwgbHNlZy0+cFsxXS54LCBmY2luZm8tPmNv bnRleHQpOworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGZjaW5mby0+Y29udGV4dCkpCisJCWdv dG8gZmFpbDsKKworCXJlc3VsdC0+eCA9IGZsb2F0OF9kaXZfc2FmZSh4LCAyLjAsIGZjaW5mby0+ Y29udGV4dCk7CisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZmNpbmZvLT5jb250ZXh0KSkKKwkJ Z290byBmYWlsOworCisJeSA9IGZsb2F0OF9wbF9zYWZlKGxzZWctPnBbMF0ueSwgbHNlZy0+cFsx XS55LCBmY2luZm8tPmNvbnRleHQpOworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGZjaW5mby0+ Y29udGV4dCkpCisJCWdvdG8gZmFpbDsKKworCXJlc3VsdC0+eSA9IGZsb2F0OF9kaXZfc2FmZSh5 LCAyLjAsIGZjaW5mby0+Y29udGV4dCk7CisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZmNpbmZv LT5jb250ZXh0KSkKKwkJZ290byBmYWlsOwogCiAJUEdfUkVUVVJOX1BPSU5UX1AocmVzdWx0KTsK KworZmFpbDoKKwlQR19SRVRVUk5fTlVMTCgpOwogfQogCiAKQEAgLTMyOTAsNyArMzMyNyw3IEBA IGJveF9pbnRlcnB0X2xzZWcoUG9pbnQgKnJlc3VsdCwgQk9YICpib3gsIExTRUcgKmxzZWcpCiAK IAlpZiAocmVzdWx0ICE9IE5VTEwpCiAJewotCQlib3hfY24oJnBvaW50LCBib3gpOworCQkodm9p ZCkgYm94X2NuKCZwb2ludCwgYm94LCBOVUxMKTsKIAkJbHNlZ19jbG9zZXB0X3BvaW50KHJlc3Vs dCwgbHNlZywgJnBvaW50KTsKIAl9CiAKQEAgLTQxMjEsMTEgKzQxNTgsMjAgQEAgY29uc3RydWN0 X3BvaW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAogc3RhdGljIGlubGluZSB2b2lkCi1wb2ludF9h ZGRfcG9pbnQoUG9pbnQgKnJlc3VsdCwgUG9pbnQgKnB0MSwgUG9pbnQgKnB0MikKK3BvaW50X2Fk ZF9wb2ludChQb2ludCAqcmVzdWx0LCBQb2ludCAqcHQxLCBQb2ludCAqcHQyLCBOb2RlICplc2Nv bnRleHQpCiB7Ci0JcG9pbnRfY29uc3RydWN0KHJlc3VsdCwKLQkJCQkJZmxvYXQ4X3BsKHB0MS0+ eCwgcHQyLT54KSwKLQkJCQkJZmxvYXQ4X3BsKHB0MS0+eSwgcHQyLT55KSk7CisJZmxvYXQ4CQl4 OworCWZsb2F0OAkJeTsKKworCXggPSBmbG9hdDhfcGxfc2FmZShwdDEtPngsIHB0Mi0+eCwgZXNj b250ZXh0KTsKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChlc2NvbnRleHQpKQorCQlyZXR1cm47 CisKKwl5ID0gZmxvYXQ4X3BsX3NhZmUocHQxLT55LCBwdDItPnksIGVzY29udGV4dCk7CisJaWYg KFNPRlRfRVJST1JfT0NDVVJSRUQoZXNjb250ZXh0KSkKKwkJcmV0dXJuOworCisJcG9pbnRfY29u c3RydWN0KHJlc3VsdCwgeCwgeSk7CiB9CiAKIERhdHVtCkBAIC00MTM3LDcgKzQxODMsNyBAQCBw b2ludF9hZGQoUEdfRlVOQ1RJT05fQVJHUykKIAogCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoUG9p bnQpOwogCi0JcG9pbnRfYWRkX3BvaW50KHJlc3VsdCwgcDEsIHAyKTsKKwlwb2ludF9hZGRfcG9p bnQocmVzdWx0LCBwMSwgcDIsIE5VTEwpOwogCiAJUEdfUkVUVVJOX1BPSU5UX1AocmVzdWx0KTsK IH0KQEAgLTQyNDksOCArNDI5NSw4IEBAIGJveF9hZGQoUEdfRlVOQ1RJT05fQVJHUykKIAogCXJl c3VsdCA9IHBhbGxvY19vYmplY3QoQk9YKTsKIAotCXBvaW50X2FkZF9wb2ludCgmcmVzdWx0LT5o aWdoLCAmYm94LT5oaWdoLCBwKTsKLQlwb2ludF9hZGRfcG9pbnQoJnJlc3VsdC0+bG93LCAmYm94 LT5sb3csIHApOworCXBvaW50X2FkZF9wb2ludCgmcmVzdWx0LT5oaWdoLCAmYm94LT5oaWdoLCBw LCBOVUxMKTsKKwlwb2ludF9hZGRfcG9pbnQoJnJlc3VsdC0+bG93LCAmYm94LT5sb3csIHAsIE5V TEwpOwogCiAJUEdfUkVUVVJOX0JPWF9QKHJlc3VsdCk7CiB9CkBAIC00NDEzLDcgKzQ0NTksNyBA QCBwYXRoX2FkZF9wdChQR19GVU5DVElPTl9BUkdTKQogCWludAkJCWk7CiAKIAlmb3IgKGkgPSAw OyBpIDwgcGF0aC0+bnB0czsgaSsrKQotCQlwb2ludF9hZGRfcG9pbnQoJnBhdGgtPnBbaV0sICZw YXRoLT5wW2ldLCBwb2ludCk7CisJCXBvaW50X2FkZF9wb2ludCgmcGF0aC0+cFtpXSwgJnBhdGgt PnBbaV0sIHBvaW50LCBOVUxMKTsKIAogCVBHX1JFVFVSTl9QQVRIX1AocGF0aCk7CiB9CkBAIC00 NDcxLDcgKzQ1MTcsNyBAQCBwYXRoX3BvbHkoUEdfRlVOQ1RJT05fQVJHUykKIAogCS8qIFRoaXMg aXMgbm90IHZlcnkgY29uc2lzdGVudCAtLS0gb3RoZXIgc2ltaWxhciBjYXNlcyByZXR1cm4gTlVM TCAuLi4gKi8KIAlpZiAoIXBhdGgtPmNsb3NlZCkKLQkJZXJlcG9ydChFUlJPUiwKKwkJZXJldHVy bihmY2luZm8tPmNvbnRleHQsIChEYXR1bSkgMCwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkgZXJybXNnKCJvcGVuIHBhdGggY2Fubm90IGJlIGNv bnZlcnRlZCB0byBwb2x5Z29uIikpKTsKIApAQCAtNDUyMSw3ICs0NTY3LDkgQEAgcG9seV9jZW50 ZXIoUEdfRlVOQ1RJT05fQVJHUykKIAogCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoUG9pbnQpOwog Ci0JcG9seV90b19jaXJjbGUoJmNpcmNsZSwgcG9seSk7CisJaWYgKCFwb2x5X3RvX2NpcmNsZSgm Y2lyY2xlLCBwb2x5LCBmY2luZm8tPmNvbnRleHQpKQorCQlQR19SRVRVUk5fTlVMTCgpOworCiAJ KnJlc3VsdCA9IGNpcmNsZS5jZW50ZXI7CiAKIAlQR19SRVRVUk5fUE9JTlRfUChyZXN1bHQpOwpA QCAtNDk4Myw3ICs1MDMxLDcgQEAgY2lyY2xlX2FkZF9wdChQR19GVU5DVElPTl9BUkdTKQogCiAJ cmVzdWx0ID0gcGFsbG9jX29iamVjdChDSVJDTEUpOwogCi0JcG9pbnRfYWRkX3BvaW50KCZyZXN1 bHQtPmNlbnRlciwgJmNpcmNsZS0+Y2VudGVyLCBwb2ludCk7CisJcG9pbnRfYWRkX3BvaW50KCZy ZXN1bHQtPmNlbnRlciwgJmNpcmNsZS0+Y2VudGVyLCBwb2ludCwgTlVMTCk7CiAJcmVzdWx0LT5y YWRpdXMgPSBjaXJjbGUtPnJhZGl1czsKIAogCVBHX1JFVFVSTl9DSVJDTEVfUChyZXN1bHQpOwpA QCAtNTIwNCwxNCArNTI1MiwzMCBAQCBjaXJjbGVfYm94KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAli b3ggPSBwYWxsb2Nfb2JqZWN0KEJPWCk7CiAKLQlkZWx0YSA9IGZsb2F0OF9kaXYoY2lyY2xlLT5y YWRpdXMsIHNxcnQoMi4wKSk7CisJZGVsdGEgPSBmbG9hdDhfZGl2X3NhZmUoY2lyY2xlLT5yYWRp dXMsIHNxcnQoMi4wKSwgZmNpbmZvLT5jb250ZXh0KTsKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJF RChmY2luZm8tPmNvbnRleHQpKQorCQlnb3RvIGZhaWw7CiAKLQlib3gtPmhpZ2gueCA9IGZsb2F0 OF9wbChjaXJjbGUtPmNlbnRlci54LCBkZWx0YSk7Ci0JYm94LT5sb3cueCA9IGZsb2F0OF9taShj aXJjbGUtPmNlbnRlci54LCBkZWx0YSk7Ci0JYm94LT5oaWdoLnkgPSBmbG9hdDhfcGwoY2lyY2xl LT5jZW50ZXIueSwgZGVsdGEpOwotCWJveC0+bG93LnkgPSBmbG9hdDhfbWkoY2lyY2xlLT5jZW50 ZXIueSwgZGVsdGEpOworCWJveC0+aGlnaC54ID0gZmxvYXQ4X3BsX3NhZmUoY2lyY2xlLT5jZW50 ZXIueCwgZGVsdGEsIGZjaW5mby0+Y29udGV4dCk7CisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQo ZmNpbmZvLT5jb250ZXh0KSkKKwkJZ290byBmYWlsOworCisJYm94LT5sb3cueCA9IGZsb2F0OF9t aV9zYWZlKGNpcmNsZS0+Y2VudGVyLngsIGRlbHRhLCBmY2luZm8tPmNvbnRleHQpOworCWlmIChT T0ZUX0VSUk9SX09DQ1VSUkVEKGZjaW5mby0+Y29udGV4dCkpCisJCWdvdG8gZmFpbDsKKworCWJv eC0+aGlnaC55ID0gZmxvYXQ4X3BsX3NhZmUoY2lyY2xlLT5jZW50ZXIueSwgZGVsdGEsIGZjaW5m by0+Y29udGV4dCk7CisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZmNpbmZvLT5jb250ZXh0KSkK KwkJZ290byBmYWlsOworCisJYm94LT5sb3cueSA9IGZsb2F0OF9taV9zYWZlKGNpcmNsZS0+Y2Vu dGVyLnksIGRlbHRhLCBmY2luZm8tPmNvbnRleHQpOworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVE KGZjaW5mby0+Y29udGV4dCkpCisJCWdvdG8gZmFpbDsKIAogCVBHX1JFVFVSTl9CT1hfUChib3gp OworCitmYWlsOgorCVBHX1JFVFVSTl9OVUxMKCk7CiB9CiAKIC8qIGJveF9jaXJjbGUoKQpAQCAt NTIyMiwxNSArNTI4NiwzNyBAQCBib3hfY2lyY2xlKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJQk9Y CQkgICAqYm94ID0gUEdfR0VUQVJHX0JPWF9QKDApOwogCUNJUkNMRQkgICAqY2lyY2xlOworCWZs b2F0OAkJeDsKKwlmbG9hdDgJCXk7CiAKIAljaXJjbGUgPSBwYWxsb2Nfb2JqZWN0KENJUkNMRSk7 CiAKLQljaXJjbGUtPmNlbnRlci54ID0gZmxvYXQ4X2RpdihmbG9hdDhfcGwoYm94LT5oaWdoLngs IGJveC0+bG93LngpLCAyLjApOwotCWNpcmNsZS0+Y2VudGVyLnkgPSBmbG9hdDhfZGl2KGZsb2F0 OF9wbChib3gtPmhpZ2gueSwgYm94LT5sb3cueSksIDIuMCk7CisJeCA9IGZsb2F0OF9wbF9zYWZl KGJveC0+aGlnaC54LCBib3gtPmxvdy54LCBmY2luZm8tPmNvbnRleHQpOworCWlmIChTT0ZUX0VS Uk9SX09DQ1VSUkVEKGZjaW5mby0+Y29udGV4dCkpCisJCWdvdG8gZmFpbDsKIAotCWNpcmNsZS0+ cmFkaXVzID0gcG9pbnRfZHQoJmNpcmNsZS0+Y2VudGVyLCAmYm94LT5oaWdoLCBOVUxMKTsKKwlj aXJjbGUtPmNlbnRlci54ID0gZmxvYXQ4X2Rpdl9zYWZlKHgsIDIuMCwgZmNpbmZvLT5jb250ZXh0 KTsKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChmY2luZm8tPmNvbnRleHQpKQorCQlnb3RvIGZh aWw7CisKKwl5ID0gZmxvYXQ4X3BsX3NhZmUoYm94LT5oaWdoLnksIGJveC0+bG93LnksIGZjaW5m by0+Y29udGV4dCk7CisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZmNpbmZvLT5jb250ZXh0KSkK KwkJZ290byBmYWlsOworCisJY2lyY2xlLT5jZW50ZXIueSA9IGZsb2F0OF9kaXZfc2FmZSh5LCAy LjAsIGZjaW5mby0+Y29udGV4dCk7CisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZmNpbmZvLT5j b250ZXh0KSkKKwkJZ290byBmYWlsOworCisJY2lyY2xlLT5yYWRpdXMgPSBwb2ludF9kdCgmY2ly Y2xlLT5jZW50ZXIsICZib3gtPmhpZ2gsCisJCQkJCQkJICBmY2luZm8tPmNvbnRleHQpOworCisJ aWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZmNpbmZvLT5jb250ZXh0KSkKKwkJZ290byBmYWlsOwog CiAJUEdfUkVUVVJOX0NJUkNMRV9QKGNpcmNsZSk7CisKK2ZhaWw6CisJUEdfUkVUVVJOX05VTEwo KTsKIH0KIAogCkBAIC01Mjg5LDE1ICs1Mzc1LDE2IEBAIGNpcmNsZV9wb2x5KFBHX0ZVTkNUSU9O X0FSR1MpCiAvKgogICogQ29udmVydCBwb2x5Z29uIHRvIGNpcmNsZQogICoKLSAqIFRoZSByZXN1 bHQgbXVzdCBiZSBwcmVhbGxvY2F0ZWQuCisgKiBUaGUgcGFyYW1ldGVyICJyZXN1bHQiIG11c3Qg YmUgcHJlYWxsb2NhdGVkLgogICoKICAqIFhYWCBUaGlzIGFsZ29yaXRobSBzaG91bGQgdXNlIHdl aWdodGVkIG1lYW5zIG9mIGxpbmUgc2VnbWVudHMKICAqCXJhdGhlciB0aGFuIHN0cmFpZ2h0IGF2 ZXJhZ2UgdmFsdWVzIG9mIHBvaW50cyAtIHRnbCA5Ny8wMS8yMS4KICAqLwotc3RhdGljIHZvaWQK LXBvbHlfdG9fY2lyY2xlKENJUkNMRSAqcmVzdWx0LCBQT0xZR09OICpwb2x5KQorc3RhdGljIGJv b2wKK3BvbHlfdG9fY2lyY2xlKENJUkNMRSAqcmVzdWx0LCBQT0xZR09OICpwb2x5LCBOb2RlICpl c2NvbnRleHQpCiB7CiAJaW50CQkJaTsKKwlmbG9hdDgJCXg7CiAKIAlBc3NlcnQocG9seS0+bnB0 cyA+IDApOwogCkBAIC01MzA2LDE0ICs1MzkzLDQzIEBAIHBvbHlfdG9fY2lyY2xlKENJUkNMRSAq cmVzdWx0LCBQT0xZR09OICpwb2x5KQogCXJlc3VsdC0+cmFkaXVzID0gMDsKIAogCWZvciAoaSA9 IDA7IGkgPCBwb2x5LT5ucHRzOyBpKyspCi0JCXBvaW50X2FkZF9wb2ludCgmcmVzdWx0LT5jZW50 ZXIsICZyZXN1bHQtPmNlbnRlciwgJnBvbHktPnBbaV0pOwotCXJlc3VsdC0+Y2VudGVyLnggPSBm bG9hdDhfZGl2KHJlc3VsdC0+Y2VudGVyLngsIHBvbHktPm5wdHMpOwotCXJlc3VsdC0+Y2VudGVy LnkgPSBmbG9hdDhfZGl2KHJlc3VsdC0+Y2VudGVyLnksIHBvbHktPm5wdHMpOworCXsKKwkJcG9p bnRfYWRkX3BvaW50KCZyZXN1bHQtPmNlbnRlciwKKwkJCQkJCSZyZXN1bHQtPmNlbnRlciwKKwkJ CQkJCSZwb2x5LT5wW2ldLAorCQkJCQkJZXNjb250ZXh0KTsKKwkJaWYgKFNPRlRfRVJST1JfT0ND VVJSRUQoZXNjb250ZXh0KSkKKwkJCXJldHVybiBmYWxzZTsKKwl9CisKKwlyZXN1bHQtPmNlbnRl ci54ID0gZmxvYXQ4X2Rpdl9zYWZlKHJlc3VsdC0+Y2VudGVyLngsCisJCQkJCQkJCQkgICBwb2x5 LT5ucHRzLAorCQkJCQkJCQkJICAgZXNjb250ZXh0KTsKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJF RChlc2NvbnRleHQpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXN1bHQtPmNlbnRlci55ID0gZmxv YXQ4X2Rpdl9zYWZlKHJlc3VsdC0+Y2VudGVyLnksCisJCQkJCQkJCQkgICBwb2x5LT5ucHRzLAor CQkJCQkJCQkJICAgZXNjb250ZXh0KTsKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChlc2NvbnRl eHQpKQorCQlyZXR1cm4gZmFsc2U7CiAKIAlmb3IgKGkgPSAwOyBpIDwgcG9seS0+bnB0czsgaSsr KQotCQlyZXN1bHQtPnJhZGl1cyA9IGZsb2F0OF9wbChyZXN1bHQtPnJhZGl1cywKLQkJCQkJCQkJ ICAgcG9pbnRfZHQoJnBvbHktPnBbaV0sICZyZXN1bHQtPmNlbnRlciwgTlVMTCkpOwotCXJlc3Vs dC0+cmFkaXVzID0gZmxvYXQ4X2RpdihyZXN1bHQtPnJhZGl1cywgcG9seS0+bnB0cyk7CisJewor CQl4ID0gcG9pbnRfZHQoJnBvbHktPnBbaV0sICZyZXN1bHQtPmNlbnRlciwgZXNjb250ZXh0KTsK KwkJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZXNjb250ZXh0KSkKKwkJCXJldHVybiBmYWxzZTsK KworCQlyZXN1bHQtPnJhZGl1cyA9IGZsb2F0OF9wbF9zYWZlKHJlc3VsdC0+cmFkaXVzLCB4LCBl c2NvbnRleHQpOworCQlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChlc2NvbnRleHQpKQorCQkJcmV0 dXJuIGZhbHNlOworCX0KKworCXJlc3VsdC0+cmFkaXVzID0gZmxvYXQ4X2Rpdl9zYWZlKHJlc3Vs dC0+cmFkaXVzLCBwb2x5LT5ucHRzLCBlc2NvbnRleHQpOworCWlmIChTT0ZUX0VSUk9SX09DQ1VS UkVEKGVzY29udGV4dCkpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiB0cnVlOwogfQogCiBE YXR1bQpAQCAtNTMyNCw3ICs1NDQwLDggQEAgcG9seV9jaXJjbGUoUEdfRlVOQ1RJT05fQVJHUykK IAogCXJlc3VsdCA9IHBhbGxvY19vYmplY3QoQ0lSQ0xFKTsKIAotCXBvbHlfdG9fY2lyY2xlKHJl c3VsdCwgcG9seSk7CisJaWYgKCFwb2x5X3RvX2NpcmNsZShyZXN1bHQsIHBvbHksIGZjaW5mby0+ Y29udGV4dCkpCisJCVBHX1JFVFVSTl9OVUxMKCk7CiAKIAlQR19SRVRVUk5fQ0lSQ0xFX1AocmVz dWx0KTsKIH0KLS0gCjIuMzQuMQoK --0000000000006bcf4f064e0ad34e Content-Type: text/x-patch; charset="US-ASCII"; name="v25-0002-error-safe-for-casting-jsonb-to-other-types-per-pg_cast.patch" Content-Disposition: attachment; filename="v25-0002-error-safe-for-casting-jsonb-to-other-types-per-pg_cast.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn9lohse4 RnJvbSBiYzAzN2ZjZDgyOTY2ZmQ5ZTFlNWRkNjljNDFmZTAzNWRmOTUxMTQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjUgTWFyIDIwMjYgMDg6MzU6MjUgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy NSAyLzldIGVycm9yIHNhZmUgZm9yIGNhc3RpbmcganNvbmIgdG8gb3RoZXIgdHlwZXMgcGVyCiBw Z19jYXN0CgpzZWxlY3QgY2FzdHNvdXJjZTo6cmVndHlwZSwgY2FzdHRhcmdldDo6cmVndHlwZSwg Y2FzdGZ1bmMsCmNhc3Rjb250ZXh0LGNhc3RtZXRob2QsIHBwLnByb3NyYywgcHAucHJvbmFtZSBm cm9tIHBnX2Nhc3QgcGMgam9pbiBwZ19wcm9jIHBwIG9uCnBwLm9pZCA9IHBjLmNhc3RmdW5jIGFu ZCBwYy5jYXN0ZnVuYyA+IDAKYW5kIGNhc3Rzb3VyY2U6OnJlZ3R5cGUgPSAnanNvbmInOjpyZWd0 eXBlCm9yZGVyIGJ5IGNhc3Rzb3VyY2U6OnJlZ3R5cGU7CgogY2FzdHNvdXJjZSB8ICAgIGNhc3R0 YXJnZXQgICAgfCBjYXN0ZnVuYyB8IGNhc3Rjb250ZXh0IHwgY2FzdG1ldGhvZCB8ICAgIHByb3Ny YyAgICAgfCBwcm9uYW1lCi0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tCiBq c29uYiAgICAgIHwgYm9vbGVhbiAgICAgICAgICB8ICAgICAzNTU2IHwgZSAgICAgICAgICAgfCBm ICAgICAgICAgIHwganNvbmJfYm9vbCAgICB8IGJvb2wKIGpzb25iICAgICAgfCBudW1lcmljICAg ICAgICAgIHwgICAgIDM0NDkgfCBlICAgICAgICAgICB8IGYgICAgICAgICAgfCBqc29uYl9udW1l cmljIHwgbnVtZXJpYwoganNvbmIgICAgICB8IHNtYWxsaW50ICAgICAgICAgfCAgICAgMzQ1MCB8 IGUgICAgICAgICAgIHwgZiAgICAgICAgICB8IGpzb25iX2ludDIgICAgfCBpbnQyCiBqc29uYiAg ICAgIHwgaW50ZWdlciAgICAgICAgICB8ICAgICAzNDUxIHwgZSAgICAgICAgICAgfCBmICAgICAg ICAgIHwganNvbmJfaW50NCAgICB8IGludDQKIGpzb25iICAgICAgfCBiaWdpbnQgICAgICAgICAg IHwgICAgIDM0NTIgfCBlICAgICAgICAgICB8IGYgICAgICAgICAgfCBqc29uYl9pbnQ4ICAgIHwg aW50OAoganNvbmIgICAgICB8IHJlYWwgICAgICAgICAgICAgfCAgICAgMzQ1MyB8IGUgICAgICAg ICAgIHwgZiAgICAgICAgICB8IGpzb25iX2Zsb2F0NCAgfCBmbG9hdDQKIGpzb25iICAgICAgfCBk b3VibGUgcHJlY2lzaW9uIHwgICAgIDI1ODAgfCBlICAgICAgICAgICB8IGYgICAgICAgICAgfCBq c29uYl9mbG9hdDggIHwgZmxvYXQ4Cig3IHJvd3MpCgpBdXRob3I6IGppYW4gaGUgPGppYW4udW5p dmVyc2FsaXR5QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFtdWwgU3VsIDxzdWxhbXVsQGdtYWls LmNvbT4KUmV2aWV3ZWQtYnk6IENvcmV5IEh1aW5rZXIgPGNvcmV5Lmh1aW5rZXJAZ21haWwuY29t PgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBRGtMTT1mdjFKZlk0VWZhLWpjd3dO YmpRaXhOVmlza1E4alp1M1R6X3A2NTZpXzRoUUBtYWlsLmdtYWlsLmNvbQpDb21taXRmZXN0OiBo dHRwczovL2NvbW1pdGZlc3QucG9zdGdyZXNxbC5vcmcvcGF0Y2gvNTk0MQotLS0KIHNyYy9iYWNr ZW5kL3V0aWxzL2FkdC9qc29uYi5jIHwgMzUgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9qc29uYi5jCmluZGV4IDFiMWE4ZjMwMWYyLi44NjRjNWFjMWM4NSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2pzb25iLmMKQEAgLTE3ODUsOCArMTc4NSw4IEBAIEpzb25iRXh0cmFjdFNjYWxhcihK c29uYkNvbnRhaW5lciAqamJjLCBKc29uYlZhbHVlICpyZXMpCiAvKgogICogRW1pdCBjb3JyZWN0 LCB0cmFuc2xhdGFibGUgY2FzdCBlcnJvciBtZXNzYWdlCiAgKi8KLXN0YXRpYyB2b2lkCi1jYW5u b3RDYXN0SnNvbmJWYWx1ZShlbnVtIGpidlR5cGUgdHlwZSwgY29uc3QgY2hhciAqc3FsdHlwZSkK K3N0YXRpYyBEYXR1bQorY2Fubm90Q2FzdEpzb25iVmFsdWUoZW51bSBqYnZUeXBlIHR5cGUsIGNv bnN0IGNoYXIgKnNxbHR5cGUsIE5vZGUgKmVzY29udGV4dCkKIHsKIAlzdGF0aWMgY29uc3Qgc3Ry dWN0CiAJewpAQCAtMTgwNywxMiArMTgwNywxMyBAQCBjYW5ub3RDYXN0SnNvbmJWYWx1ZShlbnVt IGpidlR5cGUgdHlwZSwgY29uc3QgY2hhciAqc3FsdHlwZSkKIAogCWZvciAoaSA9IDA7IGkgPCBs ZW5ndGhvZihtZXNzYWdlcyk7IGkrKykKIAkJaWYgKG1lc3NhZ2VzW2ldLnR5cGUgPT0gdHlwZSkK LQkJCWVyZXBvcnQoRVJST1IsCisJCQllcmV0dXJuKGVzY29udGV4dCwgKERhdHVtKSAwLAogCQkJ CQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkJIGVycm1z ZyhtZXNzYWdlc1tpXS5tc2csIHNxbHR5cGUpKSk7CiAKIAkvKiBzaG91bGQgYmUgdW5yZWFjaGFi bGUgKi8KIAllbG9nKEVSUk9SLCAidW5rbm93biBqc29uYiB0eXBlOiAlZCIsIChpbnQpIHR5cGUp OworCXJldHVybiAoRGF0dW0pIDA7CiB9CiAKIERhdHVtCkBAIC0xODIyLDcgKzE4MjMsNyBAQCBq c29uYl9ib29sKFBHX0ZVTkNUSU9OX0FSR1MpCiAJSnNvbmJWYWx1ZQl2OwogCiAJaWYgKCFKc29u YkV4dHJhY3RTY2FsYXIoJmluLT5yb290LCAmdikpCi0JCWNhbm5vdENhc3RKc29uYlZhbHVlKHYu dHlwZSwgImJvb2xlYW4iKTsKKwkJcmV0dXJuIGNhbm5vdENhc3RKc29uYlZhbHVlKHYudHlwZSwg ImJvb2xlYW4iLCBmY2luZm8tPmNvbnRleHQpOwogCiAJaWYgKHYudHlwZSA9PSBqYnZOdWxsKQog CXsKQEAgLTE4MzEsNyArMTgzMiw3IEBAIGpzb25iX2Jvb2woUEdfRlVOQ1RJT05fQVJHUykKIAl9 CiAKIAlpZiAodi50eXBlICE9IGpidkJvb2wpCi0JCWNhbm5vdENhc3RKc29uYlZhbHVlKHYudHlw ZSwgImJvb2xlYW4iKTsKKwkJcmV0dXJuIGNhbm5vdENhc3RKc29uYlZhbHVlKHYudHlwZSwgImJv b2xlYW4iLCBmY2luZm8tPmNvbnRleHQpOwogCiAJUEdfRlJFRV9JRl9DT1BZKGluLCAwKTsKIApA QCAtMTg0Niw3ICsxODQ3LDcgQEAganNvbmJfbnVtZXJpYyhQR19GVU5DVElPTl9BUkdTKQogCU51 bWVyaWMJCXJldFZhbHVlOwogCiAJaWYgKCFKc29uYkV4dHJhY3RTY2FsYXIoJmluLT5yb290LCAm dikpCi0JCWNhbm5vdENhc3RKc29uYlZhbHVlKHYudHlwZSwgIm51bWVyaWMiKTsKKwkJcmV0dXJu IGNhbm5vdENhc3RKc29uYlZhbHVlKHYudHlwZSwgIm51bWVyaWMiLCBmY2luZm8tPmNvbnRleHQp OwogCiAJaWYgKHYudHlwZSA9PSBqYnZOdWxsKQogCXsKQEAgLTE4NTUsNyArMTg1Niw3IEBAIGpz b25iX251bWVyaWMoUEdfRlVOQ1RJT05fQVJHUykKIAl9CiAKIAlpZiAodi50eXBlICE9IGpidk51 bWVyaWMpCi0JCWNhbm5vdENhc3RKc29uYlZhbHVlKHYudHlwZSwgIm51bWVyaWMiKTsKKwkJcmV0 dXJuIGNhbm5vdENhc3RKc29uYlZhbHVlKHYudHlwZSwgIm51bWVyaWMiLCBmY2luZm8tPmNvbnRl eHQpOwogCiAJLyoKIAkgKiB2LnZhbC5udW1lcmljIHBvaW50cyBpbnRvIGpzb25iIGJvZHksIHNv IHdlIG5lZWQgdG8gbWFrZSBhIGNvcHkgdG8KQEAgLTE4NzYsNyArMTg3Nyw3IEBAIGpzb25iX2lu dDIoUEdfRlVOQ1RJT05fQVJHUykKIAlEYXR1bQkJcmV0VmFsdWU7CiAKIAlpZiAoIUpzb25iRXh0 cmFjdFNjYWxhcigmaW4tPnJvb3QsICZ2KSkKLQkJY2Fubm90Q2FzdEpzb25iVmFsdWUodi50eXBl LCAic21hbGxpbnQiKTsKKwkJcmV0dXJuIGNhbm5vdENhc3RKc29uYlZhbHVlKHYudHlwZSwgInNt YWxsaW50IiwgZmNpbmZvLT5jb250ZXh0KTsKIAogCWlmICh2LnR5cGUgPT0gamJ2TnVsbCkKIAl7 CkBAIC0xODg1LDcgKzE4ODYsNyBAQCBqc29uYl9pbnQyKFBHX0ZVTkNUSU9OX0FSR1MpCiAJfQog CiAJaWYgKHYudHlwZSAhPSBqYnZOdW1lcmljKQotCQljYW5ub3RDYXN0SnNvbmJWYWx1ZSh2LnR5 cGUsICJzbWFsbGludCIpOworCQlyZXR1cm4gY2Fubm90Q2FzdEpzb25iVmFsdWUodi50eXBlLCAi c21hbGxpbnQiLCBmY2luZm8tPmNvbnRleHQpOwogCiAJcmV0VmFsdWUgPSBEaXJlY3RGdW5jdGlv bkNhbGwxKG51bWVyaWNfaW50MiwKIAkJCQkJCQkJICAgTnVtZXJpY0dldERhdHVtKHYudmFsLm51 bWVyaWMpKTsKQEAgLTE5MDMsNyArMTkwNCw3IEBAIGpzb25iX2ludDQoUEdfRlVOQ1RJT05fQVJH UykKIAlEYXR1bQkJcmV0VmFsdWU7CiAKIAlpZiAoIUpzb25iRXh0cmFjdFNjYWxhcigmaW4tPnJv b3QsICZ2KSkKLQkJY2Fubm90Q2FzdEpzb25iVmFsdWUodi50eXBlLCAiaW50ZWdlciIpOworCQly ZXR1cm4gY2Fubm90Q2FzdEpzb25iVmFsdWUodi50eXBlLCAiaW50ZWdlciIsIGZjaW5mby0+Y29u dGV4dCk7CiAKIAlpZiAodi50eXBlID09IGpidk51bGwpCiAJewpAQCAtMTkxMiw3ICsxOTEzLDcg QEAganNvbmJfaW50NChQR19GVU5DVElPTl9BUkdTKQogCX0KIAogCWlmICh2LnR5cGUgIT0gamJ2 TnVtZXJpYykKLQkJY2Fubm90Q2FzdEpzb25iVmFsdWUodi50eXBlLCAiaW50ZWdlciIpOworCQly ZXR1cm4gY2Fubm90Q2FzdEpzb25iVmFsdWUodi50eXBlLCAiaW50ZWdlciIsIGZjaW5mby0+Y29u dGV4dCk7CiAKIAlyZXRWYWx1ZSA9IERpcmVjdEZ1bmN0aW9uQ2FsbDEobnVtZXJpY19pbnQ0LAog CQkJCQkJCQkgICBOdW1lcmljR2V0RGF0dW0odi52YWwubnVtZXJpYykpOwpAQCAtMTkzMCw3ICsx OTMxLDcgQEAganNvbmJfaW50OChQR19GVU5DVElPTl9BUkdTKQogCURhdHVtCQlyZXRWYWx1ZTsK IAogCWlmICghSnNvbmJFeHRyYWN0U2NhbGFyKCZpbi0+cm9vdCwgJnYpKQotCQljYW5ub3RDYXN0 SnNvbmJWYWx1ZSh2LnR5cGUsICJiaWdpbnQiKTsKKwkJcmV0dXJuIGNhbm5vdENhc3RKc29uYlZh bHVlKHYudHlwZSwgImJpZ2ludCIsIGZjaW5mby0+Y29udGV4dCk7CiAKIAlpZiAodi50eXBlID09 IGpidk51bGwpCiAJewpAQCAtMTkzOSw3ICsxOTQwLDcgQEAganNvbmJfaW50OChQR19GVU5DVElP Tl9BUkdTKQogCX0KIAogCWlmICh2LnR5cGUgIT0gamJ2TnVtZXJpYykKLQkJY2Fubm90Q2FzdEpz b25iVmFsdWUodi50eXBlLCAiYmlnaW50Iik7CisJCXJldHVybiBjYW5ub3RDYXN0SnNvbmJWYWx1 ZSh2LnR5cGUsICJiaWdpbnQiLCBmY2luZm8tPmNvbnRleHQpOwogCiAJcmV0VmFsdWUgPSBEaXJl Y3RGdW5jdGlvbkNhbGwxKG51bWVyaWNfaW50OCwKIAkJCQkJCQkJICAgTnVtZXJpY0dldERhdHVt KHYudmFsLm51bWVyaWMpKTsKQEAgLTE5NTcsNyArMTk1OCw3IEBAIGpzb25iX2Zsb2F0NChQR19G VU5DVElPTl9BUkdTKQogCURhdHVtCQlyZXRWYWx1ZTsKIAogCWlmICghSnNvbmJFeHRyYWN0U2Nh bGFyKCZpbi0+cm9vdCwgJnYpKQotCQljYW5ub3RDYXN0SnNvbmJWYWx1ZSh2LnR5cGUsICJyZWFs Iik7CisJCXJldHVybiBjYW5ub3RDYXN0SnNvbmJWYWx1ZSh2LnR5cGUsICJyZWFsIiwgZmNpbmZv LT5jb250ZXh0KTsKIAogCWlmICh2LnR5cGUgPT0gamJ2TnVsbCkKIAl7CkBAIC0xOTY2LDcgKzE5 NjcsNyBAQCBqc29uYl9mbG9hdDQoUEdfRlVOQ1RJT05fQVJHUykKIAl9CiAKIAlpZiAodi50eXBl ICE9IGpidk51bWVyaWMpCi0JCWNhbm5vdENhc3RKc29uYlZhbHVlKHYudHlwZSwgInJlYWwiKTsK KwkJcmV0dXJuIGNhbm5vdENhc3RKc29uYlZhbHVlKHYudHlwZSwgInJlYWwiLCBmY2luZm8tPmNv bnRleHQpOwogCiAJcmV0VmFsdWUgPSBEaXJlY3RGdW5jdGlvbkNhbGwxKG51bWVyaWNfZmxvYXQ0 LAogCQkJCQkJCQkgICBOdW1lcmljR2V0RGF0dW0odi52YWwubnVtZXJpYykpOwpAQCAtMTk4NCw3 ICsxOTg1LDcgQEAganNvbmJfZmxvYXQ4KFBHX0ZVTkNUSU9OX0FSR1MpCiAJRGF0dW0JCXJldFZh bHVlOwogCiAJaWYgKCFKc29uYkV4dHJhY3RTY2FsYXIoJmluLT5yb290LCAmdikpCi0JCWNhbm5v dENhc3RKc29uYlZhbHVlKHYudHlwZSwgImRvdWJsZSBwcmVjaXNpb24iKTsKKwkJcmV0dXJuIGNh bm5vdENhc3RKc29uYlZhbHVlKHYudHlwZSwgImRvdWJsZSBwcmVjaXNpb24iLCBmY2luZm8tPmNv bnRleHQpOwogCiAJaWYgKHYudHlwZSA9PSBqYnZOdWxsKQogCXsKQEAgLTE5OTMsNyArMTk5NCw3 IEBAIGpzb25iX2Zsb2F0OChQR19GVU5DVElPTl9BUkdTKQogCX0KIAogCWlmICh2LnR5cGUgIT0g amJ2TnVtZXJpYykKLQkJY2Fubm90Q2FzdEpzb25iVmFsdWUodi50eXBlLCAiZG91YmxlIHByZWNp c2lvbiIpOworCQlyZXR1cm4gY2Fubm90Q2FzdEpzb25iVmFsdWUodi50eXBlLCAiZG91YmxlIHBy ZWNpc2lvbiIsIGZjaW5mby0+Y29udGV4dCk7CiAKIAlyZXRWYWx1ZSA9IERpcmVjdEZ1bmN0aW9u Q2FsbDEobnVtZXJpY19mbG9hdDgsCiAJCQkJCQkJCSAgIE51bWVyaWNHZXREYXR1bSh2LnZhbC5u dW1lcmljKSk7Ci0tIAoyLjM0LjEKCg== --0000000000006bcf4f064e0ad34e Content-Type: text/x-patch; charset="US-ASCII"; name="v25-0007-error-safe-for-casting-circle-to-polygon.patch" Content-Disposition: attachment; filename="v25-0007-error-safe-for-casting-circle-to-polygon.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn9lohs92 RnJvbSBiOTllMjcyMTdhMGFlZGNjNGQ0NWVlNzk0YmIxZjI3NmYwYWViYWFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjUgTWFyIDIwMjYgMTc6MTk6MTggKzA4MDAKU3ViamVjdDogW1BBVENIIHYy NSA3LzldIGVycm9yIHNhZmUgZm9yIGNhc3RpbmcgY2lyY2xlIHRvIHBvbHlnb24KClByZXZpb3Vz bHk6CkZ1bmN0aW9uIHRoYXQgY2FzdGluZyB0eXBlIGNpcmNsZSB0byB0eXBlIHBvbHlnb24gY2Fu bm90IGJlIGVycm9yIHNhZmUsIGJlY2F1c2UKaXQncyBhIFNRTCBsYW5ndWFnZSBmdW5jdGlvbi4K Ck5vdyByZWZhY3RvciBpdCBhcyBhIEMvaW50ZXJuYWwgZnVuY3Rpb24sIHNvIGl0IGNhbiBlcnJv ci1zYWZlLgoKQXV0aG9yOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ClJl dmlld2VkLWJ5OiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBDb3Jl eSBIdWlua2VyIDxjb3JleS5odWlua2VyQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9w b3N0Z3IuZXMvbS9DQURrTE09ZnYxSmZZNFVmYS1qY3d3TmJqUWl4TlZpc2tROGpadTNUel9wNjU2 aV80aFFAbWFpbC5nbWFpbC5jb20KQ29tbWl0ZmVzdDogaHR0cHM6Ly9jb21taXRmZXN0LnBvc3Rn cmVzcWwub3JnL3BhdGNoLzU5NDEKLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5j dGlvbnMuc3FsIHwgIDYgLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvZ2VvX29wcy5jICAgICAg ICAgIHwgNTIgKysrKysrKysrKysrKysrKysrKystLS0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0ICAgICAgICAgIHwgIDQgKy0KIDMgZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9u cygrKSwgMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9z eXN0ZW1fZnVuY3Rpb25zLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9u cy5zcWwKaW5kZXggMWM1YjZkNmRmMDUuLmMzYzBhNmU4NGVkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwKQEAgLTk5LDEyICs5OSw2IEBAIENSRUFURSBPUiBSRVBM QUNFIEZVTkNUSU9OIHBhdGhfY29udGFpbl9wdChwYXRoLCBwb2ludCkKICBJTU1VVEFCTEUgUEFS QUxMRUwgU0FGRSBTVFJJQ1QgQ09TVCAxCiBSRVRVUk4gb25fcHBhdGgoJDIsICQxKTsKIAotQ1JF QVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gcG9seWdvbihjaXJjbGUpCi0gUkVUVVJOUyBwb2x5Z29u Ci0gTEFOR1VBR0Ugc3FsCi0gSU1NVVRBQkxFIFBBUkFMTEVMIFNBRkUgU1RSSUNUIENPU1QgMQot UkVUVVJOIHBvbHlnb24oMTIsICQxKTsKLQogQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWdl KHRpbWVzdGFtcHR6KQogIFJFVFVSTlMgaW50ZXJ2YWwKICBMQU5HVUFHRSBzcWwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9nZW9fb3BzLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvZ2VvX29wcy5jCmluZGV4IGE1OWYxY2FiYzQ0Li40ODQ2ZmUxMGY5YyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2dlb19vcHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvZ2VvX29wcy5jCkBAIC0xNDcsNiArMTQ3LDcgQEAgc3RhdGljIGJvb2wgcGF0aF9kZWNvZGUo Y2hhciAqc3RyLCBib29sIG9wZW50eXBlLCBpbnQgbnB0cywgUG9pbnQgKnAsCiAJCQkJCQljb25z dCBjaGFyICp0eXBlX25hbWUsIGNvbnN0IGNoYXIgKm9yaWdfc3RyaW5nLAogCQkJCQkJTm9kZSAq ZXNjb250ZXh0KTsKIHN0YXRpYyBjaGFyICpwYXRoX2VuY29kZShlbnVtIHBhdGhfZGVsaW0gcGF0 aF9kZWxpbSwgaW50IG5wdHMsIFBvaW50ICpwdCk7CitzdGF0aWMgRGF0dW0gY2lyY2xlX3BvbHlf aW50ZXJuYWwoaW50MzIgbnB0cywgQ0lSQ0xFICpjaXJjbGUsIEZ1bmN0aW9uQ2FsbEluZm8gZmNp bmZvKTsKIAogCiAvKgpAQCAtNTMxOSwyNiArNTMyMCwzMyBAQCBmYWlsOgogCVBHX1JFVFVSTl9O VUxMKCk7CiB9CiAKLQogRGF0dW0KIGNpcmNsZV9wb2x5KFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJ aW50MzIJCW5wdHMgPSBQR19HRVRBUkdfSU5UMzIoMCk7CiAJQ0lSQ0xFCSAgICpjaXJjbGUgPSBQ R19HRVRBUkdfQ0lSQ0xFX1AoMSk7CisKKwlQR19SRVRVUk5fREFUVU0oY2lyY2xlX3BvbHlfaW50 ZXJuYWwobnB0cywgY2lyY2xlLCBmY2luZm8pKTsKK30KKworRGF0dW0KK2NpcmNsZV9wb2x5X2lu dGVybmFsKGludDMyIG5wdHMsIENJUkNMRSAqY2lyY2xlLCBGdW5jdGlvbkNhbGxJbmZvIGZjaW5m bykKK3sKIAlQT0xZR09OICAgICpwb2x5OwogCWludAkJCWJhc2Vfc2l6ZSwKIAkJCQlzaXplOwog CWludAkJCWk7CiAJZmxvYXQ4CQlhbmdsZTsKIAlmbG9hdDgJCWFuZ2xlc3RlcDsKKwlmbG9hdDgJ CXRlbXA7CiAKIAlpZiAoRlB6ZXJvKGNpcmNsZS0+cmFkaXVzKSkKLQkJZXJlcG9ydChFUlJPUiwK KwkJZXJldHVybihmY2luZm8tPmNvbnRleHQsIChEYXR1bSkgMCwKIAkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJIGVycm1zZygiY2Fubm90IGNvbnZlcnQg Y2lyY2xlIHdpdGggcmFkaXVzIHplcm8gdG8gcG9seWdvbiIpKSk7CiAKIAlpZiAobnB0cyA8IDIp Ci0JCWVyZXBvcnQoRVJST1IsCisJCWVyZXR1cm4oZmNpbmZvLT5jb250ZXh0LCAoRGF0dW0pIDAs CiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJIGVy cm1zZygibXVzdCByZXF1ZXN0IGF0IGxlYXN0IDIgcG9pbnRzIikpKTsKIApAQCAtNTM0Nyw3ICs1 MzU1LDcgQEAgY2lyY2xlX3BvbHkoUEdfRlVOQ1RJT05fQVJHUykKIAogCS8qIENoZWNrIGZvciBp bnRlZ2VyIG92ZXJmbG93ICovCiAJaWYgKGJhc2Vfc2l6ZSAvIG5wdHMgIT0gc2l6ZW9mKHBvbHkt PnBbMF0pIHx8IHNpemUgPD0gYmFzZV9zaXplKQotCQllcmVwb3J0KEVSUk9SLAorCQllcmV0dXJu KGZjaW5mby0+Y29udGV4dCwgKERhdHVtKSAwLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPR1JB TV9MSU1JVF9FWENFRURFRCksCiAJCQkJIGVycm1zZygidG9vIG1hbnkgcG9pbnRzIHJlcXVlc3Rl ZCIpKSk7CiAKQEAgLTUzNTksMTcgKzUzNjcsNDMgQEAgY2lyY2xlX3BvbHkoUEdfRlVOQ1RJT05f QVJHUykKIAogCWZvciAoaSA9IDA7IGkgPCBucHRzOyBpKyspCiAJewotCQlhbmdsZSA9IGZsb2F0 OF9tdWwoYW5nbGVzdGVwLCBpKTsKKwkJYW5nbGUgPSBmbG9hdDhfbXVsX3NhZmUoYW5nbGVzdGVw LCBpLCBmY2luZm8tPmNvbnRleHQpOworCQlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChmY2luZm8t PmNvbnRleHQpKQorCQkJZ290byBmYWlsOwogCi0JCXBvbHktPnBbaV0ueCA9IGZsb2F0OF9taShj aXJjbGUtPmNlbnRlci54LAotCQkJCQkJCQkgZmxvYXQ4X211bChjaXJjbGUtPnJhZGl1cywgY29z KGFuZ2xlKSkpOwotCQlwb2x5LT5wW2ldLnkgPSBmbG9hdDhfcGwoY2lyY2xlLT5jZW50ZXIueSwK LQkJCQkJCQkJIGZsb2F0OF9tdWwoY2lyY2xlLT5yYWRpdXMsIHNpbihhbmdsZSkpKTsKKwkJdGVt cCA9IGZsb2F0OF9tdWxfc2FmZShjaXJjbGUtPnJhZGl1cywgY29zKGFuZ2xlKSwgZmNpbmZvLT5j b250ZXh0KTsKKwkJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZmNpbmZvLT5jb250ZXh0KSkKKwkJ CWdvdG8gZmFpbDsKKworCQlwb2x5LT5wW2ldLnggPSBmbG9hdDhfbWlfc2FmZShjaXJjbGUtPmNl bnRlci54LCB0ZW1wLCBmY2luZm8tPmNvbnRleHQpOworCQlpZiAoU09GVF9FUlJPUl9PQ0NVUlJF RChmY2luZm8tPmNvbnRleHQpKQorCQkJZ290byBmYWlsOworCisJCXRlbXAgPSBmbG9hdDhfbXVs X3NhZmUoY2lyY2xlLT5yYWRpdXMsIHNpbihhbmdsZSksIGZjaW5mby0+Y29udGV4dCk7CisJCWlm IChTT0ZUX0VSUk9SX09DQ1VSUkVEKGZjaW5mby0+Y29udGV4dCkpCisJCQlnb3RvIGZhaWw7CisK KwkJcG9seS0+cFtpXS55ID0gZmxvYXQ4X3BsX3NhZmUoY2lyY2xlLT5jZW50ZXIueSwgdGVtcCwg ZmNpbmZvLT5jb250ZXh0KTsKKwkJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZmNpbmZvLT5jb250 ZXh0KSkKKwkJCWdvdG8gZmFpbDsKIAl9CiAKIAltYWtlX2JvdW5kX2JveChwb2x5KTsKIAogCVBH X1JFVFVSTl9QT0xZR09OX1AocG9seSk7CisKK2ZhaWw6CisJUEdfUkVUVVJOX05VTEwoKTsKK30K KworLyogY29udmVydCBjaXJjbGUgdG8gMTItdmVydGV4IHBvbHlnb24gKi8KK0RhdHVtCitjaXJj bGVfdG9fcG9seShQR19GVU5DVElPTl9BUkdTKQoreworCWludDMyCQlucHRzID0gMTI7CisJQ0lS Q0xFCSAgICpjaXJjbGUgPSBQR19HRVRBUkdfQ0lSQ0xFX1AoMCk7CisKKwlQR19SRVRVUk5fREFU VU0oY2lyY2xlX3BvbHlfaW50ZXJuYWwobnB0cywgY2lyY2xlLCBmY2luZm8pKTsKIH0KIAogLyoK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDAxMThlOTcwZGRhLi4zNTc5Y2VjNTc0NCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0zMzkwLDggKzMzOTAsOCBAQAogICBwcm9uYW1lID0+ ICdjZW50ZXInLCBwcm9yZXR0eXBlID0+ICdwb2ludCcsIHByb2FyZ3R5cGVzID0+ICdjaXJjbGUn LAogICBwcm9zcmMgPT4gJ2NpcmNsZV9jZW50ZXInIH0sCiB7IG9pZCA9PiAnMTU0NCcsIGRlc2Ny ID0+ICdjb252ZXJ0IGNpcmNsZSB0byAxMi12ZXJ0ZXggcG9seWdvbicsCi0gIHByb25hbWUgPT4g J3BvbHlnb24nLCBwcm9sYW5nID0+ICdzcWwnLCBwcm9yZXR0eXBlID0+ICdwb2x5Z29uJywKLSAg cHJvYXJndHlwZXMgPT4gJ2NpcmNsZScsIHByb3NyYyA9PiAnc2VlIHN5c3RlbV9mdW5jdGlvbnMu c3FsJyB9LAorICBwcm9uYW1lID0+ICdwb2x5Z29uJywgcHJvcmV0dHlwZSA9PiAncG9seWdvbics CisgIHByb2FyZ3R5cGVzID0+ICdjaXJjbGUnLCBwcm9zcmMgPT4gJ2NpcmNsZV90b19wb2x5JyB9 LAogeyBvaWQgPT4gJzE1NDUnLCBkZXNjciA9PiAnbnVtYmVyIG9mIHBvaW50cycsCiAgIHByb25h bWUgPT4gJ25wb2ludHMnLCBwcm9yZXR0eXBlID0+ICdpbnQ0JywgcHJvYXJndHlwZXMgPT4gJ3Bh dGgnLAogICBwcm9zcmMgPT4gJ3BhdGhfbnBvaW50cycgfSwKLS0gCjIuMzQuMQoK --0000000000006bcf4f064e0ad34e Content-Type: text/x-patch; charset="US-ASCII"; name="v25-0001-error-safe-for-casting-text-to-other-types-per-pg_cast.patch" Content-Disposition: attachment; filename="v25-0001-error-safe-for-casting-text-to-other-types-per-pg_cast.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn9lohsg5 RnJvbSBkZDY3NTU5OTE4YzU5MjlhNmRhNTg5YWJjN2QyODdlMGJjMGI1Nzk3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMjAgTWFyIDIwMjYgMDk6NTU6NTggKzA4MDAKU3ViamVjdDogW1BBVENIIHYy NSAxLzldIGVycm9yIHNhZmUgZm9yIGNhc3RpbmcgdGV4dCB0byBvdGhlciB0eXBlcyBwZXIKIHBn X2Nhc3QKCnNlbGVjdCBjYXN0c291cmNlOjpyZWd0eXBlLCBjYXN0dGFyZ2V0OjpyZWd0eXBlLCBj YXN0ZnVuYywKY2FzdGNvbnRleHQsY2FzdG1ldGhvZCwgcHAucHJvc3JjLCBwcC5wcm9uYW1lIGZy b20gcGdfY2FzdCBwYyBqb2luIHBnX3Byb2MgcHAKb24gcHAub2lkID0gcGMuY2FzdGZ1bmMgYW5k IHBjLmNhc3RmdW5jID4gMAphbmQgY2FzdHNvdXJjZTo6cmVndHlwZSA9ICd0ZXh0Jzo6cmVndHlw ZQpvcmRlciBieSBjYXN0c291cmNlOjpyZWd0eXBlOwoKIGNhc3Rzb3VyY2UgfCBjYXN0dGFyZ2V0 IHwgY2FzdGZ1bmMgfCBjYXN0Y29udGV4dCB8IGNhc3RtZXRob2QgfCAgICBwcm9zcmMgICAgIHwg cHJvbmFtZQotLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KIHRleHQgICAgICAgfCBy ZWdjbGFzcyAgIHwgICAgIDEwNzkgfCBpICAgICAgICAgICB8IGYgICAgICAgICAgfCB0ZXh0X3Jl Z2NsYXNzIHwgcmVnY2xhc3MKIHRleHQgICAgICAgfCAiY2hhciIgICAgIHwgICAgICA5NDQgfCBh ICAgICAgICAgICB8IGYgICAgICAgICAgfCB0ZXh0X2NoYXIgICAgIHwgY2hhcgogdGV4dCAgICAg ICB8IG5hbWUgICAgICAgfCAgICAgIDQwNyB8IGkgICAgICAgICAgIHwgZiAgICAgICAgICB8IHRl eHRfbmFtZSAgICAgfCBuYW1lCiB0ZXh0ICAgICAgIHwgeG1sICAgICAgICB8ICAgICAyODk2IHwg ZSAgICAgICAgICAgfCBmICAgICAgICAgIHwgdGV4dHRveG1sICAgICB8IHhtbAooNCByb3dzKQoK QWxyZWFkeSBlcnJvciBzYWZlOiB0ZXh0X25hbWUsIHRleHRfY2hhciwgdGV4dHRveG1sLgoKQXV0 aG9yOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBB bmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4KUmV2aWV3ZWQtYnk6IEFtdWwgU3Vs IDxzdWxhbXVsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENvcmV5IEh1aW5rZXIgPGNvcmV5Lmh1 aW5rZXJAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBRGtMTT1m djFKZlk0VWZhLWpjd3dOYmpRaXhOVmlza1E4alp1M1R6X3A2NTZpXzRoUUBtYWlsLmdtYWlsLmNv bQpDb21taXRmZXN0OiBodHRwczovL2NvbW1pdGZlc3QucG9zdGdyZXNxbC5vcmcvcGF0Y2gvNTk0 MQotLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMgfCA2NiArKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMgfCAx MyArKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jIHwgMTAgKysrKy0KIHNy Yy9pbmNsdWRlL2NhdGFsb2cvbmFtZXNwYWNlLmggfCAgNiArKysKIHNyYy9pbmNsdWRlL3V0aWxz L3ZhcmxlbmEuaCAgICAgfCAgMSArCiA1IGZpbGVzIGNoYW5nZWQsIDcyIGluc2VydGlvbnMoKyks IDI0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNw YWNlLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jCmluZGV4IDU2Yjg3ZDg3OGU4 Li4wNjEwODlmMDRjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2Uu YworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jCkBAIC00NDIsNiArNDQyLDE2 IEBAIE9pZAogUmFuZ2VWYXJHZXRSZWxpZEV4dGVuZGVkKGNvbnN0IFJhbmdlVmFyICpyZWxhdGlv biwgTE9DS01PREUgbG9ja21vZGUsCiAJCQkJCQkgdWludDMyIGZsYWdzLAogCQkJCQkJIFJhbmdl VmFyR2V0UmVsaWRDYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqY2FsbGJhY2tfYXJnKQoreworCXJl dHVybiBSYW5nZVZhckdldFJlbGlkRXh0ZW5kZWRTYWZlKHJlbGF0aW9uLCBsb2NrbW9kZSwgZmxh Z3MsCisJCQkJCQkJCQkJY2FsbGJhY2ssIGNhbGxiYWNrX2FyZywKKwkJCQkJCQkJCQlOVUxMKTsK K30KKworT2lkCitSYW5nZVZhckdldFJlbGlkRXh0ZW5kZWRTYWZlKGNvbnN0IFJhbmdlVmFyICpy ZWxhdGlvbiwgTE9DS01PREUgbG9ja21vZGUsIHVpbnQzMiBmbGFncywKKwkJCQkJCQkgUmFuZ2VW YXJHZXRSZWxpZENhbGxiYWNrIGNhbGxiYWNrLCB2b2lkICpjYWxsYmFja19hcmcsCisJCQkJCQkJ IE5vZGUgKmVzY29udGV4dCkKIHsKIAl1aW50NjQJCWludmFsX2NvdW50OwogCU9pZAkJCXJlbElk OwpAQCAtNDU4LDcgKzQ2OCw3IEBAIFJhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZChjb25zdCBSYW5n ZVZhciAqcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlLAogCWlmIChyZWxhdGlvbi0+Y2F0YWxv Z25hbWUpCiAJewogCQlpZiAoc3RyY21wKHJlbGF0aW9uLT5jYXRhbG9nbmFtZSwgZ2V0X2RhdGFi YXNlX25hbWUoTXlEYXRhYmFzZUlkKSkgIT0gMCkKLQkJCWVyZXBvcnQoRVJST1IsCisJCQllcmV0 dXJuKGVzY29udGV4dCwgSW52YWxpZE9pZCwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAogCQkJCQkgZXJybXNnKCJjcm9zcy1kYXRhYmFzZSByZWZlcmVuY2Vz IGFyZSBub3QgaW1wbGVtZW50ZWQ6IFwiJXMuJXMuJXNcIiIsCiAJCQkJCQkJcmVsYXRpb24tPmNh dGFsb2duYW1lLCByZWxhdGlvbi0+c2NoZW1hbmFtZSwKQEAgLTUxNSw3ICs1MjUsNyBAQCBSYW5n ZVZhckdldFJlbGlkRXh0ZW5kZWQoY29uc3QgUmFuZ2VWYXIgKnJlbGF0aW9uLCBMT0NLTU9ERSBs b2NrbW9kZSwKIAkJCQkJICogcmV0dXJuIEludmFsaWRPaWQuCiAJCQkJCSAqLwogCQkJCQlpZiAo bmFtZXNwYWNlSWQgIT0gbXlUZW1wTmFtZXNwYWNlKQotCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCWVyZXR1cm4oZXNjb250ZXh0LCBJbnZhbGlkT2lkLAogCQkJCQkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfVEFCTEVfREVGSU5JVElPTiksCiAJCQkJCQkJCSBlcnJtc2coInRlbXBvcmFy eSB0YWJsZXMgY2Fubm90IHNwZWNpZnkgYSBzY2hlbWEgbmFtZSIpKSk7CiAJCQkJfQpAQCAtNTk1 LDE2ICs2MDUsMjIgQEAgUmFuZ2VWYXJHZXRSZWxpZEV4dGVuZGVkKGNvbnN0IFJhbmdlVmFyICpy ZWxhdGlvbiwgTE9DS01PREUgbG9ja21vZGUsCiAJCXsKIAkJCWludAkJCWVsZXZlbCA9IChmbGFn cyAmIFJWUl9TS0lQX0xPQ0tFRCkgPyBERUJVRzEgOiBFUlJPUjsKIAotCQkJaWYgKHJlbGF0aW9u LT5zY2hlbWFuYW1lKQorCQkJaWYgKGVzY29udGV4dCA9PSBOVUxMKQogCQkJCWVyZXBvcnQoZWxl dmVsLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9MT0NLX05PVF9BVkFJTEFCTEUpLAotCQkJCQkJ IGVycm1zZygiY291bGQgbm90IG9idGFpbiBsb2NrIG9uIHJlbGF0aW9uIFwiJXMuJXNcIiIsCi0J CQkJCQkJCXJlbGF0aW9uLT5zY2hlbWFuYW1lLCByZWxhdGlvbi0+cmVsbmFtZSkpKTsKKwkJCQkJ CWVycmNvZGUoRVJSQ09ERV9MT0NLX05PVF9BVkFJTEFCTEUpLAorCQkJCQkJcmVsYXRpb24tPnNj aGVtYW5hbWUgPworCQkJCQkJZXJybXNnKCJjb3VsZCBub3Qgb2J0YWluIGxvY2sgb24gcmVsYXRp b24gXCIlcy4lc1wiIiwKKwkJCQkJCQkgICByZWxhdGlvbi0+c2NoZW1hbmFtZSwgcmVsYXRpb24t PnJlbG5hbWUpIDoKKwkJCQkJCWVycm1zZygiY291bGQgbm90IG9idGFpbiBsb2NrIG9uIHJlbGF0 aW9uIFwiJXNcIiIsCisJCQkJCQkJICAgcmVsYXRpb24tPnJlbG5hbWUpKTsKIAkJCWVsc2UKLQkJ CQllcmVwb3J0KGVsZXZlbCwKLQkJCQkJCShlcnJjb2RlKEVSUkNPREVfTE9DS19OT1RfQVZBSUxB QkxFKSwKLQkJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBvYnRhaW4gbG9jayBvbiByZWxhdGlvbiBc IiVzXCIiLAotCQkJCQkJCQlyZWxhdGlvbi0+cmVsbmFtZSkpKTsKKwkJCQllcmV0dXJuKGVzY29u dGV4dCwgSW52YWxpZE9pZCwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9MT0NLX05PVF9BVkFJTEFC TEUpLAorCQkJCQkJcmVsYXRpb24tPnNjaGVtYW5hbWUgPworCQkJCQkJZXJybXNnKCJjb3VsZCBu b3Qgb2J0YWluIGxvY2sgb24gcmVsYXRpb24gXCIlcy4lc1wiIiwKKwkJCQkJCQkgICByZWxhdGlv bi0+c2NoZW1hbmFtZSwgcmVsYXRpb24tPnJlbG5hbWUpIDoKKwkJCQkJCWVycm1zZygiY291bGQg bm90IG9idGFpbiBsb2NrIG9uIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJCQkJICAgcmVsYXRpb24t PnJlbG5hbWUpKTsKIAogCQkJcmV0dXJuIEludmFsaWRPaWQ7CiAJCX0KQEAgLTYyOCwxNiArNjQ0 LDIyIEBAIFJhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZChjb25zdCBSYW5nZVZhciAqcmVsYXRpb24s IExPQ0tNT0RFIGxvY2ttb2RlLAogCXsKIAkJaW50CQkJZWxldmVsID0gbWlzc2luZ19vayA/IERF QlVHMSA6IEVSUk9SOwogCi0JCWlmIChyZWxhdGlvbi0+c2NoZW1hbmFtZSkKKwkJaWYgKGVzY29u dGV4dCA9PSBOVUxMKQogCQkJZXJlcG9ydChlbGV2ZWwsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVf VU5ERUZJTkVEX1RBQkxFKSwKLQkJCQkJIGVycm1zZygicmVsYXRpb24gXCIlcy4lc1wiIGRvZXMg bm90IGV4aXN0IiwKLQkJCQkJCQlyZWxhdGlvbi0+c2NoZW1hbmFtZSwgcmVsYXRpb24tPnJlbG5h bWUpKSk7CisJCQkJCWVycmNvZGUoRVJSQ09ERV9MT0NLX05PVF9BVkFJTEFCTEUpLAorCQkJCQly ZWxhdGlvbi0+c2NoZW1hbmFtZSA/CisJCQkJCWVycm1zZygicmVsYXRpb24gXCIlcy4lc1wiIGRv ZXMgbm90IGV4aXN0IiwKKwkJCQkJCSAgIHJlbGF0aW9uLT5zY2hlbWFuYW1lLCByZWxhdGlvbi0+ cmVsbmFtZSkgOgorCQkJCQllcnJtc2coInJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIs CisJCQkJCQkgICByZWxhdGlvbi0+cmVsbmFtZSkpOwogCQllbHNlCi0JCQllcmVwb3J0KGVsZXZl bCwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfVEFCTEUpLAotCQkJCQkgZXJybXNn KCJyZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAotCQkJCQkJCXJlbGF0aW9uLT5yZWxu YW1lKSkpOworCQkJZXJldHVybihlc2NvbnRleHQsIEludmFsaWRPaWQsCisJCQkJCWVycmNvZGUo RVJSQ09ERV9MT0NLX05PVF9BVkFJTEFCTEUpLAorCQkJCQlyZWxhdGlvbi0+c2NoZW1hbmFtZSA/ CisJCQkJCWVycm1zZygicmVsYXRpb24gXCIlcy4lc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJ CSAgIHJlbGF0aW9uLT5zY2hlbWFuYW1lLCByZWxhdGlvbi0+cmVsbmFtZSkgOgorCQkJCQllcnJt c2coInJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQkgICByZWxhdGlvbi0+ cmVsbmFtZSkpOwogCX0KIAlyZXR1cm4gcmVsSWQ7CiB9CkBAIC0zNjI0LDYgKzM2NDYsMTIgQEAg Z2V0X25hbWVzcGFjZV9vaWQoY29uc3QgY2hhciAqbnNwbmFtZSwgYm9vbCBtaXNzaW5nX29rKQog ICovCiBSYW5nZVZhciAqCiBtYWtlUmFuZ2VWYXJGcm9tTmFtZUxpc3QoY29uc3QgTGlzdCAqbmFt ZXMpCit7CisJcmV0dXJuIG1ha2VSYW5nZVZhckZyb21OYW1lTGlzdFNhZmUobmFtZXMsIE5VTEwp OworfQorCitSYW5nZVZhciAqCittYWtlUmFuZ2VWYXJGcm9tTmFtZUxpc3RTYWZlKGNvbnN0IExp c3QgKm5hbWVzLCBOb2RlICplc2NvbnRleHQpCiB7CiAJUmFuZ2VWYXIgICAqcmVsID0gbWFrZVJh bmdlVmFyKE5VTEwsIE5VTEwsIC0xKTsKIApAQCAtMzY0Miw3ICszNjcwLDcgQEAgbWFrZVJhbmdl VmFyRnJvbU5hbWVMaXN0KGNvbnN0IExpc3QgKm5hbWVzKQogCQkJcmVsLT5yZWxuYW1lID0gc3Ry VmFsKGx0aGlyZChuYW1lcykpOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6Ci0JCQllcmVwb3J0KEVS Uk9SLAorCQkJZXJldHVybihlc2NvbnRleHQsIE5VTEwsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVf U1lOVEFYX0VSUk9SKSwKIAkJCQkJIGVycm1zZygiaW1wcm9wZXIgcmVsYXRpb24gbmFtZSAodG9v IG1hbnkgZG90dGVkIG5hbWVzKTogJXMiLAogCQkJCQkJCU5hbWVMaXN0VG9TdHJpbmcobmFtZXMp KSkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JlZ3Byb2MuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMKaW5kZXggZWUzNGQxZDg1ZjguLjYwNGUxOWExY2I5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmVncHJvYy5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMKQEAgLTE5MDEsMTIgKzE5MDEsMTkgQEAgdGV4dF9y ZWdjbGFzcyhQR19GVU5DVElPTl9BUkdTKQogCXRleHQJICAgKnJlbG5hbWUgPSBQR19HRVRBUkdf VEVYVF9QUCgwKTsKIAlPaWQJCQlyZXN1bHQ7CiAJUmFuZ2VWYXIgICAqcnY7CisJTGlzdAkgICAq bmFtZWxpc3Q7CiAKLQlydiA9IG1ha2VSYW5nZVZhckZyb21OYW1lTGlzdCh0ZXh0VG9RdWFsaWZp ZWROYW1lTGlzdChyZWxuYW1lKSk7CisJbmFtZWxpc3QgPSB0ZXh0VG9RdWFsaWZpZWROYW1lTGlz dFNhZmUocmVsbmFtZSwgZmNpbmZvLT5jb250ZXh0KTsKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJF RChmY2luZm8tPmNvbnRleHQpKQorCQlQR19SRVRVUk5fTlVMTCgpOworCisJcnYgPSBtYWtlUmFu Z2VWYXJGcm9tTmFtZUxpc3RTYWZlKG5hbWVsaXN0LCBmY2luZm8tPmNvbnRleHQpOworCWlmIChT T0ZUX0VSUk9SX09DQ1VSUkVEKGZjaW5mby0+Y29udGV4dCkpCisJCVBHX1JFVFVSTl9OVUxMKCk7 CiAKIAkvKiBXZSBtaWdodCBub3QgZXZlbiBoYXZlIHBlcm1pc3Npb25zIG9uIHRoaXMgcmVsYXRp b247IGRvbid0IGxvY2sgaXQuICovCi0JcmVzdWx0ID0gUmFuZ2VWYXJHZXRSZWxpZChydiwgTm9M b2NrLCBmYWxzZSk7Ci0KKwlyZXN1bHQgPSBSYW5nZVZhckdldFJlbGlkRXh0ZW5kZWRTYWZlKHJ2 LCBOb0xvY2ssIDAsIE5VTEwsIE5VTEwsCisJCQkJCQkJCQkJICBmY2luZm8tPmNvbnRleHQpOwog CVBHX1JFVFVSTl9PSUQocmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3ZhcmxlbmEuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMKaW5kZXgg N2IxZWU2MWJkZTYuLjU2ZGEzZDdiNDQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvdmFybGVuYS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMKQEAgLTI3 MTcsNiArMjcxNywxMiBAQCBuYW1lX3RleHQoUEdfRlVOQ1RJT05fQVJHUykKICAqLwogTGlzdCAq CiB0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdCh0ZXh0ICp0ZXh0dmFsKQoreworCXJldHVybiB0ZXh0 VG9RdWFsaWZpZWROYW1lTGlzdFNhZmUodGV4dHZhbCwgTlVMTCk7Cit9CisKK0xpc3QgKgordGV4 dFRvUXVhbGlmaWVkTmFtZUxpc3RTYWZlKHRleHQgKnRleHR2YWwsIE5vZGUgKmVzY29udGV4dCkK IHsKIAljaGFyCSAgICpyYXduYW1lOwogCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKQEAgLTI3Mjgs MTIgKzI3MzQsMTIgQEAgdGV4dFRvUXVhbGlmaWVkTmFtZUxpc3QodGV4dCAqdGV4dHZhbCkKIAly YXduYW1lID0gdGV4dF90b19jc3RyaW5nKHRleHR2YWwpOwogCiAJaWYgKCFTcGxpdElkZW50aWZp ZXJTdHJpbmcocmF3bmFtZSwgJy4nLCAmbmFtZWxpc3QpKQotCQllcmVwb3J0KEVSUk9SLAorCQll cmV0dXJuKGVzY29udGV4dCwgTklMLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9OQU1F KSwKIAkJCQkgZXJybXNnKCJpbnZhbGlkIG5hbWUgc3ludGF4IikpKTsKIAogCWlmIChuYW1lbGlz dCA9PSBOSUwpCi0JCWVyZXBvcnQoRVJST1IsCisJCWVyZXR1cm4oZXNjb250ZXh0LCBOSUwsCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX05BTUUpLAogCQkJCSBlcnJtc2coImludmFsaWQg bmFtZSBzeW50YXgiKSkpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL25hbWVz cGFjZS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaAppbmRleCA5NDUzYTNlNDkz Mi4uN2YzMTQxYmEyN2QgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvbmFtZXNwYWNl LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaApAQCAtMTAzLDYgKzEwMywx MSBAQCBleHRlcm4gT2lkCVJhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZChjb25zdCBSYW5nZVZhciAq cmVsYXRpb24sCiAJCQkJCQkJCQkgTE9DS01PREUgbG9ja21vZGUsIHVpbnQzMiBmbGFncywKIAkJ CQkJCQkJCSBSYW5nZVZhckdldFJlbGlkQ2FsbGJhY2sgY2FsbGJhY2ssCiAJCQkJCQkJCQkgdm9p ZCAqY2FsbGJhY2tfYXJnKTsKK2V4dGVybiBPaWQgUmFuZ2VWYXJHZXRSZWxpZEV4dGVuZGVkU2Fm ZShjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCisJCQkJCQkJCQkJTE9DS01PREUgbG9ja21vZGUs IHVpbnQzMiBmbGFncywKKwkJCQkJCQkJCQlSYW5nZVZhckdldFJlbGlkQ2FsbGJhY2sgY2FsbGJh Y2ssCisJCQkJCQkJCQkJdm9pZCAqY2FsbGJhY2tfYXJnLAorCQkJCQkJCQkJCU5vZGUgKmVzY29u dGV4dCk7CiBleHRlcm4gT2lkCVJhbmdlVmFyR2V0Q3JlYXRpb25OYW1lc3BhY2UoY29uc3QgUmFu Z2VWYXIgKm5ld1JlbGF0aW9uKTsKIGV4dGVybiBPaWQJUmFuZ2VWYXJHZXRBbmRDaGVja0NyZWF0 aW9uTmFtZXNwYWNlKFJhbmdlVmFyICpyZWxhdGlvbiwKIAkJCQkJCQkJCQkJCSBMT0NLTU9ERSBs b2NrbW9kZSwKQEAgLTE2OCw2ICsxNzMsNyBAQCBleHRlcm4gT2lkCUxvb2t1cENyZWF0aW9uTmFt ZXNwYWNlKGNvbnN0IGNoYXIgKm5zcG5hbWUpOwogZXh0ZXJuIHZvaWQgQ2hlY2tTZXROYW1lc3Bh Y2UoT2lkIG9sZE5zcE9pZCwgT2lkIG5zcE9pZCk7CiBleHRlcm4gT2lkCVF1YWxpZmllZE5hbWVH ZXRDcmVhdGlvbk5hbWVzcGFjZShjb25zdCBMaXN0ICpuYW1lcywgY2hhciAqKm9iam5hbWVfcCk7 CiBleHRlcm4gUmFuZ2VWYXIgKm1ha2VSYW5nZVZhckZyb21OYW1lTGlzdChjb25zdCBMaXN0ICpu YW1lcyk7CitleHRlcm4gUmFuZ2VWYXIgKm1ha2VSYW5nZVZhckZyb21OYW1lTGlzdFNhZmUoY29u c3QgTGlzdCAqbmFtZXMsIE5vZGUgKmVzY29udGV4dCk7CiBleHRlcm4gY2hhciAqTmFtZUxpc3RU b1N0cmluZyhjb25zdCBMaXN0ICpuYW1lcyk7CiBleHRlcm4gY2hhciAqTmFtZUxpc3RUb1F1b3Rl ZFN0cmluZyhjb25zdCBMaXN0ICpuYW1lcyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0 aWxzL3ZhcmxlbmEuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3ZhcmxlbmEuaAppbmRleCA0YjMyNTc0 YTA3NS4uNWJjNzhhYTAyYzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3ZhcmxlbmEu aAorKysgYi9zcmMvaW5jbHVkZS91dGlscy92YXJsZW5hLmgKQEAgLTI3LDYgKzI3LDcgQEAgZXh0 ZXJuIGludAl2YXJzdHJfbGV2ZW5zaHRlaW5fbGVzc19lcXVhbChjb25zdCBjaGFyICpzb3VyY2Us IGludCBzbGVuLAogCQkJCQkJCQkJCSAgaW50IGluc19jLCBpbnQgZGVsX2MsIGludCBzdWJfYywK IAkJCQkJCQkJCQkgIGludCBtYXhfZCwgYm9vbCB0cnVzdGVkKTsKIGV4dGVybiBMaXN0ICp0ZXh0 VG9RdWFsaWZpZWROYW1lTGlzdCh0ZXh0ICp0ZXh0dmFsKTsKK2V4dGVybiBMaXN0ICp0ZXh0VG9R dWFsaWZpZWROYW1lTGlzdFNhZmUodGV4dCAqdGV4dHZhbCwgTm9kZSAqZXNjb250ZXh0KTsKIGV4 dGVybiBib29sIFNwbGl0SWRlbnRpZmllclN0cmluZyhjaGFyICpyYXdzdHJpbmcsIGNoYXIgc2Vw YXJhdG9yLAogCQkJCQkJCQkgIExpc3QgKipuYW1lbGlzdCk7CiBleHRlcm4gYm9vbCBTcGxpdERp cmVjdG9yaWVzU3RyaW5nKGNoYXIgKnJhd3N0cmluZywgY2hhciBzZXBhcmF0b3IsCi0tIAoyLjM0 LjEKCg== --0000000000006bcf4f064e0ad34e Content-Type: text/x-patch; charset="US-ASCII"; name="v25-0003-extended-function-for-float-overflow-underflow-zero_divide.patch" Content-Disposition: attachment; filename="v25-0003-extended-function-for-float-overflow-underflow-zero_divide.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn9lohsn8 RnJvbSBhZTk2NGUzMTZiYTU2NWZlYmI0ZGQzYmM4ZDFjNWUzMjQ5OWFlZTUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjUgTWFyIDIwMjYgMTY6MTk6MzkgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy NSAzLzldIGV4dGVuZGVkIGZ1bmN0aW9uIGZvciBmbG9hdAogb3ZlcmZsb3cvdW5kZXJmbG93L3pl cm9fZGl2aWRlCgpmbG9hdF9vdmVyZmxvd19lcnJvcl9leHQsIGZsb2F0X3VuZGVyZmxvd19lcnJv cl9leHQsCmZsb2F0X3plcm9fZGl2aWRlX2Vycm9yX2V4dC4KCkF1dGhvcjogamlhbiBoZSA8amlh bi51bml2ZXJzYWxpdHlAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9t L0NBRGtMTT1mdjFKZlk0VWZhLWpjd3dOYmpRaXhOVmlza1E4alp1M1R6X3A2NTZpXzRoUUBtYWls LmdtYWlsLmNvbQpDb21taXRmZXN0OiBodHRwczovL2NvbW1pdGZlc3QucG9zdGdyZXNxbC5vcmcv cGF0Y2gvNTk0MQotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9mbG9hdC5jIHwgMjQgKysrKysr KysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS91dGlscy9mbG9hdC5oICAgICB8ICAzICsr KwogMiBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2Zsb2F0LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZmxvYXQuYwpp bmRleCBhMDZmZWY0MjkwMS4uN2IxYmRmMWU1NzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9mbG9hdC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mbG9hdC5jCkBAIC0x MjMsNiArMTIzLDMwIEBAIGZsb2F0X3plcm9fZGl2aWRlX2Vycm9yKHZvaWQpCiAJCQkgZXJybXNn KCJkaXZpc2lvbiBieSB6ZXJvIikpKTsKIH0KIAorZmxvYXQ4CitmbG9hdF9vdmVyZmxvd19lcnJv cl9leHQoc3RydWN0IE5vZGUgKmVzY29udGV4dCkKK3sKKwllcmV0dXJuKGVzY29udGV4dCwgMC4w LAorCQkJZXJyY29kZShFUlJDT0RFX05VTUVSSUNfVkFMVUVfT1VUX09GX1JBTkdFKSwKKwkJCWVy cm1zZygidmFsdWUgb3V0IG9mIHJhbmdlOiBvdmVyZmxvdyIpKTsKK30KKworZmxvYXQ4CitmbG9h dF91bmRlcmZsb3dfZXJyb3JfZXh0KHN0cnVjdCBOb2RlICplc2NvbnRleHQpCit7CisJZXJldHVy bihlc2NvbnRleHQsIDAuMCwKKwkJCWVycmNvZGUoRVJSQ09ERV9OVU1FUklDX1ZBTFVFX09VVF9P Rl9SQU5HRSksCisJCQllcnJtc2coInZhbHVlIG91dCBvZiByYW5nZTogdW5kZXJmbG93IikpOwor fQorCitmbG9hdDgKK2Zsb2F0X3plcm9fZGl2aWRlX2Vycm9yX2V4dChzdHJ1Y3QgTm9kZSAqZXNj b250ZXh0KQoreworCWVyZXR1cm4oZXNjb250ZXh0LCAwLjAsCisJCQkoZXJyY29kZShFUlJDT0RF X0RJVklTSU9OX0JZX1pFUk8pLAorCQkJIGVycm1zZygiZGl2aXNpb24gYnkgemVybyIpKSk7Cit9 CisKIAogLyoKICAqIFJldHVybnMgLTEgaWYgJ3ZhbCcgcmVwcmVzZW50cyBuZWdhdGl2ZSBpbmZp bml0eSwgMSBpZiAndmFsJwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvZmxvYXQuaCBi L3NyYy9pbmNsdWRlL3V0aWxzL2Zsb2F0LmgKaW5kZXggYjM0MDY3OGNhOTIuLjU4NDBiYmY3ZGM4 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9mbG9hdC5oCisrKyBiL3NyYy9pbmNsdWRl L3V0aWxzL2Zsb2F0LmgKQEAgLTMzLDYgKzMzLDkgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCBl eHRyYV9mbG9hdF9kaWdpdHM7CiBwZ19ub3JldHVybiBleHRlcm4gdm9pZCBmbG9hdF9vdmVyZmxv d19lcnJvcih2b2lkKTsKIHBnX25vcmV0dXJuIGV4dGVybiB2b2lkIGZsb2F0X3VuZGVyZmxvd19l cnJvcih2b2lkKTsKIHBnX25vcmV0dXJuIGV4dGVybiB2b2lkIGZsb2F0X3plcm9fZGl2aWRlX2Vy cm9yKHZvaWQpOworZXh0ZXJuIGZsb2F0OCBmbG9hdF9vdmVyZmxvd19lcnJvcl9leHQoc3RydWN0 IE5vZGUgKmVzY29udGV4dCk7CitleHRlcm4gZmxvYXQ4IGZsb2F0X3VuZGVyZmxvd19lcnJvcl9l eHQoc3RydWN0IE5vZGUgKmVzY29udGV4dCk7CitleHRlcm4gZmxvYXQ4IGZsb2F0X3plcm9fZGl2 aWRlX2Vycm9yX2V4dChzdHJ1Y3QgTm9kZSAqZXNjb250ZXh0KTsKIGV4dGVybiBpbnQJaXNfaW5m aW5pdGUoZmxvYXQ4IHZhbCk7CiBleHRlcm4gZmxvYXQ4IGZsb2F0OGluX2ludGVybmFsKGNoYXIg Km51bSwgY2hhciAqKmVuZHB0cl9wLAogCQkJCQkJCQljb25zdCBjaGFyICp0eXBlX25hbWUsIGNv bnN0IGNoYXIgKm9yaWdfc3RyaW5nLAotLSAKMi4zNC4xCgo= --0000000000006bcf4f064e0ad34e Content-Type: text/x-patch; charset="US-ASCII"; name="v25-0005-refactor-point_dt.patch" Content-Disposition: attachment; filename="v25-0005-refactor-point_dt.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn9lohsj6 RnJvbSBkOGJiM2EzNzQ4YzFmMTY4NzhkOGNkM2E3MTM0ZDUwOTc1OWMyOTg0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMjAgTWFyIDIwMjYgMTA6MTg6MDEgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy NSA1LzldIHJlZmFjdG9yIHBvaW50X2R0CgpSZWZhY3RvciBwb2ludF9kdCB0byBiZSBlcnJvci1z YWZlIGZvciBhbiB1cGNvbWluZyBwYXRjaCB1c2UuICBOb3RlIGZvciBmdXR1cmUKd29yazogbHNl Z19jZW50ZXIsIHBhdGhfcG9seSwgYm94X2NlbnRlciwgYm94X2NpcmNsZSwgcG9seV9jZW50ZXIs IHBvbHlfY2lyY2xlLAphbmQgY2lyY2xlX2JveCB3aWxsIG5lZWQgZXJyb3Itc2FmZQoKQXV0aG9y OiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbXVs IFN1bCA8c3VsYW11bEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXcgRHVuc3RhbiA8YW5k cmV3QGR1bnNsYW5lLm5ldD4KUmV2aWV3ZWQtYnk6IENvcmV5IEh1aW5rZXIgPGNvcmV5Lmh1aW5r ZXJAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBRGtMTT1mdjFK Zlk0VWZhLWpjd3dOYmpRaXhOVmlza1E4alp1M1R6X3A2NTZpXzRoUUBtYWlsLmdtYWlsLmNvbQpD b21taXRmZXN0OiBodHRwczovL2NvbW1pdGZlc3QucG9zdGdyZXNxbC5vcmcvcGF0Y2gvNTk0MQot LS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9nZW9fb3BzLmMgfCA3OSArKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0NiBpbnNlcnRpb25zKCspLCAzMyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZ2VvX29wcy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2dlb19vcHMuYwppbmRleCBiZmI0ODU5YjRjYi4uMzUw ZTg2ZjYzNzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9nZW9fb3BzLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2dlb19vcHMuYwpAQCAtODIsNyArODIsNyBAQCBzdGF0 aWMgaW5saW5lIHZvaWQgcG9pbnRfc3ViX3BvaW50KFBvaW50ICpyZXN1bHQsIFBvaW50ICpwdDEs IFBvaW50ICpwdDIpOwogc3RhdGljIGlubGluZSB2b2lkIHBvaW50X211bF9wb2ludChQb2ludCAq cmVzdWx0LCBQb2ludCAqcHQxLCBQb2ludCAqcHQyKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBwb2lu dF9kaXZfcG9pbnQoUG9pbnQgKnJlc3VsdCwgUG9pbnQgKnB0MSwgUG9pbnQgKnB0Mik7CiBzdGF0 aWMgaW5saW5lIGJvb2wgcG9pbnRfZXFfcG9pbnQoUG9pbnQgKnB0MSwgUG9pbnQgKnB0Mik7Ci1z dGF0aWMgaW5saW5lIGZsb2F0OCBwb2ludF9kdChQb2ludCAqcHQxLCBQb2ludCAqcHQyKTsKK3N0 YXRpYyBpbmxpbmUgZmxvYXQ4IHBvaW50X2R0KFBvaW50ICpwdDEsIFBvaW50ICpwdDIsIE5vZGUg KmVzY29udGV4dCk7CiBzdGF0aWMgaW5saW5lIGZsb2F0OCBwb2ludF9zbChQb2ludCAqcHQxLCBQ b2ludCAqcHQyKTsKIHN0YXRpYyBpbnQJcG9pbnRfaW5zaWRlKFBvaW50ICpwLCBpbnQgbnB0cywg UG9pbnQgKnBsaXN0KTsKIApAQCAtODM5LDcgKzgzOSw3IEBAIGJveF9kaXN0YW5jZShQR19GVU5D VElPTl9BUkdTKQogCWJveF9jbigmYSwgYm94MSk7CiAJYm94X2NuKCZiLCBib3gyKTsKIAotCVBH X1JFVFVSTl9GTE9BVDgocG9pbnRfZHQoJmEsICZiKSk7CisJUEdfUkVUVVJOX0ZMT0FUOChwb2lu dF9kdCgmYSwgJmIsIE5VTEwpKTsKIH0KIAogCkBAIC0xODA4LDcgKzE4MDgsOCBAQCBwYXRoX2xl bmd0aChQR19GVU5DVElPTl9BUkdTKQogCQkJaXByZXYgPSBwYXRoLT5ucHRzIC0gMTsgLyogaW5j bHVkZSB0aGUgY2xvc3VyZSBzZWdtZW50ICovCiAJCX0KIAotCQlyZXN1bHQgPSBmbG9hdDhfcGwo cmVzdWx0LCBwb2ludF9kdCgmcGF0aC0+cFtpcHJldl0sICZwYXRoLT5wW2ldKSk7CisJCXJlc3Vs dCA9IGZsb2F0OF9wbChyZXN1bHQsCisJCQkJCQkgICBwb2ludF9kdCgmcGF0aC0+cFtpcHJldl0s ICZwYXRoLT5wW2ldLCBOVUxMKSk7CiAJfQogCiAJUEdfUkVUVVJOX0ZMT0FUOChyZXN1bHQpOwpA QCAtMTk5NSwxMyArMTk5NiwyNCBAQCBwb2ludF9kaXN0YW5jZShQR19GVU5DVElPTl9BUkdTKQog CVBvaW50CSAgICpwdDEgPSBQR19HRVRBUkdfUE9JTlRfUCgwKTsKIAlQb2ludAkgICAqcHQyID0g UEdfR0VUQVJHX1BPSU5UX1AoMSk7CiAKLQlQR19SRVRVUk5fRkxPQVQ4KHBvaW50X2R0KHB0MSwg cHQyKSk7CisJUEdfUkVUVVJOX0ZMT0FUOChwb2ludF9kdChwdDEsIHB0MiwgTlVMTCkpOwogfQog CiBzdGF0aWMgaW5saW5lIGZsb2F0OAotcG9pbnRfZHQoUG9pbnQgKnB0MSwgUG9pbnQgKnB0MikK K3BvaW50X2R0KFBvaW50ICpwdDEsIFBvaW50ICpwdDIsIE5vZGUgKmVzY29udGV4dCkKIHsKLQly ZXR1cm4gaHlwb3QoZmxvYXQ4X21pKHB0MS0+eCwgcHQyLT54KSwgZmxvYXQ4X21pKHB0MS0+eSwg cHQyLT55KSk7CisJZmxvYXQ4CQl4OworCWZsb2F0OAkJeTsKKworCXggPSBmbG9hdDhfbWlfc2Fm ZShwdDEtPngsIHB0Mi0+eCwgZXNjb250ZXh0KTsKKwlpZiAodW5saWtlbHkoU09GVF9FUlJPUl9P Q0NVUlJFRChlc2NvbnRleHQpKSkKKwkJcmV0dXJuIDAuMDsKKworCXkgPSBmbG9hdDhfbWlfc2Fm ZShwdDEtPnksIHB0Mi0+eSwgZXNjb250ZXh0KTsKKwlpZiAodW5saWtlbHkoU09GVF9FUlJPUl9P Q0NVUlJFRChlc2NvbnRleHQpKSkKKwkJcmV0dXJuIDAuMDsKKworCXJldHVybiBoeXBvdCh4LCB5 KTsKIH0KIAogRGF0dW0KQEAgLTIxNzMsNyArMjE4NSw3IEBAIGxzZWdfbGVuZ3RoKFBHX0ZVTkNU SU9OX0FSR1MpCiB7CiAJTFNFRwkgICAqbHNlZyA9IFBHX0dFVEFSR19MU0VHX1AoMCk7CiAKLQlQ R19SRVRVUk5fRkxPQVQ4KHBvaW50X2R0KCZsc2VnLT5wWzBdLCAmbHNlZy0+cFsxXSkpOworCVBH X1JFVFVSTl9GTE9BVDgocG9pbnRfZHQoJmxzZWctPnBbMF0sICZsc2VnLT5wWzFdLCBOVUxMKSk7 CiB9CiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQpAQCAtMjI1OCw4ICsyMjcwLDggQEAgbHNlZ19sdChQR19GVU5DVElPTl9BUkdT KQogCUxTRUcJICAgKmwxID0gUEdfR0VUQVJHX0xTRUdfUCgwKTsKIAlMU0VHCSAgICpsMiA9IFBH X0dFVEFSR19MU0VHX1AoMSk7CiAKLQlQR19SRVRVUk5fQk9PTChGUGx0KHBvaW50X2R0KCZsMS0+ cFswXSwgJmwxLT5wWzFdKSwKLQkJCQkJCXBvaW50X2R0KCZsMi0+cFswXSwgJmwyLT5wWzFdKSkp OworCVBHX1JFVFVSTl9CT09MKEZQbHQocG9pbnRfZHQoJmwxLT5wWzBdLCAmbDEtPnBbMV0sIE5V TEwpLAorCQkJCQkJcG9pbnRfZHQoJmwyLT5wWzBdLCAmbDItPnBbMV0sIE5VTEwpKSk7CiB9CiAK IERhdHVtCkBAIC0yMjY4LDggKzIyODAsOCBAQCBsc2VnX2xlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ TFNFRwkgICAqbDEgPSBQR19HRVRBUkdfTFNFR19QKDApOwogCUxTRUcJICAgKmwyID0gUEdfR0VU QVJHX0xTRUdfUCgxKTsKIAotCVBHX1JFVFVSTl9CT09MKEZQbGUocG9pbnRfZHQoJmwxLT5wWzBd LCAmbDEtPnBbMV0pLAotCQkJCQkJcG9pbnRfZHQoJmwyLT5wWzBdLCAmbDItPnBbMV0pKSk7CisJ UEdfUkVUVVJOX0JPT0woRlBsZShwb2ludF9kdCgmbDEtPnBbMF0sICZsMS0+cFsxXSwgTlVMTCks CisJCQkJCQlwb2ludF9kdCgmbDItPnBbMF0sICZsMi0+cFsxXSwgTlVMTCkpKTsKIH0KIAogRGF0 dW0KQEAgLTIyNzgsOCArMjI5MCw4IEBAIGxzZWdfZ3QoUEdfRlVOQ1RJT05fQVJHUykKIAlMU0VH CSAgICpsMSA9IFBHX0dFVEFSR19MU0VHX1AoMCk7CiAJTFNFRwkgICAqbDIgPSBQR19HRVRBUkdf TFNFR19QKDEpOwogCi0JUEdfUkVUVVJOX0JPT0woRlBndChwb2ludF9kdCgmbDEtPnBbMF0sICZs MS0+cFsxXSksCi0JCQkJCQlwb2ludF9kdCgmbDItPnBbMF0sICZsMi0+cFsxXSkpKTsKKwlQR19S RVRVUk5fQk9PTChGUGd0KHBvaW50X2R0KCZsMS0+cFswXSwgJmwxLT5wWzFdLCBOVUxMKSwKKwkJ CQkJCXBvaW50X2R0KCZsMi0+cFswXSwgJmwyLT5wWzFdLCBOVUxMKSkpOwogfQogCiBEYXR1bQpA QCAtMjI4OCw4ICsyMzAwLDggQEAgbHNlZ19nZShQR19GVU5DVElPTl9BUkdTKQogCUxTRUcJICAg KmwxID0gUEdfR0VUQVJHX0xTRUdfUCgwKTsKIAlMU0VHCSAgICpsMiA9IFBHX0dFVEFSR19MU0VH X1AoMSk7CiAKLQlQR19SRVRVUk5fQk9PTChGUGdlKHBvaW50X2R0KCZsMS0+cFswXSwgJmwxLT5w WzFdKSwKLQkJCQkJCXBvaW50X2R0KCZsMi0+cFswXSwgJmwyLT5wWzFdKSkpOworCVBHX1JFVFVS Tl9CT09MKEZQZ2UocG9pbnRfZHQoJmwxLT5wWzBdLCAmbDEtPnBbMV0sIE5VTEwpLAorCQkJCQkJ cG9pbnRfZHQoJmwyLT5wWzBdLCAmbDItPnBbMV0sIE5VTEwpKSk7CiB9CiAKIApAQCAtMjc0Myw3 ICsyNzU1LDcgQEAgbGluZV9jbG9zZXB0X3BvaW50KFBvaW50ICpyZXN1bHQsIExJTkUgKmxpbmUs IFBvaW50ICpwb2ludCkKIAlpZiAocmVzdWx0ICE9IE5VTEwpCiAJCSpyZXN1bHQgPSBjbG9zZXB0 OwogCi0JcmV0dXJuIHBvaW50X2R0KCZjbG9zZXB0LCBwb2ludCk7CisJcmV0dXJuIHBvaW50X2R0 KCZjbG9zZXB0LCBwb2ludCwgTlVMTCk7CiB9CiAKIERhdHVtCkBAIC0yNzg0LDcgKzI3OTYsNyBA QCBsc2VnX2Nsb3NlcHRfcG9pbnQoUG9pbnQgKnJlc3VsdCwgTFNFRyAqbHNlZywgUG9pbnQgKnB0 KQogCWlmIChyZXN1bHQgIT0gTlVMTCkKIAkJKnJlc3VsdCA9IGNsb3NlcHQ7CiAKLQlyZXR1cm4g cG9pbnRfZHQoJmNsb3NlcHQsIHB0KTsKKwlyZXR1cm4gcG9pbnRfZHQoJmNsb3NlcHQsIHB0LCBO VUxMKTsKIH0KIAogRGF0dW0KQEAgLTMxMDgsOSArMzEyMCw5IEBAIG9uX3BsKFBHX0ZVTkNUSU9O X0FSR1MpCiBzdGF0aWMgYm9vbAogbHNlZ19jb250YWluX3BvaW50KExTRUcgKmxzZWcsIFBvaW50 ICpwdCkKIHsKLQlyZXR1cm4gRlBlcShwb2ludF9kdChwdCwgJmxzZWctPnBbMF0pICsKLQkJCQlw b2ludF9kdChwdCwgJmxzZWctPnBbMV0pLAotCQkJCXBvaW50X2R0KCZsc2VnLT5wWzBdLCAmbHNl Zy0+cFsxXSkpOworCXJldHVybiBGUGVxKHBvaW50X2R0KHB0LCAmbHNlZy0+cFswXSwgTlVMTCkg KworCQkJCXBvaW50X2R0KHB0LCAmbHNlZy0+cFsxXSwgTlVMTCksCisJCQkJcG9pbnRfZHQoJmxz ZWctPnBbMF0sICZsc2VnLT5wWzFdLCBOVUxMKSk7CiB9CiAKIERhdHVtCkBAIC0zMTc2LDExICsz MTg4LDEyIEBAIG9uX3BwYXRoKFBHX0ZVTkNUSU9OX0FSR1MpCiAJaWYgKCFwYXRoLT5jbG9zZWQp CiAJewogCQluID0gcGF0aC0+bnB0cyAtIDE7Ci0JCWEgPSBwb2ludF9kdChwdCwgJnBhdGgtPnBb MF0pOworCQlhID0gcG9pbnRfZHQocHQsICZwYXRoLT5wWzBdLCBOVUxMKTsKIAkJZm9yIChpID0g MDsgaSA8IG47IGkrKykKIAkJewotCQkJYiA9IHBvaW50X2R0KHB0LCAmcGF0aC0+cFtpICsgMV0p OwotCQkJaWYgKEZQZXEoZmxvYXQ4X3BsKGEsIGIpLCBwb2ludF9kdCgmcGF0aC0+cFtpXSwgJnBh dGgtPnBbaSArIDFdKSkpCisJCQliID0gcG9pbnRfZHQocHQsICZwYXRoLT5wW2kgKyAxXSwgTlVM TCk7CisJCQlpZiAoRlBlcShmbG9hdDhfcGwoYSwgYiksCisJCQkJCSBwb2ludF9kdCgmcGF0aC0+ cFtpXSwgJnBhdGgtPnBbaSArIDFdLCBOVUxMKSkpCiAJCQkJUEdfUkVUVVJOX0JPT0wodHJ1ZSk7 CiAJCQlhID0gYjsKIAkJfQpAQCAtNDc2Niw3ICs0Nzc5LDcgQEAgY2lyY2xlX292ZXJsYXAoUEdf RlVOQ1RJT05fQVJHUykKIAlDSVJDTEUJICAgKmNpcmNsZTEgPSBQR19HRVRBUkdfQ0lSQ0xFX1Ao MCk7CiAJQ0lSQ0xFCSAgICpjaXJjbGUyID0gUEdfR0VUQVJHX0NJUkNMRV9QKDEpOwogCi0JUEdf UkVUVVJOX0JPT0woRlBsZShwb2ludF9kdCgmY2lyY2xlMS0+Y2VudGVyLCAmY2lyY2xlMi0+Y2Vu dGVyKSwKKwlQR19SRVRVUk5fQk9PTChGUGxlKHBvaW50X2R0KCZjaXJjbGUxLT5jZW50ZXIsICZj aXJjbGUyLT5jZW50ZXIsIE5VTEwpLAogCQkJCQkJZmxvYXQ4X3BsKGNpcmNsZTEtPnJhZGl1cywg Y2lyY2xlMi0+cmFkaXVzKSkpOwogfQogCkBAIC00ODI4LDcgKzQ4NDEsNyBAQCBjaXJjbGVfY29u dGFpbmVkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJQ0lSQ0xFCSAgICpjaXJjbGUxID0gUEdfR0VUQVJH X0NJUkNMRV9QKDApOwogCUNJUkNMRQkgICAqY2lyY2xlMiA9IFBHX0dFVEFSR19DSVJDTEVfUCgx KTsKIAotCVBHX1JFVFVSTl9CT09MKEZQbGUocG9pbnRfZHQoJmNpcmNsZTEtPmNlbnRlciwgJmNp cmNsZTItPmNlbnRlciksCisJUEdfUkVUVVJOX0JPT0woRlBsZShwb2ludF9kdCgmY2lyY2xlMS0+ Y2VudGVyLCAmY2lyY2xlMi0+Y2VudGVyLCBOVUxMKSwKIAkJCQkJCWZsb2F0OF9taShjaXJjbGUy LT5yYWRpdXMsIGNpcmNsZTEtPnJhZGl1cykpKTsKIH0KIApAQCAtNDg0MCw3ICs0ODUzLDcgQEAg Y2lyY2xlX2NvbnRhaW4oUEdfRlVOQ1RJT05fQVJHUykKIAlDSVJDTEUJICAgKmNpcmNsZTEgPSBQ R19HRVRBUkdfQ0lSQ0xFX1AoMCk7CiAJQ0lSQ0xFCSAgICpjaXJjbGUyID0gUEdfR0VUQVJHX0NJ UkNMRV9QKDEpOwogCi0JUEdfUkVUVVJOX0JPT0woRlBsZShwb2ludF9kdCgmY2lyY2xlMS0+Y2Vu dGVyLCAmY2lyY2xlMi0+Y2VudGVyKSwKKwlQR19SRVRVUk5fQk9PTChGUGxlKHBvaW50X2R0KCZj aXJjbGUxLT5jZW50ZXIsICZjaXJjbGUyLT5jZW50ZXIsIE5VTEwpLAogCQkJCQkJZmxvYXQ4X21p KGNpcmNsZTEtPnJhZGl1cywgY2lyY2xlMi0+cmFkaXVzKSkpOwogfQogCkBAIC01MDY5LDcgKzUw ODIsNyBAQCBjaXJjbGVfZGlzdGFuY2UoUEdfRlVOQ1RJT05fQVJHUykKIAlDSVJDTEUJICAgKmNp cmNsZTIgPSBQR19HRVRBUkdfQ0lSQ0xFX1AoMSk7CiAJZmxvYXQ4CQlyZXN1bHQ7CiAKLQlyZXN1 bHQgPSBmbG9hdDhfbWkocG9pbnRfZHQoJmNpcmNsZTEtPmNlbnRlciwgJmNpcmNsZTItPmNlbnRl ciksCisJcmVzdWx0ID0gZmxvYXQ4X21pKHBvaW50X2R0KCZjaXJjbGUxLT5jZW50ZXIsICZjaXJj bGUyLT5jZW50ZXIsIE5VTEwpLAogCQkJCQkgICBmbG9hdDhfcGwoY2lyY2xlMS0+cmFkaXVzLCBj aXJjbGUyLT5yYWRpdXMpKTsKIAlpZiAocmVzdWx0IDwgMC4wKQogCQlyZXN1bHQgPSAwLjA7CkBA IC01MDg1LDcgKzUwOTgsNyBAQCBjaXJjbGVfY29udGFpbl9wdChQR19GVU5DVElPTl9BUkdTKQog CVBvaW50CSAgICpwb2ludCA9IFBHX0dFVEFSR19QT0lOVF9QKDEpOwogCWZsb2F0OAkJZDsKIAot CWQgPSBwb2ludF9kdCgmY2lyY2xlLT5jZW50ZXIsIHBvaW50KTsKKwlkID0gcG9pbnRfZHQoJmNp cmNsZS0+Y2VudGVyLCBwb2ludCwgTlVMTCk7CiAJUEdfUkVUVVJOX0JPT0woZCA8PSBjaXJjbGUt PnJhZGl1cyk7CiB9CiAKQEAgLTUwOTcsNyArNTExMCw3IEBAIHB0X2NvbnRhaW5lZF9jaXJjbGUo UEdfRlVOQ1RJT05fQVJHUykKIAlDSVJDTEUJICAgKmNpcmNsZSA9IFBHX0dFVEFSR19DSVJDTEVf UCgxKTsKIAlmbG9hdDgJCWQ7CiAKLQlkID0gcG9pbnRfZHQoJmNpcmNsZS0+Y2VudGVyLCBwb2lu dCk7CisJZCA9IHBvaW50X2R0KCZjaXJjbGUtPmNlbnRlciwgcG9pbnQsIE5VTEwpOwogCVBHX1JF VFVSTl9CT09MKGQgPD0gY2lyY2xlLT5yYWRpdXMpOwogfQogCkBAIC01MTEyLDcgKzUxMjUsNyBA QCBkaXN0X3BjKFBHX0ZVTkNUSU9OX0FSR1MpCiAJQ0lSQ0xFCSAgICpjaXJjbGUgPSBQR19HRVRB UkdfQ0lSQ0xFX1AoMSk7CiAJZmxvYXQ4CQlyZXN1bHQ7CiAKLQlyZXN1bHQgPSBmbG9hdDhfbWko cG9pbnRfZHQocG9pbnQsICZjaXJjbGUtPmNlbnRlciksCisJcmVzdWx0ID0gZmxvYXQ4X21pKHBv aW50X2R0KHBvaW50LCAmY2lyY2xlLT5jZW50ZXIsIE5VTEwpLAogCQkJCQkgICBjaXJjbGUtPnJh ZGl1cyk7CiAJaWYgKHJlc3VsdCA8IDAuMCkKIAkJcmVzdWx0ID0gMC4wOwpAQCAtNTEzMCw3ICs1 MTQzLDcgQEAgZGlzdF9jcG9pbnQoUEdfRlVOQ1RJT05fQVJHUykKIAlQb2ludAkgICAqcG9pbnQg PSBQR19HRVRBUkdfUE9JTlRfUCgxKTsKIAlmbG9hdDgJCXJlc3VsdDsKIAotCXJlc3VsdCA9IGZs b2F0OF9taShwb2ludF9kdChwb2ludCwgJmNpcmNsZS0+Y2VudGVyKSwgY2lyY2xlLT5yYWRpdXMp OworCXJlc3VsdCA9IGZsb2F0OF9taShwb2ludF9kdChwb2ludCwgJmNpcmNsZS0+Y2VudGVyLCBO VUxMKSwgY2lyY2xlLT5yYWRpdXMpOwogCWlmIChyZXN1bHQgPCAwLjApCiAJCXJlc3VsdCA9IDAu MDsKIApAQCAtNTIxNSw3ICs1MjI4LDcgQEAgYm94X2NpcmNsZShQR19GVU5DVElPTl9BUkdTKQog CWNpcmNsZS0+Y2VudGVyLnggPSBmbG9hdDhfZGl2KGZsb2F0OF9wbChib3gtPmhpZ2gueCwgYm94 LT5sb3cueCksIDIuMCk7CiAJY2lyY2xlLT5jZW50ZXIueSA9IGZsb2F0OF9kaXYoZmxvYXQ4X3Bs KGJveC0+aGlnaC55LCBib3gtPmxvdy55KSwgMi4wKTsKIAotCWNpcmNsZS0+cmFkaXVzID0gcG9p bnRfZHQoJmNpcmNsZS0+Y2VudGVyLCAmYm94LT5oaWdoKTsKKwljaXJjbGUtPnJhZGl1cyA9IHBv aW50X2R0KCZjaXJjbGUtPmNlbnRlciwgJmJveC0+aGlnaCwgTlVMTCk7CiAKIAlQR19SRVRVUk5f Q0lSQ0xFX1AoY2lyY2xlKTsKIH0KQEAgLTUyOTksNyArNTMxMiw3IEBAIHBvbHlfdG9fY2lyY2xl KENJUkNMRSAqcmVzdWx0LCBQT0xZR09OICpwb2x5KQogCiAJZm9yIChpID0gMDsgaSA8IHBvbHkt Pm5wdHM7IGkrKykKIAkJcmVzdWx0LT5yYWRpdXMgPSBmbG9hdDhfcGwocmVzdWx0LT5yYWRpdXMs Ci0JCQkJCQkJCSAgIHBvaW50X2R0KCZwb2x5LT5wW2ldLCAmcmVzdWx0LT5jZW50ZXIpKTsKKwkJ CQkJCQkJICAgcG9pbnRfZHQoJnBvbHktPnBbaV0sICZyZXN1bHQtPmNlbnRlciwgTlVMTCkpOwog CXJlc3VsdC0+cmFkaXVzID0gZmxvYXQ4X2RpdihyZXN1bHQtPnJhZGl1cywgcG9seS0+bnB0cyk7 CiB9CiAKLS0gCjIuMzQuMQoK --0000000000006bcf4f064e0ad34e Content-Type: text/x-patch; charset="US-ASCII"; name="v25-0004-introduce-float8-safe-function.patch" Content-Disposition: attachment; filename="v25-0004-introduce-float8-safe-function.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn9lohsl7 RnJvbSAwNDgwOGJlM2I0MzVlNDhkZGFkNmI5OGEzZDg2YjRkNzk5MTFlNGJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjUgTWFyIDIwMjYgMTY6MjY6MzAgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy NSA0LzldIGludHJvZHVjZSBmbG9hdDggc2FmZSBmdW5jdGlvbgoKdGhpcyBwYXRjaCBpbnRyb2R1 Y2UgdGhlIGZvbGxvd2luZyBmdW5jdGlvbjoKZmxvYXQ4X3BsX3NhZmUKZmxvYXQ4X21pX3NhZmUK ZmxvYXQ4X211bF9zYWZlCmZsb2F0OF9kaXZfc2FmZQoKcmVmYWN0b3JpbmcgZXhpc3RpbmcgZnVu Y3Rpb24gaXMgYmUgdG9vIGludmFzaXZlLiAgdGh1cyBhZGQgdGhlc2UgbmV3IGZ1bmN0aW9ucy4K SXQncyB2ZXJ5IHNpbWlsYXIgdG8gZXhpc3Rpbmcgbm9uLXNhZmUgdmVyc2lvbiBmdW5jdGlvbnMu CgpBdXRob3I6IGppYW4gaGUgPGppYW4udW5pdmVyc2FsaXR5QGdtYWlsLmNvbT4KUmV2aWV3ZWQt Ynk6IEFtdWwgU3VsIDxzdWxhbXVsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENvcmV5IEh1aW5r ZXIgPGNvcmV5Lmh1aW5rZXJAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5l cy9tL0NBRGtMTT1mdjFKZlk0VWZhLWpjd3dOYmpRaXhOVmlza1E4alp1M1R6X3A2NTZpXzRoUUBt YWlsLmdtYWlsLmNvbQpDb21taXRmZXN0OiBodHRwczovL2NvbW1pdGZlc3QucG9zdGdyZXNxbC5v cmcvcGF0Y2gvNTk0MQotLS0KIHNyYy9pbmNsdWRlL3V0aWxzL2Zsb2F0LmggfCA2NiArKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0NSBpbnNl cnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGls cy9mbG9hdC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvZmxvYXQuaAppbmRleCA1ODQwYmJmN2RjOC4u ZmZhNzQzZDYyNzMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2Zsb2F0LmgKKysrIGIv c3JjL2luY2x1ZGUvdXRpbHMvZmxvYXQuaApAQCAtMTEyLDE2ICsxMTIsMjIgQEAgZmxvYXQ0X3Bs KGNvbnN0IGZsb2F0NCB2YWwxLCBjb25zdCBmbG9hdDQgdmFsMikKIAlyZXR1cm4gcmVzdWx0Owog fQogCitzdGF0aWMgaW5saW5lIGZsb2F0OAorZmxvYXQ4X3BsX3NhZmUoY29uc3QgZmxvYXQ4IHZh bDEsIGNvbnN0IGZsb2F0OCB2YWwyLCBzdHJ1Y3QgTm9kZSAqZXNjb250ZXh0KQoreworCWZsb2F0 OAkJcmVzdWx0OworCisJcmVzdWx0ID0gdmFsMSArIHZhbDI7CisJaWYgKHVubGlrZWx5KGlzaW5m KHJlc3VsdCkpICYmICFpc2luZih2YWwxKSAmJiAhaXNpbmYodmFsMikpCisJCXJldHVybiBmbG9h dF9vdmVyZmxvd19lcnJvcl9leHQoZXNjb250ZXh0KTsKKworCXJldHVybiByZXN1bHQ7Cit9CisK IHN0YXRpYyBpbmxpbmUgZmxvYXQ4CiBmbG9hdDhfcGwoY29uc3QgZmxvYXQ4IHZhbDEsIGNvbnN0 IGZsb2F0OCB2YWwyKQogewotCWZsb2F0OAkJcmVzdWx0OwotCi0JcmVzdWx0ID0gdmFsMSArIHZh bDI7Ci0JaWYgKHVubGlrZWx5KGlzaW5mKHJlc3VsdCkpICYmICFpc2luZih2YWwxKSAmJiAhaXNp bmYodmFsMikpCi0JCWZsb2F0X292ZXJmbG93X2Vycm9yKCk7Ci0KLQlyZXR1cm4gcmVzdWx0Owor CXJldHVybiBmbG9hdDhfcGxfc2FmZSh2YWwxLCB2YWwyLCBOVUxMKTsKIH0KIAogc3RhdGljIGlu bGluZSBmbG9hdDQKQEAgLTEzNiwxNiArMTQyLDIyIEBAIGZsb2F0NF9taShjb25zdCBmbG9hdDQg dmFsMSwgY29uc3QgZmxvYXQ0IHZhbDIpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIGlu bGluZSBmbG9hdDgKK2Zsb2F0OF9taV9zYWZlKGNvbnN0IGZsb2F0OCB2YWwxLCBjb25zdCBmbG9h dDggdmFsMiwgc3RydWN0IE5vZGUgKmVzY29udGV4dCkKK3sKKwlmbG9hdDgJCXJlc3VsdDsKKwor CXJlc3VsdCA9IHZhbDEgLSB2YWwyOworCWlmICh1bmxpa2VseShpc2luZihyZXN1bHQpKSAmJiAh aXNpbmYodmFsMSkgJiYgIWlzaW5mKHZhbDIpKQorCQlyZXR1cm4gZmxvYXRfb3ZlcmZsb3dfZXJy b3JfZXh0KGVzY29udGV4dCk7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCiBzdGF0aWMgaW5saW5l IGZsb2F0OAogZmxvYXQ4X21pKGNvbnN0IGZsb2F0OCB2YWwxLCBjb25zdCBmbG9hdDggdmFsMikK IHsKLQlmbG9hdDgJCXJlc3VsdDsKLQotCXJlc3VsdCA9IHZhbDEgLSB2YWwyOwotCWlmICh1bmxp a2VseShpc2luZihyZXN1bHQpKSAmJiAhaXNpbmYodmFsMSkgJiYgIWlzaW5mKHZhbDIpKQotCQlm bG9hdF9vdmVyZmxvd19lcnJvcigpOwotCi0JcmV0dXJuIHJlc3VsdDsKKwlyZXR1cm4gZmxvYXQ4 X21pX3NhZmUodmFsMSwgdmFsMiwgTlVMTCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZmxvYXQ0CkBA IC0xNjMsMTkgKzE3NSwyNSBAQCBmbG9hdDRfbXVsKGNvbnN0IGZsb2F0NCB2YWwxLCBjb25zdCBm bG9hdDQgdmFsMikKIH0KIAogc3RhdGljIGlubGluZSBmbG9hdDgKLWZsb2F0OF9tdWwoY29uc3Qg ZmxvYXQ4IHZhbDEsIGNvbnN0IGZsb2F0OCB2YWwyKQorZmxvYXQ4X211bF9zYWZlKGNvbnN0IGZs b2F0OCB2YWwxLCBjb25zdCBmbG9hdDggdmFsMiwgc3RydWN0IE5vZGUgKmVzY29udGV4dCkKIHsK IAlmbG9hdDgJCXJlc3VsdDsKIAogCXJlc3VsdCA9IHZhbDEgKiB2YWwyOwogCWlmICh1bmxpa2Vs eShpc2luZihyZXN1bHQpKSAmJiAhaXNpbmYodmFsMSkgJiYgIWlzaW5mKHZhbDIpKQotCQlmbG9h dF9vdmVyZmxvd19lcnJvcigpOworCQlyZXR1cm4gZmxvYXRfb3ZlcmZsb3dfZXJyb3JfZXh0KGVz Y29udGV4dCk7CiAJaWYgKHVubGlrZWx5KHJlc3VsdCA9PSAwLjApICYmIHZhbDEgIT0gMC4wICYm IHZhbDIgIT0gMC4wKQotCQlmbG9hdF91bmRlcmZsb3dfZXJyb3IoKTsKKwkJcmV0dXJuIGZsb2F0 X3VuZGVyZmxvd19lcnJvcl9leHQoZXNjb250ZXh0KTsKIAogCXJldHVybiByZXN1bHQ7CiB9CiAK K3N0YXRpYyBpbmxpbmUgZmxvYXQ4CitmbG9hdDhfbXVsKGNvbnN0IGZsb2F0OCB2YWwxLCBjb25z dCBmbG9hdDggdmFsMikKK3sKKwlyZXR1cm4gZmxvYXQ4X211bF9zYWZlKHZhbDEsIHZhbDIsIE5V TEwpOworfQorCiBzdGF0aWMgaW5saW5lIGZsb2F0NAogZmxvYXQ0X2Rpdihjb25zdCBmbG9hdDQg dmFsMSwgY29uc3QgZmxvYXQ0IHZhbDIpCiB7CkBAIC0xOTMsMjEgKzIxMSwyNyBAQCBmbG9hdDRf ZGl2KGNvbnN0IGZsb2F0NCB2YWwxLCBjb25zdCBmbG9hdDQgdmFsMikKIH0KIAogc3RhdGljIGlu bGluZSBmbG9hdDgKLWZsb2F0OF9kaXYoY29uc3QgZmxvYXQ4IHZhbDEsIGNvbnN0IGZsb2F0OCB2 YWwyKQorZmxvYXQ4X2Rpdl9zYWZlKGNvbnN0IGZsb2F0OCB2YWwxLCBjb25zdCBmbG9hdDggdmFs Miwgc3RydWN0IE5vZGUgKmVzY29udGV4dCkKIHsKIAlmbG9hdDgJCXJlc3VsdDsKIAogCWlmICh1 bmxpa2VseSh2YWwyID09IDAuMCkgJiYgIWlzbmFuKHZhbDEpKQotCQlmbG9hdF96ZXJvX2Rpdmlk ZV9lcnJvcigpOworCQlyZXR1cm4gZmxvYXRfemVyb19kaXZpZGVfZXJyb3JfZXh0KGVzY29udGV4 dCk7CiAJcmVzdWx0ID0gdmFsMSAvIHZhbDI7CiAJaWYgKHVubGlrZWx5KGlzaW5mKHJlc3VsdCkp ICYmICFpc2luZih2YWwxKSkKLQkJZmxvYXRfb3ZlcmZsb3dfZXJyb3IoKTsKKwkJcmV0dXJuIGZs b2F0X292ZXJmbG93X2Vycm9yX2V4dChlc2NvbnRleHQpOwogCWlmICh1bmxpa2VseShyZXN1bHQg PT0gMC4wKSAmJiB2YWwxICE9IDAuMCAmJiAhaXNpbmYodmFsMikpCi0JCWZsb2F0X3VuZGVyZmxv d19lcnJvcigpOworCQlyZXR1cm4gZmxvYXRfdW5kZXJmbG93X2Vycm9yX2V4dChlc2NvbnRleHQp OwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIGlubGluZSBmbG9hdDgKK2Zsb2F0OF9k aXYoY29uc3QgZmxvYXQ4IHZhbDEsIGNvbnN0IGZsb2F0OCB2YWwyKQoreworCXJldHVybiBmbG9h dDhfZGl2X3NhZmUodmFsMSwgdmFsMiwgTlVMTCk7Cit9CisKIC8qCiAgKiBSb3V0aW5lcyBmb3Ig TmFOLWF3YXJlIGNvbXBhcmlzb25zCiAgKgotLSAKMi4zNC4xCgo= --0000000000006bcf4f064e0ad34e--