From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web10.10970.1619459633821872909 for ; Mon, 26 Apr 2021 10:53:53 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=NYDNAqsq; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: michael.d.kinney@intel.com) IronPort-SDR: T29TbX5k2UH06fwv1jKJlwy/NWOm9Sj1DsKBoGBEgnMFz6l5Ur78qDFofJwYi1nUT5HeyLzeNZ iG+5g5EuJdLw== X-IronPort-AV: E=McAfee;i="6200,9189,9966"; a="195932414" X-IronPort-AV: E=Sophos;i="5.82,252,1613462400"; d="scan'208";a="195932414" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Apr 2021 10:53:51 -0700 IronPort-SDR: NCo+3QsCmG3lGRgWZIDlB73dQ+eLh8DgLJoEdaDjvik7yUeFYAonTBcRfAVQax5zryt/NDIYTY wL0Qkc5geTBA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,252,1613462400"; d="scan'208";a="465199859" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga001.jf.intel.com with ESMTP; 26 Apr 2021 10:53:51 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Mon, 26 Apr 2021 10:53:50 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2 via Frontend Transport; Mon, 26 Apr 2021 10:53:50 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.45) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2106.2; Mon, 26 Apr 2021 10:53:48 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BOlO8zsvj9cbttNcPKMMpqxKDiboW3KTL7o+RadVwKW8D8MEcGM2E/GFHDC7RqnmTLe9ZjjcvLmekKFpaZj76PuW2pw64Q7VwmDhYtdPATfU5UcG/F7noUHWzsqor0fPprWVawkZMoTd2mAjq6eEV8I4hQIq5vuT6LB9euganCA2XvMjJ7BRDunUbWbnUsteJk5jy3XCIc5s6ngpVt8CGMqPbjH1wtV8uawbQ0UfS9RLZYuFHc7ZVSBZjA7vE2FNzyLcwbXIB0ijIK/wqaRQb6k4YLe3DPSC3b4wj0M2gCfJMijPlK30PdDxMEwraVEROC01HZapKi1WGmMANgw3Og== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=F8zDiqVIgSoaeH2VqsStKYvbZHp0y/3hnw0qESX3lfU=; b=cNvLZYNwJ7g107qjhIOXt7pNC3Wug29g9TvlQ6rA3JCemjTfCzrrf8+6KiQydUld+/zs05WQUFCRsjlJSnBK8MtxLFNZ7YzSt/3RDjaJCYzHCnhm8arZ6y5SDR66oWjZOahatVvDg0Mbx8YM7TbscvyeHItJnm3t+76Sc6oY8T7svcugMiLhJaqebq6YMcjNvFC5wKp+GufWD/s0KIlxDNThyaznWEaM/zvAkZ+ZvZfSa1bn6Zlo6ybr6/GOScgTCdmTXCsIGC2nQ2Tbah5BuRaMQInC7UqF1WkDO1ooLNvfcOivl1ci+0kyAI+y8caljfO2UzaVMsxzMcUiHn0dQw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=F8zDiqVIgSoaeH2VqsStKYvbZHp0y/3hnw0qESX3lfU=; b=NYDNAqsq9HgJx3TlqJcKIPrH4H+JsXsWPKxEadcd/voyT+31wyNIanZRqrU/fRHx31SJWl9tYD48hsbTYhLuvdUgpkfzJni5zLGoy06pLXLap1CsmxEc9VMiO0TKCMSfenQL3j5r8eXu+O6vGD3jhRh0ipqBD9Z+dVCn9yLwk/M= Received: from CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by MWHPR1101MB2159.namprd11.prod.outlook.com (2603:10b6:301:53::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.22; Mon, 26 Apr 2021 17:53:41 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::59e2:f389:5f8b:2f08]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::59e2:f389:5f8b:2f08%4]) with mapi id 15.20.4065.027; Mon, 26 Apr 2021 17:53:41 +0000 From: "Michael D Kinney" To: "Loh, Tien Hock" , "devel@edk2.groups.io" , "Kinney, Michael D" CC: "thloh85@gmail.com" , Leif Lindholm , Ard Biesheuvel Subject: Re: [PATCH V5 1/1] EmbeddedPkg: DwMmcHcDxe: Add support for Designware SDMMC driver Thread-Topic: [PATCH V5 1/1] EmbeddedPkg: DwMmcHcDxe: Add support for Designware SDMMC driver Thread-Index: AQHXHsr8UmHd7bJfa0OGH4sfRjTojqqPWDKAgDfYTWA= Date: Mon, 26 Apr 2021 17:53:41 +0000 Message-ID: References: <20210322032439.9312-1-tien.hock.loh@intel.com> <20210322032439.9312-2-tien.hock.loh@intel.com> In-Reply-To: <20210322032439.9312-2-tien.hock.loh@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [24.19.191.44] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2b075234-775f-475a-47c4-08d908dc3a54 x-ms-traffictypediagnostic: MWHPR1101MB2159: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: nBZ82szbzPWh2zx4212i03MxGPGo0K20Ye/fowSWMK77uePHu62yvVH46Z4p+64t2nogjCk/RXMVrsQVpPY1qCm422ARJ74A1oIsaIuUDscrfeMGmknKb5RdWvI7yCzw9dWZLGtdwbEA/ApZv4uVvp7rlvaRnqxmDhHp3zh3h9a77QjV+mswiKrqqO6xOBSD/XT5vIsbgUB3ypMTfMQzDCDhFkpfa99rKFFbzm6CaT3I9wCmxgXRJmzxQcwfpxLgs1npdmnnzu9vWtNEmQtyecYbKleCmQ/CCMqTJcOcrylpONpOlqJ8OMeJvyVOoojJoIRU4jGgnwV8aeiHfUZlEFMGf0qtnpUHaBhuyMCE4CUWbMxgWZK43qgTvTfSVtx6042hOJmiC6HJd6zXLq9/QsWy19cjiiuB20BlNAqYlGpjTJ2qmNUPu+KezvSHn/SEVgWbhVIwlzVcHWRTI/3R41J3NmJQiAKC5eHvqdcc5a9TbUbZDu2YVDtTpdSp++rm8BODw5mvdWE2AtFEaPZTjPyloPyc8AtE6nkvebztwsKPTBf109OZKYP6UGsqCdYkkJPOfTUbUpRVREovcRemDlNF9huntan4EebnzI8YQ9ttKBwBG4MaMuVCgMHFfsbgfwSr6K072ZnK6KzLSmPhZOue59B5ekaazs9dNdlUjVL01V/E5rzhGnOFXtwE3sEX8gafDFD1XYl5xBImkKNXa/HNP1yDKAIc4jWQt8B1wYhCQmcu+gF7KR1Cg3G7yrI7 x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4929.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(6029001)(136003)(39860400002)(376002)(346002)(396003)(366004)(966005)(122000001)(38100700002)(15188155005)(33656002)(52536014)(26005)(5660300002)(86362001)(186003)(4326008)(83380400001)(30864003)(16799955002)(71200400001)(8936002)(2906002)(478600001)(19627235002)(54906003)(316002)(110136005)(55016002)(53546011)(6506007)(7696005)(8676002)(66946007)(66446008)(66476007)(66556008)(76116006)(64756008)(9686003)(290074003)(579004)(559001)(569008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?a2tpSzhEajNZYW42b1FqdVVYM2RoVXd6aTFCZ2ZaQnI5U1g3cEgwaTFrVFZr?= =?utf-8?B?WXpTYnVjcnh3eG8yekU4dTRvRE1sNDNEMS9VTEJWTFZBZFhWc0dRSW0yUlpx?= =?utf-8?B?bDNPWS9NRkdJZTl2Z25yV0M1VDNTZHBXUHRPa0Z0emhOSzV6Y2RkNkUraE9k?= =?utf-8?B?a1ozTXZpbFlTOE92RzljblhTcUtzdUhYTUFYaEk3VmVYY2NQS2hNTDJrbWVN?= =?utf-8?B?RjJyeG5GQThqVlVub01keXVTSmVRbnMwSnFLeEdTSSt3QnhrSyt3amd6WW5Q?= =?utf-8?B?NEFFZUNDZzd5b2psdVVVUWVIdUQ4RE0zWHhLTkYvK2hTa1ZuRWRiR21wNktq?= =?utf-8?B?MDB6WlR2SUZUcmdROUNUcnJaNUZDVWdicTkvSFoya3o4TEVXa2lQck5IR2Fj?= =?utf-8?B?alBSNTVPSG9JK2J5SEdsRWMzY1FUWUY1UEo3VnVZRTE1WlExOTRidk1pQStX?= =?utf-8?B?YktrNU1WUUU1aWRjQ21SK1diZjIvYVdRUkZla2Q3eGVId3FwcjIrSk5iVjU5?= =?utf-8?B?S0dQaHVUZUdreUhxa0I3dEFaUURhQXJ1SnJnZCtCdkgrYWxLbWppVC9lWkpL?= =?utf-8?B?bGxra0Q0dHFRdDRERkJaaTlRajRhaGkyenFZcFF4WEYraHp2aFZGZCtKaGZO?= =?utf-8?B?YVZtNVFUekNabzJzeGwwTkQ2OFk2VnkwbzFDblllbElDOFZZWHExV1c1U0Zi?= =?utf-8?B?di9KNlZ0MUNMZzlpZE1TMEUzQUV5RHNrVCtRYlNzZ2Z0WmhOaVpEOVZTQnEz?= =?utf-8?B?T1FOS0xhNHgrTGU5VkVPYytlM0ZPZHpIUEZsNHl6NDZlRmkzcTMwOGZySlhD?= =?utf-8?B?QjNFTmNzTVBWMUV2TmgveDVhZWhlMjhGcHBRVVpiTDJRRXpVMXhHeWRYV1Nq?= =?utf-8?B?YUU5c3p2empNTG9JelRudlpZdzgxRk0xdjhSMThIdDA2cXBoYlM0TE5aOHRD?= =?utf-8?B?a2Q3OXR3VTJDSkMxSWFKN2tOaHFONlA4U3dWTDJDTjZYQXJMcWlycUNiQ01M?= =?utf-8?B?a2Z6SEpLUnpqYWVZTng1YmlDMlgrLzRUL1dDdXFieTJJbnVwazM4dEFaSmZv?= =?utf-8?B?Vll2N1V2Z09QTHhLaGNLVmlDTjRWbjYwNFpYR3NLam16Z05CKzQ2MjFjNFhS?= =?utf-8?B?bEZLTUZ2SmFzZmRSUGliVGZKUXA4dHVQOUhOZUl4VXJDV0JHd0p6Z3VoNEpQ?= =?utf-8?B?VzBZaGFFRWlHaVUxcUdudGUveDVFZ2JScllIVm5XenUwUS9hUHVwYmFKNU50?= =?utf-8?B?LzFLcTNWdWpmU3JhNmUrazdwUnVYNzdsK1B1TUhONmhsY2NlWW5WWENzRHho?= =?utf-8?B?a0RJdFUyL2pyVEhPL04rbC9odzRLT25XNGNUQk9hZVRPa0VmZyt6bkpIRW8w?= =?utf-8?B?ZUFDQ1Y0MEtqeGxwV2pCSDlJRFhrdW1rVlRjU3I0RkR2OWlvNVZPZmZFOWpD?= =?utf-8?B?clFHUG50Q25qTkdYelFHME1UcFVCOGpzY05VZVZuYjBPQ0JIMkdlZkJzREFT?= =?utf-8?B?VUFZQkJDWHBoNkhrU0EvdEY2cnZKZW4vL29MYlFYUkxVKytMbXhEOEg1Vkdw?= =?utf-8?B?WThpaDVsN1VVaWh5TFVOWGlSZVovYnJOTEE4RUI2WVN0Q2NRYUZpdzhsZG5F?= =?utf-8?B?TGc1TFpGbE1DS2wrMUw0ZTFYNmljakhqdzJCQlJudk81ZmFRSTNrSFRRUDhw?= =?utf-8?B?RHZKWUpEekpGSkJwQmhhUU9xSDFSOVg3NmdZUHo2VXdpekgxV094YmxIS0tt?= =?utf-8?Q?xtRVrT3F5KF7ya5+to=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2b075234-775f-475a-47c4-08d908dc3a54 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Apr 2021 17:53:41.1108 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 5JL1kUE0NPdox0QtV+mG8LsQo1fv/qxgODuaaKoOiUL0YabwqQArmUAbMs0l37gHeY9yJGtYXFQ53hH2ihK9AFS6rGZqD3ZIDhQ8+dvXyy4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR1101MB2159 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SSBzZWUgdGhlIE1kZU1vZHVsZVBrZyBoYXMgdGhlIFNkTW1jUGNpSGNEeGUgbW9kdWxlIGFuZCBp dCB1c2VzIHRoZSBFREsgSUkgU0QgTU1DIE92ZXJyaWRlDQpQcm90b2NvbCBmb3IgaG9zdCBjb250 cm9sbGVyIHNwZWNpZmljIGJlaGF2aW9ycy4gIFdoeSB3YXMgdGhpcyBkcml2ZXIgYW5kIGFuIGlt cGxlbWVudGF0aW9uDQpvZiB0aGUgRURLIElJIFNEIE1NQyBPdmVycmlkZSBQcm90b2NvbCBmb3Ig dGhlIERlc2lnbldhcmUgTU1DIEhDIG5vdCB1c2VkPw0KDQpJZiB0aGVyZSBpcyBhIGdvb2QgcmVh c29uIHRoYXQgdGhpcyBleGl0aW5nIG1vZHVsZSBhbmQgb3ZlcnJpZGUgZXh0ZW5zaW9ucyBjYW4g bm90IGJlIHVzZWQsDQp0aGVuIHBsZWFzZSBhZGQgdGhhdCBiYWNrZ3JvdW5kIGFuZCBhbmFseXNp cyB0byB0aGUgQlouDQoNCkkgc2VlIHRoZSBleGlzdGluZyBtb2R1bGUgaXMgUENJIGFuZCBJIHRo aW5rIHRoaXMgbmV3IG9uZSBpcyBmb3IgYSBNTUlPIGJhc2VkIGRldmljZQ0KdGhhdCByZXF1aXJl cyBkaWZmZXJlbnQgRE1BIHNlcnZpY2VzLiAgSXMgdGhpcyBjb3JyZWN0PyAgSSBhbSB3b25kZXJp bmcgaWYgdGhlcmUgaXMNCmEgd2F5IHRvIGltcGxlbWVudCB0IGEgc2luZ2xlIFVFRkkgRHJpdmVy IHNvdXJjZXMgdGhhdCBjYW4gc3VwcG9ydCBhIGRldmljZSB0aGF0IGlzDQp3aXRoIFBDSSBvciBN TUlPPw0KDQpJZiBhIG5ldyBkcml2ZXIgaXMgcmVxdWlyZWQsIHRoZW4gaGVyZSBpcyBzb21lIG1v cmUgc3BlY2lmaWMgY29kZSByZXZpZXcgZmVlZGJhY2s6DQoNCjEpIEVtYmVkZGVkUGtnL0luY2x1 ZGUvUHJvdG9jb2wvUGxhdGZvcm1Td01tYy5oDQoNCiAgIFRoZSBlbnVtIEVGSV9TRF9NTUNfU0xP VF9UWVBFIGNhbiBub3QgYmVpbmcgd2l0aCBFRklfIHVubGVzcyBpcyBwYXJ0IG9mIHRoZSBVRUZJ IFNwZWMuDQogICBUaGlzIGZpbGUgYXBwZWFycyB0byBiZSBzcGVjaWZpYyB0byBEVywgc28gcGVy aGFwcyBpdCBzaG91bGQgYmUgcHJlZml4ZWQgd2l0aCBEV18gaW5zdGVhZA0KICAgdG8gbWF0Y2gg dGhlIHVzYWdlIG9mIERXX01NQ19IQ19TTE9UX0NBUC4NCg0KICAgVGhlIHNhbWUgY29tbWVudCBh cHBsaWVzIHRvIFNEX01NQ19DQVJEX1RZUEUuICBTaG91bGQgdGhhdCBiZSBEV19TRF9NTUNfQ0FS RF9UWVBFPw0KDQoNCjIpIEVtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZQ0KICAgYSkgVGhl cmUgaXMgYSBwYWNrYWdlIC5kZWMgZmlsZSBpbiB0aGlzIGRpcmVjdG9yeS4gIFBhY2thZ2VzIGNh biBuZXZlciBiZSBuZXN0ZWQuIEFueQ0KICAgICAgaW50ZXJmYWNlcyB0aGF0IG5lZWQgdG8gYmUg ZXhwb3J0ZWQgZnJvbSB0aGUgRW1iZWRkZWRQa2cgc2hvdWxkIGJlIGRlY2xhcmVkIGluDQogICAg ICBFbWJlZGRlZFBrZy5kZWMgYW5kIER3TW1jRGNEeGUuZGVjIHNob3VsZCBiZSByZW1vdmVkLg0K ICAgYikgRHdNbWNEY0R4ZS5kZWMgZGVjbGFyZWQgYSB0b2tlbiBzcGFjZSBHVUlELCBidXQgdGhl cmUgYXJlIG5vdCBQQ0RzLiAgSSB0aGluayB0aGlzIEdVSUQNCiAgICAgIGNhbiBiZSByZW1vdmVk Lg0KICAgYykgRHdNbWNEY0R4ZS5pbmYuICBSZW1vdmUgcmVmZXJlbmNlIHRvIER3TW1jRGNEeGUu ZGVjLiAgQWxzbywgaXMgdGhpcyBVRUZJIERyaXZlciByZWFsbHkNCiAgICAgIEFSTSBzcGVjaWZp Yz8gIFdoeSBpcyB0aGVyZSBhIGRlcGVuZGVuY3kgb24gQXJtUGtnL0FybVBrZy5kZWM/ICBDYW4g dGhhdCBiZSByZW1vdmVkPw0KICAgICAgQ2FuIHRoZSBkZXBlbmRlbmN5IG9uIEFybUxpYiBiZSBy ZW1vdmVkPw0KDQozKSBJIHNlZSB1c2Ugb2YgI2lmZGVmIGluIHRoZSBEd01tY0hjaS5oIGZpbGUu ICBUaGlzIGlzIGhpZ2hseSBkaXNjb3VyYWdlZC4gIFdoeSBhcmUgDQogICB0aG9zZSB0aGVyZSBh bmQgd2h5IG5vdCB1c2UgZmVhdHVyZWQgZmxhZ3MgUENEIGluc3RlYWQ/ICBJZiBpdCBpcyByZWxh dGVkIHRvIHRoZSANCiAgIFBDSSB2cyBNTUlPIHJlZ2lzdGVyIG1hcHBpbmcsIHRoZW4gcGVyaGFw cyB0aGUgUENJIHJlbGF0ZWQgY29udGVudCBjYW4gYmUgcmVtb3ZlZA0KICAgZnJvbSB0aGlzIE1N SU8gc3BlY2lmaWMgZHJpdmVyPw0KDQpCZXN0IHJlZ2FyZHMsDQoNCk1pa2UNCg0KPiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBMb2gsIFRpZW4gSG9jayA8dGllbi5ob2NrLmxv aEBpbnRlbC5jb20+DQo+IFNlbnQ6IFN1bmRheSwgTWFyY2ggMjEsIDIwMjEgODoyNSBQTQ0KPiBU bzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gQ2M6IHRobG9oODVAZ21haWwuY29tOyBMb2gsIFRp ZW4gSG9jayA8dGllbi5ob2NrLmxvaEBpbnRlbC5jb20+OyBLaW5uZXksIE1pY2hhZWwgRCA8bWlj aGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBMZWlmDQo+IExpbmRob2xtIDxsZWlmQG51dmlhaW5j LmNvbT47IEFyZCBCaWVzaGV1dmVsIDxhcmRiK3RpYW5vY29yZUBrZXJuZWwub3JnPg0KPiBTdWJq ZWN0OiBbUEFUQ0ggVjUgMS8xXSBFbWJlZGRlZFBrZzogRHdNbWNIY0R4ZTogQWRkIHN1cHBvcnQg Zm9yIERlc2lnbndhcmUgU0RNTUMgZHJpdmVyDQo+IA0KPiBGcm9tOiAiVGllbiBIb2NrLCBMb2gi IDx0aWVuLmhvY2subG9oQGludGVsLmNvbT4NCj4gDQo+IFRoaXMgYWRkcyBzdXBwb3J0IGZvciBE ZXNpZ253YXJlIFNETU1DIGRyaXZlci4gVGhlIFNETU1DIGRyaXZlciBkZXBlbmRzIG9uDQo+IE1k ZU1vZHVsZVBrZy9CdXMvU2QvLCBhbmQgcHJvZHVjZXMgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJP VE9DT0wuIFRoZQ0KPiBkcml2ZXIgdXNlcyBNTUlPIHRvIHJlYWQvd3JpdGUsIGFuZCB1c2VzDQo+ IGdFZGtpaU5vbkRpc2NvdmVyYWJsZURldmljZVByb3RvY29sR3VpZC4gUGxhdGZvcm0gbmVlZHMg dG8gcmVnaXN0ZXIgZGV2aWNlDQo+IHdpdGggZ0Vka2lpTm9uRGlzY292ZXJhYmxlRGV2aWNlUHJv dG9jb2xHdWlkLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogTG9oIFRpZW4gSG9jayA8dGllbi5ob2Nr LmxvaEBpbnRlbC5jb20+DQo+IENjOiBMZWlmIExpbmRob2xtIDxsZWlmQG51dmlhaW5jLmNvbT4N Cj4gQ2M6IEFyZCBCaWVzaGV1dmVsIDxhcmRiK3RpYW5vY29yZUBrZXJuZWwub3JnPg0KPiAtLS0N Cj4gIEVtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01tY0hjRHhlLmRlYyAgfCAgIDQw ICsNCj4gIEVtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01tY0hjRHhlLmluZiAgfCAg IDcwICsNCj4gIEVtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01tY0hjRHhlLmggICAg fCAgODE3ICsrKysrKysrKysNCj4gIEVtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01t Y0hjaS5oICAgICAgfCAgOTg1ICsrKysrKysrKysrKw0KPiAgRW1iZWRkZWRQa2cvSW5jbHVkZS9Q cm90b2NvbC9QbGF0Zm9ybUR3TW1jLmggICB8ICAgNzkgKw0KPiAgRW1iZWRkZWRQa2cvRHJpdmVy cy9Ed01tY0hjRHhlL0NvbXBvbmVudE5hbWUuYyB8ICAyMTQgKysrDQo+ICBFbWJlZGRlZFBrZy9E cml2ZXJzL0R3TW1jSGNEeGUvRHdNbWNIY0R4ZS5jICAgIHwgMTI5NiArKysrKysrKysrKysrKysr DQo+ICBFbWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRHdNbWNIY2kuYyAgICAgIHwgMTYw MiArKysrKysrKysrKysrKysrKysrKw0KPiAgRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhl L0VtbWNEZXZpY2UuYyAgICB8IDEwNDIgKysrKysrKysrKysrKw0KPiAgRW1iZWRkZWRQa2cvRHJp dmVycy9Ed01tY0hjRHhlL1NkRGV2aWNlLmMgICAgICB8IDExMDUgKysrKysrKysrKysrKysNCj4g IDEwIGZpbGVzIGNoYW5nZWQsIDcyNTAgaW5zZXJ0aW9ucygrKQ0KPiANCj4gZGlmZiAtLWdpdCBh L0VtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01tY0hjRHhlLmRlYyBiL0VtYmVkZGVk UGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01tY0hjRHhlLmRlYw0KPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLmNmODVjY2IxYTAzMA0KPiAtLS0gL2Rldi9udWxs DQo+ICsrKyBiL0VtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01tY0hjRHhlLmRlYw0K PiBAQCAtMCwwICsxLDQwIEBADQo+ICsjLyoqIEBmaWxlDQo+ICsjIEZyYW1ld29yayBNb2R1bGUg RGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgSW5kdXN0cnkgU3RhbmRhcmRzDQo+ICsjDQo+ICsjIFRo aXMgUGFja2FnZSBwcm92aWRlcyBoZWFkZXJzIGFuZCBsaWJyYXJpZXMgdGhhdCBjb25mb3JtIHRv IEVGSS9QSSBJbmR1c3RyeSBzdGFuZGFyZHMuDQo+ICsjIENvcHlyaWdodCAoYykgMjAwNywgSW50 ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArIyBDb3B5cmlnaHQg KGMpIDIwMTItMjAxNCwgQVJNIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsjIENv cHlyaWdodCAoYykgMjAxOCwgTGluYXJvLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyMN Cj4gKyMgICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUg bGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyDQo+ICsjICAgIHRoZSB0ZXJtcyBhbmQg Y29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2Ugd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0 cmlidXRpb24uDQo+ICsjICAgIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZv dW5kIGF0DQo+ICsjICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5z ZS5waHANCj4gKyMNCj4gKyMgICAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhF IEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ICsjICAgIFdJVEhPVVQgV0FSUkFO VElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElN UExJRUQuDQo+ICsjDQo+ICsjKiovDQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBERUNfU1BFQ0lG SUNBVElPTiAgICAgICAgICAgICAgPSAweDAwMDEwMDE5DQo+ICsgIFBBQ0tBR0VfTkFNRSAgICAg ICAgICAgICAgICAgICA9IER3TW1jSGNEeGVQa2cNCj4gKyAgUEFDS0FHRV9HVUlEICAgICAgICAg ICAgICAgICAgID0gZTczMDk3Y2UtMWZlMi00MWE2LWE5MzAtMzEzNmJjNmQyM2VmDQo+ICsgIFBB Q0tBR0VfVkVSU0lPTiAgICAgICAgICAgICAgICA9IDAuMQ0KPiArDQo+ICsNCj4gKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjDQo+ICsjDQo+ICsjIEluY2x1ZGUgU2VjdGlvbiAtIGxpc3Qgb2YgSW5j bHVkZSBQYXRocyB0aGF0IGFyZSBwcm92aWRlZCBieSB0aGlzIHBhY2thZ2UuDQo+ICsjICAgICAg ICAgICAgICAgICAgIENvbW1lbnRzIGFyZSB1c2VkIGZvciBLZXl3b3JkcyBhbmQgTW9kdWxlIFR5 cGVzLg0KPiArIw0KPiArIyBTdXBwb3J0ZWQgTW9kdWxlIFR5cGVzOg0KPiArIyAgQkFTRSBTRUMg UEVJX0NPUkUgUEVJTSBEWEVfQ09SRSBEWEVfRFJJVkVSIERYRV9SVU5USU1FX0RSSVZFUiBEWEVf U01NX0RSSVZFUiBEWEVfU0FMX0RSSVZFUiBVRUZJX0RSSVZFUg0KPiBVRUZJX0FQUExJQ0FUSU9O DQo+ICsjDQo+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KPiArDQo+ICtbR3VpZHMuY29tbW9u XQ0KPiArICBnRHdNbWNIY0R4ZVRva2VuU3BhY2VHdWlkICAgICA9IHsgMHg1NzZjMTMyZSwgMHg3 ZDUxLCAweDRhYmIsIHsgMHhiYywgMHg2MCwgMHgxMywgMHgwOCwgMHgwNCwgMHgwZSwgMHg5MCwg MHg5MiB9fQ0KPiArDQo+ICtbUHJvdG9jb2xzLmNvbW1vbl0NCj4gKyAgZ1BsYXRmb3JtRHdNbWNQ cm90b2NvbEd1aWQgICAgPSB7IDB4MWQ2ZGZkZTUsIDB4NzZhNywgMHg0NDA0LCB7IDB4ODUsIDB4 NzQsIDB4N2EsIDB4ZGYsIDB4MWEsIDB4OGEsIDB4YTIsIDB4MGQgfX0NCj4gZGlmZiAtLWdpdCBh L0VtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01tY0hjRHhlLmluZiBiL0VtYmVkZGVk UGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01tY0hjRHhlLmluZg0KPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLjRjZDA5NjBlZjljMw0KPiAtLS0gL2Rldi9udWxs DQo+ICsrKyBiL0VtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01tY0hjRHhlLmluZg0K PiBAQCAtMCwwICsxLDcwIEBADQo+ICsjIyBAZmlsZQ0KPiArIyAgRHdTZE1tY0hjRHhlIGRyaXZl ciBpcyB1c2VkIHRvIG1hbmFnZSB0aG9zZSBob3N0IGNvbnRyb2xsZXJzIHdoaWNoIGNvbXBseSB3 aXRoDQo+ICsjICBEZXNpZ253YXJlIFNEIEhvc3QgQ29udHJvbGxlci4NCj4gKyMNCj4gKyMgIEl0 IHdpbGwgcHJvZHVjZSBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCB0byBhbGxvdyBzZW5k aW5nIFNEL01NQy9lTU1DIGNtZHMNCj4gKyMgIHRvIHNwZWNpZmllZCBkZXZpY2VzIGZyb20gdXBw ZXIgbGF5ZXIuDQo+ICsjDQo+ICsjICBDb3B5cmlnaHQgKGMpIDIwMTUsIEludGVsIENvcnBvcmF0 aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyMgIENvcHlyaWdodCAoQykgMjAxNiwg TWFydmVsbCBJbnRlcm5hdGlvbmFsIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsj ICBDb3B5cmlnaHQgKGMpIDIwMTgsIExpbmFybyBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJS Pg0KPiArIw0KPiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFs cw0KPiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMg YW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsjICB3aGljaCBhY2NvbXBhbmll cyB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUg Zm91bmQgYXQNCj4gKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5z ZS5waHANCj4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElD RU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJF UFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4g KyMNCj4gKyMNCj4gKyMjDQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICAg ICAgICAgICAgICAgICAgPSAweDAwMDEwMDE5DQo+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAg ICAgICAgICA9IER3TW1jSGNEeGUNCj4gKyAgTU9EVUxFX1VOSV9GSUxFICAgICAgICAgICAgICAg ID0gRHdNbWNIY0R4ZS51bmkNCj4gKyAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAgICAgID0g OWJlNGQyNjAtMjA4Yy00ZWZlLWE1MjQtMGI1ZDNiZjc3ZjlkDQo+ICsgIE1PRFVMRV9UWVBFICAg ICAgICAgICAgICAgICAgICA9IFVFRklfRFJJVkVSDQo+ICsgIFZFUlNJT05fU1RSSU5HICAgICAg ICAgICAgICAgICA9IDEuMA0KPiArICBFTlRSWV9QT0lOVCAgICAgICAgICAgICAgICAgICAgPSBJ bml0aWFsaXplRHdNbWNIY0R4ZQ0KPiArDQo+ICtbU291cmNlc10NCj4gKyAgQ29tcG9uZW50TmFt ZS5jDQo+ICsgIER3TW1jSGNEeGUuYw0KPiArICBEd01tY0hjRHhlLmgNCj4gKyAgRHdNbWNIY2ku Yw0KPiArICBEd01tY0hjaS5oDQo+ICsgIEVtbWNEZXZpY2UuYw0KPiArICBTZERldmljZS5jDQo+ ICsNCj4gK1tQYWNrYWdlc10NCj4gKyAgQXJtUGtnL0FybVBrZy5kZWMNCj4gKyAgRW1iZWRkZWRQ a2cvRHJpdmVycy9Ed01tY0hjRHhlL0R3TW1jSGNEeGUuZGVjDQo+ICsgIEVtYmVkZGVkUGtnL0Vt YmVkZGVkUGtnLmRlYw0KPiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiArICBN ZGVQa2cvTWRlUGtnLmRlYw0KPiArDQo+ICtbTGlicmFyeUNsYXNzZXNdDQo+ICsgIEFybUxpYg0K PiArICBCYXNlTGliDQo+ICsgIEJhc2VNZW1vcnlMaWINCj4gKyAgQ2FjaGVNYWludGVuYW5jZUxp Yg0KPiArICBEZWJ1Z0xpYg0KPiArICBEZXZpY2VQYXRoTGliDQo+ICsgIERtYUxpYg0KPiArICBN ZW1vcnlBbGxvY2F0aW9uTGliDQo+ICsgIFRpbWVyTGliDQo+ICsgIFVlZmlCb290U2VydmljZXNU YWJsZUxpYg0KPiArICBVZWZpRHJpdmVyRW50cnlQb2ludA0KPiArICBVZWZpTGliDQo+ICsgIFVl ZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYg0KPiArDQo+ICtbUHJvdG9jb2xzXQ0KPiArICBnRWRr aWlOb25EaXNjb3ZlcmFibGVEZXZpY2VQcm90b2NvbEd1aWQNCj4gKyAgZ0VmaURldmljZVBhdGhQ cm90b2NvbEd1aWQgICAgICAgICAgICAgICAgICAgICMjIFRPX1NUQVJUDQo+ICsgIGdFZmlQY2lJ b1Byb3RvY29sR3VpZCAgICAgICAgICAgICAgICAgICAgICAgICAjIyBUT19TVEFSVA0KPiArICBn RWZpU2RNbWNQYXNzVGhydVByb3RvY29sR3VpZCAgICAgICAgICAgICAgICAgIyMgQllfU1RBUlQN Cj4gKyAgZ1BsYXRmb3JtRHdNbWNQcm90b2NvbEd1aWQNCj4gKw0KPiArW1VzZXJFeHRlbnNpb25z LlRpYW5vQ29yZS4iRXh0cmFGaWxlcyJdDQo+ICsgIER3TW1jSGNEeGVFeHRyYS51bmkNCj4gZGlm ZiAtLWdpdCBhL0VtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01tY0hjRHhlLmggYi9F bWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRHdNbWNIY0R4ZS5oDQo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uYjc4M2Q5ODMwMzI1DQo+IC0tLSAvZGV2 L251bGwNCj4gKysrIGIvRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0R3TW1jSGNEeGUu aA0KPiBAQCAtMCwwICsxLDgxNyBAQA0KPiArLyoqIEBmaWxlDQo+ICsNCj4gKyAgUHJvdmlkZXMg c29tZSBkYXRhIHN0cnVjdHVyZSBkZWZpbml0aW9ucyB1c2VkIGJ5IHRoZSBEZXNpZ253YXJlIFNE L01NQw0KPiArICBob3N0IGNvbnRyb2xsZXIgZHJpdmVyLg0KPiArDQo+ICsgIENvcHlyaWdodCAo YykgMjAxNSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiAr ICBDb3B5cmlnaHQgKEMpIDIwMTgsIExpbmFybyBMdGQuIEFsbCByaWd0aHMgcmVzZXJ2ZWQuPEJS Pg0KPiArDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMg YXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZQ0KPiArICB1bmRlciB0aGUgdGVybXMgYW5k IGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMNCj4g KyAgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91 bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBo cA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElD RU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQ UkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiAr DQo+ICsqKi8NCj4gKw0KPiArI2lmbmRlZiBfRFdfTU1DX0hDX0RYRV9IXw0KPiArI2RlZmluZSBf RFdfTU1DX0hDX0RYRV9IXw0KPiArDQo+ICsjaW5jbHVkZSA8VWVmaS5oPg0KPiArDQo+ICsjaW5j bHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ICsNCj4gKyNpbmNsdWRlIDxQcm90b2NvbC9Db21w b25lbnROYW1lLmg+DQo+ICsjaW5jbHVkZSA8UHJvdG9jb2wvQ29tcG9uZW50TmFtZTIuaD4NCj4g KyNpbmNsdWRlIDxQcm90b2NvbC9EZXZpY2VJby5oPg0KPiArI2luY2x1ZGUgPFByb3RvY29sL0Ry aXZlckJpbmRpbmcuaD4NCj4gKyNpbmNsdWRlIDxQcm90b2NvbC9TZE1tY1Bhc3NUaHJ1Lmg+DQo+ ICsNCj4gKyNpbmNsdWRlICJEd01tY0hjaS5oIg0KPiArDQo+ICtleHRlcm4gRUZJX0NPTVBPTkVO VF9OQU1FX1BST1RPQ09MICBnRHdNbWNIY0NvbXBvbmVudE5hbWU7DQo+ICtleHRlcm4gRUZJX0NP TVBPTkVOVF9OQU1FMl9QUk9UT0NPTCBnRHdNbWNIY0NvbXBvbmVudE5hbWUyOw0KPiArZXh0ZXJu IEVGSV9EUklWRVJfQklORElOR19QUk9UT0NPTCAgZ0R3TW1jSGNEcml2ZXJCaW5kaW5nOw0KPiAr DQo+ICsjZGVmaW5lIERXX01NQ19IQ19QUklWQVRFX1NJR05BVFVSRSAgU0lHTkFUVVJFXzMyICgn ZCcsICd3JywgJ3MnLCAnZCcpDQo+ICsNCj4gKyNkZWZpbmUgRFdfTU1DX0hDX1BSSVZBVEVfRlJP TV9USElTKGEpIFwNCj4gKyAgICBDUihhLCBEV19NTUNfSENfUFJJVkFURV9EQVRBLCBQYXNzVGhy dSwgRFdfTU1DX0hDX1BSSVZBVEVfU0lHTkFUVVJFKQ0KPiArDQo+ICsvLw0KPiArLy8gR2VuZXJp YyB0aW1lIG91dCB2YWx1ZSwgMSBtaWNyb3NlY29uZCBhcyB1bml0Lg0KPiArLy8NCj4gKyNkZWZp bmUgRFdfTU1DX0hDX0dFTkVSSUNfVElNRU9VVCAgICAgKDEgKiAxMDAwICogMTAwMCkNCj4gKw0K PiArLy8NCj4gKy8vIFNEL01NQyBhc3luYyB0cmFuc2ZlciB0aW1lciBpbnRlcnZhbCwgc2V0IGJ5 IGV4cGVyaWVuY2UuDQo+ICsvLyBUaGUgdW5pdCBpcyAxMDB1cywgdGFrZXMgMW1zIGFzIGludGVy dmFsLg0KPiArLy8NCj4gKyNkZWZpbmUgRFdfTU1DX0hDX0FTWU5DX1RJTUVSICAgICAgICAgRUZJ X1RJTUVSX1BFUklPRF9NSUxMSVNFQ09ORFMoMSkNCj4gKy8vDQo+ICsvLyBTRC9NTUMgcmVtb3Zh YmxlIGRldmljZSBlbnVtZXJhdGlvbiB0aW1lciBpbnRlcnZhbCwgc2V0IGJ5IGV4cGVyaWVuY2Uu DQo+ICsvLyBUaGUgdW5pdCBpcyAxMDB1cywgdGFrZXMgMTAwbXMgYXMgaW50ZXJ2YWwuDQo+ICsv Lw0KPiArI2RlZmluZSBEV19NTUNfSENfRU5VTV9USU1FUiAgICAgICAgICBFRklfVElNRVJfUEVS SU9EX01JTExJU0VDT05EUygxMDApDQo+ICsNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgQk9P TEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlOw0KPiArICBFRklfU0RfTU1D X1NMT1RfVFlQRSAgICAgICAgICAgICAgICBTbG90VHlwZTsNCj4gKyAgQk9PTEVBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTWVkaWFQcmVzZW50Ow0KPiArICBCT09MRUFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplZDsNCj4gKyAgU0RfTU1DX0NBUkRfVFlQRSAg ICAgICAgICAgICAgICAgICAgQ2FyZFR5cGU7DQo+ICt9IERXX01NQ19IQ19TTE9UOw0KPiArDQo+ ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFNpZ25hdHVyZTsNCj4gKw0KPiArICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAg ICAgICBDb250cm9sbGVySGFuZGxlOw0KPiArDQo+ICsgIC8vIE1taW8gYmFzZSBhZGRyZXNzDQo+ ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldkJhc2U7DQo+ICsNCj4g KyAgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAgUGFzc1RocnU7DQo+ICsNCj4g KyAgUExBVEZPUk1fRFdfTU1DX1BST1RPQ09MICAgICAgICAgICAgKlBsYXRmb3JtRHdNbWM7DQo+ ICsgIC8vDQo+ICsgIC8vIFRoZSBmaWVsZCBpcyB1c2VkIHRvIHJlY29yZCB0aGUgcHJldmlvdXMg c2xvdCBpbiBHZXROZXh0U2xvdCgpLg0KPiArICAvLw0KPiArICBVSU5UOCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQcmV2aW91c1Nsb3Q7DQo+ICsgIC8vDQo+ICsgIC8vIEZvciBOb24t YmxvY2tpbmcgb3BlcmF0aW9uLg0KPiArICAvLw0KPiArICBFRklfRVZFTlQgICAgICAgICAgICAg ICAgICAgICAgICAgICBUaW1lckV2ZW50Ow0KPiArICAvLw0KPiArICAvLyBGb3IgU2QgcmVtb3Zh YmxlIGRldmljZSBlbnVtZXJhdGlvbi4NCj4gKyAgLy8NCj4gKyAgRUZJX0VWRU5UICAgICAgICAg ICAgICAgICAgICAgICAgICAgQ29ubmVjdEV2ZW50Ow0KPiArICBMSVNUX0VOVFJZICAgICAgICAg ICAgICAgICAgICAgICAgICBRdWV1ZTsNCj4gKw0KPiArICBEV19NTUNfSENfU0xPVCAgICAgICAg ICAgICAgICAgICAgICBTbG90W0RXX01NQ19IQ19NQVhfU0xPVF07DQo+ICsgIERXX01NQ19IQ19T TE9UX0NBUCAgICAgICAgICAgICAgICAgIENhcGFiaWxpdHlbRFdfTU1DX0hDX01BWF9TTE9UXTsN Cj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4Q3VycmVudFtEV19N TUNfSENfTUFYX1NMT1RdOw0KPiArDQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIENvbnRyb2xsZXJWZXJzaW9uOw0KPiArfSBEV19NTUNfSENfUFJJVkFURV9EQVRBOw0K PiArDQo+ICsjZGVmaW5lIERXX01NQ19IQ19UUkJfU0lHICAgICAgICAgICAgIFNJR05BVFVSRV8z MiAoJ0QnLCAnVCcsICdSJywgJ0InKQ0KPiArDQo+ICsvLw0KPiArLy8gVFJCIChUcmFuc2ZlciBS ZXF1ZXN0IEJsb2NrKSBjb250YWlucyBpbmZvcm1hdGlvbiBmb3IgdGhlIGNtZCByZXF1ZXN0Lg0K PiArLy8NCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgU2lnbmF0dXJlOw0KPiArICBMSVNUX0VOVFJZICAgICAgICAgICAgICAgICAg ICAgICAgICBUcmJMaXN0Ow0KPiArDQo+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFNsb3Q7DQo+ICsgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJs b2NrU2l6ZTsNCj4gKw0KPiArICBFRklfU0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAq UGFja2V0Ow0KPiArICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqRGF0YTsN Cj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YUxlbjsNCj4gKyAg Qk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZDsNCj4gKyAgRUZJX1BIWVNJ Q0FMX0FERFJFU1MgICAgICAgICAgICAgICAgRGF0YVBoeTsNCj4gKyAgVk9JRCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKkRhdGFNYXA7DQo+ICsgIERXX01NQ19IQ19UUkFOU0ZFUl9N T0RFICAgICAgICAgICAgIE1vZGU7DQo+ICsNCj4gKyAgRUZJX0VWRU5UICAgICAgICAgICAgICAg ICAgICAgICAgICAgRXZlbnQ7DQo+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFN0YXJ0ZWQ7DQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRp bWVvdXQ7DQo+ICsNCj4gKyAgRFdfTU1DX0hDX0RNQV9ERVNDX0xJTkUgICAgICAgICAgICAgKkRt YURlc2M7DQo+ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgICAgICAgICAgIERtYURlc2NQ aHk7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERtYURlc2NQYWdl czsNCj4gKyAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkRtYU1hcDsNCj4g Kw0KPiArICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VGaWZvOw0KPiAr ICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VCRTsgICAgICAgICAgICAg ICAgICAvLyBCaWctZW5kaWFuDQo+ICsNCj4gKyAgRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAg ICAgICAgICAgKlByaXZhdGU7DQo+ICt9IERXX01NQ19IQ19UUkI7DQo+ICsNCj4gKyNkZWZpbmUg RFdfTU1DX0hDX1RSQl9GUk9NX1RISVMoYSkgXA0KPiArICAgIENSKGEsIERXX01NQ19IQ19UUkIs IFRyYkxpc3QsIERXX01NQ19IQ19UUkJfU0lHKQ0KPiArDQo+ICsvLw0KPiArLy8gVGFzayBmb3Ig Tm9uLWJsb2NraW5nIG1vZGUuDQo+ICsvLw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBVSU5U MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaWduYXR1cmU7DQo+ICsgIExJU1RfRU5U UlkgICAgICAgICAgICAgICAgICAgICAgICAgIExpbms7DQo+ICsNCj4gKyAgVUlOVDggICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgU2xvdDsNCj4gKyAgRUZJX1NEX01NQ19QQVNTX1RIUlVf Q09NTUFORF9QQUNLRVQgKlBhY2tldDsNCj4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSXNTdGFydDsNCj4gKyAgRUZJX0VWRU5UICAgICAgICAgICAgICAgICAgICAgICAg ICAgRXZlbnQ7DQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHJ5 VGltZXM7DQo+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZmluaXRl V2FpdDsNCj4gKyAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKk1hcDsNCj4g KyAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKk1hcEFkZHJlc3M7DQo+ICt9 IERXX01NQ19IQ19RVUVVRTsNCj4gKw0KPiArLy8NCj4gKy8vIFByb3RvdHlwZXMNCj4gKy8vDQo+ ICsvKioNCj4gKyAgRXhlY3V0ZSBjYXJkIGlkZW50aWZpY2F0aW9uIHByb2NlZHVyZS4NCj4gKw0K PiArICBAcGFyYW1baW5dIFByaXZhdGUgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hD X1BSSVZBVEVfREFUQSBpbnN0YW5jZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgIFRoZSBjYXJkIGlzIGlkZW50aWZpZWQgY29ycmVjdGx5Lg0KPiArICBAcmV0dmFsIE90aGVy cyAgICAgICAgICAgIFRoZSBjYXJkIGNhbid0IGJlIGlkZW50aWZpZWQuDQo+ICsNCj4gKyoqLw0K PiArdHlwZWRlZg0KPiArRUZJX1NUQVRVUw0KPiArKCpEV01NQ19DQVJEX1RZUEVfREVURUNUX1JP VVRJTkUpICgNCj4gKyAgSU4gRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAgICAqUHJp dmF0ZQ0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyAgU2VuZHMgU0QgY29tbWFuZCB0byBhbiBT RCBjYXJkIHRoYXQgaXMgYXR0YWNoZWQgdG8gdGhlIFNEIGNvbnRyb2xsZXIuDQo+ICsNCj4gKyAg VGhlIFBhc3NUaHJ1KCkgZnVuY3Rpb24gc2VuZHMgdGhlIFNEIGNvbW1hbmQgc3BlY2lmaWVkIGJ5 IFBhY2tldCB0byB0aGUgU0QNCj4gKyAgY2FyZCBzcGVjaWZpZWQgYnkgU2xvdC4NCj4gKw0KPiAr ICBJZiBQYWNrZXQgaXMgc3VjY2Vzc2Z1bGx5IHNlbnQgdG8gdGhlIFNEIGNhcmQsIHRoZW4gRUZJ X1NVQ0NFU1MgaXMgcmV0dXJuZWQuDQo+ICsNCj4gKyAgSWYgYSBkZXZpY2UgZXJyb3Igb2NjdXJz IHdoaWxlIHNlbmRpbmcgdGhlIFBhY2tldCwgdGhlbiBFRklfREVWSUNFX0VSUk9SIGlzDQo+ICsg IHJldHVybmVkLg0KPiArDQo+ICsgIElmIFNsb3QgaXMgbm90IGluIGEgdmFsaWQgcmFuZ2UgZm9y IHRoZSBTRCBjb250cm9sbGVyLCB0aGVuDQo+ICsgIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBpcyBy ZXR1cm5lZC4NCj4gKw0KPiArICBJZiBQYWNrZXQgZGVmaW5lcyBhIGRhdGEgY29tbWFuZCBidXQg Ym90aCBJbkRhdGFCdWZmZXIgYW5kIE91dERhdGFCdWZmZXIgYXJlDQo+ICsgIE5VTEwsIEVGSV9J TlZBTElEX1BBUkFNRVRFUiBpcyByZXR1cm5lZC4NCj4gKw0KPiArICBAcGFyYW1baW5dICAgICBU aGlzICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RP Q09MDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiArICBA cGFyYW1baW5dICAgICBTbG90ICAgICAgICAgICBUaGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNh cmQgdG8gc2VuZCB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFu ZCB0by4NCj4gKyAgQHBhcmFtW2luLG91dF0gUGFja2V0ICAgICAgICAgQSBwb2ludGVyIHRvIHRo ZSBTRCBjb21tYW5kIGRhdGEgc3RydWN0dXJlLg0KPiArICBAcGFyYW1baW5dICAgICBFdmVudCAg ICAgICAgICBJZiBFdmVudCBpcyBOVUxMLCBibG9ja2luZyBJL08gaXMgcGVyZm9ybWVkLiBJZg0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudCBpcyBub3QgTlVMTCwgdGhl biBub25ibG9ja2luZyBJL08gaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGVyZm9ybWVkLCBhbmQgRXZlbnQgd2lsbCBiZSBzaWduYWxlZCB3aGVuIHRoZQ0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrZXQgY29tcGxldGVzLg0KPiArDQo+ICsgIEBy ZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBTRCBDb21tYW5kIFBhY2tldCB3YXMgc2Vu dCBieSB0aGUgaG9zdC4NCj4gKyAgQHJldHZhbCBFRklfREVWSUNFX0VSUk9SICAgICAgQSBkZXZp Y2UgZXJyb3Igb2NjdXJyZWQgd2hpbGUgYXR0ZW1wdGluZyB0byBzZW5kDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRoZSBTRCBjb21tYW5kIFBhY2tldC4NCj4gKyAgQHJldHZh bCBFRklfSU5WQUxJRF9QQVJBTUVURVIgUGFja2V0LCBTbG90LCBvciB0aGUgY29udGVudHMgb2Yg dGhlIFBhY2tldCBpcw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlk Lg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBQYWNrZXQgZGVmaW5lcyBhIGRh dGEgY29tbWFuZCBidXQgYm90aA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ bkRhdGFCdWZmZXIgYW5kIE91dERhdGFCdWZmZXIgYXJlIE5VTEwuDQo+ICsgIEByZXR2YWwgRUZJ X05PX01FRElBICAgICAgICAgIFNEIERldmljZSBub3QgcHJlc2VudCBpbiB0aGUgU2xvdC4NCj4g KyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgVGhlIGNvbW1hbmQgZGVzY3JpYmVkIGJ5 IHRoZSBTRCBDb21tYW5kIFBhY2tldA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBob3N0IGNvbnRyb2xsZXIuDQo+ICsgIEByZXR2YWwg RUZJX0JBRF9CVUZGRVJfU0laRSAgIFRoZSBJblRyYW5zZmVyTGVuZ3RoIG9yIE91dFRyYW5zZmVy TGVuZ3RoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VlZHMgdGhlIGxp bWl0IHN1cHBvcnRlZCBieSBTRCBjYXJkICggaS5lLiBpZg0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0aGUgbnVtYmVyIG9mIGJ5dGVzIGV4Y2VlZCB0aGUgTGFzdCBMQkEpLg0K PiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArRHdNbWNQYXNzVGhydVBh c3NUaHJ1ICgNCj4gKyAgSU4gICAgIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAgICAg ICAgKlRoaXMsDQo+ICsgIElOICAgICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFNsb3QsDQo+ICsgIElOIE9VVCBFRklfU0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tF VCAgICpQYWNrZXQsDQo+ICsgIElOICAgICBFRklfRVZFTlQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEV2ZW50ICAgIE9QVElPTkFMDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBVc2Vk IHRvIHJldHJpZXZlIG5leHQgc2xvdCBudW1iZXJzIHN1cHBvcnRlZCBieSB0aGUgU0QgY29udHJv bGxlci4gVGhlDQo+ICsgIGZ1bmN0aW9uIHJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYWxsIGF2 YWlsYWJsZSBzbG90cyAocG9wdWxhdGVkIG9yDQo+ICsgIG5vdC1wb3B1bGF0ZWQpLg0KPiArDQo+ ICsgIFRoZSBHZXROZXh0U2xvdCgpIGZ1bmN0aW9uIHJldHJpZXZlcyB0aGUgbmV4dCBzbG90IG51 bWJlciBvbiBhbiBTRCBjb250cm9sbGVyLg0KPiArICBJZiBvbiBpbnB1dCBTbG90IGlzIDB4RkYs IHRoZW4gdGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBmaXJzdCBzbG90IG9uIHRoZSBTRA0KPiArICBj b250cm9sbGVyIGlzIHJldHVybmVkLg0KPiArDQo+ICsgIElmIFNsb3QgaXMgYSBzbG90IG51bWJl ciB0aGF0IHdhcyByZXR1cm5lZCBvbiBhIHByZXZpb3VzIGNhbGwgdG8NCj4gKyAgR2V0TmV4dFNs b3QoKSwgdGhlbiB0aGUgc2xvdCBudW1iZXIgb2YgdGhlIG5leHQgc2xvdCBvbiB0aGUgU0QgY29u dHJvbGxlciBpcw0KPiArICByZXR1cm5lZC4NCj4gKw0KPiArICBJZiBTbG90IGlzIG5vdCAweEZG IGFuZCBTbG90IHdhcyBub3QgcmV0dXJuZWQgb24gYSBwcmV2aW91cyBjYWxsIHRvDQo+ICsgIEdl dE5leHRTbG90KCksIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBpcyByZXR1cm5lZC4NCj4gKw0KPiAr ICBJZiBTbG90IGlzIHRoZSBzbG90IG51bWJlciBvZiB0aGUgbGFzdCBzbG90IG9uIHRoZSBTRCBj b250cm9sbGVyLCB0aGVuDQo+ICsgIEVGSV9OT1RfRk9VTkQgaXMgcmV0dXJuZWQuDQo+ICsNCj4g KyAgQHBhcmFtW2luXSAgICAgVGhpcyAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklfU0Rf TU1NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbixvdXRdIFNsb3QgICAgICAgICAgIE9uIGlucHV0 LCBhIHBvaW50ZXIgdG8gYSBzbG90IG51bWJlciBvbiB0aGUgU0QNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29udHJvbGxlci4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT24gb3V0cHV0LCBhIHBvaW50ZXIgdG8gdGhlIG5leHQgc2xvdCBudW1iZXIgb24N Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFNEIGNvbnRyb2xsZXIuDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuIGlucHV0IHZhbHVlIG9mIDB4RkYg cmV0cmlldmVzIHRoZSBmaXJzdCBzbG90DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG51bWJlciBvbiB0aGUgU0QgY29udHJvbGxlci4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICBUaGUgbmV4dCBzbG90IG51bWJlciBvbiB0aGUgU0QgY29udHJvbGxl ciB3YXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZWQgaW4gU2xv dC4NCj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhlcmUgYXJlIG5vIG1vcmUg c2xvdHMgb24gdGhpcyBTRCBjb250cm9sbGVyLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BB UkFNRVRFUiBTbG90IGlzIG5vdCAweEZGIGFuZCBTbG90IHdhcyBub3QgcmV0dXJuZWQgb24gYQ0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyBjYWxsIHRvIEdldE5l eHRTbG90KCkuDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtEd01t Y1Bhc3NUaHJ1R2V0TmV4dFNsb3QgKA0KPiArICBJTiAgICAgRUZJX1NEX01NQ19QQVNTX1RIUlVf UFJPVE9DT0wgICAgICAgICpUaGlzLA0KPiArICBJTiBPVVQgVUlOVDggICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICpTbG90DQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBVc2VkIHRv IGFsbG9jYXRlIGFuZCBidWlsZCBhIGRldmljZSBwYXRoIG5vZGUgZm9yIGFuIFNEIGNhcmQgb24g dGhlIFNEDQo+ICsgIGNvbnRyb2xsZXIuDQo+ICsNCj4gKyAgVGhlIEJ1aWxkRGV2aWNlUGF0aCgp IGZ1bmN0aW9uIGFsbG9jYXRlcyBhbmQgYnVpbGRzIGEgc2luZ2xlIGRldmljZSBub2RlDQo+ICsg IGZvciB0aGUgU0QNCj4gKyAgY2FyZCBzcGVjaWZpZWQgYnkgU2xvdC4NCj4gKw0KPiArICBJZiB0 aGUgU0QgY2FyZCBzcGVjaWZpZWQgYnkgU2xvdCBpcyBub3QgcHJlc2VudCBvbiB0aGUgU0QgY29u dHJvbGxlciwgdGhlbg0KPiArICBFRklfTk9UX0ZPVU5EIGlzIHJldHVybmVkLg0KPiArDQo+ICsg IElmIERldmljZVBhdGggaXMgTlVMTCwgdGhlbiBFRklfSU5WQUxJRF9QQVJBTUVURVIgaXMgcmV0 dXJuZWQuDQo+ICsNCj4gKyAgSWYgdGhlcmUgYXJlIG5vdCBlbm91Z2ggcmVzb3VyY2VzIHRvIGFs bG9jYXRlIHRoZSBkZXZpY2UgcGF0aCBub2RlLCB0aGVuDQo+ICsgIEVGSV9PVVRfT0ZfUkVTT1VS Q0VTIGlzIHJldHVybmVkLg0KPiArDQo+ICsgIE90aGVyd2lzZSwgRGV2aWNlUGF0aCBpcyBhbGxv Y2F0ZWQgd2l0aCB0aGUgYm9vdCBzZXJ2aWNlIEFsbG9jYXRlUG9vbCgpLCB0aGUNCj4gKyAgY29u dGVudHMgb2YgRGV2aWNlUGF0aCBhcmUgaW5pdGlhbGl6ZWQgdG8gZGVzY3JpYmUgdGhlIFNEIGNh cmQgc3BlY2lmaWVkIGJ5DQo+ICsgIFNsb3QsIGFuZCBFRklfU1VDQ0VTUyBpcyByZXR1cm5lZC4N Cj4gKw0KPiArICBAcGFyYW1baW5dICAgICBUaGlzICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhl IEVGSV9TRF9NTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtW2luXSAgICAgU2xvdCAgICAgICAgICAg U3BlY2lmaWVzIHRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCBmb3INCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggYSBkZXZpY2UgcGF0aCBub2RlIGlzIHRvIGJl IGFsbG9jYXRlZCBhbmQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHQu DQo+ICsgIEBwYXJhbVtpbixvdXRdIERldmljZVBhdGggICAgIEEgcG9pbnRlciB0byBhIHNpbmds ZSBkZXZpY2UgcGF0aCBub2RlIHRoYXQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGVzY3JpYmVzIHRoZSBTRCBjYXJkIHNwZWNpZmllZCBieSBTbG90LiBUaGlzDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBh bGxvY2F0aW5nIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIg RGV2aWNlUGF0aCB3aXRoIHRoZSBib290IHNlcnZpY2UNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQWxsb2NhdGVQb29sKCkuIEl0IGlzIHRoZSBjYWxsZXIncyByZXNwb25zaWJp LQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXR5IHRvIGZyZWUgRGV2aWNl UGF0aCB3aGVuIHRoZSBjYWxsZXIgaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZmluaXNoZWQgd2l0aCBEZXZpY2VQYXRoLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgICAgICAgIFRoZSBkZXZpY2UgcGF0aCBub2RlIHRoYXQgZGVzY3JpYmVzIHRoZSBTRCBj YXJkDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBieSBTbG90 IHdhcyBhbGxvY2F0ZWQgYW5kIHJldHVybmVkIGluDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIERldmljZVBhdGguDQo+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAg IFRoZSBTRCBjYXJkIHNwZWNpZmllZCBieSBTbG90IGRvZXMgbm90IGV4aXN0IG9uDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBTRCBjb250cm9sbGVyLg0KPiArICBAcmV0 dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBEZXZpY2VQYXRoIGlzIE5VTEwuDQo+ICsgIEByZXR2 YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIFRoZXJlIGFyZSBub3QgZW5vdWdoIHJlc291cmNlcyB0 byBhbGxvY2F0ZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2VQYXRo Lg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArRHdNbWNQYXNzVGhy dUJ1aWxkRGV2aWNlUGF0aCAoDQo+ICsgIElOICAgICBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9U T0NPTCAgICAgICAqVGhpcywNCj4gKyAgSU4gICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFNsb3QsDQo+ICsgIElOIE9VVCBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAg ICAgICAgICAqKkRldmljZVBhdGgNCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgIFRoaXMgZnVu Y3Rpb24gcmV0cmlldmVzIGFuIFNEIGNhcmQgc2xvdCBudW1iZXIgYmFzZWQgb24gdGhlIGlucHV0 IGRldmljZSBwYXRoLg0KPiArDQo+ICsgIFRoZSBHZXRTbG90TnVtYmVyKCkgZnVuY3Rpb24gcmV0 cmlldmVzIHNsb3QgbnVtYmVyIGZvciB0aGUgU0QgY2FyZCBzcGVjaWZpZWQNCj4gKyAgYnkgdGhl IERldmljZVBhdGggbm9kZS4gSWYgRGV2aWNlUGF0aCBpcyBOVUxMLCBFRklfSU5WQUxJRF9QQVJB TUVURVIgaXMNCj4gKyAgcmV0dXJuZWQuDQo+ICsNCj4gKyAgSWYgRGV2aWNlUGF0aCBpcyBub3Qg YSBkZXZpY2UgcGF0aCBub2RlIHR5cGUgdGhhdCB0aGUgU0QgUGFzcyBUaHJ1IGRyaXZlcg0KPiAr ICBzdXBwb3J0cywgRUZJX1VOU1VQUE9SVEVEIGlzIHJldHVybmVkLg0KPiArDQo+ICsgIEBwYXJh bVtpbl0gIFRoaXMgICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX1NEX01NQ19QQVNT X1RIUlVfUFJPVE9DT0wNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFu Y2UuDQo+ICsgIEBwYXJhbVtpbl0gIERldmljZVBhdGggICAgICAgIEEgcG9pbnRlciB0byB0aGUg ZGV2aWNlIHBhdGggbm9kZSB0aGF0IGRlc2NyaWJlcw0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhIFNEIGNhcmQgb24gdGhlIFNEIGNvbnRyb2xsZXIuDQo+ICsgIEBwYXJhbVtv dXRdIFNsb3QgICAgICAgICAgICAgIE9uIHJldHVybiwgcG9pbnRzIHRvIHRoZSBzbG90IG51bWJl ciBvZiBhbiBTRA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkIG9uIHRo ZSBTRCBjb250cm9sbGVyLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAg IFNEIGNhcmQgc2xvdCBudW1iZXIgaXMgcmV0dXJuZWQgaW4gU2xvdC4NCj4gKyAgQHJldHZhbCBF RklfSU5WQUxJRF9QQVJBTUVURVIgU2xvdCBvciBEZXZpY2VQYXRoIGlzIE5VTEwuDQo+ICsgIEBy ZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgIERldmljZVBhdGggaXMgbm90IGEgZGV2aWNlIHBh dGggbm9kZSB0eXBlIHRoYXQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhl IFNEIFBhc3MgVGhydSBkcml2ZXIgc3VwcG9ydHMuDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRV Uw0KPiArRUZJQVBJDQo+ICtEd01tY1Bhc3NUaHJ1R2V0U2xvdE51bWJlciAoDQo+ICsgIElOICBF RklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICAgICAqVGhpcywNCj4gKyAgSU4gIEVG SV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAgICAgICpEZXZpY2VQYXRoLA0KPiArICBP VVQgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlNsb3QNCj4gKyAgKTsN Cj4gKw0KPiArLyoqDQo+ICsgIFJlc2V0cyBhbiBTRCBjYXJkIHRoYXQgaXMgY29ubmVjdGVkIHRv IHRoZSBTRCBjb250cm9sbGVyLg0KPiArDQo+ICsgIFRoZSBSZXNldERldmljZSgpIGZ1bmN0aW9u IHJlc2V0cyB0aGUgU0QgY2FyZCBzcGVjaWZpZWQgYnkgU2xvdC4NCj4gKw0KPiArICBJZiB0aGlz IFNEIGNvbnRyb2xsZXIgZG9lcyBub3Qgc3VwcG9ydCBhIGRldmljZSByZXNldCBvcGVyYXRpb24s DQo+ICsgIEVGSV9VTlNVUFBPUlRFRCBpcyByZXR1cm5lZC4NCj4gKw0KPiArICBJZiBTbG90IGlz IG5vdCBpbiBhIHZhbGlkIHNsb3QgbnVtYmVyIGZvciB0aGlzIFNEIGNvbnRyb2xsZXIsDQo+ICsg IEVGSV9JTlZBTElEX1BBUkFNRVRFUiBpcyByZXR1cm5lZC4NCj4gKw0KPiArICBJZiB0aGUgZGV2 aWNlIHJlc2V0IG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQsIEVGSV9TVUNDRVNTIGlzIHJldHVybmVk Lg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIFRoaXMgICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0 aGUgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gIFNsb3QgICAgICAgICAgICAg IFNwZWNpZmllcyB0aGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gYmUNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXQuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklf U1VDQ0VTUyAgICAgICAgICAgVGhlIFNEIGNhcmQgc3BlY2lmaWVkIGJ5IFNsb3Qgd2FzIHJlc2V0 Lg0KPiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICBUaGUgU0QgY29udHJvbGxlciBk b2VzIG5vdCBzdXBwb3J0IGEgZGV2aWNlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlc2V0IG9wZXJhdGlvbi4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIg U2xvdCBudW1iZXIgaXMgaW52YWxpZC4NCj4gKyAgQHJldHZhbCBFRklfTk9fTUVESUEgICAgICAg ICAgU0QgRGV2aWNlIG5vdCBwcmVzZW50IGluIHRoZSBTbG90Lg0KPiArICBAcmV0dmFsIEVGSV9E RVZJQ0VfRVJST1IgICAgICBUaGUgcmVzZXQgY29tbWFuZCBmYWlsZWQgZHVlIHRvIGEgZGV2aWNl IGVycm9yDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtEd01tY1Bh c3NUaHJ1UmVzZXREZXZpY2UgKA0KPiArICBJTiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NP TCAgICAgICAgICAgKlRoaXMsDQo+ICsgIElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBTbG90DQo+ICsgICk7DQo+ICsNCj4gKy8vDQo+ICsvLyBEcml2ZXIgbW9kZWwg cHJvdG9jb2wgaW50ZXJmYWNlcw0KPiArLy8NCj4gKy8qKg0KPiArICBUZXN0cyB0byBzZWUgaWYg dGhpcyBkcml2ZXIgc3VwcG9ydHMgYSBnaXZlbiBjb250cm9sbGVyLiBJZiBhIGNoaWxkIGRldmlj ZSBpcw0KPiArICBwcm92aWRlZCwgaXQgZnVydGhlciB0ZXN0cyB0byBzZWUgaWYgdGhpcyBkcml2 ZXIgc3VwcG9ydHMgY3JlYXRpbmcgYSBoYW5kbGUNCj4gKyAgZm9yIHRoZSBzcGVjaWZpZWQgY2hp bGQgZGV2aWNlLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHRvIHNlZSBpZiB0aGUg ZHJpdmVyIHNwZWNpZmllZCBieSBUaGlzIHN1cHBvcnRzIHRoZQ0KPiArICBkZXZpY2Ugc3BlY2lm aWVkIGJ5IENvbnRyb2xsZXJIYW5kbGUuIERyaXZlcnMgd2lsbCB0eXBpY2FsbHkgdXNlIHRoZSBk ZXZpY2UNCj4gKyAgcGF0aCBhdHRhY2hlZCB0byBDb250cm9sbGVySGFuZGxlIGFuZC9vciB0aGUg c2VydmljZXMgZnJvbSB0aGUgYnVzIEkvTw0KPiArICBhYnN0cmFjdGlvbiBhdHRhY2hlZCB0byBD b250cm9sbGVySGFuZGxlIHRvIGRldGVybWluZSBpZiB0aGUgZHJpdmVyIHN1cHBvcnRzDQo+ICsg IENvbnRyb2xsZXJIYW5kbGUuIFRoaXMgZnVuY3Rpb24gbWF5IGJlIGNhbGxlZCBtYW55IHRpbWVz IGR1cmluZyBwbGF0Zm9ybQ0KPiArICBpbml0aWFsaXphdGlvbi4gSW4gb3JkZXIgdG8gcmVkdWNl IGJvb3QgdGltZXMsIHRoZSB0ZXN0cyBwZXJmb3JtZWQgYnkgdGhpcw0KPiArICBmdW5jdGlvbiBt dXN0IGJlIHZlcnkgc21hbGwsIGFuZCB0YWtlIGFzIGxpdHRsZSB0aW1lIGFzIHBvc3NpYmxlIHRv IGV4ZWN1dGUuDQo+ICsgIFRoaXMgZnVuY3Rpb24gbXVzdCBub3QgY2hhbmdlIHRoZSBzdGF0ZSBv ZiBhbnkgaGFyZHdhcmUgZGV2aWNlcywgYW5kIHRoaXMNCj4gKyAgZnVuY3Rpb24gbXVzdCBiZSBh d2FyZSB0aGF0IHRoZSBkZXZpY2Ugc3BlY2lmaWVkIGJ5IENvbnRyb2xsZXJIYW5kbGUgbWF5DQo+ ICsgIGFscmVhZHkgYmUgbWFuYWdlZCBieSB0aGUgc2FtZSBkcml2ZXIgb3IgYSBkaWZmZXJlbnQg ZHJpdmVyLiBUaGlzIGZ1bmN0aW9uDQo+ICsgIG11c3QgbWF0Y2ggaXRzIGNhbGxzIHRvIEFsbG9j YXRlUGFnZXMoKSB3aXRoIEZyZWVQYWdlcygpLCBBbGxvY2F0ZVBvb2woKSB3aXRoDQo+ICsgIEZy ZWVQb29sKCksIGFuZCBPcGVuUHJvdG9jb2woKSB3aXRoIENsb3NlUHJvdG9jb2woKS4NCj4gKyAg U2luY2UgQ29udHJvbGxlckhhbmRsZSBtYXkgaGF2ZSBiZWVuIHByZXZpb3VzbHkgc3RhcnRlZCBi eSB0aGUgc2FtZSBkcml2ZXIsIGlmDQo+ICsgIGEgcHJvdG9jb2wgaXMgYWxyZWFkeSBpbiB0aGUg b3BlbmVkIHN0YXRlLCB0aGVuIGl0IG11c3Qgbm90IGJlIGNsb3NlZCB3aXRoDQo+ICsgIENsb3Nl UHJvdG9jb2woKS4gVGhpcyBpcyByZXF1aXJlZCB0byBndWFyYW50ZWUgdGhlIHN0YXRlIG9mIENv bnRyb2xsZXJIYW5kbGUNCj4gKyAgaXMgbm90IG1vZGlmaWVkIGJ5IHRoaXMgZnVuY3Rpb24uDQo+ ICsNCj4gKyAgQHBhcmFtW2luXSAgVGhpcyAgICAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIHRo ZSBFRklfRFJJVkVSX0JJTkRJTkdfUFJPVE9DT0wNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gIENvbnRyb2xsZXJIYW5kbGUg ICAgIFRoZSBoYW5kbGUgb2YgdGhlIGNvbnRyb2xsZXIgdG8gdGVzdC4gVGhpcw0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGUgbXVzdCBzdXBwb3J0IGEgcHJvdG9j b2wgaW50ZXJmYWNlIHRoYXQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3VwcGxpZXMgYW4gSS9PIGFic3RyYWN0aW9uIHRvIHRoZSBkcml2ZXIuDQo+ICsgIEBwYXJhbVtp bl0gIFJlbWFpbmluZ0RldmljZVBhdGggIEEgcG9pbnRlciB0byB0aGUgcmVtYWluaW5nIHBvcnRp b24gb2YgYQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UgcGF0 aC4gIFRoaXMgcGFyYW1ldGVyIGlzIGlnbm9yZWQgYnkNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGV2aWNlIGRyaXZlcnMsIGFuZCBpcyBvcHRpb25hbCBmb3IgYnVzDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlcnMuIEZvciBidXMgZHJp dmVycywgaWYgdGhpcyBwYXJhbWV0ZXINCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaXMgbm90IE5VTEwsIHRoZW4gdGhlIGJ1cyBkcml2ZXIgbXVzdCBkZXRlci0NCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluZSBpZiB0aGUgYnVzIGNvbnRyb2xs ZXIgc3BlY2lmaWVkIGJ5DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv bnRyb2xsZXJIYW5kbGUgYW5kIHRoZSBjaGlsZCBjb250cm9sbGVyDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBieSBSZW1haW5pbmdEZXZpY2VQYXRoIGFy ZSBib3RoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBi eSB0aGlzIGJ1cyBkcml2ZXIuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAg ICAgICAgVGhlIGRldmljZSBzcGVjaWZpZWQgYnkgQ29udHJvbGxlckhhbmRsZSBhbmQNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtYWluaW5nRGV2aWNlUGF0aCBpcyBz dXBwb3J0ZWQgYnkgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRy aXZlciBzcGVjaWZpZWQgYnkgVGhpcy4NCj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVE ICAgICAgVGhlIGRldmljZSBzcGVjaWZpZWQgYnkgQ29udHJvbGxlckhhbmRsZSBhbmQNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtYWluaW5nRGV2aWNlUGF0aCBpcyBh bHJlYWR5IGJlaW5nIG1hbmFnZWQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYnkgdGhlIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhpcy4NCj4gKyAgQHJldHZhbCBFRklfQUND RVNTX0RFTklFRCAgICAgICAgVGhlIGRldmljZSBzcGVjaWZpZWQgYnkgQ29udHJvbGxlckhhbmRs ZSBhbmQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtYWluaW5nRGV2 aWNlUGF0aCBpcyBhbHJlYWR5IGJlaW5nIG1hbmFnZWQNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYnkgYSBkaWZmZXJlbnQgZHJpdmVyIG9yIGFuIGFwcGxpY2F0aW9uIHRo YXQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXMgZXhjbHVz aXZlIGFjY2Vzcy4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VycmVu dGx5IG5vdCBpbXBsZW1lbnRlZC4NCj4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAg ICAgVGhlIGRldmljZSBzcGVjaWZpZWQgYnkgQ29udHJvbGxlckhhbmRsZSBhbmQNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtYWluaW5nRGV2aWNlUGF0aCBpcyBub3Qg c3VwcG9ydGVkIGJ5IHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk cml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMuDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQ SQ0KPiArRHdNbWNIY0RyaXZlckJpbmRpbmdTdXBwb3J0ZWQgKA0KPiArICBJTiBFRklfRFJJVkVS X0JJTkRJTkdfUFJPVE9DT0wgKlRoaXMsDQo+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgICAgICAg ICAgICBDb250cm9sbGVyLA0KPiArICBJTiBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgKlJl bWFpbmluZ0RldmljZVBhdGgNCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgIFN0YXJ0cyBhIGRl dmljZSBjb250cm9sbGVyIG9yIGEgYnVzIGNvbnRyb2xsZXIuDQo+ICsNCj4gKyAgVGhlIFN0YXJ0 KCkgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW52b2tlZCBmcm9tIHRoZSBFRkkgYm9vdCBz ZXJ2aWNlDQo+ICsgIENvbm5lY3RDb250cm9sbGVyKCkuDQo+ICsgIEFzIGEgcmVzdWx0LCBtdWNo IG9mIHRoZSBlcnJvciBjaGVja2luZyBvbiB0aGUgcGFyYW1ldGVycyB0byBTdGFydCgpIGhhcyBi ZWVuDQo+ICsgIG1vdmVkIGludG8gdGhpcyBjb21tb24gYm9vdCBzZXJ2aWNlLiBJdCBpcyBsZWdh bCB0byBjYWxsIFN0YXJ0KCkgZnJvbSBvdGhlcg0KPiArICBsb2NhdGlvbnMsDQo+ICsgIGJ1dCB0 aGUgZm9sbG93aW5nIGNhbGxpbmcgcmVzdHJpY3Rpb25zIG11c3QgYmUgZm9sbG93ZWQgb3IgdGhl IHN5c3RlbSBiZWhhdmlvcg0KPiArICB3aWxsIG5vdCBiZSBkZXRlcm1pbmlzdGljLg0KPiArICAx LiBDb250cm9sbGVySGFuZGxlIG11c3QgYmUgYSB2YWxpZCBFRklfSEFORExFLg0KPiArICAyLiBJ ZiBSZW1haW5pbmdEZXZpY2VQYXRoIGlzIG5vdCBOVUxMLCB0aGVuIGl0IG11c3QgYmUgYSBwb2lu dGVyIHRvIGEgbmF0dXJhbC0NCj4gKyAgICAgbHkgYWxpZ25lZCBFRklfREVWSUNFX1BBVEhfUFJP VE9DT0wuDQo+ICsgIDMuIFByaW9yIHRvIGNhbGxpbmcgU3RhcnQoKSwgdGhlIFN1cHBvcnRlZCgp IGZ1bmN0aW9uIGZvciB0aGUgZHJpdmVyIHNwZWNpZmllZA0KPiArICAgICBieSBUaGlzIG11c3Qg aGF2ZSBiZWVuIGNhbGxlZCB3aXRoIHRoZSBzYW1lIGNhbGxpbmcgcGFyYW1ldGVycywgYW5kDQo+ ICsgICAgIFN1cHBvcnRlZCgpIG11c3QgaGF2ZSByZXR1cm5lZCBFRklfU1VDQ0VTUy4NCj4gKw0K PiArICBAcGFyYW1baW5dICBUaGlzICAgICAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVG SV9EUklWRVJfQklORElOR19QUk9UT0NPTA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtW2luXSAgQ29udHJvbGxlckhhbmRsZSAgICAg VGhlIGhhbmRsZSBvZiB0aGUgY29udHJvbGxlciB0byBzdGFydC4gVGhpcw0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGUgbXVzdCBzdXBwb3J0IGEgcHJvdG9jb2wg aW50ZXJmYWNlIHRoYXQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vw cGxpZXMgYW4gSS9PIGFic3RyYWN0aW9uIHRvIHRoZSBkcml2ZXIuDQo+ICsgIEBwYXJhbVtpbl0g IFJlbWFpbmluZ0RldmljZVBhdGggIEEgcG9pbnRlciB0byB0aGUgcmVtYWluaW5nIHBvcnRpb24g b2YgYQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UgcGF0aC4g IFRoaXMgcGFyYW1ldGVyIGlzIGlnbm9yZWQgYnkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGV2aWNlIGRyaXZlcnMsIGFuZCBpcyBvcHRpb25hbCBmb3IgYnVzIGRyaS0N Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVycy4gRm9yIGEgYnVzIGRy aXZlciwgaWYgdGhpcyBwYXJhbWV0ZXIgaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTlVMTCwgdGhlbiBoYW5kbGVzIGZvciBhbGwgdGhlIGNoaWxkcmVuIG9mDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXIgYXJlIGNyZWF0ZWQg YnkgdGhpcyBkcml2ZXIuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElm IHRoaXMgcGFyYW1ldGVyIGlzIG5vdCBOVUxMIGFuZCB0aGUgZmlyc3QNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlIFBhdGggTm9kZSBpcyBub3QgdGhlIEVuZCBv ZiBEZXZpY2UNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aCBOb2Rl LCB0aGVuIG9ubHkgdGhlIGhhbmRsZSBmb3IgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNoaWxkIGRldmljZSBzcGVjaWZpZWQgYnkgdGhlIGZpcnN0IERldmljZQ0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoIE5vZGUgb2YgUmVtYWlu aW5nRGV2aWNlUGF0aCBpcyBjcmVhdGVkDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJ5IHRoaXMgZHJpdmVyLg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJZiB0aGUgZmlyc3QgRGV2aWNlIFBhdGggTm9kZSBvZg0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBSZW1haW5pbmdEZXZpY2VQYXRoIGlzIHRoZSBFbmQgb2YgRGV2 aWNlIFBhdGgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSwgbm8g Y2hpbGQgaGFuZGxlIGlzIGNyZWF0ZWQgYnkgdGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkcml2ZXIuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICAgICAgICAgVGhlIGRldmljZSB3YXMgc3RhcnRlZC4NCj4gKyAgQHJldHZhbCBFRklfREVWSUNF X0VSUk9SICAgICAgICAgVGhlIGRldmljZSBjb3VsZCBub3QgYmUgc3RhcnRlZCBkdWUgdG8gYQ0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UgZXJyb3IuIEN1cnJl bnRseSBub3QgaW1wbGVtZW50ZWQuDQo+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMg ICAgIFRoZSByZXF1ZXN0IGNvdWxkIG5vdCBiZSBjb21wbGV0ZWQgZHVlIHRvIGENCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFjayBvZiByZXNvdXJjZXMuDQo+ICsgIEBy ZXR2YWwgT3RoZXJzICAgICAgICAgICAgICAgICAgIFRoZSBkcml2ZXIgZmFpbGRlZCB0byBzdGFy dCB0aGUgZGV2aWNlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiAr RHdNbWNIY0RyaXZlckJpbmRpbmdTdGFydCAoDQo+ICsgIElOIEVGSV9EUklWRVJfQklORElOR19Q Uk9UT0NPTCAgICAgKlRoaXMsDQo+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAg ICAgQ29udHJvbGxlciwNCj4gKyAgSU4gRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAgICAq UmVtYWluaW5nRGV2aWNlUGF0aA0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyAgU3RvcHMgYSBk ZXZpY2UgY29udHJvbGxlciBvciBhIGJ1cyBjb250cm9sbGVyLg0KPiArDQo+ICsgIFRoZSBTdG9w KCkgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW52b2tlZCBmcm9tIHRoZSBFRkkgYm9vdCBz ZXJ2aWNlDQo+ICsgIERpc2Nvbm5lY3RDb250cm9sbGVyKCkuDQo+ICsgIEFzIGEgcmVzdWx0LCBt dWNoIG9mIHRoZSBlcnJvciBjaGVja2luZyBvbiB0aGUgcGFyYW1ldGVycyB0byBTdG9wKCkgaGFz IGJlZW4NCj4gKyAgbW92ZWQgaW50byB0aGlzIGNvbW1vbiBib290IHNlcnZpY2UuIEl0IGlzIGxl Z2FsIHRvIGNhbGwgU3RvcCgpIGZyb20gb3RoZXINCj4gKyAgbG9jYXRpb25zLCBidXQgdGhlIGZv bGxvd2luZyBjYWxsaW5nIHJlc3RyaWN0aW9ucyBtdXN0IGJlIGZvbGxvd2VkIG9yIHRoZQ0KPiAr ICBzeXN0ZW0gYmVoYXZpb3Igd2lsbCBub3QgYmUgZGV0ZXJtaW5pc3RpYy4NCj4gKyAgMS4gQ29u dHJvbGxlckhhbmRsZSBtdXN0IGJlIGEgdmFsaWQgRUZJX0hBTkRMRSB0aGF0IHdhcyB1c2VkIG9u IGEgcHJldmlvdXMNCj4gKyAgICAgY2FsbCB0byB0aGlzIHNhbWUgZHJpdmVyJ3MgU3RhcnQoKSBm dW5jdGlvbi4NCj4gKyAgMi4gVGhlIGZpcnN0IE51bWJlck9mQ2hpbGRyZW4gaGFuZGxlcyBvZiBD aGlsZEhhbmRsZUJ1ZmZlciBtdXN0IGFsbCBiZSBhIHZhbGlkDQo+ICsgICAgIEVGSV9IQU5ETEUu IEluIGFkZGl0aW9uLCBhbGwgb2YgdGhlc2UgaGFuZGxlcyBtdXN0IGhhdmUgYmVlbiBjcmVhdGVk IGluDQo+ICsgICAgIHRoaXMgZHJpdmVyJ3MgU3RhcnQoKSBmdW5jdGlvbiwgYW5kIHRoZSBTdGFy dCgpIGZ1bmN0aW9uIG11c3QgaGF2ZSBjYWxsZWQNCj4gKyAgICAgT3BlblByb3RvY29sKCkgb24g Q29udHJvbGxlckhhbmRsZSB3aXRoIGFuIEF0dHJpYnV0ZSBvZg0KPiArICAgICBFRklfT1BFTl9Q Uk9UT0NPTF9CWV9DSElMRF9DT05UUk9MTEVSLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIFRoaXMg ICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX0RSSVZFUl9CSU5ESU5HX1BST1RPQ09M DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiArICBAcGFy YW1baW5dICBDb250cm9sbGVySGFuZGxlICBBIGhhbmRsZSB0byB0aGUgZGV2aWNlIGJlaW5nIHN0 b3BwZWQuIFRoZSBoYW5kbGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVz dCBzdXBwb3J0IGEgYnVzIHNwZWNpZmljIEkvTyBwcm90b2NvbCBmb3IgdGhlDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlciB0byB1c2UgdG8gc3RvcCB0aGUgZGV2aWNl Lg0KPiArICBAcGFyYW1baW5dICBOdW1iZXJPZkNoaWxkcmVuICBUaGUgbnVtYmVyIG9mIGNoaWxk IGRldmljZSBoYW5kbGVzIGluDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENo aWxkSGFuZGxlQnVmZmVyLg0KPiArICBAcGFyYW1baW5dICBDaGlsZEhhbmRsZUJ1ZmZlciBBbiBh cnJheSBvZiBjaGlsZCBoYW5kbGVzIHRvIGJlIGZyZWVkLiBNYXkgYmUNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTlVMTCBpZiBOdW1iZXJPZkNoaWxkcmVuIGlzIDAuDQo+ICsN Cj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIGRldmljZSB3YXMgc3RvcHBl ZC4NCj4gKyAgQHJldHZhbCBFRklfREVWSUNFX0VSUk9SICAgICAgVGhlIGRldmljZSBjb3VsZCBu b3QgYmUgc3RvcHBlZCBkdWUgdG8gYSBkZXZpY2UNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZXJyb3IuDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ ICtEd01tY0hjRHJpdmVyQmluZGluZ1N0b3AgKA0KPiArICBJTiAgRUZJX0RSSVZFUl9CSU5ESU5H X1BST1RPQ09MICAgICAqVGhpcywNCj4gKyAgSU4gIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAg ICAgICAgQ29udHJvbGxlciwNCj4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAg ICAgTnVtYmVyT2ZDaGlsZHJlbiwNCj4gKyAgSU4gIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAg ICAgICAgKkNoaWxkSGFuZGxlQnVmZmVyDQo+ICsgICk7DQo+ICsNCj4gKy8vDQo+ICsvLyBFRkkg Q29tcG9uZW50IE5hbWUgRnVuY3Rpb25zDQo+ICsvLw0KPiArLyoqDQo+ICsgIFJldHJpZXZlcyBh IFVuaWNvZGUgc3RyaW5nIHRoYXQgaXMgdGhlIHVzZXIgcmVhZGFibGUgbmFtZSBvZiB0aGUgZHJp dmVyLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gcmV0cmlldmVzIHRoZSB1c2VyIHJlYWRhYmxl IG5hbWUgb2YgYSBkcml2ZXIgaW4gdGhlIGZvcm0gb2YgYQ0KPiArICBVbmljb2RlIHN0cmluZy4g SWYgdGhlIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhpcyBoYXMgYSB1c2VyIHJlYWRhYmxlIG5hbWUg aW4NCj4gKyAgdGhlIGxhbmd1YWdlIHNwZWNpZmllZCBieSBMYW5ndWFnZSwgdGhlbiBhIHBvaW50 ZXIgdG8gdGhlIGRyaXZlciBuYW1lIGlzDQo+ICsgIHJldHVybmVkIGluIERyaXZlck5hbWUsIGFu ZCBFRklfU1VDQ0VTUyBpcyByZXR1cm5lZC4gSWYgdGhlIGRyaXZlciBzcGVjaWZpZWQNCj4gKyAg YnkgVGhpcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBsYW5ndWFnZSBzcGVjaWZpZWQgYnkgTGFuZ3Vh Z2UsDQo+ICsgIHRoZW4gRUZJX1VOU1VQUE9SVEVEIGlzIHJldHVybmVkLg0KPiArDQo+ICsgIEBw YXJhbSAgVGhpc1tpbl0gICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX0NPTVBPTkVO VF9OQU1FMl9QUk9UT0NPTCBvcg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF RklfQ09NUE9ORU5UX05BTUVfUFJPVE9DT0wgaW5zdGFuY2UuDQo+ICsNCj4gKyAgQHBhcmFtICBM YW5ndWFnZVtpbl0gICAgICAgICAgQSBwb2ludGVyIHRvIGEgTnVsbC10ZXJtaW5hdGVkIEFTQ0lJ IHN0cmluZw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSBpbmRpY2F0 aW5nIHRoZSBsYW5ndWFnZS4gVGhpcyBpcyB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGFuZ3VhZ2Ugb2YgdGhlIGRyaXZlciBuYW1lIHRoYXQgdGhlIGNhbGxlciBpcw0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0aW5nLCBhbmQgaXQgbXVz dCBtYXRjaCBvbmUgb2YgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxh bmd1YWdlcyBzcGVjaWZpZWQgaW4gU3VwcG9ydGVkTGFuZ3VhZ2VzLiBUaGUNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIGxhbmd1YWdlcyBzdXBwb3J0ZWQgYnkg YSBkcml2ZXIgaXMgdXANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhl IGRyaXZlciB3cml0ZXIuIExhbmd1YWdlIGlzIHNwZWNpZmllZA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbiBSRkMgNDY0NiBvciBJU08gNjM5LTIgbGFuZ3VhZ2UgY29kZSBm b3JtYXQuDQo+ICsNCj4gKyAgQHBhcmFtICBEcml2ZXJOYW1lW291dF0gICAgICAgQSBwb2ludGVy IHRvIHRoZSBVbmljb2RlIHN0cmluZyB0byByZXR1cm4uDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFRoaXMgVW5pY29kZSBzdHJpbmcgaXMgdGhlIG5hbWUgb2YgdGhlDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhpcyBp biB0aGUgbGFuZ3VhZ2UNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lm aWVkIGJ5IExhbmd1YWdlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAg IFRoZSBVbmljb2RlIHN0cmluZyBmb3IgdGhlIERyaXZlciBzcGVjaWZpZWQgYnkNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBhbmQgdGhlIGxhbmd1YWdlIHNwZWNpZmll ZCBieSBMYW5ndWFnZSB3YXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuZWQgaW4gRHJpdmVyTmFtZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFN RVRFUiBMYW5ndWFnZSBpcyBOVUxMLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFS QU1FVEVSIERyaXZlck5hbWUgaXMgTlVMTC4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9VTlNVUFBP UlRFRCAgICAgICBUaGUgZHJpdmVyIHNwZWNpZmllZCBieSBUaGlzIGRvZXMgbm90IHN1cHBvcnQN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGxhbmd1YWdlIHNwZWNpZmll ZCBieSBMYW5ndWFnZS4NCj4gKw0KPiArKiovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4g K0R3TW1jSGNDb21wb25lbnROYW1lR2V0RHJpdmVyTmFtZSAoDQo+ICsgIElOICBFRklfQ09NUE9O RU5UX05BTUVfUFJPVE9DT0wgICAgICpUaGlzLA0KPiArICBJTiAgQ0hBUjggICAgICAgICAgICAg ICAgICAgICAgICAgICAqTGFuZ3VhZ2UsDQo+ICsgIE9VVCBDSEFSMTYgICAgICAgICAgICAgICAg ICAgICAgICAgICoqRHJpdmVyTmFtZQ0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyAgUmV0cmll dmVzIGEgVW5pY29kZSBzdHJpbmcgdGhhdCBpcyB0aGUgdXNlciByZWFkYWJsZSBuYW1lIG9mIHRo ZSBjb250cm9sbGVyDQo+ICsgIHRoYXQgaXMgYmVpbmcgbWFuYWdlZCBieSBhIGRyaXZlci4NCj4g Kw0KPiArICBUaGlzIGZ1bmN0aW9uIHJldHJpZXZlcyB0aGUgdXNlciByZWFkYWJsZSBuYW1lIG9m IHRoZSBjb250cm9sbGVyIHNwZWNpZmllZCBieQ0KPiArICBDb250cm9sbGVySGFuZGxlIGFuZCBD aGlsZEhhbmRsZSBpbiB0aGUgZm9ybSBvZiBhIFVuaWNvZGUgc3RyaW5nLiBJZiB0aGUNCj4gKyAg ZHJpdmVyIHNwZWNpZmllZCBieSBUaGlzIGhhcyBhIHVzZXIgcmVhZGFibGUgbmFtZSBpbiB0aGUg bGFuZ3VhZ2Ugc3BlY2lmaWVkIGJ5DQo+ICsgIExhbmd1YWdlLCB0aGVuIGEgcG9pbnRlciB0byB0 aGUgY29udHJvbGxlciBuYW1lIGlzIHJldHVybmVkIGluIENvbnRyb2xsZXJOYW1lLA0KPiArICBh bmQgRUZJX1NVQ0NFU1MgaXMgcmV0dXJuZWQuICBJZiB0aGUgZHJpdmVyIHNwZWNpZmllZCBieSBU aGlzIGlzIG5vdCBjdXJyZW50bHkNCj4gKyAgbWFuYWdpbmcgdGhlIGNvbnRyb2xsZXIgc3BlY2lm aWVkIGJ5IENvbnRyb2xsZXJIYW5kbGUgYW5kIENoaWxkSGFuZGxlLA0KPiArICB0aGVuIEVGSV9V TlNVUFBPUlRFRCBpcyByZXR1cm5lZC4gIElmIHRoZSBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMg ZG9lcyBub3QNCj4gKyAgc3VwcG9ydCB0aGUgbGFuZ3VhZ2Ugc3BlY2lmaWVkIGJ5IExhbmd1YWdl LCB0aGVuIEVGSV9VTlNVUFBPUlRFRCBpcyByZXR1cm5lZC4NCj4gKw0KPiArICBAcGFyYW0gIFRo aXNbaW5dICAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9DT01QT05FTlRfTkFNRTJf UFJPVE9DT0wgb3INCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0NPTVBP TkVOVF9OQU1FX1BST1RPQ09MIGluc3RhbmNlLg0KPiArDQo+ICsgIEBwYXJhbSAgQ29udHJvbGxl ckhhbmRsZVtpbl0gIFRoZSBoYW5kbGUgb2YgYSBjb250cm9sbGVyIHRoYXQgdGhlIGRyaXZlcg0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQgYnkgVGhpcyBpcyBt YW5hZ2luZy4gIFRoaXMgaGFuZGxlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNwZWNpZmllcyB0aGUgY29udHJvbGxlciB3aG9zZSBuYW1lIGlzIHRvIGJlDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybmVkLg0KPiArDQo+ICsgIEBwYXJhbSAgQ2hp bGRIYW5kbGVbaW5dICAgICAgIFRoZSBoYW5kbGUgb2YgdGhlIGNoaWxkIGNvbnRyb2xsZXIgdG8g cmV0cmlldmUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG5hbWUgb2Yu ICBUaGlzIGlzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0DQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1heSBiZSBOVUxMLiAgSXQgd2lsbCBiZSBOVUxMIGZvciBkZXZpY2UN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVycy4gIEl0IHdpbGwgYWxz byBiZSBOVUxMIGZvciBhIGJ1cyBkcml2ZXJzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRoYXQgd2lzaCB0byByZXRyaWV2ZSB0aGUgbmFtZSBvZiB0aGUgYnVzDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuICBJdCB3aWxsIG5vdCBiZSBO VUxMIGZvciBhIGJ1cw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXIg dGhhdCB3aXNoZXMgdG8gcmV0cmlldmUgdGhlIG5hbWUgb2YgYQ0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjaGlsZCBjb250cm9sbGVyLg0KPiArDQo+ICsgIEBwYXJhbSAgTGFu Z3VhZ2VbaW5dICAgICAgICAgIEEgcG9pbnRlciB0byBhIE51bGwtdGVybWluYXRlZCBBU0NJSSBz dHJpbmcNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkgaW5kaWNhdGlu ZyB0aGUgbGFuZ3VhZ2UuICBUaGlzIGlzIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsYW5ndWFnZSBvZiB0aGUgZHJpdmVyIG5hbWUgdGhhdCB0aGUgY2FsbGVyIGlzDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RpbmcsIGFuZCBpdCBtdXN0 IG1hdGNoIG9uZSBvZiB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFu Z3VhZ2VzIHNwZWNpZmllZCBpbiBTdXBwb3J0ZWRMYW5ndWFnZXMuIFRoZQ0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2YgbGFuZ3VhZ2VzIHN1cHBvcnRlZCBieSBh IGRyaXZlciBpcyB1cA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUg ZHJpdmVyIHdyaXRlci4gTGFuZ3VhZ2UgaXMgc3BlY2lmaWVkIGluDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFJGQyA0NjQ2IG9yIElTTyA2MzktMiBsYW5ndWFnZSBjb2RlIGZv cm1hdC4NCj4gKw0KPiArICBAcGFyYW0gIENvbnRyb2xsZXJOYW1lW291dF0gICBBIHBvaW50ZXIg dG8gdGhlIFVuaWNvZGUgc3RyaW5nIHRvIHJldHVybi4NCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVGhpcyBVbmljb2RlIHN0cmluZyBpcyB0aGUgbmFtZSBvZiB0aGUNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlciBzcGVjaWZpZWQgYnkgQ29u dHJvbGxlckhhbmRsZSBhbmQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hp bGRIYW5kbGUgaW4gdGhlIGxhbmd1YWdlIHNwZWNpZmllZCBieQ0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMYW5ndWFnZSBmcm9tIHRoZSBwb2ludCBvZiB2aWV3IG9mIHRoZSBk cml2ZXINCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIGJ5IFRo aXMuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIFVuaWNvZGUg c3RyaW5nIGZvciB0aGUgdXNlciByZWFkYWJsZSBuYW1lIGluDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRoZSBsYW5ndWFnZSBzcGVjaWZpZWQgYnkgTGFuZ3VhZ2UgZm9yIHRo ZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXIgc3BlY2lmaWVkIGJ5 IFRoaXMgd2FzIHJldHVybmVkIGluDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IERyaXZlck5hbWUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQ29u dHJvbGxlckhhbmRsZSBpcyBub3QgYSB2YWxpZCBFRklfSEFORExFLg0KPiArDQo+ICsgIEByZXR2 YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIENoaWxkSGFuZGxlIGlzIG5vdCBOVUxMIGFuZCBpdCBp cyBub3QgYSB2YWxpZA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSEFO RExFLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIExhbmd1YWdlIGlz IE5VTEwuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQ29udHJvbGxl ck5hbWUgaXMgTlVMTC4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICBU aGUgZHJpdmVyIHNwZWNpZmllZCBieSBUaGlzIGlzIG5vdCBjdXJyZW50bHkNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdpbmcgdGhlIGNvbnRyb2xsZXIgc3BlY2lmaWVk IGJ5DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXJIYW5kbGUg YW5kIENoaWxkSGFuZGxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAg IFRoZSBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMgZG9lcyBub3Qgc3VwcG9ydA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbGFuZ3VhZ2Ugc3BlY2lmaWVkIGJ5IExhbmd1 YWdlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArRHdNbWNIY0Nv bXBvbmVudE5hbWVHZXRDb250cm9sbGVyTmFtZSAoDQo+ICsgIElOICBFRklfQ09NUE9ORU5UX05B TUVfUFJPVE9DT0wgICAgICpUaGlzLA0KPiArICBJTiAgRUZJX0hBTkRMRSAgICAgICAgICAgICAg ICAgICAgICBDb250cm9sbGVySGFuZGxlLA0KPiArICBJTiAgRUZJX0hBTkRMRSAgICAgICAgICAg ICAgICAgICAgICBDaGlsZEhhbmRsZSwgT1BUSU9OQUwNCj4gKyAgSU4gIENIQVI4ICAgICAgICAg ICAgICAgICAgICAgICAgICAgKkxhbmd1YWdlLA0KPiArICBPVVQgQ0hBUjE2ICAgICAgICAgICAg ICAgICAgICAgICAgICAqKkNvbnRyb2xsZXJOYW1lDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiAr ICBDcmVhdGUgYSBuZXcgVFJCIGZvciB0aGUgU0QvTU1DIGNtZCByZXF1ZXN0Lg0KPiArDQo+ICsg IEBwYXJhbVtpbl0gUHJpdmF0ZSAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBEV19NTUNfSENfUFJJ VkFURV9EQVRBIGluc3RhbmNlLg0KPiArICBAcGFyYW1baW5dIFNsb3QgICAgICAgICAgIFRoZSBz bG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5kIHRoZSBjb21tYW5kDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdG8uDQo+ICsgIEBwYXJhbVtpbl0gUGFja2V0ICAgICAgICAg QSBwb2ludGVyIHRvIHRoZSBTRCBjb21tYW5kIGRhdGEgc3RydWN0dXJlLg0KPiArICBAcGFyYW1b aW5dIEV2ZW50ICAgICAgICAgIElmIEV2ZW50IGlzIE5VTEwsIGJsb2NraW5nIEkvTyBpcyBwZXJm b3JtZWQuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgRXZlbnQgaXMgbm90IE5V TEwsIHRoZW4gbm9uYmxvY2tpbmcgSS9PIGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGVyZm9ybWVkLCBhbmQgRXZlbnQgd2lsbCBiZSBzaWduYWxlZCB3aGVuIHRoZQ0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2tldCBjb21wbGV0ZXMuDQo+ICsNCj4gKyAgQHJl dHVybiBDcmVhdGVkIFRyYiBvciBOVUxMLg0KPiArDQo+ICsqKi8NCj4gK0RXX01NQ19IQ19UUkIg Kg0KPiArRHdNbWNDcmVhdGVUcmIgKA0KPiArICBJTiBEV19NTUNfSENfUFJJVkFURV9EQVRBICAg ICAgICAgICAgICAqUHJpdmF0ZSwNCj4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU2xvdCwNCj4gKyAgSU4gRUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNL RVQgKlBhY2tldCwNCj4gKyAgSU4gRUZJX0VWRU5UICAgICAgICAgICAgICAgICAgICAgICAgICAg RXZlbnQNCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgIEZyZWUgdGhlIHJlc291cmNlIHVzZWQg YnkgdGhlIFRSQi4NCj4gKw0KPiArICBAcGFyYW1baW5dIFRyYiAgICAgICAgICAgIFRoZSBwb2lu dGVyIHRvIHRoZSBEV19NTUNfSENfVFJCIGluc3RhbmNlLg0KPiArDQo+ICsqKi8NCj4gK1ZPSUQN Cj4gK0R3TW1jRnJlZVRyYiAoDQo+ICsgIElOIERXX01NQ19IQ19UUkIgICAgICAgICAgICpUcmIN Cj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgIENoZWNrIGlmIHRoZSBlbnYgaXMgcmVhZHkgZm9y IGV4ZWN1dGUgc3BlY2lmaWVkIFRSQi4NCj4gKw0KPiArICBAcGFyYW1baW5dIFByaXZhdGUgICAg ICAgIEEgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hDX1BSSVZBVEVfREFUQSBpbnN0YW5jZS4NCj4g KyAgQHBhcmFtW2luXSBUcmIgICAgICAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hD X1RSQiBpbnN0YW5jZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBl bnYgaXMgcmVhZHkgZm9yIFRSQiBleGVjdXRpb24uDQo+ICsgIEByZXR2YWwgRUZJX05PVF9SRUFE WSAgICAgVGhlIGVudiBpcyBub3QgcmVhZHkgZm9yIFRSQiBleGVjdXRpb24uDQo+ICsgIEByZXR2 YWwgT3RoZXJzICAgICAgICAgICAgU29tZSBlcnJvcyBoYXBwZW4uDQo+ICsNCj4gKyoqLw0KPiAr RUZJX1NUQVRVUw0KPiArRHdNbWNDaGVja1RyYkVudiAoDQo+ICsgIElOIERXX01NQ19IQ19QUklW QVRFX0RBVEEgICAgICAgICAgICpQcml2YXRlLA0KPiArICBJTiBEV19NTUNfSENfVFJCICAgICAg ICAgICAgICAgICAgICAqVHJiDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBXYWl0IGZvciB0 aGUgZW52IHRvIGJlIHJlYWR5IGZvciBleGVjdXRlIHNwZWNpZmllZCBUUkIuDQo+ICsNCj4gKyAg QHBhcmFtW2luXSBQcml2YXRlICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19QUklW QVRFX0RBVEEgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gVHJiICAgICAgICAgICAgVGhlIHBv aW50ZXIgdG8gdGhlIERXX01NQ19IQ19UUkIgaW5zdGFuY2UuDQo+ICsNCj4gKyAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICBUaGUgZW52IGlzIHJlYWR5IGZvciBUUkIgZXhlY3V0aW9uLg0KPiAr ICBAcmV0dmFsIEVGSV9USU1FT1VUICAgICAgIFRoZSBlbnYgaXMgbm90IHJlYWR5IGZvciBUUkIg ZXhlY3V0aW9uIGluIHRpbWUuDQo+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgU29tZSBl cnJvcyBoYXBwZW4uDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRHdNbWNXYWl0VHJi RW52ICgNCj4gKyAgSU4gRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAgKlByaXZhdGUs DQo+ICsgIElOIERXX01NQ19IQ19UUkIgICAgICAgICAgICAgICAgICAgICpUcmINCj4gKyAgKTsN Cj4gKw0KPiArLyoqDQo+ICsgIEV4ZWN1dGUgdGhlIHNwZWNpZmllZCBUUkIuDQo+ICsNCj4gKyAg QHBhcmFtW2luXSBQcml2YXRlICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19QUklW QVRFX0RBVEEgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gVHJiICAgICAgICAgICAgVGhlIHBv aW50ZXIgdG8gdGhlIERXX01NQ19IQ19UUkIgaW5zdGFuY2UuDQo+ICsNCj4gKyAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICBUaGUgVFJCIGlzIHNlbnQgdG8gaG9zdCBjb250cm9sbGVyIHN1Y2Nl c3NmdWxseS4NCj4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBTb21lIGVycm9zIGhhcHBl biB3aGVuIHNlbmRpbmcgdGhpcyByZXF1ZXN0IHRvIHRoZQ0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGhvc3QgY29udHJvbGxlci4NCj4gKw0KPiArKiovDQo+ICtFRklfU1RBVFVTDQo+ ICtEd01tY0V4ZWNUcmIgKA0KPiArICBJTiBEV19NTUNfSENfUFJJVkFURV9EQVRBICAgICAgICAg ICAqUHJpdmF0ZSwNCj4gKyAgSU4gRFdfTU1DX0hDX1RSQiAgICAgICAgICAgICAgICAgICAgKlRy Yg0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyAgQ2hlY2sgdGhlIFRSQiBleGVjdXRpb24gcmVz dWx0Lg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gUHJpdmF0ZSAgICAgICAgQSBwb2ludGVyIHRvIHRo ZSBEV19NTUNfSENfUFJJVkFURV9EQVRBIGluc3RhbmNlLg0KPiArICBAcGFyYW1baW5dIFRyYiAg ICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBEV19NTUNfSENfVFJCIGluc3RhbmNlLg0KPiAr DQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIFRSQiBpcyBleGVjdXRlZCBzdWNj ZXNzZnVsbHkuDQo+ICsgIEByZXR2YWwgRUZJX05PVF9SRUFEWSAgICAgVGhlIFRSQiBpcyBub3Qg Y29tcGxldGVkIGZvciBleGVjdXRpb24uDQo+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAg U29tZSBlcnJvcyBoYXBwZW4gd2hlbiBleGVjdXRpbmcgdGhpcyByZXF1ZXN0Lg0KPiArDQo+ICsq Ki8NCj4gK0VGSV9TVEFUVVMNCj4gK0R3TW1jQ2hlY2tUcmJSZXN1bHQgKA0KPiArICBJTiBEV19N TUNfSENfUFJJVkFURV9EQVRBICAgICAgICAgICAqUHJpdmF0ZSwNCj4gKyAgSU4gRFdfTU1DX0hD X1RSQiAgICAgICAgICAgICAgICAgICAgKlRyYg0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyAg V2FpdCBmb3IgdGhlIFRSQiBleGVjdXRpb24gcmVzdWx0Lg0KPiArDQo+ICsgIEBwYXJhbVtpbl0g UHJpdmF0ZSAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBEV19NTUNfSENfUFJJVkFURV9EQVRBIGlu c3RhbmNlLg0KPiArICBAcGFyYW1baW5dIFRyYiAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRo ZSBEV19NTUNfSENfVFJCIGluc3RhbmNlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgVGhlIFRSQiBpcyBleGVjdXRlZCBzdWNjZXNzZnVsbHkuDQo+ICsgIEByZXR2YWwgT3Ro ZXJzICAgICAgICAgICAgU29tZSBlcnJvcyBoYXBwZW4gd2hlbiBleGVjdXRpbmcgdGhpcyByZXF1 ZXN0Lg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0R3TW1jV2FpdFRyYlJlc3VsdCAo DQo+ICsgIElOIERXX01NQ19IQ19QUklWQVRFX0RBVEEgICAgICAgICAgICpQcml2YXRlLA0KPiAr ICBJTiBEV19NTUNfSENfVFJCICAgICAgICAgICAgICAgICAgICAqVHJiDQo+ICsgICk7DQo+ICsN Cj4gKy8qKg0KPiArICBFeGVjdXRlIEVNTUMgZGV2aWNlIGlkZW50aWZpY2F0aW9uIHByb2NlZHVy ZS4NCj4gKw0KPiArICBSZWZlciB0byBFTU1DIEVsZWN0cmljYWwgU3RhbmRhcmQgU3BlYyA1LjEg U2VjdGlvbiA2LjQgZm9yIGRldGFpbHMuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBQcml2YXRlICAg ICAgICBBIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19QUklWQVRFX0RBVEEgaW5zdGFuY2UuDQo+ ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGVyZSBpcyBhIEVNTUMgY2FyZC4N Cj4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGVyZSBpcyBub3QgYSBFTU1DIGNhcmQu DQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRW1tY0lkZW50aWZpY2F0aW9uICgNCj4g KyAgSU4gRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAgICAqUHJpdmF0ZQ0KPiArICAp Ow0KPiArDQo+ICsvKioNCj4gKyAgRXhlY3V0ZSBFTU1DIGRldmljZSBpZGVudGlmaWNhdGlvbiBw cm9jZWR1cmUuDQo+ICsNCj4gKyAgUmVmZXIgdG8gRU1NQyBFbGVjdHJpY2FsIFN0YW5kYXJkIFNw ZWMgNS4xIFNlY3Rpb24gNi40IGZvciBkZXRhaWxzLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gUHJp dmF0ZSAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBEV19NTUNfSENfUFJJVkFURV9EQVRBIGluc3Rh bmNlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlcmUgaXMgYSBFTU1D IGNhcmQuDQo+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlcmUgaXMgbm90IGEgRU1N QyBjYXJkLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK1NkQ2FyZElkZW50aWZpY2F0 aW9uICgNCj4gKyAgSU4gRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAgICAqUHJpdmF0 ZQ0KPiArICApOw0KPiArDQo+ICsjZW5kaWYgLyogX0RXX01NQ19IQ19EWEVfSF8gKi8NCj4gZGlm ZiAtLWdpdCBhL0VtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01tY0hjaS5oIGIvRW1i ZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0R3TW1jSGNpLmgNCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi4xMmVmNThhMzczNjgNCj4gLS0tIC9kZXYvbnVs bA0KPiArKysgYi9FbWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRHdNbWNIY2kuaA0KPiBA QCAtMCwwICsxLDk4NSBAQA0KPiArLyoqIEBmaWxlDQo+ICsNCj4gKyAgUHJvdmlkZXMgc29tZSBk YXRhIHN0cnVjdHVyZSBkZWZpbml0aW9ucyB1c2VkIGJ5IHRoZSBTRC9NTUMgaG9zdCBjb250cm9s bGVyDQo+ICsgIGRyaXZlci4NCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTUsIEludGVsIENv cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyAgQ29weXJpZ2h0IChjKSAy MDE4LCBMaW5hcm8gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKw0KPiArICBUaGlz IHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBsaWNlbnNlZCBhbmQg bWFkZSBhdmFpbGFibGUNCj4gKyAgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRo ZSBCU0QgTGljZW5zZSB3aGljaCBhY2NvbXBhbmllcyB0aGlzDQo+ICsgIGRpc3RyaWJ1dGlvbi4g IFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ICsgIGh0dHA6 Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUg UFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElT IiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBB TlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKw0KPiArKiovDQo+ICsNCj4g KyNpZm5kZWYgX0RXX01NQ19IQ0lfSF8NCj4gKyNkZWZpbmUgX0RXX01NQ19IQ0lfSF8NCj4gKw0K PiArI2luY2x1ZGUgPExpYnJhcnkvQ2FjaGVNYWludGVuYW5jZUxpYi5oPg0KPiArI2luY2x1ZGUg PExpYnJhcnkvVGltZXJMaWIuaD4NCj4gKw0KPiArI2luY2x1ZGUgPFByb3RvY29sL1BsYXRmb3Jt RHdNbWMuaD4NCj4gKw0KPiArLy8NCj4gKy8vIFNEIEhvc3QgQ29udHJvbGxlciBTbG90SW5mbyBS ZWdpc3RlciBPZmZzZXQNCj4gKy8vDQo+ICsjZGVmaW5lIERXX01NQ19IQ19TTE9UX09GRlNFVCAg ICAgICAgIDB4NDANCj4gKw0KPiArI2RlZmluZSBEV19NTUNfSENfTUFYX1NMT1QgICAgICAgICAg ICAxDQo+ICsNCj4gKy8vDQo+ICsvLyBTRCBIb3N0IENvbnRyb2xsZXIgTU1JTyBSZWdpc3RlciBP ZmZzZXQNCj4gKy8vDQo+ICsjZGVmaW5lIERXX01NQ19DVFJMICAgICAgICAgICAgICAgICAgIDB4 MDAwDQo+ICsjZGVmaW5lIERXX01NQ19QV1JFTiAgICAgICAgICAgICAgICAgIDB4MDA0DQo+ICsj ZGVmaW5lIERXX01NQ19DTEtESVYgICAgICAgICAgICAgICAgIDB4MDA4DQo+ICsjZGVmaW5lIERX X01NQ19DTEtTUkMgICAgICAgICAgICAgICAgIDB4MDBjDQo+ICsjZGVmaW5lIERXX01NQ19DTEtF TkEgICAgICAgICAgICAgICAgIDB4MDEwDQo+ICsjZGVmaW5lIERXX01NQ19UTU9VVCAgICAgICAg ICAgICAgICAgIDB4MDE0DQo+ICsjZGVmaW5lIERXX01NQ19DVFlQRSAgICAgICAgICAgICAgICAg IDB4MDE4DQo+ICsjZGVmaW5lIERXX01NQ19CTEtTSVogICAgICAgICAgICAgICAgIDB4MDFjDQo+ ICsjZGVmaW5lIERXX01NQ19CWVRDTlQgICAgICAgICAgICAgICAgIDB4MDIwDQo+ICsjZGVmaW5l IERXX01NQ19JTlRNQVNLICAgICAgICAgICAgICAgIDB4MDI0DQo+ICsjZGVmaW5lIERXX01NQ19D TURBUkcgICAgICAgICAgICAgICAgIDB4MDI4DQo+ICsjZGVmaW5lIERXX01NQ19DTUQgICAgICAg ICAgICAgICAgICAgIDB4MDJjDQo+ICsjZGVmaW5lIERXX01NQ19SRVNQMCAgICAgICAgICAgICAg ICAgIDB4MDMwDQo+ICsjZGVmaW5lIERXX01NQ19SRVNQMSAgICAgICAgICAgICAgICAgIDB4MDM0 DQo+ICsjZGVmaW5lIERXX01NQ19SRVNQMiAgICAgICAgICAgICAgICAgIDB4MDM4DQo+ICsjZGVm aW5lIERXX01NQ19SRVNQMyAgICAgICAgICAgICAgICAgIDB4MDNjDQo+ICsjZGVmaW5lIERXX01N Q19SSU5UU1RTICAgICAgICAgICAgICAgIDB4MDQ0DQo+ICsjZGVmaW5lIERXX01NQ19TVEFUVVMg ICAgICAgICAgICAgICAgIDB4MDQ4DQo+ICsjZGVmaW5lIERXX01NQ19GSUZPVEggICAgICAgICAg ICAgICAgIDB4MDRjDQo+ICsjZGVmaW5lIERXX01NQ19HUElPICAgICAgICAgICAgICAgICAgIDB4 MDU4DQo+ICsjZGVmaW5lIERXX01NQ19ERUJOQ0UgICAgICAgICAgICAgICAgIDB4MDY0DQo+ICsj ZGVmaW5lIERXX01NQ19VU1JJRCAgICAgICAgICAgICAgICAgIDB4MDY4DQo+ICsjZGVmaW5lIERX X01NQ19WRVJJRCAgICAgICAgICAgICAgICAgIDB4MDZjDQo+ICsjZGVmaW5lIERXX01NQ19IQ09O ICAgICAgICAgICAgICAgICAgIDB4MDcwDQo+ICsjZGVmaW5lIERXX01NQ19VSFNSRUcgICAgICAg ICAgICAgICAgIDB4MDc0DQo+ICsjZGVmaW5lIERXX01NQ19CTU9EICAgICAgICAgICAgICAgICAg IDB4MDgwDQo+ICsjZGVmaW5lIERXX01NQ19EQkFERFIgICAgICAgICAgICAgICAgIDB4MDg4DQo+ ICsjZGVmaW5lIERXX01NQ19JRFNUUyAgICAgICAgICAgICAgICAgIDB4MDhjDQo+ICsjZGVmaW5l IERXX01NQ19JRElOVEVOICAgICAgICAgICAgICAgIDB4MDkwDQo+ICsjZGVmaW5lIERXX01NQ19E U0NBRERSICAgICAgICAgICAgICAgIDB4MDk0DQo+ICsjZGVmaW5lIERXX01NQ19CVUZBRERSICAg ICAgICAgICAgICAgIDB4MDk4DQo+ICsjZGVmaW5lIERXX01NQ19DQVJEVEhSQ1RMICAgICAgICAg ICAgIDB4MTAwDQo+ICsjZGVmaW5lIERXX01NQ19VSFNSRUdfRVhUICAgICAgICAgICAgIDB4MTA4 DQo+ICsjZGVmaW5lIERXX01NQ19FTkFCTEVfU0hJRlQgICAgICAgICAgIDB4MTEwDQo+ICsjZGVm aW5lIERXX01NQ19GSUZPX1NUQVJUICAgICAgICAgICAgIDB4MjAwDQo+ICsNCj4gKyNkZWZpbmUg R0VUX0lEU1RTX0RNQUNfRlNNKHgpICAgICAgICAgICAgICAgICAgICgoKHgpID4+IDEzKSAmIDB4 ZikNCj4gKyNkZWZpbmUgSURTVFNfRlNNX0RNQV9JRExFICAgICAgICAgICAgICAgICAgICAgIDAN Cj4gKyNkZWZpbmUgSURTVFNfRlNNX0RNQV9TVVNQRU5EICAgICAgICAgICAgICAgICAgIDENCj4g KyNkZWZpbmUgSURTVFNfRlNNX0RFU0NfUkQgICAgICAgICAgICAgICAgICAgICAgIDINCj4gKyNk ZWZpbmUgSURTVFNfRlNNX0RFU0NfQ0hLICAgICAgICAgICAgICAgICAgICAgIDMNCj4gKyNkZWZp bmUgSURTVFNfRlNNX0RNQV9SRF9SRVFfV0FJVCAgICAgICAgICAgICAgIDQNCj4gKyNkZWZpbmUg SURTVFNfRlNNX0RNQV9XUl9SRVFfV0FJVCAgICAgICAgICAgICAgIDUNCj4gKyNkZWZpbmUgSURT VFNfRlNNX0RNQV9SRCAgICAgICAgICAgICAgICAgICAgICAgIDYNCj4gKyNkZWZpbmUgSURTVFNf RlNNX0RNQV9XUiAgICAgICAgICAgICAgICAgICAgICAgIDcNCj4gKyNkZWZpbmUgSURTVFNfRlNN X0RFU0NfQ0xPU0UgICAgICAgICAgICAgICAgICAgIDgNCj4gKyNkZWZpbmUgSURTVFNfRlNNX01B U0sgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Zg0KPiArDQo+ICsjZGVmaW5lIENNRF9VUERB VEVfQ0xLICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwMjAyMDAwDQo+ICsjZGVmaW5lIENN RF9TVEFSVF9CSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAzMSkNCj4gKw0KPiAr I2RlZmluZSBNTUNfOEJJVF9NT0RFICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEgPDwgMTYp DQo+ICsjZGVmaW5lIE1NQ180QklUX01PREUgICAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8 PCAwKQ0KPiArI2RlZmluZSBNTUNfMUJJVF9NT0RFICAgICAgICAgICAgICAgICAgICAgICAgICAg MA0KPiArDQo+ICsjZGVmaW5lIERXX01NQ19CTE9DS19TSVpFICAgICAgICAgICAgICAgICAgICAg ICA1MTINCj4gKw0KPiArI2RlZmluZSBDTURfSU5ERVhfTUFTSyAgICAgICAgICAgICAgICAgICAg ICAgICAgMHgzRg0KPiArI2RlZmluZSBCSVRfQ01EX1JFU1BPTlNFX0VYUEVDVCAgICAgICAgICAg ICAgICAgKDEgPDwgNikNCj4gKyNkZWZpbmUgQklUX0NNRF9MT05HX1JFU1BPTlNFICAgICAgICAg ICAgICAgICAgICgxIDw8IDcpDQo+ICsjZGVmaW5lIEJJVF9DTURfQ0hFQ0tfUkVTUE9OU0VfQ1JD ICAgICAgICAgICAgICAoMSA8PCA4KQ0KPiArI2RlZmluZSBCSVRfQ01EX0RBVEFfRVhQRUNURUQg ICAgICAgICAgICAgICAgICAgKDEgPDwgOSkNCj4gKyNkZWZpbmUgQklUX0NNRF9SRUFEICAgICAg ICAgICAgICAgICAgICAgICAgICAgICgwIDw8IDEwKQ0KPiArI2RlZmluZSBCSVRfQ01EX1dSSVRF ICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEgPDwgMTApDQo+ICsjZGVmaW5lIEJJVF9DTURf QkxPQ0tfVFJBTlNGRVIgICAgICAgICAgICAgICAgICAoMCA8PCAxMSkNCj4gKyNkZWZpbmUgQklU X0NNRF9TVFJFQU1fVFJBTlNGRVIgICAgICAgICAgICAgICAgICgxIDw8IDExKQ0KPiArI2RlZmlu ZSBCSVRfQ01EX1NFTkRfQVVUT19TVE9QICAgICAgICAgICAgICAgICAgKDEgPDwgMTIpDQo+ICsj ZGVmaW5lIEJJVF9DTURfV0FJVF9QUlZEQVRBX0NPTVBMRVRFICAgICAgICAgICAoMSA8PCAxMykN Cj4gKyNkZWZpbmUgQklUX0NNRF9TVE9QX0FCT1JUX0NNRCAgICAgICAgICAgICAgICAgICgxIDw8 IDE0KQ0KPiArI2RlZmluZSBCSVRfQ01EX1NFTkRfSU5JVCAgICAgICAgICAgICAgICAgICAgICAg KDEgPDwgMTUpDQo+ICsjZGVmaW5lIEJJVF9DTURfVVBEQVRFX0NMT0NLX09OTFkgICAgICAgICAg ICAgICAoMSA8PCAyMSkNCj4gKyNkZWZpbmUgQklUX0NNRF9SRUFEX0NFQVRBX0RFVklDRSAgICAg ICAgICAgICAgICgxIDw8IDIyKQ0KPiArI2RlZmluZSBCSVRfQ01EX0NDU19FWFBFQ1RFRCAgICAg ICAgICAgICAgICAgICAgKDEgPDwgMjMpDQo+ICsjZGVmaW5lIEJJVF9DTURfRU5BQkxFX0JPT1Qg ICAgICAgICAgICAgICAgICAgICAoMSA8PCAyNCkNCj4gKyNkZWZpbmUgQklUX0NNRF9FWFBFQ1Rf Qk9PVF9BQ0sgICAgICAgICAgICAgICAgICgxIDw8IDI1KQ0KPiArI2RlZmluZSBCSVRfQ01EX0RJ U0FCTEVfQk9PVCAgICAgICAgICAgICAgICAgICAgKDEgPDwgMjYpDQo+ICsjZGVmaW5lIEJJVF9D TURfTUFOREFUT1JZX0JPT1QgICAgICAgICAgICAgICAgICAoMCA8PCAyNykNCj4gKyNkZWZpbmUg QklUX0NNRF9BTFRFUk5BVEVfQk9PVCAgICAgICAgICAgICAgICAgICgxIDw8IDI3KQ0KPiArI2Rl ZmluZSBCSVRfQ01EX1ZPTFRfU1dJVENIICAgICAgICAgICAgICAgICAgICAgKDEgPDwgMjgpDQo+ ICsjZGVmaW5lIEJJVF9DTURfVVNFX0hPTERfUkVHICAgICAgICAgICAgICAgICAgICAoMSA8PCAy OSkNCj4gKyNkZWZpbmUgQklUX0NNRF9TVEFSVCAgICAgICAgICAgICAgICAgICAgICAgICAgICgx IDw8IDMxKQ0KPiArDQo+ICsjZGVmaW5lIENNRF9JTkRFWCh4KSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoKHgpICYgQ01EX0lOREVYX01BU0spDQo+ICsNCj4gKyNkZWZpbmUgRFdfTU1DX0lO VF9FQkUgICAgICAgICAgICAgICAgICAgICAgICAgICgxIDw8IDE1KSAgICAgICAvKiBFbmQtYml0 IEVyciAqLw0KPiArI2RlZmluZSBEV19NTUNfSU5UX1NCRSAgICAgICAgICAgICAgICAgICAgICAg ICAgKDEgPDwgMTMpICAgICAgIC8qIFN0YXJ0LWJpdCAgRXJyICovDQo+ICsjZGVmaW5lIERXX01N Q19JTlRfSExFICAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAxMikgICAgICAgLyogSGFy ZHdhcmUtbG9jayBFcnIgKi8NCj4gKyNkZWZpbmUgRFdfTU1DX0lOVF9GUlVOICAgICAgICAgICAg ICAgICAgICAgICAgICgxIDw8IDExKSAgICAgICAvKiBGSUZPIFVOL09WIFJVTiAqLw0KPiArI2Rl ZmluZSBEV19NTUNfSU5UX0RSVCAgICAgICAgICAgICAgICAgICAgICAgICAgKDEgPDwgOSkgICAg ICAgIC8qIERhdGEgdGltZW91dCAqLw0KPiArI2RlZmluZSBEV19NTUNfSU5UX1JUTyAgICAgICAg ICAgICAgICAgICAgICAgICAgKDEgPDwgOCkgICAgICAgIC8qIFJlc3BvbnNlIHRpbWVvdXQgKi8N Cj4gKyNkZWZpbmUgRFdfTU1DX0lOVF9EQ1JDICAgICAgICAgICAgICAgICAgICAgICAgICgxIDw8 IDcpICAgICAgICAvKiBEYXRhIENSQyBlcnIgKi8NCj4gKyNkZWZpbmUgRFdfTU1DX0lOVF9SQ1JD ICAgICAgICAgICAgICAgICAgICAgICAgICgxIDw8IDYpICAgICAgICAvKiBSZXNwb25zZSBDUkMg ZXJyICovDQo+ICsjZGVmaW5lIERXX01NQ19JTlRfUlhEUiAgICAgICAgICAgICAgICAgICAgICAg ICAoMSA8PCA1KSAgICAgICAgLyogUmVjZWl2ZSBGSUZPIGRhdGEgcmVxdWVzdCAqLw0KPiArI2Rl ZmluZSBEV19NTUNfSU5UX1RYRFIgICAgICAgICAgICAgICAgICAgICAgICAgKDEgPDwgNCkgICAg ICAgIC8qIFRyYW5zbWl0IEZJRk8gZGF0YSByZXF1ZXN0ICovDQo+ICsjZGVmaW5lIERXX01NQ19J TlRfRFRPICAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAzKSAgICAgICAgLyogRGF0YSB0 cmFucyBvdmVyICovDQo+ICsjZGVmaW5lIERXX01NQ19JTlRfQ01EX0RPTkUgICAgICAgICAgICAg ICAgICAgICAoMSA8PCAyKSAgICAgICAgLyogQ29tbWFuZCBkb25lICovDQo+ICsjZGVmaW5lIERX X01NQ19JTlRfUkUgICAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAxKSAgICAgICAgLyog UmVzcG9uc2UgZXJyb3IgKi8NCj4gKw0KPiArI2RlZmluZSBEV19NTUNfSURNQUNfREVTMF9ESUMg ICAgICAgICAgICAgICAgICAgKDEgPDwgMSkNCj4gKyNkZWZpbmUgRFdfTU1DX0lETUFDX0RFUzBf TEQgICAgICAgICAgICAgICAgICAgICgxIDw8IDIpDQo+ICsjZGVmaW5lIERXX01NQ19JRE1BQ19E RVMwX0ZTICAgICAgICAgICAgICAgICAgICAoMSA8PCAzKQ0KPiArI2RlZmluZSBEV19NTUNfSURN QUNfREVTMF9DSCAgICAgICAgICAgICAgICAgICAgKDEgPDwgNCkNCj4gKyNkZWZpbmUgRFdfTU1D X0lETUFDX0RFUzBfRVIgICAgICAgICAgICAgICAgICAgICgxIDw8IDUpDQo+ICsjZGVmaW5lIERX X01NQ19JRE1BQ19ERVMwX0NFUyAgICAgICAgICAgICAgICAgICAoMSA8PCAzMCkNCj4gKyNkZWZp bmUgRFdfTU1DX0lETUFDX0RFUzBfT1dOICAgICAgICAgICAgICAgICAgICgxIDw8IDMxKQ0KPiAr I2RlZmluZSBEV19NTUNfSURNQUNfREVTMV9CUzEoeCkgICAgICAgICAgICAgICAgKCh4KSAmIDB4 MWZmZikNCj4gKyNkZWZpbmUgRFdfTU1DX0lETUFDX0RFUzJfQlMyKHgpICAgICAgICAgICAgICAg ICgoKHgpICYgMHgxZmZmKSA8PCAxMykNCj4gKyNkZWZpbmUgRFdfTU1DX0lETUFDX1NXUkVTRVQg ICAgICAgICAgICAgICAgICAgICgxIDw8IDApDQo+ICsjZGVmaW5lIERXX01NQ19JRE1BQ19GQiAg ICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAxKQ0KPiArI2RlZmluZSBEV19NTUNfSURNQUNf RU5BQkxFICAgICAgICAgICAgICAgICAgICAgKDEgPDwgNykNCj4gKw0KPiArI2RlZmluZSBEV19N TUNfQ1RSTF9SRVNFVCAgICAgICAgICAgICAgICAgICAgICAgKDEgPDwgMCkNCj4gKyNkZWZpbmUg RFdfTU1DX0NUUkxfRklGT19SRVNFVCAgICAgICAgICAgICAgICAgICgxIDw8IDEpDQo+ICsjZGVm aW5lIERXX01NQ19DVFJMX0RNQV9SRVNFVCAgICAgICAgICAgICAgICAgICAoMSA8PCAyKQ0KPiAr I2RlZmluZSBEV19NTUNfQ1RSTF9JTlRfRU4gICAgICAgICAgICAgICAgICAgICAgKDEgPDwgNCkN Cj4gKyNkZWZpbmUgRFdfTU1DX0NUUkxfRE1BX0VOICAgICAgICAgICAgICAgICAgICAgICgxIDw8 IDUpDQo+ICsjZGVmaW5lIERXX01NQ19DVFJMX0lETUFDX0VOICAgICAgICAgICAgICAgICAgICAo MSA8PCAyNSkNCj4gKyNkZWZpbmUgRFdfTU1DX0NUUkxfUkVTRVRfQUxMICAgICAgICAgICAgICAg ICAgIChEV19NTUNfQ1RSTF9SRVNFVCB8IERXX01NQ19DVFJMX0ZJRk9fUkVTRVQgfCBEV19NTUNf Q1RSTF9ETUFfUkVTRVQpDQo+ICsNCj4gKyNkZWZpbmUgRFdfTU1DX1NUU19EQVRBX0JVU1kgICAg ICAgICAgICAgICAgICAgICgxIDw8IDkpDQo+ICsjZGVmaW5lIERXX01NQ19TVFNfRklGT19DT1VO VCh4KSAgICAgICAgICAgICAgICAoKCh4KSAmIDB4MWZmZikgPDwgMTcpICAgLyogTnVtYmVyIG9m IGZpbGxlZCBsb2NhdGlvbnMgaW4gRklGTyAqLw0KPiArI2RlZmluZSBHRVRfU1RTX0ZJRk9fQ09V TlQoeCkgICAgICAgICAgICAgICAgICAgKCgoeCkgPj4gMTcpICYgMHgxZmZmKQ0KPiArI2RlZmlu ZSBEV19NTUNfU1RTX0ZJRk9fRlVMTCh4KSAgICAgICAgICAgICAgICAgKCgoeCkgPj4gMykgJiAx KQ0KPiArDQo+ICsjZGVmaW5lIERXX01NQ19CTU9EX1NXUiAgICAgICAgICAgICAgICAgICAgICAg ICAoMSA8PCAwKSAgICAgICAgIC8qIFNvZnR3YXJlIFJlc2V0ICovDQo+ICsjZGVmaW5lIERXX01N Q19CTU9EX0ZCICAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAxKSAgICAgICAgIC8qIEZp eCBCdXJzdCAqLw0KPiArI2RlZmluZSBEV19NTUNfQk1PRF9ERSAgICAgICAgICAgICAgICAgICAg ICAgICAgKDEgPDwgNykgICAgICAgICAvKiBJRE1BQyBFbmFibGUgKi8NCj4gKw0KPiArI2RlZmlu ZSBEV19NTUNfSURTVFNfVEkgICAgICAgICAgICAgICAgICAgICAgICAgKDEgPDwgMCkgICAgICAg ICAvKiBUcmFuc21pdCBJbnRlcnJ1cHQgKi8NCj4gKyNkZWZpbmUgRFdfTU1DX0lEU1RTX1JJICAg ICAgICAgICAgICAgICAgICAgICAgICgxIDw8IDEpICAgICAgICAgLyogUmVjZWl2ZSBJbnRlcnJ1 cHQgKi8NCj4gKw0KPiArI2RlZmluZSBEV19NTUNfRklGT19UV01BUksoeCkgICAgICAgICAgICAg ICAgICAgKCh4KSAmIDB4ZmZmKQ0KPiArI2RlZmluZSBEV19NTUNfRklGT19SV01BUksoeCkgICAg ICAgICAgICAgICAgICAgKCgoeCkgJiAweDFmZikgPDwgMTYpDQo+ICsjZGVmaW5lIERXX01NQ19E TUFfQlVSU1RfU0laRSh4KSAgICAgICAgICAgICAgICAoKCh4KSAmIDB4NykgPDwgMjgpDQo+ICsN Cj4gKyNkZWZpbmUgRFdfTU1DX0NBUkRfUkRfVEhSKHgpICAgICAgICAgICAgICAgICAgICgoKHgp ICYgMHhmZmYpIDw8IDE2KQ0KPiArI2RlZmluZSBEV19NTUNfQ0FSRF9SRF9USFJfRU4gICAgICAg ICAgICAgICAgICAgKDEgPDwgMCkNCj4gKw0KPiArI2RlZmluZSBVSFNfRERSX01PREUgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKDEgPDwgMTYpDQo+ICsNCj4gKyNkZWZpbmUgR0VOQ0xLX0RJ ViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcNCj4gKw0KPiArI2RlZmluZSBEV19NTUNf R1BJT19DTEtfRElWKHgpICAgICAgICAgICAgICAgICAgKCgoeCkgJiAweGYpIDw8IDgpDQo+ICsj ZGVmaW5lIERXX01NQ19HUElPX1VTRV9TQU1QTEVfRExZKHgpICAgICAgICAgICAoKCh4KSAmIDEp IDw8IDEzKQ0KPiArI2RlZmluZSBEV19NTUNfR1BJT19DTEtfRU5BQkxFICAgICAgICAgICAgICAg ICAgQklUMTYNCj4gKw0KPiArI2RlZmluZSBVSFNFWFRfU0FNUExFX1BIQVNFKHgpICAgICAgICAg ICAgICAgICAgKCgoeCkgJiAweDFmKSA8PCAxNikNCj4gKyNkZWZpbmUgVUhTRVhUX1NBTVBMRV9E UlZQSEFTRSh4KSAgICAgICAgICAgICAgICgoKHgpICYgMHgxZikgPDwgMjEpDQo+ICsjZGVmaW5l IFVIU0VYVF9TQU1QTEVfRExZKHgpICAgICAgICAgICAgICAgICAgICAoKCh4KSAmIDB4MWYpIDw8 IDI2KQ0KPiArDQo+ICsjZGVmaW5lIERXTU1DX0RNQV9CVUZfU0laRSAgICAgICAgICAgICAgICAg ICAgICAoNTEyICogOCkNCj4gKyNkZWZpbmUgRFdNTUNfRklGT19USFJFU0hPTEQgICAgICAgICAg ICAgICAgICAgIDE2DQo+ICsNCj4gKyNkZWZpbmUgRFdNTUNfSU5JVF9DTE9DS19GUkVRICAgICAg ICAgICAgICAgICAgIDQwMCAgICAgICAgICAgICAgLyogS0h6ICovDQo+ICsNCj4gKy8vDQo+ICsv LyBUaGUgdHJhbnNmZXIgbW9kZXMgc3VwcG9ydGVkIGJ5IFNEIEhvc3QgQ29udHJvbGxlcg0KPiAr Ly8gU2ltcGxpZmllZCBTcGVjIDMuMCBUYWJsZSAxLTINCj4gKy8vDQo+ICt0eXBlZGVmIGVudW0g ew0KPiArICBTZE1tY05vRGF0YSwNCj4gKyAgU2RNbWNQaW9Nb2RlLA0KPiArICBTZE1tY1NkbWFN b2RlLA0KPiArICBTZE1tY0FkbWFNb2RlDQo+ICt9IERXX01NQ19IQ19UUkFOU0ZFUl9NT0RFOw0K PiArDQo+ICsvLw0KPiArLy8gVGhlIG1heGltdW0gZGF0YSBsZW5ndGggb2YgZWFjaCBkZXNjcmlw dG9yIGxpbmUNCj4gKy8vDQo+ICsjZGVmaW5lIEFETUFfTUFYX0RBVEFfUEVSX0xJTkUgICAgIDB4 MTAwMDANCj4gKw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBVSU5UMzIgICBEZXMwOw0KPiAr ICBVSU5UMzIgICBEZXMxOw0KPiArICBVSU5UMzIgICBEZXMyOw0KPiArICBVSU5UMzIgICBEZXMz Ow0KPiArfSBEV19NTUNfSENfRE1BX0RFU0NfTElORTsNCj4gKw0KPiArI2RlZmluZSBTRF9NTUNf U0RNQV9CT1VOREFSWSAgICAgICAgICA1MTIgKiAxMDI0DQo+ICsjZGVmaW5lIFNEX01NQ19TRE1B X1JPVU5EX1VQKHgsIG4pICAgICgoKHgpICsgbikgJiB+KG4gLSAxKSkNCj4gKw0KPiArdHlwZWRl ZiBzdHJ1Y3Qgew0KPiArICBVSU5UOCAgICBGaXJzdEJhcjozOyAgICAgICAgLy8gYml0IDA6Mg0K PiArICBVSU5UOCAgICBSZXNlcnZlZDoxOyAgICAgICAgLy8gYml0IDMNCj4gKyAgVUlOVDggICAg U2xvdE51bTozOyAgICAgICAgIC8vIGJpdCA0OjYNCj4gKyAgVUlOVDggICAgUmVzZXJ2ZWQxOjE7 ICAgICAgIC8vIGJpdCA3DQo+ICt9IERXX01NQ19IQ19TTE9UX0lORk87DQo+ICsNCj4gKy8qKg0K PiArICBEdW1wIHRoZSBjb250ZW50IG9mIFNEL01NQyBob3N0IGNvbnRyb2xsZXIncyBDYXBhYmls aXR5IFJlZ2lzdGVyLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIFNsb3QgICAgICAgICAgICBUaGUg c2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0aGUgY29tbWFuZCB0by4NCj4gKyAg QHBhcmFtW2luXSAgQ2FwYWJpbGl0eSAgICAgIFRoZSBidWZmZXIgdG8gc3RvcmUgdGhlIGNhcGFi aWxpdHkgZGF0YS4NCj4gKw0KPiArKiovDQo+ICtWT0lEDQo+ICtEdW1wQ2FwYWJpbGl0eVJlZyAo DQo+ICsgIElOIFVJTlQ4ICAgICAgICAgICAgICAgIFNsb3QsDQo+ICsgIElOIERXX01NQ19IQ19T TE9UX0NBUCAgICpDYXBhYmlsaXR5DQo+ICsgICk7DQo+ICsNCj4gKyNpZiAwDQo+ICsvKioNCj4g KyAgUmVhZCBTbG90SW5mbyByZWdpc3RlciBmcm9tIFNEL01NQyBob3N0IGNvbnRyb2xsZXIgcGNp IGNvbmZpZyBzcGFjZS4NCj4gKw0KPiArICBAcGFyYW1baW5dICBQY2lJbyAgICAgICAgVGhlIFBD SSBJTyBwcm90b2NvbCBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtW291dF0gRmlyc3RCYXIgICAgIFRo ZSBidWZmZXIgdG8gc3RvcmUgdGhlIGZpcnN0IEJBUiB2YWx1ZS4NCj4gKyAgQHBhcmFtW291dF0g U2xvdE51bSAgICAgIFRoZSBidWZmZXIgdG8gc3RvcmUgdGhlIHN1cHBvcnRlZCBzbG90IG51bWJl ci4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgVGhlIG9wZXJhdGlvbiBzdWNj ZWVkcy4NCj4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMu DQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtEd01tY0hjR2V0U2xv dEluZm8gKA0KPiArICBJTiAgICAgRUZJX1BDSV9JT19QUk9UT0NPTCAgICpQY2lJbywNCj4gKyAg ICAgT1VUIFVJTlQ4ICAgICAgICAgICAgICAgICAqRmlyc3RCYXIsDQo+ICsgICAgIE9VVCBVSU5U OCAgICAgICAgICAgICAgICAgKlNsb3ROdW0NCj4gKyAgKTsNCj4gKyNlbmRpZg0KPiArDQo+ICsj aWZkZWYgRFdNTUNfUENJDQo+ICsvKioNCj4gKyAgUmVhZC9Xcml0ZSBzcGVjaWZpZWQgU0QvTU1D IGhvc3QgY29udHJvbGxlciBtbWlvIHJlZ2lzdGVyLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gICAg ICBQY2lJbyAgICAgICAgVGhlIFBDSSBJTyBwcm90b2NvbCBpbnN0YW5jZS4NCj4gKyAgQHBhcmFt W2luXSAgICAgIEJhckluZGV4ICAgICBUaGUgQkFSIGluZGV4IG9mIHRoZSBzdGFuZGFyZCBQQ0kg Q29uZmlndXJhdGlvbg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlciB0 byB1c2UgYXMgdGhlIGJhc2UgYWRkcmVzcyBmb3IgdGhlIG1lbW9yeQ0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiB0byBwZXJmb3JtLg0KPiArICBAcGFyYW1baW5d ICAgICAgT2Zmc2V0ICAgICAgIFRoZSBvZmZzZXQgd2l0aGluIHRoZSBzZWxlY3RlZCBCQVIgdG8g c3RhcnQgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5IG9wZXJh dGlvbi4NCj4gKyAgQHBhcmFtW2luXSAgICAgIFJlYWQgICAgICAgICBBIGJvb2xlYW4gdG8gaW5k aWNhdGUgaXQncyByZWFkIG9yIHdyaXRlIG9wZXJhdGlvbi4NCj4gKyAgQHBhcmFtW2luXSAgICAg IENvdW50ICAgICAgICBUaGUgd2lkdGggb2YgdGhlIG1taW8gcmVnaXN0ZXIgaW4gYnl0ZXMuDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVzdCBiZSAxLCAyICwgNCBvciA4IGJ5 dGVzLg0KPiArICBAcGFyYW1baW4sIG91dF0gRGF0YSAgICAgICAgIEZvciByZWFkIG9wZXJhdGlv bnMsIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIgdG8gc3RvcmUNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0aGUgcmVzdWx0cy4gRm9yIHdyaXRlIG9wZXJhdGlvbnMsIHRoZSBzb3Vy Y2UgYnVmZmVyDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gd3JpdGUgZGF0 YSBmcm9tLiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvcg0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGhhdmluZyBvd25lcnNoaXAgb2YgdGhlIGRhdGEgYnVmZmVyIGFuZCBl bnN1cmluZyBpdHMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplIG5vdCBs ZXNzIHRoYW4gQ291bnQgYnl0ZXMuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJB TUVURVIgVGhlIFBjaUlvIG9yIERhdGEgaXMgTlVMTCBvciB0aGUgQ291bnQgaXMgbm90IHZhbGlk Lg0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcmVhZC93cml0ZSBvcGVy YXRpb24gc3VjY2VlZHMuDQo+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgICAgIFRoZSBy ZWFkL3dyaXRlIG9wZXJhdGlvbiBmYWlscy4NCj4gKw0KPiArKiovDQo+ICtFRklfU1RBVFVTDQo+ ICtFRklBUEkNCj4gK0R3TW1jSGNSd01taW8gKA0KPiArICBJTiAgICAgRUZJX1BDSV9JT19QUk9U T0NPTCAgICpQY2lJbywNCj4gKyAgSU4gICAgIFVJTlQ4ICAgICAgICAgICAgICAgICBCYXJJbmRl eCwNCj4gKyAgSU4gICAgIFVJTlQzMiAgICAgICAgICAgICAgICBPZmZzZXQsDQo+ICsgIElOICAg ICBCT09MRUFOICAgICAgICAgICAgICAgUmVhZCwNCj4gKyAgSU4gICAgIFVJTlQ4ICAgICAgICAg ICAgICAgICBDb3VudCwNCj4gKyAgSU4gT1VUIFZPSUQgICAgICAgICAgICAgICAgICAqRGF0YQ0K PiArICApOw0KPiArI2Vsc2UNCj4gKy8qKg0KPiArICBSZWFkL1dyaXRlIHNwZWNpZmllZCBTRC9N TUMgaG9zdCBjb250cm9sbGVyIG1taW8gcmVnaXN0ZXIuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAg ICAgIERldklvICAgICAgICBUaGUgREVWSUNFIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiArICBA cGFyYW1baW5dICAgICAgT2Zmc2V0ICAgICAgIFRoZSBvZmZzZXQgd2l0aGluIHRoZSBzZWxlY3Rl ZCBCQVIgdG8gc3RhcnQgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVt b3J5IG9wZXJhdGlvbi4NCj4gKyAgQHBhcmFtW2luXSAgICAgIFJlYWQgICAgICAgICBBIGJvb2xl YW4gdG8gaW5kaWNhdGUgaXQncyByZWFkIG9yIHdyaXRlIG9wZXJhdGlvbi4NCj4gKyAgQHBhcmFt W2luXSAgICAgIENvdW50ICAgICAgICBUaGUgd2lkdGggb2YgdGhlIG1taW8gcmVnaXN0ZXIgaW4g Ynl0ZXMuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVzdCBiZSAxLCAyICwg NCBvciA4IGJ5dGVzLg0KPiArICBAcGFyYW1baW4sIG91dF0gRGF0YSAgICAgICAgIEZvciByZWFk IG9wZXJhdGlvbnMsIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIgdG8gc3RvcmUNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVzdWx0cy4gRm9yIHdyaXRlIG9wZXJhdGlvbnMs IHRoZSBzb3VyY2UgYnVmZmVyDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8g d3JpdGUgZGF0YSBmcm9tLiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvcg0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmluZyBvd25lcnNoaXAgb2YgdGhlIGRhdGEgYnVm ZmVyIGFuZCBlbnN1cmluZyBpdHMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz aXplIG5vdCBsZXNzIHRoYW4gQ291bnQgYnl0ZXMuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfSU5W QUxJRF9QQVJBTUVURVIgVGhlIFBjaUlvIG9yIERhdGEgaXMgTlVMTCBvciB0aGUgQ291bnQgaXMg bm90IHZhbGlkLg0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcmVhZC93 cml0ZSBvcGVyYXRpb24gc3VjY2VlZHMuDQo+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAg ICAgIFRoZSByZWFkL3dyaXRlIG9wZXJhdGlvbiBmYWlscy4NCj4gKw0KPiArKiovDQo+ICtFRklf U1RBVFVTDQo+ICtFRklBUEkNCj4gK0R3TW1jSGNSd01taW8gKA0KPiArICBJTiAgICAgVUlOVE4g ICAgICAgICAgICAgICAgICAgRGV2QmFzZSwNCj4gKyAgSU4gICAgIFVJTlQzMiAgICAgICAgICAg ICAgICAgICBPZmZzZXQsDQo+ICsgIElOICAgICBCT09MRUFOICAgICAgICAgICAgICAgICAgUmVh ZCwNCj4gKyAgSU4gICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICBDb3VudCwNCj4gKyAgSU4g T1VUIFZPSUQgICAgICAgICAgICAgICAgICAgICAqRGF0YQ0KPiArICApOw0KPiArI2VuZGlmDQo+ ICsNCj4gKyNpZmRlZiBEV01NQ19QQ0kNCj4gKy8qKg0KPiArICBEbyBPUiBvcGVyYXRpb24gd2l0 aCB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBTRC9NTUMgaG9zdCBjb250cm9sbGVyIG1taW8g cmVnaXN0ZXIuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBQY2lJbyAgICAgICAgICAgICBUaGUgUENJ IElPIHByb3RvY29sIGluc3RhbmNlLg0KPiArICBAcGFyYW1baW5dIEJhckluZGV4ICAgICAgICAg IFRoZSBCQVIgaW5kZXggb2YgdGhlIHN0YW5kYXJkIFBDSSBDb25maWd1cmF0aW9uDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyIHRvIHVzZSBhcyB0aGUgYmFzZSBhZGRy ZXNzIGZvciB0aGUgbWVtb3J5DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bl cmF0aW9uIHRvIHBlcmZvcm0uDQo+ICsgIEBwYXJhbVtpbl0gT2Zmc2V0ICAgICAgICAgICAgVGhl IG9mZnNldCB3aXRoaW4gdGhlIHNlbGVjdGVkIEJBUiB0byBzdGFydCB0aGUNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnkgb3BlcmF0aW9uLg0KPiArICBAcGFyYW1baW5d IENvdW50ICAgICAgICAgICAgIFRoZSB3aWR0aCBvZiB0aGUgbW1pbyByZWdpc3RlciBpbiBieXRl cy4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdXN0IGJlIDEsIDIgLCA0IG9y IDggYnl0ZXMuDQo+ICsgIEBwYXJhbVtpbl0gT3JEYXRhICAgICAgICAgICAgVGhlIHBvaW50ZXIg dG8gdGhlIGRhdGEgdXNlZCB0byBkbyBPUiBvcGVyYXRpb24uDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgaGF2aW5nIG93bmVy c2hpcCBvZg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBkYXRhIGJ1ZmZl ciBhbmQgZW5zdXJpbmcgaXRzIHNpemUgbm90IGxlc3MgdGhhbg0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIENvdW50IGJ5dGVzLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFM SURfUEFSQU1FVEVSIFRoZSBQY2lJbyBvciBPckRhdGEgaXMgTlVMTCBvciB0aGUgQ291bnQgaXMg bm90IHZhbGlkLg0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgT1Igb3Bl cmF0aW9uIHN1Y2NlZWRzLg0KPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgICAgICBUaGUg T1Igb3BlcmF0aW9uIGZhaWxzLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQ SQ0KPiArRHdNbWNIY09yTW1pbyAoDQo+ICsgIElOICBFRklfUENJX0lPX1BST1RPQ09MICAgICAg KlBjaUlvLA0KPiArICBJTiAgVUlOVDggICAgICAgICAgICAgICAgICAgIEJhckluZGV4LA0KPiAr ICBJTiAgVUlOVDMyICAgICAgICAgICAgICAgICAgIE9mZnNldCwNCj4gKyAgSU4gIFVJTlQ4ICAg ICAgICAgICAgICAgICAgICBDb3VudCwNCj4gKyAgSU4gIFZPSUQgICAgICAgICAgICAgICAgICAg ICAqT3JEYXRhDQo+ICsgICk7DQo+ICsjZWxzZQ0KPiArLyoqDQo+ICsgIERvIE9SIG9wZXJhdGlv biB3aXRoIHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIFNEL01NQyBob3N0IGNvbnRyb2xsZXIg bW1pbyByZWdpc3Rlci4NCj4gKw0KPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAgICAgIFRo ZSBERVZJQ0UgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gQmFySW5kZXgg ICAgICAgICAgVGhlIEJBUiBpbmRleCBvZiB0aGUgc3RhbmRhcmQgUENJIENvbmZpZ3VyYXRpb24N Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIgdG8gdXNlIGFzIHRoZSBi YXNlIGFkZHJlc3MgZm9yIHRoZSBtZW1vcnkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvcGVyYXRpb24gdG8gcGVyZm9ybS4NCj4gKyAgQHBhcmFtW2luXSBPZmZzZXQgICAgICAg ICAgICBUaGUgb2Zmc2V0IHdpdGhpbiB0aGUgc2VsZWN0ZWQgQkFSIHRvIHN0YXJ0IHRoZQ0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeSBvcGVyYXRpb24uDQo+ICsgIEBw YXJhbVtpbl0gQ291bnQgICAgICAgICAgICAgVGhlIHdpZHRoIG9mIHRoZSBtbWlvIHJlZ2lzdGVy IGluIGJ5dGVzLg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11c3QgYmUgMSwg MiAsIDQgb3IgOCBieXRlcy4NCj4gKyAgQHBhcmFtW2luXSBPckRhdGEgICAgICAgICAgICBUaGUg cG9pbnRlciB0byB0aGUgZGF0YSB1c2VkIHRvIGRvIE9SIG9wZXJhdGlvbi4NCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBoYXZp bmcgb3duZXJzaGlwIG9mDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRh dGEgYnVmZmVyIGFuZCBlbnN1cmluZyBpdHMgc2l6ZSBub3QgbGVzcyB0aGFuDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQ291bnQgYnl0ZXMuDQo+ICsNCj4gKyAgQHJldHZhbCBF RklfSU5WQUxJRF9QQVJBTUVURVIgVGhlIFBjaUlvIG9yIE9yRGF0YSBpcyBOVUxMIG9yIHRoZSBD b3VudCBpcyBub3QgdmFsaWQuDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRo ZSBPUiBvcGVyYXRpb24gc3VjY2VlZHMuDQo+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAg ICAgIFRoZSBPUiBvcGVyYXRpb24gZmFpbHMuDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0K PiArRUZJQVBJDQo+ICtEd01tY0hjT3JNbWlvICgNCj4gKyAgSU4gICAgIFVJTlROICAgICAgICAg ICAgICAgICAgIERldkJhc2UsDQo+ICsgIElOICBVSU5UMzIgICAgICAgICAgICAgICAgICAgT2Zm c2V0LA0KPiArICBJTiAgVUlOVDggICAgICAgICAgICAgICAgICAgIENvdW50LA0KPiArICBJTiAg Vk9JRCAgICAgICAgICAgICAgICAgICAgICpPckRhdGENCj4gKyAgKTsNCj4gKyNlbmRpZg0KPiAr DQo+ICsjaWZkZWYgRFdNTUNfUENJDQo+ICsvKioNCj4gKyAgRG8gQU5EIG9wZXJhdGlvbiB3aXRo IHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIFNEL01NQyBob3N0IGNvbnRyb2xsZXIgbW1pbyBy ZWdpc3Rlci4NCj4gKw0KPiArICBAcGFyYW1baW5dIFBjaUlvICAgICAgICAgICAgIFRoZSBQQ0kg SU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gQmFySW5kZXggICAgICAgICAg VGhlIEJBUiBpbmRleCBvZiB0aGUgc3RhbmRhcmQgUENJIENvbmZpZ3VyYXRpb24NCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIgdG8gdXNlIGFzIHRoZSBiYXNlIGFkZHJl c3MgZm9yIHRoZSBtZW1vcnkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVy YXRpb24gdG8gcGVyZm9ybS4NCj4gKyAgQHBhcmFtW2luXSBPZmZzZXQgICAgICAgICAgICBUaGUg b2Zmc2V0IHdpdGhpbiB0aGUgc2VsZWN0ZWQgQkFSIHRvIHN0YXJ0IHRoZQ0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeSBvcGVyYXRpb24uDQo+ICsgIEBwYXJhbVtpbl0g Q291bnQgICAgICAgICAgICAgVGhlIHdpZHRoIG9mIHRoZSBtbWlvIHJlZ2lzdGVyIGluIGJ5dGVz Lg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11c3QgYmUgMSwgMiAsIDQgb3Ig OCBieXRlcy4NCj4gKyAgQHBhcmFtW2luXSBBbmREYXRhICAgICAgICAgICBUaGUgcG9pbnRlciB0 byB0aGUgZGF0YSB1c2VkIHRvIGRvIEFORCBvcGVyYXRpb24uDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgaGF2aW5nIG93bmVy c2hpcCBvZg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBkYXRhIGJ1ZmZl ciBhbmQgZW5zdXJpbmcgaXRzIHNpemUgbm90IGxlc3MgdGhhbg0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIENvdW50IGJ5dGVzLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFM SURfUEFSQU1FVEVSIFRoZSBQY2lJbyBvciBBbmREYXRhIGlzIE5VTEwgb3IgdGhlIENvdW50IGlz IG5vdCB2YWxpZC4NCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIEFORCBv cGVyYXRpb24gc3VjY2VlZHMuDQo+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgICAgIFRo ZSBBTkQgb3BlcmF0aW9uIGZhaWxzLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VG SUFQSQ0KPiArRHdNbWNIY0FuZE1taW8gKA0KPiArICBJTiAgRUZJX1BDSV9JT19QUk9UT0NPTCAg ICAgICpQY2lJbywNCj4gKyAgSU4gIFVJTlQ4ICAgICAgICAgICAgICAgICAgICBCYXJJbmRleCwN Cj4gKyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgICBPZmZzZXQsDQo+ICsgIElOICBVSU5U OCAgICAgICAgICAgICAgICAgICAgQ291bnQsDQo+ICsgIElOICBWT0lEICAgICAgICAgICAgICAg ICAgICAgKkFuZERhdGENCj4gKyAgKTsNCj4gKyNlbHNlDQo+ICsvKioNCj4gKyAgRG8gQU5EIG9w ZXJhdGlvbiB3aXRoIHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIFNEL01NQyBob3N0IGNvbnRy b2xsZXIgbW1pbyByZWdpc3Rlci4NCj4gKw0KPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAg ICAgIFRoZSBERVZJQ0UgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gT2Zm c2V0ICAgICAgICAgICAgVGhlIG9mZnNldCB3aXRoaW4gdGhlIHNlbGVjdGVkIEJBUiB0byBzdGFy dCB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnkgb3BlcmF0aW9u Lg0KPiArICBAcGFyYW1baW5dIENvdW50ICAgICAgICAgICAgIFRoZSB3aWR0aCBvZiB0aGUgbW1p byByZWdpc3RlciBpbiBieXRlcy4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN dXN0IGJlIDEsIDIgLCA0IG9yIDggYnl0ZXMuDQo+ICsgIEBwYXJhbVtpbl0gQW5kRGF0YSAgICAg ICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIGRhdGEgdXNlZCB0byBkbyBBTkQgb3BlcmF0aW9uLg0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2li bGUgZm9yIGhhdmluZyBvd25lcnNoaXAgb2YNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0aGUgZGF0YSBidWZmZXIgYW5kIGVuc3VyaW5nIGl0cyBzaXplIG5vdCBsZXNzIHRoYW4N Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudCBieXRlcy4NCj4gKw0KPiAr ICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBUaGUgUGNpSW8gb3IgQW5kRGF0YSBpcyBO VUxMIG9yIHRoZSBDb3VudCBpcyBub3QgdmFsaWQuDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgICAgIFRoZSBBTkQgb3BlcmF0aW9uIHN1Y2NlZWRzLg0KPiArICBAcmV0dmFsIE90aGVy cyAgICAgICAgICAgICAgICBUaGUgQU5EIG9wZXJhdGlvbiBmYWlscy4NCj4gKw0KPiArKiovDQo+ ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0R3TW1jSGNBbmRNbWlvICgNCj4gKyAgSU4gIFVJ TlROICAgICAgICAgICAgICAgICAgICBEZXZCYXNlLA0KPiArICBJTiAgVUlOVDMyICAgICAgICAg ICAgICAgICAgIE9mZnNldCwNCj4gKyAgSU4gIFVJTlQ4ICAgICAgICAgICAgICAgICAgICBDb3Vu dCwNCj4gKyAgSU4gIFZPSUQgICAgICAgICAgICAgICAgICAgICAqQW5kRGF0YQ0KPiArICApOw0K PiArI2VuZGlmDQo+ICsNCj4gKyNpZmRlZiBEV01NQ19QQ0kNCj4gKy8qKg0KPiArICBXYWl0IGZv ciB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBNTUlPIHJlZ2lzdGVyIHNldCB0byB0aGUgdGVz dCB2YWx1ZS4NCj4gKw0KPiArICBAcGFyYW1baW5dICBQY2lJbyAgICAgICAgIFRoZSBQQ0kgSU8g cHJvdG9jb2wgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gIEJhckluZGV4ICAgICAgVGhlIEJB UiBpbmRleCBvZiB0aGUgc3RhbmRhcmQgUENJIENvbmZpZ3VyYXRpb24NCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBoZWFkZXIgdG8gdXNlIGFzIHRoZSBiYXNlIGFkZHJlc3MgZm9yIHRo ZSBtZW1vcnkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gdG8gcGVy Zm9ybS4NCj4gKyAgQHBhcmFtW2luXSAgT2Zmc2V0ICAgICAgICBUaGUgb2Zmc2V0IHdpdGhpbiB0 aGUgc2VsZWN0ZWQgQkFSIHRvIHN0YXJ0IHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG1lbW9yeSBvcGVyYXRpb24uDQo+ICsgIEBwYXJhbVtpbl0gIENvdW50ICAgICAgICAgVGhl IHdpZHRoIG9mIHRoZSBtbWlvIHJlZ2lzdGVyIGluIGJ5dGVzLg0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE11c3QgYmUgMSwgMiwgNCBvciA4IGJ5dGVzLg0KPiArICBAcGFyYW1baW5d ICBNYXNrVmFsdWUgICAgIFRoZSBtYXNrIHZhbHVlIG9mIG1lbW9yeS4NCj4gKyAgQHBhcmFtW2lu XSAgVGVzdFZhbHVlICAgICBUaGUgdGVzdCB2YWx1ZSBvZiBtZW1vcnkuDQo+ICsgIEBwYXJhbVtp bl0gIFRpbWVvdXQgICAgICAgVGhlIHRpbWUgb3V0IHZhbHVlIGZvciB3YWl0IG1lbW9yeSBzZXQs IHVzZXMgMQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pY3Jvc2Vjb25kIGFzIGEg dW5pdC4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9USU1FT1VUICAgICAgIFRoZSBNTUlPIHJlZ2lz dGVyIGhhc24ndCBleHBlY3RlZCB2YWx1ZSBpbiB0aW1lb3V0DQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmFuZ2UuDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIE1N SU8gcmVnaXN0ZXIgaGFzIGV4cGVjdGVkIHZhbHVlLg0KPiArICBAcmV0dmFsIE90aGVycyAgICAg ICAgICAgIFRoZSBNTUlPIG9wZXJhdGlvbiBmYWlscy4NCj4gKw0KPiArKiovDQo+ICtFRklfU1RB VFVTDQo+ICtFRklBUEkNCj4gK0R3TW1jSGNXYWl0TW1pb1NldCAoDQo+ICsgIElOICBFRklfUENJ X0lPX1BST1RPQ09MICAgICAgICpQY2lJbywNCj4gKyAgSU4gIFVJTlQ4ICAgICAgICAgICAgICAg ICAgICAgQmFySW5kZXgsDQo+ICsgIElOICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIE9mZnNl dCwNCj4gKyAgSU4gIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgQ291bnQsDQo+ICsgIElOICBV SU5UNjQgICAgICAgICAgICAgICAgICAgIE1hc2tWYWx1ZSwNCj4gKyAgSU4gIFVJTlQ2NCAgICAg ICAgICAgICAgICAgICAgVGVzdFZhbHVlLA0KPiArICBJTiAgVUlOVDY0ICAgICAgICAgICAgICAg ICAgICBUaW1lb3V0DQo+ICsgICk7DQo+ICsjZWxzZQ0KPiArLyoqDQo+ICsgIFdhaXQgZm9yIHRo ZSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIE1NSU8gcmVnaXN0ZXIgc2V0IHRvIHRoZSB0ZXN0IHZh bHVlLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIERldklvICAgICAgICAgVGhlIERFVklDRSBJTyBw cm90b2NvbCBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtW2luXSAgT2Zmc2V0ICAgICAgICBUaGUgb2Zm c2V0IHdpdGhpbiB0aGUgc2VsZWN0ZWQgQkFSIHRvIHN0YXJ0IHRoZQ0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1lbW9yeSBvcGVyYXRpb24uDQo+ICsgIEBwYXJhbVtpbl0gIENvdW50 ICAgICAgICAgVGhlIHdpZHRoIG9mIHRoZSBtbWlvIHJlZ2lzdGVyIGluIGJ5dGVzLg0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE11c3QgYmUgMSwgMiwgNCBvciA4IGJ5dGVzLg0KPiAr ICBAcGFyYW1baW5dICBNYXNrVmFsdWUgICAgIFRoZSBtYXNrIHZhbHVlIG9mIG1lbW9yeS4NCj4g KyAgQHBhcmFtW2luXSAgVGVzdFZhbHVlICAgICBUaGUgdGVzdCB2YWx1ZSBvZiBtZW1vcnkuDQo+ ICsgIEBwYXJhbVtpbl0gIFRpbWVvdXQgICAgICAgVGhlIHRpbWUgb3V0IHZhbHVlIGZvciB3YWl0 IG1lbW9yeSBzZXQsIHVzZXMgMQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pY3Jv c2Vjb25kIGFzIGEgdW5pdC4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9USU1FT1VUICAgICAgIFRo ZSBNTUlPIHJlZ2lzdGVyIGhhc24ndCBleHBlY3RlZCB2YWx1ZSBpbiB0aW1lb3V0DQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UuDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgVGhlIE1NSU8gcmVnaXN0ZXIgaGFzIGV4cGVjdGVkIHZhbHVlLg0KPiArICBAcmV0dmFs IE90aGVycyAgICAgICAgICAgIFRoZSBNTUlPIG9wZXJhdGlvbiBmYWlscy4NCj4gKw0KPiArKiov DQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0R3TW1jSGNXYWl0TW1pb1NldCAoDQo+ICsg IElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgRGV2QmFzZSwNCj4gKyAgSU4gIFVJTlQzMiAg ICAgICAgICAgICAgICAgICAgT2Zmc2V0LA0KPiArICBJTiAgVUlOVDggICAgICAgICAgICAgICAg ICAgICBDb3VudCwNCj4gKyAgSU4gIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgTWFza1ZhbHVl LA0KPiArICBJTiAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBUZXN0VmFsdWUsDQo+ICsgIElO ICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIFRpbWVvdXQNCj4gKyAgKTsNCj4gKyNlbmRpZg0K PiArDQo+ICsjaWZkZWYgRFdNTUNfUENJDQo+ICsvKioNCj4gKyAgU29mdHdhcmUgcmVzZXQgdGhl IHNwZWNpZmllZCBTRC9NTUMgaG9zdCBjb250cm9sbGVyLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0g UGNpSW8gICAgICAgICAgVGhlIFBDSSBJTyBwcm90b2NvbCBpbnN0YW5jZS4NCj4gKyAgQHBhcmFt W2luXSBTbG90ICAgICAgICAgICBUaGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2Vu ZCB0aGUgY29tbWFuZCB0by4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRo ZSBzb2Z0d2FyZSByZXNldCBleGVjdXRlcyBzdWNjZXNzZnVsbHkuDQo+ICsgIEByZXR2YWwgT3Ro ZXJzICAgICAgICAgICAgVGhlIHNvZnR3YXJlIHJlc2V0IGZhaWxzLg0KPiArDQo+ICsqKi8NCj4g K0VGSV9TVEFUVVMNCj4gK0R3TW1jSGNSZXNldCAoDQo+ICtmYXJrDQo+ICsgIElOIEVGSV9QQ0lf SU9fUFJPVE9DT0wgICAgKlBjaUlvLA0KPiArICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgIFNs b3QsDQo+ICsgIElOIERXX01NQ19IQ19TTE9UX0NBUCAgICAgQ2FwYWJpbGl0eQ0KPiArICApOw0K PiArI2Vsc2UNCj4gKy8qKg0KPiArICBTb2Z0d2FyZSByZXNldCB0aGUgc3BlY2lmaWVkIFNEL01N QyBob3N0IGNvbnRyb2xsZXIuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBEZXZJbyAgICAgICAgICBU aGUgREVWSUNFIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NV Q0NFU1MgICAgICAgVGhlIHNvZnR3YXJlIHJlc2V0IGV4ZWN1dGVzIHN1Y2Nlc3NmdWxseS4NCj4g KyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgc29mdHdhcmUgcmVzZXQgZmFpbHMuDQo+ ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRHdNbWNIY1Jlc2V0ICgNCj4gKyAgSU4gVUlO VE4gICAgICAgICAgICAgICAgICAgIERldkJhc2UsDQo+ICsgIElOIERXX01NQ19IQ19TTE9UX0NB UCAgICAgQ2FwYWJpbGl0eQ0KPiArICApOw0KPiArI2VuZGlmDQo+ICsNCj4gKyNpZmRlZiBEV01N Q19QQ0kNCj4gKy8qKg0KPiArICBTZXQgYWxsIGludGVycnVwdCBzdGF0dXMgYml0cyBpbiBOb3Jt YWwgYW5kIEVycm9yIEludGVycnVwdCBTdGF0dXMgRW5hYmxlDQo+ICsgIHJlZ2lzdGVyLg0KPiAr DQo+ICsgIEBwYXJhbVtpbl0gUGNpSW8gICAgICAgICAgVGhlIFBDSSBJTyBwcm90b2NvbCBpbnN0 YW5jZS4NCj4gKyAgQHBhcmFtW2luXSBTbG90ICAgICAgICAgICBUaGUgc2xvdCBudW1iZXIgb2Yg dGhlIFNEIGNhcmQgdG8gc2VuZCB0aGUgY29tbWFuZCB0by4NCj4gKw0KPiArICBAcmV0dmFsIEVG SV9TVUNDRVNTICAgICAgIFRoZSBvcGVyYXRpb24gZXhlY3V0ZXMgc3VjY2Vzc2Z1bGx5Lg0KPiAr ICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ICsNCj4g KyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRHdNbWNIY0VuYWJsZUludGVycnVwdCAoDQo+ICsgIElO IEVGSV9QQ0lfSU9fUFJPVE9DT0wgICAgKlBjaUlvLA0KPiArICBJTiBVSU5UOCAgICAgICAgICAg ICAgICAgIFNsb3QNCj4gKyAgKTsNCj4gKyNlbHNlDQo+ICsvKioNCj4gKyAgU2V0IGFsbCBpbnRl cnJ1cHQgc3RhdHVzIGJpdHMgaW4gTm9ybWFsIGFuZCBFcnJvciBJbnRlcnJ1cHQgU3RhdHVzIEVu YWJsZQ0KPiArICByZWdpc3Rlci4NCj4gKw0KPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAg IFRoZSBERVZJQ0UgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gU2xvdCAg ICAgICAgICAgVGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJkIHRvIHNlbmQgdGhlIGNvbW1h bmQgdG8uDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgb3BlcmF0aW9u IGV4ZWN1dGVzIHN1Y2Nlc3NmdWxseS4NCj4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBU aGUgb3BlcmF0aW9uIGZhaWxzLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0R3TW1j SGNFbmFibGVJbnRlcnJ1cHQgKA0KPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgIERl dkJhc2UNCj4gKyAgKTsNCj4gKyNlbmRpZg0KPiArDQo+ICsjaWZkZWYgRFdNTUNfUENJDQo+ICsv KioNCj4gKyAgR2V0IHRoZSBjYXBhYmlsaXR5IGRhdGEgZnJvbSB0aGUgc3BlY2lmaWVkIHNsb3Qu DQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgUGNpSW8gICAgICAgICAgIFRoZSBQQ0kgSU8gcHJvdG9j b2wgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gIFNsb3QgICAgICAgICAgICBUaGUgc2xvdCBu dW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0aGUgY29tbWFuZCB0by4NCj4gKyAgQHBhcmFt W291dF0gQ2FwYWJpbGl0eSAgICAgIFRoZSBidWZmZXIgdG8gc3RvcmUgdGhlIGNhcGFiaWxpdHkg ZGF0YS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgVGhlIG9wZXJhdGlv biBleGVjdXRlcyBzdWNjZXNzZnVsbHkuDQo+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAg ICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0R3 TW1jSGNHZXRDYXBhYmlsaXR5ICgNCj4gKyAgSU4gICAgIEVGSV9QQ0lfSU9fUFJPVE9DT0wgICpQ Y2lJbywNCj4gKyAgSU4gICAgIEVGSV9IQU5ETEUgICAgICAgICAgIENvbnRyb2xsZXIsDQo+ICsg IElOICAgICBVSU5UOCAgICAgICAgICAgICAgICBTbG90LA0KPiArICAgICBPVVQgRFdfTU1DX0hD X1NMT1RfQ0FQICAgKkNhcGFiaWxpdHkNCj4gKyAgKTsNCj4gKyNlbHNlDQo+ICsvKioNCj4gKyAg R2V0IHRoZSBjYXBhYmlsaXR5IGRhdGEgZnJvbSB0aGUgc3BlY2lmaWVkIHNsb3QuDQo+ICsNCj4g KyAgQHBhcmFtW2luXSAgRGV2SW8gICAgICAgICAgIFRoZSBERVZJQ0UgSU8gcHJvdG9jb2wgaW5z dGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gIFNsb3QgICAgICAgICAgICBUaGUgc2xvdCBudW1iZXIg b2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0aGUgY29tbWFuZCB0by4NCj4gKyAgQHBhcmFtW291dF0g Q2FwYWJpbGl0eSAgICAgIFRoZSBidWZmZXIgdG8gc3RvcmUgdGhlIGNhcGFiaWxpdHkgZGF0YS4N Cj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgVGhlIG9wZXJhdGlvbiBleGVj dXRlcyBzdWNjZXNzZnVsbHkuDQo+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgICBUaGUg b3BlcmF0aW9uIGZhaWxzLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0R3TW1jSGNH ZXRDYXBhYmlsaXR5ICgNCj4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICBEZXZCYXNl LA0KPiArICBJTiAgICAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgQ29udHJvbGxlciwNCj4gKyAg SU4gICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgIFNsb3QsDQo+ICsgICAgIE9VVCBEV19NTUNf SENfU0xPVF9DQVAgICAgICAqQ2FwYWJpbGl0eQ0KPiArICApOw0KPiArI2VuZGlmDQo+ICsNCj4g KyNpZiAwDQo+ICsvKioNCj4gKyAgR2V0IHRoZSBtYXhpbXVtIGN1cnJlbnQgY2FwYWJpbGl0eSBk YXRhIGZyb20gdGhlIHNwZWNpZmllZCBzbG90Lg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIFBjaUlv ICAgICAgICAgICBUaGUgUENJIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiArICBAcGFyYW1baW5d ICBTbG90ICAgICAgICAgICAgVGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJkIHRvIHNlbmQg dGhlIGNvbW1hbmQgdG8uDQo+ICsgIEBwYXJhbVtvdXRdIE1heEN1cnJlbnQgICAgICBUaGUgYnVm ZmVyIHRvIHN0b3JlIHRoZSBtYXhpbXVtIGN1cnJlbnQgY2FwYWJpbGl0eSBkYXRhLg0KPiArDQo+ ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICBUaGUgb3BlcmF0aW9uIGV4ZWN1dGVzIHN1 Y2Nlc3NmdWxseS4NCj4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICAgIFRoZSBvcGVyYXRp b24gZmFpbHMuDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRHdNbWNIY0dldE1heEN1 cnJlbnQgKA0KPiArICBJTiAgICAgRUZJX1BDSV9JT19QUk9UT0NPTCAgKlBjaUlvLA0KPiArICBJ TiAgICAgVUlOVDggICAgICAgICAgICAgICAgU2xvdCwNCj4gKyAgICAgT1VUIFVJTlQ2NCAgICAg ICAgICAgICAgICpNYXhDdXJyZW50DQo+ICsgICk7DQo+ICsjZW5kaWYNCj4gKw0KPiArI2lmZGVm IERXTU1DX1BDSQ0KPiArLyoqDQo+ICsgIERldGVjdCB3aGV0aGVyIHRoZXJlIGlzIGEgU0QvTU1D IGNhcmQgYXR0YWNoZWQgYXQgdGhlIHNwZWNpZmllZCBTRC9NTUMgaG9zdCBjb250cm9sbGVyDQo+ ICsgIHNsb3QuDQo+ICsNCj4gKyAgUmVmZXIgdG8gU0QgSG9zdCBDb250cm9sbGVyIFNpbXBsaWZp ZWQgc3BlYyAzLjAgU2VjdGlvbiAzLjEgZm9yIGRldGFpbHMuDQo+ICsNCj4gKyAgQHBhcmFtW2lu XSAgUGNpSW8gICAgICAgICBUaGUgUENJIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiArICBAcGFy YW1baW5dICBTbG90ICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBz ZW5kIHRoZSBjb21tYW5kIHRvLg0KPiArICBAcGFyYW1bb3V0XSBNZWRpYVByZXNlbnQgIFRoZSBw b2ludGVyIHRvIHRoZSBtZWRpYSBwcmVzZW50IGJvb2xlYW4gdmFsdWUuDQo+ICsNCj4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGVyZSBpcyBubyBtZWRpYSBjaGFuZ2UgaGFwcGVuZWQu DQo+ICsgIEByZXR2YWwgRUZJX01FRElBX0NIQU5HRUQgVGhlcmUgaXMgbWVkaWEgY2hhbmdlIGhh cHBlbmVkLg0KPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBkZXRlY3Rpb24gZmFp bHMuDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRHdNbWNIY0NhcmREZXRlY3QgKA0K PiArICBJTiAgICAgRUZJX1BDSV9JT19QUk9UT0NPTCAgKlBjaUlvLA0KPiArICBJTiAgICAgRUZJ X0hBTkRMRSAgICAgICAgICAgQ29udHJvbGxlciwNCj4gKyAgSU4gICAgIFVJTlQ4ICAgICAgICAg ICAgICAgIFNsb3QsDQo+ICsgICAgIE9VVCBCT09MRUFOICAgICAgICAgICAgICAqTWVkaWFQcmVz ZW50DQo+ICsgICk7DQo+ICsjZWxzZQ0KPiArLyoqDQo+ICsgIERldGVjdCB3aGV0aGVyIHRoZXJl IGlzIGEgU0QvTU1DIGNhcmQgYXR0YWNoZWQgYXQgdGhlIHNwZWNpZmllZCBTRC9NTUMgaG9zdCBj b250cm9sbGVyDQo+ICsgIHNsb3QuDQo+ICsNCj4gKyAgUmVmZXIgdG8gU0QgSG9zdCBDb250cm9s bGVyIFNpbXBsaWZpZWQgc3BlYyAzLjAgU2VjdGlvbiAzLjEgZm9yIGRldGFpbHMuDQo+ICsNCj4g KyAgQHBhcmFtW2luXSAgRGV2SW8gICAgICAgICBUaGUgREVWSUNFIElPIHByb3RvY29sIGluc3Rh bmNlLg0KPiArICBAcGFyYW1baW5dICBTbG90ICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0 aGUgU0QgY2FyZCB0byBzZW5kIHRoZSBjb21tYW5kIHRvLg0KPiArICBAcGFyYW1bb3V0XSBNZWRp YVByZXNlbnQgIFRoZSBwb2ludGVyIHRvIHRoZSBtZWRpYSBwcmVzZW50IGJvb2xlYW4gdmFsdWUu DQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGVyZSBpcyBubyBtZWRpYSBj aGFuZ2UgaGFwcGVuZWQuDQo+ICsgIEByZXR2YWwgRUZJX01FRElBX0NIQU5HRUQgVGhlcmUgaXMg bWVkaWEgY2hhbmdlIGhhcHBlbmVkLg0KPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRo ZSBkZXRlY3Rpb24gZmFpbHMuDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRHdNbWNI Y0NhcmREZXRlY3QgKA0KPiArICBJTiAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgRGV2QmFz ZSwNCj4gKyAgSU4gICAgIEVGSV9IQU5ETEUgICAgICAgICAgICAgIENvbnRyb2xsZXIsDQo+ICsg IElOICAgICBVSU5UOCAgICAgICAgICAgICAgICAgICBTbG90LA0KPiArICAgICBPVVQgQk9PTEVB TiAgICAgICAgICAgICAgICAgKk1lZGlhUHJlc2VudA0KPiArICApOw0KPiArI2VuZGlmDQo+ICsN Cj4gKyNpZmRlZiBEV01NQ19QQ0kNCj4gKy8qKg0KPiArICBTdG9wIFNEL01NQyBjYXJkIGNsb2Nr Lg0KPiArDQo+ICsgIFJlZmVyIHRvIFNEIEhvc3QgQ29udHJvbGxlciBTaW1wbGlmaWVkIHNwZWMg My4wIFNlY3Rpb24gMy4yLjIgZm9yIGRldGFpbHMuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBQY2lJ byAgICAgICAgICBUaGUgUENJIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiArICBAcGFyYW1baW5d IFNsb3QgICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5kIHRo ZSBjb21tYW5kIHRvLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgU3VjY2Vl ZCB0byBzdG9wIFNEL01NQyBjbG9jay4NCj4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBG YWlsIHRvIHN0b3AgU0QvTU1DIGNsb2NrLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4g K0R3TW1jSGNTdG9wQ2xvY2sgKA0KPiArICBJTiBFRklfUENJX0lPX1BST1RPQ09MICAgICpQY2lJ bywNCj4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICBTbG90DQo+ICsgICk7DQo+ICsNCj4g Ky8qKg0KPiArICBTRC9NTUMgY2FyZCBjbG9jayBzdXBwbHkuDQo+ICsNCj4gKyAgUmVmZXIgdG8g U0QgSG9zdCBDb250cm9sbGVyIFNpbXBsaWZpZWQgc3BlYyAzLjAgU2VjdGlvbiAzLjIuMSBmb3Ig ZGV0YWlscy4NCj4gKw0KPiArICBAcGFyYW1baW5dIFBjaUlvICAgICAgICAgIFRoZSBQQ0kgSU8g cHJvdG9jb2wgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gU2xvdCAgICAgICAgICAgVGhlIHNs b3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJkIHRvIHNlbmQgdGhlIGNvbW1hbmQgdG8uDQo+ICsgIEBw YXJhbVtpbl0gQ2xvY2tGcmVxICAgICAgVGhlIG1heCBjbG9jayBmcmVxdWVuY3kgdG8gYmUgc2V0 LiBUaGUgdW5pdCBpcyBLSHouDQo+ICsgIEBwYXJhbVtpbl0gQ2FwYWJpbGl0eSAgICAgVGhlIGNh cGFiaWxpdHkgb2YgdGhlIHNsb3QuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICBUaGUgY2xvY2sgaXMgc3VwcGxpZWQgc3VjY2Vzc2Z1bGx5Lg0KPiArICBAcmV0dmFsIE90aGVy cyAgICAgICAgICAgIFRoZSBjbG9jayBpc24ndCBzdXBwbGllZCBzdWNjZXNzZnVsbHkuDQo+ICsN Cj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRHdNbWNIY0Nsb2NrU3VwcGx5ICgNCj4gKyAgSU4g RUZJX1BDSV9JT19QUk9UT0NPTCAgICAqUGNpSW8sDQo+ICsgIElOIFVJTlQ4ICAgICAgICAgICAg ICAgICAgU2xvdCwNCj4gKyAgSU4gVUlOVDY0ICAgICAgICAgICAgICAgICBDbG9ja0ZyZXEsDQo+ ICsgIElOIERXX01NQ19IQ19TTE9UX0NBUCAgICAgQ2FwYWJpbGl0eQ0KPiArICApOw0KPiArI2Vs c2UNCj4gKy8qKg0KPiArICBTdG9wIFNEL01NQyBjYXJkIGNsb2NrLg0KPiArDQo+ICsgIFJlZmVy IHRvIFNEIEhvc3QgQ29udHJvbGxlciBTaW1wbGlmaWVkIHNwZWMgMy4wIFNlY3Rpb24gMy4yLjIg Zm9yIGRldGFpbHMuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBEZXZJbyAgICAgICAgICBUaGUgREVW SUNFIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgU3VjY2VlZCB0byBzdG9wIFNEL01NQyBjbG9jay4NCj4gKyAgQHJldHZhbCBPdGhlcnMg ICAgICAgICAgICBGYWlsIHRvIHN0b3AgU0QvTU1DIGNsb2NrLg0KPiArDQo+ICsqKi8NCj4gK0VG SV9TVEFUVVMNCj4gK0R3TW1jSGNTdG9wQ2xvY2sgKA0KPiArICBJTiAgVUlOVE4gICAgICAgICAg ICAgICAgICAgIERldkJhc2UNCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgIFNEL01NQyBjYXJk IGNsb2NrIHN1cHBseS4NCj4gKw0KPiArICBSZWZlciB0byBTRCBIb3N0IENvbnRyb2xsZXIgU2lt cGxpZmllZCBzcGVjIDMuMCBTZWN0aW9uIDMuMi4xIGZvciBkZXRhaWxzLg0KPiArDQo+ICsgIEBw YXJhbVtpbl0gRGV2SW8gICAgICAgICAgVGhlIERFVklDRSBJTyBwcm90b2NvbCBpbnN0YW5jZS4N Cj4gKyAgQHBhcmFtW2luXSBDbG9ja0ZyZXEgICAgICBUaGUgbWF4IGNsb2NrIGZyZXF1ZW5jeSB0 byBiZSBzZXQuIFRoZSB1bml0IGlzIEtIei4NCj4gKyAgQHBhcmFtW2luXSBDYXBhYmlsaXR5ICAg ICBUaGUgY2FwYWJpbGl0eSBvZiB0aGUgc2xvdC4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUND RVNTICAgICAgIFRoZSBjbG9jayBpcyBzdXBwbGllZCBzdWNjZXNzZnVsbHkuDQo+ICsgIEByZXR2 YWwgT3RoZXJzICAgICAgICAgICAgVGhlIGNsb2NrIGlzbid0IHN1cHBsaWVkIHN1Y2Nlc3NmdWxs eS4NCj4gKw0KPiArKiovDQo+ICtFRklfU1RBVFVTDQo+ICtEd01tY0hjQ2xvY2tTdXBwbHkgKA0K PiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgIERldkJhc2UsDQo+ICsgIElOIFVJTlQ2 NCAgICAgICAgICAgICAgICAgQ2xvY2tGcmVxLA0KPiArICBJTiBEV19NTUNfSENfU0xPVF9DQVAg ICAgIENhcGFiaWxpdHkNCj4gKyAgKTsNCj4gKyNlbmRpZg0KPiArDQo+ICsjaWYgMA0KPiArLyoq DQo+ICsgIFNEL01NQyBidXMgcG93ZXIgY29udHJvbC4NCj4gKw0KPiArICBSZWZlciB0byBTRCBI b3N0IENvbnRyb2xsZXIgU2ltcGxpZmllZCBzcGVjIDMuMCBTZWN0aW9uIDMuMyBmb3IgZGV0YWls cy4NCj4gKw0KPiArICBAcGFyYW1baW5dIFBjaUlvICAgICAgICAgIFRoZSBQQ0kgSU8gcHJvdG9j b2wgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gU2xvdCAgICAgICAgICAgVGhlIHNsb3QgbnVt YmVyIG9mIHRoZSBTRCBjYXJkIHRvIHNlbmQgdGhlIGNvbW1hbmQgdG8uDQo+ICsgIEBwYXJhbVtp bl0gUG93ZXJDdHJsICAgICAgVGhlIHZhbHVlIHNldHRpbmcgdG8gdGhlIHBvd2VyIGNvbnRyb2wg cmVnaXN0ZXIuDQo+ICsNCj4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgICAgICBUaGVyZSBpcyBh IFNEL01NQyBjYXJkIGF0dGFjaGVkLg0KPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgICAgIFRo ZXJlIGlzIG5vIGEgU0QvTU1DIGNhcmQgYXR0YWNoZWQuDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NU QVRVUw0KPiArRHdNbWNIY1Bvd2VyQ29udHJvbCAoDQo+ICsgIElOIEVGSV9QQ0lfSU9fUFJPVE9D T0wgICAgKlBjaUlvLA0KPiArICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgIFNsb3QsDQo+ICsg IElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgUG93ZXJDdHJsDQo+ICsgICk7DQo+ICsjZW5kaWYN Cj4gKw0KPiArI2lmZGVmIERXTU1DX1BDSQ0KPiArLyoqDQo+ICsgIFNldCB0aGUgU0QvTU1DIGJ1 cyB3aWR0aC4NCj4gKw0KPiArICBSZWZlciB0byBTRCBIb3N0IENvbnRyb2xsZXIgU2ltcGxpZmll ZCBzcGVjIDMuMCBTZWN0aW9uIDMuNCBmb3IgZGV0YWlscy4NCj4gKw0KPiArICBAcGFyYW1baW5d IFBjaUlvICAgICAgICAgIFRoZSBQQ0kgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ICsgIEBwYXJh bVtpbl0gU2xvdCAgICAgICAgICAgVGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJkIHRvIHNl bmQgdGhlIGNvbW1hbmQgdG8uDQo+ICsgIEBwYXJhbVtpbl0gQnVzV2lkdGggICAgICAgVGhlIGJ1 cyB3aWR0aCB1c2VkIGJ5IHRoZSBTRC9NTUMgZGV2aWNlLCBpdCBtdXN0IGJlIDEsIDQgb3IgOC4N Cj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBidXMgd2lkdGggaXMgc2V0 IHN1Y2Nlc3NmdWxseS4NCj4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgYnVzIHdp ZHRoIGlzbid0IHNldCBzdWNjZXNzZnVsbHkuDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0K PiArRHdNbWNIY1NldEJ1c1dpZHRoICgNCj4gKyAgSU4gRUZJX1BDSV9JT19QUk9UT0NPTCAgICAq UGNpSW8sDQo+ICsgIElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgU2xvdCwNCj4gKyAgSU4gQk9P TEVBTiAgICAgICAgICAgICAgICBJc0RkciwNCj4gKyAgSU4gVUlOVDE2ICAgICAgICAgICAgICAg ICBCdXNXaWR0aA0KPiArICApOw0KPiArI2Vsc2UNCj4gKy8qKg0KPiArICBTZXQgdGhlIFNEL01N QyBidXMgd2lkdGguDQo+ICsNCj4gKyAgUmVmZXIgdG8gU0QgSG9zdCBDb250cm9sbGVyIFNpbXBs aWZpZWQgc3BlYyAzLjAgU2VjdGlvbiAzLjQgZm9yIGRldGFpbHMuDQo+ICsNCj4gKyAgQHBhcmFt W2luXSBEZXZJbyAgICAgICAgICBUaGUgREVWSUNFIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiAr ICBAcGFyYW1baW5dIEJ1c1dpZHRoICAgICAgIFRoZSBidXMgd2lkdGggdXNlZCBieSB0aGUgU0Qv TU1DIGRldmljZSwgaXQgbXVzdCBiZSAxLCA0IG9yIDguDQo+ICsNCj4gKyAgQHJldHZhbCBFRklf U1VDQ0VTUyAgICAgICBUaGUgYnVzIHdpZHRoIGlzIHNldCBzdWNjZXNzZnVsbHkuDQo+ICsgIEBy ZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIGJ1cyB3aWR0aCBpc24ndCBzZXQgc3VjY2Vzc2Z1 bGx5Lg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0R3TW1jSGNTZXRCdXNXaWR0aCAo DQo+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgRGV2QmFzZSwNCj4gKyAgSU4gQk9P TEVBTiAgICAgICAgICAgICAgICBJc0RkciwNCj4gKyAgSU4gVUlOVDE2ICAgICAgICAgICAgICAg ICBCdXNXaWR0aA0KPiArICApOw0KPiArI2VuZGlmDQo+ICsNCj4gKyNpZmRlZiBEV01NQ19QQ0kN Cj4gKy8qKg0KPiArICBTdXBwbHkgU0QvTU1DIGNhcmQgd2l0aCBsb3dlc3QgY2xvY2sgZnJlcXVl bmN5IGF0IGluaXRpYWxpemF0aW9uLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gUGNpSW8gICAgICAg ICAgVGhlIFBDSSBJTyBwcm90b2NvbCBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtW2luXSBTbG90ICAg ICAgICAgICBUaGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0aGUgY29tbWFu ZCB0by4NCj4gKyAgQHBhcmFtW2luXSBDYXBhYmlsaXR5ICAgICBUaGUgY2FwYWJpbGl0eSBvZiB0 aGUgc2xvdC4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBjbG9jayBp cyBzdXBwbGllZCBzdWNjZXNzZnVsbHkuDQo+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAg VGhlIGNsb2NrIGlzbid0IHN1cHBsaWVkIHN1Y2Nlc3NmdWxseS4NCj4gKw0KPiArKiovDQo+ICtF RklfU1RBVFVTDQo+ICtEd01tY0hjSW5pdENsb2NrRnJlcSAoDQo+ICsgIElOIEVGSV9QQ0lfSU9f UFJPVE9DT0wgICAgKlBjaUlvLA0KPiArICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgIFNsb3Qs DQo+ICsgIElOIERXX01NQ19IQ19TTE9UX0NBUCAgICAgQ2FwYWJpbGl0eQ0KPiArICApOw0KPiAr I2Vsc2UNCj4gKy8qKg0KPiArICBTdXBwbHkgU0QvTU1DIGNhcmQgd2l0aCBsb3dlc3QgY2xvY2sg ZnJlcXVlbmN5IGF0IGluaXRpYWxpemF0aW9uLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gRGV2SW8g ICAgICAgICAgVGhlIERFVklDRSBJTyBwcm90b2NvbCBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtW2lu XSBDYXBhYmlsaXR5ICAgICBUaGUgY2FwYWJpbGl0eSBvZiB0aGUgc2xvdC4NCj4gKw0KPiArICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBjbG9jayBpcyBzdXBwbGllZCBzdWNjZXNzZnVs bHkuDQo+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIGNsb2NrIGlzbid0IHN1cHBs aWVkIHN1Y2Nlc3NmdWxseS4NCj4gKw0KPiArKiovDQo+ICtFRklfU1RBVFVTDQo+ICtEd01tY0hj SW5pdENsb2NrRnJlcSAoDQo+ICsgIElOIFVJTlROICAgICAgICAgICAgICAgICAgRGV2QmFzZSwN Cj4gKyAgSU4gRFdfTU1DX0hDX1NMT1RfQ0FQICAgICBDYXBhYmlsaXR5DQo+ICsgICk7DQo+ICsj ZW5kaWYNCj4gKw0KPiArI2lmZGVmIERXTU1DX1BDSQ0KPiArLyoqDQo+ICsgIFN1cHBseSBTRC9N TUMgY2FyZCB3aXRoIG1heGltdW0gdm9sdGFnZSBhdCBpbml0aWFsaXphdGlvbi4NCj4gKw0KPiAr ICBSZWZlciB0byBTRCBIb3N0IENvbnRyb2xsZXIgU2ltcGxpZmllZCBzcGVjIDMuMCBTZWN0aW9u IDMuMyBmb3IgZGV0YWlscy4NCj4gKw0KPiArICBAcGFyYW1baW5dIFBjaUlvICAgICAgICAgIFRo ZSBQQ0kgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gU2xvdCAgICAgICAg ICAgVGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJkIHRvIHNlbmQgdGhlIGNvbW1hbmQgdG8u DQo+ICsgIEBwYXJhbVtpbl0gQ2FwYWJpbGl0eSAgICAgVGhlIGNhcGFiaWxpdHkgb2YgdGhlIHNs b3QuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgdm9sdGFnZSBpcyBz dXBwbGllZCBzdWNjZXNzZnVsbHkuDQo+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhl IHZvbHRhZ2UgaXNuJ3Qgc3VwcGxpZWQgc3VjY2Vzc2Z1bGx5Lg0KPiArDQo+ICsqKi8NCj4gK0VG SV9TVEFUVVMNCj4gK0R3TW1jSGNJbml0UG93ZXJWb2x0YWdlICgNCj4gKyAgSU4gRUZJX1BDSV9J T19QUk9UT0NPTCAgICAqUGNpSW8sDQo+ICsgIElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgU2xv dCwNCj4gKyAgSU4gRFdfTU1DX0hDX1NMT1RfQ0FQICAgICBDYXBhYmlsaXR5DQo+ICsgICk7DQo+ ICsjZWxzZQ0KPiArLyoqDQo+ICsgIFN1cHBseSBTRC9NTUMgY2FyZCB3aXRoIG1heGltdW0gdm9s dGFnZSBhdCBpbml0aWFsaXphdGlvbi4NCj4gKw0KPiArICBSZWZlciB0byBTRCBIb3N0IENvbnRy b2xsZXIgU2ltcGxpZmllZCBzcGVjIDMuMCBTZWN0aW9uIDMuMyBmb3IgZGV0YWlscy4NCj4gKw0K PiArICBAcGFyYW1baW5dIERldklvICAgICAgICAgIFRoZSBERVZJQ0UgSU8gcHJvdG9jb2wgaW5z dGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gQ2FwYWJpbGl0eSAgICAgVGhlIGNhcGFiaWxpdHkgb2Yg dGhlIHNsb3QuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgdm9sdGFn ZSBpcyBzdXBwbGllZCBzdWNjZXNzZnVsbHkuDQo+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAg ICAgVGhlIHZvbHRhZ2UgaXNuJ3Qgc3VwcGxpZWQgc3VjY2Vzc2Z1bGx5Lg0KPiArDQo+ICsqKi8N Cj4gK0VGSV9TVEFUVVMNCj4gK0R3TW1jSGNJbml0UG93ZXJWb2x0YWdlICgNCj4gKyAgSU4gVUlO VE4gICAgICAgICAgICAgICAgICBEZXZCYXNlLA0KPiArICBJTiBEV19NTUNfSENfU0xPVF9DQVAg ICAgIENhcGFiaWxpdHkNCj4gKyAgKTsNCj4gKyNlbmRpZg0KPiArDQo+ICsjaWZkZWYgRFdNTUNf UENJDQo+ICsvKioNCj4gKyAgSW5pdGlhbGl6ZSB0aGUgVGltZW91dCBDb250cm9sIHJlZ2lzdGVy IHdpdGggbW9zdCBjb25zZXJ2YXRpdmUgdmFsdWUgYXQgaW5pdGlhbGl6YXRpb24uDQo+ICsNCj4g KyAgUmVmZXIgdG8gU0QgSG9zdCBDb250cm9sbGVyIFNpbXBsaWZpZWQgc3BlYyAzLjAgU2VjdGlv biAyLjIuMTUgZm9yIGRldGFpbHMuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBQY2lJbyAgICAgICAg ICBUaGUgUENJIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiArICBAcGFyYW1baW5dIFNsb3QgICAg ICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5kIHRoZSBjb21tYW5k IHRvLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIHRpbWVvdXQgY29u dHJvbCByZWdpc3RlciBpcyBjb25maWd1cmVkIHN1Y2Nlc3NmdWxseS4NCj4gKyAgQHJldHZhbCBP dGhlcnMgICAgICAgICAgICBUaGUgdGltZW91dCBjb250cm9sIHJlZ2lzdGVyIGlzbid0IGNvbmZp Z3VyZWQgc3VjY2Vzc2Z1bGx5Lg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0R3TW1j SGNJbml0VGltZW91dEN0cmwgKA0KPiArICBJTiBFRklfUENJX0lPX1BST1RPQ09MICAgICpQY2lJ bywNCj4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICBTbG90DQo+ICsgICk7DQo+ICsjZWxz ZQ0KPiArLyoqDQo+ICsgIEluaXRpYWxpemUgdGhlIFRpbWVvdXQgQ29udHJvbCByZWdpc3RlciB3 aXRoIG1vc3QgY29uc2VydmF0aXZlIHZhbHVlIGF0IGluaXRpYWxpemF0aW9uLg0KPiArDQo+ICsg IFJlZmVyIHRvIFNEIEhvc3QgQ29udHJvbGxlciBTaW1wbGlmaWVkIHNwZWMgMy4wIFNlY3Rpb24g Mi4yLjE1IGZvciBkZXRhaWxzLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gRGV2SW8gICAgICAgICAg VGhlIERFVklDRSBJTyBwcm90b2NvbCBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtW2luXSBTbG90ICAg ICAgICAgICBUaGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0aGUgY29tbWFu ZCB0by4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSB0aW1lb3V0IGNv bnRyb2wgcmVnaXN0ZXIgaXMgY29uZmlndXJlZCBzdWNjZXNzZnVsbHkuDQo+ICsgIEByZXR2YWwg T3RoZXJzICAgICAgICAgICAgVGhlIHRpbWVvdXQgY29udHJvbCByZWdpc3RlciBpc24ndCBjb25m aWd1cmVkIHN1Y2Nlc3NmdWxseS4NCj4gKw0KPiArKiovDQo+ICtFRklfU1RBVFVTDQo+ICtEd01t Y0hjSW5pdFRpbWVvdXRDdHJsICgNCj4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICBE ZXZCYXNlDQo+ICsgICk7DQo+ICsjZW5kaWYNCj4gKw0KPiArI2lmZGVmIERXTU1DX1BDSQ0KPiAr LyoqDQo+ICsgIEluaXRpYWwgU0QvTU1DIGhvc3QgY29udHJvbGxlciB3aXRoIGxvd2VzdCBjbG9j ayBmcmVxdWVuY3ksIG1heCBwb3dlciBhbmQgbWF4IHRpbWVvdXQgdmFsdWUNCj4gKyAgYXQgaW5p dGlhbGl6YXRpb24uDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBQY2lJbyAgICAgICAgICBUaGUgUENJ IElPIHByb3RvY29sIGluc3RhbmNlLg0KPiArICBAcGFyYW1baW5dIFNsb3QgICAgICAgICAgIFRo ZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5kIHRoZSBjb21tYW5kIHRvLg0KPiAr ICBAcGFyYW1baW5dIENhcGFiaWxpdHkgICAgIFRoZSBjYXBhYmlsaXR5IG9mIHRoZSBzbG90Lg0K PiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIGhvc3QgY29udHJvbGxlciBp cyBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuDQo+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAg ICAgVGhlIGhvc3QgY29udHJvbGxlciBpc24ndCBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuDQo+ ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRHdNbWNIY0luaXRIb3N0ICgNCj4gKyAgSU4g RUZJX1BDSV9JT19QUk9UT0NPTCAgICAqUGNpSW8sDQo+ICsgIElOIFVJTlQ4ICAgICAgICAgICAg ICAgICAgU2xvdCwNCj4gKyAgSU4gRFdfTU1DX0hDX1NMT1RfQ0FQICAgICBDYXBhYmlsaXR5DQo+ ICsgICk7DQo+ICsjZWxzZQ0KPiArLyoqDQo+ICsgIEluaXRpYWwgU0QvTU1DIGhvc3QgY29udHJv bGxlciB3aXRoIGxvd2VzdCBjbG9jayBmcmVxdWVuY3ksIG1heCBwb3dlciBhbmQNCj4gKyAgbWF4 IHRpbWVvdXQgdmFsdWUgYXQgaW5pdGlhbGl6YXRpb24uDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBE ZXZJbyAgICAgICAgICBUaGUgREVWSUNFIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiArICBAcGFy YW1baW5dIENhcGFiaWxpdHkgICAgIFRoZSBjYXBhYmlsaXR5IG9mIHRoZSBzbG90Lg0KPiArDQo+ ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIGhvc3QgY29udHJvbGxlciBpcyBpbml0 aWFsaXplZCBzdWNjZXNzZnVsbHkuDQo+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhl IGhvc3QgY29udHJvbGxlciBpc24ndCBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuDQo+ICsNCj4g KyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRHdNbWNIY0luaXRIb3N0ICgNCj4gKyAgSU4gIFVJTlRO ICAgICAgICAgICAgICAgICAgICBEZXZCYXNlLA0KPiArICBJTiBEV19NTUNfSENfU0xPVF9DQVAg ICAgICAgIENhcGFiaWxpdHkNCj4gKyAgKTsNCj4gKyNlbmRpZg0KPiArDQo+ICsjZW5kaWYgLyog X0RXX01NQ19IQ0lfSF8gKi8NCj4gZGlmZiAtLWdpdCBhL0VtYmVkZGVkUGtnL0luY2x1ZGUvUHJv dG9jb2wvUGxhdGZvcm1Ed01tYy5oIGIvRW1iZWRkZWRQa2cvSW5jbHVkZS9Qcm90b2NvbC9QbGF0 Zm9ybUR3TW1jLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAw Li5hY2JjM2UxNTNkYWMNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9FbWJlZGRlZFBrZy9JbmNs dWRlL1Byb3RvY29sL1BsYXRmb3JtRHdNbWMuaA0KPiBAQCAtMCwwICsxLDc5IEBADQo+ICsvKiog QGZpbGUNCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTgsIExpbmFyby4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4NCj4gKw0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0 ZXJpYWxzIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUNCj4gKyAgdW5kZXIgdGhlIHRl cm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZSB3aGljaCBhY2NvbXBhbmllcyB0 aGlzDQo+ICsgIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5 IGJlIGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGlj ZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUg QlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVT IE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElF RC4NCj4gKw0KPiArKiovDQo+ICsNCj4gKyNpZm5kZWYgX19QTEFURk9STV9EV19NTUNfSF9fDQo+ ICsjZGVmaW5lIF9fUExBVEZPUk1fRFdfTU1DX0hfXw0KPiArDQo+ICt0eXBlZGVmIGVudW0gew0K PiArICBSZW1vdmFibGVTbG90LA0KPiArICBFbWJlZGRlZFNsb3QsDQo+ICsgIFNoYXJlZEJ1c1Ns b3QsDQo+ICsgIFVua25vd25TbG90DQo+ICt9IEVGSV9TRF9NTUNfU0xPVF9UWVBFOw0KPiArDQo+ ICt0eXBlZGVmIGVudW0gew0KPiArICBVbmtub3duQ2FyZFR5cGUsDQo+ICsgIFNkQ2FyZFR5cGUs DQo+ICsgIFNkaW9DYXJkVHlwZSwNCj4gKyAgTW1jQ2FyZFR5cGUsDQo+ICsgIEVtbWNDYXJkVHlw ZQ0KPiArfSBTRF9NTUNfQ0FSRF9UWVBFOw0KPiArDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsg IFVJTlQzMiAgICAgICAgRGVmYXVsdFNwZWVkOjE7ICAgIC8vIGJpdCAwDQo+ICsgIFVJTlQzMiAg ICAgICAgSGlnaFNwZWVkOjE7ICAgICAgIC8vIGJpdCAxDQo+ICsgIFVJTlQzMiAgICAgICAgU2Ry MTI6MTsgICAgICAgICAgIC8vIGJpdCAyDQo+ICsgIFVJTlQzMiAgICAgICAgU2RyMjU6MTsgICAg ICAgICAgIC8vIGJpdCAzDQo+ICsgIFVJTlQzMiAgICAgICAgU2RyNTA6MTsgICAgICAgICAgIC8v IGJpdCA0DQo+ICsgIFVJTlQzMiAgICAgICAgU2RyMTA0OjE7ICAgICAgICAgIC8vIGJpdCA1DQo+ ICsgIFVJTlQzMiAgICAgICAgRGRyNTA6MTsgICAgICAgICAgIC8vIGJpdCA2DQo+ICsgIFVJTlQz MiAgICAgICAgU3lzQnVzNjQ6MTsgICAgICAgIC8vIGJpdCA3DQo+ICsgIFVJTlQzMiAgICAgICAg QnVzV2lkdGg6NDsgICAgICAgIC8vIGJpdCAxMTo4DQo+ICsgIFVJTlQzMiAgICAgICAgU2xvdFR5 cGU6MjsgICAgICAgIC8vIGJpdCAxMzoxMg0KPiArICBVSU5UMzIgICAgICAgIENhcmRUeXBlOjM7 ICAgICAgICAvLyBiaXQgMTY6MTQNCj4gKyAgVUlOVDMyICAgICAgICBWb2x0YWdlMTg6MTsgICAg ICAgLy8gYml0IDE3DQo+ICsgIFVJTlQzMiAgICAgICAgVm9sdGFnZTMwOjE7ICAgICAgIC8vIGJp dCAxOA0KPiArICBVSU5UMzIgICAgICAgIFZvbHRhZ2UzMzoxOyAgICAgICAvLyBiaXQgMTkNCj4g KyAgVUlOVDMyICAgICAgICBCYXNlQ2xrRnJlcTsNCj4gKyAgRUZJX0hBTkRMRSAgICBDb250cm9s bGVyOw0KPiArfSBEV19NTUNfSENfU0xPVF9DQVA7DQo+ICsNCj4gKy8vDQo+ICsvLyBQcm90b2Nv bCBpbnRlcmZhY2Ugc3RydWN0dXJlDQo+ICsvLw0KPiArdHlwZWRlZiBzdHJ1Y3QgX1BMQVRGT1JN X0RXX01NQ19QUk9UT0NPTCAgICAgICBQTEFURk9STV9EV19NTUNfUFJPVE9DT0w7DQo+ICsNCj4g K3R5cGVkZWYNCj4gK0VGSV9TVEFUVVMNCj4gKyhFRklBUEkgKlBMQVRGT1JNX0RXX01NQ19HRVRf Q0FQQUJJTElUWSkgKA0KPiArICBJTiAgICAgRUZJX0hBTkRMRSAgICAgICAgICAgICBDb250cm9s bGVyLA0KPiArICBJTiAgICAgVUlOVDggICAgICAgICAgICAgICAgICBTbG90LA0KPiArICAgICBP VVQgRFdfTU1DX0hDX1NMT1RfQ0FQICAgICAqQ2FwYWJpbGl0eQ0KPiArICApOw0KPiArDQo+ICt0 eXBlZGVmDQo+ICtCT09MRUFODQo+ICsoRUZJQVBJICpQTEFURk9STV9EV19NTUNfQ0FSRF9ERVRF Q1QpICgNCj4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgQ29udHJvbGxlciwNCj4g KyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAgICAgU2xvdA0KPiArICApOw0KPiArDQo+ICtz dHJ1Y3QgX1BMQVRGT1JNX0RXX01NQ19QUk9UT0NPTCB7DQo+ICsgIFBMQVRGT1JNX0RXX01NQ19H RVRfQ0FQQUJJTElUWSAgICAgICAgICAgICAgIEdldENhcGFiaWxpdHk7DQo+ICsgIFBMQVRGT1JN X0RXX01NQ19DQVJEX0RFVEVDVCAgICAgICAgICAgICAgICAgIENhcmREZXRlY3Q7DQo+ICt9Ow0K PiArDQo+ICtleHRlcm4gRUZJX0dVSUQgZ1BsYXRmb3JtRHdNbWNQcm90b2NvbEd1aWQ7DQo+ICsN Cj4gKyNlbmRpZiAvKiBfX1BMQVRGT1JNX0RXX01NQ19IX18gKi8NCj4gZGlmZiAtLWdpdCBhL0Vt YmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Db21wb25lbnROYW1lLmMgYi9FbWJlZGRlZFBr Zy9Ecml2ZXJzL0R3TW1jSGNEeGUvQ29tcG9uZW50TmFtZS5jDQo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMWVkYWRlNjlkMDkxDQo+IC0tLSAvZGV2L251bGwN Cj4gKysrIGIvRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0NvbXBvbmVudE5hbWUuYw0K PiBAQCAtMCwwICsxLDIxNCBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIFVFRkkgQ29tcG9uZW50IE5h bWUoMikgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gZm9yIERlc2lnbndhcmUgU0QvTU1DIGhvc3QN Cj4gKyAgY29udHJvbGxlciBkcml2ZXIuDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE1LCBJ bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsgIENvcHlyaWdo dCAoYykgMjAxOCwgTGluYXJvIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsNCj4g KyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbGljZW5z ZWQgYW5kIG1hZGUgYXZhaWxhYmxlDQo+ICsgIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9u cyBvZiB0aGUgQlNEIExpY2Vuc2Ugd2hpY2ggYWNjb21wYW5pZXMgdGhpcw0KPiArICBkaXN0cmli dXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiAr ICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4g KyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFO ICJBUyBJUyIgQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElP TlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsNCj4gKyoqLw0K PiArDQo+ICsjaW5jbHVkZSAiRHdNbWNIY0R4ZS5oIg0KPiArDQo+ICsvLw0KPiArLy8gRUZJIENv bXBvbmVudCBOYW1lIFByb3RvY29sDQo+ICsvLw0KPiArR0xPQkFMX1JFTU9WRV9JRl9VTlJFRkVS RU5DRUQgRUZJX0NPTVBPTkVOVF9OQU1FX1BST1RPQ09MIGdEd01tY0hjQ29tcG9uZW50TmFtZSA9 IHsNCj4gKyAgRHdNbWNIY0NvbXBvbmVudE5hbWVHZXREcml2ZXJOYW1lLA0KPiArICBEd01tY0hj Q29tcG9uZW50TmFtZUdldENvbnRyb2xsZXJOYW1lLA0KPiArICAiZW5nIg0KPiArfTsNCj4gKw0K PiArLy8NCj4gKy8vIEVGSSBDb21wb25lbnQgTmFtZSAyIFByb3RvY29sDQo+ICsvLw0KPiArR0xP QkFMX1JFTU9WRV9JRl9VTlJFRkVSRU5DRUQgRUZJX0NPTVBPTkVOVF9OQU1FMl9QUk9UT0NPTCBn RHdNbWNIY0NvbXBvbmVudE5hbWUyID0gew0KPiArICAoRUZJX0NPTVBPTkVOVF9OQU1FMl9HRVRf RFJJVkVSX05BTUUpICAgICBEd01tY0hjQ29tcG9uZW50TmFtZUdldERyaXZlck5hbWUsDQo+ICsg IChFRklfQ09NUE9ORU5UX05BTUUyX0dFVF9DT05UUk9MTEVSX05BTUUpIER3TW1jSGNDb21wb25l bnROYW1lR2V0Q29udHJvbGxlck5hbWUsDQo+ICsgICJlbiINCj4gK307DQo+ICsNCj4gK0dMT0JB TF9SRU1PVkVfSUZfVU5SRUZFUkVOQ0VEIEVGSV9VTklDT0RFX1NUUklOR19UQUJMRSBtRHdNbWNI Y0RyaXZlck5hbWVUYWJsZVtdID0gew0KPiArICB7ICJlbmc7ZW4iLCBMIkRlc2lnbndhcmUgU2Qv TW1jIEhvc3QgQ29udHJvbGxlciBEcml2ZXIiIH0sDQo+ICsgIHsgTlVMTCAsIE5VTEwgfQ0KPiAr fTsNCj4gKw0KPiArR0xPQkFMX1JFTU9WRV9JRl9VTlJFRkVSRU5DRUQgRUZJX1VOSUNPREVfU1RS SU5HX1RBQkxFIG1Ed01tY0hjQ29udHJvbGxlck5hbWVUYWJsZVtdID0gew0KPiArICB7ICJlbmc7 ZW4iLCBMIkRlc2lnbndhcmUgU2QvTW1jIEhvc3QgQ29udHJvbGxlciIgfSwNCj4gKyAgeyBOVUxM ICwgTlVMTCB9DQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAgUmV0cmlldmVzIGEgVW5pY29kZSBz dHJpbmcgdGhhdCBpcyB0aGUgdXNlciByZWFkYWJsZSBuYW1lIG9mIHRoZSBkcml2ZXIuDQo+ICsN Cj4gKyAgVGhpcyBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIHVzZXIgcmVhZGFibGUgbmFtZSBvZiBh IGRyaXZlciBpbiB0aGUgZm9ybSBvZiBhDQo+ICsgIFVuaWNvZGUgc3RyaW5nLiBJZiB0aGUgZHJp dmVyIHNwZWNpZmllZCBieSBUaGlzIGhhcyBhIHVzZXIgcmVhZGFibGUgbmFtZSBpbg0KPiArICB0 aGUgbGFuZ3VhZ2Ugc3BlY2lmaWVkIGJ5IExhbmd1YWdlLCB0aGVuIGEgcG9pbnRlciB0byB0aGUg ZHJpdmVyIG5hbWUgaXMNCj4gKyAgcmV0dXJuZWQgaW4gRHJpdmVyTmFtZSwgYW5kIEVGSV9TVUND RVNTIGlzIHJldHVybmVkLiBJZiB0aGUgZHJpdmVyIHNwZWNpZmllZA0KPiArICBieSBUaGlzIGRv ZXMgbm90IHN1cHBvcnQgdGhlIGxhbmd1YWdlIHNwZWNpZmllZCBieSBMYW5ndWFnZSwNCj4gKyAg dGhlbiBFRklfVU5TVVBQT1JURUQgaXMgcmV0dXJuZWQuDQo+ICsNCj4gKyAgQHBhcmFtICBUaGlz W2luXSAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklfQ09NUE9ORU5UX05BTUUyX1BS T1RPQ09MIG9yDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9DT01QT05F TlRfTkFNRV9QUk9UT0NPTCBpbnN0YW5jZS4NCj4gKw0KPiArICBAcGFyYW0gIExhbmd1YWdlW2lu XSAgICAgICAgICBBIHBvaW50ZXIgdG8gYSBOdWxsLXRlcm1pbmF0ZWQgQVNDSUkgc3RyaW5nDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5IGluZGljYXRpbmcgdGhlIGxh bmd1YWdlLiBUaGlzIGlzIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs YW5ndWFnZSBvZiB0aGUgZHJpdmVyIG5hbWUgdGhhdCB0aGUgY2FsbGVyIGlzDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RpbmcsIGFuZCBpdCBtdXN0IG1hdGNoIG9u ZSBvZiB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VzIHNw ZWNpZmllZCBpbiBTdXBwb3J0ZWRMYW5ndWFnZXMuIFRoZQ0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBudW1iZXIgb2YgbGFuZ3VhZ2VzIHN1cHBvcnRlZCBieSBhIGRyaXZlciBp cyB1cA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgZHJpdmVyIHdy aXRlci4gTGFuZ3VhZ2UgaXMgc3BlY2lmaWVkDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGluIFJGQyA0NjQ2IG9yIElTTyA2MzktMiBsYW5ndWFnZSBjb2RlIGZvcm1hdC4NCj4g Kw0KPiArICBAcGFyYW0gIERyaXZlck5hbWVbb3V0XSAgICAgICBBIHBvaW50ZXIgdG8gdGhlIFVu aWNvZGUgc3RyaW5nIHRvIHJldHVybi4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVGhpcyBVbmljb2RlIHN0cmluZyBpcyB0aGUgbmFtZSBvZiB0aGUNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZHJpdmVyIHNwZWNpZmllZCBieSBUaGlzIGluIHRoZSBsYW5n dWFnZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQgYnkgTGFu Z3VhZ2UuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIFVuaWNv ZGUgc3RyaW5nIGZvciB0aGUgRHJpdmVyIHNwZWNpZmllZCBieQ0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBUaGlzIGFuZCB0aGUgbGFuZ3VhZ2Ugc3BlY2lmaWVkIGJ5IExhbmd1 YWdlIHdhcw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lZCBpbiBE cml2ZXJOYW1lLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIExhbmd1 YWdlIGlzIE5VTEwuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgRHJp dmVyTmFtZSBpcyBOVUxMLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAg IFRoZSBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMgZG9lcyBub3Qgc3VwcG9ydA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbGFuZ3VhZ2Ugc3BlY2lmaWVkIGJ5IExhbmd1 YWdlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArRHdNbWNIY0Nv bXBvbmVudE5hbWVHZXREcml2ZXJOYW1lICgNCj4gKyAgSU4gIEVGSV9DT01QT05FTlRfTkFNRV9Q Uk9UT0NPTCAgICAgKlRoaXMsDQo+ICsgIElOICBDSEFSOCAgICAgICAgICAgICAgICAgICAgICAg ICAgICpMYW5ndWFnZSwNCj4gKyAgT1VUIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAg KipEcml2ZXJOYW1lDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIExvb2t1cFVuaWNvZGVTdHJp bmcyICgNCj4gKyAgICAgICAgICAgTGFuZ3VhZ2UsDQo+ICsgICAgICAgICAgIFRoaXMtPlN1cHBv cnRlZExhbmd1YWdlcywNCj4gKyAgICAgICAgICAgbUR3TW1jSGNEcml2ZXJOYW1lVGFibGUsDQo+ ICsgICAgICAgICAgIERyaXZlck5hbWUsDQo+ICsgICAgICAgICAgIChCT09MRUFOKShUaGlzID09 ICZnRHdNbWNIY0NvbXBvbmVudE5hbWUpDQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+ICsNCj4g Ky8qKg0KPiArICBSZXRyaWV2ZXMgYSBVbmljb2RlIHN0cmluZyB0aGF0IGlzIHRoZSB1c2VyIHJl YWRhYmxlIG5hbWUgb2YgdGhlIGNvbnRyb2xsZXINCj4gKyAgdGhhdCBpcyBiZWluZyBtYW5hZ2Vk IGJ5IGEgZHJpdmVyLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gcmV0cmlldmVzIHRoZSB1c2Vy IHJlYWRhYmxlIG5hbWUgb2YgdGhlIGNvbnRyb2xsZXIgc3BlY2lmaWVkIGJ5DQo+ICsgIENvbnRy b2xsZXJIYW5kbGUgYW5kIENoaWxkSGFuZGxlIGluIHRoZSBmb3JtIG9mIGEgVW5pY29kZSBzdHJp bmcuIElmIHRoZQ0KPiArICBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMgaGFzIGEgdXNlciByZWFk YWJsZSBuYW1lIGluIHRoZSBsYW5ndWFnZSBzcGVjaWZpZWQgYnkNCj4gKyAgTGFuZ3VhZ2UsIHRo ZW4gYSBwb2ludGVyIHRvIHRoZSBjb250cm9sbGVyIG5hbWUgaXMgcmV0dXJuZWQgaW4gQ29udHJv bGxlck5hbWUsDQo+ICsgIGFuZCBFRklfU1VDQ0VTUyBpcyByZXR1cm5lZC4gIElmIHRoZSBkcml2 ZXIgc3BlY2lmaWVkIGJ5IFRoaXMgaXMgbm90IGN1cnJlbnRseQ0KPiArICBtYW5hZ2luZyB0aGUg Y29udHJvbGxlciBzcGVjaWZpZWQgYnkgQ29udHJvbGxlckhhbmRsZSBhbmQgQ2hpbGRIYW5kbGUs DQo+ICsgIHRoZW4gRUZJX1VOU1VQUE9SVEVEIGlzIHJldHVybmVkLiAgSWYgdGhlIGRyaXZlciBz cGVjaWZpZWQgYnkgVGhpcyBkb2VzIG5vdA0KPiArICBzdXBwb3J0IHRoZSBsYW5ndWFnZSBzcGVj aWZpZWQgYnkgTGFuZ3VhZ2UsIHRoZW4gRUZJX1VOU1VQUE9SVEVEIGlzIHJldHVybmVkLg0KPiAr DQo+ICsgIEBwYXJhbSAgVGhpc1tpbl0gICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJ X0NPTVBPTkVOVF9OQU1FMl9QUk9UT0NPTCBvcg0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBFRklfQ09NUE9ORU5UX05BTUVfUFJPVE9DT0wgaW5zdGFuY2UuDQo+ICsNCj4gKyAg QHBhcmFtICBDb250cm9sbGVySGFuZGxlW2luXSAgVGhlIGhhbmRsZSBvZiBhIGNvbnRyb2xsZXIg dGhhdCB0aGUgZHJpdmVyDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNp ZmllZCBieSBUaGlzIGlzIG1hbmFnaW5nLiAgVGhpcyBoYW5kbGUNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIHRoZSBjb250cm9sbGVyIHdob3NlIG5hbWUgaXMg dG8gYmUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZWQuDQo+ICsN Cj4gKyAgQHBhcmFtICBDaGlsZEhhbmRsZVtpbl0gICAgICAgVGhlIGhhbmRsZSBvZiB0aGUgY2hp bGQgY29udHJvbGxlciB0byByZXRyaWV2ZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0aGUgbmFtZSBvZi4gIFRoaXMgaXMgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF5IGJlIE5VTEwuICBJdCB3aWxsIGJl IE5VTEwgZm9yIGRldmljZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2 ZXJzLiAgSXQgd2lsbCBhbHNvIGJlIE5VTEwgZm9yIGEgYnVzIGRyaXZlcnMNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB3aXNoIHRvIHJldHJpZXZlIHRoZSBuYW1lIG9m IHRoZSBidXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlci4g IEl0IHdpbGwgbm90IGJlIE5VTEwgZm9yIGEgYnVzDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRyaXZlciB0aGF0IHdpc2hlcyB0byByZXRyaWV2ZSB0aGUgbmFtZSBvZiBhDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkIGNvbnRyb2xsZXIuDQo+ICsN Cj4gKyAgQHBhcmFtICBMYW5ndWFnZVtpbl0gICAgICAgICAgQSBwb2ludGVyIHRvIGEgTnVsbC10 ZXJtaW5hdGVkIEFTQ0lJIHN0cmluZw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBhcnJheSBpbmRpY2F0aW5nIHRoZSBsYW5ndWFnZS4gIFRoaXMgaXMgdGhlDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlIG9mIHRoZSBkcml2ZXIgbmFtZSB0aGF0 IHRoZSBjYWxsZXIgaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz dGluZywgYW5kIGl0IG11c3QgbWF0Y2ggb25lIG9mIHRoZQ0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsYW5ndWFnZXMgc3BlY2lmaWVkIGluIFN1cHBvcnRlZExhbmd1YWdlcy4g VGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlciBvZiBsYW5ndWFn ZXMgc3VwcG9ydGVkIGJ5IGEgZHJpdmVyIGlzIHVwDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRvIHRoZSBkcml2ZXIgd3JpdGVyLiBMYW5ndWFnZSBpcyBzcGVjaWZpZWQgaW4N Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkZDIDQ2NDYgb3IgSVNPIDYzOS0y IGxhbmd1YWdlIGNvZGUgZm9ybWF0Lg0KPiArDQo+ICsgIEBwYXJhbSAgQ29udHJvbGxlck5hbWVb b3V0XSAgIEEgcG9pbnRlciB0byB0aGUgVW5pY29kZSBzdHJpbmcgdG8gcmV0dXJuLg0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIFVuaWNvZGUgc3RyaW5nIGlzIHRoZSBu YW1lIG9mIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVy IHNwZWNpZmllZCBieSBDb250cm9sbGVySGFuZGxlIGFuZA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBDaGlsZEhhbmRsZSBpbiB0aGUgbGFuZ3VhZ2Ugc3BlY2lmaWVkIGJ5DQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhbmd1YWdlIGZyb20gdGhlIHBvaW50 IG9mIHZpZXcgb2YgdGhlIGRyaXZlcg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzcGVjaWZpZWQgYnkgVGhpcy4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAg ICAgICBUaGUgVW5pY29kZSBzdHJpbmcgZm9yIHRoZSB1c2VyIHJlYWRhYmxlIG5hbWUgaW4NCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGxhbmd1YWdlIHNwZWNpZmllZCBi eSBMYW5ndWFnZSBmb3IgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRy aXZlciBzcGVjaWZpZWQgYnkgVGhpcyB3YXMgcmV0dXJuZWQgaW4NCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRHJpdmVyTmFtZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9JTlZB TElEX1BBUkFNRVRFUiBDb250cm9sbGVySGFuZGxlIGlzIG5vdCBhIHZhbGlkIEVGSV9IQU5ETEUu DQo+ICsNCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQ2hpbGRIYW5kbGUgaXMg bm90IE5VTEwgYW5kIGl0IGlzIG5vdCBhIHZhbGlkDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEVGSV9IQU5ETEUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJB TUVURVIgTGFuZ3VhZ2UgaXMgTlVMTC4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BB UkFNRVRFUiBDb250cm9sbGVyTmFtZSBpcyBOVUxMLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1VO U1VQUE9SVEVEICAgICAgIFRoZSBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMgaXMgbm90IGN1cnJl bnRseQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2luZyB0aGUgY29u dHJvbGxlciBzcGVjaWZpZWQgYnkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Q29udHJvbGxlckhhbmRsZSBhbmQgQ2hpbGRIYW5kbGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklf VU5TVVBQT1JURUQgICAgICAgVGhlIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhpcyBkb2VzIG5vdCBz dXBwb3J0DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBsYW5ndWFnZSBz cGVjaWZpZWQgYnkgTGFuZ3VhZ2UuDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJ QVBJDQo+ICtEd01tY0hjQ29tcG9uZW50TmFtZUdldENvbnRyb2xsZXJOYW1lICgNCj4gKyAgSU4g IEVGSV9DT01QT05FTlRfTkFNRV9QUk9UT0NPTCAgICAgKlRoaXMsDQo+ICsgIElOICBFRklfSEFO RExFICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXJIYW5kbGUsDQo+ICsgIElOICBFRklf SEFORExFICAgICAgICAgICAgICAgICAgICAgIENoaWxkSGFuZGxlLCBPUFRJT05BTA0KPiArICBJ TiAgQ0hBUjggICAgICAgICAgICAgICAgICAgICAgICAgICAqTGFuZ3VhZ2UsDQo+ICsgIE9VVCBD SEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICoqQ29udHJvbGxlck5hbWUNCj4gKyAgKQ0K PiArew0KPiArICBFRklfU1RBVFVTICAgICAgICAgU3RhdHVzOw0KPiArDQo+ICsgIGlmIChMYW5n dWFnZSA9PSBOVUxMIHx8IENvbnRyb2xsZXJOYW1lID09IE5VTEwpIHsNCj4gKyAgICByZXR1cm4g RUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gVGhp cyBpcyBhIGRldmljZSBkcml2ZXIsIHNvIENoaWxkSGFuZGxlIG11c3QgYmUgTlVMTC4NCj4gKyAg Ly8NCj4gKyAgaWYgKENoaWxkSGFuZGxlICE9IE5VTEwpIHsNCj4gKyAgICByZXR1cm4gRUZJX1VO U1VQUE9SVEVEOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gTWFrZSBzdXJlIHRoaXMg ZHJpdmVyIGlzIGN1cnJlbnRseSBtYW5hZ2luZyBDb250cm9sbGVySGFuZGxlDQo+ICsgIC8vDQo+ ICsgIFN0YXR1cyA9IEVmaVRlc3RNYW5hZ2VkRGV2aWNlICgNCj4gKyAgICAgICAgICAgICBDb250 cm9sbGVySGFuZGxlLA0KPiArICAgICAgICAgICAgIGdEd01tY0hjRHJpdmVyQmluZGluZy5Ecml2 ZXJCaW5kaW5nSGFuZGxlLA0KPiArICAgICAgICAgICAgICZnRWZpUGNpSW9Qcm90b2NvbEd1aWQN Cj4gKyAgICAgICAgICAgICApOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsg ICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiBMb29rdXBVbmljb2Rl U3RyaW5nMiAoDQo+ICsgICAgICAgICAgIExhbmd1YWdlLA0KPiArICAgICAgICAgICBUaGlzLT5T dXBwb3J0ZWRMYW5ndWFnZXMsDQo+ICsgICAgICAgICAgIG1Ed01tY0hjQ29udHJvbGxlck5hbWVU YWJsZSwNCj4gKyAgICAgICAgICAgQ29udHJvbGxlck5hbWUsDQo+ICsgICAgICAgICAgIChCT09M RUFOKShUaGlzID09ICZnRHdNbWNIY0NvbXBvbmVudE5hbWUpDQo+ICsgICAgICAgICAgICk7DQo+ ICt9DQo+IGRpZmYgLS1naXQgYS9FbWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRHdNbWNI Y0R4ZS5jIGIvRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0R3TW1jSGNEeGUuYw0KPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLmFlYTEyMTcwZDJjYw0K PiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL0VtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9E d01tY0hjRHhlLmMNCj4gQEAgLTAsMCArMSwxMjk2IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgVGhp cyBkcml2ZXIgaXMgdXNlZCB0byBtYW5hZ2UgRGVzaWdud2FyZSBTRC9NTUMgaG9zdCBjb250cm9s bGVyLg0KPiArDQo+ICsgIEl0IHdvdWxkIGV4cG9zZSBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9U T0NPTCBmb3IgdXBwZXIgbGF5ZXIgdXNlLg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNSAt IDIwMjEsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyAg Q29weXJpZ2h0IChDKSAyMDE2IE1hcnZlbGwgSW50ZXJuYXRpb25hbCBMdGQuIEFsbCByaWd0aHMg cmVzZXJ2ZWQuPEJSPg0KPiArICBDb3B5cmlnaHQgKEMpIDIwMTgsIExpbmFybyBMdGQuIEFsbCBy aWd0aHMgcmVzZXJ2ZWQuPEJSPg0KPiArDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29t cGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1 bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsgIHdo aWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUg bGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vu c2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVE IFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArICBXSVRIT1VU IFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVT UyBPUiBJTVBMSUVELg0KPiArDQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPExpYnJhcnkvQmFz ZU1lbW9yeUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gKyNpbmNs dWRlIDxMaWJyYXJ5L0RldmljZVBhdGhMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0lvTGli Lmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9NZW1vcnlBbGxvY2F0aW9uTGliLmg+DQo+ICsjaW5j bHVkZSA8UHJvdG9jb2wvTm9uRGlzY292ZXJhYmxlRGV2aWNlLmg+DQo+ICsjaW5jbHVkZSA8TGli cmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1Vl ZmlEcml2ZXJFbnRyeVBvaW50Lmg+DQo+ICsNCj4gKyNpbmNsdWRlIDxQcm90b2NvbC9EZXZpY2VQ YXRoLmg+DQo+ICsjaW5jbHVkZSA8UHJvdG9jb2wvUGxhdGZvcm1Ed01tYy5oPg0KPiArDQo+ICsj aW5jbHVkZSAiRHdNbWNIY0R4ZS5oIg0KPiArDQo+ICsvLw0KPiArLy8gRHJpdmVyIEdsb2JhbCBW YXJpYWJsZXMNCj4gKy8vDQo+ICtFRklfRFJJVkVSX0JJTkRJTkdfUFJPVE9DT0wgZ0R3TW1jSGNE cml2ZXJCaW5kaW5nID0gew0KPiArICBEd01tY0hjRHJpdmVyQmluZGluZ1N1cHBvcnRlZCwNCj4g KyAgRHdNbWNIY0RyaXZlckJpbmRpbmdTdGFydCwNCj4gKyAgRHdNbWNIY0RyaXZlckJpbmRpbmdT dG9wLA0KPiArICAweDEwLA0KPiArICBOVUxMLA0KPiArICBOVUxMDQo+ICt9Ow0KPiArDQo+ICsv Lw0KPiArLy8gVGVtcGxhdGUgZm9yIERlc2lnbndhcmUgU0QvTU1DIGhvc3QgY29udHJvbGxlciBw cml2YXRlIGRhdGEuDQo+ICsvLw0KPiArRFdfTU1DX0hDX1BSSVZBVEVfREFUQSBnRHdNbWNIY1Rl bXBsYXRlID0gew0KPiArICBEV19NTUNfSENfUFJJVkFURV9TSUdOQVRVUkUsICAgICAgLy8gU2ln bmF0dXJlDQo+ICsgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb250cm9s bGVySGFuZGxlDQo+ICsgIDB4MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1taW8g YmFzZSBhZGRyZXNzDQo+ICsgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQ YXNzVGhydQ0KPiArICAgIHNpemVvZiAoVUlOVDMyKSwNCj4gKyAgICBEd01tY1Bhc3NUaHJ1UGFz c1RocnUsDQo+ICsgICAgRHdNbWNQYXNzVGhydUdldE5leHRTbG90LA0KPiArICAgIER3TW1jUGFz c1RocnVCdWlsZERldmljZVBhdGgsDQo+ICsgICAgRHdNbWNQYXNzVGhydUdldFNsb3ROdW1iZXIs DQo+ICsgICAgRHdNbWNQYXNzVGhydVJlc2V0RGV2aWNlDQo+ICsgIH0sDQo+ICsgIE5VTEwsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQbGF0Zm9ybUR3TW1jDQo+ICsgIDAsICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQcmV2aW91c1Nsb3QNCj4gKyAgTlVMTCwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRpbWVyRXZlbnQNCj4gKyAgTlVMTCwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8vIENvbm5lY3RFdmVudA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLy8gUXVldWUNCj4gKyAgSU5JVElBTElaRV9MSVNUX0hFQURf VkFSSUFCTEUgKGdEd01tY0hjVGVtcGxhdGUuUXVldWUpLA0KPiArICB7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLy8gU2xvdA0KPiArICAgIHswLCBVbmtub3duU2xvdCwgMCwgMCwg MH0NCj4gKyAgfSwNCj4gKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENh cGFiaWxpdHkNCj4gKyAgICB7MH0NCj4gKyAgfSwNCj4gKyAgeyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8vIE1heEN1cnJlbnQNCj4gKyAgICAwDQo+ICsgIH0sDQo+ICsgIDAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb250cm9sbGVyVmVyc2lvbg0KPiArfTsN Cj4gKw0KPiArU0RfREVWSUNFX1BBVEggICAgbVNkRHBUZW1wbGF0ZSA9IHsNCj4gKyAgew0KPiAr ICAgIE1FU1NBR0lOR19ERVZJQ0VfUEFUSCwNCj4gKyAgICBNU0dfU0RfRFAsDQo+ICsgICAgew0K PiArICAgICAgKFVJTlQ4KSAoc2l6ZW9mIChTRF9ERVZJQ0VfUEFUSCkpLA0KPiArICAgICAgKFVJ TlQ4KSAoKHNpemVvZiAoU0RfREVWSUNFX1BBVEgpKSA+PiA4KQ0KPiArICAgIH0NCj4gKyAgfSwN Cj4gKyAgMA0KPiArfTsNCj4gKw0KPiArRU1NQ19ERVZJQ0VfUEFUSCAgICBtRW1tY0RwVGVtcGxh dGUgPSB7DQo+ICsgIHsNCj4gKyAgICBNRVNTQUdJTkdfREVWSUNFX1BBVEgsDQo+ICsgICAgTVNH X0VNTUNfRFAsDQo+ICsgICAgew0KPiArICAgICAgKFVJTlQ4KSAoc2l6ZW9mIChFTU1DX0RFVklD RV9QQVRIKSksDQo+ICsgICAgICAoVUlOVDgpICgoc2l6ZW9mIChFTU1DX0RFVklDRV9QQVRIKSkg Pj4gOCkNCj4gKyAgICB9DQo+ICsgIH0sDQo+ICsgIDANCj4gK307DQo+ICsNCj4gKy8vDQo+ICsv LyBQcmlvcml0aXplZCBmdW5jdGlvbiBsaXN0IHRvIGRldGVjdCBjYXJkIHR5cGUuDQo+ICsvLyBV c2VyIGNvdWxkIGFkZCBvdGhlciBjYXJkIGRldGVjdGlvbiBsb2dpYyBoZXJlLg0KPiArLy8NCj4g K0RXTU1DX0NBUkRfVFlQRV9ERVRFQ1RfUk9VVElORSBtQ2FyZFR5cGVEZXRlY3RSb3V0aW5lVGFi bGVbXSA9IHsNCj4gKyAgRW1tY0lkZW50aWZpY2F0aW9uLA0KPiArICBTZENhcmRJZGVudGlmaWNh dGlvbiwNCj4gKyAgTlVMTA0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgIFRoZSBlbnRyeSBwb2lu dCBmb3IgU0QgaG9zdCBjb250cm9sbGVyIGRyaXZlciwgdXNlZCB0byBpbnN0YWxsIHRoaXMgZHJp dmVyIG9uIHRoZSBJbWFnZUhhbmRsZS4NCj4gKw0KPiArICBAcGFyYW1baW5dICBJbWFnZUhhbmRs ZSAgIFRoZSBmaXJtd2FyZSBhbGxvY2F0ZWQgaGFuZGxlIGZvciB0aGlzIGRyaXZlciBpbWFnZS4N Cj4gKyAgQHBhcmFtW2luXSAgU3lzdGVtVGFibGUgICBQb2ludGVyIHRvIHRoZSBFRkkgc3lzdGVt IHRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICBEcml2ZXIgbG9hZGVkLg0K PiArICBAcmV0dmFsIG90aGVyICAgICAgICAgRHJpdmVyIG5vdCBsb2FkZWQuDQo+ICsNCj4gKyoq Lw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtJbml0aWFsaXplRHdNbWNIY0R4ZSAoDQo+ ICsgIElOIEVGSV9IQU5ETEUgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiBFRklfU1lTVEVN X1RBQkxFICAqU3lzdGVtVGFibGUNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgICAg ICAgICBTdGF0dXM7DQo+ICsNCj4gKyAgU3RhdHVzID0gRWZpTGliSW5zdGFsbERyaXZlckJpbmRp bmdDb21wb25lbnROYW1lMiAoDQo+ICsgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsgICAg ICAgICAgICAgU3lzdGVtVGFibGUsDQo+ICsgICAgICAgICAgICAgJmdEd01tY0hjRHJpdmVyQmlu ZGluZywNCj4gKyAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgICAgICAgICAgICAmZ0R3 TW1jSGNDb21wb25lbnROYW1lLA0KPiArICAgICAgICAgICAgICZnRHdNbWNIY0NvbXBvbmVudE5h bWUyDQo+ICsgICAgICAgICAgICAgKTsNCj4gKyAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsN Cj4gKw0KPiArICByZXR1cm4gU3RhdHVzOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ2FsbCBi YWNrIGZ1bmN0aW9uIHdoZW4gdGhlIHRpbWVyIGV2ZW50IGlzIHNpZ25hbGVkLg0KPiArDQo+ICsg IEBwYXJhbVtpbl0gIEV2ZW50ICAgICBUaGUgRXZlbnQgdGhpcyBub3RpZnkgZnVuY3Rpb24gcmVn aXN0ZXJlZCB0by4NCj4gKyAgQHBhcmFtW2luXSAgQ29udGV4dCAgIFBvaW50ZXIgdG8gdGhlIGNv bnRleHQgZGF0YSByZWdpc3RlcmVkIHRvIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAg RXZlbnQuDQo+ICsNCj4gKyoqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtQcm9jZXNzQXN5bmNU YXNrTGlzdCAoDQo+ICsgIElOIEVGSV9FVkVOVCAgICAgICAgICBFdmVudCwNCj4gKyAgSU4gVk9J RCogICAgICAgICAgICAgIENvbnRleHQNCj4gKyAgKQ0KPiArew0KPiArICBEV19NTUNfSENfUFJJ VkFURV9EQVRBICAgICAgICAgICAgICAqUHJpdmF0ZTsNCj4gKyAgTElTVF9FTlRSWSAgICAgICAg ICAgICAgICAgICAgICAgICAgKkxpbms7DQo+ICsgIERXX01NQ19IQ19UUkIgICAgICAgICAgICAg ICAgICAgICAgICpUcmI7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAg IFN0YXR1czsNCj4gKyAgRUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgKlBhY2tl dDsNCj4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5maW5pdGVXYWl0 Ow0KPiArICBFRklfRVZFTlQgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmJFdmVudDsNCj4g Kw0KPiArICBQcml2YXRlID0gKERXX01NQ19IQ19QUklWQVRFX0RBVEEgKilDb250ZXh0Ow0KPiAr DQo+ICsgIC8vDQo+ICsgIC8vIENoZWNrIGlmIHRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgYXN5bmMg SS9PIHF1ZXVlIGlzIGRvbmUgb3Igbm90Lg0KPiArICAvLw0KPiArICBTdGF0dXMgPSBFRklfU1VD Q0VTUzsNCj4gKyAgVHJiICAgID0gTlVMTDsNCj4gKyAgTGluayAgID0gR2V0Rmlyc3ROb2RlICgm UHJpdmF0ZS0+UXVldWUpOw0KPiArICBpZiAoIUlzTnVsbCAoJlByaXZhdGUtPlF1ZXVlLCBMaW5r KSkgew0KPiArICAgIFRyYiA9IERXX01NQ19IQ19UUkJfRlJPTV9USElTIChMaW5rKTsNCj4gKyAg ICBpZiAoIVByaXZhdGUtPlNsb3RbVHJiLT5TbG90XS5NZWRpYVByZXNlbnQpIHsNCj4gKyAgICAg IFN0YXR1cyA9IEVGSV9OT19NRURJQTsNCj4gKyAgICAgIGdvdG8gRG9uZTsNCj4gKyAgICB9DQo+ ICsgICAgaWYgKCFUcmItPlN0YXJ0ZWQpIHsNCj4gKyAgICAgIC8vDQo+ICsgICAgICAvLyBDaGVj ayB3aGV0aGVyIHRoZSBjbWQvZGF0YSBsaW5lIGlzIHJlYWR5IGZvciB0cmFuc2Zlci4NCj4gKyAg ICAgIC8vDQo+ICsgICAgICBTdGF0dXMgPSBEd01tY0NoZWNrVHJiRW52IChQcml2YXRlLCBUcmIp Ow0KPiArICAgICAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICAgICAgVHJiLT5T dGFydGVkID0gVFJVRTsNCj4gKyAgICAgICAgU3RhdHVzID0gRHdNbWNFeGVjVHJiIChQcml2YXRl LCBUcmIpOw0KPiArICAgICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgICAg ICAgZ290byBEb25lOw0KPiArICAgICAgICB9DQo+ICsgICAgICB9IGVsc2Ugew0KPiArICAgICAg ICBnb3RvIERvbmU7DQo+ICsgICAgICB9DQo+ICsgICAgfQ0KPiArICAgIFN0YXR1cyA9IER3TW1j Q2hlY2tUcmJSZXN1bHQgKFByaXZhdGUsIFRyYik7DQo+ICsgIH0NCj4gKw0KPiArRG9uZToNCj4g KyAgaWYgKChUcmIgIT0gTlVMTCkgJiYgKFN0YXR1cyA9PSBFRklfTk9UX1JFQURZKSkgew0KPiAr ICAgIFBhY2tldCA9IFRyYi0+UGFja2V0Ow0KPiArICAgIGlmIChQYWNrZXQtPlRpbWVvdXQgPT0g MCkgew0KPiArICAgICAgSW5maW5pdGVXYWl0ID0gVFJVRTsNCj4gKyAgICB9IGVsc2Ugew0KPiAr ICAgICAgSW5maW5pdGVXYWl0ID0gRkFMU0U7DQo+ICsgICAgfQ0KPiArICAgIGlmICgoIUluZmlu aXRlV2FpdCkgJiYgKFRyYi0+VGltZW91dC0tID09IDApKSB7DQo+ICsgICAgICBSZW1vdmVFbnRy eUxpc3QgKExpbmspOw0KPiArICAgICAgVHJiLT5QYWNrZXQtPlRyYW5zYWN0aW9uU3RhdHVzID0g RUZJX1RJTUVPVVQ7DQo+ICsgICAgICBUcmJFdmVudCA9IFRyYi0+RXZlbnQ7DQo+ICsgICAgICBE d01tY0ZyZWVUcmIgKFRyYik7DQo+ICsgICAgICBERUJVRyAoKA0KPiArICAgICAgICBERUJVR19W RVJCT1NFLA0KPiArICAgICAgICAiUHJvY2Vzc0FzeW5jVGFza0xpc3QoKTogU2lnbmFsIEV2ZW50 ICVwIEVGSV9USU1FT1VUXG4iLA0KPiArICAgICAgICBUcmJFdmVudA0KPiArICAgICAgICApKTsN Cj4gKyAgICAgIGdCUy0+U2lnbmFsRXZlbnQgKFRyYkV2ZW50KTsNCj4gKyAgICAgIHJldHVybjsN Cj4gKyAgICB9DQo+ICsgIH0NCj4gKyAgaWYgKChUcmIgIT0gTlVMTCkgJiYgKFN0YXR1cyAhPSBF RklfTk9UX1JFQURZKSkgew0KPiArICAgIFJlbW92ZUVudHJ5TGlzdCAoTGluayk7DQo+ICsgICAg VHJiLT5QYWNrZXQtPlRyYW5zYWN0aW9uU3RhdHVzID0gU3RhdHVzOw0KPiArICAgIFRyYkV2ZW50 ID0gVHJiLT5FdmVudDsNCj4gKyAgICBEd01tY0ZyZWVUcmIgKFRyYik7DQo+ICsgICAgREVCVUcg KCgNCj4gKyAgICAgIERFQlVHX1ZFUkJPU0UsDQo+ICsgICAgICAiUHJvY2Vzc0FzeW5jVGFza0xp c3QoKTogU2lnbmFsIEV2ZW50ICVwIHdpdGggJXJcbiIsDQo+ICsgICAgICBUcmJFdmVudCwNCj4g KyAgICAgIFN0YXR1cw0KPiArICAgICAgKSk7DQo+ICsgICAgZ0JTLT5TaWduYWxFdmVudCAoVHJi RXZlbnQpOw0KPiArICB9DQo+ICsgIHJldHVybjsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIFNk IHJlbW92YWJsZSBkZXZpY2UgZW51bWVyYXRpb24gY2FsbGJhY2sgZnVuY3Rpb24gd2hlbiB0aGUg dGltZXIgZXZlbnQgaXMgc2lnbmFsZWQuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgRXZlbnQgICAg IFRoZSBFdmVudCB0aGlzIG5vdGlmeSBmdW5jdGlvbiByZWdpc3RlcmVkIHRvLg0KPiArICBAcGFy YW1baW5dICBDb250ZXh0ICAgUG9pbnRlciB0byB0aGUgY29udGV4dCBkYXRhIHJlZ2lzdGVyZWQg dG8gdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBFdmVudC4NCj4gKw0KPiArKiovDQo+ ICtWT0lEDQo+ICtFRklBUEkNCj4gK0R3TW1jSGNFbnVtZXJhdGVEZXZpY2UgKA0KPiArICBJTiBF RklfRVZFTlQgICAgICAgICAgRXZlbnQsDQo+ICsgIElOIFZPSUQqICAgICAgICAgICAgICBDb250 ZXh0DQo+ICsgICkNCj4gK3sNCj4gKyAgRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAg ICAgKlByaXZhdGU7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgIFN0 YXR1czsNCj4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVkaWFQcmVz ZW50Ow0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb3V0aW5lTnVt Ow0KPiArICBEV01NQ19DQVJEX1RZUEVfREVURUNUX1JPVVRJTkUgICAgICAqUm91dGluZTsNCj4g KyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXg7DQo+ICsgIExJU1Rf RU5UUlkgICAgICAgICAgICAgICAgICAgICAgICAgICpMaW5rOw0KPiArICBMSVNUX0VOVFJZICAg ICAgICAgICAgICAgICAgICAgICAgICAqTmV4dExpbms7DQo+ICsgIERXX01NQ19IQ19UUkIgICAg ICAgICAgICAgICAgICAgICAgICpUcmI7DQo+ICsgIEVGSV9UUEwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE9sZFRwbDsNCj4gKw0KPiArICBQcml2YXRlID0gKERXX01NQ19IQ19QUklWQVRF X0RBVEEgKilDb250ZXh0Ow0KPiArDQo+ICsgIGlmICgoUHJpdmF0ZS0+U2xvdFswXS5FbmFibGUp ICYmDQo+ICsgICAgICAoUHJpdmF0ZS0+U2xvdFswXS5TbG90VHlwZSA9PSBSZW1vdmFibGVTbG90 KSkgew0KPiArICAgIFN0YXR1cyA9IER3TW1jSGNDYXJkRGV0ZWN0ICgNCj4gKyAgICAgICAgICAg ICAgIFByaXZhdGUtPkRldkJhc2UsDQo+ICsgICAgICAgICAgICAgICBQcml2YXRlLT5Db250cm9s bGVySGFuZGxlLA0KPiArICAgICAgICAgICAgICAgMCwNCj4gKyAgICAgICAgICAgICAgICZNZWRp YVByZXNlbnQNCj4gKyAgICAgICAgICAgICAgICk7DQo+ICsgICAgaWYgKChTdGF0dXMgPT0gRUZJ X01FRElBX0NIQU5HRUQpICYmICFNZWRpYVByZXNlbnQpIHsNCj4gKyAgICAgIERFQlVHICgoDQo+ ICsgICAgICAgIERFQlVHX0lORk8sDQo+ICsgICAgICAgICJEd01tY0hjRW51bWVyYXRlRGV2aWNl OiBkZXZpY2UgZGlzY29ubmVjdGVkIGF0ICVwXG4iLA0KPiArICAgICAgICBQcml2YXRlLT5EZXZC YXNlDQo+ICsgICAgICAgICkpOw0KPiArICAgICAgUHJpdmF0ZS0+U2xvdFswXS5NZWRpYVByZXNl bnQgPSBGQUxTRTsNCj4gKyAgICAgIC8vDQo+ICsgICAgICAvLyBTaWduYWwgYWxsIGFzeW5jIHRh c2sgZXZlbnRzIGF0IHRoZSBzbG90IHdpdGggRUZJX05PX01FRElBIHN0YXR1cy4NCj4gKyAgICAg IC8vDQo+ICsgICAgICBPbGRUcGwgPSBnQlMtPlJhaXNlVFBMIChUUExfTk9USUZZKTsNCj4gKyAg ICAgIGZvciAoTGluayA9IEdldEZpcnN0Tm9kZSAoJlByaXZhdGUtPlF1ZXVlKTsNCj4gKyAgICAg ICAgICAgIUlzTnVsbCAoJlByaXZhdGUtPlF1ZXVlLCBMaW5rKTsNCj4gKyAgICAgICAgICAgTGlu ayA9IE5leHRMaW5rKSB7DQo+ICsgICAgICAgIE5leHRMaW5rID0gR2V0TmV4dE5vZGUgKCZQcml2 YXRlLT5RdWV1ZSwgTGluayk7DQo+ICsgICAgICAgIFRyYiA9IERXX01NQ19IQ19UUkJfRlJPTV9U SElTIChMaW5rKTsNCj4gKyAgICAgICAgaWYgKFRyYi0+U2xvdCA9PSAwKSB7DQo+ICsgICAgICAg ICAgUmVtb3ZlRW50cnlMaXN0IChMaW5rKTsNCj4gKyAgICAgICAgICBUcmItPlBhY2tldC0+VHJh bnNhY3Rpb25TdGF0dXMgPSBFRklfTk9fTUVESUE7DQo+ICsgICAgICAgICAgZ0JTLT5TaWduYWxF dmVudCAoVHJiLT5FdmVudCk7DQo+ICsgICAgICAgICAgRHdNbWNGcmVlVHJiIChUcmIpOw0KPiAr ICAgICAgICB9DQo+ICsgICAgICB9DQo+ICsgICAgICBnQlMtPlJlc3RvcmVUUEwgKE9sZFRwbCk7 DQo+ICsgICAgICAvLw0KPiArICAgICAgLy8gTm90aWZ5IHRoZSB1cHBlciBsYXllciB0aGUgY29u bmVjdCBzdGF0ZSBjaGFuZ2UgdGhyb3VnaA0KPiArICAgICAgLy8gUmVpbnN0YWxsUHJvdG9jb2xJ bnRlcmZhY2UuDQo+ICsgICAgICAvLw0KPiArICAgICAgZ0JTLT5SZWluc3RhbGxQcm90b2NvbElu dGVyZmFjZSAoDQo+ICsgICAgICAgICAgICBQcml2YXRlLT5Db250cm9sbGVySGFuZGxlLA0KPiAr ICAgICAgICAgICAgJmdFZmlTZE1tY1Bhc3NUaHJ1UHJvdG9jb2xHdWlkLA0KPiArICAgICAgICAg ICAgJlByaXZhdGUtPlBhc3NUaHJ1LA0KPiArICAgICAgICAgICAgJlByaXZhdGUtPlBhc3NUaHJ1 DQo+ICsgICAgICAgICAgICApOw0KPiArICAgIH0NCj4gKyAgICBpZiAoKFN0YXR1cyA9PSBFRklf TUVESUFfQ0hBTkdFRCkgJiYgTWVkaWFQcmVzZW50KSB7DQo+ICsgICAgICBERUJVRyAoKA0KPiAr ICAgICAgICBERUJVR19JTkZPLA0KPiArICAgICAgICAiRHdNbWNIY0VudW1lcmF0ZURldmljZTog ZGV2aWNlIGNvbm5lY3RlZCBhdCAlcFxuIiwNCj4gKyAgICAgICAgUHJpdmF0ZS0+RGV2QmFzZQ0K PiArICAgICAgICApKTsNCj4gKyAgICAgIC8vDQo+ICsgICAgICAvLyBJbml0aWFsaXplIHNsb3Qg YW5kIHN0YXJ0IGlkZW50aWZpY2F0aW9uIHByb2Nlc3MgZm9yIHRoZSBuZXcNCj4gKyAgICAgIC8v IGF0dGFjaGVkIGRldmljZQ0KPiArICAgICAgLy8NCj4gKyAgICAgIFN0YXR1cyA9IER3TW1jSGNJ bml0SG9zdCAoUHJpdmF0ZS0+RGV2QmFzZSwgUHJpdmF0ZS0+Q2FwYWJpbGl0eVswXSk7DQo+ICsg ICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgICAgIHJldHVybjsNCj4gKyAg ICAgIH0NCj4gKyAgICAgIC8vDQo+ICsgICAgICAvLyBSZXNldCB0aGUgc3BlY2lmaWVkIHNsb3Qg b2YgdGhlIFNEL01NQyBQY2kgSG9zdCBDb250cm9sbGVyDQo+ICsgICAgICAvLw0KPiArICAgICAg U3RhdHVzID0gRHdNbWNIY1Jlc2V0IChQcml2YXRlLT5EZXZCYXNlLCBQcml2YXRlLT5DYXBhYmls aXR5WzBdKTsNCj4gKyAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICAgICAg cmV0dXJuOw0KPiArICAgICAgfQ0KPiArDQo+ICsgICAgICBQcml2YXRlLT5TbG90WzBdLk1lZGlh UHJlc2VudCA9IFRSVUU7DQo+ICsgICAgICBSb3V0aW5lTnVtID0gc2l6ZW9mIChtQ2FyZFR5cGVE ZXRlY3RSb3V0aW5lVGFibGUpIC8NCj4gKyAgICAgICAgICAgICAgICAgICBzaXplb2YgKERXTU1D X0NBUkRfVFlQRV9ERVRFQ1RfUk9VVElORSk7DQo+ICsgICAgICBmb3IgKEluZGV4ID0gMDsgSW5k ZXggPCBSb3V0aW5lTnVtOyBJbmRleCsrKSB7DQo+ICsgICAgICAgIFJvdXRpbmUgPSAmbUNhcmRU eXBlRGV0ZWN0Um91dGluZVRhYmxlW0luZGV4XTsNCj4gKyAgICAgICAgaWYgKCpSb3V0aW5lICE9 IE5VTEwpIHsNCj4gKyAgICAgICAgICBTdGF0dXMgPSAoKlJvdXRpbmUpIChQcml2YXRlKTsNCj4g KyAgICAgICAgICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgICAgICAgICAgYnJl YWs7DQo+ICsgICAgICAgICAgfQ0KPiArICAgICAgICB9DQo+ICsgICAgICB9DQo+ICsgICAgICAv Lw0KPiArICAgICAgLy8gVGhpcyBjYXJkIGRvZXNuJ3QgZ2V0IGluaXRpYWxpemVkIGNvcnJlY3Rs eS4NCj4gKyAgICAgIC8vDQo+ICsgICAgICBpZiAoSW5kZXggPT0gUm91dGluZU51bSkgew0KPiAr ICAgICAgICByZXR1cm47DQo+ICsgICAgICB9DQo+ICsNCj4gKyAgICAgIC8vDQo+ICsgICAgICAv LyBOb3RpZnkgdGhlIHVwcGVyIGxheWVyIHRoZSBjb25uZWN0IHN0YXRlIGNoYW5nZSB0aHJvdWdo DQo+ICsgICAgICAvLyBSZWluc3RhbGxQcm90b2NvbEludGVyZmFjZS4NCj4gKyAgICAgIC8vDQo+ ICsgICAgICBnQlMtPlJlaW5zdGFsbFByb3RvY29sSW50ZXJmYWNlICgNCj4gKyAgICAgICAgICAg ICBQcml2YXRlLT5Db250cm9sbGVySGFuZGxlLA0KPiArICAgICAgICAgICAgICZnRWZpU2RNbWNQ YXNzVGhydVByb3RvY29sR3VpZCwNCj4gKyAgICAgICAgICAgICAmUHJpdmF0ZS0+UGFzc1RocnUs DQo+ICsgICAgICAgICAgICAgJlByaXZhdGUtPlBhc3NUaHJ1DQo+ICsgICAgICAgICAgICAgKTsN Cj4gKyAgICB9DQo+ICsgIH0NCj4gKw0KPiArICByZXR1cm47DQo+ICt9DQo+ICsNCj4gKy8qKg0K PiArICBSZXNldCB0aGUgc3BlY2lmaWVkIFNEL01NQyBob3N0IGNvbnRyb2xsZXIgYW5kIGVuYWJs ZSBhbGwgaW50ZXJydXB0cy4NCj4gKw0KPiArICBAcGFyYW1baW5dIERldkJhc2UgICAgICAgIFRo ZSBNbWlvIERldmljZSBCYXNlIEFkZHJlc3MuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgICAgICBUaGUgc29mdHdhcmUgcmVzZXQgZXhlY3V0ZXMgc3VjY2Vzc2Z1bGx5Lg0KPiArICBA cmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBzb2Z0d2FyZSByZXNldCBmYWlscy4NCj4gKw0K PiArKiovDQo+ICtFRklfU1RBVFVTDQo+ICtEd01tY0hjUmVzZXQgKA0KPiArICBJTiBVSU5UTiAg ICBEZXZCYXNlLA0KPiArICBJTiBEV19NTUNfSENfU0xPVF9DQVAgICAgICAgIENhcGFiaWxpdHkN Cj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgIFN0YXR1czsNCj4g KyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBCbGtTaXplOw0KPiArDQo+ICsgIC8vDQo+ICsg IC8vIEVuYWJsZSBhbGwgaW50ZXJydXB0IGFmdGVyIHJlc2V0IGFsbC4NCj4gKyAgLy8NCj4gKyAg U3RhdHVzID0gRHdNbWNIY0VuYWJsZUludGVycnVwdCAoRGV2QmFzZSk7DQo+ICsgIGlmIChFRklf RVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRHdNbWNIY1Jl c2V0OiBlbmFibGUgaW50ZXJydXB0cyBmYWlsOiAlclxuIiwgU3RhdHVzKSk7DQo+ICsgICAgcmV0 dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArICBTdGF0dXMgPSBEd01tY0hjSW5pdFRpbWVvdXRDdHJs IChEZXZCYXNlKTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIHJldHVy biBTdGF0dXM7DQo+ICsgIH0NCj4gKw0KPiArICBCbGtTaXplID0gRFdfTU1DX0JMT0NLX1NJWkU7 DQo+ICsgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX0JMS1NJWiwgQmxrU2l6ZSk7DQo+ ICsNCj4gKyAgU3RhdHVzID0gRHdNbWNIY0luaXRDbG9ja0ZyZXEgKERldkJhc2UsIENhcGFiaWxp dHkpOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgcmV0dXJuIFN0YXR1 czsNCj4gKyAgfQ0KPiArDQo+ICsgIFN0YXR1cyA9IER3TW1jSGNTZXRCdXNXaWR0aCAoRGV2QmFz ZSwgRkFMU0UsIDEpOw0KPiArDQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9DQo+ICsNCj4gKy8q Kg0KPiArICBUZXN0cyB0byBzZWUgaWYgdGhpcyBkcml2ZXIgc3VwcG9ydHMgYSBnaXZlbiBjb250 cm9sbGVyLiBJZiBhIGNoaWxkIGRldmljZQ0KPiArICBpcyBwcm92aWRlZCwgaXQgZnVydGhlciB0 ZXN0cyB0byBzZWUgaWYgdGhpcyBkcml2ZXIgc3VwcG9ydHMgY3JlYXRpbmcgYQ0KPiArICBoYW5k bGUgZm9yIHRoZSBzcGVjaWZpZWQgY2hpbGQgZGV2aWNlLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rp b24gY2hlY2tzIHRvIHNlZSBpZiB0aGUgZHJpdmVyIHNwZWNpZmllZCBieSBUaGlzIHN1cHBvcnRz IHRoZQ0KPiArICBkZXZpY2Ugc3BlY2lmaWVkIGJ5IENvbnRyb2xsZXJIYW5kbGUuIERyaXZlcnMg d2lsbCB0eXBpY2FsbHkgdXNlIHRoZSBkZXZpY2UNCj4gKyAgcGF0aCBhdHRhY2hlZCB0byBDb250 cm9sbGVySGFuZGxlIGFuZC9vciB0aGUgc2VydmljZXMgZnJvbSB0aGUgYnVzIEkvTw0KPiArICBh YnN0cmFjdGlvbiBhdHRhY2hlZCB0byBDb250cm9sbGVySGFuZGxlIHRvIGRldGVybWluZSBpZiB0 aGUgZHJpdmVyIHN1cHBvcnRzDQo+ICsgIENvbnRyb2xsZXJIYW5kbGUuIFRoaXMgZnVuY3Rpb24g bWF5IGJlIGNhbGxlZCBtYW55IHRpbWVzIGR1cmluZyBwbGF0Zm9ybQ0KPiArICBpbml0aWFsaXph dGlvbi4gSW4gb3JkZXIgdG8gcmVkdWNlIGJvb3QgdGltZXMsIHRoZSB0ZXN0cyBwZXJmb3JtZWQg YnkgdGhpcw0KPiArICBmdW5jdGlvbiBtdXN0IGJlIHZlcnkgc21hbGwsIGFuZCB0YWtlIGFzIGxp dHRsZSB0aW1lIGFzIHBvc3NpYmxlIHRvIGV4ZWN1dGUuDQo+ICsgIFRoaXMgZnVuY3Rpb24gbXVz dCBub3QgY2hhbmdlIHRoZSBzdGF0ZSBvZiBhbnkgaGFyZHdhcmUgZGV2aWNlcywgYW5kIHRoaXMN Cj4gKyAgZnVuY3Rpb24gbXVzdCBiZSBhd2FyZSB0aGF0IHRoZSBkZXZpY2Ugc3BlY2lmaWVkIGJ5 IENvbnRyb2xsZXJIYW5kbGUgbWF5DQo+ICsgIGFscmVhZHkgYmUgbWFuYWdlZCBieSB0aGUgc2Ft ZSBkcml2ZXIgb3IgYSBkaWZmZXJlbnQgZHJpdmVyLiBUaGlzIGZ1bmN0aW9uDQo+ICsgIG11c3Qg bWF0Y2ggaXRzIGNhbGxzIHRvIEFsbG9jYXRlUGFnZXMoKSB3aXRoIEZyZWVQYWdlcygpLCBBbGxv Y2F0ZVBvb2woKSB3aXRoDQo+ICsgIEZyZWVQb29sKCksIGFuZCBPcGVuUHJvdG9jb2woKSB3aXRo IENsb3NlUHJvdG9jb2woKS4gU2luY2UgQ29udHJvbGxlckhhbmRsZQ0KPiArICBtYXkgaGF2ZSBi ZWVuIHByZXZpb3VzbHkgc3RhcnRlZCBieSB0aGUgc2FtZSBkcml2ZXIsIGlmIGEgcHJvdG9jb2wg aXMgYWxyZWFkeQ0KPiArICBpbiB0aGUgb3BlbmVkIHN0YXRlLCB0aGVuIGl0IG11c3Qgbm90IGJl IGNsb3NlZCB3aXRoIENsb3NlUHJvdG9jb2woKS4gVGhpcyBpcw0KPiArICByZXF1aXJlZCB0byBn dWFyYW50ZWUgdGhlIHN0YXRlIG9mIENvbnRyb2xsZXJIYW5kbGUgaXMgbm90IG1vZGlmaWVkIGJ5 IHRoaXMNCj4gKyAgZnVuY3Rpb24uDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgVGhpcyAgICAgICAg ICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklfRFJJVkVSX0JJTkRJTkdfUFJPVE9DT0wNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ICsgIEBwYXJh bVtpbl0gIENvbnRyb2xsZXJIYW5kbGUgICAgIFRoZSBoYW5kbGUgb2YgdGhlIGNvbnRyb2xsZXIg dG8gdGVzdC4gVGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5k bGUgbXVzdCBzdXBwb3J0IGEgcHJvdG9jb2wgaW50ZXJmYWNlIHRoYXQNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3VwcGxpZXMgYW4gSS9PIGFic3RyYWN0aW9uIHRvIHRo ZSBkcml2ZXIuDQo+ICsgIEBwYXJhbVtpbl0gIFJlbWFpbmluZ0RldmljZVBhdGggIEEgcG9pbnRl ciB0byB0aGUgcmVtYWluaW5nIHBvcnRpb24gb2YgYQ0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkZXZpY2UgcGF0aC4gIFRoaXMgcGFyYW1ldGVyIGlzIGlnbm9yZWQgYnkN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlIGRyaXZlcnMsIGFu ZCBpcyBvcHRpb25hbCBmb3IgYnVzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRyaXZlcnMuIEZvciBidXMgZHJpdmVycywgaWYgdGhpcyBwYXJhbWV0ZXINCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgbm90IE5VTEwsIHRoZW4gdGhlIGJ1cyBk cml2ZXIgbXVzdCBkZXRlci0NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bWluZSBpZiB0aGUgYnVzIGNvbnRyb2xsZXIgc3BlY2lmaWVkIGJ5DQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXJIYW5kbGUgYW5kIHRoZSBjaGlsZCBjb250 cm9sbGVyDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBi eSBSZW1haW5pbmdEZXZpY2VQYXRoIGFyZSBib3RoDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN1cHBvcnRlZCBieSB0aGlzIGJ1cyBkcml2ZXIuDQo+ICsNCj4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgVGhlIGRldmljZSBzcGVjaWZpZWQgYnkgQ29u dHJvbGxlckhhbmRsZSBhbmQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UmVtYWluaW5nRGV2aWNlUGF0aCBpcyBzdXBwb3J0ZWQgYnkgdGhlDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhpcy4NCj4gKyAgQHJl dHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgICAgVGhlIGRldmljZSBzcGVjaWZpZWQgYnkgQ29u dHJvbGxlckhhbmRsZSBhbmQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UmVtYWluaW5nRGV2aWNlUGF0aCBpcyBhbHJlYWR5IGJlaW5nIG1hbmFnZWQNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgdGhlIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhp cy4NCj4gKyAgQHJldHZhbCBFRklfQUNDRVNTX0RFTklFRCAgICAgICAgVGhlIGRldmljZSBzcGVj aWZpZWQgYnkgQ29udHJvbGxlckhhbmRsZSBhbmQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUmVtYWluaW5nRGV2aWNlUGF0aCBpcyBhbHJlYWR5IGJlaW5nIG1hbmFnZWQN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgYSBkaWZmZXJlbnQgZHJp dmVyIG9yIGFuIGFwcGxpY2F0aW9uIHRoYXQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVxdWlyZXMgZXhjbHVzaXZlIGFjY2Vzcy4NCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQ3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZC4NCj4gKyAgQHJldHZh bCBFRklfVU5TVVBQT1JURUQgICAgICAgICAgVGhlIGRldmljZSBzcGVjaWZpZWQgYnkgQ29udHJv bGxlckhhbmRsZSBhbmQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVt YWluaW5nRGV2aWNlUGF0aCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZQ0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMuDQo+ICsqKi8N Cj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArRHdNbWNIY0RyaXZlckJpbmRpbmdTdXBwb3J0 ZWQgKA0KPiArICBJTiBFRklfRFJJVkVSX0JJTkRJTkdfUFJPVE9DT0wgKlRoaXMsDQo+ICsgIElO IEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICBDb250cm9sbGVyLA0KPiArICBJTiBFRklfREVW SUNFX1BBVEhfUFJPVE9DT0wgICAgKlJlbWFpbmluZ0RldmljZVBhdGgNCj4gKyAgKQ0KPiArew0K PiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gKyAgRUZJX0RFVklDRV9Q QVRIX1BST1RPQ09MICAqUGFyZW50RGV2aWNlUGF0aDsNCj4gKyAgTk9OX0RJU0NPVkVSQUJMRV9E RVZJQ0UgICAqRGV2Ow0KPiArICBQTEFURk9STV9EV19NTUNfUFJPVE9DT0wgICpQbGF0Zm9ybUR3 TW1jOw0KPiArDQo+ICsgIFBhcmVudERldmljZVBhdGggPSBOVUxMOw0KPiArDQo+ICsgIFN0YXR1 cyA9IGdCUy0+TG9jYXRlUHJvdG9jb2wgKA0KPiArICAgICAgICAgICAgICAgICAgJmdQbGF0Zm9y bUR3TW1jUHJvdG9jb2xHdWlkLA0KPiArICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAg ICAgICAgICAgICAgIChWT0lEICoqKSAmUGxhdGZvcm1Ed01tYw0KPiArICAgICAgICAgICAgICAg ICAgKTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIHJldHVybiBTdGF0 dXM7DQo+ICsgIH0NCj4gKw0KPiArICBTdGF0dXMgPSBnQlMtPk9wZW5Qcm90b2NvbCAoDQo+ICsg ICAgICAgICAgICAgICAgICBDb250cm9sbGVyLA0KPiArICAgICAgICAgICAgICAgICAgJmdFZmlE ZXZpY2VQYXRoUHJvdG9jb2xHdWlkLA0KPiArICAgICAgICAgICAgICAgICAgKFZPSUQgKikgJlBh cmVudERldmljZVBhdGgsDQo+ICsgICAgICAgICAgICAgICAgICBUaGlzLT5Ecml2ZXJCaW5kaW5n SGFuZGxlLA0KPiArICAgICAgICAgICAgICAgICAgQ29udHJvbGxlciwNCj4gKyAgICAgICAgICAg ICAgICAgIEVGSV9PUEVOX1BST1RPQ09MX0JZX0RSSVZFUg0KPiArICAgICAgICAgICAgICAgICAg KTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIC8vDQo+ICsgICAgLy8g RUZJX0FMUkVBRFlfU1RBUlRFRCBpcyBhbHNvIGFuIGVycm9yLg0KPiArICAgIC8vDQo+ICsgICAg cmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArICAvLw0KPiArICAvLyBDbG9zZSB0aGUgcHJvdG9j b2wgYmVjYXVzZSB3ZSBkb24ndCB1c2UgaXQgaGVyZS4NCj4gKyAgLy8NCj4gKyAgZ0JTLT5DbG9z ZVByb3RvY29sICgNCj4gKyAgICAgICAgQ29udHJvbGxlciwNCj4gKyAgICAgICAgJmdFZmlEZXZp Y2VQYXRoUHJvdG9jb2xHdWlkLA0KPiArICAgICAgICBUaGlzLT5Ecml2ZXJCaW5kaW5nSGFuZGxl LA0KPiArICAgICAgICBDb250cm9sbGVyDQo+ICsgICAgICAgICk7DQo+ICsNCj4gKyAgLy8NCj4g KyAgLy8gTm93IHRlc3QgdGhlIEVtYmVkZGVkTm9uRGlzY292ZXJhYmxlSW9Qcm90b2NvbC4NCj4g KyAgLy8NCj4gKyAgU3RhdHVzID0gZ0JTLT5PcGVuUHJvdG9jb2wgKA0KPiArICAgICAgICAgICAg ICAgICAgQ29udHJvbGxlciwNCj4gKyAgICAgICAgICAgICAgICAgICZnRWRraWlOb25EaXNjb3Zl cmFibGVEZXZpY2VQcm90b2NvbEd1aWQsDQo+ICsgICAgICAgICAgICAgICAgICAoVk9JRCAqKikg JkRldiwNCj4gKyAgICAgICAgICAgICAgICAgIFRoaXMtPkRyaXZlckJpbmRpbmdIYW5kbGUsDQo+ ICsgICAgICAgICAgICAgICAgICBDb250cm9sbGVyLA0KPiArICAgICAgICAgICAgICAgICAgRUZJ X09QRU5fUFJPVE9DT0xfQllfRFJJVkVSDQo+ICsgICAgICAgICAgICAgICAgICApOw0KPiArICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0K PiArICBnQlMtPkNsb3NlUHJvdG9jb2wgKA0KPiArICAgICAgICAgQ29udHJvbGxlciwNCj4gKyAg ICAgICAgICZnRWRraWlOb25EaXNjb3ZlcmFibGVEZXZpY2VQcm90b2NvbEd1aWQsDQo+ICsgICAg ICAgICBUaGlzLT5Ecml2ZXJCaW5kaW5nSGFuZGxlLA0KPiArICAgICAgICAgQ29udHJvbGxlcg0K PiArICAgICAgICAgKTsNCj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiArfQ0KPiArDQo+ICsv KioNCj4gKyAgU3RhcnRzIGEgZGV2aWNlIGNvbnRyb2xsZXIgb3IgYSBidXMgY29udHJvbGxlci4N Cj4gKw0KPiArICBUaGUgU3RhcnQoKSBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbnZva2Vk IGZyb20gdGhlIEVGSSBib290IHNlcnZpY2UNCj4gKyAgQ29ubmVjdENvbnRyb2xsZXIoKS4NCj4g KyAgQXMgYSByZXN1bHQsIG11Y2ggb2YgdGhlIGVycm9yIGNoZWNraW5nIG9uIHRoZSBwYXJhbWV0 ZXJzIHRvIFN0YXJ0KCkgaGFzDQo+ICsgIGJlZW4gbW92ZWQgaW50byB0aGlzDQo+ICsgIGNvbW1v biBib290IHNlcnZpY2UuIEl0IGlzIGxlZ2FsIHRvIGNhbGwgU3RhcnQoKSBmcm9tIG90aGVyIGxv Y2F0aW9ucywNCj4gKyAgYnV0IHRoZSBmb2xsb3dpbmcgY2FsbGluZyByZXN0cmljdGlvbnMgbXVz dCBiZSBmb2xsb3dlZCBvciB0aGUgc3lzdGVtDQo+ICsgIGJlaGF2aW9yIHdpbGwgbm90IGJlIGRl dGVybWluaXN0aWMuDQo+ICsgIDEuIENvbnRyb2xsZXJIYW5kbGUgbXVzdCBiZSBhIHZhbGlkIEVG SV9IQU5ETEUuDQo+ICsgIDIuIElmIFJlbWFpbmluZ0RldmljZVBhdGggaXMgbm90IE5VTEwsIHRo ZW4gaXQgbXVzdCBiZSBhIHBvaW50ZXIgdG8gYQ0KPiArICAgICBuYXR1cmFsbHkgYWxpZ25lZCBF RklfREVWSUNFX1BBVEhfUFJPVE9DT0wuDQo+ICsgIDMuIFByaW9yIHRvIGNhbGxpbmcgU3RhcnQo KSwgdGhlIFN1cHBvcnRlZCgpIGZ1bmN0aW9uIGZvciB0aGUgZHJpdmVyDQo+ICsgICAgIHNwZWNp ZmllZCBieSBUaGlzIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCB3aXRoIHRoZSBzYW1lIGNhbGxpbmcg cGFyYW1ldGVycywNCj4gKyAgICAgYW5kIFN1cHBvcnRlZCgpIG11c3QgaGF2ZSByZXR1cm5lZCBF RklfU1VDQ0VTUy4NCj4gKw0KPiArICBAcGFyYW1baW5dICBUaGlzICAgICAgICAgICAgICAgICBB IHBvaW50ZXIgdG8gdGhlIEVGSV9EUklWRVJfQklORElOR19QUk9UT0NPTA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtW2luXSAgQ29u dHJvbGxlckhhbmRsZSAgICAgVGhlIGhhbmRsZSBvZiB0aGUgY29udHJvbGxlciB0byBzdGFydC4g VGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGUgbXVzdCBz dXBwb3J0IGEgcHJvdG9jb2wgaW50ZXJmYWNlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRoYXQgc3VwcGxpZXMgYW4gSS9PIGFic3RyYWN0aW9uIHRvIHRoZQ0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXIuDQo+ICsgIEBwYXJhbVtpbl0g IFJlbWFpbmluZ0RldmljZVBhdGggIEEgcG9pbnRlciB0byB0aGUgcmVtYWluaW5nIHBvcnRpb24g b2YgYQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UgcGF0aC4g IFRoaXMgcGFyYW1ldGVyIGlzIGlnbm9yZWQgYnkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGV2aWNlIGRyaXZlcnMsIGFuZCBpcyBvcHRpb25hbCBmb3IgYnVzDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlcnMuDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhIGJ1cyBkcml2ZXIsIGlmIHRoaXMgcGFyYW1l dGVyIGlzIE5VTEwsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4g aGFuZGxlcyBmb3IgYWxsIHRoZSBjaGlsZHJlbiBvZg0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBDb250cm9sbGVyIGFyZSBjcmVhdGVkIGJ5IHRoaXMgZHJpdmVyLg0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGlzIHBhcmFtZXRlciBpcyBu b3QgTlVMTCBhbmQgdGhlIGZpcnN0DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIERldmljZSBQYXRoIE5vZGUgaXMgbm90IHRoZSBFbmQgb2YgRGV2aWNlDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGggTm9kZSwgdGhlbiBvbmx5IHRoZSBoYW5k bGUgZm9yIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZCBk ZXZpY2Ugc3BlY2lmaWVkIGJ5IHRoZSBmaXJzdCBEZXZpY2UNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUGF0aCBOb2RlIG9mIFJlbWFpbmluZ0RldmljZVBhdGggaXMgY3Jl YXRlZA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSB0aGlzIGRyaXZl ci4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGZpcnN0IERl dmljZSBQYXRoIE5vZGUgb2YNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UmVtYWluaW5nRGV2aWNlUGF0aCBpcyB0aGUgRW5kIG9mIERldmljZSBQYXRoDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUsIG5vIGNoaWxkIGhhbmRsZSBpcyBjcmVh dGVkIGJ5IHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVy Lg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgIFRoZSBkZXZpY2Ug d2FzIHN0YXJ0ZWQuDQo+ICsgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgICAgIFRoZSBk ZXZpY2UgY291bGQgbm90IGJlIHN0YXJ0ZWQgZHVlIHRvIGENCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGV2aWNlIGVycm9yLiBDdXJyZW50bHkgbm90IGltcGxlbWVudGVk Lg0KPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICAgICBUaGUgcmVxdWVzdCBjb3Vs ZCBub3QgYmUgY29tcGxldGVkIGR1ZSB0byBhDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxhY2sgb2YgcmVzb3VyY2VzLg0KPiArICBAcmV0dmFsIE90aGVycyAgICAgICAg ICAgICAgICAgICBUaGUgZHJpdmVyIGZhaWxkZWQgdG8gc3RhcnQgdGhlIGRldmljZS4NCj4gKw0K PiArKiovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0R3TW1jSGNEcml2ZXJCaW5kaW5n U3RhcnQgKA0KPiArICBJTiBFRklfRFJJVkVSX0JJTkRJTkdfUFJPVE9DT0wgICAgICpUaGlzLA0K PiArICBJTiBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXIsDQo+ICsg IElOIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgKlJlbWFpbmluZ0RldmljZVBhdGgN Cj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgIFN0YXR1 czsNCj4gKyAgRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAqUHJpdmF0ZTsNCj4gKw0K PiArICBOT05fRElTQ09WRVJBQkxFX0RFVklDRSAgICAgICAgICpEZXY7DQo+ICsNCj4gKyAgQk9P TEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBNZWRpYVByZXNlbnQ7DQo+ICsgIERXTU1DX0NB UkRfVFlQRV9ERVRFQ1RfUk9VVElORSAgKlJvdXRpbmU7DQo+ICsgIFVJTlQ4ICAgICAgICAgICAg ICAgICAgICAgICAgICAgSW5kZXg7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAg ICAgUm91dGluZU51bTsNCj4gKyAgUExBVEZPUk1fRFdfTU1DX1BST1RPQ09MICAgICAgICAqUGxh dGZvcm1Ed01tYzsNCj4gKw0KPiArICBTdGF0dXMgPSBnQlMtPkxvY2F0ZVByb3RvY29sICgNCj4g KyAgICAgICAgICAgICAgICAgICZnUGxhdGZvcm1Ed01tY1Byb3RvY29sR3VpZCwNCj4gKyAgICAg ICAgICAgICAgICAgIE5VTEwsDQo+ICsgICAgICAgICAgICAgICAgICAoVk9JRCAqKikgJlBsYXRm b3JtRHdNbWMNCj4gKyAgICAgICAgICAgICAgICAgICk7DQo+ICsgIGlmIChFRklfRVJST1IgKFN0 YXR1cykpIHsNCj4gKyAgREVCVUcgKChERUJVR19FUlJPUiwgImVyciAlZCIsIF9fTElORV9fKSk7 DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsgIFN0YXR1cyA9IGdCUy0+ T3BlblByb3RvY29sICgNCj4gKyAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXIsDQo+ICsgICAg ICAgICAgICAgICAgICAmZ0Vka2lpTm9uRGlzY292ZXJhYmxlRGV2aWNlUHJvdG9jb2xHdWlkLA0K PiArICAgICAgICAgICAgICAgICAgKFZPSUQgKiopICZEZXYsDQo+ICsgICAgICAgICAgICAgICAg ICBUaGlzLT5Ecml2ZXJCaW5kaW5nSGFuZGxlLA0KPiArICAgICAgICAgICAgICAgICAgQ29udHJv bGxlciwNCj4gKyAgICAgICAgICAgICAgICAgIEVGSV9PUEVOX1BST1RPQ09MX0JZX0RSSVZFUg0K PiArICAgICAgICAgICAgICAgICAgKTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiArICBERUJVRyAoKERFQlVHX0VSUk9SLCAiZXJyICVkIiwgX19MSU5FX18pKTsNCj4gKyAgICBy ZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAgUHJpdmF0ZSA9IEFsbG9jYXRlQ29weVBv b2wgKHNpemVvZiAoRFdfTU1DX0hDX1BSSVZBVEVfREFUQSksICZnRHdNbWNIY1RlbXBsYXRlKTsN Cj4gKyAgaWYgKFByaXZhdGUgPT0gTlVMTCkgew0KPiArICBERUJVRyAoKERFQlVHX0VSUk9SLCAi ZXJyICVkIiwgX19MSU5FX18pKTsNCj4gKyAgICBTdGF0dXMgPSBFRklfT1VUX09GX1JFU09VUkNF UzsNCj4gKyAgICBnb3RvIERvbmU7DQo+ICsgIH0NCj4gKw0KPiArICBQcml2YXRlLT5Db250cm9s bGVySGFuZGxlID0gQ29udHJvbGxlcjsNCj4gKyAgUHJpdmF0ZS0+RGV2QmFzZSAgICAgICAgICA9 IERldi0+UmVzb3VyY2VzWzBdLkFkZHJSYW5nZU1pbjsNCj4gKyAgUHJpdmF0ZS0+UGxhdGZvcm1E d01tYyAgICA9IFBsYXRmb3JtRHdNbWM7DQo+ICsgIEluaXRpYWxpemVMaXN0SGVhZCAoJlByaXZh dGUtPlF1ZXVlKTsNCj4gKw0KPiArICBTdGF0dXMgPSBQcml2YXRlLT5QbGF0Zm9ybUR3TW1jLT5H ZXRDYXBhYmlsaXR5IChDb250cm9sbGVyLCAwLCAmUHJpdmF0ZS0+Q2FwYWJpbGl0eVswXSk7DQo+ ICsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIGdvdG8gRG9uZTsNCj4g KyAgfQ0KPiArDQo+ICsgIGlmIChQcml2YXRlLT5DYXBhYmlsaXR5WzBdLkJhc2VDbGtGcmVxID09 IDApIHsNCj4gKyAgICBnb3RvIERvbmU7DQo+ICsgIH0NCj4gKw0KPiArICBEdW1wQ2FwYWJpbGl0 eVJlZyAoMCwgJlByaXZhdGUtPkNhcGFiaWxpdHlbMF0pOw0KPiArDQo+ICsgIE1lZGlhUHJlc2Vu dCA9IEZBTFNFOw0KPiArDQo+ICsgIFN0YXR1cyA9IFByaXZhdGUtPlBsYXRmb3JtRHdNbWMtPkNh cmREZXRlY3QgKENvbnRyb2xsZXIsIDApOw0KPiArICBTdGF0dXMgPSBEd01tY0hjQ2FyZERldGVj dCAoUHJpdmF0ZS0+RGV2QmFzZSwgQ29udHJvbGxlciwgMCwgJk1lZGlhUHJlc2VudCk7DQo+ICsg IGlmIChNZWRpYVByZXNlbnQgPT0gRkFMU0UpIHsNCj4gKyAgICBnb3RvIERvbmU7DQo+ICsgIH0N Cj4gKw0KPiArICAvLw0KPiArICAvLyBJbml0aWFsaXplIHNsb3QgYW5kIHN0YXJ0IGlkZW50aWZp Y2F0aW9uIHByb2Nlc3MgZm9yIHRoZSBuZXcgYXR0YWNoZWQgZGV2aWNlDQo+ICsgIC8vDQo+ICsg IFN0YXR1cyA9IER3TW1jSGNJbml0SG9zdCAoUHJpdmF0ZS0+RGV2QmFzZSwgUHJpdmF0ZS0+Q2Fw YWJpbGl0eVswXSk7DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICBnb3Rv IERvbmU7DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvLyBSZXNldCBIQw0KPiArICAvLw0K PiArICBTdGF0dXMgPSBEd01tY0hjUmVzZXQgKFByaXZhdGUtPkRldkJhc2UsIFByaXZhdGUtPkNh cGFiaWxpdHlbMF0pOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgZ290 byBEb25lOw0KPiArICB9DQo+ICsNCj4gKyAgUHJpdmF0ZS0+U2xvdFswXS5DYXJkVHlwZSA9IFBy aXZhdGUtPkNhcGFiaWxpdHlbMF0uQ2FyZFR5cGU7DQo+ICsgIFByaXZhdGUtPlNsb3RbMF0uRW5h YmxlID0gVFJVRTsNCj4gKyAgUHJpdmF0ZS0+U2xvdFswXS5NZWRpYVByZXNlbnQgPSBUUlVFOw0K PiArDQo+ICsgIFJvdXRpbmVOdW0gPSBzaXplb2YgKG1DYXJkVHlwZURldGVjdFJvdXRpbmVUYWJs ZSkgLyBzaXplb2YgKERXTU1DX0NBUkRfVFlQRV9ERVRFQ1RfUk9VVElORSk7DQo+ICsgIGZvciAo SW5kZXggPSAwOyBJbmRleCA8IFJvdXRpbmVOdW07IEluZGV4KyspIHsNCj4gKyAgICBSb3V0aW5l ID0gJm1DYXJkVHlwZURldGVjdFJvdXRpbmVUYWJsZVtJbmRleF07DQo+ICsgICAgaWYgKCpSb3V0 aW5lICE9IE5VTEwpIHsNCj4gKyAgICAgIFN0YXR1cyA9ICgqUm91dGluZSkgKFByaXZhdGUpOw0K PiArICAgICAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICAgICAgYnJlYWs7DQo+ ICsgICAgICB9DQo+ICsgICAgfQ0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gU3RhcnQg dGhlIGFzeW5jaHJvbm91cyBJL08gbW9uaXRvcg0KPiArICAvLw0KPiArICBTdGF0dXMgPSBnQlMt PkNyZWF0ZUV2ZW50ICgNCj4gKyAgICAgICAgICAgICAgICAgIEVWVF9USU1FUiB8IEVWVF9OT1RJ RllfU0lHTkFMLA0KPiArICAgICAgICAgICAgICAgICAgVFBMX05PVElGWSwNCj4gKyAgICAgICAg ICAgICAgICAgIFByb2Nlc3NBc3luY1Rhc2tMaXN0LA0KPiArICAgICAgICAgICAgICAgICAgUHJp dmF0ZSwNCj4gKyAgICAgICAgICAgICAgICAgICZQcml2YXRlLT5UaW1lckV2ZW50DQo+ICsgICAg ICAgICAgICAgICAgICApOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAg Z290byBEb25lOw0KPiArICB9DQo+ICsNCj4gKyAgU3RhdHVzID0gZ0JTLT5TZXRUaW1lciAoUHJp dmF0ZS0+VGltZXJFdmVudCwgVGltZXJQZXJpb2RpYywgRFdfTU1DX0hDX0FTWU5DX1RJTUVSKTsN Cj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIGdvdG8gRG9uZTsNCj4gKyAg fQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIFN0YXJ0IHRoZSBTZCByZW1vdmFibGUgZGV2aWNlIGNv bm5lY3Rpb24gZW51bWVyYXRpb24NCj4gKyAgLy8NCj4gKyAgU3RhdHVzID0gZ0JTLT5DcmVhdGVF dmVudCAoDQo+ICsgICAgICAgICAgICAgICAgICBFVlRfVElNRVIgfCBFVlRfTk9USUZZX1NJR05B TCwNCj4gKyAgICAgICAgICAgICAgICAgIFRQTF9DQUxMQkFDSywNCj4gKyAgICAgICAgICAgICAg ICAgIER3TW1jSGNFbnVtZXJhdGVEZXZpY2UsDQo+ICsgICAgICAgICAgICAgICAgICBQcml2YXRl LA0KPiArICAgICAgICAgICAgICAgICAgJlByaXZhdGUtPkNvbm5lY3RFdmVudA0KPiArICAgICAg ICAgICAgICAgICAgKTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIGdv dG8gRG9uZTsNCj4gKyAgfQ0KPiArDQo+ICsgIFN0YXR1cyA9IGdCUy0+U2V0VGltZXIgKFByaXZh dGUtPkNvbm5lY3RFdmVudCwgVGltZXJQZXJpb2RpYywgRFdfTU1DX0hDX0VOVU1fVElNRVIpOw0K PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgZ290byBEb25lOw0KPiArICB9 DQo+ICsNCj4gKyAgU3RhdHVzID0gZ0JTLT5JbnN0YWxsTXVsdGlwbGVQcm90b2NvbEludGVyZmFj ZXMgKA0KPiArICAgICAgICAgICAgICAgICAgJkNvbnRyb2xsZXIsDQo+ICsgICAgICAgICAgICAg ICAgICAmZ0VmaVNkTW1jUGFzc1RocnVQcm90b2NvbEd1aWQsDQo+ICsgICAgICAgICAgICAgICAg ICAmKFByaXZhdGUtPlBhc3NUaHJ1KSwNCj4gKyAgICAgICAgICAgICAgICAgIE5VTEwNCj4gKyAg ICAgICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgREVCVUcgKChERUJVR19JTkZPLCAiRHdNbWNI Y0RyaXZlckJpbmRpbmdTdGFydDogJXIgRW5kIG9uICV4XG4iLCBTdGF0dXMsIENvbnRyb2xsZXIp KTsNCj4gKw0KPiArRG9uZToNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAg IGlmICgoUHJpdmF0ZSAhPSBOVUxMKSAmJiAoUHJpdmF0ZS0+VGltZXJFdmVudCAhPSBOVUxMKSkg ew0KPiArICAgICAgZ0JTLT5DbG9zZUV2ZW50IChQcml2YXRlLT5UaW1lckV2ZW50KTsNCj4gKyAg ICB9DQo+ICsNCj4gKyAgICBpZiAoKFByaXZhdGUgIT0gTlVMTCkgJiYgKFByaXZhdGUtPkNvbm5l Y3RFdmVudCAhPSBOVUxMKSkgew0KPiArICAgICAgZ0JTLT5DbG9zZUV2ZW50IChQcml2YXRlLT5D b25uZWN0RXZlbnQpOw0KPiArICAgIH0NCj4gKw0KPiArICAgIGlmIChQcml2YXRlICE9IE5VTEwp IHsNCj4gKyAgICAgIEZyZWVQb29sIChQcml2YXRlKTsNCj4gKyAgICB9DQo+ICsgIH0NCj4gKw0K PiArICByZXR1cm4gU3RhdHVzOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgU3RvcHMgYSBkZXZp Y2UgY29udHJvbGxlciBvciBhIGJ1cyBjb250cm9sbGVyLg0KPiArDQo+ICsgIFRoZSBTdG9wKCkg ZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW52b2tlZCBmcm9tIHRoZSBFRkkgYm9vdCBzZXJ2 aWNlDQo+ICsgIERpc2Nvbm5lY3RDb250cm9sbGVyKCkuDQo+ICsgIEFzIGEgcmVzdWx0LCBtdWNo IG9mIHRoZSBlcnJvciBjaGVja2luZyBvbiB0aGUgcGFyYW1ldGVycyB0byBTdG9wKCkgaGFzIGJl ZW4NCj4gKyAgbW92ZWQgaW50byB0aGlzIGNvbW1vbiBib290IHNlcnZpY2UuIEl0IGlzIGxlZ2Fs IHRvIGNhbGwgU3RvcCgpIGZyb20gb3RoZXINCj4gKyAgbG9jYXRpb25zLCBidXQgdGhlIGZvbGxv d2luZyBjYWxsaW5nIHJlc3RyaWN0aW9ucyBtdXN0IGJlIGZvbGxvd2VkIG9yIHRoZQ0KPiArICBz eXN0ZW0gYmVoYXZpb3Igd2lsbCBub3QgYmUgZGV0ZXJtaW5pc3RpYy4NCj4gKyAgMS4gQ29udHJv bGxlckhhbmRsZSBtdXN0IGJlIGEgdmFsaWQgRUZJX0hBTkRMRSB0aGF0IHdhcyB1c2VkIG9uIGEg cHJldmlvdXMNCj4gKyAgICAgY2FsbCB0byB0aGlzIHNhbWUgZHJpdmVyJ3MgU3RhcnQoKSBmdW5j dGlvbi4NCj4gKyAgMi4gVGhlIGZpcnN0IE51bWJlck9mQ2hpbGRyZW4gaGFuZGxlcyBvZiBDaGls ZEhhbmRsZUJ1ZmZlciBtdXN0IGFsbCBiZSBhIHZhbGlkDQo+ICsgICAgIEVGSV9IQU5ETEUuIElu IGFkZGl0aW9uLCBhbGwgb2YgdGhlc2UgaGFuZGxlcyBtdXN0IGhhdmUgYmVlbiBjcmVhdGVkIGlu DQo+ICsgICAgIHRoaXMgZHJpdmVyJ3MgU3RhcnQoKSBmdW5jdGlvbiwgYW5kIHRoZSBTdGFydCgp IGZ1bmN0aW9uIG11c3QgaGF2ZSBjYWxsZWQNCj4gKyAgICAgT3BlblByb3RvY29sKCkgb24gQ29u dHJvbGxlckhhbmRsZSB3aXRoIGFuIEF0dHJpYnV0ZSBvZg0KPiArICAgICBFRklfT1BFTl9QUk9U T0NPTF9CWV9DSElMRF9DT05UUk9MTEVSLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIFRoaXMgICAg ICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX0RSSVZFUl9CSU5ESU5HX1BST1RPQ09MDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiArICBAcGFyYW1b aW5dICBDb250cm9sbGVySGFuZGxlICBBIGhhbmRsZSB0byB0aGUgZGV2aWNlIGJlaW5nIHN0b3Bw ZWQuIFRoZSBoYW5kbGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVzdCBz dXBwb3J0IGEgYnVzIHNwZWNpZmljIEkvTyBwcm90b2NvbCBmb3IgdGhlDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRyaXZlciB0byB1c2UgdG8gc3RvcCB0aGUgZGV2aWNlLg0K PiArICBAcGFyYW1baW5dICBOdW1iZXJPZkNoaWxkcmVuICBUaGUgbnVtYmVyIG9mIGNoaWxkIGRl dmljZSBoYW5kbGVzIGluDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoaWxk SGFuZGxlQnVmZmVyLg0KPiArICBAcGFyYW1baW5dICBDaGlsZEhhbmRsZUJ1ZmZlciBBbiBhcnJh eSBvZiBjaGlsZCBoYW5kbGVzIHRvIGJlIGZyZWVkLiBNYXkgYmUNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTlVMTCBpZiBOdW1iZXJPZkNoaWxkcmVuIGlzIDAuDQo+ICsNCj4g KyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIGRldmljZSB3YXMgc3RvcHBlZC4N Cj4gKyAgQHJldHZhbCBFRklfREVWSUNFX0VSUk9SICAgICAgVGhlIGRldmljZSBjb3VsZCBub3Qg YmUgc3RvcHBlZCBkdWUgdG8gYSBkZXZpY2UNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZXJyb3IuDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtE d01tY0hjRHJpdmVyQmluZGluZ1N0b3AgKA0KPiArICBJTiAgRUZJX0RSSVZFUl9CSU5ESU5HX1BS T1RPQ09MICAgICAqVGhpcywNCj4gKyAgSU4gIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAg ICAgQ29udHJvbGxlciwNCj4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAg TnVtYmVyT2ZDaGlsZHJlbiwNCj4gKyAgSU4gIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAg ICAgKkNoaWxkSGFuZGxlQnVmZmVyDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAgICAg ICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiArICBFRklfU0RfTU1DX1BBU1NfVEhSVV9Q Uk9UT0NPTCAgICAgICAqUGFzc1RocnU7DQo+ICsgIERXX01NQ19IQ19QUklWQVRFX0RBVEEgICAg ICAgICAgICAgICpQcml2YXRlOw0KPiArICBMSVNUX0VOVFJZICAgICAgICAgICAgICAgICAgICAg ICAgICAqTGluazsNCj4gKyAgTElTVF9FTlRSWSAgICAgICAgICAgICAgICAgICAgICAgICAgKk5l eHRMaW5rOw0KPiArICBEV19NTUNfSENfVFJCICAgICAgICAgICAgICAgICAgICAgICAqVHJiOw0K PiArDQo+ICsgIERFQlVHICgoREVCVUdfSU5GTywgIkR3TW1jSGNEcml2ZXJCaW5kaW5nU3RvcDog U3RhcnRcbiIpKTsNCj4gKw0KPiArICBTdGF0dXMgPSBnQlMtPk9wZW5Qcm90b2NvbCAoDQo+ICsg ICAgICAgICAgICAgICAgICBDb250cm9sbGVyLA0KPiArICAgICAgICAgICAgICAgICAgJmdFZmlT ZE1tY1Bhc3NUaHJ1UHJvdG9jb2xHdWlkLA0KPiArICAgICAgICAgICAgICAgICAgKFZPSUQqKikg JlBhc3NUaHJ1LA0KPiArICAgICAgICAgICAgICAgICAgVGhpcy0+RHJpdmVyQmluZGluZ0hhbmRs ZSwNCj4gKyAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXIsDQo+ICsgICAgICAgICAgICAgICAg ICBFRklfT1BFTl9QUk9UT0NPTF9HRVRfUFJPVE9DT0wNCj4gKyAgICAgICAgICAgICAgICAgICk7 DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0K PiArICB9DQo+ICsNCj4gKyAgUHJpdmF0ZSA9IERXX01NQ19IQ19QUklWQVRFX0ZST01fVEhJUyAo UGFzc1RocnUpOw0KPiArICAvLw0KPiArICAvLyBDbG9zZSBOb24tQmxvY2tpbmcgdGltZXIgYW5k IGZyZWUgVGFzayBsaXN0Lg0KPiArICAvLw0KPiArICBpZiAoUHJpdmF0ZS0+VGltZXJFdmVudCAh PSBOVUxMKSB7DQo+ICsgICAgZ0JTLT5DbG9zZUV2ZW50IChQcml2YXRlLT5UaW1lckV2ZW50KTsN Cj4gKyAgICBQcml2YXRlLT5UaW1lckV2ZW50ID0gTlVMTDsNCj4gKyAgfQ0KPiArICBpZiAoUHJp dmF0ZS0+Q29ubmVjdEV2ZW50ICE9IE5VTEwpIHsNCj4gKyAgICBnQlMtPkNsb3NlRXZlbnQgKFBy aXZhdGUtPkNvbm5lY3RFdmVudCk7DQo+ICsgICAgUHJpdmF0ZS0+Q29ubmVjdEV2ZW50ID0gTlVM TDsNCj4gKyAgfQ0KPiArICAvLw0KPiArICAvLyBBcyB0aGUgdGltZXIgaXMgY2xvc2VkLCB0aGVy ZSBpcyBubyBuZWVkcyB0byB1c2UgVFBMIGxvY2sgdG8NCj4gKyAgLy8gcHJvdGVjdCB0aGUgY3Jp dGljYWwgcmVnaW9uICJxdWV1ZSIuDQo+ICsgIC8vDQo+ICsgIGZvciAoTGluayA9IEdldEZpcnN0 Tm9kZSAoJlByaXZhdGUtPlF1ZXVlKTsNCj4gKyAgICAgICAhSXNOdWxsICgmUHJpdmF0ZS0+UXVl dWUsIExpbmspOw0KPiArICAgICAgIExpbmsgPSBOZXh0TGluaykgew0KPiArICAgIE5leHRMaW5r ID0gR2V0TmV4dE5vZGUgKCZQcml2YXRlLT5RdWV1ZSwgTGluayk7DQo+ICsgICAgUmVtb3ZlRW50 cnlMaXN0IChMaW5rKTsNCj4gKyAgICBUcmIgPSBEV19NTUNfSENfVFJCX0ZST01fVEhJUyAoTGlu ayk7DQo+ICsgICAgVHJiLT5QYWNrZXQtPlRyYW5zYWN0aW9uU3RhdHVzID0gRUZJX0FCT1JURUQ7 DQo+ICsgICAgZ0JTLT5TaWduYWxFdmVudCAoVHJiLT5FdmVudCk7DQo+ICsgICAgRHdNbWNGcmVl VHJiIChUcmIpOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gVW5pbnN0YWxsIEJsb2Nr IEkvTyBwcm90b2NvbCBmcm9tIHRoZSBkZXZpY2UgaGFuZGxlDQo+ICsgIC8vDQo+ICsgIFN0YXR1 cyA9IGdCUy0+VW5pbnN0YWxsUHJvdG9jb2xJbnRlcmZhY2UgKA0KPiArICAgICAgICAgICAgICAg ICAgQ29udHJvbGxlciwNCj4gKyAgICAgICAgICAgICAgICAgICZnRWZpU2RNbWNQYXNzVGhydVBy b3RvY29sR3VpZCwNCj4gKyAgICAgICAgICAgICAgICAgICYoUHJpdmF0ZS0+UGFzc1RocnUpDQo+ ICsgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykp IHsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAgZ0JTLT5DbG9zZVBy b3RvY29sICgNCj4gKyAgICAgICAgIENvbnRyb2xsZXIsDQo+ICsgICAgICAgICAmZ0VmaVBjaUlv UHJvdG9jb2xHdWlkLA0KPiArICAgICAgICAgVGhpcy0+RHJpdmVyQmluZGluZ0hhbmRsZSwNCj4g KyAgICAgICAgIENvbnRyb2xsZXINCj4gKyAgICAgICAgICk7DQo+ICsNCj4gKyAgRnJlZVBvb2wg KFByaXZhdGUpOw0KPiArDQo+ICsgIERFQlVHICgoREVCVUdfSU5GTywgIkR3TW1jSGNEcml2ZXJC aW5kaW5nU3RvcDogRW5kIHdpdGggJXJcbiIsIFN0YXR1cykpOw0KPiArDQo+ICsgIHJldHVybiBT dGF0dXM7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBTZW5kcyBTRCBjb21tYW5kIHRvIGFuIFNE IGNhcmQgdGhhdCBpcyBhdHRhY2hlZCB0byB0aGUgU0QgY29udHJvbGxlci4NCj4gKw0KPiArICBU aGUgUGFzc1RocnUoKSBmdW5jdGlvbiBzZW5kcyB0aGUgU0QgY29tbWFuZCBzcGVjaWZpZWQgYnkg UGFja2V0IHRvIHRoZSBTRA0KPiArICBjYXJkIHNwZWNpZmllZCBieSBTbG90Lg0KPiArDQo+ICsg IElmIFBhY2tldCBpcyBzdWNjZXNzZnVsbHkgc2VudCB0byB0aGUgU0QgY2FyZCwgdGhlbiBFRklf U1VDQ0VTUyBpcyByZXR1cm5lZC4NCj4gKw0KPiArICBJZiBhIGRldmljZSBlcnJvciBvY2N1cnMg d2hpbGUgc2VuZGluZyB0aGUgUGFja2V0LCB0aGVuIEVGSV9ERVZJQ0VfRVJST1IgaXMNCj4gKyAg cmV0dXJuZWQuDQo+ICsNCj4gKyAgSWYgU2xvdCBpcyBub3QgaW4gYSB2YWxpZCByYW5nZSBmb3Ig dGhlIFNEIGNvbnRyb2xsZXIsIHRoZW4NCj4gKyAgRUZJX0lOVkFMSURfUEFSQU1FVEVSIGlzIHJl dHVybmVkLg0KPiArDQo+ICsgIElmIFBhY2tldCBkZWZpbmVzIGEgZGF0YSBjb21tYW5kIGJ1dCBi b3RoIEluRGF0YUJ1ZmZlciBhbmQgT3V0RGF0YUJ1ZmZlciBhcmUNCj4gKyAgTlVMTCwgRUZJX0lO VkFMSURfUEFSQU1FVEVSIGlzIHJldHVybmVkLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gICAgIFRo aXMgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9D T0wNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ICsgIEBw YXJhbVtpbl0gICAgIFNsb3QgICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2Fy ZCB0byBzZW5kIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5k IHRvLg0KPiArICBAcGFyYW1baW4sb3V0XSBQYWNrZXQgICAgICAgICBBIHBvaW50ZXIgdG8gdGhl IFNEIGNvbW1hbmQgZGF0YSBzdHJ1Y3R1cmUuDQo+ICsgIEBwYXJhbVtpbl0gICAgIEV2ZW50ICAg ICAgICAgIElmIEV2ZW50IGlzIE5VTEwsIGJsb2NraW5nIEkvTyBpcyBwZXJmb3JtZWQuIElmDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50IGlzIG5vdCBOVUxMLCB0aGVu IG5vbmJsb2NraW5nIEkvTyBpcw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw ZXJmb3JtZWQsIGFuZCBFdmVudCB3aWxsIGJlIHNpZ25hbGVkIHdoZW4gdGhlDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2tldCBjb21wbGV0ZXMuDQo+ICsNCj4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIFNEIENvbW1hbmQgUGFja2V0IHdhcyBzZW50 IGJ5IHRoZSBob3N0Lg0KPiArICBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1IgICAgICBBIGRldmlj ZSBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIHNlbmQNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGhlIFNEIGNvbW1hbmQgUGFja2V0Lg0KPiArICBAcmV0dmFs IEVGSV9JTlZBTElEX1BBUkFNRVRFUiBQYWNrZXQsIFNsb3QsIG9yIHRoZSBjb250ZW50cyBvZiB0 aGUgUGFja2V0IGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWQu DQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIFBhY2tldCBkZWZpbmVzIGEgZGF0 YSBjb21tYW5kIGJ1dCBib3RoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElu RGF0YUJ1ZmZlciBhbmQgT3V0RGF0YUJ1ZmZlciBhcmUgTlVMTC4NCj4gKyAgQHJldHZhbCBFRklf Tk9fTUVESUEgICAgICAgICAgU0QgRGV2aWNlIG5vdCBwcmVzZW50IGluIHRoZSBTbG90Lg0KPiAr ICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICBUaGUgY29tbWFuZCBkZXNjcmliZWQgYnkg dGhlIFNEIENvbW1hbmQgUGFja2V0DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGhvc3QgY29udHJvbGxlci4NCj4gKyAgQHJldHZhbCBF RklfQkFEX0JVRkZFUl9TSVpFICAgVGhlIEluVHJhbnNmZXJMZW5ndGggb3IgT3V0VHJhbnNmZXJM ZW5ndGgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZWVkcyB0aGUgbGlt aXQgc3VwcG9ydGVkIGJ5IFNEIGNhcmQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKCBpLmUuIGlmIHRoZSBudW1iZXIgb2YgYnl0ZXMgZXhjZWVkIHRoZSBMYXN0DQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExCQSkuDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NU QVRVUw0KPiArRUZJQVBJDQo+ICtEd01tY1Bhc3NUaHJ1UGFzc1RocnUgKA0KPiArICBJTiAgICAg RUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAgICAqVGhpcywNCj4gKyAgSU4gICAg IFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvdCwNCj4gKyAgSU4gT1VU IEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICAgKlBhY2tldCwNCj4gKyAgSU4g ICAgIEVGSV9FVkVOVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnQgICAgT1BUSU9O QUwNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgIFN0 YXR1czsNCj4gKyAgRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAqUHJpdmF0ZTsNCj4g KyAgRFdfTU1DX0hDX1RSQiAgICAgICAgICAgICAgICAgICAqVHJiOw0KPiArICBFRklfVFBMICAg ICAgICAgICAgICAgICAgICAgICAgIE9sZFRwbDsNCj4gKw0KPiArICBpZiAoKFRoaXMgPT0gTlVM TCkgfHwgKFBhY2tldCA9PSBOVUxMKSkgew0KPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJB TUVURVI7DQo+ICsgIH0NCj4gKw0KPiArICBpZiAoKFBhY2tldC0+U2RNbWNDbWRCbGsgPT0gTlVM TCkgfHwgKFBhY2tldC0+U2RNbWNTdGF0dXNCbGsgPT0gTlVMTCkpIHsNCj4gKyAgICByZXR1cm4g RUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICB9DQo+ICsNCj4gKyAgaWYgKChQYWNrZXQtPk91 dERhdGFCdWZmZXIgPT0gTlVMTCkgJiYgKFBhY2tldC0+T3V0VHJhbnNmZXJMZW5ndGggIT0gMCkp IHsNCj4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICB9DQo+ICsNCj4g KyAgaWYgKChQYWNrZXQtPkluRGF0YUJ1ZmZlciA9PSBOVUxMKSAmJiAoUGFja2V0LT5JblRyYW5z ZmVyTGVuZ3RoICE9IDApKSB7DQo+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsN Cj4gKyAgfQ0KPiArDQo+ICsgIFByaXZhdGUgPSBEV19NTUNfSENfUFJJVkFURV9GUk9NX1RISVMg KFRoaXMpOw0KPiArDQo+ICsgIGlmICghUHJpdmF0ZS0+U2xvdFtTbG90XS5FbmFibGUpIHsNCj4g KyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICB9DQo+ICsNCj4gKyAgaWYg KCFQcml2YXRlLT5TbG90W1Nsb3RdLk1lZGlhUHJlc2VudCkgew0KPiArICAgIHJldHVybiBFRklf Tk9fTUVESUE7DQo+ICsgIH0NCj4gKw0KPiArICBUcmIgPSBEd01tY0NyZWF0ZVRyYiAoUHJpdmF0 ZSwgU2xvdCwgUGFja2V0LCBFdmVudCk7DQo+ICsgIGlmIChUcmIgPT0gTlVMTCkgew0KPiArICAg IHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gKyAgfQ0KPiArICAvLw0KPiArICAvLyBJ bW1lZGlhdGVseSByZXR1cm4gZm9yIGFzeW5jIEkvTy4NCj4gKyAgLy8NCj4gKyAgaWYgKEV2ZW50 ICE9IE5VTEwpIHsNCj4gKyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICsgIH0NCj4gKw0KPiAr ICAvLw0KPiArICAvLyBXYWl0IGFzeW5jIEkvTyBsaXN0IGlzIGVtcHR5IGJlZm9yZSBleGVjdXRl IHN5bmMgSS9PIG9wZXJhdGlvbi4NCj4gKyAgLy8NCj4gKyAgd2hpbGUgKFRSVUUpIHsNCj4gKyAg ICBPbGRUcGwgPSBnQlMtPlJhaXNlVFBMIChUUExfTk9USUZZKTsNCj4gKyAgICBpZiAoSXNMaXN0 RW1wdHkgKCZQcml2YXRlLT5RdWV1ZSkpIHsNCj4gKyAgICAgIGdCUy0+UmVzdG9yZVRQTCAoT2xk VHBsKTsNCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKyAgICBnQlMtPlJlc3RvcmVUUEwg KE9sZFRwbCk7DQo+ICsgIH0NCj4gKw0KPiArICBTdGF0dXMgPSBEd01tY1dhaXRUcmJFbnYgKFBy aXZhdGUsIFRyYik7DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICBnb3Rv IERvbmU7DQo+ICsgIH0NCj4gKw0KPiArICBTdGF0dXMgPSBEd01tY0V4ZWNUcmIgKFByaXZhdGUs IFRyYik7DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICBnb3RvIERvbmU7 DQo+ICsgIH0NCj4gKw0KPiArICBTdGF0dXMgPSBEd01tY1dhaXRUcmJSZXN1bHQgKFByaXZhdGUs IFRyYik7DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICBnb3RvIERvbmU7 DQo+ICsgIH0NCj4gKw0KPiArRG9uZToNCj4gKyAgaWYgKFRyYiAhPSBOVUxMKSB7DQo+ICsgICAg RHdNbWNGcmVlVHJiIChUcmIpOw0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIFN0YXR1czsNCj4g K30NCj4gKw0KPiArLyoqDQo+ICsgIFVzZWQgdG8gcmV0cmlldmUgbmV4dCBzbG90IG51bWJlcnMg c3VwcG9ydGVkIGJ5IHRoZSBTRCBjb250cm9sbGVyLiBUaGUNCj4gKyAgZnVuY3Rpb24gcmV0dXJu cyBpbmZvcm1hdGlvbiBhYm91dCBhbGwgYXZhaWxhYmxlIHNsb3RzIChwb3B1bGF0ZWQgb3INCj4g KyAgbm90LXBvcHVsYXRlZCkuDQo+ICsNCj4gKyAgVGhlIEdldE5leHRTbG90KCkgZnVuY3Rpb24g cmV0cmlldmVzIHRoZSBuZXh0IHNsb3QgbnVtYmVyIG9uIGFuIFNEIGNvbnRyb2xsZXIuDQo+ICsg IElmIG9uIGlucHV0IFNsb3QgaXMgMHhGRiwgdGhlbiB0aGUgc2xvdCBudW1iZXIgb2YgdGhlIGZp cnN0IHNsb3Qgb24gdGhlIFNEDQo+ICsgIGNvbnRyb2xsZXIgaXMgcmV0dXJuZWQuDQo+ICsNCj4g KyAgSWYgU2xvdCBpcyBhIHNsb3QgbnVtYmVyIHRoYXQgd2FzIHJldHVybmVkIG9uIGEgcHJldmlv dXMgY2FsbCB0bw0KPiArICBHZXROZXh0U2xvdCgpLCB0aGVuIHRoZSBzbG90IG51bWJlciBvZiB0 aGUgbmV4dCBzbG90IG9uIHRoZSBTRCBjb250cm9sbGVyIGlzDQo+ICsgIHJldHVybmVkLg0KPiAr DQo+ICsgIElmIFNsb3QgaXMgbm90IDB4RkYgYW5kIFNsb3Qgd2FzIG5vdCByZXR1cm5lZCBvbiBh IHByZXZpb3VzIGNhbGwgdG8NCj4gKyAgR2V0TmV4dFNsb3QoKSwgRUZJX0lOVkFMSURfUEFSQU1F VEVSIGlzIHJldHVybmVkLg0KPiArDQo+ICsgIElmIFNsb3QgaXMgdGhlIHNsb3QgbnVtYmVyIG9m IHRoZSBsYXN0IHNsb3Qgb24gdGhlIFNEIGNvbnRyb2xsZXIsIHRoZW4NCj4gKyAgRUZJX05PVF9G T1VORCBpcyByZXR1cm5lZC4NCj4gKw0KPiArICBAcGFyYW1baW5dICAgICBUaGlzICAgICAgICAg ICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9TRF9NTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtW2luLG91 dF0gU2xvdCAgICAgICAgICAgT24gaW5wdXQsIGEgcG9pbnRlciB0byBhIHNsb3QgbnVtYmVyIG9u IHRoZSBTRA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLg0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIGEgcG9pbnRlciB0 byB0aGUgbmV4dCBzbG90IG51bWJlciBvbg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0aGUgU0QgY29udHJvbGxlci4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQW4gaW5wdXQgdmFsdWUgb2YgMHhGRiByZXRyaWV2ZXMgdGhlIGZpcnN0IHNsb3QNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9uIHRoZSBTRCBjb250cm9sbGVy Lg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBuZXh0IHNsb3Qg bnVtYmVyIG9uIHRoZSBTRCBjb250cm9sbGVyIHdhcw0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm5lZCBpbiBTbG90Lg0KPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQg ICAgICAgICBUaGVyZSBhcmUgbm8gbW9yZSBzbG90cyBvbiB0aGlzIFNEIGNvbnRyb2xsZXIuDQo+ ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIFNsb3QgaXMgbm90IDB4RkYgYW5kIFNs b3Qgd2FzIG5vdCByZXR1cm5lZCBvbiBhDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHByZXZpb3VzIGNhbGwgdG8gR2V0TmV4dFNsb3QoKS4NCj4gKw0KPiArKiovDQo+ICtFRklf U1RBVFVTDQo+ICtFRklBUEkNCj4gK0R3TW1jUGFzc1RocnVHZXROZXh0U2xvdCAoDQo+ICsgIElO ICAgICBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICAgKlRoaXMsDQo+ICsgIElO IE9VVCBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlNsb3QNCj4gKyAgKQ0K PiArew0KPiArICBEV19NTUNfSENfUFJJVkFURV9EQVRBICAgICAgICAgICpQcml2YXRlOw0KPiAr DQo+ICsgIGlmICgoVGhpcyA9PSBOVUxMKSB8fCAoU2xvdCA9PSBOVUxMKSkgew0KPiArICAgIHJl dHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgIH0NCj4gKw0KPiArICBQcml2YXRlID0g RFdfTU1DX0hDX1BSSVZBVEVfRlJPTV9USElTIChUaGlzKTsNCj4gKw0KPiArICBpZiAoKlNsb3Qg PT0gMHhGRikgew0KPiArICAgIGlmIChQcml2YXRlLT5TbG90WzBdLkVuYWJsZSkgew0KPiArICAg ICAgKlNsb3QgPSAwOw0KPiArICAgICAgUHJpdmF0ZS0+UHJldmlvdXNTbG90ID0gMDsNCj4gKyAg ICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gKyAgICB9DQo+ICsgICAgcmV0dXJuIEVGSV9OT1Rf Rk9VTkQ7DQo+ICsgIH0gZWxzZSBpZiAoKlNsb3QgPT0gUHJpdmF0ZS0+UHJldmlvdXNTbG90KSB7 DQo+ICsgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAgcmV0 dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsvKioNCj4g KyAgVXNlZCB0byBhbGxvY2F0ZSBhbmQgYnVpbGQgYSBkZXZpY2UgcGF0aCBub2RlIGZvciBhbiBT RCBjYXJkIG9uIHRoZSBTRA0KPiArICBjb250cm9sbGVyLg0KPiArDQo+ICsgIFRoZSBCdWlsZERl dmljZVBhdGgoKSBmdW5jdGlvbiBhbGxvY2F0ZXMgYW5kIGJ1aWxkcyBhIHNpbmdsZSBkZXZpY2Ug bm9kZQ0KPiArICBmb3IgdGhlIFNEIGNhcmQgc3BlY2lmaWVkIGJ5IFNsb3QuDQo+ICsNCj4gKyAg SWYgdGhlIFNEIGNhcmQgc3BlY2lmaWVkIGJ5IFNsb3QgaXMgbm90IHByZXNlbnQgb24gdGhlIFNE IGNvbnRyb2xsZXIsIHRoZW4NCj4gKyAgRUZJX05PVF9GT1VORCBpcyByZXR1cm5lZC4NCj4gKw0K PiArICBJZiBEZXZpY2VQYXRoIGlzIE5VTEwsIHRoZW4gRUZJX0lOVkFMSURfUEFSQU1FVEVSIGlz IHJldHVybmVkLg0KPiArDQo+ICsgIElmIHRoZXJlIGFyZSBub3QgZW5vdWdoIHJlc291cmNlcyB0 byBhbGxvY2F0ZSB0aGUgZGV2aWNlIHBhdGggbm9kZSwgdGhlbg0KPiArICBFRklfT1VUX09GX1JF U09VUkNFUyBpcyByZXR1cm5lZC4NCj4gKw0KPiArICBPdGhlcndpc2UsIERldmljZVBhdGggaXMg YWxsb2NhdGVkIHdpdGggdGhlIGJvb3Qgc2VydmljZSBBbGxvY2F0ZVBvb2woKSwNCj4gKyAgdGhl IGNvbnRlbnRzIG9mIERldmljZVBhdGggYXJlIGluaXRpYWxpemVkIHRvIGRlc2NyaWJlIHRoZSBT RCBjYXJkIHNwZWNpZmllZA0KPiArICBieSBTbG90LCBhbmQgRUZJX1NVQ0NFU1MgaXMgcmV0dXJu ZWQuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgICAgVGhpcyAgICAgICAgICAgQSBwb2ludGVyIHRv IHRoZSBFRklfU0RfTU1NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gICAgIFNsb3QgICAgICAg ICAgIFNwZWNpZmllcyB0aGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgZm9yDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGEgZGV2aWNlIHBhdGggbm9kZSBpcyB0 byBiZSBhbGxvY2F0ZWQgYW5kDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1 aWx0Lg0KPiArICBAcGFyYW1baW4sb3V0XSBEZXZpY2VQYXRoICAgICBBIHBvaW50ZXIgdG8gYSBz aW5nbGUgZGV2aWNlIHBhdGggbm9kZSB0aGF0DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRlc2NyaWJlcyB0aGUgU0QgY2FyZCBzcGVjaWZpZWQgYnkgU2xvdC4gVGhpcw0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBm b3IgYWxsb2NhdGluZyB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVm ZmVyIERldmljZVBhdGggd2l0aCB0aGUgYm9vdCBzZXJ2aWNlDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEFsbG9jYXRlUG9vbCgpLiBJdCBpcyB0aGUgY2FsbGVyJ3MgcmVzcG9u c2ktDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbGl0eSB0byBmcmVlIERl dmljZVBhdGggd2hlbiB0aGUgY2FsbGVyIGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGZpbmlzaGVkIHdpdGggRGV2aWNlUGF0aC4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICBUaGUgZGV2aWNlIHBhdGggbm9kZSB0aGF0IGRlc2NyaWJlcyB0aGUg U0QgY2FyZA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQgYnkg U2xvdCB3YXMgYWxsb2NhdGVkIGFuZCByZXR1cm5lZCBpbg0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBEZXZpY2VQYXRoLg0KPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAg ICAgICBUaGUgU0QgY2FyZCBzcGVjaWZpZWQgYnkgU2xvdCBkb2VzIG5vdCBleGlzdCBvbg0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgU0QgY29udHJvbGxlci4NCj4gKyAg QHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgRGV2aWNlUGF0aCBpcyBOVUxMLg0KPiArICBA cmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBUaGVyZSBhcmUgbm90IGVub3VnaCByZXNvdXJj ZXMgdG8gYWxsb2NhdGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNl UGF0aC4NCj4gKw0KPiArKiovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0R3TW1jUGFz c1RocnVCdWlsZERldmljZVBhdGggKA0KPiArICBJTiAgICAgRUZJX1NEX01NQ19QQVNTX1RIUlVf UFJPVE9DT0wgICAgICAgKlRoaXMsDQo+ICsgIElOICAgICBVSU5UOCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTbG90LA0KPiArICBJTiBPVVQgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09M ICAgICAgICAgICAgKipEZXZpY2VQYXRoDQo+ICsgICkNCj4gK3sNCj4gKyAgRFdfTU1DX0hDX1BS SVZBVEVfREFUQSAgICAgICAgICAqUHJpdmF0ZTsNCj4gKyAgU0RfREVWSUNFX1BBVEggICAgICAg ICAgICAgICAgICAqU2ROb2RlOw0KPiArICBFTU1DX0RFVklDRV9QQVRIICAgICAgICAgICAgICAg ICpFbW1jTm9kZTsNCj4gKw0KPiArICBpZiAoKFRoaXMgPT0gTlVMTCkgfHwgKERldmljZVBhdGgg PT0gTlVMTCkgfHwgKFNsb3QgPj0gRFdfTU1DX0hDX01BWF9TTE9UKSkgew0KPiArICAgIHJldHVy biBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgIH0NCj4gKw0KPiArICBQcml2YXRlID0gRFdf TU1DX0hDX1BSSVZBVEVfRlJPTV9USElTIChUaGlzKTsNCj4gKw0KPiArICBpZiAoKCFQcml2YXRl LT5TbG90W1Nsb3RdLkVuYWJsZSkgfHwgKCFQcml2YXRlLT5TbG90W1Nsb3RdLk1lZGlhUHJlc2Vu dCkpIHsNCj4gKyAgICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4gKyAgfQ0KPiArDQo+ICsgIGlm IChQcml2YXRlLT5TbG90W1Nsb3RdLkNhcmRUeXBlID09IFNkQ2FyZFR5cGUpIHsNCj4gKyAgICBT ZE5vZGUgPSBBbGxvY2F0ZUNvcHlQb29sIChzaXplb2YgKFNEX0RFVklDRV9QQVRIKSwgJm1TZERw VGVtcGxhdGUpOw0KPiArICAgIGlmIChTZE5vZGUgPT0gTlVMTCkgew0KPiArICAgICAgcmV0dXJu IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiArICAgIH0NCj4gKyAgICBTZE5vZGUtPlNsb3ROdW1i ZXIgPSBTbG90Ow0KPiArDQo+ICsgICAgKkRldmljZVBhdGggPSAoRUZJX0RFVklDRV9QQVRIX1BS T1RPQ09MICopIFNkTm9kZTsNCj4gKyAgfSBlbHNlIGlmIChQcml2YXRlLT5TbG90W1Nsb3RdLkNh cmRUeXBlID09IEVtbWNDYXJkVHlwZSkgew0KPiArICAgIEVtbWNOb2RlID0gQWxsb2NhdGVDb3B5 UG9vbCAoc2l6ZW9mIChFTU1DX0RFVklDRV9QQVRIKSwgJm1FbW1jRHBUZW1wbGF0ZSk7DQo+ICsg ICAgaWYgKEVtbWNOb2RlID09IE5VTEwpIHsNCj4gKyAgICAgIHJldHVybiBFRklfT1VUX09GX1JF U09VUkNFUzsNCj4gKyAgICB9DQo+ICsgICAgRW1tY05vZGUtPlNsb3ROdW1iZXIgPSBTbG90Ow0K PiArDQo+ICsgICAgKkRldmljZVBhdGggPSAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICopIEVt bWNOb2RlOw0KPiArICB9IGVsc2Ugew0KPiArICAgIC8vDQo+ICsgICAgLy8gQ3VycmVudGx5IHdl IG9ubHkgc3VwcG9ydCBTRCBhbmQgRU1NQyB0d28gZGV2aWNlIG5vZGVzLg0KPiArICAgIC8vDQo+ ICsgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+ICsgIH0NCj4gKw0KPiArICByZXR1cm4gRUZJ X1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBUaGlzIGZ1bmN0aW9uIHJldHJpZXZl cyBhbiBTRCBjYXJkIHNsb3QgbnVtYmVyIGJhc2VkIG9uIHRoZSBpbnB1dCBkZXZpY2UgcGF0aC4N Cj4gKw0KPiArICBUaGUgR2V0U2xvdE51bWJlcigpIGZ1bmN0aW9uIHJldHJpZXZlcyBzbG90IG51 bWJlciBmb3IgdGhlIFNEIGNhcmQgc3BlY2lmaWVkDQo+ICsgIGJ5IHRoZSBEZXZpY2VQYXRoIG5v ZGUuIElmIERldmljZVBhdGggaXMgTlVMTCwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIGlzDQo+ICsg IHJldHVybmVkLg0KPiArDQo+ICsgIElmIERldmljZVBhdGggaXMgbm90IGEgZGV2aWNlIHBhdGgg bm9kZSB0eXBlIHRoYXQgdGhlIFNEIFBhc3MgVGhydSBkcml2ZXINCj4gKyAgc3VwcG9ydHMsIEVG SV9VTlNVUFBPUlRFRCBpcyByZXR1cm5lZC4NCj4gKw0KPiArICBAcGFyYW1baW5dICBUaGlzICAg ICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09M DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiArICBAcGFy YW1baW5dICBEZXZpY2VQYXRoICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIGRldmljZSBwYXRoIG5v ZGUgdGhhdCBkZXNjcmliZXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBT RCBjYXJkIG9uIHRoZSBTRCBjb250cm9sbGVyLg0KPiArICBAcGFyYW1bb3V0XSBTbG90ICAgICAg ICAgICAgICBPbiByZXR1cm4sIHBvaW50cyB0byB0aGUgc2xvdCBudW1iZXIgb2YgYW4gU0QNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZCBvbiB0aGUgU0QgY29udHJvbGxl ci4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBTRCBjYXJkIHNsb3Qg bnVtYmVyIGlzIHJldHVybmVkIGluIFNsb3QuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFS QU1FVEVSIFNsb3Qgb3IgRGV2aWNlUGF0aCBpcyBOVUxMLg0KPiArICBAcmV0dmFsIEVGSV9VTlNV UFBPUlRFRCAgICAgICBEZXZpY2VQYXRoIGlzIG5vdCBhIGRldmljZSBwYXRoIG5vZGUgdHlwZSB0 aGF0DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBTRCBQYXNzIFRocnUg ZHJpdmVyIHN1cHBvcnRzLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0K PiArRHdNbWNQYXNzVGhydUdldFNsb3ROdW1iZXIgKA0KPiArICBJTiAgRUZJX1NEX01NQ19QQVNT X1RIUlVfUFJPVE9DT0wgICAgICAgICAgKlRoaXMsDQo+ICsgIElOICBFRklfREVWSUNFX1BBVEhf UFJPVE9DT0wgICAgICAgICAgICAgICAqRGV2aWNlUGF0aCwNCj4gKyAgT1VUIFVJTlQ4ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpTbG90DQo+ICsgICkNCj4gK3sNCj4gKyAgRFdf TU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAqUHJpdmF0ZTsNCj4gKyAgU0RfREVWSUNFX1BB VEggICAgICAgICAgICAgICAgICAqU2ROb2RlOw0KPiArICBFTU1DX0RFVklDRV9QQVRIICAgICAg ICAgICAgICAgICpFbW1jTm9kZTsNCj4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAg ICBTbG90TnVtYmVyOw0KPiArDQo+ICsgIGlmICgoVGhpcyA9PSBOVUxMKSB8fCAoRGV2aWNlUGF0 aCA9PSBOVUxMKSB8fCAoU2xvdCA9PSBOVUxMKSkgew0KPiArICAgIHJldHVybiBFRklfSU5WQUxJ RF9QQVJBTUVURVI7DQo+ICsgIH0NCj4gKw0KPiArICBQcml2YXRlID0gRFdfTU1DX0hDX1BSSVZB VEVfRlJPTV9USElTIChUaGlzKTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBDaGVjayB3aGV0aGVy IHRoZSBEZXZpY2VQYXRoIGJlbG9uZ3MgdG8gU0RfREVWSUNFX1BBVEggb3IgRU1NQ19ERVZJQ0Vf UEFUSA0KPiArICAvLw0KPiArICBpZiAoKERldmljZVBhdGgtPlR5cGUgIT0gTUVTU0FHSU5HX0RF VklDRV9QQVRIKSB8fA0KPiArICAgICAgKChEZXZpY2VQYXRoLT5TdWJUeXBlICE9IE1TR19TRF9E UCkgJiYNCj4gKyAgICAgICAoRGV2aWNlUGF0aC0+U3ViVHlwZSAhPSBNU0dfRU1NQ19EUCkpIHx8 DQo+ICsgICAgICAoRGV2aWNlUGF0aE5vZGVMZW5ndGgoRGV2aWNlUGF0aCkgIT0gc2l6ZW9mKFNE X0RFVklDRV9QQVRIKSkgfHwNCj4gKyAgICAgIChEZXZpY2VQYXRoTm9kZUxlbmd0aChEZXZpY2VQ YXRoKSAhPSBzaXplb2YoRU1NQ19ERVZJQ0VfUEFUSCkpKSB7DQo+ICsgICAgcmV0dXJuIEVGSV9V TlNVUFBPUlRFRDsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmIChEZXZpY2VQYXRoLT5TdWJUeXBlID09 IE1TR19TRF9EUCkgew0KPiArICAgIFNkTm9kZSA9IChTRF9ERVZJQ0VfUEFUSCAqKSBEZXZpY2VQ YXRoOw0KPiArICAgIFNsb3ROdW1iZXIgPSBTZE5vZGUtPlNsb3ROdW1iZXI7DQo+ICsgIH0gZWxz ZSB7DQo+ICsgICAgRW1tY05vZGUgPSAoRU1NQ19ERVZJQ0VfUEFUSCAqKSBEZXZpY2VQYXRoOw0K PiArICAgIFNsb3ROdW1iZXIgPSBFbW1jTm9kZS0+U2xvdE51bWJlcjsNCj4gKyAgfQ0KPiArDQo+ ICsgIGlmIChTbG90TnVtYmVyID49IERXX01NQ19IQ19NQVhfU0xPVCkgew0KPiArICAgIHJldHVy biBFRklfTk9UX0ZPVU5EOw0KPiArICB9DQo+ICsNCj4gKyAgaWYgKFByaXZhdGUtPlNsb3RbU2xv dE51bWJlcl0uRW5hYmxlKSB7DQo+ICsgICAgKlNsb3QgPSBTbG90TnVtYmVyOw0KPiArICAgIHJl dHVybiBFRklfU1VDQ0VTUzsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICByZXR1cm4gRUZJX05PVF9G T1VORDsNCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgUmVzZXRzIGFuIFNEIGNhcmQg dGhhdCBpcyBjb25uZWN0ZWQgdG8gdGhlIFNEIGNvbnRyb2xsZXIuDQo+ICsNCj4gKyAgVGhlIFJl c2V0RGV2aWNlKCkgZnVuY3Rpb24gcmVzZXRzIHRoZSBTRCBjYXJkIHNwZWNpZmllZCBieSBTbG90 Lg0KPiArDQo+ICsgIElmIHRoaXMgU0QgY29udHJvbGxlciBkb2VzIG5vdCBzdXBwb3J0IGEgZGV2 aWNlIHJlc2V0IG9wZXJhdGlvbiwNCj4gKyAgRUZJX1VOU1VQUE9SVEVEIGlzIHJldHVybmVkLg0K PiArDQo+ICsgIElmIFNsb3QgaXMgbm90IGluIGEgdmFsaWQgc2xvdCBudW1iZXIgZm9yIHRoaXMg U0QgY29udHJvbGxlciwNCj4gKyAgRUZJX0lOVkFMSURfUEFSQU1FVEVSIGlzIHJldHVybmVkLg0K PiArDQo+ICsgIElmIHRoZSBkZXZpY2UgcmVzZXQgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCwgRUZJ X1NVQ0NFU1MgaXMgcmV0dXJuZWQuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgVGhpcyAgICAgICAg ICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtW2lu XSAgU2xvdCAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBzbG90IG51bWJlciBvZiB0aGUgU0Qg Y2FyZCB0byBiZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldC4NCj4g Kw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgU0QgY2FyZCBzcGVjaWZp ZWQgYnkgU2xvdCB3YXMgcmVzZXQuDQo+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAg IFRoZSBTRCBjb250cm9sbGVyIGRvZXMgbm90IHN1cHBvcnQgYSBkZXZpY2UNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXQgb3BlcmF0aW9uLg0KPiArICBAcmV0dmFsIEVG SV9JTlZBTElEX1BBUkFNRVRFUiBTbG90IG51bWJlciBpcyBpbnZhbGlkLg0KPiArICBAcmV0dmFs IEVGSV9OT19NRURJQSAgICAgICAgICBTRCBEZXZpY2Ugbm90IHByZXNlbnQgaW4gdGhlIFNsb3Qu DQo+ICsgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgIFRoZSByZXNldCBjb21tYW5kIGZh aWxlZCBkdWUgdG8gYSBkZXZpY2UgZXJyb3INCj4gKw0KPiArKiovDQo+ICtFRklfU1RBVFVTDQo+ ICtFRklBUEkNCj4gK0R3TW1jUGFzc1RocnVSZXNldERldmljZSAoDQo+ICsgIElOIEVGSV9TRF9N TUNfUEFTU19USFJVX1BST1RPQ09MICAgICAgICAgICAqVGhpcywNCj4gKyAgSU4gVUlOVDggICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3QNCj4gKyAgKQ0KPiArew0KPiArICBE V19NTUNfSENfUFJJVkFURV9EQVRBICAgICAgICAgICpQcml2YXRlOw0KPiArICBMSVNUX0VOVFJZ ICAgICAgICAgICAgICAgICAgICAgICpMaW5rOw0KPiArICBMSVNUX0VOVFJZICAgICAgICAgICAg ICAgICAgICAgICpOZXh0TGluazsNCj4gKyAgRFdfTU1DX0hDX1RSQiAgICAgICAgICAgICAgICAg ICAqVHJiOw0KPiArICBFRklfVFBMICAgICAgICAgICAgICAgICAgICAgICAgIE9sZFRwbDsNCj4g Kw0KPiArICBpZiAoVGhpcyA9PSBOVUxMKSB7DQo+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BB UkFNRVRFUjsNCj4gKyAgfQ0KPiArDQo+ICsgIFByaXZhdGUgPSBEV19NTUNfSENfUFJJVkFURV9G Uk9NX1RISVMgKFRoaXMpOw0KPiArDQo+ICsgIGlmICghUHJpdmF0ZS0+U2xvdFtTbG90XS5FbmFi bGUpIHsNCj4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICB9DQo+ICsN Cj4gKyAgaWYgKCFQcml2YXRlLT5TbG90W1Nsb3RdLk1lZGlhUHJlc2VudCkgew0KPiArICAgIHJl dHVybiBFRklfTk9fTUVESUE7DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvLyBGcmVlIGFs bCBhc3luYyBJL08gcmVxdWVzdHMgaW4gdGhlIHF1ZXVlDQo+ICsgIC8vDQo+ICsgIE9sZFRwbCA9 IGdCUy0+UmFpc2VUUEwgKFRQTF9OT1RJRlkpOw0KPiArDQo+ICsgIGZvciAoTGluayA9IEdldEZp cnN0Tm9kZSAoJlByaXZhdGUtPlF1ZXVlKTsNCj4gKyAgICAgICAhSXNOdWxsICgmUHJpdmF0ZS0+ UXVldWUsIExpbmspOw0KPiArICAgICAgIExpbmsgPSBOZXh0TGluaykgew0KPiArICAgIE5leHRM aW5rID0gR2V0TmV4dE5vZGUgKCZQcml2YXRlLT5RdWV1ZSwgTGluayk7DQo+ICsgICAgUmVtb3Zl RW50cnlMaXN0IChMaW5rKTsNCj4gKyAgICBUcmIgPSBEV19NTUNfSENfVFJCX0ZST01fVEhJUyAo TGluayk7DQo+ICsgICAgVHJiLT5QYWNrZXQtPlRyYW5zYWN0aW9uU3RhdHVzID0gRUZJX0FCT1JU RUQ7DQo+ICsgICAgZ0JTLT5TaWduYWxFdmVudCAoVHJiLT5FdmVudCk7DQo+ICsgICAgRHdNbWNG cmVlVHJiIChUcmIpOw0KPiArICB9DQo+ICsNCj4gKyAgZ0JTLT5SZXN0b3JlVFBMIChPbGRUcGwp Ow0KPiArDQo+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL0Vt YmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01tY0hjaS5jIGIvRW1iZWRkZWRQa2cvRHJp dmVycy9Ed01tY0hjRHhlL0R3TW1jSGNpLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5k ZXggMDAwMDAwMDAwMDAwLi5iMDkxZjk4MDNiMmUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9F bWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRHdNbWNIY2kuYw0KPiBAQCAtMCwwICsxLDE2 MDIgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBUaGlzIGRyaXZlciBpcyB1c2VkIHRvIG1hbmFnZSBE ZXNpZ253YXJlIFNEL01NQyBQQ0kgaG9zdCBjb250cm9sbGVycy4NCj4gKw0KPiArICBJdCB3b3Vs ZCBleHBvc2UgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgZm9yIHVwcGVyIGxheWVyIHVz ZS4NCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTUgLSAyMDIwLCBJbnRlbCBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsgIENvcHlyaWdodCAoYykgMjAxOCwgTGlu YXJvIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsNCj4gKyAgVGhpcyBwcm9ncmFt IGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZh aWxhYmxlDQo+ICsgIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExp Y2Vuc2Ugd2hpY2ggYWNjb21wYW5pZXMgdGhpcw0KPiArICBkaXN0cmlidXRpb24uICBUaGUgZnVs bCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNv dXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0g SVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMs DQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQs IEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVk ZSA8SW5kdXN0cnlTdGFuZGFyZC9FbW1jLmg+DQo+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFy ZC9TZC5oPg0KPiArDQo+ICsjaW5jbHVkZSA8TGlicmFyeS9Bcm1MaWIuaD4NCj4gKyNpbmNsdWRl IDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RtYUxpYi5o Pg0KPiArI2luY2x1ZGUgPExpYnJhcnkvSW9MaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Rl YnVnTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9NZW1vcnlBbGxvY2F0aW9uTGliLmg+DQo+ ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCj4gKw0KPiAr I2luY2x1ZGUgIkR3TW1jSGNEeGUuaCINCj4gKw0KPiArLyoqDQo+ICsgIER1bXAgdGhlIGNvbnRl bnQgb2YgU0QvTU1DIGhvc3QgY29udHJvbGxlcidzIENhcGFiaWxpdHkgUmVnaXN0ZXIuDQo+ICsN Cj4gKyAgQHBhcmFtW2luXSAgU2xvdCAgICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUg U0QgY2FyZCB0byBzZW5kIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29t bWFuZCB0by4NCj4gKyAgQHBhcmFtW2luXSAgQ2FwYWJpbGl0eSAgICAgIFRoZSBidWZmZXIgdG8g c3RvcmUgdGhlIGNhcGFiaWxpdHkgZGF0YS4NCj4gKw0KPiArKiovDQo+ICtWT0lEDQo+ICtEdW1w Q2FwYWJpbGl0eVJlZyAoDQo+ICsgIElOIFVJTlQ4ICAgICAgICAgICAgICAgIFNsb3QsDQo+ICsg IElOIERXX01NQ19IQ19TTE9UX0NBUCAgICpDYXBhYmlsaXR5DQo+ICsgICkNCj4gK3sNCj4gKyAg Ly8NCj4gKyAgLy8gRHVtcCBDYXBhYmlsaXR5IERhdGENCj4gKyAgLy8NCj4gKyAgREVCVUcgKCgN Cj4gKyAgICBERUJVR19JTkZPLA0KPiArICAgICIgPT0gU2xvdCBbJWRdIENhcGFiaWxpdHkgaXMg MHgleCA9PVxuIiwNCj4gKyAgICBTbG90LA0KPiArICAgIENhcGFiaWxpdHkNCj4gKyAgICApKTsN Cj4gKyAgREVCVUcgKCgNCj4gKyAgICBERUJVR19JTkZPLA0KPiArICAgICIgICBCYXNlIENsayBG cmVxICAgICAlZEtIelxuIiwNCj4gKyAgICBDYXBhYmlsaXR5LT5CYXNlQ2xrRnJlcQ0KPiArICAg ICkpOw0KPiArICBERUJVRyAoKA0KPiArICAgIERFQlVHX0lORk8sDQo+ICsgICAgIiAgIEJ1c1dp ZHRoICAgICAgICAgICVkXG4iLA0KPiArICAgIENhcGFiaWxpdHktPkJ1c1dpZHRoDQo+ICsgICAg KSk7DQo+ICsgIERFQlVHICgoDQo+ICsgICAgREVCVUdfSU5GTywNCj4gKyAgICAiICAgSGlnaFNw ZWVkIFN1cHBvcnQgJWFcbiIsDQo+ICsgICAgQ2FwYWJpbGl0eS0+SGlnaFNwZWVkID8gIlRSVUUi IDogIkZBTFNFIg0KPiArICAgICkpOw0KPiArICBERUJVRyAoKA0KPiArICAgIERFQlVHX0lORk8s DQo+ICsgICAgIiAgIFZvbHRhZ2UgMS44ICAgICAgICVhXG4iLA0KPiArICAgIENhcGFiaWxpdHkt PlZvbHRhZ2UxOCA/ICJUUlVFIiA6ICJGQUxTRSINCj4gKyAgICApKTsNCj4gKyAgREVCVUcgKCgN Cj4gKyAgICBERUJVR19JTkZPLA0KPiArICAgICIgICA2NC1iaXQgU3lzIEJ1cyAgICAlYVxuIiwN Cj4gKyAgICBDYXBhYmlsaXR5LT5TeXNCdXM2NCA/ICJUUlVFIiA6ICJGQUxTRSINCj4gKyAgICAp KTsNCj4gKyAgREVCVUcgKChERUJVR19JTkZPLCAiICAgU2xvdFR5cGUgICAgICAgICAgIikpOw0K PiArICBpZiAoQ2FwYWJpbGl0eS0+U2xvdFR5cGUgPT0gMHgwMCkgew0KPiArICAgIERFQlVHICgo REVCVUdfSU5GTywgIiVhXG4iLCAiUmVtb3ZhYmxlIFNsb3QiKSk7DQo+ICsgIH0gZWxzZSBpZiAo Q2FwYWJpbGl0eS0+U2xvdFR5cGUgPT0gMHgwMSkgew0KPiArICAgIERFQlVHICgoREVCVUdfSU5G TywgIiVhXG4iLCAiRW1iZWRkZWQgU2xvdCIpKTsNCj4gKyAgfSBlbHNlIGlmIChDYXBhYmlsaXR5 LT5TbG90VHlwZSA9PSAweDAyKSB7DQo+ICsgICAgREVCVUcgKChERUJVR19JTkZPLCAiJWFcbiIs ICJTaGFyZWQgQnVzIFNsb3QiKSk7DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAgREVCVUcgKChERUJV R19JTkZPLCAiJWFcbiIsICJSZXNlcnZlZCIpKTsNCj4gKyAgfQ0KPiArICBERUJVRyAoKA0KPiAr ICAgIERFQlVHX0lORk8sDQo+ICsgICAgIiAgIFNEUjUwICBTdXBwb3J0ICAgICVhXG4iLA0KPiAr ICAgIENhcGFiaWxpdHktPlNkcjUwID8gIlRSVUUiIDogIkZBTFNFIg0KPiArICAgICkpOw0KPiAr ICBERUJVRyAoKA0KPiArICAgIERFQlVHX0lORk8sDQo+ICsgICAgIiAgIFNEUjEwNCBTdXBwb3J0 ICAgICVhXG4iLA0KPiArICAgIENhcGFiaWxpdHktPlNkcjEwNCA/ICJUUlVFIiA6ICJGQUxTRSIN Cj4gKyAgICApKTsNCj4gKyAgREVCVUcgKCgNCj4gKyAgICBERUJVR19JTkZPLA0KPiArICAgICIg ICBERFI1MCAgU3VwcG9ydCAgICAlYVxuIiwNCj4gKyAgICBDYXBhYmlsaXR5LT5EZHI1MCA/ICJU UlVFIiA6ICJGQUxTRSINCj4gKyAgICApKTsNCj4gKyAgcmV0dXJuOw0KPiArfQ0KPiArDQo+ICsv KioNCj4gKyAgU2V0IGFsbCBpbnRlcnJ1cHQgc3RhdHVzIGJpdHMgaW4gTm9ybWFsIGFuZCBFcnJv ciBJbnRlcnJ1cHQgU3RhdHVzIEVuYWJsZQ0KPiArICByZWdpc3Rlci4NCj4gKw0KPiArICBAcGFy YW1baW5dIERldklvICAgICAgICAgIFRoZSBERVZJQ0UgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgb3BlcmF0aW9uIGV4ZWN1dGVz IHN1Y2Nlc3NmdWxseS4NCj4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgb3BlcmF0 aW9uIGZhaWxzLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0R3TW1jSGNFbmFibGVJ bnRlcnJ1cHQgKA0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2QmFzZQ0K PiArICApDQo+ICt7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgSW50U3RhdHVzOw0K PiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIElkSW50RW47DQo+ICsgIFVJTlQzMiAgICAg ICAgICAgICAgICAgICAgSWRTdHM7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gRW5hYmxlIGFsbCBi aXRzIGluIEludGVycnVwdCBNYXNrIFJlZ2lzdGVyDQo+ICsgIC8vDQo+ICsgIEludFN0YXR1cyA9 IDA7DQo+ICsgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX0lOVE1BU0ssIEludFN0YXR1 cyk7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQ2xlYXIgc3RhdHVzIGluIEludGVycnVwdCBTdGF0 dXMgUmVnaXN0ZXINCj4gKyAgLy8NCj4gKyAgSW50U3RhdHVzID0gfjA7DQo+ICsgIE1taW9Xcml0 ZTMyIChEZXZCYXNlICsgRFdfTU1DX1JJTlRTVFMsIEludFN0YXR1cyk7DQo+ICsNCj4gKyAgSWRJ bnRFbiA9IH4wOw0KPiArICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19JRElOVEVOLCBJ ZEludEVuKTsNCj4gKw0KPiArICBJZFN0cyA9IH4wOw0KPiArICBNbWlvV3JpdGUzMiAoRGV2QmFz ZSArIERXX01NQ19JRFNUUywgSWRTdHMpOw0KPiArDQo+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsN Cj4gK30NCj4gKw0KPiArRUZJX1NUQVRVUw0KPiArRHdNbWNIY0dldENhcGFiaWxpdHkgKA0KPiAr ICBJTiAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgRGV2QmFzZSwNCj4gKyAgSU4gICAgIEVG SV9IQU5ETEUgICAgICAgICAgICAgIENvbnRyb2xsZXIsDQo+ICsgIElOICAgICBVSU5UOCAgICAg ICAgICAgICAgICAgICBTbG90LA0KPiArICAgICBPVVQgRFdfTU1DX0hDX1NMT1RfQ0FQICAgICAg KkNhcGFjaXR5DQo+ICsgICkNCj4gK3sNCj4gKyAgUExBVEZPUk1fRFdfTU1DX1BST1RPQ09MICAg ICAgICpQbGF0Zm9ybUR3TW1jOw0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAg U3RhdHVzOw0KPiArDQo+ICsgIGlmIChDYXBhY2l0eSA9PSBOVUxMKSB7DQo+ICsgICAgcmV0dXJu IEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAgfQ0KPiArICBTdGF0dXMgPSBnQlMtPkxvY2F0 ZVByb3RvY29sICgNCj4gKyAgICAgICAgICAgICAgICAgICZnUGxhdGZvcm1Ed01tY1Byb3RvY29s R3VpZCwNCj4gKyAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ICsgICAgICAgICAgICAgICAgICAo Vk9JRCAqKikgJlBsYXRmb3JtRHdNbWMNCj4gKyAgICAgICAgICAgICAgICAgICk7DQo+ICsgIGlm IChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ ICsgIFN0YXR1cyA9IFBsYXRmb3JtRHdNbWMtPkdldENhcGFiaWxpdHkgKENvbnRyb2xsZXIsIFNs b3QsIENhcGFjaXR5KTsNCj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gK30NCj4gKw0KPiArLyoqDQo+ ICsgIERldGVjdCB3aGV0aGVyIHRoZXJlIGlzIGEgU0QvTU1DIGNhcmQgYXR0YWNoZWQgYXQgdGhl IHNwZWNpZmllZCBTRC9NTUMgaG9zdA0KPiArICBjb250cm9sbGVyIHNsb3QuDQo+ICsNCj4gKyAg UmVmZXIgdG8gU0QgSG9zdCBDb250cm9sbGVyIFNpbXBsaWZpZWQgc3BlYyAzLjAgU2VjdGlvbiAz LjEgZm9yIGRldGFpbHMuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgRGV2SW8gICAgICAgICBUaGUg REVWSUNFIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiArICBAcGFyYW1baW5dICBTbG90ICAgICAg ICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5kIHRoZSBjb21tYW5kDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8uDQo+ICsgIEBwYXJhbVtvdXRdIE1lZGlh UHJlc2VudCAgVGhlIHBvaW50ZXIgdG8gdGhlIG1lZGlhIHByZXNlbnQgYm9vbGVhbiB2YWx1ZS4N Cj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZXJlIGlzIG5vIG1lZGlhIGNo YW5nZSBoYXBwZW5lZC4NCj4gKyAgQHJldHZhbCBFRklfTUVESUFfQ0hBTkdFRCBUaGVyZSBpcyBt ZWRpYSBjaGFuZ2UgaGFwcGVuZWQuDQo+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhl IGRldGVjdGlvbiBmYWlscy4NCj4gKw0KPiArKiovDQo+ICtFRklfU1RBVFVTDQo+ICtEd01tY0hj Q2FyZERldGVjdCAoDQo+ICsgIElOICAgICBVSU5UTiAgICAgICAgICAgICAgICAgIERldkJhc2Us DQo+ICsgIElOICAgICBFRklfSEFORExFICAgICAgICAgICAgIENvbnRyb2xsZXIsDQo+ICsgIElO ICAgICBVSU5UOCAgICAgICAgICAgICAgICAgIFNsb3QsDQo+ICsgICAgIE9VVCBCT09MRUFOICAg ICAgICAgICAgICAgICpNZWRpYVByZXNlbnQNCj4gKyAgKQ0KPiArew0KPiArICBQTEFURk9STV9E V19NTUNfUFJPVE9DT0wgICpQbGF0Zm9ybUR3TW1jOw0KPiArICBFRklfU1RBVFVTICAgICAgICAg ICAgICAgIFN0YXR1czsNCj4gKw0KPiArICBpZiAoTWVkaWFQcmVzZW50ID09IE5VTEwpIHsNCj4g KyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICB9DQo+ICsgIFN0YXR1cyA9 IGdCUy0+TG9jYXRlUHJvdG9jb2wgKA0KPiArICAgICAgICAgICAgICAgICAgJmdQbGF0Zm9ybUR3 TW1jUHJvdG9jb2xHdWlkLA0KPiArICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAg ICAgICAgICAgIChWT0lEICoqKSAmUGxhdGZvcm1Ed01tYw0KPiArICAgICAgICAgICAgICAgICAg KTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIHJldHVybiBTdGF0dXM7 DQo+ICsgIH0NCj4gKyAgKk1lZGlhUHJlc2VudCA9IFBsYXRmb3JtRHdNbWMtPkNhcmREZXRlY3Qg KENvbnRyb2xsZXIsIFNsb3QpOw0KPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICt9DQo+ICsN Cj4gK1NUQVRJQw0KPiArRUZJX1NUQVRVUw0KPiArRHdNbWNIY1VwZGF0ZUNsb2NrICgNCj4gKyAg SU4gVUlOVE4gICAgICAgICAgICAgICAgICBEZXZCYXNlDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlO VDMyICAgICAgICAgICAgICAgICAgICBDbWQ7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAg ICAgSW50U3RhdHVzOw0KPiArDQo+ICsgIENtZCA9IEJJVF9DTURfV0FJVF9QUlZEQVRBX0NPTVBM RVRFIHwgQklUX0NNRF9VUERBVEVfQ0xPQ0tfT05MWSB8DQo+ICsgICAgICAgIEJJVF9DTURfU1RB UlQ7DQo+ICsgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX0NNRCwgQ21kKTsNCj4gKw0K PiArICB3aGlsZSAoMSkgew0KPiArICAgIENtZCA9IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19N TUNfQ01EKTsNCj4gKw0KPiArICAgIGlmICghKENtZCAmIENNRF9TVEFSVF9CSVQpKSB7DQo+ICsg ICAgICBicmVhazsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBJbnRTdGF0dXMgPSBNbWlvUmVhZDMy IChEZXZCYXNlICsgRFdfTU1DX1JJTlRTVFMpOw0KPiArDQo+ICsgICAgaWYgKEludFN0YXR1cyAm IERXX01NQ19JTlRfSExFKSB7DQo+ICsgICAgICBERUJVRyAoKA0KPiArICAgICAgICBERUJVR19F UlJPUiwNCj4gKyAgICAgICAgIkR3TW1jSGNVcGRhdGVDbG9jazogZmFpbGVkIHRvIHVwZGF0ZSBt bWMgY2xvY2sgZnJlcXVlbmN5XG4iDQo+ICsgICAgICAgICkpOw0KPiArICAgICAgcmV0dXJuIEVG SV9ERVZJQ0VfRVJST1I7DQo+ICsgICAgfQ0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIEVGSV9T VUNDRVNTOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgU3RvcCBTRC9NTUMgY2FyZCBjbG9jay4N Cj4gKw0KPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAgIFRoZSBERVZJQ0UgSU8gcHJvdG9j b2wgaW5zdGFuY2UuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBTdWNjZWVk IHRvIHN0b3AgU0QvTU1DIGNsb2NrLg0KPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIEZh aWwgdG8gc3RvcCBTRC9NTUMgY2xvY2suDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiAr RHdNbWNIY1N0b3BDbG9jayAoDQo+ICsgIElOIFVJTlROICAgICAgICAgICAgICAgICAgRGV2QmFz ZQ0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgU3RhdHVzOw0K PiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIENsa0VuYTsNCj4gKw0KPiArICAvLw0KPiAr ICAvLyBEaXNhYmxlIE1NQyBjbG9jayBmaXJzdA0KPiArICAvLw0KPiArICBDbGtFbmEgPSAwOw0K PiArICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19DTEtFTkEsIENsa0VuYSk7DQo+ICsN Cj4gKyAgU3RhdHVzID0gRHdNbWNIY1VwZGF0ZUNsb2NrIChEZXZCYXNlKTsNCj4gKyAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKyAg cmV0dXJuIFN0YXR1czsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIFNEL01NQyBjYXJkIGNsb2Nr IHN1cHBseS4NCj4gKw0KPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAgIFRoZSBERVZJQ0Ug SU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gQ2xvY2tGcmVxICAgICAgVGhl IG1heCBjbG9jayBmcmVxdWVuY3kgdG8gYmUgc2V0LiBUaGUgdW5pdCBpcyBLSHouDQo+ICsgIEBw YXJhbVtpbl0gQ2FwYWJpbGl0eSAgICAgVGhlIGNhcGFiaWxpdHkgb2YgdGhlIHNsb3QuDQo+ICsN Cj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgY2xvY2sgaXMgc3VwcGxpZWQgc3Vj Y2Vzc2Z1bGx5Lg0KPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBjbG9jayBpc24n dCBzdXBwbGllZCBzdWNjZXNzZnVsbHkuDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiAr RHdNbWNIY0Nsb2NrU3VwcGx5ICgNCj4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICBEZXZC YXNlLA0KPiArICBJTiBVSU5UNjQgICAgICAgICAgICAgICAgIENsb2NrRnJlcSwNCj4gKyAgSU4g RFdfTU1DX0hDX1NMT1RfQ0FQICAgICBDYXBhYmlsaXR5DQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJ X1NUQVRVUyAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAg ICAgICAgQmFzZUNsa0ZyZXE7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgU2V0dGlu Z0ZyZXE7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgRGl2aXNvcjsNCj4gKyAgVUlO VDMyICAgICAgICAgICAgICAgICAgICBSZW1haW5kZXI7DQo+ICsgIFVJTlQzMiAgICAgICAgICAg ICAgICAgICAgTW1jU3RhdHVzOw0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIENsa0Vu YTsNCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBDbGtTcmM7DQo+ICsNCj4gKyAgLy8N Cj4gKyAgLy8gQ2FsY3VsYXRlIGEgZGl2aXNvciBmb3IgU0QgY2xvY2sgZnJlcXVlbmN5DQo+ICsg IC8vDQo+ICsgIEFTU0VSVCAoQ2FwYWJpbGl0eS5CYXNlQ2xrRnJlcSAhPSAwKTsNCj4gKw0KPiAr ICBCYXNlQ2xrRnJlcSA9IENhcGFiaWxpdHkuQmFzZUNsa0ZyZXE7DQo+ICsgIGlmIChDbG9ja0Zy ZXEgPT0gMCkgew0KPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgIH0N Cj4gKw0KPiArICBpZiAoQ2xvY2tGcmVxID4gQmFzZUNsa0ZyZXEpIHsNCj4gKyAgICBDbG9ja0Zy ZXEgPSBCYXNlQ2xrRnJlcTsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIENhbGN1bGF0 ZSB0aGUgZGl2aXNvciBvZiBiYXNlIGZyZXF1ZW5jeS4NCj4gKyAgLy8NCj4gKyAgRGl2aXNvciAg ICAgPSAwOw0KPiArICBTZXR0aW5nRnJlcSA9IEJhc2VDbGtGcmVxOw0KPiArICB3aGlsZSAoQ2xv Y2tGcmVxIDwgU2V0dGluZ0ZyZXEpIHsNCj4gKyAgICBEaXZpc29yKys7DQo+ICsNCj4gKyAgICBT ZXR0aW5nRnJlcSA9IEJhc2VDbGtGcmVxIC8gKDIgKiBEaXZpc29yKTsNCj4gKyAgICBSZW1haW5k ZXIgICA9IEJhc2VDbGtGcmVxICUgKDIgKiBEaXZpc29yKTsNCj4gKyAgICBpZiAoKENsb2NrRnJl cSA9PSBTZXR0aW5nRnJlcSkgJiYgKFJlbWFpbmRlciA9PSAwKSkgew0KPiArICAgICAgYnJlYWs7 DQo+ICsgICAgfQ0KPiArICAgIGlmICgoQ2xvY2tGcmVxID09IFNldHRpbmdGcmVxKSAmJiAoUmVt YWluZGVyICE9IDApKSB7DQo+ICsgICAgICBTZXR0aW5nRnJlcSArKzsNCj4gKyAgICB9DQo+ICsg IH0NCj4gKw0KPiArICBERUJVRyAoKA0KPiArICAgIERFQlVHX0lORk8sDQo+ICsgICAgIkJhc2VD bGtGcmVxICVkS0h6IERpdmlzb3IgJWQgQ2xvY2tGcmVxICVkS2h6XG4iLA0KPiArICAgIEJhc2VD bGtGcmVxLA0KPiArICAgIERpdmlzb3IsDQo+ICsgICAgQ2xvY2tGcmVxDQo+ICsgICAgKSk7DQo+ ICsNCj4gKyAgLy8NCj4gKyAgLy8gV2FpdCB1bnRpbCBNTUMgaXMgaWRsZQ0KPiArICAvLw0KPiAr ICBkbyB7DQo+ICsgICAgTW1jU3RhdHVzID0gTW1pb1JlYWQzMiAoRGV2QmFzZSArIERXX01NQ19T VEFUVVMpOw0KPiArICB9IHdoaWxlIChNbWNTdGF0dXMgJiBEV19NTUNfU1RTX0RBVEFfQlVTWSk7 DQo+ICsNCj4gKyAgZG8gew0KPiArICAgIFN0YXR1cyA9IER3TW1jSGNTdG9wQ2xvY2sgKERldkJh c2UpOw0KPiArICB9IHdoaWxlIChFRklfRVJST1IgKFN0YXR1cykpOw0KPiArDQo+ICsgIGRvIHsN Cj4gKyAgICBDbGtTcmMgPSAwOw0KPiArICAgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1D X0NMS1NSQywgQ2xrU3JjKTsNCj4gKyAgICAvLw0KPiArICAgIC8vIFNldCBjbG9jayBkaXZpc29y DQo+ICsgICAgLy8NCj4gKyAgICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19DTEtESVYs IERpdmlzb3IpOw0KPiArICAgIC8vDQo+ICsgICAgLy8gRW5hYmxlIE1NQyBjbG9jaw0KPiArICAg IC8vDQo+ICsgICAgQ2xrRW5hID0gMTsNCj4gKyAgICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERX X01NQ19DTEtFTkEsIENsa0VuYSk7DQo+ICsNCj4gKyAgICBTdGF0dXMgPSBEd01tY0hjVXBkYXRl Q2xvY2sgKERldkJhc2UpOw0KPiArICB9IHdoaWxlIChFRklfRVJST1IgKFN0YXR1cykpOw0KPiAr DQo+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIFNldCB0 aGUgU0QvTU1DIGJ1cyB3aWR0aC4NCj4gKw0KPiArICBSZWZlciB0byBTRCBIb3N0IENvbnRyb2xs ZXIgU2ltcGxpZmllZCBzcGVjIDMuMCBTZWN0aW9uIDMuNCBmb3IgZGV0YWlscy4NCj4gKw0KPiAr ICBAcGFyYW1baW5dIERldklvICAgICAgICAgIFRoZSBERVZJQ0UgSU8gcHJvdG9jb2wgaW5zdGFu Y2UuDQo+ICsgIEBwYXJhbVtpbl0gSXNEZHIgICAgICAgICAgQSBib29sZWFuIHRvIGluZGljYXRl IGl0J3MgZHVhbCBkYXRhIHJhdGUgb3Igbm90Lg0KPiArICBAcGFyYW1baW5dIEJ1c1dpZHRoICAg ICAgIFRoZSBidXMgd2lkdGggdXNlZCBieSB0aGUgU0QvTU1DIGRldmljZSwgaXQgbXVzdCBiZQ0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDQgb3IgOC4NCj4gKw0KPiArICBAcmV0 dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBidXMgd2lkdGggaXMgc2V0IHN1Y2Nlc3NmdWxseS4N Cj4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgYnVzIHdpZHRoIGlzbid0IHNldCBz dWNjZXNzZnVsbHkuDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRHdNbWNIY1NldEJ1 c1dpZHRoICgNCj4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICBEZXZCYXNlLA0KPiArICBJ TiBCT09MRUFOICAgICAgICAgICAgICAgIElzRGRyLA0KPiArICBJTiBVSU5UMTYgICAgICAgICAg ICAgICAgIEJ1c1dpZHRoDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAg ICAgICBDdHlwZTsNCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBVaHM7DQo+ICsNCj4g KyAgc3dpdGNoIChCdXNXaWR0aCkgew0KPiArICBjYXNlIDE6DQo+ICsgICAgQ3R5cGUgPSBNTUNf MUJJVF9NT0RFOw0KPiArICAgIGJyZWFrOw0KPiArICBjYXNlIDQ6DQo+ICsgICAgQ3R5cGUgPSBN TUNfNEJJVF9NT0RFOw0KPiArICAgIGJyZWFrOw0KPiArICBjYXNlIDg6DQo+ICsgICAgQ3R5cGUg PSBNTUNfOEJJVF9NT0RFOw0KPiArICAgIGJyZWFrOw0KPiArICBkZWZhdWx0Og0KPiArICAgIHJl dHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgIH0NCj4gKyAgTW1pb1dyaXRlMzIgKERl dkJhc2UgKyBEV19NTUNfQ1RZUEUsIEN0eXBlKTsNCj4gKw0KPiArICBVaHMgPSBNbWlvUmVhZDMy IChEZXZCYXNlICsgRFdfTU1DX1VIU1JFRyk7DQo+ICsNCj4gKyAgaWYgKElzRGRyKSB7DQo+ICsg ICAgVWhzIHw9IFVIU19ERFJfTU9ERTsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICBVaHMgJj0gfihV SFNfRERSX01PREUpOw0KPiArICB9DQo+ICsNCj4gKyAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBE V19NTUNfVUhTUkVHLCBVaHMpOw0KPiArDQo+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gK30N Cj4gKw0KPiArLyoqDQo+ICsgIFN1cHBseSBTRC9NTUMgY2FyZCB3aXRoIGxvd2VzdCBjbG9jayBm cmVxdWVuY3kgYXQgaW5pdGlhbGl6YXRpb24uDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBEZXZJbyAg ICAgICAgICBUaGUgREVWSUNFIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiArICBAcGFyYW1baW5d IENhcGFiaWxpdHkgICAgIFRoZSBjYXBhYmlsaXR5IG9mIHRoZSBzbG90Lg0KPiArDQo+ICsgIEBy ZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIGNsb2NrIGlzIHN1cHBsaWVkIHN1Y2Nlc3NmdWxs eS4NCj4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgY2xvY2sgaXNuJ3Qgc3VwcGxp ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0R3TW1jSGNJ bml0Q2xvY2tGcmVxICgNCj4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICAgICBEZXZCYXNl LA0KPiArICBJTiBEV19NTUNfSENfU0xPVF9DQVAgICAgICAgIENhcGFiaWxpdHkNCj4gKyAgKQ0K PiArew0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gKyAgVUlOVDMy ICAgICAgICAgICAgICAgICAgICBJbml0RnJlcTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBDYWxj dWxhdGUgYSBkaXZpc29yIGZvciBTRCBjbG9jayBmcmVxdWVuY3kNCj4gKyAgLy8NCj4gKyAgaWYg KENhcGFiaWxpdHkuQmFzZUNsa0ZyZXEgPT0gMCkgew0KPiArICAgIC8vDQo+ICsgICAgLy8gRG9u J3Qgc3VwcG9ydCBnZXQgQmFzZSBDbG9jayBGcmVxdWVuY3kgaW5mb3JtYXRpb24gdmlhIGFub3Ro ZXIgbWV0aG9kDQo+ICsgICAgLy8NCj4gKyAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiAr ICB9DQo+ICsgIC8vDQo+ICsgIC8vIFN1cHBseSA0MDBLSHogY2xvY2sgZnJlcXVlbmN5IGF0IGlu aXRpYWxpemF0aW9uIHBoYXNlLg0KPiArICAvLw0KPiArICBJbml0RnJlcSA9IERXTU1DX0lOSVRf Q0xPQ0tfRlJFUTsNCj4gKyAgU3RhdHVzID0gRHdNbWNIY0Nsb2NrU3VwcGx5IChEZXZCYXNlLCBJ bml0RnJlcSwgQ2FwYWJpbGl0eSk7DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4g KyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsgIE1pY3JvU2Vjb25kRGVsYXkgKDEwMCk7 DQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBTdXBwbHkgU0Qv TU1DIGNhcmQgd2l0aCBtYXhpbXVtIHZvbHRhZ2UgYXQgaW5pdGlhbGl6YXRpb24uDQo+ICsNCj4g KyAgQHBhcmFtW2luXSBEZXZJbyAgICAgICAgICBUaGUgREVWSUNFIElPIHByb3RvY29sIGluc3Rh bmNlLg0KPiArICBAcGFyYW1baW5dIENhcGFiaWxpdHkgICAgIFRoZSBjYXBhYmlsaXR5IG9mIHRo ZSBzbG90Lg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIHZvbHRhZ2Ug aXMgc3VwcGxpZWQgc3VjY2Vzc2Z1bGx5Lg0KPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAg IFRoZSB2b2x0YWdlIGlzbid0IHN1cHBsaWVkIHN1Y2Nlc3NmdWxseS4NCj4gKw0KPiArKiovDQo+ ICtFRklfU1RBVFVTDQo+ICtEd01tY0hjSW5pdFBvd2VyVm9sdGFnZSAoDQo+ICsgIElOIFVJTlRO IERldkJhc2UsDQo+ICsgIElOIERXX01NQ19IQ19TTE9UX0NBUCAgICAgQ2FwYWJpbGl0eQ0KPiAr ICApDQo+ICt7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgRGF0YTsNCj4gKyAgVUlO VDMyICAgICAgICAgICAgICAgICAgICBUaW1lb3V0Ow0KPiArDQo+ICsgIERhdGEgPSAweDE7DQo+ ICsgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX1BXUkVOLCBEYXRhKTsNCj4gKw0KPiAr ICBEYXRhID0gRFdfTU1DX0NUUkxfUkVTRVRfQUxMOw0KPiArICBNbWlvV3JpdGUzMiAoRGV2QmFz ZSArIERXX01NQ19DVFJMLCBEYXRhKTsNCj4gKw0KPiArICBUaW1lb3V0ID0gRFdfTU1DX0hDX0dF TkVSSUNfVElNRU9VVDsNCj4gKyAgd2hpbGUgKFRpbWVvdXQgPiAwKSB7DQo+ICsgICAgRGF0YSA9 IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19NTUNfQ1RSTCk7DQo+ICsNCj4gKyAgICBpZiAoKERh dGEgJiBEV19NTUNfQ1RSTF9SRVNFVF9BTEwpID09IDApIHsNCj4gKyAgICAgIGJyZWFrOw0KPiAr ICAgIH0NCj4gKyAgICBnQlMtPlN0YWxsICgxKTsNCj4gKw0KPiArICAgIFRpbWVvdXQtLTsNCj4g KyAgfQ0KPiArDQo+ICsgIGlmIChUaW1lb3V0IDw9IDApIHsNCj4gKyAgICBERUJVRyAoKERFQlVH X0lORk8sDQo+ICsgICAgICAiRHdNbWNIY0luaXRQb3dlclZvbHRhZ2U6IHJlc2V0IGZhaWxlZCBk dWUgdG8gdGltZW91dCIpKTsNCj4gKw0KPiArICAgIHJldHVybiBFRklfVElNRU9VVDsNCj4gKyAg fQ0KPiArDQo+ICsgIERhdGEgPSBEV19NTUNfQ1RSTF9JTlRfRU47DQo+ICsgIE1taW9Xcml0ZTMy IChEZXZCYXNlICsgRFdfTU1DX0NUUkwsIERhdGEpOw0KPiArDQo+ICsgIHJldHVybiBFRklfU1VD Q0VTUzsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIEluaXRpYWxpemUgdGhlIFRpbWVvdXQgQ29u dHJvbCByZWdpc3RlciB3aXRoIG1vc3QgY29uc2VydmF0aXZlIHZhbHVlIGF0DQo+ICsgIGluaXRp YWxpemF0aW9uLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gRGV2SW8gICAgICAgICAgVGhlIERFVklD RSBJTyBwcm90b2NvbCBpbnN0YW5jZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgIFRoZSB0aW1lb3V0IGNvbnRyb2wgcmVnaXN0ZXIgaXMgY29uZmlndXJlZA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3NmdWxseS4NCj4gKyAgQHJldHZhbCBPdGhlcnMg ICAgICAgICAgICBUaGUgdGltZW91dCBjb250cm9sIHJlZ2lzdGVyIGlzbid0IGNvbmZpZ3VyZWQN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzZnVsbHkuDQo+ICsNCj4gKyoq Lw0KPiArRUZJX1NUQVRVUw0KPiArRHdNbWNIY0luaXRUaW1lb3V0Q3RybCAoDQo+ICsgIElOIFVJ TlROICAgICAgICAgICAgICAgICAgRGV2QmFzZQ0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQzMiAg ICAgICAgICAgICAgICAgICAgRGF0YTsNCj4gKw0KPiArICBEYXRhID0gfjA7DQo+ICsgIE1taW9X cml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX1RNT1VULCBEYXRhKTsNCj4gKw0KPiArICBEYXRhID0g MHgwMEZGRkZGRjsNCj4gKyAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfREVCTkNFLCBE YXRhKTsNCj4gKw0KPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gKy8qKg0K PiArICBJbml0aWFsIFNEL01NQyBob3N0IGNvbnRyb2xsZXIgd2l0aCBsb3dlc3QgY2xvY2sgZnJl cXVlbmN5LCBtYXggcG93ZXIgYW5kDQo+ICsgIG1heCB0aW1lb3V0IHZhbHVlIGF0IGluaXRpYWxp emF0aW9uLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gRGV2SW8gICAgICAgICAgVGhlIERFVklDRSBJ TyBwcm90b2NvbCBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtW2luXSBTbG90ICAgICAgICAgICBUaGUg c2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0aGUgY29tbWFuZA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRvLg0KPiArICBAcGFyYW1baW5dIENhcGFiaWxpdHkgICAg IFRoZSBjYXBhYmlsaXR5IG9mIHRoZSBzbG90Lg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgICAgVGhlIGhvc3QgY29udHJvbGxlciBpcyBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHku DQo+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIGhvc3QgY29udHJvbGxlciBpc24n dCBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0K PiArRHdNbWNIY0luaXRIb3N0ICgNCj4gKyAgSU4gVUlOVE4gICAgRGV2QmFzZSwNCj4gKyAgSU4g RFdfTU1DX0hDX1NMT1RfQ0FQICAgICAgICBDYXBhYmlsaXR5DQo+ICsgICkNCj4gK3sNCj4gKyAg RUZJX1NUQVRVUyAgICAgICBTdGF0dXM7DQo+ICsNCj4gKyAgU3RhdHVzID0gRHdNbWNIY0luaXRQ b3dlclZvbHRhZ2UgKERldkJhc2UsIENhcGFiaWxpdHkpOw0KPiArICBpZiAoRUZJX0VSUk9SIChT dGF0dXMpKSB7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArICByZXR1cm4gU3Rh dHVzOw0KPiArfQ0KPiArDQo+ICtFRklfU1RBVFVTDQo+ICtEd01tY0hjU3RhcnREbWEgKA0KPiAr ICBJTiBEV19NTUNfSENfUFJJVkFURV9EQVRBICAgICAgICAgICAqUHJpdmF0ZSwNCj4gKyAgSU4g RFdfTU1DX0hDX1RSQiAgICAgICAgICAgICAgICAgICAgKlRyYg0KPiArICApDQo+ICt7DQo+ICsg IFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldkJhc2U7DQo+ICsgIFVJTlQz MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN0cmw7DQo+ICsgIFVJTlQzMiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEJtb2Q7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFRpbWVvdXQ7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIERhdGE7DQo+ICsNCj4gKy8vICBEZXZJbyAgPSBUcmItPlByaXZhdGUtPkRldklvOw0K PiArICBEZXZCYXNlID0gVHJiLT5Qcml2YXRlLT5EZXZCYXNlOw0KPiArDQo+ICsgIC8vDQo+ICsg IC8vIFJlc2V0IERNQQ0KPiArICAvLw0KPiArICBDdHJsID0gRFdfTU1DX0NUUkxfRE1BX1JFU0VU Ow0KPiArICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19DVFJMLCBDdHJsKTsNCj4gKw0K PiArICBUaW1lb3V0ID0gRFdfTU1DX0hDX0dFTkVSSUNfVElNRU9VVDsNCj4gKyAgd2hpbGUgKFRp bWVvdXQgPiAwKSB7DQo+ICsgICAgRGF0YSA9IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19NTUNf Q1RSTCk7DQo+ICsNCj4gKyAgICBpZiAoKERhdGEgJiBEV19NTUNfQ1RSTF9ETUFfUkVTRVQpID09 IDApIHsNCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKyAgICBnQlMtPlN0YWxsICgxKTsN Cj4gKw0KPiArICAgIFRpbWVvdXQtLTsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmIChUaW1lb3V0IDw9 IDApIHsNCj4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiVGltZWQgb3V0IHdhaXRpbmcgZm9y IENUUkxfRE1BX1JFU0VUIikpOw0KPiArDQo+ICsgICAgcmV0dXJuIEVGSV9USU1FT1VUOw0KPiAr ICB9DQo+ICsNCj4gKyAgQm1vZCA9IERXX01NQ19JRE1BQ19TV1JFU0VUIHwgTW1pb1JlYWQzMiAo RGV2QmFzZSArIERXX01NQ19CTU9EKTsNCj4gKw0KPiArICBNbWlvV3JpdGUzMiAoRGV2QmFzZSAr IERXX01NQ19CTU9ELCBCbW9kKTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBTZWxlY3QgSURNQUMN Cj4gKyAgLy8NCj4gKyAgQ3RybCA9IERXX01NQ19DVFJMX0lETUFDX0VOOw0KPiArICBDdHJsIHw9 IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19NTUNfQ1RSTCk7DQo+ICsgIE1taW9Xcml0ZTMyIChE ZXZCYXNlICsgRFdfTU1DX0NUUkwsIEN0cmwpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEVuYWJs ZSBJRE1BQw0KPiArICAvLw0KPiArICBCbW9kID0gRFdfTU1DX0lETUFDX0VOQUJMRSB8IERXX01N Q19JRE1BQ19GQjsNCj4gKyAgQm1vZCB8PSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX0JN T0QpOw0KPiArDQo+ICsgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX0JNT0QsIEJtb2Qp Ow0KPiArDQo+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gK30NCj4gKw0KPiArRUZJX1NUQVRV Uw0KPiArRHdNbWNIY1N0b3BEbWEgKA0KPiArICBJTiBEV19NTUNfSENfUFJJVkFURV9EQVRBICAg ICAgICAgICAqUHJpdmF0ZSwNCj4gKyAgSU4gRFdfTU1DX0hDX1RSQiAgICAgICAgICAgICAgICAg ICAgKlRyYg0KPiArICApDQo+ICt7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIERldkJhc2U7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEN0cmw7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJtb2Q7DQo+ ICsNCj4gKyAgRGV2QmFzZSA9IFRyYi0+UHJpdmF0ZS0+RGV2QmFzZTsNCj4gKw0KPiArICAvLw0K PiArICAvLyBEaXNhYmxlIGFuZCByZXNldCBJRE1BQw0KPiArICAvLw0KPiArICBDdHJsID0gTW1p b1JlYWQzMiAoRGV2QmFzZSArIERXX01NQ19DVFJMKTsNCj4gKyAgQ3RybCAmPSB+RFdfTU1DX0NU UkxfSURNQUNfRU47DQo+ICsgIEN0cmwgfD0gRFdfTU1DX0NUUkxfRE1BX1JFU0VUOw0KPiArICBN bWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19DVFJMLCBDdHJsKTsNCj4gKw0KPiArICAvLw0K PiArICAvLyBTdG9wIElETUFDDQo+ICsgIC8vDQo+ICsgIEJtb2QgPSBNbWlvUmVhZDMyIChEZXZC YXNlICsgRFdfTU1DX0JNT0QpOw0KPiArICBCbW9kICY9IH4oRFdfTU1DX0JNT0RfRkIgfCBEV19N TUNfQk1PRF9ERSk7DQo+ICsgIEJtb2QgfD0gRFdfTU1DX0JNT0RfU1dSOw0KPiArICBNbWlvV3Jp dGUzMiAoRGV2QmFzZSArIERXX01NQ19CTU9ELCBCbW9kKTsNCj4gKw0KPiArICByZXR1cm4gRUZJ X1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBCdWlsZCBETUEgZGVzY3JpcHRvciB0 YWJsZSBmb3IgdHJhbnNmZXIuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBUcmIgICAgICAgICAgICBU aGUgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hDX1RSQiBpbnN0YW5jZS4NCj4gKw0KPiArICBAcmV0 dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBETUEgZGVzY3JpcHRvciB0YWJsZSBpcyBjcmVhdGVk IHN1Y2Nlc3NmdWxseS4NCj4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgRE1BIGRl c2NyaXB0b3IgdGFibGUgaXNuJ3QgY3JlYXRlZCBzdWNjZXNzZnVsbHkuDQo+ICsNCj4gKyoqLw0K PiArRUZJX1NUQVRVUw0KPiArQnVpbGREbWFEZXNjVGFibGUgKA0KPiArICBJTiBEV19NTUNfSENf VFJCICAgICAgICAgICpUcmINCj4gKyAgKQ0KPiArew0KPiArICBFRklfUEhZU0lDQUxfQUREUkVT UyAgICAgIERhdGE7DQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgRGF0YUxlbjsNCj4g KyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBFbnRyaWVzOw0KPiArICBVSU5UMzIgICAgICAg ICAgICAgICAgICAgIEluZGV4Ow0KPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIFJlbWFp bmluZzsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBUYWJsZVNpemU7DQo+ICsgIFVJ TlROICAgICAgICAgICAgICAgICAgICAgRGV2QmFzZTsNCj4gKyAgRUZJX1NUQVRVUyAgICAgICAg ICAgICAgICBTdGF0dXM7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgQnl0ZXM7DQo+ ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgQmxvY2tzOw0KPiArICBEV19NTUNfSENfRE1B X0RFU0NfTElORSAgICpEbWFEZXNjOw0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIERt YURlc2NQaHk7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgSWRzdHM7DQo+ICsgIFVJ TlQzMiAgICAgICAgICAgICAgICAgICAgQnl0Q250Ow0KPiArICBVSU5UMzIgICAgICAgICAgICAg ICAgICAgIEJsa1NpemU7DQo+ICsNCj4gKyAgRGF0YSAgICA9IFRyYi0+RGF0YVBoeTsNCj4gKyAg RGF0YUxlbiA9IFRyYi0+RGF0YUxlbjsNCj4gKyAgRGV2QmFzZSA9IFRyYi0+UHJpdmF0ZS0+RGV2 QmFzZTsNCj4gKyAgLy8NCj4gKyAgLy8gT25seSBzdXBwb3J0IDMyYml0IERNQSBEZXNjcmlwdG9y IFRhYmxlDQo+ICsgIC8vDQo+ICsgIGlmICgoRGF0YSA+PSAweDEwMDAwMDAwMHVsKSB8fCAoKERh dGEgKyBEYXRhTGVuKSA+IDB4MTAwMDAwMDAwdWwpKSB7DQo+ICsgICAgcmV0dXJuIEVGSV9JTlZB TElEX1BBUkFNRVRFUjsNCj4gKyAgfQ0KPiArICAvLw0KPiArICAvLyBBZGRyZXNzIGZpZWxkIHNo YWxsIGJlIHNldCBvbiAzMi1iaXQgYm91bmRhcnkgKExvd2VyIDItYml0IGlzIGFsd2F5cyBzZXQN Cj4gKyAgLy8gdG8gMCkgZm9yIDMyLWJpdCBhZGRyZXNzIGRlc2NyaXB0b3IgdGFibGUuDQo+ICsg IC8vDQo+ICsgIGlmICgoRGF0YSAmIChCSVQwIHwgQklUMSkpICE9IDApIHsNCj4gKyAgICBERUJV RyAoKA0KPiArICAgICAgREVCVUdfSU5GTywNCj4gKyAgICAgICJUaGUgYnVmZmVyIFsweCV4XSB0 byBjb25zdHJ1Y3QgRE1BIGRlc2MgaXMgbm90IGFsaWduZWQgdG8gNCBieXRlcyFcbiIsDQo+ICsg ICAgICBEYXRhDQo+ICsgICAgICApKTsNCj4gKyAgfQ0KPiArDQo+ICsgIEVudHJpZXMgICA9IChE YXRhTGVuICsgRFdNTUNfRE1BX0JVRl9TSVpFIC0gMSkgLyBEV01NQ19ETUFfQlVGX1NJWkU7DQo+ ICsgIFRhYmxlU2l6ZSA9IEVudHJpZXMgKiBzaXplb2YgKERXX01NQ19IQ19ETUFfREVTQ19MSU5F KTsNCj4gKyAgQmxvY2tzICAgID0gKERhdGFMZW4gKyBEV19NTUNfQkxPQ0tfU0laRSAtIDEpIC8g RFdfTU1DX0JMT0NLX1NJWkU7DQo+ICsNCj4gKyAgVHJiLT5EbWFEZXNjUGFnZXMgPSAoVUlOVDMy KUVGSV9TSVpFX1RPX1BBR0VTIChFbnRyaWVzICogRFdNTUNfRE1BX0JVRl9TSVpFKTsNCj4gKy8q ICBTdGF0dXMgPSBEZXZJby0+QWxsb2NhdGVCdWZmZXIgKA0KPiArICAgICAgICAgICAgICAgICAg ICBEZXZJbywNCj4gKyAgICAgICAgICAgICAgICAgICAgQWxsb2NhdGVBbnlQYWdlcywNCj4gKyAg ICAgICAgICAgICAgICAgICAgRWZpQm9vdFNlcnZpY2VzRGF0YSwNCj4gKyAgICAgICAgICAgICAg ICAgICAgRUZJX1NJWkVfVE9fUEFHRVMgKFRhYmxlU2l6ZSksDQo+ICsgICAgICAgICAgICAgICAg ICAgIChFRklfUEhZU0lDQUxfQUREUkVTUyAqKSZUcmItPkRtYURlc2MNCj4gKyAgICAgICAgICAg ICAgICAgICAgKTsqLw0KPiArICBTdGF0dXMgPSBEbWFBbGxvY2F0ZUJ1ZmZlciAoRWZpQm9vdFNl cnZpY2VzRGF0YSwgRUZJX1NJWkVfVE9fUEFHRVMgKFRhYmxlU2l6ZSksDQo+ICsgICAgICAgICAg ICAgKFZPSUQgKikmVHJiLT5EbWFEZXNjKTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkg ew0KPiArICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gKyAgfQ0KPiArDQo+ICsg IFplcm9NZW0gKFRyYi0+RG1hRGVzYywgVGFibGVTaXplKTsNCj4gKyAgQnl0ZXMgID0gVGFibGVT aXplOw0KPiArDQo+ICsgIFN0YXR1cyA9IERtYU1hcCAoTWFwT3BlcmF0aW9uQnVzTWFzdGVyQ29t bW9uQnVmZmVyLA0KPiArICAgICAgICAgICAgIChFRklfUEhZU0lDQUxfQUREUkVTUyAqKVRyYi0+ RG1hRGVzYywNCj4gKyAgICAgICAgICAgICAmQnl0ZXMsICZUcmItPkRtYURlc2NQaHksICZUcmIt PkRtYU1hcCk7DQo+ICsvKiAgU3RhdHVzID0gRGV2SW8tPk1hcCAoDQo+ICsgICAgICAgICAgICAg ICAgICAgIERldklvLA0KPiArICAgICAgICAgICAgICAgICAgICBFZmlCdXNNYXN0ZXJDb21tb25C dWZmZXIsDQo+ICsgICAgICAgICAgICAgICAgICAgIChFRklfUEhZU0lDQUxfQUREUkVTUyAqKVRy Yi0+RG1hRGVzYywNCj4gKyAgICAgICAgICAgICAgICAgICAgJkJ5dGVzLA0KPiArICAgICAgICAg ICAgICAgICAgICAmVHJiLT5EbWFEZXNjUGh5LA0KPiArICAgICAgICAgICAgICAgICAgICAmVHJi LT5EbWFNYXANCj4gKyAgICAgICAgICAgICAgICAgICAgKTsqLw0KPiArDQo+ICsgIGlmIChFRklf RVJST1IgKFN0YXR1cykgfHwgKEJ5dGVzICE9IFRhYmxlU2l6ZSkpIHsNCj4gKyAgICAvLw0KPiAr ICAgIC8vIE1hcCBlcnJvciBvciB1bmFibGUgdG8gbWFwIHRoZSB3aG9sZSBSRmlzIGJ1ZmZlciBp bnRvIGEgY29udGlndW91cw0KPiArICAgIC8vIHJlZ2lvbi4NCj4gKyAgICAvLw0KPiArLyogICAg RGV2SW8tPkZyZWVCdWZmZXIgKA0KPiArICAgICAgICAgICAgIERldklvLA0KPiArICAgICAgICAg ICAgIEVGSV9TSVpFX1RPX1BBR0VTIChUYWJsZVNpemUpLA0KPiArICAgICAgICAgICAgIChFRklf UEhZU0lDQUxfQUREUkVTUylUcmItPkRtYURlc2MNCj4gKyAgICAgICAgICAgICApOyovDQo+ICsg ICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiArICB9DQo+ICsNCj4gKyAgaWYgKChV SU5UNjQpKFVJTlROKVRyYi0+RG1hRGVzY1BoeSA+IDB4MTAwMDAwMDAwdWwpIHsNCj4gKyAgICAv Lw0KPiArICAgIC8vIFRoZSBETUEgZG9lc24ndCBzdXBwb3J0IDY0Yml0IGFkZHJlc3NpbmcuDQo+ ICsgICAgLy8NCj4gKyAgICBEbWFVbm1hcCAoVHJiLT5EbWFNYXApOw0KPiArLyogICAgRGV2SW8t PlVubWFwICgNCj4gKyAgICAgIERldklvLA0KPiArICAgICAgVHJiLT5EbWFNYXANCj4gKyAgICAp OyovDQo+ICsgICAgcmV0dXJuIEVGSV9ERVZJQ0VfRVJST1I7DQo+ICsgIH0NCj4gKw0KPiArICBp ZiAoRGF0YUxlbiA8IERXX01NQ19CTE9DS19TSVpFKSB7DQo+ICsgICAgQmxrU2l6ZSA9IERhdGFM ZW47DQo+ICsgICAgQnl0Q250ID0gRGF0YUxlbjsNCj4gKyAgICBSZW1haW5pbmcgPSBEYXRhTGVu Ow0KPiArICB9IGVsc2Ugew0KPiArICAgIEJsa1NpemUgPSBEV19NTUNfQkxPQ0tfU0laRTsNCj4g KyAgICBCeXRDbnQgPSBEV19NTUNfQkxPQ0tfU0laRSAqIEJsb2NrczsNCj4gKyAgICBSZW1haW5p bmcgPSBEV19NTUNfQkxPQ0tfU0laRSAqIEJsb2NrczsNCj4gKyAgfQ0KPiArDQo+ICsgIE1taW9X cml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX0JMS1NJWiwgQmxrU2l6ZSk7DQo+ICsgIE1taW9Xcml0 ZTMyIChEZXZCYXNlICsgRFdfTU1DX0JZVENOVCwgQnl0Q250KTsNCj4gKyAgRG1hRGVzYyA9IFRy Yi0+RG1hRGVzYzsNCj4gKyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgRW50cmllczsgSW5kZXgr KywgRG1hRGVzYysrKSB7DQo+ICsgICAgRG1hRGVzYy0+RGVzMCA9IERXX01NQ19JRE1BQ19ERVMw X09XTiB8IERXX01NQ19JRE1BQ19ERVMwX0NIIHwNCj4gKyAgICAgICAgICAgICAgICAgICAgRFdf TU1DX0lETUFDX0RFUzBfRElDOw0KPiArICAgIERtYURlc2MtPkRlczEgPSBEV19NTUNfSURNQUNf REVTMV9CUzEgKERXTU1DX0RNQV9CVUZfU0laRSk7DQo+ICsgICAgLy8NCj4gKyAgICAvLyBCdWZm ZXIgQWRkcmVzcw0KPiArICAgIC8vDQo+ICsgICAgRG1hRGVzYy0+RGVzMiA9IChVSU5UMzIpKChV SU5UTilUcmItPkRhdGFQaHkgKw0KPiArICAgICAgICAgICAgICAgICAgICAoRFdNTUNfRE1BX0JV Rl9TSVpFICogSW5kZXgpKTsNCj4gKyAgICAvLw0KPiArICAgIC8vIE5leHQgRGVzY3JpcHRvciBB ZGRyZXNzDQo+ICsgICAgLy8NCj4gKyAgICBEbWFEZXNjLT5EZXMzID0gKFVJTlQzMikoKFVJTlRO KVRyYi0+RG1hRGVzY1BoeSArDQo+ICsgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoRFdfTU1D X0hDX0RNQV9ERVNDX0xJTkUpICogKEluZGV4ICsgMSkpOw0KPiArICAgIFJlbWFpbmluZyA9IFJl bWFpbmluZyAtIERXTU1DX0RNQV9CVUZfU0laRTsNCj4gKyAgfQ0KPiArICAvLw0KPiArICAvLyBG aXJzdCBEZXNjcmlwdG9yDQo+ICsgIC8vDQo+ICsgIFRyYi0+RG1hRGVzY1swXS5EZXMwIHw9IERX X01NQ19JRE1BQ19ERVMwX0ZTOw0KPiArICAvLw0KPiArICAvLyBMYXN0IERlc2NyaXB0b3INCj4g KyAgLy8NCj4gKyAgVHJiLT5EbWFEZXNjW0VudHJpZXMgLSAxXS5EZXMwICY9IH4oRFdfTU1DX0lE TUFDX0RFUzBfQ0ggfA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdf TU1DX0lETUFDX0RFUzBfRElDKTsNCj4gKyAgVHJiLT5EbWFEZXNjW0VudHJpZXMgLSAxXS5EZXMw IHw9IERXX01NQ19JRE1BQ19ERVMwX09XTiB8DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBEV19NTUNfSURNQUNfREVTMF9MRDsNCj4gKyAgVHJiLT5EbWFEZXNjW0VudHJp ZXMgLSAxXS5EZXMxID0gRFdfTU1DX0lETUFDX0RFUzFfQlMxIChSZW1haW5pbmcgKw0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV01NQ19ETUFfQlVGX1NJWkUpOw0KPiAr ICAvLw0KPiArICAvLyBTZXQgdGhlIG5leHQgZmllbGQgb2YgdGhlIExhc3QgRGVzY3JpcHRvcg0K PiArICAvLw0KPiArICBUcmItPkRtYURlc2NbRW50cmllcyAtIDFdLkRlczMgPSAwOw0KPiArICBE bWFEZXNjUGh5ID0gKFVJTlQzMilUcmItPkRtYURlc2NQaHk7DQo+ICsNCj4gKyAgTW1pb1dyaXRl MzIgKERldkJhc2UgKyBEV19NTUNfREJBRERSLCBEbWFEZXNjUGh5KTsNCj4gKw0KPiArICBBcm1E YXRhU3luY2hyb25pemF0aW9uQmFycmllciAoKTsNCj4gKyAgQXJtSW5zdHJ1Y3Rpb25TeW5jaHJv bml6YXRpb25CYXJyaWVyICgpOw0KPiArICAvLw0KPiArICAvLyBDbGVhciBpbnRlcnJ1cHRzDQo+ ICsgIC8vDQo+ICsgIElkc3RzID0gfjA7DQo+ICsgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdf TU1DX0lEU1RTLCBJZHN0cyk7DQo+ICsNCj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gK30NCj4gKw0K PiArRUZJX1NUQVRVUw0KPiArVHJhbnNmZXJGaWZvICgNCj4gKyAgSU4gRFdfTU1DX0hDX1RSQiAg ICAgICAgICAqVHJiDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAg ICBEZXZCYXNlOw0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIERhdGE7DQo+ICsgIFVJ TlQzMiAgICAgICAgICAgICAgICAgICAgUmVjZWl2ZWQ7DQo+ICsgIFVJTlQzMiAgICAgICAgICAg ICAgICAgICAgQ291bnQ7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgSW50c3RzOw0K PiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIFN0czsNCj4gKyAgVUlOVDMyICAgICAgICAg ICAgICAgICAgICBGaWZvQ291bnQ7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgSW5k ZXg7ICAgICAvKiBjb3VudCB3aXRoIGJ5dGVzICovDQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAg ICAgICAgQXNjZW5kaW5nOw0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIERlc2NlbmRp bmc7DQo+ICsNCj4gKyAgRGV2QmFzZSAgID0gVHJiLT5Qcml2YXRlLT5EZXZCYXNlOw0KPiArICBS ZWNlaXZlZCA9IDA7DQo+ICsgIENvdW50ID0gMDsNCj4gKyAgSW5kZXggPSAwOw0KPiArICBBc2Nl bmRpbmcgPSAwOw0KPiArICBEZXNjZW5kaW5nID0gKChUcmItPkRhdGFMZW4gKyAzKSAmIH4zKSAt IDQ7DQo+ICsgIGRvIHsNCj4gKyAgICBJbnRzdHMgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdf TU1DX1JJTlRTVFMpOw0KPiArDQo+ICsgICAgaWYgKFRyYi0+RGF0YUxlbiAmJiAoSW50c3RzICYg RFdfTU1DX0lOVF9UWERSKSAmJiAhVHJiLT5SZWFkKSB7DQo+ICsgICAgICBTdHMgPSBNbWlvUmVh ZDMyIChEZXZCYXNlICsgRFdfTU1DX1NUQVRVUyk7DQo+ICsNCj4gKyAgICAgIHdoaWxlICghKERX X01NQ19TVFNfRklGT19GVUxMKFN0cykpDQo+ICsgICAgICAgICAgICAgICYmIChSZWNlaXZlZCA8 IFRyYi0+RGF0YUxlbikNCj4gKyAgICAgICAgICAgICAgJiYgKEludHN0cyAmIERXX01NQ19JTlRf VFhEUikpIHsNCj4gKyAgICAgICAgaWYgKFRyYi0+VXNlQkUpIHsNCj4gKyAgICAgICAgICBEYXRh ID0gU3dhcEJ5dGVzMzIgKCooVUlOVDMyICopKChVSU5UTilUcmItPkRhdGEgKyBEZXNjZW5kaW5n KSk7DQo+ICsgICAgICAgICAgRGVzY2VuZGluZyA9IERlc2NlbmRpbmcgLSA0Ow0KPiArICAgICAg ICB9IGVsc2Ugew0KPiArICAgICAgICAgIERhdGEgPSAqKFVJTlQzMiAqKSgoVUlOVE4pVHJiLT5E YXRhICsgQXNjZW5kaW5nKTsNCj4gKyAgICAgICAgICBBc2NlbmRpbmcgKz0gNDsNCj4gKyAgICAg ICAgfQ0KPiArICAgICAgICBJbmRleCArPSA0Ow0KPiArICAgICAgICBSZWNlaXZlZCArPSA0Ow0K PiArDQo+ICsgICAgICAgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX0ZJRk9fU1RBUlQs IERhdGEpOw0KPiArDQo+ICsgICAgICAgIEludHN0cyA9IERXX01NQ19JTlRfVFhEUjsNCj4gKyAg ICAgICAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfUklOVFNUUywgSW50c3RzKTsNCj4g Kw0KPiArICAgICAgICBJbnRzdHMgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX1JJTlRT VFMpOw0KPiArICAgICAgICBTdHMgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX1NUQVRV Uyk7DQo+ICsgICAgICAgIH0NCj4gKyAgICAgIGNvbnRpbnVlOw0KPiArICAgIH0NCj4gKw0KPiAr ICAgIGlmIChUcmItPkRhdGFMZW4gJiYgKChJbnRzdHMgJiBEV19NTUNfSU5UX1JYRFIpIHx8DQo+ ICsgICAgICAgKEludHN0cyAmIERXX01NQ19JTlRfRFRPKSkgJiYgVHJiLT5SZWFkKSB7DQo+ICsg ICAgICBTdHMgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX1NUQVRVUyk7DQo+ICsgICAg ICAvLw0KPiArICAgICAgLy8gQ29udmVydCB0byBieXRlcw0KPiArICAgICAgLy8NCj4gKyAgICAg IEZpZm9Db3VudCA9IEdFVF9TVFNfRklGT19DT1VOVCAoU3RzKSA8PCAyOw0KPiArICAgICAgaWYg KChGaWZvQ291bnQgPT0gMCkgJiYgKFJlY2VpdmVkIDwgVHJiLT5EYXRhTGVuKSkgew0KPiArICAg ICAgICBjb250aW51ZTsNCj4gKyAgICAgIH0NCj4gKyAgICAgIEluZGV4ID0gMDsNCj4gKyAgICAg IENvdW50ID0gKE1JTiAoRmlmb0NvdW50LCBUcmItPkRhdGFMZW4pICsgMykgJiB+MzsNCj4gKyAg ICAgIHdoaWxlIChJbmRleCA8IENvdW50KSB7DQo+ICsgICAgICAgIERhdGEgPSBNbWlvUmVhZDMy IChEZXZCYXNlICsgRFdfTU1DX0ZJRk9fU1RBUlQpOw0KPiArDQo+ICsgICAgICAgIGlmIChUcmIt PlVzZUJFKSB7DQo+ICsgICAgICAgICAgKihVSU5UMzIgKikoKFVJTlROKVRyYi0+RGF0YSArIERl c2NlbmRpbmcpID0gU3dhcEJ5dGVzMzIgKERhdGEpOw0KPiArICAgICAgICAgIERlc2NlbmRpbmcg PSBEZXNjZW5kaW5nIC0gNDsNCj4gKyAgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAqKFVJ TlQzMiAqKSgoVUlOVE4pVHJiLT5EYXRhICsgQXNjZW5kaW5nKSA9IERhdGE7DQo+ICsgICAgICAg ICAgQXNjZW5kaW5nICs9IDQ7DQo+ICsgICAgICAgIH0NCj4gKyAgICAgICAgSW5kZXggKz0gNDsN Cj4gKyAgICAgICAgUmVjZWl2ZWQgKz0gNDsNCj4gKyAgICAgIH0gLyogd2hpbGUgKi8NCj4gKyAg ICB9IC8qIGlmICovDQo+ICsgIH0gd2hpbGUgKCgoSW50c3RzICYgRFdfTU1DX0lOVF9DTURfRE9O RSkgPT0gMCkgfHwgKFJlY2VpdmVkIDwgVHJiLT5EYXRhTGVuKSk7DQo+ICsgIC8vDQo+ICsgIC8v IENsZWFyIFJJTlRTVFMNCj4gKyAgLy8NCj4gKyAgSW50c3RzID0gfjA7DQo+ICsgIE1taW9Xcml0 ZTMyIChEZXZCYXNlICsgRFdfTU1DX1JJTlRTVFMsIEludHN0cyk7DQo+ICsgIHJldHVybiBFRklf U1VDQ0VTUzsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENyZWF0ZSBhIG5ldyBUUkIgZm9yIHRo ZSBTRC9NTUMgY21kIHJlcXVlc3QuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBQcml2YXRlICAgICAg ICBBIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19QUklWQVRFX0RBVEEgaW5zdGFuY2UuDQo+ICsg IEBwYXJhbVtpbl0gU2xvdCAgICAgICAgICAgVGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJk IHRvIHNlbmQgdGhlIGNvbW1hbmQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0by4N Cj4gKyAgQHBhcmFtW2luXSBQYWNrZXQgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIFNEIGNvbW1h bmQgZGF0YSBzdHJ1Y3R1cmUuDQo+ICsgIEBwYXJhbVtpbl0gRXZlbnQgICAgICAgICAgSWYgRXZl bnQgaXMgTlVMTCwgYmxvY2tpbmcgSS9PIGlzIHBlcmZvcm1lZC4gSWYNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBFdmVudCBpcyBub3QgTlVMTCwgdGhlbiBub25ibG9ja2luZyBJL08g aXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtZWQsIGFuZCBFdmVudCB3 aWxsIGJlIHNpZ25hbGVkIHdoZW4gdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg UGFja2V0IGNvbXBsZXRlcy4NCj4gKw0KPiArICBAcmV0dXJuIENyZWF0ZWQgVHJiIG9yIE5VTEwu DQo+ICsNCj4gKyoqLw0KPiArRFdfTU1DX0hDX1RSQiAqDQo+ICtEd01tY0NyZWF0ZVRyYiAoDQo+ ICsgIElOIERXX01NQ19IQ19QUklWQVRFX0RBVEEgICAgICAgICAgICAgICpQcml2YXRlLA0KPiAr ICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG90LA0KPiArICBJTiBF RklfU0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAqUGFja2V0LA0KPiArICBJTiBFRklf RVZFTlQgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudA0KPiArICApDQo+ICt7DQo+ICsg IERXX01NQ19IQ19UUkIgICAgICAgICAgICAgICAgICpUcmI7DQo+ICsgIEVGSV9TVEFUVVMgICAg ICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gKyAgRUZJX1RQTCAgICAgICAgICAgICAgICAgICAg ICAgT2xkVHBsOw0KPiArICBFRklfSU9fT1BFUkFUSU9OX1RZUEUgICAgICAgICBGbGFnOw0KPiAr ICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICBNYXBMZW5ndGg7DQo+ICsNCj4gKyAgVHJi ID0gQWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mIChEV19NTUNfSENfVFJCKSk7DQo+ICsgIGlmIChU cmIgPT0gTlVMTCkgew0KPiArICAgIHJldHVybiBOVUxMOw0KPiArICB9DQo+ICsNCj4gKyAgVHJi LT5TaWduYXR1cmUgPSBEV19NTUNfSENfVFJCX1NJRzsNCj4gKyAgVHJiLT5TbG90ICAgICAgPSBT bG90Ow0KPiArICBUcmItPkJsb2NrU2l6ZSA9IDB4MjAwOw0KPiArICBUcmItPlBhY2tldCAgICA9 IFBhY2tldDsNCj4gKyAgVHJiLT5FdmVudCAgICAgPSBFdmVudDsNCj4gKyAgVHJiLT5TdGFydGVk ICAgPSBGQUxTRTsNCj4gKyAgVHJiLT5UaW1lb3V0ICAgPSBQYWNrZXQtPlRpbWVvdXQ7DQo+ICsg IFRyYi0+UHJpdmF0ZSAgID0gUHJpdmF0ZTsNCj4gKw0KPiArICBpZiAoKFBhY2tldC0+SW5UcmFu c2Zlckxlbmd0aCAhPSAwKSAmJiAoUGFja2V0LT5JbkRhdGFCdWZmZXIgIT0gTlVMTCkpIHsNCj4g KyAgICBUcmItPkRhdGEgICAgPSBQYWNrZXQtPkluRGF0YUJ1ZmZlcjsNCj4gKyAgICBUcmItPkRh dGFMZW4gPSBQYWNrZXQtPkluVHJhbnNmZXJMZW5ndGg7DQo+ICsgICAgVHJiLT5SZWFkICAgID0g VFJVRTsNCj4gKyAgICBaZXJvTWVtIChUcmItPkRhdGEsIFRyYi0+RGF0YUxlbik7DQo+ICsgIH0g ZWxzZSBpZiAoUGFja2V0LT5PdXRUcmFuc2Zlckxlbmd0aCAmJiAoUGFja2V0LT5PdXREYXRhQnVm ZmVyICE9IE5VTEwpKSB7DQo+ICsgICAgVHJiLT5EYXRhICAgID0gUGFja2V0LT5PdXREYXRhQnVm ZmVyOw0KPiArICAgIFRyYi0+RGF0YUxlbiA9IFBhY2tldC0+T3V0VHJhbnNmZXJMZW5ndGg7DQo+ ICsgICAgVHJiLT5SZWFkICAgID0gRkFMU0U7DQo+ICsgIH0gZWxzZSBpZiAoIVBhY2tldC0+SW5U cmFuc2Zlckxlbmd0aCAmJiAhUGFja2V0LT5PdXRUcmFuc2Zlckxlbmd0aCkgew0KPiArICAgIFRy Yi0+RGF0YSAgICA9IE5VTEw7DQo+ICsgICAgVHJiLT5EYXRhTGVuID0gMDsNCj4gKyAgfSBlbHNl IHsNCj4gKyAgICBnb3RvIEVycm9yOw0KPiArICB9DQo+ICsNCj4gKyAgaWYgKCgoUHJpdmF0ZS0+ U2xvdFtUcmItPlNsb3RdLkNhcmRUeXBlID09IEVtbWNDYXJkVHlwZSkgJiYNCj4gKyAgICAgICAo UGFja2V0LT5TZE1tY0NtZEJsay0+Q29tbWFuZEluZGV4ID09IEVNTUNfU0VORF9UVU5JTkdfQkxP Q0spKSB8fA0KPiArICAgICAgKChQcml2YXRlLT5TbG90W1RyYi0+U2xvdF0uQ2FyZFR5cGUgPT0g U2RDYXJkVHlwZSkgJiYNCj4gKyAgICAgICAoUGFja2V0LT5TZE1tY0NtZEJsay0+Q29tbWFuZElu ZGV4ID09IFNEX1NFTkRfVFVOSU5HX0JMT0NLKSkpIHsNCj4gKyAgICBUcmItPk1vZGUgPSBTZE1t Y1Bpb01vZGU7DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAgaWYgKFRyYi0+UmVhZCkgew0KPiArICAg ICAgRmxhZyA9IEVmaUJ1c01hc3RlcldyaXRlOw0KPiArICAgIH0gZWxzZSB7DQo+ICsgICAgICBG bGFnID0gRWZpQnVzTWFzdGVyUmVhZDsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBpZiAoUHJpdmF0 ZS0+U2xvdFtUcmItPlNsb3RdLkNhcmRUeXBlID09IFNkQ2FyZFR5cGUpIHsNCj4gKyAgICAgIFRy Yi0+VXNlRmlmbyA9IFRSVUU7DQo+ICsgICAgfSBlbHNlIHsNCj4gKyAgICAgIFRyYi0+VXNlRmlm byA9IEZBTFNFOw0KPiArICAgICAgaWYgKFRyYi0+RGF0YUxlbikgew0KPiArICAgICAgICBNYXBM ZW5ndGggPSBUcmItPkRhdGFMZW47DQo+ICsgICAgICAgIFN0YXR1cyA9IERtYU1hcCAoRmxhZywg VHJiLT5EYXRhLCAmTWFwTGVuZ3RoLCAmVHJiLT5EYXRhUGh5LCAmVHJiLT5EYXRhTWFwKTsNCj4g Ky8qICAgICAgICBTdGF0dXMgPSBEZXZJby0+TWFwICgNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgRGV2SW8sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEZsYWcsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgIFRyYi0+RGF0YSwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgJk1hcExlbmd0aCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgJlRyYi0+RGF0 YVBoeSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgJlRyYi0+RGF0YU1hcA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICApOyovDQo+ICsgICAgICAgIGlmIChFRklfRVJST1IgKFN0 YXR1cykgfHwgKFRyYi0+RGF0YUxlbiAhPSBNYXBMZW5ndGgpKSB7DQo+ICsgICAgICAgICAgU3Rh dHVzID0gRUZJX0JBRF9CVUZGRVJfU0laRTsNCj4gKyAgICAgICAgICBnb3RvIEVycm9yOw0KPiAr ICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgU3RhdHVzID0gQnVpbGREbWFEZXNjVGFibGUgKFRy Yik7DQo+ICsgICAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICAgICAgICBE bWFVbm1hcChUcmItPkRhdGFNYXApOw0KPiArICAgICAgICAgIGdvdG8gRXJyb3I7DQo+ICsgICAg ICAgIH0NCj4gKyAgICAgICAgU3RhdHVzID0gRHdNbWNIY1N0YXJ0RG1hIChQcml2YXRlLCBUcmIp Ow0KPiArICAgICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgICAgICAgRG1h VW5tYXAoVHJiLT5EYXRhTWFwKTsNCj4gKyAgICAgICAgICBnb3RvIEVycm9yOw0KPiArICAgICAg ICB9DQo+ICsgICAgICB9DQo+ICsgICAgfQ0KPiArICB9IC8qIFR1bmluZ0Jsb2NrICovDQo+ICsN Cj4gKyAgaWYgKEV2ZW50ICE9IE5VTEwpIHsNCj4gKyAgICBPbGRUcGwgPSBnQlMtPlJhaXNlVFBM IChUUExfTk9USUZZKTsNCj4gKyAgICBJbnNlcnRUYWlsTGlzdCAoJlByaXZhdGUtPlF1ZXVlLCAm VHJiLT5UcmJMaXN0KTsNCj4gKyAgICBnQlMtPlJlc3RvcmVUUEwgKE9sZFRwbCk7DQo+ICsgIH0N Cj4gKw0KPiArICByZXR1cm4gVHJiOw0KPiArDQo+ICtFcnJvcjoNCj4gKyAgcmV0dXJuIE5VTEw7 DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBGcmVlIHRoZSByZXNvdXJjZSB1c2VkIGJ5IHRoZSBU UkIuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBUcmIgICAgICAgICAgICBUaGUgcG9pbnRlciB0byB0 aGUgRFdfTU1DX0hDX1RSQiBpbnN0YW5jZS4NCj4gKw0KPiArKiovDQo+ICtWT0lEDQo+ICtEd01t Y0ZyZWVUcmIgKA0KPiArICBJTiBEV19NTUNfSENfVFJCICAgICAgICAgICAqVHJiDQo+ICsgICkN Cj4gK3sNCj4gKyAgaWYgKFRyYi0+RG1hTWFwICE9IE5VTEwpIHsNCj4gKyAgICBEbWFVbm1hcCAo VHJiLT5EbWFNYXApOw0KPiArICB9DQo+ICsgIGlmIChUcmItPkRhdGFNYXAgIT0gTlVMTCkgew0K PiArICAgIERtYVVubWFwIChUcmItPkRhdGFNYXApOw0KPiArICB9DQo+ICsgIEZyZWVQb29sIChU cmIpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ2hlY2sgaWYgdGhlIGVudiBpcyByZWFkeSBm b3IgZXhlY3V0ZSBzcGVjaWZpZWQgVFJCLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gUHJpdmF0ZSAg ICAgICAgQSBwb2ludGVyIHRvIHRoZSBEV19NTUNfSENfUFJJVkFURV9EQVRBIGluc3RhbmNlLg0K PiArICBAcGFyYW1baW5dIFRyYiAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBEV19NTUNf SENfVFJCIGluc3RhbmNlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhl IGVudiBpcyByZWFkeSBmb3IgVFJCIGV4ZWN1dGlvbi4NCj4gKyAgQHJldHZhbCBFRklfTk9UX1JF QURZICAgICBUaGUgZW52IGlzIG5vdCByZWFkeSBmb3IgVFJCIGV4ZWN1dGlvbi4NCj4gKyAgQHJl dHZhbCBPdGhlcnMgICAgICAgICAgICBTb21lIGVycm9zIGhhcHBlbi4NCj4gKw0KPiArKiovDQo+ ICtFRklfU1RBVFVTDQo+ICtEd01tY0NoZWNrVHJiRW52ICgNCj4gKyAgSU4gRFdfTU1DX0hDX1BS SVZBVEVfREFUQSAgICAgICAgICAgKlByaXZhdGUsDQo+ICsgIElOIERXX01NQ19IQ19UUkIgICAg ICAgICAgICAgICAgICAgICpUcmINCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gRUZJX1NVQ0NF U1M7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBXYWl0IGZvciB0aGUgZW52IHRvIGJlIHJlYWR5 IGZvciBleGVjdXRlIHNwZWNpZmllZCBUUkIuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBQcml2YXRl ICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19QUklWQVRFX0RBVEEgaW5zdGFuY2Uu DQo+ICsgIEBwYXJhbVtpbl0gVHJiICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIERXX01N Q19IQ19UUkIgaW5zdGFuY2UuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBU aGUgZW52IGlzIHJlYWR5IGZvciBUUkIgZXhlY3V0aW9uLg0KPiArICBAcmV0dmFsIEVGSV9USU1F T1VUICAgICAgIFRoZSBlbnYgaXMgbm90IHJlYWR5IGZvciBUUkIgZXhlY3V0aW9uIGluIHRpbWUu DQo+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgU29tZSBlcnJvcyBoYXBwZW4uDQo+ICsN Cj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRHdNbWNXYWl0VHJiRW52ICgNCj4gKyAgSU4gRFdf TU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAgKlByaXZhdGUsDQo+ICsgIElOIERXX01NQ19I Q19UUkIgICAgICAgICAgICAgICAgICAgICpUcmINCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RB VFVTICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ICsgIEVGSV9TRF9NTUNfUEFT U19USFJVX0NPTU1BTkRfUEFDS0VUICpQYWNrZXQ7DQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRpbWVvdXQ7DQo+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEluZmluaXRlV2FpdDsNCj4gKw0KPiArICAvLw0KPiArICAvLyBXYWl0IENvbW1h bmQgQ29tcGxldGUgSW50ZXJydXB0IFN0YXR1cyBiaXQgaW4gTm9ybWFsIEludGVycnVwdCBTdGF0 dXMNCj4gKyAgLy8gUmVnaXN0ZXINCj4gKyAgLy8NCj4gKyAgUGFja2V0ICA9IFRyYi0+UGFja2V0 Ow0KPiArICBUaW1lb3V0ID0gUGFja2V0LT5UaW1lb3V0Ow0KPiArICBpZiAoVGltZW91dCA9PSAw KSB7DQo+ICsgICAgSW5maW5pdGVXYWl0ID0gVFJVRTsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICBJ bmZpbml0ZVdhaXQgPSBGQUxTRTsNCj4gKyAgfQ0KPiArDQo+ICsgIHdoaWxlIChJbmZpbml0ZVdh aXQgfHwgKFRpbWVvdXQgPiAwKSkgew0KPiArICAgIC8vDQo+ICsgICAgLy8gQ2hlY2sgVHJiIGV4 ZWN1dGlvbiByZXN1bHQgYnkgcmVhZGluZyBOb3JtYWwgSW50ZXJydXB0IFN0YXR1cyByZWdpc3Rl ci4NCj4gKyAgICAvLw0KPiArICAgIFN0YXR1cyA9IER3TW1jQ2hlY2tUcmJFbnYgKFByaXZhdGUs IFRyYik7DQo+ICsgICAgaWYgKFN0YXR1cyAhPSBFRklfTk9UX1JFQURZKSB7DQo+ICsgICAgICBy ZXR1cm4gU3RhdHVzOw0KPiArICAgIH0NCj4gKyAgICAvLw0KPiArICAgIC8vIFN0YWxsIGZvciAx IG1pY3Jvc2Vjb25kLg0KPiArICAgIC8vDQo+ICsgICAgZ0JTLT5TdGFsbCAoMSk7DQo+ICsNCj4g KyAgICBUaW1lb3V0LS07DQo+ICsgIH0NCj4gKw0KPiArICByZXR1cm4gRUZJX1RJTUVPVVQ7DQo+ ICt9DQo+ICsNCj4gK0VGSV9TVEFUVVMNCj4gK0R3RW1tY0V4ZWNUcmIgKA0KPiArICBJTiBEV19N TUNfSENfUFJJVkFURV9EQVRBICAgICAgICAgICAqUHJpdmF0ZSwNCj4gKyAgSU4gRFdfTU1DX0hD X1RSQiAgICAgICAgICAgICAgICAgICAgKlRyYg0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TRF9N TUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICpQYWNrZXQ7DQo+ICsgIFVJTlROICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIERldkJhc2U7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIENtZDsNCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTW1jU3RhdHVzOw0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJbnRTdGF0dXM7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFy Z3VtZW50Ow0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnJNYXNr Ow0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lb3V0Ow0KPiAr DQo+ICsgIFBhY2tldCA9IFRyYi0+UGFja2V0Ow0KPiArICBEZXZCYXNlID0gVHJiLT5Qcml2YXRl LT5EZXZCYXNlOw0KPiArDQo+ICsgIEFybURhdGFTeW5jaHJvbml6YXRpb25CYXJyaWVyICgpOw0K PiArICBBcm1JbnN0cnVjdGlvblN5bmNocm9uaXphdGlvbkJhcnJpZXIgKCk7DQo+ICsgIC8vDQo+ ICsgIC8vIFdhaXQgdW50aWwgTU1DIGlzIGlkbGUNCj4gKyAgLy8NCj4gKyAgZG8gew0KPiArICAg IE1tY1N0YXR1cyA9IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19NTUNfU1RBVFVTKTsNCj4gKyAg fSB3aGlsZSAoTW1jU3RhdHVzICYgRFdfTU1DX1NUU19EQVRBX0JVU1kpOw0KPiArDQo+ICsgIElu dFN0YXR1cyA9IH4wOw0KPiArICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19SSU5UU1RT LCBJbnRTdGF0dXMpOw0KPiArICBDbWQgPSBDTURfSU5ERVggKFBhY2tldC0+U2RNbWNDbWRCbGst PkNvbW1hbmRJbmRleCk7DQo+ICsgIGlmICgoUGFja2V0LT5TZE1tY0NtZEJsay0+Q29tbWFuZFR5 cGUgPT0gU2RNbWNDb21tYW5kVHlwZUFjKSB8fA0KPiArICAgICAgKFBhY2tldC0+U2RNbWNDbWRC bGstPkNvbW1hbmRUeXBlID09IFNkTW1jQ29tbWFuZFR5cGVBZHRjKSkgew0KPiArICAgIHN3aXRj aCAoUGFja2V0LT5TZE1tY0NtZEJsay0+Q29tbWFuZEluZGV4KSB7DQo+ICsgICAgY2FzZSBFTU1D X1NFVF9SRUxBVElWRV9BRERSOg0KPiArICAgICAgQ21kIHw9IEJJVF9DTURfU0VORF9JTklUOw0K PiArICAgICAgYnJlYWs7DQo+ICsgICAgY2FzZSBFTU1DX1NFTkRfU1RBVFVTOg0KPiArICAgICAg Q21kIHw9IEJJVF9DTURfV0FJVF9QUlZEQVRBX0NPTVBMRVRFOw0KPiArICAgICAgYnJlYWs7DQo+ ICsgICAgY2FzZSBFTU1DX1NUT1BfVFJBTlNNSVNTSU9OOg0KPiArICAgICAgQ21kIHw9IEJJVF9D TURfU1RPUF9BQk9SVF9DTUQ7DQo+ICsgICAgICBicmVhazsNCj4gKyAgICB9DQo+ICsgICAgaWYg KFBhY2tldC0+SW5UcmFuc2Zlckxlbmd0aCkgew0KPiArICAgICAgQ21kIHw9IEJJVF9DTURfV0FJ VF9QUlZEQVRBX0NPTVBMRVRFIHwgQklUX0NNRF9EQVRBX0VYUEVDVEVEIHwNCj4gKyAgICAgICAg ICAgICBCSVRfQ01EX1JFQUQ7DQo+ICsgICAgfSBlbHNlIGlmIChQYWNrZXQtPk91dFRyYW5zZmVy TGVuZ3RoKSB7DQo+ICsgICAgICBDbWQgfD0gQklUX0NNRF9XQUlUX1BSVkRBVEFfQ09NUExFVEUg fCBCSVRfQ01EX0RBVEFfRVhQRUNURUQgfA0KPiArICAgICAgICAgICAgIEJJVF9DTURfV1JJVEU7 DQo+ICsgICAgfQ0KPiArICAgIENtZCB8PSBCSVRfQ01EX1JFU1BPTlNFX0VYUEVDVCB8IEJJVF9D TURfQ0hFQ0tfUkVTUE9OU0VfQ1JDOw0KPiArICB9IGVsc2Ugew0KPiArICAgIHN3aXRjaCAoUGFj a2V0LT5TZE1tY0NtZEJsay0+Q29tbWFuZEluZGV4KSB7DQo+ICsgICAgY2FzZSBFTU1DX0dPX0lE TEVfU1RBVEU6DQo+ICsgICAgICBDbWQgfD0gQklUX0NNRF9TRU5EX0lOSVQ7DQo+ICsgICAgICBi cmVhazsNCj4gKyAgICBjYXNlIEVNTUNfU0VORF9PUF9DT05EOg0KPiArICAgICAgQ21kIHw9IEJJ VF9DTURfUkVTUE9OU0VfRVhQRUNUOw0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgY2FzZSBFTU1D X0FMTF9TRU5EX0NJRDoNCj4gKyAgICAgIENtZCB8PSBCSVRfQ01EX1JFU1BPTlNFX0VYUEVDVCB8 IEJJVF9DTURfTE9OR19SRVNQT05TRSB8DQo+ICsgICAgICAgICAgICAgQklUX0NNRF9DSEVDS19S RVNQT05TRV9DUkMgfCBCSVRfQ01EX1NFTkRfSU5JVDsNCj4gKyAgICAgIGJyZWFrOw0KPiArICAg IH0NCj4gKyAgfQ0KPiArICBzd2l0Y2ggKFBhY2tldC0+U2RNbWNDbWRCbGstPlJlc3BvbnNlVHlw ZSkgew0KPiArICBjYXNlIFNkTW1jUmVzcG9uc2VUeXBlUjI6DQo+ICsgICAgQ21kIHw9IEJJVF9D TURfUkVTUE9OU0VfRVhQRUNUIHwgQklUX0NNRF9DSEVDS19SRVNQT05TRV9DUkMgfA0KPiArICAg ICAgICAgICBCSVRfQ01EX0xPTkdfUkVTUE9OU0U7DQo+ICsgICAgYnJlYWs7DQo+ICsgIGNhc2Ug U2RNbWNSZXNwb25zZVR5cGVSMzoNCj4gKyAgICBDbWQgfD0gQklUX0NNRF9SRVNQT05TRV9FWFBF Q1Q7DQo+ICsgICAgYnJlYWs7DQo+ICsgIH0NCj4gKyAgQ21kIHw9IEJJVF9DTURfVVNFX0hPTERf UkVHIHwgQklUX0NNRF9TVEFSVDsNCj4gKw0KPiArICBBcmd1bWVudCA9IFBhY2tldC0+U2RNbWND bWRCbGstPkNvbW1hbmRBcmd1bWVudDsNCj4gKyAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19N TUNfQ01EQVJHLCBBcmd1bWVudCk7DQo+ICsNCj4gKyAgQXJtRGF0YVN5bmNocm9uaXphdGlvbkJh cnJpZXIgKCk7DQo+ICsgIEFybUluc3RydWN0aW9uU3luY2hyb25pemF0aW9uQmFycmllciAoKTsN Cj4gKw0KPiArICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19DTUQsIENtZCk7DQo+ICsg IEFybURhdGFTeW5jaHJvbml6YXRpb25CYXJyaWVyICgpOw0KPiArICBBcm1JbnN0cnVjdGlvblN5 bmNocm9uaXphdGlvbkJhcnJpZXIgKCk7DQo+ICsNCj4gKyAgRXJyTWFzayA9IERXX01NQ19JTlRf RUJFIHwgRFdfTU1DX0lOVF9ITEUgfCBEV19NTUNfSU5UX1JUTyB8DQo+ICsgICAgICAgICAgICBE V19NTUNfSU5UX1JDUkMgfCBEV19NTUNfSU5UX1JFOw0KPiArICBFcnJNYXNrIHw9IERXX01NQ19J TlRfRENSQyB8IERXX01NQ19JTlRfRFJUIHwgRFdfTU1DX0lOVF9TQkU7DQo+ICsgIGRvIHsNCj4g KyAgICBUaW1lb3V0ID0gMTAwMDA7DQo+ICsgICAgaWYgKC0tVGltZW91dCA9PSAwKSB7DQo+ICsg ICAgICBicmVhazsNCj4gKyAgICB9DQo+ICsgICAgSW50U3RhdHVzID0gTW1pb1JlYWQzMiAoRGV2 QmFzZSArIERXX01NQ19SSU5UU1RTKTsNCj4gKyAgICBpZiAoSW50U3RhdHVzICYgRXJyTWFzaykg ew0KPiArICAgICAgcmV0dXJuIEVGSV9ERVZJQ0VfRVJST1I7DQo+ICsgICAgfQ0KPiArICAgIGlm IChUcmItPkRhdGFMZW4gJiYgKChJbnRTdGF0dXMgJiBEV19NTUNfSU5UX0RUTykgPT0gMCkpIHsN Cj4gKyAgICAgIC8vDQo+ICsgICAgICAvLyBUcmFuc2ZlciBOb3QgRG9uZQ0KPiArICAgICAgLy8N Cj4gKyAgICAgIE1pY3JvU2Vjb25kRGVsYXkgKDEwKTsNCj4gKyAgICAgIGNvbnRpbnVlOw0KPiAr ICAgIH0NCj4gKyAgICBNaWNyb1NlY29uZERlbGF5ICgxMCk7DQo+ICsgIH0gd2hpbGUgKCEoSW50 U3RhdHVzICYgRFdfTU1DX0lOVF9DTURfRE9ORSkpOw0KPiArICBzd2l0Y2ggKFBhY2tldC0+U2RN bWNDbWRCbGstPlJlc3BvbnNlVHlwZSkgew0KPiArICAgIGNhc2UgU2RNbWNSZXNwb25zZVR5cGVS MToNCj4gKyAgICBjYXNlIFNkTW1jUmVzcG9uc2VUeXBlUjFiOg0KPiArICAgIGNhc2UgU2RNbWNS ZXNwb25zZVR5cGVSMzoNCj4gKyAgICBjYXNlIFNkTW1jUmVzcG9uc2VUeXBlUjQ6DQo+ICsgICAg Y2FzZSBTZE1tY1Jlc3BvbnNlVHlwZVI1Og0KPiArICAgICAgUGFja2V0LT5TZE1tY1N0YXR1c0Js ay0+UmVzcDAgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX1JFU1AwKTsNCj4gKyAgICAg IGJyZWFrOw0KPiArICAgIGNhc2UgU2RNbWNSZXNwb25zZVR5cGVSMjoNCj4gKyAgICAgIFBhY2tl dC0+U2RNbWNTdGF0dXNCbGstPlJlc3AwID0gTW1pb1JlYWQzMiAoRGV2QmFzZSArIERXX01NQ19S RVNQMCk7DQo+ICsgICAgICBQYWNrZXQtPlNkTW1jU3RhdHVzQmxrLT5SZXNwMSA9IE1taW9SZWFk MzIgKERldkJhc2UgKyBEV19NTUNfUkVTUDEpOw0KPiArICAgICAgUGFja2V0LT5TZE1tY1N0YXR1 c0Jsay0+UmVzcDIgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX1JFU1AyKTsNCj4gKyAg ICAgIFBhY2tldC0+U2RNbWNTdGF0dXNCbGstPlJlc3AzID0gTW1pb1JlYWQzMiAoRGV2QmFzZSAr IERXX01NQ19SRVNQMyk7DQo+ICsgICAgICBicmVhazsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ ICsgIC8vIFRoZSB3b3JrYXJvdW5kIG9uIEVNTUNfU0VORF9DU0QgaXMgdXNlZCB0byBiZSBjb21w YXRpYmxlIHdpdGggU0RIQy4NCj4gKyAgLy8NCj4gKyAgaWYgKFBhY2tldC0+U2RNbWNDbWRCbGst PkNvbW1hbmRJbmRleCA9PSBFTU1DX1NFTkRfQ1NEKSB7DQo+ICsgICAgew0KPiArICAgICAgVUlO VDMyICAgQnVmWzRdOw0KPiArICAgICAgWmVyb01lbSAoQnVmLCBzaXplb2YgKEJ1ZikpOw0KPiAr ICAgICAgQ29weU1lbSAoDQo+ICsgICAgICAgIChVSU5UOCAqKUJ1ZiwNCj4gKyAgICAgICAgKFVJ TlQ4ICopJlBhY2tldC0+U2RNbWNTdGF0dXNCbGstPlJlc3AwICsgMSwNCj4gKyAgICAgICAgc2l6 ZW9mIChCdWYpIC0gMQ0KPiArICAgICAgICApOw0KPiArICAgICAgQ29weU1lbSAoDQo+ICsgICAg ICAgIChVSU5UOCAqKSZQYWNrZXQtPlNkTW1jU3RhdHVzQmxrLT5SZXNwMCwNCj4gKyAgICAgICAg KFVJTlQ4ICopQnVmLA0KPiArICAgICAgICBzaXplb2YgKEJ1ZikgLSAxDQo+ICsgICAgICAgICk7 DQo+ICsgICAgfQ0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiArfQ0K PiArDQo+ICtFRklfU1RBVFVTDQo+ICtEd1NkRXhlY1RyYiAoDQo+ICsgIElOIERXX01NQ19IQ19Q UklWQVRFX0RBVEEgICAgICAgICAgICpQcml2YXRlLA0KPiArICBJTiBEV19NTUNfSENfVFJCICAg ICAgICAgICAgICAgICAgICAqVHJiDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NEX01NQ19QQVNT X1RIUlVfQ09NTUFORF9QQUNLRVQgKlBhY2tldDsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRGV2QmFzZTsNCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgQ21kOw0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN bWNTdGF0dXM7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFN0 YXR1czsNCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJndW1lbnQ7 DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVyck1hc2s7DQo+ICsg IFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVvdXQ7DQo+ICsgIFVJTlQz MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElkc3RzOw0KPiArICBVSU5UMzIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBCeXRDbnQ7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEJsa1NpemU7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAg ICAgICAgICAgIFN0YXR1czsNCj4gKw0KPiArICBQYWNrZXQgPSBUcmItPlBhY2tldDsNCj4gKyAg RGV2QmFzZSAgPSBUcmItPlByaXZhdGUtPkRldkJhc2U7DQo+ICsNCj4gKyAgQXJtRGF0YVN5bmNo cm9uaXphdGlvbkJhcnJpZXIgKCk7DQo+ICsgIEFybUluc3RydWN0aW9uU3luY2hyb25pemF0aW9u QmFycmllciAoKTsNCj4gKyAgLy8NCj4gKyAgLy8gV2FpdCB1bnRpbCBNTUMgaXMgaWRsZQ0KPiAr ICAvLw0KPiArICBkbyB7DQo+ICsgICAgTW1jU3RhdHVzID0gTW1pb1JlYWQzMiAoRGV2QmFzZSAr IERXX01NQ19TVEFUVVMpOw0KPiArICB9IHdoaWxlIChNbWNTdGF0dXMgJiBEV19NTUNfU1RTX0RB VEFfQlVTWSk7DQo+ICsNCj4gKyAgSW50U3RhdHVzID0gfjA7DQo+ICsgIE1taW9Xcml0ZTMyIChE ZXZCYXNlICsgRFdfTU1DX1JJTlRTVFMsIEludFN0YXR1cyk7DQo+ICsgIENtZCA9IENNRF9JTkRF WCAoUGFja2V0LT5TZE1tY0NtZEJsay0+Q29tbWFuZEluZGV4KTsNCj4gKyAgaWYgKChQYWNrZXQt PlNkTW1jQ21kQmxrLT5Db21tYW5kVHlwZSA9PSBTZE1tY0NvbW1hbmRUeXBlQWMpIHx8DQo+ICsg ICAgICAoUGFja2V0LT5TZE1tY0NtZEJsay0+Q29tbWFuZFR5cGUgPT0gU2RNbWNDb21tYW5kVHlw ZUFkdGMpKSB7DQo+ICsgICAgc3dpdGNoIChQYWNrZXQtPlNkTW1jQ21kQmxrLT5Db21tYW5kSW5k ZXgpIHsNCj4gKyAgICBjYXNlIFNEX1NFVF9SRUxBVElWRV9BRERSOg0KPiArICAgICAgQ21kIHw9 IEJJVF9DTURfU0VORF9JTklUOw0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgY2FzZSBTRF9TVE9Q X1RSQU5TTUlTU0lPTjoNCj4gKyAgICAgIENtZCB8PSBCSVRfQ01EX1NUT1BfQUJPUlRfQ01EOw0K PiArICAgICAgYnJlYWs7DQo+ICsgICAgY2FzZSBTRF9TRU5EX1NDUjoNCj4gKyAgICAgIFRyYi0+ VXNlQkUgPSBUUlVFOw0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArICAgIGlmIChQYWNr ZXQtPkluVHJhbnNmZXJMZW5ndGgpIHsNCj4gKyAgICAgIENtZCB8PSBCSVRfQ01EX1dBSVRfUFJW REFUQV9DT01QTEVURSB8IEJJVF9DTURfREFUQV9FWFBFQ1RFRCB8DQo+ICsgICAgICAgICAgICAg QklUX0NNRF9SRUFEOw0KPiArICAgIH0gZWxzZSBpZiAoUGFja2V0LT5PdXRUcmFuc2Zlckxlbmd0 aCkgew0KPiArICAgICAgQ21kIHw9IEJJVF9DTURfV0FJVF9QUlZEQVRBX0NPTVBMRVRFIHwgQklU X0NNRF9EQVRBX0VYUEVDVEVEIHwNCj4gKyAgICAgICAgICAgICBCSVRfQ01EX1dSSVRFOw0KPiAr ICAgIH0NCj4gKyAgICBDbWQgfD0gQklUX0NNRF9SRVNQT05TRV9FWFBFQ1QgfCBCSVRfQ01EX0NI RUNLX1JFU1BPTlNFX0NSQyB8DQo+ICsgICAgICAgICAgIEJJVF9DTURfU0VORF9BVVRPX1NUT1A7 DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAgc3dpdGNoIChQYWNrZXQtPlNkTW1jQ21kQmxrLT5Db21t YW5kSW5kZXgpIHsNCj4gKyAgICBjYXNlIFNEX0dPX0lETEVfU1RBVEU6DQo+ICsgICAgICBDbWQg fD0gQklUX0NNRF9TRU5EX0lOSVQ7DQo+ICsgICAgICBicmVhazsNCj4gKyAgICB9DQo+ICsgIH0N Cj4gKyAgc3dpdGNoIChQYWNrZXQtPlNkTW1jQ21kQmxrLT5SZXNwb25zZVR5cGUpIHsNCj4gKyAg Y2FzZSBTZE1tY1Jlc3BvbnNlVHlwZVIyOg0KPiArICAgIENtZCB8PSBCSVRfQ01EX1JFU1BPTlNF X0VYUEVDVCB8IEJJVF9DTURfQ0hFQ0tfUkVTUE9OU0VfQ1JDIHwNCj4gKyAgICAgICAgICAgQklU X0NNRF9MT05HX1JFU1BPTlNFOw0KPiArICAgIGJyZWFrOw0KPiArICBjYXNlIFNkTW1jUmVzcG9u c2VUeXBlUjM6DQo+ICsgICAgQ21kIHw9IEJJVF9DTURfUkVTUE9OU0VfRVhQRUNUOw0KPiArICAg IGJyZWFrOw0KPiArICBjYXNlIFNkTW1jUmVzcG9uc2VUeXBlUjFiOg0KPiArICBjYXNlIFNkTW1j UmVzcG9uc2VUeXBlUjQ6DQo+ICsgIGNhc2UgU2RNbWNSZXNwb25zZVR5cGVSNjoNCj4gKyAgY2Fz ZSBTZE1tY1Jlc3BvbnNlVHlwZVI3Og0KPiArICAgIENtZCB8PSBCSVRfQ01EX1JFU1BPTlNFX0VY UEVDVCB8IEJJVF9DTURfQ0hFQ0tfUkVTUE9OU0VfQ1JDOw0KPiArICAgIGJyZWFrOw0KPiArICB9 DQo+ICsgIENtZCB8PSBCSVRfQ01EX1VTRV9IT0xEX1JFRyB8IEJJVF9DTURfU1RBUlQ7DQo+ICsN Cj4gKyAgaWYgKFRyYi0+VXNlRmlmbyA9PSBUUlVFKSB7DQo+ICsgICAgQnl0Q250ID0gVHJiLT5S ZWFkID8gUGFja2V0LT5JblRyYW5zZmVyTGVuZ3RoIDogUGFja2V0LT5PdXRUcmFuc2Zlckxlbmd0 aDsNCj4gKyAgICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19CWVRDTlQsIEJ5dENudCk7 DQo+ICsgICAgaWYgKFRyYi0+UmVhZCkgew0KPiArICAgICAgaWYgKFBhY2tldC0+SW5UcmFuc2Zl ckxlbmd0aCA+IERXX01NQ19CTE9DS19TSVpFKSB7DQo+ICsgICAgICAgIEJsa1NpemUgPSBEV19N TUNfQkxPQ0tfU0laRTsNCj4gKyAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgIEJsa1NpemUgPSBQ YWNrZXQtPkluVHJhbnNmZXJMZW5ndGg7DQo+ICsgICAgICB9DQo+ICsgICAgfQ0KPiArICAgIGVs c2Ugew0KPiArICAgICAgaWYgKFBhY2tldC0+T3V0VHJhbnNmZXJMZW5ndGggPiBEV19NTUNfQkxP Q0tfU0laRSkgew0KPiArICAgICAgICBCbGtTaXplID0gRFdfTU1DX0JMT0NLX1NJWkU7DQo+ICsg ICAgICB9IGVsc2Ugew0KPiArICAgICAgICBCbGtTaXplID0gUGFja2V0LT5PdXRUcmFuc2Zlckxl bmd0aDsNCj4gKyAgICAgIH0NCj4gKyAgICB9DQo+ICsNCj4gKyAgICBNbWlvV3JpdGUzMiAoRGV2 QmFzZSArIERXX01NQ19CTEtTSVosIEJsa1NpemUpOw0KPiArICB9DQo+ICsNCj4gKyAgQXJndW1l bnQgPSBQYWNrZXQtPlNkTW1jQ21kQmxrLT5Db21tYW5kQXJndW1lbnQ7DQo+ICsgIE1taW9Xcml0 ZTMyIChEZXZCYXNlICsgRFdfTU1DX0NNREFSRywgQXJndW1lbnQpOw0KPiArICBBcm1EYXRhU3lu Y2hyb25pemF0aW9uQmFycmllciAoKTsNCj4gKyAgQXJtSW5zdHJ1Y3Rpb25TeW5jaHJvbml6YXRp b25CYXJyaWVyICgpOw0KPiArICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19DTUQsIENt ZCk7DQo+ICsgIEFybURhdGFTeW5jaHJvbml6YXRpb25CYXJyaWVyICgpOw0KPiArICBBcm1JbnN0 cnVjdGlvblN5bmNocm9uaXphdGlvbkJhcnJpZXIgKCk7DQo+ICsNCj4gKyAgRXJyTWFzayA9IERX X01NQ19JTlRfRUJFIHwgRFdfTU1DX0lOVF9ITEUgfCBEV19NTUNfSU5UX1JUTyB8DQo+ICsgICAg ICAgICAgICBEV19NTUNfSU5UX1JDUkMgfCBEV19NTUNfSU5UX1JFOw0KPiArICBFcnJNYXNrIHw9 IERXX01NQ19JTlRfRFJUIHwgRFdfTU1DX0lOVF9TQkU7DQo+ICsgIGlmIChQYWNrZXQtPkluVHJh bnNmZXJMZW5ndGggfHwgUGFja2V0LT5PdXRUcmFuc2Zlckxlbmd0aCkgew0KPiArICAgIEVyck1h c2sgfD0gRFdfTU1DX0lOVF9EQ1JDOw0KPiArICB9DQo+ICsgIGlmIChUcmItPlVzZUZpZm8gPT0g VFJVRSkgew0KPiArICAgIFN0YXR1cyA9IFRyYW5zZmVyRmlmbyAoVHJiKTsNCj4gKyAgICBpZiAo RUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgICByZXR1cm4gU3RhdHVzOw0KPiArICAgIH0N Cj4gKyAgfSBlbHNlIHsNCj4gKyAgICBUaW1lb3V0ID0gMTAwMDA7DQo+ICsgICAgZG8gew0KPiAr ICAgICAgaWYgKC0tVGltZW91dCA9PSAwKSB7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArICAgICAg fQ0KPiArICAgICAgSW50U3RhdHVzID0gTW1pb1JlYWQzMiAoRGV2QmFzZSArIERXX01NQ19SSU5U U1RTKTsNCj4gKyAgICAgIGlmIChJbnRTdGF0dXMgJiBFcnJNYXNrKSB7DQo+ICsgICAgICAgIHJl dHVybiBFRklfREVWSUNFX0VSUk9SOw0KPiArICAgICAgfQ0KPiArICAgICAgaWYgKFRyYi0+RGF0 YUxlbiAmJiAoKEludFN0YXR1cyAmIERXX01NQ19JTlRfRFRPKSA9PSAwKSkgew0KPiArICAgICAg ICAvLw0KPiArICAgICAgICAvLyBUcmFuc2ZlciBub3QgRG9uZQ0KPiArICAgICAgICAvLw0KPiAr ICAgICAgICBNaWNyb1NlY29uZERlbGF5ICgxMCk7DQo+ICsgICAgICAgIGNvbnRpbnVlOw0KPiAr ICAgICAgfQ0KPiArICAgICAgTWljcm9TZWNvbmREZWxheSAoMTApOw0KPiArICAgIH0gd2hpbGUg KCEoSW50U3RhdHVzICYgRFdfTU1DX0lOVF9DTURfRE9ORSkpOw0KPiArICAgIGlmIChQYWNrZXQt PkluVHJhbnNmZXJMZW5ndGgpIHsNCj4gKyAgICAgIGRvIHsNCj4gKyAgICAgICAgSWRzdHMgPSBN bWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX0lEU1RTKTsNCj4gKyAgICAgIH0gd2hpbGUgKChJ ZHN0cyAmIERXX01NQ19JRFNUU19SSSkgPT0gMCk7DQo+ICsgICAgICBTdGF0dXMgPSBEd01tY0hj U3RvcERtYSAoUHJpdmF0ZSwgVHJiKTsNCj4gKyAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykp IHsNCj4gKyAgICAgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgICAgIH0NCj4gKyAgICB9IGVsc2Ug aWYgKFBhY2tldC0+T3V0VHJhbnNmZXJMZW5ndGgpIHsNCj4gKyAgICAgIGRvIHsNCj4gKyAgICAg ICAgSWRzdHMgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX0lEU1RTKTsNCj4gKyAgICAg IH0gd2hpbGUgKChJZHN0cyAmIERXX01NQ19JRFNUU19USSkgPT0gMCk7DQo+ICsgICAgICBTdGF0 dXMgPSBEd01tY0hjU3RvcERtYSAoUHJpdmF0ZSwgVHJiKTsNCj4gKyAgICAgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCj4gKyAgICAgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgICAgIH0NCj4g KyAgICB9IC8qIFBhY2tldC0+SW5UcmFuc2Zlckxlbmd0aCAqLw0KPiArICB9IC8qIFVzZUZpZm8g Ki8NCj4gKyAgc3dpdGNoIChQYWNrZXQtPlNkTW1jQ21kQmxrLT5SZXNwb25zZVR5cGUpIHsNCj4g KyAgICBjYXNlIFNkTW1jUmVzcG9uc2VUeXBlUjE6DQo+ICsgICAgY2FzZSBTZE1tY1Jlc3BvbnNl VHlwZVIxYjoNCj4gKyAgICBjYXNlIFNkTW1jUmVzcG9uc2VUeXBlUjM6DQo+ICsgICAgY2FzZSBT ZE1tY1Jlc3BvbnNlVHlwZVI0Og0KPiArICAgIGNhc2UgU2RNbWNSZXNwb25zZVR5cGVSNToNCj4g KyAgICBjYXNlIFNkTW1jUmVzcG9uc2VUeXBlUjY6DQo+ICsgICAgY2FzZSBTZE1tY1Jlc3BvbnNl VHlwZVI3Og0KPiArICAgICAgUGFja2V0LT5TZE1tY1N0YXR1c0Jsay0+UmVzcDAgPSBNbWlvUmVh ZDMyIChEZXZCYXNlICsgRFdfTU1DX1JFU1AwKTsNCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIGNh c2UgU2RNbWNSZXNwb25zZVR5cGVSMjoNCj4gKyAgICAgIFBhY2tldC0+U2RNbWNTdGF0dXNCbGst PlJlc3AwID0gTW1pb1JlYWQzMiAoRGV2QmFzZSArIERXX01NQ19SRVNQMCk7DQo+ICsgICAgICBQ YWNrZXQtPlNkTW1jU3RhdHVzQmxrLT5SZXNwMSA9IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19N TUNfUkVTUDEpOw0KPiArICAgICAgUGFja2V0LT5TZE1tY1N0YXR1c0Jsay0+UmVzcDIgPSBNbWlv UmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX1JFU1AyKTsNCj4gKyAgICAgIFBhY2tldC0+U2RNbWNT dGF0dXNCbGstPlJlc3AzID0gTW1pb1JlYWQzMiAoRGV2QmFzZSArIERXX01NQ19SRVNQMyk7DQo+ ICsgICAgICBicmVhazsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIFRoZSB3b3JrYXJv dW5kIG9uIFNEX1NFTkRfQ1NEIGlzIHVzZWQgdG8gYmUgY29tcGF0aWJsZSB3aXRoIFNESEMuDQo+ ICsgIC8vDQo+ICsgIGlmIChQYWNrZXQtPlNkTW1jQ21kQmxrLT5Db21tYW5kSW5kZXggPT0gU0Rf U0VORF9DU0QpIHsNCj4gKyAgICB7DQo+ICsgICAgICBVSU5UMzIgICBCdWZbNF07DQo+ICsgICAg ICBaZXJvTWVtIChCdWYsIHNpemVvZiAoQnVmKSk7DQo+ICsgICAgICBDb3B5TWVtICgNCj4gKyAg ICAgICAgKFVJTlQ4ICopQnVmLA0KPiArICAgICAgICAoVUlOVDggKikmUGFja2V0LT5TZE1tY1N0 YXR1c0Jsay0+UmVzcDAgKyAxLA0KPiArICAgICAgICBzaXplb2YgKEJ1ZikgLSAxDQo+ICsgICAg ICAgICk7DQo+ICsgICAgICBDb3B5TWVtICgNCj4gKyAgICAgICAgKFVJTlQ4ICopJlBhY2tldC0+ U2RNbWNTdGF0dXNCbGstPlJlc3AwLA0KPiArICAgICAgICAoVUlOVDggKilCdWYsDQo+ICsgICAg ICAgIHNpemVvZiAoQnVmKSAtIDENCj4gKyAgICAgICAgKTsNCj4gKyAgICB9DQo+ICsgIH0NCj4g Kw0KPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBFeGVj dXRlIHRoZSBzcGVjaWZpZWQgVFJCLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gUHJpdmF0ZSAgICAg ICAgQSBwb2ludGVyIHRvIHRoZSBEV19NTUNfSENfUFJJVkFURV9EQVRBIGluc3RhbmNlLg0KPiAr ICBAcGFyYW1baW5dIFRyYiAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBEV19NTUNfSENf VFJCIGluc3RhbmNlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIFRS QiBpcyBzZW50IHRvIGhvc3QgY29udHJvbGxlciBzdWNjZXNzZnVsbHkuDQo+ICsgIEByZXR2YWwg T3RoZXJzICAgICAgICAgICAgU29tZSBlcnJvcyBoYXBwZW4gd2hlbiBzZW5kaW5nIHRoaXMgcmVx dWVzdCB0byB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0IGNvbnRyb2xs ZXIuDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRHdNbWNFeGVjVHJiICgNCj4gKyAg SU4gRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAgKlByaXZhdGUsDQo+ICsgIElOIERX X01NQ19IQ19UUkIgICAgICAgICAgICAgICAgICAgICpUcmINCj4gKyAgKQ0KPiArew0KPiArICBF RklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsN Cj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvdDsNCj4gKw0KPiAr ICBTbG90ID0gVHJiLT5TbG90Ow0KPiArICBpZiAoUHJpdmF0ZS0+U2xvdFtTbG90XS5DYXJkVHlw ZSA9PSBFbW1jQ2FyZFR5cGUpIHsNCj4gKyAgICBTdGF0dXMgPSBEd0VtbWNFeGVjVHJiIChQcml2 YXRlLCBUcmIpOw0KPiArICB9IGVsc2UgaWYgKFByaXZhdGUtPlNsb3RbU2xvdF0uQ2FyZFR5cGUg PT0gU2RDYXJkVHlwZSkgew0KPiArICAgIFN0YXR1cyA9IER3U2RFeGVjVHJiIChQcml2YXRlLCBU cmIpOw0KPiArICB9IGVsc2Ugew0KPiArICAgIEFTU0VSVCAoMCk7DQo+ICsgIH0NCj4gKyAgcmV0 dXJuIFN0YXR1czsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENoZWNrIHRoZSBUUkIgZXhlY3V0 aW9uIHJlc3VsdC4NCj4gKw0KPiArICBAcGFyYW1baW5dIFByaXZhdGUgICAgICAgIEEgcG9pbnRl ciB0byB0aGUgRFdfTU1DX0hDX1BSSVZBVEVfREFUQSBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtW2lu XSBUcmIgICAgICAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hDX1RSQiBpbnN0YW5j ZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBUUkIgaXMgZXhlY3V0 ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiArICBAcmV0dmFsIEVGSV9OT1RfUkVBRFkgICAgIFRoZSBUUkIg aXMgbm90IGNvbXBsZXRlZCBmb3IgZXhlY3V0aW9uLg0KPiArICBAcmV0dmFsIE90aGVycyAgICAg ICAgICAgIFNvbWUgZXJyb3MgaGFwcGVuIHdoZW4gZXhlY3V0aW5nIHRoaXMgcmVxdWVzdC4NCj4g Kw0KPiArKiovDQo+ICtFRklfU1RBVFVTDQo+ICtEd01tY0NoZWNrVHJiUmVzdWx0ICgNCj4gKyAg SU4gRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAgKlByaXZhdGUsDQo+ICsgIElOIERX X01NQ19IQ19UUkIgICAgICAgICAgICAgICAgICAgICpUcmINCj4gKyAgKQ0KPiArew0KPiArICBF RklfU0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAqUGFja2V0Ow0KPiArICBVSU5UMzIg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZHN0czsNCj4gKyAgVUlOVE4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRGV2QmFzZTsNCj4gKw0KPiArICBEZXZCYXNlID0gUHJpdmF0 ZS0+RGV2QmFzZTsNCj4gKyAgUGFja2V0ICA9IFRyYi0+UGFja2V0Ow0KPiArICBpZiAoVHJiLT5V c2VGaWZvID09IFRSVUUpIHsNCj4gKyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICsgIH0NCj4g KyAgaWYgKFBhY2tldC0+SW5UcmFuc2Zlckxlbmd0aCkgew0KPiArICAgIGRvIHsNCj4gKyAgICAg IElkc3RzID0gTW1pb1JlYWQzMiAoRGV2QmFzZSArIERXX01NQ19JRFNUUyk7DQo+ICsgICAgfSB3 aGlsZSAoKElkc3RzICYgQklUMSkgPT0gMCk7DQo+ICsgIH0gZWxzZSBpZiAoUGFja2V0LT5PdXRU cmFuc2Zlckxlbmd0aCkgew0KPiArICAgIGRvIHsNCj4gKyAgICAgIElkc3RzID0gTW1pb1JlYWQz MiAoRGV2QmFzZSArIERXX01NQ19JRFNUUyk7DQo+ICsgICAgfSB3aGlsZSAoKElkc3RzICYgQklU MCkgPT0gMCk7DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiAr ICB9DQo+ICsgIElkc3RzID0gfjA7DQo+ICsgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1D X0lEU1RTLCBJZHN0cyk7DQo+ICsNCj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiArfQ0KPiAr DQo+ICsvKioNCj4gKyAgV2FpdCBmb3IgdGhlIFRSQiBleGVjdXRpb24gcmVzdWx0Lg0KPiArDQo+ ICsgIEBwYXJhbVtpbl0gUHJpdmF0ZSAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBEV19NTUNfSENf UFJJVkFURV9EQVRBIGluc3RhbmNlLg0KPiArICBAcGFyYW1baW5dIFRyYiAgICAgICAgICAgIFRo ZSBwb2ludGVyIHRvIHRoZSBEV19NTUNfSENfVFJCIGluc3RhbmNlLg0KPiArDQo+ICsgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIFRSQiBpcyBleGVjdXRlZCBzdWNjZXNzZnVsbHkuDQo+ ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgU29tZSBlcnJvcyBoYXBwZW4gd2hlbiBleGVj dXRpbmcgdGhpcyByZXF1ZXN0Lg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0R3TW1j V2FpdFRyYlJlc3VsdCAoDQo+ICsgIElOIERXX01NQ19IQ19QUklWQVRFX0RBVEEgICAgICAgICAg ICpQcml2YXRlLA0KPiArICBJTiBEV19NTUNfSENfVFJCICAgICAgICAgICAgICAgICAgICAqVHJi DQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAg U3RhdHVzOw0KPiArICBFRklfU0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAqUGFja2V0 Ow0KPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lb3V0Ow0KPiAr ICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmZpbml0ZVdhaXQ7DQo+ICsN Cj4gKyAgUGFja2V0ID0gVHJiLT5QYWNrZXQ7DQo+ICsgIC8vDQo+ICsgIC8vIFdhaXQgQ29tbWFu ZCBDb21wbGV0ZSBJbnRlcnJ1cHQgU3RhdHVzIGJpdCBpbiBOb3JtYWwgSW50ZXJydXB0IFN0YXR1 cw0KPiArICAvLyBSZWdpc3Rlcg0KPiArICAvLw0KPiArICBUaW1lb3V0ID0gUGFja2V0LT5UaW1l b3V0Ow0KPiArICBpZiAoVGltZW91dCA9PSAwKSB7DQo+ICsgICAgSW5maW5pdGVXYWl0ID0gVFJV RTsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICBJbmZpbml0ZVdhaXQgPSBGQUxTRTsNCj4gKyAgfQ0K PiArDQo+ICsgIHdoaWxlIChJbmZpbml0ZVdhaXQgfHwgKFRpbWVvdXQgPiAwKSkgew0KPiArICAg IC8vDQo+ICsgICAgLy8gQ2hlY2sgVHJiIGV4ZWN1dGlvbiByZXN1bHQgYnkgcmVhZGluZyBOb3Jt YWwgSW50ZXJydXB0IFN0YXR1cyByZWdpc3Rlci4NCj4gKyAgICAvLw0KPiArICAgIFN0YXR1cyA9 IER3TW1jQ2hlY2tUcmJSZXN1bHQgKFByaXZhdGUsIFRyYik7DQo+ICsgICAgaWYgKFN0YXR1cyAh PSBFRklfTk9UX1JFQURZKSB7DQo+ICsgICAgICByZXR1cm4gU3RhdHVzOw0KPiArICAgIH0NCj4g KyAgICAvLw0KPiArICAgIC8vIFN0YWxsIGZvciAxIG1pY3Jvc2Vjb25kLg0KPiArICAgIC8vDQo+ ICsgICAgZ0JTLT5TdGFsbCAoMSk7DQo+ICsNCj4gKyAgICBUaW1lb3V0LS07DQo+ICsgIH0NCj4g Kw0KPiArICByZXR1cm4gRUZJX1RJTUVPVVQ7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9FbWJlZGRl ZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRW1tY0RldmljZS5jIGIvRW1iZWRkZWRQa2cvRHJpdmVy cy9Ed01tY0hjRHhlL0VtbWNEZXZpY2UuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eCAwMDAwMDAwMDAwMDAuLmI3YTg2ODhjNGQyZQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL0Vt YmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9FbW1jRGV2aWNlLmMNCj4gQEAgLTAsMCArMSwx MDQyIEBADQo+ICsvKiogQGZpbGUNCj4gKyAgVGhpcyBmaWxlIHByb3ZpZGVzIHNvbWUgaGVscGVy IGZ1bmN0aW9ucyB3aGljaCBhcmUgc3BlY2lmaWMgZm9yIEVNTUMgZGV2aWNlLg0KPiArDQo+ICsg IENvcHlyaWdodCAoYykgMjAxNSAtIDIwMjEsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz IHJlc2VydmVkLjxCUj4NCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE4LCBMaW5hcm8uIEFsbCByaWdo dHMgcmVzZXJ2ZWQuPEJSPg0KPiArDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFu eWluZyBtYXRlcmlhbHMgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZQ0KPiArICB1bmRl ciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlIHdoaWNoIGFjY29t cGFuaWVzIHRoaXMNCj4gKyAgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGlj ZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2Vz L2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVO REVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArICBXSVRIT1VUIFdB UlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBP UiBJTVBMSUVELg0KPiArDQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRh cmQvRW1tYy5oPg0KPiArDQo+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+DQo+ ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVm aUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ICsNCj4gKyNpbmNsdWRlICJEd01tY0hjRHhlLmgi DQo+ICsNCj4gKyNkZWZpbmUgRU1NQ19HRVRfU1RBVEUoeCkgICAgICAgICAgICAgICAgICAgKCgo eCkgPj4gOSkgJiAweGYpDQo+ICsjZGVmaW5lIEVNTUNfU1RBVEVfSURMRSAgICAgICAgICAgICAg ICAgICAgIDANCj4gKyNkZWZpbmUgRU1NQ19TVEFURV9SRUFEWSAgICAgICAgICAgICAgICAgICAg MQ0KPiArI2RlZmluZSBFTU1DX1NUQVRFX0lERU5UICAgICAgICAgICAgICAgICAgICAyDQo+ICsj ZGVmaW5lIEVNTUNfU1RBVEVfU1RCWSAgICAgICAgICAgICAgICAgICAgIDMNCj4gKyNkZWZpbmUg RU1NQ19TVEFURV9UUkFOICAgICAgICAgICAgICAgICAgICAgNA0KPiArI2RlZmluZSBFTU1DX1NU QVRFX0RBVEEgICAgICAgICAgICAgICAgICAgICA1DQo+ICsjZGVmaW5lIEVNTUNfU1RBVEVfUkNW ICAgICAgICAgICAgICAgICAgICAgIDYNCj4gKyNkZWZpbmUgRU1NQ19TVEFURV9QUkcgICAgICAg ICAgICAgICAgICAgICAgNw0KPiArI2RlZmluZSBFTU1DX1NUQVRFX0RJUyAgICAgICAgICAgICAg ICAgICAgICA4DQo+ICsjZGVmaW5lIEVNTUNfU1RBVEVfQlRTVCAgICAgICAgICAgICAgICAgICAg IDkNCj4gKyNkZWZpbmUgRU1NQ19TVEFURV9TTFAgICAgICAgICAgICAgICAgICAgICAgMTANCj4g Kw0KPiArI2RlZmluZSBFTU1DX0NNRDFfQ0FQQUNJVFlfTEVTU19USEFOXzJHQiAgICAweDAwRkY4 MDgwIC8vIENhcGFjaXR5IDw9IDJHQiwgYnl0ZSBhZGRyZXNzaW5nIHVzZWQNCj4gKyNkZWZpbmUg RU1NQ19DTUQxX0NBUEFDSVRZX0dSRUFURVJfVEhBTl8yR0IgMHg0MEZGODA4MCAvLyBDYXBhY2l0 eSA+IDJHQiwgNTEyLWJ5dGUgc2VjdG9yIGFkZHJlc3NpbmcgdXNlZA0KPiArDQo+ICsvKioNCj4g KyAgU2VuZCBjb21tYW5kIEdPX0lETEVfU1RBVEUgKENNRDAgd2l0aCBhcmd1bWVudCBvZiAweDAw MDAwMDAwKSB0byB0aGUgZGV2aWNlIHRvDQo+ICsgIG1ha2UgaXQgZ28gdG8gSWRsZSBTdGF0ZS4N Cj4gKw0KPiArICBSZWZlciB0byBFTU1DIEVsZWN0cmljYWwgU3RhbmRhcmQgU3BlYyA1LjEgU2Vj dGlvbiA2LjQgZm9yIGRldGFpbHMuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBQYXNzVGhydSAgICAg ICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gU2xvdCAg ICAgICAgICAgVGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJkIHRvIHNlbmQgdGhlIGNvbW1h bmQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0by4NCj4gKw0KPiArICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgIFRoZSBFTU1DIGRldmljZSBpcyByZXNldCBjb3JyZWN0bHkuDQo+ ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIGRldmljZSByZXNldCBmYWlscy4NCj4g Kw0KPiArKiovDQo+ICtFRklfU1RBVFVTDQo+ICtFbW1jUmVzZXQgKA0KPiArICBJTiBFRklfU0Rf TU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICpQYXNzVGhydQ0KPiArICApDQo+ICt7DQo+ICsg IEVGSV9TRF9NTUNfQ09NTUFORF9CTE9DSyAgICAgICAgICAgICAgU2RNbWNDbWRCbGs7DQo+ICsg IEVGSV9TRF9NTUNfU1RBVFVTX0JMT0NLICAgICAgICAgICAgICAgU2RNbWNTdGF0dXNCbGs7DQo+ ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICAgUGFja2V0Ow0KPiArICBF RklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gKw0KPiArICBa ZXJvTWVtICgmU2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsNCj4gKyAgWmVyb01l bSAoJlNkTW1jU3RhdHVzQmxrLCBzaXplb2YgKFNkTW1jU3RhdHVzQmxrKSk7DQo+ICsgIFplcm9N ZW0gKCZQYWNrZXQsIHNpemVvZiAoUGFja2V0KSk7DQo+ICsNCj4gKyAgUGFja2V0LlNkTW1jQ21k QmxrICAgID0gJlNkTW1jQ21kQmxrOw0KPiArICBQYWNrZXQuU2RNbWNTdGF0dXNCbGsgPSAmU2RN bWNTdGF0dXNCbGs7DQo+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9IERXX01NQ19IQ19HRU5F UklDX1RJTUVPVVQ7DQo+ICsNCj4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEluZGV4ID0gRU1NQ19H T19JRExFX1NUQVRFOw0KPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0NvbW1h bmRUeXBlQmM7DQo+ICsgIFNkTW1jQ21kQmxrLlJlc3BvbnNlVHlwZSA9IDA7DQo+ICsgIFNkTW1j Q21kQmxrLkNvbW1hbmRBcmd1bWVudCA9IDA7DQo+ICsNCj4gKyAgZ0JTLT5TdGFsbCAoMTAwMCk7 DQo+ICsNCj4gKyAgU3RhdHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBh Y2tldCwgTlVMTCk7DQo+ICsNCj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gK30NCj4gKw0KPiArLyoq DQo+ICsgIFNlbmQgY29tbWFuZCBTRU5EX09QX0NPTkQgdG8gdGhlIEVNTUMgZGV2aWNlIHRvIGdl dCB0aGUgZGF0YSBvZiB0aGUgT0NSDQo+ICsgIHJlZ2lzdGVyLg0KPiArDQo+ICsgIFJlZmVyIHRv IEVNTUMgRWxlY3RyaWNhbCBTdGFuZGFyZCBTcGVjIDUuMSBTZWN0aW9uIDYuNCBmb3IgZGV0YWls cy4NCj4gKw0KPiArICBAcGFyYW1baW5dICAgICAgUGFzc1RocnUgIEEgcG9pbnRlciB0byB0aGUg RUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtW2luLCBvdXRdIEFyZ3VtZW50ICBPbiBpbnB1dCwg dGhlIGFyZ3VtZW50IG9mIFNFTkRfT1BfQ09ORCBpcyB0byBzZW5kDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdG8gdGhlIGRldmljZS4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPbiBvdXRwdXQsIHRoZSBhcmd1bWVudCBpcyB0aGUgdmFsdWUgb2YgT0NSDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklf U1VDQ0VTUyAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiArICBAcmV0 dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ICsNCj4gKyoqLw0K PiArRUZJX1NUQVRVUw0KPiArRW1tY0dldE9jciAoDQo+ICsgIElOICAgICBFRklfU0RfTU1DX1BB U1NfVEhSVV9QUk9UT0NPTCAgKlBhc3NUaHJ1LA0KPiArICBJTiBPVVQgVUlOVDMyICAgICAgICAg ICAgICAgICAgICAgICAgICpBcmd1bWVudA0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TRF9NTUNf Q09NTUFORF9CTE9DSyAgICAgICAgICAgICAgU2RNbWNDbWRCbGs7DQo+ICsgIEVGSV9TRF9NTUNf U1RBVFVTX0JMT0NLICAgICAgICAgICAgICAgU2RNbWNTdGF0dXNCbGs7DQo+ICsgIEVGSV9TRF9N TUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICAgUGFja2V0Ow0KPiArICBFRklfU1RBVFVTICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gKw0KPiArICBaZXJvTWVtICgmU2RN bWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsNCj4gKyAgWmVyb01lbSAoJlNkTW1jU3Rh dHVzQmxrLCBzaXplb2YgKFNkTW1jU3RhdHVzQmxrKSk7DQo+ICsgIFplcm9NZW0gKCZQYWNrZXQs IHNpemVvZiAoUGFja2V0KSk7DQo+ICsNCj4gKyAgUGFja2V0LlNkTW1jQ21kQmxrICAgID0gJlNk TW1jQ21kQmxrOw0KPiArICBQYWNrZXQuU2RNbWNTdGF0dXNCbGsgPSAmU2RNbWNTdGF0dXNCbGs7 DQo+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9IERXX01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7 DQo+ICsNCj4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEluZGV4ID0gRU1NQ19TRU5EX09QX0NPTkQ7 DQo+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVCY3I7DQo+ ICsgIFNkTW1jQ21kQmxrLlJlc3BvbnNlVHlwZSA9IFNkTW1jUmVzcG9uc2VUeXBlUjM7DQo+ICsg IFNkTW1jQ21kQmxrLkNvbW1hbmRBcmd1bWVudCA9ICpBcmd1bWVudDsNCj4gKw0KPiArICBTdGF0 dXMgPSBQYXNzVGhydS0+UGFzc1RocnUgKFBhc3NUaHJ1LCAwLCAmUGFja2V0LCBOVUxMKTsNCj4g KyAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICAvLw0KPiArICAgIC8vIEZvciBk ZXRhaWxzLCByZWZlciB0byBTRCBIb3N0IENvbnRyb2xsZXIgU2ltcGxpZmllZCBTcGVjIDMuMCBU YWJsZSAyLTEyLg0KPiArICAgIC8vDQo+ICsgICAgKkFyZ3VtZW50ID0gU2RNbWNTdGF0dXNCbGsu UmVzcDA7DQo+ICsgIH0NCj4gKw0KPiArICByZXR1cm4gU3RhdHVzOw0KPiArfQ0KPiArDQo+ICsv KioNCj4gKyAgQnJvYWRjYXN0IGNvbW1hbmQgQUxMX1NFTkRfQ0lEIHRvIHRoZSBidXMgdG8gYXNr IGFsbCB0aGUgRU1NQyBkZXZpY2VzIHRvIHNlbmQNCj4gKyAgdGhlIGRhdGEgb2YgdGhlaXIgQ0lE IHJlZ2lzdGVycy4NCj4gKw0KPiArICBSZWZlciB0byBFTU1DIEVsZWN0cmljYWwgU3RhbmRhcmQg U3BlYyA1LjEgU2VjdGlvbiA2LjQgZm9yIGRldGFpbHMuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBQ YXNzVGhydSAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RP Q09MDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ICsNCj4gKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5 Lg0KPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRW1tY0dldEFsbENpZCAoDQo+ICsgIElOIEVG SV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAgICAgKlBhc3NUaHJ1DQo+ICsgICkNCj4gK3sN Cj4gKyAgRUZJX1NEX01NQ19DT01NQU5EX0JMT0NLICAgICAgICAgICAgICBTZE1tY0NtZEJsazsN Cj4gKyAgRUZJX1NEX01NQ19TVEFUVVNfQkxPQ0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1c0Js azsNCj4gKyAgRUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgICBQYWNrZXQ7DQo+ ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiArDQo+ ICsgIFplcm9NZW0gKCZTZE1tY0NtZEJsaywgc2l6ZW9mIChTZE1tY0NtZEJsaykpOw0KPiArICBa ZXJvTWVtICgmU2RNbWNTdGF0dXNCbGssIHNpemVvZiAoU2RNbWNTdGF0dXNCbGspKTsNCj4gKyAg WmVyb01lbSAoJlBhY2tldCwgc2l6ZW9mIChQYWNrZXQpKTsNCj4gKw0KPiArICBQYWNrZXQuU2RN bWNDbWRCbGsgICAgPSAmU2RNbWNDbWRCbGs7DQo+ICsgIFBhY2tldC5TZE1tY1N0YXR1c0JsayA9 ICZTZE1tY1N0YXR1c0JsazsNCj4gKyAgUGFja2V0LlRpbWVvdXQgICAgICAgID0gRFdfTU1DX0hD X0dFTkVSSUNfVElNRU9VVDsNCj4gKw0KPiArICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBF TU1DX0FMTF9TRU5EX0NJRDsNCj4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZFR5cGUgID0gU2RNbWND b21tYW5kVHlwZUJjcjsNCj4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBlID0gU2RNbWNSZXNw b25zZVR5cGVSMjsNCj4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFyZ3VtZW50ID0gMDsNCj4gKw0K PiArICBTdGF0dXMgPSBQYXNzVGhydS0+UGFzc1RocnUgKFBhc3NUaHJ1LCAwLCAmUGFja2V0LCBO VUxMKTsNCj4gKw0KPiArICByZXR1cm4gU3RhdHVzOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAg U2VuZCBjb21tYW5kIFNFVF9SRUxBVElWRV9BRERSIHRvIHRoZSBFTU1DIGRldmljZSB0byBhc3Np Z24gYSBSZWxhdGl2ZSBkZXZpY2UNCj4gKyAgQWRkcmVzcyAoUkNBKS4NCj4gKw0KPiArICBSZWZl ciB0byBFTU1DIEVsZWN0cmljYWwgU3RhbmRhcmQgU3BlYyA1LjEgU2VjdGlvbiA2LjQgZm9yIGRl dGFpbHMuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBQYXNzVGhydSAgICAgICBBIHBvaW50ZXIgdG8g dGhlIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gUmNhICAgICAgICAgICAgVGhlIHJl bGF0aXZlIGRldmljZSBhZGRyZXNzIHRvIGJlIGFzc2lnbmVkLg0KPiArDQo+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBkb25lIGNvcnJlY3RseS4NCj4gKyAg QHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiArDQo+ICsq Ki8NCj4gK0VGSV9TVEFUVVMNCj4gK0VtbWNTZXRSY2EgKA0KPiArICBJTiBFRklfU0RfTU1DX1BB U1NfVEhSVV9QUk9UT0NPTCAgICAgICpQYXNzVGhydSwNCj4gKyAgSU4gVUlOVDE2ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBSY2ENCj4gKyAgKQ0KPiArew0KPiArICBFRklfU0RfTU1DX0NP TU1BTkRfQkxPQ0sgICAgICAgICAgICAgIFNkTW1jQ21kQmxrOw0KPiArICBFRklfU0RfTU1DX1NU QVRVU19CTE9DSyAgICAgICAgICAgICAgIFNkTW1jU3RhdHVzQmxrOw0KPiArICBFRklfU0RfTU1D X1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAgIFBhY2tldDsNCj4gKyAgRUZJX1NUQVRVUyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ICsNCj4gKyAgWmVyb01lbSAoJlNkTW1j Q21kQmxrLCBzaXplb2YgKFNkTW1jQ21kQmxrKSk7DQo+ICsgIFplcm9NZW0gKCZTZE1tY1N0YXR1 c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiArICBaZXJvTWVtICgmUGFja2V0LCBz aXplb2YgKFBhY2tldCkpOw0KPiArDQo+ICsgIFBhY2tldC5TZE1tY0NtZEJsayAgICA9ICZTZE1t Y0NtZEJsazsNCj4gKyAgUGFja2V0LlNkTW1jU3RhdHVzQmxrID0gJlNkTW1jU3RhdHVzQmxrOw0K PiArICBQYWNrZXQuVGltZW91dCAgICAgICAgPSBEV19NTUNfSENfR0VORVJJQ19USU1FT1VUOw0K PiArDQo+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRJbmRleCA9IEVNTUNfU0VUX1JFTEFUSVZFX0FE RFI7DQo+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVBYzsN Cj4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBlID0gU2RNbWNSZXNwb25zZVR5cGVSMTsNCj4g KyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFyZ3VtZW50ID0gKFVJTlQzMilSY2EgPDwgMTY7DQo+ICsN Cj4gKyAgU3RhdHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwg TlVMTCk7DQo+ICsNCj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsg IFNlbmQgY29tbWFuZCBTRU5EX0NTRCB0byB0aGUgRU1NQyBkZXZpY2UgdG8gZ2V0IHRoZSBkYXRh IG9mIHRoZSBDU0QgcmVnaXN0ZXIuDQo+ICsNCj4gKyAgUmVmZXIgdG8gRU1NQyBFbGVjdHJpY2Fs IFN0YW5kYXJkIFNwZWMgNS4xIFNlY3Rpb24gNi4xMC40IGZvciBkZXRhaWxzLg0KPiArDQo+ICsg IEBwYXJhbVtpbl0gIFBhc3NUaHJ1ICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklfU0RfTU1DX1BB U1NfVEhSVV9QUk9UT0NPTA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNl Lg0KPiArICBAcGFyYW1baW5dICBSY2EgICAgICAgICAgIFRoZSByZWxhdGl2ZSBkZXZpY2UgYWRk cmVzcyBvZiBzZWxlY3RlZCBkZXZpY2UuDQo+ICsgIEBwYXJhbVtvdXRdIENzZCAgICAgICAgICAg VGhlIGJ1ZmZlciB0byBzdG9yZSB0aGUgY29udGVudCBvZiB0aGUgQ1NEIHJlZ2lzdGVyLg0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGUgdGhlIGNhbGxlciBzaG91bGQgaWdub3Jl IHRoZSBsb3dlc3QgYnl0ZSBvZg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMg YnVmZmVyIGFzIHRoZSBjb250ZW50IG9mIHRoaXMgYnl0ZSBpcw0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG1lYW5pbmdsZXNzIGV2ZW4gaWYgdGhlIG9wZXJhdGlvbiBzdWNjZWVkcy4N Cj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBvcGVyYXRpb24gaXMgZG9u ZSBjb3JyZWN0bHkuDQo+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlv biBmYWlscy4NCj4gKw0KPiArKiovDQo+ICtFRklfU1RBVFVTDQo+ICtFbW1jR2V0Q3NkICgNCj4g KyAgSU4gICAgIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAqUGFzc1RocnUsDQo+ICsg IElOICAgICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgUmNhLA0KPiArICAgICBPVVQg RU1NQ19DU0QgICAgICAgICAgICAgICAgICAgICAgICpDc2QNCj4gKyAgKQ0KPiArew0KPiArICBF RklfU0RfTU1DX0NPTU1BTkRfQkxPQ0sgICAgICAgICAgICAgIFNkTW1jQ21kQmxrOw0KPiArICBF RklfU0RfTU1DX1NUQVRVU19CTE9DSyAgICAgICAgICAgICAgIFNkTW1jU3RhdHVzQmxrOw0KPiAr ICBFRklfU0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAgIFBhY2tldDsNCj4gKyAgRUZJ X1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ICsNCj4gKyAgWmVy b01lbSAoJlNkTW1jQ21kQmxrLCBzaXplb2YgKFNkTW1jQ21kQmxrKSk7DQo+ICsgIFplcm9NZW0g KCZTZE1tY1N0YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiArICBaZXJvTWVt ICgmUGFja2V0LCBzaXplb2YgKFBhY2tldCkpOw0KPiArDQo+ICsgIFBhY2tldC5TZE1tY0NtZEJs ayAgICA9ICZTZE1tY0NtZEJsazsNCj4gKyAgUGFja2V0LlNkTW1jU3RhdHVzQmxrID0gJlNkTW1j U3RhdHVzQmxrOw0KPiArICBQYWNrZXQuVGltZW91dCAgICAgICAgPSBEV19NTUNfSENfR0VORVJJ Q19USU1FT1VUOw0KPiArDQo+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRJbmRleCA9IEVNTUNfU0VO RF9DU0Q7DQo+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVB YzsNCj4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBlID0gU2RNbWNSZXNwb25zZVR5cGVSMjsN Cj4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFyZ3VtZW50ID0gKFVJTlQzMilSY2EgPDwgMTY7DQo+ ICsNCj4gKyAgU3RhdHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBhY2tl dCwgTlVMTCk7DQo+ICsgIGlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgLy8NCj4g KyAgICAvLyBDb3B5IDEyOGJpdCBkYXRhIGZvciBDU0Qgc3RydWN0dXJlLg0KPiArICAgIC8vDQo+ ICsgICAgQ29weU1lbSAoKFZPSUQgKilDc2QgKyAxLCAmU2RNbWNTdGF0dXNCbGsuUmVzcDAsIHNp emVvZiAoRU1NQ19DU0QpIC0gMSk7DQo+ICsgIH0NCj4gKw0KPiArICByZXR1cm4gU3RhdHVzOw0K PiArfQ0KPiArDQo+ICsvKioNCj4gKyAgU2VuZCBjb21tYW5kIFNFTEVDVF9ERVNFTEVDVF9DQVJE IHRvIHRoZSBFTU1DIGRldmljZSB0byBzZWxlY3QvZGVzZWxlY3QgaXQuDQo+ICsNCj4gKyAgUmVm ZXIgdG8gRU1NQyBFbGVjdHJpY2FsIFN0YW5kYXJkIFNwZWMgNS4xIFNlY3Rpb24gNi4xMC40IGZv ciBkZXRhaWxzLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIFBhc3NUaHJ1ICAgICAgQSBwb2ludGVy IHRvIHRoZSBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGluc3RhbmNlLg0KPiArICBAcGFyYW1baW5dICBSY2EgICAgICAgICAgIFRo ZSByZWxhdGl2ZSBkZXZpY2UgYWRkcmVzcyBvZiBzZWxlY3RlZCBkZXZpY2UuDQo+ICsNCj4gKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5 Lg0KPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRW1tY1NlbGVjdCAoDQo+ICsgIElOIEVGSV9T RF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAgICAgKlBhc3NUaHJ1LA0KPiArICBJTiBVSU5UMTYg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJjYQ0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9T RF9NTUNfQ09NTUFORF9CTE9DSyAgICAgICAgICAgICAgU2RNbWNDbWRCbGs7DQo+ICsgIEVGSV9T RF9NTUNfU1RBVFVTX0JMT0NLICAgICAgICAgICAgICAgU2RNbWNTdGF0dXNCbGs7DQo+ICsgIEVG SV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICAgUGFja2V0Ow0KPiArICBFRklfU1RB VFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gKw0KPiArICBaZXJvTWVt ICgmU2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsNCj4gKyAgWmVyb01lbSAoJlNk TW1jU3RhdHVzQmxrLCBzaXplb2YgKFNkTW1jU3RhdHVzQmxrKSk7DQo+ICsgIFplcm9NZW0gKCZQ YWNrZXQsIHNpemVvZiAoUGFja2V0KSk7DQo+ICsNCj4gKyAgUGFja2V0LlNkTW1jQ21kQmxrICAg ID0gJlNkTW1jQ21kQmxrOw0KPiArICBQYWNrZXQuU2RNbWNTdGF0dXNCbGsgPSAmU2RNbWNTdGF0 dXNCbGs7DQo+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9IERXX01NQ19IQ19HRU5FUklDX1RJ TUVPVVQ7DQo+ICsNCj4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEluZGV4ID0gRU1NQ19TRUxFQ1Rf REVTRUxFQ1RfQ0FSRDsNCj4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZFR5cGUgID0gU2RNbWNDb21t YW5kVHlwZUFjOw0KPiArICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUgPSBTZE1tY1Jlc3BvbnNl VHlwZVIxOw0KPiArICBTZE1tY0NtZEJsay5Db21tYW5kQXJndW1lbnQgPSAoVUlOVDMyKVJjYSA8 PCAxNjsNCj4gKw0KPiArICBTdGF0dXMgPSBQYXNzVGhydS0+UGFzc1RocnUgKFBhc3NUaHJ1LCAw LCAmUGFja2V0LCBOVUxMKTsNCj4gKw0KPiArICByZXR1cm4gU3RhdHVzOw0KPiArfQ0KPiArDQo+ ICsvKioNCj4gKyAgU2VuZCBjb21tYW5kIFNFTkRfRVhUX0NTRCB0byB0aGUgRU1NQyBkZXZpY2Ug dG8gZ2V0IHRoZSBkYXRhIG9mIHRoZSBFWFRfQ1NEDQo+ICsgIHJlZ2lzdGVyLg0KPiArDQo+ICsg IFJlZmVyIHRvIEVNTUMgRWxlY3RyaWNhbCBTdGFuZGFyZCBTcGVjIDUuMSBTZWN0aW9uIDYuMTAu NCBmb3IgZGV0YWlscy4NCj4gKw0KPiArICBAcGFyYW1baW5dICBQYXNzVGhydSAgICAgIEEgcG9p bnRlciB0byB0aGUgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtW291dF0gRXh0Q3NkICAgICAg ICBUaGUgYnVmZmVyIHRvIHN0b3JlIHRoZSBjb250ZW50IG9mIHRoZSBFWFRfQ1NEDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklf U1VDQ0VTUyAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiArICBAcmV0 dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ICsNCj4gKyoqLw0K PiArRUZJX1NUQVRVUw0KPiArRW1tY0dldEV4dENzZCAoDQo+ICsgIElOICAgICBFRklfU0RfTU1D X1BBU1NfVEhSVV9QUk9UT0NPTCAgKlBhc3NUaHJ1LA0KPiArICAgICBPVVQgRU1NQ19FWFRfQ1NE ICAgICAgICAgICAgICAgICAgICpFeHRDc2QNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU0RfTU1D X0NPTU1BTkRfQkxPQ0sgICAgICAgICAgICAgIFNkTW1jQ21kQmxrOw0KPiArICBFRklfU0RfTU1D X1NUQVRVU19CTE9DSyAgICAgICAgICAgICAgIFNkTW1jU3RhdHVzQmxrOw0KPiArICBFRklfU0Rf TU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAgIFBhY2tldDsNCj4gKyAgRUZJX1NUQVRVUyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ICsNCj4gKyAgWmVyb01lbSAoJlNk TW1jQ21kQmxrLCBzaXplb2YgKFNkTW1jQ21kQmxrKSk7DQo+ICsgIFplcm9NZW0gKCZTZE1tY1N0 YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiArICBaZXJvTWVtICgmUGFja2V0 LCBzaXplb2YgKFBhY2tldCkpOw0KPiArDQo+ICsgIFBhY2tldC5TZE1tY0NtZEJsayAgICA9ICZT ZE1tY0NtZEJsazsNCj4gKyAgUGFja2V0LlNkTW1jU3RhdHVzQmxrID0gJlNkTW1jU3RhdHVzQmxr Ow0KPiArICBQYWNrZXQuVGltZW91dCAgICAgICAgPSBEV19NTUNfSENfR0VORVJJQ19USU1FT1VU Ow0KPiArDQo+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRJbmRleCA9IEVNTUNfU0VORF9FWFRfQ1NE Ow0KPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0NvbW1hbmRUeXBlQWR0YzsN Cj4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBlID0gU2RNbWNSZXNwb25zZVR5cGVSMTsNCj4g KyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFyZ3VtZW50ID0gMHgwMDAwMDAwMDsNCj4gKw0KPiArICBQ YWNrZXQuSW5EYXRhQnVmZmVyICAgICA9IEV4dENzZDsNCj4gKyAgUGFja2V0LkluVHJhbnNmZXJM ZW5ndGggPSBzaXplb2YgKEVNTUNfRVhUX0NTRCk7DQo+ICsNCj4gKyAgU3RhdHVzID0gUGFzc1Ro cnUtPlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ICsgIHJldHVybiBT dGF0dXM7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBTZW5kIGNvbW1hbmQgU1dJVENIIHRvIHRo ZSBFTU1DIGRldmljZSB0byBzd2l0Y2ggdGhlIG1vZGUgb2Ygb3BlcmF0aW9uIG9mIHRoZQ0KPiAr ICBzZWxlY3RlZCBEZXZpY2Ugb3IgbW9kaWZpZXMgdGhlIEVYVF9DU0QgcmVnaXN0ZXJzLg0KPiAr DQo+ICsgIFJlZmVyIHRvIEVNTUMgRWxlY3RyaWNhbCBTdGFuZGFyZCBTcGVjIDUuMSBTZWN0aW9u IDYuMTAuNCBmb3IgZGV0YWlscy4NCj4gKw0KPiArICBAcGFyYW1baW5dICBQYXNzVGhydSAgICAg IEEgcG9pbnRlciB0byB0aGUgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtW2luXSAgQWNjZXNz ICAgICAgICBUaGUgYWNjZXNzIG1vZGUgb2YgU1dUSUNIIGNvbW1hbmQuDQo+ICsgIEBwYXJhbVtp bl0gIEluZGV4ICAgICAgICAgVGhlIG9mZnNldCBvZiB0aGUgZmllbGQgdG8gYmUgYWNjZXNzLg0K PiArICBAcGFyYW1baW5dICBWYWx1ZSAgICAgICAgIFRoZSB2YWx1ZSB0byBiZSBzZXQgdG8gdGhl IHNwZWNpZmllZCBmaWVsZCBvZg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYVF9D U0QgcmVnaXN0ZXIuDQo+ICsgIEBwYXJhbVtpbl0gIENtZFNldCAgICAgICAgVGhlIHZhbHVlIG9m IENtZFNldCBmaWVsZCBvZiBFWFRfQ1NEIHJlZ2lzdGVyLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBkb25lIGNvcnJlY3RseS4NCj4gKyAgQHJl dHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiArDQo+ICsqKi8N Cj4gK0VGSV9TVEFUVVMNCj4gK0VtbWNTd2l0Y2ggKA0KPiArICBJTiBFRklfU0RfTU1DX1BBU1Nf VEhSVV9QUk9UT0NPTCAgICAgICpQYXNzVGhydSwNCj4gKyAgSU4gVUlOVDggICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBBY2Nlc3MsDQo+ICsgIElOIFVJTlQ4ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSW5kZXgsDQo+ICsgIElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVmFsdWUsDQo+ICsgIElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Q21kU2V0DQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NEX01NQ19DT01NQU5EX0JMT0NLICAgICAg ICAgICAgICBTZE1tY0NtZEJsazsNCj4gKyAgRUZJX1NEX01NQ19TVEFUVVNfQkxPQ0sgICAgICAg ICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gKyAgRUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFO RF9QQUNLRVQgICBQYWNrZXQ7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU3RhdHVzOw0KPiArDQo+ICsgIFplcm9NZW0gKCZTZE1tY0NtZEJsaywgc2l6ZW9mIChT ZE1tY0NtZEJsaykpOw0KPiArICBaZXJvTWVtICgmU2RNbWNTdGF0dXNCbGssIHNpemVvZiAoU2RN bWNTdGF0dXNCbGspKTsNCj4gKyAgWmVyb01lbSAoJlBhY2tldCwgc2l6ZW9mIChQYWNrZXQpKTsN Cj4gKw0KPiArICBQYWNrZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWNDbWRCbGs7DQo+ICsgIFBh Y2tldC5TZE1tY1N0YXR1c0JsayA9ICZTZE1tY1N0YXR1c0JsazsNCj4gKyAgUGFja2V0LlRpbWVv dXQgICAgICAgID0gRFdfTU1DX0hDX0dFTkVSSUNfVElNRU9VVDsNCj4gKw0KPiArICBTZE1tY0Nt ZEJsay5Db21tYW5kSW5kZXggPSBFTU1DX1NXSVRDSDsNCj4gKyAgU2RNbWNDbWRCbGsuQ29tbWFu ZFR5cGUgID0gU2RNbWNDb21tYW5kVHlwZUFjOw0KPiArICBTZE1tY0NtZEJsay5SZXNwb25zZVR5 cGUgPSBTZE1tY1Jlc3BvbnNlVHlwZVIxYjsNCj4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFyZ3Vt ZW50ID0gKEFjY2VzcyA8PCAyNCkgfCAoSW5kZXggPDwgMTYpIHwgXA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoVmFsdWUgPDwgOCkgfCBDbWRTZXQ7DQo+ICsNCj4gKyAgU3Rh dHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ ICsNCj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIFNlbmQgY29t bWFuZCBTRU5EX1NUQVRVUyB0byB0aGUgYWRkcmVzc2VkIEVNTUMgZGV2aWNlIHRvIGdldCBpdHMg c3RhdHVzDQo+ICsgIHJlZ2lzdGVyLg0KPiArDQo+ICsgIFJlZmVyIHRvIEVNTUMgRWxlY3RyaWNh bCBTdGFuZGFyZCBTcGVjIDUuMSBTZWN0aW9uIDYuMTAuNCBmb3IgZGV0YWlscy4NCj4gKw0KPiAr ICBAcGFyYW1baW5dICBQYXNzVGhydSAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX1NEX01NQ19Q QVNTX1RIUlVfUFJPVE9DT0wNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5j ZS4NCj4gKyAgQHBhcmFtW2luXSAgUmNhICAgICAgICAgICBUaGUgcmVsYXRpdmUgZGV2aWNlIGFk ZHJlc3Mgb2YgYWRkcmVzc2VkIGRldmljZS4NCj4gKyAgQHBhcmFtW291dF0gRGV2U3RhdHVzICAg ICBUaGUgcmV0dXJuZWQgZGV2aWNlIHN0YXR1cy4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUND RVNTICAgICAgIFRoZSBvcGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ICsgIEByZXR2YWwg T3RoZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gKw0KPiArKiovDQo+ICtF RklfU1RBVFVTDQo+ICtFbW1jU2VuZFN0YXR1cyAoDQo+ICsgIElOICAgICBFRklfU0RfTU1DX1BB U1NfVEhSVV9QUk9UT0NPTCAgKlBhc3NUaHJ1LA0KPiArICBJTiAgICAgVUlOVDE2ICAgICAgICAg ICAgICAgICAgICAgICAgIFJjYSwNCj4gKyAgICAgT1VUIFVJTlQzMiAgICAgICAgICAgICAgICAg ICAgICAgICAqRGV2U3RhdHVzDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NEX01NQ19DT01NQU5E X0JMT0NLICAgICAgICAgICAgICBTZE1tY0NtZEJsazsNCj4gKyAgRUZJX1NEX01NQ19TVEFUVVNf QkxPQ0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gKyAgRUZJX1NEX01NQ19QQVNT X1RIUlVfQ09NTUFORF9QQUNLRVQgICBQYWNrZXQ7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiArDQo+ICsgIFplcm9NZW0gKCZTZE1tY0NtZEJs aywgc2l6ZW9mIChTZE1tY0NtZEJsaykpOw0KPiArICBaZXJvTWVtICgmU2RNbWNTdGF0dXNCbGss IHNpemVvZiAoU2RNbWNTdGF0dXNCbGspKTsNCj4gKyAgWmVyb01lbSAoJlBhY2tldCwgc2l6ZW9m IChQYWNrZXQpKTsNCj4gKw0KPiArICBQYWNrZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWNDbWRC bGs7DQo+ICsgIFBhY2tldC5TZE1tY1N0YXR1c0JsayA9ICZTZE1tY1N0YXR1c0JsazsNCj4gKyAg UGFja2V0LlRpbWVvdXQgICAgICAgID0gRFdfTU1DX0hDX0dFTkVSSUNfVElNRU9VVDsNCj4gKw0K PiArICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBFTU1DX1NFTkRfU1RBVFVTOw0KPiArICBT ZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0NvbW1hbmRUeXBlQWM7DQo+ICsgIFNkTW1j Q21kQmxrLlJlc3BvbnNlVHlwZSA9IFNkTW1jUmVzcG9uc2VUeXBlUjE7DQo+ICsgIFNkTW1jQ21k QmxrLkNvbW1hbmRBcmd1bWVudCA9IChVSU5UMzIpUmNhIDw8IDE2Ow0KPiArDQo+ICsgIFN0YXR1 cyA9IFBhc3NUaHJ1LT5QYXNzVGhydSAoUGFzc1RocnUsIDAsICZQYWNrZXQsIE5VTEwpOw0KPiAr ICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgICpEZXZTdGF0dXMgPSBTZE1tY1N0 YXR1c0Jsay5SZXNwMDsNCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9DQo+ ICsNCj4gKy8qKg0KPiArICBTZW5kIGNvbW1hbmQgU0VORF9UVU5JTkdfQkxPQ0sgdG8gdGhlIEVN TUMgZGV2aWNlIGZvciBIUzIwMCBvcHRpbWFsIHNhbXBsaW5nDQo+ICsgIHBvaW50IGRldGVjdGlv bi4NCj4gKw0KPiArICBJdCBtYXkgYmUgc2VudCB1cCB0byA0MCB0aW1lcyB1bnRpbCB0aGUgaG9z dCBmaW5pc2hlcyB0aGUgdHVuaW5nIHByb2NlZHVyZS4NCj4gKw0KPiArICBSZWZlciB0byBFTU1D IEVsZWN0cmljYWwgU3RhbmRhcmQgU3BlYyA1LjEgU2VjdGlvbiA2LjYuOCBmb3IgZGV0YWlscy4N Cj4gKw0KPiArICBAcGFyYW1baW5dIFBhc3NUaHJ1ICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJ X1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtW2luXSBCdXNXaWR0aCAgICAgICBUaGUgYnVzIHdpZHRo IHRvIHdvcmsuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgb3BlcmF0 aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRo ZSBvcGVyYXRpb24gZmFpbHMuDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRW1tY1Nl bmRUdW5pbmdCbGsgKA0KPiArICBJTiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAg ICpQYXNzVGhydSwNCj4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBC dXNXaWR0aA0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TRF9NTUNfQ09NTUFORF9CTE9DSyAgICAg ICAgICAgICAgU2RNbWNDbWRCbGs7DQo+ICsgIEVGSV9TRF9NTUNfU1RBVFVTX0JMT0NLICAgICAg ICAgICAgICAgU2RNbWNTdGF0dXNCbGs7DQo+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1B TkRfUEFDS0VUICAgUGFja2V0Ow0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFN0YXR1czsNCj4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBUdW5pbmdCbG9ja1sxMjhdOw0KPiArDQo+ICsgIFplcm9NZW0gKCZTZE1tY0NtZEJsaywgc2l6 ZW9mIChTZE1tY0NtZEJsaykpOw0KPiArICBaZXJvTWVtICgmU2RNbWNTdGF0dXNCbGssIHNpemVv ZiAoU2RNbWNTdGF0dXNCbGspKTsNCj4gKyAgWmVyb01lbSAoJlBhY2tldCwgc2l6ZW9mIChQYWNr ZXQpKTsNCj4gKw0KPiArICBQYWNrZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWNDbWRCbGs7DQo+ ICsgIFBhY2tldC5TZE1tY1N0YXR1c0JsayA9ICZTZE1tY1N0YXR1c0JsazsNCj4gKyAgUGFja2V0 LlRpbWVvdXQgICAgICAgID0gRFdfTU1DX0hDX0dFTkVSSUNfVElNRU9VVDsNCj4gKw0KPiArICBT ZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBFTU1DX1NFTkRfVFVOSU5HX0JMT0NLOw0KPiArICBT ZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0NvbW1hbmRUeXBlQWR0YzsNCj4gKyAgU2RN bWNDbWRCbGsuUmVzcG9uc2VUeXBlID0gU2RNbWNSZXNwb25zZVR5cGVSMTsNCj4gKyAgU2RNbWND bWRCbGsuQ29tbWFuZEFyZ3VtZW50ID0gMDsNCj4gKw0KPiArICBQYWNrZXQuSW5EYXRhQnVmZmVy ID0gVHVuaW5nQmxvY2s7DQo+ICsgIGlmIChCdXNXaWR0aCA9PSA4KSB7DQo+ICsgICAgUGFja2V0 LkluVHJhbnNmZXJMZW5ndGggPSBzaXplb2YgKFR1bmluZ0Jsb2NrKTsNCj4gKyAgfSBlbHNlIHsN Cj4gKyAgICBQYWNrZXQuSW5UcmFuc2Zlckxlbmd0aCA9IDY0Ow0KPiArICB9DQo+ICsNCj4gKyAg U3RhdHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwgTlVMTCk7 DQo+ICsNCj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIFR1bm5p bmcgdGhlIGNsb2NrIHRvIGdldCBIUzIwMCBvcHRpbWFsIHNhbXBsaW5nIHBvaW50Lg0KPiArDQo+ ICsgIENvbW1hbmQgU0VORF9UVU5JTkdfQkxPQ0sgbWF5IGJlIHNlbnQgdXAgdG8gNDAgdGltZXMg dW50aWwgdGhlIGhvc3QgZmluaXNoZXMNCj4gKyAgdGhlIHR1bmluZyBwcm9jZWR1cmUuDQo+ICsN Cj4gKyAgUmVmZXIgdG8gRU1NQyBFbGVjdHJpY2FsIFN0YW5kYXJkIFNwZWMgNS4xIFNlY3Rpb24g Ni42LjguDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBEZXZJbyAgICAgICAgICBBIHBvaW50ZXIgdG8g dGhlIEVGSV9ERVZJQ0VfSU9fUFJPVE9DT0wgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gUGFz c1RocnUgICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NP TA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiArICBAcGFyYW1b aW5dIEJ1c1dpZHRoICAgICAgIFRoZSBidXMgd2lkdGggdG8gd29yay4NCj4gKw0KPiArICBAcmV0 dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBvcGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gKw0K PiArKiovDQo+ICtFRklfU1RBVFVTDQo+ICtFbW1jVHVuaW5nQ2xrRm9ySHMyMDAgKA0KPiArICBJ TiBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldkJhc2UsDQo+ICsgIElOIEVG SV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAgICAgKlBhc3NUaHJ1LA0KPiArICBJTiBVSU5U OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1c1dpZHRoDQo+ICsgICkNCj4gK3sNCj4g KyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgU3dpdGNoIHRo ZSBidXMgd2lkdGggdG8gc3BlY2lmaWVkIHdpZHRoLg0KPiArDQo+ICsgIFJlZmVyIHRvIEVNTUMg RWxlY3RyaWNhbCBTdGFuZGFyZCBTcGVjIDUuMSBTZWN0aW9uIDYuNi45Lg0KPiArDQo+ICsgIEBw YXJhbVtpbl0gRGV2SW8gICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklfREVWSUNFX0lPX1BS T1RPQ09MIGluc3RhbmNlLg0KPiArICBAcGFyYW1baW5dIFBhc3NUaHJ1ICAgICAgIEEgcG9pbnRl ciB0byB0aGUgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtW2luXSBSY2EgICAgICAgICAgICBU aGUgcmVsYXRpdmUgZGV2aWNlIGFkZHJlc3MgdG8gYmUgYXNzaWduZWQuDQo+ICsgIEBwYXJhbVtp bl0gSXNEZHIgICAgICAgICAgSWYgVFJVRSwgdXNlIGR1YWwgZGF0YSByYXRlIGRhdGEgc2ltcGxp bmcgbWV0aG9kLg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE90aGVyd2lzZSB1c2Ug c2luZ2xlIGRhdGEgcmF0ZSBkYXRhIHNpbXBsaW5nIG1ldGhvZC4NCj4gKyAgQHBhcmFtW2luXSBC dXNXaWR0aCAgICAgICBUaGUgYnVzIHdpZHRoIHRvIGJlIHNldCwgaXQgY291bGQgYmUgNCBvciA4 Lg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBk b25lIGNvcnJlY3RseS4NCj4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgb3BlcmF0 aW9uIGZhaWxzLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VtbWNTd2l0Y2hCdXNX aWR0aCAoDQo+ICsgIElOIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2QmFz ZSwNCj4gKyAgSU4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAqUGFzc1RocnUs DQo+ICsgIElOIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmNhLA0KPiArICBJ TiBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICAgIElzRGRyLA0KPiArICBJTiBVSU5U OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1c1dpZHRoDQo+ICsgICkNCj4gK3sNCj4g KyAgRUZJX1NUQVRVUyAgICAgICAgICBTdGF0dXM7DQo+ICsgIFVJTlQ4ICAgICAgICAgICAgICAg QWNjZXNzOw0KPiArICBVSU5UOCAgICAgICAgICAgICAgIEluZGV4Ow0KPiArICBVSU5UOCAgICAg ICAgICAgICAgIFZhbHVlOw0KPiArICBVSU5UOCAgICAgICAgICAgICAgIENtZFNldDsNCj4gKyAg VUlOVDMyICAgICAgICAgICAgICBEZXZTdGF0dXM7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gV3Jp dGUgQnl0ZSwgdGhlIFZhbHVlIGZpZWxkIGlzIHdyaXR0ZW4gaW50byB0aGUgYnl0ZSBwb2ludGVk IGJ5IEluZGV4Lg0KPiArICAvLw0KPiArICBBY2Nlc3MgPSAweDAzOw0KPiArICBJbmRleCAgPSBP RkZTRVRfT0YgKEVNTUNfRVhUX0NTRCwgQnVzV2lkdGgpOw0KPiArICBpZiAoQnVzV2lkdGggPT0g MSkgew0KPiArICAgIFZhbHVlID0gMDsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICBpZiAoQnVzV2lk dGggPT0gNCkgew0KPiArICAgICAgVmFsdWUgPSAxOw0KPiArICAgIH0gZWxzZSBpZiAoQnVzV2lk dGggPT0gOCkgew0KPiArICAgICAgVmFsdWUgPSAyOw0KPiArICAgIH0gZWxzZSB7DQo+ICsgICAg ICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICAgIH0NCj4gKw0KPiArICAgIGlm IChJc0Rkcikgew0KPiArICAgICAgVmFsdWUgKz0gNDsNCj4gKyAgICB9DQo+ICsgIH0NCj4gKw0K PiArICBDbWRTZXQgPSAwOw0KPiArICBTdGF0dXMgPSBFbW1jU3dpdGNoIChQYXNzVGhydSwgQWNj ZXNzLCBJbmRleCwgVmFsdWUsIENtZFNldCk7DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykp IHsNCj4gKyAgICBERUJVRyAoKA0KPiArICAgICAgREVCVUdfRVJST1IsDQo+ICsgICAgICAiRW1t Y1N3aXRjaEJ1c1dpZHRoOiBTd2l0Y2ggdG8gYnVzIHdpZHRoICVkIGZhaWxzIHdpdGggJXJcbiIs DQo+ICsgICAgICBCdXNXaWR0aCwNCj4gKyAgICAgIFN0YXR1cw0KPiArICAgICAgKSk7DQo+ICsg ICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsgIGRvIHsNCj4gKyAgICBTdGF0dXMg PSBFbW1jU2VuZFN0YXR1cyAoUGFzc1RocnUsIFJjYSwgJkRldlN0YXR1cyk7DQo+ICsgICAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgICAgREVCVUcgKCgNCj4gKyAgICAgICAgREVC VUdfRVJST1IsDQo+ICsgICAgICAgICJFbW1jU3dpdGNoQnVzV2lkdGg6IFNlbmQgc3RhdHVzIGZh aWxzIHdpdGggJXJcbiIsDQo+ICsgICAgICAgIFN0YXR1cw0KPiArICAgICAgICApKTsNCj4gKyAg ICAgIHJldHVybiBTdGF0dXM7DQo+ICsgICAgfQ0KPiArICAgIC8vDQo+ICsgICAgLy8gQ2hlY2sg dGhlIHN3aXRjaCBvcGVyYXRpb24gaXMgcmVhbGx5IHN1Y2Nlc3NmdWwgb3Igbm90Lg0KPiArICAg IC8vDQo+ICsgIH0gd2hpbGUgKChEZXZTdGF0dXMgJiAweGYpID09IEVNTUNfU1RBVEVfUFJHKTsN Cj4gKw0KPiArICBTdGF0dXMgPSBEd01tY0hjU2V0QnVzV2lkdGggKERldkJhc2UsIElzRGRyLCBC dXNXaWR0aCk7DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICByZXR1cm4g U3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gK30NCj4gKw0KPiAr LyoqDQo+ICsgIFN3aXRjaCB0aGUgY2xvY2sgZnJlcXVlbmN5IHRvIHRoZSBzcGVjaWZpZWQgdmFs dWUuDQo+ICsNCj4gKyAgUmVmZXIgdG8gRU1NQyBFbGVjdHJpY2FsIFN0YW5kYXJkIFNwZWMgNS4x IFNlY3Rpb24gNi42Lg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gRGV2SW8gICAgICAgICAgQSBwb2lu dGVyIHRvIHRoZSBFRklfREVWSUNFX0lPX1BST1RPQ09MIGluc3RhbmNlLg0KPiArICBAcGFyYW1b aW5dIFBhc3NUaHJ1ICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX1NEX01NQ19QQVNTX1RIUlVf UFJPVE9DT0wNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gKyAg QHBhcmFtW2luXSBSY2EgICAgICAgICAgICBUaGUgcmVsYXRpdmUgZGV2aWNlIGFkZHJlc3MgdG8g YmUgYXNzaWduZWQuDQo+ICsgIEBwYXJhbVtpbl0gSHNUaW1pbmcgICAgICAgVGhlIHZhbHVlIHRv IGJlIHdyaXR0ZW4gdG8gSFNfVElNSU5HIGZpZWxkIG9mDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRVhUX0NTRCByZWdpc3Rlci4NCj4gKyAgQHBhcmFtW2luXSBDbG9ja0ZyZXEgICAg ICBUaGUgbWF4IGNsb2NrIGZyZXF1ZW5jeSB0byBiZSBzZXQsIHRoZSB1bml0IGlzIE1Iei4NCj4g Kw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBvcGVyYXRpb24gaXMgZG9uZSBj b3JyZWN0bHkuDQo+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBm YWlscy4NCj4gKw0KPiArKiovDQo+ICtFRklfU1RBVFVTDQo+ICtFbW1jU3dpdGNoQ2xvY2tGcmVx ICgNCj4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZCYXNlLA0K PiArICBJTiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICpQYXNzVGhydSwNCj4g KyAgSU4gVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSY2EsDQo+ICsgIElOIFVJ TlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSHNUaW1pbmcsDQo+ICsgIElOIFVJTlQz MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvY2tGcmVxDQo+ICsgICkNCj4gK3sNCj4g KyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ICsgIFVJTlQ4ICAgICAgICAg ICAgICAgICAgICAgQWNjZXNzOw0KPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgIEluZGV4 Ow0KPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgIFZhbHVlOw0KPiArICBVSU5UOCAgICAg ICAgICAgICAgICAgICAgIENtZFNldDsNCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBE ZXZTdGF0dXM7DQo+ICsgIERXX01NQ19IQ19QUklWQVRFX0RBVEEgICAgKlByaXZhdGU7DQo+ICsN Cj4gKyAgUHJpdmF0ZSA9IERXX01NQ19IQ19QUklWQVRFX0ZST01fVEhJUyAoUGFzc1RocnUpOw0K PiArICAvLw0KPiArICAvLyBXcml0ZSBCeXRlLCB0aGUgVmFsdWUgZmllbGQgaXMgd3JpdHRlbiBp bnRvIHRoZSBieXRlIHBvaW50ZWQgYnkgSW5kZXguDQo+ICsgIC8vDQo+ICsgIEFjY2VzcyA9IDB4 MDM7DQo+ICsgIEluZGV4ICA9IE9GRlNFVF9PRiAoRU1NQ19FWFRfQ1NELCBIc1RpbWluZyk7DQo+ ICsgIFZhbHVlICA9IEhzVGltaW5nOw0KPiArICBDbWRTZXQgPSAwOw0KPiArDQo+ICsgIFN0YXR1 cyA9IEVtbWNTd2l0Y2ggKFBhc3NUaHJ1LCBBY2Nlc3MsIEluZGV4LCBWYWx1ZSwgQ21kU2V0KTsN Cj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIERFQlVHICgoDQo+ICsgICAg ICBERUJVR19FUlJPUiwNCj4gKyAgICAgICJFbW1jU3dpdGNoQ2xvY2tGcmVxOiBTd2l0Y2ggdG8g aHN0aW1pbmcgJWQgZmFpbHMgd2l0aCAlclxuIiwNCj4gKyAgICAgIEhzVGltaW5nLA0KPiArICAg ICAgU3RhdHVzDQo+ICsgICAgICApKTsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ ICsNCj4gKyAgU3RhdHVzID0gRW1tY1NlbmRTdGF0dXMgKFBhc3NUaHJ1LCBSY2EsICZEZXZTdGF0 dXMpOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgREVCVUcgKCgNCj4g KyAgICAgIERFQlVHX0VSUk9SLA0KPiArICAgICAgIkVtbWNTd2l0Y2hDbG9ja0ZyZXE6IFNlbmQg c3RhdHVzIGZhaWxzIHdpdGggJXJcbiIsDQo+ICsgICAgICBTdGF0dXMNCj4gKyAgICAgICkpOw0K PiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKyAgLy8NCj4gKyAgLy8gQ2hlY2sgdGhl IHN3aXRjaCBvcGVyYXRpb24gaXMgcmVhbGx5IHN1Y2Nlc3NmdWwgb3Igbm90Lg0KPiArICAvLw0K PiArICBpZiAoKERldlN0YXR1cyAmIEJJVDcpICE9IDApIHsNCj4gKyAgICBERUJVRyAoKA0KPiAr ICAgICAgREVCVUdfRVJST1IsDQo+ICsgICAgICAiRW1tY1N3aXRjaENsb2NrRnJlcTogVGhlIHN3 aXRjaCBvcGVyYXRpb24gZmFpbHMgYXMgRGV2U3RhdHVzIDB4JTA4eFxuIiwNCj4gKyAgICAgIERl dlN0YXR1cw0KPiArICAgICAgKSk7DQo+ICsgICAgcmV0dXJuIEVGSV9ERVZJQ0VfRVJST1I7DQo+ ICsgIH0NCj4gKyAgLy8NCj4gKyAgLy8gQ29udmVydCB0aGUgY2xvY2sgZnJlcSB1bml0IGZyb20g TUh6IHRvIEtIei4NCj4gKyAgLy8NCj4gKyAgU3RhdHVzID0gRHdNbWNIY0Nsb2NrU3VwcGx5IChE ZXZCYXNlLCBDbG9ja0ZyZXEgKiAxMDAwLCBQcml2YXRlLT5DYXBhYmlsaXR5WzBdKTsNCj4gKw0K PiArICByZXR1cm4gU3RhdHVzOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgU3dpdGNoIHRvIHRo ZSBIaWdoIFNwZWVkIHRpbWluZyBhY2NvcmRpbmcgdG8gcmVxdWVzdC4NCj4gKw0KPiArICBSZWZl ciB0byBFTU1DIEVsZWN0cmljYWwgU3RhbmRhcmQgU3BlYyA1LjEgU2VjdGlvbiA2LjYuOC4NCj4g Kw0KPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX0RF VklDRV9JT19QUk9UT0NPTCBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtW2luXSBQYXNzVGhydSAgICAg ICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gUmNhICAg ICAgICAgICAgVGhlIHJlbGF0aXZlIGRldmljZSBhZGRyZXNzIHRvIGJlIGFzc2lnbmVkLg0KPiAr ICBAcGFyYW1baW5dIENsb2NrRnJlcSAgICAgIFRoZSBtYXggY2xvY2sgZnJlcXVlbmN5IHRvIGJl IHNldC4NCj4gKyAgQHBhcmFtW2luXSBJc0RkciAgICAgICAgICBJZiBUUlVFLCB1c2UgZHVhbCBk YXRhIHJhdGUgZGF0YSBzaW1wbGluZyBtZXRob2QuDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3RoZXJ3aXNlIHVzZSBzaW5nbGUgZGF0YSByYXRlIGRhdGEgc2ltcGxpbmcgbWV0aG9k Lg0KPiArICBAcGFyYW1baW5dIEJ1c1dpZHRoICAgICAgIFRoZSBidXMgd2lkdGggdG8gYmUgc2V0 LCBpdCBjb3VsZCBiZSA0IG9yIDguDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiArICBAcmV0dmFsIE90aGVycyAg ICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRV Uw0KPiArRW1tY1N3aXRjaFRvSGlnaFNwZWVkICgNCj4gKyAgSU4gVUlOVE4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBEZXZCYXNlLA0KPiArICBJTiBFRklfU0RfTU1DX1BBU1NfVEhSVV9Q Uk9UT0NPTCAgICAgICpQYXNzVGhydSwNCj4gKyAgSU4gVUlOVDE2ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBSY2EsDQo+ICsgIElOIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQ2xvY2tGcmVxLA0KPiArICBJTiBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICAg IElzRGRyLA0KPiArICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1c1dp ZHRoDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICBTdGF0dXM7DQo+ICsg IFVJTlQ4ICAgICAgICAgICAgICAgSHNUaW1pbmc7DQo+ICsNCj4gKyAgSHNUaW1pbmcgPSAxOw0K PiArICBTdGF0dXMgPSBFbW1jU3dpdGNoQ2xvY2tGcmVxIChEZXZCYXNlLCBQYXNzVGhydSwgUmNh LCBIc1RpbWluZywgQ2xvY2tGcmVxKTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKyAgU3RhdHVzID0gRW1tY1N3aXRjaEJ1 c1dpZHRoIChEZXZCYXNlLCBQYXNzVGhydSwgUmNhLCBJc0RkciwgQnVzV2lkdGgpOw0KPiArICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0K PiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBTd2l0Y2gg dG8gdGhlIEhTMjAwIHRpbWluZyBhY2NvcmRpbmcgdG8gcmVxdWVzdC4NCj4gKw0KPiArICBSZWZl ciB0byBFTU1DIEVsZWN0cmljYWwgU3RhbmRhcmQgU3BlYyA1LjEgU2VjdGlvbiA2LjYuOC4NCj4g Kw0KPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX0RF VklDRV9JT19QUk9UT0NPTCBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtW2luXSBQYXNzVGhydSAgICAg ICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gUmNhICAg ICAgICAgICAgVGhlIHJlbGF0aXZlIGRldmljZSBhZGRyZXNzIHRvIGJlIGFzc2lnbmVkLg0KPiAr ICBAcGFyYW1baW5dIENsb2NrRnJlcSAgICAgIFRoZSBtYXggY2xvY2sgZnJlcXVlbmN5IHRvIGJl IHNldC4NCj4gKyAgQHBhcmFtW2luXSBCdXNXaWR0aCAgICAgICBUaGUgYnVzIHdpZHRoIHRvIGJl IHNldCwgaXQgY291bGQgYmUgNCBvciA4Lg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgVGhlIG9wZXJhdGlvbiBpcyBkb25lIGNvcnJlY3RseS4NCj4gKyAgQHJldHZhbCBPdGhl cnMgICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9T VEFUVVMNCj4gK0VtbWNTd2l0Y2hUb0hTMjAwICgNCj4gKyAgSU4gVUlOVE4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBEZXZCYXNlLA0KPiArICBJTiBFRklfU0RfTU1DX1BBU1NfVEhSVV9Q Uk9UT0NPTCAgICAgICpQYXNzVGhydSwNCj4gKyAgSU4gVUlOVDE2ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBSY2EsDQo+ICsgIElOIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQ2xvY2tGcmVxLA0KPiArICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEJ1c1dpZHRoDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiArfQ0K PiArDQo+ICsvKioNCj4gKyAgU3dpdGNoIHRoZSBoaWdoIHNwZWVkIHRpbWluZyBhY2NvcmRpbmcg dG8gcmVxdWVzdC4NCj4gKw0KPiArICBSZWZlciB0byBFTU1DIEVsZWN0cmljYWwgU3RhbmRhcmQg U3BlYyA1LjEgU2VjdGlvbiA2LjYuOC4NCj4gKw0KPiArICBAcGFyYW1baW5dIERldklvICAgICAg ICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX0RFVklDRV9JT19QUk9UT0NPTCBpbnN0YW5jZS4NCj4g KyAgQHBhcmFtW2luXSBQYXNzVGhydSAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9TRF9NTUNf UEFTU19USFJVX1BST1RPQ09MDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFu Y2UuDQo+ICsgIEBwYXJhbVtpbl0gUmNhICAgICAgICAgICAgVGhlIHJlbGF0aXZlIGRldmljZSBh ZGRyZXNzIHRvIGJlIGFzc2lnbmVkLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAg ICAgVGhlIG9wZXJhdGlvbiBpcyBkb25lIGNvcnJlY3RseS4NCj4gKyAgQHJldHZhbCBPdGhlcnMg ICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFU VVMNCj4gK0VtbWNTZXRCdXNNb2RlICgNCj4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBEZXZCYXNlLA0KPiArICBJTiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NP TCAgICAgICpQYXNzVGhydSwNCj4gKyAgSU4gVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBSY2ENCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAg ICBTdGF0dXM7DQo+ICsgIEVNTUNfQ1NEICAgICAgICAgICAgICAgICAgICAgIENzZDsNCj4gKyAg RU1NQ19FWFRfQ1NEICAgICAgICAgICAgICAgICAgRXh0Q3NkOw0KPiArICBVSU5UOCAgICAgICAg ICAgICAgICAgICAgICAgICBIc1RpbWluZzsNCj4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAg ICAgICAgSXNEZHI7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgIERldlN0YXR1 czsNCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgQ2xvY2tGcmVxOw0KPiArICBV SU5UOCAgICAgICAgICAgICAgICAgICAgICAgICBCdXNXaWR0aDsNCj4gKyAgRFdfTU1DX0hDX1BS SVZBVEVfREFUQSAgICAgICAgKlByaXZhdGU7DQo+ICsNCj4gKyAgUHJpdmF0ZSA9IERXX01NQ19I Q19QUklWQVRFX0ZST01fVEhJUyAoUGFzc1RocnUpOw0KPiArICBBU1NFUlQgKFByaXZhdGUtPkNh cGFiaWxpdHlbMF0uQmFzZUNsa0ZyZXEgIT0gMCk7DQo+ICsNCj4gKyAgU3RhdHVzID0gRW1tY0dl dENzZCAoUGFzc1RocnUsIFJjYSwgJkNzZCk7DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykp IHsNCj4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRW1tY1NldEJ1c01vZGU6IEdldENzZCBm YWlscyB3aXRoICVyXG4iLCBTdGF0dXMpKTsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9 DQo+ICsNCj4gKyAgU3RhdHVzID0gRW1tY1NlbGVjdCAoUGFzc1RocnUsIFJjYSk7DQo+ICsgIGlm IChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRW1t Y1NldEJ1c01vZGU6IFNlbGVjdCBmYWlscyB3aXRoICVyXG4iLCBTdGF0dXMpKTsNCj4gKyAgICBy ZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAgZG8gew0KPiArICAgIFN0YXR1cyA9IEVt bWNTZW5kU3RhdHVzIChQYXNzVGhydSwgUmNhLCAmRGV2U3RhdHVzKTsNCj4gKyAgICBpZiAoRUZJ X0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgICBERUJVRyAoKA0KPiArICAgICAgICBERUJVR19F UlJPUiwNCj4gKyAgICAgICAgIkVtbWNTZXRCdXNNb2RlOiBHZXQgU3RhdHVzIGZhaWxzIHdpdGgg JXJcbiIsDQo+ICsgICAgICAgIFN0YXR1cw0KPiArICAgICAgICApKTsNCj4gKyAgICAgIHJldHVy biBTdGF0dXM7DQo+ICsgICAgfQ0KPiArICB9IHdoaWxlIChFTU1DX0dFVF9TVEFURSAoRGV2U3Rh dHVzKSAhPSBFTU1DX1NUQVRFX1RSQU4pOw0KPiArDQo+ICsgIEJ1c1dpZHRoID0gMTsNCj4gKyAg U3RhdHVzID0gRW1tY1N3aXRjaEJ1c1dpZHRoIChEZXZCYXNlLCBQYXNzVGhydSwgUmNhLCBGQUxT RSwgQnVzV2lkdGgpOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgcmV0 dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsgIEJ1c1dpZHRoID0gUHJpdmF0ZS0+Q2FwYWJp bGl0eVswXS5CdXNXaWR0aDsNCj4gKyAgLy8NCj4gKyAgLy8gR2V0IERlaXZjZV9UeXBlIGZyb20g RVhUX0NTRCByZWdpc3Rlci4NCj4gKyAgLy8NCj4gKyAgU3RhdHVzID0gRW1tY0dldEV4dENzZCAo UGFzc1RocnUsICZFeHRDc2QpOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsg ICAgREVCVUcgKChERUJVR19FUlJPUiwgIkVtbWNTZXRCdXNNb2RlOiBHZXRFeHRDc2QgZmFpbHMg d2l0aCAlclxuIiwgU3RhdHVzKSk7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiAr DQo+ICsgIC8vDQo+ICsgIC8vIENhbGN1bGF0ZSBzdXBwb3J0ZWQgYnVzIHNwZWVkL2J1cyB3aWR0 aC9jbG9jayBmcmVxdWVuY3kuDQo+ICsgIC8vDQo+ICsgIEhzVGltaW5nICA9IDA7DQo+ICsgIElz RGRyICAgICA9IEZBTFNFOw0KPiArICBDbG9ja0ZyZXEgPSAwOw0KPiArICBpZiAoKChFeHRDc2Qu RGV2aWNlVHlwZSAmIChCSVQ0IHwgQklUNSkpICE9IDApICYmDQo+ICsgICAgICAoUHJpdmF0ZS0+ Q2FwYWJpbGl0eVswXS5TZHIxMDQgIT0gMCkpIHsNCj4gKyAgICBIc1RpbWluZyAgPSAyOw0KPiAr ICAgIElzRGRyICAgICA9IEZBTFNFOw0KPiArICAgIENsb2NrRnJlcSA9IDIwMDsNCj4gKyAgfSBl bHNlIGlmICgoKEV4dENzZC5EZXZpY2VUeXBlICYgKEJJVDIgfCBCSVQzKSkgIT0gMCkgJiYNCj4g KyAgICAgICAgICAgICAoUHJpdmF0ZS0+Q2FwYWJpbGl0eVswXS5EZHI1MCAhPSAwKSkgew0KPiAr ICAgIEhzVGltaW5nICA9IDE7DQo+ICsgICAgSXNEZHIgICAgID0gVFJVRTsNCj4gKyAgICBDbG9j a0ZyZXEgPSA1MjsNCj4gKyAgfSBlbHNlIGlmICgoKEV4dENzZC5EZXZpY2VUeXBlICYgQklUMSkg IT0gMCkgJiYNCj4gKyAgICAgICAgICAgICAoUHJpdmF0ZS0+Q2FwYWJpbGl0eVswXS5IaWdoU3Bl ZWQgIT0gMCkpIHsNCj4gKyAgICBIc1RpbWluZyAgPSAxOw0KPiArICAgIElzRGRyICAgICA9IEZB TFNFOw0KPiArICAgIENsb2NrRnJlcSA9IDUyOw0KPiArICB9IGVsc2UgaWYgKCgoRXh0Q3NkLkRl dmljZVR5cGUgJiBCSVQwKSAhPSAwKSAmJg0KPiArICAgICAgICAgICAgIChQcml2YXRlLT5DYXBh YmlsaXR5WzBdLkhpZ2hTcGVlZCAhPSAwKSkgew0KPiArICAgIEhzVGltaW5nICA9IDE7DQo+ICsg ICAgSXNEZHIgICAgID0gRkFMU0U7DQo+ICsgICAgQ2xvY2tGcmVxID0gMjY7DQo+ICsgIH0NCj4g Kw0KPiArICBpZiAoKENsb2NrRnJlcSA9PSAwKSB8fCAoSHNUaW1pbmcgPT0gMCkpIHsNCj4gKyAg ICAvLw0KPiArICAgIC8vIENvbnRpbnVlIHVzaW5nIGRlZmF1bHQgc2V0dGluZy4NCj4gKyAgICAv Lw0KPiArICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gKyAgfQ0KPiArDQo+ICsgIERFQlVHICgo DQo+ICsgICAgREVCVUdfSU5GTywNCj4gKyAgICAiRW1tY1NldEJ1c01vZGU6IEhzVGltaW5nICVk IENsb2NrRnJlcSAlZCBCdXNXaWR0aCAlZCBEZHIgJWFcbiIsDQo+ICsgICAgSHNUaW1pbmcsDQo+ ICsgICAgQ2xvY2tGcmVxLA0KPiArICAgIEJ1c1dpZHRoLA0KPiArICAgIElzRGRyID8gIlRSVUUi IDogIkZBTFNFIg0KPiArICAgICkpOw0KPiArDQo+ICsgIGlmIChIc1RpbWluZyA9PSAyKSB7DQo+ ICsgICAgLy8NCj4gKyAgICAvLyBFeGVjdXRlIEhTMjAwIHRpbWluZyBzd2l0Y2ggcHJvY2VkdXJl DQo+ICsgICAgLy8NCj4gKyAgICBTdGF0dXMgPSBFbW1jU3dpdGNoVG9IUzIwMCAoRGV2QmFzZSwg UGFzc1RocnUsIFJjYSwgQ2xvY2tGcmVxLCBCdXNXaWR0aCk7DQo+ICsgIH0gZWxzZSB7DQo+ICsg ICAgLy8NCj4gKyAgICAvLyBFeGVjdXRlIEhpZ2ggU3BlZWQgdGltaW5nIHN3aXRjaCBwcm9jZWR1 cmUNCj4gKyAgICAvLw0KPiArICAgIFN0YXR1cyA9IEVtbWNTd2l0Y2hUb0hpZ2hTcGVlZCAoDQo+ ICsgICAgICAgICAgICAgICBEZXZCYXNlLA0KPiArICAgICAgICAgICAgICAgUGFzc1RocnUsDQo+ ICsgICAgICAgICAgICAgICBSY2EsDQo+ICsgICAgICAgICAgICAgICBDbG9ja0ZyZXEsDQo+ICsg ICAgICAgICAgICAgICBJc0RkciwNCj4gKyAgICAgICAgICAgICAgIEJ1c1dpZHRoDQo+ICsgICAg ICAgICAgICAgICApOw0KPiArICB9DQo+ICsNCj4gKyAgREVCVUcgKCgNCj4gKyAgICBERUJVR19J TkZPLA0KPiArICAgICJFbW1jU2V0QnVzTW9kZTogU3dpdGNoIHRvICVhICVyXG4iLA0KPiArICAg IChIc1RpbWluZyA9PSAzKSA/ICJIUzQwMCIgOiAoKEhzVGltaW5nID09IDIpID8gIkhTMjAwIiA6 ICJIaWdoU3BlZWQiKSwNCj4gKyAgICBTdGF0dXMNCj4gKyAgICApKTsNCj4gKw0KPiArICByZXR1 cm4gU3RhdHVzOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgRXhlY3V0ZSBFTU1DIGRldmljZSBp ZGVudGlmaWNhdGlvbiBwcm9jZWR1cmUuDQo+ICsNCj4gKyAgUmVmZXIgdG8gRU1NQyBFbGVjdHJp Y2FsIFN0YW5kYXJkIFNwZWMgNS4xIFNlY3Rpb24gNi40IGZvciBkZXRhaWxzLg0KPiArDQo+ICsg IEBwYXJhbVtpbl0gUHJpdmF0ZSAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBEV19NTUNfSENfUFJJ VkFURV9EQVRBIGluc3RhbmNlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAg VGhlcmUgaXMgYSBFTU1DIGNhcmQuDQo+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhl cmUgaXMgbm90IGEgRU1NQyBjYXJkLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0Vt bWNJZGVudGlmaWNhdGlvbiAoDQo+ICsgIElOIERXX01NQ19IQ19QUklWQVRFX0RBVEEgICAgICAg ICAgICAgKlByaXZhdGUNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAg ICAgICAgICAgU3RhdHVzOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2 QmFzZTsNCj4gKyAgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICpQYXNzVGhydTsNCj4g KyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgIE9jcjsNCj4gKyAgVUlOVDE2ICAgICAg ICAgICAgICAgICAgICAgICAgIFJjYTsNCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAg ICAgIERldlN0YXR1czsNCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVv dXQ7DQo+ICsNCj4gKyAgRGV2QmFzZSAgICA9IFByaXZhdGUtPkRldkJhc2U7DQo+ICsgIFBhc3NU aHJ1ID0gJlByaXZhdGUtPlBhc3NUaHJ1Ow0KPiArDQo+ICsgIFN0YXR1cyA9IEVtbWNSZXNldCAo UGFzc1RocnUpOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgREVCVUcg KCgNCj4gKyAgICAgIERFQlVHX0lORk8sDQo+ICsgICAgICAiRW1tY0lkZW50aWZpY2F0aW9uOiBF eGVjdXRpbmcgQ21kMCBmYWlscyB3aXRoICVyXG4iLA0KPiArICAgICAgU3RhdHVzDQo+ICsgICAg ICApKTsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAgVGltZW91dCA9 IDEwMDsNCj4gKyAgZG8gew0KPiArICAgIE9jciA9IEVNTUNfQ01EMV9DQVBBQ0lUWV9HUkVBVEVS X1RIQU5fMkdCOw0KPiArICAgIFN0YXR1cyA9IEVtbWNHZXRPY3IgKFBhc3NUaHJ1LCAmT2NyKTsN Cj4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgICBERUJVRyAoKA0KPiAr ICAgICAgICBERUJVR19JTkZPLA0KPiArICAgICAgICAiRW1tY0lkZW50aWZpY2F0aW9uOiBFeGVj dXRpbmcgQ21kMSBmYWlscyB3aXRoICVyXG4iLA0KPiArICAgICAgICBTdGF0dXMNCj4gKyAgICAg ICAgKSk7DQo+ICsgICAgICByZXR1cm4gU3RhdHVzOw0KPiArICAgIH0NCj4gKyAgICBpZiAoLS1U aW1lb3V0IDw9IDApIHsNCj4gKyAgICAgIHJldHVybiBFRklfREVWSUNFX0VSUk9SOw0KPiArICAg IH0NCj4gKyAgICBNaWNyb1NlY29uZERlbGF5ICgxMDApOw0KPiArICB9IHdoaWxlICgoT2NyICYg QklUMzEpID09IDApOw0KPiArDQo+ICsgIFN0YXR1cyA9IEVtbWNHZXRBbGxDaWQgKFBhc3NUaHJ1 KTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIERFQlVHICgoDQo+ICsg ICAgICBERUJVR19JTkZPLA0KPiArICAgICAgIkVtbWNJZGVudGlmaWNhdGlvbjogRXhlY3V0aW5n IENtZDIgZmFpbHMgd2l0aCAlclxuIiwNCj4gKyAgICAgIFN0YXR1cw0KPiArICAgICAgKSk7DQo+ ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArICAvLw0KPiArICAvLyB2YWxpZCBSQ0Eg c3RhcnRzIGZyb20gMS4NCj4gKyAgLy8gSGVyZSB3ZSB0YWtlcyBhIHNpbXBsZSBmb3JtdWxhIHRv IGNhbGN1bGF0ZSB0aGUgUkNBLg0KPiArICAvLyBEb24ndCBzdXBwb3J0IG11bHRpcGxlIGRldmlj ZXMgb24gdGhlIHNsb3QsIHRoYXQgaXMNCj4gKyAgLy8gc2hhcmVkIGJ1cyBzbG90IGZlYXR1cmUu DQo+ICsgIC8vDQo+ICsgIFJjYSAgICA9IDE7DQo+ICsgIFN0YXR1cyA9IEVtbWNTZXRSY2EgKFBh c3NUaHJ1LCBSY2EpOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgREVC VUcgKCgNCj4gKyAgICAgIERFQlVHX0lORk8sDQo+ICsgICAgICAiRW1tY0lkZW50aWZpY2F0aW9u OiBFeGVjdXRpbmcgQ21kMyBmYWlscyB3aXRoICVyXG4iLA0KPiArICAgICAgU3RhdHVzDQo+ICsg ICAgICApKTsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsgIC8vDQo+ICsgIC8v IEVudGVyIERhdGEgVHJhbmZlciBNb2RlLg0KPiArICAvLw0KPiArICBERUJVRyAoKA0KPiArICAg IERFQlVHX0lORk8sDQo+ICsgICAgIkVtbWNJZGVudGlmaWNhdGlvbjogRm91bmQgYSBFTU1DIGRl dmljZSBhdCBSQ0EgWyVkXVxuIiwNCj4gKyAgICBSY2ENCj4gKyAgICApKTsNCj4gKyAgUHJpdmF0 ZS0+U2xvdFswXS5DYXJkVHlwZSA9IEVtbWNDYXJkVHlwZTsNCj4gKw0KPiArICBTdGF0dXMgPSBF bW1jU2V0QnVzTW9kZSAoRGV2QmFzZSwgUGFzc1RocnUsIFJjYSk7DQo+ICsgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAg Ly8NCj4gKyAgLy8gRXhpdCBEQVRBIE1vZGUuDQo+ICsgIC8vDQo+ICsgIGRvIHsNCj4gKyAgICBT dGF0dXMgPSBFbW1jU2VuZFN0YXR1cyAoUGFzc1RocnUsIFJjYSwgJkRldlN0YXR1cyk7DQo+ICsg ICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgICAgREVCVUcgKCgNCj4gKyAgICAg ICAgREVCVUdfSU5GTywNCj4gKyAgICAgICAgIkVtbWNTd2l0Y2hCdXNXaWR0aDogU2VuZCBzdGF0 dXMgZmFpbHMgd2l0aCAlclxuIiwNCj4gKyAgICAgICAgU3RhdHVzDQo+ICsgICAgICAgICkpOw0K PiArICAgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgICB9DQo+ICsgIH0gd2hpbGUgKChEZXZTdGF0 dXMgJiAweGYpID09IEVNTUNfU1RBVEVfREFUQSk7DQo+ICsNCj4gKyAgcmV0dXJuIFN0YXR1czsN Cj4gK30NCj4gZGlmZiAtLWdpdCBhL0VtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9TZERl dmljZS5jIGIvRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL1NkRGV2aWNlLmMNCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi42MzI0NjYzN2I2ZGQNCj4g LS0tIC9kZXYvbnVsbA0KPiArKysgYi9FbWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvU2RE ZXZpY2UuYw0KPiBAQCAtMCwwICsxLDExMDUgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBUaGlzIGZp bGUgcHJvdmlkZXMgc29tZSBoZWxwZXIgZnVuY3Rpb25zIHdoaWNoIGFyZSBzcGVjaWZpYyBmb3Ig U0QgY2FyZA0KPiArICBkZXZpY2UuDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE1IC0gMjAy MSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArICBDb3B5 cmlnaHQgKGMpIDIwMTgsIExpbmFyby4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsNCj4g KyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbGljZW5z ZWQgYW5kIG1hZGUgYXZhaWxhYmxlDQo+ICsgIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9u cyBvZiB0aGUgQlNEIExpY2Vuc2Ugd2hpY2ggYWNjb21wYW5pZXMgdGhpcw0KPiArICBkaXN0cmli dXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiAr ICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4g KyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFO ICJBUyBJUyIgQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElP TlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsNCj4gKyoqLw0K PiArDQo+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9TZC5oPg0KPiArDQo+ICsjaW5jbHVk ZSA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xp Yi5oPg0KPiArDQo+ICsjaW5jbHVkZSAiRHdNbWNIY0R4ZS5oIg0KPiArDQo+ICsvKioNCj4gKyAg U2VuZCBjb21tYW5kIEdPX0lETEVfU1RBVEUgdG8gdGhlIGRldmljZSB0byBtYWtlIGl0IGdvIHRv IElkbGUgU3RhdGUuDQo+ICsNCj4gKyAgUmVmZXIgdG8gU0QgUGh5c2ljYWwgTGF5ZXIgU2ltcGxp ZmllZCBTcGVjIDQuMSBTZWN0aW9uIDQuNyBmb3IgZGV0YWlscy4NCj4gKw0KPiArICBAcGFyYW1b aW5dIFBhc3NUaHJ1ICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX1NEX01NQ19QQVNTX1RIUlVf UFJPVE9DT0wNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gKw0K PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBTRCBkZXZpY2UgaXMgcmVzZXQgY29y cmVjdGx5Lg0KPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBkZXZpY2UgcmVzZXQg ZmFpbHMuDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArU2RDYXJkUmVzZXQgKA0KPiAr ICBJTiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICpQYXNzVGhydQ0KPiArICAp DQo+ICt7DQo+ICsgIEVGSV9TRF9NTUNfQ09NTUFORF9CTE9DSyAgICAgICAgICAgICAgU2RNbWND bWRCbGs7DQo+ICsgIEVGSV9TRF9NTUNfU1RBVFVTX0JMT0NLICAgICAgICAgICAgICAgU2RNbWNT dGF0dXNCbGs7DQo+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICAgUGFj a2V0Ow0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsN Cj4gKw0KPiArICBaZXJvTWVtICgmU2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsN Cj4gKyAgWmVyb01lbSAoJlNkTW1jU3RhdHVzQmxrLCBzaXplb2YgKFNkTW1jU3RhdHVzQmxrKSk7 DQo+ICsgIFplcm9NZW0gKCZQYWNrZXQsIHNpemVvZiAoUGFja2V0KSk7DQo+ICsNCj4gKyAgUGFj a2V0LlNkTW1jQ21kQmxrICAgID0gJlNkTW1jQ21kQmxrOw0KPiArICBQYWNrZXQuU2RNbWNTdGF0 dXNCbGsgPSAmU2RNbWNTdGF0dXNCbGs7DQo+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9IERX X01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ICsNCj4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZElu ZGV4ID0gU0RfR09fSURMRV9TVEFURTsNCj4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZFR5cGUgID0g U2RNbWNDb21tYW5kVHlwZUJjOw0KPiArDQo+ICsgIFN0YXR1cyA9IFBhc3NUaHJ1LT5QYXNzVGhy dSAoUGFzc1RocnUsIDAsICZQYWNrZXQsIE5VTEwpOw0KPiArICAvL1N0YXR1cyA9IFBhc3NUaHJ1 LT5QYXNzVGhydSAoUGFzc1RocnUsIDAsICZQYWNrZXQsIE5VTEwpOw0KPiArDQo+ICsgIHJldHVy biBTdGF0dXM7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBTZW5kIGNvbW1hbmQgU0VORF9JRl9D T05EIHRvIHRoZSBkZXZpY2UgdG8gaW5xdWlyeSB0aGUgU0QgTWVtb3J5IENhcmQNCj4gKyAgaW50 ZXJmYWNlIGNvbmRpdGlvbi4NCj4gKw0KPiArICBSZWZlciB0byBTRCBQaHlzaWNhbCBMYXllciBT aW1wbGlmaWVkIFNwZWMgNC4xIFNlY3Rpb24gNC43IGZvciBkZXRhaWxzLg0KPiArDQo+ICsgIEBw YXJhbVtpbl0gUGFzc1RocnUgICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklfU0RfTU1DX1BBU1Nf VEhSVV9QUk9UT0NPTA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0K PiArICBAcGFyYW1baW5dIFN1cHBseVZvbHRhZ2UgIFRoZSBzdXBwbGllZCB2b2x0YWdlIGJ5IHRo ZSBob3N0Lg0KPiArICBAcGFyYW1baW5dIENoZWNrUGF0dGVybiAgIFRoZSBjaGVjayBwYXR0ZXJu IHRvIGJlIHNlbnQgdG8gdGhlIGRldmljZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNT ICAgICAgIFRoZSBvcGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ICsgIEByZXR2YWwgT3Ro ZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gKw0KPiArKiovDQo+ICtFRklf U1RBVFVTDQo+ICtTZENhcmRWb2x0YWdlQ2hlY2sgKA0KPiArICBJTiBFRklfU0RfTU1DX1BBU1Nf VEhSVV9QUk9UT0NPTCAgICAgICpQYXNzVGhydSwNCj4gKyAgSU4gVUlOVDggICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTdXBwbHlWb2x0YWdlLA0KPiArICBJTiBVSU5UOCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIENoZWNrUGF0dGVybg0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9T RF9NTUNfQ09NTUFORF9CTE9DSyAgICAgICAgICAgICAgU2RNbWNDbWRCbGs7DQo+ICsgIEVGSV9T RF9NTUNfU1RBVFVTX0JMT0NLICAgICAgICAgICAgICAgU2RNbWNTdGF0dXNCbGs7DQo+ICsgIEVG SV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICAgUGFja2V0Ow0KPiArICBFRklfU1RB VFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gKw0KPiArICBaZXJvTWVt ICgmU2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsNCj4gKyAgWmVyb01lbSAoJlNk TW1jU3RhdHVzQmxrLCBzaXplb2YgKFNkTW1jU3RhdHVzQmxrKSk7DQo+ICsgIFplcm9NZW0gKCZQ YWNrZXQsIHNpemVvZiAoUGFja2V0KSk7DQo+ICsNCj4gKyAgUGFja2V0LlNkTW1jQ21kQmxrICAg ID0gJlNkTW1jQ21kQmxrOw0KPiArICBQYWNrZXQuU2RNbWNTdGF0dXNCbGsgPSAmU2RNbWNTdGF0 dXNCbGs7DQo+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9IERXX01NQ19IQ19HRU5FUklDX1RJ TUVPVVQ7DQo+ICsNCj4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEluZGV4ID0gU0RfU0VORF9JRl9D T05EOw0KPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0NvbW1hbmRUeXBlQmNy Ow0KPiArICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUgPSBTZE1tY1Jlc3BvbnNlVHlwZVI3Ow0K PiArICBTZE1tY0NtZEJsay5Db21tYW5kQXJndW1lbnQgPSAoU3VwcGx5Vm9sdGFnZSA8PCA4KSB8 IENoZWNrUGF0dGVybjsNCj4gKw0KPiArICBTdGF0dXMgPSBQYXNzVGhydS0+UGFzc1RocnUgKFBh c3NUaHJ1LCAwLCAmUGFja2V0LCBOVUxMKTsNCj4gKw0KPiArICBpZiAoIUVGSV9FUlJPUiAoU3Rh dHVzKSkgew0KPiArICAgIGlmIChTZE1tY1N0YXR1c0Jsay5SZXNwMCAhPSBTZE1tY0NtZEJsay5D b21tYW5kQXJndW1lbnQpIHsNCj4gKyAgICAgIHJldHVybiBFRklfREVWSUNFX0VSUk9SOw0KPiAr ICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9DQo+ICsNCj4gKy8q Kg0KPiArICBTZW5kIGNvbW1hbmQgU0RJT19TRU5EX09QX0NPTkQgdG8gdGhlIGRldmljZSB0byBz ZWUgd2hldGhlciBpdCBpcyBTRElPIGRldmljZS4NCj4gKw0KPiArICBSZWZlciB0byBTRElPIFNp bXBsaWZpZWQgU3BlYyAzIFNlY3Rpb24gMy4yIGZvciBkZXRhaWxzLg0KPiArDQo+ICsgIEBwYXJh bVtpbl0gUGFzc1RocnUgICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklfU0RfTU1DX1BBU1NfVEhS VV9QUk9UT0NPTA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiAr ICBAcGFyYW1baW5dIFZvbHRhZ2VXaW5kb3cgIFRoZSBzdXBwbHkgdm9sdGFnZSB3aW5kb3cuDQo+ ICsgIEBwYXJhbVtpbl0gUzE4UiAgICAgICAgICAgVGhlIGJvb2xlYW4gdG8gc2hvdyBpZiBpdCBz aG91bGQgc3dpdGNoIHRvIDEuOHYuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiArICBAcmV0dmFsIE90aGVycyAg ICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRV Uw0KPiArU2Rpb1NlbmRPcENvbmQgKA0KPiArICBJTiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9U T0NPTCAgICAgICpQYXNzVGhydSwNCj4gKyAgSU4gVUlOVDMyICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBWb2x0YWdlV2luZG93LA0KPiArICBJTiBCT09MRUFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFMxOFINCj4gKyAgKQ0KPiArew0KPiArICBFRklfU0RfTU1DX0NPTU1BTkRfQkxP Q0sgICAgICAgICAgICAgIFNkTW1jQ21kQmxrOw0KPiArICBFRklfU0RfTU1DX1NUQVRVU19CTE9D SyAgICAgICAgICAgICAgIFNkTW1jU3RhdHVzQmxrOw0KPiArICBFRklfU0RfTU1DX1BBU1NfVEhS VV9DT01NQU5EX1BBQ0tFVCAgIFBhY2tldDsNCj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTdGF0dXM7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU3dpdGNoOw0KPiArDQo+ICsgIFplcm9NZW0gKCZTZE1tY0NtZEJsaywgc2l6ZW9m IChTZE1tY0NtZEJsaykpOw0KPiArICBaZXJvTWVtICgmU2RNbWNTdGF0dXNCbGssIHNpemVvZiAo U2RNbWNTdGF0dXNCbGspKTsNCj4gKyAgWmVyb01lbSAoJlBhY2tldCwgc2l6ZW9mIChQYWNrZXQp KTsNCj4gKw0KPiArICBQYWNrZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWNDbWRCbGs7DQo+ICsg IFBhY2tldC5TZE1tY1N0YXR1c0JsayA9ICZTZE1tY1N0YXR1c0JsazsNCj4gKyAgUGFja2V0LlRp bWVvdXQgICAgICAgID0gRFdfTU1DX0hDX0dFTkVSSUNfVElNRU9VVDsNCj4gKw0KPiArICBTZE1t Y0NtZEJsay5Db21tYW5kSW5kZXggPSBTRElPX1NFTkRfT1BfQ09ORDsNCj4gKyAgU2RNbWNDbWRC bGsuQ29tbWFuZFR5cGUgID0gU2RNbWNDb21tYW5kVHlwZUJjcjsNCj4gKyAgU2RNbWNDbWRCbGsu UmVzcG9uc2VUeXBlID0gU2RNbWNSZXNwb25zZVR5cGVSNDsNCj4gKw0KPiArICBTd2l0Y2ggPSBT MThSID8gQklUMjQgOiAwOw0KPiArDQo+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRBcmd1bWVudCA9 IChWb2x0YWdlV2luZG93ICYgMHhGRkZGRkYpIHwgU3dpdGNoOw0KPiArDQo+ICsgIFN0YXR1cyA9 IFBhc3NUaHJ1LT5QYXNzVGhydSAoUGFzc1RocnUsIDAsICZQYWNrZXQsIE5VTEwpOw0KPiArDQo+ ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBTZW5kIGNvbW1hbmQg U0RfU0VORF9PUF9DT05EIHRvIHRoZSBkZXZpY2UgdG8gc2VlIHdoZXRoZXIgaXQgaXMgU0RJTyBk ZXZpY2UuDQo+ICsNCj4gKyAgUmVmZXIgdG8gU0QgUGh5c2ljYWwgTGF5ZXIgU2ltcGxpZmllZCBT cGVjIDQuMSBTZWN0aW9uIDQuNyBmb3IgZGV0YWlscy4NCj4gKw0KPiArICBAcGFyYW1baW5dICBQ YXNzVGhydSAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RP Q09MDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiArICBAcGFy YW1baW5dICBSY2EgICAgICAgICAgICBUaGUgcmVsYXRpdmUgZGV2aWNlIGFkZHJlc3Mgb2YgYWRk cmVzc2VkIGRldmljZS4NCj4gKyAgQHBhcmFtW2luXSAgVm9sdGFnZVdpbmRvdyAgVGhlIHN1cHBs eSB2b2x0YWdlIHdpbmRvdy4NCj4gKyAgQHBhcmFtW2luXSAgUzE4UiAgICAgICAgICAgVGhlIGJv b2xlYW4gdG8gc2hvdyBpZiBpdCBzaG91bGQgc3dpdGNoIHRvIDEuOHYuDQo+ICsgIEBwYXJhbVtp bl0gIFhwYyAgICAgICAgICAgIFRoZSBib29sZWFuIHRvIHNob3cgaWYgaXQgc2hvdWxkIHByb3Zp ZGUgMC4zNncNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG93ZXIgY29udHJvbC4N Cj4gKyAgQHBhcmFtW2luXSAgSGNzICAgICAgICAgICAgVGhlIGJvb2xlYW4gdG8gc2hvdyBpZiBp dCBzdXBwb3J0IGhvc3QgY2FwYWNpdHkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW5mby4NCj4gKyAgQHBhcmFtW291dF0gT2NyICAgICAgICAgICAgVGhlIGJ1ZmZlciB0byBzdG9y ZSByZXR1cm5lZCBPQ1IgcmVnaXN0ZXIgdmFsdWUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VD Q0VTUyAgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBkb25lIGNvcnJlY3RseS4NCj4gKyAgQHJldHZh bCBPdGhlcnMgICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gKw0KPiArKiovDQo+ ICtFRklfU1RBVFVTDQo+ICtTZENhcmRTZW5kT3BDb25kICgNCj4gKyAgSU4gICAgIEVGSV9TRF9N TUNfUEFTU19USFJVX1BST1RPQ09MICAqUGFzc1RocnUsDQo+ICsgIElOICAgICBVSU5UMTYgICAg ICAgICAgICAgICAgICAgICAgICAgUmNhLA0KPiArICBJTiAgICAgVUlOVDMyICAgICAgICAgICAg ICAgICAgICAgICAgIFZvbHRhZ2VXaW5kb3csDQo+ICsgIElOICAgICBCT09MRUFOICAgICAgICAg ICAgICAgICAgICAgICAgUzE4UiwNCj4gKyAgSU4gICAgIEJPT0xFQU4gICAgICAgICAgICAgICAg ICAgICAgICBYcGMsDQo+ICsgIElOICAgICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAg SGNzLA0KPiArICAgICBPVVQgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICpPY3INCj4g KyAgKQ0KPiArew0KPiArICBFRklfU0RfTU1DX0NPTU1BTkRfQkxPQ0sgICAgICAgICAgICAgIFNk TW1jQ21kQmxrOw0KPiArICBFRklfU0RfTU1DX1NUQVRVU19CTE9DSyAgICAgICAgICAgICAgIFNk TW1jU3RhdHVzQmxrOw0KPiArICBFRklfU0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAg IFBhY2tldDsNCj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0 dXM7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3dpdGNoOw0K PiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heFBvd2VyOw0KPiAr ICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvc3RDYXBhY2l0eTsNCj4g Kw0KPiArICBaZXJvTWVtICgmU2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsNCj4g KyAgWmVyb01lbSAoJlNkTW1jU3RhdHVzQmxrLCBzaXplb2YgKFNkTW1jU3RhdHVzQmxrKSk7DQo+ ICsgIFplcm9NZW0gKCZQYWNrZXQsIHNpemVvZiAoUGFja2V0KSk7DQo+ICsNCj4gKyAgUGFja2V0 LlNkTW1jQ21kQmxrICAgID0gJlNkTW1jQ21kQmxrOw0KPiArICBQYWNrZXQuU2RNbWNTdGF0dXNC bGsgPSAmU2RNbWNTdGF0dXNCbGs7DQo+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9IERXX01N Q19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ICsNCj4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEluZGV4 ID0gU0RfQVBQX0NNRDsNCj4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZFR5cGUgID0gU2RNbWNDb21t YW5kVHlwZUFjOw0KPiArICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUgPSBTZE1tY1Jlc3BvbnNl VHlwZVIxOw0KPiArICBTZE1tY0NtZEJsay5Db21tYW5kQXJndW1lbnQgPSAoVUlOVDMyKVJjYSA8 PCAxNjsNCj4gKw0KPiArICBTdGF0dXMgPSBQYXNzVGhydS0+UGFzc1RocnUgKFBhc3NUaHJ1LCAw LCAmUGFja2V0LCBOVUxMKTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAg IHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKw0KPiArICBTZE1tY0NtZEJsay5Db21tYW5kSW5k ZXggPSBTRF9TRU5EX09QX0NPTkQ7DQo+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRUeXBlICA9IFNk TW1jQ29tbWFuZFR5cGVCY3I7DQo+ICsgIFNkTW1jQ21kQmxrLlJlc3BvbnNlVHlwZSA9IFNkTW1j UmVzcG9uc2VUeXBlUjM7DQo+ICsNCj4gKyAgU3dpdGNoICAgICAgID0gUzE4UiA/IEJJVDI0IDog MDsNCj4gKyAgTWF4UG93ZXIgICAgID0gWHBjID8gQklUMjggOiAwOw0KPiArICBIb3N0Q2FwYWNp dHkgPSBIY3MgPyBCSVQzMCA6IDA7DQo+ICsNCj4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFyZ3Vt ZW50ID0gKFZvbHRhZ2VXaW5kb3cgJiAweEZGRkZGRikgfCBTd2l0Y2ggfCBcDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE1heFBvd2VyIHwgSG9zdENhcGFjaXR5Ow0KPiArDQo+ ICsgIFN0YXR1cyA9IFBhc3NUaHJ1LT5QYXNzVGhydSAoUGFzc1RocnUsIDAsICZQYWNrZXQsIE5V TEwpOw0KPiArICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgICpPY3IgPSBTZE1t Y1N0YXR1c0Jsay5SZXNwMDsNCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9 DQo+ICsNCj4gKy8qKg0KPiArICBCcm9hZGNhc3QgY29tbWFuZCBBTExfU0VORF9DSUQgdG8gdGhl IGJ1cyB0byBhc2sgYWxsIHRoZSBTRCBkZXZpY2VzIHRvIHNlbmQNCj4gKyAgdGhlIGRhdGEgb2Yg dGhlaXIgQ0lEIHJlZ2lzdGVycy4NCj4gKw0KPiArICBSZWZlciB0byBTRCBQaHlzaWNhbCBMYXll ciBTaW1wbGlmaWVkIFNwZWMgNC4xIFNlY3Rpb24gNC43IGZvciBkZXRhaWxzLg0KPiArDQo+ICsg IEBwYXJhbVtpbl0gUGFzc1RocnUgICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklfU0RfTU1DX1BB U1NfVEhSVV9QUk9UT0NPTA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNl Lg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBk b25lIGNvcnJlY3RseS4NCj4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgb3BlcmF0 aW9uIGZhaWxzLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK1NkQ2FyZEFsbFNlbmRD aWQgKA0KPiArICBJTiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICpQYXNzVGhy dQ0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TRF9NTUNfQ09NTUFORF9CTE9DSyAgICAgICAgICAg ICAgU2RNbWNDbWRCbGs7DQo+ICsgIEVGSV9TRF9NTUNfU1RBVFVTX0JMT0NLICAgICAgICAgICAg ICAgU2RNbWNTdGF0dXNCbGs7DQo+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFD S0VUICAgUGFja2V0Ow0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAg IFN0YXR1czsNCj4gKw0KPiArICBaZXJvTWVtICgmU2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWND bWRCbGspKTsNCj4gKyAgWmVyb01lbSAoJlNkTW1jU3RhdHVzQmxrLCBzaXplb2YgKFNkTW1jU3Rh dHVzQmxrKSk7DQo+ICsgIFplcm9NZW0gKCZQYWNrZXQsIHNpemVvZiAoUGFja2V0KSk7DQo+ICsN Cj4gKyAgUGFja2V0LlNkTW1jQ21kQmxrICAgID0gJlNkTW1jQ21kQmxrOw0KPiArICBQYWNrZXQu U2RNbWNTdGF0dXNCbGsgPSAmU2RNbWNTdGF0dXNCbGs7DQo+ICsgIFBhY2tldC5UaW1lb3V0ICAg ICAgICA9IERXX01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ICsNCj4gKyAgU2RNbWNDbWRCbGsu Q29tbWFuZEluZGV4ID0gU0RfQUxMX1NFTkRfQ0lEOw0KPiArICBTZE1tY0NtZEJsay5Db21tYW5k VHlwZSAgPSBTZE1tY0NvbW1hbmRUeXBlQmNyOw0KPiArICBTZE1tY0NtZEJsay5SZXNwb25zZVR5 cGUgPSBTZE1tY1Jlc3BvbnNlVHlwZVIyOw0KPiArDQo+ICsgIFN0YXR1cyA9IFBhc3NUaHJ1LT5Q YXNzVGhydSAoUGFzc1RocnUsIDAsICZQYWNrZXQsIE5VTEwpOw0KPiArDQo+ICsgIHJldHVybiBT dGF0dXM7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBTZW5kIGNvbW1hbmQgU0VUX1JFTEFUSVZF X0FERFIgdG8gdGhlIFNEIGRldmljZSB0byBhc3NpZ24gYSBSZWxhdGl2ZSBkZXZpY2UNCj4gKyAg QWRkcmVzcyAoUkNBKS4NCj4gKw0KPiArICBSZWZlciB0byBTRCBQaHlzaWNhbCBMYXllciBTaW1w bGlmaWVkIFNwZWMgNC4xIFNlY3Rpb24gNC43IGZvciBkZXRhaWxzLg0KPiArDQo+ICsgIEBwYXJh bVtpbl0gIFBhc3NUaHJ1ICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklfU0RfTU1DX1BBU1NfVEhS VV9QUk9UT0NPTA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiAr ICBAcGFyYW1bb3V0XSBSY2EgICAgICAgICAgIFRoZSByZWxhdGl2ZSBkZXZpY2UgYWRkcmVzcyB0 byBhc3NpZ24uDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgb3BlcmF0 aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRo ZSBvcGVyYXRpb24gZmFpbHMuDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArU2RDYXJk U2V0UmNhICgNCj4gKyAgSU4gICAgIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAqUGFz c1RocnUsDQo+ICsgICAgIE9VVCBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgKlJjYQ0K PiArICApDQo+ICt7DQo+ICsgIEVGSV9TRF9NTUNfQ09NTUFORF9CTE9DSyAgICAgICAgICAgICAg U2RNbWNDbWRCbGs7DQo+ICsgIEVGSV9TRF9NTUNfU1RBVFVTX0JMT0NLICAgICAgICAgICAgICAg U2RNbWNTdGF0dXNCbGs7DQo+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VU ICAgUGFja2V0Ow0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0 YXR1czsNCj4gKw0KPiArICBaZXJvTWVtICgmU2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRC bGspKTsNCj4gKyAgWmVyb01lbSAoJlNkTW1jU3RhdHVzQmxrLCBzaXplb2YgKFNkTW1jU3RhdHVz QmxrKSk7DQo+ICsgIFplcm9NZW0gKCZQYWNrZXQsIHNpemVvZiAoUGFja2V0KSk7DQo+ICsNCj4g KyAgUGFja2V0LlNkTW1jQ21kQmxrICAgID0gJlNkTW1jQ21kQmxrOw0KPiArICBQYWNrZXQuU2RN bWNTdGF0dXNCbGsgPSAmU2RNbWNTdGF0dXNCbGs7DQo+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAg ICA9IERXX01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ICsNCj4gKyAgU2RNbWNDbWRCbGsuQ29t bWFuZEluZGV4ID0gU0RfU0VUX1JFTEFUSVZFX0FERFI7DQo+ICsgIFNkTW1jQ21kQmxrLkNvbW1h bmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVCY3I7DQo+ICsgIFNkTW1jQ21kQmxrLlJlc3BvbnNl VHlwZSA9IFNkTW1jUmVzcG9uc2VUeXBlUjY7DQo+ICsNCj4gKyAgU3RhdHVzID0gUGFzc1RocnUt PlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ICsgIGlmICghRUZJX0VS Uk9SIChTdGF0dXMpKSB7DQo+ICsgICAgKlJjYSA9IChVSU5UMTYpKFNkTW1jU3RhdHVzQmxrLlJl c3AwID4+IDE2KTsNCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9DQo+ICsN Cj4gKy8qKg0KPiArICBTZW5kIGNvbW1hbmQgU0VORF9DU0QgdG8gdGhlIFNEIGRldmljZSB0byBn ZXQgdGhlIGRhdGEgb2YgdGhlIENTRCByZWdpc3Rlci4NCj4gKw0KPiArICBSZWZlciB0byBTRCBQ aHlzaWNhbCBMYXllciBTaW1wbGlmaWVkIFNwZWMgNC4xIFNlY3Rpb24gNC43IGZvciBkZXRhaWxz Lg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIFBhc3NUaHJ1ICAgICAgQSBwb2ludGVyIHRvIHRoZSBF RklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGluc3RhbmNlLg0KPiArICBAcGFyYW1baW5dICBSY2EgICAgICAgICAgIFRoZSByZWxhdGl2 ZSBkZXZpY2UgYWRkcmVzcyBvZiBzZWxlY3RlZCBkZXZpY2UuDQo+ICsgIEBwYXJhbVtvdXRdIENz ZCAgICAgICAgICAgVGhlIGJ1ZmZlciB0byBzdG9yZSB0aGUgY29udGVudCBvZiB0aGUgQ1NEIHJl Z2lzdGVyLg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGUgdGhlIGNhbGxlciBz aG91bGQgaWdub3JlIHRoZSBsb3dlc3QgYnl0ZSBvZg0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRoaXMgYnVmZmVyIGFzIHRoZSBjb250ZW50IG9mIHRoaXMgYnl0ZSBpcyBtZWFuaW5n LQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlc3MgZXZlbiBpZiB0aGUgb3BlcmF0 aW9uIHN1Y2NlZWRzLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIG9w ZXJhdGlvbiBpcyBkb25lIGNvcnJlY3RseS4NCj4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAg ICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK1Nk Q2FyZEdldENzZCAoDQo+ICsgIElOICAgICBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAg KlBhc3NUaHJ1LA0KPiArICBJTiAgICAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgIFJj YSwNCj4gKyAgICAgT1VUIFNEX0NTRCAgICAgICAgICAgICAgICAgICAgICAgICAqQ3NkDQo+ICsg ICkNCj4gK3sNCj4gKyAgRUZJX1NEX01NQ19DT01NQU5EX0JMT0NLICAgICAgICAgICAgICBTZE1t Y0NtZEJsazsNCj4gKyAgRUZJX1NEX01NQ19TVEFUVVNfQkxPQ0sgICAgICAgICAgICAgICBTZE1t Y1N0YXR1c0JsazsNCj4gKyAgRUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgICBQ YWNrZXQ7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVz Ow0KPiArDQo+ICsgIFplcm9NZW0gKCZTZE1tY0NtZEJsaywgc2l6ZW9mIChTZE1tY0NtZEJsaykp Ow0KPiArICBaZXJvTWVtICgmU2RNbWNTdGF0dXNCbGssIHNpemVvZiAoU2RNbWNTdGF0dXNCbGsp KTsNCj4gKyAgWmVyb01lbSAoJlBhY2tldCwgc2l6ZW9mIChQYWNrZXQpKTsNCj4gKw0KPiArICBQ YWNrZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWNDbWRCbGs7DQo+ICsgIFBhY2tldC5TZE1tY1N0 YXR1c0JsayA9ICZTZE1tY1N0YXR1c0JsazsNCj4gKyAgUGFja2V0LlRpbWVvdXQgICAgICAgID0g RFdfTU1DX0hDX0dFTkVSSUNfVElNRU9VVDsNCj4gKw0KPiArICBTZE1tY0NtZEJsay5Db21tYW5k SW5kZXggPSBTRF9TRU5EX0NTRDsNCj4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZFR5cGUgID0gU2RN bWNDb21tYW5kVHlwZUFjOw0KPiArICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUgPSBTZE1tY1Jl c3BvbnNlVHlwZVIyOw0KPiArICBTZE1tY0NtZEJsay5Db21tYW5kQXJndW1lbnQgPSAoVUlOVDMy KVJjYSA8PCAxNjsNCj4gKw0KPiArICBTdGF0dXMgPSBQYXNzVGhydS0+UGFzc1RocnUgKFBhc3NU aHJ1LCAwLCAmUGFja2V0LCBOVUxMKTsNCj4gKyAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsN Cj4gKyAgICBDb3B5TWVtICgoKFVJTlQ4KilDc2QpICsgMSwgJlNkTW1jU3RhdHVzQmxrLlJlc3Aw LCBzaXplb2YgKFNEX0NTRCkgLSAxKTsNCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiBTdGF0dXM7 DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBTZW5kIGNvbW1hbmQgU0VORF9DU0QgdG8gdGhlIFNE IGRldmljZSB0byBnZXQgdGhlIGRhdGEgb2YgdGhlIENTRCByZWdpc3Rlci4NCj4gKw0KPiArICBS ZWZlciB0byBTRCBQaHlzaWNhbCBMYXllciBTaW1wbGlmaWVkIFNwZWMgNC4xIFNlY3Rpb24gNC43 IGZvciBkZXRhaWxzLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIFBhc3NUaHJ1ICAgICAgQSBwb2lu dGVyIHRvIHRoZSBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiArICBAcGFyYW1baW5dICBSY2EgICAgICAgICAg IFRoZSByZWxhdGl2ZSBkZXZpY2UgYWRkcmVzcyBvZiBzZWxlY3RlZCBkZXZpY2UuDQo+ICsgIEBw YXJhbVtvdXRdIFNjciAgICAgICAgICAgVGhlIGJ1ZmZlciB0byBzdG9yZSB0aGUgY29udGVudCBv ZiB0aGUgU0NSIHJlZ2lzdGVyLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAg VGhlIG9wZXJhdGlvbiBpcyBkb25lIGNvcnJlY3RseS4NCj4gKyAgQHJldHZhbCBPdGhlcnMgICAg ICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMN Cj4gK1NkQ2FyZEdldFNjciAoDQo+ICsgIElOICAgICBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9U T0NPTCAgKlBhc3NUaHJ1LA0KPiArICBJTiAgICAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAg ICAgIFJjYSwNCj4gKyAgICAgT1VUIFNEX1NDUiAgICAgICAgICAgICAgICAgICAgICAgICAqU2Ny DQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NEX01NQ19DT01NQU5EX0JMT0NLICAgICAgICAgICAg ICBTZE1tY0NtZEJsazsNCj4gKyAgRUZJX1NEX01NQ19TVEFUVVNfQkxPQ0sgICAgICAgICAgICAg ICBTZE1tY1N0YXR1c0JsazsNCj4gKyAgRUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNL RVQgICBQYWNrZXQ7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAg U3RhdHVzOw0KPiArDQo+ICsgIFplcm9NZW0gKCZTZE1tY0NtZEJsaywgc2l6ZW9mIChTZE1tY0Nt ZEJsaykpOw0KPiArICBaZXJvTWVtICgmU2RNbWNTdGF0dXNCbGssIHNpemVvZiAoU2RNbWNTdGF0 dXNCbGspKTsNCj4gKyAgWmVyb01lbSAoJlBhY2tldCwgc2l6ZW9mIChQYWNrZXQpKTsNCj4gKw0K PiArICBQYWNrZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWNDbWRCbGs7DQo+ICsgIFBhY2tldC5T ZE1tY1N0YXR1c0JsayA9ICZTZE1tY1N0YXR1c0JsazsNCj4gKyAgUGFja2V0LlRpbWVvdXQgICAg ICAgID0gRFdfTU1DX0hDX0dFTkVSSUNfVElNRU9VVDsNCj4gKw0KPiArICBTZE1tY0NtZEJsay5D b21tYW5kSW5kZXggPSBTRF9BUFBfQ01EOw0KPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAg PSBTZE1tY0NvbW1hbmRUeXBlQWM7DQo+ICsgIFNkTW1jQ21kQmxrLlJlc3BvbnNlVHlwZSA9IFNk TW1jUmVzcG9uc2VUeXBlUjE7DQo+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRBcmd1bWVudCA9IChV SU5UMzIpUmNhIDw8IDE2Ow0KPiArDQo+ICsgIFN0YXR1cyA9IFBhc3NUaHJ1LT5QYXNzVGhydSAo UGFzc1RocnUsIDAsICZQYWNrZXQsIE5VTEwpOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMp KSB7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsgIFNkTW1jQ21kQmxr LkNvbW1hbmRJbmRleCA9IFNEX1NFTkRfU0NSOw0KPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlw ZSAgPSBTZE1tY0NvbW1hbmRUeXBlQWR0YzsNCj4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBl ID0gU2RNbWNSZXNwb25zZVR5cGVSMTsNCj4gKw0KPiArICBQYWNrZXQuSW5EYXRhQnVmZmVyICAg ICA9IFNjcjsNCj4gKyAgUGFja2V0LkluVHJhbnNmZXJMZW5ndGggPSBzaXplb2YgKFNEX1NDUik7 DQo+ICsNCj4gKyAgU3RhdHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBh Y2tldCwgTlVMTCk7DQo+ICsNCj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gK30NCj4gKw0KPiArLyoq DQo+ICsgIFNlbmQgY29tbWFuZCBTRUxFQ1RfREVTRUxFQ1RfQ0FSRCB0byB0aGUgU0QgZGV2aWNl IHRvIHNlbGVjdC9kZXNlbGVjdCBpdC4NCj4gKw0KPiArICBSZWZlciB0byBTRCBQaHlzaWNhbCBM YXllciBTaW1wbGlmaWVkIFNwZWMgNC4xIFNlY3Rpb24gNC43IGZvciBkZXRhaWxzLg0KPiArDQo+ ICsgIEBwYXJhbVtpbl0gIFBhc3NUaHJ1ICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklfU0RfTU1D X1BBU1NfVEhSVV9QUk9UT0NPTA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3Rh bmNlLg0KPiArICBAcGFyYW1baW5dICBSY2EgICAgICAgICAgIFRoZSByZWxhdGl2ZSBkZXZpY2Ug YWRkcmVzcyBvZiBzZWxlY3RlZCBkZXZpY2UuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiArICBAcmV0dmFsIE90 aGVycyAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ICsNCj4gKyoqLw0KPiArRUZJ X1NUQVRVUw0KPiArU2RDYXJkU2VsZWN0ICgNCj4gKyAgSU4gRUZJX1NEX01NQ19QQVNTX1RIUlVf UFJPVE9DT0wgICAgICAqUGFzc1RocnUsDQo+ICsgIElOIFVJTlQxNiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUmNhDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NEX01NQ19DT01NQU5EX0JM T0NLICAgICAgICAgICAgICBTZE1tY0NtZEJsazsNCj4gKyAgRUZJX1NEX01NQ19TVEFUVVNfQkxP Q0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gKyAgRUZJX1NEX01NQ19QQVNTX1RI UlVfQ09NTUFORF9QQUNLRVQgICBQYWNrZXQ7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgU3RhdHVzOw0KPiArDQo+ICsgIFplcm9NZW0gKCZTZE1tY0NtZEJsaywg c2l6ZW9mIChTZE1tY0NtZEJsaykpOw0KPiArICBaZXJvTWVtICgmU2RNbWNTdGF0dXNCbGssIHNp emVvZiAoU2RNbWNTdGF0dXNCbGspKTsNCj4gKyAgWmVyb01lbSAoJlBhY2tldCwgc2l6ZW9mIChQ YWNrZXQpKTsNCj4gKw0KPiArICBQYWNrZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWNDbWRCbGs7 DQo+ICsgIFBhY2tldC5TZE1tY1N0YXR1c0JsayA9ICZTZE1tY1N0YXR1c0JsazsNCj4gKyAgUGFj a2V0LlRpbWVvdXQgICAgICAgID0gRFdfTU1DX0hDX0dFTkVSSUNfVElNRU9VVDsNCj4gKw0KPiAr ICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBTRF9TRUxFQ1RfREVTRUxFQ1RfQ0FSRDsNCj4g KyAgU2RNbWNDbWRCbGsuQ29tbWFuZFR5cGUgID0gU2RNbWNDb21tYW5kVHlwZUFjOw0KPiArICBp ZiAoUmNhICE9IDApIHsNCj4gKyAgICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUgPSBTZE1tY1Jl c3BvbnNlVHlwZVIxYjsNCj4gKyAgfQ0KPiArICBTZE1tY0NtZEJsay5Db21tYW5kQXJndW1lbnQg PSAoVUlOVDMyKVJjYSA8PCAxNjsNCj4gKw0KPiArICBTdGF0dXMgPSBQYXNzVGhydS0+UGFzc1Ro cnUgKFBhc3NUaHJ1LCAwLCAmUGFja2V0LCBOVUxMKTsNCj4gKw0KPiArICByZXR1cm4gU3RhdHVz Ow0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgU2VuZCBjb21tYW5kIFZPTFRBR0VfU1dJVENIIHRv IHRoZSBTRCBkZXZpY2UgdG8gc3dpdGNoIHRoZSB2b2x0YWdlIG9mIHRoZQ0KPiArICBkZXZpY2Uu DQo+ICsNCj4gKyAgUmVmZXIgdG8gU0QgUGh5c2ljYWwgTGF5ZXIgU2ltcGxpZmllZCBTcGVjIDQu MSBTZWN0aW9uIDQuNyBmb3IgZGV0YWlscy4NCj4gKw0KPiArICBAcGFyYW1baW5dICBQYXNzVGhy dSAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gKw0KPiArICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgIFRoZSBvcGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ICsg IEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gKw0KPiAr KiovDQo+ICtFRklfU1RBVFVTDQo+ICtTZENhcmRWb2x0YWdlU3dpdGNoICgNCj4gKyAgSU4gRUZJ X1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAqUGFzc1RocnUNCj4gKyAgKQ0KPiArew0K PiArICBFRklfU0RfTU1DX0NPTU1BTkRfQkxPQ0sgICAgICAgICAgICAgIFNkTW1jQ21kQmxrOw0K PiArICBFRklfU0RfTU1DX1NUQVRVU19CTE9DSyAgICAgICAgICAgICAgIFNkTW1jU3RhdHVzQmxr Ow0KPiArICBFRklfU0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAgIFBhY2tldDsNCj4g KyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ICsNCj4g KyAgWmVyb01lbSAoJlNkTW1jQ21kQmxrLCBzaXplb2YgKFNkTW1jQ21kQmxrKSk7DQo+ICsgIFpl cm9NZW0gKCZTZE1tY1N0YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiArICBa ZXJvTWVtICgmUGFja2V0LCBzaXplb2YgKFBhY2tldCkpOw0KPiArDQo+ICsgIFBhY2tldC5TZE1t Y0NtZEJsayAgICA9ICZTZE1tY0NtZEJsazsNCj4gKyAgUGFja2V0LlNkTW1jU3RhdHVzQmxrID0g JlNkTW1jU3RhdHVzQmxrOw0KPiArICBQYWNrZXQuVGltZW91dCAgICAgICAgPSBEV19NTUNfSENf R0VORVJJQ19USU1FT1VUOw0KPiArDQo+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRJbmRleCA9IFNE X1ZPTFRBR0VfU1dJVENIOw0KPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0Nv bW1hbmRUeXBlQWM7DQo+ICsgIFNkTW1jQ21kQmxrLlJlc3BvbnNlVHlwZSA9IFNkTW1jUmVzcG9u c2VUeXBlUjE7DQo+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRBcmd1bWVudCA9IDA7DQo+ICsNCj4g KyAgU3RhdHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwgTlVM TCk7DQo+ICsNCj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIFNl bmQgY29tbWFuZCBTRVRfQlVTX1dJRFRIIHRvIHRoZSBTRCBkZXZpY2UgdG8gc2V0IHRoZSBidXMg d2lkdGguDQo+ICsNCj4gKyAgUmVmZXIgdG8gU0QgUGh5c2ljYWwgTGF5ZXIgU2ltcGxpZmllZCBT cGVjIDQuMSBTZWN0aW9uIDQuNyBmb3IgZGV0YWlscy4NCj4gKw0KPiArICBAcGFyYW1baW5dIFBh c3NUaHJ1ICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9D T0wNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gKyAgQHBhcmFt W2luXSBSY2EgICAgICAgICAgICBUaGUgcmVsYXRpdmUgZGV2aWNlIGFkZHJlc3Mgb2YgYWRkcmVz c2VkIGRldmljZS4NCj4gKyAgQHBhcmFtW2luXSBCdXNXaWR0aCAgICAgICBUaGUgYnVzIHdpZHRo IHRvIGJlIHNldCwgaXQgY291bGQgYmUgMSBvciA0Lg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NV Q0NFU1MgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBkb25lIGNvcnJlY3RseS4NCj4gKyAgQHJldHZh bCBPdGhlcnMgICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiArDQo+ICsqKi8NCj4g K0VGSV9TVEFUVVMNCj4gK1NkQ2FyZFNldEJ1c1dpZHRoICgNCj4gKyAgSU4gRUZJX1NEX01NQ19Q QVNTX1RIUlVfUFJPVE9DT0wgICAgICAqUGFzc1RocnUsDQo+ICsgIElOIFVJTlQxNiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUmNhLA0KPiArICBJTiBVSU5UOCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEJ1c1dpZHRoDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NEX01NQ19DT01N QU5EX0JMT0NLICAgICAgICAgICAgICBTZE1tY0NtZEJsazsNCj4gKyAgRUZJX1NEX01NQ19TVEFU VVNfQkxPQ0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gKyAgRUZJX1NEX01NQ19Q QVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgICBQYWNrZXQ7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiArICBVSU5UOCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFZhbHVlOw0KPiArDQo+ICsgIFplcm9NZW0gKCZTZE1tY0NtZEJsaywg c2l6ZW9mIChTZE1tY0NtZEJsaykpOw0KPiArICBaZXJvTWVtICgmU2RNbWNTdGF0dXNCbGssIHNp emVvZiAoU2RNbWNTdGF0dXNCbGspKTsNCj4gKyAgWmVyb01lbSAoJlBhY2tldCwgc2l6ZW9mIChQ YWNrZXQpKTsNCj4gKw0KPiArICBQYWNrZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWNDbWRCbGs7 DQo+ICsgIFBhY2tldC5TZE1tY1N0YXR1c0JsayA9ICZTZE1tY1N0YXR1c0JsazsNCj4gKyAgUGFj a2V0LlRpbWVvdXQgICAgICAgID0gRFdfTU1DX0hDX0dFTkVSSUNfVElNRU9VVDsNCj4gKw0KPiAr ICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBTRF9BUFBfQ01EOw0KPiArICBTZE1tY0NtZEJs ay5Db21tYW5kVHlwZSAgPSBTZE1tY0NvbW1hbmRUeXBlQWM7DQo+ICsgIFNkTW1jQ21kQmxrLlJl c3BvbnNlVHlwZSA9IFNkTW1jUmVzcG9uc2VUeXBlUjE7DQo+ICsgIFNkTW1jQ21kQmxrLkNvbW1h bmRBcmd1bWVudCA9IChVSU5UMzIpUmNhIDw8IDE2Ow0KPiArDQo+ICsgIFN0YXR1cyA9IFBhc3NU aHJ1LT5QYXNzVGhydSAoUGFzc1RocnUsIDAsICZQYWNrZXQsIE5VTEwpOw0KPiArICBpZiAoRUZJ X0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRJbmRleCA9IFNEX1NFVF9CVVNfV0lEVEg7DQo+ICsgIFNk TW1jQ21kQmxrLkNvbW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVBYzsNCj4gKyAgU2RNbWND bWRCbGsuUmVzcG9uc2VUeXBlID0gU2RNbWNSZXNwb25zZVR5cGVSMTsNCj4gKw0KPiArICBpZiAo QnVzV2lkdGggPT0gMSkgew0KPiArICAgIFZhbHVlID0gMDsNCj4gKyAgfSBlbHNlIGlmIChCdXNX aWR0aCA9PSA0KSB7DQo+ICsgICAgVmFsdWUgPSAyOw0KPiArICB9IGVsc2Ugew0KPiArICAgIHJl dHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgIH0NCj4gKw0KPiArICBTZE1tY0NtZEJs ay5Db21tYW5kQXJndW1lbnQgPSBWYWx1ZSAmIDB4MzsNCj4gKw0KPiArICBTdGF0dXMgPSBQYXNz VGhydS0+UGFzc1RocnUgKFBhc3NUaHJ1LCAwLCAmUGFja2V0LCBOVUxMKTsNCj4gKyAgcmV0dXJu IFN0YXR1czsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIFNlbmQgY29tbWFuZCBTV0lUQ0hfRlVO QyB0byB0aGUgU0QgZGV2aWNlIHRvIGNoZWNrIHN3aXRjaGFibGUgZnVuY3Rpb24gb3INCj4gKyAg c3dpdGNoIGNhcmQgZnVuY3Rpb24uDQo+ICsNCj4gKyAgUmVmZXIgdG8gU0QgUGh5c2ljYWwgTGF5 ZXIgU2ltcGxpZmllZCBTcGVjIDQuMSBTZWN0aW9uIDQuNyBmb3IgZGV0YWlscy4NCj4gKw0KPiAr ICBAcGFyYW1baW5dICBQYXNzVGhydSAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX1NEX01NQ19Q QVNTX1RIUlVfUFJPVE9DT0wNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5j ZS4NCj4gKyAgQHBhcmFtW2luXSAgQWNjZXNzTW9kZSAgICBUaGUgdmFsdWUgZm9yIGFjY2VzcyBt b2RlIGdyb3VwLg0KPiArICBAcGFyYW1baW5dICBDb21tYW5kU3lzdGVtIFRoZSB2YWx1ZSBmb3Ig Y29tbWFuZCBzZXQgZ3JvdXAuDQo+ICsgIEBwYXJhbVtpbl0gIERyaXZlU3RyZW5ndGggVGhlIHZh bHVlIGZvciBkcml2ZSBsZW5ndGggZ3JvdXAuDQo+ICsgIEBwYXJhbVtpbl0gIFBvd2VyTGltaXQg ICAgVGhlIHZhbHVlIGZvciBwb3dlciBsaW1pdCBncm91cC4NCj4gKyAgQHBhcmFtW2luXSAgTW9k ZSAgICAgICAgICBTd2l0Y2ggb3IgY2hlY2sgZnVuY3Rpb24uDQo+ICsgIEBwYXJhbVtvdXRdIFN3 aXRjaFJlc3AgICAgVGhlIHJldHVybiBzd2l0Y2ggZnVuY3Rpb24gc3RhdHVzLg0KPiArDQo+ICsg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBkb25lIGNvcnJlY3Rs eS4NCj4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0K PiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK1NkQ2FyZFN3aXRjaCAoDQo+ICsgIElOICAg ICBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgKlBhc3NUaHJ1LA0KPiArICBJTiAgICAg VUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgIEFjY2Vzc01vZGUsDQo+ICsgIElOICAgICBV SU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZFN5c3RlbSwNCj4gKyAgSU4gICAg IFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICBEcml2ZVN0cmVuZ3RoLA0KPiArICBJTiAg ICAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgIFBvd2VyTGltaXQsDQo+ICsgIElOICAg ICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgTW9kZSwNCj4gKyAgICAgT1VUIFVJTlQ4 ICAgICAgICAgICAgICAgICAgICAgICAgICAqU3dpdGNoUmVzcA0KPiArICApDQo+ICt7DQo+ICsg IEVGSV9TRF9NTUNfQ09NTUFORF9CTE9DSyAgICAgICAgICAgICAgU2RNbWNDbWRCbGs7DQo+ICsg IEVGSV9TRF9NTUNfU1RBVFVTX0JMT0NLICAgICAgICAgICAgICAgU2RNbWNTdGF0dXNCbGs7DQo+ ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICAgUGFja2V0Ow0KPiArICBF RklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gKyAgVUlOVDMy ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb2RlVmFsdWU7DQo+ICsNCj4gKyAgWmVy b01lbSAoJlNkTW1jQ21kQmxrLCBzaXplb2YgKFNkTW1jQ21kQmxrKSk7DQo+ICsgIFplcm9NZW0g KCZTZE1tY1N0YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiArICBaZXJvTWVt ICgmUGFja2V0LCBzaXplb2YgKFBhY2tldCkpOw0KPiArDQo+ICsgIFBhY2tldC5TZE1tY0NtZEJs ayAgICA9ICZTZE1tY0NtZEJsazsNCj4gKyAgUGFja2V0LlNkTW1jU3RhdHVzQmxrID0gJlNkTW1j U3RhdHVzQmxrOw0KPiArICBQYWNrZXQuVGltZW91dCAgICAgICAgPSBEV19NTUNfSENfR0VORVJJ Q19USU1FT1VUOw0KPiArDQo+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRJbmRleCA9IFNEX1NXSVRD SF9GVU5DOw0KPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0NvbW1hbmRUeXBl QWR0YzsNCj4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBlID0gU2RNbWNSZXNwb25zZVR5cGVS MTsNCj4gKw0KPiArICBNb2RlVmFsdWUgPSBNb2RlID8gQklUMzEgOiAwOw0KPiArICBTZE1tY0Nt ZEJsay5Db21tYW5kQXJndW1lbnQgPSAoQWNjZXNzTW9kZSAmIDB4RikgfCAgICAgICAgICAgIFwN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQb3dlckxpbWl0ICYgMHhGKSA8 PCA0KSB8ICAgICBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRHJpdmVT dHJlbmd0aCAmIDB4RikgPDwgOCkgfCAgXA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoKERyaXZlU3RyZW5ndGggJiAweEYpIDw8IDEyKSB8IFwNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTW9kZVZhbHVlOw0KPiArDQo+ICsgIFBhY2tldC5JbkRhdGFCdWZm ZXIgICAgID0gU3dpdGNoUmVzcDsNCj4gKyAgUGFja2V0LkluVHJhbnNmZXJMZW5ndGggPSA2NDsN Cj4gKw0KPiArICBTdGF0dXMgPSBQYXNzVGhydS0+UGFzc1RocnUgKFBhc3NUaHJ1LCAwLCAmUGFj a2V0LCBOVUxMKTsNCj4gKw0KPiArICByZXR1cm4gU3RhdHVzOw0KPiArfQ0KPiArDQo+ICsvKioN Cj4gKyAgU2VuZCBjb21tYW5kIFNFTkRfU1RBVFVTIHRvIHRoZSBhZGRyZXNzZWQgU0QgZGV2aWNl IHRvIGdldCBpdHMgc3RhdHVzDQo+ICsgIHJlZ2lzdGVyLg0KPiArDQo+ICsgIFJlZmVyIHRvIFNE IFBoeXNpY2FsIExheWVyIFNpbXBsaWZpZWQgU3BlYyA0LjEgU2VjdGlvbiA0LjcgZm9yIGRldGFp bHMuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgUGFzc1RocnUgICAgICBBIHBvaW50ZXIgdG8gdGhl IEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gIFJjYSAgICAgICAgICAgVGhlIHJlbGF0 aXZlIGRldmljZSBhZGRyZXNzIG9mIGFkZHJlc3NlZCBkZXZpY2UuDQo+ICsgIEBwYXJhbVtvdXRd IERldlN0YXR1cyAgICAgVGhlIHJldHVybmVkIGRldmljZSBzdGF0dXMuDQo+ICsNCj4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0K PiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ICsN Cj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArU2RDYXJkU2VuZFN0YXR1cyAoDQo+ICsgIElOICAg ICBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgKlBhc3NUaHJ1LA0KPiArICBJTiAgICAg VUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgIFJjYSwNCj4gKyAgICAgT1VUIFVJTlQzMiAg ICAgICAgICAgICAgICAgICAgICAgICAqRGV2U3RhdHVzDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJ X1NEX01NQ19DT01NQU5EX0JMT0NLICAgICAgICAgICAgICBTZE1tY0NtZEJsazsNCj4gKyAgRUZJ X1NEX01NQ19TVEFUVVNfQkxPQ0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gKyAg RUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgICBQYWNrZXQ7DQo+ICsgIEVGSV9T VEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiArDQo+ICsgIFplcm9N ZW0gKCZTZE1tY0NtZEJsaywgc2l6ZW9mIChTZE1tY0NtZEJsaykpOw0KPiArICBaZXJvTWVtICgm U2RNbWNTdGF0dXNCbGssIHNpemVvZiAoU2RNbWNTdGF0dXNCbGspKTsNCj4gKyAgWmVyb01lbSAo JlBhY2tldCwgc2l6ZW9mIChQYWNrZXQpKTsNCj4gKw0KPiArICBQYWNrZXQuU2RNbWNDbWRCbGsg ICAgPSAmU2RNbWNDbWRCbGs7DQo+ICsgIFBhY2tldC5TZE1tY1N0YXR1c0JsayA9ICZTZE1tY1N0 YXR1c0JsazsNCj4gKyAgUGFja2V0LlRpbWVvdXQgICAgICAgID0gRFdfTU1DX0hDX0dFTkVSSUNf VElNRU9VVDsNCj4gKw0KPiArICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBTRF9TRU5EX1NU QVRVUzsNCj4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZFR5cGUgID0gU2RNbWNDb21tYW5kVHlwZUFj Ow0KPiArICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUgPSBTZE1tY1Jlc3BvbnNlVHlwZVIxOw0K PiArICBTZE1tY0NtZEJsay5Db21tYW5kQXJndW1lbnQgPSAoVUlOVDMyKVJjYSA8PCAxNjsNCj4g Kw0KPiArICBTdGF0dXMgPSBQYXNzVGhydS0+UGFzc1RocnUgKFBhc3NUaHJ1LCAwLCAmUGFja2V0 LCBOVUxMKTsNCj4gKyAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICAqRGV2U3Rh dHVzID0gU2RNbWNTdGF0dXNCbGsuUmVzcDA7DQo+ICsgIH0NCj4gKw0KPiArICByZXR1cm4gU3Rh dHVzOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgU2VuZCBjb21tYW5kIFNFTkRfVFVOSU5HX0JM T0NLIHRvIHRoZSBTRCBkZXZpY2UgZm9yIEhTMjAwIG9wdGltYWwgc2FtcGxpbmcNCj4gKyAgcG9p bnQgZGV0ZWN0aW9uLg0KPiArDQo+ICsgIEl0IG1heSBiZSBzZW50IHVwIHRvIDQwIHRpbWVzIHVu dGlsIHRoZSBob3N0IGZpbmlzaGVzIHRoZSB0dW5pbmcgcHJvY2VkdXJlLg0KPiArDQo+ICsgIFJl ZmVyIHRvIFNEIFBoeXNpY2FsIExheWVyIFNpbXBsaWZpZWQgU3BlYyA0LjEgU2VjdGlvbiA0Ljcg Zm9yIGRldGFpbHMuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBQYXNzVGhydSAgICAgICBBIHBvaW50 ZXIgdG8gdGhlIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiArICBAcmV0dmFsIE90aGVy cyAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NU QVRVUw0KPiArU2RDYXJkU2VuZFR1bmluZ0JsayAoDQo+ICsgIElOIEVGSV9TRF9NTUNfUEFTU19U SFJVX1BST1RPQ09MICAgICAgKlBhc3NUaHJ1DQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NEX01N Q19DT01NQU5EX0JMT0NLICAgICAgICAgICAgICBTZE1tY0NtZEJsazsNCj4gKyAgRUZJX1NEX01N Q19TVEFUVVNfQkxPQ0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gKyAgRUZJX1NE X01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgICBQYWNrZXQ7DQo+ICsgIEVGSV9TVEFUVVMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiArICBVSU5UOCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFR1bmluZ0Jsb2NrWzY0XTsNCj4gKw0KPiArICBaZXJvTWVt ICgmU2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsNCj4gKyAgWmVyb01lbSAoJlNk TW1jU3RhdHVzQmxrLCBzaXplb2YgKFNkTW1jU3RhdHVzQmxrKSk7DQo+ICsgIFplcm9NZW0gKCZQ YWNrZXQsIHNpemVvZiAoUGFja2V0KSk7DQo+ICsNCj4gKyAgUGFja2V0LlNkTW1jQ21kQmxrICAg ID0gJlNkTW1jQ21kQmxrOw0KPiArICBQYWNrZXQuU2RNbWNTdGF0dXNCbGsgPSAmU2RNbWNTdGF0 dXNCbGs7DQo+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9IERXX01NQ19IQ19HRU5FUklDX1RJ TUVPVVQ7DQo+ICsNCj4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEluZGV4ID0gU0RfU0VORF9UVU5J TkdfQkxPQ0s7DQo+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5 cGVBZHRjOw0KPiArICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUgPSBTZE1tY1Jlc3BvbnNlVHlw ZVIxOw0KPiArICBTZE1tY0NtZEJsay5Db21tYW5kQXJndW1lbnQgPSAwOw0KPiArDQo+ICsgIFBh Y2tldC5JbkRhdGFCdWZmZXIgICAgID0gVHVuaW5nQmxvY2s7DQo+ICsgIFBhY2tldC5JblRyYW5z ZmVyTGVuZ3RoID0gc2l6ZW9mIChUdW5pbmdCbG9jayk7DQo+ICsNCj4gKyAgU3RhdHVzID0gUGFz c1RocnUtPlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ICsNCj4gKyAg cmV0dXJuIFN0YXR1czsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIFN3aXRjaCB0aGUgYnVzIHdp ZHRoIHRvIHNwZWNpZmllZCB3aWR0aC4NCj4gKw0KPiArICBSZWZlciB0byBTRCBQaHlzaWNhbCBM YXllciBTaW1wbGlmaWVkIFNwZWMgNC4xIFNlY3Rpb24gNC43IGFuZA0KPiArICBTRCBIb3N0IENv bnRyb2xsZXIgU2ltcGxpZmllZCBTcGVjIDMuMCBzZWN0aW9uIEZpZ3VyZSAzLTcgZm9yIGRldGFp bHMuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBQY2lJbyAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhl IEVGSV9QQ0lfSU9fUFJPVE9DT0wgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gUGFzc1RocnUg ICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiArICBAcGFyYW1baW5dIFJj YSAgICAgICAgICAgIFRoZSByZWxhdGl2ZSBkZXZpY2UgYWRkcmVzcyB0byBiZSBhc3NpZ25lZC4N Cj4gKyAgQHBhcmFtW2luXSBCdXNXaWR0aCAgICAgICBUaGUgYnVzIHdpZHRoIHRvIGJlIHNldCwg aXQgY291bGQgYmUgNCBvciA4Lg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAg VGhlIG9wZXJhdGlvbiBpcyBkb25lIGNvcnJlY3RseS4NCj4gKyAgQHJldHZhbCBPdGhlcnMgICAg ICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMN Cj4gK1NkQ2FyZFN3aXRjaEJ1c1dpZHRoICgNCj4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBEZXZCYXNlLA0KPiArICBJTiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9U T0NPTCAgICAgICpQYXNzVGhydSwNCj4gKyAgSU4gVUlOVDE2ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBSY2EsDQo+ICsgIElOIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg SXNEZHIsDQo+ICsgIElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVzV2lk dGgNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgICAgICAgIFN0YXR1czsNCj4gKyAg VUlOVDMyICAgICAgICAgICAgICBEZXZTdGF0dXM7DQo+ICsNCj4gKyAgU3RhdHVzID0gU2RDYXJk U2V0QnVzV2lkdGggKFBhc3NUaHJ1LCBSY2EsIEJ1c1dpZHRoKTsNCj4gKyAgaWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgew0KPiArICAgIERFQlVHICgoDQo+ICsgICAgICBERUJVR19FUlJPUiwNCj4g KyAgICAgICJTZENhcmRTd2l0Y2hCdXNXaWR0aDogU3dpdGNoIHRvIGJ1cyB3aWR0aCAlZCBmYWls cyB3aXRoICVyXG4iLA0KPiArICAgICAgQnVzV2lkdGgsDQo+ICsgICAgICBTdGF0dXMNCj4gKyAg ICAgICkpOw0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKw0KPiArICBTdGF0dXMg PSBTZENhcmRTZW5kU3RhdHVzIChQYXNzVGhydSwgUmNhLCAmRGV2U3RhdHVzKTsNCj4gKyAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIERFQlVHICgoDQo+ICsgICAgICBERUJVR19F UlJPUiwNCj4gKyAgICAgICJTZENhcmRTd2l0Y2hCdXNXaWR0aDogU2VuZCBzdGF0dXMgZmFpbHMg d2l0aCAlclxuIiwNCj4gKyAgICAgIFN0YXR1cw0KPiArICAgICAgKSk7DQo+ICsgICAgcmV0dXJu IFN0YXR1czsNCj4gKyAgfQ0KPiArICAvLw0KPiArICAvLyBDaGVjayB0aGUgc3dpdGNoIG9wZXJh dGlvbiBpcyByZWFsbHkgc3VjY2Vzc2Z1bCBvciBub3QuDQo+ICsgIC8vDQo+ICsgIGlmICgoRGV2 U3RhdHVzID4+IDE2KSAhPSAwKSB7DQo+ICsgICAgREVCVUcgKCgNCj4gKyAgICAgIERFQlVHX0VS Uk9SLA0KPiArICAgICAgIlNkQ2FyZFN3aXRjaEJ1c1dpZHRoOiBUaGUgc3dpdGNoIG9wZXJhdGlv biBmYWlscyBhcyBEZXZTdGF0dXMgMHglMDh4XG4iLA0KPiArICAgICAgRGV2U3RhdHVzDQo+ICsg ICAgICApKTsNCj4gKyAgICByZXR1cm4gRUZJX0RFVklDRV9FUlJPUjsNCj4gKyAgfQ0KPiArDQo+ ICsgIFN0YXR1cyA9IER3TW1jSGNTZXRCdXNXaWR0aCAoRGV2QmFzZSwgSXNEZHIsIEJ1c1dpZHRo KTsNCj4gKw0KPiArICByZXR1cm4gU3RhdHVzOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgU3dp dGNoIHRoZSBoaWdoIHNwZWVkIHRpbWluZyBhY2NvcmRpbmcgdG8gcmVxdWVzdC4NCj4gKw0KPiAr ICBSZWZlciB0byBTRCBQaHlzaWNhbCBMYXllciBTaW1wbGlmaWVkIFNwZWMgNC4xIFNlY3Rpb24g NC43IGZvciBkZXRhaWxzLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gUGNpSW8gICAgICAgICAgQSBw b2ludGVyIHRvIHRoZSBFRklfUENJX0lPX1BST1RPQ09MIGluc3RhbmNlLg0KPiArICBAcGFyYW1b aW5dIFBhc3NUaHJ1ICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX1NEX01NQ19QQVNTX1RIUlVf UFJPVE9DT0wNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gKyAg QHBhcmFtW2luXSBSY2EgICAgICAgICAgICBUaGUgcmVsYXRpdmUgZGV2aWNlIGFkZHJlc3MgdG8g YmUgYXNzaWduZWQuDQo+ICsgIEBwYXJhbVtpbl0gUzE4QSAgICAgICAgICAgVGhlIGJvb2xlYW4g dG8gc2hvdyBpZiBpdCdzIGEgVUhTLUkgU0QgY2FyZC4NCj4gKyAgQHBhcmFtW2luXSBCdXNXaWR0 aHMgICAgICBUaGUgYnVzIHdpZHRoIG9mIHRoZSBTRCBjYXJkLg0KPiArDQo+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBkb25lIGNvcnJlY3RseS4NCj4gKyAg QHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiArDQo+ICsq Ki8NCj4gK0VGSV9TVEFUVVMNCj4gK1NkQ2FyZFNldEJ1c01vZGUgKA0KPiArICBJTiBVSU5UTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldkJhc2UsDQo+ICsgIElOIEVGSV9TRF9NTUNf UEFTU19USFJVX1BST1RPQ09MICAgICAgKlBhc3NUaHJ1LA0KPiArICBJTiBVSU5UMTYgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFJjYSwNCj4gKyAgSU4gQk9PTEVBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTMThBLA0KPiArICBJTiBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEJ1c1dpZHRocw0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAg ICAgICAgICAgU3RhdHVzOw0KPiArICBEV19NTUNfSENfU0xPVF9DQVAgICAgICAgICAgICpDYXBh YmlsaXR5Ow0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgIENsb2NrRnJlcTsNCj4g KyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICBBY2Nlc3NNb2RlOw0KPiArICBVSU5UOCAg ICAgICAgICAgICAgICAgICAgICAgIFN3aXRjaFJlc3BbNjRdOw0KPiArICBEV19NTUNfSENfUFJJ VkFURV9EQVRBICAgICAgICpQcml2YXRlOw0KPiArICBCT09MRUFOICAgICAgICAgICAgICAgICAg ICAgIElzRGRyOw0KPiArDQo+ICsgIFByaXZhdGUgPSBEV19NTUNfSENfUFJJVkFURV9GUk9NX1RI SVMgKFBhc3NUaHJ1KTsNCj4gKw0KPiArICBDYXBhYmlsaXR5ID0gJlByaXZhdGUtPkNhcGFiaWxp dHlbMF07DQo+ICsNCj4gKyAgaWYgKChDYXBhYmlsaXR5LT5CdXNXaWR0aCA9PSAxKSB8fCAoQ2Fw YWJpbGl0eS0+QnVzV2lkdGggPT0gNCkpIHsNCj4gKyAgICBCdXNXaWR0aHMgJj0gQ2FwYWJpbGl0 eVswXS5CdXNXaWR0aDsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICBERUJVRyAoKA0KPiArICAgICAg REVCVUdfRVJST1IsDQo+ICsgICAgICAiU2RDYXJkU2V0QnVzTW9kZTogQnVzV2lkdGhzICglZCkg aW4gY2FwYWJpbGl0eSBhcmUgd3JvbmdcbiIsDQo+ICsgICAgICBDYXBhYmlsaXR5LT5CdXNXaWR0 aA0KPiArICAgICAgKSk7DQo+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4g KyAgfQ0KPiArDQo+ICsgIGlmIChCdXNXaWR0aHMgPT0gMCkgew0KPiArICAgIERFQlVHICgoDQo+ ICsgICAgICBERUJVR19FUlJPUiwNCj4gKyAgICAgICJTZENhcmRTZXRCdXNNb2RlOiBHZXQgd3Jv bmcgQnVzV2lkdGhzOiVkXG4iLA0KPiArICAgICAgQnVzV2lkdGhzDQo+ICsgICAgICApKTsNCj4g KyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICB9DQo+ICsNCj4gKyAgaWYg KFByaXZhdGUtPkNhcGFiaWxpdHlbMF0uRGRyNTApIHsNCj4gKyAgICBJc0RkciA9IFRSVUU7DQo+ ICsgIH0gZWxzZSB7DQo+ICsgICAgSXNEZHIgPSBGQUxTRTsNCj4gKyAgfQ0KPiArDQo+ICsgIFN0 YXR1cyA9IFNkQ2FyZFN3aXRjaEJ1c1dpZHRoIChEZXZCYXNlLCBQYXNzVGhydSwgUmNhLCBJc0Rk ciwgQnVzV2lkdGhzKTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIERF QlVHICgoDQo+ICsgICAgICBERUJVR19FUlJPUiwNCj4gKyAgICAgICJTZENhcmRTZXRCdXNNb2Rl OiBFeGVjdXRpbmcgU2RDYXJkU3dpdGNoQnVzV2lkdGggZmFpbHMgd2l0aCAlclxuIiwNCj4gKyAg ICAgIFN0YXR1cw0KPiArICAgICAgKSk7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0K PiArDQo+ICsgIC8vDQo+ICsgIC8vIEdldCB0aGUgc3VwcG9ydGVkIGJ1cyBzcGVlZCBmcm9tIFNX SVRDSCBjbWQgcmV0dXJuIGRhdGEgZ3JvdXAgIzEuDQo+ICsgIC8vDQo+ICsgIFN0YXR1cyA9IFNk Q2FyZFN3aXRjaCAoUGFzc1RocnUsIDB4RiwgMHhGLCAweEYsIDB4RiwgRkFMU0UsIFN3aXRjaFJl c3ApOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgcmV0dXJuIFN0YXR1 czsNCj4gKyAgfQ0KPiArICAvLw0KPiArICAvLyBDYWxjdWxhdGUgc3VwcG9ydGVkIGJ1cyBzcGVl ZC9idXMgd2lkdGgvY2xvY2sgZnJlcXVlbmN5IGJ5IGhvc3QgYW5kIGRldmljZQ0KPiArICAvLyBj YXBhYmlsaXR5Lg0KPiArICAvLw0KPiArICBDbG9ja0ZyZXEgPSAwOw0KPiArICBpZiAoUzE4QSAm JiAoQ2FwYWJpbGl0eS0+U2RyMTA0ICE9IDApICYmICgoU3dpdGNoUmVzcFsxM10gJiBCSVQzKSAh PSAwKSkgew0KPiArICAgIENsb2NrRnJlcSA9IDIwODsNCj4gKyAgICBBY2Nlc3NNb2RlID0gMzsN Cj4gKyAgfSBlbHNlIGlmIChTMThBICYmIChDYXBhYmlsaXR5LT5TZHI1MCAhPSAwKSAmJg0KPiAr ICAgICAgICAgICAgICgoU3dpdGNoUmVzcFsxM10gJiBCSVQyKSAhPSAwKSkgew0KPiArICAgIENs b2NrRnJlcSA9IDEwMDsNCj4gKyAgICBBY2Nlc3NNb2RlID0gMjsNCj4gKyAgfSBlbHNlIGlmIChT MThBICYmIChDYXBhYmlsaXR5LT5EZHI1MCAhPSAwKSAmJg0KPiArICAgICAgICAgICAgICgoU3dp dGNoUmVzcFsxM10gJiBCSVQ0KSAhPSAwKSkgew0KPiArICAgIENsb2NrRnJlcSA9IDUwOw0KPiAr ICAgIEFjY2Vzc01vZGUgPSA0Ow0KPiArICB9IGVsc2UgaWYgKChTd2l0Y2hSZXNwWzEzXSAmIEJJ VDEpICE9IDApIHsNCj4gKyAgICBDbG9ja0ZyZXEgPSA1MDsNCj4gKyAgICBBY2Nlc3NNb2RlID0g MTsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICBDbG9ja0ZyZXEgPSAyNTsNCj4gKyAgICBBY2Nlc3NN b2RlID0gMDsNCj4gKyAgfQ0KPiArDQo+ICsgIFN0YXR1cyA9IFNkQ2FyZFN3aXRjaCAoUGFzc1Ro cnUsIEFjY2Vzc01vZGUsIDB4RiwgMHhGLCAweEYsIFRSVUUsIFN3aXRjaFJlc3ApOw0KPiArICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0K PiArDQo+ICsgIGlmICgoU3dpdGNoUmVzcFsxNl0gJiAweEYpICE9IEFjY2Vzc01vZGUpIHsNCj4g KyAgICBERUJVRyAoKA0KPiArICAgICAgREVCVUdfRVJST1IsDQo+ICsgICAgICAiU2RDYXJkU2V0 QnVzTW9kZTogU3dpdGNoIHRvIEFjY2Vzc01vZGUgJWQgQ2xvY2tGcmVxICVkIGZhaWxzISBUaGUg U3dpdGNoIHJlc3BvbnNlIGlzIDB4JTF4XG4iLA0KPiArICAgICAgQWNjZXNzTW9kZSwNCj4gKyAg ICAgIENsb2NrRnJlcSwNCj4gKyAgICAgIFN3aXRjaFJlc3BbMTZdICYgMHhGDQo+ICsgICAgICAp KTsNCj4gKyAgICByZXR1cm4gRUZJX0RFVklDRV9FUlJPUjsNCj4gKyAgfQ0KPiArDQo+ICsgIERF QlVHICgoDQo+ICsgICAgREVCVUdfSU5GTywNCj4gKyAgICAiU2RDYXJkU2V0QnVzTW9kZTogU3dp dGNoIHRvIEFjY2Vzc01vZGUgJWQgQ2xvY2tGcmVxICVkIFxuIiwNCj4gKyAgICBBY2Nlc3NNb2Rl LA0KPiArICAgIENsb2NrRnJlcQ0KPiArICAgICkpOw0KPiArDQo+ICsgIFN0YXR1cyA9IER3TW1j SGNDbG9ja1N1cHBseSAoRGV2QmFzZSwgQ2xvY2tGcmVxICogMTAwMCwgKkNhcGFiaWxpdHkpOw0K PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4g KyAgfQ0KPiArDQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9DQo+ICsNCj4gK0VGSV9TVEFUVVMN Cj4gK1NkQ2FyZElkZW50aWZpY2F0aW9uICgNCj4gKyAgSU4gRFdfTU1DX0hDX1BSSVZBVEVfREFU QSAgICAgICAgICAgICAqUHJpdmF0ZQ0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgICAg ICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAg ICAgICBEZXZCYXNlOw0KPiArICBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgKlBhc3NU aHJ1Ow0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgT2NyOw0KPiArICBVSU5U MTYgICAgICAgICAgICAgICAgICAgICAgICAgUmNhOw0KPiArICBCT09MRUFOICAgICAgICAgICAg ICAgICAgICAgICAgWHBjOw0KPiArICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgUzE4 cjsNCj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgIE1heEN1cnJlbnQ7DQo+ICsg IFNEX1NDUiAgICAgICAgICAgICAgICAgICAgICAgICBTY3I7DQo+ICsgIFNEX0NTRCAgICAgICAg ICAgICAgICAgICAgICAgICBDc2Q7DQo+ICsNCj4gKyAgRGV2QmFzZSAgICA9IFByaXZhdGUtPkRl dkJhc2U7DQo+ICsgIFBhc3NUaHJ1ID0gJlByaXZhdGUtPlBhc3NUaHJ1Ow0KPiArICAvLw0KPiAr ICAvLyAxLiBTZW5kIENtZDAgdG8gdGhlIGRldmljZQ0KPiArICAvLw0KPiArICBTdGF0dXMgPSBT ZENhcmRSZXNldCAoUGFzc1RocnUpOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ ICsgICAgREVCVUcgKCgNCj4gKyAgICAgIERFQlVHX0lORk8sDQo+ICsgICAgICAiU2RDYXJkSWRl bnRpZmljYXRpb246IEV4ZWN1dGluZyBDbWQwIGZhaWxzIHdpdGggJXJcbiIsDQo+ICsgICAgICBT dGF0dXMNCj4gKyAgICAgICkpOw0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKyAg TWljcm9TZWNvbmREZWxheSAoMTAwMDApOw0KPiArICAvLw0KPiArICAvLyAyLiBTZW5kIENtZDgg dG8gdGhlIGRldmljZQ0KPiArICAvLw0KPiArICBTdGF0dXMgPSBTZENhcmRWb2x0YWdlQ2hlY2sg KFBhc3NUaHJ1LCAweDEsIDB4RkYpOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ ICsgICAgREVCVUcgKCgNCj4gKyAgICAgIERFQlVHX0lORk8sDQo+ICsgICAgICAiU2RDYXJkSWRl bnRpZmljYXRpb246IEV4ZWN1dGluZyBDbWQ4IGZhaWxzIHdpdGggJXJcbiIsDQo+ICsgICAgICBT dGF0dXMNCj4gKyAgICAgICkpOw0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKyAg Ly8NCj4gKyAgLy8gMy4gU2VuZCBBY21kNDEgd2l0aCB2b2x0YWdlIHdpbmRvdyAwIHRvIHRoZSBk ZXZpY2UNCj4gKyAgLy8NCj4gKyAgU3RhdHVzID0gU2RDYXJkU2VuZE9wQ29uZCAoUGFzc1RocnUs IDAsIDAsIEZBTFNFLCBGQUxTRSwgRkFMU0UsICZPY3IpOw0KPiArICBpZiAoRUZJX0VSUk9SIChT dGF0dXMpKSB7DQo+ICsgICAgREVCVUcgKCgNCj4gKyAgICAgIERFQlVHX0lORk8sDQo+ICsgICAg ICAiU2RDYXJkSWRlbnRpZmljYXRpb246IEV4ZWN1dGluZyBTZENhcmRTZW5kT3BDb25kIGZhaWxz IHdpdGggJXJcbiIsDQo+ICsgICAgICBTdGF0dXMNCj4gKyAgICAgICkpOw0KPiArICAgIHJldHVy biBFRklfREVWSUNFX0VSUk9SOw0KPiArICB9DQo+ICsNCj4gKyAgaWYgKFByaXZhdGUtPkNhcGFi aWxpdHlbMF0uVm9sdGFnZTMzICE9IDApIHsNCj4gKyAgICAvLw0KPiArICAgIC8vIFN1cHBvcnQg My4zVg0KPiArICAgIC8vDQo+ICsgICAgTWF4Q3VycmVudCA9ICgoVUlOVDMyKVByaXZhdGUtPk1h eEN1cnJlbnRbMF0gJiAweEZGKSAqIDQ7DQo+ICsgICAgUzE4ciA9IEZBTFNFOw0KPiArICB9IGVs c2UgaWYgKFByaXZhdGUtPkNhcGFiaWxpdHlbMF0uVm9sdGFnZTMwICE9IDApIHsNCj4gKyAgICAv Lw0KPiArICAgIC8vIFN1cHBvcnQgMy4wVg0KPiArICAgIC8vDQo+ICsgICAgTWF4Q3VycmVudCA9 ICgoKFVJTlQzMilQcml2YXRlLT5NYXhDdXJyZW50WzBdID4+IDgpICYgMHhGRikgKiA0Ow0KPiAr ICAgIFMxOHIgPSBGQUxTRTsNCj4gKyAgfSBlbHNlIGlmIChQcml2YXRlLT5DYXBhYmlsaXR5WzBd LlZvbHRhZ2UxOCAhPSAwKSB7DQo+ICsgICAgLy8NCj4gKyAgICAvLyBTdXBwb3J0IDEuOFYNCj4g KyAgICAvLw0KPiArICAgIE1heEN1cnJlbnQgPSAoKChVSU5UMzIpUHJpdmF0ZS0+TWF4Q3VycmVu dFswXSA+PiAxNikgJiAweEZGKSAqIDQ7DQo+ICsgICAgUzE4ciA9IFRSVUU7DQo+ICsgIH0gZWxz ZSB7DQo+ICsgICAgQVNTRVJUIChGQUxTRSk7DQo+ICsgICAgcmV0dXJuIEVGSV9ERVZJQ0VfRVJS T1I7DQo+ICsgIH0NCj4gKw0KPiArICBpZiAoTWF4Q3VycmVudCA+PSAxNTApIHsNCj4gKyAgICBY cGMgPSBUUlVFOw0KPiArICB9IGVsc2Ugew0KPiArICAgIFhwYyA9IEZBTFNFOw0KPiArICB9DQo+ ICsNCj4gKyAgLy8NCj4gKyAgLy8gNC4gUmVwZWF0bHkgc2VuZCBBY21kNDEgd2l0aCBzdXBwbHkg dm9sdGFnZSB3aW5kb3cgdG8gdGhlIGRldmljZS4NCj4gKyAgLy8gICAgTm90ZSBoZXJlIHdlIG9u bHkgc3VwcG9ydCB0aGUgY2FyZHMgY29tcGxpZWQgd2l0aCBTRCBwaHlzaWNhbA0KPiArICAvLyAg ICBsYXllciBzaW1wbGlmaWVkIHNwZWMgdmVyc2lvbiAyLjAgYW5kIHZlcnNpb24gMy4wIGFuZCBh Ym92ZS4NCj4gKyAgLy8NCj4gKyAgZG8gew0KPiArICAgIFN0YXR1cyA9IFNkQ2FyZFNlbmRPcENv bmQgKFBhc3NUaHJ1LCAwLCBPY3IsIFMxOHIsIFhwYywgVFJVRSwgJk9jcik7DQo+ICsgICAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgICAgREVCVUcgKCgNCj4gKyAgICAgICAgREVC VUdfRVJST1IsDQo+ICsgICAgICAgICJTZENhcmRJZGVudGlmaWNhdGlvbjogU2RDYXJkU2VuZE9w Q29uZCBmYWlscyB3aXRoICVyIE9jciAleCwgUzE4ciAleCwgWHBjICV4XG4iLA0KPiArICAgICAg ICBTdGF0dXMsDQo+ICsgICAgICAgIE9jciwNCj4gKyAgICAgICAgUzE4ciwNCj4gKyAgICAgICAg WHBjDQo+ICsgICAgICAgICkpOw0KPiArICAgICAgcmV0dXJuIEVGSV9ERVZJQ0VfRVJST1I7DQo+ ICsgICAgfQ0KPiArICB9IHdoaWxlICgoT2NyICYgQklUMzEpID09IDApOw0KPiArDQo+ICsgIFN0 YXR1cyA9IFNkQ2FyZEFsbFNlbmRDaWQgKFBhc3NUaHJ1KTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KPiArICAgIERFQlVHICgoDQo+ICsgICAgICBERUJVR19FUlJPUiwNCj4gKyAg ICAgICJTZENhcmRJZGVudGlmaWNhdGlvbjogRXhlY3V0aW5nIFNkQ2FyZEFsbFNlbmRDaWQgZmFp bHMgd2l0aCAlclxuIiwNCj4gKyAgICAgIFN0YXR1cw0KPiArICAgICAgKSk7DQo+ICsgICAgcmV0 dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsgIFN0YXR1cyA9IFNkQ2FyZFNldFJjYSAoUGFz c1RocnUsICZSY2EpOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgREVC VUcgKCgNCj4gKyAgICAgIERFQlVHX0VSUk9SLA0KPiArICAgICAgIlNkQ2FyZElkZW50aWZpY2F0 aW9uOiBFeGVjdXRpbmcgU2RDYXJkU2V0UmNhIGZhaWxzIHdpdGggJXJcbiIsDQo+ICsgICAgICBT dGF0dXMNCj4gKyAgICAgICkpOw0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKw0K PiArICBTdGF0dXMgPSBTZENhcmRHZXRDc2QgKFBhc3NUaHJ1LCBSY2EsICZDc2QpOw0KPiArICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgREVCVUcgKCgNCj4gKyAgICAgIERFQlVH X0VSUk9SLA0KPiArICAgICAgIlNkQ2FyZElkZW50aWZpY2F0aW9uOiBFeGVjdXRpbmcgU2RDYXJk R2V0Q3NkIGZhaWxzIHdpdGggJXJcbiIsDQo+ICsgICAgICBTdGF0dXMNCj4gKyAgICAgICkpOw0K PiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKw0KPiArICBTdGF0dXMgPSBTZENhcmRT ZWxlY3QgKFBhc3NUaHJ1LCBSY2EpOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ ICsgICAgREVCVUcgKCgNCj4gKyAgICAgIERFQlVHX0VSUk9SLA0KPiArICAgICAgIlNkQ2FyZElk ZW50aWZpY2F0aW9uOiBTZWxlY3RpbmcgY2FyZCBmYWlscyB3aXRoICVyXG4iLA0KPiArICAgICAg U3RhdHVzDQo+ICsgICAgICApKTsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsN Cj4gKyAgU3RhdHVzID0gU2RDYXJkR2V0U2NyIChQYXNzVGhydSwgUmNhLCAmU2NyKTsNCj4gKyAg aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIERFQlVHICgoDQo+ICsgICAgICBERUJV R19FUlJPUiwNCj4gKyAgICAgICJTZENhcmRJZGVudGlmaWNhdGlvbjogRXhlY3V0aW5nIFNkQ2Fy ZEdldFNjciBmYWlscyB3aXRoICVyXG4iLA0KPiArICAgICAgU3RhdHVzDQo+ICsgICAgICApKTsN Cj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gRW50 ZXIgRGF0YSBUcmFuZmVyIE1vZGUuDQo+ICsgIC8vDQo+ICsgIERFQlVHICgoREVCVUdfSU5GTywg IlNkQ2FyZElkZW50aWZpY2F0aW9uOiBGb3VuZCBhIFNEIGRldmljZVxuIikpOw0KPiArICBQcml2 YXRlLT5TbG90WzBdLkNhcmRUeXBlID0gU2RDYXJkVHlwZTsNCj4gKw0KPiArICBTdGF0dXMgPSBT ZENhcmRTZXRCdXNNb2RlIChEZXZCYXNlLCBQYXNzVGhydSwgUmNhLCBTMThyLCBTY3IuU2RCdXNX aWR0aHMpOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgcmV0dXJuIFN0 YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsgIFByaXZhdGUtPlNsb3RbMF0uSW5pdGlhbGl6ZWQgPSBU UlVFOw0KPiArDQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9DQo+IC0tDQo+IDIuMTIuMw0KDQo=