From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id WNjbNBlekWfBvBcAWB0awg (envelope-from ) for ; Wed, 22 Jan 2025 16:07:37 -0500 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=htecgroup.com header.i=@htecgroup.com header.a=rsa-sha256 header.s=selector1 header.b=k88IBstb; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id D37061E05C; Wed, 22 Jan 2025 16:07:37 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H2 autolearn=unavailable autolearn_force=no version=4.0.0 Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 4F4F91E05C for ; Wed, 22 Jan 2025 16:07:35 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id B41D63858027 for ; Wed, 22 Jan 2025 21:07:34 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B41D63858027 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=htecgroup.com header.i=@htecgroup.com header.a=rsa-sha256 header.s=selector1 header.b=k88IBstb Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazlp170130004.outbound.protection.outlook.com [IPv6:2a01:111:f403:c200::4]) by sourceware.org (Postfix) with ESMTPS id E54423858416 for ; Wed, 22 Jan 2025 21:06:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E54423858416 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=htecgroup.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=htecgroup.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org E54423858416 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:c200::4 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1737580010; cv=pass; b=c+a7AxRKknz9Myz7AmVfiBxWM38j0UEcSHZVC0mCufwnINDd0CIVAk70QIykBvkT0i8HtJZ2KC3GM838ACAcR+PVMXGUvgqgPus1lwOn/h/LboKEV0Lj3fadlTcQVVeZyshj07BdLivWkb1ai1Krp1uSntKuEBVMgOrWBfvEL4M= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1737580010; c=relaxed/simple; bh=ma8wIE7nzYexyqdF0vd9ow1CfQ3626RITY9Dcca5Kpo=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=Q+bMzG/XbLDGPDaAxoyfEJTKJ/dSBpm2nKIAkuvay8KR7hYRQheCmzaSJ7x1Et7j2T1Nbvc016af1VblWisA+kUwQsjnuFmIWfF55qH1HqVowZxJcknqbpAK4H7wmUdWlNJrSpjbucml0/3ZS5mQtjL3XMa279V5kL/1mKN6+2A= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E54423858416 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=zJHbrVLAgIsaWLTbbeSxDJ3HWHvMtTCCN6BwB9VQZ5GgCaZ4ZhTy8Qwf9zl12CFfnczQA1WoZHf9+HO9y4pn40UAS5KTURbDCroYSlkXyuAJMzp2WpB8KKM+cXO1XN1igRxvDPn8yE8puk/0gYwSYYTzdrmUtsKE5l0jgqEWC9gqWLmlYGLA6x+Ndm6cqbkZc4uxSJ7OHvMwB4h24HnoUhJWI8q5Q4615Axojb/2B/7ZhBw6FR+CQafDWa1bC6xruzIOytutnCrHwWWOf79A/6VIA36ubvPG5vsrS7ceB1Yskp0whuAa7njCcEUV93ukZ2f0E3p9FLWOgbe5g0XH/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=lB0973PTDEdKd4cvRk9a6zojBTq+8RK8P4oPD6Ja1IA=; b=NIiW6XjFBdZqGeIfggRA9Eq4RraBq1fCS5hs7tSuAxn8/G5F0r/473vQ2vrnxDcrm3PC94p7faon3ZWV5uDVKw7Ij0MjjNMllqX24mNUht9IQrJr0LmGCC+jYFTCd8EIJzoBcA4zaPGOWHjhqtu/Nghj2m+sLLKkt/+7N/kSVe1fo7elYo7ZN1Asz6DyuxIoaOZI/LY2zYtFIZmojhFYGGxXYLygbSBoKytDtLtXSIkrzuRM5TtdS6Ux0IZyErDRW/fCMVcg+Okc6O1OL5RHe/8dSJx3oEGaBG3Gr0R0/8AnMIkx4Z5cz7MYIMbpEm/9xLAbxbX4vKGAMoK0u+7Ecg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=htecgroup.com; dmarc=pass action=none header.from=htecgroup.com; dkim=pass header.d=htecgroup.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=htecgroup.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lB0973PTDEdKd4cvRk9a6zojBTq+8RK8P4oPD6Ja1IA=; b=k88IBstbht/ZhfA/kUkIbJ0APX1KsIGGewbyA6LOSgVXzAj5CQf5lGoA3WFxgdjpsUjwrAhEAA9WWjifXeB7pGUMYSSTFnb3WGl+XcdhJCiwRF9o3MMHrjTtPAOX1uC3FNVMgVEafktDKK9AsBXDvUauPo3uZqmagRQoza3ilEt9XO+zgEOL/u/KDy7CGgQSAwAvMU0QD9ncv0Hej+qgvIUyeHRdq0MlF4giYFPT/QQAZ9q1oa/T9VPhoGuIOv6s9pTlMlQ6pl5UCzKHHtM9H5bHCVw9+Dv/uYSVFeX2A5umCMsZ4AZbZwIpbbfXl3B1BtwvxNMi+Cs5aa7vJR542g== Received: from VI1PR09MB4365.eurprd09.prod.outlook.com (2603:10a6:800:32::20) by DUZPR09MB6702.eurprd09.prod.outlook.com (2603:10a6:10:4ad::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8377.17; Wed, 22 Jan 2025 21:06:45 +0000 Received: from VI1PR09MB4365.eurprd09.prod.outlook.com ([fe80::bf2f:b8b2:95e8:f079]) by VI1PR09MB4365.eurprd09.prod.outlook.com ([fe80::bf2f:b8b2:95e8:f079%5]) with mapi id 15.20.8377.009; Wed, 22 Jan 2025 21:06:44 +0000 From: Milica Matic To: "gdb-patches@sourceware.org" CC: Djordje Todorovic , Milos Kalicanin , Simon Marchi , Chao-ying Fu , Andrew Burgess , Kevin Buettner , "Maciej W. Rozycki" Subject: [PATCH^9] gdb: mips: Add MIPSR6 support Thread-Topic: [PATCH^9] gdb: mips: Add MIPSR6 support Thread-Index: AQHbbPN7tmgZshJmDUC0SH+Tk1reCQ== Date: Wed, 22 Jan 2025 21:06:44 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: MSIP_Label_ac629de7-cfdf-49f2-9483-80ca02e7fb52_Enabled=True; MSIP_Label_ac629de7-cfdf-49f2-9483-80ca02e7fb52_SiteId=9f85665b-7efd-4776-9dfe-b6bfda2565ee; MSIP_Label_ac629de7-cfdf-49f2-9483-80ca02e7fb52_SetDate=2025-01-22T21:06:44.147Z; MSIP_Label_ac629de7-cfdf-49f2-9483-80ca02e7fb52_Name=HTEC Proprietary; MSIP_Label_ac629de7-cfdf-49f2-9483-80ca02e7fb52_ContentBits=0; MSIP_Label_ac629de7-cfdf-49f2-9483-80ca02e7fb52_Method=Standard; authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=htecgroup.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: VI1PR09MB4365:EE_|DUZPR09MB6702:EE_ x-ms-office365-filtering-correlation-id: c77ac2f0-c711-44e8-cf3f-08dd3b28ad10 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|366016|1800799024|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?4uZ3SKI4WX4gl01wAM48JmEr78292TrgeKB4fhTcGnRN40mpBYjsXPZHdT?= =?iso-8859-1?Q?zBlhvP13yzuwkqAOQdBKtG8nN0QBjOerCJ7Bayk8gj0yVfq/SA1GXT1rsI?= =?iso-8859-1?Q?UM7VhPx44t6BvlnHkcnPJsX9+uLM2D51JlLVv/QubwuAl4AxTlCdQeaz1t?= =?iso-8859-1?Q?LIqZfSxaODArx54cBGTUYykjS3KbcmZ0+Y/aZnXpUlRASSScPnRLh/ivDt?= =?iso-8859-1?Q?ykoQyfDPnnHahDN+j4LmL7FvdwMxWUtU/U4O3N2XymcJ0z3+Mmnvj8wZjI?= =?iso-8859-1?Q?cSHGy2E9fvTvapJ1yVjsamFx/mOmrh4QGVzXcCDz4i4I2E2E7iXEoc6ErW?= =?iso-8859-1?Q?w0mXCaqsIarh6qN7HZDz0muzUHTkTp2xs0BUIfjpL61vQFJKsixKQOVbYK?= =?iso-8859-1?Q?84fMYYVL7Epn+MwmOx7/uvqExTTfocY8ki3Oh6yJefcAKNBa/lkOXoKPWj?= =?iso-8859-1?Q?UcGaC9cw8MWgpmGf3BrvHKSPbdt8vg896N/x8jwrx6XnUYp7J/QtZfmKHM?= =?iso-8859-1?Q?bOjcwksU0MHKIYSX7b08bAndtG6zkaNh2Er8rWdwDMdZMEghDEOg85ysL3?= =?iso-8859-1?Q?i8RcVQbWv+UFZLVKmMmQK4Rq26XgaUipwuUkQPXQXo7IgakkddtTcZk68a?= =?iso-8859-1?Q?HWhYFxYRO9IODindaKtFoGqcwrgoxNEeN5Mh6Eafa4bc+zlHt28WIm8eWM?= =?iso-8859-1?Q?kveZpbxFh8fSyuABmxTeE2ccq/Kk9WF3VIXLxMsaRQJMowEmXkB2suWpvL?= =?iso-8859-1?Q?9G7ZwMWlSmptTz8WoMP0diE+jJH2F1KPgHCn7OaAkYjxDCaP5sttAtQL+e?= =?iso-8859-1?Q?9Khk/3AU+5P46q8yAJDyG8+qFmoZAKAGaqMkJH6kk3cox4nKa2k8kxPUes?= =?iso-8859-1?Q?S8sEbNaveiiv7Qx6Em0+LEDertnJ0Vg58HcuCZzLOmDoUqYpgcHuSvIN8s?= =?iso-8859-1?Q?p0jIINshENSf4k9S72VeneCtGiZyN6+26odBjdaxdBjT9qQJugwKKzw3eY?= =?iso-8859-1?Q?sqmS8DaNqLWyAVX/N+VA0CJsRZ4gFZ7cAHYVBhyeog+EAWMNSSxTUW15U5?= =?iso-8859-1?Q?szViatear0mIGApBYP4awtMb+pRNuLhbCtX+iX7ovlE3LXekqDvF1dotQY?= =?iso-8859-1?Q?mBH9NNL19TjERh2mEQNA1M8P9MXL5nfGxXErwKUG7SovitnUmlBe8nboGI?= =?iso-8859-1?Q?iY+JWRIZGtUDevuII313+4fJc3BE8Kr92yxkgo44dCqQPAPSvjvsLECXln?= =?iso-8859-1?Q?hXrPx35/wgTzQlBFsn4hwCpk7fB/QgT+Uz4q34z6AHOTfoXrwm5xZCmWrs?= =?iso-8859-1?Q?K/k2Kzo3we3xUswZ4fsHSff9ALoIKWQV0AfT1E32mCwfbzLmOpahYJ75Oq?= =?iso-8859-1?Q?znVoBa3fim3qFst1zSIvTdY51H+fZBDaXFhV0hgmlexKEK3abhBbzk82m4?= =?iso-8859-1?Q?8dhwkP9fZk8+yfuSbSQh4HGt0sM1dvASBDYExDw7mSzRDnSg6J+GGXSqEF?= =?iso-8859-1?Q?qT/gvV94XajkJFGq/3BZOK?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR09MB4365.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(1800799024)(38070700018); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?bTQ06Z9xqvIWLKaCiToMHSMzikk2IlxEKot6HDVWEHKRJMNCWwvI69W8W5?= =?iso-8859-1?Q?6dky5VSx96KN+HiRjDtmQ6sJluUymNewFNXNACUvJ97pGsAc02YZ6/UqSf?= =?iso-8859-1?Q?d5gCWI+vlEmHbDpV345qrbeh1Fig2vWO2XAC4RgnpFKnuKnKG76Gn9fJYO?= =?iso-8859-1?Q?hvZARp8+G66om6MCMvEOXwLINE/IoJ8PwZGhGScZzlwnzNHlNhyr2PvbJQ?= =?iso-8859-1?Q?FQvBwJ1wxi5qZvFMrKeSVYciQRHgv6xh7KXEYddRKgOa6PY70aME3wELR+?= =?iso-8859-1?Q?mgk6Z7w2oSzaSNWD4xpInynaYUas5OvGxl+O1KxSeXUe8Nkx9U3XF8rdki?= =?iso-8859-1?Q?EdfgjpsjTYHBV+k54UuxCFzrBw1P24v8m1Mwuuu0U2z5gNIgprBxAOnGrj?= =?iso-8859-1?Q?7bVZBvxkL1CHh/N4uqp50HogX2XdAI8RMFdNbxXqA0GwTWkYpS2Y4h02dD?= =?iso-8859-1?Q?NvVlR8/GxoP4+oN977QBYwVz+rMBE9zR0vf8TLCUCefHOn9vHV7f0+HlNy?= =?iso-8859-1?Q?BoK/k9+Idtla8YnmlHvygBYCIbSJ49H4p7iQ0i0kAvTPgD/7AdzxpJKowH?= =?iso-8859-1?Q?Doa7HSD203Bjcbc313NcRFWxSkhUHddEs348ZuKI8jYxKUJZnKjumnCWIm?= =?iso-8859-1?Q?q/WcDZpr3yiBd6Cjn7v9WsHcxOI8BY3+iHF0QzZ+oWSw5eiA34peQvToN7?= =?iso-8859-1?Q?KdGVxYlYKaYCbzvqLPzMEdIe6jIJKsIploujzp+uLMc/2Gazp1Yv/+/QTa?= =?iso-8859-1?Q?iXyPa70VdXImkf3vQvj1B2iz+Zup4lq2UxNMCNlzXUvunfOAMo0NbGEaVJ?= =?iso-8859-1?Q?3sS/9sN06vjTzZtPaqnp9J+pklEqVHKhs39UoQuXViHQ5m73vHI953wD1I?= =?iso-8859-1?Q?vhiar5nfmeyVXAFFPxH9TTSplUAFcY+uw5B713DseGq1Riif08fLeT+mAE?= =?iso-8859-1?Q?moiwRe4lW+qM19fm+miMTTm0pPW/e1w+H0wyd1NmPILjHC6fjKbfjRrRvZ?= =?iso-8859-1?Q?rPkUj1Ncx6295hys9w2ay85smRTQmqWlA/ETJ928+R16oH0dd3GGgDaP5d?= =?iso-8859-1?Q?GRJkPEZyS0Uaf4pAIqO33TxNJcSwlUiHUC5C5Br8O+JHQkFV88ieSLwUOa?= =?iso-8859-1?Q?earhkmkkeH/bBZHiCTYmxwT1FZES9bJ41ggBkPkDr2gFsWOruxs0txXKKO?= =?iso-8859-1?Q?HKtUCn9WRSfFiJl1VazgIccFUl24s4zNivgoKcijh2DLXhclxxgtV1DqNb?= =?iso-8859-1?Q?zoVkExPpLmmWRRl/VMA7HWwF+0eDVmLH0wEwxtmEYT6DUAqhUDOOnGn49I?= =?iso-8859-1?Q?P3t3diXFjLtkE2GZ2H0ugFu6Q2Le+Yz49FBinCuDXID3EQ8sufbAa+nAA6?= =?iso-8859-1?Q?nilEh+q6y1ngAVbiFMErcW38OQl2i5V5qiW6fiJPw4BBwEPFB6K8KgtZPR?= =?iso-8859-1?Q?zU832cg+3EZ2o3d6J7sk86uxzq6WWKvMl1qax1GV5gxXAw5EB2RRx/n+Ic?= =?iso-8859-1?Q?oKi6D4nKbFoZwByaITeuG3/Ny8iRsgpJFMmJJa5RT/FNo4XcXhtxtk6pn1?= =?iso-8859-1?Q?YrEV5ArLIXm1l4qQ/zovVxTTrNYK6cABAEQAveap/XG7LA0MuX4zVWUQP0?= =?iso-8859-1?Q?D+eYzQ6WvGR2w+fEBULqzGY8o84l+eLKtM?= Content-Type: multipart/mixed; boundary="_002_PR3PR09MB4361342BC48F646B3668236C8FE12PR3PR09MB4361eurp_" MIME-Version: 1.0 X-OriginatorOrg: htecgroup.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: VI1PR09MB4365.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c77ac2f0-c711-44e8-cf3f-08dd3b28ad10 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Jan 2025 21:06:44.4699 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9f85665b-7efd-4776-9dfe-b6bfda2565ee X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: CGCv0S9xgraWwdIQWp7kmV82In0i3mkSu1IMcOkcNyuCUQMF9cecVPt3n4peyZLMHxonFomPN1uKx8vNw5c92JrRqR7KXx0eqf+oSY3J9CE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DUZPR09MB6702 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org --_002_PR3PR09MB4361342BC48F646B3668236C8FE12PR3PR09MB4361eurp_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable HTEC Proprietary Thank you so much for your suggestions. Kind Regards, Milica --_002_PR3PR09MB4361342BC48F646B3668236C8FE12PR3PR09MB4361eurp_ Content-Type: text/x-patch; name="0001-PATCH-9-gdb-mips-Add-MIPSR6-support.patch" Content-Description: 0001-PATCH-9-gdb-mips-Add-MIPSR6-support.patch Content-Disposition: attachment; filename="0001-PATCH-9-gdb-mips-Add-MIPSR6-support.patch"; size=94192; creation-date="Wed, 22 Jan 2025 21:04:33 GMT"; modification-date="Wed, 22 Jan 2025 21:04:33 GMT" Content-Transfer-Encoding: base64 RnJvbSA4ZGQ5Yzc3ODcwYmE5MGVkNTU1NmE1NzAxMTEzNThhOWRlZjA5Zjg0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWxpY2EgTWF0aWMgPG1pbGljYS5tYXRpY0BodGVjZ3JvdXAu Y29tPgpEYXRlOiBXZWQsIDIyIEphbiAyMDI1IDE3OjUyOjQ0ICswMTAwClN1YmplY3Q6IFtQQVRD SF45XSBnZGI6IG1pcHM6IEFkZCBNSVBTUjYgc3VwcG9ydAoKSW50cm9kdWNlIG5ldyBpbnN0cnVj dGlvbiBlbmNvZGluZ3MgZnJvbSBSZWxlYXNlIDYgb2YgdGhlIE1JUFMKYXJjaGl0ZWN0dXJlIFsx XS4gU3VwcG9ydCBicmVha3BvaW50cyBhbmQgc2luZ2xlIHN0ZXBwaW5nIHdpdGgKY29tcGFjdCBi cmFuY2hlcywgZm9yYmlkZGVuIHNsb3RzLCBuZXcgYnJhbmNoIGluc3RydWN0aW9uIGFuZApuZXcg YXRvbWljIGxvYWQtc3RvcmUgaW5zdHJ1Y3Rpb24gZW5jb2RpbmdzLgoKQ2hhbmdlcyBmcm9tIHY4 OiBBcHBseSBzdWdnZXN0aW9ucyBwcm92aWRlZCBieSBLZXZpbiBCdWV0dG5lciBhbmQgTWFjaWVq IFcuIFJvenlja2kuCkFkZGl0aW9uYWx5LCBmb3JtYXQgbWlwcy10ZGVwLmMgY29kZSBhcyBkZXNj cmliZWQgb24gbGluayA6Cmh0dHBzOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kvSW50ZXJuYWxz JTIwR0RCLUMtQ29kaW5nLVN0YW5kYXJkcwoKWzFdICJNSVBTNjQgQXJjaGl0ZWN0dXJlIGZvciBQ cm9ncmFtbWVycyBWb2x1bWUgSUktQTogVGhlIE1JUFM2NAogICAgSW5zdHJ1Y3Rpb24gU2V0IFJl ZmVyZW5jZSBNYW51YWwiLCBEb2N1bWVudCBOdW1iZXI6IE1EMDAwODcsCiAgICBSZXZpc2lvbiA2 LjA2LCBEZWNlbWJlciAxNSwgMjAxNiwgU2VjdGlvbiAzICJUaGUgTUlQUzY0CiAgICBJbnN0cnVj dGlvbiBTZXQiLCBwcC4gNDItNTMwCmh0dHBzOi8vczMtZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20v ZG93bmxvYWRzLW1pcHMvZG9jdW1lbnRzL01EMDAwODctMkItTUlQUzY0QklTLUFGUC02LjA2LnBk ZgoyMDI1LTAxLTIyCkFuZHJldyBCZW5uZXR0ICA8YW5kcmV3LmJlbm5ldHRAaW1ndGVjLmNvbT4K TWF0dGhldyBGb3J0dW5lICA8bWF0dGhldy5mb3J0dW5lQG1pcHMuY29tPgpGYXJheiBTaGFoYmF6 a2VyICA8ZnNoYWhiYXprZXJAd2F2ZWNvbXAuY29tPgotLS0KIGdkYi9taXBzLXRkZXAuYyAgICAg ICAgICAgICAgICAgICAgICAgfCA4NDYgKysrKysrKysrKysrKysrKysrKy0tLS0tCiBnZGIvdGVz dHN1aXRlL2dkYi5hcmNoL21pcHMtNjQtcjYuYyAgIHwgOTE2ICsrKysrKysrKysrKysrKysrKysr KysrKysrCiBnZGIvdGVzdHN1aXRlL2dkYi5hcmNoL21pcHMtNjQtcjYuZXhwIHwgIDc2ICsrKwog MyBmaWxlcyBjaGFuZ2VkLCAxNjY2IGluc2VydGlvbnMoKyksIDE3MiBkZWxldGlvbnMoLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5hcmNoL21pcHMtNjQtcjYuYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvbWlwcy02NC1yNi5leHAKCmRp ZmYgLS1naXQgYS9nZGIvbWlwcy10ZGVwLmMgYi9nZGIvbWlwcy10ZGVwLmMKaW5kZXggYTI4Yzk5 ZDMzNjYuLjdhYjI3ZTkyNjVlIDEwMDY0NAotLS0gYS9nZGIvbWlwcy10ZGVwLmMKKysrIGIvZ2Ri L21pcHMtdGRlcC5jCkBAIC0xLDYgKzEsNiBAQAogLyogVGFyZ2V0LWRlcGVuZGVudCBjb2RlIGZv ciB0aGUgTUlQUyBhcmNoaXRlY3R1cmUsIGZvciBHREIsIHRoZSBHTlUgRGVidWdnZXIuCiAKLSAg IENvcHlyaWdodCAoQykgMTk4OC0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor ICAgQ29weXJpZ2h0IChDKSAxOTg4LTIwMjUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CiAKICAgIENvbnRyaWJ1dGVkIGJ5IEFsZXNzYW5kcm8gRm9yaW4oYWZAY3MuY211LmVkdSkgYXQg Q01VCiAgICBhbmQgYnkgUGVyIEJvdGhuZXIoYm90aG5lckBjcy53aXNjLmVkdSkgYXQgVS5XaXNj b25zaW4uCkBAIC03Niw4ICs3NiwxMiBAQCBzdGF0aWMgaW50IG1pcHMxNl9pbnNuX2F0X3BjX2hh c19kZWxheV9zbG90IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKIHN0YXRpYyB2b2lkIG1pcHNf cHJpbnRfZmxvYXRfaW5mbyAoc3RydWN0IGdkYmFyY2ggKiwgc3RydWN0IHVpX2ZpbGUgKiwKIAkJ CQkgICBjb25zdCBmcmFtZV9pbmZvX3B0ciAmLCBjb25zdCBjaGFyICopOwogCi0vKiBBIHVzZWZ1 bCBiaXQgaW4gdGhlIENQMCBzdGF0dXMgcmVnaXN0ZXIgKE1JUFNfUFNfUkVHTlVNKS4gICovCi0v KiBUaGlzIGJpdCBpcyBzZXQgaWYgd2UgYXJlIGVtdWxhdGluZyAzMi1iaXQgRlBScyBvbiBhIDY0 LWJpdCBjaGlwLiAgKi8KK3N0YXRpYyB2b2lkCittaXBzX3JlYWRfZnBfcmVnaXN0ZXJfc2luZ2xl IChjb25zdCBmcmFtZV9pbmZvX3B0ciAmZnJhbWUsIGludCByZWdubywKKwkJCSAgICAgIGdkYjo6 YXJyYXlfdmlldzxnZGJfYnl0ZT4gcmFyZV9idWZmZXIpOworCisvKiBBIHVzZWZ1bCBiaXQgaW4g dGhlIENQMCBzdGF0dXMgcmVnaXN0ZXIgKE1JUFNfUFNfUkVHTlVNKS4KKyAgIFRoaXMgYml0IGlz IHNldCBpZiB3ZSBhcmUgZW11bGF0aW5nIDMyLWJpdCBGUFJzIG9uIGEgNjQtYml0IGNoaXAuICAq LwogI2RlZmluZSBTVDBfRlIgKDEgPDwgMjYpCiAKIC8qIFRoZSBzaXplcyBvZiBmbG9hdGluZyBw b2ludCByZWdpc3RlcnMuICAqLwpAQCAtMjIwLDYgKzIyNCw3IEBAIHN0YXRpYyBzdGQ6OnN0cmlu ZyBtaXBzX2Rpc2Fzc2VtYmxlcl9vcHRpb25zOwogICAgdG8gdGhlIEFCSSB3ZSBoYXZlIHNlbGVj dGVkLCBwZXJoYXBzIHZpYSBhIGBzZXQgbWlwcyBhYmkgLi4uJwogICAgb3ZlcnJpZGUsIHJhdGhl ciB0aGFuIG9uZXMgaW5mZXJyZWQgZnJvbSB0aGUgQUJJIHNldCBpbiB0aGUgRUxGCiAgICBoZWFk ZXJzIG9mIHRoZSBiaW5hcnkgZmlsZSBzZWxlY3RlZCBmb3IgZGVidWdnaW5nLiAgKi8KKwogc3Rh dGljIGNvbnN0IGNoYXIgbWlwc19kaXNhc3NlbWJsZXJfb3B0aW9uc19vMzJbXSA9ICJncHItbmFt ZXM9MzIiOwogc3RhdGljIGNvbnN0IGNoYXIgbWlwc19kaXNhc3NlbWJsZXJfb3B0aW9uc19uMzJb XSA9ICJncHItbmFtZXM9bjMyIjsKIHN0YXRpYyBjb25zdCBjaGFyIG1pcHNfZGlzYXNzZW1ibGVy X29wdGlvbnNfbjY0W10gPSAiZ3ByLW5hbWVzPTY0IjsKQEAgLTMyNSw2ICszMzAsMTcgQEAgbWlw c19hYmlfcmVnc2l6ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCiAgICAgfQogfQogCisvKiBS ZXR1cm4gdHJ1ZSBpZiB0aGUgZ2RiYXJjaCBpcyBiYXNlZCBvbiBNSVBTIFJlbGVhc2UgNi4gICov CisKK3N0YXRpYyBib29sCitpc19taXBzcjZfaXNhIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkK K3sKKyAgY29uc3Qgc3RydWN0IGJmZF9hcmNoX2luZm8gKmluZm8gPSBnZGJhcmNoX2JmZF9hcmNo X2luZm8gKGdkYmFyY2gpOworCisgIHJldHVybiAoaW5mby0+bWFjaCA9PSBiZmRfbWFjaF9taXBz aXNhMzJyNgorCSAgfHwgaW5mby0+bWFjaCA9PSBiZmRfbWFjaF9taXBzaXNhNjRyNik7Cit9CisK IC8qIE1JUFMxNi9taWNyb01JUFMgZnVuY3Rpb24gYWRkcmVzc2VzIGFyZSBvZGQgKGJpdCAwIGlz IHNldCkuICBIZXJlCiAgICBhcmUgc29tZSBmdW5jdGlvbnMgdG8gaGFuZGxlIGFkZHJlc3NlcyBh c3NvY2lhdGVkIHdpdGggY29tcHJlc3NlZAogICAgY29kZSBpbmNsdWRpbmcgYnV0IG5vdCBsaW1p dGVkIHRvIHRlc3RpbmcsIHNldHRpbmcsIG9yIGNsZWFyaW5nCkBAIC02MzMsNyArNjQ5LDYgQEAg c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBtaXBzX2xpbnV4X3JlZ19uYW1lc1tOVU1fTUlQU19Q Uk9DRVNTT1JfUkVHU10gPSB7CiAgICJmc3IiLCAiZmlyIgogfTsKIAotCiAvKiBSZXR1cm4gdGhl IG5hbWUgb2YgdGhlIHJlZ2lzdGVyIGNvcnJlc3BvbmRpbmcgdG8gUkVHTk8uICAqLwogc3RhdGlj IGNvbnN0IGNoYXIgKgogbWlwc19yZWdpc3Rlcl9uYW1lIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwgaW50IHJlZ25vKQpAQCAtNjU3LDcgKzY3Miw3IEBAIG1pcHNfcmVnaXN0ZXJfbmFtZSAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWdubykKIAogICBlbnVtIG1pcHNfYWJpIGFiaSA9 IG1pcHNfYWJpIChnZGJhcmNoKTsKIAotICAvKiBNYXAgW2dkYmFyY2hfbnVtX3JlZ3MgLi4gMipn ZGJhcmNoX251bV9yZWdzKSBvbnRvIHRoZSByYXcgcmVnaXN0ZXJzLCAKKyAgLyogTWFwIFtnZGJh cmNoX251bV9yZWdzIC4uIDIqZ2RiYXJjaF9udW1fcmVncykgb250byB0aGUgcmF3IHJlZ2lzdGVy cywKICAgICAgYnV0IHRoZW4gZG9uJ3QgbWFrZSB0aGUgcmF3IHJlZ2lzdGVyIG5hbWVzIHZpc2li bGUuICBUaGlzICh1cHBlcikKICAgICAgcmFuZ2Ugb2YgdXNlciB2aXNpYmxlIHJlZ2lzdGVyIG51 bWJlcnMgYXJlIHRoZSBwc2V1ZG8tcmVnaXN0ZXJzLgogCkBAIC02NjgsNiArNjgzLDcgQEAgbWlw c19yZWdpc3Rlcl9uYW1lIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ25vKQogICAg ICBjb25maWd1cmVkIHRvIGJlIDMyLWJpdHMgd2lkZS4gIFRoZSByZWdpc3RlcnMgdGhhdCB0aGUg dXNlcgogICAgICBzZWVzIC0gdGhlIHBzZXVkbyByZWdpc3RlcnMgLSBtYXRjaCB0aGUgdXNlcnMg ZXhwZWN0YXRpb25zCiAgICAgIGdpdmVuIHRoZSBwcm9ncmFtbWluZyBtb2RlbCBiZWluZyB1c2Vk LiAgKi8KKwogICBpbnQgcmF3bnVtID0gcmVnbm8gJSBnZGJhcmNoX251bV9yZWdzIChnZGJhcmNo KTsKICAgaWYgKHJlZ25vIDwgZ2RiYXJjaF9udW1fcmVncyAoZ2RiYXJjaCkpCiAgICAgcmV0dXJu ICIiOwpAQCAtMTAwNSw3ICsxMDIxLDcgQEAgbWlwc192YWx1ZV90b19yZWdpc3RlciAoY29uc3Qg ZnJhbWVfaW5mb19wdHIgJmZyYW1lLCBpbnQgcmVnbnVtLAogICAgICAgc2l6ZV90IGxlbiA9IHR5 cGUtPmxlbmd0aCAoKTsKICAgICAgIGZyYW1lX2luZm9fcHRyIG5leHRfZnJhbWUgPSBnZXRfbmV4 dF9mcmFtZV9zZW50aW5lbF9va2F5IChmcmFtZSk7CiAKLSAgICAgIC8qIFNpZ24gZXh0ZW5kIHZh bHVlcywgaXJyZXNwZWN0aXZlIG9mIHR5cGUsIHRoYXQgYXJlIHN0b3JlZCB0byAKKyAgICAgIC8q IFNpZ24gZXh0ZW5kIHZhbHVlcywgaXJyZXNwZWN0aXZlIG9mIHR5cGUsIHRoYXQgYXJlIHN0b3Jl ZCB0bwogCSBhIDY0LWJpdCBnZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXIuICAoMzItYml0IHVuc2ln bmVkIHZhbHVlcwogCSBhcmUgc3RvcmVkIGFzIHNpZ25lZCBxdWFudGl0aWVzIHdpdGhpbiBhIDY0 LWJpdCByZWdpc3Rlci4KIAkgV2hlbiBwZXJmb3JtaW5nIGFuIG9wZXJhdGlvbiwgaW4gY29tcGls ZWQgY29kZSwgdGhhdCBjb21iaW5lcwpAQCAtMTA3NCwyMSArMTA5MCwyNiBAQCBtaXBzX3JlZ2lz dGVyX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVnbnVtKQogICAgICAgZWxz ZSBpZiAoZ2RiYXJjaF9vc2FiaSAoZ2RiYXJjaCkgIT0gR0RCX09TQUJJX0xJTlVYCiAJICAgICAg ICYmIHJhd251bSA+PSBNSVBTX0ZJUlNUX0VNQkVEX1JFR05VTQogCSAgICAgICAmJiByYXdudW0g PD0gTUlQU19MQVNUX0VNQkVEX1JFR05VTSkKKwl7CiAJLyogVGhlIHBzZXVkby9jb29rZWQgdmll dyBvZiB0aGUgZW1iZWRkZWQgcmVnaXN0ZXJzIGlzIGFsd2F5cwogCSAgIDMyLWJpdC4gIFRoZSBy YXcgdmlldyBpcyBoYW5kbGVkIGJlbG93LiAgKi8KLQlyZXR1cm4gYnVpbHRpbl90eXBlIChnZGJh cmNoKS0+YnVpbHRpbl9pbnQzMjsKKwkgIHJldHVybiBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5i dWlsdGluX2ludDMyOworCX0KICAgICAgIGVsc2UgaWYgKHRkZXAtPm1pcHM2NF90cmFuc2ZlcnNf MzJiaXRfcmVnc19wKQorCXsKIAkvKiBUaGUgdGFyZ2V0LCB3aGlsZSBwb3NzaWJseSB1c2luZyBh IDY0LWJpdCByZWdpc3RlciBidWZmZXIsCiAJICAgaXMgb25seSB0cmFuc2ZlcnJpbmcgMzItYml0 cyBvZiBlYWNoIGludGVnZXIgcmVnaXN0ZXIuCiAJICAgUmVmbGVjdCB0aGlzIGluIHRoZSBjb29r ZWQvcHNldWRvIChBQkkpIHJlZ2lzdGVyIHZhbHVlLiAgKi8KLQlyZXR1cm4gYnVpbHRpbl90eXBl IChnZGJhcmNoKS0+YnVpbHRpbl9pbnQzMjsKKwkgIHJldHVybiBidWlsdGluX3R5cGUgKGdkYmFy Y2gpLT5idWlsdGluX2ludDMyOworCX0KICAgICAgIGVsc2UgaWYgKG1pcHNfYWJpX3JlZ3NpemUg KGdkYmFyY2gpID09IDQpCisJewogCS8qIFRoZSBBQkkgaXMgcmVzdHJpY3RlZCB0byAzMi1iaXQg cmVnaXN0ZXJzICh0aGUgSVNBIGNvdWxkIGJlCiAJICAgMzItIG9yIDY0LWJpdCkuICAqLwotCXJl dHVybiBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2ludDMyOworCSAgcmV0dXJuIGJ1 aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5faW50MzI7CisJfQogICAgICAgZWxzZQotCS8q IDY0LWJpdCBBQkkuICAqLwotCXJldHVybiBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGlu X2ludDY0OworCXJldHVybiBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2ludDY0OyAv KiA2NC1iaXQgQUJJLiAgKi8KICAgICB9CiB9CiAKQEAgLTEyMzYsNiArMTI1Nyw3IEBAIG1pcHNf cGNfaXNfbWlwczE2IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIG1lbWFkZHIp CiAgICAgIGVsZnJlYWQuYyBpbiB0aGUgaGlnaCBiaXQgb2YgdGhlIGluZm8gZmllbGQuICBVc2Ug dGhpcyB0byBkZWNpZGUKICAgICAgaWYgdGhlIGZ1bmN0aW9uIGlzIE1JUFMxNi4gIE90aGVyd2lz ZSBpZiBiaXQgMCBvZiB0aGUgYWRkcmVzcyBpcwogICAgICBzZXQsIHRoZW4gRUxGIGZpbGUgZmxh Z3Mgd2lsbCB0ZWxsIGlmIHRoaXMgaXMgYSBNSVBTMTYgZnVuY3Rpb24uICAqLworCiAgIGJvdW5k X21pbmltYWxfc3ltYm9sIHN5bQogICAgID0gbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjICht YWtlX2NvbXBhY3RfYWRkciAobWVtYWRkcikpOwogICBpZiAoc3ltLm1pbnN5bSkKQEAgLTEyNTQs NiArMTI3Niw3IEBAIG1pcHNfcGNfaXNfbWljcm9taXBzIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwgQ09SRV9BRERSIG1lbWFkZHIpCiAgICAgIGlmIHRoZSBmdW5jdGlvbiBpcyBtaWNyb01JUFMu ICBPdGhlcndpc2UgaWYgYml0IDAgb2YgdGhlIGFkZHJlc3MKICAgICAgaXMgc2V0LCB0aGVuIEVM RiBmaWxlIGZsYWdzIHdpbGwgdGVsbCBpZiB0aGlzIGlzIGEgbWljcm9NSVBTCiAgICAgIGZ1bmN0 aW9uLiAgKi8KKwogICBib3VuZF9taW5pbWFsX3N5bWJvbCBzeW0KICAgICA9IGxvb2t1cF9taW5p bWFsX3N5bWJvbF9ieV9wYyAobWFrZV9jb21wYWN0X2FkZHIgKG1lbWFkZHIpKTsKICAgaWYgKHN5 bS5taW5zeW0pCkBAIC0xMjczLDYgKzEyOTYsNyBAQCBtaXBzX3BjX2lzYSAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsIENPUkVfQUREUiBtZW1hZGRyKQogICAgICB0aGlzIHRvIGRlY2lkZSBpZiB0 aGUgZnVuY3Rpb24gaXMgTUlQUzE2IG9yIG1pY3JvTUlQUyBvciBub3JtYWwKICAgICAgTUlQUy4g IE90aGVyd2lzZSBpZiBiaXQgMCBvZiB0aGUgYWRkcmVzcyBpcyBzZXQsIHRoZW4gRUxGIGZpbGUK ICAgICAgZmxhZ3Mgd2lsbCB0ZWxsIGlmIHRoaXMgaXMgYSBNSVBTMTYgb3IgYSBtaWNyb01JUFMg ZnVuY3Rpb24uICAqLworCiAgIGJvdW5kX21pbmltYWxfc3ltYm9sIHN5bQogICAgID0gbG9va3Vw X21pbmltYWxfc3ltYm9sX2J5X3BjIChtYWtlX2NvbXBhY3RfYWRkciAobWVtYWRkcikpOwogICBp ZiAoc3ltLm1pbnN5bSkKQEAgLTE1NDEsNiArMTU2NSw3IEBAIG1pcHNfZmV0Y2hfaW5zdHJ1Y3Rp b24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogI2RlZmluZSBiMHMxMV9vcCh4KSAoKHgpICYg MHg3ZmYpCiAjZGVmaW5lIGIwczEyX2ltbSh4KSAoKHgpICYgMHhmZmYpCiAjZGVmaW5lIGIwczE2 X2ltbSh4KSAoKHgpICYgMHhmZmZmKQorI2RlZmluZSBiMHMyMV9pbW0oeCkgKCh4KSAmIDB4MWZm ZmZmKQogI2RlZmluZSBiMHMyNl9pbW0oeCkgKCh4KSAmIDB4M2ZmZmZmZikKICNkZWZpbmUgYjZz MTBfZXh0KHgpICgoKHgpID4+IDYpICYgMHgzZmYpCiAjZGVmaW5lIGIxMXM1X3JlZyh4KSAoKCh4 KSA+PiAxMSkgJiAweDFmKQpAQCAtMTU2Niw3ICsxNTkxLDcgQEAgbWlwc19pbnNuX3NpemUgKGVu dW0gbWlwc19pc2EgaXNhLCBVTE9OR0VTVCBpbnNuKQogICAgICAgZWxzZQogCXJldHVybiBNSVBT X0lOU04xNl9TSVpFOwogICAgIGNhc2UgSVNBX01JUFM6Ci0JcmV0dXJuIE1JUFNfSU5TTjMyX1NJ WkU7CisgICAgICByZXR1cm4gTUlQU19JTlNOMzJfU0laRTsKICAgICB9CiAgIGludGVybmFsX2Vy cm9yIChfKCJpbnZhbGlkIElTQSIpKTsKIH0KQEAgLTE1NzcsNiArMTYwMiwyNCBAQCBtaXBzMzJf cmVsYXRpdmVfb2Zmc2V0IChVTE9OR0VTVCBpbnN0KQogICByZXR1cm4gKChpdHlwZV9pbW1lZGlh dGUgKGluc3QpIF4gMHg4MDAwKSAtIDB4ODAwMCkgPDwgMjsKIH0KIAorLyogQ2FsY3VsYXRlcyBw Yy1yZWxhdGl2ZSBvZmZzZXQgZnJvbSBsb3dlciAyMSBiaXRzIG9mIGluc3RydWN0aW9uLgorICAg VXNlZCBieSBCRVFaQywgQk5FWkMuICAqLworCitzdGF0aWMgTE9OR0VTVAorbWlwczMyX3JlbGF0 aXZlX29mZnNldDIxIChVTE9OR0VTVCBpbnNuKQoreworICByZXR1cm4gKChiMHMyMV9pbW0gKGlu c24pIF4gMHgxMDAwMDApIC0gMHgxMDAwMDApIDw8IDI7Cit9CisKKy8qIENhbGN1bGF0ZXMgcGMt cmVsYXRpdmUgb2Zmc2V0IGZyb20gbG93ZXIgMjYgYml0cyBvZiBhbiBpbnN0cnVjdGlvbi4KKyAg IFVzZWQgYnkgQkMsIEJBTEMuICAqLworCitzdGF0aWMgTE9OR0VTVAorbWlwczMyX3JlbGF0aXZl X29mZnNldDI2IChVTE9OR0VTVCBpbnNuKQoreworICByZXR1cm4gKChiMHMyNl9pbW0gKGluc24p IF4gMHgyMDAwMDAwKSAtIDB4MjAwMDAwMCkgPDwgMjsKK30KKwogLyogRGV0ZXJtaW5lIHRoZSBh ZGRyZXNzIG9mIHRoZSBuZXh0IGluc3RydWN0aW9uIGV4ZWN1dGVkIGFmdGVyIHRoZSBJTlNUCiAg ICBmbG9hdGluZyBjb25kaXRpb24gYnJhbmNoIGluc3RydWN0aW9uIGF0IFBDLiAgQ09VTlQgc3Bl Y2lmaWVzIHRoZQogICAgbnVtYmVyIG9mIHRoZSBmbG9hdGluZyBjb25kaXRpb24gYml0cyB0ZXN0 ZWQgYnkgdGhlIGJyYW5jaC4gICovCkBAIC0xNTkzLDggKzE2MzYsMTAgQEAgbWlwczMyX2JjMV9w YyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCiAg IGludCBjb25kOwogCiAgIGlmIChmY3NyID09IC0xKQotICAgIC8qIE5vIHdheSB0byBoYW5kbGU7 IGl0J2xsIG1vc3QgbGlrZWx5IHRyYXAgYW55d2F5LiAgKi8KLSAgICByZXR1cm4gcGM7CisgICAg eworICAgICAgLyogTm8gd2F5IHRvIGhhbmRsZTsgaXQnbGwgbW9zdCBsaWtlbHkgdHJhcCBhbnl3 YXkuICAqLworICAgICAgcmV0dXJuIHBjOworICAgIH0KIAogICBmY3MgPSByZWdjYWNoZV9yYXdf Z2V0X3Vuc2lnbmVkIChyZWdjYWNoZSwgZmNzcik7CiAgIGNvbmQgPSAoKGZjcyA+PiAyNCkgJiAw eGZlKSB8ICgoZmNzID4+IDIzKSAmIDB4MDEpOwpAQCAtMTYyNiwxNSArMTY3MSw4NSBAQCBpc19v Y3Rlb25fYmJpdF9vcCAoaW50IG9wLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKIHsKICAgaWYg KCFpc19vY3Rlb24gKGdkYmFyY2gpKQogICAgIHJldHVybiAwOwotICAvKiBCQklUMCBpcyBlbmNv ZGVkIGFzIExXQzI6IDExMCAwMTAuICAqLwotICAvKiBCQklUMDMyIGlzIGVuY29kZWQgYXMgTERD MjogMTEwIDExMC4gICovCi0gIC8qIEJCSVQxIGlzIGVuY29kZWQgYXMgU1dDMjogMTExIDAxMC4g ICovCi0gIC8qIEJCSVQxMzIgaXMgZW5jb2RlZCBhcyBTREMyOiAxMTEgMTEwLiAgKi8KKyAgLyog QkJJVDAgaXMgZW5jb2RlZCBhcyBMV0MyOiAxMTAgMDEwLgorICAgICBCQklUMDMyIGlzIGVuY29k ZWQgYXMgTERDMjogMTEwIDExMC4KKyAgICAgQkJJVDEgaXMgZW5jb2RlZCBhcyBTV0MyOiAxMTEg MDEwLgorICAgICBCQklUMTMyIGlzIGVuY29kZWQgYXMgU0RDMjogMTExIDExMC4gICovCiAgIGlm IChvcCA9PSA1MCB8fCBvcCA9PSA1NCB8fCBvcCA9PSA1OCB8fCBvcCA9PSA2MikKICAgICByZXR1 cm4gMTsKICAgcmV0dXJuIDA7CiB9CiAKKy8qIERldGVjdHMgd2hldGhlciBvdmVyZmxvdyBvY2N1 cnMgd2hlbiBhZGRpbmcgdHdvIDMyLWJpdCBpbnRlZ2Vycy4gICovCisKK3N0YXRpYyBib29sCitp c19hZGQzMmJpdF9vdmVyZmxvdyAoaW50MzJfdCBhLCBpbnQzMl90IGIpCit7CisgIGludDMyX3Qg ciA9ICh1aW50MzJfdCkgYSArICh1aW50MzJfdCkgYjsKKyAgcmV0dXJuIChhIDwgMCAmJiBiIDwg MCAmJiByID49IDApIHx8IChhID49IDAgJiYgYiA+PSAwICYmIHIgPCAwKTsKK30KKworLyogSGVs cGVyIGZ1bmN0aW9uIGZvciBCT1ZDIGFuZCBCTlZDIGluc3RydWN0aW9ucyB3aGljaCBhcmUgaW50 cm9kdWNlZCBpbgorICAgTUlQUyBSZWxlYXNlIDYuCisKKyAgIEJPVkMgcGVyZm9ybXMgYSBzaWdu ZWQgMzItYml0IGFkZGl0aW9uIG9mIHR3byByZWdpc3RlcnMuIEJPVkMgZGlzY2FyZHMgdGhlCisg ICBzdW0sIGJ1dCBkZXRlY3RzIHNpZ25lZCAzMi1iaXQgaW50ZWdlciBvdmVyZmxvdyBvZiB0aGUg c3VtIChhbmQgdGhlIGlucHV0cywKKyAgIGluIE1JUFM2NCksIGFuZCBicmFuY2hlcyBpZiBzdWNo IG92ZXJmbG93IGlzIGRldGVjdGVkLgorCisgICBCTlZDIGRvZXMgdGhlIG9wcG9zaXRlLCBpLmUu IGJyYW5jaGVzIGlmIHN1Y2ggb3ZlcmZsb3cgaXMgbm90IGRldGVjdGVkLiAgKi8KKworc3RhdGlj IGJvb2wKK2lzX2FkZDY0Yml0X292ZXJmbG93IChpbnQ2NF90IGEsIGludDY0X3QgYikKK3sKKyAg aWYgKGEgIT0gKGludDMyX3QpIGEpCisgICAgcmV0dXJuIHRydWU7CisgIGlmIChiICE9IChpbnQz Ml90KSBiKQorICAgIHJldHVybiB0cnVlOworICByZXR1cm4gaXNfYWRkMzJiaXRfb3ZlcmZsb3cg KChpbnQzMl90KSBhLCAoaW50MzJfdCkgYik7Cit9CisKKy8qIENhbGN1bGF0ZSBhZGRyZXNzIG9m IG5leHQgaW5zdHJ1Y3Rpb24gYWZ0ZXIgQkxFWi4gICovCisKK3N0YXRpYyBDT1JFX0FERFIKK21p cHMzMl9ibGV6X3BjIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHJlZ2NhY2hlICpy ZWdjYWNoZSwKKwkJVUxPTkdFU1QgaW5zdCwgQ09SRV9BRERSIHBjLCBpbnQgaW52ZXJ0KQorewor ICBpbnQgcnMgPSBpdHlwZV9ycyAoaW5zdCk7CisgIGludCBydCA9IGl0eXBlX3J0IChpbnN0KTsK KyAgTE9OR0VTVCB2YWxfcnMgPSByZWdjYWNoZV9yYXdfZ2V0X3NpZ25lZCAocmVnY2FjaGUsIHJz KTsKKyAgTE9OR0VTVCB2YWxfcnQgPSByZWdjYWNoZV9yYXdfZ2V0X3NpZ25lZCAocmVnY2FjaGUs IHJ0KTsKKyAgVUxPTkdFU1QgdXZhbF9ycyA9IHJlZ2NhY2hlX3Jhd19nZXRfdW5zaWduZWQgKHJl Z2NhY2hlLCBycyk7CisgIFVMT05HRVNUIHV2YWxfcnQgPSByZWdjYWNoZV9yYXdfZ2V0X3Vuc2ln bmVkIChyZWdjYWNoZSwgcnQpOworICBib29sIHRha2VuID0gZmFsc2U7CisgIGludCBkZWxheV9z bG90X3NpemUgPSA0OworCisgIC8qIEJMRVosIEJMRVpMLCBCR1RaLCBCR1RaTCAgKi8KKyAgaWYg KHJ0ID09IDApCisgICAgdGFrZW4gPSAodmFsX3JzIDw9IDApOworICBlbHNlIGlmIChpc19taXBz cjZfaXNhIChnZGJhcmNoKSkKKyAgICB7CisgICAgICAvKiBCTEVaQUxDLCBCR1RaQUxDICAqLwor ICAgICAgaWYgKHJzID09IDAgJiYgcnQgIT0gMCkKKwl0YWtlbiA9ICh2YWxfcnQgPD0gMCk7Cisg ICAgICAvKiBCR0VaQUxDLCBCTFRaQUxDICAqLworICAgICAgZWxzZSBpZiAocnMgPT0gcnQgJiYg cnQgIT0gMCkKKwl0YWtlbiA9ICh2YWxfcnQgPj0gMCk7CisgICAgICAvKiBCR0VVQywgQkxUVUMg ICovCisgICAgICBlbHNlIGlmIChycyAhPSBydCAmJiBycyAhPSAwICYmIHJ0ICE9IDApCisJdGFr ZW4gPSAodXZhbF9ycyA+PSB1dmFsX3J0KTsKKyAgICB9CisKKyAgaWYgKGludmVydCkKKyAgICB0 YWtlbiA9ICF0YWtlbjsKKworICAvKiBDYWxjdWxhdGUgYnJhbmNoIHRhcmdldC4gICovCisgIGlm ICh0YWtlbikKKyAgICBwYyArPSBtaXBzMzJfcmVsYXRpdmVfb2Zmc2V0IChpbnN0KTsKKyAgZWxz ZQorICAgIHBjICs9IGRlbGF5X3Nsb3Rfc2l6ZTsKKworICByZXR1cm4gcGM7Cit9CiAKIC8qIERl dGVybWluZSB3aGVyZSB0byBzZXQgYSBzaW5nbGUgc3RlcCBicmVha3BvaW50IHdoaWxlIGNvbnNp ZGVyaW5nCiAgICBicmFuY2ggcHJlZGljdGlvbi4gICovCkBAIC0xNjQ1LDE0ICsxNzYwLDE4IEBA IG1pcHMzMl9uZXh0X3BjIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBDT1JFX0FERFIgcGMp CiAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gcmVnY2FjaGUtPmFyY2ggKCk7CiAgIHVuc2ln bmVkIGxvbmcgaW5zdDsKICAgaW50IG9wOworICBpbnQgbWlwczY0Yml0cmVnID0gMDsKKworICBp ZiAobWlwc19pc2FfcmVnc2l6ZSAoZ2RiYXJjaCkgPT0gOCkKKyAgICBtaXBzNjRiaXRyZWcgPSAx OworCiAgIGluc3QgPSBtaXBzX2ZldGNoX2luc3RydWN0aW9uIChnZGJhcmNoLCBJU0FfTUlQUywg cGMsIE5VTEwpOwogICBvcCA9IGl0eXBlX29wIChpbnN0KTsKLSAgaWYgKChpbnN0ICYgMHhlMDAw MDAwMCkgIT0gMCkJCS8qIE5vdCBhIHNwZWNpYWwsIGp1bXAgb3IgYnJhbmNoCi0JCQkJCSAgIGlu c3RydWN0aW9uLiAgKi8KKyAgaWYgKChpbnN0ICYgMHhlMDAwMDAwMCkgIT0gMCkgLyogTm90IGEg c3BlY2lhbCwganVtcCBvciBicmFuY2ggaW5zdHJ1Y3Rpb24uICAqLwogICAgIHsKLSAgICAgIGlm IChvcCA+PiAyID09IDUpCi0JLyogQkVRTCwgQk5FTCwgQkxFWkwsIEJHVFpMOiBiaXRzIDAxMDF4 eCAqLworICAgICAgaWYgKG9wID4+IDIgPT0gNSAmJiAoKG9wICYgMHgwMikgPT0gMCB8fCBpdHlw ZV9ydCAoaW5zdCkgPT0gMCkpCiAJeworCSAgLyogQkVRTCwgQk5FTCwgQkxFWkwsIEJHVFpMOiBi aXRzIDAxMDF4eCAqLwogCSAgc3dpdGNoIChvcCAmIDB4MDMpCiAJICAgIHsKIAkgICAgY2FzZSAw OgkJLyogQkVRTCAqLwpAQCAtMTY2MCw3ICsxNzc5LDcgQEAgbWlwczMyX25leHRfcGMgKHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGUsIENPUkVfQUREUiBwYykKIAkgICAgY2FzZSAxOgkJLyogQk5F TCAqLwogCSAgICAgIGdvdG8gbmVxX2JyYW5jaDsKIAkgICAgY2FzZSAyOgkJLyogQkxFWkwgKi8K LQkgICAgICBnb3RvIGxlc3NfYnJhbmNoOworCSAgICAgIGdvdG8gbGV6X2JyYW5jaDsKIAkgICAg Y2FzZSAzOgkJLyogQkdUWkwgKi8KIAkgICAgICBnb3RvIGdyZWF0ZXJfYnJhbmNoOwogCSAgICBk ZWZhdWx0OgpAQCAtMTY2OCwyMCArMTc4NywzMCBAQCBtaXBzMzJfbmV4dF9wYyAoc3RydWN0IHJl Z2NhY2hlICpyZWdjYWNoZSwgQ09SRV9BRERSIHBjKQogCSAgICB9CiAJfQogICAgICAgZWxzZSBp ZiAob3AgPT0gMTcgJiYgaXR5cGVfcnMgKGluc3QpID09IDgpCi0JLyogQkMxRiwgQkMxRkwsIEJD MVQsIEJDMVRMOiAwMTAwMDEgMDEwMDAgKi8KLQlwYyA9IG1pcHMzMl9iYzFfcGMgKGdkYmFyY2gs IHJlZ2NhY2hlLCBpbnN0LCBwYyArIDQsIDEpOwotICAgICAgZWxzZSBpZiAob3AgPT0gMTcgJiYg aXR5cGVfcnMgKGluc3QpID09IDkKLQkgICAgICAgJiYgKGl0eXBlX3J0IChpbnN0KSAmIDIpID09 IDApCi0JLyogQkMxQU5ZMkYsIEJDMUFOWTJUOiAwMTAwMDEgMDEwMDEgeHh4MHggKi8KLQlwYyA9 IG1pcHMzMl9iYzFfcGMgKGdkYmFyY2gsIHJlZ2NhY2hlLCBpbnN0LCBwYyArIDQsIDIpOwotICAg ICAgZWxzZSBpZiAob3AgPT0gMTcgJiYgaXR5cGVfcnMgKGluc3QpID09IDEwCi0JICAgICAgICYm IChpdHlwZV9ydCAoaW5zdCkgJiAyKSA9PSAwKQotCS8qIEJDMUFOWTRGLCBCQzFBTlk0VDogMDEw MDAxIDAxMDEwIHh4eDB4ICovCi0JcGMgPSBtaXBzMzJfYmMxX3BjIChnZGJhcmNoLCByZWdjYWNo ZSwgaW5zdCwgcGMgKyA0LCA0KTsKLSAgICAgIGVsc2UgaWYgKG9wID09IDI5KQotCS8qIEpBTFg6 IDAxMTEwMSAqLwotCS8qIFRoZSBuZXcgUEMgd2lsbCBiZSBhbHRlcm5hdGUgbW9kZS4gICovCiAJ eworCSAgLyogQkMxRiwgQkMxRkwsIEJDMVQsIEJDMVRMOiAwMTAwMDEgMDEwMDAgKi8KKwkgIHBj ID0gbWlwczMyX2JjMV9wYyAoZ2RiYXJjaCwgcmVnY2FjaGUsIGluc3QsIHBjICsgNCwgMSk7CisJ fQorICAgICAgZWxzZSBpZiAoIWlzX21pcHNyNl9pc2EgKGdkYmFyY2gpCisJICAgICAgJiYgb3Ag PT0gMTcKKwkgICAgICAmJiBpdHlwZV9ycyAoaW5zdCkgPT0gOQorCSAgICAgICYmIChpdHlwZV9y dCAoaW5zdCkgJiAyKSA9PSAwKQorCXsKKwkgIC8qIEJDMUFOWTJGLCBCQzFBTlkyVDogMDEwMDAx IDAxMDAxIHh4eDB4ICovCisJICBwYyA9IG1pcHMzMl9iYzFfcGMgKGdkYmFyY2gsIHJlZ2NhY2hl LCBpbnN0LCBwYyArIDQsIDIpOworCX0KKyAgICAgIGVsc2UgaWYgKCFpc19taXBzcjZfaXNhIChn ZGJhcmNoKQorCSAgICAgICYmIG9wID09IDE3CisJICAgICAgJiYgaXR5cGVfcnMgKGluc3QpID09 IDEwCisJICAgICAgJiYgKGl0eXBlX3J0IChpbnN0KSAmIDIpID09IDApCisJeworCSAgLyogQkMx QU5ZNEYsIEJDMUFOWTRUOiAwMTAwMDEgMDEwMTAgeHh4MHggKi8KKwkgIHBjID0gbWlwczMyX2Jj MV9wYyAoZ2RiYXJjaCwgcmVnY2FjaGUsIGluc3QsIHBjICsgNCwgNCk7CisJfQorICAgICAgZWxz ZSBpZiAoIWlzX21pcHNyNl9pc2EgKGdkYmFyY2gpICYmIG9wID09IDI5KQorCXsKKwkgIC8qIEpB TFg6IDAxMTEwMQorCSAgICAgVGhlIG5ldyBQQyB3aWxsIGJlIGFsdGVybmF0ZSBtb2RlLiAgKi8K IAkgIHVuc2lnbmVkIGxvbmcgcmVnOwogCiAJICByZWcgPSBqdHlwZV90YXJnZXQgKGluc3QpIDw8 IDI7CkBAIC0xNjk1LDI4ICsxODI0LDE3MSBAQCBtaXBzMzJfbmV4dF9wYyAoc3RydWN0IHJlZ2Nh Y2hlICpyZWdjYWNoZSwgQ09SRV9BRERSIHBjKQogCSAgYnJhbmNoX2lmID0gb3AgPT0gNTggfHwg b3AgPT0gNjI7CiAJICBiaXQgPSBpdHlwZV9ydCAoaW5zdCk7CiAKLQkgIC8qIFRha2UgaW50byBh Y2NvdW50IHRoZSAqMzIgaW5zdHJ1Y3Rpb25zLiAgKi8KIAkgIGlmIChvcCA9PSA1NCB8fCBvcCA9 PSA2MikKLQkgICAgYml0ICs9IDMyOworCSAgICB7CisJICAgICAgLyogVGFrZSBpbnRvIGFjY291 bnQgdGhlICozMiBpbnN0cnVjdGlvbnMuICAqLworCSAgICAgIGJpdCArPSAzMjsKKwkgICAgfQog CiAJICBpZiAoKChyZWdjYWNoZV9yYXdfZ2V0X3NpZ25lZCAocmVnY2FjaGUsCiAJCQkJCSBpdHlw ZV9ycyAoaW5zdCkpID4+IGJpdCkgJiAxKQogCSAgICAgID09IGJyYW5jaF9pZikKIAkgICAgcGMg Kz0gbWlwczMyX3JlbGF0aXZlX29mZnNldCAoaW5zdCkgKyA0OwogCSAgZWxzZQotCSAgICBwYyAr PSA4OyAgICAgICAgLyogQWZ0ZXIgdGhlIGRlbGF5IHNsb3QuICAqLworCSAgICB7CisJICAgICAg LyogQWZ0ZXIgdGhlIGRlbGF5IHNsb3QuICAqLworCSAgICAgIHBjICs9IDg7CisJICAgIH0KIAl9 CisgICAgICBlbHNlIGlmIChpc19taXBzcjZfaXNhIChnZGJhcmNoKSkKKwl7CisJICBpZiAob3Ag PT0gOCB8fCBvcCA9PSAyNCkKKwkgICAgeworCSAgICAgIC8qIEJPVkMsIEJFUVpBTEMsIEJFUUMg YW5kIEJOVkMsIEJORVpBTEMsIEJORUMgICovCisJICAgICAgaW50IHJzID0gcnR5cGVfcnMgKGlu c3QpOworCSAgICAgIGludCBydCA9IHJ0eXBlX3J0IChpbnN0KTsKKwkgICAgICBMT05HRVNUIHZh bF9ycyA9IHJlZ2NhY2hlX3Jhd19nZXRfc2lnbmVkIChyZWdjYWNoZSwgcnMpOworCSAgICAgIExP TkdFU1QgdmFsX3J0ID0gcmVnY2FjaGVfcmF3X2dldF9zaWduZWQgKHJlZ2NhY2hlLCBydCk7CisJ ICAgICAgYm9vbCB0YWtlbiA9IGZhbHNlOworCSAgICAgIGlmIChycyA+PSBydCkKKwkJeworCQkg IC8qIEJPVkMgKEJOVkMpICAqLworCQkgIGlmIChtaXBzNjRiaXRyZWcgPT0gMSkKKwkJICAgIHRh a2VuID0gaXNfYWRkNjRiaXRfb3ZlcmZsb3cgKHZhbF9ycywgdmFsX3J0KTsKKwkJICBlbHNlCisJ CSAgICB0YWtlbiA9IGlzX2FkZDMyYml0X292ZXJmbG93ICh2YWxfcnMsIHZhbF9ydCk7CisJCX0K KwkgICAgICBlbHNlIGlmIChycyA8IHJ0ICYmIHJzID09IDApCisJCXsKKwkJICAvKiBCRVFaQUxD IChCTkVaQUxDKSAgKi8KKwkJICB0YWtlbiA9ICh2YWxfcnQgPT0gMCk7CisJCX0KKwkgICAgICBl bHNlCisJCXsKKwkJICAvKiBCRVFDIChCTkVDKSAgKi8KKwkJICB0YWtlbiA9ICh2YWxfcnMgPT0g dmFsX3J0KTsKKwkJfQorCisJICAgICAgaWYgKG9wID09IDI0KQorCQl7CisJCSAgLyogQk5WQywg Qk5FWkFMQywgQk5FQyAgKi8KKwkJICB0YWtlbiA9ICF0YWtlbjsKKwkJfQorCisJICAgICAgaWYg KHRha2VuKQorCQlwYyArPSBtaXBzMzJfcmVsYXRpdmVfb2Zmc2V0IChpbnN0KSArIDQ7CisJICAg ICAgZWxzZQorCQl7CisJCSAgLyogU3RlcCB0aHJvdWdoIHRoZSBmb3JiaWRkZW4gc2xvdCB0byBh dm9pZCByZXBlYXRlZCBleGNlcHRpb25zCisJCSAgd2UgZG8gbm90IGN1cnJlbnRseSBoYXZlIGFj Y2VzcyB0byB0aGUgQkQgYml0IHdoZW4gaGl0dGluZyBhCisJCSAgYnJlYWtwb2ludCBhbmQgdGhl cmVmb3JlIGNhbm5vdCB0ZWxsIGlmIHRoZSBicmVha3BvaW50CisJCSAgaGl0IG9uIHRoZSBicmFu Y2ggb3IgdGhlIGZvcmJpZGRlbiBzbG90LiAgKi8KKwkJICBwYyArPSA4OworCQl9CisJICAgIH0K KwkgIGVsc2UgaWYgKG9wID09IDE3ICYmIChpdHlwZV9ycyAoaW5zdCkgPT0gOSB8fCBpdHlwZV9y cyAoaW5zdCkgPT0gMTMpKQorCSAgICB7CisJICAgICAgLyogQkMxRVFaLCBCQzFORVogICovCisJ ICAgICAgZ2RiX2J5dGUgc3RhdHVzOworCSAgICAgIGdkYl9ieXRlIHRydWVfdmFsID0gMDsKKwkg ICAgICB1bnNpZ25lZCBpbnQgZnAgPSAoZ2RiYXJjaF9udW1fcmVncyAoZ2RiYXJjaCkKKwkJCQkr IG1pcHNfcmVnbnVtIChnZGJhcmNoKS0+ZnAwCisJCQkJKyBpdHlwZV9ydCAoaW5zdCkpOworCSAg ICAgIHN0cnVjdCBmcmFtZV9pbmZvX3B0ciBmcmFtZSA9IGdldF9jdXJyZW50X2ZyYW1lICgpOwor CSAgICAgIGdkYl9ieXRlICpidWZfdG1wID0gKGdkYl9ieXRlICopIGFsbG9jYSAoc2l6ZW9mIChn ZGJfYnl0ZSkgKiA0KTsKKwkgICAgICBnZGI6OmFycmF5X3ZpZXc8Z2RiX2J5dGU+IHJhd19idWZm ZXIgPSBnZGI6Om1ha2VfYXJyYXlfdmlldyAoYnVmX3RtcCwgc2l6ZW9mIChnZGJfYnl0ZSkgKiA0 KTsKKwkgICAgICBtaXBzX3JlYWRfZnBfcmVnaXN0ZXJfc2luZ2xlIChmcmFtZSwgZnAsIHJhd19i dWZmZXIpOworCisJICAgICAgaWYgKGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCkgPT0gQkZE X0VORElBTl9CSUcpCisJCXN0YXR1cyA9IHJhd19idWZmZXJbM107CisJICAgICAgZWxzZQorCQlz dGF0dXMgPSByYXdfYnVmZmVyWzBdOworCisJICAgICAgaWYgKGl0eXBlX3JzIChpbnN0KSA9PSAx MykKKwkJdHJ1ZV92YWwgPSAxOwogCisJICAgICAgaWYgKChzdGF0dXMgJiAweDEpID09IHRydWVf dmFsKQorCQlwYyArPSBtaXBzMzJfcmVsYXRpdmVfb2Zmc2V0IChpbnN0KSArIDQ7CisJICAgICAg ZWxzZQorCQlwYyArPSA4OworCSAgICB9CisJICBlbHNlIGlmIChvcCA9PSAyMiB8fCBvcCA9PSAy MykKKwkgICAgeworCSAgICAgIC8qIEJMRVpDLCBCR0VaQywgQkdFQywgQkdUWkMsIEJMVFpDLCBC TFRDICAqLworCSAgICAgIGludCBycyA9IHJ0eXBlX3JzIChpbnN0KTsKKwkgICAgICBpbnQgcnQg PSBydHlwZV9ydCAoaW5zdCk7CisJICAgICAgTE9OR0VTVCB2YWxfcnMgPSByZWdjYWNoZV9yYXdf Z2V0X3NpZ25lZCAocmVnY2FjaGUsIHJzKTsKKwkgICAgICBMT05HRVNUIHZhbF9ydCA9IHJlZ2Nh Y2hlX3Jhd19nZXRfc2lnbmVkIChyZWdjYWNoZSwgcnQpOworCSAgICAgIGJvb2wgdGFrZW4gPSBm YWxzZTsKKwkgICAgICAvKiBUaGUgUjUgcnQgPT0gMCBjYXNlIGlzIGhhbmRsZWQgYWJvdmUgc28g d2UgdHJlYXQgaXQgYXMKKwkJIGFuIHVua25vd24gaW5zdHJ1Y3Rpb24gaGVyZSBmb3IgZnV0dXJl IElTQSB1c2FnZS4gICovCisJICAgICAgaWYgKHJzID09IDAgJiYgcnQgIT0gMCkKKwkJdGFrZW4g PSAodmFsX3J0IDw9IDApOworCSAgICAgIGVsc2UgaWYgKHJzID09IHJ0ICYmIHJ0ICE9IDApCisJ CXRha2VuID0gKHZhbF9ydCA+PSAwKTsKKwkgICAgICBlbHNlIGlmIChycyAhPSBydCAmJiBycyAh PSAwICYmIHJ0ICE9IDApCisJCXRha2VuID0gKHZhbF9ycyA+PSB2YWxfcnQpOworCisJICAgICAg aWYgKG9wID09IDIzKQorCQl0YWtlbiA9ICF0YWtlbjsKKworCSAgICAgIGlmICh0YWtlbikKKwkJ IHBjICs9IG1pcHMzMl9yZWxhdGl2ZV9vZmZzZXQgKGluc3QpICsgNDsKKwkgICAgICBlbHNlCisJ CXsKKwkJLyogU3RlcCB0aHJvdWdoIHRoZSBmb3JiaWRkZW4gc2xvdCB0byBhdm9pZCByZXBlYXRl ZCBleGNlcHRpb25zCisJCSAgIHdlIGRvIG5vdCBjdXJyZW50bHkgaGF2ZSBhY2Nlc3MgdG8gdGhl IEJEIGJpdCB3aGVuIGhpdHRpbmcgYQorCQkgICBicmVha3BvaW50IGFuZCB0aGVyZWZvcmUgY2Fu bm90IHRlbGwgaWYgdGhlIGJyZWFrcG9pbnQKKwkJICAgaGl0IG9uIHRoZSBicmFuY2ggb3IgdGhl IGZvcmJpZGRlbiBzbG90LiAgKi8KKwkJICBwYyArPSA4OworCQl9CisJICAgIH0KKwkgIGVsc2Ug aWYgKG9wID09IDUwIHx8IG9wID09IDU4KQorCSAgICB7CisJICAgICAgLyogQkMsIEJBTEMgICov CisJICAgICAgcGMgKz0gbWlwczMyX3JlbGF0aXZlX29mZnNldDI2IChpbnN0KSArIDQ7CisJICAg IH0KKwkgIGVsc2UgaWYgKChvcCA9PSA1NCB8fCBvcCA9PSA2MikKKwkJICAgJiYgcnR5cGVfcnMg KGluc3QpID09IDApCisJICAgIHsKKwkgICAgICAvKiBKSUMsIEpJQUxDICAqLworCSAgICAgIHBj ID0gcmVnY2FjaGVfcmF3X2dldF9zaWduZWQgKHJlZ2NhY2hlLCBpdHlwZV9ydCAoaW5zdCkpOwor CSAgICAgIHBjICs9IChpdHlwZV9pbW1lZGlhdGUgKGluc3QpIF4gMHg4MDAwKSAtIDB4ODAwMDsK KwkgICAgfQorCSAgZWxzZSBpZiAob3AgPT0gNTQgfHwgb3AgPT0gNjIpCisJICAgIHsKKwkgICAg ICAvKiBCRVFaQywgQk5FWkMgICovCisJICAgICAgaW50IHJzID0gaXR5cGVfcnMgKGluc3QpOwor CSAgICAgIExPTkdFU1QgcnNfdmFsID0gcmVnY2FjaGVfcmF3X2dldF9zaWduZWQgKHJlZ2NhY2hl LCBycyk7CisJICAgICAgYm9vbCB0YWtlbiA9IChyc192YWwgPT0gMCk7CisJICAgICAgaWYgKG9w ID09IDYyKQorCQl0YWtlbiA9ICF0YWtlbjsKKwkgICAgICBpZiAodGFrZW4pCisJCXBjICs9IG1p cHMzMl9yZWxhdGl2ZV9vZmZzZXQyMSAoaW5zdCkgKyA0OworCSAgICAgIGVsc2UKKwkJeworCQkv KiBTdGVwIHRocm91Z2ggdGhlIGZvcmJpZGRlbiBzbG90IHRvIGF2b2lkIHJlcGVhdGVkIGV4Y2Vw dGlvbnMKKwkJICAgd2UgZG8gbm90IGN1cnJlbnRseSBoYXZlIGFjY2VzcyB0byB0aGUgQkQgYml0 IHdoZW4gaGl0dGluZyBhCisJCSAgIGJyZWFrcG9pbnQgYW5kIHRoZXJlZm9yZSBjYW5ub3QgdGVs bCBpZiB0aGUgYnJlYWtwb2ludAorCQkgICBoaXQgb24gdGhlIGJyYW5jaCBvciB0aGUgZm9yYmlk ZGVuIHNsb3QuICAqLworCQkgIHBjICs9IDg7CisJCX0KKwkgICAgfQorCSAgZWxzZQorCSAgICB7 CisJICAgICAgLyogTm90IGEgYnJhbmNoLCBuZXh0IGluc3RydWN0aW9uIGlzIGVhc3kuICAqLwor CSAgICAgIHBjICs9IDQ7CisJICAgIH0KKwl9CiAgICAgICBlbHNlCiAJcGMgKz0gNDsJCS8qIE5v dCBhIGJyYW5jaCwgbmV4dCBpbnN0cnVjdGlvbiBpcyBlYXN5LiAgKi8KICAgICB9CiAgIGVsc2UK LSAgICB7CQkJCS8qIFRoaXMgZ2V0cyB3YXkgbWVzc3kuICAqLwotCi0gICAgICAvKiBGdXJ0aGVy IHN1YmRpdmlkZSBpbnRvIFNQRUNJQUwsIFJFR0lNTSBhbmQgb3RoZXIuICAqLworICAgIHsgIC8q IFRoaXMgZ2V0cyB3YXkgbWVzc3kuCisJICBGdXJ0aGVyIHN1YmRpdmlkZSBpbnRvIFNQRUNJQUws IFJFR0lNTSBhbmQgb3RoZXIuICAqLwogICAgICAgc3dpdGNoIChvcCAmIDB4MDcpCS8qIEV4dHJh Y3QgYml0cyAyOCwyNywyNi4gICovCiAJewotCWNhc2UgMDoJCS8qIFNQRUNJQUwgKi8KKwljYXNl IDA6ICAvKiBTUEVDSUFMICovCiAJICBvcCA9IHJ0eXBlX2Z1bmN0IChpbnN0KTsKIAkgIHN3aXRj aCAob3ApCiAJICAgIHsKQEAgLTE3MjUsNyArMTk5Nyw3IEBAIG1pcHMzMl9uZXh0X3BjIChzdHJ1 Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBDT1JFX0FERFIgcGMpCiAJICAgICAgLyogU2V0IFBDIHRv IHRoYXQgYWRkcmVzcy4gICovCiAJICAgICAgcGMgPSByZWdjYWNoZV9yYXdfZ2V0X3NpZ25lZCAo cmVnY2FjaGUsIHJ0eXBlX3JzIChpbnN0KSk7CiAJICAgICAgYnJlYWs7Ci0JICAgIGNhc2UgMTI6 ICAgICAgICAgICAgLyogU1lTQ0FMTCAqLworCSAgICBjYXNlIDEyOgkgICAgLyogU1lTQ0FMTCAq LwogCSAgICAgIHsKIAkJbWlwc19nZGJhcmNoX3RkZXAgKnRkZXAKIAkJICA9IGdkYmFyY2hfdGRl cDxtaXBzX2dkYmFyY2hfdGRlcD4gKGdkYmFyY2gpOwpAQCAtMTc0MCwxNyArMjAxMiwxNiBAQCBt aXBzMzJfbmV4dF9wYyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgQ09SRV9BRERSIHBjKQog CSAgICAgIHBjICs9IDQ7CiAJICAgIH0KIAotCSAgYnJlYWs7CQkvKiBlbmQgU1BFQ0lBTCAqLwot CWNhc2UgMToJCQkvKiBSRUdJTU0gKi8KKwkgIGJyZWFrOyAgLyogZW5kIFNQRUNJQUwgKi8KKwlj YXNlIDE6ICAvKiBSRUdJTU0gKi8KIAkgIHsKLQkgICAgb3AgPSBpdHlwZV9ydCAoaW5zdCk7CS8q IGJyYW5jaCBjb25kaXRpb24gKi8KKwkgICAgb3AgPSBpdHlwZV9ydCAoaW5zdCk7ICAvKiBicmFu Y2ggY29uZGl0aW9uICovCiAJICAgIHN3aXRjaCAob3ApCiAJICAgICAgewogCSAgICAgIGNhc2Ug MDoJCS8qIEJMVFogKi8KIAkgICAgICBjYXNlIDI6CQkvKiBCTFRaTCAqLwogCSAgICAgIGNhc2Ug MTY6CQkvKiBCTFRaQUwgKi8KIAkgICAgICBjYXNlIDE4OgkJLyogQkxUWkFMTCAqLwotCSAgICAg IGxlc3NfYnJhbmNoOgogCQlpZiAocmVnY2FjaGVfcmF3X2dldF9zaWduZWQgKHJlZ2NhY2hlLCBp dHlwZV9ycyAoaW5zdCkpIDwgMCkKIAkJICBwYyArPSBtaXBzMzJfcmVsYXRpdmVfb2Zmc2V0IChp bnN0KSArIDQ7CiAJCWVsc2UKQEAgLTE3NjYsMjIgKzIwMzcsMzMgQEAgbWlwczMyX25leHRfcGMg KHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIENPUkVfQUREUiBwYykKIAkJICBwYyArPSA4Owkv KiBhZnRlciB0aGUgZGVsYXkgc2xvdCAqLwogCQlicmVhazsKIAkgICAgICBjYXNlIDB4MWM6CS8q IEJQT1NHRTMyICovCisJICAgICAgY2FzZSAweDFkOgkvKiBCUE9TR0UzMkMgICovCiAJICAgICAg Y2FzZSAweDFlOgkvKiBCUE9TR0U2NCAqLwogCQlwYyArPSA0OwogCQlpZiAoaXR5cGVfcnMgKGlu c3QpID09IDApCiAJCSAgewogCQkgICAgdW5zaWduZWQgaW50IHBvcyA9IChvcCAmIDIpID8gNjQg OiAzMjsKIAkJICAgIGludCBkc3BjdGwgPSBtaXBzX3JlZ251bSAoZ2RiYXJjaCktPmRzcGN0bDsK KwkJICAgIGludCBkZWxheV9zbG90X3NpemUgPSA0OwogCiAJCSAgICBpZiAoZHNwY3RsID09IC0x KQorCQkgICAgICB7CiAJCSAgICAgIC8qIE5vIHdheSB0byBoYW5kbGU7IGl0J2xsIG1vc3QgbGlr ZWx5IHRyYXAgYW55d2F5LiAgKi8KLQkJICAgICAgYnJlYWs7CisJCQlicmVhazsKKwkJICAgICAg fQorCisJCSAgICAvKiBCUE9TR0UzMkMgICovCisJCSAgICBpZiAob3AgPT0gMHgxZCkKKwkJICAg ICAgeworCQkJaWYgKCFpc19taXBzcjZfaXNhIChnZGJhcmNoKSkKKwkJCSAgYnJlYWs7CisJCSAg ICAgIH0KIAogCQkgICAgaWYgKChyZWdjYWNoZV9yYXdfZ2V0X3Vuc2lnbmVkIChyZWdjYWNoZSwK IAkJCQkJCSAgICBkc3BjdGwpICYgMHg3ZikgPj0gcG9zKQogCQkgICAgICBwYyArPSBtaXBzMzJf cmVsYXRpdmVfb2Zmc2V0IChpbnN0KTsKIAkJICAgIGVsc2UKLQkJICAgICAgcGMgKz0gNDsKKwkJ ICAgICAgcGMgKz0gZGVsYXlfc2xvdF9zaXplOwogCQkgIH0KIAkJYnJlYWs7CiAJCS8qIEFsbCBv ZiB0aGUgb3RoZXIgaW5zdHJ1Y3Rpb25zIGluIHRoZSBSRUdJTU0gY2F0ZWdvcnkgKi8KQEAgLTE3 ODksOSArMjA3MSw5IEBAIG1pcHMzMl9uZXh0X3BjIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl LCBDT1JFX0FERFIgcGMpCiAJCXBjICs9IDQ7CiAJICAgICAgfQogCSAgfQotCSAgYnJlYWs7CQkv KiBlbmQgUkVHSU1NICovCi0JY2FzZSAyOgkJLyogSiAqLwotCWNhc2UgMzoJCS8qIEpBTCAqLwor CSAgYnJlYWs7ICAvKiBlbmQgUkVHSU1NICovCisJY2FzZSAyOiAJLyogSiAqLworCWNhc2UgMzog CS8qIEpBTCAqLwogCSAgewogCSAgICB1bnNpZ25lZCBsb25nIHJlZzsKIAkgICAgcmVnID0ganR5 cGVfdGFyZ2V0IChpbnN0KSA8PCAyOwpAQCAtMTgxNSwxOSArMjA5NywxNCBAQCBtaXBzMzJfbmV4 dF9wYyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgQ09SRV9BRERSIHBjKQogCSAgZWxzZQog CSAgICBwYyArPSA4OwogCSAgYnJlYWs7Ci0JY2FzZSA2OgkJLyogQkxFWiwgQkxFWkwgKi8KLQkg IGlmIChyZWdjYWNoZV9yYXdfZ2V0X3NpZ25lZCAocmVnY2FjaGUsIGl0eXBlX3JzIChpbnN0KSkg PD0gMCkKLQkgICAgcGMgKz0gbWlwczMyX3JlbGF0aXZlX29mZnNldCAoaW5zdCkgKyA0OwotCSAg ZWxzZQotCSAgICBwYyArPSA4OworCWNhc2UgNjoJCS8qIEJMRVosIEJMRVpMLCBCTEVaQUxDLCBC R0VaQUxDLCBCR0VVQyAgKi8KKwlsZXpfYnJhbmNoOgorCSAgcGMgPSBtaXBzMzJfYmxlel9wYyAo Z2RiYXJjaCwgcmVnY2FjaGUsIGluc3QsIHBjICsgNCwgMCk7CiAJICBicmVhazsKIAljYXNlIDc6 CiAJZGVmYXVsdDoKLQlncmVhdGVyX2JyYW5jaDoJLyogQkdUWiwgQkdUWkwgKi8KLQkgIGlmIChy ZWdjYWNoZV9yYXdfZ2V0X3NpZ25lZCAocmVnY2FjaGUsIGl0eXBlX3JzIChpbnN0KSkgPiAwKQot CSAgICBwYyArPSBtaXBzMzJfcmVsYXRpdmVfb2Zmc2V0IChpbnN0KSArIDQ7Ci0JICBlbHNlCi0J ICAgIHBjICs9IDg7CisJZ3JlYXRlcl9icmFuY2g6IC8qIEJHVFosIEJHVFpMLCBCR1RaQUxDLCBC TFRaQUxDLCBCTFRVQyAgKi8KKwkgIHBjID0gbWlwczMyX2JsZXpfcGMgKGdkYmFyY2gsIHJlZ2Nh Y2hlLCBpbnN0LCBwYyArIDQsIDEpOwogCSAgYnJlYWs7CiAJfQkJCS8qIHN3aXRjaCAqLwogICAg IH0JCQkJLyogZWxzZSAqLwpAQCAtMTg4OSw4ICsyMTY2LDEwIEBAIG1pY3JvbWlwc19iYzFfcGMg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAogICBp bnQgY29uZDsKIAogICBpZiAoZmNzciA9PSAtMSkKLSAgICAvKiBObyB3YXkgdG8gaGFuZGxlOyBp dCdsbCBtb3N0IGxpa2VseSB0cmFwIGFueXdheS4gICovCi0gICAgcmV0dXJuIHBjOworICAgIHsK KyAgICAgIC8qIE5vIHdheSB0byBoYW5kbGU7IGl0J2xsIG1vc3QgbGlrZWx5IHRyYXAgYW55d2F5 LiAgKi8KKyAgICAgIHJldHVybiBwYzsKKyAgICB9CiAKICAgZmNzID0gcmVnY2FjaGVfcmF3X2dl dF91bnNpZ25lZCAocmVnY2FjaGUsIGZjc3IpOwogICBjb25kID0gKChmY3MgPj4gMjQpICYgMHhm ZSkgfCAoKGZjcyA+PiAyMykgJiAweDAxKTsKQEAgLTIwMDQsOCArMjI4MywxMCBAQCBtaWNyb21p cHNfbmV4dF9wYyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgQ09SRV9BRERSIHBjKQogCSAg ICBjYXNlIDB4MTQ6IC8qIEJDMkY6IGJpdHMgMDEwMDAwIDEwMTAwIHh4eDAwICovCiAJICAgIGNh c2UgMHgxNTogLyogQkMyVDogYml0cyAwMTAwMDAgMTAxMDEgeHh4MDAgKi8KIAkgICAgICBpZiAo KChpbnNuID4+IDE2KSAmIDB4MykgPT0gMHgwKQotCQkvKiBCQzJGLCBCQzJUOiBkb24ndCBrbm93 IGhvdyB0byBoYW5kbGUgdGhlc2UuICAqLwotCQlicmVhazsKKwkJeworCQkgIC8qIEJDMkYsIEJD MlQ6IGRvbid0IGtub3cgaG93IHRvIGhhbmRsZSB0aGVzZS4gICovCisJCSAgYnJlYWs7CisJCX0K IAkgICAgICBicmVhazsKIAogCSAgICBjYXNlIDB4MWE6IC8qIEJQT1NHRTY0OiBiaXRzIDAxMDAw MCAxMTAxMCAqLwpAQCAtMjAxNSw4ICsyMjk2LDEwIEBAIG1pY3JvbWlwc19uZXh0X3BjIChzdHJ1 Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBDT1JFX0FERFIgcGMpCiAJCWludCBkc3BjdGwgPSBtaXBz X3JlZ251bSAoZ2RiYXJjaCktPmRzcGN0bDsKIAogCQlpZiAoZHNwY3RsID09IC0xKQotCQkgIC8q IE5vIHdheSB0byBoYW5kbGU7IGl0J2xsIG1vc3QgbGlrZWx5IHRyYXAgYW55d2F5LiAgKi8KLQkJ ICBicmVhazsKKwkJICB7CisJCSAgICAvKiBObyB3YXkgdG8gaGFuZGxlOyBpdCdsbCBtb3N0IGxp a2VseSB0cmFwIGFueXdheS4gICovCisJCSAgICBicmVhazsKKwkJICB9CiAKIAkJaWYgKChyZWdj YWNoZV9yYXdfZ2V0X3Vuc2lnbmVkIChyZWdjYWNoZSwKIAkJCQkJCWRzcGN0bCkgJiAweDdmKSA+ PSBwb3MpCkBAIC0yMDQ2LDI3ICsyMzI5LDI3IEBAIG1pY3JvbWlwc19uZXh0X3BjIChzdHJ1Y3Qg cmVnY2FjaGUgKnJlZ2NhY2hlLCBDT1JFX0FERFIgcGMpCiAJY2FzZSAweDFkOiAvKiBKQUxTOiBi aXRzIDAxMTEwMSAqLwogCWNhc2UgMHgzNTogLyogSjogYml0cyAxMTAxMDEgKi8KIAljYXNlIDB4 M2Q6IC8qIEpBTDogYml0cyAxMTExMDEgKi8KLQkgICAgcGMgPSAoKHBjIHwgMHg3ZmZmZmZlKSBe IDB4N2ZmZmZmZSkgfCAoYjBzMjZfaW1tIChpbnNuKSA8PCAxKTsKKwkgIHBjID0gKChwYyB8IDB4 N2ZmZmZmZSkgXiAweDdmZmZmZmUpIHwgKGIwczI2X2ltbSAoaW5zbikgPDwgMSk7CiAJICBicmVh azsKIAogCWNhc2UgMHgyNTogLyogQkVROiBiaXRzIDEwMDEwMSAqLwotCSAgICBpZiAocmVnY2Fj aGVfcmF3X2dldF9zaWduZWQgKHJlZ2NhY2hlLCBiMHM1X3JlZyAoaW5zbiA+PiAxNikpCisJICBp ZiAocmVnY2FjaGVfcmF3X2dldF9zaWduZWQgKHJlZ2NhY2hlLCBiMHM1X3JlZyAoaW5zbiA+PiAx NikpCiAJCT09IHJlZ2NhY2hlX3Jhd19nZXRfc2lnbmVkIChyZWdjYWNoZSwgYjVzNV9yZWcgKGlu c24gPj4gMTYpKSkKLQkgICAgICBwYyArPSBtaWNyb21pcHNfcmVsYXRpdmVfb2Zmc2V0MTYgKGlu c24pOwotCSAgICBlbHNlCi0JICAgICAgcGMgKz0gbWljcm9taXBzX3BjX2luc25fc2l6ZSAoZ2Ri YXJjaCwgcGMpOworCSAgICBwYyArPSBtaWNyb21pcHNfcmVsYXRpdmVfb2Zmc2V0MTYgKGluc24p OworCSAgZWxzZQorCSAgICBwYyArPSBtaWNyb21pcHNfcGNfaW5zbl9zaXplIChnZGJhcmNoLCBw Yyk7CiAJICBicmVhazsKIAogCWNhc2UgMHgyZDogLyogQk5FOiBiaXRzIDEwMTEwMSAqLwogCSAg aWYgKHJlZ2NhY2hlX3Jhd19nZXRfc2lnbmVkIChyZWdjYWNoZSwgYjBzNV9yZWcgKGluc24gPj4g MTYpKQogCQkhPSByZWdjYWNoZV9yYXdfZ2V0X3NpZ25lZCAocmVnY2FjaGUsIGI1czVfcmVnIChp bnNuID4+IDE2KSkpCi0JICAgICAgcGMgKz0gbWljcm9taXBzX3JlbGF0aXZlX29mZnNldDE2IChp bnNuKTsKKwkgICAgcGMgKz0gbWljcm9taXBzX3JlbGF0aXZlX29mZnNldDE2IChpbnNuKTsKIAkg IGVsc2UKLQkgICAgICBwYyArPSBtaWNyb21pcHNfcGNfaW5zbl9zaXplIChnZGJhcmNoLCBwYyk7 CisJICAgIHBjICs9IG1pY3JvbWlwc19wY19pbnNuX3NpemUgKGdkYmFyY2gsIHBjKTsKIAkgIGJy ZWFrOwogCiAJY2FzZSAweDNjOiAvKiBKQUxYOiBiaXRzIDExMTEwMCAqLwotCSAgICBwYyA9ICgo cGMgfCAweGZmZmZmZmYpIF4gMHhmZmZmZmZmKSB8IChiMHMyNl9pbW0gKGluc24pIDw8IDIpOwor CSAgcGMgPSAoKHBjIHwgMHhmZmZmZmZmKSBeIDB4ZmZmZmZmZikgfCAoYjBzMjZfaW1tIChpbnNu KSA8PCAyKTsKIAkgIGJyZWFrOwogCX0KICAgICAgIGJyZWFrOwpAQCAtMjA3NywxMSArMjM2MCwx NSBAQCBtaWNyb21pcHNfbmV4dF9wYyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgQ09SRV9B RERSIHBjKQogCXsKIAljYXNlIDB4MTE6IC8qIFBPT0wxNkM6IGJpdHMgMDEwMDAxICovCiAJICBp ZiAoKGI1czVfb3AgKGluc24pICYgMHgxYykgPT0gMHhjKQotCSAgICAvKiBKUjE2LCBKUkMsIEpB TFIxNiwgSkFMUlMxNjogMDEwMDAxIDAxMXh4ICovCi0JICAgIHBjID0gcmVnY2FjaGVfcmF3X2dl dF9zaWduZWQgKHJlZ2NhY2hlLCBiMHM1X3JlZyAoaW5zbikpOworCSAgICB7CisJICAgICAgLyog SlIxNiwgSlJDLCBKQUxSMTYsIEpBTFJTMTY6IDAxMDAwMSAwMTF4eCAqLworCSAgICAgIHBjID0g cmVnY2FjaGVfcmF3X2dldF9zaWduZWQgKHJlZ2NhY2hlLCBiMHM1X3JlZyAoaW5zbikpOworCSAg ICB9CiAJICBlbHNlIGlmIChiNXM1X29wIChpbnNuKSA9PSAweDE4KQotCSAgICAvKiBKUkFERElV U1A6IGJpdHMgMDEwMDAxIDExMDAwICovCi0JICAgIHBjID0gcmVnY2FjaGVfcmF3X2dldF9zaWdu ZWQgKHJlZ2NhY2hlLCBNSVBTX1JBX1JFR05VTSk7CisJICAgIHsKKwkgICAgICAvKiBKUkFERElV U1A6IGJpdHMgMDEwMDAxIDExMDAwICovCisJICAgICAgcGMgPSByZWdjYWNoZV9yYXdfZ2V0X3Np Z25lZCAocmVnY2FjaGUsIE1JUFNfUkFfUkVHTlVNKTsKKwkgICAgfQogCSAgYnJlYWs7CiAKIAlj YXNlIDB4MjM6IC8qIEJFUVoxNjogYml0cyAxMDAwMTEgKi8KQEAgLTIxNTksNyArMjQ0Niw2IEBA IHN0cnVjdCB1cGtfbWlwczE2CiAgIHVuc2lnbmVkIGludCByZWd5OwogfTsKIAotCiAvKiBUaGUg RVhULUksIEVYVC1yaSBuYWQgRVhULUk4IGluc3RydWN0aW9ucyBhbGwgaGF2ZSB0aGUgc2FtZSBm b3JtYXQKICAgIGZvciB0aGUgYml0cyB3aGljaCBtYWtlIHVwIHRoZSBpbW1lZGlhdGUgZXh0ZW5z aW9uLiAgKi8KIApAQCAtMjI2Nyw3ICsyNTUzLDYgQEAgdW5wYWNrX21pcHMxNiAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBwYywKICAgdXBrLT5yZWd5ID0gcmVneTsKIH0KIAot CiAvKiBDYWxjdWxhdGUgdGhlIGRlc3RpbmF0aW9uIG9mIGEgYnJhbmNoIHdob3NlIDE2LWJpdCBv cGNvZGUgd29yZCBpcyBhdCBQQywKICAgIGFuZCBoYXZpbmcgYSBzaWduZWQgMTYtYml0IE9GRlNF VC4gICovCiAKQEAgLTI0NTAsNiArMjczNSw2MyBAQCBtaWNyb21pcHNfaW5zdHJ1Y3Rpb25faXNf Y29tcGFjdF9icmFuY2ggKHVuc2lnbmVkIHNob3J0IGluc24pCiAgICAgfQogfQogCisvKiBSZXR1 cm4gbm9uLXplcm8gaWYgdGhlIE1JUFMgaW5zdHJ1Y3Rpb24gSU5TTiBpcyBhIGNvbXBhY3QgYnJh bmNoCisgICBvciBqdW1wLiAgQSB2YWx1ZSBvZiAxIGluZGljYXRlcyBhbiB1bmNvbmRpdGlvbmFs IGNvbXBhY3QgYnJhbmNoCisgICBhbmQgYSB2YWx1ZSBvZiAyIGluZGljYXRlcyBhIGNvbmRpdGlv bmFsIGNvbXBhY3QgYnJhbmNoLiAgKi8KKworc3RhdGljIGludAorbWlwczMyX2luc3RydWN0aW9u X2lzX2NvbXBhY3RfYnJhbmNoIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgVUxPTkdFU1QgaW5z bikKK3sKKyAgc3dpdGNoIChpdHlwZV9vcCAoaW5zbikpCisgICAgeworICAgIGNhc2UgNTA6IC8q IEJDICAqLworICAgIGNhc2UgNTg6IC8qIEJBTEMgICovCisgICAgICBpZiAoaXNfbWlwc3I2X2lz YSAoZ2RiYXJjaCkpCisJcmV0dXJuIDE7CisgICAgICBicmVhazsKKyAgICBjYXNlIDg6IC8qIEJP VkMsIEJFUVpBTEMsIEJFUUMgICovCisgICAgY2FzZSAyNDogLyogQk5WQywgQk5FWkFMQywgQk5F QyAgKi8KKyAgICAgIGlmIChpc19taXBzcjZfaXNhIChnZGJhcmNoKSkKKwlyZXR1cm4gMjsKKyAg ICAgIGJyZWFrOworICAgIGNhc2UgNTQ6IC8qIEJFUVpDLCBKSUMgICovCisgICAgY2FzZSA2Mjog LyogQk5FWkMsIEpJQUxDICAqLworICAgICAgaWYgKGlzX21pcHNyNl9pc2EgKGdkYmFyY2gpKQor CXsKKwkgIC8qIEpJQywgSklBTEMgYXJlIHVuY29uZGl0aW9uYWwgICovCisJICByZXR1cm4gKGl0 eXBlX3JzIChpbnNuKSA9PSAwKSA/IDEgOiAyOworCX0KKyAgICAgIGJyZWFrOworICAgIGNhc2Ug MjI6IC8qIEJMRVpDLCBCR0VaQywgQkdFQyAgKi8KKyAgICBjYXNlIDIzOiAvKiBCR1RaQywgQkxU WkMsIEJMVEMgICovCisgICAgY2FzZSA2OiAvKiBCTEVaQUxDLCBCR0VaQUxDLCBCR0VVQyAgKi8K KyAgICBjYXNlIDc6IC8qIEJHVFpBTEMsIEJMVFpBTEMsIEJMVFVDICAqLworICAgICAgaWYgKGlz X21pcHNyNl9pc2EgKGdkYmFyY2gpCisJICAmJiBpdHlwZV9ydCAoaW5zbikgIT0gMCkKKwlyZXR1 cm4gMjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgMTogLyogQlBPU0dFMzJDICAqLworICAgICAg aWYgKGlzX21pcHNyNl9pc2EgKGdkYmFyY2gpCisJICAmJiBpdHlwZV9ydCAoaW5zbikgPT0gMHgx ZCAmJiBpdHlwZV9ycyAoaW5zbikgPT0gMCkKKwlyZXR1cm4gMjsKKyAgICB9CisgIHJldHVybiAw OworfQorCisvKiBSZXR1cm4gdHJ1ZSBpZiBhIHN0YW5kYXJkIE1JUFMgaW5zdHJ1Y3Rpb24gYXQg QUREUiBoYXMgYSBicmFuY2gKKyAgIGZvcmJpZGRlbiBzbG90IChpLmUuIGl0IGlzIGEgY29uZGl0 aW9uYWwgY29tcGFjdCBicmFuY2ggaW5zdHJ1Y3Rpb24pLiAgKi8KKworc3RhdGljIGJvb2wKK21p cHMzMl9pbnNuX2F0X3BjX2hhc19mb3JiaWRkZW5fc2xvdCAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gsIENPUkVfQUREUiBhZGRyKQoreworICBpbnQgc3RhdHVzOworICBVTE9OR0VTVCBpbnNuID0g bWlwc19mZXRjaF9pbnN0cnVjdGlvbiAoZ2RiYXJjaCwgSVNBX01JUFMsIGFkZHIsICZzdGF0dXMp OworICBpZiAoc3RhdHVzKQorICAgIHJldHVybiBmYWxzZTsKKworICByZXR1cm4gbWlwczMyX2lu c3RydWN0aW9uX2lzX2NvbXBhY3RfYnJhbmNoIChnZGJhcmNoLCBpbnNuKSA9PSAyOworfQorCiBz dHJ1Y3QgbWlwc19mcmFtZV9jYWNoZQogewogICBDT1JFX0FERFIgYmFzZTsKQEAgLTI0ODIsNyAr MjgyNCw2IEBAIHNldF9yZWdfb2Zmc2V0IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0 IG1pcHNfZnJhbWVfY2FjaGUgKnRoaXNfY2FjaGUsCiAgICAgfQogfQogCi0KIC8qIEZldGNoIHRo ZSBpbW1lZGlhdGUgdmFsdWUgZnJvbSBhIE1JUFMxNiBpbnN0cnVjdGlvbi4KICAgIElmIHRoZSBw cmV2aW91cyBpbnN0cnVjdGlvbiB3YXMgYW4gRVhURU5ELCB1c2UgaXQgdG8gZXh0ZW5kCiAgICB0 aGUgdXBwZXIgYml0cyBvZiB0aGUgaW1tZWRpYXRlIHZhbHVlLiAgVGhpcyBpcyBhIGhlbHBlciBm dW5jdGlvbgpAQCAtMjUxNyw3ICsyODU4LDYgQEAgbWlwczE2X2dldF9pbW0gKHVuc2lnbmVkIHNo b3J0IHByZXZfaW5zdCwJLyogcHJldmlvdXMgaW5zdHJ1Y3Rpb24gKi8KICAgICB9CiB9CiAKLQog LyogQW5hbHl6ZSB0aGUgZnVuY3Rpb24gcHJvbG9ndWUgZnJvbSBTVEFSVF9QQyB0byBMSU1JVF9Q Qy4gQnVpbGRzCiAgICB0aGUgYXNzb2NpYXRlZCBGUkFNRV9DQUNIRSBpZiBub3QgbnVsbC4KICAg IFJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgZmlyc3QgaW5zdHJ1Y3Rpb24gcGFzdCB0aGUgcHJv bG9ndWUuICAqLwpAQCAtMjUzNSw4ICsyODc1LDggQEAgbWlwczE2X3NjYW5fcHJvbG9ndWUgKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogICBDT1JFX0FERFIgY3VyX3BjOwogICBDT1JFX0FERFIg ZnJhbWVfYWRkciA9IDA7CS8qIFZhbHVlIG9mICRyMTcsIHVzZWQgYXMgZnJhbWUgcG9pbnRlci4g ICovCiAgIENPUkVfQUREUiBzcDsKLSAgbG9uZyBmcmFtZV9vZmZzZXQgPSAwOyAgICAgICAgLyog U2l6ZSBvZiBzdGFjayBmcmFtZS4gICovCi0gIGxvbmcgZnJhbWVfYWRqdXN0ID0gMDsgICAgICAg IC8qIE9mZnNldCBvZiBGUCBmcm9tIFNQLiAgKi8KKyAgbG9uZyBmcmFtZV9vZmZzZXQgPSAwOwkv KiBTaXplIG9mIHN0YWNrIGZyYW1lLiAgKi8KKyAgbG9uZyBmcmFtZV9hZGp1c3QgPSAwOwkvKiBP ZmZzZXQgb2YgRlAgZnJvbSBTUC4gICovCiAgIGludCBmcmFtZV9yZWcgPSBNSVBTX1NQX1JFR05V TTsKICAgdW5zaWduZWQgc2hvcnQgcHJldl9pbnN0ID0gMDsJLyogc2F2ZWQgY29weSBvZiBwcmV2 aW91cyBpbnN0cnVjdGlvbi4gICovCiAgIHVuc2lnbmVkIGluc3QgPSAwOwkJLyogY3VycmVudCBp bnN0cnVjdGlvbiAqLwpAQCAtMjYwMCwxMCArMjk0MCwxMiBAQCBtaXBzMTZfc2Nhbl9wcm9sb2d1 ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAJICBpZiAob2Zmc2V0IDwgMCkJLyogTmVnYXRp dmUgc3RhY2sgYWRqdXN0bWVudD8gICovCiAJICAgIGZyYW1lX29mZnNldCAtPSBvZmZzZXQ7CiAJ ICBlbHNlCisJICAgIHsKIAkgICAgLyogRXhpdCBsb29wIGlmIGEgcG9zaXRpdmUgc3RhY2sgYWRq dXN0bWVudCBpcyBmb3VuZCwgd2hpY2gKIAkgICAgICAgdXN1YWxseSBtZWFucyB0aGF0IHRoZSBz dGFjayBjbGVhbnVwIGNvZGUgaW4gdGhlIGZ1bmN0aW9uCiAJICAgICAgIGVwaWxvZ3VlIGlzIHJl YWNoZWQuICAqLwotCSAgICBicmVhazsKKwkgICAgICBicmVhazsKKwkgICAgfQogCX0KICAgICAg IGVsc2UgaWYgKChpbnN0ICYgMHhmODAwKSA9PSAweGQwMDApCS8qIHN3IHJlZyxuKCRzcCkgKi8K IAl7CkBAIC0yODg4LDcgKzMyMzAsNyBAQCBtaXBzX2luc24xNl9mcmFtZV9jYWNoZSAoY29uc3Qg ZnJhbWVfaW5mb19wdHIgJnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlKQogICAgIG1pcHMx Nl9zY2FuX3Byb2xvZ3VlIChnZGJhcmNoLCBzdGFydF9hZGRyLCBwYywgdGhpc19mcmFtZSwKIAkJ CSAgKHN0cnVjdCBtaXBzX2ZyYW1lX2NhY2hlICopICp0aGlzX2NhY2hlKTsKICAgfQotICAKKwog ICAvKiBnZGJhcmNoX3NwX3JlZ251bSBjb250YWlucyB0aGUgdmFsdWUgYW5kIG5vdCB0aGUgYWRk cmVzcy4gICovCiAgIGNhY2hlLT5zYXZlZF9yZWdzW2dkYmFyY2hfbnVtX3JlZ3MgKGdkYmFyY2gp CiAJCSAgICArIE1JUFNfU1BfUkVHTlVNXS5zZXRfdmFsdWUgKGNhY2hlLT5iYXNlKTsKQEAgLTMw NjMsNyArMzQwNSw3IEBAIG1pY3JvbWlwc19zY2FuX3Byb2xvZ3VlIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwKIAkJICAmJiBkcmVnID09IE1JUFNfU1BfUkVHTlVNICYmIHNyZWcgPT0gTUlQU19T UF9SRUdOVU0KIAkJICAmJiB0cmVnID09IDMpCiAJCQkJLyogKEQpU1VCVSAkc3AsICR2MSAqLwot CQkgICAgc3BfYWRqID0gdjFfb2ZmOworCQlzcF9hZGogPSB2MV9vZmY7CiAJICAgICAgZWxzZSBp ZiAob3AgIT0gMHgxNTAKIAkJCQkvKiBBRERVOiBiaXRzIDAwMDAwMCAwMDEwMTAxMDAwMCAqLwog CQkJCS8qIERBRERVOiBiaXRzIDAxMDExMCAwMDEwMTAxMDAwMCAqLwpAQCAtMzI5Miw3ICszNjM0 LDcgQEAgbWljcm9taXBzX3NjYW5fcHJvbG9ndWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAog CiAvKiBIZXVyaXN0aWMgdW53aW5kZXIgZm9yIHByb2NlZHVyZXMgdXNpbmcgbWljcm9NSVBTIGlu c3RydWN0aW9ucy4KICAgIFByb2NlZHVyZXMgdGhhdCB1c2UgdGhlIDMyLWJpdCBpbnN0cnVjdGlv biBzZXQgYXJlIGhhbmRsZWQgYnkgdGhlCi0gICBtaXBzX2luc24zMiB1bndpbmRlci4gIExpa2V3 aXNlIE1JUFMxNiBhbmQgdGhlIG1pcHNfaW5zbjE2IHVud2luZGVyLiAqLworICAgbWlwc19pbnNu MzIgdW53aW5kZXIuICBMaWtld2lzZSBNSVBTMTYgYW5kIHRoZSBtaXBzX2luc24xNiB1bndpbmRl ci4gICovCiAKIHN0YXRpYyBzdHJ1Y3QgbWlwc19mcmFtZV9jYWNoZSAqCiBtaXBzX21pY3JvX2Zy YW1lX2NhY2hlIChjb25zdCBmcmFtZV9pbmZvX3B0ciAmdGhpc19mcmFtZSwgdm9pZCAqKnRoaXNf Y2FjaGUpCkBAIC0zNDI1LDcgKzM3NjcsNyBAQCByZXNldF9zYXZlZF9yZWdzIChzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCwgc3RydWN0IG1pcHNfZnJhbWVfY2FjaGUgKnRoaXNfY2FjaGUpCiB9CiAK IC8qIEFuYWx5emUgdGhlIGZ1bmN0aW9uIHByb2xvZ3VlIGZyb20gU1RBUlRfUEMgdG8gTElNSVRf UEMuICBCdWlsZHMKLSAgIHRoZSBhc3NvY2lhdGVkIEZSQU1FX0NBQ0hFIGlmIG5vdCBudWxsLiAg CisgICB0aGUgYXNzb2NpYXRlZCBGUkFNRV9DQUNIRSBpZiBub3QgbnVsbC4KICAgIFJldHVybiB0 aGUgYWRkcmVzcyBvZiB0aGUgZmlyc3QgaW5zdHJ1Y3Rpb24gcGFzdCB0aGUgcHJvbG9ndWUuICAq LwogCiBzdGF0aWMgQ09SRV9BRERSCkBAIC0zNDkzLDE2ICszODM1LDE5IEBAIG1pcHMzMl9zY2Fu X3Byb2xvZ3VlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAgICAgIHJlZyA9IGhpZ2hfd29y ZCAmIDB4MWY7CiAKICAgICAgIGlmIChoaWdoX3dvcmQgPT0gMHgyN2JkCQkvKiBhZGRpdSAkc3As JHNwLC1pICovCi0JICB8fCBoaWdoX3dvcmQgPT0gMHgyM2JkCS8qIGFkZGkgJHNwLCRzcCwtaSAq LworCSAgfHwgKGhpZ2hfd29yZCA9PSAweDIzYmQJLyogYWRkaSAkc3AsJHNwLC1pICAqLworCSAg JiYgIWlzX21pcHNyNl9pc2EgKGdkYmFyY2gpKQogCSAgfHwgaGlnaF93b3JkID09IDB4NjdiZCkJ LyogZGFkZGl1ICRzcCwkc3AsLWkgKi8KIAl7CiAJICBpZiAob2Zmc2V0IDwgMCkJCS8qIE5lZ2F0 aXZlIHN0YWNrIGFkanVzdG1lbnQ/ICAqLwogCSAgICBmcmFtZV9vZmZzZXQgLT0gb2Zmc2V0Owog CSAgZWxzZQotCSAgICAvKiBFeGl0IGxvb3AgaWYgYSBwb3NpdGl2ZSBzdGFjayBhZGp1c3RtZW50 IGlzIGZvdW5kLCB3aGljaAotCSAgICAgICB1c3VhbGx5IG1lYW5zIHRoYXQgdGhlIHN0YWNrIGNs ZWFudXAgY29kZSBpbiB0aGUgZnVuY3Rpb24KLQkgICAgICAgZXBpbG9ndWUgaXMgcmVhY2hlZC4g ICovCi0JICAgIGJyZWFrOworCSAgICB7CisJICAgICAvKiBFeGl0IGxvb3AgaWYgYSBwb3NpdGl2 ZSBzdGFjayBhZGp1c3RtZW50IGlzIGZvdW5kLCB3aGljaAorCQl1c3VhbGx5IG1lYW5zIHRoYXQg dGhlIHN0YWNrIGNsZWFudXAgY29kZSBpbiB0aGUgZnVuY3Rpb24KKwkJZXBpbG9ndWUgaXMgcmVh Y2hlZC4gICovCisJICAgICAgYnJlYWs7CisJICAgIH0KIAkgIHNlZW5fc3BfYWRqdXN0ID0gMTsK IAl9CiAgICAgICBlbHNlIGlmICgoKGhpZ2hfd29yZCAmIDB4RkZFMCkgPT0gMHhhZmEwKSAvKiBz dyByZWcsb2Zmc2V0KCRzcCkgKi8KQEAgLTM2MzEsNyArMzk3Niw5IEBAIG1pcHMzMl9zY2FuX3By b2xvZ3VlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKIAogICAgICAgLyogQSBqdW1wIG9yIGJy YW5jaCwgb3IgZW5vdWdoIG5vbi1wcm9sb2d1ZSBpbnNucyBzZWVuPyAgSWYgc28sCiAJIHRoZW4g d2UgbXVzdCBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgcHJvbG9ndWUgYnkgbm93LiAgKi8K LSAgICAgIGlmIChwcmV2X2RlbGF5X3Nsb3QgfHwgbm9uX3Byb2xvZ3VlX2luc25zID4gMSkKKyAg ICAgIGlmIChwcmV2X2RlbGF5X3Nsb3QKKwkgIHx8IG5vbl9wcm9sb2d1ZV9pbnNucyA+IDEKKwkg IHx8IG1pcHMzMl9pbnN0cnVjdGlvbl9pc19jb21wYWN0X2JyYW5jaCAoZ2RiYXJjaCwgaW5zdCkp CiAJYnJlYWs7CiAKICAgICAgIHByZXZfbm9uX3Byb2xvZ3VlX2luc24gPSB0aGlzX25vbl9wcm9s b2d1ZV9pbnNuOwpAQCAtMzY0MSw3ICszOTg4LDcgQEAgbWlwczMyX3NjYW5fcHJvbG9ndWUgKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogCiAgIGlmICh0aGlzX2NhY2hlICE9IE5VTEwpCiAgICAg ewotICAgICAgdGhpc19jYWNoZS0+YmFzZSA9IAorICAgICAgdGhpc19jYWNoZS0+YmFzZSA9CiAJ KGdldF9mcmFtZV9yZWdpc3Rlcl9zaWduZWQgKHRoaXNfZnJhbWUsCiAJCQkJICAgIGdkYmFyY2hf bnVtX3JlZ3MgKGdkYmFyY2gpICsgZnJhbWVfcmVnKQogCSArIGZyYW1lX29mZnNldCk7CkBAIC0z NjYwLDcgKzQwMDcsNyBAQCBtaXBzMzJfc2Nhbl9wcm9sb2d1ZSAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gsCiAgICAgIGl0cyBhZGRyZXNzIGluc3RlYWQuICAqLwogICBlbmRfcHJvbG9ndWVfYWRk cgogICAgID0gcHJldl9ub25fcHJvbG9ndWVfaW5zbiB8fCBwcmV2X2RlbGF5X3Nsb3QgPyBwcmV2 X3BjIDogY3VyX3BjOwotICAgICAKKwogICAvKiBJbiBhIGZyYW1lbGVzcyBmdW5jdGlvbiwgd2Ug bWlnaHQgaGF2ZSBpbmNvcnJlY3RseQogICAgICBza2lwcGVkIHNvbWUgbG9hZCBpbW1lZGlhdGUg aW5zdHJ1Y3Rpb25zLiAgVW5kbyB0aGUgc2tpcHBpbmcKICAgICAgaWYgdGhlIGxvYWQgaW1tZWRp YXRlIHdhcyBub3QgZm9sbG93ZWQgYnkgYSBzdGFjayBhZGp1c3RtZW50LiAgKi8KQEAgLTM2NzMs NyArNDAyMCw3IEBAIG1pcHMzMl9zY2FuX3Byb2xvZ3VlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwKIC8qIEhldXJpc3RpYyB1bndpbmRlciBmb3IgcHJvY2VkdXJlcyB1c2luZyAzMi1iaXQgaW5z dHJ1Y3Rpb25zIChjb3ZlcnMKICAgIGJvdGggMzItYml0IGFuZCA2NC1iaXQgTUlQUyBJU0FzKS4g IFByb2NlZHVyZXMgdXNpbmcgMTYtYml0CiAgICBpbnN0cnVjdGlvbnMgKGEuay5hLiBNSVBTMTYp IGFyZSBoYW5kbGVkIGJ5IHRoZSBtaXBzX2luc24xNgotICAgdW53aW5kZXIuICBMaWtld2lzZSBt aWNyb01JUFMgYW5kIHRoZSBtaXBzX21pY3JvIHVud2luZGVyLiAqLworICAgdW53aW5kZXIuICBM aWtld2lzZSBtaWNyb01JUFMgYW5kIHRoZSBtaXBzX21pY3JvIHVud2luZGVyLiAgKi8KIAogc3Rh dGljIHN0cnVjdCBtaXBzX2ZyYW1lX2NhY2hlICoKIG1pcHNfaW5zbjMyX2ZyYW1lX2NhY2hlIChj b25zdCBmcmFtZV9pbmZvX3B0ciAmdGhpc19mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUpCkBAIC0z NzA0LDcgKzQwNTEsNyBAQCBtaXBzX2luc24zMl9mcmFtZV9jYWNoZSAoY29uc3QgZnJhbWVfaW5m b19wdHIgJnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlKQogICAgIG1pcHMzMl9zY2FuX3By b2xvZ3VlIChnZGJhcmNoLCBzdGFydF9hZGRyLCBwYywgdGhpc19mcmFtZSwKIAkJCSAgKHN0cnVj dCBtaXBzX2ZyYW1lX2NhY2hlICopICp0aGlzX2NhY2hlKTsKICAgfQotICAKKwogICAvKiBnZGJh cmNoX3NwX3JlZ251bSBjb250YWlucyB0aGUgdmFsdWUgYW5kIG5vdCB0aGUgYWRkcmVzcy4gICov CiAgIGNhY2hlLT5zYXZlZF9yZWdzW2dkYmFyY2hfbnVtX3JlZ3MgKGdkYmFyY2gpCiAJCSAgICAr IE1JUFNfU1BfUkVHTlVNXS5zZXRfdmFsdWUgKGNhY2hlLT5iYXNlKTsKQEAgLTM5MDQsMzAgKzQy NTEsMzEgQEAgbWlwc19hZGRyX2JpdHNfcmVtb3ZlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwg Q09SRV9BRERSIGFkZHIpCiAgIG1pcHNfZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVw PG1pcHNfZ2RiYXJjaF90ZGVwPiAoZ2RiYXJjaCk7CiAKICAgaWYgKG1pcHNfbWFza19hZGRyZXNz X3AgKHRkZXApICYmICgoKFVMT05HRVNUKSBhZGRyKSA+PiAzMiA9PSAweGZmZmZmZmZmVUwpKQot ICAgIC8qIFRoaXMgaGFjayBpcyBhIHdvcmstYXJvdW5kIGZvciBleGlzdGluZyBib2FyZHMgdXNp bmcgUE1PTiwgdGhlCi0gICAgICAgc2ltdWxhdG9yLCBhbmQgYW55IG90aGVyIDY0LWJpdCB0YXJn ZXRzIHRoYXQgZG9lc24ndCBoYXZlIHRydWUKLSAgICAgICA2NC1iaXQgYWRkcmVzc2luZy4gIE9u IHRoZXNlIHRhcmdldHMsIHRoZSB1cHBlciAzMiBiaXRzIG9mCi0gICAgICAgYWRkcmVzc2VzIGFy ZSBpZ25vcmVkIGJ5IHRoZSBoYXJkd2FyZS4gIFRodXMsIHRoZSBQQyBvciBTUCBhcmUKLSAgICAg ICBsaWtlbHkgdG8gaGF2ZSBiZWVuIHNpZ24gZXh0ZW5kZWQgdG8gYWxsIDFzIGJ5IGluc3RydWN0 aW9uCi0gICAgICAgc2VxdWVuY2VzIHRoYXQgbG9hZCAzMi1iaXQgYWRkcmVzc2VzLiAgRm9yIGV4 YW1wbGUsIGEgdHlwaWNhbAotICAgICAgIHBpZWNlIG9mIGNvZGUgdGhhdCBsb2FkcyBhbiBhZGRy ZXNzIGlzIHRoaXM6Ci0KLSAgICAgICBsdWkgJHIyLCA8dXBwZXIgMTYgYml0cz4KLSAgICAgICBv cmkgJHIyLCA8bG93ZXIgMTYgYml0cz4KLQotICAgICAgIEJ1dCB0aGUgbHVpIHNpZ24tZXh0ZW5k cyB0aGUgdmFsdWUgc3VjaCB0aGF0IHRoZSB1cHBlciAzMiBiaXRzCi0gICAgICAgbWF5IGJlIGFs bCAxcy4gIFRoZSB3b3JrYXJvdW5kIGlzIHNpbXBseSB0byBtYXNrIG9mZiB0aGVzZQotICAgICAg IGJpdHMuICBJbiB0aGUgZnV0dXJlLCBnY2MgbWF5IGJlIGNoYW5nZWQgdG8gc3VwcG9ydCB0cnVl IDY0LWJpdAotICAgICAgIGFkZHJlc3NpbmcsIGFuZCB0aGlzIG1hc2tpbmcgd2lsbCBoYXZlIHRv IGJlIGRpc2FibGVkLiAgKi8KLSAgICByZXR1cm4gYWRkciAmPSAweGZmZmZmZmZmVUw7CisgICAg eworICAgICAgLyogVGhpcyBoYWNrIGlzIGEgd29yay1hcm91bmQgZm9yIGV4aXN0aW5nIGJvYXJk cyB1c2luZyBQTU9OLCB0aGUKKwkgc2ltdWxhdG9yLCBhbmQgYW55IG90aGVyIDY0LWJpdCB0YXJn ZXRzIHRoYXQgZG9lc24ndCBoYXZlIHRydWUKKwkgNjQtYml0IGFkZHJlc3NpbmcuICBPbiB0aGVz ZSB0YXJnZXRzLCB0aGUgdXBwZXIgMzIgYml0cyBvZgorCSBhZGRyZXNzZXMgYXJlIGlnbm9yZWQg YnkgdGhlIGhhcmR3YXJlLiAgVGh1cywgdGhlIFBDIG9yIFNQIGFyZQorCSBsaWtlbHkgdG8gaGF2 ZSBiZWVuIHNpZ24gZXh0ZW5kZWQgdG8gYWxsIDFzIGJ5IGluc3RydWN0aW9uCisJIHNlcXVlbmNl cyB0aGF0IGxvYWQgMzItYml0IGFkZHJlc3Nlcy4gIEZvciBleGFtcGxlLCBhIHR5cGljYWwKKwkg cGllY2Ugb2YgY29kZSB0aGF0IGxvYWRzIGFuIGFkZHJlc3MgaXMgdGhpczoKKworCSBsdWkgJHIy LCA8dXBwZXIgMTYgYml0cz4KKwkgb3JpICRyMiwgPGxvd2VyIDE2IGJpdHM+CisKKwkgQnV0IHRo ZSBsdWkgc2lnbi1leHRlbmRzIHRoZSB2YWx1ZSBzdWNoIHRoYXQgdGhlIHVwcGVyIDMyIGJpdHMK KwkgbWF5IGJlIGFsbCAxcy4gIFRoZSB3b3JrYXJvdW5kIGlzIHNpbXBseSB0byBtYXNrIG9mZiB0 aGVzZQorCSBiaXRzLiAgSW4gdGhlIGZ1dHVyZSwgZ2NjIG1heSBiZSBjaGFuZ2VkIHRvIHN1cHBv cnQgdHJ1ZSA2NC1iaXQKKwkgYWRkcmVzc2luZywgYW5kIHRoaXMgbWFza2luZyB3aWxsIGhhdmUg dG8gYmUgZGlzYWJsZWQuICAqLworICAgICAgcmV0dXJuIGFkZHIgJj0gMHhmZmZmZmZmZlVMOwor ICAgIH0KICAgZWxzZQogICAgIHJldHVybiBhZGRyOwogfQogCi0KIC8qIENoZWNrcyBmb3IgYW4g YXRvbWljIHNlcXVlbmNlIG9mIGluc3RydWN0aW9ucyBiZWdpbm5pbmcgd2l0aCBhIExML0xMRAog ICAgaW5zdHJ1Y3Rpb24gYW5kIGVuZGluZyB3aXRoIGEgU0MvU0NEIGluc3RydWN0aW9uLiAgSWYg c3VjaCBhIHNlcXVlbmNlCi0gICBpcyBmb3VuZCwgYXR0ZW1wdCB0byBzdGVwIHRocm91Z2ggaXQu ICBBIGJyZWFrcG9pbnQgaXMgcGxhY2VkIGF0IHRoZSBlbmQgb2YgCisgICBpcyBmb3VuZCwgYXR0 ZW1wdCB0byBzdGVwIHRocm91Z2ggaXQuICBBIGJyZWFrcG9pbnQgaXMgcGxhY2VkIGF0IHRoZSBl bmQgb2YKICAgIHRoZSBzZXF1ZW5jZS4gICovCiAKIC8qIEluc3RydWN0aW9ucyB1c2VkIGR1cmlu ZyBzaW5nbGUtc3RlcHBpbmcgb2YgYXRvbWljIHNlcXVlbmNlcywgc3RhbmRhcmQKQEAgLTM5MzYs NiArNDI4NCw3MCBAQCBtaXBzX2FkZHJfYml0c19yZW1vdmUgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLCBDT1JFX0FERFIgYWRkcikKICNkZWZpbmUgTExEX09QQ09ERSAweDM0CiAjZGVmaW5lIFND X09QQ09ERSAweDM4CiAjZGVmaW5lIFNDRF9PUENPREUgMHgzYworI2RlZmluZSBMTFNDX1I2X09Q Q09ERSAweDFmCisjZGVmaW5lIExMX1I2X0ZVTkNUIDB4MzYKKyNkZWZpbmUgTExFX0ZVTkNUIDB4 MmUKKyNkZWZpbmUgTExEX1I2X0ZVTkNUIDB4MzcKKyNkZWZpbmUgU0NfUjZfRlVOQ1QgMHgyNgor I2RlZmluZSBTQ0VfRlVOQ1QgMHgxZQorI2RlZmluZSBTQ0RfUjZfRlVOQ1QgMHgyNworCisvKiBE ZXRlcm1pbmUgd2hldGhlciBpbnN0cnVjdGlvbiAnaW5zbicgaXMgb2YgJ2xvYWQgbGlua2VkIFgn IHR5cGUuCisgICBMTC9TQyBpbnN0cnVjdGlvbnMgcHJvdmlkZSBwcmltaXRpdmVzIHRvIGltcGxl bWVudCBhdG9taWMKKyAgIHJlYWQtbW9kaWZ5LXdyaXRlIG9wZXJhdGlvbnMgZm9yIHN5bmNocm9u aXphYmxlIG1lbW9yeSBsb2NhdGlvbnMuICAqLworCitzdGF0aWMgYm9vbAoraXNfbGxfaW5zbiAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIFVMT05HRVNUIGluc24pCit7CisgIGlmIChpdHlwZV9v cCAoaW5zbikgPT0gTExfT1BDT0RFCisgICAgICB8fCBpdHlwZV9vcCAoaW5zbikgPT0gTExEX09Q Q09ERSkKKyAgICByZXR1cm4gdHJ1ZTsKKworICBpZiAocnR5cGVfb3AgKGluc24pID09IExMU0Nf UjZfT1BDT0RFCisgICAgICAmJiBydHlwZV9mdW5jdCAoaW5zbikgPT0gTExFX0ZVTkNUCisgICAg ICAmJiAoaW5zbiAmIDB4NDApID09IDApCisgICAgcmV0dXJuIHRydWU7CisKKyAgLyogSGFuZGxl IExMIGFuZCBMTFAgdmFyaWV0aWVzLiAgKi8KKyAgaWYgKGlzX21pcHNyNl9pc2EgKGdkYmFyY2gp CisgICAgICAmJiBydHlwZV9vcCAoaW5zbikgPT0gTExTQ19SNl9PUENPREUKKyAgICAgICYmIChy dHlwZV9mdW5jdCAoaW5zbikgPT0gTExfUjZfRlVOQ1QKKwkgIHx8IHJ0eXBlX2Z1bmN0IChpbnNu KSA9PSBMTERfUjZfRlVOQ1QKKwkgIHx8IHJ0eXBlX2Z1bmN0IChpbnNuKSA9PSBMTEVfRlVOQ1Qp KQorICAgIHJldHVybiB0cnVlOworCisgIHJldHVybiBmYWxzZTsKK30KKworLyogRGV0ZXJtaW5l IHdoZXRoZXIgaW5zdHJ1Y3Rpb24gJ2luc24nIGlzIG9mICdzdG9yZSBjb25kaXRpb25hbCBYJyB0 eXBlLgorICAgU0MgaW5zdHJ1Y3Rpb25zIGFuZCB2YXJpZXRpZXMgcGVyZm9ybSBjb21wbGV0aW9u IG9mIHJlYWQtbW9kaWZ5LXdyaXRlCisgICBhdG9taWMgc2VxdWVuY2UuICAqLworCitzdGF0aWMg Ym9vbAoraXNfc2NfaW5zbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIFVMT05HRVNUIGluc24p Cit7CisgIGlmIChpdHlwZV9vcCAoaW5zbikgPT0gU0NfT1BDT0RFCisgICAgICB8fCBpdHlwZV9v cCAoaW5zbikgPT0gU0NEX09QQ09ERSkKKyAgICByZXR1cm4gdHJ1ZTsKKworICBpZiAocnR5cGVf b3AgKGluc24pID09IExMU0NfUjZfT1BDT0RFCisgICAgICAmJiBydHlwZV9mdW5jdCAoaW5zbikg PT0gU0NFX0ZVTkNUCisgICAgICAmJiAoaW5zbiAmIDB4NDApID09IDApCisgICAgcmV0dXJuIHRy dWU7CisKKyAgLyogSGFuZGxlIFNDIGFuZCBTQ1AgdmFyaWV0aWVzLiAgKi8KKyAgaWYgKGlzX21p cHNyNl9pc2EgKGdkYmFyY2gpCisgICAgICAmJiBydHlwZV9vcCAoaW5zbikgPT0gTExTQ19SNl9P UENPREUKKyAgICAgICYmIChydHlwZV9mdW5jdCAoaW5zbikgPT0gU0NfUjZfRlVOQ1QKKwkgIHx8 IHJ0eXBlX2Z1bmN0IChpbnNuKSA9PSBTQ0RfUjZfRlVOQ1QKKwkgIHx8IHJ0eXBlX2Z1bmN0IChp bnNuKSA9PSBTQ0VfRlVOQ1QpKQorICAgIHJldHVybiB0cnVlOworCisgIHJldHVybiBmYWxzZTsK K30KKworLyogSGFuZGxlIG1pcHMgYXRvbWljIHNlcXVlbmNlIHdoaWNoIHN0YXJ0cyB3aXRoIExM L0xMRCBhbmQgZW5kcyB3aXRoCisgICBTQy9TQ0QgaW5zdHJ1Y3Rpb24uICAqLwogCiBzdGF0aWMg c3RkOjp2ZWN0b3I8Q09SRV9BRERSPgogbWlwc19kZWFsX3dpdGhfYXRvbWljX3NlcXVlbmNlIChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIHBjKQpAQCAtMzk0NiwxNSArNDM1OCwx NiBAQCBtaXBzX2RlYWxfd2l0aF9hdG9taWNfc2VxdWVuY2UgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLCBDT1JFX0FERFIgcGMpCiAgIFVMT05HRVNUIGluc247CiAgIGludCBpbnNuX2NvdW50Owog ICBpbnQgaW5kZXg7Ci0gIGludCBsYXN0X2JyZWFrcG9pbnQgPSAwOyAvKiBEZWZhdWx0cyB0byAw IChubyBicmVha3BvaW50cyBwbGFjZWQpLiAgKi8gIAorICBpbnQgbGFzdF9icmVha3BvaW50ID0g MDsgLyogRGVmYXVsdHMgdG8gMCAobm8gYnJlYWtwb2ludHMgcGxhY2VkKS4gICovCiAgIGNvbnN0 IGludCBhdG9taWNfc2VxdWVuY2VfbGVuZ3RoID0gMTY7IC8qIEluc3RydWN0aW9uIHNlcXVlbmNl IGxlbmd0aC4gICovCisgIGJvb2wgaXNfbWlwc3I2ID0gaXNfbWlwc3I2X2lzYSAoZ2RiYXJjaCk7 CiAKICAgaW5zbiA9IG1pcHNfZmV0Y2hfaW5zdHJ1Y3Rpb24gKGdkYmFyY2gsIElTQV9NSVBTLCBs b2MsIE5VTEwpOwogICAvKiBBc3N1bWUgYWxsIGF0b21pYyBzZXF1ZW5jZXMgc3RhcnQgd2l0aCBh IGxsL2xsZCBpbnN0cnVjdGlvbi4gICovCi0gIGlmIChpdHlwZV9vcCAoaW5zbikgIT0gTExfT1BD T0RFICYmIGl0eXBlX29wIChpbnNuKSAhPSBMTERfT1BDT0RFKQorICBpZiAoIWlzX2xsX2luc24g KGdkYmFyY2gsIGluc24pKQogICAgIHJldHVybiB7fTsKIAotICAvKiBBc3N1bWUgdGhhdCBubyBh dG9taWMgc2VxdWVuY2UgaXMgbG9uZ2VyIHRoYW4gImF0b21pY19zZXF1ZW5jZV9sZW5ndGgiIAor ICAvKiBBc3N1bWUgdGhhdCBubyBhdG9taWMgc2VxdWVuY2UgaXMgbG9uZ2VyIHRoYW4gImF0b21p Y19zZXF1ZW5jZV9sZW5ndGgiCiAgICAgIGluc3RydWN0aW9ucy4gICovCiAgIGZvciAoaW5zbl9j b3VudCA9IDA7IGluc25fY291bnQgPCBhdG9taWNfc2VxdWVuY2VfbGVuZ3RoOyArK2luc25fY291 bnQpCiAgICAgewpAQCAtMzk4MSwyOCArNDM5NCw3MiBAQCBtaXBzX2RlYWxfd2l0aF9hdG9taWNf c2VxdWVuY2UgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgcGMpCiAJICByZXR1 cm4ge307IC8qIGZhbGxiYWNrIHRvIHRoZSBzdGFuZGFyZCBzaW5nbGUtc3RlcCBjb2RlLiAgKi8K IAljYXNlIDQ6IC8qIEJFUSAqLwogCWNhc2UgNTogLyogQk5FICovCi0JY2FzZSA2OiAvKiBCTEVa ICovCi0JY2FzZSA3OiAvKiBCR1RaICovCiAJY2FzZSAyMDogLyogQkVRTCAqLwogCWNhc2UgMjE6 IC8qIEJORUwgKi8KLQljYXNlIDIyOiAvKiBCTEVaTCAqLwotCWNhc2UgMjM6IC8qIEJHVFRMICov CisJY2FzZSAyMjogLyogQkxFWkwgKEJMRVpDLCBCR0VaQywgQkdFQykgICovCisJY2FzZSAyMzog LyogQkdUWkwgKEJHVFpDLCBCTFRaQywgQkxUQykgICovCiAJICBpc19icmFuY2ggPSAxOwogCSAg YnJlYWs7CisJY2FzZSA2OiAvKiBCTEVaIChCTEVaQUxDLCBCR0VaQUxDLCBCR0VVQykgICovCisJ Y2FzZSA3OiAvKiBCR1RaIChCR1RaQUxDLCBCTFRaQUxDLCBCTFRVQykgICovCisJICBpZiAoaXNf bWlwc3I2KQorCSAgICB7CisJICAgICAgLyogQkxFWkFMQywgQkdUWkFMQyAgKi8KKwkgICAgICBp ZiAoaXR5cGVfcnMgKGluc24pID09IDAgJiYgaXR5cGVfcnQgKGluc24pICE9IDApCisJCXJldHVy biB7fTsgLyogZmFsbGJhY2sgdG8gdGhlIHN0YW5kYXJkIHNpbmdsZS1zdGVwIGNvZGUuICAqLwor CSAgICAgIC8qIEJHRVpBTEMsIEJMVFpBTEMgICovCisJICAgICAgZWxzZSBpZiAoaXR5cGVfcnMg KGluc24pID09IGl0eXBlX3J0IChpbnNuKQorCQkgICAgICAgJiYgaXR5cGVfcnQgKGluc24pICE9 IDApCisJCXJldHVybiB7fTsgLyogZmFsbGJhY2sgdG8gdGhlIHN0YW5kYXJkIHNpbmdsZS1zdGVw IGNvZGUuICAqLworCSAgICB9CisJICBpc19icmFuY2ggPSAxOworCSAgYnJlYWs7CisJY2FzZSA4 OiAvKiBCT1ZDLCBCRVFaQUxDLCBCRVFDICAqLworCWNhc2UgMjQ6IC8qIEJOVkMsIEJORVpBTEMs IEJORUMgICovCisJICBpZiAoaXNfbWlwc3I2KQorCSAgICBpc19icmFuY2ggPSAxOworCSAgYnJl YWs7CisJY2FzZSA1MDogLyogQkMgICovCisJY2FzZSA1ODogLyogQkFMQyAgKi8KKwkgIGlmIChp c19taXBzcjYpCisJICAgIHJldHVybiB7fTsgLyogZmFsbGJhY2sgdG8gdGhlIHN0YW5kYXJkIHNp bmdsZS1zdGVwIGNvZGUuICAqLworCSAgYnJlYWs7CisJY2FzZSA1NDogLyogQkVRWkMsIEpJQyAg Ki8KKwljYXNlIDYyOiAvKiBCTkVaQywgSklBTEMgICovCisJICBpZiAoaXNfbWlwc3I2KQorCSAg ICB7CisJICAgICAgaWYgKGl0eXBlX3JzIChpbnNuKSA9PSAwKSAvKiBKSUMsIEpJQUxDICAqLwor CQlyZXR1cm4ge307IC8qIGZhbGxiYWNrIHRvIHRoZSBzdGFuZGFyZCBzaW5nbGUtc3RlcCBjb2Rl LiAgKi8KKwkgICAgICBlbHNlCisJCWlzX2JyYW5jaCA9IDI7IC8qIE1hcmtlciBmb3IgYnJhbmNo ZXMgd2l0aCBhIDIxLWJpdCBvZmZzZXQuICAqLworCSAgICB9CisJICBicmVhazsKIAljYXNlIDE3 OiAvKiBDT1AxICovCi0JICBpc19icmFuY2ggPSAoKGl0eXBlX3JzIChpbnNuKSA9PSA5IHx8IGl0 eXBlX3JzIChpbnNuKSA9PSAxMCkKLQkJICAgICAgICYmIChpdHlwZV9ydCAoaW5zbikgJiAweDIp ID09IDApOwotCSAgaWYgKGlzX2JyYW5jaCkgLyogQkMxQU5ZMkYsIEJDMUFOWTJULCBCQzFBTlk0 RiwgQkMxQU5ZNFQgKi8KKwkgIGlzX2JyYW5jaCA9ICgoIWlzX21pcHNyNgorCQkgICAgICAgLyog QkMxQU5ZMkYsIEJDMUFOWTJULCBCQzFBTlk0RiwgQkMxQU5ZNFQgICovCisJCQkmJiAoaXR5cGVf cnMgKGluc24pID09IDkgfHwgaXR5cGVfcnMgKGluc24pID09IDEwKQorCQkJJiYgKGl0eXBlX3J0 IChpbnNuKSAmIDB4MikgPT0gMCkKKwkJICAgICAgLyogQlouZGY6ICAwMTAwMDEgMTEweHggICov CisJCSAgICAgICB8fCAoaXR5cGVfcnMgKGluc24pICYgMHgxOCkgPT0gMHgxOCk7CisJICBpZiAo aXNfYnJhbmNoICE9IDApCiAJICAgIGJyZWFrOwogCSAgW1tmYWxsdGhyb3VnaF1dOwogCWNhc2Ug MTg6IC8qIENPUDIgKi8KIAljYXNlIDE5OiAvKiBDT1AzICovCi0JICBpc19icmFuY2ggPSAoaXR5 cGVfcnMgKGluc24pID09IDgpOyAvKiBCQ3pGLCBCQ3pGTCwgQkN6VCwgQkN6VEwgKi8KKwkgIC8q IEJDekYsIEJDekZMLCBCQ3pULCBCQ3pUTCwgQkMqRVFaLCBCQypORVogICovCisJICBpc19icmFu Y2ggPSAoKGl0eXBlX3JzIChpbnNuKSA9PSA4KQorCQkgICAgICAgfHwgKGlzX21pcHNyNgorCQkJ ICAgJiYgKGl0eXBlX3JzIChpbnNuKSA9PSA5CisJCQkgICAgICAgfHwgaXR5cGVfcnMgKGluc24p ID09IDEzKSkpOwogCSAgYnJlYWs7CiAJfQotICAgICAgaWYgKGlzX2JyYW5jaCkKKyAgICAgIGlm IChpc19icmFuY2ggIT0gMCkKIAl7Ci0JICBicmFuY2hfYnAgPSBsb2MgKyBtaXBzMzJfcmVsYXRp dmVfb2Zmc2V0IChpbnNuKSArIDQ7CisJICAvKiBJcyB0aGlzIGEgc3BlY2lhbCBQQzIxX1MyIGJy YW5jaD8gICovCisJICBpZiAoaXNfYnJhbmNoID09IDIpCisJICAgIGJyYW5jaF9icCA9IGxvYyAr IG1pcHMzMl9yZWxhdGl2ZV9vZmZzZXQyMSAoaW5zbikgKyA0OworCSAgZWxzZQorCSAgICBicmFu Y2hfYnAgPSBsb2MgKyBtaXBzMzJfcmVsYXRpdmVfb2Zmc2V0IChpbnNuKSArIDQ7CiAJICBpZiAo bGFzdF9icmVha3BvaW50ID49IDEpCiAJICAgIHJldHVybiB7fTsgLyogTW9yZSB0aGFuIG9uZSBi cmFuY2ggZm91bmQsIGZhbGxiYWNrIHRvIHRoZQogCQkJICBzdGFuZGFyZCBzaW5nbGUtc3RlcCBj b2RlLiAgKi8KQEAgLTQwMTAsMTIgKzQ0NjcsMTIgQEAgbWlwc19kZWFsX3dpdGhfYXRvbWljX3Nl cXVlbmNlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIHBjKQogCSAgbGFzdF9i cmVha3BvaW50Kys7CiAJfQogCi0gICAgICBpZiAoaXR5cGVfb3AgKGluc24pID09IFNDX09QQ09E RSB8fCBpdHlwZV9vcCAoaW5zbikgPT0gU0NEX09QQ09ERSkKKyAgICAgIGlmIChpc19zY19pbnNu IChnZGJhcmNoLCBpbnNuKSkKIAlicmVhazsKICAgICB9CiAKICAgLyogQXNzdW1lIHRoYXQgdGhl IGF0b21pYyBzZXF1ZW5jZSBlbmRzIHdpdGggYSBzYy9zY2QgaW5zdHJ1Y3Rpb24uICAqLwotICBp ZiAoaXR5cGVfb3AgKGluc24pICE9IFNDX09QQ09ERSAmJiBpdHlwZV9vcCAoaW5zbikgIT0gU0NE X09QQ09ERSkKKyAgaWYgKCFpc19zY19pbnNuIChnZGJhcmNoLCBpbnNuKSkKICAgICByZXR1cm4g e307CiAKICAgbG9jICs9IE1JUFNfSU5TTjMyX1NJWkU7CkBAIC00MTMwLDcgKzQ1ODcsNyBAQCBt aWNyb21pcHNfZGVhbF93aXRoX2F0b21pY19zZXF1ZW5jZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gsCiAJICAgIGNhc2UgMHgzNTogLyogSjogYml0cyAxMTAxMDEgKi8KIAkgICAgY2FzZSAweDNk OiAvKiBKQUw6IGJpdHMgMTExMTAxICovCiAJICAgIGNhc2UgMHgzYzogLyogSkFMWDogYml0cyAx MTExMDAgKi8KLQkgICAgICByZXR1cm4ge307IC8qIEZhbGwgYmFjayB0byB0aGUgc3RhbmRhcmQg c2luZ2xlLXN0ZXAgY29kZS4gKi8KKwkgICAgICByZXR1cm4ge307IC8qIEZhbGwgYmFjayB0byB0 aGUgc3RhbmRhcmQgc2luZ2xlLXN0ZXAgY29kZS4gICovCiAKIAkgICAgY2FzZSAweDE4OiAvKiBQ T09MMzJDOiBiaXRzIDAxMTAwMCAqLwogCSAgICAgIGlmICgoYjEyczRfb3AgKGluc24pICYgMHhi KSA9PSAweGIpCkBAIC00MTU3LDE0ICs0NjE0LDE0IEBAIG1pY3JvbWlwc19kZWFsX3dpdGhfYXRv bWljX3NlcXVlbmNlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKIAkJICAmJiBiNXM1X29wIChp bnNuKSAhPSAweDE4KQogCQkJCS8qIEpSQURESVVTUDogYml0cyAwMTAwMDEgMTEwMDAgKi8KIAkJ YnJlYWs7Ci0JICAgICAgcmV0dXJuIHt9OyAvKiBGYWxsIGJhY2sgdG8gdGhlIHN0YW5kYXJkIHNp bmdsZS1zdGVwIGNvZGUuICovCisJICAgICAgcmV0dXJuIHt9OyAvKiBGYWxsIGJhY2sgdG8gdGhl IHN0YW5kYXJkIHNpbmdsZS1zdGVwIGNvZGUuICAqLwogCiAJICAgIGNhc2UgMHgzMzogLyogQjE2 OiBiaXRzIDExMDAxMSAqLwotCSAgICAgIHJldHVybiB7fTsgLyogRmFsbCBiYWNrIHRvIHRoZSBz dGFuZGFyZCBzaW5nbGUtc3RlcCBjb2RlLiAqLworCSAgICAgIHJldHVybiB7fTsgLyogRmFsbCBi YWNrIHRvIHRoZSBzdGFuZGFyZCBzaW5nbGUtc3RlcCBjb2RlLiAgKi8KIAkgICAgfQogCSAgYnJl YWs7CiAJfQotICAgICAgaWYgKGlzX2JyYW5jaCkKKyAgICAgIGlmIChpc19icmFuY2ggIT0gMCkK IAl7CiAJICBpZiAobGFzdF9icmVha3BvaW50ID49IDEpCiAJICAgIHJldHVybiB7fTsgLyogTW9y ZSB0aGFuIG9uZSBicmFuY2ggZm91bmQsIGZhbGxiYWNrIHRvIHRoZQpAQCAtNDI0MCwxMCArNDY5 NywxNSBAQCBtaXBzX2Fib3V0X3RvX3JldHVybiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENP UkVfQUREUiBwYykKICAgZ2RiX2Fzc2VydCAobWlwc19wY19pc19taXBzIChwYykpOwogCiAgIGlu c24gPSBtaXBzX2ZldGNoX2luc3RydWN0aW9uIChnZGJhcmNoLCBJU0FfTUlQUywgcGMsIE5VTEwp OwotICBoaW50ID0gMHg3YzA7Ci0gIHJldHVybiAoaW5zbiAmIH5oaW50KSA9PSAweDNlMDAwMDg7 CQkJLyoganIoLmhiKSAkcmEgKi8KLX0KKyAgLyogTWFzayB0aGUgaGludCBhbmQgdGhlIGphbHIv anIgYml0LiAgKi8KKyAgaGludCA9IDB4N2MxOwogCisgIGlmIChpc19taXBzcjZfaXNhIChnZGJh cmNoKSAmJiBpbnNuID09IDB4ZDgxZjAwMDApIC8qIGpyYyAkMzEgICovCisgICAgcmV0dXJuIDE7 CisKKyAgLyoganIoLmhiKSAkcmEgYW5kICJqYWxyKC5oYikgJHJhIiAgKi8KKyAgcmV0dXJuICgo aW5zbiAmIH5oaW50KSA9PSAweDNlMDAwMDgpOworfQogCiAvKiBUaGlzIGZlbmNlcG9zdCBsb29r cyBoaWdobHkgc3VzcGljaW91cyB0byBtZS4gIFJlbW92aW5nIGl0IGFsc28KICAgIHNlZW1zIHN1 c3BpY2lvdXMgYXMgaXQgY291bGQgYWZmZWN0IHJlbW90ZSBkZWJ1Z2dpbmcgYWNyb3NzIHNlcmlh bApAQCAtNDgxNyw3ICs1Mjc5LDcgQEAgbWlwc19lYWJpX3JldHVybl92YWx1ZSAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsIHN0cnVjdCB2YWx1ZSAqZnVuY3Rpb24sCiAgICAgewogICAgICAgaWYg KHR5cGUtPmNvZGUgKCkgPT0gVFlQRV9DT0RFX0ZMVCkKIAlmcF9yZXR1cm5fdHlwZSA9IDE7Ci0g ICAgICAvKiBTdHJ1Y3RzIHdpdGggYSBzaW5nbGUgZmllbGQgb2YgZmxvYXQgdHlwZSAKKyAgICAg IC8qIFN0cnVjdHMgd2l0aCBhIHNpbmdsZSBmaWVsZCBvZiBmbG9hdCB0eXBlCiAJIGFyZSByZXR1 cm5lZCBpbiBhIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVyLiAgKi8KICAgICAgIGlmICgodHlwZS0+ Y29kZSAoKSA9PSBUWVBFX0NPREVfU1RSVUNUCiAJICAgfHwgdHlwZS0+Y29kZSAoKSA9PSBUWVBF X0NPREVfVU5JT04pCkBAIC00ODMwLDcgKzUyOTIsNyBAQCBtaXBzX2VhYmlfcmV0dXJuX3ZhbHVl IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHZhbHVlICpmdW5jdGlvbiwKIAl9CiAg ICAgfQogCi0gIGlmIChmcF9yZXR1cm5fdHlwZSkgICAgICAKKyAgaWYgKGZwX3JldHVybl90eXBl KQogICAgIHsKICAgICAgIC8qIEEgZmxvYXRpbmctcG9pbnQgdmFsdWUgYmVsb25ncyBpbiB0aGUg bGVhc3Qgc2lnbmlmaWNhbnQgcGFydAogCSBvZiBGUDAvRlAxLiAgKi8KQEAgLTQ4MzgsNyArNTMw MCw3IEBAIG1pcHNfZWFiaV9yZXR1cm5fdmFsdWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBz dHJ1Y3QgdmFsdWUgKmZ1bmN0aW9uLAogCWdkYl9wcmludGYgKGdkYl9zdGRlcnIsICJSZXR1cm4g ZmxvYXQgaW4gJGZwMFxuIik7CiAgICAgICByZWdudW0gPSBtaXBzX3JlZ251bSAoZ2RiYXJjaCkt PmZwMDsKICAgICB9Ci0gIGVsc2UgCisgIGVsc2UKICAgICB7CiAgICAgICAvKiBBbiBpbnRlZ2Vy IHZhbHVlIGdvZXMgaW4gVjAvVjEuICAqLwogICAgICAgaWYgKG1pcHNfZGVidWcpCkBAIC00ODYx LDcgKzUzMjMsNiBAQCBtaXBzX2VhYmlfcmV0dXJuX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjaCwgc3RydWN0IHZhbHVlICpmdW5jdGlvbiwKICAgcmV0dXJuIFJFVFVSTl9WQUxVRV9SRUdJ U1RFUl9DT05WRU5USU9OOwogfQogCi0KIC8qIE4zMi9ONjQgQUJJIHN0dWZmLiAgKi8KIAogLyog U2VhcmNoIGZvciBhIG5hdHVyYWxseSBhbGlnbmVkIGRvdWJsZSBhdCBPRkZTRVQgaW5zaWRlIGEg c3RydWN0CkBAIC02NTI1LDcgKzY5ODYsNiBAQCBwcmludF9mcF9yZWdpc3Rlcl9yb3cgKHN0cnVj dCB1aV9maWxlICpmaWxlLCBjb25zdCBmcmFtZV9pbmZvX3B0ciAmZnJhbWUsCiAgIHJldHVybiBy ZWdudW0gKyAxOwogfQogCi0KIC8qIFByaW50IGEgcm93J3Mgd29ydGggb2YgR1AgKGludCkgcmVn aXN0ZXJzLCB3aXRoIG5hbWUgbGFiZWxzIGFib3ZlLiAgKi8KIAogc3RhdGljIGludApAQCAtNjcy Myw3ICs3MTgzLDcgQEAgbWlwc19za2lwX3Byb2xvZ3VlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwgQ09SRV9BRERSIHBjKQogICAgICB0aGF0IGJvdW5kLCB0aGVuIHVzZSBhbiBhcmJpdHJhcnkg bGFyZ2UgbnVtYmVyIGFzIHRoZSB1cHBlciBib3VuZC4gICovCiAgIGxpbWl0X3BjID0gc2tpcF9w cm9sb2d1ZV91c2luZ19zYWwgKGdkYmFyY2gsIHBjKTsKICAgaWYgKGxpbWl0X3BjID09IDApCi0g ICAgbGltaXRfcGMgPSBwYyArIDEwMDsgICAgICAgICAgLyogTWFnaWMuICAqLworICAgIGxpbWl0 X3BjID0gcGMgKyAxMDA7CSAgLyogTWFnaWMuICAqLwogCiAgIGlmIChtaXBzX3BjX2lzX21pcHMx NiAoZ2RiYXJjaCwgcGMpKQogICAgIHJldHVybiBtaXBzMTZfc2Nhbl9wcm9sb2d1ZSAoZ2RiYXJj aCwgcGMsIGxpbWl0X3BjLCBOVUxMLCBOVUxMKTsKQEAgLTY3NjEsNyArNzIyMSw5IEBAIG1pcHMz Ml9zdGFja19mcmFtZV9kZXN0cm95ZWRfcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVf QUREUiBwYykKIAogCSAgaWYgKGhpZ2hfd29yZCAhPSAweDI3YmQJLyogYWRkaXUgJHNwLCRzcCxv ZmZzZXQgKi8KIAkgICAgICAmJiBoaWdoX3dvcmQgIT0gMHg2N2JkCS8qIGRhZGRpdSAkc3AsJHNw LG9mZnNldCAqLwotCSAgICAgICYmIGluc3QgIT0gMHgwM2UwMDAwOAkvKiBqciAkcmEgKi8KKwkg ICAgICAmJiAoaW5zdCAmIH4weDEpICE9IDB4MDNlMDAwMDggLyoganIgJDMxIG9yIGphbHIgJDAs ICQzMSAgKi8KKwkgICAgICAmJiAoIWlzX21pcHNyNl9pc2EgKGdkYmFyY2gpCisJCSAgfHwgaW5z dCAhPSAweGQ4MWYwMDAwKSAvKiBqcmMgJDMxICAqLwogCSAgICAgICYmIGluc3QgIT0gMHgwMDAw MDAwMCkJLyogbm9wICovCiAJICAgIHJldHVybiAwOwogCX0KQEAgLTY5NjQsNyArNzQyNiw2IEBA IHNob3dfbWlwc2ZwdV9jb21tYW5kIChjb25zdCBjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCiAg ICAgICAoIlRoZSBNSVBTIGZsb2F0aW5nLXBvaW50IGNvcHJvY2Vzc29yIGlzIGFzc3VtZWQgdG8g YmUgJXNcbiIsIGZwdSk7CiB9CiAKLQogc3RhdGljIHZvaWQKIHNldF9taXBzZnB1X3NpbmdsZV9j b21tYW5kIChjb25zdCBjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCiB7CkBAIC03MTQwLDIyICs3 NjAxLDMxIEBAIG1pcHMzMl9pbnN0cnVjdGlvbl9oYXNfZGVsYXlfc2xvdCAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsIFVMT05HRVNUIGluc3QpCiAgIGludCBvcDsKICAgaW50IHJzOwogICBpbnQg cnQ7CisgIGJvb2wgaXNfbWlwc3I2ID0gaXNfbWlwc3I2X2lzYSAoZ2RiYXJjaCk7CiAKICAgb3Ag PSBpdHlwZV9vcCAoaW5zdCk7CiAgIGlmICgoaW5zdCAmIDB4ZTAwMDAwMDApICE9IDApCiAgICAg ewogICAgICAgcnMgPSBpdHlwZV9ycyAoaW5zdCk7CiAgICAgICBydCA9IGl0eXBlX3J0IChpbnN0 KTsKLSAgICAgIHJldHVybiAoaXNfb2N0ZW9uX2JiaXRfb3AgKG9wLCBnZGJhcmNoKSAKLQkgICAg ICB8fCBvcCA+PiAyID09IDUJLyogQkVRTCwgQk5FTCwgQkxFWkwsIEJHVFpMOiBiaXRzIDAxMDF4 eCAgKi8KLQkgICAgICB8fCBvcCA9PSAyOQkvKiBKQUxYOiBiaXRzIDAxMTEwMSAgKi8KKyAgICAg IHJldHVybiAoaXNfb2N0ZW9uX2JiaXRfb3AgKG9wLCBnZGJhcmNoKQorCSAgICAgIHx8IChvcCA+ PiAxID09IDEwKSAvKiBCRVFMLCBCTkVMOiBiaXRzIDAxMDEweCAgKi8KKwkgICAgICB8fCAob3Ag Pj4gMSA9PSAxMSAmJiBydCA9PSAwKSAvKiBCTEVaTCwgQkdUWkw6IGJpdHMgMDEwMTF4ICAqLwor CSAgICAgIHx8ICghaXNfbWlwc3I2ICYmIG9wID09IDI5KQkvKiBKQUxYOiBiaXRzIDAxMTEwMSAg Ki8KIAkgICAgICB8fCAob3AgPT0gMTcKIAkJICAmJiAocnMgPT0gOAogCQkJCS8qIEJDMUYsIEJD MUZMLCBCQzFULCBCQzFUTDogMDEwMDAxIDAxMDAwICAqLwotCQkgICAgICB8fCAocnMgPT0gOSAm JiAocnQgJiAweDIpID09IDApCisJCSAgICAgIHx8ICghaXNfbWlwc3I2ICYmIHJzID09IDkgJiYg KHJ0ICYgMHgyKSA9PSAwKQogCQkJCS8qIEJDMUFOWTJGLCBCQzFBTlkyVDogYml0cyAwMTAwMDEg MDEwMDEgICovCi0JCSAgICAgIHx8IChycyA9PSAxMCAmJiAocnQgJiAweDIpID09IDApKSkpOwor CQkgICAgICB8fCAoIWlzX21pcHNyNiAmJiBycyA9PSAxMCAmJiAocnQgJiAweDIpID09IDApKSkK IAkJCQkvKiBCQzFBTlk0RiwgQkMxQU5ZNFQ6IGJpdHMgMDEwMDAxIDAxMDEwICAqLworCSAgICAg IHx8IChpc19taXBzcjYKKwkJICAmJiAoKG9wID09IDE3CisJCSAgICAgICAmJiAocnMgPT0gOSAg LyogQkMxRVFaOiAwMTAwMDEgMDEwMDEgICovCisJCQkgICB8fCBycyA9PSAxMykpICAvKiBCQzFO RVo6IDAxMDAwMSAwMTEwMSAgKi8KKwkJICAgICAgfHwgKG9wID09IDE4CisJCQkgICYmIChycyA9 PSA5ICAvKiBCQzJFUVo6IDAxMDAxMCAwMTAwMSAgKi8KKwkJCSAgICAgIHx8IHJzID09IDEzKSkp KSk7ICAvKiBCQzJORVo6IDAxMDAxMCAwMTEwMSAgKi8KICAgICB9CiAgIGVsc2UKICAgICBzd2l0 Y2ggKG9wICYgMHgwNykJCS8qIGV4dHJhY3QgYml0cyAyOCwyNywyNiAgKi8KQEAgLTcxNzQsNyAr NzY0NCwxMSBAQCBtaXBzMzJfaW5zdHJ1Y3Rpb25faGFzX2RlbGF5X3Nsb3QgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLCBVTE9OR0VTVCBpbnN0KQogCQl8fCAoKHJ0ICYgMHgxZSkgPT0gMHgxYyAm JiBycyA9PSAwKSk7CiAJCQkJLyogQlBPU0dFMzIsIEJQT1NHRTY0OiBiaXRzIDExMTB4ICAqLwog CWJyZWFrOwkJCS8qIGVuZCBSRUdJTU0gICovCi0gICAgICBkZWZhdWx0OgkJCS8qIEosIEpBTCwg QkVRLCBCTkUsIEJMRVosIEJHVFogICovCisgICAgICBjYXNlIDY6CQkgLyogQkxFWiAgKi8KKyAg ICAgIGNhc2UgNzoJCSAvKiBCR1RaICAqLworCXJldHVybiAoaXR5cGVfcnQgKGluc3QpID09IDAp OworCWJyZWFrOworICAgICAgZGVmYXVsdDoJCSAvKiBKLCBKQUwsIEJFUSwgQk5FICAqLwogCXJl dHVybiAxOwogCWJyZWFrOwogICAgICAgfQpAQCAtNzM1Miw3ICs3ODI2LDcgQEAgbWlwc19zZWdt ZW50X2JvdW5kYXJ5IChDT1JFX0FERFIgYnBhZGRyKQogfQogCiAvKiBNb3ZlIHRoZSBicmVha3Bv aW50IGF0IEJQQUREUiBvdXQgb2YgYW55IGJyYW5jaCBkZWxheSBzbG90IGJ5IHNoaWZ0aW5nCi0g ICBpdCBiYWNrd2FyZHMgaWYgbmVjZXNzYXJ5LiAgUmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBu ZXcgbG9jYXRpb24uICAqLworICAgaXQgYmFja3dhcmRzIGlmIG5lY2Vzc2FyeS4gUmV0dXJuIHRo ZSBhZGRyZXNzIG9mIHRoZSBuZXcgbG9jYXRpb24uICAqLwogCiBzdGF0aWMgQ09SRV9BRERSCiBt aXBzX2FkanVzdF9icmVha3BvaW50X2FkZHJlc3MgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBD T1JFX0FERFIgYnBhZGRyKQpAQCAtNzM4Niw3ICs3ODYwLDE4IEBAIG1pcHNfYWRqdXN0X2JyZWFr cG9pbnRfYWRkcmVzcyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBicGFkZHIp CiAKICAgICAgU28sIHdlJ2xsIHVzZSB0aGUgc2Vjb25kIHNvbHV0aW9uLiAgVG8gZG8gdGhpcyB3 ZSBuZWVkIHRvIGtub3cgaWYKICAgICAgdGhlIGluc3RydWN0aW9uIHdlJ3JlIHRyeWluZyB0byBz ZXQgdGhlIGJyZWFrcG9pbnQgb24gaXMgaW4gdGhlCi0gICAgIGJyYW5jaCBkZWxheSBzbG90LiAg Ki8KKyAgICAgYnJhbmNoIGRlbGF5IHNsb3QuCisKKyAgICAgQSBzaW1pbGFyIHByb2JsZW0gb2Nj dXJzIGZvciBicmVha3BvaW50cyBvbiBmb3JiaWRkZW4gc2xvdHMgd2hlcmUKKyAgICAgdGhlIHRy YXAgd2lsbCBiZSByZXBvcnRlZCBmb3IgdGhlIGJyYW5jaCB3aXRoIHRoZSBCRCBiaXQgc2V0Lgor ICAgICBJbiB0aGlzIGNhc2UgaXQgd291bGQgYmUgaWRlYWwgdG8gcmVjb3ZlciB1c2luZyBzb2x1 dGlvbiAxIGZyb20KKyAgICAgYWJvdmUgYXMgdGhlcmUgaXMgbm8gcHJvYmxlbSB3aXRoIHRoZSBi cmFuY2ggYmVpbmcgc2tpcHBlZAorICAgICAoc2luY2UgdGhlIGZvcmJpZGRlbiBzbG90IG9ubHkg ZXhpc3RzIG9uIG5vdC10YWtlbiBicmFuY2hlcykuCisgICAgIEhvd2V2ZXIsIHRoZSBCRCBiaXQg aXMgbm90IGF2YWlsYWJsZSBpbiBhbGwgc2NlbmFyaW9zIGN1cnJlbnRseQorICAgICBzbyBpbnN0 ZWFkIHdlIG1vdmUgdGhlIGJyZWFrcG9pbnQgb24gdG8gdGhlIG5leHQgaW5zdHJ1Y3Rpb24uCisg ICAgIFRoaXMgbWVhbnMgdGhhdCBpdCBpcyBub3QgcG9zc2libGUgdG8gc3RvcCBvbiBhbiBpbnN0 cnVjdGlvbgorICAgICB0aGF0IGNhbiBiZSBpbiBhIGZvcmJpZGRlbiBzbG90IGV2ZW4gaWYgdGhh dCBpbnN0cnVjdGlvbiBpcworICAgICBqdW1wZWQgdG8gZGlyZWN0bHkuICAqLwogCiAgIGJvdW5k YXJ5ID0gbWlwc19zZWdtZW50X2JvdW5kYXJ5IChicGFkZHIpOwogCkBAIC03NDA0LDEwICs3ODg5 LDE2IEBAIG1pcHNfYWRqdXN0X2JyZWFrcG9pbnRfYWRkcmVzcyAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gsIENPUkVfQUREUiBicGFkZHIpCiAJcmV0dXJuIGJwYWRkcjsKIAogICAgICAgLyogSWYg dGhlIHByZXZpb3VzIGluc3RydWN0aW9uIGhhcyBhIGJyYW5jaCBkZWxheSBzbG90LCB3ZSBoYXZl Ci0JIHRvIG1vdmUgdGhlIGJyZWFrcG9pbnQgdG8gdGhlIGJyYW5jaCBpbnN0cnVjdGlvbi4gKi8K KwkgdG8gbW92ZSB0aGUgYnJlYWtwb2ludCB0byB0aGUgYnJhbmNoIGluc3RydWN0aW9uLiAgKi8K ICAgICAgIHByZXZfYWRkciA9IGJwYWRkciAtIDQ7CiAgICAgICBpZiAobWlwczMyX2luc25fYXRf cGNfaGFzX2RlbGF5X3Nsb3QgKGdkYmFyY2gsIHByZXZfYWRkcikpCiAJYnBhZGRyID0gcHJldl9h ZGRyOworICAgICAgLyogSWYgdGhlIHByZXZpb3VzIGluc3RydWN0aW9uIGhhcyBhIGZvcmJpZGRl biBzbG90LCB3ZSBoYXZlIHRvCisJbW92ZSB0aGUgYnJlYWtwb2ludCB0byB0aGUgZm9sbG93aW5n IGluc3RydWN0aW9uIHRvIHByZXZlbnQKKwlicmVha3BvaW50cyBpbiBmb3JiaWRkZW4gc2xvdHMg YmVpbmcgcmVwb3J0ZWQgYXMgdW5rbm93bgorCXRyYXBzLiAgKi8KKyAgICAgIGVsc2UgaWYgKG1p cHMzMl9pbnNuX2F0X3BjX2hhc19mb3JiaWRkZW5fc2xvdCAoZ2RiYXJjaCwgcHJldl9hZGRyKSkK KwlicGFkZHIgKz0gNDsKICAgICB9CiAgIGVsc2UKICAgICB7CkBAIC03NDM3LDE4ICs3OTI4LDIz IEBAIG1pcHNfYWRqdXN0X2JyZWFrcG9pbnRfYWRkcmVzcyAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gsIENPUkVfQUREUiBicGFkZHIpCiAJICAgIGJyZWFrOwogCSAgYWRkciAtPSBNSVBTX0lOU04x Nl9TSVpFOwogCSAgaWYgKGkgPT0gMSAmJiBpbnNuX2F0X3BjX2hhc19kZWxheV9zbG90IChnZGJh cmNoLCBhZGRyLCAwKSkKKwkgICAgewogCSAgICAvKiBMb29rcyBsaWtlIGEgSlIvSkFMUiBhdCBb dGFyZ2V0LTFdLCBidXQgaXQgY291bGQgYmUKIAkgICAgICAgdGhlIHNlY29uZCB3b3JkIG9mIGEg cHJldmlvdXMgSkFML0pBTFgsIHNvIHJlY29yZCBpdAogCSAgICAgICBhbmQgY2hlY2sgYmFjayBv bmUgbW9yZS4gICovCi0JICAgIGptcGFkZHIgPSBhZGRyOworCSAgICAgIGptcGFkZHIgPSBhZGRy OworCSAgICB9CiAJICBlbHNlIGlmIChpID4gMSAmJiBpbnNuX2F0X3BjX2hhc19kZWxheV9zbG90 IChnZGJhcmNoLCBhZGRyLCAxKSkKIAkgICAgewogCSAgICAgIGlmIChpID09IDIpCisJCXsKIAkJ LyogTG9va3MgbGlrZSBhIEpBTC9KQUxYIGF0IFt0YXJnZXQtMl0sIGJ1dCBpdCBjb3VsZCBhbHNv CiAJCSAgIGJlIHRoZSBzZWNvbmQgd29yZCBvZiBhIHByZXZpb3VzIEpBTC9KQUxYLCByZWNvcmQg aXQsCiAJCSAgIGFuZCBjaGVjayBiYWNrIG9uZSBtb3JlLiAgKi8KLQkJam1wYWRkciA9IGFkZHI7 CisJCSAgam1wYWRkciA9IGFkZHI7CisJCX0KIAkgICAgICBlbHNlCisJCXsKIAkJLyogTG9va3Mg bGlrZSBhIEpBTC9KQUxYIGF0IFt0YXJnZXQtM10sIHNvIGFueSBwcmV2aW91c2x5CiAJCSAgIHJl Y29yZGVkIEpBTC9KQUxYIG9yIEpSL0pBTFIgbXVzdCBiZSB3cm9uZywgYmVjYXVzZToKIApAQCAt NzQ2Niw3ICs3OTYyLDggQEAgbWlwc19hZGp1c3RfYnJlYWtwb2ludF9hZGRyZXNzIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIGJwYWRkcikKIAkJICAgIC0yOiBiZHNsb3QgKGNh bid0IGJlIGptcCkKIAkJICAgIC0xOiBKUi9KQUxSCiAJCSAgICAgMDogdGFyZ2V0IGluc24gICov Ci0JCWptcGFkZHIgPSAwOworCQkgIGptcGFkZHIgPSAwOworCQl9CiAJICAgIH0KIAkgIGVsc2UK IAkgICAgewpAQCAtNzczMywxNSArODIzMCwxOSBAQCBtaXBzX3NraXBfbWlwczE2X3RyYW1wb2xp bmVfY29kZSAoY29uc3QgZnJhbWVfaW5mb19wdHIgJmZyYW1lLCBDT1JFX0FERFIgcGMpCiAJICAg ICAgICYmIG1pcHNfaXNfc3R1Yl9zdWZmaXggKG5hbWUgKyBwcmVmaXhsZW4gKyAzLCAwKSkKIAl7 CiAJICBpZiAocGMgPT0gc3RhcnRfYWRkcikKKwkgICAgewogCSAgICAvKiBUaGlzIGlzIHRoZSAn Y2FsbCcgcGFydCBvZiBhIGNhbGwgc3R1Yi4gIFRoZSByZXR1cm4KIAkgICAgICAgYWRkcmVzcyBp cyBpbiAkMi4gICovCi0JICAgIHJldHVybiBnZXRfZnJhbWVfcmVnaXN0ZXJfc2lnbmVkCisJICAg ICAgcmV0dXJuIGdldF9mcmFtZV9yZWdpc3Rlcl9zaWduZWQKIAkJICAgICAoZnJhbWUsIGdkYmFy Y2hfbnVtX3JlZ3MgKGdkYmFyY2gpICsgTUlQU19WMF9SRUdOVU0pOworCSAgICB9CiAJICBlbHNl CisJICAgIHsKIAkgICAgLyogVGhpcyBpcyB0aGUgJ3JldHVybicgcGFydCBvZiBhIGNhbGwgc3R1 Yi4gIFRoZSByZXR1cm4KIAkgICAgICAgYWRkcmVzcyBpcyBpbiAkMTguICAqLwotCSAgICByZXR1 cm4gZ2V0X2ZyYW1lX3JlZ2lzdGVyX3NpZ25lZAorCSAgICAgIHJldHVybiBnZXRfZnJhbWVfcmVn aXN0ZXJfc2lnbmVkCiAJCSAgICAgKGZyYW1lLCBnZGJhcmNoX251bV9yZWdzIChnZGJhcmNoKSAr IE1JUFNfUzJfUkVHTlVNKTsKKwkgICAgfQogCX0KICAgICAgIGVsc2UKIAlyZXR1cm4gMDsJCS8q IE5vdCBhIHN0dWIuICAqLwpAQCAtNzc1MywxNSArODI1NCwxOSBAQCBtaXBzX3NraXBfbWlwczE2 X3RyYW1wb2xpbmVfY29kZSAoY29uc3QgZnJhbWVfaW5mb19wdHIgJmZyYW1lLCBDT1JFX0FERFIg cGMpCiAgICAgICB8fCBzdGFydHN3aXRoIChuYW1lLCBtaXBzX3N0cl9jYWxsX3N0dWIpKQogICAg IHsKICAgICAgIGlmIChwYyA9PSBzdGFydF9hZGRyKQorCXsKIAkvKiBUaGlzIGlzIHRoZSAnY2Fs bCcgcGFydCBvZiBhIGNhbGwgc3R1Yi4gIENhbGwgdGhpcyBoZWxwZXIKIAkgICB0byBzY2FuIHRo cm91Z2ggdGhpcyBjb2RlIGZvciBpbnRlcmVzdGluZyBpbnN0cnVjdGlvbnMKIAkgICBhbmQgZGV0 ZXJtaW5lIHRoZSBmaW5hbCBQQy4gICovCi0JcmV0dXJuIG1pcHNfZ2V0X21pcHMxNl9mbl9zdHVi X3BjIChmcmFtZSwgcGMpOworCSAgcmV0dXJuIG1pcHNfZ2V0X21pcHMxNl9mbl9zdHViX3BjIChm cmFtZSwgcGMpOworCX0KICAgICAgIGVsc2UKKwl7CiAJLyogVGhpcyBpcyB0aGUgJ3JldHVybicg cGFydCBvZiBhIGNhbGwgc3R1Yi4gIFRoZSByZXR1cm4gYWRkcmVzcwogCSAgIGlzIGluICQxOC4g ICovCi0JcmV0dXJuIGdldF9mcmFtZV9yZWdpc3Rlcl9zaWduZWQKKwkgIHJldHVybiBnZXRfZnJh bWVfcmVnaXN0ZXJfc2lnbmVkCiAJCSAoZnJhbWUsIGdkYmFyY2hfbnVtX3JlZ3MgKGdkYmFyY2gp ICsgTUlQU19TMl9SRUdOVU0pOworCX0KICAgICB9CiAKICAgcmV0dXJuIDA7CQkJLyogTm90IGEg c3R1Yi4gICovCkBAIC03OTIyLDcgKzg0MjcsNiBAQCBtaXBzX3N0YWJfcmVnX3RvX3JlZ251bSAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCBudW0pCiAgIHJldHVybiBnZGJhcmNoX251bV9y ZWdzIChnZGJhcmNoKSArIHJlZ251bTsKIH0KIAotCiAvKiBDb252ZXJ0IGEgZHdhcmYsIGR3YXJm Miwgb3IgZWNvZmYgcmVnaXN0ZXIgbnVtYmVyIHRvIGEgR0RCIFsxICoKICAgIGdkYmFyY2hfbnVt X3JlZ3MgLi4gMiAqIGdkYmFyY2hfbnVtX3JlZ3MpIFJFR05VTS4gICovCiAKQEAgLTc5NjAsNyAr ODQ2NCw2IEBAIG1pcHNfcmVnaXN0ZXJfc2ltX3JlZ25vIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwgaW50IHJlZ251bSkKICAgICByZXR1cm4gTEVHQUNZX1NJTV9SRUdOT19JR05PUkU7CiB9CiAK LQogLyogQ29udmVydCBhbiBpbnRlZ2VyIGludG8gYW4gYWRkcmVzcy4gIEV4dHJhY3RpbmcgdGhl IHZhbHVlIHNpZ25lZAogICAgZ3VhcmFudGVlcyBhIGNvcnJlY3RseSBzaWduIGV4dGVuZGVkIGFk ZHJlc3MuICAqLwogCkBAIC04MzYxLDcgKzg4NjQsNiBAQCBtaXBzX2dkYmFyY2hfaW5pdCAoc3Ry dWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCiAJdmFs aWRfcCAmPSB0ZGVzY19udW1iZXJlZF9yZWdpc3RlciAoZmVhdHVyZSwgdGRlc2NfZGF0YS5nZXQg KCksIGksCiAJCQkJCSAgICBtaXBzX2dwcnNbaV0pOwogCi0KICAgICAgIHZhbGlkX3AgJj0gdGRl c2NfbnVtYmVyZWRfcmVnaXN0ZXIgKGZlYXR1cmUsIHRkZXNjX2RhdGEuZ2V0ICgpLAogCQkJCQkg IG1pcHNfcmVnbnVtLmxvLCAibG8iKTsKICAgICAgIHZhbGlkX3AgJj0gdGRlc2NfbnVtYmVyZWRf cmVnaXN0ZXIgKGZlYXR1cmUsIHRkZXNjX2RhdGEuZ2V0ICgpLApAQCAtODgzMiw3ICs5MzM0LDcg QEAgbWlwc19nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdk YmFyY2hfbGlzdCAqYXJjaGVzKQogCiAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFIChtaXBz X251bWVyaWNfcmVnaXN0ZXJfYWxpYXNlcyk7IGkrKykKICAgICB1c2VyX3JlZ19hZGQgKGdkYmFy Y2gsIG1pcHNfbnVtZXJpY19yZWdpc3Rlcl9hbGlhc2VzW2ldLm5hbWUsCi0JCSAgdmFsdWVfb2Zf bWlwc191c2VyX3JlZywgCisJCSAgdmFsdWVfb2ZfbWlwc191c2VyX3JlZywKIAkJICAmbWlwc19u dW1lcmljX3JlZ2lzdGVyX2FsaWFzZXNbaV0ucmVnbnVtKTsKIAogICByZXR1cm4gZ2RiYXJjaDsK QEAgLTg4NjAsNyArOTM2Miw3IEBAIHNob3dfbWlwc19hYmkgKHN0cnVjdCB1aV9maWxlICpmaWxl LAogICBpZiAoZ2RiYXJjaF9iZmRfYXJjaF9pbmZvIChjdXJyZW50X2luZmVyaW9yICgpLT5hcmNo ICAoKSktPmFyY2gKICAgICAgICE9IGJmZF9hcmNoX21pcHMpCiAgICAgZ2RiX3ByaW50ZgotICAg ICAgKGZpbGUsIAorICAgICAgKGZpbGUsCiAgICAgICAgIlRoZSBNSVBTIEFCSSBpcyB1bmtub3du IGJlY2F1c2UgdGhlIGN1cnJlbnQgYXJjaGl0ZWN0dXJlICIKICAgICAgICAiaXMgbm90IE1JUFMu XG4iKTsKICAgZWxzZQpAQCAtODg3MSw3ICs5MzczLDcgQEAgc2hvd19taXBzX2FiaSAoc3RydWN0 IHVpX2ZpbGUgKmZpbGUsCiAKICAgICAgIGlmIChnbG9iYWxfYWJpID09IE1JUFNfQUJJX1VOS05P V04pCiAJZ2RiX3ByaW50ZgotCSAgKGZpbGUsIAorCSAgKGZpbGUsCiAJICAgIlRoZSBNSVBTIEFC SSBpcyBzZXQgYXV0b21hdGljYWxseSAoY3VycmVudGx5IFwiJXNcIikuXG4iLAogCSAgIGFjdHVh bF9hYmlfc3RyKTsKICAgICAgIGVsc2UgaWYgKGdsb2JhbF9hYmkgPT0gYWN0dWFsX2FiaSkKZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvbWlwcy02NC1yNi5jIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYXJjaC9taXBzLTY0LXI2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLmUxYTFkZDA0MWNjCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYXJjaC9taXBzLTY0LXI2LmMKQEAgLTAsMCArMSw5MTYgQEAKKy8qCisgICBDb3B5cmlnaHQg MjAyMy0yMDI1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIGZpbGUg aXMgcGFydCBvZiBHREIuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyovCisKKyNkZWZp bmUgeHN0cihzKSBzdHIocykKKyNkZWZpbmUgc3RyKHMpICNzCisKKy8qID09PT09PT09PT09PSBt YWNyb3MgZnJvbSBzaW0vdGVzdHV0aWxzL21pcHMvdXRpbHMtcjYuaW5jID09PT09PT09PT09PT0g Ki8KKworLyogNTggaXMgbG9jYWwgbGFiZWwgdG8gZXhpdCB3aXRoIGVycmNvZGUgIT0gMCwgaW5k aWNhdGluZyBlcnJvci4gICovCisjZGVmaW5lIGZwX2Fzc2VydChhLCBiKSAiYmVxICIgeHN0ciAo YSkgIiwgIiB4c3RyIChiKSAiLCAxZiBcblx0IiBcCisgICJub3AgXG5cdCIgXAorICAiYiA1OGYg XG5cdCIgXAorICAibm9wIFxuXHQiIFwKKyAgIjE6IFxuXHQiCisKKy8qIENsb2JiZXJzOiAkNCwk NiwkNy4gICovCisjZGVmaW5lIHI2Y2tfMXIoaW5zdCwgYSwgcmV0KSBcCisgICJsaSAkNCwgIiB4 c3RyIChhKSAiICAgIFxuXHQiIFwKKyAgImxpICQ2LCAiIHhzdHIgKHJldCkgIiAgXG5cdCIgXAor ICB4c3RyIChpbnN0KSAiICQ3LCAkNCAgICBcblx0IiBcCisgIGZwX2Fzc2VydCAoJDYsICQ3KQor CisvKiBDbG9iYmVyczogJDQsJDYsJDcuICAqLworI2RlZmluZSByNmNrXzFkcihpbnN0LCBhLCBy ZXQpIFwKKyAgImxkICQ0LCAiIHhzdHIgKGEpICIgICBcblx0IiBcCisgICJsZCAkNiwgIiB4c3Ry IChyZXQpICIgXG5cdCIgXAorICB4c3RyIChpbnN0KSAiICQ3LCAkNCAgIFxuXHQiIFwKKyAgZnBf YXNzZXJ0ICgkNiwgJDcpCisKKy8qIENsb2JiZXJzOiAkNCwkNSwkNiwkNy4gICovCisjZGVmaW5l IHI2Y2tfMnIoaW5zdCwgYSwgYiwgcmV0KSBcCisgICJsaSAkNCwgIiB4c3RyIChhKSAiICAgXG5c dCIgXAorICAibGkgJDUsICIgeHN0ciAoYikgIiAgIFxuXHQiIFwKKyAgImxpICQ2LCAiIHhzdHIg KHJldCkgIiBcblx0IiBcCisgIHhzdHIgKGluc3QpICIgJDcsICQ0LCAkNSAgIFxuXHQiIFwKKyAg ZnBfYXNzZXJ0ICgkNiwgJDcpCisKKy8qIENsb2JiZXJzOiAkNCwkNSwkNiwkNy4gICovCisjZGVm aW5lIHI2Y2tfMmRyKGluc3QsIGEsIGIsIHJldCkgXAorICAibGQgJDQsICIgeHN0ciAoYSkgIiAg ICBcblx0IiBcCisgICJsZCAkNSwgIiB4c3RyIChiKSAiICAgIFxuXHQiIFwKKyAgImxkICQ2LCAi IHhzdHIgKHJldCkgIiAgXG5cdCIgXAorICB4c3RyIChpbnN0KSAiICQ3LCAkNCwgJDUgIFxuXHQi IFwKKyAgZnBfYXNzZXJ0ICgkNiwgJDcpCisKKy8qIENsb2JiZXJzOiAkNCwkNSwkNiwkNy4gICov CisjZGVmaW5lIHI2Y2tfMmRyMWkoaW5zdCwgYSwgYiwgaW1tLCByZXQpIFwKKyAgImxkICQ0LCAi IHhzdHIgKGEpICIgICAgICBcblx0IiBcCisgICJsZCAkNSwgIiB4c3RyIChiKSAiICAgICAgXG5c dCIgXAorICAibGQgJDYsICIgeHN0ciAocmV0KSAiICAgIFxuXHQiIFwKKyAgeHN0ciAoaW5zdCkg IiAkNywgJDQsICQ1LCAiIHhzdHIgKGltbSkgIiAgXG5cdCIgXAorICBmcF9hc3NlcnQgKCQ2LCAk NykKKworLyogQ2xvYmJlcnM6ICQ0LCQ2LCQ3LiAgKi8KKyNkZWZpbmUgcjZja18xcjFpKGluc3Qs IGEsIGltbSwgcmV0KSBcCisgICJsaSAkNCwgIiB4c3RyIChhKSAiICAgICAgXG5cdCIgXAorICAi bGkgJDYsICIgeHN0ciAocmV0KSAiICAgIFxuXHQiIFwKKyAgeHN0ciAoaW5zdCkgIiAkNywgJDQs ICIgeHN0ciAoaW1tKSAiICBcblx0IiBcCisgIGZwX2Fzc2VydCAoJDYsICQ3KQorCisvKiBDbG9i YmVyczogJDQsJDYsJDcuICAqLworI2RlZmluZSByNmNrXzFkcjFpKGluc3QsIGEsIGltbSwgcmV0 KSBcCisgICJsZCAkNCwgIiB4c3RyIChhKSAiICAgICBcblx0IiBcCisgICJsZCAkNiwgIiB4c3Ry IChyZXQpICIgICBcblx0IiBcCisgIHhzdHIgKGluc3QpICIgJDcsICQ0LCAiIHhzdHIgKGltbSkg IiAgXG5cdCIgXAorICBmcF9hc3NlcnQgKCQ2LCAkNykKKworLyogQ2xvYmJlcnM6ICQ0LCQ2LiAg Ki8KKyNkZWZpbmUgcjZja18wZHIxaShpbnN0LCBhLCBpbW0sIHJldCkgXAorICAibGQgJDQsICIg eHN0ciAoYSkgIiAgICAgXG5cdCIgXAorICAibGQgJDYsICIgeHN0ciAocmV0KSAiICAgXG5cdCIg XAorICB4c3RyIChpbnN0KSAiICQ0LCAkNCwgIiB4c3RyIChpbW0pICIgICBcblx0IiBcCisgIGZw X2Fzc2VydCAoJDYsICQ0KQorCisvKiBDbG9iYmVyczogJDQsJDUsJDYsJDcuICAqLworI2RlZmlu ZSByNmNrXzJyMWkoaW5zdCwgYSwgYiwgaW1tLCByZXQpIFwKKyAgImxpICQ0LCAiIHhzdHIgKGEp ICIgICAgIFxuXHQiIFwKKyAgImxpICQ1LCAiIHhzdHIgKGIpICIgICAgIFxuXHQiIFwKKyAgImxp ICQ2LCAiIHhzdHIgKHJldCkgIiAgIFxuXHQiIFwKKyAgeHN0ciAoaW5zdCkgIiAkNywgJDQsICQ1 LCAiIHhzdHIgKGltbSkgIiAgIFxuXHQiIFwKKyAgZnBfYXNzZXJ0ICgkNiwgJDcpCisKKy8qIENs b2JiZXJzOiAkNCwkNSwkNiwkNywkOCwkZjIsJGY0LCRmNi4gICovCisjZGVmaW5lIHI2Y2tfM3Mo aW5zdCwgYSwgYiwgYywgcmV0KSBcCisgICJsaSAkNCwgIiB4c3RyIChhKSAiICAgICBcblx0IiBc CisgICJsaSAkNSwgIiB4c3RyIChiKSAiICAgICBcblx0IiBcCisgICJsaSAkNiwgIiB4c3RyIChj KSAiICAgICBcblx0IiBcCisgICJsaSAkNywgIiB4c3RyIChyZXQpICIgICBcblx0IiBcCisgICJt dGMxICQ0LCAkZjIgICAgICAgICAgIFxuXHQiIFwKKyAgIm10YzEgJDUsICRmNCAgICAgICAgICAg XG5cdCIgXAorICAibXRjMSAkNiwgJGY2ICAgICAgICAgICBcblx0IiBcCisgIHhzdHIgKGluc3Qp ICIgJGYyLCAkZjQsICRmNiAgICAgICBcblx0IiBcCisgICJtZmMxICQ4LCAkZjIgICAgICAgICAg IFxuXHQiIFwKKyAgZnBfYXNzZXJ0ICgkNywgJDgpCisKKy8qIENsb2JiZXJzOiAkNCwkNSwkNiwk NywkZjIsJGY0LiAgKi8KKyNkZWZpbmUgcjZja18ycyhpbnN0LCBhLCBiLCByZXQpIFwKKyAgImxp ICQ0LCAiIHhzdHIgKGEpICIgICAgICAgXG5cdCIgXAorICAibGkgJDUsICIgeHN0ciAoYikgIiAg ICAgICBcblx0IiBcCisgICJsaSAkNiwgIiB4c3RyIChyZXQpICIgICAgIFxuXHQiIFwKKyAgIm10 YzEgJDQsICRmMiAgICAgICAgICAgICBcblx0IiBcCisgICJtdGMxICQ1LCAkZjQgICAgICAgICAg ICAgXG5cdCIgXAorICB4c3RyIChpbnN0KSAiICRmMiwgJGY0ICAgICBcblx0IiBcCisgICJtZmMx ICQ3LCAkZjIgICAgICAgICAgICAgXG5cdCIgXAorICBmcF9hc3NlcnQgKCQ2LCAkNykKKworLyog Q2xvYmJlcnM6ICQ0LCQ1LCQ2LCQ3LCQ4LCQ5LCQxMCwkZjIsJGY0LiAgKi8KKyNkZWZpbmUgcjZj a18yZChpbnN0LCBhLCBiLCByZXQpIFwKKyAgIi5kYXRhICAgICAgICAgICAgICAgICAgXG5cdCIg XAorICAiMTogLmR3b3JkICIgeHN0ciAoYSkgIiAgICBcblx0IiBcCisgICIyOiAuZHdvcmQgIiB4 c3RyIChiKSAiICAgIFxuXHQiIFwKKyAgIjM6IC5kd29yZCAiIHhzdHIgKHJldCkgIiAgXG5cdCIg XAorICAiLnRleHQgICAgICAgICAgICAgICAgICAgXG5cdCIgXAorICAiZGxhICQ0LCAxYiAgICAg ICAgICAgICAgXG5cdCIgXAorICAiZGxhICQ1LCAyYiAgICAgICAgICAgICAgXG5cdCIgXAorICAi ZGxhICQ2LCAzYiAgICAgICAgICAgICAgXG5cdCIgXAorICAibGRjMSAkZjIsIDAoJDQpICAgICAg ICBcblx0IiBcCisgICJsZGMxICRmNCwgMCgkNSkgICAgICAgIFxuXHQiIFwKKyAgImx3ICQ3LCAw KCQ2KSAgICAgICAgICAgXG5cdCIgXAorICAibHcgJDgsIDQoJDYpICAgICAgICAgICBcblx0IiBc CisgIHhzdHIgKGluc3QpICIgJGYyLCAkZjQgICBcblx0IiBcCisgICJtZmhjMSAkOSwgJGYyICAg ICAgICAgIFxuXHQiIFwKKyAgIm1mYzEgJDEwLCAkZjIgICAgICAgICAgXG5cdCIgXAorICBmcF9h c3NlcnQgKCQ3LCAkOSkgXAorICBmcF9hc3NlcnQgKCQ4LCAkMTApCisKKy8qIENsb2JiZXJzOiAk MiwkNCwkNSwkNiwkNywkOCwkOSwkMTAsJGYyLCRmNCwkZjYuICAqLworI2RlZmluZSByNmNrXzNk KGluc3QsIGEsIGIsIGMsIHJldCkgXAorICAiLmRhdGEgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFxuXHQiIFwKKyAgIjE6IC5kd29yZCAiIHhzdHIgKGEpICIgICAgICAgICAgICAgICAg ICBcblx0IiBcCisgICIyOiAuZHdvcmQgIiB4c3RyIChiKSAiICAgICAgICAgICAgICAgICAgXG5c dCIgXAorICAiMzogLmR3b3JkICIgeHN0ciAoYykgIiAgICAgICAgICAgICAgICAgIFxuXHQiIFwK KyAgIjQ6IC5kd29yZCAiIHhzdHIgKHJldCkgIiAgICAgICAgICAgICAgICBcblx0IiBcCisgICIu dGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIgXAorICAiZGxhICQ0LCAx YiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IiBcCisgICJkbGEgJDUsIDJiICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFxuXHQiIFwKKyAgImRsYSAkNiwgM2IgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXG5cdCIgXAorICAiZGxhICQyLCA0YiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcblx0IiBcCisgICJsZGMxICRmMiwgMCgkNCkgICAgICAgICAgICAgICAgICAgICAg XG5cdCIgXAorICAibGRjMSAkZjQsIDAoJDUpICAgICAgICAgICAgICAgICAgICAgIFxuXHQiIFwK KyAgImxkYzEgJGY2LCAwKCQ2KSAgICAgICAgICAgICAgICAgICAgICBcblx0IiBcCisgICJsdyAk NywgMCgkMikgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIgXAorICAibHcgJDgsIDQoJDIp ICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiIFwKKyAgeHN0ciAoaW5zdCkgIiAkZjIsICRm NCwgJGY2ICAgICAgICAgICAgXG5cdCIgXAorICAibWZoYzEgJDksICRmMiAgICAgICAgICAgICAg ICAgICAgICAgIFxuXHQiIFwKKyAgIm1mYzEgJDEwLCAkZjIgICAgICAgICAgICAgICAgICAgICAg ICBcblx0IiBcCisgIGZwX2Fzc2VydCAoJDcsICQ5KSBcCisgIGZwX2Fzc2VydCAoJDgsICQxMCkK KworLyogPT09PT09PT09PT09IG1hY3JvcyBmcm9tIHNpbS90ZXN0dXRpbHMvbWlwcy90ZXN0dXRp bHMuaW5jID09PT09PT09PT09PT0gKi8KKworLyogUHV0IHZhbHVlICd2YWwnIGludG8gcmVnaXN0 ZXIgJ3JlZycuCisgICBDbG9iYmVyczogTm9uZS4gICovCisjZGVmaW5lIGxvYWQzMihyZWcsIHZh bCkgXAorICAibGkgICIgeHN0ciAocmVnKSAiLCAiIHhzdHIgKHZhbCkgIiAgICAgXG5cdCIKKwor LyogQ2hlY2sgd2hldGhlciB0d28gcmVnaXN0ZXJzIGNvbnRhaW4gdGhlIHNhbWUgdmFsdWUuCisg ICBDbG9iYmVyczogTm9uZS4gICovCisjZGVmaW5lIGNoZWNrcmVnKHJlZywgZXhwcmVnKSBcCisg ICIuc2V0IHB1c2ggICAgICAgICBcblx0IiBcCisgICIuc2V0IG5vYXQgICAgICAgICBcblx0IiBc CisgICIuc2V0IG5vcmVvcmRlciAgICBcblx0IiBcCisgICJiZXEgIiAgeHN0ciAoZXhwcmVnKSAi LCAiIHhzdHIgKHJlZykgIiwgOTAxZiAgICBcblx0IiBcCisgICJub3AgICAgICAgICAgICAgICBc blx0IiBcCisgICJiIDU4ZiAgICAgICAgICAgICAgXG5cdCIgXAorICAibm9wICAgICAgICAgICAg ICAgIFxuXHQiIFwKKyAgIjkwMTogICAgICAgICAgICAgICAgICAgXG5cdCIgXAorICAiLnNldCBw b3AgICAgICAgICAgIFxuXHQiCisKKy8qIENoZWNrIGlmIHJlZ2lzdGVyICdyZWcnIGNvbnRhaW5z IHZhbHVlICd2YWwnLgorICAgQ2xvYmJlcnM6ICQxLiAgKi8KKyNkZWZpbmUgY2hlY2szMihyZWcs IHZhbCkgXAorICAiLnNldCBwdXNoICAgICAgICAgXG5cdCIgXAorICAiLnNldCBub2F0ICAgICAg ICAgXG5cdCIgXAorICBsb2FkMzIgKCQxLCB2YWwpIFwKKyAgY2hlY2tyZWcgKHJlZywgJDEpIFwK KyAgIi5zZXQgcG9wICAgICAgICAgIFxuXHQiCisKKy8qIENoZWNrcGFpciBiYXNlZCBvbiBlbmRp YW5lc3MKKyAgIENsb2JiZXJzOiAkMS4gICovCisjZGVmaW5lIGNoZWNrcGFpcl94ZW5kaWFuKGxv LCBoaSwgYmFzZSwgZWMsIHcpIFwKKyAgIi5zZXQgbm9hdCAgICAgICAgICAgICAgIFxuXHQiIFwK KyAgImx3ICAgJDEsICIgeHN0ciAoZWMpICIgICBcblx0IiBcCisgICJhbmRpICQxLCAkMSwgMHgx ICAgICAgICBcblx0IiBcCisgICJiZXF6ICAkMSwgMmYgICAgICAgICAgICBcblx0IiBcCisgICIu c2V0IGF0ICAgICAgICAgICAgICAgICBcblx0IiBcCisgICIxOiAgICAgICAgICAgICAgICAgICAg ICAgICAgXG5cdCIgXAorICBjaGVja3BhaXJfYmVfIyN3IChsbywgaGksIGJhc2UpIFwKKyAgImIg M2YgICAgICAgICAgICAgICAgICAgIFxuXHQiIFwKKyAgIm5vcCAgICAgICAgICAgICAgICAgICAg IFxuXHQiIFwKKyAgIjI6ICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IiBcCisgIGNoZWNr cGFpcl9sZV8jI3cgKGxvLCBoaSwgYmFzZSkgXAorICAiMzogICAgICAgICAgICAgICAgICAgICAg ICAgIFxuXHQiCisKKy8qIENoZWNrIGhpLWxvIHJlZ2lzdGVyIHBhaXIgYWdhaW5zdCBkYXRhIHN0 b3JlZCBhdCBiYXNlK28xIGFuZCBiYXNlK28yLgorICAgQ2xvYmJlcnM6ICQxIC0gJDUuICAqLwor I2RlZmluZSAgY2hlY2twYWlyKGxvLCBoaSwgYmFzZSwgdywgbzEsIG8yKSBcCisgICJtb3ZlICAk MiwgIiB4c3RyIChsbykgIiAgIFxuXHQiIFwKKyAgIm1vdmUgICQzLCAiIHhzdHIgKGhpKSAiICAg XG5cdCIgXAorICAiLnNldCBub2F0ICAgICAgICAgICAgICAgIFxuXHQiIFwKKyAgImRsYSAgICQx LCAiIHhzdHIgKGJhc2UpICIgIFxuXHQiIFwKKyAgImwiIHhzdHIgKHcpICIgJDQsICIgeHN0ciAo bzEpICIoJDEpICBcblx0IiBcCisgICJsIiB4c3RyICh3KSAgIiAkNSwgIiB4c3RyIChvMikgIigk MSkgIFxuXHQiIFwKKyAgIi5zZXQgYXQgICAgICAgICAgICAgICAgICBcblx0IiBcCisgIGNoZWNr cmVnICgkMiwgJDQpIFwKKyAgY2hlY2tyZWcgKCQzLCAkNSkKKworI2RlZmluZSBjaGVja3BhaXJf bGVfZChsbywgaGksIGJhc2UpIFwKKyAgY2hlY2twYWlyIChsbywgaGksIGJhc2UsIHcsIDAsIDQp CisKKyNkZWZpbmUgY2hlY2twYWlyX2JlX2QobG8sIGhpLCBiYXNlKSBcCisgIGNoZWNrcGFpciAo bG8sIGhpLCBiYXNlLCB3LCA0LCAwKQorCisjZGVmaW5lIGNoZWNrcGFpcl9sZV9xKGxvLCBoaSwg YmFzZSkgXAorICBjaGVja3BhaXIgKGxvLCBoaSwgYmFzZSwgZCwgMCwgOCkKKworI2RlZmluZSBj aGVja3BhaXJfYmVfcShsbywgaGksIGJhc2UpIFwKKyAgY2hlY2twYWlyIChsbywgaGksIGJhc2Us IGQsIDgsIDApCisKKyNkZWZpbmUgY2hlY2twYWlyX3F3b3JkKGxvLCBoaSwgYmFzZSwgb2UpIFwK KyAgY2hlY2twYWlyX3hlbmRpYW4gKGxvLCBoaSwgYmFzZSwgb2UsIHEpCisKKyNkZWZpbmUgY2hl Y2twYWlyX2R3b3JkKGxvLCBoaSwgYmFzZSwgb2UpIFwKKyAgY2hlY2twYWlyX3hlbmRpYW4gKGxv LCBoaSwgYmFzZSwgb2UsIGQpCisKK3ZvaWQKK2Fib3J0ICh2b2lkKTsKKworLyogVGVzdHMgYnJh bmNoIGluc3RydWN0aW9ucy4gICovCisKK2ludAordGVzdF9yNl9icmFuY2ggKHZvaWQpCit7Cisv KiBVc2luZyB2b2xhdGlsZSB0byBwcmV2ZW50IGNlcnRhaW4gb3B0aW1pemF0aW9ucyB3aGljaCBj b3VsZCBjYXVzZQorICAgaW5zdHJ1Y3Rpb24gZGVsZXRpb24uCisgICAnZXJyJyBpZGVudGlmaWVz IGluc3RydWN0aW9uIHdoaWNoIChldmVudHVhbGx5KSBjYXVzZWQgZXJyb3IuCisgICAoZXJyID09 IDApID09PiBhbGwgaW5zdHJ1Y3Rpb25zIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseS4gICovCisKKyAg dm9sYXRpbGUgaW50IGVyciA9IC0xOworICB2b2xhdGlsZSBpbnQgYTE0ID0gMHhmZmZmZmZmZjsK KyAgdm9sYXRpbGUgaW50IGExMyA9IDB4MTIzOworICB2b2xhdGlsZSBpbnQgYTEyID0gMHg0NTsK KyAgdm9sYXRpbGUgaW50IGE3ID0gMHg0NTsKKyAgdm9sYXRpbGUgaW50IGE4ID0gMHhmZmZmZmZm ZTsKKyAgdm9sYXRpbGUgaW50IGE5ID0gMjE0NzQ4MzY0NzsKKyAgdm9sYXRpbGUgaW50IGExMSA9 IDA7CisgIHZvbGF0aWxlIGludCBhMTAgPSAwOworCisgIGFzbSAoCisgICIuc2V0IHB1c2ggICAg ICAgICAgICAgXG5cdCIgLyogQ3JlYXRlIG5ldyBzY29wZSBmb3IgYXNtIGNvbmZpZ3VyYXRpb24u ICAqLworICAiLnNldCBub3Jlb3JkZXIgICAgICAgIFxuXHQiIC8qIERvbid0IGFsbG93IHJlb3Jk ZXJpbmcgb2YgaW5zdHJ1Y3Rpb25zLiAgKi8KKyAgImxpICVbZXJyXSwgMSAgICAgICAgICAgICAg ICAgIFxuXHQiCisgICJib3ZjICVbYTEyXSwgJVthMTNdLCBMZmFpbCAgICBcblx0IiAvKiBCT1ZD ICovCisgICJub3AgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiYm92YyAlW2E5 XSwgJVthMTNdLCBMMiAgICAgICAgXG5cdCIKKyAgIm5vcCAgICAgICAgICAgICAgICAgICAgICAg ICAgIFxuXHQiCisgICJiIExmYWlsICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAibm9w ICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIkwyOiAgICAgICAgICAgICAgICAg ICAgICAgICAgIFxuXHQiCisgICJsaSAlW2Vycl0sIDIgICAgICAgICAgICAgICAgICBcblx0Igor ICAiYm52YyAlW2E5XSwgJVthMTNdLCBMZmFpbCAgICAgXG5cdCIgLyogQk5WQyAqLworICAibm9w ICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgImJudmMgJVthMTJdLCAlW2ExM10s IEwzICAgICAgIFxuXHQiCisgICJub3AgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0Igor ICAiYiBMZmFpbCAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIm5vcCAgICAgICAgICAg ICAgICAgICAgICAgICAgIFxuXHQiCisgICJMMzogICAgICAgICAgICAgICAgICAgICAgICAgICBc blx0IgorICAibGkgJVtlcnJdLCAzICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgImJlcWMgJVth MTJdLCAlW2ExM10sIExmYWlsICAgIFxuXHQiIC8qIEJFUUMgKi8KKyAgIm5vcCAgICAgICAgICAg ICAgICAgICAgICAgICAgIFxuXHQiCisgICJiZXFjICVbYTEyXSwgJVthN10sIEw0ICAgICAgICBc blx0IgorICAibm9wICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgImIgTGZhaWwg ICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJub3AgICAgICAgICAgICAgICAgICAgICAg ICAgICBcblx0IgorICAiTDQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgImxp ICVbZXJyXSwgNCAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJibmVjICVbYTEyXSwgJVthN10s IExmYWlsICAgICBcblx0IiAvKiBCTkVDICovCisgICJub3AgICAgICAgICAgICAgICAgICAgICAg ICAgICBcblx0IgorICAiYm5lYyAlW2ExMl0sICVbYTEzXSwgTDUgICAgICAgXG5cdCIKKyAgIm5v cCAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJiIExmYWlsICAgICAgICAgICAg ICAgICAgICAgICBcblx0IgorICAibm9wICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIK KyAgIkw1OiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJsaSAlW2Vycl0sIDUg ICAgICAgICAgICAgICAgICBcblx0IgorICAiYmx0YyAlW2ExM10sICVbYTEyXSwgTGZhaWwgICAg XG5cdCIgLyogQkxUQyAqLworICAibm9wICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIK KyAgImJsdGMgJVthMTJdLCAlW2ExM10sIEw2ICAgICAgIFxuXHQiCisgICJub3AgICAgICAgICAg ICAgICAgICAgICAgICAgICBcblx0IgorICAiYiBMZmFpbCAgICAgICAgICAgICAgICAgICAgICAg XG5cdCIKKyAgIm5vcCAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJMNjogICAg ICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiTDc6ICAgICAgICAgICAgICAgICAgICAg ICAgICAgXG5cdCIKKyAgImxpICVbZXJyXSwgNyAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJi Z2VjICVbYTEyXSwgJVthMTNdLCBMZmFpbCAgICBcblx0IiAvKiBCR0VDICovCisgICJub3AgICAg ICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiYmdlYyAlW2ExM10sICVbYTEyXSwgTDgg ICAgICAgXG5cdCIKKyAgIm5vcCAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJi IExmYWlsICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAibm9wICAgICAgICAgICAgICAg ICAgICAgICAgICAgXG5cdCIKKyAgIkw4OiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQi CisgICJMOTogICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAibGkgJVtlcnJdLCA5 ICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgImJsdHVjICVbYTE0XSwgJVthMTNdLCBMZmFpbCAg IFxuXHQiIC8qIEJMVFVDICovCisgICJub3AgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0 IgorICAiYmx0dWMgJVthOF0sICVbYTE0XSwgTDEwICAgICAgXG5cdCIKKyAgIm5vcCAgICAgICAg ICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJiIExmYWlsICAgICAgICAgICAgICAgICAgICAg ICBcblx0IgorICAibm9wICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIkwxMDog ICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJMMTE6ICAgICAgICAgICAgICAgICAg ICAgICAgICBcblx0IgorICAibGkgJVtlcnJdLCAxMSAgICAgICAgICAgICAgICAgXG5cdCIKKyAg ImJnZXVjICVbYTEzXSwgJVthMTRdLCBMZmFpbCAgIFxuXHQiIC8qIEJHRVVDICovCisgICJub3Ag ICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiYmdldWMgJVthMTRdLCAlW2E4XSwg TDEyICAgICAgXG5cdCIKKyAgIm5vcCAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisg ICJiIExmYWlsICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAibm9wICAgICAgICAgICAg ICAgICAgICAgICAgICAgXG5cdCIKKyAgIkwxMjogICAgICAgICAgICAgICAgICAgICAgICAgIFxu XHQiCisgICJMMTM6ICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAibGkgJVtlcnJd LCAxMyAgICAgICAgICAgICAgICAgXG5cdCIKKyAgImJsdHpjICVbYTEzXSwgTGZhaWwgICAgICAg ICAgIFxuXHQiIC8qIEJMVFpDICovCisgICJub3AgICAgICAgICAgICAgICAgICAgICAgICAgICBc blx0IgorICAiYmx0emMgJVthMTFdLCBMZmFpbCAgICAgICAgICAgXG5cdCIKKyAgIm5vcCAgICAg ICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJibHR6YyAlW2ExNF0sIEwxNCAgICAgICAg ICAgICBcblx0IgorICAibm9wICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgImIg TGZhaWwgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJub3AgICAgICAgICAgICAgICAg ICAgICAgICAgICBcblx0IgorICAiTDE0OiAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIK KyAgImxpICVbZXJyXSwgMTQgICAgICAgICAgICAgICAgIFxuXHQiCisgICJibGV6YyAlW2ExM10s IExmYWlsICAgICAgICAgICBcblx0IiAvKiBCTEVaQyAqLworICAibm9wICAgICAgICAgICAgICAg ICAgICAgICAgICAgXG5cdCIKKyAgImJsZXpjICVbYTExXSwgTDE0NSAgICAgICAgICAgIFxuXHQi CisgICJub3AgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiYiBMZmFpbCAgICAg ICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIm5vcCAgICAgICAgICAgICAgICAgICAgICAgICAg IFxuXHQiCisgICJMMTQ1OiAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiYmxlemMg JVthMTRdLCBMMTUgICAgICAgICAgICAgXG5cdCIKKyAgIm5vcCAgICAgICAgICAgICAgICAgICAg ICAgICAgIFxuXHQiCisgICJiIExmYWlsICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAi bm9wICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIkwxNTogICAgICAgICAgICAg ICAgICAgICAgICAgIFxuXHQiCisgICJsaSAlW2Vycl0sIDE1ICAgICAgICAgICAgICAgICBcblx0 IgorICAiYmdlemMgJVthOF0sIExmYWlsICAgICAgICAgICAgXG5cdCIgLyogQkdFWkMgKi8KKyAg Im5vcCAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJiZ2V6YyAlW2ExMV0sIEwx NTUgICAgICAgICAgICBcblx0IgorICAibm9wICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5c dCIKKyAgImIgTGZhaWwgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJub3AgICAgICAg ICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiTDE1NTogICAgICAgICAgICAgICAgICAgICAg ICAgXG5cdCIKKyAgImJnZXpjICVbYTEzXSwgTDE2ICAgICAgICAgICAgIFxuXHQiCisgICJub3Ag ICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiYiBMZmFpbCAgICAgICAgICAgICAg ICAgICAgICAgXG5cdCIKKyAgIm5vcCAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisg ICJMMTY6ICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAibGkgJVtlcnJdLCAxNiAg ICAgICAgICAgICAgICAgXG5cdCIKKyAgImJndHpjICVbYThdLCBMZmFpbCAgICAgICAgICAgIFxu XHQiIC8qIEJHVFpDICovCisgICJub3AgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0Igor ICAiYmd0emMgJVthMTFdLCBMZmFpbCAgICAgICAgICAgXG5cdCIKKyAgIm5vcCAgICAgICAgICAg ICAgICAgICAgICAgICAgIFxuXHQiCisgICJiZ3R6YyAlW2ExM10sIEwxNyAgICAgICAgICAgICBc blx0IgorICAibm9wICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgImIgTGZhaWwg ICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJub3AgICAgICAgICAgICAgICAgICAgICAg ICAgICBcblx0IgorICAibGkgJVthMTBdLCAwICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIkwx NzogICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJsaSAlW2Vycl0sIDE3ICAgICAg ICAgICAgICAgICBcblx0IgorICAiYmxlemFsYyAlW2ExMl0sIExmYWlsICAgICAgICAgXG5cdCIg LyogQkxFWkFMQyAqLworICAibm9wICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAg ImJsZXphbGMgJVthMTFdLCBMcmV0ICAgICAgICAgIFxuXHQiCisgICJsaSAlW2ExMF0sIDEgICAg ICAgICAgICAgICAgICBcblx0IgorICAiYmVxemMgJVthMTBdLCBMMTc1ICAgICAgICAgICAgXG5c dCIgLyogQkVRWkMgKi8KKyAgIm5vcCAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisg ICJsaSAlW2Vycl0sIDg1MzEgICAgICAgICAgICAgICBcblx0IgorICAiYiBMZmFpbCAgICAgICAg ICAgICAgICAgICAgICAgXG5cdCIKKyAgIm5vcCAgICAgICAgICAgICAgICAgICAgICAgICAgIFxu XHQiCisgICJMMTc1OiAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAibGkgJVtlcnJd LCAyMzUzMSAgICAgICAgICAgICAgXG5cdCIKKyAgImJsZXphbGMgJVthMTRdLCBMcmV0ICAgICAg ICAgIFxuXHQiCisgICJsaSAlW2ExMF0sIDEgICAgICAgICAgICAgICAgICBcblx0IgorICAiYmVx emMgJVthMTBdLCBMMTggICAgICAgICAgICAgXG5cdCIKKyAgIm5vcCAgICAgICAgICAgICAgICAg ICAgICAgICAgIFxuXHQiCisgICJiIExmYWlsICAgICAgICAgICAgICAgICAgICAgICBcblx0Igor ICAibm9wICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIkwxODogICAgICAgICAg ICAgICAgICAgICAgICAgIFxuXHQiCisgICJsaSAlW2Vycl0sIDE4ICAgICAgICAgICAgICAgICBc blx0IgorICAiYmdlemFsYyAlW2ExNF0sIExmYWlsICAgICAgICAgXG5cdCIgLyogQkdFWkFMQyAq LworICAibm9wICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgImJnZXphbGMgJVth MTFdLCBMcmV0ICAgICAgICAgIFxuXHQiCisgICJsaSAlW2ExMF0sIDEgICAgICAgICAgICAgICAg ICBcblx0IgorICAiYmVxemMgJVthMTBdLCBMMTg1ICAgICAgICAgICAgXG5cdCIKKyAgIm5vcCAg ICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJiIExmYWlsICAgICAgICAgICAgICAg ICAgICAgICBcblx0IgorICAibm9wICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAg IkwxODU6ICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJiZ2V6YWxjICVbYTEyXSwg THJldCAgICAgICAgICBcblx0IgorICAibGkgJVthMTBdLCAxICAgICAgICAgICAgICAgICAgXG5c dCIKKyAgImJlcXpjICVbYTEwXSwgTDE5ICAgICAgICAgICAgIFxuXHQiCisgICJub3AgICAgICAg ICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiYiBMZmFpbCAgICAgICAgICAgICAgICAgICAg ICAgXG5cdCIKKyAgIm5vcCAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJMMTk6 ICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAibGkgJVtlcnJdLCAxOSAgICAgICAg ICAgICAgICAgXG5cdCIKKyAgImJndHphbGMgJVthMTRdLCBMZmFpbCAgICAgICAgIFxuXHQiIC8q IEJHVFpBTEMgKi8KKyAgIm5vcCAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJi Z3R6YWxjICVbYTExXSwgTGZhaWwgICAgICAgICBcblx0IgorICAibm9wICAgICAgICAgICAgICAg ICAgICAgICAgICAgXG5cdCIKKyAgImJndHphbGMgJVthMTJdLCBMcmV0ICAgICAgICAgIFxuXHQi CisgICJsaSAlW2ExMF0sIDEgICAgICAgICAgICAgICAgICBcblx0IgorICAiYmVxemMgJVthMTBd LCBMMjAgICAgICAgICAgICAgXG5cdCIKKyAgIm5vcCAgICAgICAgICAgICAgICAgICAgICAgICAg IFxuXHQiCisgICJiIExmYWlsICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAibm9wICAg ICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIkwyMDogICAgICAgICAgICAgICAgICAg ICAgICAgIFxuXHQiCisgICJsaSAlW2Vycl0sIDIwICAgICAgICAgICAgICAgICBcblx0IgorICAi Ymx0emFsYyAlW2ExMl0sIExmYWlsICAgICAgICAgXG5cdCIgLyogQkxUWkFMQyAqLworICAibm9w ICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgImJsdHphbGMgJVthMTFdLCBMZmFp bCAgICAgICAgIFxuXHQiCisgICJub3AgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0Igor ICAiYmx0emFsYyAlW2ExNF0sIExyZXQgICAgICAgICAgXG5cdCIKKyAgImxpICVbYTEwXSwgMSAg ICAgICAgICAgICAgICAgIFxuXHQiCisgICJiZXF6YyAlW2ExMF0sIEwyMSAgICAgICAgICAgICBc blx0IgorICAibm9wICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgImIgTGZhaWwg ICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJub3AgICAgICAgICAgICAgICAgICAgICAg ICAgICBcblx0IgorICAiTDIxOiAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgImxp ICVbZXJyXSwgMjEgICAgICAgICAgICAgICAgIFxuXHQiCisgICJiYyBMMjIgICAgICAgICAgICAg ICAgICAgICAgICBcblx0IiAvKiBCQyAqLworICAiYiBMZmFpbCAgICAgICAgICAgICAgICAgICAg ICAgXG5cdCIKKyAgIm5vcCAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJMMjI6 ICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAibGkgJVtlcnJdLCAyMiAgICAgICAg ICAgICAgICAgXG5cdCIKKyAgImJhbGMgTHJldCAgICAgICAgICAgICAgICAgICAgIFxuXHQiIC8q IEJBTEMgKi8KKyAgImxpICVbYTEwXSwgMSAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJiZXF6 YyAlW2ExMF0sIEwyMyAgICAgICAgICAgICBcblx0IgorICAibm9wICAgICAgICAgICAgICAgICAg ICAgICAgICAgXG5cdCIKKyAgImIgTGZhaWwgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisg ICJub3AgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiTDIzOiAgICAgICAgICAg ICAgICAgICAgICAgICAgXG5cdCIKKyAgImxpICVbZXJyXSwgMjMgICAgICAgICAgICAgICAgIFxu XHQiCisgICJqYWwgR2V0UEMgICAgICAgICAgICAgICAgICAgICBcblx0IiAvKiBKQUwgKi8KKyAg Im5vcCAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJqaWMgJDYsIDQgICAgICAg ICAgICAgICAgICAgICBcblx0IiAvKiBKSUMgKi8KKyAgIm5vcCAgICAgICAgICAgICAgICAgICAg ICAgICAgIFxuXHQiCisgICJiIExmYWlsICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAi bm9wICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIkwyNDogICAgICAgICAgICAg ICAgICAgICAgICAgIFxuXHQiCisgICJsaSAlW2Vycl0sIDI0ICAgICAgICAgICAgICAgICBcblx0 IgorICAibGkgJVthMTBdLCAxICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgImphbCBHZXRQQyAg ICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJub3AgICAgICAgICAgICAgICAgICAgICAgICAg ICBcblx0IgorICAiamlhbGMgJDYsIDIwICAgICAgICAgICAgICAgICAgXG5cdCIgLyogSklBTEMg Ki8KKyAgIm5vcCAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJiZXF6YyAlW2Ex MF0sIEwyNSAgICAgICAgICAgICBcblx0IgorICAibm9wICAgICAgICAgICAgICAgICAgICAgICAg ICAgXG5cdCIKKyAgImIgTGZhaWwgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJub3Ag ICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiTEpJQUxDUkVUOiAgICAgICAgICAg ICAgICAgICAgXG5cdCIKKyAgImxpICVbYTEwXSwgMCAgICAgICAgICAgICAgICAgIFxuXHQiCisg ICJqciAkMzEgICAgICAgICAgICAgICAgICAgICAgICBcblx0IiAvKiBKUiAqLworICAibm9wICAg ICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIkwyNTogICAgICAgICAgICAgICAgICAg ICAgICAgIFxuXHQiCisgICJsaSAlW2Vycl0sIDI1ICAgICAgICAgICAgICAgICBcblx0IgorICAi amFsIEdldFBDICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIm5vcCAgICAgICAgICAgICAg ICAgICAgICAgICAgIFxuXHQiCisgICJtb3ZlICVbYTExXSwgJDYgICAgICAgICAgICAgICBcblx0 IgorICAibmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIm5vcCAgICAgICAg ICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJhZGRpdSAlW2ExMV0sIDEyICAgICAgICAgICAg ICBcblx0IiAvKiBBRERJVSAqLworICAiYmVxYyAlW2ExMV0sICQzMSwgTDI2ICAgICAgICAgXG5c dCIKKyAgIm5vcCAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJiIExmYWlsICAg ICAgICAgICAgICAgICAgICAgICBcblx0IgorICAibm9wICAgICAgICAgICAgICAgICAgICAgICAg ICAgXG5cdCIKKyAgIkwyNjogICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJsaSAl W2Vycl0sIDI2ICAgICAgICAgICAgICAgICBcblx0IgorICAiYmFsYyBMcmV0ICAgICAgICAgICAg ICAgICAgICAgXG5cdCIKKyAgImxpICVbYTEwXSwgMSAgICAgICAgICAgICAgICAgIFxuXHQiCisg ICJiZXF6YyAlW2ExMF0sIExlbmQgICAgICAgICAgICBcblx0IgorICAibm9wICAgICAgICAgICAg ICAgICAgICAgICAgICAgXG5cdCIKKyAgImIgTGZhaWwgICAgICAgICAgICAgICAgICAgICAgIFxu XHQiCisgICJub3AgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiTHJldDogICAg ICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgImxpICVbYTEwXSwgMCAgICAgICAgICAgICAg ICAgIFxuXHQiCisgICJkYWRkaXUgJDMxLCA0ICAgICAgICAgICAgICAgICBcblx0IiAvKiBEQURE SVUgKi8KKyAgImpyYyAkMzEgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiIC8qIEpSQyAqLwor ICAibm9wICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIkdldFBDOiAgICAgICAg ICAgICAgICAgICAgICAgIFxuXHQiCisgICJtb3ZlICQ2LCAkMzEgICAgICAgICAgICAgICAgICBc blx0IgorICAianIgJDMxICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIkxlbmQ6ICAg ICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJsaSAlW2Vycl0sIDAgICAgICAgICAgICAg ICAgICBcblx0IgorICAiTGZhaWw6ICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIi5z ZXQgcG9wICAgICAgICAgICAgICAgICAgICAgIFxuXHQiIC8qIFJlc3RvcmUgcHJldmlvdXMgY29u ZmlnICovCisgIDogW2Vycl0gIityIihlcnIpLCBbYTE0XSAiK3IiKGExNCksIFthMTNdICIrciIo YTEzKSwgW2ExMl0gIityIihhMTIpLAorICAgIFthN10gIityIihhNyksIFthOF0gIityIihhOCks IFthOV0gIityIihhOSksIFthMTBdICIrciIoYTEwKSwKKyAgICBbYTExXSAiK3IiKGExMSkKKyAg OiAvKiBpbnB1dHMgKi8KKyAgOiAiJDMxIiwgIiQ2IiAvKiBjbG9iYmVycyAqLworICApOworCisg IHJldHVybiBlcnI7Cit9CisKKy8qIFRlc3RzIGZvcmJpZGRlbiBzbG90IGJyYW5jaGluZyBpLmUu IGNvbmRpdGlvbmFsIGNvbXBhY3QgYnJhbmNoCisgICBpbnN0cnVjdGlvbnMuICAqLworCitpbnQK K3Rlc3RfcjZfZm9yYmlkZGVuICh2b2lkKQoreworICB2b2xhdGlsZSBpbnQgZXJyID0gLTE7Cisg IHZvbGF0aWxlIGludCBhNCA9IDA7CisgIHZvbGF0aWxlIGludCBhMiA9IDA7CisgIHZvbGF0aWxl IGludCBhMSA9IDA7CisKKyAgYXNtICgKKyAgIi5zZXQgcHVzaCAgICAgICAgICAgICAgICAgICAg ICAgICBcblx0IgorICAiLnNldCBub3Jlb3JkZXIgICAgICAgICAgICAgICAgICAgIFxuXHQiCisv KiBUZXN0IGlmIEZTIGlzIGlnbm9yZWQgd2hlbiBicmFuY2ggaXMgdGFrZW4gKi8KKyAgImxpICVb ZXJyXSwgMSAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAibGkgJVthNF0sIDAgICAgICAg ICAgICAgICAgICAgICAgIFxuXHQiCisgICJiZXF6YWxjICVbYTRdLCBMNDEgICAgICAgICAgICAg ICAgXG5cdCIKKyAgImxpICVbZXJyXSwgLTg1ICAgICAgICAgICAgICAgICAgICBcblx0IgorICAi TDQyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJiIExmYWlsMiAgICAg ICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIm5vcCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcblx0IgorICAiTDQxOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQi CisgICJibGV6ICVbZXJyXSwgTGZhaWwyICAgICAgICAgICAgICAgXG5cdCIKKy8qIFRlc3QgaWYg RlMgaXMgdXNlZCB3aGVuIGJyYW5jaCBpcyBub3QgdGFrZW4gKi8KKyAgImxpICVbZXJyXSwgMiAg ICAgICAgICAgICAgICAgICAgICBcblx0IgorICAibGkgJVthNF0sIDEgICAgICAgICAgICAgICAg ICAgICAgIFxuXHQiCisgICJibGV6YyAlW2E0XSwgTDQzICAgICAgICAgICAgICAgICAgXG5cdCIK KyAgImFkZGl1ICVbYTRdLCAlW2E0XSwgMSAgICAgICAgICAgICBcblx0IgorICAibGkgJVthMl0s IDIgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJiZXEgJVthNF0sICVbYTJdLCBMNDQg ICAgICAgICAgICAgXG5cdCIKKyAgIm5vcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc blx0IgorICAiTDQzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJub3Ag ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgImIgTGZhaWwyICAgICAgICAg ICAgICAgICAgICAgICAgICBcblx0IgorICAibm9wICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFxuXHQiCisgICJMNDQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAg ImxpICVbZXJyXSwgMyAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAibGkgJVthNF0sIDMg ICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJiZXF6YWxjICVbYTRdLCBMZmFpbDIgICAg ICAgICAgICAgXG5cdCIKKy8qIE5vdGU6ICdiYyBMNDUnIGluc3RlYWQgbm9wIHdvdWxkIGNhdXNl IFNlZ0ZhdWx0OiBJbGxlZ2FsIGluc3RydWN0aW9uOgorICAgRm9yYmlkZGVuIHNsb3QgY2F1c2Vz IGFuIGVycm9yIHdoZW4gaXQgY29udGFpbnMgYSBicmFuY2guICAqLworICAibm9wICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJiIExlbmQyICAgICAgICAgICAgICAgICAg ICAgICAgICAgXG5cdCIKKyAgIm5vcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0 IgorICAiTDQ1OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJub3AgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgImIgTGZhaWwyICAgICAgICAgICAg ICAgICAgICAgICAgICBcblx0IgorICAibm9wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFxuXHQiCisgICJMZW5kMjogICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgImxp ICVbZXJyXSwgMCAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiTGZhaWwyOiAgICAgICAg ICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJub3AgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXG5cdCIKKyAgIi5zZXQgcG9wICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0Igor ICA6IFtlcnJdICIrciIgKGVyciksIFthNF0gIityIihhNCksIFthMl0gIityIihhMiksIFthMV0g IityIihhMSkgLyogb3V0cHV0cyAqLworICA6IC8qIGlucHV0cyAqLworICA6ICIkMzEiIC8qIGNs b2JiZXJzICovCisgICk7CisKKyAgcmV0dXJuIGVycjsKK30KKworaW50Cit0ZXN0X3I2XzY0ICh2 b2lkKQoreworICB2b2xhdGlsZSBpbnQgZXJyID0gMDsKKworICBhc20gKAorICAiLnNldCBwdXNo ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiLnNldCBub3Jlb3Jk ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiLmRhdGEgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiZHZhbDogLmR3b3JkIDB4YWE1 NWJiNjZjYzc3ZGQ4OCAgICAgICAgICAgICBcblx0IgorICAiZDE6ICAgLmR3b3JkIDB4YWFhYWJi YmJjY2NjZGRkZCAgICAgICAgICAgICBcblx0IgorICAiZDU6ICAgLmR3b3JkIDB4MDAwMDAwMDAw MDAwMDBkZCAgICAgICAgICAgICBcblx0IgorICAiZDc6ICAgLmR3b3JkIDB4ZWVlZWZmZmYwMDAw MTExMSAgICAgICAgICAgICBcblx0IgorICAiZDg6ICAgLmR3b3JkIDB4YmJjY2NjZGRkZGVlZWVm ZiAgICAgICAgICAgICBcblx0IgorICAiZDk6ICAgLmR3b3JkIDB4MDAwMDAwZGRhYWFhYmJiYiAg ICAgICAgICAgICBcblx0IgorICAiZHZhbDE6IC53b3JkIDB4MTIzNGFiY2QgICAgICAgICAgICAg ICAgICAgICBcblx0IgorICAiZHZhbDI6IC53b3JkIDB4ZmZlZTAwMDAgICAgICAgICAgICAgICAg ICAgICBcblx0IgorICAiZHZhbDM6IC5kd29yZCAweGZmZmZmZmZmZmZmZmZmZmYgICAgICAgICAg ICBcblx0IgorICAiICAuZmlsbCAyNDAsMSwwICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc blx0IgorICAiZHZhbDQ6IC5kd29yZCAweDU1NTU1NTU1NTU1NTU1NTUgICAgICAgICAgICBcblx0 IgorICAiICAuZmlsbCAgMjY0LDEsMCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0Igor CisvKiBSZWdpc3RlciAkMTEgc3RvcmVzIGluc3RydWN0aW9uIGN1cnJlbnRseSBiZWluZyB0ZXN0 ZWQgYW5kIGhlbmNlCisgKiBpZGVudGlmaWVzIGVycm9yIGlmIGl0IG9jY3Vycy4gICovCisgICIu dGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisKKyAgImxp ICQxMSwgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIgLyogVGVzdCBE QUxJR04gKi8KKyAgcjZja18yZHIxaSAoZGFsaWduLCBkNywgZDEsIDMsIGQ4KQorICByNmNrXzJk cjFpIChkYWxpZ24sIGQxLCBkNSwgNCwgZDkpCisKKyAgImxpICQxMSwgMiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXG5cdCIgLyogVGVzdCBMRFBDICovCisgICJsZCAkNSwgZHZh bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJub3AgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJsZHBjICQ0LCBkdmFsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgIGZwX2Fzc2VydCAoJDQsICQ1KQor CisgICJsaSAkMTEsIDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiIC8q IFRlc3QgTFdVUEMgKi8KKyAgImx3dSAkNSwgZHZhbDEgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXG5cdCIKKyAgImx3dXBjICQ0LCBkdmFsMSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXG5cdCIKKyAgZnBfYXNzZXJ0ICgkNCwgJDUpCisgICJsd3UgJDUsIGR2YWwyICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJsd3VwYyAkNCwgZHZhbDIgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFxuXHQiCisgIGZwX2Fzc2VydCAoJDQsICQ1KQorCisgICJsaSAk MTEsIDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiIC8qIFRlc3QgTExE ICovCisgICJsZCAkNSwgZHZhbDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQi CisgICJkbGEgJDMsIGR2YWw0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisg ICJsbGQgJDQsIC0yNDgoJDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgIGZw X2Fzc2VydCAoJDQsICQ1KQorCisgICJsaSAkMTEsIDUgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFxuXHQiIC8qIFRlc3QgU0NEICovCisgICJsbGQgJDQsIC0yNDgoJDMpICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJkbGkgJDQsIDB4YWZhZiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJzY2QgJDQsIC0yNDgoJDMpICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFxuXHQiCisgICJsZCAkNSwgZHZhbDMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFxuXHQiCisgICJkbGkgJDQsIDB4YWZhZiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFxuXHQiCisgIGZwX2Fzc2VydCAoJDQsICQ1KQorCisgICJMZW5kMzogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJsaSAkMTEsIDAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICI1ODogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJtb3ZlICVbZXJyXSwgJDExICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICIuc2V0IHBvcCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICA6IFtlcnJdICIrciIgKGVycikgLyogb3V0cHV0 cyAqLworICAgOiAgICAgICAgICAgICAgICAgIC8qIGlucHV0cyAqLworICAgOiAiJDMiLCAiJDQi LCAiJDUiLCAiJDYiLCAiJDciLCAiJDExIiAvKiBjbG9iYmVycyAqLworICApOworCisgIHJldHVy biBlcnI7Cit9CisKK2ludAordGVzdF9yNiAodm9pZCkKK3sKKyAgdm9sYXRpbGUgaW50IGVyciA9 IDA7CisKKyAgYXNtICgKKyAgIi5zZXQgcHVzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICIuc2V0IG5vcmVvcmRlciAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiLmRhdGEgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAg ImR2YWxfMTogIC53b3JkIDB4YWJjZDEyMzQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFxuXHQiCisgICJkdmFsXzI6IC53b3JkIDB4MTIzNGVlZmYgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcblx0IgorICAiLmZpbGwgMjQ4LDEsMCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgImR2YWxfMzogLndvcmQgMHg1 NTU1NTU1NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICIuZmls bCAgMjYwLDEsMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc blx0IgorICAiZHZhbF80OiAud29yZCAweGFhYWFhYWFhICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXG5cdCIKKyAgIi50ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJsaSAkMTEsIDEgICAgICAgICAgICBc blx0IiAvKiBBRERJVVBDICovCisgICJqYWwgR2V0UENfMiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIm5vcCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiYWRkaXUgJDQsICQ2 LCA4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJh ZGRpdXBjICQ1LCA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XG5cdCIKKyAgZnBfYXNzZXJ0ICgkNCwgJDUpCisKKyAgImxpICQxMSwgMiAgICAgICAgICAgIFxu XHQiIC8qIEFVSVBDICovCisgICJqYWwgR2V0UENfMiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIm5vcCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiYWRkaXUgJDQsICQ2LCA4 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJhdWkg JDQsICQ0LCA4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5c dCIKKyAgImF1aXBjICQ1LCA4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcblx0IgorICBmcF9hc3NlcnQgKCQ0LCAkNSkKKworICAibGkgJDExLCAzICAgICAg ICAgICAgXG5cdCIgLyogQUxVSVBDICovCisgICJqYWwgR2V0UENfMiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIm5vcCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiYWRkaXUg JDQsICQ2LCAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQi CisgICJhdWkgJDQsICQ0LCA4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXG5cdCIKKyAgImxpICQ3LCAweGZmZmYwMDAwICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcblx0IgorICAiYW5kICQ0LCAkNCwgJDcgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJhbHVpcGMgJDUsIDggICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgZnBfYXNzZXJ0 ICgkNCwgJDUpCisKKyAgImxpICQxMSwgNCAgICAgICAgICAgIFxuXHQiIC8qIExXUEMgKi8KKyAg Imx3ICQ1LCBkdmFsXzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcblx0IgorICAibHdwYyAkNCwgZHZhbF8xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFxuXHQiCisgIGZwX2Fzc2VydCAoJDQsICQ1KQorICAibHcgJDUsIGR2YWxf MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJs d3BjICQ0LCBkdmFsXzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XG5cdCIKKyAgZnBfYXNzZXJ0ICgkNCwgJDUpCisKKy8qIFRlc3RpbmcgTEwgZm9sbG93cy4KKyAq IE5PVEU6IE1heSBiZSByZWR1bmRhbnQgYmVjYXVzZSBTQyBhbHJlYWR5IGNvbnRhaW5zIExMIGlu IGl0cyB0ZXN0LiAgKi8KKyAgImxpICQxMSwgNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJsdyAkNSwgZHZhbF8yICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgImRsYSAkMywgZHZhbF8zICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAibGwgJDQs IC0yNTIoJDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQi CisgIGZwX2Fzc2VydCAoJDQsICQ1KQorCisgICJsaSAkMTEsIDYgICAgICAgIFxuXHQiICAgIC8q IExMLVNDIHNlcXVlbmNlICovCisgICJsbCAkNCwgLTI1MigkMykgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgImxpICQ0LCAweGFmYWYgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAic2MgJDQsIC0yNTIo JDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJs dyAkNSwgZHZhbF8yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XG5cdCIKKyAgImxpICQ0LCAweGFmYWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcblx0IgorICBmcF9hc3NlcnQgKCQ0LCAkNSkKKyAgImIgTGVuZDQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAibm9w ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxu XHQiCisgICJHZXRQQ18yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXG5cdCIKKyAgIm1vdmUgJDYsICQzMSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcblx0IgorICAianIgJDMxICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJMZW5kNDogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgImxpICQx MSwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0 IgorICAiNTg6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFxuXHQiCisgICJtb3ZlICVbZXJyXSwgJDExICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIi5zZXQgcG9wICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICA6IFtlcnJdICIrciIoZXJyKSAg Lyogb3V0cHV0cyAqLworICA6IC8qIGlucHV0cyAqLworICA6ICIkMyIsICIkNCIsICIkNSIsICIk NiIsICIkNyIsICIkOCIsICIkOSIsICIkMTAiLAorICAgICIkMTEiLCAiJDMxIiAvKiBjbG9iYmVy cyAqLworICApOworCisgIHJldHVybiBlcnI7Cit9CisKKy8qIEZvciBmcHUtYnJhbmNoaW5nIHRl c3RpbmcsIGJjMWVxL2VxeiBhcmUgZW5vdWdoLiAgKi8KKworaW50Cit0ZXN0X3I2X2ZwdSAodm9p ZCkKK3sKKyAgdm9sYXRpbGUgaW50IGVyciA9IDA7CisKKyAgYXNtICgKKyAgIi5zZXQgcHVzaCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiLnNldCBub3Jlb3JkZXIgICAg ICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisvKiBUZXN0IHFOYU4gZm9ybWF0IGlzIDc1NC0y MDA4ICovCisgICJsaSAkMTEsIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIK KyAgImxpICQ0LCAweDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAibGkg JDUsIDB4MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJsaSAkNiwgMHg3 ZmMwMDAwMCAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIm10YzEgJDQsICRmMiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAibXRjMSAkNSwgJGY0ICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFxuXHQiCisgICJkaXYucyAkZjYsICRmMiwgJGY0ICAgICAgICAgICAg ICAgICAgICAgXG5cdCIKKyAgIm1mYzEgJDgsICRmNiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcblx0IgorICBmcF9hc3NlcnQgKCQ2LCAkOCkKKworICAibGkgJDExLCAyICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcblx0IiAgLyogYmMxZXF6ICovCisgICJsaSAkMTAsIDB4MDEg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJtdGMxICQxMCwgJGYyICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJtdGMxICQwLCAkZjQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFxuXHQiCisgICJiYzFlcXogJGYyLCA1OGYgICAgICAgICAgICAgICAg ICAgICAgICAgIFxuXHQiCisgICJub3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFxuXHQiCisgICJiYzFlcXogJGY0LCBMNjIgICAgICAgICAgICAgICAgICAgICAgICAgIFxu XHQiCisgICJub3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisg ICJiIDU4ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJub3Ag ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisiTDYyOiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJsaSAkMTEsIDMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiICAvKiBiYzFuZXogKi8KKyAgImJjMW5leiAk ZjQsIDU4ZiAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIm5vcCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgImJjMW5leiAkZjIsIExlbmQ4ICAg ICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIm5vcCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXG5cdCIKKyAgImIgNThmICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXG5cdCIKKyAgIm5vcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXG5cdCIKKyJMZW5kODogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5c dCIKKyAgImxpICQxMSwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAg IjU4OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIm1vdmUg JVtlcnJdLCAkMTEgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIi5zZXQgcG9wICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgOiBbZXJyXSAiK3IiKGVycikg IC8qIG91dHB1dHMgKi8KKyAgOiAgICAgICAgICAgICAgICAgIC8qIGlucHV0cyAqLworICA6ICIk NCIsICIkNSIsICIkNiIsICIkOCIsICIkMTAiLCAiJDExIiwgIiQzMSIsCisgICAgIiRmMiIsICIk ZjQiLCAiJGY2IiAvKiBjbG9iYmVycyAqLworICApOworCisgIHJldHVybiBlcnI7Cit9CisKKy8q IFI2IHNwZWNpZmljIHRlc3RzIGZvciBtaXBzNjQgKDY0LWJpdCkuICAqLworCitpbnQKK3Rlc3Rf cjZfbGxzY19kcCAodm9pZCkKK3sKKyAgdm9sYXRpbGUgaW50IGVyciA9IDA7CisKKyAgYXNtICgK KyAgIi5zZXQgcHVzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XG5cdCIKKyAgIi5zZXQgbm9yZW9yZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXG5cdCIKKyAgIi5kYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXG5cdCIKKyAgIi5hbGlnbiAxNiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgInRlc3RfZGF0YTogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIi53b3JkIDB4YWFhYWFhYWEgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIi53b3JkIDB4YmJiYmJiYmIg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIi53b3JkIDB4Y2Nj Y2NjY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIi53b3Jk IDB4ZGRkZGRkZGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAg Ii5hbGlnbiAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5c dCIKKyAgImVuZF9jaGVjazogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXG5cdCIKKyAgIi5ieXRlIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXG5cdCIKKyAgIi5ieXRlIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXG5cdCIKKyAgIi5ieXRlIDAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIi5ieXRlIDB4MSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIi50ZXh0ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgImxpICQxMSwgMSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIgLyogTExXUCAqLwor ICAibGx3cCAkMiwgJDMsIHRlc3RfZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc blx0IgorICBjaGVja3BhaXJfZHdvcmQgKCQyLCAkMywgdGVzdF9kYXRhLCBlbmRfY2hlY2spCisg ICJzbGwgJDIsICQyLCAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxu XHQiCisgICJzcmwgJDMsICQzLCAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFxuXHQiCisgICJtb3ZlICAkczAsICQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFxuXHQiCisgICJzY3dwICQyLCAkMywgdGVzdF9kYXRhICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFxuXHQiCisgIGNoZWNrMzIgKCQyLCAxKQorICBjaGVja3BhaXJfZHdv cmQgKCRzMCwgJDMsIHRlc3RfZGF0YSwgZW5kX2NoZWNrKQorICAvKiBUZXN0IFNDV1AsIGRvbmUg Ki8KKyAgImxpICQxMSwgMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXG5cdCIKKyAgImxpICQxMSwgMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXG5cdCIgLyogTExEUCAqLworICAibGxkcCAkMiwgJDMsIHRlc3RfZGF0YSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICBjaGVja3BhaXJfcXdvcmQgKCQyLCAk MywgdGVzdF9kYXRhLCBlbmRfY2hlY2spCisgICJkc2xsICQyLCAkMiwgMSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJkc3JsICQzLCAkMywgMSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJtb3ZlICRzMCwgJDIgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICJzY2RwICQyLCAk MywgdGVzdF9kYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgIGNoZWNr MzIgKCQyLCAxKQorICBjaGVja3BhaXJfcXdvcmQgKCRzMCwgJDMsIHRlc3RfZGF0YSwgZW5kX2No ZWNrKQorICAibGkgJDExLCA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcblx0IiAvKiBTQ0RQIGRvbmUgKi8KKyAgIkxlbmQ1OiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgImxpICQxMSwgMCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIjU4OiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIm1vdmUgJVtl cnJdLCAkMTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIi5z ZXQgcG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIK KyAgOiBbZXJyXSAiK3IiKGVycikgLyogb3V0cHV0cyAqLworICA6IC8qIGlucHV0cyAqLworICA6 ICIkMiIsICIkMyIsICIkNCIsICIkNSIsICIkNiIsICIkNyIsICIkOCIsICIkOSIsICIkMTAiLCAi JDExIiwKKyAgICAiJDMxIiwgIiRzMCIgIC8qIGNsb2JiZXJzICovCisgICk7CisKKyAgcmV0dXJu IGVycjsKK30KKworLyogUjYgc3BlY2lmaWMgdGVzdHMgZm9yIG1pcHMzMiAoMzItYml0KS4gICov CisKK2ludAordGVzdF9yNl9sbHNjX3dwICh2b2lkKQoreworICB2b2xhdGlsZSBpbnQgZXJyID0g MDsKKworICBhc20gKAorICAiLnNldCBwdXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcblx0IgorICAiLnNldCBub3Jlb3JkZXIgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiLmRhdGEgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiLmFsaWduIDggICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAidGVzdF9kYXRhXzI6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiLndvcmQgMHhh YWFhYWFhYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiLndv cmQgMHhiYmJiYmJiYiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0Igor ICAiLmFsaWduIDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc blx0IgorICAiZW5kX2NoZWNrXzI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcblx0IgorICAiLmJ5dGUgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcblx0IgorICAiLmJ5dGUgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcblx0IgorICAiLmJ5dGUgMCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiLmJ5dGUgMHgxICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAiLnRleHQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAibGkgJDExLCAxICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IiAvKiBUZXN0IExM V1AgKi8KKyAgImxsd3AgJDIsICQzLCB0ZXN0X2RhdGFfMiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXG5cdCIKKyAgY2hlY2twYWlyX2R3b3JkICgkMiwgJDMsIHRlc3RfZGF0YV8yLCBlbmRf Y2hlY2tfMikKKyAgInNsbCAkMiwgJDIsIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXG5cdCIKKyAgInNybCAkMywgJDMsIDEgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXG5cdCIKKyAgIm1vdmUgICRzMCwgJDIgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgInNjd3AgJDIsICQzLCB0ZXN0X2RhdGFfMiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgY2hlY2szMiAoJDIsIDEpCisgIGNo ZWNrcGFpcl9kd29yZCAoJHMwLCAkMywgdGVzdF9kYXRhXzIsIGVuZF9jaGVja18yKQorLyogVGVz dCBTQ1dQLCBkb25lLiAgKi8KKyAgImxpICQxMSwgMiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIkxlbmQ2OiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgImxpICQxMSwgMCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIjU4OiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIm1vdmUgJVtlcnJd LCAkMTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgIi5zZXQg cG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAg OiBbZXJyXSAiK3IiKGVycikgLyogb3V0cHV0cyAqLworICA6IC8qIGlucHV0cyAqLworICA6ICIk MiIsICIkMyIsICIkNCIsICIkNSIsICIkNiIsICIkNyIsICIkOCIsICIkOSIsICIkMTAiLAorICAg ICIkMTEiLCAiJDMxIiwgIiRzMCIgIC8qIGNsb2JiZXJzICovCisgICk7CisKKyAgcmV0dXJuIGVy cjsKK30KKworLyogSWYgYW55IHRlc3RfcjZfKiBmdW5jdGlvbiByZXR1cm5zIG5vbi16ZXJvLCBp dCdzIGEgZmFpbHVyZS4gICovCisjZGVmaW5lIEVYUEVDVChYKSBpZiAoKFgpKSBhYm9ydCAoKTsK KworaW50CittYWluICh2b2lkKQoreworICBFWFBFQ1QgKHRlc3RfcjZfYnJhbmNoICgpKTsKKwor ICBFWFBFQ1QgKHRlc3RfcjZfZm9yYmlkZGVuICgpKTsKKworICBFWFBFQ1QgKHRlc3RfcjZfNjQg KCkpOworCisgIEVYUEVDVCAodGVzdF9yNiAoKSk7CisKKyAgRVhQRUNUICh0ZXN0X3I2X2ZwdSAo KSk7CisKKyAgRVhQRUNUICh0ZXN0X3I2X2xsc2NfZHAgKCkpOworCisgIEVYUEVDVCAodGVzdF9y Nl9sbHNjX3dwICgpKTsKKworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmFyY2gvbWlwcy02NC1yNi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL21pcHMt NjQtcjYuZXhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43MTBkYTk0 YzU0MgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvbWlwcy02NC1y Ni5leHAKQEAgLTAsMCArMSw3NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjMtMjAyNSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg aWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj IyMjIyMjIyMjIyMjIyMjIyMgTUlQUyBSZWxlYXNlIDYgcGF0Y2ggdGVzdHMgIyMjIyMjIyMjIyMj IyMjIyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisKKyMgU2VuZCAnc2knIHRvIGdkYiB1bnRpbCBpbmZlcmlvciBleGl0 cy4KK3Byb2Mgc3RlcGkge30geworICAgIGdsb2JhbCBnZGJfcHJvbXB0CisgICAgc2V0IHRpbWVv dXQgW2dldF9sYXJnZXN0X3RpbWVvdXRdCisgICAgc2V0IHN0YXJ0IFt0aW1lc3RhbXBdCisgICAg d2hpbGUgeyBbdGltZXN0YW1wXSAtICRzdGFydCA8IDMqJHRpbWVvdXQgfSB7CisJZ2RiX3Rlc3Rf bXVsdGlwbGUgInN0ZXBpIiAiIiB7CisJICAgIC1yZSAiLipleGl0ZWQgbm9ybWFsbHkuKiIgewor CQlwYXNzICJzdWNjZXNzIgorCQlyZXR1cm4KKwkgICAgfQorCSAgICAtcmUgIi4qVGhlIHByb2dy YW0gaXMgbm90IGJlaW5nIHJ1bi4qIiB7CisJCWZhaWwgImZhaWx1cmUiCisJCXJldHVybgorCSAg ICB9CisJICAgIC1yZSAiLipCcmVha3BvaW50Lip0ZXN0Xy4qJGdkYl9wcm9tcHQgJCIgeworCSAg ICB9CisJICAgIC1yZSAiJGdkYl9wcm9tcHQuKiIgeworCSAgICB9CisJfQorICAgIH0KKyAgICBm YWlsICJ0ZXN0IGZhaWxlZCIKKyAgICByZXR1cm4KK30KKworcmVxdWlyZSB7aXN0YXJnZXQgIipt aXBzKiJ9CisKK3NldCB0ZXN0ZmlsZSAibWlwcy02NC1yNiIKK3NldCBzcmNmaWxlICR7dGVzdGZp bGV9LmMKK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KKworaWYg e1twcmVwYXJlX2Zvcl90ZXN0aW5nICJmYWlsZWQgdG8gcHJlcGFyZSIgIiR7YmluZmlsZX0iICIk e3NyY2ZpbGV9IiB7ZGVidWcgbm93YXJuaW5nc31dfSB7CisgICAgdW50ZXN0ZWQgImZhaWxlZCB0 byBwcmVwYXJlIgorICAgIHJldHVybgorfQorCisjIE5hdGl2ZSBuZWVkcyBydW4uCitpZiB7ICFb cnVudG9fbWFpbl0gfSB7CisgICAgdW50ZXN0ZWQgImNvdWxkbid0IHJ1biB0byBtYWluIgorICAg IHJldHVybgorfQorCitzZXQgdGVzdHMgIiIKK2ZvcmVhY2ggbiBbbGlzdCAicjZfYnJhbmNoIiAi cjZfZm9yYmlkZGVuIiAicjZfNjQiICJyNiIgInI2X2ZwdSIgInI2X2xsc2NfZHAiICJyNl9sbHNj X3dwIl0geworICAgIGxhcHBlbmQgdGVzdHMgInRlc3RfJG4iCit9CisKKyMgUHV0IGJyZWFrcG9p bnQgb24gZWFjaCB0ZXN0LWZ1bmN0aW9uCitmb3JlYWNoIGZ1bmMgJHRlc3RzIHsKKyAgICBpZiB7 IVtnZGJfYnJlYWtwb2ludCAiJGZ1bmMiXX0geworCXVudGVzdGVkICJjb3VsZG4ndCBwdXQgYnJl YWtwb2ludCB0byAkZnVuYyIKKwlyZXR1cm4KKyAgICB9Cit9CisKKyMgU3RlcCB0aHJvdWdoIHRo ZSBiaW5hcnkKK3N0ZXBpCi0tIAoyLjM0LjEKCg== --_002_PR3PR09MB4361342BC48F646B3668236C8FE12PR3PR09MB4361eurp_--