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 1w7Duc-0055V7-06 for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Mar 2026 14:48:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w7Dua-003vVM-1h for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Mar 2026 14:48:16 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w7DuZ-003vVD-1l for pgsql-hackers@lists.postgresql.org; Mon, 30 Mar 2026 14:48:16 +0000 Received: from mail-vs1-xe29.google.com ([2607:f8b0:4864:20::e29]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w7DuV-00000001opJ-1CwV for pgsql-hackers@lists.postgresql.org; Mon, 30 Mar 2026 14:48:15 +0000 Received: by mail-vs1-xe29.google.com with SMTP id ada2fe7eead31-604d732cd22so2813321137.1 for ; Mon, 30 Mar 2026 07:48:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774882090; cv=none; d=google.com; s=arc-20240605; b=CvEhF4uNgGNSRjHXxuxnxQmGMRuPs1yoCtnSCfqArIdae1moXE26Yha0NsApiXJ/pE XftdPLXkvo/rPSabRMeY4KXz+pvgATtjgPMUsDdBL1a4PXVeHPHiKZN698705DBprsd5 Z6hNnyH2oEqobDuplMYSZDmPe7CPLSk05LsbwdNJguHkQfepUMW3B9qz/JboukJmvWA+ LAe1MLH4NKr8mUNp9I1tgknP8zEb2Z1O+tN+1SEoI+/valw/KVWpx2UXqwp0z8o8vOto V5w1MYvMEedMxFoikVb0/uN3IB9RW1flW+spTY64tluy+5yaYuFU48rKrJbTaDh32DxC /7pg== 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=eC3RchyGCUq/TF6UBDs6gLhRX5vXu8rHiuqtX1a5z6E=; fh=zJveu7AIEItKtfjSlaCA0K9fSiDdUST+T0UXHUMhO5I=; b=BT21WG9d0edfSiV9kLJBFmnuLhr95Lviaq/Q3ikmT25RQRItSyPBvPJTzWik93ng+N zD1Gsm0BsYM6R4ts+AIf+tOP4v8kO3L5KQUVYvPGooxAKiYAV2JkWdy5sz5TuzUnLcPn veYqm6BbFOIOhK9sMnNB+QOs8WIo14x1Yk0TuLAPiBaODwEZqTl1+Dc8eut09xED4y4G gMOYRLKI6sDy3CweuSvFavMNqeisU7cAEWVIysfj91fJUhdwprfF5Cc1GbbvgX/fbJdu O+NIlLhcZsPfJYwDWV07ct2xIaNG3ZBozjmPNn8FnguuEEbGId4PDMiBveZFkWdeLXF4 1SOA==; 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=1774882090; x=1775486890; 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=eC3RchyGCUq/TF6UBDs6gLhRX5vXu8rHiuqtX1a5z6E=; b=Dt726zPB+TTxDkyVijOf+cmz0HRqb3st/ZJWDRyhIuYp00qSwSJ6YUOetQUH7BXGCG JhTy6uEtfF63P76K4Yj0acSKlmTGmhfSnL6i4jkfSACcYsBamBG+sUA6S0x4/uzMra04 tyxHoxUqr1Ijv2V74PpZS//TVbhoVf8fxh0H4iIXULbDu9IwqaRE3YoH8vu6UMhN83Nl 4suTUK0pInFQBbF+C+fc59b2dvUzG+TVYffk6UkTt/dYaEXib+pN5vE9hV43s4EIsbN8 65vU7fc1ZD5w5s3CMtP/5ww/qklYIp6DvB1MYasYfRxddGgszBkiDDFFNuEx1LxxFQYy MLSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774882090; x=1775486890; 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=eC3RchyGCUq/TF6UBDs6gLhRX5vXu8rHiuqtX1a5z6E=; b=gUZGuL6GbqOX6JcQcCjFbHELLV/4idTzadphPenYK2WAQUIHwGb3IA1yt6vIBYdblI dXtggoI2CMEKuAjha0Rm/6A3t4iGK5pjpUDXwG4mdXAcNCx4JguJ/nd3rAlmYVwQpR15 Ll98/iT0c/6xH3M9pJTZNG7pCnCaOZXrKyMcygKLMWa/KvilVszBFpD0EZc+CE0scqF6 WgTxPy1dkaINBBfnoMgvK3/n3M9r/7Q3/dRwYIPD0GyDnmv1VPdH2Bc2dWUrlVuwgnOK vrAJRqwI6KeDmyOU0yGxlA44LhSMI/JyYY+leM/H/mRxYB9eVseZVFkTc7g9jo3c4OfK osuQ== X-Forwarded-Encrypted: i=1; AJvYcCXgLwKWlpjd7IztZYj7y5Nq6So4qRxxTelbXBNMNqbYlTFbJzz4iZ/C8yzpzISZWSOi21Bbp9NzFYCDEjM3@lists.postgresql.org X-Gm-Message-State: AOJu0YyidTKrCn0j9kwOh/EHLV0mNZeqTE6TKWYc1aVex1MuWvU8p9s4 bI2gB4/iyHKLN9KnEm/bi9gn0cy3I+TwSMevHqIV7gDl9fkuhF0m+epAR9ITroWnZahcKjfaFk8 daqciQmtdELN8+S9SQpSOli01QcBeMuE= X-Gm-Gg: ATEYQzzpZWFgXhJS9mVGxoPi5jxMNyta+8hKirfPV4qbPk2+zyOlDoFe/hWJQhft+GJ qEk7YvEHOzoUM+jAsoW9bUf/KrxR+EHlX+q7s1XxcC/Q9heCeozNNR+0ilqLs0NR8jn+/FRUQzh 9Smiu5ifrX9QvEGJT9LXKpnyweZSi2SsSERpdBVOFh/egSQWrLf0JFUsocjKCKLtbg2vhp49+hO bkgczN8E+y5rDK+BVIzN/1l03+SnSqZlRRq9fF7GMnlbpZiUAd6h8iXsPjI8IaKsVTKLzRgkZlR EVjxYNQW87WTpR5/c9UnuhD56dBBcP1FMXaGPmxldRtraq0e6xiGbhbNYQdgWLw5tia4TzqyilY PBByLIIYLe+h+d1tjHwGKl3L2bLEoi6KKzae4Q+O33s2HHEVSR4qqMk/8xlv976kE1QqpwcwpVR zmjP07Kam3XGjyRWKugUdx5w== X-Received: by 2002:a05:6102:4a94:b0:605:38d2:26eb with SMTP id ada2fe7eead31-60538d26f94mr1592191137.16.1774882090258; Mon, 30 Mar 2026 07:48:10 -0700 (PDT) MIME-Version: 1.0 References: <5ae9578e-f25e-49c5-97ab-ad27bc2050b5@eisentraut.org> <5221f892-e1d5-4943-a3dc-5c9c7bdf4924@eisentraut.org> In-Reply-To: From: jian he Date: Mon, 30 Mar 2026 22:47:32 +0800 X-Gm-Features: AQROBzBfb7RQoTdM3IGA0aIvsxBaidk4lZX2vBu9RIdIIsM2FJO2--BbZcSDCqY Message-ID: Subject: Re: CAST(... ON DEFAULT) - WIP build on top of Error-Safe User Functions To: Amul Sul Cc: Peter Eisentraut , Corey Huinker , Kirill Reshke , Vik Fearing , Isaac Morland , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000823951064e3ef0b0" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000823951064e3ef0b0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Mar 30, 2026 at 9:10=E2=80=AFPM Amul Sul wrote: > > I=E2=80=99ve had a glance over the remaining patches; here are a few comm= ents: > > V25-0001: > > - if (relation->schemaname) > + if (escontext =3D=3D NULL) > ereport(elevel, > - (errcode(ERRCODE_UNDEFINED_TABLE), > - errmsg("relation \"%s.%s\" does not exist", > - relation->schemaname, relation->relname))); > + errcode(ERRCODE_LOCK_NOT_AVAILABLE), > + relation->schemaname ? > + errmsg("relation \"%s.%s\" does not exist", > + relation->schemaname, relation->relname) : > + errmsg("relation \"%s\" does not exist", > + relation->relname)); > else > - ereport(elevel, > - (errcode(ERRCODE_UNDEFINED_TABLE), > - errmsg("relation \"%s\" does not exist", > - relation->relname))); > + ereturn(escontext, InvalidOid, > + errcode(ERRCODE_LOCK_NOT_AVAILABLE), > + relation->schemaname ? > + errmsg("relation \"%s.%s\" does not exist", > + relation->schemaname, relation->relname) : > + errmsg("relation \"%s\" does not exist", > + relation->relname)); > } > > The error code changed here -- was this intentional? it's a copy-paste error. > -- > > v25-0009 : > > +SELECT CAST('abc'::bpchar AS citext DEFAULT NULL ON CONVERSION ERROR); -= - error > +ERROR: cannot cast type character to citext when DEFAULT expression > is specified in CAST ... ON CONVERSION ERROR > +LINE 1: SELECT CAST('abc'::bpchar AS citext DEFAULT NULL ON CONVERSI... > + ^ > +HINT: Safe type cast for user-defined types are not yet supported. > > > "Should the HINT be this DETAIL? I believe a hint should provide > guidance for the user to handle the error, but here the user cannot do > anything with the given information. > -- > ok. > /* Generic macro for applying evaluate_expr */ > -#define ece_evaluate_expr(node) \ > +#define ece_evaluate_expr(node, escontext) \ > ((Node *) evaluate_expr((Expr *) (node), \ > exprType((Node *) (node)), \ > exprTypmod((Node *) (node)), \ > - exprCollation((Node *) (node)))) > + exprCollation((Node *) (node)), \ > + escontext)) > > > I think we can simply cast escontext to Node * here, instead of > having the caller do it. > ok. I found a segmentation fault case in v25, it can be produced by: SELECT CAST(('{' || sum(1 + 2) || '}')::int[] AS int[] DEFAULT NULL ON CONVERSION ERROR) FROM (VALUES (1), (2)) sub; We need set SafeTypeCastExpr->source to NULL. We can do this, because SafeTypeCastExpr->castexpr sure contain all the information of SafeTypeCastExpr->source. If we don't nullify it, preprocess_aggref ends up processing both fields, t= hen parts of the Aggref node being initialized twice, which can ultimately lead to a segfault. -- jian https://www.enterprisedb.com/ --000000000000823951064e3ef0b0 Content-Type: text/x-patch; charset="US-ASCII"; name="v26-0002-CAST-expr-AS-newtype-DEFAULT-expr-ON-CONVERSION-ERROR.patch" Content-Disposition: attachment; filename="v26-0002-CAST-expr-AS-newtype-DEFAULT-expr-ON-CONVERSION-ERROR.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mndawh7z0 RnJvbSBiYTNlYzc5ZTM0ZmIxZWYxMTRkOTdhZWUxMmE5MGJjY2UyZmNhODY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMzAgTWFyIDIwMjYgMjI6MjQ6MjMgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy NiAyLzJdIENBU1QoZXhwciBBUyBuZXd0eXBlIERFRkFVTFQgZXhwciBPTiBDT05WRVJTSU9OCiBF 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 ICB8ICAgNTggKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMgICAgICAg ICB8ICAgMjkgKwogc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMgICAgICAgICAg IHwgICA1NiArCiBzcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyAgICAgICAgICAgICAgICAg fCAgIDUzICsKIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYyAgICAgICAgICB8 ICAgOTQgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8 ICAgMjMgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jICAgICAgICAgICAgICAgIHwg ICAgOSArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY29lcmNlLmMgICAgICAgICAgICAgfCAg MTQyICsrLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgICAgICAgICAgICAgIHwg IDM1MyArKysrKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgICAgICAgICAgICAg ICB8ICAgIDMgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jICAgICAgICAgICAg IHwgICAgMyArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3R5cGUuYyAgICAgICAgICAgICAg IHwgICAxOCArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAgICAg fCAgICAyICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlmdW5jcy5jICAgICAgICAgICAg fCAgICA5ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8 ICAgMjUgKwogc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMgICAgICAgICAgICAgICAgIHwg ICAxMyArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oICAgICAgICAgICAgICAgfCAg ICA3ICsKIHNyYy9pbmNsdWRlL2ZtZ3IuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg IDMgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgICAy MSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgICAgfCAgICAx ICsKIHNyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgMzgg Kwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oICAgICAgICAgICAgIHwgICAgMiAr LQogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2NvZXJjZS5oICAgICAgICAgICAgIHwgICAxNiAr LQogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCAgICAgICAgICAgICAgIHwgICAgMiAr CiBzcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdHlwZS5oICAgICAgICAgICAgICAgfCAgICAyICsK IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY2FzdC5vdXQgICAgICAgICAgICB8IDEwODQgKysr KysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2Nhc3Qub3V0 ICAgICB8ICAgIDUgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9lcXVpdmNsYXNzLm91dCAg ICAgIHwgICAgNyArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3htbC5vdXQgICAgICAgICAg ICAgfCAgICA2ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQveG1sXzEub3V0ICAgICAgICAg ICB8ICAgIDMgKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAg IHwgICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY2FzdC5zcWwgICAgICAgICAgICAgICAg IHwgIDQyNiArKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfY2FzdC5zcWwgICAg ICAgICAgfCAgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2VxdWl2Y2xhc3Muc3FsICAgICAg ICAgICB8ICAgIDMgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3FsanNvbl9xdWVyeWZ1bmNzLnNx bCAgIHwgICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC94bWwuc3FsICAgICAgICAgICAgICAg ICAgfCAgICAyICsKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAg ICB8ICAgIDIgKwogNDMgZmlsZXMgY2hhbmdlZCwgMjUwMyBpbnNlcnRpb25zKCspLCA5NCBkZWxl dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nh c3Qub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvY2FzdC5zcWwK CmRpZmYgLS1naXQgYS9jb250cmliL2NpdGV4dC9leHBlY3RlZC9jaXRleHQub3V0IGIvY29udHJp Yi9jaXRleHQvZXhwZWN0ZWQvY2l0ZXh0Lm91dAppbmRleCA4YzBiZjU0ZjBmMy4uNzNhM2Y5MjNi MDcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvY2l0ZXh0L2V4cGVjdGVkL2NpdGV4dC5vdXQKKysrIGIv Y29udHJpYi9jaXRleHQvZXhwZWN0ZWQvY2l0ZXh0Lm91dApAQCAtMTAsNiArMTAsMTEgQEAgV0hF UkUgb3BjLm9pZCA+PSAxNjM4NCBBTkQgTk9UIGFtdmFsaWRhdGUob3BjLm9pZCk7CiAtLS0tLS0t LSstLS0tLS0tLS0KICgwIHJvd3MpCiAKK1NFTEVDVCBDQVNUKCdhYmMnOjpicGNoYXIgQVMgY2l0 ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK0VSUk9SOiAg Y2Fubm90IGNhc3QgdHlwZSBjaGFyYWN0ZXIgdG8gY2l0ZXh0IHdoZW4gREVGQVVMVCBleHByZXNz aW9uIGlzIHNwZWNpZmllZCBpbiBDQVNUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SCitMSU5FIDE6 IFNFTEVDVCBDQVNUKCdhYmMnOjpicGNoYXIgQVMgY2l0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSS4uLgorICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBTYWZlIHR5cGUgY2FzdCBm b3IgdXNlci1kZWZpbmVkIHR5cGVzIGFyZSBub3QgeWV0IHN1cHBvcnRlZC4KIC0tIFRlc3QgdGhl IG9wZXJhdG9ycyBhbmQgaW5kZXhpbmcgZnVuY3Rpb25zCiAtLSBUZXN0ID0gYW5kIDw+LgogU0VM RUNUICdhJzo6Y2l0ZXh0ID0gJ2EnOjpjaXRleHQgQVMgdDsKZGlmZiAtLWdpdCBhL2NvbnRyaWIv Y2l0ZXh0L2V4cGVjdGVkL2NpdGV4dF8xLm91dCBiL2NvbnRyaWIvY2l0ZXh0L2V4cGVjdGVkL2Np dGV4dF8xLm91dAppbmRleCBjNWU1ZjE4MGYyYi4uMjg3ODhhZGYyNmQgMTAwNjQ0Ci0tLSBhL2Nv bnRyaWIvY2l0ZXh0L2V4cGVjdGVkL2NpdGV4dF8xLm91dAorKysgYi9jb250cmliL2NpdGV4dC9l eHBlY3RlZC9jaXRleHRfMS5vdXQKQEAgLTEwLDYgKzEwLDExIEBAIFdIRVJFIG9wYy5vaWQgPj0g MTYzODQgQU5EIE5PVCBhbXZhbGlkYXRlKG9wYy5vaWQpOwogLS0tLS0tLS0rLS0tLS0tLS0tCiAo MCByb3dzKQogCitTRUxFQ1QgQ0FTVCgnYWJjJzo6YnBjaGFyIEFTIGNpdGV4dCBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitFUlJPUjogIGNhbm5vdCBjYXN0IHR5 cGUgY2hhcmFjdGVyIHRvIGNpdGV4dCB3aGVuIERFRkFVTFQgZXhwcmVzc2lvbiBpcyBzcGVjaWZp ZWQgaW4gQ0FTVCAuLi4gT04gQ09OVkVSU0lPTiBFUlJPUgorTElORSAxOiBTRUxFQ1QgQ0FTVCgn YWJjJzo6YnBjaGFyIEFTIGNpdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0kuLi4KKyAgICAg ICAgICAgICAgICAgICAgXgorREVUQUlMOiAgU2FmZSB0eXBlIGNhc3QgZm9yIHVzZXItZGVmaW5l ZCB0eXBlcyBhcmUgbm90IHlldCBzdXBwb3J0ZWQuCiAtLSBUZXN0IHRoZSBvcGVyYXRvcnMgYW5k IGluZGV4aW5nIGZ1bmN0aW9ucwogLS0gVGVzdCA9IGFuZCA8Pi4KIFNFTEVDVCAnYSc6OmNpdGV4 dCA9ICdhJzo6Y2l0ZXh0IEFTIHQ7CmRpZmYgLS1naXQgYS9jb250cmliL2NpdGV4dC9zcWwvY2l0 ZXh0LnNxbCBiL2NvbnRyaWIvY2l0ZXh0L3NxbC9jaXRleHQuc3FsCmluZGV4IGFhMWNmOWFiZDVj Li5jODIwYjBiZDRkOSAxMDA2NDQKLS0tIGEvY29udHJpYi9jaXRleHQvc3FsL2NpdGV4dC5zcWwK KysrIGIvY29udHJpYi9jaXRleHQvc3FsL2NpdGV4dC5zcWwKQEAgLTksNiArOSw4IEBAIFNFTEVD VCBhbW5hbWUsIG9wY25hbWUKIEZST00gcGdfb3BjbGFzcyBvcGMgTEVGVCBKT0lOIHBnX2FtIGFt IE9OIGFtLm9pZCA9IG9wY21ldGhvZAogV0hFUkUgb3BjLm9pZCA+PSAxNjM4NCBBTkQgTk9UIGFt dmFsaWRhdGUob3BjLm9pZCk7CiAKK1NFTEVDVCBDQVNUKCdhYmMnOjpicGNoYXIgQVMgY2l0ZXh0 IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKKwogLS0gVGVzdCB0 aGUgb3BlcmF0b3JzIGFuZCBpbmRleGluZyBmdW5jdGlvbnMKIAogLS0gVGVzdCA9IGFuZCA8Pi4K ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3NlbGVjdC5v dXQgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC9zZWxlY3Qub3V0CmluZGV4 IGEwNjkxMTljNzkwLi44NGYxMDgxMGY3MiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0 YXRlbWVudHMvZXhwZWN0ZWQvc2VsZWN0Lm91dAorKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVt ZW50cy9leHBlY3RlZC9zZWxlY3Qub3V0CkBAIC03Myw2ICs3MywyNSBAQCBTRUxFQ1QgMSBBUyAi aW50IiBPRkZTRVQgMiBGRVRDSCBGSVJTVCAzIFJPVyBPTkxZOwogLS0tLS0KICgwIHJvd3MpCiAK Ky0tIGVycm9yIHNhZmUgdHlwZSBjYXN0CitTRUxFQ1QgQ0FTVCgnYScgQVMgaW50IERFRkFVTFQg MiBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBpbnQ0IAorLS0tLS0tCisgICAgMgorKDEgcm93KQor CitTRUxFQ1QgQ0FTVCgnMTInIEFTIG51bWVyaWMgREVGQVVMVCAyIE9OIENPTlZFUlNJT04gRVJS T1IpOworIG51bWVyaWMgCistLS0tLS0tLS0KKyAgICAgIDEyCisoMSByb3cpCisKK1NFTEVDVCBD QVNUKCcxMicgQVMgbnVtZXJpYygxMCkgREVGQVVMVCAyIE9OIENPTlZFUlNJT04gRVJST1IpOwor IG51bWVyaWMgCistLS0tLS0tLS0KKyAgICAgIDEyCisoMSByb3cpCisKIC0tIERJU1RJTkNUIGFu ZCBPUkRFUiBCWSBwYXR0ZXJucwogLS0gVHJ5IHNvbWUgcXVlcnkgcGVybXV0YXRpb25zIHdoaWNo IG9uY2UgcHJvZHVjZWQgaWRlbnRpY2FsIHF1ZXJ5IElEcwogU0VMRUNUIERJU1RJTkNUIDEgQVMg ImludCI7CkBAIC0yMjIsNiArMjQxLDkgQEAgU0VMRUNUIGNhbGxzLCByb3dzLCBxdWVyeSBGUk9N IHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKICAgICAgMiB8 ICAgIDIgfCBTRUxFQ1QgJDEgQVMgImludCIgT1JERVIgQlkgMQogICAgICAxIHwgICAgMiB8IFNF TEVDVCAkMSBBUyBpIFVOSU9OIFNFTEVDVCAkMiBPUkRFUiBCWSBpCiAgICAgIDEgfCAgICAxIHwg U0VMRUNUICQxIHx8ICQyCisgICAgIDEgfCAgICAxIHwgU0VMRUNUIENBU1QoJDEgQVMgaW50IERF RkFVTFQgJDIgT04gQ09OVkVSU0lPTiBFUlJPUikKKyAgICAgMSB8ICAgIDEgfCBTRUxFQ1QgQ0FT VCgkMSBBUyBudW1lcmljIERFRkFVTFQgJDIgT04gQ09OVkVSU0lPTiBFUlJPUikKKyAgICAgMSB8 ICAgIDEgfCBTRUxFQ1QgQ0FTVCgkMSBBUyBudW1lcmljKDEwKSBERUZBVUxUICQyIE9OIENPTlZF UlNJT04gRVJST1IpCiAgICAgIDIgfCAgICAyIHwgU0VMRUNUIERJU1RJTkNUICQxIEFTICJpbnQi CiAgICAgIDAgfCAgICAwIHwgU0VMRUNUIGNhbGxzLCByb3dzLCBxdWVyeSBGUk9NIHBnX3N0YXRf c3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIgogICAgICAxIHwgICAgMSB8IFNF TEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0CkBAIC0yMzAs NyArMjUyLDcgQEAgU0VMRUNUIGNhbGxzLCByb3dzLCBxdWVyeSBGUk9NIHBnX3N0YXRfc3RhdGVt ZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKICAgICAgICB8ICAgICAgfCApICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKwogICAgICAgIHwgICAgICB8ICAgU0VMRUNUIGYgRlJPTSB0IE9SREVSIEJZ IGYKICAgICAgMSB8ICAgIDEgfCBzZWxlY3QgJDE6Ompzb25iID8gJDIKLSgxNyByb3dzKQorKDIw IHJvd3MpCiAKIFNFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBB UyB0OwogIHQgCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvc2Vs ZWN0LnNxbCBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC9zZWxlY3Quc3FsCmluZGV4 IGExMGQ2MThjMDM0Li40YmU5Nzk3N2JhNiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0 YXRlbWVudHMvc3FsL3NlbGVjdC5zcWwKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMv c3FsL3NlbGVjdC5zcWwKQEAgLTI1LDYgKzI1LDExIEBAIFNFTEVDVCAxIEFTICJpbnQiIExJTUlU IDMgT0ZGU0VUIDM7CiBTRUxFQ1QgMSBBUyAiaW50IiBPRkZTRVQgMSBGRVRDSCBGSVJTVCAyIFJP VyBPTkxZOwogU0VMRUNUIDEgQVMgImludCIgT0ZGU0VUIDIgRkVUQ0ggRklSU1QgMyBST1cgT05M WTsKIAorLS0gZXJyb3Igc2FmZSB0eXBlIGNhc3QKK1NFTEVDVCBDQVNUKCdhJyBBUyBpbnQgREVG QVVMVCAyIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJzEyJyBBUyBudW1lcmlj IERFRkFVTFQgMiBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcxMicgQVMgbnVt ZXJpYygxMCkgREVGQVVMVCAyIE9OIENPTlZFUlNJT04gRVJST1IpOworCiAtLSBESVNUSU5DVCBh bmQgT1JERVIgQlkgcGF0dGVybnMKIC0tIFRyeSBzb21lIHF1ZXJ5IHBlcm11dGF0aW9ucyB3aGlj aCBvbmNlIHByb2R1Y2VkIGlkZW50aWNhbCBxdWVyeSBJRHMKIFNFTEVDVCBESVNUSU5DVCAxIEFT ICJpbnQiOwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21sIGIvZG9jL3NyYy9z Z21sL3N5bnRheC5zZ21sCmluZGV4IDY3NDgyOTk2ODYxLi5hYTBmYzFlZjgxYyAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9zeW50YXguc2dt bApAQCAtMjA3MSw2ICsyMDcxLDEwIEBAIENBU1QgKCA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwv cmVwbGFjZWFibGU+IEFTIDxyZXBsYWNlYWJsZT50eXBlPC9yZXBsYWNlYWJsZT4KICAgICBUaGUg PGxpdGVyYWw+Q0FTVDwvbGl0ZXJhbD4gc3ludGF4IGNvbmZvcm1zIHRvIFNRTDsgdGhlIHN5bnRh eCB3aXRoCiAgICAgPGxpdGVyYWw+Ojo8L2xpdGVyYWw+IGlzIGhpc3RvcmljYWwgPHByb2R1Y3Ru YW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPgogICAgIHVzYWdlLgorICAgIFRoZSBkZWZhdWx0 IGJlaGF2aW9yIHdoZW4gbm8gPGxpdGVyYWw+T04gQ09OVkVSU0lPTiBFUlJPUjwvbGl0ZXJhbD4g Y2xhdXNlIGlzIHNwZWNpZmllZCBpcyBlcXVpdmFsZW50IHRvOgorPHN5bm9wc2lzPgorQ0FTVCAo IDxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gQVMgPHJlcGxhY2VhYmxlPnR5 cGU8L3JlcGxhY2VhYmxlPiBFUlJPUiBPTiBDT05WRVJTSU9OIEVSUk9SICkKKzwvc3lub3BzaXM+ CiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgpAQCAtMjEyNSw2ICsyMTI5LDM0IEBAIENBU1QgKCA8 cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IEFTIDxyZXBsYWNlYWJsZT50eXBl PC9yZXBsYWNlYWJsZT4KICAgICAgPHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZWNhc3QiLz4uCiAg ICAgPC9wYXJhPgogICAgPC9ub3RlPgorCisgPHNlY3QzIGlkPSJzcWwtc3ludGF4LXR5cGUtY2Fz dHMtc2FmZSI+CisgIDx0aXRsZT5TYWZlIFR5cGUgQ2FzdDwvdGl0bGU+CisgICA8cGFyYT4KKyAg ICBBIHR5cGUgY2FzdCBtYXkgb2NjYXNpb25hbGx5IGZhaWwuIFRvIGd1YXJkIGFnYWluc3Qgc3Vj aCBmYWlsdXJlcywgeW91IGNhbgorICAgIHByb3ZpZGUgYW4gPGxpdGVyYWw+T04gQ09OVkVSU0lP TiBFUlJPUjwvbGl0ZXJhbD4gY2xhdXNlIHRvIGhhbmRsZSBwb3RlbnRpYWwgZXJyb3JzLgorICAg IFRoZSBzeW50YXggZm9yIHNhZmUgdHlwZSBjYXN0IGlzOgorPHN5bm9wc2lzPgorQ0FTVCAoIDxy ZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gQVMgPHJlcGxhY2VhYmxlPnR5cGU8 L3JlcGxhY2VhYmxlPiBERUZBVUxUIDxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJs ZT4gT04gQ09OVkVSU0lPTiBFUlJPUiApCis8L3N5bm9wc2lzPgorICAgIElmIHRoZSB0eXBlIGNh c3QgZmFpbHMsIGFuIGVycm9yIGlzIG5vdCByYWlzZWQuICBJbnN0ZWFkLCBldmFsdWF0aW9uIGZh bGxzCisgICAgYmFjayB0byB0aGUgZGVmYXVsdCA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVw bGFjZWFibGU+IHNwZWNpZmllZCBpbiB0aGUKKyAgICA8bGl0ZXJhbD5PTiBDT05WRVJTSU9OIEVS Uk9SPC9saXRlcmFsPiBjbGF1c2UuCisgICAgQXQgcHJlc2VudCwgdGhpcyBvbmx5IHN1cHBvcnQg YnVpbHQtaW4gdHlwZSBjYXN0cywgc2VlIDx4cmVmIGxpbmtlbmQ9ImNhdGFsb2ctcGctY2FzdCIv Pi4KKyAgICBVc2VyLWRlZmluZWQgdHlwZSBjYXN0cyBjcmVhdGVkIHdpdGggPGxpbmsgbGlua2Vu ZD0ic3FsLWNyZWF0ZWNhc3QiPkNSRUFURSBDQVNUPC9saW5rPgorICAgIGFyZSBub3Qgc3VwcG9y dGVkLgorICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICBTb21lIGV4YW1wbGVzOgorPHNjcmVl bj4KK1NFTEVDVCBDQVNUKFRFWFQgJ2Vycm9yJyBBUyBpbnRlZ2VyIERFRkFVTFQgMyBPTiBDT05W RVJTSU9OIEVSUk9SKTsKKzxsaW5lYW5ub3RhdGlvbj5SZXN1bHQ6IDwvbGluZWFubm90YXRpb24+ PGNvbXB1dGVyb3V0cHV0PjM8L2NvbXB1dGVyb3V0cHV0PgorU0VMRUNUIENBU1QoVEVYVCAnZXJy b3InIEFTIG51bWVyaWMgREVGQVVMVCAxLjEgT04gQ09OVkVSU0lPTiBFUlJPUik7Cis8bGluZWFu bm90YXRpb24+UmVzdWx0OiA8L2xpbmVhbm5vdGF0aW9uPjxjb21wdXRlcm91dHB1dD4xLjE8L2Nv bXB1dGVyb3V0cHV0PgorPC9zY3JlZW4+CisgICAgPC9wYXJhPgorICA8L3NlY3QzPgogICA8L3Nl Y3QyPgogCiAgIDxzZWN0MiBpZD0ic3FsLXN5bnRheC1jb2xsYXRlLWV4cHJzIj4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjRXhwci5jCmluZGV4IDc3MjI5MTQxYjM4Li4wMTJiZTllMjI5MCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjRXhwci5jCkBAIC05OSw2ICs5OSw5IEBAIHN0YXRpYyB2b2lkIEV4ZWNCdWlsZEFnZ1Ry YW5zQ2FsbChFeHByU3RhdGUgKnN0YXRlLCBBZ2dTdGF0ZSAqYWdnc3RhdGUsCiBzdGF0aWMgdm9p ZCBFeGVjSW5pdEpzb25FeHByKEpzb25FeHByICpqc2V4cHIsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJ CQkJCQkJIERhdHVtICpyZXN2LCBib29sICpyZXNudWxsLAogCQkJCQkJCSBFeHByRXZhbFN0ZXAg KnNjcmF0Y2gpOworc3RhdGljIHZvaWQgRXhlY0luaXRTYWZlVHlwZUNhc3RFeHByKFNhZmVUeXBl Q2FzdEV4cHIgKnN0Y2V4cHIsIEV4cHJTdGF0ZSAqc3RhdGUsCisJCQkJCQkJCQkgRGF0dW0gKnJl c3YsIGJvb2wgKnJlc251bGwsCisJCQkJCQkJCQkgRXhwckV2YWxTdGVwICpzY3JhdGNoKTsKIHN0 YXRpYyB2b2lkIEV4ZWNJbml0SnNvbkNvZXJjaW9uKEV4cHJTdGF0ZSAqc3RhdGUsIEpzb25SZXR1 cm5pbmcgKnJldHVybmluZywKIAkJCQkJCQkJIEVycm9yU2F2ZUNvbnRleHQgKmVzY29udGV4dCwg Ym9vbCBvbWl0X3F1b3RlcywKIAkJCQkJCQkJIGJvb2wgZXhpc3RzX2NvZXJjZSwKQEAgLTE3MzQs NiArMTczNyw3IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRl LAogCiAJCQkJZWxlbXN0YXRlLT5pbm5lcm1vc3RfY2FzZXZhbCA9IHBhbGxvY19vYmplY3QoRGF0 dW0pOwogCQkJCWVsZW1zdGF0ZS0+aW5uZXJtb3N0X2Nhc2VudWxsID0gcGFsbG9jX29iamVjdChi b29sKTsKKwkJCQllbGVtc3RhdGUtPmVzY29udGV4dCA9IHN0YXRlLT5lc2NvbnRleHQ7CiAKIAkJ CQlFeGVjSW5pdEV4cHJSZWMoYWNvZXJjZS0+ZWxlbWV4cHIsIGVsZW1zdGF0ZSwKIAkJCQkJCQkJ JmVsZW1zdGF0ZS0+cmVzdmFsdWUsICZlbGVtc3RhdGUtPnJlc251bGwpOwpAQCAtMjIwOSw2ICsy MjEzLDE1IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAog CQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgVF9TYWZlVHlwZUNhc3RFeHByOgorCQkJeworCQkJ CVNhZmVUeXBlQ2FzdEV4cHIgKnN0Y2V4cHIgPSBjYXN0Tm9kZShTYWZlVHlwZUNhc3RFeHByLCBu b2RlKTsKKworCQkJCUV4ZWNJbml0U2FmZVR5cGVDYXN0RXhwcihzdGNleHByLCBzdGF0ZSwgcmVz diwgcmVzbnVsbCwgJnNjcmF0Y2gpOworCisJCQkJYnJlYWs7CisJCQl9CisKIAkJY2FzZSBUX0Nv YWxlc2NlRXhwcjoKIAkJCXsKIAkJCQlDb2FsZXNjZUV4cHIgKmNvYWxlc2NlID0gKENvYWxlc2Nl RXhwciAqKSBub2RlOwpAQCAtMjc2OSw3ICsyNzgyLDggQEAgRXhlY0luaXRGdW5jKEV4cHJFdmFs U3RlcCAqc2NyYXRjaCwgRXhwciAqbm9kZSwgTGlzdCAqYXJncywgT2lkIGZ1bmNpZCwKIAogCS8q IEluaXRpYWxpemUgZnVuY3Rpb24gY2FsbCBwYXJhbWV0ZXIgc3RydWN0dXJlIHRvbyAqLwogCUlu aXRGdW5jdGlvbkNhbGxJbmZvRGF0YSgqZmNpbmZvLCBmbGluZm8sCi0JCQkJCQkJIG5hcmdzLCBp bnB1dGNvbGxpZCwgTlVMTCwgTlVMTCk7CisJCQkJCQkJIG5hcmdzLCBpbnB1dGNvbGxpZCwKKwkJ CQkJCQkgKE5vZGUgKikgc3RhdGUtPmVzY29udGV4dCwgTlVMTCk7CiAKIAkvKiBLZWVwIGV4dHJh IGNvcGllcyBvZiB0aGlzIGluZm8gdG8gc2F2ZSBhbiBpbmRpcmVjdGlvbiBhdCBydW50aW1lICov CiAJc2NyYXRjaC0+ZC5mdW5jLmZuX2FkZHIgPSBmbGluZm8tPmZuX2FkZHI7CkBAIC00NzcwLDYg KzQ3ODQsNDggQEAgRXhlY0J1aWxkUGFyYW1TZXRFcXVhbChUdXBsZURlc2MgZGVzYywKIAlyZXR1 cm4gc3RhdGU7CiB9CiAKKy8qCisgKiBQdXNoIHN0ZXBzIHRvIGV2YWx1YXRlIGEgU2FmZVR5cGVD YXN0RXhwciBhbmQgaXRzIHZhcmlvdXMgc3Vic2lkaWFyeQorICogZXhwcmVzc2lvbnMuCisgKi8K K3N0YXRpYyB2b2lkCitFeGVjSW5pdFNhZmVUeXBlQ2FzdEV4cHIoU2FmZVR5cGVDYXN0RXhwciAq c3RjZXhwciwgRXhwclN0YXRlICpzdGF0ZSwKKwkJCQkJCSBEYXR1bSAqcmVzdiwgYm9vbCAqcmVz bnVsbCwKKwkJCQkJCSBFeHByRXZhbFN0ZXAgKnNjcmF0Y2gpCit7CisJLyoKKwkgKiBDb2VyY2lv biB0byB0aGUgdGFyZ2V0IHR5cGUgZmFpbGVkLiBGYWxsaW5nIGJhY2sgdG8gdGhlIERFRkFVTFQK KwkgKiBleHByZXNzaW9uIGZyb20gdGhlIE9OIENPTlZFUlNJT04gRVJST1IgY2xhdXNlIHRvIGZp bmlzaC4KKwkgKi8KKwlpZiAoc3RjZXhwci0+Y2FzdGV4cHIgPT0gTlVMTCkKKwl7CisJCUV4ZWNJ bml0RXhwclJlYyhzdGNleHByLT5kZWZleHByLCBzdGF0ZSwgcmVzdiwgcmVzbnVsbCk7CisKKwkJ cmV0dXJuOworCX0KKwllbHNlCisJeworCQlTYWZlVHlwZUNhc3RTdGF0ZSAqc3Rjc3RhdGUgPSBw YWxsb2MwX29iamVjdChTYWZlVHlwZUNhc3RTdGF0ZSk7CisJCUVycm9yU2F2ZUNvbnRleHQgKnNh dmVkX2VzY29udGV4dCA9IHN0YXRlLT5lc2NvbnRleHQ7CisKKwkJc3Rjc3RhdGUtPnN0Y2V4cHIg PSBzdGNleHByOworCQlzdGNzdGF0ZS0+ZXNjb250ZXh0LnR5cGUgPSBUX0Vycm9yU2F2ZUNvbnRl eHQ7CisJCXN0YXRlLT5lc2NvbnRleHQgPSAmc3Rjc3RhdGUtPmVzY29udGV4dDsKKworCQkvKiBl dmFsdWF0ZSBhcmd1bWVudCBleHByZXNzaW9uIGludG8gc3RlcCdzIHJlc3VsdCBhcmVhICovCisJ CUV4ZWNJbml0RXhwclJlYyhzdGNleHByLT5jYXN0ZXhwciwgc3RhdGUsIHJlc3YsIHJlc251bGwp OworCQlzY3JhdGNoLT5vcGNvZGUgPSBFRU9QX1NBRkVUWVBFX0NBU1Q7CisJCXNjcmF0Y2gtPmQu c3RjZXhwci5zdGNzdGF0ZSA9IHN0Y3N0YXRlOworCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCBz Y3JhdGNoKTsKKworCQkvKiBFdmFsdWF0ZSB0aGUgREVGQVVMVCBleHByZXNzaW9uIHVzaW5nIHRo ZSBwcmlvciBzdGF0ZS0+ZXNjb250ZXh0ICovCisJCXN0YXRlLT5lc2NvbnRleHQgPSBzYXZlZF9l c2NvbnRleHQ7CisJCUV4ZWNJbml0RXhwclJlYyhzdGNzdGF0ZS0+c3RjZXhwci0+ZGVmZXhwciwg c3RhdGUsIHJlc3YsIHJlc251bGwpOworCisJCXN0Y3N0YXRlLT5qdW1wX2VuZCA9IHN0YXRlLT5z dGVwc19sZW47CisJfQorfQorCiAvKgogICogUHVzaCBzdGVwcyB0byBldmFsdWF0ZSBhIEpzb25F eHByIGFuZCBpdHMgdmFyaW91cyBzdWJzaWRpYXJ5IGV4cHJlc3Npb25zLgogICovCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYwppbmRleCA0MzExNjQzMWVkZi4uNzllYmUwMjU0ZmQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYwpAQCAtNTcwLDYgKzU3MCw3IEBA IEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwg Ym9vbCAqaXNudWxsKQogCQkmJkNBU0VfRUVPUF9YTUxFWFBSLAogCQkmJkNBU0VfRUVPUF9KU09O X0NPTlNUUlVDVE9SLAogCQkmJkNBU0VfRUVPUF9JU19KU09OLAorCQkmJkNBU0VfRUVPUF9TQUZF VFlQRV9DQVNULAogCQkmJkNBU0VfRUVPUF9KU09ORVhQUl9QQVRILAogCQkmJkNBU0VfRUVPUF9K U09ORVhQUl9DT0VSQ0lPTiwKIAkJJiZDQVNFX0VFT1BfSlNPTkVYUFJfQ09FUkNJT05fRklOSVNI LApAQCAtMTkyOCw2ICsxOTI5LDI4IEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUs IEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQogCQkJRUVPX05FWFQoKTsKIAkJ fQogCisJCUVFT19DQVNFKEVFT1BfU0FGRVRZUEVfQ0FTVCkKKwkJeworCQkJU2FmZVR5cGVDYXN0 U3RhdGUgKnN0Y3N0YXRlID0gb3AtPmQuc3RjZXhwci5zdGNzdGF0ZTsKKworCQkJaWYgKCFTT0ZU X0VSUk9SX09DQ1VSUkVEKCZzdGNzdGF0ZS0+ZXNjb250ZXh0KSkKKwkJCQlFRU9fSlVNUChzdGNz dGF0ZS0+anVtcF9lbmQpOworCQkJZWxzZQorCQkJeworCQkJCSpvcC0+cmVzdmFsdWUgPSAoRGF0 dW0pIDA7CisJCQkJKm9wLT5yZXNudWxsID0gdHJ1ZTsKKworCQkJCS8qCisJCQkJICogUmVzZXQg Zm9yIG5leHQgdXNlIHN1Y2ggYXMgZm9yIGNhdGNoaW5nIGVycm9ycyB3aGVuCisJCQkJICogY29l cmNpbmcgYSBleHByZXNzaW9uLgorCQkJCSAqLworCQkJCXN0Y3N0YXRlLT5lc2NvbnRleHQuZXJy b3Jfb2NjdXJyZWQgPSBmYWxzZTsKKwkJCQlzdGNzdGF0ZS0+ZXNjb250ZXh0LmRldGFpbHNfd2Fu dGVkID0gZmFsc2U7CisKKwkJCQlFRU9fTkVYVCgpOworCQkJfQorCQl9CisKIAkJRUVPX0NBU0Uo RUVPUF9KU09ORVhQUl9QQVRIKQogCQl7CiAJCQkvKiB0b28gY29tcGxleCBmb3IgYW4gaW5saW5l IGltcGxlbWVudGF0aW9uICovCkBAIC0zNjQ2LDYgKzM2NjksMTIgQEAgRXhlY0V2YWxBcnJheUNv ZXJjZShFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLCBFeHByQ29udGV4dCAqZWNv bnRleHQpCiAJCQkJCQkJICBlY29udGV4dCwKIAkJCQkJCQkgIG9wLT5kLmFycmF5Y29lcmNlLnJl c3VsdGVsZW10eXBlLAogCQkJCQkJCSAgb3AtPmQuYXJyYXljb2VyY2UuYW1zdGF0ZSk7CisKKwlp ZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChvcC0+ZC5hcnJheWNvZXJjZS5lbGVtZXhwcnN0YXRlLT5l c2NvbnRleHQpKQorCXsKKwkJKm9wLT5yZXN2YWx1ZSA9IChEYXR1bSkgMDsKKwkJKm9wLT5yZXNu dWxsID0gdHJ1ZTsKKwl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9qaXQvbGx2 bS9sbHZtaml0X2V4cHIuYyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCmlu ZGV4IDY1MGYxZDQyYTkzLi4yMzNiZDJhZTI3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvaml0 L2xsdm0vbGx2bWppdF9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9l eHByLmMKQEAgLTIyNTYsNiArMjI1Niw2MiBAQCBsbHZtX2NvbXBpbGVfZXhwcihFeHByU3RhdGUg KnN0YXRlKQogCQkJCUxMVk1CdWlsZEJyKGIsIG9wYmxvY2tzW29wbm8gKyAxXSk7CiAJCQkJYnJl YWs7CiAKKwkJCWNhc2UgRUVPUF9TQUZFVFlQRV9DQVNUOgorCQkJCXsKKwkJCQkJU2FmZVR5cGVD YXN0U3RhdGUgKnN0Y3N0YXRlID0gb3AtPmQuc3RjZXhwci5zdGNzdGF0ZTsKKwkJCQkJTExWTUJh c2ljQmxvY2tSZWYgYl9ub2Vycm9yOworCQkJCQlMTFZNQmFzaWNCbG9ja1JlZiBiX2Vycm9yOwor CQkJCQlMTFZNVmFsdWVSZWYgdl9lcnJvcl9vY2N1cnJlZF9wOworCQkJCQlMTFZNVmFsdWVSZWYg dl9kZXRhaWxzX3dhbnRlZF9wOworCQkJCQlMTFZNVmFsdWVSZWYgdl9lcnJvcl9vY2N1cnJlZDsK KworCQkJCQliX25vZXJyb3IgPSBsX2JiX2JlZm9yZV92KG9wYmxvY2tzW29wbm8gKyAxXSwKKwkJ CQkJCQkJCQkJICAib3AuJWQubm9lcnJvciIsIG9wbm8pOworCQkJCQliX2Vycm9yID0gbF9iYl9i ZWZvcmVfdihvcGJsb2Nrc1tvcG5vICsgMV0sCisJCQkJCQkJCQkJCSJvcC4lZC5lcnJvciIsIG9w bm8pOworCisJCQkJCS8qIEdldCBwb2ludGVyIHRvIGVycm9yX29jY3VycmVkIGZpZWxkICovCisJ CQkJCXZfZXJyb3Jfb2NjdXJyZWRfcCA9IGxfcHRyX2NvbnN0KCZzdGNzdGF0ZS0+ZXNjb250ZXh0 LmVycm9yX29jY3VycmVkLAorCQkJCQkJCQkJCQkJCSBsX3B0cihUeXBlU3RvcmFnZUJvb2wpKTsK KworCQkJCQkvKiBMb2FkIGVycm9yX29jY3VycmVkIGF0IHJ1bnRpbWUgKi8KKwkJCQkJdl9lcnJv cl9vY2N1cnJlZCA9IGxfbG9hZChiLCBUeXBlU3RvcmFnZUJvb2wsIHZfZXJyb3Jfb2NjdXJyZWRf cCwgIiIpOworCisJCQkJCS8qIEJyYW5jaCBiYXNlZCBvbiBlcnJvcl9vY2N1cnJlZDogbm8gZXJy b3IgLT4ganVtcF9lbmQgKi8KKwkJCQkJTExWTUJ1aWxkQ29uZEJyKGIsCisJCQkJCQkJCQlMTFZN QnVpbGRJQ21wKGIsIExMVk1JbnRFUSwgdl9lcnJvcl9vY2N1cnJlZCwKKwkJCQkJCQkJCQkJCSAg bF9zYm9vbF9jb25zdCgwKSwgIiIpLAorCQkJCQkJCQkJYl9ub2Vycm9yLAorCQkJCQkJCQkJYl9l cnJvcik7CisKKwkJCQkJLyogTm8gZXJyb3I6IGp1bXAgdG8gZW5kICovCisJCQkJCUxMVk1Qb3Np dGlvbkJ1aWxkZXJBdEVuZChiLCBiX25vZXJyb3IpOworCQkJCQlMTFZNQnVpbGRCcihiLCBvcGJs b2Nrc1tzdGNzdGF0ZS0+anVtcF9lbmRdKTsKKworCQkJCQkvKiBFcnJvciBvY2N1cnJlZDogc2V0 IG51bGwsIHJlc2V0IGZsYWdzLCBldmFsdWF0ZSBkZWZhdWx0ICovCisJCQkJCUxMVk1Qb3NpdGlv bkJ1aWxkZXJBdEVuZChiLCBiX2Vycm9yKTsKKworCQkJCQkvKiBzZXQgcmVzbnVsbCB0byB0cnVl ICovCisJCQkJCUxMVk1CdWlsZFN0b3JlKGIsIGxfc2Jvb2xfY29uc3QoMSksIHZfcmVzbnVsbHAp OworCisJCQkJCS8qIHJlc2V0IHJlc3ZhbHVlICovCisJCQkJCUxMVk1CdWlsZFN0b3JlKGIsIGxf ZGF0dW1fY29uc3QoMCksIHZfcmVzdmFsdWVwKTsKKworCQkJCQkvKgorCQkJCQkgKiBSZXNldCBm b3IgbmV4dCB1c2Ugc3VjaCBhcyBmb3IgY2F0Y2hpbmcgZXJyb3JzIHdoZW4KKwkJCQkJICogY29l cmNpbmcgYSBleHByZXNzaW9uLgorCQkJCQkgKi8KKwkJCQkJTExWTUJ1aWxkU3RvcmUoYiwgbF9z Ym9vbF9jb25zdCgwKSwgdl9lcnJvcl9vY2N1cnJlZF9wKTsKKworCQkJCQl2X2RldGFpbHNfd2Fu dGVkX3AgPSBsX3B0cl9jb25zdCgmc3Rjc3RhdGUtPmVzY29udGV4dC5kZXRhaWxzX3dhbnRlZCwK KwkJCQkJCQkJCQkJCQkgbF9wdHIoVHlwZVN0b3JhZ2VCb29sKSk7CisJCQkJCUxMVk1CdWlsZFN0 b3JlKGIsIGxfc2Jvb2xfY29uc3QoMCksIHZfZGV0YWlsc193YW50ZWRfcCk7CisKKwkJCQkJTExW TUJ1aWxkQnIoYiwgb3BibG9ja3Nbb3BubyArIDFdKTsKKworCQkJCQlicmVhazsKKwkJCQl9CisK IAkJCWNhc2UgRUVPUF9KU09ORVhQUl9QQVRIOgogCQkJCXsKIAkJCQkJSnNvbkV4cHJTdGF0ZSAq anNlc3RhdGUgPSBvcC0+ZC5qc29uZXhwci5qc2VzdGF0ZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL25vZGVzL25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5k ZXggNmE4NTAzNDljZjcuLmI1ZTg5YjdmNjBjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rl cy9ub2RlRnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpAQCAtMjA2 LDYgKzIwNiw5IEBAIGV4cHJUeXBlKGNvbnN0IE5vZGUgKmV4cHIpCiAJCWNhc2UgVF9Sb3dDb21w YXJlRXhwcjoKIAkJCXR5cGUgPSBCT09MT0lEOwogCQkJYnJlYWs7CisJCWNhc2UgVF9TYWZlVHlw ZUNhc3RFeHByOgorCQkJdHlwZSA9ICgoY29uc3QgU2FmZVR5cGVDYXN0RXhwciAqKSBleHByKS0+ cmVzdWx0dHlwZTsKKwkJCWJyZWFrOwogCQljYXNlIFRfQ29hbGVzY2VFeHByOgogCQkJdHlwZSA9 ICgoY29uc3QgQ29hbGVzY2VFeHByICopIGV4cHIpLT5jb2FsZXNjZXR5cGU7CiAJCQlicmVhazsK QEAgLTQ1Myw2ICs0NTYsOCBAQCBleHByVHlwbW9kKGNvbnN0IE5vZGUgKmV4cHIpCiAJCQkJcmV0 dXJuIHR5cG1vZDsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFRfU2FmZVR5cGVDYXN0RXhwcjoK KwkJCXJldHVybiAoKGNvbnN0IFNhZmVUeXBlQ2FzdEV4cHIgKikgZXhwciktPnJlc3VsdHR5cG1v ZDsKIAkJY2FzZSBUX0NvYWxlc2NlRXhwcjoKIAkJCXsKIAkJCQkvKgpAQCAtOTcwLDYgKzk3NSw5 IEBAIGV4cHJDb2xsYXRpb24oY29uc3QgTm9kZSAqZXhwcikKIAkJCS8qIFJvd0NvbXBhcmVFeHBy J3MgcmVzdWx0IGlzIGJvb2xlYW4gLi4uICovCiAJCQljb2xsID0gSW52YWxpZE9pZDsJLyogLi4u IHNvIGl0IGhhcyBubyBjb2xsYXRpb24gKi8KIAkJCWJyZWFrOworCQljYXNlIFRfU2FmZVR5cGVD YXN0RXhwcjoKKwkJCWNvbGwgPSAoKGNvbnN0IFNhZmVUeXBlQ2FzdEV4cHIgKikgZXhwciktPnJl c3VsdGNvbGxpZDsKKwkJCWJyZWFrOwogCQljYXNlIFRfQ29hbGVzY2VFeHByOgogCQkJY29sbCA9 ICgoY29uc3QgQ29hbGVzY2VFeHByICopIGV4cHIpLT5jb2FsZXNjZWNvbGxpZDsKIAkJCWJyZWFr OwpAQCAtMTI0MCw2ICsxMjQ4LDkgQEAgZXhwclNldENvbGxhdGlvbihOb2RlICpleHByLCBPaWQg Y29sbGF0aW9uKQogCQkJLyogUm93Q29tcGFyZUV4cHIncyByZXN1bHQgaXMgYm9vbGVhbiAuLi4g Ki8KIAkJCUFzc2VydCghT2lkSXNWYWxpZChjb2xsYXRpb24pKTsgLyogLi4uIHNvIG5ldmVyIHNl dCBhIGNvbGxhdGlvbiAqLwogCQkJYnJlYWs7CisJCWNhc2UgVF9TYWZlVHlwZUNhc3RFeHByOgor CQkJKChTYWZlVHlwZUNhc3RFeHByICopIGV4cHIpLT5yZXN1bHRjb2xsaWQgPSBjb2xsYXRpb247 CisJCQlicmVhazsKIAkJY2FzZSBUX0NvYWxlc2NlRXhwcjoKIAkJCSgoQ29hbGVzY2VFeHByICop IGV4cHIpLT5jb2FsZXNjZWNvbGxpZCA9IGNvbGxhdGlvbjsKIAkJCWJyZWFrOwpAQCAtMTU1OCw2 ICsxNTY5LDkgQEAgZXhwckxvY2F0aW9uKGNvbnN0IE5vZGUgKmV4cHIpCiAJCQkvKiBqdXN0IHVz ZSBsZWZ0bW9zdCBhcmd1bWVudCdzIGxvY2F0aW9uICovCiAJCQlsb2MgPSBleHByTG9jYXRpb24o KE5vZGUgKikgKChjb25zdCBSb3dDb21wYXJlRXhwciAqKSBleHByKS0+bGFyZ3MpOwogCQkJYnJl YWs7CisJCWNhc2UgVF9TYWZlVHlwZUNhc3RFeHByOgorCQkJbG9jID0gKChjb25zdCBTYWZlVHlw ZUNhc3RFeHByICopIGV4cHIpLT5sb2NhdGlvbjsKKwkJCWJyZWFrOwogCQljYXNlIFRfQ29hbGVz Y2VFeHByOgogCQkJLyogQ09BTEVTQ0Uga2V5d29yZCBzaG91bGQgYWx3YXlzIGJlIHRoZSBmaXJz dCB0aGluZyAqLwogCQkJbG9jID0gKChjb25zdCBDb2FsZXNjZUV4cHIgKikgZXhwciktPmxvY2F0 aW9uOwpAQCAtMjMzMyw2ICsyMzQ3LDE4IEBAIGV4cHJlc3Npb25fdHJlZV93YWxrZXJfaW1wbChO b2RlICpub2RlLAogCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFRf U2FmZVR5cGVDYXN0RXhwcjoKKwkJCXsKKwkJCQlTYWZlVHlwZUNhc3RFeHByICpzdGNleHByID0g Y2FzdE5vZGUoU2FmZVR5cGVDYXN0RXhwciwgbm9kZSk7CisKKwkJCQlpZiAoV0FMSyhzdGNleHBy LT5zb3VyY2UpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhzdGNleHByLT5jYXN0 ZXhwcikpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKHN0Y2V4cHItPmRlZmV4cHIp KQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfQ29hbGVzY2VF eHByOgogCQkJcmV0dXJuIFdBTEsoKChDb2FsZXNjZUV4cHIgKikgbm9kZSktPmFyZ3MpOwogCQlj YXNlIFRfTWluTWF4RXhwcjoKQEAgLTMzNjgsNiArMzM5NCwxOSBAQCBleHByZXNzaW9uX3RyZWVf bXV0YXRvcl9pbXBsKE5vZGUgKm5vZGUsCiAJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CiAJ CQl9CiAJCQlicmVhazsKKwkJY2FzZSBUX1NhZmVUeXBlQ2FzdEV4cHI6CisJCQl7CisJCQkJU2Fm ZVR5cGVDYXN0RXhwciAqc3RjZXhwciA9IGNhc3ROb2RlKFNhZmVUeXBlQ2FzdEV4cHIsIG5vZGUp OworCQkJCVNhZmVUeXBlQ2FzdEV4cHIgKm5ld25vZGU7CisKKwkJCQlGTEFUQ09QWShuZXdub2Rl LCBzdGNleHByLCBTYWZlVHlwZUNhc3RFeHByKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+c291cmNl LCBzdGNleHByLT5zb3VyY2UsIEV4cHIgKik7CisJCQkJTVVUQVRFKG5ld25vZGUtPmNhc3RleHBy LCBzdGNleHByLT5jYXN0ZXhwciwgRXhwciAqKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+ZGVmZXhw ciwgc3RjZXhwci0+ZGVmZXhwciwgRXhwciAqKTsKKworCQkJCXJldHVybiAoTm9kZSAqKSBuZXdu b2RlOworCQkJfQorCQkJYnJlYWs7CiAJCWNhc2UgVF9Db2FsZXNjZUV4cHI6CiAJCQl7CiAJCQkJ Q29hbGVzY2VFeHByICpjb2FsZXNjZWV4cHIgPSAoQ29hbGVzY2VFeHByICopIG5vZGU7CkBAIC00 NTA0LDYgKzQ1NDMsMjAgQEAgcmF3X2V4cHJlc3Npb25fdHJlZV93YWxrZXJfaW1wbChOb2RlICpu b2RlLAogCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCQlpZiAoV0FMSyh0Yy0+dHlwZU5hbWUpKQogCQkJ CQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyh0Yy0+ZGVmZXhwcikpCisJCQkJCXJldHVybiB0 cnVlOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9TYWZlVHlwZUNhc3RFeHByOgorCQkJewor CQkJCVNhZmVUeXBlQ2FzdEV4cHIgKnN0Y2V4cHIgPSBjYXN0Tm9kZShTYWZlVHlwZUNhc3RFeHBy LCBub2RlKTsKKworCQkJCWlmIChXQUxLKHN0Y2V4cHItPnNvdXJjZSkpCisJCQkJCXJldHVybiB0 cnVlOworCQkJCWlmIChXQUxLKHN0Y2V4cHItPmNhc3RleHByKSkKKwkJCQkJcmV0dXJuIHRydWU7 CisJCQkJaWYgKFdBTEsoc3RjZXhwci0+ZGVmZXhwcikpCisJCQkJCXJldHVybiB0cnVlOwogCQkJ fQogCQkJYnJlYWs7CiAJCWNhc2UgVF9Db2xsYXRlQ2xhdXNlOgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0 aWwvY2xhdXNlcy5jCmluZGV4IDlmYjI2NmQwODlkLi4wZDE2N2UyZTgxYyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCisrKyBiL3NyYy9iYWNrZW5kL29w dGltaXplci91dGlsL2NsYXVzZXMuYwpAQCAtNjksNiArNjksNyBAQCB0eXBlZGVmIHN0cnVjdAog CUxpc3QJICAgKmFjdGl2ZV9mbnM7CiAJTm9kZQkgICAqY2FzZV92YWw7CiAJYm9vbAkJZXN0aW1h dGU7CisJRXJyb3JTYXZlQ29udGV4dCAqZXNjb250ZXh0OwogfSBldmFsX2NvbnN0X2V4cHJlc3Np b25zX2NvbnRleHQ7CiAKIHR5cGVkZWYgc3RydWN0CkBAIC0yNDkyLDYgKzI0OTMsMTAgQEAgcm93 dHlwZV9maWVsZF9tYXRjaGVzKE9pZCByb3d0eXBlaWQsIGludCBmaWVsZG51bSwKICAqIE5PVEU6 IGFub3RoZXIgY3JpdGljYWwgZWZmZWN0IGlzIHRoYXQgYW55IGZ1bmN0aW9uIGNhbGxzIHRoYXQg cmVxdWlyZQogICogZGVmYXVsdCBhcmd1bWVudHMgd2lsbCBiZSBleHBhbmRlZCwgYW5kIG5hbWVk LWFyZ3VtZW50IGNhbGxzIHdpbGwgYmUKICAqIGNvbnZlcnRlZCB0byBwb3NpdGlvbmFsIG5vdGF0 aW9uLiAgVGhlIGV4ZWN1dG9yIHdvbid0IGhhbmRsZSBlaXRoZXIuCisgKgorICogTk9URTogSWYg ZXZhbF9jb25zdF9leHByZXNzaW9uc19jb250ZXh0LT5lc2NvbnRleHQgaXMgbm90IE5VTEwsIHRo ZQorICogZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgaW4gYW4gZXJyb3Itc2FmZSBtYW5uZXIuIElu IHRoaXMgY2FzZSwgdGhlCisgKiBmdW5jdGlvbiB3aWxsIHJldHVybiBOVUxMIGluc3RlYWQgb2Yg dGhyb3dpbmcgYW4gZXJyb3IuCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIE5vZGUgKgpA QCAtMjUwNyw2ICsyNTEyLDcgQEAgZXZhbF9jb25zdF9leHByZXNzaW9ucyhQbGFubmVySW5mbyAq cm9vdCwgTm9kZSAqbm9kZSkKIAljb250ZXh0LmFjdGl2ZV9mbnMgPSBOSUw7CS8qIG5vdGhpbmcg YmVpbmcgcmVjdXJzaXZlbHkgc2ltcGxpZmllZCAqLwogCWNvbnRleHQuY2FzZV92YWwgPSBOVUxM OwkvKiBubyBDQVNFIGJlaW5nIGV4YW1pbmVkICovCiAJY29udGV4dC5lc3RpbWF0ZSA9IGZhbHNl OwkvKiBzYWZlIHRyYW5zZm9ybWF0aW9ucyBvbmx5ICovCisJY29udGV4dC5lc2NvbnRleHQgPSBO VUxMOwkvKiBmb3IgZXJyb3Itc2FmZSBleHByZXNzaW9uIGV2YWx1YXRpb24gKi8KIAlyZXR1cm4g ZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKG5vZGUsICZjb250ZXh0KTsKIH0KIApAQCAt MjY0Niw2ICsyNjUyLDcgQEAgZXN0aW1hdGVfZXhwcmVzc2lvbl92YWx1ZShQbGFubmVySW5mbyAq cm9vdCwgTm9kZSAqbm9kZSkKIAljb250ZXh0LmFjdGl2ZV9mbnMgPSBOSUw7CS8qIG5vdGhpbmcg YmVpbmcgcmVjdXJzaXZlbHkgc2ltcGxpZmllZCAqLwogCWNvbnRleHQuY2FzZV92YWwgPSBOVUxM OwkvKiBubyBDQVNFIGJlaW5nIGV4YW1pbmVkICovCiAJY29udGV4dC5lc3RpbWF0ZSA9IHRydWU7 CS8qIHVuc2FmZSB0cmFuc2Zvcm1hdGlvbnMgT0sgKi8KKwljb250ZXh0LmVzY29udGV4dCA9IE5V TEw7CS8qIGZvciBlcnJvci1zYWZlIGV4cHJlc3Npb24gZXZhbHVhdGlvbiAqLwogCXJldHVybiBl dmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3Iobm9kZSwgJmNvbnRleHQpOwogfQogCkBAIC0y NjcxLDExICsyNjc4LDEyIEBAIGVzdGltYXRlX2V4cHJlc3Npb25fdmFsdWUoUGxhbm5lckluZm8g KnJvb3QsIE5vZGUgKm5vZGUpCiAJKCFleHByZXNzaW9uX3RyZWVfd2Fsa2VyKChOb2RlICopIChu b2RlKSwgY29udGFpbl9ub25fY29uc3Rfd2Fsa2VyLCBOVUxMKSkKIAogLyogR2VuZXJpYyBtYWNy byBmb3IgYXBwbHlpbmcgZXZhbHVhdGVfZXhwciAqLwotI2RlZmluZSBlY2VfZXZhbHVhdGVfZXhw cihub2RlKSBcCisjZGVmaW5lIGVjZV9ldmFsdWF0ZV9leHByKG5vZGUsIGVzY29udGV4dCkgXAog CSgoTm9kZSAqKSBldmFsdWF0ZV9leHByKChFeHByICopIChub2RlKSwgXAogCQkJCQkJCWV4cHJU eXBlKChOb2RlICopIChub2RlKSksIFwKIAkJCQkJCQlleHByVHlwbW9kKChOb2RlICopIChub2Rl KSksIFwKLQkJCQkJCQlleHByQ29sbGF0aW9uKChOb2RlICopIChub2RlKSkpKQorCQkJCQkJCWV4 cHJDb2xsYXRpb24oKE5vZGUgKikgKG5vZGUpKSwgXAorCQkJCQkJCShOb2RlICopIGVzY29udGV4 dCkpCiAKIC8qCiAgKiBSZWN1cnNpdmUgZ3V0cyBvZiBldmFsX2NvbnN0X2V4cHJlc3Npb25zL2Vz dGltYXRlX2V4cHJlc3Npb25fdmFsdWUKQEAgLTMxMzYsNyArMzE0NCw3IEBAIGV2YWxfY29uc3Rf ZXhwcmVzc2lvbnNfbXV0YXRvcihOb2RlICpub2RlLAogCiAJCQkJaWYgKCFoYXNfbm9uY29uc3Rf aW5wdXQgJiYKIAkJCQkJZWNlX2Z1bmN0aW9uX2lzX3NhZmUoZXhwci0+b3BmdW5jaWQsIGNvbnRl eHQpKQotCQkJCQlyZXR1cm4gZWNlX2V2YWx1YXRlX2V4cHIoZXhwcik7CisJCQkJCXJldHVybiBl Y2VfZXZhbHVhdGVfZXhwcihleHByLCBjb250ZXh0LT5lc2NvbnRleHQpOwogCiAJCQkJcmV0dXJu IChOb2RlICopIGV4cHI7CiAJCQl9CkBAIC0zMTU2LDcgKzMxNjQsNyBAQCBldmFsX2NvbnN0X2V4 cHJlc3Npb25zX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJCQkgKi8KIAkJCQlpZiAoZWNlX2FsbF9h cmd1bWVudHNfY29uc3Qoc2FvcCkgJiYKIAkJCQkJZWNlX2Z1bmN0aW9uX2lzX3NhZmUoc2FvcC0+ b3BmdW5jaWQsIGNvbnRleHQpKQotCQkJCQlyZXR1cm4gZWNlX2V2YWx1YXRlX2V4cHIoc2FvcCk7 CisJCQkJCXJldHVybiBlY2VfZXZhbHVhdGVfZXhwcihzYW9wLCBjb250ZXh0LT5lc2NvbnRleHQp OwogCQkJCXJldHVybiAoTm9kZSAqKSBzYW9wOwogCQkJfQogCQljYXNlIFRfQm9vbEV4cHI6CkBA IC0zMjY3LDYgKzMyNzUsNDIgQEAgZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKE5vZGUg Km5vZGUsCiAJCQkJCQkJCQkJCQkgIGNvcHlPYmplY3QoanZlLT5mb3JtYXQpKTsKIAkJCX0KIAor CQljYXNlIFRfU2FmZVR5cGVDYXN0RXhwcjoKKwkJCXsKKwkJCQlTYWZlVHlwZUNhc3RFeHByICpz dGMgPSBjYXN0Tm9kZShTYWZlVHlwZUNhc3RFeHByLCBub2RlKTsKKwkJCQlTYWZlVHlwZUNhc3RF eHByICpuZXdleHByID0gbWFrZU5vZGUoU2FmZVR5cGVDYXN0RXhwcik7CisKKwkJCQlOb2RlCSAg ICpjYXN0ZXhwciA9IChOb2RlICopIHN0Yy0+Y2FzdGV4cHI7CisJCQkJTm9kZQkgICAqZGVmZXhw ciA9IChOb2RlICopIHN0Yy0+ZGVmZXhwcjsKKworCQkJCS8qCisJCQkJICogTm8gbmVlZCB0byBm b2xkICJzb3VyY2UiIHRvIGEgY29uc3RhbnQuIFRoZSBleGVjdXRvciBkb2VzCisJCQkJICogbm90 IHVzZSBpdCwgc2VlIEV4ZWNJbml0U2FmZVR5cGVDYXN0RXhwci4gQWRkaXRpb25hbGx5LAorCQkJ CSAqIGNhc3RleHByIGV4cHJlc3Npb24gdHJlZSBtYXkgYWxyZWFkeSBjb250YWluIHRoZSAic291 cmNlIgorCQkJCSAqIG5vZGUuCisJCQkJICovCisJCQkJY29udGV4dC0+ZXNjb250ZXh0ID0gbWFr ZU5vZGUoRXJyb3JTYXZlQ29udGV4dCk7CisJCQkJY29udGV4dC0+ZXNjb250ZXh0LT50eXBlID0g VF9FcnJvclNhdmVDb250ZXh0OworCQkJCWNvbnRleHQtPmVzY29udGV4dC0+ZXJyb3Jfb2NjdXJy ZWQgPSBmYWxzZTsKKworCQkJCWNhc3RleHByID0gZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRh dG9yKGNhc3RleHByLAorCQkJCQkJCQkJCQkJCQkgIGNvbnRleHQpOworCQkJCXBmcmVlKGNvbnRl eHQtPmVzY29udGV4dCk7CisJCQkJY29udGV4dC0+ZXNjb250ZXh0ID0gTlVMTDsKKworCQkJCWRl ZmV4cHIgPSBldmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3IoZGVmZXhwciwKKwkJCQkJCQkJ CQkJCQkJIGNvbnRleHQpOworCisJCQkJbmV3ZXhwci0+c291cmNlID0gTlVMTDsKKwkJCQluZXdl eHByLT5jYXN0ZXhwciA9IChFeHByICopIGNhc3RleHByOworCQkJCW5ld2V4cHItPmRlZmV4cHIg PSAoRXhwciAqKSBkZWZleHByOworCQkJCW5ld2V4cHItPnJlc3VsdHR5cGUgPSBzdGMtPnJlc3Vs dHR5cGU7CisJCQkJbmV3ZXhwci0+cmVzdWx0dHlwbW9kID0gc3RjLT5yZXN1bHR0eXBtb2Q7CisJ CQkJbmV3ZXhwci0+cmVzdWx0Y29sbGlkID0gc3RjLT5yZXN1bHRjb2xsaWQ7CisKKwkJCQlyZXR1 cm4gKE5vZGUgKikgbmV3ZXhwcjsKKwkJCX0KKwogCQljYXNlIFRfU3ViUGxhbjoKIAkJY2FzZSBU X0FsdGVybmF0aXZlU3ViUGxhbjoKIApAQCAtMzM4NCw2ICszNDI4LDcgQEAgZXZhbF9jb25zdF9l eHByZXNzaW9uc19tdXRhdG9yKE5vZGUgKm5vZGUsCiAJCQl7CiAJCQkJQXJyYXlDb2VyY2VFeHBy ICphYyA9IG1ha2VOb2RlKEFycmF5Q29lcmNlRXhwcik7CiAJCQkJTm9kZQkgICAqc2F2ZV9jYXNl X3ZhbDsKKwkJCQlFeHByCSAgICpzaW1wbGUgPSBOVUxMOwogCiAJCQkJLyoKIAkJCQkgKiBDb3B5 IHRoZSBub2RlIGFuZCBjb25zdC1zaW1wbGlmeSBpdHMgYXJndW1lbnRzLiAgV2UgY2FuJ3QKQEAg LTMzOTEsOSArMzQzNiwxMCBAQCBldmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3IoTm9kZSAq bm9kZSwKIAkJCQkgKiB3aXRoIGNhc2VfdmFsIG9ubHkgd2hpbGUgcHJvY2Vzc2luZyB0aGUgZWxl bWV4cHIuCiAJCQkJICovCiAJCQkJbWVtY3B5KGFjLCBub2RlLCBzaXplb2YoQXJyYXlDb2VyY2VF eHByKSk7Ci0JCQkJYWMtPmFyZyA9IChFeHByICopCi0JCQkJCWV2YWxfY29uc3RfZXhwcmVzc2lv bnNfbXV0YXRvcigoTm9kZSAqKSBhYy0+YXJnLAotCQkJCQkJCQkJCQkJICAgY29udGV4dCk7CisJ CQkJc2ltcGxlID0gKEV4cHIgKikgZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKChOb2Rl ICopIGFjLT5hcmcsCisJCQkJCQkJCQkJCQkJCQkJIGNvbnRleHQpOworCQkJCWlmIChzaW1wbGUp CisJCQkJCWFjLT5hcmcgPSBzaW1wbGU7CiAKIAkJCQkvKgogCQkJCSAqIFNldCB1cCBmb3IgdGhl IENhc2VUZXN0RXhwciBub2RlIGNvbnRhaW5lZCBpbiB0aGUgZWxlbWV4cHIuCkBAIC0zNDAyLDkg KzM0NDgsMTAgQEAgZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKE5vZGUgKm5vZGUsCiAJ CQkJc2F2ZV9jYXNlX3ZhbCA9IGNvbnRleHQtPmNhc2VfdmFsOwogCQkJCWNvbnRleHQtPmNhc2Vf dmFsID0gTlVMTDsKIAotCQkJCWFjLT5lbGVtZXhwciA9IChFeHByICopCi0JCQkJCWV2YWxfY29u c3RfZXhwcmVzc2lvbnNfbXV0YXRvcigoTm9kZSAqKSBhYy0+ZWxlbWV4cHIsCi0JCQkJCQkJCQkJ CQkgICBjb250ZXh0KTsKKwkJCQlzaW1wbGUgPSAoRXhwciAqKSBldmFsX2NvbnN0X2V4cHJlc3Np b25zX211dGF0b3IoKE5vZGUgKikgYWMtPmVsZW1leHByLAorCQkJCQkJCQkJCQkJCQkJCSBjb250 ZXh0KTsKKwkJCQlpZiAoc2ltcGxlKQorCQkJCQlhYy0+ZWxlbWV4cHIgPSBzaW1wbGU7CiAKIAkJ CQljb250ZXh0LT5jYXNlX3ZhbCA9IHNhdmVfY2FzZV92YWw7CiAKQEAgLTM0MTksNyArMzQ2Niw3 IEBAIGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0YXRvcihOb2RlICpub2RlLAogCQkJCWlmIChh Yy0+YXJnICYmIElzQShhYy0+YXJnLCBDb25zdCkgJiYKIAkJCQkJYWMtPmVsZW1leHByICYmICFJ c0EoYWMtPmVsZW1leHByLCBDb2VyY2VUb0RvbWFpbikgJiYKIAkJCQkJIWNvbnRhaW5fbXV0YWJs ZV9mdW5jdGlvbnMoKE5vZGUgKikgYWMtPmVsZW1leHByKSkKLQkJCQkJcmV0dXJuIGVjZV9ldmFs dWF0ZV9leHByKGFjKTsKKwkJCQkJcmV0dXJuIGVjZV9ldmFsdWF0ZV9leHByKGFjLCBjb250ZXh0 LT5lc2NvbnRleHQpOwogCiAJCQkJcmV0dXJuIChOb2RlICopIGFjOwogCQkJfQpAQCAtMzYxNSw3 ICszNjYyLDcgQEAgZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKE5vZGUgKm5vZGUsCiAJ CQkJbm9kZSA9IGVjZV9nZW5lcmljX3Byb2Nlc3Npbmcobm9kZSk7CiAJCQkJLyogSWYgYWxsIGFy Z3VtZW50cyBhcmUgQ29uc3RzLCB3ZSBjYW4gZm9sZCB0byBhIGNvbnN0YW50ICovCiAJCQkJaWYg KGVjZV9hbGxfYXJndW1lbnRzX2NvbnN0KG5vZGUpKQotCQkJCQlyZXR1cm4gZWNlX2V2YWx1YXRl X2V4cHIobm9kZSk7CisJCQkJCXJldHVybiBlY2VfZXZhbHVhdGVfZXhwcihub2RlLCBjb250ZXh0 LT5lc2NvbnRleHQpOwogCQkJCXJldHVybiBub2RlOwogCQkJfQogCQljYXNlIFRfQ29hbGVzY2VF eHByOgpAQCAtMzY5OCw3ICszNzQ1LDggQEAgZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9y KE5vZGUgKm5vZGUsCiAJCQkJCXJldHVybiAoTm9kZSAqKSBldmFsdWF0ZV9leHByKChFeHByICop IHN2ZiwKIAkJCQkJCQkJCQkJCSAgc3ZmLT50eXBlLAogCQkJCQkJCQkJCQkJICBzdmYtPnR5cG1v ZCwKLQkJCQkJCQkJCQkJCSAgSW52YWxpZE9pZCk7CisJCQkJCQkJCQkJCQkgIEludmFsaWRPaWQs CisJCQkJCQkJCQkJCQkgIE5VTEwpOwogCQkJCWVsc2UKIAkJCQkJcmV0dXJuIGNvcHlPYmplY3Qo KE5vZGUgKikgc3ZmKTsKIAkJCX0KQEAgLTM3OTUsNyArMzg0Myw3IEBAIGV2YWxfY29uc3RfZXhw cmVzc2lvbnNfbXV0YXRvcihOb2RlICpub2RlLAogCQkJCQkJCQkJCQkgIG5ld2ZzZWxlY3QtPnJl c3VsdHR5cGUsCiAJCQkJCQkJCQkJCSAgbmV3ZnNlbGVjdC0+cmVzdWx0dHlwbW9kLAogCQkJCQkJ CQkJCQkgIG5ld2ZzZWxlY3QtPnJlc3VsdGNvbGxpZCkpCi0JCQkJCQlyZXR1cm4gZWNlX2V2YWx1 YXRlX2V4cHIobmV3ZnNlbGVjdCk7CisJCQkJCQlyZXR1cm4gZWNlX2V2YWx1YXRlX2V4cHIobmV3 ZnNlbGVjdCwgY29udGV4dC0+ZXNjb250ZXh0KTsKIAkJCQl9CiAJCQkJcmV0dXJuIChOb2RlICop IG5ld2ZzZWxlY3Q7CiAJCQl9CkBAIC00MTI1LDcgKzQxNzMsNyBAQCBldmFsX2NvbnN0X2V4cHJl c3Npb25zX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJCQluZXdjcmUtPmFyZyA9IChFeHByICopIGFy ZzsKIAogCQkJCWlmIChhcmcgIT0gTlVMTCAmJiBJc0EoYXJnLCBDb25zdCkpCi0JCQkJCXJldHVy biBlY2VfZXZhbHVhdGVfZXhwcigoTm9kZSAqKSBuZXdjcmUpOworCQkJCQlyZXR1cm4gZWNlX2V2 YWx1YXRlX2V4cHIoKE5vZGUgKikgbmV3Y3JlLCBjb250ZXh0LT5lc2NvbnRleHQpOwogCQkJCXJl dHVybiAoTm9kZSAqKSBuZXdjcmU7CiAJCQl9CiAJCWRlZmF1bHQ6CkBAIC01MjI5LDcgKzUyNzcs NyBAQCBldmFsdWF0ZV9mdW5jdGlvbihPaWQgZnVuY2lkLCBPaWQgcmVzdWx0X3R5cGUsIGludDMy IHJlc3VsdF90eXBtb2QsCiAJbmV3ZXhwci0+bG9jYXRpb24gPSAtMTsKIAogCXJldHVybiBldmFs dWF0ZV9leHByKChFeHByICopIG5ld2V4cHIsIHJlc3VsdF90eXBlLCByZXN1bHRfdHlwbW9kLAot CQkJCQkJIHJlc3VsdF9jb2xsaWQpOworCQkJCQkJIHJlc3VsdF9jb2xsaWQsIChOb2RlICopIGNv bnRleHQtPmVzY29udGV4dCk7CiB9CiAKIC8qCkBAIC01NjgzLDEwICs1NzMxLDEzIEBAIHNxbF9p bmxpbmVfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKQogICoKICAqIFdlIHVzZSB0aGUgZXhlY3V0 b3IncyByb3V0aW5lIEV4ZWNFdmFsRXhwcigpIHRvIGF2b2lkIGR1cGxpY2F0aW9uIG9mCiAgKiBj b2RlIGFuZCBlbnN1cmUgd2UgZ2V0IHRoZSBzYW1lIHJlc3VsdCBhcyB0aGUgZXhlY3V0b3Igd291 bGQgZ2V0LgorICoKKyAqIFdoZW4gZXNjb250ZXh0IGlzIG5vbi1OVUxMLCBzYWZlbHkgZXZhbHVh dGVzIHRoZSBjb25zdGFudCBleHByZXNzaW9uLgorICogUmV0dXJucyBOVUxMIG9uIGZhaWx1cmUg cmF0aGVyIHRoYW4gdGhyb3dpbmcgYW4gZXJyb3IuCiAgKi8KIEV4cHIgKgogZXZhbHVhdGVfZXhw cihFeHByICpleHByLCBPaWQgcmVzdWx0X3R5cGUsIGludDMyIHJlc3VsdF90eXBtb2QsCi0JCQkg IE9pZCByZXN1bHRfY29sbGF0aW9uKQorCQkJICBPaWQgcmVzdWx0X2NvbGxhdGlvbiwgTm9kZSAq ZXNjb250ZXh0KQogewogCUVTdGF0ZQkgICAqZXN0YXRlOwogCUV4cHJTdGF0ZSAgKmV4cHJzdGF0 ZTsKQEAgLTU3MTEsNyArNTc2Miw3IEBAIGV2YWx1YXRlX2V4cHIoRXhwciAqZXhwciwgT2lkIHJl c3VsdF90eXBlLCBpbnQzMiByZXN1bHRfdHlwbW9kLAogCSAqIFByZXBhcmUgZXhwciBmb3IgZXhl Y3V0aW9uLiAgKE5vdGU6IHdlIGNhbid0IHVzZSBFeGVjUHJlcGFyZUV4cHIKIAkgKiBiZWNhdXNl IGl0J2QgcmVzdWx0IGluIHJlY3Vyc2l2ZWx5IGludm9raW5nIGV2YWxfY29uc3RfZXhwcmVzc2lv bnMuKQogCSAqLwotCWV4cHJzdGF0ZSA9IEV4ZWNJbml0RXhwcihleHByLCBOVUxMKTsKKwlleHBy c3RhdGUgPSBFeGVjSW5pdEV4cHJXaXRoQ29udGV4dChleHByLCBOVUxMLCBlc2NvbnRleHQpOwog CiAJLyoKIAkgKiBBbmQgZXZhbHVhdGUgaXQuCkBAIC01NzMxLDYgKzU3ODIsMTMgQEAgZXZhbHVh dGVfZXhwcihFeHByICpleHByLCBPaWQgcmVzdWx0X3R5cGUsIGludDMyIHJlc3VsdF90eXBtb2Qs CiAJLyogR2V0IGJhY2sgdG8gb3V0ZXIgbWVtb3J5IGNvbnRleHQgKi8KIAlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChleHByc3Rh dGUtPmVzY29udGV4dCkpCisJeworCQlGcmVlRXhlY3V0b3JTdGF0ZShlc3RhdGUpOworCisJCXJl dHVybiBOVUxMOworCX0KKwogCS8qCiAJICogTXVzdCBjb3B5IHJlc3VsdCBvdXQgb2Ygc3ViLWNv bnRleHQgdXNlZCBieSBleHByZXNzaW9uIGV2YWwuCiAJICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDBmZWE3 MjZjZGQ1Li4yYWMwNDU2NWFmYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0xNTgsNiArMTU4LDggQEAgc3Rh dGljIHZvaWQgdXBkYXRlUmF3U3RtdEVuZChSYXdTdG10ICpycywgaW50IGVuZF9sb2NhdGlvbik7 CiBzdGF0aWMgTm9kZSAqbWFrZUNvbHVtblJlZihjaGFyICpjb2xuYW1lLCBMaXN0ICppbmRpcmVj dGlvbiwKIAkJCQkJCSAgIGludCBsb2NhdGlvbiwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpOwog c3RhdGljIE5vZGUgKm1ha2VUeXBlQ2FzdChOb2RlICphcmcsIFR5cGVOYW1lICp0eXBlbmFtZSwg aW50IGxvY2F0aW9uKTsKK3N0YXRpYyBOb2RlICptYWtlVHlwZUNhc3RXaXRoRGVmYXVsdChOb2Rl ICphcmcsIFR5cGVOYW1lICp0eXBlbmFtZSwKKwkJCQkJCQkJCSBOb2RlICpyYXdfZGVmYXVsdCwg aW50IGxvY2F0aW9uKTsKIHN0YXRpYyBOb2RlICptYWtlU3RyaW5nQ29uc3RDYXN0KGNoYXIgKnN0 ciwgaW50IGxvY2F0aW9uLCBUeXBlTmFtZSAqdHlwZW5hbWUpOwogc3RhdGljIE5vZGUgKm1ha2VJ bnRDb25zdChpbnQgdmFsLCBpbnQgbG9jYXRpb24pOwogc3RhdGljIE5vZGUgKm1ha2VGbG9hdENv bnN0KGNoYXIgKnN0ciwgaW50IGxvY2F0aW9uKTsKQEAgLTE2Njg3LDYgKzE2Njg5LDEyIEBAIGZ1 bmNfZXhwcl9jb21tb25fc3ViZXhwcjoKIAkJCQl9CiAJCQl8IENBU1QgJygnIGFfZXhwciBBUyBU eXBlbmFtZSAnKScKIAkJCQl7ICQkID0gbWFrZVR5cGVDYXN0KCQzLCAkNSwgQDEpOyB9CisJCQl8 IENBU1QgJygnIGFfZXhwciBBUyBUeXBlbmFtZSBFUlJPUl9QIE9OIENPTlZFUlNJT05fUCBFUlJP Ul9QICcpJworCQkJCXsgJCQgPSBtYWtlVHlwZUNhc3QoJDMsICQ1LCBAMSk7IH0KKwkJCXwgQ0FT VCAnKCcgYV9leHByIEFTIFR5cGVuYW1lIE5VTExfUCBPTiBDT05WRVJTSU9OX1AgRVJST1JfUCAn KScKKwkJCQl7ICQkID0gbWFrZVR5cGVDYXN0V2l0aERlZmF1bHQoJDMsICQ1LCBtYWtlTnVsbEFD b25zdCgtMSksIEAxKTsgfQorCQkJfCBDQVNUICcoJyBhX2V4cHIgQVMgVHlwZW5hbWUgREVGQVVM VCBhX2V4cHIgT04gQ09OVkVSU0lPTl9QIEVSUk9SX1AgJyknCisJCQkJeyAkJCA9IG1ha2VUeXBl Q2FzdFdpdGhEZWZhdWx0KCQzLCAkNSwgJDcsIEAxKTsgfQogCQkJfCBFWFRSQUNUICcoJyBleHRy YWN0X2xpc3QgJyknCiAJCQkJewogCQkJCQkkJCA9IChOb2RlICopIG1ha2VGdW5jQ2FsbChTeXN0 ZW1GdW5jTmFtZSgiZXh0cmFjdCIpLApAQCAtMTk4NDgsMTAgKzE5ODU2LDI1IEBAIG1ha2VUeXBl Q2FzdChOb2RlICphcmcsIFR5cGVOYW1lICp0eXBlbmFtZSwgaW50IGxvY2F0aW9uKQogCiAJbi0+ YXJnID0gYXJnOwogCW4tPnR5cGVOYW1lID0gdHlwZW5hbWU7CisJbi0+ZGVmZXhwciA9IE5VTEw7 CiAJbi0+bG9jYXRpb24gPSBsb2NhdGlvbjsKIAlyZXR1cm4gKE5vZGUgKikgbjsKIH0KIAorc3Rh dGljIE5vZGUgKgorbWFrZVR5cGVDYXN0V2l0aERlZmF1bHQoTm9kZSAqYXJnLCBUeXBlTmFtZSAq dHlwZW5hbWUsIE5vZGUgKmRlZmV4cHIsCisJCQkJCQlpbnQgbG9jYXRpb24pCit7CisJVHlwZUNh c3QgICAqbiA9IG1ha2VOb2RlKFR5cGVDYXN0KTsKKworCW4tPmFyZyA9IGFyZzsKKwluLT50eXBl TmFtZSA9IHR5cGVuYW1lOworCW4tPmRlZmV4cHIgPSBkZWZleHByOworCW4tPmxvY2F0aW9uID0g bG9jYXRpb247CisKKwlyZXR1cm4gKE5vZGUgKikgbjsKK30KKwogc3RhdGljIE5vZGUgKgogbWFr ZVN0cmluZ0NvbnN0Q2FzdChjaGFyICpzdHIsIGludCBsb2NhdGlvbiwgVHlwZU5hbWUgKnR5cGVu YW1lKQogewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCmluZGV4IDYwNzZlOTM3M2MxLi4wN2M3MzUyMWRm MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCisrKyBiL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYwpAQCAtNDkxLDYgKzQ5MSwxMiBAQCBjaGVja19hZ2ds ZXZlbHNfYW5kX2NvbnN0cmFpbnRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcikKIAkJ CQllcnIgPSBfKCJncm91cGluZyBvcGVyYXRpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBjaGVjayBj b25zdHJhaW50cyIpOwogCiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfQ0FTVF9ERUZBVUxU OgorCQkJaWYgKGlzQWdnKQorCQkJCWVyciA9IF8oImFnZ3JlZ2F0ZSBmdW5jdGlvbnMgYXJlIG5v dCBhbGxvd2VkIGluIENBU1QgREVGQVVMVCBleHByZXNzaW9ucyIpOworCQkJZWxzZQorCQkJCWVy ciA9IF8oImdyb3VwaW5nIG9wZXJhdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIENBU1QgREVGQVVM VCBleHByZXNzaW9ucyIpOworCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0NPTFVNTl9ERUZB VUxUOgogCQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZBVUxUOgogCkBAIC05OTIsNiArOTk4 LDkgQEAgdHJhbnNmb3JtV2luZG93RnVuY0NhbGwoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dG dW5jICp3ZnVuYywKIAkJY2FzZSBFWFBSX0tJTkRfRE9NQUlOX0NIRUNLOgogCQkJZXJyID0gXygi d2luZG93IGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gY2hlY2sgY29uc3RyYWludHMiKTsK IAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9DQVNUX0RFRkFVTFQ6CisJCQllcnIgPSBfKCJ3 aW5kb3cgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBDQVNUIERFRkFVTFQgZXhwcmVzc2lv bnMiKTsKKwkJCWJyZWFrOwogCQljYXNlIEVYUFJfS0lORF9DT0xVTU5fREVGQVVMVDoKIAkJY2Fz ZSBFWFBSX0tJTkRfRlVOQ1RJT05fREVGQVVMVDoKIAkJCWVyciA9IF8oIndpbmRvdyBmdW5jdGlv bnMgYXJlIG5vdCBhbGxvd2VkIGluIERFRkFVTFQgZXhwcmVzc2lvbnMiKTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2VyY2UuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9jb2VyY2UuYwppbmRleCA5MTNjYTUzNjY2Zi4uOGJkNzlmZDViZmMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2VyY2UuYworKysgYi9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfY29lcmNlLmMKQEAgLTM3LDE0ICszNywxNiBAQCBzdGF0aWMgTm9kZSAqY29lcmNl X3R5cGVfdHlwbW9kKE5vZGUgKm5vZGUsCiAJCQkJCQkJCU9pZCB0YXJnZXRUeXBlSWQsIGludDMy IHRhcmdldFR5cE1vZCwKIAkJCQkJCQkJQ29lcmNpb25Db250ZXh0IGNjb250ZXh0LCBDb2VyY2lv bkZvcm0gY2Zvcm1hdCwKIAkJCQkJCQkJaW50IGxvY2F0aW9uLAotCQkJCQkJCQlib29sIGhpZGVJ bnB1dENvZXJjaW9uKTsKKwkJCQkJCQkJYm9vbCBoaWRlSW5wdXRDb2VyY2lvbiwKKwkJCQkJCQkJ Tm9kZSAqZXNjb250ZXh0KTsKIHN0YXRpYyB2b2lkIGhpZGVfY29lcmNpb25fbm9kZShOb2RlICpu b2RlKTsKIHN0YXRpYyBOb2RlICpidWlsZF9jb2VyY2lvbl9leHByZXNzaW9uKE5vZGUgKm5vZGUs CiAJCQkJCQkJCQkgICBDb2VyY2lvblBhdGhUeXBlIHBhdGh0eXBlLAogCQkJCQkJCQkJICAgT2lk IGZ1bmNJZCwKIAkJCQkJCQkJCSAgIE9pZCB0YXJnZXRUeXBlSWQsIGludDMyIHRhcmdldFR5cE1v ZCwKIAkJCQkJCQkJCSAgIENvZXJjaW9uQ29udGV4dCBjY29udGV4dCwgQ29lcmNpb25Gb3JtIGNm b3JtYXQsCi0JCQkJCQkJCQkgICBpbnQgbG9jYXRpb24pOworCQkJCQkJCQkJICAgaW50IGxvY2F0 aW9uLAorCQkJCQkJCQkJICAgTm9kZSAqZXNjb250ZXh0KTsKIHN0YXRpYyBOb2RlICpjb2VyY2Vf cmVjb3JkX3RvX2NvbXBsZXgoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkJCQkJ CQkJICBPaWQgdGFyZ2V0VHlwZUlkLAogCQkJCQkJCQkJICBDb2VyY2lvbkNvbnRleHQgY2NvbnRl eHQsCkBAIC04MSw2ICs4MywyOCBAQCBjb2VyY2VfdG9fdGFyZ2V0X3R5cGUoUGFyc2VTdGF0ZSAq cHN0YXRlLCBOb2RlICpleHByLCBPaWQgZXhwcnR5cGUsCiAJCQkJCSAgQ29lcmNpb25Db250ZXh0 IGNjb250ZXh0LAogCQkJCQkgIENvZXJjaW9uRm9ybSBjZm9ybWF0LAogCQkJCQkgIGludCBsb2Nh dGlvbikKK3sKKwlyZXR1cm4gY29lcmNlX3RvX3RhcmdldF90eXBlX2V4dGVuZGVkKHBzdGF0ZSwg ZXhwciwgZXhwcnR5cGUsCisJCQkJCQkJCQkJICB0YXJnZXR0eXBlLCB0YXJnZXR0eXBtb2QsCisJ CQkJCQkJCQkJICBjY29udGV4dCwKKwkJCQkJCQkJCQkgIGNmb3JtYXQsCisJCQkJCQkJCQkJICBs b2NhdGlvbiwKKwkJCQkJCQkJCQkgIE5VTEwpOworfQorCisvKgorICogZXNjb250ZXh0OiBJZiBu b24tTlVMTCwgc2FmZWx5IGNvZXJjZXMgJ2V4cHInIHRvIHRoZSB0YXJnZXQgdHlwZQorICogd2l0 aG91dCByYWlzaW5nIGFuIGVycm9yLiBSZXR1cm5zIE5VTEwgaWYgdGhlIGNvZXJjaW9uIGZhaWxz LgorICoKKyAqIFNlZSAnY29lcmNlX3RvX3RhcmdldF90eXBlJyBhYm92ZSBmb3IgZGV0YWlscyBv biBvdGhlciBwYXJhbWV0ZXJzLgorICovCitOb2RlICoKK2NvZXJjZV90b190YXJnZXRfdHlwZV9l eHRlbmRlZChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIsIE9pZCBleHBydHlwZSwKKwkJ CQkJCQkgICBPaWQgdGFyZ2V0dHlwZSwgaW50MzIgdGFyZ2V0dHlwbW9kLAorCQkJCQkJCSAgIENv ZXJjaW9uQ29udGV4dCBjY29udGV4dCwKKwkJCQkJCQkgICBDb2VyY2lvbkZvcm0gY2Zvcm1hdCwK KwkJCQkJCQkgICBpbnQgbG9jYXRpb24sCisJCQkJCQkJICAgTm9kZSAqZXNjb250ZXh0KQogewog CU5vZGUJICAgKnJlc3VsdDsKIAlOb2RlCSAgICpvcmlnZXhwcjsKQEAgLTEwMiw5ICsxMjYsMTUg QEAgY29lcmNlX3RvX3RhcmdldF90eXBlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwciwg T2lkIGV4cHJ0eXBlLAogCXdoaWxlIChleHByICYmIElzQShleHByLCBDb2xsYXRlRXhwcikpCiAJ CWV4cHIgPSAoTm9kZSAqKSAoKENvbGxhdGVFeHByICopIGV4cHIpLT5hcmc7CiAKLQlyZXN1bHQg PSBjb2VyY2VfdHlwZShwc3RhdGUsIGV4cHIsIGV4cHJ0eXBlLAotCQkJCQkJIHRhcmdldHR5cGUs IHRhcmdldHR5cG1vZCwKLQkJCQkJCSBjY29udGV4dCwgY2Zvcm1hdCwgbG9jYXRpb24pOworCXJl c3VsdCA9IGNvZXJjZV90eXBlX2V4dGVuZGVkKHBzdGF0ZSwgZXhwciwgZXhwcnR5cGUsCisJCQkJ CQkJCSAgdGFyZ2V0dHlwZSwgdGFyZ2V0dHlwbW9kLAorCQkJCQkJCQkgIGNjb250ZXh0LAorCQkJ CQkJCQkgIGNmb3JtYXQsCisJCQkJCQkJCSAgbG9jYXRpb24sCisJCQkJCQkJCSAgZXNjb250ZXh0 KTsKKworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGVzY29udGV4dCkpCisJCXJldHVybiBOVUxM OwogCiAJLyoKIAkgKiBJZiB0aGUgdGFyZ2V0IGlzIGEgZml4ZWQtbGVuZ3RoIHR5cGUsIGl0IG1h eSBuZWVkIGEgbGVuZ3RoIGNvZXJjaW9uIGFzCkBAIC0xMTQsNyArMTQ0LDExIEBAIGNvZXJjZV90 b190YXJnZXRfdHlwZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIsIE9pZCBleHBydHlw ZSwKIAlyZXN1bHQgPSBjb2VyY2VfdHlwZV90eXBtb2QocmVzdWx0LAogCQkJCQkJCQl0YXJnZXR0 eXBlLCB0YXJnZXR0eXBtb2QsCiAJCQkJCQkJCWNjb250ZXh0LCBjZm9ybWF0LCBsb2NhdGlvbiwK LQkJCQkJCQkJKHJlc3VsdCAhPSBleHByICYmICFJc0EocmVzdWx0LCBDb25zdCkpKTsKKwkJCQkJ CQkJKHJlc3VsdCAhPSBleHByICYmICFJc0EocmVzdWx0LCBDb25zdCkpLAorCQkJCQkJCQllc2Nv bnRleHQpOworCisJaWYgKHJlc3VsdCA9PSBOVUxMKQkJCS8qIHNob3VsZG4ndCBoYXBwZW4gKi8K KwkJZWxvZyhFUlJPUiwgImZhaWxlZCB0byBjb2VyY2UgdHlwZSBtb2RpZmllciBhcyBleHBlY3Rl ZCIpOwogCiAJaWYgKGV4cHIgIT0gb3JpZ2V4cHIgJiYgdHlwZV9pc19jb2xsYXRhYmxlKHRhcmdl dHR5cGUpKQogCXsKQEAgLTE1OCw2ICsxOTIsMTggQEAgTm9kZSAqCiBjb2VyY2VfdHlwZShQYXJz ZVN0YXRlICpwc3RhdGUsIE5vZGUgKm5vZGUsCiAJCQlPaWQgaW5wdXRUeXBlSWQsIE9pZCB0YXJn ZXRUeXBlSWQsIGludDMyIHRhcmdldFR5cGVNb2QsCiAJCQlDb2VyY2lvbkNvbnRleHQgY2NvbnRl eHQsIENvZXJjaW9uRm9ybSBjZm9ybWF0LCBpbnQgbG9jYXRpb24pCit7CisJcmV0dXJuIGNvZXJj ZV90eXBlX2V4dGVuZGVkKHBzdGF0ZSwgbm9kZSwKKwkJCQkJCQkJaW5wdXRUeXBlSWQsIHRhcmdl dFR5cGVJZCwgdGFyZ2V0VHlwZU1vZCwKKwkJCQkJCQkJY2NvbnRleHQsIGNmb3JtYXQsIGxvY2F0 aW9uLAorCQkJCQkJCQlOVUxMKTsKK30KKworTm9kZSAqCitjb2VyY2VfdHlwZV9leHRlbmRlZChQ YXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKm5vZGUsCisJCQkJCSBPaWQgaW5wdXRUeXBlSWQsIE9p ZCB0YXJnZXRUeXBlSWQsIGludDMyIHRhcmdldFR5cGVNb2QsCisJCQkJCSBDb2VyY2lvbkNvbnRl eHQgY2NvbnRleHQsIENvZXJjaW9uRm9ybSBjZm9ybWF0LCBpbnQgbG9jYXRpb24sCisJCQkJCSBO b2RlICplc2NvbnRleHQpCiB7CiAJTm9kZQkgICAqcmVzdWx0OwogCUNvZXJjaW9uUGF0aFR5cGUg cGF0aHR5cGU7CkBAIC0yNTYsNiArMzAyLDcgQEAgY29lcmNlX3R5cGUoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBOb2RlICpub2RlLAogCQlpbnQzMgkJaW5wdXRUeXBlTW9kOwogCQlUeXBlCQliYXNlVHlw ZTsKIAkJUGFyc2VDYWxsYmFja1N0YXRlIHBjYnN0YXRlOworCQljaGFyCSAgICpzdHJpbmcgPSBO VUxMOwogCiAJCS8qCiAJCSAqIElmIHRoZSB0YXJnZXQgdHlwZSBpcyBhIGRvbWFpbiwgd2Ugd2Fu dCB0byBjYWxsIGl0cyBiYXNlIHR5cGUncwpAQCAtMzA5LDEzICszNTYsMjEgQEAgY29lcmNlX3R5 cGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkgKiBhcyBDU1RSSU5HLgogCQkg Ki8KIAkJaWYgKCFjb24tPmNvbnN0aXNudWxsKQotCQkJbmV3Y29uLT5jb25zdHZhbHVlID0gc3Ry aW5nVHlwZURhdHVtKGJhc2VUeXBlLAotCQkJCQkJCQkJCQkJIERhdHVtR2V0Q1N0cmluZyhjb24t PmNvbnN0dmFsdWUpLAotCQkJCQkJCQkJCQkJIGlucHV0VHlwZU1vZCk7Ci0JCWVsc2UKLQkJCW5l d2Nvbi0+Y29uc3R2YWx1ZSA9IHN0cmluZ1R5cGVEYXR1bShiYXNlVHlwZSwKLQkJCQkJCQkJCQkJ CSBOVUxMLAotCQkJCQkJCQkJCQkJIGlucHV0VHlwZU1vZCk7CisJCQlzdHJpbmcgPSBEYXR1bUdl dENTdHJpbmcoY29uLT5jb25zdHZhbHVlKTsKKworCQlpZiAoIXN0cmluZ1R5cGVEYXR1bVNhZmUo YmFzZVR5cGUsCisJCQkJCQkJCSBzdHJpbmcsCisJCQkJCQkJCSBpbnB1dFR5cGVNb2QsCisJCQkJ CQkJCSBlc2NvbnRleHQsCisJCQkJCQkJCSAmbmV3Y29uLT5jb25zdHZhbHVlKSkKKwkJeworCQkJ LyogVU5LTk9XTiBDb25zdCBjYW5ub3QgY29lcmNlIHRvIHRhcmdldFR5cGUsIGV4aXQgbm93ICov CisJCQljYW5jZWxfcGFyc2VyX2VycnBvc2l0aW9uX2NhbGxiYWNrKCZwY2JzdGF0ZSk7CisKKwkJ CVJlbGVhc2VTeXNDYWNoZShiYXNlVHlwZSk7CisKKwkJCXJldHVybiBOVUxMOworCQl9CiAKIAkJ LyoKIAkJICogSWYgaXQncyBhIHZhcmxlbmEgdmFsdWUsIGZvcmNlIGl0IHRvIGJlIGluIG5vbi1l eHBhbmRlZApAQCAtMzY0LDcgKzQxOSw4IEBAIGNvZXJjZV90eXBlKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgTm9kZSAqbm9kZSwKIAkJCQkJCQkJCSAgYmFzZVR5cGVJZCwgYmFzZVR5cGVNb2QsCiAJCQkJ CQkJCQkgIHRhcmdldFR5cGVJZCwKIAkJCQkJCQkJCSAgY2NvbnRleHQsIGNmb3JtYXQsIGxvY2F0 aW9uLAotCQkJCQkJCQkJICBmYWxzZSk7CisJCQkJCQkJCQkgIGZhbHNlLAorCQkJCQkJCQkJICBl c2NvbnRleHQpOwogCiAJCVJlbGVhc2VTeXNDYWNoZShiYXNlVHlwZSk7CiAKQEAgLTM5Nyw5ICs0 NTMsMTEgQEAgY29lcmNlX3R5cGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkg Ki8KIAkJQ29sbGF0ZUV4cHIgKmNvbGwgPSAoQ29sbGF0ZUV4cHIgKikgbm9kZTsKIAotCQlyZXN1 bHQgPSBjb2VyY2VfdHlwZShwc3RhdGUsIChOb2RlICopIGNvbGwtPmFyZywKLQkJCQkJCQkgaW5w dXRUeXBlSWQsIHRhcmdldFR5cGVJZCwgdGFyZ2V0VHlwZU1vZCwKLQkJCQkJCQkgY2NvbnRleHQs IGNmb3JtYXQsIGxvY2F0aW9uKTsKKwkJcmVzdWx0ID0gY29lcmNlX3R5cGVfZXh0ZW5kZWQocHN0 YXRlLCAoTm9kZSAqKSBjb2xsLT5hcmcsCisJCQkJCQkJCQkgIGlucHV0VHlwZUlkLCB0YXJnZXRU eXBlSWQsIHRhcmdldFR5cGVNb2QsCisJCQkJCQkJCQkgIGNjb250ZXh0LCBjZm9ybWF0LCBsb2Nh dGlvbiwKKwkJCQkJCQkJCSAgZXNjb250ZXh0KTsKKwogCQlpZiAodHlwZV9pc19jb2xsYXRhYmxl KHRhcmdldFR5cGVJZCkpCiAJCXsKIAkJCUNvbGxhdGVFeHByICpuZXdjb2xsID0gbWFrZU5vZGUo Q29sbGF0ZUV4cHIpOwpAQCAtNDMyLDcgKzQ5MCw4IEBAIGNvZXJjZV90eXBlKFBhcnNlU3RhdGUg KnBzdGF0ZSwgTm9kZSAqbm9kZSwKIAkJCSAqLwogCQkJcmVzdWx0ID0gYnVpbGRfY29lcmNpb25f ZXhwcmVzc2lvbihub2RlLCBwYXRodHlwZSwgZnVuY0lkLAogCQkJCQkJCQkJCQkgICBiYXNlVHlw ZUlkLCBiYXNlVHlwZU1vZCwKLQkJCQkJCQkJCQkJICAgY2NvbnRleHQsIGNmb3JtYXQsIGxvY2F0 aW9uKTsKKwkJCQkJCQkJCQkJICAgY2NvbnRleHQsIGNmb3JtYXQsIGxvY2F0aW9uLAorCQkJCQkJ CQkJCQkgICBlc2NvbnRleHQpOwogCiAJCQkvKgogCQkJICogSWYgZG9tYWluLCBjb2VyY2UgdG8g dGhlIGRvbWFpbiB0eXBlIGFuZCByZWxhYmVsIHdpdGggZG9tYWluCkBAIC00NDIsNyArNTAxLDgg QEAgY29lcmNlX3R5cGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkJCXJlc3Vs dCA9IGNvZXJjZV90b19kb21haW4ocmVzdWx0LCBiYXNlVHlwZUlkLCBiYXNlVHlwZU1vZCwKIAkJ CQkJCQkJCQkgIHRhcmdldFR5cGVJZCwKIAkJCQkJCQkJCQkgIGNjb250ZXh0LCBjZm9ybWF0LCBs b2NhdGlvbiwKLQkJCQkJCQkJCQkgIHRydWUpOworCQkJCQkJCQkJCSAgdHJ1ZSwKKwkJCQkJCQkJ CQkgIGVzY29udGV4dCk7CiAJCX0KIAkJZWxzZQogCQl7CkBAIC00NTgsNyArNTE4LDkgQEAgY29l cmNlX3R5cGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkJcmVzdWx0ID0gY29l cmNlX3RvX2RvbWFpbihub2RlLCBiYXNlVHlwZUlkLCBiYXNlVHlwZU1vZCwKIAkJCQkJCQkJCSAg dGFyZ2V0VHlwZUlkLAogCQkJCQkJCQkJICBjY29udGV4dCwgY2Zvcm1hdCwgbG9jYXRpb24sCi0J CQkJCQkJCQkgIGZhbHNlKTsKKwkJCQkJCQkJCSAgZmFsc2UsCisJCQkJCQkJCQkgIGVzY29udGV4 dCk7CisKIAkJCWlmIChyZXN1bHQgPT0gbm9kZSkKIAkJCXsKIAkJCQkvKgpAQCAtNjc1LDcgKzcz Nyw4IEBAIGNhbl9jb2VyY2VfdHlwZShpbnQgbmFyZ3MsIGNvbnN0IE9pZCAqaW5wdXRfdHlwZWlk cywgY29uc3QgT2lkICp0YXJnZXRfdHlwZWlkcywKIE5vZGUgKgogY29lcmNlX3RvX2RvbWFpbihO b2RlICphcmcsIE9pZCBiYXNlVHlwZUlkLCBpbnQzMiBiYXNlVHlwZU1vZCwgT2lkIHR5cGVJZCwK IAkJCQkgQ29lcmNpb25Db250ZXh0IGNjb250ZXh0LCBDb2VyY2lvbkZvcm0gY2Zvcm1hdCwgaW50 IGxvY2F0aW9uLAotCQkJCSBib29sIGhpZGVJbnB1dENvZXJjaW9uKQorCQkJCSBib29sIGhpZGVJ bnB1dENvZXJjaW9uLAorCQkJCSBOb2RlICplc2NvbnRleHQpCiB7CiAJQ29lcmNlVG9Eb21haW4g KnJlc3VsdDsKIApAQCAtNzA1LDcgKzc2OCwxMCBAQCBjb2VyY2VfdG9fZG9tYWluKE5vZGUgKmFy ZywgT2lkIGJhc2VUeXBlSWQsIGludDMyIGJhc2VUeXBlTW9kLCBPaWQgdHlwZUlkLAogCSAqLwog CWFyZyA9IGNvZXJjZV90eXBlX3R5cG1vZChhcmcsIGJhc2VUeXBlSWQsIGJhc2VUeXBlTW9kLAog CQkJCQkJCSBjY29udGV4dCwgQ09FUkNFX0lNUExJQ0lUX0NBU1QsIGxvY2F0aW9uLAotCQkJCQkJ CSBmYWxzZSk7CisJCQkJCQkJIGZhbHNlLAorCQkJCQkJCSBlc2NvbnRleHQpOworCWlmIChhcmcg PT0gTlVMTCkJCQkvKiBzaG91bGRuJ3QgaGFwcGVuICovCisJCWVsb2coRVJST1IsICJmYWlsZWQg dG8gY29lcmNlIHR5cGUgbW9kaWZpZXIgYXMgZXhwZWN0ZWQiKTsKIAogCS8qCiAJICogTm93IGJ1 aWxkIHRoZSBkb21haW4gY29lcmNpb24gbm9kZS4gIFRoaXMgcmVwcmVzZW50cyBydW4tdGltZSBj aGVja2luZwpAQCAtNzUyLDcgKzgxOCw4IEBAIHN0YXRpYyBOb2RlICoKIGNvZXJjZV90eXBlX3R5 cG1vZChOb2RlICpub2RlLCBPaWQgdGFyZ2V0VHlwZUlkLCBpbnQzMiB0YXJnZXRUeXBNb2QsCiAJ CQkJICAgQ29lcmNpb25Db250ZXh0IGNjb250ZXh0LCBDb2VyY2lvbkZvcm0gY2Zvcm1hdCwKIAkJ CQkgICBpbnQgbG9jYXRpb24sCi0JCQkJICAgYm9vbCBoaWRlSW5wdXRDb2VyY2lvbikKKwkJCQkg ICBib29sIGhpZGVJbnB1dENvZXJjaW9uLAorCQkJCSAgIE5vZGUgKmVzY29udGV4dCkKIHsKIAlD b2VyY2lvblBhdGhUeXBlIHBhdGh0eXBlOwogCU9pZAkJCWZ1bmNJZDsKQEAgLTc3OSw3ICs4NDYs OCBAQCBjb2VyY2VfdHlwZV90eXBtb2QoTm9kZSAqbm9kZSwgT2lkIHRhcmdldFR5cGVJZCwgaW50 MzIgdGFyZ2V0VHlwTW9kLAogCXsKIAkJbm9kZSA9IGJ1aWxkX2NvZXJjaW9uX2V4cHJlc3Npb24o bm9kZSwgcGF0aHR5cGUsIGZ1bmNJZCwKIAkJCQkJCQkJCQkgdGFyZ2V0VHlwZUlkLCB0YXJnZXRU eXBNb2QsCi0JCQkJCQkJCQkJIGNjb250ZXh0LCBjZm9ybWF0LCBsb2NhdGlvbik7CisJCQkJCQkJ CQkJIGNjb250ZXh0LCBjZm9ybWF0LCBsb2NhdGlvbiwKKwkJCQkJCQkJCQkgZXNjb250ZXh0KTsK IAl9CiAJZWxzZQogCXsKQEAgLTg0MCw3ICs5MDgsOCBAQCBidWlsZF9jb2VyY2lvbl9leHByZXNz aW9uKE5vZGUgKm5vZGUsCiAJCQkJCQkgIE9pZCBmdW5jSWQsCiAJCQkJCQkgIE9pZCB0YXJnZXRU eXBlSWQsIGludDMyIHRhcmdldFR5cE1vZCwKIAkJCQkJCSAgQ29lcmNpb25Db250ZXh0IGNjb250 ZXh0LCBDb2VyY2lvbkZvcm0gY2Zvcm1hdCwKLQkJCQkJCSAgaW50IGxvY2F0aW9uKQorCQkJCQkJ ICBpbnQgbG9jYXRpb24sCisJCQkJCQkgIE5vZGUgKmVzY29udGV4dCkKIHsKIAlpbnQJCQluYXJn cyA9IDA7CiAKQEAgLTk1MCwxNCArMTAxOSwxNSBAQCBidWlsZF9jb2VyY2lvbl9leHByZXNzaW9u KE5vZGUgKm5vZGUsCiAJCXRhcmdldEVsZW1lbnRUeXBlID0gZ2V0X2VsZW1lbnRfdHlwZSh0YXJn ZXRUeXBlSWQpOwogCQlBc3NlcnQoT2lkSXNWYWxpZCh0YXJnZXRFbGVtZW50VHlwZSkpOwogCi0J CWVsZW1leHByID0gY29lcmNlX3RvX3RhcmdldF90eXBlKE5VTEwsCi0JCQkJCQkJCQkJIChOb2Rl ICopIGN0ZXN0LAotCQkJCQkJCQkJCSBjdGVzdC0+dHlwZUlkLAotCQkJCQkJCQkJCSB0YXJnZXRF bGVtZW50VHlwZSwKLQkJCQkJCQkJCQkgdGFyZ2V0VHlwTW9kLAotCQkJCQkJCQkJCSBjY29udGV4 dCwKLQkJCQkJCQkJCQkgY2Zvcm1hdCwKLQkJCQkJCQkJCQkgbG9jYXRpb24pOworCQllbGVtZXhw ciA9IGNvZXJjZV90b190YXJnZXRfdHlwZV9leHRlbmRlZChOVUxMLAorCQkJCQkJCQkJCQkJICAo Tm9kZSAqKSBjdGVzdCwKKwkJCQkJCQkJCQkJCSAgY3Rlc3QtPnR5cGVJZCwKKwkJCQkJCQkJCQkJ CSAgdGFyZ2V0RWxlbWVudFR5cGUsCisJCQkJCQkJCQkJCQkgIHRhcmdldFR5cE1vZCwKKwkJCQkJ CQkJCQkJCSAgY2NvbnRleHQsCisJCQkJCQkJCQkJCQkgIGNmb3JtYXQsCisJCQkJCQkJCQkJCQkg IGxvY2F0aW9uLAorCQkJCQkJCQkJCQkJICBlc2NvbnRleHQpOwogCQlpZiAoZWxlbWV4cHIgPT0g TlVMTCkJLyogc2hvdWxkbid0IGhhcHBlbiAqLwogCQkJZWxvZyhFUlJPUiwgImZhaWxlZCB0byBj b2VyY2UgYXJyYXkgZWxlbWVudCB0eXBlIGFzIGV4cGVjdGVkIik7CiAKQEAgLTExNDAsNyArMTIx MCw4IEBAIGNvZXJjZV9yZWNvcmRfdG9fY29tcGxleChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUg Km5vZGUsCiAJCQkJCQkJCWJhc2VUeXBlSWQsIGJhc2VUeXBlTW9kLAogCQkJCQkJCQl0YXJnZXRU eXBlSWQsCiAJCQkJCQkJCWNjb250ZXh0LCBjZm9ybWF0LCBsb2NhdGlvbiwKLQkJCQkJCQkJZmFs c2UpOworCQkJCQkJCQlmYWxzZSwKKwkJCQkJCQkJTlVMTCk7CiAJfQogCiAJcmV0dXJuIChOb2Rl ICopIHJvd2V4cHI7CkBAIC0xMjk1LDcgKzEzNjYsOCBAQCBjb2VyY2VfbnVsbF90b19kb21haW4o T2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsIE9pZCBjb2xsYXRpb24sCiAJCQkJCQkJCSAgQ09FUkNJ T05fSU1QTElDSVQsCiAJCQkJCQkJCSAgQ09FUkNFX0lNUExJQ0lUX0NBU1QsCiAJCQkJCQkJCSAg LTEsCi0JCQkJCQkJCSAgZmFsc2UpOworCQkJCQkJCQkgIGZhbHNlLAorCQkJCQkJCQkgIE5VTEwp OwogCXJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDMxMmRm ZGMxODJhLi5mYjg5ZmQ3OTgxNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBAIC0xNyw2ICsx Nyw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ19hZ2dyZWdhdGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2Nhc3QuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRl ICJub2Rlcy9tYWtlZnVuY3MuaCIKQEAgLTM4LDYgKzM5LDcgQEAKICNpbmNsdWRlICJ1dGlscy9k YXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lz Y2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3Rp bWVzdGFtcC5oIgogI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMv eG1sLmgiCkBAIC02Miw3ICs2NCw4IEBAIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1NdWx0aUFzc2ln blJlZihQYXJzZVN0YXRlICpwc3RhdGUsIE11bHRpQXNzaWduUmVmICptYXJlZik7CiBzdGF0aWMg Tm9kZSAqdHJhbnNmb3JtQ2FzZUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDYXNlRXhwciAqYyk7 CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtU3ViTGluayhQYXJzZVN0YXRlICpwc3RhdGUsIFN1Ykxp bmsgKnN1YmxpbmspOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUFycmF5RXhwcihQYXJzZVN0YXRl ICpwc3RhdGUsIEFfQXJyYXlFeHByICphLAotCQkJCQkJCQlPaWQgYXJyYXlfdHlwZSwgT2lkIGVs ZW1lbnRfdHlwZSwgaW50MzIgdHlwbW9kKTsKKwkJCQkJCQkJT2lkIGFycmF5X3R5cGUsIE9pZCBl bGVtZW50X3R5cGUsIGludDMyIHR5cG1vZCwKKwkJCQkJCQkJTm9kZSAqZXNjb250ZXh0KTsKIHN0 YXRpYyBOb2RlICp0cmFuc2Zvcm1Sb3dFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUm93RXhwciAq ciwgYm9vbCBhbGxvd0RlZmF1bHQpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUNvYWxlc2NlRXhw cihQYXJzZVN0YXRlICpwc3RhdGUsIENvYWxlc2NlRXhwciAqYyk7CiBzdGF0aWMgTm9kZSAqdHJh bnNmb3JtTWluTWF4RXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIE1pbk1heEV4cHIgKm0pOwpAQCAt NzgsNiArODEsMTEgQEAgc3RhdGljIE5vZGUgKnRyYW5zZm9ybVdob2xlUm93UmVmKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAkJCQkJCQkJICBpbnQgc3VibGV2ZWxzX3VwLCBpbnQgbG9jYXRpb24pOwog c3RhdGljIE5vZGUgKnRyYW5zZm9ybUluZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9J bmRpcmVjdGlvbiAqaW5kKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1UeXBlQ2FzdChQYXJzZVN0 YXRlICpwc3RhdGUsIFR5cGVDYXN0ICp0Yyk7CitzdGF0aWMgdm9pZCBDb2VyY2lvbkVycm9yU2Fm ZUNoZWNrKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqY2FzdGV4cHIsCisJCQkJCQkJCSAgIE5v ZGUgKnNvdXJjZSwgT2lkIGlucHV0VHlwZSwgT2lkIHRhcmdldFR5cGUpOworc3RhdGljIHZvaWQg Q29lcmNpb25FcnJvclNhZmVfSW50ZXJuYWwoT2lkIGlucHV0VHlwZSwgT2lkIHRhcmdldFR5cGUs CisJCQkJCQkJCQkgICBib29sICplcnJvcnNhZmVfY29lcmNpb24sCisJCQkJCQkJCQkgICBib29s ICp1c2VyZGVmaW5lZCk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtQ29sbGF0ZUNsYXVzZShQYXJz ZVN0YXRlICpwc3RhdGUsIENvbGxhdGVDbGF1c2UgKmMpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9y bUpzb25PYmplY3RDb25zdHJ1Y3RvcihQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJCUpz b25PYmplY3RDb25zdHJ1Y3RvciAqY3Rvcik7CkBAIC0xNjYsNyArMTc0LDcgQEAgdHJhbnNmb3Jt RXhwclJlY3Vyc2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByKQogCiAJCWNhc2UgVF9B X0FycmF5RXhwcjoKIAkJCXJlc3VsdCA9IHRyYW5zZm9ybUFycmF5RXhwcihwc3RhdGUsIChBX0Fy cmF5RXhwciAqKSBleHByLAotCQkJCQkJCQkJCUludmFsaWRPaWQsIEludmFsaWRPaWQsIC0xKTsK KwkJCQkJCQkJCQlJbnZhbGlkT2lkLCBJbnZhbGlkT2lkLCAtMSwgTlVMTCk7CiAJCQlicmVhazsK IAogCQljYXNlIFRfVHlwZUNhc3Q6CkBAIC01NjYsNiArNTc0LDcgQEAgdHJhbnNmb3JtQ29sdW1u UmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKQogCQljYXNlIEVYUFJfS0lO RF9WQUxVRVNfU0lOR0xFOgogCQljYXNlIEVYUFJfS0lORF9DSEVDS19DT05TVFJBSU5UOgogCQlj YXNlIEVYUFJfS0lORF9ET01BSU5fQ0hFQ0s6CisJCWNhc2UgRVhQUl9LSU5EX0NBU1RfREVGQVVM VDoKIAkJY2FzZSBFWFBSX0tJTkRfRlVOQ1RJT05fREVGQVVMVDoKIAkJY2FzZSBFWFBSX0tJTkRf SU5ERVhfRVhQUkVTU0lPTjoKIAkJY2FzZSBFWFBSX0tJTkRfSU5ERVhfUFJFRElDQVRFOgpAQCAt MTg0MCw2ICsxODQ5LDkgQEAgdHJhbnNmb3JtU3ViTGluayhQYXJzZVN0YXRlICpwc3RhdGUsIFN1 YkxpbmsgKnN1YmxpbmspCiAJCWNhc2UgRVhQUl9LSU5EX0RPTUFJTl9DSEVDSzoKIAkJCWVyciA9 IF8oImNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gY2hlY2sgY29uc3RyYWludCIpOwogCQkJYnJlYWs7 CisJCWNhc2UgRVhQUl9LSU5EX0NBU1RfREVGQVVMVDoKKwkJCWVyciA9IF8oImNhbm5vdCB1c2Ug c3VicXVlcnkgaW4gQ0FTVCBERUZBVUxUIGV4cHJlc3Npb24iKTsKKwkJCWJyZWFrOwogCQljYXNl IEVYUFJfS0lORF9DT0xVTU5fREVGQVVMVDoKIAkJY2FzZSBFWFBSX0tJTkRfRlVOQ1RJT05fREVG QVVMVDoKIAkJCWVyciA9IF8oImNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gREVGQVVMVCBleHByZXNz aW9uIik7CkBAIC0yMDMwLDEwICsyMDQyLDE1IEBAIHRyYW5zZm9ybVN1YkxpbmsoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBTdWJMaW5rICpzdWJsaW5rKQogICogSWYgdGhlIGNhbGxlciBzcGVjaWZpZXMg dGhlIHRhcmdldCB0eXBlLCB0aGUgcmVzdWx0aW5nIGFycmF5IHdpbGwKICAqIGJlIG9mIGV4YWN0 bHkgdGhhdCB0eXBlLiAgT3RoZXJ3aXNlIHdlIHRyeSB0byBpbmZlciBhIGNvbW1vbiB0eXBlCiAg KiBmb3IgdGhlIGVsZW1lbnRzIHVzaW5nIHNlbGVjdF9jb21tb25fdHlwZSgpLgorICoKKyAqIGVz Y29udGV4dCAoRXJyb3JTYXZlQ29udGV4dCAqKSBpcyB0eXBpY2FsbHkgTlVMTCwgZXhjZXB0IGR1 cmluZyBwYXJzZSBhbmFseXNpcyBmb3IKKyAqIENBU1QoLi4uIERFRkFVTFQgLi4uIE9OIENPTlZF UlNJT04gRVJST1IpLiBXaGVuIHByb3ZpZGVkLCBpdCBzaG91bGQgZGVmYXVsdHMKKyAqIEVycm9y U2F2ZUNvbnRleHQtPmVycm9yX29jY3VycmVkID0gZmFsc2U7IGVycm9yX29jY3VycmVkIGlzZSBz ZXQKKyAqIHRvIHRydWUgaWYgY29lcmNpbmcgYXJyYXkgZWxlbWVudHMgZmFpbHMuCiAgKi8KIHN0 YXRpYyBOb2RlICoKIHRyYW5zZm9ybUFycmF5RXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEFfQXJy YXlFeHByICphLAotCQkJCSAgIE9pZCBhcnJheV90eXBlLCBPaWQgZWxlbWVudF90eXBlLCBpbnQz MiB0eXBtb2QpCisJCQkJICAgT2lkIGFycmF5X3R5cGUsIE9pZCBlbGVtZW50X3R5cGUsIGludDMy IHR5cG1vZCwgTm9kZSAqZXNjb250ZXh0KQogewogCUFycmF5RXhwciAgKm5ld2EgPSBtYWtlTm9k ZShBcnJheUV4cHIpOwogCUxpc3QJICAgKm5ld2VsZW1zID0gTklMOwpAQCAtMjA2NCw5ICsyMDgx LDEwIEBAIHRyYW5zZm9ybUFycmF5RXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEFfQXJyYXlFeHBy ICphLAogCQkJCQkJCQkJICAoQV9BcnJheUV4cHIgKikgZSwKIAkJCQkJCQkJCSAgYXJyYXlfdHlw ZSwKIAkJCQkJCQkJCSAgZWxlbWVudF90eXBlLAotCQkJCQkJCQkJICB0eXBtb2QpOworCQkJCQkJ CQkJICB0eXBtb2QsCisJCQkJCQkJCQkgIGVzY29udGV4dCk7CiAJCQkvKiB3ZSBjZXJ0YWlubHkg aGF2ZSBhbiBhcnJheSBoZXJlICovCi0JCQlBc3NlcnQoYXJyYXlfdHlwZSA9PSBJbnZhbGlkT2lk IHx8IGFycmF5X3R5cGUgPT0gZXhwclR5cGUobmV3ZSkpOworCQkJQXNzZXJ0KGVzY29udGV4dCB8 fCBhcnJheV90eXBlID09IEludmFsaWRPaWQgfHwgYXJyYXlfdHlwZSA9PSBleHByVHlwZShuZXdl KSk7CiAJCQluZXdhLT5tdWx0aWRpbXMgPSB0cnVlOwogCQl9CiAJCWVsc2UKQEAgLTIxMDcsNiAr MjEyNSw4IEBAIHRyYW5zZm9ybUFycmF5RXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEFfQXJyYXlF eHByICphLAogCX0KIAllbHNlCiAJeworCQlBc3NlcnQoZXNjb250ZXh0ID09IE5VTEwpOworCiAJ CS8qIENhbid0IGhhbmRsZSBhbiBlbXB0eSBhcnJheSB3aXRob3V0IGEgdGFyZ2V0IHR5cGUgKi8K IAkJaWYgKG5ld2VsZW1zID09IE5JTCkKIAkJCWVyZXBvcnQoRVJST1IsCkBAIC0yMTUzLDI4ICsy MTczLDYyIEBAIHRyYW5zZm9ybUFycmF5RXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEFfQXJyYXlF eHByICphLAogCSAqIElmIHRoZSBhcnJheSdzIHR5cGUgd2FzIG1lcmVseSBkZXJpdmVkIGZyb20g dGhlIGNvbW1vbiB0eXBlIG9mIGl0cwogCSAqIGVsZW1lbnRzLCB0aGVuIHRoZSBlbGVtZW50cyBh cmUgaW1wbGljaXRseSBjb2VyY2VkIHRvIHRoZSBjb21tb24gdHlwZS4KIAkgKiBUaGlzIGlzIGNv bnNpc3RlbnQgd2l0aCBvdGhlciB1c2VzIG9mIHNlbGVjdF9jb21tb25fdHlwZSgpLgorCSAqCisJ ICogSWYgImVzY29udGV4dCIgaXMgbm90IE5VTEwsIGNoZWNrIHdoZXRoZXIgZWFjaCBlbGVtZW50 IGNhbiBiZSBjb2VyY2VkCisJICogdG8gdGhlIHRhcmdldCB0eXBlLCBzaW1pbGFyIHRvIHdoYXQg aXMgZG9uZSBpbiB0cmFuc2Zvcm1UeXBlQ2FzdC4KIAkgKi8KIAlmb3JlYWNoKGVsZW1lbnQsIG5l d2VsZW1zKQogCXsKIAkJTm9kZQkgICAqZSA9IChOb2RlICopIGxmaXJzdChlbGVtZW50KTsKLQkJ Tm9kZQkgICAqbmV3ZTsKKwkJTm9kZQkgICAqbmV3ZSA9IE5VTEw7CiAKIAkJaWYgKGNvZXJjZV9o YXJkKQogCQl7Ci0JCQluZXdlID0gY29lcmNlX3RvX3RhcmdldF90eXBlKHBzdGF0ZSwgZSwKLQkJ CQkJCQkJCQkgZXhwclR5cGUoZSksCi0JCQkJCQkJCQkJIGNvZXJjZV90eXBlLAotCQkJCQkJCQkJ CSB0eXBtb2QsCi0JCQkJCQkJCQkJIENPRVJDSU9OX0VYUExJQ0lULAotCQkJCQkJCQkJCSBDT0VS Q0VfRVhQTElDSVRfQ0FTVCwKLQkJCQkJCQkJCQkgLTEpOwotCQkJaWYgKG5ld2UgPT0gTlVMTCkK LQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9DQU5OT1RfQ09FUkNF KSwKLQkJCQkJCSBlcnJtc2coImNhbm5vdCBjYXN0IHR5cGUgJXMgdG8gJXMiLAotCQkJCQkJCQlm b3JtYXRfdHlwZV9iZShleHByVHlwZShlKSksCi0JCQkJCQkJCWZvcm1hdF90eXBlX2JlKGNvZXJj ZV90eXBlKSksCi0JCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9u KGUpKSkpOworCQkJLyoKKwkJCSAqIENhbm5vdCBjb2VyY2UsIGp1c3QgYXBwZW5kIHRoZSB0cmFu c2Zvcm1lZCBlbGVtZW50IGV4cHJlc3Npb24KKwkJCSAqIHRvIHRoZSBsaXN0LgorCQkJICovCisJ CQlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChlc2NvbnRleHQpKQorCQkJCW5ld2UgPSBlOworCQkJ ZWxzZQorCQkJeworCQkJCU5vZGUJICAgKmVjb3B5ID0gTlVMTDsKKworCQkJCWlmIChlc2NvbnRl eHQpCisJCQkJCWVjb3B5ID0gY29weU9iamVjdChlKTsKKworCQkJCW5ld2UgPSBjb2VyY2VfdG9f dGFyZ2V0X3R5cGVfZXh0ZW5kZWQocHN0YXRlLCBlLAorCQkJCQkJCQkJCQkJCSAgZXhwclR5cGUo ZSksCisJCQkJCQkJCQkJCQkJICBjb2VyY2VfdHlwZSwKKwkJCQkJCQkJCQkJCQkgIHR5cG1vZCwK KwkJCQkJCQkJCQkJCQkgIENPRVJDSU9OX0VYUExJQ0lULAorCQkJCQkJCQkJCQkJCSAgQ09FUkNF X0VYUExJQ0lUX0NBU1QsCisJCQkJCQkJCQkJCQkJICAtMSwKKwkJCQkJCQkJCQkJCQkgIGVzY29u dGV4dCk7CisJCQkJaWYgKG5ld2UgPT0gTlVMTCkKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIENh bm5vdCBjb2VyY2UuIFJhaXNlIGFuIGVycm9yIG9yIGFwcGVuZCB0aGUgdHJhbnNmb3JtZWQKKwkJ CQkJICogZWxlbWVudCB0byB0aGUgbGlzdC4gQWxzbywgc2V0CisJCQkJCSAqIGVzY29udGV4dC0+ ZXJyb3Jfb2NjdXJyZWQgdG8gdHJ1ZSBzbyB0aGUgY2FsbGVyIGNhbgorCQkJCQkgKiBub3RpY2Ug dGhhdCBhcnJheSBjb2VyY2lvbiBmYWlsZWQuCisJCQkJCSAqLworCQkJCQlpZiAoIWVzY29udGV4 dCkKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfQ0FOTk9U X0NPRVJDRSksCisJCQkJCQkJCSBlcnJtc2coImNhbm5vdCBjYXN0IHR5cGUgJXMgdG8gJXMiLAor CQkJCQkJCQkJCWZvcm1hdF90eXBlX2JlKGV4cHJUeXBlKGUpKSwKKwkJCQkJCQkJCQlmb3JtYXRf dHlwZV9iZShjb2VyY2VfdHlwZSkpLAorCQkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0 ZSwgZXhwckxvY2F0aW9uKGUpKSkpOworCQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCUVycm9yU2F2 ZUNvbnRleHQgKmNvbnRleHQgPSBjYXN0Tm9kZShFcnJvclNhdmVDb250ZXh0LCBlc2NvbnRleHQp OworCisJCQkJCQluZXdlID0gZWNvcHk7CisJCQkJCQljb250ZXh0LT5lcnJvcl9vY2N1cnJlZCA9 IHRydWU7CisJCQkJCX0KKwkJCQl9CisJCQl9CiAJCX0KIAkJZWxzZQogCQkJbmV3ZSA9IGNvZXJj ZV90b19jb21tb25fdHlwZShwc3RhdGUsIGUsCkBAIC0yNzIzLDE3ICsyNzc3LDY2IEBAIHRyYW5z Zm9ybVdob2xlUm93UmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUGFyc2VOYW1lc3BhY2VJdGVtICpu c2l0ZW0sCiBzdGF0aWMgTm9kZSAqCiB0cmFuc2Zvcm1UeXBlQ2FzdChQYXJzZVN0YXRlICpwc3Rh dGUsIFR5cGVDYXN0ICp0YykKIHsKLQlOb2RlCSAgICpyZXN1bHQ7CisJU2FmZVR5cGVDYXN0RXhw ciAqc3RjOworCU5vZGUJICAgKmNhc3RleHByID0gTlVMTDsKKwlOb2RlCSAgICpkZWZleHByID0g TlVMTDsKIAlOb2RlCSAgICphcmcgPSB0Yy0+YXJnOworCU5vZGUJICAgKnNvdXJjZTsKIAlOb2Rl CSAgICpleHByOwogCU9pZAkJCWlucHV0VHlwZTsKIAlPaWQJCQl0YXJnZXRUeXBlOworCU9pZAkJ CXRhcmdldFR5cGVjb2xsOwogCWludDMyCQl0YXJnZXRUeXBtb2Q7CiAJaW50CQkJbG9jYXRpb247 CisJRXJyb3JTYXZlQ29udGV4dCAqZXNjb250ZXh0ID0gbWFrZU5vZGUoRXJyb3JTYXZlQ29udGV4 dCk7CisKKwllc2NvbnRleHQtPnR5cGUgPSBUX0Vycm9yU2F2ZUNvbnRleHQ7CisJZXNjb250ZXh0 LT5lcnJvcl9vY2N1cnJlZCA9IGZhbHNlOworCWVzY29udGV4dC0+ZGV0YWlsc193YW50ZWQgPSBm YWxzZTsKIAogCS8qIExvb2sgdXAgdGhlIHR5cGUgbmFtZSBmaXJzdCAqLwogCXR5cGVuYW1lVHlw ZUlkQW5kTW9kKHBzdGF0ZSwgdGMtPnR5cGVOYW1lLCAmdGFyZ2V0VHlwZSwgJnRhcmdldFR5cG1v ZCk7CiAKKwl0YXJnZXRUeXBlY29sbCA9IGdldF90eXBjb2xsYXRpb24odGFyZ2V0VHlwZSk7CisK KwkvKiBsb29raW5nIGF0IERFRkFVTFQgZXhwcmVzc2lvbiAqLworCWlmICh0Yy0+ZGVmZXhwcikK Kwl7CisJCU9pZAkJCWRlZkNvbGw7CisKKwkJZGVmZXhwciA9IHRyYW5zZm9ybUV4cHIocHN0YXRl LCB0Yy0+ZGVmZXhwciwgRVhQUl9LSU5EX0NBU1RfREVGQVVMVCk7CisKKwkJZGVmZXhwciA9IGNv ZXJjZV90b190YXJnZXRfdHlwZShwc3RhdGUsIGRlZmV4cHIsIGV4cHJUeXBlKGRlZmV4cHIpLAor CQkJCQkJCQkJCXRhcmdldFR5cGUsIHRhcmdldFR5cG1vZCwKKwkJCQkJCQkJCQlDT0VSQ0lPTl9F WFBMSUNJVCwKKwkJCQkJCQkJCQlDT0VSQ0VfRVhQTElDSVRfQ0FTVCwKKwkJCQkJCQkJCQlleHBy TG9jYXRpb24oZGVmZXhwcikpOworCQlpZiAoZGVmZXhwciA9PSBOVUxMKQorCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0NBTk5PVF9DT0VSQ0UpLAorCQkJCQllcnJtc2co ImNhbm5vdCBjb2VyY2UgJXMgZXhwcmVzc2lvbiB0byB0eXBlICVzIiwKKwkJCQkJCSAgICJDQVNU IERFRkFVTFQiLAorCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUodGFyZ2V0VHlwZSkpLAorCQkJCQlw YXJzZXJfY29lcmNpb25fZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24odGMtPmRlZmV4 cHIpLCBkZWZleHByKSk7CisKKwkJYXNzaWduX2V4cHJfY29sbGF0aW9ucyhwc3RhdGUsIGRlZmV4 cHIpOworCisJCS8qCisJCSAqIFRoZSBjb2xsYXRpb24gb2YgREVGQVVMVCBleHByZXNzaW9uIG11 c3QgbWF0Y2ggdGhlIGNvbGxhdGlvbiBvZiB0aGUKKwkJICogdGFyZ2V0IHR5cGUuCisJCSAqLwor CQlkZWZDb2xsID0gZXhwckNvbGxhdGlvbihkZWZleHByKTsKKworCQlpZiAodGFyZ2V0VHlwZWNv bGwgIT0gZGVmQ29sbCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9E QVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCWVycm1zZygiY29sbGF0aW9uIG9mIENBU1QgREVGQVVM VCBleHByZXNzaW9uIGNvbmZsaWN0cyB3aXRoIHRhcmdldCB0eXBlIGNvbGxhdGlvbiIpLAorCQkJ CQllcnJkZXRhaWwoIlwiJXNcIiB2ZXJzdXMgXCIlc1wiIiwKKwkJCQkJCQkgIGdldF9jb2xsYXRp b25fbmFtZShkZWZDb2xsKSwKKwkJCQkJCQkgIGdldF9jb2xsYXRpb25fbmFtZSh0YXJnZXRUeXBl Y29sbCkpLAorCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oZGVm ZXhwcikpKTsKKwl9CisKIAkvKgogCSAqIElmIHRoZSBzdWJqZWN0IG9mIHRoZSB0eXBlY2FzdCBp cyBhbiBBUlJBWVtdIGNvbnN0cnVjdCBhbmQgdGhlIHRhcmdldAogCSAqIHR5cGUgaXMgYW4gYXJy YXkgdHlwZSwgd2UgaW52b2tlIHRyYW5zZm9ybUFycmF5RXhwcigpIGRpcmVjdGx5IHNvIHRoYXQK QEAgLTI3NjIsNyArMjg2NSw4IEBAIHRyYW5zZm9ybVR5cGVDYXN0KFBhcnNlU3RhdGUgKnBzdGF0 ZSwgVHlwZUNhc3QgKnRjKQogCQkJCQkJCQkJICAoQV9BcnJheUV4cHIgKikgYXJnLAogCQkJCQkJ CQkJICB0YXJnZXRCYXNlVHlwZSwKIAkJCQkJCQkJCSAgZWxlbWVudFR5cGUsCi0JCQkJCQkJCQkg IHRhcmdldEJhc2VUeXBtb2QpOworCQkJCQkJCQkJICB0YXJnZXRCYXNlVHlwbW9kLAorCQkJCQkJ CQkJICBkZWZleHByID8gKE5vZGUgKikgZXNjb250ZXh0IDogTlVMTCk7CiAJCX0KIAkJZWxzZQog CQkJZXhwciA9IHRyYW5zZm9ybUV4cHJSZWN1cnNlKHBzdGF0ZSwgYXJnKTsKQEAgLTI3ODMsMjAg KzI4ODcsMTk5IEBAIHRyYW5zZm9ybVR5cGVDYXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVHlwZUNh c3QgKnRjKQogCWlmIChsb2NhdGlvbiA8IDApCiAJCWxvY2F0aW9uID0gdGMtPnR5cGVOYW1lLT5s b2NhdGlvbjsKIAotCXJlc3VsdCA9IGNvZXJjZV90b190YXJnZXRfdHlwZShwc3RhdGUsIGV4cHIs IGlucHV0VHlwZSwKLQkJCQkJCQkJICAgdGFyZ2V0VHlwZSwgdGFyZ2V0VHlwbW9kLAotCQkJCQkJ CQkgICBDT0VSQ0lPTl9FWFBMSUNJVCwKLQkJCQkJCQkJICAgQ09FUkNFX0VYUExJQ0lUX0NBU1Qs Ci0JCQkJCQkJCSAgIGxvY2F0aW9uKTsKLQlpZiAocmVzdWx0ID09IE5VTEwpCisJLyoKKwkgKiBj b2VyY2VfdG9fdGFyZ2V0X3R5cGVfZXh0ZW5kZWQgaXMgdW5saWtlbHkgdG8gbW9kaWZ5IHRoZSBz b3VyY2UKKwkgKiBleHByZXNzaW9uLCBidXQgd2Ugc3RpbGwgY3JlYXRlIGEgY29weSBiZWZvcmVo YW5kLiBUaGlzIGFsbG93cworCSAqIFNhZmVUeXBlQ2FzdEV4cHIgdG8gcmVjZWl2ZSB0aGUgdHJh bnNmb3JtZWQgc291cmNlIGV4cHJlc3Npb24KKwkgKiB1bmNoYW5nZWQuCisJICovCisJc291cmNl ID0gZGVmZXhwciA/IGNvcHlPYmplY3QoZXhwcikgOiBleHByOworCisJaWYgKCFTT0ZUX0VSUk9S X09DQ1VSUkVEKGVzY29udGV4dCkpCisJeworCQljYXN0ZXhwciA9IGNvZXJjZV90b190YXJnZXRf dHlwZV9leHRlbmRlZChwc3RhdGUsIGV4cHIsIGlucHV0VHlwZSwKKwkJCQkJCQkJCQkJCSAgdGFy Z2V0VHlwZSwgdGFyZ2V0VHlwbW9kLAorCQkJCQkJCQkJCQkJICBDT0VSQ0lPTl9FWFBMSUNJVCwK KwkJCQkJCQkJCQkJCSAgQ09FUkNFX0VYUExJQ0lUX0NBU1QsCisJCQkJCQkJCQkJCQkgIGxvY2F0 aW9uLAorCQkJCQkJCQkJCQkJICBkZWZleHByID8gKE5vZGUgKikgZXNjb250ZXh0IDogTlVMTCk7 CisKKwkJLyogQ29lcmNpb24gZmFpbGVkLCBlcnJvciBvdXQgaWYgaW4gY2FzZSBvZiBubyBERUZB VUxUIGV4cHJlc3Npb24gKi8KKwkJaWYgKCFjYXN0ZXhwciAmJiAhZGVmZXhwcikKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9DQU5OT1RfQ09FUkNFKSwKKwkJCQkJZXJy bXNnKCJjYW5ub3QgY2FzdCB0eXBlICVzIHRvICVzIiwKKwkJCQkJCSAgIGZvcm1hdF90eXBlX2Jl KGlucHV0VHlwZSksCisJCQkJCQkgICBmb3JtYXRfdHlwZV9iZSh0YXJnZXRUeXBlKSksCisJCQkJ CXBhcnNlcl9jb2VyY2lvbl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uLCBleHByKSk7CisK KworCQkvKiBObyBERUZBVUxUIGV4cHJlc3Npb24sIGV4aXQgbm93ICovCisJCWlmICghZGVmZXhw cikKKwkJCXJldHVybiBjYXN0ZXhwcjsKKwl9CisKKwkvKiBGdXJ0aGVyIGNoZWNrIGZvciBDQVNU KC4uLiBERUZBVUxUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SKSAqLworCUNvZXJjaW9uRXJyb3JT YWZlQ2hlY2socHN0YXRlLCBjYXN0ZXhwciwgc291cmNlLCBpbnB1dFR5cGUsCisJCQkJCQkgICB0 YXJnZXRUeXBlKTsKKworCXN0YyA9IG1ha2VOb2RlKFNhZmVUeXBlQ2FzdEV4cHIpOworCXN0Yy0+ c291cmNlID0gKEV4cHIgKikgc291cmNlOworCXN0Yy0+Y2FzdGV4cHIgPSAoRXhwciAqKSBjYXN0 ZXhwcjsKKwlzdGMtPmRlZmV4cHIgPSAoRXhwciAqKSBkZWZleHByOworCXN0Yy0+cmVzdWx0dHlw ZSA9IHRhcmdldFR5cGU7CisJc3RjLT5yZXN1bHR0eXBtb2QgPSB0YXJnZXRUeXBtb2Q7CisJc3Rj LT5yZXN1bHRjb2xsaWQgPSB0YXJnZXRUeXBlY29sbDsKKwlzdGMtPmxvY2F0aW9uID0gbG9jYXRp b247CisKKwlyZXR1cm4gKE5vZGUgKikgc3RjOworfQorCisvKgorICogQ2hlY2sgdHlwZSBjb2Vy Y2lvbiBpcyBlcnJvciBzYWZlIG9yIG5vdC4gIElmIG5vdCB0aGVuIHJlcG9ydCBlcnJvcgorICov CitzdGF0aWMgdm9pZAorQ29lcmNpb25FcnJvclNhZmVDaGVjayhQYXJzZVN0YXRlICpwc3RhdGUs IE5vZGUgKmNhc3RleHByLCBOb2RlICpzb3VyY2UsCisJCQkJCSAgIE9pZCBpbnB1dFR5cGUsIE9p ZCB0YXJnZXRUeXBlKQoreworCWJvb2wJCWVycm9yc2FmZV9jb2VyY2lvbiA9IHRydWU7CisJYm9v bAkJdXNlcmRlZmluZWQgPSBmYWxzZTsKKworCS8qCisJICogQmluYXJ5IGNvZXJjaW9uIGNhc3Qg aXMgZXJyb3Itc2FmZSwgQ29lcmNlVmlhSU8gY2FuIGFsc28gYmUgZXZhbHVhdGVkCisJICogaW4g YW4gZXJyb3Itc2FmZSBtYW5uZXIuIFNraXAgdGhlc2UgY2FzZXMuCisJICovCisJaWYgKGNhc3Rl eHByID09IE5VTEwgfHwKKwkJSXNCaW5hcnlDb2VyY2libGUoaW5wdXRUeXBlLCB0YXJnZXRUeXBl KSB8fAorCQlJc0EoY2FzdGV4cHIsIENvZXJjZVZpYUlPKSkKKwkJcmV0dXJuOworCisJQ29lcmNp b25FcnJvclNhZmVfSW50ZXJuYWwoaW5wdXRUeXBlLCB0YXJnZXRUeXBlLAorCQkJCQkJCSAgICZl cnJvcnNhZmVfY29lcmNpb24sCisJCQkJCQkJICAgJnVzZXJkZWZpbmVkKTsKKworCWlmICghZXJy b3JzYWZlX2NvZXJjaW9uKQogCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVf Q0FOTk9UX0NPRVJDRSksCi0JCQkJIGVycm1zZygiY2Fubm90IGNhc3QgdHlwZSAlcyB0byAlcyIs Ci0JCQkJCQlmb3JtYXRfdHlwZV9iZShpbnB1dFR5cGUpLAotCQkJCQkJZm9ybWF0X3R5cGVfYmUo dGFyZ2V0VHlwZSkpLAotCQkJCSBwYXJzZXJfY29lcmNpb25fZXJycG9zaXRpb24ocHN0YXRlLCBs b2NhdGlvbiwgZXhwcikpKTsKKwkJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9S VEVEKSwKKwkJCQllcnJtc2coImNhbm5vdCBjYXN0IHR5cGUgJXMgdG8gJXMgd2hlbiAlcyBleHBy ZXNzaW9uIGlzIHNwZWNpZmllZCBpbiAlcyIsCisJCQkJCSAgIGZvcm1hdF90eXBlX2JlKGlucHV0 VHlwZSksCisJCQkJCSAgIGZvcm1hdF90eXBlX2JlKHRhcmdldFR5cGUpLAorCQkJCQkgICAiREVG QVVMVCIsCisJCQkJCSAgICJDQVNUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SIiksCisJCQkJdXNl cmRlZmluZWQKKwkJCQk/IGVycmRldGFpbCgiU2FmZSB0eXBlIGNhc3QgZm9yIHVzZXItZGVmaW5l ZCB0eXBlcyBhcmUgbm90IHlldCBzdXBwb3J0ZWQuIikKKwkJCQk6IGVycmRldGFpbCgiRXhwbGlj aXQgY2FzdCBpcyBkZWZpbmVkIGJ1dCBkZWZpbml0aW9uIGlzIG5vdCBlcnJvciBzYWZlLiIpLAor CQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihzb3VyY2UpKSk7Cit9 CiAKLQlyZXR1cm4gcmVzdWx0Oworc3RhdGljIHZvaWQKK0NvZXJjaW9uRXJyb3JTYWZlX0ludGVy bmFsKE9pZCBpbnB1dFR5cGUsIE9pZCB0YXJnZXRUeXBlLAorCQkJCQkJICAgYm9vbCAqZXJyb3Jz YWZlX2NvZXJjaW9uLCBib29sICp1c2VyZGVmaW5lZCkKK3sKKwlIZWFwVHVwbGUJdHVwbGU7CisK KwljaGFyCQlpbnB1dF90eXB0eXBlID0gZ2V0X3R5cHR5cGUoaW5wdXRUeXBlKTsKKwljaGFyCQl0 YXJnZXRfdHlwdHlwZSA9IGdldF90eXB0eXBlKHRhcmdldFR5cGUpOworCisJLyogc2luY2UgdGhp cyBmdW5jdGlvbiByZWN1cnNlcywgaXQgY291bGQgYmUgZHJpdmVuIHRvIHN0YWNrIG92ZXJmbG93 ICovCisJY2hlY2tfc3RhY2tfZGVwdGgoKTsKKworCUFzc2VydChlcnJvcnNhZmVfY29lcmNpb24g IT0gTlVMTCk7CisJQXNzZXJ0KHVzZXJkZWZpbmVkICE9IE5VTEwpOworCisJaWYgKCEoKmVycm9y c2FmZV9jb2VyY2lvbikpCisJCXJldHVybjsKKworCWlmIChpbnB1dF90eXB0eXBlID09IFRZUFRZ UEVfRE9NQUlOICYmCisJCXRhcmdldF90eXB0eXBlID09IFRZUFRZUEVfRE9NQUlOKQorCXsKKwkJ Q29lcmNpb25FcnJvclNhZmVfSW50ZXJuYWwoZ2V0QmFzZVR5cGUoaW5wdXRUeXBlKSwKKwkJCQkJ CQkJICAgZ2V0QmFzZVR5cGUodGFyZ2V0VHlwZSksCisJCQkJCQkJCSAgIGVycm9yc2FmZV9jb2Vy Y2lvbiwKKwkJCQkJCQkJICAgdXNlcmRlZmluZWQpOworCQlyZXR1cm47CisJfQorCWVsc2UgaWYg KGlucHV0X3R5cHR5cGUgPT0gVFlQVFlQRV9ET01BSU4pCisJeworCQlDb2VyY2lvbkVycm9yU2Fm ZV9JbnRlcm5hbChnZXRCYXNlVHlwZShpbnB1dFR5cGUpLAorCQkJCQkJCQkgICB0YXJnZXRUeXBl LAorCQkJCQkJCQkgICBlcnJvcnNhZmVfY29lcmNpb24sCisJCQkJCQkJCSAgIHVzZXJkZWZpbmVk KTsKKwkJcmV0dXJuOworCX0KKwllbHNlIGlmICh0YXJnZXRfdHlwdHlwZSA9PSBUWVBUWVBFX0RP TUFJTikKKwl7CisJCUNvZXJjaW9uRXJyb3JTYWZlX0ludGVybmFsKGlucHV0VHlwZSwKKwkJCQkJ CQkJICAgZ2V0QmFzZVR5cGUodGFyZ2V0VHlwZSksCisJCQkJCQkJCSAgIGVycm9yc2FmZV9jb2Vy Y2lvbiwKKwkJCQkJCQkJICAgdXNlcmRlZmluZWQpOworCQlyZXR1cm47CisJfQorCWVsc2UgaWYg KChpbnB1dF90eXB0eXBlICE9IFRZUFRZUEVfQkFTRSAmJiBpbnB1dFR5cGUgPiBGaXJzdFVucGlu bmVkT2JqZWN0SWQpCisJCQkgfHwgKHRhcmdldF90eXB0eXBlICE9IFRZUFRZUEVfQkFTRSAmJiB0 YXJnZXRUeXBlID4gRmlyc3RVbnBpbm5lZE9iamVjdElkKSkKKwl7CisJCS8qCisJCSAqIENvbXBv c2l0ZS10by1jb21wb3NpdGUgY2FzdGluZyBpcyBub3QgaW1wbGVtZW50ZWQsIHNvIGVycm9yLXNh ZmUKKwkJICogY2FzdCBiZXR3ZWVuIHRoZW0gc2hvdWxkIG5vdCBiZSBwb3NzaWJsZTsgd2UgZm9y YmlkIGl0IGhlcmUuCisJCSAqCisJCSAqIE91ciB0eXBlIHN5c3RlbSBkb2VzIG5vdCBhdXRvbWF0 aWNhbGx5IGNhc3QgYSB1c2VyLWRlZmluZWQgcmFuZ2UKKwkJICogdHlwZSB0byBhbiBidWlsdC1p biByYW5nZSB0eXBlLCBldmVuIGlmIHRoZWlyIGJhc2UgZWxlbWVudCB0eXBlcworCQkgKiBhcmUg dGhlIHNhbWUuIFRoZXJlIG1heSBiZSBjb21wbGV4IGVkZ2UgY2FzZXMgdG8gY29uc2lkZXIsIHNh ZmVyIHRvCisJCSAqIHNpbXBseSBkaXNhbGxvdyBlcnJvci1zYWZlIGNhc3RpbmcgZm9yIHRoZW0g bm93LgorCQkgKi8KKwkJKmVycm9yc2FmZV9jb2VyY2lvbiA9IGZhbHNlOworCisJCXJldHVybjsK Kwl9CisJZWxzZQorCXsKKwkJT2lkCQkJaW5wdXRfdHlwZWxlbSA9IGdldF9lbGVtZW50X3R5cGUo aW5wdXRUeXBlKTsKKwkJT2lkCQkJdGFyZ2V0X3R5cGVsZW0gPSBnZXRfZWxlbWVudF90eXBlKHRh cmdldFR5cGUpOworCisJCWlmIChPaWRJc1ZhbGlkKGlucHV0X3R5cGVsZW0pICYmIE9pZElzVmFs aWQodGFyZ2V0X3R5cGVsZW0pKQorCQl7CisJCQkvKiByZWN1cnNlIGludG8gYXJyYXkgZWxlbWVu dCB0eXBlICovCisJCQlDb2VyY2lvbkVycm9yU2FmZV9JbnRlcm5hbChpbnB1dF90eXBlbGVtLAor CQkJCQkJCQkJICAgdGFyZ2V0X3R5cGVsZW0sCisJCQkJCQkJCQkgICBlcnJvcnNhZmVfY29lcmNp b24sCisJCQkJCQkJCQkgICB1c2VyZGVmaW5lZCk7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwkv KgorCSAqIENhc3RzIHNvdXJjZSBkYXRhIHR5cGUgYXMgTU9ORVkgYXJlIG5vdCBlcnJvciBzYWZl LgorCSAqLworCWlmIChpbnB1dFR5cGUgPT0gTU9ORVlPSUQpCisJeworCQkqZXJyb3JzYWZlX2Nv ZXJjaW9uID0gZmFsc2U7CisJCXJldHVybjsKKwl9CisKKwlpZiAoaW5wdXRUeXBlICE9IHRhcmdl dFR5cGUpCisJeworCQl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMihDQVNUU09VUkNFVEFSR0VULAor CQkJCQkJCQlPYmplY3RJZEdldERhdHVtKGlucHV0VHlwZSksCisJCQkJCQkJCU9iamVjdElkR2V0 RGF0dW0odGFyZ2V0VHlwZSkpOworCisJCS8qCisJCSAqIEEgcGdfY2FzdCBlbnRyeSBtaWdodCBu b3QgZXhpc3QgZm9yIHRoaXMgc3BlY2lmaWMgY2FzdDsgZm9yCisJCSAqIGV4YW1wbGUsIHdoZW4g dXNpbmcgQ29lcmNlVmlhSU8uCisJCSAqLworCQlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkp CisJCXsKKwkJCUZvcm1fcGdfY2FzdCBjYXN0Rm9ybSA9IChGb3JtX3BnX2Nhc3QpIEdFVFNUUlVD VCh0dXBsZSk7CisKKwkJCWlmIChjYXN0Rm9ybS0+Y2FzdGZ1bmMgPiBGaXJzdFVucGlubmVkT2Jq ZWN0SWQpCisJCQl7CisJCQkJKmVycm9yc2FmZV9jb2VyY2lvbiA9IGZhbHNlOworCQkJCSp1c2Vy ZGVmaW5lZCA9IHRydWU7CisJCQl9CisJCQlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOworCQl9CisJ CWVsc2UgaWYgKGlucHV0VHlwZSA+IEZpcnN0VW5waW5uZWRPYmplY3RJZCB8fCB0YXJnZXRUeXBl ID4gRmlyc3RVbnBpbm5lZE9iamVjdElkKQorCQkJKmVycm9yc2FmZV9jb2VyY2lvbiA9IGZhbHNl OworCX0KIH0KIAogLyoKQEAgLTMyMTIsNiArMzQ5NSw4IEBAIFBhcnNlRXhwcktpbmROYW1lKFBh cnNlRXhwcktpbmQgZXhwcktpbmQpCiAJCWNhc2UgRVhQUl9LSU5EX0NIRUNLX0NPTlNUUkFJTlQ6 CiAJCWNhc2UgRVhQUl9LSU5EX0RPTUFJTl9DSEVDSzoKIAkJCXJldHVybiAiQ0hFQ0siOworCQlj YXNlIEVYUFJfS0lORF9DQVNUX0RFRkFVTFQ6CisJCQlyZXR1cm4gIkNBU1QgREVGQVVMVCI7CiAJ CWNhc2UgRVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxUOgogCQljYXNlIEVYUFJfS0lORF9GVU5DVElP Tl9ERUZBVUxUOgogCQkJcmV0dXJuICJERUZBVUxUIjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9mdW5jLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCmlu ZGV4IDhkYmQ0MWEzNTQ4Li4zNTlhNjk0ZmUwOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2Z1bmMuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCkBA IC0yNzQzLDYgKzI3NDMsOSBAQCBjaGVja19zcmZfY2FsbF9wbGFjZW1lbnQoUGFyc2VTdGF0ZSAq cHN0YXRlLCBOb2RlICpsYXN0X3NyZiwgaW50IGxvY2F0aW9uKQogCQljYXNlIEVYUFJfS0lORF9E T01BSU5fQ0hFQ0s6CiAJCQllcnIgPSBfKCJzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBhcmUgbm90 IGFsbG93ZWQgaW4gY2hlY2sgY29uc3RyYWludHMiKTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJf S0lORF9DQVNUX0RFRkFVTFQ6CisJCQllcnIgPSBfKCJzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBh cmUgbm90IGFsbG93ZWQgaW4gQ0FTVCBERUZBVUxUIGV4cHJlc3Npb25zIik7CisJCQlicmVhazsK IAkJY2FzZSBFWFBSX0tJTkRfQ09MVU1OX0RFRkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZVTkNU SU9OX0RFRkFVTFQ6CiAJCQllcnIgPSBfKCJzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBhcmUgbm90 IGFsbG93ZWQgaW4gREVGQVVMVCBleHByZXNzaW9ucyIpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Rhcmdl dC5jCmluZGV4IDU0MWZlZjVmMTgzLi43Y2QxOTcwYmM5OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90 YXJnZXQuYwpAQCAtODQ1LDcgKzg0NSw4IEBAIHRyYW5zZm9ybUFzc2lnbm1lbnRJbmRpcmVjdGlv bihQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJQ09FUkNJT05fSU1QTElDSVQsCiAJCQkJ CQkJCQkJQ09FUkNFX0lNUExJQ0lUX0NBU1QsCiAJCQkJCQkJCQkJbG9jYXRpb24sCi0JCQkJCQkJ CQkJZmFsc2UpOworCQkJCQkJCQkJCWZhbHNlLAorCQkJCQkJCQkJCU5VTEwpOwogCiAJCQlyZXR1 cm4gKE5vZGUgKikgZnN0b3JlOwogCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfdHlwZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3R5cGUuYwppbmRleCBiYjdl Y2NkZTlmZC4uMjgzZGZjMmVlOTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV90eXBlLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3R5cGUuYwpAQCAtNjYwLDYg KzY2MCwyNCBAQCBzdHJpbmdUeXBlRGF0dW0oVHlwZSB0cCwgY2hhciAqc3RyaW5nLCBpbnQzMiBh dHR0eXBtb2QpCiAJcmV0dXJuIE9pZElucHV0RnVuY3Rpb25DYWxsKHR5cGlucHV0LCBzdHJpbmcs IHR5cGlvcGFyYW0sIGF0dHR5cG1vZCk7CiB9CiAKKy8qCisgKiBFcnJvci1zYWZlIHZlcnNpb24g b2Ygc3RyaW5nVHlwZURhdHVtLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiAic3RyaW5nIiBpcyBh IHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIHR5cGUgInRwIi4KKyAqIE9uIHN1Y2Nlc3MsIHRoZSBp bnRlcm5hbCBEYXR1bSByZXByZXNlbnRhdGlvbiBpcyB3cml0dGVuIHRvICJyZXN1bHQiLgorICov Citib29sCitzdHJpbmdUeXBlRGF0dW1TYWZlKFR5cGUgdHAsIGNoYXIgKnN0cmluZywgaW50MzIg YXR0dHlwbW9kLAorCQkJCQlOb2RlICplc2NvbnRleHQsIERhdHVtICpyZXN1bHQpCit7CisJRm9y bV9wZ190eXBlIHR5cGZvcm0gPSAoRm9ybV9wZ190eXBlKSBHRVRTVFJVQ1QodHApOworCU9pZAkJ CXR5cGlucHV0ID0gdHlwZm9ybS0+dHlwaW5wdXQ7CisJT2lkCQkJdHlwaW9wYXJhbSA9IGdldFR5 cGVJT1BhcmFtKHRwKTsKKworCXJldHVybiBPaWRJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUodHlwaW5w dXQsIHN0cmluZywgdHlwaW9wYXJhbSwgYXR0dHlwbW9kLAorCQkJCQkJCQkJZXNjb250ZXh0LCBy ZXN1bHQpOworfQorCiAvKgogICogR2l2ZW4gYSB0eXBlaWQsIHJldHVybiB0aGUgdHlwZSdzIHR5 cHJlbGlkIChhc3NvY2lhdGVkIHJlbGF0aW9uKSwgaWYgYW55LgogICogUmV0dXJucyBJbnZhbGlk T2lkIGlmIHR5cGUgaXMgbm90IGEgY29tcG9zaXRlIHR5cGUuCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0 aWxjbWQuYwppbmRleCA5YTkxOGUxNGFhNy4uMTAzMThmYzQ5OTAgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX3V0aWxjbWQuYwpAQCAtNDk1MSw3ICs0OTUxLDcgQEAgdHJhbnNmb3JtUGFydGl0aW9uQm91 bmRWYWx1ZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKnZhbCwKIAkJYXNzaWduX2V4cHJfY29s bGF0aW9ucyhwc3RhdGUsIHZhbHVlKTsKIAkJdmFsdWUgPSAoTm9kZSAqKSBleHByZXNzaW9uX3Bs YW5uZXIoKEV4cHIgKikgdmFsdWUpOwogCQl2YWx1ZSA9IChOb2RlICopIGV2YWx1YXRlX2V4cHIo KEV4cHIgKikgdmFsdWUsIGNvbFR5cGUsIGNvbFR5cG1vZCwKLQkJCQkJCQkJCSAgIHBhcnRDb2xs YXRpb24pOworCQkJCQkJCQkJICAgcGFydENvbGxhdGlvbiwgTlVMTCk7CiAJCWlmICghSXNBKHZh bHVlLCBDb25zdCkpCiAJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGV2YWx1YXRlIHBhcnRpdGlv biBib3VuZCBleHByZXNzaW9uIik7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2FycmF5ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheWZ1bmNzLmMKaW5k ZXggNzM0ZTVmZWE0NWUuLmRiZmU1ZjRhNzllIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvYXJyYXlmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheWZ1bmNz LmMKQEAgLTMyOTQsNiArMzI5NCwxNSBAQCBhcnJheV9tYXAoRGF0dW0gYXJyYXlkLAogCQkvKiBB cHBseSB0aGUgZ2l2ZW4gZXhwcmVzc2lvbiB0byBzb3VyY2UgZWxlbWVudCAqLwogCQl2YWx1ZXNb aV0gPSBFeGVjRXZhbEV4cHIoZXhwcnN0YXRlLCBlY29udGV4dCwgJm51bGxzW2ldKTsKIAorCQkv KiBFeGl0IGVhcmx5IGlmIGV2YWx1YXRpb24gZmFpbGVkICovCisJCWlmIChTT0ZUX0VSUk9SX09D Q1VSUkVEKGV4cHJzdGF0ZS0+ZXNjb250ZXh0KSkKKwkJeworCQkJcGZyZWUodmFsdWVzKTsKKwkJ CXBmcmVlKG51bGxzKTsKKworCQkJcmV0dXJuIChEYXR1bSkgMDsKKwkJfQorCiAJCWlmIChudWxs c1tpXSkKIAkJCWhhc251bGxzID0gdHJ1ZTsKIAkJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGls cy5jCmluZGV4IDdiYzEyNTg5ZTQwLi43NDg1ODZhYzY3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxl dXRpbHMuYwpAQCAtMTExMDYsNiArMTExMDYsMzEgQEAgZ2V0X3J1bGVfZXhwcihOb2RlICpub2Rl LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQl9CiAJCQlicmVhazsKIAorCQljYXNlIFRf U2FmZVR5cGVDYXN0RXhwcjoKKwkJCXsKKwkJCQlTYWZlVHlwZUNhc3RFeHByICpzdGNleHByID0g Y2FzdE5vZGUoU2FmZVR5cGVDYXN0RXhwciwgbm9kZSk7CisKKwkJCQkvKgorCQkJCSAqIFdlIGNh bm5vdCBkZXBhcnNlIGNhc3RleHByIGRpcmVjdGx5LCBzaW5jZQorCQkJCSAqIHRyYW5zZm9ybVR5 cGVDYXN0IG1heSBoYXZlIGFscmVhZHkgY29uc3RhbnQtZm9sZGVkIGl0IGludG8KKwkJCQkgKiBh IENvbnN0IG5vZGUuIEluc3RlYWQsIHdlIGNhbiB1c2UgInNvdXJjZSIgYW5kICJkZWZleHByIiB0 bworCQkJCSAqIHJlY29uc3RydWN0IHRoZSBDQVNUIERFRkFVTFQgY2xhdXNlLgorCQkJCSAqLwor CQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiQ0FTVCgiKTsKKwkJCQlnZXRfcnVsZV9l eHByKChOb2RlICopIHN0Y2V4cHItPnNvdXJjZSwgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKKwor CQkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiIEFTICVzICIsCisJCQkJCQkJCSBmb3JtYXRfdHlw ZV93aXRoX3R5cGVtb2Qoc3RjZXhwci0+cmVzdWx0dHlwZSwKKwkJCQkJCQkJCQkJCQkJICBzdGNl eHByLT5yZXN1bHR0eXBtb2QpKTsKKworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAi REVGQVVMVCAiKTsKKworCQkJCWdldF9ydWxlX2V4cHIoKE5vZGUgKikgc3RjZXhwci0+ZGVmZXhw ciwgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKKworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco YnVmLCAiIE9OIENPTlZFUlNJT04gRVJST1IpIik7CisJCQl9CisJCQlicmVhazsKKwogCQljYXNl IFRfSnNvbkV4cHI6CiAJCQl7CiAJCQkJSnNvbkV4cHIgICAqamV4cHIgPSAoSnNvbkV4cHIgKikg bm9kZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZm1nci5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvZm1nci9mbWdyLmMKaW5kZXggYmZlY2ViN2E5MmYuLjkwNjg2YWUyMGY5IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9mbWdyL2ZtZ3IuYwpAQCAtMTc2MCw2ICsxNzYwLDE5IEBAIE9pZElucHV0RnVuY3Rp b25DYWxsKE9pZCBmdW5jdGlvbklkLCBjaGFyICpzdHIsIE9pZCB0eXBpb3BhcmFtLCBpbnQzMiB0 eXBtb2QpCiAJcmV0dXJuIElucHV0RnVuY3Rpb25DYWxsKCZmbGluZm8sIHN0ciwgdHlwaW9wYXJh bSwgdHlwbW9kKTsKIH0KIAorLyogZXJyb3Itc2FmZSB2ZXJzaW9uIG9mIE9pZElucHV0RnVuY3Rp b25DYWxsICovCitib29sCitPaWRJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUoT2lkIGZ1bmN0aW9uSWQs IGNoYXIgKnN0ciwgT2lkIHR5cGlvcGFyYW0sCisJCQkJCQkgaW50MzIgdHlwbW9kLCBOb2RlICpl c2NvbnRleHQsCisJCQkJCQkgRGF0dW0gKnJlc3VsdCkKK3sKKwlGbWdySW5mbwlmbGluZm87CisK KwlmbWdyX2luZm8oZnVuY3Rpb25JZCwgJmZsaW5mbyk7CisJcmV0dXJuIElucHV0RnVuY3Rpb25D YWxsU2FmZSgmZmxpbmZvLCBzdHIsIHR5cGlvcGFyYW0sIHR5cG1vZCwKKwkJCQkJCQkJIGVzY29u dGV4dCwgcmVzdWx0KTsKK30KKwogY2hhciAqCiBPaWRPdXRwdXRGdW5jdGlvbkNhbGwoT2lkIGZ1 bmN0aW9uSWQsIERhdHVtIHZhbCkKIHsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L2V4ZWNFeHByLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCmluZGV4IGFhOWIz NjFmYTMxLi5mYTlkYjhmZDY4NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y0V4cHIuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCkBAIC0yNjUsNiAr MjY1LDcgQEAgdHlwZWRlZiBlbnVtIEV4cHJFdmFsT3AKIAlFRU9QX1hNTEVYUFIsCiAJRUVPUF9K U09OX0NPTlNUUlVDVE9SLAogCUVFT1BfSVNfSlNPTiwKKwlFRU9QX1NBRkVUWVBFX0NBU1QsCiAJ RUVPUF9KU09ORVhQUl9QQVRILAogCUVFT1BfSlNPTkVYUFJfQ09FUkNJT04sCiAJRUVPUF9KU09O RVhQUl9DT0VSQ0lPTl9GSU5JU0gsCkBAIC03NTAsNiArNzUxLDEyIEBAIHR5cGVkZWYgc3RydWN0 IEV4cHJFdmFsU3RlcAogCQkJSnNvbklzUHJlZGljYXRlICpwcmVkOwkvKiBvcmlnaW5hbCBleHBy ZXNzaW9uIG5vZGUgKi8KIAkJfQkJCWlzX2pzb247CiAKKwkJLyogZm9yIEVFT1BfU0FGRVRZUEVf Q0FTVCAqLworCQlzdHJ1Y3QKKwkJeworCQkJc3RydWN0IFNhZmVUeXBlQ2FzdFN0YXRlICpzdGNz dGF0ZTsKKwkJfQkJCXN0Y2V4cHI7CisKIAkJLyogZm9yIEVFT1BfSlNPTkVYUFJfUEFUSCAqLwog CQlzdHJ1Y3QKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZm1nci5oIGIvc3JjL2luY2x1 ZGUvZm1nci5oCmluZGV4IDEwZDAyYmRiNzlmLi44ZTNlNTFkYzIyOCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvZm1nci5oCisrKyBiL3NyYy9pbmNsdWRlL2ZtZ3IuaApAQCAtNzUyLDYgKzc1Miw5 IEBAIGV4dGVybiBib29sIERpcmVjdElucHV0RnVuY3Rpb25DYWxsU2FmZShQR0Z1bmN0aW9uIGZ1 bmMsIGNoYXIgKnN0ciwKIAkJCQkJCQkJCQlEYXR1bSAqcmVzdWx0KTsKIGV4dGVybiBEYXR1bSBP aWRJbnB1dEZ1bmN0aW9uQ2FsbChPaWQgZnVuY3Rpb25JZCwgY2hhciAqc3RyLAogCQkJCQkJCQkg IE9pZCB0eXBpb3BhcmFtLCBpbnQzMiB0eXBtb2QpOworZXh0ZXJuIGJvb2wgT2lkSW5wdXRGdW5j dGlvbkNhbGxTYWZlKE9pZCBmdW5jdGlvbklkLCBjaGFyICpzdHIsIE9pZCB0eXBpb3BhcmFtLAor CQkJCQkJCQkJIGludDMyIHR5cG1vZCwgTm9kZSAqZXNjb250ZXh0LAorCQkJCQkJCQkJIERhdHVt ICpyZXN1bHQpOwogZXh0ZXJuIGNoYXIgKk91dHB1dEZ1bmN0aW9uQ2FsbChGbWdySW5mbyAqZmxp bmZvLCBEYXR1bSB2YWwpOwogZXh0ZXJuIGNoYXIgKk9pZE91dHB1dEZ1bmN0aW9uQ2FsbChPaWQg ZnVuY3Rpb25JZCwgRGF0dW0gdmFsKTsKIGV4dGVybiBEYXR1bSBSZWNlaXZlRnVuY3Rpb25DYWxs KEZtZ3JJbmZvICpmbGluZm8sIFN0cmluZ0luZm8gYnVmLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRl eCA2ODRlMzk4ZjgyNC4uM2VlMDM5ZGFjZDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVz L2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC0xMDcx LDYgKzEwNzEsMjcgQEAgdHlwZWRlZiBzdHJ1Y3QgRG9tYWluQ29uc3RyYWludFN0YXRlCiAJRXhw clN0YXRlICAqY2hlY2tfZXhwcnN0YXRlOwkvKiBjaGVja19leHByJ3MgZXZhbCBzdGF0ZSwgb3Ig TlVMTCAqLwogfSBEb21haW5Db25zdHJhaW50U3RhdGU7CiAKK3R5cGVkZWYgc3RydWN0IFNhZmVU eXBlQ2FzdFN0YXRlCit7CisJU2FmZVR5cGVDYXN0RXhwciAqc3RjZXhwcjsKKworCS8qCisJICog QWRkcmVzcyB0byBqdW1wIHRvIHdoZW4gc2tpcHBpbmcgYWxsIHRoZSBzdGVwcyB0byBldmFsdWF0 ZSB0aGUgZGVmYXVsdAorCSAqIGV4cHJlc3Npb24uCisJICovCisJaW50CQkJanVtcF9lbmQ7CisK KwkvKgorCSAqIEZvciBlcnJvci1zYWZlIGV2YWx1YXRpb24gb2YgY29lcmNpb25zLiBBIHBvaW50 ZXIgdG8gdGhpcyBpcyBwYXNzZWQgdG8KKwkgKiBFeGVjSW5pdEV4cHJSZWMoKSB3aGVuIGluaXRp YWxpemluZyB0aGUgY29lcmNpb24gZXhwcmVzc2lvbnMsIHNlZQorCSAqIEV4ZWNJbml0U2FmZVR5 cGVDYXN0RXhwci4KKwkgKgorCSAqIFJlc2V0IGZvciBlYWNoIGV2YWx1YXRpb24gb2YgRUVPUF9T QUZFVFlQRV9DQVNULgorCSAqLworCUVycm9yU2F2ZUNvbnRleHQgZXNjb250ZXh0OworCit9IFNh ZmVUeXBlQ2FzdFN0YXRlOworCiAvKgogICogU3RhdGUgZm9yIEpzb25FeHByIGV2YWx1YXRpb24s IHRvbyBiaWcgdG8gaW5saW5lLgogICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBkZjQzMTIy MGFjNS4uYmEyN2UwYTcxNGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9k ZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTM5Nyw2ICszOTcs NyBAQCB0eXBlZGVmIHN0cnVjdCBUeXBlQ2FzdAogCU5vZGVUYWcJCXR5cGU7CiAJTm9kZQkgICAq YXJnOwkJCS8qIHRoZSBleHByZXNzaW9uIGJlaW5nIGNhc3RlZCAqLwogCVR5cGVOYW1lICAgKnR5 cGVOYW1lOwkJLyogdGhlIHRhcmdldCB0eXBlICovCisJTm9kZQkgICAqZGVmZXhwcjsJCS8qIERF RkFVTFQgZXhwcmVzc2lvbiAqLwogCVBhcnNlTG9jCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRp b24sIG9yIC0xIGlmIHVua25vd24gKi8KIH0gVHlwZUNhc3Q7CiAKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgK aW5kZXggZjViNmI0NTY2NGEuLmI2NWE4ZGIwMjk3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9u b2Rlcy9wcmltbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAt NzcwLDYgKzc3MCw0NCBAQCB0eXBlZGVmIGVudW0gQ29lcmNpb25Gb3JtCiAJQ09FUkNFX1NRTF9T WU5UQVgsCQkJLyogZGlzcGxheSB3aXRoIFNRTC1tYW5kYXRlZCBzcGVjaWFsIHN5bnRheCAqLwog fSBDb2VyY2lvbkZvcm07CiAKKy8qCisgKiBTYWZlVHlwZUNhc3RFeHByIC0KKyAqCQlUcmFuc2Zv cm1lZCByZXByZXNlbnRhdGlvbiBvZgorICogCQlDQVNUKGV4cHIgQVMgdHlwZW5hbWUgREVGQVVM VCBleHByIE9OIENPTlZFUlNJT04gRVJST1IpCisgKiAJCUNBU1QoZXhwciBBUyB0eXBlbmFtZSBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpCisgKi8KK3R5cGVkZWYgc3RydWN0IFNhZmVUeXBlQ2Fz dEV4cHIKK3sKKwlFeHByCQl4cHI7CisKKwkvKgorCSAqIFRoZSBwYXJzZWQgYW5kIHRyYW5zZm9y bWVkIHNvdXJjZSBleHByZXNzaW9uLiBUaGUgImNhc3RleHByIiBleHByZXNzaW9uCisJICogbWF5 IGFsc28gaW5jbHVkZWQgdGhpcyAic291cmNlIiBzdWJleHByZXNzaW9uLCBzbyBkdXJpbmcgdGhl IHBsYW5uaW5nCisJICogc3RhZ2UsIGV2YWxfY29uc3RfZXhwcmVzc2lvbnMgbXVzdCBudWxsaWZ5 IHRoaXMgZmllbGQgdG8gYXZvaWQKKwkgKiBlcnJvbmVvdXMgZHVwbGljYXRpb24sIHN1Y2ggYXMg Y29sbGVjdGluZy9wcm9jZXNzIGFnZ3JlZ2F0ZSBub2RlIGRhdGEKKwkgKiBtdWx0aXBsZSB0aW1l cy4gKGUuZy4gcHJlcHJvY2Vzc19hZ2dyZWYpCisJICoKKwkgKiBCdXQgdGhpcyBpcyBzdGlsbCBy ZXF1aXJlZCBmb3IgZGVwYXJzaW5nLiBJbiBjYXNlcyBsaWtlICJDQVNUKDEgQVMgZGF0ZQorCSAq IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSIsIHRoZSBjYXN0ZXhwciBldmFsdWF0 ZXMgdG8gTlVMTCwKKwkgKiBtZWFuaW5nIHRoZSBvcmlnaW5hbCBxdWVyeSBjYW4gb25seSBiZSBy ZWNvbnN0cnVjdGVkIHVzaW5nIHRoaXMgc291cmNlCisJICogZmllbGQuCisJICovCisJRXhwcgkg ICAqc291cmNlOworCisJLyogdHJhbnNmb3JtZWQgY2FzdCBleHByZXNzaW9uLCBOVUxMIG1lYW5z IGNhbm5vdCBjb2VyY2UgdG8gdGFyZ2V0IHR5cGUgKi8KKwlFeHByCSAgICpjYXN0ZXhwciBwZ19u b2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CisJLyogRmFsbC1iYWNrIHRvIHRoZSBkZWZh dWx0IGV4cHJlc3Npb24gaWYgY2FzdCBldmFsdWF0aW9uIGZhaWxzICovCisJRXhwcgkgICAqZGVm ZXhwcjsKKwkvKiB0YXJnZXQgdHlwZSBPaWQgKi8KKwlPaWQJCQlyZXN1bHR0eXBlOworCS8qIHRh cmdldCB0eXBlIG1vZGlmaWVyICovCisJaW50MzIJCXJlc3VsdHR5cG1vZDsKKwkvKiBPSUQgb2Yg Y29sbGF0aW9uLCBvciBJbnZhbGlkT2lkIGlmIG5vbmUgKi8KKwlPaWQJCQlyZXN1bHRjb2xsaWQ7 CisJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KKwlQYXJzZUxvYwlsb2Nh dGlvbjsKK30gU2FmZVR5cGVDYXN0RXhwcjsKKwogLyoKICAqIEZ1bmNFeHByIC0gZXhwcmVzc2lv biBub2RlIGZvciBhIGZ1bmN0aW9uIGNhbGwKICAqCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9v cHRpbWl6ZXIvb3B0aW1pemVyLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmgK aW5kZXggZThiNDA5YWZiN2YuLmI2ODZiZTA0OWI5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9v cHRpbWl6ZXIvb3B0aW1pemVyLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXpl ci5oCkBAIC0xNTEsNyArMTUxLDcgQEAgZXh0ZXJuIHZvaWQgY29udmVydF9zYW9wX3RvX2hhc2hl ZF9zYW9wKE5vZGUgKm5vZGUpOwogZXh0ZXJuIE5vZGUgKmVzdGltYXRlX2V4cHJlc3Npb25fdmFs dWUoUGxhbm5lckluZm8gKnJvb3QsIE5vZGUgKm5vZGUpOwogCiBleHRlcm4gRXhwciAqZXZhbHVh dGVfZXhwcihFeHByICpleHByLCBPaWQgcmVzdWx0X3R5cGUsIGludDMyIHJlc3VsdF90eXBtb2Qs Ci0JCQkJCQkgICBPaWQgcmVzdWx0X2NvbGxhdGlvbik7CisJCQkJCQkgICBPaWQgcmVzdWx0X2Nv bGxhdGlvbiwgTm9kZSAqZXNjb250ZXh0KTsKIAogZXh0ZXJuIGJvb2wgdmFyX2lzX25vbm51bGxh YmxlKFBsYW5uZXJJbmZvICpyb290LCBWYXIgKnZhciwKIAkJCQkJCQkgICBOb3ROdWxsU291cmNl IHNvdXJjZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfY29lcmNlLmgg Yi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfY29lcmNlLmgKaW5kZXggYWFiYWNkNDliNjUuLjEy NjQ0ZjE0NmJmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfY29lcmNlLmgK KysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2NvZXJjZS5oCkBAIC00MywxNSArNDMsMjkg QEAgZXh0ZXJuIE5vZGUgKmNvZXJjZV90b190YXJnZXRfdHlwZShQYXJzZVN0YXRlICpwc3RhdGUs CiAJCQkJCQkJCSAgIENvZXJjaW9uQ29udGV4dCBjY29udGV4dCwKIAkJCQkJCQkJICAgQ29lcmNp b25Gb3JtIGNmb3JtYXQsCiAJCQkJCQkJCSAgIGludCBsb2NhdGlvbik7CitleHRlcm4gTm9kZSAq Y29lcmNlX3RvX3RhcmdldF90eXBlX2V4dGVuZGVkKFBhcnNlU3RhdGUgKnBzdGF0ZSwKKwkJCQkJ CQkJCQkJTm9kZSAqZXhwciwKKwkJCQkJCQkJCQkJT2lkIGV4cHJ0eXBlLAorCQkJCQkJCQkJCQlP aWQgdGFyZ2V0dHlwZSwKKwkJCQkJCQkJCQkJaW50MzIgdGFyZ2V0dHlwbW9kLAorCQkJCQkJCQkJ CQlDb2VyY2lvbkNvbnRleHQgY2NvbnRleHQsCisJCQkJCQkJCQkJCUNvZXJjaW9uRm9ybSBjZm9y bWF0LAorCQkJCQkJCQkJCQlpbnQgbG9jYXRpb24sCisJCQkJCQkJCQkJCU5vZGUgKmVzY29udGV4 dCk7CiBleHRlcm4gYm9vbCBjYW5fY29lcmNlX3R5cGUoaW50IG5hcmdzLCBjb25zdCBPaWQgKmlu cHV0X3R5cGVpZHMsIGNvbnN0IE9pZCAqdGFyZ2V0X3R5cGVpZHMsCiAJCQkJCQkJQ29lcmNpb25D b250ZXh0IGNjb250ZXh0KTsKIGV4dGVybiBOb2RlICpjb2VyY2VfdHlwZShQYXJzZVN0YXRlICpw c3RhdGUsIE5vZGUgKm5vZGUsCiAJCQkJCQkgT2lkIGlucHV0VHlwZUlkLCBPaWQgdGFyZ2V0VHlw ZUlkLCBpbnQzMiB0YXJnZXRUeXBlTW9kLAogCQkJCQkJIENvZXJjaW9uQ29udGV4dCBjY29udGV4 dCwgQ29lcmNpb25Gb3JtIGNmb3JtYXQsIGludCBsb2NhdGlvbik7CitleHRlcm4gTm9kZSAqY29l cmNlX3R5cGVfZXh0ZW5kZWQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAorCQkJCQkJ CQkgIE9pZCBpbnB1dFR5cGVJZCwgT2lkIHRhcmdldFR5cGVJZCwgaW50MzIgdGFyZ2V0VHlwZU1v ZCwKKwkJCQkJCQkJICBDb2VyY2lvbkNvbnRleHQgY2NvbnRleHQsIENvZXJjaW9uRm9ybSBjZm9y bWF0LCBpbnQgbG9jYXRpb24sCisJCQkJCQkJCSAgTm9kZSAqZXNjb250ZXh0KTsKIGV4dGVybiBO b2RlICpjb2VyY2VfdG9fZG9tYWluKE5vZGUgKmFyZywgT2lkIGJhc2VUeXBlSWQsIGludDMyIGJh c2VUeXBlTW9kLAogCQkJCQkJCSAgT2lkIHR5cGVJZCwKIAkJCQkJCQkgIENvZXJjaW9uQ29udGV4 dCBjY29udGV4dCwgQ29lcmNpb25Gb3JtIGNmb3JtYXQsIGludCBsb2NhdGlvbiwKLQkJCQkJCQkg IGJvb2wgaGlkZUlucHV0Q29lcmNpb24pOworCQkJCQkJCSAgYm9vbCBoaWRlSW5wdXRDb2VyY2lv biwKKwkJCQkJCQkgIE5vZGUgKmVzY29udGV4dCk7CiAKIGV4dGVybiBOb2RlICpjb2VyY2VfdG9f Ym9vbGVhbihQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKm5vZGUsCiAJCQkJCQkJICAgY29uc3Qg Y2hhciAqY29uc3RydWN0TmFtZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFy c2Vfbm9kZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAppbmRleCBmYzJjYmVi MjA4My4uNzI2YzFmY2QwZTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9u b2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaApAQCAtNjcsNiArNjcs OCBAQCB0eXBlZGVmIGVudW0gUGFyc2VFeHByS2luZAogCUVYUFJfS0lORF9WQUxVRVNfU0lOR0xF LAkvKiBzaW5nbGUtcm93IFZBTFVFUyAoaW4gSU5TRVJUIG9ubHkpICovCiAJRVhQUl9LSU5EX0NI RUNLX0NPTlNUUkFJTlQsIC8qIENIRUNLIGNvbnN0cmFpbnQgZm9yIGEgdGFibGUgKi8KIAlFWFBS X0tJTkRfRE9NQUlOX0NIRUNLLAkJLyogQ0hFQ0sgY29uc3RyYWludCBmb3IgYSBkb21haW4gKi8K KwlFWFBSX0tJTkRfQ0FTVF9ERUZBVUxULAkJLyogZGVmYXVsdCBleHByZXNzaW9uIGluIENBU1Qg REVGQVVMVCBPTgorCQkJCQkJCQkgKiBDT05WRVJTSU9OIEVSUk9SICovCiAJRVhQUl9LSU5EX0NP TFVNTl9ERUZBVUxULAkvKiBkZWZhdWx0IHZhbHVlIGZvciBhIHRhYmxlIGNvbHVtbiAqLwogCUVY UFJfS0lORF9GVU5DVElPTl9ERUZBVUxULCAvKiBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBmb3Ig ZnVuY3Rpb24gKi8KIAlFWFBSX0tJTkRfSU5ERVhfRVhQUkVTU0lPTiwgLyogaW5kZXggZXhwcmVz c2lvbiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3R5cGUuaCBiL3Ny Yy9pbmNsdWRlL3BhcnNlci9wYXJzZV90eXBlLmgKaW5kZXggYTMzNTgwN2IwYjAuLmUzMDNhMTA3 M2MxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdHlwZS5oCisrKyBiL3Ny Yy9pbmNsdWRlL3BhcnNlci9wYXJzZV90eXBlLmgKQEAgLTQ3LDYgKzQ3LDggQEAgZXh0ZXJuIGNo YXIgKnR5cGVUeXBlTmFtZShUeXBlIHQpOwogZXh0ZXJuIE9pZAl0eXBlVHlwZVJlbGlkKFR5cGUg dHlwKTsKIGV4dGVybiBPaWQJdHlwZVR5cGVDb2xsYXRpb24oVHlwZSB0eXApOwogZXh0ZXJuIERh dHVtIHN0cmluZ1R5cGVEYXR1bShUeXBlIHRwLCBjaGFyICpzdHJpbmcsIGludDMyIGF0dHR5cG1v ZCk7CitleHRlcm4gYm9vbCBzdHJpbmdUeXBlRGF0dW1TYWZlKFR5cGUgdHAsIGNoYXIgKnN0cmlu ZywgaW50MzIgYXR0dHlwbW9kLAorCQkJCQkJCQlOb2RlICplc2NvbnRleHQsIERhdHVtICpyZXN1 bHQpOwogCiBleHRlcm4gT2lkCXR5cGVpZFR5cGVSZWxpZChPaWQgdHlwZV9pZCk7CiBleHRlcm4g T2lkCXR5cGVPckRvbWFpblR5cGVSZWxpZChPaWQgdHlwZV9pZCk7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nhc3Qub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9jYXN0Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjJhZjc3 NGVkY2YKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nhc3Qu b3V0CkBAIC0wLDAgKzEsMTA4NCBAQAorU0VUIGV4dHJhX2Zsb2F0X2RpZ2l0cyA9IDA7CitTRVQg bGNfbW9uZXRhcnkgVE8gIkMiOworLS0gQ0FTVCBERUZBVUxUIE9OIENPTlZFUlNJT04gRVJST1IK K1NFTEVDVCBDQVNUKEInMDEnIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOworIGRhdGUgCistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoQklUJzAxJyBB UyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBkYXRlIAorLS0tLS0t CisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKFRSVUUgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUik7CisgZGF0ZSAKKy0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1Qg Q0FTVCgxLjEgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgZGF0 ZSAKKy0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgxIEFTIGRhdGUgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIGRhdGUgCistLS0tLS0KKyAKKygxIHJvdykKKwor U0VMRUNUIENBU1QoMTExMSBBUyAiY2hhciIgREVGQVVMVCAnQScgT04gQ09OVkVSU0lPTiBFUlJP Uik7CisgY2hhciAKKy0tLS0tLQorIEEKKygxIHJvdykKKworU0VMRUNUIENBU1QoJ2RlZic6OnRl eHQgQVMgaW50ZWdlciBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgaW50NCAK Ky0tLS0tLQorICAgICAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJzInOjpqc29uYiBBUyB0ZXh0 IERFRkFVTFQgJ2ZhbGxiYWNrJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyB0ZXh0IAorLS0tLS0t CisgMgorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnMScgQ09MTEFURSAiQyIgfHwgJ2gnIEFTIHRl eHQgREVGQVVMVCAnZmFsbGJhY2snIE9OIENPTlZFUlNJT04gRVJST1IpOworIHRleHQgCistLS0t LS0KKyAxaAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVChjb25jYXQoJzEnIGNvbGxhdGUgIkMiLCAn aCcpIEFTIGludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgY29uY2F0IAor LS0tLS0tLS0KKyAgICAgICAKKygxIHJvdykKKworU0VMRUNUIENBU1QoNjU1MzYgQVMgaW50MiBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgaW50MiAKKy0tLS0tLQorICAgICAK KygxIHJvdykKKworU0VMRUNUIENBU1QoaW50OCg2NTUzNikgQVMgaW50MiBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUik7CisgaW50OCAKKy0tLS0tLQorICAgICAKKygxIHJvdykKKwor LS0gc291cmNlIGV4cHJlc3Npb24gaXMgYSB1bmtub3duIGNvbnN0CitWQUxVRVMgKENBU1QoJ2Vy cm9yJyBBUyBpbnRlZ2VyIEVSUk9SIE9OIENPTlZFUlNJT04gRVJST1IpKTsgLS0gZXJyb3IKK0VS Uk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogImVycm9yIgorTElO RSAxOiBWQUxVRVMgKENBU1QoJ2Vycm9yJyBBUyBpbnRlZ2VyIEVSUk9SIE9OIENPTlZFUlNJT04g RVJST1IpKTsKKyAgICAgICAgICAgICAgICAgICAgIF4KK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFT IGludGVnZXIgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSk7CisgY29sdW1uMSAKKy0tLS0tLS0t LQorICAgICAgICAKKygxIHJvdykKKworVkFMVUVTIChDQVNUKCdlcnJvcicgQVMgaW50ZWdlciBE RUZBVUxUIDQyIE9OIENPTlZFUlNJT04gRVJST1IpKTsKKyBjb2x1bW4xIAorLS0tLS0tLS0tCisg ICAgICA0MgorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgMTggT04g Q09OVkVSU0lPTiBFUlJPUik7CisgaW50NCAKKy0tLS0tLQorICAgMTgKKygxIHJvdykKKworU0VM RUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUIHN1bSgxKSBPTiBDT05WRVJTSU9OIEVSUk9SKTsg LS0gZXJyb3IKK0VSUk9SOiAgYWdncmVnYXRlIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4g Q0FTVCBERUZBVUxUIGV4cHJlc3Npb25zCitMSU5FIDE6IFNFTEVDVCBDQVNUKCdhJyBhcyBpbnQg REVGQVVMVCBzdW0oMSkgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgc3Vt KDEpIG92ZXIoKSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK0VSUk9SOiAgd2luZG93 IGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gQ0FTVCBERUZBVUxUIGV4cHJlc3Npb25zCitM SU5FIDE6IFNFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCBzdW0oMSkgb3ZlcigpIE9OIENP TlZFUlNJT04gRS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor U0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUIChTRUxFQ1QgTlVMTCkgT04gQ09OVkVSU0lP TiBFUlJPUik7IC0tIGVycm9yCitFUlJPUjogIGNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gQ0FTVCBE RUZBVUxUIGV4cHJlc3Npb24KK0xJTkUgMTogU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxU IChTRUxFQ1QgTlVMTCkgT04gQ09OVkVSU0lPTiBFLi4uCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgJ2InIE9O IENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRh eCBmb3IgdHlwZSBpbnRlZ2VyOiAiYiIKK0xJTkUgMTogU0VMRUNUIENBU1QoJ2EnIGFzIGludCBE RUZBVUxUICdiJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBDQVNUKCdhJzo6aW50IGFzIGludCBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitFUlJPUjogIGludmFsaWQgaW5wdXQg c3ludGF4IGZvciB0eXBlIGludGVnZXI6ICJhIgorTElORSAxOiBTRUxFQ1QgQ0FTVCgnYSc6Omlu dCBhcyBpbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IuLi4KKyAgICAgICAgICAg ICAgICAgICAgXgorLS0gdGhlIGRlZmF1bHQgZXhwcmVzc2lvbuKAmXMgY29sbGF0aW9uIHNob3Vs ZCBtYXRjaCB0YXJnZXQgdHlwZSBjb2xsYXRpb24KK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIHRl eHQgREVGQVVMVCAnMScgQ09MTEFURSAiQyIgT04gQ09OVkVSU0lPTiBFUlJPUikpOworRVJST1I6 ICBjb2xsYXRpb24gb2YgQ0FTVCBERUZBVUxUIGV4cHJlc3Npb24gY29uZmxpY3RzIHdpdGggdGFy Z2V0IHR5cGUgY29sbGF0aW9uCitMSU5FIDE6IFZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIHRleHQg REVGQVVMVCAnMScgQ09MTEFURSAiQyIgT04gQ09OVi4uLgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgIkMiIHZlcnN1cyAiZGVmYXVsdCIK K1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIGludDJ2ZWN0b3IgREVGQVVMVCAnMSAzJyAgT04gQ09O VkVSU0lPTiBFUlJPUikpOworIGNvbHVtbjEgCistLS0tLS0tLS0KKyAxIDMKKygxIHJvdykKKwor VkFMVUVTIChDQVNUKCdlcnJvcicgQVMgaW50MnZlY3RvcltdIERFRkFVTFQgJ3sxIDN9JyAgT04g Q09OVkVSU0lPTiBFUlJPUikpOworIGNvbHVtbjEgCistLS0tLS0tLS0KKyB7IjEgMyJ9CisoMSBy b3cpCisKKy0tIHNvdXJjZSBleHByZXNzaW9uIGNvbnRhaW4gc3VicXVlcnkKK1NFTEVDVCBDQVNU KChTRUxFQ1QgYiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxKSwgKFZBTFVFUygnSCcpKSBzKGIp KQorICAgICAgICAgICAgQVMgaW50MnZlY3RvcltdIERFRkFVTFQgJ3sxIDN9JyAgT04gQ09OVkVS U0lPTiBFUlJPUik7CisgICAgYiAgICAKKy0tLS0tLS0tLQorIHsiMSAzIn0KKygxIHJvdykKKwor U0VMRUNUIENBU1QoKFNFTEVDVCBBUlJBWSgoU0VMRUNUIGIgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMikgZywgKFZBTFVFUygnSCcpKSBzKGIpKSkpCisgICAgICAgICAgICBBUyBJTlRbXQorICAg ICAgICAgICAgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIGFycmF5IAorLS0t LS0tLQorIAorKDEgcm93KQorCitDUkVBVEUgRlVOQ1RJT04gcmV0X2ludDgoKSBSRVRVUk5TIEJJ R0lOVCBBUworJCQKK0JFR0lOIFJFVFVSTiAyMTQ3NDgzNjQ4OyBFTkQ7CiskJAorTEFOR1VBR0Ug cGxwZ3NxbCBJTU1VVEFCTEU7CitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgcmV0X2lu dDgoKSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK0VSUk9SOiAgaW50ZWdlciBvdXQg b2YgcmFuZ2UKK1NFTEVDVCBDQVNUKCdhJyBhcyBkYXRlIERFRkFVTFQgcmV0X2ludDgoKSBPTiBD T05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK0VSUk9SOiAgY2Fubm90IGNvZXJjZSBDQVNUIERF RkFVTFQgZXhwcmVzc2lvbiB0byB0eXBlIGRhdGUKK0xJTkUgMTogU0VMRUNUIENBU1QoJ2EnIGFz IGRhdGUgREVGQVVMVCByZXRfaW50OCgpIE9OIENPTlZFUlNJT04gRVJSLi4uCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gREVGQVVMVCBleHByZXNzaW9uIGNh bm5vdCBiZSBzZXQtcmV0dXJuaW5nCitDUkVBVEUgRlVOQ1RJT04gcmV0X3NldGludCgpIFJFVFVS TlMgU0VUT0YgaW50ZWdlciBBUworJCQKK0JFR0lOIFJFVFVSTiBRVUVSWSBFWEVDVVRFICdzZWxl Y3QgMSB1bmlvbiBhbGwgc2VsZWN0IDEnOyBFTkQ7CiskJAorTEFOR1VBR0UgcGxwZ3NxbCBJTU1V VEFCTEU7CitDUkVBVEUgVEFCTEUgdGNhc3QwKGEgSU5ULCBiIGludCk7CitJTlNFUlQgSU5UTyB0 Y2FzdDAgVkFMVUVTKDEsMiksICg2NTUzNiwzKTsKK1NFVCBqaXRfYWJvdmVfY29zdCA9IDA7CitT RUxFQ1QgQ0FTVChhIEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZS T00gdGNhc3QwOworIGEgCistLS0KKyAxCisgIAorKDIgcm93cykKKworU0VUIGppdF9hYm92ZV9j b3N0IFRPIERFRkFVTFQ7CitTRUxFQ1QgQ0FTVChhIEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QwOworIGEgCistLS0KKyAxCisgIAorKDIgcm93cykK KworU0VMRUNUIENBU1QoUk9XKDEsMikgQVMgdGNhc3QwIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBGUk9NIHRjYXN0MCBhcyB0OworRVJST1I6ICBjYW5ub3QgY2FzdCB0eXBlIHJl Y29yZCB0byB0Y2FzdDAgd2hlbiBERUZBVUxUIGV4cHJlc3Npb24gaXMgc3BlY2lmaWVkIGluIENB U1QgLi4uIE9OIENPTlZFUlNJT04gRVJST1IKK0xJTkUgMTogU0VMRUNUIENBU1QoUk9XKDEsMikg QVMgdGNhc3QwIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSLi4uCisgICAgICAgICAgICAg ICAgICAgIF4KK0RFVEFJTDogIEV4cGxpY2l0IGNhc3QgaXMgZGVmaW5lZCBidXQgZGVmaW5pdGlv biBpcyBub3QgZXJyb3Igc2FmZS4KK0RST1AgVEFCTEUgdGNhc3QwOworU0VMRUNUIENBU1QoMTIu MTExIGFzIG51bWVyaWMoMTAsMSkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX251bWVyaWNfc2NhbGU7CisgdG9fbnVtZXJpY19zY2FsZSAKKy0tLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgIDEyLjEKKygxIHJvdykKKworQ1JFQVRFIFRBQkxFIHRjYXN0KGEgdGV4 dFtdLCBiIGludCBHRU5FUkFURUQgQlkgREVGQVVMVCBBUyBJREVOVElUWSk7CitJTlNFUlQgSU5U TyB0Y2FzdCBWQUxVRVMgKCd7MTJ9JyksICgnezEsYSwgYn0nKSwgKCd7ezEsMn0sIHtjLGR9fScp LCAoJ3sxM30nKTsKK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCByZXRfc2V0aW50KCkg T04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDsgLS0gZXJyb3IKK0VSUk9SOiAgc2V0LXJl dHVybmluZyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIENBU1QgREVGQVVMVCBleHByZXNz aW9ucworTElORSAxOiBTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgcmV0X3NldGludCgp IE9OIENPTlZFUlNJT04gRVIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KK1NFTEVDVCBDQVNUKHQgQVMgdGV4dFtdIERFRkFVTFQgJ3syMSwyMiwgJyB8fCBiIHx8 ICd9JyBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0IGFzIHQ7CisgICAgIHQgICAgIAor LS0tLS0tLS0tLS0KKyB7MjEsMjIsMX0KKyB7MjEsMjIsMn0KKyB7MjEsMjIsM30KKyB7MjEsMjIs NH0KKyg0IHJvd3MpCisKK1NFTEVDVCBDQVNUKHQuYSBBUyBpbnRbXSBERUZBVUxUICd7MjEsMjJ9 Jzo6aW50W10gfHwgYiBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0IGFzIHQ7CisgICAg IGEgICAgIAorLS0tLS0tLS0tLS0KKyB7MTJ9CisgezIxLDIyLDJ9CisgezIxLDIyLDN9CisgezEz fQorKDQgcm93cykKKworLS0gVGVzdCBuZXN0ZWQgdHlwZSBjYXN0czsgYWxsIGV4cHJlc3Npb25z IHdpbGwgYmUgZXZhbHVhdGVkIGluIGFuIGVycm9yLXNhZmUgbWFubmVyCitDUkVBVEUgRE9NQUlO IGRfbm90YSBBUyB0ZXh0IENIRUNLIChWQUxVRSA8PiAnYScpOworQ1JFQVRFIFRBQkxFIHRjYXN0 MShhIHRleHQsIGIgdGV4dFtdLCBjIGludCwgZCBpbnQ4LCBlIGludDhbXSk7CitJTlNFUlQgSU5U TyB0Y2FzdDEoYSwgYiwgZCwgZSkgdmFsdWVzKCdhJywgJ3thfScsIDIxNDc0ODM2NDgsICd7MjE0 NzQ4MzY0OH0nKTsKK1NFTEVDVCBDQVNUIChDQVNUKGEgQVMgaW50KSBBUyB0ZXh0IERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKKyBhIAorLS0tCisgCisoMSBy b3cpCisKK1NFTEVDVCBDQVNUIChDQVNUKCdhJyBBUyBpbnQpIEFTIHRleHQgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOyAgLS0gZXJyb3IKK0VSUk9SOiAgaW52 YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogImEiCitMSU5FIDE6IFNFTEVDVCBD QVNUIChDQVNUKCdhJyBBUyBpbnQpIEFTIHRleHQgREVGQVVMVCBOVUxMIE9OIENPTlZFUi4uLgor ICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgQ0FTVCAoQ0FTVCgnYSc6OnRleHQg QVMgaW50KSBBUyB0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRj YXN0MTsgLS0gb2sKKyB0ZXh0IAorLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUIChD QVNUKGEgQVMgZF9ub3RhKSBBUyB0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBGUk9NIHRjYXN0MTsKKyBhIAorLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUIChDQVNU KCdhJyBBUyBkX25vdGEpIEFTIHRleHQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IEZST00gdGNhc3QxOworIHRleHQgCistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1Qg KENBU1QoZCBBUyBpbnQpIEFTIHRleHQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IEZST00gdGNhc3QxOworIGQgCistLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QgKENBU1Qo JzIxNDc0ODM2NDgnOjppbnQ4IEFTIGludCkgQVMgdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CisgdGV4dCAKKy0tLS0tLQorIAorKDEgcm93KQorCitT RUxFQ1QgQ0FTVCAoQ0FTVCgne2F9Jzo6dGV4dFtdIEFTIGludFtdKSBBUyB0ZXh0W10gREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOworIHRleHQgCistLS0tLS0K KyAKKygxIHJvdykKKworU0VMRUNUIENBU1QgKENBU1QoYiBBUyBpbnRbXSkgQVMgdGV4dFtdIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKKyBiIAorLS0tCisg CisoMSByb3cpCisKK1NFTEVDVCBDQVNUIChDQVNUKGIgQVMgZF9ub3RhW10pIEFTIHRleHRbXSBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CisgYiAKKy0tLQor IAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCAoQ0FTVChlIEFTIGludFtdKSBBUyB0ZXh0W10gREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOworIGUgCistLS0KKyAK KygxIHJvdykKKworLS0gdGVzdCBldmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3IgaGFuZGxl IG5lc3RlZCBBcnJheUNvZXJjZUV4cHIKK1NFTEVDVCBDQVNUKCd7YX0nOjp0ZXh0W10gQVMgaW50 W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOworIGludDQg CistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoQ0FTVCgne2F9Jzo6dGV4dFtdIEFT IGRhdGVbXSkgQVMgaW50W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00g dGNhc3QxOworIGludDQgCistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoKCd7JyB8 fCBzdW0oMSArIDIpIHx8ICd9Jyk6OmludFtdIEFTIGludFtdIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBGUk9NIChWQUxVRVMgKDEpLCAoMikpIHN1YjsKKyBpbnQ0IAorLS0tLS0t CisgezZ9CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCgneycgfHwgc3VtKDEgKyAyKSBPVkVSICgp IHx8ICd9Jyk6OmludFtdIEFTIGludFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBGUk9NIChWQUxVRVMgKDEpLCAoMikpIHN1YjsKKyBpbnQ0IAorLS0tLS0tCisgezZ9CisgezZ9 CisoMiByb3dzKQorCistLSB0ZXN0IHdpdGggdXNlci1kZWZpbmVkIHR5cGUsIGRvbWFpbiwgYXJy YXkgb3ZlciBkb21haW4sIGRvbWFpbiBvdmVyIGFycmF5CitDUkVBVEUgRE9NQUlOIGRfaW50NDIg YXMgaW50IGNoZWNrICh2YWx1ZSA9IDQyKSBOT1QgTlVMTDsKK0NSRUFURSBET01BSU4gZF9pbnQ0 MmFyciBhcyBkX2ludDQyW107CitDUkVBVEUgRE9NQUlOIGRfaW50NDJhcnIxIGFzIGRfaW50NDJh cnI7CitDUkVBVEUgRE9NQUlOIGRfaW50OCBhcyBpbnQ4IGNoZWNrICh2YWx1ZSA+IDApOworQ1JF QVRFIERPTUFJTiBkX2ludDhhcnIgYXMgZF9pbnQ4W107CitDUkVBVEUgRE9NQUlOIGRfY2hhcjNf bm90X251bGwgYXMgY2hhcigzKSBOT1QgTlVMTDsKK0NSRUFURSBET01BSU4gZF92YXJjaGFyIGFz IHZhcmNoYXIoMykgTk9UIE5VTEw7CitDUkVBVEUgRE9NQUlOIGRfaW50X2FyciBhcyBpbnRbXSBj aGVjayAodmFsdWUgPSAnezQxLCA0M30nKSBOT1QgTlVMTDsKK0NSRUFURSBUWVBFIGNvbXBfZG9t YWluX3dpdGhfdHlwbW9kIEFTIChhIGRfY2hhcjNfbm90X251bGwsIGIgaW50KTsKK0NSRUFURSBU WVBFIGNvbXAyIEFTIChhIGRfdmFyY2hhcik7CitDUkVBVEUgRE9NQUlOIGRfbnVtZXJpYyBhcyBu dW1lcmljKDQsNCk7CitTRUxFQ1QgQ0FTVCgxLjA6OmZsb2F0NCBBUyBkX251bWVyaWMgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIGRfbnVtZXJpYyAKKy0tLS0tLS0tLS0tCisg ICAgICAgICAgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCd7MS4wfScgQVMgbnVtZXJpYyg0LDEp W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIG51bWVyaWMgCistLS0tLS0t LS0KKyB7MS4wfQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnezAuMSwgMS4wfScgQVMgZF9udW1l cmljW10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIGRfbnVtZXJpYyAKKy0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKDExIEFTIGRfaW50NDIgREVGQVVM VCA0MSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK0VSUk9SOiAgdmFsdWUgZm9yIGRv bWFpbiBkX2ludDQyIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgImRfaW50NDJfY2hlY2siCitT RUxFQ1QgQ0FTVChOVUxMIEFTIGRfaW50NDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOyAtLSBlcnJvcgorRVJST1I6ICBkb21haW4gZF9pbnQ0MiBkb2VzIG5vdCBhbGxvdyBudWxs IHZhbHVlcworU0VMRUNUIENBU1QoMTEgQVMgZF9pbnQ0MiBERUZBVUxUIDQyIE9OIENPTlZFUlNJ T04gRVJST1IpOworIGRfaW50NDIgCistLS0tLS0tLS0KKyAgICAgIDQyCisoMSByb3cpCisKK1NF TEVDVCBDQVNUKE5VTEwgQVMgZF9pbnQ0MiBERUZBVUxUIDQyIE9OIENPTlZFUlNJT04gRVJST1Ip OworIGRfaW50NDIgCistLS0tLS0tLS0KKyAgICAgIDQyCisoMSByb3cpCisKK1NFTEVDVCBDQVNU KEFSUkFZWzQyXTo6ZF9pbnQ0MmFycjEgQVMgZF9pbnQ4IERFRkFVTFQgJzEnIE9OIENPTlZFUlNJ T04gRVJST1IpOworIGFycmF5IAorLS0tLS0tLQorICAgICAxCisoMSByb3cpCisKK1NFTEVDVCBD QVNUKEFSUkFZWzQyXTo6ZF9pbnQ0MmFycjEgQVMgZF9pbnQ4W10gREVGQVVMVCAnezF9JyBPTiBD T05WRVJTSU9OIEVSUk9SKTsKKyBhcnJheSAKKy0tLS0tLS0KKyB7NDJ9CisoMSByb3cpCisKK1NF TEVDVCBDQVNUKEFSUkFZWzQyXTo6ZF9pbnQ0MmFycjEgQVMgZF9pbnQ4YXJyIERFRkFVTFQgJ3sx fScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgYXJyYXkgCistLS0tLS0tCisgezQyfQorKDEgcm93 KQorCitTRUxFQ1QgQ0FTVChBUlJBWVs0Ml06OmRfaW50NDJhcnIxIEFTIGRfaW50OGFycltdIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBhcnJheSAKKy0tLS0tLS0KKyAKKygx IHJvdykKKworU0VMRUNUIENBU1QoQVJSQVlbNDIsNDFdIEFTIGRfaW50NDJbXSBERUZBVUxUICd7 NDIsIDQyfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgIGFycmF5ICAKKy0tLS0tLS0tLQorIHs0 Miw0Mn0KKygxIHJvdykKKworU0VMRUNUIENBU1QoQVJSQVlbNDIsNDFdIEFTIGRfaW50X2FyciBE RUZBVUxUICd7NDEsIDQzfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgIGFycmF5ICAKKy0tLS0t LS0tLQorIHs0MSw0M30KKygxIHJvdykKKworU0VMRUNUIENBU1QoQVJSQVlbNDIsIDQxXTo6ZF9p bnQ0MmFycjEgQVMgZF9pbnQ4YXJyIERFRkFVTFQgJ3sxLDIsM30nIE9OIENPTlZFUlNJT04gRVJS T1IpOworICBhcnJheSAgCistLS0tLS0tLS0KKyB7MSwyLDN9CisoMSByb3cpCisKK1NFTEVDVCBD QVNUKEFSUkFZWzQyLCA0MV0gQVMgZF9pbnQ0MmFycjEgREVGQVVMVCAnezQyLCA0Mn0nIE9OIENP TlZFUlNJT04gRVJST1IpOworICBhcnJheSAgCistLS0tLS0tLS0KKyB7NDIsNDJ9CisoMSByb3cp CisKK1NFTEVDVAorICAgIENBU1QoQ0FTVChBUlJBWVtDQVNUKEFSUkFZWzQyLCA0Ml0gQVMgZF9p bnQ0MmFycildIEFTIGRfaW50NDJhcnIxW10pIEFTIGRfaW50OGFycltdIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICBhcnJheSAgICAKKy0tLS0tLS0tLS0tLS0KKyB7Ins0 Miw0Mn0ifQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnKE5VTEwpJyBBUyBjb21wMiBERUZBVUxU ICcoMTIzMiknIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorRVJST1I6ICB2YWx1ZSB0 b28gbG9uZyBmb3IgdHlwZSBjaGFyYWN0ZXIgdmFyeWluZygzKQorTElORSAxOiBTRUxFQ1QgQ0FT VCgnKE5VTEwpJyBBUyBjb21wMiBERUZBVUxUICcoMTIzMiknIE9OIENPTlZFUlNJT04uLi4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgQ0FT VCgnKE5VTEwpJyBBUyBjb21wMiBERUZBVUxUICcoMTIzKScgT04gQ09OVkVSU0lPTiBFUlJPUik7 CisgY29tcDIgCistLS0tLS0tCisgKDEyMykKKygxIHJvdykKKworU0VMRUNUIENBU1QoJygsNDIp JyBBUyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUik7CisgY29tcF9kb21haW5fd2l0aF90eXBtb2QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcoTlVMTCw0MiknIEFTIGNvbXBfZG9tYWlu X3dpdGhfdHlwbW9kIERFRkFVTFQgJygxLDIpJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBjb21w X2RvbWFpbl93aXRoX3R5cG1vZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoIjEgICIs MikKKygxIHJvdykKKworU0VMRUNUIENBU1QoJyhOVUxMLDQyKScgQVMgY29tcF9kb21haW5fd2l0 aF90eXBtb2QgREVGQVVMVCAnKDEyMzQsMiknIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJv cgorRVJST1I6ICB2YWx1ZSB0b28gbG9uZyBmb3IgdHlwZSBjaGFyYWN0ZXIoMykKK0xJTkUgMTog Li4uU1QoJyhOVUxMLDQyKScgQVMgY29tcF9kb21haW5fd2l0aF90eXBtb2QgREVGQVVMVCAnKDEy MzQsMiknLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorU0VMRUNUIENBU1QoUk9XKE5VTEwsNDIpIEFTIGNvbXBfZG9tYWlu X3dpdGhfdHlwbW9kIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IK K0VSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSByZWNvcmQgdG8gY29tcF9kb21haW5fd2l0aF90eXBt b2Qgd2hlbiBERUZBVUxUIGV4cHJlc3Npb24gaXMgc3BlY2lmaWVkIGluIENBU1QgLi4uIE9OIENP TlZFUlNJT04gRVJST1IKK0xJTkUgMTogU0VMRUNUIENBU1QoUk9XKE5VTEwsNDIpIEFTIGNvbXBf ZG9tYWluX3dpdGhfdHlwbW9kIERFRkFVTFQgLi4uCisgICAgICAgICAgICAgICAgICAgIF4KK0RF VEFJTDogIEV4cGxpY2l0IGNhc3QgaXMgZGVmaW5lZCBidXQgZGVmaW5pdGlvbiBpcyBub3QgZXJy b3Igc2FmZS4KKy0tIHRlc3QgYXJyYXkgY29lcmNlCitTRUxFQ1QgQ0FTVChhcnJheVsnYSc6OnRl eHRdIEFTIGludFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBhcnJheSAK Ky0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoYXJyYXlbJ2EnXSBBUyBpbnRbXSBE RUZBVUxUIEFSUkFZWzFdIE9OIENPTlZFUlNJT04gRVJST1IpOworIGFycmF5IAorLS0tLS0tLQor IHsxfQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVChhcnJheVsxMS4xMl0gQVMgZGF0ZVtdIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBhcnJheSAKKy0tLS0tLS0KKyAKKygxIHJv dykKKworU0VMRUNUIENBU1QoYXJyYXlbMTExMTExMTExMTExMTExMTFdIEFTIGludFtdIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBhcnJheSAKKy0tLS0tLS0KKyAKKygxIHJv dykKKworU0VMRUNUIENBU1QoYXJyYXlbWydhYmMnXSxbNDU2XV0gQVMgaW50W10gREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIGFycmF5IAorLS0tLS0tLQorIAorKDEgcm93KQor CitTRUxFQ1QgQ0FTVCgnezEyMyxhYmMsNDU2fScgQVMgaW50W10gREVGQVVMVCAney03ODl9JyBP TiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgaW50NCAgCistLS0tLS0tLQorIHstNzg5fQorKDEgcm93 KQorCitTRUxFQ1QgQ0FTVCgnezIzNCxkZWYsNTY3fSc6OnRleHRbXSBBUyBpbnRlZ2VyW10gREVG QVVMVCAney0xMDExfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgIGludDQgICAKKy0tLS0tLS0t LQorIHstMTAxMX0KKygxIHJvdykKKworU0VMRUNUIENBU1QoQVJSQVlbWycxJ10sIFsndGhyZWUn XSxbJ2EnXV0gQVMgaW50W10gREVGQVVMVCAnezEsMn0nIE9OIENPTlZFUlNJT04gRVJST1IpOwor IGFycmF5IAorLS0tLS0tLQorIHsxLDJ9CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKEFSUkFZW1sn MScsICcyJ10sIFsndGhyZWUnLCAnYSddXSBBUyBpbnRbXSBERUZBVUxUICd7MjEsMjJ9JyBPTiBD T05WRVJTSU9OIEVSUk9SKTsKKyAgYXJyYXkgIAorLS0tLS0tLS0tCisgezIxLDIyfQorKDEgcm93 KQorCistLSBlcnJvcjogYHRocmVlJzo6aW50YCB3aWxsIGZhaWwgZWFybGllcgorU0VMRUNUIENB U1QoQVJSQVlbWycxJywgJzInXSwgWyd0aHJlZSc6OmludCwgJ2EnXV0gQVMgaW50W10gREVGQVVM VCAnezIxLDIyfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitFUlJPUjogIGludmFsaWQgaW5wdXQg c3ludGF4IGZvciB0eXBlIGludGVnZXI6ICJ0aHJlZSIKK0xJTkUgMTogU0VMRUNUIENBU1QoQVJS QVlbWycxJywgJzInXSwgWyd0aHJlZSc6OmludCwgJ2EnXV0gQVMgaW50W10gLi4uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgQ0FTVChBUlJBWVsxLCAn dGhyZWUnOjppbnRdIEFTIGludFtdIERFRkFVTFQgJ3syMSwyMn0nIE9OIENPTlZFUlNJT04gRVJS T1IpOworRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAidGhy ZWUiCitMSU5FIDE6IFNFTEVDVCBDQVNUKEFSUkFZWzEsICd0aHJlZSc6OmludF0gQVMgaW50W10g REVGQVVMVCAnezIxLDIyfS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBz YWZlIGNhc3Qgd2l0aCBnZW9tZXRyeSBkYXRhIHR5cGUKK1NFTEVDVCBDQVNUKCcoMSwyKSc6OnBv aW50IEFTIGJveCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgIGJveCAg ICAgCistLS0tLS0tLS0tLS0tCisgKDEsMiksKDEsMikKKygxIHJvdykKKworU0VMRUNUIENBU1Qo J1soTmFOLDEpLChOYU4saW5maW5pdHkpXSc6OmxzZWcgQVMgcG9pbnQgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpOworICAgICBwb2ludCAgICAgIAorLS0tLS0tLS0tLS0tLS0tLQor IChOYU4sSW5maW5pdHkpCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCdbKDFlKzMwMCxJbmZpbml0 eSksKDFlKzMwMCxJbmZpbml0eSldJzo6bHNlZyBBUyBwb2ludCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUik7CisgICAgICAgcG9pbnQgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t CisgKDFlKzMwMCxJbmZpbml0eSkKKygxIHJvdykKKworU0VMRUNUIENBU1QoJ1soMSwyKSwoMyw0 KV0nOjpwYXRoIGFzIHBvbHlnb24gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOwor IHBvbHlnb24gCistLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJyhOYU4sMS4w LE5hTixpbmZpbml0eSknOjpib3ggQVMgcG9pbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpOworICAgICBwb2ludCAgICAgIAorLS0tLS0tLS0tLS0tLS0tLQorIChOYU4sSW5maW5p dHkpCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcoMi4wLDIuMCwwLjAsMC4wKSc6OmJveCBBUyBs c2VnIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgbHNlZyAgICAgIAor LS0tLS0tLS0tLS0tLS0tCisgWygyLDIpLCgwLDApXQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgn KDIuMCwyLjAsMC4wLDAuMCknOjpib3ggQVMgcG9seWdvbiBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CisgICAgICAgICAgcG9seWdvbiAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICgoMCwwKSwoMCwyKSwoMiwyKSwoMiwwKSkKKygxIHJvdykKKworU0VM RUNUIENBU1QoJygyLjAsMi4wLDAuMCwwLjApJzo6Ym94IEFTIHBhdGggREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpOworIHBhdGggCistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNU IENBU1QoJygyLjAsaW5maW5pdHksTmFOLGluZmluaXR5KSc6OmJveCBBUyBjaXJjbGUgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICAgICBjaXJjbGUgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIDwoTmFOLEluZmluaXR5KSxOYU4+CisoMSByb3cpCisKK1NF TEVDVCBDQVNUKCcoTmFOLDAuMCksKDIuMCw0LjApLCgwLjAsaW5maW5pdHkpJzo6cG9seWdvbiBB UyBwb2ludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgIHBvaW50ICAg ICAgCistLS0tLS0tLS0tLS0tLS0tCisgKE5hTixJbmZpbml0eSkKKygxIHJvdykKKworU0VMRUNU IENBU1QoJygyLjAsMC4wKSwoMi4wLDQuMCksKDAuMCwwLjApJzo6cG9seWdvbiBBUyBwYXRoIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgICAgcGF0aCAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKCgyLDApLCgyLDQpLCgwLDApKQorKDEgcm93KQorCitT RUxFQ1QgQ0FTVCgnKDIuMCwwLjApLCgyLjAsNC4wKSwoMC4wLDAuMCknOjpwb2x5Z29uIEFTIGJv eCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgIGJveCAgICAgCistLS0t LS0tLS0tLS0tCisgKDIsNCksKDAsMCkKKygxIHJvdykKKworU0VMRUNUIENBU1QoJyhOYU4saW5m aW5pdHkpLCgyLjAsNC4wKSwoMC4wLGluZmluaXR5KSc6OnBvbHlnb24gQVMgY2lyY2xlIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgICAgY2lyY2xlICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyA8KE5hTixJbmZpbml0eSksTmFOPgorKDEgcm93KQorCitT RUxFQ1QgQ0FTVCgnPCg1LDEpLDM+Jzo6Y2lyY2xlIEFTIHBvaW50IERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKTsKKyBwb2ludCAKKy0tLS0tLS0KKyAoNSwxKQorKDEgcm93KQorCitT RUxFQ1QgQ0FTVCgnPCgzLDUpLDA+Jzo6Y2lyY2xlIGFzIGJveCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUik7CisgICAgIGJveCAgICAgCistLS0tLS0tLS0tLS0tCisgKDMsNSksKDMs NSkKKygxIHJvdykKKworLS0gY2FzdCBmcm9tIHR5cGUgY2lyY2xlIHRvIHR5cGUgcG9seWdvbiBp cyBpbXBsZW1lbnRlZCBhcyBhbiBTUUwgZnVuY3Rpb24sIHdoaWNoIGNhbm5vdCBiZSBlcnJvci1z YWZlCitTRUxFQ1QgQ0FTVCgnPCgzLDUpLDA+Jzo6Y2lyY2xlIGFzIHBvbHlnb24gREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIHBvbHlnb24gCistLS0tLS0tLS0KKyAKKygxIHJv dykKKworLS0gU2FmZSB0eXBlIGNhc3Qgc3VwcG9ydHMgbW9uZXkgYXMgYSB0YXJnZXQgdHlwZSwg YnV0IG5vdCBhcyBhIHNvdXJjZSB0eXBlLgorU0VMRUNUIENBU1QoJzEyMzQ1Njc4OTAxMjM0NTY3 OCc6Om51bWVyaWMgQVMgTU9ORVkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOwor IG1vbmV5IAorLS0tLS0tLQorICAgICAgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcxMjM0NTY3 ODkwMTIzNDU2NzgnOjppbnQ4IEFTIE1PTkVZIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKTsKKyBtb25leSAKKy0tLS0tLS0KKyAgICAgIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgn MjE0NzQ4MzY0Nyc6OmludDQgQVMgTU9ORVkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOworICAgICAgIG1vbmV5ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorICQyLDE0Nyw0 ODMsNjQ3LjAwCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCctMjE0NzQ4MzY0OCc6OmludDQgQVMg TU9ORVkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICAgIG1vbmV5ICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgLSQyLDE0Nyw0ODMsNjQ4LjAwCisoMSByb3cp CisKK1NFTEVDVCBDQVNUKCctMCc6OmludDQgQVMgTU9ORVkgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpOworIG1vbmV5IAorLS0tLS0tLQorICQwLjAwCisoMSByb3cpCisKK1NFTEVD VCBDQVNUKE5VTEw6Om1vbmV5IEFTIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpOworRVJST1I6ICBjYW5ub3QgY2FzdCB0eXBlIG1vbmV5IHRvIG51bWVyaWMgd2hlbiBE RUZBVUxUIGV4cHJlc3Npb24gaXMgc3BlY2lmaWVkIGluIENBU1QgLi4uIE9OIENPTlZFUlNJT04g RVJST1IKK0xJTkUgMTogU0VMRUNUIENBU1QoTlVMTDo6bW9uZXkgQVMgbnVtZXJpYyBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPLi4uCisgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIEV4 cGxpY2l0IGNhc3QgaXMgZGVmaW5lZCBidXQgZGVmaW5pdGlvbiBpcyBub3QgZXJyb3Igc2FmZS4K K1NFTEVDVCBDQVNUKE5VTEw6Om1vbmV5W10gQVMgbnVtZXJpY1tdIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKTsKK0VSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSBtb25leVtdIHRvIG51 bWVyaWNbXSB3aGVuIERFRkFVTFQgZXhwcmVzc2lvbiBpcyBzcGVjaWZpZWQgaW4gQ0FTVCAuLi4g T04gQ09OVkVSU0lPTiBFUlJPUgorTElORSAxOiBTRUxFQ1QgQ0FTVChOVUxMOjptb25leVtdIEFT IG51bWVyaWNbXSBERUZBVUxUIE5VTEwgT04gQ09OVkUuLi4KKyAgICAgICAgICAgICAgICAgICAg XgorREVUQUlMOiAgRXhwbGljaXQgY2FzdCBpcyBkZWZpbmVkIGJ1dCBkZWZpbml0aW9uIGlzIG5v dCBlcnJvciBzYWZlLgorLS0gc2FmZSBjYXN0IGZyb20gYnl0ZWEgdHlwZSB0byBvdGhlciBkYXRh IHR5cGVzCitTRUxFQ1QgQ0FTVCAoJ1x4MTEyMjMzNDQ1NTY2Nzc4ODk5Jzo6Ynl0ZWEgQVMgaW50 OCBERUZBVUxUIDE5IE9OIENPTlZFUlNJT04gRVJST1IpOworIGludDggCistLS0tLS0KKyAgIDE5 CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCdceDEyMzQ1Njc4OUEnOjpieXRlYSBBUyBpbnQ0IERF RkFVTFQgMjAgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgaW50NCAKKy0tLS0tLQorICAgMjAKKygx IHJvdykKKworU0VMRUNUIENBU1QoJ1x4MTIzNDU2Jzo6Ynl0ZWEgQVMgaW50MiBERUZBVUxUIDIx IE9OIENPTlZFUlNJT04gRVJST1IpOworIGludDIgCistLS0tLS0KKyAgIDIxCisoMSByb3cpCisK K1NFTEVDVCBDQVNUKCdceDEyMzQ1Njc4OTBhYmNkZWYnOjpieXRlYSBBUyB1dWlkIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyB1dWlkIAorLS0tLS0tCisgCisoMSByb3cpCisK Ky0tIHNhZmUgY2FzdCBmcm9tIHV1aWQgdHlwZSB0byBvdGhlciBkYXRhIHR5cGVzCitTRUxFQ1Qg Q0FTVCgnNWIzNTM4MGEtNzE0My00OTEyLTliNTUtZjMyMjY5OWM2NzcwJzo6dXVpZCBBUyBieXRl YSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgICAgICAgICAgICBieXRl YSAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFx4NWIzNTM4MGE3MTQzNDkxMjliNTVmMzIyNjk5YzY3NzAKKygxIHJvdykKKworLS0gc2FmZSBj YXN0IGZyb20gYml0IHR5cGUgdG8gb3RoZXIgZGF0YSB0eXBlcworU0VMRUNUIENBU1QoJzExMTEx MTExMTEwMDAwMSc6OmJpdCgxMDApIEFTIElOVCBERUZBVUxUIDIyIE9OIENPTlZFUlNJT04gRVJS T1IpOworIGludDQgCistLS0tLS0KKyAgIDIyCisoMSByb3cpCisKK1NFTEVDVCBDQVNUICgnMTEx MTExMTExMTAwMDAxJzo6Yml0KDEwMCkgQVMgSU5UOCBERUZBVUxUIDIzIE9OIENPTlZFUlNJT04g RVJST1IpOworIGludDggCistLS0tLS0KKyAgIDIzCisoMSByb3cpCisKKy0tIHNhZmUgY2FzdCBm cm9tIHRleHQgdHlwZSB0byBvdGhlciBkYXRhIHR5cGVzCitzZWxlY3QgQ0FTVCgnYS5iLmMuZCc6 OnRleHQgYXMgcmVnY2xhc3MgZGVmYXVsdCBOVUxMIG9uIGNvbnZlcnNpb24gZXJyb3IpOworIHJl Z2NsYXNzIAorLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitDUkVBVEUgVEFCTEUgdGVzdF9zYWZl Y2FzdChjb2wwIHRleHQpOworSU5TRVJUIElOVE8gdGVzdF9zYWZlY2FzdChjb2wwKSBWQUxVRVMg KCc8dmFsdWU+b25lPC92YWx1ZScpOworU0VMRUNUIGNvbDAgYXMgdGV4dCwKKyAgICAgICBDQVNU KGNvbDAgQVMgcmVnY2xhc3MgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X3JlZ2NsYXNzLAorICAgICAgIENBU1QoY29sMCBBUyByZWdjbGFzcyBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgSVMgTlVMTCBhcyBleHBlY3RfdHJ1ZSwKKyAgICAgICBDQVNUKGNv bDAgQVMgImNoYXIiICBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fY2hh ciwKKyAgICAgICBDQVNUKGNvbDAgQVMgbmFtZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9fbmFtZQorRlJPTSB0ZXN0X3NhZmVjYXN0OworICAgICAgIHRleHQgICAgICAg IHwgdG9fcmVnY2xhc3MgfCBleHBlY3RfdHJ1ZSB8IHRvX2NoYXIgfCAgICAgIHRvX25hbWUgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisgPHZhbHVlPm9uZTwvdmFsdWUgfCAgICAgICAgICAg ICB8IHQgICAgICAgICAgIHwgPCAgICAgICB8IDx2YWx1ZT5vbmU8L3ZhbHVlCisoMSByb3cpCisK K1NFTEVDVCBDQVNUKCcxOTIuMTY4LjEueCcgYXMgaW5ldCBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CisgaW5ldCAKKy0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgn MTkyLjE2OC4xLjIvMzAnIGFzIGNpZHIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OworIGNpZHIgCistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJzIyOjAwOjVjOjA4 OjU1OjA4OjAxOjAyJzo6bWFjYWRkcjggYXMgbWFjYWRkciBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CisgbWFjYWRkciAKKy0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBzYWZl IGNhc3QgYmV0d2VlZW4gcmFuZ2UgZGF0YSB0eXBlcworU0VMRUNUIENBU1QoJ1sxLDJdJzo6aW50 NHJhbmdlIEFTIGludDRtdWx0aXJhbmdlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KTsKKyBpbnQ0bXVsdGlyYW5nZSAKKy0tLS0tLS0tLS0tLS0tLS0KKyB7WzEsMyl9CisoMSByb3cp CisKK1NFTEVDVCBDQVNUKCdbMSwyXSc6OmludDhyYW5nZSBBUyBpbnQ4bXVsdGlyYW5nZSBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgaW50OG11bHRpcmFuZ2UgCistLS0tLS0t LS0tLS0tLS0tCisge1sxLDMpfQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnWzEsMl0nOjpudW1y YW5nZSAgQVMgbnVtbXVsdGlyYW5nZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7 CisgbnVtbXVsdGlyYW5nZSAKKy0tLS0tLS0tLS0tLS0tLQorIHtbMSwyXX0KKygxIHJvdykKKwor U0VMRUNUIENBU1QoJ1staW5maW5pdHksaW5maW5pdHldJzo6ZGF0ZXJhbmdlIEFTIGRhdGVtdWx0 aXJhbmdlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgZGF0ZW11bHRp cmFuZ2UgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisge1staW5maW5pdHksaW5maW5p dHldfQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnWy1pbmZpbml0eSxpbmZpbml0eV0nOjp0c3Jh bmdlIEFTIHRzbXVsdGlyYW5nZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7Cisg ICAgICB0c211bHRpcmFuZ2UgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHtbLWlu ZmluaXR5LGluZmluaXR5XX0KKygxIHJvdykKKworU0VMRUNUIENBU1QoJ1staW5maW5pdHksaW5m aW5pdHldJzo6dHN0enJhbmdlIEFTIHRzdHptdWx0aXJhbmdlIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKTsKKyAgICAgdHN0em11bHRpcmFuZ2UgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisge1staW5maW5pdHksaW5maW5pdHldfQorKDEgcm93KQorCistLSBzYWZlIGNh c3QgYmV0d2VlZW4gbnVtZXJpYyBkYXRhIHR5cGVzCitDUkVBVEUgVEFCTEUgdGVzdF9zYWZlY2Fz dDEoCisgIGNvbDEgZmxvYXQ0LCBjb2wyIGZsb2F0OCwgY29sMyBudW1lcmljLCBjb2w0IG51bWVy aWNbXSwKKyAgY29sNSBpbnQyIGRlZmF1bHQgMzI3NjcsCisgIGNvbDYgaW50NCBkZWZhdWx0IDMy NzY4LAorICBjb2w3IGludDggZGVmYXVsdCA0Mjk0OTY3Mjk2KTsKK0lOU0VSVCBJTlRPIHRlc3Rf c2FmZWNhc3QxIFZBTFVFUygnMTEuMTIzNCcsICcxMS4xMjM0JywgJzkyMjMzNzIwMzY4NTQ3NzU4 MDgnLCAnezExLjEyMzR9Jzo6bnVtZXJpY1tdKTsKK0lOU0VSVCBJTlRPIHRlc3Rfc2FmZWNhc3Qx IFZBTFVFUygnaW5mJywgJ2luZicsICdpbmYnLCAnezExLjEyMzQsIDEyLCBpbmYsIE5hTn0nOjpu dW1lcmljW10pOworSU5TRVJUIElOVE8gdGVzdF9zYWZlY2FzdDEgVkFMVUVTKCctaW5mJywgJy1p bmYnLCAnLWluZicsICd7MTEuMTIzNCwgMTIsIC1pbmYsIE5hTn0nOjpudW1lcmljW10pOworSU5T RVJUIElOVE8gdGVzdF9zYWZlY2FzdDEgVkFMVUVTKCdOYU4nLCAnTmFOJywgJ05hTicsICd7MTEu MTIzNCwgMTIsIC1pbmYsIE5hTn0nOjpudW1lcmljW10pOworU0VMRUNUIGNvbDUgYXMgaW50MiwK KyAgICAgICBDQVNUKGNvbDUgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9faW50MiwKKyAgICAgICBDQVNUKGNvbDUgQVMgaW50NCBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50NCwKKyAgICAgICBDQVNUKGNvbDUgQVMgb2lkIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19vaWQsCisgICAgICAgQ0FTVChj b2w1IGFzIGludDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDgs CisgICAgICAgQ0FTVChjb2w1IGFzIGZsb2F0NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9fZmxvYXQ0LAorICAgICAgIENBU1QoY29sNSBhcyBmbG9hdDggREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAgICBDQVNUKGNvbDUg YXMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJp YywKKyAgICAgICBDQVNUKGNvbDUgYXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpY19zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MTsK KyBpbnQyICB8IHRvX2ludDIgfCB0b19pbnQ0IHwgdG9fb2lkIHwgdG9faW50OCB8IHRvX2Zsb2F0 NCB8IHRvX2Zsb2F0OCB8IHRvX251bWVyaWMgfCB0b19udW1lcmljX3NjYWxlIAorLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgMzI3NjcgfCAgIDMyNzY3IHwg ICAzMjc2NyB8ICAzMjc2NyB8ICAgMzI3NjcgfCAgICAgMzI3NjcgfCAgICAgMzI3NjcgfCAgICAg IDMyNzY3IHwgICAgICAgICAgMzI3NjcuMAorIDMyNzY3IHwgICAzMjc2NyB8ICAgMzI3NjcgfCAg MzI3NjcgfCAgIDMyNzY3IHwgICAgIDMyNzY3IHwgICAgIDMyNzY3IHwgICAgICAzMjc2NyB8ICAg ICAgICAgIDMyNzY3LjAKKyAzMjc2NyB8ICAgMzI3NjcgfCAgIDMyNzY3IHwgIDMyNzY3IHwgICAz Mjc2NyB8ICAgICAzMjc2NyB8ICAgICAzMjc2NyB8ICAgICAgMzI3NjcgfCAgICAgICAgICAzMjc2 Ny4wCisgMzI3NjcgfCAgIDMyNzY3IHwgICAzMjc2NyB8ICAzMjc2NyB8ICAgMzI3NjcgfCAgICAg MzI3NjcgfCAgICAgMzI3NjcgfCAgICAgIDMyNzY3IHwgICAgICAgICAgMzI3NjcuMAorKDQgcm93 cykKKworU0VMRUNUIGNvbDYgYXMgaW50NCwKKyAgICAgICBDQVNUKGNvbDYgQVMgaW50MiBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAgICAgICBDQVNUKGNv bDYgQVMgaW50NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50NCwK KyAgICAgICBDQVNUKGNvbDYgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyB0b19vaWQsCisgICAgICAgQ0FTVChjb2w2IGFzIGludDggREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDgsCisgICAgICAgQ0FTVChjb2w2IGFzIGZsb2F0NCBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0LAorICAgICAgIENB U1QoY29sNiBhcyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X2Zsb2F0OCwKKyAgICAgICBDQVNUKGNvbDYgYXMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDYgYXMgbnVtZXJp YygxMCwxKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpY19z Y2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MTsKKyBpbnQ0ICB8IHRvX2ludDIgfCB0b19pbnQ0IHwg dG9fb2lkIHwgdG9faW50OCB8IHRvX2Zsb2F0NCB8IHRvX2Zsb2F0OCB8IHRvX251bWVyaWMgfCB0 b19udW1lcmljX3NjYWxlIAorLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tCisgMzI3NjggfCAgICAgICAgIHwgICAzMjc2OCB8ICAzMjc2OCB8ICAgMzI3NjggfCAg ICAgMzI3NjggfCAgICAgMzI3NjggfCAgICAgIDMyNzY4IHwgICAgICAgICAgMzI3NjguMAorIDMy NzY4IHwgICAgICAgICB8ICAgMzI3NjggfCAgMzI3NjggfCAgIDMyNzY4IHwgICAgIDMyNzY4IHwg ICAgIDMyNzY4IHwgICAgICAzMjc2OCB8ICAgICAgICAgIDMyNzY4LjAKKyAzMjc2OCB8ICAgICAg ICAgfCAgIDMyNzY4IHwgIDMyNzY4IHwgICAzMjc2OCB8ICAgICAzMjc2OCB8ICAgICAzMjc2OCB8 ICAgICAgMzI3NjggfCAgICAgICAgICAzMjc2OC4wCisgMzI3NjggfCAgICAgICAgIHwgICAzMjc2 OCB8ICAzMjc2OCB8ICAgMzI3NjggfCAgICAgMzI3NjggfCAgICAgMzI3NjggfCAgICAgIDMyNzY4 IHwgICAgICAgICAgMzI3NjguMAorKDQgcm93cykKKworU0VMRUNUIGNvbDcgYXMgaW50OCwKKyAg ICAgICBDQVNUKGNvbDcgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9faW50MiwKKyAgICAgICBDQVNUKGNvbDcgQVMgaW50NCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgdG9faW50NCwKKyAgICAgICBDQVNUKGNvbDcgQVMgb2lkIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19vaWQsCisgICAgICAgQ0FTVChjb2w3 IGFzIGludDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDgsCisg ICAgICAgQ0FTVChjb2w3IGFzIGZsb2F0NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9fZmxvYXQ0LAorICAgICAgIENBU1QoY29sNyBhcyBmbG9hdDggREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAgICBDQVNUKGNvbDcgYXMg bnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywK KyAgICAgICBDQVNUKGNvbDcgYXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpY19zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MTsKKyAg ICBpbnQ4ICAgIHwgdG9faW50MiB8IHRvX2ludDQgfCB0b19vaWQgfCAgdG9faW50OCAgIHwgIHRv X2Zsb2F0NCAgfCB0b19mbG9hdDggIHwgdG9fbnVtZXJpYyB8IHRvX251bWVyaWNfc2NhbGUgCist LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQor IDQyOTQ5NjcyOTYgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8IDQyOTQ5NjcyOTYgfCA0 LjI5NDk3ZSswOSB8IDQyOTQ5NjcyOTYgfCA0Mjk0OTY3Mjk2IHwgICAgICAgICAgICAgICAgIAor IDQyOTQ5NjcyOTYgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8IDQyOTQ5NjcyOTYgfCA0 LjI5NDk3ZSswOSB8IDQyOTQ5NjcyOTYgfCA0Mjk0OTY3Mjk2IHwgICAgICAgICAgICAgICAgIAor IDQyOTQ5NjcyOTYgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8IDQyOTQ5NjcyOTYgfCA0 LjI5NDk3ZSswOSB8IDQyOTQ5NjcyOTYgfCA0Mjk0OTY3Mjk2IHwgICAgICAgICAgICAgICAgIAor IDQyOTQ5NjcyOTYgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8IDQyOTQ5NjcyOTYgfCA0 LjI5NDk3ZSswOSB8IDQyOTQ5NjcyOTYgfCA0Mjk0OTY3Mjk2IHwgICAgICAgICAgICAgICAgIAor KDQgcm93cykKKworU0VMRUNUIGNvbDMgYXMgbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDMgQVMg aW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAgICAg ICBDQVNUKGNvbDMgQVMgaW50NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg dG9faW50NCwKKyAgICAgICBDQVNUKGNvbDMgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyB0b19vaWQsCisgICAgICAgQ0FTVChjb2wzIGFzIGludDggREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDgsCisgICAgICAgQ0FTVChjb2wzIGFz IGZsb2F0NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0LAor ICAgICAgIENBU1QoY29sMyBhcyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAgICBDQVNUKGNvbDMgYXMgbnVtZXJpYyBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDMg YXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f bnVtZXJpY19zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MTsKKyAgICAgICBudW1lcmljICAgICAg IHwgdG9faW50MiB8IHRvX2ludDQgfCB0b19vaWQgfCB0b19pbnQ4IHwgIHRvX2Zsb2F0NCAgfCAg ICAgIHRvX2Zsb2F0OCAgICAgICB8ICAgICB0b19udW1lcmljICAgICAgfCB0b19udW1lcmljX3Nj YWxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgOTIyMzM3MjAzNjg1NDc3NTgwOCB8ICAg ICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8IDkuMjIzMzdlKzE4IHwgOS4yMjMz NzIwMzY4NTQ3OGUrMTggfCA5MjIzMzcyMDM2ODU0Nzc1ODA4IHwgICAgICAgICAgICAgICAgIAor ICAgICAgICAgICAgSW5maW5pdHkgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8ICAgICAg ICAgfCAgICBJbmZpbml0eSB8ICAgICAgICAgICAgIEluZmluaXR5IHwgICAgICAgICAgICBJbmZp bml0eSB8ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgLUluZmluaXR5IHwgICAgICAgICB8 ICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwgICAtSW5maW5pdHkgfCAgICAgICAgICAgIC1J bmZpbml0eSB8ICAgICAgICAgICAtSW5maW5pdHkgfCAgICAgICAgICAgICAgICAgCisgICAgICAg ICAgICAgICAgIE5hTiB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAg ICAgICAgTmFOIHwgICAgICAgICAgICAgICAgICBOYU4gfCAgICAgICAgICAgICAgICAgTmFOIHwg ICAgICAgICAgICAgIE5hTgorKDQgcm93cykKKworU0VMRUNUIGNvbDQgYXMgbnVtX2FyciwKKyAg ICAgICBDQVNUKGNvbDQgQVMgaW50MltdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyBpbnQyYXJyLAorICAgICAgIENBU1QoY29sNCBBUyBpbnQ0W10gREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIGludDRhcnIsCisgICAgICAgQ0FTVChjb2w0IGFzIGludDhb XSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgaW50OGFyciwKKyAgICAgICBD QVNUKGNvbDQgYXMgZmxvYXQ0W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IGY0YXJyLAorICAgICAgIENBU1QoY29sNCBhcyBmbG9hdDhbXSBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgZjhhcnIsCisgICAgICAgQ0FTVChjb2w0IGFzIG51bWVyaWMoMTAs MSlbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgbnVtYXJyCitGUk9NIHRl c3Rfc2FmZWNhc3QxOworICAgICAgICAgIG51bV9hcnIgICAgICAgICAgIHwgaW50MmFyciB8IGlu dDRhcnIgfCBpbnQ4YXJyIHwgICAgICAgICAgIGY0YXJyICAgICAgICAgICAgfCAgICAgICAgICAg ZjhhcnIgICAgICAgICAgICB8IG51bWFyciAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgezExLjEyMzR9ICAgICAg ICAgICAgICAgICAgfCB7MTF9ICAgIHwgezExfSAgICB8IHsxMX0gICAgfCB7MTEuMTIzNH0gICAg ICAgICAgICAgICAgICB8IHsxMS4xMjM0fSAgICAgICAgICAgICAgICAgIHwgezExLjF9CisgezEx LjEyMzQsMTIsSW5maW5pdHksTmFOfSAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCB7 MTEuMTIzNCwxMixJbmZpbml0eSxOYU59ICB8IHsxMS4xMjM0LDEyLEluZmluaXR5LE5hTn0gIHwg CisgezExLjEyMzQsMTIsLUluZmluaXR5LE5hTn0gfCAgICAgICAgIHwgICAgICAgICB8ICAgICAg ICAgfCB7MTEuMTIzNCwxMiwtSW5maW5pdHksTmFOfSB8IHsxMS4xMjM0LDEyLC1JbmZpbml0eSxO YU59IHwgCisgezExLjEyMzQsMTIsLUluZmluaXR5LE5hTn0gfCAgICAgICAgIHwgICAgICAgICB8 ICAgICAgICAgfCB7MTEuMTIzNCwxMiwtSW5maW5pdHksTmFOfSB8IHsxMS4xMjM0LDEyLC1JbmZp bml0eSxOYU59IHwgCisoNCByb3dzKQorCitTRUxFQ1QgY29sMSBhcyBmbG9hdDQsCisgICAgICAg Q0FTVChjb2wxIEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X2ludDIsCisgICAgICAgQ0FTVChjb2wxIEFTIGludDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX2ludDQsCisgICAgICAgQ0FTVChjb2wxIEFTIG9pZCBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fb2lkLAorICAgICAgIENBU1QoY29sMSBhcyBp bnQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4LAorICAgICAg IENBU1QoY29sMSBhcyBmbG9hdDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX2Zsb2F0NCwKKyAgICAgICBDQVNUKGNvbDEgYXMgZmxvYXQ4IERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChjb2wxIGFzIG51bWVy aWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWMsCisgICAg ICAgQ0FTVChjb2wxIGFzIG51bWVyaWMoMTAsMSkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX251bWVyaWNfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDE7CisgIGZsb2F0 NCAgIHwgdG9faW50MiB8IHRvX2ludDQgfCB0b19vaWQgfCB0b19pbnQ4IHwgdG9fZmxvYXQ0IHwg ICAgdG9fZmxvYXQ4ICAgICB8IHRvX251bWVyaWMgfCB0b19udW1lcmljX3NjYWxlIAorLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgIDEx LjEyMzQgfCAgICAgIDExIHwgICAgICAxMSB8ICAgICAgICB8ICAgICAgMTEgfCAgIDExLjEyMzQg fCAxMS4xMjMzOTk3MzQ0OTcxIHwgICAgMTEuMTIzNCB8ICAgICAgICAgICAgIDExLjEKKyAgSW5m aW5pdHkgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAgSW5maW5pdHkg fCAgICAgICAgIEluZmluaXR5IHwgICBJbmZpbml0eSB8ICAgICAgICAgICAgICAgICAKKyAtSW5m aW5pdHkgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAtSW5maW5pdHkg fCAgICAgICAgLUluZmluaXR5IHwgIC1JbmZpbml0eSB8ICAgICAgICAgICAgICAgICAKKyAgICAg ICBOYU4gfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAgICAgICBOYU4g fCAgICAgICAgICAgICAgTmFOIHwgICAgICAgIE5hTiB8ICAgICAgICAgICAgICBOYU4KKyg0IHJv d3MpCisKK1NFTEVDVCBjb2wyIGFzIGZsb2F0OCwKKyAgICAgICBDQVNUKGNvbDIgQVMgaW50MiBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAgICAgICBDQVNU KGNvbDIgQVMgaW50NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50 NCwKKyAgICAgICBDQVNUKGNvbDIgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b19vaWQsCisgICAgICAgQ0FTVChjb2wyIGFzIGludDggREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDgsCisgICAgICAgQ0FTVChjb2wyIGFzIGZsb2F0 NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0LAorICAgICAg IENBU1QoY29sMiBhcyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX2Zsb2F0OCwKKyAgICAgICBDQVNUKGNvbDIgYXMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDIgYXMgbnVt ZXJpYygxMCwxKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJp Y19zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MTsKKyAgZmxvYXQ4ICAgfCB0b19pbnQyIHwgdG9f aW50NCB8IHRvX29pZCB8IHRvX2ludDggfCB0b19mbG9hdDQgfCB0b19mbG9hdDggfCB0b19udW1l cmljIHwgdG9fbnVtZXJpY19zY2FsZSAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0KKyAgIDExLjEyMzQgfCAgICAgIDExIHwgICAgICAxMSB8ICAgICAg ICB8ICAgICAgMTEgfCAgIDExLjEyMzQgfCAgIDExLjEyMzQgfCAgICAxMS4xMjM0IHwgICAgICAg ICAgICAgMTEuMQorICBJbmZpbml0eSB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgICAg ICAgICB8ICBJbmZpbml0eSB8ICBJbmZpbml0eSB8ICAgSW5maW5pdHkgfCAgICAgICAgICAgICAg ICAgCisgLUluZmluaXR5IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwg LUluZmluaXR5IHwgLUluZmluaXR5IHwgIC1JbmZpbml0eSB8ICAgICAgICAgICAgICAgICAKKyAg ICAgICBOYU4gfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAgICAgICBO YU4gfCAgICAgICBOYU4gfCAgICAgICAgTmFOIHwgICAgICAgICAgICAgIE5hTgorKDQgcm93cykK KworLS0gc2FmZSB0eXBlIGNhc3QgZm9yIHR5cGUgZGF0ZS90aW1lc3RhbXAvdGltZXN0YW1wdHov aW50ZXJ2YWwKK0NSRUFURSBUQUJMRSB0ZXN0X3NhZmVjYXN0MigKKyAgY29sMCBkYXRlLCBjb2wx IHRpbWVzdGFtcCwgY29sMiB0aW1lc3RhbXB0eiwKKyAgY29sMyBpbnRlcnZhbCwgY29sNCB0aW1l LCBjb2w1IHRpbWV0eik7CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0MiBWQUxVRVMKKygnLWlu ZmluaXR5JywgJy1pbmZpbml0eScsICctaW5maW5pdHknLCAnLWluZmluaXR5JywKKyAgJzIwMDMt MDMtMDcgMTU6MzY6MzkgQW1lcmljYS9OZXdfWW9yaycsICcyMDAzLTA3LTA3IDE1OjM2OjM5IEFt ZXJpY2EvTmV3X1lvcmsnKSwKKygnLWluZmluaXR5JywgJ2luZmluaXR5JywgJ2luZmluaXR5Jywg J2luZmluaXR5JywgJzExOjU5OjU5Ljk5IFBNJywgJzExOjU5OjU5Ljk5IFBNIFBEVCcpOworU0VM RUNUIGNvbDAgYXMgZGF0ZSwKKyAgICAgICBDQVNUKGNvbDAgQVMgdGltZXN0YW1wdHogREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzdGFtcHR6LAorICAgICAgIENB U1QoY29sMCBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19k YXRlLAorICAgICAgIENBU1QoY29sMCBBUyB0aW1lIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKSBhcyB0b190aW1lcywKKyAgICAgICBDQVNUKGNvbDAgQVMgdGltZXR6IERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1ldHosCisgICAgICAgQ0FTVChjb2ww IEFTIHRpbWVzdGFtcCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f dGltZXN0YW1wX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QyOworICAgZGF0ZSAgICB8IHRvX3Rp bWVzdGFtcHR6IHwgIHRvX2RhdGUgIHwgdG9fdGltZXMgfCB0b190aW1ldHogfCB0b190aW1lc3Rh bXBfc2NhbGUgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAtaW5maW5pdHkgfCAtaW5m aW5pdHkgICAgICB8IC1pbmZpbml0eSB8ICAgICAgICAgIHwgICAgICAgICAgIHwgLWluZmluaXR5 CisgLWluZmluaXR5IHwgLWluZmluaXR5ICAgICAgfCAtaW5maW5pdHkgfCAgICAgICAgICB8ICAg ICAgICAgICB8IC1pbmZpbml0eQorKDIgcm93cykKKworU0VMRUNUIGNvbDEgYXMgdGltZXN0YW1w LAorICAgICAgIENBU1QoY29sMSBBUyB0aW1lc3RhbXB0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9fdGltZXN0YW1wdHosCisgICAgICAgQ0FTVChjb2wxIEFTIGRhdGUg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2RhdGUsCisgICAgICAgQ0FT VChjb2wxIEFTIHRpbWUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3Rp bWVzLAorICAgICAgIENBU1QoY29sMSBBUyB0aW1ldHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX3RpbWV0eiwKKyAgICAgICBDQVNUKGNvbDEgQVMgdGltZXN0YW1wKDIp IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXBfc2NhbGUK K0ZST00gdGVzdF9zYWZlY2FzdDI7CisgdGltZXN0YW1wIHwgdG9fdGltZXN0YW1wdHogfCAgdG9f ZGF0ZSAgfCB0b190aW1lcyB8IHRvX3RpbWV0eiB8IHRvX3RpbWVzdGFtcF9zY2FsZSAKKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLQorIC1pbmZpbml0eSB8IC1pbmZpbml0eSAgICAgIHwgLWlu ZmluaXR5IHwgICAgICAgICAgfCAgICAgICAgICAgfCAtaW5maW5pdHkKKyBpbmZpbml0eSAgfCBp bmZpbml0eSAgICAgICB8IGluZmluaXR5ICB8ICAgICAgICAgIHwgICAgICAgICAgIHwgaW5maW5p dHkKKygyIHJvd3MpCisKK1NFTEVDVCBjb2wyIGFzIHRpbWVzdGFtcHR6LAorICAgICAgIENBU1Qo Y29sMiBBUyB0aW1lc3RhbXB0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg dG9fdGltZXN0YW1wdHosCisgICAgICAgQ0FTVChjb2wyIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2RhdGUsCisgICAgICAgQ0FTVChjb2wyIEFTIHRpbWUg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzLAorICAgICAgIENB U1QoY29sMiBBUyB0aW1ldHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X3RpbWV0eiwKKyAgICAgICBDQVNUKGNvbDIgQVMgdGltZXN0YW1wKDIpIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXBfc2NhbGUKK0ZST00gdGVzdF9zYWZl Y2FzdDI7CisgdGltZXN0YW1wdHogfCB0b190aW1lc3RhbXB0eiB8ICB0b19kYXRlICB8IHRvX3Rp bWVzIHwgdG9fdGltZXR6IHwgdG9fdGltZXN0YW1wX3NjYWxlIAorLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAtaW5maW5pdHkgICB8IC1pbmZpbml0eSAgICAgIHwgLWluZmluaXR5IHwg ICAgICAgICAgfCAgICAgICAgICAgfCAtaW5maW5pdHkKKyBpbmZpbml0eSAgICB8IGluZmluaXR5 ICAgICAgIHwgaW5maW5pdHkgIHwgICAgICAgICAgfCAgICAgICAgICAgfCBpbmZpbml0eQorKDIg cm93cykKKworU0VMRUNUIGNvbDMgYXMgaW50ZXJ2YWwsCisgICAgICAgQ0FTVChjb2wzIEFTIHRp bWVzdGFtcHR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3Rh bXB0eiwKKyAgICAgICBDQVNUKGNvbDMgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgYXMgdG9fZGF0ZSwKKyAgICAgICBDQVNUKGNvbDMgQVMgdGltZSBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXMsCisgICAgICAgQ0FTVChjb2wzIEFT IHRpbWV0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXR6LAor ICAgICAgIENBU1QoY29sMyBBUyB0aW1lc3RhbXAoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX3RpbWVzdGFtcF9zY2FsZSwKKyAgICAgICBDQVNUKGNvbDMgQVMgaW50 ZXJ2YWwoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludGVydmFs X3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QyOworIGludGVydmFsICB8IHRvX3RpbWVzdGFtcHR6 IHwgdG9fZGF0ZSB8IHRvX3RpbWVzIHwgdG9fdGltZXR6IHwgdG9fdGltZXN0YW1wX3NjYWxlIHwg dG9faW50ZXJ2YWxfc2NhbGUgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0KKyAtaW5maW5pdHkgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAg ICB8ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8IC1pbmZpbml0eQorIGluZmluaXR5 ICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgIHwgICAg ICAgICAgICAgICAgICAgIHwgaW5maW5pdHkKKygyIHJvd3MpCisKK1NFTEVDVCBjb2w0IGFzIHRp bWUsCisgICAgICAgQ0FTVChjb2w0IEFTIHRpbWUoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX3RpbWVzLAorICAgICAgIENBU1QoY29sNCBBUyB0aW1ldHogREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIElTIE5PVCBOVUxMIGFzIHRvX3RpbWV0eiwKKyAg ICAgICBDQVNUKGNvbDQgQVMgaW50ZXJ2YWwoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX2ludGVydmFsLAorICAgICAgIENBU1QoY29sNCBBUyBpbnRlcnZhbCgyKSBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50ZXJ2YWxfc2NhbGUKK0ZS T00gdGVzdF9zYWZlY2FzdDI7CisgICAgdGltZSAgICAgfCAgdG9fdGltZXMgICB8IHRvX3RpbWV0 eiB8ICAgICAgICAgIHRvX2ludGVydmFsICAgICAgICAgIHwgICAgICAgdG9faW50ZXJ2YWxfc2Nh bGUgICAgICAgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgMTU6MzY6MzkgICAgfCAxNTozNjozOSAgICB8IHQgICAgICAgICB8IEAgMTUgaG91cnMgMzYg bWlucyAzOSBzZWNzICAgIHwgQCAxNSBob3VycyAzNiBtaW5zIDM5IHNlY3MKKyAyMzo1OTo1OS45 OSB8IDIzOjU5OjU5Ljk5IHwgdCAgICAgICAgIHwgQCAyMyBob3VycyA1OSBtaW5zIDU5Ljk5IHNl Y3MgfCBAIDIzIGhvdXJzIDU5IG1pbnMgNTkuOTkgc2VjcworKDIgcm93cykKKworU0VMRUNUIGNv bDUgYXMgdGltZXR6LAorICAgICAgIENBU1QoY29sNSBBUyB0aW1lIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lLAorICAgICAgIENBU1QoY29sNSBBUyB0aW1lKDIp IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lX3NjYWxlLAorICAg ICAgIENBU1QoY29sNSBBUyB0aW1ldHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IGFzIHRvX3RpbWV0eiwKKyAgICAgICBDQVNUKGNvbDUgQVMgdGltZXR6KDYpIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1ldHpfc2NhbGUsCisgICAgICAgQ0FTVChj b2w1IEFTIGludGVydmFsIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19p bnRlcnZhbCwKKyAgICAgICBDQVNUKGNvbDUgQVMgaW50ZXJ2YWwoMikgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludGVydmFsX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNh c3QyOworICAgICB0aW1ldHogICAgIHwgICB0b190aW1lICAgfCB0b190aW1lX3NjYWxlIHwgICB0 b190aW1ldHogICAgfCB0b190aW1ldHpfc2NhbGUgfCB0b19pbnRlcnZhbCB8IHRvX2ludGVydmFs X3NjYWxlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLQorIDE1OjM2OjM5LTA0ICAgIHwgMTU6MzY6MzkgICAgfCAxNTozNjozOSAgICAg IHwgMTU6MzY6MzktMDQgICAgfCAxNTozNjozOS0wNCAgICAgfCAgICAgICAgICAgICB8IAorIDIz OjU5OjU5Ljk5LTA3IHwgMjM6NTk6NTkuOTkgfCAyMzo1OTo1OS45OSAgIHwgMjM6NTk6NTkuOTkt MDcgfCAyMzo1OTo1OS45OS0wNyAgfCAgICAgICAgICAgICB8IAorKDIgcm93cykKKworQ1JFQVRF IFRBQkxFIHRlc3Rfc2FmZWNhc3QzKGNvbDAganNvbmIpOworSU5TRVJUIElOVE8gdGVzdF9zYWZl Y2FzdDMoY29sMCkgVkFMVUVTICgnInRlc3QiJyk7CitTRUxFQ1QgY29sMCBhcyBqc29uYiwKKyAg ICAgICBDQVNUKGNvbDAgQVMgaW50ZWdlciBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9faW50ZWdlciwKKyAgICAgICBDQVNUKGNvbDAgQVMgbnVtZXJpYyBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDAg QVMgYmlnaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4LAor ICAgICAgIENBU1QoY29sMCBBUyBmbG9hdDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAgICBDQVNUKGNvbDAgQVMgZmxvYXQ4IERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChjb2wwIEFT IGJvb2xlYW4gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Jvb2wsCisg ICAgICAgQ0FTVChjb2wwIEFTIHNtYWxsaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b19zbWFsbGludAorRlJPTSB0ZXN0X3NhZmVjYXN0MzsKKyBqc29uYiAgfCB0b19p bnRlZ2VyIHwgdG9fbnVtZXJpYyB8IHRvX2ludDggfCB0b19mbG9hdDQgfCB0b19mbG9hdDggfCB0 b19ib29sIHwgdG9fc21hbGxpbnQgCistLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LQorICJ0ZXN0IiB8ICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAg ICB8ICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgIAorKDEgcm93KQorCistLSB0ZXN0 IGRlcGFyc2UKK1NFVCBkYXRlc3R5bGUgVE8gSVNPLCBZTUQ7CitDUkVBVEUgVklFVyBzYWZlY2Fz dHZpZXcgQVMKK1NFTEVDVCBDQVNUKCcxMjM0JyBhcyBjaGFyKDMpIERFRkFVTFQgLTExMTEgT04g Q09OVkVSU0lPTiBFUlJPUiksCisgICAgICAgQ0FTVCgxIGFzIGRhdGUgREVGQVVMVCAoKCcyMDI1 LURlYy0wNic6OmRhdGUgKyByYW5kb20obWluPT4xLCBtYXg9PjE6OmludCkpKSBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyBjYXN0MCwKKyAgICAgICBDQVNUKEFSUkFZW1snMSddLCBbJ3RocmVlJ10s WydhJ11dIEFTIGludFtdIERFRkFVTFQgJ3sxLDJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBj YXN0MSwKKyAgICAgICBDQVNUKEFSUkFZW1snMScsICcyJ10sIFsndGhyZWUnLCAnYSddXSBBUyBk YXRlW10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGNhc3QyLAorICAgICAg IENBU1QoQVJSQVlbJ3RocmVlJ10gQVMgSU5UW10gREVGQVVMVCAnezEsMn0nIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIGNhc3QzOworXHN2IHNhZmVjYXN0dmlldworQ1JFQVRFIE9SIFJFUExBQ0Ug VklFVyBwdWJsaWMuc2FmZWNhc3R2aWV3IEFTCisgU0VMRUNUIENBU1QoJzEyMzQnIEFTIGNoYXJh Y3RlcigzKSBERUZBVUxUICctMTExMSc6OmludGVnZXI6OmNoYXJhY3RlcigzKSBPTiBDT05WRVJT SU9OIEVSUk9SKSBBUyBicGNoYXIsCisgICAgQ0FTVCgxIEFTIGRhdGUgREVGQVVMVCAnMjAyNS0x Mi0wNic6OmRhdGUgKyByYW5kb20obWluID0+IDEsIG1heCA9PiAxKSBPTiBDT05WRVJTSU9OIEVS Uk9SKSBBUyBjYXN0MCwKKyAgICBDQVNUKEFSUkFZW0FSUkFZWzFdLCBBUlJBWVsndGhyZWUnXSwg QVJSQVlbJ2EnXV0gQVMgaW50ZWdlcltdIERFRkFVTFQgJ3sxLDJ9Jzo6aW50ZWdlcltdIE9OIENP TlZFUlNJT04gRVJST1IpIEFTIGNhc3QxLAorICAgIENBU1QoQVJSQVlbQVJSQVlbJzEnLCAnMidd LCBBUlJBWVsndGhyZWUnLCAnYSddXSBBUyBkYXRlW10gREVGQVVMVCBOVUxMOjpkYXRlW10gT04g Q09OVkVSU0lPTiBFUlJPUikgQVMgY2FzdDIsCisgICAgQ0FTVChBUlJBWVsndGhyZWUnXSBBUyBp bnRlZ2VyW10gREVGQVVMVCAnezEsMn0nOjppbnRlZ2VyW10gT04gQ09OVkVSU0lPTiBFUlJPUikg QVMgY2FzdDMKK1NFTEVDVCAqIEZST00gc2FmZWNhc3R2aWV3OworIGJwY2hhciB8ICAgY2FzdDAg ICAgfCBjYXN0MSB8IGNhc3QyIHwgY2FzdDMgCistLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LSstLS0tLS0tKy0tLS0tLS0KKyAxMjMgICAgfCAyMDI1LTEyLTA3IHwgezEsMn0gfCAgICAgICB8 IHsxLDJ9CisoMSByb3cpCisKK0NSRUFURSBWSUVXIHNhZmVjYXN0dmlldzEgQVMKK1NFTEVDVCBD QVNUKEFSUkFZW1snMSddLCBbJ3RocmVlJ10sWydhJ11dIEFTIGRfaW50X2FycgorICAgICAgICAg ICAgREVGQVVMVCAnezQxLDQzfScgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgY2FzdDEsCisgICAg ICAgQ0FTVChBUlJBWVtbJzEnLCAnMicsIDEuMV0sIFsndGhyZWUnLCB0cnVlLCBCJzAxJ11dIEFT IGRfaW50X2FycgorICAgICAgICAgICAgREVGQVVMVCAnezQxLDQzfScgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgY2FzdDI7Citcc3Ygc2FmZWNhc3R2aWV3MQorQ1JFQVRFIE9SIFJFUExBQ0UgVklF VyBwdWJsaWMuc2FmZWNhc3R2aWV3MSBBUworIFNFTEVDVCBDQVNUKEFSUkFZW0FSUkFZWzFdLCBB UlJBWVsndGhyZWUnXSwgQVJSQVlbJ2EnXV0gQVMgZF9pbnRfYXJyIERFRkFVTFQgJ3s0MSw0M30n OjppbnRlZ2VyW106OmRfaW50X2FyciBPTiBDT05WRVJTSU9OIEVSUk9SKSBBUyBjYXN0MSwKKyAg ICBDQVNUKEFSUkFZW0FSUkFZWzEsIDIsIDEuMTo6aW50ZWdlcl0sIEFSUkFZWyd0aHJlZScsIHRy dWUsICcwMSc6OiJiaXQiXV0gQVMgZF9pbnRfYXJyIERFRkFVTFQgJ3s0MSw0M30nOjppbnRlZ2Vy W106OmRfaW50X2FyciBPTiBDT05WRVJTSU9OIEVSUk9SKSBBUyBjYXN0MgorU0VMRUNUICogRlJP TSBzYWZlY2FzdHZpZXcxOworICBjYXN0MSAgfCAgY2FzdDIgIAorLS0tLS0tLS0tKy0tLS0tLS0t LQorIHs0MSw0M30gfCB7NDEsNDN9CisoMSByb3cpCisKK1JFU0VUIGRhdGVzdHlsZTsKKy0tIHRl c3QgQ0FTVCBERUZBVUxUIGV4cHJlc3Npb24gbXV0YWJpbGl0eQorQ1JFQVRFIElOREVYIGNhc3Rf ZXJyb3JfaWR4IE9OIHRlc3Rfc2FmZWNhc3QzKChDQVNUKGNvbDAgYXMgaW50IERFRkFVTFQgcmFu ZG9tKG1pbj0+MSwgbWF4PT4xKSBPTiBDT05WRVJTSU9OIEVSUk9SKSkpOyAtLSBlcnJvcgorRVJS T1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1VVEFC TEUKK0xJTkUgMTogQ1JFQVRFIElOREVYIGNhc3RfZXJyb3JfaWR4IE9OIHRlc3Rfc2FmZWNhc3Qz KChDQVNUKGNvbDAgYXMgLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCitDUkVBVEUgSU5ERVggY2FzdF9lcnJvcl9pZHggT04gdGVzdF9z YWZlY2FzdDMoKENBU1QoY29sMCBhcyB4aWQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpKSk7IC0tIGVycm9yCitFUlJPUjogIGRhdGEgdHlwZSB4aWQgaGFzIG5vIGRlZmF1bHQgb3Bl cmF0b3IgY2xhc3MgZm9yIGFjY2VzcyBtZXRob2QgImJ0cmVlIgorSElOVDogIFlvdSBtdXN0IHNw ZWNpZnkgYW4gb3BlcmF0b3IgY2xhc3MgZm9yIHRoZSBpbmRleCBvciBkZWZpbmUgYSBkZWZhdWx0 IG9wZXJhdG9yIGNsYXNzIGZvciB0aGUgZGF0YSB0eXBlLgorQ1JFQVRFIElOREVYIGNhc3RfZXJy b3JfaWR4IE9OIHRlc3Rfc2FmZWNhc3QzKChDQVNUKGNvbDAgYXMgaW50IERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSkpOyAtLW9rCitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKCdjYXN0 X2Vycm9yX2lkeCc6OnJlZ2NsYXNzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2luZGV4ZGVmICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIENSRUFURSBJTkRFWCBjYXN0X2Vycm9yX2lkeCBPTiBwdWJsaWMudGVzdF9z YWZlY2FzdDMgVVNJTkcgYnRyZWUgKChDQVNUKGNvbDAgQVMgaW50ZWdlciBERUZBVUxUIE5VTEw6 OmludGVnZXIgT04gQ09OVkVSU0lPTiBFUlJPUikpKQorKDEgcm93KQorCitEUk9QIFZJRVcgc2Fm ZWNhc3R2aWV3OworRFJPUCBWSUVXIHNhZmVjYXN0dmlldzE7CitEUk9QIFRBQkxFIHRlc3Rfc2Fm ZWNhc3Q7CitEUk9QIFRBQkxFIHRlc3Rfc2FmZWNhc3QxOworRFJPUCBUQUJMRSB0ZXN0X3NhZmVj YXN0MjsKK0RST1AgVEFCTEUgdGVzdF9zYWZlY2FzdDM7CitEUk9QIFRBQkxFIHRjYXN0OworRFJP UCBUQUJMRSB0Y2FzdDE7CitEUk9QIEZVTkNUSU9OIHJldF9pbnQ4OworRFJPUCBGVU5DVElPTiBy ZXRfc2V0aW50OworRFJPUCBUWVBFIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kOworRFJPUCBUWVBF IGNvbXAyOworRFJPUCBET01BSU4gZF9ub3RhOworRFJPUCBET01BSU4gZF92YXJjaGFyOworRFJP UCBET01BSU4gZF9pbnQ4YXJyOworRFJPUCBET01BSU4gZF9pbnQ4OworRFJPUCBET01BSU4gZF9p bnQ0MmFycjE7CitEUk9QIERPTUFJTiBkX2ludDQyYXJyOworRFJPUCBET01BSU4gZF9pbnQ0MjsK K0RST1AgRE9NQUlOIGRfY2hhcjNfbm90X251bGw7CitEUk9QIERPTUFJTiBkX251bWVyaWM7CitS RVNFVCBleHRyYV9mbG9hdF9kaWdpdHM7CitSRVNFVCBsY19tb25ldGFyeTsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2Nhc3Qub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9jcmVhdGVfY2FzdC5vdXQKaW5kZXggMGU2OTY0NGJjYTIuLjI4Yzg4MGIx MGUyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9jYXN0Lm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9jYXN0Lm91dApAQCAtODgs NiArODgsMTEgQEAgU0VMRUNUIDEyMzQ6OmludDQ6OmNhc3R0ZXN0dHlwZTsgLS0gU2hvdWxkIHdv cmsgbm93CiAgYmFyMTIzNAogKDEgcm93KQogCitTRUxFQ1QgQ0FTVCgxMjM0OjppbnQ0IEFTIGNh c3R0ZXN0dHlwZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitF UlJPUjogIGNhbm5vdCBjYXN0IHR5cGUgaW50ZWdlciB0byBjYXN0dGVzdHR5cGUgd2hlbiBERUZB VUxUIGV4cHJlc3Npb24gaXMgc3BlY2lmaWVkIGluIENBU1QgLi4uIE9OIENPTlZFUlNJT04gRVJS T1IKK0xJTkUgMTogU0VMRUNUIENBU1QoMTIzNDo6aW50NCBBUyBjYXN0dGVzdHR5cGUgREVGQVVM VCBOVUxMIE9OIENPTlZFLi4uCisgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIFNhZmUg dHlwZSBjYXN0IGZvciB1c2VyLWRlZmluZWQgdHlwZXMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkLgog LS0gY2hlY2sgZGVwZW5kZW5jaWVzIGdlbmVyYXRlZCBmb3IgdGhhdAogU0VMRUNUIHBnX2Rlc2Ny aWJlX29iamVjdChjbGFzc2lkLCBvYmppZCwgb2Jqc3ViaWQpIGFzIG9iaiwKICAgICAgICBwZ19k ZXNjcmliZV9vYmplY3QocmVmY2xhc3NpZCwgcmVmb2JqaWQsIHJlZm9ianN1YmlkKSBhcyBvYmpy ZWYsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VxdWl2Y2xhc3Mub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9lcXVpdmNsYXNzLm91dAppbmRleCBhZDhhYjI5 NGZmNi4uZTNmOGEyODA3ZjkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv ZXF1aXZjbGFzcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9lcXVpdmNsYXNz Lm91dApAQCAtOTUsNiArOTUsMTMgQEAgY3JlYXRlIGZ1bmN0aW9uIGludDhhbGlhczFjbXAoaW50 OCwgaW50OGFsaWFzMSkgcmV0dXJucyBpbnQKICAgc3RyaWN0IGltbXV0YWJsZSBsYW5ndWFnZSBp bnRlcm5hbCBhcyAnYnRpbnQ4Y21wJzsKIGFsdGVyIG9wZXJhdG9yIGZhbWlseSBpbnRlZ2VyX29w cyB1c2luZyBidHJlZSBhZGQKICAgZnVuY3Rpb24gMSBpbnQ4YWxpYXMxY21wIChpbnQ4LCBpbnQ4 YWxpYXMxKTsKKy0tIGludDhhbGlhczIgYmluYXJ5LWNvZXJjaWJsZSB0byBpbnQ4LCB0aGlzIHNo b3VsZCBub3QgZmFpbAorc2VsZWN0IGNhc3QoJzEnOjppbnQ4IGFzIGludDhhbGlhczIgZGVmYXVs dCBudWxsIG9uIGNvbnZlcnNpb24gZXJyb3IpOworIGludDhhbGlhczIgCistLS0tLS0tLS0tLS0K KyAxCisoMSByb3cpCisKIGNyZWF0ZSB0YWJsZSBlYzAgKGZmIGludDggcHJpbWFyeSBrZXksIGYx IGludDgsIGYyIGludDgpOwogY3JlYXRlIHRhYmxlIGVjMSAoZmYgaW50OCBwcmltYXJ5IGtleSwg ZjEgaW50OGFsaWFzMSwgZjIgaW50OGFsaWFzMik7CiBjcmVhdGUgdGFibGUgZWMyICh4ZiBpbnQ4 IHByaW1hcnkga2V5LCB4MSBpbnQ4YWxpYXMxLCB4MiBpbnQ4YWxpYXMyKTsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQveG1sLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQveG1sLm91dAppbmRleCAxMDNhMjJhM2IxZC4uODE1YTVlODg5OWYgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQveG1sLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3htbC5vdXQKQEAgLTE4LDYgKzE4LDEyIEBAIFNFTEVDVCAqIEZST00geG1sdGVz dDsKICAgMiB8IDx2YWx1ZT50d288L3ZhbHVlPgogKDIgcm93cykKIAorU0VMRUNUIENBU1QoJzx3 cm9uZyc6OnRleHQgQVMgeG1sIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b194bWw7CisgdG9feG1sIAorLS0tLS0tLS0KKyAKKygxIHJvdykKKwogLS0gdGVzdCBub24tdGhy b3dpbmcgQVBJLCB0b28KIFNFTEVDVCBwZ19pbnB1dF9pc192YWxpZCgnPHZhbHVlPm9uZTwvdmFs dWU+JywgJ3htbCcpOwogIHBnX2lucHV0X2lzX3ZhbGlkIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC94bWxfMS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ht bF8xLm91dAppbmRleCA3M2M0MTExMThhMy4uNjlhZWE4MzMxNjkgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQveG1sXzEub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQveG1sXzEub3V0CkBAIC0yMiw2ICsyMiw5IEBAIFNFTEVDVCAqIEZST00geG1sdGVzdDsK IC0tLS0rLS0tLS0tCiAoMCByb3dzKQogCitTRUxFQ1QgQ0FTVCgnPHdyb25nJzo6dGV4dCBBUyB4 bWwgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3htbDsKK0VSUk9SOiAg dW5zdXBwb3J0ZWQgWE1MIGZlYXR1cmUKK0RFVEFJTDogIFRoaXMgZnVuY3Rpb25hbGl0eSByZXF1 aXJlcyB0aGUgc2VydmVyIHRvIGJlIGJ1aWx0IHdpdGggbGlieG1sIHN1cHBvcnQuCiAtLSB0ZXN0 IG5vbi10aHJvd2luZyBBUEksIHRvbwogU0VMRUNUIHBnX2lucHV0X2lzX3ZhbGlkKCc8dmFsdWU+ b25lPC92YWx1ZT4nLCAneG1sJyk7CiBFUlJPUjogIHVuc3VwcG9ydGVkIFhNTCBmZWF0dXJlCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3Qv cmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCA3MzRkYTA1N2MzNC4uYzgyYjRiMzE0MjMg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtODEsNyArODEsNyBAQCB0ZXN0OiBj cmVhdGVfdGFibGVfbGlrZSBhbHRlcl9nZW5lcmljIGFsdGVyX29wZXJhdG9yIG1pc2MgYXN5bmMg ZGJzaXplIG1lcmdlIG1pcwogIyBjb2xsYXRlLmxpbnV4LnV0ZjggYW5kIGNvbGxhdGUuaWN1LnV0 ZjggdGVzdHMgY2Fubm90IGJlIHJ1biBpbiBwYXJhbGxlbCB3aXRoIGVhY2ggb3RoZXIKICMgcHNx bCBkZXBlbmRzIG9uIGNyZWF0ZV9hbQogIyBhbXV0aWxzIGRlcGVuZHMgb24gZ2VvbWV0cnksIGNy ZWF0ZV9pbmRleF9zcGdpc3QsIGhhc2hfaW5kZXgsIGJyaW4KLXRlc3Q6IHJ1bGVzIHBzcWwgcHNx bF9jcm9zc3RhYiBwc3FsX3BpcGVsaW5lIGFtdXRpbHMgc3RhdHNfZXh0IGNvbGxhdGUubGludXgu dXRmOCBjb2xsYXRlLndpbmRvd3Mud2luMTI1MgordGVzdDogcnVsZXMgcHNxbCBwc3FsX2Nyb3Nz dGFiIHBzcWxfcGlwZWxpbmUgYW11dGlscyBzdGF0c19leHQgY29sbGF0ZS5saW51eC51dGY4IGNv bGxhdGUud2luZG93cy53aW4xMjUyIGNhc3QKIAogIyAtLS0tLS0tLS0tCiAjIFJ1biB0aGVzZSBh bG9uZSBzbyB0aGV5IGRvbid0IHJ1biBvdXQgb2YgcGFyYWxsZWwgd29ya2VycwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY2FzdC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9j YXN0LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjRkM2FjZjgx YmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jYXN0LnNxbApAQCAt MCwwICsxLDQyNiBAQAorU0VUIGV4dHJhX2Zsb2F0X2RpZ2l0cyA9IDA7CitTRVQgbGNfbW9uZXRh cnkgVE8gIkMiOworCistLSBDQVNUIERFRkFVTFQgT04gQ09OVkVSU0lPTiBFUlJPUgorU0VMRUNU IENBU1QoQicwMScgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitT RUxFQ1QgQ0FTVChCSVQnMDEnIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOworU0VMRUNUIENBU1QoVFJVRSBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKTsKK1NFTEVDVCBDQVNUKDEuMSBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKDEgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgxMTExIEFTICJjaGFyIiBERUZBVUxUICdBJyBPTiBD T05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCdkZWYnOjp0ZXh0IEFTIGludGVnZXIgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJzInOjpqc29uYiBB UyB0ZXh0IERFRkFVTFQgJ2ZhbGxiYWNrJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBD QVNUKCcxJyBDT0xMQVRFICJDIiB8fCAnaCcgQVMgdGV4dCBERUZBVUxUICdmYWxsYmFjaycgT04g Q09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChjb25jYXQoJzEnIGNvbGxhdGUgIkMiLCAn aCcpIEFTIGludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FT VCg2NTUzNiBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVD VCBDQVNUKGludDgoNjU1MzYpIEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOworCistLSBzb3VyY2UgZXhwcmVzc2lvbiBpcyBhIHVua25vd24gY29uc3QKK1ZBTFVFUyAo Q0FTVCgnZXJyb3InIEFTIGludGVnZXIgRVJST1IgT04gQ09OVkVSU0lPTiBFUlJPUikpOyAtLSBl cnJvcgorVkFMVUVTIChDQVNUKCdlcnJvcicgQVMgaW50ZWdlciBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpKTsKK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIGludGVnZXIgREVGQVVMVCA0MiBPTiBD T05WRVJTSU9OIEVSUk9SKSk7CitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgMTggT04g Q09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgc3VtKDEp IE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorU0VMRUNUIENBU1QoJ2EnIGFzIGludCBE RUZBVUxUIHN1bSgxKSBvdmVyKCkgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitTRUxF Q1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgKFNFTEVDVCBOVUxMKSBPTiBDT05WRVJTSU9OIEVS Uk9SKTsgLS0gZXJyb3IKK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCAnYicgT04gQ09O VkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitTRUxFQ1QgQ0FTVCgnYSc6OmludCBhcyBpbnQgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorCistLSB0aGUgZGVmYXVs dCBleHByZXNzaW9u4oCZcyBjb2xsYXRpb24gc2hvdWxkIG1hdGNoIHRhcmdldCB0eXBlIGNvbGxh dGlvbgorVkFMVUVTIChDQVNUKCdlcnJvcicgQVMgdGV4dCBERUZBVUxUICcxJyBDT0xMQVRFICJD IiBPTiBDT05WRVJTSU9OIEVSUk9SKSk7CisKK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIGludDJ2 ZWN0b3IgREVGQVVMVCAnMSAzJyAgT04gQ09OVkVSU0lPTiBFUlJPUikpOworVkFMVUVTIChDQVNU KCdlcnJvcicgQVMgaW50MnZlY3RvcltdIERFRkFVTFQgJ3sxIDN9JyAgT04gQ09OVkVSU0lPTiBF UlJPUikpOworCistLSBzb3VyY2UgZXhwcmVzc2lvbiBjb250YWluIHN1YnF1ZXJ5CitTRUxFQ1Qg Q0FTVCgoU0VMRUNUIGIgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMSksIChWQUxVRVMoJ0gnKSkg cyhiKSkKKyAgICAgICAgICAgIEFTIGludDJ2ZWN0b3JbXSBERUZBVUxUICd7MSAzfScgIE9OIENP TlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoKFNFTEVDVCBBUlJBWSgoU0VMRUNUIGIgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMikgZywgKFZBTFVFUygnSCcpKSBzKGIpKSkpCisgICAgICAg ICAgICBBUyBJTlRbXQorICAgICAgICAgICAgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOworCitDUkVBVEUgRlVOQ1RJT04gcmV0X2ludDgoKSBSRVRVUk5TIEJJR0lOVCBBUworJCQK K0JFR0lOIFJFVFVSTiAyMTQ3NDgzNjQ4OyBFTkQ7CiskJAorTEFOR1VBR0UgcGxwZ3NxbCBJTU1V VEFCTEU7CisKK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCByZXRfaW50OCgpIE9OIENP TlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorU0VMRUNUIENBU1QoJ2EnIGFzIGRhdGUgREVGQVVM VCByZXRfaW50OCgpIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorCistLSBERUZBVUxU IGV4cHJlc3Npb24gY2Fubm90IGJlIHNldC1yZXR1cm5pbmcKK0NSRUFURSBGVU5DVElPTiByZXRf c2V0aW50KCkgUkVUVVJOUyBTRVRPRiBpbnRlZ2VyIEFTCiskJAorQkVHSU4gUkVUVVJOIFFVRVJZ IEVYRUNVVEUgJ3NlbGVjdCAxIHVuaW9uIGFsbCBzZWxlY3QgMSc7IEVORDsKKyQkCitMQU5HVUFH RSBwbHBnc3FsIElNTVVUQUJMRTsKKworQ1JFQVRFIFRBQkxFIHRjYXN0MChhIElOVCwgYiBpbnQp OworSU5TRVJUIElOVE8gdGNhc3QwIFZBTFVFUygxLDIpLCAoNjU1MzYsMyk7CitTRVQgaml0X2Fi b3ZlX2Nvc3QgPSAwOworU0VMRUNUIENBU1QoYSBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MDsKK1NFVCBqaXRfYWJvdmVfY29zdCBUTyBERUZBVUxU OworU0VMRUNUIENBU1QoYSBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBGUk9NIHRjYXN0MDsKK1NFTEVDVCBDQVNUKFJPVygxLDIpIEFTIHRjYXN0MCBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDAgYXMgdDsKK0RST1AgVEFCTEUgdGNh c3QwOworCitTRUxFQ1QgQ0FTVCgxMi4xMTEgYXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpY19zY2FsZTsKKworQ1JFQVRFIFRBQkxF IHRjYXN0KGEgdGV4dFtdLCBiIGludCBHRU5FUkFURUQgQlkgREVGQVVMVCBBUyBJREVOVElUWSk7 CitJTlNFUlQgSU5UTyB0Y2FzdCBWQUxVRVMgKCd7MTJ9JyksICgnezEsYSwgYn0nKSwgKCd7ezEs Mn0sIHtjLGR9fScpLCAoJ3sxM30nKTsKK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCBy ZXRfc2V0aW50KCkgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDsgLS0gZXJyb3IKK1NF TEVDVCBDQVNUKHQgQVMgdGV4dFtdIERFRkFVTFQgJ3syMSwyMiwgJyB8fCBiIHx8ICd9JyBPTiBD T05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0IGFzIHQ7CitTRUxFQ1QgQ0FTVCh0LmEgQVMgaW50 W10gREVGQVVMVCAnezIxLDIyfSc6OmludFtdIHx8IGIgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJP TSB0Y2FzdCBhcyB0OworCistLSBUZXN0IG5lc3RlZCB0eXBlIGNhc3RzOyBhbGwgZXhwcmVzc2lv bnMgd2lsbCBiZSBldmFsdWF0ZWQgaW4gYW4gZXJyb3Itc2FmZSBtYW5uZXIKK0NSRUFURSBET01B SU4gZF9ub3RhIEFTIHRleHQgQ0hFQ0sgKFZBTFVFIDw+ICdhJyk7CitDUkVBVEUgVEFCTEUgdGNh c3QxKGEgdGV4dCwgYiB0ZXh0W10sIGMgaW50LCBkIGludDgsIGUgaW50OFtdKTsKK0lOU0VSVCBJ TlRPIHRjYXN0MShhLCBiLCBkLCBlKSB2YWx1ZXMoJ2EnLCAne2F9JywgMjE0NzQ4MzY0OCwgJ3sy MTQ3NDgzNjQ4fScpOworU0VMRUNUIENBU1QgKENBU1QoYSBBUyBpbnQpIEFTIHRleHQgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOworU0VMRUNUIENBU1QgKENB U1QoJ2EnIEFTIGludCkgQVMgdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg RlJPTSB0Y2FzdDE7ICAtLSBlcnJvcgorU0VMRUNUIENBU1QgKENBU1QoJ2EnOjp0ZXh0IEFTIGlu dCkgQVMgdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7 IC0tIG9rCitTRUxFQ1QgQ0FTVCAoQ0FTVChhIEFTIGRfbm90YSkgQVMgdGV4dCBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CitTRUxFQ1QgQ0FTVCAoQ0FTVCgn YScgQVMgZF9ub3RhKSBBUyB0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBG Uk9NIHRjYXN0MTsKKworU0VMRUNUIENBU1QgKENBU1QoZCBBUyBpbnQpIEFTIHRleHQgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOworU0VMRUNUIENBU1QgKENB U1QoJzIxNDc0ODM2NDgnOjppbnQ4IEFTIGludCkgQVMgdGV4dCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CisKK1NFTEVDVCBDQVNUIChDQVNUKCd7YX0nOjp0 ZXh0W10gQVMgaW50W10pIEFTIHRleHRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgRlJPTSB0Y2FzdDE7CitTRUxFQ1QgQ0FTVCAoQ0FTVChiIEFTIGludFtdKSBBUyB0ZXh0W10g REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOworU0VMRUNUIENB U1QgKENBU1QoYiBBUyBkX25vdGFbXSkgQVMgdGV4dFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKK1NFTEVDVCBDQVNUIChDQVNUKGUgQVMgaW50W10pIEFT IHRleHRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CisK Ky0tIHRlc3QgZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yIGhhbmRsZSBuZXN0ZWQgQXJy YXlDb2VyY2VFeHByCitTRUxFQ1QgQ0FTVCgne2F9Jzo6dGV4dFtdIEFTIGludFtdIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKK1NFTEVDVCBDQVNUKENBU1Qo J3thfSc6OnRleHRbXSBBUyBkYXRlW10pIEFTIGludFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKK1NFTEVDVCBDQVNUKCgneycgfHwgc3VtKDEgKyAyKSB8 fCAnfScpOjppbnRbXSBBUyBpbnRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg RlJPTSAoVkFMVUVTICgxKSwgKDIpKSBzdWI7CitTRUxFQ1QgQ0FTVCgoJ3snIHx8IHN1bSgxICsg MikgT1ZFUiAoKSB8fCAnfScpOjppbnRbXSBBUyBpbnRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgRlJPTSAoVkFMVUVTICgxKSwgKDIpKSBzdWI7CisKKy0tIHRlc3Qgd2l0aCB1 c2VyLWRlZmluZWQgdHlwZSwgZG9tYWluLCBhcnJheSBvdmVyIGRvbWFpbiwgZG9tYWluIG92ZXIg YXJyYXkKK0NSRUFURSBET01BSU4gZF9pbnQ0MiBhcyBpbnQgY2hlY2sgKHZhbHVlID0gNDIpIE5P VCBOVUxMOworQ1JFQVRFIERPTUFJTiBkX2ludDQyYXJyIGFzIGRfaW50NDJbXTsKK0NSRUFURSBE T01BSU4gZF9pbnQ0MmFycjEgYXMgZF9pbnQ0MmFycjsKK0NSRUFURSBET01BSU4gZF9pbnQ4IGFz IGludDggY2hlY2sgKHZhbHVlID4gMCk7CitDUkVBVEUgRE9NQUlOIGRfaW50OGFyciBhcyBkX2lu dDhbXTsKK0NSRUFURSBET01BSU4gZF9jaGFyM19ub3RfbnVsbCBhcyBjaGFyKDMpIE5PVCBOVUxM OworQ1JFQVRFIERPTUFJTiBkX3ZhcmNoYXIgYXMgdmFyY2hhcigzKSBOT1QgTlVMTDsKK0NSRUFU RSBET01BSU4gZF9pbnRfYXJyIGFzIGludFtdIGNoZWNrICh2YWx1ZSA9ICd7NDEsIDQzfScpIE5P VCBOVUxMOworQ1JFQVRFIFRZUEUgY29tcF9kb21haW5fd2l0aF90eXBtb2QgQVMgKGEgZF9jaGFy M19ub3RfbnVsbCwgYiBpbnQpOworQ1JFQVRFIFRZUEUgY29tcDIgQVMgKGEgZF92YXJjaGFyKTsK K0NSRUFURSBET01BSU4gZF9udW1lcmljIGFzIG51bWVyaWMoNCw0KTsKKworU0VMRUNUIENBU1Qo MS4wOjpmbG9hdDQgQVMgZF9udW1lcmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KTsKK1NFTEVDVCBDQVNUKCd7MS4wfScgQVMgbnVtZXJpYyg0LDEpW10gREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ3swLjEsIDEuMH0nIEFTIGRfbnVtZXJp Y1tdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKworU0VMRUNUIENBU1QoMTEg QVMgZF9pbnQ0MiBERUZBVUxUIDQxIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorU0VM RUNUIENBU1QoTlVMTCBBUyBkX2ludDQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KTsgLS0gZXJyb3IKK1NFTEVDVCBDQVNUKDExIEFTIGRfaW50NDIgREVGQVVMVCA0MiBPTiBDT05W RVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKE5VTEwgQVMgZF9pbnQ0MiBERUZBVUxUIDQyIE9O IENPTlZFUlNJT04gRVJST1IpOworCitTRUxFQ1QgQ0FTVChBUlJBWVs0Ml06OmRfaW50NDJhcnIx IEFTIGRfaW50OCBERUZBVUxUICcxJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNU KEFSUkFZWzQyXTo6ZF9pbnQ0MmFycjEgQVMgZF9pbnQ4W10gREVGQVVMVCAnezF9JyBPTiBDT05W RVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKEFSUkFZWzQyXTo6ZF9pbnQ0MmFycjEgQVMgZF9p bnQ4YXJyIERFRkFVTFQgJ3sxfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChB UlJBWVs0Ml06OmRfaW50NDJhcnIxIEFTIGRfaW50OGFycltdIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKTsKKworU0VMRUNUIENBU1QoQVJSQVlbNDIsNDFdIEFTIGRfaW50NDJbXSBE RUZBVUxUICd7NDIsIDQyfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChBUlJB WVs0Miw0MV0gQVMgZF9pbnRfYXJyIERFRkFVTFQgJ3s0MSwgNDN9JyBPTiBDT05WRVJTSU9OIEVS Uk9SKTsKK1NFTEVDVCBDQVNUKEFSUkFZWzQyLCA0MV06OmRfaW50NDJhcnIxIEFTIGRfaW50OGFy ciBERUZBVUxUICd7MSwyLDN9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKEFS UkFZWzQyLCA0MV0gQVMgZF9pbnQ0MmFycjEgREVGQVVMVCAnezQyLCA0Mn0nIE9OIENPTlZFUlNJ T04gRVJST1IpOworU0VMRUNUCisgICAgQ0FTVChDQVNUKEFSUkFZW0NBU1QoQVJSQVlbNDIsIDQy XSBBUyBkX2ludDQyYXJyKV0gQVMgZF9pbnQ0MmFycjFbXSkgQVMgZF9pbnQ4YXJyW10gREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCitTRUxFQ1QgQ0FTVCgnKE5VTEwpJyBBUyBj b21wMiBERUZBVUxUICcoMTIzMiknIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorU0VM RUNUIENBU1QoJyhOVUxMKScgQVMgY29tcDIgREVGQVVMVCAnKDEyMyknIE9OIENPTlZFUlNJT04g RVJST1IpOworU0VMRUNUIENBU1QoJygsNDIpJyBBUyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnKE5VTEwsNDIp JyBBUyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCBERUZBVUxUICcoMSwyKScgT04gQ09OVkVSU0lP TiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnKE5VTEwsNDIpJyBBUyBjb21wX2RvbWFpbl93aXRoX3R5 cG1vZCBERUZBVUxUICcoMTIzNCwyKScgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitT RUxFQ1QgQ0FTVChST1coTlVMTCw0MikgQVMgY29tcF9kb21haW5fd2l0aF90eXBtb2QgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorCistLSB0ZXN0IGFycmF5IGNv ZXJjZQorU0VMRUNUIENBU1QoYXJyYXlbJ2EnOjp0ZXh0XSBBUyBpbnRbXSBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChhcnJheVsnYSddIEFTIGludFtdIERF RkFVTFQgQVJSQVlbMV0gT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChhcnJheVsx MS4xMl0gQVMgZGF0ZVtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVD VCBDQVNUKGFycmF5WzExMTExMTExMTExMTExMTExXSBBUyBpbnRbXSBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChhcnJheVtbJ2FiYyddLFs0NTZdXSBBUyBp bnRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnezEy MyxhYmMsNDU2fScgQVMgaW50W10gREVGQVVMVCAney03ODl9JyBPTiBDT05WRVJTSU9OIEVSUk9S KTsKK1NFTEVDVCBDQVNUKCd7MjM0LGRlZiw1Njd9Jzo6dGV4dFtdIEFTIGludGVnZXJbXSBERUZB VUxUICd7LTEwMTF9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKEFSUkFZW1sn MSddLCBbJ3RocmVlJ10sWydhJ11dIEFTIGludFtdIERFRkFVTFQgJ3sxLDJ9JyBPTiBDT05WRVJT SU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKEFSUkFZW1snMScsICcyJ10sIFsndGhyZWUnLCAnYSdd XSBBUyBpbnRbXSBERUZBVUxUICd7MjEsMjJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKy0tIGVy cm9yOiBgdGhyZWUnOjppbnRgIHdpbGwgZmFpbCBlYXJsaWVyCitTRUxFQ1QgQ0FTVChBUlJBWVtb JzEnLCAnMiddLCBbJ3RocmVlJzo6aW50LCAnYSddXSBBUyBpbnRbXSBERUZBVUxUICd7MjEsMjJ9 JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKEFSUkFZWzEsICd0aHJlZSc6Omlu dF0gQVMgaW50W10gREVGQVVMVCAnezIxLDIyfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisKKy0t IHNhZmUgY2FzdCB3aXRoIGdlb21ldHJ5IGRhdGEgdHlwZQorU0VMRUNUIENBU1QoJygxLDIpJzo6 cG9pbnQgQVMgYm94IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBD QVNUKCdbKE5hTiwxKSwoTmFOLGluZmluaXR5KV0nOjpsc2VnIEFTIHBvaW50IERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCdbKDFlKzMwMCxJbmZpbml0eSks KDFlKzMwMCxJbmZpbml0eSldJzo6bHNlZyBBUyBwb2ludCBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnWygxLDIpLCgzLDQpXSc6OnBhdGggYXMgcG9seWdv biBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnKE5hTiwx LjAsTmFOLGluZmluaXR5KSc6OmJveCBBUyBwb2ludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnKDIuMCwyLjAsMC4wLDAuMCknOjpib3ggQVMgbHNlZyBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnKDIuMCwyLjAs MC4wLDAuMCknOjpib3ggQVMgcG9seWdvbiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP Uik7CitTRUxFQ1QgQ0FTVCgnKDIuMCwyLjAsMC4wLDAuMCknOjpib3ggQVMgcGF0aCBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnKDIuMCxpbmZpbml0eSxO YU4saW5maW5pdHkpJzo6Ym94IEFTIGNpcmNsZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUik7CitTRUxFQ1QgQ0FTVCgnKE5hTiwwLjApLCgyLjAsNC4wKSwoMC4wLGluZmluaXR5KSc6 OnBvbHlnb24gQVMgcG9pbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VM RUNUIENBU1QoJygyLjAsMC4wKSwoMi4wLDQuMCksKDAuMCwwLjApJzo6cG9seWdvbiBBUyBwYXRo IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcoMi4wLDAu MCksKDIuMCw0LjApLCgwLjAsMC4wKSc6OnBvbHlnb24gQVMgYm94IERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcoTmFOLGluZmluaXR5KSwoMi4wLDQuMCks KDAuMCxpbmZpbml0eSknOjpwb2x5Z29uIEFTIGNpcmNsZSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnPCg1LDEpLDM+Jzo6Y2lyY2xlIEFTIHBvaW50IERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCc8KDMsNSksMD4n OjpjaXJjbGUgYXMgYm94IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKworLS0g Y2FzdCBmcm9tIHR5cGUgY2lyY2xlIHRvIHR5cGUgcG9seWdvbiBpcyBpbXBsZW1lbnRlZCBhcyBh biBTUUwgZnVuY3Rpb24sIHdoaWNoIGNhbm5vdCBiZSBlcnJvci1zYWZlCitTRUxFQ1QgQ0FTVCgn PCgzLDUpLDA+Jzo6Y2lyY2xlIGFzIHBvbHlnb24gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpOworCistLSBTYWZlIHR5cGUgY2FzdCBzdXBwb3J0cyBtb25leSBhcyBhIHRhcmdldCB0 eXBlLCBidXQgbm90IGFzIGEgc291cmNlIHR5cGUuCitTRUxFQ1QgQ0FTVCgnMTIzNDU2Nzg5MDEy MzQ1Njc4Jzo6bnVtZXJpYyBBUyBNT05FWSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP Uik7CitTRUxFQ1QgQ0FTVCgnMTIzNDU2Nzg5MDEyMzQ1Njc4Jzo6aW50OCBBUyBNT05FWSBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnMjE0NzQ4MzY0Nyc6 OmludDQgQVMgTU9ORVkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNU IENBU1QoJy0yMTQ3NDgzNjQ4Jzo6aW50NCBBUyBNT05FWSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnLTAnOjppbnQ0IEFTIE1PTkVZIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKE5VTEw6Om1vbmV5IEFTIG51bWVy aWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoTlVMTDo6 bW9uZXlbXSBBUyBudW1lcmljW10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOwor CistLSBzYWZlIGNhc3QgZnJvbSBieXRlYSB0eXBlIHRvIG90aGVyIGRhdGEgdHlwZXMKK1NFTEVD VCBDQVNUICgnXHgxMTIyMzM0NDU1NjY3Nzg4OTknOjpieXRlYSBBUyBpbnQ4IERFRkFVTFQgMTkg T04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnXHgxMjM0NTY3ODlBJzo6Ynl0ZWEg QVMgaW50NCBERUZBVUxUIDIwIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ1x4 MTIzNDU2Jzo6Ynl0ZWEgQVMgaW50MiBERUZBVUxUIDIxIE9OIENPTlZFUlNJT04gRVJST1IpOwor U0VMRUNUIENBU1QoJ1x4MTIzNDU2Nzg5MGFiY2RlZic6OmJ5dGVhIEFTIHV1aWQgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCistLSBzYWZlIGNhc3QgZnJvbSB1dWlkIHR5cGUg dG8gb3RoZXIgZGF0YSB0eXBlcworU0VMRUNUIENBU1QoJzViMzUzODBhLTcxNDMtNDkxMi05YjU1 LWYzMjI2OTljNjc3MCc6OnV1aWQgQVMgYnl0ZWEgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpOworCistLSBzYWZlIGNhc3QgZnJvbSBiaXQgdHlwZSB0byBvdGhlciBkYXRhIHR5cGVz CitTRUxFQ1QgQ0FTVCgnMTExMTExMTExMTAwMDAxJzo6Yml0KDEwMCkgQVMgSU5UIERFRkFVTFQg MjIgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCAoJzExMTExMTExMTEwMDAwMSc6 OmJpdCgxMDApIEFTIElOVDggREVGQVVMVCAyMyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKworLS0g c2FmZSBjYXN0IGZyb20gdGV4dCB0eXBlIHRvIG90aGVyIGRhdGEgdHlwZXMKK3NlbGVjdCBDQVNU KCdhLmIuYy5kJzo6dGV4dCBhcyByZWdjbGFzcyBkZWZhdWx0IE5VTEwgb24gY29udmVyc2lvbiBl cnJvcik7CisKK0NSRUFURSBUQUJMRSB0ZXN0X3NhZmVjYXN0KGNvbDAgdGV4dCk7CitJTlNFUlQg SU5UTyB0ZXN0X3NhZmVjYXN0KGNvbDApIFZBTFVFUyAoJzx2YWx1ZT5vbmU8L3ZhbHVlJyk7CisK K1NFTEVDVCBjb2wwIGFzIHRleHQsCisgICAgICAgQ0FTVChjb2wwIEFTIHJlZ2NsYXNzIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19yZWdjbGFzcywKKyAgICAgICBDQVNU KGNvbDAgQVMgcmVnY2xhc3MgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIElTIE5V TEwgYXMgZXhwZWN0X3RydWUsCisgICAgICAgQ0FTVChjb2wwIEFTICJjaGFyIiAgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2NoYXIsCisgICAgICAgQ0FTVChjb2wwIEFT IG5hbWUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX25hbWUKK0ZST00g dGVzdF9zYWZlY2FzdDsKKworU0VMRUNUIENBU1QoJzE5Mi4xNjguMS54JyBhcyBpbmV0IERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcxOTIuMTY4LjEuMi8z MCcgYXMgY2lkciBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FT VCgnMjI6MDA6NWM6MDg6NTU6MDg6MDE6MDInOjptYWNhZGRyOCBhcyBtYWNhZGRyIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKworLS0gc2FmZSBjYXN0IGJldHdlZWVuIHJhbmdl IGRhdGEgdHlwZXMKK1NFTEVDVCBDQVNUKCdbMSwyXSc6OmludDRyYW5nZSBBUyBpbnQ0bXVsdGly YW5nZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnWzEs Ml0nOjppbnQ4cmFuZ2UgQVMgaW50OG11bHRpcmFuZ2UgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpOworU0VMRUNUIENBU1QoJ1sxLDJdJzo6bnVtcmFuZ2UgIEFTIG51bW11bHRpcmFu Z2UgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ1staW5m aW5pdHksaW5maW5pdHldJzo6ZGF0ZXJhbmdlIEFTIGRhdGVtdWx0aXJhbmdlIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCdbLWluZmluaXR5LGluZmluaXR5 XSc6OnRzcmFuZ2UgQVMgdHNtdWx0aXJhbmdlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKTsKK1NFTEVDVCBDQVNUKCdbLWluZmluaXR5LGluZmluaXR5XSc6OnRzdHpyYW5nZSBBUyB0 c3R6bXVsdGlyYW5nZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisKKy0tIHNh ZmUgY2FzdCBiZXR3ZWVlbiBudW1lcmljIGRhdGEgdHlwZXMKK0NSRUFURSBUQUJMRSB0ZXN0X3Nh ZmVjYXN0MSgKKyAgY29sMSBmbG9hdDQsIGNvbDIgZmxvYXQ4LCBjb2wzIG51bWVyaWMsIGNvbDQg bnVtZXJpY1tdLAorICBjb2w1IGludDIgZGVmYXVsdCAzMjc2NywKKyAgY29sNiBpbnQ0IGRlZmF1 bHQgMzI3NjgsCisgIGNvbDcgaW50OCBkZWZhdWx0IDQyOTQ5NjcyOTYpOworSU5TRVJUIElOVE8g dGVzdF9zYWZlY2FzdDEgVkFMVUVTKCcxMS4xMjM0JywgJzExLjEyMzQnLCAnOTIyMzM3MjAzNjg1 NDc3NTgwOCcsICd7MTEuMTIzNH0nOjpudW1lcmljW10pOworSU5TRVJUIElOVE8gdGVzdF9zYWZl Y2FzdDEgVkFMVUVTKCdpbmYnLCAnaW5mJywgJ2luZicsICd7MTEuMTIzNCwgMTIsIGluZiwgTmFO fSc6Om51bWVyaWNbXSk7CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0MSBWQUxVRVMoJy1pbmYn LCAnLWluZicsICctaW5mJywgJ3sxMS4xMjM0LCAxMiwgLWluZiwgTmFOfSc6Om51bWVyaWNbXSk7 CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0MSBWQUxVRVMoJ05hTicsICdOYU4nLCAnTmFOJywg J3sxMS4xMjM0LCAxMiwgLWluZiwgTmFOfSc6Om51bWVyaWNbXSk7CisKK1NFTEVDVCBjb2w1IGFz IGludDIsCisgICAgICAgQ0FTVChjb2w1IEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX2ludDIsCisgICAgICAgQ0FTVChjb2w1IEFTIGludDQgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDQsCisgICAgICAgQ0FTVChjb2w1IEFT IG9pZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fb2lkLAorICAgICAg IENBU1QoY29sNSBhcyBpbnQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b19pbnQ4LAorICAgICAgIENBU1QoY29sNSBhcyBmbG9hdDQgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAgICBDQVNUKGNvbDUgYXMgZmxvYXQ4IERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDgsCisgICAgICAgQ0FT VChjb2w1IGFzIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X251bWVyaWMsCisgICAgICAgQ0FTVChjb2w1IGFzIG51bWVyaWMoMTAsMSkgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWNfc2NhbGUKK0ZST00gdGVzdF9zYWZl Y2FzdDE7CisKK1NFTEVDVCBjb2w2IGFzIGludDQsCisgICAgICAgQ0FTVChjb2w2IEFTIGludDIg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDIsCisgICAgICAgQ0FT VChjb2w2IEFTIGludDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2lu dDQsCisgICAgICAgQ0FTVChjb2w2IEFTIG9pZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9fb2lkLAorICAgICAgIENBU1QoY29sNiBhcyBpbnQ4IERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4LAorICAgICAgIENBU1QoY29sNiBhcyBmbG9h dDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAg ICBDQVNUKGNvbDYgYXMgZmxvYXQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChjb2w2IGFzIG51bWVyaWMgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWMsCisgICAgICAgQ0FTVChjb2w2IGFzIG51 bWVyaWMoMTAsMSkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVy aWNfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDE7CisKK1NFTEVDVCBjb2w3IGFzIGludDgsCisg ICAgICAgQ0FTVChjb2w3IEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IGFzIHRvX2ludDIsCisgICAgICAgQ0FTVChjb2w3IEFTIGludDQgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDQsCisgICAgICAgQ0FTVChjb2w3IEFTIG9pZCBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fb2lkLAorICAgICAgIENBU1QoY29s NyBhcyBpbnQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4LAor ICAgICAgIENBU1QoY29sNyBhcyBmbG9hdDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAgICBDQVNUKGNvbDcgYXMgZmxvYXQ4IERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChjb2w3IGFz IG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWMs CisgICAgICAgQ0FTVChjb2w3IGFzIG51bWVyaWMoMTAsMSkgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX251bWVyaWNfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDE7CisK K1NFTEVDVCBjb2wzIGFzIG51bWVyaWMsCisgICAgICAgQ0FTVChjb2wzIEFTIGludDIgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDIsCisgICAgICAgQ0FTVChjb2wz IEFTIGludDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDQsCisg ICAgICAgQ0FTVChjb2wzIEFTIG9pZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9fb2lkLAorICAgICAgIENBU1QoY29sMyBhcyBpbnQ4IERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4LAorICAgICAgIENBU1QoY29sMyBhcyBmbG9hdDQgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAgICBDQVNU KGNvbDMgYXMgZmxvYXQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19m bG9hdDgsCisgICAgICAgQ0FTVChjb2wzIGFzIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX251bWVyaWMsCisgICAgICAgQ0FTVChjb2wzIGFzIG51bWVyaWMo MTAsMSkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWNfc2Nh bGUKK0ZST00gdGVzdF9zYWZlY2FzdDE7CisKK1NFTEVDVCBjb2w0IGFzIG51bV9hcnIsCisgICAg ICAgQ0FTVChjb2w0IEFTIGludDJbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgaW50MmFyciwKKyAgICAgICBDQVNUKGNvbDQgQVMgaW50NFtdIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyBpbnQ0YXJyLAorICAgICAgIENBU1QoY29sNCBhcyBpbnQ4W10g REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGludDhhcnIsCisgICAgICAgQ0FT VChjb2w0IGFzIGZsb2F0NFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBm NGFyciwKKyAgICAgICBDQVNUKGNvbDQgYXMgZmxvYXQ4W10gREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIGY4YXJyLAorICAgICAgIENBU1QoY29sNCBhcyBudW1lcmljKDEwLDEp W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIG51bWFycgorRlJPTSB0ZXN0 X3NhZmVjYXN0MTsKKworU0VMRUNUIGNvbDEgYXMgZmxvYXQ0LAorICAgICAgIENBU1QoY29sMSBB UyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQyLAorICAg ICAgIENBU1QoY29sMSBBUyBpbnQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19pbnQ0LAorICAgICAgIENBU1QoY29sMSBBUyBvaWQgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX29pZCwKKyAgICAgICBDQVNUKGNvbDEgYXMgaW50OCBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50OCwKKyAgICAgICBDQVNUKGNvbDEg YXMgZmxvYXQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDQs CisgICAgICAgQ0FTVChjb2wxIGFzIGZsb2F0OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9fZmxvYXQ4LAorICAgICAgIENBU1QoY29sMSBhcyBudW1lcmljIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAorICAgICAgIENBU1QoY29s MSBhcyBudW1lcmljKDEwLDEpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b19udW1lcmljX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QxOworCitTRUxFQ1QgY29sMiBhcyBm bG9hdDgsCisgICAgICAgQ0FTVChjb2wyIEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX2ludDIsCisgICAgICAgQ0FTVChjb2wyIEFTIGludDQgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDQsCisgICAgICAgQ0FTVChjb2wyIEFT IG9pZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fb2lkLAorICAgICAg IENBU1QoY29sMiBhcyBpbnQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b19pbnQ4LAorICAgICAgIENBU1QoY29sMiBhcyBmbG9hdDQgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAgICBDQVNUKGNvbDIgYXMgZmxvYXQ4IERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDgsCisgICAgICAgQ0FT VChjb2wyIGFzIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X251bWVyaWMsCisgICAgICAgQ0FTVChjb2wyIGFzIG51bWVyaWMoMTAsMSkgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWNfc2NhbGUKK0ZST00gdGVzdF9zYWZl Y2FzdDE7CisKKy0tIHNhZmUgdHlwZSBjYXN0IGZvciB0eXBlIGRhdGUvdGltZXN0YW1wL3RpbWVz dGFtcHR6L2ludGVydmFsCitDUkVBVEUgVEFCTEUgdGVzdF9zYWZlY2FzdDIoCisgIGNvbDAgZGF0 ZSwgY29sMSB0aW1lc3RhbXAsIGNvbDIgdGltZXN0YW1wdHosCisgIGNvbDMgaW50ZXJ2YWwsIGNv bDQgdGltZSwgY29sNSB0aW1ldHopOworSU5TRVJUIElOVE8gdGVzdF9zYWZlY2FzdDIgVkFMVUVT CisoJy1pbmZpbml0eScsICctaW5maW5pdHknLCAnLWluZmluaXR5JywgJy1pbmZpbml0eScsCisg ICcyMDAzLTAzLTA3IDE1OjM2OjM5IEFtZXJpY2EvTmV3X1lvcmsnLCAnMjAwMy0wNy0wNyAxNToz NjozOSBBbWVyaWNhL05ld19Zb3JrJyksCisoJy1pbmZpbml0eScsICdpbmZpbml0eScsICdpbmZp bml0eScsICdpbmZpbml0eScsICcxMTo1OTo1OS45OSBQTScsICcxMTo1OTo1OS45OSBQTSBQRFQn KTsKKworU0VMRUNUIGNvbDAgYXMgZGF0ZSwKKyAgICAgICBDQVNUKGNvbDAgQVMgdGltZXN0YW1w dHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzdGFtcHR6LAor ICAgICAgIENBU1QoY29sMCBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyB0b19kYXRlLAorICAgICAgIENBU1QoY29sMCBBUyB0aW1lIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lcywKKyAgICAgICBDQVNUKGNvbDAgQVMgdGltZXR6 IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1ldHosCisgICAgICAg Q0FTVChjb2wwIEFTIHRpbWVzdGFtcCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9fdGltZXN0YW1wX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QyOworCitTRUxFQ1Qg Y29sMSBhcyB0aW1lc3RhbXAsCisgICAgICAgQ0FTVChjb2wxIEFTIHRpbWVzdGFtcHR6IERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXB0eiwKKyAgICAgICBD QVNUKGNvbDEgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f ZGF0ZSwKKyAgICAgICBDQVNUKGNvbDEgQVMgdGltZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgYXMgdG9fdGltZXMsCisgICAgICAgQ0FTVChjb2wxIEFTIHRpbWV0eiBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXR6LAorICAgICAgIENBU1QoY29s MSBBUyB0aW1lc3RhbXAoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X3RpbWVzdGFtcF9zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MjsKKworU0VMRUNUIGNvbDIgYXMg dGltZXN0YW1wdHosCisgICAgICAgQ0FTVChjb2wyIEFTIHRpbWVzdGFtcHR6IERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXB0eiwKKyAgICAgICBDQVNUKGNv bDIgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZGF0ZSwK KyAgICAgICBDQVNUKGNvbDIgQVMgdGltZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9fdGltZXMsCisgICAgICAgQ0FTVChjb2wyIEFTIHRpbWV0eiBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXR6LAorICAgICAgIENBU1QoY29sMiBBUyB0 aW1lc3RhbXAoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVz dGFtcF9zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MjsKKworU0VMRUNUIGNvbDMgYXMgaW50ZXJ2 YWwsCisgICAgICAgQ0FTVChjb2wzIEFTIHRpbWVzdGFtcHR6IERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXB0eiwKKyAgICAgICBDQVNUKGNvbDMgQVMgZGF0 ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZGF0ZSwKKyAgICAgICBD QVNUKGNvbDMgQVMgdGltZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f dGltZXMsCisgICAgICAgQ0FTVChjb2wzIEFTIHRpbWV0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9fdGltZXR6LAorICAgICAgIENBU1QoY29sMyBBUyB0aW1lc3RhbXAo MikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzdGFtcF9zY2Fs ZSwKKyAgICAgICBDQVNUKGNvbDMgQVMgaW50ZXJ2YWwoMikgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX2ludGVydmFsX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QyOwor CitTRUxFQ1QgY29sNCBhcyB0aW1lLAorICAgICAgIENBU1QoY29sNCBBUyB0aW1lKDIpIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lcywKKyAgICAgICBDQVNUKGNv bDQgQVMgdGltZXR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBJUyBOT1QgTlVM TCBhcyB0b190aW1ldHosCisgICAgICAgQ0FTVChjb2w0IEFTIGludGVydmFsKDIpIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnRlcnZhbCwKKyAgICAgICBDQVNUKGNv bDQgQVMgaW50ZXJ2YWwoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X2ludGVydmFsX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QyOworCitTRUxFQ1QgY29sNSBhcyB0 aW1ldHosCisgICAgICAgQ0FTVChjb2w1IEFTIHRpbWUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX3RpbWUsCisgICAgICAgQ0FTVChjb2w1IEFTIHRpbWUoMikgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVfc2NhbGUsCisgICAgICAgQ0FT VChjb2w1IEFTIHRpbWV0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f dGltZXR6LAorICAgICAgIENBU1QoY29sNSBBUyB0aW1ldHooNikgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWV0el9zY2FsZSwKKyAgICAgICBDQVNUKGNvbDUgQVMg aW50ZXJ2YWwgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludGVydmFs LAorICAgICAgIENBU1QoY29sNSBBUyBpbnRlcnZhbCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9faW50ZXJ2YWxfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDI7CisK K0NSRUFURSBUQUJMRSB0ZXN0X3NhZmVjYXN0Myhjb2wwIGpzb25iKTsKK0lOU0VSVCBJTlRPIHRl c3Rfc2FmZWNhc3QzKGNvbDApIFZBTFVFUyAoJyJ0ZXN0IicpOworU0VMRUNUIGNvbDAgYXMganNv bmIsCisgICAgICAgQ0FTVChjb2wwIEFTIGludGVnZXIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX2ludGVnZXIsCisgICAgICAgQ0FTVChjb2wwIEFTIG51bWVyaWMgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWMsCisgICAgICAgQ0FT VChjb2wwIEFTIGJpZ2ludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f aW50OCwKKyAgICAgICBDQVNUKGNvbDAgQVMgZmxvYXQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyB0b19mbG9hdDQsCisgICAgICAgQ0FTVChjb2wwIEFTIGZsb2F0OCBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ4LAorICAgICAgIENBU1Qo Y29sMCBBUyBib29sZWFuIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19i b29sLAorICAgICAgIENBU1QoY29sMCBBUyBzbWFsbGludCBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9fc21hbGxpbnQKK0ZST00gdGVzdF9zYWZlY2FzdDM7CisKKy0tIHRl c3QgZGVwYXJzZQorU0VUIGRhdGVzdHlsZSBUTyBJU08sIFlNRDsKK0NSRUFURSBWSUVXIHNhZmVj YXN0dmlldyBBUworU0VMRUNUIENBU1QoJzEyMzQnIGFzIGNoYXIoMykgREVGQVVMVCAtMTExMSBP TiBDT05WRVJTSU9OIEVSUk9SKSwKKyAgICAgICBDQVNUKDEgYXMgZGF0ZSBERUZBVUxUICgoJzIw MjUtRGVjLTA2Jzo6ZGF0ZSArIHJhbmRvbShtaW49PjEsIG1heD0+MTo6aW50KSkpIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIGNhc3QwLAorICAgICAgIENBU1QoQVJSQVlbWycxJ10sIFsndGhyZWUn XSxbJ2EnXV0gQVMgaW50W10gREVGQVVMVCAnezEsMn0nIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IGNhc3QxLAorICAgICAgIENBU1QoQVJSQVlbWycxJywgJzInXSwgWyd0aHJlZScsICdhJ11dIEFT IGRhdGVbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgY2FzdDIsCisgICAg ICAgQ0FTVChBUlJBWVsndGhyZWUnXSBBUyBJTlRbXSBERUZBVUxUICd7MSwyfScgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgY2FzdDM7Citcc3Ygc2FmZWNhc3R2aWV3CitTRUxFQ1QgKiBGUk9NIHNh ZmVjYXN0dmlldzsKKworQ1JFQVRFIFZJRVcgc2FmZWNhc3R2aWV3MSBBUworU0VMRUNUIENBU1Qo QVJSQVlbWycxJ10sIFsndGhyZWUnXSxbJ2EnXV0gQVMgZF9pbnRfYXJyCisgICAgICAgICAgICBE RUZBVUxUICd7NDEsNDN9JyBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBjYXN0MSwKKyAgICAgICBD QVNUKEFSUkFZW1snMScsICcyJywgMS4xXSwgWyd0aHJlZScsIHRydWUsIEInMDEnXV0gQVMgZF9p bnRfYXJyCisgICAgICAgICAgICBERUZBVUxUICd7NDEsNDN9JyBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyBjYXN0MjsKK1xzdiBzYWZlY2FzdHZpZXcxCitTRUxFQ1QgKiBGUk9NIHNhZmVjYXN0dmll dzE7CisKK1JFU0VUIGRhdGVzdHlsZTsKKworLS0gdGVzdCBDQVNUIERFRkFVTFQgZXhwcmVzc2lv biBtdXRhYmlsaXR5CitDUkVBVEUgSU5ERVggY2FzdF9lcnJvcl9pZHggT04gdGVzdF9zYWZlY2Fz dDMoKENBU1QoY29sMCBhcyBpbnQgREVGQVVMVCByYW5kb20obWluPT4xLCBtYXg9PjEpIE9OIENP TlZFUlNJT04gRVJST1IpKSk7IC0tIGVycm9yCitDUkVBVEUgSU5ERVggY2FzdF9lcnJvcl9pZHgg T04gdGVzdF9zYWZlY2FzdDMoKENBU1QoY29sMCBhcyB4aWQgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpKSk7IC0tIGVycm9yCitDUkVBVEUgSU5ERVggY2FzdF9lcnJvcl9pZHggT04g dGVzdF9zYWZlY2FzdDMoKENBU1QoY29sMCBhcyBpbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpKSk7IC0tb2sKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoJ2Nhc3RfZXJyb3JfaWR4 Jzo6cmVnY2xhc3MpOworCitEUk9QIFZJRVcgc2FmZWNhc3R2aWV3OworRFJPUCBWSUVXIHNhZmVj YXN0dmlldzE7CitEUk9QIFRBQkxFIHRlc3Rfc2FmZWNhc3Q7CitEUk9QIFRBQkxFIHRlc3Rfc2Fm ZWNhc3QxOworRFJPUCBUQUJMRSB0ZXN0X3NhZmVjYXN0MjsKK0RST1AgVEFCTEUgdGVzdF9zYWZl Y2FzdDM7CitEUk9QIFRBQkxFIHRjYXN0OworRFJPUCBUQUJMRSB0Y2FzdDE7CitEUk9QIEZVTkNU SU9OIHJldF9pbnQ4OworRFJPUCBGVU5DVElPTiByZXRfc2V0aW50OworRFJPUCBUWVBFIGNvbXBf ZG9tYWluX3dpdGhfdHlwbW9kOworRFJPUCBUWVBFIGNvbXAyOworRFJPUCBET01BSU4gZF9ub3Rh OworRFJPUCBET01BSU4gZF92YXJjaGFyOworRFJPUCBET01BSU4gZF9pbnQ4YXJyOworRFJPUCBE T01BSU4gZF9pbnQ4OworRFJPUCBET01BSU4gZF9pbnQ0MmFycjE7CitEUk9QIERPTUFJTiBkX2lu dDQyYXJyOworRFJPUCBET01BSU4gZF9pbnQ0MjsKK0RST1AgRE9NQUlOIGRfY2hhcjNfbm90X251 bGw7CitEUk9QIERPTUFJTiBkX251bWVyaWM7CitSRVNFVCBleHRyYV9mbG9hdF9kaWdpdHM7CitS RVNFVCBsY19tb25ldGFyeTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0 ZV9jYXN0LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9jYXN0LnNxbAppbmRleCAz MjE4Nzg1M2NjNy4uMGExNWE3OTVkODcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2NyZWF0ZV9jYXN0LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfY2FzdC5z cWwKQEAgLTYyLDYgKzYyLDcgQEAgJCQgU0VMRUNUICgnYmFyJzo6dGV4dCB8fCAkMTo6dGV4dCk7 ICQkOwogCiBDUkVBVEUgQ0FTVCAoaW50NCBBUyBjYXN0dGVzdHR5cGUpIFdJVEggRlVOQ1RJT04g YmFyX2ludDRfdGV4dChpbnQ0KSBBUyBJTVBMSUNJVDsKIFNFTEVDVCAxMjM0OjppbnQ0OjpjYXN0 dGVzdHR5cGU7IC0tIFNob3VsZCB3b3JrIG5vdworU0VMRUNUIENBU1QoMTIzNDo6aW50NCBBUyBj YXN0dGVzdHR5cGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgog CiAtLSBjaGVjayBkZXBlbmRlbmNpZXMgZ2VuZXJhdGVkIGZvciB0aGF0CiBTRUxFQ1QgcGdfZGVz Y3JpYmVfb2JqZWN0KGNsYXNzaWQsIG9iamlkLCBvYmpzdWJpZCkgYXMgb2JqLApkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXF1aXZjbGFzcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9lcXVpdmNsYXNzLnNxbAppbmRleCA3ZmMyMTU5MzQ5Yi4uN2FkYTRiYjU1MDQgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2VxdWl2Y2xhc3Muc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2VxdWl2Y2xhc3Muc3FsCkBAIC05OCw2ICs5OCw5IEBAIGNyZWF0ZSBmdW5j dGlvbiBpbnQ4YWxpYXMxY21wKGludDgsIGludDhhbGlhczEpIHJldHVybnMgaW50CiBhbHRlciBv cGVyYXRvciBmYW1pbHkgaW50ZWdlcl9vcHMgdXNpbmcgYnRyZWUgYWRkCiAgIGZ1bmN0aW9uIDEg aW50OGFsaWFzMWNtcCAoaW50OCwgaW50OGFsaWFzMSk7CiAKKy0tIGludDhhbGlhczIgYmluYXJ5 LWNvZXJjaWJsZSB0byBpbnQ4LCB0aGlzIHNob3VsZCBub3QgZmFpbAorc2VsZWN0IGNhc3QoJzEn OjppbnQ4IGFzIGludDhhbGlhczIgZGVmYXVsdCBudWxsIG9uIGNvbnZlcnNpb24gZXJyb3IpOwor CiBjcmVhdGUgdGFibGUgZWMwIChmZiBpbnQ4IHByaW1hcnkga2V5LCBmMSBpbnQ4LCBmMiBpbnQ4 KTsKIGNyZWF0ZSB0YWJsZSBlYzEgKGZmIGludDggcHJpbWFyeSBrZXksIGYxIGludDhhbGlhczEs IGYyIGludDhhbGlhczIpOwogY3JlYXRlIHRhYmxlIGVjMiAoeGYgaW50OCBwcmltYXJ5IGtleSwg eDEgaW50OGFsaWFzMSwgeDIgaW50OGFsaWFzMik7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9zcWxqc29uX3F1ZXJ5ZnVuY3Muc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Fs anNvbl9xdWVyeWZ1bmNzLnNxbAppbmRleCBhNWQ1ZTI1NmQ3Zi4uZGQ1YWZkMTQ0OTAgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NxbGpzb25fcXVlcnlmdW5jcy5zcWwKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvc3FsanNvbl9xdWVyeWZ1bmNzLnNxbApAQCAtNjYsNiArNjYs NyBAQCBTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGludCk7 CiBTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGludCBFUlJP UiBPTiBFUlJPUik7CiBTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJO SU5HIGludCBERUZBVUxUIDExMSBPTiBFUlJPUik7CiBTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn IjEyMyInLCAnJCcgUkVUVVJOSU5HIGludCkgKyAyMzQ7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29u YiAnIjEyMyInLCAnJCcgUkVUVVJOSU5HIGludCkgKyAyMzQ7CiAKIFNFTEVDVCBKU09OX1ZBTFVF KGpzb25iICciMjAxNy0wMi0yMCInLCAnJCcgUkVUVVJOSU5HIGRhdGUpICsgOTsKIApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwveG1sLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3htbC5zcWwKaW5kZXggMGVhNGY1MDg4MzcuLmRmM2EwNmY0ZDgyIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC94bWwuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3htbC5z cWwKQEAgLTksNiArOSw4IEBAIElOU0VSVCBJTlRPIHhtbHRlc3QgVkFMVUVTICgzLCAnPHdyb25n Jyk7CiAKIFNFTEVDVCAqIEZST00geG1sdGVzdDsKIAorU0VMRUNUIENBU1QoJzx3cm9uZyc6OnRl eHQgQVMgeG1sIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b194bWw7CisK IC0tIHRlc3Qgbm9uLXRocm93aW5nIEFQSSwgdG9vCiBTRUxFQ1QgcGdfaW5wdXRfaXNfdmFsaWQo Jzx2YWx1ZT5vbmU8L3ZhbHVlPicsICd4bWwnKTsKIFNFTEVDVCBwZ19pbnB1dF9pc192YWxpZCgn PHZhbHVlPm9uZTwvJywgJ3htbCcpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCBlM2Mx MDA3YWJkZi4uODM1NDk5MTMwYWUgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0yNzQx LDYgKzI3NDEsOCBAQCBTVFJMRU4KIFNWCiBTWU5DSFJPTklaQVRJT05fQkFSUklFUgogU1lTVEVN X0lORk8KK1NhZmVUeXBlQ2FzdEV4cHIKK1NhZmVUeXBlQ2FzdFN0YXRlCiBTYW1wbGVTY2FuCiBT YW1wbGVTY2FuR2V0U2FtcGxlU2l6ZV9mdW5jdGlvbgogU2FtcGxlU2NhblN0YXRlCi0tIAoyLjM0 LjEKCg== --000000000000823951064e3ef0b0 Content-Type: text/x-patch; charset="US-ASCII"; name="v26-0001-error-safe-for-casting-text-to-other-types-per-pg_cast.patch" Content-Disposition: attachment; filename="v26-0001-error-safe-for-casting-text-to-other-types-per-pg_cast.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mndawh891 RnJvbSA0MjEwYWI0MDg2MjdjNjAxNjBmYWU0YzU1YjJiMzFmODc0YWY5NTE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMzAgTWFyIDIwMjYgMjI6Mjg6NTggKzA4MDAKU3ViamVjdDogW1BBVENIIHYy NiAxLzJdIGVycm9yIHNhZmUgZm9yIGNhc3RpbmcgdGV4dCB0byBvdGhlciB0eXBlcyBwZXIKIHBn X2Nhc3QKCnNlbGVjdCBjYXN0c291cmNlOjpyZWd0eXBlLCBjYXN0dGFyZ2V0OjpyZWd0eXBlLCBj YXN0ZnVuYywKY2FzdGNvbnRleHQsY2FzdG1ldGhvZCwgcHAucHJvc3JjLCBwcC5wcm9uYW1lIGZy b20gcGdfY2FzdCBwYyBqb2luIHBnX3Byb2MgcHAKb24gcHAub2lkID0gcGMuY2FzdGZ1bmMgYW5k IHBjLmNhc3RmdW5jID4gMAphbmQgY2FzdHNvdXJjZTo6cmVndHlwZSA9ICd0ZXh0Jzo6cmVndHlw ZQpvcmRlciBieSBjYXN0c291cmNlOjpyZWd0eXBlOwoKIGNhc3Rzb3VyY2UgfCBjYXN0dGFyZ2V0 IHwgY2FzdGZ1bmMgfCBjYXN0Y29udGV4dCB8IGNhc3RtZXRob2QgfCAgICBwcm9zcmMgICAgIHwg cHJvbmFtZQotLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KIHRleHQgICAgICAgfCBy ZWdjbGFzcyAgIHwgICAgIDEwNzkgfCBpICAgICAgICAgICB8IGYgICAgICAgICAgfCB0ZXh0X3Jl Z2NsYXNzIHwgcmVnY2xhc3MKIHRleHQgICAgICAgfCAiY2hhciIgICAgIHwgICAgICA5NDQgfCBh ICAgICAgICAgICB8IGYgICAgICAgICAgfCB0ZXh0X2NoYXIgICAgIHwgY2hhcgogdGV4dCAgICAg ICB8IG5hbWUgICAgICAgfCAgICAgIDQwNyB8IGkgICAgICAgICAgIHwgZiAgICAgICAgICB8IHRl eHRfbmFtZSAgICAgfCBuYW1lCiB0ZXh0ICAgICAgIHwgeG1sICAgICAgICB8ICAgICAyODk2IHwg ZSAgICAgICAgICAgfCBmICAgICAgICAgIHwgdGV4dHRveG1sICAgICB8IHhtbAooNCByb3dzKQoK QWxyZWFkeSBlcnJvciBzYWZlOiB0ZXh0X25hbWUsIHRleHRfY2hhciwgdGV4dHRveG1sLgoKQXV0 aG9yOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBB bmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4KUmV2aWV3ZWQtYnk6IEFtdWwgU3Vs IDxzdWxhbXVsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENvcmV5IEh1aW5rZXIgPGNvcmV5Lmh1 aW5rZXJAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBRGtMTT1m djFKZlk0VWZhLWpjd3dOYmpRaXhOVmlza1E4alp1M1R6X3A2NTZpXzRoUUBtYWlsLmdtYWlsLmNv bQpDb21taXRmZXN0OiBodHRwczovL2NvbW1pdGZlc3QucG9zdGdyZXNxbC5vcmcvcGF0Y2gvNTk0 MQotLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMgfCA0NiArKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMgfCAx MyArKysrKysrLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jIHwgMTAgKysrKyst LQogc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaCB8ICA2ICsrKysrCiBzcmMvaW5jbHVk ZS91dGlscy92YXJsZW5hLmggICAgIHwgIDEgKwogNSBmaWxlcyBjaGFuZ2VkLCA2MiBpbnNlcnRp b25zKCspLCAxNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L25hbWVzcGFjZS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYwppbmRleCA1NmI4 N2Q4NzhlOC4uMGY2M2M4MjZlODAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFt ZXNwYWNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYwpAQCAtNDQyLDYg KzQ0MiwxNiBAQCBPaWQKIFJhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZChjb25zdCBSYW5nZVZhciAq cmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlLAogCQkJCQkJIHVpbnQzMiBmbGFncywKIAkJCQkJ CSBSYW5nZVZhckdldFJlbGlkQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQgKmNhbGxiYWNrX2FyZykK K3sKKwlyZXR1cm4gUmFuZ2VWYXJHZXRSZWxpZEV4dGVuZGVkU2FmZShyZWxhdGlvbiwgbG9ja21v ZGUsIGZsYWdzLAorCQkJCQkJCQkJCWNhbGxiYWNrLCBjYWxsYmFja19hcmcsCisJCQkJCQkJCQkJ TlVMTCk7Cit9CisKK09pZAorUmFuZ2VWYXJHZXRSZWxpZEV4dGVuZGVkU2FmZShjb25zdCBSYW5n ZVZhciAqcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlLCB1aW50MzIgZmxhZ3MsCisJCQkJCQkJ IFJhbmdlVmFyR2V0UmVsaWRDYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqY2FsbGJhY2tfYXJnLAor CQkJCQkJCSBOb2RlICplc2NvbnRleHQpCiB7CiAJdWludDY0CQlpbnZhbF9jb3VudDsKIAlPaWQJ CQlyZWxJZDsKQEAgLTQ1OCw3ICs0NjgsNyBAQCBSYW5nZVZhckdldFJlbGlkRXh0ZW5kZWQoY29u c3QgUmFuZ2VWYXIgKnJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSwKIAlpZiAocmVsYXRpb24t PmNhdGFsb2duYW1lKQogCXsKIAkJaWYgKHN0cmNtcChyZWxhdGlvbi0+Y2F0YWxvZ25hbWUsIGdl dF9kYXRhYmFzZV9uYW1lKE15RGF0YWJhc2VJZCkpICE9IDApCi0JCQllcmVwb3J0KEVSUk9SLAor CQkJZXJldHVybihlc2NvbnRleHQsIEludmFsaWRPaWQsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkJIGVycm1zZygiY3Jvc3MtZGF0YWJhc2UgcmVm ZXJlbmNlcyBhcmUgbm90IGltcGxlbWVudGVkOiBcIiVzLiVzLiVzXCIiLAogCQkJCQkJCXJlbGF0 aW9uLT5jYXRhbG9nbmFtZSwgcmVsYXRpb24tPnNjaGVtYW5hbWUsCkBAIC01MTUsNyArNTI1LDcg QEAgUmFuZ2VWYXJHZXRSZWxpZEV4dGVuZGVkKGNvbnN0IFJhbmdlVmFyICpyZWxhdGlvbiwgTE9D S01PREUgbG9ja21vZGUsCiAJCQkJCSAqIHJldHVybiBJbnZhbGlkT2lkLgogCQkJCQkgKi8KIAkJ CQkJaWYgKG5hbWVzcGFjZUlkICE9IG15VGVtcE5hbWVzcGFjZSkKLQkJCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQllcmV0dXJuKGVzY29udGV4dCwgSW52YWxpZE9pZCwKIAkJCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX1RBQkxFX0RFRklOSVRJT04pLAogCQkJCQkJCQkgZXJybXNnKCJ0 ZW1wb3JhcnkgdGFibGVzIGNhbm5vdCBzcGVjaWZ5IGEgc2NoZW1hIG5hbWUiKSkpOwogCQkJCX0K QEAgLTU5NSwxNCArNjA1LDIwIEBAIFJhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZChjb25zdCBSYW5n ZVZhciAqcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlLAogCQl7CiAJCQlpbnQJCQllbGV2ZWwg PSAoZmxhZ3MgJiBSVlJfU0tJUF9MT0NLRUQpID8gREVCVUcxIDogRVJST1I7CiAKLQkJCWlmIChy ZWxhdGlvbi0+c2NoZW1hbmFtZSkKKwkJCWlmIChlc2NvbnRleHQgPT0gTlVMTCkKIAkJCQllcmVw b3J0KGVsZXZlbCwKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVfTE9DS19OT1RfQVZBSUxBQkxFKSwK KwkJCQkJCSByZWxhdGlvbi0+c2NoZW1hbmFtZSA/CiAJCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qg b2J0YWluIGxvY2sgb24gcmVsYXRpb24gXCIlcy4lc1wiIiwKLQkJCQkJCQkJcmVsYXRpb24tPnNj aGVtYW5hbWUsIHJlbGF0aW9uLT5yZWxuYW1lKSkpOworCQkJCQkJCQlyZWxhdGlvbi0+c2NoZW1h bmFtZSwgcmVsYXRpb24tPnJlbG5hbWUpIDoKKwkJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBvYnRh aW4gbG9jayBvbiByZWxhdGlvbiBcIiVzXCIiLAorCQkJCQkJCQlyZWxhdGlvbi0+cmVsbmFtZSkp KTsKIAkJCWVsc2UKLQkJCQllcmVwb3J0KGVsZXZlbCwKKwkJCQllcmV0dXJuKGVzY29udGV4dCwg SW52YWxpZE9pZCwKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVfTE9DS19OT1RfQVZBSUxBQkxFKSwK KwkJCQkJCSByZWxhdGlvbi0+c2NoZW1hbmFtZSA/CisJCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qg b2J0YWluIGxvY2sgb24gcmVsYXRpb24gXCIlcy4lc1wiIiwKKwkJCQkJCQkJcmVsYXRpb24tPnNj aGVtYW5hbWUsIHJlbGF0aW9uLT5yZWxuYW1lKSA6CiAJCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qg b2J0YWluIGxvY2sgb24gcmVsYXRpb24gXCIlc1wiIiwKIAkJCQkJCQkJcmVsYXRpb24tPnJlbG5h bWUpKSk7CiAKQEAgLTYyOCwxNCArNjQ0LDIwIEBAIFJhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZChj b25zdCBSYW5nZVZhciAqcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlLAogCXsKIAkJaW50CQkJ ZWxldmVsID0gbWlzc2luZ19vayA/IERFQlVHMSA6IEVSUk9SOwogCi0JCWlmIChyZWxhdGlvbi0+ c2NoZW1hbmFtZSkKKwkJaWYgKGVzY29udGV4dCA9PSBOVUxMKQogCQkJZXJlcG9ydChlbGV2ZWws CiAJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX1RBQkxFKSwKKwkJCQkJIHJlbGF0aW9u LT5zY2hlbWFuYW1lID8KIAkJCQkJIGVycm1zZygicmVsYXRpb24gXCIlcy4lc1wiIGRvZXMgbm90 IGV4aXN0IiwKLQkJCQkJCQlyZWxhdGlvbi0+c2NoZW1hbmFtZSwgcmVsYXRpb24tPnJlbG5hbWUp KSk7CisJCQkJCQkJcmVsYXRpb24tPnNjaGVtYW5hbWUsIHJlbGF0aW9uLT5yZWxuYW1lKSA6CisJ CQkJCSBlcnJtc2coInJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQkJcmVs YXRpb24tPnJlbG5hbWUpKSk7CiAJCWVsc2UKLQkJCWVyZXBvcnQoZWxldmVsLAorCQkJZXJldHVy bihlc2NvbnRleHQsIEludmFsaWRPaWQsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVE X1RBQkxFKSwKKwkJCQkJIHJlbGF0aW9uLT5zY2hlbWFuYW1lID8KKwkJCQkJIGVycm1zZygicmVs YXRpb24gXCIlcy4lc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQlyZWxhdGlvbi0+c2NoZW1h bmFtZSwgcmVsYXRpb24tPnJlbG5hbWUpIDoKIAkJCQkJIGVycm1zZygicmVsYXRpb24gXCIlc1wi IGRvZXMgbm90IGV4aXN0IiwKIAkJCQkJCQlyZWxhdGlvbi0+cmVsbmFtZSkpKTsKIAl9CkBAIC0z NjI0LDYgKzM2NDYsMTIgQEAgZ2V0X25hbWVzcGFjZV9vaWQoY29uc3QgY2hhciAqbnNwbmFtZSwg Ym9vbCBtaXNzaW5nX29rKQogICovCiBSYW5nZVZhciAqCiBtYWtlUmFuZ2VWYXJGcm9tTmFtZUxp c3QoY29uc3QgTGlzdCAqbmFtZXMpCit7CisJcmV0dXJuIG1ha2VSYW5nZVZhckZyb21OYW1lTGlz dFNhZmUobmFtZXMsIE5VTEwpOworfQorCitSYW5nZVZhciAqCittYWtlUmFuZ2VWYXJGcm9tTmFt ZUxpc3RTYWZlKGNvbnN0IExpc3QgKm5hbWVzLCBOb2RlICplc2NvbnRleHQpCiB7CiAJUmFuZ2VW YXIgICAqcmVsID0gbWFrZVJhbmdlVmFyKE5VTEwsIE5VTEwsIC0xKTsKIApAQCAtMzY0Miw3ICsz NjcwLDcgQEAgbWFrZVJhbmdlVmFyRnJvbU5hbWVMaXN0KGNvbnN0IExpc3QgKm5hbWVzKQogCQkJ cmVsLT5yZWxuYW1lID0gc3RyVmFsKGx0aGlyZChuYW1lcykpOwogCQkJYnJlYWs7CiAJCWRlZmF1 bHQ6Ci0JCQllcmVwb3J0KEVSUk9SLAorCQkJZXJldHVybihlc2NvbnRleHQsIE5VTEwsCiAJCQkJ CShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkJIGVycm1zZygiaW1wcm9wZXIg cmVsYXRpb24gbmFtZSAodG9vIG1hbnkgZG90dGVkIG5hbWVzKTogJXMiLAogCQkJCQkJCU5hbWVM aXN0VG9TdHJpbmcobmFtZXMpKSkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3JlZ3Byb2MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMKaW5kZXggZWUzNGQx ZDg1ZjguLjYwNGUxOWExY2I5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmVn cHJvYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMKQEAgLTE5MDEsMTIg KzE5MDEsMTkgQEAgdGV4dF9yZWdjbGFzcyhQR19GVU5DVElPTl9BUkdTKQogCXRleHQJICAgKnJl bG5hbWUgPSBQR19HRVRBUkdfVEVYVF9QUCgwKTsKIAlPaWQJCQlyZXN1bHQ7CiAJUmFuZ2VWYXIg ICAqcnY7CisJTGlzdAkgICAqbmFtZWxpc3Q7CiAKLQlydiA9IG1ha2VSYW5nZVZhckZyb21OYW1l TGlzdCh0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdChyZWxuYW1lKSk7CisJbmFtZWxpc3QgPSB0ZXh0 VG9RdWFsaWZpZWROYW1lTGlzdFNhZmUocmVsbmFtZSwgZmNpbmZvLT5jb250ZXh0KTsKKwlpZiAo U09GVF9FUlJPUl9PQ0NVUlJFRChmY2luZm8tPmNvbnRleHQpKQorCQlQR19SRVRVUk5fTlVMTCgp OworCisJcnYgPSBtYWtlUmFuZ2VWYXJGcm9tTmFtZUxpc3RTYWZlKG5hbWVsaXN0LCBmY2luZm8t PmNvbnRleHQpOworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGZjaW5mby0+Y29udGV4dCkpCisJ CVBHX1JFVFVSTl9OVUxMKCk7CiAKIAkvKiBXZSBtaWdodCBub3QgZXZlbiBoYXZlIHBlcm1pc3Np b25zIG9uIHRoaXMgcmVsYXRpb247IGRvbid0IGxvY2sgaXQuICovCi0JcmVzdWx0ID0gUmFuZ2VW YXJHZXRSZWxpZChydiwgTm9Mb2NrLCBmYWxzZSk7Ci0KKwlyZXN1bHQgPSBSYW5nZVZhckdldFJl bGlkRXh0ZW5kZWRTYWZlKHJ2LCBOb0xvY2ssIDAsIE5VTEwsIE5VTEwsCisJCQkJCQkJCQkJICBm Y2luZm8tPmNvbnRleHQpOwogCVBHX1JFVFVSTl9PSUQocmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC92YXJsZW5hLmMKaW5kZXggN2IxZWU2MWJkZTYuLjU2ZGEzZDdiNDQwIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC92YXJsZW5hLmMKQEAgLTI3MTcsNiArMjcxNywxMiBAQCBuYW1lX3RleHQoUEdfRlVOQ1RJT05f QVJHUykKICAqLwogTGlzdCAqCiB0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdCh0ZXh0ICp0ZXh0dmFs KQoreworCXJldHVybiB0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdFNhZmUodGV4dHZhbCwgTlVMTCk7 Cit9CisKK0xpc3QgKgordGV4dFRvUXVhbGlmaWVkTmFtZUxpc3RTYWZlKHRleHQgKnRleHR2YWws IE5vZGUgKmVzY29udGV4dCkKIHsKIAljaGFyCSAgICpyYXduYW1lOwogCUxpc3QJICAgKnJlc3Vs dCA9IE5JTDsKQEAgLTI3MjgsMTIgKzI3MzQsMTIgQEAgdGV4dFRvUXVhbGlmaWVkTmFtZUxpc3Qo dGV4dCAqdGV4dHZhbCkKIAlyYXduYW1lID0gdGV4dF90b19jc3RyaW5nKHRleHR2YWwpOwogCiAJ aWYgKCFTcGxpdElkZW50aWZpZXJTdHJpbmcocmF3bmFtZSwgJy4nLCAmbmFtZWxpc3QpKQotCQll cmVwb3J0KEVSUk9SLAorCQllcmV0dXJuKGVzY29udGV4dCwgTklMLAogCQkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9OQU1FKSwKIAkJCQkgZXJybXNnKCJpbnZhbGlkIG5hbWUgc3ludGF4Iikp KTsKIAogCWlmIChuYW1lbGlzdCA9PSBOSUwpCi0JCWVyZXBvcnQoRVJST1IsCisJCWVyZXR1cm4o ZXNjb250ZXh0LCBOSUwsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX05BTUUpLAogCQkJ CSBlcnJtc2coImludmFsaWQgbmFtZSBzeW50YXgiKSkpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL25hbWVzcGFjZS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2Uu aAppbmRleCA5NDUzYTNlNDkzMi4uN2YzMTQxYmEyN2QgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvbmFtZXNwYWNlLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2Uu aApAQCAtMTAzLDYgKzEwMywxMSBAQCBleHRlcm4gT2lkCVJhbmdlVmFyR2V0UmVsaWRFeHRlbmRl ZChjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiAJCQkJCQkJCQkgTE9DS01PREUgbG9ja21vZGUs IHVpbnQzMiBmbGFncywKIAkJCQkJCQkJCSBSYW5nZVZhckdldFJlbGlkQ2FsbGJhY2sgY2FsbGJh Y2ssCiAJCQkJCQkJCQkgdm9pZCAqY2FsbGJhY2tfYXJnKTsKK2V4dGVybiBPaWQgUmFuZ2VWYXJH ZXRSZWxpZEV4dGVuZGVkU2FmZShjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCisJCQkJCQkJCQkJ TE9DS01PREUgbG9ja21vZGUsIHVpbnQzMiBmbGFncywKKwkJCQkJCQkJCQlSYW5nZVZhckdldFJl bGlkQ2FsbGJhY2sgY2FsbGJhY2ssCisJCQkJCQkJCQkJdm9pZCAqY2FsbGJhY2tfYXJnLAorCQkJ CQkJCQkJCU5vZGUgKmVzY29udGV4dCk7CiBleHRlcm4gT2lkCVJhbmdlVmFyR2V0Q3JlYXRpb25O YW1lc3BhY2UoY29uc3QgUmFuZ2VWYXIgKm5ld1JlbGF0aW9uKTsKIGV4dGVybiBPaWQJUmFuZ2VW YXJHZXRBbmRDaGVja0NyZWF0aW9uTmFtZXNwYWNlKFJhbmdlVmFyICpyZWxhdGlvbiwKIAkJCQkJ CQkJCQkJCSBMT0NLTU9ERSBsb2NrbW9kZSwKQEAgLTE2OCw2ICsxNzMsNyBAQCBleHRlcm4gT2lk CUxvb2t1cENyZWF0aW9uTmFtZXNwYWNlKGNvbnN0IGNoYXIgKm5zcG5hbWUpOwogZXh0ZXJuIHZv aWQgQ2hlY2tTZXROYW1lc3BhY2UoT2lkIG9sZE5zcE9pZCwgT2lkIG5zcE9pZCk7CiBleHRlcm4g T2lkCVF1YWxpZmllZE5hbWVHZXRDcmVhdGlvbk5hbWVzcGFjZShjb25zdCBMaXN0ICpuYW1lcywg Y2hhciAqKm9iam5hbWVfcCk7CiBleHRlcm4gUmFuZ2VWYXIgKm1ha2VSYW5nZVZhckZyb21OYW1l TGlzdChjb25zdCBMaXN0ICpuYW1lcyk7CitleHRlcm4gUmFuZ2VWYXIgKm1ha2VSYW5nZVZhckZy b21OYW1lTGlzdFNhZmUoY29uc3QgTGlzdCAqbmFtZXMsIE5vZGUgKmVzY29udGV4dCk7CiBleHRl cm4gY2hhciAqTmFtZUxpc3RUb1N0cmluZyhjb25zdCBMaXN0ICpuYW1lcyk7CiBleHRlcm4gY2hh ciAqTmFtZUxpc3RUb1F1b3RlZFN0cmluZyhjb25zdCBMaXN0ICpuYW1lcyk7CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3V0aWxzL3ZhcmxlbmEuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3Zhcmxl bmEuaAppbmRleCA0YjMyNTc0YTA3NS4uNWJjNzhhYTAyYzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3V0aWxzL3ZhcmxlbmEuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy92YXJsZW5hLmgKQEAg LTI3LDYgKzI3LDcgQEAgZXh0ZXJuIGludAl2YXJzdHJfbGV2ZW5zaHRlaW5fbGVzc19lcXVhbChj b25zdCBjaGFyICpzb3VyY2UsIGludCBzbGVuLAogCQkJCQkJCQkJCSAgaW50IGluc19jLCBpbnQg ZGVsX2MsIGludCBzdWJfYywKIAkJCQkJCQkJCQkgIGludCBtYXhfZCwgYm9vbCB0cnVzdGVkKTsK IGV4dGVybiBMaXN0ICp0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdCh0ZXh0ICp0ZXh0dmFsKTsKK2V4 dGVybiBMaXN0ICp0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdFNhZmUodGV4dCAqdGV4dHZhbCwgTm9k ZSAqZXNjb250ZXh0KTsKIGV4dGVybiBib29sIFNwbGl0SWRlbnRpZmllclN0cmluZyhjaGFyICpy YXdzdHJpbmcsIGNoYXIgc2VwYXJhdG9yLAogCQkJCQkJCQkgIExpc3QgKipuYW1lbGlzdCk7CiBl eHRlcm4gYm9vbCBTcGxpdERpcmVjdG9yaWVzU3RyaW5nKGNoYXIgKnJhd3N0cmluZywgY2hhciBz ZXBhcmF0b3IsCi0tIAoyLjM0LjEKCg== --000000000000823951064e3ef0b0--